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