From b2c3c899653ad56b1033bbf62c6ddade04447ce1 Mon Sep 17 00:00:00 2001 From: Sacha Weatherstone Date: Sun, 19 Feb 2023 16:55:59 +1000 Subject: [PATCH] DM support --- package.json | 20 +- pnpm-lock.yaml | 315 +++++++++------- src/components/CommandPalette.tsx | 5 +- src/components/Dashboard.tsx | 9 +- src/components/Dialog/DeviceNameDialog.tsx | 8 +- src/components/Dialog/DialogManager.tsx | 4 +- .../PageComponents/Messages/ChannelChat.tsx | 47 ++- .../PageComponents/Messages/Message.tsx | 58 +-- .../PageComponents/Messages/MessageInput.tsx | 45 ++- .../Messages/WaypointMessage.tsx | 31 -- src/components/Sidebar.tsx | 6 +- src/core/stores/deviceStore.ts | 340 ++++++++---------- src/core/subscriptions.ts | 21 +- src/pages/Channels.tsx | 19 +- src/pages/Map.tsx | 26 +- src/pages/Messages.tsx | 79 ++-- src/pages/Peers.tsx | 30 +- 17 files changed, 532 insertions(+), 531 deletions(-) delete mode 100644 src/components/PageComponents/Messages/WaypointMessage.tsx diff --git a/package.json b/package.json index e79cd079..7fe0cccf 100644 --- a/package.json +++ b/package.json @@ -22,7 +22,7 @@ "@emeraldpay/hashicon-react": "^0.5.2", "@hookform/error-message": "^2.0.1", "@hookform/resolvers": "^2.9.11", - "@meshtastic/meshtasticjs": "2.0.20-1", + "@meshtastic/meshtasticjs": "2.0.20-5", "@radix-ui/react-accordion": "^1.1.0", "@radix-ui/react-checkbox": "^1.0.1", "@radix-ui/react-dialog": "^1.0.2", @@ -46,7 +46,7 @@ "cmdk": "^0.1.22", "geodesy": "^2.4.0", "immer": "^9.0.19", - "lucide-react": "^0.112.0", + "lucide-react": "^0.115.0", "mapbox-gl": "npm:empty-npm-package@^1.0.0", "maplibre-gl": "2.4.0", "react": "^18.2.0", @@ -62,15 +62,15 @@ }, "devDependencies": { "@tailwindcss/forms": "^0.5.3", - "@types/chrome": "^0.0.212", + "@types/chrome": "^0.0.216", "@types/geodesy": "^2.2.3", - "@types/node": "^18.13.0", + "@types/node": "^18.14.0", "@types/react": "^18.0.28", - "@types/react-dom": "^18.0.10", + "@types/react-dom": "^18.0.11", "@types/w3c-web-serial": "^1.0.3", "@types/web-bluetooth": "^0.0.16", - "@typescript-eslint/eslint-plugin": "^5.51.0", - "@typescript-eslint/parser": "^5.51.0", + "@typescript-eslint/eslint-plugin": "^5.52.0", + "@typescript-eslint/parser": "^5.52.0", "@vitejs/plugin-react": "^3.1.0", "autoprefixer": "^10.4.13", "eslint": "^8.34.0", @@ -82,13 +82,13 @@ "gzipper": "^7.2.0", "postcss": "^8.4.21", "prettier": "^2.8.4", - "prettier-plugin-tailwindcss": "^0.2.2", + "prettier-plugin-tailwindcss": "^0.2.3", "rollup-plugin-visualizer": "^5.9.0", - "tailwindcss": "^3.2.6", + "tailwindcss": "^3.2.7", "tar": "^6.1.13", "tslib": "^2.5.0", "typescript": "^4.9.5", - "vite": "^4.1.1", + "vite": "^4.1.2", "vite-plugin-environment": "^1.1.3", "vite-plugin-pwa": "^0.14.4" } diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index f52ad252..62594900 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -4,7 +4,7 @@ specifiers: '@emeraldpay/hashicon-react': ^0.5.2 '@hookform/error-message': ^2.0.1 '@hookform/resolvers': ^2.9.11 - '@meshtastic/meshtasticjs': 2.0.20-1 + '@meshtastic/meshtasticjs': 2.0.20-5 '@radix-ui/react-accordion': ^1.1.0 '@radix-ui/react-checkbox': ^1.0.1 '@radix-ui/react-dialog': ^1.0.2 @@ -21,15 +21,15 @@ specifiers: '@tailwindcss/forms': ^0.5.3 '@tailwindcss/typography': ^0.5.9 '@turf/turf': ^6.5.0 - '@types/chrome': ^0.0.212 + '@types/chrome': ^0.0.216 '@types/geodesy': ^2.2.3 - '@types/node': ^18.13.0 + '@types/node': ^18.14.0 '@types/react': ^18.0.28 - '@types/react-dom': ^18.0.10 + '@types/react-dom': ^18.0.11 '@types/w3c-web-serial': ^1.0.3 '@types/web-bluetooth': ^0.0.16 - '@typescript-eslint/eslint-plugin': ^5.51.0 - '@typescript-eslint/parser': ^5.51.0 + '@typescript-eslint/eslint-plugin': ^5.52.0 + '@typescript-eslint/parser': ^5.52.0 '@vitejs/plugin-react': ^3.1.0 autoprefixer: ^10.4.13 base64-js: ^1.5.1 @@ -47,12 +47,12 @@ specifiers: geodesy: ^2.4.0 gzipper: ^7.2.0 immer: ^9.0.19 - lucide-react: ^0.112.0 + lucide-react: ^0.115.0 mapbox-gl: npm:empty-npm-package@^1.0.0 maplibre-gl: 2.4.0 postcss: ^8.4.21 prettier: ^2.8.4 - prettier-plugin-tailwindcss: ^0.2.2 + prettier-plugin-tailwindcss: ^0.2.3 react: ^18.2.0 react-dom: ^18.2.0 react-hook-form: ^7.43.1 @@ -61,13 +61,13 @@ specifiers: rfc4648: ^1.5.2 rollup-plugin-visualizer: ^5.9.0 tailwind-merge: ^1.9.1 - tailwindcss: ^3.2.6 + tailwindcss: ^3.2.7 tailwindcss-animate: ^1.0.5 tar: ^6.1.13 timeago-react: ^3.0.5 tslib: ^2.5.0 typescript: ^4.9.5 - vite: ^4.1.1 + vite: ^4.1.2 vite-plugin-environment: ^1.1.3 vite-plugin-pwa: ^0.14.4 zustand: 4.3.3 @@ -76,7 +76,7 @@ dependencies: '@emeraldpay/hashicon-react': 0.5.2 '@hookform/error-message': 2.0.1_zf7ga3u4zrffjlingb6kh5ipva '@hookform/resolvers': 2.9.11_react-hook-form@7.43.1 - '@meshtastic/meshtasticjs': link:../js + '@meshtastic/meshtasticjs': 2.0.20-5 '@radix-ui/react-accordion': 1.1.0_biqbaboplfbrettd7655fr4n2y '@radix-ui/react-checkbox': 1.0.1_biqbaboplfbrettd7655fr4n2y '@radix-ui/react-dialog': 1.0.2_zula6vjvt3wdocc4mwcxqa6nzi @@ -90,7 +90,7 @@ dependencies: '@radix-ui/react-tabs': 1.0.2_biqbaboplfbrettd7655fr4n2y '@radix-ui/react-toast': 1.1.2_biqbaboplfbrettd7655fr4n2y '@radix-ui/react-tooltip': 1.0.3_zula6vjvt3wdocc4mwcxqa6nzi - '@tailwindcss/typography': 0.5.9_tailwindcss@3.2.6 + '@tailwindcss/typography': 0.5.9_tailwindcss@3.2.7 '@turf/turf': 6.5.0 base64-js: 1.5.1 class-transformer: 0.5.1 @@ -100,7 +100,7 @@ dependencies: cmdk: 0.1.22_zula6vjvt3wdocc4mwcxqa6nzi geodesy: 2.4.0 immer: 9.0.19 - lucide-react: 0.112.0_react@18.2.0 + lucide-react: 0.115.0_react@18.2.0 mapbox-gl: /empty-npm-package/1.0.0 maplibre-gl: 2.4.0 react: 18.2.0 @@ -110,41 +110,41 @@ dependencies: react-qrcode-logo: 2.8.0_biqbaboplfbrettd7655fr4n2y rfc4648: 1.5.2 tailwind-merge: 1.9.1 - tailwindcss-animate: 1.0.5_tailwindcss@3.2.6 + tailwindcss-animate: 1.0.5_tailwindcss@3.2.7 timeago-react: 3.0.5_react@18.2.0 zustand: 4.3.3_immer@9.0.19+react@18.2.0 devDependencies: - '@tailwindcss/forms': 0.5.3_tailwindcss@3.2.6 - '@types/chrome': 0.0.212 + '@tailwindcss/forms': 0.5.3_tailwindcss@3.2.7 + '@types/chrome': 0.0.216 '@types/geodesy': 2.2.3 - '@types/node': 18.13.0 + '@types/node': 18.14.0 '@types/react': 18.0.28 - '@types/react-dom': 18.0.10 + '@types/react-dom': 18.0.11 '@types/w3c-web-serial': 1.0.3 '@types/web-bluetooth': 0.0.16 - '@typescript-eslint/eslint-plugin': 5.51.0_z4swst3wuuqk4hlme4ajzslgh4 - '@typescript-eslint/parser': 5.51.0_7kw3g6rralp5ps6mg3uyzz6azm - '@vitejs/plugin-react': 3.1.0_vite@4.1.1 + '@typescript-eslint/eslint-plugin': 5.52.0_6cfvjsbua5ptj65675bqcn6oza + '@typescript-eslint/parser': 5.52.0_7kw3g6rralp5ps6mg3uyzz6azm + '@vitejs/plugin-react': 3.1.0_vite@4.1.2 autoprefixer: 10.4.13_postcss@8.4.21 eslint: 8.34.0 eslint-config-prettier: 8.6.0_eslint@8.34.0 eslint-import-resolver-typescript: 3.5.3_mvgyw3chnqkp6sgfmmtihyjpnm - eslint-plugin-import: 2.27.5_inmo4nrctlhmfx73hzu6aogupa + eslint-plugin-import: 2.27.5_gndiqgw2wrzfeqy4ccfxbmtnsi eslint-plugin-react: 7.32.2_eslint@8.34.0 eslint-plugin-react-hooks: 4.6.0_eslint@8.34.0 gzipper: 7.2.0 postcss: 8.4.21 prettier: 2.8.4 - prettier-plugin-tailwindcss: 0.2.2_prettier@2.8.4 + prettier-plugin-tailwindcss: 0.2.3_prettier@2.8.4 rollup-plugin-visualizer: 5.9.0 - tailwindcss: 3.2.6_postcss@8.4.21 + tailwindcss: 3.2.7_postcss@8.4.21 tar: 6.1.13 tslib: 2.5.0 typescript: 4.9.5 - vite: 4.1.1_@types+node@18.13.0 - vite-plugin-environment: 1.1.3_vite@4.1.1 - vite-plugin-pwa: 0.14.4_vite@4.1.1 + vite: 4.1.2_@types+node@18.14.0 + vite-plugin-environment: 1.1.3_vite@4.1.2 + vite-plugin-pwa: 0.14.4_vite@4.1.2 packages: @@ -268,7 +268,7 @@ packages: dependencies: '@babel/core': 7.20.12 '@babel/helper-annotate-as-pure': 7.18.6 - regexpu-core: 5.3.0 + regexpu-core: 5.3.1 dev: true /@babel/helper-define-polyfill-provider/0.3.3_@babel+core@7.20.12: @@ -1267,7 +1267,7 @@ packages: babel-plugin-polyfill-corejs2: 0.3.3_@babel+core@7.20.12 babel-plugin-polyfill-corejs3: 0.6.0_@babel+core@7.20.12 babel-plugin-polyfill-regenerator: 0.4.1_@babel+core@7.20.12 - core-js-compat: 3.27.2 + core-js-compat: 3.28.0 semver: 6.3.0 transitivePeerDependencies: - supports-color @@ -1332,6 +1332,18 @@ packages: to-fast-properties: 2.0.0 dev: true + /@buf/meshtastic_protobufs.bufbuild_es/1.0.0-20230217124815-d362b2e8810a.1_@bufbuild+protobuf@1.0.0: + resolution: {registry: https://buf.build/gen/npm/v1, tarball: https://buf.build/gen/npm/v1/@buf/meshtastic_protobufs.bufbuild_es/1.0.0-20230217124815-d362b2e8810a.1/tarball} + peerDependencies: + '@bufbuild/protobuf': ^1.0.0 + dependencies: + '@bufbuild/protobuf': 1.0.0 + dev: false + + /@bufbuild/protobuf/1.0.0: + resolution: {integrity: sha512-oH3jHBrZ6to8Qf4zLg7O8KqSY42kQZNBRXJRMp5uSi0mqE4L8NbyMnZHeOsbXmTb0xpptRyH11LfS+KeVhXzAA==} + dev: false + /@emeraldpay/hashicon-react/0.5.2: resolution: {integrity: sha512-XCoYKpq8QQOniiSZf5ouzdvXbKfG6q4ICHRqCO/GNofiF0Ra+LR/7+tomHlXVcLPBS9sDAoZQQw/Sr24KRAbJg==} engines: {node: '>=8'} @@ -1719,6 +1731,18 @@ packages: engines: {node: '>=6.0.0'} dev: false + /@meshtastic/meshtasticjs/2.0.20-5: + resolution: {integrity: sha512-4N1stS98kPeCro8VaWlcv9Y59aBvhFMi5fx7EEeWtbYElhWPI3ahhqChoykY6hh5ommHqESe954WbG7eh0wT4Q==} + dependencies: + '@buf/meshtastic_protobufs.bufbuild_es': 1.0.0-20230217124815-d362b2e8810a.1_@bufbuild+protobuf@1.0.0 + '@bufbuild/protobuf': 1.0.0 + crc: 4.3.2 + sub-events: 1.9.0 + tslog: 4.7.4 + transitivePeerDependencies: + - buffer + dev: false + /@nodelib/fs.scandir/2.1.5: resolution: {integrity: sha512-vq24Bq3ym5HEQm2NKCr3yXDwjc7vTsEThRDnkp2DK9p1uqLR+DHurm/NOTo0KG7HYHU7eppKZj3MyqYuMBf62g==} engines: {node: '>= 8'} @@ -2512,7 +2536,7 @@ packages: rollup: 2.79.1 dev: true - /@rollup/plugin-replace/5.0.2_rollup@3.15.0: + /@rollup/plugin-replace/5.0.2_rollup@3.17.1: resolution: {integrity: sha512-M9YXNekv/C/iHHK+cvORzfRYfPbq0RDD8r0G+bMiTXjNGKulPnCT9O3Ss46WfhI6ZOCgApOP7xAdmCQJ+U2LAA==} engines: {node: '>=14.0.0'} peerDependencies: @@ -2521,9 +2545,9 @@ packages: rollup: optional: true dependencies: - '@rollup/pluginutils': 5.0.2_rollup@3.15.0 + '@rollup/pluginutils': 5.0.2_rollup@3.17.1 magic-string: 0.27.0 - rollup: 3.15.0 + rollup: 3.17.1 dev: true /@rollup/pluginutils/3.1.0_rollup@2.79.1: @@ -2538,7 +2562,7 @@ packages: rollup: 2.79.1 dev: true - /@rollup/pluginutils/5.0.2_rollup@3.15.0: + /@rollup/pluginutils/5.0.2_rollup@3.17.1: resolution: {integrity: sha512-pTd9rIsP92h+B6wWwFbW8RkZv4hiR/xKsqre4SIuAOaOEQRxi0lqLke9k2/7WegC85GgUs9pjmOjCUi3In4vwA==} engines: {node: '>=14.0.0'} peerDependencies: @@ -2550,7 +2574,7 @@ packages: '@types/estree': 1.0.0 estree-walker: 2.0.2 picomatch: 2.3.1 - rollup: 3.15.0 + rollup: 3.17.1 dev: true /@stablelib/binary/1.0.1: @@ -2588,16 +2612,16 @@ packages: string.prototype.matchall: 4.0.8 dev: true - /@tailwindcss/forms/0.5.3_tailwindcss@3.2.6: + /@tailwindcss/forms/0.5.3_tailwindcss@3.2.7: resolution: {integrity: sha512-y5mb86JUoiUgBjY/o6FJSFZSEttfb3Q5gllE4xoKjAAD+vBrnIhE4dViwUuow3va8mpH4s9jyUbUbrRGoRdc2Q==} peerDependencies: tailwindcss: '>=3.0.0 || >= 3.0.0-alpha.1' dependencies: mini-svg-data-uri: 1.4.4 - tailwindcss: 3.2.6_postcss@8.4.21 + tailwindcss: 3.2.7_postcss@8.4.21 dev: true - /@tailwindcss/typography/0.5.9_tailwindcss@3.2.6: + /@tailwindcss/typography/0.5.9_tailwindcss@3.2.7: resolution: {integrity: sha512-t8Sg3DyynFysV9f4JDOVISGsjazNb48AeIYQwcL+Bsq5uf4RYL75C1giZ43KISjeDGBaTN3Kxh7Xj/vRSMJUUg==} peerDependencies: tailwindcss: '>=3.0.0 || insiders' @@ -2606,7 +2630,7 @@ packages: lodash.isplainobject: 4.0.6 lodash.merge: 4.6.2 postcss-selector-parser: 6.0.10 - tailwindcss: 3.2.6_postcss@8.4.21 + tailwindcss: 3.2.7_postcss@8.4.21 dev: false /@turf/along/6.5.0: @@ -3639,8 +3663,8 @@ packages: d3-voronoi: 1.1.2 dev: false - /@types/chrome/0.0.212: - resolution: {integrity: sha512-O9blKfj6mQyBvkexEa71xcpRfkjAu8izQD3qGYfdwffk+mJhF7eogz628bZr5dETT6Eu7vU0stUGYG/+EQWj9g==} + /@types/chrome/0.0.216: + resolution: {integrity: sha512-nJezaOm7yX2Zen+9NhNuGBE2WtssH/ssbqIeULL13wMlCwvjNmSaUeueFEixMODKyCY2vlhkD/jERSvEG0wWEA==} dependencies: '@types/filesystem': 0.0.32 '@types/har-format': 1.2.10 @@ -3706,8 +3730,8 @@ packages: '@types/pbf': 3.0.2 dev: false - /@types/node/18.13.0: - resolution: {integrity: sha512-gC3TazRzGoOnoKAhUx+Q0t8S9Tzs74z7m0ipwGpSqQrleP14hKxP4/JUeEQcD3W1/aIpnWl8pHowI7WokuZpXg==} + /@types/node/18.14.0: + resolution: {integrity: sha512-5EWrvLmglK+imbCJY0+INViFWUHg1AHel1sq4ZVSfdcNqGy9Edv3UB9IIzzg+xPaUcAgZYcfVs2fBcwDeZzU0A==} dev: true /@types/pbf/3.0.2: @@ -3717,8 +3741,8 @@ packages: /@types/prop-types/15.7.5: resolution: {integrity: sha512-JCB8C6SnDoQf0cNycqd/35A7MjcnK+ZTqE7judS6o7utxUCg6imJg3QK2qzHKszlTjcj2cn+NwMB2i96ubpj7w==} - /@types/react-dom/18.0.10: - resolution: {integrity: sha512-E42GW/JA4Qv15wQdqJq8DL4JhNpB3prJgjgapN3qJT9K2zO5IIAQh4VXvCEDupoqAwnz0cY4RlXeC/ajX5SFHg==} + /@types/react-dom/18.0.11: + resolution: {integrity: sha512-O38bPbI2CWtgw/OoQoY+BRelw7uysmXbWvw3nLWO21H1HSh+GOlqPuXshJfjmpNlKiiSDG9cc1JZAaMmVdcTlw==} dependencies: '@types/react': 18.0.28 dev: true @@ -3733,7 +3757,7 @@ packages: /@types/resolve/1.17.1: resolution: {integrity: sha512-yy7HuzQhj0dhGpD8RLXSZWEkLsV9ibvxvi6EiJ3bkqLAO1RGo0WbkWQiwpRlSFymTJRz0d3k5LM3kkx8ArDbLw==} dependencies: - '@types/node': 18.13.0 + '@types/node': 18.14.0 dev: true /@types/scheduler/0.16.2: @@ -3743,8 +3767,8 @@ packages: resolution: {integrity: sha512-21cFJr9z3g5dW8B0CVI9g2O9beqaThGQ6ZFBqHfwhzLDKUxaqTIy3vnfah/UPkfOiF2pLq+tGz+W8RyCskuslw==} dev: true - /@types/trusted-types/2.0.2: - resolution: {integrity: sha512-F5DIZ36YVLE+PN+Zwws4kJogq47hNgX3Nx6WyDJ3kcplxyke3XIzB8uK5n/Lpm1HBsbGzd6nmGehL8cPekP+Tg==} + /@types/trusted-types/2.0.3: + resolution: {integrity: sha512-NfQ4gyz38SL8sDNrSixxU2Os1a5xcdFxipAFxYEuLUlvU2uDwS4NUpsImcf1//SlWItCVMMLiylsxbmNMToV/g==} dev: true /@types/validator/13.7.12: @@ -3759,8 +3783,8 @@ packages: resolution: {integrity: sha512-oh8q2Zc32S6gd/j50GowEjKLoOVOwHP/bWVjKJInBwQqdOYMdPrf1oVlelTlyfFK3CKxL1uahMDAr+vy8T7yMQ==} dev: true - /@typescript-eslint/eslint-plugin/5.51.0_z4swst3wuuqk4hlme4ajzslgh4: - resolution: {integrity: sha512-wcAwhEWm1RgNd7dxD/o+nnLW8oH+6RK1OGnmbmkj/GGoDPV1WWMVP0FXYQBivKHdwM1pwii3bt//RC62EriIUQ==} + /@typescript-eslint/eslint-plugin/5.52.0_6cfvjsbua5ptj65675bqcn6oza: + resolution: {integrity: sha512-lHazYdvYVsBokwCdKOppvYJKaJ4S41CgKBcPvyd0xjZNbvQdhn/pnJlGtQksQ/NhInzdaeaSarlBjDXHuclEbg==} engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} peerDependencies: '@typescript-eslint/parser': ^5.0.0 @@ -3770,10 +3794,10 @@ packages: typescript: optional: true dependencies: - '@typescript-eslint/parser': 5.51.0_7kw3g6rralp5ps6mg3uyzz6azm - '@typescript-eslint/scope-manager': 5.51.0 - '@typescript-eslint/type-utils': 5.51.0_7kw3g6rralp5ps6mg3uyzz6azm - '@typescript-eslint/utils': 5.51.0_7kw3g6rralp5ps6mg3uyzz6azm + '@typescript-eslint/parser': 5.52.0_7kw3g6rralp5ps6mg3uyzz6azm + '@typescript-eslint/scope-manager': 5.52.0 + '@typescript-eslint/type-utils': 5.52.0_7kw3g6rralp5ps6mg3uyzz6azm + '@typescript-eslint/utils': 5.52.0_7kw3g6rralp5ps6mg3uyzz6azm debug: 4.3.4 eslint: 8.34.0 grapheme-splitter: 1.0.4 @@ -3787,8 +3811,8 @@ packages: - supports-color dev: true - /@typescript-eslint/parser/5.51.0_7kw3g6rralp5ps6mg3uyzz6azm: - resolution: {integrity: sha512-fEV0R9gGmfpDeRzJXn+fGQKcl0inIeYobmmUWijZh9zA7bxJ8clPhV9up2ZQzATxAiFAECqPQyMDB4o4B81AaA==} + /@typescript-eslint/parser/5.52.0_7kw3g6rralp5ps6mg3uyzz6azm: + resolution: {integrity: sha512-e2KiLQOZRo4Y0D/b+3y08i3jsekoSkOYStROYmPUnGMEoA0h+k2qOH5H6tcjIc68WDvGwH+PaOrP1XRzLJ6QlA==} engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} peerDependencies: eslint: ^6.0.0 || ^7.0.0 || ^8.0.0 @@ -3797,9 +3821,9 @@ packages: typescript: optional: true dependencies: - '@typescript-eslint/scope-manager': 5.51.0 - '@typescript-eslint/types': 5.51.0 - '@typescript-eslint/typescript-estree': 5.51.0_typescript@4.9.5 + '@typescript-eslint/scope-manager': 5.52.0 + '@typescript-eslint/types': 5.52.0 + '@typescript-eslint/typescript-estree': 5.52.0_typescript@4.9.5 debug: 4.3.4 eslint: 8.34.0 typescript: 4.9.5 @@ -3807,16 +3831,16 @@ packages: - supports-color dev: true - /@typescript-eslint/scope-manager/5.51.0: - resolution: {integrity: sha512-gNpxRdlx5qw3yaHA0SFuTjW4rxeYhpHxt491PEcKF8Z6zpq0kMhe0Tolxt0qjlojS+/wArSDlj/LtE69xUJphQ==} + /@typescript-eslint/scope-manager/5.52.0: + resolution: {integrity: sha512-AR7sxxfBKiNV0FWBSARxM8DmNxrwgnYMPwmpkC1Pl1n+eT8/I2NAUPuwDy/FmDcC6F8pBfmOcaxcxRHspgOBMw==} engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} dependencies: - '@typescript-eslint/types': 5.51.0 - '@typescript-eslint/visitor-keys': 5.51.0 + '@typescript-eslint/types': 5.52.0 + '@typescript-eslint/visitor-keys': 5.52.0 dev: true - /@typescript-eslint/type-utils/5.51.0_7kw3g6rralp5ps6mg3uyzz6azm: - resolution: {integrity: sha512-QHC5KKyfV8sNSyHqfNa0UbTbJ6caB8uhcx2hYcWVvJAZYJRBo5HyyZfzMdRx8nvS+GyMg56fugMzzWnojREuQQ==} + /@typescript-eslint/type-utils/5.52.0_7kw3g6rralp5ps6mg3uyzz6azm: + resolution: {integrity: sha512-tEKuUHfDOv852QGlpPtB3lHOoig5pyFQN/cUiZtpw99D93nEBjexRLre5sQZlkMoHry/lZr8qDAt2oAHLKA6Jw==} engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} peerDependencies: eslint: '*' @@ -3825,8 +3849,8 @@ packages: typescript: optional: true dependencies: - '@typescript-eslint/typescript-estree': 5.51.0_typescript@4.9.5 - '@typescript-eslint/utils': 5.51.0_7kw3g6rralp5ps6mg3uyzz6azm + '@typescript-eslint/typescript-estree': 5.52.0_typescript@4.9.5 + '@typescript-eslint/utils': 5.52.0_7kw3g6rralp5ps6mg3uyzz6azm debug: 4.3.4 eslint: 8.34.0 tsutils: 3.21.0_typescript@4.9.5 @@ -3835,13 +3859,13 @@ packages: - supports-color dev: true - /@typescript-eslint/types/5.51.0: - resolution: {integrity: sha512-SqOn0ANn/v6hFn0kjvLwiDi4AzR++CBZz0NV5AnusT2/3y32jdc0G4woXPWHCumWtUXZKPAS27/9vziSsC9jnw==} + /@typescript-eslint/types/5.52.0: + resolution: {integrity: sha512-oV7XU4CHYfBhk78fS7tkum+/Dpgsfi91IIDy7fjCyq2k6KB63M6gMC0YIvy+iABzmXThCRI6xpCEyVObBdWSDQ==} engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} dev: true - /@typescript-eslint/typescript-estree/5.51.0_typescript@4.9.5: - resolution: {integrity: sha512-TSkNupHvNRkoH9FMA3w7TazVFcBPveAAmb7Sz+kArY6sLT86PA5Vx80cKlYmd8m3Ha2SwofM1KwraF24lM9FvA==} + /@typescript-eslint/typescript-estree/5.52.0_typescript@4.9.5: + resolution: {integrity: sha512-WeWnjanyEwt6+fVrSR0MYgEpUAuROxuAH516WPjUblIrClzYJj0kBbjdnbQXLpgAN8qbEuGywiQsXUVDiAoEuQ==} engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} peerDependencies: typescript: '*' @@ -3849,8 +3873,8 @@ packages: typescript: optional: true dependencies: - '@typescript-eslint/types': 5.51.0 - '@typescript-eslint/visitor-keys': 5.51.0 + '@typescript-eslint/types': 5.52.0 + '@typescript-eslint/visitor-keys': 5.52.0 debug: 4.3.4 globby: 11.1.0 is-glob: 4.0.3 @@ -3861,17 +3885,17 @@ packages: - supports-color dev: true - /@typescript-eslint/utils/5.51.0_7kw3g6rralp5ps6mg3uyzz6azm: - resolution: {integrity: sha512-76qs+5KWcaatmwtwsDJvBk4H76RJQBFe+Gext0EfJdC3Vd2kpY2Pf//OHHzHp84Ciw0/rYoGTDnIAr3uWhhJYw==} + /@typescript-eslint/utils/5.52.0_7kw3g6rralp5ps6mg3uyzz6azm: + resolution: {integrity: sha512-As3lChhrbwWQLNk2HC8Ree96hldKIqk98EYvypd3It8Q1f8d5zWyIoaZEp2va5667M4ZyE7X8UUR+azXrFl+NA==} engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} peerDependencies: eslint: ^6.0.0 || ^7.0.0 || ^8.0.0 dependencies: '@types/json-schema': 7.0.11 '@types/semver': 7.3.13 - '@typescript-eslint/scope-manager': 5.51.0 - '@typescript-eslint/types': 5.51.0 - '@typescript-eslint/typescript-estree': 5.51.0_typescript@4.9.5 + '@typescript-eslint/scope-manager': 5.52.0 + '@typescript-eslint/types': 5.52.0 + '@typescript-eslint/typescript-estree': 5.52.0_typescript@4.9.5 eslint: 8.34.0 eslint-scope: 5.1.1 eslint-utils: 3.0.0_eslint@8.34.0 @@ -3881,15 +3905,15 @@ packages: - typescript dev: true - /@typescript-eslint/visitor-keys/5.51.0: - resolution: {integrity: sha512-Oh2+eTdjHjOFjKA27sxESlA87YPSOJafGCR0md5oeMdh1ZcCfAGCIOL216uTBAkAIptvLIfKQhl7lHxMJet4GQ==} + /@typescript-eslint/visitor-keys/5.52.0: + resolution: {integrity: sha512-qMwpw6SU5VHCPr99y274xhbm+PRViK/NATY6qzt+Et7+mThGuFSl/ompj2/hrBlRP/kq+BFdgagnOSgw9TB0eA==} engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} dependencies: - '@typescript-eslint/types': 5.51.0 + '@typescript-eslint/types': 5.52.0 eslint-visitor-keys: 3.3.0 dev: true - /@vitejs/plugin-react/3.1.0_vite@4.1.1: + /@vitejs/plugin-react/3.1.0_vite@4.1.2: resolution: {integrity: sha512-AfgcRL8ZBhAlc3BFdigClmTUMISmmzHn7sB2h9U1odvc5U/MjWXsAaz18b/WoppUTDBzxOJwo2VdClfUcItu9g==} engines: {node: ^14.18.0 || >=16.0.0} peerDependencies: @@ -3900,7 +3924,7 @@ packages: '@babel/plugin-transform-react-jsx-source': 7.19.6_@babel+core@7.20.12 magic-string: 0.27.0 react-refresh: 0.14.0 - vite: 4.1.1_@types+node@18.13.0 + vite: 4.1.2_@types+node@18.14.0 transitivePeerDependencies: - supports-color dev: true @@ -4064,7 +4088,7 @@ packages: postcss: ^8.1.0 dependencies: browserslist: 4.21.5 - caniuse-lite: 1.0.30001451 + caniuse-lite: 1.0.30001456 fraction.js: 4.2.0 normalize-range: 0.1.2 picocolors: 1.0.0 @@ -4097,7 +4121,7 @@ packages: dependencies: '@babel/core': 7.20.12 '@babel/helper-define-polyfill-provider': 0.3.3_@babel+core@7.20.12 - core-js-compat: 3.27.2 + core-js-compat: 3.28.0 transitivePeerDependencies: - supports-color dev: true @@ -4148,8 +4172,8 @@ packages: engines: {node: ^6 || ^7 || ^8 || ^9 || ^10 || ^11 || ^12 || >=13.7} hasBin: true dependencies: - caniuse-lite: 1.0.30001451 - electron-to-chromium: 1.4.295 + caniuse-lite: 1.0.30001456 + electron-to-chromium: 1.4.302 node-releases: 2.0.10 update-browserslist-db: 1.0.10_browserslist@4.21.5 dev: true @@ -4178,8 +4202,8 @@ packages: resolution: {integrity: sha512-QOSvevhslijgYwRx6Rv7zKdMF8lbRmx+uQGx2+vDc+KI/eBnsy9kit5aj23AgGu3pa4t9AgwbnXWqS+iOY+2aA==} engines: {node: '>= 6'} - /caniuse-lite/1.0.30001451: - resolution: {integrity: sha512-XY7UbUpGRatZzoRft//5xOa69/1iGJRBlrieH6QYrkKLIFn3m7OVEJ81dSrKoy2BnKsdbX5cLrOispZNYo9v2w==} + /caniuse-lite/1.0.30001456: + resolution: {integrity: sha512-XFHJY5dUgmpMV25UqaD4kVq2LsiaU5rS8fb0f17pCoXQiQslzmFgnfOxfvo1bTpTqf7dwG/N/05CnLCnOEKmzA==} dev: true /chalk/2.4.2: @@ -4226,7 +4250,7 @@ packages: resolution: {integrity: sha512-ct3ltplN8I9fOwUd8GrP8UQixwff129BkEtuWDKL5W45cQuLd19xqmTLu5ge78YDm/fdje6FMt0hGOhl0lii3A==} dependencies: '@types/validator': 13.7.12 - libphonenumber-js: 1.10.19 + libphonenumber-js: 1.10.20 validator: 13.9.0 dev: false @@ -4323,8 +4347,8 @@ packages: resolution: {integrity: sha512-ASFBup0Mz1uyiIjANan1jzLQami9z1PoYSZCiiYW2FczPbenXc45FZdBZLzOT+r6+iciuEModtmCti+hjaAk0A==} dev: true - /core-js-compat/3.27.2: - resolution: {integrity: sha512-welaYuF7ZtbYKGrIy7y3eb40d37rG1FvzEOfe7hSLd2iD6duMDqUhRfSvCGyC46HhR6Y8JXXdZ2lnRUMkPBpvg==} + /core-js-compat/3.28.0: + resolution: {integrity: sha512-myzPgE7QodMg4nnd3K1TDoES/nADRStM8Gpz0D6nhkwbmwEnE0ZGJgoWsvQ722FR8D7xS0n0LV556RcEicjTyg==} dependencies: browserslist: 4.21.5 dev: true @@ -4333,6 +4357,16 @@ packages: resolution: {integrity: sha512-ZQBvi1DcpJ4GDqanjucZ2Hj3wEO5pZDS89BWbkcrvdxksJorwUDDZamX9ldFkp9aw2lmBDLgkObEA4DWNJ9FYQ==} dev: true + /crc/4.3.2: + resolution: {integrity: sha512-uGDHf4KLLh2zsHa8D8hIQ1H/HtFQhyHrc0uhHBcoKGol/Xnb+MPYfUMw7cvON6ze/GUESTudKayDcJC5HnJv1A==} + engines: {node: '>=12'} + peerDependencies: + buffer: '>=6.0.3' + peerDependenciesMeta: + buffer: + optional: true + dev: false + /cross-spawn/7.0.3: resolution: {integrity: sha512-iRDPJKUPVEND7dHPO8rkbOnPpyDygcDFtWjpeWNCgy8WP2rXcxXL8TskReQl6OrB2G7+UJrags1q15Fudc7G6w==} engines: {node: '>= 8'} @@ -4522,8 +4556,8 @@ packages: jake: 10.8.5 dev: true - /electron-to-chromium/1.4.295: - resolution: {integrity: sha512-lEO94zqf1bDA3aepxwnWoHUjA8sZ+2owgcSZjYQy0+uOSEclJX0VieZC+r+wLpSxUHRd6gG32znTWmr+5iGzFw==} + /electron-to-chromium/1.4.302: + resolution: {integrity: sha512-Uk7C+7aPBryUR1Fwvk9VmipBcN9fVsqBO57jV2ZjTm+IZ6BMNqu7EDVEg2HxCNufk6QcWlFsBkhQyQroB2VWKw==} dev: true /emoji-regex/8.0.0: @@ -4699,7 +4733,7 @@ packages: debug: 4.3.4 enhanced-resolve: 5.12.0 eslint: 8.34.0 - eslint-plugin-import: 2.27.5_inmo4nrctlhmfx73hzu6aogupa + eslint-plugin-import: 2.27.5_gndiqgw2wrzfeqy4ccfxbmtnsi get-tsconfig: 4.4.0 globby: 13.1.3 is-core-module: 2.11.0 @@ -4709,7 +4743,7 @@ packages: - supports-color dev: true - /eslint-module-utils/2.7.4_7d5otxxipfjcaqho6psg7iyp4e: + /eslint-module-utils/2.7.4_cvrl34cvgpgac5pvqi7ag6zw7e: resolution: {integrity: sha512-j4GT+rqzCoRKHwURX7pddtIPGySnX9Si/cgMI5ztrcqOPtk5dDEeZ34CQVPphnqkJytlc97Vuk05Um2mJ3gEQA==} engines: {node: '>=4'} peerDependencies: @@ -4730,7 +4764,7 @@ packages: eslint-import-resolver-webpack: optional: true dependencies: - '@typescript-eslint/parser': 5.51.0_7kw3g6rralp5ps6mg3uyzz6azm + '@typescript-eslint/parser': 5.52.0_7kw3g6rralp5ps6mg3uyzz6azm debug: 3.2.7 eslint: 8.34.0 eslint-import-resolver-node: 0.3.7 @@ -4739,7 +4773,7 @@ packages: - supports-color dev: true - /eslint-plugin-import/2.27.5_inmo4nrctlhmfx73hzu6aogupa: + /eslint-plugin-import/2.27.5_gndiqgw2wrzfeqy4ccfxbmtnsi: resolution: {integrity: sha512-LmEt3GVofgiGuiE+ORpnvP+kAm3h6MLZJ4Q5HCyHADofsb4VzXFsRiWj3c0OFiV+3DWFh0qg3v9gcPlfc3zRow==} engines: {node: '>=4'} peerDependencies: @@ -4749,7 +4783,7 @@ packages: '@typescript-eslint/parser': optional: true dependencies: - '@typescript-eslint/parser': 5.51.0_7kw3g6rralp5ps6mg3uyzz6azm + '@typescript-eslint/parser': 5.52.0_7kw3g6rralp5ps6mg3uyzz6azm array-includes: 3.1.6 array.prototype.flat: 1.3.1 array.prototype.flatmap: 1.3.1 @@ -4757,7 +4791,7 @@ packages: doctrine: 2.1.0 eslint: 8.34.0 eslint-import-resolver-node: 0.3.7 - eslint-module-utils: 2.7.4_7d5otxxipfjcaqho6psg7iyp4e + eslint-module-utils: 2.7.4_cvrl34cvgpgac5pvqi7ag6zw7e has: 1.0.3 is-core-module: 2.11.0 is-glob: 4.0.3 @@ -4860,7 +4894,7 @@ packages: eslint-utils: 3.0.0_eslint@8.34.0 eslint-visitor-keys: 3.3.0 espree: 9.4.1 - esquery: 1.4.0 + esquery: 1.4.2 esutils: 2.0.3 fast-deep-equal: 3.1.3 file-entry-cache: 6.0.1 @@ -4898,8 +4932,8 @@ packages: eslint-visitor-keys: 3.3.0 dev: true - /esquery/1.4.0: - resolution: {integrity: sha512-cCDispWt5vHHtwMY2YrAQ4ibFkAL8RbH5YGBnZBc90MolvvfkkQcJro/aZiAQUlQ3qgrYS6D6v8Gc5G5CQsc9w==} + /esquery/1.4.2: + resolution: {integrity: sha512-JVSoLdTlTDkmjFmab7H/9SL9qGSyjElT3myyKp7krqjVFQCDLmj1QFaCLRFBszBKI0XVZaiiXvuPIX3ZwHe1Ng==} engines: {node: '>=0.10'} dependencies: estraverse: 5.3.0 @@ -5547,7 +5581,7 @@ packages: resolution: {integrity: sha512-KWYVV1c4i+jbMpaBC+U++4Va0cp8OisU185o73T1vo99hqi7w8tSJfUXYswwqqrjzwxa6KpRK54WhPvwf5w6PQ==} engines: {node: '>= 10.13.0'} dependencies: - '@types/node': 18.13.0 + '@types/node': 18.14.0 merge-stream: 2.0.0 supports-color: 7.2.0 dev: true @@ -5653,8 +5687,8 @@ packages: type-check: 0.4.0 dev: true - /libphonenumber-js/1.10.19: - resolution: {integrity: sha512-MDZ1zLIkfSDZV5xBta3nuvbEOlsnKCPe4z5r3hyup/AXveevkl9A1eSWmLhd2FX4k7pJDe4MrLeQsux0HI/VWg==} + /libphonenumber-js/1.10.20: + resolution: {integrity: sha512-kQovlKNdLcVzerbTPmJ+Fx4R+7/pYXmPDIllHjg7IxL4X6MsMG7jaT5opfYrBok0uqkByVif//JUR8e11l/V7w==} dev: false /lilconfig/2.0.6: @@ -5714,8 +5748,8 @@ packages: yallist: 4.0.0 dev: true - /lucide-react/0.112.0_react@18.2.0: - resolution: {integrity: sha512-+glJwNv7bv6I6WOb8RRbaVHJdaoaV/KWV44ag/EpAoSsWxSUML5RP8hA+9O188RoEv9ZFMx1l+7HPwTDnt0L/Q==} + /lucide-react/0.115.0_react@18.2.0: + resolution: {integrity: sha512-VGL7jBKN6pEXi6peXoyn9t9O7olvinaAonnoe+iFi/F2q7/yQzAFM5KR1OY15u9PlrB3scI9HvcTFoOrIjUaVQ==} peerDependencies: react: ^16.5.1 || ^17.0.0 || ^18.0.0 dependencies: @@ -6125,10 +6159,11 @@ packages: engines: {node: '>= 0.8.0'} dev: true - /prettier-plugin-tailwindcss/0.2.2_prettier@2.8.4: - resolution: {integrity: sha512-5RjUbWRe305pUpc48MosoIp6uxZvZxrM6GyOgsbGLTce+ehePKNm7ziW2dLG2air9aXbGuXlHVSQQw4Lbosq3w==} + /prettier-plugin-tailwindcss/0.2.3_prettier@2.8.4: + resolution: {integrity: sha512-s2N5Dh7Ao5KTV1mao5ZBnn8EKtUcDPJEkGViZIjI0Ij9TTI5zgTz4IHOxW33jOdjHKa8CSjM88scelUiC5TNRQ==} engines: {node: '>=12.17.0'} peerDependencies: + '@ianvs/prettier-plugin-sort-imports': '*' '@prettier/plugin-php': '*' '@prettier/plugin-pug': '*' '@shopify/prettier-plugin-liquid': '*' @@ -6145,6 +6180,8 @@ packages: prettier-plugin-svelte: '*' prettier-plugin-twig-melody: '*' peerDependenciesMeta: + '@ianvs/prettier-plugin-sort-imports': + optional: true '@prettier/plugin-php': optional: true '@prettier/plugin-pug': @@ -6464,8 +6501,8 @@ packages: engines: {node: '>=8'} dev: true - /regexpu-core/5.3.0: - resolution: {integrity: sha512-ZdhUQlng0RoscyW7jADnUZ25F5eVtHdMyXSb2PiwafvteRAOJUjFoUPEYZSIfP99fBIs3maLIRfpEddT78wAAQ==} + /regexpu-core/5.3.1: + resolution: {integrity: sha512-nCOzW2V/X15XpLsK2rlgdwrysrBq+AauCn+omItIz4R1pIcmeot5zvjdmOBRLzEH/CkC6IxMJVmxDe3QcMuNVQ==} engines: {node: '>=4'} dependencies: '@babel/regjsgen': 0.8.0 @@ -6550,7 +6587,7 @@ packages: jest-worker: 26.6.2 rollup: 2.79.1 serialize-javascript: 4.0.0 - terser: 5.16.3 + terser: 5.16.4 dev: true /rollup-plugin-visualizer/5.9.0: @@ -6566,7 +6603,7 @@ packages: open: 8.4.1 picomatch: 2.3.1 source-map: 0.7.4 - yargs: 17.6.2 + yargs: 17.7.0 dev: true /rollup/2.79.1: @@ -6577,8 +6614,8 @@ packages: fsevents: 2.3.2 dev: true - /rollup/3.15.0: - resolution: {integrity: sha512-F9hrCAhnp5/zx/7HYmftvsNBkMfLfk/dXUh73hPSM2E3CRgap65orDNJbLetoiUFwSAk6iHPLvBrZ5iHYvzqsg==} + /rollup/3.17.1: + resolution: {integrity: sha512-8RnSms6rNqHmZK+wiqgnPCqen+rRnUHXkciGDirh7B00g1rX1vpKbPDhuxCvAG2bburoI+W4Q9/PlUB/zYkiYA==} engines: {node: '>=14.18.0', npm: '>=8.0.0'} hasBin: true optionalDependencies: @@ -6803,6 +6840,11 @@ packages: engines: {node: '>=8'} dev: true + /sub-events/1.9.0: + resolution: {integrity: sha512-dnFBayilG9Ku0k/lNs1Y7WV4kv91+ovCoeBV3uIYrY49DylvBb6z9d9ED2ctcrvX2YlReFalpCgJNtSgmrOaJg==} + engines: {node: '>=10.0.0'} + dev: false + /supercluster/7.1.5: resolution: {integrity: sha512-EulshI3pGUM66o6ZdH3ReiFcvHpM3vAigyK+vcxdjpJyEbIIrtbmBdY23mGgnI24uXiGFvrGq9Gkum/8U7vJWg==} dependencies: @@ -6839,16 +6881,16 @@ packages: resolution: {integrity: sha512-ED9MkiUHlmfh58EC1xHRqXcH1IQyRtmDP0AmXlugYkP2tvfu7ejtjFEHJLJt93mQ7ZJkcqSIgm9M394bq5vOJg==} dev: false - /tailwindcss-animate/1.0.5_tailwindcss@3.2.6: + /tailwindcss-animate/1.0.5_tailwindcss@3.2.7: resolution: {integrity: sha512-UU3qrOJ4lFQABY+MVADmBm+0KW3xZyhMdRvejwtXqYOL7YjHYxmuREFAZdmVG5LPe5E9CAst846SLC4j5I3dcw==} peerDependencies: tailwindcss: '>=3.0.0 || insiders' dependencies: - tailwindcss: 3.2.6_postcss@8.4.21 + tailwindcss: 3.2.7_postcss@8.4.21 dev: false - /tailwindcss/3.2.6_postcss@8.4.21: - resolution: {integrity: sha512-BfgQWZrtqowOQMC2bwaSNe7xcIjdDEgixWGYOd6AL0CbKHJlvhfdbINeAW76l1sO+1ov/MJ93ODJ9yluRituIw==} + /tailwindcss/3.2.7_postcss@8.4.21: + resolution: {integrity: sha512-B6DLqJzc21x7wntlH/GsZwEXTBttVSl1FtCzC8WP4oBc/NKef7kaax5jeihkkCEWc831/5NDJ9gRNDK6NEioQQ==} engines: {node: '>=12.13.0'} hasBin: true peerDependencies: @@ -6920,8 +6962,8 @@ packages: unique-string: 2.0.0 dev: true - /terser/5.16.3: - resolution: {integrity: sha512-v8wWLaS/xt3nE9dgKEWhNUFP6q4kngO5B8eYFUuebsu7Dw/UNAnpUod6UHo04jSSkv8TzKHjZDSd7EXdDQAl8Q==} + /terser/5.16.4: + resolution: {integrity: sha512-5yEGuZ3DZradbogeYQ1NaGz7rXVBDWujWlx1PT8efXO6Txn+eWbfKqB2bTDVmFXmePFkoLU6XI8UektMIEA0ug==} engines: {node: '>=10'} hasBin: true dependencies: @@ -7019,6 +7061,11 @@ packages: /tslib/2.5.0: resolution: {integrity: sha512-336iVw3rtn2BUK7ORdIAHTyxHGRIHVReokCR3XjbckJMK7ms8FysBfhLR8IXnAgy7T0PTPNBWKiH514FOW/WSg==} + /tslog/4.7.4: + resolution: {integrity: sha512-/hz7E1ahN9KXNywEGJZ8SL4s3YLu9fKYBHOXsKgXwk73qZ7Y5NCkqktP6Y+0MQNfnqOdH8eRE0Rw0spmyTWLPg==} + engines: {node: '>=16'} + dev: false + /tsutils/3.21.0_typescript@4.9.5: resolution: {integrity: sha512-mHKK3iUXL+3UF6xL5k0PEhKRUBKPBCv/+RkEOpjRWxxx27KKRBmmA60A9pgOUvMi8GKhRMPEmjBRPzs2W7O1OA==} engines: {node: '>= 6'} @@ -7199,25 +7246,25 @@ packages: engines: {node: '>= 0.10'} dev: false - /vite-plugin-environment/1.1.3_vite@4.1.1: + /vite-plugin-environment/1.1.3_vite@4.1.2: resolution: {integrity: sha512-9LBhB0lx+2lXVBEWxFZC+WO7PKEyE/ykJ7EPWCq95NEcCpblxamTbs5Dm3DLBGzwODpJMEnzQywJU8fw6XGGGA==} peerDependencies: vite: '>= 2.7' dependencies: - vite: 4.1.1_@types+node@18.13.0 + vite: 4.1.2_@types+node@18.14.0 dev: true - /vite-plugin-pwa/0.14.4_vite@4.1.1: + /vite-plugin-pwa/0.14.4_vite@4.1.2: resolution: {integrity: sha512-M7Ct0so8OlouMkTWgXnl8W1xU95glITSKIe7qswZf1tniAstO2idElGCnsrTJ5NPNSx1XqfTCOUj8j94S6FD7Q==} peerDependencies: vite: ^3.1.0 || ^4.0.0 dependencies: - '@rollup/plugin-replace': 5.0.2_rollup@3.15.0 + '@rollup/plugin-replace': 5.0.2_rollup@3.17.1 debug: 4.3.4 fast-glob: 3.2.12 pretty-bytes: 6.1.0 - rollup: 3.15.0 - vite: 4.1.1_@types+node@18.13.0 + rollup: 3.17.1 + vite: 4.1.2_@types+node@18.14.0 workbox-build: 6.5.4 workbox-window: 6.5.4 transitivePeerDependencies: @@ -7225,8 +7272,8 @@ packages: - supports-color dev: true - /vite/4.1.1_@types+node@18.13.0: - resolution: {integrity: sha512-LM9WWea8vsxhr782r9ntg+bhSFS06FJgCvvB0+8hf8UWtvaiDagKYWXndjfX6kGl74keHJUcpzrQliDXZlF5yg==} + /vite/4.1.2_@types+node@18.14.0: + resolution: {integrity: sha512-MWDb9Rfy3DI8omDQySbMK93nQqStwbsQWejXRY2EBzEWKmLAXWb1mkI9Yw2IJrc+oCvPCI1Os5xSSIBYY6DEAw==} engines: {node: ^14.18.0 || >=16.0.0} hasBin: true peerDependencies: @@ -7250,11 +7297,11 @@ packages: terser: optional: true dependencies: - '@types/node': 18.13.0 + '@types/node': 18.14.0 esbuild: 0.16.17 postcss: 8.4.21 resolve: 1.22.1 - rollup: 3.15.0 + rollup: 3.17.1 optionalDependencies: fsevents: 2.3.2 dev: true @@ -7472,7 +7519,7 @@ packages: /workbox-window/6.5.4: resolution: {integrity: sha512-HnLZJDwYBE+hpG25AQBO8RUWBJRaCsI9ksQJEp3aCOFCaG5kqaToAYXFRAHxzRluM2cQbGzdQF5rjKPWPA1fug==} dependencies: - '@types/trusted-types': 2.0.2 + '@types/trusted-types': 2.0.3 workbox-core: 6.5.4 dev: true @@ -7515,8 +7562,8 @@ packages: engines: {node: '>=12'} dev: true - /yargs/17.6.2: - resolution: {integrity: sha512-1/9UrdHjDZc0eOU0HxOHoS78C69UD3JRMvzlJ7S79S2nTaWRA/whGCTV8o9e/N/1Va9YIV7Q4sOxD8VV4pCWOw==} + /yargs/17.7.0: + resolution: {integrity: sha512-dwqOPg5trmrre9+v8SUo2q/hAwyKoVfu8OC1xPHKJGNdxAvPl4sKxL4vBnh3bQz/ZvvGAFeA5H3ou2kcOY8sQQ==} engines: {node: '>=12'} dependencies: cliui: 8.0.1 diff --git a/src/components/CommandPalette.tsx b/src/components/CommandPalette.tsx index b689981c..d92e1f23 100644 --- a/src/components/CommandPalette.tsx +++ b/src/components/CommandPalette.tsx @@ -122,9 +122,8 @@ export const CommandPalette = (): JSX.Element => { subItems: getDevices().map((device) => { return { label: - device.nodes.find( - (n) => n.data.num === device.hardware.myNodeNum - )?.data.user?.longName ?? device.hardware.myNodeNum.toString(), + device.nodes.get(device.hardware.myNodeNum)?.user?.longName ?? + device.hardware.myNodeNum.toString(), icon: ( {

- {device.nodes.filter( - (n) => n.data.num === device.hardware.myNodeNum - )[0]?.data.user?.longName ?? "UNK"} + {device.nodes.get(device.hardware.myNodeNum)?.user + ?.longName ?? "UNK"}

{device.connection?.connType === "ble" && ( @@ -74,9 +73,7 @@ export const Dashboard = () => { className="text-gray-400" aria-hidden="true" /> - {device.nodes.length === 0 - ? 0 - : device.nodes.length - 1} + {device.nodes.size === 0 ? 0 : device.nodes.size - 1}
diff --git a/src/components/Dialog/DeviceNameDialog.tsx b/src/components/Dialog/DeviceNameDialog.tsx index b0f55b27..1f1b0668 100644 --- a/src/components/Dialog/DeviceNameDialog.tsx +++ b/src/components/Dialog/DeviceNameDialog.tsx @@ -29,19 +29,19 @@ export const DeviceNameDialog = ({ }: DeviceNameDialogProps): JSX.Element => { const { hardware, nodes, connection } = useDevice(); - const myNode = nodes.find((n) => n.data.num === hardware.myNodeNum); + const myNode = nodes.get(hardware.myNodeNum); const { register, handleSubmit } = useForm({ values: { - longName: myNode?.data.user?.longName ?? "Unknown", - shortName: myNode?.data.user?.shortName ?? "Unknown" + longName: myNode?.user?.longName ?? "Unknown", + shortName: myNode?.user?.shortName ?? "Unknown" } }); const onSubmit = handleSubmit((data) => { connection?.setOwner( new Protobuf.User({ - ...myNode?.data.user, + ...myNode?.user, ...data }) ); diff --git a/src/components/Dialog/DialogManager.tsx b/src/components/Dialog/DialogManager.tsx index 8e933deb..8576dff2 100644 --- a/src/components/Dialog/DialogManager.tsx +++ b/src/components/Dialog/DialogManager.tsx @@ -14,7 +14,7 @@ export const DialogManager = (): JSX.Element => { onOpenChange={(open) => { setDialogOpen("QR", open); }} - channels={channels.map((ch) => ch.config)} + channels={channels} loraConfig={config.lora} /> { onOpenChange={(open) => { setDialogOpen("import", open); }} - channels={channels.map((ch) => ch.config)} + channels={channels} loraConfig={config.lora} /> { +export const ChannelChat = ({ + messages, + channel, + to +}: ChannelChatProps): JSX.Element => { const { nodes } = useDevice(); return (
- {channel.messages.map((message, index) => ( - node.data.num === message.from)?.data} - /> - ))} + {messages ? ( + messages.map((message, index) => ( + + )) + ) : ( +
+ + No Messages +
+ )}
- +
); diff --git a/src/components/PageComponents/Messages/Message.tsx b/src/components/PageComponents/Messages/Message.tsx index c4db605d..dd839540 100644 --- a/src/components/PageComponents/Messages/Message.tsx +++ b/src/components/PageComponents/Messages/Message.tsx @@ -1,6 +1,3 @@ -import { WaypointMessage } from "@components/PageComponents/Messages/WaypointMessage.js"; -import { useDevice } from "@core/stores/deviceStore.js"; -import type { AllMessageTypes } from "@core/stores/deviceStore.js"; import { Hashicon } from "@emeraldpay/hashicon-react"; import { CircleEllipsisIcon, @@ -8,10 +5,11 @@ import { CheckCircle2Icon } from "lucide-react"; import type { Protobuf } from "@meshtastic/meshtasticjs"; +import type { MessageWithState } from "@app/core/stores/deviceStore.js"; export interface MessageProps { lastMsgSameUser: boolean; - message: AllMessageTypes; + message: MessageWithState; sender?: Protobuf.NodeInfo; } @@ -20,13 +18,6 @@ export const Message = ({ message, sender }: MessageProps): JSX.Element => { - const { setPeerInfoOpen, setActivePeer, connection } = useDevice(); - - const openPeer = (): void => { - setActivePeer(message.from); - setPeerInfoOpen(true); - }; - return lastMsgSameUser ? (
{message.state === "ack" ? ( @@ -36,28 +27,21 @@ export const Message = ({ ) : ( )} - {"waypointID" in message ? ( - - ) : ( - - {message.data} - - )} + + {message.data} +
) : (
-
+
- + {sender?.user?.longName ?? "UNK"} @@ -78,19 +62,13 @@ export const Message = ({ ) : ( )} - {"waypointID" in message ? ( - - ) : ( - - {message.data} - - )} + + {message.data} +
); diff --git a/src/components/PageComponents/Messages/MessageInput.tsx b/src/components/PageComponents/Messages/MessageInput.tsx index 91a84ba1..cf77a726 100644 --- a/src/components/PageComponents/Messages/MessageInput.tsx +++ b/src/components/PageComponents/Messages/MessageInput.tsx @@ -1,29 +1,50 @@ import { Input } from "@components/UI/Input.js"; import { useDevice } from "@core/stores/deviceStore.js"; -import type { Channel } from "@core/stores/deviceStore.js"; import { SendIcon } from "lucide-react"; import type { Types } from "@meshtastic/meshtasticjs"; import { Button } from "@components/UI/Button.js"; export interface MessageInputProps { - channel: Channel; + to: Types.Destination; + channel: Types.ChannelNumber; } -export const MessageInput = ({ channel }: MessageInputProps): JSX.Element => { - const { connection, setMessageState, messageDraft, setMessageDraft } = - useDevice(); +export const MessageInput = ({ + to, + channel +}: MessageInputProps): JSX.Element => { + const { + connection, + setMessageState, + messageDraft, + setMessageDraft, + hardware + } = useDevice(); + + const myNodeNum = hardware.myNodeNum; const sendText = async (message: string) => { await connection - ?.sendText( - message, - "broadcast", - true, - channel.config.index as Types.ChannelNumber + ?.sendText(message, to, true, channel) + .then((id) => + setMessageState( + to === "broadcast" ? "broadcast" : "direct", + channel, + to as number, + myNodeNum, + id, + "ack" + ) ) - .then((id) => setMessageState(channel.config.index, id, "ack")) .catch((e: Types.PacketError) => - setMessageState(channel.config.index, e.id, e.error) + setMessageState( + to === "broadcast" ? "broadcast" : "direct", + channel, + to as number, + myNodeNum, + e.id, + e.error + ) ); }; diff --git a/src/components/PageComponents/Messages/WaypointMessage.tsx b/src/components/PageComponents/Messages/WaypointMessage.tsx deleted file mode 100644 index 2bcc7945..00000000 --- a/src/components/PageComponents/Messages/WaypointMessage.tsx +++ /dev/null @@ -1,31 +0,0 @@ -import { useDevice } from "@core/stores/deviceStore.js"; -import { toMGRS } from "@core/utils/toMGRS.js"; -import { MapPinIcon } from "lucide-react"; - -export interface WaypointMessageProps { - waypointID: number; -} - -export const WaypointMessage = ({ - waypointID -}: WaypointMessageProps): JSX.Element => { - const { waypoints } = useDevice(); - const waypoint = waypoints.find((wp) => wp.id === waypointID); - - return ( -
-
- -
-
-
{waypoint?.name}
- - {toMGRS(waypoint?.latitudeI, waypoint?.longitudeI)} - -
- {waypoint?.description} -
-
-
- ); -}; diff --git a/src/components/Sidebar.tsx b/src/components/Sidebar.tsx index 2574476d..8ebdcd08 100644 --- a/src/components/Sidebar.tsx +++ b/src/components/Sidebar.tsx @@ -20,7 +20,7 @@ export interface SidebarProps { export const Sidebar = ({ children }: SidebarProps): JSX.Element => { const { hardware, nodes } = useDevice(); - const myNode = nodes.find((n) => n.data.num === hardware.myNodeNum); + const myNode = nodes.get(hardware.myNodeNum); const { activePage, setActivePage, setDialogOpen } = useDevice(); interface NavLink { @@ -62,9 +62,9 @@ export const Sidebar = ({ children }: SidebarProps): JSX.Element => {
- {myNode?.data.user?.shortName ?? "UNK"} + {myNode?.user?.shortName ?? "UNK"} - {myNode?.data.user?.longName ?? "UNK"} + {myNode?.user?.longName ?? "UNK"}