perf: app show hide toggle
This commit is contained in:
parent
f36ae70146
commit
ca1ea11dcb
16 changed files with 315 additions and 276 deletions
12
package.json
12
package.json
|
@ -58,16 +58,16 @@
|
|||
"@radix-ui/react-slot": "^1.1.0",
|
||||
"@radix-ui/react-switch": "^1.1.0",
|
||||
"@resreq/event-hub": "^1.6.0",
|
||||
"@resreq/timer": "^1.1.5",
|
||||
"@resreq/timer": "^1.1.6",
|
||||
"@rtco/client": "^0.2.17",
|
||||
"@tailwindcss/typography": "^0.5.15",
|
||||
"@webext-core/proxy-service": "^1.2.0",
|
||||
"class-variance-authority": "^0.7.0",
|
||||
"clsx": "^2.1.1",
|
||||
"date-fns": "^4.1.0",
|
||||
"framer-motion": "^11.5.6",
|
||||
"framer-motion": "^11.7.0",
|
||||
"idb-keyval": "^6.2.1",
|
||||
"lucide-react": "^0.445.0",
|
||||
"lucide-react": "^0.446.0",
|
||||
"nanoid": "^5.0.7",
|
||||
"next-themes": "^0.3.0",
|
||||
"react": "^18.3.1",
|
||||
|
@ -96,9 +96,9 @@
|
|||
"@eslint-react/eslint-plugin": "^1.14.2",
|
||||
"@eslint/js": "^9.11.1",
|
||||
"@types/eslint": "^9.6.1",
|
||||
"@types/eslint-plugin-tailwindcss": "^3.17.0",
|
||||
"@types/eslint__js": "^8.42.3",
|
||||
"@types/node": "^22.6.1",
|
||||
"@types/eslint-plugin-tailwindcss": "^3.17.0",
|
||||
"@types/node": "^22.7.2",
|
||||
"@types/react": "^18.3.9",
|
||||
"@types/react-dom": "^18.3.0",
|
||||
"@types/webextension-polyfill": "^0.12.1",
|
||||
|
@ -112,7 +112,7 @@
|
|||
"eslint-plugin-tailwindcss": "^3.17.4",
|
||||
"globals": "^15.9.0",
|
||||
"husky": "^9.1.6",
|
||||
"jiti": "^1.21.6",
|
||||
"jiti": "^2.0.0",
|
||||
"lint-staged": "^15.2.10",
|
||||
"npm-run-all": "^4.1.5",
|
||||
"postcss": "^8.4.47",
|
||||
|
|
370
pnpm-lock.yaml
370
pnpm-lock.yaml
|
@ -51,8 +51,8 @@ importers:
|
|||
specifier: ^1.6.0
|
||||
version: 1.6.0
|
||||
'@resreq/timer':
|
||||
specifier: ^1.1.5
|
||||
version: 1.1.5
|
||||
specifier: ^1.1.6
|
||||
version: 1.1.6
|
||||
'@rtco/client':
|
||||
specifier: ^0.2.17
|
||||
version: 0.2.17
|
||||
|
@ -72,14 +72,14 @@ importers:
|
|||
specifier: ^4.1.0
|
||||
version: 4.1.0
|
||||
framer-motion:
|
||||
specifier: ^11.5.6
|
||||
version: 11.5.6(react-dom@18.3.1(react@18.3.1))(react@18.3.1)
|
||||
specifier: ^11.7.0
|
||||
version: 11.7.0(react-dom@18.3.1(react@18.3.1))(react@18.3.1)
|
||||
idb-keyval:
|
||||
specifier: ^6.2.1
|
||||
version: 6.2.1
|
||||
lucide-react:
|
||||
specifier: ^0.445.0
|
||||
version: 0.445.0(react@18.3.1)
|
||||
specifier: ^0.446.0
|
||||
version: 0.446.0(react@18.3.1)
|
||||
nanoid:
|
||||
specifier: ^5.0.7
|
||||
version: 5.0.7
|
||||
|
@ -146,13 +146,13 @@ importers:
|
|||
devDependencies:
|
||||
'@commitlint/cli':
|
||||
specifier: ^19.5.0
|
||||
version: 19.5.0(@types/node@22.6.1)(typescript@5.6.2)
|
||||
version: 19.5.0(@types/node@22.7.2)(typescript@5.6.2)
|
||||
'@commitlint/config-conventional':
|
||||
specifier: ^19.5.0
|
||||
version: 19.5.0
|
||||
'@eslint-react/eslint-plugin':
|
||||
specifier: ^1.14.2
|
||||
version: 1.14.2(eslint@9.11.1(jiti@1.21.6))(typescript@5.6.2)
|
||||
version: 1.14.2(eslint@9.11.1(jiti@2.0.0))(typescript@5.6.2)
|
||||
'@eslint/js':
|
||||
specifier: ^9.11.1
|
||||
version: 9.11.1
|
||||
|
@ -166,8 +166,8 @@ importers:
|
|||
specifier: ^8.42.3
|
||||
version: 8.42.3
|
||||
'@types/node':
|
||||
specifier: ^22.6.1
|
||||
version: 22.6.1
|
||||
specifier: ^22.7.2
|
||||
version: 22.7.2
|
||||
'@types/react':
|
||||
specifier: ^18.3.9
|
||||
version: 18.3.9
|
||||
|
@ -179,10 +179,10 @@ importers:
|
|||
version: 0.12.1
|
||||
'@typescript-eslint/parser':
|
||||
specifier: ^8.7.0
|
||||
version: 8.7.0(eslint@9.11.1(jiti@1.21.6))(typescript@5.6.2)
|
||||
version: 8.7.0(eslint@9.11.1(jiti@2.0.0))(typescript@5.6.2)
|
||||
'@vitejs/plugin-react':
|
||||
specifier: ^4.3.1
|
||||
version: 4.3.1(vite@5.4.5(@types/node@22.6.1))
|
||||
version: 4.3.1(vite@5.4.5(@types/node@22.7.2))
|
||||
autoprefixer:
|
||||
specifier: ^10.4.20
|
||||
version: 10.4.20(postcss@8.4.47)
|
||||
|
@ -191,13 +191,13 @@ importers:
|
|||
version: 7.0.3
|
||||
eslint:
|
||||
specifier: ^9.11.1
|
||||
version: 9.11.1(jiti@1.21.6)
|
||||
version: 9.11.1(jiti@2.0.0)
|
||||
eslint-config-prettier:
|
||||
specifier: ^9.1.0
|
||||
version: 9.1.0(eslint@9.11.1(jiti@1.21.6))
|
||||
version: 9.1.0(eslint@9.11.1(jiti@2.0.0))
|
||||
eslint-plugin-prettier:
|
||||
specifier: ^5.2.1
|
||||
version: 5.2.1(@types/eslint@9.6.1)(eslint-config-prettier@9.1.0(eslint@9.11.1(jiti@1.21.6)))(eslint@9.11.1(jiti@1.21.6))(prettier@3.3.3)
|
||||
version: 5.2.1(@types/eslint@9.6.1)(eslint-config-prettier@9.1.0(eslint@9.11.1(jiti@2.0.0)))(eslint@9.11.1(jiti@2.0.0))(prettier@3.3.3)
|
||||
eslint-plugin-tailwindcss:
|
||||
specifier: ^3.17.4
|
||||
version: 3.17.4(tailwindcss@3.4.13)
|
||||
|
@ -208,8 +208,8 @@ importers:
|
|||
specifier: ^9.1.6
|
||||
version: 9.1.6
|
||||
jiti:
|
||||
specifier: ^1.21.6
|
||||
version: 1.21.6
|
||||
specifier: ^2.0.0
|
||||
version: 2.0.0
|
||||
lint-staged:
|
||||
specifier: ^15.2.10
|
||||
version: 15.2.10
|
||||
|
@ -236,13 +236,13 @@ importers:
|
|||
version: 5.6.2
|
||||
typescript-eslint:
|
||||
specifier: ^8.7.0
|
||||
version: 8.7.0(eslint@9.11.1(jiti@1.21.6))(typescript@5.6.2)
|
||||
version: 8.7.0(eslint@9.11.1(jiti@2.0.0))(typescript@5.6.2)
|
||||
webext-bridge:
|
||||
specifier: ^6.0.1
|
||||
version: 6.0.1
|
||||
wxt:
|
||||
specifier: ^0.19.10
|
||||
version: 0.19.10(@types/node@22.6.1)(bufferutil@4.0.8)(rollup@4.21.3)(utf-8-validate@6.0.4)
|
||||
version: 0.19.10(@types/node@22.7.2)(bufferutil@4.0.8)(rollup@4.21.3)(utf-8-validate@6.0.4)
|
||||
|
||||
packages:
|
||||
|
||||
|
@ -1677,8 +1677,8 @@ packages:
|
|||
'@resreq/event-hub@1.6.0':
|
||||
resolution: {integrity: sha512-SEzPuAc2bQdMV9cKrBIjW3EvntpU8NcBxdgdEo9yLKAeRfvdM4oM/sG8pFPRZOpYwOytaJqWGqwjc+RSRFFTvQ==}
|
||||
|
||||
'@resreq/timer@1.1.5':
|
||||
resolution: {integrity: sha512-QZrY3+1nbDd3e15muzFGRxJAaKYYJ9xC5+E/cm/B3cEXQbD8pjy/lilsMOaOpvligpUE1jXxiSZzuvH334fq5w==}
|
||||
'@resreq/timer@1.1.6':
|
||||
resolution: {integrity: sha512-D8aLPVuRz9ShraIHPU4v9hSWS7HhEDDm4ww9PkqwGRFMvlR3BQ/34UX0Do77PNdpqgJFp4eiRH02gHiV31/3Rw==}
|
||||
|
||||
'@rollup/pluginutils@5.1.0':
|
||||
resolution: {integrity: sha512-XTIWOPPcpvyKI6L1NHo0lFlCyznUEyPmPY1mc3KpPVDYulHSTvyeLNVW00QTLIAFNhR3kYnJTQHeGqU4M3n09g==}
|
||||
|
@ -1902,8 +1902,8 @@ packages:
|
|||
'@types/murmurhash3js-revisited@3.0.3':
|
||||
resolution: {integrity: sha512-QvlqvYtGBYIDeO8dFdY4djkRubcrc+yTJtBc7n8VZPlJDUS/00A+PssbvERM8f9bYRmcaSEHPZgZojeQj7kzAA==}
|
||||
|
||||
'@types/node@22.6.1':
|
||||
resolution: {integrity: sha512-V48tCfcKb/e6cVUigLAaJDAILdMP0fUW6BidkPK4GpGjXcfbnoHasCZDwz3N3yVt5we2RHm4XTQCpv0KJz9zqw==}
|
||||
'@types/node@22.7.2':
|
||||
resolution: {integrity: sha512-866lXSrpGpgyHBZUa2m9YNWqHDjjM0aBTJlNtYaGEw4rqY/dcD7deRVTbBBAJelfA7oaGDbNftXF/TL/A6RgoA==}
|
||||
|
||||
'@types/phoenix@1.6.5':
|
||||
resolution: {integrity: sha512-xegpDuR+z0UqG9fwHqNoy3rI7JDlvaPh2TY47Fl80oq6g+hXT+c/LEuE43X48clZ6lOfANl5WrPur9fYO1RJ/w==}
|
||||
|
@ -3244,8 +3244,8 @@ packages:
|
|||
fraction.js@4.3.7:
|
||||
resolution: {integrity: sha512-ZsDfxO51wGAXREY55a7la9LScWpwv9RxIrYABrlvOFBlH/ShPnrtsXeuUIfXKKOVicNxQ+o8JTbJvjS4M89yew==}
|
||||
|
||||
framer-motion@11.5.6:
|
||||
resolution: {integrity: sha512-JMwUpAxv/DWgul9vPgX0ElKn0G66sUc6O9tOXsYwn3zxwvhxFljSXC0XT2QCzuTYBshwC8nyDAa1SYcV0Ldbhw==}
|
||||
framer-motion@11.7.0:
|
||||
resolution: {integrity: sha512-m+1E3mMzDIQ5DsVghMvXyC+jSkZSm5RHBLA2gHa/LczcXwW6JbQK4Uz48LsuCTGV8bZFVUezcauHj3M33tY/5w==}
|
||||
peerDependencies:
|
||||
'@emotion/is-prop-valid': '*'
|
||||
react: ^18.0.0
|
||||
|
@ -3925,6 +3925,10 @@ packages:
|
|||
resolution: {integrity: sha512-2yTgeWTWzMWkHu6Jp9NKgePDaYHbntiwvYuuJLbbN9vl7DC9DvXKOB2BC3ZZ92D3cvV/aflH0osDfwpHepQ53w==}
|
||||
hasBin: true
|
||||
|
||||
jiti@2.0.0:
|
||||
resolution: {integrity: sha512-CJ7e7Abb779OTRv3lomfp7Mns/Sy1+U4pcAx5VbjxCZD5ZM/VJaXPpPjNKjtSvWQy/H86E49REXR34dl1JEz9w==}
|
||||
hasBin: true
|
||||
|
||||
js-cookie@2.2.1:
|
||||
resolution: {integrity: sha512-HvdH2LzI/EAZcUwA8+0nKNtWHqS+ZmijLA30RwZA0bo7ToCckjK5MkGhjED9KoRcXO6BaGI3I9UIzSA1FKFPOQ==}
|
||||
|
||||
|
@ -4122,8 +4126,8 @@ packages:
|
|||
lru-cache@5.1.1:
|
||||
resolution: {integrity: sha512-KpNARQA3Iwv+jTA0utUVVbrh+Jlrr1Fv0e56GGzAFOXN7dk/FviaDW8LHmK52DlcH4WP2n6gI8vN1aesBFgo9w==}
|
||||
|
||||
lucide-react@0.445.0:
|
||||
resolution: {integrity: sha512-YrLf3aAHvmd4dZ8ot+mMdNFrFpJD7YRwQ2pUcBhgqbmxtrMP4xDzIorcj+8y+6kpuXBF4JB0NOCTUWIYetJjgA==}
|
||||
lucide-react@0.446.0:
|
||||
resolution: {integrity: sha512-BU7gy8MfBMqvEdDPH79VhOXSEgyG8TSPOKWaExWGCQVqnGH7wGgDngPbofu+KdtVjPQBWbEmnfMTq90CTiiDRg==}
|
||||
peerDependencies:
|
||||
react: ^16.5.1 || ^17.0.0 || ^18.0.0 || ^19.0.0-rc
|
||||
|
||||
|
@ -6322,11 +6326,11 @@ snapshots:
|
|||
dependencies:
|
||||
'@chainsafe/is-ip': 2.0.2
|
||||
|
||||
'@commitlint/cli@19.5.0(@types/node@22.6.1)(typescript@5.6.2)':
|
||||
'@commitlint/cli@19.5.0(@types/node@22.7.2)(typescript@5.6.2)':
|
||||
dependencies:
|
||||
'@commitlint/format': 19.5.0
|
||||
'@commitlint/lint': 19.5.0
|
||||
'@commitlint/load': 19.5.0(@types/node@22.6.1)(typescript@5.6.2)
|
||||
'@commitlint/load': 19.5.0(@types/node@22.7.2)(typescript@5.6.2)
|
||||
'@commitlint/read': 19.5.0
|
||||
'@commitlint/types': 19.5.0
|
||||
tinyexec: 0.3.0
|
||||
|
@ -6373,7 +6377,7 @@ snapshots:
|
|||
'@commitlint/rules': 19.5.0
|
||||
'@commitlint/types': 19.5.0
|
||||
|
||||
'@commitlint/load@19.5.0(@types/node@22.6.1)(typescript@5.6.2)':
|
||||
'@commitlint/load@19.5.0(@types/node@22.7.2)(typescript@5.6.2)':
|
||||
dependencies:
|
||||
'@commitlint/config-validator': 19.5.0
|
||||
'@commitlint/execute-rule': 19.5.0
|
||||
|
@ -6381,7 +6385,7 @@ snapshots:
|
|||
'@commitlint/types': 19.5.0
|
||||
chalk: 5.3.0
|
||||
cosmiconfig: 9.0.0(typescript@5.6.2)
|
||||
cosmiconfig-typescript-loader: 5.0.0(@types/node@22.6.1)(cosmiconfig@9.0.0(typescript@5.6.2))(typescript@5.6.2)
|
||||
cosmiconfig-typescript-loader: 5.0.0(@types/node@22.7.2)(cosmiconfig@9.0.0(typescript@5.6.2))(typescript@5.6.2)
|
||||
lodash.isplainobject: 4.0.6
|
||||
lodash.merge: 4.6.2
|
||||
lodash.uniq: 4.5.0
|
||||
|
@ -6589,20 +6593,20 @@ snapshots:
|
|||
'@esbuild/win32-x64@0.23.1':
|
||||
optional: true
|
||||
|
||||
'@eslint-community/eslint-utils@4.4.0(eslint@9.11.1(jiti@1.21.6))':
|
||||
'@eslint-community/eslint-utils@4.4.0(eslint@9.11.1(jiti@2.0.0))':
|
||||
dependencies:
|
||||
eslint: 9.11.1(jiti@1.21.6)
|
||||
eslint: 9.11.1(jiti@2.0.0)
|
||||
eslint-visitor-keys: 3.4.3
|
||||
|
||||
'@eslint-community/regexpp@4.11.1': {}
|
||||
|
||||
'@eslint-react/ast@1.14.2(eslint@9.11.1(jiti@1.21.6))(typescript@5.6.2)':
|
||||
'@eslint-react/ast@1.14.2(eslint@9.11.1(jiti@2.0.0))(typescript@5.6.2)':
|
||||
dependencies:
|
||||
'@eslint-react/tools': 1.14.2
|
||||
'@eslint-react/types': 1.14.2(eslint@9.11.1(jiti@1.21.6))(typescript@5.6.2)
|
||||
'@eslint-react/types': 1.14.2(eslint@9.11.1(jiti@2.0.0))(typescript@5.6.2)
|
||||
'@typescript-eslint/types': 8.6.0
|
||||
'@typescript-eslint/typescript-estree': 8.6.0(typescript@5.6.2)
|
||||
'@typescript-eslint/utils': 8.6.0(eslint@9.11.1(jiti@1.21.6))(typescript@5.6.2)
|
||||
'@typescript-eslint/utils': 8.6.0(eslint@9.11.1(jiti@2.0.0))(typescript@5.6.2)
|
||||
birecord: 0.1.1
|
||||
string-ts: 2.2.0
|
||||
ts-pattern: 5.3.1
|
||||
|
@ -6611,18 +6615,18 @@ snapshots:
|
|||
- supports-color
|
||||
- typescript
|
||||
|
||||
'@eslint-react/core@1.14.2(eslint@9.11.1(jiti@1.21.6))(typescript@5.6.2)':
|
||||
'@eslint-react/core@1.14.2(eslint@9.11.1(jiti@2.0.0))(typescript@5.6.2)':
|
||||
dependencies:
|
||||
'@eslint-react/ast': 1.14.2(eslint@9.11.1(jiti@1.21.6))(typescript@5.6.2)
|
||||
'@eslint-react/jsx': 1.14.2(eslint@9.11.1(jiti@1.21.6))(typescript@5.6.2)
|
||||
'@eslint-react/shared': 1.14.2(eslint@9.11.1(jiti@1.21.6))(typescript@5.6.2)
|
||||
'@eslint-react/ast': 1.14.2(eslint@9.11.1(jiti@2.0.0))(typescript@5.6.2)
|
||||
'@eslint-react/jsx': 1.14.2(eslint@9.11.1(jiti@2.0.0))(typescript@5.6.2)
|
||||
'@eslint-react/shared': 1.14.2(eslint@9.11.1(jiti@2.0.0))(typescript@5.6.2)
|
||||
'@eslint-react/tools': 1.14.2
|
||||
'@eslint-react/types': 1.14.2(eslint@9.11.1(jiti@1.21.6))(typescript@5.6.2)
|
||||
'@eslint-react/var': 1.14.2(eslint@9.11.1(jiti@1.21.6))(typescript@5.6.2)
|
||||
'@eslint-react/types': 1.14.2(eslint@9.11.1(jiti@2.0.0))(typescript@5.6.2)
|
||||
'@eslint-react/var': 1.14.2(eslint@9.11.1(jiti@2.0.0))(typescript@5.6.2)
|
||||
'@typescript-eslint/scope-manager': 8.6.0
|
||||
'@typescript-eslint/type-utils': 8.6.0(eslint@9.11.1(jiti@1.21.6))(typescript@5.6.2)
|
||||
'@typescript-eslint/type-utils': 8.6.0(eslint@9.11.1(jiti@2.0.0))(typescript@5.6.2)
|
||||
'@typescript-eslint/types': 8.6.0
|
||||
'@typescript-eslint/utils': 8.6.0(eslint@9.11.1(jiti@1.21.6))(typescript@5.6.2)
|
||||
'@typescript-eslint/utils': 8.6.0(eslint@9.11.1(jiti@2.0.0))(typescript@5.6.2)
|
||||
birecord: 0.1.1
|
||||
short-unique-id: 5.2.0
|
||||
ts-pattern: 5.3.1
|
||||
|
@ -6631,46 +6635,46 @@ snapshots:
|
|||
- supports-color
|
||||
- typescript
|
||||
|
||||
'@eslint-react/eslint-plugin@1.14.2(eslint@9.11.1(jiti@1.21.6))(typescript@5.6.2)':
|
||||
'@eslint-react/eslint-plugin@1.14.2(eslint@9.11.1(jiti@2.0.0))(typescript@5.6.2)':
|
||||
dependencies:
|
||||
'@eslint-react/shared': 1.14.2(eslint@9.11.1(jiti@1.21.6))(typescript@5.6.2)
|
||||
'@eslint-react/shared': 1.14.2(eslint@9.11.1(jiti@2.0.0))(typescript@5.6.2)
|
||||
'@eslint-react/tools': 1.14.2
|
||||
'@eslint-react/types': 1.14.2(eslint@9.11.1(jiti@1.21.6))(typescript@5.6.2)
|
||||
'@eslint-react/types': 1.14.2(eslint@9.11.1(jiti@2.0.0))(typescript@5.6.2)
|
||||
'@typescript-eslint/scope-manager': 8.6.0
|
||||
'@typescript-eslint/type-utils': 8.6.0(eslint@9.11.1(jiti@1.21.6))(typescript@5.6.2)
|
||||
'@typescript-eslint/type-utils': 8.6.0(eslint@9.11.1(jiti@2.0.0))(typescript@5.6.2)
|
||||
'@typescript-eslint/types': 8.6.0
|
||||
'@typescript-eslint/utils': 8.6.0(eslint@9.11.1(jiti@1.21.6))(typescript@5.6.2)
|
||||
eslint: 9.11.1(jiti@1.21.6)
|
||||
eslint-plugin-react-debug: 1.14.2(eslint@9.11.1(jiti@1.21.6))(typescript@5.6.2)
|
||||
eslint-plugin-react-dom: 1.14.2(eslint@9.11.1(jiti@1.21.6))(typescript@5.6.2)
|
||||
eslint-plugin-react-hooks-extra: 1.14.2(eslint@9.11.1(jiti@1.21.6))(typescript@5.6.2)
|
||||
eslint-plugin-react-naming-convention: 1.14.2(eslint@9.11.1(jiti@1.21.6))(typescript@5.6.2)
|
||||
eslint-plugin-react-web-api: 1.14.2(eslint@9.11.1(jiti@1.21.6))(typescript@5.6.2)
|
||||
eslint-plugin-react-x: 1.14.2(eslint@9.11.1(jiti@1.21.6))(typescript@5.6.2)
|
||||
'@typescript-eslint/utils': 8.6.0(eslint@9.11.1(jiti@2.0.0))(typescript@5.6.2)
|
||||
eslint: 9.11.1(jiti@2.0.0)
|
||||
eslint-plugin-react-debug: 1.14.2(eslint@9.11.1(jiti@2.0.0))(typescript@5.6.2)
|
||||
eslint-plugin-react-dom: 1.14.2(eslint@9.11.1(jiti@2.0.0))(typescript@5.6.2)
|
||||
eslint-plugin-react-hooks-extra: 1.14.2(eslint@9.11.1(jiti@2.0.0))(typescript@5.6.2)
|
||||
eslint-plugin-react-naming-convention: 1.14.2(eslint@9.11.1(jiti@2.0.0))(typescript@5.6.2)
|
||||
eslint-plugin-react-web-api: 1.14.2(eslint@9.11.1(jiti@2.0.0))(typescript@5.6.2)
|
||||
eslint-plugin-react-x: 1.14.2(eslint@9.11.1(jiti@2.0.0))(typescript@5.6.2)
|
||||
optionalDependencies:
|
||||
typescript: 5.6.2
|
||||
transitivePeerDependencies:
|
||||
- supports-color
|
||||
|
||||
'@eslint-react/jsx@1.14.2(eslint@9.11.1(jiti@1.21.6))(typescript@5.6.2)':
|
||||
'@eslint-react/jsx@1.14.2(eslint@9.11.1(jiti@2.0.0))(typescript@5.6.2)':
|
||||
dependencies:
|
||||
'@eslint-react/ast': 1.14.2(eslint@9.11.1(jiti@1.21.6))(typescript@5.6.2)
|
||||
'@eslint-react/ast': 1.14.2(eslint@9.11.1(jiti@2.0.0))(typescript@5.6.2)
|
||||
'@eslint-react/tools': 1.14.2
|
||||
'@eslint-react/types': 1.14.2(eslint@9.11.1(jiti@1.21.6))(typescript@5.6.2)
|
||||
'@eslint-react/var': 1.14.2(eslint@9.11.1(jiti@1.21.6))(typescript@5.6.2)
|
||||
'@eslint-react/types': 1.14.2(eslint@9.11.1(jiti@2.0.0))(typescript@5.6.2)
|
||||
'@eslint-react/var': 1.14.2(eslint@9.11.1(jiti@2.0.0))(typescript@5.6.2)
|
||||
'@typescript-eslint/scope-manager': 8.6.0
|
||||
'@typescript-eslint/types': 8.6.0
|
||||
'@typescript-eslint/utils': 8.6.0(eslint@9.11.1(jiti@1.21.6))(typescript@5.6.2)
|
||||
'@typescript-eslint/utils': 8.6.0(eslint@9.11.1(jiti@2.0.0))(typescript@5.6.2)
|
||||
ts-pattern: 5.3.1
|
||||
transitivePeerDependencies:
|
||||
- eslint
|
||||
- supports-color
|
||||
- typescript
|
||||
|
||||
'@eslint-react/shared@1.14.2(eslint@9.11.1(jiti@1.21.6))(typescript@5.6.2)':
|
||||
'@eslint-react/shared@1.14.2(eslint@9.11.1(jiti@2.0.0))(typescript@5.6.2)':
|
||||
dependencies:
|
||||
'@eslint-react/tools': 1.14.2
|
||||
'@typescript-eslint/utils': 8.6.0(eslint@9.11.1(jiti@1.21.6))(typescript@5.6.2)
|
||||
'@typescript-eslint/utils': 8.6.0(eslint@9.11.1(jiti@2.0.0))(typescript@5.6.2)
|
||||
picomatch: 4.0.2
|
||||
transitivePeerDependencies:
|
||||
- eslint
|
||||
|
@ -6679,24 +6683,24 @@ snapshots:
|
|||
|
||||
'@eslint-react/tools@1.14.2': {}
|
||||
|
||||
'@eslint-react/types@1.14.2(eslint@9.11.1(jiti@1.21.6))(typescript@5.6.2)':
|
||||
'@eslint-react/types@1.14.2(eslint@9.11.1(jiti@2.0.0))(typescript@5.6.2)':
|
||||
dependencies:
|
||||
'@eslint-react/tools': 1.14.2
|
||||
'@typescript-eslint/types': 8.6.0
|
||||
'@typescript-eslint/utils': 8.6.0(eslint@9.11.1(jiti@1.21.6))(typescript@5.6.2)
|
||||
'@typescript-eslint/utils': 8.6.0(eslint@9.11.1(jiti@2.0.0))(typescript@5.6.2)
|
||||
transitivePeerDependencies:
|
||||
- eslint
|
||||
- supports-color
|
||||
- typescript
|
||||
|
||||
'@eslint-react/var@1.14.2(eslint@9.11.1(jiti@1.21.6))(typescript@5.6.2)':
|
||||
'@eslint-react/var@1.14.2(eslint@9.11.1(jiti@2.0.0))(typescript@5.6.2)':
|
||||
dependencies:
|
||||
'@eslint-react/ast': 1.14.2(eslint@9.11.1(jiti@1.21.6))(typescript@5.6.2)
|
||||
'@eslint-react/ast': 1.14.2(eslint@9.11.1(jiti@2.0.0))(typescript@5.6.2)
|
||||
'@eslint-react/tools': 1.14.2
|
||||
'@eslint-react/types': 1.14.2(eslint@9.11.1(jiti@1.21.6))(typescript@5.6.2)
|
||||
'@eslint-react/types': 1.14.2(eslint@9.11.1(jiti@2.0.0))(typescript@5.6.2)
|
||||
'@typescript-eslint/scope-manager': 8.6.0
|
||||
'@typescript-eslint/types': 8.6.0
|
||||
'@typescript-eslint/utils': 8.6.0(eslint@9.11.1(jiti@1.21.6))(typescript@5.6.2)
|
||||
'@typescript-eslint/utils': 8.6.0(eslint@9.11.1(jiti@2.0.0))(typescript@5.6.2)
|
||||
ts-pattern: 5.3.1
|
||||
transitivePeerDependencies:
|
||||
- eslint
|
||||
|
@ -7079,7 +7083,7 @@ snapshots:
|
|||
'@grpc/grpc-js@1.9.15':
|
||||
dependencies:
|
||||
'@grpc/proto-loader': 0.7.13
|
||||
'@types/node': 22.6.1
|
||||
'@types/node': 22.7.2
|
||||
|
||||
'@grpc/proto-loader@0.7.13':
|
||||
dependencies:
|
||||
|
@ -7848,7 +7852,7 @@ snapshots:
|
|||
|
||||
'@resreq/event-hub@1.6.0': {}
|
||||
|
||||
'@resreq/timer@1.1.5':
|
||||
'@resreq/timer@1.1.6':
|
||||
dependencies:
|
||||
'@resreq/event-hub': 1.6.0
|
||||
|
||||
|
@ -8025,7 +8029,7 @@ snapshots:
|
|||
|
||||
'@types/conventional-commits-parser@5.0.0':
|
||||
dependencies:
|
||||
'@types/node': 22.6.1
|
||||
'@types/node': 22.7.2
|
||||
|
||||
'@types/debug@4.1.12':
|
||||
dependencies:
|
||||
|
@ -8033,7 +8037,7 @@ snapshots:
|
|||
|
||||
'@types/dns-packet@5.6.5':
|
||||
dependencies:
|
||||
'@types/node': 22.6.1
|
||||
'@types/node': 22.7.2
|
||||
|
||||
'@types/eslint-plugin-tailwindcss@3.17.0':
|
||||
dependencies:
|
||||
|
@ -8084,7 +8088,7 @@ snapshots:
|
|||
|
||||
'@types/murmurhash3js-revisited@3.0.3': {}
|
||||
|
||||
'@types/node@22.6.1':
|
||||
'@types/node@22.7.2':
|
||||
dependencies:
|
||||
undici-types: 6.19.8
|
||||
|
||||
|
@ -8103,7 +8107,7 @@ snapshots:
|
|||
|
||||
'@types/readable-stream@4.0.15':
|
||||
dependencies:
|
||||
'@types/node': 22.6.1
|
||||
'@types/node': 22.7.2
|
||||
safe-buffer: 5.1.2
|
||||
|
||||
'@types/unist@2.0.11': {}
|
||||
|
@ -8118,22 +8122,22 @@ snapshots:
|
|||
|
||||
'@types/ws@8.5.12':
|
||||
dependencies:
|
||||
'@types/node': 22.6.1
|
||||
'@types/node': 22.7.2
|
||||
|
||||
'@types/yauzl@2.10.3':
|
||||
dependencies:
|
||||
'@types/node': 22.6.1
|
||||
'@types/node': 22.7.2
|
||||
optional: true
|
||||
|
||||
'@typescript-eslint/eslint-plugin@8.7.0(@typescript-eslint/parser@8.7.0(eslint@9.11.1(jiti@1.21.6))(typescript@5.6.2))(eslint@9.11.1(jiti@1.21.6))(typescript@5.6.2)':
|
||||
'@typescript-eslint/eslint-plugin@8.7.0(@typescript-eslint/parser@8.7.0(eslint@9.11.1(jiti@2.0.0))(typescript@5.6.2))(eslint@9.11.1(jiti@2.0.0))(typescript@5.6.2)':
|
||||
dependencies:
|
||||
'@eslint-community/regexpp': 4.11.1
|
||||
'@typescript-eslint/parser': 8.7.0(eslint@9.11.1(jiti@1.21.6))(typescript@5.6.2)
|
||||
'@typescript-eslint/parser': 8.7.0(eslint@9.11.1(jiti@2.0.0))(typescript@5.6.2)
|
||||
'@typescript-eslint/scope-manager': 8.7.0
|
||||
'@typescript-eslint/type-utils': 8.7.0(eslint@9.11.1(jiti@1.21.6))(typescript@5.6.2)
|
||||
'@typescript-eslint/utils': 8.7.0(eslint@9.11.1(jiti@1.21.6))(typescript@5.6.2)
|
||||
'@typescript-eslint/type-utils': 8.7.0(eslint@9.11.1(jiti@2.0.0))(typescript@5.6.2)
|
||||
'@typescript-eslint/utils': 8.7.0(eslint@9.11.1(jiti@2.0.0))(typescript@5.6.2)
|
||||
'@typescript-eslint/visitor-keys': 8.7.0
|
||||
eslint: 9.11.1(jiti@1.21.6)
|
||||
eslint: 9.11.1(jiti@2.0.0)
|
||||
graphemer: 1.4.0
|
||||
ignore: 5.3.2
|
||||
natural-compare: 1.4.0
|
||||
|
@ -8143,14 +8147,14 @@ snapshots:
|
|||
transitivePeerDependencies:
|
||||
- supports-color
|
||||
|
||||
'@typescript-eslint/parser@8.7.0(eslint@9.11.1(jiti@1.21.6))(typescript@5.6.2)':
|
||||
'@typescript-eslint/parser@8.7.0(eslint@9.11.1(jiti@2.0.0))(typescript@5.6.2)':
|
||||
dependencies:
|
||||
'@typescript-eslint/scope-manager': 8.7.0
|
||||
'@typescript-eslint/types': 8.7.0
|
||||
'@typescript-eslint/typescript-estree': 8.7.0(typescript@5.6.2)
|
||||
'@typescript-eslint/visitor-keys': 8.7.0
|
||||
debug: 4.3.7
|
||||
eslint: 9.11.1(jiti@1.21.6)
|
||||
eslint: 9.11.1(jiti@2.0.0)
|
||||
optionalDependencies:
|
||||
typescript: 5.6.2
|
||||
transitivePeerDependencies:
|
||||
|
@ -8166,10 +8170,10 @@ snapshots:
|
|||
'@typescript-eslint/types': 8.7.0
|
||||
'@typescript-eslint/visitor-keys': 8.7.0
|
||||
|
||||
'@typescript-eslint/type-utils@8.6.0(eslint@9.11.1(jiti@1.21.6))(typescript@5.6.2)':
|
||||
'@typescript-eslint/type-utils@8.6.0(eslint@9.11.1(jiti@2.0.0))(typescript@5.6.2)':
|
||||
dependencies:
|
||||
'@typescript-eslint/typescript-estree': 8.6.0(typescript@5.6.2)
|
||||
'@typescript-eslint/utils': 8.6.0(eslint@9.11.1(jiti@1.21.6))(typescript@5.6.2)
|
||||
'@typescript-eslint/utils': 8.6.0(eslint@9.11.1(jiti@2.0.0))(typescript@5.6.2)
|
||||
debug: 4.3.7
|
||||
ts-api-utils: 1.3.0(typescript@5.6.2)
|
||||
optionalDependencies:
|
||||
|
@ -8178,10 +8182,10 @@ snapshots:
|
|||
- eslint
|
||||
- supports-color
|
||||
|
||||
'@typescript-eslint/type-utils@8.7.0(eslint@9.11.1(jiti@1.21.6))(typescript@5.6.2)':
|
||||
'@typescript-eslint/type-utils@8.7.0(eslint@9.11.1(jiti@2.0.0))(typescript@5.6.2)':
|
||||
dependencies:
|
||||
'@typescript-eslint/typescript-estree': 8.7.0(typescript@5.6.2)
|
||||
'@typescript-eslint/utils': 8.7.0(eslint@9.11.1(jiti@1.21.6))(typescript@5.6.2)
|
||||
'@typescript-eslint/utils': 8.7.0(eslint@9.11.1(jiti@2.0.0))(typescript@5.6.2)
|
||||
debug: 4.3.7
|
||||
ts-api-utils: 1.3.0(typescript@5.6.2)
|
||||
optionalDependencies:
|
||||
|
@ -8224,24 +8228,24 @@ snapshots:
|
|||
transitivePeerDependencies:
|
||||
- supports-color
|
||||
|
||||
'@typescript-eslint/utils@8.6.0(eslint@9.11.1(jiti@1.21.6))(typescript@5.6.2)':
|
||||
'@typescript-eslint/utils@8.6.0(eslint@9.11.1(jiti@2.0.0))(typescript@5.6.2)':
|
||||
dependencies:
|
||||
'@eslint-community/eslint-utils': 4.4.0(eslint@9.11.1(jiti@1.21.6))
|
||||
'@eslint-community/eslint-utils': 4.4.0(eslint@9.11.1(jiti@2.0.0))
|
||||
'@typescript-eslint/scope-manager': 8.6.0
|
||||
'@typescript-eslint/types': 8.6.0
|
||||
'@typescript-eslint/typescript-estree': 8.6.0(typescript@5.6.2)
|
||||
eslint: 9.11.1(jiti@1.21.6)
|
||||
eslint: 9.11.1(jiti@2.0.0)
|
||||
transitivePeerDependencies:
|
||||
- supports-color
|
||||
- typescript
|
||||
|
||||
'@typescript-eslint/utils@8.7.0(eslint@9.11.1(jiti@1.21.6))(typescript@5.6.2)':
|
||||
'@typescript-eslint/utils@8.7.0(eslint@9.11.1(jiti@2.0.0))(typescript@5.6.2)':
|
||||
dependencies:
|
||||
'@eslint-community/eslint-utils': 4.4.0(eslint@9.11.1(jiti@1.21.6))
|
||||
'@eslint-community/eslint-utils': 4.4.0(eslint@9.11.1(jiti@2.0.0))
|
||||
'@typescript-eslint/scope-manager': 8.7.0
|
||||
'@typescript-eslint/types': 8.7.0
|
||||
'@typescript-eslint/typescript-estree': 8.7.0(typescript@5.6.2)
|
||||
eslint: 9.11.1(jiti@1.21.6)
|
||||
eslint: 9.11.1(jiti@2.0.0)
|
||||
transitivePeerDependencies:
|
||||
- supports-color
|
||||
- typescript
|
||||
|
@ -8258,14 +8262,14 @@ snapshots:
|
|||
|
||||
'@ungap/structured-clone@1.2.0': {}
|
||||
|
||||
'@vitejs/plugin-react@4.3.1(vite@5.4.5(@types/node@22.6.1))':
|
||||
'@vitejs/plugin-react@4.3.1(vite@5.4.5(@types/node@22.7.2))':
|
||||
dependencies:
|
||||
'@babel/core': 7.25.2
|
||||
'@babel/plugin-transform-react-jsx-self': 7.24.7(@babel/core@7.25.2)
|
||||
'@babel/plugin-transform-react-jsx-source': 7.24.7(@babel/core@7.25.2)
|
||||
'@types/babel__core': 7.20.5
|
||||
react-refresh: 0.14.2
|
||||
vite: 5.4.5(@types/node@22.6.1)
|
||||
vite: 5.4.5(@types/node@22.7.2)
|
||||
transitivePeerDependencies:
|
||||
- supports-color
|
||||
|
||||
|
@ -8762,7 +8766,7 @@ snapshots:
|
|||
|
||||
chrome-launcher@1.1.0:
|
||||
dependencies:
|
||||
'@types/node': 22.6.1
|
||||
'@types/node': 22.7.2
|
||||
escape-string-regexp: 4.0.0
|
||||
is-wsl: 2.2.0
|
||||
lighthouse-logger: 2.0.1
|
||||
|
@ -8922,9 +8926,9 @@ snapshots:
|
|||
|
||||
core-util-is@1.0.3: {}
|
||||
|
||||
cosmiconfig-typescript-loader@5.0.0(@types/node@22.6.1)(cosmiconfig@9.0.0(typescript@5.6.2))(typescript@5.6.2):
|
||||
cosmiconfig-typescript-loader@5.0.0(@types/node@22.7.2)(cosmiconfig@9.0.0(typescript@5.6.2))(typescript@5.6.2):
|
||||
dependencies:
|
||||
'@types/node': 22.6.1
|
||||
'@types/node': 22.7.2
|
||||
cosmiconfig: 9.0.0(typescript@5.6.2)
|
||||
jiti: 1.21.6
|
||||
typescript: 5.6.2
|
||||
|
@ -9338,34 +9342,34 @@ snapshots:
|
|||
|
||||
escape-string-regexp@5.0.0: {}
|
||||
|
||||
eslint-config-prettier@9.1.0(eslint@9.11.1(jiti@1.21.6)):
|
||||
eslint-config-prettier@9.1.0(eslint@9.11.1(jiti@2.0.0)):
|
||||
dependencies:
|
||||
eslint: 9.11.1(jiti@1.21.6)
|
||||
eslint: 9.11.1(jiti@2.0.0)
|
||||
|
||||
eslint-plugin-prettier@5.2.1(@types/eslint@9.6.1)(eslint-config-prettier@9.1.0(eslint@9.11.1(jiti@1.21.6)))(eslint@9.11.1(jiti@1.21.6))(prettier@3.3.3):
|
||||
eslint-plugin-prettier@5.2.1(@types/eslint@9.6.1)(eslint-config-prettier@9.1.0(eslint@9.11.1(jiti@2.0.0)))(eslint@9.11.1(jiti@2.0.0))(prettier@3.3.3):
|
||||
dependencies:
|
||||
eslint: 9.11.1(jiti@1.21.6)
|
||||
eslint: 9.11.1(jiti@2.0.0)
|
||||
prettier: 3.3.3
|
||||
prettier-linter-helpers: 1.0.0
|
||||
synckit: 0.9.1
|
||||
optionalDependencies:
|
||||
'@types/eslint': 9.6.1
|
||||
eslint-config-prettier: 9.1.0(eslint@9.11.1(jiti@1.21.6))
|
||||
eslint-config-prettier: 9.1.0(eslint@9.11.1(jiti@2.0.0))
|
||||
|
||||
eslint-plugin-react-debug@1.14.2(eslint@9.11.1(jiti@1.21.6))(typescript@5.6.2):
|
||||
eslint-plugin-react-debug@1.14.2(eslint@9.11.1(jiti@2.0.0))(typescript@5.6.2):
|
||||
dependencies:
|
||||
'@eslint-react/ast': 1.14.2(eslint@9.11.1(jiti@1.21.6))(typescript@5.6.2)
|
||||
'@eslint-react/core': 1.14.2(eslint@9.11.1(jiti@1.21.6))(typescript@5.6.2)
|
||||
'@eslint-react/jsx': 1.14.2(eslint@9.11.1(jiti@1.21.6))(typescript@5.6.2)
|
||||
'@eslint-react/shared': 1.14.2(eslint@9.11.1(jiti@1.21.6))(typescript@5.6.2)
|
||||
'@eslint-react/ast': 1.14.2(eslint@9.11.1(jiti@2.0.0))(typescript@5.6.2)
|
||||
'@eslint-react/core': 1.14.2(eslint@9.11.1(jiti@2.0.0))(typescript@5.6.2)
|
||||
'@eslint-react/jsx': 1.14.2(eslint@9.11.1(jiti@2.0.0))(typescript@5.6.2)
|
||||
'@eslint-react/shared': 1.14.2(eslint@9.11.1(jiti@2.0.0))(typescript@5.6.2)
|
||||
'@eslint-react/tools': 1.14.2
|
||||
'@eslint-react/types': 1.14.2(eslint@9.11.1(jiti@1.21.6))(typescript@5.6.2)
|
||||
'@eslint-react/var': 1.14.2(eslint@9.11.1(jiti@1.21.6))(typescript@5.6.2)
|
||||
'@eslint-react/types': 1.14.2(eslint@9.11.1(jiti@2.0.0))(typescript@5.6.2)
|
||||
'@eslint-react/var': 1.14.2(eslint@9.11.1(jiti@2.0.0))(typescript@5.6.2)
|
||||
'@typescript-eslint/scope-manager': 8.6.0
|
||||
'@typescript-eslint/type-utils': 8.6.0(eslint@9.11.1(jiti@1.21.6))(typescript@5.6.2)
|
||||
'@typescript-eslint/type-utils': 8.6.0(eslint@9.11.1(jiti@2.0.0))(typescript@5.6.2)
|
||||
'@typescript-eslint/types': 8.6.0
|
||||
'@typescript-eslint/utils': 8.6.0(eslint@9.11.1(jiti@1.21.6))(typescript@5.6.2)
|
||||
eslint: 9.11.1(jiti@1.21.6)
|
||||
'@typescript-eslint/utils': 8.6.0(eslint@9.11.1(jiti@2.0.0))(typescript@5.6.2)
|
||||
eslint: 9.11.1(jiti@2.0.0)
|
||||
string-ts: 2.2.0
|
||||
ts-pattern: 5.3.1
|
||||
optionalDependencies:
|
||||
|
@ -9373,99 +9377,99 @@ snapshots:
|
|||
transitivePeerDependencies:
|
||||
- supports-color
|
||||
|
||||
eslint-plugin-react-dom@1.14.2(eslint@9.11.1(jiti@1.21.6))(typescript@5.6.2):
|
||||
eslint-plugin-react-dom@1.14.2(eslint@9.11.1(jiti@2.0.0))(typescript@5.6.2):
|
||||
dependencies:
|
||||
'@eslint-react/ast': 1.14.2(eslint@9.11.1(jiti@1.21.6))(typescript@5.6.2)
|
||||
'@eslint-react/core': 1.14.2(eslint@9.11.1(jiti@1.21.6))(typescript@5.6.2)
|
||||
'@eslint-react/jsx': 1.14.2(eslint@9.11.1(jiti@1.21.6))(typescript@5.6.2)
|
||||
'@eslint-react/shared': 1.14.2(eslint@9.11.1(jiti@1.21.6))(typescript@5.6.2)
|
||||
'@eslint-react/ast': 1.14.2(eslint@9.11.1(jiti@2.0.0))(typescript@5.6.2)
|
||||
'@eslint-react/core': 1.14.2(eslint@9.11.1(jiti@2.0.0))(typescript@5.6.2)
|
||||
'@eslint-react/jsx': 1.14.2(eslint@9.11.1(jiti@2.0.0))(typescript@5.6.2)
|
||||
'@eslint-react/shared': 1.14.2(eslint@9.11.1(jiti@2.0.0))(typescript@5.6.2)
|
||||
'@eslint-react/tools': 1.14.2
|
||||
'@eslint-react/types': 1.14.2(eslint@9.11.1(jiti@1.21.6))(typescript@5.6.2)
|
||||
'@eslint-react/var': 1.14.2(eslint@9.11.1(jiti@1.21.6))(typescript@5.6.2)
|
||||
'@eslint-react/types': 1.14.2(eslint@9.11.1(jiti@2.0.0))(typescript@5.6.2)
|
||||
'@eslint-react/var': 1.14.2(eslint@9.11.1(jiti@2.0.0))(typescript@5.6.2)
|
||||
'@typescript-eslint/scope-manager': 8.6.0
|
||||
'@typescript-eslint/types': 8.6.0
|
||||
'@typescript-eslint/utils': 8.6.0(eslint@9.11.1(jiti@1.21.6))(typescript@5.6.2)
|
||||
eslint: 9.11.1(jiti@1.21.6)
|
||||
'@typescript-eslint/utils': 8.6.0(eslint@9.11.1(jiti@2.0.0))(typescript@5.6.2)
|
||||
eslint: 9.11.1(jiti@2.0.0)
|
||||
ts-pattern: 5.3.1
|
||||
optionalDependencies:
|
||||
typescript: 5.6.2
|
||||
transitivePeerDependencies:
|
||||
- supports-color
|
||||
|
||||
eslint-plugin-react-hooks-extra@1.14.2(eslint@9.11.1(jiti@1.21.6))(typescript@5.6.2):
|
||||
eslint-plugin-react-hooks-extra@1.14.2(eslint@9.11.1(jiti@2.0.0))(typescript@5.6.2):
|
||||
dependencies:
|
||||
'@eslint-react/ast': 1.14.2(eslint@9.11.1(jiti@1.21.6))(typescript@5.6.2)
|
||||
'@eslint-react/core': 1.14.2(eslint@9.11.1(jiti@1.21.6))(typescript@5.6.2)
|
||||
'@eslint-react/jsx': 1.14.2(eslint@9.11.1(jiti@1.21.6))(typescript@5.6.2)
|
||||
'@eslint-react/shared': 1.14.2(eslint@9.11.1(jiti@1.21.6))(typescript@5.6.2)
|
||||
'@eslint-react/ast': 1.14.2(eslint@9.11.1(jiti@2.0.0))(typescript@5.6.2)
|
||||
'@eslint-react/core': 1.14.2(eslint@9.11.1(jiti@2.0.0))(typescript@5.6.2)
|
||||
'@eslint-react/jsx': 1.14.2(eslint@9.11.1(jiti@2.0.0))(typescript@5.6.2)
|
||||
'@eslint-react/shared': 1.14.2(eslint@9.11.1(jiti@2.0.0))(typescript@5.6.2)
|
||||
'@eslint-react/tools': 1.14.2
|
||||
'@eslint-react/types': 1.14.2(eslint@9.11.1(jiti@1.21.6))(typescript@5.6.2)
|
||||
'@eslint-react/var': 1.14.2(eslint@9.11.1(jiti@1.21.6))(typescript@5.6.2)
|
||||
'@eslint-react/types': 1.14.2(eslint@9.11.1(jiti@2.0.0))(typescript@5.6.2)
|
||||
'@eslint-react/var': 1.14.2(eslint@9.11.1(jiti@2.0.0))(typescript@5.6.2)
|
||||
'@typescript-eslint/scope-manager': 8.6.0
|
||||
'@typescript-eslint/type-utils': 8.6.0(eslint@9.11.1(jiti@1.21.6))(typescript@5.6.2)
|
||||
'@typescript-eslint/type-utils': 8.6.0(eslint@9.11.1(jiti@2.0.0))(typescript@5.6.2)
|
||||
'@typescript-eslint/types': 8.6.0
|
||||
'@typescript-eslint/utils': 8.6.0(eslint@9.11.1(jiti@1.21.6))(typescript@5.6.2)
|
||||
eslint: 9.11.1(jiti@1.21.6)
|
||||
'@typescript-eslint/utils': 8.6.0(eslint@9.11.1(jiti@2.0.0))(typescript@5.6.2)
|
||||
eslint: 9.11.1(jiti@2.0.0)
|
||||
ts-pattern: 5.3.1
|
||||
optionalDependencies:
|
||||
typescript: 5.6.2
|
||||
transitivePeerDependencies:
|
||||
- supports-color
|
||||
|
||||
eslint-plugin-react-naming-convention@1.14.2(eslint@9.11.1(jiti@1.21.6))(typescript@5.6.2):
|
||||
eslint-plugin-react-naming-convention@1.14.2(eslint@9.11.1(jiti@2.0.0))(typescript@5.6.2):
|
||||
dependencies:
|
||||
'@eslint-react/ast': 1.14.2(eslint@9.11.1(jiti@1.21.6))(typescript@5.6.2)
|
||||
'@eslint-react/core': 1.14.2(eslint@9.11.1(jiti@1.21.6))(typescript@5.6.2)
|
||||
'@eslint-react/jsx': 1.14.2(eslint@9.11.1(jiti@1.21.6))(typescript@5.6.2)
|
||||
'@eslint-react/shared': 1.14.2(eslint@9.11.1(jiti@1.21.6))(typescript@5.6.2)
|
||||
'@eslint-react/ast': 1.14.2(eslint@9.11.1(jiti@2.0.0))(typescript@5.6.2)
|
||||
'@eslint-react/core': 1.14.2(eslint@9.11.1(jiti@2.0.0))(typescript@5.6.2)
|
||||
'@eslint-react/jsx': 1.14.2(eslint@9.11.1(jiti@2.0.0))(typescript@5.6.2)
|
||||
'@eslint-react/shared': 1.14.2(eslint@9.11.1(jiti@2.0.0))(typescript@5.6.2)
|
||||
'@eslint-react/tools': 1.14.2
|
||||
'@eslint-react/types': 1.14.2(eslint@9.11.1(jiti@1.21.6))(typescript@5.6.2)
|
||||
'@eslint-react/types': 1.14.2(eslint@9.11.1(jiti@2.0.0))(typescript@5.6.2)
|
||||
'@typescript-eslint/scope-manager': 8.6.0
|
||||
'@typescript-eslint/type-utils': 8.6.0(eslint@9.11.1(jiti@1.21.6))(typescript@5.6.2)
|
||||
'@typescript-eslint/type-utils': 8.6.0(eslint@9.11.1(jiti@2.0.0))(typescript@5.6.2)
|
||||
'@typescript-eslint/types': 8.6.0
|
||||
'@typescript-eslint/utils': 8.6.0(eslint@9.11.1(jiti@1.21.6))(typescript@5.6.2)
|
||||
eslint: 9.11.1(jiti@1.21.6)
|
||||
'@typescript-eslint/utils': 8.6.0(eslint@9.11.1(jiti@2.0.0))(typescript@5.6.2)
|
||||
eslint: 9.11.1(jiti@2.0.0)
|
||||
ts-pattern: 5.3.1
|
||||
optionalDependencies:
|
||||
typescript: 5.6.2
|
||||
transitivePeerDependencies:
|
||||
- supports-color
|
||||
|
||||
eslint-plugin-react-web-api@1.14.2(eslint@9.11.1(jiti@1.21.6))(typescript@5.6.2):
|
||||
eslint-plugin-react-web-api@1.14.2(eslint@9.11.1(jiti@2.0.0))(typescript@5.6.2):
|
||||
dependencies:
|
||||
'@eslint-react/ast': 1.14.2(eslint@9.11.1(jiti@1.21.6))(typescript@5.6.2)
|
||||
'@eslint-react/core': 1.14.2(eslint@9.11.1(jiti@1.21.6))(typescript@5.6.2)
|
||||
'@eslint-react/jsx': 1.14.2(eslint@9.11.1(jiti@1.21.6))(typescript@5.6.2)
|
||||
'@eslint-react/shared': 1.14.2(eslint@9.11.1(jiti@1.21.6))(typescript@5.6.2)
|
||||
'@eslint-react/ast': 1.14.2(eslint@9.11.1(jiti@2.0.0))(typescript@5.6.2)
|
||||
'@eslint-react/core': 1.14.2(eslint@9.11.1(jiti@2.0.0))(typescript@5.6.2)
|
||||
'@eslint-react/jsx': 1.14.2(eslint@9.11.1(jiti@2.0.0))(typescript@5.6.2)
|
||||
'@eslint-react/shared': 1.14.2(eslint@9.11.1(jiti@2.0.0))(typescript@5.6.2)
|
||||
'@eslint-react/tools': 1.14.2
|
||||
'@eslint-react/types': 1.14.2(eslint@9.11.1(jiti@1.21.6))(typescript@5.6.2)
|
||||
'@eslint-react/var': 1.14.2(eslint@9.11.1(jiti@1.21.6))(typescript@5.6.2)
|
||||
'@eslint-react/types': 1.14.2(eslint@9.11.1(jiti@2.0.0))(typescript@5.6.2)
|
||||
'@eslint-react/var': 1.14.2(eslint@9.11.1(jiti@2.0.0))(typescript@5.6.2)
|
||||
'@typescript-eslint/scope-manager': 8.6.0
|
||||
'@typescript-eslint/types': 8.6.0
|
||||
'@typescript-eslint/utils': 8.6.0(eslint@9.11.1(jiti@1.21.6))(typescript@5.6.2)
|
||||
'@typescript-eslint/utils': 8.6.0(eslint@9.11.1(jiti@2.0.0))(typescript@5.6.2)
|
||||
birecord: 0.1.1
|
||||
eslint: 9.11.1(jiti@1.21.6)
|
||||
eslint: 9.11.1(jiti@2.0.0)
|
||||
ts-pattern: 5.3.1
|
||||
optionalDependencies:
|
||||
typescript: 5.6.2
|
||||
transitivePeerDependencies:
|
||||
- supports-color
|
||||
|
||||
eslint-plugin-react-x@1.14.2(eslint@9.11.1(jiti@1.21.6))(typescript@5.6.2):
|
||||
eslint-plugin-react-x@1.14.2(eslint@9.11.1(jiti@2.0.0))(typescript@5.6.2):
|
||||
dependencies:
|
||||
'@eslint-react/ast': 1.14.2(eslint@9.11.1(jiti@1.21.6))(typescript@5.6.2)
|
||||
'@eslint-react/core': 1.14.2(eslint@9.11.1(jiti@1.21.6))(typescript@5.6.2)
|
||||
'@eslint-react/jsx': 1.14.2(eslint@9.11.1(jiti@1.21.6))(typescript@5.6.2)
|
||||
'@eslint-react/shared': 1.14.2(eslint@9.11.1(jiti@1.21.6))(typescript@5.6.2)
|
||||
'@eslint-react/ast': 1.14.2(eslint@9.11.1(jiti@2.0.0))(typescript@5.6.2)
|
||||
'@eslint-react/core': 1.14.2(eslint@9.11.1(jiti@2.0.0))(typescript@5.6.2)
|
||||
'@eslint-react/jsx': 1.14.2(eslint@9.11.1(jiti@2.0.0))(typescript@5.6.2)
|
||||
'@eslint-react/shared': 1.14.2(eslint@9.11.1(jiti@2.0.0))(typescript@5.6.2)
|
||||
'@eslint-react/tools': 1.14.2
|
||||
'@eslint-react/types': 1.14.2(eslint@9.11.1(jiti@1.21.6))(typescript@5.6.2)
|
||||
'@eslint-react/var': 1.14.2(eslint@9.11.1(jiti@1.21.6))(typescript@5.6.2)
|
||||
'@eslint-react/types': 1.14.2(eslint@9.11.1(jiti@2.0.0))(typescript@5.6.2)
|
||||
'@eslint-react/var': 1.14.2(eslint@9.11.1(jiti@2.0.0))(typescript@5.6.2)
|
||||
'@typescript-eslint/scope-manager': 8.6.0
|
||||
'@typescript-eslint/type-utils': 8.6.0(eslint@9.11.1(jiti@1.21.6))(typescript@5.6.2)
|
||||
'@typescript-eslint/type-utils': 8.6.0(eslint@9.11.1(jiti@2.0.0))(typescript@5.6.2)
|
||||
'@typescript-eslint/types': 8.6.0
|
||||
'@typescript-eslint/utils': 8.6.0(eslint@9.11.1(jiti@1.21.6))(typescript@5.6.2)
|
||||
eslint: 9.11.1(jiti@1.21.6)
|
||||
is-immutable-type: 5.0.0(eslint@9.11.1(jiti@1.21.6))(typescript@5.6.2)
|
||||
'@typescript-eslint/utils': 8.6.0(eslint@9.11.1(jiti@2.0.0))(typescript@5.6.2)
|
||||
eslint: 9.11.1(jiti@2.0.0)
|
||||
is-immutable-type: 5.0.0(eslint@9.11.1(jiti@2.0.0))(typescript@5.6.2)
|
||||
ts-pattern: 5.3.1
|
||||
optionalDependencies:
|
||||
typescript: 5.6.2
|
||||
|
@ -9487,9 +9491,9 @@ snapshots:
|
|||
|
||||
eslint-visitor-keys@4.0.0: {}
|
||||
|
||||
eslint@9.11.1(jiti@1.21.6):
|
||||
eslint@9.11.1(jiti@2.0.0):
|
||||
dependencies:
|
||||
'@eslint-community/eslint-utils': 4.4.0(eslint@9.11.1(jiti@1.21.6))
|
||||
'@eslint-community/eslint-utils': 4.4.0(eslint@9.11.1(jiti@2.0.0))
|
||||
'@eslint-community/regexpp': 4.11.1
|
||||
'@eslint/config-array': 0.18.0
|
||||
'@eslint/core': 0.6.0
|
||||
|
@ -9527,7 +9531,7 @@ snapshots:
|
|||
strip-ansi: 6.0.1
|
||||
text-table: 0.2.0
|
||||
optionalDependencies:
|
||||
jiti: 1.21.6
|
||||
jiti: 2.0.0
|
||||
transitivePeerDependencies:
|
||||
- supports-color
|
||||
|
||||
|
@ -9762,7 +9766,7 @@ snapshots:
|
|||
|
||||
fraction.js@4.3.7: {}
|
||||
|
||||
framer-motion@11.5.6(react-dom@18.3.1(react@18.3.1))(react@18.3.1):
|
||||
framer-motion@11.7.0(react-dom@18.3.1(react@18.3.1))(react@18.3.1):
|
||||
dependencies:
|
||||
tslib: 2.7.0
|
||||
optionalDependencies:
|
||||
|
@ -10196,10 +10200,10 @@ snapshots:
|
|||
|
||||
is-hexadecimal@2.0.1: {}
|
||||
|
||||
is-immutable-type@5.0.0(eslint@9.11.1(jiti@1.21.6))(typescript@5.6.2):
|
||||
is-immutable-type@5.0.0(eslint@9.11.1(jiti@2.0.0))(typescript@5.6.2):
|
||||
dependencies:
|
||||
'@typescript-eslint/type-utils': 8.6.0(eslint@9.11.1(jiti@1.21.6))(typescript@5.6.2)
|
||||
eslint: 9.11.1(jiti@1.21.6)
|
||||
'@typescript-eslint/type-utils': 8.6.0(eslint@9.11.1(jiti@2.0.0))(typescript@5.6.2)
|
||||
eslint: 9.11.1(jiti@2.0.0)
|
||||
ts-api-utils: 1.3.0(typescript@5.6.2)
|
||||
ts-declaration-location: 1.0.4(typescript@5.6.2)
|
||||
typescript: 5.6.2
|
||||
|
@ -10417,6 +10421,8 @@ snapshots:
|
|||
|
||||
jiti@1.21.6: {}
|
||||
|
||||
jiti@2.0.0: {}
|
||||
|
||||
js-cookie@2.2.1: {}
|
||||
|
||||
js-sdsl@4.3.0: {}
|
||||
|
@ -10660,7 +10666,7 @@ snapshots:
|
|||
dependencies:
|
||||
yallist: 3.1.1
|
||||
|
||||
lucide-react@0.445.0(react@18.3.1):
|
||||
lucide-react@0.446.0(react@18.3.1):
|
||||
dependencies:
|
||||
react: 18.3.1
|
||||
|
||||
|
@ -11643,7 +11649,7 @@ snapshots:
|
|||
'@protobufjs/path': 1.1.2
|
||||
'@protobufjs/pool': 1.1.0
|
||||
'@protobufjs/utf8': 1.1.0
|
||||
'@types/node': 22.6.1
|
||||
'@types/node': 22.7.2
|
||||
long: 5.2.3
|
||||
|
||||
protons-runtime@5.5.0:
|
||||
|
@ -12557,11 +12563,11 @@ snapshots:
|
|||
|
||||
typedarray@0.0.6: {}
|
||||
|
||||
typescript-eslint@8.7.0(eslint@9.11.1(jiti@1.21.6))(typescript@5.6.2):
|
||||
typescript-eslint@8.7.0(eslint@9.11.1(jiti@2.0.0))(typescript@5.6.2):
|
||||
dependencies:
|
||||
'@typescript-eslint/eslint-plugin': 8.7.0(@typescript-eslint/parser@8.7.0(eslint@9.11.1(jiti@1.21.6))(typescript@5.6.2))(eslint@9.11.1(jiti@1.21.6))(typescript@5.6.2)
|
||||
'@typescript-eslint/parser': 8.7.0(eslint@9.11.1(jiti@1.21.6))(typescript@5.6.2)
|
||||
'@typescript-eslint/utils': 8.7.0(eslint@9.11.1(jiti@1.21.6))(typescript@5.6.2)
|
||||
'@typescript-eslint/eslint-plugin': 8.7.0(@typescript-eslint/parser@8.7.0(eslint@9.11.1(jiti@2.0.0))(typescript@5.6.2))(eslint@9.11.1(jiti@2.0.0))(typescript@5.6.2)
|
||||
'@typescript-eslint/parser': 8.7.0(eslint@9.11.1(jiti@2.0.0))(typescript@5.6.2)
|
||||
'@typescript-eslint/utils': 8.7.0(eslint@9.11.1(jiti@2.0.0))(typescript@5.6.2)
|
||||
optionalDependencies:
|
||||
typescript: 5.6.2
|
||||
transitivePeerDependencies:
|
||||
|
@ -12791,12 +12797,12 @@ snapshots:
|
|||
'@types/unist': 3.0.3
|
||||
vfile-message: 4.0.2
|
||||
|
||||
vite-node@2.1.1(@types/node@22.6.1):
|
||||
vite-node@2.1.1(@types/node@22.7.2):
|
||||
dependencies:
|
||||
cac: 6.7.14
|
||||
debug: 4.3.7
|
||||
pathe: 1.1.2
|
||||
vite: 5.4.5(@types/node@22.6.1)
|
||||
vite: 5.4.5(@types/node@22.7.2)
|
||||
transitivePeerDependencies:
|
||||
- '@types/node'
|
||||
- less
|
||||
|
@ -12808,13 +12814,13 @@ snapshots:
|
|||
- supports-color
|
||||
- terser
|
||||
|
||||
vite@5.4.5(@types/node@22.6.1):
|
||||
vite@5.4.5(@types/node@22.7.2):
|
||||
dependencies:
|
||||
esbuild: 0.21.5
|
||||
postcss: 8.4.47
|
||||
rollup: 4.21.3
|
||||
optionalDependencies:
|
||||
'@types/node': 22.6.1
|
||||
'@types/node': 22.7.2
|
||||
fsevents: 2.3.3
|
||||
|
||||
watchpack@2.4.1:
|
||||
|
@ -12997,7 +13003,7 @@ snapshots:
|
|||
bufferutil: 4.0.8
|
||||
utf-8-validate: 6.0.4
|
||||
|
||||
wxt@0.19.10(@types/node@22.6.1)(bufferutil@4.0.8)(rollup@4.21.3)(utf-8-validate@6.0.4):
|
||||
wxt@0.19.10(@types/node@22.7.2)(bufferutil@4.0.8)(rollup@4.21.3)(utf-8-validate@6.0.4):
|
||||
dependencies:
|
||||
'@aklinker1/rollup-plugin-visualizer': 5.12.0(rollup@4.21.3)
|
||||
'@types/chrome': 0.0.269
|
||||
|
@ -13041,8 +13047,8 @@ snapshots:
|
|||
publish-browser-extension: 2.2.1
|
||||
scule: 1.3.0
|
||||
unimport: 3.12.0(rollup@4.21.3)
|
||||
vite: 5.4.5(@types/node@22.6.1)
|
||||
vite-node: 2.1.1(@types/node@22.6.1)
|
||||
vite: 5.4.5(@types/node@22.7.2)
|
||||
vite-node: 2.1.1(@types/node@22.7.2)
|
||||
web-ext-run: 0.2.1(bufferutil@4.0.8)(utf-8-validate@6.0.4)
|
||||
webextension-polyfill: 0.12.0
|
||||
transitivePeerDependencies:
|
||||
|
|
|
@ -7,9 +7,11 @@ import { useRemeshDomain, useRemeshQuery, useRemeshSend } from 'remesh-react'
|
|||
import RoomDomain from '@/domain/Room'
|
||||
import UserInfoDomain from '@/domain/UserInfo'
|
||||
import Setup from '@/app/content/views/Setup'
|
||||
import MessageListDomain from '@/domain/MessageList'
|
||||
import { useEffect } from 'react'
|
||||
import MessageListDomain, { MessageType } from '@/domain/MessageList'
|
||||
import { useEffect, useState } from 'react'
|
||||
import { Toaster } from 'sonner'
|
||||
import { indexDBStorage } from '@/domain/impls/Storage'
|
||||
import { APP_OPEN_STATUS_STORAGE_KEY } from '@/constants/config'
|
||||
|
||||
export default function App() {
|
||||
const send = useRemeshSend()
|
||||
|
@ -33,16 +35,33 @@ export default function App() {
|
|||
}
|
||||
}, [userInfoSetFinished, messageListLoadFinished])
|
||||
|
||||
const [appOpen, setAppOpen] = useState(false)
|
||||
|
||||
const handleToggleApp = async () => {
|
||||
const value = !appOpen
|
||||
setAppOpen(value)
|
||||
await indexDBStorage.setItem<boolean>(APP_OPEN_STATUS_STORAGE_KEY, value)
|
||||
}
|
||||
|
||||
const getAppOpenStatus = async () => {
|
||||
const value = await indexDBStorage.getItem<boolean>(APP_OPEN_STATUS_STORAGE_KEY)
|
||||
setAppOpen(!!value)
|
||||
}
|
||||
|
||||
useEffect(() => {
|
||||
getAppOpenStatus()
|
||||
}, [])
|
||||
|
||||
return (
|
||||
<>
|
||||
<AppContainer>
|
||||
<AppContainer open={appOpen}>
|
||||
<Header />
|
||||
<Main />
|
||||
<Footer />
|
||||
{notUserInfo && <Setup />}
|
||||
<Toaster richColors offset="70px" visibleToasts={1} duration={5000} position="top-center"></Toaster>
|
||||
</AppContainer>
|
||||
<AppButton></AppButton>
|
||||
<AppButton onClick={handleToggleApp}></AppButton>
|
||||
</>
|
||||
)
|
||||
}
|
||||
|
|
|
@ -10,7 +10,7 @@ export interface EmojiButtonProps {
|
|||
onSelect?: (value: string) => void
|
||||
}
|
||||
|
||||
const emojiGroups = chunk(EMOJI_LIST, 8)
|
||||
const emojiGroups = chunk([...EMOJI_LIST], 8)
|
||||
|
||||
// BUG: https://github.com/radix-ui/primitives/pull/2433
|
||||
// BUG https://github.com/radix-ui/primitives/issues/1666
|
||||
|
|
|
@ -1,4 +1,4 @@
|
|||
import { FC, useRef, type ReactElement } from 'react'
|
||||
import { FC, forwardRef, useRef, useState, type ReactElement } from 'react'
|
||||
|
||||
import { type MessageItemProps } from './MessageItem'
|
||||
import { type PromptItemProps } from './PromptItem'
|
||||
|
@ -9,14 +9,15 @@ export interface MessageListProps {
|
|||
children?: Array<ReactElement<MessageItemProps | PromptItemProps>>
|
||||
}
|
||||
const MessageList: FC<MessageListProps> = ({ children }) => {
|
||||
const scrollParentRef = useRef<HTMLDivElement>(null)
|
||||
const [scrollParentRef, setScrollParentRef] = useState<HTMLDivElement | null>(null)
|
||||
|
||||
return (
|
||||
<ScrollArea ref={scrollParentRef}>
|
||||
<ScrollArea ref={setScrollParentRef}>
|
||||
<Virtuoso
|
||||
followOutput={(isAtBottom: boolean) => (isAtBottom ? 'smooth' : 'auto')}
|
||||
initialTopMostItemIndex={{ index: 'LAST', align: 'end' }}
|
||||
data={children}
|
||||
customScrollParent={scrollParentRef.current!}
|
||||
customScrollParent={scrollParentRef!}
|
||||
itemContent={(_: any, item: ReactElement<MessageItemProps | PromptItemProps>) => item}
|
||||
/>
|
||||
</ScrollArea>
|
||||
|
|
|
@ -35,11 +35,11 @@ export default defineContentScript({
|
|||
|
||||
const root = createRoot(app)
|
||||
root.render(
|
||||
<React.StrictMode>
|
||||
<RemeshRoot store={store}>
|
||||
<App />
|
||||
</RemeshRoot>
|
||||
</React.StrictMode>
|
||||
// <React.StrictMode>
|
||||
<RemeshRoot store={store}>
|
||||
<App />
|
||||
</RemeshRoot>
|
||||
// </React.StrictMode>
|
||||
)
|
||||
return root
|
||||
},
|
||||
|
|
|
@ -1,4 +1,4 @@
|
|||
import { type ReactNode, type FC, useState, type MouseEvent, useRef } from 'react'
|
||||
import { type ReactNode, type FC, useState, type MouseEvent, useRef, useEffect } from 'react'
|
||||
import { SettingsIcon, MoonIcon, SunIcon } from 'lucide-react'
|
||||
import { motion, AnimatePresence } from 'framer-motion'
|
||||
|
||||
|
@ -12,9 +12,10 @@ import { checkSystemDarkMode, cn } from '@/utils'
|
|||
|
||||
export interface AppButtonProps {
|
||||
children?: ReactNode
|
||||
onClick?: (e: MouseEvent<HTMLButtonElement>) => void
|
||||
}
|
||||
|
||||
const AppButton: FC<AppButtonProps> = ({ children }) => {
|
||||
const AppButton: FC<AppButtonProps> = ({ children, onClick }) => {
|
||||
const send = useRemeshSend()
|
||||
const userInfoDomain = useRemeshDomain(UserInfoDomain())
|
||||
const userInfo = useRemeshQuery(userInfoDomain.query.UserInfoQuery())
|
||||
|
@ -22,19 +23,17 @@ const AppButton: FC<AppButtonProps> = ({ children }) => {
|
|||
const isDarkMode =
|
||||
userInfo?.themeMode === 'dark' ? true : userInfo?.themeMode === 'light' ? false : checkSystemDarkMode()
|
||||
|
||||
const [open, setOpen] = useState(false)
|
||||
const [menuOpen, setMenuOpen] = useState(false)
|
||||
|
||||
const menuRef = useRef<HTMLDivElement>(null)
|
||||
|
||||
useClickAway(menuRef, () => {
|
||||
setOpen(false)
|
||||
setMenuOpen(false)
|
||||
}, ['click'])
|
||||
|
||||
const handleToggleApp = () => {}
|
||||
|
||||
const handleToggleMenu = (e: MouseEvent<HTMLButtonElement>) => {
|
||||
e.preventDefault()
|
||||
setOpen(!open)
|
||||
setMenuOpen(!menuOpen)
|
||||
}
|
||||
|
||||
const handleSwitchTheme = () => {
|
||||
|
@ -52,7 +51,7 @@ const AppButton: FC<AppButtonProps> = ({ children }) => {
|
|||
return (
|
||||
<div ref={menuRef} className="fixed bottom-5 right-5 z-infinity grid select-none justify-center gap-y-3">
|
||||
<AnimatePresence>
|
||||
{open && (
|
||||
{menuOpen && (
|
||||
<motion.div
|
||||
className="grid gap-y-3"
|
||||
initial="hidden"
|
||||
|
@ -121,7 +120,7 @@ const AppButton: FC<AppButtonProps> = ({ children }) => {
|
|||
)}
|
||||
</AnimatePresence>
|
||||
<Button
|
||||
onClick={handleToggleApp}
|
||||
onClick={onClick}
|
||||
onContextMenu={handleToggleMenu}
|
||||
className="relative z-10 size-10 rounded-full p-0 text-xs shadow"
|
||||
>
|
||||
|
|
|
@ -1,11 +1,13 @@
|
|||
import { type ReactNode, type FC } from 'react'
|
||||
import useResizable from '@/hooks/useResizable'
|
||||
import { motion, AnimatePresence } from 'framer-motion'
|
||||
|
||||
export interface AppContainerProps {
|
||||
children?: ReactNode
|
||||
open?: boolean
|
||||
}
|
||||
|
||||
const AppContainer: FC<AppContainerProps> = ({ children }) => {
|
||||
const AppContainer: FC<AppContainerProps> = ({ children, open }) => {
|
||||
const { size, ref } = useResizable({
|
||||
initSize: Math.max(375, window.innerWidth / 6),
|
||||
maxSize: Math.max(750, window.innerWidth / 3),
|
||||
|
@ -14,18 +16,26 @@ const AppContainer: FC<AppContainerProps> = ({ children }) => {
|
|||
})
|
||||
|
||||
return (
|
||||
<div
|
||||
style={{
|
||||
width: `${size}px`
|
||||
}}
|
||||
className="fixed bottom-10 right-10 z-infinity box-border grid h-full max-h-[1200px] grid-flow-col grid-rows-[auto_1fr_auto] rounded-xl bg-slate-50 font-sans shadow-2xl"
|
||||
>
|
||||
{children}
|
||||
<div
|
||||
ref={ref}
|
||||
className="absolute inset-y-3 -left-0.5 z-20 w-1 cursor-ew-resize rounded-xl bg-slate-100 opacity-0 shadow transition-opacity duration-200 ease-in hover:opacity-100"
|
||||
></div>
|
||||
</div>
|
||||
<AnimatePresence>
|
||||
{open && (
|
||||
<motion.div
|
||||
initial={{ opacity: 0, y: 10 }}
|
||||
animate={{ opacity: 1, y: 0 }}
|
||||
exit={{ opacity: 0, y: 10 }}
|
||||
transition={{ duration: 0.3 }}
|
||||
style={{
|
||||
width: `${size}px`
|
||||
}}
|
||||
className="fixed bottom-10 right-10 z-infinity box-border grid h-full max-h-[1200px] grid-flow-col grid-rows-[auto_1fr_auto] rounded-xl bg-slate-50 font-sans shadow-2xl"
|
||||
>
|
||||
{children}
|
||||
<div
|
||||
ref={ref}
|
||||
className="absolute inset-y-3 -left-0.5 z-20 w-1 cursor-ew-resize rounded-xl bg-slate-100 opacity-0 shadow transition-opacity duration-200 ease-in hover:opacity-100"
|
||||
></div>
|
||||
</motion.div>
|
||||
)}
|
||||
</AnimatePresence>
|
||||
)
|
||||
}
|
||||
|
||||
|
|
|
@ -12,6 +12,7 @@ import ExampleImage from '@/assets/images/example.jpg'
|
|||
import PulsatingButton from '@/components/magicui/pulsating-button'
|
||||
import BlurFade from '@/components/magicui/blur-fade'
|
||||
import WordPullUp from '@/components/magicui/word-pull-up'
|
||||
import { motion } from 'framer-motion'
|
||||
|
||||
const mockTextList = [
|
||||
`你問我支持不支持,我說我支持`,
|
||||
|
@ -32,6 +33,8 @@ const mockTextList = [
|
|||
`![ExampleImage](${ExampleImage})`
|
||||
]
|
||||
|
||||
let printTextList = [...mockTextList]
|
||||
|
||||
const generateUserInfo = async (): Promise<UserInfo> => {
|
||||
return {
|
||||
id: nanoid(),
|
||||
|
@ -46,7 +49,7 @@ const generateMessage = async (userInfo: UserInfo): Promise<Message> => {
|
|||
const { name: username, avatar: userAvatar, id: userId } = userInfo
|
||||
return {
|
||||
id: nanoid(),
|
||||
body: mockTextList.shift()!,
|
||||
body: printTextList.shift()!,
|
||||
date: Date.now(),
|
||||
type: MessageType.Normal,
|
||||
userId,
|
||||
|
@ -79,17 +82,18 @@ const Setup: FC = () => {
|
|||
}
|
||||
|
||||
useEffect(() => {
|
||||
printTextList.length === 0 && (printTextList = [...mockTextList])
|
||||
const timer = new Timer(
|
||||
async () => {
|
||||
await createMessage(await refreshUserInfo())
|
||||
},
|
||||
{ delay: 2000, immediate: true, limit: mockTextList.length }
|
||||
{ delay: 2000, immediate: true, limit: printTextList.length }
|
||||
)
|
||||
|
||||
timer.start()
|
||||
return () => {
|
||||
timer.stop()
|
||||
send(messageListDomain.command.ClearListCommand())
|
||||
printTextList.length === 0 && send(messageListDomain.command.ClearListCommand())
|
||||
}
|
||||
}, [])
|
||||
|
||||
|
@ -104,13 +108,16 @@ const Setup: FC = () => {
|
|||
</AvatarFallback>
|
||||
</Avatar>
|
||||
</BlurFade>
|
||||
<div className="flex">
|
||||
<div className="text-2xl font-bold text-primary">@</div>
|
||||
<WordPullUp
|
||||
<div className="flex" key={userInfo?.name}>
|
||||
<motion.div
|
||||
className="text-2xl font-bold text-primary"
|
||||
key={userInfo?.name}
|
||||
words={`${userInfo?.name || ''}`}
|
||||
/>
|
||||
initial={{ x: -10, opacity: 0 }} // 初始向左位移 10 像素
|
||||
animate={{ x: 0, opacity: 1 }} // 动画结束时回到原位
|
||||
transition={{ duration: 0.5 }} // 过渡效果持续时间
|
||||
>
|
||||
@
|
||||
</motion.div>
|
||||
<WordPullUp className="text-2xl font-bold text-primary" words={`${userInfo?.name || ''.padEnd(10, ' ')}`} />
|
||||
</div>
|
||||
<PulsatingButton onClick={handleSetup}>Start chatting</PulsatingButton>
|
||||
</div>
|
||||
|
|
|
@ -1,7 +1,5 @@
|
|||
// https://www.webfx.com/tools/emoji-cheat-sheet/
|
||||
|
||||
import { Message } from '@/domain/MessageList'
|
||||
|
||||
export const EMOJI_LIST = [
|
||||
'😀',
|
||||
'😃',
|
||||
|
@ -165,7 +163,7 @@ export const EMOJI_LIST = [
|
|||
'🙏',
|
||||
'✍',
|
||||
'💅'
|
||||
]
|
||||
] as const
|
||||
|
||||
// https://night-tailwindcss.vercel.app/docs/breakpoints
|
||||
export const BREAKPOINTS = {
|
||||
|
@ -189,6 +187,11 @@ export const MESSAGE_MAX_LENGTH = 500 as const
|
|||
|
||||
export const STORAGE_NAME = 'WEB_CHAT' as const
|
||||
|
||||
export const MESSAGE_LIST_STORAGE_KEY = 'WEB_CHAT_MESSAGE_LIST' as const
|
||||
|
||||
export const USER_INFO_STORAGE_KEY = 'WEB_CHAT_USER_INFO' as const
|
||||
|
||||
export const APP_OPEN_STATUS_STORAGE_KEY = 'WEB_CHAT_APP_OPEN_STATUS' as const
|
||||
/**
|
||||
* In chrome storage.sync, each key-value pair supports a maximum storage of 8kb
|
||||
* Image is encoded as base64, and the size is increased by about 33%.
|
||||
|
|
|
@ -3,6 +3,7 @@ import { ListModule } from 'remesh/modules/list'
|
|||
import { IndexDBStorageExtern } from '@/domain/externs/Storage'
|
||||
import StorageEffect from '@/domain/modules/StorageEffect'
|
||||
import StatusModule from './modules/Status'
|
||||
import { MESSAGE_LIST_STORAGE_KEY } from '@/constants/config'
|
||||
|
||||
export enum MessageType {
|
||||
Normal = 'normal',
|
||||
|
@ -33,15 +34,13 @@ export interface PromptMessage extends MessageUser {
|
|||
|
||||
export type Message = NormalMessage | PromptMessage
|
||||
|
||||
export const STORAGE_KEY = `MESSAGE_LIST`
|
||||
|
||||
const MessageListDomain = Remesh.domain({
|
||||
name: 'MessageListDomain',
|
||||
impl: (domain) => {
|
||||
const storageEffect = new StorageEffect({
|
||||
domain,
|
||||
extern: IndexDBStorageExtern,
|
||||
key: STORAGE_KEY
|
||||
key: MESSAGE_LIST_STORAGE_KEY
|
||||
})
|
||||
|
||||
const MessageListModule = ListModule<Message>(domain, {
|
||||
|
@ -145,11 +144,9 @@ const MessageListDomain = Remesh.domain({
|
|||
|
||||
storageEffect
|
||||
.set(SyncToStorageEvent)
|
||||
.get<Message[]>((value) => [
|
||||
SyncToStateCommand(value ?? []),
|
||||
MessageListLoadStatusModule.command.SetFinishedCommand()
|
||||
])
|
||||
.watch<Message[]>((value) => SyncToStateCommand(value ?? []))
|
||||
.get<
|
||||
Message[]
|
||||
>((value) => [SyncToStateCommand(value ?? []), MessageListLoadStatusModule.command.SetFinishedCommand()])
|
||||
|
||||
return {
|
||||
query: {
|
||||
|
|
|
@ -2,6 +2,7 @@ import { Remesh } from 'remesh'
|
|||
import { BrowserSyncStorageExtern } from '@/domain/externs/Storage'
|
||||
import StorageEffect from '@/domain/modules/StorageEffect'
|
||||
import StatusModule from './modules/Status'
|
||||
import { USER_INFO_STORAGE_KEY } from '@/constants/config'
|
||||
|
||||
export interface UserInfo {
|
||||
id: string
|
||||
|
@ -11,15 +12,13 @@ export interface UserInfo {
|
|||
themeMode: 'system' | 'light' | 'dark'
|
||||
}
|
||||
|
||||
export const STORAGE_KEY = 'USER_INFO'
|
||||
|
||||
const UserInfoDomain = Remesh.domain({
|
||||
name: 'UserInfoDomain',
|
||||
impl: (domain) => {
|
||||
const storageEffect = new StorageEffect({
|
||||
domain,
|
||||
extern: BrowserSyncStorageExtern,
|
||||
key: STORAGE_KEY
|
||||
key: USER_INFO_STORAGE_KEY
|
||||
})
|
||||
|
||||
const UserInfoState = domain.state<UserInfo | null>({
|
||||
|
|
|
@ -48,8 +48,7 @@ class PeerRoom extends EventHub {
|
|||
if (!this.room) {
|
||||
this.once('action', () => {
|
||||
if (!this.room) {
|
||||
const error = new Error('Room not joined')
|
||||
this.emit('error', error)
|
||||
this.emit('error', new Error('Room not joined'))
|
||||
} else {
|
||||
const [send] = this.room.makeAction('MESSAGE')
|
||||
send(message as DataPayload, id)
|
||||
|
@ -67,8 +66,7 @@ class PeerRoom extends EventHub {
|
|||
if (!this.room) {
|
||||
this.once('action', () => {
|
||||
if (!this.room) {
|
||||
const error = new Error('Room not joined')
|
||||
this.emit('error', error)
|
||||
this.emit('error', new Error('Room not joined'))
|
||||
} else {
|
||||
const [, on] = this.room.makeAction('MESSAGE')
|
||||
on((message) => callback(message as T))
|
||||
|
@ -85,9 +83,7 @@ class PeerRoom extends EventHub {
|
|||
if (!this.room) {
|
||||
this.once('action', () => {
|
||||
if (!this.room) {
|
||||
const error = new Error('Room not joined')
|
||||
this.emit('error', error)
|
||||
throw error
|
||||
this.emit('error', new Error('Room not joined'))
|
||||
} else {
|
||||
this.room.onPeerJoin((peerId) => {
|
||||
callback(peerId)
|
||||
|
@ -106,8 +102,7 @@ class PeerRoom extends EventHub {
|
|||
if (!this.room) {
|
||||
this.once('action', () => {
|
||||
if (!this.room) {
|
||||
const error = new Error('Room not joined')
|
||||
this.emit('error', error)
|
||||
this.emit('error', new Error('Room not joined'))
|
||||
} else {
|
||||
this.room.onPeerLeave((peerId) => callback(peerId))
|
||||
}
|
||||
|
@ -122,8 +117,7 @@ class PeerRoom extends EventHub {
|
|||
if (!this.room) {
|
||||
this.once('action', () => {
|
||||
if (!this.room) {
|
||||
const error = new Error('Room not joined')
|
||||
this.emit('error', error)
|
||||
this.emit('error', new Error('Room not joined'))
|
||||
} else {
|
||||
this.room.leave()
|
||||
this.room = undefined
|
||||
|
|
|
@ -47,8 +47,7 @@ class PeerRoom extends EventHub {
|
|||
if (!this.room) {
|
||||
this.once('action', () => {
|
||||
if (!this.room) {
|
||||
const error = new Error('Room not joined')
|
||||
this.emit('error', error)
|
||||
this.emit('error', new Error('Room not joined'))
|
||||
} else {
|
||||
this.room.send(JSON.stringify(message), id)
|
||||
}
|
||||
|
@ -63,8 +62,7 @@ class PeerRoom extends EventHub {
|
|||
if (!this.room) {
|
||||
this.once('action', () => {
|
||||
if (!this.room) {
|
||||
const error = new Error('Room not joined')
|
||||
this.emit('error', error)
|
||||
this.emit('error', new Error('Room not joined'))
|
||||
} else {
|
||||
this.room.on('message', (message) => callback(JSON.parse(message) as T))
|
||||
}
|
||||
|
@ -79,8 +77,7 @@ class PeerRoom extends EventHub {
|
|||
if (!this.room) {
|
||||
this.once('action', () => {
|
||||
if (!this.room) {
|
||||
const error = new Error('Room not joined')
|
||||
this.emit('error', error)
|
||||
this.emit('error', new Error('Room not joined'))
|
||||
} else {
|
||||
this.room.on('join', (id) => callback(id))
|
||||
}
|
||||
|
@ -95,8 +92,7 @@ class PeerRoom extends EventHub {
|
|||
if (!this.room) {
|
||||
this.once('action', () => {
|
||||
if (!this.room) {
|
||||
const error = new Error('Room not joined')
|
||||
this.emit('error', error)
|
||||
this.emit('error', new Error('Room not joined'))
|
||||
} else {
|
||||
this.room.on('leave', (id) => callback(id))
|
||||
}
|
||||
|
@ -111,8 +107,7 @@ class PeerRoom extends EventHub {
|
|||
if (!this.room) {
|
||||
this.once('action', () => {
|
||||
if (!this.room) {
|
||||
const error = new Error('Room not joined')
|
||||
this.emit('error', error)
|
||||
this.emit('error', new Error('Room not joined'))
|
||||
} else {
|
||||
this.room.leave()
|
||||
this.room = undefined
|
||||
|
|
|
@ -4,11 +4,11 @@ import { IndexDBStorageExtern, BrowserSyncStorageExtern } from '@/domain/externs
|
|||
import { STORAGE_NAME } from '@/constants/config'
|
||||
import { webExtensionDriver } from '@/utils/webExtensionDriver'
|
||||
|
||||
const indexDBStorage = createStorage({
|
||||
export const indexDBStorage = createStorage({
|
||||
driver: indexedDbDriver({ base: `${STORAGE_NAME}:` })
|
||||
})
|
||||
|
||||
const browserSyncStorage = createStorage({
|
||||
export const browserSyncStorage = createStorage({
|
||||
driver: webExtensionDriver({ storageArea: 'sync' })
|
||||
})
|
||||
|
||||
|
|
|
@ -1,5 +1,5 @@
|
|||
import { type RemeshEvent, type RemeshAction, type RemeshDomainContext, type RemeshExtern } from 'remesh'
|
||||
import { from, fromEventPattern, map, merge, switchMap, tap } from 'rxjs'
|
||||
import { defer, from, fromEventPattern, map, Observable, switchMap } from 'rxjs'
|
||||
import { type Promisable } from 'type-fest'
|
||||
|
||||
export type StorageValue = null | string | number | boolean | object
|
||||
|
@ -60,11 +60,20 @@ export default class StorageEffect {
|
|||
this.domain.effect({
|
||||
name: 'WatchStorageToStateEffect',
|
||||
impl: () => {
|
||||
return fromEventPattern(this.storage.watch, this.storage.unwatch).pipe(
|
||||
switchMap(() => {
|
||||
return from(this.storage.get<T>(this.key)).pipe(map((value) => callback(value)))
|
||||
})
|
||||
)
|
||||
return defer(() => {
|
||||
let unwatch: Unwatch
|
||||
return new Observable<void>((observer) => {
|
||||
this.storage
|
||||
.watch(() => observer.next())
|
||||
.then((_unwatch) => {
|
||||
unwatch = _unwatch
|
||||
})
|
||||
return () => unwatch?.()
|
||||
}).pipe(
|
||||
switchMap(() => from(this.storage.get<T | null>(this.key))),
|
||||
map(callback)
|
||||
)
|
||||
})
|
||||
}
|
||||
})
|
||||
return this
|
||||
|
|
Loading…
Reference in a new issue