@dxos/plugin-space 0.8.4-main.2e9d522 → 0.8.4-main.3c1ae3b
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/lib/browser/{CollectionMain-D2B75XBS.mjs → CollectionArticle-WTHWY4YS.mjs} +10 -10
- package/dist/lib/browser/CollectionArticle-WTHWY4YS.mjs.map +7 -0
- package/dist/lib/browser/ObjectCardStack-TE7AWPMH.mjs +144 -0
- package/dist/lib/browser/ObjectCardStack-TE7AWPMH.mjs.map +7 -0
- package/dist/lib/browser/ObjectDetails-666IBRHE.mjs +144 -0
- package/dist/lib/browser/ObjectDetails-666IBRHE.mjs.map +7 -0
- package/dist/lib/browser/RecordArticle-2PFEBPXY.mjs +116 -0
- package/dist/lib/browser/RecordArticle-2PFEBPXY.mjs.map +7 -0
- package/dist/lib/browser/app-graph-builder-USKWFIDK.mjs +551 -0
- package/dist/lib/browser/app-graph-builder-USKWFIDK.mjs.map +7 -0
- package/dist/lib/browser/{app-graph-serializer-H6AW7KGS.mjs → app-graph-serializer-SXIQ425K.mjs} +19 -19
- package/dist/lib/browser/app-graph-serializer-SXIQ425K.mjs.map +7 -0
- package/dist/lib/browser/{chunk-VLBRSGJ2.mjs → chunk-5CSSKOWR.mjs} +42 -16
- package/dist/lib/browser/chunk-5CSSKOWR.mjs.map +7 -0
- package/dist/lib/browser/chunk-C6DAPIFF.mjs +20 -0
- package/dist/lib/browser/chunk-C6DAPIFF.mjs.map +7 -0
- package/dist/lib/browser/chunk-E4BEMEZ3.mjs +399 -0
- package/dist/lib/browser/chunk-E4BEMEZ3.mjs.map +7 -0
- package/dist/lib/browser/{chunk-XUYKJUU7.mjs → chunk-IJCMB5B5.mjs} +269 -145
- package/dist/lib/browser/chunk-IJCMB5B5.mjs.map +7 -0
- package/dist/lib/browser/{chunk-QACNNDOT.mjs → chunk-POFUXISV.mjs} +69 -62
- package/dist/lib/browser/chunk-POFUXISV.mjs.map +7 -0
- package/dist/lib/browser/chunk-VZBIIYFM.mjs +16 -0
- package/dist/lib/browser/chunk-VZBIIYFM.mjs.map +7 -0
- package/dist/lib/browser/chunk-WJXU4GKV.mjs +19 -0
- package/dist/lib/browser/chunk-WJXU4GKV.mjs.map +7 -0
- package/dist/lib/browser/{chunk-V7MJSSBQ.mjs → chunk-XKQCDLXX.mjs} +734 -615
- package/dist/lib/browser/chunk-XKQCDLXX.mjs.map +7 -0
- package/dist/lib/browser/{identity-created-23XJJV2N.mjs → identity-created-NAXTPQXE.mjs} +6 -6
- package/dist/lib/browser/identity-created-NAXTPQXE.mjs.map +7 -0
- package/dist/lib/browser/index.mjs +92 -139
- package/dist/lib/browser/index.mjs.map +3 -3
- package/dist/lib/browser/{intent-resolver-TIXVDYN7.mjs → intent-resolver-QEIM7NQT.mjs} +118 -109
- package/dist/lib/browser/intent-resolver-QEIM7NQT.mjs.map +7 -0
- package/dist/lib/browser/meta.json +1 -1
- package/dist/lib/browser/react-root-T6ZETLD2.mjs +30 -0
- package/dist/lib/browser/react-root-T6ZETLD2.mjs.map +7 -0
- package/dist/lib/browser/{react-surface-TPNLWJJH.mjs → react-surface-MLN5BZ2G.mjs} +120 -120
- package/dist/lib/browser/react-surface-MLN5BZ2G.mjs.map +7 -0
- package/dist/lib/browser/repair-CNLE35NF.mjs +44 -0
- package/dist/lib/browser/repair-CNLE35NF.mjs.map +7 -0
- package/dist/lib/browser/{settings-4IMP5RYT.mjs → settings-EGTCHS7U.mjs} +5 -5
- package/dist/lib/browser/{settings-4IMP5RYT.mjs.map → settings-EGTCHS7U.mjs.map} +1 -1
- package/dist/lib/browser/{spaces-ready-TOPG6IV4.mjs → spaces-ready-YS4BBZXW.mjs} +29 -20
- package/dist/lib/browser/spaces-ready-YS4BBZXW.mjs.map +7 -0
- package/dist/lib/browser/{state-QYZAB45H.mjs → state-C7N6EDDZ.mjs} +7 -7
- package/dist/lib/browser/state-C7N6EDDZ.mjs.map +7 -0
- package/dist/lib/browser/types/index.mjs +10 -4
- package/dist/lib/node-esm/{CollectionMain-ZJIFCWKZ.mjs → CollectionArticle-KHXYT3SH.mjs} +10 -10
- package/dist/lib/node-esm/CollectionArticle-KHXYT3SH.mjs.map +7 -0
- package/dist/lib/node-esm/ObjectCardStack-AAKMAQ6T.mjs +145 -0
- package/dist/lib/node-esm/ObjectCardStack-AAKMAQ6T.mjs.map +7 -0
- package/dist/lib/node-esm/ObjectDetails-TZ5YKXGN.mjs +145 -0
- package/dist/lib/node-esm/ObjectDetails-TZ5YKXGN.mjs.map +7 -0
- package/dist/lib/node-esm/RecordArticle-SSJ7PULS.mjs +117 -0
- package/dist/lib/node-esm/RecordArticle-SSJ7PULS.mjs.map +7 -0
- package/dist/lib/node-esm/app-graph-builder-QRQ5EQLB.mjs +552 -0
- package/dist/lib/node-esm/app-graph-builder-QRQ5EQLB.mjs.map +7 -0
- package/dist/lib/node-esm/{app-graph-serializer-2ICUGQQT.mjs → app-graph-serializer-P2X4W7LI.mjs} +19 -19
- package/dist/lib/node-esm/app-graph-serializer-P2X4W7LI.mjs.map +7 -0
- package/dist/lib/node-esm/{chunk-4AOMYKDE.mjs → chunk-3D4NGZPW.mjs} +269 -145
- package/dist/lib/node-esm/chunk-3D4NGZPW.mjs.map +7 -0
- package/dist/lib/node-esm/{chunk-P442DOQ3.mjs → chunk-AX3UGL5D.mjs} +69 -62
- package/dist/lib/node-esm/chunk-AX3UGL5D.mjs.map +7 -0
- package/dist/lib/node-esm/chunk-BDEFTL6K.mjs +18 -0
- package/dist/lib/node-esm/chunk-BDEFTL6K.mjs.map +7 -0
- package/dist/lib/node-esm/chunk-H4JILUJK.mjs +20 -0
- package/dist/lib/node-esm/chunk-H4JILUJK.mjs.map +7 -0
- package/dist/lib/node-esm/chunk-QQQE2ZCX.mjs +400 -0
- package/dist/lib/node-esm/chunk-QQQE2ZCX.mjs.map +7 -0
- package/dist/lib/node-esm/{chunk-SSLBYZEY.mjs → chunk-UMZ7G6G4.mjs} +41 -16
- package/dist/lib/node-esm/chunk-UMZ7G6G4.mjs.map +7 -0
- package/dist/lib/node-esm/chunk-WWGV5FJM.mjs +21 -0
- package/dist/lib/node-esm/chunk-WWGV5FJM.mjs.map +7 -0
- package/dist/lib/node-esm/{chunk-6X5DLJM5.mjs → chunk-XD532BVR.mjs} +734 -615
- package/dist/lib/node-esm/chunk-XD532BVR.mjs.map +7 -0
- package/dist/lib/node-esm/{identity-created-IJQO6GCR.mjs → identity-created-OXLKCJE3.mjs} +6 -6
- package/dist/lib/node-esm/identity-created-OXLKCJE3.mjs.map +7 -0
- package/dist/lib/node-esm/index.mjs +92 -139
- package/dist/lib/node-esm/index.mjs.map +3 -3
- package/dist/lib/node-esm/{intent-resolver-MHGHRGDT.mjs → intent-resolver-ZWCBVABN.mjs} +118 -109
- package/dist/lib/node-esm/intent-resolver-ZWCBVABN.mjs.map +7 -0
- package/dist/lib/node-esm/meta.json +1 -1
- package/dist/lib/node-esm/{react-root-KW3TGJGY.mjs → react-root-SKB4UJ4K.mjs} +13 -12
- package/dist/lib/node-esm/react-root-SKB4UJ4K.mjs.map +7 -0
- package/dist/lib/node-esm/{react-surface-UUIUUD6P.mjs → react-surface-BVZGNSBB.mjs} +120 -120
- package/dist/lib/node-esm/react-surface-BVZGNSBB.mjs.map +7 -0
- package/dist/lib/node-esm/repair-EHZS6MFY.mjs +45 -0
- package/dist/lib/node-esm/repair-EHZS6MFY.mjs.map +7 -0
- package/dist/lib/node-esm/{settings-SAOBPND3.mjs → settings-N3F6JCIR.mjs} +5 -5
- package/dist/lib/node-esm/{settings-SAOBPND3.mjs.map → settings-N3F6JCIR.mjs.map} +1 -1
- package/dist/lib/node-esm/{spaces-ready-HIUKNDZK.mjs → spaces-ready-U2K5P4LB.mjs} +29 -20
- package/dist/lib/node-esm/spaces-ready-U2K5P4LB.mjs.map +7 -0
- package/dist/lib/node-esm/{state-ZVEHQ4BJ.mjs → state-45TXZQJ6.mjs} +7 -7
- package/dist/lib/node-esm/state-45TXZQJ6.mjs.map +7 -0
- package/dist/lib/node-esm/types/index.mjs +10 -4
- package/dist/types/src/SpacePlugin.d.ts +1 -1
- package/dist/types/src/SpacePlugin.d.ts.map +1 -1
- package/dist/types/src/capabilities/app-graph-builder.d.ts +1 -1
- package/dist/types/src/capabilities/app-graph-builder.d.ts.map +1 -1
- package/dist/types/src/capabilities/app-graph-serializer.d.ts +1 -1
- package/dist/types/src/capabilities/capabilities.d.ts +14 -8
- package/dist/types/src/capabilities/capabilities.d.ts.map +1 -1
- package/dist/types/src/capabilities/identity-created.d.ts +1 -1
- package/dist/types/src/capabilities/identity-created.d.ts.map +1 -1
- package/dist/types/src/capabilities/index.d.ts +11 -12
- package/dist/types/src/capabilities/index.d.ts.map +1 -1
- package/dist/types/src/capabilities/intent-resolver.d.ts +1 -1
- package/dist/types/src/capabilities/intent-resolver.d.ts.map +1 -1
- package/dist/types/src/capabilities/react-root.d.ts +2 -2
- package/dist/types/src/capabilities/react-root.d.ts.map +1 -1
- package/dist/types/src/capabilities/react-surface.d.ts +1 -1
- package/dist/types/src/capabilities/react-surface.d.ts.map +1 -1
- package/dist/types/src/capabilities/repair.d.ts +4 -0
- package/dist/types/src/capabilities/repair.d.ts.map +1 -0
- package/dist/types/src/capabilities/settings.d.ts +1 -1
- package/dist/types/src/capabilities/spaces-ready.d.ts +1 -1
- package/dist/types/src/capabilities/spaces-ready.d.ts.map +1 -1
- package/dist/types/src/capabilities/state.d.ts +1 -1
- package/dist/types/src/capabilities/state.d.ts.map +1 -1
- package/dist/types/src/components/AwaitingObject.d.ts.map +1 -1
- package/dist/types/src/components/CollectionArticle.d.ts +6 -0
- package/dist/types/src/components/CollectionArticle.d.ts.map +1 -0
- package/dist/types/src/components/CollectionSection.d.ts +3 -4
- package/dist/types/src/components/CollectionSection.d.ts.map +1 -1
- package/dist/types/src/components/CreateDialog/CreateObjectDialog.d.ts +3 -3
- package/dist/types/src/components/CreateDialog/CreateObjectDialog.d.ts.map +1 -1
- package/dist/types/src/components/CreateDialog/CreateObjectDialog.stories.d.ts +1588 -4
- package/dist/types/src/components/CreateDialog/CreateObjectDialog.stories.d.ts.map +1 -1
- package/dist/types/src/components/CreateDialog/CreateObjectPanel.d.ts +18 -9
- package/dist/types/src/components/CreateDialog/CreateObjectPanel.d.ts.map +1 -1
- package/dist/types/src/components/CreateDialog/CreateSpaceDialog.d.ts +1 -1
- package/dist/types/src/components/CreateDialog/CreateSpaceDialog.d.ts.map +1 -1
- package/dist/types/src/components/{JoinDialog.d.ts → JoinDialog/JoinDialog.d.ts} +1 -1
- package/dist/types/src/components/JoinDialog/JoinDialog.d.ts.map +1 -0
- package/dist/types/src/components/JoinDialog/index.d.ts +2 -0
- package/dist/types/src/components/JoinDialog/index.d.ts.map +1 -0
- package/dist/types/src/components/{MembersContainer.d.ts → MembersContainer/MembersContainer.d.ts} +3 -2
- package/dist/types/src/components/MembersContainer/MembersContainer.d.ts.map +1 -0
- package/dist/types/src/components/MembersContainer/MembersContainer.stories.d.ts +1591 -0
- package/dist/types/src/components/MembersContainer/MembersContainer.stories.d.ts.map +1 -0
- package/dist/types/src/components/MembersContainer/index.d.ts +2 -0
- package/dist/types/src/components/MembersContainer/index.d.ts.map +1 -0
- package/dist/types/src/components/ObjectCardStack/ObjectCardStack.d.ts +8 -0
- package/dist/types/src/components/ObjectCardStack/ObjectCardStack.d.ts.map +1 -0
- package/dist/types/src/components/ObjectCardStack/ObjectForm.d.ts +9 -0
- package/dist/types/src/components/ObjectCardStack/ObjectForm.d.ts.map +1 -0
- package/dist/types/src/components/ObjectCardStack/index.d.ts +3 -0
- package/dist/types/src/components/ObjectCardStack/index.d.ts.map +1 -0
- package/dist/types/src/components/{ObjectSettings → ObjectDetails}/BaseObjectSettings.d.ts +2 -2
- package/dist/types/src/components/ObjectDetails/BaseObjectSettings.d.ts.map +1 -0
- package/dist/types/src/components/ObjectDetails/BaseObjectSettings.stories.d.ts +1424 -0
- package/dist/types/src/components/ObjectDetails/BaseObjectSettings.stories.d.ts.map +1 -0
- package/dist/types/src/components/ObjectDetails/ForeignKeys.d.ts +8 -0
- package/dist/types/src/components/ObjectDetails/ForeignKeys.d.ts.map +1 -0
- package/dist/types/src/components/ObjectDetails/ObjectDetails.d.ts +8 -0
- package/dist/types/src/components/ObjectDetails/ObjectDetails.d.ts.map +1 -0
- package/dist/types/src/components/ObjectDetails/index.d.ts +3 -0
- package/dist/types/src/components/ObjectDetails/index.d.ts.map +1 -0
- package/dist/types/src/components/ObjectRenamePopover/ObjectRenamePopover.d.ts +7 -0
- package/dist/types/src/components/ObjectRenamePopover/ObjectRenamePopover.d.ts.map +1 -0
- package/dist/types/src/components/ObjectRenamePopover/index.d.ts +2 -0
- package/dist/types/src/components/ObjectRenamePopover/index.d.ts.map +1 -0
- package/dist/types/src/components/RecordArticle.d.ts +5 -0
- package/dist/types/src/components/RecordArticle.d.ts.map +1 -0
- package/dist/types/src/components/RecordArticle.stories.d.ts +1591 -0
- package/dist/types/src/components/RecordArticle.stories.d.ts.map +1 -0
- package/dist/types/src/components/SchemaContainer.d.ts +2 -2
- package/dist/types/src/components/SchemaContainer.d.ts.map +1 -1
- package/dist/types/src/components/SpacePluginSettings.d.ts.map +1 -1
- package/dist/types/src/components/{SpacePresence.d.ts → SpacePresence/SpacePresence.d.ts} +6 -5
- package/dist/types/src/components/SpacePresence/SpacePresence.d.ts.map +1 -0
- package/dist/types/src/components/SpacePresence/SpacePresence.stories.d.ts +1421 -0
- package/dist/types/src/components/SpacePresence/SpacePresence.stories.d.ts.map +1 -0
- package/dist/types/src/components/SpacePresence/index.d.ts +2 -0
- package/dist/types/src/components/SpacePresence/index.d.ts.map +1 -0
- package/dist/types/src/components/SpaceRenamePopover/SpaceRenamePopover.d.ts +7 -0
- package/dist/types/src/components/SpaceRenamePopover/SpaceRenamePopover.d.ts.map +1 -0
- package/dist/types/src/components/SpaceRenamePopover/index.d.ts +2 -0
- package/dist/types/src/components/SpaceRenamePopover/index.d.ts.map +1 -0
- package/dist/types/src/components/SpaceSettings/SpaceSettingsContainer.d.ts +1 -1
- package/dist/types/src/components/SpaceSettings/SpaceSettingsContainer.d.ts.map +1 -1
- package/dist/types/src/components/SpaceSettings/SpaceSettingsContainer.stories.d.ts +1421 -4
- package/dist/types/src/components/SpaceSettings/SpaceSettingsContainer.stories.d.ts.map +1 -1
- package/dist/types/src/components/SyncStatus/SyncStatus.d.ts.map +1 -1
- package/dist/types/src/components/SyncStatus/SyncStatus.stories.d.ts +1422 -5
- package/dist/types/src/components/SyncStatus/SyncStatus.stories.d.ts.map +1 -1
- package/dist/types/src/components/ViewEditor.d.ts +3 -4
- package/dist/types/src/components/ViewEditor.d.ts.map +1 -1
- package/dist/types/src/components/index.d.ts +10 -12
- package/dist/types/src/components/index.d.ts.map +1 -1
- package/dist/types/src/events.d.ts.map +1 -1
- package/dist/types/src/helpers/index.d.ts +2 -0
- package/dist/types/src/helpers/index.d.ts.map +1 -0
- package/dist/types/src/helpers/query.d.ts +7 -0
- package/dist/types/src/helpers/query.d.ts.map +1 -0
- package/dist/types/src/helpers/query.test.d.ts +2 -0
- package/dist/types/src/helpers/query.test.d.ts.map +1 -0
- package/dist/types/src/hooks/index.d.ts +1 -0
- package/dist/types/src/hooks/index.d.ts.map +1 -1
- package/dist/types/src/hooks/useActiveSpace.d.ts.map +1 -1
- package/dist/types/src/hooks/useInputSurfaceLookup.d.ts +2 -8
- package/dist/types/src/hooks/useInputSurfaceLookup.d.ts.map +1 -1
- package/dist/types/src/hooks/usePath.d.ts +1 -1
- package/dist/types/src/hooks/usePath.d.ts.map +1 -1
- package/dist/types/src/hooks/useTypeOptions.d.ts +10 -0
- package/dist/types/src/hooks/useTypeOptions.d.ts.map +1 -0
- package/dist/types/src/index.d.ts +1 -0
- package/dist/types/src/index.d.ts.map +1 -1
- package/dist/types/src/meta.d.ts +0 -1
- package/dist/types/src/meta.d.ts.map +1 -1
- package/dist/types/src/translations.d.ts +1261 -67
- package/dist/types/src/translations.d.ts.map +1 -1
- package/dist/types/src/types/form.d.ts +22 -0
- package/dist/types/src/types/form.d.ts.map +1 -0
- package/dist/types/src/types/index.d.ts +1 -0
- package/dist/types/src/types/index.d.ts.map +1 -1
- package/dist/types/src/types/types.d.ts +96 -157
- package/dist/types/src/types/types.d.ts.map +1 -1
- package/dist/types/src/util.d.ts +25 -36
- package/dist/types/src/util.d.ts.map +1 -1
- package/dist/types/tsconfig.tsbuildinfo +1 -1
- package/package.json +70 -59
- package/src/SpacePlugin.ts +182 -222
- package/src/capabilities/app-graph-builder.ts +271 -246
- package/src/capabilities/app-graph-serializer.ts +12 -12
- package/src/capabilities/capabilities.ts +28 -17
- package/src/capabilities/identity-created.ts +3 -3
- package/src/capabilities/index.ts +1 -2
- package/src/capabilities/intent-resolver.ts +92 -81
- package/src/capabilities/react-root.tsx +6 -4
- package/src/capabilities/react-surface.tsx +127 -155
- package/src/capabilities/repair.ts +57 -0
- package/src/capabilities/spaces-ready.ts +38 -17
- package/src/capabilities/state.ts +5 -4
- package/src/components/AwaitingObject.tsx +12 -14
- package/src/components/{CollectionMain.tsx → CollectionArticle.tsx} +7 -6
- package/src/components/CollectionSection.tsx +8 -6
- package/src/components/CreateDialog/CreateObjectDialog.stories.tsx +17 -16
- package/src/components/CreateDialog/CreateObjectDialog.tsx +74 -46
- package/src/components/CreateDialog/CreateObjectPanel.tsx +65 -43
- package/src/components/CreateDialog/CreateSpaceDialog.tsx +45 -22
- package/src/components/{JoinDialog.tsx → JoinDialog/JoinDialog.tsx} +26 -10
- package/src/components/JoinDialog/index.ts +5 -0
- package/src/components/MembersContainer/MembersContainer.stories.tsx +56 -0
- package/src/components/{MembersContainer.tsx → MembersContainer/MembersContainer.tsx} +22 -21
- package/src/components/MembersContainer/index.ts +5 -0
- package/src/components/MenuFooter.tsx +2 -2
- package/src/components/ObjectCardStack/ObjectCardStack.tsx +64 -0
- package/src/components/ObjectCardStack/ObjectForm.tsx +90 -0
- package/src/components/ObjectCardStack/index.ts +7 -0
- package/src/components/ObjectDetails/BaseObjectSettings.stories.tsx +63 -0
- package/src/components/ObjectDetails/BaseObjectSettings.tsx +118 -0
- package/src/components/{ObjectSettings → ObjectDetails}/ForeignKeys.tsx +8 -8
- package/src/components/ObjectDetails/ObjectDetails.tsx +35 -0
- package/src/components/ObjectDetails/index.ts +7 -0
- package/src/components/{PopoverRenameObject.tsx → ObjectRenamePopover/ObjectRenamePopover.tsx} +10 -16
- package/src/components/ObjectRenamePopover/index.ts +5 -0
- package/src/components/RecordArticle.stories.tsx +115 -0
- package/src/components/RecordArticle.tsx +114 -0
- package/src/components/SchemaContainer.tsx +26 -29
- package/src/components/SpacePluginSettings.tsx +16 -11
- package/src/components/{SpacePresence.stories.tsx → SpacePresence/SpacePresence.stories.tsx} +24 -23
- package/src/components/{SpacePresence.tsx → SpacePresence/SpacePresence.tsx} +22 -17
- package/src/components/SpacePresence/index.ts +5 -0
- package/src/components/{PopoverRenameSpace.tsx → SpaceRenamePopover/SpaceRenamePopover.tsx} +7 -6
- package/src/components/SpaceRenamePopover/index.ts +5 -0
- package/src/components/SpaceSettings/SpaceSettingsContainer.stories.tsx +17 -9
- package/src/components/SpaceSettings/SpaceSettingsContainer.tsx +190 -155
- package/src/components/SyncStatus/InlineSyncStatus.tsx +8 -8
- package/src/components/SyncStatus/SyncStatus.stories.tsx +9 -9
- package/src/components/SyncStatus/SyncStatus.tsx +109 -12
- package/src/components/ViewEditor.tsx +56 -23
- package/src/components/index.ts +7 -7
- package/src/events.ts +7 -7
- package/src/helpers/index.ts +5 -0
- package/src/helpers/query.test.ts +24 -0
- package/src/helpers/query.ts +152 -0
- package/src/hooks/index.ts +1 -0
- package/src/hooks/useActiveSpace.ts +3 -2
- package/src/hooks/useInputSurfaceLookup.tsx +9 -13
- package/src/hooks/usePath.ts +1 -1
- package/src/hooks/useTypeOptions.ts +25 -0
- package/src/index.ts +1 -0
- package/src/meta.ts +6 -3
- package/src/translations.ts +68 -58
- package/src/types/form.ts +69 -0
- package/src/types/index.ts +1 -0
- package/src/types/types.ts +51 -52
- package/src/util.tsx +269 -147
- package/dist/lib/browser/CollectionMain-D2B75XBS.mjs.map +0 -7
- package/dist/lib/browser/ObjectDetailsPanel-YPTDQKMG.mjs +0 -88
- package/dist/lib/browser/ObjectDetailsPanel-YPTDQKMG.mjs.map +0 -7
- package/dist/lib/browser/app-graph-builder-7CZZJS3S.mjs +0 -479
- package/dist/lib/browser/app-graph-builder-7CZZJS3S.mjs.map +0 -7
- package/dist/lib/browser/app-graph-serializer-H6AW7KGS.mjs.map +0 -7
- package/dist/lib/browser/chunk-CEFHNVU7.mjs +0 -20
- package/dist/lib/browser/chunk-CEFHNVU7.mjs.map +0 -7
- package/dist/lib/browser/chunk-FBCGT5YY.mjs +0 -13
- package/dist/lib/browser/chunk-FBCGT5YY.mjs.map +0 -7
- package/dist/lib/browser/chunk-JS3MMC42.mjs +0 -19
- package/dist/lib/browser/chunk-JS3MMC42.mjs.map +0 -7
- package/dist/lib/browser/chunk-QACNNDOT.mjs.map +0 -7
- package/dist/lib/browser/chunk-SGTQ52SU.mjs +0 -338
- package/dist/lib/browser/chunk-SGTQ52SU.mjs.map +0 -7
- package/dist/lib/browser/chunk-V7MJSSBQ.mjs.map +0 -7
- package/dist/lib/browser/chunk-VLBRSGJ2.mjs.map +0 -7
- package/dist/lib/browser/chunk-XUYKJUU7.mjs.map +0 -7
- package/dist/lib/browser/identity-created-23XJJV2N.mjs.map +0 -7
- package/dist/lib/browser/intent-resolver-TIXVDYN7.mjs.map +0 -7
- package/dist/lib/browser/react-root-N2J7TDRX.mjs +0 -29
- package/dist/lib/browser/react-root-N2J7TDRX.mjs.map +0 -7
- package/dist/lib/browser/react-surface-TPNLWJJH.mjs.map +0 -7
- package/dist/lib/browser/schema-defs-Z6FC4AHC.mjs +0 -26
- package/dist/lib/browser/schema-defs-Z6FC4AHC.mjs.map +0 -7
- package/dist/lib/browser/schema-tools-BNP4JTD7.mjs +0 -124
- package/dist/lib/browser/schema-tools-BNP4JTD7.mjs.map +0 -7
- package/dist/lib/browser/spaces-ready-TOPG6IV4.mjs.map +0 -7
- package/dist/lib/browser/state-QYZAB45H.mjs.map +0 -7
- package/dist/lib/node-esm/CollectionMain-ZJIFCWKZ.mjs.map +0 -7
- package/dist/lib/node-esm/ObjectDetailsPanel-QKZEDSZK.mjs +0 -89
- package/dist/lib/node-esm/ObjectDetailsPanel-QKZEDSZK.mjs.map +0 -7
- package/dist/lib/node-esm/app-graph-builder-KGIGWC72.mjs +0 -480
- package/dist/lib/node-esm/app-graph-builder-KGIGWC72.mjs.map +0 -7
- package/dist/lib/node-esm/app-graph-serializer-2ICUGQQT.mjs.map +0 -7
- package/dist/lib/node-esm/chunk-4AOMYKDE.mjs.map +0 -7
- package/dist/lib/node-esm/chunk-5HHYE264.mjs +0 -20
- package/dist/lib/node-esm/chunk-5HHYE264.mjs.map +0 -7
- package/dist/lib/node-esm/chunk-5T3ZH23B.mjs +0 -21
- package/dist/lib/node-esm/chunk-5T3ZH23B.mjs.map +0 -7
- package/dist/lib/node-esm/chunk-6X5DLJM5.mjs.map +0 -7
- package/dist/lib/node-esm/chunk-HWNG4MEU.mjs +0 -15
- package/dist/lib/node-esm/chunk-HWNG4MEU.mjs.map +0 -7
- package/dist/lib/node-esm/chunk-JH6F4C3I.mjs +0 -339
- package/dist/lib/node-esm/chunk-JH6F4C3I.mjs.map +0 -7
- package/dist/lib/node-esm/chunk-P442DOQ3.mjs.map +0 -7
- package/dist/lib/node-esm/chunk-SSLBYZEY.mjs.map +0 -7
- package/dist/lib/node-esm/identity-created-IJQO6GCR.mjs.map +0 -7
- package/dist/lib/node-esm/intent-resolver-MHGHRGDT.mjs.map +0 -7
- package/dist/lib/node-esm/react-root-KW3TGJGY.mjs.map +0 -7
- package/dist/lib/node-esm/react-surface-UUIUUD6P.mjs.map +0 -7
- package/dist/lib/node-esm/schema-defs-WHJM7UZE.mjs +0 -27
- package/dist/lib/node-esm/schema-defs-WHJM7UZE.mjs.map +0 -7
- package/dist/lib/node-esm/schema-tools-KWW5PTML.mjs +0 -126
- package/dist/lib/node-esm/schema-tools-KWW5PTML.mjs.map +0 -7
- package/dist/lib/node-esm/spaces-ready-HIUKNDZK.mjs.map +0 -7
- package/dist/lib/node-esm/state-ZVEHQ4BJ.mjs.map +0 -7
- package/dist/types/src/capabilities/schema-defs.d.ts +0 -4
- package/dist/types/src/capabilities/schema-defs.d.ts.map +0 -1
- package/dist/types/src/capabilities/schema-tool.test.d.ts +0 -2
- package/dist/types/src/capabilities/schema-tool.test.d.ts.map +0 -1
- package/dist/types/src/capabilities/schema-tools.d.ts +0 -13
- package/dist/types/src/capabilities/schema-tools.d.ts.map +0 -1
- package/dist/types/src/components/CollectionMain.d.ts +0 -7
- package/dist/types/src/components/CollectionMain.d.ts.map +0 -1
- package/dist/types/src/components/JoinDialog.d.ts.map +0 -1
- package/dist/types/src/components/MembersContainer.d.ts.map +0 -1
- package/dist/types/src/components/MembersContainer.stories.d.ts +0 -8
- package/dist/types/src/components/MembersContainer.stories.d.ts.map +0 -1
- package/dist/types/src/components/ObjectDetailsPanel.d.ts +0 -9
- package/dist/types/src/components/ObjectDetailsPanel.d.ts.map +0 -1
- package/dist/types/src/components/ObjectSettings/AdvancedObjectSettings.d.ts +0 -7
- package/dist/types/src/components/ObjectSettings/AdvancedObjectSettings.d.ts.map +0 -1
- package/dist/types/src/components/ObjectSettings/BaseObjectSettings.d.ts.map +0 -1
- package/dist/types/src/components/ObjectSettings/ForeignKeys.d.ts +0 -8
- package/dist/types/src/components/ObjectSettings/ForeignKeys.d.ts.map +0 -1
- package/dist/types/src/components/ObjectSettings/ObjectSettingsContainer.d.ts +0 -8
- package/dist/types/src/components/ObjectSettings/ObjectSettingsContainer.d.ts.map +0 -1
- package/dist/types/src/components/ObjectSettings/index.d.ts +0 -2
- package/dist/types/src/components/ObjectSettings/index.d.ts.map +0 -1
- package/dist/types/src/components/PersistenceStatus.d.ts +0 -6
- package/dist/types/src/components/PersistenceStatus.d.ts.map +0 -1
- package/dist/types/src/components/PopoverRenameObject.d.ts +0 -7
- package/dist/types/src/components/PopoverRenameObject.d.ts.map +0 -1
- package/dist/types/src/components/PopoverRenameSpace.d.ts +0 -7
- package/dist/types/src/components/PopoverRenameSpace.d.ts.map +0 -1
- package/dist/types/src/components/SpacePresence.d.ts.map +0 -1
- package/dist/types/src/components/SpacePresence.stories.d.ts +0 -9
- package/dist/types/src/components/SpacePresence.stories.d.ts.map +0 -1
- package/src/capabilities/schema-defs.ts +0 -30
- package/src/capabilities/schema-tool.test.ts +0 -44
- package/src/capabilities/schema-tools.ts +0 -125
- package/src/components/MembersContainer.stories.tsx +0 -30
- package/src/components/ObjectDetailsPanel.tsx +0 -77
- package/src/components/ObjectSettings/AdvancedObjectSettings.tsx +0 -80
- package/src/components/ObjectSettings/BaseObjectSettings.tsx +0 -47
- package/src/components/ObjectSettings/ObjectSettingsContainer.tsx +0 -36
- package/src/components/ObjectSettings/index.ts +0 -5
- package/src/components/PersistenceStatus.tsx +0 -83
|
@@ -1,40 +1,42 @@
|
|
|
1
1
|
import {
|
|
2
2
|
useInputSurfaceLookup,
|
|
3
|
-
usePath
|
|
4
|
-
|
|
3
|
+
usePath,
|
|
4
|
+
useTypeOptions
|
|
5
|
+
} from "./chunk-5CSSKOWR.mjs";
|
|
5
6
|
import {
|
|
6
7
|
SpaceCapabilities
|
|
7
|
-
} from "./chunk-
|
|
8
|
+
} from "./chunk-C6DAPIFF.mjs";
|
|
8
9
|
import {
|
|
9
10
|
COMPOSER_SPACE_LOCK,
|
|
10
11
|
getSpaceDisplayName
|
|
11
|
-
} from "./chunk-
|
|
12
|
+
} from "./chunk-IJCMB5B5.mjs";
|
|
12
13
|
import {
|
|
13
14
|
SpaceAction,
|
|
14
15
|
SpaceForm
|
|
15
|
-
} from "./chunk-
|
|
16
|
+
} from "./chunk-E4BEMEZ3.mjs";
|
|
16
17
|
import {
|
|
17
|
-
SPACE_PLUGIN,
|
|
18
18
|
meta
|
|
19
|
-
} from "./chunk-
|
|
19
|
+
} from "./chunk-VZBIIYFM.mjs";
|
|
20
20
|
|
|
21
21
|
// src/components/AwaitingObject.tsx
|
|
22
22
|
import { useSignals as _useSignals } from "@preact-signals/safe-react/tracking";
|
|
23
23
|
import React, { useCallback, useEffect, useState } from "react";
|
|
24
|
-
import {
|
|
24
|
+
import { LayoutAction, createIntent } from "@dxos/app-framework";
|
|
25
|
+
import { useIntentDispatcher, useLayout } from "@dxos/app-framework/react";
|
|
26
|
+
import { Obj } from "@dxos/echo";
|
|
25
27
|
import { useClient } from "@dxos/react-client";
|
|
26
|
-
import { Filter,
|
|
28
|
+
import { Filter, useQuery } from "@dxos/react-client/echo";
|
|
27
29
|
import { Button, Icon, Toast, useTranslation } from "@dxos/react-ui";
|
|
28
|
-
var WAIT_FOR_OBJECT_TIMEOUT =
|
|
29
|
-
var TOAST_TIMEOUT =
|
|
30
|
+
var WAIT_FOR_OBJECT_TIMEOUT = 3 * 60 * 1e3;
|
|
31
|
+
var TOAST_TIMEOUT = 4 * 60 * 1e3;
|
|
30
32
|
var AwaitingObject = ({ id }) => {
|
|
31
33
|
var _effect = _useSignals();
|
|
32
34
|
try {
|
|
35
|
+
const { t } = useTranslation(meta.id);
|
|
36
|
+
const { dispatchPromise: dispatch } = useIntentDispatcher();
|
|
33
37
|
const [open, setOpen] = useState(true);
|
|
34
38
|
const [waiting, setWaiting] = useState(true);
|
|
35
39
|
const [found, setFound] = useState(false);
|
|
36
|
-
const { t } = useTranslation(SPACE_PLUGIN);
|
|
37
|
-
const { dispatchPromise: dispatch } = useIntentDispatcher();
|
|
38
40
|
const layout = useLayout();
|
|
39
41
|
const client = useClient();
|
|
40
42
|
const objects = useQuery(client.spaces, Filter.everything());
|
|
@@ -42,15 +44,13 @@ var AwaitingObject = ({ id }) => {
|
|
|
42
44
|
if (!id) {
|
|
43
45
|
return;
|
|
44
46
|
}
|
|
45
|
-
const timeout = setTimeout(() =>
|
|
46
|
-
|
|
47
|
-
}, WAIT_FOR_OBJECT_TIMEOUT);
|
|
48
|
-
() => clearTimeout(timeout);
|
|
47
|
+
const timeout = setTimeout(() => setWaiting(false), WAIT_FOR_OBJECT_TIMEOUT);
|
|
48
|
+
return () => clearTimeout(timeout);
|
|
49
49
|
}, [
|
|
50
50
|
id
|
|
51
51
|
]);
|
|
52
52
|
useEffect(() => {
|
|
53
|
-
if (objects.findIndex((object) =>
|
|
53
|
+
if (objects.findIndex((object) => Obj.getDXN(object).toString() === id) > -1) {
|
|
54
54
|
setFound(true);
|
|
55
55
|
if (layout.active.includes(id)) {
|
|
56
56
|
setOpen(false);
|
|
@@ -121,34 +121,44 @@ var AwaitingObject = ({ id }) => {
|
|
|
121
121
|
|
|
122
122
|
// src/components/CreateDialog/CreateObjectDialog.tsx
|
|
123
123
|
import { useSignals as _useSignals3 } from "@preact-signals/safe-react/tracking";
|
|
124
|
-
import
|
|
125
|
-
import
|
|
126
|
-
import
|
|
127
|
-
import {
|
|
124
|
+
import * as Effect from "effect/Effect";
|
|
125
|
+
import * as Function2 from "effect/Function";
|
|
126
|
+
import * as Option2 from "effect/Option";
|
|
127
|
+
import React3, { useCallback as useCallback3, useMemo, useRef, useState as useState2 } from "react";
|
|
128
|
+
import { Capabilities, LayoutAction as LayoutAction2, chain, createIntent as createIntent2 } from "@dxos/app-framework";
|
|
129
|
+
import { useIntentDispatcher as useIntentDispatcher2, usePluginManager } from "@dxos/app-framework/react";
|
|
130
|
+
import { Obj as Obj2, Type } from "@dxos/echo";
|
|
131
|
+
import { EntityKind, SystemTypeAnnotation, getTypeAnnotation as getTypeAnnotation2 } from "@dxos/echo/internal";
|
|
128
132
|
import { invariant } from "@dxos/invariant";
|
|
129
133
|
import { useClient as useClient2 } from "@dxos/react-client";
|
|
130
|
-
import { getSpace, isLiveObject, isSpace,
|
|
131
|
-
import {
|
|
134
|
+
import { getSpace, isLiveObject, isSpace, useSpaces } from "@dxos/react-client/echo";
|
|
135
|
+
import { Dialog, IconButton, useTranslation as useTranslation3 } from "@dxos/react-ui";
|
|
132
136
|
import { cardDialogContent, cardDialogHeader } from "@dxos/react-ui-stack";
|
|
133
|
-
import { DataType } from "@dxos/schema";
|
|
134
|
-
import { isNonNullable as isNonNullable2 } from "@dxos/util";
|
|
135
137
|
|
|
136
138
|
// src/components/CreateDialog/CreateObjectPanel.tsx
|
|
137
139
|
import { useSignals as _useSignals2 } from "@preact-signals/safe-react/tracking";
|
|
140
|
+
import * as Option from "effect/Option";
|
|
138
141
|
import React2, { useCallback as useCallback2 } from "react";
|
|
139
|
-
import {
|
|
140
|
-
import {
|
|
141
|
-
import {
|
|
142
|
-
import { Form } from "@dxos/react-ui-form";
|
|
142
|
+
import { getTypeAnnotation } from "@dxos/echo/internal";
|
|
143
|
+
import { Icon as Icon2, toLocalizedString, useDefaultValue, useTranslation as useTranslation2 } from "@dxos/react-ui";
|
|
144
|
+
import { Form, omitId } from "@dxos/react-ui-form";
|
|
143
145
|
import { SearchList } from "@dxos/react-ui-searchlist";
|
|
144
146
|
import { cardDialogOverflow, cardDialogPaddedOverflow, cardDialogSearchListRoot } from "@dxos/react-ui-stack";
|
|
147
|
+
import { ViewAnnotation } from "@dxos/schema";
|
|
145
148
|
import { isNonNullable } from "@dxos/util";
|
|
146
|
-
var CreateObjectPanel = ({
|
|
149
|
+
var CreateObjectPanel = ({ schemas, spaces, typename, target, views, initialFormValues: _initialFormValues, defaultSpaceId, resolve, onTargetChange, onTypenameChange, onCreateObject }) => {
|
|
147
150
|
var _effect = _useSignals2();
|
|
148
151
|
try {
|
|
149
|
-
const { t } = useTranslation2(
|
|
150
|
-
const
|
|
151
|
-
const
|
|
152
|
+
const { t } = useTranslation2(meta.id);
|
|
153
|
+
const initialFormValues = useDefaultValue(_initialFormValues, () => ({}));
|
|
154
|
+
const metadata = typename && resolve?.(typename);
|
|
155
|
+
const options = schemas.filter((schema) => {
|
|
156
|
+
if (views == null) {
|
|
157
|
+
return true;
|
|
158
|
+
} else {
|
|
159
|
+
return views === ViewAnnotation.get(schema).pipe(Option.getOrElse(() => false));
|
|
160
|
+
}
|
|
161
|
+
}).map((schema) => getTypeAnnotation(schema)).filter(isNonNullable).sort((a, b) => {
|
|
152
162
|
const nameA = t("typename label", {
|
|
153
163
|
ns: a.typename,
|
|
154
164
|
defaultValue: a.typename
|
|
@@ -160,34 +170,34 @@ var CreateObjectPanel = ({ forms, spaces, typename, target, name: initialName, d
|
|
|
160
170
|
return nameA.localeCompare(nameB);
|
|
161
171
|
});
|
|
162
172
|
const handleCreateObject = useCallback2(async (props) => {
|
|
163
|
-
if (!
|
|
173
|
+
if (!metadata) {
|
|
164
174
|
return;
|
|
165
175
|
}
|
|
166
176
|
await onCreateObject?.({
|
|
167
|
-
|
|
177
|
+
metadata,
|
|
168
178
|
data: props
|
|
169
179
|
});
|
|
170
180
|
}, [
|
|
171
181
|
onCreateObject,
|
|
172
|
-
|
|
182
|
+
metadata
|
|
173
183
|
]);
|
|
174
184
|
const handleSetTypename = useCallback2(async (typename2) => {
|
|
175
|
-
const
|
|
176
|
-
if (
|
|
185
|
+
const metadata2 = resolve?.(typename2);
|
|
186
|
+
if (metadata2 && !metadata2.inputSchema) {
|
|
177
187
|
await onCreateObject?.({
|
|
178
|
-
|
|
188
|
+
metadata: metadata2
|
|
179
189
|
});
|
|
180
190
|
} else {
|
|
181
191
|
onTypenameChange?.(typename2);
|
|
182
192
|
}
|
|
183
193
|
}, [
|
|
184
|
-
|
|
194
|
+
resolve,
|
|
185
195
|
onCreateObject
|
|
186
196
|
]);
|
|
187
197
|
const inputSurfaceLookup = useInputSurfaceLookup({
|
|
188
198
|
target
|
|
189
199
|
});
|
|
190
|
-
return !
|
|
200
|
+
return !metadata ? /* @__PURE__ */ React2.createElement(SelectSchema, {
|
|
191
201
|
options,
|
|
192
202
|
resolve,
|
|
193
203
|
onChange: handleSetTypename
|
|
@@ -195,20 +205,14 @@ var CreateObjectPanel = ({ forms, spaces, typename, target, name: initialName, d
|
|
|
195
205
|
spaces,
|
|
196
206
|
defaultSpaceId,
|
|
197
207
|
onChange: onTargetChange
|
|
198
|
-
}) :
|
|
199
|
-
role: "none",
|
|
200
|
-
className: cardDialogOverflow
|
|
201
|
-
}, /* @__PURE__ */ React2.createElement(Form, {
|
|
202
|
-
autoFocus: true,
|
|
203
|
-
values: {
|
|
204
|
-
name: initialName
|
|
205
|
-
},
|
|
206
|
-
schema: form.formSchema,
|
|
208
|
+
}) : metadata.inputSchema ? /* @__PURE__ */ React2.createElement(Form.Root, {
|
|
207
209
|
testId: "create-object-form",
|
|
208
|
-
|
|
209
|
-
|
|
210
|
-
|
|
211
|
-
|
|
210
|
+
autoFocus: true,
|
|
211
|
+
schema: omitId(metadata.inputSchema),
|
|
212
|
+
values: initialFormValues,
|
|
213
|
+
fieldProvider: inputSurfaceLookup,
|
|
214
|
+
onSave: handleCreateObject
|
|
215
|
+
}, /* @__PURE__ */ React2.createElement(Form.Viewport, null, /* @__PURE__ */ React2.createElement(Form.Content, null, /* @__PURE__ */ React2.createElement(Form.FieldSet, null), /* @__PURE__ */ React2.createElement(Form.Submit, null)))) : null;
|
|
212
216
|
} finally {
|
|
213
217
|
_effect.f();
|
|
214
218
|
}
|
|
@@ -216,7 +220,7 @@ var CreateObjectPanel = ({ forms, spaces, typename, target, name: initialName, d
|
|
|
216
220
|
var SelectSpace = ({ spaces, defaultSpaceId, onChange }) => {
|
|
217
221
|
var _effect = _useSignals2();
|
|
218
222
|
try {
|
|
219
|
-
const { t } = useTranslation2(
|
|
223
|
+
const { t } = useTranslation2(meta.id);
|
|
220
224
|
return /* @__PURE__ */ React2.createElement(SearchList.Root, {
|
|
221
225
|
label: t("space input label"),
|
|
222
226
|
classNames: cardDialogSearchListRoot
|
|
@@ -256,7 +260,7 @@ var SelectSpace = ({ spaces, defaultSpaceId, onChange }) => {
|
|
|
256
260
|
var SelectSchema = ({ options, resolve, onChange }) => {
|
|
257
261
|
var _effect = _useSignals2();
|
|
258
262
|
try {
|
|
259
|
-
const { t } = useTranslation2(
|
|
263
|
+
const { t } = useTranslation2(meta.id);
|
|
260
264
|
return /* @__PURE__ */ React2.createElement(SearchList.Root, {
|
|
261
265
|
label: t("schema input label"),
|
|
262
266
|
classNames: cardDialogSearchListRoot
|
|
@@ -277,7 +281,7 @@ var SelectSchema = ({ options, resolve, onChange }) => {
|
|
|
277
281
|
}, /* @__PURE__ */ React2.createElement("span", {
|
|
278
282
|
className: "flex gap-2 items-center grow truncate"
|
|
279
283
|
}, /* @__PURE__ */ React2.createElement(Icon2, {
|
|
280
|
-
icon: resolve?.(option.typename)
|
|
284
|
+
icon: resolve?.(option.typename)?.icon ?? "ph--placeholder--regular",
|
|
281
285
|
size: 5
|
|
282
286
|
}), t("typename label", {
|
|
283
287
|
ns: option.typename,
|
|
@@ -288,42 +292,36 @@ var SelectSchema = ({ options, resolve, onChange }) => {
|
|
|
288
292
|
}
|
|
289
293
|
};
|
|
290
294
|
|
|
291
|
-
// src/capabilities/index.ts
|
|
292
|
-
import { lazy } from "@dxos/app-framework";
|
|
293
|
-
var AppGraphBuilder = lazy(() => import("./app-graph-builder-7CZZJS3S.mjs"));
|
|
294
|
-
var AppGraphSerializer = lazy(() => import("./app-graph-serializer-H6AW7KGS.mjs"));
|
|
295
|
-
var IdentityCreated = lazy(() => import("./identity-created-23XJJV2N.mjs"));
|
|
296
|
-
var IntentResolver = lazy(() => import("./intent-resolver-TIXVDYN7.mjs"));
|
|
297
|
-
var ReactRoot = lazy(() => import("./react-root-N2J7TDRX.mjs"));
|
|
298
|
-
var ReactSurface = lazy(() => import("./react-surface-TPNLWJJH.mjs"));
|
|
299
|
-
var SchemaDefs = lazy(() => import("./schema-defs-Z6FC4AHC.mjs"));
|
|
300
|
-
var SchemaTools = lazy(() => import("./schema-tools-BNP4JTD7.mjs"));
|
|
301
|
-
var SpaceSettings = lazy(() => import("./settings-4IMP5RYT.mjs"));
|
|
302
|
-
var SpaceState = lazy(() => import("./state-QYZAB45H.mjs"));
|
|
303
|
-
var SpacesReady = lazy(() => import("./spaces-ready-TOPG6IV4.mjs"));
|
|
304
|
-
|
|
305
295
|
// src/components/CreateDialog/CreateObjectDialog.tsx
|
|
306
296
|
var __dxlog_file = "/__w/dxos/dxos/packages/plugins/plugin-space/src/components/CreateDialog/CreateObjectDialog.tsx";
|
|
307
|
-
var CREATE_OBJECT_DIALOG = `${
|
|
308
|
-
var CreateObjectDialog = ({ target: initialTarget, typename: initialTypename,
|
|
297
|
+
var CREATE_OBJECT_DIALOG = `${meta.id}/CreateObjectDialog`;
|
|
298
|
+
var CreateObjectDialog = ({ target: initialTarget, typename: initialTypename, views, initialFormValues, onCreateObject, shouldNavigate: _shouldNavigate }) => {
|
|
309
299
|
var _effect = _useSignals3();
|
|
310
300
|
try {
|
|
311
|
-
const closeRef = useRef(null);
|
|
312
301
|
const manager = usePluginManager();
|
|
313
|
-
const { t } = useTranslation3(
|
|
314
|
-
const client = useClient2();
|
|
315
|
-
const spaces = useSpaces();
|
|
302
|
+
const { t } = useTranslation3(meta.id);
|
|
316
303
|
const { dispatch } = useIntentDispatcher2();
|
|
317
|
-
const forms = useCapabilities(SpaceCapabilities.ObjectForm);
|
|
318
304
|
const [target, setTarget] = useState2(initialTarget);
|
|
319
305
|
const [typename, setTypename] = useState2(initialTypename);
|
|
320
|
-
const
|
|
321
|
-
const
|
|
322
|
-
const
|
|
323
|
-
const resolve = useCallback3((typename2) =>
|
|
306
|
+
const client = useClient2();
|
|
307
|
+
const spaces = useSpaces();
|
|
308
|
+
const closeRef = useRef(null);
|
|
309
|
+
const resolve = useCallback3((typename2) => {
|
|
310
|
+
const metadata = manager.context.getCapabilities(Capabilities.Metadata).find(({ id }) => id === typename2)?.metadata;
|
|
311
|
+
return metadata?.createObjectIntent ? metadata : void 0;
|
|
312
|
+
}, [
|
|
324
313
|
manager
|
|
325
314
|
]);
|
|
326
|
-
const
|
|
315
|
+
const space = isSpace(target) ? target : getSpace(target);
|
|
316
|
+
const schemas = space?.db.schemaRegistry.query({
|
|
317
|
+
location: [
|
|
318
|
+
"runtime"
|
|
319
|
+
]
|
|
320
|
+
}).runSync();
|
|
321
|
+
const userSchemas = useMemo(() => schemas?.filter((schema) => getTypeAnnotation2(schema)?.kind !== EntityKind.Relation).filter((schema) => !!resolve(Type.getTypename(schema))).filter((schema) => !SystemTypeAnnotation.get(schema).pipe(Option2.getOrElse(() => false))) ?? [], [
|
|
322
|
+
schemas
|
|
323
|
+
]);
|
|
324
|
+
const handleCreateObject = useCallback3(({ metadata, data = {} }) => Effect.gen(function* () {
|
|
327
325
|
if (!target) {
|
|
328
326
|
return;
|
|
329
327
|
}
|
|
@@ -331,18 +329,18 @@ var CreateObjectDialog = ({ target: initialTarget, typename: initialTypename, na
|
|
|
331
329
|
const space2 = isSpace(target) ? target : getSpace(target);
|
|
332
330
|
invariant(space2, "Missing space", {
|
|
333
331
|
F: __dxlog_file,
|
|
334
|
-
L:
|
|
332
|
+
L: 87,
|
|
335
333
|
S: this,
|
|
336
334
|
A: [
|
|
337
335
|
"space",
|
|
338
336
|
"'Missing space'"
|
|
339
337
|
]
|
|
340
338
|
});
|
|
341
|
-
const { object } = yield* dispatch(
|
|
339
|
+
const { object } = yield* dispatch(metadata.createObjectIntent(data, {
|
|
342
340
|
space: space2
|
|
343
341
|
}));
|
|
344
|
-
if (isLiveObject(object) && !
|
|
345
|
-
const hidden =
|
|
342
|
+
if (isLiveObject(object) && !Obj2.instanceOf(Type.PersistentType, object)) {
|
|
343
|
+
const hidden = !metadata.addToCollectionOnCreate;
|
|
346
344
|
const addObjectIntent = createIntent2(SpaceAction.AddObject, {
|
|
347
345
|
target,
|
|
348
346
|
object,
|
|
@@ -350,7 +348,7 @@ var CreateObjectDialog = ({ target: initialTarget, typename: initialTypename, na
|
|
|
350
348
|
});
|
|
351
349
|
const shouldNavigate = _shouldNavigate ?? (() => true);
|
|
352
350
|
if (shouldNavigate(object)) {
|
|
353
|
-
yield* dispatch(pipe(addObjectIntent, chain(LayoutAction2.Open, {
|
|
351
|
+
yield* dispatch(Function2.pipe(addObjectIntent, chain(LayoutAction2.Open, {
|
|
354
352
|
part: "main"
|
|
355
353
|
})));
|
|
356
354
|
} else {
|
|
@@ -362,7 +360,6 @@ var CreateObjectDialog = ({ target: initialTarget, typename: initialTypename, na
|
|
|
362
360
|
dispatch,
|
|
363
361
|
target,
|
|
364
362
|
resolve,
|
|
365
|
-
hiddenTypenames,
|
|
366
363
|
_shouldNavigate
|
|
367
364
|
]);
|
|
368
365
|
return (
|
|
@@ -376,24 +373,26 @@ var CreateObjectDialog = ({ target: initialTarget, typename: initialTypename, na
|
|
|
376
373
|
}, /* @__PURE__ */ React3.createElement(Dialog.Title, null, t("create object dialog title", {
|
|
377
374
|
object: t("typename label", {
|
|
378
375
|
ns: typename,
|
|
379
|
-
defaultValue: "
|
|
376
|
+
defaultValue: views ? "View" : "Object"
|
|
380
377
|
})
|
|
381
378
|
})), /* @__PURE__ */ React3.createElement(Dialog.Close, {
|
|
382
379
|
asChild: true
|
|
383
|
-
}, /* @__PURE__ */ React3.createElement(
|
|
380
|
+
}, /* @__PURE__ */ React3.createElement(IconButton, {
|
|
384
381
|
ref: closeRef,
|
|
382
|
+
icon: "ph--x--regular",
|
|
383
|
+
size: 4,
|
|
384
|
+
label: "Close",
|
|
385
|
+
iconOnly: true,
|
|
385
386
|
density: "fine",
|
|
386
387
|
variant: "ghost",
|
|
387
388
|
autoFocus: true
|
|
388
|
-
}, /* @__PURE__ */ React3.createElement(
|
|
389
|
-
|
|
390
|
-
size: 4
|
|
391
|
-
})))), /* @__PURE__ */ React3.createElement(CreateObjectPanel, {
|
|
392
|
-
forms,
|
|
389
|
+
}))), /* @__PURE__ */ React3.createElement(CreateObjectPanel, {
|
|
390
|
+
schemas: userSchemas,
|
|
393
391
|
spaces,
|
|
394
392
|
target,
|
|
393
|
+
views,
|
|
395
394
|
typename,
|
|
396
|
-
|
|
395
|
+
initialFormValues,
|
|
397
396
|
defaultSpaceId: client.spaces.default.id,
|
|
398
397
|
resolve,
|
|
399
398
|
onTargetChange: setTarget,
|
|
@@ -408,13 +407,14 @@ var CreateObjectDialog = ({ target: initialTarget, typename: initialTypename, na
|
|
|
408
407
|
|
|
409
408
|
// src/components/CreateDialog/CreateSpaceDialog.tsx
|
|
410
409
|
import { useSignals as _useSignals4 } from "@preact-signals/safe-react/tracking";
|
|
411
|
-
import
|
|
410
|
+
import * as Effect2 from "effect/Effect";
|
|
412
411
|
import React4, { useCallback as useCallback4, useRef as useRef2 } from "react";
|
|
413
|
-
import {
|
|
414
|
-
import {
|
|
412
|
+
import { LayoutAction as LayoutAction3, createIntent as createIntent3 } from "@dxos/app-framework";
|
|
413
|
+
import { useIntentDispatcher as useIntentDispatcher3 } from "@dxos/app-framework/react";
|
|
414
|
+
import { Dialog as Dialog2, IconButton as IconButton2, useTranslation as useTranslation4 } from "@dxos/react-ui";
|
|
415
415
|
import { Form as Form2 } from "@dxos/react-ui-form";
|
|
416
416
|
import { cardDialogContent as cardDialogContent2, cardDialogHeader as cardDialogHeader2 } from "@dxos/react-ui-stack";
|
|
417
|
-
var CREATE_SPACE_DIALOG = `${
|
|
417
|
+
var CREATE_SPACE_DIALOG = `${meta.id}/CreateSpaceDialog`;
|
|
418
418
|
var initialValues = {
|
|
419
419
|
edgeReplication: true
|
|
420
420
|
};
|
|
@@ -422,7 +422,7 @@ var CreateSpaceDialog = () => {
|
|
|
422
422
|
var _effect = _useSignals4();
|
|
423
423
|
try {
|
|
424
424
|
const closeRef = useRef2(null);
|
|
425
|
-
const { t } = useTranslation4(
|
|
425
|
+
const { t } = useTranslation4(meta.id);
|
|
426
426
|
const { dispatch } = useIntentDispatcher3();
|
|
427
427
|
const inputSurfaceLookup = useInputSurfaceLookup();
|
|
428
428
|
const handleCreateSpace = useCallback4(async (data) => {
|
|
@@ -453,26 +453,23 @@ var CreateSpaceDialog = () => {
|
|
|
453
453
|
className: cardDialogHeader2
|
|
454
454
|
}, /* @__PURE__ */ React4.createElement(Dialog2.Title, null, t("create space dialog title")), /* @__PURE__ */ React4.createElement(Dialog2.Close, {
|
|
455
455
|
asChild: true
|
|
456
|
-
}, /* @__PURE__ */ React4.createElement(
|
|
456
|
+
}, /* @__PURE__ */ React4.createElement(IconButton2, {
|
|
457
457
|
ref: closeRef,
|
|
458
|
+
icon: "ph--x--regular",
|
|
459
|
+
size: 4,
|
|
460
|
+
label: "Close",
|
|
461
|
+
iconOnly: true,
|
|
458
462
|
density: "fine",
|
|
459
463
|
variant: "ghost",
|
|
460
464
|
autoFocus: true
|
|
461
|
-
}, /* @__PURE__ */ React4.createElement(
|
|
462
|
-
icon: "ph--x--regular",
|
|
463
|
-
size: 4
|
|
464
|
-
})))), /* @__PURE__ */ React4.createElement("div", {
|
|
465
|
-
role: "none",
|
|
466
|
-
className: "contents"
|
|
467
|
-
}, /* @__PURE__ */ React4.createElement(Form2, {
|
|
465
|
+
}))), /* @__PURE__ */ React4.createElement(Form2.Root, {
|
|
468
466
|
testId: "create-space-form",
|
|
469
467
|
autoFocus: true,
|
|
470
|
-
values: initialValues,
|
|
471
468
|
schema: SpaceForm,
|
|
472
|
-
|
|
473
|
-
|
|
474
|
-
|
|
475
|
-
})))
|
|
469
|
+
values: initialValues,
|
|
470
|
+
fieldProvider: inputSurfaceLookup,
|
|
471
|
+
onSave: handleCreateSpace
|
|
472
|
+
}, /* @__PURE__ */ React4.createElement(Form2.Viewport, null, /* @__PURE__ */ React4.createElement(Form2.Content, null, /* @__PURE__ */ React4.createElement(Form2.FieldSet, null), /* @__PURE__ */ React4.createElement(Form2.Submit, null)))))
|
|
476
473
|
);
|
|
477
474
|
} finally {
|
|
478
475
|
_effect.f();
|
|
@@ -483,37 +480,39 @@ var CreateSpaceDialog = () => {
|
|
|
483
480
|
import { useSignals as _useSignals5 } from "@preact-signals/safe-react/tracking";
|
|
484
481
|
import React5 from "react";
|
|
485
482
|
import { useTranslation as useTranslation5 } from "@dxos/react-ui";
|
|
486
|
-
var CollectionSection = ({
|
|
483
|
+
var CollectionSection = ({ role, subject }) => {
|
|
487
484
|
var _effect = _useSignals5();
|
|
488
485
|
try {
|
|
489
|
-
const { t } = useTranslation5(
|
|
486
|
+
const { t } = useTranslation5(meta.id);
|
|
490
487
|
return /* @__PURE__ */ React5.createElement("div", {
|
|
488
|
+
role,
|
|
491
489
|
className: "min-bs-[3.5rem] grid grid-rows-subgrid grid-cols-subgrid items-center"
|
|
492
490
|
}, /* @__PURE__ */ React5.createElement("span", {
|
|
493
491
|
className: "truncate"
|
|
494
|
-
},
|
|
492
|
+
}, subject.name ?? t("unnamed collection label")));
|
|
495
493
|
} finally {
|
|
496
494
|
_effect.f();
|
|
497
495
|
}
|
|
498
496
|
};
|
|
499
497
|
|
|
500
|
-
// src/components/JoinDialog.tsx
|
|
498
|
+
// src/components/JoinDialog/JoinDialog.tsx
|
|
501
499
|
import { useSignals as _useSignals6 } from "@preact-signals/safe-react/tracking";
|
|
502
500
|
import React6, { useCallback as useCallback5 } from "react";
|
|
503
|
-
import {
|
|
501
|
+
import { LayoutAction as LayoutAction4, createIntent as createIntent4 } from "@dxos/app-framework";
|
|
502
|
+
import { useAppGraph, useIntentDispatcher as useIntentDispatcher4 } from "@dxos/app-framework/react";
|
|
504
503
|
import { Trigger } from "@dxos/async";
|
|
505
504
|
import { ObservabilityAction } from "@dxos/plugin-observability/types";
|
|
506
505
|
import { useClient as useClient3 } from "@dxos/react-client";
|
|
507
506
|
import { Dialog as Dialog3, useTranslation as useTranslation6 } from "@dxos/react-ui";
|
|
508
507
|
import { JoinPanel } from "@dxos/shell/react";
|
|
509
|
-
var JOIN_DIALOG = `${
|
|
508
|
+
var JOIN_DIALOG = `${meta.id}/JoinDialog`;
|
|
510
509
|
var JoinDialog = ({ navigableCollections, onDone, ...props }) => {
|
|
511
510
|
var _effect = _useSignals6();
|
|
512
511
|
try {
|
|
513
512
|
const { dispatchPromise: dispatch } = useIntentDispatcher4();
|
|
514
513
|
const client = useClient3();
|
|
515
514
|
const { graph } = useAppGraph();
|
|
516
|
-
const { t } = useTranslation6(
|
|
515
|
+
const { t } = useTranslation6(meta.id);
|
|
517
516
|
const handleDone = useCallback5(async (result) => {
|
|
518
517
|
const spaceKey = result?.spaceKey;
|
|
519
518
|
if (!spaceKey) {
|
|
@@ -523,18 +522,18 @@ var JoinDialog = ({ navigableCollections, onDone, ...props }) => {
|
|
|
523
522
|
dispatch(createIntent4(LayoutAction4.AddToast, {
|
|
524
523
|
part: "toast",
|
|
525
524
|
subject: {
|
|
526
|
-
id: `${
|
|
525
|
+
id: `${meta.id}/join-success`,
|
|
527
526
|
duration: 5e3,
|
|
528
527
|
title: [
|
|
529
528
|
"join success label",
|
|
530
529
|
{
|
|
531
|
-
ns:
|
|
530
|
+
ns: meta.id
|
|
532
531
|
}
|
|
533
532
|
],
|
|
534
533
|
closeLabel: [
|
|
535
534
|
"dismiss label",
|
|
536
535
|
{
|
|
537
|
-
ns:
|
|
536
|
+
ns: meta.id
|
|
538
537
|
}
|
|
539
538
|
]
|
|
540
539
|
}
|
|
@@ -613,22 +612,24 @@ var JoinDialog = ({ navigableCollections, onDone, ...props }) => {
|
|
|
613
612
|
}
|
|
614
613
|
};
|
|
615
614
|
|
|
616
|
-
// src/components/MembersContainer.tsx
|
|
615
|
+
// src/components/MembersContainer/MembersContainer.tsx
|
|
617
616
|
import { useSignals as _useSignals7 } from "@preact-signals/safe-react/tracking";
|
|
618
|
-
import React7, { useCallback as useCallback6, useMemo, useState as useState3 } from "react";
|
|
617
|
+
import React7, { useCallback as useCallback6, useMemo as useMemo2, useState as useState3 } from "react";
|
|
619
618
|
import { QR } from "react-qr-rounded";
|
|
620
|
-
import { createIntent as createIntent5
|
|
619
|
+
import { createIntent as createIntent5 } from "@dxos/app-framework";
|
|
620
|
+
import { useIntentDispatcher as useIntentDispatcher5 } from "@dxos/app-framework/react";
|
|
621
|
+
import { Obj as Obj3 } from "@dxos/echo";
|
|
621
622
|
import { log } from "@dxos/log";
|
|
622
623
|
import { useConfig } from "@dxos/react-client";
|
|
623
|
-
import {
|
|
624
|
+
import { useSpaceInvitations } from "@dxos/react-client/echo";
|
|
624
625
|
import { Invitation, InvitationEncoder } from "@dxos/react-client/invitations";
|
|
625
|
-
import { Button as
|
|
626
|
-
import {
|
|
626
|
+
import { Button as Button2, Clipboard, Icon as Icon3, Input, useId, useTranslation as useTranslation7 } from "@dxos/react-ui";
|
|
627
|
+
import { ControlFrame, ControlFrameItem, ControlItemInput, ControlPage, ControlSection } from "@dxos/react-ui-form";
|
|
627
628
|
import { StackItem } from "@dxos/react-ui-stack";
|
|
628
|
-
import {
|
|
629
|
+
import { Collection } from "@dxos/schema";
|
|
629
630
|
import { AuthCode, BifurcatedAction, Centered, Emoji, InvitationList, SpaceMemberList, Viewport } from "@dxos/shell/react";
|
|
630
631
|
import { hexToEmoji } from "@dxos/util";
|
|
631
|
-
var __dxlog_file2 = "/__w/dxos/dxos/packages/plugins/plugin-space/src/components/MembersContainer.tsx";
|
|
632
|
+
var __dxlog_file2 = "/__w/dxos/dxos/packages/plugins/plugin-space/src/components/MembersContainer/MembersContainer.tsx";
|
|
632
633
|
var activeActionKey = "dxos:react-shell/space-manager/active-action";
|
|
633
634
|
var handleInvitationEvent = (invitation, subscription) => {
|
|
634
635
|
const invitationCode = InvitationEncoder.encode(invitation);
|
|
@@ -638,7 +639,7 @@ var handleInvitationEvent = (invitation, subscription) => {
|
|
|
638
639
|
authCode: invitation.authCode
|
|
639
640
|
}), void 0, {
|
|
640
641
|
F: __dxlog_file2,
|
|
641
|
-
L:
|
|
642
|
+
L: 41,
|
|
642
643
|
S: void 0,
|
|
643
644
|
C: (f, a) => f(...a)
|
|
644
645
|
});
|
|
@@ -648,7 +649,7 @@ var handleInvitationEvent = (invitation, subscription) => {
|
|
|
648
649
|
var MembersContainer = ({ space, createInvitationUrl }) => {
|
|
649
650
|
var _effect = _useSignals7();
|
|
650
651
|
try {
|
|
651
|
-
const { t } = useTranslation7(
|
|
652
|
+
const { t } = useTranslation7(meta.id);
|
|
652
653
|
const config = useConfig();
|
|
653
654
|
const { dispatchPromise: dispatch } = useIntentDispatcher5();
|
|
654
655
|
const invitations = useSpaceInvitations(space.key);
|
|
@@ -660,7 +661,7 @@ var MembersContainer = ({ space, createInvitationUrl }) => {
|
|
|
660
661
|
setInternalActiveAction(nextAction);
|
|
661
662
|
localStorage.setItem(activeActionKey, nextAction);
|
|
662
663
|
};
|
|
663
|
-
const target = space.properties[
|
|
664
|
+
const target = space.properties[Collection.Collection.typename]?.target?.objects[0]?.target;
|
|
664
665
|
const locked = space.properties[COMPOSER_SPACE_LOCK];
|
|
665
666
|
const handleChangeLocked = useCallback6(() => {
|
|
666
667
|
space.properties[COMPOSER_SPACE_LOCK] = !locked;
|
|
@@ -668,7 +669,7 @@ var MembersContainer = ({ space, createInvitationUrl }) => {
|
|
|
668
669
|
locked,
|
|
669
670
|
space
|
|
670
671
|
]);
|
|
671
|
-
const inviteActions =
|
|
672
|
+
const inviteActions = useMemo2(() => ({
|
|
672
673
|
inviteOne: {
|
|
673
674
|
label: t("invite one label", {
|
|
674
675
|
ns: "os"
|
|
@@ -676,10 +677,7 @@ var MembersContainer = ({ space, createInvitationUrl }) => {
|
|
|
676
677
|
description: t("invite one description", {
|
|
677
678
|
ns: "os"
|
|
678
679
|
}),
|
|
679
|
-
icon:
|
|
680
|
-
icon: "ph--user-plus--regular",
|
|
681
|
-
size: 5
|
|
682
|
-
}),
|
|
680
|
+
icon: "ph--user-plus--regular",
|
|
683
681
|
testId: "membersContainer.inviteOne",
|
|
684
682
|
onClick: async () => {
|
|
685
683
|
const { data: invitation } = await dispatch(createIntent5(SpaceAction.Share, {
|
|
@@ -687,7 +685,7 @@ var MembersContainer = ({ space, createInvitationUrl }) => {
|
|
|
687
685
|
type: Invitation.Type.INTERACTIVE,
|
|
688
686
|
authMethod: Invitation.AuthMethod.SHARED_SECRET,
|
|
689
687
|
multiUse: false,
|
|
690
|
-
target: target &&
|
|
688
|
+
target: target && Obj3.getDXN(target).toString()
|
|
691
689
|
}));
|
|
692
690
|
if (invitation && config.values.runtime?.app?.env?.DX_ENVIRONMENT !== "production") {
|
|
693
691
|
const subscription = invitation.subscribe((invitation2) => handleInvitationEvent(invitation2, subscription));
|
|
@@ -701,10 +699,7 @@ var MembersContainer = ({ space, createInvitationUrl }) => {
|
|
|
701
699
|
description: t("invite many description", {
|
|
702
700
|
ns: "os"
|
|
703
701
|
}),
|
|
704
|
-
icon:
|
|
705
|
-
icon: "ph--users-three--regular",
|
|
706
|
-
size: 5
|
|
707
|
-
}),
|
|
702
|
+
icon: "ph--users-three--regular",
|
|
708
703
|
testId: "membersContainer.inviteMany",
|
|
709
704
|
onClick: async () => {
|
|
710
705
|
const { data: invitation } = await dispatch(createIntent5(SpaceAction.Share, {
|
|
@@ -712,7 +707,7 @@ var MembersContainer = ({ space, createInvitationUrl }) => {
|
|
|
712
707
|
type: Invitation.Type.DELEGATED,
|
|
713
708
|
authMethod: Invitation.AuthMethod.KNOWN_PUBLIC_KEY,
|
|
714
709
|
multiUse: true,
|
|
715
|
-
target: target &&
|
|
710
|
+
target: target && Obj3.getDXN(target).toString()
|
|
716
711
|
}));
|
|
717
712
|
if (invitation && config.values.runtime?.app?.env?.DX_ENVIRONMENT !== "production") {
|
|
718
713
|
const subscription = invitation.subscribe((invitation2) => handleInvitationEvent(invitation2, subscription));
|
|
@@ -732,7 +727,7 @@ var MembersContainer = ({ space, createInvitationUrl }) => {
|
|
|
732
727
|
setSelectedInvitation(null);
|
|
733
728
|
};
|
|
734
729
|
return /* @__PURE__ */ React7.createElement(Clipboard.Provider, null, /* @__PURE__ */ React7.createElement(StackItem.Content, {
|
|
735
|
-
|
|
730
|
+
scrollable: true
|
|
736
731
|
}, /* @__PURE__ */ React7.createElement(ControlPage, null, /* @__PURE__ */ React7.createElement(ControlSection, {
|
|
737
732
|
title: t("members verbose label"),
|
|
738
733
|
description: t("members description")
|
|
@@ -764,7 +759,7 @@ var MembersContainer = ({ space, createInvitationUrl }) => {
|
|
|
764
759
|
onChangeActiveAction: setActiveAction,
|
|
765
760
|
"data-testid": "membersContainer.createInvitation"
|
|
766
761
|
})))), /* @__PURE__ */ React7.createElement("div", {
|
|
767
|
-
className: "justify-center
|
|
762
|
+
className: "justify-center p-0 mbs-4 container-max-width grid grid-cols-1 md:grid-cols-[1fr_min-content]"
|
|
768
763
|
}, /* @__PURE__ */ React7.createElement(ControlItemInput, {
|
|
769
764
|
title: t("space locked label"),
|
|
770
765
|
description: t("space locked description")
|
|
@@ -815,7 +810,7 @@ var InvitationQR = ({ id, url, onCancel }) => {
|
|
|
815
810
|
return /* @__PURE__ */ React7.createElement(React7.Fragment, null, /* @__PURE__ */ React7.createElement("p", {
|
|
816
811
|
className: "text-description"
|
|
817
812
|
}, t("qr code description", {
|
|
818
|
-
ns:
|
|
813
|
+
ns: meta.id
|
|
819
814
|
})), /* @__PURE__ */ React7.createElement("div", {
|
|
820
815
|
role: "group",
|
|
821
816
|
className: "grid grid-cols-[1fr_min-content] mlb-2 gap-2"
|
|
@@ -836,7 +831,7 @@ var InvitationQR = ({ id, url, onCancel }) => {
|
|
|
836
831
|
className: "sr-only"
|
|
837
832
|
}, t("qr label")), /* @__PURE__ */ React7.createElement(Clipboard.Button, {
|
|
838
833
|
value: url ?? "never"
|
|
839
|
-
})), /* @__PURE__ */ React7.createElement(
|
|
834
|
+
})), /* @__PURE__ */ React7.createElement(Button2, {
|
|
840
835
|
variant: "ghost",
|
|
841
836
|
onClick: onCancel
|
|
842
837
|
}, t("cancel label")));
|
|
@@ -860,7 +855,7 @@ var InvitationAuthCode = ({ id, code, onCancel }) => {
|
|
|
860
855
|
code,
|
|
861
856
|
large: true,
|
|
862
857
|
classNames: "mli-auto mlb-2 text-center grow"
|
|
863
|
-
}), /* @__PURE__ */ React7.createElement(
|
|
858
|
+
}), /* @__PURE__ */ React7.createElement(Button2, {
|
|
864
859
|
variant: "ghost",
|
|
865
860
|
onClick: onCancel
|
|
866
861
|
}, t("cancel label")));
|
|
@@ -871,11 +866,11 @@ var InvitationAuthCode = ({ id, code, onCancel }) => {
|
|
|
871
866
|
var InvitationComplete = ({ statusValue }) => {
|
|
872
867
|
var _effect = _useSignals7();
|
|
873
868
|
try {
|
|
874
|
-
return statusValue > 0 ? /* @__PURE__ */ React7.createElement(
|
|
869
|
+
return statusValue > 0 ? /* @__PURE__ */ React7.createElement(Icon3, {
|
|
875
870
|
icon: "ph--check--regular",
|
|
876
871
|
size: 6,
|
|
877
872
|
classNames: "m-1.5"
|
|
878
|
-
}) : /* @__PURE__ */ React7.createElement(
|
|
873
|
+
}) : /* @__PURE__ */ React7.createElement(Icon3, {
|
|
879
874
|
icon: "ph--x--regular",
|
|
880
875
|
size: 6,
|
|
881
876
|
classNames: "m-1.5"
|
|
@@ -890,11 +885,11 @@ import { useSignals as _useSignals8 } from "@preact-signals/safe-react/tracking"
|
|
|
890
885
|
import React8 from "react";
|
|
891
886
|
import { getSpace as getSpace2 } from "@dxos/client/echo";
|
|
892
887
|
import { useClient as useClient4 } from "@dxos/react-client";
|
|
893
|
-
import { DropdownMenu, Icon as
|
|
888
|
+
import { DropdownMenu, Icon as Icon4, toLocalizedString as toLocalizedString2, useTranslation as useTranslation8 } from "@dxos/react-ui";
|
|
894
889
|
var MenuFooter = ({ object }) => {
|
|
895
890
|
var _effect = _useSignals8();
|
|
896
891
|
try {
|
|
897
|
-
const { t } = useTranslation8(
|
|
892
|
+
const { t } = useTranslation8(meta.id);
|
|
898
893
|
const client = useClient4();
|
|
899
894
|
const space = getSpace2(object);
|
|
900
895
|
const spaceName = space ? getSpaceDisplayName(space, {
|
|
@@ -906,7 +901,7 @@ var MenuFooter = ({ object }) => {
|
|
|
906
901
|
className: "uppercase text-[.75em] tracking-wide font-medium mbs-px self-start"
|
|
907
902
|
}, t("location label")), /* @__PURE__ */ React8.createElement("dd", {
|
|
908
903
|
className: "line-clamp-3"
|
|
909
|
-
}, /* @__PURE__ */ React8.createElement(
|
|
904
|
+
}, /* @__PURE__ */ React8.createElement(Icon4, {
|
|
910
905
|
icon: "ph--planet--regular",
|
|
911
906
|
classNames: "inline-block mie-1"
|
|
912
907
|
}), toLocalizedString2(spaceName, t)))) : null;
|
|
@@ -915,166 +910,35 @@ var MenuFooter = ({ object }) => {
|
|
|
915
910
|
}
|
|
916
911
|
};
|
|
917
912
|
|
|
918
|
-
// src/components/
|
|
919
|
-
import { useSignals as _useSignals10 } from "@preact-signals/safe-react/tracking";
|
|
920
|
-
import React10, { useMemo as useMemo2 } from "react";
|
|
921
|
-
import { Surface } from "@dxos/app-framework";
|
|
922
|
-
import { Clipboard as Clipboard2 } from "@dxos/react-ui";
|
|
923
|
-
import { StackItem as StackItem2 } from "@dxos/react-ui-stack";
|
|
924
|
-
|
|
925
|
-
// src/components/ObjectSettings/BaseObjectSettings.tsx
|
|
913
|
+
// src/components/ObjectRenamePopover/ObjectRenamePopover.tsx
|
|
926
914
|
import { useSignals as _useSignals9 } from "@preact-signals/safe-react/tracking";
|
|
927
|
-
import React9, { useRef as useRef3 } from "react";
|
|
928
|
-
import {
|
|
929
|
-
|
|
915
|
+
import React9, { useCallback as useCallback7, useRef as useRef3, useState as useState4 } from "react";
|
|
916
|
+
import { LayoutAction as LayoutAction5, createIntent as createIntent6 } from "@dxos/app-framework";
|
|
917
|
+
import { useIntentDispatcher as useIntentDispatcher6 } from "@dxos/app-framework/react";
|
|
918
|
+
import { Obj as Obj4 } from "@dxos/echo";
|
|
919
|
+
import { log as log2 } from "@dxos/log";
|
|
920
|
+
import { Button as Button3, Input as Input2, useTranslation as useTranslation9 } from "@dxos/react-ui";
|
|
921
|
+
var __dxlog_file3 = "/__w/dxos/dxos/packages/plugins/plugin-space/src/components/ObjectRenamePopover/ObjectRenamePopover.tsx";
|
|
922
|
+
var OBJECT_RENAME_POPOVER = `${meta.id}/ObjectRenamePopover`;
|
|
923
|
+
var ObjectRenamePopover = ({ object }) => {
|
|
930
924
|
var _effect = _useSignals9();
|
|
931
925
|
try {
|
|
932
926
|
const { t } = useTranslation9(meta.id);
|
|
933
|
-
const
|
|
934
|
-
|
|
935
|
-
ref: inputRef,
|
|
936
|
-
placeholder: t("name placeholder"),
|
|
937
|
-
// TODO(burdon): Use annotation to get the name field.
|
|
938
|
-
value: object.name ?? "",
|
|
939
|
-
onChange: (event) => {
|
|
940
|
-
object.name = event.target.value;
|
|
941
|
-
},
|
|
942
|
-
onKeyDown: (event) => {
|
|
943
|
-
if (event.key === "Enter") {
|
|
944
|
-
inputRef.current?.blur();
|
|
945
|
-
}
|
|
946
|
-
}
|
|
947
|
-
})), children);
|
|
948
|
-
} finally {
|
|
949
|
-
_effect.f();
|
|
950
|
-
}
|
|
951
|
-
};
|
|
952
|
-
|
|
953
|
-
// src/components/ObjectSettings/ObjectSettingsContainer.tsx
|
|
954
|
-
var ObjectSettingsContainer = ({ object, role }) => {
|
|
955
|
-
var _effect = _useSignals10();
|
|
956
|
-
try {
|
|
957
|
-
const data = useMemo2(() => ({
|
|
958
|
-
subject: object
|
|
959
|
-
}), [
|
|
960
|
-
object
|
|
961
|
-
]);
|
|
962
|
-
return /* @__PURE__ */ React10.createElement(Clipboard2.Provider, null, /* @__PURE__ */ React10.createElement(StackItem2.Content, {
|
|
963
|
-
toolbar: false
|
|
964
|
-
}, /* @__PURE__ */ React10.createElement("div", {
|
|
965
|
-
role: "none",
|
|
966
|
-
className: "overflow-y-auto pli-cardSpacingInline plb-cardSpacingBlock"
|
|
967
|
-
}, /* @__PURE__ */ React10.createElement(BaseObjectSettings, {
|
|
968
|
-
object
|
|
969
|
-
}, /* @__PURE__ */ React10.createElement(Surface, {
|
|
970
|
-
role: "base-object-settings",
|
|
971
|
-
data
|
|
972
|
-
})), /* @__PURE__ */ React10.createElement(Surface, {
|
|
973
|
-
role: "object-settings",
|
|
974
|
-
data
|
|
975
|
-
}))));
|
|
976
|
-
} finally {
|
|
977
|
-
_effect.f();
|
|
978
|
-
}
|
|
979
|
-
};
|
|
980
|
-
|
|
981
|
-
// src/components/PersistenceStatus.tsx
|
|
982
|
-
import { useSignals as _useSignals11 } from "@preact-signals/safe-react/tracking";
|
|
983
|
-
import React11, { useEffect as useEffect2, useState as useState4 } from "react";
|
|
984
|
-
import { debounce } from "@dxos/async";
|
|
985
|
-
import { Icon as Icon7, Tooltip, useTranslation as useTranslation10 } from "@dxos/react-ui";
|
|
986
|
-
import { mx, staticPlaceholderText, warningText } from "@dxos/react-ui-theme";
|
|
987
|
-
var PersistenceStatus = ({ db }) => {
|
|
988
|
-
var _effect = _useSignals11();
|
|
989
|
-
try {
|
|
990
|
-
const { t } = useTranslation10(SPACE_PLUGIN);
|
|
991
|
-
const [displayMessage, setDisplayMessage] = useState4(false);
|
|
992
|
-
const [status, naturalSetStatus] = useState4(0);
|
|
993
|
-
const [prevStatus, setPrevStatus] = useState4(0);
|
|
994
|
-
const _setStatus = debounce(naturalSetStatus, 500);
|
|
995
|
-
useEffect2(() => {
|
|
996
|
-
setPrevStatus(status);
|
|
997
|
-
if (prevStatus !== status && status === 0) {
|
|
998
|
-
setDisplayMessage(true);
|
|
999
|
-
const timeout = setTimeout(() => setDisplayMessage(false), 5e3);
|
|
1000
|
-
return () => clearTimeout(timeout);
|
|
1001
|
-
}
|
|
1002
|
-
}, [
|
|
1003
|
-
status
|
|
1004
|
-
]);
|
|
1005
|
-
switch (status) {
|
|
1006
|
-
case 2:
|
|
1007
|
-
return /* @__PURE__ */ React11.createElement("div", {
|
|
1008
|
-
className: "flex items-center"
|
|
1009
|
-
}, /* @__PURE__ */ React11.createElement(Icon7, {
|
|
1010
|
-
icon: "ph--warning--regular",
|
|
1011
|
-
size: 4,
|
|
1012
|
-
classNames: "me-1"
|
|
1013
|
-
}), /* @__PURE__ */ React11.createElement("span", {
|
|
1014
|
-
className: mx("text-sm", warningText)
|
|
1015
|
-
}, t("persistence error label")));
|
|
1016
|
-
case 1:
|
|
1017
|
-
return /* @__PURE__ */ React11.createElement("div", {
|
|
1018
|
-
className: "flex items-center"
|
|
1019
|
-
}, /* @__PURE__ */ React11.createElement(Icon7, {
|
|
1020
|
-
icon: "ph--arrows-counter-clockwise--regular",
|
|
1021
|
-
size: 4,
|
|
1022
|
-
classNames: "me-1"
|
|
1023
|
-
}), /* @__PURE__ */ React11.createElement("span", {
|
|
1024
|
-
className: mx("text-sm", staticPlaceholderText)
|
|
1025
|
-
}, t("persistence pending label")));
|
|
1026
|
-
case 0:
|
|
1027
|
-
default:
|
|
1028
|
-
return /* @__PURE__ */ React11.createElement(Tooltip.Trigger, {
|
|
1029
|
-
delayDuration: 400,
|
|
1030
|
-
role: "status",
|
|
1031
|
-
content: t("persisted locally message"),
|
|
1032
|
-
className: "flex items-center"
|
|
1033
|
-
}, /* @__PURE__ */ React11.createElement(Icon7, {
|
|
1034
|
-
icon: "ph--check-circle--regular",
|
|
1035
|
-
size: 4,
|
|
1036
|
-
classNames: "me-1"
|
|
1037
|
-
}), displayMessage && /* @__PURE__ */ React11.createElement("span", {
|
|
1038
|
-
className: mx("text-sm", staticPlaceholderText)
|
|
1039
|
-
}, t("persisted locally label")));
|
|
1040
|
-
}
|
|
1041
|
-
} finally {
|
|
1042
|
-
_effect.f();
|
|
1043
|
-
}
|
|
1044
|
-
};
|
|
1045
|
-
|
|
1046
|
-
// src/components/PopoverRenameObject.tsx
|
|
1047
|
-
import { useSignals as _useSignals12 } from "@preact-signals/safe-react/tracking";
|
|
1048
|
-
import React12, { useCallback as useCallback7, useRef as useRef4, useState as useState5 } from "react";
|
|
1049
|
-
import { createIntent as createIntent6, LayoutAction as LayoutAction5, useIntentDispatcher as useIntentDispatcher6 } from "@dxos/app-framework";
|
|
1050
|
-
import { log as log2 } from "@dxos/log";
|
|
1051
|
-
import { Button as Button5, Input as Input3, useTranslation as useTranslation11 } from "@dxos/react-ui";
|
|
1052
|
-
var __dxlog_file3 = "/__w/dxos/dxos/packages/plugins/plugin-space/src/components/PopoverRenameObject.tsx";
|
|
1053
|
-
var POPOVER_RENAME_OBJECT = `${SPACE_PLUGIN}/PopoverRenameObject`;
|
|
1054
|
-
var PopoverRenameObject = ({ object: obj }) => {
|
|
1055
|
-
var _effect = _useSignals12();
|
|
1056
|
-
try {
|
|
1057
|
-
const { t } = useTranslation11(SPACE_PLUGIN);
|
|
1058
|
-
const doneButton = useRef4(null);
|
|
1059
|
-
const object = obj;
|
|
1060
|
-
const [name, setName] = useState5(object.name || object.title || "");
|
|
927
|
+
const doneButton = useRef3(null);
|
|
928
|
+
const [name, setName] = useState4(Obj4.getLabel(object));
|
|
1061
929
|
const { dispatchPromise: dispatch } = useIntentDispatcher6();
|
|
1062
930
|
const handleDone = useCallback7(() => {
|
|
1063
931
|
try {
|
|
1064
|
-
|
|
932
|
+
name && Obj4.setLabel(object, name);
|
|
1065
933
|
} catch (err) {
|
|
1066
|
-
|
|
1067
|
-
|
|
1068
|
-
}
|
|
1069
|
-
|
|
1070
|
-
|
|
1071
|
-
|
|
1072
|
-
|
|
1073
|
-
|
|
1074
|
-
S: void 0,
|
|
1075
|
-
C: (f, a) => f(...a)
|
|
1076
|
-
});
|
|
1077
|
-
}
|
|
934
|
+
log2.error("Failed to rename object", {
|
|
935
|
+
err
|
|
936
|
+
}, {
|
|
937
|
+
F: __dxlog_file3,
|
|
938
|
+
L: 27,
|
|
939
|
+
S: void 0,
|
|
940
|
+
C: (f, a) => f(...a)
|
|
941
|
+
});
|
|
1078
942
|
}
|
|
1079
943
|
void dispatch(createIntent6(LayoutAction5.UpdatePopover, {
|
|
1080
944
|
part: "popover",
|
|
@@ -1088,21 +952,21 @@ var PopoverRenameObject = ({ object: obj }) => {
|
|
|
1088
952
|
object,
|
|
1089
953
|
name
|
|
1090
954
|
]);
|
|
1091
|
-
return /* @__PURE__ */
|
|
955
|
+
return /* @__PURE__ */ React9.createElement("div", {
|
|
1092
956
|
role: "none",
|
|
1093
957
|
className: "p-2 flex gap-2"
|
|
1094
|
-
}, /* @__PURE__ */
|
|
958
|
+
}, /* @__PURE__ */ React9.createElement("div", {
|
|
1095
959
|
role: "none",
|
|
1096
960
|
className: "flex-1"
|
|
1097
|
-
}, /* @__PURE__ */
|
|
961
|
+
}, /* @__PURE__ */ React9.createElement(Input2.Root, null, /* @__PURE__ */ React9.createElement(Input2.Label, {
|
|
1098
962
|
srOnly: true
|
|
1099
|
-
}, t("object name label")), /* @__PURE__ */
|
|
963
|
+
}, t("object name label")), /* @__PURE__ */ React9.createElement(Input2.TextInput, {
|
|
1100
964
|
placeholder: t("object placeholder"),
|
|
1101
965
|
value: name,
|
|
1102
966
|
"data-testid": "spacePlugin.renameObject.input",
|
|
1103
|
-
onChange: ({ target: { value } }) => setName(
|
|
967
|
+
onChange: ({ target: { value: value2 } }) => setName(value2),
|
|
1104
968
|
onKeyDown: ({ key }) => key === "Enter" && doneButton.current?.click()
|
|
1105
|
-
}))), /* @__PURE__ */
|
|
969
|
+
}))), /* @__PURE__ */ React9.createElement(Button3, {
|
|
1106
970
|
ref: doneButton,
|
|
1107
971
|
classNames: "self-stretch",
|
|
1108
972
|
onClick: handleDone
|
|
@@ -1114,71 +978,38 @@ var PopoverRenameObject = ({ object: obj }) => {
|
|
|
1114
978
|
}
|
|
1115
979
|
};
|
|
1116
980
|
|
|
1117
|
-
// src/components/
|
|
1118
|
-
import { useSignals as
|
|
1119
|
-
import
|
|
1120
|
-
import {
|
|
1121
|
-
import {
|
|
1122
|
-
|
|
1123
|
-
var
|
|
1124
|
-
var _effect =
|
|
981
|
+
// src/components/SchemaContainer.tsx
|
|
982
|
+
import { useSignals as _useSignals10 } from "@preact-signals/safe-react/tracking";
|
|
983
|
+
import React10, { useEffect as useEffect2, useState as useState5 } from "react";
|
|
984
|
+
import { useTranslation as useTranslation10 } from "@dxos/react-ui";
|
|
985
|
+
import { ControlPage as ControlPage2, ControlSection as ControlSection2, controlItemClasses } from "@dxos/react-ui-form";
|
|
986
|
+
import { StackItem as StackItem2 } from "@dxos/react-ui-stack";
|
|
987
|
+
var SchemaContainer = ({ space }) => {
|
|
988
|
+
var _effect = _useSignals10();
|
|
1125
989
|
try {
|
|
1126
|
-
const { t } =
|
|
1127
|
-
const
|
|
1128
|
-
|
|
1129
|
-
|
|
1130
|
-
|
|
1131
|
-
|
|
1132
|
-
|
|
1133
|
-
|
|
1134
|
-
options: {
|
|
1135
|
-
variant: "react",
|
|
1136
|
-
anchorId: "",
|
|
1137
|
-
state: false
|
|
1138
|
-
}
|
|
1139
|
-
}));
|
|
1140
|
-
}, [
|
|
1141
|
-
space,
|
|
1142
|
-
name
|
|
1143
|
-
]);
|
|
1144
|
-
return /* @__PURE__ */ React13.createElement("div", {
|
|
990
|
+
const { t } = useTranslation10(meta.id);
|
|
991
|
+
const schemas = useQuerySpaceSchemas(space);
|
|
992
|
+
return /* @__PURE__ */ React10.createElement(StackItem2.Content, {
|
|
993
|
+
scrollable: true
|
|
994
|
+
}, /* @__PURE__ */ React10.createElement(ControlPage2, null, /* @__PURE__ */ React10.createElement(ControlSection2, {
|
|
995
|
+
title: t("schema verbose label"),
|
|
996
|
+
description: t("schema description")
|
|
997
|
+
}, /* @__PURE__ */ React10.createElement("div", {
|
|
1145
998
|
role: "none",
|
|
1146
|
-
className:
|
|
1147
|
-
}, /* @__PURE__ */
|
|
999
|
+
className: controlItemClasses
|
|
1000
|
+
}, schemas.length === 0 && /* @__PURE__ */ React10.createElement("div", {
|
|
1001
|
+
className: "text-center plb-4"
|
|
1002
|
+
}, t("no schemas found message")), schemas.map((schema) => /* @__PURE__ */ React10.createElement("div", {
|
|
1148
1003
|
role: "none",
|
|
1149
|
-
|
|
1150
|
-
},
|
|
1151
|
-
srOnly: true
|
|
1152
|
-
}, t("space name label")), /* @__PURE__ */ React13.createElement(Input4.TextInput, {
|
|
1153
|
-
defaultValue: space.properties.name ?? "",
|
|
1154
|
-
placeholder: t("unnamed space label"),
|
|
1155
|
-
onChange: ({ target: { value } }) => setName(value),
|
|
1156
|
-
// TODO(wittjosiah): Ideally this should access the popover context to close the popover.
|
|
1157
|
-
// Currently this is not possible because Radix does not expose the popover context.
|
|
1158
|
-
onKeyDown: ({ key }) => key === "Enter" && doneButton.current?.click()
|
|
1159
|
-
}))), /* @__PURE__ */ React13.createElement(Popover.Close, {
|
|
1160
|
-
asChild: true
|
|
1161
|
-
}, /* @__PURE__ */ React13.createElement(Button6, {
|
|
1162
|
-
ref: doneButton,
|
|
1163
|
-
classNames: "self-stretch",
|
|
1164
|
-
onClick: handleDone
|
|
1165
|
-
}, t("done label", {
|
|
1166
|
-
ns: "os"
|
|
1167
|
-
}))));
|
|
1004
|
+
key: schema.id
|
|
1005
|
+
}, schema.typename))))));
|
|
1168
1006
|
} finally {
|
|
1169
1007
|
_effect.f();
|
|
1170
1008
|
}
|
|
1171
1009
|
};
|
|
1172
|
-
|
|
1173
|
-
// src/components/SchemaContainer.tsx
|
|
1174
|
-
import { useSignals as _useSignals14 } from "@preact-signals/safe-react/tracking";
|
|
1175
|
-
import React14, { useState as useState7, useEffect as useEffect3 } from "react";
|
|
1176
|
-
import { useTranslation as useTranslation13 } from "@dxos/react-ui";
|
|
1177
|
-
import { controlItemClasses, ControlPage as ControlPage2, ControlSection as ControlSection2 } from "@dxos/react-ui-form";
|
|
1178
|
-
import { StackItem as StackItem3 } from "@dxos/react-ui-stack";
|
|
1179
1010
|
var useQuerySpaceSchemas = (space) => {
|
|
1180
|
-
const [schemas, setSchemas] =
|
|
1181
|
-
|
|
1011
|
+
const [schemas, setSchemas] = useState5([]);
|
|
1012
|
+
useEffect2(() => {
|
|
1182
1013
|
const query = space.db.schemaRegistry.query();
|
|
1183
1014
|
const initialResults = query.runSync();
|
|
1184
1015
|
setSchemas(initialResults);
|
|
@@ -1189,66 +1020,110 @@ var useQuerySpaceSchemas = (space) => {
|
|
|
1189
1020
|
]);
|
|
1190
1021
|
return schemas;
|
|
1191
1022
|
};
|
|
1192
|
-
|
|
1193
|
-
|
|
1023
|
+
|
|
1024
|
+
// src/components/SpacePluginSettings.tsx
|
|
1025
|
+
import { useSignals as _useSignals11 } from "@preact-signals/safe-react/tracking";
|
|
1026
|
+
import React11 from "react";
|
|
1027
|
+
import { createIntent as createIntent7 } from "@dxos/app-framework";
|
|
1028
|
+
import { useIntentDispatcher as useIntentDispatcher7 } from "@dxos/app-framework/react";
|
|
1029
|
+
import { useClient as useClient5 } from "@dxos/react-client";
|
|
1030
|
+
import { useSpaces as useSpaces2 } from "@dxos/react-client/echo";
|
|
1031
|
+
import { IconButton as IconButton3, Input as Input3, List, ListItem, toLocalizedString as toLocalizedString3, useTranslation as useTranslation11 } from "@dxos/react-ui";
|
|
1032
|
+
import { ControlGroup, ControlItemInput as ControlItemInput2, ControlPage as ControlPage3, ControlSection as ControlSection3, controlItemClasses as controlItemClasses2 } from "@dxos/react-ui-form";
|
|
1033
|
+
var SpacePluginSettings = ({ settings }) => {
|
|
1034
|
+
var _effect = _useSignals11();
|
|
1194
1035
|
try {
|
|
1195
|
-
const { t } =
|
|
1196
|
-
const
|
|
1197
|
-
|
|
1198
|
-
|
|
1199
|
-
}
|
|
1200
|
-
|
|
1201
|
-
|
|
1202
|
-
|
|
1203
|
-
|
|
1204
|
-
|
|
1205
|
-
|
|
1206
|
-
|
|
1207
|
-
|
|
1208
|
-
|
|
1209
|
-
}, /* @__PURE__ */
|
|
1036
|
+
const { t } = useTranslation11(meta.id);
|
|
1037
|
+
const client = useClient5();
|
|
1038
|
+
const spaces = useSpaces2({
|
|
1039
|
+
all: settings.showHidden
|
|
1040
|
+
});
|
|
1041
|
+
const { dispatchPromise: dispatch } = useIntentDispatcher7();
|
|
1042
|
+
return /* @__PURE__ */ React11.createElement(ControlPage3, null, /* @__PURE__ */ React11.createElement(ControlSection3, {
|
|
1043
|
+
title: t("space settings label"),
|
|
1044
|
+
description: t("space settings description")
|
|
1045
|
+
}, /* @__PURE__ */ React11.createElement(ControlGroup, null, /* @__PURE__ */ React11.createElement(ControlItemInput2, {
|
|
1046
|
+
title: t("show hidden spaces label")
|
|
1047
|
+
}, /* @__PURE__ */ React11.createElement(Input3.Switch, {
|
|
1048
|
+
checked: settings.showHidden,
|
|
1049
|
+
onCheckedChange: (checked) => settings.showHidden = !!checked
|
|
1050
|
+
}))), /* @__PURE__ */ React11.createElement(List, {
|
|
1051
|
+
classNames: [
|
|
1052
|
+
controlItemClasses2,
|
|
1053
|
+
"flex flex-col gap-trimSm"
|
|
1054
|
+
]
|
|
1055
|
+
}, spaces.map((space) => /* @__PURE__ */ React11.createElement(ListItem.Root, {
|
|
1056
|
+
key: space.id,
|
|
1057
|
+
classNames: "is-full items-center"
|
|
1058
|
+
}, /* @__PURE__ */ React11.createElement(ListItem.Heading, {
|
|
1059
|
+
classNames: "grow truncate !min-bs-0"
|
|
1060
|
+
}, toLocalizedString3(getSpaceDisplayName(space, {
|
|
1061
|
+
personal: space === client.spaces.default
|
|
1062
|
+
}), t)), /* @__PURE__ */ React11.createElement(IconButton3, {
|
|
1063
|
+
icon: "ph--faders--regular",
|
|
1064
|
+
onClick: () => dispatch(createIntent7(SpaceAction.OpenSettings, {
|
|
1065
|
+
space
|
|
1066
|
+
})),
|
|
1067
|
+
label: t("open space settings label")
|
|
1068
|
+
}))))));
|
|
1210
1069
|
} finally {
|
|
1211
1070
|
_effect.f();
|
|
1212
1071
|
}
|
|
1213
1072
|
};
|
|
1214
1073
|
|
|
1215
|
-
// src/components/SpacePresence.tsx
|
|
1216
|
-
import { useSignals as
|
|
1217
|
-
import
|
|
1218
|
-
import
|
|
1219
|
-
import { useAppGraph as useAppGraph2, useCapability } from "@dxos/app-framework";
|
|
1074
|
+
// src/components/SpacePresence/SpacePresence.tsx
|
|
1075
|
+
import { useSignals as _useSignals12 } from "@preact-signals/safe-react/tracking";
|
|
1076
|
+
import * as Option3 from "effect/Option";
|
|
1077
|
+
import React12, { forwardRef, useCallback as useCallback8, useEffect as useEffect3, useState as useState6 } from "react";
|
|
1078
|
+
import { useAppGraph as useAppGraph2, useCapability } from "@dxos/app-framework/react";
|
|
1220
1079
|
import { generateName } from "@dxos/display-name";
|
|
1221
|
-
import {
|
|
1222
|
-
import {
|
|
1080
|
+
import { Obj as Obj5 } from "@dxos/echo";
|
|
1081
|
+
import { PublicKey, useClient as useClient6 } from "@dxos/react-client";
|
|
1082
|
+
import { getSpace as getSpace3, useMembers } from "@dxos/react-client/echo";
|
|
1223
1083
|
import { useIdentity } from "@dxos/react-client/halo";
|
|
1224
|
-
import { Avatar,
|
|
1084
|
+
import { Avatar, List as List2, ListItem as ListItem2, Popover, Tooltip, useDefaultValue as useDefaultValue2, useTranslation as useTranslation12 } from "@dxos/react-ui";
|
|
1225
1085
|
import { AttentionGlyph, useAttended, useAttention } from "@dxos/react-ui-attention";
|
|
1226
1086
|
import { ComplexMap, keyToFallback } from "@dxos/util";
|
|
1087
|
+
|
|
1088
|
+
// src/capabilities/index.ts
|
|
1089
|
+
import { lazy } from "@dxos/app-framework";
|
|
1090
|
+
var AppGraphBuilder = lazy(() => import("./app-graph-builder-USKWFIDK.mjs"));
|
|
1091
|
+
var AppGraphSerializer = lazy(() => import("./app-graph-serializer-SXIQ425K.mjs"));
|
|
1092
|
+
var IdentityCreated = lazy(() => import("./identity-created-NAXTPQXE.mjs"));
|
|
1093
|
+
var IntentResolver = lazy(() => import("./intent-resolver-QEIM7NQT.mjs"));
|
|
1094
|
+
var ReactRoot = lazy(() => import("./react-root-T6ZETLD2.mjs"));
|
|
1095
|
+
var ReactSurface = lazy(() => import("./react-surface-MLN5BZ2G.mjs"));
|
|
1096
|
+
var Repair = lazy(() => import("./repair-CNLE35NF.mjs"));
|
|
1097
|
+
var SpaceSettings = lazy(() => import("./settings-EGTCHS7U.mjs"));
|
|
1098
|
+
var SpaceState = lazy(() => import("./state-C7N6EDDZ.mjs"));
|
|
1099
|
+
var SpacesReady = lazy(() => import("./spaces-ready-YS4BBZXW.mjs"));
|
|
1100
|
+
|
|
1101
|
+
// src/components/SpacePresence/SpacePresence.tsx
|
|
1227
1102
|
var REFRESH_INTERVAL = 5e3;
|
|
1228
1103
|
var ACTIVITY_DURATION = 3e4;
|
|
1229
1104
|
var noViewers = new ComplexMap(PublicKey.hash);
|
|
1230
1105
|
var getName = (identity) => identity.profile?.displayName ?? generateName(identity.identityKey.toHex());
|
|
1231
1106
|
var SpacePresence = ({ object, spaceKey }) => {
|
|
1232
|
-
var _effect =
|
|
1107
|
+
var _effect = _useSignals12();
|
|
1233
1108
|
try {
|
|
1234
1109
|
const spaceState = useCapability(SpaceCapabilities.MutableState);
|
|
1235
|
-
const client =
|
|
1110
|
+
const client = useClient6();
|
|
1236
1111
|
const identity = useIdentity();
|
|
1237
1112
|
const space = spaceKey ? client.spaces.get(spaceKey) : getSpace3(object);
|
|
1238
1113
|
const spaceMembers = useMembers(space?.key);
|
|
1239
|
-
const [_moment, setMoment] =
|
|
1240
|
-
|
|
1114
|
+
const [_moment, setMoment] = useState6(Date.now());
|
|
1115
|
+
useEffect3(() => {
|
|
1241
1116
|
const interval = setInterval(() => setMoment(Date.now()), REFRESH_INTERVAL);
|
|
1242
1117
|
return () => clearInterval(interval);
|
|
1243
1118
|
}, []);
|
|
1244
|
-
const memberOnline =
|
|
1245
|
-
const memberIsNotSelf =
|
|
1119
|
+
const memberOnline = useCallback8((member) => member.presence === 1, []);
|
|
1120
|
+
const memberIsNotSelf = useCallback8((member) => !identity?.identityKey.equals(member.identity.identityKey), [
|
|
1246
1121
|
identity?.identityKey
|
|
1247
1122
|
]);
|
|
1248
1123
|
if (!identity || !spaceState || !space) {
|
|
1249
1124
|
return null;
|
|
1250
1125
|
}
|
|
1251
|
-
const currentObjectViewers = spaceState.viewersByObject[
|
|
1126
|
+
const currentObjectViewers = spaceState.viewersByObject[Obj5.getDXN(object).toString()] ?? noViewers;
|
|
1252
1127
|
const membersForObject = spaceMembers.filter((member) => memberOnline(member) && memberIsNotSelf(member)).filter((member) => currentObjectViewers.has(member.identity.identityKey)).map((member) => {
|
|
1253
1128
|
const objectView = currentObjectViewers.get(member.identity.identityKey);
|
|
1254
1129
|
const lastSeen = objectView?.lastSeen ?? -Infinity;
|
|
@@ -1259,7 +1134,7 @@ var SpacePresence = ({ object, spaceKey }) => {
|
|
|
1259
1134
|
lastSeen
|
|
1260
1135
|
};
|
|
1261
1136
|
}).toSorted((a, b) => a.lastSeen - b.lastSeen);
|
|
1262
|
-
return /* @__PURE__ */
|
|
1137
|
+
return /* @__PURE__ */ React12.createElement(FullPresence, {
|
|
1263
1138
|
members: membersForObject
|
|
1264
1139
|
});
|
|
1265
1140
|
} finally {
|
|
@@ -1267,46 +1142,46 @@ var SpacePresence = ({ object, spaceKey }) => {
|
|
|
1267
1142
|
}
|
|
1268
1143
|
};
|
|
1269
1144
|
var FullPresence = (props) => {
|
|
1270
|
-
var _effect =
|
|
1145
|
+
var _effect = _useSignals12();
|
|
1271
1146
|
try {
|
|
1272
1147
|
const { size = 9, onMemberClick } = props;
|
|
1273
|
-
const members =
|
|
1148
|
+
const members = useDefaultValue2(props.members, () => []);
|
|
1274
1149
|
if (members.length === 0) {
|
|
1275
1150
|
return null;
|
|
1276
1151
|
}
|
|
1277
|
-
return /* @__PURE__ */
|
|
1152
|
+
return /* @__PURE__ */ React12.createElement("div", {
|
|
1278
1153
|
className: "dx-avatar-group",
|
|
1279
1154
|
"data-testid": "spacePlugin.presence"
|
|
1280
|
-
}, members.slice(0, 3).map((member, i) => /* @__PURE__ */
|
|
1155
|
+
}, members.slice(0, 3).map((member, i) => /* @__PURE__ */ React12.createElement(Tooltip.Trigger, {
|
|
1281
1156
|
key: member.identity.identityKey.toHex(),
|
|
1282
1157
|
side: "bottom",
|
|
1283
1158
|
content: getName(member.identity),
|
|
1284
1159
|
className: "grid focus:outline-none"
|
|
1285
|
-
}, /* @__PURE__ */
|
|
1160
|
+
}, /* @__PURE__ */ React12.createElement(PresenceAvatar, {
|
|
1286
1161
|
identity: member.identity,
|
|
1287
1162
|
match: member.currentlyAttended,
|
|
1288
1163
|
index: members.length - i,
|
|
1289
1164
|
onClick: () => onMemberClick?.(member),
|
|
1290
1165
|
size
|
|
1291
|
-
}))), members.length > 3 && /* @__PURE__ */
|
|
1166
|
+
}))), members.length > 3 && /* @__PURE__ */ React12.createElement(Popover.Root, null, /* @__PURE__ */ React12.createElement(Popover.Trigger, {
|
|
1292
1167
|
className: "grid focus:outline-none"
|
|
1293
|
-
}, /* @__PURE__ */
|
|
1168
|
+
}, /* @__PURE__ */ React12.createElement(Avatar.Root, null, /* @__PURE__ */ React12.createElement(Avatar.Content, {
|
|
1294
1169
|
status: "inactive",
|
|
1295
1170
|
style: {
|
|
1296
1171
|
zIndex: members.length - 4
|
|
1297
1172
|
},
|
|
1298
1173
|
fallback: `+${members.length - 3}`,
|
|
1299
1174
|
size
|
|
1300
|
-
}))), /* @__PURE__ */
|
|
1175
|
+
}))), /* @__PURE__ */ React12.createElement(Popover.Portal, null, /* @__PURE__ */ React12.createElement(Popover.Content, {
|
|
1301
1176
|
side: "bottom"
|
|
1302
|
-
}, /* @__PURE__ */
|
|
1177
|
+
}, /* @__PURE__ */ React12.createElement(Popover.Arrow, null), /* @__PURE__ */ React12.createElement(Popover.Viewport, {
|
|
1303
1178
|
classNames: "max-bs-56"
|
|
1304
|
-
}, /* @__PURE__ */
|
|
1179
|
+
}, /* @__PURE__ */ React12.createElement(List2, null, members.map((member) => /* @__PURE__ */ React12.createElement(ListItem2.Root, {
|
|
1305
1180
|
key: member.identity.identityKey.toHex(),
|
|
1306
1181
|
classNames: "flex gap-2 items-center cursor-pointer mbe-2",
|
|
1307
1182
|
onClick: () => onMemberClick?.(member),
|
|
1308
1183
|
"data-testid": "identity-list-item"
|
|
1309
|
-
}, /* @__PURE__ */
|
|
1184
|
+
}, /* @__PURE__ */ React12.createElement(PresenceAvatar, {
|
|
1310
1185
|
identity: member.identity,
|
|
1311
1186
|
size,
|
|
1312
1187
|
showName: true,
|
|
@@ -1316,12 +1191,12 @@ var FullPresence = (props) => {
|
|
|
1316
1191
|
_effect.f();
|
|
1317
1192
|
}
|
|
1318
1193
|
};
|
|
1319
|
-
var PresenceAvatar = /* @__PURE__ */ forwardRef(({ identity, showName, match, index, onClick, size }, forwardedRef) => {
|
|
1320
|
-
var _effect =
|
|
1194
|
+
var PresenceAvatar = /* @__PURE__ */ forwardRef(({ identity, showName, match: match2, index, onClick, size }, forwardedRef) => {
|
|
1195
|
+
var _effect = _useSignals12();
|
|
1321
1196
|
try {
|
|
1322
|
-
const status =
|
|
1197
|
+
const status = match2 ? "current" : "active";
|
|
1323
1198
|
const fallbackValue = keyToFallback(identity.identityKey);
|
|
1324
|
-
return /* @__PURE__ */
|
|
1199
|
+
return /* @__PURE__ */ React12.createElement(Avatar.Root, null, /* @__PURE__ */ React12.createElement(Avatar.Content, {
|
|
1325
1200
|
status,
|
|
1326
1201
|
hue: identity.profile?.data?.hue || fallbackValue.hue,
|
|
1327
1202
|
"data-testid": "spacePlugin.presence.member",
|
|
@@ -1335,7 +1210,7 @@ var PresenceAvatar = /* @__PURE__ */ forwardRef(({ identity, showName, match, in
|
|
|
1335
1210
|
onClick,
|
|
1336
1211
|
fallback: identity.profile?.data?.emoji || fallbackValue.emoji,
|
|
1337
1212
|
ref: forwardedRef
|
|
1338
|
-
}), /* @__PURE__ */
|
|
1213
|
+
}), /* @__PURE__ */ React12.createElement(Avatar.Label, {
|
|
1339
1214
|
classNames: showName ? "text-sm truncate pli-2" : "sr-only"
|
|
1340
1215
|
}, getName(identity)));
|
|
1341
1216
|
} finally {
|
|
@@ -1343,7 +1218,7 @@ var PresenceAvatar = /* @__PURE__ */ forwardRef(({ identity, showName, match, in
|
|
|
1343
1218
|
}
|
|
1344
1219
|
});
|
|
1345
1220
|
var SmallPresenceLive = ({ id, open, viewers }) => {
|
|
1346
|
-
var _effect =
|
|
1221
|
+
var _effect = _useSignals12();
|
|
1347
1222
|
try {
|
|
1348
1223
|
const { hasAttention, isAncestor, isRelated } = useAttention(id);
|
|
1349
1224
|
const isAttended = hasAttention || isAncestor || isRelated;
|
|
@@ -1351,13 +1226,13 @@ var SmallPresenceLive = ({ id, open, viewers }) => {
|
|
|
1351
1226
|
const attended = useAttended();
|
|
1352
1227
|
const startOfAttention = attended.at(-1);
|
|
1353
1228
|
const path = usePath(graph, startOfAttention);
|
|
1354
|
-
const containsAttended = !open && !isAttended && id &&
|
|
1229
|
+
const containsAttended = !open && !isAttended && id && Option3.isSome(path) ? path.value.includes(id) : false;
|
|
1355
1230
|
const getActiveViewers = (viewers2) => {
|
|
1356
1231
|
const moment = Date.now();
|
|
1357
1232
|
return Array.from(viewers2.values()).filter((viewer) => moment - viewer.lastSeen < ACTIVITY_DURATION);
|
|
1358
1233
|
};
|
|
1359
|
-
const [activeViewers, setActiveViewers] =
|
|
1360
|
-
|
|
1234
|
+
const [activeViewers, setActiveViewers] = useState6(viewers ? getActiveViewers(viewers) : []);
|
|
1235
|
+
useEffect3(() => {
|
|
1361
1236
|
if (viewers) {
|
|
1362
1237
|
setActiveViewers(getActiveViewers(viewers));
|
|
1363
1238
|
const interval = setInterval(() => {
|
|
@@ -1368,7 +1243,7 @@ var SmallPresenceLive = ({ id, open, viewers }) => {
|
|
|
1368
1243
|
}, [
|
|
1369
1244
|
viewers
|
|
1370
1245
|
]);
|
|
1371
|
-
return /* @__PURE__ */
|
|
1246
|
+
return /* @__PURE__ */ React12.createElement(SmallPresence, {
|
|
1372
1247
|
count: activeViewers.length,
|
|
1373
1248
|
attended: isAttended,
|
|
1374
1249
|
containsAttended
|
|
@@ -1378,16 +1253,16 @@ var SmallPresenceLive = ({ id, open, viewers }) => {
|
|
|
1378
1253
|
}
|
|
1379
1254
|
};
|
|
1380
1255
|
var SmallPresence = ({ count = 0, attended, containsAttended }) => {
|
|
1381
|
-
var _effect =
|
|
1256
|
+
var _effect = _useSignals12();
|
|
1382
1257
|
try {
|
|
1383
|
-
const { t } =
|
|
1384
|
-
return /* @__PURE__ */
|
|
1258
|
+
const { t } = useTranslation12(meta.id);
|
|
1259
|
+
return /* @__PURE__ */ React12.createElement(Tooltip.Trigger, {
|
|
1385
1260
|
asChild: true,
|
|
1386
1261
|
content: t("presence label", {
|
|
1387
1262
|
count
|
|
1388
1263
|
}),
|
|
1389
1264
|
side: "bottom"
|
|
1390
|
-
}, /* @__PURE__ */
|
|
1265
|
+
}, /* @__PURE__ */ React12.createElement(AttentionGlyph, {
|
|
1391
1266
|
attended,
|
|
1392
1267
|
containsAttended,
|
|
1393
1268
|
presence: count > 1 ? "many" : count === 1 ? "one" : "none",
|
|
@@ -1398,90 +1273,98 @@ var SmallPresence = ({ count = 0, attended, containsAttended }) => {
|
|
|
1398
1273
|
}
|
|
1399
1274
|
};
|
|
1400
1275
|
|
|
1401
|
-
// src/components/
|
|
1402
|
-
import { useSignals as
|
|
1403
|
-
import
|
|
1404
|
-
import {
|
|
1405
|
-
import {
|
|
1406
|
-
import {
|
|
1407
|
-
|
|
1408
|
-
|
|
1409
|
-
var
|
|
1410
|
-
var _effect = _useSignals16();
|
|
1276
|
+
// src/components/SpaceRenamePopover/SpaceRenamePopover.tsx
|
|
1277
|
+
import { useSignals as _useSignals13 } from "@preact-signals/safe-react/tracking";
|
|
1278
|
+
import React13, { useCallback as useCallback9, useRef as useRef4, useState as useState7 } from "react";
|
|
1279
|
+
import { LayoutAction as LayoutAction6, createIntent as createIntent8 } from "@dxos/app-framework";
|
|
1280
|
+
import { useIntentDispatcher as useIntentDispatcher8 } from "@dxos/app-framework/react";
|
|
1281
|
+
import { Button as Button4, Input as Input4, Popover as Popover2, useTranslation as useTranslation13 } from "@dxos/react-ui";
|
|
1282
|
+
var SPACE_RENAME_POPOVER = `${meta.id}/SpaceRenamePopover`;
|
|
1283
|
+
var SpaceRenamePopover = ({ space }) => {
|
|
1284
|
+
var _effect = _useSignals13();
|
|
1411
1285
|
try {
|
|
1412
|
-
const { t } =
|
|
1413
|
-
const
|
|
1414
|
-
const
|
|
1415
|
-
all: settings.showHidden
|
|
1416
|
-
});
|
|
1286
|
+
const { t } = useTranslation13(meta.id);
|
|
1287
|
+
const doneButton = useRef4(null);
|
|
1288
|
+
const [name, setName] = useState7(space.properties.name ?? "");
|
|
1417
1289
|
const { dispatchPromise: dispatch } = useIntentDispatcher8();
|
|
1418
|
-
|
|
1419
|
-
|
|
1420
|
-
|
|
1421
|
-
|
|
1422
|
-
|
|
1423
|
-
|
|
1424
|
-
|
|
1425
|
-
|
|
1426
|
-
|
|
1427
|
-
|
|
1428
|
-
}
|
|
1429
|
-
|
|
1430
|
-
|
|
1431
|
-
|
|
1432
|
-
|
|
1433
|
-
|
|
1434
|
-
|
|
1435
|
-
|
|
1436
|
-
|
|
1437
|
-
|
|
1438
|
-
},
|
|
1439
|
-
|
|
1440
|
-
}
|
|
1441
|
-
|
|
1442
|
-
|
|
1443
|
-
|
|
1444
|
-
|
|
1445
|
-
|
|
1446
|
-
|
|
1290
|
+
const handleDone = useCallback9(() => {
|
|
1291
|
+
space.properties.name = name;
|
|
1292
|
+
void dispatch(createIntent8(LayoutAction6.UpdatePopover, {
|
|
1293
|
+
part: "popover",
|
|
1294
|
+
options: {
|
|
1295
|
+
variant: "react",
|
|
1296
|
+
anchorId: "",
|
|
1297
|
+
state: false
|
|
1298
|
+
}
|
|
1299
|
+
}));
|
|
1300
|
+
}, [
|
|
1301
|
+
space,
|
|
1302
|
+
name
|
|
1303
|
+
]);
|
|
1304
|
+
return /* @__PURE__ */ React13.createElement("div", {
|
|
1305
|
+
role: "none",
|
|
1306
|
+
className: "p-2 flex gap-2"
|
|
1307
|
+
}, /* @__PURE__ */ React13.createElement("div", {
|
|
1308
|
+
role: "none",
|
|
1309
|
+
className: "flex-1"
|
|
1310
|
+
}, /* @__PURE__ */ React13.createElement(Input4.Root, null, /* @__PURE__ */ React13.createElement(Input4.Label, {
|
|
1311
|
+
srOnly: true
|
|
1312
|
+
}, t("space name label")), /* @__PURE__ */ React13.createElement(Input4.TextInput, {
|
|
1313
|
+
defaultValue: space.properties.name ?? "",
|
|
1314
|
+
placeholder: t("unnamed space label"),
|
|
1315
|
+
onChange: ({ target: { value: value2 } }) => setName(value2),
|
|
1316
|
+
// TODO(wittjosiah): Ideally this should access the popover context to close the popover.
|
|
1317
|
+
// Currently this is not possible because Radix does not expose the popover context.
|
|
1318
|
+
onKeyDown: ({ key }) => key === "Enter" && doneButton.current?.click()
|
|
1319
|
+
}))), /* @__PURE__ */ React13.createElement(Popover2.Close, {
|
|
1320
|
+
asChild: true
|
|
1321
|
+
}, /* @__PURE__ */ React13.createElement(Button4, {
|
|
1322
|
+
ref: doneButton,
|
|
1323
|
+
classNames: "self-stretch",
|
|
1324
|
+
onClick: handleDone
|
|
1325
|
+
}, t("done label", {
|
|
1326
|
+
ns: "os"
|
|
1327
|
+
}))));
|
|
1447
1328
|
} finally {
|
|
1448
1329
|
_effect.f();
|
|
1449
1330
|
}
|
|
1450
1331
|
};
|
|
1451
1332
|
|
|
1452
1333
|
// src/components/SpaceSettings/SpaceSettingsContainer.tsx
|
|
1453
|
-
import { useSignals as
|
|
1454
|
-
import
|
|
1455
|
-
import
|
|
1456
|
-
import {
|
|
1334
|
+
import { useSignals as _useSignals14 } from "@preact-signals/safe-react/tracking";
|
|
1335
|
+
import * as Function3 from "effect/Function";
|
|
1336
|
+
import * as Schema from "effect/Schema";
|
|
1337
|
+
import React14, { forwardRef as forwardRef2, useCallback as useCallback10, useMemo as useMemo3, useState as useState8 } from "react";
|
|
1338
|
+
import { LayoutAction as LayoutAction7, chain as chain2, createIntent as createIntent9 } from "@dxos/app-framework";
|
|
1339
|
+
import { useCapabilities, useIntentDispatcher as useIntentDispatcher9 } from "@dxos/app-framework/react";
|
|
1457
1340
|
import { log as log3 } from "@dxos/log";
|
|
1458
1341
|
import { EdgeReplicationSetting } from "@dxos/protocols/proto/dxos/echo/metadata";
|
|
1459
1342
|
import { useClient as useClient7 } from "@dxos/react-client";
|
|
1460
1343
|
import { SpaceState as SpaceState2 } from "@dxos/react-client/echo";
|
|
1461
|
-
import { Button as
|
|
1462
|
-
import {
|
|
1344
|
+
import { Button as Button5, Input as Input5, useFileDownload, useMulticastObservable, useTranslation as useTranslation14 } from "@dxos/react-ui";
|
|
1345
|
+
import { ControlItem, ControlItemInput as ControlItemInput3, ControlPage as ControlPage4, ControlSection as ControlSection4, Form as Form3 } from "@dxos/react-ui-form";
|
|
1463
1346
|
import { HuePicker, IconPicker } from "@dxos/react-ui-pickers";
|
|
1464
|
-
import { StackItem as
|
|
1347
|
+
import { StackItem as StackItem3 } from "@dxos/react-ui-stack";
|
|
1465
1348
|
var __dxlog_file4 = "/__w/dxos/dxos/packages/plugins/plugin-space/src/components/SpaceSettings/SpaceSettingsContainer.tsx";
|
|
1466
|
-
var
|
|
1349
|
+
var SpaceFormSchema = SpaceForm.pipe(Schema.extend(Schema.Struct({
|
|
1467
1350
|
archived: Schema.Boolean.annotations({
|
|
1468
|
-
title: "Archive
|
|
1351
|
+
title: "Archive Space"
|
|
1469
1352
|
})
|
|
1470
1353
|
})));
|
|
1471
|
-
var SpaceSettingsContainer = ({ space }) => {
|
|
1472
|
-
var _effect =
|
|
1354
|
+
var SpaceSettingsContainer = /* @__PURE__ */ forwardRef2(({ space }, forwardedRef) => {
|
|
1355
|
+
var _effect = _useSignals14();
|
|
1473
1356
|
try {
|
|
1474
|
-
const { t } =
|
|
1357
|
+
const { t } = useTranslation14(meta.id);
|
|
1475
1358
|
const { dispatchPromise: dispatch } = useIntentDispatcher9();
|
|
1476
1359
|
const client = useClient7();
|
|
1477
1360
|
const archived = useMulticastObservable(space.state) === SpaceState2.SPACE_INACTIVE;
|
|
1478
|
-
const [edgeReplication, setEdgeReplication] =
|
|
1361
|
+
const [edgeReplication, setEdgeReplication] = useState8(space.internal.data.edgeReplication === EdgeReplicationSetting.ENABLED);
|
|
1479
1362
|
const toggleEdgeReplication = useCallback10(async (next) => {
|
|
1480
1363
|
setEdgeReplication(next);
|
|
1481
1364
|
await space?.internal.setEdgeReplicationPreference(next ? EdgeReplicationSetting.ENABLED : EdgeReplicationSetting.DISABLED).catch((err) => {
|
|
1482
1365
|
log3.catch(err, void 0, {
|
|
1483
1366
|
F: __dxlog_file4,
|
|
1484
|
-
L:
|
|
1367
|
+
L: 59,
|
|
1485
1368
|
S: void 0,
|
|
1486
1369
|
C: (f, a) => f(...a)
|
|
1487
1370
|
});
|
|
@@ -1491,7 +1374,7 @@ var SpaceSettingsContainer = ({ space }) => {
|
|
|
1491
1374
|
space
|
|
1492
1375
|
]);
|
|
1493
1376
|
const handleSave = useCallback10((properties) => {
|
|
1494
|
-
void toggleEdgeReplication(properties.edgeReplication);
|
|
1377
|
+
void toggleEdgeReplication(properties.edgeReplication ?? false);
|
|
1495
1378
|
if (properties.name !== space.properties.name) {
|
|
1496
1379
|
space.properties.name = properties.name;
|
|
1497
1380
|
}
|
|
@@ -1502,7 +1385,7 @@ var SpaceSettingsContainer = ({ space }) => {
|
|
|
1502
1385
|
space.properties.hue = properties.hue;
|
|
1503
1386
|
}
|
|
1504
1387
|
if (properties.archived && !archived) {
|
|
1505
|
-
void dispatch(
|
|
1388
|
+
void dispatch(Function3.pipe(createIntent9(SpaceAction.Close, {
|
|
1506
1389
|
space
|
|
1507
1390
|
}), chain2(LayoutAction7.SwitchWorkspace, {
|
|
1508
1391
|
part: "workspace",
|
|
@@ -1531,16 +1414,16 @@ var SpaceSettingsContainer = ({ space }) => {
|
|
|
1531
1414
|
edgeReplication,
|
|
1532
1415
|
archived
|
|
1533
1416
|
]);
|
|
1534
|
-
const
|
|
1417
|
+
const fieldMap = useMemo3(() => ({
|
|
1535
1418
|
name: ({ type, label, getValue, onValueChange }) => {
|
|
1536
|
-
const handleChange = useCallback10(({ target: { value } }) => onValueChange(type,
|
|
1419
|
+
const handleChange = useCallback10(({ target: { value: value2 } }) => onValueChange(type, value2), [
|
|
1537
1420
|
onValueChange,
|
|
1538
1421
|
type
|
|
1539
1422
|
]);
|
|
1540
|
-
return /* @__PURE__ */
|
|
1423
|
+
return /* @__PURE__ */ React14.createElement(ControlItemInput3, {
|
|
1541
1424
|
title: label,
|
|
1542
1425
|
description: t("display name description")
|
|
1543
|
-
}, /* @__PURE__ */
|
|
1426
|
+
}, /* @__PURE__ */ React14.createElement(Input5.TextInput, {
|
|
1544
1427
|
value: getValue(),
|
|
1545
1428
|
onChange: handleChange,
|
|
1546
1429
|
placeholder: t("display name input placeholder"),
|
|
@@ -1548,23 +1431,22 @@ var SpaceSettingsContainer = ({ space }) => {
|
|
|
1548
1431
|
}));
|
|
1549
1432
|
},
|
|
1550
1433
|
icon: ({ type, label, getValue, onValueChange }) => {
|
|
1551
|
-
const handleChange = useCallback10((
|
|
1434
|
+
const handleChange = useCallback10((icon) => onValueChange(type, icon), [
|
|
1552
1435
|
onValueChange,
|
|
1553
1436
|
type
|
|
1554
1437
|
]);
|
|
1555
|
-
const
|
|
1438
|
+
const handleReset = useCallback10(() => onValueChange(type, void 0), [
|
|
1556
1439
|
onValueChange,
|
|
1557
1440
|
type
|
|
1558
1441
|
]);
|
|
1559
|
-
return /* @__PURE__ */
|
|
1442
|
+
return /* @__PURE__ */ React14.createElement(ControlItem, {
|
|
1560
1443
|
title: label,
|
|
1561
1444
|
description: t("icon description")
|
|
1562
|
-
}, /* @__PURE__ */
|
|
1445
|
+
}, /* @__PURE__ */ React14.createElement(IconPicker, {
|
|
1563
1446
|
value: getValue(),
|
|
1564
1447
|
onChange: handleChange,
|
|
1565
|
-
onReset:
|
|
1566
|
-
classNames: "justify-self-end"
|
|
1567
|
-
iconSize: 5
|
|
1448
|
+
onReset: handleReset,
|
|
1449
|
+
classNames: "justify-self-end"
|
|
1568
1450
|
}));
|
|
1569
1451
|
},
|
|
1570
1452
|
hue: ({ type, label, getValue, onValueChange }) => {
|
|
@@ -1572,18 +1454,18 @@ var SpaceSettingsContainer = ({ space }) => {
|
|
|
1572
1454
|
onValueChange,
|
|
1573
1455
|
type
|
|
1574
1456
|
]);
|
|
1575
|
-
const
|
|
1457
|
+
const handleReset = useCallback10(() => onValueChange(type, void 0), [
|
|
1576
1458
|
onValueChange,
|
|
1577
1459
|
type
|
|
1578
1460
|
]);
|
|
1579
|
-
return /* @__PURE__ */
|
|
1461
|
+
return /* @__PURE__ */ React14.createElement(ControlItem, {
|
|
1580
1462
|
title: label,
|
|
1581
1463
|
description: t("hue description")
|
|
1582
|
-
}, /* @__PURE__ */
|
|
1464
|
+
}, /* @__PURE__ */ React14.createElement(HuePicker, {
|
|
1583
1465
|
value: getValue(),
|
|
1584
1466
|
onChange: handleChange,
|
|
1585
|
-
onReset:
|
|
1586
|
-
classNames: "
|
|
1467
|
+
onReset: handleReset,
|
|
1468
|
+
classNames: "justify-self-end"
|
|
1587
1469
|
}));
|
|
1588
1470
|
},
|
|
1589
1471
|
edgeReplication: ({ type, label, getValue, onValueChange }) => {
|
|
@@ -1591,10 +1473,10 @@ var SpaceSettingsContainer = ({ space }) => {
|
|
|
1591
1473
|
onValueChange,
|
|
1592
1474
|
type
|
|
1593
1475
|
]);
|
|
1594
|
-
return /* @__PURE__ */
|
|
1476
|
+
return /* @__PURE__ */ React14.createElement(ControlItemInput3, {
|
|
1595
1477
|
title: label,
|
|
1596
1478
|
description: t("edge replication description")
|
|
1597
|
-
}, /* @__PURE__ */
|
|
1479
|
+
}, /* @__PURE__ */ React14.createElement(Input5.Switch, {
|
|
1598
1480
|
checked: getValue(),
|
|
1599
1481
|
onCheckedChange: handleChange,
|
|
1600
1482
|
classNames: "justify-self-end"
|
|
@@ -1606,11 +1488,12 @@ var SpaceSettingsContainer = ({ space }) => {
|
|
|
1606
1488
|
type,
|
|
1607
1489
|
getValue
|
|
1608
1490
|
]);
|
|
1609
|
-
return /* @__PURE__ */
|
|
1491
|
+
return /* @__PURE__ */ React14.createElement(ControlItemInput3, {
|
|
1610
1492
|
title: label,
|
|
1611
1493
|
description: t("archive space description")
|
|
1612
|
-
}, /* @__PURE__ */
|
|
1494
|
+
}, /* @__PURE__ */ React14.createElement(Button5, {
|
|
1613
1495
|
disabled: space === client.spaces.default,
|
|
1496
|
+
variant: getValue() ? "default" : "destructive",
|
|
1614
1497
|
onClick: handleChange
|
|
1615
1498
|
}, getValue() ? t("unarchive space label") : t("archive space label")));
|
|
1616
1499
|
}
|
|
@@ -1618,46 +1501,81 @@ var SpaceSettingsContainer = ({ space }) => {
|
|
|
1618
1501
|
t,
|
|
1619
1502
|
space
|
|
1620
1503
|
]);
|
|
1621
|
-
|
|
1622
|
-
|
|
1623
|
-
|
|
1624
|
-
|
|
1625
|
-
|
|
1626
|
-
|
|
1504
|
+
const download = useFileDownload();
|
|
1505
|
+
const handleBackup = useCallback10(async () => {
|
|
1506
|
+
const archive = await space.internal.export();
|
|
1507
|
+
download(new Blob([
|
|
1508
|
+
archive.contents
|
|
1509
|
+
]), archive.filename);
|
|
1510
|
+
}, [
|
|
1511
|
+
space,
|
|
1512
|
+
download
|
|
1513
|
+
]);
|
|
1514
|
+
const repairs = useCapabilities(SpaceCapabilities.Repair);
|
|
1515
|
+
const handleRepair = useCallback10(async () => {
|
|
1516
|
+
await Promise.all(repairs.map((repair) => repair({
|
|
1517
|
+
space,
|
|
1518
|
+
isDefault: client.spaces.default === space
|
|
1519
|
+
})));
|
|
1520
|
+
}, [
|
|
1521
|
+
client,
|
|
1522
|
+
space,
|
|
1523
|
+
repairs
|
|
1524
|
+
]);
|
|
1525
|
+
return /* @__PURE__ */ React14.createElement(StackItem3.Content, {
|
|
1526
|
+
scrollable: true,
|
|
1527
|
+
ref: forwardedRef
|
|
1528
|
+
}, /* @__PURE__ */ React14.createElement(ControlPage4, null, /* @__PURE__ */ React14.createElement(ControlSection4, {
|
|
1529
|
+
title: t("space properties settings verbose label"),
|
|
1627
1530
|
description: t("space properties settings description", {
|
|
1628
|
-
ns:
|
|
1531
|
+
ns: meta.id
|
|
1629
1532
|
})
|
|
1630
|
-
}, /* @__PURE__ */
|
|
1631
|
-
|
|
1533
|
+
}, /* @__PURE__ */ React14.createElement(Form3.Root, {
|
|
1534
|
+
fieldMap,
|
|
1535
|
+
schema: SpaceFormSchema,
|
|
1632
1536
|
values,
|
|
1633
1537
|
autoSave: true,
|
|
1634
|
-
onSave: handleSave
|
|
1635
|
-
|
|
1636
|
-
|
|
1637
|
-
|
|
1638
|
-
}
|
|
1538
|
+
onSave: handleSave
|
|
1539
|
+
}, /* @__PURE__ */ React14.createElement(Form3.FieldSet, null))), /* @__PURE__ */ React14.createElement(ControlSection4, {
|
|
1540
|
+
title: t("space controls title"),
|
|
1541
|
+
description: t("space controls description")
|
|
1542
|
+
}, /* @__PURE__ */ React14.createElement("div", {
|
|
1543
|
+
role: "none",
|
|
1544
|
+
className: "container-max-width grid grid-cols-1 md:grid-cols-[1fr_min-content]"
|
|
1545
|
+
}, /* @__PURE__ */ React14.createElement(ControlItemInput3, {
|
|
1546
|
+
title: t("backup space title"),
|
|
1547
|
+
description: t("backup space description")
|
|
1548
|
+
}, /* @__PURE__ */ React14.createElement(Button5, {
|
|
1549
|
+
onClick: handleBackup
|
|
1550
|
+
}, t("download backup label"))), /* @__PURE__ */ React14.createElement(ControlItemInput3, {
|
|
1551
|
+
title: t("repair space title"),
|
|
1552
|
+
description: t("repair space description")
|
|
1553
|
+
}, /* @__PURE__ */ React14.createElement(Button5, {
|
|
1554
|
+
onClick: handleRepair
|
|
1555
|
+
}, t("repair space label")))))));
|
|
1639
1556
|
} finally {
|
|
1640
1557
|
_effect.f();
|
|
1641
1558
|
}
|
|
1642
|
-
};
|
|
1559
|
+
});
|
|
1560
|
+
SpaceSettingsContainer.displayName = "SpaceSettingsContainer";
|
|
1643
1561
|
|
|
1644
1562
|
// src/components/SyncStatus/InlineSyncStatus.tsx
|
|
1645
|
-
import { useSignals as
|
|
1646
|
-
import
|
|
1647
|
-
import
|
|
1648
|
-
import { useAppGraph as useAppGraph3 } from "@dxos/app-framework";
|
|
1563
|
+
import { useSignals as _useSignals15 } from "@preact-signals/safe-react/tracking";
|
|
1564
|
+
import * as Option4 from "effect/Option";
|
|
1565
|
+
import React15, { useEffect as useEffect4, useState as useState9 } from "react";
|
|
1566
|
+
import { useAppGraph as useAppGraph3 } from "@dxos/app-framework/react";
|
|
1649
1567
|
import { EdgeStatus } from "@dxos/protocols/proto/dxos/client/services";
|
|
1650
1568
|
import { EdgeReplicationSetting as EdgeReplicationSetting2 } from "@dxos/protocols/proto/dxos/echo/metadata";
|
|
1651
1569
|
import { useClient as useClient8 } from "@dxos/react-client";
|
|
1652
1570
|
import { useSpaceSyncState } from "@dxos/react-client/echo";
|
|
1653
|
-
import { Tooltip as
|
|
1571
|
+
import { Tooltip as Tooltip2, useTranslation as useTranslation15 } from "@dxos/react-ui";
|
|
1654
1572
|
import { AttentionGlyph as AttentionGlyph2, useAttended as useAttended2, useAttention as useAttention2 } from "@dxos/react-ui-attention";
|
|
1655
1573
|
var useEdgeStatus = () => {
|
|
1656
|
-
const [status, setStatus] =
|
|
1574
|
+
const [status, setStatus] = useState9(EdgeStatus.ConnectionState.NOT_CONNECTED);
|
|
1657
1575
|
const client = useClient8();
|
|
1658
|
-
|
|
1576
|
+
useEffect4(() => {
|
|
1659
1577
|
client.services.services.EdgeAgentService?.queryEdgeStatus().subscribe(({ status: status2 }) => {
|
|
1660
|
-
setStatus(status2);
|
|
1578
|
+
setStatus(status2.state);
|
|
1661
1579
|
});
|
|
1662
1580
|
}, [
|
|
1663
1581
|
client
|
|
@@ -1665,9 +1583,9 @@ var useEdgeStatus = () => {
|
|
|
1665
1583
|
return status;
|
|
1666
1584
|
};
|
|
1667
1585
|
var InlineSyncStatus = ({ space, open }) => {
|
|
1668
|
-
var _effect =
|
|
1586
|
+
var _effect = _useSignals15();
|
|
1669
1587
|
try {
|
|
1670
|
-
const { t } =
|
|
1588
|
+
const { t } = useTranslation15(meta.id);
|
|
1671
1589
|
const id = space.id;
|
|
1672
1590
|
const { hasAttention, isAncestor, isRelated } = useAttention2(id);
|
|
1673
1591
|
const isAttended = hasAttention || isAncestor || isRelated;
|
|
@@ -1675,16 +1593,16 @@ var InlineSyncStatus = ({ space, open }) => {
|
|
|
1675
1593
|
const attended = useAttended2();
|
|
1676
1594
|
const startOfAttention = attended.at(-1);
|
|
1677
1595
|
const path = usePath(graph, startOfAttention);
|
|
1678
|
-
const containsAttended = !open && !isAttended && id &&
|
|
1679
|
-
const connectedToEdge = useEdgeStatus() === EdgeStatus.CONNECTED;
|
|
1596
|
+
const containsAttended = !open && !isAttended && id && Option4.isSome(path) ? path.value.includes(id) : false;
|
|
1597
|
+
const connectedToEdge = useEdgeStatus() === EdgeStatus.ConnectionState.CONNECTED;
|
|
1680
1598
|
const edgeSyncEnabled = space.internal.data.edgeReplication === EdgeReplicationSetting2.ENABLED;
|
|
1681
1599
|
const syncState = useSpaceSyncState(space);
|
|
1682
1600
|
const syncing = connectedToEdge && edgeSyncEnabled && syncState && syncState.missingOnLocal > 0;
|
|
1683
|
-
return /* @__PURE__ */
|
|
1601
|
+
return /* @__PURE__ */ React15.createElement(Tooltip2.Trigger, {
|
|
1684
1602
|
asChild: true,
|
|
1685
1603
|
content: t("syncing label"),
|
|
1686
1604
|
side: "bottom"
|
|
1687
|
-
}, /* @__PURE__ */
|
|
1605
|
+
}, /* @__PURE__ */ React15.createElement(AttentionGlyph2, {
|
|
1688
1606
|
syncing,
|
|
1689
1607
|
attended: isAttended,
|
|
1690
1608
|
containsAttended,
|
|
@@ -1696,12 +1614,16 @@ var InlineSyncStatus = ({ space, open }) => {
|
|
|
1696
1614
|
};
|
|
1697
1615
|
|
|
1698
1616
|
// src/components/SyncStatus/SyncStatus.tsx
|
|
1699
|
-
import { useSignals as
|
|
1700
|
-
import
|
|
1617
|
+
import { useSignals as _useSignals16 } from "@preact-signals/safe-react/tracking";
|
|
1618
|
+
import React16, { useEffect as useEffect5, useState as useState10 } from "react";
|
|
1701
1619
|
import { StatusBar } from "@dxos/plugin-status-bar";
|
|
1620
|
+
import { EdgeStatus as EdgeStatus2 } from "@dxos/protocols/proto/dxos/client/services";
|
|
1702
1621
|
import { useClient as useClient9 } from "@dxos/react-client";
|
|
1622
|
+
import { useStream } from "@dxos/react-client/devtools";
|
|
1703
1623
|
import { getSyncSummary, useSyncState } from "@dxos/react-client/echo";
|
|
1704
|
-
import { Icon as
|
|
1624
|
+
import { Icon as Icon5, Popover as Popover3, useTranslation as useTranslation16 } from "@dxos/react-ui";
|
|
1625
|
+
import { mx } from "@dxos/react-ui-theme";
|
|
1626
|
+
import { Unit } from "@dxos/util";
|
|
1705
1627
|
|
|
1706
1628
|
// src/components/SyncStatus/save-tracker.ts
|
|
1707
1629
|
import { Context } from "@dxos/context";
|
|
@@ -1797,17 +1719,13 @@ var getIcon = (status) => {
|
|
|
1797
1719
|
// src/components/SyncStatus/SyncStatus.tsx
|
|
1798
1720
|
var SYNC_STALLED_TIMEOUT = 5e3;
|
|
1799
1721
|
var SyncStatus = () => {
|
|
1800
|
-
var _effect =
|
|
1722
|
+
var _effect = _useSignals16();
|
|
1801
1723
|
try {
|
|
1802
1724
|
const client = useClient9();
|
|
1803
1725
|
const state = useSyncState();
|
|
1804
|
-
const [saved, setSaved] =
|
|
1805
|
-
|
|
1806
|
-
|
|
1807
|
-
setSaved(state2 === "saved");
|
|
1808
|
-
});
|
|
1809
|
-
}, []);
|
|
1810
|
-
return /* @__PURE__ */ React19.createElement(SyncStatusIndicator, {
|
|
1726
|
+
const [saved, setSaved] = useState10(true);
|
|
1727
|
+
useEffect5(() => createClientSaveTracker(client, (state2) => setSaved(state2 === "saved")), []);
|
|
1728
|
+
return /* @__PURE__ */ React16.createElement(SyncStatusIndicator, {
|
|
1811
1729
|
state,
|
|
1812
1730
|
saved
|
|
1813
1731
|
});
|
|
@@ -1816,9 +1734,9 @@ var SyncStatus = () => {
|
|
|
1816
1734
|
}
|
|
1817
1735
|
};
|
|
1818
1736
|
var SyncStatusIndicator = ({ state, saved }) => {
|
|
1819
|
-
var _effect =
|
|
1737
|
+
var _effect = _useSignals16();
|
|
1820
1738
|
try {
|
|
1821
|
-
const { t } =
|
|
1739
|
+
const { t } = useTranslation16(meta.id);
|
|
1822
1740
|
const summary = getSyncSummary(state);
|
|
1823
1741
|
const offline = Object.values(state).length === 0;
|
|
1824
1742
|
const needsToUpload = summary.differentDocuments > 0 || summary.missingOnRemote > 0;
|
|
@@ -1829,8 +1747,8 @@ var SyncStatusIndicator = ({ state, saved }) => {
|
|
|
1829
1747
|
needsToUpload,
|
|
1830
1748
|
needsToDownload
|
|
1831
1749
|
});
|
|
1832
|
-
const [classNames, setClassNames] =
|
|
1833
|
-
|
|
1750
|
+
const [classNames, setClassNames] = useState10();
|
|
1751
|
+
useEffect5(() => {
|
|
1834
1752
|
setClassNames(void 0);
|
|
1835
1753
|
if (offline || !needsToUpload && !needsToDownload) {
|
|
1836
1754
|
return;
|
|
@@ -1845,67 +1763,262 @@ var SyncStatusIndicator = ({ state, saved }) => {
|
|
|
1845
1763
|
needsToDownload
|
|
1846
1764
|
]);
|
|
1847
1765
|
const title = t(`${status} label`);
|
|
1848
|
-
const icon = /* @__PURE__ */
|
|
1766
|
+
const icon = /* @__PURE__ */ React16.createElement(Icon5, {
|
|
1849
1767
|
icon: getIcon(status),
|
|
1850
|
-
size: 4,
|
|
1851
1768
|
classNames
|
|
1852
1769
|
});
|
|
1853
|
-
return /* @__PURE__ */
|
|
1770
|
+
return /* @__PURE__ */ React16.createElement(Popover3.Root, null, /* @__PURE__ */ React16.createElement(Popover3.Trigger, {
|
|
1771
|
+
asChild: true
|
|
1772
|
+
}, /* @__PURE__ */ React16.createElement(StatusBar.Item, {
|
|
1854
1773
|
title
|
|
1855
|
-
}, icon);
|
|
1774
|
+
}, icon)), /* @__PURE__ */ React16.createElement(Popover3.Portal, null, /* @__PURE__ */ React16.createElement(Popover3.Content, null, /* @__PURE__ */ React16.createElement(EdgeConnectionPopover, null), /* @__PURE__ */ React16.createElement(Popover3.Arrow, null))));
|
|
1775
|
+
} finally {
|
|
1776
|
+
_effect.f();
|
|
1777
|
+
}
|
|
1778
|
+
};
|
|
1779
|
+
var useEdgeStatus2 = () => {
|
|
1780
|
+
const client = useClient9();
|
|
1781
|
+
const { status } = useStream(() => client.services.services.EdgeAgentService.queryEdgeStatus(), {});
|
|
1782
|
+
return status;
|
|
1783
|
+
};
|
|
1784
|
+
var EdgeConnectionPopover = () => {
|
|
1785
|
+
var _effect = _useSignals16();
|
|
1786
|
+
try {
|
|
1787
|
+
const status = useEdgeStatus2();
|
|
1788
|
+
const { t } = useTranslation16(meta.id);
|
|
1789
|
+
const isConnected = status?.state === EdgeStatus2.ConnectionState.CONNECTED;
|
|
1790
|
+
return /* @__PURE__ */ React16.createElement("div", {
|
|
1791
|
+
className: "min-is-[240px] p-2"
|
|
1792
|
+
}, /* @__PURE__ */ React16.createElement("div", {
|
|
1793
|
+
className: "flex items-center gap-2 mbe-2"
|
|
1794
|
+
}, /* @__PURE__ */ React16.createElement(Icon5, {
|
|
1795
|
+
icon: isConnected ? "ph--check-circle--regular" : "ph--warning-circle--regular",
|
|
1796
|
+
classNames: mx(isConnected ? "text-successText" : "text-errorText animate-pulse")
|
|
1797
|
+
}), /* @__PURE__ */ React16.createElement("span", {
|
|
1798
|
+
className: "font-medium text-sm"
|
|
1799
|
+
}, isConnected ? t("sync edge connected label") : t("sync edge disconnected label"))), status?.state === EdgeStatus2.ConnectionState.NOT_CONNECTED && /* @__PURE__ */ React16.createElement("div", {
|
|
1800
|
+
className: "flex items-center gap-2 text-sm text-description"
|
|
1801
|
+
}, /* @__PURE__ */ React16.createElement(Icon5, {
|
|
1802
|
+
icon: "ph--cloud-x--regular"
|
|
1803
|
+
}), /* @__PURE__ */ React16.createElement("span", null, t("sync no connection label"))), status?.state === EdgeStatus2.ConnectionState.CONNECTED && /* @__PURE__ */ React16.createElement("div", {
|
|
1804
|
+
className: "space-y-2"
|
|
1805
|
+
}, /* @__PURE__ */ React16.createElement("div", {
|
|
1806
|
+
className: "flex items-center justify-between text-sm"
|
|
1807
|
+
}, /* @__PURE__ */ React16.createElement("div", {
|
|
1808
|
+
className: "flex items-center gap-2 text-description"
|
|
1809
|
+
}, /* @__PURE__ */ React16.createElement(Icon5, {
|
|
1810
|
+
icon: "ph--timer--regular"
|
|
1811
|
+
}), /* @__PURE__ */ React16.createElement("span", null, t("sync latency label"))), /* @__PURE__ */ React16.createElement(UnitValue, {
|
|
1812
|
+
value: status.rtt,
|
|
1813
|
+
format: Unit.Millisecond
|
|
1814
|
+
})), /* @__PURE__ */ React16.createElement("div", {
|
|
1815
|
+
className: "flex items-center justify-between text-sm"
|
|
1816
|
+
}, /* @__PURE__ */ React16.createElement("div", {
|
|
1817
|
+
className: "flex items-center gap-2 text-description"
|
|
1818
|
+
}, /* @__PURE__ */ React16.createElement(Icon5, {
|
|
1819
|
+
icon: "ph--arrow-up--regular"
|
|
1820
|
+
}), /* @__PURE__ */ React16.createElement("span", null, t("sync upload label"))), /* @__PURE__ */ React16.createElement(UnitValue, {
|
|
1821
|
+
value: status.rateBytesUp,
|
|
1822
|
+
format: Unit.Kilobyte,
|
|
1823
|
+
suffix: "/s"
|
|
1824
|
+
})), /* @__PURE__ */ React16.createElement("div", {
|
|
1825
|
+
className: "flex items-center justify-between text-sm"
|
|
1826
|
+
}, /* @__PURE__ */ React16.createElement("div", {
|
|
1827
|
+
className: "flex items-center gap-2 text-sm text-description"
|
|
1828
|
+
}, /* @__PURE__ */ React16.createElement(Icon5, {
|
|
1829
|
+
icon: "ph--arrow-down--regular"
|
|
1830
|
+
}), /* @__PURE__ */ React16.createElement("span", null, t("sync download label"))), /* @__PURE__ */ React16.createElement(UnitValue, {
|
|
1831
|
+
value: status.rateBytesDown,
|
|
1832
|
+
format: Unit.Kilobyte,
|
|
1833
|
+
suffix: "/s"
|
|
1834
|
+
}))));
|
|
1835
|
+
} finally {
|
|
1836
|
+
_effect.f();
|
|
1837
|
+
}
|
|
1838
|
+
};
|
|
1839
|
+
var UnitValue = ({ value: input, format, suffix }) => {
|
|
1840
|
+
var _effect = _useSignals16();
|
|
1841
|
+
try {
|
|
1842
|
+
const { formattedValue, unit } = format(input);
|
|
1843
|
+
return /* @__PURE__ */ React16.createElement("span", {
|
|
1844
|
+
className: "font-mono"
|
|
1845
|
+
}, formattedValue, /* @__PURE__ */ React16.createElement("span", {
|
|
1846
|
+
className: "mis-1 text-subdued"
|
|
1847
|
+
}, unit.symbol, suffix));
|
|
1856
1848
|
} finally {
|
|
1857
1849
|
_effect.f();
|
|
1858
1850
|
}
|
|
1859
1851
|
};
|
|
1860
1852
|
|
|
1853
|
+
// src/helpers/query.ts
|
|
1854
|
+
import * as Array2 from "effect/Array";
|
|
1855
|
+
import * as Effect3 from "effect/Effect";
|
|
1856
|
+
import * as EffectFunction from "effect/Function";
|
|
1857
|
+
import * as Match from "effect/Match";
|
|
1858
|
+
import * as Option5 from "effect/Option";
|
|
1859
|
+
import * as SchemaAST from "effect/SchemaAST";
|
|
1860
|
+
import { DXN, Filter as Filter2, Query } from "@dxos/echo";
|
|
1861
|
+
import { ReferenceAnnotationId, getTypeAnnotation as getTypeAnnotation3, unwrapOptional } from "@dxos/echo/internal";
|
|
1862
|
+
import { log as log4 } from "@dxos/log";
|
|
1863
|
+
import { Person } from "@dxos/types";
|
|
1864
|
+
var __dxlog_file6 = "/__w/dxos/dxos/packages/plugins/plugin-space/src/helpers/query.ts";
|
|
1865
|
+
var evalQuery = (queryString) => {
|
|
1866
|
+
const globals = {
|
|
1867
|
+
Query,
|
|
1868
|
+
Filter: Filter2,
|
|
1869
|
+
Person
|
|
1870
|
+
};
|
|
1871
|
+
try {
|
|
1872
|
+
return new Function(...Object.keys(globals), `return ${queryString}`)(...Object.values(globals));
|
|
1873
|
+
} catch (err) {
|
|
1874
|
+
log4.catch(err, void 0, {
|
|
1875
|
+
F: __dxlog_file6,
|
|
1876
|
+
L: 32,
|
|
1877
|
+
S: void 0,
|
|
1878
|
+
C: (f, a) => f(...a)
|
|
1879
|
+
});
|
|
1880
|
+
return Query.select(Filter2.nothing());
|
|
1881
|
+
}
|
|
1882
|
+
};
|
|
1883
|
+
var resolveSchemaWithClientAndSpace = (space, query) => {
|
|
1884
|
+
const resolve = Effect3.fn(function* (dxn) {
|
|
1885
|
+
const typename = DXN.parse(dxn).asTypeDXN()?.type;
|
|
1886
|
+
if (!typename) {
|
|
1887
|
+
return Option5.none();
|
|
1888
|
+
}
|
|
1889
|
+
const query2 = space.db.schemaRegistry.query({
|
|
1890
|
+
typename,
|
|
1891
|
+
location: [
|
|
1892
|
+
"database",
|
|
1893
|
+
"runtime"
|
|
1894
|
+
]
|
|
1895
|
+
});
|
|
1896
|
+
const schemas = yield* Effect3.promise(() => query2.run());
|
|
1897
|
+
return Array2.head(schemas);
|
|
1898
|
+
});
|
|
1899
|
+
return resolveSchema(query, resolve).pipe(Effect3.map((schema) => Option5.getOrUndefined(schema)), Effect3.runPromise);
|
|
1900
|
+
};
|
|
1901
|
+
var resolveSchema = (query, resolve) => {
|
|
1902
|
+
return Match.value(query).pipe(
|
|
1903
|
+
Match.withReturnType(),
|
|
1904
|
+
// TODO(wittjosiah): Reconcile with filter match?
|
|
1905
|
+
Match.when({
|
|
1906
|
+
type: "select"
|
|
1907
|
+
}, ({ filter }) => typenameFromFilter(filter).pipe(Option5.map((typename) => resolve(typename)), Option5.getOrElse(() => Effect3.succeed(Option5.none())))),
|
|
1908
|
+
Match.when({
|
|
1909
|
+
type: "filter"
|
|
1910
|
+
}, ({ filter }) => typenameFromFilter(filter).pipe(Option5.map((typename) => resolve(typename)), Option5.getOrElse(() => Effect3.succeed(Option5.none())))),
|
|
1911
|
+
Match.when({
|
|
1912
|
+
type: "reference-traversal"
|
|
1913
|
+
}, ({ anchor, property }) => resolveSchema(anchor, resolve).pipe(Effect3.map((base) => base.pipe(Option5.map((schema) => SchemaAST.getPropertySignatures(schema.ast)), Option5.flatMap((properties) => Array2.findFirst(properties, (p) => p.name === property)), Option5.flatMap((property2) => SchemaAST.getAnnotation(ReferenceAnnotationId)(unwrapOptional(property2))), Option5.map((annotation) => annotation.typename))), Effect3.flatMap(Option5.match({
|
|
1914
|
+
onNone: () => Effect3.succeed(Option5.none()),
|
|
1915
|
+
onSome: (typename) => resolve(DXN.fromTypename(typename).toString())
|
|
1916
|
+
})))),
|
|
1917
|
+
Match.when({
|
|
1918
|
+
type: "relation",
|
|
1919
|
+
filter: Match.defined
|
|
1920
|
+
}, ({ filter }) => typenameFromFilter(filter).pipe(Option5.map((typename) => resolve(typename)), Option5.getOrElse(() => Effect3.succeed(Option5.none())))),
|
|
1921
|
+
Match.when({
|
|
1922
|
+
type: "relation-traversal"
|
|
1923
|
+
}, ({ anchor, direction }) => resolveSchema(anchor, resolve).pipe(Effect3.map((base) => base.pipe(Option5.map((schema) => getTypeAnnotation3(schema)), Option5.flatMap((annotation) => Option5.fromNullable(direction === "source" ? annotation?.sourceSchema : annotation?.targetSchema)))), Effect3.flatMap(Option5.match({
|
|
1924
|
+
onNone: () => Effect3.succeed(Option5.none()),
|
|
1925
|
+
onSome: (typename) => resolve(typename)
|
|
1926
|
+
})))),
|
|
1927
|
+
Match.when({
|
|
1928
|
+
type: "options"
|
|
1929
|
+
}, ({ query: query2 }) => resolveSchema(query2, resolve)),
|
|
1930
|
+
Match.orElse((_q) => {
|
|
1931
|
+
return Effect3.succeed(Option5.none());
|
|
1932
|
+
})
|
|
1933
|
+
);
|
|
1934
|
+
};
|
|
1935
|
+
var typenameFromFilter = (filter) => Match.value(filter).pipe(Match.withReturnType(), Match.when({
|
|
1936
|
+
type: "object"
|
|
1937
|
+
}, ({ typename }) => Option5.fromNullable(typename)), Match.when({
|
|
1938
|
+
type: "and"
|
|
1939
|
+
}, ({ filters }) => EffectFunction.pipe(filters, Array2.map(typenameFromFilter), Array2.findFirst(Option5.isSome), Option5.flatten)), Match.when({
|
|
1940
|
+
type: "or"
|
|
1941
|
+
}, ({ filters }) => EffectFunction.pipe(filters, Array2.map(typenameFromFilter), Array2.findFirst(Option5.isSome), Option5.flatten)), Match.orElse(() => Option5.none()));
|
|
1942
|
+
var getQueryTarget = (query, space) => {
|
|
1943
|
+
return Match.value(query).pipe(Match.when({
|
|
1944
|
+
type: "options"
|
|
1945
|
+
}, ({ options }) => {
|
|
1946
|
+
return Option5.fromNullable(options.queues).pipe(Option5.flatMap((queues) => Array2.head(queues)), Option5.flatMap((queueDxn) => Option5.fromNullable(DXN.tryParse(queueDxn))), Option5.flatMap((queueDxn) => Option5.fromNullable(space?.queues.get(queueDxn))), Option5.getOrElse(() => space));
|
|
1947
|
+
}), Match.orElse(() => space));
|
|
1948
|
+
};
|
|
1949
|
+
|
|
1861
1950
|
// src/components/ViewEditor.tsx
|
|
1862
|
-
import { useSignals as
|
|
1863
|
-
import
|
|
1864
|
-
import {
|
|
1865
|
-
import {
|
|
1866
|
-
import {
|
|
1951
|
+
import { useSignals as _useSignals17 } from "@preact-signals/safe-react/tracking";
|
|
1952
|
+
import * as Schema2 from "effect/Schema";
|
|
1953
|
+
import React17, { useCallback as useCallback11, useState as useState11 } from "react";
|
|
1954
|
+
import { createIntent as createIntent10 } from "@dxos/app-framework";
|
|
1955
|
+
import { useIntentDispatcher as useIntentDispatcher10 } from "@dxos/app-framework/react";
|
|
1956
|
+
import { DXN as DXN2, Filter as Filter3, Obj as Obj6, Query as Query2, Tag, Type as Type2 } from "@dxos/echo";
|
|
1867
1957
|
import { useClient as useClient10 } from "@dxos/react-client";
|
|
1868
|
-
import {
|
|
1869
|
-
import {
|
|
1870
|
-
import {
|
|
1871
|
-
|
|
1958
|
+
import { getSpace as getSpace4, useQuery as useQuery2 } from "@dxos/react-client/echo";
|
|
1959
|
+
import { useAsyncEffect } from "@dxos/react-ui";
|
|
1960
|
+
import { ViewEditor as NaturalViewEditor } from "@dxos/react-ui-form";
|
|
1961
|
+
import { View } from "@dxos/schema";
|
|
1872
1962
|
var ViewEditor = ({ view }) => {
|
|
1873
|
-
var _effect =
|
|
1963
|
+
var _effect = _useSignals17();
|
|
1874
1964
|
try {
|
|
1875
1965
|
const { dispatchPromise: dispatch } = useIntentDispatcher10();
|
|
1876
1966
|
const client = useClient10();
|
|
1877
1967
|
const space = getSpace4(view);
|
|
1878
|
-
const schema =
|
|
1879
|
-
const
|
|
1880
|
-
const
|
|
1881
|
-
|
|
1882
|
-
|
|
1883
|
-
|
|
1884
|
-
|
|
1885
|
-
|
|
1886
|
-
|
|
1887
|
-
|
|
1888
|
-
|
|
1889
|
-
|
|
1890
|
-
|
|
1968
|
+
const [schema, setSchema] = useState11(() => Schema2.Struct({}));
|
|
1969
|
+
const tags = useQuery2(space, Filter3.type(Tag.Tag));
|
|
1970
|
+
const types = useTypeOptions({
|
|
1971
|
+
space,
|
|
1972
|
+
annotation: {
|
|
1973
|
+
location: [
|
|
1974
|
+
"database",
|
|
1975
|
+
"runtime"
|
|
1976
|
+
],
|
|
1977
|
+
kind: [
|
|
1978
|
+
"user"
|
|
1979
|
+
],
|
|
1980
|
+
registered: [
|
|
1981
|
+
"registered"
|
|
1891
1982
|
]
|
|
1892
|
-
}
|
|
1893
|
-
|
|
1894
|
-
|
|
1895
|
-
|
|
1896
|
-
|
|
1897
|
-
|
|
1898
|
-
|
|
1899
|
-
|
|
1983
|
+
}
|
|
1984
|
+
});
|
|
1985
|
+
useAsyncEffect(async () => {
|
|
1986
|
+
if (!view?.query || !space) {
|
|
1987
|
+
return;
|
|
1988
|
+
}
|
|
1989
|
+
const foundSchema = await resolveSchemaWithClientAndSpace(space, view.query.ast);
|
|
1990
|
+
if (foundSchema && foundSchema !== schema) {
|
|
1991
|
+
setSchema(() => foundSchema);
|
|
1992
|
+
}
|
|
1993
|
+
}, [
|
|
1994
|
+
client,
|
|
1995
|
+
space,
|
|
1996
|
+
view,
|
|
1997
|
+
schema
|
|
1998
|
+
]);
|
|
1999
|
+
const handleQueryChanged = useCallback11(async (newQuery, target) => {
|
|
2000
|
+
if (!view || !space) {
|
|
2001
|
+
return;
|
|
2002
|
+
}
|
|
2003
|
+
const queue = target && DXN2.tryParse(target) ? target : void 0;
|
|
2004
|
+
const query = queue ? Query2.fromAst(newQuery).options({
|
|
2005
|
+
queues: [
|
|
2006
|
+
queue
|
|
1900
2007
|
]
|
|
1901
|
-
});
|
|
1902
|
-
|
|
1903
|
-
|
|
1904
|
-
|
|
2008
|
+
}) : Query2.fromAst(newQuery);
|
|
2009
|
+
view.query.ast = query.ast;
|
|
2010
|
+
const newSchema = await resolveSchemaWithClientAndSpace(space, query.ast);
|
|
2011
|
+
if (!newSchema) {
|
|
2012
|
+
return;
|
|
1905
2013
|
}
|
|
1906
|
-
|
|
2014
|
+
const newView = View.make({
|
|
2015
|
+
query,
|
|
2016
|
+
jsonSchema: Type2.toJsonSchema(newSchema)
|
|
2017
|
+
});
|
|
2018
|
+
view.projection = Obj6.getSnapshot(newView).projection;
|
|
2019
|
+
setSchema(() => newSchema);
|
|
1907
2020
|
}, [
|
|
1908
|
-
|
|
2021
|
+
view,
|
|
1909
2022
|
schema
|
|
1910
2023
|
]);
|
|
1911
2024
|
const handleDelete = useCallback11((fieldId) => {
|
|
@@ -1920,13 +2033,15 @@ var ViewEditor = ({ view }) => {
|
|
|
1920
2033
|
if (!space || !schema) {
|
|
1921
2034
|
return null;
|
|
1922
2035
|
}
|
|
1923
|
-
return /* @__PURE__ */
|
|
2036
|
+
return /* @__PURE__ */ React17.createElement(NaturalViewEditor, {
|
|
1924
2037
|
registry: space.db.schemaRegistry,
|
|
1925
2038
|
schema,
|
|
1926
2039
|
view,
|
|
1927
|
-
|
|
1928
|
-
|
|
1929
|
-
|
|
2040
|
+
mode: "tag",
|
|
2041
|
+
tags,
|
|
2042
|
+
types,
|
|
2043
|
+
onQueryChanged: handleQueryChanged,
|
|
2044
|
+
onDelete: Type2.isMutable(schema) ? handleDelete : void 0
|
|
1930
2045
|
});
|
|
1931
2046
|
} finally {
|
|
1932
2047
|
_effect.f();
|
|
@@ -1935,8 +2050,10 @@ var ViewEditor = ({ view }) => {
|
|
|
1935
2050
|
|
|
1936
2051
|
// src/components/index.ts
|
|
1937
2052
|
import { lazy as lazy2 } from "react";
|
|
1938
|
-
var
|
|
1939
|
-
var
|
|
2053
|
+
var CollectionArticle = lazy2(() => import("./CollectionArticle-WTHWY4YS.mjs"));
|
|
2054
|
+
var ObjectCardStack = lazy2(() => import("./ObjectCardStack-TE7AWPMH.mjs"));
|
|
2055
|
+
var ObjectDetails = lazy2(() => import("./ObjectDetails-666IBRHE.mjs"));
|
|
2056
|
+
var RecordArticle = lazy2(() => import("./RecordArticle-2PFEBPXY.mjs"));
|
|
1940
2057
|
|
|
1941
2058
|
export {
|
|
1942
2059
|
AwaitingObject,
|
|
@@ -1949,36 +2066,38 @@ export {
|
|
|
1949
2066
|
JoinDialog,
|
|
1950
2067
|
MembersContainer,
|
|
1951
2068
|
MenuFooter,
|
|
1952
|
-
|
|
1953
|
-
|
|
1954
|
-
POPOVER_RENAME_OBJECT,
|
|
1955
|
-
PopoverRenameObject,
|
|
1956
|
-
POPOVER_RENAME_SPACE,
|
|
1957
|
-
PopoverRenameSpace,
|
|
1958
|
-
useQuerySpaceSchemas,
|
|
2069
|
+
OBJECT_RENAME_POPOVER,
|
|
2070
|
+
ObjectRenamePopover,
|
|
1959
2071
|
SchemaContainer,
|
|
2072
|
+
useQuerySpaceSchemas,
|
|
2073
|
+
SpacePluginSettings,
|
|
1960
2074
|
SpacePresence,
|
|
1961
2075
|
FullPresence,
|
|
1962
2076
|
SmallPresenceLive,
|
|
1963
2077
|
SmallPresence,
|
|
1964
|
-
|
|
2078
|
+
SPACE_RENAME_POPOVER,
|
|
2079
|
+
SpaceRenamePopover,
|
|
1965
2080
|
SpaceSettingsContainer,
|
|
1966
2081
|
InlineSyncStatus,
|
|
1967
2082
|
SyncStatus,
|
|
1968
2083
|
SyncStatusIndicator,
|
|
2084
|
+
evalQuery,
|
|
2085
|
+
resolveSchemaWithClientAndSpace,
|
|
2086
|
+
getQueryTarget,
|
|
1969
2087
|
ViewEditor,
|
|
1970
|
-
|
|
1971
|
-
|
|
2088
|
+
CollectionArticle,
|
|
2089
|
+
ObjectCardStack,
|
|
2090
|
+
ObjectDetails,
|
|
2091
|
+
RecordArticle,
|
|
1972
2092
|
AppGraphBuilder,
|
|
1973
2093
|
AppGraphSerializer,
|
|
1974
2094
|
IdentityCreated,
|
|
1975
2095
|
IntentResolver,
|
|
1976
2096
|
ReactRoot,
|
|
1977
2097
|
ReactSurface,
|
|
1978
|
-
|
|
1979
|
-
SchemaTools,
|
|
2098
|
+
Repair,
|
|
1980
2099
|
SpaceSettings,
|
|
1981
2100
|
SpaceState,
|
|
1982
2101
|
SpacesReady
|
|
1983
2102
|
};
|
|
1984
|
-
//# sourceMappingURL=chunk-
|
|
2103
|
+
//# sourceMappingURL=chunk-XKQCDLXX.mjs.map
|