From bd84e908ce7d13159dbb654f870a2b3604c0bf1b Mon Sep 17 00:00:00 2001 From: devGiyosiddin Date: Thu, 26 Sep 2024 22:02:20 +0500 Subject: [PATCH 01/29] git init --- .gitignore | 1 + index.html | 2 +- package-lock.json | 5187 +++++++++++++++++ package.json | 6 +- public/bg.jpg | Bin 201094 -> 91114 bytes src/App.jsx | 41 +- src/components/chat/Chat.jsx | 170 + src/components/chat/chat.css | 175 + src/components/detail/Detail.jsx | 87 + src/components/detail/detail.css | 100 + src/components/lib/chatStore.js | 46 + src/components/lib/firebase.js | 18 + src/components/lib/upload.js | 23 + src/components/lib/userStore.js | 27 + src/components/list/List.jsx | 12 + src/components/list/chatList/ChatList.jsx | 106 + .../list/chatList/addUser/AddUser.jsx | 81 + .../list/chatList/addUser/addUser.css | 63 + src/components/list/chatList/chatList.css | 74 + src/components/list/list.css | 5 + src/components/list/userInfo/UserInfo.jsx | 22 + src/components/list/userInfo/userInfo.css | 29 + src/components/login/Login.jsx | 112 + src/components/login/login.css | 71 + src/components/notification/Notification.jsx | 12 + src/index.css | 29 + 26 files changed, 6496 insertions(+), 3 deletions(-) create mode 100644 package-lock.json create mode 100644 src/components/chat/Chat.jsx create mode 100644 src/components/chat/chat.css create mode 100644 src/components/detail/Detail.jsx create mode 100644 src/components/detail/detail.css create mode 100644 src/components/lib/chatStore.js create mode 100644 src/components/lib/firebase.js create mode 100644 src/components/lib/upload.js create mode 100644 src/components/lib/userStore.js create mode 100644 src/components/list/List.jsx create mode 100644 src/components/list/chatList/ChatList.jsx create mode 100644 src/components/list/chatList/addUser/AddUser.jsx create mode 100644 src/components/list/chatList/addUser/addUser.css create mode 100644 src/components/list/chatList/chatList.css create mode 100644 src/components/list/list.css create mode 100644 src/components/list/userInfo/UserInfo.jsx create mode 100644 src/components/list/userInfo/userInfo.css create mode 100644 src/components/login/Login.jsx create mode 100644 src/components/login/login.css create mode 100644 src/components/notification/Notification.jsx diff --git a/.gitignore b/.gitignore index a547bf36..438657a9 100644 --- a/.gitignore +++ b/.gitignore @@ -11,6 +11,7 @@ node_modules dist dist-ssr *.local +.env # Editor directories and files .vscode/* diff --git a/index.html b/index.html index e856c399..8ec18ef8 100644 --- a/index.html +++ b/index.html @@ -4,7 +4,7 @@ - Lama Dev Chat App + CyreX Dev Chat App
diff --git a/package-lock.json b/package-lock.json new file mode 100644 index 00000000..d72cf144 --- /dev/null +++ b/package-lock.json @@ -0,0 +1,5187 @@ +{ + "name": "chat-starter", + "version": "0.0.0", + "lockfileVersion": 3, + "requires": true, + "packages": { + "": { + "name": "chat-starter", + "version": "0.0.0", + "dependencies": { + "emoji-picker-react": "^4.12.0", + "firebase": "^10.13.2", + "react": "^18.2.0", + "react-dom": "^18.2.0", + "react-toastify": "^10.0.5", + "zustand": "^5.0.0-rc.2" + }, + "devDependencies": { + "@types/react": "^18.2.66", + "@types/react-dom": "^18.2.22", + "@vitejs/plugin-react": "^4.2.1", + "eslint": "^8.57.0", + "eslint-plugin-react": "^7.34.1", + "eslint-plugin-react-hooks": "^4.6.0", + "eslint-plugin-react-refresh": "^0.4.6", + "vite": "^5.2.0" + } + }, + "node_modules/@ampproject/remapping": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/@ampproject/remapping/-/remapping-2.3.0.tgz", + "integrity": "sha512-30iZtAPgz+LTIYoeivqYo853f02jBYSd5uGnGpkFV0M3xOt9aN73erkgYAmZU43x4VfqcnLxW9Kpg3R5LC4YYw==", + "dev": true, + "dependencies": { + "@jridgewell/gen-mapping": "^0.3.5", + "@jridgewell/trace-mapping": "^0.3.24" + }, + "engines": { + "node": ">=6.0.0" + } + }, + "node_modules/@babel/code-frame": { + "version": "7.24.7", + "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.24.7.tgz", + "integrity": "sha512-BcYH1CVJBO9tvyIZ2jVeXgSIMvGZ2FDRvDdOIVQyuklNKSsx+eppDEBq/g47Ayw+RqNFE+URvOShmf+f/qwAlA==", + "dev": true, + "dependencies": { + "@babel/highlight": "^7.24.7", + "picocolors": "^1.0.0" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/compat-data": { + "version": "7.25.4", + "resolved": "https://registry.npmjs.org/@babel/compat-data/-/compat-data-7.25.4.tgz", + "integrity": "sha512-+LGRog6RAsCJrrrg/IO6LGmpphNe5DiK30dGjCoxxeGv49B10/3XYGxPsAwrDlMFcFEvdAUavDT8r9k/hSyQqQ==", + "dev": true, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/core": { + "version": "7.25.2", + "resolved": "https://registry.npmjs.org/@babel/core/-/core-7.25.2.tgz", + "integrity": "sha512-BBt3opiCOxUr9euZ5/ro/Xv8/V7yJ5bjYMqG/C1YAo8MIKAnumZalCN+msbci3Pigy4lIQfPUpfMM27HMGaYEA==", + "dev": true, + "dependencies": { + "@ampproject/remapping": "^2.2.0", + "@babel/code-frame": "^7.24.7", + "@babel/generator": "^7.25.0", + "@babel/helper-compilation-targets": "^7.25.2", + "@babel/helper-module-transforms": "^7.25.2", + "@babel/helpers": "^7.25.0", + "@babel/parser": "^7.25.0", + "@babel/template": "^7.25.0", + "@babel/traverse": "^7.25.2", + "@babel/types": "^7.25.2", + "convert-source-map": "^2.0.0", + "debug": "^4.1.0", + "gensync": "^1.0.0-beta.2", + "json5": "^2.2.3", + "semver": "^6.3.1" + }, + "engines": { + "node": ">=6.9.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/babel" + } + }, + "node_modules/@babel/generator": { + "version": "7.25.6", + "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.25.6.tgz", + "integrity": "sha512-VPC82gr1seXOpkjAAKoLhP50vx4vGNlF4msF64dSFq1P8RfB+QAuJWGHPXXPc8QyfVWwwB/TNNU4+ayZmHNbZw==", + "dev": true, + "dependencies": { + "@babel/types": "^7.25.6", + "@jridgewell/gen-mapping": "^0.3.5", + "@jridgewell/trace-mapping": "^0.3.25", + "jsesc": "^2.5.1" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-compilation-targets": { + "version": "7.25.2", + "resolved": "https://registry.npmjs.org/@babel/helper-compilation-targets/-/helper-compilation-targets-7.25.2.tgz", + "integrity": "sha512-U2U5LsSaZ7TAt3cfaymQ8WHh0pxvdHoEk6HVpaexxixjyEquMh0L0YNJNM6CTGKMXV1iksi0iZkGw4AcFkPaaw==", + "dev": true, + "dependencies": { + "@babel/compat-data": "^7.25.2", + "@babel/helper-validator-option": "^7.24.8", + "browserslist": "^4.23.1", + "lru-cache": "^5.1.1", + "semver": "^6.3.1" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-module-imports": { + "version": "7.24.7", + "resolved": "https://registry.npmjs.org/@babel/helper-module-imports/-/helper-module-imports-7.24.7.tgz", + "integrity": "sha512-8AyH3C+74cgCVVXow/myrynrAGv+nTVg5vKu2nZph9x7RcRwzmh0VFallJuFTZ9mx6u4eSdXZfcOzSqTUm0HCA==", + "dev": true, + "dependencies": { + "@babel/traverse": "^7.24.7", + "@babel/types": "^7.24.7" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-module-transforms": { + "version": "7.25.2", + "resolved": "https://registry.npmjs.org/@babel/helper-module-transforms/-/helper-module-transforms-7.25.2.tgz", + "integrity": "sha512-BjyRAbix6j/wv83ftcVJmBt72QtHI56C7JXZoG2xATiLpmoC7dpd8WnkikExHDVPpi/3qCmO6WY1EaXOluiecQ==", + "dev": true, + "dependencies": { + "@babel/helper-module-imports": "^7.24.7", + "@babel/helper-simple-access": "^7.24.7", + "@babel/helper-validator-identifier": "^7.24.7", + "@babel/traverse": "^7.25.2" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0" + } + }, + "node_modules/@babel/helper-plugin-utils": { + "version": "7.24.8", + "resolved": "https://registry.npmjs.org/@babel/helper-plugin-utils/-/helper-plugin-utils-7.24.8.tgz", + "integrity": "sha512-FFWx5142D8h2Mgr/iPVGH5G7w6jDn4jUSpZTyDnQO0Yn7Ks2Kuz6Pci8H6MPCoUJegd/UZQ3tAvfLCxQSnWWwg==", + "dev": true, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-simple-access": { + "version": "7.24.7", + "resolved": "https://registry.npmjs.org/@babel/helper-simple-access/-/helper-simple-access-7.24.7.tgz", + "integrity": "sha512-zBAIvbCMh5Ts+b86r/CjU+4XGYIs+R1j951gxI3KmmxBMhCg4oQMsv6ZXQ64XOm/cvzfU1FmoCyt6+owc5QMYg==", + "dev": true, + "dependencies": { + "@babel/traverse": "^7.24.7", + "@babel/types": "^7.24.7" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-string-parser": { + "version": "7.24.8", + "resolved": "https://registry.npmjs.org/@babel/helper-string-parser/-/helper-string-parser-7.24.8.tgz", + "integrity": "sha512-pO9KhhRcuUyGnJWwyEgnRJTSIZHiT+vMD0kPeD+so0l7mxkMT19g3pjY9GTnHySck/hDzq+dtW/4VgnMkippsQ==", + "dev": true, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-validator-identifier": { + "version": "7.24.7", + "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.24.7.tgz", + "integrity": "sha512-rR+PBcQ1SMQDDyF6X0wxtG8QyLCgUB0eRAGguqRLfkCA87l7yAP7ehq8SNj96OOGTO8OBV70KhuFYcIkHXOg0w==", + "dev": true, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-validator-option": { + "version": "7.24.8", + "resolved": "https://registry.npmjs.org/@babel/helper-validator-option/-/helper-validator-option-7.24.8.tgz", + "integrity": "sha512-xb8t9tD1MHLungh/AIoWYN+gVHaB9kwlu8gffXGSt3FFEIT7RjS+xWbc2vUD1UTZdIpKj/ab3rdqJ7ufngyi2Q==", + "dev": true, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helpers": { + "version": "7.25.6", + "resolved": "https://registry.npmjs.org/@babel/helpers/-/helpers-7.25.6.tgz", + "integrity": "sha512-Xg0tn4HcfTijTwfDwYlvVCl43V6h4KyVVX2aEm4qdO/PC6L2YvzLHFdmxhoeSA3eslcE6+ZVXHgWwopXYLNq4Q==", + "dev": true, + "dependencies": { + "@babel/template": "^7.25.0", + "@babel/types": "^7.25.6" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/highlight": { + "version": "7.24.7", + "resolved": "https://registry.npmjs.org/@babel/highlight/-/highlight-7.24.7.tgz", + "integrity": "sha512-EStJpq4OuY8xYfhGVXngigBJRWxftKX9ksiGDnmlY3o7B/V7KIAc9X4oiK87uPJSc/vs5L869bem5fhZa8caZw==", + "dev": true, + "dependencies": { + "@babel/helper-validator-identifier": "^7.24.7", + "chalk": "^2.4.2", + "js-tokens": "^4.0.0", + "picocolors": "^1.0.0" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/parser": { + "version": "7.25.6", + "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.25.6.tgz", + "integrity": "sha512-trGdfBdbD0l1ZPmcJ83eNxB9rbEax4ALFTF7fN386TMYbeCQbyme5cOEXQhbGXKebwGaB/J52w1mrklMcbgy6Q==", + "dev": true, + "dependencies": { + "@babel/types": "^7.25.6" + }, + "bin": { + "parser": "bin/babel-parser.js" + }, + "engines": { + "node": ">=6.0.0" + } + }, + "node_modules/@babel/plugin-transform-react-jsx-self": { + "version": "7.24.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-react-jsx-self/-/plugin-transform-react-jsx-self-7.24.7.tgz", + "integrity": "sha512-fOPQYbGSgH0HUp4UJO4sMBFjY6DuWq+2i8rixyUMb3CdGixs/gccURvYOAhajBdKDoGajFr3mUq5rH3phtkGzw==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.24.7" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-react-jsx-source": { + "version": "7.24.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-react-jsx-source/-/plugin-transform-react-jsx-source-7.24.7.tgz", + "integrity": "sha512-J2z+MWzZHVOemyLweMqngXrgGC42jQ//R0KdxqkIz/OrbVIIlhFI3WigZ5fO+nwFvBlncr4MGapd8vTyc7RPNQ==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.24.7" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/template": { + "version": "7.25.0", + "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.25.0.tgz", + "integrity": "sha512-aOOgh1/5XzKvg1jvVz7AVrx2piJ2XBi227DHmbY6y+bM9H2FlN+IfecYu4Xl0cNiiVejlsCri89LUsbj8vJD9Q==", + "dev": true, + "dependencies": { + "@babel/code-frame": "^7.24.7", + "@babel/parser": "^7.25.0", + "@babel/types": "^7.25.0" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/traverse": { + "version": "7.25.6", + "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.25.6.tgz", + "integrity": "sha512-9Vrcx5ZW6UwK5tvqsj0nGpp/XzqthkT0dqIc9g1AdtygFToNtTF67XzYS//dm+SAK9cp3B9R4ZO/46p63SCjlQ==", + "dev": true, + "dependencies": { + "@babel/code-frame": "^7.24.7", + "@babel/generator": "^7.25.6", + "@babel/parser": "^7.25.6", + "@babel/template": "^7.25.0", + "@babel/types": "^7.25.6", + "debug": "^4.3.1", + "globals": "^11.1.0" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/types": { + "version": "7.25.6", + "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.25.6.tgz", + "integrity": "sha512-/l42B1qxpG6RdfYf343Uw1vmDjeNhneUXtzhojE7pDgfpEypmRhI6j1kr17XCVv4Cgl9HdAiQY2x0GwKm7rWCw==", + "dev": true, + "dependencies": { + "@babel/helper-string-parser": "^7.24.8", + "@babel/helper-validator-identifier": "^7.24.7", + "to-fast-properties": "^2.0.0" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@esbuild/aix-ppc64": { + "version": "0.21.5", + "resolved": "https://registry.npmjs.org/@esbuild/aix-ppc64/-/aix-ppc64-0.21.5.tgz", + "integrity": "sha512-1SDgH6ZSPTlggy1yI6+Dbkiz8xzpHJEVAlF/AM1tHPLsf5STom9rwtjE4hKAF20FfXXNTFqEYXyJNWh1GiZedQ==", + "cpu": [ + "ppc64" + ], + "dev": true, + "optional": true, + "os": [ + "aix" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/android-arm": { + "version": "0.21.5", + "resolved": "https://registry.npmjs.org/@esbuild/android-arm/-/android-arm-0.21.5.tgz", + "integrity": "sha512-vCPvzSjpPHEi1siZdlvAlsPxXl7WbOVUBBAowWug4rJHb68Ox8KualB+1ocNvT5fjv6wpkX6o/iEpbDrf68zcg==", + "cpu": [ + "arm" + ], + "dev": true, + "optional": true, + "os": [ + "android" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/android-arm64": { + "version": "0.21.5", + "resolved": "https://registry.npmjs.org/@esbuild/android-arm64/-/android-arm64-0.21.5.tgz", + "integrity": "sha512-c0uX9VAUBQ7dTDCjq+wdyGLowMdtR/GoC2U5IYk/7D1H1JYC0qseD7+11iMP2mRLN9RcCMRcjC4YMclCzGwS/A==", + "cpu": [ + "arm64" + ], + "dev": true, + "optional": true, + "os": [ + "android" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/android-x64": { + "version": "0.21.5", + "resolved": "https://registry.npmjs.org/@esbuild/android-x64/-/android-x64-0.21.5.tgz", + "integrity": "sha512-D7aPRUUNHRBwHxzxRvp856rjUHRFW1SdQATKXH2hqA0kAZb1hKmi02OpYRacl0TxIGz/ZmXWlbZgjwWYaCakTA==", + "cpu": [ + "x64" + ], + "dev": true, + "optional": true, + "os": [ + "android" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/darwin-arm64": { + "version": "0.21.5", + "resolved": "https://registry.npmjs.org/@esbuild/darwin-arm64/-/darwin-arm64-0.21.5.tgz", + "integrity": "sha512-DwqXqZyuk5AiWWf3UfLiRDJ5EDd49zg6O9wclZ7kUMv2WRFr4HKjXp/5t8JZ11QbQfUS6/cRCKGwYhtNAY88kQ==", + "cpu": [ + "arm64" + ], + "dev": true, + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/darwin-x64": { + "version": "0.21.5", + "resolved": "https://registry.npmjs.org/@esbuild/darwin-x64/-/darwin-x64-0.21.5.tgz", + "integrity": "sha512-se/JjF8NlmKVG4kNIuyWMV/22ZaerB+qaSi5MdrXtd6R08kvs2qCN4C09miupktDitvh8jRFflwGFBQcxZRjbw==", + "cpu": [ + "x64" + ], + "dev": true, + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/freebsd-arm64": { + "version": "0.21.5", + "resolved": "https://registry.npmjs.org/@esbuild/freebsd-arm64/-/freebsd-arm64-0.21.5.tgz", + "integrity": "sha512-5JcRxxRDUJLX8JXp/wcBCy3pENnCgBR9bN6JsY4OmhfUtIHe3ZW0mawA7+RDAcMLrMIZaf03NlQiX9DGyB8h4g==", + "cpu": [ + "arm64" + ], + "dev": true, + "optional": true, + "os": [ + "freebsd" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/freebsd-x64": { + "version": "0.21.5", + "resolved": "https://registry.npmjs.org/@esbuild/freebsd-x64/-/freebsd-x64-0.21.5.tgz", + "integrity": "sha512-J95kNBj1zkbMXtHVH29bBriQygMXqoVQOQYA+ISs0/2l3T9/kj42ow2mpqerRBxDJnmkUDCaQT/dfNXWX/ZZCQ==", + "cpu": [ + "x64" + ], + "dev": true, + "optional": true, + "os": [ + "freebsd" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/linux-arm": { + "version": "0.21.5", + "resolved": "https://registry.npmjs.org/@esbuild/linux-arm/-/linux-arm-0.21.5.tgz", + "integrity": "sha512-bPb5AHZtbeNGjCKVZ9UGqGwo8EUu4cLq68E95A53KlxAPRmUyYv2D6F0uUI65XisGOL1hBP5mTronbgo+0bFcA==", + "cpu": [ + "arm" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/linux-arm64": { + "version": "0.21.5", + "resolved": "https://registry.npmjs.org/@esbuild/linux-arm64/-/linux-arm64-0.21.5.tgz", + "integrity": "sha512-ibKvmyYzKsBeX8d8I7MH/TMfWDXBF3db4qM6sy+7re0YXya+K1cem3on9XgdT2EQGMu4hQyZhan7TeQ8XkGp4Q==", + "cpu": [ + "arm64" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/linux-ia32": { + "version": "0.21.5", + "resolved": "https://registry.npmjs.org/@esbuild/linux-ia32/-/linux-ia32-0.21.5.tgz", + "integrity": "sha512-YvjXDqLRqPDl2dvRODYmmhz4rPeVKYvppfGYKSNGdyZkA01046pLWyRKKI3ax8fbJoK5QbxblURkwK/MWY18Tg==", + "cpu": [ + "ia32" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/linux-loong64": { + "version": "0.21.5", + "resolved": "https://registry.npmjs.org/@esbuild/linux-loong64/-/linux-loong64-0.21.5.tgz", + "integrity": "sha512-uHf1BmMG8qEvzdrzAqg2SIG/02+4/DHB6a9Kbya0XDvwDEKCoC8ZRWI5JJvNdUjtciBGFQ5PuBlpEOXQj+JQSg==", + "cpu": [ + "loong64" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/linux-mips64el": { + "version": "0.21.5", + "resolved": "https://registry.npmjs.org/@esbuild/linux-mips64el/-/linux-mips64el-0.21.5.tgz", + "integrity": "sha512-IajOmO+KJK23bj52dFSNCMsz1QP1DqM6cwLUv3W1QwyxkyIWecfafnI555fvSGqEKwjMXVLokcV5ygHW5b3Jbg==", + "cpu": [ + "mips64el" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/linux-ppc64": { + "version": "0.21.5", + "resolved": "https://registry.npmjs.org/@esbuild/linux-ppc64/-/linux-ppc64-0.21.5.tgz", + "integrity": "sha512-1hHV/Z4OEfMwpLO8rp7CvlhBDnjsC3CttJXIhBi+5Aj5r+MBvy4egg7wCbe//hSsT+RvDAG7s81tAvpL2XAE4w==", + "cpu": [ + "ppc64" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/linux-riscv64": { + "version": "0.21.5", + "resolved": "https://registry.npmjs.org/@esbuild/linux-riscv64/-/linux-riscv64-0.21.5.tgz", + "integrity": "sha512-2HdXDMd9GMgTGrPWnJzP2ALSokE/0O5HhTUvWIbD3YdjME8JwvSCnNGBnTThKGEB91OZhzrJ4qIIxk/SBmyDDA==", + "cpu": [ + "riscv64" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/linux-s390x": { + "version": "0.21.5", + "resolved": "https://registry.npmjs.org/@esbuild/linux-s390x/-/linux-s390x-0.21.5.tgz", + "integrity": "sha512-zus5sxzqBJD3eXxwvjN1yQkRepANgxE9lgOW2qLnmr8ikMTphkjgXu1HR01K4FJg8h1kEEDAqDcZQtbrRnB41A==", + "cpu": [ + "s390x" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/linux-x64": { + "version": "0.21.5", + "resolved": "https://registry.npmjs.org/@esbuild/linux-x64/-/linux-x64-0.21.5.tgz", + "integrity": "sha512-1rYdTpyv03iycF1+BhzrzQJCdOuAOtaqHTWJZCWvijKD2N5Xu0TtVC8/+1faWqcP9iBCWOmjmhoH94dH82BxPQ==", + "cpu": [ + "x64" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/netbsd-x64": { + "version": "0.21.5", + "resolved": "https://registry.npmjs.org/@esbuild/netbsd-x64/-/netbsd-x64-0.21.5.tgz", + "integrity": "sha512-Woi2MXzXjMULccIwMnLciyZH4nCIMpWQAs049KEeMvOcNADVxo0UBIQPfSmxB3CWKedngg7sWZdLvLczpe0tLg==", + "cpu": [ + "x64" + ], + "dev": true, + "optional": true, + "os": [ + "netbsd" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/openbsd-x64": { + "version": "0.21.5", + "resolved": "https://registry.npmjs.org/@esbuild/openbsd-x64/-/openbsd-x64-0.21.5.tgz", + "integrity": "sha512-HLNNw99xsvx12lFBUwoT8EVCsSvRNDVxNpjZ7bPn947b8gJPzeHWyNVhFsaerc0n3TsbOINvRP2byTZ5LKezow==", + "cpu": [ + "x64" + ], + "dev": true, + "optional": true, + "os": [ + "openbsd" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/sunos-x64": { + "version": "0.21.5", + "resolved": "https://registry.npmjs.org/@esbuild/sunos-x64/-/sunos-x64-0.21.5.tgz", + "integrity": "sha512-6+gjmFpfy0BHU5Tpptkuh8+uw3mnrvgs+dSPQXQOv3ekbordwnzTVEb4qnIvQcYXq6gzkyTnoZ9dZG+D4garKg==", + "cpu": [ + "x64" + ], + "dev": true, + "optional": true, + "os": [ + "sunos" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/win32-arm64": { + "version": "0.21.5", + "resolved": "https://registry.npmjs.org/@esbuild/win32-arm64/-/win32-arm64-0.21.5.tgz", + "integrity": "sha512-Z0gOTd75VvXqyq7nsl93zwahcTROgqvuAcYDUr+vOv8uHhNSKROyU961kgtCD1e95IqPKSQKH7tBTslnS3tA8A==", + "cpu": [ + "arm64" + ], + "dev": true, + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/win32-ia32": { + "version": "0.21.5", + "resolved": "https://registry.npmjs.org/@esbuild/win32-ia32/-/win32-ia32-0.21.5.tgz", + "integrity": "sha512-SWXFF1CL2RVNMaVs+BBClwtfZSvDgtL//G/smwAc5oVK/UPu2Gu9tIaRgFmYFFKrmg3SyAjSrElf0TiJ1v8fYA==", + "cpu": [ + "ia32" + ], + "dev": true, + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/win32-x64": { + "version": "0.21.5", + "resolved": "https://registry.npmjs.org/@esbuild/win32-x64/-/win32-x64-0.21.5.tgz", + "integrity": "sha512-tQd/1efJuzPC6rCFwEvLtci/xNFcTZknmXs98FYDfGE4wP9ClFV98nyKrzJKVPMhdDnjzLhdUyMX4PsQAPjwIw==", + "cpu": [ + "x64" + ], + "dev": true, + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@eslint-community/eslint-utils": { + "version": "4.4.0", + "resolved": "https://registry.npmjs.org/@eslint-community/eslint-utils/-/eslint-utils-4.4.0.tgz", + "integrity": "sha512-1/sA4dwrzBAyeUoQ6oxahHKmrZvsnLCg4RfxW3ZFGGmQkSNQPFNLV9CUEFQP1x9EYXHTo5p6xdhZM1Ne9p/AfA==", + "dev": true, + "dependencies": { + "eslint-visitor-keys": "^3.3.0" + }, + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + }, + "peerDependencies": { + "eslint": "^6.0.0 || ^7.0.0 || >=8.0.0" + } + }, + "node_modules/@eslint-community/regexpp": { + "version": "4.11.1", + "resolved": "https://registry.npmjs.org/@eslint-community/regexpp/-/regexpp-4.11.1.tgz", + "integrity": "sha512-m4DVN9ZqskZoLU5GlWZadwDnYo3vAEydiUayB9widCl9ffWx2IvPnp6n3on5rJmziJSw9Bv+Z3ChDVdMwXCY8Q==", + "dev": true, + "engines": { + "node": "^12.0.0 || ^14.0.0 || >=16.0.0" + } + }, + "node_modules/@eslint/eslintrc": { + "version": "2.1.4", + "resolved": "https://registry.npmjs.org/@eslint/eslintrc/-/eslintrc-2.1.4.tgz", + "integrity": "sha512-269Z39MS6wVJtsoUl10L60WdkhJVdPG24Q4eZTH3nnF6lpvSShEK3wQjDX9JRWAUPvPh7COouPpU9IrqaZFvtQ==", + "dev": true, + "dependencies": { + "ajv": "^6.12.4", + "debug": "^4.3.2", + "espree": "^9.6.0", + "globals": "^13.19.0", + "ignore": "^5.2.0", + "import-fresh": "^3.2.1", + "js-yaml": "^4.1.0", + "minimatch": "^3.1.2", + "strip-json-comments": "^3.1.1" + }, + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + }, + "funding": { + "url": "https://opencollective.com/eslint" + } + }, + "node_modules/@eslint/eslintrc/node_modules/globals": { + "version": "13.24.0", + "resolved": "https://registry.npmjs.org/globals/-/globals-13.24.0.tgz", + "integrity": "sha512-AhO5QUcj8llrbG09iWhPU2B204J1xnPeL8kQmVorSsy+Sjj1sk8gIyh6cUocGmH4L0UuhAJy+hJMRA4mgA4mFQ==", + "dev": true, + "dependencies": { + "type-fest": "^0.20.2" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/@eslint/js": { + "version": "8.57.1", + "resolved": "https://registry.npmjs.org/@eslint/js/-/js-8.57.1.tgz", + "integrity": "sha512-d9zaMRSTIKDLhctzH12MtXvJKSSUhaHcjV+2Z+GK+EEY7XKpP5yR4x+N3TAcHTcu963nIr+TMcCb4DBCYX1z6Q==", + "dev": true, + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + } + }, + "node_modules/@firebase/analytics": { + "version": "0.10.8", + "resolved": "https://registry.npmjs.org/@firebase/analytics/-/analytics-0.10.8.tgz", + "integrity": "sha512-CVnHcS4iRJPqtIDc411+UmFldk0ShSK3OB+D0bKD8Ck5Vro6dbK5+APZpkuWpbfdL359DIQUnAaMLE+zs/PVyA==", + "dependencies": { + "@firebase/component": "0.6.9", + "@firebase/installations": "0.6.9", + "@firebase/logger": "0.4.2", + "@firebase/util": "1.10.0", + "tslib": "^2.1.0" + }, + "peerDependencies": { + "@firebase/app": "0.x" + } + }, + "node_modules/@firebase/analytics-compat": { + "version": "0.2.14", + "resolved": "https://registry.npmjs.org/@firebase/analytics-compat/-/analytics-compat-0.2.14.tgz", + "integrity": "sha512-unRVY6SvRqfNFIAA/kwl4vK+lvQAL2HVcgu9zTrUtTyYDmtIt/lOuHJynBMYEgLnKm39YKBDhtqdapP2e++ASw==", + "dependencies": { + "@firebase/analytics": "0.10.8", + "@firebase/analytics-types": "0.8.2", + "@firebase/component": "0.6.9", + "@firebase/util": "1.10.0", + "tslib": "^2.1.0" + }, + "peerDependencies": { + "@firebase/app-compat": "0.x" + } + }, + "node_modules/@firebase/analytics-types": { + "version": "0.8.2", + "resolved": "https://registry.npmjs.org/@firebase/analytics-types/-/analytics-types-0.8.2.tgz", + "integrity": "sha512-EnzNNLh+9/sJsimsA/FGqzakmrAUKLeJvjRHlg8df1f97NLUlFidk9600y0ZgWOp3CAxn6Hjtk+08tixlUOWyw==" + }, + "node_modules/@firebase/app": { + "version": "0.10.11", + "resolved": "https://registry.npmjs.org/@firebase/app/-/app-0.10.11.tgz", + "integrity": "sha512-DuI8c+p/ndPmV6V0i+mcSuaU9mK9Pi9h76WOYFkPNsbmkblEy8bpTOazjG7tnfar6Of1Wn5ohvyOHSRqnN6flQ==", + "dependencies": { + "@firebase/component": "0.6.9", + "@firebase/logger": "0.4.2", + "@firebase/util": "1.10.0", + "idb": "7.1.1", + "tslib": "^2.1.0" + } + }, + "node_modules/@firebase/app-check": { + "version": "0.8.8", + "resolved": "https://registry.npmjs.org/@firebase/app-check/-/app-check-0.8.8.tgz", + "integrity": "sha512-O49RGF1xj7k6BuhxGpHmqOW5hqBIAEbt2q6POW0lIywx7emYtzPDeQI+ryQpC4zbKX646SoVZ711TN1DBLNSOQ==", + "dependencies": { + "@firebase/component": "0.6.9", + "@firebase/logger": "0.4.2", + "@firebase/util": "1.10.0", + "tslib": "^2.1.0" + }, + "peerDependencies": { + "@firebase/app": "0.x" + } + }, + "node_modules/@firebase/app-check-compat": { + "version": "0.3.15", + "resolved": "https://registry.npmjs.org/@firebase/app-check-compat/-/app-check-compat-0.3.15.tgz", + "integrity": "sha512-zFIvIFFNqDXpOT2huorz9cwf56VT3oJYRFjSFYdSbGYEJYEaXjLJbfC79lx/zjx4Fh+yuN8pry3TtvwaevrGbg==", + "dependencies": { + "@firebase/app-check": "0.8.8", + "@firebase/app-check-types": "0.5.2", + "@firebase/component": "0.6.9", + "@firebase/logger": "0.4.2", + "@firebase/util": "1.10.0", + "tslib": "^2.1.0" + }, + "peerDependencies": { + "@firebase/app-compat": "0.x" + } + }, + "node_modules/@firebase/app-check-interop-types": { + "version": "0.3.2", + "resolved": "https://registry.npmjs.org/@firebase/app-check-interop-types/-/app-check-interop-types-0.3.2.tgz", + "integrity": "sha512-LMs47Vinv2HBMZi49C09dJxp0QT5LwDzFaVGf/+ITHe3BlIhUiLNttkATSXplc89A2lAaeTqjgqVkiRfUGyQiQ==" + }, + "node_modules/@firebase/app-check-types": { + "version": "0.5.2", + "resolved": "https://registry.npmjs.org/@firebase/app-check-types/-/app-check-types-0.5.2.tgz", + "integrity": "sha512-FSOEzTzL5bLUbD2co3Zut46iyPWML6xc4x+78TeaXMSuJap5QObfb+rVvZJtla3asN4RwU7elaQaduP+HFizDA==" + }, + "node_modules/@firebase/app-compat": { + "version": "0.2.41", + "resolved": "https://registry.npmjs.org/@firebase/app-compat/-/app-compat-0.2.41.tgz", + "integrity": "sha512-ktJcObWKjlIWq31kXu6sHoqWlhQD5rx0a2F2ZC2JVuEE5A5f7F43VO1Z6lfeRZXMFZbGG/aqIfXqgsP3zD2JYg==", + "dependencies": { + "@firebase/app": "0.10.11", + "@firebase/component": "0.6.9", + "@firebase/logger": "0.4.2", + "@firebase/util": "1.10.0", + "tslib": "^2.1.0" + } + }, + "node_modules/@firebase/app-types": { + "version": "0.9.2", + "resolved": "https://registry.npmjs.org/@firebase/app-types/-/app-types-0.9.2.tgz", + "integrity": "sha512-oMEZ1TDlBz479lmABwWsWjzHwheQKiAgnuKxE0pz0IXCVx7/rtlkx1fQ6GfgK24WCrxDKMplZrT50Kh04iMbXQ==" + }, + "node_modules/@firebase/auth": { + "version": "1.7.9", + "resolved": "https://registry.npmjs.org/@firebase/auth/-/auth-1.7.9.tgz", + "integrity": "sha512-yLD5095kVgDw965jepMyUrIgDklD6qH/BZNHeKOgvu7pchOKNjVM+zQoOVYJIKWMWOWBq8IRNVU6NXzBbozaJg==", + "dependencies": { + "@firebase/component": "0.6.9", + "@firebase/logger": "0.4.2", + "@firebase/util": "1.10.0", + "tslib": "^2.1.0", + "undici": "6.19.7" + }, + "peerDependencies": { + "@firebase/app": "0.x", + "@react-native-async-storage/async-storage": "^1.18.1" + }, + "peerDependenciesMeta": { + "@react-native-async-storage/async-storage": { + "optional": true + } + } + }, + "node_modules/@firebase/auth-compat": { + "version": "0.5.14", + "resolved": "https://registry.npmjs.org/@firebase/auth-compat/-/auth-compat-0.5.14.tgz", + "integrity": "sha512-2eczCSqBl1KUPJacZlFpQayvpilg3dxXLy9cSMTKtQMTQSmondUtPI47P3ikH3bQAXhzKLOE+qVxJ3/IRtu9pw==", + "dependencies": { + "@firebase/auth": "1.7.9", + "@firebase/auth-types": "0.12.2", + "@firebase/component": "0.6.9", + "@firebase/util": "1.10.0", + "tslib": "^2.1.0", + "undici": "6.19.7" + }, + "peerDependencies": { + "@firebase/app-compat": "0.x" + } + }, + "node_modules/@firebase/auth-interop-types": { + "version": "0.2.3", + "resolved": "https://registry.npmjs.org/@firebase/auth-interop-types/-/auth-interop-types-0.2.3.tgz", + "integrity": "sha512-Fc9wuJGgxoxQeavybiuwgyi+0rssr76b+nHpj+eGhXFYAdudMWyfBHvFL/I5fEHniUM/UQdFzi9VXJK2iZF7FQ==" + }, + "node_modules/@firebase/auth-types": { + "version": "0.12.2", + "resolved": "https://registry.npmjs.org/@firebase/auth-types/-/auth-types-0.12.2.tgz", + "integrity": "sha512-qsEBaRMoGvHO10unlDJhaKSuPn4pyoTtlQuP1ghZfzB6rNQPuhp/N/DcFZxm9i4v0SogjCbf9reWupwIvfmH6w==", + "peerDependencies": { + "@firebase/app-types": "0.x", + "@firebase/util": "1.x" + } + }, + "node_modules/@firebase/component": { + "version": "0.6.9", + "resolved": "https://registry.npmjs.org/@firebase/component/-/component-0.6.9.tgz", + "integrity": "sha512-gm8EUEJE/fEac86AvHn8Z/QW8BvR56TBw3hMW0O838J/1mThYQXAIQBgUv75EqlCZfdawpWLrKt1uXvp9ciK3Q==", + "dependencies": { + "@firebase/util": "1.10.0", + "tslib": "^2.1.0" + } + }, + "node_modules/@firebase/database": { + "version": "1.0.8", + "resolved": "https://registry.npmjs.org/@firebase/database/-/database-1.0.8.tgz", + "integrity": "sha512-dzXALZeBI1U5TXt6619cv0+tgEhJiwlUtQ55WNZY7vGAjv7Q1QioV969iYwt1AQQ0ovHnEW0YW9TiBfefLvErg==", + "dependencies": { + "@firebase/app-check-interop-types": "0.3.2", + "@firebase/auth-interop-types": "0.2.3", + "@firebase/component": "0.6.9", + "@firebase/logger": "0.4.2", + "@firebase/util": "1.10.0", + "faye-websocket": "0.11.4", + "tslib": "^2.1.0" + } + }, + "node_modules/@firebase/database-compat": { + "version": "1.0.8", + "resolved": "https://registry.npmjs.org/@firebase/database-compat/-/database-compat-1.0.8.tgz", + "integrity": "sha512-OpeWZoPE3sGIRPBKYnW9wLad25RaWbGyk7fFQe4xnJQKRzlynWeFBSRRAoLE2Old01WXwskUiucNqUUVlFsceg==", + "dependencies": { + "@firebase/component": "0.6.9", + "@firebase/database": "1.0.8", + "@firebase/database-types": "1.0.5", + "@firebase/logger": "0.4.2", + "@firebase/util": "1.10.0", + "tslib": "^2.1.0" + } + }, + "node_modules/@firebase/database-types": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/@firebase/database-types/-/database-types-1.0.5.tgz", + "integrity": "sha512-fTlqCNwFYyq/C6W7AJ5OCuq5CeZuBEsEwptnVxlNPkWCo5cTTyukzAHRSO/jaQcItz33FfYrrFk1SJofcu2AaQ==", + "dependencies": { + "@firebase/app-types": "0.9.2", + "@firebase/util": "1.10.0" + } + }, + "node_modules/@firebase/firestore": { + "version": "4.7.2", + "resolved": "https://registry.npmjs.org/@firebase/firestore/-/firestore-4.7.2.tgz", + "integrity": "sha512-WPkL/DEHuJg1PZPyHn81pNUhitG+7WkpLVdXmoYB23Za3eoM8VzuIn7zcD4Cji6wDCGA6eI1rvGYLtsXmE1OaQ==", + "dependencies": { + "@firebase/component": "0.6.9", + "@firebase/logger": "0.4.2", + "@firebase/util": "1.10.0", + "@firebase/webchannel-wrapper": "1.0.1", + "@grpc/grpc-js": "~1.9.0", + "@grpc/proto-loader": "^0.7.8", + "tslib": "^2.1.0", + "undici": "6.19.7" + }, + "engines": { + "node": ">=10.10.0" + }, + "peerDependencies": { + "@firebase/app": "0.x" + } + }, + "node_modules/@firebase/firestore-compat": { + "version": "0.3.37", + "resolved": "https://registry.npmjs.org/@firebase/firestore-compat/-/firestore-compat-0.3.37.tgz", + "integrity": "sha512-YwjJePx+m2OGnpKTGFTkcRXQZ+z0+8t7/zuwyOsTmKERobn0kekOv8VAQQmITcC+3du8Ul98O2a0vMH3xwt7jQ==", + "dependencies": { + "@firebase/component": "0.6.9", + "@firebase/firestore": "4.7.2", + "@firebase/firestore-types": "3.0.2", + "@firebase/util": "1.10.0", + "tslib": "^2.1.0" + }, + "peerDependencies": { + "@firebase/app-compat": "0.x" + } + }, + "node_modules/@firebase/firestore-types": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/@firebase/firestore-types/-/firestore-types-3.0.2.tgz", + "integrity": "sha512-wp1A+t5rI2Qc/2q7r2ZpjUXkRVPtGMd6zCLsiWurjsQpqPgFin3AhNibKcIzoF2rnToNa/XYtyWXuifjOOwDgg==", + "peerDependencies": { + "@firebase/app-types": "0.x", + "@firebase/util": "1.x" + } + }, + "node_modules/@firebase/functions": { + "version": "0.11.8", + "resolved": "https://registry.npmjs.org/@firebase/functions/-/functions-0.11.8.tgz", + "integrity": "sha512-Lo2rTPDn96naFIlSZKVd1yvRRqqqwiJk7cf9TZhUerwnPKgBzXy+aHE22ry+6EjCaQusUoNai6mU6p+G8QZT1g==", + "dependencies": { + "@firebase/app-check-interop-types": "0.3.2", + "@firebase/auth-interop-types": "0.2.3", + "@firebase/component": "0.6.9", + "@firebase/messaging-interop-types": "0.2.2", + "@firebase/util": "1.10.0", + "tslib": "^2.1.0", + "undici": "6.19.7" + }, + "peerDependencies": { + "@firebase/app": "0.x" + } + }, + "node_modules/@firebase/functions-compat": { + "version": "0.3.14", + "resolved": "https://registry.npmjs.org/@firebase/functions-compat/-/functions-compat-0.3.14.tgz", + "integrity": "sha512-dZ0PKOKQFnOlMfcim39XzaXonSuPPAVuzpqA4ONTIdyaJK/OnBaIEVs/+BH4faa1a2tLeR+Jy15PKqDRQoNIJw==", + "dependencies": { + "@firebase/component": "0.6.9", + "@firebase/functions": "0.11.8", + "@firebase/functions-types": "0.6.2", + "@firebase/util": "1.10.0", + "tslib": "^2.1.0" + }, + "peerDependencies": { + "@firebase/app-compat": "0.x" + } + }, + "node_modules/@firebase/functions-types": { + "version": "0.6.2", + "resolved": "https://registry.npmjs.org/@firebase/functions-types/-/functions-types-0.6.2.tgz", + "integrity": "sha512-0KiJ9lZ28nS2iJJvimpY4nNccV21rkQyor5Iheu/nq8aKXJqtJdeSlZDspjPSBBiHRzo7/GMUttegnsEITqR+w==" + }, + "node_modules/@firebase/installations": { + "version": "0.6.9", + "resolved": "https://registry.npmjs.org/@firebase/installations/-/installations-0.6.9.tgz", + "integrity": "sha512-hlT7AwCiKghOX3XizLxXOsTFiFCQnp/oj86zp1UxwDGmyzsyoxtX+UIZyVyH/oBF5+XtblFG9KZzZQ/h+dpy+Q==", + "dependencies": { + "@firebase/component": "0.6.9", + "@firebase/util": "1.10.0", + "idb": "7.1.1", + "tslib": "^2.1.0" + }, + "peerDependencies": { + "@firebase/app": "0.x" + } + }, + "node_modules/@firebase/installations-compat": { + "version": "0.2.9", + "resolved": "https://registry.npmjs.org/@firebase/installations-compat/-/installations-compat-0.2.9.tgz", + "integrity": "sha512-2lfdc6kPXR7WaL4FCQSQUhXcPbI7ol3wF+vkgtU25r77OxPf8F/VmswQ7sgIkBBWtymn5ZF20TIKtnOj9rjb6w==", + "dependencies": { + "@firebase/component": "0.6.9", + "@firebase/installations": "0.6.9", + "@firebase/installations-types": "0.5.2", + "@firebase/util": "1.10.0", + "tslib": "^2.1.0" + }, + "peerDependencies": { + "@firebase/app-compat": "0.x" + } + }, + "node_modules/@firebase/installations-types": { + "version": "0.5.2", + "resolved": "https://registry.npmjs.org/@firebase/installations-types/-/installations-types-0.5.2.tgz", + "integrity": "sha512-que84TqGRZJpJKHBlF2pkvc1YcXrtEDOVGiDjovP/a3s6W4nlbohGXEsBJo0JCeeg/UG9A+DEZVDUV9GpklUzA==", + "peerDependencies": { + "@firebase/app-types": "0.x" + } + }, + "node_modules/@firebase/logger": { + "version": "0.4.2", + "resolved": "https://registry.npmjs.org/@firebase/logger/-/logger-0.4.2.tgz", + "integrity": "sha512-Q1VuA5M1Gjqrwom6I6NUU4lQXdo9IAQieXlujeHZWvRt1b7qQ0KwBaNAjgxG27jgF9/mUwsNmO8ptBCGVYhB0A==", + "dependencies": { + "tslib": "^2.1.0" + } + }, + "node_modules/@firebase/messaging": { + "version": "0.12.11", + "resolved": "https://registry.npmjs.org/@firebase/messaging/-/messaging-0.12.11.tgz", + "integrity": "sha512-zn5zGhF46BmiZ7W9yAUoHlqzJGakmWn1FNp//roXHN62dgdEFIKfXY7IODA2iQiXpmUO3sBdI/Tf+Hsft1mVkw==", + "dependencies": { + "@firebase/component": "0.6.9", + "@firebase/installations": "0.6.9", + "@firebase/messaging-interop-types": "0.2.2", + "@firebase/util": "1.10.0", + "idb": "7.1.1", + "tslib": "^2.1.0" + }, + "peerDependencies": { + "@firebase/app": "0.x" + } + }, + "node_modules/@firebase/messaging-compat": { + "version": "0.2.11", + "resolved": "https://registry.npmjs.org/@firebase/messaging-compat/-/messaging-compat-0.2.11.tgz", + "integrity": "sha512-2NCkfE1L9jSn5OC+2n5rGAz5BEAQreK2lQGdPYQEJlAbKB2efoF+2FdiQ+LD8SlioSXz66REfeaEdesoLPFQcw==", + "dependencies": { + "@firebase/component": "0.6.9", + "@firebase/messaging": "0.12.11", + "@firebase/util": "1.10.0", + "tslib": "^2.1.0" + }, + "peerDependencies": { + "@firebase/app-compat": "0.x" + } + }, + "node_modules/@firebase/messaging-interop-types": { + "version": "0.2.2", + "resolved": "https://registry.npmjs.org/@firebase/messaging-interop-types/-/messaging-interop-types-0.2.2.tgz", + "integrity": "sha512-l68HXbuD2PPzDUOFb3aG+nZj5KA3INcPwlocwLZOzPp9rFM9yeuI9YLl6DQfguTX5eAGxO0doTR+rDLDvQb5tA==" + }, + "node_modules/@firebase/performance": { + "version": "0.6.9", + "resolved": "https://registry.npmjs.org/@firebase/performance/-/performance-0.6.9.tgz", + "integrity": "sha512-PnVaak5sqfz5ivhua+HserxTJHtCar/7zM0flCX6NkzBNzJzyzlH4Hs94h2Il0LQB99roBqoE5QT1JqWqcLJHQ==", + "dependencies": { + "@firebase/component": "0.6.9", + "@firebase/installations": "0.6.9", + "@firebase/logger": "0.4.2", + "@firebase/util": "1.10.0", + "tslib": "^2.1.0" + }, + "peerDependencies": { + "@firebase/app": "0.x" + } + }, + "node_modules/@firebase/performance-compat": { + "version": "0.2.9", + "resolved": "https://registry.npmjs.org/@firebase/performance-compat/-/performance-compat-0.2.9.tgz", + "integrity": "sha512-dNl95IUnpsu3fAfYBZDCVhXNkASE0uo4HYaEPd2/PKscfTvsgqFAOxfAXzBEDOnynDWiaGUnb5M1O00JQ+3FXA==", + "dependencies": { + "@firebase/component": "0.6.9", + "@firebase/logger": "0.4.2", + "@firebase/performance": "0.6.9", + "@firebase/performance-types": "0.2.2", + "@firebase/util": "1.10.0", + "tslib": "^2.1.0" + }, + "peerDependencies": { + "@firebase/app-compat": "0.x" + } + }, + "node_modules/@firebase/performance-types": { + "version": "0.2.2", + "resolved": "https://registry.npmjs.org/@firebase/performance-types/-/performance-types-0.2.2.tgz", + "integrity": "sha512-gVq0/lAClVH5STrIdKnHnCo2UcPLjJlDUoEB/tB4KM+hAeHUxWKnpT0nemUPvxZ5nbdY/pybeyMe8Cs29gEcHA==" + }, + "node_modules/@firebase/remote-config": { + "version": "0.4.9", + "resolved": "https://registry.npmjs.org/@firebase/remote-config/-/remote-config-0.4.9.tgz", + "integrity": "sha512-EO1NLCWSPMHdDSRGwZ73kxEEcTopAxX1naqLJFNApp4hO8WfKfmEpmjxmP5TrrnypjIf2tUkYaKsfbEA7+AMmA==", + "dependencies": { + "@firebase/component": "0.6.9", + "@firebase/installations": "0.6.9", + "@firebase/logger": "0.4.2", + "@firebase/util": "1.10.0", + "tslib": "^2.1.0" + }, + "peerDependencies": { + "@firebase/app": "0.x" + } + }, + "node_modules/@firebase/remote-config-compat": { + "version": "0.2.9", + "resolved": "https://registry.npmjs.org/@firebase/remote-config-compat/-/remote-config-compat-0.2.9.tgz", + "integrity": "sha512-AxzGpWfWFYejH2twxfdOJt5Cfh/ATHONegTd/a0p5flEzsD5JsxXgfkFToop+mypEL3gNwawxrxlZddmDoNxyA==", + "dependencies": { + "@firebase/component": "0.6.9", + "@firebase/logger": "0.4.2", + "@firebase/remote-config": "0.4.9", + "@firebase/remote-config-types": "0.3.2", + "@firebase/util": "1.10.0", + "tslib": "^2.1.0" + }, + "peerDependencies": { + "@firebase/app-compat": "0.x" + } + }, + "node_modules/@firebase/remote-config-types": { + "version": "0.3.2", + "resolved": "https://registry.npmjs.org/@firebase/remote-config-types/-/remote-config-types-0.3.2.tgz", + "integrity": "sha512-0BC4+Ud7y2aPTyhXJTMTFfrGGLqdYXrUB9sJVAB8NiqJswDTc4/2qrE/yfUbnQJhbSi6ZaTTBKyG3n1nplssaA==" + }, + "node_modules/@firebase/storage": { + "version": "0.13.2", + "resolved": "https://registry.npmjs.org/@firebase/storage/-/storage-0.13.2.tgz", + "integrity": "sha512-fxuJnHshbhVwuJ4FuISLu+/76Aby2sh+44ztjF2ppoe0TELIDxPW6/r1KGlWYt//AD0IodDYYA8ZTN89q8YqUw==", + "dependencies": { + "@firebase/component": "0.6.9", + "@firebase/util": "1.10.0", + "tslib": "^2.1.0", + "undici": "6.19.7" + }, + "peerDependencies": { + "@firebase/app": "0.x" + } + }, + "node_modules/@firebase/storage-compat": { + "version": "0.3.12", + "resolved": "https://registry.npmjs.org/@firebase/storage-compat/-/storage-compat-0.3.12.tgz", + "integrity": "sha512-hA4VWKyGU5bWOll+uwzzhEMMYGu9PlKQc1w4DWxB3aIErWYzonrZjF0icqNQZbwKNIdh8SHjZlFeB2w6OSsjfg==", + "dependencies": { + "@firebase/component": "0.6.9", + "@firebase/storage": "0.13.2", + "@firebase/storage-types": "0.8.2", + "@firebase/util": "1.10.0", + "tslib": "^2.1.0" + }, + "peerDependencies": { + "@firebase/app-compat": "0.x" + } + }, + "node_modules/@firebase/storage-types": { + "version": "0.8.2", + "resolved": "https://registry.npmjs.org/@firebase/storage-types/-/storage-types-0.8.2.tgz", + "integrity": "sha512-0vWu99rdey0g53lA7IShoA2Lol1jfnPovzLDUBuon65K7uKG9G+L5uO05brD9pMw+l4HRFw23ah3GwTGpEav6g==", + "peerDependencies": { + "@firebase/app-types": "0.x", + "@firebase/util": "1.x" + } + }, + "node_modules/@firebase/util": { + "version": "1.10.0", + "resolved": "https://registry.npmjs.org/@firebase/util/-/util-1.10.0.tgz", + "integrity": "sha512-xKtx4A668icQqoANRxyDLBLz51TAbDP9KRfpbKGxiCAW346d0BeJe5vN6/hKxxmWwnZ0mautyv39JxviwwQMOQ==", + "dependencies": { + "tslib": "^2.1.0" + } + }, + "node_modules/@firebase/vertexai-preview": { + "version": "0.0.4", + "resolved": "https://registry.npmjs.org/@firebase/vertexai-preview/-/vertexai-preview-0.0.4.tgz", + "integrity": "sha512-EBSqyu9eg8frQlVU9/HjKtHN7odqbh9MtAcVz3WwHj4gLCLOoN9F/o+oxlq3CxvFrd3CNTZwu6d2mZtVlEInng==", + "dependencies": { + "@firebase/app-check-interop-types": "0.3.2", + "@firebase/component": "0.6.9", + "@firebase/logger": "0.4.2", + "@firebase/util": "1.10.0", + "tslib": "^2.1.0" + }, + "engines": { + "node": ">=18.0.0" + }, + "peerDependencies": { + "@firebase/app": "0.x", + "@firebase/app-types": "0.x" + } + }, + "node_modules/@firebase/webchannel-wrapper": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/@firebase/webchannel-wrapper/-/webchannel-wrapper-1.0.1.tgz", + "integrity": "sha512-jmEnr/pk0yVkA7mIlHNnxCi+wWzOFUg0WyIotgkKAb2u1J7fAeDBcVNSTjTihbAYNusCLQdW5s9IJ5qwnEufcQ==" + }, + "node_modules/@grpc/grpc-js": { + "version": "1.9.15", + "resolved": "https://registry.npmjs.org/@grpc/grpc-js/-/grpc-js-1.9.15.tgz", + "integrity": "sha512-nqE7Hc0AzI+euzUwDAy0aY5hCp10r734gMGRdU+qOPX0XSceI2ULrcXB5U2xSc5VkWwalCj4M7GzCAygZl2KoQ==", + "dependencies": { + "@grpc/proto-loader": "^0.7.8", + "@types/node": ">=12.12.47" + }, + "engines": { + "node": "^8.13.0 || >=10.10.0" + } + }, + "node_modules/@grpc/proto-loader": { + "version": "0.7.13", + "resolved": "https://registry.npmjs.org/@grpc/proto-loader/-/proto-loader-0.7.13.tgz", + "integrity": "sha512-AiXO/bfe9bmxBjxxtYxFAXGZvMaN5s8kO+jBHAJCON8rJoB5YS/D6X7ZNc6XQkuHNmyl4CYaMI1fJ/Gn27RGGw==", + "dependencies": { + "lodash.camelcase": "^4.3.0", + "long": "^5.0.0", + "protobufjs": "^7.2.5", + "yargs": "^17.7.2" + }, + "bin": { + "proto-loader-gen-types": "build/bin/proto-loader-gen-types.js" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/@humanwhocodes/config-array": { + "version": "0.13.0", + "resolved": "https://registry.npmjs.org/@humanwhocodes/config-array/-/config-array-0.13.0.tgz", + "integrity": "sha512-DZLEEqFWQFiyK6h5YIeynKx7JlvCYWL0cImfSRXZ9l4Sg2efkFGTuFf6vzXjK1cq6IYkU+Eg/JizXw+TD2vRNw==", + "deprecated": "Use @eslint/config-array instead", + "dev": true, + "dependencies": { + "@humanwhocodes/object-schema": "^2.0.3", + "debug": "^4.3.1", + "minimatch": "^3.0.5" + }, + "engines": { + "node": ">=10.10.0" + } + }, + "node_modules/@humanwhocodes/module-importer": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/@humanwhocodes/module-importer/-/module-importer-1.0.1.tgz", + "integrity": "sha512-bxveV4V8v5Yb4ncFTT3rPSgZBOpCkjfK0y4oVVVJwIuDVBRMDXrPyXRL988i5ap9m9bnyEEjWfm5WkBmtffLfA==", + "dev": true, + "engines": { + "node": ">=12.22" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/nzakas" + } + }, + "node_modules/@humanwhocodes/object-schema": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/@humanwhocodes/object-schema/-/object-schema-2.0.3.tgz", + "integrity": "sha512-93zYdMES/c1D69yZiKDBj0V24vqNzB/koF26KPaagAfd3P/4gUlh3Dys5ogAK+Exi9QyzlD8x/08Zt7wIKcDcA==", + "deprecated": "Use @eslint/object-schema instead", + "dev": true + }, + "node_modules/@jridgewell/gen-mapping": { + "version": "0.3.5", + "resolved": "https://registry.npmjs.org/@jridgewell/gen-mapping/-/gen-mapping-0.3.5.tgz", + "integrity": "sha512-IzL8ZoEDIBRWEzlCcRhOaCupYyN5gdIK+Q6fbFdPDg6HqX6jpkItn7DFIpW9LQzXG6Df9sA7+OKnq0qlz/GaQg==", + "dev": true, + "dependencies": { + "@jridgewell/set-array": "^1.2.1", + "@jridgewell/sourcemap-codec": "^1.4.10", + "@jridgewell/trace-mapping": "^0.3.24" + }, + "engines": { + "node": ">=6.0.0" + } + }, + "node_modules/@jridgewell/resolve-uri": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/@jridgewell/resolve-uri/-/resolve-uri-3.1.2.tgz", + "integrity": "sha512-bRISgCIjP20/tbWSPWMEi54QVPRZExkuD9lJL+UIxUKtwVJA8wW1Trb1jMs1RFXo1CBTNZ/5hpC9QvmKWdopKw==", + "dev": true, + "engines": { + "node": ">=6.0.0" + } + }, + "node_modules/@jridgewell/set-array": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/@jridgewell/set-array/-/set-array-1.2.1.tgz", + "integrity": "sha512-R8gLRTZeyp03ymzP/6Lil/28tGeGEzhx1q2k703KGWRAI1VdvPIXdG70VJc2pAMw3NA6JKL5hhFu1sJX0Mnn/A==", + "dev": true, + "engines": { + "node": ">=6.0.0" + } + }, + "node_modules/@jridgewell/sourcemap-codec": { + "version": "1.5.0", + "resolved": "https://registry.npmjs.org/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.5.0.tgz", + "integrity": "sha512-gv3ZRaISU3fjPAgNsriBRqGWQL6quFx04YMPW/zD8XMLsU32mhCCbfbO6KZFLjvYpCZ8zyDEgqsgf+PwPaM7GQ==", + "dev": true + }, + "node_modules/@jridgewell/trace-mapping": { + "version": "0.3.25", + "resolved": "https://registry.npmjs.org/@jridgewell/trace-mapping/-/trace-mapping-0.3.25.tgz", + "integrity": "sha512-vNk6aEwybGtawWmy/PzwnGDOjCkLWSD2wqvjGGAgOAwCGWySYXfYoxt00IJkTF+8Lb57DwOb3Aa0o9CApepiYQ==", + "dev": true, + "dependencies": { + "@jridgewell/resolve-uri": "^3.1.0", + "@jridgewell/sourcemap-codec": "^1.4.14" + } + }, + "node_modules/@nodelib/fs.scandir": { + "version": "2.1.5", + "resolved": "https://registry.npmjs.org/@nodelib/fs.scandir/-/fs.scandir-2.1.5.tgz", + "integrity": "sha512-vq24Bq3ym5HEQm2NKCr3yXDwjc7vTsEThRDnkp2DK9p1uqLR+DHurm/NOTo0KG7HYHU7eppKZj3MyqYuMBf62g==", + "dev": true, + "dependencies": { + "@nodelib/fs.stat": "2.0.5", + "run-parallel": "^1.1.9" + }, + "engines": { + "node": ">= 8" + } + }, + "node_modules/@nodelib/fs.stat": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/@nodelib/fs.stat/-/fs.stat-2.0.5.tgz", + "integrity": "sha512-RkhPPp2zrqDAQA/2jNhnztcPAlv64XdhIp7a7454A5ovI7Bukxgt7MX7udwAu3zg1DcpPU0rz3VV1SeaqvY4+A==", + "dev": true, + "engines": { + "node": ">= 8" + } + }, + "node_modules/@nodelib/fs.walk": { + "version": "1.2.8", + "resolved": "https://registry.npmjs.org/@nodelib/fs.walk/-/fs.walk-1.2.8.tgz", + "integrity": "sha512-oGB+UxlgWcgQkgwo8GcEGwemoTFt3FIO9ababBmaGwXIoBKZ+GTy0pP185beGg7Llih/NSHSV2XAs1lnznocSg==", + "dev": true, + "dependencies": { + "@nodelib/fs.scandir": "2.1.5", + "fastq": "^1.6.0" + }, + "engines": { + "node": ">= 8" + } + }, + "node_modules/@protobufjs/aspromise": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/@protobufjs/aspromise/-/aspromise-1.1.2.tgz", + "integrity": "sha512-j+gKExEuLmKwvz3OgROXtrJ2UG2x8Ch2YZUxahh+s1F2HZ+wAceUNLkvy6zKCPVRkU++ZWQrdxsUeQXmcg4uoQ==" + }, + "node_modules/@protobufjs/base64": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/@protobufjs/base64/-/base64-1.1.2.tgz", + "integrity": "sha512-AZkcAA5vnN/v4PDqKyMR5lx7hZttPDgClv83E//FMNhR2TMcLUhfRUBHCmSl0oi9zMgDDqRUJkSxO3wm85+XLg==" + }, + "node_modules/@protobufjs/codegen": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/@protobufjs/codegen/-/codegen-2.0.4.tgz", + "integrity": "sha512-YyFaikqM5sH0ziFZCN3xDC7zeGaB/d0IUb9CATugHWbd1FRFwWwt4ld4OYMPWu5a3Xe01mGAULCdqhMlPl29Jg==" + }, + "node_modules/@protobufjs/eventemitter": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/@protobufjs/eventemitter/-/eventemitter-1.1.0.tgz", + "integrity": "sha512-j9ednRT81vYJ9OfVuXG6ERSTdEL1xVsNgqpkxMsbIabzSo3goCjDIveeGv5d03om39ML71RdmrGNjG5SReBP/Q==" + }, + "node_modules/@protobufjs/fetch": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/@protobufjs/fetch/-/fetch-1.1.0.tgz", + "integrity": "sha512-lljVXpqXebpsijW71PZaCYeIcE5on1w5DlQy5WH6GLbFryLUrBD4932W/E2BSpfRJWseIL4v/KPgBFxDOIdKpQ==", + "dependencies": { + "@protobufjs/aspromise": "^1.1.1", + "@protobufjs/inquire": "^1.1.0" + } + }, + "node_modules/@protobufjs/float": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/@protobufjs/float/-/float-1.0.2.tgz", + "integrity": "sha512-Ddb+kVXlXst9d+R9PfTIxh1EdNkgoRe5tOX6t01f1lYWOvJnSPDBlG241QLzcyPdoNTsblLUdujGSE4RzrTZGQ==" + }, + "node_modules/@protobufjs/inquire": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/@protobufjs/inquire/-/inquire-1.1.0.tgz", + "integrity": "sha512-kdSefcPdruJiFMVSbn801t4vFK7KB/5gd2fYvrxhuJYg8ILrmn9SKSX2tZdV6V+ksulWqS7aXjBcRXl3wHoD9Q==" + }, + "node_modules/@protobufjs/path": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/@protobufjs/path/-/path-1.1.2.tgz", + "integrity": "sha512-6JOcJ5Tm08dOHAbdR3GrvP+yUUfkjG5ePsHYczMFLq3ZmMkAD98cDgcT2iA1lJ9NVwFd4tH/iSSoe44YWkltEA==" + }, + "node_modules/@protobufjs/pool": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/@protobufjs/pool/-/pool-1.1.0.tgz", + "integrity": "sha512-0kELaGSIDBKvcgS4zkjz1PeddatrjYcmMWOlAuAPwAeccUrPHdUqo/J6LiymHHEiJT5NrF1UVwxY14f+fy4WQw==" + }, + "node_modules/@protobufjs/utf8": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/@protobufjs/utf8/-/utf8-1.1.0.tgz", + "integrity": "sha512-Vvn3zZrhQZkkBE8LSuW3em98c0FwgO4nxzv6OdSxPKJIEKY2bGbHn+mhGIPerzI4twdxaP8/0+06HBpwf345Lw==" + }, + "node_modules/@rollup/rollup-android-arm-eabi": { + "version": "4.22.4", + "resolved": "https://registry.npmjs.org/@rollup/rollup-android-arm-eabi/-/rollup-android-arm-eabi-4.22.4.tgz", + "integrity": "sha512-Fxamp4aEZnfPOcGA8KSNEohV8hX7zVHOemC8jVBoBUHu5zpJK/Eu3uJwt6BMgy9fkvzxDaurgj96F/NiLukF2w==", + "cpu": [ + "arm" + ], + "dev": true, + "optional": true, + "os": [ + "android" + ] + }, + "node_modules/@rollup/rollup-android-arm64": { + "version": "4.22.4", + "resolved": "https://registry.npmjs.org/@rollup/rollup-android-arm64/-/rollup-android-arm64-4.22.4.tgz", + "integrity": "sha512-VXoK5UMrgECLYaMuGuVTOx5kcuap1Jm8g/M83RnCHBKOqvPPmROFJGQaZhGccnsFtfXQ3XYa4/jMCJvZnbJBdA==", + "cpu": [ + "arm64" + ], + "dev": true, + "optional": true, + "os": [ + "android" + ] + }, + "node_modules/@rollup/rollup-darwin-arm64": { + "version": "4.22.4", + "resolved": "https://registry.npmjs.org/@rollup/rollup-darwin-arm64/-/rollup-darwin-arm64-4.22.4.tgz", + "integrity": "sha512-xMM9ORBqu81jyMKCDP+SZDhnX2QEVQzTcC6G18KlTQEzWK8r/oNZtKuZaCcHhnsa6fEeOBionoyl5JsAbE/36Q==", + "cpu": [ + "arm64" + ], + "dev": true, + "optional": true, + "os": [ + "darwin" + ] + }, + "node_modules/@rollup/rollup-darwin-x64": { + "version": "4.22.4", + "resolved": "https://registry.npmjs.org/@rollup/rollup-darwin-x64/-/rollup-darwin-x64-4.22.4.tgz", + "integrity": "sha512-aJJyYKQwbHuhTUrjWjxEvGnNNBCnmpHDvrb8JFDbeSH3m2XdHcxDd3jthAzvmoI8w/kSjd2y0udT+4okADsZIw==", + "cpu": [ + "x64" + ], + "dev": true, + "optional": true, + "os": [ + "darwin" + ] + }, + "node_modules/@rollup/rollup-linux-arm-gnueabihf": { + "version": "4.22.4", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm-gnueabihf/-/rollup-linux-arm-gnueabihf-4.22.4.tgz", + "integrity": "sha512-j63YtCIRAzbO+gC2L9dWXRh5BFetsv0j0va0Wi9epXDgU/XUi5dJKo4USTttVyK7fGw2nPWK0PbAvyliz50SCQ==", + "cpu": [ + "arm" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@rollup/rollup-linux-arm-musleabihf": { + "version": "4.22.4", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm-musleabihf/-/rollup-linux-arm-musleabihf-4.22.4.tgz", + "integrity": "sha512-dJnWUgwWBX1YBRsuKKMOlXCzh2Wu1mlHzv20TpqEsfdZLb3WoJW2kIEsGwLkroYf24IrPAvOT/ZQ2OYMV6vlrg==", + "cpu": [ + "arm" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@rollup/rollup-linux-arm64-gnu": { + "version": "4.22.4", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm64-gnu/-/rollup-linux-arm64-gnu-4.22.4.tgz", + "integrity": "sha512-AdPRoNi3NKVLolCN/Sp4F4N1d98c4SBnHMKoLuiG6RXgoZ4sllseuGioszumnPGmPM2O7qaAX/IJdeDU8f26Aw==", + "cpu": [ + "arm64" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@rollup/rollup-linux-arm64-musl": { + "version": "4.22.4", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm64-musl/-/rollup-linux-arm64-musl-4.22.4.tgz", + "integrity": "sha512-Gl0AxBtDg8uoAn5CCqQDMqAx22Wx22pjDOjBdmG0VIWX3qUBHzYmOKh8KXHL4UpogfJ14G4wk16EQogF+v8hmA==", + "cpu": [ + "arm64" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@rollup/rollup-linux-powerpc64le-gnu": { + "version": "4.22.4", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-powerpc64le-gnu/-/rollup-linux-powerpc64le-gnu-4.22.4.tgz", + "integrity": "sha512-3aVCK9xfWW1oGQpTsYJJPF6bfpWfhbRnhdlyhak2ZiyFLDaayz0EP5j9V1RVLAAxlmWKTDfS9wyRyY3hvhPoOg==", + "cpu": [ + "ppc64" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@rollup/rollup-linux-riscv64-gnu": { + "version": "4.22.4", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-riscv64-gnu/-/rollup-linux-riscv64-gnu-4.22.4.tgz", + "integrity": "sha512-ePYIir6VYnhgv2C5Xe9u+ico4t8sZWXschR6fMgoPUK31yQu7hTEJb7bCqivHECwIClJfKgE7zYsh1qTP3WHUA==", + "cpu": [ + "riscv64" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@rollup/rollup-linux-s390x-gnu": { + "version": "4.22.4", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-s390x-gnu/-/rollup-linux-s390x-gnu-4.22.4.tgz", + "integrity": "sha512-GqFJ9wLlbB9daxhVlrTe61vJtEY99/xB3C8e4ULVsVfflcpmR6c8UZXjtkMA6FhNONhj2eA5Tk9uAVw5orEs4Q==", + "cpu": [ + "s390x" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@rollup/rollup-linux-x64-gnu": { + "version": "4.22.4", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-x64-gnu/-/rollup-linux-x64-gnu-4.22.4.tgz", + "integrity": "sha512-87v0ol2sH9GE3cLQLNEy0K/R0pz1nvg76o8M5nhMR0+Q+BBGLnb35P0fVz4CQxHYXaAOhE8HhlkaZfsdUOlHwg==", + "cpu": [ + "x64" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@rollup/rollup-linux-x64-musl": { + "version": "4.22.4", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-x64-musl/-/rollup-linux-x64-musl-4.22.4.tgz", + "integrity": "sha512-UV6FZMUgePDZrFjrNGIWzDo/vABebuXBhJEqrHxrGiU6HikPy0Z3LfdtciIttEUQfuDdCn8fqh7wiFJjCNwO+g==", + "cpu": [ + "x64" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@rollup/rollup-win32-arm64-msvc": { + "version": "4.22.4", + "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-arm64-msvc/-/rollup-win32-arm64-msvc-4.22.4.tgz", + "integrity": "sha512-BjI+NVVEGAXjGWYHz/vv0pBqfGoUH0IGZ0cICTn7kB9PyjrATSkX+8WkguNjWoj2qSr1im/+tTGRaY+4/PdcQw==", + "cpu": [ + "arm64" + ], + "dev": true, + "optional": true, + "os": [ + "win32" + ] + }, + "node_modules/@rollup/rollup-win32-ia32-msvc": { + "version": "4.22.4", + "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-ia32-msvc/-/rollup-win32-ia32-msvc-4.22.4.tgz", + "integrity": "sha512-SiWG/1TuUdPvYmzmYnmd3IEifzR61Tragkbx9D3+R8mzQqDBz8v+BvZNDlkiTtI9T15KYZhP0ehn3Dld4n9J5g==", + "cpu": [ + "ia32" + ], + "dev": true, + "optional": true, + "os": [ + "win32" + ] + }, + "node_modules/@rollup/rollup-win32-x64-msvc": { + "version": "4.22.4", + "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-x64-msvc/-/rollup-win32-x64-msvc-4.22.4.tgz", + "integrity": "sha512-j8pPKp53/lq9lMXN57S8cFz0MynJk8OWNuUnXct/9KCpKU7DgU3bYMJhwWmcqC0UU29p8Lr0/7KEVcaM6bf47Q==", + "cpu": [ + "x64" + ], + "dev": true, + "optional": true, + "os": [ + "win32" + ] + }, + "node_modules/@types/babel__core": { + "version": "7.20.5", + "resolved": "https://registry.npmjs.org/@types/babel__core/-/babel__core-7.20.5.tgz", + "integrity": "sha512-qoQprZvz5wQFJwMDqeseRXWv3rqMvhgpbXFfVyWhbx9X47POIA6i/+dXefEmZKoAgOaTdaIgNSMqMIU61yRyzA==", + "dev": true, + "dependencies": { + "@babel/parser": "^7.20.7", + "@babel/types": "^7.20.7", + "@types/babel__generator": "*", + "@types/babel__template": "*", + "@types/babel__traverse": "*" + } + }, + "node_modules/@types/babel__generator": { + "version": "7.6.8", + "resolved": "https://registry.npmjs.org/@types/babel__generator/-/babel__generator-7.6.8.tgz", + "integrity": "sha512-ASsj+tpEDsEiFr1arWrlN6V3mdfjRMZt6LtK/Vp/kreFLnr5QH5+DhvD5nINYZXzwJvXeGq+05iUXcAzVrqWtw==", + "dev": true, + "dependencies": { + "@babel/types": "^7.0.0" + } + }, + "node_modules/@types/babel__template": { + "version": "7.4.4", + "resolved": "https://registry.npmjs.org/@types/babel__template/-/babel__template-7.4.4.tgz", + "integrity": "sha512-h/NUaSyG5EyxBIp8YRxo4RMe2/qQgvyowRwVMzhYhBCONbW8PUsg4lkFMrhgZhUe5z3L3MiLDuvyJ/CaPa2A8A==", + "dev": true, + "dependencies": { + "@babel/parser": "^7.1.0", + "@babel/types": "^7.0.0" + } + }, + "node_modules/@types/babel__traverse": { + "version": "7.20.6", + "resolved": "https://registry.npmjs.org/@types/babel__traverse/-/babel__traverse-7.20.6.tgz", + "integrity": "sha512-r1bzfrm0tomOI8g1SzvCaQHo6Lcv6zu0EA+W2kHrt8dyrHQxGzBBL4kdkzIS+jBMV+EYcMAEAqXqYaLJq5rOZg==", + "dev": true, + "dependencies": { + "@babel/types": "^7.20.7" + } + }, + "node_modules/@types/estree": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/@types/estree/-/estree-1.0.5.tgz", + "integrity": "sha512-/kYRxGDLWzHOB7q+wtSUQlFrtcdUccpfy+X+9iMBpHK8QLLhx2wIPYuS5DYtR9Wa/YlZAbIovy7qVdB1Aq6Lyw==", + "dev": true + }, + "node_modules/@types/node": { + "version": "22.6.1", + "resolved": "https://registry.npmjs.org/@types/node/-/node-22.6.1.tgz", + "integrity": "sha512-V48tCfcKb/e6cVUigLAaJDAILdMP0fUW6BidkPK4GpGjXcfbnoHasCZDwz3N3yVt5we2RHm4XTQCpv0KJz9zqw==", + "dependencies": { + "undici-types": "~6.19.2" + } + }, + "node_modules/@types/prop-types": { + "version": "15.7.13", + "resolved": "https://registry.npmjs.org/@types/prop-types/-/prop-types-15.7.13.tgz", + "integrity": "sha512-hCZTSvwbzWGvhqxp/RqVqwU999pBf2vp7hzIjiYOsl8wqOmUxkQ6ddw1cV3l8811+kdUFus/q4d1Y3E3SyEifA==", + "devOptional": true + }, + "node_modules/@types/react": { + "version": "18.3.8", + "resolved": "https://registry.npmjs.org/@types/react/-/react-18.3.8.tgz", + "integrity": "sha512-syBUrW3/XpnW4WJ41Pft+I+aPoDVbrBVQGEnbD7NijDGlVC+8gV/XKRY+7vMDlfPpbwYt0l1vd/Sj8bJGMbs9Q==", + "devOptional": true, + "dependencies": { + "@types/prop-types": "*", + "csstype": "^3.0.2" + } + }, + "node_modules/@types/react-dom": { + "version": "18.3.0", + "resolved": "https://registry.npmjs.org/@types/react-dom/-/react-dom-18.3.0.tgz", + "integrity": "sha512-EhwApuTmMBmXuFOikhQLIBUn6uFg81SwLMOAUgodJF14SOBOCMdU04gDoYi0WOJJHD144TL32z4yDqCW3dnkQg==", + "dev": true, + "dependencies": { + "@types/react": "*" + } + }, + "node_modules/@ungap/structured-clone": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/@ungap/structured-clone/-/structured-clone-1.2.0.tgz", + "integrity": "sha512-zuVdFrMJiuCDQUMCzQaD6KL28MjnqqN8XnAqiEq9PNm/hCPTSGfrXCOfwj1ow4LFb/tNymJPwsNbVePc1xFqrQ==", + "dev": true + }, + "node_modules/@vitejs/plugin-react": { + "version": "4.3.1", + "resolved": "https://registry.npmjs.org/@vitejs/plugin-react/-/plugin-react-4.3.1.tgz", + "integrity": "sha512-m/V2syj5CuVnaxcUJOQRel/Wr31FFXRFlnOoq1TVtkCxsY5veGMTEmpWHndrhB2U8ScHtCQB1e+4hWYExQc6Lg==", + "dev": true, + "dependencies": { + "@babel/core": "^7.24.5", + "@babel/plugin-transform-react-jsx-self": "^7.24.5", + "@babel/plugin-transform-react-jsx-source": "^7.24.1", + "@types/babel__core": "^7.20.5", + "react-refresh": "^0.14.2" + }, + "engines": { + "node": "^14.18.0 || >=16.0.0" + }, + "peerDependencies": { + "vite": "^4.2.0 || ^5.0.0" + } + }, + "node_modules/acorn": { + "version": "8.12.1", + "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.12.1.tgz", + "integrity": "sha512-tcpGyI9zbizT9JbV6oYE477V6mTlXvvi0T0G3SNIYE2apm/G5huBa1+K89VGeovbg+jycCrfhl3ADxErOuO6Jg==", + "dev": true, + "bin": { + "acorn": "bin/acorn" + }, + "engines": { + "node": ">=0.4.0" + } + }, + "node_modules/acorn-jsx": { + "version": "5.3.2", + "resolved": "https://registry.npmjs.org/acorn-jsx/-/acorn-jsx-5.3.2.tgz", + "integrity": "sha512-rq9s+JNhf0IChjtDXxllJ7g41oZk5SlXtp0LHwyA5cejwn7vKmKp4pPri6YEePv2PU65sAsegbXtIinmDFDXgQ==", + "dev": true, + "peerDependencies": { + "acorn": "^6.0.0 || ^7.0.0 || ^8.0.0" + } + }, + "node_modules/ajv": { + "version": "6.12.6", + "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.12.6.tgz", + "integrity": "sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==", + "dev": true, + "dependencies": { + "fast-deep-equal": "^3.1.1", + "fast-json-stable-stringify": "^2.0.0", + "json-schema-traverse": "^0.4.1", + "uri-js": "^4.2.2" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/epoberezkin" + } + }, + "node_modules/ansi-regex": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz", + "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==", + "engines": { + "node": ">=8" + } + }, + "node_modules/ansi-styles": { + "version": "3.2.1", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz", + "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==", + "dev": true, + "dependencies": { + "color-convert": "^1.9.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/argparse": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/argparse/-/argparse-2.0.1.tgz", + "integrity": "sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==", + "dev": true + }, + "node_modules/array-buffer-byte-length": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/array-buffer-byte-length/-/array-buffer-byte-length-1.0.1.tgz", + "integrity": "sha512-ahC5W1xgou+KTXix4sAO8Ki12Q+jf4i0+tmk3sC+zgcynshkHxzpXdImBehiUYKKKDwvfFiJl1tZt6ewscS1Mg==", + "dev": true, + "dependencies": { + "call-bind": "^1.0.5", + "is-array-buffer": "^3.0.4" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/array-includes": { + "version": "3.1.8", + "resolved": "https://registry.npmjs.org/array-includes/-/array-includes-3.1.8.tgz", + "integrity": "sha512-itaWrbYbqpGXkGhZPGUulwnhVf5Hpy1xiCFsGqyIGglbBxmG5vSjxQen3/WGOjPpNEv1RtBLKxbmVXm8HpJStQ==", + "dev": true, + "dependencies": { + "call-bind": "^1.0.7", + "define-properties": "^1.2.1", + "es-abstract": "^1.23.2", + "es-object-atoms": "^1.0.0", + "get-intrinsic": "^1.2.4", + "is-string": "^1.0.7" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/array.prototype.findlast": { + "version": "1.2.5", + "resolved": "https://registry.npmjs.org/array.prototype.findlast/-/array.prototype.findlast-1.2.5.tgz", + "integrity": "sha512-CVvd6FHg1Z3POpBLxO6E6zr+rSKEQ9L6rZHAaY7lLfhKsWYUBBOuMs0e9o24oopj6H+geRCX0YJ+TJLBK2eHyQ==", + "dev": true, + "dependencies": { + "call-bind": "^1.0.7", + "define-properties": "^1.2.1", + "es-abstract": "^1.23.2", + "es-errors": "^1.3.0", + "es-object-atoms": "^1.0.0", + "es-shim-unscopables": "^1.0.2" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/array.prototype.flat": { + "version": "1.3.2", + "resolved": "https://registry.npmjs.org/array.prototype.flat/-/array.prototype.flat-1.3.2.tgz", + "integrity": "sha512-djYB+Zx2vLewY8RWlNCUdHjDXs2XOgm602S9E7P/UpHgfeHL00cRiIF+IN/G/aUJ7kGPb6yO/ErDI5V2s8iycA==", + "dev": true, + "dependencies": { + "call-bind": "^1.0.2", + "define-properties": "^1.2.0", + "es-abstract": "^1.22.1", + "es-shim-unscopables": "^1.0.0" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/array.prototype.flatmap": { + "version": "1.3.2", + "resolved": "https://registry.npmjs.org/array.prototype.flatmap/-/array.prototype.flatmap-1.3.2.tgz", + "integrity": "sha512-Ewyx0c9PmpcsByhSW4r+9zDU7sGjFc86qf/kKtuSCRdhfbk0SNLLkaT5qvcHnRGgc5NP/ly/y+qkXkqONX54CQ==", + "dev": true, + "dependencies": { + "call-bind": "^1.0.2", + "define-properties": "^1.2.0", + "es-abstract": "^1.22.1", + "es-shim-unscopables": "^1.0.0" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/array.prototype.tosorted": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/array.prototype.tosorted/-/array.prototype.tosorted-1.1.4.tgz", + "integrity": "sha512-p6Fx8B7b7ZhL/gmUsAy0D15WhvDccw3mnGNbZpi3pmeJdxtWsj2jEaI4Y6oo3XiHfzuSgPwKc04MYt6KgvC/wA==", + "dev": true, + "dependencies": { + "call-bind": "^1.0.7", + "define-properties": "^1.2.1", + "es-abstract": "^1.23.3", + "es-errors": "^1.3.0", + "es-shim-unscopables": "^1.0.2" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/arraybuffer.prototype.slice": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/arraybuffer.prototype.slice/-/arraybuffer.prototype.slice-1.0.3.tgz", + "integrity": "sha512-bMxMKAjg13EBSVscxTaYA4mRc5t1UAXa2kXiGTNfZ079HIWXEkKmkgFrh/nJqamaLSrXO5H4WFFkPEaLJWbs3A==", + "dev": true, + "dependencies": { + "array-buffer-byte-length": "^1.0.1", + "call-bind": "^1.0.5", + "define-properties": "^1.2.1", + "es-abstract": "^1.22.3", + "es-errors": "^1.2.1", + "get-intrinsic": "^1.2.3", + "is-array-buffer": "^3.0.4", + "is-shared-array-buffer": "^1.0.2" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/available-typed-arrays": { + "version": "1.0.7", + "resolved": "https://registry.npmjs.org/available-typed-arrays/-/available-typed-arrays-1.0.7.tgz", + "integrity": "sha512-wvUjBtSGN7+7SjNpq/9M2Tg350UZD3q62IFZLbRAR1bSMlCo1ZaeW+BJ+D090e4hIIZLBcTDWe4Mh4jvUDajzQ==", + "dev": true, + "dependencies": { + "possible-typed-array-names": "^1.0.0" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/balanced-match": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.2.tgz", + "integrity": "sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==", + "dev": true + }, + "node_modules/brace-expansion": { + "version": "1.1.11", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", + "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==", + "dev": true, + "dependencies": { + "balanced-match": "^1.0.0", + "concat-map": "0.0.1" + } + }, + "node_modules/browserslist": { + "version": "4.23.3", + "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.23.3.tgz", + "integrity": "sha512-btwCFJVjI4YWDNfau8RhZ+B1Q/VLoUITrm3RlP6y1tYGWIOa+InuYiRGXUBXo8nA1qKmHMyLB/iVQg5TT4eFoA==", + "dev": true, + "funding": [ + { + "type": "opencollective", + "url": "https://opencollective.com/browserslist" + }, + { + "type": "tidelift", + "url": "https://tidelift.com/funding/github/npm/browserslist" + }, + { + "type": "github", + "url": "https://github.com/sponsors/ai" + } + ], + "dependencies": { + "caniuse-lite": "^1.0.30001646", + "electron-to-chromium": "^1.5.4", + "node-releases": "^2.0.18", + "update-browserslist-db": "^1.1.0" + }, + "bin": { + "browserslist": "cli.js" + }, + "engines": { + "node": "^6 || ^7 || ^8 || ^9 || ^10 || ^11 || ^12 || >=13.7" + } + }, + "node_modules/call-bind": { + "version": "1.0.7", + "resolved": "https://registry.npmjs.org/call-bind/-/call-bind-1.0.7.tgz", + "integrity": "sha512-GHTSNSYICQ7scH7sZ+M2rFopRoLh8t2bLSW6BbgrtLsahOIB5iyAVJf9GjWK3cYTDaMj4XdBpM1cA6pIS0Kv2w==", + "dev": true, + "dependencies": { + "es-define-property": "^1.0.0", + "es-errors": "^1.3.0", + "function-bind": "^1.1.2", + "get-intrinsic": "^1.2.4", + "set-function-length": "^1.2.1" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/callsites": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/callsites/-/callsites-3.1.0.tgz", + "integrity": "sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ==", + "dev": true, + "engines": { + "node": ">=6" + } + }, + "node_modules/caniuse-lite": { + "version": "1.0.30001663", + "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001663.tgz", + "integrity": "sha512-o9C3X27GLKbLeTYZ6HBOLU1tsAcBZsLis28wrVzddShCS16RujjHp9GDHKZqrB3meE0YjhawvMFsGb/igqiPzA==", + "dev": true, + "funding": [ + { + "type": "opencollective", + "url": "https://opencollective.com/browserslist" + }, + { + "type": "tidelift", + "url": "https://tidelift.com/funding/github/npm/caniuse-lite" + }, + { + "type": "github", + "url": "https://github.com/sponsors/ai" + } + ] + }, + "node_modules/chalk": { + "version": "2.4.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz", + "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==", + "dev": true, + "dependencies": { + "ansi-styles": "^3.2.1", + "escape-string-regexp": "^1.0.5", + "supports-color": "^5.3.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/cliui": { + "version": "8.0.1", + "resolved": "https://registry.npmjs.org/cliui/-/cliui-8.0.1.tgz", + "integrity": "sha512-BSeNnyus75C4//NQ9gQt1/csTXyo/8Sb+afLAkzAptFuMsod9HFokGNudZpi/oQV73hnVK+sR+5PVRMd+Dr7YQ==", + "dependencies": { + "string-width": "^4.2.0", + "strip-ansi": "^6.0.1", + "wrap-ansi": "^7.0.0" + }, + "engines": { + "node": ">=12" + } + }, + "node_modules/clsx": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/clsx/-/clsx-2.1.1.tgz", + "integrity": "sha512-eYm0QWBtUrBWZWG0d386OGAw16Z995PiOVo2B7bjWSbHedGl5e0ZWaq65kOGgUSNesEIDkB9ISbTg/JK9dhCZA==", + "engines": { + "node": ">=6" + } + }, + "node_modules/color-convert": { + "version": "1.9.3", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.3.tgz", + "integrity": "sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==", + "dev": true, + "dependencies": { + "color-name": "1.1.3" + } + }, + "node_modules/color-name": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz", + "integrity": "sha512-72fSenhMw2HZMTVHeCA9KCmpEIbzWiQsjN+BHcBbS9vr1mtt+vJjPdksIBNUmKAW8TFUDPJK5SUU3QhE9NEXDw==", + "dev": true + }, + "node_modules/concat-map": { + "version": "0.0.1", + "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz", + "integrity": "sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg==", + "dev": true + }, + "node_modules/convert-source-map": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/convert-source-map/-/convert-source-map-2.0.0.tgz", + "integrity": "sha512-Kvp459HrV2FEJ1CAsi1Ku+MY3kasH19TFykTz2xWmMeq6bk2NU3XXvfJ+Q61m0xktWwt+1HSYf3JZsTms3aRJg==", + "dev": true + }, + "node_modules/cross-spawn": { + "version": "7.0.3", + "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-7.0.3.tgz", + "integrity": "sha512-iRDPJKUPVEND7dHPO8rkbOnPpyDygcDFtWjpeWNCgy8WP2rXcxXL8TskReQl6OrB2G7+UJrags1q15Fudc7G6w==", + "dev": true, + "dependencies": { + "path-key": "^3.1.0", + "shebang-command": "^2.0.0", + "which": "^2.0.1" + }, + "engines": { + "node": ">= 8" + } + }, + "node_modules/csstype": { + "version": "3.1.3", + "resolved": "https://registry.npmjs.org/csstype/-/csstype-3.1.3.tgz", + "integrity": "sha512-M1uQkMl8rQK/szD0LNhtqxIPLpimGm8sOBwU7lLnCpSbTyY3yeU1Vc7l4KT5zT4s/yOxHH5O7tIuuLOCnLADRw==", + "devOptional": true + }, + "node_modules/data-view-buffer": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/data-view-buffer/-/data-view-buffer-1.0.1.tgz", + "integrity": "sha512-0lht7OugA5x3iJLOWFhWK/5ehONdprk0ISXqVFn/NFrDu+cuc8iADFrGQz5BnRK7LLU3JmkbXSxaqX+/mXYtUA==", + "dev": true, + "dependencies": { + "call-bind": "^1.0.6", + "es-errors": "^1.3.0", + "is-data-view": "^1.0.1" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/data-view-byte-length": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/data-view-byte-length/-/data-view-byte-length-1.0.1.tgz", + "integrity": "sha512-4J7wRJD3ABAzr8wP+OcIcqq2dlUKp4DVflx++hs5h5ZKydWMI6/D/fAot+yh6g2tHh8fLFTvNOaVN357NvSrOQ==", + "dev": true, + "dependencies": { + "call-bind": "^1.0.7", + "es-errors": "^1.3.0", + "is-data-view": "^1.0.1" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/data-view-byte-offset": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/data-view-byte-offset/-/data-view-byte-offset-1.0.0.tgz", + "integrity": "sha512-t/Ygsytq+R995EJ5PZlD4Cu56sWa8InXySaViRzw9apusqsOO2bQP+SbYzAhR0pFKoB+43lYy8rWban9JSuXnA==", + "dev": true, + "dependencies": { + "call-bind": "^1.0.6", + "es-errors": "^1.3.0", + "is-data-view": "^1.0.1" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/debug": { + "version": "4.3.7", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.7.tgz", + "integrity": "sha512-Er2nc/H7RrMXZBFCEim6TCmMk02Z8vLC2Rbi1KEBggpo0fS6l0S1nnapwmIi3yW/+GOJap1Krg4w0Hg80oCqgQ==", + "dev": true, + "dependencies": { + "ms": "^2.1.3" + }, + "engines": { + "node": ">=6.0" + }, + "peerDependenciesMeta": { + "supports-color": { + "optional": true + } + } + }, + "node_modules/deep-is": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/deep-is/-/deep-is-0.1.4.tgz", + "integrity": "sha512-oIPzksmTg4/MriiaYGO+okXDT7ztn/w3Eptv/+gSIdMdKsJo0u4CfYNFJPy+4SKMuCqGw2wxnA+URMg3t8a/bQ==", + "dev": true + }, + "node_modules/define-data-property": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/define-data-property/-/define-data-property-1.1.4.tgz", + "integrity": "sha512-rBMvIzlpA8v6E+SJZoo++HAYqsLrkg7MSfIinMPFhmkorw7X+dOXVJQs+QT69zGkzMyfDnIMN2Wid1+NbL3T+A==", + "dev": true, + "dependencies": { + "es-define-property": "^1.0.0", + "es-errors": "^1.3.0", + "gopd": "^1.0.1" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/define-properties": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/define-properties/-/define-properties-1.2.1.tgz", + "integrity": "sha512-8QmQKqEASLd5nx0U1B1okLElbUuuttJ/AnYmRXbbbGDWh6uS208EjD4Xqq/I9wK7u0v6O08XhTWnt5XtEbR6Dg==", + "dev": true, + "dependencies": { + "define-data-property": "^1.0.1", + "has-property-descriptors": "^1.0.0", + "object-keys": "^1.1.1" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/doctrine": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/doctrine/-/doctrine-3.0.0.tgz", + "integrity": "sha512-yS+Q5i3hBf7GBkd4KG8a7eBNNWNGLTaEwwYWUijIYM7zrlYDM0BFXHjjPWlWZ1Rg7UaddZeIDmi9jF3HmqiQ2w==", + "dev": true, + "dependencies": { + "esutils": "^2.0.2" + }, + "engines": { + "node": ">=6.0.0" + } + }, + "node_modules/electron-to-chromium": { + "version": "1.5.28", + "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.5.28.tgz", + "integrity": "sha512-VufdJl+rzaKZoYVUijN13QcXVF5dWPZANeFTLNy+OSpHdDL5ynXTF35+60RSBbaQYB1ae723lQXHCrf4pyLsMw==", + "dev": true + }, + "node_modules/emoji-picker-react": { + "version": "4.12.0", + "resolved": "https://registry.npmjs.org/emoji-picker-react/-/emoji-picker-react-4.12.0.tgz", + "integrity": "sha512-q2c8UcZH0eRIMj41bj0k1akTjk69tsu+E7EzkW7giN66iltF6H9LQvQvw6ugscsxdC+1lmt3WZpQkkY65J95tg==", + "dependencies": { + "flairup": "1.0.0" + }, + "engines": { + "node": ">=10" + }, + "peerDependencies": { + "react": ">=16" + } + }, + "node_modules/emoji-regex": { + "version": "8.0.0", + "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz", + "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==" + }, + "node_modules/es-abstract": { + "version": "1.23.3", + "resolved": "https://registry.npmjs.org/es-abstract/-/es-abstract-1.23.3.tgz", + "integrity": "sha512-e+HfNH61Bj1X9/jLc5v1owaLYuHdeHHSQlkhCBiTK8rBvKaULl/beGMxwrMXjpYrv4pz22BlY570vVePA2ho4A==", + "dev": true, + "dependencies": { + "array-buffer-byte-length": "^1.0.1", + "arraybuffer.prototype.slice": "^1.0.3", + "available-typed-arrays": "^1.0.7", + "call-bind": "^1.0.7", + "data-view-buffer": "^1.0.1", + "data-view-byte-length": "^1.0.1", + "data-view-byte-offset": "^1.0.0", + "es-define-property": "^1.0.0", + "es-errors": "^1.3.0", + "es-object-atoms": "^1.0.0", + "es-set-tostringtag": "^2.0.3", + "es-to-primitive": "^1.2.1", + "function.prototype.name": "^1.1.6", + "get-intrinsic": "^1.2.4", + "get-symbol-description": "^1.0.2", + "globalthis": "^1.0.3", + "gopd": "^1.0.1", + "has-property-descriptors": "^1.0.2", + "has-proto": "^1.0.3", + "has-symbols": "^1.0.3", + "hasown": "^2.0.2", + "internal-slot": "^1.0.7", + "is-array-buffer": "^3.0.4", + "is-callable": "^1.2.7", + "is-data-view": "^1.0.1", + "is-negative-zero": "^2.0.3", + "is-regex": "^1.1.4", + "is-shared-array-buffer": "^1.0.3", + "is-string": "^1.0.7", + "is-typed-array": "^1.1.13", + "is-weakref": "^1.0.2", + "object-inspect": "^1.13.1", + "object-keys": "^1.1.1", + "object.assign": "^4.1.5", + "regexp.prototype.flags": "^1.5.2", + "safe-array-concat": "^1.1.2", + "safe-regex-test": "^1.0.3", + "string.prototype.trim": "^1.2.9", + "string.prototype.trimend": "^1.0.8", + "string.prototype.trimstart": "^1.0.8", + "typed-array-buffer": "^1.0.2", + "typed-array-byte-length": "^1.0.1", + "typed-array-byte-offset": "^1.0.2", + "typed-array-length": "^1.0.6", + "unbox-primitive": "^1.0.2", + "which-typed-array": "^1.1.15" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/es-define-property": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/es-define-property/-/es-define-property-1.0.0.tgz", + "integrity": "sha512-jxayLKShrEqqzJ0eumQbVhTYQM27CfT1T35+gCgDFoL82JLsXqTJ76zv6A0YLOgEnLUMvLzsDsGIrl8NFpT2gQ==", + "dev": true, + "dependencies": { + "get-intrinsic": "^1.2.4" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/es-errors": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/es-errors/-/es-errors-1.3.0.tgz", + "integrity": "sha512-Zf5H2Kxt2xjTvbJvP2ZWLEICxA6j+hAmMzIlypy4xcBg1vKVnx89Wy0GbS+kf5cwCVFFzdCFh2XSCFNULS6csw==", + "dev": true, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/es-iterator-helpers": { + "version": "1.0.19", + "resolved": "https://registry.npmjs.org/es-iterator-helpers/-/es-iterator-helpers-1.0.19.tgz", + "integrity": "sha512-zoMwbCcH5hwUkKJkT8kDIBZSz9I6mVG//+lDCinLCGov4+r7NIy0ld8o03M0cJxl2spVf6ESYVS6/gpIfq1FFw==", + "dev": true, + "dependencies": { + "call-bind": "^1.0.7", + "define-properties": "^1.2.1", + "es-abstract": "^1.23.3", + "es-errors": "^1.3.0", + "es-set-tostringtag": "^2.0.3", + "function-bind": "^1.1.2", + "get-intrinsic": "^1.2.4", + "globalthis": "^1.0.3", + "has-property-descriptors": "^1.0.2", + "has-proto": "^1.0.3", + "has-symbols": "^1.0.3", + "internal-slot": "^1.0.7", + "iterator.prototype": "^1.1.2", + "safe-array-concat": "^1.1.2" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/es-object-atoms": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/es-object-atoms/-/es-object-atoms-1.0.0.tgz", + "integrity": "sha512-MZ4iQ6JwHOBQjahnjwaC1ZtIBH+2ohjamzAO3oaHcXYup7qxjF2fixyH+Q71voWHeOkI2q/TnJao/KfXYIZWbw==", + "dev": true, + "dependencies": { + "es-errors": "^1.3.0" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/es-set-tostringtag": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/es-set-tostringtag/-/es-set-tostringtag-2.0.3.tgz", + "integrity": "sha512-3T8uNMC3OQTHkFUsFq8r/BwAXLHvU/9O9mE0fBc/MY5iq/8H7ncvO947LmYA6ldWw9Uh8Yhf25zu6n7nML5QWQ==", + "dev": true, + "dependencies": { + "get-intrinsic": "^1.2.4", + "has-tostringtag": "^1.0.2", + "hasown": "^2.0.1" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/es-shim-unscopables": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/es-shim-unscopables/-/es-shim-unscopables-1.0.2.tgz", + "integrity": "sha512-J3yBRXCzDu4ULnQwxyToo/OjdMx6akgVC7K6few0a7F/0wLtmKKN7I73AH5T2836UuXRqN7Qg+IIUw/+YJksRw==", + "dev": true, + "dependencies": { + "hasown": "^2.0.0" + } + }, + "node_modules/es-to-primitive": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/es-to-primitive/-/es-to-primitive-1.2.1.tgz", + "integrity": "sha512-QCOllgZJtaUo9miYBcLChTUaHNjJF3PYs1VidD7AwiEj1kYxKeQTctLAezAOH5ZKRH0g2IgPn6KwB4IT8iRpvA==", + "dev": true, + "dependencies": { + "is-callable": "^1.1.4", + "is-date-object": "^1.0.1", + "is-symbol": "^1.0.2" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/esbuild": { + "version": "0.21.5", + "resolved": "https://registry.npmjs.org/esbuild/-/esbuild-0.21.5.tgz", + "integrity": "sha512-mg3OPMV4hXywwpoDxu3Qda5xCKQi+vCTZq8S9J/EpkhB2HzKXq4SNFZE3+NK93JYxc8VMSep+lOUSC/RVKaBqw==", + "dev": true, + "hasInstallScript": true, + "bin": { + "esbuild": "bin/esbuild" + }, + "engines": { + "node": ">=12" + }, + "optionalDependencies": { + "@esbuild/aix-ppc64": "0.21.5", + "@esbuild/android-arm": "0.21.5", + "@esbuild/android-arm64": "0.21.5", + "@esbuild/android-x64": "0.21.5", + "@esbuild/darwin-arm64": "0.21.5", + "@esbuild/darwin-x64": "0.21.5", + "@esbuild/freebsd-arm64": "0.21.5", + "@esbuild/freebsd-x64": "0.21.5", + "@esbuild/linux-arm": "0.21.5", + "@esbuild/linux-arm64": "0.21.5", + "@esbuild/linux-ia32": "0.21.5", + "@esbuild/linux-loong64": "0.21.5", + "@esbuild/linux-mips64el": "0.21.5", + "@esbuild/linux-ppc64": "0.21.5", + "@esbuild/linux-riscv64": "0.21.5", + "@esbuild/linux-s390x": "0.21.5", + "@esbuild/linux-x64": "0.21.5", + "@esbuild/netbsd-x64": "0.21.5", + "@esbuild/openbsd-x64": "0.21.5", + "@esbuild/sunos-x64": "0.21.5", + "@esbuild/win32-arm64": "0.21.5", + "@esbuild/win32-ia32": "0.21.5", + "@esbuild/win32-x64": "0.21.5" + } + }, + "node_modules/escalade": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/escalade/-/escalade-3.2.0.tgz", + "integrity": "sha512-WUj2qlxaQtO4g6Pq5c29GTcWGDyd8itL8zTlipgECz3JesAiiOKotd8JU6otB3PACgG6xkJUyVhboMS+bje/jA==", + "engines": { + "node": ">=6" + } + }, + "node_modules/escape-string-regexp": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz", + "integrity": "sha512-vbRorB5FUQWvla16U8R/qgaFIya2qGzwDrNmCZuYKrbdSUMG6I1ZCGQRefkRVhuOkIGVne7BQ35DSfo1qvJqFg==", + "dev": true, + "engines": { + "node": ">=0.8.0" + } + }, + "node_modules/eslint": { + "version": "8.57.1", + "resolved": "https://registry.npmjs.org/eslint/-/eslint-8.57.1.tgz", + "integrity": "sha512-ypowyDxpVSYpkXr9WPv2PAZCtNip1Mv5KTW0SCurXv/9iOpcrH9PaqUElksqEB6pChqHGDRCFTyrZlGhnLNGiA==", + "dev": true, + "dependencies": { + "@eslint-community/eslint-utils": "^4.2.0", + "@eslint-community/regexpp": "^4.6.1", + "@eslint/eslintrc": "^2.1.4", + "@eslint/js": "8.57.1", + "@humanwhocodes/config-array": "^0.13.0", + "@humanwhocodes/module-importer": "^1.0.1", + "@nodelib/fs.walk": "^1.2.8", + "@ungap/structured-clone": "^1.2.0", + "ajv": "^6.12.4", + "chalk": "^4.0.0", + "cross-spawn": "^7.0.2", + "debug": "^4.3.2", + "doctrine": "^3.0.0", + "escape-string-regexp": "^4.0.0", + "eslint-scope": "^7.2.2", + "eslint-visitor-keys": "^3.4.3", + "espree": "^9.6.1", + "esquery": "^1.4.2", + "esutils": "^2.0.2", + "fast-deep-equal": "^3.1.3", + "file-entry-cache": "^6.0.1", + "find-up": "^5.0.0", + "glob-parent": "^6.0.2", + "globals": "^13.19.0", + "graphemer": "^1.4.0", + "ignore": "^5.2.0", + "imurmurhash": "^0.1.4", + "is-glob": "^4.0.0", + "is-path-inside": "^3.0.3", + "js-yaml": "^4.1.0", + "json-stable-stringify-without-jsonify": "^1.0.1", + "levn": "^0.4.1", + "lodash.merge": "^4.6.2", + "minimatch": "^3.1.2", + "natural-compare": "^1.4.0", + "optionator": "^0.9.3", + "strip-ansi": "^6.0.1", + "text-table": "^0.2.0" + }, + "bin": { + "eslint": "bin/eslint.js" + }, + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + }, + "funding": { + "url": "https://opencollective.com/eslint" + } + }, + "node_modules/eslint-plugin-react": { + "version": "7.36.1", + "resolved": "https://registry.npmjs.org/eslint-plugin-react/-/eslint-plugin-react-7.36.1.tgz", + "integrity": "sha512-/qwbqNXZoq+VP30s1d4Nc1C5GTxjJQjk4Jzs4Wq2qzxFM7dSmuG2UkIjg2USMLh3A/aVcUNrK7v0J5U1XEGGwA==", + "dev": true, + "dependencies": { + "array-includes": "^3.1.8", + "array.prototype.findlast": "^1.2.5", + "array.prototype.flatmap": "^1.3.2", + "array.prototype.tosorted": "^1.1.4", + "doctrine": "^2.1.0", + "es-iterator-helpers": "^1.0.19", + "estraverse": "^5.3.0", + "hasown": "^2.0.2", + "jsx-ast-utils": "^2.4.1 || ^3.0.0", + "minimatch": "^3.1.2", + "object.entries": "^1.1.8", + "object.fromentries": "^2.0.8", + "object.values": "^1.2.0", + "prop-types": "^15.8.1", + "resolve": "^2.0.0-next.5", + "semver": "^6.3.1", + "string.prototype.matchall": "^4.0.11", + "string.prototype.repeat": "^1.0.0" + }, + "engines": { + "node": ">=4" + }, + "peerDependencies": { + "eslint": "^3 || ^4 || ^5 || ^6 || ^7 || ^8 || ^9.7" + } + }, + "node_modules/eslint-plugin-react-hooks": { + "version": "4.6.2", + "resolved": "https://registry.npmjs.org/eslint-plugin-react-hooks/-/eslint-plugin-react-hooks-4.6.2.tgz", + "integrity": "sha512-QzliNJq4GinDBcD8gPB5v0wh6g8q3SUi6EFF0x8N/BL9PoVs0atuGc47ozMRyOWAKdwaZ5OnbOEa3WR+dSGKuQ==", + "dev": true, + "engines": { + "node": ">=10" + }, + "peerDependencies": { + "eslint": "^3.0.0 || ^4.0.0 || ^5.0.0 || ^6.0.0 || ^7.0.0 || ^8.0.0-0" + } + }, + "node_modules/eslint-plugin-react-refresh": { + "version": "0.4.12", + "resolved": "https://registry.npmjs.org/eslint-plugin-react-refresh/-/eslint-plugin-react-refresh-0.4.12.tgz", + "integrity": "sha512-9neVjoGv20FwYtCP6CB1dzR1vr57ZDNOXst21wd2xJ/cTlM2xLq0GWVlSNTdMn/4BtP6cHYBMCSp1wFBJ9jBsg==", + "dev": true, + "peerDependencies": { + "eslint": ">=7" + } + }, + "node_modules/eslint-plugin-react/node_modules/doctrine": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/doctrine/-/doctrine-2.1.0.tgz", + "integrity": "sha512-35mSku4ZXK0vfCuHEDAwt55dg2jNajHZ1odvF+8SSr82EsZY4QmXfuWso8oEd8zRhVObSN18aM0CjSdoBX7zIw==", + "dev": true, + "dependencies": { + "esutils": "^2.0.2" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/eslint-scope": { + "version": "7.2.2", + "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-7.2.2.tgz", + "integrity": "sha512-dOt21O7lTMhDM+X9mB4GX+DZrZtCUJPL/wlcTqxyrx5IvO0IYtILdtrQGQp+8n5S0gwSVmOf9NQrjMOgfQZlIg==", + "dev": true, + "dependencies": { + "esrecurse": "^4.3.0", + "estraverse": "^5.2.0" + }, + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + }, + "funding": { + "url": "https://opencollective.com/eslint" + } + }, + "node_modules/eslint-visitor-keys": { + "version": "3.4.3", + "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-3.4.3.tgz", + "integrity": "sha512-wpc+LXeiyiisxPlEkUzU6svyS1frIO3Mgxj1fdy7Pm8Ygzguax2N3Fa/D/ag1WqbOprdI+uY6wMUl8/a2G+iag==", + "dev": true, + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + }, + "funding": { + "url": "https://opencollective.com/eslint" + } + }, + "node_modules/eslint/node_modules/ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "dev": true, + "dependencies": { + "color-convert": "^2.0.1" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, + "node_modules/eslint/node_modules/chalk": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", + "dev": true, + "dependencies": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/chalk?sponsor=1" + } + }, + "node_modules/eslint/node_modules/color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "dev": true, + "dependencies": { + "color-name": "~1.1.4" + }, + "engines": { + "node": ">=7.0.0" + } + }, + "node_modules/eslint/node_modules/color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", + "dev": true + }, + "node_modules/eslint/node_modules/escape-string-regexp": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-4.0.0.tgz", + "integrity": "sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA==", + "dev": true, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/eslint/node_modules/globals": { + "version": "13.24.0", + "resolved": "https://registry.npmjs.org/globals/-/globals-13.24.0.tgz", + "integrity": "sha512-AhO5QUcj8llrbG09iWhPU2B204J1xnPeL8kQmVorSsy+Sjj1sk8gIyh6cUocGmH4L0UuhAJy+hJMRA4mgA4mFQ==", + "dev": true, + "dependencies": { + "type-fest": "^0.20.2" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/eslint/node_modules/has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/eslint/node_modules/supports-color": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + "dev": true, + "dependencies": { + "has-flag": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/espree": { + "version": "9.6.1", + "resolved": "https://registry.npmjs.org/espree/-/espree-9.6.1.tgz", + "integrity": "sha512-oruZaFkjorTpF32kDSI5/75ViwGeZginGGy2NoOSg3Q9bnwlnmDm4HLnkl0RE3n+njDXR037aY1+x58Z/zFdwQ==", + "dev": true, + "dependencies": { + "acorn": "^8.9.0", + "acorn-jsx": "^5.3.2", + "eslint-visitor-keys": "^3.4.1" + }, + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + }, + "funding": { + "url": "https://opencollective.com/eslint" + } + }, + "node_modules/esquery": { + "version": "1.6.0", + "resolved": "https://registry.npmjs.org/esquery/-/esquery-1.6.0.tgz", + "integrity": "sha512-ca9pw9fomFcKPvFLXhBKUK90ZvGibiGOvRJNbjljY7s7uq/5YO4BOzcYtJqExdx99rF6aAcnRxHmcUHcz6sQsg==", + "dev": true, + "dependencies": { + "estraverse": "^5.1.0" + }, + "engines": { + "node": ">=0.10" + } + }, + "node_modules/esrecurse": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/esrecurse/-/esrecurse-4.3.0.tgz", + "integrity": "sha512-KmfKL3b6G+RXvP8N1vr3Tq1kL/oCFgn2NYXEtqP8/L3pKapUA4G8cFVaoF3SU323CD4XypR/ffioHmkti6/Tag==", + "dev": true, + "dependencies": { + "estraverse": "^5.2.0" + }, + "engines": { + "node": ">=4.0" + } + }, + "node_modules/estraverse": { + "version": "5.3.0", + "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-5.3.0.tgz", + "integrity": "sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==", + "dev": true, + "engines": { + "node": ">=4.0" + } + }, + "node_modules/esutils": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/esutils/-/esutils-2.0.3.tgz", + "integrity": "sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/fast-deep-equal": { + "version": "3.1.3", + "resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz", + "integrity": "sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==", + "dev": true + }, + "node_modules/fast-json-stable-stringify": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/fast-json-stable-stringify/-/fast-json-stable-stringify-2.1.0.tgz", + "integrity": "sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw==", + "dev": true + }, + "node_modules/fast-levenshtein": { + "version": "2.0.6", + "resolved": "https://registry.npmjs.org/fast-levenshtein/-/fast-levenshtein-2.0.6.tgz", + "integrity": "sha512-DCXu6Ifhqcks7TZKY3Hxp3y6qphY5SJZmrWMDrKcERSOXWQdMhU9Ig/PYrzyw/ul9jOIyh0N4M0tbC5hodg8dw==", + "dev": true + }, + "node_modules/fastq": { + "version": "1.17.1", + "resolved": "https://registry.npmjs.org/fastq/-/fastq-1.17.1.tgz", + "integrity": "sha512-sRVD3lWVIXWg6By68ZN7vho9a1pQcN/WBFaAAsDDFzlJjvoGx0P8z7V1t72grFJfJhu3YPZBuu25f7Kaw2jN1w==", + "dev": true, + "dependencies": { + "reusify": "^1.0.4" + } + }, + "node_modules/faye-websocket": { + "version": "0.11.4", + "resolved": "https://registry.npmjs.org/faye-websocket/-/faye-websocket-0.11.4.tgz", + "integrity": "sha512-CzbClwlXAuiRQAlUyfqPgvPoNKTckTPGfwZV4ZdAhVcP2lh9KUxJg2b5GkE7XbjKQ3YJnQ9z6D9ntLAlB+tP8g==", + "dependencies": { + "websocket-driver": ">=0.5.1" + }, + "engines": { + "node": ">=0.8.0" + } + }, + "node_modules/file-entry-cache": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/file-entry-cache/-/file-entry-cache-6.0.1.tgz", + "integrity": "sha512-7Gps/XWymbLk2QLYK4NzpMOrYjMhdIxXuIvy2QBsLE6ljuodKvdkWs/cpyJJ3CVIVpH0Oi1Hvg1ovbMzLdFBBg==", + "dev": true, + "dependencies": { + "flat-cache": "^3.0.4" + }, + "engines": { + "node": "^10.12.0 || >=12.0.0" + } + }, + "node_modules/find-up": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/find-up/-/find-up-5.0.0.tgz", + "integrity": "sha512-78/PXT1wlLLDgTzDs7sjq9hzz0vXD+zn+7wypEe4fXQxCmdmqfGsEPQxmiCSQI3ajFV91bVSsvNtrJRiW6nGng==", + "dev": true, + "dependencies": { + "locate-path": "^6.0.0", + "path-exists": "^4.0.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/firebase": { + "version": "10.13.2", + "resolved": "https://registry.npmjs.org/firebase/-/firebase-10.13.2.tgz", + "integrity": "sha512-YeI+TO5rJsoyZsVFx9WiN5ibdVCIigYTWwldRTMfCzrSPrJFVGao4acYj3x0EYGKDIgSgEyVBayD5BffD4Eyow==", + "dependencies": { + "@firebase/analytics": "0.10.8", + "@firebase/analytics-compat": "0.2.14", + "@firebase/app": "0.10.11", + "@firebase/app-check": "0.8.8", + "@firebase/app-check-compat": "0.3.15", + "@firebase/app-compat": "0.2.41", + "@firebase/app-types": "0.9.2", + "@firebase/auth": "1.7.9", + "@firebase/auth-compat": "0.5.14", + "@firebase/database": "1.0.8", + "@firebase/database-compat": "1.0.8", + "@firebase/firestore": "4.7.2", + "@firebase/firestore-compat": "0.3.37", + "@firebase/functions": "0.11.8", + "@firebase/functions-compat": "0.3.14", + "@firebase/installations": "0.6.9", + "@firebase/installations-compat": "0.2.9", + "@firebase/messaging": "0.12.11", + "@firebase/messaging-compat": "0.2.11", + "@firebase/performance": "0.6.9", + "@firebase/performance-compat": "0.2.9", + "@firebase/remote-config": "0.4.9", + "@firebase/remote-config-compat": "0.2.9", + "@firebase/storage": "0.13.2", + "@firebase/storage-compat": "0.3.12", + "@firebase/util": "1.10.0", + "@firebase/vertexai-preview": "0.0.4" + } + }, + "node_modules/flairup": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/flairup/-/flairup-1.0.0.tgz", + "integrity": "sha512-IKlE+pNvL2R+kVL1kEhUYqRxVqeFnjiIvHWDMLFXNaqyUdFXQM2wte44EfMYJNHkW16X991t2Zg8apKkhv7OBA==" + }, + "node_modules/flat-cache": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/flat-cache/-/flat-cache-3.2.0.tgz", + "integrity": "sha512-CYcENa+FtcUKLmhhqyctpclsq7QF38pKjZHsGNiSQF5r4FtoKDWabFDl3hzaEQMvT1LHEysw5twgLvpYYb4vbw==", + "dev": true, + "dependencies": { + "flatted": "^3.2.9", + "keyv": "^4.5.3", + "rimraf": "^3.0.2" + }, + "engines": { + "node": "^10.12.0 || >=12.0.0" + } + }, + "node_modules/flatted": { + "version": "3.3.1", + "resolved": "https://registry.npmjs.org/flatted/-/flatted-3.3.1.tgz", + "integrity": "sha512-X8cqMLLie7KsNUDSdzeN8FYK9rEt4Dt67OsG/DNGnYTSDBG4uFAJFBnUeiV+zCVAvwFy56IjM9sH51jVaEhNxw==", + "dev": true + }, + "node_modules/for-each": { + "version": "0.3.3", + "resolved": "https://registry.npmjs.org/for-each/-/for-each-0.3.3.tgz", + "integrity": "sha512-jqYfLp7mo9vIyQf8ykW2v7A+2N4QjeCeI5+Dz9XraiO1ign81wjiH7Fb9vSOWvQfNtmSa4H2RoQTrrXivdUZmw==", + "dev": true, + "dependencies": { + "is-callable": "^1.1.3" + } + }, + "node_modules/fs.realpath": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz", + "integrity": "sha512-OO0pH2lK6a0hZnAdau5ItzHPI6pUlvI7jMVnxUQRtw4owF2wk8lOSabtGDCTP4Ggrg2MbGnWO9X8K1t4+fGMDw==", + "dev": true + }, + "node_modules/fsevents": { + "version": "2.3.3", + "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-2.3.3.tgz", + "integrity": "sha512-5xoDfX+fL7faATnagmWPpbFtwh/R77WmMMqqHGS65C3vvB0YHrgF+B1YmZ3441tMj5n63k0212XNoJwzlhffQw==", + "dev": true, + "hasInstallScript": true, + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": "^8.16.0 || ^10.6.0 || >=11.0.0" + } + }, + "node_modules/function-bind": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.2.tgz", + "integrity": "sha512-7XHNxH7qX9xG5mIwxkhumTox/MIRNcOgDrxWsMt2pAr23WHp6MrRlN7FBSFpCpr+oVO0F744iUgR82nJMfG2SA==", + "dev": true, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/function.prototype.name": { + "version": "1.1.6", + "resolved": "https://registry.npmjs.org/function.prototype.name/-/function.prototype.name-1.1.6.tgz", + "integrity": "sha512-Z5kx79swU5P27WEayXM1tBi5Ze/lbIyiNgU3qyXUOf9b2rgXYyF9Dy9Cx+IQv/Lc8WCG6L82zwUPpSS9hGehIg==", + "dev": true, + "dependencies": { + "call-bind": "^1.0.2", + "define-properties": "^1.2.0", + "es-abstract": "^1.22.1", + "functions-have-names": "^1.2.3" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/functions-have-names": { + "version": "1.2.3", + "resolved": "https://registry.npmjs.org/functions-have-names/-/functions-have-names-1.2.3.tgz", + "integrity": "sha512-xckBUXyTIqT97tq2x2AMb+g163b5JFysYk0x4qxNFwbfQkmNZoiRHb6sPzI9/QV33WeuvVYBUIiD4NzNIyqaRQ==", + "dev": true, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/gensync": { + "version": "1.0.0-beta.2", + "resolved": "https://registry.npmjs.org/gensync/-/gensync-1.0.0-beta.2.tgz", + "integrity": "sha512-3hN7NaskYvMDLQY55gnW3NQ+mesEAepTqlg+VEbj7zzqEMBVNhzcGYYeqFo/TlYz6eQiFcp1HcsCZO+nGgS8zg==", + "dev": true, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/get-caller-file": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/get-caller-file/-/get-caller-file-2.0.5.tgz", + "integrity": "sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg==", + "engines": { + "node": "6.* || 8.* || >= 10.*" + } + }, + "node_modules/get-intrinsic": { + "version": "1.2.4", + "resolved": "https://registry.npmjs.org/get-intrinsic/-/get-intrinsic-1.2.4.tgz", + "integrity": "sha512-5uYhsJH8VJBTv7oslg4BznJYhDoRI6waYCxMmCdnTrcCrHA/fCFKoTFz2JKKE0HdDFUF7/oQuhzumXJK7paBRQ==", + "dev": true, + "dependencies": { + "es-errors": "^1.3.0", + "function-bind": "^1.1.2", + "has-proto": "^1.0.1", + "has-symbols": "^1.0.3", + "hasown": "^2.0.0" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/get-symbol-description": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/get-symbol-description/-/get-symbol-description-1.0.2.tgz", + "integrity": "sha512-g0QYk1dZBxGwk+Ngc+ltRH2IBp2f7zBkBMBJZCDerh6EhlhSR6+9irMCuT/09zD6qkarHUSn529sK/yL4S27mg==", + "dev": true, + "dependencies": { + "call-bind": "^1.0.5", + "es-errors": "^1.3.0", + "get-intrinsic": "^1.2.4" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/glob": { + "version": "7.2.3", + "resolved": "https://registry.npmjs.org/glob/-/glob-7.2.3.tgz", + "integrity": "sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==", + "deprecated": "Glob versions prior to v9 are no longer supported", + "dev": true, + "dependencies": { + "fs.realpath": "^1.0.0", + "inflight": "^1.0.4", + "inherits": "2", + "minimatch": "^3.1.1", + "once": "^1.3.0", + "path-is-absolute": "^1.0.0" + }, + "engines": { + "node": "*" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/glob-parent": { + "version": "6.0.2", + "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-6.0.2.tgz", + "integrity": "sha512-XxwI8EOhVQgWp6iDL+3b0r86f4d6AX6zSU55HfB4ydCEuXLXc5FcYeOu+nnGftS4TEju/11rt4KJPTMgbfmv4A==", + "dev": true, + "dependencies": { + "is-glob": "^4.0.3" + }, + "engines": { + "node": ">=10.13.0" + } + }, + "node_modules/globals": { + "version": "11.12.0", + "resolved": "https://registry.npmjs.org/globals/-/globals-11.12.0.tgz", + "integrity": "sha512-WOBp/EEGUiIsJSp7wcv/y6MO+lV9UoncWqxuFfm8eBwzWNgyfBd6Gz+IeKQ9jCmyhoH99g15M3T+QaVHFjizVA==", + "dev": true, + "engines": { + "node": ">=4" + } + }, + "node_modules/globalthis": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/globalthis/-/globalthis-1.0.4.tgz", + "integrity": "sha512-DpLKbNU4WylpxJykQujfCcwYWiV/Jhm50Goo0wrVILAv5jOr9d+H+UR3PhSCD2rCCEIg0uc+G+muBTwD54JhDQ==", + "dev": true, + "dependencies": { + "define-properties": "^1.2.1", + "gopd": "^1.0.1" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/gopd": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/gopd/-/gopd-1.0.1.tgz", + "integrity": "sha512-d65bNlIadxvpb/A2abVdlqKqV563juRnZ1Wtk6s1sIR8uNsXR70xqIzVqxVf1eTqDunwT2MkczEeaezCKTZhwA==", + "dev": true, + "dependencies": { + "get-intrinsic": "^1.1.3" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/graphemer": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/graphemer/-/graphemer-1.4.0.tgz", + "integrity": "sha512-EtKwoO6kxCL9WO5xipiHTZlSzBm7WLT627TqC/uVRd0HKmq8NXyebnNYxDoBi7wt8eTWrUrKXCOVaFq9x1kgag==", + "dev": true + }, + "node_modules/has-bigints": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/has-bigints/-/has-bigints-1.0.2.tgz", + "integrity": "sha512-tSvCKtBr9lkF0Ex0aQiP9N+OpV4zi2r/Nee5VkRDbaqv35RLYMzbwQfFSZZH0kR+Rd6302UJZ2p/bJCEoR3VoQ==", + "dev": true, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/has-flag": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz", + "integrity": "sha512-sKJf1+ceQBr4SMkvQnBDNDtf4TXpVhVGateu0t918bl30FnbE2m4vNLX+VWe/dpjlb+HugGYzW7uQXH98HPEYw==", + "dev": true, + "engines": { + "node": ">=4" + } + }, + "node_modules/has-property-descriptors": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/has-property-descriptors/-/has-property-descriptors-1.0.2.tgz", + "integrity": "sha512-55JNKuIW+vq4Ke1BjOTjM2YctQIvCT7GFzHwmfZPGo5wnrgkid0YQtnAleFSqumZm4az3n2BS+erby5ipJdgrg==", + "dev": true, + "dependencies": { + "es-define-property": "^1.0.0" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/has-proto": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/has-proto/-/has-proto-1.0.3.tgz", + "integrity": "sha512-SJ1amZAJUiZS+PhsVLf5tGydlaVB8EdFpaSO4gmiUKUOxk8qzn5AIy4ZeJUmh22znIdk/uMAUT2pl3FxzVUH+Q==", + "dev": true, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/has-symbols": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/has-symbols/-/has-symbols-1.0.3.tgz", + "integrity": "sha512-l3LCuF6MgDNwTDKkdYGEihYjt5pRPbEg46rtlmnSPlUbgmB8LOIrKJbYYFBSbnPaJexMKtiPO8hmeRjRz2Td+A==", + "dev": true, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/has-tostringtag": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/has-tostringtag/-/has-tostringtag-1.0.2.tgz", + "integrity": "sha512-NqADB8VjPFLM2V0VvHUewwwsw0ZWBaIdgo+ieHtK3hasLz4qeCRjYcqfB6AQrBggRKppKF8L52/VqdVsO47Dlw==", + "dev": true, + "dependencies": { + "has-symbols": "^1.0.3" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/hasown": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/hasown/-/hasown-2.0.2.tgz", + "integrity": "sha512-0hJU9SCPvmMzIBdZFqNPXWa6dqh7WdH0cII9y+CyS8rG3nL48Bclra9HmKhVVUHyPWNH5Y7xDwAB7bfgSjkUMQ==", + "dev": true, + "dependencies": { + "function-bind": "^1.1.2" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/http-parser-js": { + "version": "0.5.8", + "resolved": "https://registry.npmjs.org/http-parser-js/-/http-parser-js-0.5.8.tgz", + "integrity": "sha512-SGeBX54F94Wgu5RH3X5jsDtf4eHyRogWX1XGT3b4HuW3tQPM4AaBzoUji/4AAJNXCEOWZ5O0DgZmJw1947gD5Q==" + }, + "node_modules/idb": { + "version": "7.1.1", + "resolved": "https://registry.npmjs.org/idb/-/idb-7.1.1.tgz", + "integrity": "sha512-gchesWBzyvGHRO9W8tzUWFDycow5gwjvFKfyV9FF32Y7F50yZMp7mP+T2mJIWFx49zicqyC4uefHM17o6xKIVQ==" + }, + "node_modules/ignore": { + "version": "5.3.2", + "resolved": "https://registry.npmjs.org/ignore/-/ignore-5.3.2.tgz", + "integrity": "sha512-hsBTNUqQTDwkWtcdYI2i06Y/nUBEsNEDJKjWdigLvegy8kDuJAS8uRlpkkcQpyEXL0Z/pjDy5HBmMjRCJ2gq+g==", + "dev": true, + "engines": { + "node": ">= 4" + } + }, + "node_modules/import-fresh": { + "version": "3.3.0", + "resolved": "https://registry.npmjs.org/import-fresh/-/import-fresh-3.3.0.tgz", + "integrity": "sha512-veYYhQa+D1QBKznvhUHxb8faxlrwUnxseDAbAp457E0wLNio2bOSKnjYDhMj+YiAq61xrMGhQk9iXVk5FzgQMw==", + "dev": true, + "dependencies": { + "parent-module": "^1.0.0", + "resolve-from": "^4.0.0" + }, + "engines": { + "node": ">=6" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/imurmurhash": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/imurmurhash/-/imurmurhash-0.1.4.tgz", + "integrity": "sha512-JmXMZ6wuvDmLiHEml9ykzqO6lwFbof0GG4IkcGaENdCRDDmMVnny7s5HsIgHCbaq0w2MyPhDqkhTUgS2LU2PHA==", + "dev": true, + "engines": { + "node": ">=0.8.19" + } + }, + "node_modules/inflight": { + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz", + "integrity": "sha512-k92I/b08q4wvFscXCLvqfsHCrjrF7yiXsQuIVvVE7N82W3+aqpzuUdBbfhWcy/FZR3/4IgflMgKLOsvPDrGCJA==", + "deprecated": "This module is not supported, and leaks memory. Do not use it. Check out lru-cache if you want a good and tested way to coalesce async requests by a key value, which is much more comprehensive and powerful.", + "dev": true, + "dependencies": { + "once": "^1.3.0", + "wrappy": "1" + } + }, + "node_modules/inherits": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz", + "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==", + "dev": true + }, + "node_modules/internal-slot": { + "version": "1.0.7", + "resolved": "https://registry.npmjs.org/internal-slot/-/internal-slot-1.0.7.tgz", + "integrity": "sha512-NGnrKwXzSms2qUUih/ILZ5JBqNTSa1+ZmP6flaIp6KmSElgE9qdndzS3cqjrDovwFdmwsGsLdeFgB6suw+1e9g==", + "dev": true, + "dependencies": { + "es-errors": "^1.3.0", + "hasown": "^2.0.0", + "side-channel": "^1.0.4" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/is-array-buffer": { + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/is-array-buffer/-/is-array-buffer-3.0.4.tgz", + "integrity": "sha512-wcjaerHw0ydZwfhiKbXJWLDY8A7yV7KhjQOpb83hGgGfId/aQa4TOvwyzn2PuswW2gPCYEL/nEAiSVpdOj1lXw==", + "dev": true, + "dependencies": { + "call-bind": "^1.0.2", + "get-intrinsic": "^1.2.1" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-async-function": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/is-async-function/-/is-async-function-2.0.0.tgz", + "integrity": "sha512-Y1JXKrfykRJGdlDwdKlLpLyMIiWqWvuSd17TvZk68PLAOGOoF4Xyav1z0Xhoi+gCYjZVeC5SI+hYFOfvXmGRCA==", + "dev": true, + "dependencies": { + "has-tostringtag": "^1.0.0" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-bigint": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/is-bigint/-/is-bigint-1.0.4.tgz", + "integrity": "sha512-zB9CruMamjym81i2JZ3UMn54PKGsQzsJeo6xvN3HJJ4CAsQNB6iRutp2To77OfCNuoxspsIhzaPoO1zyCEhFOg==", + "dev": true, + "dependencies": { + "has-bigints": "^1.0.1" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-boolean-object": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/is-boolean-object/-/is-boolean-object-1.1.2.tgz", + "integrity": "sha512-gDYaKHJmnj4aWxyj6YHyXVpdQawtVLHU5cb+eztPGczf6cjuTdwve5ZIEfgXqH4e57An1D1AKf8CZ3kYrQRqYA==", + "dev": true, + "dependencies": { + "call-bind": "^1.0.2", + "has-tostringtag": "^1.0.0" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-callable": { + "version": "1.2.7", + "resolved": "https://registry.npmjs.org/is-callable/-/is-callable-1.2.7.tgz", + "integrity": "sha512-1BC0BVFhS/p0qtw6enp8e+8OD0UrK0oFLztSjNzhcKA3WDuJxxAPXzPuPtKkjEY9UUoEWlX/8fgKeu2S8i9JTA==", + "dev": true, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-core-module": { + "version": "2.15.1", + "resolved": "https://registry.npmjs.org/is-core-module/-/is-core-module-2.15.1.tgz", + "integrity": "sha512-z0vtXSwucUJtANQWldhbtbt7BnL0vxiFjIdDLAatwhDYty2bad6s+rijD6Ri4YuYJubLzIJLUidCh09e1djEVQ==", + "dev": true, + "dependencies": { + "hasown": "^2.0.2" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-data-view": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/is-data-view/-/is-data-view-1.0.1.tgz", + "integrity": "sha512-AHkaJrsUVW6wq6JS8y3JnM/GJF/9cf+k20+iDzlSaJrinEo5+7vRiteOSwBhHRiAyQATN1AmY4hwzxJKPmYf+w==", + "dev": true, + "dependencies": { + "is-typed-array": "^1.1.13" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-date-object": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/is-date-object/-/is-date-object-1.0.5.tgz", + "integrity": "sha512-9YQaSxsAiSwcvS33MBk3wTCVnWK+HhF8VZR2jRxehM16QcVOdHqPn4VPHmRK4lSr38n9JriurInLcP90xsYNfQ==", + "dev": true, + "dependencies": { + "has-tostringtag": "^1.0.0" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-extglob": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz", + "integrity": "sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/is-finalizationregistry": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/is-finalizationregistry/-/is-finalizationregistry-1.0.2.tgz", + "integrity": "sha512-0by5vtUJs8iFQb5TYUHHPudOR+qXYIMKtiUzvLIZITZUjknFmziyBJuLhVRc+Ds0dREFlskDNJKYIdIzu/9pfw==", + "dev": true, + "dependencies": { + "call-bind": "^1.0.2" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-fullwidth-code-point": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz", + "integrity": "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==", + "engines": { + "node": ">=8" + } + }, + "node_modules/is-generator-function": { + "version": "1.0.10", + "resolved": "https://registry.npmjs.org/is-generator-function/-/is-generator-function-1.0.10.tgz", + "integrity": "sha512-jsEjy9l3yiXEQ+PsXdmBwEPcOxaXWLspKdplFUVI9vq1iZgIekeC0L167qeu86czQaxed3q/Uzuw0swL0irL8A==", + "dev": true, + "dependencies": { + "has-tostringtag": "^1.0.0" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-glob": { + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-4.0.3.tgz", + "integrity": "sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==", + "dev": true, + "dependencies": { + "is-extglob": "^2.1.1" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/is-map": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/is-map/-/is-map-2.0.3.tgz", + "integrity": "sha512-1Qed0/Hr2m+YqxnM09CjA2d/i6YZNfF6R2oRAOj36eUdS6qIV/huPJNSEpKbupewFs+ZsJlxsjjPbc0/afW6Lw==", + "dev": true, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-negative-zero": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/is-negative-zero/-/is-negative-zero-2.0.3.tgz", + "integrity": "sha512-5KoIu2Ngpyek75jXodFvnafB6DJgr3u8uuK0LEZJjrU19DrMD3EVERaR8sjz8CCGgpZvxPl9SuE1GMVPFHx1mw==", + "dev": true, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-number-object": { + "version": "1.0.7", + "resolved": "https://registry.npmjs.org/is-number-object/-/is-number-object-1.0.7.tgz", + "integrity": "sha512-k1U0IRzLMo7ZlYIfzRu23Oh6MiIFasgpb9X76eqfFZAqwH44UI4KTBvBYIZ1dSL9ZzChTB9ShHfLkR4pdW5krQ==", + "dev": true, + "dependencies": { + "has-tostringtag": "^1.0.0" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-path-inside": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/is-path-inside/-/is-path-inside-3.0.3.tgz", + "integrity": "sha512-Fd4gABb+ycGAmKou8eMftCupSir5lRxqf4aD/vd0cD2qc4HL07OjCeuHMr8Ro4CoMaeCKDB0/ECBOVWjTwUvPQ==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/is-regex": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/is-regex/-/is-regex-1.1.4.tgz", + "integrity": "sha512-kvRdxDsxZjhzUX07ZnLydzS1TU/TJlTUHHY4YLL87e37oUA49DfkLqgy+VjFocowy29cKvcSiu+kIv728jTTVg==", + "dev": true, + "dependencies": { + "call-bind": "^1.0.2", + "has-tostringtag": "^1.0.0" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-set": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/is-set/-/is-set-2.0.3.tgz", + "integrity": "sha512-iPAjerrse27/ygGLxw+EBR9agv9Y6uLeYVJMu+QNCoouJ1/1ri0mGrcWpfCqFZuzzx3WjtwxG098X+n4OuRkPg==", + "dev": true, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-shared-array-buffer": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/is-shared-array-buffer/-/is-shared-array-buffer-1.0.3.tgz", + "integrity": "sha512-nA2hv5XIhLR3uVzDDfCIknerhx8XUKnstuOERPNNIinXG7v9u+ohXF67vxm4TPTEPU6lm61ZkwP3c9PCB97rhg==", + "dev": true, + "dependencies": { + "call-bind": "^1.0.7" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-string": { + "version": "1.0.7", + "resolved": "https://registry.npmjs.org/is-string/-/is-string-1.0.7.tgz", + "integrity": "sha512-tE2UXzivje6ofPW7l23cjDOMa09gb7xlAqG6jG5ej6uPV32TlWP3NKPigtaGeHNu9fohccRYvIiZMfOOnOYUtg==", + "dev": true, + "dependencies": { + "has-tostringtag": "^1.0.0" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-symbol": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/is-symbol/-/is-symbol-1.0.4.tgz", + "integrity": "sha512-C/CPBqKWnvdcxqIARxyOh4v1UUEOCHpgDa0WYgpKDFMszcrPcffg5uhwSgPCLD2WWxmq6isisz87tzT01tuGhg==", + "dev": true, + "dependencies": { + "has-symbols": "^1.0.2" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-typed-array": { + "version": "1.1.13", + "resolved": "https://registry.npmjs.org/is-typed-array/-/is-typed-array-1.1.13.tgz", + "integrity": "sha512-uZ25/bUAlUY5fR4OKT4rZQEBrzQWYV9ZJYGGsUmEJ6thodVJ1HX64ePQ6Z0qPWP+m+Uq6e9UugrE38jeYsDSMw==", + "dev": true, + "dependencies": { + "which-typed-array": "^1.1.14" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-weakmap": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/is-weakmap/-/is-weakmap-2.0.2.tgz", + "integrity": "sha512-K5pXYOm9wqY1RgjpL3YTkF39tni1XajUIkawTLUo9EZEVUFga5gSQJF8nNS7ZwJQ02y+1YCNYcMh+HIf1ZqE+w==", + "dev": true, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-weakref": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/is-weakref/-/is-weakref-1.0.2.tgz", + "integrity": "sha512-qctsuLZmIQ0+vSSMfoVvyFe2+GSEvnmZ2ezTup1SBse9+twCCeial6EEi3Nc2KFcf6+qz2FBPnjXsk8xhKSaPQ==", + "dev": true, + "dependencies": { + "call-bind": "^1.0.2" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-weakset": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/is-weakset/-/is-weakset-2.0.3.tgz", + "integrity": "sha512-LvIm3/KWzS9oRFHugab7d+M/GcBXuXX5xZkzPmN+NxihdQlZUQ4dWuSV1xR/sq6upL1TJEDrfBgRepHFdBtSNQ==", + "dev": true, + "dependencies": { + "call-bind": "^1.0.7", + "get-intrinsic": "^1.2.4" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/isarray": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/isarray/-/isarray-2.0.5.tgz", + "integrity": "sha512-xHjhDr3cNBK0BzdUJSPXZntQUx/mwMS5Rw4A7lPJ90XGAO6ISP/ePDNuo0vhqOZU+UD5JoodwCAAoZQd3FeAKw==", + "dev": true + }, + "node_modules/isexe": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz", + "integrity": "sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==", + "dev": true + }, + "node_modules/iterator.prototype": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/iterator.prototype/-/iterator.prototype-1.1.2.tgz", + "integrity": "sha512-DR33HMMr8EzwuRL8Y9D3u2BMj8+RqSE850jfGu59kS7tbmPLzGkZmVSfyCFSDxuZiEY6Rzt3T2NA/qU+NwVj1w==", + "dev": true, + "dependencies": { + "define-properties": "^1.2.1", + "get-intrinsic": "^1.2.1", + "has-symbols": "^1.0.3", + "reflect.getprototypeof": "^1.0.4", + "set-function-name": "^2.0.1" + } + }, + "node_modules/js-tokens": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/js-tokens/-/js-tokens-4.0.0.tgz", + "integrity": "sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==" + }, + "node_modules/js-yaml": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-4.1.0.tgz", + "integrity": "sha512-wpxZs9NoxZaJESJGIZTyDEaYpl0FKSA+FB9aJiyemKhMwkxQg63h4T1KJgUGHpTqPDNRcmmYLugrRjJlBtWvRA==", + "dev": true, + "dependencies": { + "argparse": "^2.0.1" + }, + "bin": { + "js-yaml": "bin/js-yaml.js" + } + }, + "node_modules/jsesc": { + "version": "2.5.2", + "resolved": "https://registry.npmjs.org/jsesc/-/jsesc-2.5.2.tgz", + "integrity": "sha512-OYu7XEzjkCQ3C5Ps3QIZsQfNpqoJyZZA99wd9aWd05NCtC5pWOkShK2mkL6HXQR6/Cy2lbNdPlZBpuQHXE63gA==", + "dev": true, + "bin": { + "jsesc": "bin/jsesc" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/json-buffer": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/json-buffer/-/json-buffer-3.0.1.tgz", + "integrity": "sha512-4bV5BfR2mqfQTJm+V5tPPdf+ZpuhiIvTuAB5g8kcrXOZpTT/QwwVRWBywX1ozr6lEuPdbHxwaJlm9G6mI2sfSQ==", + "dev": true + }, + "node_modules/json-schema-traverse": { + "version": "0.4.1", + "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz", + "integrity": "sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==", + "dev": true + }, + "node_modules/json-stable-stringify-without-jsonify": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/json-stable-stringify-without-jsonify/-/json-stable-stringify-without-jsonify-1.0.1.tgz", + "integrity": "sha512-Bdboy+l7tA3OGW6FjyFHWkP5LuByj1Tk33Ljyq0axyzdk9//JSi2u3fP1QSmd1KNwq6VOKYGlAu87CisVir6Pw==", + "dev": true + }, + "node_modules/json5": { + "version": "2.2.3", + "resolved": "https://registry.npmjs.org/json5/-/json5-2.2.3.tgz", + "integrity": "sha512-XmOWe7eyHYH14cLdVPoyg+GOH3rYX++KpzrylJwSW98t3Nk+U8XOl8FWKOgwtzdb8lXGf6zYwDUzeHMWfxasyg==", + "dev": true, + "bin": { + "json5": "lib/cli.js" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/jsx-ast-utils": { + "version": "3.3.5", + "resolved": "https://registry.npmjs.org/jsx-ast-utils/-/jsx-ast-utils-3.3.5.tgz", + "integrity": "sha512-ZZow9HBI5O6EPgSJLUb8n2NKgmVWTwCvHGwFuJlMjvLFqlGG6pjirPhtdsseaLZjSibD8eegzmYpUZwoIlj2cQ==", + "dev": true, + "dependencies": { + "array-includes": "^3.1.6", + "array.prototype.flat": "^1.3.1", + "object.assign": "^4.1.4", + "object.values": "^1.1.6" + }, + "engines": { + "node": ">=4.0" + } + }, + "node_modules/keyv": { + "version": "4.5.4", + "resolved": "https://registry.npmjs.org/keyv/-/keyv-4.5.4.tgz", + "integrity": "sha512-oxVHkHR/EJf2CNXnWxRLW6mg7JyCCUcG0DtEGmL2ctUo1PNTin1PUil+r/+4r5MpVgC/fn1kjsx7mjSujKqIpw==", + "dev": true, + "dependencies": { + "json-buffer": "3.0.1" + } + }, + "node_modules/levn": { + "version": "0.4.1", + "resolved": "https://registry.npmjs.org/levn/-/levn-0.4.1.tgz", + "integrity": "sha512-+bT2uH4E5LGE7h/n3evcS/sQlJXCpIp6ym8OWJ5eV6+67Dsql/LaaT7qJBAt2rzfoa/5QBGBhxDix1dMt2kQKQ==", + "dev": true, + "dependencies": { + "prelude-ls": "^1.2.1", + "type-check": "~0.4.0" + }, + "engines": { + "node": ">= 0.8.0" + } + }, + "node_modules/locate-path": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-6.0.0.tgz", + "integrity": "sha512-iPZK6eYjbxRu3uB4/WZ3EsEIMJFMqAoopl3R+zuq0UjcAm/MO6KCweDgPfP3elTztoKP3KtnVHxTn2NHBSDVUw==", + "dev": true, + "dependencies": { + "p-locate": "^5.0.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/lodash.camelcase": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/lodash.camelcase/-/lodash.camelcase-4.3.0.tgz", + "integrity": "sha512-TwuEnCnxbc3rAvhf/LbG7tJUDzhqXyFnv3dtzLOPgCG/hODL7WFnsbwktkD7yUV0RrreP/l1PALq/YSg6VvjlA==" + }, + "node_modules/lodash.merge": { + "version": "4.6.2", + "resolved": "https://registry.npmjs.org/lodash.merge/-/lodash.merge-4.6.2.tgz", + "integrity": "sha512-0KpjqXRVvrYyCsX1swR/XTK0va6VQkQM6MNo7PqW77ByjAhoARA8EfrP1N4+KlKj8YS0ZUCtRT/YUuhyYDujIQ==", + "dev": true + }, + "node_modules/long": { + "version": "5.2.3", + "resolved": "https://registry.npmjs.org/long/-/long-5.2.3.tgz", + "integrity": "sha512-lcHwpNoggQTObv5apGNCTdJrO69eHOZMi4BNC+rTLER8iHAqGrUVeLh/irVIM7zTw2bOXA8T6uNPeujwOLg/2Q==" + }, + "node_modules/loose-envify": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/loose-envify/-/loose-envify-1.4.0.tgz", + "integrity": "sha512-lyuxPGr/Wfhrlem2CL/UcnUc1zcqKAImBDzukY7Y5F/yQiNdko6+fRLevlw1HgMySw7f611UIY408EtxRSoK3Q==", + "dependencies": { + "js-tokens": "^3.0.0 || ^4.0.0" + }, + "bin": { + "loose-envify": "cli.js" + } + }, + "node_modules/lru-cache": { + "version": "5.1.1", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-5.1.1.tgz", + "integrity": "sha512-KpNARQA3Iwv+jTA0utUVVbrh+Jlrr1Fv0e56GGzAFOXN7dk/FviaDW8LHmK52DlcH4WP2n6gI8vN1aesBFgo9w==", + "dev": true, + "dependencies": { + "yallist": "^3.0.2" + } + }, + "node_modules/minimatch": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz", + "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==", + "dev": true, + "dependencies": { + "brace-expansion": "^1.1.7" + }, + "engines": { + "node": "*" + } + }, + "node_modules/ms": { + "version": "2.1.3", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.3.tgz", + "integrity": "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==", + "dev": true + }, + "node_modules/nanoid": { + "version": "3.3.7", + "resolved": "https://registry.npmjs.org/nanoid/-/nanoid-3.3.7.tgz", + "integrity": "sha512-eSRppjcPIatRIMC1U6UngP8XFcz8MQWGQdt1MTBQ7NaAmvXDfvNxbvWV3x2y6CdEUciCSsDHDQZbhYaB8QEo2g==", + "dev": true, + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/ai" + } + ], + "bin": { + "nanoid": "bin/nanoid.cjs" + }, + "engines": { + "node": "^10 || ^12 || ^13.7 || ^14 || >=15.0.1" + } + }, + "node_modules/natural-compare": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/natural-compare/-/natural-compare-1.4.0.tgz", + "integrity": "sha512-OWND8ei3VtNC9h7V60qff3SVobHr996CTwgxubgyQYEpg290h9J0buyECNNJexkFm5sOajh5G116RYA1c8ZMSw==", + "dev": true + }, + "node_modules/node-releases": { + "version": "2.0.18", + "resolved": "https://registry.npmjs.org/node-releases/-/node-releases-2.0.18.tgz", + "integrity": "sha512-d9VeXT4SJ7ZeOqGX6R5EM022wpL+eWPooLI+5UpWn2jCT1aosUQEhQP214x33Wkwx3JQMvIm+tIoVOdodFS40g==", + "dev": true + }, + "node_modules/object-assign": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/object-assign/-/object-assign-4.1.1.tgz", + "integrity": "sha512-rJgTQnkUnH1sFw8yT6VSU3zD3sWmu6sZhIseY8VX+GRu3P6F7Fu+JNDoXfklElbLJSnc3FUQHVe4cU5hj+BcUg==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/object-inspect": { + "version": "1.13.2", + "resolved": "https://registry.npmjs.org/object-inspect/-/object-inspect-1.13.2.tgz", + "integrity": "sha512-IRZSRuzJiynemAXPYtPe5BoI/RESNYR7TYm50MC5Mqbd3Jmw5y790sErYw3V6SryFJD64b74qQQs9wn5Bg/k3g==", + "dev": true, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/object-keys": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/object-keys/-/object-keys-1.1.1.tgz", + "integrity": "sha512-NuAESUOUMrlIXOfHKzD6bpPu3tYt3xvjNdRIQ+FeT0lNb4K8WR70CaDxhuNguS2XG+GjkyMwOzsN5ZktImfhLA==", + "dev": true, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/object.assign": { + "version": "4.1.5", + "resolved": "https://registry.npmjs.org/object.assign/-/object.assign-4.1.5.tgz", + "integrity": "sha512-byy+U7gp+FVwmyzKPYhW2h5l3crpmGsxl7X2s8y43IgxvG4g3QZ6CffDtsNQy1WsmZpQbO+ybo0AlW7TY6DcBQ==", + "dev": true, + "dependencies": { + "call-bind": "^1.0.5", + "define-properties": "^1.2.1", + "has-symbols": "^1.0.3", + "object-keys": "^1.1.1" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/object.entries": { + "version": "1.1.8", + "resolved": "https://registry.npmjs.org/object.entries/-/object.entries-1.1.8.tgz", + "integrity": "sha512-cmopxi8VwRIAw/fkijJohSfpef5PdN0pMQJN6VC/ZKvn0LIknWD8KtgY6KlQdEc4tIjcQ3HxSMmnvtzIscdaYQ==", + "dev": true, + "dependencies": { + "call-bind": "^1.0.7", + "define-properties": "^1.2.1", + "es-object-atoms": "^1.0.0" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/object.fromentries": { + "version": "2.0.8", + "resolved": "https://registry.npmjs.org/object.fromentries/-/object.fromentries-2.0.8.tgz", + "integrity": "sha512-k6E21FzySsSK5a21KRADBd/NGneRegFO5pLHfdQLpRDETUNJueLXs3WCzyQ3tFRDYgbq3KHGXfTbi2bs8WQ6rQ==", + "dev": true, + "dependencies": { + "call-bind": "^1.0.7", + "define-properties": "^1.2.1", + "es-abstract": "^1.23.2", + "es-object-atoms": "^1.0.0" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/object.values": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/object.values/-/object.values-1.2.0.tgz", + "integrity": "sha512-yBYjY9QX2hnRmZHAjG/f13MzmBzxzYgQhFrke06TTyKY5zSTEqkOeukBzIdVA3j3ulu8Qa3MbVFShV7T2RmGtQ==", + "dev": true, + "dependencies": { + "call-bind": "^1.0.7", + "define-properties": "^1.2.1", + "es-object-atoms": "^1.0.0" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/once": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz", + "integrity": "sha512-lNaJgI+2Q5URQBkccEKHTQOPaXdUxnZZElQTZY0MFUAuaEqe1E+Nyvgdz/aIyNi6Z9MzO5dv1H8n58/GELp3+w==", + "dev": true, + "dependencies": { + "wrappy": "1" + } + }, + "node_modules/optionator": { + "version": "0.9.4", + "resolved": "https://registry.npmjs.org/optionator/-/optionator-0.9.4.tgz", + "integrity": "sha512-6IpQ7mKUxRcZNLIObR0hz7lxsapSSIYNZJwXPGeF0mTVqGKFIXj1DQcMoT22S3ROcLyY/rz0PWaWZ9ayWmad9g==", + "dev": true, + "dependencies": { + "deep-is": "^0.1.3", + "fast-levenshtein": "^2.0.6", + "levn": "^0.4.1", + "prelude-ls": "^1.2.1", + "type-check": "^0.4.0", + "word-wrap": "^1.2.5" + }, + "engines": { + "node": ">= 0.8.0" + } + }, + "node_modules/p-limit": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-3.1.0.tgz", + "integrity": "sha512-TYOanM3wGwNGsZN2cVTYPArw454xnXj5qmWF1bEoAc4+cU/ol7GVh7odevjp1FNHduHc3KZMcFduxU5Xc6uJRQ==", + "dev": true, + "dependencies": { + "yocto-queue": "^0.1.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/p-locate": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-5.0.0.tgz", + "integrity": "sha512-LaNjtRWUBY++zB5nE/NwcaoMylSPk+S+ZHNB1TzdbMJMny6dynpAGt7X/tl/QYq3TIeE6nxHppbo2LGymrG5Pw==", + "dev": true, + "dependencies": { + "p-limit": "^3.0.2" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/parent-module": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/parent-module/-/parent-module-1.0.1.tgz", + "integrity": "sha512-GQ2EWRpQV8/o+Aw8YqtfZZPfNRWZYkbidE9k5rpl/hC3vtHHBfGm2Ifi6qWV+coDGkrUKZAxE3Lot5kcsRlh+g==", + "dev": true, + "dependencies": { + "callsites": "^3.0.0" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/path-exists": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-4.0.0.tgz", + "integrity": "sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/path-is-absolute": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz", + "integrity": "sha512-AVbw3UJ2e9bq64vSaS9Am0fje1Pa8pbGqTTsmXfaIiMpnr5DlDhfJOuLj9Sf95ZPVDAUerDfEk88MPmPe7UCQg==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/path-key": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/path-key/-/path-key-3.1.1.tgz", + "integrity": "sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/path-parse": { + "version": "1.0.7", + "resolved": "https://registry.npmjs.org/path-parse/-/path-parse-1.0.7.tgz", + "integrity": "sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw==", + "dev": true + }, + "node_modules/picocolors": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-1.1.0.tgz", + "integrity": "sha512-TQ92mBOW0l3LeMeyLV6mzy/kWr8lkd/hp3mTg7wYK7zJhuBStmGMBG0BdeDZS/dZx1IukaX6Bk11zcln25o1Aw==", + "dev": true + }, + "node_modules/possible-typed-array-names": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/possible-typed-array-names/-/possible-typed-array-names-1.0.0.tgz", + "integrity": "sha512-d7Uw+eZoloe0EHDIYoe+bQ5WXnGMOpmiZFTuMWCwpjzzkL2nTjcKiAk4hh8TjnGye2TwWOk3UXucZ+3rbmBa8Q==", + "dev": true, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/postcss": { + "version": "8.4.47", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-8.4.47.tgz", + "integrity": "sha512-56rxCq7G/XfB4EkXq9Egn5GCqugWvDFjafDOThIdMBsI15iqPqR5r15TfSr1YPYeEI19YeaXMCbY6u88Y76GLQ==", + "dev": true, + "funding": [ + { + "type": "opencollective", + "url": "https://opencollective.com/postcss/" + }, + { + "type": "tidelift", + "url": "https://tidelift.com/funding/github/npm/postcss" + }, + { + "type": "github", + "url": "https://github.com/sponsors/ai" + } + ], + "dependencies": { + "nanoid": "^3.3.7", + "picocolors": "^1.1.0", + "source-map-js": "^1.2.1" + }, + "engines": { + "node": "^10 || ^12 || >=14" + } + }, + "node_modules/prelude-ls": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/prelude-ls/-/prelude-ls-1.2.1.tgz", + "integrity": "sha512-vkcDPrRZo1QZLbn5RLGPpg/WmIQ65qoWWhcGKf/b5eplkkarX0m9z8ppCat4mlOqUsWpyNuYgO3VRyrYHSzX5g==", + "dev": true, + "engines": { + "node": ">= 0.8.0" + } + }, + "node_modules/prop-types": { + "version": "15.8.1", + "resolved": "https://registry.npmjs.org/prop-types/-/prop-types-15.8.1.tgz", + "integrity": "sha512-oj87CgZICdulUohogVAR7AjlC0327U4el4L6eAvOqCeudMDVU0NThNaV+b9Df4dXgSP1gXMTnPdhfe/2qDH5cg==", + "dev": true, + "dependencies": { + "loose-envify": "^1.4.0", + "object-assign": "^4.1.1", + "react-is": "^16.13.1" + } + }, + "node_modules/protobufjs": { + "version": "7.4.0", + "resolved": "https://registry.npmjs.org/protobufjs/-/protobufjs-7.4.0.tgz", + "integrity": "sha512-mRUWCc3KUU4w1jU8sGxICXH/gNS94DvI1gxqDvBzhj1JpcsimQkYiOJfwsPUykUI5ZaspFbSgmBLER8IrQ3tqw==", + "hasInstallScript": true, + "dependencies": { + "@protobufjs/aspromise": "^1.1.2", + "@protobufjs/base64": "^1.1.2", + "@protobufjs/codegen": "^2.0.4", + "@protobufjs/eventemitter": "^1.1.0", + "@protobufjs/fetch": "^1.1.0", + "@protobufjs/float": "^1.0.2", + "@protobufjs/inquire": "^1.1.0", + "@protobufjs/path": "^1.1.2", + "@protobufjs/pool": "^1.1.0", + "@protobufjs/utf8": "^1.1.0", + "@types/node": ">=13.7.0", + "long": "^5.0.0" + }, + "engines": { + "node": ">=12.0.0" + } + }, + "node_modules/punycode": { + "version": "2.3.1", + "resolved": "https://registry.npmjs.org/punycode/-/punycode-2.3.1.tgz", + "integrity": "sha512-vYt7UD1U9Wg6138shLtLOvdAu+8DsC/ilFtEVHcH+wydcSpNE20AfSOduf6MkRFahL5FY7X1oU7nKVZFtfq8Fg==", + "dev": true, + "engines": { + "node": ">=6" + } + }, + "node_modules/queue-microtask": { + "version": "1.2.3", + "resolved": "https://registry.npmjs.org/queue-microtask/-/queue-microtask-1.2.3.tgz", + "integrity": "sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A==", + "dev": true, + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ] + }, + "node_modules/react": { + "version": "18.3.1", + "resolved": "https://registry.npmjs.org/react/-/react-18.3.1.tgz", + "integrity": "sha512-wS+hAgJShR0KhEvPJArfuPVN1+Hz1t0Y6n5jLrGQbkb4urgPE/0Rve+1kMB1v/oWgHgm4WIcV+i7F2pTVj+2iQ==", + "dependencies": { + "loose-envify": "^1.1.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/react-dom": { + "version": "18.3.1", + "resolved": "https://registry.npmjs.org/react-dom/-/react-dom-18.3.1.tgz", + "integrity": "sha512-5m4nQKp+rZRb09LNH59GM4BxTh9251/ylbKIbpe7TpGxfJ+9kv6BLkLBXIjjspbgbnIBNqlI23tRnTWT0snUIw==", + "dependencies": { + "loose-envify": "^1.1.0", + "scheduler": "^0.23.2" + }, + "peerDependencies": { + "react": "^18.3.1" + } + }, + "node_modules/react-is": { + "version": "16.13.1", + "resolved": "https://registry.npmjs.org/react-is/-/react-is-16.13.1.tgz", + "integrity": "sha512-24e6ynE2H+OKt4kqsOvNd8kBpV65zoxbA4BVsEOB3ARVWQki/DHzaUoC5KuON/BiccDaCCTZBuOcfZs70kR8bQ==", + "dev": true + }, + "node_modules/react-refresh": { + "version": "0.14.2", + "resolved": "https://registry.npmjs.org/react-refresh/-/react-refresh-0.14.2.tgz", + "integrity": "sha512-jCvmsr+1IUSMUyzOkRcvnVbX3ZYC6g9TDrDbFuFmRDq7PD4yaGbLKNQL6k2jnArV8hjYxh7hVhAZB6s9HDGpZA==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/react-toastify": { + "version": "10.0.5", + "resolved": "https://registry.npmjs.org/react-toastify/-/react-toastify-10.0.5.tgz", + "integrity": "sha512-mNKt2jBXJg4O7pSdbNUfDdTsK9FIdikfsIE/yUCxbAEXl4HMyJaivrVFcn3Elvt5xvCQYhUZm+hqTIu1UXM3Pw==", + "dependencies": { + "clsx": "^2.1.0" + }, + "peerDependencies": { + "react": ">=18", + "react-dom": ">=18" + } + }, + "node_modules/reflect.getprototypeof": { + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/reflect.getprototypeof/-/reflect.getprototypeof-1.0.6.tgz", + "integrity": "sha512-fmfw4XgoDke3kdI6h4xcUz1dG8uaiv5q9gcEwLS4Pnth2kxT+GZ7YehS1JTMGBQmtV7Y4GFGbs2re2NqhdozUg==", + "dev": true, + "dependencies": { + "call-bind": "^1.0.7", + "define-properties": "^1.2.1", + "es-abstract": "^1.23.1", + "es-errors": "^1.3.0", + "get-intrinsic": "^1.2.4", + "globalthis": "^1.0.3", + "which-builtin-type": "^1.1.3" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/regexp.prototype.flags": { + "version": "1.5.2", + "resolved": "https://registry.npmjs.org/regexp.prototype.flags/-/regexp.prototype.flags-1.5.2.tgz", + "integrity": "sha512-NcDiDkTLuPR+++OCKB0nWafEmhg/Da8aUPLPMQbK+bxKKCm1/S5he+AqYa4PlMCVBalb4/yxIRub6qkEx5yJbw==", + "dev": true, + "dependencies": { + "call-bind": "^1.0.6", + "define-properties": "^1.2.1", + "es-errors": "^1.3.0", + "set-function-name": "^2.0.1" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/require-directory": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/require-directory/-/require-directory-2.1.1.tgz", + "integrity": "sha512-fGxEI7+wsG9xrvdjsrlmL22OMTTiHRwAMroiEeMgq8gzoLC/PQr7RsRDSTLUg/bZAZtF+TVIkHc6/4RIKrui+Q==", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/resolve": { + "version": "2.0.0-next.5", + "resolved": "https://registry.npmjs.org/resolve/-/resolve-2.0.0-next.5.tgz", + "integrity": "sha512-U7WjGVG9sH8tvjW5SmGbQuui75FiyjAX72HX15DwBBwF9dNiQZRQAg9nnPhYy+TUnE0+VcrttuvNI8oSxZcocA==", + "dev": true, + "dependencies": { + "is-core-module": "^2.13.0", + "path-parse": "^1.0.7", + "supports-preserve-symlinks-flag": "^1.0.0" + }, + "bin": { + "resolve": "bin/resolve" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/resolve-from": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-4.0.0.tgz", + "integrity": "sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g==", + "dev": true, + "engines": { + "node": ">=4" + } + }, + "node_modules/reusify": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/reusify/-/reusify-1.0.4.tgz", + "integrity": "sha512-U9nH88a3fc/ekCF1l0/UP1IosiuIjyTh7hBvXVMHYgVcfGvt897Xguj2UOLDeI5BG2m7/uwyaLVT6fbtCwTyzw==", + "dev": true, + "engines": { + "iojs": ">=1.0.0", + "node": ">=0.10.0" + } + }, + "node_modules/rimraf": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-3.0.2.tgz", + "integrity": "sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA==", + "deprecated": "Rimraf versions prior to v4 are no longer supported", + "dev": true, + "dependencies": { + "glob": "^7.1.3" + }, + "bin": { + "rimraf": "bin.js" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/rollup": { + "version": "4.22.4", + "resolved": "https://registry.npmjs.org/rollup/-/rollup-4.22.4.tgz", + "integrity": "sha512-vD8HJ5raRcWOyymsR6Z3o6+RzfEPCnVLMFJ6vRslO1jt4LO6dUo5Qnpg7y4RkZFM2DMe3WUirkI5c16onjrc6A==", + "dev": true, + "dependencies": { + "@types/estree": "1.0.5" + }, + "bin": { + "rollup": "dist/bin/rollup" + }, + "engines": { + "node": ">=18.0.0", + "npm": ">=8.0.0" + }, + "optionalDependencies": { + "@rollup/rollup-android-arm-eabi": "4.22.4", + "@rollup/rollup-android-arm64": "4.22.4", + "@rollup/rollup-darwin-arm64": "4.22.4", + "@rollup/rollup-darwin-x64": "4.22.4", + "@rollup/rollup-linux-arm-gnueabihf": "4.22.4", + "@rollup/rollup-linux-arm-musleabihf": "4.22.4", + "@rollup/rollup-linux-arm64-gnu": "4.22.4", + "@rollup/rollup-linux-arm64-musl": "4.22.4", + "@rollup/rollup-linux-powerpc64le-gnu": "4.22.4", + "@rollup/rollup-linux-riscv64-gnu": "4.22.4", + "@rollup/rollup-linux-s390x-gnu": "4.22.4", + "@rollup/rollup-linux-x64-gnu": "4.22.4", + "@rollup/rollup-linux-x64-musl": "4.22.4", + "@rollup/rollup-win32-arm64-msvc": "4.22.4", + "@rollup/rollup-win32-ia32-msvc": "4.22.4", + "@rollup/rollup-win32-x64-msvc": "4.22.4", + "fsevents": "~2.3.2" + } + }, + "node_modules/run-parallel": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/run-parallel/-/run-parallel-1.2.0.tgz", + "integrity": "sha512-5l4VyZR86LZ/lDxZTR6jqL8AFE2S0IFLMP26AbjsLVADxHdhB/c0GUsH+y39UfCi3dzz8OlQuPmnaJOMoDHQBA==", + "dev": true, + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ], + "dependencies": { + "queue-microtask": "^1.2.2" + } + }, + "node_modules/safe-array-concat": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/safe-array-concat/-/safe-array-concat-1.1.2.tgz", + "integrity": "sha512-vj6RsCsWBCf19jIeHEfkRMw8DPiBb+DMXklQ/1SGDHOMlHdPUkZXFQ2YdplS23zESTijAcurb1aSgJA3AgMu1Q==", + "dev": true, + "dependencies": { + "call-bind": "^1.0.7", + "get-intrinsic": "^1.2.4", + "has-symbols": "^1.0.3", + "isarray": "^2.0.5" + }, + "engines": { + "node": ">=0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/safe-buffer": { + "version": "5.2.1", + "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.1.tgz", + "integrity": "sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ] + }, + "node_modules/safe-regex-test": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/safe-regex-test/-/safe-regex-test-1.0.3.tgz", + "integrity": "sha512-CdASjNJPvRa7roO6Ra/gLYBTzYzzPyyBXxIMdGW3USQLyjWEls2RgW5UBTXaQVp+OrpeCK3bLem8smtmheoRuw==", + "dev": true, + "dependencies": { + "call-bind": "^1.0.6", + "es-errors": "^1.3.0", + "is-regex": "^1.1.4" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/scheduler": { + "version": "0.23.2", + "resolved": "https://registry.npmjs.org/scheduler/-/scheduler-0.23.2.tgz", + "integrity": "sha512-UOShsPwz7NrMUqhR6t0hWjFduvOzbtv7toDH1/hIrfRNIDBnnBWd0CwJTGvTpngVlmwGCdP9/Zl/tVrDqcuYzQ==", + "dependencies": { + "loose-envify": "^1.1.0" + } + }, + "node_modules/semver": { + "version": "6.3.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz", + "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==", + "dev": true, + "bin": { + "semver": "bin/semver.js" + } + }, + "node_modules/set-function-length": { + "version": "1.2.2", + "resolved": "https://registry.npmjs.org/set-function-length/-/set-function-length-1.2.2.tgz", + "integrity": "sha512-pgRc4hJ4/sNjWCSS9AmnS40x3bNMDTknHgL5UaMBTMyJnU90EgWh1Rz+MC9eFu4BuN/UwZjKQuY/1v3rM7HMfg==", + "dev": true, + "dependencies": { + "define-data-property": "^1.1.4", + "es-errors": "^1.3.0", + "function-bind": "^1.1.2", + "get-intrinsic": "^1.2.4", + "gopd": "^1.0.1", + "has-property-descriptors": "^1.0.2" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/set-function-name": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/set-function-name/-/set-function-name-2.0.2.tgz", + "integrity": "sha512-7PGFlmtwsEADb0WYyvCMa1t+yke6daIG4Wirafur5kcf+MhUnPms1UeR0CKQdTZD81yESwMHbtn+TR+dMviakQ==", + "dev": true, + "dependencies": { + "define-data-property": "^1.1.4", + "es-errors": "^1.3.0", + "functions-have-names": "^1.2.3", + "has-property-descriptors": "^1.0.2" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/shebang-command": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-2.0.0.tgz", + "integrity": "sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==", + "dev": true, + "dependencies": { + "shebang-regex": "^3.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/shebang-regex": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-3.0.0.tgz", + "integrity": "sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/side-channel": { + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/side-channel/-/side-channel-1.0.6.tgz", + "integrity": "sha512-fDW/EZ6Q9RiO8eFG8Hj+7u/oW+XrPTIChwCOM2+th2A6OblDtYYIpve9m+KvI9Z4C9qSEXlaGR6bTEYHReuglA==", + "dev": true, + "dependencies": { + "call-bind": "^1.0.7", + "es-errors": "^1.3.0", + "get-intrinsic": "^1.2.4", + "object-inspect": "^1.13.1" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/source-map-js": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/source-map-js/-/source-map-js-1.2.1.tgz", + "integrity": "sha512-UXWMKhLOwVKb728IUtQPXxfYU+usdybtUrK/8uGE8CQMvrhOpwvzDBwj0QhSL7MQc7vIsISBG8VQ8+IDQxpfQA==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/string-width": { + "version": "4.2.3", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz", + "integrity": "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==", + "dependencies": { + "emoji-regex": "^8.0.0", + "is-fullwidth-code-point": "^3.0.0", + "strip-ansi": "^6.0.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/string.prototype.matchall": { + "version": "4.0.11", + "resolved": "https://registry.npmjs.org/string.prototype.matchall/-/string.prototype.matchall-4.0.11.tgz", + "integrity": "sha512-NUdh0aDavY2og7IbBPenWqR9exH+E26Sv8e0/eTe1tltDGZL+GtBkDAnnyBtmekfK6/Dq3MkcGtzXFEd1LQrtg==", + "dev": true, + "dependencies": { + "call-bind": "^1.0.7", + "define-properties": "^1.2.1", + "es-abstract": "^1.23.2", + "es-errors": "^1.3.0", + "es-object-atoms": "^1.0.0", + "get-intrinsic": "^1.2.4", + "gopd": "^1.0.1", + "has-symbols": "^1.0.3", + "internal-slot": "^1.0.7", + "regexp.prototype.flags": "^1.5.2", + "set-function-name": "^2.0.2", + "side-channel": "^1.0.6" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/string.prototype.repeat": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/string.prototype.repeat/-/string.prototype.repeat-1.0.0.tgz", + "integrity": "sha512-0u/TldDbKD8bFCQ/4f5+mNRrXwZ8hg2w7ZR8wa16e8z9XpePWl3eGEcUD0OXpEH/VJH/2G3gjUtR3ZOiBe2S/w==", + "dev": true, + "dependencies": { + "define-properties": "^1.1.3", + "es-abstract": "^1.17.5" + } + }, + "node_modules/string.prototype.trim": { + "version": "1.2.9", + "resolved": "https://registry.npmjs.org/string.prototype.trim/-/string.prototype.trim-1.2.9.tgz", + "integrity": "sha512-klHuCNxiMZ8MlsOihJhJEBJAiMVqU3Z2nEXWfWnIqjN0gEFS9J9+IxKozWWtQGcgoa1WUZzLjKPTr4ZHNFTFxw==", + "dev": true, + "dependencies": { + "call-bind": "^1.0.7", + "define-properties": "^1.2.1", + "es-abstract": "^1.23.0", + "es-object-atoms": "^1.0.0" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/string.prototype.trimend": { + "version": "1.0.8", + "resolved": "https://registry.npmjs.org/string.prototype.trimend/-/string.prototype.trimend-1.0.8.tgz", + "integrity": "sha512-p73uL5VCHCO2BZZ6krwwQE3kCzM7NKmis8S//xEC6fQonchbum4eP6kR4DLEjQFO3Wnj3Fuo8NM0kOSjVdHjZQ==", + "dev": true, + "dependencies": { + "call-bind": "^1.0.7", + "define-properties": "^1.2.1", + "es-object-atoms": "^1.0.0" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/string.prototype.trimstart": { + "version": "1.0.8", + "resolved": "https://registry.npmjs.org/string.prototype.trimstart/-/string.prototype.trimstart-1.0.8.tgz", + "integrity": "sha512-UXSH262CSZY1tfu3G3Secr6uGLCFVPMhIqHjlgCUtCCcgihYc/xKs9djMTMUOb2j1mVSeU8EU6NWc/iQKU6Gfg==", + "dev": true, + "dependencies": { + "call-bind": "^1.0.7", + "define-properties": "^1.2.1", + "es-object-atoms": "^1.0.0" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/strip-ansi": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz", + "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==", + "dependencies": { + "ansi-regex": "^5.0.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/strip-json-comments": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-3.1.1.tgz", + "integrity": "sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig==", + "dev": true, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/supports-color": { + "version": "5.5.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", + "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==", + "dev": true, + "dependencies": { + "has-flag": "^3.0.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/supports-preserve-symlinks-flag": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/supports-preserve-symlinks-flag/-/supports-preserve-symlinks-flag-1.0.0.tgz", + "integrity": "sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w==", + "dev": true, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/text-table": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/text-table/-/text-table-0.2.0.tgz", + "integrity": "sha512-N+8UisAXDGk8PFXP4HAzVR9nbfmVJ3zYLAWiTIoqC5v5isinhr+r5uaO8+7r3BMfuNIufIsA7RdpVgacC2cSpw==", + "dev": true + }, + "node_modules/to-fast-properties": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/to-fast-properties/-/to-fast-properties-2.0.0.tgz", + "integrity": "sha512-/OaKK0xYrs3DmxRYqL/yDc+FxFUVYhDlXMhRmv3z915w2HF1tnN1omB354j8VUGO/hbRzyD6Y3sA7v7GS/ceog==", + "dev": true, + "engines": { + "node": ">=4" + } + }, + "node_modules/tslib": { + "version": "2.7.0", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.7.0.tgz", + "integrity": "sha512-gLXCKdN1/j47AiHiOkJN69hJmcbGTHI0ImLmbYLHykhgeN0jVGola9yVjFgzCUklsZQMW55o+dW7IXv3RCXDzA==" + }, + "node_modules/type-check": { + "version": "0.4.0", + "resolved": "https://registry.npmjs.org/type-check/-/type-check-0.4.0.tgz", + "integrity": "sha512-XleUoc9uwGXqjWwXaUTZAmzMcFZ5858QA2vvx1Ur5xIcixXIP+8LnFDgRplU30us6teqdlskFfu+ae4K79Ooew==", + "dev": true, + "dependencies": { + "prelude-ls": "^1.2.1" + }, + "engines": { + "node": ">= 0.8.0" + } + }, + "node_modules/type-fest": { + "version": "0.20.2", + "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.20.2.tgz", + "integrity": "sha512-Ne+eE4r0/iWnpAxD852z3A+N0Bt5RN//NjJwRd2VFHEmrywxf5vsZlh4R6lixl6B+wz/8d+maTSAkN1FIkI3LQ==", + "dev": true, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/typed-array-buffer": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/typed-array-buffer/-/typed-array-buffer-1.0.2.tgz", + "integrity": "sha512-gEymJYKZtKXzzBzM4jqa9w6Q1Jjm7x2d+sh19AdsD4wqnMPDYyvwpsIc2Q/835kHuo3BEQ7CjelGhfTsoBb2MQ==", + "dev": true, + "dependencies": { + "call-bind": "^1.0.7", + "es-errors": "^1.3.0", + "is-typed-array": "^1.1.13" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/typed-array-byte-length": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/typed-array-byte-length/-/typed-array-byte-length-1.0.1.tgz", + "integrity": "sha512-3iMJ9q0ao7WE9tWcaYKIptkNBuOIcZCCT0d4MRvuuH88fEoEH62IuQe0OtraD3ebQEoTRk8XCBoknUNc1Y67pw==", + "dev": true, + "dependencies": { + "call-bind": "^1.0.7", + "for-each": "^0.3.3", + "gopd": "^1.0.1", + "has-proto": "^1.0.3", + "is-typed-array": "^1.1.13" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/typed-array-byte-offset": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/typed-array-byte-offset/-/typed-array-byte-offset-1.0.2.tgz", + "integrity": "sha512-Ous0vodHa56FviZucS2E63zkgtgrACj7omjwd/8lTEMEPFFyjfixMZ1ZXenpgCFBBt4EC1J2XsyVS2gkG0eTFA==", + "dev": true, + "dependencies": { + "available-typed-arrays": "^1.0.7", + "call-bind": "^1.0.7", + "for-each": "^0.3.3", + "gopd": "^1.0.1", + "has-proto": "^1.0.3", + "is-typed-array": "^1.1.13" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/typed-array-length": { + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/typed-array-length/-/typed-array-length-1.0.6.tgz", + "integrity": "sha512-/OxDN6OtAk5KBpGb28T+HZc2M+ADtvRxXrKKbUwtsLgdoxgX13hyy7ek6bFRl5+aBs2yZzB0c4CnQfAtVypW/g==", + "dev": true, + "dependencies": { + "call-bind": "^1.0.7", + "for-each": "^0.3.3", + "gopd": "^1.0.1", + "has-proto": "^1.0.3", + "is-typed-array": "^1.1.13", + "possible-typed-array-names": "^1.0.0" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/unbox-primitive": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/unbox-primitive/-/unbox-primitive-1.0.2.tgz", + "integrity": "sha512-61pPlCD9h51VoreyJ0BReideM3MDKMKnh6+V9L08331ipq6Q8OFXZYiqP6n/tbHx4s5I9uRhcye6BrbkizkBDw==", + "dev": true, + "dependencies": { + "call-bind": "^1.0.2", + "has-bigints": "^1.0.2", + "has-symbols": "^1.0.3", + "which-boxed-primitive": "^1.0.2" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/undici": { + "version": "6.19.7", + "resolved": "https://registry.npmjs.org/undici/-/undici-6.19.7.tgz", + "integrity": "sha512-HR3W/bMGPSr90i8AAp2C4DM3wChFdJPLrWYpIS++LxS8K+W535qftjt+4MyjNYHeWabMj1nvtmLIi7l++iq91A==", + "engines": { + "node": ">=18.17" + } + }, + "node_modules/undici-types": { + "version": "6.19.8", + "resolved": "https://registry.npmjs.org/undici-types/-/undici-types-6.19.8.tgz", + "integrity": "sha512-ve2KP6f/JnbPBFyobGHuerC9g1FYGn/F8n1LWTwNxCEzd6IfqTwUQcNXgEtmmQ6DlRrC1hrSrBnCZPokRrDHjw==" + }, + "node_modules/update-browserslist-db": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/update-browserslist-db/-/update-browserslist-db-1.1.0.tgz", + "integrity": "sha512-EdRAaAyk2cUE1wOf2DkEhzxqOQvFOoRJFNS6NeyJ01Gp2beMRpBAINjM2iDXE3KCuKhwnvHIQCJm6ThL2Z+HzQ==", + "dev": true, + "funding": [ + { + "type": "opencollective", + "url": "https://opencollective.com/browserslist" + }, + { + "type": "tidelift", + "url": "https://tidelift.com/funding/github/npm/browserslist" + }, + { + "type": "github", + "url": "https://github.com/sponsors/ai" + } + ], + "dependencies": { + "escalade": "^3.1.2", + "picocolors": "^1.0.1" + }, + "bin": { + "update-browserslist-db": "cli.js" + }, + "peerDependencies": { + "browserslist": ">= 4.21.0" + } + }, + "node_modules/uri-js": { + "version": "4.4.1", + "resolved": "https://registry.npmjs.org/uri-js/-/uri-js-4.4.1.tgz", + "integrity": "sha512-7rKUyy33Q1yc98pQ1DAmLtwX109F7TIfWlW1Ydo8Wl1ii1SeHieeh0HHfPeL2fMXK6z0s8ecKs9frCuLJvndBg==", + "dev": true, + "dependencies": { + "punycode": "^2.1.0" + } + }, + "node_modules/vite": { + "version": "5.4.7", + "resolved": "https://registry.npmjs.org/vite/-/vite-5.4.7.tgz", + "integrity": "sha512-5l2zxqMEPVENgvzTuBpHer2awaetimj2BGkhBPdnwKbPNOlHsODU+oiazEZzLK7KhAnOrO+XGYJYn4ZlUhDtDQ==", + "dev": true, + "dependencies": { + "esbuild": "^0.21.3", + "postcss": "^8.4.43", + "rollup": "^4.20.0" + }, + "bin": { + "vite": "bin/vite.js" + }, + "engines": { + "node": "^18.0.0 || >=20.0.0" + }, + "funding": { + "url": "https://github.com/vitejs/vite?sponsor=1" + }, + "optionalDependencies": { + "fsevents": "~2.3.3" + }, + "peerDependencies": { + "@types/node": "^18.0.0 || >=20.0.0", + "less": "*", + "lightningcss": "^1.21.0", + "sass": "*", + "sass-embedded": "*", + "stylus": "*", + "sugarss": "*", + "terser": "^5.4.0" + }, + "peerDependenciesMeta": { + "@types/node": { + "optional": true + }, + "less": { + "optional": true + }, + "lightningcss": { + "optional": true + }, + "sass": { + "optional": true + }, + "sass-embedded": { + "optional": true + }, + "stylus": { + "optional": true + }, + "sugarss": { + "optional": true + }, + "terser": { + "optional": true + } + } + }, + "node_modules/websocket-driver": { + "version": "0.7.4", + "resolved": "https://registry.npmjs.org/websocket-driver/-/websocket-driver-0.7.4.tgz", + "integrity": "sha512-b17KeDIQVjvb0ssuSDF2cYXSg2iztliJ4B9WdsuB6J952qCPKmnVq4DyW5motImXHDC1cBT/1UezrJVsKw5zjg==", + "dependencies": { + "http-parser-js": ">=0.5.1", + "safe-buffer": ">=5.1.0", + "websocket-extensions": ">=0.1.1" + }, + "engines": { + "node": ">=0.8.0" + } + }, + "node_modules/websocket-extensions": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/websocket-extensions/-/websocket-extensions-0.1.4.tgz", + "integrity": "sha512-OqedPIGOfsDlo31UNwYbCFMSaO9m9G/0faIHj5/dZFDMFqPTcx6UwqyOy3COEaEOg/9VsGIpdqn62W5KhoKSpg==", + "engines": { + "node": ">=0.8.0" + } + }, + "node_modules/which": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/which/-/which-2.0.2.tgz", + "integrity": "sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==", + "dev": true, + "dependencies": { + "isexe": "^2.0.0" + }, + "bin": { + "node-which": "bin/node-which" + }, + "engines": { + "node": ">= 8" + } + }, + "node_modules/which-boxed-primitive": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/which-boxed-primitive/-/which-boxed-primitive-1.0.2.tgz", + "integrity": "sha512-bwZdv0AKLpplFY2KZRX6TvyuN7ojjr7lwkg6ml0roIy9YeuSr7JS372qlNW18UQYzgYK9ziGcerWqZOmEn9VNg==", + "dev": true, + "dependencies": { + "is-bigint": "^1.0.1", + "is-boolean-object": "^1.1.0", + "is-number-object": "^1.0.4", + "is-string": "^1.0.5", + "is-symbol": "^1.0.3" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/which-builtin-type": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/which-builtin-type/-/which-builtin-type-1.1.4.tgz", + "integrity": "sha512-bppkmBSsHFmIMSl8BO9TbsyzsvGjVoppt8xUiGzwiu/bhDCGxnpOKCxgqj6GuyHE0mINMDecBFPlOm2hzY084w==", + "dev": true, + "dependencies": { + "function.prototype.name": "^1.1.6", + "has-tostringtag": "^1.0.2", + "is-async-function": "^2.0.0", + "is-date-object": "^1.0.5", + "is-finalizationregistry": "^1.0.2", + "is-generator-function": "^1.0.10", + "is-regex": "^1.1.4", + "is-weakref": "^1.0.2", + "isarray": "^2.0.5", + "which-boxed-primitive": "^1.0.2", + "which-collection": "^1.0.2", + "which-typed-array": "^1.1.15" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/which-collection": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/which-collection/-/which-collection-1.0.2.tgz", + "integrity": "sha512-K4jVyjnBdgvc86Y6BkaLZEN933SwYOuBFkdmBu9ZfkcAbdVbpITnDmjvZ/aQjRXQrv5EPkTnD1s39GiiqbngCw==", + "dev": true, + "dependencies": { + "is-map": "^2.0.3", + "is-set": "^2.0.3", + "is-weakmap": "^2.0.2", + "is-weakset": "^2.0.3" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/which-typed-array": { + "version": "1.1.15", + "resolved": "https://registry.npmjs.org/which-typed-array/-/which-typed-array-1.1.15.tgz", + "integrity": "sha512-oV0jmFtUky6CXfkqehVvBP/LSWJ2sy4vWMioiENyJLePrBO/yKyV9OyJySfAKosh+RYkIl5zJCNZ8/4JncrpdA==", + "dev": true, + "dependencies": { + "available-typed-arrays": "^1.0.7", + "call-bind": "^1.0.7", + "for-each": "^0.3.3", + "gopd": "^1.0.1", + "has-tostringtag": "^1.0.2" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/word-wrap": { + "version": "1.2.5", + "resolved": "https://registry.npmjs.org/word-wrap/-/word-wrap-1.2.5.tgz", + "integrity": "sha512-BN22B5eaMMI9UMtjrGd5g5eCYPpCPDUy0FJXbYsaT5zYxjFOckS53SQDE3pWkVoWpHXVb3BrYcEN4Twa55B5cA==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/wrap-ansi": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-7.0.0.tgz", + "integrity": "sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q==", + "dependencies": { + "ansi-styles": "^4.0.0", + "string-width": "^4.1.0", + "strip-ansi": "^6.0.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/wrap-ansi?sponsor=1" + } + }, + "node_modules/wrap-ansi/node_modules/ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "dependencies": { + "color-convert": "^2.0.1" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, + "node_modules/wrap-ansi/node_modules/color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "dependencies": { + "color-name": "~1.1.4" + }, + "engines": { + "node": ">=7.0.0" + } + }, + "node_modules/wrap-ansi/node_modules/color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==" + }, + "node_modules/wrappy": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz", + "integrity": "sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ==", + "dev": true + }, + "node_modules/y18n": { + "version": "5.0.8", + "resolved": "https://registry.npmjs.org/y18n/-/y18n-5.0.8.tgz", + "integrity": "sha512-0pfFzegeDWJHJIAmTLRP2DwHjdF5s7jo9tuztdQxAhINCdvS+3nGINqPd00AphqJR/0LhANUS6/+7SCb98YOfA==", + "engines": { + "node": ">=10" + } + }, + "node_modules/yallist": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/yallist/-/yallist-3.1.1.tgz", + "integrity": "sha512-a4UGQaWPH59mOXUYnAG2ewncQS4i4F43Tv3JoAM+s2VDAmS9NsK8GpDMLrCHPksFT7h3K6TOoUNn2pb7RoXx4g==", + "dev": true + }, + "node_modules/yargs": { + "version": "17.7.2", + "resolved": "https://registry.npmjs.org/yargs/-/yargs-17.7.2.tgz", + "integrity": "sha512-7dSzzRQ++CKnNI/krKnYRV7JKKPUXMEh61soaHKg9mrWEhzFWhFnxPxGl+69cD1Ou63C13NUPCnmIcrvqCuM6w==", + "dependencies": { + "cliui": "^8.0.1", + "escalade": "^3.1.1", + "get-caller-file": "^2.0.5", + "require-directory": "^2.1.1", + "string-width": "^4.2.3", + "y18n": "^5.0.5", + "yargs-parser": "^21.1.1" + }, + "engines": { + "node": ">=12" + } + }, + "node_modules/yargs-parser": { + "version": "21.1.1", + "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-21.1.1.tgz", + "integrity": "sha512-tVpsJW7DdjecAiFpbIB1e3qxIQsE6NoPc5/eTdrbbIC4h0LVsWhnoa3g+m2HclBIujHzsxZ4VJVA+GUuc2/LBw==", + "engines": { + "node": ">=12" + } + }, + "node_modules/yocto-queue": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/yocto-queue/-/yocto-queue-0.1.0.tgz", + "integrity": "sha512-rVksvsnNCdJ/ohGc6xgPwyN8eheCxsiLM8mxuE/t/mOVqJewPuO1miLpTHQiRgTKCLexL4MeAFVagts7HmNZ2Q==", + "dev": true, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/zustand": { + "version": "5.0.0-rc.2", + "resolved": "https://registry.npmjs.org/zustand/-/zustand-5.0.0-rc.2.tgz", + "integrity": "sha512-o2Nwuvnk8vQBX7CcHL8WfFkZNJdxB/VKeWw0tNglw8p4cypsZ3tRT7rTRTDNeUPFS0qaMBRSKe+fVwL5xpcE3A==", + "engines": { + "node": ">=12.20.0" + }, + "peerDependencies": { + "@types/react": ">=18.0.0", + "immer": ">=9.0.6", + "react": ">=18.0.0", + "use-sync-external-store": ">=1.2.0" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + }, + "immer": { + "optional": true + }, + "react": { + "optional": true + }, + "use-sync-external-store": { + "optional": true + } + } + } + } +} diff --git a/package.json b/package.json index 8faff714..37852a58 100644 --- a/package.json +++ b/package.json @@ -10,8 +10,12 @@ "preview": "vite preview" }, "dependencies": { + "emoji-picker-react": "^4.12.0", + "firebase": "^10.13.2", "react": "^18.2.0", - "react-dom": "^18.2.0" + "react-dom": "^18.2.0", + "react-toastify": "^10.0.5", + "zustand": "^5.0.0-rc.2" }, "devDependencies": { "@types/react": "^18.2.66", diff --git a/public/bg.jpg b/public/bg.jpg index 870cc38d1b6cccd3dfe2493b082fde2c2fd2adea..4284cff7776c26c94644bce7c709f99c17f3b418 100644 GIT binary patch literal 91114 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�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 + return ( -
App
+
+ {currentUser ? ( + <> + + {chatId && } + {chatId && } + + ) : ( + + )} + +
) } diff --git a/src/components/chat/Chat.jsx b/src/components/chat/Chat.jsx new file mode 100644 index 00000000..17ed9ef7 --- /dev/null +++ b/src/components/chat/Chat.jsx @@ -0,0 +1,170 @@ +import { useEffect, useRef, useState } from "react"; +import "./chat.css"; +import EmojiPicker from "emoji-picker-react"; +import { arrayUnion, doc, getDoc, onSnapshot, updateDoc } from "firebase/firestore"; +import { db } from "../lib/firebase"; +import { useChatStore } from "../lib/chatStore"; +import { useUserStore } from "../lib/userStore"; +import upload from "../lib/upload"; +const Chat = () => { + const [chat, setChat] = useState(""); + const [open, setOpen] = useState(false); + const [text, setText] = useState(""); + const [img, setImg] = useState({ + file: null, + url: '', + }); + const endRef = useRef(null); + const { chatId, user, isCurrentUserBlocked, isReceiverBlocked } = useChatStore(); + const { currentUser } = useUserStore(); + + useEffect(() => { + endRef.current?.scrollIntoView({ behavior: 'smooth' }); + }, []); + + useEffect(() => { + const unSub = onSnapshot( + doc(db, 'chats', chatId), + (res) => { + setChat(res.data()); + }) + + return () => { + unSub(); + } + }, [chatId]); + + console.log(chat); + + const handleEmoji = (e) => { + setText(prev => prev + e.emoji); + setOpen(false) + }; + + const handleImg = e => { + if (e.target.files[0]) { + setImg({ + file: e.target.files[0], + url: URL.createObjectURL(e.target.files[0]) + }) + } + }; + + const handleSend = async () => { + if (text === '') return; + + let imgUrl = null; + + try { + + if (img.file) { + imgUrl = await upload(img.file); + } + + await updateDoc(doc(db, 'chats', chatId), { + messages: arrayUnion({ + senderId: currentUser.id, + text, + createdAt: new Date(), + ...(imgUrl && {img: imgUrl}), + }) + }); + + const userIds = [currentUser.id, user.id] + userIds.forEach(async (id) => { + + const userChatsRef = doc(db, 'userchats', id); + const userChatSnapshot = await getDoc(userChatsRef); + + if (userChatSnapshot.exists()) { + const userChatsData = userChatSnapshot.data(); + const chatIndex = userChatsData.chats.findIndex(c => c.chatId === chatId); + + userChatsData.chats[chatIndex] = { + ...userChatsData.chats[chatIndex], + lastMessage: text, + isSeen: id === currentUser.id ? true : false, + updatedAt: Date.now(), + }; + + + await updateDoc(userChatsRef, { + chats: userChatsData.chats, + }) + } + }); + + } catch (err) { + console.log("Error on handleSend:", err); + } + + setImg({ + file: null, + ulr: '' + }) + + setText(''); + + } + + return ( +
+
+
+ user img +
+ {user?.username} +

Lorem ipsum dolor sit amet consectetur

+
+
+
+ icon + icon + icon +
+
+
+ {chat?.messages?.map(message => ( +
+
+ {message.img && User image} +

{message.text}

+
+
+ ))} + {img.url &&
+
+ +
+
} +
+
+ +
+
+ + + icon + icon +
+ setText(e.target.value)} + disabled={isCurrentUserBlocked || isReceiverBlocked} + /> +
+ icon setOpen(prev => !prev)} /> +
+ +
+
+ +
+
+ ) +} +export default Chat \ No newline at end of file diff --git a/src/components/chat/chat.css b/src/components/chat/chat.css new file mode 100644 index 00000000..a3a0ad0e --- /dev/null +++ b/src/components/chat/chat.css @@ -0,0 +1,175 @@ +.chat { + display: flex; + flex-direction: column; + height: 100%; + flex: 2; + border-left: 1px solid #dddddd35; + border-right: 1px solid #dddddd35; + + .top { + padding: 20px; + display: flex; + align-items: center; + justify-content: space-between; + border-bottom: 1px solid #dddddd35; + + .user { + display: flex; + align-items: center; + gap: 20px; + + img { + width: 60px; + height: 60px; + border-radius: 50%; + object-fit: cover; + } + + .texts { + display: flex; + flex-direction: column; + gap: 5px; + + span { + font-size: 18px; + font-weight: bold; + } + + P { + font-size: 14px; + font-weight: 300; + color: #a5a5a5; + } + } + } + + .icons { + display: flex; + gap: 20px; + + img { + width: 20px; + height: 20px; + } + } + } + + .center { + flex: 1; + padding: 20px; + overflow: scroll; + overflow-x: hidden; + display: flex; + flex-direction: column; + gap: 20px; + + .message { + display: flex; + flex-direction: column; + max-width: 70%; + gap: 20px; + + &.own { + align-self: flex-end; + + img { + width: 100%; + height: 300px; + border-radius: 10px; + object-fit: cover; + } + + .texts { + p { + background-color: #5183fe; + } + } + } + + img { + width: 30px; + height: 30px; + border-radius: 50%; + object-fit: contain; + } + + .texts { + flex: 1; + display: flex; + flex-direction: column; + gap: 5px; + + P { + padding: 20px; + background-color: rgba(17, 25, 40, 0.3); + border-radius: 10px; + } + + span { + font-size: 13px; + } + } + } + } + + .bottom { + display: flex; + align-items: center; + justify-content: space-between; + border-top: 1px solid #dddddd35; + padding: 20px; + gap: 20px; + margin-top: auto; + + .icons { + display: flex; + gap: 20px; + } + img { + width: 20px; + height: 20px; + cursor: pointer; + } + + input { + flex: 1; + border: none; + outline: none; + color: #fff; + font-size: 18px; + background-color: rgba(17, 25, 40, 0.5); + padding: 20px; + border-radius: 10px; + font-size: 16px; + + &:disabled { + cursor: not-allowed; + } + } + + .emoji { + position: relative; + + .picker { + position: absolute; + bottom: 50px; + left: 0; + + } + } + + .sendButton { + background-color: #5183fe; + color: #fff; + padding: 10px 20px; + border: none; + border-radius: 5px; + cursor: pointer; + + &:disabled { + cursor: not-allowed; + background-color: #5183feb4; + } + } + } +} \ No newline at end of file diff --git a/src/components/detail/Detail.jsx b/src/components/detail/Detail.jsx new file mode 100644 index 00000000..30d20e8e --- /dev/null +++ b/src/components/detail/Detail.jsx @@ -0,0 +1,87 @@ +import { arrayRemove, arrayUnion, doc, updateDoc } from "firebase/firestore"; +import { useChatStore } from "../lib/chatStore"; +import { auth, db } from "../lib/firebase"; +import { useUserStore } from "../lib/userStore"; +import "./detail.css"; +const Detail = () => { + + const { chatId, user, isCurrentUserBlocked, isReceiverBlocked, changeBlock } = useChatStore(); + const { currentUser } = useUserStore(); + const handleBlock = async () => { + if (!user) return; + + const userDocRef = doc(db, 'users', currentUser.id) + try { + await updateDoc(userDocRef, { + blocked: isReceiverBlocked ? arrayRemove(user.id) : arrayUnion(user.id), + }); + changeBlock() + } catch (err) { + console.log(err); + } + } + + return ( +
+
+ user image +

{user?.username}

+

Lorem ipsum dolor sit amet.

+
+
+
+
+ Chat settings + icon +
+
+
+
+ Privacy & help + icon +
+
+
+
+ Share photos + icon +
+
+
+
+ picsum image + photo_2024_2.png +
+ icon +
+
+
+ picsum image + photo_2024_2.png +
+ icon +
+
+
+ picsum image + photo_2024_2.png +
+ icon +
+
+
+
+
+ Shared files + icon +
+
+ + +
+
+ ) +} +export default Detail \ No newline at end of file diff --git a/src/components/detail/detail.css b/src/components/detail/detail.css new file mode 100644 index 00000000..21f54ef8 --- /dev/null +++ b/src/components/detail/detail.css @@ -0,0 +1,100 @@ +.detail { + flex: 1; + + .user { + padding: 30px 20px; + display: flex; + flex-direction: column; + align-items: center; + gap: 15px; + border-bottom: 1px solid #dddddd35; + + img { + width: 100px; + height: 100px; + object-fit: cover; + border-radius: 50%; + } + } + + .info { + padding: 20px; + display: flex; + flex-direction: column; + gap: 25px; + + .option { + + .title { + display: flex; + align-items: center; + justify-content: space-between; + + img { + width: 30px; + height: 30px; + cursor: pointer; + border-radius: 50%; + background-color: rgba(17, 25, 40, 0.3); + padding: 10px; + } + } + .photos { + display: flex; + flex-direction: column; + gap: 20px; + margin-top: 20px; + + .photoItem { + display: flex; + align-items: center; + justify-content: space-between; + .photoDetail { + display: flex; + align-items: center; + gap: 20px; + + img { + width: 40px; + height: 40px; + border-radius: 5px; + object-fit: cover; + } + + span { + font-size: 14px; + color: grey; + font-weight: 300; + } + } + + .icon { + width: 30px; + height: 30px; + background-color:rgba(17, 25, 40, 0.3); + padding: 10px; + border-radius: 50%; + cursor: pointer; + } + } + + } + } + button { + color: #fff; + border: none; + border-radius: 5px; + cursor: pointer; + background-color: rgba(230, 74, 105, 0.553); + padding: 15px; + + &:hover { + background-color: rgba(220, 20, 60, 0.796); + } + &.logout { + padding: 10px; + background-color: #1a73e8; + } + } + } +} \ No newline at end of file diff --git a/src/components/lib/chatStore.js b/src/components/lib/chatStore.js new file mode 100644 index 00000000..c8fde8d8 --- /dev/null +++ b/src/components/lib/chatStore.js @@ -0,0 +1,46 @@ +import { doc, getDoc } from 'firebase/firestore'; +import { create } from 'zustand'; +import { db } from './firebase'; +import { useUserStore } from './userStore'; + +export const useChatStore = create((set) => ({ + chatId: null, + user: null, + isCurrentUserBlocked: false, + isReceiverBlocked: false, + changeChat: (chatId, user) => { + const currentUser = useUserStore.getState().currentUser; + + // CHEK IF CURRENT USER IS BLOCKED + if (user.blocked.includes(currentUser.id)) { + return set({ + chatId, + user: null, + isCurrentUserBlocked: true, + isReceiverBlocked: false, + }); + } + + // CHEK IF RECEIVER USER IS BLOCKED + else if (currentUser.blocked.includes(user.id)) { + return set({ + chatId, + user: user, + isCurrentUserBlocked: false, + isReceiverBlocked: true, + }); + } + else { + return set({ + chatId, + user, + isCurrentUserBlocked: false, + isReceiverBlocked: false, + }) + } + }, + + changeBlock: () => { + set(state => ({...state, isReceiverBlocked: !state.isReceiverBlocked})) + } +})); \ No newline at end of file diff --git a/src/components/lib/firebase.js b/src/components/lib/firebase.js new file mode 100644 index 00000000..cbd3c75e --- /dev/null +++ b/src/components/lib/firebase.js @@ -0,0 +1,18 @@ +import { initializeApp } from "firebase/app"; +import { getAuth } from "firebase/auth"; +import { getFirestore } from "firebase/firestore"; +import { getStorage } from "firebase/storage"; +const firebaseConfig = { + apiKey: import.meta.env.VITE_API_KEY, + authDomain: "react-chat-7d81d.firebaseapp.com", + projectId: "react-chat-7d81d", + storageBucket: "react-chat-7d81d.appspot.com", + messagingSenderId: "392735844838", + appId: "1:392735844838:web:14dd8e5ddd9560c1a68e27" +}; + +const app = initializeApp(firebaseConfig); + +export const auth = getAuth(); +export const db = getFirestore() +export const storage = getStorage() \ No newline at end of file diff --git a/src/components/lib/upload.js b/src/components/lib/upload.js new file mode 100644 index 00000000..247fc036 --- /dev/null +++ b/src/components/lib/upload.js @@ -0,0 +1,23 @@ +import { getStorage, ref, uploadBytesResumable, getDownloadURL } from "firebase/storage"; +const upload = async (file) => { + const date = new Date() + const storage = getStorage(); // storage инициализируется раньше + const storageRef = ref(storage, `images/${date + file.name}`); + const uploadTask = uploadBytesResumable(storageRef, file); + + return new Promise((resolve, reject) => { + uploadTask.on('state_changed', + (snapshot) => {}, + (error) => { + reject("Something went wrong! " + error); + }, + () => { + getDownloadURL(uploadTask.snapshot.ref).then((downloadURL) => { + resolve(downloadURL); + }); + } + ); + }); +}; + +export default upload; diff --git a/src/components/lib/userStore.js b/src/components/lib/userStore.js new file mode 100644 index 00000000..ea93ca4a --- /dev/null +++ b/src/components/lib/userStore.js @@ -0,0 +1,27 @@ +import { doc, getDoc } from 'firebase/firestore'; +import { create } from 'zustand'; +import { db } from './firebase'; + +export const useUserStore = create((set) => ({ + currentUser: null, + isLoading: true, + fetchUserInfo: async (uid) => { + if (!uid) return set({ currentUser: null, isLoading: false }); + + try { + + const docRef = doc(db, 'users', uid); + const docSnap = await getDoc(docRef); + + if (docSnap.exists()) { + set({currentUser:docSnap.data(), isLoading:false}) + } else { + set({currentUser:null, isLoading:false}) + } + + } catch (err) { + console.log(err); + return set({ currentUser: null, isLoading: false }); + } + }, +})); \ No newline at end of file diff --git a/src/components/list/List.jsx b/src/components/list/List.jsx new file mode 100644 index 00000000..cc376c95 --- /dev/null +++ b/src/components/list/List.jsx @@ -0,0 +1,12 @@ +import ChatList from "./chatList/ChatList"; +import "./list.css"; +import UserInfo from "./userInfo/UserInfo"; +const List = () => { + return ( +
+ + +
+ ) +} +export default List \ No newline at end of file diff --git a/src/components/list/chatList/ChatList.jsx b/src/components/list/chatList/ChatList.jsx new file mode 100644 index 00000000..0d988840 --- /dev/null +++ b/src/components/list/chatList/ChatList.jsx @@ -0,0 +1,106 @@ +import { useEffect, useState } from "react" +import "./chatList.css" +import AddUser from "./addUser/AddUser"; +import { useUserStore } from "../../lib/userStore"; +import { doc, getDoc, onSnapshot, updateDoc } from "firebase/firestore"; +import { db } from "../../lib/firebase"; +import { useChatStore } from "../../lib/chatStore"; +const ChatList = () => { + const [chats, setChats] = useState([]); + const [addMode, setAddMode] = useState(false); + const [input, setInput] = useState(''); + + const { currentUser } = useUserStore(); + const { chatId, changeChat } = useChatStore(); + + useEffect(() => { + const unSub = onSnapshot(doc(db, 'userchats', currentUser.id), async (res) => { + const items = res.data().chats; + + const promises = items.map(async (item) => { + const userDocRef = doc(db, 'users', item.receiverId); + const userDocSnap = await getDoc(userDocRef); + + const user = userDocSnap.data() + + return { ...item, user } + }); + + const chatData = await Promise.all(promises) + + setChats(chatData.sort((a, b) => b.updatedAt - a.updatedAt)); + }); + + return () => { + unSub() + } + }, [currentUser.id]); + + const handleSelect = async (chat) => { + + const userChats = chats.map(item => { + const { user, ...rest } = item; + return rest; + }); + + const chatIndex = userChats.findIndex(item => item.chatId === chat.chatId); + userChats[chatIndex].isSeen = true; + + const userChatsRef = doc(db, 'userchats', currentUser.id); + + try { + await updateDoc(userChatsRef, { + chats: userChats, + }) + changeChat(chat.chatId, chat.user) + } catch (err) { + console.log(err); + } + + }; + + const filteredChats = chats.filter(c => + c.user.username.toLowerCase().includes(input.toLowerCase()) + ); + + return ( +
+
+
+ icon + setInput(e.target.value)} + /> +
+ icon setAddMode(prev => !prev)} /> +
+ {filteredChats.map(chat => ( +
handleSelect(chat)} + style={{ + backgroundColor: chat?.isSeen ? "transparent" : '#5183fe' + }} + > + user image +
+ + {chat.user.blocked.includes(currentUser.id) + ? "Blocked" + : chat.user.username} + +

{chat.lastMessage}

+
+
+ ) )} + {addMode && } +
+ ); +}; + +export default ChatList; \ No newline at end of file diff --git a/src/components/list/chatList/addUser/AddUser.jsx b/src/components/list/chatList/addUser/AddUser.jsx new file mode 100644 index 00000000..b357959e --- /dev/null +++ b/src/components/list/chatList/addUser/AddUser.jsx @@ -0,0 +1,81 @@ +import "./addUser.css"; +import { collection, where, query, getDocs, setDoc, serverTimestamp, doc, updateDoc, arrayUnion } from "firebase/firestore"; +import { db } from "../../../lib/firebase"; +import { useState } from "react"; +import { useUserStore } from "../../../lib/userStore"; + +const AddUser = () => { + + const [user, setUser] = useState(null); + const { currentUser } = useUserStore(); + + const handleSearch = async (e) => { + e.preventDefault(); + const formData = new FormData(e.target); + const username = formData.get('username'); + + try { + + const userRef = collection(db, 'users'); + const q = query(userRef, where('username', "==", username)); + const querySnapShot = await getDocs(q); + + if (!querySnapShot.empty) { + setUser(querySnapShot.docs[0].data()); + } + + } catch (err) { + console.log("Error on handleSearch: ", err); + } + } + + const handleAdd = async () => { + const chatRef = doc(db, 'chats', user.id); + const userChatsRef = collection(db, 'userchats'); + try { + await setDoc(chatRef, { + createdAt: serverTimestamp(), + messages: [] + }); + + await updateDoc(doc(userChatsRef, user.id), { + chats: arrayUnion({ + chatId: chatRef.id, + lastMessage: '', + receiverId: currentUser.id, + updatedAt: Date.now(), + }) + }); + + await updateDoc(doc(userChatsRef, currentUser.id), { + chats: arrayUnion({ + chatId: chatRef.id, + lastMessage: '', + receiverId: user.id, + updatedAt: Date.now(), + }) + }); + + } catch (err) { + console.log("Error on handleAdd:", err); + } + }; + + return ( +
+
+ + +
+ {user &&
+
+ img user + {user.username} +
+ +
} +
+ ) +} + +export default AddUser \ No newline at end of file diff --git a/src/components/list/chatList/addUser/addUser.css b/src/components/list/chatList/addUser/addUser.css new file mode 100644 index 00000000..951ea332 --- /dev/null +++ b/src/components/list/chatList/addUser/addUser.css @@ -0,0 +1,63 @@ +.addUser { + width: max-content; + height: max-content; + position: absolute; + top: 0; + left: 0; + right: 0; + bottom: 0; + border-radius: 10px; + backdrop-filter: blur(19px) saturate(180%); + background-color: rgba(17, 25, 40, 0.5); + padding: 30px; + margin: auto; + + form { + display: flex; + gap: 30px; + + input { + padding: 20px; + border-radius: 10px; + border: none; + outline: none; + } + + button { + padding: 20px; + border-radius: 10px; + background-color: #1a73e8; + color: #fff; + border: none; + cursor: pointer; + } + } + .user { + margin-top: 50px; + display: flex; + align-items: center; + justify-content: space-between; + + .detail { + display: flex; + align-items: center; + gap: 20px; + + img { + width: 50px; + height: 50px; + object-fit: cover; + border-radius: 50%; + } + } + + button { + padding: 10px; + border-radius: 10px; + background-color: #1a73e8; + color: #fff; + border: none; + cursor: pointer; + } + } +} \ No newline at end of file diff --git a/src/components/list/chatList/chatList.css b/src/components/list/chatList/chatList.css new file mode 100644 index 00000000..fe7bae76 --- /dev/null +++ b/src/components/list/chatList/chatList.css @@ -0,0 +1,74 @@ +.chatList { + flex: 1; + overflow: scroll; + overflow-x: hidden; + .search { + display: flex; + align-items: center; + gap: 20px; + padding: 20px; + + .searchBar { + display: flex; + align-items: center; + gap: 20px; + flex: 1; + border-radius: 10px; + background-color: rgba(17, 25, 40, 0.5); + padding: 10px; + + input { + flex: 1; + outline: none; + color: #fff; + background-color: transparent; + border: none; + } + + img { + width: 20px; + height: 20px; + + } + } + .add { + width: 36px; + height: 36px; + background-color: rgba(17, 25, 40, 0.5); + padding: 10px; + border-radius: 10px; + cursor: pointer; + } + } + + .item { + display: flex; + align-items: center; + gap: 20px; + padding: 20px; + cursor: pointer; + border: 1px solid #dddddd35; + + img { + width: 50px; + height: 50px; + border-radius: 50%; + object-fit: cover; + } + + .texts { + display: flex; + flex-direction: column; + gap: 10px; + + span { + font-weight: 500; + } + + p { + font-size: 14px; + font-weight: 300; + } + } + } +} \ No newline at end of file diff --git a/src/components/list/list.css b/src/components/list/list.css new file mode 100644 index 00000000..e5263e5a --- /dev/null +++ b/src/components/list/list.css @@ -0,0 +1,5 @@ +.list { + display: flex; + flex: 1; + flex-direction: column; +} \ No newline at end of file diff --git a/src/components/list/userInfo/UserInfo.jsx b/src/components/list/userInfo/UserInfo.jsx new file mode 100644 index 00000000..771300ee --- /dev/null +++ b/src/components/list/userInfo/UserInfo.jsx @@ -0,0 +1,22 @@ +import "./userInfo.css"; +import { useUserStore } from "../../../components/lib/userStore"; + +const UserInfo = () => { + const { currentUser } = useUserStore(); + + return ( +
+
+ user image +

{ currentUser.username}

+
+
+ icon + icon + icon +
+
+ ) +} + +export default UserInfo \ No newline at end of file diff --git a/src/components/list/userInfo/userInfo.css b/src/components/list/userInfo/userInfo.css new file mode 100644 index 00000000..cf1fa117 --- /dev/null +++ b/src/components/list/userInfo/userInfo.css @@ -0,0 +1,29 @@ +.userInfo { + padding: 20px; + display: flex; + align-items: center; + justify-content: space-between; + + .user { + display: flex; + align-items: center; + gap: 20px; + + img { + width: 50px; + height: 50px; + border-radius: 50%; + object-fit: cover; + } + } + .icons { + display: flex; + gap: 20px; + + img { + width: 20px; + height: 20px; + cursor: pointer; + } + } +} \ No newline at end of file diff --git a/src/components/login/Login.jsx b/src/components/login/Login.jsx new file mode 100644 index 00000000..890dd1e9 --- /dev/null +++ b/src/components/login/Login.jsx @@ -0,0 +1,112 @@ +import { toast } from "react-toastify"; +import "./login.css"; +import { useState } from "react"; +import { + createUserWithEmailAndPassword, + signInWithEmailAndPassword +} from "firebase/auth"; +import { auth, db } from "../lib/firebase"; +import { doc, setDoc } from "firebase/firestore"; +import upload from "../lib/upload"; + +const Login = () => { + const [avatar, setAvatar] = useState({ + file: null, + url: "" + }); + + const [loading, setLoading] = useState(false) + + const handleAvatar = e => { + if (e.target.files[0]) { + + setAvatar({ + file: e.target.files[0], + url: URL.createObjectURL(e.target.files[0]) + }) + } + }; + + const handleRegister = async (e) => { + e.preventDefault(); + setLoading(true) + const formData = new FormData(e.target); + const { username, email, password } = Object.fromEntries(formData); + + try { + + const res = await createUserWithEmailAndPassword(auth, email, password); + + const imgUrl = await upload(avatar.file) + + await setDoc(doc(db, "users", res.user.uid), { + username, + email, + avatar: imgUrl, + id: res.user.uid, + blocked: [], + }); + + await setDoc(doc(db, "userchats", res.user.uid), { + chats: [], + }); + + toast.success("Account created successfully! You can login now )") + + } catch (err) { + console.log(err); + toast.error(err.message) + } finally { + setLoading(false); + } + } + + const handleLogin = async (e) => { + + e.preventDefault(); + setLoading(true) + + const formData = new FormData(e.target); + const { email, password } = Object.fromEntries(formData); + + try { + await signInWithEmailAndPassword(auth, email, password); + } catch (err) { + console.log(err); + toast.error(err.message) + } + finally { + setLoading(false) + } + + } + + return ( +
+
+

Welcome back!

+
+ + + +
+
+
+
+

Create an Account

+
+ + + + + + +
+
+
+ ) +} + +export default Login \ No newline at end of file diff --git a/src/components/login/login.css b/src/components/login/login.css new file mode 100644 index 00000000..8db1363b --- /dev/null +++ b/src/components/login/login.css @@ -0,0 +1,71 @@ +.login { + width: 100%; + height: 100%; + display: flex; + align-items: center; + gap: 100px; + + .item { + flex: 1; + display: flex; + flex-direction: column; + align-items: center; + gap: 20px; + + form { + display: flex; + flex-direction: column; + align-items: center; + justify-content: center; + gap: 20px; + + input { + color: #fff; + border: none; + outline: none; + border-radius: 5px; + background-color: rgba(17, 25, 40, 0.6); + padding: 20px; + } + + label { + width: 100%; + display: flex; + align-items: center; + justify-content: space-between; + cursor: pointer; + text-decoration: underline; + + img { + width: 50px; + height: 50px; + border-radius: 10px; + object-fit: cover; + opacity: 0.6; + } + } + + button { + width: 100%; + padding: 20px; + border: none; + color: #fff; + font-weight: 500; + cursor: pointer; + border-radius: 5px; + background-color: #1f8ef1; + + &:disabled { + cursor: not-allowed; + background-color: #1f8ff192; + } + } + } + } + + .seperator { + height: 80%; + width: 2px; + background-color: #dddddd35; + } +} \ No newline at end of file diff --git a/src/components/notification/Notification.jsx b/src/components/notification/Notification.jsx new file mode 100644 index 00000000..d9f39191 --- /dev/null +++ b/src/components/notification/Notification.jsx @@ -0,0 +1,12 @@ +import { ToastContainer } from "react-toastify"; +import "react-toastify/dist/ReactToastify.css"; + +const Notification = () => { + return ( +
+ +
+ ) +} + +export default Notification \ No newline at end of file diff --git a/src/index.css b/src/index.css index af5885b7..077c8cb9 100644 --- a/src/index.css +++ b/src/index.css @@ -4,4 +4,33 @@ box-sizing: border-box; font-family: "Lucida Sans", "Lucida Sans Regular", "Lucida Grande", "Lucida Sans Unicode", Geneva, Verdana, sans-serif; +} + +body { + display: flex; + justify-content: center; + align-items: center; + background-image: url("../public/bg.jpg"); + background-repeat: no-repeat; + background-size: cover; + height: 100vh; + color: #fff; + overflow-x: hidden; +} + +.container { + display: flex; + width: 80vw; + height: 90vh; + background: rgba(17, 25, 40, 0.75); + border-radius: 12px; + backdrop-filter: blur(19px) saturate(180%); + border: 1px solid rgba(255, 255, 255, 0.125); +} + +.loading { + padding: 59px; + font-size: 36px; + border-radius: 10px; + background-color: rgba(17, 25, 0, 0.9); } \ No newline at end of file From a121a456358bbd0376cffee9b1f59381d2289773 Mon Sep 17 00:00:00 2001 From: devGiyosiddin Date: Thu, 26 Sep 2024 22:17:29 +0500 Subject: [PATCH 02/29] file headers --- _headers | 2 ++ 1 file changed, 2 insertions(+) create mode 100644 _headers diff --git a/_headers b/_headers new file mode 100644 index 00000000..096c1dea --- /dev/null +++ b/_headers @@ -0,0 +1,2 @@ +/* + Content-Type: text/html; charset=UTF-8 \ No newline at end of file From 0f3063e3adaea7a85bc5708be8cb815fdb088d04 Mon Sep 17 00:00:00 2001 From: devGiyosiddin Date: Thu, 26 Sep 2024 22:23:23 +0500 Subject: [PATCH 03/29] Fix mimo-type problem v1 --- vite.config.js | 1 + 1 file changed, 1 insertion(+) diff --git a/vite.config.js b/vite.config.js index 5a33944a..a1ceabe2 100644 --- a/vite.config.js +++ b/vite.config.js @@ -4,4 +4,5 @@ import react from '@vitejs/plugin-react' // https://vitejs.dev/config/ export default defineConfig({ plugins: [react()], + base: 'https://dc-react-chat.netlify.app/', }) From c195843d19241aee9d54fec68540512ea831436e Mon Sep 17 00:00:00 2001 From: devGiyosiddin Date: Thu, 26 Sep 2024 22:26:32 +0500 Subject: [PATCH 04/29] fix mimo-type problem v1.1 --- vite.config.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/vite.config.js b/vite.config.js index a1ceabe2..86d0462e 100644 --- a/vite.config.js +++ b/vite.config.js @@ -4,5 +4,5 @@ import react from '@vitejs/plugin-react' // https://vitejs.dev/config/ export default defineConfig({ plugins: [react()], - base: 'https://dc-react-chat.netlify.app/', + base: './', }) From c3317fc6f4750009d7af026c316fbc1678cbf32e Mon Sep 17 00:00:00 2001 From: devGiyosiddin Date: Fri, 27 Sep 2024 13:44:08 +0500 Subject: [PATCH 05/29] Fix mime-type error v1.2 --- vite.config.js | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/vite.config.js b/vite.config.js index 86d0462e..fffcf020 100644 --- a/vite.config.js +++ b/vite.config.js @@ -4,5 +4,6 @@ import react from '@vitejs/plugin-react' // https://vitejs.dev/config/ export default defineConfig({ plugins: [react()], - base: './', + base: "https://devgiyosiddin.github.io/react-firebase-chat/", }) + From dd1ccf2c540e66fbeff7ff77fda6cdf82abf5dd9 Mon Sep 17 00:00:00 2001 From: devGiyosiddin Date: Fri, 27 Sep 2024 13:47:25 +0500 Subject: [PATCH 06/29] Fix mime-type error v1.3 --- src/main.jsx | 2 +- vite.config.js | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/src/main.jsx b/src/main.jsx index 54b39dd1..0291fe5b 100644 --- a/src/main.jsx +++ b/src/main.jsx @@ -7,4 +7,4 @@ ReactDOM.createRoot(document.getElementById('root')).render( , -) +) \ No newline at end of file diff --git a/vite.config.js b/vite.config.js index fffcf020..3977ea3d 100644 --- a/vite.config.js +++ b/vite.config.js @@ -4,6 +4,6 @@ import react from '@vitejs/plugin-react' // https://vitejs.dev/config/ export default defineConfig({ plugins: [react()], - base: "https://devgiyosiddin.github.io/react-firebase-chat/", + base: "/pages/dist/", }) From d43e62361206250c6ba93aa4c38fe97fb82b0fe4 Mon Sep 17 00:00:00 2001 From: devGiyosiddin <134719870+devGiyosiddin@users.noreply.github.com> Date: Fri, 27 Sep 2024 14:02:16 +0500 Subject: [PATCH 07/29] Update README.md --- README.md | 2 -- 1 file changed, 2 deletions(-) diff --git a/README.md b/README.md index 6224ebed..8b137891 100644 --- a/README.md +++ b/README.md @@ -1,3 +1 @@ -# Lama Dev Chat App Starter template -This template provides a minimal setup to get React working in Vite with HMR and some ESLint rules. From 20b8f4f51dd6f957121e2614370be8021abf40a2 Mon Sep 17 00:00:00 2001 From: devGiyosiddin Date: Fri, 27 Sep 2024 15:00:06 +0500 Subject: [PATCH 08/29] Fix mime-type problem v2.0 --- _headers | 4 ++-- index.html | 2 +- vite.config.js | 2 +- 3 files changed, 4 insertions(+), 4 deletions(-) diff --git a/_headers b/_headers index 096c1dea..01889e10 100644 --- a/_headers +++ b/_headers @@ -1,2 +1,2 @@ -/* - Content-Type: text/html; charset=UTF-8 \ No newline at end of file +/src/main.jsx + Content-Type: application/javascript \ No newline at end of file diff --git a/index.html b/index.html index 8ec18ef8..d9c69feb 100644 --- a/index.html +++ b/index.html @@ -8,6 +8,6 @@
- + diff --git a/vite.config.js b/vite.config.js index 3977ea3d..697ebcd2 100644 --- a/vite.config.js +++ b/vite.config.js @@ -4,6 +4,6 @@ import react from '@vitejs/plugin-react' // https://vitejs.dev/config/ export default defineConfig({ plugins: [react()], - base: "/pages/dist/", + base: "/react-firebase-chat/", }) From b7433489ad430fbc8bf690e6f2db58c8fda6dc5c Mon Sep 17 00:00:00 2001 From: devGiyosiddin Date: Fri, 27 Sep 2024 15:02:23 +0500 Subject: [PATCH 09/29] Fix mime-type problem v2.1 --- index.html | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/index.html b/index.html index d9c69feb..fe5729a0 100644 --- a/index.html +++ b/index.html @@ -8,6 +8,6 @@
- + From 02a44994eb777fd1b45b6559de74d3b27825290f Mon Sep 17 00:00:00 2001 From: devGiyosiddin Date: Fri, 27 Sep 2024 17:32:35 +0500 Subject: [PATCH 10/29] Update --- README.md | 1 - src/components/chat/chat.css | 1 + src/components/detail/Detail.jsx | 19 +++++++++++++------ src/components/detail/detail.css | 11 ++++++++++- vite.config.js | 1 - 5 files changed, 24 insertions(+), 9 deletions(-) diff --git a/README.md b/README.md index 8b137891..e69de29b 100644 --- a/README.md +++ b/README.md @@ -1 +0,0 @@ - diff --git a/src/components/chat/chat.css b/src/components/chat/chat.css index a3a0ad0e..71dd62b5 100644 --- a/src/components/chat/chat.css +++ b/src/components/chat/chat.css @@ -100,6 +100,7 @@ gap: 5px; P { + width: max-content; padding: 20px; background-color: rgba(17, 25, 40, 0.3); border-radius: 10px; diff --git a/src/components/detail/Detail.jsx b/src/components/detail/Detail.jsx index 30d20e8e..0bcb3807 100644 --- a/src/components/detail/Detail.jsx +++ b/src/components/detail/Detail.jsx @@ -3,10 +3,17 @@ import { useChatStore } from "../lib/chatStore"; import { auth, db } from "../lib/firebase"; import { useUserStore } from "../lib/userStore"; import "./detail.css"; + const Detail = () => { const { chatId, user, isCurrentUserBlocked, isReceiverBlocked, changeBlock } = useChatStore(); const { currentUser } = useUserStore(); + + const openItem = (e) => { + const item = e.currentTarget; + item.classList.toggle("active"); + } + const handleBlock = async () => { if (!user) return; @@ -29,19 +36,19 @@ const Detail = () => {

Lorem ipsum dolor sit amet.

-
+
Chat settings icon
-
+
Privacy & help icon
-
+
Share photos icon @@ -66,11 +73,11 @@ const Detail = () => { picsum image photo_2024_2.png
- icon + icon
-
+
Shared files icon @@ -84,4 +91,4 @@ const Detail = () => {
) } -export default Detail \ No newline at end of file +export default Detail; diff --git a/src/components/detail/detail.css b/src/components/detail/detail.css index 21f54ef8..c356271f 100644 --- a/src/components/detail/detail.css +++ b/src/components/detail/detail.css @@ -24,7 +24,15 @@ gap: 25px; .option { + overflow: hidden; + &.active { + .photos { + height: max-content; + margin-top: 20px; + } + } + .title { display: flex; align-items: center; @@ -41,9 +49,10 @@ } .photos { display: flex; + height: 0; flex-direction: column; gap: 20px; - margin-top: 20px; + margin-top: 0; .photoItem { display: flex; diff --git a/vite.config.js b/vite.config.js index 697ebcd2..962333c5 100644 --- a/vite.config.js +++ b/vite.config.js @@ -4,6 +4,5 @@ import react from '@vitejs/plugin-react' // https://vitejs.dev/config/ export default defineConfig({ plugins: [react()], - base: "/react-firebase-chat/", }) From d3299f28e7a9615590f390ccd38b05629620eb72 Mon Sep 17 00:00:00 2001 From: devGiyosiddin Date: Mon, 30 Sep 2024 15:59:38 +0500 Subject: [PATCH 11/29] install react-icons --- package-lock.json | 9 +++++++++ package.json | 1 + 2 files changed, 10 insertions(+) diff --git a/package-lock.json b/package-lock.json index d72cf144..29d90dc2 100644 --- a/package-lock.json +++ b/package-lock.json @@ -12,6 +12,7 @@ "firebase": "^10.13.2", "react": "^18.2.0", "react-dom": "^18.2.0", + "react-icons": "^5.3.0", "react-toastify": "^10.0.5", "zustand": "^5.0.0-rc.2" }, @@ -4205,6 +4206,14 @@ "react": "^18.3.1" } }, + "node_modules/react-icons": { + "version": "5.3.0", + "resolved": "https://registry.npmjs.org/react-icons/-/react-icons-5.3.0.tgz", + "integrity": "sha512-DnUk8aFbTyQPSkCfF8dbX6kQjXA9DktMeJqfjrg6cK9vwQVMxmcA3BfP4QoiztVmEHtwlTgLFsPuH2NskKT6eg==", + "peerDependencies": { + "react": "*" + } + }, "node_modules/react-is": { "version": "16.13.1", "resolved": "https://registry.npmjs.org/react-is/-/react-is-16.13.1.tgz", diff --git a/package.json b/package.json index 37852a58..540ed374 100644 --- a/package.json +++ b/package.json @@ -14,6 +14,7 @@ "firebase": "^10.13.2", "react": "^18.2.0", "react-dom": "^18.2.0", + "react-icons": "^5.3.0", "react-toastify": "^10.0.5", "zustand": "^5.0.0-rc.2" }, From 90d4561c3b45fddc4f5c36f4edc58a79878fb380 Mon Sep 17 00:00:00 2001 From: devGiyosiddin Date: Mon, 30 Sep 2024 15:59:59 +0500 Subject: [PATCH 12/29] Add deltete button for chatlist --- src/components/chat/Chat.jsx | 119 ++++++++++++++-------- src/components/lib/chatStore.js | 2 +- src/components/list/chatList/ChatList.jsx | 59 +++++++---- src/components/list/chatList/chatList.css | 18 ++++ 4 files changed, 139 insertions(+), 59 deletions(-) diff --git a/src/components/chat/Chat.jsx b/src/components/chat/Chat.jsx index 17ed9ef7..5d6b3c66 100644 --- a/src/components/chat/Chat.jsx +++ b/src/components/chat/Chat.jsx @@ -6,6 +6,7 @@ import { db } from "../lib/firebase"; import { useChatStore } from "../lib/chatStore"; import { useUserStore } from "../lib/userStore"; import upload from "../lib/upload"; + const Chat = () => { const [chat, setChat] = useState(""); const [open, setOpen] = useState(false); @@ -14,6 +15,7 @@ const Chat = () => { file: null, url: '', }); + const [audioFile, setAudioFile] = useState(null); // Для голосовых const endRef = useRef(null); const { chatId, user, isCurrentUserBlocked, isReceiverBlocked } = useChatStore(); const { currentUser } = useUserStore(); @@ -34,8 +36,6 @@ const Chat = () => { } }, [chatId]); - console.log(chat); - const handleEmoji = (e) => { setText(prev => prev + e.emoji); setOpen(false) @@ -50,10 +50,65 @@ const Chat = () => { } }; + const handleCamera = async () => { + try { + const stream = await navigator.mediaDevices.getUserMedia({ video: true }); + const video = document.createElement('video'); + video.srcObject = stream; + video.play(); + + // Делание снимка + const canvas = document.createElement('canvas'); + canvas.width = video.videoWidth; + canvas.height = video.videoHeight; + const context = canvas.getContext('2d'); + context.drawImage(video, 0, 0, canvas.width, canvas.height); + + video.pause(); + stream.getTracks().forEach(track => track.stop()); // Останавливаем камеру + + const imgDataUrl = canvas.toDataURL('image/jpeg'); + const response = await fetch(imgDataUrl); + const blob = await response.blob(); + setImg({ + file: blob, + url: imgDataUrl, + }); + } catch (err) { + console.log("Camera error:", err); + } + }; + + const handleVoice = async () => { + try { + const stream = await navigator.mediaDevices.getUserMedia({ audio: true }); + const mediaRecorder = new MediaRecorder(stream); + let audioChunks = []; + + mediaRecorder.ondataavailable = (event) => { + audioChunks.push(event.data); + }; + + mediaRecorder.onstop = async () => { + const audioBlob = new Blob(audioChunks, { type: 'audio/wav' }); + setAudioFile(audioBlob); + }; + + mediaRecorder.start(); + + setTimeout(() => { + mediaRecorder.stop(); // Останавливаем запись через 5 секунд (или по другому условию) + }, 5000); + } catch (err) { + console.log("Voice error:", err); + } + }; + const handleSend = async () => { - if (text === '') return; + if (text === '' && !img.file && !audioFile) return; let imgUrl = null; + let audioUrl = null; try { @@ -61,52 +116,34 @@ const Chat = () => { imgUrl = await upload(img.file); } + if (audioFile) { + audioUrl = await upload(audioFile); // Логика загрузки аудио + } + await updateDoc(doc(db, 'chats', chatId), { messages: arrayUnion({ senderId: currentUser.id, text, createdAt: new Date(), - ...(imgUrl && {img: imgUrl}), + ...(imgUrl && { img: imgUrl }), + ...(audioUrl && { audio: audioUrl }), // Добавляем аудио }) }); - const userIds = [currentUser.id, user.id] - userIds.forEach(async (id) => { - - const userChatsRef = doc(db, 'userchats', id); - const userChatSnapshot = await getDoc(userChatsRef); - - if (userChatSnapshot.exists()) { - const userChatsData = userChatSnapshot.data(); - const chatIndex = userChatsData.chats.findIndex(c => c.chatId === chatId); - - userChatsData.chats[chatIndex] = { - ...userChatsData.chats[chatIndex], - lastMessage: text, - isSeen: id === currentUser.id ? true : false, - updatedAt: Date.now(), - }; - - - await updateDoc(userChatsRef, { - chats: userChatsData.chats, - }) - } - }); - } catch (err) { console.log("Error on handleSend:", err); } setImg({ file: null, - ulr: '' - }) + url: '' + }); + setAudioFile(null); setText(''); - } - + }; + return (
@@ -128,6 +165,7 @@ const Chat = () => {
{message.img && User image} + {message.audio && } {/* Воспроизведение аудио */}

{message.text}

@@ -145,26 +183,27 @@ const Chat = () => { - - icon - icon + + icon + icon
e.key === 'Enter' && handleSend()} onChange={(e) => setText(e.target.value)} disabled={isCurrentUserBlocked || isReceiverBlocked} />
icon setOpen(prev => !prev)} /> -
- -
+
+ +
- +
) } -export default Chat \ No newline at end of file +export default Chat; \ No newline at end of file diff --git a/src/components/lib/chatStore.js b/src/components/lib/chatStore.js index c8fde8d8..8e509a35 100644 --- a/src/components/lib/chatStore.js +++ b/src/components/lib/chatStore.js @@ -29,7 +29,7 @@ export const useChatStore = create((set) => ({ isCurrentUserBlocked: false, isReceiverBlocked: true, }); - } + } else { return set({ chatId, diff --git a/src/components/list/chatList/ChatList.jsx b/src/components/list/chatList/ChatList.jsx index 0d988840..c42851a8 100644 --- a/src/components/list/chatList/ChatList.jsx +++ b/src/components/list/chatList/ChatList.jsx @@ -1,10 +1,12 @@ -import { useEffect, useState } from "react" -import "./chatList.css" +import { useEffect, useState } from "react"; +import "./chatList.css"; import AddUser from "./addUser/AddUser"; import { useUserStore } from "../../lib/userStore"; import { doc, getDoc, onSnapshot, updateDoc } from "firebase/firestore"; import { db } from "../../lib/firebase"; import { useChatStore } from "../../lib/chatStore"; +import { FaRegTrashCan } from "react-icons/fa6"; + const ChatList = () => { const [chats, setChats] = useState([]); const [addMode, setAddMode] = useState(false); @@ -15,29 +17,28 @@ const ChatList = () => { useEffect(() => { const unSub = onSnapshot(doc(db, 'userchats', currentUser.id), async (res) => { - const items = res.data().chats; + const items = res.data().chats; const promises = items.map(async (item) => { const userDocRef = doc(db, 'users', item.receiverId); const userDocSnap = await getDoc(userDocRef); - const user = userDocSnap.data() + const user = userDocSnap.data(); - return { ...item, user } + return { ...item, user }; }); - const chatData = await Promise.all(promises) + const chatData = await Promise.all(promises); setChats(chatData.sort((a, b) => b.updatedAt - a.updatedAt)); }); return () => { - unSub() - } + unSub(); + }; }, [currentUser.id]); const handleSelect = async (chat) => { - const userChats = chats.map(item => { const { user, ...rest } = item; return rest; @@ -45,18 +46,36 @@ const ChatList = () => { const chatIndex = userChats.findIndex(item => item.chatId === chat.chatId); userChats[chatIndex].isSeen = true; - + const userChatsRef = doc(db, 'userchats', currentUser.id); - + try { await updateDoc(userChatsRef, { chats: userChats, - }) - changeChat(chat.chatId, chat.user) + }); + changeChat(chat.chatId, chat.user); } catch (err) { console.log(err); } - + }; + + const handleDelete = async (chatId) => { + const userChatsRef = doc(db, 'userchats', currentUser.id); + + const filteredChats = chats.filter(chat => chat.chatId !== chatId); + const updatedChats = filteredChats.map(item => { + const { user, ...rest } = item; + return rest; + }); + + try { + await updateDoc(userChatsRef, { + chats: updatedChats, + }); + setChats(filteredChats); // Обновляем состояние после удаления + } catch (err) { + console.log("Error while deleting chat: ", err); + } }; const filteredChats = chats.filter(c => @@ -88,16 +107,20 @@ const ChatList = () => { : chat.user.avatar || "./avatar.png"} alt="user image" /> -
+
{chat.user.blocked.includes(currentUser.id) ? "Blocked" : chat.user.username} -

{chat.lastMessage}

+

{chat.lastMessage}

+
+
-
- ) )} + ))} {addMode && }
); diff --git a/src/components/list/chatList/chatList.css b/src/components/list/chatList/chatList.css index fe7bae76..8c79d4c3 100644 --- a/src/components/list/chatList/chatList.css +++ b/src/components/list/chatList/chatList.css @@ -42,6 +42,7 @@ } .item { + position: relative; display: flex; align-items: center; gap: 20px; @@ -60,15 +61,32 @@ display: flex; flex-direction: column; gap: 10px; + width: max-content; span { + font-size: 20px; font-weight: 500; } p { font-size: 14px; font-weight: 300; + border-radius: 10px; + border-top-left-radius: 0; + background-color: rgba(17, 25, 40, 0.5); + padding: 5px; } } + .delete-btn { + position: absolute; + right: 5%; + float: right; + color: #fff; + cursor: pointer; + border: none; + border-radius: 5px; + background-color: rgba(17, 25, 40, 0.5); + padding: 5px; + } } } \ No newline at end of file From 89837e9212eb8111665a8860a5090ee096be31a0 Mon Sep 17 00:00:00 2001 From: devGiyosiddin Date: Mon, 30 Sep 2024 16:10:06 +0500 Subject: [PATCH 13/29] Add function close window addUser on adding user succesfully --- src/components/list/chatList/ChatList.jsx | 2 +- .../list/chatList/addUser/AddUser.jsx | 38 ++++++++++--------- 2 files changed, 21 insertions(+), 19 deletions(-) diff --git a/src/components/list/chatList/ChatList.jsx b/src/components/list/chatList/ChatList.jsx index c42851a8..dfdd345b 100644 --- a/src/components/list/chatList/ChatList.jsx +++ b/src/components/list/chatList/ChatList.jsx @@ -121,7 +121,7 @@ const ChatList = () => { }}>{}
))} - {addMode && } + {addMode && } ); }; diff --git a/src/components/list/chatList/addUser/AddUser.jsx b/src/components/list/chatList/addUser/AddUser.jsx index b357959e..c17cdc46 100644 --- a/src/components/list/chatList/addUser/AddUser.jsx +++ b/src/components/list/chatList/addUser/AddUser.jsx @@ -4,8 +4,7 @@ import { db } from "../../../lib/firebase"; import { useState } from "react"; import { useUserStore } from "../../../lib/userStore"; -const AddUser = () => { - +const AddUser = ({ setAddMode }) => { const [user, setUser] = useState(null); const { currentUser } = useUserStore(); @@ -15,7 +14,6 @@ const AddUser = () => { const username = formData.get('username'); try { - const userRef = collection(db, 'users'); const q = query(userRef, where('username', "==", username)); const querySnapShot = await getDocs(q); @@ -23,11 +21,10 @@ const AddUser = () => { if (!querySnapShot.empty) { setUser(querySnapShot.docs[0].data()); } - } catch (err) { console.log("Error on handleSearch: ", err); } - } + }; const handleAdd = async () => { const chatRef = doc(db, 'chats', user.id); @@ -37,7 +34,7 @@ const AddUser = () => { createdAt: serverTimestamp(), messages: [] }); - + await updateDoc(doc(userChatsRef, user.id), { chats: arrayUnion({ chatId: chatRef.id, @@ -46,7 +43,7 @@ const AddUser = () => { updatedAt: Date.now(), }) }); - + await updateDoc(doc(userChatsRef, currentUser.id), { chats: arrayUnion({ chatId: chatRef.id, @@ -55,27 +52,32 @@ const AddUser = () => { updatedAt: Date.now(), }) }); - + + // Закрываем окно после добавления пользователя + setAddMode(false); + } catch (err) { console.log("Error on handleAdd:", err); } }; - + return (
- {user &&
-
- img user - {user.username} + {user && ( +
+
+ img user + {user.username} +
+
- -
} + )}
- ) -} + ); +}; -export default AddUser \ No newline at end of file +export default AddUser; \ No newline at end of file From 53f1de2de6e0d4a6536284de8576ad30b3a0fe2a Mon Sep 17 00:00:00 2001 From: devGiyosiddin Date: Mon, 30 Sep 2024 16:12:54 +0500 Subject: [PATCH 14/29] Last messsage on chat --- src/components/list/chatList/ChatList.jsx | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/components/list/chatList/ChatList.jsx b/src/components/list/chatList/ChatList.jsx index dfdd345b..4ea8f2c2 100644 --- a/src/components/list/chatList/ChatList.jsx +++ b/src/components/list/chatList/ChatList.jsx @@ -113,7 +113,7 @@ const ChatList = () => { ? "Blocked" : chat.user.username} -

{chat.lastMessage}

+ {chat.lastMessage &&

{chat.lastMessage}

}
diff --git a/src/components/chat/chat.css b/src/components/chat/chat.css index 71dd62b5..31168041 100644 --- a/src/components/chat/chat.css +++ b/src/components/chat/chat.css @@ -155,7 +155,7 @@ position: absolute; bottom: 50px; left: 0; - + background-color: grey; } } From 2be6312aa7e9c2a785d9b79c30d3250b1bd2e04d Mon Sep 17 00:00:00 2001 From: devGiyosiddin Date: Mon, 30 Sep 2024 17:04:21 +0500 Subject: [PATCH 16/29] Close emojipicker on click outside --- src/components/chat/Chat.jsx | 36 +++++++++++++++++++++++++----------- 1 file changed, 25 insertions(+), 11 deletions(-) diff --git a/src/components/chat/Chat.jsx b/src/components/chat/Chat.jsx index de36be48..f7aa1ef3 100644 --- a/src/components/chat/Chat.jsx +++ b/src/components/chat/Chat.jsx @@ -18,6 +18,7 @@ const Chat = () => { }); const [audioFile, setAudioFile] = useState(null); // Для голосовых const endRef = useRef(null); + const emojiPickerRef = useRef(null); // Создаем ref для emoji-picker const { chatId, user, isCurrentUserBlocked, isReceiverBlocked } = useChatStore(); const { currentUser } = useUserStore(); @@ -38,10 +39,22 @@ const Chat = () => { }, [chatId]); const handleEmoji = (e) => { - setText(prev => prev + e.emoji); - setOpen(false) + setText(prev => prev + e.emoji); // Добавляем эмодзи к тексту }; + useEffect(() => { + const handleClickOutside = (event) => { + if (emojiPickerRef.current && !emojiPickerRef.current.contains(event.target)) { + setOpen(false); // Закрываем emoji-picker при клике вне его области + } + }; + + document.addEventListener("mousedown", handleClickOutside); + return () => { + document.removeEventListener("mousedown", handleClickOutside); + }; + }, []); + const handleImg = e => { if (e.target.files[0]) { setImg({ @@ -112,7 +125,6 @@ const Chat = () => { let audioUrl = null; try { - if (img.file) { imgUrl = await upload(img.file); } @@ -130,7 +142,6 @@ const Chat = () => { ...(audioUrl && { audio: audioUrl }), // Добавляем аудио }) }); - } catch (err) { console.log("Error on handleSend:", err); } @@ -142,7 +153,6 @@ const Chat = () => { setAudioFile(null); setText(''); - }; return ( @@ -195,12 +205,16 @@ const Chat = () => { onChange={(e) => setText(e.target.value)} disabled={isCurrentUserBlocked || isReceiverBlocked} /> -
- icon setOpen(prev => !prev)} /> -
- -
+
+ icon setOpen(prev => !prev)} /> + {open && ( +
+ +
+ )}
From 567dfe370f90a6189144db43c8f18f46a39ae0ff Mon Sep 17 00:00:00 2001 From: devGiyosiddin Date: Mon, 30 Sep 2024 19:06:10 +0500 Subject: [PATCH 17/29] Add removeText button --- src/components/chat/Chat.jsx | 10 ++++++++++ src/components/chat/chat.css | 6 ++++++ src/components/detail/detail.css | 1 + 3 files changed, 17 insertions(+) diff --git a/src/components/chat/Chat.jsx b/src/components/chat/Chat.jsx index f7aa1ef3..bf4c3e0d 100644 --- a/src/components/chat/Chat.jsx +++ b/src/components/chat/Chat.jsx @@ -7,6 +7,7 @@ import { db } from "../lib/firebase"; import { useChatStore } from "../lib/chatStore"; import { useUserStore } from "../lib/userStore"; import upload from "../lib/upload"; +import { FiDelete } from "react-icons/fi"; const Chat = () => { const [chat, setChat] = useState(""); @@ -118,6 +119,14 @@ const Chat = () => { } }; + const removeText = () => { + // remove last character from input value + setText(prev => prev.slice(0, -1)); + + // remove last emoji + setText(prev => prev.replace(/([\u2700-\u27BF]|[\uE000-\uF8FF]|\uD83C[\uDC00-\uDFFF]|\uD83D[\uDC00-\uDFFF]|[\u2011-\u26FF]|\uD83E[\uDD10-\uDDFF])/g, '')) + } + const handleSend = async () => { if (text === '' && !img.file && !audioFile) return; @@ -205,6 +214,7 @@ const Chat = () => { onChange={(e) => setText(e.target.value)} disabled={isCurrentUserBlocked || isReceiverBlocked} /> +
icon setOpen(prev => !prev)} /> {open && ( diff --git a/src/components/chat/chat.css b/src/components/chat/chat.css index 31168041..683e2bcc 100644 --- a/src/components/chat/chat.css +++ b/src/components/chat/chat.css @@ -148,6 +148,12 @@ } } + .removeText { + width: 24px; + height: 24px; + cursor: pointer; + } + .emoji { position: relative; diff --git a/src/components/detail/detail.css b/src/components/detail/detail.css index c356271f..d37bc380 100644 --- a/src/components/detail/detail.css +++ b/src/components/detail/detail.css @@ -58,6 +58,7 @@ display: flex; align-items: center; justify-content: space-between; + cursor: pointer; .photoDetail { display: flex; align-items: center; From e794a8b8f8653b56fe5885876a57f56bf231293e Mon Sep 17 00:00:00 2001 From: devGiyosiddin Date: Mon, 30 Sep 2024 19:13:17 +0500 Subject: [PATCH 18/29] Add cursor pointer to detail optiona --- src/components/detail/detail.css | 1 + 1 file changed, 1 insertion(+) diff --git a/src/components/detail/detail.css b/src/components/detail/detail.css index d37bc380..377b2c5a 100644 --- a/src/components/detail/detail.css +++ b/src/components/detail/detail.css @@ -25,6 +25,7 @@ .option { overflow: hidden; + cursor: pointer; &.active { .photos { From 9a4b7fd8e57f143c58ec7ee1da8698243b844085 Mon Sep 17 00:00:00 2001 From: devGiyosiddin Date: Mon, 30 Sep 2024 19:31:31 +0500 Subject: [PATCH 19/29] Srolldown on load messages --- src/components/chat/Chat.jsx | 20 +++++++++++--------- 1 file changed, 11 insertions(+), 9 deletions(-) diff --git a/src/components/chat/Chat.jsx b/src/components/chat/Chat.jsx index bf4c3e0d..e5f9f654 100644 --- a/src/components/chat/Chat.jsx +++ b/src/components/chat/Chat.jsx @@ -7,7 +7,7 @@ import { db } from "../lib/firebase"; import { useChatStore } from "../lib/chatStore"; import { useUserStore } from "../lib/userStore"; import upload from "../lib/upload"; -import { FiDelete } from "react-icons/fi"; +import { FiDelete } from "react-icons/fi"; const Chat = () => { const [chat, setChat] = useState(""); @@ -32,7 +32,9 @@ const Chat = () => { doc(db, 'chats', chatId), (res) => { setChat(res.data()); - }) + endRef.current?.scrollIntoView({ behavior: 'smooth' }); // Скролл вниз при получении сообщения + } + ); return () => { unSub(); @@ -61,7 +63,7 @@ const Chat = () => { setImg({ file: e.target.files[0], url: URL.createObjectURL(e.target.files[0]) - }) + }); } }; @@ -122,10 +124,7 @@ const Chat = () => { const removeText = () => { // remove last character from input value setText(prev => prev.slice(0, -1)); - - // remove last emoji - setText(prev => prev.replace(/([\u2700-\u27BF]|[\uE000-\uF8FF]|\uD83C[\uDC00-\uDFFF]|\uD83D[\uDC00-\uDFFF]|[\u2011-\u26FF]|\uD83E[\uDD10-\uDDFF])/g, '')) - } + }; const handleSend = async () => { if (text === '' && !img.file && !audioFile) return; @@ -151,6 +150,8 @@ const Chat = () => { ...(audioUrl && { audio: audioUrl }), // Добавляем аудио }) }); + + endRef.current?.scrollIntoView({ behavior: 'smooth' }); // Скролл вниз при отправке сообщения } catch (err) { console.log("Error on handleSend:", err); } @@ -229,6 +230,7 @@ const Chat = () => {
- ) -} + ); +}; + export default Chat; \ No newline at end of file From fd29fef158d93d646313f56d3bc11a3eea635d1a Mon Sep 17 00:00:00 2001 From: devGiyosiddin Date: Mon, 30 Sep 2024 19:41:42 +0500 Subject: [PATCH 20/29] Add cursor: pointer; for icons --- src/components/chat/chat.css | 1 + 1 file changed, 1 insertion(+) diff --git a/src/components/chat/chat.css b/src/components/chat/chat.css index 683e2bcc..13b0e1ca 100644 --- a/src/components/chat/chat.css +++ b/src/components/chat/chat.css @@ -50,6 +50,7 @@ img { width: 20px; height: 20px; + cursor: pointer; } } } From 0196281d282d3772ca3a8dfb70a19afdbd0f82b7 Mon Sep 17 00:00:00 2001 From: devGiyosiddin Date: Mon, 30 Sep 2024 21:33:29 +0500 Subject: [PATCH 21/29] delete unwanted stroke --- src/components/chat/Chat.jsx | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/components/chat/Chat.jsx b/src/components/chat/Chat.jsx index e5f9f654..b04337d0 100644 --- a/src/components/chat/Chat.jsx +++ b/src/components/chat/Chat.jsx @@ -211,7 +211,7 @@ const Chat = () => { e.key === 'Enter' && handleSend()} + onKeyDown={(e) => e.key === 'Enter' && handleSend()} onChange={(e) => setText(e.target.value)} disabled={isCurrentUserBlocked || isReceiverBlocked} /> From 476fb8aa3c4d238120d0514f9fd0981f099514ab Mon Sep 17 00:00:00 2001 From: devGiyosiddin Date: Mon, 30 Sep 2024 22:02:49 +0500 Subject: [PATCH 22/29] Fix mime-type error v3.0 --- vite.config.js | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/vite.config.js b/vite.config.js index 962333c5..5e975a3d 100644 --- a/vite.config.js +++ b/vite.config.js @@ -4,5 +4,5 @@ import react from '@vitejs/plugin-react' // https://vitejs.dev/config/ export default defineConfig({ plugins: [react()], -}) - + base: "https://github.com/devGiyosiddin/react-firebase-chat", +}); \ No newline at end of file From b42c6575524b2dfab44f01b2b68b9e3c7ad15d15 Mon Sep 17 00:00:00 2001 From: devGiyosiddin Date: Mon, 30 Sep 2024 22:07:30 +0500 Subject: [PATCH 23/29] Fix mime-type error v3.1 --- vite.config.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/vite.config.js b/vite.config.js index 5e975a3d..371bf43c 100644 --- a/vite.config.js +++ b/vite.config.js @@ -4,5 +4,5 @@ import react from '@vitejs/plugin-react' // https://vitejs.dev/config/ export default defineConfig({ plugins: [react()], - base: "https://github.com/devGiyosiddin/react-firebase-chat", + base: "/react-firebase-chat/dist/", }); \ No newline at end of file From 90b0149a01c9aa8be19274afa57fb3a5fd3b0625 Mon Sep 17 00:00:00 2001 From: devGiyosiddin Date: Fri, 4 Oct 2024 13:37:50 +0500 Subject: [PATCH 24/29] Add react-dom-router --- package-lock.json | 39 +++++++++++++++++++++++++++++++++++++++ package.json | 4 +++- 2 files changed, 42 insertions(+), 1 deletion(-) diff --git a/package-lock.json b/package-lock.json index 29d90dc2..7d875260 100644 --- a/package-lock.json +++ b/package-lock.json @@ -13,6 +13,7 @@ "react": "^18.2.0", "react-dom": "^18.2.0", "react-icons": "^5.3.0", + "react-router-dom": "^6.26.2", "react-toastify": "^10.0.5", "zustand": "^5.0.0-rc.2" }, @@ -1466,6 +1467,14 @@ "resolved": "https://registry.npmjs.org/@protobufjs/utf8/-/utf8-1.1.0.tgz", "integrity": "sha512-Vvn3zZrhQZkkBE8LSuW3em98c0FwgO4nxzv6OdSxPKJIEKY2bGbHn+mhGIPerzI4twdxaP8/0+06HBpwf345Lw==" }, + "node_modules/@remix-run/router": { + "version": "1.19.2", + "resolved": "https://registry.npmjs.org/@remix-run/router/-/router-1.19.2.tgz", + "integrity": "sha512-baiMx18+IMuD1yyvOGaHM9QrVUPGGG0jC+z+IPHnRJWUAUvaKuWKyE8gjDj2rzv3sz9zOGoRSPgeBVHRhZnBlA==", + "engines": { + "node": ">=14.0.0" + } + }, "node_modules/@rollup/rollup-android-arm-eabi": { "version": "4.22.4", "resolved": "https://registry.npmjs.org/@rollup/rollup-android-arm-eabi/-/rollup-android-arm-eabi-4.22.4.tgz", @@ -4229,6 +4238,36 @@ "node": ">=0.10.0" } }, + "node_modules/react-router": { + "version": "6.26.2", + "resolved": "https://registry.npmjs.org/react-router/-/react-router-6.26.2.tgz", + "integrity": "sha512-tvN1iuT03kHgOFnLPfLJ8V95eijteveqdOSk+srqfePtQvqCExB8eHOYnlilbOcyJyKnYkr1vJvf7YqotAJu1A==", + "dependencies": { + "@remix-run/router": "1.19.2" + }, + "engines": { + "node": ">=14.0.0" + }, + "peerDependencies": { + "react": ">=16.8" + } + }, + "node_modules/react-router-dom": { + "version": "6.26.2", + "resolved": "https://registry.npmjs.org/react-router-dom/-/react-router-dom-6.26.2.tgz", + "integrity": "sha512-z7YkaEW0Dy35T3/QKPYB1LjMK2R1fxnHO8kWpUMTBdfVzZrWOiY9a7CtN8HqdWtDUWd5FY6Dl8HFsqVwH4uOtQ==", + "dependencies": { + "@remix-run/router": "1.19.2", + "react-router": "6.26.2" + }, + "engines": { + "node": ">=14.0.0" + }, + "peerDependencies": { + "react": ">=16.8", + "react-dom": ">=16.8" + } + }, "node_modules/react-toastify": { "version": "10.0.5", "resolved": "https://registry.npmjs.org/react-toastify/-/react-toastify-10.0.5.tgz", diff --git a/package.json b/package.json index 540ed374..3d73a7cb 100644 --- a/package.json +++ b/package.json @@ -15,6 +15,7 @@ "react": "^18.2.0", "react-dom": "^18.2.0", "react-icons": "^5.3.0", + "react-router-dom": "^6.26.2", "react-toastify": "^10.0.5", "zustand": "^5.0.0-rc.2" }, @@ -26,6 +27,7 @@ "eslint-plugin-react": "^7.34.1", "eslint-plugin-react-hooks": "^4.6.0", "eslint-plugin-react-refresh": "^0.4.6", - "vite": "^5.2.0" + "vite": "^5.2.0", + "typescript": "^5.0.2" } } From fc56522b3b132fd4883537b88953a940c52659a2 Mon Sep 17 00:00:00 2001 From: devGiyosiddin Date: Fri, 4 Oct 2024 14:14:17 +0500 Subject: [PATCH 25/29] update url --- index.html | 2 +- package-lock.json | 327 ++++++++++++++++++++++++++++++++++++++++++++++ package.json | 9 +- 3 files changed, 334 insertions(+), 4 deletions(-) diff --git a/index.html b/index.html index fe5729a0..043ac52d 100644 --- a/index.html +++ b/index.html @@ -8,6 +8,6 @@
- + diff --git a/package-lock.json b/package-lock.json index 7d875260..428ac0c9 100644 --- a/package-lock.json +++ b/package-lock.json @@ -25,6 +25,8 @@ "eslint-plugin-react": "^7.34.1", "eslint-plugin-react-hooks": "^4.6.0", "eslint-plugin-react-refresh": "^0.4.6", + "gh-pages": "6.1.1", + "typescript": "^5.0.2", "vite": "^5.2.0" } }, @@ -1887,6 +1889,27 @@ "url": "https://github.com/sponsors/ljharb" } }, + "node_modules/array-union": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/array-union/-/array-union-1.0.2.tgz", + "integrity": "sha512-Dxr6QJj/RdU/hCaBjOfxW+q6lyuVE6JFWIrAUpuOOhoJJoQ99cUn3igRaHVB5P9WrgFVN0FfArM3x0cueOU8ng==", + "dev": true, + "dependencies": { + "array-uniq": "^1.0.1" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/array-uniq": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/array-uniq/-/array-uniq-1.0.3.tgz", + "integrity": "sha512-MNha4BWQ6JbwhFhj03YK552f7cb3AzoE8SzeljgChvL1dl3IcvggXVz1DilzySZkCja+CXuZbdW7yATchWn8/Q==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, "node_modules/array.prototype.findlast": { "version": "1.2.5", "resolved": "https://registry.npmjs.org/array.prototype.findlast/-/array.prototype.findlast-1.2.5.tgz", @@ -1981,6 +2004,12 @@ "url": "https://github.com/sponsors/ljharb" } }, + "node_modules/async": { + "version": "3.2.6", + "resolved": "https://registry.npmjs.org/async/-/async-3.2.6.tgz", + "integrity": "sha512-htCUDlxyyCLMgaM3xXg0C0LW2xqfuQ6p05pCEIsXuyQ+a1koYKTuBMzRNwmybfLgvJDMd0r1LTn4+E0Ti6C2AA==", + "dev": true + }, "node_modules/available-typed-arrays": { "version": "1.0.7", "resolved": "https://registry.npmjs.org/available-typed-arrays/-/available-typed-arrays-1.0.7.tgz", @@ -2142,6 +2171,21 @@ "integrity": "sha512-72fSenhMw2HZMTVHeCA9KCmpEIbzWiQsjN+BHcBbS9vr1mtt+vJjPdksIBNUmKAW8TFUDPJK5SUU3QhE9NEXDw==", "dev": true }, + "node_modules/commander": { + "version": "11.1.0", + "resolved": "https://registry.npmjs.org/commander/-/commander-11.1.0.tgz", + "integrity": "sha512-yPVavfyCcRhmorC7rWlkHn15b4wDVgVmBA7kV4QVBsF7kv/9TKJAbAXVTxvTnwP8HHKjRCJDClKbciiYS7p0DQ==", + "dev": true, + "engines": { + "node": ">=16" + } + }, + "node_modules/commondir": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/commondir/-/commondir-1.0.1.tgz", + "integrity": "sha512-W9pAhw0ja1Edb5GVdIF1mjZw/ASI0AlShXM83UUGe2DVr5TdAPEA1OA8m/g8zWp9x6On7gqufY+FatDbC3MDQg==", + "dev": true + }, "node_modules/concat-map": { "version": "0.0.1", "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz", @@ -2300,6 +2344,12 @@ "integrity": "sha512-VufdJl+rzaKZoYVUijN13QcXVF5dWPZANeFTLNy+OSpHdDL5ynXTF35+60RSBbaQYB1ae723lQXHCrf4pyLsMw==", "dev": true }, + "node_modules/email-addresses": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/email-addresses/-/email-addresses-5.0.0.tgz", + "integrity": "sha512-4OIPYlA6JXqtVn8zpHpGiI7vE6EQOAg16aGnDMIAlZVinnoZ8208tW1hAbjWydgN/4PLTT9q+O1K6AH/vALJGw==", + "dev": true + }, "node_modules/emoji-picker-react": { "version": "4.12.0", "resolved": "https://registry.npmjs.org/emoji-picker-react/-/emoji-picker-react-4.12.0.tgz", @@ -2886,6 +2936,49 @@ "node": "^10.12.0 || >=12.0.0" } }, + "node_modules/filename-reserved-regex": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/filename-reserved-regex/-/filename-reserved-regex-2.0.0.tgz", + "integrity": "sha512-lc1bnsSr4L4Bdif8Xb/qrtokGbq5zlsms/CYH8PP+WtCkGNF65DPiQY8vG3SakEdRn8Dlnm+gW/qWKKjS5sZzQ==", + "dev": true, + "engines": { + "node": ">=4" + } + }, + "node_modules/filenamify": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/filenamify/-/filenamify-4.3.0.tgz", + "integrity": "sha512-hcFKyUG57yWGAzu1CMt/dPzYZuv+jAJUT85bL8mrXvNe6hWj6yEHEc4EdcgiA6Z3oi1/9wXJdZPXF2dZNgwgOg==", + "dev": true, + "dependencies": { + "filename-reserved-regex": "^2.0.0", + "strip-outer": "^1.0.1", + "trim-repeated": "^1.0.0" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/find-cache-dir": { + "version": "3.3.2", + "resolved": "https://registry.npmjs.org/find-cache-dir/-/find-cache-dir-3.3.2.tgz", + "integrity": "sha512-wXZV5emFEjrridIgED11OoUKLxiYjAcqot/NJdAkOhlJ+vGzwhOAfcG5OX1jP+S0PcjEn8bdMJv+g2jwQ3Onig==", + "dev": true, + "dependencies": { + "commondir": "^1.0.1", + "make-dir": "^3.0.2", + "pkg-dir": "^4.1.0" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/avajs/find-cache-dir?sponsor=1" + } + }, "node_modules/find-up": { "version": "5.0.0", "resolved": "https://registry.npmjs.org/find-up/-/find-up-5.0.0.tgz", @@ -2970,6 +3063,20 @@ "is-callable": "^1.1.3" } }, + "node_modules/fs-extra": { + "version": "11.2.0", + "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-11.2.0.tgz", + "integrity": "sha512-PmDi3uwK5nFuXh7XDTlVnS17xJS7vW36is2+w3xcv8SVxiB4NyATf4ctkVY5bkSjX0Y4nbvZCq1/EjtEyr9ktw==", + "dev": true, + "dependencies": { + "graceful-fs": "^4.2.0", + "jsonfile": "^6.0.1", + "universalify": "^2.0.0" + }, + "engines": { + "node": ">=14.14" + } + }, "node_modules/fs.realpath": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz", @@ -3079,6 +3186,28 @@ "url": "https://github.com/sponsors/ljharb" } }, + "node_modules/gh-pages": { + "version": "6.1.1", + "resolved": "https://registry.npmjs.org/gh-pages/-/gh-pages-6.1.1.tgz", + "integrity": "sha512-upnohfjBwN5hBP9w2dPE7HO5JJTHzSGMV1JrLrHvNuqmjoYHg6TBrCcnEoorjG/e0ejbuvnwyKMdTyM40PEByw==", + "dev": true, + "dependencies": { + "async": "^3.2.4", + "commander": "^11.0.0", + "email-addresses": "^5.0.0", + "filenamify": "^4.3.0", + "find-cache-dir": "^3.3.1", + "fs-extra": "^11.1.1", + "globby": "^6.1.0" + }, + "bin": { + "gh-pages": "bin/gh-pages.js", + "gh-pages-clean": "bin/gh-pages-clean.js" + }, + "engines": { + "node": ">=10" + } + }, "node_modules/glob": { "version": "7.2.3", "resolved": "https://registry.npmjs.org/glob/-/glob-7.2.3.tgz", @@ -3137,6 +3266,22 @@ "url": "https://github.com/sponsors/ljharb" } }, + "node_modules/globby": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/globby/-/globby-6.1.0.tgz", + "integrity": "sha512-KVbFv2TQtbzCoxAnfD6JcHZTYCzyliEaaeM/gH8qQdkKr5s0OP9scEgvdcngyk7AVdY6YVW/TJHd+lQ/Df3Daw==", + "dev": true, + "dependencies": { + "array-union": "^1.0.1", + "glob": "^7.0.3", + "object-assign": "^4.0.1", + "pify": "^2.0.0", + "pinkie-promise": "^2.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, "node_modules/gopd": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/gopd/-/gopd-1.0.1.tgz", @@ -3149,6 +3294,12 @@ "url": "https://github.com/sponsors/ljharb" } }, + "node_modules/graceful-fs": { + "version": "4.2.11", + "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.11.tgz", + "integrity": "sha512-RbJ5/jmFcNNCcDV5o9eTnBLJ/HszWV0P73bc+Ff4nS/rJj+YaS6IGyiOL0VoBYX+l1Wrl3k63h/KrH+nhJ0XvQ==", + "dev": true + }, "node_modules/graphemer": { "version": "1.4.0", "resolved": "https://registry.npmjs.org/graphemer/-/graphemer-1.4.0.tgz", @@ -3743,6 +3894,18 @@ "node": ">=6" } }, + "node_modules/jsonfile": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/jsonfile/-/jsonfile-6.1.0.tgz", + "integrity": "sha512-5dgndWOriYSm5cnYaJNhalLNDKOqFwyDB/rr1E9ZsGciGvKPs8R2xYGCacuf3z6K1YKDz182fd+fY3cn3pMqXQ==", + "dev": true, + "dependencies": { + "universalify": "^2.0.0" + }, + "optionalDependencies": { + "graceful-fs": "^4.1.6" + } + }, "node_modules/jsx-ast-utils": { "version": "3.3.5", "resolved": "https://registry.npmjs.org/jsx-ast-utils/-/jsx-ast-utils-3.3.5.tgz", @@ -3831,6 +3994,21 @@ "yallist": "^3.0.2" } }, + "node_modules/make-dir": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/make-dir/-/make-dir-3.1.0.tgz", + "integrity": "sha512-g3FeP20LNwhALb/6Cz6Dd4F2ngze0jz7tbzrD2wAV+o9FeNHe4rL+yK2md0J/fiSf1sa1ADhXqi5+oVwOM/eGw==", + "dev": true, + "dependencies": { + "semver": "^6.0.0" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, "node_modules/minimatch": { "version": "3.1.2", "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz", @@ -4032,6 +4210,15 @@ "url": "https://github.com/sponsors/sindresorhus" } }, + "node_modules/p-try": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/p-try/-/p-try-2.2.0.tgz", + "integrity": "sha512-R4nPAVTAU0B9D35/Gk3uJf/7XYbQcyohSKdvAxIRSNghFl4e71hVoGnBNQz9cWaXxO2I10KTC+3jMdvvoKw6dQ==", + "dev": true, + "engines": { + "node": ">=6" + } + }, "node_modules/parent-module": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/parent-module/-/parent-module-1.0.1.tgz", @@ -4083,6 +4270,100 @@ "integrity": "sha512-TQ92mBOW0l3LeMeyLV6mzy/kWr8lkd/hp3mTg7wYK7zJhuBStmGMBG0BdeDZS/dZx1IukaX6Bk11zcln25o1Aw==", "dev": true }, + "node_modules/pify": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/pify/-/pify-2.3.0.tgz", + "integrity": "sha512-udgsAY+fTnvv7kI7aaxbqwWNb0AHiB0qBO89PZKPkoTmGOgdbrHDKD+0B2X4uTfJ/FT1R09r9gTsjUjNJotuog==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/pinkie": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/pinkie/-/pinkie-2.0.4.tgz", + "integrity": "sha512-MnUuEycAemtSaeFSjXKW/aroV7akBbY+Sv+RkyqFjgAe73F+MR0TBWKBRDkmfWq/HiFmdavfZ1G7h4SPZXaCSg==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/pinkie-promise": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/pinkie-promise/-/pinkie-promise-2.0.1.tgz", + "integrity": "sha512-0Gni6D4UcLTbv9c57DfxDGdr41XfgUjqWZu492f0cIGr16zDU06BWP/RAEvOuo7CQ0CNjHaLlM59YJJFm3NWlw==", + "dev": true, + "dependencies": { + "pinkie": "^2.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/pkg-dir": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/pkg-dir/-/pkg-dir-4.2.0.tgz", + "integrity": "sha512-HRDzbaKjC+AOWVXxAU/x54COGeIv9eb+6CkDSQoNTt4XyWoIJvuPsXizxu/Fr23EiekbtZwmh1IcIG/l/a10GQ==", + "dev": true, + "dependencies": { + "find-up": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/pkg-dir/node_modules/find-up": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/find-up/-/find-up-4.1.0.tgz", + "integrity": "sha512-PpOwAdQ/YlXQ2vj8a3h8IipDuYRi3wceVQQGYWxNINccq40Anw7BlsEXCMbt1Zt+OLA6Fq9suIpIWD0OsnISlw==", + "dev": true, + "dependencies": { + "locate-path": "^5.0.0", + "path-exists": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/pkg-dir/node_modules/locate-path": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-5.0.0.tgz", + "integrity": "sha512-t7hw9pI+WvuwNJXwk5zVHpyhIqzg2qTlklJOf0mVxGSbe3Fp2VieZcduNYjaLDoy6p9uGpQEGWG87WpMKlNq8g==", + "dev": true, + "dependencies": { + "p-locate": "^4.1.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/pkg-dir/node_modules/p-limit": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-2.3.0.tgz", + "integrity": "sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w==", + "dev": true, + "dependencies": { + "p-try": "^2.0.0" + }, + "engines": { + "node": ">=6" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/pkg-dir/node_modules/p-locate": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-4.1.0.tgz", + "integrity": "sha512-R79ZZ/0wAxKGu3oYMlz8jy/kbhsNrS7SKZ7PxEHBgJ5+F2mtFW2fK2cOtBh1cHYkQsbzFV7I+EoRKe6Yt0oK7A==", + "dev": true, + "dependencies": { + "p-limit": "^2.2.0" + }, + "engines": { + "node": ">=8" + } + }, "node_modules/possible-typed-array-names": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/possible-typed-array-names/-/possible-typed-array-names-1.0.0.tgz", @@ -4709,6 +4990,18 @@ "url": "https://github.com/sponsors/sindresorhus" } }, + "node_modules/strip-outer": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/strip-outer/-/strip-outer-1.0.1.tgz", + "integrity": "sha512-k55yxKHwaXnpYGsOzg4Vl8+tDrWylxDEpknGjhTiZB8dFRU5rTo9CAzeycivxV3s+zlTKwrs6WxMxR95n26kwg==", + "dev": true, + "dependencies": { + "escape-string-regexp": "^1.0.2" + }, + "engines": { + "node": ">=0.10.0" + } + }, "node_modules/supports-color": { "version": "5.5.0", "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", @@ -4748,6 +5041,18 @@ "node": ">=4" } }, + "node_modules/trim-repeated": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/trim-repeated/-/trim-repeated-1.0.0.tgz", + "integrity": "sha512-pkonvlKk8/ZuR0D5tLW8ljt5I8kmxp2XKymhepUeOdCEfKpZaktSArkLHZt76OB1ZvO9bssUsDty4SWhLvZpLg==", + "dev": true, + "dependencies": { + "escape-string-regexp": "^1.0.2" + }, + "engines": { + "node": ">=0.10.0" + } + }, "node_modules/tslib": { "version": "2.7.0", "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.7.0.tgz", @@ -4850,6 +5155,19 @@ "url": "https://github.com/sponsors/ljharb" } }, + "node_modules/typescript": { + "version": "5.6.2", + "resolved": "https://registry.npmjs.org/typescript/-/typescript-5.6.2.tgz", + "integrity": "sha512-NW8ByodCSNCwZeghjN3o+JX5OFH0Ojg6sadjEKY4huZ52TqbJTJnDo5+Tw98lSy63NZvi4n+ez5m2u5d4PkZyw==", + "dev": true, + "bin": { + "tsc": "bin/tsc", + "tsserver": "bin/tsserver" + }, + "engines": { + "node": ">=14.17" + } + }, "node_modules/unbox-primitive": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/unbox-primitive/-/unbox-primitive-1.0.2.tgz", @@ -4878,6 +5196,15 @@ "resolved": "https://registry.npmjs.org/undici-types/-/undici-types-6.19.8.tgz", "integrity": "sha512-ve2KP6f/JnbPBFyobGHuerC9g1FYGn/F8n1LWTwNxCEzd6IfqTwUQcNXgEtmmQ6DlRrC1hrSrBnCZPokRrDHjw==" }, + "node_modules/universalify": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/universalify/-/universalify-2.0.1.tgz", + "integrity": "sha512-gptHNQghINnc/vTGIk0SOFGFNXw7JVrlRUtConJRlvaw6DuX0wO5Jeko9sWrMBhh+PsYAZ7oXAiOnf/UKogyiw==", + "dev": true, + "engines": { + "node": ">= 10.0.0" + } + }, "node_modules/update-browserslist-db": { "version": "1.1.0", "resolved": "https://registry.npmjs.org/update-browserslist-db/-/update-browserslist-db-1.1.0.tgz", diff --git a/package.json b/package.json index 3d73a7cb..d7302819 100644 --- a/package.json +++ b/package.json @@ -3,11 +3,13 @@ "private": true, "version": "0.0.0", "type": "module", + "homepage": "https://devGiyosiddin.github.io/react-firebase-chat/", "scripts": { "dev": "vite", "build": "vite build", "lint": "eslint . --ext js,jsx --report-unused-disable-directives --max-warnings 0", - "preview": "vite preview" + "preview": "vite preview", + "deploy": "npm run build && gh-pages -d dist" }, "dependencies": { "emoji-picker-react": "^4.12.0", @@ -27,7 +29,8 @@ "eslint-plugin-react": "^7.34.1", "eslint-plugin-react-hooks": "^4.6.0", "eslint-plugin-react-refresh": "^0.4.6", - "vite": "^5.2.0", - "typescript": "^5.0.2" + "gh-pages": "6.1.1", + "typescript": "^5.0.2", + "vite": "^5.2.0" } } From f14d5b48bdbb1bd804b32ec7cd938b73a2317f35 Mon Sep 17 00:00:00 2001 From: devGiyosiddin Date: Fri, 4 Oct 2024 14:20:42 +0500 Subject: [PATCH 26/29] a --- package.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/package.json b/package.json index d7302819..00762e26 100644 --- a/package.json +++ b/package.json @@ -3,7 +3,7 @@ "private": true, "version": "0.0.0", "type": "module", - "homepage": "https://devGiyosiddin.github.io/react-firebase-chat/", + "homepage": "https://devgiyosiddin.github.io/react-firebase-chat/", "scripts": { "dev": "vite", "build": "vite build", From 97c52634b96433e76ecdff274ddc961d6ebca6dd Mon Sep 17 00:00:00 2001 From: devGiyosiddin Date: Fri, 4 Oct 2024 21:27:42 +0500 Subject: [PATCH 27/29] update JSX --- index.html | 2 +- src/App.jsx | 8 ++++---- vite.config.js | 3 +-- 3 files changed, 6 insertions(+), 7 deletions(-) diff --git a/index.html b/index.html index 043ac52d..fe5729a0 100644 --- a/index.html +++ b/index.html @@ -8,6 +8,6 @@
- + diff --git a/src/App.jsx b/src/App.jsx index d95327c5..c6b17f57 100644 --- a/src/App.jsx +++ b/src/App.jsx @@ -1,7 +1,7 @@ -import List from "./components/list/list"; -import Chat from "./components/chat/chat"; -import Detail from "./components/detail/detail"; -import Login from "./components/login/login"; +import List from "./components/list/List"; +import Chat from "./components/chat/Chat"; +import Detail from "./components/detail/Detail"; +import Login from "./components/login/Login"; import Notification from "./components/notification/Notification"; import { useEffect } from "react"; import { onAuthStateChanged } from "firebase/auth"; diff --git a/vite.config.js b/vite.config.js index 371bf43c..47f852b5 100644 --- a/vite.config.js +++ b/vite.config.js @@ -3,6 +3,5 @@ import react from '@vitejs/plugin-react' // https://vitejs.dev/config/ export default defineConfig({ - plugins: [react()], - base: "/react-firebase-chat/dist/", + plugins: [react()] }); \ No newline at end of file From 89a51919eccd91ea9e74aea5a46868a959e33b71 Mon Sep 17 00:00:00 2001 From: devGiyosiddin Date: Fri, 4 Oct 2024 23:26:45 +0500 Subject: [PATCH 28/29] show api --- .env | 1 + .gitignore | 1 - 2 files changed, 1 insertion(+), 1 deletion(-) create mode 100644 .env diff --git a/.env b/.env new file mode 100644 index 00000000..3ddebf12 --- /dev/null +++ b/.env @@ -0,0 +1 @@ +VITE_API_KEY = AIzaSyDu7iU87y36qMIR7bc0RQ04-MdycAOfN1M \ No newline at end of file diff --git a/.gitignore b/.gitignore index 438657a9..a547bf36 100644 --- a/.gitignore +++ b/.gitignore @@ -11,7 +11,6 @@ node_modules dist dist-ssr *.local -.env # Editor directories and files .vscode/* From 10736d73d805494cc88d8a8967c7d3e8b435bbc0 Mon Sep 17 00:00:00 2001 From: devGiyosiddin Date: Wed, 9 Oct 2024 15:42:40 +0500 Subject: [PATCH 29/29] Fix login reload --- src/components/login/Login.jsx | 55 +++++++++++++++++----------------- src/main.jsx | 17 ++++++----- 2 files changed, 38 insertions(+), 34 deletions(-) diff --git a/src/components/login/Login.jsx b/src/components/login/Login.jsx index 890dd1e9..790fa43a 100644 --- a/src/components/login/Login.jsx +++ b/src/components/login/Login.jsx @@ -1,6 +1,7 @@ import { toast } from "react-toastify"; import "./login.css"; import { useState } from "react"; +import { useNavigate } from "react-router-dom"; // Импортируем useNavigate import { createUserWithEmailAndPassword, signInWithEmailAndPassword @@ -15,29 +16,27 @@ const Login = () => { url: "" }); - const [loading, setLoading] = useState(false) + const [loading, setLoading] = useState(false); + const navigate = useNavigate(); // Инициализируем useNavigate const handleAvatar = e => { if (e.target.files[0]) { - setAvatar({ file: e.target.files[0], url: URL.createObjectURL(e.target.files[0]) - }) + }); } }; const handleRegister = async (e) => { e.preventDefault(); - setLoading(true) + setLoading(true); const formData = new FormData(e.target); const { username, email, password } = Object.fromEntries(formData); try { - const res = await createUserWithEmailAndPassword(auth, email, password); - - const imgUrl = await upload(avatar.file) + const imgUrl = await upload(avatar.file); await setDoc(doc(db, "users", res.user.uid), { username, @@ -51,35 +50,36 @@ const Login = () => { chats: [], }); - toast.success("Account created successfully! You can login now )") + toast.success("Account created successfully! You can login now )"); + + navigate("/chat"); // Перенаправление на чат после регистрации } catch (err) { console.log(err); - toast.error(err.message) + toast.error(err.message); } finally { setLoading(false); } - } + }; + const handleLogin = async (e) => { - e.preventDefault(); - setLoading(true) + setLoading(true); const formData = new FormData(e.target); const { email, password } = Object.fromEntries(formData); try { await signInWithEmailAndPassword(auth, email, password); + navigate("/chat"); // Перенаправление на чат после логина } catch (err) { console.log(err); - toast.error(err.message) - } - finally { - setLoading(false) + toast.error(err.message); + } finally { + setLoading(false); } - - } + }; return (
@@ -88,25 +88,26 @@ const Login = () => {
- +
-

Create an Account

+

Create an Account

- + User avatar + Upload an image + + - +
- ) -} + ); +}; -export default Login \ No newline at end of file +export default Login; \ No newline at end of file diff --git a/src/main.jsx b/src/main.jsx index 0291fe5b..c784ece4 100644 --- a/src/main.jsx +++ b/src/main.jsx @@ -1,10 +1,13 @@ -import React from 'react' -import ReactDOM from 'react-dom/client' -import App from './App.jsx' -import './index.css' +import React from 'react'; +import ReactDOM from 'react-dom/client'; +import App from './App.jsx'; +import './index.css'; +import { BrowserRouter } from 'react-router-dom'; // Импортируем BrowserRouter ReactDOM.createRoot(document.getElementById('root')).render( - - , -) \ No newline at end of file + {/* Оборачиваем App в BrowserRouter */} + + + +); \ No newline at end of file

{_eXpeyiN+cFCW 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 Cz!>2G literal 201094 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 XhzK>~b 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 { + + const { currentUser, isLoading, fetchUserInfo } = useUserStore(); + const { chatId } = useChatStore(); + + useEffect(() => { + const unSub = onAuthStateChanged(auth, (user) => { + fetchUserInfo(user?.uid) + }); + + return () => { + unSub(); + }; + }, [fetchUserInfo]); + + + if (isLoading) return