diff --git a/package-lock.json b/package-lock.json
index f8ebbef..0ea5c2d 100644
--- a/package-lock.json
+++ b/package-lock.json
@@ -14,8 +14,8 @@
"@dnd-kit/utilities": "^3.2.2",
"@excalidraw/excalidraw": "^0.17.6",
"@glideapps/glide-data-grid-cells": "^3.4.1",
- "@labbs/openblock-core": "v1.0.3",
- "@labbs/openblock-react": "v1.0.3",
+ "@labbs/openblock-core": "v1.1.0",
+ "@labbs/openblock-react": "v1.1.0",
"@radix-ui/react-alert-dialog": "^1.1.15",
"@radix-ui/react-avatar": "^1.1.2",
"@radix-ui/react-checkbox": "^1.3.3",
@@ -46,7 +46,10 @@
"react-i18next": "^16.5.4",
"react-router-dom": "^7.1.3",
"tailwind-merge": "^2.6.0",
- "use-debounce": "^10.0.6"
+ "use-debounce": "^10.0.6",
+ "y-prosemirror": "^1.3.7",
+ "y-websocket": "^3.0.0",
+ "yjs": "^13.6.30"
},
"devDependencies": {
"@eslint/js": "^9.17.0",
@@ -1325,9 +1328,9 @@
}
},
"node_modules/@labbs/openblock-core": {
- "version": "1.0.3",
- "resolved": "https://npm.pkg.github.com/download/@labbs/openblock-core/1.0.3/a093b94bdb8fff3ddd88ecec935bec7c8964da38",
- "integrity": "sha512-UufYCNGKegXhJB3Hp669Js1juBX9oK8zuFzUSIutYh3qAfvGs2esYp0jeFcZwPFogX6l/ZpZAiEWIhiFy8EgDA==",
+ "version": "1.1.0",
+ "resolved": "https://npm.pkg.github.com/download/@labbs/openblock-core/1.1.0/d823a8314978f99ba98677d807fd6fb13668cc69",
+ "integrity": "sha512-FP8ytFhuN/fqFI+IxhEcC+MMbvn81S53VyYXVtVrOp0BU25uef0pksW/KNRIpYFq/8807HT6YREiVIyTZLE7Dw==",
"license": "Apache-2.0",
"dependencies": {
"prosemirror-commands": "^1.6.2",
@@ -1342,15 +1345,19 @@
"prosemirror-transform": "^1.10.2",
"prosemirror-view": "^1.37.1",
"uuid": "^11.0.5"
+ },
+ "peerDependencies": {
+ "y-prosemirror": "^1.0.0",
+ "yjs": "^13.0.0"
}
},
"node_modules/@labbs/openblock-react": {
- "version": "1.0.3",
- "resolved": "https://npm.pkg.github.com/download/@labbs/openblock-react/1.0.3/03ca1f512d8fa7967da4a614f0914de9c31c142d",
- "integrity": "sha512-Tf2xFQfD6NALoQJf8ybhdMO/cayWgrf+IKKMCyWXjK7LXzvyIvM+jrmpXCxt/byI2Z4IjUrgrY7/2rknJGUg6A==",
+ "version": "1.1.0",
+ "resolved": "https://npm.pkg.github.com/download/@labbs/openblock-react/1.1.0/1e56ea0d9f9515d0a83d38986bb2eaa3335a5c02",
+ "integrity": "sha512-m3UP60UdzgtA9Xsgq8b6/1pq+x3pf0zELpGLGqcKEzpcnKqWlo8rt92f0mf70kISvFzX4m7CBuBWPqiHTyQUsw==",
"license": "Apache-2.0",
"dependencies": {
- "@labbs/openblock-core": "1.0.3"
+ "@labbs/openblock-core": "1.1.0"
},
"peerDependencies": {
"react": ">=18.0.0",
@@ -6087,6 +6094,16 @@
"dev": true,
"license": "ISC"
},
+ "node_modules/isomorphic.js": {
+ "version": "0.2.5",
+ "resolved": "https://registry.npmjs.org/isomorphic.js/-/isomorphic.js-0.2.5.tgz",
+ "integrity": "sha512-PIeMbHqMt4DnUP3MA/Flc0HElYjMXArsw1qwJZcm9sqR8mq3l8NYizFMty0pWwE/tzIGH3EKK5+jes5mAr85yw==",
+ "license": "MIT",
+ "funding": {
+ "type": "GitHub Sponsors ❤",
+ "url": "https://github.com/sponsors/dmonad"
+ }
+ },
"node_modules/jiti": {
"version": "2.6.1",
"resolved": "https://registry.npmjs.org/jiti/-/jiti-2.6.1.tgz",
@@ -6221,6 +6238,27 @@
"node": ">= 0.8.0"
}
},
+ "node_modules/lib0": {
+ "version": "0.2.117",
+ "resolved": "https://registry.npmjs.org/lib0/-/lib0-0.2.117.tgz",
+ "integrity": "sha512-DeXj9X5xDCjgKLU/7RR+/HQEVzuuEUiwldwOGsHK/sfAfELGWEyTcf0x+uOvCvK3O2zPmZePXWL85vtia6GyZw==",
+ "license": "MIT",
+ "dependencies": {
+ "isomorphic.js": "^0.2.4"
+ },
+ "bin": {
+ "0ecdsa-generate-keypair": "bin/0ecdsa-generate-keypair.js",
+ "0gentesthtml": "bin/gentesthtml.js",
+ "0serve": "bin/0serve.js"
+ },
+ "engines": {
+ "node": ">=16"
+ },
+ "funding": {
+ "type": "GitHub Sponsors ❤",
+ "url": "https://github.com/sponsors/dmonad"
+ }
+ },
"node_modules/lightningcss": {
"version": "1.30.2",
"resolved": "https://registry.npmjs.org/lightningcss/-/lightningcss-1.30.2.tgz",
@@ -8427,6 +8465,71 @@
"node": ">=0.10.0"
}
},
+ "node_modules/y-prosemirror": {
+ "version": "1.3.7",
+ "resolved": "https://registry.npmjs.org/y-prosemirror/-/y-prosemirror-1.3.7.tgz",
+ "integrity": "sha512-NpM99WSdD4Fx4if5xOMDpPtU3oAmTSjlzh5U4353ABbRHl1HtAFUx6HlebLZfyFxXN9jzKMDkVbcRjqOZVkYQg==",
+ "license": "MIT",
+ "dependencies": {
+ "lib0": "^0.2.109"
+ },
+ "engines": {
+ "node": ">=16.0.0",
+ "npm": ">=8.0.0"
+ },
+ "funding": {
+ "type": "GitHub Sponsors ❤",
+ "url": "https://github.com/sponsors/dmonad"
+ },
+ "peerDependencies": {
+ "prosemirror-model": "^1.7.1",
+ "prosemirror-state": "^1.2.3",
+ "prosemirror-view": "^1.9.10",
+ "y-protocols": "^1.0.1",
+ "yjs": "^13.5.38"
+ }
+ },
+ "node_modules/y-protocols": {
+ "version": "1.0.7",
+ "resolved": "https://registry.npmjs.org/y-protocols/-/y-protocols-1.0.7.tgz",
+ "integrity": "sha512-YSVsLoXxO67J6eE/nV4AtFtT3QEotZf5sK5BHxFBXso7VDUT3Tx07IfA6hsu5Q5OmBdMkQVmFZ9QOA7fikWvnw==",
+ "license": "MIT",
+ "dependencies": {
+ "lib0": "^0.2.85"
+ },
+ "engines": {
+ "node": ">=16.0.0",
+ "npm": ">=8.0.0"
+ },
+ "funding": {
+ "type": "GitHub Sponsors ❤",
+ "url": "https://github.com/sponsors/dmonad"
+ },
+ "peerDependencies": {
+ "yjs": "^13.0.0"
+ }
+ },
+ "node_modules/y-websocket": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/y-websocket/-/y-websocket-3.0.0.tgz",
+ "integrity": "sha512-mUHy7AzkOZ834T/7piqtlA8Yk6AchqKqcrCXjKW8J1w2lPtRDjz8W5/CvXz9higKAHgKRKqpI3T33YkRFLkPtg==",
+ "license": "MIT",
+ "dependencies": {
+ "lib0": "^0.2.102",
+ "y-protocols": "^1.0.5"
+ },
+ "engines": {
+ "node": ">=16.0.0",
+ "npm": ">=8.0.0"
+ },
+ "funding": {
+ "type": "GitHub Sponsors ❤",
+ "url": "https://github.com/sponsors/dmonad"
+ },
+ "peerDependencies": {
+ "yjs": "^13.5.6"
+ }
+ },
"node_modules/yallist": {
"version": "3.1.1",
"resolved": "https://registry.npmjs.org/yallist/-/yallist-3.1.1.tgz",
@@ -8449,6 +8552,23 @@
"url": "https://github.com/sponsors/eemeli"
}
},
+ "node_modules/yjs": {
+ "version": "13.6.30",
+ "resolved": "https://registry.npmjs.org/yjs/-/yjs-13.6.30.tgz",
+ "integrity": "sha512-vv/9h42eCMC81ZHDFswuu/MKzkl/vyq1BhaNGfHyOonwlG4CJbQF4oiBBJPvfdeCt/PlVDWh7Nov9D34YY09uQ==",
+ "license": "MIT",
+ "dependencies": {
+ "lib0": "^0.2.99"
+ },
+ "engines": {
+ "node": ">=16.0.0",
+ "npm": ">=8.0.0"
+ },
+ "funding": {
+ "type": "GitHub Sponsors ❤",
+ "url": "https://github.com/sponsors/dmonad"
+ }
+ },
"node_modules/yocto-queue": {
"version": "0.1.0",
"resolved": "https://registry.npmjs.org/yocto-queue/-/yocto-queue-0.1.0.tgz",
diff --git a/package.json b/package.json
index cb831fb..834b6cf 100644
--- a/package.json
+++ b/package.json
@@ -17,8 +17,8 @@
"@dnd-kit/utilities": "^3.2.2",
"@excalidraw/excalidraw": "^0.17.6",
"@glideapps/glide-data-grid-cells": "^3.4.1",
- "@labbs/openblock-core": "v1.0.3",
- "@labbs/openblock-react": "v1.0.3",
+ "@labbs/openblock-core": "v1.1.0",
+ "@labbs/openblock-react": "v1.1.0",
"@radix-ui/react-alert-dialog": "^1.1.15",
"@radix-ui/react-avatar": "^1.1.2",
"@radix-ui/react-checkbox": "^1.3.3",
@@ -43,13 +43,17 @@
"i18next-resources-to-backend": "^1.2.1",
"lucide-react": "^0.468.0",
"next-themes": "^0.4.4",
+ "prosemirror-state": "^1.4.4",
"react": "^18.3.1",
"react-day-picker": "^9.13.0",
"react-dom": "^18.3.1",
"react-i18next": "^16.5.4",
"react-router-dom": "^7.1.3",
"tailwind-merge": "^2.6.0",
- "use-debounce": "^10.0.6"
+ "use-debounce": "^10.0.6",
+ "y-prosemirror": "^1.3.7",
+ "y-websocket": "^3.0.0",
+ "yjs": "^13.6.30"
},
"devDependencies": {
"@eslint/js": "^9.17.0",
diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml
index 8729c5d..ba48ffb 100644
--- a/pnpm-lock.yaml
+++ b/pnpm-lock.yaml
@@ -27,11 +27,11 @@ importers:
specifier: ^3.4.1
version: 3.4.1(lodash@4.17.21)(marked@4.3.0)(react-dom@18.3.1(react@18.3.1))(react-responsive-carousel@3.2.23)(react@18.3.1)(styled-components@5.3.11(@babel/core@7.28.6)(react-dom@18.3.1(react@18.3.1))(react-is@16.13.1)(react@18.3.1))
'@labbs/openblock-core':
- specifier: v1.0.1
- version: 1.0.1
+ specifier: v1.1.0
+ version: 1.1.0(y-prosemirror@1.3.7(prosemirror-model@1.25.4)(prosemirror-state@1.4.4)(prosemirror-view@1.41.5)(y-protocols@1.0.7(yjs@13.6.30))(yjs@13.6.30))(yjs@13.6.30)
'@labbs/openblock-react':
- specifier: v1.0.1
- version: 1.0.1(react-dom@18.3.1(react@18.3.1))(react@18.3.1)
+ specifier: v1.1.0
+ version: 1.1.0(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(y-prosemirror@1.3.7(prosemirror-model@1.25.4)(prosemirror-state@1.4.4)(prosemirror-view@1.41.5)(y-protocols@1.0.7(yjs@13.6.30))(yjs@13.6.30))(yjs@13.6.30)
'@radix-ui/react-alert-dialog':
specifier: ^1.1.15
version: 1.1.15(@types/react-dom@18.3.7(@types/react@18.3.27))(@types/react@18.3.27)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)
@@ -104,6 +104,9 @@ importers:
next-themes:
specifier: ^0.4.4
version: 0.4.6(react-dom@18.3.1(react@18.3.1))(react@18.3.1)
+ prosemirror-state:
+ specifier: ^1.4.4
+ version: 1.4.4
react:
specifier: ^18.3.1
version: 18.3.1
@@ -125,6 +128,15 @@ importers:
use-debounce:
specifier: ^10.0.6
version: 10.1.0(react@18.3.1)
+ y-prosemirror:
+ specifier: ^1.3.7
+ version: 1.3.7(prosemirror-model@1.25.4)(prosemirror-state@1.4.4)(prosemirror-view@1.41.5)(y-protocols@1.0.7(yjs@13.6.30))(yjs@13.6.30)
+ y-websocket:
+ specifier: ^3.0.0
+ version: 3.0.0(yjs@13.6.30)
+ yjs:
+ specifier: ^13.6.30
+ version: 13.6.30
devDependencies:
'@eslint/js':
specifier: ^9.17.0
@@ -751,11 +763,19 @@ packages:
'@jridgewell/trace-mapping@0.3.31':
resolution: {integrity: sha512-zzNR+SdQSDJzc8joaeP8QQoCQr8NuYx2dIIytl1QeBEZHJ9uW6hebsrYgbz8hJwUQao3TWCMtmfV8Nu1twOLAw==}
- '@labbs/openblock-core@1.0.1':
- resolution: {integrity: sha512-NrhyQzHCJYbnYFcCOsPqAlBJbB/r9BxonlQlcibLOfL4uaepU3NvPE9mTmXes5VgmEgFD/5Ro1gzvjSMx3ArYw==, tarball: https://npm.pkg.github.com/download/@labbs/openblock-core/1.0.1/2e370f9a430452c3e10e3b36e09445817ecb4fa8}
+ '@labbs/openblock-core@1.1.0':
+ resolution: {integrity: sha512-FP8ytFhuN/fqFI+IxhEcC+MMbvn81S53VyYXVtVrOp0BU25uef0pksW/KNRIpYFq/8807HT6YREiVIyTZLE7Dw==, tarball: https://npm.pkg.github.com/download/@labbs/openblock-core/1.1.0/d823a8314978f99ba98677d807fd6fb13668cc69}
+ peerDependencies:
+ y-prosemirror: ^1.0.0
+ yjs: ^13.0.0
+ peerDependenciesMeta:
+ y-prosemirror:
+ optional: true
+ yjs:
+ optional: true
- '@labbs/openblock-react@1.0.1':
- resolution: {integrity: sha512-V6wsiktebus1itnLEOHPUvwPUkIxeROaZlEUmtIo1W0na6tG3oXOWAApnNCSIeTWy5HD1Pjn0yA/WNJw5Z5tOQ==, tarball: https://npm.pkg.github.com/download/@labbs/openblock-react/1.0.1/9cb9a3bf8480daa261f300e4b85f498014d862d0}
+ '@labbs/openblock-react@1.1.0':
+ resolution: {integrity: sha512-m3UP60UdzgtA9Xsgq8b6/1pq+x3pf0zELpGLGqcKEzpcnKqWlo8rt92f0mf70kISvFzX4m7CBuBWPqiHTyQUsw==, tarball: https://npm.pkg.github.com/download/@labbs/openblock-react/1.1.0/1e56ea0d9f9515d0a83d38986bb2eaa3335a5c02}
peerDependencies:
react: '>=18.0.0'
react-dom: '>=18.0.0'
@@ -2214,6 +2234,9 @@ packages:
isexe@2.0.0:
resolution: {integrity: sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==}
+ isomorphic.js@0.2.5:
+ resolution: {integrity: sha512-PIeMbHqMt4DnUP3MA/Flc0HElYjMXArsw1qwJZcm9sqR8mq3l8NYizFMty0pWwE/tzIGH3EKK5+jes5mAr85yw==}
+
jiti@2.6.1:
resolution: {integrity: sha512-ekilCSN1jwRvIbgeg/57YFh8qQDNbwDb9xT/qu2DAHbFFZUicIl4ygVaAvzveMhMVr3LnpSKTNnwt8PoOfmKhQ==}
hasBin: true
@@ -2265,6 +2288,11 @@ packages:
resolution: {integrity: sha512-+bT2uH4E5LGE7h/n3evcS/sQlJXCpIp6ym8OWJ5eV6+67Dsql/LaaT7qJBAt2rzfoa/5QBGBhxDix1dMt2kQKQ==}
engines: {node: '>= 0.8.0'}
+ lib0@0.2.117:
+ resolution: {integrity: sha512-DeXj9X5xDCjgKLU/7RR+/HQEVzuuEUiwldwOGsHK/sfAfELGWEyTcf0x+uOvCvK3O2zPmZePXWL85vtia6GyZw==}
+ engines: {node: '>=16'}
+ hasBin: true
+
lightningcss-android-arm64@1.30.2:
resolution: {integrity: sha512-BH9sEdOCahSgmkVhBLeU7Hc9DWeZ1Eb6wNS6Da8igvUwAe0sqROHddIlvU06q3WyXVEOYDZ6ykBZQnjTbmo4+A==}
engines: {node: '>= 12.0.0'}
@@ -2976,6 +3004,28 @@ packages:
resolution: {integrity: sha512-BN22B5eaMMI9UMtjrGd5g5eCYPpCPDUy0FJXbYsaT5zYxjFOckS53SQDE3pWkVoWpHXVb3BrYcEN4Twa55B5cA==}
engines: {node: '>=0.10.0'}
+ y-prosemirror@1.3.7:
+ resolution: {integrity: sha512-NpM99WSdD4Fx4if5xOMDpPtU3oAmTSjlzh5U4353ABbRHl1HtAFUx6HlebLZfyFxXN9jzKMDkVbcRjqOZVkYQg==}
+ engines: {node: '>=16.0.0', npm: '>=8.0.0'}
+ peerDependencies:
+ prosemirror-model: ^1.7.1
+ prosemirror-state: ^1.2.3
+ prosemirror-view: ^1.9.10
+ y-protocols: ^1.0.1
+ yjs: ^13.5.38
+
+ y-protocols@1.0.7:
+ resolution: {integrity: sha512-YSVsLoXxO67J6eE/nV4AtFtT3QEotZf5sK5BHxFBXso7VDUT3Tx07IfA6hsu5Q5OmBdMkQVmFZ9QOA7fikWvnw==}
+ engines: {node: '>=16.0.0', npm: '>=8.0.0'}
+ peerDependencies:
+ yjs: ^13.0.0
+
+ y-websocket@3.0.0:
+ resolution: {integrity: sha512-mUHy7AzkOZ834T/7piqtlA8Yk6AchqKqcrCXjKW8J1w2lPtRDjz8W5/CvXz9higKAHgKRKqpI3T33YkRFLkPtg==}
+ engines: {node: '>=16.0.0', npm: '>=8.0.0'}
+ peerDependencies:
+ yjs: ^13.5.6
+
yallist@3.1.1:
resolution: {integrity: sha512-a4UGQaWPH59mOXUYnAG2ewncQS4i4F43Tv3JoAM+s2VDAmS9NsK8GpDMLrCHPksFT7h3K6TOoUNn2pb7RoXx4g==}
@@ -2984,6 +3034,10 @@ packages:
engines: {node: '>= 14.6'}
hasBin: true
+ yjs@13.6.30:
+ resolution: {integrity: sha512-vv/9h42eCMC81ZHDFswuu/MKzkl/vyq1BhaNGfHyOonwlG4CJbQF4oiBBJPvfdeCt/PlVDWh7Nov9D34YY09uQ==}
+ engines: {node: '>=16.0.0', npm: '>=8.0.0'}
+
yocto-queue@0.1.0:
resolution: {integrity: sha512-rVksvsnNCdJ/ohGc6xgPwyN8eheCxsiLM8mxuE/t/mOVqJewPuO1miLpTHQiRgTKCLexL4MeAFVagts7HmNZ2Q==}
engines: {node: '>=10'}
@@ -3458,7 +3512,7 @@ snapshots:
'@jridgewell/resolve-uri': 3.1.2
'@jridgewell/sourcemap-codec': 1.5.5
- '@labbs/openblock-core@1.0.1':
+ '@labbs/openblock-core@1.1.0(y-prosemirror@1.3.7(prosemirror-model@1.25.4)(prosemirror-state@1.4.4)(prosemirror-view@1.41.5)(y-protocols@1.0.7(yjs@13.6.30))(yjs@13.6.30))(yjs@13.6.30)':
dependencies:
prosemirror-commands: 1.7.1
prosemirror-dropcursor: 1.8.2
@@ -3472,12 +3526,18 @@ snapshots:
prosemirror-transform: 1.11.0
prosemirror-view: 1.41.5
uuid: 11.1.0
+ optionalDependencies:
+ y-prosemirror: 1.3.7(prosemirror-model@1.25.4)(prosemirror-state@1.4.4)(prosemirror-view@1.41.5)(y-protocols@1.0.7(yjs@13.6.30))(yjs@13.6.30)
+ yjs: 13.6.30
- '@labbs/openblock-react@1.0.1(react-dom@18.3.1(react@18.3.1))(react@18.3.1)':
+ '@labbs/openblock-react@1.1.0(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(y-prosemirror@1.3.7(prosemirror-model@1.25.4)(prosemirror-state@1.4.4)(prosemirror-view@1.41.5)(y-protocols@1.0.7(yjs@13.6.30))(yjs@13.6.30))(yjs@13.6.30)':
dependencies:
- '@labbs/openblock-core': 1.0.1
+ '@labbs/openblock-core': 1.1.0(y-prosemirror@1.3.7(prosemirror-model@1.25.4)(prosemirror-state@1.4.4)(prosemirror-view@1.41.5)(y-protocols@1.0.7(yjs@13.6.30))(yjs@13.6.30))(yjs@13.6.30)
react: 18.3.1
react-dom: 18.3.1(react@18.3.1)
+ transitivePeerDependencies:
+ - y-prosemirror
+ - yjs
'@nodelib/fs.scandir@2.1.5':
dependencies:
@@ -5039,6 +5099,8 @@ snapshots:
isexe@2.0.0: {}
+ isomorphic.js@0.2.5: {}
+
jiti@2.6.1: {}
js-tokens@4.0.0: {}
@@ -5078,6 +5140,10 @@ snapshots:
prelude-ls: 1.2.1
type-check: 0.4.0
+ lib0@0.2.117:
+ dependencies:
+ isomorphic.js: 0.2.5
+
lightningcss-android-arm64@1.30.2:
optional: true
@@ -5736,10 +5802,34 @@ snapshots:
word-wrap@1.2.5: {}
+ y-prosemirror@1.3.7(prosemirror-model@1.25.4)(prosemirror-state@1.4.4)(prosemirror-view@1.41.5)(y-protocols@1.0.7(yjs@13.6.30))(yjs@13.6.30):
+ dependencies:
+ lib0: 0.2.117
+ prosemirror-model: 1.25.4
+ prosemirror-state: 1.4.4
+ prosemirror-view: 1.41.5
+ y-protocols: 1.0.7(yjs@13.6.30)
+ yjs: 13.6.30
+
+ y-protocols@1.0.7(yjs@13.6.30):
+ dependencies:
+ lib0: 0.2.117
+ yjs: 13.6.30
+
+ y-websocket@3.0.0(yjs@13.6.30):
+ dependencies:
+ lib0: 0.2.117
+ y-protocols: 1.0.7(yjs@13.6.30)
+ yjs: 13.6.30
+
yallist@3.1.1: {}
yaml@2.8.2: {}
+ yjs@13.6.30:
+ dependencies:
+ lib0: 0.2.117
+
yocto-queue@0.1.0: {}
yocto-queue@1.2.2: {}
diff --git a/src/components/database/common/view-tabs.tsx b/src/components/database/common/view-tabs.tsx
index 00671aa..0a50679 100644
--- a/src/components/database/common/view-tabs.tsx
+++ b/src/components/database/common/view-tabs.tsx
@@ -459,7 +459,7 @@ export function ViewTabs({
const isHidden = hiddenColumnIds.has(col.id || '')
return (
{ if (col.id) { isHidden ? onShowColumn(col.id) : onHideColumn(col.id) } }}>
+ onClick={() => { if (col.id) { if (isHidden) { onShowColumn(col.id) } else { onHideColumn(col.id) } } }}>
{col.name}
{isHidden ? : }
diff --git a/src/components/document/document-editor.tsx b/src/components/document/document-editor.tsx
index a95e744..727a9e9 100644
--- a/src/components/document/document-editor.tsx
+++ b/src/components/document/document-editor.tsx
@@ -5,6 +5,8 @@ import { ContentHeader, type BreadcrumbItem } from '@/components/shared/content-
import { Loader2 } from 'lucide-react'
import type { PropertySchema } from '@/hooks/use-database'
import type { IconValue } from '@/components/ui/icon-picker'
+import type { Plugin } from 'prosemirror-state'
+import type { XmlFragment } from 'yjs'
// Types for document fields (from database schema)
interface DocumentField {
@@ -55,6 +57,10 @@ interface DocumentEditorProps {
// Editor readiness
isInitialized?: boolean
+
+ // Collaboration
+ collaborationPlugins?: Plugin[] | null
+ collaborationFragment?: XmlFragment | null
}
export function DocumentEditor({
@@ -82,6 +88,8 @@ export function DocumentEditor({
saveError,
comparisonPanel,
isInitialized = true,
+ collaborationPlugins,
+ collaborationFragment,
}: DocumentEditorProps) {
const { t } = useTranslation('document')
@@ -162,6 +170,8 @@ export function DocumentEditor({
onChange={onContentChange}
editable={isEditable}
fullWidth={isFullWidth}
+ collaborationPlugins={collaborationPlugins}
+ collaborationFragment={collaborationFragment}
/>
) : (
diff --git a/src/components/editor/openblock-editor.tsx b/src/components/editor/openblock-editor.tsx
index d05d45f..36c1b42 100644
--- a/src/components/editor/openblock-editor.tsx
+++ b/src/components/editor/openblock-editor.tsx
@@ -9,7 +9,10 @@ import {
type Block,
} from '@labbs/openblock-react'
import { useTheme } from 'next-themes'
+import { prosemirrorToYXmlFragment } from 'y-prosemirror'
+import type { XmlFragment } from 'yjs'
import { DatabaseBlock } from './database-block'
+import type { Plugin } from 'prosemirror-state'
// Custom blocks array - add new custom blocks here
const CUSTOM_BLOCKS = [DatabaseBlock]
@@ -36,6 +39,10 @@ interface OpenBlockEditorProps {
onChange: (content: OpenBlockContent) => void
editable?: boolean
fullWidth?: boolean
+ /** Y.js collaboration plugins (from useCollaboration) */
+ collaborationPlugins?: Plugin[] | null
+ /** Y.js XML fragment (from useCollaboration) */
+ collaborationFragment?: XmlFragment | null
}
// Styles component to avoid duplication
@@ -198,17 +205,11 @@ function EditorStyles() {
border: 1px solid hsl(var(--border));
}
- /* Side menu (drag handle) */
+ /* Side menu (drag handle) - visibility controlled by JS via ob-side-menu--visible class */
.openblock-editor-wrapper .ob-side-menu {
- opacity: 0;
transition: opacity 150ms ease;
}
- .openblock-editor-wrapper .ob-block:hover .ob-side-menu,
- .openblock-editor-wrapper .ob-side-menu:hover {
- opacity: 1;
- }
-
/* Table styles */
.openblock-editor-wrapper table {
border-collapse: collapse;
@@ -282,6 +283,68 @@ function EditorStyles() {
.openblock-editor-wrapper .ProseMirror .selected {
background: transparent !important;
}
+
+ /* Y.js collaboration — text selection highlight */
+ .openblock-editor-wrapper .ProseMirror-yjs-selection {
+ border-radius: 2px;
+ }
+
+ /* Cursor caret + avatar */
+ .openblock-editor-wrapper .y-collab-cursor {
+ position: relative;
+ display: inline-block;
+ width: 2px;
+ height: 1.15em;
+ vertical-align: text-bottom;
+ background-color: var(--collab-color, #999);
+ margin: 0 1px;
+ pointer-events: none;
+ }
+
+ .openblock-editor-wrapper .y-collab-avatar {
+ position: absolute;
+ left: 4px;
+ top: -1px;
+ width: 18px;
+ height: 18px;
+ border-radius: 50%;
+ background-color: var(--collab-color, #999);
+ color: #fff;
+ font-size: 10px;
+ font-weight: 700;
+ display: flex;
+ align-items: center;
+ justify-content: center;
+ user-select: none;
+ pointer-events: auto;
+ cursor: default;
+ z-index: 10;
+ line-height: 1;
+ }
+
+ /* Name tooltip on hover */
+ .openblock-editor-wrapper .y-collab-avatar::after {
+ content: attr(data-name);
+ position: absolute;
+ top: 50%;
+ left: calc(100% + 6px);
+ transform: translateY(-50%);
+ background-color: var(--collab-color, #999);
+ color: #fff;
+ padding: 2px 7px;
+ border-radius: 4px;
+ font-size: 11px;
+ font-weight: 600;
+ white-space: nowrap;
+ line-height: 1.4;
+ opacity: 0;
+ pointer-events: none;
+ transition: opacity 120ms ease;
+ }
+
+ .openblock-editor-wrapper .y-collab-avatar:hover::after {
+ opacity: 1;
+ }
`}
)
}
@@ -292,11 +355,15 @@ function OpenBlockEditorInner({
onChange,
editable,
fullWidth,
+ collaborationPlugins,
+ collaborationFragment,
}: {
initialContent: Block[] | undefined
onChange: (content: OpenBlockContent) => void
editable: boolean
fullWidth: boolean
+ collaborationPlugins?: Plugin[] | null
+ collaborationFragment?: XmlFragment | null
}) {
const { resolvedTheme } = useTheme()
const lastContentRef = useRef(JSON.stringify(initialContent || []))
@@ -313,6 +380,32 @@ function OpenBlockEditorInner({
// Get slash menu items from custom blocks
const customSlashMenuItems = useCustomSlashMenuItems(editor, CUSTOM_BLOCKS)
+ // Enable/disable collaboration when plugins change
+ const collabEnabledRef = useRef(false)
+ useEffect(() => {
+ if (!editor || editor.isDestroyed) return
+
+ if (collaborationPlugins && collaborationPlugins.length > 0) {
+ if (!collabEnabledRef.current) {
+ // If the Y.Doc fragment is empty (new room, no persistence),
+ // populate it from the current ProseMirror doc BEFORE enabling collab.
+ // This prevents y-prosemirror's _forceRerender from wiping content
+ // and avoids the TextSelection RangeError on empty docs.
+ if (collaborationFragment && collaborationFragment.length === 0) {
+ prosemirrorToYXmlFragment(editor.pm.doc, collaborationFragment)
+ }
+
+ editor.enableCollaboration({ plugins: collaborationPlugins })
+ collabEnabledRef.current = true
+ }
+ } else {
+ if (collabEnabledRef.current) {
+ editor.disableCollaboration()
+ collabEnabledRef.current = false
+ }
+ }
+ }, [editor, collaborationPlugins, collaborationFragment])
+
// Handle content changes
const handleChange = useCallback(() => {
if (!isInitializedRef.current || !editor || editor.isDestroyed) return
@@ -395,6 +488,8 @@ export function OpenBlockEditor({
onChange,
editable = true,
fullWidth = false,
+ collaborationPlugins,
+ collaborationFragment,
}: OpenBlockEditorProps) {
const [isReady, setIsReady] = useState(false)
const initialContentRef = useRef(undefined)
@@ -429,6 +524,8 @@ export function OpenBlockEditor({
onChange={onChange}
editable={editable}
fullWidth={fullWidth}
+ collaborationPlugins={collaborationPlugins}
+ collaborationFragment={collaborationFragment}
/>
)
}
diff --git a/src/hooks/use-collaboration.ts b/src/hooks/use-collaboration.ts
new file mode 100644
index 0000000..df539fa
--- /dev/null
+++ b/src/hooks/use-collaboration.ts
@@ -0,0 +1,173 @@
+import { useEffect, useRef, useState, useCallback } from 'react'
+import * as Y from 'yjs'
+import { WebsocketProvider } from 'y-websocket'
+import { ySyncPlugin, yCursorPlugin, yUndoPlugin } from 'y-prosemirror'
+import { useAuth } from '@/contexts/auth-context'
+
+// Random color for cursor
+const CURSOR_COLORS = [
+ '#FF6B6B', '#4ECDC4', '#45B7D1', '#96CEB4', '#FFEAA7',
+ '#DDA0DD', '#98D8C8', '#F7DC6F', '#BB8FCE', '#85C1E9',
+]
+
+function getRandomColor() {
+ return CURSOR_COLORS[Math.floor(Math.random() * CURSOR_COLORS.length)]
+}
+
+export interface CollaborationState {
+ /** Y.js plugins to pass to editor.enableCollaboration() */
+ plugins: ReturnType[] | null
+ /** The Y.js XML fragment used by ySyncPlugin */
+ fragment: Y.XmlFragment | null
+ /** Whether the websocket connection is established */
+ isConnected: boolean
+ /** Whether the initial sync from the server is complete */
+ isSynced: boolean
+ /** Number of connected users */
+ connectedUsers: number
+ /** List of connected users with their awareness info */
+ users: CollaborationUser[]
+}
+
+export interface CollaborationUser {
+ clientId: number
+ name: string
+ color: string
+}
+
+interface UseCollaborationOptions {
+ /** Unique room identifier, e.g. "document:docId" or "row:databaseId:rowId" */
+ roomId: string | undefined
+ /** WebSocket server URL */
+ wsUrl?: string
+ /** Whether collaboration is enabled */
+ enabled?: boolean
+}
+
+function buildCursor(user: { name?: string; color?: string }): HTMLElement {
+ const name = user.name || 'Anonymous'
+ const color = user.color || '#999'
+ const initial = name[0].toUpperCase()
+
+ const wrap = document.createElement('span')
+ wrap.className = 'y-collab-cursor'
+ wrap.style.setProperty('--collab-color', color)
+
+ const avatar = document.createElement('span')
+ avatar.className = 'y-collab-avatar'
+ avatar.textContent = initial
+ avatar.setAttribute('data-name', name)
+
+ wrap.appendChild(avatar)
+ return wrap
+}
+
+const DEFAULT_WS_URL = import.meta.env.VITE_COLLAB_WS_URL || (
+ import.meta.env.DEV ? 'ws://127.0.0.1:8080/ws/collab' : `ws://${window.location.host}/ws/collab`
+)
+
+export function useCollaboration({
+ roomId,
+ wsUrl = DEFAULT_WS_URL,
+ enabled = true,
+}: UseCollaborationOptions): CollaborationState {
+ const { user, token } = useAuth()
+ const [isConnected, setIsConnected] = useState(false)
+ const [isSynced, setIsSynced] = useState(false)
+ const [users, setUsers] = useState([])
+
+ const ydocRef = useRef(null)
+ const providerRef = useRef(null)
+ const pluginsRef = useRef[] | null>(null)
+ const fragmentRef = useRef(null)
+ const colorRef = useRef(getRandomColor())
+
+ const cleanup = useCallback(() => {
+ providerRef.current?.disconnect()
+ providerRef.current?.destroy()
+ ydocRef.current?.destroy()
+ providerRef.current = null
+ ydocRef.current = null
+ pluginsRef.current = null
+ fragmentRef.current = null
+ setIsConnected(false)
+ setIsSynced(false)
+ setUsers([])
+ }, [])
+
+ useEffect(() => {
+ if (!enabled || !roomId) {
+ cleanup()
+ return
+ }
+
+ // Create Y.js document
+ const ydoc = new Y.Doc()
+ ydocRef.current = ydoc
+
+ // Connect to WebSocket server with auth token
+ const provider = new WebsocketProvider(wsUrl, roomId, ydoc, {
+ params: token ? { token } : {},
+ })
+ providerRef.current = provider
+
+ // Set awareness (cursor info)
+ provider.awareness.setLocalStateField('user', {
+ name: user?.username || user?.email || 'Anonymous',
+ color: colorRef.current,
+ })
+
+ // Build y-prosemirror plugins
+ const fragment = ydoc.getXmlFragment('prosemirror')
+ fragmentRef.current = fragment
+ pluginsRef.current = [
+ ySyncPlugin(fragment),
+ yCursorPlugin(provider.awareness, { cursorBuilder: buildCursor }),
+ yUndoPlugin(),
+ ]
+
+ // Connection status
+ provider.on('status', ({ status }: { status: string }) => {
+ setIsConnected(status === 'connected')
+ })
+
+ // Sync status
+ provider.on('sync', (synced: boolean) => {
+ setIsSynced(synced)
+ })
+
+ // Awareness changes (connected users)
+ const updateUsers = () => {
+ const states = provider.awareness.getStates()
+ const collabUsers: CollaborationUser[] = []
+ states.forEach((state, clientId) => {
+ if (clientId === provider.awareness.clientID) return
+ if (state.user) {
+ collabUsers.push({
+ clientId,
+ name: state.user.name || 'Anonymous',
+ color: state.user.color || '#999',
+ })
+ }
+ })
+ setUsers(collabUsers)
+ }
+
+ provider.awareness.on('change', updateUsers)
+ updateUsers()
+
+ return () => {
+ provider.awareness.off('change', updateUsers)
+ cleanup()
+ }
+ }, [roomId, wsUrl, enabled, token, user?.username, user?.email, cleanup])
+
+ return {
+ plugins: isConnected ? pluginsRef.current : null,
+ fragment: isConnected ? fragmentRef.current : null,
+ isConnected,
+ isSynced,
+ connectedUsers: users.length + 1, // +1 for self
+ users,
+ }
+}
diff --git a/src/pages/database-document.tsx b/src/pages/database-document.tsx
index deb3ab7..2da3bd2 100644
--- a/src/pages/database-document.tsx
+++ b/src/pages/database-document.tsx
@@ -12,6 +12,7 @@ import {
useUpdateRow,
type PropertySchema,
} from '@/hooks/use-database'
+import { useCollaboration } from '@/hooks/use-collaboration'
// Content type for database document rows
interface RowContent {
@@ -34,6 +35,12 @@ export function DatabaseDocumentPage() {
const { data: row, isLoading: isLoadingRow } = useRow(databaseId, rowId)
const updateRow = useUpdateRow()
+ // Collaboration
+ const { plugins: collabPlugins, fragment: collabFragment } = useCollaboration({
+ roomId: databaseId && rowId ? `row:${databaseId}:${rowId}` : undefined,
+ enabled: true,
+ })
+
// Track initialization for editor - we need to track which rowId was initialized
// to handle the timing issue where the component remounts before effects run
const [initializedRowId, setInitializedRowId] = useState(null)
@@ -257,6 +264,8 @@ export function DatabaseDocumentPage() {
isFullWidth={isFullWidth}
onSettingsClick={() => setIsSettingsSidebarOpen(true)}
isInitialized={isInitialized}
+ collaborationPlugins={collabPlugins}
+ collaborationFragment={collabFragment}
/>
{/* Settings Sidebar */}
diff --git a/src/pages/document.tsx b/src/pages/document.tsx
index 6481c6f..d1f9a59 100644
--- a/src/pages/document.tsx
+++ b/src/pages/document.tsx
@@ -19,6 +19,7 @@ import { Loader2, X, RotateCcw } from 'lucide-react'
import type { IconValue } from '@/components/ui/icon-picker'
import { parseStoredIcon, serializeIcon } from '@/lib/utils'
import type { GetDocumentResponse, Favorite, Document as ApiDocument, DocumentConfig } from '@/api/generated/model'
+import { useCollaboration } from '@/hooks/use-collaboration'
// The API may return GetDocumentResponse with an additional `id` field depending on the endpoint
type DocumentResponse = GetDocumentResponse & { id?: string }
@@ -37,6 +38,13 @@ export function DocumentPage() {
const { mutate: addFavorite } = useAddFavorite()
const { mutate: removeFavorite } = useRemoveFavorite()
+ // Collaboration
+ const docIdForCollab = (rawDocument as DocumentResponse)?.id ?? (rawDocument as DocumentResponse)?.document
+ const { plugins: collabPlugins, fragment: collabFragment } = useCollaboration({
+ roomId: docIdForCollab ? `document:${docIdForCollab}` : undefined,
+ enabled: true,
+ })
+
// Flag to skip state reset when slug changes due to title edit (same document)
const slugChangedFromTitleEdit = useRef(false)
@@ -466,6 +474,8 @@ export function DocumentPage() {
saveError={saveError}
comparisonPanel={comparisonPanel}
isInitialized={!!initializedDocId && initializedSlug === slug}
+ collaborationPlugins={collabPlugins}
+ collaborationFragment={collabFragment}
/>
{/* Settings Sidebar */}
diff --git a/tsconfig.tsbuildinfo b/tsconfig.tsbuildinfo
index 9e7842f..c001a30 100644
--- a/tsconfig.tsbuildinfo
+++ b/tsconfig.tsbuildinfo
@@ -1 +1 @@
-{"root":["./src/app.tsx","./src/main.tsx","./src/vite-env.d.ts","./src/api/client.ts","./src/api/mutator.ts","./src/api/generated/actions/actions.ts","./src/api/generated/admin/admin.ts","./src/api/generated/api-keys/api-keys.ts","./src/api/generated/auth/auth.ts","./src/api/generated/database-permissions/database-permissions.ts","./src/api/generated/database-rows/database-rows.ts","./src/api/generated/database-views/database-views.ts","./src/api/generated/databases/databases.ts","./src/api/generated/document/document.ts","./src/api/generated/drawings/drawings.ts","./src/api/generated/health/health.ts","./src/api/generated/model/actionitem.ts","./src/api/generated/model/actionrunsparams.ts","./src/api/generated/model/actionstep.ts","./src/api/generated/model/actionstepconfig.ts","./src/api/generated/model/addfavoriterequest.ts","./src/api/generated/model/addfavoriteresponse.ts","./src/api/generated/model/addgroupmemberrequest.ts","./src/api/generated/model/addgroupmemberresponse.ts","./src/api/generated/model/adminaddspacegrouppermissionrequest.ts","./src/api/generated/model/adminaddspacegrouppermissionrequestrole.ts","./src/api/generated/model/adminaddspacegrouppermissionresponse.ts","./src/api/generated/model/adminaddspaceuserpermissionrequest.ts","./src/api/generated/model/adminaddspaceuserpermissionrequestrole.ts","./src/api/generated/model/adminaddspaceuserpermissionresponse.ts","./src/api/generated/model/admincreatespacerequest.ts","./src/api/generated/model/admincreatespacerequesttype.ts","./src/api/generated/model/admincreatespaceresponse.ts","./src/api/generated/model/admindeletespacerequest.ts","./src/api/generated/model/admindeletespaceresponse.ts","./src/api/generated/model/adminlistallapikeysparams.ts","./src/api/generated/model/adminlistallspacesparams.ts","./src/api/generated/model/adminlistgroupsparams.ts","./src/api/generated/model/adminlistspacepermissionsrequest.ts","./src/api/generated/model/adminlistspacepermissionsresponse.ts","./src/api/generated/model/adminlistusersparams.ts","./src/api/generated/model/adminremovespacegrouppermissionrequest.ts","./src/api/generated/model/adminremovespacegrouppermissionresponse.ts","./src/api/generated/model/adminremovespaceuserpermissionrequest.ts","./src/api/generated/model/adminremovespaceuserpermissionresponse.ts","./src/api/generated/model/adminupdatespacerequest.ts","./src/api/generated/model/adminupdatespacerequesttype.ts","./src/api/generated/model/adminupdatespaceresponse.ts","./src/api/generated/model/anyvalue.ts","./src/api/generated/model/apikeyitem.ts","./src/api/generated/model/arrayactionitem.ts","./src/api/generated/model/arrayactionstep.ts","./src/api/generated/model/arrayapikeyitem.ts","./src/api/generated/model/arrayblock.ts","./src/api/generated/model/arraycommentresponse.ts","./src/api/generated/model/arraydatabaseitem.ts","./src/api/generated/model/arraydatabasepermissionitem.ts","./src/api/generated/model/arraydeliveryitem.ts","./src/api/generated/model/arraydocument.ts","./src/api/generated/model/arraydocumentpermission.ts","./src/api/generated/model/arraydrawingitem.ts","./src/api/generated/model/arraydrawingpermission.ts","./src/api/generated/model/arrayeventinfo.ts","./src/api/generated/model/arrayfavorite.ts","./src/api/generated/model/arraygroupitem.ts","./src/api/generated/model/arrayinlinecontent.ts","./src/api/generated/model/arraymemberitem.ts","./src/api/generated/model/arraypropertyschema.ts","./src/api/generated/model/arrayreorderitem.ts","./src/api/generated/model/arrayrowitem.ts","./src/api/generated/model/arrayrunitem.ts","./src/api/generated/model/arrayscopeinfo.ts","./src/api/generated/model/arraysearchdatabaseresultitem.ts","./src/api/generated/model/arraysearchresultitem.ts","./src/api/generated/model/arraysortconfig.ts","./src/api/generated/model/arrayspace.ts","./src/api/generated/model/arrayspaceitem.ts","./src/api/generated/model/arrayspacepermission.ts","./src/api/generated/model/arrayspacepermissionitem.ts","./src/api/generated/model/arraystepinfo.ts","./src/api/generated/model/arraytrashdocument.ts","./src/api/generated/model/arraytriggerinfo.ts","./src/api/generated/model/arraytypeinfo.ts","./src/api/generated/model/arrayuserlistitem.ts","./src/api/generated/model/arrayversionitem.ts","./src/api/generated/model/arrayviewconfig.ts","./src/api/generated/model/arraywebhookitem.ts","./src/api/generated/model/availableeventsresponse.ts","./src/api/generated/model/availablescopesresponse.ts","./src/api/generated/model/availablestepsresponse.ts","./src/api/generated/model/availabletriggersresponse.ts","./src/api/generated/model/availabletypesresponse.ts","./src/api/generated/model/block.ts","./src/api/generated/model/blockprops.ts","./src/api/generated/model/bulkdeleterowsrequest.ts","./src/api/generated/model/changepasswordrequest.ts","./src/api/generated/model/changepasswordresponse.ts","./src/api/generated/model/commentresponse.ts","./src/api/generated/model/createactionrequest.ts","./src/api/generated/model/createactionrequesttriggerconfig.ts","./src/api/generated/model/createactionresponse.ts","./src/api/generated/model/createapikeyrequest.ts","./src/api/generated/model/createapikeyresponse.ts","./src/api/generated/model/createcommentrequestwithparams.ts","./src/api/generated/model/createcommentresponse.ts","./src/api/generated/model/createdatabaserequest.ts","./src/api/generated/model/createdatabaseresponse.ts","./src/api/generated/model/createdocumentrequest.ts","./src/api/generated/model/createdocumentresponse.ts","./src/api/generated/model/createdrawingrequest.ts","./src/api/generated/model/createdrawingrequestappstate.ts","./src/api/generated/model/createdrawingrequestfiles.ts","./src/api/generated/model/createdrawingresponse.ts","./src/api/generated/model/creategrouprequest.ts","./src/api/generated/model/creategrouprequestrole.ts","./src/api/generated/model/creategroupresponse.ts","./src/api/generated/model/createrowrequest.ts","./src/api/generated/model/createrowrequestcontent.ts","./src/api/generated/model/createrowrequestproperties.ts","./src/api/generated/model/createrowresponse.ts","./src/api/generated/model/createrowresponseproperties.ts","./src/api/generated/model/createspacerequest.ts","./src/api/generated/model/createspacerequesttype.ts","./src/api/generated/model/createspaceresponse.ts","./src/api/generated/model/createversionrequest.ts","./src/api/generated/model/createversionresponse.ts","./src/api/generated/model/createviewrequest.ts","./src/api/generated/model/createviewrequestfilter.ts","./src/api/generated/model/createviewrequesttype.ts","./src/api/generated/model/createviewresponse.ts","./src/api/generated/model/createviewresponsefilter.ts","./src/api/generated/model/createwebhookrequest.ts","./src/api/generated/model/createwebhookresponse.ts","./src/api/generated/model/databaseitem.ts","./src/api/generated/model/databaselistparams.ts","./src/api/generated/model/databasepermissiondeleteparams.ts","./src/api/generated/model/databasepermissionitem.ts","./src/api/generated/model/databaserowlistparams.ts","./src/api/generated/model/databasesearchparams.ts","./src/api/generated/model/deleteactionrequest.ts","./src/api/generated/model/deleteapikeyrequest.ts","./src/api/generated/model/deletecommentrequest.ts","./src/api/generated/model/deletedatabasepermissionrequest.ts","./src/api/generated/model/deletedatabasepermissionresponse.ts","./src/api/generated/model/deletedatabaserequest.ts","./src/api/generated/model/deletedocumentrequest.ts","./src/api/generated/model/deletedocumentresponse.ts","./src/api/generated/model/deletedocumentuserpermissionrequest.ts","./src/api/generated/model/deletedocumentuserpermissionresponse.ts","./src/api/generated/model/deletedrawingrequest.ts","./src/api/generated/model/deletedrawinguserpermissionrequest.ts","./src/api/generated/model/deletedrawinguserpermissionresponse.ts","./src/api/generated/model/deletegrouprequest.ts","./src/api/generated/model/deletegroupresponse.ts","./src/api/generated/model/deleterowrequest.ts","./src/api/generated/model/deletespacerequest.ts","./src/api/generated/model/deletespaceresponse.ts","./src/api/generated/model/deletespaceuserpermissionrequest.ts","./src/api/generated/model/deletespaceuserpermissionresponse.ts","./src/api/generated/model/deleteuserrequest.ts","./src/api/generated/model/deleteuserresponse.ts","./src/api/generated/model/deleteviewrequest.ts","./src/api/generated/model/deletewebhookrequest.ts","./src/api/generated/model/deliveryitem.ts","./src/api/generated/model/document.ts","./src/api/generated/model/documentconfig.ts","./src/api/generated/model/documentgetdocumentsfromspaceparams.ts","./src/api/generated/model/documentlistversionsparams.ts","./src/api/generated/model/documentmetadata.ts","./src/api/generated/model/documentpermission.ts","./src/api/generated/model/documentsearchparams.ts","./src/api/generated/model/drawingitem.ts","./src/api/generated/model/drawinglistparams.ts","./src/api/generated/model/drawingpermission.ts","./src/api/generated/model/emptyrequest.ts","./src/api/generated/model/errorresponse.ts","./src/api/generated/model/eventinfo.ts","./src/api/generated/model/favorite.ts","./src/api/generated/model/getactionrequest.ts","./src/api/generated/model/getactionresponse.ts","./src/api/generated/model/getactionresponsetriggerconfig.ts","./src/api/generated/model/getcommentsrequest.ts","./src/api/generated/model/getcommentsresponse.ts","./src/api/generated/model/getdatabaserequest.ts","./src/api/generated/model/getdatabaseresponse.ts","./src/api/generated/model/getdeliveriesrequest.ts","./src/api/generated/model/getdeliveriesresponse.ts","./src/api/generated/model/getdocumentrequest.ts","./src/api/generated/model/getdocumentresponse.ts","./src/api/generated/model/getdocumentresponsemetadata.ts","./src/api/generated/model/getdocumentsfromspacerequest.ts","./src/api/generated/model/getdocumentsfromspaceresponse.ts","./src/api/generated/model/getdrawingrequest.ts","./src/api/generated/model/getdrawingresponse.ts","./src/api/generated/model/getdrawingresponseappstate.ts","./src/api/generated/model/getdrawingresponsefiles.ts","./src/api/generated/model/getgroupmembersrequest.ts","./src/api/generated/model/getgroupmembersresponse.ts","./src/api/generated/model/getmyfavoritesresponse.ts","./src/api/generated/model/getmyspacesresponse.ts","./src/api/generated/model/getpublicdocumentrequest.ts","./src/api/generated/model/getrowrequest.ts","./src/api/generated/model/getrowresponse.ts","./src/api/generated/model/getrowresponsecontent.ts","./src/api/generated/model/getrowresponseproperties.ts","./src/api/generated/model/getrunsrequest.ts","./src/api/generated/model/getrunsresponse.ts","./src/api/generated/model/gettrashrequest.ts","./src/api/generated/model/gettrashresponse.ts","./src/api/generated/model/getversionrequest.ts","./src/api/generated/model/getversionresponse.ts","./src/api/generated/model/getwebhookrequest.ts","./src/api/generated/model/getwebhookresponse.ts","./src/api/generated/model/groupitem.ts","./src/api/generated/model/healthresponse.ts","./src/api/generated/model/index.ts","./src/api/generated/model/inlinecontent.ts","./src/api/generated/model/inlinecontentstyles.ts","./src/api/generated/model/inviteuserrequest.ts","./src/api/generated/model/inviteuserrequestrole.ts","./src/api/generated/model/inviteuserresponse.ts","./src/api/generated/model/listactionsresponse.ts","./src/api/generated/model/listallapikeysrequest.ts","./src/api/generated/model/listallapikeysresponse.ts","./src/api/generated/model/listallspacesrequest.ts","./src/api/generated/model/listallspacesresponse.ts","./src/api/generated/model/listapikeysresponse.ts","./src/api/generated/model/listdatabasepermissionsrequest.ts","./src/api/generated/model/listdatabasepermissionsresponse.ts","./src/api/generated/model/listdatabasesrequest.ts","./src/api/generated/model/listdatabasesresponse.ts","./src/api/generated/model/listdocumentpermissionsrequest.ts","./src/api/generated/model/listdocumentpermissionsresponse.ts","./src/api/generated/model/listdrawingpermissionsrequest.ts","./src/api/generated/model/listdrawingpermissionsresponse.ts","./src/api/generated/model/listdrawingsrequest.ts","./src/api/generated/model/listdrawingsresponse.ts","./src/api/generated/model/listgroupsrequest.ts","./src/api/generated/model/listgroupsresponse.ts","./src/api/generated/model/listrowsrequest.ts","./src/api/generated/model/listrowsresponse.ts","./src/api/generated/model/listspacepermissionsrequest.ts","./src/api/generated/model/listspacepermissionsresponse.ts","./src/api/generated/model/listusersrequest.ts","./src/api/generated/model/listusersresponse.ts","./src/api/generated/model/listversionsrequest.ts","./src/api/generated/model/listversionsresponse.ts","./src/api/generated/model/listwebhooksresponse.ts","./src/api/generated/model/loginrequest.ts","./src/api/generated/model/loginresponse.ts","./src/api/generated/model/logoutresponse.ts","./src/api/generated/model/memberitem.ts","./src/api/generated/model/messageresponse.ts","./src/api/generated/model/movedatabaserequest.ts","./src/api/generated/model/movedatabaseresponse.ts","./src/api/generated/model/movedocumentrequest.ts","./src/api/generated/model/movedocumentresponse.ts","./src/api/generated/model/movedrawingrequest.ts","./src/api/generated/model/movedrawingresponse.ts","./src/api/generated/model/profileresponse.ts","./src/api/generated/model/profileresponsepreferences.ts","./src/api/generated/model/propertyschema.ts","./src/api/generated/model/propertyschemaoptions.ts","./src/api/generated/model/registerrequest.ts","./src/api/generated/model/registerresponse.ts","./src/api/generated/model/removefavoriterequest.ts","./src/api/generated/model/removefavoriteresponse.ts","./src/api/generated/model/removegroupmemberrequest.ts","./src/api/generated/model/removegroupmemberresponse.ts","./src/api/generated/model/reorderdocumentsrequest.ts","./src/api/generated/model/reorderdocumentsresponse.ts","./src/api/generated/model/reorderitem.ts","./src/api/generated/model/resolvecommentrequestwithparams.ts","./src/api/generated/model/restoredocumentrequest.ts","./src/api/generated/model/restoredocumentresponse.ts","./src/api/generated/model/restoreversionrequest.ts","./src/api/generated/model/revokeapikeyrequest.ts","./src/api/generated/model/revokeapikeyresponse.ts","./src/api/generated/model/rowitem.ts","./src/api/generated/model/rowitemcontent.ts","./src/api/generated/model/rowitemproperties.ts","./src/api/generated/model/runitem.ts","./src/api/generated/model/scopeinfo.ts","./src/api/generated/model/searchdatabaseresultitem.ts","./src/api/generated/model/searchdatabasesrequest.ts","./src/api/generated/model/searchdatabasesresponse.ts","./src/api/generated/model/searchrequest.ts","./src/api/generated/model/searchresponse.ts","./src/api/generated/model/searchresultitem.ts","./src/api/generated/model/setpublicrequest.ts","./src/api/generated/model/setpublicresponse.ts","./src/api/generated/model/sortconfig.ts","./src/api/generated/model/space.ts","./src/api/generated/model/spaceitem.ts","./src/api/generated/model/spacepermission.ts","./src/api/generated/model/spacepermissionitem.ts","./src/api/generated/model/stepinfo.ts","./src/api/generated/model/time.ts","./src/api/generated/model/trashdocument.ts","./src/api/generated/model/triggerinfo.ts","./src/api/generated/model/typeinfo.ts","./src/api/generated/model/updateactionrequest.ts","./src/api/generated/model/updateactionrequesttriggerconfig.ts","./src/api/generated/model/updateapikeyrequest.ts","./src/api/generated/model/updatecommentrequestwithparams.ts","./src/api/generated/model/updatedatabaserequest.ts","./src/api/generated/model/updatedocumentrequest.ts","./src/api/generated/model/updatedocumentrequestmetadata.ts","./src/api/generated/model/updatedocumentresponse.ts","./src/api/generated/model/updatedocumentresponsemetadata.ts","./src/api/generated/model/updatedrawingrequest.ts","./src/api/generated/model/updatedrawingrequestappstate.ts","./src/api/generated/model/updatedrawingrequestfiles.ts","./src/api/generated/model/updatefavoritepositionrequest.ts","./src/api/generated/model/updatefavoritepositionresponse.ts","./src/api/generated/model/updategrouprequest.ts","./src/api/generated/model/updategrouprequestrole.ts","./src/api/generated/model/updategroupresponse.ts","./src/api/generated/model/updateprofilerequest.ts","./src/api/generated/model/updateprofilerequestpreferences.ts","./src/api/generated/model/updateprofileresponse.ts","./src/api/generated/model/updateprofileresponsepreferences.ts","./src/api/generated/model/updaterowrequest.ts","./src/api/generated/model/updaterowrequestcontent.ts","./src/api/generated/model/updaterowrequestproperties.ts","./src/api/generated/model/updatespaceorderrequest.ts","./src/api/generated/model/updatespaceorderresponse.ts","./src/api/generated/model/updatespacerequest.ts","./src/api/generated/model/updatespaceresponse.ts","./src/api/generated/model/updateuseractiverequest.ts","./src/api/generated/model/updateuseractiveresponse.ts","./src/api/generated/model/updateuserrolerequest.ts","./src/api/generated/model/updateuserrolerequestrole.ts","./src/api/generated/model/updateuserroleresponse.ts","./src/api/generated/model/updateviewrequest.ts","./src/api/generated/model/updateviewrequestfilter.ts","./src/api/generated/model/updatewebhookrequest.ts","./src/api/generated/model/upsertdatabasepermissionrequest.ts","./src/api/generated/model/upsertdatabasepermissionresponse.ts","./src/api/generated/model/upsertdocumentuserpermissionrequest.ts","./src/api/generated/model/upsertdocumentuserpermissionrequestrole.ts","./src/api/generated/model/upsertdocumentuserpermissionresponse.ts","./src/api/generated/model/upsertdrawinguserpermissionrequest.ts","./src/api/generated/model/upsertdrawinguserpermissionrequestrole.ts","./src/api/generated/model/upsertdrawinguserpermissionresponse.ts","./src/api/generated/model/upsertspaceuserpermissionrequest.ts","./src/api/generated/model/upsertspaceuserpermissionrequestrole.ts","./src/api/generated/model/upsertspaceuserpermissionresponse.ts","./src/api/generated/model/userinfo.ts","./src/api/generated/model/userlistitem.ts","./src/api/generated/model/userlistusersparams.ts","./src/api/generated/model/versionconfig.ts","./src/api/generated/model/versionitem.ts","./src/api/generated/model/viewconfig.ts","./src/api/generated/model/viewconfigfilter.ts","./src/api/generated/model/webhookdeliveriesparams.ts","./src/api/generated/model/webhookitem.ts","./src/api/generated/space/space.ts","./src/api/generated/user/user.ts","./src/api/generated/webhooks/webhooks.ts","./src/components/protected-route.tsx","./src/components/admin/apikeys-management.tsx","./src/components/admin/groups-management.tsx","./src/components/admin/spaces-management.tsx","./src/components/admin/sso-management.tsx","./src/components/admin/users-management.tsx","./src/components/database/databasetree.tsx","./src/components/database/index.ts","./src/components/database/common/add-property-modal.tsx","./src/components/database/common/add-property-popover.tsx","./src/components/database/common/conditional-format-editor.tsx","./src/components/database/common/create-database-modal.tsx","./src/components/database/common/database-header.tsx","./src/components/database/common/database-settings-sidebar.tsx","./src/components/database/common/database-toolbar.tsx","./src/components/database/common/date-format-editor.tsx","./src/components/database/common/field-editor.tsx","./src/components/database/common/filter-builder.tsx","./src/components/database/common/number-format-editor.tsx","./src/components/database/common/property-cell.tsx","./src/components/database/common/sort-builder.tsx","./src/components/database/common/view-tabs.tsx","./src/components/database/document/document-board-view.tsx","./src/components/database/document/document-edit-sidebar.tsx","./src/components/database/document/document-gallery-view.tsx","./src/components/database/document/document-list-view.tsx","./src/components/database/document/document-row-settings-sidebar.tsx","./src/components/database/document/document-table-view.tsx","./src/components/database/document/index.tsx","./src/components/document/documenttree.tsx","./src/components/document/document-editor.tsx","./src/components/document/document-settings-sidebar.tsx","./src/components/document/icon-emoji-selector.tsx","./src/components/document/move-document-modal.tsx","./src/components/document/version-history-sidebar.tsx","./src/components/drawing/drawingtree.tsx","./src/components/drawing/create-drawing-modal.tsx","./src/components/drawing/drawing-editor.tsx","./src/components/drawing/drawing-settings-sidebar.tsx","./src/components/editor/database-block.tsx","./src/components/editor/openblock-editor.tsx","./src/components/layout/main-layout.tsx","./src/components/layout/mobile-header.tsx","./src/components/layout/sidebar.tsx","./src/components/permissions/permission-manager.tsx","./src/components/settings/actions-settings.tsx","./src/components/settings/api-keys-settings.tsx","./src/components/settings/profile-settings.tsx","./src/components/settings/webhooks-settings.tsx","./src/components/shared/content-header.tsx","./src/components/shared/content-settings-sidebar.tsx","./src/components/sidebar/app-switcher-header.tsx","./src/components/sidebar/app-switcher-menu.tsx","./src/components/sidebar/command-palette.tsx","./src/components/sidebar/quick-actions.tsx","./src/components/sidebar/sidebar-item.tsx","./src/components/sidebar/space-content-docs.tsx","./src/components/sidebar/space-content-projects.tsx","./src/components/sidebar/space-item.tsx","./src/components/sidebar/spaces-list.tsx","./src/components/sidebar/user-menu.tsx","./src/components/spaces/create-space-modal.tsx","./src/components/spaces/edit-space-modal.tsx","./src/components/spaces/space-icon.tsx","./src/components/spaces/space-switcher.tsx","./src/components/ui/alert-dialog.tsx","./src/components/ui/avatar.tsx","./src/components/ui/badge.tsx","./src/components/ui/button.tsx","./src/components/ui/calendar.tsx","./src/components/ui/card.tsx","./src/components/ui/checkbox.tsx","./src/components/ui/collapsible.tsx","./src/components/ui/dialog.tsx","./src/components/ui/dropdown-menu.tsx","./src/components/ui/emoji-picker.tsx","./src/components/ui/icon-picker.tsx","./src/components/ui/input.tsx","./src/components/ui/kbd.tsx","./src/components/ui/label.tsx","./src/components/ui/popover.tsx","./src/components/ui/select.tsx","./src/components/ui/separator.tsx","./src/components/ui/sheet.tsx","./src/components/ui/switch.tsx","./src/components/ui/tabs.tsx","./src/components/ui/textarea.tsx","./src/components/ui/toaster.tsx","./src/components/ui/tooltip.tsx","./src/contexts/active-app-context.tsx","./src/contexts/auth-context.tsx","./src/contexts/command-palette-context.tsx","./src/contexts/document-expansion-context.tsx","./src/contexts/sidebar-ui-context.tsx","./src/contexts/sidebar-visibility-context.tsx","./src/contexts/space-context.tsx","./src/contexts/theme-provider.tsx","./src/contexts/ui-state-context.tsx","./src/hooks/use-actions.ts","./src/hooks/use-admin.ts","./src/hooks/use-api-keys.ts","./src/hooks/use-auto-select-space.ts","./src/hooks/use-create-content.ts","./src/hooks/use-database-permissions.ts","./src/hooks/use-database.ts","./src/hooks/use-document-permissions.ts","./src/hooks/use-documents.ts","./src/hooks/use-drawing-permissions.ts","./src/hooks/use-drawings.ts","./src/hooks/use-edge-detection.ts","./src/hooks/use-favorites.ts","./src/hooks/use-keyboard-shortcuts.ts","./src/hooks/use-media-query.ts","./src/hooks/use-reorder-documents.ts","./src/hooks/use-resizable.ts","./src/hooks/use-search.ts","./src/hooks/use-space-order.ts","./src/hooks/use-space-permissions.ts","./src/hooks/use-spaces.ts","./src/hooks/use-users.ts","./src/hooks/use-versions.ts","./src/hooks/use-webhooks.ts","./src/hooks/ui/index.ts","./src/hooks/ui/useeditablefield.ts","./src/hooks/ui/usesidebar.ts","./src/i18n/languagecontext.tsx","./src/i18n/index.ts","./src/lib/utils.ts","./src/lib/database/columntypes.ts","./src/lib/database/conditionalstyles.ts","./src/lib/database/formatters.ts","./src/lib/database/formula.ts","./src/lib/database/index.ts","./src/pages/admin.tsx","./src/pages/database-document.tsx","./src/pages/database.tsx","./src/pages/document.tsx","./src/pages/drawing.tsx","./src/pages/home.tsx","./src/pages/login.tsx","./src/pages/register.tsx","./src/pages/settings.tsx","./src/types/apps.ts"],"version":"5.6.3"}
\ No newline at end of file
+{"root":["./src/app.tsx","./src/main.tsx","./src/vite-env.d.ts","./src/api/client.ts","./src/api/mutator.ts","./src/api/generated/actions/actions.ts","./src/api/generated/admin/admin.ts","./src/api/generated/api-keys/api-keys.ts","./src/api/generated/auth/auth.ts","./src/api/generated/database-permissions/database-permissions.ts","./src/api/generated/database-rows/database-rows.ts","./src/api/generated/database-views/database-views.ts","./src/api/generated/databases/databases.ts","./src/api/generated/document/document.ts","./src/api/generated/drawings/drawings.ts","./src/api/generated/health/health.ts","./src/api/generated/model/actionitem.ts","./src/api/generated/model/actionrunsparams.ts","./src/api/generated/model/actionstep.ts","./src/api/generated/model/actionstepconfig.ts","./src/api/generated/model/addfavoriterequest.ts","./src/api/generated/model/addfavoriteresponse.ts","./src/api/generated/model/addgroupmemberrequest.ts","./src/api/generated/model/addgroupmemberresponse.ts","./src/api/generated/model/adminaddspacegrouppermissionrequest.ts","./src/api/generated/model/adminaddspacegrouppermissionrequestrole.ts","./src/api/generated/model/adminaddspacegrouppermissionresponse.ts","./src/api/generated/model/adminaddspaceuserpermissionrequest.ts","./src/api/generated/model/adminaddspaceuserpermissionrequestrole.ts","./src/api/generated/model/adminaddspaceuserpermissionresponse.ts","./src/api/generated/model/admincreatespacerequest.ts","./src/api/generated/model/admincreatespacerequesttype.ts","./src/api/generated/model/admincreatespaceresponse.ts","./src/api/generated/model/admindeletespacerequest.ts","./src/api/generated/model/admindeletespaceresponse.ts","./src/api/generated/model/adminlistallapikeysparams.ts","./src/api/generated/model/adminlistallspacesparams.ts","./src/api/generated/model/adminlistgroupsparams.ts","./src/api/generated/model/adminlistspacepermissionsrequest.ts","./src/api/generated/model/adminlistspacepermissionsresponse.ts","./src/api/generated/model/adminlistusersparams.ts","./src/api/generated/model/adminremovespacegrouppermissionrequest.ts","./src/api/generated/model/adminremovespacegrouppermissionresponse.ts","./src/api/generated/model/adminremovespaceuserpermissionrequest.ts","./src/api/generated/model/adminremovespaceuserpermissionresponse.ts","./src/api/generated/model/adminupdatespacerequest.ts","./src/api/generated/model/adminupdatespacerequesttype.ts","./src/api/generated/model/adminupdatespaceresponse.ts","./src/api/generated/model/anyvalue.ts","./src/api/generated/model/apikeyitem.ts","./src/api/generated/model/arrayactionitem.ts","./src/api/generated/model/arrayactionstep.ts","./src/api/generated/model/arrayapikeyitem.ts","./src/api/generated/model/arrayblock.ts","./src/api/generated/model/arraycommentresponse.ts","./src/api/generated/model/arraydatabaseitem.ts","./src/api/generated/model/arraydatabasepermissionitem.ts","./src/api/generated/model/arraydeliveryitem.ts","./src/api/generated/model/arraydocument.ts","./src/api/generated/model/arraydocumentpermission.ts","./src/api/generated/model/arraydrawingitem.ts","./src/api/generated/model/arraydrawingpermission.ts","./src/api/generated/model/arrayeventinfo.ts","./src/api/generated/model/arrayfavorite.ts","./src/api/generated/model/arraygroupitem.ts","./src/api/generated/model/arrayinlinecontent.ts","./src/api/generated/model/arraymemberitem.ts","./src/api/generated/model/arraypropertyschema.ts","./src/api/generated/model/arrayreorderitem.ts","./src/api/generated/model/arrayrowitem.ts","./src/api/generated/model/arrayrunitem.ts","./src/api/generated/model/arrayscopeinfo.ts","./src/api/generated/model/arraysearchdatabaseresultitem.ts","./src/api/generated/model/arraysearchresultitem.ts","./src/api/generated/model/arraysortconfig.ts","./src/api/generated/model/arrayspace.ts","./src/api/generated/model/arrayspaceitem.ts","./src/api/generated/model/arrayspacepermission.ts","./src/api/generated/model/arrayspacepermissionitem.ts","./src/api/generated/model/arraystepinfo.ts","./src/api/generated/model/arraytrashdocument.ts","./src/api/generated/model/arraytriggerinfo.ts","./src/api/generated/model/arraytypeinfo.ts","./src/api/generated/model/arrayuserlistitem.ts","./src/api/generated/model/arrayversionitem.ts","./src/api/generated/model/arrayviewconfig.ts","./src/api/generated/model/arraywebhookitem.ts","./src/api/generated/model/availableeventsresponse.ts","./src/api/generated/model/availablescopesresponse.ts","./src/api/generated/model/availablestepsresponse.ts","./src/api/generated/model/availabletriggersresponse.ts","./src/api/generated/model/availabletypesresponse.ts","./src/api/generated/model/block.ts","./src/api/generated/model/blockprops.ts","./src/api/generated/model/bulkdeleterowsrequest.ts","./src/api/generated/model/changepasswordrequest.ts","./src/api/generated/model/changepasswordresponse.ts","./src/api/generated/model/commentresponse.ts","./src/api/generated/model/createactionrequest.ts","./src/api/generated/model/createactionrequesttriggerconfig.ts","./src/api/generated/model/createactionresponse.ts","./src/api/generated/model/createapikeyrequest.ts","./src/api/generated/model/createapikeyresponse.ts","./src/api/generated/model/createcommentrequestwithparams.ts","./src/api/generated/model/createcommentresponse.ts","./src/api/generated/model/createdatabaserequest.ts","./src/api/generated/model/createdatabaseresponse.ts","./src/api/generated/model/createdocumentrequest.ts","./src/api/generated/model/createdocumentresponse.ts","./src/api/generated/model/createdrawingrequest.ts","./src/api/generated/model/createdrawingrequestappstate.ts","./src/api/generated/model/createdrawingrequestfiles.ts","./src/api/generated/model/createdrawingresponse.ts","./src/api/generated/model/creategrouprequest.ts","./src/api/generated/model/creategrouprequestrole.ts","./src/api/generated/model/creategroupresponse.ts","./src/api/generated/model/createrowrequest.ts","./src/api/generated/model/createrowrequestcontent.ts","./src/api/generated/model/createrowrequestproperties.ts","./src/api/generated/model/createrowresponse.ts","./src/api/generated/model/createrowresponseproperties.ts","./src/api/generated/model/createspacerequest.ts","./src/api/generated/model/createspacerequesttype.ts","./src/api/generated/model/createspaceresponse.ts","./src/api/generated/model/createversionrequest.ts","./src/api/generated/model/createversionresponse.ts","./src/api/generated/model/createviewrequest.ts","./src/api/generated/model/createviewrequestfilter.ts","./src/api/generated/model/createviewrequesttype.ts","./src/api/generated/model/createviewresponse.ts","./src/api/generated/model/createviewresponsefilter.ts","./src/api/generated/model/createwebhookrequest.ts","./src/api/generated/model/createwebhookresponse.ts","./src/api/generated/model/databaseitem.ts","./src/api/generated/model/databaselistparams.ts","./src/api/generated/model/databasepermissiondeleteparams.ts","./src/api/generated/model/databasepermissionitem.ts","./src/api/generated/model/databaserowlistparams.ts","./src/api/generated/model/databasesearchparams.ts","./src/api/generated/model/deleteactionrequest.ts","./src/api/generated/model/deleteapikeyrequest.ts","./src/api/generated/model/deletecommentrequest.ts","./src/api/generated/model/deletedatabasepermissionrequest.ts","./src/api/generated/model/deletedatabasepermissionresponse.ts","./src/api/generated/model/deletedatabaserequest.ts","./src/api/generated/model/deletedocumentrequest.ts","./src/api/generated/model/deletedocumentresponse.ts","./src/api/generated/model/deletedocumentuserpermissionrequest.ts","./src/api/generated/model/deletedocumentuserpermissionresponse.ts","./src/api/generated/model/deletedrawingrequest.ts","./src/api/generated/model/deletedrawinguserpermissionrequest.ts","./src/api/generated/model/deletedrawinguserpermissionresponse.ts","./src/api/generated/model/deletegrouprequest.ts","./src/api/generated/model/deletegroupresponse.ts","./src/api/generated/model/deleterowrequest.ts","./src/api/generated/model/deletespacerequest.ts","./src/api/generated/model/deletespaceresponse.ts","./src/api/generated/model/deletespaceuserpermissionrequest.ts","./src/api/generated/model/deletespaceuserpermissionresponse.ts","./src/api/generated/model/deleteuserrequest.ts","./src/api/generated/model/deleteuserresponse.ts","./src/api/generated/model/deleteviewrequest.ts","./src/api/generated/model/deletewebhookrequest.ts","./src/api/generated/model/deliveryitem.ts","./src/api/generated/model/document.ts","./src/api/generated/model/documentconfig.ts","./src/api/generated/model/documentgetdocumentsfromspaceparams.ts","./src/api/generated/model/documentlistversionsparams.ts","./src/api/generated/model/documentmetadata.ts","./src/api/generated/model/documentpermission.ts","./src/api/generated/model/documentsearchparams.ts","./src/api/generated/model/drawingitem.ts","./src/api/generated/model/drawinglistparams.ts","./src/api/generated/model/drawingpermission.ts","./src/api/generated/model/emptyrequest.ts","./src/api/generated/model/errorresponse.ts","./src/api/generated/model/eventinfo.ts","./src/api/generated/model/favorite.ts","./src/api/generated/model/getactionrequest.ts","./src/api/generated/model/getactionresponse.ts","./src/api/generated/model/getactionresponsetriggerconfig.ts","./src/api/generated/model/getcommentsrequest.ts","./src/api/generated/model/getcommentsresponse.ts","./src/api/generated/model/getdatabaserequest.ts","./src/api/generated/model/getdatabaseresponse.ts","./src/api/generated/model/getdeliveriesrequest.ts","./src/api/generated/model/getdeliveriesresponse.ts","./src/api/generated/model/getdocumentrequest.ts","./src/api/generated/model/getdocumentresponse.ts","./src/api/generated/model/getdocumentresponsemetadata.ts","./src/api/generated/model/getdocumentsfromspacerequest.ts","./src/api/generated/model/getdocumentsfromspaceresponse.ts","./src/api/generated/model/getdrawingrequest.ts","./src/api/generated/model/getdrawingresponse.ts","./src/api/generated/model/getdrawingresponseappstate.ts","./src/api/generated/model/getdrawingresponsefiles.ts","./src/api/generated/model/getgroupmembersrequest.ts","./src/api/generated/model/getgroupmembersresponse.ts","./src/api/generated/model/getmyfavoritesresponse.ts","./src/api/generated/model/getmyspacesresponse.ts","./src/api/generated/model/getpublicdocumentrequest.ts","./src/api/generated/model/getrowrequest.ts","./src/api/generated/model/getrowresponse.ts","./src/api/generated/model/getrowresponsecontent.ts","./src/api/generated/model/getrowresponseproperties.ts","./src/api/generated/model/getrunsrequest.ts","./src/api/generated/model/getrunsresponse.ts","./src/api/generated/model/gettrashrequest.ts","./src/api/generated/model/gettrashresponse.ts","./src/api/generated/model/getversionrequest.ts","./src/api/generated/model/getversionresponse.ts","./src/api/generated/model/getwebhookrequest.ts","./src/api/generated/model/getwebhookresponse.ts","./src/api/generated/model/groupitem.ts","./src/api/generated/model/healthresponse.ts","./src/api/generated/model/index.ts","./src/api/generated/model/inlinecontent.ts","./src/api/generated/model/inlinecontentstyles.ts","./src/api/generated/model/inviteuserrequest.ts","./src/api/generated/model/inviteuserrequestrole.ts","./src/api/generated/model/inviteuserresponse.ts","./src/api/generated/model/listactionsresponse.ts","./src/api/generated/model/listallapikeysrequest.ts","./src/api/generated/model/listallapikeysresponse.ts","./src/api/generated/model/listallspacesrequest.ts","./src/api/generated/model/listallspacesresponse.ts","./src/api/generated/model/listapikeysresponse.ts","./src/api/generated/model/listdatabasepermissionsrequest.ts","./src/api/generated/model/listdatabasepermissionsresponse.ts","./src/api/generated/model/listdatabasesrequest.ts","./src/api/generated/model/listdatabasesresponse.ts","./src/api/generated/model/listdocumentpermissionsrequest.ts","./src/api/generated/model/listdocumentpermissionsresponse.ts","./src/api/generated/model/listdrawingpermissionsrequest.ts","./src/api/generated/model/listdrawingpermissionsresponse.ts","./src/api/generated/model/listdrawingsrequest.ts","./src/api/generated/model/listdrawingsresponse.ts","./src/api/generated/model/listgroupsrequest.ts","./src/api/generated/model/listgroupsresponse.ts","./src/api/generated/model/listrowsrequest.ts","./src/api/generated/model/listrowsresponse.ts","./src/api/generated/model/listspacepermissionsrequest.ts","./src/api/generated/model/listspacepermissionsresponse.ts","./src/api/generated/model/listusersrequest.ts","./src/api/generated/model/listusersresponse.ts","./src/api/generated/model/listversionsrequest.ts","./src/api/generated/model/listversionsresponse.ts","./src/api/generated/model/listwebhooksresponse.ts","./src/api/generated/model/loginrequest.ts","./src/api/generated/model/loginresponse.ts","./src/api/generated/model/logoutresponse.ts","./src/api/generated/model/memberitem.ts","./src/api/generated/model/messageresponse.ts","./src/api/generated/model/movedatabaserequest.ts","./src/api/generated/model/movedatabaseresponse.ts","./src/api/generated/model/movedocumentrequest.ts","./src/api/generated/model/movedocumentresponse.ts","./src/api/generated/model/movedrawingrequest.ts","./src/api/generated/model/movedrawingresponse.ts","./src/api/generated/model/profileresponse.ts","./src/api/generated/model/profileresponsepreferences.ts","./src/api/generated/model/propertyschema.ts","./src/api/generated/model/propertyschemaoptions.ts","./src/api/generated/model/registerrequest.ts","./src/api/generated/model/registerresponse.ts","./src/api/generated/model/removefavoriterequest.ts","./src/api/generated/model/removefavoriteresponse.ts","./src/api/generated/model/removegroupmemberrequest.ts","./src/api/generated/model/removegroupmemberresponse.ts","./src/api/generated/model/reorderdocumentsrequest.ts","./src/api/generated/model/reorderdocumentsresponse.ts","./src/api/generated/model/reorderitem.ts","./src/api/generated/model/resolvecommentrequestwithparams.ts","./src/api/generated/model/restoredocumentrequest.ts","./src/api/generated/model/restoredocumentresponse.ts","./src/api/generated/model/restoreversionrequest.ts","./src/api/generated/model/revokeapikeyrequest.ts","./src/api/generated/model/revokeapikeyresponse.ts","./src/api/generated/model/rowitem.ts","./src/api/generated/model/rowitemcontent.ts","./src/api/generated/model/rowitemproperties.ts","./src/api/generated/model/runitem.ts","./src/api/generated/model/scopeinfo.ts","./src/api/generated/model/searchdatabaseresultitem.ts","./src/api/generated/model/searchdatabasesrequest.ts","./src/api/generated/model/searchdatabasesresponse.ts","./src/api/generated/model/searchrequest.ts","./src/api/generated/model/searchresponse.ts","./src/api/generated/model/searchresultitem.ts","./src/api/generated/model/setpublicrequest.ts","./src/api/generated/model/setpublicresponse.ts","./src/api/generated/model/sortconfig.ts","./src/api/generated/model/space.ts","./src/api/generated/model/spaceitem.ts","./src/api/generated/model/spacepermission.ts","./src/api/generated/model/spacepermissionitem.ts","./src/api/generated/model/stepinfo.ts","./src/api/generated/model/time.ts","./src/api/generated/model/trashdocument.ts","./src/api/generated/model/triggerinfo.ts","./src/api/generated/model/typeinfo.ts","./src/api/generated/model/updateactionrequest.ts","./src/api/generated/model/updateactionrequesttriggerconfig.ts","./src/api/generated/model/updateapikeyrequest.ts","./src/api/generated/model/updatecommentrequestwithparams.ts","./src/api/generated/model/updatedatabaserequest.ts","./src/api/generated/model/updatedocumentrequest.ts","./src/api/generated/model/updatedocumentrequestmetadata.ts","./src/api/generated/model/updatedocumentresponse.ts","./src/api/generated/model/updatedocumentresponsemetadata.ts","./src/api/generated/model/updatedrawingrequest.ts","./src/api/generated/model/updatedrawingrequestappstate.ts","./src/api/generated/model/updatedrawingrequestfiles.ts","./src/api/generated/model/updatefavoritepositionrequest.ts","./src/api/generated/model/updatefavoritepositionresponse.ts","./src/api/generated/model/updategrouprequest.ts","./src/api/generated/model/updategrouprequestrole.ts","./src/api/generated/model/updategroupresponse.ts","./src/api/generated/model/updateprofilerequest.ts","./src/api/generated/model/updateprofilerequestpreferences.ts","./src/api/generated/model/updateprofileresponse.ts","./src/api/generated/model/updateprofileresponsepreferences.ts","./src/api/generated/model/updaterowrequest.ts","./src/api/generated/model/updaterowrequestcontent.ts","./src/api/generated/model/updaterowrequestproperties.ts","./src/api/generated/model/updatespaceorderrequest.ts","./src/api/generated/model/updatespaceorderresponse.ts","./src/api/generated/model/updatespacerequest.ts","./src/api/generated/model/updatespaceresponse.ts","./src/api/generated/model/updateuseractiverequest.ts","./src/api/generated/model/updateuseractiveresponse.ts","./src/api/generated/model/updateuserrolerequest.ts","./src/api/generated/model/updateuserrolerequestrole.ts","./src/api/generated/model/updateuserroleresponse.ts","./src/api/generated/model/updateviewrequest.ts","./src/api/generated/model/updateviewrequestfilter.ts","./src/api/generated/model/updatewebhookrequest.ts","./src/api/generated/model/upsertdatabasepermissionrequest.ts","./src/api/generated/model/upsertdatabasepermissionresponse.ts","./src/api/generated/model/upsertdocumentuserpermissionrequest.ts","./src/api/generated/model/upsertdocumentuserpermissionrequestrole.ts","./src/api/generated/model/upsertdocumentuserpermissionresponse.ts","./src/api/generated/model/upsertdrawinguserpermissionrequest.ts","./src/api/generated/model/upsertdrawinguserpermissionrequestrole.ts","./src/api/generated/model/upsertdrawinguserpermissionresponse.ts","./src/api/generated/model/upsertspaceuserpermissionrequest.ts","./src/api/generated/model/upsertspaceuserpermissionrequestrole.ts","./src/api/generated/model/upsertspaceuserpermissionresponse.ts","./src/api/generated/model/userinfo.ts","./src/api/generated/model/userlistitem.ts","./src/api/generated/model/userlistusersparams.ts","./src/api/generated/model/versionconfig.ts","./src/api/generated/model/versionitem.ts","./src/api/generated/model/viewconfig.ts","./src/api/generated/model/viewconfigfilter.ts","./src/api/generated/model/webhookdeliveriesparams.ts","./src/api/generated/model/webhookitem.ts","./src/api/generated/space/space.ts","./src/api/generated/user/user.ts","./src/api/generated/webhooks/webhooks.ts","./src/components/protected-route.tsx","./src/components/admin/apikeys-management.tsx","./src/components/admin/groups-management.tsx","./src/components/admin/spaces-management.tsx","./src/components/admin/sso-management.tsx","./src/components/admin/users-management.tsx","./src/components/database/databasetree.tsx","./src/components/database/index.ts","./src/components/database/common/add-property-modal.tsx","./src/components/database/common/add-property-popover.tsx","./src/components/database/common/conditional-format-editor.tsx","./src/components/database/common/create-database-modal.tsx","./src/components/database/common/database-header.tsx","./src/components/database/common/database-settings-sidebar.tsx","./src/components/database/common/database-toolbar.tsx","./src/components/database/common/date-format-editor.tsx","./src/components/database/common/field-editor.tsx","./src/components/database/common/filter-builder.tsx","./src/components/database/common/number-format-editor.tsx","./src/components/database/common/property-cell.tsx","./src/components/database/common/sort-builder.tsx","./src/components/database/common/view-tabs.tsx","./src/components/database/document/document-board-view.tsx","./src/components/database/document/document-edit-sidebar.tsx","./src/components/database/document/document-gallery-view.tsx","./src/components/database/document/document-list-view.tsx","./src/components/database/document/document-row-settings-sidebar.tsx","./src/components/database/document/document-table-view.tsx","./src/components/database/document/index.tsx","./src/components/document/documenttree.tsx","./src/components/document/document-editor.tsx","./src/components/document/document-settings-sidebar.tsx","./src/components/document/icon-emoji-selector.tsx","./src/components/document/move-document-modal.tsx","./src/components/document/version-history-sidebar.tsx","./src/components/drawing/drawingtree.tsx","./src/components/drawing/create-drawing-modal.tsx","./src/components/drawing/drawing-editor.tsx","./src/components/drawing/drawing-settings-sidebar.tsx","./src/components/editor/database-block.tsx","./src/components/editor/openblock-editor.tsx","./src/components/layout/main-layout.tsx","./src/components/layout/mobile-header.tsx","./src/components/layout/sidebar.tsx","./src/components/permissions/permission-manager.tsx","./src/components/settings/actions-settings.tsx","./src/components/settings/api-keys-settings.tsx","./src/components/settings/profile-settings.tsx","./src/components/settings/webhooks-settings.tsx","./src/components/shared/content-header.tsx","./src/components/shared/content-settings-sidebar.tsx","./src/components/sidebar/app-switcher-header.tsx","./src/components/sidebar/app-switcher-menu.tsx","./src/components/sidebar/command-palette.tsx","./src/components/sidebar/quick-actions.tsx","./src/components/sidebar/sidebar-item.tsx","./src/components/sidebar/space-content-docs.tsx","./src/components/sidebar/space-content-projects.tsx","./src/components/sidebar/space-item.tsx","./src/components/sidebar/spaces-list.tsx","./src/components/sidebar/user-menu.tsx","./src/components/spaces/create-space-modal.tsx","./src/components/spaces/edit-space-modal.tsx","./src/components/spaces/space-icon.tsx","./src/components/spaces/space-switcher.tsx","./src/components/ui/alert-dialog.tsx","./src/components/ui/avatar.tsx","./src/components/ui/badge.tsx","./src/components/ui/button.tsx","./src/components/ui/calendar.tsx","./src/components/ui/card.tsx","./src/components/ui/checkbox.tsx","./src/components/ui/collapsible.tsx","./src/components/ui/dialog.tsx","./src/components/ui/dropdown-menu.tsx","./src/components/ui/emoji-picker.tsx","./src/components/ui/icon-picker.tsx","./src/components/ui/input.tsx","./src/components/ui/kbd.tsx","./src/components/ui/label.tsx","./src/components/ui/popover.tsx","./src/components/ui/select.tsx","./src/components/ui/separator.tsx","./src/components/ui/sheet.tsx","./src/components/ui/switch.tsx","./src/components/ui/tabs.tsx","./src/components/ui/textarea.tsx","./src/components/ui/toaster.tsx","./src/components/ui/tooltip.tsx","./src/contexts/active-app-context.tsx","./src/contexts/auth-context.tsx","./src/contexts/command-palette-context.tsx","./src/contexts/document-expansion-context.tsx","./src/contexts/sidebar-ui-context.tsx","./src/contexts/sidebar-visibility-context.tsx","./src/contexts/space-context.tsx","./src/contexts/theme-provider.tsx","./src/contexts/ui-state-context.tsx","./src/hooks/use-actions.ts","./src/hooks/use-admin.ts","./src/hooks/use-api-keys.ts","./src/hooks/use-auto-select-space.ts","./src/hooks/use-collaboration.ts","./src/hooks/use-create-content.ts","./src/hooks/use-database-permissions.ts","./src/hooks/use-database.ts","./src/hooks/use-document-permissions.ts","./src/hooks/use-documents.ts","./src/hooks/use-drawing-permissions.ts","./src/hooks/use-drawings.ts","./src/hooks/use-edge-detection.ts","./src/hooks/use-favorites.ts","./src/hooks/use-keyboard-shortcuts.ts","./src/hooks/use-media-query.ts","./src/hooks/use-reorder-documents.ts","./src/hooks/use-resizable.ts","./src/hooks/use-search.ts","./src/hooks/use-space-order.ts","./src/hooks/use-space-permissions.ts","./src/hooks/use-spaces.ts","./src/hooks/use-users.ts","./src/hooks/use-versions.ts","./src/hooks/use-webhooks.ts","./src/hooks/ui/index.ts","./src/hooks/ui/useeditablefield.ts","./src/hooks/ui/usesidebar.ts","./src/i18n/languagecontext.tsx","./src/i18n/index.ts","./src/lib/query-client.ts","./src/lib/utils.ts","./src/lib/database/columntypes.ts","./src/lib/database/conditionalstyles.ts","./src/lib/database/formatters.ts","./src/lib/database/formula.ts","./src/lib/database/index.ts","./src/pages/admin.tsx","./src/pages/database-document.tsx","./src/pages/database.tsx","./src/pages/document.tsx","./src/pages/drawing.tsx","./src/pages/home.tsx","./src/pages/login.tsx","./src/pages/register.tsx","./src/pages/settings.tsx","./src/types/apps.ts"],"version":"5.6.3"}
\ No newline at end of file