diff --git a/.changeset/pretty-numbers-talk.md b/.changeset/pretty-numbers-talk.md new file mode 100644 index 000000000..644670b2c --- /dev/null +++ b/.changeset/pretty-numbers-talk.md @@ -0,0 +1,5 @@ +--- +"nostrudel": minor +--- + +Add tenor gif picker diff --git a/.changeset/sweet-garlics-itch.md b/.changeset/sweet-garlics-itch.md new file mode 100644 index 000000000..e7e99e79d --- /dev/null +++ b/.changeset/sweet-garlics-itch.md @@ -0,0 +1,5 @@ +--- +"nostrudel": minor +--- + +Add new emoji picker diff --git a/.changeset/wicked-poems-judge.md b/.changeset/wicked-poems-judge.md new file mode 100644 index 000000000..075a2a540 --- /dev/null +++ b/.changeset/wicked-poems-judge.md @@ -0,0 +1,5 @@ +--- +"nostrudel": minor +--- + +Remove quick reactions from settings diff --git a/package.json b/package.json index f778f0977..9288c2176 100644 --- a/package.json +++ b/package.json @@ -27,18 +27,20 @@ "@chakra-ui/theme-tools": "^2.2.6", "@codemirror/autocomplete": "^6.18.4", "@codemirror/lang-json": "^6.0.1", - "@codemirror/language": "^6.10.7", + "@codemirror/language": "^6.10.8", "@codemirror/view": "^6.36.1", + "@emoji-mart/data": "^1.2.1", + "@emoji-mart/react": "^1.1.1", "@emotion/react": "^11.14.0", "@emotion/styled": "^11.14.0", "@getalby/bitcoin-connect": "^3.6.3", "@getalby/bitcoin-connect-react": "^3.6.3", - "@noble/ciphers": "^1.1.3", - "@noble/curves": "^1.7.0", - "@noble/hashes": "^1.6.1", + "@noble/ciphers": "^1.2.0", + "@noble/curves": "^1.8.0", + "@noble/hashes": "^1.7.0", "@noble/secp256k1": "^1.7.1", "@scure/base": "^1.2.1", - "@snort/worker-relay": "^1.3.0", + "@snort/worker-relay": "^1.3.1", "@uiw/codemirror-theme-github": "^4.23.7", "@uiw/react-codemirror": "^4.23.7", "@webscopeio/react-textarea-autocomplete": "^4.9.2", @@ -64,8 +66,8 @@ "debug": "^4.4.0", "easymde": "^2.18.0", "emoji-regex": "^10.4.0", - "emojilib": "^3.0.12", "framer-motion": "^10.18.0", + "gif-picker-react": "^1.4.0", "handlebars": "^4.7.8", "hls.js": "^1.5.18", "i18n-iso-countries": "^7.13.0", @@ -87,18 +89,18 @@ "nuka-carousel": "^8.1.1", "prettier": "^3.4.2", "react": "^18.3.1", - "react-chartjs-2": "^5.2.0", + "react-chartjs-2": "^5.3.0", "react-diff-viewer-continued": "^3.4.0", "react-dom": "^18.3.1", "react-error-boundary": "^4.1.2", "react-force-graph-2d": "^1.26.1", "react-force-graph-3d": "^1.25.1", - "react-hook-form": "^7.54.1", + "react-hook-form": "^7.54.2", "react-markdown": "^9.0.1", - "react-mosaic-component": "^6.1.0", + "react-mosaic-component": "^6.1.1", "react-photo-album": "^2.4.1", "react-qr-barcode-scanner": "^2.0.0", - "react-router-dom": "^6.28.0", + "react-router-dom": "^6.28.1", "react-simplemde-editor": "^5.2.0", "react-singleton-hook": "^4.0.1", "react-use": "^17.6.0", @@ -133,7 +135,7 @@ "@types/leaflet.locatecontrol": "^0.74.6", "@types/lodash.throttle": "^4.1.9", "@types/ngeohash": "^0.6.8", - "@types/react": "^18.3.17", + "@types/react": "^18.3.18", "@types/react-dom": "^18.3.5", "@types/react-window": "^1.8.8", "@types/three": "^0.160.0", diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index ef3bcc842..4392dca5a 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -23,13 +23,13 @@ importers: version: 2.0.8 '@chakra-ui/icons': specifier: ^2.2.4 - version: 2.2.4(@chakra-ui/react@2.10.4(@emotion/react@11.14.0(@types/react@18.3.17)(react@18.3.1))(@emotion/styled@11.14.0(@emotion/react@11.14.0(@types/react@18.3.17)(react@18.3.1))(@types/react@18.3.17)(react@18.3.1))(@types/react@18.3.17)(framer-motion@10.18.0(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(react@18.3.1) + version: 2.2.4(@chakra-ui/react@2.10.4(@emotion/react@11.14.0(@types/react@18.3.18)(react@18.3.1))(@emotion/styled@11.14.0(@emotion/react@11.14.0(@types/react@18.3.18)(react@18.3.1))(@types/react@18.3.18)(react@18.3.1))(@types/react@18.3.18)(framer-motion@10.18.0(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(react@18.3.1) '@chakra-ui/media-query': specifier: ^3.3.0 - version: 3.3.0(@chakra-ui/system@2.6.2(@emotion/react@11.14.0(@types/react@18.3.17)(react@18.3.1))(@emotion/styled@11.14.0(@emotion/react@11.14.0(@types/react@18.3.17)(react@18.3.1))(@types/react@18.3.17)(react@18.3.1))(react@18.3.1))(react@18.3.1) + version: 3.3.0(@chakra-ui/system@2.6.2(@emotion/react@11.14.0(@types/react@18.3.18)(react@18.3.1))(@emotion/styled@11.14.0(@emotion/react@11.14.0(@types/react@18.3.18)(react@18.3.1))(@types/react@18.3.18)(react@18.3.1))(react@18.3.1))(react@18.3.1) '@chakra-ui/react': specifier: ^2.10.4 - version: 2.10.4(@emotion/react@11.14.0(@types/react@18.3.17)(react@18.3.1))(@emotion/styled@11.14.0(@emotion/react@11.14.0(@types/react@18.3.17)(react@18.3.1))(@types/react@18.3.17)(react@18.3.1))(@types/react@18.3.17)(framer-motion@10.18.0(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + version: 2.10.4(@emotion/react@11.14.0(@types/react@18.3.18)(react@18.3.1))(@emotion/styled@11.14.0(@emotion/react@11.14.0(@types/react@18.3.18)(react@18.3.1))(@types/react@18.3.18)(react@18.3.1))(@types/react@18.3.18)(framer-motion@10.18.0(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(react-dom@18.3.1(react@18.3.1))(react@18.3.1) '@chakra-ui/shared-utils': specifier: ^2.0.4 version: 2.0.4 @@ -46,32 +46,38 @@ importers: specifier: ^6.0.1 version: 6.0.1 '@codemirror/language': - specifier: ^6.10.7 - version: 6.10.7 + specifier: ^6.10.8 + version: 6.10.8 '@codemirror/view': specifier: ^6.36.1 version: 6.36.1 + '@emoji-mart/data': + specifier: ^1.2.1 + version: 1.2.1 + '@emoji-mart/react': + specifier: ^1.1.1 + version: 1.1.1(emoji-mart@5.6.0)(react@18.3.1) '@emotion/react': specifier: ^11.14.0 - version: 11.14.0(@types/react@18.3.17)(react@18.3.1) + version: 11.14.0(@types/react@18.3.18)(react@18.3.1) '@emotion/styled': specifier: ^11.14.0 - version: 11.14.0(@emotion/react@11.14.0(@types/react@18.3.17)(react@18.3.1))(@types/react@18.3.17)(react@18.3.1) + version: 11.14.0(@emotion/react@11.14.0(@types/react@18.3.18)(react@18.3.1))(@types/react@18.3.18)(react@18.3.1) '@getalby/bitcoin-connect': specifier: ^3.6.3 - version: 3.6.3(@types/react@18.3.17)(react@18.3.1)(typescript@5.7.2) + version: 3.6.3(@types/react@18.3.18)(react@18.3.1)(typescript@5.7.2) '@getalby/bitcoin-connect-react': specifier: ^3.6.3 - version: 3.6.3(@types/react@18.3.17)(react@18.3.1)(typescript@5.7.2) + version: 3.6.3(@types/react@18.3.18)(react@18.3.1)(typescript@5.7.2) '@noble/ciphers': - specifier: ^1.1.3 - version: 1.1.3 + specifier: ^1.2.0 + version: 1.2.0 '@noble/curves': + specifier: ^1.8.0 + version: 1.8.0 + '@noble/hashes': specifier: ^1.7.0 version: 1.7.0 - '@noble/hashes': - specifier: ^1.6.1 - version: 1.6.1 '@noble/secp256k1': specifier: ^1.7.1 version: 1.7.1 @@ -79,41 +85,41 @@ importers: specifier: ^1.2.1 version: 1.2.1 '@snort/worker-relay': - specifier: ^1.3.0 - version: 1.3.0 + specifier: ^1.3.1 + version: 1.3.1 '@uiw/codemirror-theme-github': specifier: ^4.23.7 - version: 4.23.7(@codemirror/language@6.10.7)(@codemirror/state@6.5.0)(@codemirror/view@6.36.1) + version: 4.23.7(@codemirror/language@6.10.8)(@codemirror/state@6.5.0)(@codemirror/view@6.36.1) '@uiw/react-codemirror': specifier: ^4.23.7 - version: 4.23.7(@babel/runtime@7.26.0)(@codemirror/autocomplete@6.18.4)(@codemirror/language@6.10.7)(@codemirror/lint@6.8.4)(@codemirror/search@6.5.8)(@codemirror/state@6.5.0)(@codemirror/theme-one-dark@6.1.2)(@codemirror/view@6.36.1)(codemirror@6.0.1)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + version: 4.23.7(@babel/runtime@7.26.0)(@codemirror/autocomplete@6.18.4)(@codemirror/language@6.10.8)(@codemirror/lint@6.8.4)(@codemirror/search@6.5.8)(@codemirror/state@6.5.0)(@codemirror/theme-one-dark@6.1.2)(@codemirror/view@6.36.1)(codemirror@6.0.1)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) '@webscopeio/react-textarea-autocomplete': specifier: ^4.9.2 version: 4.9.2(prop-types@15.8.1)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) applesauce-channel: specifier: next - version: 0.0.0-next-20241219164005(typescript@5.7.2) + version: 0.0.0-next-20250103191026(typescript@5.7.2) applesauce-content: specifier: next - version: 0.0.0-next-20241219164005(typescript@5.7.2) + version: 0.0.0-next-20250103191026(typescript@5.7.2) applesauce-core: specifier: next - version: 0.0.0-next-20241219164005(typescript@5.7.2) + version: 0.0.0-next-20250103191026(typescript@5.7.2) applesauce-factory: specifier: next - version: 0.0.0-next-20241219164005(typescript@5.7.2) + version: 0.0.0-next-20250103191026(typescript@5.7.2) applesauce-lists: specifier: next - version: 0.0.0-next-20241219164005(typescript@5.7.2) + version: 0.0.0-next-20250103191026(typescript@5.7.2) applesauce-net: specifier: next - version: 0.0.0-next-20241219164005(typescript@5.7.2) + version: 0.0.0-next-20250103191026(typescript@5.7.2) applesauce-react: specifier: next - version: 0.0.0-next-20241219164005(typescript@5.7.2) + version: 0.0.0-next-20250103191026(typescript@5.7.2) applesauce-signer: specifier: next - version: 0.0.0-next-20241219164005(typescript@5.7.2) + version: 0.0.0-next-20250103191026(typescript@5.7.2) bech32: specifier: ^2.0.0 version: 2.0.0 @@ -143,7 +149,7 @@ importers: version: 6.0.1 codemirror-json-schema: specifier: ^0.7.9 - version: 0.7.9(@codemirror/language@6.10.7)(@codemirror/lint@6.8.4)(@codemirror/state@6.5.0)(@codemirror/view@6.36.1)(@lezer/common@1.2.3) + version: 0.7.9(@codemirror/language@6.10.8)(@codemirror/lint@6.8.4)(@codemirror/state@6.5.0)(@codemirror/view@6.36.1)(@lezer/common@1.2.3) dayjs: specifier: ^1.11.13 version: 1.11.13 @@ -156,12 +162,12 @@ importers: emoji-regex: specifier: ^10.4.0 version: 10.4.0 - emojilib: - specifier: ^3.0.12 - version: 3.0.12 framer-motion: specifier: ^10.18.0 version: 10.18.0(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + gif-picker-react: + specifier: ^1.4.0 + version: 1.4.0(react-dom@18.3.1(react@18.3.1))(react@18.3.1) handlebars: specifier: ^4.7.8 version: 4.7.8 @@ -226,8 +232,8 @@ importers: specifier: ^18.3.1 version: 18.3.1 react-chartjs-2: - specifier: ^5.2.0 - version: 5.2.0(chart.js@4.4.7)(react@18.3.1) + specifier: ^5.3.0 + version: 5.3.0(chart.js@4.4.7)(react@18.3.1) react-diff-viewer-continued: specifier: ^3.4.0 version: 3.4.0(react-dom@18.3.1(react@18.3.1))(react@18.3.1) @@ -244,14 +250,14 @@ importers: specifier: ^1.25.1 version: 1.25.1(react@18.3.1) react-hook-form: - specifier: ^7.54.1 - version: 7.54.1(react@18.3.1) + specifier: ^7.54.2 + version: 7.54.2(react@18.3.1) react-markdown: specifier: ^9.0.1 - version: 9.0.1(@types/react@18.3.17)(react@18.3.1) + version: 9.0.1(@types/react@18.3.18)(react@18.3.1) react-mosaic-component: - specifier: ^6.1.0 - version: 6.1.0(@types/react@18.3.17)(dnd-core@16.0.1)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + specifier: ^6.1.1 + version: 6.1.1(@types/react@18.3.18)(dnd-core@16.0.1)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) react-photo-album: specifier: ^2.4.1 version: 2.4.1(react@18.3.1) @@ -259,8 +265,8 @@ importers: specifier: ^2.0.0 version: 2.0.0(react-dom@18.3.1(react@18.3.1))(react@18.3.1) react-router-dom: - specifier: ^6.28.0 - version: 6.28.0(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + specifier: ^6.28.1 + version: 6.28.1(react-dom@18.3.1(react@18.3.1))(react@18.3.1) react-simplemde-editor: specifier: ^5.2.0 version: 5.2.0(easymde@2.18.0)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) @@ -360,10 +366,10 @@ importers: version: 0.6.8 '@types/react': specifier: ^18.2.22 - version: 18.3.17 + version: 18.3.18 '@types/react-dom': specifier: ^18.2.7 - version: 18.3.5(@types/react@18.3.17) + version: 18.3.5(@types/react@18.3.18) '@types/react-window': specifier: ^1.8.8 version: 1.8.8 @@ -1117,8 +1123,8 @@ packages: '@codemirror/lang-yaml@6.1.2': resolution: {integrity: sha512-dxrfG8w5Ce/QbT7YID7mWZFKhdhsaTNOYjOkSIMt1qmC4VQnXSDSYVHHHn8k6kJUfIhtLo8t1JJgltlxWdsITw==} - '@codemirror/language@6.10.7': - resolution: {integrity: sha512-aOswhVOLYhMNeqykt4P7+ukQSpGL0ynZYaEyFDVHE7fl2xgluU3yuE9MdgYNfw6EmaNidoFMIQ2iTh1ADrnT6A==} + '@codemirror/language@6.10.8': + resolution: {integrity: sha512-wcP8XPPhDH2vTqf181U8MbZnW+tDyPYy0UzVOa+oHORjyT+mhhom9vBd7dApJwoDz9Nb/a8kHjJIsuA/t8vNFw==} '@codemirror/lint@6.8.4': resolution: {integrity: sha512-u4q7PnZlJUojeRe8FJa/njJcMctISGgPQ4PnWsd9268R4ZTtU+tfFYmwkBvgcrK2+QQ8tYFVALVb5fVJykKc5A==} @@ -1135,6 +1141,15 @@ packages: '@codemirror/view@6.36.1': resolution: {integrity: sha512-miD1nyT4m4uopZaDdO2uXU/LLHliKNYL9kB1C1wJHrunHLm/rpkb5QVSokqgw9hFqEZakrdlb/VGWX8aYZTslQ==} + '@emoji-mart/data@1.2.1': + resolution: {integrity: sha512-no2pQMWiBy6gpBEiqGeU77/bFejDqUTRY7KX+0+iur13op3bqUsXdnwoZs6Xb1zbv0gAj5VvS1PWoUUckSr5Dw==} + + '@emoji-mart/react@1.1.1': + resolution: {integrity: sha512-NMlFNeWgv1//uPsvLxvGQoIerPuVdXwK/EUek8OOkJ6wVOWPUizRBJU0hDqWZCOROVpfBgCemaC3m6jDOXi03g==} + peerDependencies: + emoji-mart: ^5.2 + react: ^16.8 || ^17 || ^18 + '@emotion/babel-plugin@11.13.5': resolution: {integrity: sha512-pxHCpT2ex+0q+HH91/zsdHkw/lXd468DIN2zvfvLtPKLLMo6gQj7oLObq8PhkrxOZb/gGCq03S3Z7PDhS8pduQ==} @@ -1382,8 +1397,8 @@ packages: '@lezer/highlight@1.2.1': resolution: {integrity: sha512-Z5duk4RN/3zuVO7Jq0pGLJ3qynpxUVsh7IbUbGj88+uV2ApSAn6kWg2au3iJb+0Zi7kKtqffIESgNcRXWZWmSA==} - '@lezer/json@1.0.2': - resolution: {integrity: sha512-xHT2P4S5eeCYECyKNPhr4cbEL9tc8w83SPwRC373o9uEdrvGKTZoJVAGxpOsZckMlEh9W23Pc72ew918RWQOBQ==} + '@lezer/json@1.0.3': + resolution: {integrity: sha512-BP9KzdF9Y35PDpv04r0VeSTKDeox5vVr3efE7eBbx3r4s3oNLfunchejZhjArmeieBH+nVOpgIiBJpEAv8ilqQ==} '@lezer/lr@1.4.2': resolution: {integrity: sha512-pu0K1jCIdnQ12aWNaAVU5bzi7Bd1w54J3ECgANPmYLtQKP0HBj2cE/5coBD66MT10xbtIuUr7tg0Shbsvk0mDA==} @@ -1409,8 +1424,8 @@ packages: '@noble/ciphers@0.5.3': resolution: {integrity: sha512-B0+6IIHiqEs3BPMT0hcRmHvEj2QHOLu+uwt+tqDDeVd0oyVzh7BPrDcPjRnV1PV/5LaknXJJQvOuRGR0zQJz+w==} - '@noble/ciphers@1.1.3': - resolution: {integrity: sha512-Ygv6WnWJHLLiW4fnNDC1z+i13bud+enXOFRBlpxI+NJliPWx5wdR+oWlTjLuBPTqjUjtHXtjkU6w3kuuH6upZA==} + '@noble/ciphers@1.2.0': + resolution: {integrity: sha512-YGdEUzYEd+82jeaVbSKKVp1jFZb8LwaNMIIzHFkihGvYdd/KKAr7KaJHdEdSYGredE3ssSravXIa0Jxg28Sv5w==} engines: {node: ^14.21.3 || >=16} '@noble/curves@1.1.0': @@ -1419,8 +1434,8 @@ packages: '@noble/curves@1.2.0': resolution: {integrity: sha512-oYclrNgRaM9SsBUBVbb8M6DTV7ZHRTKugureoYEncY5c65HOmRzvSiTE3y5CYaPYJA/GVkrhXEoF0M3Ya9PMnw==} - '@noble/curves@1.7.0': - resolution: {integrity: sha512-UTMhXK9SeDhFJVrHeUJ5uZlI6ajXg10O6Ddocf9S6GjbSBVZsJo88HzKwXznNfGpMTRDyJkqMjNDPYgf0qFWnw==} + '@noble/curves@1.8.0': + resolution: {integrity: sha512-j84kjAbzEnQHaSIhRPUmB3/eVXu2k3dKPl2LOrR8fSOIL+89U+7lV117EWHtq/GHM3ReGHM46iRBdZfpc4HRUQ==} engines: {node: ^14.21.3 || >=16} '@noble/hashes@1.3.1': @@ -1431,12 +1446,8 @@ packages: resolution: {integrity: sha512-MVC8EAQp7MvEcm30KWENFjgR+Mkmf+D189XJTkFIlwohU5hcBbn1ZkKq7KVTi2Hme3PMGF390DaL52beVrIihQ==} engines: {node: '>= 16'} - '@noble/hashes@1.6.0': - resolution: {integrity: sha512-YUULf0Uk4/mAA89w+k3+yUYh6NrEvxZa5T6SY3wlMvE2chHkxFUUIDI8/XW1QSC357iA5pSnqt7XEhvFOqmDyQ==} - engines: {node: ^14.21.3 || >=16} - - '@noble/hashes@1.6.1': - resolution: {integrity: sha512-pq5D8h10hHBjyqX+cfBm0i8JUXJ0UhczFc4r74zbuT9XgewFo2E3J1cOaGtdZynILNmQ685YWGzGE1Zv6io50w==} + '@noble/hashes@1.7.0': + resolution: {integrity: sha512-HXydb0DgzTpDPwbVeDGCG1gIu7X6+AuU6Zl6av/E/KG8LMsvPntvq+w17CHRpKBmN6Ybdrt1eP3k4cj8DJa78w==} engines: {node: ^14.21.3 || >=16} '@noble/secp256k1@1.7.1': @@ -1519,98 +1530,98 @@ packages: rollup: optional: true - '@rollup/rollup-android-arm-eabi@4.28.1': - resolution: {integrity: sha512-2aZp8AES04KI2dy3Ss6/MDjXbwBzj+i0GqKtWXgw2/Ma6E4jJvujryO6gJAghIRVz7Vwr9Gtl/8na3nDUKpraQ==} + '@rollup/rollup-android-arm-eabi@4.29.1': + resolution: {integrity: sha512-ssKhA8RNltTZLpG6/QNkCSge+7mBQGUqJRisZ2MDQcEGaK93QESEgWK2iOpIDZ7k9zPVkG5AS3ksvD5ZWxmItw==} cpu: [arm] os: [android] - '@rollup/rollup-android-arm64@4.28.1': - resolution: {integrity: sha512-EbkK285O+1YMrg57xVA+Dp0tDBRB93/BZKph9XhMjezf6F4TpYjaUSuPt5J0fZXlSag0LmZAsTmdGGqPp4pQFA==} + '@rollup/rollup-android-arm64@4.29.1': + resolution: {integrity: sha512-CaRfrV0cd+NIIcVVN/jx+hVLN+VRqnuzLRmfmlzpOzB87ajixsN/+9L5xNmkaUUvEbI5BmIKS+XTwXsHEb65Ew==} cpu: [arm64] os: [android] - '@rollup/rollup-darwin-arm64@4.28.1': - resolution: {integrity: sha512-prduvrMKU6NzMq6nxzQw445zXgaDBbMQvmKSJaxpaZ5R1QDM8w+eGxo6Y/jhT/cLoCvnZI42oEqf9KQNYz1fqQ==} + '@rollup/rollup-darwin-arm64@4.29.1': + resolution: {integrity: sha512-2ORr7T31Y0Mnk6qNuwtyNmy14MunTAMx06VAPI6/Ju52W10zk1i7i5U3vlDRWjhOI5quBcrvhkCHyF76bI7kEw==} cpu: [arm64] os: [darwin] - '@rollup/rollup-darwin-x64@4.28.1': - resolution: {integrity: sha512-WsvbOunsUk0wccO/TV4o7IKgloJ942hVFK1CLatwv6TJspcCZb9umQkPdvB7FihmdxgaKR5JyxDjWpCOp4uZlQ==} + '@rollup/rollup-darwin-x64@4.29.1': + resolution: {integrity: sha512-j/Ej1oanzPjmN0tirRd5K2/nncAhS9W6ICzgxV+9Y5ZsP0hiGhHJXZ2JQ53iSSjj8m6cRY6oB1GMzNn2EUt6Ng==} cpu: [x64] os: [darwin] - '@rollup/rollup-freebsd-arm64@4.28.1': - resolution: {integrity: sha512-HTDPdY1caUcU4qK23FeeGxCdJF64cKkqajU0iBnTVxS8F7H/7BewvYoG+va1KPSL63kQ1PGNyiwKOfReavzvNA==} + '@rollup/rollup-freebsd-arm64@4.29.1': + resolution: {integrity: sha512-91C//G6Dm/cv724tpt7nTyP+JdN12iqeXGFM1SqnljCmi5yTXriH7B1r8AD9dAZByHpKAumqP1Qy2vVNIdLZqw==} cpu: [arm64] os: [freebsd] - '@rollup/rollup-freebsd-x64@4.28.1': - resolution: {integrity: sha512-m/uYasxkUevcFTeRSM9TeLyPe2QDuqtjkeoTpP9SW0XxUWfcYrGDMkO/m2tTw+4NMAF9P2fU3Mw4ahNvo7QmsQ==} + '@rollup/rollup-freebsd-x64@4.29.1': + resolution: {integrity: sha512-hEioiEQ9Dec2nIRoeHUP6hr1PSkXzQaCUyqBDQ9I9ik4gCXQZjJMIVzoNLBRGet+hIUb3CISMh9KXuCcWVW/8w==} cpu: [x64] os: [freebsd] - '@rollup/rollup-linux-arm-gnueabihf@4.28.1': - resolution: {integrity: sha512-QAg11ZIt6mcmzpNE6JZBpKfJaKkqTm1A9+y9O+frdZJEuhQxiugM05gnCWiANHj4RmbgeVJpTdmKRmH/a+0QbA==} + '@rollup/rollup-linux-arm-gnueabihf@4.29.1': + resolution: {integrity: sha512-Py5vFd5HWYN9zxBv3WMrLAXY3yYJ6Q/aVERoeUFwiDGiMOWsMs7FokXihSOaT/PMWUty/Pj60XDQndK3eAfE6A==} cpu: [arm] os: [linux] - '@rollup/rollup-linux-arm-musleabihf@4.28.1': - resolution: {integrity: sha512-dRP9PEBfolq1dmMcFqbEPSd9VlRuVWEGSmbxVEfiq2cs2jlZAl0YNxFzAQS2OrQmsLBLAATDMb3Z6MFv5vOcXg==} + '@rollup/rollup-linux-arm-musleabihf@4.29.1': + resolution: {integrity: sha512-RiWpGgbayf7LUcuSNIbahr0ys2YnEERD4gYdISA06wa0i8RALrnzflh9Wxii7zQJEB2/Eh74dX4y/sHKLWp5uQ==} cpu: [arm] os: [linux] - '@rollup/rollup-linux-arm64-gnu@4.28.1': - resolution: {integrity: sha512-uGr8khxO+CKT4XU8ZUH1TTEUtlktK6Kgtv0+6bIFSeiSlnGJHG1tSFSjm41uQ9sAO/5ULx9mWOz70jYLyv1QkA==} + '@rollup/rollup-linux-arm64-gnu@4.29.1': + resolution: {integrity: sha512-Z80O+taYxTQITWMjm/YqNoe9d10OX6kDh8X5/rFCMuPqsKsSyDilvfg+vd3iXIqtfmp+cnfL1UrYirkaF8SBZA==} cpu: [arm64] os: [linux] - '@rollup/rollup-linux-arm64-musl@4.28.1': - resolution: {integrity: sha512-QF54q8MYGAqMLrX2t7tNpi01nvq5RI59UBNx+3+37zoKX5KViPo/gk2QLhsuqok05sSCRluj0D00LzCwBikb0A==} + '@rollup/rollup-linux-arm64-musl@4.29.1': + resolution: {integrity: sha512-fOHRtF9gahwJk3QVp01a/GqS4hBEZCV1oKglVVq13kcK3NeVlS4BwIFzOHDbmKzt3i0OuHG4zfRP0YoG5OF/rA==} cpu: [arm64] os: [linux] - '@rollup/rollup-linux-loongarch64-gnu@4.28.1': - resolution: {integrity: sha512-vPul4uodvWvLhRco2w0GcyZcdyBfpfDRgNKU+p35AWEbJ/HPs1tOUrkSueVbBS0RQHAf/A+nNtDpvw95PeVKOA==} + '@rollup/rollup-linux-loongarch64-gnu@4.29.1': + resolution: {integrity: sha512-5a7q3tnlbcg0OodyxcAdrrCxFi0DgXJSoOuidFUzHZ2GixZXQs6Tc3CHmlvqKAmOs5eRde+JJxeIf9DonkmYkw==} cpu: [loong64] os: [linux] - '@rollup/rollup-linux-powerpc64le-gnu@4.28.1': - resolution: {integrity: sha512-pTnTdBuC2+pt1Rmm2SV7JWRqzhYpEILML4PKODqLz+C7Ou2apEV52h19CR7es+u04KlqplggmN9sqZlekg3R1A==} + '@rollup/rollup-linux-powerpc64le-gnu@4.29.1': + resolution: {integrity: sha512-9b4Mg5Yfz6mRnlSPIdROcfw1BU22FQxmfjlp/CShWwO3LilKQuMISMTtAu/bxmmrE6A902W2cZJuzx8+gJ8e9w==} cpu: [ppc64] os: [linux] - '@rollup/rollup-linux-riscv64-gnu@4.28.1': - resolution: {integrity: sha512-vWXy1Nfg7TPBSuAncfInmAI/WZDd5vOklyLJDdIRKABcZWojNDY0NJwruY2AcnCLnRJKSaBgf/GiJfauu8cQZA==} + '@rollup/rollup-linux-riscv64-gnu@4.29.1': + resolution: {integrity: sha512-G5pn0NChlbRM8OJWpJFMX4/i8OEU538uiSv0P6roZcbpe/WfhEO+AT8SHVKfp8qhDQzaz7Q+1/ixMy7hBRidnQ==} cpu: [riscv64] os: [linux] - '@rollup/rollup-linux-s390x-gnu@4.28.1': - resolution: {integrity: sha512-/yqC2Y53oZjb0yz8PVuGOQQNOTwxcizudunl/tFs1aLvObTclTwZ0JhXF2XcPT/zuaymemCDSuuUPXJJyqeDOg==} + '@rollup/rollup-linux-s390x-gnu@4.29.1': + resolution: {integrity: sha512-WM9lIkNdkhVwiArmLxFXpWndFGuOka4oJOZh8EP3Vb8q5lzdSCBuhjavJsw68Q9AKDGeOOIHYzYm4ZFvmWez5g==} cpu: [s390x] os: [linux] - '@rollup/rollup-linux-x64-gnu@4.28.1': - resolution: {integrity: sha512-fzgeABz7rrAlKYB0y2kSEiURrI0691CSL0+KXwKwhxvj92VULEDQLpBYLHpF49MSiPG4sq5CK3qHMnb9tlCjBw==} + '@rollup/rollup-linux-x64-gnu@4.29.1': + resolution: {integrity: sha512-87xYCwb0cPGZFoGiErT1eDcssByaLX4fc0z2nRM6eMtV9njAfEE6OW3UniAoDhX4Iq5xQVpE6qO9aJbCFumKYQ==} cpu: [x64] os: [linux] - '@rollup/rollup-linux-x64-musl@4.28.1': - resolution: {integrity: sha512-xQTDVzSGiMlSshpJCtudbWyRfLaNiVPXt1WgdWTwWz9n0U12cI2ZVtWe/Jgwyv/6wjL7b66uu61Vg0POWVfz4g==} + '@rollup/rollup-linux-x64-musl@4.29.1': + resolution: {integrity: sha512-xufkSNppNOdVRCEC4WKvlR1FBDyqCSCpQeMMgv9ZyXqqtKBfkw1yfGMTUTs9Qsl6WQbJnsGboWCp7pJGkeMhKA==} cpu: [x64] os: [linux] - '@rollup/rollup-win32-arm64-msvc@4.28.1': - resolution: {integrity: sha512-wSXmDRVupJstFP7elGMgv+2HqXelQhuNf+IS4V+nUpNVi/GUiBgDmfwD0UGN3pcAnWsgKG3I52wMOBnk1VHr/A==} + '@rollup/rollup-win32-arm64-msvc@4.29.1': + resolution: {integrity: sha512-F2OiJ42m77lSkizZQLuC+jiZ2cgueWQL5YC9tjo3AgaEw+KJmVxHGSyQfDUoYR9cci0lAywv2Clmckzulcq6ig==} cpu: [arm64] os: [win32] - '@rollup/rollup-win32-ia32-msvc@4.28.1': - resolution: {integrity: sha512-ZkyTJ/9vkgrE/Rk9vhMXhf8l9D+eAhbAVbsGsXKy2ohmJaWg0LPQLnIxRdRp/bKyr8tXuPlXhIoGlEB5XpJnGA==} + '@rollup/rollup-win32-ia32-msvc@4.29.1': + resolution: {integrity: sha512-rYRe5S0FcjlOBZQHgbTKNrqxCBUmgDJem/VQTCcTnA2KCabYSWQDrytOzX7avb79cAAweNmMUb/Zw18RNd4mng==} cpu: [ia32] os: [win32] - '@rollup/rollup-win32-x64-msvc@4.28.1': - resolution: {integrity: sha512-ZvK2jBafvttJjoIdKm/Q/Bh7IJ1Ose9IBOwpOXcOvW3ikGTQGmKDgxTC6oCAzW6PynbkKP8+um1du81XJHZ0JA==} + '@rollup/rollup-win32-x64-msvc@4.29.1': + resolution: {integrity: sha512-+10CMg9vt1MoHj6x1pxyjPSMjHTIlqs8/tBztXvPAx24SKs9jwVnKqHJumlH/IzhaPUaj3T6T6wfZr8okdXaIg==} cpu: [x64] os: [win32] @@ -1629,35 +1640,41 @@ packages: '@scure/bip32@1.3.1': resolution: {integrity: sha512-osvveYtyzdEVbt3OfwwXFr4P2iVBL5u1Q3q4ONBfDY/UpOuXmOlbgwc1xECEboY8wIays8Yt6onaWMUdUbfl0A==} - '@scure/bip32@1.6.0': - resolution: {integrity: sha512-82q1QfklrUUdXJzjuRU7iG7D7XiFx5PHYVS0+oeNKhyDLT7WPqs6pBcM2W5ZdwOwKCwoE1Vy1se+DHjcXwCYnA==} + '@scure/bip32@1.6.1': + resolution: {integrity: sha512-jSO+5Ud1E588Y+LFo8TaB8JVPNAZw/lGGao+1SepHDeTs2dFLurdNIAgUuDlwezqEjRjElkCJajVrtrZaBxvaQ==} '@scure/bip39@1.2.1': resolution: {integrity: sha512-Z3/Fsz1yr904dduJD0NpiyRHhRYHdcnyh73FZWiV+/qhWi83wNJ3NWolYqCEN+ZWsUz2TWwajJggcRE9r1zUYg==} - '@scure/bip39@1.5.0': - resolution: {integrity: sha512-Dop+ASYhnrwm9+HA/HwXg7j2ZqM6yk2fyLWb5znexjctFY3+E+eU8cIWI0Pql0Qx4hPZCijlGq4OL71g+Uz30A==} + '@scure/bip39@1.5.1': + resolution: {integrity: sha512-GnlufVSP9UdAo/H2Patfv22VTtpNTyfi+I3qCKpvuB5l1KWzEYx+l2TNpBy9Ksh4xTs3Rn06tBlpWCi/1Vz8gw==} - '@shikijs/core@1.24.3': - resolution: {integrity: sha512-VRcf4GYUIkxIchGM9DrapRcxtgojg4IWKUtX5EtW+4PJiGzF2xQqZSv27PJt+WLc18KT3CNLpNWow9JYV5n+Rg==} + '@shikijs/core@1.26.1': + resolution: {integrity: sha512-yeo7sG+WZQblKPclUOKRPwkv1PyoHYkJ4gP9DzhFJbTdueKR7wYTI1vfF/bFi1NTgc545yG/DzvVhZgueVOXMA==} - '@shikijs/engine-javascript@1.24.3': - resolution: {integrity: sha512-De8tNLvYjeK6V0Gb47jIH2M+OKkw+lWnSV1j3HVDFMlNIglmVcTMG2fASc29W0zuFbfEEwKjO8Fe4KYSO6Ce3w==} + '@shikijs/engine-javascript@1.26.1': + resolution: {integrity: sha512-CRhA0b8CaSLxS0E9A4Bzcb3LKBNpykfo9F85ozlNyArxjo2NkijtiwrJZ6eHa+NT5I9Kox2IXVdjUsP4dilsmw==} - '@shikijs/engine-oniguruma@1.24.3': - resolution: {integrity: sha512-iNnx950gs/5Nk+zrp1LuF+S+L7SKEhn8k9eXgFYPGhVshKppsYwRmW8tpmAMvILIMSDfrgqZ0w+3xWVQB//1Xw==} + '@shikijs/engine-oniguruma@1.26.1': + resolution: {integrity: sha512-F5XuxN1HljLuvfXv7d+mlTkV7XukC1cawdtOo+7pKgPD83CAB1Sf8uHqP3PK0u7njFH0ZhoXE1r+0JzEgAQ+kg==} - '@shikijs/markdown-it@1.24.3': - resolution: {integrity: sha512-9Eeo6bcoXntHS0Mi6Vw6v8WAzRDT2JZTJXsH0rAo+3zDYdywUjwdsEl+YskOJL925ARikAMn1q5De8IC6nEwVg==} + '@shikijs/langs@1.26.1': + resolution: {integrity: sha512-oz/TQiIqZejEIZbGtn68hbJijAOTtYH4TMMSWkWYozwqdpKR3EXgILneQy26WItmJjp3xVspHdiUxUCws4gtuw==} - '@shikijs/types@1.24.3': - resolution: {integrity: sha512-FPMrJ69MNxhRtldRk69CghvaGlbbN3pKRuvko0zvbfa2dXp4pAngByToqS5OY5jvN8D7LKR4RJE8UvzlCOuViw==} + '@shikijs/markdown-it@1.26.1': + resolution: {integrity: sha512-+1WSmaD1ANN0x15ud4oMw5RFgFdyT0FpU9OoE7MUbiaU9+pRtAjIx0viTVsbhBzJEG1oVUBzK1Wc6Wz7toiTZg==} - '@shikijs/vscode-textmate@9.3.1': - resolution: {integrity: sha512-79QfK1393x9Ho60QFyLti+QfdJzRQCVLFb97kOIV7Eo9vQU/roINgk7m24uv0a7AUvN//RDH36FLjjK48v0s9g==} + '@shikijs/themes@1.26.1': + resolution: {integrity: sha512-JDxVn+z+wgLCiUhBGx2OQrLCkKZQGzNH3nAxFir4PjUcYiyD8Jdms9izyxIogYmSwmoPTatFTdzyrRKbKlSfPA==} - '@snort/worker-relay@1.3.0': - resolution: {integrity: sha512-o6RuXCgwF4jG6lLATGTHXRRB1kllZMp7WnpMA4GzaY5fAI6uixSXFFna76WPwte6TMQ04uDM25hpByZrs2/L5Q==} + '@shikijs/types@1.26.1': + resolution: {integrity: sha512-d4B00TKKAMaHuFYgRf3L0gwtvqpW4hVdVwKcZYbBfAAQXspgkbWqnFfuFl3MDH6gLbsubOcr+prcnsqah3ny7Q==} + + '@shikijs/vscode-textmate@10.0.1': + resolution: {integrity: sha512-fTIQwLF+Qhuws31iw7Ncl1R3HUDtGwIipiJ9iU+UsDUwMhegFcQKQHd51nZjb7CArq0MvON8rbgCGQYWHUKAdg==} + + '@snort/worker-relay@1.3.1': + resolution: {integrity: sha512-oS176cPijrv5euHKyJKDo3A+r0+/Xwo/sjGL3XLc1ifD/j8xUKyXUIuI6hMbB7HN1lapFdqHan4J7dBAQ/V5jw==} '@sqlite.org/sqlite-wasm@3.46.1-build5': resolution: {integrity: sha512-zs1wSjcUSILA55xJjEP+IxOU8GDuTnrxNFNIqz/aDo/mWm8pYijueuO3WW8olWNKFWOOUzq9BVu+zkG46EYcyw==} @@ -1747,8 +1764,8 @@ packages: '@types/lodash.throttle@4.1.9': resolution: {integrity: sha512-PCPVfpfueguWZQB7pJQK890F2scYKoDUL3iM522AptHWn7d5NQmeS/LTEHIcLr5PaTzl3dK2Z0xSUHHTHwaL5g==} - '@types/lodash@4.17.13': - resolution: {integrity: sha512-lfx+dftrEZcdBPczf9d0Qv0x+j/rfNCMuC6OcfXmO8gkfeNAY88PgKUbvG56whcN23gc27yenwF6oJZXGFpYxg==} + '@types/lodash@4.17.14': + resolution: {integrity: sha512-jsxagdikDiDBeIRaPYtArcT8my4tN1og7MtMRquFT3XNA6axxyHDRUemqDz/taRDdOUn0GnGHRCuff4q48sW9A==} '@types/marked@4.3.2': resolution: {integrity: sha512-a79Yc3TOk6dGdituy8hmTTJXjOkZ7zsFYV10L337ttq/rec8lRMDBpV7fL3uLx6TgbFCa5DU/h8FmIBQPSbU0w==} @@ -1782,8 +1799,8 @@ packages: '@types/react-window@1.8.8': resolution: {integrity: sha512-8Ls660bHR1AUA2kuRvVG9D/4XpRC6wjAaPT9dil7Ckc76eP9TKWZwwmgfq8Q1LANX3QNDnoU4Zp48A3w+zK69Q==} - '@types/react@18.3.17': - resolution: {integrity: sha512-opAQ5no6LqJNo9TqnxBKsgnkIYHozW9KSTlFVoSUJYh1Fl/sswkEoqIugRSm7tbh6pABtYjGAjW+GOS23j8qbw==} + '@types/react@18.3.18': + resolution: {integrity: sha512-t4yC+vtgnkYjNSKlFx1jkAhH8LgTo2N/7Qvi83kdEaUtMDiwpbLAktKDaAMlRcJ5eSxZkH74eEGt1ky31d7kfQ==} '@types/resolve@1.20.2': resolution: {integrity: sha512-60BCwRFOZCQhDncwQdxxeOEEkbc5dIMccYLwbxsS4TUNeVECQ/pBJ0j09mrHOl/JJvpRPGwO9SvE4nR2Nb/a4Q==} @@ -1906,29 +1923,29 @@ packages: resolution: {integrity: sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==} engines: {node: '>=8'} - applesauce-channel@0.0.0-next-20241219164005: - resolution: {integrity: sha512-TjsMuAYwzWhC3lREl9uTSaAJd3qAQFvSF76hpXd8vPZ3eWpwhfbCzOh53IQEGRu1/1aHBTOSujXjeejUVIPYFw==} + applesauce-channel@0.0.0-next-20250103191026: + resolution: {integrity: sha512-7YEGbiVAM0C1jyzoVkOQFEwe0nnJ4cvbOzWVZxuRJBeTch11hNFDERMn6EiiK+LR+0zEPmIX+MIXk9W0agw9sQ==} - applesauce-content@0.0.0-next-20241219164005: - resolution: {integrity: sha512-tKP9HqCUMEPACsl8C3+8faRL/IHlLhXDkD4LVTxwCQS2RJEeab1fRJf64Fjm2LoVop9buvnhF2YakPBIU0w5xw==} + applesauce-content@0.0.0-next-20250103191026: + resolution: {integrity: sha512-dgpfrQRs0Pf1Zpary+m7PMBs5DFJw4CFR9v3iMvrVBr8QMxyzohps43K9hQxToozo3cyDHACaxoQRZd9uHvJ0Q==} - applesauce-core@0.0.0-next-20241219164005: - resolution: {integrity: sha512-LzMG6d7lpXbnxwTTULZuP9fbB8opABbZTNtbIX3ckScE4nEJhwxz+x7XTUqayfwshJ9kk8ftTC5tcWA6AxVfsw==} + applesauce-core@0.0.0-next-20250103191026: + resolution: {integrity: sha512-6nJ9A9fM0HMSdIgJhIbuHENjbxQ8Rc1SwGwxQYBPY+KA6HNaiahgf9zyy3p+A10sZ19dWRboFrh8KSB6FT2Qhg==} - applesauce-factory@0.0.0-next-20241219164005: - resolution: {integrity: sha512-IcVABpPHvVsfhMM/OiVFbXSjjG9C6NP0nXgOObeZkI5kY4dFAplEgEwdg903K4cJXmkxfviYywA4Jhf5T7Xaaw==} + applesauce-factory@0.0.0-next-20250103191026: + resolution: {integrity: sha512-PmP6gmj+PW8LRAO1kRLoZwxGot8VvgOJ6buE434H1uMq4CcANi6tfWscaf9XycvJLI5cBGInTPG4HQ0kqvQzbg==} - applesauce-lists@0.0.0-next-20241219164005: - resolution: {integrity: sha512-nAEw6owPVAL3Ewsp4rd8J6B4cUNhi8ZwLNQOsAvLYjWIey9DXRsWK5V71O189C+e7DNSHgYzg4ZcXJs4h0vCCw==} + applesauce-lists@0.0.0-next-20250103191026: + resolution: {integrity: sha512-i0sfQk6tsCwJIxLj7VNt+nBSszX8V4lCKQkRnOze6i4wjoVCcTXMxR8cjxXoJynSzwA+5kC2zPeLjTu0wMHChA==} - applesauce-net@0.0.0-next-20241219164005: - resolution: {integrity: sha512-Xekr5AgATSSEB6BA5xF1hcdhLsJAV5aCP4HB9I6UkELoAvrB5Ykq8NBmKsHIESfCkB3qaR5COw5HMHg8pdJzMQ==} + applesauce-net@0.0.0-next-20250103191026: + resolution: {integrity: sha512-ipnaMop8bM5lHUpQOlZItUJTnATEKHcPiMFaNYLz1mV9lT2I8t594Rr6+vyWEaEVqwdej+r6OYJn94ZWFEWnWA==} - applesauce-react@0.0.0-next-20241219164005: - resolution: {integrity: sha512-7tr/hCUUJ16niF3idd0d3Ahngii9BbCM8T+aJB+05CQSkmLmapC8hTeAyYOi0Bksa2n3Txr9WFa/6NpbZdRXVA==} + applesauce-react@0.0.0-next-20250103191026: + resolution: {integrity: sha512-tW4GiUB4KVqZi5wxo7NC+XeLexB2M4otfIoJ85bIPsPukLqboTXcnWXZjtMNXzUApQQhmD2yzN1juXhom9Edng==} - applesauce-signer@0.0.0-next-20241219164005: - resolution: {integrity: sha512-UOuENxcHg7OmVLLUQ15Akkg1kHBVFq6GBgBiHvqIbORy4sKq+idce/+3IZTfY3w9HoOV98x2xVGnT0Ld/5jNhg==} + applesauce-signer@0.0.0-next-20250103191026: + resolution: {integrity: sha512-0Aa/77eKXLE0PN6DoXIi9Unfh6hfkH998C+ZdXfa0EwMJZZ9ogwpYXpAsEwA57J2/17fgpszIEo3quVYgUMKRw==} argparse@1.0.10: resolution: {integrity: sha512-o5Roy6tNG4SL/FOkCAN6RzjiakZS25RLYFrcMttJqbdd8BWrnA+fGz57iN5Pb06pvBGvl5gQ0B48dJlslXvoTg==} @@ -1940,8 +1957,8 @@ packages: resolution: {integrity: sha512-y+CcFFwelSXpLZk/7fMB2mUbGtX9lKycf1MWJ7CaTIERyitVlyQx6C+sxcROU2BAJ24OiZyK+8wj2i8AlBoS3A==} engines: {node: '>=10'} - array-buffer-byte-length@1.0.1: - resolution: {integrity: sha512-ahC5W1xgou+KTXix4sAO8Ki12Q+jf4i0+tmk3sC+zgcynshkHxzpXdImBehiUYKKKDwvfFiJl1tZt6ewscS1Mg==} + array-buffer-byte-length@1.0.2: + resolution: {integrity: sha512-LHE+8BuR7RYGDKvnrmcuSq3tDcKv9OFEXQt/HpbZhY7V6h0zlUXutnAD82GiFx9rdieCMjkvtcsPqBwgUl1Iiw==} engines: {node: '>= 0.4'} array-union@2.1.0: @@ -2186,8 +2203,8 @@ packages: crelt@1.0.6: resolution: {integrity: sha512-VQ2MBenTq1fWZUH9DJNGti7kKv6EeAuYr3cLwxUWhIu1baTaXh4Ib5W2CqHVqib4/MqbYGJqiL3Zb8GJZr3l4g==} - cross-fetch@4.0.0: - resolution: {integrity: sha512-e4a5N8lVvuLgAWgnCrLr2PP0YyDOTHa9H/Rj54dirp61qXnNq46m82bRhNqIA5VccJtWBvPTFRV3TtvHUKPB1g==} + cross-fetch@4.1.0: + resolution: {integrity: sha512-uKm5PU+MHTootlWEY+mZ4vvXoCn4fLQxT9dSc1sXVMSFkINTJVN8cAQROpwcKm8bJ/c7rgZVIBWzH5T78sNZZw==} cross-spawn@7.0.6: resolution: {integrity: sha512-uV2QOWP2nWzsy2aMp8aRibhi9dlzF5Hgh5SHaB9OiTGEyDTiJJyx0uy51QXdyWbtAHNua4XJzUKca3OzKUd3vA==} @@ -2258,8 +2275,8 @@ packages: resolution: {integrity: sha512-3bYs1rOD33uo8aqJfKP3JWPAibgw8Zm2+L9vBKEHJ2Rg+viTR7o5Mmv5mZcieN+FRYaAOWX5SJATX6k1PWz72g==} engines: {node: '>=12'} - d3-octree@1.0.2: - resolution: {integrity: sha512-Qxg4oirJrNXauiuC94uKMbgxwnhdda9xRLl9ihq45srlJ4Ga3CSgqGcAL8iW7N5CIv4Oz8x3E734ulxyvHPvwA==} + d3-octree@1.1.0: + resolution: {integrity: sha512-F8gPlqpP+HwRPMO/8uOu5wjH110+6q4cgJvgJT6vlpy3BEaDIKlTZrgHKZSp/i1InRpVfh4puY/kvL6MxK930A==} d3-quadtree@3.0.1: resolution: {integrity: sha512-04xDrxQTDTCFwP5H6hRhsRcb9xxv2RzkcsygFzmkSIOJy3PeRJP7sNk3VRIbKXcog561P9oU0/rVH6vDROAgUw==} @@ -2303,12 +2320,12 @@ packages: resolution: {integrity: sha512-xWkgLj/mSDs/Y2flAMXwLKxnCh+rFScf4N8hSOtpsMxXYXui7CbtIUYP52VXQze9HhRND2Ua/AiEHZ8j/vtB0w==} engines: {node: '>=12'} - data-view-buffer@1.0.1: - resolution: {integrity: sha512-0lht7OugA5x3iJLOWFhWK/5ehONdprk0ISXqVFn/NFrDu+cuc8iADFrGQz5BnRK7LLU3JmkbXSxaqX+/mXYtUA==} + data-view-buffer@1.0.2: + resolution: {integrity: sha512-EmKO5V3OLXh1rtK2wgXRansaK1/mtVdTUEiEI0W8RkvgT05kfxaH29PliLnpLP73yYO6142Q72QNa8Wx/A5CqQ==} engines: {node: '>= 0.4'} - data-view-byte-length@1.0.1: - resolution: {integrity: sha512-4J7wRJD3ABAzr8wP+OcIcqq2dlUKp4DVflx++hs5h5ZKydWMI6/D/fAot+yh6g2tHh8fLFTvNOaVN357NvSrOQ==} + data-view-byte-length@1.0.2: + resolution: {integrity: sha512-tuhGbE6CfTM9+5ANGf+oQb72Ky/0+s3xKUpHvShfiz2RxMFgFPjsXuRLBVMtvMs15awe45SRb83D6wH4ew6wlQ==} engines: {node: '>= 0.4'} data-view-byte-offset@1.0.1: @@ -2388,8 +2405,8 @@ packages: resolution: {integrity: sha512-cgwlv/1iFQiFnU96XXgROh8xTeetsnJiDsTc7TYCLFd9+/WNkIqPTxiM/8pSd8VIrhXGTf1Ny1q1hquVqDJB5w==} engines: {node: '>= 4'} - domutils@3.1.0: - resolution: {integrity: sha512-H78uMmQtI2AhgDJjWeQmHwJJ2bLPD3GMmO7Zja/ZZh84wkm+4ut+IUnUdRa8uCGX88DiVx1j6FRe1XfxEgjEZA==} + domutils@3.2.1: + resolution: {integrity: sha512-xWXmuRnN9OMP6ptPd2+H0cCbcYBULa5YDTbMm/2lvkWvNA3O4wcW+GvzooqBuNM8yy6pl3VIAeJTUUWUbfI5Fw==} draco3d@1.5.7: resolution: {integrity: sha512-m6WCKt/erDXcw+70IJXnG7M3awwQPAsZvJGX5zY7beBqpELw6RDGkYVU0W43AFxye4pDZ5i2Lbyc/NNGqwjUVQ==} @@ -2410,22 +2427,22 @@ packages: engines: {node: '>=0.10.0'} hasBin: true - electron-to-chromium@1.5.74: - resolution: {integrity: sha512-ck3//9RC+6oss/1Bh9tiAVFy5vfSKbRHAFh7Z3/eTRkEqJeWgymloShB17Vg3Z4nmDNp35vAd1BZ6CMW4Wt6Iw==} + electron-to-chromium@1.5.76: + resolution: {integrity: sha512-CjVQyG7n7Sr+eBXE86HIulnL5N8xZY1sgmOPGuq/F0Rr0FJq63lg0kEtOIDfZBk44FnDLf6FUJ+dsJcuiUDdDQ==} emittery@1.0.3: resolution: {integrity: sha512-tJdCJitoy2lrC2ldJcqN4vkqJ00lT+tOWNT1hBJjO/3FDMJa5TTIiYGCKGkn/WfCyOzUMObeohbVTj00fhiLiA==} engines: {node: '>=14.16'} + emoji-mart@5.6.0: + resolution: {integrity: sha512-eJp3QRe79pjwa+duv+n7+5YsNhRcMl812EcFVwrnRvYKoNPoQb5qxU8DG6Bgwji0akHdp6D4Ln6tYLG58MFSow==} + emoji-regex-xs@1.0.0: resolution: {integrity: sha512-LRlerrMYoIDrT6jgpeZ2YYl/L8EulRTt5hQcYjy5AInh7HWXKimpqx68aknBFpGL2+/IcogTcaydJEgaTmOpDg==} emoji-regex@10.4.0: resolution: {integrity: sha512-EC+0oUMY1Rqm4O6LLrgjtYDvcVYTy7chDnM4Q7030tP4Kwj3u/pR6gP9ygnp2CJMK5Gq+9Q2oqmrFJAz01DXjw==} - emojilib@3.0.12: - resolution: {integrity: sha512-b52zmWqBwv9juk6lKaTdYxRQSnpsnT58Sj/x6fE8fZWcsNd43gAPXUbtjLKJvVlPS9FFNCN6nB9Vh1xipnCzXw==} - encoding-sniffer@0.2.0: resolution: {integrity: sha512-ju7Wq1kg04I3HtiYIOrUrdfdDvkyO9s5XM8QAj/bN61Yo/Vb4vgJxy5vi4Yxk01gWHbrofpPtpxM8bKger9jhg==} @@ -2443,8 +2460,8 @@ packages: error-stack-parser@2.1.4: resolution: {integrity: sha512-Sk5V6wVazPhq5MhpO+AUxJn5x7XSXGl1R93Vn7i+zS15KDVxQijejNCrz8340/2bgLBjR9GtEG8ZVKONDjcqGQ==} - es-abstract@1.23.6: - resolution: {integrity: sha512-Ifco6n3yj2tMZDWNLyloZrytt9lqqlwvS83P3HtaETR0NUOYnIULGGHpktqYGObGy+8wc1okO25p8TjemhImvA==} + es-abstract@1.23.9: + resolution: {integrity: sha512-py07lI0wjxAC/DcfK1S6G7iANonniZwTISvdPzk9hzeH0IZIshbuuFxLIU96OyF89Yb9hiqWn8M/bY83KY5vzA==} engines: {node: '>= 0.4'} es-define-property@1.0.1: @@ -2459,8 +2476,8 @@ packages: resolution: {integrity: sha512-MZ4iQ6JwHOBQjahnjwaC1ZtIBH+2ohjamzAO3oaHcXYup7qxjF2fixyH+Q71voWHeOkI2q/TnJao/KfXYIZWbw==} engines: {node: '>= 0.4'} - es-set-tostringtag@2.0.3: - resolution: {integrity: sha512-3T8uNMC3OQTHkFUsFq8r/BwAXLHvU/9O9mE0fBc/MY5iq/8H7ncvO947LmYA6ldWw9Uh8Yhf25zu6n7nML5QWQ==} + es-set-tostringtag@2.1.0: + resolution: {integrity: sha512-j6vWzfrGVfyXxge+O0x5sh6cvxAog0a/4Rdd2K36zCMV5eJ+/+tOAngRO8cODMNWbVRdVlmGZQL2YS3yR8bIUA==} engines: {node: '>= 0.4'} es-to-primitive@1.3.0: @@ -2537,8 +2554,8 @@ packages: fastest-stable-stringify@2.0.2: resolution: {integrity: sha512-bijHueCGd0LqqNK9b5oCMHc0MluJAx0cwqASgbWMvkO01lCYgIhacVRLcaDz3QnyYIRNJRDwMb41VuT6pHJ91Q==} - fastq@1.17.1: - resolution: {integrity: sha512-sRVD3lWVIXWg6By68ZN7vho9a1pQcN/WBFaAAsDDFzlJjvoGx0P8z7V1t72grFJfJhu3YPZBuu25f7Kaw2jN1w==} + fastq@1.18.0: + resolution: {integrity: sha512-QKHXPW0hD8g4UET03SdOdunzSouc9N4AuHdsX8XNcTsuz+yYFILVNIX4l9yHABMhiEI9Db0JTTIpu0wB+Y1QQw==} fdir@6.4.2: resolution: {integrity: sha512-KnhMXsKSPZlAhp7+IjUkRZKPb4fUyccpDrdFXbi4QL1qkmFh9kVY09Yox+n4MaOb3lHZ1Tv829C3oaaXoMYPDQ==} @@ -2572,8 +2589,8 @@ packages: for-each@0.3.3: resolution: {integrity: sha512-jqYfLp7mo9vIyQf8ykW2v7A+2N4QjeCeI5+Dz9XraiO1ign81wjiH7Fb9vSOWvQfNtmSa4H2RoQTrrXivdUZmw==} - force-graph@1.47.1: - resolution: {integrity: sha512-NF0prpR8tNGq7oCE/aFImT/6/3wSk585bcp39UAj6SNSPjvKbX6ktCH6cZnjfsnPNx/DYj1rn+cvvjH814HCFA==} + force-graph@1.47.2: + resolution: {integrity: sha512-JGAURlgNGH2FrQGa6KcTiA2zreEW32ED6Mfh5UZHxERhyo3RabcftAVnVfgMziOtSl44bHuwdCuI4/afSTUZuQ==} engines: {node: '>=12'} framer-motion@10.18.0: @@ -2613,8 +2630,8 @@ packages: function-bind@1.1.2: resolution: {integrity: sha512-7XHNxH7qX9xG5mIwxkhumTox/MIRNcOgDrxWsMt2pAr23WHp6MrRlN7FBSFpCpr+oVO0F744iUgR82nJMfG2SA==} - function.prototype.name@1.1.7: - resolution: {integrity: sha512-2g4x+HqTJKM9zcJqBSpjoRmdcPFtJM60J3xJisTQSXBWka5XqyBN/2tNUgma1mztTXyDuUsEtYe5qcs7xYzYQA==} + function.prototype.name@1.1.8: + resolution: {integrity: sha512-e5iwyodOHhbMr/yNrc7fDYG4qlbIvI5gajyzPnb5TCwyhjApznQh1BMFou9b30SevY43gCJKXycoCBjMbsuW0Q==} engines: {node: '>= 0.4'} functions-have-names@1.2.3: @@ -2624,8 +2641,8 @@ packages: resolution: {integrity: sha512-3hN7NaskYvMDLQY55gnW3NQ+mesEAepTqlg+VEbj7zzqEMBVNhzcGYYeqFo/TlYz6eQiFcp1HcsCZO+nGgS8zg==} engines: {node: '>=6.9.0'} - get-intrinsic@1.2.6: - resolution: {integrity: sha512-qxsEs+9A+u85HhllWJJFicJfPDhRmjzoYdl64aMWW9yRIJmSyxdn8IEkuIM530/7T+lv0TIHd8L6Q/ra0tEoeA==} + get-intrinsic@1.2.7: + resolution: {integrity: sha512-VW6Pxhsrk0KAOqs3WEd0klDiF/+V7gQOpAvY1jVU/LHmaD/kQO4523aiJuikX/QAKYiW6x8Jh+RJej1almdtCA==} engines: {node: '>= 0.4'} get-nonce@1.0.1: @@ -2635,10 +2652,21 @@ packages: get-own-enumerable-property-symbols@3.0.2: resolution: {integrity: sha512-I0UBV/XOz1XkIJHEUDMZAbzCThU/H8DxmSfmdGcKPnVhu2VfFqr34jr9777IyaTYvxjedWhqVIilEDsCdP5G6g==} + get-proto@1.0.1: + resolution: {integrity: sha512-sTSfBjoXBp89JvIKIefqw7U2CCebsc74kiY6awiGogKtoSGbgjYE/G/+l9sF3MWFPNc9IcoOC4ODfKHfxFmp0g==} + engines: {node: '>= 0.4'} + get-symbol-description@1.1.0: resolution: {integrity: sha512-w9UMqWwJxHNOvoNzSJ2oPF5wvYcvP7jUvYzhp67yEhTi17ZDBBC1z9pTdGuzjD+EFIqLSYRweZjqfiPzQ06Ebg==} engines: {node: '>= 0.4'} + gif-picker-react@1.4.0: + resolution: {integrity: sha512-e48u077ldBiMoPS4NZ+3noW9aJCLMYMQqcx4xdcaGJdONVXCWNxw3bJ0MF2X5xO6fJXHY4IA9vD4/pdswMrorA==} + engines: {node: '>=16.0.0', npm: '>=8.0.0'} + peerDependencies: + react: '>=17' + react-dom: '>=17' + glob-parent@5.1.2: resolution: {integrity: sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==} engines: {node: '>= 6'} @@ -2810,8 +2838,8 @@ packages: is-arrayish@0.2.1: resolution: {integrity: sha512-zz06S8t0ozoDXMG+ube26zeCTNXcKIPJZJi8hBrF4idCLms4CG9QtK7qBl1boi5ODzFpjswb5JPmHCbMpjaYzg==} - is-async-function@2.0.0: - resolution: {integrity: sha512-Y1JXKrfykRJGdlDwdKlLpLyMIiWqWvuSd17TvZk68PLAOGOoF4Xyav1z0Xhoi+gCYjZVeC5SI+hYFOfvXmGRCA==} + is-async-function@2.1.0: + resolution: {integrity: sha512-GExz9MtyhlZyXYLxzlJRj5WUCE661zhDa1Yna52CN57AJsymh+DvXXjyveSioqSRdxvUrdKdvqB1b5cVKsNpWQ==} engines: {node: '>= 0.4'} is-bigint@1.1.0: @@ -2826,8 +2854,8 @@ packages: resolution: {integrity: sha512-1BC0BVFhS/p0qtw6enp8e+8OD0UrK0oFLztSjNzhcKA3WDuJxxAPXzPuPtKkjEY9UUoEWlX/8fgKeu2S8i9JTA==} engines: {node: '>= 0.4'} - is-core-module@2.16.0: - resolution: {integrity: sha512-urTSINYfAYgcbLb0yDQ6egFm6h3Mo1DcF9EkyXSRjjzdHbsulg01qhwWuXdOoUBuTkbQ80KDboXa0vFJ+BDH+g==} + is-core-module@2.16.1: + resolution: {integrity: sha512-UfoeMA6fIJ8wTYFEUjelnaGI67v6+N7qXJEvQuIGa99l4xsCruSYOVSQ0uPANn4dAzm8lkYPaKLrrijLq7x23w==} engines: {node: '>= 0.4'} is-data-view@1.0.2: @@ -2852,8 +2880,8 @@ packages: resolution: {integrity: sha512-1pC6N8qWJbWoPtEjgcL2xyhQOP491EQjeUo3qTKcmV8YSDDJrOepfG8pcC7h/QgnQHYSv0mJ3Z/ZWxmatVrysg==} engines: {node: '>= 0.4'} - is-generator-function@1.0.10: - resolution: {integrity: sha512-jsEjy9l3yiXEQ+PsXdmBwEPcOxaXWLspKdplFUVI9vq1iZgIekeC0L167qeu86czQaxed3q/Uzuw0swL0irL8A==} + is-generator-function@1.1.0: + resolution: {integrity: sha512-nPUB5km40q9e8UfN/Zc24eLlzdSf9OfKByBw9CIdw4H1giPMeA0OIJvbchsCu4npfI2QcMVBsGEBHKZ7wLTWmQ==} engines: {node: '>= 0.4'} is-glob@4.0.3: @@ -2873,10 +2901,6 @@ packages: is-module@1.0.0: resolution: {integrity: sha512-51ypPSPCoTEIN9dy5Oy+h4pShgJmPCygKfyRCISBI+JoWT/2oJvK8QPxmwv7b/p239jXrm9M1mlQbyKJ5A152g==} - is-negative-zero@2.0.3: - resolution: {integrity: sha512-5KoIu2Ngpyek75jXodFvnafB6DJgr3u8uuK0LEZJjrU19DrMD3EVERaR8sjz8CCGgpZvxPl9SuE1GMVPFHx1mw==} - engines: {node: '>= 0.4'} - is-number-object@1.1.1: resolution: {integrity: sha512-lZhclumE1G6VYD8VHe35wFaIif+CTy5SJIi5+3y4psDgWu4wPDoBhF8NxUOinEc7pHgiTsT6MaBb92rKhhD+Xw==} engines: {node: '>= 0.4'} @@ -3104,8 +3128,8 @@ packages: resolution: {integrity: sha512-/IXtbwEk5HTPyEwyKX6hGkYXxM9nbj64B+ilVJnC/R6B0pH5G4V3b0pVbL7DBj4tkhBAppbQUlf6F6Xl9LHu1g==} engines: {node: '>= 0.4'} - mdast-util-find-and-replace@3.0.1: - resolution: {integrity: sha512-SG21kZHGC3XRTSUhtofZkBzZTJNM5ecCi0SK2IMKmSXR8vO3peL+kb1O0z7Zl83jKtutG4k5Wv/W7V3/YHvzPA==} + mdast-util-find-and-replace@3.0.2: + resolution: {integrity: sha512-Tmd1Vg/m3Xz43afeNxDIhWRtFZgM2VLyaf4vSTYwudTyeuTneoL3qtWMA5jeLyz/O1vDJmmV4QuScFCA2tBPwg==} mdast-util-from-markdown@2.0.2: resolution: {integrity: sha512-uZhTV/8NBuw0WHkPTrCqDOl0zVe1BIng5ZtHoDk49ME1qqcjYmmLmOf0gELgcRMxN4w2iuIeVso5/6QymSrgmA==} @@ -3400,8 +3424,8 @@ packages: once@1.4.0: resolution: {integrity: sha512-lNaJgI+2Q5URQBkccEKHTQOPaXdUxnZZElQTZY0MFUAuaEqe1E+Nyvgdz/aIyNi6Z9MzO5dv1H8n58/GELp3+w==} - oniguruma-to-es@0.8.0: - resolution: {integrity: sha512-rY+/a6b+uCgoYIL9itjY0x99UUDHXmGaw7Jjk5ZvM/3cxDJifyxFr/Zm4tTmF6Tre18gAakJo7AzhKUeMNLgHA==} + oniguruma-to-es@0.10.0: + resolution: {integrity: sha512-zapyOUOCJxt+xhiNRPPMtfJkHGsZ98HHB9qJEkdT8BGytO/+kpe4m1Ngf0MzbzTmhacn11w9yGeDP6tzDhnCdg==} os-tmpdir@1.0.2: resolution: {integrity: sha512-D2FR03Vir7FIu45XBY20mTb+/ZSWB00sjU9jdQXt83gDrI4Ztz5Fs7/yy74g2N5SVQY4xY1qDr4rNddwYRVX0g==} @@ -3410,6 +3434,10 @@ packages: outdent@0.5.0: resolution: {integrity: sha512-/jHxFIzoMXdqPzTaCpFzAAWhpkSjZPF4Vsn6jAfNpmbH/ymsmd7Qc6VE9BGn0L6YMj6uwpQLxCECpus4ukKS9Q==} + own-keys@1.0.1: + resolution: {integrity: sha512-qFOyK5PjiWZd+QQIh+1jhdb9LpxTF0qs7Pm8o5QHYZ0M3vKqSqzsZaEB6oWlxZ+q2sJBMI/Ktgd2N5ZwQoRHfg==} + engines: {node: '>= 0.4'} + p-filter@2.1.0: resolution: {integrity: sha512-ZBxxZ5sL2HghephhpGAQdoskxplTwr7ICaehZwLIlfL6acuVgZPm8yBNuRAFBGEqtD/hmUeq9eqLg2ys9Xr/yw==} engines: {node: '>=8'} @@ -3430,8 +3458,8 @@ packages: resolution: {integrity: sha512-R4nPAVTAU0B9D35/Gk3uJf/7XYbQcyohSKdvAxIRSNghFl4e71hVoGnBNQz9cWaXxO2I10KTC+3jMdvvoKw6dQ==} engines: {node: '>=6'} - package-manager-detector@0.2.7: - resolution: {integrity: sha512-g4+387DXDKlZzHkP+9FLt8yKj8+/3tOkPv7DVTJGGRm00RkEWgqbFstX1mXJ4M0VDYhUqsTOiISqNOJnhAu3PQ==} + package-manager-detector@0.2.8: + resolution: {integrity: sha512-ts9KSdroZisdvKMWVAVCXiKqnqNfXz4+IbrBG8/BWx/TR5le+jfenvoBuIZ6UWM9nz47W7AbD9qYfAwfWMIwzA==} parent-module@1.0.1: resolution: {integrity: sha512-GQ2EWRpQV8/o+Aw8YqtfZZPfNRWZYkbidE9k5rpl/hC3vtHHBfGm2Ifi6qWV+coDGkrUKZAxE3Lot5kcsRlh+g==} @@ -3556,11 +3584,11 @@ packages: rdndmb-html5-to-touch@8.1.2: resolution: {integrity: sha512-efi3MaXYxWaLMd5xzF1bVvmX8erTMhYHSlaMjQe+tynf4IdtgRYfKLwYg+4Z5eq4k7idrjKHQOIMDE6D8LjnOA==} - react-chartjs-2@5.2.0: - resolution: {integrity: sha512-98iN5aguJyVSxp5U3CblRLH67J8gkfyGNbiK3c+l1QI/G4irHMPQw44aEPmjVag+YKTyQ260NcF82GTQ3bdscA==} + react-chartjs-2@5.3.0: + resolution: {integrity: sha512-UfZZFnDsERI3c3CZGxzvNJd02SHjaSJ8kgW1djn65H1KK8rehwTjyrRKOG3VTMG8wtHZ5rgAO5oTHtHi9GCCmw==} peerDependencies: chart.js: ^4.1.1 - react: ^16.8.0 || ^17.0.0 || ^18.0.0 + react: ^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0 react-clientside-effect@1.2.7: resolution: {integrity: sha512-gce9m0Pk/xYYMEojRI9bgvqQAkl6hm7ozQvqWPyQx+kULiatdHgkNM1QG4DQRx5N9BAzWSCJmt9mMV8/KsdgVg==} @@ -3643,8 +3671,8 @@ packages: peerDependencies: react: '*' - react-hook-form@7.54.1: - resolution: {integrity: sha512-PUNzFwQeQ5oHiiTUO7GO/EJXGEtuun2Y1A59rLnZBBj+vNEOWt/3ERTiG1/zt7dVeJEM+4vDX/7XQ/qanuvPMg==} + react-hook-form@7.54.2: + resolution: {integrity: sha512-eHpAUgUjWbZocoQYUHposymRb4ZP6d0uwUnooL2uOybA9/3tPUvoAKqEWK1WaSiTxxOfTpffNZP7QwlnM3/gEg==} engines: {node: '>=18.0.0'} peerDependencies: react: ^16.8.0 || ^17 || ^18 || ^19 @@ -3664,10 +3692,10 @@ packages: '@types/react': ^18.2.22 react: '>=18' - react-mosaic-component@6.1.0: - resolution: {integrity: sha512-iWrNUSdW6HK9SB6kaj7/auvIGZWlyEFR8ulQKC9lskY047uluo5ur4fiuZTNroUTZvGqL02AiLzBBj1+et8RZA==} + react-mosaic-component@6.1.1: + resolution: {integrity: sha512-Ivuj6AxRDlo/H8OiEDU1mdgivxuKbwGOa5Ub6Yf+bHcu0JWioT7ttlpCWF63/gKrJBlRMB6fW9/eNOXINg9+Gg==} peerDependencies: - react: 16 - 18 + react: '>=16' react-photo-album@2.4.1: resolution: {integrity: sha512-dzqP5QbYAugA0uZTl3qsVldckzDXYDkDOvA8CpACl51hSEfhJmCfwhbnI4WBHnETQHv48nnNQ1jhrulst8njLA==} @@ -3705,15 +3733,15 @@ packages: '@types/react': optional: true - react-router-dom@6.28.0: - resolution: {integrity: sha512-kQ7Unsl5YdyOltsPGl31zOjLrDv+m2VcIEcIHqYYD3Lp0UppLjrzcfJqDJwXxFw3TH/yvapbnUvPlAj7Kx5nbg==} + react-router-dom@6.28.1: + resolution: {integrity: sha512-YraE27C/RdjcZwl5UCqF/ffXnZDxpJdk9Q6jw38SZHjXs7NNdpViq2l2c7fO7+4uWaEfcwfGCv3RSg4e1By/fQ==} engines: {node: '>=14.0.0'} peerDependencies: react: '>=16.8' react-dom: '>=16.8' - react-router@6.28.0: - resolution: {integrity: sha512-HrYdIFqdrnhDw0PqG/AKjAqEqM7AvxCz0DQ4h2W8k6nqmc5uRBYDag0SBxx9iYz5G8gnuNVLzUe13wl9eAsXXg==} + react-router@6.28.1: + resolution: {integrity: sha512-2omQTA3rkMljmrvvo6WtewGdVh45SpL9hGiCI9uUrwGGfNFDIvGK4gYJsKlJoNVi6AQZcopSCballL+QGOm7fA==} engines: {node: '>=14.0.0'} peerDependencies: react: '>=16.8' @@ -3789,8 +3817,8 @@ packages: redux@4.2.1: resolution: {integrity: sha512-LAUYz4lc+Do8/g7aeRa8JkyDErK6ekstQaqWQrNRW//MY1TvCEpMtpTWvlQ+FPbWCx+Xixu/6SHt5N0HR+SB4w==} - reflect.getprototypeof@1.0.9: - resolution: {integrity: sha512-r0Ay04Snci87djAsI4U+WNRcSw5S4pOH7qFjd/veA5gC7TbqESR3tcj28ia95L/fYUDw11JKP7uqUKUAfVvV5Q==} + reflect.getprototypeof@1.0.10: + resolution: {integrity: sha512-00o4I+DVrefhv+nX0ulyi3biSHCPDe+yLv5o/p6d/UVlirijB8E16FtfwSAi4g3tcqrQ4lRAqQSoFEZJehYEcw==} engines: {node: '>= 0.4'} regenerate-unicode-properties@10.2.0: @@ -3806,17 +3834,17 @@ packages: regenerator-transform@0.15.2: resolution: {integrity: sha512-hfMp2BoF0qOk3uc5V20ALGDS2ddjQaLrdl7xrGXvAIow7qeWRM2VA2HuCHkUKk9slq3VwEwLNK3DFBqDfPGYtg==} - regex-recursion@5.0.0: - resolution: {integrity: sha512-UwyOqeobrCCqTXPcsSqH4gDhOjD5cI/b8kjngWgSZbxYh5yVjAwTjO5+hAuPRNiuR70+5RlWSs+U9PVcVcW9Lw==} + regex-recursion@5.1.1: + resolution: {integrity: sha512-ae7SBCbzVNrIjgSbh7wMznPcQel1DNlDtzensnFxpiNpXt1U2ju/bHugH422r+4LAVS1FpW1YCwilmnNsjum9w==} regex-utilities@2.3.0: resolution: {integrity: sha512-8VhliFJAWRaUiVvREIiW2NXXTmHs4vMNnSzuJVhscgmGav3g9VDxLrQndI3dZZVVdp0ZO/5v0xmX516/7M9cng==} - regex@5.0.2: - resolution: {integrity: sha512-/pczGbKIQgfTMRV0XjABvc5RzLqQmwqxLHdQao2RTXPk+pmTXB2P0IaUHYdYyk412YLwUIkaeMd5T+RzVgTqnQ==} + regex@5.1.1: + resolution: {integrity: sha512-dN5I359AVGPnwzJm2jN1k0W9LPZ+ePvoOeVMMfqIMFz53sSwXkxaJoxr50ptnsC771lK95BnTrVSZxq0b9yCGw==} - regexp.prototype.flags@1.5.3: - resolution: {integrity: sha512-vqlC04+RQoFalODCbCumG2xIOvapzVMHwsyIGM/SIE8fRhFFsXeH8/QQ+s0T0kDAhKc4k30s73/0ydkHQz6HlQ==} + regexp.prototype.flags@1.5.4: + resolution: {integrity: sha512-dYqgNSZbDwkaJ2ceRd9ojCGjBq+mOm9LmtXnAnEGyHhN/5R7iDW2TRw3h+o/jCFxus3P2LfWIIiwowAjANm7IA==} engines: {node: '>= 0.4'} regexpu-core@6.2.0: @@ -3870,8 +3898,9 @@ packages: resolution: {integrity: sha512-qYg9KP24dD5qka9J47d0aVky0N+b4fTU89LN9iDnjB5waksiC49rvMB0PrUJQGoTmH50XPiqOvAjDfaijGxYZw==} engines: {node: '>=8'} - resolve@1.22.9: - resolution: {integrity: sha512-QxrmX1DzraFIi9PxdG5VkRfRwIgjwyud+z/iBwfRRrVmHc+P9Q7u2lSSpQ6bjr2gy5lrqIiU9vb6iAeGf2400A==} + resolve@1.22.10: + resolution: {integrity: sha512-NPRy+/ncIMeDlTAsuqwKIiferiawhefFJtkNSW0qZJEqMEb+qBt/77B/jGeeek+F0uOeN05CDa6HXbbIgtVX4w==} + engines: {node: '>= 0.4'} hasBin: true ret@0.1.15: @@ -3887,8 +3916,8 @@ packages: engines: {node: '>=10.0.0'} hasBin: true - rollup@4.28.1: - resolution: {integrity: sha512-61fXYl/qNVinKmGSTHAZ6Yy8I3YIJC/r2m9feHo6SwVAVcLT5MPwOUFe7EuURA/4m0NR8lXG4BBXuo/IZEsjMg==} + rollup@4.29.1: + resolution: {integrity: sha512-RaJ45M/kmJUzSWDs1Nnd5DdV4eerC98idtUOVr6FfKcgxqvjwHmxc5upLF9qZU9EpsVzzhleFahrT3shLuJzIw==} engines: {node: '>=18.0.0', npm: '>=8.0.0'} hasBin: true @@ -3911,6 +3940,10 @@ packages: safe-buffer@5.2.1: resolution: {integrity: sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==} + safe-push-apply@1.0.0: + resolution: {integrity: sha512-iKE9w/Z7xCzUMIZqdBsp6pEQvwuEebH4vdpjcDWnyzaI6yl6O9FHvVpmGelvEHNsoY6wGblkxR6Zty/h00WiSA==} + engines: {node: '>= 0.4'} + safe-regex-test@1.1.0: resolution: {integrity: sha512-x/+Cz4YrimQxQccJf5mKEbIa1NzeCRNI5Ecl/ekmlYaampdNLPalVyIcCZNNH3MvmqBugV5TMYZXv0ljslUlaw==} engines: {node: '>= 0.4'} @@ -3949,6 +3982,10 @@ packages: resolution: {integrity: sha512-AhICkFV84tBP1aWqPwLZqFvAwqEoVA9kxNMniGEUvzOlm4vLmOFLiTT3UZ6bziJTy4bOVpzWGTfSCbmaayGx8g==} engines: {node: '>=6.9'} + set-proto@1.0.0: + resolution: {integrity: sha512-RJRdvCo6IAnPdsvP/7m6bsQqNnn1FCBX5ZNtFL98MmFF/4xAIJTIg1YbHW5DC2W5SKZanrC6i4HsJqlajw/dZw==} + engines: {node: '>= 0.4'} + shebang-command@2.0.0: resolution: {integrity: sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==} engines: {node: '>=8'} @@ -3957,8 +3994,8 @@ packages: resolution: {integrity: sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==} engines: {node: '>=8'} - shiki@1.24.3: - resolution: {integrity: sha512-eMeX/ehE2IDKVs71kB4zVcDHjutNcOtm+yIRuR4sA6ThBbdFI0DffGJiyoKCodj0xRGxIoWC3pk/Anmm5mzHmA==} + shiki@1.26.1: + resolution: {integrity: sha512-Gqg6DSTk3wYqaZ5OaYtzjcdxcBvX5kCy24yvRJEgjT5U+WHlmqCThLuBUx0juyxQBi+6ug53IGeuQS07DWwpcw==} side-channel-list@1.0.0: resolution: {integrity: sha512-FCLHtRD/gnpCiCHEiJLOwdmFP+wzCmDEkc9y7NsYxeF4u7Btsn1ZuwgwJGxImImHicJArLP4R0yX4c2KCrMrTA==} @@ -4039,8 +4076,8 @@ packages: stacktrace-js@2.0.2: resolution: {integrity: sha512-Je5vBeY4S1r/RnLydLl0TBTi3F2qdfWmYsGvtfZgEI+SCprPppaIhQf5nGcal4gI4cGpCV/duLcAzT1np6sQqg==} - string.prototype.matchall@4.0.11: - resolution: {integrity: sha512-NUdh0aDavY2og7IbBPenWqR9exH+E26Sv8e0/eTe1tltDGZL+GtBkDAnnyBtmekfK6/Dq3MkcGtzXFEd1LQrtg==} + string.prototype.matchall@4.0.12: + resolution: {integrity: sha512-6CC9uyBL+/48dYizRf7H7VAYCMCNTBeM78x/VTUe9bFEaxBepPJDa1Ow99LqI/1yF7kuy7Q3cQsYMrcjGUcskA==} engines: {node: '>= 0.4'} string.prototype.trim@1.2.10: @@ -4114,8 +4151,8 @@ packages: textarea-caret@3.0.2: resolution: {integrity: sha512-gRzeti2YS4did7UJnPQ47wrjD+vp+CJIe9zbsu0bJ987d8QVLvLNG9757rqiQTIy4hGIeFauTTJt5Xkn51UkXg==} - three-forcegraph@1.42.10: - resolution: {integrity: sha512-lKwVWY+/7e9smxK0iQ13WdzYfn9fB2hmQUeuegXgqpn5ARLlG2m0x/nkeLdv9gLlfXZ6nOKuT0m8RgZ2XqOrrQ==} + three-forcegraph@1.42.11: + resolution: {integrity: sha512-MXESG+qXXzsZDaY1N0M3fW1sfgJinm/DjNwO9oS9XXT1NRK9KoRijYDt5ilzI8M4OdJ3pA4YdaV3nDBw2HPVOw==} engines: {node: '>=12'} peerDependencies: three: '>=0.118.3' @@ -4499,8 +4536,8 @@ packages: resolution: {integrity: sha512-r3vXyErRCYJ7wg28yvBY5VSoAF8ZvlcW9/BwUzEtUsjvX/DKs24dIkuwjtuprwJJHsbyUbLApepYTR1BN4uHrg==} engines: {node: '>= 6'} - yaml@2.6.1: - resolution: {integrity: sha512-7r0XPzioN/Q9kXBro/XPnA6kznR73DHq+GXh5ON7ZozRO6aMjbmiBuKste2wslTFkC5d1dw0GooOCepZXJ2SAg==} + yaml@2.7.0: + resolution: {integrity: sha512-+hSoy/QHluxmC9kCIJyL/uyFmLmc+e5CFR5Wa+bpIhIj85LVb9ZH2nVnqrHoSvKogwODv0ClqZkmiSSaIH5LTA==} engines: {node: '>= 14'} hasBin: true @@ -4542,7 +4579,7 @@ snapshots: accessor-fn: 1.5.1 kapsule: 1.16.0 three: 0.170.0 - three-forcegraph: 1.42.10(three@0.170.0) + three-forcegraph: 1.42.11(three@0.170.0) three-render-objects: 1.32.1(three@0.170.0) '@ampproject/remapping@2.3.0': @@ -4632,7 +4669,7 @@ snapshots: '@babel/helper-plugin-utils': 7.25.9 debug: 4.4.0 lodash.debounce: 4.0.8 - resolve: 1.22.9 + resolve: 1.22.10 transitivePeerDependencies: - supports-color @@ -5209,33 +5246,33 @@ snapshots: '@cashu/cashu-ts@2.0.0-rc1': dependencies: '@cashu/crypto': 0.2.7 - '@noble/curves': 1.7.0 - '@noble/hashes': 1.6.1 - '@scure/bip32': 1.6.0 + '@noble/curves': 1.8.0 + '@noble/hashes': 1.7.0 + '@scure/bip32': 1.6.1 buffer: 6.0.3 '@cashu/cashu-ts@2.1.0': dependencies: '@cashu/crypto': 0.3.4 - '@noble/curves': 1.7.0 - '@noble/hashes': 1.6.1 - '@scure/bip32': 1.6.0 + '@noble/curves': 1.8.0 + '@noble/hashes': 1.7.0 + '@scure/bip32': 1.6.1 buffer: 6.0.3 '@cashu/crypto@0.2.7': dependencies: - '@noble/curves': 1.7.0 - '@noble/hashes': 1.6.1 - '@scure/bip32': 1.6.0 - '@scure/bip39': 1.5.0 + '@noble/curves': 1.8.0 + '@noble/hashes': 1.7.0 + '@scure/bip32': 1.6.1 + '@scure/bip39': 1.5.1 buffer: 6.0.3 '@cashu/crypto@0.3.4': dependencies: - '@noble/curves': 1.7.0 - '@noble/hashes': 1.6.1 - '@scure/bip32': 1.6.0 - '@scure/bip39': 1.5.0 + '@noble/curves': 1.8.0 + '@noble/hashes': 1.7.0 + '@scure/bip32': 1.6.1 + '@scure/bip39': 1.5.1 buffer: 6.0.3 '@chakra-ui/anatomy@2.2.2': {} @@ -5261,17 +5298,17 @@ snapshots: framesync: 6.1.2 react: 18.3.1 - '@chakra-ui/icons@2.2.4(@chakra-ui/react@2.10.4(@emotion/react@11.14.0(@types/react@18.3.17)(react@18.3.1))(@emotion/styled@11.14.0(@emotion/react@11.14.0(@types/react@18.3.17)(react@18.3.1))(@types/react@18.3.17)(react@18.3.1))(@types/react@18.3.17)(framer-motion@10.18.0(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(react@18.3.1)': + '@chakra-ui/icons@2.2.4(@chakra-ui/react@2.10.4(@emotion/react@11.14.0(@types/react@18.3.18)(react@18.3.1))(@emotion/styled@11.14.0(@emotion/react@11.14.0(@types/react@18.3.18)(react@18.3.1))(@types/react@18.3.18)(react@18.3.1))(@types/react@18.3.18)(framer-motion@10.18.0(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(react@18.3.1)': dependencies: - '@chakra-ui/react': 2.10.4(@emotion/react@11.14.0(@types/react@18.3.17)(react@18.3.1))(@emotion/styled@11.14.0(@emotion/react@11.14.0(@types/react@18.3.17)(react@18.3.1))(@types/react@18.3.17)(react@18.3.1))(@types/react@18.3.17)(framer-motion@10.18.0(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + '@chakra-ui/react': 2.10.4(@emotion/react@11.14.0(@types/react@18.3.18)(react@18.3.1))(@emotion/styled@11.14.0(@emotion/react@11.14.0(@types/react@18.3.18)(react@18.3.1))(@types/react@18.3.18)(react@18.3.1))(@types/react@18.3.18)(framer-motion@10.18.0(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(react-dom@18.3.1(react@18.3.1))(react@18.3.1) react: 18.3.1 - '@chakra-ui/media-query@3.3.0(@chakra-ui/system@2.6.2(@emotion/react@11.14.0(@types/react@18.3.17)(react@18.3.1))(@emotion/styled@11.14.0(@emotion/react@11.14.0(@types/react@18.3.17)(react@18.3.1))(@types/react@18.3.17)(react@18.3.1))(react@18.3.1))(react@18.3.1)': + '@chakra-ui/media-query@3.3.0(@chakra-ui/system@2.6.2(@emotion/react@11.14.0(@types/react@18.3.18)(react@18.3.1))(@emotion/styled@11.14.0(@emotion/react@11.14.0(@types/react@18.3.18)(react@18.3.1))(@types/react@18.3.18)(react@18.3.1))(react@18.3.1))(react@18.3.1)': dependencies: '@chakra-ui/breakpoint-utils': 2.0.8 '@chakra-ui/react-env': 3.1.0(react@18.3.1) '@chakra-ui/shared-utils': 2.0.5 - '@chakra-ui/system': 2.6.2(@emotion/react@11.14.0(@types/react@18.3.17)(react@18.3.1))(@emotion/styled@11.14.0(@emotion/react@11.14.0(@types/react@18.3.17)(react@18.3.1))(@types/react@18.3.17)(react@18.3.1))(react@18.3.1) + '@chakra-ui/system': 2.6.2(@emotion/react@11.14.0(@types/react@18.3.18)(react@18.3.1))(@emotion/styled@11.14.0(@emotion/react@11.14.0(@types/react@18.3.18)(react@18.3.1))(@types/react@18.3.18)(react@18.3.1))(react@18.3.1) react: 18.3.1 '@chakra-ui/object-utils@2.1.0': {} @@ -5290,14 +5327,14 @@ snapshots: '@chakra-ui/utils': 2.0.15 react: 18.3.1 - '@chakra-ui/react@2.10.4(@emotion/react@11.14.0(@types/react@18.3.17)(react@18.3.1))(@emotion/styled@11.14.0(@emotion/react@11.14.0(@types/react@18.3.17)(react@18.3.1))(@types/react@18.3.17)(react@18.3.1))(@types/react@18.3.17)(framer-motion@10.18.0(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(react-dom@18.3.1(react@18.3.1))(react@18.3.1)': + '@chakra-ui/react@2.10.4(@emotion/react@11.14.0(@types/react@18.3.18)(react@18.3.1))(@emotion/styled@11.14.0(@emotion/react@11.14.0(@types/react@18.3.18)(react@18.3.1))(@types/react@18.3.18)(react@18.3.1))(@types/react@18.3.18)(framer-motion@10.18.0(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(react-dom@18.3.1(react@18.3.1))(react@18.3.1)': dependencies: '@chakra-ui/hooks': 2.4.3(react@18.3.1) '@chakra-ui/styled-system': 2.12.1(react@18.3.1) '@chakra-ui/theme': 3.4.7(@chakra-ui/styled-system@2.12.1(react@18.3.1))(react@18.3.1) '@chakra-ui/utils': 2.2.3(react@18.3.1) - '@emotion/react': 11.14.0(@types/react@18.3.17)(react@18.3.1) - '@emotion/styled': 11.14.0(@emotion/react@11.14.0(@types/react@18.3.17)(react@18.3.1))(@types/react@18.3.17)(react@18.3.1) + '@emotion/react': 11.14.0(@types/react@18.3.18)(react@18.3.1) + '@emotion/styled': 11.14.0(@emotion/react@11.14.0(@types/react@18.3.18)(react@18.3.1))(@types/react@18.3.18)(react@18.3.1) '@popperjs/core': 2.11.8 '@zag-js/focus-visible': 0.31.1 aria-hidden: 1.2.4 @@ -5305,8 +5342,8 @@ snapshots: react: 18.3.1 react-dom: 18.3.1(react@18.3.1) react-fast-compare: 3.2.2 - react-focus-lock: 2.13.5(@types/react@18.3.17)(react@18.3.1) - react-remove-scroll: 2.6.2(@types/react@18.3.17)(react@18.3.1) + react-focus-lock: 2.13.5(@types/react@18.3.18)(react@18.3.1) + react-remove-scroll: 2.6.2(@types/react@18.3.18)(react@18.3.1) transitivePeerDependencies: - '@types/react' @@ -5334,7 +5371,7 @@ snapshots: csstype: 3.1.3 lodash.mergewith: 4.6.2 - '@chakra-ui/system@2.6.2(@emotion/react@11.14.0(@types/react@18.3.17)(react@18.3.1))(@emotion/styled@11.14.0(@emotion/react@11.14.0(@types/react@18.3.17)(react@18.3.1))(@types/react@18.3.17)(react@18.3.1))(react@18.3.1)': + '@chakra-ui/system@2.6.2(@emotion/react@11.14.0(@types/react@18.3.18)(react@18.3.1))(@emotion/styled@11.14.0(@emotion/react@11.14.0(@types/react@18.3.18)(react@18.3.1))(@types/react@18.3.18)(react@18.3.1))(react@18.3.1)': dependencies: '@chakra-ui/color-mode': 2.2.0(react@18.3.1) '@chakra-ui/object-utils': 2.1.0 @@ -5342,8 +5379,8 @@ snapshots: '@chakra-ui/styled-system': 2.9.2 '@chakra-ui/theme-utils': 2.0.21 '@chakra-ui/utils': 2.0.15 - '@emotion/react': 11.14.0(@types/react@18.3.17)(react@18.3.1) - '@emotion/styled': 11.14.0(@emotion/react@11.14.0(@types/react@18.3.17)(react@18.3.1))(@types/react@18.3.17)(react@18.3.1) + '@emotion/react': 11.14.0(@types/react@18.3.18)(react@18.3.1) + '@emotion/styled': 11.14.0(@emotion/react@11.14.0(@types/react@18.3.18)(react@18.3.1))(@types/react@18.3.18)(react@18.3.1) react: 18.3.1 react-fast-compare: 3.2.2 @@ -5467,7 +5504,7 @@ snapshots: fs-extra: 7.0.1 mri: 1.2.0 p-limit: 2.3.0 - package-manager-detector: 0.2.7 + package-manager-detector: 0.2.8 picocolors: 1.1.1 resolve-from: 5.0.0 semver: 7.6.3 @@ -5558,27 +5595,27 @@ snapshots: '@codemirror/autocomplete@6.18.4': dependencies: - '@codemirror/language': 6.10.7 + '@codemirror/language': 6.10.8 '@codemirror/state': 6.5.0 '@codemirror/view': 6.36.1 '@lezer/common': 1.2.3 '@codemirror/commands@6.7.1': dependencies: - '@codemirror/language': 6.10.7 + '@codemirror/language': 6.10.8 '@codemirror/state': 6.5.0 '@codemirror/view': 6.36.1 '@lezer/common': 1.2.3 '@codemirror/lang-json@6.0.1': dependencies: - '@codemirror/language': 6.10.7 - '@lezer/json': 1.0.2 + '@codemirror/language': 6.10.8 + '@lezer/json': 1.0.3 '@codemirror/lang-yaml@6.1.2': dependencies: '@codemirror/autocomplete': 6.18.4 - '@codemirror/language': 6.10.7 + '@codemirror/language': 6.10.8 '@codemirror/state': 6.5.0 '@lezer/common': 1.2.3 '@lezer/highlight': 1.2.1 @@ -5586,7 +5623,7 @@ snapshots: '@lezer/yaml': 1.0.3 optional: true - '@codemirror/language@6.10.7': + '@codemirror/language@6.10.8': dependencies: '@codemirror/state': 6.5.0 '@codemirror/view': 6.36.1 @@ -5613,7 +5650,7 @@ snapshots: '@codemirror/theme-one-dark@6.1.2': dependencies: - '@codemirror/language': 6.10.7 + '@codemirror/language': 6.10.8 '@codemirror/state': 6.5.0 '@codemirror/view': 6.36.1 '@lezer/highlight': 1.2.1 @@ -5624,6 +5661,13 @@ snapshots: style-mod: 4.1.2 w3c-keyname: 2.2.8 + '@emoji-mart/data@1.2.1': {} + + '@emoji-mart/react@1.1.1(emoji-mart@5.6.0)(react@18.3.1)': + dependencies: + emoji-mart: 5.6.0 + react: 18.3.1 + '@emotion/babel-plugin@11.13.5': dependencies: '@babel/helper-module-imports': 7.25.9 @@ -5674,7 +5718,7 @@ snapshots: '@emotion/memoize@0.9.0': {} - '@emotion/react@11.14.0(@types/react@18.3.17)(react@18.3.1)': + '@emotion/react@11.14.0(@types/react@18.3.18)(react@18.3.1)': dependencies: '@babel/runtime': 7.26.0 '@emotion/babel-plugin': 11.13.5 @@ -5686,7 +5730,7 @@ snapshots: hoist-non-react-statics: 3.3.2 react: 18.3.1 optionalDependencies: - '@types/react': 18.3.17 + '@types/react': 18.3.18 transitivePeerDependencies: - supports-color @@ -5700,18 +5744,18 @@ snapshots: '@emotion/sheet@1.4.0': {} - '@emotion/styled@11.14.0(@emotion/react@11.14.0(@types/react@18.3.17)(react@18.3.1))(@types/react@18.3.17)(react@18.3.1)': + '@emotion/styled@11.14.0(@emotion/react@11.14.0(@types/react@18.3.18)(react@18.3.1))(@types/react@18.3.18)(react@18.3.1)': dependencies: '@babel/runtime': 7.26.0 '@emotion/babel-plugin': 11.13.5 '@emotion/is-prop-valid': 1.3.1 - '@emotion/react': 11.14.0(@types/react@18.3.17)(react@18.3.1) + '@emotion/react': 11.14.0(@types/react@18.3.18)(react@18.3.1) '@emotion/serialize': 1.3.3 '@emotion/use-insertion-effect-with-fallbacks': 1.2.0(react@18.3.1) '@emotion/utils': 1.4.2 react: 18.3.1 optionalDependencies: - '@types/react': 18.3.17 + '@types/react': 18.3.18 transitivePeerDependencies: - supports-color @@ -5794,22 +5838,22 @@ snapshots: '@esbuild/win32-x64@0.21.5': optional: true - '@getalby/bitcoin-connect-react@3.6.3(@types/react@18.3.17)(react@18.3.1)(typescript@5.7.2)': + '@getalby/bitcoin-connect-react@3.6.3(@types/react@18.3.18)(react@18.3.1)(typescript@5.7.2)': dependencies: - '@getalby/bitcoin-connect': 3.6.3(@types/react@18.3.17)(react@18.3.1)(typescript@5.7.2) + '@getalby/bitcoin-connect': 3.6.3(@types/react@18.3.18)(react@18.3.1)(typescript@5.7.2) react: 18.3.1 transitivePeerDependencies: - '@types/react' - immer - typescript - '@getalby/bitcoin-connect@3.6.3(@types/react@18.3.17)(react@18.3.1)(typescript@5.7.2)': + '@getalby/bitcoin-connect@3.6.3(@types/react@18.3.18)(react@18.3.1)(typescript@5.7.2)': dependencies: '@getalby/lightning-tools': 5.1.2 '@getalby/sdk': 3.8.2(typescript@5.7.2) '@lightninglabs/lnc-web': 0.3.2-alpha qrcode-generator: 1.4.4 - zustand: 4.5.5(@types/react@18.3.17)(react@18.3.1) + zustand: 4.5.5(@types/react@18.3.18)(react@18.3.1) transitivePeerDependencies: - '@types/react' - immer @@ -5855,7 +5899,7 @@ snapshots: dependencies: '@lezer/common': 1.2.3 - '@lezer/json@1.0.2': + '@lezer/json@1.0.3': dependencies: '@lezer/common': 1.2.3 '@lezer/highlight': 1.2.1 @@ -5899,7 +5943,7 @@ snapshots: '@noble/ciphers@0.5.3': {} - '@noble/ciphers@1.1.3': {} + '@noble/ciphers@1.2.0': {} '@noble/curves@1.1.0': dependencies: @@ -5909,17 +5953,15 @@ snapshots: dependencies: '@noble/hashes': 1.3.2 - '@noble/curves@1.7.0': + '@noble/curves@1.8.0': dependencies: - '@noble/hashes': 1.6.0 + '@noble/hashes': 1.7.0 '@noble/hashes@1.3.1': {} '@noble/hashes@1.3.2': {} - '@noble/hashes@1.6.0': {} - - '@noble/hashes@1.6.1': {} + '@noble/hashes@1.7.0': {} '@noble/secp256k1@1.7.1': {} @@ -5933,7 +5975,7 @@ snapshots: '@nodelib/fs.walk@1.2.8': dependencies: '@nodelib/fs.scandir': 2.1.5 - fastq: 1.17.1 + fastq: 1.18.0 '@popperjs/core@2.11.8': {} @@ -5962,7 +6004,7 @@ snapshots: '@types/resolve': 1.20.2 deepmerge: 4.3.1 is-module: 1.0.0 - resolve: 1.22.9 + resolve: 1.22.10 optionalDependencies: rollup: 2.79.2 @@ -5995,61 +6037,61 @@ snapshots: optionalDependencies: rollup: 2.79.2 - '@rollup/rollup-android-arm-eabi@4.28.1': + '@rollup/rollup-android-arm-eabi@4.29.1': optional: true - '@rollup/rollup-android-arm64@4.28.1': + '@rollup/rollup-android-arm64@4.29.1': optional: true - '@rollup/rollup-darwin-arm64@4.28.1': + '@rollup/rollup-darwin-arm64@4.29.1': optional: true - '@rollup/rollup-darwin-x64@4.28.1': + '@rollup/rollup-darwin-x64@4.29.1': optional: true - '@rollup/rollup-freebsd-arm64@4.28.1': + '@rollup/rollup-freebsd-arm64@4.29.1': optional: true - '@rollup/rollup-freebsd-x64@4.28.1': + '@rollup/rollup-freebsd-x64@4.29.1': optional: true - '@rollup/rollup-linux-arm-gnueabihf@4.28.1': + '@rollup/rollup-linux-arm-gnueabihf@4.29.1': optional: true - '@rollup/rollup-linux-arm-musleabihf@4.28.1': + '@rollup/rollup-linux-arm-musleabihf@4.29.1': optional: true - '@rollup/rollup-linux-arm64-gnu@4.28.1': + '@rollup/rollup-linux-arm64-gnu@4.29.1': optional: true - '@rollup/rollup-linux-arm64-musl@4.28.1': + '@rollup/rollup-linux-arm64-musl@4.29.1': optional: true - '@rollup/rollup-linux-loongarch64-gnu@4.28.1': + '@rollup/rollup-linux-loongarch64-gnu@4.29.1': optional: true - '@rollup/rollup-linux-powerpc64le-gnu@4.28.1': + '@rollup/rollup-linux-powerpc64le-gnu@4.29.1': optional: true - '@rollup/rollup-linux-riscv64-gnu@4.28.1': + '@rollup/rollup-linux-riscv64-gnu@4.29.1': optional: true - '@rollup/rollup-linux-s390x-gnu@4.28.1': + '@rollup/rollup-linux-s390x-gnu@4.29.1': optional: true - '@rollup/rollup-linux-x64-gnu@4.28.1': + '@rollup/rollup-linux-x64-gnu@4.29.1': optional: true - '@rollup/rollup-linux-x64-musl@4.28.1': + '@rollup/rollup-linux-x64-musl@4.29.1': optional: true - '@rollup/rollup-win32-arm64-msvc@4.28.1': + '@rollup/rollup-win32-arm64-msvc@4.29.1': optional: true - '@rollup/rollup-win32-ia32-msvc@4.28.1': + '@rollup/rollup-win32-ia32-msvc@4.29.1': optional: true - '@rollup/rollup-win32-x64-msvc@4.28.1': + '@rollup/rollup-win32-x64-msvc@4.29.1': optional: true '@sagold/json-pointer@5.1.2': {} @@ -6069,10 +6111,10 @@ snapshots: '@noble/hashes': 1.3.1 '@scure/base': 1.1.1 - '@scure/bip32@1.6.0': + '@scure/bip32@1.6.1': dependencies: - '@noble/curves': 1.7.0 - '@noble/hashes': 1.6.1 + '@noble/curves': 1.8.0 + '@noble/hashes': 1.7.0 '@scure/base': 1.2.1 '@scure/bip39@1.2.1': @@ -6080,44 +6122,52 @@ snapshots: '@noble/hashes': 1.3.1 '@scure/base': 1.1.1 - '@scure/bip39@1.5.0': + '@scure/bip39@1.5.1': dependencies: - '@noble/hashes': 1.6.1 + '@noble/hashes': 1.7.0 '@scure/base': 1.2.1 - '@shikijs/core@1.24.3': + '@shikijs/core@1.26.1': dependencies: - '@shikijs/engine-javascript': 1.24.3 - '@shikijs/engine-oniguruma': 1.24.3 - '@shikijs/types': 1.24.3 - '@shikijs/vscode-textmate': 9.3.1 + '@shikijs/engine-javascript': 1.26.1 + '@shikijs/engine-oniguruma': 1.26.1 + '@shikijs/types': 1.26.1 + '@shikijs/vscode-textmate': 10.0.1 '@types/hast': 3.0.4 hast-util-to-html: 9.0.4 - '@shikijs/engine-javascript@1.24.3': + '@shikijs/engine-javascript@1.26.1': dependencies: - '@shikijs/types': 1.24.3 - '@shikijs/vscode-textmate': 9.3.1 - oniguruma-to-es: 0.8.0 + '@shikijs/types': 1.26.1 + '@shikijs/vscode-textmate': 10.0.1 + oniguruma-to-es: 0.10.0 - '@shikijs/engine-oniguruma@1.24.3': + '@shikijs/engine-oniguruma@1.26.1': dependencies: - '@shikijs/types': 1.24.3 - '@shikijs/vscode-textmate': 9.3.1 + '@shikijs/types': 1.26.1 + '@shikijs/vscode-textmate': 10.0.1 - '@shikijs/markdown-it@1.24.3': + '@shikijs/langs@1.26.1': + dependencies: + '@shikijs/types': 1.26.1 + + '@shikijs/markdown-it@1.26.1': dependencies: markdown-it: 14.1.0 - shiki: 1.24.3 + shiki: 1.26.1 - '@shikijs/types@1.24.3': + '@shikijs/themes@1.26.1': dependencies: - '@shikijs/vscode-textmate': 9.3.1 + '@shikijs/types': 1.26.1 + + '@shikijs/types@1.26.1': + dependencies: + '@shikijs/vscode-textmate': 10.0.1 '@types/hast': 3.0.4 - '@shikijs/vscode-textmate@9.3.1': {} + '@shikijs/vscode-textmate@10.0.1': {} - '@snort/worker-relay@1.3.0': + '@snort/worker-relay@1.3.1': dependencies: '@sqlite.org/sqlite-wasm': 3.46.1-build5 eventemitter3: 5.0.1 @@ -6130,7 +6180,7 @@ snapshots: ejs: 3.1.10 json5: 2.2.3 magic-string: 0.25.9 - string.prototype.matchall: 4.0.11 + string.prototype.matchall: 4.0.12 '@tweenjs/tween.js@25.0.0': {} @@ -6211,17 +6261,17 @@ snapshots: '@types/lodash.mergewith@4.6.7': dependencies: - '@types/lodash': 4.17.13 + '@types/lodash': 4.17.14 '@types/lodash.mergewith@4.6.9': dependencies: - '@types/lodash': 4.17.13 + '@types/lodash': 4.17.14 '@types/lodash.throttle@4.1.9': dependencies: - '@types/lodash': 4.17.13 + '@types/lodash': 4.17.14 - '@types/lodash@4.17.13': {} + '@types/lodash@4.17.14': {} '@types/marked@4.3.2': {} @@ -6241,15 +6291,15 @@ snapshots: '@types/prop-types@15.7.14': {} - '@types/react-dom@18.3.5(@types/react@18.3.17)': + '@types/react-dom@18.3.5(@types/react@18.3.18)': dependencies: - '@types/react': 18.3.17 + '@types/react': 18.3.18 '@types/react-window@1.8.8': dependencies: - '@types/react': 18.3.17 + '@types/react': 18.3.18 - '@types/react@18.3.17': + '@types/react@18.3.18': dependencies: '@types/prop-types': 15.7.14 csstype: 3.1.3 @@ -6277,44 +6327,44 @@ snapshots: '@types/webscopeio__react-textarea-autocomplete@4.7.5': dependencies: - '@types/react': 18.3.17 + '@types/react': 18.3.18 '@types/webxr@0.5.20': {} '@types/zen-observable@0.8.7': {} - '@uiw/codemirror-extensions-basic-setup@4.23.7(@codemirror/autocomplete@6.18.4)(@codemirror/commands@6.7.1)(@codemirror/language@6.10.7)(@codemirror/lint@6.8.4)(@codemirror/search@6.5.8)(@codemirror/state@6.5.0)(@codemirror/view@6.36.1)': + '@uiw/codemirror-extensions-basic-setup@4.23.7(@codemirror/autocomplete@6.18.4)(@codemirror/commands@6.7.1)(@codemirror/language@6.10.8)(@codemirror/lint@6.8.4)(@codemirror/search@6.5.8)(@codemirror/state@6.5.0)(@codemirror/view@6.36.1)': dependencies: '@codemirror/autocomplete': 6.18.4 '@codemirror/commands': 6.7.1 - '@codemirror/language': 6.10.7 + '@codemirror/language': 6.10.8 '@codemirror/lint': 6.8.4 '@codemirror/search': 6.5.8 '@codemirror/state': 6.5.0 '@codemirror/view': 6.36.1 - '@uiw/codemirror-theme-github@4.23.7(@codemirror/language@6.10.7)(@codemirror/state@6.5.0)(@codemirror/view@6.36.1)': + '@uiw/codemirror-theme-github@4.23.7(@codemirror/language@6.10.8)(@codemirror/state@6.5.0)(@codemirror/view@6.36.1)': dependencies: - '@uiw/codemirror-themes': 4.23.7(@codemirror/language@6.10.7)(@codemirror/state@6.5.0)(@codemirror/view@6.36.1) + '@uiw/codemirror-themes': 4.23.7(@codemirror/language@6.10.8)(@codemirror/state@6.5.0)(@codemirror/view@6.36.1) transitivePeerDependencies: - '@codemirror/language' - '@codemirror/state' - '@codemirror/view' - '@uiw/codemirror-themes@4.23.7(@codemirror/language@6.10.7)(@codemirror/state@6.5.0)(@codemirror/view@6.36.1)': + '@uiw/codemirror-themes@4.23.7(@codemirror/language@6.10.8)(@codemirror/state@6.5.0)(@codemirror/view@6.36.1)': dependencies: - '@codemirror/language': 6.10.7 + '@codemirror/language': 6.10.8 '@codemirror/state': 6.5.0 '@codemirror/view': 6.36.1 - '@uiw/react-codemirror@4.23.7(@babel/runtime@7.26.0)(@codemirror/autocomplete@6.18.4)(@codemirror/language@6.10.7)(@codemirror/lint@6.8.4)(@codemirror/search@6.5.8)(@codemirror/state@6.5.0)(@codemirror/theme-one-dark@6.1.2)(@codemirror/view@6.36.1)(codemirror@6.0.1)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)': + '@uiw/react-codemirror@4.23.7(@babel/runtime@7.26.0)(@codemirror/autocomplete@6.18.4)(@codemirror/language@6.10.8)(@codemirror/lint@6.8.4)(@codemirror/search@6.5.8)(@codemirror/state@6.5.0)(@codemirror/theme-one-dark@6.1.2)(@codemirror/view@6.36.1)(codemirror@6.0.1)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)': dependencies: '@babel/runtime': 7.26.0 '@codemirror/commands': 6.7.1 '@codemirror/state': 6.5.0 '@codemirror/theme-one-dark': 6.1.2 '@codemirror/view': 6.36.1 - '@uiw/codemirror-extensions-basic-setup': 4.23.7(@codemirror/autocomplete@6.18.4)(@codemirror/commands@6.7.1)(@codemirror/language@6.10.7)(@codemirror/lint@6.8.4)(@codemirror/search@6.5.8)(@codemirror/state@6.5.0)(@codemirror/view@6.36.1) + '@uiw/codemirror-extensions-basic-setup': 4.23.7(@codemirror/autocomplete@6.18.4)(@codemirror/commands@6.7.1)(@codemirror/language@6.10.8)(@codemirror/lint@6.8.4)(@codemirror/search@6.5.8)(@codemirror/state@6.5.0)(@codemirror/view@6.36.1) codemirror: 6.0.1 react: 18.3.1 react-dom: 18.3.1(react@18.3.1) @@ -6383,24 +6433,24 @@ snapshots: dependencies: color-convert: 2.0.1 - applesauce-channel@0.0.0-next-20241219164005(typescript@5.7.2): + applesauce-channel@0.0.0-next-20250103191026(typescript@5.7.2): dependencies: - applesauce-core: 0.0.0-next-20241219164005(typescript@5.7.2) - applesauce-factory: 0.0.0-next-20241219164005(typescript@5.7.2) + applesauce-core: 0.0.0-next-20250103191026(typescript@5.7.2) + applesauce-factory: 0.0.0-next-20250103191026(typescript@5.7.2) nostr-tools: 2.10.4(typescript@5.7.2) rxjs: 7.8.1 transitivePeerDependencies: - supports-color - typescript - applesauce-content@0.0.0-next-20241219164005(typescript@5.7.2): + applesauce-content@0.0.0-next-20250103191026(typescript@5.7.2): dependencies: '@cashu/cashu-ts': 2.0.0-rc1 '@types/hast': 3.0.4 '@types/mdast': 4.0.4 '@types/unist': 3.0.3 - applesauce-core: 0.0.0-next-20241219164005(typescript@5.7.2) - mdast-util-find-and-replace: 3.0.1 + applesauce-core: 0.0.0-next-20250103191026(typescript@5.7.2) + mdast-util-find-and-replace: 3.0.2 nostr-tools: 2.10.4(typescript@5.7.2) remark: 15.0.1 remark-parse: 11.0.0 @@ -6410,7 +6460,7 @@ snapshots: - supports-color - typescript - applesauce-core@0.0.0-next-20241219164005(typescript@5.7.2): + applesauce-core@0.0.0-next-20250103191026(typescript@5.7.2): dependencies: '@scure/base': 1.2.1 debug: 4.4.0 @@ -6424,23 +6474,23 @@ snapshots: - supports-color - typescript - applesauce-factory@0.0.0-next-20241219164005(typescript@5.7.2): + applesauce-factory@0.0.0-next-20250103191026(typescript@5.7.2): dependencies: - applesauce-content: 0.0.0-next-20241219164005(typescript@5.7.2) - applesauce-core: 0.0.0-next-20241219164005(typescript@5.7.2) + applesauce-content: 0.0.0-next-20250103191026(typescript@5.7.2) + applesauce-core: 0.0.0-next-20250103191026(typescript@5.7.2) nostr-tools: 2.10.4(typescript@5.7.2) transitivePeerDependencies: - supports-color - typescript - applesauce-lists@0.0.0-next-20241219164005(typescript@5.7.2): + applesauce-lists@0.0.0-next-20250103191026(typescript@5.7.2): dependencies: - '@noble/hashes': 1.6.1 + '@noble/hashes': 1.7.0 '@noble/secp256k1': 1.7.1 '@scure/base': 1.2.1 '@types/dom-serial': 1.0.6 - applesauce-core: 0.0.0-next-20241219164005(typescript@5.7.2) - applesauce-factory: 0.0.0-next-20241219164005(typescript@5.7.2) + applesauce-core: 0.0.0-next-20250103191026(typescript@5.7.2) + applesauce-factory: 0.0.0-next-20250103191026(typescript@5.7.2) debug: 4.4.0 nostr-tools: 2.10.4(typescript@5.7.2) rxjs: 7.8.1 @@ -6448,9 +6498,9 @@ snapshots: - supports-color - typescript - applesauce-net@0.0.0-next-20241219164005(typescript@5.7.2): + applesauce-net@0.0.0-next-20250103191026(typescript@5.7.2): dependencies: - applesauce-core: 0.0.0-next-20241219164005(typescript@5.7.2) + applesauce-core: 0.0.0-next-20250103191026(typescript@5.7.2) nanoid: 5.0.9 nostr-tools: 2.10.4(typescript@5.7.2) rxjs: 7.8.1 @@ -6458,11 +6508,11 @@ snapshots: - supports-color - typescript - applesauce-react@0.0.0-next-20241219164005(typescript@5.7.2): + applesauce-react@0.0.0-next-20250103191026(typescript@5.7.2): dependencies: - applesauce-content: 0.0.0-next-20241219164005(typescript@5.7.2) - applesauce-core: 0.0.0-next-20241219164005(typescript@5.7.2) - applesauce-factory: 0.0.0-next-20241219164005(typescript@5.7.2) + applesauce-content: 0.0.0-next-20250103191026(typescript@5.7.2) + applesauce-core: 0.0.0-next-20250103191026(typescript@5.7.2) + applesauce-factory: 0.0.0-next-20250103191026(typescript@5.7.2) nostr-tools: 2.10.4(typescript@5.7.2) react: 18.3.1 rxjs: 7.8.1 @@ -6470,14 +6520,14 @@ snapshots: - supports-color - typescript - applesauce-signer@0.0.0-next-20241219164005(typescript@5.7.2): + applesauce-signer@0.0.0-next-20250103191026(typescript@5.7.2): dependencies: - '@noble/hashes': 1.6.1 + '@noble/hashes': 1.7.0 '@noble/secp256k1': 1.7.1 '@scure/base': 1.2.1 '@types/dom-serial': 1.0.6 - applesauce-core: 0.0.0-next-20241219164005(typescript@5.7.2) - applesauce-net: 0.0.0-next-20241219164005(typescript@5.7.2) + applesauce-core: 0.0.0-next-20250103191026(typescript@5.7.2) + applesauce-net: 0.0.0-next-20250103191026(typescript@5.7.2) debug: 4.4.0 nanoid: 5.0.9 nostr-tools: 2.10.4(typescript@5.7.2) @@ -6495,21 +6545,21 @@ snapshots: dependencies: tslib: 2.8.1 - array-buffer-byte-length@1.0.1: + array-buffer-byte-length@1.0.2: dependencies: - call-bind: 1.0.8 + call-bound: 1.0.3 is-array-buffer: 3.0.5 array-union@2.1.0: {} arraybuffer.prototype.slice@1.0.4: dependencies: - array-buffer-byte-length: 1.0.1 + array-buffer-byte-length: 1.0.2 call-bind: 1.0.8 define-properties: 1.2.1 - es-abstract: 1.23.6 + es-abstract: 1.23.9 es-errors: 1.3.0 - get-intrinsic: 1.2.6 + get-intrinsic: 1.2.7 is-array-buffer: 3.0.5 async@3.2.6: {} @@ -6524,7 +6574,7 @@ snapshots: dependencies: '@babel/runtime': 7.26.0 cosmiconfig: 7.1.0 - resolve: 1.22.9 + resolve: 1.22.10 babel-plugin-polyfill-corejs2@0.4.12(@babel/core@7.26.0): dependencies: @@ -6568,19 +6618,19 @@ snapshots: blossom-client-sdk@0.7.0: dependencies: - '@noble/hashes': 1.6.1 - cross-fetch: 4.0.0 + '@noble/hashes': 1.7.0 + cross-fetch: 4.1.0 transitivePeerDependencies: - encoding blossom-client-sdk@2.1.1: dependencies: '@cashu/cashu-ts': 2.1.0 - '@noble/hashes': 1.6.1 + '@noble/hashes': 1.7.0 blossom-drive-sdk@0.4.1(typescript@5.7.2): dependencies: - '@noble/hashes': 1.6.1 + '@noble/hashes': 1.7.0 '@scure/base': 1.2.1 blossom-client-sdk: 0.7.0 eventemitter3: 5.0.1 @@ -6611,7 +6661,7 @@ snapshots: browserslist@4.24.3: dependencies: caniuse-lite: 1.0.30001690 - electron-to-chromium: 1.5.74 + electron-to-chromium: 1.5.76 node-releases: 2.0.19 update-browserslist-db: 1.1.1(browserslist@4.24.3) @@ -6631,13 +6681,13 @@ snapshots: dependencies: call-bind-apply-helpers: 1.0.1 es-define-property: 1.0.1 - get-intrinsic: 1.2.6 + get-intrinsic: 1.2.7 set-function-length: 1.2.2 call-bound@1.0.3: dependencies: call-bind-apply-helpers: 1.0.1 - get-intrinsic: 1.2.6 + get-intrinsic: 1.2.7 callsites@3.1.0: {} @@ -6685,14 +6735,14 @@ snapshots: css-what: 6.1.0 domelementtype: 2.3.0 domhandler: 5.0.3 - domutils: 3.1.0 + domutils: 3.2.1 cheerio@1.0.0: dependencies: cheerio-select: 2.1.0 dom-serializer: 2.0.0 domhandler: 5.0.3 - domutils: 3.1.0 + domutils: 3.2.1 encoding-sniffer: 0.2.0 htmlparser2: 9.1.0 parse5: 7.2.1 @@ -6707,22 +6757,22 @@ snapshots: classnames@2.5.1: {} - codemirror-json-schema@0.7.9(@codemirror/language@6.10.7)(@codemirror/lint@6.8.4)(@codemirror/state@6.5.0)(@codemirror/view@6.36.1)(@lezer/common@1.2.3): + codemirror-json-schema@0.7.9(@codemirror/language@6.10.8)(@codemirror/lint@6.8.4)(@codemirror/state@6.5.0)(@codemirror/view@6.36.1)(@lezer/common@1.2.3): dependencies: - '@codemirror/language': 6.10.7 + '@codemirror/language': 6.10.8 '@codemirror/lint': 6.8.4 '@codemirror/state': 6.5.0 '@codemirror/view': 6.36.1 '@lezer/common': 1.2.3 '@sagold/json-pointer': 5.1.2 - '@shikijs/markdown-it': 1.24.3 + '@shikijs/markdown-it': 1.26.1 best-effort-json-parser: 1.1.2 json-schema: 0.4.0 json-schema-library: 9.3.5 loglevel: 1.9.2 markdown-it: 14.1.0 - shiki: 1.24.3 - yaml: 2.6.1 + shiki: 1.26.1 + yaml: 2.7.0 optionalDependencies: '@codemirror/autocomplete': 6.18.4 '@codemirror/lang-json': 6.0.1 @@ -6732,7 +6782,7 @@ snapshots: codemirror-json5@1.0.3: dependencies: - '@codemirror/language': 6.10.7 + '@codemirror/language': 6.10.8 '@codemirror/state': 6.5.0 '@codemirror/view': 6.36.1 '@lezer/common': 1.2.3 @@ -6751,7 +6801,7 @@ snapshots: dependencies: '@codemirror/autocomplete': 6.18.4 '@codemirror/commands': 6.7.1 - '@codemirror/language': 6.10.7 + '@codemirror/language': 6.10.8 '@codemirror/lint': 6.8.4 '@codemirror/search': 6.5.8 '@codemirror/state': 6.5.0 @@ -6795,7 +6845,7 @@ snapshots: crelt@1.0.6: {} - cross-fetch@4.0.0: + cross-fetch@4.1.0: dependencies: node-fetch: 2.7.0 transitivePeerDependencies: @@ -6824,7 +6874,7 @@ snapshots: boolbase: 1.0.0 css-what: 6.1.0 domhandler: 5.0.3 - domutils: 3.1.0 + domutils: 3.2.1 nth-check: 2.1.1 css-tree@1.1.3: @@ -6859,7 +6909,7 @@ snapshots: dependencies: d3-binarytree: 1.0.2 d3-dispatch: 3.0.1 - d3-octree: 1.0.2 + d3-octree: 1.1.0 d3-quadtree: 3.0.1 d3-timer: 3.0.1 @@ -6869,7 +6919,7 @@ snapshots: dependencies: d3-color: 3.1.0 - d3-octree@1.0.2: {} + d3-octree@1.1.0: {} d3-quadtree@3.0.1: {} @@ -6919,15 +6969,15 @@ snapshots: dependencies: accessor-fn: 1.5.1 - data-view-buffer@1.0.1: + data-view-buffer@1.0.2: dependencies: - call-bind: 1.0.8 + call-bound: 1.0.3 es-errors: 1.3.0 is-data-view: 1.0.2 - data-view-byte-length@1.0.1: + data-view-byte-length@1.0.2: dependencies: - call-bind: 1.0.8 + call-bound: 1.0.3 es-errors: 1.3.0 is-data-view: 1.0.2 @@ -7003,7 +7053,7 @@ snapshots: dependencies: domelementtype: 2.3.0 - domutils@3.1.0: + domutils@3.2.1: dependencies: dom-serializer: 2.0.0 domelementtype: 2.3.0 @@ -7031,16 +7081,16 @@ snapshots: dependencies: jake: 10.9.2 - electron-to-chromium@1.5.74: {} + electron-to-chromium@1.5.76: {} emittery@1.0.3: {} + emoji-mart@5.6.0: {} + emoji-regex-xs@1.0.0: {} emoji-regex@10.4.0: {} - emojilib@3.0.12: {} - encoding-sniffer@0.2.0: dependencies: iconv-lite: 0.6.3 @@ -7061,23 +7111,24 @@ snapshots: dependencies: stackframe: 1.3.4 - es-abstract@1.23.6: + es-abstract@1.23.9: dependencies: - array-buffer-byte-length: 1.0.1 + array-buffer-byte-length: 1.0.2 arraybuffer.prototype.slice: 1.0.4 available-typed-arrays: 1.0.7 call-bind: 1.0.8 call-bound: 1.0.3 - data-view-buffer: 1.0.1 - data-view-byte-length: 1.0.1 + data-view-buffer: 1.0.2 + data-view-byte-length: 1.0.2 data-view-byte-offset: 1.0.1 es-define-property: 1.0.1 es-errors: 1.3.0 es-object-atoms: 1.0.0 - es-set-tostringtag: 2.0.3 + es-set-tostringtag: 2.1.0 es-to-primitive: 1.3.0 - function.prototype.name: 1.1.7 - get-intrinsic: 1.2.6 + function.prototype.name: 1.1.8 + get-intrinsic: 1.2.7 + get-proto: 1.0.1 get-symbol-description: 1.1.0 globalthis: 1.0.4 gopd: 1.2.0 @@ -7089,7 +7140,6 @@ snapshots: is-array-buffer: 3.0.5 is-callable: 1.2.7 is-data-view: 1.0.2 - is-negative-zero: 2.0.3 is-regex: 1.2.1 is-shared-array-buffer: 1.0.4 is-string: 1.1.1 @@ -7099,9 +7149,12 @@ snapshots: object-inspect: 1.13.3 object-keys: 1.1.1 object.assign: 4.1.7 - regexp.prototype.flags: 1.5.3 + own-keys: 1.0.1 + regexp.prototype.flags: 1.5.4 safe-array-concat: 1.1.3 + safe-push-apply: 1.0.0 safe-regex-test: 1.1.0 + set-proto: 1.0.0 string.prototype.trim: 1.2.10 string.prototype.trimend: 1.0.9 string.prototype.trimstart: 1.0.8 @@ -7120,9 +7173,10 @@ snapshots: dependencies: es-errors: 1.3.0 - es-set-tostringtag@2.0.3: + es-set-tostringtag@2.1.0: dependencies: - get-intrinsic: 1.2.6 + es-errors: 1.3.0 + get-intrinsic: 1.2.7 has-tostringtag: 1.0.2 hasown: 2.0.2 @@ -7206,7 +7260,7 @@ snapshots: fastest-stable-stringify@2.0.2: {} - fastq@1.17.1: + fastq@1.18.0: dependencies: reusify: 1.0.4 @@ -7239,7 +7293,7 @@ snapshots: dependencies: is-callable: 1.2.7 - force-graph@1.47.1: + force-graph@1.47.2: dependencies: '@tweenjs/tween.js': 25.0.0 accessor-fn: 1.5.1 @@ -7294,9 +7348,10 @@ snapshots: function-bind@1.1.2: {} - function.prototype.name@1.1.7: + function.prototype.name@1.1.8: dependencies: call-bind: 1.0.8 + call-bound: 1.0.3 define-properties: 1.2.1 functions-have-names: 1.2.3 hasown: 2.0.2 @@ -7306,14 +7361,14 @@ snapshots: gensync@1.0.0-beta.2: {} - get-intrinsic@1.2.6: + get-intrinsic@1.2.7: dependencies: call-bind-apply-helpers: 1.0.1 - dunder-proto: 1.0.1 es-define-property: 1.0.1 es-errors: 1.3.0 es-object-atoms: 1.0.0 function-bind: 1.1.2 + get-proto: 1.0.1 gopd: 1.2.0 has-symbols: 1.1.0 hasown: 2.0.2 @@ -7323,11 +7378,21 @@ snapshots: get-own-enumerable-property-symbols@3.0.2: {} + get-proto@1.0.1: + dependencies: + dunder-proto: 1.0.1 + es-object-atoms: 1.0.0 + get-symbol-description@1.1.0: dependencies: call-bound: 1.0.3 es-errors: 1.3.0 - get-intrinsic: 1.2.6 + get-intrinsic: 1.2.7 + + gif-picker-react@1.4.0(react-dom@18.3.1(react@18.3.1))(react@18.3.1): + dependencies: + react: 18.3.1 + react-dom: 18.3.1(react@18.3.1) glob-parent@5.1.2: dependencies: @@ -7447,7 +7512,7 @@ snapshots: dependencies: domelementtype: 2.3.0 domhandler: 5.0.3 - domutils: 3.1.0 + domutils: 3.2.1 entities: 4.5.0 human-id@1.0.2: {} @@ -7524,13 +7589,16 @@ snapshots: dependencies: call-bind: 1.0.8 call-bound: 1.0.3 - get-intrinsic: 1.2.6 + get-intrinsic: 1.2.7 is-arrayish@0.2.1: {} - is-async-function@2.0.0: + is-async-function@2.1.0: dependencies: + call-bound: 1.0.3 + get-proto: 1.0.1 has-tostringtag: 1.0.2 + safe-regex-test: 1.1.0 is-bigint@1.1.0: dependencies: @@ -7543,14 +7611,14 @@ snapshots: is-callable@1.2.7: {} - is-core-module@2.16.0: + is-core-module@2.16.1: dependencies: hasown: 2.0.2 is-data-view@1.0.2: dependencies: call-bound: 1.0.3 - get-intrinsic: 1.2.6 + get-intrinsic: 1.2.7 is-typed-array: 1.1.15 is-date-object@1.1.0: @@ -7568,9 +7636,12 @@ snapshots: dependencies: call-bound: 1.0.3 - is-generator-function@1.0.10: + is-generator-function@1.1.0: dependencies: + call-bound: 1.0.3 + get-proto: 1.0.1 has-tostringtag: 1.0.2 + safe-regex-test: 1.1.0 is-glob@4.0.3: dependencies: @@ -7584,8 +7655,6 @@ snapshots: is-module@1.0.0: {} - is-negative-zero@2.0.3: {} - is-number-object@1.1.1: dependencies: call-bound: 1.0.3 @@ -7642,7 +7711,7 @@ snapshots: is-weakset@2.0.4: dependencies: call-bound: 1.0.3 - get-intrinsic: 1.2.6 + get-intrinsic: 1.2.7 is-windows@1.0.2: {} @@ -7787,7 +7856,7 @@ snapshots: math-intrinsics@1.1.0: {} - mdast-util-find-and-replace@3.0.1: + mdast-util-find-and-replace@3.0.2: dependencies: '@types/mdast': 4.0.4 escape-string-regexp: 5.0.0 @@ -7816,7 +7885,7 @@ snapshots: '@types/mdast': 4.0.4 ccount: 2.0.1 devlop: 1.1.0 - mdast-util-find-and-replace: 3.0.1 + mdast-util-find-and-replace: 3.0.2 micromark-util-character: 2.1.1 mdast-util-gfm-footnote@2.0.0: @@ -8301,16 +8370,22 @@ snapshots: dependencies: wrappy: 1.0.2 - oniguruma-to-es@0.8.0: + oniguruma-to-es@0.10.0: dependencies: emoji-regex-xs: 1.0.0 - regex: 5.0.2 - regex-recursion: 5.0.0 + regex: 5.1.1 + regex-recursion: 5.1.1 os-tmpdir@1.0.2: {} outdent@0.5.0: {} + own-keys@1.0.1: + dependencies: + get-intrinsic: 1.2.7 + object-keys: 1.1.1 + safe-push-apply: 1.0.0 + p-filter@2.1.0: dependencies: p-map: 2.1.0 @@ -8327,7 +8402,7 @@ snapshots: p-try@2.2.0: {} - package-manager-detector@0.2.7: {} + package-manager-detector@0.2.8: {} parent-module@1.0.1: dependencies: @@ -8447,7 +8522,7 @@ snapshots: transitivePeerDependencies: - dnd-core - react-chartjs-2@5.2.0(chart.js@4.4.7)(react@18.3.1): + react-chartjs-2@5.3.0(chart.js@4.4.7)(react@18.3.1): dependencies: chart.js: 4.4.7 react: 18.3.1 @@ -8473,26 +8548,26 @@ snapshots: dependencies: dnd-core: 16.0.1 - react-dnd-multi-backend@8.1.2(dnd-core@16.0.1)(react-dnd@16.0.1(@types/react@18.3.17)(react@18.3.1))(react-dom@18.3.1(react@18.3.1))(react@18.3.1): + react-dnd-multi-backend@8.1.2(dnd-core@16.0.1)(react-dnd@16.0.1(@types/react@18.3.18)(react@18.3.1))(react-dom@18.3.1(react@18.3.1))(react@18.3.1): dependencies: dnd-core: 16.0.1 dnd-multi-backend: 8.1.2(dnd-core@16.0.1) react: 18.3.1 - react-dnd: 16.0.1(@types/react@18.3.17)(react@18.3.1) - react-dnd-preview: 8.1.2(react-dnd@16.0.1(@types/react@18.3.17)(react@18.3.1))(react@18.3.1) + react-dnd: 16.0.1(@types/react@18.3.18)(react@18.3.1) + react-dnd-preview: 8.1.2(react-dnd@16.0.1(@types/react@18.3.18)(react@18.3.1))(react@18.3.1) react-dom: 18.3.1(react@18.3.1) - react-dnd-preview@8.1.2(react-dnd@16.0.1(@types/react@18.3.17)(react@18.3.1))(react@18.3.1): + react-dnd-preview@8.1.2(react-dnd@16.0.1(@types/react@18.3.18)(react@18.3.1))(react@18.3.1): dependencies: react: 18.3.1 - react-dnd: 16.0.1(@types/react@18.3.17)(react@18.3.1) + react-dnd: 16.0.1(@types/react@18.3.18)(react@18.3.1) react-dnd-touch-backend@16.0.1: dependencies: '@react-dnd/invariant': 4.0.2 dnd-core: 16.0.1 - react-dnd@16.0.1(@types/react@18.3.17)(react@18.3.1): + react-dnd@16.0.1(@types/react@18.3.18)(react@18.3.1): dependencies: '@react-dnd/invariant': 4.0.2 '@react-dnd/shallowequal': 4.0.2 @@ -8501,7 +8576,7 @@ snapshots: hoist-non-react-statics: 3.3.2 react: 18.3.1 optionalDependencies: - '@types/react': 18.3.17 + '@types/react': 18.3.18 react-dom@18.3.1(react@18.3.1): dependencies: @@ -8516,21 +8591,21 @@ snapshots: react-fast-compare@3.2.2: {} - react-focus-lock@2.13.5(@types/react@18.3.17)(react@18.3.1): + react-focus-lock@2.13.5(@types/react@18.3.18)(react@18.3.1): dependencies: '@babel/runtime': 7.26.0 focus-lock: 1.3.5 prop-types: 15.8.1 react: 18.3.1 react-clientside-effect: 1.2.7(react@18.3.1) - use-callback-ref: 1.3.3(@types/react@18.3.17)(react@18.3.1) - use-sidecar: 1.1.3(@types/react@18.3.17)(react@18.3.1) + use-callback-ref: 1.3.3(@types/react@18.3.18)(react@18.3.1) + use-sidecar: 1.1.3(@types/react@18.3.18)(react@18.3.1) optionalDependencies: - '@types/react': 18.3.17 + '@types/react': 18.3.18 react-force-graph-2d@1.26.1(react@18.3.1): dependencies: - force-graph: 1.47.1 + force-graph: 1.47.2 prop-types: 15.8.1 react: 18.3.1 react-kapsule: 2.5.6(react@18.3.1) @@ -8542,7 +8617,7 @@ snapshots: react: 18.3.1 react-kapsule: 2.5.6(react@18.3.1) - react-hook-form@7.54.1(react@18.3.1): + react-hook-form@7.54.2(react@18.3.1): dependencies: react: 18.3.1 @@ -8553,10 +8628,10 @@ snapshots: jerrypick: 1.1.1 react: 18.3.1 - react-markdown@9.0.1(@types/react@18.3.17)(react@18.3.1): + react-markdown@9.0.1(@types/react@18.3.18)(react@18.3.1): dependencies: '@types/hast': 3.0.4 - '@types/react': 18.3.17 + '@types/react': 18.3.18 devlop: 1.1.0 hast-util-to-jsx-runtime: 2.3.2 html-url-attributes: 3.0.1 @@ -8570,7 +8645,7 @@ snapshots: transitivePeerDependencies: - supports-color - react-mosaic-component@6.1.0(@types/react@18.3.17)(dnd-core@16.0.1)(react-dom@18.3.1(react@18.3.1))(react@18.3.1): + react-mosaic-component@6.1.1(@types/react@18.3.18)(dnd-core@16.0.1)(react-dom@18.3.1(react@18.3.1))(react@18.3.1): dependencies: classnames: 2.5.1 immutability-helper: 3.1.1 @@ -8578,9 +8653,9 @@ snapshots: prop-types: 15.8.1 rdndmb-html5-to-touch: 8.1.2(dnd-core@16.0.1) react: 18.3.1 - react-dnd: 16.0.1(@types/react@18.3.17)(react@18.3.1) + react-dnd: 16.0.1(@types/react@18.3.18)(react@18.3.1) react-dnd-html5-backend: 16.0.1 - react-dnd-multi-backend: 8.1.2(dnd-core@16.0.1)(react-dnd@16.0.1(@types/react@18.3.17)(react@18.3.1))(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + react-dnd-multi-backend: 8.1.2(dnd-core@16.0.1)(react-dnd@16.0.1(@types/react@18.3.18)(react@18.3.1))(react-dom@18.3.1(react@18.3.1))(react@18.3.1) react-dnd-touch-backend: 16.0.1 uuid: 9.0.1 transitivePeerDependencies: @@ -8596,7 +8671,7 @@ snapshots: react-qr-barcode-scanner@2.0.0(react-dom@18.3.1(react@18.3.1))(react@18.3.1): dependencies: - '@types/react': 18.3.17 + '@types/react': 18.3.18 '@zxing/library': 0.21.3 react: 18.3.1 react-dom: 18.3.1(react@18.3.1) @@ -8604,33 +8679,33 @@ snapshots: react-refresh@0.14.2: {} - react-remove-scroll-bar@2.3.8(@types/react@18.3.17)(react@18.3.1): + react-remove-scroll-bar@2.3.8(@types/react@18.3.18)(react@18.3.1): dependencies: react: 18.3.1 - react-style-singleton: 2.2.3(@types/react@18.3.17)(react@18.3.1) + react-style-singleton: 2.2.3(@types/react@18.3.18)(react@18.3.1) tslib: 2.8.1 optionalDependencies: - '@types/react': 18.3.17 + '@types/react': 18.3.18 - react-remove-scroll@2.6.2(@types/react@18.3.17)(react@18.3.1): + react-remove-scroll@2.6.2(@types/react@18.3.18)(react@18.3.1): dependencies: react: 18.3.1 - react-remove-scroll-bar: 2.3.8(@types/react@18.3.17)(react@18.3.1) - react-style-singleton: 2.2.3(@types/react@18.3.17)(react@18.3.1) + react-remove-scroll-bar: 2.3.8(@types/react@18.3.18)(react@18.3.1) + react-style-singleton: 2.2.3(@types/react@18.3.18)(react@18.3.1) tslib: 2.8.1 - use-callback-ref: 1.3.3(@types/react@18.3.17)(react@18.3.1) - use-sidecar: 1.1.3(@types/react@18.3.17)(react@18.3.1) + use-callback-ref: 1.3.3(@types/react@18.3.18)(react@18.3.1) + use-sidecar: 1.1.3(@types/react@18.3.18)(react@18.3.1) optionalDependencies: - '@types/react': 18.3.17 + '@types/react': 18.3.18 - react-router-dom@6.28.0(react-dom@18.3.1(react@18.3.1))(react@18.3.1): + react-router-dom@6.28.1(react-dom@18.3.1(react@18.3.1))(react@18.3.1): dependencies: '@remix-run/router': 1.21.0 react: 18.3.1 react-dom: 18.3.1(react@18.3.1) - react-router: 6.28.0(react@18.3.1) + react-router: 6.28.1(react@18.3.1) - react-router@6.28.0(react@18.3.1): + react-router@6.28.1(react@18.3.1): dependencies: '@remix-run/router': 1.21.0 react: 18.3.1 @@ -8648,13 +8723,13 @@ snapshots: optionalDependencies: react-dom: 18.3.1(react@18.3.1) - react-style-singleton@2.2.3(@types/react@18.3.17)(react@18.3.1): + react-style-singleton@2.2.3(@types/react@18.3.18)(react@18.3.1): dependencies: get-nonce: 1.0.1 react: 18.3.1 tslib: 2.8.1 optionalDependencies: - '@types/react': 18.3.17 + '@types/react': 18.3.18 react-universal-interface@0.6.2(react@18.3.1)(tslib@2.8.1): dependencies: @@ -8712,15 +8787,15 @@ snapshots: dependencies: '@babel/runtime': 7.26.0 - reflect.getprototypeof@1.0.9: + reflect.getprototypeof@1.0.10: dependencies: call-bind: 1.0.8 define-properties: 1.2.1 - dunder-proto: 1.0.1 - es-abstract: 1.23.6 + es-abstract: 1.23.9 es-errors: 1.3.0 - get-intrinsic: 1.2.6 - gopd: 1.2.0 + es-object-atoms: 1.0.0 + get-intrinsic: 1.2.7 + get-proto: 1.0.1 which-builtin-type: 1.2.1 regenerate-unicode-properties@10.2.0: @@ -8735,21 +8810,24 @@ snapshots: dependencies: '@babel/runtime': 7.26.0 - regex-recursion@5.0.0: + regex-recursion@5.1.1: dependencies: + regex: 5.1.1 regex-utilities: 2.3.0 regex-utilities@2.3.0: {} - regex@5.0.2: + regex@5.1.1: dependencies: regex-utilities: 2.3.0 - regexp.prototype.flags@1.5.3: + regexp.prototype.flags@1.5.4: dependencies: call-bind: 1.0.8 define-properties: 1.2.1 es-errors: 1.3.0 + get-proto: 1.0.1 + gopd: 1.2.0 set-function-name: 2.0.2 regexpu-core@6.2.0: @@ -8828,9 +8906,9 @@ snapshots: resolve-from@5.0.0: {} - resolve@1.22.9: + resolve@1.22.10: dependencies: - is-core-module: 2.16.0 + is-core-module: 2.16.1 path-parse: 1.0.7 supports-preserve-symlinks-flag: 1.0.0 @@ -8842,29 +8920,29 @@ snapshots: optionalDependencies: fsevents: 2.3.3 - rollup@4.28.1: + rollup@4.29.1: dependencies: '@types/estree': 1.0.6 optionalDependencies: - '@rollup/rollup-android-arm-eabi': 4.28.1 - '@rollup/rollup-android-arm64': 4.28.1 - '@rollup/rollup-darwin-arm64': 4.28.1 - '@rollup/rollup-darwin-x64': 4.28.1 - '@rollup/rollup-freebsd-arm64': 4.28.1 - '@rollup/rollup-freebsd-x64': 4.28.1 - '@rollup/rollup-linux-arm-gnueabihf': 4.28.1 - '@rollup/rollup-linux-arm-musleabihf': 4.28.1 - '@rollup/rollup-linux-arm64-gnu': 4.28.1 - '@rollup/rollup-linux-arm64-musl': 4.28.1 - '@rollup/rollup-linux-loongarch64-gnu': 4.28.1 - '@rollup/rollup-linux-powerpc64le-gnu': 4.28.1 - '@rollup/rollup-linux-riscv64-gnu': 4.28.1 - '@rollup/rollup-linux-s390x-gnu': 4.28.1 - '@rollup/rollup-linux-x64-gnu': 4.28.1 - '@rollup/rollup-linux-x64-musl': 4.28.1 - '@rollup/rollup-win32-arm64-msvc': 4.28.1 - '@rollup/rollup-win32-ia32-msvc': 4.28.1 - '@rollup/rollup-win32-x64-msvc': 4.28.1 + '@rollup/rollup-android-arm-eabi': 4.29.1 + '@rollup/rollup-android-arm64': 4.29.1 + '@rollup/rollup-darwin-arm64': 4.29.1 + '@rollup/rollup-darwin-x64': 4.29.1 + '@rollup/rollup-freebsd-arm64': 4.29.1 + '@rollup/rollup-freebsd-x64': 4.29.1 + '@rollup/rollup-linux-arm-gnueabihf': 4.29.1 + '@rollup/rollup-linux-arm-musleabihf': 4.29.1 + '@rollup/rollup-linux-arm64-gnu': 4.29.1 + '@rollup/rollup-linux-arm64-musl': 4.29.1 + '@rollup/rollup-linux-loongarch64-gnu': 4.29.1 + '@rollup/rollup-linux-powerpc64le-gnu': 4.29.1 + '@rollup/rollup-linux-riscv64-gnu': 4.29.1 + '@rollup/rollup-linux-s390x-gnu': 4.29.1 + '@rollup/rollup-linux-x64-gnu': 4.29.1 + '@rollup/rollup-linux-x64-musl': 4.29.1 + '@rollup/rollup-win32-arm64-msvc': 4.29.1 + '@rollup/rollup-win32-ia32-msvc': 4.29.1 + '@rollup/rollup-win32-x64-msvc': 4.29.1 fsevents: 2.3.3 rtl-css-js@1.16.1: @@ -8888,12 +8966,17 @@ snapshots: dependencies: call-bind: 1.0.8 call-bound: 1.0.3 - get-intrinsic: 1.2.6 + get-intrinsic: 1.2.7 has-symbols: 1.1.0 isarray: 2.0.5 safe-buffer@5.2.1: {} + safe-push-apply@1.0.0: + dependencies: + es-errors: 1.3.0 + isarray: 2.0.5 + safe-regex-test@1.1.0: dependencies: call-bound: 1.0.3 @@ -8921,7 +9004,7 @@ snapshots: define-data-property: 1.1.4 es-errors: 1.3.0 function-bind: 1.1.2 - get-intrinsic: 1.2.6 + get-intrinsic: 1.2.7 gopd: 1.2.0 has-property-descriptors: 1.0.2 @@ -8934,19 +9017,27 @@ snapshots: set-harmonic-interval@1.0.1: {} + set-proto@1.0.0: + dependencies: + dunder-proto: 1.0.1 + es-errors: 1.3.0 + es-object-atoms: 1.0.0 + shebang-command@2.0.0: dependencies: shebang-regex: 3.0.0 shebang-regex@3.0.0: {} - shiki@1.24.3: + shiki@1.26.1: dependencies: - '@shikijs/core': 1.24.3 - '@shikijs/engine-javascript': 1.24.3 - '@shikijs/engine-oniguruma': 1.24.3 - '@shikijs/types': 1.24.3 - '@shikijs/vscode-textmate': 9.3.1 + '@shikijs/core': 1.26.1 + '@shikijs/engine-javascript': 1.26.1 + '@shikijs/engine-oniguruma': 1.26.1 + '@shikijs/langs': 1.26.1 + '@shikijs/themes': 1.26.1 + '@shikijs/types': 1.26.1 + '@shikijs/vscode-textmate': 10.0.1 '@types/hast': 3.0.4 side-channel-list@1.0.0: @@ -8958,14 +9049,14 @@ snapshots: dependencies: call-bound: 1.0.3 es-errors: 1.3.0 - get-intrinsic: 1.2.6 + get-intrinsic: 1.2.7 object-inspect: 1.13.3 side-channel-weakmap@1.0.2: dependencies: call-bound: 1.0.3 es-errors: 1.3.0 - get-intrinsic: 1.2.6 + get-intrinsic: 1.2.7 object-inspect: 1.13.3 side-channel-map: 1.0.1 @@ -9032,18 +9123,19 @@ snapshots: stack-generator: 2.0.10 stacktrace-gps: 3.1.2 - string.prototype.matchall@4.0.11: + string.prototype.matchall@4.0.12: dependencies: call-bind: 1.0.8 + call-bound: 1.0.3 define-properties: 1.2.1 - es-abstract: 1.23.6 + es-abstract: 1.23.9 es-errors: 1.3.0 es-object-atoms: 1.0.0 - get-intrinsic: 1.2.6 + get-intrinsic: 1.2.7 gopd: 1.2.0 has-symbols: 1.1.0 internal-slot: 1.1.0 - regexp.prototype.flags: 1.5.3 + regexp.prototype.flags: 1.5.4 set-function-name: 2.0.2 side-channel: 1.1.0 @@ -9053,7 +9145,7 @@ snapshots: call-bound: 1.0.3 define-data-property: 1.1.4 define-properties: 1.2.1 - es-abstract: 1.23.6 + es-abstract: 1.23.9 es-object-atoms: 1.0.0 has-property-descriptors: 1.0.2 @@ -9125,7 +9217,7 @@ snapshots: textarea-caret@3.0.2: {} - three-forcegraph@1.42.10(three@0.170.0): + three-forcegraph@1.42.11(three@0.170.0): dependencies: accessor-fn: 1.5.1 d3-array: 3.2.4 @@ -9228,7 +9320,7 @@ snapshots: gopd: 1.2.0 has-proto: 1.2.0 is-typed-array: 1.1.15 - reflect.getprototypeof: 1.0.9 + reflect.getprototypeof: 1.0.10 typed-array-length@1.0.7: dependencies: @@ -9237,7 +9329,7 @@ snapshots: gopd: 1.2.0 is-typed-array: 1.1.15 possible-typed-array-names: 1.0.0 - reflect.getprototypeof: 1.0.9 + reflect.getprototypeof: 1.0.10 typescript@5.7.2: {} @@ -9317,20 +9409,20 @@ snapshots: escalade: 3.2.0 picocolors: 1.1.1 - use-callback-ref@1.3.3(@types/react@18.3.17)(react@18.3.1): + use-callback-ref@1.3.3(@types/react@18.3.18)(react@18.3.1): dependencies: react: 18.3.1 tslib: 2.8.1 optionalDependencies: - '@types/react': 18.3.17 + '@types/react': 18.3.18 - use-sidecar@1.1.3(@types/react@18.3.17)(react@18.3.1): + use-sidecar@1.1.3(@types/react@18.3.18)(react@18.3.1): dependencies: detect-node-es: 1.1.0 react: 18.3.1 tslib: 2.8.1 optionalDependencies: - '@types/react': 18.3.17 + '@types/react': 18.3.18 use-sync-external-store@1.2.2(react@18.3.1): dependencies: @@ -9367,7 +9459,7 @@ snapshots: dependencies: esbuild: 0.21.5 postcss: 8.4.49 - rollup: 4.28.1 + rollup: 4.29.1 optionalDependencies: fsevents: 2.3.3 terser: 5.37.0 @@ -9410,12 +9502,12 @@ snapshots: which-builtin-type@1.2.1: dependencies: call-bound: 1.0.3 - function.prototype.name: 1.1.7 + function.prototype.name: 1.1.8 has-tostringtag: 1.0.2 - is-async-function: 2.0.0 + is-async-function: 2.1.0 is-date-object: 1.1.0 is-finalizationregistry: 1.1.1 - is-generator-function: 1.0.10 + is-generator-function: 1.1.0 is-regex: 1.2.1 is-weakref: 1.1.0 isarray: 2.0.5 @@ -9580,7 +9672,7 @@ snapshots: yaml@1.10.2: {} - yaml@2.6.1: {} + yaml@2.7.0: {} yet-another-react-lightbox@3.21.7(react-dom@18.3.1(react@18.3.1))(react@18.3.1): dependencies: @@ -9589,11 +9681,11 @@ snapshots: zen-observable@0.10.0: {} - zustand@4.5.5(@types/react@18.3.17)(react@18.3.1): + zustand@4.5.5(@types/react@18.3.18)(react@18.3.1): dependencies: use-sync-external-store: 1.2.2(react@18.3.1) optionalDependencies: - '@types/react': 18.3.17 + '@types/react': 18.3.18 react: 18.3.1 zwitch@1.0.5: {} diff --git a/src/components/gif/insert-gif-button.tsx b/src/components/gif/insert-gif-button.tsx index 70b81697e..6b93ae51a 100644 --- a/src/components/gif/insert-gif-button.tsx +++ b/src/components/gif/insert-gif-button.tsx @@ -1,9 +1,12 @@ +import { useCallback } from "react"; import { IconButton, IconButtonProps, useDisclosure } from "@chakra-ui/react"; +import { NostrEvent } from "nostr-tools"; +import { getTagValue } from "applesauce-core/helpers"; + +import TenorGifIconButton from "./tenor-gif-icon-button"; import Clapperboard from "../icons/clapperboard"; import GifPickerModal from "./gif-picker-modal"; -import { NostrEvent } from "nostr-tools"; -import { useCallback } from "react"; -import { getTagValue } from "applesauce-core/helpers"; +import { TENOR_API_KEY } from "../../const"; export default function InsertGifButton({ onSelect, @@ -26,10 +29,13 @@ export default function InsertGifButton({ [onSelect, onSelectURL], ); - return ( - <> - } onClick={modal.onOpen} {...props} /> - {modal.isOpen && } - - ); + if (TENOR_API_KEY) { + return ; + } else + return ( + <> + } onClick={modal.onOpen} {...props} /> + {modal.isOpen && } + + ); } diff --git a/src/components/gif/tenor-gif-icon-button.tsx b/src/components/gif/tenor-gif-icon-button.tsx new file mode 100644 index 000000000..46a758879 --- /dev/null +++ b/src/components/gif/tenor-gif-icon-button.tsx @@ -0,0 +1,84 @@ +import { + IconButton, + IconButtonProps, + Modal, + ModalContent, + ModalOverlay, + Popover, + PopoverArrow, + PopoverContent, + PopoverTrigger, + Portal, + useBoolean, + useColorMode, +} from "@chakra-ui/react"; +import GifPicker, { TenorImage, Theme } from "gif-picker-react"; + +import { useBreakpointValue } from "../../providers/global/breakpoint-provider"; +import Clapperboard from "../icons/clapperboard"; +import { TENOR_API_KEY } from "../../const"; + +export default function TenorGifIconButton({ + portal = false, + onSelect, + ...props +}: { portal?: boolean; onSelect?: (gif: string) => void } & Omit< + IconButtonProps, + "children" | "aria-label" | "onSelect" +>) { + const useModal = useBreakpointValue({ base: true, md: false }); + const { colorMode } = useColorMode(); + const [isOpen, open] = useBoolean(); + + const handleSelect = (gif: TenorImage) => { + onSelect?.(gif.url); + open.off(); + }; + + const picker = ( + + ); + + if (useModal) { + return ( + <> + } + aria-label="Add Gif" + title="Add Gif" + onClick={open.on} + {...props} + /> + + + + {picker} + + + ); + } else + return ( + + + } aria-label="Add Gif" title="Add Gif" {...props} /> + + {portal ? ( + + + + {picker} + + + ) : ( + + + {picker} + + )} + + ); +} diff --git a/src/components/magic-textarea.tsx b/src/components/magic-textarea.tsx index c60581a88..a3525cbe1 100644 --- a/src/components/magic-textarea.tsx +++ b/src/components/magic-textarea.tsx @@ -1,4 +1,4 @@ -import React, { LegacyRef, forwardRef } from "react"; +import React, { LegacyRef, forwardRef, useMemo } from "react"; // NOTE: Do not remove Textarea or Input from the imports. they are used import { Image, InputProps, Textarea, Input, TextareaProps } from "@chakra-ui/react"; import ReactTextareaAutocomplete, { @@ -10,17 +10,23 @@ import "@webscopeio/react-textarea-autocomplete/style.css"; import { nip19 } from "nostr-tools"; import { matchSorter } from "match-sorter"; import { useObservable } from "applesauce-react/hooks"; +import { type EmojiMartData } from "@emoji-mart/data"; +import { useAsync, useLocalStorage } from "react-use"; -import { Emoji, useContextEmojis } from "../providers/global/emoji-provider"; +import { useContextEmojis } from "../providers/global/emoji-provider"; import UserAvatar from "./user/user-avatar"; import UserDnsIdentity from "./user/user-dns-identity"; import { useWebOfTrust } from "../providers/global/web-of-trust-provider"; import { userSearchDirectory } from "../services/username-search"; -export type PeopleToken = { pubkey: string; names: string[] }; -type Token = Emoji | PeopleToken; +// Referencing Textarea and Input so they are not removed from the imports +[Textarea, Input]; -function isEmojiToken(token: Token): token is Emoji { +export type PeopleToken = { pubkey: string; names: string[] }; +export type EmojiToken = { id: string; name: string; keywords: string[]; char: string; url?: string }; +type Token = EmojiToken | PeopleToken; + +function isEmojiToken(token: Token): token is EmojiToken { return Reflect.has(token, "char"); } function isPersonToken(token: Token): token is PeopleToken { @@ -60,15 +66,63 @@ const Loading: ReactTextareaAutocompleteProps< React.TextareaHTMLAttributes >["loadingComponent"] = ({ data }) =>
Loading
; +function useEmojiTokens() { + const customEmojis = useContextEmojis(); + const customEmojiTokens = useMemo( + () => + customEmojis.map( + (emoji) => + ({ + id: emoji.name, + name: emoji.name, + url: emoji.url, + keywords: [emoji.name], + char: `:${emoji.name}:`, + }) satisfies EmojiToken, + ), + [customEmojis], + ); + + const { value: native } = useAsync(() => import("@emoji-mart/data") as Promise<{ default: EmojiMartData }>); + const nativeEmojisTokens = useMemo(() => { + if (!native) return []; + + return Object.values(native.default.emojis).map( + (emoji) => + ({ + id: emoji.id, + name: emoji.name, + keywords: [emoji.id, emoji.name, ...emoji.keywords], + char: emoji.skins[0].native, + }) satisfies EmojiToken, + ); + }, [native]); + + // load local reaction frequency + const [frequently] = useLocalStorage("emoji-mart.frequently", {} as Record, { + raw: false, + serializer: (v) => JSON.stringify(v), + deserializer: (str) => JSON.parse(str), + }); + + return useMemo(() => { + const all = [...nativeEmojisTokens, ...customEmojiTokens]; + + if (frequently) return all.sort((a, b) => (frequently[b.id] ?? 0) - (frequently[a.id] ?? 0)); + else return all; + }, [nativeEmojisTokens, customEmojiTokens]); +} + function useAutocompleteTriggers() { const webOfTrust = useWebOfTrust(); - const emojis = useContextEmojis(); const directory = useObservable(userSearchDirectory) ?? []; + const emojis = useEmojiTokens(); const triggers: TriggerType = { ":": { dataProvider: (token: string) => { - return matchSorter(emojis, token.trim(), { keys: ["keywords"] }).slice(0, 10); + if (!token) return emojis.slice(0, 10); + else return matchSorter(emojis, token.trim(), { keys: ["keywords"] }).slice(0, 10); }, component: Item, output, @@ -102,7 +156,7 @@ const MagicInput = forwardRef {...props} textAreaComponent={Input} @@ -121,7 +175,7 @@ const MagicTextArea = forwardRef {...props} ref={instanceRef} diff --git a/src/components/message/message-bubble.tsx b/src/components/message/message-bubble.tsx index da454f97c..8c59f8d20 100644 --- a/src/components/message/message-bubble.tsx +++ b/src/components/message/message-bubble.tsx @@ -37,7 +37,7 @@ export default function MessageBubble({ const actions = ( <> - + {showThreadButton && } ); @@ -69,7 +69,7 @@ export default function MessageBubble({ {hasReactions && ( - {actionPosition === "footer" ? actions : } + {actionPosition === "footer" ? actions : } diff --git a/src/components/note/timeline-note/components/add-reaction-button.tsx b/src/components/note/timeline-note/components/add-reaction-button.tsx index bc50d11d9..6e52ac296 100644 --- a/src/components/note/timeline-note/components/add-reaction-button.tsx +++ b/src/components/note/timeline-note/components/add-reaction-button.tsx @@ -1,65 +1,29 @@ import { useState } from "react"; -import { - ButtonProps, - IconButton, - Popover, - PopoverArrow, - PopoverBody, - PopoverContent, - PopoverTrigger, - Portal, - useBoolean, -} from "@chakra-ui/react"; +import { ButtonProps, useToast } from "@chakra-ui/react"; import { NostrEvent } from "nostr-tools"; +import { Emoji } from "applesauce-core/helpers"; +import { useEventFactory } from "applesauce-react/hooks"; -import useEventReactions from "../../../../hooks/use-event-reactions"; -import { AddReactionIcon } from "../../../icons"; -import ReactionPicker from "../../../reaction-picker"; -import { draftEventReaction } from "../../../../helpers/nostr/reactions"; -import { getEventUID } from "../../../../helpers/nostr/event"; import { usePublishEvent } from "../../../../providers/global/publish-provider"; +import ReactionIconButton from "../../../reactions/reaction-icon-button"; export default function AddReactionButton({ event, - portal = false, - ...props }: { event: NostrEvent; portal?: boolean } & Omit) { + const factory = useEventFactory(); + const toast = useToast(); const publish = usePublishEvent(); - const reactions = useEventReactions(event) ?? []; - const [popover, setPopover] = useBoolean(); const [loading, setLoading] = useState(false); - const addReaction = async (emoji = "+", url?: string) => { + const addReaction = async (emoji: string | Emoji) => { setLoading(true); - const draft = draftEventReaction(event, emoji, url); - await publish("Reaction", draft); - setPopover.off(); + try { + const draft = await factory.reaction(event, emoji); + await publish("Reaction", draft); + } catch (error) { + if (error instanceof Error) toast({ description: error.message, status: "error" }); + } setLoading(false); }; - - const content = ( - - - - - - - ); - - return ( - - - } - aria-label="Add Reaction" - title="Add Reaction" - isLoading={loading} - {...props} - > - {reactions?.length ?? 0} - - - {portal ? {content} : content} - - ); + return ; } diff --git a/src/components/reaction-picker.tsx b/src/components/reaction-picker.tsx deleted file mode 100644 index 11a8577ec..000000000 --- a/src/components/reaction-picker.tsx +++ /dev/null @@ -1,75 +0,0 @@ -import { Divider, Flex, IconButton, Image, Text } from "@chakra-ui/react"; -import { getEmojis, getPackName } from "applesauce-core/helpers/emoji"; - -import { DislikeIcon, LikeIcon } from "./icons"; -import useCurrentAccount from "../hooks/use-current-account"; -import useReplaceableEvent from "../hooks/use-replaceable-event"; -import { getPackCordsFromFavorites } from "../helpers/nostr/emoji-packs"; -import useFavoriteEmojiPacks from "../hooks/use-favorite-emoji-packs"; -import useAppSettings from "../hooks/use-app-settings"; - -export type ReactionPickerProps = { - onSelect: (emoji: string, url?: string) => void; -}; - -function EmojiPack({ cord, onSelect }: { cord: string; onSelect: ReactionPickerProps["onSelect"] }) { - const pack = useReplaceableEvent(cord); - if (!pack) return null; - - return ( - <> - - {getPackName(pack)} - - - - {getEmojis(pack).map((emoji) => ( - } - aria-label={emoji.name} - title={emoji.name} - variant="ghost" - size="sm" - onClick={() => onSelect(emoji.name, emoji.url)} - /> - ))} - - - ); -} - -export default function ReactionPicker({ onSelect }: ReactionPickerProps) { - const account = useCurrentAccount(); - const favoritePacks = useFavoriteEmojiPacks(account?.pubkey); - const { quickReactions } = useAppSettings(); - - return ( - - - } aria-label="Like" variant="ghost" size="sm" onClick={() => onSelect("+")} /> - } - aria-label="Dislike" - variant="ghost" - size="sm" - onClick={() => onSelect("-")} - /> - {quickReactions.map((emoji) => ( - {emoji}} - aria-label="Shaka" - variant="ghost" - size="sm" - onClick={() => onSelect(emoji)} - /> - ))} - - {favoritePacks && - getPackCordsFromFavorites(favoritePacks).map((cord) => ( - - ))} - - ); -} diff --git a/src/components/reactions/emoji-picker.tsx b/src/components/reactions/emoji-picker.tsx new file mode 100644 index 000000000..9f5f6e99a --- /dev/null +++ b/src/components/reactions/emoji-picker.tsx @@ -0,0 +1,27 @@ +import { useColorMode } from "@chakra-ui/react"; +import data from "@emoji-mart/data"; +import Picker from "@emoji-mart/react"; + +export type NativeEmoji = { + id: string; + keywords: string[]; + name: string; + native?: string; + src?: string; +}; + +export const defaultCategories = ["people", "nature", "foods", "activity", "places", "objects", "symbols", "flags"]; + +export default function EmojiPicker({ + custom, + categories = defaultCategories, + ...props +}: { + autoFocus?: boolean; + onEmojiSelect?: (emoji: NativeEmoji) => void; + custom?: { id: string; name: string; emojis: any[] }[]; + categories?: string[]; +}) { + const { colorMode } = useColorMode(); + return ; +} diff --git a/src/components/reactions/reaction-icon-button.tsx b/src/components/reactions/reaction-icon-button.tsx new file mode 100644 index 000000000..f1aa95cc3 --- /dev/null +++ b/src/components/reactions/reaction-icon-button.tsx @@ -0,0 +1,92 @@ +import { lazy, Suspense } from "react"; +import { + Flex, + IconButton, + IconButtonProps, + Modal, + ModalContent, + ModalOverlay, + Popover, + PopoverArrow, + PopoverContent, + PopoverTrigger, + Portal, + Spinner, + Text, + useBoolean, +} from "@chakra-ui/react"; +import { Emoji } from "applesauce-core/helpers/emoji"; + +import { AddReactionIcon } from "../icons"; +import { useBreakpointValue } from "../../providers/global/breakpoint-provider"; + +const ReactionPicker = lazy(() => import("./reaction-picker")); + +export default function ReactionIconButton({ + portal = false, + onSelect, + ...props +}: { portal?: boolean; onSelect?: (emoji: string | Emoji) => void } & Omit< + IconButtonProps, + "children" | "aria-label" | "onSelect" +>) { + const useModal = useBreakpointValue({ base: true, md: false }); + const [isOpen, open] = useBoolean(); + + const handleSelect = (emoji: string | Emoji) => { + onSelect?.(emoji); + open.off(); + }; + + const picker = ( + + + Loading emojis... + + } + > + + + ); + + if (useModal) { + return ( + <> + } + aria-label="Add Reaction" + title="Add Reaction" + onClick={open.on} + {...props} + /> + + + + {picker} + + + ); + } else + return ( + + + } aria-label="Add Reaction" title="Add Reaction" {...props} /> + + {portal ? ( + + + + {picker} + + + ) : ( + + + {picker} + + )} + + ); +} diff --git a/src/components/reactions/reaction-picker.tsx b/src/components/reactions/reaction-picker.tsx new file mode 100644 index 000000000..6efaddd45 --- /dev/null +++ b/src/components/reactions/reaction-picker.tsx @@ -0,0 +1,51 @@ +import { useMemo } from "react"; +import { Emoji, getEmojis, getEventUID, getPackName } from "applesauce-core/helpers"; +import { getAddressPointersFromList } from "applesauce-lists/helpers"; + +import EmojiPicker, { defaultCategories, NativeEmoji } from "./emoji-picker"; +import useFavoriteEmojiPacks from "../../hooks/use-favorite-emoji-packs"; +import useReplaceableEvents from "../../hooks/use-replaceable-events"; +import useCurrentAccount from "../../hooks/use-current-account"; + +export default function ReactionPicker({ + autoFocus, + onSelect, +}: { + autoFocus?: boolean; + onSelect?: (emoji: string | Emoji) => void; +}) { + const account = useCurrentAccount(); + const favoritePacks = useFavoriteEmojiPacks(account?.pubkey); + const packs = useReplaceableEvents(favoritePacks ? getAddressPointersFromList(favoritePacks) : []); + const custom = useMemo( + () => + packs.map((pack) => { + const id = getEventUID(pack); + const name = getPackName(pack) || "Unnamed"; + const emojis = getEmojis(pack); + + return { + id, + name, + emojis: emojis.map((e) => ({ + id: e.name, + name: e.name, + keywords: [e.name, e.name.toUpperCase(), e.name.replaceAll("_", "")], + skins: [{ src: e.url }], + })), + }; + }), + [packs], + ); + + const categories = useMemo(() => [...packs.map((p) => getEventUID(p)), ...defaultCategories], [packs]); + + const handleSelect = (emoji: NativeEmoji) => { + if (emoji.src) onSelect?.({ name: emoji.name, url: emoji.src }); + else if (emoji.id === "+1") onSelect?.("+"); + else if (emoji.id === "-1") onSelect?.("-"); + else if (emoji.native) onSelect?.(emoji.native); + }; + + return ; +} diff --git a/src/const.ts b/src/const.ts index 52663b62c..87613ff99 100644 --- a/src/const.ts +++ b/src/const.ts @@ -58,3 +58,5 @@ export const NIP_89_CLIENT_APP: EventFactoryClient = { }; export const SUPPORT_PUBKEY = "713978c3094081b34fcf2f5491733b0c22728cd3b7a6946519d40f5f08598af8"; + +export const TENOR_API_KEY = import.meta.env.VITE_TENOR_API_KEY as string | undefined; diff --git a/src/helpers/app-settings.ts b/src/helpers/app-settings.ts index d3ecdfaed..709bac206 100644 --- a/src/helpers/app-settings.ts +++ b/src/helpers/app-settings.ts @@ -47,10 +47,14 @@ export type AppSettingsV10 = Omit & showPubkeyColor: "none" | "avatar" | "underline"; }; -export type AppSettings = AppSettingsV10; +export type AppSettingsV11 = Omit & { + version: 11; +}; + +export type AppSettings = AppSettingsV11; export const defaultSettings: AppSettings = { - version: 10, + version: 11, // display theme: "default", @@ -75,7 +79,6 @@ export const defaultSettings: AppSettings = { showReactions: true, autoDecryptDMs: false, - quickReactions: ["🤙", "❤️", "🤣", "😍", "🔥"], mediaUploadService: "nostr.build", // lightning diff --git a/src/hooks/use-replaceable-events.ts b/src/hooks/use-replaceable-events.ts index a81ad59d7..8e39abde4 100644 --- a/src/hooks/use-replaceable-events.ts +++ b/src/hooks/use-replaceable-events.ts @@ -1,4 +1,5 @@ import { useEffect, useMemo } from "react"; +import { NostrEvent } from "nostr-tools"; import { useStoreQuery } from "applesauce-react/hooks"; import { ReplaceableSetQuery } from "applesauce-core/queries"; @@ -10,7 +11,7 @@ export default function useReplaceableEvents( coordinates: string[] | CustomAddressPointer[] | undefined, additionalRelays?: Iterable, opts: RequestOptions = {}, -) { +): NostrEvent[] { const readRelays = useReadRelays(additionalRelays); const pointers = useMemo(() => { @@ -39,6 +40,6 @@ export default function useReplaceableEvents( } }, [pointers, readRelays.urls.join("|")]); - const map = useStoreQuery(ReplaceableSetQuery, pointers && [pointers]); - return Array.from(map?.values() ?? []); + const events = useStoreQuery(ReplaceableSetQuery, pointers && [pointers]); + return events ? Object.values(events) : []; } diff --git a/src/providers/global/emoji-provider.tsx b/src/providers/global/emoji-provider.tsx index 410145579..96d959f60 100644 --- a/src/providers/global/emoji-provider.tsx +++ b/src/providers/global/emoji-provider.tsx @@ -1,30 +1,17 @@ import { PropsWithChildren, createContext, useContext } from "react"; -import lib from "emojilib"; +import { Emoji, getEmojis } from "applesauce-core/helpers"; import useReplaceableEvents from "../../hooks/use-replaceable-events"; import useCurrentAccount from "../../hooks/use-current-account"; -import { isEmojiTag } from "../../types/nostr-event"; import useFavoriteEmojiPacks from "../../hooks/use-favorite-emoji-packs"; import { getPackCordsFromFavorites } from "../../helpers/nostr/emoji-packs"; -const defaultEmojis = Object.entries(lib).map(([char, [name, ...keywords]]) => ({ - name, - keywords: [name, ...keywords], - char, -})); - -export type Emoji = { name: string; keywords: string[]; char: string; url?: string }; - const EmojiContext = createContext([]); export function useContextEmojis() { return useContext(EmojiContext); } -export function DefaultEmojiProvider({ children }: PropsWithChildren) { - return {children}; -} - export function UserEmojiProvider({ children, pubkey }: PropsWithChildren & { pubkey?: string }) { const account = useCurrentAccount(); const favoriteList = useFavoriteEmojiPacks(pubkey || account?.pubkey, [], { @@ -33,12 +20,7 @@ export function UserEmojiProvider({ children, pubkey }: PropsWithChildren & { pu }); const favoritePacks = useReplaceableEvents(favoriteList && getPackCordsFromFavorites(favoriteList)); - - const emojis = favoritePacks - .map((event) => - event.tags.filter(isEmojiTag).map((t) => ({ name: t[1], url: t[2], keywords: [t[1]], char: `:${t[1]}:` })), - ) - .flat(); + const emojis = favoritePacks.map((pack) => getEmojis(pack)).flat(); return {children}; } diff --git a/src/providers/global/index.tsx b/src/providers/global/index.tsx index 21f6767fc..bc6431033 100644 --- a/src/providers/global/index.tsx +++ b/src/providers/global/index.tsx @@ -6,7 +6,7 @@ import { SigningProvider } from "./signing-provider"; import buildTheme from "../../theme"; import useAppSettings from "../../hooks/use-app-settings"; import NotificationsProvider from "./notifications-provider"; -import { DefaultEmojiProvider, UserEmojiProvider } from "./emoji-provider"; +import { UserEmojiProvider } from "./emoji-provider"; import BreakpointProvider from "./breakpoint-provider"; import DMTimelineProvider from "./dms-provider"; import PublishProvider from "./publish-provider"; @@ -37,13 +37,11 @@ export const GlobalProviders = ({ children }: { children: React.ReactNode }) => - - - - {children} - - - + + + {children} + + diff --git a/src/services/notifications.ts b/src/services/notifications.ts new file mode 100644 index 000000000..7231c0330 --- /dev/null +++ b/src/services/notifications.ts @@ -0,0 +1,70 @@ +import { getEventPointerFromETag, getEventPointerFromQTag, processTags } from "applesauce-core/helpers"; +import { TimelineQuery } from "applesauce-core/queries"; +import { kinds, NostrEvent } from "nostr-tools"; + +import singleEventService from "./single-event"; +import clientRelaysService from "./client-relays"; +import { combineLatest, filter, from, map, mergeMap, shareReplay, tap } from "rxjs"; +import accountService from "./account"; +import { queryStore } from "./event-store"; +import { TORRENT_COMMENT_KIND } from "../helpers/nostr/torrents"; + +async function handleTextNote(event: NostrEvent) { + // request quotes + const quotes = processTags(event.tags, (t) => (t[0] === "q" ? t : undefined), getEventPointerFromQTag); + for (const pointer of quotes) { + singleEventService.requestEvent(pointer.id, [...clientRelaysService.readRelays.value, ...(pointer.relays ?? [])]); + } + + // request other event pointers + const pointers = processTags( + event.tags, + (t) => (t[0] === "e" || t[0] === "E" ? t : undefined), + getEventPointerFromETag, + ); + for (const pointer of pointers) { + singleEventService.requestEvent(pointer.id, [...clientRelaysService.readRelays.value, ...(pointer.relays ?? [])]); + } +} + +async function handleShare(event: NostrEvent) { + const pointers = processTags(event.tags, (t) => (t[0] === "e" ? t : undefined), getEventPointerFromETag); + for (const pointer of pointers) { + singleEventService.requestEvent(pointer.id, [...clientRelaysService.readRelays.value, ...(pointer.relays ?? [])]); + } +} + +const notifications = combineLatest([accountService.current]).pipe( + mergeMap(([account]) => { + if (account) + return queryStore.createQuery(TimelineQuery, { + "#p": [account.pubkey], + kinds: [ + kinds.ShortTextNote, + kinds.Repost, + kinds.GenericRepost, + kinds.Reaction, + kinds.Zap, + TORRENT_COMMENT_KIND, + kinds.LongFormArticle, + kinds.EncryptedDirectMessage, + 1111, //NIP-22 + ], + }); + else return []; + }), + tap((timeline) => { + // handle loading dependencies of each event + for (const event of timeline) { + switch (event.kind) { + case kinds.ShortTextNote: + handleTextNote(event); + break; + case kinds.Report: + case kinds.GenericRepost: + handleShare(event); + break; + } + } + }), +); diff --git a/src/types/emojilib.d.ts b/src/types/emojilib.d.ts deleted file mode 100644 index 57ececd62..000000000 --- a/src/types/emojilib.d.ts +++ /dev/null @@ -1,4 +0,0 @@ -declare module "emojilib" { - const lib: { [char: string]: string[] }; - export default lib; -} diff --git a/src/views/settings/post/index.tsx b/src/views/settings/post/index.tsx index 33ecdf2ef..eef95f88a 100644 --- a/src/views/settings/post/index.tsx +++ b/src/views/settings/post/index.tsx @@ -1,4 +1,3 @@ -import { useMemo, useState } from "react"; import { Link as RouterLink } from "react-router-dom"; import { Flex, @@ -6,11 +5,6 @@ import { FormLabel, FormHelperText, Input, - Tag, - TagLabel, - TagCloseButton, - useDisclosure, - IconButton, Button, Select, Link, @@ -21,11 +15,8 @@ import { Heading, Switch, } from "@chakra-ui/react"; -import { matchSorter } from "match-sorter"; import { useObservable } from "applesauce-react/hooks"; -import { EditIcon } from "../../../components/icons"; -import { useContextEmojis } from "../../../providers/global/emoji-provider"; import useUsersMediaServers from "../../../hooks/use-user-media-servers"; import useCurrentAccount from "../../../hooks/use-current-account"; import useSettingsForm from "../use-settings-form"; @@ -34,38 +25,10 @@ import localSettings from "../../../services/local-settings"; export default function PostSettings() { const account = useCurrentAccount(); - const { register, setValue, getValues, watch, submit, formState } = useSettingsForm(); - const emojiPicker = useDisclosure(); + const { register, getValues, watch, submit, formState } = useSettingsForm(); const { servers: mediaServers } = useUsersMediaServers(account?.pubkey); - const emojis = useContextEmojis(); - const [emojiSearch, setEmojiSearch] = useState(""); - - watch("quickReactions"); watch("mediaUploadService"); - const filteredEmojis = useMemo(() => { - const values = getValues(); - if (emojiSearch.trim()) { - const noCustom = emojis.filter((e) => e.char && !e.url && !values.quickReactions.includes(e.char)); - return matchSorter(noCustom, emojiSearch.trim(), { keys: ["keywords", "char"] }).slice(0, 10); - } - return []; - }, [emojiSearch, getValues().quickReactions]); - - const addEmoji = (char: string) => { - const values = getValues(); - if (values.quickReactions.includes(char)) return; - setValue("quickReactions", values.quickReactions.concat(char), { shouldTouch: true, shouldDirty: true }); - }; - const removeEmoji = (char: string) => { - const values = getValues(); - if (!values.quickReactions.includes(char)) return; - setValue( - "quickReactions", - values.quickReactions.filter((e) => e !== char), - { shouldTouch: true, shouldDirty: true }, - ); - }; const addClientTag = useObservable(localSettings.addClientTag); @@ -73,50 +36,6 @@ export default function PostSettings() { Post Settings - - - Quick Reactions - - - {getValues().quickReactions.map((char, i) => ( - - {char} - {emojiPicker.isOpen && removeEmoji(char)} />} - - ))} - {!emojiPicker.isOpen && ( - - )} - - {emojiPicker.isOpen && ( - <> - setEmojiSearch(e.target.value)} - my="2" - /> - - {filteredEmojis.map((emoji) => ( - {emoji.char}} - aria-label={`Add ${emoji.name}`} - title={`Add ${emoji.name}`} - variant="outline" - size="sm" - fontSize="lg" - onClick={() => addEmoji(emoji.char)} - /> - ))} - - - )} - Media upload service