diff --git a/package.json b/package.json index ce21269f..135c2b53 100644 --- a/package.json +++ b/package.json @@ -17,7 +17,7 @@ }, "dependencies": { "@headlessui/react": "^1.7.15", - "@nostr-dev-kit/ndk": "^0.7.5", + "@nostr-dev-kit/ndk": "^0.7.6", "@nostr-fetch/adapter-ndk": "^0.11.0", "@radix-ui/react-popover": "^1.0.6", "@radix-ui/react-tooltip": "^1.0.6", @@ -28,7 +28,7 @@ "cheerio": "1.0.0-rc.12", "dayjs": "^1.11.9", "destr": "^1.2.2", - "framer-motion": "^10.12.18", + "framer-motion": "^10.12.20", "get-urls": "^11.0.0", "immer": "^10.0.2", "light-bolt11-decoder": "^3.0.0", @@ -41,7 +41,7 @@ "react-player": "^2.12.0", "react-router-dom": "^6.14.1", "react-string-replace": "^1.1.1", - "react-virtuoso": "^4.3.11", + "react-virtuoso": "^4.4.0", "slate": "^0.94.1", "slate-history": "^0.93.0", "slate-react": "^0.94.2", @@ -56,8 +56,8 @@ "@tauri-apps/cli": "^1.4.0", "@trivago/prettier-plugin-sort-imports": "^4.1.1", "@types/node": "^18.16.19", - "@types/react": "^18.2.14", - "@types/react-dom": "^18.2.6", + "@types/react": "^18.2.15", + "@types/react-dom": "^18.2.7", "@types/youtube-player": "^5.5.7", "@typescript-eslint/eslint-plugin": "^5.62.0", "@typescript-eslint/parser": "^5.62.0", @@ -73,13 +73,13 @@ "eslint-plugin-simple-import-sort": "^10.0.0", "husky": "^8.0.3", "lint-staged": "^13.2.3", - "postcss": "^8.4.25", + "postcss": "^8.4.26", "prettier": "^2.8.8", "prettier-plugin-tailwindcss": "^0.3.0", "prop-types": "^15.8.1", - "tailwindcss": "^3.3.2", + "tailwindcss": "^3.3.3", "typescript": "^4.9.5", - "vite": "^4.4.2", + "vite": "^4.4.4", "vite-plugin-top-level-await": "^1.3.1", "vite-tsconfig-paths": "^4.2.0" } diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 6a2b61fb..e58692e5 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -5,17 +5,17 @@ dependencies: specifier: ^1.7.15 version: 1.7.15(react-dom@18.2.0)(react@18.2.0) '@nostr-dev-kit/ndk': - specifier: ^0.7.5 - version: 0.7.5(typescript@4.9.5) + specifier: ^0.7.6 + version: 0.7.6(typescript@4.9.5) '@nostr-fetch/adapter-ndk': specifier: ^0.11.0 - version: 0.11.0(@nostr-dev-kit/ndk@0.7.5)(nostr-fetch@0.11.0) + version: 0.11.0(@nostr-dev-kit/ndk@0.7.6)(nostr-fetch@0.11.0) '@radix-ui/react-popover': specifier: ^1.0.6 - version: 1.0.6(@types/react-dom@18.2.6)(@types/react@18.2.14)(react-dom@18.2.0)(react@18.2.0) + version: 1.0.6(@types/react-dom@18.2.7)(@types/react@18.2.15)(react-dom@18.2.0)(react@18.2.0) '@radix-ui/react-tooltip': specifier: ^1.0.6 - version: 1.0.6(@types/react-dom@18.2.6)(@types/react@18.2.14)(react-dom@18.2.0)(react@18.2.0) + version: 1.0.6(@types/react-dom@18.2.7)(@types/react@18.2.15)(react-dom@18.2.0)(react@18.2.0) '@tanstack/react-query': specifier: ^4.29.19 version: 4.29.19(react-dom@18.2.0)(react@18.2.0) @@ -38,8 +38,8 @@ dependencies: specifier: ^1.2.2 version: 1.2.2 framer-motion: - specifier: ^10.12.18 - version: 10.12.18(react-dom@18.2.0)(react@18.2.0) + specifier: ^10.12.20 + version: 10.12.20(react-dom@18.2.0)(react@18.2.0) get-urls: specifier: ^11.0.0 version: 11.0.0 @@ -77,8 +77,8 @@ dependencies: specifier: ^1.1.1 version: 1.1.1 react-virtuoso: - specifier: ^4.3.11 - version: 4.3.11(react-dom@18.2.0)(react@18.2.0) + specifier: ^4.4.0 + version: 4.4.0(react-dom@18.2.0)(react@18.2.0) slate: specifier: ^0.94.1 version: 0.94.1 @@ -93,13 +93,13 @@ dependencies: version: 1.13.2 tauri-plugin-autostart-api: specifier: github:tauri-apps/tauri-plugin-autostart#v1 - version: github.com/tauri-apps/tauri-plugin-autostart/f409102d516cdac20bb7dde4300a0e495c61d6f2 + version: github.com/tauri-apps/tauri-plugin-autostart/59c48c642cea6a854bb1f4181972ad0bfbeb0c75 tauri-plugin-sql-api: specifier: github:tauri-apps/tauri-plugin-sql - version: github.com/tauri-apps/tauri-plugin-sql/91195cd53a9599e3c043aee2490c0d5bd7989f18 + version: github.com/tauri-apps/tauri-plugin-sql/f8125e517d9de2a567a2eaa14f7b1b32e456278b tauri-plugin-stronghold-api: specifier: github:tauri-apps/tauri-plugin-stronghold#v1 - version: github.com/tauri-apps/tauri-plugin-stronghold/910f0dcda71336f75e284c84bbabe05ed2491128 + version: github.com/tauri-apps/tauri-plugin-stronghold/a2dbe1f937f2f2a1fd27d5a4a7a87ec7b7d1f5d4 zustand: specifier: ^4.3.9 version: 4.3.9(immer@10.0.2)(react@18.2.0) @@ -107,7 +107,7 @@ dependencies: devDependencies: '@tailwindcss/typography': specifier: ^0.5.9 - version: 0.5.9(tailwindcss@3.3.2) + version: 0.5.9(tailwindcss@3.3.3) '@tauri-apps/cli': specifier: ^1.4.0 version: 1.4.0 @@ -118,11 +118,11 @@ devDependencies: specifier: ^18.16.19 version: 18.16.19 '@types/react': - specifier: ^18.2.14 - version: 18.2.14 + specifier: ^18.2.15 + version: 18.2.15 '@types/react-dom': - specifier: ^18.2.6 - version: 18.2.6 + specifier: ^18.2.7 + version: 18.2.7 '@types/youtube-player': specifier: ^5.5.7 version: 5.5.7 @@ -134,10 +134,10 @@ devDependencies: version: 5.62.0(eslint@8.44.0)(typescript@4.9.5) '@vitejs/plugin-react-swc': specifier: ^3.3.2 - version: 3.3.2(vite@4.4.2) + version: 3.3.2(vite@4.4.4) autoprefixer: specifier: ^10.4.14 - version: 10.4.14(postcss@8.4.25) + version: 10.4.14(postcss@8.4.26) cross-env: specifier: ^7.0.3 version: 7.0.3 @@ -169,8 +169,8 @@ devDependencies: specifier: ^13.2.3 version: 13.2.3 postcss: - specifier: ^8.4.25 - version: 8.4.25 + specifier: ^8.4.26 + version: 8.4.26 prettier: specifier: ^2.8.8 version: 2.8.8 @@ -181,20 +181,20 @@ devDependencies: specifier: ^15.8.1 version: 15.8.1 tailwindcss: - specifier: ^3.3.2 - version: 3.3.2 + specifier: ^3.3.3 + version: 3.3.3 typescript: specifier: ^4.9.5 version: 4.9.5 vite: - specifier: ^4.4.2 - version: 4.4.2(@types/node@18.16.19) + specifier: ^4.4.4 + version: 4.4.4(@types/node@18.16.19) vite-plugin-top-level-await: specifier: ^1.3.1 - version: 1.3.1(vite@4.4.2) + version: 1.3.1(vite@4.4.4) vite-tsconfig-paths: specifier: ^4.2.0 - version: 4.2.0(typescript@4.9.5)(vite@4.4.2) + version: 4.2.0(typescript@4.9.5)(vite@4.4.4) packages: @@ -346,8 +346,8 @@ packages: dev: false optional: true - /@esbuild/android-arm64@0.18.11: - resolution: {integrity: sha512-snieiq75Z1z5LJX9cduSAjUr7vEI1OdlzFPMw0HH5YI7qQHDd3qs+WZoMrWYDsfRJSq36lIA6mfZBkvL46KoIw==} + /@esbuild/android-arm64@0.18.12: + resolution: {integrity: sha512-BMAlczRqC/LUt2P97E4apTBbkvS9JTJnp2DKFbCwpZ8vBvXVbNdqmvzW/OsdtI/+mGr+apkkpqGM8WecLkPgrA==} engines: {node: '>=12'} cpu: [arm64] os: [android] @@ -364,8 +364,8 @@ packages: dev: false optional: true - /@esbuild/android-arm@0.18.11: - resolution: {integrity: sha512-q4qlUf5ucwbUJZXF5tEQ8LF7y0Nk4P58hOsGk3ucY0oCwgQqAnqXVbUuahCddVHfrxmpyewRpiTHwVHIETYu7Q==} + /@esbuild/android-arm@0.18.12: + resolution: {integrity: sha512-LIxaNIQfkFZbTLb4+cX7dozHlAbAshhFE5PKdro0l+FnCpx1GDJaQ2WMcqm+ToXKMt8p8Uojk/MFRuGyz3V5Sw==} engines: {node: '>=12'} cpu: [arm] os: [android] @@ -382,8 +382,8 @@ packages: dev: false optional: true - /@esbuild/android-x64@0.18.11: - resolution: {integrity: sha512-iPuoxQEV34+hTF6FT7om+Qwziv1U519lEOvekXO9zaMMlT9+XneAhKL32DW3H7okrCOBQ44BMihE8dclbZtTuw==} + /@esbuild/android-x64@0.18.12: + resolution: {integrity: sha512-zU5MyluNsykf5cOJ0LZZZjgAHbhPJ1cWfdH1ZXVMXxVMhEV0VZiZXQdwBBVvmvbF28EizeK7obG9fs+fpmS0eQ==} engines: {node: '>=12'} cpu: [x64] os: [android] @@ -400,8 +400,8 @@ packages: dev: false optional: true - /@esbuild/darwin-arm64@0.18.11: - resolution: {integrity: sha512-Gm0QkI3k402OpfMKyQEEMG0RuW2LQsSmI6OeO4El2ojJMoF5NLYb3qMIjvbG/lbMeLOGiW6ooU8xqc+S0fgz2w==} + /@esbuild/darwin-arm64@0.18.12: + resolution: {integrity: sha512-zUZMep7YONnp6954QOOwEBwFX9svlKd3ov6PkxKd53LGTHsp/gy7vHaPGhhjBmEpqXEXShi6dddjIkmd+NgMsA==} engines: {node: '>=12'} cpu: [arm64] os: [darwin] @@ -418,8 +418,8 @@ packages: dev: false optional: true - /@esbuild/darwin-x64@0.18.11: - resolution: {integrity: sha512-N15Vzy0YNHu6cfyDOjiyfJlRJCB/ngKOAvoBf1qybG3eOq0SL2Lutzz9N7DYUbb7Q23XtHPn6lMDF6uWbGv9Fw==} + /@esbuild/darwin-x64@0.18.12: + resolution: {integrity: sha512-ohqLPc7i67yunArPj1+/FeeJ7AgwAjHqKZ512ADk3WsE3FHU9l+m5aa7NdxXr0HmN1bjDlUslBjWNbFlD9y12Q==} engines: {node: '>=12'} cpu: [x64] os: [darwin] @@ -436,8 +436,8 @@ packages: dev: false optional: true - /@esbuild/freebsd-arm64@0.18.11: - resolution: {integrity: sha512-atEyuq6a3omEY5qAh5jIORWk8MzFnCpSTUruBgeyN9jZq1K/QI9uke0ATi3MHu4L8c59CnIi4+1jDKMuqmR71A==} + /@esbuild/freebsd-arm64@0.18.12: + resolution: {integrity: sha512-GIIHtQXqgeOOqdG16a/A9N28GpkvjJnjYMhOnXVbn3EDJcoItdR58v/pGN31CHjyXDc8uCcRnFWmqaJt24AYJg==} engines: {node: '>=12'} cpu: [arm64] os: [freebsd] @@ -454,8 +454,8 @@ packages: dev: false optional: true - /@esbuild/freebsd-x64@0.18.11: - resolution: {integrity: sha512-XtuPrEfBj/YYYnAAB7KcorzzpGTvOr/dTtXPGesRfmflqhA4LMF0Gh/n5+a9JBzPuJ+CGk17CA++Hmr1F/gI0Q==} + /@esbuild/freebsd-x64@0.18.12: + resolution: {integrity: sha512-zK0b9a1/0wZY+6FdOS3BpZcPc1kcx2G5yxxfEJtEUzVxI6n/FrC2Phsxj/YblPuBchhBZ/1wwn7AyEBUyNSa6g==} engines: {node: '>=12'} cpu: [x64] os: [freebsd] @@ -472,8 +472,8 @@ packages: dev: false optional: true - /@esbuild/linux-arm64@0.18.11: - resolution: {integrity: sha512-c6Vh2WS9VFKxKZ2TvJdA7gdy0n6eSy+yunBvv4aqNCEhSWVor1TU43wNRp2YLO9Vng2G+W94aRz+ILDSwAiYog==} + /@esbuild/linux-arm64@0.18.12: + resolution: {integrity: sha512-JKgG8Q/LL/9sw/iHHxQyVMoQYu3rU3+a5Z87DxC+wAu3engz+EmctIrV+FGOgI6gWG1z1+5nDDbXiRMGQZXqiw==} engines: {node: '>=12'} cpu: [arm64] os: [linux] @@ -490,8 +490,8 @@ packages: dev: false optional: true - /@esbuild/linux-arm@0.18.11: - resolution: {integrity: sha512-Idipz+Taso/toi2ETugShXjQ3S59b6m62KmLHkJlSq/cBejixmIydqrtM2XTvNCywFl3VC7SreSf6NV0i6sRyg==} + /@esbuild/linux-arm@0.18.12: + resolution: {integrity: sha512-y75OijvrBE/1XRrXq1jtrJfG26eHeMoqLJ2dwQNwviwTuTtHGCojsDO6BJNF8gU+3jTn1KzJEMETytwsFSvc+Q==} engines: {node: '>=12'} cpu: [arm] os: [linux] @@ -508,8 +508,8 @@ packages: dev: false optional: true - /@esbuild/linux-ia32@0.18.11: - resolution: {integrity: sha512-S3hkIF6KUqRh9n1Q0dSyYcWmcVa9Cg+mSoZEfFuzoYXXsk6196qndrM+ZiHNwpZKi3XOXpShZZ+9dfN5ykqjjw==} + /@esbuild/linux-ia32@0.18.12: + resolution: {integrity: sha512-yoRIAqc0B4lDIAAEFEIu9ttTRFV84iuAl0KNCN6MhKLxNPfzwCBvEMgwco2f71GxmpBcTtn7KdErueZaM2rEvw==} engines: {node: '>=12'} cpu: [ia32] os: [linux] @@ -526,8 +526,8 @@ packages: dev: false optional: true - /@esbuild/linux-loong64@0.18.11: - resolution: {integrity: sha512-MRESANOoObQINBA+RMZW+Z0TJWpibtE7cPFnahzyQHDCA9X9LOmGh68MVimZlM9J8n5Ia8lU773te6O3ILW8kw==} + /@esbuild/linux-loong64@0.18.12: + resolution: {integrity: sha512-qYgt3dHPVvf/MgbIBpJ4Sup/yb9DAopZ3a2JgMpNKIHUpOdnJ2eHBo/aQdnd8dJ21X/+sS58wxHtA9lEazYtXQ==} engines: {node: '>=12'} cpu: [loong64] os: [linux] @@ -544,8 +544,8 @@ packages: dev: false optional: true - /@esbuild/linux-mips64el@0.18.11: - resolution: {integrity: sha512-qVyPIZrXNMOLYegtD1u8EBccCrBVshxMrn5MkuFc3mEVsw7CCQHaqZ4jm9hbn4gWY95XFnb7i4SsT3eflxZsUg==} + /@esbuild/linux-mips64el@0.18.12: + resolution: {integrity: sha512-wHphlMLK4ufNOONqukELfVIbnGQJrHJ/mxZMMrP2jYrPgCRZhOtf0kC4yAXBwnfmULimV1qt5UJJOw4Kh13Yfg==} engines: {node: '>=12'} cpu: [mips64el] os: [linux] @@ -562,8 +562,8 @@ packages: dev: false optional: true - /@esbuild/linux-ppc64@0.18.11: - resolution: {integrity: sha512-T3yd8vJXfPirZaUOoA9D2ZjxZX4Gr3QuC3GztBJA6PklLotc/7sXTOuuRkhE9W/5JvJP/K9b99ayPNAD+R+4qQ==} + /@esbuild/linux-ppc64@0.18.12: + resolution: {integrity: sha512-TeN//1Ft20ZZW41+zDSdOI/Os1bEq5dbvBvYkberB7PHABbRcsteeoNVZFlI0YLpGdlBqohEpjrn06kv8heCJg==} engines: {node: '>=12'} cpu: [ppc64] os: [linux] @@ -580,8 +580,8 @@ packages: dev: false optional: true - /@esbuild/linux-riscv64@0.18.11: - resolution: {integrity: sha512-evUoRPWiwuFk++snjH9e2cAjF5VVSTj+Dnf+rkO/Q20tRqv+644279TZlPK8nUGunjPAtQRCj1jQkDAvL6rm2w==} + /@esbuild/linux-riscv64@0.18.12: + resolution: {integrity: sha512-AgUebVS4DoAblBgiB2ACQ/8l4eGE5aWBb8ZXtkXHiET9mbj7GuWt3OnsIW/zX+XHJt2RYJZctbQ2S/mDjbp0UA==} engines: {node: '>=12'} cpu: [riscv64] os: [linux] @@ -598,8 +598,8 @@ packages: dev: false optional: true - /@esbuild/linux-s390x@0.18.11: - resolution: {integrity: sha512-/SlRJ15XR6i93gRWquRxYCfhTeC5PdqEapKoLbX63PLCmAkXZHY2uQm2l9bN0oPHBsOw2IswRZctMYS0MijFcg==} + /@esbuild/linux-s390x@0.18.12: + resolution: {integrity: sha512-dJ3Rb3Ei2u/ysSXd6pzleGtfDdc2MuzKt8qc6ls8vreP1G3B7HInX3i7gXS4BGeVd24pp0yqyS7bJ5NHaI9ing==} engines: {node: '>=12'} cpu: [s390x] os: [linux] @@ -616,8 +616,8 @@ packages: dev: false optional: true - /@esbuild/linux-x64@0.18.11: - resolution: {integrity: sha512-xcncej+wF16WEmIwPtCHi0qmx1FweBqgsRtEL1mSHLFR6/mb3GEZfLQnx+pUDfRDEM4DQF8dpXIW7eDOZl1IbA==} + /@esbuild/linux-x64@0.18.12: + resolution: {integrity: sha512-OrNJMGQbPaVyHHcDF8ybNSwu7TDOfX8NGpXCbetwOSP6txOJiWlgQnRymfC9ocR1S0Y5PW0Wb1mV6pUddqmvmQ==} engines: {node: '>=12'} cpu: [x64] os: [linux] @@ -634,8 +634,8 @@ packages: dev: false optional: true - /@esbuild/netbsd-x64@0.18.11: - resolution: {integrity: sha512-aSjMHj/F7BuS1CptSXNg6S3M4F3bLp5wfFPIJM+Km2NfIVfFKhdmfHF9frhiCLIGVzDziggqWll0B+9AUbud/Q==} + /@esbuild/netbsd-x64@0.18.12: + resolution: {integrity: sha512-55FzVCAiwE9FK8wWeCRuvjazNRJ1QqLCYGZVB6E8RuQuTeStSwotpSW4xoRGwp3a1wUsaVCdYcj5LGCASVJmMg==} engines: {node: '>=12'} cpu: [x64] os: [netbsd] @@ -652,8 +652,8 @@ packages: dev: false optional: true - /@esbuild/openbsd-x64@0.18.11: - resolution: {integrity: sha512-tNBq+6XIBZtht0xJGv7IBB5XaSyvYPCm1PxJ33zLQONdZoLVM0bgGqUrXnJyiEguD9LU4AHiu+GCXy/Hm9LsdQ==} + /@esbuild/openbsd-x64@0.18.12: + resolution: {integrity: sha512-qnluf8rfb6Y5Lw2tirfK2quZOBbVqmwxut7GPCIJsM8lc4AEUj9L8y0YPdLaPK0TECt4IdyBdBD/KRFKorlK3g==} engines: {node: '>=12'} cpu: [x64] os: [openbsd] @@ -670,8 +670,8 @@ packages: dev: false optional: true - /@esbuild/sunos-x64@0.18.11: - resolution: {integrity: sha512-kxfbDOrH4dHuAAOhr7D7EqaYf+W45LsAOOhAet99EyuxxQmjbk8M9N4ezHcEiCYPaiW8Dj3K26Z2V17Gt6p3ng==} + /@esbuild/sunos-x64@0.18.12: + resolution: {integrity: sha512-+RkKpVQR7bICjTOPUpkTBTaJ4TFqQBX5Ywyd/HSdDkQGn65VPkTsR/pL4AMvuMWy+wnXgIl4EY6q4mVpJal8Kg==} engines: {node: '>=12'} cpu: [x64] os: [sunos] @@ -688,8 +688,8 @@ packages: dev: false optional: true - /@esbuild/win32-arm64@0.18.11: - resolution: {integrity: sha512-Sh0dDRyk1Xi348idbal7lZyfSkjhJsdFeuC13zqdipsvMetlGiFQNdO+Yfp6f6B4FbyQm7qsk16yaZk25LChzg==} + /@esbuild/win32-arm64@0.18.12: + resolution: {integrity: sha512-GNHuciv0mFM7ouzsU0+AwY+7eV4Mgo5WnbhfDCQGtpvOtD1vbOiRjPYG6dhmMoFyBjj+pNqQu2X+7DKn0KQ/Gw==} engines: {node: '>=12'} cpu: [arm64] os: [win32] @@ -706,8 +706,8 @@ packages: dev: false optional: true - /@esbuild/win32-ia32@0.18.11: - resolution: {integrity: sha512-o9JUIKF1j0rqJTFbIoF4bXj6rvrTZYOrfRcGyL0Vm5uJ/j5CkBD/51tpdxe9lXEDouhRgdr/BYzUrDOvrWwJpg==} + /@esbuild/win32-ia32@0.18.12: + resolution: {integrity: sha512-kR8cezhYipbbypGkaqCTWIeu4zID17gamC8YTPXYtcN3E5BhhtTnwKBn9I0PJur/T6UVwIEGYzkffNL0lFvxEw==} engines: {node: '>=12'} cpu: [ia32] os: [win32] @@ -724,8 +724,8 @@ packages: dev: false optional: true - /@esbuild/win32-x64@0.18.11: - resolution: {integrity: sha512-rQI4cjLHd2hGsM1LqgDI7oOCYbQ6IBOVsX9ejuRMSze0GqXUG2ekwiKkiBU1pRGSeCqFFHxTrcEydB2Hyoz9CA==} + /@esbuild/win32-x64@0.18.12: + resolution: {integrity: sha512-O0UYQVkvfM/jO8a4OwoV0mAKSJw+mjWTAd1MJd/1FCX6uiMdLmMRPK/w6e9OQ0ob2WGxzIm9va/KG0Ja4zIOgg==} engines: {node: '>=12'} cpu: [x64] os: [win32] @@ -770,8 +770,8 @@ packages: resolution: {integrity: sha512-Bu+AMaXNjrpjh41znzHqaz3r2Nr8hHuHZT6V2LBKMhyMl0FgKA62PNYbqnfgmzOhoWZj70Zecisbo4H1rotP5g==} dev: false - /@floating-ui/dom@1.4.4: - resolution: {integrity: sha512-21hhDEPOiWkGp0Ys4Wi6Neriah7HweToKra626CIK712B5m9qkdz54OP9gVldUg+URnBTpv/j/bi/skmGdstXQ==} + /@floating-ui/dom@1.4.5: + resolution: {integrity: sha512-96KnRWkRnuBSSFbj0sFGwwOUd8EkiecINVl0O9wiZlZ64EkpyAOG3Xc2vKKNJmru0Z7RqWNymA+6b8OZqjgyyw==} dependencies: '@floating-ui/core': 1.3.1 dev: false @@ -782,7 +782,7 @@ packages: react: '>=16.8.0' react-dom: '>=16.8.0' dependencies: - '@floating-ui/dom': 1.4.4 + '@floating-ui/dom': 1.4.5 react: 18.2.0 react-dom: 18.2.0(react@18.2.0) dev: false @@ -914,8 +914,8 @@ packages: '@nodelib/fs.scandir': 2.1.5 fastq: 1.15.0 - /@nostr-dev-kit/ndk@0.7.5(typescript@4.9.5): - resolution: {integrity: sha512-P3hcvWq0jMlTBiasMtcqP2FclGwVks1LIwhRhyJb5XesLEYvnWh1wBWnx3+UQCj9uuu7fBMkmrY7AAi3CTuaXA==} + /@nostr-dev-kit/ndk@0.7.6(typescript@4.9.5): + resolution: {integrity: sha512-eZph117ErfsIrLeap8OD0flwesPPPp6p14z30Ci+3DnQWVqpuB84BefxvgRPQUfKxgV49Yl77NnrtE2sF4yuSA==} dependencies: '@noble/hashes': 1.3.1 '@noble/secp256k1': 2.0.0 @@ -943,13 +943,13 @@ packages: - typescript dev: false - /@nostr-fetch/adapter-ndk@0.11.0(@nostr-dev-kit/ndk@0.7.5)(nostr-fetch@0.11.0): + /@nostr-fetch/adapter-ndk@0.11.0(@nostr-dev-kit/ndk@0.7.6)(nostr-fetch@0.11.0): resolution: {integrity: sha512-Otl7SEzm9ecqyHB10bpYXBu1qpqJEnipp7dZ4qcA9LeJAtM38fnYKUD34HX0JXA9EDjtc6VS5UNZe544xC9GCg==} peerDependencies: '@nostr-dev-kit/ndk': ^0.5.0 nostr-fetch: ^0.11.0 dependencies: - '@nostr-dev-kit/ndk': 0.7.5(typescript@4.9.5) + '@nostr-dev-kit/ndk': 0.7.6(typescript@4.9.5) '@nostr-fetch/kernel': 0.11.0 nostr-fetch: 0.11.0 dev: false @@ -981,7 +981,7 @@ packages: '@babel/runtime': 7.22.6 dev: false - /@radix-ui/react-arrow@1.0.3(@types/react-dom@18.2.6)(@types/react@18.2.14)(react-dom@18.2.0)(react@18.2.0): + /@radix-ui/react-arrow@1.0.3(@types/react-dom@18.2.7)(@types/react@18.2.15)(react-dom@18.2.0)(react@18.2.0): resolution: {integrity: sha512-wSP+pHsB/jQRaL6voubsQ/ZlrGBHHrOjmBnr19hxYgtS0WvAFwZhK2WP/YY5yF9uKECCEEDGxuLxq1NBK51wFA==} peerDependencies: '@types/react': '*' @@ -995,14 +995,14 @@ packages: optional: true dependencies: '@babel/runtime': 7.22.6 - '@radix-ui/react-primitive': 1.0.3(@types/react-dom@18.2.6)(@types/react@18.2.14)(react-dom@18.2.0)(react@18.2.0) - '@types/react': 18.2.14 - '@types/react-dom': 18.2.6 + '@radix-ui/react-primitive': 1.0.3(@types/react-dom@18.2.7)(@types/react@18.2.15)(react-dom@18.2.0)(react@18.2.0) + '@types/react': 18.2.15 + '@types/react-dom': 18.2.7 react: 18.2.0 react-dom: 18.2.0(react@18.2.0) dev: false - /@radix-ui/react-compose-refs@1.0.1(@types/react@18.2.14)(react@18.2.0): + /@radix-ui/react-compose-refs@1.0.1(@types/react@18.2.15)(react@18.2.0): resolution: {integrity: sha512-fDSBgd44FKHa1FRMU59qBMPFcl2PZE+2nmqunj+BWFyYYjnhIDWL2ItDs3rrbJDQOtzt5nIebLCQc4QRfz6LJw==} peerDependencies: '@types/react': '*' @@ -1012,11 +1012,11 @@ packages: optional: true dependencies: '@babel/runtime': 7.22.6 - '@types/react': 18.2.14 + '@types/react': 18.2.15 react: 18.2.0 dev: false - /@radix-ui/react-context@1.0.1(@types/react@18.2.14)(react@18.2.0): + /@radix-ui/react-context@1.0.1(@types/react@18.2.15)(react@18.2.0): resolution: {integrity: sha512-ebbrdFoYTcuZ0v4wG5tedGnp9tzcV8awzsxYph7gXUyvnNLuTIcCk1q17JEbnVhXAKG9oX3KtchwiMIAYp9NLg==} peerDependencies: '@types/react': '*' @@ -1026,11 +1026,11 @@ packages: optional: true dependencies: '@babel/runtime': 7.22.6 - '@types/react': 18.2.14 + '@types/react': 18.2.15 react: 18.2.0 dev: false - /@radix-ui/react-dismissable-layer@1.0.4(@types/react-dom@18.2.6)(@types/react@18.2.14)(react-dom@18.2.0)(react@18.2.0): + /@radix-ui/react-dismissable-layer@1.0.4(@types/react-dom@18.2.7)(@types/react@18.2.15)(react-dom@18.2.0)(react@18.2.0): resolution: {integrity: sha512-7UpBa/RKMoHJYjie1gkF1DlK8l1fdU/VKDpoS3rCCo8YBJR294GwcEHyxHw72yvphJ7ld0AXEcSLAzY2F/WyCg==} peerDependencies: '@types/react': '*' @@ -1045,17 +1045,17 @@ packages: dependencies: '@babel/runtime': 7.22.6 '@radix-ui/primitive': 1.0.1 - '@radix-ui/react-compose-refs': 1.0.1(@types/react@18.2.14)(react@18.2.0) - '@radix-ui/react-primitive': 1.0.3(@types/react-dom@18.2.6)(@types/react@18.2.14)(react-dom@18.2.0)(react@18.2.0) - '@radix-ui/react-use-callback-ref': 1.0.1(@types/react@18.2.14)(react@18.2.0) - '@radix-ui/react-use-escape-keydown': 1.0.3(@types/react@18.2.14)(react@18.2.0) - '@types/react': 18.2.14 - '@types/react-dom': 18.2.6 + '@radix-ui/react-compose-refs': 1.0.1(@types/react@18.2.15)(react@18.2.0) + '@radix-ui/react-primitive': 1.0.3(@types/react-dom@18.2.7)(@types/react@18.2.15)(react-dom@18.2.0)(react@18.2.0) + '@radix-ui/react-use-callback-ref': 1.0.1(@types/react@18.2.15)(react@18.2.0) + '@radix-ui/react-use-escape-keydown': 1.0.3(@types/react@18.2.15)(react@18.2.0) + '@types/react': 18.2.15 + '@types/react-dom': 18.2.7 react: 18.2.0 react-dom: 18.2.0(react@18.2.0) dev: false - /@radix-ui/react-focus-guards@1.0.1(@types/react@18.2.14)(react@18.2.0): + /@radix-ui/react-focus-guards@1.0.1(@types/react@18.2.15)(react@18.2.0): resolution: {integrity: sha512-Rect2dWbQ8waGzhMavsIbmSVCgYxkXLxxR3ZvCX79JOglzdEy4JXMb98lq4hPxUbLr77nP0UOGf4rcMU+s1pUA==} peerDependencies: '@types/react': '*' @@ -1065,11 +1065,11 @@ packages: optional: true dependencies: '@babel/runtime': 7.22.6 - '@types/react': 18.2.14 + '@types/react': 18.2.15 react: 18.2.0 dev: false - /@radix-ui/react-focus-scope@1.0.3(@types/react-dom@18.2.6)(@types/react@18.2.14)(react-dom@18.2.0)(react@18.2.0): + /@radix-ui/react-focus-scope@1.0.3(@types/react-dom@18.2.7)(@types/react@18.2.15)(react-dom@18.2.0)(react@18.2.0): resolution: {integrity: sha512-upXdPfqI4islj2CslyfUBNlaJCPybbqRHAi1KER7Isel9Q2AtSJ0zRBZv8mWQiFXD2nyAJ4BhC3yXgZ6kMBSrQ==} peerDependencies: '@types/react': '*' @@ -1083,16 +1083,16 @@ packages: optional: true dependencies: '@babel/runtime': 7.22.6 - '@radix-ui/react-compose-refs': 1.0.1(@types/react@18.2.14)(react@18.2.0) - '@radix-ui/react-primitive': 1.0.3(@types/react-dom@18.2.6)(@types/react@18.2.14)(react-dom@18.2.0)(react@18.2.0) - '@radix-ui/react-use-callback-ref': 1.0.1(@types/react@18.2.14)(react@18.2.0) - '@types/react': 18.2.14 - '@types/react-dom': 18.2.6 + '@radix-ui/react-compose-refs': 1.0.1(@types/react@18.2.15)(react@18.2.0) + '@radix-ui/react-primitive': 1.0.3(@types/react-dom@18.2.7)(@types/react@18.2.15)(react-dom@18.2.0)(react@18.2.0) + '@radix-ui/react-use-callback-ref': 1.0.1(@types/react@18.2.15)(react@18.2.0) + '@types/react': 18.2.15 + '@types/react-dom': 18.2.7 react: 18.2.0 react-dom: 18.2.0(react@18.2.0) dev: false - /@radix-ui/react-id@1.0.1(@types/react@18.2.14)(react@18.2.0): + /@radix-ui/react-id@1.0.1(@types/react@18.2.15)(react@18.2.0): resolution: {integrity: sha512-tI7sT/kqYp8p96yGWY1OAnLHrqDgzHefRBKQ2YAkBS5ja7QLcZ9Z/uY7bEjPUatf8RomoXM8/1sMj1IJaE5UzQ==} peerDependencies: '@types/react': '*' @@ -1102,12 +1102,12 @@ packages: optional: true dependencies: '@babel/runtime': 7.22.6 - '@radix-ui/react-use-layout-effect': 1.0.1(@types/react@18.2.14)(react@18.2.0) - '@types/react': 18.2.14 + '@radix-ui/react-use-layout-effect': 1.0.1(@types/react@18.2.15)(react@18.2.0) + '@types/react': 18.2.15 react: 18.2.0 dev: false - /@radix-ui/react-popover@1.0.6(@types/react-dom@18.2.6)(@types/react@18.2.14)(react-dom@18.2.0)(react@18.2.0): + /@radix-ui/react-popover@1.0.6(@types/react-dom@18.2.7)(@types/react@18.2.15)(react-dom@18.2.0)(react@18.2.0): resolution: {integrity: sha512-cZ4defGpkZ0qTRtlIBzJLSzL6ht7ofhhW4i1+pkemjV1IKXm0wgCRnee154qlV6r9Ttunmh2TNZhMfV2bavUyA==} peerDependencies: '@types/react': '*' @@ -1122,27 +1122,27 @@ packages: dependencies: '@babel/runtime': 7.22.6 '@radix-ui/primitive': 1.0.1 - '@radix-ui/react-compose-refs': 1.0.1(@types/react@18.2.14)(react@18.2.0) - '@radix-ui/react-context': 1.0.1(@types/react@18.2.14)(react@18.2.0) - '@radix-ui/react-dismissable-layer': 1.0.4(@types/react-dom@18.2.6)(@types/react@18.2.14)(react-dom@18.2.0)(react@18.2.0) - '@radix-ui/react-focus-guards': 1.0.1(@types/react@18.2.14)(react@18.2.0) - '@radix-ui/react-focus-scope': 1.0.3(@types/react-dom@18.2.6)(@types/react@18.2.14)(react-dom@18.2.0)(react@18.2.0) - '@radix-ui/react-id': 1.0.1(@types/react@18.2.14)(react@18.2.0) - '@radix-ui/react-popper': 1.1.2(@types/react-dom@18.2.6)(@types/react@18.2.14)(react-dom@18.2.0)(react@18.2.0) - '@radix-ui/react-portal': 1.0.3(@types/react-dom@18.2.6)(@types/react@18.2.14)(react-dom@18.2.0)(react@18.2.0) - '@radix-ui/react-presence': 1.0.1(@types/react-dom@18.2.6)(@types/react@18.2.14)(react-dom@18.2.0)(react@18.2.0) - '@radix-ui/react-primitive': 1.0.3(@types/react-dom@18.2.6)(@types/react@18.2.14)(react-dom@18.2.0)(react@18.2.0) - '@radix-ui/react-slot': 1.0.2(@types/react@18.2.14)(react@18.2.0) - '@radix-ui/react-use-controllable-state': 1.0.1(@types/react@18.2.14)(react@18.2.0) - '@types/react': 18.2.14 - '@types/react-dom': 18.2.6 + '@radix-ui/react-compose-refs': 1.0.1(@types/react@18.2.15)(react@18.2.0) + '@radix-ui/react-context': 1.0.1(@types/react@18.2.15)(react@18.2.0) + '@radix-ui/react-dismissable-layer': 1.0.4(@types/react-dom@18.2.7)(@types/react@18.2.15)(react-dom@18.2.0)(react@18.2.0) + '@radix-ui/react-focus-guards': 1.0.1(@types/react@18.2.15)(react@18.2.0) + '@radix-ui/react-focus-scope': 1.0.3(@types/react-dom@18.2.7)(@types/react@18.2.15)(react-dom@18.2.0)(react@18.2.0) + '@radix-ui/react-id': 1.0.1(@types/react@18.2.15)(react@18.2.0) + '@radix-ui/react-popper': 1.1.2(@types/react-dom@18.2.7)(@types/react@18.2.15)(react-dom@18.2.0)(react@18.2.0) + '@radix-ui/react-portal': 1.0.3(@types/react-dom@18.2.7)(@types/react@18.2.15)(react-dom@18.2.0)(react@18.2.0) + '@radix-ui/react-presence': 1.0.1(@types/react-dom@18.2.7)(@types/react@18.2.15)(react-dom@18.2.0)(react@18.2.0) + '@radix-ui/react-primitive': 1.0.3(@types/react-dom@18.2.7)(@types/react@18.2.15)(react-dom@18.2.0)(react@18.2.0) + '@radix-ui/react-slot': 1.0.2(@types/react@18.2.15)(react@18.2.0) + '@radix-ui/react-use-controllable-state': 1.0.1(@types/react@18.2.15)(react@18.2.0) + '@types/react': 18.2.15 + '@types/react-dom': 18.2.7 aria-hidden: 1.2.3 react: 18.2.0 react-dom: 18.2.0(react@18.2.0) - react-remove-scroll: 2.5.5(@types/react@18.2.14)(react@18.2.0) + react-remove-scroll: 2.5.5(@types/react@18.2.15)(react@18.2.0) dev: false - /@radix-ui/react-popper@1.1.2(@types/react-dom@18.2.6)(@types/react@18.2.14)(react-dom@18.2.0)(react@18.2.0): + /@radix-ui/react-popper@1.1.2(@types/react-dom@18.2.7)(@types/react@18.2.15)(react-dom@18.2.0)(react@18.2.0): resolution: {integrity: sha512-1CnGGfFi/bbqtJZZ0P/NQY20xdG3E0LALJaLUEoKwPLwl6PPPfbeiCqMVQnhoFRAxjJj4RpBRJzDmUgsex2tSg==} peerDependencies: '@types/react': '*' @@ -1157,22 +1157,22 @@ packages: dependencies: '@babel/runtime': 7.22.6 '@floating-ui/react-dom': 2.0.1(react-dom@18.2.0)(react@18.2.0) - '@radix-ui/react-arrow': 1.0.3(@types/react-dom@18.2.6)(@types/react@18.2.14)(react-dom@18.2.0)(react@18.2.0) - '@radix-ui/react-compose-refs': 1.0.1(@types/react@18.2.14)(react@18.2.0) - '@radix-ui/react-context': 1.0.1(@types/react@18.2.14)(react@18.2.0) - '@radix-ui/react-primitive': 1.0.3(@types/react-dom@18.2.6)(@types/react@18.2.14)(react-dom@18.2.0)(react@18.2.0) - '@radix-ui/react-use-callback-ref': 1.0.1(@types/react@18.2.14)(react@18.2.0) - '@radix-ui/react-use-layout-effect': 1.0.1(@types/react@18.2.14)(react@18.2.0) - '@radix-ui/react-use-rect': 1.0.1(@types/react@18.2.14)(react@18.2.0) - '@radix-ui/react-use-size': 1.0.1(@types/react@18.2.14)(react@18.2.0) + '@radix-ui/react-arrow': 1.0.3(@types/react-dom@18.2.7)(@types/react@18.2.15)(react-dom@18.2.0)(react@18.2.0) + '@radix-ui/react-compose-refs': 1.0.1(@types/react@18.2.15)(react@18.2.0) + '@radix-ui/react-context': 1.0.1(@types/react@18.2.15)(react@18.2.0) + '@radix-ui/react-primitive': 1.0.3(@types/react-dom@18.2.7)(@types/react@18.2.15)(react-dom@18.2.0)(react@18.2.0) + '@radix-ui/react-use-callback-ref': 1.0.1(@types/react@18.2.15)(react@18.2.0) + '@radix-ui/react-use-layout-effect': 1.0.1(@types/react@18.2.15)(react@18.2.0) + '@radix-ui/react-use-rect': 1.0.1(@types/react@18.2.15)(react@18.2.0) + '@radix-ui/react-use-size': 1.0.1(@types/react@18.2.15)(react@18.2.0) '@radix-ui/rect': 1.0.1 - '@types/react': 18.2.14 - '@types/react-dom': 18.2.6 + '@types/react': 18.2.15 + '@types/react-dom': 18.2.7 react: 18.2.0 react-dom: 18.2.0(react@18.2.0) dev: false - /@radix-ui/react-portal@1.0.3(@types/react-dom@18.2.6)(@types/react@18.2.14)(react-dom@18.2.0)(react@18.2.0): + /@radix-ui/react-portal@1.0.3(@types/react-dom@18.2.7)(@types/react@18.2.15)(react-dom@18.2.0)(react@18.2.0): resolution: {integrity: sha512-xLYZeHrWoPmA5mEKEfZZevoVRK/Q43GfzRXkWV6qawIWWK8t6ifIiLQdd7rmQ4Vk1bmI21XhqF9BN3jWf+phpA==} peerDependencies: '@types/react': '*' @@ -1186,14 +1186,14 @@ packages: optional: true dependencies: '@babel/runtime': 7.22.6 - '@radix-ui/react-primitive': 1.0.3(@types/react-dom@18.2.6)(@types/react@18.2.14)(react-dom@18.2.0)(react@18.2.0) - '@types/react': 18.2.14 - '@types/react-dom': 18.2.6 + '@radix-ui/react-primitive': 1.0.3(@types/react-dom@18.2.7)(@types/react@18.2.15)(react-dom@18.2.0)(react@18.2.0) + '@types/react': 18.2.15 + '@types/react-dom': 18.2.7 react: 18.2.0 react-dom: 18.2.0(react@18.2.0) dev: false - /@radix-ui/react-presence@1.0.1(@types/react-dom@18.2.6)(@types/react@18.2.14)(react-dom@18.2.0)(react@18.2.0): + /@radix-ui/react-presence@1.0.1(@types/react-dom@18.2.7)(@types/react@18.2.15)(react-dom@18.2.0)(react@18.2.0): resolution: {integrity: sha512-UXLW4UAbIY5ZjcvzjfRFo5gxva8QirC9hF7wRE4U5gz+TP0DbRk+//qyuAQ1McDxBt1xNMBTaciFGvEmJvAZCg==} peerDependencies: '@types/react': '*' @@ -1207,15 +1207,15 @@ packages: optional: true dependencies: '@babel/runtime': 7.22.6 - '@radix-ui/react-compose-refs': 1.0.1(@types/react@18.2.14)(react@18.2.0) - '@radix-ui/react-use-layout-effect': 1.0.1(@types/react@18.2.14)(react@18.2.0) - '@types/react': 18.2.14 - '@types/react-dom': 18.2.6 + '@radix-ui/react-compose-refs': 1.0.1(@types/react@18.2.15)(react@18.2.0) + '@radix-ui/react-use-layout-effect': 1.0.1(@types/react@18.2.15)(react@18.2.0) + '@types/react': 18.2.15 + '@types/react-dom': 18.2.7 react: 18.2.0 react-dom: 18.2.0(react@18.2.0) dev: false - /@radix-ui/react-primitive@1.0.3(@types/react-dom@18.2.6)(@types/react@18.2.14)(react-dom@18.2.0)(react@18.2.0): + /@radix-ui/react-primitive@1.0.3(@types/react-dom@18.2.7)(@types/react@18.2.15)(react-dom@18.2.0)(react@18.2.0): resolution: {integrity: sha512-yi58uVyoAcK/Nq1inRY56ZSjKypBNKTa/1mcL8qdl6oJeEaDbOldlzrGn7P6Q3Id5d+SYNGc5AJgc4vGhjs5+g==} peerDependencies: '@types/react': '*' @@ -1229,14 +1229,14 @@ packages: optional: true dependencies: '@babel/runtime': 7.22.6 - '@radix-ui/react-slot': 1.0.2(@types/react@18.2.14)(react@18.2.0) - '@types/react': 18.2.14 - '@types/react-dom': 18.2.6 + '@radix-ui/react-slot': 1.0.2(@types/react@18.2.15)(react@18.2.0) + '@types/react': 18.2.15 + '@types/react-dom': 18.2.7 react: 18.2.0 react-dom: 18.2.0(react@18.2.0) dev: false - /@radix-ui/react-slot@1.0.2(@types/react@18.2.14)(react@18.2.0): + /@radix-ui/react-slot@1.0.2(@types/react@18.2.15)(react@18.2.0): resolution: {integrity: sha512-YeTpuq4deV+6DusvVUW4ivBgnkHwECUu0BiN43L5UCDFgdhsRUWAghhTF5MbvNTPzmiFOx90asDSUjWuCNapwg==} peerDependencies: '@types/react': '*' @@ -1246,12 +1246,12 @@ packages: optional: true dependencies: '@babel/runtime': 7.22.6 - '@radix-ui/react-compose-refs': 1.0.1(@types/react@18.2.14)(react@18.2.0) - '@types/react': 18.2.14 + '@radix-ui/react-compose-refs': 1.0.1(@types/react@18.2.15)(react@18.2.0) + '@types/react': 18.2.15 react: 18.2.0 dev: false - /@radix-ui/react-tooltip@1.0.6(@types/react-dom@18.2.6)(@types/react@18.2.14)(react-dom@18.2.0)(react@18.2.0): + /@radix-ui/react-tooltip@1.0.6(@types/react-dom@18.2.7)(@types/react@18.2.15)(react-dom@18.2.0)(react@18.2.0): resolution: {integrity: sha512-DmNFOiwEc2UDigsYj6clJENma58OelxD24O4IODoZ+3sQc3Zb+L8w1EP+y9laTuKCLAysPw4fD6/v0j4KNV8rg==} peerDependencies: '@types/react': '*' @@ -1266,24 +1266,24 @@ packages: dependencies: '@babel/runtime': 7.22.6 '@radix-ui/primitive': 1.0.1 - '@radix-ui/react-compose-refs': 1.0.1(@types/react@18.2.14)(react@18.2.0) - '@radix-ui/react-context': 1.0.1(@types/react@18.2.14)(react@18.2.0) - '@radix-ui/react-dismissable-layer': 1.0.4(@types/react-dom@18.2.6)(@types/react@18.2.14)(react-dom@18.2.0)(react@18.2.0) - '@radix-ui/react-id': 1.0.1(@types/react@18.2.14)(react@18.2.0) - '@radix-ui/react-popper': 1.1.2(@types/react-dom@18.2.6)(@types/react@18.2.14)(react-dom@18.2.0)(react@18.2.0) - '@radix-ui/react-portal': 1.0.3(@types/react-dom@18.2.6)(@types/react@18.2.14)(react-dom@18.2.0)(react@18.2.0) - '@radix-ui/react-presence': 1.0.1(@types/react-dom@18.2.6)(@types/react@18.2.14)(react-dom@18.2.0)(react@18.2.0) - '@radix-ui/react-primitive': 1.0.3(@types/react-dom@18.2.6)(@types/react@18.2.14)(react-dom@18.2.0)(react@18.2.0) - '@radix-ui/react-slot': 1.0.2(@types/react@18.2.14)(react@18.2.0) - '@radix-ui/react-use-controllable-state': 1.0.1(@types/react@18.2.14)(react@18.2.0) - '@radix-ui/react-visually-hidden': 1.0.3(@types/react-dom@18.2.6)(@types/react@18.2.14)(react-dom@18.2.0)(react@18.2.0) - '@types/react': 18.2.14 - '@types/react-dom': 18.2.6 + '@radix-ui/react-compose-refs': 1.0.1(@types/react@18.2.15)(react@18.2.0) + '@radix-ui/react-context': 1.0.1(@types/react@18.2.15)(react@18.2.0) + '@radix-ui/react-dismissable-layer': 1.0.4(@types/react-dom@18.2.7)(@types/react@18.2.15)(react-dom@18.2.0)(react@18.2.0) + '@radix-ui/react-id': 1.0.1(@types/react@18.2.15)(react@18.2.0) + '@radix-ui/react-popper': 1.1.2(@types/react-dom@18.2.7)(@types/react@18.2.15)(react-dom@18.2.0)(react@18.2.0) + '@radix-ui/react-portal': 1.0.3(@types/react-dom@18.2.7)(@types/react@18.2.15)(react-dom@18.2.0)(react@18.2.0) + '@radix-ui/react-presence': 1.0.1(@types/react-dom@18.2.7)(@types/react@18.2.15)(react-dom@18.2.0)(react@18.2.0) + '@radix-ui/react-primitive': 1.0.3(@types/react-dom@18.2.7)(@types/react@18.2.15)(react-dom@18.2.0)(react@18.2.0) + '@radix-ui/react-slot': 1.0.2(@types/react@18.2.15)(react@18.2.0) + '@radix-ui/react-use-controllable-state': 1.0.1(@types/react@18.2.15)(react@18.2.0) + '@radix-ui/react-visually-hidden': 1.0.3(@types/react-dom@18.2.7)(@types/react@18.2.15)(react-dom@18.2.0)(react@18.2.0) + '@types/react': 18.2.15 + '@types/react-dom': 18.2.7 react: 18.2.0 react-dom: 18.2.0(react@18.2.0) dev: false - /@radix-ui/react-use-callback-ref@1.0.1(@types/react@18.2.14)(react@18.2.0): + /@radix-ui/react-use-callback-ref@1.0.1(@types/react@18.2.15)(react@18.2.0): resolution: {integrity: sha512-D94LjX4Sp0xJFVaoQOd3OO9k7tpBYNOXdVhkltUbGv2Qb9OXdrg/CpsjlZv7ia14Sylv398LswWBVVu5nqKzAQ==} peerDependencies: '@types/react': '*' @@ -1293,11 +1293,11 @@ packages: optional: true dependencies: '@babel/runtime': 7.22.6 - '@types/react': 18.2.14 + '@types/react': 18.2.15 react: 18.2.0 dev: false - /@radix-ui/react-use-controllable-state@1.0.1(@types/react@18.2.14)(react@18.2.0): + /@radix-ui/react-use-controllable-state@1.0.1(@types/react@18.2.15)(react@18.2.0): resolution: {integrity: sha512-Svl5GY5FQeN758fWKrjM6Qb7asvXeiZltlT4U2gVfl8Gx5UAv2sMR0LWo8yhsIZh2oQ0eFdZ59aoOOMV7b47VA==} peerDependencies: '@types/react': '*' @@ -1307,12 +1307,12 @@ packages: optional: true dependencies: '@babel/runtime': 7.22.6 - '@radix-ui/react-use-callback-ref': 1.0.1(@types/react@18.2.14)(react@18.2.0) - '@types/react': 18.2.14 + '@radix-ui/react-use-callback-ref': 1.0.1(@types/react@18.2.15)(react@18.2.0) + '@types/react': 18.2.15 react: 18.2.0 dev: false - /@radix-ui/react-use-escape-keydown@1.0.3(@types/react@18.2.14)(react@18.2.0): + /@radix-ui/react-use-escape-keydown@1.0.3(@types/react@18.2.15)(react@18.2.0): resolution: {integrity: sha512-vyL82j40hcFicA+M4Ex7hVkB9vHgSse1ZWomAqV2Je3RleKGO5iM8KMOEtfoSB0PnIelMd2lATjTGMYqN5ylTg==} peerDependencies: '@types/react': '*' @@ -1322,12 +1322,12 @@ packages: optional: true dependencies: '@babel/runtime': 7.22.6 - '@radix-ui/react-use-callback-ref': 1.0.1(@types/react@18.2.14)(react@18.2.0) - '@types/react': 18.2.14 + '@radix-ui/react-use-callback-ref': 1.0.1(@types/react@18.2.15)(react@18.2.0) + '@types/react': 18.2.15 react: 18.2.0 dev: false - /@radix-ui/react-use-layout-effect@1.0.1(@types/react@18.2.14)(react@18.2.0): + /@radix-ui/react-use-layout-effect@1.0.1(@types/react@18.2.15)(react@18.2.0): resolution: {integrity: sha512-v/5RegiJWYdoCvMnITBkNNx6bCj20fiaJnWtRkU18yITptraXjffz5Qbn05uOiQnOvi+dbkznkoaMltz1GnszQ==} peerDependencies: '@types/react': '*' @@ -1337,11 +1337,11 @@ packages: optional: true dependencies: '@babel/runtime': 7.22.6 - '@types/react': 18.2.14 + '@types/react': 18.2.15 react: 18.2.0 dev: false - /@radix-ui/react-use-rect@1.0.1(@types/react@18.2.14)(react@18.2.0): + /@radix-ui/react-use-rect@1.0.1(@types/react@18.2.15)(react@18.2.0): resolution: {integrity: sha512-Cq5DLuSiuYVKNU8orzJMbl15TXilTnJKUCltMVQg53BQOF1/C5toAaGrowkgksdBQ9H+SRL23g0HDmg9tvmxXw==} peerDependencies: '@types/react': '*' @@ -1352,11 +1352,11 @@ packages: dependencies: '@babel/runtime': 7.22.6 '@radix-ui/rect': 1.0.1 - '@types/react': 18.2.14 + '@types/react': 18.2.15 react: 18.2.0 dev: false - /@radix-ui/react-use-size@1.0.1(@types/react@18.2.14)(react@18.2.0): + /@radix-ui/react-use-size@1.0.1(@types/react@18.2.15)(react@18.2.0): resolution: {integrity: sha512-ibay+VqrgcaI6veAojjofPATwledXiSmX+C0KrBk/xgpX9rBzPV3OsfwlhQdUOFbh+LKQorLYT+xTXW9V8yd0g==} peerDependencies: '@types/react': '*' @@ -1366,12 +1366,12 @@ packages: optional: true dependencies: '@babel/runtime': 7.22.6 - '@radix-ui/react-use-layout-effect': 1.0.1(@types/react@18.2.14)(react@18.2.0) - '@types/react': 18.2.14 + '@radix-ui/react-use-layout-effect': 1.0.1(@types/react@18.2.15)(react@18.2.0) + '@types/react': 18.2.15 react: 18.2.0 dev: false - /@radix-ui/react-visually-hidden@1.0.3(@types/react-dom@18.2.6)(@types/react@18.2.14)(react-dom@18.2.0)(react@18.2.0): + /@radix-ui/react-visually-hidden@1.0.3(@types/react-dom@18.2.7)(@types/react@18.2.15)(react-dom@18.2.0)(react@18.2.0): resolution: {integrity: sha512-D4w41yN5YRKtu464TLnByKzMDG/JlMPHtfZgQAu9v6mNakUqGUI9vUrfQKz8NK41VMm/xbZbh76NUTVtIYqOMA==} peerDependencies: '@types/react': '*' @@ -1385,9 +1385,9 @@ packages: optional: true dependencies: '@babel/runtime': 7.22.6 - '@radix-ui/react-primitive': 1.0.3(@types/react-dom@18.2.6)(@types/react@18.2.14)(react-dom@18.2.0)(react@18.2.0) - '@types/react': 18.2.14 - '@types/react-dom': 18.2.6 + '@radix-ui/react-primitive': 1.0.3(@types/react-dom@18.2.7)(@types/react@18.2.15)(react-dom@18.2.0)(react@18.2.0) + '@types/react': 18.2.15 + '@types/react-dom': 18.2.7 react: 18.2.0 react-dom: 18.2.0(react@18.2.0) dev: false @@ -1436,8 +1436,8 @@ packages: resolution: {integrity: sha512-+Fj43pSMwJs4KRrH/938Uf+uAELIgVBmQzg/q1YG10djyfA3TnrU8N8XzqCh/okZdszqBQTZf96idMfE5lnwTA==} dev: false - /@swc/core-darwin-arm64@1.3.68: - resolution: {integrity: sha512-Z5pNxeuP2NxpOHTzDQkJs0wAPLnTlglZnR3WjObijwvdwT/kw1Y5EPDKM/BVSIeG40SPMkDLBbI0aj0qyXzrBA==} + /@swc/core-darwin-arm64@1.3.69: + resolution: {integrity: sha512-IjZTf12zIPWkV3D7toaLDoJPSkLhQ4fDH8G6/yCJUI27cBFOI3L8LXqptYmISoN5yYdrcnNpdqdapD09JPuNJg==} engines: {node: '>=10'} cpu: [arm64] os: [darwin] @@ -1445,8 +1445,8 @@ packages: dev: true optional: true - /@swc/core-darwin-x64@1.3.68: - resolution: {integrity: sha512-ZHl42g6yXhfX4PzAQ0BNvBXpt/OcbAHfubWRN6eXELK3fiNnxL7QBW1if7iizlq6iA+Mj1pwHyyUit1pz0+fgA==} + /@swc/core-darwin-x64@1.3.69: + resolution: {integrity: sha512-/wBO0Rn5oS5dJI/L9kJRkPAdksVwl5H9nleW/NM3A40N98VV8T7h/i1nO051mxIjq0R6qXVGOWFbBoLrPYucJg==} engines: {node: '>=10'} cpu: [x64] os: [darwin] @@ -1454,8 +1454,8 @@ packages: dev: true optional: true - /@swc/core-linux-arm-gnueabihf@1.3.68: - resolution: {integrity: sha512-Mk8f6KCOQ2CNAR4PtWajIjS6XKSSR7ZYDOCf1GXRxhS3qEyQH7V8elWvqWYqHcT4foO60NUmxA/NOM/dQrdO1A==} + /@swc/core-linux-arm-gnueabihf@1.3.69: + resolution: {integrity: sha512-NShCjMv6Xn8ckMKBRqmprXvUF14+jXY0TcNKXwjYErzoIUFOnG72M36HxT4QEeAtKZ4Eg4CZFE4zlJ27fDp1gg==} engines: {node: '>=10'} cpu: [arm] os: [linux] @@ -1463,8 +1463,8 @@ packages: dev: true optional: true - /@swc/core-linux-arm64-gnu@1.3.68: - resolution: {integrity: sha512-RhBllggh9t9sIxaRgRcGrVaS7fDk6KsIqR6b9+dwU5OyDr4ZyHWw1ZaH/1/HAebuXYhNBjoNUiRtca6lKRIPgQ==} + /@swc/core-linux-arm64-gnu@1.3.69: + resolution: {integrity: sha512-VRPOJj4idopSHIj1bOVXX0SgaB18R8yZNunb7eXS5ZcjVxAcdvqyIz3RdQX1zaJFCGzcdPLzBRP32DZWWGE8Ng==} engines: {node: '>=10'} cpu: [arm64] os: [linux] @@ -1472,8 +1472,8 @@ packages: dev: true optional: true - /@swc/core-linux-arm64-musl@1.3.68: - resolution: {integrity: sha512-8K3zjU+tFgn6yGDEeD343gkKaHU9dhz77NiVkI1VzwRaT/Ag5pwl5eMQ1yStm8koNFzn3zq6rGjHfI5g2yI5Wg==} + /@swc/core-linux-arm64-musl@1.3.69: + resolution: {integrity: sha512-QxeSiZqo5x1X8vq8oUWLibq+IZJcxl9vy0sLUmzdjF2b/Z+qxKP3gutxnb2tzJaHqPVBbEZaILERIGy1qWdumQ==} engines: {node: '>=10'} cpu: [arm64] os: [linux] @@ -1481,8 +1481,8 @@ packages: dev: true optional: true - /@swc/core-linux-x64-gnu@1.3.68: - resolution: {integrity: sha512-4xAnvsBOyeTL0AB8GWlRKDM/hsysJ5jr5qvdKKI3rZfJgnnxl/xSX6TJKPsJ8gygfUJ3BmfCbmUmEyeDZ3YPvA==} + /@swc/core-linux-x64-gnu@1.3.69: + resolution: {integrity: sha512-b+DUlVxYox3BwD3PyTwhLvqtu6TYZtW+S6O0FnttH11o4skHN0XyJ/cUZSI0X2biSmfDsizRDUt1PWPFM+F7SA==} engines: {node: '>=10'} cpu: [x64] os: [linux] @@ -1490,8 +1490,8 @@ packages: dev: true optional: true - /@swc/core-linux-x64-musl@1.3.68: - resolution: {integrity: sha512-RCpaBo1fcpy1EFdjF+I7N4lfzOaHXVV0iMw/ABM+0PD6tp3V/9pxsguaZyeAHyEiUlDA6PZ4TfXv5zfnXEgW4Q==} + /@swc/core-linux-x64-musl@1.3.69: + resolution: {integrity: sha512-QXjsI+f8n9XPZHUvmGgkABpzN4M9kdSbhqBOZmv3o0AsDGNCA4uVowQqgZoPFAqlJTpwHeDmrv5sQ13HN+LOGw==} engines: {node: '>=10'} cpu: [x64] os: [linux] @@ -1499,8 +1499,8 @@ packages: dev: true optional: true - /@swc/core-win32-arm64-msvc@1.3.68: - resolution: {integrity: sha512-v2WZvXrSslYEpY1nqpItyamL4DyaJinmOkXvM8Bc1LLKU5rGuvmBdjUYg/5Y+o0AUynuiWubpgHNOkBWiCvfqw==} + /@swc/core-win32-arm64-msvc@1.3.69: + resolution: {integrity: sha512-wn7A8Ws1fyviuCUB2Vg6IotiZeuqiO1Mz3d+YDae2EYyNpj1kNHvjBip8GHkfGzZG+jVrvG6NHsDo0KO/pGb8A==} engines: {node: '>=10'} cpu: [arm64] os: [win32] @@ -1508,8 +1508,8 @@ packages: dev: true optional: true - /@swc/core-win32-ia32-msvc@1.3.68: - resolution: {integrity: sha512-HH5NJrIdzkJs+1xxprie0qSCMBeL9yeEhcC1yZTzYv8bwmabOUSdtKIqS55iYP/2hLWn9CTbvKPmLOIhCopW3Q==} + /@swc/core-win32-ia32-msvc@1.3.69: + resolution: {integrity: sha512-LsFBXtXqxEcVaaOGEZ9X3qdMzobVoJqKv8DnksuDsWcBk+9WCeTz2u/iB+7yZ2HGuPXkCqTRqhFo6FX9aC00kQ==} engines: {node: '>=10'} cpu: [ia32] os: [win32] @@ -1517,8 +1517,8 @@ packages: dev: true optional: true - /@swc/core-win32-x64-msvc@1.3.68: - resolution: {integrity: sha512-9HZVtLQUgK8r/yXQdwe0VBexbIcrY6+fBROhs7AAPWdewpaUeLkwQEJk6TbYr9CQuHw26FFGg6SjwAiqXF+kgQ==} + /@swc/core-win32-x64-msvc@1.3.69: + resolution: {integrity: sha512-ieBscU0gUgKjaseFI07tAaGqHvKyweNknPeSYEZOasVZUczhD6fK2GRnVREhv2RB2qdKC/VGFBsgRDMgzq1VLw==} engines: {node: '>=10'} cpu: [x64] os: [win32] @@ -1526,8 +1526,8 @@ packages: dev: true optional: true - /@swc/core@1.3.68: - resolution: {integrity: sha512-njGQuJO+Wy06dEayt70cf0c/KI3HGjm4iW9LLViVLBuYNzJ4SSdNfzejludzufu6im+dsDJ0i3QjgWhAIcVHMQ==} + /@swc/core@1.3.69: + resolution: {integrity: sha512-Khc/DE9D5+2tYTHgAIp5DZARbs8kldWg3b0Jp6l8FQLjelcLFmlQWSwKhVZrgv4oIbgZydIp8jInsvTalMHqnQ==} engines: {node: '>=10'} requiresBuild: true peerDependencies: @@ -1536,19 +1536,19 @@ packages: '@swc/helpers': optional: true optionalDependencies: - '@swc/core-darwin-arm64': 1.3.68 - '@swc/core-darwin-x64': 1.3.68 - '@swc/core-linux-arm-gnueabihf': 1.3.68 - '@swc/core-linux-arm64-gnu': 1.3.68 - '@swc/core-linux-arm64-musl': 1.3.68 - '@swc/core-linux-x64-gnu': 1.3.68 - '@swc/core-linux-x64-musl': 1.3.68 - '@swc/core-win32-arm64-msvc': 1.3.68 - '@swc/core-win32-ia32-msvc': 1.3.68 - '@swc/core-win32-x64-msvc': 1.3.68 + '@swc/core-darwin-arm64': 1.3.69 + '@swc/core-darwin-x64': 1.3.69 + '@swc/core-linux-arm-gnueabihf': 1.3.69 + '@swc/core-linux-arm64-gnu': 1.3.69 + '@swc/core-linux-arm64-musl': 1.3.69 + '@swc/core-linux-x64-gnu': 1.3.69 + '@swc/core-linux-x64-musl': 1.3.69 + '@swc/core-win32-arm64-msvc': 1.3.69 + '@swc/core-win32-ia32-msvc': 1.3.69 + '@swc/core-win32-x64-msvc': 1.3.69 dev: true - /@tailwindcss/typography@0.5.9(tailwindcss@3.3.2): + /@tailwindcss/typography@0.5.9(tailwindcss@3.3.3): resolution: {integrity: sha512-t8Sg3DyynFysV9f4JDOVISGsjazNb48AeIYQwcL+Bsq5uf4RYL75C1giZ43KISjeDGBaTN3Kxh7Xj/vRSMJUUg==} peerDependencies: tailwindcss: '>=3.0.0 || insiders' @@ -1557,7 +1557,7 @@ packages: lodash.isplainobject: 4.0.6 lodash.merge: 4.6.2 postcss-selector-parser: 6.0.10 - tailwindcss: 3.3.2 + tailwindcss: 3.3.3 dev: true /@tanstack/match-sorter-utils@8.8.4: @@ -1799,13 +1799,13 @@ packages: /@types/prop-types@15.7.5: resolution: {integrity: sha512-JCB8C6SnDoQf0cNycqd/35A7MjcnK+ZTqE7judS6o7utxUCg6imJg3QK2qzHKszlTjcj2cn+NwMB2i96ubpj7w==} - /@types/react-dom@18.2.6: - resolution: {integrity: sha512-2et4PDvg6PVCyS7fuTc4gPoksV58bW0RwSxWKcPRcHZf0PRUGq03TKcD/rUHe3azfV6/5/biUBJw+HhCQjaP0A==} + /@types/react-dom@18.2.7: + resolution: {integrity: sha512-GRaAEriuT4zp9N4p1i8BDBYmEyfo+xQ3yHjJU4eiK5NDa1RmUZG+unZABUTK4/Ox/M+GaHwb6Ow8rUITrtjszA==} dependencies: - '@types/react': 18.2.14 + '@types/react': 18.2.15 - /@types/react@18.2.14: - resolution: {integrity: sha512-A0zjq+QN/O0Kpe30hA1GidzyFjatVvrpIvWLxD+xv67Vt91TWWgco9IvrJBkeyHm1trGaFS/FSGqPlhyeZRm0g==} + /@types/react@18.2.15: + resolution: {integrity: sha512-oEjE7TQt1fFTFSbf8kkNuc798ahTUzn3Le67/PWjE8MAfYAD/qB7O8hSTcromLFqHCt9bcdOg5GXMokzTjJ5SA==} dependencies: '@types/prop-types': 15.7.5 '@types/scheduler': 0.16.3 @@ -1943,13 +1943,13 @@ packages: '@typescript-eslint/types': 5.62.0 eslint-visitor-keys: 3.4.1 - /@vitejs/plugin-react-swc@3.3.2(vite@4.4.2): + /@vitejs/plugin-react-swc@3.3.2(vite@4.4.4): resolution: {integrity: sha512-VJFWY5sfoZerQRvJrh518h3AcQt6f/yTuWn4/TRB+dqmYU0NX1qz7qM5Wfd+gOQqUzQW4gxKqKN3KpE/P3+zrA==} peerDependencies: vite: ^4 dependencies: - '@swc/core': 1.3.68 - vite: 4.4.2(@types/node@18.16.19) + '@swc/core': 1.3.69 + vite: 4.4.4(@types/node@18.16.19) transitivePeerDependencies: - '@swc/helpers' dev: true @@ -2096,7 +2096,7 @@ packages: dependencies: call-bind: 1.0.2 define-properties: 1.2.0 - es-abstract: 1.21.2 + es-abstract: 1.21.3 get-intrinsic: 1.2.1 is-string: 1.0.7 @@ -2110,7 +2110,7 @@ packages: dependencies: call-bind: 1.0.2 define-properties: 1.2.0 - es-abstract: 1.21.2 + es-abstract: 1.21.3 es-shim-unscopables: 1.0.0 /array.prototype.flatmap@1.3.1: @@ -2119,7 +2119,7 @@ packages: dependencies: call-bind: 1.0.2 define-properties: 1.2.0 - es-abstract: 1.21.2 + es-abstract: 1.21.3 es-shim-unscopables: 1.0.0 /array.prototype.tosorted@1.1.1: @@ -2127,7 +2127,7 @@ packages: dependencies: call-bind: 1.0.2 define-properties: 1.2.0 - es-abstract: 1.21.2 + es-abstract: 1.21.3 es-shim-unscopables: 1.0.0 get-intrinsic: 1.2.1 dev: true @@ -2146,7 +2146,7 @@ packages: engines: {node: '>=8'} dev: true - /autoprefixer@10.4.14(postcss@8.4.25): + /autoprefixer@10.4.14(postcss@8.4.26): resolution: {integrity: sha512-FQzyfOsTlwVzjHxKEqRIAdJx9niO6VCBCoEwax/VLSoQF29ggECcPuBqUMZ+u8jCZOPSy8b8/8KnuFbp0SaFZQ==} engines: {node: ^10 || ^12 || >=14} hasBin: true @@ -2158,7 +2158,7 @@ packages: fraction.js: 4.2.0 normalize-range: 0.1.2 picocolors: 1.0.0 - postcss: 8.4.25 + postcss: 8.4.26 postcss-value-parser: 4.2.0 dev: true @@ -2213,7 +2213,7 @@ packages: hasBin: true dependencies: caniuse-lite: 1.0.30001515 - electron-to-chromium: 1.4.455 + electron-to-chromium: 1.4.460 node-releases: 2.0.13 update-browserslist-db: 1.0.11(browserslist@4.21.9) dev: true @@ -2653,8 +2653,8 @@ packages: /eastasianwidth@0.2.0: resolution: {integrity: sha512-I88TYZWc9XiYHRQ4/3c5rjjfgkjhLyW2luGIheGERbNQ6OY7yTybanSpDXZa8y7VUP9YmDcYa+eyq4ca7iLqWA==} - /electron-to-chromium@1.4.455: - resolution: {integrity: sha512-8tgdX0Odl24LtmLwxotpJCVjIndN559AvaOtd67u+2mo+IDsgsTF580NB+uuDCqsHw8yFg53l5+imFV9Fw3cbA==} + /electron-to-chromium@1.4.460: + resolution: {integrity: sha512-kKiHnbrHME7z8E6AYaw0ehyxY5+hdaRmeUbjBO22LZMdqTYCO29EvF0T1cQ3pJ1RN5fyMcHl1Lmcsdt9WWJpJQ==} dev: true /emoji-regex@8.0.0: @@ -2688,8 +2688,8 @@ packages: is-arrayish: 0.2.1 dev: false - /es-abstract@1.21.2: - resolution: {integrity: sha512-y/B5POM2iBnIxCiernH1G7rC9qQoM77lLIMQLuob0zhp8C56Po81+2Nj0WFKnd0pNReDTnkYryc+zhOzpEIROg==} + /es-abstract@1.21.3: + resolution: {integrity: sha512-ZU4miiY1j3sGPFLJ34VJXEqhpmL+HGByCinGHv4HC+Fxl2fI2Z4yR6tl0mORnDr6PA8eihWo4LmSWDbvhALckg==} engines: {node: '>= 0.4'} dependencies: array-buffer-byte-length: 1.0.0 @@ -2723,6 +2723,7 @@ packages: string.prototype.trim: 1.2.7 string.prototype.trimend: 1.0.6 string.prototype.trimstart: 1.0.6 + typed-array-byte-offset: 1.0.0 typed-array-length: 1.0.4 unbox-primitive: 1.0.2 which-typed-array: 1.1.10 @@ -2807,34 +2808,34 @@ packages: '@esbuild/win32-x64': 0.17.19 dev: false - /esbuild@0.18.11: - resolution: {integrity: sha512-i8u6mQF0JKJUlGR3OdFLKldJQMMs8OqM9Cc3UCi9XXziJ9WERM5bfkHaEAy0YAvPRMgqSW55W7xYn84XtEFTtA==} + /esbuild@0.18.12: + resolution: {integrity: sha512-XuOVLDdtsDslXStStduT41op21Ytmf4/BDS46aa3xPJ7X5h2eMWBF1oAe3QjUH3bDksocNXgzGUZ7XHIBya6Tg==} engines: {node: '>=12'} hasBin: true requiresBuild: true optionalDependencies: - '@esbuild/android-arm': 0.18.11 - '@esbuild/android-arm64': 0.18.11 - '@esbuild/android-x64': 0.18.11 - '@esbuild/darwin-arm64': 0.18.11 - '@esbuild/darwin-x64': 0.18.11 - '@esbuild/freebsd-arm64': 0.18.11 - '@esbuild/freebsd-x64': 0.18.11 - '@esbuild/linux-arm': 0.18.11 - '@esbuild/linux-arm64': 0.18.11 - '@esbuild/linux-ia32': 0.18.11 - '@esbuild/linux-loong64': 0.18.11 - '@esbuild/linux-mips64el': 0.18.11 - '@esbuild/linux-ppc64': 0.18.11 - '@esbuild/linux-riscv64': 0.18.11 - '@esbuild/linux-s390x': 0.18.11 - '@esbuild/linux-x64': 0.18.11 - '@esbuild/netbsd-x64': 0.18.11 - '@esbuild/openbsd-x64': 0.18.11 - '@esbuild/sunos-x64': 0.18.11 - '@esbuild/win32-arm64': 0.18.11 - '@esbuild/win32-ia32': 0.18.11 - '@esbuild/win32-x64': 0.18.11 + '@esbuild/android-arm': 0.18.12 + '@esbuild/android-arm64': 0.18.12 + '@esbuild/android-x64': 0.18.12 + '@esbuild/darwin-arm64': 0.18.12 + '@esbuild/darwin-x64': 0.18.12 + '@esbuild/freebsd-arm64': 0.18.12 + '@esbuild/freebsd-x64': 0.18.12 + '@esbuild/linux-arm': 0.18.12 + '@esbuild/linux-arm64': 0.18.12 + '@esbuild/linux-ia32': 0.18.12 + '@esbuild/linux-loong64': 0.18.12 + '@esbuild/linux-mips64el': 0.18.12 + '@esbuild/linux-ppc64': 0.18.12 + '@esbuild/linux-riscv64': 0.18.12 + '@esbuild/linux-s390x': 0.18.12 + '@esbuild/linux-x64': 0.18.12 + '@esbuild/netbsd-x64': 0.18.12 + '@esbuild/openbsd-x64': 0.18.12 + '@esbuild/sunos-x64': 0.18.12 + '@esbuild/win32-arm64': 0.18.12 + '@esbuild/win32-ia32': 0.18.12 + '@esbuild/win32-x64': 0.18.12 dev: true /escalade@3.1.1: @@ -3233,8 +3234,8 @@ packages: resolution: {integrity: sha512-MhLuK+2gUcnZe8ZHlaaINnQLl0xRIGRfcGk2yl8xoQAfHrSsL3rYu6FCmBdkdbhc9EPlwyGHewaRsvwRMJtAlA==} dev: true - /framer-motion@10.12.18(react-dom@18.2.0)(react@18.2.0): - resolution: {integrity: sha512-cfhiUpPbj+0eEWKjuD+5cz5cMqH71xOtMxGiS/cSGfHn2OlHIEAqFnFyzEMENw5PxWR9bMVhatzzpD6lexmHZQ==} + /framer-motion@10.12.20(react-dom@18.2.0)(react@18.2.0): + resolution: {integrity: sha512-O4ODHTlov2cGHWjtMSuZhm2wX0eM33VK8+vCxren2uw9g3k/RubPCa0/tT6PtLzCvYgAhgKmaczVbY2qEJVWOw==} peerDependencies: react: ^18.0.0 react-dom: ^18.0.0 @@ -3285,7 +3286,7 @@ packages: dependencies: call-bind: 1.0.2 define-properties: 1.2.0 - es-abstract: 1.21.2 + es-abstract: 1.21.3 functions-have-names: 1.2.3 /functions-have-names@1.2.3: @@ -4410,7 +4411,7 @@ packages: dependencies: call-bind: 1.0.2 define-properties: 1.2.0 - es-abstract: 1.21.2 + es-abstract: 1.21.3 dev: true /object.fromentries@2.0.6: @@ -4419,14 +4420,14 @@ packages: dependencies: call-bind: 1.0.2 define-properties: 1.2.0 - es-abstract: 1.21.2 + es-abstract: 1.21.3 dev: true /object.hasown@1.1.2: resolution: {integrity: sha512-B5UIT3J1W+WuWIU55h0mjlwaqxiE5vYENJXIXZ4VFe05pNYrkKuK0U/6aFcb0pKywYJh7IhfoqUfKVmrJJHZHw==} dependencies: define-properties: 1.2.0 - es-abstract: 1.21.2 + es-abstract: 1.21.3 dev: true /object.values@1.1.6: @@ -4435,7 +4436,7 @@ packages: dependencies: call-bind: 1.0.2 define-properties: 1.2.0 - es-abstract: 1.21.2 + es-abstract: 1.21.3 /once@1.4.0: resolution: {integrity: sha512-lNaJgI+2Q5URQBkccEKHTQOPaXdUxnZZElQTZY0MFUAuaEqe1E+Nyvgdz/aIyNi6Z9MzO5dv1H8n58/GELp3+w==} @@ -4627,29 +4628,29 @@ packages: irregular-plurals: 3.5.0 dev: false - /postcss-import@15.1.0(postcss@8.4.25): + /postcss-import@15.1.0(postcss@8.4.26): resolution: {integrity: sha512-hpr+J05B2FVYUAXHeK1YyI267J/dDDhMU6B6civm8hSY1jYJnBXxzKDKDswzJmtLHryrjhnDjqqp/49t8FALew==} engines: {node: '>=14.0.0'} peerDependencies: postcss: ^8.0.0 dependencies: - postcss: 8.4.25 + postcss: 8.4.26 postcss-value-parser: 4.2.0 read-cache: 1.0.0 resolve: 1.22.2 dev: true - /postcss-js@4.0.1(postcss@8.4.25): + /postcss-js@4.0.1(postcss@8.4.26): resolution: {integrity: sha512-dDLF8pEO191hJMtlHFPRa8xsizHaM82MLfNkUHdUtVEV3tgTp5oj+8qbEqYM57SLfc74KSbw//4SeJma2LRVIw==} engines: {node: ^12 || ^14 || >= 16} peerDependencies: postcss: ^8.4.21 dependencies: camelcase-css: 2.0.1 - postcss: 8.4.25 + postcss: 8.4.26 dev: true - /postcss-load-config@4.0.1(postcss@8.4.25): + /postcss-load-config@4.0.1(postcss@8.4.26): resolution: {integrity: sha512-vEJIc8RdiBRu3oRAI0ymerOn+7rPuMvRXslTvZUKZonDHFIczxztIyJ1urxM1x9JXEikvpWWTUUqal5j/8QgvA==} engines: {node: '>= 14'} peerDependencies: @@ -4662,17 +4663,17 @@ packages: optional: true dependencies: lilconfig: 2.1.0 - postcss: 8.4.25 + postcss: 8.4.26 yaml: 2.3.1 dev: true - /postcss-nested@6.0.1(postcss@8.4.25): + /postcss-nested@6.0.1(postcss@8.4.26): resolution: {integrity: sha512-mEp4xPMi5bSWiMbsgoPfcP74lsWLHkQbZc3sY+jWYd65CUwXrUaTp0fmNpa01ZcETKlIgUdFN/MpS2xZtqL9dQ==} engines: {node: '>=12.0'} peerDependencies: postcss: ^8.2.14 dependencies: - postcss: 8.4.25 + postcss: 8.4.26 postcss-selector-parser: 6.0.13 dev: true @@ -4696,8 +4697,8 @@ packages: resolution: {integrity: sha512-1NNCs6uurfkVbeXG4S8JFT9t19m45ICnif8zWLd5oPSZ50QnwMfK+H3jv408d4jw/7Bttv5axS5IiHoLaVNHeQ==} dev: true - /postcss@8.4.25: - resolution: {integrity: sha512-7taJ/8t2av0Z+sQEvNzCkpDynl0tX3uJMCODi6nT3PfASC7dYCWV9aQ+uiCf+KBD4SEFcu+GvJdGdwzQ6OSjCw==} + /postcss@8.4.26: + resolution: {integrity: sha512-jrXHFF8iTloAenySjM/ob3gSj7pCu0Ji49hnjqzsgSRa50hkWCKD0HQ+gMNJkW38jBI68MpAAg7ZWwHwX8NMMw==} engines: {node: ^10 || ^12 || >=14} dependencies: nanoid: 3.3.6 @@ -4871,7 +4872,7 @@ packages: react-fast-compare: 3.2.2 dev: false - /react-remove-scroll-bar@2.3.4(@types/react@18.2.14)(react@18.2.0): + /react-remove-scroll-bar@2.3.4(@types/react@18.2.15)(react@18.2.0): resolution: {integrity: sha512-63C4YQBUt0m6ALadE9XV56hV8BgJWDmmTPY758iIJjfQKt2nYwoUrPk0LXRXcB/yIj82T1/Ixfdpdk68LwIB0A==} engines: {node: '>=10'} peerDependencies: @@ -4881,13 +4882,13 @@ packages: '@types/react': optional: true dependencies: - '@types/react': 18.2.14 + '@types/react': 18.2.15 react: 18.2.0 - react-style-singleton: 2.2.1(@types/react@18.2.14)(react@18.2.0) + react-style-singleton: 2.2.1(@types/react@18.2.15)(react@18.2.0) tslib: 2.6.0 dev: false - /react-remove-scroll@2.5.5(@types/react@18.2.14)(react@18.2.0): + /react-remove-scroll@2.5.5(@types/react@18.2.15)(react@18.2.0): resolution: {integrity: sha512-ImKhrzJJsyXJfBZ4bzu8Bwpka14c/fQt0k+cyFp/PBhTfyDnU5hjOtM4AG/0AMyy8oKzOTR0lDgJIM7pYXI0kw==} engines: {node: '>=10'} peerDependencies: @@ -4897,13 +4898,13 @@ packages: '@types/react': optional: true dependencies: - '@types/react': 18.2.14 + '@types/react': 18.2.15 react: 18.2.0 - react-remove-scroll-bar: 2.3.4(@types/react@18.2.14)(react@18.2.0) - react-style-singleton: 2.2.1(@types/react@18.2.14)(react@18.2.0) + react-remove-scroll-bar: 2.3.4(@types/react@18.2.15)(react@18.2.0) + react-style-singleton: 2.2.1(@types/react@18.2.15)(react@18.2.0) tslib: 2.6.0 - use-callback-ref: 1.3.0(@types/react@18.2.14)(react@18.2.0) - use-sidecar: 1.1.2(@types/react@18.2.14)(react@18.2.0) + use-callback-ref: 1.3.0(@types/react@18.2.15)(react@18.2.0) + use-sidecar: 1.1.2(@types/react@18.2.15)(react@18.2.0) dev: false /react-router-dom@6.14.1(react-dom@18.2.0)(react@18.2.0): @@ -4934,7 +4935,7 @@ packages: engines: {node: '>=0.12.0'} dev: false - /react-style-singleton@2.2.1(@types/react@18.2.14)(react@18.2.0): + /react-style-singleton@2.2.1(@types/react@18.2.15)(react@18.2.0): resolution: {integrity: sha512-ZWj0fHEMyWkHzKYUr2Bs/4zU6XLmq9HsgBURm7g5pAVfyn49DgUiNgY2d4lXRlYSiCif9YBGpQleewkcqddc7g==} engines: {node: '>=10'} peerDependencies: @@ -4944,15 +4945,15 @@ packages: '@types/react': optional: true dependencies: - '@types/react': 18.2.14 + '@types/react': 18.2.15 get-nonce: 1.0.1 invariant: 2.2.4 react: 18.2.0 tslib: 2.6.0 dev: false - /react-virtuoso@4.3.11(react-dom@18.2.0)(react@18.2.0): - resolution: {integrity: sha512-0YrCvQ5GsIKRcN34GxrzhSJGuMNI+hGxWci5cTVuPQ8QWTEsrKfCyqm7YNBMmV3pu7onG1YVUBo86CyCXdejXg==} + /react-virtuoso@4.4.0(react-dom@18.2.0)(react@18.2.0): + resolution: {integrity: sha512-7hVk43DN9Sx6czpclTpPnB2uzDmCaioSoTSN8lRv4mMF7UL5jmfc58UpjRrGoJavzVn1VBjHLLj6RHBLsS+N5Q==} engines: {node: '>=10'} peerDependencies: react: '>=16 || >=17 || >= 18' @@ -5353,7 +5354,7 @@ packages: dependencies: call-bind: 1.0.2 define-properties: 1.2.0 - es-abstract: 1.21.2 + es-abstract: 1.21.3 get-intrinsic: 1.2.1 has-symbols: 1.0.3 internal-slot: 1.0.5 @@ -5367,7 +5368,7 @@ packages: dependencies: call-bind: 1.0.2 define-properties: 1.2.0 - es-abstract: 1.21.2 + es-abstract: 1.21.3 dev: false /string.prototype.trim@1.2.7: @@ -5376,21 +5377,21 @@ packages: dependencies: call-bind: 1.0.2 define-properties: 1.2.0 - es-abstract: 1.21.2 + es-abstract: 1.21.3 /string.prototype.trimend@1.0.6: resolution: {integrity: sha512-JySq+4mrPf9EsDBEDYMOb/lM7XQLulwg5R/m1r0PXEFqrV0qHvl58sdTilSXtKOflCsK2E8jxf+GKC0T07RWwQ==} dependencies: call-bind: 1.0.2 define-properties: 1.2.0 - es-abstract: 1.21.2 + es-abstract: 1.21.3 /string.prototype.trimstart@1.0.6: resolution: {integrity: sha512-omqjMDaY92pbn5HOX7f9IccLA+U1tA9GvtU4JrodiXFfYB7jPzzHpRzpglLAjtUV6bB557zwClJezTqnAiYnQA==} dependencies: call-bind: 1.0.2 define-properties: 1.2.0 - es-abstract: 1.21.2 + es-abstract: 1.21.3 /string_decoder@1.3.0: resolution: {integrity: sha512-hkRX8U1WjJFd8LsDJ2yQ/wWWxaopEsABU1XfkM8A+j0+85JAGppt16cr1Whg6KIbb4okU6Mql6BOj+uup/wKeA==} @@ -5480,8 +5481,8 @@ packages: resolution: {integrity: sha512-R2/nULkdg1VR/EL4RXg4dEohdoxNUJGLMnWIQnPKL+O9Twu7Cn3Rxi4dlXkDzZrEGtR+G+psSXFouWlpTyLhCQ==} dev: false - /tailwindcss@3.3.2: - resolution: {integrity: sha512-9jPkMiIBXvPc2KywkraqsUfbfj+dHDb+JPWtSJa9MLFdrPyazI7q6WX2sUrm7R9eVR7qqv3Pas7EvQFzxKnI6w==} + /tailwindcss@3.3.3: + resolution: {integrity: sha512-A0KgSkef7eE4Mf+nKJ83i75TMyq8HqY3qmFIJSWy8bNt0v1lG7jUcpGpoTFxAwYcWOphcTBLPPJg+bDfhDf52w==} engines: {node: '>=14.0.0'} hasBin: true dependencies: @@ -5499,13 +5500,12 @@ packages: normalize-path: 3.0.0 object-hash: 3.0.0 picocolors: 1.0.0 - postcss: 8.4.25 - postcss-import: 15.1.0(postcss@8.4.25) - postcss-js: 4.0.1(postcss@8.4.25) - postcss-load-config: 4.0.1(postcss@8.4.25) - postcss-nested: 6.0.1(postcss@8.4.25) + postcss: 8.4.26 + postcss-import: 15.1.0(postcss@8.4.26) + postcss-js: 4.0.1(postcss@8.4.26) + postcss-load-config: 4.0.1(postcss@8.4.26) + postcss-nested: 6.0.1(postcss@8.4.26) postcss-selector-parser: 6.0.13 - postcss-value-parser: 4.2.0 resolve: 1.22.2 sucrase: 3.32.0 transitivePeerDependencies: @@ -5669,6 +5669,16 @@ packages: resolution: {integrity: sha512-dzlvlNlt6AXU7EBSfpAscydQ7gXB+pPGsPnfJnZpiNJBDj7IaJzQlBZYGdEi4R9HmPdBv2XmWJ6YUtoTa7lmCw==} dev: false + /typed-array-byte-offset@1.0.0: + resolution: {integrity: sha512-RD97prjEt9EL8YgAgpOkf3O4IF9lhJFr9g0htQkm0rchFp/Vx7LW5Q8fSXXub7BXAODyUQohRMyOc3faCPd0hg==} + engines: {node: '>= 0.4'} + dependencies: + available-typed-arrays: 1.0.5 + call-bind: 1.0.2 + for-each: 0.3.3 + has-proto: 1.0.1 + is-typed-array: 1.1.10 + /typed-array-length@1.0.4: resolution: {integrity: sha512-KjZypGq+I/H7HI5HlOoGHkWUUGq+Q0TPhQurLbyrVrvnKTBgzLhIJ7j6J/XTQOi0d1RjyZ0wdas8bKs2p0x3Ng==} dependencies: @@ -5745,7 +5755,7 @@ packages: tlds: 1.240.0 dev: false - /use-callback-ref@1.3.0(@types/react@18.2.14)(react@18.2.0): + /use-callback-ref@1.3.0(@types/react@18.2.15)(react@18.2.0): resolution: {integrity: sha512-3FT9PRuRdbB9HfXhEq35u4oZkvpJ5kuYbpqhCfmiZyReuRgpnhDlbr2ZEnnuS0RrJAPn6l23xjFg9kpDM+Ms7w==} engines: {node: '>=10'} peerDependencies: @@ -5755,12 +5765,12 @@ packages: '@types/react': optional: true dependencies: - '@types/react': 18.2.14 + '@types/react': 18.2.15 react: 18.2.0 tslib: 2.6.0 dev: false - /use-sidecar@1.1.2(@types/react@18.2.14)(react@18.2.0): + /use-sidecar@1.1.2(@types/react@18.2.15)(react@18.2.0): resolution: {integrity: sha512-epTbsLuzZ7lPClpz2TyryBfztm7m+28DlEv2ZCQ3MDr5ssiwyOwGH/e5F9CkfWjJ1t4clvI58yF822/GUkjjhw==} engines: {node: '>=10'} peerDependencies: @@ -5770,7 +5780,7 @@ packages: '@types/react': optional: true dependencies: - '@types/react': 18.2.14 + '@types/react': 18.2.15 detect-node-es: 1.1.0 react: 18.2.0 tslib: 2.6.0 @@ -5812,21 +5822,21 @@ packages: spdx-expression-parse: 3.0.1 dev: false - /vite-plugin-top-level-await@1.3.1(vite@4.4.2): + /vite-plugin-top-level-await@1.3.1(vite@4.4.4): resolution: {integrity: sha512-55M1h4NAwkrpxPNOJIBzKZFihqLUzIgnElLSmPNPMR2Fn9+JHKaNg3sVX1Fq+VgvuBksQYxiD3OnwQAUu7kaPQ==} peerDependencies: vite: '>=2.8' dependencies: '@rollup/plugin-virtual': 3.0.1 - '@swc/core': 1.3.68 + '@swc/core': 1.3.69 uuid: 9.0.0 - vite: 4.4.2(@types/node@18.16.19) + vite: 4.4.4(@types/node@18.16.19) transitivePeerDependencies: - '@swc/helpers' - rollup dev: true - /vite-tsconfig-paths@4.2.0(typescript@4.9.5)(vite@4.4.2): + /vite-tsconfig-paths@4.2.0(typescript@4.9.5)(vite@4.4.4): resolution: {integrity: sha512-jGpus0eUy5qbbMVGiTxCL1iB9ZGN6Bd37VGLJU39kTDD6ZfULTTb1bcc5IeTWqWJKiWV5YihCaibeASPiGi8kw==} peerDependencies: vite: '*' @@ -5837,14 +5847,14 @@ packages: debug: 4.3.4 globrex: 0.1.2 tsconfck: 2.1.1(typescript@4.9.5) - vite: 4.4.2(@types/node@18.16.19) + vite: 4.4.4(@types/node@18.16.19) transitivePeerDependencies: - supports-color - typescript dev: true - /vite@4.4.2(@types/node@18.16.19): - resolution: {integrity: sha512-zUcsJN+UvdSyHhYa277UHhiJ3iq4hUBwHavOpsNUGsTgjBeoBlK8eDt+iT09pBq0h9/knhG/SPrZiM7cGmg7NA==} + /vite@4.4.4(@types/node@18.16.19): + resolution: {integrity: sha512-4mvsTxjkveWrKDJI70QmelfVqTm+ihFAb6+xf4sjEU2TmUCTlVX87tmg/QooPEMQb/lM9qGHT99ebqPziEd3wg==} engines: {node: ^14.18.0 || >=16.0.0} hasBin: true peerDependencies: @@ -5872,8 +5882,8 @@ packages: optional: true dependencies: '@types/node': 18.16.19 - esbuild: 0.18.11 - postcss: 8.4.25 + esbuild: 0.18.12 + postcss: 8.4.26 rollup: 3.26.2 optionalDependencies: fsevents: 2.3.2 @@ -6015,24 +6025,24 @@ packages: use-sync-external-store: 1.2.0(react@18.2.0) dev: false - github.com/tauri-apps/tauri-plugin-autostart/f409102d516cdac20bb7dde4300a0e495c61d6f2: - resolution: {tarball: https://codeload.github.com/tauri-apps/tauri-plugin-autostart/tar.gz/f409102d516cdac20bb7dde4300a0e495c61d6f2} + github.com/tauri-apps/tauri-plugin-autostart/59c48c642cea6a854bb1f4181972ad0bfbeb0c75: + resolution: {tarball: https://codeload.github.com/tauri-apps/tauri-plugin-autostart/tar.gz/59c48c642cea6a854bb1f4181972ad0bfbeb0c75} name: tauri-plugin-autostart-api version: 0.0.0 dependencies: '@tauri-apps/api': 1.4.0 dev: false - github.com/tauri-apps/tauri-plugin-sql/91195cd53a9599e3c043aee2490c0d5bd7989f18: - resolution: {tarball: https://codeload.github.com/tauri-apps/tauri-plugin-sql/tar.gz/91195cd53a9599e3c043aee2490c0d5bd7989f18} + github.com/tauri-apps/tauri-plugin-sql/f8125e517d9de2a567a2eaa14f7b1b32e456278b: + resolution: {tarball: https://codeload.github.com/tauri-apps/tauri-plugin-sql/tar.gz/f8125e517d9de2a567a2eaa14f7b1b32e456278b} name: tauri-plugin-sql-api version: 0.0.0 dependencies: '@tauri-apps/api': 1.4.0 dev: false - github.com/tauri-apps/tauri-plugin-stronghold/910f0dcda71336f75e284c84bbabe05ed2491128: - resolution: {tarball: https://codeload.github.com/tauri-apps/tauri-plugin-stronghold/tar.gz/910f0dcda71336f75e284c84bbabe05ed2491128} + github.com/tauri-apps/tauri-plugin-stronghold/a2dbe1f937f2f2a1fd27d5a4a7a87ec7b7d1f5d4: + resolution: {tarball: https://codeload.github.com/tauri-apps/tauri-plugin-stronghold/tar.gz/a2dbe1f937f2f2a1fd27d5a4a7a87ec7b7d1f5d4} name: tauri-plugin-stronghold-api version: 0.0.0 dependencies: diff --git a/src/app/note/index.tsx b/src/app/note/index.tsx index 4e1009d3..20016f4e 100644 --- a/src/app/note/index.tsx +++ b/src/app/note/index.tsx @@ -5,8 +5,6 @@ import { useLiveThread } from '@app/space/hooks/useLiveThread'; import { getNoteByID } from '@libs/storage'; -import { Kind1 } from '@shared/notes/contents/kind1'; -import { Kind1063 } from '@shared/notes/contents/kind1063'; import { NoteMetadata } from '@shared/notes/metadata'; import { NoteReplyForm } from '@shared/notes/replies/form'; import { RepliesList } from '@shared/notes/replies/list'; @@ -41,8 +39,6 @@ export function NoteScreen() {
- {data.kind === 1 && } - {data.kind === 1063 && }
diff --git a/src/app/space/components/blocks/feed.tsx b/src/app/space/components/blocks/feed.tsx index 1689e336..35fd9a1c 100644 --- a/src/app/space/components/blocks/feed.tsx +++ b/src/app/space/components/blocks/feed.tsx @@ -1,14 +1,16 @@ import { useInfiniteQuery, useMutation, useQueryClient } from '@tanstack/react-query'; import { useVirtualizer } from '@tanstack/react-virtual'; -import { useEffect, useRef } from 'react'; -import { Link } from 'react-router-dom'; +import { useCallback, useEffect, useRef } from 'react'; import { getNotesByAuthors, removeBlock } from '@libs/storage'; -import { Note } from '@shared/notes/note'; +import { NoteKind_1, NoteKind_1063, NoteThread, Repost } from '@shared/notes'; +import { NoteKindUnsupport } from '@shared/notes/kinds/unsupport'; import { NoteSkeleton } from '@shared/notes/skeleton'; import { TitleBar } from '@shared/titleBar'; +import { LumeEvent } from '@utils/types'; + const ITEM_PER_PAGE = 10; export function FeedBlock({ params }: { params: any }) { @@ -55,16 +57,70 @@ export function FeedBlock({ params }: { params: any }) { }, }); - const renderItem = (index: string | number) => { - const note = notes[index]; - - if (!note) return; - return ( -
- -
- ); - }; + const renderItem = useCallback( + (index: string | number) => { + const note: LumeEvent = notes[index]; + if (!note) return; + switch (note.kind) { + case 1: { + const root = note.tags.find((el) => el[3] === 'root')?.[1]; + const reply = note.tags.find((el) => el[3] === 'reply')?.[1]; + if (root || reply) { + return ( +
+ +
+ ); + } else { + return ( +
+ +
+ ); + } + } + case 6: + return ( +
+ +
+ ); + case 1063: + return ( +
+ +
+ ); + default: + return ( +
+ +
+ ); + } + }, + [notes] + ); return (
diff --git a/src/app/space/components/blocks/following.tsx b/src/app/space/components/blocks/following.tsx index fa1c6b00..aff97bf3 100644 --- a/src/app/space/components/blocks/following.tsx +++ b/src/app/space/components/blocks/following.tsx @@ -1,18 +1,21 @@ import { useInfiniteQuery } from '@tanstack/react-query'; import { useVirtualizer } from '@tanstack/react-virtual'; -import { useEffect, useRef } from 'react'; +import { useCallback, useEffect, useRef } from 'react'; import { Link } from 'react-router-dom'; import { useNewsfeed } from '@app/space/hooks/useNewsfeed'; import { getNotes } from '@libs/storage'; -import { Note } from '@shared/notes/note'; +import { NoteKind_1, NoteKind_1063, NoteThread, Repost } from '@shared/notes'; +import { NoteKindUnsupport } from '@shared/notes/kinds/unsupport'; import { NoteSkeleton } from '@shared/notes/skeleton'; import { TitleBar } from '@shared/titleBar'; import { useNote } from '@stores/note'; +import { LumeEvent } from '@utils/types'; + const ITEM_PER_PAGE = 10; export function FollowingBlock() { @@ -66,19 +69,76 @@ export function FollowingBlock() { toggleHasNewNote(false); }; - const renderItem = (index: string | number) => { - const note = notes[index]; - if (!note) return; - return ( -
- -
- ); - }; + const renderItem = useCallback( + (index: string | number) => { + const note: LumeEvent = notes[index]; + if (!note) return; + switch (note.kind) { + case 1: { + let root: string; + let reply: string; + if (note.tags?.[0]?.[0] === 'e' && !note.tags?.[0]?.[3]) { + root = note.tags[0][1]; + } else { + root = note.tags.find((el) => el[3] === 'root')?.[1]; + reply = note.tags.find((el) => el[3] === 'reply')?.[1]; + } + if (root || reply) { + return ( +
+ +
+ ); + } else { + return ( +
+ +
+ ); + } + } + case 6: + return ( +
+ +
+ ); + case 1063: + return ( +
+ +
+ ); + default: + return ( +
+ +
+ ); + } + }, + [notes] + ); return (
diff --git a/src/app/space/components/blocks/thread.tsx b/src/app/space/components/blocks/thread.tsx index 5b3b35c5..5bc68727 100644 --- a/src/app/space/components/blocks/thread.tsx +++ b/src/app/space/components/blocks/thread.tsx @@ -5,8 +5,6 @@ import { useLiveThread } from '@app/space/hooks/useLiveThread'; import { getNoteByID, removeBlock } from '@libs/storage'; -import { Kind1 } from '@shared/notes/contents/kind1'; -import { Kind1063 } from '@shared/notes/contents/kind1063'; import { NoteMetadata } from '@shared/notes/metadata'; import { NoteReplyForm } from '@shared/notes/replies/form'; import { RepliesList } from '@shared/notes/replies/list'; @@ -53,12 +51,6 @@ export function ThreadBlock({ params }: { params: any }) {
- {data.kind === 1 && } - {data.kind === 1063 && } - Focus
diff --git a/src/app/trending/components/trendingNotes.tsx b/src/app/trending/components/trendingNotes.tsx index d5cc8a9b..b41e6c8c 100644 --- a/src/app/trending/components/trendingNotes.tsx +++ b/src/app/trending/components/trendingNotes.tsx @@ -1,6 +1,6 @@ import { useQuery } from '@tanstack/react-query'; -import { Note } from '@shared/notes/note'; +import { NoteKind_1 } from '@shared/notes'; import { NoteSkeleton } from '@shared/notes/skeleton'; import { TitleBar } from '@shared/titleBar'; @@ -27,7 +27,7 @@ export function TrendingNotes() { ) : (
{data.notes.map((item) => ( - + ))}
)} diff --git a/src/app/user/components/feed.tsx b/src/app/user/components/feed.tsx index 0132aac2..f0d1f81d 100644 --- a/src/app/user/components/feed.tsx +++ b/src/app/user/components/feed.tsx @@ -2,8 +2,6 @@ import { useQuery } from '@tanstack/react-query'; import { useNDK } from '@libs/ndk/provider'; -import { Note } from '@shared/notes/note'; - import { nHoursAgo } from '@utils/date'; import { LumeEvent } from '@utils/types'; @@ -19,15 +17,5 @@ export function UserFeed({ pubkey }: { pubkey: string }) { return events as unknown as LumeEvent[]; }); - return ( -
- {status === 'loading' ? ( -
-

Loading...

-
- ) : ( - data.map((note: LumeEvent) => ) - )} -
- ); + return
; } diff --git a/src/libs/storage.tsx b/src/libs/storage.tsx index 6071619c..4c7735cf 100644 --- a/src/libs/storage.tsx +++ b/src/libs/storage.tsx @@ -1,7 +1,9 @@ -import { NDKUserProfile } from '@nostr-dev-kit/ndk'; +import { NDKTag, NDKUserProfile } from '@nostr-dev-kit/ndk'; +import destr from 'destr'; import Database from 'tauri-plugin-sql-api'; import { getParentID } from '@utils/transform'; +import { LumeEvent } from '@utils/types'; let db: null | Database = null; @@ -92,11 +94,19 @@ export async function getNotes(limit: number, offset: number) { const totalNotes = await countTotalNotes(); const nextCursor = offset + limit; - const notes: any = { data: null, nextCursor: 0 }; - const query: any = await db.select( + const notes: { data: LumeEvent[] | null; nextCursor: number } = { + data: null, + nextCursor: 0, + }; + + const query: LumeEvent[] = await db.select( `SELECT * FROM notes WHERE kind IN (1, 6, 1063) GROUP BY parent_id ORDER BY created_at DESC LIMIT "${limit}" OFFSET "${offset}";` ); + query.forEach( + (el) => (el.tags = typeof el.tags === 'string' ? destr(el.tags) : el.tags) + ); + notes['data'] = query; notes['nextCursor'] = Math.round(totalNotes / nextCursor) > 1 ? nextCursor : undefined; @@ -106,11 +116,16 @@ export async function getNotes(limit: number, offset: number) { // get all notes by pubkey export async function getNotesByPubkey(pubkey: string) { const db = await connect(); - const res: any = await db.select( + + const query: LumeEvent[] = await db.select( `SELECT * FROM notes WHERE pubkey == "${pubkey}" AND kind IN (1, 6, 1063) GROUP BY parent_id ORDER BY created_at DESC;` ); - return res; + query.forEach( + (el) => (el.tags = typeof el.tags === 'string' ? destr(el.tags) : el.tags) + ); + + return query; } // get all notes by authors @@ -121,11 +136,19 @@ export async function getNotesByAuthors(authors: string, limit: number, offset: const array = JSON.parse(authors); const finalArray = `'${array.join("','")}'`; - const notes: any = { data: null, nextCursor: 0 }; - const query: any = await db.select( + const notes: { data: LumeEvent[] | null; nextCursor: number } = { + data: null, + nextCursor: 0, + }; + + const query: LumeEvent[] = await db.select( `SELECT * FROM notes WHERE pubkey IN (${finalArray}) AND kind IN (1, 6, 1063) GROUP BY parent_id ORDER BY created_at DESC LIMIT "${limit}" OFFSET "${offset}";` ); + query.forEach( + (el) => (el.tags = typeof el.tags === 'string' ? destr(el.tags) : el.tags) + ); + notes['data'] = query; notes['nextCursor'] = Math.round(totalNotes / nextCursor) > 1 ? nextCursor : undefined; @@ -144,7 +167,7 @@ export async function createNote( event_id: string, pubkey: string, kind: number, - tags: any, + tags: string[], content: string, created_at: number ) { diff --git a/src/shared/icons/index.tsx b/src/shared/icons/index.tsx index 549e6b93..3cbb94b8 100644 --- a/src/shared/icons/index.tsx +++ b/src/shared/icons/index.tsx @@ -43,4 +43,5 @@ export * from './settings'; export * from './logout'; export * from './follow'; export * from './unfollow'; +export * from './reaction'; // @endindex diff --git a/src/shared/icons/reaction.tsx b/src/shared/icons/reaction.tsx new file mode 100644 index 00000000..b160caac --- /dev/null +++ b/src/shared/icons/reaction.tsx @@ -0,0 +1,37 @@ +import { SVGProps } from 'react'; + +export function ReactionIcon(props: JSX.IntrinsicAttributes & SVGProps) { + return ( + + + + + + + ); +} diff --git a/src/shared/icons/repost.tsx b/src/shared/icons/repost.tsx index cb605aa6..b3ffb473 100644 --- a/src/shared/icons/repost.tsx +++ b/src/shared/icons/repost.tsx @@ -2,14 +2,20 @@ import { SVGProps } from 'react'; export function RepostIcon(props: JSX.IntrinsicAttributes & SVGProps) { return ( - + + strokeWidth="1.5" + d="M12 21.25c4.28 0 7.75-3.75 7.75-8.25 0-5.167-4.613-8.829-6.471-10.094-.426-.29-.988-.165-1.285.257L9.582 6.59a1.002 1.002 0 01-1.525.131c-.39-.387-1.026-.391-1.376.033C5.06 8.718 4.25 11.16 4.25 13c0 4.5 3.47 8.25 7.75 8.25zm0 0c1.657 0 3-1.533 3-3.424 0-2.084-1.663-3.601-2.513-4.24a.802.802 0 00-.974 0c-.85.639-2.513 2.156-2.513 4.24 0 1.89 1.343 3.424 3 3.424z" + > ); } diff --git a/src/shared/notes/actions.tsx b/src/shared/notes/actions.tsx new file mode 100644 index 00000000..86051ad7 --- /dev/null +++ b/src/shared/notes/actions.tsx @@ -0,0 +1,29 @@ +import * as Tooltip from '@radix-ui/react-tooltip'; + +import { NoteReaction } from '@shared/notes/actions/reaction'; +import { NoteReply } from '@shared/notes/actions/reply'; +import { NoteRepost } from '@shared/notes/actions/repost'; +import { NoteZap } from '@shared/notes/actions/zap'; + +export function NoteActions({ + id, + rootID, + eventPubkey, +}: { + id: string; + rootID?: string; + eventPubkey: string; +}) { + return ( + +
+
+ + + + +
+
+ + ); +} diff --git a/src/shared/notes/actions/reaction.tsx b/src/shared/notes/actions/reaction.tsx new file mode 100644 index 00000000..bf374c21 --- /dev/null +++ b/src/shared/notes/actions/reaction.tsx @@ -0,0 +1,32 @@ +import * as Tooltip from '@radix-ui/react-tooltip'; + +import { ReactionIcon } from '@shared/icons'; + +export function NoteReaction() { + const submit = async () => { + console.log('todo'); + }; + + return ( + + + + + + + Reaction + + + + + ); +} diff --git a/src/shared/notes/metadata/reply.tsx b/src/shared/notes/actions/reply.tsx similarity index 60% rename from src/shared/notes/metadata/reply.tsx rename to src/shared/notes/actions/reply.tsx index 2e552cdc..8ab4b1a0 100644 --- a/src/shared/notes/metadata/reply.tsx +++ b/src/shared/notes/actions/reply.tsx @@ -4,37 +4,28 @@ import { ReplyIcon } from '@shared/icons'; import { useComposer } from '@stores/composer'; -import { compactNumber } from '@utils/number'; - export function NoteReply({ id, rootID, pubkey, - replies, }: { id: string; rootID?: string; pubkey: string; - replies: number; }) { const setReply = useComposer((state) => state.setReply); return ( - + + + { @@ -28,20 +19,15 @@ export function NoteRepost({ return ( - + + + - + + + - Coming Soon + Tip diff --git a/src/shared/notes/contents/kind1.tsx b/src/shared/notes/contents/kind1.tsx deleted file mode 100644 index 53d94191..00000000 --- a/src/shared/notes/contents/kind1.tsx +++ /dev/null @@ -1,40 +0,0 @@ -import { ReactNode } from 'react'; - -import { MentionNote } from '@shared/notes/mentions/note'; -import { ImagePreview } from '@shared/notes/preview/image'; -import { LinkPreview } from '@shared/notes/preview/link'; -import { VideoPreview } from '@shared/notes/preview/video'; - -export function Kind1({ - content, - truncate = false, -}: { - content: { - original: string; - parsed: ReactNode[]; - notes: string[]; - images: string[]; - videos: string[]; - links: string[]; - }; - truncate?: boolean; -}) { - return ( - <> -
- {content.parsed} -
- {content.images.length > 0 && ( - - )} - {content.videos.length > 0 && } - {content.links.length > 0 && } - {content.notes.length > 0 && - content.notes.map((note: string) => )} - - ); -} diff --git a/src/shared/notes/contents/kind1063.tsx b/src/shared/notes/contents/kind1063.tsx deleted file mode 100644 index ea5d7f82..00000000 --- a/src/shared/notes/contents/kind1063.tsx +++ /dev/null @@ -1,24 +0,0 @@ -import { NDKTag } from '@nostr-dev-kit/ndk'; - -import { Image } from '@shared/image'; - -function isImage(url: string) { - return /\.(jpg|jpeg|gif|png|webp|avif)$/.test(url); -} - -export function Kind1063({ metadata }: { metadata: NDKTag[] }) { - const url = metadata[0][1]; - - return ( -
- {isImage(url) && ( - image - )} -
- ); -} diff --git a/src/shared/notes/index.tsx b/src/shared/notes/index.tsx new file mode 100644 index 00000000..de14f037 --- /dev/null +++ b/src/shared/notes/index.tsx @@ -0,0 +1,22 @@ +export * from './actions/reaction'; +export * from './actions/reply'; +export * from './actions/repost'; +export * from './actions/zap'; +export * from './mentions/note'; +export * from './mentions/user'; +export * from './preview/image'; +export * from './preview/link'; +export * from './preview/video'; +export * from './replies/form'; +export * from './replies/item'; +export * from './replies/list'; +export * from './kinds/kind1'; +export * from './kinds/kind1063'; +export * from './metadata'; +export * from './users/mini'; +export * from './users/repost'; +export * from './kinds/thread'; +export * from './kinds/repost'; +export * from './kinds/sub'; +export * from './skeleton'; +export * from './actions'; diff --git a/src/shared/notes/kinds/kind1.tsx b/src/shared/notes/kinds/kind1.tsx new file mode 100644 index 00000000..01701677 --- /dev/null +++ b/src/shared/notes/kinds/kind1.tsx @@ -0,0 +1,52 @@ +import { useMemo } from 'react'; + +import { LinkPreview, NoteActions, NoteMetadata, VideoPreview } from '@shared/notes'; +import { MentionNote } from '@shared/notes/mentions/note'; +import { ImagePreview } from '@shared/notes/preview/image'; +import { User } from '@shared/user'; + +import { parser } from '@utils/parser'; +import { LumeEvent } from '@utils/types'; + +export function NoteKind_1({ + event, + skipMetadata = false, +}: { + event: LumeEvent; + skipMetadata?: boolean; +}) { + const content = useMemo(() => parser(event), [event.id]); + + return ( +
+
+
+ +
+
+
+
+ {content.parsed} +
+ {content.images.length > 0 && } + {content.videos.length > 0 && } + {content.links.length > 0 && } + {content.notes.length > 0 && + content.notes.map((note: string) => )} + +
+
+ {!skipMetadata ? ( + + ) : ( +
+ )} +
+
+
+ ); +} diff --git a/src/shared/notes/kinds/kind1063.tsx b/src/shared/notes/kinds/kind1063.tsx new file mode 100644 index 00000000..04be866a --- /dev/null +++ b/src/shared/notes/kinds/kind1063.tsx @@ -0,0 +1,42 @@ +import { Image } from '@shared/image'; +import { NoteActions, NoteMetadata } from '@shared/notes'; +import { User } from '@shared/user'; + +import { LumeEvent } from '@utils/types'; + +function isImage(url: string) { + return /\.(jpg|jpeg|gif|png|webp|avif)$/.test(url); +} + +export function NoteKind_1063({ event }: { event: LumeEvent }) { + const url = event.tags[0][1]; + + return ( +
+
+
+ +
+
+
+ {isImage(url) && ( + image + )} + +
+
+ +
+
+
+ ); +} diff --git a/src/shared/notes/kinds/repost.tsx b/src/shared/notes/kinds/repost.tsx new file mode 100644 index 00000000..274bae15 --- /dev/null +++ b/src/shared/notes/kinds/repost.tsx @@ -0,0 +1,74 @@ +import { + ImagePreview, + LinkPreview, + MentionNote, + NoteActions, + NoteMetadata, + NoteSkeleton, + RepostUser, + VideoPreview, +} from '@shared/notes'; +import { User } from '@shared/user'; + +import { useEvent } from '@utils/hooks/useEvent'; +import { getRepostID } from '@utils/transform'; +import { LumeEvent } from '@utils/types'; + +export function Repost({ event }: { event: LumeEvent }) { + const repostID = getRepostID(event.tags); + const { status, data } = useEvent(repostID, event.content); + + if (status === 'loading') { + return ( +
+ +
+ ); + } + + if (status === 'error') { + return ( +
+

Failed to fetch

+
+ ); + } + + return ( +
+
+
+
+ + +
+
+
+
+
+ {data.content.parsed} +
+ {data.content.images.length > 0 && ( + + )} + {data.content.videos.length > 0 && ( + + )} + {data.content.links.length > 0 && } + {data.content.notes.length > 0 && + data.content.notes.map((note: string) => ( + + ))} + +
+
+ +
+
+
+ ); +} diff --git a/src/shared/notes/kinds/sub.tsx b/src/shared/notes/kinds/sub.tsx new file mode 100644 index 00000000..36d8ab0e --- /dev/null +++ b/src/shared/notes/kinds/sub.tsx @@ -0,0 +1,60 @@ +import { + ImagePreview, + LinkPreview, + MentionNote, + NoteActions, + NoteSkeleton, + VideoPreview, +} from '@shared/notes'; +import { User } from '@shared/user'; + +import { useEvent } from '@utils/hooks/useEvent'; + +export function SubNote({ id }: { id: string }) { + const { status, data } = useEvent(id); + + if (status === 'loading') { + return ( +
+ +
+ ); + } + + if (status === 'error') { + return ( +
+

Failed to fetch

+
+ ); + } + + return ( + <> +
+
+ +
+
+
+
+ {data.content.parsed} +
+ {data.content.images.length > 0 && ( + + )} + {data.content.videos.length > 0 && ( + + )} + {data.content.links.length > 0 && } + {data.content.notes.length > 0 && + data.content.notes.map((note: string) => ( + + ))} + +
+
+
+ + ); +} diff --git a/src/shared/notes/kinds/thread.tsx b/src/shared/notes/kinds/thread.tsx new file mode 100644 index 00000000..a8ed8e1c --- /dev/null +++ b/src/shared/notes/kinds/thread.tsx @@ -0,0 +1,58 @@ +import { useMemo } from 'react'; + +import { + LinkPreview, + NoteActions, + NoteMetadata, + SubNote, + VideoPreview, +} from '@shared/notes'; +import { MentionNote } from '@shared/notes/mentions/note'; +import { ImagePreview } from '@shared/notes/preview/image'; +import { User } from '@shared/user'; + +import { parser } from '@utils/parser'; +import { LumeEvent } from '@utils/types'; + +export function NoteThread({ + event, + root, + reply, +}: { + event: LumeEvent; + root: string; + reply: string; +}) { + const content = useMemo(() => parser(event), [event.id]); + + return ( +
+
+
{root && }
+
{reply && }
+
+ +
+
+
+
+ {content.parsed} +
+ {content.images.length > 0 && } + {content.videos.length > 0 && } + {content.links.length > 0 && } + {content.notes.length > 0 && + content.notes.map((note: string) => )} + +
+
+ +
+
+
+ ); +} diff --git a/src/shared/notes/kinds/unsupport.tsx b/src/shared/notes/kinds/unsupport.tsx new file mode 100644 index 00000000..1d9cec68 --- /dev/null +++ b/src/shared/notes/kinds/unsupport.tsx @@ -0,0 +1,40 @@ +import { NoteActions, NoteMetadata } from '@shared/notes'; +import { User } from '@shared/user'; + +import { LumeEvent } from '@utils/types'; + +export function NoteKindUnsupport({ event }: { event: LumeEvent }) { + return ( +
+
+
+ +
+
+
+
+
+ + Kind: {event.kind} + +

+ Lume isn't fully support this kind +

+
+
+

{event.content.toString()}

+
+
+ +
+
+ +
+
+
+ ); +} diff --git a/src/shared/notes/mentions/note.tsx b/src/shared/notes/mentions/note.tsx index 671412c7..15dde810 100644 --- a/src/shared/notes/mentions/note.tsx +++ b/src/shared/notes/mentions/note.tsx @@ -3,17 +3,15 @@ import { memo } from 'react'; import { createBlock } from '@libs/storage'; -import { Kind1 } from '@shared/notes/contents/kind1'; -import { Kind1063 } from '@shared/notes/contents/kind1063'; import { NoteSkeleton } from '@shared/notes/skeleton'; import { User } from '@shared/user'; import { useEvent } from '@utils/hooks/useEvent'; export const MentionNote = memo(function MentionNote({ id }: { id: string }) { - const queryClient = useQueryClient(); const { status, data } = useEvent(id); + const queryClient = useQueryClient(); const block = useMutation({ mutationFn: (data: any) => { return createBlock(data.kind, data.title, data.content); @@ -45,25 +43,7 @@ export const MentionNote = memo(function MentionNote({ id }: { id: string }) { ) : status === 'success' ? ( <> -
- {data.kind === 1 && } - {data.kind === 1063 && } - {data.kind !== 1 && data.kind !== 1063 && ( -
-
- - Kind: {data.kind} - -

- Lume isn't fully support this kind in newsfeed -

-
-
-

{data.content}

-
-
- )} -
+
{data.content.parsed}
) : (

Failed to fetch event

diff --git a/src/shared/notes/metadata.tsx b/src/shared/notes/metadata.tsx index 7f39aec6..b56de16d 100644 --- a/src/shared/notes/metadata.tsx +++ b/src/shared/notes/metadata.tsx @@ -1,74 +1,66 @@ import { NDKEvent, NDKFilter } from '@nostr-dev-kit/ndk'; -import * as Tooltip from '@radix-ui/react-tooltip'; import { useMutation, useQuery, useQueryClient } from '@tanstack/react-query'; import { decode } from 'light-bolt11-decoder'; import { useNDK } from '@libs/ndk/provider'; import { createBlock, createReplyNote } from '@libs/storage'; -import { LoaderIcon, ReplyIcon, RepostIcon, ZapIcon } from '@shared/icons'; -import { ThreadIcon } from '@shared/icons/thread'; -import { NoteReply } from '@shared/notes/metadata/reply'; -import { NoteRepost } from '@shared/notes/metadata/repost'; -import { NoteZap } from '@shared/notes/metadata/zap'; +import { LoaderIcon } from '@shared/icons'; +import { MiniUser } from '@shared/notes/users/mini'; -export function NoteMetadata({ - id, - rootID, - eventPubkey, -}: { - id: string; - rootID?: string; - eventPubkey: string; -}) { +import { compactNumber } from '@utils/number'; + +export function NoteMetadata({ id }: { id: string }) { const queryClient = useQueryClient(); const { ndk } = useNDK(); - const { status, data } = useQuery(['note-metadata', id], async () => { - let replies = 0; - let reposts = 0; - let zap = 0; + const { status, data } = useQuery( + ['note-metadata', id], + async () => { + let replies = 0; + let zap = 0; + const users = []; - const filter: NDKFilter = { - '#e': [id], - kinds: [1, 6, 9735], - }; + const filter: NDKFilter = { + '#e': [id], + kinds: [1, 9735], + }; - const events = await ndk.fetchEvents(filter); - events.forEach((event: NDKEvent) => { - switch (event.kind) { - case 1: - replies += 1; - createReplyNote( - id, - event.id, - event.pubkey, - event.kind, - event.tags, - event.content, - event.created_at - ); - break; - case 6: - reposts += 1; - break; - case 9735: { - const bolt11 = event.tags.find((tag) => tag[0] === 'bolt11')[1]; - if (bolt11) { - const decoded = decode(bolt11); - const amount = decoded.sections.find((item) => item.name === 'amount'); - const sats = amount.value / 1000; - zap += sats; + const events = await ndk.fetchEvents(filter); + events.forEach((event: NDKEvent) => { + switch (event.kind) { + case 1: + replies += 1; + if (users.length < 3) users.push(event.pubkey); + createReplyNote( + id, + event.id, + event.pubkey, + event.kind, + event.tags, + event.content, + event.created_at + ); + break; + case 9735: { + const bolt11 = event.tags.find((tag) => tag[0] === 'bolt11')[1]; + if (bolt11) { + const decoded = decode(bolt11); + const amount = decoded.sections.find((item) => item.name === 'amount'); + const sats = amount.value / 1000; + zap += sats; + } + break; } - break; + default: + break; } - default: - break; - } - }); + }); - return { replies, reposts, zap }; - }); + return { replies, users, zap }; + }, + { refetchOnWindowFocus: false, refetchOnReconnect: false } + ); const block = useMutation({ mutationFn: (data: any) => { @@ -85,81 +77,50 @@ export function NoteMetadata({ if (status === 'loading') { return ( -
-
- - -
-
- - -
-
- - +
+
+
+
); } return ( - -
-
- - - -
- - - - - - - Open thread - - - - -
-
+
+ {data.replies > 0 ? ( + <> +
+
+
+
+ {data.users?.map((user, index) => ( + + ))} +
+
+
+ + · +

+ + {compactNumber.format(data.zap)} + {' '} + zaps +

+
+
+ + ) : ( +
+ )} +
); } diff --git a/src/shared/notes/note.tsx b/src/shared/notes/note.tsx deleted file mode 100644 index 8cdd5dfe..00000000 --- a/src/shared/notes/note.tsx +++ /dev/null @@ -1,89 +0,0 @@ -import { useMemo } from 'react'; - -import { Kind1 } from '@shared/notes/contents/kind1'; -import { Kind1063 } from '@shared/notes/contents/kind1063'; -import { NoteMetadata } from '@shared/notes/metadata'; -import { NoteParent } from '@shared/notes/parent'; -import { Repost } from '@shared/notes/repost'; -import { User } from '@shared/user'; - -import { parser } from '@utils/parser'; -import { LumeEvent } from '@utils/types'; - -interface Note { - event: LumeEvent; - skipMetadata?: boolean; -} - -export function Note({ event, skipMetadata = false }: Note) { - const isRepost = event.kind === 6; - - const renderParent = useMemo(() => { - if (!isRepost && event.parent_id && event.parent_id !== event.event_id) { - return ; - } else { - return null; - } - }, [event.parent_id]); - - const renderRepost = useMemo(() => { - if (isRepost) { - return ; - } else { - return null; - } - }, [event.kind]); - - const renderContent = useMemo(() => { - switch (event.kind) { - case 1: { - const content = parser(event); - return ; - } - case 6: - return null; - case 1063: - return ; - default: - return ( -
-
- - Kind: {event.kind} - -

- Lume isn't fully support this kind in newsfeed -

-
-
-

{event.content}

-
-
- ); - } - }, [event.kind]); - - return ( -
-
- {renderParent} -
- -
- {renderContent} - {!isRepost && !skipMetadata ? ( - - ) : ( -
- )} -
-
- {renderRepost} -
-
- ); -} diff --git a/src/shared/notes/parent.tsx b/src/shared/notes/parent.tsx deleted file mode 100644 index ac9eb95b..00000000 --- a/src/shared/notes/parent.tsx +++ /dev/null @@ -1,46 +0,0 @@ -import { Kind1 } from '@shared/notes/contents/kind1'; -import { Kind1063 } from '@shared/notes/contents/kind1063'; -import { NoteMetadata } from '@shared/notes/metadata'; -import { NoteSkeleton } from '@shared/notes/skeleton'; -import { User } from '@shared/user'; - -import { useEvent } from '@utils/hooks/useEvent'; - -export function NoteParent({ id }: { id: string }) { - const { status, data } = useEvent(id); - - return ( -
-
- {status === 'loading' ? ( - - ) : status === 'success' ? ( - <> - -
- {data.kind === 1 && } - {data.kind === 1063 && } - {data.kind !== 1 && data.kind !== 1063 && ( -
-
- - Kind: {data.kind} - -

- Lume isn't fully support this kind in newsfeed -

-
-
-

{data.content || data.toString()}

-
-
- )} - -
- - ) : ( -

Failed to fetch event

- )} -
- ); -} diff --git a/src/shared/notes/replies/item.tsx b/src/shared/notes/replies/item.tsx index 22d12af3..c6718bd8 100644 --- a/src/shared/notes/replies/item.tsx +++ b/src/shared/notes/replies/item.tsx @@ -1,4 +1,3 @@ -import { Kind1 } from '@shared/notes/contents/kind1'; import { NoteMetadata } from '@shared/notes/metadata'; import { User } from '@shared/user'; @@ -12,7 +11,6 @@ export function Reply({ data }: { data: any }) {
-
diff --git a/src/shared/notes/repost.tsx b/src/shared/notes/repost.tsx deleted file mode 100644 index 7e0a685e..00000000 --- a/src/shared/notes/repost.tsx +++ /dev/null @@ -1,49 +0,0 @@ -import { Kind1 } from '@shared/notes/contents/kind1'; -import { Kind1063 } from '@shared/notes/contents/kind1063'; -import { NoteMetadata } from '@shared/notes/metadata'; -import { NoteSkeleton } from '@shared/notes/skeleton'; -import { User } from '@shared/user'; - -import { useEvent } from '@utils/hooks/useEvent'; -import { getRepostID } from '@utils/transform'; -import { LumeEvent } from '@utils/types'; - -export function Repost({ event }: { event: LumeEvent }) { - const repostID = getRepostID(event.tags); - const { status, data } = useEvent(repostID); - - return ( -
-
- {status === 'loading' ? ( - - ) : status === 'success' ? ( - <> - -
- {data.kind === 1 && } - {data.kind === 1063 && } - {data.kind !== 1 && data.kind !== 1063 && ( -
-
- - Kind: {data.kind} - -

- Lume isn't fully support this kind in newsfeed -

-
-
-

{data.content || data.toString()}

-
-
- )} - -
- - ) : ( -

Failed to fetch event

- )} -
- ); -} diff --git a/src/shared/notes/users/mini.tsx b/src/shared/notes/users/mini.tsx new file mode 100644 index 00000000..ad3860f4 --- /dev/null +++ b/src/shared/notes/users/mini.tsx @@ -0,0 +1,22 @@ +import { Image } from '@shared/image'; + +import { DEFAULT_AVATAR } from '@stores/constants'; + +import { useProfile } from '@utils/hooks/useProfile'; + +export function MiniUser({ pubkey }: { pubkey: string }) { + const { status, user } = useProfile(pubkey); + + if (status === 'loading') { + return
; + } + + return ( + {pubkey} + ); +} diff --git a/src/shared/notes/users/repost.tsx b/src/shared/notes/users/repost.tsx new file mode 100644 index 00000000..d0dd220d --- /dev/null +++ b/src/shared/notes/users/repost.tsx @@ -0,0 +1,34 @@ +import { Image } from '@shared/image'; + +import { DEFAULT_AVATAR } from '@stores/constants'; + +import { useProfile } from '@utils/hooks/useProfile'; +import { shortenKey } from '@utils/shortenKey'; + +export function RepostUser({ pubkey }: { pubkey: string }) { + const { status, user } = useProfile(pubkey); + + if (status === 'loading') { + return
; + } + + return ( +
+ {pubkey} +
+
+ {user?.nip05?.toLowerCase() || + user?.name || + user?.display_name || + shortenKey(pubkey)} +
+ reposted +
+
+ ); +} diff --git a/src/shared/user.tsx b/src/shared/user.tsx index cd76290c..1ca52c5a 100644 --- a/src/shared/user.tsx +++ b/src/shared/user.tsx @@ -14,13 +14,13 @@ export function User({ pubkey, time, size, - repost, + isRepost = false, isChat = false, }: { pubkey: string; time: number; size?: string; - repost?: boolean; + isRepost?: boolean; isChat?: boolean; }) { const { status, user } = useProfile(pubkey); @@ -50,9 +50,7 @@ export function User({ return ( -
+
- {user?.nip05 || user?.name || user?.displayName || shortenKey(pubkey)} + {user?.nip05?.toLowerCase() || + user?.name || + user?.display_name || + shortenKey(pubkey)}
- {repost && ( - reposted - )} - · {createdAt}
{ const result = await getNoteByID(id); if (result) { - if (result.kind === 1 || result.kind === 1063) { + if (result.kind === 1) { result['content'] = parser(result); } return result; } else { + if (fallback) { + const embed = JSON.parse(fallback); + await createNote( + embed.id, + embed.pubkey, + embed.kind, + embed.tags, + embed.content, + embed.created_at + ); + } const event = await ndk.fetchEvent(id); await createNote( event.id, @@ -27,7 +38,7 @@ export function useEvent(id: string) { event.created_at ); event['event_id'] = event.id; - if (event.kind === 1 || event.kind === 1063) { + if (event.kind === 1) { // eslint-disable-next-line @typescript-eslint/ban-ts-comment // @ts-ignore event['content'] = parser(event); diff --git a/src/utils/hooks/useProfile.tsx b/src/utils/hooks/useProfile.tsx index 8ecce2b0..4b1363f6 100644 --- a/src/utils/hooks/useProfile.tsx +++ b/src/utils/hooks/useProfile.tsx @@ -24,9 +24,6 @@ export function useProfile(pubkey: string, fallback?: string) { if (latest) { await createMetadata(pubkey, pubkey, latest.content); return JSON.parse(latest.content); - } else { - await createMetadata(pubkey, pubkey, [...events][0].content); - return JSON.parse([...events][0].content); } } } else { diff --git a/src/utils/parser.tsx b/src/utils/parser.tsx index 54a46621..e3c7b5d4 100644 --- a/src/utils/parser.tsx +++ b/src/utils/parser.tsx @@ -1,4 +1,3 @@ -import destr from 'destr'; import getUrls from 'get-urls'; import { Event, parseReferences } from 'nostr-tools'; import { ReactNode } from 'react'; @@ -9,20 +8,7 @@ import { MentionUser } from '@shared/notes/mentions/user'; import { LumeEvent } from '@utils/types'; -function isJsonString(str: string[][] | string) { - try { - if (typeof str === 'string') JSON.parse(str); - } catch (e) { - return false; - } - return true; -} - export function parser(event: LumeEvent) { - if (isJsonString(event.tags)) { - event['tags'] = destr(event.tags); - } - const references = parseReferences(event as Event); const urls = getUrls(event.content);