@dxos/plugin-space 0.8.4-main.406dc2a → 0.8.4-main.548089c
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-AX7KKXWP.mjs → CollectionArticle-ABGFK4VO.mjs} +8 -8
- package/dist/lib/browser/CollectionArticle-ABGFK4VO.mjs.map +7 -0
- package/dist/lib/browser/{ObjectDetailsPanel-MQBHG666.mjs → ObjectDetailsPanel-2BRUBHP6.mjs} +16 -20
- package/dist/lib/browser/ObjectDetailsPanel-2BRUBHP6.mjs.map +7 -0
- package/dist/lib/browser/{ObjectSettings-KNUZFCGS.mjs → ObjectSettings-5LLWCVEK.mjs} +33 -40
- package/dist/lib/browser/ObjectSettings-5LLWCVEK.mjs.map +7 -0
- package/dist/lib/browser/RecordArticle-G4BCSFFA.mjs +116 -0
- package/dist/lib/browser/RecordArticle-G4BCSFFA.mjs.map +7 -0
- package/dist/lib/browser/{app-graph-builder-3R5GGT46.mjs → app-graph-builder-FFPJHWFB.mjs} +53 -45
- package/dist/lib/browser/app-graph-builder-FFPJHWFB.mjs.map +7 -0
- package/dist/lib/browser/{app-graph-serializer-25Z5BG22.mjs → app-graph-serializer-QMWE2YE4.mjs} +10 -10
- package/dist/lib/browser/app-graph-serializer-QMWE2YE4.mjs.map +7 -0
- package/dist/lib/browser/{chunk-OV6D543A.mjs → chunk-I4W2BHA2.mjs} +36 -30
- package/dist/lib/browser/chunk-I4W2BHA2.mjs.map +7 -0
- package/dist/lib/browser/{chunk-RLI2IAHK.mjs → chunk-K5J7ZB5P.mjs} +2 -2
- package/dist/lib/browser/chunk-K5J7ZB5P.mjs.map +7 -0
- package/dist/lib/browser/{chunk-7XOTWRZ3.mjs → chunk-K6TOP4E6.mjs} +19 -18
- package/dist/lib/browser/chunk-K6TOP4E6.mjs.map +7 -0
- package/dist/lib/browser/{chunk-WS2PJDES.mjs → chunk-M2Z6D4ZI.mjs} +12 -11
- package/dist/lib/browser/chunk-M2Z6D4ZI.mjs.map +7 -0
- package/dist/lib/browser/{chunk-522KZGQF.mjs → chunk-MHXNG2X2.mjs} +487 -381
- package/dist/lib/browser/chunk-MHXNG2X2.mjs.map +7 -0
- package/dist/lib/browser/{chunk-PTGRQQ6J.mjs → chunk-OLBBSOVI.mjs} +23 -13
- package/dist/lib/browser/chunk-OLBBSOVI.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-EIXZABXD.mjs → chunk-WJXU4GKV.mjs} +2 -2
- package/dist/lib/browser/{identity-created-PW2BA46S.mjs → identity-created-NAXTPQXE.mjs} +3 -3
- package/dist/lib/browser/identity-created-NAXTPQXE.mjs.map +7 -0
- package/dist/lib/browser/index.mjs +63 -46
- package/dist/lib/browser/index.mjs.map +3 -3
- package/dist/lib/browser/{intent-resolver-ICGUSVH6.mjs → intent-resolver-WLFWCHDH.mjs} +53 -58
- package/dist/lib/browser/intent-resolver-WLFWCHDH.mjs.map +7 -0
- package/dist/lib/browser/meta.json +1 -1
- package/dist/lib/browser/{react-root-H56QN474.mjs → react-root-BPPTUFLV.mjs} +9 -8
- package/dist/lib/browser/react-root-BPPTUFLV.mjs.map +7 -0
- package/dist/lib/browser/{react-surface-VOE2ILKO.mjs → react-surface-3KTOA5PM.mjs} +37 -40
- package/dist/lib/browser/react-surface-3KTOA5PM.mjs.map +7 -0
- package/dist/lib/browser/{schema-defs-7R7RKCAE.mjs → schema-defs-XCNOO2WT.mjs} +3 -3
- package/dist/lib/browser/{settings-OBFJ67ZG.mjs → settings-WKLGKUHQ.mjs} +3 -3
- package/dist/lib/browser/{spaces-ready-MFIVK6I6.mjs → spaces-ready-XVW7I5MQ.mjs} +12 -11
- package/dist/lib/browser/spaces-ready-XVW7I5MQ.mjs.map +7 -0
- package/dist/lib/browser/{state-LSPRFIRO.mjs → state-Q7YRE5KG.mjs} +3 -3
- package/dist/lib/browser/types/index.mjs +2 -2
- package/dist/lib/node-esm/{CollectionMain-EU57SRYK.mjs → CollectionArticle-G3V4QXPI.mjs} +8 -8
- package/dist/lib/node-esm/CollectionArticle-G3V4QXPI.mjs.map +7 -0
- package/dist/lib/node-esm/{ObjectDetailsPanel-NABA2S56.mjs → ObjectDetailsPanel-6PZQIQG3.mjs} +16 -20
- package/dist/lib/node-esm/ObjectDetailsPanel-6PZQIQG3.mjs.map +7 -0
- package/dist/lib/node-esm/{ObjectSettings-GXGTITF5.mjs → ObjectSettings-OQSBOH7K.mjs} +33 -40
- package/dist/lib/node-esm/ObjectSettings-OQSBOH7K.mjs.map +7 -0
- package/dist/lib/node-esm/RecordArticle-PBMLYY5K.mjs +117 -0
- package/dist/lib/node-esm/RecordArticle-PBMLYY5K.mjs.map +7 -0
- package/dist/lib/node-esm/{app-graph-builder-VGRMD5TP.mjs → app-graph-builder-3BTVV7LE.mjs} +53 -45
- package/dist/lib/node-esm/app-graph-builder-3BTVV7LE.mjs.map +7 -0
- package/dist/lib/node-esm/{app-graph-serializer-U4GHXWRG.mjs → app-graph-serializer-BU7KO2G5.mjs} +10 -10
- package/dist/lib/node-esm/app-graph-serializer-BU7KO2G5.mjs.map +7 -0
- package/dist/lib/node-esm/{chunk-4F25JKVT.mjs → chunk-2PN7QNGV.mjs} +12 -11
- package/dist/lib/node-esm/chunk-2PN7QNGV.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-PAAWJ4RE.mjs → chunk-FAWIRIP4.mjs} +19 -18
- package/dist/lib/node-esm/chunk-FAWIRIP4.mjs.map +7 -0
- package/dist/lib/node-esm/{chunk-SVFKU7EW.mjs → chunk-H4JILUJK.mjs} +2 -2
- package/dist/lib/node-esm/{chunk-TNUWML33.mjs → chunk-HQMFTMJE.mjs} +36 -30
- package/dist/lib/node-esm/chunk-HQMFTMJE.mjs.map +7 -0
- package/dist/lib/node-esm/{chunk-DG5YEEPZ.mjs → chunk-MI4A5XUX.mjs} +487 -381
- package/dist/lib/node-esm/chunk-MI4A5XUX.mjs.map +7 -0
- package/dist/lib/node-esm/{chunk-HAKW2RFD.mjs → chunk-WC4VBFMA.mjs} +23 -13
- package/dist/lib/node-esm/chunk-WC4VBFMA.mjs.map +7 -0
- package/dist/lib/node-esm/{chunk-H5UPFRRH.mjs → chunk-Z7BB6HC2.mjs} +2 -2
- package/dist/lib/node-esm/chunk-Z7BB6HC2.mjs.map +7 -0
- package/dist/lib/node-esm/{identity-created-MWTLGQRU.mjs → identity-created-OXLKCJE3.mjs} +3 -3
- package/dist/lib/node-esm/identity-created-OXLKCJE3.mjs.map +7 -0
- package/dist/lib/node-esm/index.mjs +63 -46
- package/dist/lib/node-esm/index.mjs.map +3 -3
- package/dist/lib/node-esm/{intent-resolver-KVB2A4YC.mjs → intent-resolver-QHH5SXLC.mjs} +53 -58
- package/dist/lib/node-esm/intent-resolver-QHH5SXLC.mjs.map +7 -0
- package/dist/lib/node-esm/meta.json +1 -1
- package/dist/lib/node-esm/{react-root-56PGW5PH.mjs → react-root-QRONKFKI.mjs} +9 -8
- package/dist/lib/node-esm/react-root-QRONKFKI.mjs.map +7 -0
- package/dist/lib/node-esm/{react-surface-NYEQ23A4.mjs → react-surface-OZBWNTW2.mjs} +37 -40
- package/dist/lib/node-esm/react-surface-OZBWNTW2.mjs.map +7 -0
- package/dist/lib/node-esm/{schema-defs-RYG5DSUE.mjs → schema-defs-5TDB7T5J.mjs} +3 -3
- package/dist/lib/node-esm/{settings-QGWWNMMZ.mjs → settings-RBB5633M.mjs} +3 -3
- package/dist/lib/node-esm/{spaces-ready-TC27M7MP.mjs → spaces-ready-J6RWPI2X.mjs} +12 -11
- package/dist/lib/node-esm/spaces-ready-J6RWPI2X.mjs.map +7 -0
- package/dist/lib/node-esm/{state-TCGOPLRO.mjs → state-362I5BMK.mjs} +3 -3
- package/dist/lib/node-esm/types/index.mjs +2 -2
- package/dist/types/src/SpacePlugin.d.ts.map +1 -1
- package/dist/types/src/capabilities/app-graph-builder.d.ts.map +1 -1
- package/dist/types/src/capabilities/capabilities.d.ts +2 -2
- package/dist/types/src/capabilities/capabilities.d.ts.map +1 -1
- package/dist/types/src/capabilities/intent-resolver.d.ts.map +1 -1
- package/dist/types/src/capabilities/react-root.d.ts.map +1 -1
- package/dist/types/src/capabilities/react-surface.d.ts.map +1 -1
- package/dist/types/src/capabilities/spaces-ready.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.map +1 -1
- package/dist/types/src/components/CreateDialog/CreateObjectDialog.stories.d.ts +91 -1
- package/dist/types/src/components/CreateDialog/CreateObjectDialog.stories.d.ts.map +1 -1
- package/dist/types/src/components/CreateDialog/CreateObjectPanel.d.ts +2 -2
- package/dist/types/src/components/CreateDialog/CreateObjectPanel.d.ts.map +1 -1
- package/dist/types/src/components/CreateDialog/CreateSpaceDialog.d.ts.map +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/MembersContainer.d.ts.map +1 -0
- package/dist/types/src/components/MembersContainer/MembersContainer.stories.d.ts +1697 -0
- package/dist/types/src/components/{MembersContainer.stories.d.ts.map → MembersContainer/MembersContainer.stories.d.ts.map} +1 -1
- 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/ObjectDetailsPanel/ObjectDetailsPanel.d.ts +2 -2
- package/dist/types/src/components/ObjectDetailsPanel/ObjectDetailsPanel.d.ts.map +1 -1
- package/dist/types/src/components/ObjectDetailsPanel/ObjectForm.d.ts.map +1 -1
- 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/ObjectSettings/BaseObjectSettings.d.ts +1 -1
- package/dist/types/src/components/ObjectSettings/BaseObjectSettings.d.ts.map +1 -1
- package/dist/types/src/components/ObjectSettings/BaseObjectSettings.stories.d.ts +91 -1
- package/dist/types/src/components/ObjectSettings/BaseObjectSettings.stories.d.ts.map +1 -1
- 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/{MembersContainer.stories.d.ts → RecordArticle.stories.d.ts} +92 -2
- package/dist/types/src/components/RecordArticle.stories.d.ts.map +1 -0
- package/dist/types/src/components/SchemaContainer.d.ts +1 -1
- 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} +4 -3
- package/dist/types/src/components/SpacePresence/SpacePresence.d.ts.map +1 -0
- package/dist/types/src/components/{SpacePresence.stories.d.ts → SpacePresence/SpacePresence.stories.d.ts} +91 -1
- package/dist/types/src/components/{SpacePresence.stories.d.ts.map → SpacePresence/SpacePresence.stories.d.ts.map} +1 -1
- 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.map +1 -1
- package/dist/types/src/components/SpaceSettings/SpaceSettingsContainer.stories.d.ts +91 -1
- 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 +92 -2
- 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 +9 -16
- package/dist/types/src/components/index.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 +8 -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/useActiveSpace.d.ts.map +1 -1
- package/dist/types/src/hooks/useInputSurfaceLookup.d.ts.map +1 -1
- package/dist/types/src/hooks/useTypeOptions.d.ts.map +1 -1
- 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.map +1 -1
- package/dist/types/src/translations.d.ts +91 -1
- package/dist/types/src/translations.d.ts.map +1 -1
- package/dist/types/src/types/types.d.ts +2 -2
- package/dist/types/src/types/types.d.ts.map +1 -1
- package/dist/types/src/util.d.ts +6 -4
- package/dist/types/src/util.d.ts.map +1 -1
- package/dist/types/tsconfig.tsbuildinfo +1 -1
- package/package.json +53 -51
- package/src/SpacePlugin.ts +49 -25
- package/src/capabilities/app-graph-builder.ts +86 -60
- package/src/capabilities/app-graph-serializer.ts +5 -5
- package/src/capabilities/capabilities.ts +2 -2
- package/src/capabilities/identity-created.ts +2 -2
- package/src/capabilities/intent-resolver.ts +46 -41
- package/src/capabilities/react-root.tsx +2 -1
- package/src/capabilities/react-surface.tsx +35 -40
- package/src/capabilities/spaces-ready.ts +7 -4
- package/src/components/AwaitingObject.tsx +11 -13
- package/src/components/{CollectionMain.tsx → CollectionArticle.tsx} +5 -4
- package/src/components/CollectionSection.tsx +6 -4
- package/src/components/CreateDialog/CreateObjectDialog.stories.tsx +6 -6
- package/src/components/CreateDialog/CreateObjectDialog.tsx +29 -22
- package/src/components/CreateDialog/CreateObjectPanel.tsx +2 -2
- package/src/components/CreateDialog/CreateSpaceDialog.tsx +25 -7
- package/src/components/{JoinDialog.tsx → JoinDialog/JoinDialog.tsx} +21 -5
- package/src/components/JoinDialog/index.ts +5 -0
- package/src/components/{MembersContainer.stories.tsx → MembersContainer/MembersContainer.stories.tsx} +1 -1
- package/src/components/{MembersContainer.tsx → MembersContainer/MembersContainer.tsx} +11 -9
- package/src/components/MembersContainer/index.ts +5 -0
- package/src/components/ObjectDetailsPanel/ObjectDetailsPanel.tsx +2 -3
- package/src/components/ObjectDetailsPanel/ObjectForm.tsx +9 -12
- package/src/components/{PopoverRenameObject.tsx → ObjectRenamePopover/ObjectRenamePopover.tsx} +5 -5
- package/src/components/ObjectRenamePopover/index.ts +5 -0
- package/src/components/ObjectSettings/BaseObjectSettings.stories.tsx +6 -6
- package/src/components/ObjectSettings/BaseObjectSettings.tsx +34 -40
- package/src/components/ObjectSettings/ForeignKeys.tsx +1 -1
- package/src/components/ObjectSettings/ObjectSettingsContainer.tsx +1 -1
- package/src/components/RecordArticle.stories.tsx +115 -0
- package/src/components/RecordArticle.tsx +114 -0
- package/src/components/SchemaContainer.tsx +21 -24
- package/src/components/SpacePluginSettings.tsx +8 -2
- package/src/components/{SpacePresence.stories.tsx → SpacePresence/SpacePresence.stories.tsx} +1 -1
- package/src/components/{SpacePresence.tsx → SpacePresence/SpacePresence.tsx} +14 -9
- package/src/components/SpacePresence/index.ts +5 -0
- package/src/components/{PopoverRenameSpace.tsx → SpaceRenamePopover/SpaceRenamePopover.tsx} +6 -5
- package/src/components/SpaceRenamePopover/index.ts +5 -0
- package/src/components/SpaceSettings/SpaceSettingsContainer.tsx +33 -13
- package/src/components/SyncStatus/InlineSyncStatus.tsx +1 -1
- package/src/components/SyncStatus/SyncStatus.stories.tsx +3 -2
- package/src/components/SyncStatus/SyncStatus.tsx +45 -36
- package/src/components/ViewEditor.tsx +51 -17
- package/src/components/index.ts +6 -7
- package/src/helpers/index.ts +5 -0
- package/src/helpers/query.test.ts +24 -0
- package/src/helpers/query.ts +158 -0
- package/src/hooks/useActiveSpace.ts +2 -1
- package/src/hooks/useInputSurfaceLookup.tsx +7 -2
- package/src/hooks/useTypeOptions.ts +3 -3
- package/src/index.ts +1 -0
- package/src/meta.ts +5 -0
- package/src/translations.ts +22 -10
- package/src/types/types.ts +11 -10
- package/src/util.tsx +44 -36
- package/dist/lib/browser/CollectionMain-AX7KKXWP.mjs.map +0 -7
- package/dist/lib/browser/ObjectDetailsPanel-MQBHG666.mjs.map +0 -7
- package/dist/lib/browser/ObjectSettings-KNUZFCGS.mjs.map +0 -7
- package/dist/lib/browser/RecordMain-H4DVHICS.mjs +0 -116
- package/dist/lib/browser/RecordMain-H4DVHICS.mjs.map +0 -7
- package/dist/lib/browser/app-graph-builder-3R5GGT46.mjs.map +0 -7
- package/dist/lib/browser/app-graph-serializer-25Z5BG22.mjs.map +0 -7
- package/dist/lib/browser/chunk-522KZGQF.mjs.map +0 -7
- package/dist/lib/browser/chunk-7XOTWRZ3.mjs.map +0 -7
- package/dist/lib/browser/chunk-IRKDREHY.mjs +0 -11
- package/dist/lib/browser/chunk-IRKDREHY.mjs.map +0 -7
- package/dist/lib/browser/chunk-OV6D543A.mjs.map +0 -7
- package/dist/lib/browser/chunk-PTGRQQ6J.mjs.map +0 -7
- package/dist/lib/browser/chunk-RLI2IAHK.mjs.map +0 -7
- package/dist/lib/browser/chunk-WS2PJDES.mjs.map +0 -7
- package/dist/lib/browser/identity-created-PW2BA46S.mjs.map +0 -7
- package/dist/lib/browser/intent-resolver-ICGUSVH6.mjs.map +0 -7
- package/dist/lib/browser/react-root-H56QN474.mjs.map +0 -7
- package/dist/lib/browser/react-surface-VOE2ILKO.mjs.map +0 -7
- package/dist/lib/browser/spaces-ready-MFIVK6I6.mjs.map +0 -7
- package/dist/lib/node-esm/CollectionMain-EU57SRYK.mjs.map +0 -7
- package/dist/lib/node-esm/ObjectDetailsPanel-NABA2S56.mjs.map +0 -7
- package/dist/lib/node-esm/ObjectSettings-GXGTITF5.mjs.map +0 -7
- package/dist/lib/node-esm/RecordMain-MYFTAQ2U.mjs +0 -117
- package/dist/lib/node-esm/RecordMain-MYFTAQ2U.mjs.map +0 -7
- package/dist/lib/node-esm/app-graph-builder-VGRMD5TP.mjs.map +0 -7
- package/dist/lib/node-esm/app-graph-serializer-U4GHXWRG.mjs.map +0 -7
- package/dist/lib/node-esm/chunk-4F25JKVT.mjs.map +0 -7
- package/dist/lib/node-esm/chunk-DG5YEEPZ.mjs.map +0 -7
- package/dist/lib/node-esm/chunk-H5UPFRRH.mjs.map +0 -7
- package/dist/lib/node-esm/chunk-HAKW2RFD.mjs.map +0 -7
- package/dist/lib/node-esm/chunk-MWNATOXL.mjs +0 -13
- package/dist/lib/node-esm/chunk-MWNATOXL.mjs.map +0 -7
- package/dist/lib/node-esm/chunk-PAAWJ4RE.mjs.map +0 -7
- package/dist/lib/node-esm/chunk-TNUWML33.mjs.map +0 -7
- package/dist/lib/node-esm/identity-created-MWTLGQRU.mjs.map +0 -7
- package/dist/lib/node-esm/intent-resolver-KVB2A4YC.mjs.map +0 -7
- package/dist/lib/node-esm/react-root-56PGW5PH.mjs.map +0 -7
- package/dist/lib/node-esm/react-surface-NYEQ23A4.mjs.map +0 -7
- package/dist/lib/node-esm/spaces-ready-TC27M7MP.mjs.map +0 -7
- 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/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/RecordMain.d.ts +0 -7
- package/dist/types/src/components/RecordMain.d.ts.map +0 -1
- package/dist/types/src/components/SpacePresence.d.ts.map +0 -1
- package/src/components/PersistenceStatus.tsx +0 -83
- package/src/components/RecordMain.tsx +0 -87
- /package/dist/lib/browser/{chunk-EIXZABXD.mjs.map → chunk-WJXU4GKV.mjs.map} +0 -0
- /package/dist/lib/browser/{schema-defs-7R7RKCAE.mjs.map → schema-defs-XCNOO2WT.mjs.map} +0 -0
- /package/dist/lib/browser/{settings-OBFJ67ZG.mjs.map → settings-WKLGKUHQ.mjs.map} +0 -0
- /package/dist/lib/browser/{state-LSPRFIRO.mjs.map → state-Q7YRE5KG.mjs.map} +0 -0
- /package/dist/lib/node-esm/{chunk-SVFKU7EW.mjs.map → chunk-H4JILUJK.mjs.map} +0 -0
- /package/dist/lib/node-esm/{schema-defs-RYG5DSUE.mjs.map → schema-defs-5TDB7T5J.mjs.map} +0 -0
- /package/dist/lib/node-esm/{settings-QGWWNMMZ.mjs.map → settings-RBB5633M.mjs.map} +0 -0
- /package/dist/lib/node-esm/{state-TCGOPLRO.mjs.map → state-362I5BMK.mjs.map} +0 -0
- /package/dist/types/src/components/{JoinDialog.d.ts → JoinDialog/JoinDialog.d.ts} +0 -0
- /package/dist/types/src/components/{MembersContainer.d.ts → MembersContainer/MembersContainer.d.ts} +0 -0
|
@@ -1,40 +1,43 @@
|
|
|
1
1
|
import { createRequire } from 'node:module';const require = createRequire(import.meta.url);
|
|
2
2
|
import {
|
|
3
3
|
useInputSurfaceLookup,
|
|
4
|
-
usePath
|
|
5
|
-
|
|
4
|
+
usePath,
|
|
5
|
+
useTypeOptions
|
|
6
|
+
} from "./chunk-FAWIRIP4.mjs";
|
|
6
7
|
import {
|
|
7
8
|
SpaceCapabilities
|
|
8
|
-
} from "./chunk-
|
|
9
|
+
} from "./chunk-Z7BB6HC2.mjs";
|
|
9
10
|
import {
|
|
10
11
|
COMPOSER_SPACE_LOCK,
|
|
11
12
|
getSpaceDisplayName
|
|
12
|
-
} from "./chunk-
|
|
13
|
+
} from "./chunk-HQMFTMJE.mjs";
|
|
13
14
|
import {
|
|
14
15
|
SpaceAction,
|
|
15
16
|
SpaceForm
|
|
16
|
-
} from "./chunk-
|
|
17
|
+
} from "./chunk-2PN7QNGV.mjs";
|
|
17
18
|
import {
|
|
18
19
|
meta
|
|
19
|
-
} from "./chunk-
|
|
20
|
+
} from "./chunk-BDEFTL6K.mjs";
|
|
20
21
|
|
|
21
22
|
// src/components/AwaitingObject.tsx
|
|
22
23
|
import { useSignals as _useSignals } from "@preact-signals/safe-react/tracking";
|
|
23
24
|
import React, { useCallback, useEffect, useState } from "react";
|
|
24
|
-
import { LayoutAction, createIntent
|
|
25
|
+
import { LayoutAction, createIntent } from "@dxos/app-framework";
|
|
26
|
+
import { useIntentDispatcher, useLayout } from "@dxos/app-framework/react";
|
|
27
|
+
import { Obj } from "@dxos/echo";
|
|
25
28
|
import { useClient } from "@dxos/react-client";
|
|
26
|
-
import { Filter,
|
|
29
|
+
import { Filter, useQuery } from "@dxos/react-client/echo";
|
|
27
30
|
import { Button, Icon, Toast, useTranslation } from "@dxos/react-ui";
|
|
28
|
-
var WAIT_FOR_OBJECT_TIMEOUT =
|
|
29
|
-
var TOAST_TIMEOUT =
|
|
31
|
+
var WAIT_FOR_OBJECT_TIMEOUT = 3 * 60 * 1e3;
|
|
32
|
+
var TOAST_TIMEOUT = 4 * 60 * 1e3;
|
|
30
33
|
var AwaitingObject = ({ id }) => {
|
|
31
34
|
var _effect = _useSignals();
|
|
32
35
|
try {
|
|
36
|
+
const { t } = useTranslation(meta.id);
|
|
37
|
+
const { dispatchPromise: dispatch } = useIntentDispatcher();
|
|
33
38
|
const [open, setOpen] = useState(true);
|
|
34
39
|
const [waiting, setWaiting] = useState(true);
|
|
35
40
|
const [found, setFound] = useState(false);
|
|
36
|
-
const { t } = useTranslation(meta.id);
|
|
37
|
-
const { dispatchPromise: dispatch } = useIntentDispatcher();
|
|
38
41
|
const layout = useLayout();
|
|
39
42
|
const client = useClient();
|
|
40
43
|
const objects = useQuery(client.spaces, Filter.everything());
|
|
@@ -42,15 +45,13 @@ var AwaitingObject = ({ id }) => {
|
|
|
42
45
|
if (!id) {
|
|
43
46
|
return;
|
|
44
47
|
}
|
|
45
|
-
const timeout = setTimeout(() =>
|
|
46
|
-
|
|
47
|
-
}, WAIT_FOR_OBJECT_TIMEOUT);
|
|
48
|
-
() => clearTimeout(timeout);
|
|
48
|
+
const timeout = setTimeout(() => setWaiting(false), WAIT_FOR_OBJECT_TIMEOUT);
|
|
49
|
+
return () => clearTimeout(timeout);
|
|
49
50
|
}, [
|
|
50
51
|
id
|
|
51
52
|
]);
|
|
52
53
|
useEffect(() => {
|
|
53
|
-
if (objects.findIndex((object) =>
|
|
54
|
+
if (objects.findIndex((object) => Obj.getDXN(object).toString() === id) > -1) {
|
|
54
55
|
setFound(true);
|
|
55
56
|
if (layout.active.includes(id)) {
|
|
56
57
|
setOpen(false);
|
|
@@ -122,16 +123,17 @@ var AwaitingObject = ({ id }) => {
|
|
|
122
123
|
// src/components/CreateDialog/CreateObjectDialog.tsx
|
|
123
124
|
import { useSignals as _useSignals3 } from "@preact-signals/safe-react/tracking";
|
|
124
125
|
import * as Effect from "effect/Effect";
|
|
125
|
-
import * as
|
|
126
|
+
import * as Function2 from "effect/Function";
|
|
126
127
|
import React3, { useCallback as useCallback3, useRef, useState as useState2 } from "react";
|
|
127
|
-
import { Capabilities, LayoutAction as LayoutAction2, chain, createIntent as createIntent2
|
|
128
|
-
import {
|
|
128
|
+
import { Capabilities, LayoutAction as LayoutAction2, chain, createIntent as createIntent2 } from "@dxos/app-framework";
|
|
129
|
+
import { useCapabilities, useIntentDispatcher as useIntentDispatcher2, usePluginManager } from "@dxos/app-framework/react";
|
|
130
|
+
import { Obj as Obj2, Query, Type as Type2 } from "@dxos/echo";
|
|
129
131
|
import { invariant } from "@dxos/invariant";
|
|
130
132
|
import { useClient as useClient2 } from "@dxos/react-client";
|
|
131
133
|
import { getSpace, isLiveObject, isSpace, useQuery as useQuery2, useSpaces } from "@dxos/react-client/echo";
|
|
132
|
-
import {
|
|
134
|
+
import { Dialog, IconButton, useTranslation as useTranslation3 } from "@dxos/react-ui";
|
|
133
135
|
import { cardDialogContent, cardDialogHeader } from "@dxos/react-ui-stack";
|
|
134
|
-
import {
|
|
136
|
+
import { Collection, StoredSchema, getTypenameFromQuery } from "@dxos/schema";
|
|
135
137
|
import { isNonNullable as isNonNullable2 } from "@dxos/util";
|
|
136
138
|
|
|
137
139
|
// src/components/CreateDialog/CreateObjectPanel.tsx
|
|
@@ -301,18 +303,18 @@ var CREATE_OBJECT_DIALOG = `${meta.id}/CreateObjectDialog`;
|
|
|
301
303
|
var CreateObjectDialog = ({ target: initialTarget, typename: initialTypename, views, initialFormValues, onCreateObject, shouldNavigate: _shouldNavigate }) => {
|
|
302
304
|
var _effect = _useSignals3();
|
|
303
305
|
try {
|
|
304
|
-
const closeRef = useRef(null);
|
|
305
306
|
const manager = usePluginManager();
|
|
306
307
|
const { t } = useTranslation3(meta.id);
|
|
307
|
-
const client = useClient2();
|
|
308
|
-
const spaces = useSpaces();
|
|
309
308
|
const { dispatch } = useIntentDispatcher2();
|
|
310
309
|
const forms = useCapabilities(SpaceCapabilities.ObjectForm);
|
|
311
310
|
const [target, setTarget] = useState2(initialTarget);
|
|
312
311
|
const [typename, setTypename] = useState2(initialTypename);
|
|
312
|
+
const client = useClient2();
|
|
313
|
+
const spaces = useSpaces();
|
|
313
314
|
const space = isSpace(target) ? target : getSpace(target);
|
|
314
|
-
const queryCollections = useQuery2(space, Query.type(
|
|
315
|
+
const queryCollections = useQuery2(space, Query.type(Collection.QueryCollection));
|
|
315
316
|
const hiddenTypenames = queryCollections.map((collection) => getTypenameFromQuery(collection.query)).filter(isNonNullable2);
|
|
317
|
+
const closeRef = useRef(null);
|
|
316
318
|
const resolve = useCallback3((typename2) => manager.context.getCapabilities(Capabilities.Metadata).find(({ id }) => id === typename2)?.metadata ?? {}, [
|
|
317
319
|
manager
|
|
318
320
|
]);
|
|
@@ -324,7 +326,7 @@ var CreateObjectDialog = ({ target: initialTarget, typename: initialTypename, vi
|
|
|
324
326
|
const space2 = isSpace(target) ? target : getSpace(target);
|
|
325
327
|
invariant(space2, "Missing space", {
|
|
326
328
|
F: __dxlog_file,
|
|
327
|
-
L:
|
|
329
|
+
L: 77,
|
|
328
330
|
S: this,
|
|
329
331
|
A: [
|
|
330
332
|
"space",
|
|
@@ -334,7 +336,7 @@ var CreateObjectDialog = ({ target: initialTarget, typename: initialTypename, vi
|
|
|
334
336
|
const { object } = yield* dispatch(form.getIntent(data, {
|
|
335
337
|
space: space2
|
|
336
338
|
}));
|
|
337
|
-
if (isLiveObject(object) && !
|
|
339
|
+
if (isLiveObject(object) && !Obj2.instanceOf(StoredSchema, object)) {
|
|
338
340
|
const hidden = form.hidden || hiddenTypenames.includes(Type2.getTypename(form.objectSchema));
|
|
339
341
|
const addObjectIntent = createIntent2(SpaceAction.AddObject, {
|
|
340
342
|
target,
|
|
@@ -343,7 +345,7 @@ var CreateObjectDialog = ({ target: initialTarget, typename: initialTypename, vi
|
|
|
343
345
|
});
|
|
344
346
|
const shouldNavigate = _shouldNavigate ?? (() => true);
|
|
345
347
|
if (shouldNavigate(object)) {
|
|
346
|
-
yield* dispatch(
|
|
348
|
+
yield* dispatch(Function2.pipe(addObjectIntent, chain(LayoutAction2.Open, {
|
|
347
349
|
part: "main"
|
|
348
350
|
})));
|
|
349
351
|
} else {
|
|
@@ -373,15 +375,16 @@ var CreateObjectDialog = ({ target: initialTarget, typename: initialTypename, vi
|
|
|
373
375
|
})
|
|
374
376
|
})), /* @__PURE__ */ React3.createElement(Dialog.Close, {
|
|
375
377
|
asChild: true
|
|
376
|
-
}, /* @__PURE__ */ React3.createElement(
|
|
378
|
+
}, /* @__PURE__ */ React3.createElement(IconButton, {
|
|
377
379
|
ref: closeRef,
|
|
380
|
+
icon: "ph--x--regular",
|
|
381
|
+
size: 4,
|
|
382
|
+
label: "Close",
|
|
383
|
+
iconOnly: true,
|
|
378
384
|
density: "fine",
|
|
379
385
|
variant: "ghost",
|
|
380
386
|
autoFocus: true
|
|
381
|
-
}, /* @__PURE__ */ React3.createElement(
|
|
382
|
-
icon: "ph--x--regular",
|
|
383
|
-
size: 4
|
|
384
|
-
})))), /* @__PURE__ */ React3.createElement(CreateObjectPanel, {
|
|
387
|
+
}))), /* @__PURE__ */ React3.createElement(CreateObjectPanel, {
|
|
385
388
|
forms,
|
|
386
389
|
spaces,
|
|
387
390
|
target,
|
|
@@ -404,8 +407,9 @@ var CreateObjectDialog = ({ target: initialTarget, typename: initialTypename, vi
|
|
|
404
407
|
import { useSignals as _useSignals4 } from "@preact-signals/safe-react/tracking";
|
|
405
408
|
import * as Effect2 from "effect/Effect";
|
|
406
409
|
import React4, { useCallback as useCallback4, useRef as useRef2 } from "react";
|
|
407
|
-
import { LayoutAction as LayoutAction3, createIntent as createIntent3
|
|
408
|
-
import {
|
|
410
|
+
import { LayoutAction as LayoutAction3, createIntent as createIntent3 } from "@dxos/app-framework";
|
|
411
|
+
import { useIntentDispatcher as useIntentDispatcher3 } from "@dxos/app-framework/react";
|
|
412
|
+
import { Dialog as Dialog2, IconButton as IconButton2, useTranslation as useTranslation4 } from "@dxos/react-ui";
|
|
409
413
|
import { Form as Form2 } from "@dxos/react-ui-form";
|
|
410
414
|
import { cardDialogContent as cardDialogContent2, cardDialogHeader as cardDialogHeader2 } from "@dxos/react-ui-stack";
|
|
411
415
|
var CREATE_SPACE_DIALOG = `${meta.id}/CreateSpaceDialog`;
|
|
@@ -447,15 +451,16 @@ var CreateSpaceDialog = () => {
|
|
|
447
451
|
className: cardDialogHeader2
|
|
448
452
|
}, /* @__PURE__ */ React4.createElement(Dialog2.Title, null, t("create space dialog title")), /* @__PURE__ */ React4.createElement(Dialog2.Close, {
|
|
449
453
|
asChild: true
|
|
450
|
-
}, /* @__PURE__ */ React4.createElement(
|
|
454
|
+
}, /* @__PURE__ */ React4.createElement(IconButton2, {
|
|
451
455
|
ref: closeRef,
|
|
456
|
+
icon: "ph--x--regular",
|
|
457
|
+
size: 4,
|
|
458
|
+
label: "Close",
|
|
459
|
+
iconOnly: true,
|
|
452
460
|
density: "fine",
|
|
453
461
|
variant: "ghost",
|
|
454
462
|
autoFocus: true
|
|
455
|
-
}, /* @__PURE__ */ React4.createElement(
|
|
456
|
-
icon: "ph--x--regular",
|
|
457
|
-
size: 4
|
|
458
|
-
})))), /* @__PURE__ */ React4.createElement("div", {
|
|
463
|
+
}))), /* @__PURE__ */ React4.createElement("div", {
|
|
459
464
|
role: "none",
|
|
460
465
|
className: "contents"
|
|
461
466
|
}, /* @__PURE__ */ React4.createElement(Form2, {
|
|
@@ -477,24 +482,26 @@ var CreateSpaceDialog = () => {
|
|
|
477
482
|
import { useSignals as _useSignals5 } from "@preact-signals/safe-react/tracking";
|
|
478
483
|
import React5 from "react";
|
|
479
484
|
import { useTranslation as useTranslation5 } from "@dxos/react-ui";
|
|
480
|
-
var CollectionSection = ({
|
|
485
|
+
var CollectionSection = ({ role, object }) => {
|
|
481
486
|
var _effect = _useSignals5();
|
|
482
487
|
try {
|
|
483
488
|
const { t } = useTranslation5(meta.id);
|
|
484
489
|
return /* @__PURE__ */ React5.createElement("div", {
|
|
490
|
+
role,
|
|
485
491
|
className: "min-bs-[3.5rem] grid grid-rows-subgrid grid-cols-subgrid items-center"
|
|
486
492
|
}, /* @__PURE__ */ React5.createElement("span", {
|
|
487
493
|
className: "truncate"
|
|
488
|
-
},
|
|
494
|
+
}, object.name ?? t("unnamed collection label")));
|
|
489
495
|
} finally {
|
|
490
496
|
_effect.f();
|
|
491
497
|
}
|
|
492
498
|
};
|
|
493
499
|
|
|
494
|
-
// src/components/JoinDialog.tsx
|
|
500
|
+
// src/components/JoinDialog/JoinDialog.tsx
|
|
495
501
|
import { useSignals as _useSignals6 } from "@preact-signals/safe-react/tracking";
|
|
496
502
|
import React6, { useCallback as useCallback5 } from "react";
|
|
497
|
-
import { LayoutAction as LayoutAction4, createIntent as createIntent4
|
|
503
|
+
import { LayoutAction as LayoutAction4, createIntent as createIntent4 } from "@dxos/app-framework";
|
|
504
|
+
import { useAppGraph, useIntentDispatcher as useIntentDispatcher4 } from "@dxos/app-framework/react";
|
|
498
505
|
import { Trigger } from "@dxos/async";
|
|
499
506
|
import { ObservabilityAction } from "@dxos/plugin-observability/types";
|
|
500
507
|
import { useClient as useClient3 } from "@dxos/react-client";
|
|
@@ -607,22 +614,24 @@ var JoinDialog = ({ navigableCollections, onDone, ...props }) => {
|
|
|
607
614
|
}
|
|
608
615
|
};
|
|
609
616
|
|
|
610
|
-
// src/components/MembersContainer.tsx
|
|
617
|
+
// src/components/MembersContainer/MembersContainer.tsx
|
|
611
618
|
import { useSignals as _useSignals7 } from "@preact-signals/safe-react/tracking";
|
|
612
619
|
import React7, { useCallback as useCallback6, useMemo, useState as useState3 } from "react";
|
|
613
620
|
import { QR } from "react-qr-rounded";
|
|
614
|
-
import { createIntent as createIntent5
|
|
621
|
+
import { createIntent as createIntent5 } from "@dxos/app-framework";
|
|
622
|
+
import { useIntentDispatcher as useIntentDispatcher5 } from "@dxos/app-framework/react";
|
|
623
|
+
import { Obj as Obj3 } from "@dxos/echo";
|
|
615
624
|
import { log } from "@dxos/log";
|
|
616
625
|
import { useConfig } from "@dxos/react-client";
|
|
617
|
-
import {
|
|
626
|
+
import { useSpaceInvitations } from "@dxos/react-client/echo";
|
|
618
627
|
import { Invitation, InvitationEncoder } from "@dxos/react-client/invitations";
|
|
619
|
-
import { Button as
|
|
628
|
+
import { Button as Button2, Clipboard, Icon as Icon3, Input, useId, useTranslation as useTranslation7 } from "@dxos/react-ui";
|
|
620
629
|
import { ControlFrame, ControlFrameItem, ControlItemInput, ControlPage, ControlSection } from "@dxos/react-ui-form";
|
|
621
630
|
import { StackItem } from "@dxos/react-ui-stack";
|
|
622
|
-
import {
|
|
631
|
+
import { Collection as Collection2 } from "@dxos/schema";
|
|
623
632
|
import { AuthCode, BifurcatedAction, Centered, Emoji, InvitationList, SpaceMemberList, Viewport } from "@dxos/shell/react";
|
|
624
633
|
import { hexToEmoji } from "@dxos/util";
|
|
625
|
-
var __dxlog_file2 = "/__w/dxos/dxos/packages/plugins/plugin-space/src/components/MembersContainer.tsx";
|
|
634
|
+
var __dxlog_file2 = "/__w/dxos/dxos/packages/plugins/plugin-space/src/components/MembersContainer/MembersContainer.tsx";
|
|
626
635
|
var activeActionKey = "dxos:react-shell/space-manager/active-action";
|
|
627
636
|
var handleInvitationEvent = (invitation, subscription) => {
|
|
628
637
|
const invitationCode = InvitationEncoder.encode(invitation);
|
|
@@ -632,7 +641,7 @@ var handleInvitationEvent = (invitation, subscription) => {
|
|
|
632
641
|
authCode: invitation.authCode
|
|
633
642
|
}), void 0, {
|
|
634
643
|
F: __dxlog_file2,
|
|
635
|
-
L:
|
|
644
|
+
L: 41,
|
|
636
645
|
S: void 0,
|
|
637
646
|
C: (f, a) => f(...a)
|
|
638
647
|
});
|
|
@@ -654,7 +663,7 @@ var MembersContainer = ({ space, createInvitationUrl }) => {
|
|
|
654
663
|
setInternalActiveAction(nextAction);
|
|
655
664
|
localStorage.setItem(activeActionKey, nextAction);
|
|
656
665
|
};
|
|
657
|
-
const target = space.properties[
|
|
666
|
+
const target = space.properties[Collection2.Collection.typename]?.target?.objects[0]?.target;
|
|
658
667
|
const locked = space.properties[COMPOSER_SPACE_LOCK];
|
|
659
668
|
const handleChangeLocked = useCallback6(() => {
|
|
660
669
|
space.properties[COMPOSER_SPACE_LOCK] = !locked;
|
|
@@ -678,7 +687,7 @@ var MembersContainer = ({ space, createInvitationUrl }) => {
|
|
|
678
687
|
type: Invitation.Type.INTERACTIVE,
|
|
679
688
|
authMethod: Invitation.AuthMethod.SHARED_SECRET,
|
|
680
689
|
multiUse: false,
|
|
681
|
-
target: target &&
|
|
690
|
+
target: target && Obj3.getDXN(target).toString()
|
|
682
691
|
}));
|
|
683
692
|
if (invitation && config.values.runtime?.app?.env?.DX_ENVIRONMENT !== "production") {
|
|
684
693
|
const subscription = invitation.subscribe((invitation2) => handleInvitationEvent(invitation2, subscription));
|
|
@@ -700,7 +709,7 @@ var MembersContainer = ({ space, createInvitationUrl }) => {
|
|
|
700
709
|
type: Invitation.Type.DELEGATED,
|
|
701
710
|
authMethod: Invitation.AuthMethod.KNOWN_PUBLIC_KEY,
|
|
702
711
|
multiUse: true,
|
|
703
|
-
target: target &&
|
|
712
|
+
target: target && Obj3.getDXN(target).toString()
|
|
704
713
|
}));
|
|
705
714
|
if (invitation && config.values.runtime?.app?.env?.DX_ENVIRONMENT !== "production") {
|
|
706
715
|
const subscription = invitation.subscribe((invitation2) => handleInvitationEvent(invitation2, subscription));
|
|
@@ -824,7 +833,7 @@ var InvitationQR = ({ id, url, onCancel }) => {
|
|
|
824
833
|
className: "sr-only"
|
|
825
834
|
}, t("qr label")), /* @__PURE__ */ React7.createElement(Clipboard.Button, {
|
|
826
835
|
value: url ?? "never"
|
|
827
|
-
})), /* @__PURE__ */ React7.createElement(
|
|
836
|
+
})), /* @__PURE__ */ React7.createElement(Button2, {
|
|
828
837
|
variant: "ghost",
|
|
829
838
|
onClick: onCancel
|
|
830
839
|
}, t("cancel label")));
|
|
@@ -848,7 +857,7 @@ var InvitationAuthCode = ({ id, code, onCancel }) => {
|
|
|
848
857
|
code,
|
|
849
858
|
large: true,
|
|
850
859
|
classNames: "mli-auto mlb-2 text-center grow"
|
|
851
|
-
}), /* @__PURE__ */ React7.createElement(
|
|
860
|
+
}), /* @__PURE__ */ React7.createElement(Button2, {
|
|
852
861
|
variant: "ghost",
|
|
853
862
|
onClick: onCancel
|
|
854
863
|
}, t("cancel label")));
|
|
@@ -859,11 +868,11 @@ var InvitationAuthCode = ({ id, code, onCancel }) => {
|
|
|
859
868
|
var InvitationComplete = ({ statusValue }) => {
|
|
860
869
|
var _effect = _useSignals7();
|
|
861
870
|
try {
|
|
862
|
-
return statusValue > 0 ? /* @__PURE__ */ React7.createElement(
|
|
871
|
+
return statusValue > 0 ? /* @__PURE__ */ React7.createElement(Icon3, {
|
|
863
872
|
icon: "ph--check--regular",
|
|
864
873
|
size: 6,
|
|
865
874
|
classNames: "m-1.5"
|
|
866
|
-
}) : /* @__PURE__ */ React7.createElement(
|
|
875
|
+
}) : /* @__PURE__ */ React7.createElement(Icon3, {
|
|
867
876
|
icon: "ph--x--regular",
|
|
868
877
|
size: 6,
|
|
869
878
|
classNames: "m-1.5"
|
|
@@ -878,7 +887,7 @@ import { useSignals as _useSignals8 } from "@preact-signals/safe-react/tracking"
|
|
|
878
887
|
import React8 from "react";
|
|
879
888
|
import { getSpace as getSpace2 } from "@dxos/client/echo";
|
|
880
889
|
import { useClient as useClient4 } from "@dxos/react-client";
|
|
881
|
-
import { DropdownMenu, Icon as
|
|
890
|
+
import { DropdownMenu, Icon as Icon4, toLocalizedString as toLocalizedString2, useTranslation as useTranslation8 } from "@dxos/react-ui";
|
|
882
891
|
var MenuFooter = ({ object }) => {
|
|
883
892
|
var _effect = _useSignals8();
|
|
884
893
|
try {
|
|
@@ -894,7 +903,7 @@ var MenuFooter = ({ object }) => {
|
|
|
894
903
|
className: "uppercase text-[.75em] tracking-wide font-medium mbs-px self-start"
|
|
895
904
|
}, t("location label")), /* @__PURE__ */ React8.createElement("dd", {
|
|
896
905
|
className: "line-clamp-3"
|
|
897
|
-
}, /* @__PURE__ */ React8.createElement(
|
|
906
|
+
}, /* @__PURE__ */ React8.createElement(Icon4, {
|
|
898
907
|
icon: "ph--planet--regular",
|
|
899
908
|
classNames: "inline-block mie-1"
|
|
900
909
|
}), toLocalizedString2(spaceName, t)))) : null;
|
|
@@ -903,90 +912,26 @@ var MenuFooter = ({ object }) => {
|
|
|
903
912
|
}
|
|
904
913
|
};
|
|
905
914
|
|
|
906
|
-
// src/components/
|
|
915
|
+
// src/components/ObjectRenamePopover/ObjectRenamePopover.tsx
|
|
907
916
|
import { useSignals as _useSignals9 } from "@preact-signals/safe-react/tracking";
|
|
908
|
-
import React9, {
|
|
909
|
-
import {
|
|
910
|
-
import {
|
|
911
|
-
import {
|
|
912
|
-
|
|
917
|
+
import React9, { useCallback as useCallback7, useRef as useRef3, useState as useState4 } from "react";
|
|
918
|
+
import { LayoutAction as LayoutAction5, createIntent as createIntent6 } from "@dxos/app-framework";
|
|
919
|
+
import { useIntentDispatcher as useIntentDispatcher6 } from "@dxos/app-framework/react";
|
|
920
|
+
import { Obj as Obj4 } from "@dxos/echo";
|
|
921
|
+
import { log as log2 } from "@dxos/log";
|
|
922
|
+
import { Button as Button3, Input as Input2, useTranslation as useTranslation9 } from "@dxos/react-ui";
|
|
923
|
+
var __dxlog_file3 = "/__w/dxos/dxos/packages/plugins/plugin-space/src/components/ObjectRenamePopover/ObjectRenamePopover.tsx";
|
|
924
|
+
var OBJECT_RENAME_POPOVER = `${meta.id}/ObjectRenamePopover`;
|
|
925
|
+
var ObjectRenamePopover = ({ object }) => {
|
|
913
926
|
var _effect = _useSignals9();
|
|
914
927
|
try {
|
|
915
928
|
const { t } = useTranslation9(meta.id);
|
|
916
|
-
const [displayMessage, setDisplayMessage] = useState4(false);
|
|
917
|
-
const [status, naturalSetStatus] = useState4(0);
|
|
918
|
-
const [prevStatus, setPrevStatus] = useState4(0);
|
|
919
|
-
const _setStatus = debounce(naturalSetStatus, 500);
|
|
920
|
-
useEffect2(() => {
|
|
921
|
-
setPrevStatus(status);
|
|
922
|
-
if (prevStatus !== status && status === 0) {
|
|
923
|
-
setDisplayMessage(true);
|
|
924
|
-
const timeout = setTimeout(() => setDisplayMessage(false), 5e3);
|
|
925
|
-
return () => clearTimeout(timeout);
|
|
926
|
-
}
|
|
927
|
-
}, [
|
|
928
|
-
status
|
|
929
|
-
]);
|
|
930
|
-
switch (status) {
|
|
931
|
-
case 2:
|
|
932
|
-
return /* @__PURE__ */ React9.createElement("div", {
|
|
933
|
-
className: "flex items-center"
|
|
934
|
-
}, /* @__PURE__ */ React9.createElement(Icon7, {
|
|
935
|
-
icon: "ph--warning--regular",
|
|
936
|
-
size: 4,
|
|
937
|
-
classNames: "me-1"
|
|
938
|
-
}), /* @__PURE__ */ React9.createElement("span", {
|
|
939
|
-
className: mx("text-sm", warningText)
|
|
940
|
-
}, t("persistence error label")));
|
|
941
|
-
case 1:
|
|
942
|
-
return /* @__PURE__ */ React9.createElement("div", {
|
|
943
|
-
className: "flex items-center"
|
|
944
|
-
}, /* @__PURE__ */ React9.createElement(Icon7, {
|
|
945
|
-
icon: "ph--arrows-counter-clockwise--regular",
|
|
946
|
-
size: 4,
|
|
947
|
-
classNames: "me-1"
|
|
948
|
-
}), /* @__PURE__ */ React9.createElement("span", {
|
|
949
|
-
className: mx("text-sm", staticPlaceholderText)
|
|
950
|
-
}, t("persistence pending label")));
|
|
951
|
-
case 0:
|
|
952
|
-
default:
|
|
953
|
-
return /* @__PURE__ */ React9.createElement(Tooltip.Trigger, {
|
|
954
|
-
delayDuration: 400,
|
|
955
|
-
role: "status",
|
|
956
|
-
content: t("persisted locally message"),
|
|
957
|
-
className: "flex items-center"
|
|
958
|
-
}, /* @__PURE__ */ React9.createElement(Icon7, {
|
|
959
|
-
icon: "ph--check-circle--regular",
|
|
960
|
-
size: 4,
|
|
961
|
-
classNames: "me-1"
|
|
962
|
-
}), displayMessage && /* @__PURE__ */ React9.createElement("span", {
|
|
963
|
-
className: mx("text-sm", staticPlaceholderText)
|
|
964
|
-
}, t("persisted locally label")));
|
|
965
|
-
}
|
|
966
|
-
} finally {
|
|
967
|
-
_effect.f();
|
|
968
|
-
}
|
|
969
|
-
};
|
|
970
|
-
|
|
971
|
-
// src/components/PopoverRenameObject.tsx
|
|
972
|
-
import { useSignals as _useSignals10 } from "@preact-signals/safe-react/tracking";
|
|
973
|
-
import React10, { useCallback as useCallback7, useRef as useRef3, useState as useState5 } from "react";
|
|
974
|
-
import { LayoutAction as LayoutAction5, createIntent as createIntent6, useIntentDispatcher as useIntentDispatcher6 } from "@dxos/app-framework";
|
|
975
|
-
import { Obj as Obj2 } from "@dxos/echo";
|
|
976
|
-
import { log as log2 } from "@dxos/log";
|
|
977
|
-
import { Button as Button5, Input as Input2, useTranslation as useTranslation10 } from "@dxos/react-ui";
|
|
978
|
-
var __dxlog_file3 = "/__w/dxos/dxos/packages/plugins/plugin-space/src/components/PopoverRenameObject.tsx";
|
|
979
|
-
var POPOVER_RENAME_OBJECT = `${meta.id}/PopoverRenameObject`;
|
|
980
|
-
var PopoverRenameObject = ({ object }) => {
|
|
981
|
-
var _effect = _useSignals10();
|
|
982
|
-
try {
|
|
983
|
-
const { t } = useTranslation10(meta.id);
|
|
984
929
|
const doneButton = useRef3(null);
|
|
985
|
-
const [name, setName] =
|
|
930
|
+
const [name, setName] = useState4(Obj4.getLabel(object));
|
|
986
931
|
const { dispatchPromise: dispatch } = useIntentDispatcher6();
|
|
987
932
|
const handleDone = useCallback7(() => {
|
|
988
933
|
try {
|
|
989
|
-
name &&
|
|
934
|
+
name && Obj4.setLabel(object, name);
|
|
990
935
|
} catch (err) {
|
|
991
936
|
log2.error("Failed to rename object", {
|
|
992
937
|
err
|
|
@@ -1009,21 +954,21 @@ var PopoverRenameObject = ({ object }) => {
|
|
|
1009
954
|
object,
|
|
1010
955
|
name
|
|
1011
956
|
]);
|
|
1012
|
-
return /* @__PURE__ */
|
|
957
|
+
return /* @__PURE__ */ React9.createElement("div", {
|
|
1013
958
|
role: "none",
|
|
1014
959
|
className: "p-2 flex gap-2"
|
|
1015
|
-
}, /* @__PURE__ */
|
|
960
|
+
}, /* @__PURE__ */ React9.createElement("div", {
|
|
1016
961
|
role: "none",
|
|
1017
962
|
className: "flex-1"
|
|
1018
|
-
}, /* @__PURE__ */
|
|
963
|
+
}, /* @__PURE__ */ React9.createElement(Input2.Root, null, /* @__PURE__ */ React9.createElement(Input2.Label, {
|
|
1019
964
|
srOnly: true
|
|
1020
|
-
}, t("object name label")), /* @__PURE__ */
|
|
965
|
+
}, t("object name label")), /* @__PURE__ */ React9.createElement(Input2.TextInput, {
|
|
1021
966
|
placeholder: t("object placeholder"),
|
|
1022
967
|
value: name,
|
|
1023
968
|
"data-testid": "spacePlugin.renameObject.input",
|
|
1024
|
-
onChange: ({ target: { value } }) => setName(
|
|
969
|
+
onChange: ({ target: { value: value2 } }) => setName(value2),
|
|
1025
970
|
onKeyDown: ({ key }) => key === "Enter" && doneButton.current?.click()
|
|
1026
|
-
}))), /* @__PURE__ */
|
|
971
|
+
}))), /* @__PURE__ */ React9.createElement(Button3, {
|
|
1027
972
|
ref: doneButton,
|
|
1028
973
|
classNames: "self-stretch",
|
|
1029
974
|
onClick: handleDone
|
|
@@ -1035,18 +980,19 @@ var PopoverRenameObject = ({ object }) => {
|
|
|
1035
980
|
}
|
|
1036
981
|
};
|
|
1037
982
|
|
|
1038
|
-
// src/components/
|
|
1039
|
-
import { useSignals as
|
|
1040
|
-
import
|
|
1041
|
-
import { LayoutAction as LayoutAction6, createIntent as createIntent7
|
|
1042
|
-
import {
|
|
1043
|
-
|
|
1044
|
-
var
|
|
1045
|
-
|
|
983
|
+
// src/components/SpaceRenamePopover/SpaceRenamePopover.tsx
|
|
984
|
+
import { useSignals as _useSignals10 } from "@preact-signals/safe-react/tracking";
|
|
985
|
+
import React10, { useCallback as useCallback8, useRef as useRef4, useState as useState5 } from "react";
|
|
986
|
+
import { LayoutAction as LayoutAction6, createIntent as createIntent7 } from "@dxos/app-framework";
|
|
987
|
+
import { useIntentDispatcher as useIntentDispatcher7 } from "@dxos/app-framework/react";
|
|
988
|
+
import { Button as Button4, Input as Input3, Popover, useTranslation as useTranslation10 } from "@dxos/react-ui";
|
|
989
|
+
var SPACE_RENAME_POPOVER = `${meta.id}/SpaceRenamePopover`;
|
|
990
|
+
var SpaceRenamePopover = ({ space }) => {
|
|
991
|
+
var _effect = _useSignals10();
|
|
1046
992
|
try {
|
|
1047
|
-
const { t } =
|
|
993
|
+
const { t } = useTranslation10(meta.id);
|
|
1048
994
|
const doneButton = useRef4(null);
|
|
1049
|
-
const [name, setName] =
|
|
995
|
+
const [name, setName] = useState5(space.properties.name ?? "");
|
|
1050
996
|
const { dispatchPromise: dispatch } = useIntentDispatcher7();
|
|
1051
997
|
const handleDone = useCallback8(() => {
|
|
1052
998
|
space.properties.name = name;
|
|
@@ -1062,24 +1008,24 @@ var PopoverRenameSpace = ({ space }) => {
|
|
|
1062
1008
|
space,
|
|
1063
1009
|
name
|
|
1064
1010
|
]);
|
|
1065
|
-
return /* @__PURE__ */
|
|
1011
|
+
return /* @__PURE__ */ React10.createElement("div", {
|
|
1066
1012
|
role: "none",
|
|
1067
1013
|
className: "p-2 flex gap-2"
|
|
1068
|
-
}, /* @__PURE__ */
|
|
1014
|
+
}, /* @__PURE__ */ React10.createElement("div", {
|
|
1069
1015
|
role: "none",
|
|
1070
1016
|
className: "flex-1"
|
|
1071
|
-
}, /* @__PURE__ */
|
|
1017
|
+
}, /* @__PURE__ */ React10.createElement(Input3.Root, null, /* @__PURE__ */ React10.createElement(Input3.Label, {
|
|
1072
1018
|
srOnly: true
|
|
1073
|
-
}, t("space name label")), /* @__PURE__ */
|
|
1019
|
+
}, t("space name label")), /* @__PURE__ */ React10.createElement(Input3.TextInput, {
|
|
1074
1020
|
defaultValue: space.properties.name ?? "",
|
|
1075
1021
|
placeholder: t("unnamed space label"),
|
|
1076
|
-
onChange: ({ target: { value } }) => setName(
|
|
1022
|
+
onChange: ({ target: { value: value2 } }) => setName(value2),
|
|
1077
1023
|
// TODO(wittjosiah): Ideally this should access the popover context to close the popover.
|
|
1078
1024
|
// Currently this is not possible because Radix does not expose the popover context.
|
|
1079
1025
|
onKeyDown: ({ key }) => key === "Enter" && doneButton.current?.click()
|
|
1080
|
-
}))), /* @__PURE__ */
|
|
1026
|
+
}))), /* @__PURE__ */ React10.createElement(Popover.Close, {
|
|
1081
1027
|
asChild: true
|
|
1082
|
-
}, /* @__PURE__ */
|
|
1028
|
+
}, /* @__PURE__ */ React10.createElement(Button4, {
|
|
1083
1029
|
ref: doneButton,
|
|
1084
1030
|
classNames: "self-stretch",
|
|
1085
1031
|
onClick: handleDone
|
|
@@ -1092,57 +1038,59 @@ var PopoverRenameSpace = ({ space }) => {
|
|
|
1092
1038
|
};
|
|
1093
1039
|
|
|
1094
1040
|
// src/components/SchemaContainer.tsx
|
|
1095
|
-
import { useSignals as
|
|
1096
|
-
import
|
|
1097
|
-
import { useTranslation as
|
|
1041
|
+
import { useSignals as _useSignals11 } from "@preact-signals/safe-react/tracking";
|
|
1042
|
+
import React11, { useEffect as useEffect2, useState as useState6 } from "react";
|
|
1043
|
+
import { useTranslation as useTranslation11 } from "@dxos/react-ui";
|
|
1098
1044
|
import { ControlPage as ControlPage2, ControlSection as ControlSection2, controlItemClasses } from "@dxos/react-ui-form";
|
|
1099
1045
|
import { StackItem as StackItem2 } from "@dxos/react-ui-stack";
|
|
1100
|
-
var useQuerySpaceSchemas = (space) => {
|
|
1101
|
-
const [schemas, setSchemas] = useState7([]);
|
|
1102
|
-
useEffect3(() => {
|
|
1103
|
-
const query = space.db.schemaRegistry.query();
|
|
1104
|
-
const initialResults = query.runSync();
|
|
1105
|
-
setSchemas(initialResults);
|
|
1106
|
-
const unsubscribe = query.subscribe(() => setSchemas(query.results));
|
|
1107
|
-
return () => unsubscribe();
|
|
1108
|
-
}, [
|
|
1109
|
-
space
|
|
1110
|
-
]);
|
|
1111
|
-
return schemas;
|
|
1112
|
-
};
|
|
1113
1046
|
var SchemaContainer = ({ space }) => {
|
|
1114
|
-
var _effect =
|
|
1047
|
+
var _effect = _useSignals11();
|
|
1115
1048
|
try {
|
|
1116
|
-
const { t } =
|
|
1049
|
+
const { t } = useTranslation11(meta.id);
|
|
1117
1050
|
const schemas = useQuerySpaceSchemas(space);
|
|
1118
|
-
return /* @__PURE__ */
|
|
1051
|
+
return /* @__PURE__ */ React11.createElement(StackItem2.Content, {
|
|
1119
1052
|
scrollable: true
|
|
1120
|
-
}, /* @__PURE__ */
|
|
1053
|
+
}, /* @__PURE__ */ React11.createElement(ControlPage2, null, /* @__PURE__ */ React11.createElement(ControlSection2, {
|
|
1121
1054
|
title: t("schema verbose label"),
|
|
1122
1055
|
description: t("schema description")
|
|
1123
|
-
}, /* @__PURE__ */
|
|
1056
|
+
}, /* @__PURE__ */ React11.createElement("div", {
|
|
1124
1057
|
role: "none",
|
|
1125
1058
|
className: controlItemClasses
|
|
1126
|
-
}, schemas.length === 0 && /* @__PURE__ */
|
|
1059
|
+
}, schemas.length === 0 && /* @__PURE__ */ React11.createElement("div", {
|
|
1127
1060
|
className: "text-center plb-4"
|
|
1128
|
-
}, t("no schemas found message")), schemas.map((schema) => /* @__PURE__ */
|
|
1061
|
+
}, t("no schemas found message")), schemas.map((schema) => /* @__PURE__ */ React11.createElement("div", {
|
|
1062
|
+
role: "none",
|
|
1129
1063
|
key: schema.id
|
|
1130
|
-
},
|
|
1064
|
+
}, schema.typename))))));
|
|
1131
1065
|
} finally {
|
|
1132
1066
|
_effect.f();
|
|
1133
1067
|
}
|
|
1134
1068
|
};
|
|
1069
|
+
var useQuerySpaceSchemas = (space) => {
|
|
1070
|
+
const [schemas, setSchemas] = useState6([]);
|
|
1071
|
+
useEffect2(() => {
|
|
1072
|
+
const query = space.db.schemaRegistry.query();
|
|
1073
|
+
const initialResults = query.runSync();
|
|
1074
|
+
setSchemas(initialResults);
|
|
1075
|
+
const unsubscribe = query.subscribe(() => setSchemas(query.results));
|
|
1076
|
+
return () => unsubscribe();
|
|
1077
|
+
}, [
|
|
1078
|
+
space
|
|
1079
|
+
]);
|
|
1080
|
+
return schemas;
|
|
1081
|
+
};
|
|
1135
1082
|
|
|
1136
|
-
// src/components/SpacePresence.tsx
|
|
1137
|
-
import { useSignals as
|
|
1083
|
+
// src/components/SpacePresence/SpacePresence.tsx
|
|
1084
|
+
import { useSignals as _useSignals12 } from "@preact-signals/safe-react/tracking";
|
|
1138
1085
|
import * as Option2 from "effect/Option";
|
|
1139
|
-
import
|
|
1140
|
-
import { useAppGraph as useAppGraph2, useCapability } from "@dxos/app-framework";
|
|
1086
|
+
import React12, { forwardRef, useCallback as useCallback9, useEffect as useEffect3, useState as useState7 } from "react";
|
|
1087
|
+
import { useAppGraph as useAppGraph2, useCapability } from "@dxos/app-framework/react";
|
|
1141
1088
|
import { generateName } from "@dxos/display-name";
|
|
1089
|
+
import { Obj as Obj5 } from "@dxos/echo";
|
|
1142
1090
|
import { PublicKey, useClient as useClient5 } from "@dxos/react-client";
|
|
1143
|
-
import {
|
|
1091
|
+
import { getSpace as getSpace3, useMembers } from "@dxos/react-client/echo";
|
|
1144
1092
|
import { useIdentity } from "@dxos/react-client/halo";
|
|
1145
|
-
import { Avatar, List, ListItem, Popover as Popover2, Tooltip
|
|
1093
|
+
import { Avatar, List, ListItem, Popover as Popover2, Tooltip, useDefaultValue as useDefaultValue2, useTranslation as useTranslation12 } from "@dxos/react-ui";
|
|
1146
1094
|
import { AttentionGlyph, useAttended, useAttention } from "@dxos/react-ui-attention";
|
|
1147
1095
|
import { ComplexMap, keyToFallback } from "@dxos/util";
|
|
1148
1096
|
var REFRESH_INTERVAL = 5e3;
|
|
@@ -1150,15 +1098,15 @@ var ACTIVITY_DURATION = 3e4;
|
|
|
1150
1098
|
var noViewers = new ComplexMap(PublicKey.hash);
|
|
1151
1099
|
var getName = (identity) => identity.profile?.displayName ?? generateName(identity.identityKey.toHex());
|
|
1152
1100
|
var SpacePresence = ({ object, spaceKey }) => {
|
|
1153
|
-
var _effect =
|
|
1101
|
+
var _effect = _useSignals12();
|
|
1154
1102
|
try {
|
|
1155
1103
|
const spaceState = useCapability(SpaceCapabilities.MutableState);
|
|
1156
1104
|
const client = useClient5();
|
|
1157
1105
|
const identity = useIdentity();
|
|
1158
1106
|
const space = spaceKey ? client.spaces.get(spaceKey) : getSpace3(object);
|
|
1159
1107
|
const spaceMembers = useMembers(space?.key);
|
|
1160
|
-
const [_moment, setMoment] =
|
|
1161
|
-
|
|
1108
|
+
const [_moment, setMoment] = useState7(Date.now());
|
|
1109
|
+
useEffect3(() => {
|
|
1162
1110
|
const interval = setInterval(() => setMoment(Date.now()), REFRESH_INTERVAL);
|
|
1163
1111
|
return () => clearInterval(interval);
|
|
1164
1112
|
}, []);
|
|
@@ -1169,7 +1117,7 @@ var SpacePresence = ({ object, spaceKey }) => {
|
|
|
1169
1117
|
if (!identity || !spaceState || !space) {
|
|
1170
1118
|
return null;
|
|
1171
1119
|
}
|
|
1172
|
-
const currentObjectViewers = spaceState.viewersByObject[
|
|
1120
|
+
const currentObjectViewers = spaceState.viewersByObject[Obj5.getDXN(object).toString()] ?? noViewers;
|
|
1173
1121
|
const membersForObject = spaceMembers.filter((member) => memberOnline(member) && memberIsNotSelf(member)).filter((member) => currentObjectViewers.has(member.identity.identityKey)).map((member) => {
|
|
1174
1122
|
const objectView = currentObjectViewers.get(member.identity.identityKey);
|
|
1175
1123
|
const lastSeen = objectView?.lastSeen ?? -Infinity;
|
|
@@ -1180,7 +1128,7 @@ var SpacePresence = ({ object, spaceKey }) => {
|
|
|
1180
1128
|
lastSeen
|
|
1181
1129
|
};
|
|
1182
1130
|
}).toSorted((a, b) => a.lastSeen - b.lastSeen);
|
|
1183
|
-
return /* @__PURE__ */
|
|
1131
|
+
return /* @__PURE__ */ React12.createElement(FullPresence, {
|
|
1184
1132
|
members: membersForObject
|
|
1185
1133
|
});
|
|
1186
1134
|
} finally {
|
|
@@ -1188,46 +1136,46 @@ var SpacePresence = ({ object, spaceKey }) => {
|
|
|
1188
1136
|
}
|
|
1189
1137
|
};
|
|
1190
1138
|
var FullPresence = (props) => {
|
|
1191
|
-
var _effect =
|
|
1139
|
+
var _effect = _useSignals12();
|
|
1192
1140
|
try {
|
|
1193
1141
|
const { size = 9, onMemberClick } = props;
|
|
1194
1142
|
const members = useDefaultValue2(props.members, () => []);
|
|
1195
1143
|
if (members.length === 0) {
|
|
1196
1144
|
return null;
|
|
1197
1145
|
}
|
|
1198
|
-
return /* @__PURE__ */
|
|
1146
|
+
return /* @__PURE__ */ React12.createElement("div", {
|
|
1199
1147
|
className: "dx-avatar-group",
|
|
1200
1148
|
"data-testid": "spacePlugin.presence"
|
|
1201
|
-
}, members.slice(0, 3).map((member, i) => /* @__PURE__ */
|
|
1149
|
+
}, members.slice(0, 3).map((member, i) => /* @__PURE__ */ React12.createElement(Tooltip.Trigger, {
|
|
1202
1150
|
key: member.identity.identityKey.toHex(),
|
|
1203
1151
|
side: "bottom",
|
|
1204
1152
|
content: getName(member.identity),
|
|
1205
1153
|
className: "grid focus:outline-none"
|
|
1206
|
-
}, /* @__PURE__ */
|
|
1154
|
+
}, /* @__PURE__ */ React12.createElement(PresenceAvatar, {
|
|
1207
1155
|
identity: member.identity,
|
|
1208
1156
|
match: member.currentlyAttended,
|
|
1209
1157
|
index: members.length - i,
|
|
1210
1158
|
onClick: () => onMemberClick?.(member),
|
|
1211
1159
|
size
|
|
1212
|
-
}))), members.length > 3 && /* @__PURE__ */
|
|
1160
|
+
}))), members.length > 3 && /* @__PURE__ */ React12.createElement(Popover2.Root, null, /* @__PURE__ */ React12.createElement(Popover2.Trigger, {
|
|
1213
1161
|
className: "grid focus:outline-none"
|
|
1214
|
-
}, /* @__PURE__ */
|
|
1162
|
+
}, /* @__PURE__ */ React12.createElement(Avatar.Root, null, /* @__PURE__ */ React12.createElement(Avatar.Content, {
|
|
1215
1163
|
status: "inactive",
|
|
1216
1164
|
style: {
|
|
1217
1165
|
zIndex: members.length - 4
|
|
1218
1166
|
},
|
|
1219
1167
|
fallback: `+${members.length - 3}`,
|
|
1220
1168
|
size
|
|
1221
|
-
}))), /* @__PURE__ */
|
|
1169
|
+
}))), /* @__PURE__ */ React12.createElement(Popover2.Portal, null, /* @__PURE__ */ React12.createElement(Popover2.Content, {
|
|
1222
1170
|
side: "bottom"
|
|
1223
|
-
}, /* @__PURE__ */
|
|
1171
|
+
}, /* @__PURE__ */ React12.createElement(Popover2.Arrow, null), /* @__PURE__ */ React12.createElement(Popover2.Viewport, {
|
|
1224
1172
|
classNames: "max-bs-56"
|
|
1225
|
-
}, /* @__PURE__ */
|
|
1173
|
+
}, /* @__PURE__ */ React12.createElement(List, null, members.map((member) => /* @__PURE__ */ React12.createElement(ListItem.Root, {
|
|
1226
1174
|
key: member.identity.identityKey.toHex(),
|
|
1227
1175
|
classNames: "flex gap-2 items-center cursor-pointer mbe-2",
|
|
1228
1176
|
onClick: () => onMemberClick?.(member),
|
|
1229
1177
|
"data-testid": "identity-list-item"
|
|
1230
|
-
}, /* @__PURE__ */
|
|
1178
|
+
}, /* @__PURE__ */ React12.createElement(PresenceAvatar, {
|
|
1231
1179
|
identity: member.identity,
|
|
1232
1180
|
size,
|
|
1233
1181
|
showName: true,
|
|
@@ -1237,12 +1185,12 @@ var FullPresence = (props) => {
|
|
|
1237
1185
|
_effect.f();
|
|
1238
1186
|
}
|
|
1239
1187
|
};
|
|
1240
|
-
var PresenceAvatar = /* @__PURE__ */ forwardRef(({ identity, showName, match, index, onClick, size }, forwardedRef) => {
|
|
1241
|
-
var _effect =
|
|
1188
|
+
var PresenceAvatar = /* @__PURE__ */ forwardRef(({ identity, showName, match: match2, index, onClick, size }, forwardedRef) => {
|
|
1189
|
+
var _effect = _useSignals12();
|
|
1242
1190
|
try {
|
|
1243
|
-
const status =
|
|
1191
|
+
const status = match2 ? "current" : "active";
|
|
1244
1192
|
const fallbackValue = keyToFallback(identity.identityKey);
|
|
1245
|
-
return /* @__PURE__ */
|
|
1193
|
+
return /* @__PURE__ */ React12.createElement(Avatar.Root, null, /* @__PURE__ */ React12.createElement(Avatar.Content, {
|
|
1246
1194
|
status,
|
|
1247
1195
|
hue: identity.profile?.data?.hue || fallbackValue.hue,
|
|
1248
1196
|
"data-testid": "spacePlugin.presence.member",
|
|
@@ -1256,7 +1204,7 @@ var PresenceAvatar = /* @__PURE__ */ forwardRef(({ identity, showName, match, in
|
|
|
1256
1204
|
onClick,
|
|
1257
1205
|
fallback: identity.profile?.data?.emoji || fallbackValue.emoji,
|
|
1258
1206
|
ref: forwardedRef
|
|
1259
|
-
}), /* @__PURE__ */
|
|
1207
|
+
}), /* @__PURE__ */ React12.createElement(Avatar.Label, {
|
|
1260
1208
|
classNames: showName ? "text-sm truncate pli-2" : "sr-only"
|
|
1261
1209
|
}, getName(identity)));
|
|
1262
1210
|
} finally {
|
|
@@ -1264,7 +1212,7 @@ var PresenceAvatar = /* @__PURE__ */ forwardRef(({ identity, showName, match, in
|
|
|
1264
1212
|
}
|
|
1265
1213
|
});
|
|
1266
1214
|
var SmallPresenceLive = ({ id, open, viewers }) => {
|
|
1267
|
-
var _effect =
|
|
1215
|
+
var _effect = _useSignals12();
|
|
1268
1216
|
try {
|
|
1269
1217
|
const { hasAttention, isAncestor, isRelated } = useAttention(id);
|
|
1270
1218
|
const isAttended = hasAttention || isAncestor || isRelated;
|
|
@@ -1277,8 +1225,8 @@ var SmallPresenceLive = ({ id, open, viewers }) => {
|
|
|
1277
1225
|
const moment = Date.now();
|
|
1278
1226
|
return Array.from(viewers2.values()).filter((viewer) => moment - viewer.lastSeen < ACTIVITY_DURATION);
|
|
1279
1227
|
};
|
|
1280
|
-
const [activeViewers, setActiveViewers] =
|
|
1281
|
-
|
|
1228
|
+
const [activeViewers, setActiveViewers] = useState7(viewers ? getActiveViewers(viewers) : []);
|
|
1229
|
+
useEffect3(() => {
|
|
1282
1230
|
if (viewers) {
|
|
1283
1231
|
setActiveViewers(getActiveViewers(viewers));
|
|
1284
1232
|
const interval = setInterval(() => {
|
|
@@ -1289,7 +1237,7 @@ var SmallPresenceLive = ({ id, open, viewers }) => {
|
|
|
1289
1237
|
}, [
|
|
1290
1238
|
viewers
|
|
1291
1239
|
]);
|
|
1292
|
-
return /* @__PURE__ */
|
|
1240
|
+
return /* @__PURE__ */ React12.createElement(SmallPresence, {
|
|
1293
1241
|
count: activeViewers.length,
|
|
1294
1242
|
attended: isAttended,
|
|
1295
1243
|
containsAttended
|
|
@@ -1299,16 +1247,16 @@ var SmallPresenceLive = ({ id, open, viewers }) => {
|
|
|
1299
1247
|
}
|
|
1300
1248
|
};
|
|
1301
1249
|
var SmallPresence = ({ count = 0, attended, containsAttended }) => {
|
|
1302
|
-
var _effect =
|
|
1250
|
+
var _effect = _useSignals12();
|
|
1303
1251
|
try {
|
|
1304
|
-
const { t } =
|
|
1305
|
-
return /* @__PURE__ */
|
|
1252
|
+
const { t } = useTranslation12(meta.id);
|
|
1253
|
+
return /* @__PURE__ */ React12.createElement(Tooltip.Trigger, {
|
|
1306
1254
|
asChild: true,
|
|
1307
1255
|
content: t("presence label", {
|
|
1308
1256
|
count
|
|
1309
1257
|
}),
|
|
1310
1258
|
side: "bottom"
|
|
1311
|
-
}, /* @__PURE__ */
|
|
1259
|
+
}, /* @__PURE__ */ React12.createElement(AttentionGlyph, {
|
|
1312
1260
|
attended,
|
|
1313
1261
|
containsAttended,
|
|
1314
1262
|
presence: count > 1 ? "many" : count === 1 ? "one" : "none",
|
|
@@ -1320,43 +1268,44 @@ var SmallPresence = ({ count = 0, attended, containsAttended }) => {
|
|
|
1320
1268
|
};
|
|
1321
1269
|
|
|
1322
1270
|
// src/components/SpacePluginSettings.tsx
|
|
1323
|
-
import { useSignals as
|
|
1324
|
-
import
|
|
1325
|
-
import { createIntent as createIntent8
|
|
1271
|
+
import { useSignals as _useSignals13 } from "@preact-signals/safe-react/tracking";
|
|
1272
|
+
import React13 from "react";
|
|
1273
|
+
import { createIntent as createIntent8 } from "@dxos/app-framework";
|
|
1274
|
+
import { useIntentDispatcher as useIntentDispatcher8 } from "@dxos/app-framework/react";
|
|
1326
1275
|
import { useClient as useClient6 } from "@dxos/react-client";
|
|
1327
1276
|
import { useSpaces as useSpaces2 } from "@dxos/react-client/echo";
|
|
1328
|
-
import { IconButton, Input as Input4, List as List2, ListItem as ListItem2, toLocalizedString as toLocalizedString3, useTranslation as
|
|
1277
|
+
import { IconButton as IconButton3, Input as Input4, List as List2, ListItem as ListItem2, toLocalizedString as toLocalizedString3, useTranslation as useTranslation13 } from "@dxos/react-ui";
|
|
1329
1278
|
import { ControlGroup, ControlItemInput as ControlItemInput2, ControlPage as ControlPage3, ControlSection as ControlSection3, controlItemClasses as controlItemClasses2 } from "@dxos/react-ui-form";
|
|
1330
1279
|
var SpacePluginSettings = ({ settings }) => {
|
|
1331
|
-
var _effect =
|
|
1280
|
+
var _effect = _useSignals13();
|
|
1332
1281
|
try {
|
|
1333
|
-
const { t } =
|
|
1282
|
+
const { t } = useTranslation13(meta.id);
|
|
1334
1283
|
const client = useClient6();
|
|
1335
1284
|
const spaces = useSpaces2({
|
|
1336
1285
|
all: settings.showHidden
|
|
1337
1286
|
});
|
|
1338
1287
|
const { dispatchPromise: dispatch } = useIntentDispatcher8();
|
|
1339
|
-
return /* @__PURE__ */
|
|
1288
|
+
return /* @__PURE__ */ React13.createElement(ControlPage3, null, /* @__PURE__ */ React13.createElement(ControlSection3, {
|
|
1340
1289
|
title: t("space settings label"),
|
|
1341
1290
|
description: t("space settings description")
|
|
1342
|
-
}, /* @__PURE__ */
|
|
1291
|
+
}, /* @__PURE__ */ React13.createElement(ControlGroup, null, /* @__PURE__ */ React13.createElement(ControlItemInput2, {
|
|
1343
1292
|
title: t("show hidden spaces label")
|
|
1344
|
-
}, /* @__PURE__ */
|
|
1293
|
+
}, /* @__PURE__ */ React13.createElement(Input4.Switch, {
|
|
1345
1294
|
checked: settings.showHidden,
|
|
1346
1295
|
onCheckedChange: (checked) => settings.showHidden = !!checked
|
|
1347
|
-
}))), /* @__PURE__ */
|
|
1296
|
+
}))), /* @__PURE__ */ React13.createElement(List2, {
|
|
1348
1297
|
classNames: [
|
|
1349
1298
|
controlItemClasses2,
|
|
1350
1299
|
"flex flex-col gap-trimSm"
|
|
1351
1300
|
]
|
|
1352
|
-
}, spaces.map((space) => /* @__PURE__ */
|
|
1301
|
+
}, spaces.map((space) => /* @__PURE__ */ React13.createElement(ListItem2.Root, {
|
|
1353
1302
|
key: space.id,
|
|
1354
1303
|
classNames: "is-full items-center"
|
|
1355
|
-
}, /* @__PURE__ */
|
|
1304
|
+
}, /* @__PURE__ */ React13.createElement(ListItem2.Heading, {
|
|
1356
1305
|
classNames: "grow truncate !min-bs-0"
|
|
1357
1306
|
}, toLocalizedString3(getSpaceDisplayName(space, {
|
|
1358
1307
|
personal: space === client.spaces.default
|
|
1359
|
-
}), t)), /* @__PURE__ */
|
|
1308
|
+
}), t)), /* @__PURE__ */ React13.createElement(IconButton3, {
|
|
1360
1309
|
icon: "ph--faders--regular",
|
|
1361
1310
|
onClick: () => dispatch(createIntent8(SpaceAction.OpenSettings, {
|
|
1362
1311
|
space
|
|
@@ -1369,39 +1318,40 @@ var SpacePluginSettings = ({ settings }) => {
|
|
|
1369
1318
|
};
|
|
1370
1319
|
|
|
1371
1320
|
// src/components/SpaceSettings/SpaceSettingsContainer.tsx
|
|
1372
|
-
import { useSignals as
|
|
1373
|
-
import * as
|
|
1321
|
+
import { useSignals as _useSignals14 } from "@preact-signals/safe-react/tracking";
|
|
1322
|
+
import * as Function3 from "effect/Function";
|
|
1374
1323
|
import * as Schema from "effect/Schema";
|
|
1375
|
-
import
|
|
1376
|
-
import { LayoutAction as LayoutAction7, chain as chain2, createIntent as createIntent9
|
|
1324
|
+
import React14, { useCallback as useCallback10, useMemo as useMemo2, useState as useState8 } from "react";
|
|
1325
|
+
import { LayoutAction as LayoutAction7, chain as chain2, createIntent as createIntent9 } from "@dxos/app-framework";
|
|
1326
|
+
import { useIntentDispatcher as useIntentDispatcher9 } from "@dxos/app-framework/react";
|
|
1377
1327
|
import { log as log3 } from "@dxos/log";
|
|
1378
1328
|
import { EdgeReplicationSetting } from "@dxos/protocols/proto/dxos/echo/metadata";
|
|
1379
1329
|
import { useClient as useClient7 } from "@dxos/react-client";
|
|
1380
1330
|
import { SpaceState } from "@dxos/react-client/echo";
|
|
1381
|
-
import { Button as
|
|
1331
|
+
import { Button as Button5, Input as Input5, useFileDownload, useMulticastObservable, useTranslation as useTranslation14 } from "@dxos/react-ui";
|
|
1382
1332
|
import { ControlItem, ControlItemInput as ControlItemInput3, ControlPage as ControlPage4, ControlSection as ControlSection4, Form as Form3 } from "@dxos/react-ui-form";
|
|
1383
1333
|
import { HuePicker, IconPicker } from "@dxos/react-ui-pickers";
|
|
1384
1334
|
import { StackItem as StackItem3 } from "@dxos/react-ui-stack";
|
|
1385
1335
|
var __dxlog_file4 = "/__w/dxos/dxos/packages/plugins/plugin-space/src/components/SpaceSettings/SpaceSettingsContainer.tsx";
|
|
1386
1336
|
var FormSchema = SpaceForm.pipe(Schema.extend(Schema.Struct({
|
|
1387
1337
|
archived: Schema.Boolean.annotations({
|
|
1388
|
-
title: "Archive
|
|
1338
|
+
title: "Archive Space"
|
|
1389
1339
|
})
|
|
1390
1340
|
})));
|
|
1391
1341
|
var SpaceSettingsContainer = ({ space }) => {
|
|
1392
|
-
var _effect =
|
|
1342
|
+
var _effect = _useSignals14();
|
|
1393
1343
|
try {
|
|
1394
|
-
const { t } =
|
|
1344
|
+
const { t } = useTranslation14(meta.id);
|
|
1395
1345
|
const { dispatchPromise: dispatch } = useIntentDispatcher9();
|
|
1396
1346
|
const client = useClient7();
|
|
1397
1347
|
const archived = useMulticastObservable(space.state) === SpaceState.SPACE_INACTIVE;
|
|
1398
|
-
const [edgeReplication, setEdgeReplication] =
|
|
1348
|
+
const [edgeReplication, setEdgeReplication] = useState8(space.internal.data.edgeReplication === EdgeReplicationSetting.ENABLED);
|
|
1399
1349
|
const toggleEdgeReplication = useCallback10(async (next) => {
|
|
1400
1350
|
setEdgeReplication(next);
|
|
1401
1351
|
await space?.internal.setEdgeReplicationPreference(next ? EdgeReplicationSetting.ENABLED : EdgeReplicationSetting.DISABLED).catch((err) => {
|
|
1402
1352
|
log3.catch(err, void 0, {
|
|
1403
1353
|
F: __dxlog_file4,
|
|
1404
|
-
L:
|
|
1354
|
+
L: 57,
|
|
1405
1355
|
S: void 0,
|
|
1406
1356
|
C: (f, a) => f(...a)
|
|
1407
1357
|
});
|
|
@@ -1422,7 +1372,7 @@ var SpaceSettingsContainer = ({ space }) => {
|
|
|
1422
1372
|
space.properties.hue = properties.hue;
|
|
1423
1373
|
}
|
|
1424
1374
|
if (properties.archived && !archived) {
|
|
1425
|
-
void dispatch(
|
|
1375
|
+
void dispatch(Function3.pipe(createIntent9(SpaceAction.Close, {
|
|
1426
1376
|
space
|
|
1427
1377
|
}), chain2(LayoutAction7.SwitchWorkspace, {
|
|
1428
1378
|
part: "workspace",
|
|
@@ -1453,14 +1403,14 @@ var SpaceSettingsContainer = ({ space }) => {
|
|
|
1453
1403
|
]);
|
|
1454
1404
|
const customElements = useMemo2(() => ({
|
|
1455
1405
|
name: ({ type, label, getValue, onValueChange }) => {
|
|
1456
|
-
const handleChange = useCallback10(({ target: { value } }) => onValueChange(type,
|
|
1406
|
+
const handleChange = useCallback10(({ target: { value: value2 } }) => onValueChange(type, value2), [
|
|
1457
1407
|
onValueChange,
|
|
1458
1408
|
type
|
|
1459
1409
|
]);
|
|
1460
|
-
return /* @__PURE__ */
|
|
1410
|
+
return /* @__PURE__ */ React14.createElement(ControlItemInput3, {
|
|
1461
1411
|
title: label,
|
|
1462
1412
|
description: t("display name description")
|
|
1463
|
-
}, /* @__PURE__ */
|
|
1413
|
+
}, /* @__PURE__ */ React14.createElement(Input5.TextInput, {
|
|
1464
1414
|
value: getValue(),
|
|
1465
1415
|
onChange: handleChange,
|
|
1466
1416
|
placeholder: t("display name input placeholder"),
|
|
@@ -1476,15 +1426,14 @@ var SpaceSettingsContainer = ({ space }) => {
|
|
|
1476
1426
|
onValueChange,
|
|
1477
1427
|
type
|
|
1478
1428
|
]);
|
|
1479
|
-
return /* @__PURE__ */
|
|
1429
|
+
return /* @__PURE__ */ React14.createElement(ControlItem, {
|
|
1480
1430
|
title: label,
|
|
1481
1431
|
description: t("icon description")
|
|
1482
|
-
}, /* @__PURE__ */
|
|
1432
|
+
}, /* @__PURE__ */ React14.createElement(IconPicker, {
|
|
1483
1433
|
value: getValue(),
|
|
1484
1434
|
onChange: handleChange,
|
|
1485
1435
|
onReset: handleReset,
|
|
1486
|
-
classNames: "justify-self-end"
|
|
1487
|
-
iconSize: 5
|
|
1436
|
+
classNames: "justify-self-end"
|
|
1488
1437
|
}));
|
|
1489
1438
|
},
|
|
1490
1439
|
hue: ({ type, label, getValue, onValueChange }) => {
|
|
@@ -1496,14 +1445,14 @@ var SpaceSettingsContainer = ({ space }) => {
|
|
|
1496
1445
|
onValueChange,
|
|
1497
1446
|
type
|
|
1498
1447
|
]);
|
|
1499
|
-
return /* @__PURE__ */
|
|
1448
|
+
return /* @__PURE__ */ React14.createElement(ControlItem, {
|
|
1500
1449
|
title: label,
|
|
1501
1450
|
description: t("hue description")
|
|
1502
|
-
}, /* @__PURE__ */
|
|
1451
|
+
}, /* @__PURE__ */ React14.createElement(HuePicker, {
|
|
1503
1452
|
value: getValue(),
|
|
1504
1453
|
onChange: handleChange,
|
|
1505
1454
|
onReset: handleReset,
|
|
1506
|
-
classNames: "
|
|
1455
|
+
classNames: "justify-self-end"
|
|
1507
1456
|
}));
|
|
1508
1457
|
},
|
|
1509
1458
|
edgeReplication: ({ type, label, getValue, onValueChange }) => {
|
|
@@ -1511,10 +1460,10 @@ var SpaceSettingsContainer = ({ space }) => {
|
|
|
1511
1460
|
onValueChange,
|
|
1512
1461
|
type
|
|
1513
1462
|
]);
|
|
1514
|
-
return /* @__PURE__ */
|
|
1463
|
+
return /* @__PURE__ */ React14.createElement(ControlItemInput3, {
|
|
1515
1464
|
title: label,
|
|
1516
1465
|
description: t("edge replication description")
|
|
1517
|
-
}, /* @__PURE__ */
|
|
1466
|
+
}, /* @__PURE__ */ React14.createElement(Input5.Switch, {
|
|
1518
1467
|
checked: getValue(),
|
|
1519
1468
|
onCheckedChange: handleChange,
|
|
1520
1469
|
classNames: "justify-self-end"
|
|
@@ -1526,11 +1475,12 @@ var SpaceSettingsContainer = ({ space }) => {
|
|
|
1526
1475
|
type,
|
|
1527
1476
|
getValue
|
|
1528
1477
|
]);
|
|
1529
|
-
return /* @__PURE__ */
|
|
1478
|
+
return /* @__PURE__ */ React14.createElement(ControlItemInput3, {
|
|
1530
1479
|
title: label,
|
|
1531
1480
|
description: t("archive space description")
|
|
1532
|
-
}, /* @__PURE__ */
|
|
1481
|
+
}, /* @__PURE__ */ React14.createElement(Button5, {
|
|
1533
1482
|
disabled: space === client.spaces.default,
|
|
1483
|
+
variant: getValue() ? "default" : "destructive",
|
|
1534
1484
|
onClick: handleChange
|
|
1535
1485
|
}, getValue() ? t("unarchive space label") : t("archive space label")));
|
|
1536
1486
|
}
|
|
@@ -1538,16 +1488,26 @@ var SpaceSettingsContainer = ({ space }) => {
|
|
|
1538
1488
|
t,
|
|
1539
1489
|
space
|
|
1540
1490
|
]);
|
|
1541
|
-
|
|
1491
|
+
const download = useFileDownload();
|
|
1492
|
+
const handleBackup = useCallback10(async () => {
|
|
1493
|
+
const archive = await space.internal.export();
|
|
1494
|
+
download(new Blob([
|
|
1495
|
+
archive.contents
|
|
1496
|
+
]), archive.filename);
|
|
1497
|
+
}, [
|
|
1498
|
+
space,
|
|
1499
|
+
download
|
|
1500
|
+
]);
|
|
1501
|
+
return /* @__PURE__ */ React14.createElement(StackItem3.Content, {
|
|
1542
1502
|
scrollable: true
|
|
1543
|
-
}, /* @__PURE__ */
|
|
1503
|
+
}, /* @__PURE__ */ React14.createElement(ControlPage4, null, /* @__PURE__ */ React14.createElement(ControlSection4, {
|
|
1544
1504
|
title: t("space properties settings verbose label", {
|
|
1545
1505
|
ns: meta.id
|
|
1546
1506
|
}),
|
|
1547
1507
|
description: t("space properties settings description", {
|
|
1548
1508
|
ns: meta.id
|
|
1549
1509
|
})
|
|
1550
|
-
}, /* @__PURE__ */
|
|
1510
|
+
}, /* @__PURE__ */ React14.createElement(Form3, {
|
|
1551
1511
|
schema: FormSchema,
|
|
1552
1512
|
values,
|
|
1553
1513
|
autoSave: true,
|
|
@@ -1555,27 +1515,36 @@ var SpaceSettingsContainer = ({ space }) => {
|
|
|
1555
1515
|
Custom: customElements,
|
|
1556
1516
|
outerSpacing: false,
|
|
1557
1517
|
classNames: "container-max-width grid grid-cols-1 md:grid-cols-[1fr_min-content]"
|
|
1558
|
-
}))
|
|
1518
|
+
})), /* @__PURE__ */ React14.createElement(ControlItemInput3, {
|
|
1519
|
+
title: t("backup space label", {
|
|
1520
|
+
ns: meta.id
|
|
1521
|
+
}),
|
|
1522
|
+
description: t("backup space description", {
|
|
1523
|
+
ns: meta.id
|
|
1524
|
+
})
|
|
1525
|
+
}, /* @__PURE__ */ React14.createElement(Button5, {
|
|
1526
|
+
onClick: handleBackup
|
|
1527
|
+
}, t("download backup")))));
|
|
1559
1528
|
} finally {
|
|
1560
1529
|
_effect.f();
|
|
1561
1530
|
}
|
|
1562
1531
|
};
|
|
1563
1532
|
|
|
1564
1533
|
// src/components/SyncStatus/InlineSyncStatus.tsx
|
|
1565
|
-
import { useSignals as
|
|
1534
|
+
import { useSignals as _useSignals15 } from "@preact-signals/safe-react/tracking";
|
|
1566
1535
|
import * as Option3 from "effect/Option";
|
|
1567
|
-
import
|
|
1568
|
-
import { useAppGraph as useAppGraph3 } from "@dxos/app-framework";
|
|
1536
|
+
import React15, { useEffect as useEffect4, useState as useState9 } from "react";
|
|
1537
|
+
import { useAppGraph as useAppGraph3 } from "@dxos/app-framework/react";
|
|
1569
1538
|
import { EdgeStatus } from "@dxos/protocols/proto/dxos/client/services";
|
|
1570
1539
|
import { EdgeReplicationSetting as EdgeReplicationSetting2 } from "@dxos/protocols/proto/dxos/echo/metadata";
|
|
1571
1540
|
import { useClient as useClient8 } from "@dxos/react-client";
|
|
1572
1541
|
import { useSpaceSyncState } from "@dxos/react-client/echo";
|
|
1573
|
-
import { Tooltip as
|
|
1542
|
+
import { Tooltip as Tooltip2, useTranslation as useTranslation15 } from "@dxos/react-ui";
|
|
1574
1543
|
import { AttentionGlyph as AttentionGlyph2, useAttended as useAttended2, useAttention as useAttention2 } from "@dxos/react-ui-attention";
|
|
1575
1544
|
var useEdgeStatus = () => {
|
|
1576
|
-
const [status, setStatus] =
|
|
1545
|
+
const [status, setStatus] = useState9(EdgeStatus.ConnectionState.NOT_CONNECTED);
|
|
1577
1546
|
const client = useClient8();
|
|
1578
|
-
|
|
1547
|
+
useEffect4(() => {
|
|
1579
1548
|
client.services.services.EdgeAgentService?.queryEdgeStatus().subscribe(({ status: status2 }) => {
|
|
1580
1549
|
setStatus(status2.state);
|
|
1581
1550
|
});
|
|
@@ -1585,9 +1554,9 @@ var useEdgeStatus = () => {
|
|
|
1585
1554
|
return status;
|
|
1586
1555
|
};
|
|
1587
1556
|
var InlineSyncStatus = ({ space, open }) => {
|
|
1588
|
-
var _effect =
|
|
1557
|
+
var _effect = _useSignals15();
|
|
1589
1558
|
try {
|
|
1590
|
-
const { t } =
|
|
1559
|
+
const { t } = useTranslation15(meta.id);
|
|
1591
1560
|
const id = space.id;
|
|
1592
1561
|
const { hasAttention, isAncestor, isRelated } = useAttention2(id);
|
|
1593
1562
|
const isAttended = hasAttention || isAncestor || isRelated;
|
|
@@ -1600,11 +1569,11 @@ var InlineSyncStatus = ({ space, open }) => {
|
|
|
1600
1569
|
const edgeSyncEnabled = space.internal.data.edgeReplication === EdgeReplicationSetting2.ENABLED;
|
|
1601
1570
|
const syncState = useSpaceSyncState(space);
|
|
1602
1571
|
const syncing = connectedToEdge && edgeSyncEnabled && syncState && syncState.missingOnLocal > 0;
|
|
1603
|
-
return /* @__PURE__ */
|
|
1572
|
+
return /* @__PURE__ */ React15.createElement(Tooltip2.Trigger, {
|
|
1604
1573
|
asChild: true,
|
|
1605
1574
|
content: t("syncing label"),
|
|
1606
1575
|
side: "bottom"
|
|
1607
|
-
}, /* @__PURE__ */
|
|
1576
|
+
}, /* @__PURE__ */ React15.createElement(AttentionGlyph2, {
|
|
1608
1577
|
syncing,
|
|
1609
1578
|
attended: isAttended,
|
|
1610
1579
|
containsAttended,
|
|
@@ -1616,14 +1585,15 @@ var InlineSyncStatus = ({ space, open }) => {
|
|
|
1616
1585
|
};
|
|
1617
1586
|
|
|
1618
1587
|
// src/components/SyncStatus/SyncStatus.tsx
|
|
1619
|
-
import { useSignals as
|
|
1620
|
-
import
|
|
1588
|
+
import { useSignals as _useSignals16 } from "@preact-signals/safe-react/tracking";
|
|
1589
|
+
import React16, { useEffect as useEffect5, useState as useState10 } from "react";
|
|
1621
1590
|
import { StatusBar } from "@dxos/plugin-status-bar";
|
|
1622
1591
|
import { EdgeStatus as EdgeStatus2 } from "@dxos/protocols/proto/dxos/client/services";
|
|
1623
1592
|
import { useClient as useClient9 } from "@dxos/react-client";
|
|
1624
1593
|
import { useStream } from "@dxos/react-client/devtools";
|
|
1625
1594
|
import { getSyncSummary, useSyncState } from "@dxos/react-client/echo";
|
|
1626
|
-
import { Icon as
|
|
1595
|
+
import { Icon as Icon5, Popover as Popover3, useTranslation as useTranslation16 } from "@dxos/react-ui";
|
|
1596
|
+
import { mx } from "@dxos/react-ui-theme";
|
|
1627
1597
|
import { Unit } from "@dxos/util";
|
|
1628
1598
|
|
|
1629
1599
|
// src/components/SyncStatus/save-tracker.ts
|
|
@@ -1720,17 +1690,13 @@ var getIcon = (status) => {
|
|
|
1720
1690
|
// src/components/SyncStatus/SyncStatus.tsx
|
|
1721
1691
|
var SYNC_STALLED_TIMEOUT = 5e3;
|
|
1722
1692
|
var SyncStatus = () => {
|
|
1723
|
-
var _effect =
|
|
1693
|
+
var _effect = _useSignals16();
|
|
1724
1694
|
try {
|
|
1725
1695
|
const client = useClient9();
|
|
1726
1696
|
const state = useSyncState();
|
|
1727
|
-
const [saved, setSaved] =
|
|
1728
|
-
|
|
1729
|
-
|
|
1730
|
-
setSaved(state2 === "saved");
|
|
1731
|
-
});
|
|
1732
|
-
}, []);
|
|
1733
|
-
return /* @__PURE__ */ React17.createElement(SyncStatusIndicator, {
|
|
1697
|
+
const [saved, setSaved] = useState10(true);
|
|
1698
|
+
useEffect5(() => createClientSaveTracker(client, (state2) => setSaved(state2 === "saved")), []);
|
|
1699
|
+
return /* @__PURE__ */ React16.createElement(SyncStatusIndicator, {
|
|
1734
1700
|
state,
|
|
1735
1701
|
saved
|
|
1736
1702
|
});
|
|
@@ -1739,9 +1705,9 @@ var SyncStatus = () => {
|
|
|
1739
1705
|
}
|
|
1740
1706
|
};
|
|
1741
1707
|
var SyncStatusIndicator = ({ state, saved }) => {
|
|
1742
|
-
var _effect =
|
|
1708
|
+
var _effect = _useSignals16();
|
|
1743
1709
|
try {
|
|
1744
|
-
const { t } =
|
|
1710
|
+
const { t } = useTranslation16(meta.id);
|
|
1745
1711
|
const summary = getSyncSummary(state);
|
|
1746
1712
|
const offline = Object.values(state).length === 0;
|
|
1747
1713
|
const needsToUpload = summary.differentDocuments > 0 || summary.missingOnRemote > 0;
|
|
@@ -1752,8 +1718,8 @@ var SyncStatusIndicator = ({ state, saved }) => {
|
|
|
1752
1718
|
needsToUpload,
|
|
1753
1719
|
needsToDownload
|
|
1754
1720
|
});
|
|
1755
|
-
const [classNames, setClassNames] =
|
|
1756
|
-
|
|
1721
|
+
const [classNames, setClassNames] = useState10();
|
|
1722
|
+
useEffect5(() => {
|
|
1757
1723
|
setClassNames(void 0);
|
|
1758
1724
|
if (offline || !needsToUpload && !needsToDownload) {
|
|
1759
1725
|
return;
|
|
@@ -1768,16 +1734,15 @@ var SyncStatusIndicator = ({ state, saved }) => {
|
|
|
1768
1734
|
needsToDownload
|
|
1769
1735
|
]);
|
|
1770
1736
|
const title = t(`${status} label`);
|
|
1771
|
-
const icon = /* @__PURE__ */
|
|
1737
|
+
const icon = /* @__PURE__ */ React16.createElement(Icon5, {
|
|
1772
1738
|
icon: getIcon(status),
|
|
1773
|
-
size: 4,
|
|
1774
1739
|
classNames
|
|
1775
1740
|
});
|
|
1776
|
-
return /* @__PURE__ */
|
|
1741
|
+
return /* @__PURE__ */ React16.createElement(Popover3.Root, null, /* @__PURE__ */ React16.createElement(Popover3.Trigger, {
|
|
1777
1742
|
asChild: true
|
|
1778
|
-
}, /* @__PURE__ */
|
|
1743
|
+
}, /* @__PURE__ */ React16.createElement(StatusBar.Item, {
|
|
1779
1744
|
title
|
|
1780
|
-
}, icon)), /* @__PURE__ */
|
|
1745
|
+
}, icon)), /* @__PURE__ */ React16.createElement(Popover3.Portal, null, /* @__PURE__ */ React16.createElement(Popover3.Content, null, /* @__PURE__ */ React16.createElement(EdgeConnectionPopover, null), /* @__PURE__ */ React16.createElement(Popover3.Arrow, null))));
|
|
1781
1746
|
} finally {
|
|
1782
1747
|
_effect.f();
|
|
1783
1748
|
}
|
|
@@ -1788,99 +1753,235 @@ var useEdgeStatus2 = () => {
|
|
|
1788
1753
|
return status;
|
|
1789
1754
|
};
|
|
1790
1755
|
var EdgeConnectionPopover = () => {
|
|
1791
|
-
var _effect =
|
|
1756
|
+
var _effect = _useSignals16();
|
|
1792
1757
|
try {
|
|
1793
1758
|
const status = useEdgeStatus2();
|
|
1794
|
-
const { t } =
|
|
1759
|
+
const { t } = useTranslation16(meta.id);
|
|
1795
1760
|
const isConnected = status?.state === EdgeStatus2.ConnectionState.CONNECTED;
|
|
1796
|
-
return /* @__PURE__ */
|
|
1797
|
-
className: "
|
|
1798
|
-
}, /* @__PURE__ */
|
|
1799
|
-
className: "flex items-center gap-2
|
|
1800
|
-
}, /* @__PURE__ */
|
|
1801
|
-
|
|
1802
|
-
|
|
1803
|
-
|
|
1804
|
-
|
|
1805
|
-
|
|
1806
|
-
|
|
1807
|
-
|
|
1808
|
-
|
|
1809
|
-
}), /* @__PURE__ */
|
|
1761
|
+
return /* @__PURE__ */ React16.createElement("div", {
|
|
1762
|
+
className: "min-is-[240px] p-2"
|
|
1763
|
+
}, /* @__PURE__ */ React16.createElement("div", {
|
|
1764
|
+
className: "flex items-center gap-2 mbe-2"
|
|
1765
|
+
}, /* @__PURE__ */ React16.createElement(Icon5, {
|
|
1766
|
+
icon: isConnected ? "ph--check-circle--regular" : "ph--warning-circle--regular",
|
|
1767
|
+
classNames: mx(isConnected ? "text-successText" : "text-errorText animate-pulse")
|
|
1768
|
+
}), /* @__PURE__ */ React16.createElement("span", {
|
|
1769
|
+
className: "font-medium text-sm"
|
|
1770
|
+
}, isConnected ? t("sync edge connected label") : t("sync edge disconnected label"))), status?.state === EdgeStatus2.ConnectionState.NOT_CONNECTED && /* @__PURE__ */ React16.createElement("div", {
|
|
1771
|
+
className: "flex items-center gap-2 text-sm text-description"
|
|
1772
|
+
}, /* @__PURE__ */ React16.createElement(Icon5, {
|
|
1773
|
+
icon: "ph--cloud-x--regular"
|
|
1774
|
+
}), /* @__PURE__ */ React16.createElement("span", null, t("sync no connection label"))), status?.state === EdgeStatus2.ConnectionState.CONNECTED && /* @__PURE__ */ React16.createElement("div", {
|
|
1810
1775
|
className: "space-y-2"
|
|
1811
|
-
}, /* @__PURE__ */
|
|
1812
|
-
className: "flex items-center justify-between"
|
|
1813
|
-
}, /* @__PURE__ */
|
|
1814
|
-
className: "flex items-center gap-2 text-
|
|
1815
|
-
}, /* @__PURE__ */
|
|
1816
|
-
icon: "ph--timer--regular"
|
|
1817
|
-
|
|
1818
|
-
|
|
1819
|
-
|
|
1820
|
-
}
|
|
1821
|
-
className: "flex items-center justify-between"
|
|
1822
|
-
}, /* @__PURE__ */
|
|
1823
|
-
className: "flex items-center gap-2 text-
|
|
1824
|
-
}, /* @__PURE__ */
|
|
1825
|
-
icon: "ph--arrow-up--regular"
|
|
1826
|
-
|
|
1827
|
-
|
|
1828
|
-
|
|
1829
|
-
|
|
1830
|
-
|
|
1831
|
-
|
|
1832
|
-
|
|
1833
|
-
|
|
1834
|
-
|
|
1835
|
-
|
|
1836
|
-
}), /* @__PURE__ */
|
|
1837
|
-
|
|
1838
|
-
|
|
1776
|
+
}, /* @__PURE__ */ React16.createElement("div", {
|
|
1777
|
+
className: "flex items-center justify-between text-sm"
|
|
1778
|
+
}, /* @__PURE__ */ React16.createElement("div", {
|
|
1779
|
+
className: "flex items-center gap-2 text-description"
|
|
1780
|
+
}, /* @__PURE__ */ React16.createElement(Icon5, {
|
|
1781
|
+
icon: "ph--timer--regular"
|
|
1782
|
+
}), /* @__PURE__ */ React16.createElement("span", null, t("sync latency label"))), /* @__PURE__ */ React16.createElement(UnitValue, {
|
|
1783
|
+
value: status.rtt,
|
|
1784
|
+
format: Unit.Millisecond
|
|
1785
|
+
})), /* @__PURE__ */ React16.createElement("div", {
|
|
1786
|
+
className: "flex items-center justify-between text-sm"
|
|
1787
|
+
}, /* @__PURE__ */ React16.createElement("div", {
|
|
1788
|
+
className: "flex items-center gap-2 text-description"
|
|
1789
|
+
}, /* @__PURE__ */ React16.createElement(Icon5, {
|
|
1790
|
+
icon: "ph--arrow-up--regular"
|
|
1791
|
+
}), /* @__PURE__ */ React16.createElement("span", null, t("sync upload label"))), /* @__PURE__ */ React16.createElement(UnitValue, {
|
|
1792
|
+
value: status.rateBytesUp,
|
|
1793
|
+
format: Unit.Kilobyte,
|
|
1794
|
+
suffix: "/s"
|
|
1795
|
+
})), /* @__PURE__ */ React16.createElement("div", {
|
|
1796
|
+
className: "flex items-center justify-between text-sm"
|
|
1797
|
+
}, /* @__PURE__ */ React16.createElement("div", {
|
|
1798
|
+
className: "flex items-center gap-2 text-sm text-description"
|
|
1799
|
+
}, /* @__PURE__ */ React16.createElement(Icon5, {
|
|
1800
|
+
icon: "ph--arrow-down--regular"
|
|
1801
|
+
}), /* @__PURE__ */ React16.createElement("span", null, t("sync download label"))), /* @__PURE__ */ React16.createElement(UnitValue, {
|
|
1802
|
+
value: status.rateBytesDown,
|
|
1803
|
+
format: Unit.Kilobyte,
|
|
1804
|
+
suffix: "/s"
|
|
1805
|
+
}))));
|
|
1839
1806
|
} finally {
|
|
1840
1807
|
_effect.f();
|
|
1841
1808
|
}
|
|
1842
1809
|
};
|
|
1810
|
+
var UnitValue = ({ value: input, format, suffix }) => {
|
|
1811
|
+
var _effect = _useSignals16();
|
|
1812
|
+
try {
|
|
1813
|
+
const { formattedValue, unit } = format(input);
|
|
1814
|
+
return /* @__PURE__ */ React16.createElement("span", {
|
|
1815
|
+
className: "font-mono"
|
|
1816
|
+
}, formattedValue, /* @__PURE__ */ React16.createElement("span", {
|
|
1817
|
+
className: "mis-1 text-subdued"
|
|
1818
|
+
}, unit.symbol, suffix));
|
|
1819
|
+
} finally {
|
|
1820
|
+
_effect.f();
|
|
1821
|
+
}
|
|
1822
|
+
};
|
|
1823
|
+
|
|
1824
|
+
// src/helpers/query.ts
|
|
1825
|
+
import * as Array2 from "effect/Array";
|
|
1826
|
+
import * as Effect3 from "effect/Effect";
|
|
1827
|
+
import * as EffectFunction from "effect/Function";
|
|
1828
|
+
import * as Match from "effect/Match";
|
|
1829
|
+
import * as Option4 from "effect/Option";
|
|
1830
|
+
import * as SchemaAST from "effect/SchemaAST";
|
|
1831
|
+
import { DXN, Filter as Filter2, Query as Query2 } from "@dxos/echo";
|
|
1832
|
+
import { ReferenceAnnotationId, getTypeAnnotation as getTypeAnnotation2, unwrapOptional } from "@dxos/echo/internal";
|
|
1833
|
+
import { log as log4 } from "@dxos/log";
|
|
1834
|
+
import { Person } from "@dxos/types";
|
|
1835
|
+
var __dxlog_file6 = "/__w/dxos/dxos/packages/plugins/plugin-space/src/helpers/query.ts";
|
|
1836
|
+
var evalQuery = (queryString) => {
|
|
1837
|
+
const globals = {
|
|
1838
|
+
Query: Query2,
|
|
1839
|
+
Filter: Filter2,
|
|
1840
|
+
Person
|
|
1841
|
+
};
|
|
1842
|
+
try {
|
|
1843
|
+
return new Function(...Object.keys(globals), `return ${queryString}`)(...Object.values(globals));
|
|
1844
|
+
} catch (err) {
|
|
1845
|
+
log4.catch(err, void 0, {
|
|
1846
|
+
F: __dxlog_file6,
|
|
1847
|
+
L: 33,
|
|
1848
|
+
S: void 0,
|
|
1849
|
+
C: (f, a) => f(...a)
|
|
1850
|
+
});
|
|
1851
|
+
return Query2.select(Filter2.nothing());
|
|
1852
|
+
}
|
|
1853
|
+
};
|
|
1854
|
+
var resolveSchemaWithClientAndSpace = (client, space, query) => {
|
|
1855
|
+
const resolve = Effect3.fn(function* (dxn) {
|
|
1856
|
+
const typename = DXN.parse(dxn).asTypeDXN()?.type;
|
|
1857
|
+
if (!typename) {
|
|
1858
|
+
return Option4.none();
|
|
1859
|
+
}
|
|
1860
|
+
const staticSchema = client.graph.schemaRegistry.getSchema(typename);
|
|
1861
|
+
if (staticSchema) {
|
|
1862
|
+
return Option4.some(staticSchema);
|
|
1863
|
+
}
|
|
1864
|
+
const query2 = space.db.schemaRegistry.query({
|
|
1865
|
+
typename
|
|
1866
|
+
});
|
|
1867
|
+
const schemas = yield* Effect3.promise(() => query2.run());
|
|
1868
|
+
return Array2.head(schemas).pipe(Option4.map((schema) => schema.snapshot));
|
|
1869
|
+
});
|
|
1870
|
+
return resolveSchema(query, resolve).pipe(Effect3.map((schema) => Option4.getOrUndefined(schema)), Effect3.runPromise);
|
|
1871
|
+
};
|
|
1872
|
+
var resolveSchema = (query, resolve) => {
|
|
1873
|
+
return Match.value(query).pipe(
|
|
1874
|
+
Match.withReturnType(),
|
|
1875
|
+
// TODO(wittjosiah): Reconcile with filter match?
|
|
1876
|
+
Match.when({
|
|
1877
|
+
type: "select"
|
|
1878
|
+
}, ({ filter }) => typenameFromFilter(filter).pipe(Option4.map((typename) => resolve(typename)), Option4.getOrElse(() => Effect3.succeed(Option4.none())))),
|
|
1879
|
+
Match.when({
|
|
1880
|
+
type: "filter"
|
|
1881
|
+
}, ({ filter }) => typenameFromFilter(filter).pipe(Option4.map((typename) => resolve(typename)), Option4.getOrElse(() => Effect3.succeed(Option4.none())))),
|
|
1882
|
+
Match.when({
|
|
1883
|
+
type: "reference-traversal"
|
|
1884
|
+
}, ({ anchor, property }) => resolveSchema(anchor, resolve).pipe(Effect3.map((base) => base.pipe(Option4.map((schema) => SchemaAST.getPropertySignatures(schema.ast)), Option4.flatMap((properties) => Array2.findFirst(properties, (p) => p.name === property)), Option4.flatMap((property2) => SchemaAST.getAnnotation(ReferenceAnnotationId)(unwrapOptional(property2))), Option4.map((annotation) => annotation.typename))), Effect3.flatMap(Option4.match({
|
|
1885
|
+
onNone: () => Effect3.succeed(Option4.none()),
|
|
1886
|
+
onSome: (typename) => resolve(DXN.fromTypename(typename).toString())
|
|
1887
|
+
})))),
|
|
1888
|
+
Match.when({
|
|
1889
|
+
type: "relation",
|
|
1890
|
+
filter: Match.defined
|
|
1891
|
+
}, ({ filter }) => typenameFromFilter(filter).pipe(Option4.map((typename) => resolve(typename)), Option4.getOrElse(() => Effect3.succeed(Option4.none())))),
|
|
1892
|
+
Match.when({
|
|
1893
|
+
type: "relation-traversal"
|
|
1894
|
+
}, ({ anchor, direction }) => resolveSchema(anchor, resolve).pipe(Effect3.map((base) => base.pipe(Option4.map((schema) => getTypeAnnotation2(schema)), Option4.flatMap((annotation) => Option4.fromNullable(direction === "source" ? annotation?.sourceSchema : annotation?.targetSchema)))), Effect3.flatMap(Option4.match({
|
|
1895
|
+
onNone: () => Effect3.succeed(Option4.none()),
|
|
1896
|
+
onSome: (typename) => resolve(typename)
|
|
1897
|
+
})))),
|
|
1898
|
+
Match.when({
|
|
1899
|
+
type: "options"
|
|
1900
|
+
}, ({ query: query2 }) => resolveSchema(query2, resolve)),
|
|
1901
|
+
Match.orElse((_q) => {
|
|
1902
|
+
return Effect3.succeed(Option4.none());
|
|
1903
|
+
})
|
|
1904
|
+
);
|
|
1905
|
+
};
|
|
1906
|
+
var typenameFromFilter = (filter) => Match.value(filter).pipe(Match.withReturnType(), Match.when({
|
|
1907
|
+
type: "object"
|
|
1908
|
+
}, ({ typename }) => Option4.fromNullable(typename)), Match.when({
|
|
1909
|
+
type: "and"
|
|
1910
|
+
}, ({ filters }) => EffectFunction.pipe(filters, Array2.map(typenameFromFilter), Array2.findFirst(Option4.isSome), Option4.flatten)), Match.when({
|
|
1911
|
+
type: "or"
|
|
1912
|
+
}, ({ filters }) => EffectFunction.pipe(filters, Array2.map(typenameFromFilter), Array2.findFirst(Option4.isSome), Option4.flatten)), Match.orElse(() => Option4.none()));
|
|
1913
|
+
var getQueryTarget = (query, space) => {
|
|
1914
|
+
return Match.value(query).pipe(Match.when({
|
|
1915
|
+
type: "options"
|
|
1916
|
+
}, ({ options }) => {
|
|
1917
|
+
return Option4.fromNullable(options.queues).pipe(Option4.flatMap((queues) => Array2.head(queues)), Option4.flatMap((queueDxn) => Option4.fromNullable(DXN.tryParse(queueDxn))), Option4.flatMap((queueDxn) => Option4.fromNullable(space?.queues.get(queueDxn))), Option4.getOrElse(() => space));
|
|
1918
|
+
}), Match.orElse(() => space));
|
|
1919
|
+
};
|
|
1843
1920
|
|
|
1844
1921
|
// src/components/ViewEditor.tsx
|
|
1845
|
-
import { useSignals as
|
|
1846
|
-
import
|
|
1847
|
-
import {
|
|
1848
|
-
import {
|
|
1849
|
-
import {
|
|
1922
|
+
import { useSignals as _useSignals17 } from "@preact-signals/safe-react/tracking";
|
|
1923
|
+
import * as Schema2 from "effect/Schema";
|
|
1924
|
+
import React17, { useCallback as useCallback11, useState as useState11 } from "react";
|
|
1925
|
+
import { createIntent as createIntent10 } from "@dxos/app-framework";
|
|
1926
|
+
import { useIntentDispatcher as useIntentDispatcher10 } from "@dxos/app-framework/react";
|
|
1927
|
+
import { DXN as DXN2, Filter as Filter3, Obj as Obj6, Query as Query3, Tag, Type as Type3 } from "@dxos/echo";
|
|
1850
1928
|
import { useClient as useClient10 } from "@dxos/react-client";
|
|
1851
|
-
import { getSpace as getSpace4,
|
|
1929
|
+
import { getSpace as getSpace4, useQuery as useQuery3 } from "@dxos/react-client/echo";
|
|
1930
|
+
import { useAsyncEffect } from "@dxos/react-ui";
|
|
1852
1931
|
import { ViewEditor as NaturalViewEditor } from "@dxos/react-ui-form";
|
|
1853
|
-
import {
|
|
1854
|
-
var __dxlog_file6 = "/__w/dxos/dxos/packages/plugins/plugin-space/src/components/ViewEditor.tsx";
|
|
1932
|
+
import { View } from "@dxos/schema";
|
|
1855
1933
|
var ViewEditor = ({ view }) => {
|
|
1856
|
-
var _effect =
|
|
1934
|
+
var _effect = _useSignals17();
|
|
1857
1935
|
try {
|
|
1858
1936
|
const { dispatchPromise: dispatch } = useIntentDispatcher10();
|
|
1859
1937
|
const client = useClient10();
|
|
1860
1938
|
const space = getSpace4(view);
|
|
1861
|
-
const
|
|
1862
|
-
const
|
|
1863
|
-
const
|
|
1864
|
-
|
|
1865
|
-
|
|
1866
|
-
|
|
1867
|
-
|
|
1868
|
-
|
|
1869
|
-
|
|
1870
|
-
|
|
1871
|
-
|
|
1872
|
-
|
|
1873
|
-
|
|
1874
|
-
|
|
1875
|
-
|
|
1876
|
-
|
|
1877
|
-
|
|
1878
|
-
|
|
1879
|
-
|
|
1939
|
+
const [schema, setSchema] = useState11(() => Schema2.Struct({}));
|
|
1940
|
+
const tags = useQuery3(space, Filter3.type(Tag.Tag));
|
|
1941
|
+
const types = useTypeOptions({
|
|
1942
|
+
space,
|
|
1943
|
+
annotation: [
|
|
1944
|
+
"dynamic",
|
|
1945
|
+
"limited-static",
|
|
1946
|
+
"object-form"
|
|
1947
|
+
]
|
|
1948
|
+
});
|
|
1949
|
+
useAsyncEffect(async () => {
|
|
1950
|
+
if (!view?.query || !space) {
|
|
1951
|
+
return;
|
|
1952
|
+
}
|
|
1953
|
+
const foundSchema = await resolveSchemaWithClientAndSpace(client, space, view.query.ast);
|
|
1954
|
+
if (foundSchema && foundSchema !== schema) {
|
|
1955
|
+
setSchema(() => foundSchema);
|
|
1956
|
+
}
|
|
1957
|
+
}, [
|
|
1958
|
+
client,
|
|
1959
|
+
space,
|
|
1960
|
+
view,
|
|
1961
|
+
schema
|
|
1962
|
+
]);
|
|
1963
|
+
const handleQueryChanged = useCallback11(async (newQuery, target) => {
|
|
1964
|
+
if (!view || !space) {
|
|
1965
|
+
return;
|
|
1966
|
+
}
|
|
1967
|
+
const queue = target && DXN2.tryParse(target) ? target : void 0;
|
|
1968
|
+
const query = queue ? Query3.fromAst(newQuery).options({
|
|
1969
|
+
queues: [
|
|
1970
|
+
queue
|
|
1880
1971
|
]
|
|
1972
|
+
}) : Query3.fromAst(newQuery);
|
|
1973
|
+
view.query.ast = query.ast;
|
|
1974
|
+
const newSchema = await resolveSchemaWithClientAndSpace(client, space, query.ast);
|
|
1975
|
+
if (!newSchema) {
|
|
1976
|
+
return;
|
|
1977
|
+
}
|
|
1978
|
+
const newView = View.make({
|
|
1979
|
+
query,
|
|
1980
|
+
jsonSchema: Type3.toJsonSchema(newSchema),
|
|
1981
|
+
presentation: Obj6.make(Type3.Expando, {})
|
|
1881
1982
|
});
|
|
1882
|
-
view.
|
|
1883
|
-
|
|
1983
|
+
view.projection = Obj6.getSnapshot(newView).projection;
|
|
1984
|
+
setSchema(() => newSchema);
|
|
1884
1985
|
}, [
|
|
1885
1986
|
view,
|
|
1886
1987
|
schema
|
|
@@ -1897,13 +1998,16 @@ var ViewEditor = ({ view }) => {
|
|
|
1897
1998
|
if (!space || !schema) {
|
|
1898
1999
|
return null;
|
|
1899
2000
|
}
|
|
1900
|
-
return /* @__PURE__ */
|
|
2001
|
+
return /* @__PURE__ */ React17.createElement(NaturalViewEditor, {
|
|
1901
2002
|
registry: space.db.schemaRegistry,
|
|
1902
2003
|
schema,
|
|
1903
2004
|
view,
|
|
1904
|
-
|
|
1905
|
-
|
|
1906
|
-
|
|
2005
|
+
mode: "query",
|
|
2006
|
+
outerSpacing: false,
|
|
2007
|
+
tags,
|
|
2008
|
+
types,
|
|
2009
|
+
onQueryChanged: handleQueryChanged,
|
|
2010
|
+
onDelete: Type3.isMutable(schema) ? handleDelete : void 0
|
|
1907
2011
|
});
|
|
1908
2012
|
} finally {
|
|
1909
2013
|
_effect.f();
|
|
@@ -1912,10 +2016,10 @@ var ViewEditor = ({ view }) => {
|
|
|
1912
2016
|
|
|
1913
2017
|
// src/components/index.ts
|
|
1914
2018
|
import { lazy } from "react";
|
|
1915
|
-
var
|
|
1916
|
-
var ObjectDetailsPanel = lazy(() => import("./ObjectDetailsPanel-
|
|
1917
|
-
var ObjectSettingsContainer = lazy(() => import("./ObjectSettings-
|
|
1918
|
-
var
|
|
2019
|
+
var CollectionArticle = lazy(() => import("./CollectionArticle-G3V4QXPI.mjs"));
|
|
2020
|
+
var ObjectDetailsPanel = lazy(() => import("./ObjectDetailsPanel-6PZQIQG3.mjs"));
|
|
2021
|
+
var ObjectSettingsContainer = lazy(() => import("./ObjectSettings-OQSBOH7K.mjs"));
|
|
2022
|
+
var RecordArticle = lazy(() => import("./RecordArticle-PBMLYY5K.mjs"));
|
|
1919
2023
|
|
|
1920
2024
|
export {
|
|
1921
2025
|
AwaitingObject,
|
|
@@ -1928,13 +2032,12 @@ export {
|
|
|
1928
2032
|
JoinDialog,
|
|
1929
2033
|
MembersContainer,
|
|
1930
2034
|
MenuFooter,
|
|
1931
|
-
|
|
1932
|
-
|
|
1933
|
-
|
|
1934
|
-
|
|
1935
|
-
PopoverRenameSpace,
|
|
1936
|
-
useQuerySpaceSchemas,
|
|
2035
|
+
OBJECT_RENAME_POPOVER,
|
|
2036
|
+
ObjectRenamePopover,
|
|
2037
|
+
SPACE_RENAME_POPOVER,
|
|
2038
|
+
SpaceRenamePopover,
|
|
1937
2039
|
SchemaContainer,
|
|
2040
|
+
useQuerySpaceSchemas,
|
|
1938
2041
|
SpacePresence,
|
|
1939
2042
|
FullPresence,
|
|
1940
2043
|
SmallPresenceLive,
|
|
@@ -1944,10 +2047,13 @@ export {
|
|
|
1944
2047
|
InlineSyncStatus,
|
|
1945
2048
|
SyncStatus,
|
|
1946
2049
|
SyncStatusIndicator,
|
|
2050
|
+
evalQuery,
|
|
2051
|
+
resolveSchemaWithClientAndSpace,
|
|
2052
|
+
getQueryTarget,
|
|
1947
2053
|
ViewEditor,
|
|
1948
|
-
|
|
2054
|
+
CollectionArticle,
|
|
1949
2055
|
ObjectDetailsPanel,
|
|
1950
2056
|
ObjectSettingsContainer,
|
|
1951
|
-
|
|
2057
|
+
RecordArticle
|
|
1952
2058
|
};
|
|
1953
|
-
//# sourceMappingURL=chunk-
|
|
2059
|
+
//# sourceMappingURL=chunk-MI4A5XUX.mjs.map
|