From b46da7b15c06dd348763af9426a156563c41941c Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?George=20Kazami=20=5B=E4=B9=94=E6=B2=BB=C2=B7=E9=A2=A8?= =?UTF-8?q?=E8=A6=8B=5D?= Date: Sun, 19 Feb 2023 11:10:41 +0000 Subject: [PATCH 01/41] chore: remove dev env on azure static web apps. --- .github/workflows/dev-azure-staticwebapp.yml | 118 ------------------- 1 file changed, 118 deletions(-) delete mode 100644 .github/workflows/dev-azure-staticwebapp.yml diff --git a/.github/workflows/dev-azure-staticwebapp.yml b/.github/workflows/dev-azure-staticwebapp.yml deleted file mode 100644 index f0e3a5c..0000000 --- a/.github/workflows/dev-azure-staticwebapp.yml +++ /dev/null @@ -1,118 +0,0 @@ -# This workflow will build and push a web application to an Azure Static Web App when you change your code. -# -# This workflow assumes you have already created the target Azure Static Web App. -# For instructions see https://docs.microsoft.com/azure/static-web-apps/get-started-portal?tabs=vanilla-javascript -# -# To configure this workflow: -# -# 1. Set up a secret in your repository named AZURE_STATIC_WEB_APPS_API_TOKEN with the value of your Static Web Apps deployment token. -# For instructions on obtaining the deployment token see: https://docs.microsoft.com/azure/static-web-apps/deployment-token-management -# -# 3. Change the values for the APP_LOCATION, API_LOCATION and APP_ARTIFACT_LOCATION, AZURE_STATIC_WEB_APPS_API_TOKEN environment variables (below). -# For instructions on setting up the appropriate configuration values go to https://docs.microsoft.com/azure/static-web-apps/front-end-frameworks -name: Deploy DEV EOEFANS WEB to Azure Static Web Apps - -on: - push: - branches: [ "main" ] -# pull_request: -# types: [synchronize, closed] -# branches: [ "main" ] - -# Environment variables available to all jobs and steps in this workflow -env: - APP_LOCATION: "dist" # location of your client code - API_LOCATION: "" # location of your api source code - optional - APP_ARTIFACT_LOCATION: "" # location of client code build output - AZURE_STATIC_WEB_APPS_API_TOKEN: ${{ secrets.AZURE_STATIC_WEB_APPS_API_TOKEN_DEV }} # secret containing deployment token for your static web app - SKIP_APP_BUILD: true - -permissions: - contents: read - -jobs: - build_and_deploy_job: - permissions: - contents: read # for actions/checkout to fetch code - pull-requests: write # for Azure/static-web-apps-deploy to comment on PRs - if: github.event_name == 'push' || (github.event_name == 'pull_request' && github.event.action != 'closed') - runs-on: [ self-hosted, Linux ] - environment: - name: 'Development' -# url: ${{ steps.deploy-to-webapp.outputs.webapp-url }} - - strategy: - matrix: - node-version: [18.x] - # See supported Node.js release schedule at https://nodejs.org/en/about/releases/ - - name: Build and Deploy Job - steps: - - uses: actions/checkout@v3 - with: - submodules: true - - - - uses: actions/setup-node@v3 - name: Use Node.js ${{ matrix.node-version }} - with: - node-version: ${{ matrix.node-version }} - - - uses: pnpm/action-setup@v2 - name: Install pnpm - id: pnpm-install - with: - version: 7 - run_install: false - - - name: Get pnpm store directory - id: pnpm-cache - shell: bash - run: | - echo "STORE_PATH=$(pnpm store path)" >> $GITHUB_OUTPUT - - - uses: actions/cache@v3 - name: Setup pnpm cache - with: - path: ${{ steps.pnpm-cache.outputs.STORE_PATH }} - key: ${{ runner.os }}-pnpm-store-${{ hashFiles('**/pnpm-lock.yaml') }} - restore-keys: | - ${{ runner.os }}-pnpm-store- - - - name: Install dependencies - run: pnpm install - - - name: Use pnpm to build - run: pnpm run build - -# - name: post-build test -# run: pnpm test - - - name: Deploy build artifacts to Azure - id: builddeploy - uses: Azure/static-web-apps-deploy@v1 - with: - azure_static_web_apps_api_token: ${{ env.AZURE_STATIC_WEB_APPS_API_TOKEN }} # secret containing api token for app - repo_token: ${{ secrets.GITHUB_TOKEN }} # Used for Github integrations (i.e. PR comments) - action: "upload" - ###### Repository/Build Configurations - These values can be configured to match you app requirements. ###### - # For more information regarding Static Web App workflow configurations, please visit: https://aka.ms/swaworkflowconfig - app_location: ${{ env.APP_LOCATION }} - api_location: ${{ env.API_LOCATION }} - app_artifact_location: ${{ env.APP_ARTIFACT_LOCATION }} - skip_app_build: ${{ env.SKIP_APP_BUILD }} #comment this out to use azure oryx build - ###### End of Repository/Build Configurations ###### - - close_pull_request_job: - permissions: - contents: none - if: github.event_name == 'pull_request' && github.event.action == 'closed' - runs-on: [ self-hosted, Linux ] - name: Close Pull Request Job - steps: - - name: Close Pull Request - id: closepullrequest - uses: Azure/static-web-apps-deploy@v1 - with: - azure_static_web_apps_api_token: ${{ env.AZURE_STATIC_WEB_APPS_API_TOKEN }} # secret containing api token for app - action: "close" From 1e6785d9640581d9d8f549fdddf95e332a626cb0 Mon Sep 17 00:00:00 2001 From: master1lan <278457198@qq.com> Date: Wed, 22 Feb 2023 10:57:02 +0800 Subject: [PATCH 02/41] =?UTF-8?q?:lipstick:=20style(custom):=20=E6=B7=BB?= =?UTF-8?q?=E5=8A=A0tailwind=20css?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 后续样式将采用tailwind css编写 --- package.json | 3 + pnpm-lock.yaml | 257 ++++++++++++++++++++++++++++++++++++++++++++ postcss.config.cjs | 6 ++ src/index.less | 4 + tailwind.config.cjs | 8 ++ 5 files changed, 278 insertions(+) create mode 100644 postcss.config.cjs create mode 100644 tailwind.config.cjs diff --git a/package.json b/package.json index 1c405f3..18736da 100644 --- a/package.json +++ b/package.json @@ -59,6 +59,7 @@ "@types/react-lazy-load-image-component": "^1.5.2", "@vitejs/plugin-legacy": "^4.0.1", "@vitejs/plugin-react-swc": "^3.1.0", + "autoprefixer": "^10.4.13", "commitizen": "^4.3.0", "commitlint": "^17.4.3", "commitlint-config-gitmoji": "^2.3.1", @@ -67,8 +68,10 @@ "cz-customizable": "^7.0.0", "husky": "^8.0.3", "less": "^4.1.3", + "postcss": "^8.4.21", "rollup-plugin-visualizer": "^5.9.0", "standard-version": "^9.5.0", + "tailwindcss": "^3.2.7", "terser": "^5.16.3", "typescript": "^4.9.5", "vite": "4.1.1", diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 268ece3..088eced 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -22,6 +22,7 @@ specifiers: '@types/react-lazy-load-image-component': ^1.5.2 '@vitejs/plugin-legacy': ^4.0.1 '@vitejs/plugin-react-swc': ^3.1.0 + autoprefixer: ^10.4.13 axios: ^1.3.3 commitizen: ^4.3.0 commitlint: ^17.4.3 @@ -39,6 +40,7 @@ specifiers: material-ui-popup-state: ^5.0.4 nanoid: ^4.0.1 normalize.css: ^8.0.1 + postcss: ^8.4.21 react: ^18.2.0 react-dom: ^18.2.0 react-flip-toolkit: ^7.0.17 @@ -49,6 +51,7 @@ specifiers: react-use: ^17.4.0 rollup-plugin-visualizer: ^5.9.0 standard-version: ^9.5.0 + tailwindcss: ^3.2.7 terser: ^5.16.3 typescript: ^4.9.5 vite: 4.1.1 @@ -97,6 +100,7 @@ devDependencies: '@types/react-lazy-load-image-component': 1.5.2 '@vitejs/plugin-legacy': 4.0.1_terser@5.16.4+vite@4.1.1 '@vitejs/plugin-react-swc': 3.2.0_vite@4.1.1 + autoprefixer: 10.4.13_postcss@8.4.21 commitizen: 4.3.0 commitlint: 17.4.4 commitlint-config-gitmoji: 2.3.1 @@ -105,8 +109,10 @@ devDependencies: cz-customizable: 7.0.0 husky: 8.0.3 less: 4.1.3 + postcss: 8.4.21 rollup-plugin-visualizer: 5.9.0 standard-version: 9.5.0 + tailwindcss: 3.2.7_postcss@8.4.21 terser: 5.16.4 typescript: 4.9.5 vite: 4.1.1_ve7l6t5koctut52smtaue47xhi @@ -2585,11 +2591,30 @@ packages: through: 2.3.8 dev: true + /acorn-node/1.8.2: + resolution: {integrity: sha512-8mt+fslDufLYntIoPAaIMUe/lrbrehIiwmR3t2k9LljIzoigEPF27eLk2hy8zSGzmR/ogr7zbRKINMo1u0yh5A==} + dependencies: + acorn: 7.4.1 + acorn-walk: 7.2.0 + xtend: 4.0.2 + dev: true + + /acorn-walk/7.2.0: + resolution: {integrity: sha512-OPdCF6GsMIP+Az+aWfAAOEt2/+iVDKE7oy6lJ098aoe59oAmK76qV6Gw60SbZ8jHuG2wH058GF4pLFbYamYrVA==} + engines: {node: '>=0.4.0'} + dev: true + /acorn-walk/8.2.0: resolution: {integrity: sha512-k+iyHEuPgSw6SbuDpGQM+06HQUa04DZ3o+F6CSzXMvvI5KMvnaEqXe+YVe555R9nn6GPt404fos4wcgpw12SDA==} engines: {node: '>=0.4.0'} dev: true + /acorn/7.4.1: + resolution: {integrity: sha512-nQyp0o1/mNdbTO1PO6kHkwSrmgZ0MT/jCCpNiwbUjGoRN4dlBhqJtoQuCnEOKzgTVwg0ZWiCoQy6SxMebQVh8A==} + engines: {node: '>=0.4.0'} + hasBin: true + dev: true + /acorn/8.8.2: resolution: {integrity: sha512-xjIYgE8HBrkpd/sJqOGNspf8uHG+NOHGOw6a/Urj8taM2EXfdNAH2oFcPeIFfsv3+kz/mJrS5VuMqbNLjCa2vw==} engines: {node: '>=0.4.0'} @@ -2658,10 +2683,22 @@ packages: color-convert: 2.0.1 dev: true + /anymatch/3.1.3: + resolution: {integrity: sha512-KMReFUr0B4t+D+OBkjR3KYqvocp2XaSzO55UcB6mgQMd3KbcE+mWTyvVV7D/zsdEbNnV6acZUutkiHQXvTr1Rw==} + engines: {node: '>= 8'} + dependencies: + normalize-path: 3.0.0 + picomatch: 2.3.1 + dev: true + /arg/4.1.3: resolution: {integrity: sha512-58S9QDqG0Xx27YwPSt9fJxivjYl432YCwfDMfZ+71RAqUrZef7LrKQZ3LHLOwCS4FLNBplP533Zx895SeOCHvA==} dev: true + /arg/5.0.2: + resolution: {integrity: sha512-PYjyFOLKQ9y57JvQ6QLo8dAgNqswh8M1RMJYdQduT6xbWSgK36P/Z/v+p888pM69jMMfS8Xd8F6I1kQ/I9HUGg==} + dev: true + /argparse/2.0.1: resolution: {integrity: sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==} dev: true @@ -2688,6 +2725,22 @@ packages: engines: {node: '>= 4.0.0'} dev: true + /autoprefixer/10.4.13_postcss@8.4.21: + resolution: {integrity: sha512-49vKpMqcZYsJjwotvt4+h/BCjJVnhGwcLpDt5xkcaOG3eLrG/HUYLagrihYsQ+qrIBgIzX1Rw7a6L8I/ZA1Atg==} + engines: {node: ^10 || ^12 || >=14} + hasBin: true + peerDependencies: + postcss: ^8.1.0 + dependencies: + browserslist: 4.21.5 + caniuse-lite: 1.0.30001456 + fraction.js: 4.2.0 + normalize-range: 0.1.2 + picocolors: 1.0.0 + postcss: 8.4.21 + postcss-value-parser: 4.2.0 + dev: true + /axios/1.3.3: resolution: {integrity: sha512-eYq77dYIFS77AQlhzEL937yUBSepBfPIe8FcgEDN35vMNZKMrs81pgnyrQpwfy4NF4b4XWX1Zgx7yX+25w8QJA==} dependencies: @@ -2755,6 +2808,11 @@ packages: resolution: {integrity: sha512-pHm4LsMJ6lzgNGVfZHjMoO8sdoRhOzOH4MLmY65Jg70bpxCKu5iOHNJyfF6OyvYw7t8Fpf35RuzUyqnQsj8Vig==} dev: false + /binary-extensions/2.2.0: + resolution: {integrity: sha512-jDctJ/IVQbZoJykoeHbhXpOlNBqGNcwXJKJog42E5HDPUwQTSdjCHdihjj0DlnheQ7blbT6dHOafNAiS8ooQKA==} + engines: {node: '>=8'} + dev: true + /bl/4.1.0: resolution: {integrity: sha512-1W07cM9gS6DcLperZfFSj+bWLtaPGSOHWhPiGzXmvVJbRLdG82sH/Kn8EtW1VqWVA54AKf2h5k5BbnIbwF3h6w==} dependencies: @@ -2825,6 +2883,11 @@ packages: tslib: 2.5.0 dev: true + /camelcase-css/2.0.1: + resolution: {integrity: sha512-QOSvevhslijgYwRx6Rv7zKdMF8lbRmx+uQGx2+vDc+KI/eBnsy9kit5aj23AgGu3pa4t9AgwbnXWqS+iOY+2aA==} + engines: {node: '>= 6'} + dev: true + /camelcase-keys/6.2.2: resolution: {integrity: sha512-YrwaA0vEKazPBkn0ipTiMpSajYDSe+KjQfrjhcBMxJt/znbvlHd8Pw/Vamaz5EB4Wfhs3SUR3Z9mwRu/P3s3Yg==} engines: {node: '>=8'} @@ -2863,6 +2926,21 @@ packages: resolution: {integrity: sha512-mT8iDcrh03qDGRRmoA2hmBJnxpllMR+0/0qlzjqZES6NdiWDcZkCNAk4rPFZ9Q85r27unkiNNg8ZOiwZXBHwcA==} dev: true + /chokidar/3.5.3: + resolution: {integrity: sha512-Dr3sfKRP6oTcjf2JmUmFJfeVMvXBdegxB0iVQ5eb2V10uFJUCAS8OByZdVAyVb8xXNz3GjjTgj9kLWsZTqE6kw==} + engines: {node: '>= 8.10.0'} + dependencies: + anymatch: 3.1.3 + braces: 3.0.2 + glob-parent: 5.1.2 + is-binary-path: 2.1.0 + is-glob: 4.0.3 + normalize-path: 3.0.0 + readdirp: 3.6.0 + optionalDependencies: + fsevents: 2.3.2 + dev: true + /classnames/2.3.2: resolution: {integrity: sha512-CSbhY4cFEJRe6/GQzIk5qXZ4Jeg5pcsP7b5peFSDpffpe1cqjASH/n9UTjBwOp6XpMSTwQ8Za2K5V02ueA7Tmw==} dev: false @@ -3335,6 +3413,12 @@ packages: engines: {node: '>= 6'} dev: true + /cssesc/3.0.0: + resolution: {integrity: sha512-/Tb/JcjK111nNScGob5MNtsntNM1aCNUDipB/TkwZFhyDrrE47SOx/18wF2bbjgc3ZzCSKW1T5nt5EbFoAz/Vg==} + engines: {node: '>=4'} + hasBin: true + dev: true + /csstype/3.1.1: resolution: {integrity: sha512-DJR/VvkAvSZW9bTouZue2sSxDwdTN92uHjqeKVm+0dAqdfNykRzQ95tay8aXMBAAPpUiq4Qcug2L7neoRh2Egw==} @@ -3432,6 +3516,10 @@ packages: engines: {node: '>=8'} dev: true + /defined/1.0.1: + resolution: {integrity: sha512-hsBd2qSVCRE+5PmNdHt1uzyrFu5d3RwmFDKzyNZMFq/EwDNJF7Ee5+D5oEKF0hU6LhtoUF1macFvOe4AskQC1Q==} + dev: true + /delayed-stream/1.0.0: resolution: {integrity: sha512-ZySD7Nf91aLB0RxL4KGrKHBXl7Eds1DAmEdcoVawXnLD7SDhpNgtuII2aAkg7a7QS41jxPSZ17p4VdGnMHk3MQ==} engines: {node: '>=0.4.0'} @@ -3452,11 +3540,29 @@ packages: engines: {node: '>=8'} dev: true + /detective/5.2.1: + resolution: {integrity: sha512-v9XE1zRnz1wRtgurGu0Bs8uHKFSTdteYZNbIPFVhUZ39L/S79ppMpdmVOZAnoz1jfEFodc48n6MX483Xo3t1yw==} + engines: {node: '>=0.8.0'} + hasBin: true + dependencies: + acorn-node: 1.8.2 + defined: 1.0.1 + minimist: 1.2.8 + dev: true + + /didyoumean/1.2.2: + resolution: {integrity: sha512-gxtyfqMg7GKyhQmb056K7M3xszy/myH8w+B4RT+QXBQsvAOdc3XymqDDPHx1BgPgsdAA5SIifona89YtRATDzw==} + dev: true + /diff/4.0.2: resolution: {integrity: sha512-58lmxKSA4BNyLz+HHMUzlOEpg09FV+ev6ZMe3vJihgdxzgcwZ8VoEEPmALCZG9LmqfVoNMMKpttIYTVG6uDY7A==} engines: {node: '>=0.3.1'} dev: true + /dlv/1.1.3: + resolution: {integrity: sha512-+HlytyjlPKnIG8XuRG8WvmBP8xs8P71y+SKKS6ZXWoEgLuePxtDoUEiH7WkdePWrQ5JBpE6aoVqfZfJUQkjXwA==} + dev: true + /dom-helpers/5.2.1: resolution: {integrity: sha512-nRCa7CK3VTrM2NmGkIy4cbK7IZlgBE/PYMn55rrXefr5xXDP0LdtfPnblFDoVdcAfslJ7or6iqAUnx0CCGIWQA==} dependencies: @@ -3797,6 +3903,10 @@ packages: mime-types: 2.1.35 dev: false + /fraction.js/4.2.0: + resolution: {integrity: sha512-MhLuK+2gUcnZe8ZHlaaINnQLl0xRIGRfcGk2yl8xoQAfHrSsL3rYu6FCmBdkdbhc9EPlwyGHewaRsvwRMJtAlA==} + dev: true + /fs-extra/10.1.0: resolution: {integrity: sha512-oRXApq54ETRj4eMiFzGnHWGy+zo5raudjuxN0b8H7s/RU2oW0Wvsx9O0ACRN/kRq9E8Vu/ReskGB5o3ji+FzHQ==} engines: {node: '>=12'} @@ -3912,6 +4022,13 @@ packages: is-glob: 4.0.3 dev: true + /glob-parent/6.0.2: + resolution: {integrity: sha512-XxwI8EOhVQgWp6iDL+3b0r86f4d6AX6zSU55HfB4ydCEuXLXc5FcYeOu+nnGftS4TEju/11rt4KJPTMgbfmv4A==} + engines: {node: '>=10.13.0'} + dependencies: + is-glob: 4.0.3 + dev: true + /glob/7.2.3: resolution: {integrity: sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==} dependencies: @@ -4172,6 +4289,13 @@ packages: /is-arrayish/0.2.1: resolution: {integrity: sha512-zz06S8t0ozoDXMG+ube26zeCTNXcKIPJZJi8hBrF4idCLms4CG9QtK7qBl1boi5ODzFpjswb5JPmHCbMpjaYzg==} + /is-binary-path/2.1.0: + resolution: {integrity: sha512-ZMERYes6pDydyuGidse7OsHxtbI7WVeUEozgR/g7rd0xUimYNlvZRE/K2MgZTjWy725IfelLeVcEM97mmtRGXw==} + engines: {node: '>=8'} + dependencies: + binary-extensions: 2.2.0 + dev: true + /is-core-module/2.11.0: resolution: {integrity: sha512-RRjxlvLDkD1YJwDbroBHMb+cukurkDWNyHx7D3oNB5x9rb5ogcksMC5wHCadcXoo67gVr/+3GFySh3134zi6rw==} dependencies: @@ -4371,6 +4495,11 @@ packages: - supports-color dev: true + /lilconfig/2.0.6: + resolution: {integrity: sha512-9JROoBW7pobfsx+Sq2JsASvCo6Pfo6WWoUW79HuB1BCoBXD4PLWJPqDF6fNj67pqBYTbAHkE57M1kS/+L1neOg==} + engines: {node: '>=10'} + dev: true + /lines-and-columns/1.2.4: resolution: {integrity: sha512-7ylylesZQ/PV29jhEDl3Ufjo6ZX7gCqJr5F7PKrqc93v7fzSymt1BpwEU8nAUXs8qzzvqhbjhK5QZg6Mt/HkBg==} @@ -4815,6 +4944,16 @@ packages: validate-npm-package-license: 3.0.4 dev: true + /normalize-path/3.0.0: + resolution: {integrity: sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==} + engines: {node: '>=0.10.0'} + dev: true + + /normalize-range/0.1.2: + resolution: {integrity: sha512-bdok/XvKII3nUpklnV6P2hxtMNrCboOjAcyBuQnWEhO665FwrSNRxU+AqpsyvO6LgGYPspN+lu5CLtw4jPRKNA==} + engines: {node: '>=0.10.0'} + dev: true + /normalize.css/8.0.1: resolution: {integrity: sha512-qizSNPO93t1YUuUhP22btGOo3chcvDFqFaj2TRybP0DMxkHOCTYwp3n34fel4a31ORXy4m1Xq0Gyqpb5m33qIg==} dev: false @@ -4837,6 +4976,11 @@ packages: engines: {node: '>=0.10.0'} dev: false + /object-hash/3.0.0: + resolution: {integrity: sha512-RSn9F68PjH9HqtltsSnqYC1XXoWe9Bju5+213R98cNGttag9q9yAOTzdbsqvIa7aNm5WffBZFpWYr2aWrklWAw==} + engines: {node: '>= 6'} + dev: true + /once/1.4.0: resolution: {integrity: sha512-lNaJgI+2Q5URQBkccEKHTQOPaXdUxnZZElQTZY0MFUAuaEqe1E+Nyvgdz/aIyNi6Z9MzO5dv1H8n58/GELp3+w==} dependencies: @@ -5060,6 +5204,67 @@ packages: dev: true optional: true + /postcss-import/14.1.0_postcss@8.4.21: + resolution: {integrity: sha512-flwI+Vgm4SElObFVPpTIT7SU7R3qk2L7PyduMcokiaVKuWv9d/U+Gm/QAd8NDLuykTWTkcrjOeD2Pp1rMeBTGw==} + engines: {node: '>=10.0.0'} + peerDependencies: + postcss: ^8.0.0 + dependencies: + postcss: 8.4.21 + postcss-value-parser: 4.2.0 + read-cache: 1.0.0 + resolve: 1.22.1 + dev: true + + /postcss-js/4.0.1_postcss@8.4.21: + resolution: {integrity: sha512-dDLF8pEO191hJMtlHFPRa8xsizHaM82MLfNkUHdUtVEV3tgTp5oj+8qbEqYM57SLfc74KSbw//4SeJma2LRVIw==} + engines: {node: ^12 || ^14 || >= 16} + peerDependencies: + postcss: ^8.4.21 + dependencies: + camelcase-css: 2.0.1 + postcss: 8.4.21 + dev: true + + /postcss-load-config/3.1.4_postcss@8.4.21: + resolution: {integrity: sha512-6DiM4E7v4coTE4uzA8U//WhtPwyhiim3eyjEMFCnUpzbrkK9wJHgKDT2mR+HbtSrd/NubVaYTOpSpjUl8NQeRg==} + engines: {node: '>= 10'} + peerDependencies: + postcss: '>=8.0.9' + ts-node: '>=9.0.0' + peerDependenciesMeta: + postcss: + optional: true + ts-node: + optional: true + dependencies: + lilconfig: 2.0.6 + postcss: 8.4.21 + yaml: 1.10.2 + dev: true + + /postcss-nested/6.0.0_postcss@8.4.21: + resolution: {integrity: sha512-0DkamqrPcmkBDsLn+vQDIrtkSbNkv5AD/M322ySo9kqFkCIYklym2xEmWkwo+Y3/qZo34tzEPNUw4y7yMCdv5w==} + engines: {node: '>=12.0'} + peerDependencies: + postcss: ^8.2.14 + dependencies: + postcss: 8.4.21 + postcss-selector-parser: 6.0.11 + dev: true + + /postcss-selector-parser/6.0.11: + resolution: {integrity: sha512-zbARubNdogI9j7WY4nQJBiNqQf3sLS3wCP4WfOidu+p28LofJqDH1tcXypGrcmMHhDk2t9wGhCsYe/+szLTy1g==} + engines: {node: '>=4'} + dependencies: + cssesc: 3.0.0 + util-deprecate: 1.0.2 + dev: true + + /postcss-value-parser/4.2.0: + resolution: {integrity: sha512-1NNCs6uurfkVbeXG4S8JFT9t19m45ICnif8zWLd5oPSZ50QnwMfK+H3jv408d4jw/7Bttv5axS5IiHoLaVNHeQ==} + dev: true + /postcss/8.4.21: resolution: {integrity: sha512-tP7u/Sn/dVxK2NnruI4H9BG+x+Wxz6oeZ1cJ8P6G/PZY0IKk4k/63TDsQf2kQq3+qoJeLm2kIBUNlZe3zgb4Zg==} engines: {node: ^10 || ^12 || >=14} @@ -5113,6 +5318,11 @@ packages: engines: {node: '>=8'} dev: true + /quick-lru/5.1.1: + resolution: {integrity: sha512-WuyALRjWPDGtt/wzJiadO5AXY+8hZ80hVpe6MyivgraREW751X3SbhRvG3eLKOYN+8VEvqLcf3wdnt44Z4S4SA==} + engines: {node: '>=10'} + dev: true + /raf-schd/4.0.3: resolution: {integrity: sha512-tQkJl2GRWh83ui2DiPTJz9wEiMN20syf+5oKfB03yYP7ioZcJwsIK8FjrtLwH1m7C7e+Tt2yYBlrOpdT+dyeIQ==} dev: false @@ -5277,6 +5487,12 @@ packages: loose-envify: 1.4.0 dev: false + /read-cache/1.0.0: + resolution: {integrity: sha512-Owdv/Ft7IjOgm/i0xvNDZ1LrRANRfew4b2prF3OWMQLxLfu3bS8FVhCsrSCMK4lR56Y9ya+AThoTpDCTxCmpRA==} + dependencies: + pify: 2.3.0 + dev: true + /read-pkg-up/3.0.0: resolution: {integrity: sha512-YFzFrVvpC6frF1sz8psoHDBGF7fLPc+llq/8NB43oagqWkx8ar5zYtsTORtOjw9W2RHLpWP+zTWwBvf1bCmcSw==} engines: {node: '>=4'} @@ -5334,6 +5550,13 @@ packages: util-deprecate: 1.0.2 dev: true + /readdirp/3.6.0: + resolution: {integrity: sha512-hOS089on8RduqdbhvQ5Z37A0ESjsqz6qnRcffsMU3495FuTdqSm+7bhJ29JvIOsBDEEnan5DPu9t3To9VRlMzA==} + engines: {node: '>=8.10.0'} + dependencies: + picomatch: 2.3.1 + dev: true + /redent/3.0.0: resolution: {integrity: sha512-6tDA8g98We0zd0GvVeMT9arEOnTw9qM03L9cJXaCjrip1OO764RDBLBfrB4cwzNGDj5OA5ioymC9GkizgWJDUg==} engines: {node: '>=8'} @@ -5826,6 +6049,40 @@ packages: resolution: {integrity: sha512-P3cgh2bpaPvAO2NE3uRp/n6hmk4xPX4DQf+UzTlCAycssKdqhp6hjw+ENWe+aUS7TogKRFtptMosTSFeC6R55g==} dev: true + /tailwindcss/3.2.7_postcss@8.4.21: + resolution: {integrity: sha512-B6DLqJzc21x7wntlH/GsZwEXTBttVSl1FtCzC8WP4oBc/NKef7kaax5jeihkkCEWc831/5NDJ9gRNDK6NEioQQ==} + engines: {node: '>=12.13.0'} + hasBin: true + peerDependencies: + postcss: ^8.0.9 + dependencies: + arg: 5.0.2 + chokidar: 3.5.3 + color-name: 1.1.4 + detective: 5.2.1 + didyoumean: 1.2.2 + dlv: 1.1.3 + fast-glob: 3.2.12 + glob-parent: 6.0.2 + is-glob: 4.0.3 + lilconfig: 2.0.6 + micromatch: 4.0.5 + normalize-path: 3.0.0 + object-hash: 3.0.0 + picocolors: 1.0.0 + postcss: 8.4.21 + postcss-import: 14.1.0_postcss@8.4.21 + postcss-js: 4.0.1_postcss@8.4.21 + postcss-load-config: 3.1.4_postcss@8.4.21 + postcss-nested: 6.0.0_postcss@8.4.21 + postcss-selector-parser: 6.0.11 + postcss-value-parser: 4.2.0 + quick-lru: 5.1.1 + resolve: 1.22.1 + transitivePeerDependencies: + - ts-node + dev: true + /temp/0.9.4: resolution: {integrity: sha512-yYrrsWnrXMcdsnu/7YMYAofM1ktpL5By7vZhf15CrXijWWrEYZks5AXBudalfSWJLlnen/QUJUB5aoB0kqZUGA==} engines: {node: '>=6.0.0'} diff --git a/postcss.config.cjs b/postcss.config.cjs new file mode 100644 index 0000000..33ad091 --- /dev/null +++ b/postcss.config.cjs @@ -0,0 +1,6 @@ +module.exports = { + plugins: { + tailwindcss: {}, + autoprefixer: {}, + }, +} diff --git a/src/index.less b/src/index.less index d9516ef..45e411b 100644 --- a/src/index.less +++ b/src/index.less @@ -1,3 +1,7 @@ +@tailwind base; +@tailwind components; +@tailwind utilities; + * { box-sizing: border-box; padding: 0; diff --git a/tailwind.config.cjs b/tailwind.config.cjs new file mode 100644 index 0000000..ecf62b5 --- /dev/null +++ b/tailwind.config.cjs @@ -0,0 +1,8 @@ +/** @type {import('tailwindcss').Config} */ +module.exports = { + content: ["./index.html", "./src/**/*.{js,ts,jsx,tsx}"], + theme: { + extend: {}, + }, + plugins: [], +}; From 40dce2c443360de307b16ca280e8636b4e0d6438 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <9+dependabot[bot]@users.noreply.vlink.dev> Date: Fri, 24 Feb 2023 01:10:22 +0000 Subject: [PATCH 03/41] Bump vite from 4.1.1 to 4.1.4 Bumps [vite](https://github.com/vitejs/vite/tree/HEAD/packages/vite) from 4.1.1 to 4.1.4. - [Release notes](https://github.com/vitejs/vite/releases) - [Changelog](https://github.com/vitejs/vite/blob/main/packages/vite/CHANGELOG.md) - [Commits](https://github.com/vitejs/vite/commits/v4.1.4/packages/vite) --- updated-dependencies: - dependency-name: vite dependency-type: direct:development update-type: version-update:semver-patch ... Signed-off-by: dependabot[bot] --- package.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/package.json b/package.json index 18736da..2db768b 100644 --- a/package.json +++ b/package.json @@ -74,7 +74,7 @@ "tailwindcss": "^3.2.7", "terser": "^5.16.3", "typescript": "^4.9.5", - "vite": "4.1.1", + "vite": "4.1.4", "vite-plugin-compression": "^0.5.1", "vite-plugin-html": "^3.2.0", "vite-plugin-sentry": "^1.1.7" From 1df097473f032110d36f1b02ca012be3dd3c062f Mon Sep 17 00:00:00 2001 From: master1lan <278457198@qq.com> Date: Fri, 24 Feb 2023 10:56:38 +0800 Subject: [PATCH 04/41] =?UTF-8?q?:technologist:=20chore(custom):=20?= =?UTF-8?q?=E5=8D=87=E7=BA=A7=E4=BE=9D=E8=B5=96?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- pnpm-lock.yaml | 38 +++++++++++++++++++------------------- 1 file changed, 19 insertions(+), 19 deletions(-) diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 088eced..67377af 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -54,7 +54,7 @@ specifiers: tailwindcss: ^3.2.7 terser: ^5.16.3 typescript: ^4.9.5 - vite: 4.1.1 + vite: 4.1.4 vite-plugin-compression: ^0.5.1 vite-plugin-html: ^3.2.0 vite-plugin-sentry: ^1.1.7 @@ -98,8 +98,8 @@ devDependencies: '@types/react': 18.0.28 '@types/react-dom': 18.0.11 '@types/react-lazy-load-image-component': 1.5.2 - '@vitejs/plugin-legacy': 4.0.1_terser@5.16.4+vite@4.1.1 - '@vitejs/plugin-react-swc': 3.2.0_vite@4.1.1 + '@vitejs/plugin-legacy': 4.0.1_terser@5.16.4+vite@4.1.4 + '@vitejs/plugin-react-swc': 3.2.0_vite@4.1.4 autoprefixer: 10.4.13_postcss@8.4.21 commitizen: 4.3.0 commitlint: 17.4.4 @@ -115,10 +115,10 @@ devDependencies: tailwindcss: 3.2.7_postcss@8.4.21 terser: 5.16.4 typescript: 4.9.5 - vite: 4.1.1_ve7l6t5koctut52smtaue47xhi - vite-plugin-compression: 0.5.1_vite@4.1.1 - vite-plugin-html: 3.2.0_vite@4.1.1 - vite-plugin-sentry: 1.1.7_vite@4.1.1 + vite: 4.1.4_ve7l6t5koctut52smtaue47xhi + vite-plugin-compression: 0.5.1_vite@4.1.4 + vite-plugin-html: 3.2.0_vite@4.1.4 + vite-plugin-sentry: 1.1.7_vite@4.1.4 packages: @@ -2550,7 +2550,7 @@ packages: resolution: {integrity: sha512-EwmlvuaxPNej9+T4v5AuBPJa2x2UOJVdjCtDHgcDqitUeOtjnJKJ+apYjVcAoBEMjKW1VVFGZLUb5+qqa09XFA==} dev: false - /@vitejs/plugin-legacy/4.0.1_terser@5.16.4+vite@4.1.1: + /@vitejs/plugin-legacy/4.0.1_terser@5.16.4+vite@4.1.4: resolution: {integrity: sha512-/ZV63NagI1c9TB5E4ijGmycY//fNm/2L02nsnXXxACwYaF9W+/OyVlgIW24jYUIS+g0yQRtn+N5hzBc8RLNhGA==} engines: {node: ^14.18.0 || >=16.0.0} peerDependencies: @@ -2565,18 +2565,18 @@ packages: regenerator-runtime: 0.13.11 systemjs: 6.13.0 terser: 5.16.4 - vite: 4.1.1_ve7l6t5koctut52smtaue47xhi + vite: 4.1.4_ve7l6t5koctut52smtaue47xhi transitivePeerDependencies: - supports-color dev: true - /@vitejs/plugin-react-swc/3.2.0_vite@4.1.1: + /@vitejs/plugin-react-swc/3.2.0_vite@4.1.4: resolution: {integrity: sha512-IcBoXL/mcH7JdQr/nfDlDwTdIaH8Rg7LpfQDF4nAht+juHWIuv6WhpKPCSfY4+zztAaB07qdBoFz1XCZsgo3pQ==} peerDependencies: vite: ^4 dependencies: '@swc/core': 1.3.35 - vite: 4.1.1_ve7l6t5koctut52smtaue47xhi + vite: 4.1.4_ve7l6t5koctut52smtaue47xhi dev: true /@xobotyi/scrollbar-width/1.9.5: @@ -6318,7 +6318,7 @@ packages: spdx-expression-parse: 3.0.1 dev: true - /vite-plugin-compression/0.5.1_vite@4.1.1: + /vite-plugin-compression/0.5.1_vite@4.1.4: resolution: {integrity: sha512-5QJKBDc+gNYVqL/skgFAP81Yuzo9R+EAf19d+EtsMF/i8kFUpNi3J/H01QD3Oo8zBQn+NzoCIFkpPLynoOzaJg==} peerDependencies: vite: '>=2.0.0' @@ -6326,12 +6326,12 @@ packages: chalk: 4.1.2 debug: 4.3.4 fs-extra: 10.1.0 - vite: 4.1.1_ve7l6t5koctut52smtaue47xhi + vite: 4.1.4_ve7l6t5koctut52smtaue47xhi transitivePeerDependencies: - supports-color dev: true - /vite-plugin-html/3.2.0_vite@4.1.1: + /vite-plugin-html/3.2.0_vite@4.1.4: resolution: {integrity: sha512-2VLCeDiHmV/BqqNn5h2V+4280KRgQzCFN47cst3WiNK848klESPQnzuC3okH5XHtgwHH/6s1Ho/YV6yIO0pgoQ==} peerDependencies: vite: '>=2.0.0' @@ -6348,24 +6348,24 @@ packages: html-minifier-terser: 6.1.0 node-html-parser: 5.4.2 pathe: 0.2.0 - vite: 4.1.1_ve7l6t5koctut52smtaue47xhi + vite: 4.1.4_ve7l6t5koctut52smtaue47xhi dev: true - /vite-plugin-sentry/1.1.7_vite@4.1.1: + /vite-plugin-sentry/1.1.7_vite@4.1.4: resolution: {integrity: sha512-V5WlWKbgul3udItDmvZHEzUw0TE2cehKLfcdR/G98PQ2LvweWDafVk4nmJpj1I7q70eeXWNoqmVq5Esde8c7XA==} engines: {node: '>= 12'} peerDependencies: vite: ^2.6.0 || ^3.0.0 || ^4.0.0 dependencies: '@sentry/cli': 2.13.0 - vite: 4.1.1_ve7l6t5koctut52smtaue47xhi + vite: 4.1.4_ve7l6t5koctut52smtaue47xhi transitivePeerDependencies: - encoding - supports-color dev: true - /vite/4.1.1_ve7l6t5koctut52smtaue47xhi: - resolution: {integrity: sha512-LM9WWea8vsxhr782r9ntg+bhSFS06FJgCvvB0+8hf8UWtvaiDagKYWXndjfX6kGl74keHJUcpzrQliDXZlF5yg==} + /vite/4.1.4_ve7l6t5koctut52smtaue47xhi: + resolution: {integrity: sha512-3knk/HsbSTKEin43zHu7jTwYWv81f8kgAL99G5NWBcA1LKvtvcVAC4JjBH1arBunO9kQka+1oGbrMKOjk4ZrBg==} engines: {node: ^14.18.0 || >=16.0.0} hasBin: true peerDependencies: From 4a7c44912f4850a6f6af51ca826d2d1b7989f3e9 Mon Sep 17 00:00:00 2001 From: master1lan <278457198@qq.com> Date: Fri, 24 Feb 2023 13:56:35 +0800 Subject: [PATCH 05/41] =?UTF-8?q?:lipstick:=20style(custom):=20=E8=A7=86?= =?UTF-8?q?=E9=A2=91=E9=A1=B5=E5=86=85=E5=AE=B9=E5=8C=BA=E4=BF=AE=E6=94=B9?= =?UTF-8?q?=E6=A0=B7=E5=BC=8F?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/routers/video/hooks.tsx | 3 + src/routers/video/masonry.tsx | 153 ++++++++++++++++++++-------- src/routers/video/video.module.less | 42 ++++++-- 3 files changed, 149 insertions(+), 49 deletions(-) create mode 100644 src/routers/video/hooks.tsx diff --git a/src/routers/video/hooks.tsx b/src/routers/video/hooks.tsx new file mode 100644 index 0000000..682e282 --- /dev/null +++ b/src/routers/video/hooks.tsx @@ -0,0 +1,3 @@ +import { useAppSelector } from "@store/hooks"; +import { selectVideoLoadingState } from "@store/loading/index"; +export const useVideoLoading = () => useAppSelector(selectVideoLoadingState); diff --git a/src/routers/video/masonry.tsx b/src/routers/video/masonry.tsx index 5cf5f3f..6944d58 100644 --- a/src/routers/video/masonry.tsx +++ b/src/routers/video/masonry.tsx @@ -1,25 +1,27 @@ -import { useState, useEffect, FC, memo } from "react"; +import { useState, useEffect, FC, memo, ReactElement } from "react"; import { VideoRouterImageCardType, VideoRouterMasonryType } from "./videotype"; -import { Unstable_Grid2 as Grid } from "@mui/material"; +import { SxProps, Theme, Unstable_Grid2 as Grid } from "@mui/material"; import { VideoRouterImageCard } from "./item"; import { Skeleton } from "@mui/material"; import { nanoid } from "nanoid"; import styles from "./video.module.less"; import { fetchVideohandler, PickVideoRouterImageCardType } from "./tools"; -import { useAppSelector, useAppDispatch } from "@store/hooks"; -import { changeLoading, selectVideoLoadingState } from "@store/loading/index"; +import { useAppDispatch } from "@store/hooks"; +import { changeLoading } from "@store/loading/index"; +import { useVideoLoading } from "./hooks"; +import { useScreenSize } from "@components/proview/screenSize"; +type VideoListType = (VideoRouterImageCardType & { id: string })[]; /** * @description 该组件负责渲染视频图片的瀑布流 */ export default function VideoMasonry(props: VideoRouterMasonryType) { - const [lists, setLists] = useState< - (VideoRouterImageCardType & { id: string })[] - >([]); - const isLoading = useAppSelector(selectVideoLoadingState), - dispatch = useAppDispatch(), + const [lists, setLists] = useState([]); + const dispatch = useAppDispatch(), handerChangeLoading = (state: boolean) => dispatch(changeLoading({ stateName: "videoIsLoading", Tostate: state })); useEffect(() => { + setLists([]); + handerChangeLoading(true); // 在内部定义fetchHandler,保证拿到的是同步的 const fetchHandler = async (page: number = 1) => { const data = await fetchVideohandler(page, props); @@ -41,19 +43,84 @@ export default function VideoMasonry(props: VideoRouterMasonryType) { }), ]); }; - setLists([]); - handerChangeLoading(true); fetchHandler(1).then(() => handerChangeLoading(false)); }, [props]); return (
+ +
+ ); +} + +const VideoContent: FC<{ data: VideoListType }> = memo((props) => { + const { lg, md, sm } = useScreenSize(), + rightLen = (lg ? (md ? (sm ? 0 : 2) : 4) : 6) + 1; + const data = props.data, + loading = useVideoLoading(), + isEmpty = data.length < 1, + shouldNoShowHeroLine = data.length < rightLen + 1 + 10; + const heroItem = data.slice(0, 1), + rightItem = data.slice(1, rightLen), + resItems = shouldNoShowHeroLine ? data : data.slice(rightLen); + return ( + <> + + {loading ? ( + + ) : shouldNoShowHeroLine ? ( + <> + ) : ( + + )} + + {!sm && ( + + + {loading ? ( + Array.from({ length: rightLen - 1 }, (value, key) => ( + + + + )) + ) : shouldNoShowHeroLine ? ( + <> + ) : ( + rightItem.map((item) => ( + + )) + )} + + + )} + + - {lists.map((item) => ( - - ))} - {isLoading && } + {loading ? ( + Array.from({ length: 20 }, (value, key) => ( + + + + )) + ) : isEmpty ? ( + + ) : ( + resItems.map((item) => ) + )} - + ); -} +}); +const EmptyItem = () => ( +
暂无数据
+); + const MemoItems: FC = memo((props) => { return ( @@ -80,24 +157,18 @@ const MemoItems: FC = memo((props) => { ); }); -const LoadingSkeleton: FC<{ num: number }> = ({ num = 0 }) => { - return ( - <> - {...Array.from({ length: num }, (v, key) => ( - - - - -
- - -
-
- ))} - - ); -}; +const LoadingSkeleton = () => ( + <> + + + +
+ + +
+ +); diff --git a/src/routers/video/video.module.less b/src/routers/video/video.module.less index 670ea5d..c2418cc 100644 --- a/src/routers/video/video.module.less +++ b/src/routers/video/video.module.less @@ -13,13 +13,39 @@ } } -.container:empty { - display: flex; - justify-content: center; +.hero-content { + &>section:only-child { + &>a:first-child { + flex-grow: 1; + + img { + height: 100%; + } + + img+div { + padding: 16px; + + span { + font-size: 16px !important; + } + } + } + + &>div:last-child { + justify-content: flex-start; + + } - &::before { - margin-top: 50px; - content: "暂无数据"; - color: #c1c1c1; } -} \ No newline at end of file +} + +// .container:empty { +// display: flex; +// justify-content: center; + +// &::before { +// margin-top: 50px; +// content: "暂无数据"; +// color: #c1c1c1; +// } +// } \ No newline at end of file From f3b31d13bc79290b56880b018a480a5ec1fe5054 Mon Sep 17 00:00:00 2001 From: master1lan <278457198@qq.com> Date: Fri, 24 Feb 2023 23:02:38 +0800 Subject: [PATCH 06/41] =?UTF-8?q?:wheelchair:=20perf(custom):=20=E6=B7=BB?= =?UTF-8?q?=E5=8A=A0=E5=88=9D=E7=89=88=E9=87=8D=E6=9E=84=E9=A1=B5=E9=9D=A2?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 页面还未完全适配手机端 --- src/components/proview/type.tsx | 2 +- src/main.tsx | 7 + src/routers/layout/header.tsx | 45 ++++-- src/routers/layout/index.tsx | 22 ++- src/routers/layout/layout.module.less | 2 - src/routers/layout/logo/index.tsx | 2 +- src/routers/layout/logo/logo.module.less | 1 + src/routers/layout/midcontent/index.tsx | 81 ++++++++++ .../layout/midcontent/midcontent.module.less | 5 + src/routers/layout/nav/index.tsx | 3 +- src/routers/layout/routernav/index.tsx | 122 +++++++++----- src/routers/layout/routernav/menu.tsx | 41 ----- src/routers/layout/search/index.tsx | 39 ++++- src/routers/layout/search/search.module.less | 149 ++++++++++-------- src/routers/search/hooks.tsx | 11 ++ src/routers/search/index.tsx | 34 ++++ src/routers/video/hooks.tsx | 21 ++- src/routers/video/masonry.tsx | 101 ++++++------ src/store/loading/index.ts | 21 ++- 19 files changed, 481 insertions(+), 228 deletions(-) create mode 100644 src/routers/layout/midcontent/index.tsx create mode 100644 src/routers/layout/midcontent/midcontent.module.less delete mode 100644 src/routers/layout/routernav/menu.tsx create mode 100644 src/routers/search/hooks.tsx create mode 100644 src/routers/search/index.tsx diff --git a/src/components/proview/type.tsx b/src/components/proview/type.tsx index 080be35..47577e6 100644 --- a/src/components/proview/type.tsx +++ b/src/components/proview/type.tsx @@ -1,5 +1,5 @@ import { ReactElement } from "react"; export type ReactChildrenType = { - children: ReactElement; + children: ReactElement | ReactElement[]; }; diff --git a/src/main.tsx b/src/main.tsx index ffa31f5..dc9d580 100644 --- a/src/main.tsx +++ b/src/main.tsx @@ -19,6 +19,7 @@ import "./index.less"; // sentry import * as Sentry from "@sentry/react"; import { BrowserTracing } from "@sentry/tracing"; +import SearchPage, { loader as SearchLoader } from "@routers/search"; if (!isdev && isrelease) { Sentry.init({ dsn: "https://086f27258cce4d28aacc8c2719a683fb@sentry.vtb.link/3", @@ -59,6 +60,12 @@ const router = createBrowserRouter([ path: "photo", element: , }, + { + //视频搜索展示页面 + path: "search", + element: , + loader: SearchLoader, + }, ], }, ], diff --git a/src/routers/layout/header.tsx b/src/routers/layout/header.tsx index c153dfb..b4a8bca 100644 --- a/src/routers/layout/header.tsx +++ b/src/routers/layout/header.tsx @@ -1,12 +1,14 @@ import styles from "./layout.module.less"; import LOGO from "./logo"; -import RouterNav from "./routernav"; import { useAppDispatch } from "@store/hooks"; import { useLocation } from "react-router-dom"; -import { useEffect, useMemo } from "react"; +import { memo, useEffect } from "react"; import { changeLoadingCauseByUrl } from "@store/loading"; import { routerNameToLoading } from "@utils/router"; import { styled } from "@mui/material"; +import Search from "./search"; +import { Yituo } from "./logo/modal"; +import RouterNav from "./routernav/index"; export default function Header() { const dispatch = useAppDispatch(), location = useLocation(); @@ -17,21 +19,32 @@ export default function Header() { }) ); }, [location.pathname]); - const JSXRes = useMemo( - () => ( - - + return ; +} + +const ReactiveHeader = memo(() => { + return ( +
+
+ - - ), - [] +
+ +
+ +
+
+ +
+
+ 敬请期待 +
+
+
); - return <>{JSXRes}; -} -const Header_header = styled("header")(({ theme }) => ({ +}); + +const Header_content = styled("div")(({ theme }) => ({ flexDirection: "row", - [theme.breakpoints.down("sm")]: { - flexDirection: "row-reverse", - justifyContent: "flex-end", - }, + justifyContent: "space-between", })); diff --git a/src/routers/layout/index.tsx b/src/routers/layout/index.tsx index 78c1011..7cb4eb8 100644 --- a/src/routers/layout/index.tsx +++ b/src/routers/layout/index.tsx @@ -1,10 +1,11 @@ import { Flipped, Flipper } from "react-flip-toolkit"; -import { Outlet } from "react-router-dom"; +import { Outlet, useMatch } from "react-router-dom"; import Header from "./header"; import Header_Nav from "./nav"; import { useAppSelector } from "@store/hooks"; import { selectNavMoreShowed } from "@store/device/index"; import styles from "./layout.module.less"; +import MidContent from "./midcontent"; export default function Layout() { const showed = useAppSelector(selectNavMoreShowed); return ( @@ -22,11 +23,7 @@ export default function Layout() { }} >
- - - +
@@ -36,3 +33,16 @@ export default function Layout() { ); } + +const NavContent = () => { + const isSearchPage = useMatch(`/search`) !== null; + return
{!isSearchPage && }
; +}; + +const OldNav = () => ( + + + +); diff --git a/src/routers/layout/layout.module.less b/src/routers/layout/layout.module.less index 06ea5b4..0a22a97 100644 --- a/src/routers/layout/layout.module.less +++ b/src/routers/layout/layout.module.less @@ -1,6 +1,5 @@ .container { position: relative; - } .nav { @@ -13,7 +12,6 @@ .header { max-width: 1440px; margin: 0 auto; - padding-top: 10px; display: flex; align-items: center; background-color: #fff; diff --git a/src/routers/layout/logo/index.tsx b/src/routers/layout/logo/index.tsx index 61129b2..dfab803 100644 --- a/src/routers/layout/logo/index.tsx +++ b/src/routers/layout/logo/index.tsx @@ -27,7 +27,7 @@ export default function LOGO() { handlerReadedNews(); }; return ( -
+

EOEfans-web端 - - {RouterList.map((item, index) => ( - - ))} - - - )} - - ); -} -function RouterItem(props: TabProps & { onClick: () => void }) { - return ( - - - - ); -} diff --git a/src/routers/layout/search/index.tsx b/src/routers/layout/search/index.tsx index 9cd32ff..fc390fd 100644 --- a/src/routers/layout/search/index.tsx +++ b/src/routers/layout/search/index.tsx @@ -1,9 +1,46 @@ import SearchSharpIcon from "@mui/icons-material/SearchSharp"; -import { Form } from "react-router-dom"; +import { Form, useNavigate } from "react-router-dom"; import styles from "./search.module.less"; import { useSearchFocus } from "@components/proview/searchFocus"; import { Flipped } from "react-flip-toolkit"; +import SearchIcon from "@mui/icons-material/Search"; +// todo 增加高级搜索以及手机端的搜索 export default function Search() { + const navigate = useNavigate(); + const handlerSubmit = () => { + const value = (document.getElementById("q") as HTMLInputElement).value; + navigate(`/search?tag=${value}`); + }; + return ( + <> +
+ { + if (event.key === "Enter") { + handlerSubmit(); + } + }} + /> + + +
+ + ); +} + +function Search_1() { const { focused, bind } = useSearchFocus(); return ( <> diff --git a/src/routers/layout/search/search.module.less b/src/routers/layout/search/search.module.less index 98dd97f..4302495 100644 --- a/src/routers/layout/search/search.module.less +++ b/src/routers/layout/search/search.module.less @@ -1,80 +1,93 @@ -.search-box { - position: relative; - z-index: 10; - margin: 0 8px; - min-width: 180px; - max-width: 500px; - width: 100%; +// .search-box { +// position: relative; +// z-index: 10; +// margin: 0 8px; +// min-width: 180px; +// max-width: 500px; +// width: 100%; - .search-form { - border-radius: 8px; - display: flex; - align-items: center; - height: 40px; - opacity: .9; - transition: background-color .3s; - background-color: #f1f2f3; - border: 1px solid #E3E5E7; +// .search-form { +// border-radius: 8px; +// display: flex; +// align-items: center; +// height: 40px; +// opacity: .9; +// transition: background-color .3s; +// background-color: #f1f2f3; +// border: 1px solid #E3E5E7; - &:hover { - background-color: #fff; - } +// &:hover { +// background-color: #fff; +// } - .search-content { - flex: 1; - display: flex; - align-items: center; - position: relative; - padding: 0 8px; - margin-right: 8px; - height: 32px; - border: 2px solid transparent; - border-radius: 6px; +// .search-content { +// flex: 1; +// display: flex; +// align-items: center; +// position: relative; +// padding: 0 8px; +// margin-right: 8px; +// height: 32px; +// border: 2px solid transparent; +// border-radius: 6px; - .search-input { - flex: 1; - overflow: hidden; - padding-right: 8px; - border: none; - background-color: transparent; - box-shadow: none; - font-size: 14px; - line-height: 20px; - color: #61666D; +// .search-input { +// flex: 1; +// overflow: hidden; +// padding-right: 8px; +// border: none; +// background-color: transparent; +// box-shadow: none; +// font-size: 14px; +// line-height: 20px; +// color: #61666D; - &:focus-visible { - outline: none; - } - } - } +// &:focus-visible { +// outline: none; +// } +// } +// } - .search-btn { - display: flex; - margin: 0; - padding: 0; - align-items: center; - justify-content: center; - width: 32px; - height: 32px; - border: none; - border-radius: 6px; - cursor: pointer; - transition: background-color .3s; +// .search-btn { +// display: flex; +// margin: 0; +// padding: 0; +// align-items: center; +// justify-content: center; +// width: 32px; +// height: 32px; +// border: none; +// border-radius: 6px; +// cursor: pointer; +// transition: background-color .3s; - &:hover { - background-color: #E3E5E7; - } - } - } +// &:hover { +// background-color: #E3E5E7; +// } +// } +// } + +// .form-active { +// border-bottom-left-radius: 0; +// border-bottom-right-radius: 0; +// background-color: #fff; - .form-active { - border-bottom-left-radius: 0; - border-bottom-right-radius: 0; - background-color: #fff; +// .search-content { +// background-color: #f1f2f3; +// } +// } +// } + + +.search-box { + box-shadow: 0 1px 2px rgb(0 0 0 / 8%), 0 4px 12px rgb(0 0 0 / 5%); + border-radius: 40px; + border: 1px solid #DDD; + padding: 7px; + display: flex; - .search-content { - background-color: #f1f2f3; - } + .search-button { + border-radius: 40px; } } \ No newline at end of file diff --git a/src/routers/search/hooks.tsx b/src/routers/search/hooks.tsx new file mode 100644 index 0000000..99297d1 --- /dev/null +++ b/src/routers/search/hooks.tsx @@ -0,0 +1,11 @@ +import { useScreenSize } from "@components/proview/screenSize"; +import { VideoListType } from "@routers/video/masonry"; +import { useAppSelector } from "@store/hooks"; +import { selectSearchingState } from "@store/loading"; +export const useSearchLoading = () => useAppSelector(selectSearchingState); + +export const useSearchShowState = (data: VideoListType) => { + const loading = useSearchLoading(), + isEmpty = data.length < 1; + return { loading, isEmpty }; +}; diff --git a/src/routers/search/index.tsx b/src/routers/search/index.tsx new file mode 100644 index 0000000..d8ef118 --- /dev/null +++ b/src/routers/search/index.tsx @@ -0,0 +1,34 @@ +import { NormalVideoRes } from "@routers/video/masonry"; +import { + fetchVideohandler, + PickVideoRouterImageCardType, +} from "@routers/video/tools"; +import { nanoid } from "nanoid"; +import { useLoaderData } from "react-router-dom"; +import { useSearchShowState } from "./hooks"; + +type LoaderType = { + request: { + url: string; + }; +}; +export type PromiseType = Promise; +export type UnPromisify = T extends PromiseType ? U : never; +type LoaderReturnType = UnPromisify>; +export async function loader({ request }: LoaderType) { + const url = new URL(request.url), + tag = url.searchParams.get("tag"); + const data = await fetchVideohandler(1, { order: "score", q: `tag.${tag}` }); + return { data }; +} + +export default function SearchPage() { + const { data } = useLoaderData() as LoaderReturnType, + filterData = data.map((item) => ({ + ...PickVideoRouterImageCardType(item), + id: nanoid(4), + })); + const { loading, isEmpty } = useSearchShowState(filterData), + propsObj = { loading, isEmpty, data: filterData }; + return ; +} diff --git a/src/routers/video/hooks.tsx b/src/routers/video/hooks.tsx index 682e282..56dd2a1 100644 --- a/src/routers/video/hooks.tsx +++ b/src/routers/video/hooks.tsx @@ -1,3 +1,22 @@ +import { useScreenSize } from "@components/proview/screenSize"; import { useAppSelector } from "@store/hooks"; -import { selectVideoLoadingState } from "@store/loading/index"; +import { + selectVideoLoadingState, + useChangeLoading, +} from "@store/loading/index"; +import { VideoListType } from "./masonry"; export const useVideoLoading = () => useAppSelector(selectVideoLoadingState); + +export const useChangeVideoLoading = () => { + const { handerChangeLoading } = useChangeLoading("videoIsLoading"); + return { handerChangeLoading }; +}; + +export const useVideoShowState = (data: VideoListType) => { + const { lg, md, sm } = useScreenSize(), + rightLen = (lg ? (md ? (sm ? 0 : 2) : 4) : 6) + 1; + const loading = useVideoLoading(), + isEmpty = data.length < 1, + shouldNoShowHeroLine = data.length < rightLen + 1 + 10; + return { loading, rightLen, isEmpty, shouldNoShowHeroLine }; +}; diff --git a/src/routers/video/masonry.tsx b/src/routers/video/masonry.tsx index 6944d58..b4166e2 100644 --- a/src/routers/video/masonry.tsx +++ b/src/routers/video/masonry.tsx @@ -1,24 +1,20 @@ -import { useState, useEffect, FC, memo, ReactElement } from "react"; +import { useState, useEffect, FC, memo } from "react"; import { VideoRouterImageCardType, VideoRouterMasonryType } from "./videotype"; -import { SxProps, Theme, Unstable_Grid2 as Grid } from "@mui/material"; +import { Unstable_Grid2 as Grid } from "@mui/material"; import { VideoRouterImageCard } from "./item"; import { Skeleton } from "@mui/material"; import { nanoid } from "nanoid"; import styles from "./video.module.less"; import { fetchVideohandler, PickVideoRouterImageCardType } from "./tools"; -import { useAppDispatch } from "@store/hooks"; -import { changeLoading } from "@store/loading/index"; -import { useVideoLoading } from "./hooks"; +import { useChangeVideoLoading, useVideoShowState } from "./hooks"; import { useScreenSize } from "@components/proview/screenSize"; -type VideoListType = (VideoRouterImageCardType & { id: string })[]; +export type VideoListType = (VideoRouterImageCardType & { id: string })[]; /** * @description 该组件负责渲染视频图片的瀑布流 */ export default function VideoMasonry(props: VideoRouterMasonryType) { const [lists, setLists] = useState([]); - const dispatch = useAppDispatch(), - handerChangeLoading = (state: boolean) => - dispatch(changeLoading({ stateName: "videoIsLoading", Tostate: state })); + const { handerChangeLoading } = useChangeVideoLoading(); useEffect(() => { setLists([]); handerChangeLoading(true); @@ -29,7 +25,7 @@ export default function VideoMasonry(props: VideoRouterMasonryType) { ...lists, ...data.map((item, index) => { const itemRes = PickVideoRouterImageCardType(item); - if (index === data.length - 3) { + if (index === data.length - 5) { return { ...itemRes, id: nanoid(4), @@ -52,13 +48,21 @@ export default function VideoMasonry(props: VideoRouterMasonryType) { ); } +const LoadingItems: FC<{ length?: number }> = ({ length = 20 }) => ( + <> + {Array.from({ length }, (value, key) => ( + + + + ))} + +); + const VideoContent: FC<{ data: VideoListType }> = memo((props) => { - const { lg, md, sm } = useScreenSize(), - rightLen = (lg ? (md ? (sm ? 0 : 2) : 4) : 6) + 1; - const data = props.data, - loading = useVideoLoading(), - isEmpty = data.length < 1, - shouldNoShowHeroLine = data.length < rightLen + 1 + 10; + const { loading, rightLen, isEmpty, shouldNoShowHeroLine } = + useVideoShowState(props.data); + const { sm } = useScreenSize(); + const data = props.data; const heroItem = data.slice(0, 1), rightItem = data.slice(1, rightLen), resItems = shouldNoShowHeroLine ? data : data.slice(rightLen); @@ -100,11 +104,7 @@ const VideoContent: FC<{ data: VideoListType }> = memo((props) => { }} > {loading ? ( - Array.from({ length: rightLen - 1 }, (value, key) => ( - - - - )) + ) : shouldNoShowHeroLine ? ( <> ) : ( @@ -116,35 +116,42 @@ const VideoContent: FC<{ data: VideoListType }> = memo((props) => { )} - - {loading ? ( - Array.from({ length: 20 }, (value, key) => ( - - - - )) - ) : isEmpty ? ( - - ) : ( - resItems.map((item) => ) - )} - + ); }); + +export const NormalVideoRes: FC<{ + loading: boolean; + isEmpty: boolean; + data: VideoListType; +}> = ({ loading, isEmpty, data }) => ( + + {loading ? ( + + ) : isEmpty ? ( + + ) : ( + data.map((item) => ) + )} + +); + const EmptyItem = () => (
暂无数据
); diff --git a/src/store/loading/index.ts b/src/store/loading/index.ts index e26d5c9..86564b7 100644 --- a/src/store/loading/index.ts +++ b/src/store/loading/index.ts @@ -1,4 +1,5 @@ import { createSlice, PayloadAction } from "@reduxjs/toolkit"; +import { useAppDispatch } from "@store/hooks"; import type { RootState } from ".."; @@ -11,6 +12,10 @@ export interface LoadingState { * @description 图片接口是否正在获取 */ photoIsloading: boolean; + /** + *@description 搜索接口是否正在获取 + */ + searchIsloading: boolean; } interface IchangeLoadingItem { stateName: keyof LoadingState; @@ -20,6 +25,7 @@ interface IchangeLoadingItem { const initialState: LoadingState = { videoIsLoading: true, photoIsloading: true, + searchIsloading: true, }; export const LoadingSlice = createSlice({ name: "loading", @@ -50,14 +56,23 @@ export const LoadingSlice = createSlice({ }, }, }); - -const selectLoadingState = (state: RootState, name: keyof LoadingState) => +type LoadingTypes = keyof LoadingState; +const selectLoadingState = (state: RootState, name: LoadingTypes) => state.loading[name]; export const { changeLoading, changeLoadingCauseByUrl } = LoadingSlice.actions; export const selectVideoLoadingState = (state: RootState) => selectLoadingState(state, "videoIsLoading"), selectPhotoLoadingState = (state: RootState) => - selectLoadingState(state, "photoIsloading"); + selectLoadingState(state, "photoIsloading"), + selectSearchingState = (state: RootState) => + selectLoadingState(state, "searchIsloading"); export default LoadingSlice.reducer; + +export const useChangeLoading = (name: LoadingTypes) => { + const dispatch = useAppDispatch(), + handerChangeLoading = (state: boolean) => + dispatch(changeLoading({ stateName: name, Tostate: state })); + return { handerChangeLoading }; +}; From c4f8e4ed91029d47a552e14a77c33d9f02319478 Mon Sep 17 00:00:00 2001 From: master1lan <278457198@qq.com> Date: Sat, 25 Feb 2023 14:47:48 +0800 Subject: [PATCH 07/41] =?UTF-8?q?:wheelchair:=20perf(custom):=20=E6=B7=BB?= =?UTF-8?q?=E5=8A=A0=E6=99=AE=E9=80=9A=E6=90=9C=E7=B4=A2=E4=BB=A5=E5=8F=8A?= =?UTF-8?q?=E9=A1=B5=E9=9D=A2=E4=BC=98=E5=8C=96?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 目前距离1.0版本还需要对sider页面的tag选择修改、大屏下tag栏展示布局修改、添加次高级搜索等 --- src/routers/layout/routernav/index.tsx | 19 +++++-- src/routers/layout/search/index.tsx | 37 ++----------- src/routers/search/index.tsx | 66 +++++++++++++++++++---- src/routers/search/select.tsx | 72 ++++++++++++++++++++++++++ src/routers/search/tool.ts | 31 +++++++++++ src/utils/fetch/fetchtype.ts | 3 +- src/utils/hooks/url.ts | 5 ++ 7 files changed, 183 insertions(+), 50 deletions(-) create mode 100644 src/routers/search/select.tsx create mode 100644 src/routers/search/tool.ts create mode 100644 src/utils/hooks/url.ts diff --git a/src/routers/layout/routernav/index.tsx b/src/routers/layout/routernav/index.tsx index e5d1d5b..4308fed 100644 --- a/src/routers/layout/routernav/index.tsx +++ b/src/routers/layout/routernav/index.tsx @@ -54,11 +54,20 @@ type DrawerHrefItemType = { }[]; } & Pick; -const DrawerNavItem: FC> = ({ title }) => ( - - - -); +const DrawerNavItem: FC> = ({ title }) => { + const shouldShow = ["/", "/video", "/photo"].includes( + window.location.pathname + ); + return ( + <> + {shouldShow && ( + + + + )} + + ); +}; const DrawerHrefLink: FC> = ( props diff --git a/src/routers/layout/search/index.tsx b/src/routers/layout/search/index.tsx index fc390fd..e0f24d5 100644 --- a/src/routers/layout/search/index.tsx +++ b/src/routers/layout/search/index.tsx @@ -1,9 +1,10 @@ import SearchSharpIcon from "@mui/icons-material/SearchSharp"; -import { Form, useNavigate } from "react-router-dom"; +import { Form, useLocation, useNavigate } from "react-router-dom"; import styles from "./search.module.less"; import { useSearchFocus } from "@components/proview/searchFocus"; import { Flipped } from "react-flip-toolkit"; import SearchIcon from "@mui/icons-material/Search"; +import { useURLParams } from "@utils/hooks/url"; // todo 增加高级搜索以及手机端的搜索 export default function Search() { const navigate = useNavigate(); @@ -11,6 +12,7 @@ export default function Search() { const value = (document.getElementById("q") as HTMLInputElement).value; navigate(`/search?tag=${value}`); }; + const [tag] = useURLParams(["tag"]); return ( <>
{ if (event.key === "Enter") { handlerSubmit(); @@ -39,35 +42,3 @@ export default function Search() { ); } - -function Search_1() { - const { focused, bind } = useSearchFocus(); - return ( - <> - -
-
-
- -
-
- -
-
-
-
- - ); -} diff --git a/src/routers/search/index.tsx b/src/routers/search/index.tsx index d8ef118..3791d89 100644 --- a/src/routers/search/index.tsx +++ b/src/routers/search/index.tsx @@ -3,10 +3,15 @@ import { fetchVideohandler, PickVideoRouterImageCardType, } from "@routers/video/tools"; +import { useChangeLoading } from "@store/loading"; import { nanoid } from "nanoid"; +import { useEffect, useState } from "react"; import { useLoaderData } from "react-router-dom"; import { useSearchShowState } from "./hooks"; - +import { VideoListType } from "../video/masonry"; +import SelectNav from "./select"; +import { videoOrderType } from "@utils/fetch/fetchtype"; +import { OrderArr } from "./tool"; type LoaderType = { request: { url: string; @@ -18,17 +23,56 @@ type LoaderReturnType = UnPromisify>; export async function loader({ request }: LoaderType) { const url = new URL(request.url), tag = url.searchParams.get("tag"); - const data = await fetchVideohandler(1, { order: "score", q: `tag.${tag}` }); - return { data }; + let order = url.searchParams.get("order") as videoOrderType; + if (!OrderArr.includes(order)) { + order = "score"; + } + return [tag, order] as const; } export default function SearchPage() { - const { data } = useLoaderData() as LoaderReturnType, - filterData = data.map((item) => ({ - ...PickVideoRouterImageCardType(item), - id: nanoid(4), - })); - const { loading, isEmpty } = useSearchShowState(filterData), - propsObj = { loading, isEmpty, data: filterData }; - return ; + const loaderData = useLoaderData() as LoaderReturnType, + [tag, order] = loaderData; + const [lists, setLists] = useState([]); + const { handerChangeLoading } = useChangeLoading("searchIsloading"); + useEffect(() => { + setLists([]); + handerChangeLoading(true); + function handlerSetList( + datas: UnPromisify>, + nextPage: number + ) { + setLists((lists) => [ + ...lists, + ...datas.map((item, index) => { + const itemRes = PickVideoRouterImageCardType(item); + if (index === datas.length - 5) { + return { + ...itemRes, + id: nanoid(4), + observer: true, + callback: (inView: boolean) => fetchHandler(nextPage), + }; + } + return { ...itemRes, id: nanoid(4) }; + }), + ]); + } + const fetchHandler = async (page: number = 1) => { + const data = await fetchVideohandler(page, { + order, + q: `tag.${tag}`, + }); + handlerSetList(data, page + 1); + }; + fetchHandler(1).then(() => handerChangeLoading(false)); + }, loaderData); + const { loading, isEmpty } = useSearchShowState(lists), + propsObj = { loading, isEmpty, data: lists }; + return ( +
+ + +
+ ); } diff --git a/src/routers/search/select.tsx b/src/routers/search/select.tsx new file mode 100644 index 0000000..e4383a0 --- /dev/null +++ b/src/routers/search/select.tsx @@ -0,0 +1,72 @@ +import { videoOrderType } from "@utils/fetch/fetchtype"; +import { nanoid } from "nanoid"; +import { FC } from "react"; +import { useNavigate } from "react-router-dom"; +import { OrderArr, returnReplacedParmasURl } from "./tool"; +import { useURLParams } from "@utils/hooks/url"; + +export default function SelectNav() { + const navigate = useNavigate(), + handlerCilck = (queryString: videoOrderType) => { + const replacedUrl = returnReplacedParmasURl([ + { parmas: "order", replace: queryString }, + ]), + newQuerySrting = new URL(replacedUrl).search; + navigate(`/search${newQuerySrting}`); + }; + return ( +
+ {Search_Nav.map((item) => ( + + ))} +
+ ); +} + +const SearchNavItem: FC<{ + onClick: () => void; + label: string; + queryString: videoOrderType; +}> = ({ label, onClick, queryString }) => { + const [order] = useURLParams(["order"]), + isCurOrder = OrderArr.includes(order as videoOrderType) + ? order === queryString + : queryString === "score"; + return ( +
+ {label} +
+ ); +}; + +type searchNavType = { + id: string; + label: "综合排序" | "最多播放" | "最新发表"; + queryString: videoOrderType; +}; +const Search_Nav: searchNavType[] = [ + { + id: nanoid(4), + label: "综合排序", + queryString: "score", + }, + { + id: nanoid(4), + label: "最多播放", + queryString: "view", + }, + { + id: nanoid(4), + label: "最新发表", + queryString: "pubdate", + }, +]; diff --git a/src/routers/search/tool.ts b/src/routers/search/tool.ts new file mode 100644 index 0000000..e54ef24 --- /dev/null +++ b/src/routers/search/tool.ts @@ -0,0 +1,31 @@ +import { videoOrderType } from "@utils/fetch/fetchtype"; + +function ParseQueryString(queryString: string) { + const regExp = /([^&=]+)=([\w\W]*?)(&|$)/g; + let result = null, + ret: { [key: string]: string } = {}; + while ((result = regExp.exec(queryString)) != null) { + ret[result[1]] = result[2]; + } + return ret; +} +export const parseURL = (url = window.location.href) => { + const objUrl = new URL(url), + params = objUrl.search.slice(1); + return ParseQueryString(params); +}; + +export const returnReplacedParmasURl = ( + input: { parmas: string; replace: string }[] +) => { + const originUrl = window.location.href, + paramsObj = parseURL(originUrl); + input.forEach(({ parmas, replace }) => (paramsObj[parmas] = replace)); + return originUrl.replace( + window.location.search, + `?${Object.entries(paramsObj) + .map(([key, value]) => `${key}=${value}`) + .join("&")}` + ); +}; +export const OrderArr: videoOrderType[] = ["pubdate", "score", "view"]; diff --git a/src/utils/fetch/fetchtype.ts b/src/utils/fetch/fetchtype.ts index 6d05df3..d5ab7fe 100644 --- a/src/utils/fetch/fetchtype.ts +++ b/src/utils/fetch/fetchtype.ts @@ -1,3 +1,4 @@ +export type videoOrderType = "pubdate" | "view" | "score"; /** *@description video接口的请求参数类型 */ @@ -7,7 +8,7 @@ export interface IFetchVideoParams { * pubdate为最新发布排序,view为最多播放排序,score为最高得分排序 * @example pubdate | view | score */ - order: "pubdate" | "view" | "score"; + order: videoOrderType; /** * @description 分页,每页返回20个;从1开始,自然数递增 * @example 1 diff --git a/src/utils/hooks/url.ts b/src/utils/hooks/url.ts new file mode 100644 index 0000000..96c9c61 --- /dev/null +++ b/src/utils/hooks/url.ts @@ -0,0 +1,5 @@ +export const useURLParams = (searchList: string[]) => { + const originURl = window.location.href; + const url = new URL(originURl); + return searchList.map((item) => url.searchParams.get(item) || ""); +}; From 67a915f30fe9e91e928346d168e2570d4e9c86eb Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?George=20Kazami=20=5B=E4=B9=94=E6=B2=BB=C2=B7=E9=A2=A8?= =?UTF-8?q?=E8=A6=8B=5D?= Date: Sat, 25 Feb 2023 10:13:59 +0000 Subject: [PATCH 08/41] Update readme.md --- readme.md | 1 + 1 file changed, 1 insertion(+) diff --git a/readme.md b/readme.md index 9d11e29..4abf59c 100644 --- a/readme.md +++ b/readme.md @@ -2,6 +2,7 @@ [![Deploy DEV EOEFANS WEB to Cloudflare pages](https://vlink.dev/EOEFANS/eoefans-web/actions/workflows/dev-cloudflare-pages.yml/badge.svg)](https://vlink.dev/EOEFANS/eoefans-web/actions/workflows/dev-cloudflare-pages.yml) [![EOEFANS-WEB-AZURE-DEPLOY](https://vlink.dev/EOEFANS/eoefans-web/actions/workflows/azure-staticwebapp.yml/badge.svg)](https://vlink.dev/EOEFANS/eoefans-web/actions/workflows/azure-staticwebapp.yml) + ## 目录结构(暂定) 1. component:存放组件 From c9f2f3168054884b930d760ca4f6475464374857 Mon Sep 17 00:00:00 2001 From: master1lan <278457198@qq.com> Date: Sat, 25 Feb 2023 23:40:34 +0800 Subject: [PATCH 09/41] =?UTF-8?q?:lipstick:=20style(custom):=20=E4=BF=AE?= =?UTF-8?q?=E6=94=B9=E9=A6=96=E9=A1=B5=E6=A0=B7=E5=BC=8F=E4=BB=A5=E5=8F=8A?= =?UTF-8?q?=E5=8F=B3=E4=BE=A7=E6=8B=89=E6=A0=8F=E6=A0=B7=E5=BC=8F?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 还需要添加次高级搜索、加载逻辑、tag栏自定义切换 --- ....dev.config.ts.timestamp-1677330152133.mjs | 48 ++++++++++++++ src/components/proview/themePreview.tsx | 32 +++++++++- src/index.less | 4 +- src/main.tsx | 3 +- src/routers/layout/index.tsx | 6 +- src/routers/layout/midcontent/index.tsx | 63 ++++++++++--------- src/routers/layout/nav/index.tsx | 21 +++++-- src/routers/layout/nav/nav.module.less | 3 - src/routers/layout/routernav/index.tsx | 8 +-- 9 files changed, 142 insertions(+), 46 deletions(-) create mode 100644 config/vite.dev.config.ts.timestamp-1677330152133.mjs diff --git a/config/vite.dev.config.ts.timestamp-1677330152133.mjs b/config/vite.dev.config.ts.timestamp-1677330152133.mjs new file mode 100644 index 0000000..169be8a --- /dev/null +++ b/config/vite.dev.config.ts.timestamp-1677330152133.mjs @@ -0,0 +1,48 @@ +// config/vite.dev.config.ts +import { defineConfig } from "file:///E:/code/project/bitbucket/eoefans-web/node_modules/.pnpm/vite@4.1.4_ve7l6t5koctut52smtaue47xhi/node_modules/vite/dist/node/index.js"; +import path from "path"; +import react from "file:///E:/code/project/bitbucket/eoefans-web/node_modules/.pnpm/@vitejs+plugin-react-swc@3.2.0_vite@4.1.4/node_modules/@vitejs/plugin-react-swc/index.mjs"; +import { createHtmlPlugin } from "file:///E:/code/project/bitbucket/eoefans-web/node_modules/.pnpm/vite-plugin-html@3.2.0_vite@4.1.4/node_modules/vite-plugin-html/dist/index.mjs"; +var __vite_injected_original_dirname = "E:\\code\\project\\bitbucket\\eoefans-web\\config"; +var addProjectPath = (originPath) => `../${originPath}`; +var vite_dev_config_default = defineConfig({ + define: { + __APP_VERSION__: "0.01", + isdev: true, + isrelease: false + }, + resolve: { + alias: { + "@utils": path.resolve(__vite_injected_original_dirname, addProjectPath("src/utils")), + "@components": path.resolve(__vite_injected_original_dirname, addProjectPath("src/components")), + "@store": path.resolve(__vite_injected_original_dirname, addProjectPath("src/store")), + "@routers": path.resolve(__vite_injected_original_dirname, addProjectPath("src/routers")), + "@assets": path.resolve(__vite_injected_original_dirname, addProjectPath("src/assets")) + } + }, + plugins: [ + react(), + createHtmlPlugin({ + entry: "src/main.tsx", + template: "index.html", + inject: { + data: { + injectScript: `` + } + } + }) + ], + server: { + proxy: { + "/v1": { + target: "https://api.eoe.best/eoefans-api", + changeOrigin: true + } + } + } +}); +export { + addProjectPath, + vite_dev_config_default as default +}; +//# sourceMappingURL=data:application/json;base64,ewogICJ2ZXJzaW9uIjogMywKICAic291cmNlcyI6IFsiY29uZmlnL3ZpdGUuZGV2LmNvbmZpZy50cyJdLAogICJzb3VyY2VzQ29udGVudCI6IFsiY29uc3QgX192aXRlX2luamVjdGVkX29yaWdpbmFsX2Rpcm5hbWUgPSBcIkU6XFxcXGNvZGVcXFxccHJvamVjdFxcXFxiaXRidWNrZXRcXFxcZW9lZmFucy13ZWJcXFxcY29uZmlnXCI7Y29uc3QgX192aXRlX2luamVjdGVkX29yaWdpbmFsX2ZpbGVuYW1lID0gXCJFOlxcXFxjb2RlXFxcXHByb2plY3RcXFxcYml0YnVja2V0XFxcXGVvZWZhbnMtd2ViXFxcXGNvbmZpZ1xcXFx2aXRlLmRldi5jb25maWcudHNcIjtjb25zdCBfX3ZpdGVfaW5qZWN0ZWRfb3JpZ2luYWxfaW1wb3J0X21ldGFfdXJsID0gXCJmaWxlOi8vL0U6L2NvZGUvcHJvamVjdC9iaXRidWNrZXQvZW9lZmFucy13ZWIvY29uZmlnL3ZpdGUuZGV2LmNvbmZpZy50c1wiO2ltcG9ydCB7IGRlZmluZUNvbmZpZyB9IGZyb20gXCJ2aXRlXCI7XHJcbmltcG9ydCBwYXRoIGZyb20gXCJwYXRoXCI7XHJcbmltcG9ydCByZWFjdCBmcm9tIFwiQHZpdGVqcy9wbHVnaW4tcmVhY3Qtc3djXCI7XHJcbi8vcmVkaWN0UGF0aFxyXG5leHBvcnQgY29uc3QgYWRkUHJvamVjdFBhdGggPSAob3JpZ2luUGF0aDogc3RyaW5nKSA9PiBgLi4vJHtvcmlnaW5QYXRofWA7XHJcbmltcG9ydCB7IGNyZWF0ZUh0bWxQbHVnaW4gfSBmcm9tIFwidml0ZS1wbHVnaW4taHRtbFwiO1xyXG5leHBvcnQgZGVmYXVsdCBkZWZpbmVDb25maWcoe1xyXG4gIGRlZmluZToge1xyXG4gICAgX19BUFBfVkVSU0lPTl9fOiBcIjAuMDFcIixcclxuICAgIGlzZGV2OiB0cnVlLFxyXG4gICAgaXNyZWxlYXNlOiBmYWxzZSxcclxuICB9LFxyXG4gIHJlc29sdmU6IHtcclxuICAgIGFsaWFzOiB7XHJcbiAgICAgIFwiQHV0aWxzXCI6IHBhdGgucmVzb2x2ZShfX2Rpcm5hbWUsIGFkZFByb2plY3RQYXRoKFwic3JjL3V0aWxzXCIpKSxcclxuICAgICAgXCJAY29tcG9uZW50c1wiOiBwYXRoLnJlc29sdmUoX19kaXJuYW1lLCBhZGRQcm9qZWN0UGF0aChcInNyYy9jb21wb25lbnRzXCIpKSxcclxuICAgICAgXCJAc3RvcmVcIjogcGF0aC5yZXNvbHZlKF9fZGlybmFtZSwgYWRkUHJvamVjdFBhdGgoXCJzcmMvc3RvcmVcIikpLFxyXG4gICAgICBcIkByb3V0ZXJzXCI6IHBhdGgucmVzb2x2ZShfX2Rpcm5hbWUsIGFkZFByb2plY3RQYXRoKFwic3JjL3JvdXRlcnNcIikpLFxyXG4gICAgICBcIkBhc3NldHNcIjogcGF0aC5yZXNvbHZlKF9fZGlybmFtZSwgYWRkUHJvamVjdFBhdGgoXCJzcmMvYXNzZXRzXCIpKSxcclxuICAgIH0sXHJcbiAgfSxcclxuICBwbHVnaW5zOiBbXHJcbiAgICByZWFjdCgpLFxyXG4gICAgY3JlYXRlSHRtbFBsdWdpbih7XHJcbiAgICAgIGVudHJ5OiBcInNyYy9tYWluLnRzeFwiLFxyXG4gICAgICB0ZW1wbGF0ZTogXCJpbmRleC5odG1sXCIsXHJcbiAgICAgIGluamVjdDoge1xyXG4gICAgICAgIGRhdGE6IHtcclxuICAgICAgICAgIGluamVjdFNjcmlwdDogYGAsXHJcbiAgICAgICAgfSxcclxuICAgICAgfSxcclxuICAgIH0pLFxyXG4gIF0sXHJcbiAgc2VydmVyOiB7XHJcbiAgICBwcm94eToge1xyXG4gICAgICBcIi92MVwiOiB7XHJcbiAgICAgICAgdGFyZ2V0OiBcImh0dHBzOi8vYXBpLmVvZS5iZXN0L2VvZWZhbnMtYXBpXCIsXHJcbiAgICAgICAgY2hhbmdlT3JpZ2luOiB0cnVlLFxyXG4gICAgICB9LFxyXG4gICAgfSxcclxuICB9LFxyXG59KTtcclxuIl0sCiAgIm1hcHBpbmdzIjogIjtBQUEwVSxTQUFTLG9CQUFvQjtBQUN2VyxPQUFPLFVBQVU7QUFDakIsT0FBTyxXQUFXO0FBR2xCLFNBQVMsd0JBQXdCO0FBTGpDLElBQU0sbUNBQW1DO0FBSWxDLElBQU0saUJBQWlCLENBQUMsZUFBdUIsTUFBTTtBQUU1RCxJQUFPLDBCQUFRLGFBQWE7QUFBQSxFQUMxQixRQUFRO0FBQUEsSUFDTixpQkFBaUI7QUFBQSxJQUNqQixPQUFPO0FBQUEsSUFDUCxXQUFXO0FBQUEsRUFDYjtBQUFBLEVBQ0EsU0FBUztBQUFBLElBQ1AsT0FBTztBQUFBLE1BQ0wsVUFBVSxLQUFLLFFBQVEsa0NBQVcsZUFBZSxXQUFXLENBQUM7QUFBQSxNQUM3RCxlQUFlLEtBQUssUUFBUSxrQ0FBVyxlQUFlLGdCQUFnQixDQUFDO0FBQUEsTUFDdkUsVUFBVSxLQUFLLFFBQVEsa0NBQVcsZUFBZSxXQUFXLENBQUM7QUFBQSxNQUM3RCxZQUFZLEtBQUssUUFBUSxrQ0FBVyxlQUFlLGFBQWEsQ0FBQztBQUFBLE1BQ2pFLFdBQVcsS0FBSyxRQUFRLGtDQUFXLGVBQWUsWUFBWSxDQUFDO0FBQUEsSUFDakU7QUFBQSxFQUNGO0FBQUEsRUFDQSxTQUFTO0FBQUEsSUFDUCxNQUFNO0FBQUEsSUFDTixpQkFBaUI7QUFBQSxNQUNmLE9BQU87QUFBQSxNQUNQLFVBQVU7QUFBQSxNQUNWLFFBQVE7QUFBQSxRQUNOLE1BQU07QUFBQSxVQUNKLGNBQWM7QUFBQSxRQUNoQjtBQUFBLE1BQ0Y7QUFBQSxJQUNGLENBQUM7QUFBQSxFQUNIO0FBQUEsRUFDQSxRQUFRO0FBQUEsSUFDTixPQUFPO0FBQUEsTUFDTCxPQUFPO0FBQUEsUUFDTCxRQUFRO0FBQUEsUUFDUixjQUFjO0FBQUEsTUFDaEI7QUFBQSxJQUNGO0FBQUEsRUFDRjtBQUNGLENBQUM7IiwKICAibmFtZXMiOiBbXQp9Cg== diff --git a/src/components/proview/themePreview.tsx b/src/components/proview/themePreview.tsx index 9f4886d..94ae2b6 100644 --- a/src/components/proview/themePreview.tsx +++ b/src/components/proview/themePreview.tsx @@ -1,6 +1,11 @@ //@ts-nocheck import React from "react"; -import { ThemeProvider, createTheme } from "@mui/material/styles"; +import ProximaSoft from "@assets/font/ProximaSoft-Regular.woff2"; +import { + ThemeProvider, + createTheme, + StyledEngineProvider, +} from "@mui/material/styles"; import { ReactChildrenType } from "./type"; declare module "@mui/material/styles" { interface Palette { @@ -36,6 +41,25 @@ declare module "@mui/material/Button" { } } const theme = createTheme({ + typography: { + fontFamily: "Proxima Soft, Segoe UI Tahoma, Geneva, Verdana, sans-serif", + }, + components: { + MuiCssBaseline: { + styleOverrides: ` + @font-face { + font-family: 'Proxima Soft'; + font-style: normal; + font-display: swap; + font-weight: 400; + src: local('Proxima Soft Regular'), local('Proxima-Soft-Regular'), + url('@assets/font/ProximaSoft-Regular.woff2') format('woff2'), + url('@assets/font/ProximaSoft-Regular.woff') format('woff'), + url('@assets/font/ProximaSoft-Regular.ttf') format('truetype'); + } + `, + }, + }, palette: { luzao: { main: "#3dff9e", contrastText: "#fff" }, luzaoRed: { main: "#A0191D", contrastText: "#fff" }, @@ -48,7 +72,11 @@ const theme = createTheme({ }); const MUIThemePreview = ({ children }: ReactChildrenType) => { - return {children}; + return ( + + {children} + + ); }; export default MUIThemePreview; diff --git a/src/index.less b/src/index.less index 45e411b..9a8bfaa 100644 --- a/src/index.less +++ b/src/index.less @@ -24,7 +24,9 @@ font-style: normal; } + + body, html { - font-family: 'Proxima Soft'; + font-family: 'Proxima Soft', 'Segoe UI', Tahoma, Geneva, Verdana, sans-serif; } \ No newline at end of file diff --git a/src/main.tsx b/src/main.tsx index dc9d580..26a7ab3 100644 --- a/src/main.tsx +++ b/src/main.tsx @@ -13,8 +13,9 @@ import { Provider } from "react-redux"; import store from "@store/index"; //ployfill import "intersection-observer"; -import "./normalize.css"; import "loading-attribute-polyfill"; +//css +import "./normalize.css"; import "./index.less"; // sentry import * as Sentry from "@sentry/react"; diff --git a/src/routers/layout/index.tsx b/src/routers/layout/index.tsx index 7cb4eb8..df9803b 100644 --- a/src/routers/layout/index.tsx +++ b/src/routers/layout/index.tsx @@ -36,7 +36,11 @@ export default function Layout() { const NavContent = () => { const isSearchPage = useMatch(`/search`) !== null; - return
{!isSearchPage && }
; + return ( + +
{!isSearchPage && }
+
+ ); }; const OldNav = () => ( diff --git a/src/routers/layout/midcontent/index.tsx b/src/routers/layout/midcontent/index.tsx index b563039..edfb591 100644 --- a/src/routers/layout/midcontent/index.tsx +++ b/src/routers/layout/midcontent/index.tsx @@ -4,15 +4,15 @@ import { RouterList } from "../routernav"; import { TabProps } from "../routernav/index"; import HeadNav from "../nav"; import styles from "./midcontent.module.less"; +import { Flipped } from "react-flip-toolkit"; export default function MidContent() { return ( <>
-
- {/* todo修改这个玩意 */} +
@@ -22,19 +22,20 @@ export default function MidContent() { } const LeftLinks = () => ( -
- {RouterList.map((item, key) => ( - - {item.label} - - ))} -
+ +
+ {RouterList.map((item, key) => ( + + {item.label} + + ))} +
+
); -`露早虞莫莞儿柚恩米诺`; const GroupLists: TabProps[] = [ { label: "露早", @@ -63,19 +64,21 @@ const GroupLists: TabProps[] = [ ]; const RightLinks = () => ( -
- {GroupLists.map((item, key) => ( - - {item.label} - - ))} -
+ +
+ {GroupLists.map((item, key) => ( + + {item.label} + + ))} +
+
); diff --git a/src/routers/layout/nav/index.tsx b/src/routers/layout/nav/index.tsx index 4b88dba..f079a57 100644 --- a/src/routers/layout/nav/index.tsx +++ b/src/routers/layout/nav/index.tsx @@ -1,4 +1,4 @@ -import { Stack } from "@mui/material"; +import { Chip, Stack } from "@mui/material"; import Button from "@mui/lab/LoadingButton"; import { useInView } from "react-intersection-observer"; import SegmentIcon from "@mui/icons-material/Segment"; @@ -55,7 +55,12 @@ function useSelectList() { return { navLists, setLists, storageSelect }; } -export default function Header_Nav() { +type HeaderNavType = { + shouldShow?: boolean; +}; + +export default function Header_Nav(props: HeaderNavType) { + const { shouldShow = false } = props; const { navLists, setLists, storageSelect } = useSelectList(); //tag区是否展开 const showed = useAppSelector(selectNavMoreShowed); @@ -114,10 +119,10 @@ export default function Header_Nav() { @@ -216,6 +221,14 @@ const NavTagChipItem: FC = memo( }; //@ts-ignore const color = nameToColor[props.query] || "info"; + return ( + + ); return ( +
+
); diff --git a/src/routers/layout/search/pc/hooks.tsx b/src/routers/layout/search/pc/hooks.tsx new file mode 100644 index 0000000..7b4db49 --- /dev/null +++ b/src/routers/layout/search/pc/hooks.tsx @@ -0,0 +1,14 @@ +import { + changeSearchMode, + SelectModeType, + selectSearchMode, +} from "@store/device"; +import { useAppDispatch, useAppSelector } from "@store/hooks"; + +export const useSearchMode = () => { + const searchMode = useAppSelector(selectSearchMode); + const dispatch = useAppDispatch(), + handlerChangeSearchMode = (name: SelectModeType) => + dispatch(changeSearchMode(name)); + return { searchMode, handlerChangeSearchMode }; +}; diff --git a/src/routers/layout/search/pc/index.tsx b/src/routers/layout/search/pc/index.tsx new file mode 100644 index 0000000..3bd0eb0 --- /dev/null +++ b/src/routers/layout/search/pc/index.tsx @@ -0,0 +1,35 @@ +import React, { useRef } from "react"; +import { useSearchFocus } from "@components/proview/searchFocus"; +import styles from "../search.module.less"; +import { FC, useEffect } from "react"; +import SelectModeCom from "./selectModeNav"; +import Search from "./search"; + +export default function NormalSearch() { + const { focused, bind } = useSearchFocus(), + { onBlur } = bind; + const contentRef = useRef(); + useEffect(() => { + if (focused) { + window.addEventListener("scroll", onBlur, { + once: true, + }); + } + }, [focused]); + return ( +
+ + +
+
+ ); +} diff --git a/src/routers/layout/search/pc/search.tsx b/src/routers/layout/search/pc/search.tsx new file mode 100644 index 0000000..e11f89e --- /dev/null +++ b/src/routers/layout/search/pc/search.tsx @@ -0,0 +1,57 @@ +import { useSearchFocus } from "@components/proview/searchFocus"; +import { useURLParams } from "@utils/hooks/url"; +import SearchIcon from "@mui/icons-material/Search"; +import styles from "../search.module.less"; +import { useSearchMode } from "./hooks"; +import { useNavigate } from "react-router-dom"; +export default function Search() { + const [tag] = useURLParams(["tag"]); + const searchId = `pcSearch`; + const { focused, bind } = useSearchFocus(); + const { onFocus, onBlur } = bind; + const { searchMode, handlerChangeSearchMode } = useSearchMode(); + const navigate = useNavigate(), + handlerSubmit = () => { + const value = (document.getElementById(searchId) as HTMLInputElement) + .value; + navigate(`/search?tag=${value}`); + onBlur(); + }; + return ( + <> +
+
+ { + if (event.key === "Enter") { + handlerSubmit(); + } + }} + /> + +
+
+ + ); +} diff --git a/src/routers/layout/search/pc/selectModeNav.tsx b/src/routers/layout/search/pc/selectModeNav.tsx new file mode 100644 index 0000000..db00d77 --- /dev/null +++ b/src/routers/layout/search/pc/selectModeNav.tsx @@ -0,0 +1,41 @@ +import { selectModeList } from "@store/device"; +import { FC } from "react"; +import styles from "../search.module.less"; +import { useSearchMode } from "./hooks"; +/** + * 搜索模式选择 + */ +export default function SelectModeCom() { + const { searchMode, handlerChangeSearchMode } = useSearchMode(); + return ( +
+ {selectModeList.map((item, key) => ( + + ))} +
+ ); +} + +type SelectButtonType = { + selected: boolean; + label: string; + onChange: () => void; +}; + +const SelectButton: FC = ({ selected, label, onChange }) => { + return ( +
+ +
+ ); +}; diff --git a/src/routers/layout/search/search.module.less b/src/routers/layout/search/search.module.less index 4302495..de25901 100644 --- a/src/routers/layout/search/search.module.less +++ b/src/routers/layout/search/search.module.less @@ -1,93 +1,56 @@ -// .search-box { -// position: relative; -// z-index: 10; -// margin: 0 8px; -// min-width: 180px; -// max-width: 500px; -// width: 100%; - -// .search-form { -// border-radius: 8px; -// display: flex; -// align-items: center; -// height: 40px; -// opacity: .9; -// transition: background-color .3s; -// background-color: #f1f2f3; -// border: 1px solid #E3E5E7; - -// &:hover { -// background-color: #fff; -// } - -// .search-content { -// flex: 1; -// display: flex; -// align-items: center; -// position: relative; -// padding: 0 8px; -// margin-right: 8px; -// height: 32px; -// border: 2px solid transparent; -// border-radius: 6px; - -// .search-input { -// flex: 1; -// overflow: hidden; -// padding-right: 8px; -// border: none; -// background-color: transparent; -// box-shadow: none; -// font-size: 14px; -// line-height: 20px; -// color: #61666D; - -// &:focus-visible { -// outline: none; -// } -// } -// } - -// .search-btn { -// display: flex; -// margin: 0; -// padding: 0; -// align-items: center; -// justify-content: center; -// width: 32px; -// height: 32px; -// border: none; -// border-radius: 6px; -// cursor: pointer; -// transition: background-color .3s; - -// &:hover { -// background-color: #E3E5E7; -// } -// } -// } - -// .form-active { -// border-bottom-left-radius: 0; -// border-bottom-right-radius: 0; -// background-color: #fff; - - -// .search-content { -// background-color: #f1f2f3; -// } -// } -// } - - .search-box { box-shadow: 0 1px 2px rgb(0 0 0 / 8%), 0 4px 12px rgb(0 0 0 / 5%); border-radius: 40px; border: 1px solid #DDD; padding: 7px; display: flex; + background-color: white; + max-width: 100%; + box-sizing: border-box; + justify-content: space-between; + align-items: stretch; + margin: auto; + width: 288px; + + &.focus { + width: 850px; + height: 65px; + } .search-button { border-radius: 40px; + cursor: pointer; + padding: 8px; + color: white; + position: relative; + margin: auto; + display: flex; + justify-content: center; + align-items: center; + + } +} + +.pc-search { + transition-duration: 300ms; + display: flex; + flex-direction: column; + + &::after { + content: ''; + width: 64px; + margin: 0 auto; + height: 2px; + background-color: currentColor; + transform: scaleX(0); + transition: transform 200ms ease; + } + + &:hover::after { + transform: scaleX(1); + } + + &.active::after { + transform: scaleX(1); } } \ No newline at end of file diff --git a/src/store/device/index.ts b/src/store/device/index.ts index 8a2f145..3bff900 100644 --- a/src/store/device/index.ts +++ b/src/store/device/index.ts @@ -1,15 +1,23 @@ -import { createSlice } from "@reduxjs/toolkit"; +import { createSlice, PayloadAction } from "@reduxjs/toolkit"; import type { RootState } from ".."; +export type SelectModeType = typeof selectModeList[number]; +export const selectModeList = ["搜索tag", "搜索更多"] as const; + interface DeviceState { /** * @description nav栏是否展开 */ navMoreShowed: boolean; + /** + * + */ + selectSearchMode: SelectModeType; } const initialState: DeviceState = { navMoreShowed: false, + selectSearchMode: "搜索tag", }; export const DeviceSlice = createSlice({ name: "device", @@ -21,14 +29,22 @@ export const DeviceSlice = createSlice({ changeNavMoreShowed: (state) => { state.navMoreShowed = !state.navMoreShowed; }, + /** + * @description 修改搜索模式 + */ + changeSearchMode: (state, action: PayloadAction) => { + state.selectSearchMode = action.payload; + }, }, }); -export const { changeNavMoreShowed } = DeviceSlice.actions; +export const { changeNavMoreShowed, changeSearchMode } = DeviceSlice.actions; /** * @description 获取nav是否展开 */ export const selectNavMoreShowed = (state: RootState) => state.device.navMoreShowed; +export const selectSearchMode = (state: RootState) => + state.device.selectSearchMode; export default DeviceSlice.reducer; From 1f6866877c1533940a17f90d80ccb68eb876ea70 Mon Sep 17 00:00:00 2001 From: master1lan <278457198@qq.com> Date: Mon, 27 Feb 2023 11:50:54 +0800 Subject: [PATCH 13/41] =?UTF-8?q?:lipstick:=20style(custom):=20tag?= =?UTF-8?q?=E6=A0=8F=E4=BF=AE=E6=94=B9=E6=A0=B7=E5=BC=8F?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/routers/layout/nav/index.tsx | 11 ++++--- src/routers/layout/rightSide/index.tsx | 5 --- src/store/tags/index.ts | 43 ++++++++++++++++++++++++-- 3 files changed, 47 insertions(+), 12 deletions(-) delete mode 100644 src/routers/layout/rightSide/index.tsx diff --git a/src/routers/layout/nav/index.tsx b/src/routers/layout/nav/index.tsx index f079a57..43e3dbe 100644 --- a/src/routers/layout/nav/index.tsx +++ b/src/routers/layout/nav/index.tsx @@ -45,7 +45,7 @@ import { selectVideoActiveTags, } from "@store/tags/index"; -function useSelectList() { +export function useTagSelectList() { const { pathname } = useLocation(), flag = pathname === "/photo", storageSelect = flag ? PhotoNavStorage : VideoNavStorage; @@ -61,7 +61,7 @@ type HeaderNavType = { export default function Header_Nav(props: HeaderNavType) { const { shouldShow = false } = props; - const { navLists, setLists, storageSelect } = useSelectList(); + const { navLists, setLists, storageSelect } = useTagSelectList(); //tag区是否展开 const showed = useAppSelector(selectNavMoreShowed); //拖拽事件绑定 @@ -223,10 +223,11 @@ const NavTagChipItem: FC = memo( const color = nameToColor[props.query] || "info"; return ( ); return ( diff --git a/src/routers/layout/rightSide/index.tsx b/src/routers/layout/rightSide/index.tsx deleted file mode 100644 index aeec436..0000000 --- a/src/routers/layout/rightSide/index.tsx +++ /dev/null @@ -1,5 +0,0 @@ -import { Avatar } from "@mui/material"; - -export default function RightSide() { - return App; -} diff --git a/src/store/tags/index.ts b/src/store/tags/index.ts index 803ef06..293211f 100644 --- a/src/store/tags/index.ts +++ b/src/store/tags/index.ts @@ -8,6 +8,7 @@ import { PhotoQueryNavList, } from "@routers/layout/nav/photoTools"; import type { RootState } from ".."; +import { useAppDispatch, useAppSelector } from "@store/hooks"; const Photo_Topic_id_all = PhotoQueryNavList.find( (item) => item.queryString === 0 @@ -23,12 +24,16 @@ interface TagStates { /** * @description video页面点击tags */ - VideoActiveTags: VideoNavQueryItemType[]; + VideoActiveTags: VideoTagsType; /** * @description photo page active tags */ - PhotoActivetags: PhotoNavQueryItemType[]; + PhotoActivetags: photoTagsType; } + +type VideoTagsType = VideoNavQueryItemType[]; +type photoTagsType = PhotoNavQueryItemType[]; + const initialState: TagStates = { VideoActiveTags: [Video_default_show], PhotoActivetags: [Photo_Topic_id_all, Photo_type_default], @@ -122,3 +127,37 @@ export const selectVideoActiveTags = (state: RootState) => selectPhotoActiveTags = (state: RootState) => state.ActiveTags.PhotoActivetags; export default ActiveTagsSlice.reducer; + +export const useSelectVideoActiveTags = () => + useAppSelector(selectVideoActiveTags), + useSelectPhotoActiveTags = () => useAppSelector(selectPhotoActiveTags); +export const useStoreVideoTags = () => { + const activeTags = useSelectVideoActiveTags(); + const dispath = useAppDispatch(), + handerChangeActiveTags = ( + type: "add" | "delete", + data: VideoNavQueryItemType + ) => { + if (type === "add") { + dispath(handerVideoAddTag(data)); + } else { + dispath(handerVideoDeleteTag(data)); + } + }; + return [activeTags, handerChangeActiveTags]; + }, + useStorePhotoTags = () => { + const activeTags = useSelectPhotoActiveTags(); + const dispath = useAppDispatch(), + handerChangeActiveTags = ( + type: "add" | "delete", + data: PhotoNavQueryItemType + ) => { + if (type === "add") { + dispath(handerPhotoAddTag(data)); + } else { + dispath(handerPhotoDeleteTag(data)); + } + }; + return [activeTags, handerChangeActiveTags]; + }; From 8554d28a37b1b1517c0e2083ff36c30757627ea6 Mon Sep 17 00:00:00 2001 From: master1lan <278457198@qq.com> Date: Mon, 27 Feb 2023 14:01:09 +0800 Subject: [PATCH 14/41] =?UTF-8?q?:lipstick:=20style(custom):=20=E6=B7=BB?= =?UTF-8?q?=E5=8A=A0pc=E7=AB=AF=E9=AB=98=E7=BA=A7=E6=90=9C=E7=B4=A2?= =?UTF-8?q?=E6=A0=B7=E5=BC=8F?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/routers/layout/search/pc/pc.module.less | 63 ++++++++++++ src/routers/layout/search/pc/search.tsx | 103 +++++++++++++++---- src/routers/layout/search/search.module.less | 2 +- 3 files changed, 145 insertions(+), 23 deletions(-) create mode 100644 src/routers/layout/search/pc/pc.module.less diff --git a/src/routers/layout/search/pc/pc.module.less b/src/routers/layout/search/pc/pc.module.less new file mode 100644 index 0000000..2765acc --- /dev/null +++ b/src/routers/layout/search/pc/pc.module.less @@ -0,0 +1,63 @@ +.advanceSearch { + display: flex; + flex-grow: 1; + + &.focus { + .itemPadding { + padding: 12px 32px; + } + + span+input { + width: 100%; + } + + .SearchItem:hover { + background-color: rgb(229, 231, 235); + } + } + + &.blur { + transition: all 300ms ease; + + .item { + align-items: center; + justify-content: center; + + span+input { + height: 0%; + width: 0%; + } + } + } + + .itemPadding { + transition: all 300ms ease; + } + + .item { + display: flex; + flex-direction: column; + + span { + padding-bottom: 2px; + font-size: 12px; + font-weight: 800; + } + + span+input { + transition: all 300ms ease; + background-color: transparent; + + &:focus-within { + outline: none; + } + } + } + + .SearchItem { + flex-grow: 1; + display: flex; + border-radius: 40px; + // transition: all 300ms ease; + } +} \ No newline at end of file diff --git a/src/routers/layout/search/pc/search.tsx b/src/routers/layout/search/pc/search.tsx index e11f89e..59bc37a 100644 --- a/src/routers/layout/search/pc/search.tsx +++ b/src/routers/layout/search/pc/search.tsx @@ -2,8 +2,10 @@ import { useSearchFocus } from "@components/proview/searchFocus"; import { useURLParams } from "@utils/hooks/url"; import SearchIcon from "@mui/icons-material/Search"; import styles from "../search.module.less"; +import pcStyles from "./pc.module.less"; import { useSearchMode } from "./hooks"; import { useNavigate } from "react-router-dom"; +import { FC, forwardRef } from "react"; export default function Search() { const [tag] = useURLParams(["tag"]); const searchId = `pcSearch`; @@ -19,39 +21,96 @@ export default function Search() { }; return ( <> + {/* 包裹层 */}
+ {/* 搜索栏内容层 */}
- { - if (event.key === "Enter") { - handlerSubmit(); - } - }} - /> - + {searchMode === "搜索tag" && ( + <> + { + if (event.key === "Enter") { + handlerSubmit(); + } + }} + /> + + + )} + {searchMode === "搜索更多" && }
); } +//通用按钮 +const SearchButton: FC<{ onSubmit?: () => void }> = ({ onSubmit }) => ( + +); + +const AdvanceSearch = forwardRef(function Advance(props, ref) { + const [tag, name] = useURLParams(["tag", "name"]); + const { focused, bind } = useSearchFocus(), + { onBlur } = bind; + const navigate = useNavigate(), + handlerSubmit = () => { + // const value = (document.getElementById(searchId) as HTMLInputElement) + // .value; + // navigate(`/search?tag=${value}`); + onBlur(); + }; + // tag.露早~name.L姓飞行玩家 + return ( +
+
+ 作者 + +
+ + {/* 等待接口更新 */} + {/*
+ 标题 + +
+ */} +
+
+ tag + +
+ {}} /> +
+
+ ); +}); diff --git a/src/routers/layout/search/search.module.less b/src/routers/layout/search/search.module.less index de25901..02cb76a 100644 --- a/src/routers/layout/search/search.module.less +++ b/src/routers/layout/search/search.module.less @@ -2,7 +2,6 @@ box-shadow: 0 1px 2px rgb(0 0 0 / 8%), 0 4px 12px rgb(0 0 0 / 5%); border-radius: 40px; border: 1px solid #DDD; - padding: 7px; display: flex; background-color: white; max-width: 100%; @@ -17,6 +16,7 @@ height: 65px; } + .search-button { border-radius: 40px; cursor: pointer; From bc59157b9abb0aa1104ea588a772376767855cbe Mon Sep 17 00:00:00 2001 From: master1lan <278457198@qq.com> Date: Mon, 27 Feb 2023 17:17:48 +0800 Subject: [PATCH 15/41] =?UTF-8?q?:wheelchair:=20perf(custom):=20=E5=B9=B3?= =?UTF-8?q?=E6=9D=BF=E7=AB=AF=E6=A0=B7=E5=BC=8F=E6=9B=B4=E6=96=B0=E4=BB=A5?= =?UTF-8?q?=E5=8F=8A=E9=80=82=E9=85=8D?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/routers/layout/header.tsx | 2 +- src/routers/layout/index.tsx | 6 +- src/routers/layout/midcontent/index.tsx | 77 ++++++------ src/routers/layout/nav/index.tsx | 2 +- src/routers/layout/search/pc/pc.module.less | 10 +- src/routers/layout/search/pc/search.tsx | 122 ++++++++++++++++---- src/routers/search/index.tsx | 15 ++- 7 files changed, 162 insertions(+), 72 deletions(-) diff --git a/src/routers/layout/header.tsx b/src/routers/layout/header.tsx index bec6693..294aae3 100644 --- a/src/routers/layout/header.tsx +++ b/src/routers/layout/header.tsx @@ -24,7 +24,7 @@ export default function Header() { const ReactiveHeader = memo(() => { return ( -
+
{/* 手机端 */}
diff --git a/src/routers/layout/index.tsx b/src/routers/layout/index.tsx index aaeda9b..dc59ab5 100644 --- a/src/routers/layout/index.tsx +++ b/src/routers/layout/index.tsx @@ -35,9 +35,5 @@ export default function Layout() { const NavContent = () => { const isSearchPage = useMatch(`/search`) !== null; - return ( - -
{!isSearchPage && }
-
- ); + return
{!isSearchPage && }
; }; diff --git a/src/routers/layout/midcontent/index.tsx b/src/routers/layout/midcontent/index.tsx index edfb591..03afbe3 100644 --- a/src/routers/layout/midcontent/index.tsx +++ b/src/routers/layout/midcontent/index.tsx @@ -3,38 +3,50 @@ import { Link as Mlink } from "@mui/material"; import { RouterList } from "../routernav"; import { TabProps } from "../routernav/index"; import HeadNav from "../nav"; +import LaunchIcon from "@mui/icons-material/Launch"; import styles from "./midcontent.module.less"; import { Flipped } from "react-flip-toolkit"; export default function MidContent() { return ( <> + {/* 大屏 */}
-
+ +
+ +
+
+ +
+ {/* ipad */} + ); } const LeftLinks = () => ( - -
- {RouterList.map((item, key) => ( - - {item.label} - - ))} -
-
+
+ {RouterList.map((item, key) => ( + + {item.label} + + ))} +
); const GroupLists: TabProps[] = [ { @@ -64,21 +76,20 @@ const GroupLists: TabProps[] = [ ]; const RightLinks = () => ( - -
- {GroupLists.map((item, key) => ( - - {item.label} - - ))} -
-
+
+ + {GroupLists.map((item, key) => ( + + {item.label} + + ))} +
); diff --git a/src/routers/layout/nav/index.tsx b/src/routers/layout/nav/index.tsx index 43e3dbe..07fe43c 100644 --- a/src/routers/layout/nav/index.tsx +++ b/src/routers/layout/nav/index.tsx @@ -180,7 +180,7 @@ const NavItem: FC = memo( transition, }; return ( - +
diff --git a/src/routers/layout/search/pc/pc.module.less b/src/routers/layout/search/pc/pc.module.less index 2765acc..3337a75 100644 --- a/src/routers/layout/search/pc/pc.module.less +++ b/src/routers/layout/search/pc/pc.module.less @@ -23,6 +23,12 @@ align-items: center; justify-content: center; + span { + transition: all 300ms ease; + font-size: 12px; + font-weight: 600; + } + span+input { height: 0%; width: 0%; @@ -40,8 +46,8 @@ span { padding-bottom: 2px; - font-size: 12px; - font-weight: 800; + font-size: 14px; + font-weight: 400; } span+input { diff --git a/src/routers/layout/search/pc/search.tsx b/src/routers/layout/search/pc/search.tsx index 59bc37a..bfac52e 100644 --- a/src/routers/layout/search/pc/search.tsx +++ b/src/routers/layout/search/pc/search.tsx @@ -5,13 +5,13 @@ import styles from "../search.module.less"; import pcStyles from "./pc.module.less"; import { useSearchMode } from "./hooks"; import { useNavigate } from "react-router-dom"; -import { FC, forwardRef } from "react"; +import { FC, forwardRef, useImperativeHandle, useRef } from "react"; export default function Search() { const [tag] = useURLParams(["tag"]); const searchId = `pcSearch`; const { focused, bind } = useSearchFocus(); const { onFocus, onBlur } = bind; - const { searchMode, handlerChangeSearchMode } = useSearchMode(); + const { searchMode } = useSearchMode(); const navigate = useNavigate(), handlerSubmit = () => { const value = (document.getElementById(searchId) as HTMLInputElement) @@ -31,8 +31,8 @@ export default function Search() {
{searchMode === "搜索tag" && ( <> @@ -73,11 +73,15 @@ const AdvanceSearch = forwardRef(function Advance(props, ref) { const [tag, name] = useURLParams(["tag", "name"]); const { focused, bind } = useSearchFocus(), { onBlur } = bind; + const nameRef = useRef(null), + tagRef = useRef(null); const navigate = useNavigate(), handlerSubmit = () => { - // const value = (document.getElementById(searchId) as HTMLInputElement) - // .value; - // navigate(`/search?tag=${value}`); + //@ts-ignore + let tagValue = tagRef.current!.getValue(), + //@ts-ignore + nameValue = nameRef.current!.getValue(); + navigate(`/search?tag=${tagValue}&name=${nameValue}`); onBlur(); }; // tag.露早~name.L姓飞行玩家 @@ -87,30 +91,98 @@ const AdvanceSearch = forwardRef(function Advance(props, ref) { !focused ? pcStyles["blur"] : pcStyles["focus"] }`} > -
- 作者 - -
- + {/* 等待接口更新 */} - {/*
*/} + +
+ ); +}); + +type AdvanceItemProps = { + title: string; + inputDefaultValue: string; + onSubmit: () => void; +}; + +const useBackRef = (ref: React.Ref) => { + const inputRef = useRef(null), + handerfocus = () => inputRef.current?.focus(); + //@ts-ignore + useImperativeHandle(ref, () => { + return { + getValue() { + return inputRef.current?.value; + }, + }; + }); + return { inputRef, handerfocus }; +}; + +const AdvanceSearchItem = forwardRef( + (props, ref) => { + const { inputRef, handerfocus } = useBackRef(ref); + return ( + <> +
+ {props.title} + { + if (event.key === "Enter") { + props.onSubmit(); + } + }} + /> +
+ + + ); + } +); +const AdvanceSearchLastItem = forwardRef< + HTMLInputElement, + AdvanceItemProps & { onSubmit: () => void } +>((props, ref) => { + const { inputRef, handerfocus } = useBackRef(ref); + return ( + <> +
- 标题 - -
- */} -
- tag - + {props.title} + { + if (event.key === "Enter") { + props.onSubmit(); + } + }} + />
- {}} /> +
-
+ ); }); diff --git a/src/routers/search/index.tsx b/src/routers/search/index.tsx index 3791d89..5769292 100644 --- a/src/routers/search/index.tsx +++ b/src/routers/search/index.tsx @@ -21,18 +21,23 @@ export type PromiseType = Promise; export type UnPromisify = T extends PromiseType ? U : never; type LoaderReturnType = UnPromisify>; export async function loader({ request }: LoaderType) { - const url = new URL(request.url), - tag = url.searchParams.get("tag"); + let url = new URL(request.url), + tag = url.searchParams.get("tag"), + name = url.searchParams.get("name"); let order = url.searchParams.get("order") as videoOrderType; if (!OrderArr.includes(order)) { order = "score"; } - return [tag, order] as const; + !tag && (tag = ""); + !name && (name = ""); + return [tag, name, order] as const; } export default function SearchPage() { const loaderData = useLoaderData() as LoaderReturnType, - [tag, order] = loaderData; + [tagParam, nameParam, order] = loaderData; + { + } const [lists, setLists] = useState([]); const { handerChangeLoading } = useChangeLoading("searchIsloading"); useEffect(() => { @@ -61,7 +66,7 @@ export default function SearchPage() { const fetchHandler = async (page: number = 1) => { const data = await fetchVideohandler(page, { order, - q: `tag.${tag}`, + q: `tag.${tagParam}~name.${nameParam}`, }); handlerSetList(data, page + 1); }; From 227ede4b3da01272936e3ae0797d1ebebccd0b3d Mon Sep 17 00:00:00 2001 From: master1lan <278457198@qq.com> Date: Mon, 27 Feb 2023 19:19:56 +0800 Subject: [PATCH 16/41] =?UTF-8?q?:lipstick:=20style(custom):=20=E4=BF=AE?= =?UTF-8?q?=E6=94=B9tailwind?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/routers/layout/header.tsx | 7 ++++--- src/routers/layout/index.tsx | 2 +- src/routers/layout/logo/index.tsx | 8 +++++--- src/routers/layout/logo/logo.module.less | 7 ++----- src/routers/layout/logo/modal.tsx | 2 +- src/routers/layout/routernav/index.tsx | 2 +- src/routers/layout/search/index.tsx | 4 +++- src/routers/layout/search/pc/search.tsx | 4 ++-- src/routers/layout/search/phone/index.tsx | 3 +++ tailwind.config.cjs | 6 +++++- 10 files changed, 27 insertions(+), 18 deletions(-) create mode 100644 src/routers/layout/search/phone/index.tsx diff --git a/src/routers/layout/header.tsx b/src/routers/layout/header.tsx index 294aae3..d9dc4da 100644 --- a/src/routers/layout/header.tsx +++ b/src/routers/layout/header.tsx @@ -26,18 +26,19 @@ const ReactiveHeader = memo(() => { return (
{/* 手机端 */} -
+
+ {/* pc端和平板端header部 */} -
+
-
+
敬请期待
diff --git a/src/routers/layout/index.tsx b/src/routers/layout/index.tsx index dc59ab5..6d07e42 100644 --- a/src/routers/layout/index.tsx +++ b/src/routers/layout/index.tsx @@ -35,5 +35,5 @@ export default function Layout() { const NavContent = () => { const isSearchPage = useMatch(`/search`) !== null; - return
{!isSearchPage && }
; + return
{!isSearchPage && }
; }; diff --git a/src/routers/layout/logo/index.tsx b/src/routers/layout/logo/index.tsx index dfab803..26eb4fd 100644 --- a/src/routers/layout/logo/index.tsx +++ b/src/routers/layout/logo/index.tsx @@ -3,6 +3,7 @@ import { useState, useMemo, FC } from "react"; import { H1, Explain, Yituo } from "./modal"; import styles from "./logo.module.less"; import { Storage } from "../tools"; +import { useScreenSize } from "@components/proview/screenSize"; const QAStorage = new Storage("QAUpdate"); //暂时先这样 @@ -26,10 +27,12 @@ export default function LOGO() { set((open) => !open); handlerReadedNews(); }; + const { md } = useScreenSize(); return (
-

- EOEfans-web端 + +

+ {!md ? `EOEfans-web端` : `EOEfans`}

-

); } diff --git a/src/routers/layout/logo/logo.module.less b/src/routers/layout/logo/logo.module.less index 6a7fd62..50f5a88 100644 --- a/src/routers/layout/logo/logo.module.less +++ b/src/routers/layout/logo/logo.module.less @@ -1,22 +1,19 @@ .logo { display: flex; align-items: center; - flex-flow: row-reverse nowrap; + flex-flow: row nowrap; padding: 5px 0; - justify-content: flex-end; + position: relative; a { color: inherit; text-decoration: none; } - - h1 { margin: 0; white-space: nowrap; position: relative; - padding-right: 30px; } } diff --git a/src/routers/layout/logo/modal.tsx b/src/routers/layout/logo/modal.tsx index 135c03a..91e51b3 100644 --- a/src/routers/layout/logo/modal.tsx +++ b/src/routers/layout/logo/modal.tsx @@ -27,7 +27,7 @@ export const Explain: FC<{ open: boolean; handlerClick: () => void }> = ( export const H1 = styled("h1")(({ theme }) => ({ fontSize: "24px", - [theme.breakpoints.down("sm")]: { + [theme.breakpoints.down("md")]: { fontSize: "15px", }, })); diff --git a/src/routers/layout/routernav/index.tsx b/src/routers/layout/routernav/index.tsx index feadc75..c05cd37 100644 --- a/src/routers/layout/routernav/index.tsx +++ b/src/routers/layout/routernav/index.tsx @@ -23,7 +23,7 @@ export default function RouterNav() {
-
+
-
+ {/* pc and pad */} +
+
); } diff --git a/src/routers/layout/search/pc/search.tsx b/src/routers/layout/search/pc/search.tsx index bfac52e..ec1307e 100644 --- a/src/routers/layout/search/pc/search.tsx +++ b/src/routers/layout/search/pc/search.tsx @@ -32,7 +32,7 @@ export default function Search() { onClick={!focused ? onFocus : undefined} className={`${styles["search-box"]} ${ focused ? styles["focus"] : "py-1" - } px-2 max-md:m-0 duration-300 max-md:flex-row-reverse relative`} + } duration-300 relative`} > {searchMode === "搜索tag" && ( <> @@ -62,7 +62,7 @@ export default function Search() { const SearchButton: FC<{ onSubmit?: () => void }> = ({ onSubmit }) => ( -); +const SearchButton: FC<{ onSubmit?: () => void }> = ({ onSubmit }) => { + const { focused } = useSearchFocus(); + return ( + + ); +}; const AdvanceSearch = forwardRef(function Advance(props, ref) { const [tag, name] = useURLParams(["tag", "name"]); diff --git a/src/routers/layout/search/search.module.less b/src/routers/layout/search/search.module.less index 221976e..9899bc6 100644 --- a/src/routers/layout/search/search.module.less +++ b/src/routers/layout/search/search.module.less @@ -20,7 +20,7 @@ .search-button { border-radius: 40px; cursor: pointer; - padding: 8px; + // padding: 8px; color: white; position: relative; margin: auto; From f9436083c1899414dae4cf9a2fe77640f6cf03e9 Mon Sep 17 00:00:00 2001 From: master1lan <278457198@qq.com> Date: Wed, 1 Mar 2023 10:46:09 +0800 Subject: [PATCH 27/41] chore(release): 0.2.0 --- CHANGELOG.md | 9 +++++++++ package.json | 2 +- 2 files changed, 10 insertions(+), 1 deletion(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 2177bb2..a77538d 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -2,6 +2,15 @@ All notable changes to this project will be documented in this file. See [standard-version](https://github.com/conventional-changelog/standard-version) for commit guidelines. +# [0.2.0](/compare/v0.1.2...v0.2.0) (2023-03-01) + + +### ✨ Features + +* **custom**: 测试1.0版本 8e656d5 + + + ## [0.1.2](/compare/v0.1.1...v0.1.2) (2023-03-01) diff --git a/package.json b/package.json index c63e16d..95babbc 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "eoefans-web", - "version": "0.1.2", + "version": "0.2.0", "type": "module", "scripts": { "dev": "vite --config ./config/vite.dev.config.ts", From a949fe408de49e5919eb6cbae37e58cdde7296b6 Mon Sep 17 00:00:00 2001 From: master1lan <278457198@qq.com> Date: Wed, 1 Mar 2023 12:49:46 +0800 Subject: [PATCH 28/41] =?UTF-8?q?:zap:=20feat(custom):=20=E6=B7=BB?= =?UTF-8?q?=E5=8A=A0=E9=87=8D=E5=A4=A7=E4=BA=8B=E9=A1=B9=E9=80=9A=E7=9F=A5?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/routers/layout/header.tsx | 4 ++-- src/routers/layout/index.tsx | 18 ++++++++++++++++++ src/routers/layout/logo/index.tsx | 2 +- src/routers/layout/routernav/index.tsx | 6 ++++++ 4 files changed, 27 insertions(+), 3 deletions(-) diff --git a/src/routers/layout/header.tsx b/src/routers/layout/header.tsx index 1556dd7..44ffed6 100644 --- a/src/routers/layout/header.tsx +++ b/src/routers/layout/header.tsx @@ -22,13 +22,13 @@ export default function Header() { const ReactiveHeader = memo(() => { return ( -
+
{/* 手机端 */}
{/* pc端和平板端header部 */} - +
diff --git a/src/routers/layout/index.tsx b/src/routers/layout/index.tsx index 6d07e42..36a53d3 100644 --- a/src/routers/layout/index.tsx +++ b/src/routers/layout/index.tsx @@ -3,6 +3,8 @@ import { Outlet, useMatch } from "react-router-dom"; import Header from "./header"; import { useAppSelector } from "@store/hooks"; import { selectNavMoreShowed } from "@store/device/index"; +import ArrowOutwardIcon from "@mui/icons-material/ArrowOutward"; +import { Link } from "@mui/material"; import styles from "./layout.module.less"; import MidContent from "./midcontent"; export default function Layout() { @@ -21,6 +23,9 @@ export default function Layout() { }, }} > +
+ +
@@ -32,6 +37,19 @@ export default function Layout() { ); } +export const ImportTantInfo = () => ( + <> + + 征集小队长生贺视频 + + + +); const NavContent = () => { const isSearchPage = useMatch(`/search`) !== null; diff --git a/src/routers/layout/logo/index.tsx b/src/routers/layout/logo/index.tsx index d2baea2..b14f185 100644 --- a/src/routers/layout/logo/index.tsx +++ b/src/routers/layout/logo/index.tsx @@ -32,7 +32,7 @@ export default function LOGO() {

- {!md ? `EOEfans-web端` : `EOEfans`} + {!md ? `eoefans-web端` : `eoefans`}

+ +
+ +
+
Date: Wed, 1 Mar 2023 12:50:45 +0800 Subject: [PATCH 29/41] chore(release): 0.3.0 --- CHANGELOG.md | 9 +++++++++ package.json | 2 +- 2 files changed, 10 insertions(+), 1 deletion(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index a77538d..719ea88 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -2,6 +2,15 @@ All notable changes to this project will be documented in this file. See [standard-version](https://github.com/conventional-changelog/standard-version) for commit guidelines. +# [0.3.0](/compare/v0.2.0...v0.3.0) (2023-03-01) + + +### ✨ Features + +* **custom**: 添加重大事项通知 a949fe4 + + + # [0.2.0](/compare/v0.1.2...v0.2.0) (2023-03-01) diff --git a/package.json b/package.json index 95babbc..60251a1 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "eoefans-web", - "version": "0.2.0", + "version": "0.3.0", "type": "module", "scripts": { "dev": "vite --config ./config/vite.dev.config.ts", From 0b263a914cce4f3aae899077dfc49958e4ec7298 Mon Sep 17 00:00:00 2001 From: master1lan <278457198@qq.com> Date: Wed, 1 Mar 2023 12:51:03 +0800 Subject: [PATCH 30/41] chore(release): 1.0.0 --- CHANGELOG.md | 4 ++++ package.json | 2 +- 2 files changed, 5 insertions(+), 1 deletion(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 719ea88..6cee00b 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -2,6 +2,10 @@ All notable changes to this project will be documented in this file. See [standard-version](https://github.com/conventional-changelog/standard-version) for commit guidelines. +# [1.0.0](/compare/v0.3.0...v1.0.0) (2023-03-01) + + + # [0.3.0](/compare/v0.2.0...v0.3.0) (2023-03-01) diff --git a/package.json b/package.json index 60251a1..b5aedb9 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "eoefans-web", - "version": "0.3.0", + "version": "1.0.0", "type": "module", "scripts": { "dev": "vite --config ./config/vite.dev.config.ts", From e3e88d283737be0ec0afc4d166f3f41d8eabf0f7 Mon Sep 17 00:00:00 2001 From: master1lan <278457198@qq.com> Date: Wed, 1 Mar 2023 12:59:09 +0800 Subject: [PATCH 31/41] =?UTF-8?q?:lipstick:=20style(custom):=20=E5=88=A0?= =?UTF-8?q?=E9=99=A4=E6=B6=88=E6=81=AF=E7=BA=BF?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/routers/layout/index.tsx | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/routers/layout/index.tsx b/src/routers/layout/index.tsx index 36a53d3..41999c3 100644 --- a/src/routers/layout/index.tsx +++ b/src/routers/layout/index.tsx @@ -23,7 +23,7 @@ export default function Layout() { }, }} > -
+
From e84457920621760f7a9b8e8f195954ce65c9b14b Mon Sep 17 00:00:00 2001 From: master1lan <278457198@qq.com> Date: Wed, 1 Mar 2023 19:50:45 +0800 Subject: [PATCH 32/41] =?UTF-8?q?:lipstick:=20style(custom):=20=E4=BF=AE?= =?UTF-8?q?=E6=94=B9=E4=B8=AD=E9=83=A8=E6=A0=8F=EF=BC=8C=E5=B0=86=E5=AF=BC?= =?UTF-8?q?=E8=88=AA=E6=A0=8F=E6=94=B6=E7=BC=A9=E8=87=B3=E8=9B=9E=E8=9D=93?= =?UTF-8?q?=E5=8F=B3=E8=BE=B9=EF=BC=8Cheader=E6=A0=8F=E5=8F=B3=E8=BE=B9?= =?UTF-8?q?=E5=B0=86=E6=89=BF=E8=BD=BD=E6=9B=B4=E5=A4=9A=E5=86=85=E5=AE=B9?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/routers/layout/header.tsx | 7 +- src/routers/layout/index.tsx | 11 +- src/routers/layout/logo/index.tsx | 116 ++++++++++++++---- src/routers/layout/logo/modal.tsx | 10 +- src/routers/layout/midcontent/index.tsx | 95 -------------- .../layout/midcontent/midcontent.module.less | 5 - src/routers/layout/rightMore/index.tsx | 116 ++++++++++++++++++ src/routers/layout/search/pc/search.tsx | 2 +- src/routers/layout/search/search.module.less | 5 +- src/routers/video/video.module.less | 4 +- 10 files changed, 223 insertions(+), 148 deletions(-) delete mode 100644 src/routers/layout/midcontent/index.tsx delete mode 100644 src/routers/layout/midcontent/midcontent.module.less create mode 100644 src/routers/layout/rightMore/index.tsx diff --git a/src/routers/layout/header.tsx b/src/routers/layout/header.tsx index 44ffed6..891518e 100644 --- a/src/routers/layout/header.tsx +++ b/src/routers/layout/header.tsx @@ -7,6 +7,7 @@ import { changeLoadingCauseByUrl } from "@store/loading"; import { routerNameToLoading } from "@utils/router"; import { styled } from "@mui/material"; import Search from "./search"; +import PCRightMore from "./rightMore/index"; export default function Header() { const dispatch = useAppDispatch(), location = useLocation(); @@ -22,7 +23,7 @@ export default function Header() { const ReactiveHeader = memo(() => { return ( -
+
{/* 手机端 */}
@@ -35,8 +36,8 @@ const ReactiveHeader = memo(() => {
-
- 敬请期待 +
+
diff --git a/src/routers/layout/index.tsx b/src/routers/layout/index.tsx index 41999c3..b979c46 100644 --- a/src/routers/layout/index.tsx +++ b/src/routers/layout/index.tsx @@ -6,7 +6,7 @@ import { selectNavMoreShowed } from "@store/device/index"; import ArrowOutwardIcon from "@mui/icons-material/ArrowOutward"; import { Link } from "@mui/material"; import styles from "./layout.module.less"; -import MidContent from "./midcontent"; +import Header_Nav from "./nav"; export default function Layout() { const showed = useAppSelector(selectNavMoreShowed); return ( @@ -27,7 +27,9 @@ export default function Layout() {
- +
+ +
@@ -50,8 +52,3 @@ export const ImportTantInfo = () => ( ); - -const NavContent = () => { - const isSearchPage = useMatch(`/search`) !== null; - return
{!isSearchPage && }
; -}; diff --git a/src/routers/layout/logo/index.tsx b/src/routers/layout/logo/index.tsx index b14f185..bdf1423 100644 --- a/src/routers/layout/logo/index.tsx +++ b/src/routers/layout/logo/index.tsx @@ -1,10 +1,12 @@ -import { Button, Badge } from "@mui/material"; +import { Button, Badge, Menu, MenuItem } from "@mui/material"; import { useState, useMemo, FC } from "react"; -import { H1, Explain, Yituo } from "./modal"; +import { Explain, Yituo } from "./modal"; import styles from "./logo.module.less"; import { Storage } from "../tools"; import { useScreenSize } from "@components/proview/screenSize"; - +import { Link, useMatch } from "react-router-dom"; +import { RouterList } from "../routernav/index"; +import React from "react"; const QAStorage = new Storage("QAUpdate"); //暂时先这样 const _qa_update_time = `2023-3-1`; @@ -21,36 +23,100 @@ const useCheckQANews = () => { }; export default function LOGO() { + const { lg } = useScreenSize(); + return ( +
+ +
+ {lg && } + {!lg && } +
+
+ ); +} + +const LGRouterListAndQA = () => { + const [anchorEl, setAnchorEl] = React.useState(null), + handleClick = (event: React.MouseEvent) => + setAnchorEl(event.currentTarget), + handleClose = () => setAnchorEl(null); + const open = Boolean(anchorEl); + return ( + <> +
+ + + + + + {RouterList.slice(0, 2).map((item) => ( + + + {item.label + "站"} + + + ))} + +
+ + ); +}; +const QAButton = () => { const [open, set] = useState(false); const [shouldShowNews, handlerReadedNews] = useCheckQANews(); - const handlerClick = () => { + const handlerClick = (event: React.MouseEvent) => { + event.stopPropagation(); set((open) => !open); handlerReadedNews(); }; - const { md } = useScreenSize(); return ( -
- -

- {!md ? `eoefans-web端` : `eoefans`} - + + ); +}; + +const RouterListAndQA = () => { + return ( + <> + + {RouterList.slice(0, 2).map((item) => ( + - QA - - - -

-
+ {item.label + "站"} + + ))} + ); -} +}; const Show_news: FC<{ visible: boolean }> = ({ visible }) => ( void }> = ( ); -export const H1 = styled("h1")(({ theme }) => ({ - fontSize: "24px", - [theme.breakpoints.down("md")]: { - fontSize: "15px", - }, -})); - const QALists: { question: ReactElement; answer: ReactElement }[] = [ { question: <>露早tag为什么不是应援色?, @@ -104,6 +97,7 @@ export const QA = () => ( export const Yituo: FC<{ height: number | string; width: number | string; + children?: ReactElement; }> = ({ height, width }) => ( diff --git a/src/routers/layout/midcontent/index.tsx b/src/routers/layout/midcontent/index.tsx deleted file mode 100644 index 03afbe3..0000000 --- a/src/routers/layout/midcontent/index.tsx +++ /dev/null @@ -1,95 +0,0 @@ -import { Link } from "react-router-dom"; -import { Link as Mlink } from "@mui/material"; -import { RouterList } from "../routernav"; -import { TabProps } from "../routernav/index"; -import HeadNav from "../nav"; -import LaunchIcon from "@mui/icons-material/Launch"; -import styles from "./midcontent.module.less"; -import { Flipped } from "react-flip-toolkit"; -export default function MidContent() { - return ( - <> - {/* 大屏 */} -
- - -
- -
-
- -
- {/* ipad */} - - - ); -} - -const LeftLinks = () => ( -
- {RouterList.map((item, key) => ( - - {item.label} - - ))} -
-); -const GroupLists: TabProps[] = [ - { - label: "露早", - to: "1669777785", - }, - { - label: "虞莫", - to: "1811071010", - }, - { - label: "莞儿", - to: "1875044092", - }, - { - label: "柚恩", - to: "1795147802", - }, - { - label: "米诺", - to: "1778026586", - }, - { - label: "官号", - to: "2018113152", - }, -]; - -const RightLinks = () => ( -
- - {GroupLists.map((item, key) => ( - - {item.label} - - ))} -
-); diff --git a/src/routers/layout/midcontent/midcontent.module.less b/src/routers/layout/midcontent/midcontent.module.less deleted file mode 100644 index dd11fa1..0000000 --- a/src/routers/layout/midcontent/midcontent.module.less +++ /dev/null @@ -1,5 +0,0 @@ -.midcontent { - max-width: 1440px; - margin: 0 auto; - padding: 0 16px; -} \ No newline at end of file diff --git a/src/routers/layout/rightMore/index.tsx b/src/routers/layout/rightMore/index.tsx new file mode 100644 index 0000000..691de3f --- /dev/null +++ b/src/routers/layout/rightMore/index.tsx @@ -0,0 +1,116 @@ +import React, { FC, ReactElement } from "react"; +import MoreVertIcon from "@mui/icons-material/MoreVert"; +import LaunchIcon from "@mui/icons-material/Launch"; +import { Button, Link, Popover } from "@mui/material"; +import { TabProps } from "../routernav"; +export default function PCRightMore() { + const [anchorEl, setAnchorEl] = React.useState( + null + ); + + const handleClick = (event: React.MouseEvent) => { + setAnchorEl(event.currentTarget); + }; + + const handleClose = () => { + setAnchorEl(null); + }; + + const open = Boolean(anchorEl); + return ( + <> +
+ + +
+ 快捷跳转} + > +
+ {GroupLists.map((item, key) => ( + + {item.label} + + + ))} +
+
+ + + 敬请期待 + + +
+
+
+ + ); +} +const GroupLists: TabProps[] = [ + { + label: "露早", + to: "1669777785", + }, + { + label: "虞莫", + to: "1811071010", + }, + { + label: "莞儿", + to: "1875044092", + }, + { + label: "柚恩", + to: "1795147802", + }, + { + label: "米诺", + to: "1778026586", + }, + { + label: "官号", + to: "2018113152", + }, + { + label: "录播组", + to: "3461563583302074", + }, +]; +type PopoverItemProps = { + title: string | ReactElement; + children: ReactElement; +}; +const PopoverItem: FC = (props) => ( +
+

+ {props.title} +

+ {props.children} +
+); diff --git a/src/routers/layout/search/pc/search.tsx b/src/routers/layout/search/pc/search.tsx index 0fe0ada..7c87a4f 100644 --- a/src/routers/layout/search/pc/search.tsx +++ b/src/routers/layout/search/pc/search.tsx @@ -66,7 +66,7 @@ const SearchButton: FC<{ onSubmit?: () => void }> = ({ onSubmit }) => { type='submit' className={`${ styles["search-button"] - } bg-red-700 transition-all duration-250 ${ + } bg-red-700 transition-all duration-250 mr-2 ${ focused ? "p-3 text-2xl" : "p-2 text-xl" }`} onClick={onSubmit} diff --git a/src/routers/layout/search/search.module.less b/src/routers/layout/search/search.module.less index 9899bc6..a92fb52 100644 --- a/src/routers/layout/search/search.module.less +++ b/src/routers/layout/search/search.module.less @@ -20,10 +20,11 @@ .search-button { border-radius: 40px; cursor: pointer; - // padding: 8px; color: white; position: relative; - margin: auto; + // margin: auto; + margin-top: auto; + margin-bottom: auto; display: flex; justify-content: center; align-items: center; diff --git a/src/routers/video/video.module.less b/src/routers/video/video.module.less index c2418cc..bfce141 100644 --- a/src/routers/video/video.module.less +++ b/src/routers/video/video.module.less @@ -23,10 +23,10 @@ } img+div { - padding: 16px; + padding: 8px; span { - font-size: 16px !important; + font-size: 14px !important; } } } From 6af984c7143fc6e4341986432ba1bc6d378798a4 Mon Sep 17 00:00:00 2001 From: master1lan <278457198@qq.com> Date: Thu, 2 Mar 2023 12:08:28 +0800 Subject: [PATCH 33/41] =?UTF-8?q?:lipstick:=20style(custom):=20=E4=BF=AE?= =?UTF-8?q?=E6=94=B9pc=E7=AB=AF=E9=A1=B6=E9=83=A8=E6=A0=B7=E5=BC=8F?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit ISSUES CLOSED: #29 --- src/routers/index.tsx | 4 ++ src/routers/layout/header.tsx | 2 +- src/routers/layout/index.tsx | 2 +- src/routers/layout/logo/index.tsx | 46 +++++++++++-------- src/routers/layout/nav/index.tsx | 62 +++++++++++++------------- src/routers/layout/rightMore/index.tsx | 7 ++- src/routers/layout/routernav/index.tsx | 8 +++- 7 files changed, 76 insertions(+), 55 deletions(-) diff --git a/src/routers/index.tsx b/src/routers/index.tsx index 5d66e97..fcd2c18 100644 --- a/src/routers/index.tsx +++ b/src/routers/index.tsx @@ -1,3 +1,7 @@ +/** + * 此页面作废 + */ + export default function Index() { return

这里是首页

; } diff --git a/src/routers/layout/header.tsx b/src/routers/layout/header.tsx index 891518e..c7c1dc3 100644 --- a/src/routers/layout/header.tsx +++ b/src/routers/layout/header.tsx @@ -25,7 +25,7 @@ const ReactiveHeader = memo(() => { return (
{/* 手机端 */} -
+
{/* pc端和平板端header部 */} diff --git a/src/routers/layout/index.tsx b/src/routers/layout/index.tsx index b979c46..502d5e1 100644 --- a/src/routers/layout/index.tsx +++ b/src/routers/layout/index.tsx @@ -27,7 +27,7 @@ export default function Layout() {
-
+
diff --git a/src/routers/layout/logo/index.tsx b/src/routers/layout/logo/index.tsx index bdf1423..3e50378 100644 --- a/src/routers/layout/logo/index.tsx +++ b/src/routers/layout/logo/index.tsx @@ -1,4 +1,5 @@ import { Button, Badge, Menu, MenuItem } from "@mui/material"; +import HelpOutlineIcon from "@mui/icons-material/HelpOutline"; import { useState, useMemo, FC } from "react"; import { Explain, Yituo } from "./modal"; import styles from "./logo.module.less"; @@ -50,6 +51,7 @@ const LGRouterListAndQA = () => { aria-haspopup='true' aria-expanded={open ? "true" : undefined} onClick={handleClick} + className='hover:bg-gray-200' > 导航 @@ -60,21 +62,20 @@ const LGRouterListAndQA = () => { onClose={handleClose} elevation={2} > - - - {RouterList.slice(0, 2).map((item) => ( - - {item.label + "站"} - + + {item.label} + + ))} @@ -82,7 +83,7 @@ const LGRouterListAndQA = () => { ); }; -const QAButton = () => { +export const AboutUSButton = () => { const [open, set] = useState(false); const [shouldShowNews, handlerReadedNews] = useCheckQANews(); const handlerClick = (event: React.MouseEvent) => { @@ -92,8 +93,13 @@ const QAButton = () => { }; return ( <> - @@ -103,18 +109,20 @@ const QAButton = () => { const RouterListAndQA = () => { return ( - <> - +
{RouterList.slice(0, 2).map((item) => ( - - {item.label + "站"} - + + {item.label} + + ))} - +
); }; diff --git a/src/routers/layout/nav/index.tsx b/src/routers/layout/nav/index.tsx index 07fe43c..a4caea0 100644 --- a/src/routers/layout/nav/index.tsx +++ b/src/routers/layout/nav/index.tsx @@ -119,7 +119,7 @@ export default function Header_Nav(props: HeaderNavType) { = memo( dispatch(addTagFunc(props)); } }; - //@ts-ignore - const color = nameToColor[props.query] || "info"; + + const styleColor = handleSetSpecialProps( + props.query, + "rgb(55 65 81)", + "rgb(96 165 250)", + clicked + ); return ( - ); - return ( - + /> ); } ); +const handleSetSpecialProps = ( + query: string, + defaultColor: string, + activeColor: string, + clicked: boolean +) => { + //@ts-ignore + const color = nameToColor[query] || defaultColor, + renderColor = (activecolor: string) => (clicked ? activecolor : color), + styleColor = color === defaultColor ? renderColor(activeColor) : color; + return styleColor; +}; + const nameToColor = { - 露早: "luzaoRed", - 柚恩: "youen", - 莞儿: "waner", - 米诺: "minuo", - 虞莫: "yumo", + 露早: "#A0191D", + 柚恩: "#EB6346", + 莞儿: "#1eafe4", + 米诺: "#f068B0", + 虞莫: "#b77fdd", }; diff --git a/src/routers/layout/rightMore/index.tsx b/src/routers/layout/rightMore/index.tsx index 691de3f..208ca36 100644 --- a/src/routers/layout/rightMore/index.tsx +++ b/src/routers/layout/rightMore/index.tsx @@ -3,6 +3,7 @@ import MoreVertIcon from "@mui/icons-material/MoreVert"; import LaunchIcon from "@mui/icons-material/Launch"; import { Button, Link, Popover } from "@mui/material"; import { TabProps } from "../routernav"; +import { AboutUSButton } from "../logo"; export default function PCRightMore() { const [anchorEl, setAnchorEl] = React.useState( null @@ -18,12 +19,14 @@ export default function PCRightMore() { const open = Boolean(anchorEl); return ( - <> +
+
@@ -69,7 +72,7 @@ export default function PCRightMore() {
- +
); } const GroupLists: TabProps[] = [ diff --git a/src/routers/layout/routernav/index.tsx b/src/routers/layout/routernav/index.tsx index d2e0bb6..df9dcb5 100644 --- a/src/routers/layout/routernav/index.tsx +++ b/src/routers/layout/routernav/index.tsx @@ -1,17 +1,21 @@ import { Drawer } from "@mui/material"; -import { useState, FC } from "react"; +import PhotoIcon from "@mui/icons-material/Photo"; +import VideoLibraryIcon from "@mui/icons-material/VideoLibrary"; +import { useState, FC, ReactElement } from "react"; import { Link, useMatch } from "react-router-dom"; import CloseIcon from "@mui/icons-material/Close"; import Header_Nav from "../nav"; import { ImportTantInfo } from ".."; -export const RouterList: TabProps[] = [ +export const RouterList: (TabProps & { startICon: ReactElement })[] = [ { label: "视频", to: "/video", + startICon: , }, { label: "图片", to: "/photo", + startICon: , }, ]; From 7ef3f1381bc3af243a06de83640a57ac8b438138 Mon Sep 17 00:00:00 2001 From: master1lan <278457198@qq.com> Date: Thu, 2 Mar 2023 13:26:53 +0800 Subject: [PATCH 34/41] =?UTF-8?q?:wheelchair:=20perf(custom):=20=E6=8F=90?= =?UTF-8?q?=E5=8F=96=E5=85=AC=E5=85=B1=E7=BB=84=E4=BB=B6=E5=92=8Chooks?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/routers/layout/logo/index.tsx | 2 +- src/routers/layout/rightMore/index.tsx | 16 ++---- src/routers/layout/routernav/index.tsx | 4 +- src/routers/layout/search/pc/modal.tsx | 1 + src/routers/layout/search/pc/search.tsx | 69 ++++++++++++++----------- src/utils/hooks/popover.ts | 14 +++++ 6 files changed, 61 insertions(+), 45 deletions(-) create mode 100644 src/routers/layout/search/pc/modal.tsx create mode 100644 src/utils/hooks/popover.ts diff --git a/src/routers/layout/logo/index.tsx b/src/routers/layout/logo/index.tsx index 3e50378..903ffb7 100644 --- a/src/routers/layout/logo/index.tsx +++ b/src/routers/layout/logo/index.tsx @@ -101,8 +101,8 @@ export const AboutUSButton = () => { > 关于本站 - void} /> + void} /> ); }; diff --git a/src/routers/layout/rightMore/index.tsx b/src/routers/layout/rightMore/index.tsx index 208ca36..9d8991c 100644 --- a/src/routers/layout/rightMore/index.tsx +++ b/src/routers/layout/rightMore/index.tsx @@ -4,20 +4,10 @@ import LaunchIcon from "@mui/icons-material/Launch"; import { Button, Link, Popover } from "@mui/material"; import { TabProps } from "../routernav"; import { AboutUSButton } from "../logo"; +import { usePopoverConfig } from "@utils/hooks/popover"; export default function PCRightMore() { - const [anchorEl, setAnchorEl] = React.useState( - null - ); - - const handleClick = (event: React.MouseEvent) => { - setAnchorEl(event.currentTarget); - }; - - const handleClose = () => { - setAnchorEl(null); - }; - - const open = Boolean(anchorEl); + const { open, anchorEl, handleClick, handleClose } = + usePopoverConfig(); return (
diff --git a/src/routers/layout/routernav/index.tsx b/src/routers/layout/routernav/index.tsx index df9dcb5..f4e672c 100644 --- a/src/routers/layout/routernav/index.tsx +++ b/src/routers/layout/routernav/index.tsx @@ -10,12 +10,12 @@ export const RouterList: (TabProps & { startICon: ReactElement })[] = [ { label: "视频", to: "/video", - startICon: , + startICon: , }, { label: "图片", to: "/photo", - startICon: , + startICon: , }, ]; diff --git a/src/routers/layout/search/pc/modal.tsx b/src/routers/layout/search/pc/modal.tsx new file mode 100644 index 0000000..b3ad8b7 --- /dev/null +++ b/src/routers/layout/search/pc/modal.tsx @@ -0,0 +1 @@ +export default function PCSearchAdvanceLikeModal() {} diff --git a/src/routers/layout/search/pc/search.tsx b/src/routers/layout/search/pc/search.tsx index 7c87a4f..bf3129e 100644 --- a/src/routers/layout/search/pc/search.tsx +++ b/src/routers/layout/search/pc/search.tsx @@ -7,7 +7,6 @@ import { useBackRef, useSearchMode } from "./hooks"; import { useNavigate } from "react-router-dom"; import { FC, forwardRef, useRef } from "react"; export default function Search() { - const [tag] = useURLParams(["tag"]); const inputRef = useRef(null); const { focused, bind } = useSearchFocus(); const { onFocus, onBlur } = bind; @@ -15,7 +14,6 @@ export default function Search() { const navigate = useNavigate(), handlerSubmit = () => { const value = inputRef.current!.value; - console.log(`current input value ${value}`); navigate(`/search?tag=${value}`); onBlur(); }; @@ -35,22 +33,7 @@ export default function Search() { } duration-300 relative`} > {searchMode === "搜索tag" && ( - <> - { - if (event.key === "Enter") { - handlerSubmit(); - } - }} - /> - - + )} {searchMode === "搜索更多" && }
@@ -62,20 +45,48 @@ export default function Search() { const SearchButton: FC<{ onSubmit?: () => void }> = ({ onSubmit }) => { const { focused } = useSearchFocus(); return ( - + <> + + ); }; +//普通搜索 +const NormalSearch = forwardRef void }>( + function Search(props, ref) { + const [tag] = useURLParams(["tag"]); + return ( + <> + { + if (event.key === "Enter") { + props.onFinish(); + } + }} + /> + + + ); + } +); + +//高级搜索 const AdvanceSearch = forwardRef(function Advance(props, ref) { const [tag, name] = useURLParams(["tag", "name"]); const { focused, bind } = useSearchFocus(), diff --git a/src/utils/hooks/popover.ts b/src/utils/hooks/popover.ts new file mode 100644 index 0000000..46a054c --- /dev/null +++ b/src/utils/hooks/popover.ts @@ -0,0 +1,14 @@ +import React from "react"; + +export function usePopoverConfig() { + const [anchorEl, setAnchorEl] = React.useState(null); + const handleClick = (event: React.MouseEvent) => { + //@ts-ignore + setAnchorEl(event.currentTarget); + }, + handleClose = () => { + setAnchorEl(null); + }; + const open = Boolean(anchorEl); + return { anchorEl, handleClick, handleClose, open }; +} From e6b7f57785990ead5c1eab66c00cbf3b1ffaf63c Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <9+dependabot[bot]@users.noreply.vlink.dev> Date: Fri, 3 Mar 2023 01:11:18 +0000 Subject: [PATCH 35/41] chore(deps): bump @mui/lab from 5.0.0-alpha.119 to 5.0.0-alpha.121 Bumps [@mui/lab](https://github.com/mui/material-ui/tree/HEAD/packages/mui-lab) from 5.0.0-alpha.119 to 5.0.0-alpha.121. - [Release notes](https://github.com/mui/material-ui/releases) - [Changelog](https://github.com/mui/material-ui/blob/master/CHANGELOG.md) - [Commits](https://github.com/mui/material-ui/commits/HEAD/packages/mui-lab) --- updated-dependencies: - dependency-name: "@mui/lab" dependency-type: direct:production update-type: version-update:semver-patch ... Signed-off-by: dependabot[bot] --- package.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/package.json b/package.json index b5aedb9..b82f1a0 100644 --- a/package.json +++ b/package.json @@ -26,7 +26,7 @@ "@emotion/react": "^11.10.6", "@emotion/styled": "^11.10.6", "@mui/icons-material": "^5.11.9", - "@mui/lab": "5.0.0-alpha.119", + "@mui/lab": "5.0.0-alpha.121", "@mui/material": "^5.11.9", "@reduxjs/toolkit": "^1.9.2", "@sentry/react": "^7.37.2", From 4a0253587f842f84d031bf3727f541fb26a302ca Mon Sep 17 00:00:00 2001 From: master1lan <278457198@qq.com> Date: Fri, 3 Mar 2023 15:42:27 +0800 Subject: [PATCH 36/41] =?UTF-8?q?:bug:=20fix(custom):=20=E6=B7=BB=E5=8A=A0?= =?UTF-8?q?seo=E4=BC=98=E5=8C=96?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- index.html | 1 + pnpm-lock.yaml | 1149 +++++++++++++++--------------- src/components/image/index.tsx | 4 +- src/routers/photo/item/index.tsx | 1 + src/routers/video/item/index.tsx | 1 + 5 files changed, 569 insertions(+), 587 deletions(-) diff --git a/index.html b/index.html index a2966e7..9ef6ac0 100644 --- a/index.html +++ b/index.html @@ -3,6 +3,7 @@ + diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 67377af..84579ba 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -9,7 +9,7 @@ specifiers: '@emotion/react': ^11.10.6 '@emotion/styled': ^11.10.6 '@mui/icons-material': ^5.11.9 - '@mui/lab': 5.0.0-alpha.119 + '@mui/lab': 5.0.0-alpha.121 '@mui/material': ^5.11.9 '@reduxjs/toolkit': ^1.9.2 '@sentry/react': ^7.37.2 @@ -60,19 +60,19 @@ specifiers: vite-plugin-sentry: ^1.1.7 dependencies: - '@dnd-kit/core': 6.0.7_biqbaboplfbrettd7655fr4n2y - '@dnd-kit/modifiers': 6.0.1_pmudlfv2z3i7vvlookxjkeidxe - '@dnd-kit/sortable': 7.0.2_pmudlfv2z3i7vvlookxjkeidxe + '@dnd-kit/core': 6.0.8_biqbaboplfbrettd7655fr4n2y + '@dnd-kit/modifiers': 6.0.1_52scne4zmdeyjh2otzkgz2xfvu + '@dnd-kit/sortable': 7.0.2_52scne4zmdeyjh2otzkgz2xfvu '@dnd-kit/utilities': 3.2.1_react@18.2.0 '@emotion/react': 11.10.6_pmekkgnqduwlme35zpnqhenc34 '@emotion/styled': 11.10.6_oouaibmszuch5k64ms7uxp2aia - '@mui/icons-material': 5.11.9_ofpk46txu7v2f5mzrtv4xsczka - '@mui/lab': 5.0.0-alpha.119_oc7w4sqyc6xrc5vjlyub4opq2u - '@mui/material': 5.11.9_xqeqsl5kvjjtyxwyi3jhw3yuli - '@reduxjs/toolkit': 1.9.2_k4ae6lp43ej6mezo3ztvx6pykq - '@sentry/react': 7.38.0_react@18.2.0 - '@sentry/tracing': 7.38.0 - axios: 1.3.3 + '@mui/icons-material': 5.11.11_h5fh5ntwxtyr677wxvzgewjsma + '@mui/lab': 5.0.0-alpha.121_gyxidxyv3rk32gbfkthfb2r3tm + '@mui/material': 5.11.11_xqeqsl5kvjjtyxwyi3jhw3yuli + '@reduxjs/toolkit': 1.9.3_k4ae6lp43ej6mezo3ztvx6pykq + '@sentry/react': 7.40.0_react@18.2.0 + '@sentry/tracing': 7.40.0 + axios: 1.3.4 dayjs: 1.11.7 intersection-observer: 0.12.2 json-bigint: 1.0.0 @@ -84,21 +84,21 @@ dependencies: react: 18.2.0 react-dom: 18.2.0_react@18.2.0 react-flip-toolkit: 7.0.17_biqbaboplfbrettd7655fr4n2y - react-intersection-observer: 9.4.2_react@18.2.0 + react-intersection-observer: 9.4.3_react@18.2.0 react-photo-view: 1.2.3_biqbaboplfbrettd7655fr4n2y react-redux: 8.0.5_3xleytyzprlgycb2ded54tx72i - react-router-dom: 6.8.1_biqbaboplfbrettd7655fr4n2y + react-router-dom: 6.8.2_biqbaboplfbrettd7655fr4n2y react-use: 17.4.0_biqbaboplfbrettd7655fr4n2y devDependencies: - '@babel/core': 7.20.12 + '@babel/core': 7.21.0 '@types/imagesloaded': 4.1.2 '@types/json-bigint': 1.0.1 - '@types/node': 18.14.0 + '@types/node': 18.14.5 '@types/react': 18.0.28 '@types/react-dom': 18.0.11 '@types/react-lazy-load-image-component': 1.5.2 - '@vitejs/plugin-legacy': 4.0.1_terser@5.16.4+vite@4.1.4 + '@vitejs/plugin-legacy': 4.0.1_terser@5.16.5+vite@4.1.4 '@vitejs/plugin-react-swc': 3.2.0_vite@4.1.4 autoprefixer: 10.4.13_postcss@8.4.21 commitizen: 4.3.0 @@ -113,9 +113,9 @@ devDependencies: rollup-plugin-visualizer: 5.9.0 standard-version: 9.5.0 tailwindcss: 3.2.7_postcss@8.4.21 - terser: 5.16.4 + terser: 5.16.5 typescript: 4.9.5 - vite: 4.1.4_ve7l6t5koctut52smtaue47xhi + vite: 4.1.4_pm537uckvxmam7hzwfdgs6yzna vite-plugin-compression: 0.5.1_vite@4.1.4 vite-plugin-html: 3.2.0_vite@4.1.4 vite-plugin-sentry: 1.1.7_vite@4.1.4 @@ -136,25 +136,25 @@ packages: dependencies: '@babel/highlight': 7.18.6 - /@babel/compat-data/7.20.14: - resolution: {integrity: sha512-0YpKHD6ImkWMEINCyDAD0HLLUH/lPCefG8ld9it8DJB2wnApraKuhgYTvTY1z7UFIfBTGy5LwncZ+5HWWGbhFw==} + /@babel/compat-data/7.21.0: + resolution: {integrity: sha512-gMuZsmsgxk/ENC3O/fRw5QY8A9/uxQbbCEypnLIiYYc/qVJtEV7ouxC3EllIIwNzMqAQee5tanFabWsUOutS7g==} engines: {node: '>=6.9.0'} dev: true - /@babel/core/7.20.12: - resolution: {integrity: sha512-XsMfHovsUYHFMdrIHkZphTN/2Hzzi78R08NuHfDBehym2VsPDL6Zn/JAD/JQdnRvbSsbQc4mVaU1m6JgtTEElg==} + /@babel/core/7.21.0: + resolution: {integrity: sha512-PuxUbxcW6ZYe656yL3EAhpy7qXKq0DmYsrJLpbB8XrsCP9Nm+XCg9XFMb5vIDliPD7+U/+M+QJlH17XOcB7eXA==} engines: {node: '>=6.9.0'} dependencies: '@ampproject/remapping': 2.2.0 '@babel/code-frame': 7.18.6 - '@babel/generator': 7.20.14 - '@babel/helper-compilation-targets': 7.20.7_@babel+core@7.20.12 - '@babel/helper-module-transforms': 7.20.11 - '@babel/helpers': 7.20.13 - '@babel/parser': 7.20.15 + '@babel/generator': 7.21.1 + '@babel/helper-compilation-targets': 7.20.7_@babel+core@7.21.0 + '@babel/helper-module-transforms': 7.21.2 + '@babel/helpers': 7.21.0 + '@babel/parser': 7.21.2 '@babel/template': 7.20.7 - '@babel/traverse': 7.20.13 - '@babel/types': 7.20.7 + '@babel/traverse': 7.21.2 + '@babel/types': 7.21.2 convert-source-map: 1.9.0 debug: 4.3.4 gensync: 1.0.0-beta.2 @@ -164,12 +164,13 @@ packages: - supports-color dev: true - /@babel/generator/7.20.14: - resolution: {integrity: sha512-AEmuXHdcD3A52HHXxaTmYlb8q/xMEhoRP67B3T4Oq7lbmSoqroMZzjnGj3+i1io3pdnF8iBYVu4Ilj+c4hBxYg==} + /@babel/generator/7.21.1: + resolution: {integrity: sha512-1lT45bAYlQhFn/BHivJs43AiW2rg3/UbLyShGfF3C0KmHvO5fSghWd5kBJy30kpRRucGzXStvnnCFniCR2kXAA==} engines: {node: '>=6.9.0'} dependencies: - '@babel/types': 7.20.7 + '@babel/types': 7.21.2 '@jridgewell/gen-mapping': 0.3.2 + '@jridgewell/trace-mapping': 0.3.17 jsesc: 2.5.2 dev: true @@ -177,7 +178,7 @@ packages: resolution: {integrity: sha512-duORpUiYrEpzKIop6iNbjnwKLAKnJ47csTyRACyEmWj0QdUrm5aqNJGHSSEQSUAvNW0ojX0dOmK9dZduvkfeXA==} engines: {node: '>=6.9.0'} dependencies: - '@babel/types': 7.20.7 + '@babel/types': 7.21.2 dev: true /@babel/helper-builder-binary-assignment-operator-visitor/7.18.9: @@ -185,34 +186,34 @@ packages: engines: {node: '>=6.9.0'} dependencies: '@babel/helper-explode-assignable-expression': 7.18.6 - '@babel/types': 7.20.7 + '@babel/types': 7.21.2 dev: true - /@babel/helper-compilation-targets/7.20.7_@babel+core@7.20.12: + /@babel/helper-compilation-targets/7.20.7_@babel+core@7.21.0: resolution: {integrity: sha512-4tGORmfQcrc+bvrjb5y3dG9Mx1IOZjsHqQVUz7XCNHO+iTmqxWnVg3KRygjGmpRLJGdQSKuvFinbIb0CnZwHAQ==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0 dependencies: - '@babel/compat-data': 7.20.14 - '@babel/core': 7.20.12 - '@babel/helper-validator-option': 7.18.6 + '@babel/compat-data': 7.21.0 + '@babel/core': 7.21.0 + '@babel/helper-validator-option': 7.21.0 browserslist: 4.21.5 lru-cache: 5.1.1 semver: 6.3.0 dev: true - /@babel/helper-create-class-features-plugin/7.20.12_@babel+core@7.20.12: - resolution: {integrity: sha512-9OunRkbT0JQcednL0UFvbfXpAsUXiGjUk0a7sN8fUXX7Mue79cUSMjHGDRRi/Vz9vYlpIhLV5fMD5dKoMhhsNQ==} + /@babel/helper-create-class-features-plugin/7.21.0_@babel+core@7.21.0: + resolution: {integrity: sha512-Q8wNiMIdwsv5la5SPxNYzzkPnjgC0Sy0i7jLkVOCdllu/xcVNkr3TeZzbHBJrj+XXRqzX5uCyCoV9eu6xUG7KQ==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0 dependencies: - '@babel/core': 7.20.12 + '@babel/core': 7.21.0 '@babel/helper-annotate-as-pure': 7.18.6 '@babel/helper-environment-visitor': 7.18.9 - '@babel/helper-function-name': 7.19.0 - '@babel/helper-member-expression-to-functions': 7.20.7 + '@babel/helper-function-name': 7.21.0 + '@babel/helper-member-expression-to-functions': 7.21.0 '@babel/helper-optimise-call-expression': 7.18.6 '@babel/helper-replace-supers': 7.20.7 '@babel/helper-skip-transparent-expression-wrappers': 7.20.0 @@ -221,24 +222,24 @@ packages: - supports-color dev: true - /@babel/helper-create-regexp-features-plugin/7.20.5_@babel+core@7.20.12: - resolution: {integrity: sha512-m68B1lkg3XDGX5yCvGO0kPx3v9WIYLnzjKfPcQiwntEQa5ZeRkPmo2X/ISJc8qxWGfwUr+kvZAeEzAwLec2r2w==} + /@babel/helper-create-regexp-features-plugin/7.21.0_@babel+core@7.21.0: + resolution: {integrity: sha512-N+LaFW/auRSWdx7SHD/HiARwXQju1vXTW4fKr4u5SgBUTm51OKEjKgj+cs00ggW3kEvNqwErnlwuq7Y3xBe4eg==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0 dependencies: - '@babel/core': 7.20.12 + '@babel/core': 7.21.0 '@babel/helper-annotate-as-pure': 7.18.6 regexpu-core: 5.3.1 dev: true - /@babel/helper-define-polyfill-provider/0.3.3_@babel+core@7.20.12: + /@babel/helper-define-polyfill-provider/0.3.3_@babel+core@7.21.0: resolution: {integrity: sha512-z5aQKU4IzbqCC1XH0nAqfsFLMVSo22SBKUc0BxGrLkolTdPTructy0ToNnlO2zA4j9Q/7pjMZf0DSY+DSTYzww==} peerDependencies: '@babel/core': ^7.4.0-0 dependencies: - '@babel/core': 7.20.12 - '@babel/helper-compilation-targets': 7.20.7_@babel+core@7.20.12 + '@babel/core': 7.21.0 + '@babel/helper-compilation-targets': 7.20.7_@babel+core@7.21.0 '@babel/helper-plugin-utils': 7.20.2 debug: 4.3.4 lodash.debounce: 4.0.8 @@ -257,39 +258,39 @@ packages: resolution: {integrity: sha512-eyAYAsQmB80jNfg4baAtLeWAQHfHFiR483rzFK+BhETlGZaQC9bsfrugfXDCbRHLQbIA7U5NxhhOxN7p/dWIcg==} engines: {node: '>=6.9.0'} dependencies: - '@babel/types': 7.20.7 + '@babel/types': 7.21.2 dev: true - /@babel/helper-function-name/7.19.0: - resolution: {integrity: sha512-WAwHBINyrpqywkUH0nTnNgI5ina5TFn85HKS0pbPDfxFfhyR/aNQEn4hGi1P1JyT//I0t4OgXUlofzWILRvS5w==} + /@babel/helper-function-name/7.21.0: + resolution: {integrity: sha512-HfK1aMRanKHpxemaY2gqBmL04iAPOPRj7DxtNbiDOrJK+gdwkiNRVpCpUJYbUT+aZyemKN8brqTOxzCaG6ExRg==} engines: {node: '>=6.9.0'} dependencies: '@babel/template': 7.20.7 - '@babel/types': 7.20.7 + '@babel/types': 7.21.2 dev: true /@babel/helper-hoist-variables/7.18.6: resolution: {integrity: sha512-UlJQPkFqFULIcyW5sbzgbkxn2FKRgwWiRexcuaR8RNJRy8+LLveqPjwZV/bwrLZCN0eUHD/x8D0heK1ozuoo6Q==} engines: {node: '>=6.9.0'} dependencies: - '@babel/types': 7.20.7 + '@babel/types': 7.21.2 dev: true - /@babel/helper-member-expression-to-functions/7.20.7: - resolution: {integrity: sha512-9J0CxJLq315fEdi4s7xK5TQaNYjZw+nDVpVqr1axNGKzdrdwYBD5b4uKv3n75aABG0rCCTK8Im8Ww7eYfMrZgw==} + /@babel/helper-member-expression-to-functions/7.21.0: + resolution: {integrity: sha512-Muu8cdZwNN6mRRNG6lAYErJ5X3bRevgYR2O8wN0yn7jJSnGDu6eG59RfT29JHxGUovyfrh6Pj0XzmR7drNVL3Q==} engines: {node: '>=6.9.0'} dependencies: - '@babel/types': 7.20.7 + '@babel/types': 7.21.2 dev: true /@babel/helper-module-imports/7.18.6: resolution: {integrity: sha512-0NFvs3VkuSYbFi1x2Vd6tKrywq+z/cLeYC/RJNFrIX/30Bf5aiGYbtvGXolEktzJH8o5E5KJ3tT+nkxuuZFVlA==} engines: {node: '>=6.9.0'} dependencies: - '@babel/types': 7.20.7 + '@babel/types': 7.21.2 - /@babel/helper-module-transforms/7.20.11: - resolution: {integrity: sha512-uRy78kN4psmji1s2QtbtcCSaj/LILFDp0f/ymhpQH5QY3nljUZCaNWz9X1dEj/8MBdBEFECs7yRhKn8i7NjZgg==} + /@babel/helper-module-transforms/7.21.2: + resolution: {integrity: sha512-79yj2AR4U/Oqq/WOV7Lx6hUjau1Zfo4cI+JLAVYeMV5XIlbOhmjEk5ulbTc9fMpmlojzZHkUUxAiK+UKn+hNQQ==} engines: {node: '>=6.9.0'} dependencies: '@babel/helper-environment-visitor': 7.18.9 @@ -298,8 +299,8 @@ packages: '@babel/helper-split-export-declaration': 7.18.6 '@babel/helper-validator-identifier': 7.19.1 '@babel/template': 7.20.7 - '@babel/traverse': 7.20.13 - '@babel/types': 7.20.7 + '@babel/traverse': 7.21.2 + '@babel/types': 7.21.2 transitivePeerDependencies: - supports-color dev: true @@ -308,7 +309,7 @@ packages: resolution: {integrity: sha512-HP59oD9/fEHQkdcbgFCnbmgH5vIQTJbxh2yf+CdM89/glUNnuzr87Q8GIjGEnOktTROemO0Pe0iPAYbqZuOUiA==} engines: {node: '>=6.9.0'} dependencies: - '@babel/types': 7.20.7 + '@babel/types': 7.21.2 dev: true /@babel/helper-plugin-utils/7.20.2: @@ -316,17 +317,17 @@ packages: engines: {node: '>=6.9.0'} dev: true - /@babel/helper-remap-async-to-generator/7.18.9_@babel+core@7.20.12: + /@babel/helper-remap-async-to-generator/7.18.9_@babel+core@7.21.0: resolution: {integrity: sha512-dI7q50YKd8BAv3VEfgg7PS7yD3Rtbi2J1XMXaalXO0W0164hYLnh8zpjRS0mte9MfVp/tltvr/cfdXPvJr1opA==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0 dependencies: - '@babel/core': 7.20.12 + '@babel/core': 7.21.0 '@babel/helper-annotate-as-pure': 7.18.6 '@babel/helper-environment-visitor': 7.18.9 '@babel/helper-wrap-function': 7.20.5 - '@babel/types': 7.20.7 + '@babel/types': 7.21.2 transitivePeerDependencies: - supports-color dev: true @@ -336,11 +337,11 @@ packages: engines: {node: '>=6.9.0'} dependencies: '@babel/helper-environment-visitor': 7.18.9 - '@babel/helper-member-expression-to-functions': 7.20.7 + '@babel/helper-member-expression-to-functions': 7.21.0 '@babel/helper-optimise-call-expression': 7.18.6 '@babel/template': 7.20.7 - '@babel/traverse': 7.20.13 - '@babel/types': 7.20.7 + '@babel/traverse': 7.21.2 + '@babel/types': 7.21.2 transitivePeerDependencies: - supports-color dev: true @@ -349,21 +350,21 @@ packages: resolution: {integrity: sha512-+0woI/WPq59IrqDYbVGfshjT5Dmk/nnbdpcF8SnMhhXObpTq2KNBdLFRFrkVdbDOyUmHBCxzm5FHV1rACIkIbA==} engines: {node: '>=6.9.0'} dependencies: - '@babel/types': 7.20.7 + '@babel/types': 7.21.2 dev: true /@babel/helper-skip-transparent-expression-wrappers/7.20.0: resolution: {integrity: sha512-5y1JYeNKfvnT8sZcK9DVRtpTbGiomYIHviSP3OQWmDPU3DeH4a1ZlT/N2lyQ5P8egjcRaT/Y9aNqUxK0WsnIIg==} engines: {node: '>=6.9.0'} dependencies: - '@babel/types': 7.20.7 + '@babel/types': 7.21.2 dev: true /@babel/helper-split-export-declaration/7.18.6: resolution: {integrity: sha512-bde1etTx6ZyTmobl9LLMMQsaizFVZrquTEHOqKeQESMKo4PlObf+8+JA25ZsIpZhT/WEd39+vOdLXAFG/nELpA==} engines: {node: '>=6.9.0'} dependencies: - '@babel/types': 7.20.7 + '@babel/types': 7.21.2 dev: true /@babel/helper-string-parser/7.19.4: @@ -374,8 +375,8 @@ packages: resolution: {integrity: sha512-awrNfaMtnHUr653GgGEs++LlAvW6w+DcPrOliSMXWCKo597CwL5Acf/wWdNkf/tfEQE3mjkeD1YOVZOUV/od1w==} engines: {node: '>=6.9.0'} - /@babel/helper-validator-option/7.18.6: - resolution: {integrity: sha512-XO7gESt5ouv/LRJdrVjkShckw6STTaB7l9BrpBaAHDeF5YZT+01PCwmR0SJHnkW6i8OwW/EVWRShfi4j2x+KQw==} + /@babel/helper-validator-option/7.21.0: + resolution: {integrity: sha512-rmL/B8/f0mKS2baE9ZpyTcTavvEuWhTTW8amjzXNvYG4AwBsqTLikfXsEofsJEfKHf+HQVQbFOHy6o+4cnC/fQ==} engines: {node: '>=6.9.0'} dev: true @@ -383,21 +384,21 @@ packages: resolution: {integrity: sha512-bYMxIWK5mh+TgXGVqAtnu5Yn1un+v8DDZtqyzKRLUzrh70Eal2O3aZ7aPYiMADO4uKlkzOiRiZ6GX5q3qxvW9Q==} engines: {node: '>=6.9.0'} dependencies: - '@babel/helper-function-name': 7.19.0 + '@babel/helper-function-name': 7.21.0 '@babel/template': 7.20.7 - '@babel/traverse': 7.20.13 - '@babel/types': 7.20.7 + '@babel/traverse': 7.21.2 + '@babel/types': 7.21.2 transitivePeerDependencies: - supports-color dev: true - /@babel/helpers/7.20.13: - resolution: {integrity: sha512-nzJ0DWCL3gB5RCXbUO3KIMMsBY2Eqbx8mBpKGE/02PgyRQFcPQLbkQ1vyy596mZLaP+dAfD+R4ckASzNVmW3jg==} + /@babel/helpers/7.21.0: + resolution: {integrity: sha512-XXve0CBtOW0pd7MRzzmoyuSj0e3SEzj8pgyFxnTT1NJZL38BD1MK7yYrm8yefRPIDvNNe14xR4FdbHwpInD4rA==} engines: {node: '>=6.9.0'} dependencies: '@babel/template': 7.20.7 - '@babel/traverse': 7.20.13 - '@babel/types': 7.20.7 + '@babel/traverse': 7.21.2 + '@babel/types': 7.21.2 transitivePeerDependencies: - supports-color dev: true @@ -410,414 +411,414 @@ packages: chalk: 2.4.2 js-tokens: 4.0.0 - /@babel/parser/7.20.15: - resolution: {integrity: sha512-DI4a1oZuf8wC+oAJA9RW6ga3Zbe8RZFt7kD9i4qAspz3I/yHet1VvC3DiSy/fsUvv5pvJuNPh0LPOdCcqinDPg==} + /@babel/parser/7.21.2: + resolution: {integrity: sha512-URpaIJQwEkEC2T9Kn+Ai6Xe/02iNaVCuT/PtoRz3GPVJVDpPd7mLo+VddTbhCRU9TXqW5mSrQfXZyi8kDKOVpQ==} engines: {node: '>=6.0.0'} hasBin: true dependencies: - '@babel/types': 7.20.7 + '@babel/types': 7.21.2 dev: true - /@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression/7.18.6_@babel+core@7.20.12: + /@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression/7.18.6_@babel+core@7.21.0: resolution: {integrity: sha512-Dgxsyg54Fx1d4Nge8UnvTrED63vrwOdPmyvPzlNN/boaliRP54pm3pGzZD1SJUwrBA+Cs/xdG8kXX6Mn/RfISQ==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0 dependencies: - '@babel/core': 7.20.12 + '@babel/core': 7.21.0 '@babel/helper-plugin-utils': 7.20.2 dev: true - /@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining/7.20.7_@babel+core@7.20.12: + /@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining/7.20.7_@babel+core@7.21.0: resolution: {integrity: sha512-sbr9+wNE5aXMBBFBICk01tt7sBf2Oc9ikRFEcem/ZORup9IMUdNhW7/wVLEbbtlWOsEubJet46mHAL2C8+2jKQ==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.13.0 dependencies: - '@babel/core': 7.20.12 + '@babel/core': 7.21.0 '@babel/helper-plugin-utils': 7.20.2 '@babel/helper-skip-transparent-expression-wrappers': 7.20.0 - '@babel/plugin-proposal-optional-chaining': 7.20.7_@babel+core@7.20.12 + '@babel/plugin-proposal-optional-chaining': 7.21.0_@babel+core@7.21.0 dev: true - /@babel/plugin-proposal-async-generator-functions/7.20.7_@babel+core@7.20.12: + /@babel/plugin-proposal-async-generator-functions/7.20.7_@babel+core@7.21.0: resolution: {integrity: sha512-xMbiLsn/8RK7Wq7VeVytytS2L6qE69bXPB10YCmMdDZbKF4okCqY74pI/jJQ/8U0b/F6NrT2+14b8/P9/3AMGA==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.20.12 + '@babel/core': 7.21.0 '@babel/helper-environment-visitor': 7.18.9 '@babel/helper-plugin-utils': 7.20.2 - '@babel/helper-remap-async-to-generator': 7.18.9_@babel+core@7.20.12 - '@babel/plugin-syntax-async-generators': 7.8.4_@babel+core@7.20.12 + '@babel/helper-remap-async-to-generator': 7.18.9_@babel+core@7.21.0 + '@babel/plugin-syntax-async-generators': 7.8.4_@babel+core@7.21.0 transitivePeerDependencies: - supports-color dev: true - /@babel/plugin-proposal-class-properties/7.18.6_@babel+core@7.20.12: + /@babel/plugin-proposal-class-properties/7.18.6_@babel+core@7.21.0: resolution: {integrity: sha512-cumfXOF0+nzZrrN8Rf0t7M+tF6sZc7vhQwYQck9q1/5w2OExlD+b4v4RpMJFaV1Z7WcDRgO6FqvxqxGlwo+RHQ==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.20.12 - '@babel/helper-create-class-features-plugin': 7.20.12_@babel+core@7.20.12 + '@babel/core': 7.21.0 + '@babel/helper-create-class-features-plugin': 7.21.0_@babel+core@7.21.0 '@babel/helper-plugin-utils': 7.20.2 transitivePeerDependencies: - supports-color dev: true - /@babel/plugin-proposal-class-static-block/7.20.7_@babel+core@7.20.12: - resolution: {integrity: sha512-AveGOoi9DAjUYYuUAG//Ig69GlazLnoyzMw68VCDux+c1tsnnH/OkYcpz/5xzMkEFC6UxjR5Gw1c+iY2wOGVeQ==} + /@babel/plugin-proposal-class-static-block/7.21.0_@babel+core@7.21.0: + resolution: {integrity: sha512-XP5G9MWNUskFuP30IfFSEFB0Z6HzLIUcjYM4bYOPHXl7eiJ9HFv8tWj6TXTN5QODiEhDZAeI4hLok2iHFFV4hw==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.12.0 dependencies: - '@babel/core': 7.20.12 - '@babel/helper-create-class-features-plugin': 7.20.12_@babel+core@7.20.12 + '@babel/core': 7.21.0 + '@babel/helper-create-class-features-plugin': 7.21.0_@babel+core@7.21.0 '@babel/helper-plugin-utils': 7.20.2 - '@babel/plugin-syntax-class-static-block': 7.14.5_@babel+core@7.20.12 + '@babel/plugin-syntax-class-static-block': 7.14.5_@babel+core@7.21.0 transitivePeerDependencies: - supports-color dev: true - /@babel/plugin-proposal-dynamic-import/7.18.6_@babel+core@7.20.12: + /@babel/plugin-proposal-dynamic-import/7.18.6_@babel+core@7.21.0: resolution: {integrity: sha512-1auuwmK+Rz13SJj36R+jqFPMJWyKEDd7lLSdOj4oJK0UTgGueSAtkrCvz9ewmgyU/P941Rv2fQwZJN8s6QruXw==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.20.12 + '@babel/core': 7.21.0 '@babel/helper-plugin-utils': 7.20.2 - '@babel/plugin-syntax-dynamic-import': 7.8.3_@babel+core@7.20.12 + '@babel/plugin-syntax-dynamic-import': 7.8.3_@babel+core@7.21.0 dev: true - /@babel/plugin-proposal-export-namespace-from/7.18.9_@babel+core@7.20.12: + /@babel/plugin-proposal-export-namespace-from/7.18.9_@babel+core@7.21.0: resolution: {integrity: sha512-k1NtHyOMvlDDFeb9G5PhUXuGj8m/wiwojgQVEhJ/fsVsMCpLyOP4h0uGEjYJKrRI+EVPlb5Jk+Gt9P97lOGwtA==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.20.12 + '@babel/core': 7.21.0 '@babel/helper-plugin-utils': 7.20.2 - '@babel/plugin-syntax-export-namespace-from': 7.8.3_@babel+core@7.20.12 + '@babel/plugin-syntax-export-namespace-from': 7.8.3_@babel+core@7.21.0 dev: true - /@babel/plugin-proposal-json-strings/7.18.6_@babel+core@7.20.12: + /@babel/plugin-proposal-json-strings/7.18.6_@babel+core@7.21.0: resolution: {integrity: sha512-lr1peyn9kOdbYc0xr0OdHTZ5FMqS6Di+H0Fz2I/JwMzGmzJETNeOFq2pBySw6X/KFL5EWDjlJuMsUGRFb8fQgQ==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.20.12 + '@babel/core': 7.21.0 '@babel/helper-plugin-utils': 7.20.2 - '@babel/plugin-syntax-json-strings': 7.8.3_@babel+core@7.20.12 + '@babel/plugin-syntax-json-strings': 7.8.3_@babel+core@7.21.0 dev: true - /@babel/plugin-proposal-logical-assignment-operators/7.20.7_@babel+core@7.20.12: + /@babel/plugin-proposal-logical-assignment-operators/7.20.7_@babel+core@7.21.0: resolution: {integrity: sha512-y7C7cZgpMIjWlKE5T7eJwp+tnRYM89HmRvWM5EQuB5BoHEONjmQ8lSNmBUwOyy/GFRsohJED51YBF79hE1djug==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.20.12 + '@babel/core': 7.21.0 '@babel/helper-plugin-utils': 7.20.2 - '@babel/plugin-syntax-logical-assignment-operators': 7.10.4_@babel+core@7.20.12 + '@babel/plugin-syntax-logical-assignment-operators': 7.10.4_@babel+core@7.21.0 dev: true - /@babel/plugin-proposal-nullish-coalescing-operator/7.18.6_@babel+core@7.20.12: + /@babel/plugin-proposal-nullish-coalescing-operator/7.18.6_@babel+core@7.21.0: resolution: {integrity: sha512-wQxQzxYeJqHcfppzBDnm1yAY0jSRkUXR2z8RePZYrKwMKgMlE8+Z6LUno+bd6LvbGh8Gltvy74+9pIYkr+XkKA==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.20.12 + '@babel/core': 7.21.0 '@babel/helper-plugin-utils': 7.20.2 - '@babel/plugin-syntax-nullish-coalescing-operator': 7.8.3_@babel+core@7.20.12 + '@babel/plugin-syntax-nullish-coalescing-operator': 7.8.3_@babel+core@7.21.0 dev: true - /@babel/plugin-proposal-numeric-separator/7.18.6_@babel+core@7.20.12: + /@babel/plugin-proposal-numeric-separator/7.18.6_@babel+core@7.21.0: resolution: {integrity: sha512-ozlZFogPqoLm8WBr5Z8UckIoE4YQ5KESVcNudyXOR8uqIkliTEgJ3RoketfG6pmzLdeZF0H/wjE9/cCEitBl7Q==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.20.12 + '@babel/core': 7.21.0 '@babel/helper-plugin-utils': 7.20.2 - '@babel/plugin-syntax-numeric-separator': 7.10.4_@babel+core@7.20.12 + '@babel/plugin-syntax-numeric-separator': 7.10.4_@babel+core@7.21.0 dev: true - /@babel/plugin-proposal-object-rest-spread/7.20.7_@babel+core@7.20.12: + /@babel/plugin-proposal-object-rest-spread/7.20.7_@babel+core@7.21.0: resolution: {integrity: sha512-d2S98yCiLxDVmBmE8UjGcfPvNEUbA1U5q5WxaWFUGRzJSVAZqm5W6MbPct0jxnegUZ0niLeNX+IOzEs7wYg9Dg==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/compat-data': 7.20.14 - '@babel/core': 7.20.12 - '@babel/helper-compilation-targets': 7.20.7_@babel+core@7.20.12 + '@babel/compat-data': 7.21.0 + '@babel/core': 7.21.0 + '@babel/helper-compilation-targets': 7.20.7_@babel+core@7.21.0 '@babel/helper-plugin-utils': 7.20.2 - '@babel/plugin-syntax-object-rest-spread': 7.8.3_@babel+core@7.20.12 - '@babel/plugin-transform-parameters': 7.20.7_@babel+core@7.20.12 + '@babel/plugin-syntax-object-rest-spread': 7.8.3_@babel+core@7.21.0 + '@babel/plugin-transform-parameters': 7.20.7_@babel+core@7.21.0 dev: true - /@babel/plugin-proposal-optional-catch-binding/7.18.6_@babel+core@7.20.12: + /@babel/plugin-proposal-optional-catch-binding/7.18.6_@babel+core@7.21.0: resolution: {integrity: sha512-Q40HEhs9DJQyaZfUjjn6vE8Cv4GmMHCYuMGIWUnlxH6400VGxOuwWsPt4FxXxJkC/5eOzgn0z21M9gMT4MOhbw==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.20.12 + '@babel/core': 7.21.0 '@babel/helper-plugin-utils': 7.20.2 - '@babel/plugin-syntax-optional-catch-binding': 7.8.3_@babel+core@7.20.12 + '@babel/plugin-syntax-optional-catch-binding': 7.8.3_@babel+core@7.21.0 dev: true - /@babel/plugin-proposal-optional-chaining/7.20.7_@babel+core@7.20.12: - resolution: {integrity: sha512-T+A7b1kfjtRM51ssoOfS1+wbyCVqorfyZhT99TvxxLMirPShD8CzKMRepMlCBGM5RpHMbn8s+5MMHnPstJH6mQ==} + /@babel/plugin-proposal-optional-chaining/7.21.0_@babel+core@7.21.0: + resolution: {integrity: sha512-p4zeefM72gpmEe2fkUr/OnOXpWEf8nAgk7ZYVqqfFiyIG7oFfVZcCrU64hWn5xp4tQ9LkV4bTIa5rD0KANpKNA==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.20.12 + '@babel/core': 7.21.0 '@babel/helper-plugin-utils': 7.20.2 '@babel/helper-skip-transparent-expression-wrappers': 7.20.0 - '@babel/plugin-syntax-optional-chaining': 7.8.3_@babel+core@7.20.12 + '@babel/plugin-syntax-optional-chaining': 7.8.3_@babel+core@7.21.0 dev: true - /@babel/plugin-proposal-private-methods/7.18.6_@babel+core@7.20.12: + /@babel/plugin-proposal-private-methods/7.18.6_@babel+core@7.21.0: resolution: {integrity: sha512-nutsvktDItsNn4rpGItSNV2sz1XwS+nfU0Rg8aCx3W3NOKVzdMjJRu0O5OkgDp3ZGICSTbgRpxZoWsxoKRvbeA==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.20.12 - '@babel/helper-create-class-features-plugin': 7.20.12_@babel+core@7.20.12 + '@babel/core': 7.21.0 + '@babel/helper-create-class-features-plugin': 7.21.0_@babel+core@7.21.0 '@babel/helper-plugin-utils': 7.20.2 transitivePeerDependencies: - supports-color dev: true - /@babel/plugin-proposal-private-property-in-object/7.20.5_@babel+core@7.20.12: - resolution: {integrity: sha512-Vq7b9dUA12ByzB4EjQTPo25sFhY+08pQDBSZRtUAkj7lb7jahaHR5igera16QZ+3my1nYR4dKsNdYj5IjPHilQ==} + /@babel/plugin-proposal-private-property-in-object/7.21.0_@babel+core@7.21.0: + resolution: {integrity: sha512-ha4zfehbJjc5MmXBlHec1igel5TJXXLDDRbuJ4+XT2TJcyD9/V1919BA8gMvsdHcNMBy4WBUBiRb3nw/EQUtBw==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.20.12 + '@babel/core': 7.21.0 '@babel/helper-annotate-as-pure': 7.18.6 - '@babel/helper-create-class-features-plugin': 7.20.12_@babel+core@7.20.12 + '@babel/helper-create-class-features-plugin': 7.21.0_@babel+core@7.21.0 '@babel/helper-plugin-utils': 7.20.2 - '@babel/plugin-syntax-private-property-in-object': 7.14.5_@babel+core@7.20.12 + '@babel/plugin-syntax-private-property-in-object': 7.14.5_@babel+core@7.21.0 transitivePeerDependencies: - supports-color dev: true - /@babel/plugin-proposal-unicode-property-regex/7.18.6_@babel+core@7.20.12: + /@babel/plugin-proposal-unicode-property-regex/7.18.6_@babel+core@7.21.0: resolution: {integrity: sha512-2BShG/d5yoZyXZfVePH91urL5wTG6ASZU9M4o03lKK8u8UW1y08OMttBSOADTcJrnPMpvDXRG3G8fyLh4ovs8w==} engines: {node: '>=4'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.20.12 - '@babel/helper-create-regexp-features-plugin': 7.20.5_@babel+core@7.20.12 + '@babel/core': 7.21.0 + '@babel/helper-create-regexp-features-plugin': 7.21.0_@babel+core@7.21.0 '@babel/helper-plugin-utils': 7.20.2 dev: true - /@babel/plugin-syntax-async-generators/7.8.4_@babel+core@7.20.12: + /@babel/plugin-syntax-async-generators/7.8.4_@babel+core@7.21.0: resolution: {integrity: sha512-tycmZxkGfZaxhMRbXlPXuVFpdWlXpir2W4AMhSJgRKzk/eDlIXOhb2LHWoLpDF7TEHylV5zNhykX6KAgHJmTNw==} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.20.12 + '@babel/core': 7.21.0 '@babel/helper-plugin-utils': 7.20.2 dev: true - /@babel/plugin-syntax-class-properties/7.12.13_@babel+core@7.20.12: + /@babel/plugin-syntax-class-properties/7.12.13_@babel+core@7.21.0: resolution: {integrity: sha512-fm4idjKla0YahUNgFNLCB0qySdsoPiZP3iQE3rky0mBUtMZ23yDJ9SJdg6dXTSDnulOVqiF3Hgr9nbXvXTQZYA==} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.20.12 + '@babel/core': 7.21.0 '@babel/helper-plugin-utils': 7.20.2 dev: true - /@babel/plugin-syntax-class-static-block/7.14.5_@babel+core@7.20.12: + /@babel/plugin-syntax-class-static-block/7.14.5_@babel+core@7.21.0: resolution: {integrity: sha512-b+YyPmr6ldyNnM6sqYeMWE+bgJcJpO6yS4QD7ymxgH34GBPNDM/THBh8iunyvKIZztiwLH4CJZ0RxTk9emgpjw==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.20.12 + '@babel/core': 7.21.0 '@babel/helper-plugin-utils': 7.20.2 dev: true - /@babel/plugin-syntax-dynamic-import/7.8.3_@babel+core@7.20.12: + /@babel/plugin-syntax-dynamic-import/7.8.3_@babel+core@7.21.0: resolution: {integrity: sha512-5gdGbFon+PszYzqs83S3E5mpi7/y/8M9eC90MRTZfduQOYW76ig6SOSPNe41IG5LoP3FGBn2N0RjVDSQiS94kQ==} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.20.12 + '@babel/core': 7.21.0 '@babel/helper-plugin-utils': 7.20.2 dev: true - /@babel/plugin-syntax-export-namespace-from/7.8.3_@babel+core@7.20.12: + /@babel/plugin-syntax-export-namespace-from/7.8.3_@babel+core@7.21.0: resolution: {integrity: sha512-MXf5laXo6c1IbEbegDmzGPwGNTsHZmEy6QGznu5Sh2UCWvueywb2ee+CCE4zQiZstxU9BMoQO9i6zUFSY0Kj0Q==} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.20.12 + '@babel/core': 7.21.0 '@babel/helper-plugin-utils': 7.20.2 dev: true - /@babel/plugin-syntax-import-assertions/7.20.0_@babel+core@7.20.12: + /@babel/plugin-syntax-import-assertions/7.20.0_@babel+core@7.21.0: resolution: {integrity: sha512-IUh1vakzNoWalR8ch/areW7qFopR2AEw03JlG7BbrDqmQ4X3q9uuipQwSGrUn7oGiemKjtSLDhNtQHzMHr1JdQ==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.20.12 + '@babel/core': 7.21.0 '@babel/helper-plugin-utils': 7.20.2 dev: true - /@babel/plugin-syntax-json-strings/7.8.3_@babel+core@7.20.12: + /@babel/plugin-syntax-json-strings/7.8.3_@babel+core@7.21.0: resolution: {integrity: sha512-lY6kdGpWHvjoe2vk4WrAapEuBR69EMxZl+RoGRhrFGNYVK8mOPAW8VfbT/ZgrFbXlDNiiaxQnAtgVCZ6jv30EA==} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.20.12 + '@babel/core': 7.21.0 '@babel/helper-plugin-utils': 7.20.2 dev: true - /@babel/plugin-syntax-logical-assignment-operators/7.10.4_@babel+core@7.20.12: + /@babel/plugin-syntax-logical-assignment-operators/7.10.4_@babel+core@7.21.0: resolution: {integrity: sha512-d8waShlpFDinQ5MtvGU9xDAOzKH47+FFoney2baFIoMr952hKOLp1HR7VszoZvOsV/4+RRszNY7D17ba0te0ig==} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.20.12 + '@babel/core': 7.21.0 '@babel/helper-plugin-utils': 7.20.2 dev: true - /@babel/plugin-syntax-nullish-coalescing-operator/7.8.3_@babel+core@7.20.12: + /@babel/plugin-syntax-nullish-coalescing-operator/7.8.3_@babel+core@7.21.0: resolution: {integrity: sha512-aSff4zPII1u2QD7y+F8oDsz19ew4IGEJg9SVW+bqwpwtfFleiQDMdzA/R+UlWDzfnHFCxxleFT0PMIrR36XLNQ==} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.20.12 + '@babel/core': 7.21.0 '@babel/helper-plugin-utils': 7.20.2 dev: true - /@babel/plugin-syntax-numeric-separator/7.10.4_@babel+core@7.20.12: + /@babel/plugin-syntax-numeric-separator/7.10.4_@babel+core@7.21.0: resolution: {integrity: sha512-9H6YdfkcK/uOnY/K7/aA2xpzaAgkQn37yzWUMRK7OaPOqOpGS1+n0H5hxT9AUw9EsSjPW8SVyMJwYRtWs3X3ug==} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.20.12 + '@babel/core': 7.21.0 '@babel/helper-plugin-utils': 7.20.2 dev: true - /@babel/plugin-syntax-object-rest-spread/7.8.3_@babel+core@7.20.12: + /@babel/plugin-syntax-object-rest-spread/7.8.3_@babel+core@7.21.0: resolution: {integrity: sha512-XoqMijGZb9y3y2XskN+P1wUGiVwWZ5JmoDRwx5+3GmEplNyVM2s2Dg8ILFQm8rWM48orGy5YpI5Bl8U1y7ydlA==} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.20.12 + '@babel/core': 7.21.0 '@babel/helper-plugin-utils': 7.20.2 dev: true - /@babel/plugin-syntax-optional-catch-binding/7.8.3_@babel+core@7.20.12: + /@babel/plugin-syntax-optional-catch-binding/7.8.3_@babel+core@7.21.0: resolution: {integrity: sha512-6VPD0Pc1lpTqw0aKoeRTMiB+kWhAoT24PA+ksWSBrFtl5SIRVpZlwN3NNPQjehA2E/91FV3RjLWoVTglWcSV3Q==} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.20.12 + '@babel/core': 7.21.0 '@babel/helper-plugin-utils': 7.20.2 dev: true - /@babel/plugin-syntax-optional-chaining/7.8.3_@babel+core@7.20.12: + /@babel/plugin-syntax-optional-chaining/7.8.3_@babel+core@7.21.0: resolution: {integrity: sha512-KoK9ErH1MBlCPxV0VANkXW2/dw4vlbGDrFgz8bmUsBGYkFRcbRwMh6cIJubdPrkxRwuGdtCk0v/wPTKbQgBjkg==} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.20.12 + '@babel/core': 7.21.0 '@babel/helper-plugin-utils': 7.20.2 dev: true - /@babel/plugin-syntax-private-property-in-object/7.14.5_@babel+core@7.20.12: + /@babel/plugin-syntax-private-property-in-object/7.14.5_@babel+core@7.21.0: resolution: {integrity: sha512-0wVnp9dxJ72ZUJDV27ZfbSj6iHLoytYZmh3rFcxNnvsJF3ktkzLDZPy/mA17HGsaQT3/DQsWYX1f1QGWkCoVUg==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.20.12 + '@babel/core': 7.21.0 '@babel/helper-plugin-utils': 7.20.2 dev: true - /@babel/plugin-syntax-top-level-await/7.14.5_@babel+core@7.20.12: + /@babel/plugin-syntax-top-level-await/7.14.5_@babel+core@7.21.0: resolution: {integrity: sha512-hx++upLv5U1rgYfwe1xBQUhRmU41NEvpUvrp8jkrSCdvGSnM5/qdRMtylJ6PG5OFkBaHkbTAKTnd3/YyESRHFw==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.20.12 + '@babel/core': 7.21.0 '@babel/helper-plugin-utils': 7.20.2 dev: true - /@babel/plugin-transform-arrow-functions/7.20.7_@babel+core@7.20.12: + /@babel/plugin-transform-arrow-functions/7.20.7_@babel+core@7.21.0: resolution: {integrity: sha512-3poA5E7dzDomxj9WXWwuD6A5F3kc7VXwIJO+E+J8qtDtS+pXPAhrgEyh+9GBwBgPq1Z+bB+/JD60lp5jsN7JPQ==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.20.12 + '@babel/core': 7.21.0 '@babel/helper-plugin-utils': 7.20.2 dev: true - /@babel/plugin-transform-async-to-generator/7.20.7_@babel+core@7.20.12: + /@babel/plugin-transform-async-to-generator/7.20.7_@babel+core@7.21.0: resolution: {integrity: sha512-Uo5gwHPT9vgnSXQxqGtpdufUiWp96gk7yiP4Mp5bm1QMkEmLXBO7PAGYbKoJ6DhAwiNkcHFBol/x5zZZkL/t0Q==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.20.12 + '@babel/core': 7.21.0 '@babel/helper-module-imports': 7.18.6 '@babel/helper-plugin-utils': 7.20.2 - '@babel/helper-remap-async-to-generator': 7.18.9_@babel+core@7.20.12 + '@babel/helper-remap-async-to-generator': 7.18.9_@babel+core@7.21.0 transitivePeerDependencies: - supports-color dev: true - /@babel/plugin-transform-block-scoped-functions/7.18.6_@babel+core@7.20.12: + /@babel/plugin-transform-block-scoped-functions/7.18.6_@babel+core@7.21.0: resolution: {integrity: sha512-ExUcOqpPWnliRcPqves5HJcJOvHvIIWfuS4sroBUenPuMdmW+SMHDakmtS7qOo13sVppmUijqeTv7qqGsvURpQ==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.20.12 + '@babel/core': 7.21.0 '@babel/helper-plugin-utils': 7.20.2 dev: true - /@babel/plugin-transform-block-scoping/7.20.15_@babel+core@7.20.12: - resolution: {integrity: sha512-Vv4DMZ6MiNOhu/LdaZsT/bsLRxgL94d269Mv4R/9sp6+Mp++X/JqypZYypJXLlM4mlL352/Egzbzr98iABH1CA==} + /@babel/plugin-transform-block-scoping/7.21.0_@babel+core@7.21.0: + resolution: {integrity: sha512-Mdrbunoh9SxwFZapeHVrwFmri16+oYotcZysSzhNIVDwIAb1UV+kvnxULSYq9J3/q5MDG+4X6w8QVgD1zhBXNQ==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.20.12 + '@babel/core': 7.21.0 '@babel/helper-plugin-utils': 7.20.2 dev: true - /@babel/plugin-transform-classes/7.20.7_@babel+core@7.20.12: - resolution: {integrity: sha512-LWYbsiXTPKl+oBlXUGlwNlJZetXD5Am+CyBdqhPsDVjM9Jc8jwBJFrKhHf900Kfk2eZG1y9MAG3UNajol7A4VQ==} + /@babel/plugin-transform-classes/7.21.0_@babel+core@7.21.0: + resolution: {integrity: sha512-RZhbYTCEUAe6ntPehC4hlslPWosNHDox+vAs4On/mCLRLfoDVHf6hVEd7kuxr1RnHwJmxFfUM3cZiZRmPxJPXQ==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.20.12 + '@babel/core': 7.21.0 '@babel/helper-annotate-as-pure': 7.18.6 - '@babel/helper-compilation-targets': 7.20.7_@babel+core@7.20.12 + '@babel/helper-compilation-targets': 7.20.7_@babel+core@7.21.0 '@babel/helper-environment-visitor': 7.18.9 - '@babel/helper-function-name': 7.19.0 + '@babel/helper-function-name': 7.21.0 '@babel/helper-optimise-call-expression': 7.18.6 '@babel/helper-plugin-utils': 7.20.2 '@babel/helper-replace-supers': 7.20.7 @@ -827,399 +828,399 @@ packages: - supports-color dev: true - /@babel/plugin-transform-computed-properties/7.20.7_@babel+core@7.20.12: + /@babel/plugin-transform-computed-properties/7.20.7_@babel+core@7.21.0: resolution: {integrity: sha512-Lz7MvBK6DTjElHAmfu6bfANzKcxpyNPeYBGEafyA6E5HtRpjpZwU+u7Qrgz/2OR0z+5TvKYbPdphfSaAcZBrYQ==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.20.12 + '@babel/core': 7.21.0 '@babel/helper-plugin-utils': 7.20.2 '@babel/template': 7.20.7 dev: true - /@babel/plugin-transform-destructuring/7.20.7_@babel+core@7.20.12: + /@babel/plugin-transform-destructuring/7.20.7_@babel+core@7.21.0: resolution: {integrity: sha512-Xwg403sRrZb81IVB79ZPqNQME23yhugYVqgTxAhT99h485F4f+GMELFhhOsscDUB7HCswepKeCKLn/GZvUKoBA==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.20.12 + '@babel/core': 7.21.0 '@babel/helper-plugin-utils': 7.20.2 dev: true - /@babel/plugin-transform-dotall-regex/7.18.6_@babel+core@7.20.12: + /@babel/plugin-transform-dotall-regex/7.18.6_@babel+core@7.21.0: resolution: {integrity: sha512-6S3jpun1eEbAxq7TdjLotAsl4WpQI9DxfkycRcKrjhQYzU87qpXdknpBg/e+TdcMehqGnLFi7tnFUBR02Vq6wg==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.20.12 - '@babel/helper-create-regexp-features-plugin': 7.20.5_@babel+core@7.20.12 + '@babel/core': 7.21.0 + '@babel/helper-create-regexp-features-plugin': 7.21.0_@babel+core@7.21.0 '@babel/helper-plugin-utils': 7.20.2 dev: true - /@babel/plugin-transform-duplicate-keys/7.18.9_@babel+core@7.20.12: + /@babel/plugin-transform-duplicate-keys/7.18.9_@babel+core@7.21.0: resolution: {integrity: sha512-d2bmXCtZXYc59/0SanQKbiWINadaJXqtvIQIzd4+hNwkWBgyCd5F/2t1kXoUdvPMrxzPvhK6EMQRROxsue+mfw==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.20.12 + '@babel/core': 7.21.0 '@babel/helper-plugin-utils': 7.20.2 dev: true - /@babel/plugin-transform-exponentiation-operator/7.18.6_@babel+core@7.20.12: + /@babel/plugin-transform-exponentiation-operator/7.18.6_@babel+core@7.21.0: resolution: {integrity: sha512-wzEtc0+2c88FVR34aQmiz56dxEkxr2g8DQb/KfaFa1JYXOFVsbhvAonFN6PwVWj++fKmku8NP80plJ5Et4wqHw==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.20.12 + '@babel/core': 7.21.0 '@babel/helper-builder-binary-assignment-operator-visitor': 7.18.9 '@babel/helper-plugin-utils': 7.20.2 dev: true - /@babel/plugin-transform-for-of/7.18.8_@babel+core@7.20.12: - resolution: {integrity: sha512-yEfTRnjuskWYo0k1mHUqrVWaZwrdq8AYbfrpqULOJOaucGSp4mNMVps+YtA8byoevxS/urwU75vyhQIxcCgiBQ==} + /@babel/plugin-transform-for-of/7.21.0_@babel+core@7.21.0: + resolution: {integrity: sha512-LlUYlydgDkKpIY7mcBWvyPPmMcOphEyYA27Ef4xpbh1IiDNLr0kZsos2nf92vz3IccvJI25QUwp86Eo5s6HmBQ==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.20.12 + '@babel/core': 7.21.0 '@babel/helper-plugin-utils': 7.20.2 dev: true - /@babel/plugin-transform-function-name/7.18.9_@babel+core@7.20.12: + /@babel/plugin-transform-function-name/7.18.9_@babel+core@7.21.0: resolution: {integrity: sha512-WvIBoRPaJQ5yVHzcnJFor7oS5Ls0PYixlTYE63lCj2RtdQEl15M68FXQlxnG6wdraJIXRdR7KI+hQ7q/9QjrCQ==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.20.12 - '@babel/helper-compilation-targets': 7.20.7_@babel+core@7.20.12 - '@babel/helper-function-name': 7.19.0 + '@babel/core': 7.21.0 + '@babel/helper-compilation-targets': 7.20.7_@babel+core@7.21.0 + '@babel/helper-function-name': 7.21.0 '@babel/helper-plugin-utils': 7.20.2 dev: true - /@babel/plugin-transform-literals/7.18.9_@babel+core@7.20.12: + /@babel/plugin-transform-literals/7.18.9_@babel+core@7.21.0: resolution: {integrity: sha512-IFQDSRoTPnrAIrI5zoZv73IFeZu2dhu6irxQjY9rNjTT53VmKg9fenjvoiOWOkJ6mm4jKVPtdMzBY98Fp4Z4cg==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.20.12 + '@babel/core': 7.21.0 '@babel/helper-plugin-utils': 7.20.2 dev: true - /@babel/plugin-transform-member-expression-literals/7.18.6_@babel+core@7.20.12: + /@babel/plugin-transform-member-expression-literals/7.18.6_@babel+core@7.21.0: resolution: {integrity: sha512-qSF1ihLGO3q+/g48k85tUjD033C29TNTVB2paCwZPVmOsjn9pClvYYrM2VeJpBY2bcNkuny0YUyTNRyRxJ54KA==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.20.12 + '@babel/core': 7.21.0 '@babel/helper-plugin-utils': 7.20.2 dev: true - /@babel/plugin-transform-modules-amd/7.20.11_@babel+core@7.20.12: + /@babel/plugin-transform-modules-amd/7.20.11_@babel+core@7.21.0: resolution: {integrity: sha512-NuzCt5IIYOW0O30UvqktzHYR2ud5bOWbY0yaxWZ6G+aFzOMJvrs5YHNikrbdaT15+KNO31nPOy5Fim3ku6Zb5g==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.20.12 - '@babel/helper-module-transforms': 7.20.11 + '@babel/core': 7.21.0 + '@babel/helper-module-transforms': 7.21.2 '@babel/helper-plugin-utils': 7.20.2 transitivePeerDependencies: - supports-color dev: true - /@babel/plugin-transform-modules-commonjs/7.20.11_@babel+core@7.20.12: - resolution: {integrity: sha512-S8e1f7WQ7cimJQ51JkAaDrEtohVEitXjgCGAS2N8S31Y42E+kWwfSz83LYz57QdBm7q9diARVqanIaH2oVgQnw==} + /@babel/plugin-transform-modules-commonjs/7.21.2_@babel+core@7.21.0: + resolution: {integrity: sha512-Cln+Yy04Gxua7iPdj6nOV96smLGjpElir5YwzF0LBPKoPlLDNJePNlrGGaybAJkd0zKRnOVXOgizSqPYMNYkzA==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.20.12 - '@babel/helper-module-transforms': 7.20.11 + '@babel/core': 7.21.0 + '@babel/helper-module-transforms': 7.21.2 '@babel/helper-plugin-utils': 7.20.2 '@babel/helper-simple-access': 7.20.2 transitivePeerDependencies: - supports-color dev: true - /@babel/plugin-transform-modules-systemjs/7.20.11_@babel+core@7.20.12: + /@babel/plugin-transform-modules-systemjs/7.20.11_@babel+core@7.21.0: resolution: {integrity: sha512-vVu5g9BPQKSFEmvt2TA4Da5N+QVS66EX21d8uoOihC+OCpUoGvzVsXeqFdtAEfVa5BILAeFt+U7yVmLbQnAJmw==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.20.12 + '@babel/core': 7.21.0 '@babel/helper-hoist-variables': 7.18.6 - '@babel/helper-module-transforms': 7.20.11 + '@babel/helper-module-transforms': 7.21.2 '@babel/helper-plugin-utils': 7.20.2 '@babel/helper-validator-identifier': 7.19.1 transitivePeerDependencies: - supports-color dev: true - /@babel/plugin-transform-modules-umd/7.18.6_@babel+core@7.20.12: + /@babel/plugin-transform-modules-umd/7.18.6_@babel+core@7.21.0: resolution: {integrity: sha512-dcegErExVeXcRqNtkRU/z8WlBLnvD4MRnHgNs3MytRO1Mn1sHRyhbcpYbVMGclAqOjdW+9cfkdZno9dFdfKLfQ==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.20.12 - '@babel/helper-module-transforms': 7.20.11 + '@babel/core': 7.21.0 + '@babel/helper-module-transforms': 7.21.2 '@babel/helper-plugin-utils': 7.20.2 transitivePeerDependencies: - supports-color dev: true - /@babel/plugin-transform-named-capturing-groups-regex/7.20.5_@babel+core@7.20.12: + /@babel/plugin-transform-named-capturing-groups-regex/7.20.5_@babel+core@7.21.0: resolution: {integrity: sha512-mOW4tTzi5iTLnw+78iEq3gr8Aoq4WNRGpmSlrogqaiCBoR1HFhpU4JkpQFOHfeYx3ReVIFWOQJS4aZBRvuZ6mA==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0 dependencies: - '@babel/core': 7.20.12 - '@babel/helper-create-regexp-features-plugin': 7.20.5_@babel+core@7.20.12 + '@babel/core': 7.21.0 + '@babel/helper-create-regexp-features-plugin': 7.21.0_@babel+core@7.21.0 '@babel/helper-plugin-utils': 7.20.2 dev: true - /@babel/plugin-transform-new-target/7.18.6_@babel+core@7.20.12: + /@babel/plugin-transform-new-target/7.18.6_@babel+core@7.21.0: resolution: {integrity: sha512-DjwFA/9Iu3Z+vrAn+8pBUGcjhxKguSMlsFqeCKbhb9BAV756v0krzVK04CRDi/4aqmk8BsHb4a/gFcaA5joXRw==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.20.12 + '@babel/core': 7.21.0 '@babel/helper-plugin-utils': 7.20.2 dev: true - /@babel/plugin-transform-object-super/7.18.6_@babel+core@7.20.12: + /@babel/plugin-transform-object-super/7.18.6_@babel+core@7.21.0: resolution: {integrity: sha512-uvGz6zk+pZoS1aTZrOvrbj6Pp/kK2mp45t2B+bTDre2UgsZZ8EZLSJtUg7m/no0zOJUWgFONpB7Zv9W2tSaFlA==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.20.12 + '@babel/core': 7.21.0 '@babel/helper-plugin-utils': 7.20.2 '@babel/helper-replace-supers': 7.20.7 transitivePeerDependencies: - supports-color dev: true - /@babel/plugin-transform-parameters/7.20.7_@babel+core@7.20.12: + /@babel/plugin-transform-parameters/7.20.7_@babel+core@7.21.0: resolution: {integrity: sha512-WiWBIkeHKVOSYPO0pWkxGPfKeWrCJyD3NJ53+Lrp/QMSZbsVPovrVl2aWZ19D/LTVnaDv5Ap7GJ/B2CTOZdrfA==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.20.12 + '@babel/core': 7.21.0 '@babel/helper-plugin-utils': 7.20.2 dev: true - /@babel/plugin-transform-property-literals/7.18.6_@babel+core@7.20.12: + /@babel/plugin-transform-property-literals/7.18.6_@babel+core@7.21.0: resolution: {integrity: sha512-cYcs6qlgafTud3PAzrrRNbQtfpQ8+y/+M5tKmksS9+M1ckbH6kzY8MrexEM9mcA6JDsukE19iIRvAyYl463sMg==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.20.12 + '@babel/core': 7.21.0 '@babel/helper-plugin-utils': 7.20.2 dev: true - /@babel/plugin-transform-regenerator/7.20.5_@babel+core@7.20.12: + /@babel/plugin-transform-regenerator/7.20.5_@babel+core@7.21.0: resolution: {integrity: sha512-kW/oO7HPBtntbsahzQ0qSE3tFvkFwnbozz3NWFhLGqH75vLEg+sCGngLlhVkePlCs3Jv0dBBHDzCHxNiFAQKCQ==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.20.12 + '@babel/core': 7.21.0 '@babel/helper-plugin-utils': 7.20.2 regenerator-transform: 0.15.1 dev: true - /@babel/plugin-transform-reserved-words/7.18.6_@babel+core@7.20.12: + /@babel/plugin-transform-reserved-words/7.18.6_@babel+core@7.21.0: resolution: {integrity: sha512-oX/4MyMoypzHjFrT1CdivfKZ+XvIPMFXwwxHp/r0Ddy2Vuomt4HDFGmft1TAY2yiTKiNSsh3kjBAzcM8kSdsjA==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.20.12 + '@babel/core': 7.21.0 '@babel/helper-plugin-utils': 7.20.2 dev: true - /@babel/plugin-transform-shorthand-properties/7.18.6_@babel+core@7.20.12: + /@babel/plugin-transform-shorthand-properties/7.18.6_@babel+core@7.21.0: resolution: {integrity: sha512-eCLXXJqv8okzg86ywZJbRn19YJHU4XUa55oz2wbHhaQVn/MM+XhukiT7SYqp/7o00dg52Rj51Ny+Ecw4oyoygw==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.20.12 + '@babel/core': 7.21.0 '@babel/helper-plugin-utils': 7.20.2 dev: true - /@babel/plugin-transform-spread/7.20.7_@babel+core@7.20.12: + /@babel/plugin-transform-spread/7.20.7_@babel+core@7.21.0: resolution: {integrity: sha512-ewBbHQ+1U/VnH1fxltbJqDeWBU1oNLG8Dj11uIv3xVf7nrQu0bPGe5Rf716r7K5Qz+SqtAOVswoVunoiBtGhxw==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.20.12 + '@babel/core': 7.21.0 '@babel/helper-plugin-utils': 7.20.2 '@babel/helper-skip-transparent-expression-wrappers': 7.20.0 dev: true - /@babel/plugin-transform-sticky-regex/7.18.6_@babel+core@7.20.12: + /@babel/plugin-transform-sticky-regex/7.18.6_@babel+core@7.21.0: resolution: {integrity: sha512-kfiDrDQ+PBsQDO85yj1icueWMfGfJFKN1KCkndygtu/C9+XUfydLC8Iv5UYJqRwy4zk8EcplRxEOeLyjq1gm6Q==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.20.12 + '@babel/core': 7.21.0 '@babel/helper-plugin-utils': 7.20.2 dev: true - /@babel/plugin-transform-template-literals/7.18.9_@babel+core@7.20.12: + /@babel/plugin-transform-template-literals/7.18.9_@babel+core@7.21.0: resolution: {integrity: sha512-S8cOWfT82gTezpYOiVaGHrCbhlHgKhQt8XH5ES46P2XWmX92yisoZywf5km75wv5sYcXDUCLMmMxOLCtthDgMA==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.20.12 + '@babel/core': 7.21.0 '@babel/helper-plugin-utils': 7.20.2 dev: true - /@babel/plugin-transform-typeof-symbol/7.18.9_@babel+core@7.20.12: + /@babel/plugin-transform-typeof-symbol/7.18.9_@babel+core@7.21.0: resolution: {integrity: sha512-SRfwTtF11G2aemAZWivL7PD+C9z52v9EvMqH9BuYbabyPuKUvSWks3oCg6041pT925L4zVFqaVBeECwsmlguEw==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.20.12 + '@babel/core': 7.21.0 '@babel/helper-plugin-utils': 7.20.2 dev: true - /@babel/plugin-transform-unicode-escapes/7.18.10_@babel+core@7.20.12: + /@babel/plugin-transform-unicode-escapes/7.18.10_@babel+core@7.21.0: resolution: {integrity: sha512-kKAdAI+YzPgGY/ftStBFXTI1LZFju38rYThnfMykS+IXy8BVx+res7s2fxf1l8I35DV2T97ezo6+SGrXz6B3iQ==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.20.12 + '@babel/core': 7.21.0 '@babel/helper-plugin-utils': 7.20.2 dev: true - /@babel/plugin-transform-unicode-regex/7.18.6_@babel+core@7.20.12: + /@babel/plugin-transform-unicode-regex/7.18.6_@babel+core@7.21.0: resolution: {integrity: sha512-gE7A6Lt7YLnNOL3Pb9BNeZvi+d8l7tcRrG4+pwJjK9hD2xX4mEvjlQW60G9EEmfXVYRPv9VRQcyegIVHCql/AA==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.20.12 - '@babel/helper-create-regexp-features-plugin': 7.20.5_@babel+core@7.20.12 + '@babel/core': 7.21.0 + '@babel/helper-create-regexp-features-plugin': 7.21.0_@babel+core@7.21.0 '@babel/helper-plugin-utils': 7.20.2 dev: true - /@babel/preset-env/7.20.2_@babel+core@7.20.12: + /@babel/preset-env/7.20.2_@babel+core@7.21.0: resolution: {integrity: sha512-1G0efQEWR1EHkKvKHqbG+IN/QdgwfByUpM5V5QroDzGV2t3S/WXNQd693cHiHTlCFMpr9B6FkPFXDA2lQcKoDg==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/compat-data': 7.20.14 - '@babel/core': 7.20.12 - '@babel/helper-compilation-targets': 7.20.7_@babel+core@7.20.12 + '@babel/compat-data': 7.21.0 + '@babel/core': 7.21.0 + '@babel/helper-compilation-targets': 7.20.7_@babel+core@7.21.0 '@babel/helper-plugin-utils': 7.20.2 - '@babel/helper-validator-option': 7.18.6 - '@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression': 7.18.6_@babel+core@7.20.12 - '@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining': 7.20.7_@babel+core@7.20.12 - '@babel/plugin-proposal-async-generator-functions': 7.20.7_@babel+core@7.20.12 - '@babel/plugin-proposal-class-properties': 7.18.6_@babel+core@7.20.12 - '@babel/plugin-proposal-class-static-block': 7.20.7_@babel+core@7.20.12 - '@babel/plugin-proposal-dynamic-import': 7.18.6_@babel+core@7.20.12 - '@babel/plugin-proposal-export-namespace-from': 7.18.9_@babel+core@7.20.12 - '@babel/plugin-proposal-json-strings': 7.18.6_@babel+core@7.20.12 - '@babel/plugin-proposal-logical-assignment-operators': 7.20.7_@babel+core@7.20.12 - '@babel/plugin-proposal-nullish-coalescing-operator': 7.18.6_@babel+core@7.20.12 - '@babel/plugin-proposal-numeric-separator': 7.18.6_@babel+core@7.20.12 - '@babel/plugin-proposal-object-rest-spread': 7.20.7_@babel+core@7.20.12 - '@babel/plugin-proposal-optional-catch-binding': 7.18.6_@babel+core@7.20.12 - '@babel/plugin-proposal-optional-chaining': 7.20.7_@babel+core@7.20.12 - '@babel/plugin-proposal-private-methods': 7.18.6_@babel+core@7.20.12 - '@babel/plugin-proposal-private-property-in-object': 7.20.5_@babel+core@7.20.12 - '@babel/plugin-proposal-unicode-property-regex': 7.18.6_@babel+core@7.20.12 - '@babel/plugin-syntax-async-generators': 7.8.4_@babel+core@7.20.12 - '@babel/plugin-syntax-class-properties': 7.12.13_@babel+core@7.20.12 - '@babel/plugin-syntax-class-static-block': 7.14.5_@babel+core@7.20.12 - '@babel/plugin-syntax-dynamic-import': 7.8.3_@babel+core@7.20.12 - '@babel/plugin-syntax-export-namespace-from': 7.8.3_@babel+core@7.20.12 - '@babel/plugin-syntax-import-assertions': 7.20.0_@babel+core@7.20.12 - '@babel/plugin-syntax-json-strings': 7.8.3_@babel+core@7.20.12 - '@babel/plugin-syntax-logical-assignment-operators': 7.10.4_@babel+core@7.20.12 - '@babel/plugin-syntax-nullish-coalescing-operator': 7.8.3_@babel+core@7.20.12 - '@babel/plugin-syntax-numeric-separator': 7.10.4_@babel+core@7.20.12 - '@babel/plugin-syntax-object-rest-spread': 7.8.3_@babel+core@7.20.12 - '@babel/plugin-syntax-optional-catch-binding': 7.8.3_@babel+core@7.20.12 - '@babel/plugin-syntax-optional-chaining': 7.8.3_@babel+core@7.20.12 - '@babel/plugin-syntax-private-property-in-object': 7.14.5_@babel+core@7.20.12 - '@babel/plugin-syntax-top-level-await': 7.14.5_@babel+core@7.20.12 - '@babel/plugin-transform-arrow-functions': 7.20.7_@babel+core@7.20.12 - '@babel/plugin-transform-async-to-generator': 7.20.7_@babel+core@7.20.12 - '@babel/plugin-transform-block-scoped-functions': 7.18.6_@babel+core@7.20.12 - '@babel/plugin-transform-block-scoping': 7.20.15_@babel+core@7.20.12 - '@babel/plugin-transform-classes': 7.20.7_@babel+core@7.20.12 - '@babel/plugin-transform-computed-properties': 7.20.7_@babel+core@7.20.12 - '@babel/plugin-transform-destructuring': 7.20.7_@babel+core@7.20.12 - '@babel/plugin-transform-dotall-regex': 7.18.6_@babel+core@7.20.12 - '@babel/plugin-transform-duplicate-keys': 7.18.9_@babel+core@7.20.12 - '@babel/plugin-transform-exponentiation-operator': 7.18.6_@babel+core@7.20.12 - '@babel/plugin-transform-for-of': 7.18.8_@babel+core@7.20.12 - '@babel/plugin-transform-function-name': 7.18.9_@babel+core@7.20.12 - '@babel/plugin-transform-literals': 7.18.9_@babel+core@7.20.12 - '@babel/plugin-transform-member-expression-literals': 7.18.6_@babel+core@7.20.12 - '@babel/plugin-transform-modules-amd': 7.20.11_@babel+core@7.20.12 - '@babel/plugin-transform-modules-commonjs': 7.20.11_@babel+core@7.20.12 - '@babel/plugin-transform-modules-systemjs': 7.20.11_@babel+core@7.20.12 - '@babel/plugin-transform-modules-umd': 7.18.6_@babel+core@7.20.12 - '@babel/plugin-transform-named-capturing-groups-regex': 7.20.5_@babel+core@7.20.12 - '@babel/plugin-transform-new-target': 7.18.6_@babel+core@7.20.12 - '@babel/plugin-transform-object-super': 7.18.6_@babel+core@7.20.12 - '@babel/plugin-transform-parameters': 7.20.7_@babel+core@7.20.12 - '@babel/plugin-transform-property-literals': 7.18.6_@babel+core@7.20.12 - '@babel/plugin-transform-regenerator': 7.20.5_@babel+core@7.20.12 - '@babel/plugin-transform-reserved-words': 7.18.6_@babel+core@7.20.12 - '@babel/plugin-transform-shorthand-properties': 7.18.6_@babel+core@7.20.12 - '@babel/plugin-transform-spread': 7.20.7_@babel+core@7.20.12 - '@babel/plugin-transform-sticky-regex': 7.18.6_@babel+core@7.20.12 - '@babel/plugin-transform-template-literals': 7.18.9_@babel+core@7.20.12 - '@babel/plugin-transform-typeof-symbol': 7.18.9_@babel+core@7.20.12 - '@babel/plugin-transform-unicode-escapes': 7.18.10_@babel+core@7.20.12 - '@babel/plugin-transform-unicode-regex': 7.18.6_@babel+core@7.20.12 - '@babel/preset-modules': 0.1.5_@babel+core@7.20.12 - '@babel/types': 7.20.7 - babel-plugin-polyfill-corejs2: 0.3.3_@babel+core@7.20.12 - babel-plugin-polyfill-corejs3: 0.6.0_@babel+core@7.20.12 - babel-plugin-polyfill-regenerator: 0.4.1_@babel+core@7.20.12 - core-js-compat: 3.28.0 + '@babel/helper-validator-option': 7.21.0 + '@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression': 7.18.6_@babel+core@7.21.0 + '@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining': 7.20.7_@babel+core@7.21.0 + '@babel/plugin-proposal-async-generator-functions': 7.20.7_@babel+core@7.21.0 + '@babel/plugin-proposal-class-properties': 7.18.6_@babel+core@7.21.0 + '@babel/plugin-proposal-class-static-block': 7.21.0_@babel+core@7.21.0 + '@babel/plugin-proposal-dynamic-import': 7.18.6_@babel+core@7.21.0 + '@babel/plugin-proposal-export-namespace-from': 7.18.9_@babel+core@7.21.0 + '@babel/plugin-proposal-json-strings': 7.18.6_@babel+core@7.21.0 + '@babel/plugin-proposal-logical-assignment-operators': 7.20.7_@babel+core@7.21.0 + '@babel/plugin-proposal-nullish-coalescing-operator': 7.18.6_@babel+core@7.21.0 + '@babel/plugin-proposal-numeric-separator': 7.18.6_@babel+core@7.21.0 + '@babel/plugin-proposal-object-rest-spread': 7.20.7_@babel+core@7.21.0 + '@babel/plugin-proposal-optional-catch-binding': 7.18.6_@babel+core@7.21.0 + '@babel/plugin-proposal-optional-chaining': 7.21.0_@babel+core@7.21.0 + '@babel/plugin-proposal-private-methods': 7.18.6_@babel+core@7.21.0 + '@babel/plugin-proposal-private-property-in-object': 7.21.0_@babel+core@7.21.0 + '@babel/plugin-proposal-unicode-property-regex': 7.18.6_@babel+core@7.21.0 + '@babel/plugin-syntax-async-generators': 7.8.4_@babel+core@7.21.0 + '@babel/plugin-syntax-class-properties': 7.12.13_@babel+core@7.21.0 + '@babel/plugin-syntax-class-static-block': 7.14.5_@babel+core@7.21.0 + '@babel/plugin-syntax-dynamic-import': 7.8.3_@babel+core@7.21.0 + '@babel/plugin-syntax-export-namespace-from': 7.8.3_@babel+core@7.21.0 + '@babel/plugin-syntax-import-assertions': 7.20.0_@babel+core@7.21.0 + '@babel/plugin-syntax-json-strings': 7.8.3_@babel+core@7.21.0 + '@babel/plugin-syntax-logical-assignment-operators': 7.10.4_@babel+core@7.21.0 + '@babel/plugin-syntax-nullish-coalescing-operator': 7.8.3_@babel+core@7.21.0 + '@babel/plugin-syntax-numeric-separator': 7.10.4_@babel+core@7.21.0 + '@babel/plugin-syntax-object-rest-spread': 7.8.3_@babel+core@7.21.0 + '@babel/plugin-syntax-optional-catch-binding': 7.8.3_@babel+core@7.21.0 + '@babel/plugin-syntax-optional-chaining': 7.8.3_@babel+core@7.21.0 + '@babel/plugin-syntax-private-property-in-object': 7.14.5_@babel+core@7.21.0 + '@babel/plugin-syntax-top-level-await': 7.14.5_@babel+core@7.21.0 + '@babel/plugin-transform-arrow-functions': 7.20.7_@babel+core@7.21.0 + '@babel/plugin-transform-async-to-generator': 7.20.7_@babel+core@7.21.0 + '@babel/plugin-transform-block-scoped-functions': 7.18.6_@babel+core@7.21.0 + '@babel/plugin-transform-block-scoping': 7.21.0_@babel+core@7.21.0 + '@babel/plugin-transform-classes': 7.21.0_@babel+core@7.21.0 + '@babel/plugin-transform-computed-properties': 7.20.7_@babel+core@7.21.0 + '@babel/plugin-transform-destructuring': 7.20.7_@babel+core@7.21.0 + '@babel/plugin-transform-dotall-regex': 7.18.6_@babel+core@7.21.0 + '@babel/plugin-transform-duplicate-keys': 7.18.9_@babel+core@7.21.0 + '@babel/plugin-transform-exponentiation-operator': 7.18.6_@babel+core@7.21.0 + '@babel/plugin-transform-for-of': 7.21.0_@babel+core@7.21.0 + '@babel/plugin-transform-function-name': 7.18.9_@babel+core@7.21.0 + '@babel/plugin-transform-literals': 7.18.9_@babel+core@7.21.0 + '@babel/plugin-transform-member-expression-literals': 7.18.6_@babel+core@7.21.0 + '@babel/plugin-transform-modules-amd': 7.20.11_@babel+core@7.21.0 + '@babel/plugin-transform-modules-commonjs': 7.21.2_@babel+core@7.21.0 + '@babel/plugin-transform-modules-systemjs': 7.20.11_@babel+core@7.21.0 + '@babel/plugin-transform-modules-umd': 7.18.6_@babel+core@7.21.0 + '@babel/plugin-transform-named-capturing-groups-regex': 7.20.5_@babel+core@7.21.0 + '@babel/plugin-transform-new-target': 7.18.6_@babel+core@7.21.0 + '@babel/plugin-transform-object-super': 7.18.6_@babel+core@7.21.0 + '@babel/plugin-transform-parameters': 7.20.7_@babel+core@7.21.0 + '@babel/plugin-transform-property-literals': 7.18.6_@babel+core@7.21.0 + '@babel/plugin-transform-regenerator': 7.20.5_@babel+core@7.21.0 + '@babel/plugin-transform-reserved-words': 7.18.6_@babel+core@7.21.0 + '@babel/plugin-transform-shorthand-properties': 7.18.6_@babel+core@7.21.0 + '@babel/plugin-transform-spread': 7.20.7_@babel+core@7.21.0 + '@babel/plugin-transform-sticky-regex': 7.18.6_@babel+core@7.21.0 + '@babel/plugin-transform-template-literals': 7.18.9_@babel+core@7.21.0 + '@babel/plugin-transform-typeof-symbol': 7.18.9_@babel+core@7.21.0 + '@babel/plugin-transform-unicode-escapes': 7.18.10_@babel+core@7.21.0 + '@babel/plugin-transform-unicode-regex': 7.18.6_@babel+core@7.21.0 + '@babel/preset-modules': 0.1.5_@babel+core@7.21.0 + '@babel/types': 7.21.2 + babel-plugin-polyfill-corejs2: 0.3.3_@babel+core@7.21.0 + babel-plugin-polyfill-corejs3: 0.6.0_@babel+core@7.21.0 + babel-plugin-polyfill-regenerator: 0.4.1_@babel+core@7.21.0 + core-js-compat: 3.29.0 semver: 6.3.0 transitivePeerDependencies: - supports-color dev: true - /@babel/preset-modules/0.1.5_@babel+core@7.20.12: + /@babel/preset-modules/0.1.5_@babel+core@7.21.0: resolution: {integrity: sha512-A57th6YRG7oR3cq/yt/Y84MvGgE0eJG2F1JLhKuyG+jFxEgrd/HAMJatiFtmOiZurz+0DkrvbheCLaV5f2JfjA==} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.20.12 + '@babel/core': 7.21.0 '@babel/helper-plugin-utils': 7.20.2 - '@babel/plugin-proposal-unicode-property-regex': 7.18.6_@babel+core@7.20.12 - '@babel/plugin-transform-dotall-regex': 7.18.6_@babel+core@7.20.12 - '@babel/types': 7.20.7 + '@babel/plugin-proposal-unicode-property-regex': 7.18.6_@babel+core@7.21.0 + '@babel/plugin-transform-dotall-regex': 7.18.6_@babel+core@7.21.0 + '@babel/types': 7.21.2 esutils: 2.0.3 dev: true @@ -1227,8 +1228,8 @@ packages: resolution: {integrity: sha512-x/rqGMdzj+fWZvCOYForTghzbtqPDZ5gPwaoNGHdgDfF2QA/XZbCBp4Moo5scrkAMPhB7z26XM/AaHuIJdgauA==} dev: true - /@babel/runtime/7.20.13: - resolution: {integrity: sha512-gt3PKXs0DBoL9xCvOIIZ2NEqAGZqHjAnmVbfQtB620V0uReIQutpel14KcneZuer7UioY8ALKZ7iocavvzTNFA==} + /@babel/runtime/7.21.0: + resolution: {integrity: sha512-xwII0//EObnq89Ji5AKYQaRYiW/nZ3llSv29d49IuxPhKbtJoLP+9QUUZ4nVragQVtaVGeZrpB+ZtG/Pdy/POw==} engines: {node: '>=6.9.0'} dependencies: regenerator-runtime: 0.13.11 @@ -1238,30 +1239,30 @@ packages: engines: {node: '>=6.9.0'} dependencies: '@babel/code-frame': 7.18.6 - '@babel/parser': 7.20.15 - '@babel/types': 7.20.7 + '@babel/parser': 7.21.2 + '@babel/types': 7.21.2 dev: true - /@babel/traverse/7.20.13: - resolution: {integrity: sha512-kMJXfF0T6DIS9E8cgdLCSAL+cuCK+YEZHWiLK0SXpTo8YRj5lpJu3CDNKiIBCne4m9hhTIqUg6SYTAI39tAiVQ==} + /@babel/traverse/7.21.2: + resolution: {integrity: sha512-ts5FFU/dSUPS13tv8XiEObDu9K+iagEKME9kAbaP7r0Y9KtZJZ+NGndDvWoRAYNpeWafbpFeki3q9QoMD6gxyw==} engines: {node: '>=6.9.0'} dependencies: '@babel/code-frame': 7.18.6 - '@babel/generator': 7.20.14 + '@babel/generator': 7.21.1 '@babel/helper-environment-visitor': 7.18.9 - '@babel/helper-function-name': 7.19.0 + '@babel/helper-function-name': 7.21.0 '@babel/helper-hoist-variables': 7.18.6 '@babel/helper-split-export-declaration': 7.18.6 - '@babel/parser': 7.20.15 - '@babel/types': 7.20.7 + '@babel/parser': 7.21.2 + '@babel/types': 7.21.2 debug: 4.3.4 globals: 11.12.0 transitivePeerDependencies: - supports-color dev: true - /@babel/types/7.20.7: - resolution: {integrity: sha512-69OnhBxSSgK0OzTJai4kyPDiKTIe3j+ctaHdIGVbRahTLAT7L3R9oeXHC2aVSuGYt3cVnoAMDmOCgJ2yaiLMvg==} + /@babel/types/7.21.2: + resolution: {integrity: sha512-3wRZSs7jiFaB8AjxiiD+VqN5DTG2iRvJGQ+qYFrs/654lg6kGTQWIOFjlBo5RaXuAZjBmP3+OQH4dmhqiiyYxw==} engines: {node: '>=6.9.0'} dependencies: '@babel/helper-string-parser': 7.19.4 @@ -1282,7 +1283,7 @@ packages: lodash.isfunction: 3.0.9 resolve-from: 5.0.0 resolve-global: 1.0.0 - yargs: 17.7.0 + yargs: 17.7.1 transitivePeerDependencies: - '@swc/core' - '@swc/wasm' @@ -1347,15 +1348,15 @@ packages: '@commitlint/execute-rule': 17.4.0 '@commitlint/resolve-extends': 17.4.4 '@commitlint/types': 17.4.4 - '@types/node': 18.14.0 + '@types/node': 18.14.5 chalk: 4.1.2 - cosmiconfig: 8.0.0 - cosmiconfig-typescript-loader: 4.3.0_ipkhww4xc5z2tt2x53vp2mt2be + cosmiconfig: 8.1.0 + cosmiconfig-typescript-loader: 4.3.0_v3kbstntxphny76zodmlbds7aa lodash.isplainobject: 4.0.6 lodash.merge: 4.6.2 lodash.uniq: 4.5.0 resolve-from: 5.0.0 - ts-node: 10.9.1_tncu2ai53lzgmizdedur7lbibe + ts-node: 10.9.1_2cogyjchoknpkalymtikkc6nay typescript: 4.9.5 transitivePeerDependencies: - '@swc/core' @@ -1445,8 +1446,8 @@ packages: tslib: 2.5.0 dev: false - /@dnd-kit/core/6.0.7_biqbaboplfbrettd7655fr4n2y: - resolution: {integrity: sha512-qcLBTVTjmLuLqC0RHQ+dFKN5neWmAI56H9xZ+he9WEJEkAvR76YAcz7DSWDJfjErepfG2H3Fkb9lYiX7cPR62g==} + /@dnd-kit/core/6.0.8_biqbaboplfbrettd7655fr4n2y: + resolution: {integrity: sha512-lYaoP8yHTQSLlZe6Rr9qogouGUz9oRUj4AHhDQGQzq/hqaJRpFo65X+JKsdHf8oUFBzx5A+SJPUvxAwTF2OabA==} peerDependencies: react: '>=16.8.0' react-dom: '>=16.8.0' @@ -1458,25 +1459,25 @@ packages: tslib: 2.5.0 dev: false - /@dnd-kit/modifiers/6.0.1_pmudlfv2z3i7vvlookxjkeidxe: + /@dnd-kit/modifiers/6.0.1_52scne4zmdeyjh2otzkgz2xfvu: resolution: {integrity: sha512-rbxcsg3HhzlcMHVHWDuh9LCjpOVAgqbV78wLGI8tziXY3+qcMQ61qVXIvNKQFuhj75dSfD+o+PYZQ/NUk2A23A==} peerDependencies: '@dnd-kit/core': ^6.0.6 react: '>=16.8.0' dependencies: - '@dnd-kit/core': 6.0.7_biqbaboplfbrettd7655fr4n2y + '@dnd-kit/core': 6.0.8_biqbaboplfbrettd7655fr4n2y '@dnd-kit/utilities': 3.2.1_react@18.2.0 react: 18.2.0 tslib: 2.5.0 dev: false - /@dnd-kit/sortable/7.0.2_pmudlfv2z3i7vvlookxjkeidxe: + /@dnd-kit/sortable/7.0.2_52scne4zmdeyjh2otzkgz2xfvu: resolution: {integrity: sha512-wDkBHHf9iCi1veM834Gbk1429bd4lHX4RpAwT0y2cHLf246GAvU2sVw/oxWNpPKQNQRQaeGXhAVgrOl1IT+iyA==} peerDependencies: '@dnd-kit/core': ^6.0.7 react: '>=16.8.0' dependencies: - '@dnd-kit/core': 6.0.7_biqbaboplfbrettd7655fr4n2y + '@dnd-kit/core': 6.0.8_biqbaboplfbrettd7655fr4n2y '@dnd-kit/utilities': 3.2.1_react@18.2.0 react: 18.2.0 tslib: 2.5.0 @@ -1495,7 +1496,7 @@ packages: resolution: {integrity: sha512-p2dAqtVrkhSa7xz1u/m9eHYdLi+en8NowrmXeF/dKtJpU8lCWli8RUAati7NcSl0afsBott48pdnANuD0wh9QQ==} dependencies: '@babel/helper-module-imports': 7.18.6 - '@babel/runtime': 7.20.13 + '@babel/runtime': 7.21.0 '@emotion/hash': 0.9.0 '@emotion/memoize': 0.8.0 '@emotion/serialize': 1.1.1 @@ -1540,7 +1541,7 @@ packages: '@types/react': optional: true dependencies: - '@babel/runtime': 7.20.13 + '@babel/runtime': 7.21.0 '@emotion/babel-plugin': 11.10.6 '@emotion/cache': 11.10.5 '@emotion/serialize': 1.1.1 @@ -1576,7 +1577,7 @@ packages: '@types/react': optional: true dependencies: - '@babel/runtime': 7.20.13 + '@babel/runtime': 7.21.0 '@emotion/babel-plugin': 11.10.6 '@emotion/is-prop-valid': 1.2.0 '@emotion/react': 11.10.6_pmekkgnqduwlme35zpnqhenc34 @@ -1901,32 +1902,8 @@ packages: resolution: {integrity: sha512-dfLbk+PwWvFzSxwk3n5ySL0hfBog779o8h68wK/7/APo/7cgyWp5jcXockbxdk5kFRkbeXWm4Fbi9FrdN381sA==} dev: false - /@mui/base/5.0.0-alpha.117_zula6vjvt3wdocc4mwcxqa6nzi: - resolution: {integrity: sha512-3GlRSZdSrvDQ4k03dSV2rM+97JbNWimFOqGsE7n7Mi8WuBSYCgnPe56bQp3E5cShOrTn11dGH8FRCmVMcCEXqQ==} - engines: {node: '>=12.0.0'} - peerDependencies: - '@types/react': ^17.0.0 || ^18.0.0 - react: ^17.0.0 || ^18.0.0 - react-dom: ^17.0.0 || ^18.0.0 - peerDependenciesMeta: - '@types/react': - optional: true - dependencies: - '@babel/runtime': 7.20.13 - '@emotion/is-prop-valid': 1.2.0 - '@mui/types': 7.2.3_@types+react@18.0.28 - '@mui/utils': 5.11.9_react@18.2.0 - '@popperjs/core': 2.11.6 - '@types/react': 18.0.28 - clsx: 1.2.1 - prop-types: 15.8.1 - react: 18.2.0 - react-dom: 18.2.0_react@18.2.0 - react-is: 18.2.0 - dev: false - - /@mui/base/5.0.0-alpha.118_zula6vjvt3wdocc4mwcxqa6nzi: - resolution: {integrity: sha512-GAEpqhnuHjRaAZLdxFNuOf2GDTp9sUawM46oHZV4VnYPFjXJDkIYFWfIQLONb0nga92OiqS5DD/scGzVKCL0Mw==} + /@mui/base/5.0.0-alpha.119_zula6vjvt3wdocc4mwcxqa6nzi: + resolution: {integrity: sha512-XA5zhlYfXi67u613eIF0xRmktkatx6ERy3h+PwrMN5IcWFbgiL1guz8VpdXON+GWb8+G7B8t5oqTFIaCqaSAeA==} engines: {node: '>=12.0.0'} peerDependencies: '@types/react': ^17.0.0 || ^18.0.0 @@ -1936,10 +1913,10 @@ packages: '@types/react': optional: true dependencies: - '@babel/runtime': 7.20.13 + '@babel/runtime': 7.21.0 '@emotion/is-prop-valid': 1.2.0 '@mui/types': 7.2.3_@types+react@18.0.28 - '@mui/utils': 5.11.9_react@18.2.0 + '@mui/utils': 5.11.11_react@18.2.0 '@popperjs/core': 2.11.6 '@types/react': 18.0.28 clsx: 1.2.1 @@ -1949,12 +1926,12 @@ packages: react-is: 18.2.0 dev: false - /@mui/core-downloads-tracker/5.11.9: - resolution: {integrity: sha512-YGEtucQ/Nl91VZkzYaLad47Cdui51n/hW+OQm4210g4N3/nZzBxmGeKfubEalf+ShKH4aYDS86XTO6q/TpZnjQ==} + /@mui/core-downloads-tracker/5.11.11: + resolution: {integrity: sha512-0YK0K9GfW1ysw9z4ztWAjLW+bktf+nExMyn2+EQe1Ijb0kF2kz1kIOmb4+di0/PsXG70uCuw4DhEIdNd+JQkRA==} dev: false - /@mui/icons-material/5.11.9_ofpk46txu7v2f5mzrtv4xsczka: - resolution: {integrity: sha512-SPANMk6K757Q1x48nCwPGdSNb8B71d+2hPMJ0V12VWerpSsbjZtvAPi5FAn13l2O5mwWkvI0Kne+0tCgnNxMNw==} + /@mui/icons-material/5.11.11_h5fh5ntwxtyr677wxvzgewjsma: + resolution: {integrity: sha512-Eell3ADmQVE8HOpt/LZ3zIma8JSvPh3XgnhwZLT0k5HRqZcd6F/QDHc7xsWtgz09t+UEFvOYJXjtrwKmLdwwpw==} engines: {node: '>=12.0.0'} peerDependencies: '@mui/material': ^5.0.0 @@ -1964,14 +1941,14 @@ packages: '@types/react': optional: true dependencies: - '@babel/runtime': 7.20.13 - '@mui/material': 5.11.9_xqeqsl5kvjjtyxwyi3jhw3yuli + '@babel/runtime': 7.21.0 + '@mui/material': 5.11.11_xqeqsl5kvjjtyxwyi3jhw3yuli '@types/react': 18.0.28 react: 18.2.0 dev: false - /@mui/lab/5.0.0-alpha.119_oc7w4sqyc6xrc5vjlyub4opq2u: - resolution: {integrity: sha512-74l+gA7fybcB2zyOLjWsPbOxt2F4ydu4t0a5rEC/Y4v6q0wDKaW1El1S/+zuE5Xw/fQmiwNrQ+Do5fDbRZDAsw==} + /@mui/lab/5.0.0-alpha.121_gyxidxyv3rk32gbfkthfb2r3tm: + resolution: {integrity: sha512-/W5H09zje9psma3RixtilTf1Tk2zUuK9j16e1W+V7oe/1pW6hNj6aZfm8y0t4qPUDQfxMBzlQm26XQx9i8F9PA==} engines: {node: '>=12.0.0'} peerDependencies: '@emotion/react': ^11.5.0 @@ -1988,14 +1965,14 @@ packages: '@types/react': optional: true dependencies: - '@babel/runtime': 7.20.13 + '@babel/runtime': 7.21.0 '@emotion/react': 11.10.6_pmekkgnqduwlme35zpnqhenc34 '@emotion/styled': 11.10.6_oouaibmszuch5k64ms7uxp2aia - '@mui/base': 5.0.0-alpha.117_zula6vjvt3wdocc4mwcxqa6nzi - '@mui/material': 5.11.9_xqeqsl5kvjjtyxwyi3jhw3yuli - '@mui/system': 5.11.9_d2lgyfpecxdc2bsiwyag5wf7ti + '@mui/base': 5.0.0-alpha.119_zula6vjvt3wdocc4mwcxqa6nzi + '@mui/material': 5.11.11_xqeqsl5kvjjtyxwyi3jhw3yuli + '@mui/system': 5.11.11_d2lgyfpecxdc2bsiwyag5wf7ti '@mui/types': 7.2.3_@types+react@18.0.28 - '@mui/utils': 5.11.9_react@18.2.0 + '@mui/utils': 5.11.11_react@18.2.0 '@types/react': 18.0.28 clsx: 1.2.1 prop-types: 15.8.1 @@ -2004,8 +1981,8 @@ packages: react-is: 18.2.0 dev: false - /@mui/material/5.11.9_xqeqsl5kvjjtyxwyi3jhw3yuli: - resolution: {integrity: sha512-Wb3WzjzYyi/WKSl/XlF7aC8kk2NE21IoHMF7hNQMkPb0GslbWwR4OUjlBpxtG+RSZn44wMZkEDNB9Hw0TDsd8g==} + /@mui/material/5.11.11_xqeqsl5kvjjtyxwyi3jhw3yuli: + resolution: {integrity: sha512-sSe0dmKjB1IGOYt32Pcha+cXV3IIrX5L5mFAF9LDRssp/x53bluhgLLbkc8eTiJvueVvo6HAyze6EkFEYLQRXQ==} engines: {node: '>=12.0.0'} peerDependencies: '@emotion/react': ^11.5.0 @@ -2021,14 +1998,14 @@ packages: '@types/react': optional: true dependencies: - '@babel/runtime': 7.20.13 + '@babel/runtime': 7.21.0 '@emotion/react': 11.10.6_pmekkgnqduwlme35zpnqhenc34 '@emotion/styled': 11.10.6_oouaibmszuch5k64ms7uxp2aia - '@mui/base': 5.0.0-alpha.118_zula6vjvt3wdocc4mwcxqa6nzi - '@mui/core-downloads-tracker': 5.11.9 - '@mui/system': 5.11.9_d2lgyfpecxdc2bsiwyag5wf7ti + '@mui/base': 5.0.0-alpha.119_zula6vjvt3wdocc4mwcxqa6nzi + '@mui/core-downloads-tracker': 5.11.11 + '@mui/system': 5.11.11_d2lgyfpecxdc2bsiwyag5wf7ti '@mui/types': 7.2.3_@types+react@18.0.28 - '@mui/utils': 5.11.9_react@18.2.0 + '@mui/utils': 5.11.11_react@18.2.0 '@types/react': 18.0.28 '@types/react-transition-group': 4.4.5 clsx: 1.2.1 @@ -2040,8 +2017,8 @@ packages: react-transition-group: 4.4.5_biqbaboplfbrettd7655fr4n2y dev: false - /@mui/private-theming/5.11.9_pmekkgnqduwlme35zpnqhenc34: - resolution: {integrity: sha512-XMyVIFGomVCmCm92EvYlgq3zrC9K+J6r7IKl/rBJT2/xVYoRY6uM7jeB+Wxh7kXxnW9Dbqsr2yL3cx6wSD1sAg==} + /@mui/private-theming/5.11.11_pmekkgnqduwlme35zpnqhenc34: + resolution: {integrity: sha512-yLgTkjNC1mpye2SOUkc+zQQczUpg8NvQAETvxwXTMzNgJK1pv4htL7IvBM5vmCKG7IHAB3hX26W2u6i7bxwF3A==} engines: {node: '>=12.0.0'} peerDependencies: '@types/react': ^17.0.0 || ^18.0.0 @@ -2050,15 +2027,15 @@ packages: '@types/react': optional: true dependencies: - '@babel/runtime': 7.20.13 - '@mui/utils': 5.11.9_react@18.2.0 + '@babel/runtime': 7.21.0 + '@mui/utils': 5.11.11_react@18.2.0 '@types/react': 18.0.28 prop-types: 15.8.1 react: 18.2.0 dev: false - /@mui/styled-engine/5.11.9_xqp3pgpqjlfxxa3zxu4zoc4fba: - resolution: {integrity: sha512-bkh2CjHKOMy98HyOc8wQXEZvhOmDa/bhxMUekFX5IG0/w4f5HJ8R6+K6nakUUYNEgjOWPYzNPrvGB8EcGbhahQ==} + /@mui/styled-engine/5.11.11_xqp3pgpqjlfxxa3zxu4zoc4fba: + resolution: {integrity: sha512-wV0UgW4lN5FkDBXefN8eTYeuE9sjyQdg5h94vtwZCUamGQEzmCOtir4AakgmbWMy0x8OLjdEUESn9wnf5J9MOg==} engines: {node: '>=12.0.0'} peerDependencies: '@emotion/react': ^11.4.1 @@ -2070,7 +2047,7 @@ packages: '@emotion/styled': optional: true dependencies: - '@babel/runtime': 7.20.13 + '@babel/runtime': 7.21.0 '@emotion/cache': 11.10.5 '@emotion/react': 11.10.6_pmekkgnqduwlme35zpnqhenc34 '@emotion/styled': 11.10.6_oouaibmszuch5k64ms7uxp2aia @@ -2079,8 +2056,8 @@ packages: react: 18.2.0 dev: false - /@mui/system/5.11.9_d2lgyfpecxdc2bsiwyag5wf7ti: - resolution: {integrity: sha512-h6uarf+l3FO6l75Nf7yO+qDGrIoa1DM9nAMCUFZQsNCDKOInRzcptnm8M1w/Z3gVetfeeGoIGAYuYKbft6KZZA==} + /@mui/system/5.11.11_d2lgyfpecxdc2bsiwyag5wf7ti: + resolution: {integrity: sha512-a9gaOAJBjpzypDfhbGZQ8HzdcxdxsKkFvbp1aAWZhFHBPdehEkARNh7mj851VfEhD/GdffYt85PFKFKdUta5Eg==} engines: {node: '>=12.0.0'} peerDependencies: '@emotion/react': ^11.5.0 @@ -2095,13 +2072,13 @@ packages: '@types/react': optional: true dependencies: - '@babel/runtime': 7.20.13 + '@babel/runtime': 7.21.0 '@emotion/react': 11.10.6_pmekkgnqduwlme35zpnqhenc34 '@emotion/styled': 11.10.6_oouaibmszuch5k64ms7uxp2aia - '@mui/private-theming': 5.11.9_pmekkgnqduwlme35zpnqhenc34 - '@mui/styled-engine': 5.11.9_xqp3pgpqjlfxxa3zxu4zoc4fba + '@mui/private-theming': 5.11.11_pmekkgnqduwlme35zpnqhenc34 + '@mui/styled-engine': 5.11.11_xqp3pgpqjlfxxa3zxu4zoc4fba '@mui/types': 7.2.3_@types+react@18.0.28 - '@mui/utils': 5.11.9_react@18.2.0 + '@mui/utils': 5.11.11_react@18.2.0 '@types/react': 18.0.28 clsx: 1.2.1 csstype: 3.1.1 @@ -2120,13 +2097,13 @@ packages: '@types/react': 18.0.28 dev: false - /@mui/utils/5.11.9_react@18.2.0: - resolution: {integrity: sha512-eOJaqzcEs4qEwolcvFAmXGpln+uvouvOS9FUX6Wkrte+4I8rZbjODOBDVNlK+V6/ziTfD4iNKC0G+KfOTApbqg==} + /@mui/utils/5.11.11_react@18.2.0: + resolution: {integrity: sha512-neMM5rrEXYQrOrlxUfns/TGgX4viS8K2zb9pbQh11/oUUYFlGI32Tn+PHePQx7n6Fy/0zq6WxdBFC9VpnJ5JrQ==} engines: {node: '>=12.0.0'} peerDependencies: react: ^17.0.0 || ^18.0.0 dependencies: - '@babel/runtime': 7.20.13 + '@babel/runtime': 7.21.0 '@types/prop-types': 15.7.5 '@types/react-is': 17.0.3 prop-types: 15.8.1 @@ -2222,8 +2199,8 @@ packages: react: 18.2.0 dev: false - /@reduxjs/toolkit/1.9.2_k4ae6lp43ej6mezo3ztvx6pykq: - resolution: {integrity: sha512-5ZAZ7hwAKWSii5T6NTPmgIBUqyVdlDs+6JjThz6J6dmHLDm6zCzv2OjHIFAi3Vvs1qjmXU0bm6eBojukYXjVMQ==} + /@reduxjs/toolkit/1.9.3_k4ae6lp43ej6mezo3ztvx6pykq: + resolution: {integrity: sha512-GU2TNBQVofL09VGmuSioNPQIu6Ml0YLf4EJhgj0AvBadRlCGzUWet8372LjvO4fqKZF2vH1xU0htAa7BrK9pZg==} peerDependencies: react: ^16.9.0 || ^17.0.0 || ^18 react-redux: ^7.2.1 || ^8.0.2 @@ -2241,8 +2218,8 @@ packages: reselect: 4.1.7 dev: false - /@remix-run/router/1.3.2: - resolution: {integrity: sha512-t54ONhl/h75X94SWsHGQ4G/ZrCEguKSRQr7DrjTciJXW0YU1QhlwYeycvK5JgkzlxmvrK7wq1NB/PLtHxoiDcA==} + /@remix-run/router/1.3.3: + resolution: {integrity: sha512-YRHie1yQEj0kqqCTCJEfHqYSSNlZQ696QJG+MMiW4mxSl9I0ojz/eRhJS4fs88Z5i6D1SmoF9d3K99/QOhI8/w==} engines: {node: '>=14'} dev: false @@ -2254,19 +2231,19 @@ packages: picomatch: 2.3.1 dev: true - /@sentry/browser/7.38.0: - resolution: {integrity: sha512-rPJr+2jRYL29PeMYA2JgzYKTZQx6bc3T9evbAdIh0n+popSjpVyOpOMV/3l6A7KZeeix3dpp6eUZUxTJukqriQ==} + /@sentry/browser/7.40.0: + resolution: {integrity: sha512-07rZ+cTcpmYB1r84/oZtmSPJJvLCxW8yIh/5s4MdKRyZpqIDKhOz6cCS/4j+l1V+MeLcNLZBjFtNdKA2eocTpg==} engines: {node: '>=8'} dependencies: - '@sentry/core': 7.38.0 - '@sentry/replay': 7.38.0 - '@sentry/types': 7.38.0 - '@sentry/utils': 7.38.0 + '@sentry/core': 7.40.0 + '@sentry/replay': 7.40.0 + '@sentry/types': 7.40.0 + '@sentry/utils': 7.40.0 tslib: 1.14.1 dev: false - /@sentry/cli/2.13.0: - resolution: {integrity: sha512-F0WmiMmVjn6zZyD89MF8B1zGgcrJTi5yxPmd+sqpRKOfGCtucdRdM/BL1aU27BApaseCCfI1bgwtJSB2fUQqlw==} + /@sentry/cli/2.14.3: + resolution: {integrity: sha512-/u8SKYohSDbg/Tf180qAJY+wgxIwwpZwH0uV/xn9t7/Rdb6x/YyD4AbFcPlBORnEZq4goVazWBLjJEkepO95YA==} engines: {node: '>= 10'} hasBin: true requiresBuild: true @@ -2281,63 +2258,63 @@ packages: - supports-color dev: true - /@sentry/core/7.38.0: - resolution: {integrity: sha512-+hXh/SO3Ie6WC2b+wi01xLhyVREdkRXS5QBmCiv3z2ks2HvYXp7PoKSXJvNKiwCP+pBD+enOnM1YEzM2yEy5yw==} + /@sentry/core/7.40.0: + resolution: {integrity: sha512-OPAobQG0GTY++r5LWUcOA1lS+2TY2Lmw/i5s4kL9WbY+f08dbLNEGNBObY7/V98OL4f7OG+nWaPFybgM7kqUTQ==} engines: {node: '>=8'} dependencies: - '@sentry/types': 7.38.0 - '@sentry/utils': 7.38.0 + '@sentry/types': 7.40.0 + '@sentry/utils': 7.40.0 tslib: 1.14.1 dev: false - /@sentry/react/7.38.0_react@18.2.0: - resolution: {integrity: sha512-IZpQ0aptV3UPjvDj+xorrgPgnW2xIL6Zcy7B6wAgwTC81OUITE7YaShglGD0sJ8M1ReFuH9duwTysr/uv8AytQ==} + /@sentry/react/7.40.0_react@18.2.0: + resolution: {integrity: sha512-7yYagpOCdsXnVTtLL8Y7wAf2xXgsk2ncuju3O/G4kEckkLewZWmQeoknOSGFlAgVdGNhTaXc2WGzgOiBMOkhug==} engines: {node: '>=8'} peerDependencies: react: 15.x || 16.x || 17.x || 18.x dependencies: - '@sentry/browser': 7.38.0 - '@sentry/types': 7.38.0 - '@sentry/utils': 7.38.0 + '@sentry/browser': 7.40.0 + '@sentry/types': 7.40.0 + '@sentry/utils': 7.40.0 hoist-non-react-statics: 3.3.2 react: 18.2.0 tslib: 1.14.1 dev: false - /@sentry/replay/7.38.0: - resolution: {integrity: sha512-Ai78/OIYedny605x8uS0n/a5uj7qnuevogGD6agLat9lGc8DFvC07m2iS+EFyGOwtQzyDlRYJvYkHL8peR3crQ==} + /@sentry/replay/7.40.0: + resolution: {integrity: sha512-Y9Kvo9jKouUdrHQhHVv5SmWZClF5o7BFI6oVpLlv4zXORPQlyoZONM/9sxiMvvH73alDSpxzCoxyhlypAOH4ww==} engines: {node: '>=12'} dependencies: - '@sentry/core': 7.38.0 - '@sentry/types': 7.38.0 - '@sentry/utils': 7.38.0 + '@sentry/core': 7.40.0 + '@sentry/types': 7.40.0 + '@sentry/utils': 7.40.0 dev: false - /@sentry/tracing/7.38.0: - resolution: {integrity: sha512-ejXJp8oOT64MVtBzqdECUUaNzKbpu25St8Klub1i4Sm7xO+ZjDQDI4TIHvWojZvtkwQ3F4jcsCclc8KuyJunyQ==} + /@sentry/tracing/7.40.0: + resolution: {integrity: sha512-y1SNwlFEC7a2ThtWbT/KbnAVecAWyIeKiO/IRgyZSdcj1z4CliADKNQmkUhnDlLy8jV1ARGuZ1DvsuPNlWyDfw==} engines: {node: '>=8'} dependencies: - '@sentry/core': 7.38.0 - '@sentry/types': 7.38.0 - '@sentry/utils': 7.38.0 + '@sentry/core': 7.40.0 + '@sentry/types': 7.40.0 + '@sentry/utils': 7.40.0 tslib: 1.14.1 dev: false - /@sentry/types/7.38.0: - resolution: {integrity: sha512-NKOALR6pNUMzUrsk2m+dkPrO8uGNvNh1LD0BCPswKNjC2qHo1h1mDGCgBmF9+EWyii8ZoACTIsxvsda+MBf97Q==} + /@sentry/types/7.40.0: + resolution: {integrity: sha512-dIbqBenbmDx1F8pvfC11C88J83ecwumUhV+YOIxcmVd1fmlPF2hXWZ01+NTkTDkCu341sJx4wPQogByFy8FwGA==} engines: {node: '>=8'} dev: false - /@sentry/utils/7.38.0: - resolution: {integrity: sha512-MgbI3YmYuyyhUtvcXkgGBqjOW+nuLLNGUdWCK+C4kObf8VbLt3dSE/7SEMT6TSHLYQmxs2BxFgx5Agn97m68kQ==} + /@sentry/utils/7.40.0: + resolution: {integrity: sha512-ZdCbTpAXPiVVfvNJVftnDhsctOui71MDUhVIdLkgg4Cuic+WHGPRmmZ+H6uZdp7vRaeB+Uvnn5+t2iSAVo/mAA==} engines: {node: '>=8'} dependencies: - '@sentry/types': 7.38.0 + '@sentry/types': 7.40.0 tslib: 1.14.1 dev: false - /@swc/core-darwin-arm64/1.3.35: - resolution: {integrity: sha512-zQUFkHx4gZpu0uo2IspvPnKsz8bsdXd5bC33xwjtoAI1cpLerDyqo4v2zIahEp+FdKZjyVsLHtfJiQiA1Qka3A==} + /@swc/core-darwin-arm64/1.3.37: + resolution: {integrity: sha512-iIyVqqioUpVeT/hbBVfkrsjfCyL4idNH+LVKGmoTAWaTTSB0+UNhNuA7Wh2CqIHWh1Mv7IlumitWPcqsVDdoEw==} engines: {node: '>=10'} cpu: [arm64] os: [darwin] @@ -2345,8 +2322,8 @@ packages: dev: true optional: true - /@swc/core-darwin-x64/1.3.35: - resolution: {integrity: sha512-oOSkSGWtALovaw22lNevKD434OQTPf8X+dVPvPMrJXJpJ34dWDlFWpLntoc+arvKLNZ7LQmTuk8rR1hkrAY7cw==} + /@swc/core-darwin-x64/1.3.37: + resolution: {integrity: sha512-dao5nXPWKxtaxqak4ZkRyBoApNIelW/glantQhPhj0FjMjuIQc+v03ldJ8XDByWOG+6xuVUTheANCtEccxoQBw==} engines: {node: '>=10'} cpu: [x64] os: [darwin] @@ -2354,8 +2331,8 @@ packages: dev: true optional: true - /@swc/core-linux-arm-gnueabihf/1.3.35: - resolution: {integrity: sha512-Yie8k00O6O8BCATS/xeKStquV4OYSskUGRDXBQVDw1FrE23PHaSeHCgg4q6iNZjJzXCOJbaTCKnYoIDn9DMf7A==} + /@swc/core-linux-arm-gnueabihf/1.3.37: + resolution: {integrity: sha512-/mVrc8H/f062CUkqKGmBiil2VIYu4mKawHxERfeP1y38X5K/OwjG5s9MgO9TVxy+Ly6vejwj70kRhSa3hVp1Bw==} engines: {node: '>=10'} cpu: [arm] os: [linux] @@ -2363,8 +2340,8 @@ packages: dev: true optional: true - /@swc/core-linux-arm64-gnu/1.3.35: - resolution: {integrity: sha512-Zlv3WHa/4x2p51HSvjUWXHfSe1Gl2prqImUZJc8NZOlj75BFzVuR0auhQ+LbwvIQ3gaA1LODX9lyS9wXL3yjxA==} + /@swc/core-linux-arm64-gnu/1.3.37: + resolution: {integrity: sha512-eRQ3KaZI0j5LidTfOIi/kUVOOMuVmw1HCdt/Z1TAUKoHMLVxY8xcJ3pEE3/+ednI60EmHpwpJRs6LelXyL6uzQ==} engines: {node: '>=10'} cpu: [arm64] os: [linux] @@ -2372,8 +2349,8 @@ packages: dev: true optional: true - /@swc/core-linux-arm64-musl/1.3.35: - resolution: {integrity: sha512-u6tCYsrSyZ8U+4jLMA/O82veBfLy2aUpn51WxQaeH7wqZGy9TGSJXoO8vWxARQ6b72vjsnKDJHP4MD8hFwcctg==} + /@swc/core-linux-arm64-musl/1.3.37: + resolution: {integrity: sha512-w2BRLODyxNQY2rfHZMZ5ir6QrrnGBPlnIslTrgKmVbn1OjZoxUCtuqhrYnCmybaAc4DOkeH02TqynEFXrm+EMw==} engines: {node: '>=10'} cpu: [arm64] os: [linux] @@ -2381,8 +2358,8 @@ packages: dev: true optional: true - /@swc/core-linux-x64-gnu/1.3.35: - resolution: {integrity: sha512-Dtxf2IbeH7XlNhP1Qt2/MvUPkpEbn7hhGfpSRs4ot8D3Vf5QEX4S/QtC1OsFWuciiYgHAT1Ybjt4xZic9DSkmA==} + /@swc/core-linux-x64-gnu/1.3.37: + resolution: {integrity: sha512-CfoH8EsZJZ9kunjMUjBNYD5fFuO86zw+K/o4wEw72Yg6ZEiqPmeIlCKU8tpTv4sK+CbhUXrmVzMB5tqsb2jALQ==} engines: {node: '>=10'} cpu: [x64] os: [linux] @@ -2390,8 +2367,8 @@ packages: dev: true optional: true - /@swc/core-linux-x64-musl/1.3.35: - resolution: {integrity: sha512-4XavNJ60GprjpTiESCu5daJUnmErixPAqDitJSMu4TV32LNIE8G00S9pDLXinDTW1rgcGtQdq1NLkNRmwwovtg==} + /@swc/core-linux-x64-musl/1.3.37: + resolution: {integrity: sha512-9YPrHYNdoG7PK11gV51GfL45biI2dic+YTqHUDKyykemsD7Ot1zUFX7Ty//pdvpKcKSff6SrHbfFACD5ziNirA==} engines: {node: '>=10'} cpu: [x64] os: [linux] @@ -2399,8 +2376,8 @@ packages: dev: true optional: true - /@swc/core-win32-arm64-msvc/1.3.35: - resolution: {integrity: sha512-dNGfKCUSX2M4qVyaS80Lyos0FkXyHRCvrdQ2Y4Hrg3FVokiuw3yY6fLohpUfQ5ws3n2A39dh7jGDeh34+l0sGA==} + /@swc/core-win32-arm64-msvc/1.3.37: + resolution: {integrity: sha512-h17Ek8/wCDje6BrXOvCXBM80oBRmTSMMdLyt87whTl5xqYlWYYs9oQIzZndNRTlNpTgjGO8Ns2eo4kwVxIkBIA==} engines: {node: '>=10'} cpu: [arm64] os: [win32] @@ -2408,8 +2385,8 @@ packages: dev: true optional: true - /@swc/core-win32-ia32-msvc/1.3.35: - resolution: {integrity: sha512-ChuPSrDR+JBf7S7dEKPicnG8A3bM0uWPsW2vG+V2wH4iNfNxKVemESHosmYVeEZXqMpomNMvLyeHep1rjRsc0Q==} + /@swc/core-win32-ia32-msvc/1.3.37: + resolution: {integrity: sha512-1BR175E1olGy/zdt94cgdb6ps/lBNissAOaxyBk8taFpcjy3zpdP30yAoH0GIsC6isnZ5JfArbOJNRXXO5tE0Q==} engines: {node: '>=10'} cpu: [ia32] os: [win32] @@ -2417,8 +2394,8 @@ packages: dev: true optional: true - /@swc/core-win32-x64-msvc/1.3.35: - resolution: {integrity: sha512-/RvphT4WfuGfIK84Ha0dovdPrKB1bW/mc+dtdmhv2E3EGkNc5FoueNwYmXWRimxnU7X0X7IkcRhyKB4G5DeAmg==} + /@swc/core-win32-x64-msvc/1.3.37: + resolution: {integrity: sha512-1siDQ7dccQ1pesJmgAL3BUBbRPtfbNInOWnZOkiie/DfFqGQ117QKnCVyjUvwFKfTQx1+3UUTDmMSlRd00SlXg==} engines: {node: '>=10'} cpu: [x64] os: [win32] @@ -2426,21 +2403,21 @@ packages: dev: true optional: true - /@swc/core/1.3.35: - resolution: {integrity: sha512-KmiBin0XSVzJhzX19zTiCqmLslZ40Cl7zqskJcTDeIrRhfgKdiAsxzYUanJgMJIRjYtl9Kcg1V/Ip2o2wL8v3w==} + /@swc/core/1.3.37: + resolution: {integrity: sha512-VOFlEQ1pReOM73N9A7R8rt561GU8Rxsq833jiimWDUB2sXEN3V6n6wFTgYmZuMz2T4/R0cQA1nV48KkaT4gkFw==} engines: {node: '>=10'} requiresBuild: true optionalDependencies: - '@swc/core-darwin-arm64': 1.3.35 - '@swc/core-darwin-x64': 1.3.35 - '@swc/core-linux-arm-gnueabihf': 1.3.35 - '@swc/core-linux-arm64-gnu': 1.3.35 - '@swc/core-linux-arm64-musl': 1.3.35 - '@swc/core-linux-x64-gnu': 1.3.35 - '@swc/core-linux-x64-musl': 1.3.35 - '@swc/core-win32-arm64-msvc': 1.3.35 - '@swc/core-win32-ia32-msvc': 1.3.35 - '@swc/core-win32-x64-msvc': 1.3.35 + '@swc/core-darwin-arm64': 1.3.37 + '@swc/core-darwin-x64': 1.3.37 + '@swc/core-linux-arm-gnueabihf': 1.3.37 + '@swc/core-linux-arm64-gnu': 1.3.37 + '@swc/core-linux-arm64-musl': 1.3.37 + '@swc/core-linux-x64-gnu': 1.3.37 + '@swc/core-linux-x64-musl': 1.3.37 + '@swc/core-win32-arm64-msvc': 1.3.37 + '@swc/core-win32-ia32-msvc': 1.3.37 + '@swc/core-win32-x64-msvc': 1.3.37 dev: true /@tsconfig/node10/1.0.9: @@ -2490,8 +2467,8 @@ packages: resolution: {integrity: sha512-jhuKLIRrhvCPLqwPcx6INqmKeiA5EWrsCOPhrlFSrbrmU4ZMPjj5Ul/oLCMDO98XRUIwVm78xICz4EPCektzeQ==} dev: true - /@types/node/18.14.0: - resolution: {integrity: sha512-5EWrvLmglK+imbCJY0+INViFWUHg1AHel1sq4ZVSfdcNqGy9Edv3UB9IIzzg+xPaUcAgZYcfVs2fBcwDeZzU0A==} + /@types/node/18.14.5: + resolution: {integrity: sha512-CRT4tMK/DHYhw1fcCEBwME9CSaZNclxfzVMe7GsO6ULSwsttbj70wSiX6rZdIjGblu93sTJxLdhNIT85KKI7Qw==} dev: true /@types/normalize-package-data/2.4.1: @@ -2550,22 +2527,22 @@ packages: resolution: {integrity: sha512-EwmlvuaxPNej9+T4v5AuBPJa2x2UOJVdjCtDHgcDqitUeOtjnJKJ+apYjVcAoBEMjKW1VVFGZLUb5+qqa09XFA==} dev: false - /@vitejs/plugin-legacy/4.0.1_terser@5.16.4+vite@4.1.4: + /@vitejs/plugin-legacy/4.0.1_terser@5.16.5+vite@4.1.4: resolution: {integrity: sha512-/ZV63NagI1c9TB5E4ijGmycY//fNm/2L02nsnXXxACwYaF9W+/OyVlgIW24jYUIS+g0yQRtn+N5hzBc8RLNhGA==} engines: {node: ^14.18.0 || >=16.0.0} peerDependencies: terser: ^5.4.0 vite: ^4.0.0 dependencies: - '@babel/core': 7.20.12 - '@babel/preset-env': 7.20.2_@babel+core@7.20.12 + '@babel/core': 7.21.0 + '@babel/preset-env': 7.20.2_@babel+core@7.21.0 browserslist: 4.21.5 - core-js: 3.28.0 + core-js: 3.29.0 magic-string: 0.27.0 regenerator-runtime: 0.13.11 - systemjs: 6.13.0 - terser: 5.16.4 - vite: 4.1.4_ve7l6t5koctut52smtaue47xhi + systemjs: 6.14.0 + terser: 5.16.5 + vite: 4.1.4_pm537uckvxmam7hzwfdgs6yzna transitivePeerDependencies: - supports-color dev: true @@ -2575,8 +2552,8 @@ packages: peerDependencies: vite: ^4 dependencies: - '@swc/core': 1.3.35 - vite: 4.1.4_ve7l6t5koctut52smtaue47xhi + '@swc/core': 1.3.37 + vite: 4.1.4_pm537uckvxmam7hzwfdgs6yzna dev: true /@xobotyi/scrollbar-width/1.9.5: @@ -2733,7 +2710,7 @@ packages: postcss: ^8.1.0 dependencies: browserslist: 4.21.5 - caniuse-lite: 1.0.30001456 + caniuse-lite: 1.0.30001460 fraction.js: 4.2.0 normalize-range: 0.1.2 picocolors: 1.0.0 @@ -2741,8 +2718,8 @@ packages: postcss-value-parser: 4.2.0 dev: true - /axios/1.3.3: - resolution: {integrity: sha512-eYq77dYIFS77AQlhzEL937yUBSepBfPIe8FcgEDN35vMNZKMrs81pgnyrQpwfy4NF4b4XWX1Zgx7yX+25w8QJA==} + /axios/1.3.4: + resolution: {integrity: sha512-toYm+Bsyl6VC5wSkfkbbNB6ROv7KY93PEBBL6xyDczaIHasAiv4wPqQ/c4RjoQzipxRD2W5g21cOqQulZ7rHwQ==} dependencies: follow-redirects: 1.15.2 form-data: 4.0.0 @@ -2755,43 +2732,43 @@ packages: resolution: {integrity: sha512-Cg7TFGpIr01vOQNODXOOaGz2NpCU5gl8x1qJFbb6hbZxR7XrcE2vtbAsTAbJ7/xwJtUuJEw8K8Zr/AE0LHlesg==} engines: {node: '>=10', npm: '>=6'} dependencies: - '@babel/runtime': 7.20.13 + '@babel/runtime': 7.21.0 cosmiconfig: 7.1.0 resolve: 1.22.1 dev: false - /babel-plugin-polyfill-corejs2/0.3.3_@babel+core@7.20.12: + /babel-plugin-polyfill-corejs2/0.3.3_@babel+core@7.21.0: resolution: {integrity: sha512-8hOdmFYFSZhqg2C/JgLUQ+t52o5nirNwaWM2B9LWteozwIvM14VSwdsCAUET10qT+kmySAlseadmfeeSWFCy+Q==} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/compat-data': 7.20.14 - '@babel/core': 7.20.12 - '@babel/helper-define-polyfill-provider': 0.3.3_@babel+core@7.20.12 + '@babel/compat-data': 7.21.0 + '@babel/core': 7.21.0 + '@babel/helper-define-polyfill-provider': 0.3.3_@babel+core@7.21.0 semver: 6.3.0 transitivePeerDependencies: - supports-color dev: true - /babel-plugin-polyfill-corejs3/0.6.0_@babel+core@7.20.12: + /babel-plugin-polyfill-corejs3/0.6.0_@babel+core@7.21.0: resolution: {integrity: sha512-+eHqR6OPcBhJOGgsIar7xoAB1GcSwVUA3XjAd7HJNzOXT4wv6/H7KIdA/Nc60cvUlDbKApmqNvD1B1bzOt4nyA==} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.20.12 - '@babel/helper-define-polyfill-provider': 0.3.3_@babel+core@7.20.12 - core-js-compat: 3.28.0 + '@babel/core': 7.21.0 + '@babel/helper-define-polyfill-provider': 0.3.3_@babel+core@7.21.0 + core-js-compat: 3.29.0 transitivePeerDependencies: - supports-color dev: true - /babel-plugin-polyfill-regenerator/0.4.1_@babel+core@7.20.12: + /babel-plugin-polyfill-regenerator/0.4.1_@babel+core@7.21.0: resolution: {integrity: sha512-NtQGmyQDXjQqQ+IzRkBVwEOz9lQ4zxAQZgoAYEtU9dJjnl1Oc98qnN7jcp+bE7O7aYzVpavXE3/VKXNzUbh7aw==} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.20.12 - '@babel/helper-define-polyfill-provider': 0.3.3_@babel+core@7.20.12 + '@babel/core': 7.21.0 + '@babel/helper-define-polyfill-provider': 0.3.3_@babel+core@7.21.0 transitivePeerDependencies: - supports-color dev: true @@ -2818,7 +2795,7 @@ packages: dependencies: buffer: 5.7.1 inherits: 2.0.4 - readable-stream: 3.6.0 + readable-stream: 3.6.1 dev: true /boolbase/1.0.0: @@ -2850,8 +2827,8 @@ packages: engines: {node: ^6 || ^7 || ^8 || ^9 || ^10 || ^11 || ^12 || >=13.7} hasBin: true dependencies: - caniuse-lite: 1.0.30001456 - electron-to-chromium: 1.4.302 + caniuse-lite: 1.0.30001460 + electron-to-chromium: 1.4.317 node-releases: 2.0.10 update-browserslist-db: 1.0.10_browserslist@4.21.5 dev: true @@ -2902,8 +2879,8 @@ packages: engines: {node: '>=6'} dev: true - /caniuse-lite/1.0.30001456: - resolution: {integrity: sha512-XFHJY5dUgmpMV25UqaD4kVq2LsiaU5rS8fb0f17pCoXQiQslzmFgnfOxfvo1bTpTqf7dwG/N/05CnLCnOEKmzA==} + /caniuse-lite/1.0.30001460: + resolution: {integrity: sha512-Bud7abqjvEjipUkpLs4D7gR0l8hBYBHoa+tGtKJHvT2AYzLp1z7EmVkUT4ERpVUfca8S2HGIVs883D8pUH1ZzQ==} dev: true /chalk/2.4.2: @@ -3116,7 +3093,7 @@ packages: dependencies: buffer-from: 1.1.2 inherits: 2.0.4 - readable-stream: 3.6.0 + readable-stream: 3.6.1 typedarray: 0.0.6 dev: true @@ -3321,14 +3298,14 @@ packages: toggle-selection: 1.0.6 dev: false - /core-js-compat/3.28.0: - resolution: {integrity: sha512-myzPgE7QodMg4nnd3K1TDoES/nADRStM8Gpz0D6nhkwbmwEnE0ZGJgoWsvQ722FR8D7xS0n0LV556RcEicjTyg==} + /core-js-compat/3.29.0: + resolution: {integrity: sha512-ScMn3uZNAFhK2DGoEfErguoiAHhV2Ju+oJo/jK08p7B3f3UhocUrCCkTvnZaiS+edl5nlIoiBXKcwMc6elv4KQ==} dependencies: browserslist: 4.21.5 dev: true - /core-js/3.28.0: - resolution: {integrity: sha512-GiZn9D4Z/rSYvTeg1ljAIsEqFm0LaN9gVtwDCrKL80zHtS31p9BAjmTxVqTQDMpwlMolJZOFntUG2uwyj7DAqw==} + /core-js/3.29.0: + resolution: {integrity: sha512-VG23vuEisJNkGl6XQmFJd3rEG/so/CNatqeE+7uZAwTSwFeB/qaO0be8xZYUNWprJ/GIwL8aMt9cj1kvbpTZhg==} requiresBuild: true dev: true @@ -3336,7 +3313,7 @@ packages: resolution: {integrity: sha512-ZQBvi1DcpJ4GDqanjucZ2Hj3wEO5pZDS89BWbkcrvdxksJorwUDDZamX9ldFkp9aw2lmBDLgkObEA4DWNJ9FYQ==} dev: true - /cosmiconfig-typescript-loader/4.3.0_ipkhww4xc5z2tt2x53vp2mt2be: + /cosmiconfig-typescript-loader/4.3.0_v3kbstntxphny76zodmlbds7aa: resolution: {integrity: sha512-NTxV1MFfZDLPiBMjxbHRwSh5LaLcPMwNdCutmnHJCKoVnlvldPWlllonKwrsRJ5pYZBIBGRWWU2tfvzxgeSW5Q==} engines: {node: '>=12', npm: '>=6'} peerDependencies: @@ -3345,9 +3322,9 @@ packages: ts-node: '>=10' typescript: '>=3' dependencies: - '@types/node': 18.14.0 - cosmiconfig: 8.0.0 - ts-node: 10.9.1_tncu2ai53lzgmizdedur7lbibe + '@types/node': 18.14.5 + cosmiconfig: 8.1.0 + ts-node: 10.9.1_2cogyjchoknpkalymtikkc6nay typescript: 4.9.5 dev: true @@ -3361,8 +3338,8 @@ packages: path-type: 4.0.0 yaml: 1.10.2 - /cosmiconfig/8.0.0: - resolution: {integrity: sha512-da1EafcpH6b/TD8vDRaWV7xFINlHlF6zKsGwS1TsuVJTZRkquaS5HTMq7uq6h31619QjbsYl21gVDOm32KM1vQ==} + /cosmiconfig/8.1.0: + resolution: {integrity: sha512-0tLZ9URlPGU7JsKq0DQOQ3FoRsYX8xDZ7xMiATQfaiGMz7EHowNkbU9u1coAOmnh9p/1ySpm0RB3JNWRXM5GCg==} engines: {node: '>=14'} dependencies: import-fresh: 3.3.0 @@ -3566,7 +3543,7 @@ packages: /dom-helpers/5.2.1: resolution: {integrity: sha512-nRCa7CK3VTrM2NmGkIy4cbK7IZlgBE/PYMn55rrXefr5xXDP0LdtfPnblFDoVdcAfslJ7or6iqAUnx0CCGIWQA==} dependencies: - '@babel/runtime': 7.20.13 + '@babel/runtime': 7.21.0 csstype: 3.1.1 dev: false @@ -3641,8 +3618,8 @@ packages: jake: 10.8.5 dev: true - /electron-to-chromium/1.4.302: - resolution: {integrity: sha512-Uk7C+7aPBryUR1Fwvk9VmipBcN9fVsqBO57jV2ZjTm+IZ6BMNqu7EDVEg2HxCNufk6QcWlFsBkhQyQroB2VWKw==} + /electron-to-chromium/1.4.317: + resolution: {integrity: sha512-JhCRm9v30FMNzQSsjl4kXaygU+qHBD0Yh7mKxyjmF0V8VwYVB6qpBRX28GyAucrM9wDCpSUctT6FpMUQxbyKuA==} dev: true /emoji-regex/10.2.1: @@ -4149,7 +4126,7 @@ packages: he: 1.2.0 param-case: 3.0.4 relateurl: 0.2.7 - terser: 5.16.4 + terser: 5.16.5 dev: true /https-proxy-agent/5.0.1: @@ -4495,8 +4472,8 @@ packages: - supports-color dev: true - /lilconfig/2.0.6: - resolution: {integrity: sha512-9JROoBW7pobfsx+Sq2JsASvCo6Pfo6WWoUW79HuB1BCoBXD4PLWJPqDF6fNj67pqBYTbAHkE57M1kS/+L1neOg==} + /lilconfig/2.1.0: + resolution: {integrity: sha512-utWOt/GHzuUxnLKxB6dk81RoOeoNeHgbrXiuGk4yyF5qlRz+iIVWu56E2fqGHFrXz0QNUhLB/8nKqvRH66JKGQ==} engines: {node: '>=10'} dev: true @@ -4699,8 +4676,8 @@ packages: peerDependencies: react: ^16.8.0 || ^17.0.0 || ^18.0.0 dependencies: - '@babel/runtime': 7.20.13 - '@mui/material': 5.11.9_xqeqsl5kvjjtyxwyi3jhw3yuli + '@babel/runtime': 7.21.0 + '@mui/material': 5.11.11_xqeqsl5kvjjtyxwyi3jhw3yuli classnames: 2.3.2 prop-types: 15.8.1 react: 18.2.0 @@ -5001,8 +4978,8 @@ packages: mimic-fn: 2.1.0 dev: true - /open/8.4.1: - resolution: {integrity: sha512-/4b7qZNhv6Uhd7jjnREh1NjnPxlTq+XNWPG88Ydkj5AILcA5m3ajvcg57pB24EQjKv0dK62XnDqk9c/hkIG5Kg==} + /open/8.4.2: + resolution: {integrity: sha512-7x81NCL719oNbsq/3mh+hVrAWmFuEYUqrq/Iw3kUzH8ReypT9QQ0BLoJS7/G9k6N81XjW4qHWtjWwe/9eLy1EQ==} engines: {node: '>=12'} dependencies: define-lazy-prop: 2.0.0 @@ -5238,7 +5215,7 @@ packages: ts-node: optional: true dependencies: - lilconfig: 2.0.6 + lilconfig: 2.1.0 postcss: 8.4.21 yaml: 1.10.2 dev: true @@ -5350,8 +5327,8 @@ packages: react-dom: 18.2.0_react@18.2.0 dev: false - /react-intersection-observer/9.4.2_react@18.2.0: - resolution: {integrity: sha512-AdK+ryzZ7U9ZJYttDUZ8q2Am3nqE0exg5Ryl5Y124KeVsix/1hGZPbdu58EqA98TwnzwDNWHxg/kwNawmIiUig==} + /react-intersection-observer/9.4.3_react@18.2.0: + resolution: {integrity: sha512-WNRqMQvKpupr6MzecAQI0Pj0+JQong307knLP4g/nBex7kYfIaZsPpXaIhKHR+oV8z+goUbH9e10j6lGRnTzlQ==} peerDependencies: react: ^15.0.0 || ^16.0.0 || ^17.0.0 || ^18.0.0 dependencies: @@ -5397,7 +5374,7 @@ packages: redux: optional: true dependencies: - '@babel/runtime': 7.20.13 + '@babel/runtime': 7.21.0 '@types/hoist-non-react-statics': 3.3.1 '@types/react': 18.0.28 '@types/react-dom': 18.0.11 @@ -5409,26 +5386,26 @@ packages: use-sync-external-store: 1.2.0_react@18.2.0 dev: false - /react-router-dom/6.8.1_biqbaboplfbrettd7655fr4n2y: - resolution: {integrity: sha512-67EXNfkQgf34P7+PSb6VlBuaacGhkKn3kpE51+P6zYSG2kiRoumXEL6e27zTa9+PGF2MNXbgIUHTVlleLbIcHQ==} + /react-router-dom/6.8.2_biqbaboplfbrettd7655fr4n2y: + resolution: {integrity: sha512-N/oAF1Shd7g4tWy+75IIufCGsHBqT74tnzHQhbiUTYILYF0Blk65cg+HPZqwC+6SqEyx033nKqU7by38v3lBZg==} engines: {node: '>=14'} peerDependencies: react: '>=16.8' react-dom: '>=16.8' dependencies: - '@remix-run/router': 1.3.2 + '@remix-run/router': 1.3.3 react: 18.2.0 react-dom: 18.2.0_react@18.2.0 - react-router: 6.8.1_react@18.2.0 + react-router: 6.8.2_react@18.2.0 dev: false - /react-router/6.8.1_react@18.2.0: - resolution: {integrity: sha512-Jgi8BzAJQ8MkPt8ipXnR73rnD7EmZ0HFFb7jdQU24TynGW1Ooqin2KVDN9voSC+7xhqbbCd2cjGUepb6RObnyg==} + /react-router/6.8.2_react@18.2.0: + resolution: {integrity: sha512-lF7S0UmXI5Pd8bmHvMdPKI4u4S5McxmHnzJhrYi9ZQ6wE+DA8JN5BzVC5EEBuduWWDaiJ8u6YhVOCmThBli+rw==} engines: {node: '>=14'} peerDependencies: react: '>=16.8' dependencies: - '@remix-run/router': 1.3.2 + '@remix-run/router': 1.3.3 react: 18.2.0 dev: false @@ -5438,7 +5415,7 @@ packages: react: '>=16.6.0' react-dom: '>=16.6.0' dependencies: - '@babel/runtime': 7.20.13 + '@babel/runtime': 7.21.0 dom-helpers: 5.2.1 loose-envify: 1.4.0 prop-types: 15.8.1 @@ -5529,8 +5506,8 @@ packages: type-fest: 0.6.0 dev: true - /readable-stream/2.3.7: - resolution: {integrity: sha512-Ebho8K4jIbHAxnuxi7o42OrZgF/ZTNcsZj6nRKyUmkhLFq8CHItp/fy6hQZuZmP/n3yZ9VBUbp4zz/mX8hmYPw==} + /readable-stream/2.3.8: + resolution: {integrity: sha512-8p0AUk4XODgIewSi0l8Epjs+EVnWiK7NoDIEGU0HhE7+ZyY8D1IMY7odu5lRrFXGg71L15KG8QrPmum45RTtdA==} dependencies: core-util-is: 1.0.3 inherits: 2.0.4 @@ -5541,8 +5518,8 @@ packages: util-deprecate: 1.0.2 dev: true - /readable-stream/3.6.0: - resolution: {integrity: sha512-BViHy7LKeTz4oNnkcLJ+lVSL6vpiFeX6/d3oSH8zCW7UxP2onchk+vTGB143xuFjHS3deTgkKoXXymXqymiIdA==} + /readable-stream/3.6.1: + resolution: {integrity: sha512-+rQmrWMYGA90yenhTYsLWAsLsqVC8osOw6PKE1HDYiO0gdPeKe/xDHNzIAIn4C91YQ6oenEhfYqqc1883qHbjQ==} engines: {node: '>= 6'} dependencies: inherits: 2.0.4 @@ -5576,7 +5553,7 @@ packages: /redux/4.2.1: resolution: {integrity: sha512-LAUYz4lc+Do8/g7aeRa8JkyDErK6ekstQaqWQrNRW//MY1TvCEpMtpTWvlQ+FPbWCx+Xixu/6SHt5N0HR+SB4w==} dependencies: - '@babel/runtime': 7.20.13 + '@babel/runtime': 7.21.0 dev: false /regenerate-unicode-properties/10.1.0: @@ -5596,7 +5573,7 @@ packages: /regenerator-transform/0.15.1: resolution: {integrity: sha512-knzmNAcuyxV+gQCufkYcvOqX/qIIfHLv0u5x79kRxuGojfYVky1f15TzZEu2Avte8QGepvUNTnLskf8E6X6Vyg==} dependencies: - '@babel/runtime': 7.20.13 + '@babel/runtime': 7.21.0 dev: true /regexpu-core/5.3.1: @@ -5715,14 +5692,14 @@ packages: rollup: optional: true dependencies: - open: 8.4.1 + open: 8.4.2 picomatch: 2.3.1 source-map: 0.7.4 - yargs: 17.7.0 + yargs: 17.7.1 dev: true - /rollup/3.17.1: - resolution: {integrity: sha512-8RnSms6rNqHmZK+wiqgnPCqen+rRnUHXkciGDirh7B00g1rX1vpKbPDhuxCvAG2bburoI+W4Q9/PlUB/zYkiYA==} + /rollup/3.18.0: + resolution: {integrity: sha512-J8C6VfEBjkvYPESMQYxKHxNOh4A5a3FlP+0BETGo34HEcE4eTlgCrO2+eWzlu2a/sHs2QUkZco+wscH7jhhgWg==} engines: {node: '>=14.18.0', npm: '>=8.0.0'} hasBin: true optionalDependencies: @@ -5732,7 +5709,7 @@ packages: /rtl-css-js/1.16.1: resolution: {integrity: sha512-lRQgou1mu19e+Ya0LsTvKrVJ5TYUbqCVPAiImX3UfLTenarvPUl1QFdvu5Z3PYmHT9RCcwIfbjRQBntExyj3Zg==} dependencies: - '@babel/runtime': 7.20.13 + '@babel/runtime': 7.21.0 dev: false /run-async/2.4.1: @@ -5893,7 +5870,7 @@ packages: /split2/3.2.2: resolution: {integrity: sha512-9NThjpgZnifTkJpzTZ7Eue85S49QwpNhZTq6GRJwObb6jnLFNGB7Qm73V5HewTROPyxD0C29xqmaI68bQtV+hg==} dependencies: - readable-stream: 3.6.0 + readable-stream: 3.6.1 dev: true /stack-generator/2.0.10: @@ -6045,8 +6022,8 @@ packages: resolution: {integrity: sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w==} engines: {node: '>= 0.4'} - /systemjs/6.13.0: - resolution: {integrity: sha512-P3cgh2bpaPvAO2NE3uRp/n6hmk4xPX4DQf+UzTlCAycssKdqhp6hjw+ENWe+aUS7TogKRFtptMosTSFeC6R55g==} + /systemjs/6.14.0: + resolution: {integrity: sha512-OMf+kFCYG9fLQerUyw/QVIPfZ+lo579R+usrDzSrZAkvMl6B0tHtc4rUP7DFaPCr7Sy6p5DYD4V9OCF1Sp6+vA==} dev: true /tailwindcss/3.2.7_postcss@8.4.21: @@ -6065,7 +6042,7 @@ packages: fast-glob: 3.2.12 glob-parent: 6.0.2 is-glob: 4.0.3 - lilconfig: 2.0.6 + lilconfig: 2.1.0 micromatch: 4.0.5 normalize-path: 3.0.0 object-hash: 3.0.0 @@ -6091,8 +6068,8 @@ packages: rimraf: 2.6.3 dev: true - /terser/5.16.4: - resolution: {integrity: sha512-5yEGuZ3DZradbogeYQ1NaGz7rXVBDWujWlx1PT8efXO6Txn+eWbfKqB2bTDVmFXmePFkoLU6XI8UektMIEA0ug==} + /terser/5.16.5: + resolution: {integrity: sha512-qcwfg4+RZa3YvlFh0qjifnzBHjKGNbtDo9yivMqMFDy9Q6FSaQWSB/j1xKhsoUFJIqDOM3TsN6D5xbrMrFcHbg==} engines: {node: '>=10'} hasBin: true dependencies: @@ -6119,14 +6096,14 @@ packages: /through2/2.0.5: resolution: {integrity: sha512-/mrRod8xqpA+IHSLyGCQ2s8SPHiCDEeQJSep1jqLYeEUClOFG2Qsh+4FU6G9VeqpZnGW/Su8LQGc4YKni5rYSQ==} dependencies: - readable-stream: 2.3.7 + readable-stream: 2.3.8 xtend: 4.0.2 dev: true /through2/4.0.2: resolution: {integrity: sha512-iOqSav00cVxEEICeD7TjLB1sueEL+81Wpzp2bY17uZjZN0pWZPuo4suZ/61VujxmqSGFfgOcNuTZ85QJwNZQpw==} dependencies: - readable-stream: 3.6.0 + readable-stream: 3.6.1 dev: true /tmp/0.0.33: @@ -6168,7 +6145,7 @@ packages: resolution: {integrity: sha512-Z86EW+fFFh/IFB1fqQ3/+7Zpf9t2ebOAxNI/V6Wo7r5gqiqtxmgTlQ1qbqQcjLKYeSHPTsEmvlJUDg/EuL0uHQ==} dev: false - /ts-node/10.9.1_tncu2ai53lzgmizdedur7lbibe: + /ts-node/10.9.1_2cogyjchoknpkalymtikkc6nay: resolution: {integrity: sha512-NtVysVPkxxrwFGUUxGYhfux8k78pQB3JqYBXlLRZgdGUqTO5wU/UyHop5p70iEbGhB7q5KmiZiU0Y3KlJrScEw==} hasBin: true peerDependencies: @@ -6187,7 +6164,7 @@ packages: '@tsconfig/node12': 1.0.11 '@tsconfig/node14': 1.0.3 '@tsconfig/node16': 1.0.3 - '@types/node': 18.14.0 + '@types/node': 18.14.5 acorn: 8.8.2 acorn-walk: 8.2.0 arg: 4.1.3 @@ -6326,7 +6303,7 @@ packages: chalk: 4.1.2 debug: 4.3.4 fs-extra: 10.1.0 - vite: 4.1.4_ve7l6t5koctut52smtaue47xhi + vite: 4.1.4_pm537uckvxmam7hzwfdgs6yzna transitivePeerDependencies: - supports-color dev: true @@ -6348,7 +6325,7 @@ packages: html-minifier-terser: 6.1.0 node-html-parser: 5.4.2 pathe: 0.2.0 - vite: 4.1.4_ve7l6t5koctut52smtaue47xhi + vite: 4.1.4_pm537uckvxmam7hzwfdgs6yzna dev: true /vite-plugin-sentry/1.1.7_vite@4.1.4: @@ -6357,14 +6334,14 @@ packages: peerDependencies: vite: ^2.6.0 || ^3.0.0 || ^4.0.0 dependencies: - '@sentry/cli': 2.13.0 - vite: 4.1.4_ve7l6t5koctut52smtaue47xhi + '@sentry/cli': 2.14.3 + vite: 4.1.4_pm537uckvxmam7hzwfdgs6yzna transitivePeerDependencies: - encoding - supports-color dev: true - /vite/4.1.4_ve7l6t5koctut52smtaue47xhi: + /vite/4.1.4_pm537uckvxmam7hzwfdgs6yzna: resolution: {integrity: sha512-3knk/HsbSTKEin43zHu7jTwYWv81f8kgAL99G5NWBcA1LKvtvcVAC4JjBH1arBunO9kQka+1oGbrMKOjk4ZrBg==} engines: {node: ^14.18.0 || >=16.0.0} hasBin: true @@ -6389,13 +6366,13 @@ packages: terser: optional: true dependencies: - '@types/node': 18.14.0 + '@types/node': 18.14.5 esbuild: 0.16.17 less: 4.1.3 postcss: 8.4.21 resolve: 1.22.1 - rollup: 3.17.1 - terser: 5.16.4 + rollup: 3.18.0 + terser: 5.16.5 optionalDependencies: fsevents: 2.3.2 dev: true @@ -6499,8 +6476,8 @@ packages: yargs-parser: 20.2.9 dev: true - /yargs/17.7.0: - resolution: {integrity: sha512-dwqOPg5trmrre9+v8SUo2q/hAwyKoVfu8OC1xPHKJGNdxAvPl4sKxL4vBnh3bQz/ZvvGAFeA5H3ou2kcOY8sQQ==} + /yargs/17.7.1: + resolution: {integrity: sha512-cwiTb08Xuv5fqF4AovYacTFNxk62th7LKJ6BL9IGUpTJrWoU7/7WdQGTP2SjKf1dUNBGzDd28p/Yfs/GI6JrLw==} engines: {node: '>=12'} dependencies: cliui: 8.0.1 diff --git a/src/components/image/index.tsx b/src/components/image/index.tsx index b8e753c..844ee10 100644 --- a/src/components/image/index.tsx +++ b/src/components/image/index.tsx @@ -78,8 +78,10 @@ export function ImageBasic({ observer, callback, children, + title, ...resProps }: ImageProps & { + title: string; children?: ReactElement; [k: string]: any; }) { @@ -88,7 +90,7 @@ export function ImageBasic({ {({ inView, ref, entry }) => ( - + {title} <>{observer && inView && once_callback(inView)} {children} diff --git a/src/routers/photo/item/index.tsx b/src/routers/photo/item/index.tsx index b507919..fd93a24 100644 --- a/src/routers/photo/item/index.tsx +++ b/src/routers/photo/item/index.tsx @@ -22,6 +22,7 @@ export default function PhotoCard(props: CardType) { url={`${images[0].src}@${250}w.webp`} {...Omit(images[0], "src")} {...resPorps} + title={"图片栏"} className={style["show-img"]} onClick={handlerChangeOpen} /> diff --git a/src/routers/video/item/index.tsx b/src/routers/video/item/index.tsx index 773f4e7..20f9d52 100644 --- a/src/routers/video/item/index.tsx +++ b/src/routers/video/item/index.tsx @@ -24,6 +24,7 @@ export const VideoRouterImageCard: FC<{ data: VideoRouterImageCardType }> = ({ Date: Sat, 4 Mar 2023 10:28:20 +0800 Subject: [PATCH 37/41] =?UTF-8?q?:bug:=20fix(custom):=20=E4=BF=AE=E5=A4=8D?= =?UTF-8?q?tab=E6=A0=8F=E5=9C=A8=E6=90=9C=E7=B4=A2=E9=A1=B5=E9=9D=A2?= =?UTF-8?q?=E5=87=BA=E7=8E=B0=E7=9A=84bug=EF=BC=8C=E4=BF=AE=E6=94=B9?= =?UTF-8?q?=E5=9B=BE=E7=89=87=E9=A1=B5tag=E6=A0=8F=E9=BB=98=E8=AE=A4?= =?UTF-8?q?=E9=A1=BA=E5=BA=8F=EF=BC=8C=E5=A2=9E=E5=8A=A0=E5=BD=93=E5=89=8D?= =?UTF-8?q?=E9=A1=B5=E6=8F=90=E7=A4=BA?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- config/vite.dev.config.ts | 2 +- src/routers/layout/index.tsx | 21 ++++++++++++++++++--- src/routers/layout/logo/index.tsx | 19 ++++++++++++++++++- src/routers/layout/nav/VideoTools.ts | 24 ++++++++++++------------ 4 files changed, 49 insertions(+), 17 deletions(-) diff --git a/config/vite.dev.config.ts b/config/vite.dev.config.ts index 4ed1636..0d8e6ba 100644 --- a/config/vite.dev.config.ts +++ b/config/vite.dev.config.ts @@ -6,7 +6,7 @@ export const addProjectPath = (originPath: string) => `../${originPath}`; import { createHtmlPlugin } from "vite-plugin-html"; export default defineConfig({ define: { - __APP_VERSION__: "0.01", + __APP_VERSION__: "0.02", isdev: true, isrelease: false, }, diff --git a/src/routers/layout/index.tsx b/src/routers/layout/index.tsx index 502d5e1..36d4547 100644 --- a/src/routers/layout/index.tsx +++ b/src/routers/layout/index.tsx @@ -27,9 +27,7 @@ export default function Layout() {
-
- -
+
@@ -39,6 +37,23 @@ export default function Layout() { ); } + +const useMatchUrls = (urls: string[]) => urls.map((item) => useMatch(item)); + +const FixedNav = () => { + const urls = useMatchUrls(["/", "/video", "/photo"]), + shouldShowNav = urls.some((item) => item !== null); + return ( + <> + {shouldShowNav && ( +
+ +
+ )} + + ); +}; + export const ImportTantInfo = () => ( <> { ); }; +const useRouterMatchWithDefaultRouter = (urls: string[]) => { + const lists = urls.map((item) => useMatch(item)); + return lists.some((item) => item !== null); +}; const RouterListAndQA = () => { + const isVideoPage = useRouterMatchWithDefaultRouter(["/", "/video"]), + isPhotoPage = useRouterMatchWithDefaultRouter(["/photo"]), + isActive = (label: string) => { + if ( + (label === "视频" && isVideoPage) || + (label === "图片" && isPhotoPage) + ) { + return true; + } + return false; + }; return (
{RouterList.slice(0, 2).map((item) => ( @@ -115,7 +130,9 @@ const RouterListAndQA = () => { key={item.label} startIcon={item.startICon} title={`前往${item.label}页`} - className='bg-white text-gray-800 transition-all duration-300 hover:bg-gray-200 rounded-sm' + className={` text-gray-800 transition-all duration-300 hover:bg-gray-200 rounded-sm ${ + isActive(item.label) ? "bg-gray-300" : "bg-white" + }`} > {item.label} diff --git a/src/routers/layout/nav/VideoTools.ts b/src/routers/layout/nav/VideoTools.ts index 4b8c25e..10ee1c6 100644 --- a/src/routers/layout/nav/VideoTools.ts +++ b/src/routers/layout/nav/VideoTools.ts @@ -112,6 +112,18 @@ export type VideoNavQueryItemType = { }; export type NavListItemType = VideoNavQueryItemType | NavRouterItemType; const nav_tag_list_no_id: Omit[] = [ + { + type: "query", + query: "最新发布", + queryType: "order", + queryString: "pubdate", + }, + { + type: "query", + query: "最多播放", + queryType: "order", + queryString: "view", + }, { type: "query", query: "露早", @@ -184,18 +196,6 @@ const nav_tag_list_no_id: Omit[] = [ queryType: "copyright", queryString: "2", }, - { - type: "query", - query: "最新发布", - queryType: "order", - queryString: "pubdate", - }, - { - type: "query", - query: "最多播放", - queryType: "order", - queryString: "view", - }, ], video_query_nav_list = nav_tag_list_no_id.map((item) => ({ ...item, From 7572267b998db673959ab928ac7837c393d962d1 Mon Sep 17 00:00:00 2001 From: master1lan <278457198@qq.com> Date: Sat, 4 Mar 2023 11:20:29 +0800 Subject: [PATCH 38/41] =?UTF-8?q?:building=5Fconstruction:=20refactor(cust?= =?UTF-8?q?om):=20=E7=94=A8=E6=88=B7=E7=82=B9=E5=87=BB=E5=A4=9A=E6=AC=A1ta?= =?UTF-8?q?g=E6=A0=8F=E4=B9=8B=E5=90=8E=E5=B0=86=E5=8F=AA=E4=BC=9A?= =?UTF-8?q?=E6=90=9C=E7=B4=A2=E6=9C=80=E5=90=8E=E4=B8=80=E6=AC=A1=E7=BB=93?= =?UTF-8?q?=E6=9E=9C?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit ISSUES CLOSED: #33 --- src/components/masonry/index.tsx | 2 +- src/index.less | 4 +++ src/routers/layout/logo/index.tsx | 21 ++++++------- src/routers/layout/nav/index.tsx | 11 +++++-- src/utils/fetch/fetchtype.ts | 2 +- src/utils/fetch/index.ts | 51 ++++++++++++++++++++++++++++--- 6 files changed, 70 insertions(+), 21 deletions(-) diff --git a/src/components/masonry/index.tsx b/src/components/masonry/index.tsx index 6583a97..5cd4871 100644 --- a/src/components/masonry/index.tsx +++ b/src/components/masonry/index.tsx @@ -2,7 +2,7 @@ import { FC, useState, useEffect, useCallback } from "react"; import { Masonry as Masonic_masonry } from "masonic"; import Image from "@components/image"; import { SingleRun, concurrencyRequest } from "@utils/index"; -import { fetchPhotos, fetchVideos } from "@utils/fetch"; +import { fetchPhotos } from "@utils/fetch"; import { nanoid } from "nanoid"; import { getImageSize } from "../image/tool"; export default function Masonry() { diff --git a/src/index.less b/src/index.less index 6c1b571..6c8d898 100644 --- a/src/index.less +++ b/src/index.less @@ -47,4 +47,8 @@ body, html { font-family: 'Proxima Soft', 'Segoe UI', Tahoma, Geneva, Verdana, sans-serif; +} + +body { + overflow-y: scroll; } \ No newline at end of file diff --git a/src/routers/layout/logo/index.tsx b/src/routers/layout/logo/index.tsx index 70822d0..710cbc7 100644 --- a/src/routers/layout/logo/index.tsx +++ b/src/routers/layout/logo/index.tsx @@ -126,18 +126,17 @@ const RouterListAndQA = () => { return (
{RouterList.slice(0, 2).map((item) => ( - + + ))}
); diff --git a/src/routers/layout/nav/index.tsx b/src/routers/layout/nav/index.tsx index a4caea0..d9f6f5f 100644 --- a/src/routers/layout/nav/index.tsx +++ b/src/routers/layout/nav/index.tsx @@ -230,9 +230,7 @@ const NavTagChipItem: FC = memo( = memo( } ); +/** + * +${ + loading ? "cursor-wait pointer-events-none" : "cursor-pointer" + } + */ + const handleSetSpecialProps = ( query: string, defaultColor: string, diff --git a/src/utils/fetch/fetchtype.ts b/src/utils/fetch/fetchtype.ts index d5ab7fe..238986a 100644 --- a/src/utils/fetch/fetchtype.ts +++ b/src/utils/fetch/fetchtype.ts @@ -171,7 +171,7 @@ type CustomFetchRes = { /** * @example 0 */ - code: 0 | 400 | 500; + code: 0 | 400 | 500 | 403; /** * @example "ok" */ diff --git a/src/utils/fetch/index.ts b/src/utils/fetch/index.ts index 30b2043..38a872d 100644 --- a/src/utils/fetch/index.ts +++ b/src/utils/fetch/index.ts @@ -1,4 +1,4 @@ -import axios from "axios"; +import axios, { AxiosError } from "axios"; import JSONBigInt from "json-bigint"; /** * 类型文件导入 @@ -37,14 +37,21 @@ BackEndAxios.interceptors.request.use((config) => { return config; }); +let VideoSource: AbortController | null = null; + /** * video视频数据获取接口 */ export async function fetchVideos( params: IFetchVideoParams ): Promise { + if (VideoSource) { + VideoSource.abort(); + } + VideoSource = new AbortController(); try { const res = await BackEndAxios.get("/video-interface/advanced-search", { + signal: VideoSource.signal, params: { order: params.order || "score", page: params.page, @@ -53,9 +60,23 @@ export async function fetchVideos( tname: params.tname, }, }); + VideoSource = null; return res.data; - } catch (e) { - // console.log({ e }); + } catch (err) { + if (axios.isAxiosError(err)) { + if (err.code === "ERR_CANCELED") { + return { + code: 403, + message: "已取消", + ttl: 0, + data: { + page: 0, + numResults: 0, + result: [], + }, + }; + } + } return { code: 500, message: "网络请求错误,您似乎处于断网状态", @@ -68,19 +89,39 @@ export async function fetchVideos( }; } } +let PhotoSource: AbortController | null = null; /** * photo图片数据获取接口 */ export async function fetchPhotos( params: IFetchPhotoParams ): Promise { - // console.log({ params }); + if (PhotoSource) { + PhotoSource.abort(); + } + PhotoSource = new AbortController(); try { const res = await BackEndAxios.get(`/pic/${params.type}`, { + signal: PhotoSource.signal, params: Omit(params, "type"), }); + PhotoSource.abort(); return res.data; - } catch (e) { + } catch (err) { + if (axios.isAxiosError(err)) { + if (err.code === "ERR_CANCELED") { + return { + code: 403, + message: "已取消", + ttl: 0, + data: { + page: 0, + total: 0, + result: [], + }, + }; + } + } return { code: 500, message: "网络请求错误,您似乎处于断网状态", From 6911c577ffe514c4db4c25c646b13bcf1294a59a Mon Sep 17 00:00:00 2001 From: master1lan <278457198@qq.com> Date: Sat, 4 Mar 2023 17:45:40 +0800 Subject: [PATCH 39/41] =?UTF-8?q?:zap:=20feat(custom):=20pc=E7=AB=AF?= =?UTF-8?q?=E6=90=9C=E7=B4=A2=E6=8F=90=E4=BE=9B=E6=90=9C=E7=B4=A2=E5=BB=BA?= =?UTF-8?q?=E8=AE=AE=EF=BC=8C=E4=BD=86=E6=98=AF=E5=B9=B6=E4=B8=8D=E5=AE=8C?= =?UTF-8?q?=E5=96=84=EF=BC=8Cup=E5=88=97=E8=A1=A8=E9=9C=80=E8=A6=81?= =?UTF-8?q?=E6=9B=B4=E6=96=B0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/routers/layout/search/index.tsx | 5 - src/routers/layout/search/pc/context.tsx | 8 + src/routers/layout/search/pc/data.ts | 28 +++ src/routers/layout/search/pc/index.tsx | 10 +- src/routers/layout/search/pc/pc.module.less | 10 +- src/routers/layout/search/pc/search.tsx | 227 +++++++++++++----- .../layout/search/pc/searchSuggest.tsx | 212 ++++++++++++++++ src/routers/layout/search/phone/url.ts | 3 +- src/routers/search/index.tsx | 11 +- src/routers/video/masonry.tsx | 7 +- src/routers/video/tools.ts | 20 +- src/utils/hooks/match.ts | 8 - src/utils/hooks/popover.ts | 14 +- 13 files changed, 471 insertions(+), 92 deletions(-) create mode 100644 src/routers/layout/search/pc/context.tsx create mode 100644 src/routers/layout/search/pc/data.ts create mode 100644 src/routers/layout/search/pc/searchSuggest.tsx diff --git a/src/routers/layout/search/index.tsx b/src/routers/layout/search/index.tsx index f29a734..f94e7cb 100644 --- a/src/routers/layout/search/index.tsx +++ b/src/routers/layout/search/index.tsx @@ -3,11 +3,6 @@ import PCSearch from "./pc"; import PhoneSearch from "./phone"; // todo 增加高级搜索以及手机端的搜索 export default function Search() { - const navigate = useNavigate(); - const handlerSubmit = () => { - const value = (document.getElementById("q") as HTMLInputElement).value; - navigate(`/search?tag=${value}`); - }; return ( <>
diff --git a/src/routers/layout/search/pc/context.tsx b/src/routers/layout/search/pc/context.tsx new file mode 100644 index 0000000..e467a6b --- /dev/null +++ b/src/routers/layout/search/pc/context.tsx @@ -0,0 +1,8 @@ +import { createContext, useContext } from "react"; +type InputWrapperContextType = { + anchorEl: HTMLElement | null; +}; +export const InputWrapperContext = createContext({ + anchorEl: null, +}); +export const useGetInputWrapper = () => useContext(InputWrapperContext); diff --git a/src/routers/layout/search/pc/data.ts b/src/routers/layout/search/pc/data.ts new file mode 100644 index 0000000..1a9839c --- /dev/null +++ b/src/routers/layout/search/pc/data.ts @@ -0,0 +1,28 @@ +import { phoneMoreNameAndFaceUrls } from "../phone/url"; + +export type renderSuggestItemLists = { label: string; value: string }[]; + +//tag列 +export const pcSuggestTagLists: renderSuggestItemLists = [ + "莞儿睡不醒", + "露早GOGO", + "米诺高分少女", + "虞莫MOMO", + "柚恩不加糖", + "EOE组合", + "早莞在一起", + "莞柚引力", + "一莞米", + "虞舟唱莞", + "早柚", + "西米露", + "早有虞谋", + "米哈柚", + "虞香柚丝", + "米虞说的道理", + "虞米之乡", +].map((item) => ({ label: item, value: item })); + +//up列 +export const pcSuggestNameLists: renderSuggestItemLists = + phoneMoreNameAndFaceUrls; diff --git a/src/routers/layout/search/pc/index.tsx b/src/routers/layout/search/pc/index.tsx index 395e89c..09f4637 100644 --- a/src/routers/layout/search/pc/index.tsx +++ b/src/routers/layout/search/pc/index.tsx @@ -1,18 +1,14 @@ -import React, { useRef } from "react"; import { useSearchFocus } from "@components/proview/searchFocus"; -import { FC, useEffect } from "react"; +import { useEffect } from "react"; import SelectModeCom from "./selectModeNav"; import Search from "./search"; -export default function NormalSearch() { +export default function PCSearch() { const { focused, bind } = useSearchFocus(), { onBlur } = bind; - const contentRef = useRef(); useEffect(() => { if (focused) { - window.addEventListener("scroll", onBlur, { - once: true, - }); + window.addEventListener("scroll", onBlur, { once: true }); } }, [focused]); return ( diff --git a/src/routers/layout/search/pc/pc.module.less b/src/routers/layout/search/pc/pc.module.less index f07eef7..d828f32 100644 --- a/src/routers/layout/search/pc/pc.module.less +++ b/src/routers/layout/search/pc/pc.module.less @@ -51,7 +51,7 @@ span { padding-bottom: 2px; font-size: 14px; - font-weight: 400; + font-weight: 600; } span+input { @@ -70,4 +70,12 @@ border-radius: 40px; // transition: all 300ms ease; } +} + +.commonRounded { + border-radius: 40px; +} + +.suggestMaxHeight { + max-height: calc(100vh - 200px); } \ No newline at end of file diff --git a/src/routers/layout/search/pc/search.tsx b/src/routers/layout/search/pc/search.tsx index bf3129e..5abb2a1 100644 --- a/src/routers/layout/search/pc/search.tsx +++ b/src/routers/layout/search/pc/search.tsx @@ -1,22 +1,17 @@ import { useSearchFocus } from "@components/proview/searchFocus"; +import HighlightOffIcon from "@mui/icons-material/HighlightOff"; import { useURLParams } from "@utils/hooks/url"; import SearchIcon from "@mui/icons-material/Search"; import styles from "../search.module.less"; import pcStyles from "./pc.module.less"; import { useBackRef, useSearchMode } from "./hooks"; import { useNavigate } from "react-router-dom"; -import { FC, forwardRef, useRef } from "react"; +import React, { FC, forwardRef, ReactElement, useRef } from "react"; export default function Search() { - const inputRef = useRef(null); + const contentRef = useRef(null); const { focused, bind } = useSearchFocus(); - const { onFocus, onBlur } = bind; + const { onFocus } = bind; const { searchMode } = useSearchMode(); - const navigate = useNavigate(), - handlerSubmit = () => { - const value = inputRef.current!.value; - navigate(`/search?tag=${value}`); - onBlur(); - }; return ( <> {/* 包裹层 */} @@ -31,16 +26,39 @@ export default function Search() { className={`${styles["search-box"]} ${ focused ? styles["focus"] : "py-1" } duration-300 relative`} + ref={contentRef} > - {searchMode === "搜索tag" && ( - - )} - {searchMode === "搜索更多" && } + + {searchMode === "搜索tag" && } + {searchMode === "搜索更多" && } +
); } + +const CloseSvg: FC<{ onClick: () => void; style?: React.CSSProperties }> = ( + props +) => ( +
+ + + + +
+); + //通用按钮 const SearchButton: FC<{ onSubmit?: () => void }> = ({ onSubmit }) => { const { focused } = useSearchFocus(); @@ -61,30 +79,58 @@ const SearchButton: FC<{ onSubmit?: () => void }> = ({ onSubmit }) => { ); }; +import { usePopoverConfig } from "@utils/hooks/popover"; +import { + addPCNameHistory, + addPCTagHistory, + PCNameSuggest, + PCTagSuggest, +} from "./searchSuggest"; +import { InputWrapperContext } from "./context"; + //普通搜索 -const NormalSearch = forwardRef void }>( - function Search(props, ref) { - const [tag] = useURLParams(["tag"]); - return ( - <> - { - if (event.key === "Enter") { - props.onFinish(); - } - }} - /> - - - ); - } -); +const NormalSearch = () => { + const inputRef = useRef(null); + const { bind } = useSearchFocus(), + { onBlur } = bind; + const [tag] = useURLParams(["tag"]); + const { open, handleClick } = usePopoverConfig("target"); + const navigate = useNavigate(), + handlerNavigate = (value: string) => { + navigate(`/search?tag=${value}`); + onBlur(); + }, + handlerSubmit = () => { + const value = inputRef.current!.value; + handlerNavigate(value); + }, + handerHistorySubmit = (value: string) => { + handlerNavigate(value); + addPCTagHistory(value); + }; + return ( + <> + { + if (event.key === "Enter") { + handlerSubmit(); + } + }} + /> + + + + ); +}; //高级搜索 const AdvanceSearch = forwardRef(function Advance(props, ref) { @@ -94,15 +140,35 @@ const AdvanceSearch = forwardRef(function Advance(props, ref) { const nameRef = useRef(null), tagRef = useRef(null); const navigate = useNavigate(), + handlerNavigate = (tag: string, name: string) => { + navigate(`/search?tag=${tag}&name=${name}`); + onBlur(); + }, //@ts-ignore + getTagValue = () => tagRef.current!.getValue(), + //@ts-ignore + getNameValue = () => nameRef.current!.getValue(), handlerSubmit = () => { - //@ts-ignore - let tagValue = tagRef.current!.getValue(), - //@ts-ignore - nameValue = nameRef.current!.getValue(); - navigate(`/search?tag=${tagValue}&name=${nameValue}`); + navigate(`/search?tag=${getTagValue()}&name=${getNameValue()}`); onBlur(); + }, + handlerTagHistorySubmit = (tag: string) => { + handlerNavigate(tag, getNameValue()); + addPCTagHistory(tag); + }, + handlerNameHistorySubmit = (name: string) => { + handlerNavigate(getTagValue(), name); + addPCNameHistory(name); + }; + const tagSuggestOption = usePopoverConfig("target"), + nameSuggestOption = usePopoverConfig("target"), + tagItemCallback = (event: React.MouseEvent) => { + nameSuggestOption.handleClose(); + tagSuggestOption.handleClick(event); + }, + nameItemCallback = (event: React.MouseEvent) => { + tagSuggestOption.handleClose(); + nameSuggestOption.handleClick(event); }; - // tag.露早~name.L姓飞行玩家 return (
+ clickCallback={nameItemCallback} + > + + {/* 等待接口更新 */} {/* */} + clickCallback={tagItemCallback} + > + +
); }); @@ -131,22 +209,28 @@ type AdvanceItemProps = { title: string; inputDefaultValue: string; onSubmit: () => void; + children?: ReactElement | ReactElement[]; + clickCallback?: (event: React.MouseEvent) => void; }; const AdvanceSearchItem = forwardRef( (props, ref) => { const { inputRef, handerfocus } = useBackRef(ref); const { focused } = useSearchFocus(); - const inptValue = inputRef.current?.value, - showedTitle = focused ? props.title : inptValue ? inptValue : props.title; return ( <>
{ + handerfocus(); + if (props.clickCallback) { + props.clickCallback(event); + } + }} > - {showedTitle} + {props.title} ( } }} /> + {focused && ( + { + inputRef.current!.value = ""; + }} + style={{ + top: "50%", + right: "16px", + transform: "translateY(-12px)", + }} + /> + )} + + {props.children}
@@ -169,22 +267,26 @@ const AdvanceSearchLastItem = forwardRef< >((props, ref) => { const { inputRef, handerfocus } = useBackRef(ref); const { focused } = useSearchFocus(); - const inptValue = inputRef.current?.value, - showedTitle = focused ? props.title : inptValue ? inptValue : props.title; return ( <>
{ + handerfocus(); + if (props.clickCallback) { + props.clickCallback(event); + } + }} >
- {showedTitle} + {props.title} { if (event.key === "Enter") { @@ -192,6 +294,19 @@ const AdvanceSearchLastItem = forwardRef< } }} /> + {focused && ( + { + inputRef.current!.value = ""; + }} + style={{ + top: "50%", + right: "16px", + transform: "translateY(-12px)", + }} + /> + )} + {props.children}
diff --git a/src/routers/layout/search/pc/searchSuggest.tsx b/src/routers/layout/search/pc/searchSuggest.tsx new file mode 100644 index 0000000..ceb36b2 --- /dev/null +++ b/src/routers/layout/search/pc/searchSuggest.tsx @@ -0,0 +1,212 @@ +import { useSearchFocus } from "@components/proview/searchFocus"; +import HistoryToggleOffIcon from "@mui/icons-material/HistoryToggleOff"; +import TagIcon from "@mui/icons-material/Tag"; +import AccessibilityNewIcon from "@mui/icons-material/AccessibilityNew"; +import { Popper } from "@mui/material"; +import { Storage } from "@routers/layout/tools"; +import { useURLParams } from "@utils/hooks/url"; +import { FC, ReactElement, useEffect, useMemo, useState } from "react"; +import { useGetInputWrapper } from "./context"; +import styles from "./pc.module.less"; +import { + renderSuggestItemLists, + pcSuggestTagLists, + pcSuggestNameLists, +} from "./data"; +type PCTagSuggestProps = { + ClickCallback: (value: string) => void; +} & SuggestPopperProps; + +const PCTagStorage = new Storage("pcTagHistorys"); +export const addPCTagHistory = (value: string) => { + const oldHistory = PCTagStorage.getLocalStorage([]); + PCTagStorage.setLocalstorage([value, ...oldHistory.slice(0, 4)]); +}; +const usePCTagHistory = () => { + const local_history: renderSuggestItemLists = PCTagStorage.getLocalStorage( + [] + ).map((item) => ({ label: item, value: item })); + return local_history; +}; + +const useSuggestOption = (open: boolean) => { + const [fixedOpen, setOpen] = useState(false); + const { focused } = useSearchFocus(); + const handlerChangeOpen = useMemo(() => { + let flag = false; + return () => { + if (!flag) { + flag = true; + return setTimeout(() => { + setOpen(true); + }, 300); + } else { + setOpen(true); + } + }; + }, [focused]); + useEffect(() => { + //@ts-ignore + let setId; + if (focused && open) { + setId = handlerChangeOpen(); + } else { + clearTimeout(setId); + setOpen(false); + } + return () => { + //@ts-ignore + clearTimeout(setId); + }; + }, [focused, open]); + return [fixedOpen]; +}; + +export const PCTagSuggest: FC = ({ + open, + ClickCallback, +}) => { + const [tag] = useURLParams(["tag"]); + const history_tag = usePCTagHistory(); + const [fixedOpen] = useSuggestOption(open); + return ( + + + + 历史记录 + + } + dataList={history_tag} + feedbackMsg='暂无数据' + clickCallBack={ClickCallback} + activeValue={tag} + /> + + + tag + + } + dataList={pcSuggestTagLists} + clickCallBack={ClickCallback} + activeValue={tag} + /> + + ); +}; + +const PCNameStorage = new Storage("pcNameHistorys"); +export const addPCNameHistory = (value: string) => { + const oldHistory = PCNameStorage.getLocalStorage([]); + PCNameStorage.setLocalstorage([value, ...oldHistory.slice(0, 4)]); +}; +const usePCNameHistory = () => { + const local_history: renderSuggestItemLists = PCNameStorage.getLocalStorage( + [] + ).map((item) => ({ label: item, value: item })); + return local_history; +}; +export const PCNameSuggest: FC = ({ + open, + ClickCallback, +}) => { + const [name] = useURLParams(["name"]); + const history_name = usePCNameHistory(); + const [fixedOpen] = useSuggestOption(open); + return ( + + + + 历史记录 + + } + dataList={history_name} + feedbackMsg='暂无数据' + clickCallBack={ClickCallback} + activeValue={name} + /> + + + 作者 + + } + dataList={pcSuggestNameLists} + clickCallBack={ClickCallback} + activeValue={name} + /> + + ); +}; + +type SuggestPopperProps = { + open: boolean; + children?: ReactElement | ReactElement[]; +}; +const SuggestPopper: FC = (props) => { + const { anchorEl } = useGetInputWrapper(); + return ( + +
+ {props.children} +
+
+ ); +}; + +type SuggestItemProps = { + title: string | ReactElement; + dataList: renderSuggestItemLists; + feedbackMsg?: string; + activeValue: string; + clickCallBack: (value: string) => void; +}; +const SuggestItem: FC = ({ + title, + dataList, + clickCallBack, + activeValue, + feedbackMsg, +}) => { + const isActive = (value: string) => value === activeValue; + return ( +
+
+ {title} +
+
+ {dataList.map(({ label, value }, key) => ( + + ))} + {!dataList.length && ( +

+ {feedbackMsg} +

+ )} +
+
+ ); +}; diff --git a/src/routers/layout/search/phone/url.ts b/src/routers/layout/search/phone/url.ts index f365dbb..a8fdf56 100644 --- a/src/routers/layout/search/phone/url.ts +++ b/src/routers/layout/search/phone/url.ts @@ -19,8 +19,9 @@ export const idolNameAndFaceUrls: NameAndFaceUrlsType = [ ]; export const lubozuFaceUrl = `https://i0.hdslb.com/bfs/face/4fb5beac7b6eff7981897176430df514b7201556.jpg@240w_240h_1c_1s.webp`; - +const eoeGroupFaceUrl = `https://i0.hdslb.com/bfs/face/f0ac506bbfa4e4ce09729d424d28d2383e721ade.jpg@240w_240h_1c_1s.webp`; export const phoneMoreNameAndFaceUrls: NameAndFaceUrlsType = [ { label: "录播组", url: lubozuFaceUrl, value: "哎呀米诺录播组" }, ...idolNameAndFaceUrls, + { label: "EOE组合", url: eoeGroupFaceUrl, value: "EOE组合" }, ]; diff --git a/src/routers/search/index.tsx b/src/routers/search/index.tsx index 5769292..7fd2c8c 100644 --- a/src/routers/search/index.tsx +++ b/src/routers/search/index.tsx @@ -44,7 +44,7 @@ export default function SearchPage() { setLists([]); handerChangeLoading(true); function handlerSetList( - datas: UnPromisify>, + datas: UnPromisify>["data"], nextPage: number ) { setLists((lists) => [ @@ -62,15 +62,18 @@ export default function SearchPage() { return { ...itemRes, id: nanoid(4) }; }), ]); + handerChangeLoading(false); } const fetchHandler = async (page: number = 1) => { - const data = await fetchVideohandler(page, { + const { data, canceledByAxios } = await fetchVideohandler(page, { order, q: `tag.${tagParam}~name.${nameParam}`, }); - handlerSetList(data, page + 1); + if (!canceledByAxios) { + handlerSetList(data, page + 1); + } }; - fetchHandler(1).then(() => handerChangeLoading(false)); + fetchHandler(1); }, loaderData); const { loading, isEmpty } = useSearchShowState(lists), propsObj = { loading, isEmpty, data: lists }; diff --git a/src/routers/video/masonry.tsx b/src/routers/video/masonry.tsx index 9743efa..f6d7490 100644 --- a/src/routers/video/masonry.tsx +++ b/src/routers/video/masonry.tsx @@ -20,7 +20,7 @@ export default function VideoMasonry(props: VideoRouterMasonryType) { handerChangeLoading(true); // 在内部定义fetchHandler,保证拿到的是同步的 const fetchHandler = async (page: number = 1) => { - const data = await fetchVideohandler(page, props); + const { data, canceledByAxios } = await fetchVideohandler(page, props); setLists((lists) => [ ...lists, ...data.map((item, index) => { @@ -38,8 +38,11 @@ export default function VideoMasonry(props: VideoRouterMasonryType) { return { ...itemRes, id: nanoid(4) }; }), ]); + if (!canceledByAxios) { + handerChangeLoading(false); + } }; - fetchHandler(1).then(() => handerChangeLoading(false)); + fetchHandler(1); }, [props]); return (
diff --git a/src/routers/video/tools.ts b/src/routers/video/tools.ts index ee6cd2d..8322c5e 100644 --- a/src/routers/video/tools.ts +++ b/src/routers/video/tools.ts @@ -2,9 +2,18 @@ import { VideoRouterMasonryType, VideoRouterImageCardType } from "./videotype"; import { fetchVideos } from "@utils/fetch/index"; import message from "@components/message"; import { Pick } from "@utils/index"; +import { RFetchVideoRes } from "@utils/fetch/fetchtype"; -export const fetchVideohandler = async ( - page: number = 1, +type fetchVideohandlerType = ( + page: number, + props: VideoRouterMasonryType +) => Promise<{ + data: RFetchVideoRes["data"]["result"]; + canceledByAxios: boolean; +}>; + +export const fetchVideohandler: fetchVideohandlerType = async ( + page = 1, props: VideoRouterMasonryType ) => { const res = await fetchVideos({ @@ -16,11 +25,14 @@ export const fetchVideohandler = async ( if (res.code !== 0) { res.code === 400 && message.info("参数错误,请尝试其他tag"); res.code === 500 && message.info(res.message); - return []; + if (res.code === 403) { + return { data: [], canceledByAxios: true }; + } + return { data: [], canceledByAxios: false }; } else if (res.data.result.length < 1) { message.info("没有更多数据了,请尝试其他tag"); } - return res.data.result; + return { data: res.data.result, canceledByAxios: false }; }; export function PickVideoRouterImageCardType< diff --git a/src/utils/hooks/match.ts b/src/utils/hooks/match.ts index 252268d..95a9eca 100644 --- a/src/utils/hooks/match.ts +++ b/src/utils/hooks/match.ts @@ -10,14 +10,6 @@ export const useScreenMatchSize = (size: Breakpoint) => { const matchSize = useMediaQuery(theme.breakpoints.down(size)); return matchSize; }; -//个人主页头像大小 -`@240w_240h_1c_1s.webp`; -//移动平台首页图片大小 -`@480w_270h_1c`; -//电脑平台首页图片大小 -`@672w_378h_1c_!web-search-common-cover`; -//首页up头像大小 -`@96w_96h_1s.webp`; export const useBodyScrollHide = (hidden: boolean) => { useEffect(() => { diff --git a/src/utils/hooks/popover.ts b/src/utils/hooks/popover.ts index 46a054c..6744e65 100644 --- a/src/utils/hooks/popover.ts +++ b/src/utils/hooks/popover.ts @@ -1,10 +1,16 @@ import React from "react"; -export function usePopoverConfig() { +export function usePopoverConfig( + target: "target" | "currentTaarget" = "currentTaarget" +) { const [anchorEl, setAnchorEl] = React.useState(null); - const handleClick = (event: React.MouseEvent) => { - //@ts-ignore - setAnchorEl(event.currentTarget); + const handleClick = (event: React.MouseEvent) => { + if (target === "currentTaarget") { + setAnchorEl(event.currentTarget); + } else { + //@ts-ignore + setAnchorEl(event.target); + } }, handleClose = () => { setAnchorEl(null); From 5a66368a79684dc48101e025be20ae9f446ab3eb Mon Sep 17 00:00:00 2001 From: master1lan <278457198@qq.com> Date: Sat, 4 Mar 2023 18:12:10 +0800 Subject: [PATCH 40/41] =?UTF-8?q?:bug:=20fix(custom):=20=E4=BF=AE=E5=A4=8D?= =?UTF-8?q?tag=E6=A0=8F=E5=9C=A8=E6=89=8B=E6=9C=BA=E7=AB=AF=E5=87=BA?= =?UTF-8?q?=E7=8E=B0=E4=B8=A4=E6=AC=A1=E7=9A=84bug?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/routers/layout/index.tsx | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/routers/layout/index.tsx b/src/routers/layout/index.tsx index 36d4547..ffdf07c 100644 --- a/src/routers/layout/index.tsx +++ b/src/routers/layout/index.tsx @@ -46,7 +46,7 @@ const FixedNav = () => { return ( <> {shouldShowNav && ( -
+
)} From 73e69497a1bdb9b73ca5963cfa88dbf147e165c4 Mon Sep 17 00:00:00 2001 From: master1lan <278457198@qq.com> Date: Sat, 4 Mar 2023 20:55:03 +0800 Subject: [PATCH 41/41] =?UTF-8?q?:bug:=20fix(custom):=20=E4=BF=AE=E5=A4=8D?= =?UTF-8?q?=E9=80=89=E6=8B=A9=E6=A0=8F=E5=9C=A8=E6=89=8B=E6=9C=BA=E7=AB=AF?= =?UTF-8?q?=E8=BF=87=E7=AA=84=E7=9A=84=E9=97=AE=E9=A2=98?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/routers/layout/search/phone/item.tsx | 4 ++-- src/routers/layout/search/phone/modal.tsx | 4 ++-- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/src/routers/layout/search/phone/item.tsx b/src/routers/layout/search/phone/item.tsx index 740141b..e39cbd1 100644 --- a/src/routers/layout/search/phone/item.tsx +++ b/src/routers/layout/search/phone/item.tsx @@ -52,11 +52,11 @@ export const PhoneSearchItem = forwardRef< } bg-white shadow-lg p-6 rounded-3xl font-semibold overflow-hidden mb-3`} >
{openTitle}
-
+
setValue(() => event.target.value)} diff --git a/src/routers/layout/search/phone/modal.tsx b/src/routers/layout/search/phone/modal.tsx index 037d6d3..839c5b1 100644 --- a/src/routers/layout/search/phone/modal.tsx +++ b/src/routers/layout/search/phone/modal.tsx @@ -121,13 +121,13 @@ const SearchHeader = () => { label={"标签"} value={"搜索tag"} onClick={handlerChangeSearchMode.bind(null, "搜索tag")} - className='box-content min-w-0 w-9 p-0 min-h-0 h-6 mx-2 font-bold text-base' + className='box-content min-w-0 w-9 p-0 min-h-0 h-6 mx-2 font-bold text-base whitespace-nowrap' /> );