mirror of
https://github.com/luminous-devs/lume.git
synced 2024-09-19 19:46:34 +00:00
add block feature
This commit is contained in:
parent
bada9132f1
commit
6d43d2c53a
14
package.json
14
package.json
@ -16,7 +16,7 @@
|
|||||||
"@floating-ui/react": "^0.23.1",
|
"@floating-ui/react": "^0.23.1",
|
||||||
"@headlessui/react": "^1.7.14",
|
"@headlessui/react": "^1.7.14",
|
||||||
"@nostr-connect/connect": "^0.4.0",
|
"@nostr-connect/connect": "^0.4.0",
|
||||||
"@tanstack/react-query": "^4.29.5",
|
"@tanstack/react-query": "^4.29.7",
|
||||||
"@tanstack/react-virtual": "3.0.0-beta.54",
|
"@tanstack/react-virtual": "3.0.0-beta.54",
|
||||||
"@tauri-apps/api": "^1.3.0",
|
"@tauri-apps/api": "^1.3.0",
|
||||||
"@vidstack/react": "^0.4.5",
|
"@vidstack/react": "^0.4.5",
|
||||||
@ -25,12 +25,12 @@
|
|||||||
"jotai": "^2.1.0",
|
"jotai": "^2.1.0",
|
||||||
"light-bolt11-decoder": "^3.0.0",
|
"light-bolt11-decoder": "^3.0.0",
|
||||||
"nostr-relaypool": "^0.6.27",
|
"nostr-relaypool": "^0.6.27",
|
||||||
"nostr-tools": "^1.10.1",
|
"nostr-tools": "^1.11.1",
|
||||||
"react": "^18.2.0",
|
"react": "^18.2.0",
|
||||||
"react-dom": "^18.2.0",
|
"react-dom": "^18.2.0",
|
||||||
"react-hook-form": "^7.43.9",
|
"react-hook-form": "^7.43.9",
|
||||||
"react-markdown": "^8.0.7",
|
"react-markdown": "^8.0.7",
|
||||||
"react-virtuoso": "^4.3.6",
|
"react-virtuoso": "^4.3.7",
|
||||||
"remark-gfm": "^3.0.1",
|
"remark-gfm": "^3.0.1",
|
||||||
"slate": "^0.94.1",
|
"slate": "^0.94.1",
|
||||||
"slate-history": "^0.93.0",
|
"slate-history": "^0.93.0",
|
||||||
@ -43,7 +43,7 @@
|
|||||||
"devDependencies": {
|
"devDependencies": {
|
||||||
"@tailwindcss/typography": "^0.5.9",
|
"@tailwindcss/typography": "^0.5.9",
|
||||||
"@tauri-apps/cli": "^1.3.1",
|
"@tauri-apps/cli": "^1.3.1",
|
||||||
"@types/node": "^18.16.9",
|
"@types/node": "^18.16.13",
|
||||||
"@types/react": "^18.2.6",
|
"@types/react": "^18.2.6",
|
||||||
"@types/react-dom": "^18.2.4",
|
"@types/react-dom": "^18.2.4",
|
||||||
"@types/youtube-player": "^5.5.7",
|
"@types/youtube-player": "^5.5.7",
|
||||||
@ -59,9 +59,9 @@
|
|||||||
"rome": "12.1.0",
|
"rome": "12.1.0",
|
||||||
"tailwindcss": "^3.3.2",
|
"tailwindcss": "^3.3.2",
|
||||||
"typescript": "^4.9.5",
|
"typescript": "^4.9.5",
|
||||||
"vite": "^4.3.5",
|
"vite": "^4.3.8",
|
||||||
"vite-plugin-ssr": "^0.4.123",
|
"vite-plugin-ssr": "^0.4.126",
|
||||||
"vite-plugin-top-level-await": "^1.3.0",
|
"vite-plugin-top-level-await": "^1.3.1",
|
||||||
"vite-tsconfig-paths": "^4.2.0",
|
"vite-tsconfig-paths": "^4.2.0",
|
||||||
"ws": "^8.13.0"
|
"ws": "^8.13.0"
|
||||||
}
|
}
|
||||||
|
273
pnpm-lock.yaml
273
pnpm-lock.yaml
@ -11,8 +11,8 @@ dependencies:
|
|||||||
specifier: ^0.4.0
|
specifier: ^0.4.0
|
||||||
version: 0.4.0(react@18.2.0)
|
version: 0.4.0(react@18.2.0)
|
||||||
'@tanstack/react-query':
|
'@tanstack/react-query':
|
||||||
specifier: ^4.29.5
|
specifier: ^4.29.7
|
||||||
version: 4.29.5(react-dom@18.2.0)(react@18.2.0)
|
version: 4.29.7(react-dom@18.2.0)(react@18.2.0)
|
||||||
'@tanstack/react-virtual':
|
'@tanstack/react-virtual':
|
||||||
specifier: 3.0.0-beta.54
|
specifier: 3.0.0-beta.54
|
||||||
version: 3.0.0-beta.54(react@18.2.0)
|
version: 3.0.0-beta.54(react@18.2.0)
|
||||||
@ -38,8 +38,8 @@ dependencies:
|
|||||||
specifier: ^0.6.27
|
specifier: ^0.6.27
|
||||||
version: 0.6.27(ws@8.13.0)
|
version: 0.6.27(ws@8.13.0)
|
||||||
nostr-tools:
|
nostr-tools:
|
||||||
specifier: ^1.10.1
|
specifier: ^1.11.1
|
||||||
version: 1.10.1
|
version: 1.11.1
|
||||||
react:
|
react:
|
||||||
specifier: ^18.2.0
|
specifier: ^18.2.0
|
||||||
version: 18.2.0
|
version: 18.2.0
|
||||||
@ -53,8 +53,8 @@ dependencies:
|
|||||||
specifier: ^8.0.7
|
specifier: ^8.0.7
|
||||||
version: 8.0.7(@types/react@18.2.6)(react@18.2.0)
|
version: 8.0.7(@types/react@18.2.6)(react@18.2.0)
|
||||||
react-virtuoso:
|
react-virtuoso:
|
||||||
specifier: ^4.3.6
|
specifier: ^4.3.7
|
||||||
version: 4.3.6(react-dom@18.2.0)(react@18.2.0)
|
version: 4.3.7(react-dom@18.2.0)(react@18.2.0)
|
||||||
remark-gfm:
|
remark-gfm:
|
||||||
specifier: ^3.0.1
|
specifier: ^3.0.1
|
||||||
version: 3.0.1
|
version: 3.0.1
|
||||||
@ -78,7 +78,7 @@ dependencies:
|
|||||||
version: github.com/tauri-apps/tauri-plugin-sql/312c4d39ac5eb1c6c75e8ecee1c4bc89ed799675
|
version: github.com/tauri-apps/tauri-plugin-sql/312c4d39ac5eb1c6c75e8ecee1c4bc89ed799675
|
||||||
vidstack:
|
vidstack:
|
||||||
specifier: ^0.4.5
|
specifier: ^0.4.5
|
||||||
version: 0.4.5(typescript@4.9.5)
|
version: 0.4.5
|
||||||
|
|
||||||
devDependencies:
|
devDependencies:
|
||||||
'@tailwindcss/typography':
|
'@tailwindcss/typography':
|
||||||
@ -88,8 +88,8 @@ devDependencies:
|
|||||||
specifier: ^1.3.1
|
specifier: ^1.3.1
|
||||||
version: 1.3.1
|
version: 1.3.1
|
||||||
'@types/node':
|
'@types/node':
|
||||||
specifier: ^18.16.9
|
specifier: ^18.16.13
|
||||||
version: 18.16.9
|
version: 18.16.13
|
||||||
'@types/react':
|
'@types/react':
|
||||||
specifier: ^18.2.6
|
specifier: ^18.2.6
|
||||||
version: 18.2.6
|
version: 18.2.6
|
||||||
@ -101,7 +101,7 @@ devDependencies:
|
|||||||
version: 5.5.7
|
version: 5.5.7
|
||||||
'@vitejs/plugin-react-swc':
|
'@vitejs/plugin-react-swc':
|
||||||
specifier: ^3.3.1
|
specifier: ^3.3.1
|
||||||
version: 3.3.1(vite@4.3.5)
|
version: 3.3.1(vite@4.3.8)
|
||||||
autoprefixer:
|
autoprefixer:
|
||||||
specifier: ^10.4.14
|
specifier: ^10.4.14
|
||||||
version: 10.4.14(postcss@8.4.23)
|
version: 10.4.14(postcss@8.4.23)
|
||||||
@ -136,17 +136,17 @@ devDependencies:
|
|||||||
specifier: ^4.9.5
|
specifier: ^4.9.5
|
||||||
version: 4.9.5
|
version: 4.9.5
|
||||||
vite:
|
vite:
|
||||||
specifier: ^4.3.5
|
specifier: ^4.3.8
|
||||||
version: 4.3.5(@types/node@18.16.9)
|
version: 4.3.8(@types/node@18.16.13)
|
||||||
vite-plugin-ssr:
|
vite-plugin-ssr:
|
||||||
specifier: ^0.4.123
|
specifier: ^0.4.126
|
||||||
version: 0.4.123(vite@4.3.5)
|
version: 0.4.126(vite@4.3.8)
|
||||||
vite-plugin-top-level-await:
|
vite-plugin-top-level-await:
|
||||||
specifier: ^1.3.0
|
specifier: ^1.3.1
|
||||||
version: 1.3.0(vite@4.3.5)
|
version: 1.3.1(vite@4.3.8)
|
||||||
vite-tsconfig-paths:
|
vite-tsconfig-paths:
|
||||||
specifier: ^4.2.0
|
specifier: ^4.2.0
|
||||||
version: 4.2.0(typescript@4.9.5)(vite@4.3.5)
|
version: 4.2.0(typescript@4.9.5)(vite@4.3.8)
|
||||||
ws:
|
ws:
|
||||||
specifier: ^8.13.0
|
specifier: ^8.13.0
|
||||||
version: 8.13.0
|
version: 8.13.0
|
||||||
@ -468,12 +468,14 @@ packages:
|
|||||||
resolution: {integrity: sha512-JEoTAsctQwKyL3RIfhqi8a1rVXvBnK7HBEIhrcOICjZ5zb2ignh6FHSa9rmShyoF7rKYd58javxfhFjKC6WCwQ==}
|
resolution: {integrity: sha512-JEoTAsctQwKyL3RIfhqi8a1rVXvBnK7HBEIhrcOICjZ5zb2ignh6FHSa9rmShyoF7rKYd58javxfhFjKC6WCwQ==}
|
||||||
dev: false
|
dev: false
|
||||||
|
|
||||||
/@noble/hashes@1.2.0:
|
/@noble/curves@1.0.0:
|
||||||
resolution: {integrity: sha512-FZfhjEDbT5GRswV3C6uvLPHMiVD6lQBmpoX5+eSiPaMTXte/IKqI5dykDxzZB/WBeK/CDuQRBWarPdi3FNY2zQ==}
|
resolution: {integrity: sha512-2upgEu0iLiDVDZkNLeFV2+ht0BAVgQnEmCk6JsOch9Rp8xfkMCbvbAZlA2pBHQc73dbl+vFOXfqkf4uemdn0bw==}
|
||||||
|
dependencies:
|
||||||
|
'@noble/hashes': 1.3.0
|
||||||
dev: false
|
dev: false
|
||||||
|
|
||||||
/@noble/secp256k1@1.7.1:
|
/@noble/hashes@1.3.0:
|
||||||
resolution: {integrity: sha512-hOUk6AyBFmqVrv7k5WAw/LpszxVbj9gGN4JRkIX52fdFAj1UA61KXmZDvqVEm+pOyec3+fIeZB02LYa/pWOArw==}
|
resolution: {integrity: sha512-ilHEACi9DwqJB0pw7kv+Apvh50jiiSyR/cQ3y4W7lOR5mhvn/50FLUfsnfJz0BDZtl/RR16kXvptiv6q1msYZg==}
|
||||||
dev: false
|
dev: false
|
||||||
|
|
||||||
/@nodelib/fs.scandir@2.1.5:
|
/@nodelib/fs.scandir@2.1.5:
|
||||||
@ -504,7 +506,7 @@ packages:
|
|||||||
react: '>=16'
|
react: '>=16'
|
||||||
dependencies:
|
dependencies:
|
||||||
events: 3.3.0
|
events: 3.3.0
|
||||||
nostr-tools: 1.10.1
|
nostr-tools: 1.11.1
|
||||||
react: 18.2.0
|
react: 18.2.0
|
||||||
dev: false
|
dev: false
|
||||||
|
|
||||||
@ -574,23 +576,23 @@ packages:
|
|||||||
resolution: {integrity: sha512-ZxOhsSyxYwLJj3pLZCefNitxsj093tb2vq90mp2txoYeBqbcjDjqFhyM8eUjq/uFm6zJ+mUuqxlS2FkuSY1MTA==}
|
resolution: {integrity: sha512-ZxOhsSyxYwLJj3pLZCefNitxsj093tb2vq90mp2txoYeBqbcjDjqFhyM8eUjq/uFm6zJ+mUuqxlS2FkuSY1MTA==}
|
||||||
dev: false
|
dev: false
|
||||||
|
|
||||||
/@scure/bip32@1.1.4:
|
/@scure/bip32@1.3.0:
|
||||||
resolution: {integrity: sha512-m925ACYK0wPELsF7Z/VdLGmKj1StIeHraPMYB9xiAFiq/PnvqWd/99I0TQ2OZhjjlMDsDJeZlyXMWi0beaA7NA==}
|
resolution: {integrity: sha512-bcKpo1oj54hGholplGLpqPHRbIsnbixFtc06nwuNM5/dwSXOq/AAYoIBRsBmnZJSdfeNW5rnff7NTAz3ZCqR9Q==}
|
||||||
dependencies:
|
dependencies:
|
||||||
'@noble/hashes': 1.2.0
|
'@noble/curves': 1.0.0
|
||||||
'@noble/secp256k1': 1.7.1
|
'@noble/hashes': 1.3.0
|
||||||
'@scure/base': 1.1.1
|
'@scure/base': 1.1.1
|
||||||
dev: false
|
dev: false
|
||||||
|
|
||||||
/@scure/bip39@1.1.1:
|
/@scure/bip39@1.2.0:
|
||||||
resolution: {integrity: sha512-t+wDck2rVkh65Hmv280fYdVdY25J9YeEUIgn2LG1WM6gxFkGzcksoDiUkWVpVp3Oex9xGC68JU2dSbUfwZ2jPg==}
|
resolution: {integrity: sha512-SX/uKq52cuxm4YFXWFaVByaSHJh2w3BnokVSeUJVCv6K7WulT9u2BuNRBhuFl8vAuYnzx9bEu9WgpcNYTrYieg==}
|
||||||
dependencies:
|
dependencies:
|
||||||
'@noble/hashes': 1.2.0
|
'@noble/hashes': 1.3.0
|
||||||
'@scure/base': 1.1.1
|
'@scure/base': 1.1.1
|
||||||
dev: false
|
dev: false
|
||||||
|
|
||||||
/@swc/core-darwin-arm64@1.3.57:
|
/@swc/core-darwin-arm64@1.3.59:
|
||||||
resolution: {integrity: sha512-lhAK9kF/ppZdNTdaxJl2gE0bXubzQXTgxB2Xojme/1sbOipaLTskBbJ3FLySChpmVOzD0QSCTiW8w/dmQxqNIQ==}
|
resolution: {integrity: sha512-AnqWFBgEKHP0jb4iZqx7eVQT9/rX45+DE4Ox7GpwCahUKxxrsDLyXzKhwLwQuAjUvtu5JcSB77szKpPGDM49fQ==}
|
||||||
engines: {node: '>=10'}
|
engines: {node: '>=10'}
|
||||||
cpu: [arm64]
|
cpu: [arm64]
|
||||||
os: [darwin]
|
os: [darwin]
|
||||||
@ -598,8 +600,8 @@ packages:
|
|||||||
dev: true
|
dev: true
|
||||||
optional: true
|
optional: true
|
||||||
|
|
||||||
/@swc/core-darwin-x64@1.3.57:
|
/@swc/core-darwin-x64@1.3.59:
|
||||||
resolution: {integrity: sha512-jsTDH8Et/xdOM/ZCNvtrT6J8FT255OrMhEDvHZQZTgoky4oW/3FHUfji4J2FE97gitJqNJI8MuNuiGq81pIJRw==}
|
resolution: {integrity: sha512-iqDs+yii9mOsmpJez82SEi4d4prWDRlapHxKnDVJ0x1AqRo41vIq8t3fujrvCHYU5VQgOYGh4ooXQpaP2H3B2A==}
|
||||||
engines: {node: '>=10'}
|
engines: {node: '>=10'}
|
||||||
cpu: [x64]
|
cpu: [x64]
|
||||||
os: [darwin]
|
os: [darwin]
|
||||||
@ -607,8 +609,8 @@ packages:
|
|||||||
dev: true
|
dev: true
|
||||||
optional: true
|
optional: true
|
||||||
|
|
||||||
/@swc/core-linux-arm-gnueabihf@1.3.57:
|
/@swc/core-linux-arm-gnueabihf@1.3.59:
|
||||||
resolution: {integrity: sha512-MZv3fwcCmppbwfCWaE8cZvzbXOjX7n5SEC1hF2lgItTqp4S04dFk1iX50jKr6xS6xSLlRBPqDxwZH0sBpHaEuA==}
|
resolution: {integrity: sha512-PB0PP+SgkCSd/kYmltnPiGv42cOSaih1OjXCEjxvNwUFEmWqluW6uGdWaNiR1LoYMxhcHZTc336jL2+O3l6p0Q==}
|
||||||
engines: {node: '>=10'}
|
engines: {node: '>=10'}
|
||||||
cpu: [arm]
|
cpu: [arm]
|
||||||
os: [linux]
|
os: [linux]
|
||||||
@ -616,8 +618,8 @@ packages:
|
|||||||
dev: true
|
dev: true
|
||||||
optional: true
|
optional: true
|
||||||
|
|
||||||
/@swc/core-linux-arm64-gnu@1.3.57:
|
/@swc/core-linux-arm64-gnu@1.3.59:
|
||||||
resolution: {integrity: sha512-wUeqa/qbkOEGl6TaDQZZL7txrQXs1vL7ERjPYhi9El+ywacFY/rTW2pK5DqaNk2eulVnLhbbNjsE1OMGSEWGkQ==}
|
resolution: {integrity: sha512-Ol/JPszWZ+OZ44FOdJe35TfJ1ckG4pYaisZJ4E7PzfwfVe2ygX85C5WWR4e5L0Y1zFvzpcI7gdyC2wzcXk4Cig==}
|
||||||
engines: {node: '>=10'}
|
engines: {node: '>=10'}
|
||||||
cpu: [arm64]
|
cpu: [arm64]
|
||||||
os: [linux]
|
os: [linux]
|
||||||
@ -625,8 +627,8 @@ packages:
|
|||||||
dev: true
|
dev: true
|
||||||
optional: true
|
optional: true
|
||||||
|
|
||||||
/@swc/core-linux-arm64-musl@1.3.57:
|
/@swc/core-linux-arm64-musl@1.3.59:
|
||||||
resolution: {integrity: sha512-pZfp1B9XfH7ZhDKFjr4qbyM093zU2Ri0IZq2M2A4W9q92+Ivy8oEIqw+gSRO3jwMDqRMEtFD49YuFhkJQakxdA==}
|
resolution: {integrity: sha512-PtTTtGbj9GiY5gJdoSFL2A0vL6BRaS1haAhp6g3hZvLDkTTg+rJURmzwBMMjaQlnGC62x/lLf6MoszHG/05//Q==}
|
||||||
engines: {node: '>=10'}
|
engines: {node: '>=10'}
|
||||||
cpu: [arm64]
|
cpu: [arm64]
|
||||||
os: [linux]
|
os: [linux]
|
||||||
@ -634,8 +636,8 @@ packages:
|
|||||||
dev: true
|
dev: true
|
||||||
optional: true
|
optional: true
|
||||||
|
|
||||||
/@swc/core-linux-x64-gnu@1.3.57:
|
/@swc/core-linux-x64-gnu@1.3.59:
|
||||||
resolution: {integrity: sha512-dvtQnv07NikV+CJ+9PYJ3fqphSigzfvSUH6wRCmb5OzLDDLFnPLMrEO0pGeURvdIWCOhngcHF252C1Hl5uFSzA==}
|
resolution: {integrity: sha512-XBW9AGi0YsIN76IfesnDSBn/5sjR69J75KUNte8sH6seYlHJ0/kblqUMbUcfr0CiGoJadbzAZeKZZmfN7EsHpg==}
|
||||||
engines: {node: '>=10'}
|
engines: {node: '>=10'}
|
||||||
cpu: [x64]
|
cpu: [x64]
|
||||||
os: [linux]
|
os: [linux]
|
||||||
@ -643,8 +645,8 @@ packages:
|
|||||||
dev: true
|
dev: true
|
||||||
optional: true
|
optional: true
|
||||||
|
|
||||||
/@swc/core-linux-x64-musl@1.3.57:
|
/@swc/core-linux-x64-musl@1.3.59:
|
||||||
resolution: {integrity: sha512-1TKCSngyQxpzwBYDzF5MrEfYRDhlzt/GN1ZqlSnsJIPGkABOWZxYDvWJuMrkASdIztn3jSTPU2ih7rR7YQ8IIw==}
|
resolution: {integrity: sha512-Cy5E939SdWPQ34cg6UABNO0RyEe0FuWqzZ/GLKtK11Ir4fjttVlucZiY59uQNyUVUc8T2qE0VBFCyD/zYGuHtg==}
|
||||||
engines: {node: '>=10'}
|
engines: {node: '>=10'}
|
||||||
cpu: [x64]
|
cpu: [x64]
|
||||||
os: [linux]
|
os: [linux]
|
||||||
@ -652,8 +654,8 @@ packages:
|
|||||||
dev: true
|
dev: true
|
||||||
optional: true
|
optional: true
|
||||||
|
|
||||||
/@swc/core-win32-arm64-msvc@1.3.57:
|
/@swc/core-win32-arm64-msvc@1.3.59:
|
||||||
resolution: {integrity: sha512-HvBYFyf4uBua/jyTrcFLKcq8SIbKVYfz2qWsbgSAZvuQPZvDC1XhN5EDH2tPZmT97F0CJx3fltH5nli6XY1/EQ==}
|
resolution: {integrity: sha512-z5ZJxizRvRoSAaevRIi3YjQh74OFWEIhonSDWNdqDL7RbjEivcatYcG7OikH6s+rtPhOcwNm3PbGV2Prcgh/gg==}
|
||||||
engines: {node: '>=10'}
|
engines: {node: '>=10'}
|
||||||
cpu: [arm64]
|
cpu: [arm64]
|
||||||
os: [win32]
|
os: [win32]
|
||||||
@ -661,8 +663,8 @@ packages:
|
|||||||
dev: true
|
dev: true
|
||||||
optional: true
|
optional: true
|
||||||
|
|
||||||
/@swc/core-win32-ia32-msvc@1.3.57:
|
/@swc/core-win32-ia32-msvc@1.3.59:
|
||||||
resolution: {integrity: sha512-PS8AtK9e6Rp97S0ek9W5VCZNCbDaHBUasiJUmaYqRVCq/Mn6S7eQlhd0iUDnjsagigQtoCRgMUzkVknd1tarsQ==}
|
resolution: {integrity: sha512-vxpsn+hrKAhi5YusQfB/JXUJJVX40rIRE/L49ilBEqdbH8Khkoego6AD+2vWqTdJcUHo1WiAIAEZ0rTsjyorLQ==}
|
||||||
engines: {node: '>=10'}
|
engines: {node: '>=10'}
|
||||||
cpu: [ia32]
|
cpu: [ia32]
|
||||||
os: [win32]
|
os: [win32]
|
||||||
@ -670,8 +672,8 @@ packages:
|
|||||||
dev: true
|
dev: true
|
||||||
optional: true
|
optional: true
|
||||||
|
|
||||||
/@swc/core-win32-x64-msvc@1.3.57:
|
/@swc/core-win32-x64-msvc@1.3.59:
|
||||||
resolution: {integrity: sha512-A6aX/Rpp0v3g7Spf3LSwR+ivviH8x+1xla612KLZmlc0yymWt9BMd3CmBkzyRBr2e41zGCrkf6tra6wgtCbAwA==}
|
resolution: {integrity: sha512-Ris/cJbURylcLwqz4RZUUBCEGsuaIHOJsvf69W5pGKHKBryVoOTNhBKpo3Km2hoAi5qFQ/ou0trAT4hBsVPZvQ==}
|
||||||
engines: {node: '>=10'}
|
engines: {node: '>=10'}
|
||||||
cpu: [x64]
|
cpu: [x64]
|
||||||
os: [win32]
|
os: [win32]
|
||||||
@ -679,8 +681,8 @@ packages:
|
|||||||
dev: true
|
dev: true
|
||||||
optional: true
|
optional: true
|
||||||
|
|
||||||
/@swc/core@1.3.57:
|
/@swc/core@1.3.59:
|
||||||
resolution: {integrity: sha512-gAT80hOVeK5qoi+BRlgXWgJYI9cbQn2oi05A09Tvb6vjFgBsr9SlQGNZB9uMlcXRXspkZFf9l3yyWRtT4we3Yw==}
|
resolution: {integrity: sha512-ZBw31zd2E5SXiodwGvjQdx5ZC90b2uyX/i2LeMMs8LKfXD86pfOfQac+JVrnyEKDhASXj9icgsF9NXBhaMr3Kw==}
|
||||||
engines: {node: '>=10'}
|
engines: {node: '>=10'}
|
||||||
requiresBuild: true
|
requiresBuild: true
|
||||||
peerDependencies:
|
peerDependencies:
|
||||||
@ -689,16 +691,16 @@ packages:
|
|||||||
'@swc/helpers':
|
'@swc/helpers':
|
||||||
optional: true
|
optional: true
|
||||||
optionalDependencies:
|
optionalDependencies:
|
||||||
'@swc/core-darwin-arm64': 1.3.57
|
'@swc/core-darwin-arm64': 1.3.59
|
||||||
'@swc/core-darwin-x64': 1.3.57
|
'@swc/core-darwin-x64': 1.3.59
|
||||||
'@swc/core-linux-arm-gnueabihf': 1.3.57
|
'@swc/core-linux-arm-gnueabihf': 1.3.59
|
||||||
'@swc/core-linux-arm64-gnu': 1.3.57
|
'@swc/core-linux-arm64-gnu': 1.3.59
|
||||||
'@swc/core-linux-arm64-musl': 1.3.57
|
'@swc/core-linux-arm64-musl': 1.3.59
|
||||||
'@swc/core-linux-x64-gnu': 1.3.57
|
'@swc/core-linux-x64-gnu': 1.3.59
|
||||||
'@swc/core-linux-x64-musl': 1.3.57
|
'@swc/core-linux-x64-musl': 1.3.59
|
||||||
'@swc/core-win32-arm64-msvc': 1.3.57
|
'@swc/core-win32-arm64-msvc': 1.3.59
|
||||||
'@swc/core-win32-ia32-msvc': 1.3.57
|
'@swc/core-win32-ia32-msvc': 1.3.59
|
||||||
'@swc/core-win32-x64-msvc': 1.3.57
|
'@swc/core-win32-x64-msvc': 1.3.59
|
||||||
dev: true
|
dev: true
|
||||||
|
|
||||||
/@tailwindcss/typography@0.5.9(tailwindcss@3.3.2):
|
/@tailwindcss/typography@0.5.9(tailwindcss@3.3.2):
|
||||||
@ -713,12 +715,12 @@ packages:
|
|||||||
tailwindcss: 3.3.2
|
tailwindcss: 3.3.2
|
||||||
dev: true
|
dev: true
|
||||||
|
|
||||||
/@tanstack/query-core@4.29.5:
|
/@tanstack/query-core@4.29.7:
|
||||||
resolution: {integrity: sha512-xXIiyQ/4r9KfaJ3k6kejqcaqFXXBTzN2aOJ5H1J6aTJE9hl/nbgAdfF6oiIu0CD5xowejJEJ6bBg8TO7BN4NuQ==}
|
resolution: {integrity: sha512-GXG4b5hV2Loir+h2G+RXhJdoZhJLnrBWsuLB2r0qBRyhWuXq9w/dWxzvpP89H0UARlH6Mr9DiVj4SMtpkF/aUA==}
|
||||||
dev: false
|
dev: false
|
||||||
|
|
||||||
/@tanstack/react-query@4.29.5(react-dom@18.2.0)(react@18.2.0):
|
/@tanstack/react-query@4.29.7(react-dom@18.2.0)(react@18.2.0):
|
||||||
resolution: {integrity: sha512-F87cibC3s3eG0Q90g2O+hqntpCrudKFnR8P24qkH9uccEhXErnJxBC/AAI4cJRV2bfMO8IeGZQYf3WyYgmSg0w==}
|
resolution: {integrity: sha512-ijBWEzAIo09fB1yd22slRZzprrZ5zMdWYzBnCg5qiXuFbH78uGN1qtGz8+Ed4MuhaPaYSD+hykn+QEKtQviEtg==}
|
||||||
peerDependencies:
|
peerDependencies:
|
||||||
react: ^16.8.0 || ^17.0.0 || ^18.0.0
|
react: ^16.8.0 || ^17.0.0 || ^18.0.0
|
||||||
react-dom: ^16.8.0 || ^17.0.0 || ^18.0.0
|
react-dom: ^16.8.0 || ^17.0.0 || ^18.0.0
|
||||||
@ -729,7 +731,7 @@ packages:
|
|||||||
react-native:
|
react-native:
|
||||||
optional: true
|
optional: true
|
||||||
dependencies:
|
dependencies:
|
||||||
'@tanstack/query-core': 4.29.5
|
'@tanstack/query-core': 4.29.7
|
||||||
react: 18.2.0
|
react: 18.2.0
|
||||||
react-dom: 18.2.0(react@18.2.0)
|
react-dom: 18.2.0(react@18.2.0)
|
||||||
use-sync-external-store: 1.2.0(react@18.2.0)
|
use-sync-external-store: 1.2.0(react@18.2.0)
|
||||||
@ -880,8 +882,8 @@ packages:
|
|||||||
resolution: {integrity: sha512-iiUgKzV9AuaEkZqkOLDIvlQiL6ltuZd9tGcW3gwpnX8JbuiuhFlEGmmFXEXkN50Cvq7Os88IY2v0dkDqXYWVgA==}
|
resolution: {integrity: sha512-iiUgKzV9AuaEkZqkOLDIvlQiL6ltuZd9tGcW3gwpnX8JbuiuhFlEGmmFXEXkN50Cvq7Os88IY2v0dkDqXYWVgA==}
|
||||||
dev: false
|
dev: false
|
||||||
|
|
||||||
/@types/node@18.16.9:
|
/@types/node@18.16.13:
|
||||||
resolution: {integrity: sha512-IeB32oIV4oGArLrd7znD2rkHQ6EDCM+2Sr76dJnrHwv9OHBTTM6nuDLK9bmikXzPa0ZlWMWtRGo/Uw4mrzQedA==}
|
resolution: {integrity: sha512-uZRomboV1vBL61EBXneL4j9/hEn+1Yqa4LQdpGrKmXFyJmVfWc9JV9+yb2AlnOnuaDnb2PDO3hC6/LKmzJxP1A==}
|
||||||
dev: true
|
dev: true
|
||||||
|
|
||||||
/@types/prop-types@15.7.5:
|
/@types/prop-types@15.7.5:
|
||||||
@ -922,19 +924,19 @@ packages:
|
|||||||
vidstack: 0.4.5
|
vidstack: 0.4.5
|
||||||
dependencies:
|
dependencies:
|
||||||
'@types/react': 18.2.6
|
'@types/react': 18.2.6
|
||||||
maverick.js: 0.33.1(typescript@4.9.5)
|
maverick.js: 0.33.1
|
||||||
media-icons: 0.4.2
|
media-icons: 0.4.2
|
||||||
react: 18.2.0
|
react: 18.2.0
|
||||||
vidstack: 0.4.5(typescript@4.9.5)
|
vidstack: 0.4.5
|
||||||
dev: false
|
dev: false
|
||||||
|
|
||||||
/@vitejs/plugin-react-swc@3.3.1(vite@4.3.5):
|
/@vitejs/plugin-react-swc@3.3.1(vite@4.3.8):
|
||||||
resolution: {integrity: sha512-ZoYjGxMniXP7X+5ry/W1tpY7w0OeLUEsBF5RHFPmAhpgwwNWie8OF4056MRXRi9QgvYYoZPDzdOXGK3wlCoTfQ==}
|
resolution: {integrity: sha512-ZoYjGxMniXP7X+5ry/W1tpY7w0OeLUEsBF5RHFPmAhpgwwNWie8OF4056MRXRi9QgvYYoZPDzdOXGK3wlCoTfQ==}
|
||||||
peerDependencies:
|
peerDependencies:
|
||||||
vite: ^4
|
vite: ^4
|
||||||
dependencies:
|
dependencies:
|
||||||
'@swc/core': 1.3.57
|
'@swc/core': 1.3.59
|
||||||
vite: 4.3.5(@types/node@18.16.9)
|
vite: 4.3.8(@types/node@18.16.13)
|
||||||
transitivePeerDependencies:
|
transitivePeerDependencies:
|
||||||
- '@swc/helpers'
|
- '@swc/helpers'
|
||||||
dev: true
|
dev: true
|
||||||
@ -1002,7 +1004,7 @@ packages:
|
|||||||
resolution: {integrity: sha512-xcLxITLe2HYa1cnYnwCjkOO1PqUHQpozB8x9AR0OgWN2woOBi5kSDVxKfd0b7sb1hw5qFeJhXm9H1nu3xSfLeQ==}
|
resolution: {integrity: sha512-xcLxITLe2HYa1cnYnwCjkOO1PqUHQpozB8x9AR0OgWN2woOBi5kSDVxKfd0b7sb1hw5qFeJhXm9H1nu3xSfLeQ==}
|
||||||
engines: {node: '>=10'}
|
engines: {node: '>=10'}
|
||||||
dependencies:
|
dependencies:
|
||||||
tslib: 2.5.0
|
tslib: 2.5.2
|
||||||
dev: false
|
dev: false
|
||||||
|
|
||||||
/astral-regex@2.0.0:
|
/astral-regex@2.0.0:
|
||||||
@ -1018,7 +1020,7 @@ packages:
|
|||||||
postcss: ^8.1.0
|
postcss: ^8.1.0
|
||||||
dependencies:
|
dependencies:
|
||||||
browserslist: 4.21.5
|
browserslist: 4.21.5
|
||||||
caniuse-lite: 1.0.30001487
|
caniuse-lite: 1.0.30001488
|
||||||
fraction.js: 4.2.0
|
fraction.js: 4.2.0
|
||||||
normalize-range: 0.1.2
|
normalize-range: 0.1.2
|
||||||
picocolors: 1.0.0
|
picocolors: 1.0.0
|
||||||
@ -1058,9 +1060,9 @@ packages:
|
|||||||
engines: {node: ^6 || ^7 || ^8 || ^9 || ^10 || ^11 || ^12 || >=13.7}
|
engines: {node: ^6 || ^7 || ^8 || ^9 || ^10 || ^11 || ^12 || >=13.7}
|
||||||
hasBin: true
|
hasBin: true
|
||||||
dependencies:
|
dependencies:
|
||||||
caniuse-lite: 1.0.30001487
|
caniuse-lite: 1.0.30001488
|
||||||
electron-to-chromium: 1.4.394
|
electron-to-chromium: 1.4.402
|
||||||
node-releases: 2.0.10
|
node-releases: 2.0.11
|
||||||
update-browserslist-db: 1.0.11(browserslist@4.21.5)
|
update-browserslist-db: 1.0.11(browserslist@4.21.5)
|
||||||
dev: true
|
dev: true
|
||||||
|
|
||||||
@ -1079,8 +1081,8 @@ packages:
|
|||||||
engines: {node: '>= 6'}
|
engines: {node: '>= 6'}
|
||||||
dev: true
|
dev: true
|
||||||
|
|
||||||
/caniuse-lite@1.0.30001487:
|
/caniuse-lite@1.0.30001488:
|
||||||
resolution: {integrity: sha512-83564Z3yWGqXsh2vaH/mhXfEM0wX+NlBCm1jYHOb97TrTWJEmPTccZgeLTPBUUb0PNVo+oomb7wkimZBIERClA==}
|
resolution: {integrity: sha512-NORIQuuL4xGpIy6iCCQGN4iFjlBXtfKWIenlUuyZJumLRIindLb7wXM+GO8erEhb7vXfcnf4BAg2PrSDN5TNLQ==}
|
||||||
dev: true
|
dev: true
|
||||||
|
|
||||||
/ccount@2.0.1:
|
/ccount@2.0.1:
|
||||||
@ -1258,8 +1260,8 @@ packages:
|
|||||||
resolution: {integrity: sha512-I88TYZWc9XiYHRQ4/3c5rjjfgkjhLyW2luGIheGERbNQ6OY7yTybanSpDXZa8y7VUP9YmDcYa+eyq4ca7iLqWA==}
|
resolution: {integrity: sha512-I88TYZWc9XiYHRQ4/3c5rjjfgkjhLyW2luGIheGERbNQ6OY7yTybanSpDXZa8y7VUP9YmDcYa+eyq4ca7iLqWA==}
|
||||||
dev: true
|
dev: true
|
||||||
|
|
||||||
/electron-to-chromium@1.4.394:
|
/electron-to-chromium@1.4.402:
|
||||||
resolution: {integrity: sha512-0IbC2cfr8w5LxTz+nmn2cJTGafsK9iauV2r5A5scfzyovqLrxuLoxOHE5OBobP3oVIggJT+0JfKnw9sm87c8Hw==}
|
resolution: {integrity: sha512-gWYvJSkohOiBE6ecVYXkrDgNaUjo47QEKK0kQzmWyhkH+yoYiG44bwuicTGNSIQRG3WDMsWVZJLRnJnLNkbWvA==}
|
||||||
dev: true
|
dev: true
|
||||||
|
|
||||||
/emoji-regex@8.0.0:
|
/emoji-regex@8.0.0:
|
||||||
@ -1491,8 +1493,8 @@ packages:
|
|||||||
engines: {node: '>=4'}
|
engines: {node: '>=4'}
|
||||||
dev: false
|
dev: false
|
||||||
|
|
||||||
/is-core-module@2.12.0:
|
/is-core-module@2.12.1:
|
||||||
resolution: {integrity: sha512-RECHCBCd/viahWmwj6enj19sKbHfJrddi/6cBDsNTKbNq0f7VeaUkBo60BqzvPqo/W54ChS62Z5qyun7cfOMqQ==}
|
resolution: {integrity: sha512-Q4ZuBAe2FUsKtyQJoQHlvP8OvBERxO3jEmy1I7hcRXcJBGGHFh/aJBswbXuS9sgrDH2QUO8ilkwNPHvHMd8clg==}
|
||||||
dependencies:
|
dependencies:
|
||||||
has: 1.0.3
|
has: 1.0.3
|
||||||
dev: true
|
dev: true
|
||||||
@ -1677,14 +1679,12 @@ packages:
|
|||||||
resolution: {integrity: sha512-Z1NL3Tb1M9wH4XESsCDEksWoKTdlUafKc4pt0GRwjUyXaCFZ+dc3g2erqB6zm3szA2IUSi7VnPI+o/9jnxh9hw==}
|
resolution: {integrity: sha512-Z1NL3Tb1M9wH4XESsCDEksWoKTdlUafKc4pt0GRwjUyXaCFZ+dc3g2erqB6zm3szA2IUSi7VnPI+o/9jnxh9hw==}
|
||||||
dev: false
|
dev: false
|
||||||
|
|
||||||
/maverick.js@0.33.1(typescript@4.9.5):
|
/maverick.js@0.33.1:
|
||||||
resolution: {integrity: sha512-p8L5V62CV6TmHAngmRAopp231oJKeH77mJja5SsKOfvzrPRoThT/Jo9U0jMRB5iMykqkvyg2J5V5Agn6FPXDWQ==}
|
resolution: {integrity: sha512-p8L5V62CV6TmHAngmRAopp231oJKeH77mJja5SsKOfvzrPRoThT/Jo9U0jMRB5iMykqkvyg2J5V5Agn6FPXDWQ==}
|
||||||
engines: {node: '>=16'}
|
engines: {node: '>=16'}
|
||||||
dependencies:
|
dependencies:
|
||||||
'@maverick-js/signals': 5.10.2
|
'@maverick-js/signals': 5.10.2
|
||||||
type-fest: 3.10.0(typescript@4.9.5)
|
type-fest: 3.11.0
|
||||||
transitivePeerDependencies:
|
|
||||||
- typescript
|
|
||||||
dev: false
|
dev: false
|
||||||
|
|
||||||
/mdast-util-definitions@5.1.2:
|
/mdast-util-definitions@5.1.2:
|
||||||
@ -1917,8 +1917,8 @@ packages:
|
|||||||
uvu: 0.5.6
|
uvu: 0.5.6
|
||||||
dev: false
|
dev: false
|
||||||
|
|
||||||
/micromark-extension-gfm@2.0.2:
|
/micromark-extension-gfm@2.0.3:
|
||||||
resolution: {integrity: sha512-oMBh++llCWHYftkP1NmeoQDHHlj3nsRYL3HBhjwBqm+CjSQ4l/v05XiQMTWqmYh4MLEVbq473qEi6S1wonCxcA==}
|
resolution: {integrity: sha512-vb9OoHqrhCmbRidQv/2+Bc6pkP0FrtlhurxZofvOEy5o8RtuuvTq+RQ1Vw5ZDNrVraQZu3HixESqbG+0iKk/MQ==}
|
||||||
dependencies:
|
dependencies:
|
||||||
micromark-extension-gfm-autolink-literal: 1.0.4
|
micromark-extension-gfm-autolink-literal: 1.0.4
|
||||||
micromark-extension-gfm-footnote: 1.1.0
|
micromark-extension-gfm-footnote: 1.1.0
|
||||||
@ -2136,8 +2136,8 @@ packages:
|
|||||||
hasBin: true
|
hasBin: true
|
||||||
dev: true
|
dev: true
|
||||||
|
|
||||||
/node-releases@2.0.10:
|
/node-releases@2.0.11:
|
||||||
resolution: {integrity: sha512-5GFldHPXVG/YZmFzJvKK2zDSzPKhEp0+ZR5SVaoSag9fsL5YgHbUHDfnG5494ISANDcK4KwPXAx2xqVEydmd7w==}
|
resolution: {integrity: sha512-+M0PwXeU80kRohZ3aT4J/OnR+l9/KD2nVLNNoRgFtnf+umQVFdGBAO2N8+nCnEi0xlh/Wk3zOGC+vNNx+uM79Q==}
|
||||||
dev: true
|
dev: true
|
||||||
|
|
||||||
/normalize-path@3.0.0:
|
/normalize-path@3.0.0:
|
||||||
@ -2155,20 +2155,20 @@ packages:
|
|||||||
dependencies:
|
dependencies:
|
||||||
'@jest/source-map': 29.4.3
|
'@jest/source-map': 29.4.3
|
||||||
isomorphic-ws: 5.0.0(ws@8.13.0)
|
isomorphic-ws: 5.0.0(ws@8.13.0)
|
||||||
nostr-tools: 1.10.1
|
nostr-tools: 1.11.1
|
||||||
safe-stable-stringify: 2.4.3
|
safe-stable-stringify: 2.4.3
|
||||||
transitivePeerDependencies:
|
transitivePeerDependencies:
|
||||||
- ws
|
- ws
|
||||||
dev: false
|
dev: false
|
||||||
|
|
||||||
/nostr-tools@1.10.1:
|
/nostr-tools@1.11.1:
|
||||||
resolution: {integrity: sha512-zgTYJeuZQ3CDASsmBEcB5i6V6l0IaA6cjnll6OVik3FoZcvbCaL7yP8I40hYnOIi3KlJykV7jEF9fn8h1NzMnA==}
|
resolution: {integrity: sha512-b8BpCiD3wxjBZwrn0wc+CkVj6/7s4sQxp+Az7UkCG80mJu7xTspZsOoUP/geBNwZVYETzEwj+CPBvW8WIP8mBQ==}
|
||||||
dependencies:
|
dependencies:
|
||||||
'@noble/hashes': 1.2.0
|
'@noble/curves': 1.0.0
|
||||||
'@noble/secp256k1': 1.7.1
|
'@noble/hashes': 1.3.0
|
||||||
'@scure/base': 1.1.1
|
'@scure/base': 1.1.1
|
||||||
'@scure/bip32': 1.1.4
|
'@scure/bip32': 1.3.0
|
||||||
'@scure/bip39': 1.1.1
|
'@scure/bip39': 1.2.0
|
||||||
dev: false
|
dev: false
|
||||||
|
|
||||||
/npm-run-path@5.1.0:
|
/npm-run-path@5.1.0:
|
||||||
@ -2308,7 +2308,7 @@ packages:
|
|||||||
postcss: ^8.2.14
|
postcss: ^8.2.14
|
||||||
dependencies:
|
dependencies:
|
||||||
postcss: 8.4.23
|
postcss: 8.4.23
|
||||||
postcss-selector-parser: 6.0.12
|
postcss-selector-parser: 6.0.13
|
||||||
dev: true
|
dev: true
|
||||||
|
|
||||||
/postcss-selector-parser@6.0.10:
|
/postcss-selector-parser@6.0.10:
|
||||||
@ -2319,8 +2319,8 @@ packages:
|
|||||||
util-deprecate: 1.0.2
|
util-deprecate: 1.0.2
|
||||||
dev: true
|
dev: true
|
||||||
|
|
||||||
/postcss-selector-parser@6.0.12:
|
/postcss-selector-parser@6.0.13:
|
||||||
resolution: {integrity: sha512-NdxGCAZdRrwVI1sy59+Wzrh+pMMHxapGnpfenDVlMEXoOcvt4pGE0JLK9YY2F5dLxcFYA/YbVQKhcGU+FtSYQg==}
|
resolution: {integrity: sha512-EaV1Gl4mUEV4ddhDnv/xtj7sxwrwxdetHdWUGnT4VJQf+4d05v6lHYZr8N573k5Z0BViss7BDhfWtKS3+sfAqQ==}
|
||||||
engines: {node: '>=4'}
|
engines: {node: '>=4'}
|
||||||
dependencies:
|
dependencies:
|
||||||
cssesc: 3.0.0
|
cssesc: 3.0.0
|
||||||
@ -2397,7 +2397,7 @@ packages:
|
|||||||
property-information: 6.2.0
|
property-information: 6.2.0
|
||||||
react: 18.2.0
|
react: 18.2.0
|
||||||
react-is: 18.2.0
|
react-is: 18.2.0
|
||||||
remark-parse: 10.0.1
|
remark-parse: 10.0.2
|
||||||
remark-rehype: 10.1.0
|
remark-rehype: 10.1.0
|
||||||
space-separated-tokens: 2.0.2
|
space-separated-tokens: 2.0.2
|
||||||
style-to-object: 0.4.1
|
style-to-object: 0.4.1
|
||||||
@ -2408,8 +2408,8 @@ packages:
|
|||||||
- supports-color
|
- supports-color
|
||||||
dev: false
|
dev: false
|
||||||
|
|
||||||
/react-virtuoso@4.3.6(react-dom@18.2.0)(react@18.2.0):
|
/react-virtuoso@4.3.7(react-dom@18.2.0)(react@18.2.0):
|
||||||
resolution: {integrity: sha512-t2yzA9QKwMrcECLytVfZcBZMusuQ9Ahgt62SL8uC/sYm9Sk/h14sYTJC0MVO6CAtl3BzKiLKSC79Vp+W3KOXMg==}
|
resolution: {integrity: sha512-XPNRzmhXUyBoXjPxNYdqD5wubNXtDIbBFbhTR4awx4yEC98EegM5RLeaghIK0BBAhZyRFu8sMvrPnwE12KLOJg==}
|
||||||
engines: {node: '>=10'}
|
engines: {node: '>=10'}
|
||||||
peerDependencies:
|
peerDependencies:
|
||||||
react: '>=16 || >=17 || >= 18'
|
react: '>=16 || >=17 || >= 18'
|
||||||
@ -2444,14 +2444,14 @@ packages:
|
|||||||
dependencies:
|
dependencies:
|
||||||
'@types/mdast': 3.0.11
|
'@types/mdast': 3.0.11
|
||||||
mdast-util-gfm: 2.0.2
|
mdast-util-gfm: 2.0.2
|
||||||
micromark-extension-gfm: 2.0.2
|
micromark-extension-gfm: 2.0.3
|
||||||
unified: 10.1.2
|
unified: 10.1.2
|
||||||
transitivePeerDependencies:
|
transitivePeerDependencies:
|
||||||
- supports-color
|
- supports-color
|
||||||
dev: false
|
dev: false
|
||||||
|
|
||||||
/remark-parse@10.0.1:
|
/remark-parse@10.0.2:
|
||||||
resolution: {integrity: sha512-1fUyHr2jLsVOkhbvPRBJ5zTKZZyD6yZzYaWCS6BPBdQ8vEMBCH+9zNCDA6tET/zHCi/jLqjCWtlJZUPk+DbnFw==}
|
resolution: {integrity: sha512-3ydxgHa/ZQzG8LvC7jTXccARYDcRld3VfcgIIFs7bI6vbRSxJJmzgLEIIoYKyrfhaY+ujuWaf/PJiMZXoiCXgw==}
|
||||||
dependencies:
|
dependencies:
|
||||||
'@types/mdast': 3.0.11
|
'@types/mdast': 3.0.11
|
||||||
mdast-util-from-markdown: 1.3.0
|
mdast-util-from-markdown: 1.3.0
|
||||||
@ -2473,7 +2473,7 @@ packages:
|
|||||||
resolution: {integrity: sha512-Sb+mjNHOULsBv818T40qSPeRiuWLyaGMa5ewydRLFimneixmVy2zdivRl+AF6jaYPC8ERxGDmFSiqui6SfPd+g==}
|
resolution: {integrity: sha512-Sb+mjNHOULsBv818T40qSPeRiuWLyaGMa5ewydRLFimneixmVy2zdivRl+AF6jaYPC8ERxGDmFSiqui6SfPd+g==}
|
||||||
hasBin: true
|
hasBin: true
|
||||||
dependencies:
|
dependencies:
|
||||||
is-core-module: 2.12.0
|
is-core-module: 2.12.1
|
||||||
path-parse: 1.0.7
|
path-parse: 1.0.7
|
||||||
supports-preserve-symlinks-flag: 1.0.0
|
supports-preserve-symlinks-flag: 1.0.0
|
||||||
dev: true
|
dev: true
|
||||||
@ -2495,8 +2495,8 @@ packages:
|
|||||||
resolution: {integrity: sha512-V2hovdzFbOi77/WajaSMXk2OLm+xNIeQdMMuB7icj7bk6zi2F8GGAxigcnDFpJHbNyNcgyJDiP+8nOrY5cZGrA==}
|
resolution: {integrity: sha512-V2hovdzFbOi77/WajaSMXk2OLm+xNIeQdMMuB7icj7bk6zi2F8GGAxigcnDFpJHbNyNcgyJDiP+8nOrY5cZGrA==}
|
||||||
dev: true
|
dev: true
|
||||||
|
|
||||||
/rollup@3.21.7:
|
/rollup@3.22.0:
|
||||||
resolution: {integrity: sha512-KXPaEuR8FfUoK2uHwNjxTmJ18ApyvD6zJpYv9FOJSqLStmt6xOY84l1IjK2dSolQmoXknrhEFRaPRgOPdqCT5w==}
|
resolution: {integrity: sha512-imsigcWor5Y/dC0rz2q0bBt9PabcL3TORry2hAa6O6BuMvY71bqHyfReAz5qyAqiQATD1m70qdntqBfBQjVWpQ==}
|
||||||
engines: {node: '>=14.18.0', npm: '>=8.0.0'}
|
engines: {node: '>=14.18.0', npm: '>=8.0.0'}
|
||||||
hasBin: true
|
hasBin: true
|
||||||
optionalDependencies:
|
optionalDependencies:
|
||||||
@ -2526,7 +2526,7 @@ packages:
|
|||||||
/rxjs@7.8.1:
|
/rxjs@7.8.1:
|
||||||
resolution: {integrity: sha512-AA3TVj+0A2iuIoQkWEK/tqFjBq2j+6PO6Y0zJcvzLAFhEFIO3HL0vls9hWLncZbAAbK0mar7oZ4V079I/qPMxg==}
|
resolution: {integrity: sha512-AA3TVj+0A2iuIoQkWEK/tqFjBq2j+6PO6Y0zJcvzLAFhEFIO3HL0vls9hWLncZbAAbK0mar7oZ4V079I/qPMxg==}
|
||||||
dependencies:
|
dependencies:
|
||||||
tslib: 2.5.0
|
tslib: 2.5.2
|
||||||
dev: true
|
dev: true
|
||||||
|
|
||||||
/sade@1.8.1:
|
/sade@1.8.1:
|
||||||
@ -2763,7 +2763,7 @@ packages:
|
|||||||
postcss-js: 4.0.1(postcss@8.4.23)
|
postcss-js: 4.0.1(postcss@8.4.23)
|
||||||
postcss-load-config: 4.0.1(postcss@8.4.23)
|
postcss-load-config: 4.0.1(postcss@8.4.23)
|
||||||
postcss-nested: 6.0.1(postcss@8.4.23)
|
postcss-nested: 6.0.1(postcss@8.4.23)
|
||||||
postcss-selector-parser: 6.0.12
|
postcss-selector-parser: 6.0.13
|
||||||
postcss-value-parser: 4.2.0
|
postcss-value-parser: 4.2.0
|
||||||
resolve: 1.22.2
|
resolve: 1.22.2
|
||||||
sucrase: 3.32.0
|
sucrase: 3.32.0
|
||||||
@ -2833,27 +2833,24 @@ packages:
|
|||||||
typescript: 4.9.5
|
typescript: 4.9.5
|
||||||
dev: true
|
dev: true
|
||||||
|
|
||||||
/tslib@2.5.0:
|
/tslib@2.5.2:
|
||||||
resolution: {integrity: sha512-336iVw3rtn2BUK7ORdIAHTyxHGRIHVReokCR3XjbckJMK7ms8FysBfhLR8IXnAgy7T0PTPNBWKiH514FOW/WSg==}
|
resolution: {integrity: sha512-5svOrSA2w3iGFDs1HibEVBGbDrAY82bFQ3HZ3ixB+88nsbsWQoKqDRb5UBYAUPEzbBn6dAp5gRNXglySbx1MlA==}
|
||||||
|
|
||||||
/type-fest@0.21.3:
|
/type-fest@0.21.3:
|
||||||
resolution: {integrity: sha512-t0rzBq87m3fVcduHDUFhKmyyX+9eo6WQjZvf51Ea/M0Q7+T374Jp1aUiyUl0GKxp8M/OETVHSDvmkyPgvX+X2w==}
|
resolution: {integrity: sha512-t0rzBq87m3fVcduHDUFhKmyyX+9eo6WQjZvf51Ea/M0Q7+T374Jp1aUiyUl0GKxp8M/OETVHSDvmkyPgvX+X2w==}
|
||||||
engines: {node: '>=10'}
|
engines: {node: '>=10'}
|
||||||
dev: true
|
dev: true
|
||||||
|
|
||||||
/type-fest@3.10.0(typescript@4.9.5):
|
/type-fest@3.11.0:
|
||||||
resolution: {integrity: sha512-hmAPf1datm+gt3c2mvu0sJyhFy6lTkIGf0GzyaZWxRLnabQfPUqg6tF95RPg6sLxKI7nFLGdFxBcf2/7+GXI+A==}
|
resolution: {integrity: sha512-JaPw5U9ixP0XcpUbQoVSbxSDcK/K4nww20C3kjm9yE6cDRRhptU28AH60VWf9ltXmCrIfIbtt9J+2OUk2Uqiaw==}
|
||||||
engines: {node: '>=14.16'}
|
engines: {node: '>=14.16'}
|
||||||
peerDependencies:
|
|
||||||
typescript: '>=4.7.0'
|
|
||||||
dependencies:
|
|
||||||
typescript: 4.9.5
|
|
||||||
dev: false
|
dev: false
|
||||||
|
|
||||||
/typescript@4.9.5:
|
/typescript@4.9.5:
|
||||||
resolution: {integrity: sha512-1FXk9E2Hm+QzZQ7z+McJiHL4NW1F2EzMu9Nq9i3zAaGqibafqYwCVU6WyWAuyQRRzOlxou8xZSyXLEN8oKj24g==}
|
resolution: {integrity: sha512-1FXk9E2Hm+QzZQ7z+McJiHL4NW1F2EzMu9Nq9i3zAaGqibafqYwCVU6WyWAuyQRRzOlxou8xZSyXLEN8oKj24g==}
|
||||||
engines: {node: '>=4.2.0'}
|
engines: {node: '>=4.2.0'}
|
||||||
hasBin: true
|
hasBin: true
|
||||||
|
dev: true
|
||||||
|
|
||||||
/unified@10.1.2:
|
/unified@10.1.2:
|
||||||
resolution: {integrity: sha512-pUSWAi/RAnVy1Pif2kAoeWNBa3JVrx0MId2LASj8G+7AiHWoKZNTomq6LG326T68U7/e263X6fTdcXIy7XnF7Q==}
|
resolution: {integrity: sha512-pUSWAi/RAnVy1Pif2kAoeWNBa3JVrx0MId2LASj8G+7AiHWoKZNTomq6LG326T68U7/e263X6fTdcXIy7XnF7Q==}
|
||||||
@ -2959,20 +2956,18 @@ packages:
|
|||||||
vfile-message: 3.1.4
|
vfile-message: 3.1.4
|
||||||
dev: false
|
dev: false
|
||||||
|
|
||||||
/vidstack@0.4.5(typescript@4.9.5):
|
/vidstack@0.4.5:
|
||||||
resolution: {integrity: sha512-6CFkWRSvDQAd91WQ6PZ/ovwbGFDI8pLuIA0swcDLLAOM6MiKWFd/gFjJ/x7+DAcCf0hqOngO34MJhG3zTZQtcQ==}
|
resolution: {integrity: sha512-6CFkWRSvDQAd91WQ6PZ/ovwbGFDI8pLuIA0swcDLLAOM6MiKWFd/gFjJ/x7+DAcCf0hqOngO34MJhG3zTZQtcQ==}
|
||||||
engines: {node: '>=16'}
|
engines: {node: '>=16'}
|
||||||
dependencies:
|
dependencies:
|
||||||
maverick.js: 0.33.1(typescript@4.9.5)
|
maverick.js: 0.33.1
|
||||||
media-captions: 0.0.8
|
media-captions: 0.0.8
|
||||||
media-icons: 0.4.2
|
media-icons: 0.4.2
|
||||||
type-fest: 3.10.0(typescript@4.9.5)
|
type-fest: 3.11.0
|
||||||
transitivePeerDependencies:
|
|
||||||
- typescript
|
|
||||||
dev: false
|
dev: false
|
||||||
|
|
||||||
/vite-plugin-ssr@0.4.123(vite@4.3.5):
|
/vite-plugin-ssr@0.4.126(vite@4.3.8):
|
||||||
resolution: {integrity: sha512-lIHmvsS7xINxk8AiMn9O9q6dTeLDay0q3iRCMZd4MlzhyMcEUUuEYyx/vWevXIO7+CTt5cOVcTsojeAU+eUMNw==}
|
resolution: {integrity: sha512-mQr9vFiiIh49KST8iCodwr8x6c9+ldu+LFAVJQJiQdW7Z7WgjyiF7833pVSsDFfw0bIFHoxtN2eoY75bxUQHHA==}
|
||||||
engines: {node: '>=12.19.0'}
|
engines: {node: '>=12.19.0'}
|
||||||
hasBin: true
|
hasBin: true
|
||||||
peerDependencies:
|
peerDependencies:
|
||||||
@ -2992,24 +2987,24 @@ packages:
|
|||||||
esbuild: 0.17.19
|
esbuild: 0.17.19
|
||||||
fast-glob: 3.2.12
|
fast-glob: 3.2.12
|
||||||
sirv: 2.0.3
|
sirv: 2.0.3
|
||||||
vite: 4.3.5(@types/node@18.16.9)
|
vite: 4.3.8(@types/node@18.16.13)
|
||||||
dev: true
|
dev: true
|
||||||
|
|
||||||
/vite-plugin-top-level-await@1.3.0(vite@4.3.5):
|
/vite-plugin-top-level-await@1.3.1(vite@4.3.8):
|
||||||
resolution: {integrity: sha512-owIfsgWudMlQODWJSwp0sQB3AZZu3qsMygeBjZy8CyjEk6OB9AGd8lHqmgwrcEqgvy9N58lYxSBLVk3/4ejEiA==}
|
resolution: {integrity: sha512-55M1h4NAwkrpxPNOJIBzKZFihqLUzIgnElLSmPNPMR2Fn9+JHKaNg3sVX1Fq+VgvuBksQYxiD3OnwQAUu7kaPQ==}
|
||||||
peerDependencies:
|
peerDependencies:
|
||||||
vite: '>=2.8'
|
vite: '>=2.8'
|
||||||
dependencies:
|
dependencies:
|
||||||
'@rollup/plugin-virtual': 3.0.1
|
'@rollup/plugin-virtual': 3.0.1
|
||||||
'@swc/core': 1.3.57
|
'@swc/core': 1.3.59
|
||||||
uuid: 9.0.0
|
uuid: 9.0.0
|
||||||
vite: 4.3.5(@types/node@18.16.9)
|
vite: 4.3.8(@types/node@18.16.13)
|
||||||
transitivePeerDependencies:
|
transitivePeerDependencies:
|
||||||
- '@swc/helpers'
|
- '@swc/helpers'
|
||||||
- rollup
|
- rollup
|
||||||
dev: true
|
dev: true
|
||||||
|
|
||||||
/vite-tsconfig-paths@4.2.0(typescript@4.9.5)(vite@4.3.5):
|
/vite-tsconfig-paths@4.2.0(typescript@4.9.5)(vite@4.3.8):
|
||||||
resolution: {integrity: sha512-jGpus0eUy5qbbMVGiTxCL1iB9ZGN6Bd37VGLJU39kTDD6ZfULTTb1bcc5IeTWqWJKiWV5YihCaibeASPiGi8kw==}
|
resolution: {integrity: sha512-jGpus0eUy5qbbMVGiTxCL1iB9ZGN6Bd37VGLJU39kTDD6ZfULTTb1bcc5IeTWqWJKiWV5YihCaibeASPiGi8kw==}
|
||||||
peerDependencies:
|
peerDependencies:
|
||||||
vite: '*'
|
vite: '*'
|
||||||
@ -3020,14 +3015,14 @@ packages:
|
|||||||
debug: 4.3.4
|
debug: 4.3.4
|
||||||
globrex: 0.1.2
|
globrex: 0.1.2
|
||||||
tsconfck: 2.1.1(typescript@4.9.5)
|
tsconfck: 2.1.1(typescript@4.9.5)
|
||||||
vite: 4.3.5(@types/node@18.16.9)
|
vite: 4.3.8(@types/node@18.16.13)
|
||||||
transitivePeerDependencies:
|
transitivePeerDependencies:
|
||||||
- supports-color
|
- supports-color
|
||||||
- typescript
|
- typescript
|
||||||
dev: true
|
dev: true
|
||||||
|
|
||||||
/vite@4.3.5(@types/node@18.16.9):
|
/vite@4.3.8(@types/node@18.16.13):
|
||||||
resolution: {integrity: sha512-0gEnL9wiRFxgz40o/i/eTBwm+NEbpUeTWhzKrZDSdKm6nplj+z4lKz8ANDgildxHm47Vg8EUia0aicKbawUVVA==}
|
resolution: {integrity: sha512-uYB8PwN7hbMrf4j1xzGDk/lqjsZvCDbt/JC5dyfxc19Pg8kRm14LinK/uq+HSLNswZEoKmweGdtpbnxRtrAXiQ==}
|
||||||
engines: {node: ^14.18.0 || >=16.0.0}
|
engines: {node: ^14.18.0 || >=16.0.0}
|
||||||
hasBin: true
|
hasBin: true
|
||||||
peerDependencies:
|
peerDependencies:
|
||||||
@ -3051,10 +3046,10 @@ packages:
|
|||||||
terser:
|
terser:
|
||||||
optional: true
|
optional: true
|
||||||
dependencies:
|
dependencies:
|
||||||
'@types/node': 18.16.9
|
'@types/node': 18.16.13
|
||||||
esbuild: 0.17.19
|
esbuild: 0.17.19
|
||||||
postcss: 8.4.23
|
postcss: 8.4.23
|
||||||
rollup: 3.21.7
|
rollup: 3.22.0
|
||||||
optionalDependencies:
|
optionalDependencies:
|
||||||
fsevents: 2.3.2
|
fsevents: 2.3.2
|
||||||
dev: true
|
dev: true
|
||||||
|
10
src-tauri/migrations/20230521092300_add_block_model.sql
Normal file
10
src-tauri/migrations/20230521092300_add_block_model.sql
Normal file
@ -0,0 +1,10 @@
|
|||||||
|
-- Add migration script here
|
||||||
|
CREATE TABLE
|
||||||
|
blocks (
|
||||||
|
id INTEGER NOT NULL PRIMARY KEY,
|
||||||
|
account_id INTEGER NOT NULL,
|
||||||
|
kind INTEGER NOT NULL,
|
||||||
|
title TEXT NOT NULL,
|
||||||
|
content TEXT NOT NULL,
|
||||||
|
FOREIGN KEY (account_id) REFERENCES accounts (id)
|
||||||
|
);
|
@ -93,6 +93,12 @@ fn main() {
|
|||||||
sql: include_str!("../migrations/20230427081017_clean_up_account.sql"),
|
sql: include_str!("../migrations/20230427081017_clean_up_account.sql"),
|
||||||
kind: MigrationKind::Up,
|
kind: MigrationKind::Up,
|
||||||
},
|
},
|
||||||
|
Migration {
|
||||||
|
version: 20230521092300,
|
||||||
|
description: "create block",
|
||||||
|
sql: include_str!("../migrations/20230521092300_add_block_model.sql"),
|
||||||
|
kind: MigrationKind::Up,
|
||||||
|
},
|
||||||
],
|
],
|
||||||
)
|
)
|
||||||
.build(),
|
.build(),
|
||||||
|
@ -126,7 +126,7 @@ export default function ChannelCreateModal() {
|
|||||||
<div className="flex items-center justify-between">
|
<div className="flex items-center justify-between">
|
||||||
<Dialog.Title
|
<Dialog.Title
|
||||||
as="h3"
|
as="h3"
|
||||||
className="bg-gradient-to-br from-zinc-200 to-zinc-400 bg-clip-text text-xl font-semibold leading-none text-transparent"
|
className="text-xl font-semibold leading-none text-white"
|
||||||
>
|
>
|
||||||
Create channel
|
Create channel
|
||||||
</Dialog.Title>
|
</Dialog.Title>
|
||||||
@ -142,7 +142,7 @@ export default function ChannelCreateModal() {
|
|||||||
/>
|
/>
|
||||||
</button>
|
</button>
|
||||||
</div>
|
</div>
|
||||||
<Dialog.Description className="leading-tight text-zinc-400">
|
<Dialog.Description className="leading-tight text-zinc-300">
|
||||||
Channels are freedom square, everyone can speech freely,
|
Channels are freedom square, everyone can speech freely,
|
||||||
no one can stop you or deceive what to speech
|
no one can stop you or deceive what to speech
|
||||||
</Dialog.Description>
|
</Dialog.Description>
|
||||||
|
@ -53,7 +53,7 @@ export const MentionNote = memo(function MentionNote({ id }: { id: string }) {
|
|||||||
{data ? (
|
{data ? (
|
||||||
<>
|
<>
|
||||||
<NoteDefaultUser pubkey={data.pubkey} time={data.created_at} />
|
<NoteDefaultUser pubkey={data.pubkey} time={data.created_at} />
|
||||||
<div className="mt-1 pl-[46px]">
|
<div className="-mt-5 pl-[49px]">
|
||||||
{kind1 && <Kind1 content={kind1} />}
|
{kind1 && <Kind1 content={kind1} />}
|
||||||
{kind1063 && <Kind1063 metadata={kind1063} />}
|
{kind1063 && <Kind1063 metadata={kind1063} />}
|
||||||
</div>
|
</div>
|
||||||
|
@ -1,12 +1,8 @@
|
|||||||
import NoteReply from "@app/note/components/metadata/reply";
|
import NoteReply from "@app/note/components/metadata/reply";
|
||||||
import NoteRepost from "@app/note/components/metadata/repost";
|
import NoteRepost from "@app/note/components/metadata/repost";
|
||||||
|
|
||||||
import { RelayContext } from "@shared/relayProvider";
|
|
||||||
|
|
||||||
import NoteZap from "@app/note/components/metadata/zap";
|
import NoteZap from "@app/note/components/metadata/zap";
|
||||||
import PlusIcon from "@shared/icons/plus";
|
|
||||||
import ZapIcon from "@shared/icons/zap";
|
import ZapIcon from "@shared/icons/zap";
|
||||||
import { Tooltip } from "@shared/tooltip";
|
import { RelayContext } from "@shared/relayProvider";
|
||||||
import { READONLY_RELAYS } from "@stores/constants";
|
import { READONLY_RELAYS } from "@stores/constants";
|
||||||
import { decode } from "light-bolt11-decoder";
|
import { decode } from "light-bolt11-decoder";
|
||||||
import { useContext, useState } from "react";
|
import { useContext, useState } from "react";
|
||||||
@ -67,18 +63,11 @@ export default function NoteMetadata({
|
|||||||
});
|
});
|
||||||
|
|
||||||
return (
|
return (
|
||||||
<div className="flex flex-col gap-2 mt-5">
|
<div className="inline-flex items-center gap-2 w-full h-14 mt-5 border-t border-zinc-800">
|
||||||
<NoteZap zaps={zaps} />
|
|
||||||
<div className="inline-flex items-center gap-2 w-full h-10 border-t border-zinc-800">
|
|
||||||
<NoteReply id={id} replies={replies} />
|
<NoteReply id={id} replies={replies} />
|
||||||
<NoteRepost id={id} pubkey={eventPubkey} reposts={reposts} />
|
<NoteRepost id={id} pubkey={eventPubkey} reposts={reposts} />
|
||||||
<button
|
<div className="ml-auto">
|
||||||
type="button"
|
<NoteZap zaps={zaps} />
|
||||||
className="ml-auto inline-flex items-center gap-1 text-sm px-2 py-1 rounded bg-zinc-800 text-zinc-300 hover:text-orange-500 hover:bg-orange-100"
|
|
||||||
>
|
|
||||||
<ZapIcon className="w-4 h-4" />
|
|
||||||
Zap
|
|
||||||
</button>
|
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
);
|
);
|
||||||
|
93
src/app/space/components/create.tsx
Normal file
93
src/app/space/components/create.tsx
Normal file
@ -0,0 +1,93 @@
|
|||||||
|
import { Dialog, Transition } from "@headlessui/react";
|
||||||
|
import CancelIcon from "@icons/cancel";
|
||||||
|
import PlusIcon from "@icons/plus";
|
||||||
|
import { Fragment, useState } from "react";
|
||||||
|
|
||||||
|
export function CreateBlockModal() {
|
||||||
|
const [isOpen, setIsOpen] = useState(false);
|
||||||
|
const [loading, setLoading] = useState(false);
|
||||||
|
|
||||||
|
const closeModal = () => {
|
||||||
|
setIsOpen(false);
|
||||||
|
};
|
||||||
|
|
||||||
|
const openModal = () => {
|
||||||
|
setIsOpen(true);
|
||||||
|
};
|
||||||
|
|
||||||
|
return (
|
||||||
|
<>
|
||||||
|
<button
|
||||||
|
type="button"
|
||||||
|
onClick={() => openModal()}
|
||||||
|
className="group inline-flex h-8 items-center gap-2.5 rounded-md px-2.5 hover:bg-zinc-900"
|
||||||
|
>
|
||||||
|
<div className="inline-flex h-5 w-5 shrink items-center justify-center rounded bg-zinc-900 group-hover:bg-zinc-800">
|
||||||
|
<PlusIcon width={12} height={12} className="text-zinc-500" />
|
||||||
|
</div>
|
||||||
|
<div>
|
||||||
|
<h5 className="font-semibold text-zinc-400 group-hover:text-zinc-200">
|
||||||
|
Create a new block
|
||||||
|
</h5>
|
||||||
|
</div>
|
||||||
|
</button>
|
||||||
|
<Transition appear show={isOpen} as={Fragment}>
|
||||||
|
<Dialog as="div" className="relative z-10" onClose={closeModal}>
|
||||||
|
<Transition.Child
|
||||||
|
as={Fragment}
|
||||||
|
enter="ease-out duration-300"
|
||||||
|
enterFrom="opacity-0"
|
||||||
|
enterTo="opacity-100"
|
||||||
|
leave="ease-in duration-200"
|
||||||
|
leaveFrom="opacity-100"
|
||||||
|
leaveTo="opacity-0"
|
||||||
|
>
|
||||||
|
<div className="fixed inset-0 z-50 bg-black bg-opacity-30 backdrop-blur-md" />
|
||||||
|
</Transition.Child>
|
||||||
|
<div className="fixed inset-0 z-50 flex min-h-full items-center justify-center">
|
||||||
|
<Transition.Child
|
||||||
|
as={Fragment}
|
||||||
|
enter="ease-out duration-300"
|
||||||
|
enterFrom="opacity-0 scale-95"
|
||||||
|
enterTo="opacity-100 scale-100"
|
||||||
|
leave="ease-in duration-200"
|
||||||
|
leaveFrom="opacity-100 scale-100"
|
||||||
|
leaveTo="opacity-0 scale-95"
|
||||||
|
>
|
||||||
|
<Dialog.Panel className="relative flex h-min w-full max-w-lg flex-col gap-2 rounded-lg border border-zinc-800 bg-zinc-900">
|
||||||
|
<div className="h-min w-full shrink-0 border-b border-zinc-800 px-5 py-6">
|
||||||
|
<div className="flex flex-col gap-2">
|
||||||
|
<div className="flex items-center justify-between">
|
||||||
|
<Dialog.Title
|
||||||
|
as="h3"
|
||||||
|
className="text-xl font-semibold leading-none text-white"
|
||||||
|
>
|
||||||
|
Create block
|
||||||
|
</Dialog.Title>
|
||||||
|
<button
|
||||||
|
type="button"
|
||||||
|
onClick={closeModal}
|
||||||
|
className="inline-flex h-5 w-5 items-center justify-center rounded hover:bg-zinc-900"
|
||||||
|
>
|
||||||
|
<CancelIcon
|
||||||
|
width={20}
|
||||||
|
height={20}
|
||||||
|
className="text-zinc-300"
|
||||||
|
/>
|
||||||
|
</button>
|
||||||
|
</div>
|
||||||
|
<Dialog.Description className="leading-tight text-zinc-300">
|
||||||
|
Channels are freedom square, everyone can speech freely,
|
||||||
|
no one can stop you or deceive what to speech
|
||||||
|
</Dialog.Description>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<div className="flex h-full w-full flex-col overflow-y-auto px-5 pb-5 pt-3" />
|
||||||
|
</Dialog.Panel>
|
||||||
|
</Transition.Child>
|
||||||
|
</div>
|
||||||
|
</Dialog>
|
||||||
|
</Transition>
|
||||||
|
</>
|
||||||
|
);
|
||||||
|
}
|
137
src/app/space/components/feed.tsx
Normal file
137
src/app/space/components/feed.tsx
Normal file
@ -0,0 +1,137 @@
|
|||||||
|
import { NoteBase } from "@app/note/components/base";
|
||||||
|
import { NoteQuoteRepost } from "@app/note/components/quoteRepost";
|
||||||
|
import { NoteSkeleton } from "@app/note/components/skeleton";
|
||||||
|
import { useInfiniteQuery } from "@tanstack/react-query";
|
||||||
|
import { useVirtualizer } from "@tanstack/react-virtual";
|
||||||
|
import { getNotesByAuthor } from "@utils/storage";
|
||||||
|
import { useEffect, useRef } from "react";
|
||||||
|
|
||||||
|
const ITEM_PER_PAGE = 10;
|
||||||
|
const TIME = Math.floor(Date.now() / 1000);
|
||||||
|
|
||||||
|
export function FeedBlock({ params }: { params: any }) {
|
||||||
|
const {
|
||||||
|
status,
|
||||||
|
data,
|
||||||
|
fetchNextPage,
|
||||||
|
hasNextPage,
|
||||||
|
isFetching,
|
||||||
|
isFetchingNextPage,
|
||||||
|
}: any = useInfiniteQuery({
|
||||||
|
queryKey: [params.title],
|
||||||
|
queryFn: async ({ pageParam = 0 }) => {
|
||||||
|
return await getNotesByAuthor(
|
||||||
|
params.content,
|
||||||
|
TIME,
|
||||||
|
ITEM_PER_PAGE,
|
||||||
|
pageParam,
|
||||||
|
);
|
||||||
|
},
|
||||||
|
getNextPageParam: (lastPage) => lastPage.nextCursor,
|
||||||
|
});
|
||||||
|
|
||||||
|
const allRows = data ? data.pages.flatMap((d: { data: any }) => d.data) : [];
|
||||||
|
const parentRef = useRef();
|
||||||
|
|
||||||
|
const rowVirtualizer = useVirtualizer({
|
||||||
|
count: hasNextPage ? allRows.length + 1 : allRows.length,
|
||||||
|
getScrollElement: () => parentRef.current,
|
||||||
|
estimateSize: () => 400,
|
||||||
|
overscan: 2,
|
||||||
|
});
|
||||||
|
|
||||||
|
const itemsVirtualizer = rowVirtualizer.getVirtualItems();
|
||||||
|
|
||||||
|
useEffect(() => {
|
||||||
|
const [lastItem] = [...rowVirtualizer.getVirtualItems()].reverse();
|
||||||
|
|
||||||
|
if (!lastItem) {
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (
|
||||||
|
lastItem.index >= allRows.length - 1 &&
|
||||||
|
hasNextPage &&
|
||||||
|
!isFetchingNextPage
|
||||||
|
) {
|
||||||
|
fetchNextPage();
|
||||||
|
}
|
||||||
|
}, [fetchNextPage, allRows.length, rowVirtualizer.getVirtualItems()]);
|
||||||
|
|
||||||
|
return (
|
||||||
|
<div className="shrink-0 w-[420px] border-r border-zinc-900">
|
||||||
|
<div
|
||||||
|
data-tauri-drag-region
|
||||||
|
className="h-11 w-full inline-flex items-center justify-center border-b border-zinc-900"
|
||||||
|
>
|
||||||
|
<h3 className="font-semibold text-zinc-100">{params.title}</h3>
|
||||||
|
</div>
|
||||||
|
<div
|
||||||
|
ref={parentRef}
|
||||||
|
className="scrollbar-hide flex w-full h-full flex-col justify-between gap-1.5 pt-1.5 overflow-y-auto"
|
||||||
|
style={{ contain: "strict" }}
|
||||||
|
>
|
||||||
|
{status === "loading" ? (
|
||||||
|
<div className="px-3 py-1.5">
|
||||||
|
<div className="rounded-md border border-zinc-800 bg-zinc-900 px-3 py-3 shadow-input shadow-black/20">
|
||||||
|
<NoteSkeleton />
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
) : (
|
||||||
|
<div
|
||||||
|
className="relative w-full"
|
||||||
|
style={{
|
||||||
|
height: `${rowVirtualizer.getTotalSize()}px`,
|
||||||
|
}}
|
||||||
|
>
|
||||||
|
<div
|
||||||
|
className="absolute left-0 top-0 w-full"
|
||||||
|
style={{
|
||||||
|
transform: `translateY(${
|
||||||
|
itemsVirtualizer[0].start -
|
||||||
|
rowVirtualizer.options.scrollMargin
|
||||||
|
}px)`,
|
||||||
|
}}
|
||||||
|
>
|
||||||
|
{rowVirtualizer.getVirtualItems().map((virtualRow) => {
|
||||||
|
const note = allRows[virtualRow.index];
|
||||||
|
if (note) {
|
||||||
|
if (note.kind === 1) {
|
||||||
|
return (
|
||||||
|
<div
|
||||||
|
key={virtualRow.index}
|
||||||
|
data-index={virtualRow.index}
|
||||||
|
ref={rowVirtualizer.measureElement}
|
||||||
|
>
|
||||||
|
<NoteBase key={note.event_id} event={note} />
|
||||||
|
</div>
|
||||||
|
);
|
||||||
|
} else {
|
||||||
|
return (
|
||||||
|
<div
|
||||||
|
key={virtualRow.index}
|
||||||
|
data-index={virtualRow.index}
|
||||||
|
ref={rowVirtualizer.measureElement}
|
||||||
|
>
|
||||||
|
<NoteQuoteRepost key={note.event_id} event={note} />
|
||||||
|
</div>
|
||||||
|
);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
})}
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
)}
|
||||||
|
<div>
|
||||||
|
{isFetching && !isFetchingNextPage && (
|
||||||
|
<div className="px-3 py-1.5">
|
||||||
|
<div className="rounded-md border border-zinc-800 bg-zinc-900 px-3 py-3 shadow-input shadow-black/20">
|
||||||
|
<NoteSkeleton />
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
)}
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
);
|
||||||
|
}
|
21
src/app/space/components/image.tsx
Normal file
21
src/app/space/components/image.tsx
Normal file
@ -0,0 +1,21 @@
|
|||||||
|
import { Image } from "@shared/image";
|
||||||
|
|
||||||
|
export function ImageBlock({ params }: { params: any }) {
|
||||||
|
return (
|
||||||
|
<div className="shrink-0 w-[360px] flex-col flex border-r border-zinc-900">
|
||||||
|
<div
|
||||||
|
data-tauri-drag-region
|
||||||
|
className="h-11 w-full inline-flex items-center justify-center border-b border-zinc-900"
|
||||||
|
>
|
||||||
|
<h3 className="font-semibold text-zinc-100">{params.title}</h3>
|
||||||
|
</div>
|
||||||
|
<div className="w-full flex-1 p-3">
|
||||||
|
<Image
|
||||||
|
src={params.content}
|
||||||
|
alt={params.title}
|
||||||
|
className="w-full h-full object-cover rounded-md"
|
||||||
|
/>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
);
|
||||||
|
}
|
@ -1,19 +1,30 @@
|
|||||||
|
import { FeedBlock } from "../components/feed";
|
||||||
|
import { CreateBlockModal } from "@app/space/components/create";
|
||||||
import { FollowingBlock } from "@app/space/components/following";
|
import { FollowingBlock } from "@app/space/components/following";
|
||||||
import PlusIcon from "@shared/icons/plus";
|
import { ImageBlock } from "@app/space/components/image";
|
||||||
|
import { getBlocks } from "@utils/storage";
|
||||||
|
import useSWR from "swr";
|
||||||
|
|
||||||
|
const fetcher = ([, id]) => getBlocks(1);
|
||||||
|
|
||||||
export function Page() {
|
export function Page() {
|
||||||
|
const { data }: any = useSWR("blocks", fetcher);
|
||||||
|
|
||||||
return (
|
return (
|
||||||
<div className="h-full w-full flex flex-nowrap overflow-x-auto overflow-y-hidden">
|
<div className="h-full w-full flex flex-nowrap overflow-x-auto overflow-y-hidden">
|
||||||
<FollowingBlock />
|
<FollowingBlock />
|
||||||
|
{data
|
||||||
|
? data.map((block: any) =>
|
||||||
|
block.kind === 0 ? (
|
||||||
|
<ImageBlock key={block.id} params={block} />
|
||||||
|
) : (
|
||||||
|
<FeedBlock key={block.id} params={block} />
|
||||||
|
),
|
||||||
|
)
|
||||||
|
: null}
|
||||||
<div className="shrink-0 w-[360px] border-r border-zinc-900">
|
<div className="shrink-0 w-[360px] border-r border-zinc-900">
|
||||||
<div className="w-full h-full inline-flex items-center justify-center">
|
<div className="w-full h-full inline-flex items-center justify-center">
|
||||||
<button
|
<CreateBlockModal />
|
||||||
type="button"
|
|
||||||
className="inline-flex flex-col items-center justify-center gap-1 text-zinc-500 text-lg font-semibold"
|
|
||||||
>
|
|
||||||
<PlusIcon className="w-5 h-5 text-zinc-300" />
|
|
||||||
Add block
|
|
||||||
</button>
|
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
<div className="shrink-0 w-[360px]" />
|
<div className="shrink-0 w-[360px]" />
|
||||||
|
@ -136,7 +136,7 @@ export default function EventCollector() {
|
|||||||
);
|
);
|
||||||
|
|
||||||
return (
|
return (
|
||||||
<div className="inline-flex h-6 w-6 items-center justify-center rounded text-green-400 hover:bg-zinc-900 hover:text-white">
|
<div className="inline-flex h-6 w-6 items-center justify-center rounded text-zinc-500 hover:bg-zinc-900 hover:text-green-500">
|
||||||
<HeartBeatIcon width={16} height={16} />
|
<HeartBeatIcon width={16} height={16} />
|
||||||
</div>
|
</div>
|
||||||
);
|
);
|
||||||
|
@ -122,6 +122,26 @@ export async function getNotes(time: number, limit: number, offset: number) {
|
|||||||
return notes;
|
return notes;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// get all notes by authors
|
||||||
|
export async function getNotesByAuthor(
|
||||||
|
pubkey: string,
|
||||||
|
time: number,
|
||||||
|
limit: number,
|
||||||
|
offset: number,
|
||||||
|
) {
|
||||||
|
const db = await connect();
|
||||||
|
|
||||||
|
const notes: any = { data: null, nextCursor: 0 };
|
||||||
|
const query: any = await db.select(
|
||||||
|
`SELECT * FROM notes WHERE created_at <= "${time}" AND pubkey == "${pubkey}" AND kind IN (1, 6, 1063) GROUP BY parent_id ORDER BY created_at DESC LIMIT "${limit}" OFFSET "${offset}";`,
|
||||||
|
);
|
||||||
|
|
||||||
|
notes["data"] = query;
|
||||||
|
notes["nextCursor"] = offset + limit;
|
||||||
|
|
||||||
|
return notes;
|
||||||
|
}
|
||||||
|
|
||||||
// get all long notes
|
// get all long notes
|
||||||
export async function getLongNotes(
|
export async function getLongNotes(
|
||||||
time: number,
|
time: number,
|
||||||
@ -300,3 +320,11 @@ export async function updateItemInBlacklist(content: string, status: number) {
|
|||||||
`UPDATE blacklist SET status = "${status}" WHERE content = "${content}";`,
|
`UPDATE blacklist SET status = "${status}" WHERE content = "${content}";`,
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// get all blocks
|
||||||
|
export async function getBlocks(account_id: number) {
|
||||||
|
const db = await connect();
|
||||||
|
return await db.select(
|
||||||
|
`SELECT * FROM blocks WHERE account_id <= "${account_id}";`,
|
||||||
|
);
|
||||||
|
}
|
||||||
|
Loading…
Reference in New Issue
Block a user