@dxos/plugin-space 0.8.1-staging.391c573 → 0.8.1-staging.97aedb1
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/{app-graph-builder-MGK5HWPZ.mjs → app-graph-builder-GMFCSOLG.mjs} +33 -6
- package/dist/lib/browser/app-graph-builder-GMFCSOLG.mjs.map +7 -0
- package/dist/lib/browser/{app-graph-serializer-FOWFLYGU.mjs → app-graph-serializer-DSF2U3A5.mjs} +7 -7
- package/dist/lib/browser/{app-graph-serializer-FOWFLYGU.mjs.map → app-graph-serializer-DSF2U3A5.mjs.map} +2 -2
- package/dist/lib/browser/{chunk-UDWHTKB5.mjs → chunk-5BDV575R.mjs} +22 -16
- package/dist/lib/browser/chunk-5BDV575R.mjs.map +7 -0
- package/dist/lib/browser/{chunk-ULA2UQJ4.mjs → chunk-AYW4IDRT.mjs} +15 -65
- package/dist/lib/browser/chunk-AYW4IDRT.mjs.map +7 -0
- package/dist/lib/browser/{chunk-OWVFWTX4.mjs → chunk-JZXWPMLA.mjs} +853 -588
- package/dist/lib/browser/chunk-JZXWPMLA.mjs.map +7 -0
- package/dist/lib/browser/{chunk-NU7WDVGN.mjs → chunk-KVRYWFZU.mjs} +3 -3
- package/dist/lib/browser/chunk-KVRYWFZU.mjs.map +7 -0
- package/dist/lib/browser/{chunk-23RVI5FZ.mjs → chunk-LO5UL6RU.mjs} +49 -16
- package/dist/lib/browser/chunk-LO5UL6RU.mjs.map +7 -0
- package/dist/lib/browser/{chunk-PQXZCNAU.mjs → chunk-PTKYMZWO.mjs} +1 -1
- package/dist/lib/browser/chunk-PTKYMZWO.mjs.map +7 -0
- package/dist/lib/browser/{identity-created-FYGS6TBH.mjs → identity-created-JR7BNXFH.mjs} +3 -3
- package/dist/lib/browser/index.mjs +34 -45
- package/dist/lib/browser/index.mjs.map +3 -3
- package/dist/lib/browser/{intent-resolver-7PY5WDYC.mjs → intent-resolver-RKYILWWQ.mjs} +69 -44
- package/dist/lib/browser/intent-resolver-RKYILWWQ.mjs.map +7 -0
- package/dist/lib/browser/meta.json +1 -1
- package/dist/lib/browser/{react-root-EP4XP4IK.mjs → react-root-6H7NX2M2.mjs} +6 -6
- package/dist/lib/browser/{react-surface-VNNI5POA.mjs → react-surface-7AGLOVMK.mjs} +39 -38
- package/dist/lib/browser/react-surface-7AGLOVMK.mjs.map +7 -0
- package/dist/lib/browser/{schema-5W3DSY2E.mjs → schema-FHTA26SW.mjs} +3 -3
- package/dist/lib/browser/{schema-tools-6J5ZEDBC.mjs → schema-tools-YAXPRIXP.mjs} +3 -3
- package/dist/lib/browser/schema-tools-YAXPRIXP.mjs.map +7 -0
- package/dist/lib/browser/{settings-PHPCXX33.mjs → settings-PJPTJUPE.mjs} +3 -3
- package/dist/lib/browser/{spaces-ready-K47RR7N2.mjs → spaces-ready-BSSP7HHG.mjs} +8 -8
- package/dist/lib/browser/spaces-ready-BSSP7HHG.mjs.map +7 -0
- package/dist/lib/browser/{state-INJ63O57.mjs → state-X7VLCC6E.mjs} +5 -3
- package/dist/lib/browser/state-X7VLCC6E.mjs.map +7 -0
- package/dist/lib/browser/types/index.mjs +2 -10
- package/dist/lib/node/{app-graph-builder-ZIUBXRPA.cjs → app-graph-builder-DPY7AUZE.cjs} +73 -46
- package/dist/lib/node/app-graph-builder-DPY7AUZE.cjs.map +7 -0
- package/dist/lib/node/{app-graph-serializer-VQOGHKXL.cjs → app-graph-serializer-JELGJUAY.cjs} +21 -21
- package/dist/lib/node/{app-graph-serializer-VQOGHKXL.cjs.map → app-graph-serializer-JELGJUAY.cjs.map} +2 -2
- package/dist/lib/node/{chunk-53J7HLYX.cjs → chunk-3GKCNADA.cjs} +915 -656
- package/dist/lib/node/chunk-3GKCNADA.cjs.map +7 -0
- package/dist/lib/node/{chunk-WZR6OAN3.cjs → chunk-6P2DB4QQ.cjs} +4 -4
- package/dist/lib/node/{chunk-WZR6OAN3.cjs.map → chunk-6P2DB4QQ.cjs.map} +2 -2
- package/dist/lib/node/{chunk-YZKNRFHU.cjs → chunk-IKIDS6XF.cjs} +10 -10
- package/dist/lib/node/chunk-IKIDS6XF.cjs.map +7 -0
- package/dist/lib/node/{chunk-U6DYXAR3.cjs → chunk-PU2EYH4E.cjs} +27 -21
- package/dist/lib/node/chunk-PU2EYH4E.cjs.map +7 -0
- package/dist/lib/node/{chunk-OVGKWJOC.cjs → chunk-TUZWEPGX.cjs} +99 -66
- package/dist/lib/node/chunk-TUZWEPGX.cjs.map +7 -0
- package/dist/lib/node/{chunk-WAJKBO3J.cjs → chunk-WDEIFDTX.cjs} +19 -73
- package/dist/lib/node/chunk-WDEIFDTX.cjs.map +7 -0
- package/dist/lib/node/{identity-created-AXI64BLE.cjs → identity-created-XU4HFV2T.cjs} +7 -7
- package/dist/lib/node/index.cjs +102 -113
- package/dist/lib/node/index.cjs.map +3 -3
- package/dist/lib/node/{intent-resolver-QEIKJ5FR.cjs → intent-resolver-VJ7YV74L.cjs} +133 -107
- package/dist/lib/node/intent-resolver-VJ7YV74L.cjs.map +7 -0
- package/dist/lib/node/meta.json +1 -1
- package/dist/lib/node/{react-root-OW5NTN2U.cjs → react-root-TEL5RW3N.cjs} +12 -12
- package/dist/lib/node/{react-surface-JTIQUBHB.cjs → react-surface-2H3S5TY5.cjs} +78 -76
- package/dist/lib/node/react-surface-2H3S5TY5.cjs.map +7 -0
- package/dist/lib/node/{schema-YN7WVFRX.cjs → schema-PPJ5BZ3A.cjs} +7 -7
- package/dist/lib/node/{schema-tools-OZS4OC6X.cjs → schema-tools-BLIMOZYY.cjs} +5 -5
- package/dist/lib/node/schema-tools-BLIMOZYY.cjs.map +7 -0
- package/dist/lib/node/{settings-5QYFWNH7.cjs → settings-WVFP2UEP.cjs} +8 -8
- package/dist/lib/node/{spaces-ready-FQNAKR7G.cjs → spaces-ready-7DNZSUOG.cjs} +16 -16
- package/dist/lib/node/spaces-ready-7DNZSUOG.cjs.map +7 -0
- package/dist/lib/node/{state-57UE3DYE.cjs → state-5KX6WBJH.cjs} +10 -8
- package/dist/lib/node/state-5KX6WBJH.cjs.map +7 -0
- package/dist/lib/node/types/index.cjs +13 -21
- package/dist/lib/node/types/index.cjs.map +2 -2
- package/dist/lib/node-esm/{app-graph-builder-TERVM2SL.mjs → app-graph-builder-42IGWRPL.mjs} +33 -6
- package/dist/lib/node-esm/app-graph-builder-42IGWRPL.mjs.map +7 -0
- package/dist/lib/node-esm/{app-graph-serializer-GZRSWHEN.mjs → app-graph-serializer-FXONFKOE.mjs} +7 -7
- package/dist/lib/node-esm/{app-graph-serializer-GZRSWHEN.mjs.map → app-graph-serializer-FXONFKOE.mjs.map} +2 -2
- package/dist/lib/node-esm/{chunk-2TQ2AJEZ.mjs → chunk-3ZOUV4DF.mjs} +22 -16
- package/dist/lib/node-esm/chunk-3ZOUV4DF.mjs.map +7 -0
- package/dist/lib/node-esm/{chunk-FDVNOFE3.mjs → chunk-BEWBZ4Q4.mjs} +853 -588
- package/dist/lib/node-esm/chunk-BEWBZ4Q4.mjs.map +7 -0
- package/dist/lib/node-esm/{chunk-TRNZQEEN.mjs → chunk-FC4UHDPL.mjs} +15 -65
- package/dist/lib/node-esm/chunk-FC4UHDPL.mjs.map +7 -0
- package/dist/lib/node-esm/{chunk-ICCM4YRJ.mjs → chunk-MSWEFAPD.mjs} +1 -1
- package/dist/lib/node-esm/chunk-MSWEFAPD.mjs.map +7 -0
- package/dist/lib/node-esm/{chunk-6RSVVEPS.mjs → chunk-PIYAWT5N.mjs} +3 -3
- package/dist/lib/node-esm/chunk-PIYAWT5N.mjs.map +7 -0
- package/dist/lib/node-esm/{chunk-PGH5L7MV.mjs → chunk-ZGLK25WQ.mjs} +49 -16
- package/dist/lib/node-esm/chunk-ZGLK25WQ.mjs.map +7 -0
- package/dist/lib/node-esm/{identity-created-3CGEXNPO.mjs → identity-created-WJKAS2PV.mjs} +3 -3
- package/dist/lib/node-esm/index.mjs +34 -45
- package/dist/lib/node-esm/index.mjs.map +3 -3
- package/dist/lib/node-esm/{intent-resolver-7EYVRN3R.mjs → intent-resolver-ZFNSA4CM.mjs} +69 -44
- package/dist/lib/node-esm/intent-resolver-ZFNSA4CM.mjs.map +7 -0
- package/dist/lib/node-esm/meta.json +1 -1
- package/dist/lib/node-esm/{react-root-RCKGZSZB.mjs → react-root-PRBJMWLQ.mjs} +6 -6
- package/dist/lib/node-esm/{react-surface-WKKBE5V4.mjs → react-surface-RCZG2PNF.mjs} +39 -38
- package/dist/lib/node-esm/react-surface-RCZG2PNF.mjs.map +7 -0
- package/dist/lib/node-esm/{schema-LOR2EVGY.mjs → schema-OUZKVYM5.mjs} +3 -3
- package/dist/lib/node-esm/{schema-tools-KJVXGDBO.mjs → schema-tools-IU7EX5A5.mjs} +3 -3
- package/dist/lib/node-esm/schema-tools-IU7EX5A5.mjs.map +7 -0
- package/dist/lib/node-esm/{settings-H6MXTEQM.mjs → settings-FJZPC2TV.mjs} +3 -3
- package/dist/lib/node-esm/{spaces-ready-HKAQG5SA.mjs → spaces-ready-7X5PGB2V.mjs} +8 -8
- package/dist/lib/node-esm/spaces-ready-7X5PGB2V.mjs.map +7 -0
- package/dist/lib/node-esm/{state-VYA6OFHD.mjs → state-Z6E2YTNC.mjs} +5 -3
- package/dist/lib/node-esm/state-Z6E2YTNC.mjs.map +7 -0
- package/dist/lib/node-esm/types/index.mjs +2 -10
- 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 +4 -3
- package/dist/types/src/capabilities/capabilities.d.ts.map +1 -1
- package/dist/types/src/capabilities/index.d.ts +0 -1
- package/dist/types/src/capabilities/index.d.ts.map +1 -1
- package/dist/types/src/capabilities/intent-resolver.d.ts +1 -2
- package/dist/types/src/capabilities/intent-resolver.d.ts.map +1 -1
- package/dist/types/src/capabilities/react-surface.d.ts.map +1 -1
- package/dist/types/src/capabilities/state.d.ts.map +1 -1
- package/dist/types/src/components/CreateDialog/CreateObjectDialog.d.ts.map +1 -1
- package/dist/types/src/components/JoinDialog.d.ts.map +1 -1
- package/dist/types/src/components/MembersContainer.d.ts +7 -0
- package/dist/types/src/components/MembersContainer.d.ts.map +1 -0
- package/dist/types/src/components/MembersContainer.stories.d.ts +8 -0
- package/dist/types/src/components/MembersContainer.stories.d.ts.map +1 -0
- package/dist/types/src/components/ObjectSettingsContainer/AdvancedObjectSettings.d.ts.map +1 -0
- package/dist/types/src/components/ObjectSettingsContainer/BaseObjectSettings.d.ts +8 -0
- package/dist/types/src/components/ObjectSettingsContainer/BaseObjectSettings.d.ts.map +1 -0
- package/dist/types/src/components/ObjectSettingsContainer/ForeignKeys.d.ts.map +1 -0
- package/dist/types/src/components/ObjectSettingsContainer/ObjectSettingsContainer.d.ts +8 -0
- package/dist/types/src/components/ObjectSettingsContainer/ObjectSettingsContainer.d.ts.map +1 -0
- package/dist/types/src/components/ObjectSettingsContainer/index.d.ts +2 -0
- package/dist/types/src/components/ObjectSettingsContainer/index.d.ts.map +1 -0
- package/dist/types/src/components/SpacePresence.d.ts.map +1 -1
- package/dist/types/src/components/SpaceSettings/SpacePropertiesForm.d.ts +7 -0
- package/dist/types/src/components/SpaceSettings/SpacePropertiesForm.d.ts.map +1 -0
- package/dist/types/src/components/SpaceSettings/SpacePropertiesForm.stories.d.ts +7 -0
- package/dist/types/src/components/SpaceSettings/SpacePropertiesForm.stories.d.ts.map +1 -0
- package/dist/types/src/components/SpaceSettings/SpaceSettingsContainer.d.ts +9 -0
- package/dist/types/src/components/SpaceSettings/SpaceSettingsContainer.d.ts.map +1 -0
- package/dist/types/src/components/SpaceSettings/index.d.ts +2 -2
- package/dist/types/src/components/SpaceSettings/index.d.ts.map +1 -1
- package/dist/types/src/components/index.d.ts +2 -2
- package/dist/types/src/components/index.d.ts.map +1 -1
- package/dist/types/src/events.d.ts +1 -1
- package/dist/types/src/events.d.ts.map +1 -1
- package/dist/types/src/meta.d.ts +2 -5
- package/dist/types/src/meta.d.ts.map +1 -1
- package/dist/types/src/translations.d.ts +53 -36
- package/dist/types/src/translations.d.ts.map +1 -1
- package/dist/types/src/types/thread.d.ts +92 -197
- package/dist/types/src/types/thread.d.ts.map +1 -1
- package/dist/types/src/types/types.d.ts +10 -0
- package/dist/types/src/types/types.d.ts.map +1 -1
- package/dist/types/src/util.d.ts +12 -0
- package/dist/types/src/util.d.ts.map +1 -1
- package/package.json +44 -42
- package/src/SpacePlugin.tsx +6 -11
- package/src/capabilities/app-graph-builder.ts +20 -0
- package/src/capabilities/app-graph-serializer.ts +2 -2
- package/src/capabilities/capabilities.ts +3 -3
- package/src/capabilities/intent-resolver.ts +66 -38
- package/src/capabilities/react-surface.tsx +30 -28
- package/src/capabilities/schema-tools.ts +2 -2
- package/src/capabilities/spaces-ready.ts +3 -3
- package/src/capabilities/state.ts +2 -0
- package/src/components/CreateDialog/CreateObjectDialog.tsx +3 -6
- package/src/components/CreateDialog/CreateObjectPanel.tsx +6 -6
- package/src/components/JoinDialog.tsx +43 -27
- package/src/components/MembersContainer.stories.tsx +34 -0
- package/src/components/MembersContainer.tsx +257 -0
- package/src/components/{AdvancedObjectSettings → ObjectSettingsContainer}/AdvancedObjectSettings.tsx +2 -2
- package/src/components/ObjectSettingsContainer/BaseObjectSettings.tsx +47 -0
- package/src/components/ObjectSettingsContainer/ObjectSettingsContainer.tsx +36 -0
- package/src/components/ObjectSettingsContainer/index.ts +5 -0
- package/src/components/PopoverRenameObject.tsx +1 -1
- package/src/components/SpacePresence.tsx +25 -23
- package/src/components/SpaceSettings/{SpaceSettingsPanel.stories.tsx → SpacePropertiesForm.stories.tsx} +6 -6
- package/src/components/SpaceSettings/SpacePropertiesForm.tsx +136 -0
- package/src/components/SpaceSettings/SpaceSettingsContainer.tsx +63 -0
- package/src/components/SpaceSettings/index.ts +2 -2
- package/src/components/SyncStatus/SyncStatus.tsx +1 -1
- package/src/components/SyncStatus/save-tracker.ts +5 -5
- package/src/components/index.ts +2 -2
- package/src/events.ts +2 -2
- package/src/meta.ts +2 -2
- package/src/translations.ts +21 -12
- package/src/types/thread.ts +2 -56
- package/src/types/types.ts +15 -6
- package/src/util.tsx +30 -9
- package/dist/lib/browser/app-graph-builder-MGK5HWPZ.mjs.map +0 -7
- package/dist/lib/browser/chunk-23RVI5FZ.mjs.map +0 -7
- package/dist/lib/browser/chunk-NU7WDVGN.mjs.map +0 -7
- package/dist/lib/browser/chunk-OWVFWTX4.mjs.map +0 -7
- package/dist/lib/browser/chunk-PQXZCNAU.mjs.map +0 -7
- package/dist/lib/browser/chunk-UDWHTKB5.mjs.map +0 -7
- package/dist/lib/browser/chunk-ULA2UQJ4.mjs.map +0 -7
- package/dist/lib/browser/intent-resolver-7PY5WDYC.mjs.map +0 -7
- package/dist/lib/browser/react-surface-VNNI5POA.mjs.map +0 -7
- package/dist/lib/browser/schema-tools-6J5ZEDBC.mjs.map +0 -7
- package/dist/lib/browser/spaces-ready-K47RR7N2.mjs.map +0 -7
- package/dist/lib/browser/state-INJ63O57.mjs.map +0 -7
- package/dist/lib/node/app-graph-builder-ZIUBXRPA.cjs.map +0 -7
- package/dist/lib/node/chunk-53J7HLYX.cjs.map +0 -7
- package/dist/lib/node/chunk-OVGKWJOC.cjs.map +0 -7
- package/dist/lib/node/chunk-U6DYXAR3.cjs.map +0 -7
- package/dist/lib/node/chunk-WAJKBO3J.cjs.map +0 -7
- package/dist/lib/node/chunk-YZKNRFHU.cjs.map +0 -7
- package/dist/lib/node/intent-resolver-QEIKJ5FR.cjs.map +0 -7
- package/dist/lib/node/react-surface-JTIQUBHB.cjs.map +0 -7
- package/dist/lib/node/schema-tools-OZS4OC6X.cjs.map +0 -7
- package/dist/lib/node/spaces-ready-FQNAKR7G.cjs.map +0 -7
- package/dist/lib/node/state-57UE3DYE.cjs.map +0 -7
- package/dist/lib/node-esm/app-graph-builder-TERVM2SL.mjs.map +0 -7
- package/dist/lib/node-esm/chunk-2TQ2AJEZ.mjs.map +0 -7
- package/dist/lib/node-esm/chunk-6RSVVEPS.mjs.map +0 -7
- package/dist/lib/node-esm/chunk-FDVNOFE3.mjs.map +0 -7
- package/dist/lib/node-esm/chunk-ICCM4YRJ.mjs.map +0 -7
- package/dist/lib/node-esm/chunk-PGH5L7MV.mjs.map +0 -7
- package/dist/lib/node-esm/chunk-TRNZQEEN.mjs.map +0 -7
- package/dist/lib/node-esm/intent-resolver-7EYVRN3R.mjs.map +0 -7
- package/dist/lib/node-esm/react-surface-WKKBE5V4.mjs.map +0 -7
- package/dist/lib/node-esm/schema-tools-KJVXGDBO.mjs.map +0 -7
- package/dist/lib/node-esm/spaces-ready-HKAQG5SA.mjs.map +0 -7
- package/dist/lib/node-esm/state-VYA6OFHD.mjs.map +0 -7
- package/dist/types/src/components/AdvancedObjectSettings/AdvancedObjectSettings.d.ts.map +0 -1
- package/dist/types/src/components/AdvancedObjectSettings/ForeignKeys.d.ts.map +0 -1
- package/dist/types/src/components/AdvancedObjectSettings/index.d.ts +0 -2
- package/dist/types/src/components/AdvancedObjectSettings/index.d.ts.map +0 -1
- package/dist/types/src/components/BaseObjectSettings.d.ts +0 -7
- package/dist/types/src/components/BaseObjectSettings.d.ts.map +0 -1
- package/dist/types/src/components/SpaceSettings/SpaceSettingsDialog.d.ts +0 -11
- package/dist/types/src/components/SpaceSettings/SpaceSettingsDialog.d.ts.map +0 -1
- package/dist/types/src/components/SpaceSettings/SpaceSettingsDialog.stories.d.ts +0 -7
- package/dist/types/src/components/SpaceSettings/SpaceSettingsDialog.stories.d.ts.map +0 -1
- package/dist/types/src/components/SpaceSettings/SpaceSettingsPanel.d.ts +0 -7
- package/dist/types/src/components/SpaceSettings/SpaceSettingsPanel.d.ts.map +0 -1
- package/dist/types/src/components/SpaceSettings/SpaceSettingsPanel.stories.d.ts +0 -7
- package/dist/types/src/components/SpaceSettings/SpaceSettingsPanel.stories.d.ts.map +0 -1
- package/src/components/AdvancedObjectSettings/index.ts +0 -5
- package/src/components/BaseObjectSettings.tsx +0 -40
- package/src/components/SpaceSettings/SpaceSettingsDialog.stories.tsx +0 -43
- package/src/components/SpaceSettings/SpaceSettingsDialog.tsx +0 -120
- package/src/components/SpaceSettings/SpaceSettingsPanel.tsx +0 -83
- /package/dist/lib/browser/{identity-created-FYGS6TBH.mjs.map → identity-created-JR7BNXFH.mjs.map} +0 -0
- /package/dist/lib/browser/{react-root-EP4XP4IK.mjs.map → react-root-6H7NX2M2.mjs.map} +0 -0
- /package/dist/lib/browser/{schema-5W3DSY2E.mjs.map → schema-FHTA26SW.mjs.map} +0 -0
- /package/dist/lib/browser/{settings-PHPCXX33.mjs.map → settings-PJPTJUPE.mjs.map} +0 -0
- /package/dist/lib/node/{identity-created-AXI64BLE.cjs.map → identity-created-XU4HFV2T.cjs.map} +0 -0
- /package/dist/lib/node/{react-root-OW5NTN2U.cjs.map → react-root-TEL5RW3N.cjs.map} +0 -0
- /package/dist/lib/node/{schema-YN7WVFRX.cjs.map → schema-PPJ5BZ3A.cjs.map} +0 -0
- /package/dist/lib/node/{settings-5QYFWNH7.cjs.map → settings-WVFP2UEP.cjs.map} +0 -0
- /package/dist/lib/node-esm/{identity-created-3CGEXNPO.mjs.map → identity-created-WJKAS2PV.mjs.map} +0 -0
- /package/dist/lib/node-esm/{react-root-RCKGZSZB.mjs.map → react-root-PRBJMWLQ.mjs.map} +0 -0
- /package/dist/lib/node-esm/{schema-LOR2EVGY.mjs.map → schema-OUZKVYM5.mjs.map} +0 -0
- /package/dist/lib/node-esm/{settings-H6MXTEQM.mjs.map → settings-FJZPC2TV.mjs.map} +0 -0
- /package/dist/types/src/components/{AdvancedObjectSettings → ObjectSettingsContainer}/AdvancedObjectSettings.d.ts +0 -0
- /package/dist/types/src/components/{AdvancedObjectSettings → ObjectSettingsContainer}/ForeignKeys.d.ts +0 -0
- /package/src/components/{AdvancedObjectSettings → ObjectSettingsContainer}/ForeignKeys.tsx +0 -0
|
@@ -1,129 +1,35 @@
|
|
|
1
1
|
import { createRequire } from 'node:module';const require = createRequire(import.meta.url);
|
|
2
2
|
import {
|
|
3
3
|
SpaceCapabilities
|
|
4
|
-
} from "./chunk-
|
|
4
|
+
} from "./chunk-PIYAWT5N.mjs";
|
|
5
5
|
import {
|
|
6
|
-
COMPOSER_SPACE_LOCK,
|
|
7
6
|
getSpaceDisplayName
|
|
8
|
-
} from "./chunk-
|
|
7
|
+
} from "./chunk-ZGLK25WQ.mjs";
|
|
9
8
|
import {
|
|
10
9
|
CollectionType,
|
|
11
10
|
SpaceAction,
|
|
12
11
|
SpaceForm
|
|
13
|
-
} from "./chunk-
|
|
12
|
+
} from "./chunk-FC4UHDPL.mjs";
|
|
14
13
|
import {
|
|
15
|
-
SPACE_PLUGIN
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
// packages/plugins/plugin-space/src/components/AdvancedObjectSettings/AdvancedObjectSettings.tsx
|
|
19
|
-
import React2, { useCallback as useCallback2, useState } from "react";
|
|
20
|
-
import { ForeignKeySchema } from "@dxos/echo-schema";
|
|
21
|
-
import { getMeta } from "@dxos/react-client/echo";
|
|
22
|
-
import { IconButton as IconButton2, useTranslation as useTranslation2, Separator } from "@dxos/react-ui";
|
|
23
|
-
import { Form } from "@dxos/react-ui-form";
|
|
24
|
-
|
|
25
|
-
// packages/plugins/plugin-space/src/components/AdvancedObjectSettings/ForeignKeys.tsx
|
|
26
|
-
import React, { useCallback } from "react";
|
|
27
|
-
import { IconButton, List, ListItem, useTranslation } from "@dxos/react-ui";
|
|
28
|
-
var ForeignKeys = ({ keys, onDelete }) => {
|
|
29
|
-
return /* @__PURE__ */ React.createElement(List, {
|
|
30
|
-
classNames: "flex flex-col gap-2"
|
|
31
|
-
}, keys.map((key) => /* @__PURE__ */ React.createElement(KeyItem, {
|
|
32
|
-
key: key.id,
|
|
33
|
-
forignKey: key,
|
|
34
|
-
onDelete
|
|
35
|
-
})));
|
|
36
|
-
};
|
|
37
|
-
var KeyItem = ({ forignKey, onDelete }) => {
|
|
38
|
-
const { t } = useTranslation(SPACE_PLUGIN);
|
|
39
|
-
const handleDelete = useCallback(() => {
|
|
40
|
-
onDelete?.(forignKey);
|
|
41
|
-
}, [
|
|
42
|
-
forignKey,
|
|
43
|
-
onDelete
|
|
44
|
-
]);
|
|
45
|
-
return /* @__PURE__ */ React.createElement(ListItem.Root, {
|
|
46
|
-
classNames: "px-2"
|
|
47
|
-
}, /* @__PURE__ */ React.createElement(ListItem.Heading, {
|
|
48
|
-
classNames: "flex flex-col grow truncate"
|
|
49
|
-
}, /* @__PURE__ */ React.createElement("div", null, forignKey.source), /* @__PURE__ */ React.createElement("div", {
|
|
50
|
-
className: "text-description text-sm truncate"
|
|
51
|
-
}, forignKey.id)), /* @__PURE__ */ React.createElement(ListItem.Endcap, null, /* @__PURE__ */ React.createElement(IconButton, {
|
|
52
|
-
iconOnly: true,
|
|
53
|
-
icon: "ph--x--regular",
|
|
54
|
-
variant: "ghost",
|
|
55
|
-
label: t("delete key"),
|
|
56
|
-
onClick: handleDelete
|
|
57
|
-
})));
|
|
58
|
-
};
|
|
59
|
-
|
|
60
|
-
// packages/plugins/plugin-space/src/components/AdvancedObjectSettings/AdvancedObjectSettings.tsx
|
|
61
|
-
var initialValues = {
|
|
62
|
-
source: "",
|
|
63
|
-
id: ""
|
|
64
|
-
};
|
|
65
|
-
var AdvancedObjectSettings = ({ object }) => {
|
|
66
|
-
const { t } = useTranslation2(SPACE_PLUGIN);
|
|
67
|
-
const [adding, setAdding] = useState(false);
|
|
68
|
-
const keys = getMeta(object).keys;
|
|
69
|
-
const handleNew = useCallback2(() => setAdding(true), []);
|
|
70
|
-
const handleCancel = useCallback2(() => setAdding(false), []);
|
|
71
|
-
const handleSave = useCallback2((key) => {
|
|
72
|
-
const index = keys.findIndex(({ source, id }) => source === key.source && id === key.id);
|
|
73
|
-
if (index === -1) {
|
|
74
|
-
keys.push(key);
|
|
75
|
-
}
|
|
76
|
-
setAdding(false);
|
|
77
|
-
}, [
|
|
78
|
-
keys
|
|
79
|
-
]);
|
|
80
|
-
const handleDelete = useCallback2((key) => {
|
|
81
|
-
const index = keys.findIndex(({ source, id }) => source === key.source && id === key.id);
|
|
82
|
-
if (index !== -1) {
|
|
83
|
-
keys.splice(index, 1);
|
|
84
|
-
}
|
|
85
|
-
}, [
|
|
86
|
-
keys
|
|
87
|
-
]);
|
|
88
|
-
return /* @__PURE__ */ React2.createElement(React2.Fragment, null, /* @__PURE__ */ React2.createElement(Separator, null), /* @__PURE__ */ React2.createElement("div", {
|
|
89
|
-
className: "p-2 flex flex-col gap-4"
|
|
90
|
-
}, /* @__PURE__ */ React2.createElement("h2", null, t("advanced settings label")), /* @__PURE__ */ React2.createElement("div", {
|
|
91
|
-
className: "flex items-center"
|
|
92
|
-
}, /* @__PURE__ */ React2.createElement("h3", {
|
|
93
|
-
className: "text-sm font-semibold"
|
|
94
|
-
}, t("foreign keys")), /* @__PURE__ */ React2.createElement("div", {
|
|
95
|
-
className: "grow"
|
|
96
|
-
}), /* @__PURE__ */ React2.createElement(IconButton2, {
|
|
97
|
-
classNames: adding && "invisible",
|
|
98
|
-
icon: "ph--plus--regular",
|
|
99
|
-
label: t("add key"),
|
|
100
|
-
onClick: handleNew
|
|
101
|
-
})), !adding && /* @__PURE__ */ React2.createElement(ForeignKeys, {
|
|
102
|
-
keys,
|
|
103
|
-
onDelete: handleDelete
|
|
104
|
-
})), adding && /* @__PURE__ */ React2.createElement(Form, {
|
|
105
|
-
schema: ForeignKeySchema,
|
|
106
|
-
values: initialValues,
|
|
107
|
-
onSave: handleSave,
|
|
108
|
-
onCancel: handleCancel
|
|
109
|
-
}));
|
|
110
|
-
};
|
|
14
|
+
SPACE_PLUGIN,
|
|
15
|
+
meta
|
|
16
|
+
} from "./chunk-MSWEFAPD.mjs";
|
|
111
17
|
|
|
112
18
|
// packages/plugins/plugin-space/src/components/AwaitingObject.tsx
|
|
113
19
|
import { CheckCircle, CircleDashed, CircleNotch } from "@phosphor-icons/react";
|
|
114
|
-
import
|
|
20
|
+
import React, { useCallback, useEffect, useState } from "react";
|
|
115
21
|
import { createIntent, LayoutAction, useIntentDispatcher, useLayout } from "@dxos/app-framework";
|
|
116
22
|
import { useClient } from "@dxos/react-client";
|
|
117
23
|
import { Filter, fullyQualifiedId, useQuery } from "@dxos/react-client/echo";
|
|
118
|
-
import { Button, Toast, useTranslation
|
|
24
|
+
import { Button, Toast, useTranslation } from "@dxos/react-ui";
|
|
119
25
|
import { getSize, mx } from "@dxos/react-ui-theme";
|
|
120
26
|
var WAIT_FOR_OBJECT_TIMEOUT = 18e4;
|
|
121
27
|
var TOAST_TIMEOUT = 24e4;
|
|
122
28
|
var AwaitingObject = ({ id }) => {
|
|
123
|
-
const [open, setOpen] =
|
|
124
|
-
const [waiting, setWaiting] =
|
|
125
|
-
const [found, setFound] =
|
|
126
|
-
const { t } =
|
|
29
|
+
const [open, setOpen] = useState(true);
|
|
30
|
+
const [waiting, setWaiting] = useState(true);
|
|
31
|
+
const [found, setFound] = useState(false);
|
|
32
|
+
const { t } = useTranslation(SPACE_PLUGIN);
|
|
127
33
|
const { dispatchPromise: dispatch } = useIntentDispatcher();
|
|
128
34
|
const layout = useLayout();
|
|
129
35
|
const client = useClient();
|
|
@@ -151,12 +57,12 @@ var AwaitingObject = ({ id }) => {
|
|
|
151
57
|
objects,
|
|
152
58
|
layout
|
|
153
59
|
]);
|
|
154
|
-
const handleClose =
|
|
60
|
+
const handleClose = useCallback(async () => dispatch(createIntent(SpaceAction.WaitForObject, {
|
|
155
61
|
id: void 0
|
|
156
62
|
})), [
|
|
157
63
|
dispatch
|
|
158
64
|
]);
|
|
159
|
-
const handleNavigate =
|
|
65
|
+
const handleNavigate = useCallback(() => {
|
|
160
66
|
void dispatch(createIntent(LayoutAction.Open, {
|
|
161
67
|
part: "main",
|
|
162
68
|
subject: [
|
|
@@ -169,86 +75,62 @@ var AwaitingObject = ({ id }) => {
|
|
|
169
75
|
handleClose,
|
|
170
76
|
dispatch
|
|
171
77
|
]);
|
|
172
|
-
return /* @__PURE__ */
|
|
78
|
+
return /* @__PURE__ */ React.createElement(Toast.Root, {
|
|
173
79
|
open,
|
|
174
80
|
duration: TOAST_TIMEOUT,
|
|
175
81
|
onOpenChange: setOpen
|
|
176
|
-
}, /* @__PURE__ */
|
|
82
|
+
}, /* @__PURE__ */ React.createElement(Toast.Body, null, /* @__PURE__ */ React.createElement(Toast.Title, {
|
|
177
83
|
classNames: "flex items-center gap-2"
|
|
178
|
-
}, found ? /* @__PURE__ */
|
|
84
|
+
}, found ? /* @__PURE__ */ React.createElement(React.Fragment, null, /* @__PURE__ */ React.createElement(CheckCircle, {
|
|
179
85
|
className: getSize(5)
|
|
180
|
-
}), /* @__PURE__ */
|
|
86
|
+
}), /* @__PURE__ */ React.createElement("span", null, t("found object label"))) : waiting ? /* @__PURE__ */ React.createElement(React.Fragment, null, /* @__PURE__ */ React.createElement(CircleNotch, {
|
|
181
87
|
className: mx(getSize(5), "animate-spin")
|
|
182
|
-
}), /* @__PURE__ */
|
|
88
|
+
}), /* @__PURE__ */ React.createElement("span", null, t("waiting for object label"))) : /* @__PURE__ */ React.createElement(React.Fragment, null, /* @__PURE__ */ React.createElement(CircleDashed, {
|
|
183
89
|
className: getSize(5)
|
|
184
|
-
}), /* @__PURE__ */
|
|
90
|
+
}), /* @__PURE__ */ React.createElement("span", null, t("object not found label")))), /* @__PURE__ */ React.createElement(Toast.Description, null, t(found ? "found object description" : waiting ? "waiting for object description" : "object not found description"))), /* @__PURE__ */ React.createElement(Toast.Actions, null, found ? /* @__PURE__ */ React.createElement(React.Fragment, null, /* @__PURE__ */ React.createElement(Toast.Action, {
|
|
185
91
|
altText: t("go to object alt"),
|
|
186
92
|
asChild: true
|
|
187
|
-
}, /* @__PURE__ */
|
|
93
|
+
}, /* @__PURE__ */ React.createElement(Button, {
|
|
188
94
|
variant: "primary",
|
|
189
95
|
onClick: handleNavigate
|
|
190
|
-
}, t("go to object label"))), /* @__PURE__ */
|
|
96
|
+
}, t("go to object label"))), /* @__PURE__ */ React.createElement(Toast.Close, {
|
|
191
97
|
asChild: true
|
|
192
|
-
}, /* @__PURE__ */
|
|
98
|
+
}, /* @__PURE__ */ React.createElement(Button, {
|
|
193
99
|
onClick: handleClose
|
|
194
100
|
}, t("close label", {
|
|
195
101
|
ns: "appkit"
|
|
196
|
-
})))) : /* @__PURE__ */
|
|
102
|
+
})))) : /* @__PURE__ */ React.createElement(Toast.Close, {
|
|
197
103
|
asChild: true
|
|
198
|
-
}, /* @__PURE__ */
|
|
104
|
+
}, /* @__PURE__ */ React.createElement(Button, {
|
|
199
105
|
onClick: handleClose
|
|
200
106
|
}, t(waiting ? "close label" : "confirm label", {
|
|
201
107
|
ns: "appkit"
|
|
202
108
|
})))));
|
|
203
109
|
};
|
|
204
110
|
|
|
205
|
-
// packages/plugins/plugin-space/src/components/BaseObjectSettings.tsx
|
|
206
|
-
import React4 from "react";
|
|
207
|
-
import { Input, useTranslation as useTranslation4 } from "@dxos/react-ui";
|
|
208
|
-
var BaseObjectSettings = ({ object }) => {
|
|
209
|
-
const { t } = useTranslation4(SPACE_PLUGIN);
|
|
210
|
-
const inputRef = React4.useRef(null);
|
|
211
|
-
return /* @__PURE__ */ React4.createElement("div", {
|
|
212
|
-
role: "form",
|
|
213
|
-
className: "flex flex-col w-full p-2 gap-1"
|
|
214
|
-
}, /* @__PURE__ */ React4.createElement(Input.Root, null, /* @__PURE__ */ React4.createElement(Input.Label, null, t("name label")), /* @__PURE__ */ React4.createElement(Input.TextInput, {
|
|
215
|
-
ref: inputRef,
|
|
216
|
-
placeholder: t("name placeholder"),
|
|
217
|
-
value: object.name ?? "",
|
|
218
|
-
onChange: (event) => {
|
|
219
|
-
object.name = event.target.value;
|
|
220
|
-
},
|
|
221
|
-
onKeyDown: (event) => {
|
|
222
|
-
if (event.key === "Enter") {
|
|
223
|
-
inputRef.current?.blur();
|
|
224
|
-
}
|
|
225
|
-
}
|
|
226
|
-
})));
|
|
227
|
-
};
|
|
228
|
-
|
|
229
111
|
// packages/plugins/plugin-space/src/components/CreateDialog/CreateObjectDialog.tsx
|
|
230
112
|
import { pipe } from "effect";
|
|
231
|
-
import
|
|
113
|
+
import React3, { useCallback as useCallback3, useRef } from "react";
|
|
232
114
|
import { Capabilities, chain, createIntent as createIntent2, LayoutAction as LayoutAction2, useCapabilities, useIntentDispatcher as useIntentDispatcher2, usePluginManager as usePluginManager2 } from "@dxos/app-framework";
|
|
233
115
|
import { invariant as invariant2 } from "@dxos/invariant";
|
|
234
116
|
import { useClient as useClient2 } from "@dxos/react-client";
|
|
235
117
|
import { getSpace, isReactiveObject, isSpace, useSpaces } from "@dxos/react-client/echo";
|
|
236
|
-
import { Button as Button2, Dialog, Icon as Icon2, useTranslation as
|
|
118
|
+
import { Button as Button2, Dialog, Icon as Icon2, useTranslation as useTranslation3 } from "@dxos/react-ui";
|
|
237
119
|
|
|
238
120
|
// packages/plugins/plugin-space/src/components/CreateDialog/CreateObjectPanel.tsx
|
|
239
|
-
import
|
|
121
|
+
import React2, { useCallback as useCallback2, useState as useState2 } from "react";
|
|
240
122
|
import { Surface, isSurfaceAvailable, usePluginManager } from "@dxos/app-framework";
|
|
241
|
-
import {
|
|
123
|
+
import { getTypeAnnotation } from "@dxos/echo-schema";
|
|
242
124
|
import { invariant } from "@dxos/invariant";
|
|
243
|
-
import { Icon, toLocalizedString, useTranslation as
|
|
244
|
-
import { Form
|
|
125
|
+
import { Icon, toLocalizedString, useTranslation as useTranslation2 } from "@dxos/react-ui";
|
|
126
|
+
import { Form } from "@dxos/react-ui-form";
|
|
245
127
|
import { SearchList } from "@dxos/react-ui-searchlist";
|
|
246
128
|
import { mx as mx2 } from "@dxos/react-ui-theme";
|
|
247
129
|
import { isNonNullable } from "@dxos/util";
|
|
248
130
|
var __dxlog_file = "/home/runner/work/dxos/dxos/packages/plugins/plugin-space/src/components/CreateDialog/CreateObjectPanel.tsx";
|
|
249
131
|
var useInputSurfaceLookup = (baseData) => {
|
|
250
132
|
const pluginManager = usePluginManager();
|
|
251
|
-
return
|
|
133
|
+
return useCallback2(({ prop, schema, inputProps }) => {
|
|
252
134
|
const composedData = {
|
|
253
135
|
prop,
|
|
254
136
|
schema,
|
|
@@ -260,7 +142,7 @@ var useInputSurfaceLookup = (baseData) => {
|
|
|
260
142
|
})) {
|
|
261
143
|
return void 0;
|
|
262
144
|
}
|
|
263
|
-
return /* @__PURE__ */
|
|
145
|
+
return /* @__PURE__ */ React2.createElement(Surface, {
|
|
264
146
|
role: "form-input",
|
|
265
147
|
data: composedData,
|
|
266
148
|
...inputProps
|
|
@@ -271,11 +153,11 @@ var useInputSurfaceLookup = (baseData) => {
|
|
|
271
153
|
]);
|
|
272
154
|
};
|
|
273
155
|
var CreateObjectPanel = ({ classNames, forms, spaces, typename: initialTypename, target: initialTarget, name: initialName, defaultSpaceId, resolve, onCreateObject }) => {
|
|
274
|
-
const { t } =
|
|
275
|
-
const [typename, setTypename] =
|
|
276
|
-
const [target, setTarget] =
|
|
277
|
-
const form = forms.find((form2) =>
|
|
278
|
-
const options = forms.map((form2) =>
|
|
156
|
+
const { t } = useTranslation2(SPACE_PLUGIN);
|
|
157
|
+
const [typename, setTypename] = useState2(initialTypename);
|
|
158
|
+
const [target, setTarget] = useState2(initialTarget);
|
|
159
|
+
const form = forms.find((form2) => getTypeAnnotation(form2.objectSchema)?.typename === typename);
|
|
160
|
+
const options = forms.map((form2) => getTypeAnnotation(form2.objectSchema)).filter(isNonNullable).sort((a, b) => {
|
|
279
161
|
const nameA = t("typename label", {
|
|
280
162
|
ns: a.typename,
|
|
281
163
|
defaultValue: a.typename
|
|
@@ -286,7 +168,7 @@ var CreateObjectPanel = ({ classNames, forms, spaces, typename: initialTypename,
|
|
|
286
168
|
});
|
|
287
169
|
return nameA.localeCompare(nameB);
|
|
288
170
|
});
|
|
289
|
-
const handleCreateObject =
|
|
171
|
+
const handleCreateObject = useCallback2(async (props) => {
|
|
290
172
|
if (!form || !target) {
|
|
291
173
|
return;
|
|
292
174
|
}
|
|
@@ -300,7 +182,7 @@ var CreateObjectPanel = ({ classNames, forms, spaces, typename: initialTypename,
|
|
|
300
182
|
form,
|
|
301
183
|
target
|
|
302
184
|
]);
|
|
303
|
-
const handleSetTypename =
|
|
185
|
+
const handleSetTypename = useCallback2(async (typename2) => {
|
|
304
186
|
invariant(target, "target is required", {
|
|
305
187
|
F: __dxlog_file,
|
|
306
188
|
L: 94,
|
|
@@ -310,7 +192,7 @@ var CreateObjectPanel = ({ classNames, forms, spaces, typename: initialTypename,
|
|
|
310
192
|
"'target is required'"
|
|
311
193
|
]
|
|
312
194
|
});
|
|
313
|
-
const form2 = forms.find((form3) =>
|
|
195
|
+
const form2 = forms.find((form3) => getTypeAnnotation(form3.objectSchema)?.typename === typename2);
|
|
314
196
|
if (form2 && !form2.formSchema) {
|
|
315
197
|
await onCreateObject?.({
|
|
316
198
|
form: form2,
|
|
@@ -327,18 +209,18 @@ var CreateObjectPanel = ({ classNames, forms, spaces, typename: initialTypename,
|
|
|
327
209
|
const inputSurfaceLookup = useInputSurfaceLookup({
|
|
328
210
|
target
|
|
329
211
|
});
|
|
330
|
-
return /* @__PURE__ */
|
|
212
|
+
return /* @__PURE__ */ React2.createElement("div", {
|
|
331
213
|
role: "form",
|
|
332
214
|
className: mx2("flex flex-col gap-2", classNames)
|
|
333
|
-
}, !form ? /* @__PURE__ */
|
|
215
|
+
}, !form ? /* @__PURE__ */ React2.createElement(SelectSchema, {
|
|
334
216
|
options,
|
|
335
217
|
resolve,
|
|
336
218
|
onChange: handleSetTypename
|
|
337
|
-
}) : !target ? /* @__PURE__ */
|
|
219
|
+
}) : !target ? /* @__PURE__ */ React2.createElement(SelectSpace, {
|
|
338
220
|
spaces,
|
|
339
221
|
defaultSpaceId,
|
|
340
222
|
onChange: setTarget
|
|
341
|
-
}) : form.formSchema ? /* @__PURE__ */
|
|
223
|
+
}) : form.formSchema ? /* @__PURE__ */ React2.createElement(Form, {
|
|
342
224
|
classNames: "!p-0",
|
|
343
225
|
autoFocus: true,
|
|
344
226
|
values: {
|
|
@@ -351,16 +233,16 @@ var CreateObjectPanel = ({ classNames, forms, spaces, typename: initialTypename,
|
|
|
351
233
|
}) : void 0);
|
|
352
234
|
};
|
|
353
235
|
var SelectSpace = ({ spaces, defaultSpaceId, onChange }) => {
|
|
354
|
-
const { t } =
|
|
355
|
-
return /* @__PURE__ */
|
|
236
|
+
const { t } = useTranslation2(SPACE_PLUGIN);
|
|
237
|
+
return /* @__PURE__ */ React2.createElement(SearchList.Root, {
|
|
356
238
|
label: t("space input label"),
|
|
357
239
|
classNames: "flex flex-col grow overflow-hidden"
|
|
358
|
-
}, /* @__PURE__ */
|
|
240
|
+
}, /* @__PURE__ */ React2.createElement(SearchList.Input, {
|
|
359
241
|
autoFocus: true,
|
|
360
242
|
"data-testid": "create-object-form.space-input",
|
|
361
243
|
placeholder: t("space input placeholder"),
|
|
362
244
|
classNames: "px-1 my-2"
|
|
363
|
-
}), /* @__PURE__ */
|
|
245
|
+
}), /* @__PURE__ */ React2.createElement(SearchList.Content, {
|
|
364
246
|
classNames: "max-bs-[24rem] overflow-auto"
|
|
365
247
|
}, spaces.sort((a, b) => {
|
|
366
248
|
const aName = toLocalizedString(getSpaceDisplayName(a, {
|
|
@@ -370,32 +252,32 @@ var SelectSpace = ({ spaces, defaultSpaceId, onChange }) => {
|
|
|
370
252
|
personal: b.id === defaultSpaceId
|
|
371
253
|
}), t);
|
|
372
254
|
return aName.localeCompare(bName);
|
|
373
|
-
}).map((space) => /* @__PURE__ */
|
|
255
|
+
}).map((space) => /* @__PURE__ */ React2.createElement(SearchList.Item, {
|
|
374
256
|
key: space.id,
|
|
375
257
|
value: toLocalizedString(getSpaceDisplayName(space, {
|
|
376
258
|
personal: space.id === defaultSpaceId
|
|
377
259
|
}), t),
|
|
378
260
|
onSelect: () => onChange(space),
|
|
379
261
|
classNames: "flex items-center gap-2"
|
|
380
|
-
}, /* @__PURE__ */
|
|
262
|
+
}, /* @__PURE__ */ React2.createElement("span", {
|
|
381
263
|
className: "grow truncate"
|
|
382
264
|
}, toLocalizedString(getSpaceDisplayName(space, {
|
|
383
265
|
personal: space.id === defaultSpaceId
|
|
384
266
|
}), t))))));
|
|
385
267
|
};
|
|
386
268
|
var SelectSchema = ({ options, resolve, onChange }) => {
|
|
387
|
-
const { t } =
|
|
388
|
-
return /* @__PURE__ */
|
|
269
|
+
const { t } = useTranslation2(SPACE_PLUGIN);
|
|
270
|
+
return /* @__PURE__ */ React2.createElement(SearchList.Root, {
|
|
389
271
|
label: t("schema input label"),
|
|
390
272
|
classNames: "flex flex-col grow overflow-hidden"
|
|
391
|
-
}, /* @__PURE__ */
|
|
273
|
+
}, /* @__PURE__ */ React2.createElement(SearchList.Input, {
|
|
392
274
|
autoFocus: true,
|
|
393
275
|
"data-testid": "create-object-form.schema-input",
|
|
394
276
|
placeholder: t("schema input placeholder"),
|
|
395
277
|
classNames: "px-1 my-2"
|
|
396
|
-
}), /* @__PURE__ */
|
|
278
|
+
}), /* @__PURE__ */ React2.createElement(SearchList.Content, {
|
|
397
279
|
classNames: "max-bs-[24rem] overflow-auto"
|
|
398
|
-
}, options.map((option) => /* @__PURE__ */
|
|
280
|
+
}, options.map((option) => /* @__PURE__ */ React2.createElement(SearchList.Item, {
|
|
399
281
|
key: option.typename,
|
|
400
282
|
value: t("typename label", {
|
|
401
283
|
ns: option.typename,
|
|
@@ -403,9 +285,9 @@ var SelectSchema = ({ options, resolve, onChange }) => {
|
|
|
403
285
|
}),
|
|
404
286
|
onSelect: () => onChange(option.typename),
|
|
405
287
|
classNames: "flex items-center gap-2"
|
|
406
|
-
}, /* @__PURE__ */
|
|
288
|
+
}, /* @__PURE__ */ React2.createElement("span", {
|
|
407
289
|
className: "flex gap-2 items-center grow truncate"
|
|
408
|
-
}, /* @__PURE__ */
|
|
290
|
+
}, /* @__PURE__ */ React2.createElement(Icon, {
|
|
409
291
|
icon: resolve?.(option.typename).icon ?? "ph--placeholder--regular",
|
|
410
292
|
size: 5
|
|
411
293
|
}), t("typename label", {
|
|
@@ -416,17 +298,17 @@ var SelectSchema = ({ options, resolve, onChange }) => {
|
|
|
416
298
|
|
|
417
299
|
// packages/plugins/plugin-space/src/capabilities/index.ts
|
|
418
300
|
import { lazy } from "@dxos/app-framework";
|
|
419
|
-
var AppGraphBuilder = lazy(() => import("./app-graph-builder-
|
|
420
|
-
var AppGraphSerializer = lazy(() => import("./app-graph-serializer-
|
|
421
|
-
var IdentityCreated = lazy(() => import("./identity-created-
|
|
422
|
-
var IntentResolver = lazy(() => import("./intent-resolver-
|
|
423
|
-
var ReactRoot = lazy(() => import("./react-root-
|
|
424
|
-
var ReactSurface = lazy(() => import("./react-surface-
|
|
425
|
-
var Schema = lazy(() => import("./schema-
|
|
426
|
-
var Tools = lazy(() => import("./schema-tools-
|
|
427
|
-
var SpaceSettings = lazy(() => import("./settings-
|
|
428
|
-
var SpaceState = lazy(() => import("./state-
|
|
429
|
-
var SpacesReady = lazy(() => import("./spaces-ready-
|
|
301
|
+
var AppGraphBuilder = lazy(() => import("./app-graph-builder-42IGWRPL.mjs"));
|
|
302
|
+
var AppGraphSerializer = lazy(() => import("./app-graph-serializer-FXONFKOE.mjs"));
|
|
303
|
+
var IdentityCreated = lazy(() => import("./identity-created-WJKAS2PV.mjs"));
|
|
304
|
+
var IntentResolver = lazy(() => import("./intent-resolver-ZFNSA4CM.mjs"));
|
|
305
|
+
var ReactRoot = lazy(() => import("./react-root-PRBJMWLQ.mjs"));
|
|
306
|
+
var ReactSurface = lazy(() => import("./react-surface-RCZG2PNF.mjs"));
|
|
307
|
+
var Schema = lazy(() => import("./schema-OUZKVYM5.mjs"));
|
|
308
|
+
var Tools = lazy(() => import("./schema-tools-IU7EX5A5.mjs"));
|
|
309
|
+
var SpaceSettings = lazy(() => import("./settings-FJZPC2TV.mjs"));
|
|
310
|
+
var SpaceState = lazy(() => import("./state-Z6E2YTNC.mjs"));
|
|
311
|
+
var SpacesReady = lazy(() => import("./spaces-ready-7X5PGB2V.mjs"));
|
|
430
312
|
|
|
431
313
|
// packages/plugins/plugin-space/src/components/CreateDialog/CreateObjectDialog.tsx
|
|
432
314
|
var __dxlog_file2 = "/home/runner/work/dxos/dxos/packages/plugins/plugin-space/src/components/CreateDialog/CreateObjectDialog.tsx";
|
|
@@ -434,16 +316,15 @@ var CREATE_OBJECT_DIALOG = `${SPACE_PLUGIN}/CreateObjectDialog`;
|
|
|
434
316
|
var CreateObjectDialog = ({ target, typename, name, shouldNavigate: _shouldNavigate }) => {
|
|
435
317
|
const closeRef = useRef(null);
|
|
436
318
|
const manager = usePluginManager2();
|
|
437
|
-
const { t } =
|
|
319
|
+
const { t } = useTranslation3(SPACE_PLUGIN);
|
|
438
320
|
const client = useClient2();
|
|
439
321
|
const spaces = useSpaces();
|
|
440
322
|
const { dispatchPromise: dispatch } = useIntentDispatcher2();
|
|
441
323
|
const forms = useCapabilities(SpaceCapabilities.ObjectForm);
|
|
442
|
-
const resolve =
|
|
324
|
+
const resolve = useCallback3((typename2) => manager.context.requestCapabilities(Capabilities.Metadata).find(({ id }) => id === typename2)?.metadata ?? {}, [
|
|
443
325
|
manager
|
|
444
326
|
]);
|
|
445
|
-
const handleCreateObject =
|
|
446
|
-
const target2 = isSpace(_target) ? _target.properties[CollectionType.typename]?.target : _target;
|
|
327
|
+
const handleCreateObject = useCallback3(async ({ form, target: target2, data = {} }) => {
|
|
447
328
|
if (!target2) {
|
|
448
329
|
return;
|
|
449
330
|
}
|
|
@@ -451,7 +332,7 @@ var CreateObjectDialog = ({ target, typename, name, shouldNavigate: _shouldNavig
|
|
|
451
332
|
const space = isSpace(target2) ? target2 : getSpace(target2);
|
|
452
333
|
invariant2(space, "Missing space", {
|
|
453
334
|
F: __dxlog_file2,
|
|
454
|
-
L:
|
|
335
|
+
L: 72,
|
|
455
336
|
S: void 0,
|
|
456
337
|
A: [
|
|
457
338
|
"space",
|
|
@@ -465,7 +346,8 @@ var CreateObjectDialog = ({ target, typename, name, shouldNavigate: _shouldNavig
|
|
|
465
346
|
if (isReactiveObject(object)) {
|
|
466
347
|
const addObjectIntent = createIntent2(SpaceAction.AddObject, {
|
|
467
348
|
target: target2,
|
|
468
|
-
object
|
|
349
|
+
object,
|
|
350
|
+
hidden: form.hidden
|
|
469
351
|
});
|
|
470
352
|
const shouldNavigate = _shouldNavigate ?? (() => true);
|
|
471
353
|
if (shouldNavigate(object)) {
|
|
@@ -483,22 +365,22 @@ var CreateObjectDialog = ({ target, typename, name, shouldNavigate: _shouldNavig
|
|
|
483
365
|
return (
|
|
484
366
|
// TODO(wittjosiah): The tablist dialog pattern is copied from @dxos/plugin-manager.
|
|
485
367
|
// Consider factoring it out to the tabs package.
|
|
486
|
-
/* @__PURE__ */
|
|
368
|
+
/* @__PURE__ */ React3.createElement(Dialog.Content, {
|
|
487
369
|
classNames: "p-0 bs-content max-bs-full md:max-is-[40rem] overflow-hidden"
|
|
488
|
-
}, /* @__PURE__ */
|
|
370
|
+
}, /* @__PURE__ */ React3.createElement("div", {
|
|
489
371
|
role: "none",
|
|
490
372
|
className: "flex justify-between pbs-2 pis-2 pie-2 @md:pbs-4 @md:pis-4 @md:pie-4"
|
|
491
|
-
}, /* @__PURE__ */
|
|
373
|
+
}, /* @__PURE__ */ React3.createElement(Dialog.Title, null, t("create object dialog title")), /* @__PURE__ */ React3.createElement(Dialog.Close, {
|
|
492
374
|
asChild: true
|
|
493
|
-
}, /* @__PURE__ */
|
|
375
|
+
}, /* @__PURE__ */ React3.createElement(Button2, {
|
|
494
376
|
ref: closeRef,
|
|
495
377
|
density: "fine",
|
|
496
378
|
variant: "ghost",
|
|
497
379
|
autoFocus: true
|
|
498
|
-
}, /* @__PURE__ */
|
|
380
|
+
}, /* @__PURE__ */ React3.createElement(Icon2, {
|
|
499
381
|
icon: "ph--x--regular",
|
|
500
382
|
size: 4
|
|
501
|
-
})))), /* @__PURE__ */
|
|
383
|
+
})))), /* @__PURE__ */ React3.createElement(CreateObjectPanel, {
|
|
502
384
|
classNames: "p-4",
|
|
503
385
|
forms,
|
|
504
386
|
spaces,
|
|
@@ -514,19 +396,19 @@ var CreateObjectDialog = ({ target, typename, name, shouldNavigate: _shouldNavig
|
|
|
514
396
|
|
|
515
397
|
// packages/plugins/plugin-space/src/components/CreateDialog/CreateSpaceDialog.tsx
|
|
516
398
|
import { Effect } from "effect";
|
|
517
|
-
import
|
|
399
|
+
import React4, { useCallback as useCallback4, useRef as useRef2 } from "react";
|
|
518
400
|
import { createIntent as createIntent3, LayoutAction as LayoutAction3, useIntentDispatcher as useIntentDispatcher3 } from "@dxos/app-framework";
|
|
519
|
-
import { Button as Button3, Dialog as Dialog2, Icon as Icon3, useTranslation as
|
|
520
|
-
import { Form as
|
|
401
|
+
import { Button as Button3, Dialog as Dialog2, Icon as Icon3, useTranslation as useTranslation4 } from "@dxos/react-ui";
|
|
402
|
+
import { Form as Form2 } from "@dxos/react-ui-form";
|
|
521
403
|
var CREATE_SPACE_DIALOG = `${SPACE_PLUGIN}/CreateSpaceDialog`;
|
|
522
|
-
var
|
|
404
|
+
var initialValues = {
|
|
523
405
|
edgeReplication: true
|
|
524
406
|
};
|
|
525
407
|
var CreateSpaceDialog = () => {
|
|
526
408
|
const closeRef = useRef2(null);
|
|
527
|
-
const { t } =
|
|
409
|
+
const { t } = useTranslation4(SPACE_PLUGIN);
|
|
528
410
|
const { dispatch } = useIntentDispatcher3();
|
|
529
|
-
const handleCreateSpace =
|
|
411
|
+
const handleCreateSpace = useCallback4(async (data) => {
|
|
530
412
|
const program = Effect.gen(function* () {
|
|
531
413
|
const { space } = yield* dispatch(createIntent3(SpaceAction.Create, data));
|
|
532
414
|
yield* dispatch(createIntent3(LayoutAction3.SwitchWorkspace, {
|
|
@@ -544,28 +426,28 @@ var CreateSpaceDialog = () => {
|
|
|
544
426
|
return (
|
|
545
427
|
// TODO(wittjosiah): The tablist dialog pattern is copied from @dxos/plugin-manager.
|
|
546
428
|
// Consider factoring it out to the tabs package.
|
|
547
|
-
/* @__PURE__ */
|
|
429
|
+
/* @__PURE__ */ React4.createElement(Dialog2.Content, {
|
|
548
430
|
classNames: "p-0 bs-content min-bs-[16rem] max-bs-full md:max-is-[32rem] overflow-hidden"
|
|
549
|
-
}, /* @__PURE__ */
|
|
431
|
+
}, /* @__PURE__ */ React4.createElement("div", {
|
|
550
432
|
role: "none",
|
|
551
433
|
className: "flex justify-between pbs-2 pis-2 pie-2 @md:pbs-4 @md:pis-4 @md:pie-4"
|
|
552
|
-
}, /* @__PURE__ */
|
|
434
|
+
}, /* @__PURE__ */ React4.createElement(Dialog2.Title, null, t("create space dialog title")), /* @__PURE__ */ React4.createElement(Dialog2.Close, {
|
|
553
435
|
asChild: true
|
|
554
|
-
}, /* @__PURE__ */
|
|
436
|
+
}, /* @__PURE__ */ React4.createElement(Button3, {
|
|
555
437
|
ref: closeRef,
|
|
556
438
|
density: "fine",
|
|
557
439
|
variant: "ghost",
|
|
558
440
|
autoFocus: true
|
|
559
|
-
}, /* @__PURE__ */
|
|
441
|
+
}, /* @__PURE__ */ React4.createElement(Icon3, {
|
|
560
442
|
icon: "ph--x--regular",
|
|
561
443
|
size: 4
|
|
562
|
-
})))), /* @__PURE__ */
|
|
444
|
+
})))), /* @__PURE__ */ React4.createElement("div", {
|
|
563
445
|
className: "p-4"
|
|
564
|
-
}, /* @__PURE__ */
|
|
446
|
+
}, /* @__PURE__ */ React4.createElement(Form2, {
|
|
565
447
|
testId: "create-space-form",
|
|
566
448
|
classNames: "!p-0",
|
|
567
449
|
autoFocus: true,
|
|
568
|
-
values:
|
|
450
|
+
values: initialValues,
|
|
569
451
|
schema: SpaceForm,
|
|
570
452
|
onSave: handleCreateSpace
|
|
571
453
|
})))
|
|
@@ -573,87 +455,89 @@ var CreateSpaceDialog = () => {
|
|
|
573
455
|
};
|
|
574
456
|
|
|
575
457
|
// packages/plugins/plugin-space/src/components/CollectionMain.tsx
|
|
576
|
-
import
|
|
577
|
-
import { useTranslation as
|
|
458
|
+
import React5 from "react";
|
|
459
|
+
import { useTranslation as useTranslation5 } from "@dxos/react-ui";
|
|
578
460
|
import { baseSurface, descriptionText, mx as mx3 } from "@dxos/react-ui-theme";
|
|
579
461
|
var CollectionMain = ({ collection }) => {
|
|
580
|
-
const { t } =
|
|
581
|
-
return /* @__PURE__ */
|
|
462
|
+
const { t } = useTranslation5(SPACE_PLUGIN);
|
|
463
|
+
return /* @__PURE__ */ React5.createElement("div", {
|
|
582
464
|
role: "none",
|
|
583
465
|
className: mx3(baseSurface, "min-bs-screen is-full flex items-center justify-center p-8"),
|
|
584
466
|
"data-testid": "composer.firstRunMessage"
|
|
585
|
-
}, /* @__PURE__ */
|
|
467
|
+
}, /* @__PURE__ */ React5.createElement("p", {
|
|
586
468
|
role: "alert",
|
|
587
469
|
className: mx3(descriptionText, "border border-dashed border-neutral-400/50 rounded-lg p-8 font-normal text-lg max-is-[24rem] break-words")
|
|
588
470
|
}, collection.name ?? t("unnamed collection label")));
|
|
589
471
|
};
|
|
590
472
|
|
|
591
473
|
// packages/plugins/plugin-space/src/components/CollectionSection.tsx
|
|
592
|
-
import
|
|
593
|
-
import { useTranslation as
|
|
474
|
+
import React6 from "react";
|
|
475
|
+
import { useTranslation as useTranslation6 } from "@dxos/react-ui";
|
|
594
476
|
var CollectionSection = ({ collection }) => {
|
|
595
|
-
const { t } =
|
|
596
|
-
return /* @__PURE__ */
|
|
477
|
+
const { t } = useTranslation6(SPACE_PLUGIN);
|
|
478
|
+
return /* @__PURE__ */ React6.createElement("div", {
|
|
597
479
|
className: "min-bs-[3.5rem] grid grid-rows-subgrid grid-cols-subgrid items-center"
|
|
598
|
-
}, /* @__PURE__ */
|
|
480
|
+
}, /* @__PURE__ */ React6.createElement("span", {
|
|
599
481
|
className: "truncate"
|
|
600
482
|
}, collection.name ?? t("unnamed collection label")));
|
|
601
483
|
};
|
|
602
484
|
|
|
603
485
|
// packages/plugins/plugin-space/src/components/JoinDialog.tsx
|
|
604
|
-
import
|
|
486
|
+
import React7, { useCallback as useCallback5 } from "react";
|
|
605
487
|
import { createIntent as createIntent4, LayoutAction as LayoutAction4, useAppGraph, useIntentDispatcher as useIntentDispatcher4 } from "@dxos/app-framework";
|
|
606
|
-
import {
|
|
488
|
+
import { Trigger } from "@dxos/async";
|
|
607
489
|
import { ObservabilityAction } from "@dxos/plugin-observability/types";
|
|
608
490
|
import { useClient as useClient3 } from "@dxos/react-client";
|
|
609
|
-
import { Dialog as Dialog3, useTranslation as
|
|
491
|
+
import { Dialog as Dialog3, useTranslation as useTranslation7 } from "@dxos/react-ui";
|
|
610
492
|
import { JoinPanel } from "@dxos/shell/react";
|
|
611
|
-
var __dxlog_file3 = "/home/runner/work/dxos/dxos/packages/plugins/plugin-space/src/components/JoinDialog.tsx";
|
|
612
493
|
var JOIN_DIALOG = `${SPACE_PLUGIN}/JoinDialog`;
|
|
613
494
|
var JoinDialog = ({ navigableCollections, onDone, ...props }) => {
|
|
614
495
|
const { dispatchPromise: dispatch } = useIntentDispatcher4();
|
|
615
496
|
const client = useClient3();
|
|
616
497
|
const { graph } = useAppGraph();
|
|
617
|
-
const { t } =
|
|
618
|
-
const handleDone =
|
|
619
|
-
|
|
620
|
-
|
|
621
|
-
|
|
622
|
-
part: "toast",
|
|
623
|
-
subject: {
|
|
624
|
-
id: `${SPACE_PLUGIN}/join-success`,
|
|
625
|
-
duration: 5e3,
|
|
626
|
-
title: [
|
|
627
|
-
"join success label",
|
|
628
|
-
{
|
|
629
|
-
ns: SPACE_PLUGIN
|
|
630
|
-
}
|
|
631
|
-
],
|
|
632
|
-
closeLabel: [
|
|
633
|
-
"dismiss label",
|
|
634
|
-
{
|
|
635
|
-
ns: SPACE_PLUGIN
|
|
636
|
-
}
|
|
637
|
-
]
|
|
638
|
-
}
|
|
639
|
-
})),
|
|
640
|
-
dispatch(createIntent4(LayoutAction4.UpdateDialog, {
|
|
641
|
-
part: "dialog",
|
|
642
|
-
options: {
|
|
643
|
-
state: false
|
|
644
|
-
}
|
|
645
|
-
}))
|
|
646
|
-
]);
|
|
498
|
+
const { t } = useTranslation7(SPACE_PLUGIN);
|
|
499
|
+
const handleDone = useCallback5(async (result) => {
|
|
500
|
+
const spaceKey = result?.spaceKey;
|
|
501
|
+
if (!spaceKey) {
|
|
502
|
+
return;
|
|
647
503
|
}
|
|
648
|
-
|
|
504
|
+
await Promise.all([
|
|
505
|
+
dispatch(createIntent4(LayoutAction4.AddToast, {
|
|
506
|
+
part: "toast",
|
|
507
|
+
subject: {
|
|
508
|
+
id: `${SPACE_PLUGIN}/join-success`,
|
|
509
|
+
duration: 5e3,
|
|
510
|
+
title: [
|
|
511
|
+
"join success label",
|
|
512
|
+
{
|
|
513
|
+
ns: SPACE_PLUGIN
|
|
514
|
+
}
|
|
515
|
+
],
|
|
516
|
+
closeLabel: [
|
|
517
|
+
"dismiss label",
|
|
518
|
+
{
|
|
519
|
+
ns: SPACE_PLUGIN
|
|
520
|
+
}
|
|
521
|
+
]
|
|
522
|
+
}
|
|
523
|
+
})),
|
|
524
|
+
dispatch(createIntent4(LayoutAction4.UpdateDialog, {
|
|
525
|
+
part: "dialog",
|
|
526
|
+
options: {
|
|
527
|
+
state: false
|
|
528
|
+
}
|
|
529
|
+
}))
|
|
530
|
+
]);
|
|
531
|
+
let space = client.spaces.get(spaceKey);
|
|
649
532
|
if (!space) {
|
|
650
|
-
|
|
651
|
-
|
|
652
|
-
|
|
653
|
-
|
|
654
|
-
|
|
533
|
+
const trigger = new Trigger();
|
|
534
|
+
client.spaces.subscribe(() => {
|
|
535
|
+
const space2 = client.spaces.get(spaceKey);
|
|
536
|
+
if (space2) {
|
|
537
|
+
trigger.wake(space2);
|
|
538
|
+
}
|
|
655
539
|
});
|
|
656
|
-
|
|
540
|
+
space = await trigger.wait();
|
|
657
541
|
}
|
|
658
542
|
await dispatch(createIntent4(LayoutAction4.SwitchWorkspace, {
|
|
659
543
|
part: "workspace",
|
|
@@ -692,52 +576,422 @@ var JoinDialog = ({ navigableCollections, onDone, ...props }) => {
|
|
|
692
576
|
client,
|
|
693
577
|
graph
|
|
694
578
|
]);
|
|
695
|
-
return /* @__PURE__ */
|
|
579
|
+
return /* @__PURE__ */ React7.createElement(Dialog3.Content, null, /* @__PURE__ */ React7.createElement(Dialog3.Title, {
|
|
696
580
|
classNames: "sr-only"
|
|
697
581
|
}, t("join space label", {
|
|
698
582
|
ns: "os"
|
|
699
|
-
})), /* @__PURE__ */
|
|
583
|
+
})), /* @__PURE__ */ React7.createElement(JoinPanel, {
|
|
700
584
|
...props,
|
|
701
|
-
exitActionParent: /* @__PURE__ */
|
|
585
|
+
exitActionParent: /* @__PURE__ */ React7.createElement(Dialog3.Close, {
|
|
702
586
|
asChild: true
|
|
703
587
|
}),
|
|
704
|
-
doneActionParent: /* @__PURE__ */
|
|
588
|
+
doneActionParent: /* @__PURE__ */ React7.createElement(Dialog3.Close, {
|
|
705
589
|
asChild: true
|
|
706
590
|
}),
|
|
707
591
|
onDone: handleDone
|
|
708
592
|
}));
|
|
709
593
|
};
|
|
710
594
|
|
|
595
|
+
// packages/plugins/plugin-space/src/components/MembersContainer.tsx
|
|
596
|
+
import { Check, X } from "@phosphor-icons/react";
|
|
597
|
+
import React8, { useMemo, useState as useState3 } from "react";
|
|
598
|
+
import { QR } from "react-qr-rounded";
|
|
599
|
+
import { log } from "@dxos/log";
|
|
600
|
+
import { useConfig } from "@dxos/react-client";
|
|
601
|
+
import { fullyQualifiedId as fullyQualifiedId2, useSpaceInvitations } from "@dxos/react-client/echo";
|
|
602
|
+
import { Invitation, InvitationEncoder } from "@dxos/react-client/invitations";
|
|
603
|
+
import { Button as Button4, Clipboard, Icon as Icon4, useId, useTranslation as useTranslation8 } from "@dxos/react-ui";
|
|
604
|
+
import { ControlSection, ControlFrame, ControlFrameItem } from "@dxos/react-ui-form";
|
|
605
|
+
import { StackItem } from "@dxos/react-ui-stack";
|
|
606
|
+
import { getSize as getSize2, mx as mx4 } from "@dxos/react-ui-theme";
|
|
607
|
+
import { AuthCode, BifurcatedAction, Centered, Emoji, InvitationList, SpaceMemberList, Viewport } from "@dxos/shell/react";
|
|
608
|
+
import { hexToEmoji } from "@dxos/util";
|
|
609
|
+
var __dxlog_file3 = "/home/runner/work/dxos/dxos/packages/plugins/plugin-space/src/components/MembersContainer.tsx";
|
|
610
|
+
var activeActionKey = "dxos:react-shell/space-manager/active-action";
|
|
611
|
+
var handleInvitationEvent = (invitation, subscription) => {
|
|
612
|
+
const invitationCode = InvitationEncoder.encode(invitation);
|
|
613
|
+
if (invitation.state === Invitation.State.CONNECTING) {
|
|
614
|
+
log.info(JSON.stringify({
|
|
615
|
+
invitationCode,
|
|
616
|
+
authCode: invitation.authCode
|
|
617
|
+
}), void 0, {
|
|
618
|
+
F: __dxlog_file3,
|
|
619
|
+
L: 38,
|
|
620
|
+
S: void 0,
|
|
621
|
+
C: (f, a) => f(...a)
|
|
622
|
+
});
|
|
623
|
+
subscription.unsubscribe();
|
|
624
|
+
}
|
|
625
|
+
};
|
|
626
|
+
var MembersContainer = ({ space, createInvitationUrl }) => {
|
|
627
|
+
const { t } = useTranslation8("os");
|
|
628
|
+
const config = useConfig();
|
|
629
|
+
const invitations = useSpaceInvitations(space.key);
|
|
630
|
+
const visibleInvitations = invitations?.filter((invitation) => ![
|
|
631
|
+
Invitation.State.CANCELLED
|
|
632
|
+
].includes(invitation.get().state));
|
|
633
|
+
const [activeAction, setInternalActiveAction] = useState3(localStorage.getItem(activeActionKey) ?? "inviteMany");
|
|
634
|
+
const setActiveAction = (nextAction) => {
|
|
635
|
+
setInternalActiveAction(nextAction);
|
|
636
|
+
localStorage.setItem(activeActionKey, nextAction);
|
|
637
|
+
};
|
|
638
|
+
const target = space.properties[CollectionType.typename]?.target?.objects[0]?.target;
|
|
639
|
+
const inviteActions = useMemo(() => ({
|
|
640
|
+
inviteOne: {
|
|
641
|
+
label: t("invite one label"),
|
|
642
|
+
description: t("invite one description"),
|
|
643
|
+
icon: () => /* @__PURE__ */ React8.createElement(Icon4, {
|
|
644
|
+
icon: "ph--user-plus--regular",
|
|
645
|
+
size: 5
|
|
646
|
+
}),
|
|
647
|
+
testId: "membersContainer.inviteOne",
|
|
648
|
+
onClick: () => {
|
|
649
|
+
const invitation = space.share?.({
|
|
650
|
+
type: Invitation.Type.INTERACTIVE,
|
|
651
|
+
authMethod: Invitation.AuthMethod.SHARED_SECRET,
|
|
652
|
+
multiUse: false,
|
|
653
|
+
target: target && fullyQualifiedId2(target)
|
|
654
|
+
});
|
|
655
|
+
if (invitation && config.values.runtime?.app?.env?.DX_ENVIRONMENT !== "production") {
|
|
656
|
+
const subscription = invitation.subscribe((invitation2) => handleInvitationEvent(invitation2, subscription));
|
|
657
|
+
}
|
|
658
|
+
}
|
|
659
|
+
},
|
|
660
|
+
inviteMany: {
|
|
661
|
+
label: t("invite many label"),
|
|
662
|
+
description: t("invite many description"),
|
|
663
|
+
icon: () => /* @__PURE__ */ React8.createElement(Icon4, {
|
|
664
|
+
icon: "ph--users-three--regular",
|
|
665
|
+
size: 5
|
|
666
|
+
}),
|
|
667
|
+
testId: "membersContainer.inviteMany",
|
|
668
|
+
onClick: () => {
|
|
669
|
+
const invitation = space.share?.({
|
|
670
|
+
type: Invitation.Type.DELEGATED,
|
|
671
|
+
authMethod: Invitation.AuthMethod.KNOWN_PUBLIC_KEY,
|
|
672
|
+
multiUse: true,
|
|
673
|
+
target: target && fullyQualifiedId2(target)
|
|
674
|
+
});
|
|
675
|
+
if (invitation && config.values.runtime?.app?.env?.DX_ENVIRONMENT !== "production") {
|
|
676
|
+
const subscription = invitation.subscribe((invitation2) => handleInvitationEvent(invitation2, subscription));
|
|
677
|
+
}
|
|
678
|
+
}
|
|
679
|
+
}
|
|
680
|
+
}), [
|
|
681
|
+
t,
|
|
682
|
+
space,
|
|
683
|
+
target
|
|
684
|
+
]);
|
|
685
|
+
const [selectedInvitation, setSelectedInvitation] = useState3(null);
|
|
686
|
+
const handleSend = (event) => {
|
|
687
|
+
setSelectedInvitation(event.invitation);
|
|
688
|
+
};
|
|
689
|
+
const handleBack = () => {
|
|
690
|
+
setSelectedInvitation(null);
|
|
691
|
+
};
|
|
692
|
+
return /* @__PURE__ */ React8.createElement(Clipboard.Provider, null, /* @__PURE__ */ React8.createElement(StackItem.Content, {
|
|
693
|
+
classNames: "p-2 block overflow-y-auto"
|
|
694
|
+
}, /* @__PURE__ */ React8.createElement(ControlSection, {
|
|
695
|
+
title: t("members verbose label", {
|
|
696
|
+
ns: SPACE_PLUGIN
|
|
697
|
+
}),
|
|
698
|
+
description: t("members description", {
|
|
699
|
+
ns: SPACE_PLUGIN
|
|
700
|
+
})
|
|
701
|
+
}, /* @__PURE__ */ React8.createElement(ControlFrame, null, /* @__PURE__ */ React8.createElement(ControlFrameItem, {
|
|
702
|
+
title: t("members label", {
|
|
703
|
+
ns: SPACE_PLUGIN
|
|
704
|
+
})
|
|
705
|
+
}, /* @__PURE__ */ React8.createElement(SpaceMemberList, {
|
|
706
|
+
spaceKey: space.key,
|
|
707
|
+
includeSelf: true
|
|
708
|
+
})), /* @__PURE__ */ React8.createElement(ControlFrameItem, {
|
|
709
|
+
title: t("invitations label", {
|
|
710
|
+
ns: SPACE_PLUGIN
|
|
711
|
+
})
|
|
712
|
+
}, selectedInvitation && /* @__PURE__ */ React8.createElement(InvitationSection, {
|
|
713
|
+
...selectedInvitation,
|
|
714
|
+
onBack: handleBack
|
|
715
|
+
}), !selectedInvitation && /* @__PURE__ */ React8.createElement(React8.Fragment, null, /* @__PURE__ */ React8.createElement("p", {
|
|
716
|
+
className: "text-description mbe-2"
|
|
717
|
+
}, t("space invitation description", {
|
|
718
|
+
ns: SPACE_PLUGIN
|
|
719
|
+
})), /* @__PURE__ */ React8.createElement(InvitationList, {
|
|
720
|
+
className: "mb-2",
|
|
721
|
+
send: handleSend,
|
|
722
|
+
invitations: visibleInvitations ?? [],
|
|
723
|
+
onClickRemove: (invitation) => invitation.cancel(),
|
|
724
|
+
createInvitationUrl
|
|
725
|
+
}), /* @__PURE__ */ React8.createElement(BifurcatedAction, {
|
|
726
|
+
actions: inviteActions,
|
|
727
|
+
activeAction,
|
|
728
|
+
onChangeActiveAction: setActiveAction,
|
|
729
|
+
"data-testid": "membersContainer.createInvitation"
|
|
730
|
+
})))))));
|
|
731
|
+
};
|
|
732
|
+
var InvitationSection = ({ state = Invitation.State.INIT, authCode, invitationId = "never", url = "never", onBack }) => {
|
|
733
|
+
const activeView = state < 0 ? "init" : state >= Invitation.State.CANCELLED ? "complete" : state >= Invitation.State.READY_FOR_AUTHENTICATION && authCode ? "auth-code" : "qr-code";
|
|
734
|
+
return /* @__PURE__ */ React8.createElement(Viewport.Root, {
|
|
735
|
+
activeView
|
|
736
|
+
}, /* @__PURE__ */ React8.createElement(Viewport.Views, null, /* @__PURE__ */ React8.createElement(Viewport.View, {
|
|
737
|
+
id: "init"
|
|
738
|
+
}), /* @__PURE__ */ React8.createElement(Viewport.View, {
|
|
739
|
+
id: "complete"
|
|
740
|
+
}, /* @__PURE__ */ React8.createElement(InvitationComplete, {
|
|
741
|
+
statusValue: state
|
|
742
|
+
})), /* @__PURE__ */ React8.createElement(Viewport.View, {
|
|
743
|
+
id: "auth-code"
|
|
744
|
+
}, /* @__PURE__ */ React8.createElement(InvitationAuthCode, {
|
|
745
|
+
id: invitationId,
|
|
746
|
+
code: authCode ?? "never",
|
|
747
|
+
onCancel: onBack
|
|
748
|
+
})), /* @__PURE__ */ React8.createElement(Viewport.View, {
|
|
749
|
+
id: "qr-code"
|
|
750
|
+
}, /* @__PURE__ */ React8.createElement(InvitationQR, {
|
|
751
|
+
id: invitationId,
|
|
752
|
+
url,
|
|
753
|
+
onCancel: onBack
|
|
754
|
+
}))));
|
|
755
|
+
};
|
|
756
|
+
var InvitationQR = ({ id, url, onCancel }) => {
|
|
757
|
+
const { t } = useTranslation8("os");
|
|
758
|
+
const qrLabel = useId("members-container__qr-code");
|
|
759
|
+
const emoji = hexToEmoji(id);
|
|
760
|
+
return /* @__PURE__ */ React8.createElement(React8.Fragment, null, /* @__PURE__ */ React8.createElement("p", {
|
|
761
|
+
className: "text-description"
|
|
762
|
+
}, t("qr code description", {
|
|
763
|
+
ns: SPACE_PLUGIN
|
|
764
|
+
})), /* @__PURE__ */ React8.createElement("div", {
|
|
765
|
+
role: "group",
|
|
766
|
+
className: "grid grid-cols-[1fr_min-content] mlb-2 gap-2"
|
|
767
|
+
}, /* @__PURE__ */ React8.createElement("div", {
|
|
768
|
+
role: "none",
|
|
769
|
+
className: "is-full aspect-square relative text-description"
|
|
770
|
+
}, /* @__PURE__ */ React8.createElement(QR, {
|
|
771
|
+
rounding: 100,
|
|
772
|
+
backgroundColor: "transparent",
|
|
773
|
+
color: "currentColor",
|
|
774
|
+
"aria-labelledby": qrLabel,
|
|
775
|
+
errorCorrectionLevel: "Q",
|
|
776
|
+
cutout: true
|
|
777
|
+
}, url ?? "never"), /* @__PURE__ */ React8.createElement(Centered, null, /* @__PURE__ */ React8.createElement(Emoji, {
|
|
778
|
+
text: emoji
|
|
779
|
+
}))), /* @__PURE__ */ React8.createElement("span", {
|
|
780
|
+
id: qrLabel,
|
|
781
|
+
className: "sr-only"
|
|
782
|
+
}, t("qr label")), /* @__PURE__ */ React8.createElement(Clipboard.Button, {
|
|
783
|
+
value: url ?? "never"
|
|
784
|
+
})), /* @__PURE__ */ React8.createElement(Button4, {
|
|
785
|
+
variant: "ghost",
|
|
786
|
+
onClick: onCancel
|
|
787
|
+
}, t("cancel label")));
|
|
788
|
+
};
|
|
789
|
+
var InvitationAuthCode = ({ id, code, onCancel }) => {
|
|
790
|
+
const { t } = useTranslation8("os");
|
|
791
|
+
const emoji = hexToEmoji(id);
|
|
792
|
+
return /* @__PURE__ */ React8.createElement(React8.Fragment, null, /* @__PURE__ */ React8.createElement("p", {
|
|
793
|
+
className: "text-description"
|
|
794
|
+
}, t("auth other device emoji message")), emoji && /* @__PURE__ */ React8.createElement(Emoji, {
|
|
795
|
+
text: emoji,
|
|
796
|
+
className: "mli-auto mlb-2 text-center"
|
|
797
|
+
}), /* @__PURE__ */ React8.createElement("p", {
|
|
798
|
+
className: "text-description"
|
|
799
|
+
}, t("auth code message")), /* @__PURE__ */ React8.createElement(AuthCode, {
|
|
800
|
+
code,
|
|
801
|
+
large: true,
|
|
802
|
+
classNames: "mli-auto mlb-2 text-center grow"
|
|
803
|
+
}), /* @__PURE__ */ React8.createElement(Button4, {
|
|
804
|
+
variant: "ghost",
|
|
805
|
+
onClick: onCancel
|
|
806
|
+
}, t("cancel label")));
|
|
807
|
+
};
|
|
808
|
+
var InvitationComplete = ({ statusValue }) => {
|
|
809
|
+
return statusValue > 0 ? /* @__PURE__ */ React8.createElement(Check, {
|
|
810
|
+
className: mx4("m-1.5", getSize2(6))
|
|
811
|
+
}) : /* @__PURE__ */ React8.createElement(X, {
|
|
812
|
+
className: mx4("m-1.5", getSize2(6))
|
|
813
|
+
});
|
|
814
|
+
};
|
|
815
|
+
|
|
711
816
|
// packages/plugins/plugin-space/src/components/MenuFooter.tsx
|
|
712
817
|
import { Planet } from "@phosphor-icons/react";
|
|
713
|
-
import
|
|
818
|
+
import React9 from "react";
|
|
714
819
|
import { getSpace as getSpace2 } from "@dxos/client/echo";
|
|
715
820
|
import { useClient as useClient4 } from "@dxos/react-client";
|
|
716
|
-
import { DropdownMenu, toLocalizedString as toLocalizedString2, useTranslation as
|
|
821
|
+
import { DropdownMenu, toLocalizedString as toLocalizedString2, useTranslation as useTranslation9 } from "@dxos/react-ui";
|
|
717
822
|
var MenuFooter = ({ object }) => {
|
|
718
|
-
const { t } =
|
|
823
|
+
const { t } = useTranslation9(SPACE_PLUGIN);
|
|
719
824
|
const client = useClient4();
|
|
720
825
|
const space = getSpace2(object);
|
|
721
826
|
const spaceName = space ? getSpaceDisplayName(space, {
|
|
722
827
|
personal: client.spaces.default === space
|
|
723
828
|
}) : "";
|
|
724
|
-
return space ? /* @__PURE__ */
|
|
829
|
+
return space ? /* @__PURE__ */ React9.createElement(React9.Fragment, null, /* @__PURE__ */ React9.createElement(DropdownMenu.Separator, null), /* @__PURE__ */ React9.createElement(DropdownMenu.GroupLabel, null, t("menu footer label")), /* @__PURE__ */ React9.createElement("dl", {
|
|
725
830
|
className: "pis-2 mbe-2 text-xs grid grid-cols-[max-content_1fr] gap-2"
|
|
726
|
-
}, /* @__PURE__ */
|
|
831
|
+
}, /* @__PURE__ */ React9.createElement("dt", {
|
|
727
832
|
className: "uppercase text-[.75em] tracking-wide font-medium mbs-px self-start"
|
|
728
|
-
}, t("location label")), /* @__PURE__ */
|
|
833
|
+
}, t("location label")), /* @__PURE__ */ React9.createElement("dd", {
|
|
729
834
|
className: "line-clamp-3"
|
|
730
|
-
}, /* @__PURE__ */
|
|
835
|
+
}, /* @__PURE__ */ React9.createElement(Planet, {
|
|
731
836
|
className: "inline-block mie-1"
|
|
732
837
|
}), toLocalizedString2(spaceName, t)))) : null;
|
|
733
838
|
};
|
|
734
839
|
|
|
840
|
+
// packages/plugins/plugin-space/src/components/ObjectSettingsContainer/ObjectSettingsContainer.tsx
|
|
841
|
+
import React13, { useMemo as useMemo2 } from "react";
|
|
842
|
+
import { Surface as Surface2 } from "@dxos/app-framework";
|
|
843
|
+
import { Clipboard as Clipboard2 } from "@dxos/react-ui";
|
|
844
|
+
import { StackItem as StackItem2 } from "@dxos/react-ui-stack";
|
|
845
|
+
|
|
846
|
+
// packages/plugins/plugin-space/src/components/ObjectSettingsContainer/AdvancedObjectSettings.tsx
|
|
847
|
+
import React11, { useCallback as useCallback7, useState as useState4 } from "react";
|
|
848
|
+
import { ForeignKeySchema } from "@dxos/echo-schema";
|
|
849
|
+
import { getMeta } from "@dxos/react-client/echo";
|
|
850
|
+
import { IconButton as IconButton2, useTranslation as useTranslation11 } from "@dxos/react-ui";
|
|
851
|
+
import { Form as Form3 } from "@dxos/react-ui-form";
|
|
852
|
+
|
|
853
|
+
// packages/plugins/plugin-space/src/components/ObjectSettingsContainer/ForeignKeys.tsx
|
|
854
|
+
import React10, { useCallback as useCallback6 } from "react";
|
|
855
|
+
import { IconButton, List, ListItem, useTranslation as useTranslation10 } from "@dxos/react-ui";
|
|
856
|
+
var ForeignKeys = ({ keys, onDelete }) => {
|
|
857
|
+
return /* @__PURE__ */ React10.createElement(List, {
|
|
858
|
+
classNames: "flex flex-col gap-2"
|
|
859
|
+
}, keys.map((key) => /* @__PURE__ */ React10.createElement(KeyItem, {
|
|
860
|
+
key: key.id,
|
|
861
|
+
forignKey: key,
|
|
862
|
+
onDelete
|
|
863
|
+
})));
|
|
864
|
+
};
|
|
865
|
+
var KeyItem = ({ forignKey, onDelete }) => {
|
|
866
|
+
const { t } = useTranslation10(SPACE_PLUGIN);
|
|
867
|
+
const handleDelete = useCallback6(() => {
|
|
868
|
+
onDelete?.(forignKey);
|
|
869
|
+
}, [
|
|
870
|
+
forignKey,
|
|
871
|
+
onDelete
|
|
872
|
+
]);
|
|
873
|
+
return /* @__PURE__ */ React10.createElement(ListItem.Root, {
|
|
874
|
+
classNames: "px-2"
|
|
875
|
+
}, /* @__PURE__ */ React10.createElement(ListItem.Heading, {
|
|
876
|
+
classNames: "flex flex-col grow truncate"
|
|
877
|
+
}, /* @__PURE__ */ React10.createElement("div", null, forignKey.source), /* @__PURE__ */ React10.createElement("div", {
|
|
878
|
+
className: "text-description text-sm truncate"
|
|
879
|
+
}, forignKey.id)), /* @__PURE__ */ React10.createElement(ListItem.Endcap, null, /* @__PURE__ */ React10.createElement(IconButton, {
|
|
880
|
+
iconOnly: true,
|
|
881
|
+
icon: "ph--x--regular",
|
|
882
|
+
variant: "ghost",
|
|
883
|
+
label: t("delete key"),
|
|
884
|
+
onClick: handleDelete
|
|
885
|
+
})));
|
|
886
|
+
};
|
|
887
|
+
|
|
888
|
+
// packages/plugins/plugin-space/src/components/ObjectSettingsContainer/AdvancedObjectSettings.tsx
|
|
889
|
+
var initialValues2 = {
|
|
890
|
+
source: "",
|
|
891
|
+
id: ""
|
|
892
|
+
};
|
|
893
|
+
var AdvancedObjectSettings = ({ object }) => {
|
|
894
|
+
const { t } = useTranslation11(SPACE_PLUGIN);
|
|
895
|
+
const [adding, setAdding] = useState4(false);
|
|
896
|
+
const keys = getMeta(object).keys;
|
|
897
|
+
const handleNew = useCallback7(() => setAdding(true), []);
|
|
898
|
+
const handleCancel = useCallback7(() => setAdding(false), []);
|
|
899
|
+
const handleSave = useCallback7((key) => {
|
|
900
|
+
const index = keys.findIndex(({ source, id }) => source === key.source && id === key.id);
|
|
901
|
+
if (index === -1) {
|
|
902
|
+
keys.push(key);
|
|
903
|
+
}
|
|
904
|
+
setAdding(false);
|
|
905
|
+
}, [
|
|
906
|
+
keys
|
|
907
|
+
]);
|
|
908
|
+
const handleDelete = useCallback7((key) => {
|
|
909
|
+
const index = keys.findIndex(({ source, id }) => source === key.source && id === key.id);
|
|
910
|
+
if (index !== -1) {
|
|
911
|
+
keys.splice(index, 1);
|
|
912
|
+
}
|
|
913
|
+
}, [
|
|
914
|
+
keys
|
|
915
|
+
]);
|
|
916
|
+
return /* @__PURE__ */ React11.createElement(React11.Fragment, null, /* @__PURE__ */ React11.createElement("div", {
|
|
917
|
+
className: "p-2 flex flex-col gap-4"
|
|
918
|
+
}, /* @__PURE__ */ React11.createElement("h2", null, t("advanced settings label")), /* @__PURE__ */ React11.createElement("div", {
|
|
919
|
+
className: "flex items-center"
|
|
920
|
+
}, /* @__PURE__ */ React11.createElement("h3", {
|
|
921
|
+
className: "text-sm font-semibold"
|
|
922
|
+
}, t("foreign keys")), /* @__PURE__ */ React11.createElement("div", {
|
|
923
|
+
className: "grow"
|
|
924
|
+
}), /* @__PURE__ */ React11.createElement(IconButton2, {
|
|
925
|
+
classNames: adding && "invisible",
|
|
926
|
+
icon: "ph--plus--regular",
|
|
927
|
+
label: t("add key"),
|
|
928
|
+
onClick: handleNew
|
|
929
|
+
})), !adding && /* @__PURE__ */ React11.createElement(ForeignKeys, {
|
|
930
|
+
keys,
|
|
931
|
+
onDelete: handleDelete
|
|
932
|
+
})), adding && /* @__PURE__ */ React11.createElement(Form3, {
|
|
933
|
+
schema: ForeignKeySchema,
|
|
934
|
+
values: initialValues2,
|
|
935
|
+
onSave: handleSave,
|
|
936
|
+
onCancel: handleCancel
|
|
937
|
+
}));
|
|
938
|
+
};
|
|
939
|
+
|
|
940
|
+
// packages/plugins/plugin-space/src/components/ObjectSettingsContainer/BaseObjectSettings.tsx
|
|
941
|
+
import React12, { useRef as useRef3 } from "react";
|
|
942
|
+
import { Input, useTranslation as useTranslation12 } from "@dxos/react-ui";
|
|
943
|
+
import { mx as mx5 } from "@dxos/react-ui-theme";
|
|
944
|
+
var BaseObjectSettings = ({ classNames, children, object }) => {
|
|
945
|
+
const { t } = useTranslation12(meta.id);
|
|
946
|
+
const inputRef = useRef3(null);
|
|
947
|
+
return /* @__PURE__ */ React12.createElement("form", {
|
|
948
|
+
className: mx5("flex flex-col p-2 gap-2", classNames)
|
|
949
|
+
}, /* @__PURE__ */ React12.createElement(Input.Root, null, /* @__PURE__ */ React12.createElement(Input.Label, null, t("name label")), /* @__PURE__ */ React12.createElement(Input.TextInput, {
|
|
950
|
+
ref: inputRef,
|
|
951
|
+
placeholder: t("name placeholder"),
|
|
952
|
+
value: object.name ?? "",
|
|
953
|
+
onChange: (event) => {
|
|
954
|
+
object.name = event.target.value;
|
|
955
|
+
},
|
|
956
|
+
onKeyDown: (event) => {
|
|
957
|
+
if (event.key === "Enter") {
|
|
958
|
+
inputRef.current?.blur();
|
|
959
|
+
}
|
|
960
|
+
}
|
|
961
|
+
})), children);
|
|
962
|
+
};
|
|
963
|
+
|
|
964
|
+
// packages/plugins/plugin-space/src/components/ObjectSettingsContainer/ObjectSettingsContainer.tsx
|
|
965
|
+
var ObjectSettingsContainer = ({ object, role }) => {
|
|
966
|
+
const data = useMemo2(() => ({
|
|
967
|
+
subject: object
|
|
968
|
+
}), [
|
|
969
|
+
object
|
|
970
|
+
]);
|
|
971
|
+
return /* @__PURE__ */ React13.createElement(Clipboard2.Provider, null, /* @__PURE__ */ React13.createElement(StackItem2.Content, {
|
|
972
|
+
toolbar: false,
|
|
973
|
+
role
|
|
974
|
+
}, /* @__PURE__ */ React13.createElement("div", {
|
|
975
|
+
className: "flex flex-col overflow-y-auto divide-y divide-separator"
|
|
976
|
+
}, /* @__PURE__ */ React13.createElement(BaseObjectSettings, {
|
|
977
|
+
object
|
|
978
|
+
}, /* @__PURE__ */ React13.createElement(Surface2, {
|
|
979
|
+
role: "base-object-settings",
|
|
980
|
+
data
|
|
981
|
+
})), /* @__PURE__ */ React13.createElement(Surface2, {
|
|
982
|
+
role: "object-settings",
|
|
983
|
+
data
|
|
984
|
+
}), /* @__PURE__ */ React13.createElement(AdvancedObjectSettings, {
|
|
985
|
+
object
|
|
986
|
+
}))));
|
|
987
|
+
};
|
|
988
|
+
|
|
735
989
|
// packages/plugins/plugin-space/src/components/PersistenceStatus.tsx
|
|
736
990
|
import { ArrowsCounterClockwise, CheckCircle as CheckCircle2, Warning } from "@phosphor-icons/react";
|
|
737
|
-
import
|
|
991
|
+
import React14, { useEffect as useEffect2, useState as useState5 } from "react";
|
|
738
992
|
import { debounce } from "@dxos/async";
|
|
739
|
-
import { Tooltip, useTranslation as
|
|
740
|
-
import { getSize as
|
|
993
|
+
import { Tooltip, useTranslation as useTranslation13 } from "@dxos/react-ui";
|
|
994
|
+
import { getSize as getSize3, mx as mx6, staticPlaceholderText, warningText } from "@dxos/react-ui-theme";
|
|
741
995
|
var Status;
|
|
742
996
|
(function(Status2) {
|
|
743
997
|
Status2[Status2["PERSISTED_LOCALLY"] = 0] = "PERSISTED_LOCALLY";
|
|
@@ -745,10 +999,10 @@ var Status;
|
|
|
745
999
|
Status2[Status2["ERROR"] = 2] = "ERROR";
|
|
746
1000
|
})(Status || (Status = {}));
|
|
747
1001
|
var PersistenceStatus = ({ db }) => {
|
|
748
|
-
const { t } =
|
|
749
|
-
const [displayMessage, setDisplayMessage] =
|
|
750
|
-
const [status, naturalSetStatus] =
|
|
751
|
-
const [prevStatus, setPrevStatus] =
|
|
1002
|
+
const { t } = useTranslation13(SPACE_PLUGIN);
|
|
1003
|
+
const [displayMessage, setDisplayMessage] = useState5(false);
|
|
1004
|
+
const [status, naturalSetStatus] = useState5(0);
|
|
1005
|
+
const [prevStatus, setPrevStatus] = useState5(0);
|
|
752
1006
|
const _setStatus = debounce(naturalSetStatus, 500);
|
|
753
1007
|
useEffect2(() => {
|
|
754
1008
|
setPrevStatus(status);
|
|
@@ -762,48 +1016,48 @@ var PersistenceStatus = ({ db }) => {
|
|
|
762
1016
|
]);
|
|
763
1017
|
switch (status) {
|
|
764
1018
|
case 2:
|
|
765
|
-
return /* @__PURE__ */
|
|
1019
|
+
return /* @__PURE__ */ React14.createElement("div", {
|
|
766
1020
|
className: "flex items-center"
|
|
767
|
-
}, /* @__PURE__ */
|
|
768
|
-
className:
|
|
769
|
-
}), /* @__PURE__ */
|
|
770
|
-
className:
|
|
1021
|
+
}, /* @__PURE__ */ React14.createElement(Warning, {
|
|
1022
|
+
className: mx6(getSize3(4), "me-1")
|
|
1023
|
+
}), /* @__PURE__ */ React14.createElement("span", {
|
|
1024
|
+
className: mx6("text-sm", warningText)
|
|
771
1025
|
}, t("persistence error label")));
|
|
772
1026
|
case 1:
|
|
773
|
-
return /* @__PURE__ */
|
|
1027
|
+
return /* @__PURE__ */ React14.createElement("div", {
|
|
774
1028
|
className: "flex items-center"
|
|
775
|
-
}, /* @__PURE__ */
|
|
776
|
-
className:
|
|
777
|
-
}), /* @__PURE__ */
|
|
778
|
-
className:
|
|
1029
|
+
}, /* @__PURE__ */ React14.createElement(ArrowsCounterClockwise, {
|
|
1030
|
+
className: mx6(getSize3(4), "me-1")
|
|
1031
|
+
}), /* @__PURE__ */ React14.createElement("span", {
|
|
1032
|
+
className: mx6("text-sm", staticPlaceholderText)
|
|
779
1033
|
}, t("persistence pending label")));
|
|
780
1034
|
case 0:
|
|
781
1035
|
default:
|
|
782
|
-
return /* @__PURE__ */
|
|
1036
|
+
return /* @__PURE__ */ React14.createElement(Tooltip.Root, {
|
|
783
1037
|
delayDuration: 400
|
|
784
|
-
}, /* @__PURE__ */
|
|
1038
|
+
}, /* @__PURE__ */ React14.createElement(Tooltip.Trigger, {
|
|
785
1039
|
role: "status",
|
|
786
1040
|
className: "flex items-center"
|
|
787
|
-
}, /* @__PURE__ */
|
|
788
|
-
className:
|
|
789
|
-
}), displayMessage && /* @__PURE__ */
|
|
790
|
-
className:
|
|
791
|
-
}, t("persisted locally label"))), /* @__PURE__ */
|
|
1041
|
+
}, /* @__PURE__ */ React14.createElement(CheckCircle2, {
|
|
1042
|
+
className: mx6(getSize3(4), "me-1")
|
|
1043
|
+
}), displayMessage && /* @__PURE__ */ React14.createElement("span", {
|
|
1044
|
+
className: mx6("text-sm", staticPlaceholderText)
|
|
1045
|
+
}, t("persisted locally label"))), /* @__PURE__ */ React14.createElement(Tooltip.Portal, null, /* @__PURE__ */ React14.createElement(Tooltip.Content, null, t("persisted locally message"), /* @__PURE__ */ React14.createElement(Tooltip.Arrow, null))));
|
|
792
1046
|
}
|
|
793
1047
|
};
|
|
794
1048
|
|
|
795
1049
|
// packages/plugins/plugin-space/src/components/PopoverAddSpace.tsx
|
|
796
|
-
import
|
|
1050
|
+
import React15 from "react";
|
|
797
1051
|
import { createIntent as createIntent5, LayoutAction as LayoutAction5, useIntentDispatcher as useIntentDispatcher5 } from "@dxos/app-framework";
|
|
798
|
-
import { IconButton as IconButton3, useTranslation as
|
|
1052
|
+
import { IconButton as IconButton3, useTranslation as useTranslation14 } from "@dxos/react-ui";
|
|
799
1053
|
var POPOVER_ADD_SPACE = `${SPACE_PLUGIN}/PopoverRenameSpace`;
|
|
800
1054
|
var PopoverAddSpace = () => {
|
|
801
|
-
const { t } =
|
|
1055
|
+
const { t } = useTranslation14(SPACE_PLUGIN);
|
|
802
1056
|
const { dispatchPromise: dispatch } = useIntentDispatcher5();
|
|
803
|
-
return /* @__PURE__ */
|
|
1057
|
+
return /* @__PURE__ */ React15.createElement("div", {
|
|
804
1058
|
role: "none",
|
|
805
1059
|
className: "grid grid-cols-1 gap-1 [&>button]:justify-start"
|
|
806
|
-
}, /* @__PURE__ */
|
|
1060
|
+
}, /* @__PURE__ */ React15.createElement(IconButton3, {
|
|
807
1061
|
variant: "ghost",
|
|
808
1062
|
label: t("create space label"),
|
|
809
1063
|
icon: "ph--plus--regular",
|
|
@@ -818,7 +1072,7 @@ var PopoverAddSpace = () => {
|
|
|
818
1072
|
}));
|
|
819
1073
|
},
|
|
820
1074
|
"data-testid": "spacePlugin.createSpace"
|
|
821
|
-
}), /* @__PURE__ */
|
|
1075
|
+
}), /* @__PURE__ */ React15.createElement(IconButton3, {
|
|
822
1076
|
variant: "ghost",
|
|
823
1077
|
label: t("join space label"),
|
|
824
1078
|
icon: "ph--sign-in--regular",
|
|
@@ -837,16 +1091,16 @@ var PopoverAddSpace = () => {
|
|
|
837
1091
|
};
|
|
838
1092
|
|
|
839
1093
|
// packages/plugins/plugin-space/src/components/PopoverRenameObject.tsx
|
|
840
|
-
import
|
|
1094
|
+
import React16, { useCallback as useCallback8, useRef as useRef4, useState as useState6 } from "react";
|
|
841
1095
|
import { log as log2 } from "@dxos/log";
|
|
842
|
-
import { Button as
|
|
1096
|
+
import { Button as Button5, Input as Input2, Popover, useTranslation as useTranslation15 } from "@dxos/react-ui";
|
|
843
1097
|
var __dxlog_file4 = "/home/runner/work/dxos/dxos/packages/plugins/plugin-space/src/components/PopoverRenameObject.tsx";
|
|
844
1098
|
var POPOVER_RENAME_OBJECT = `${SPACE_PLUGIN}/PopoverRenameObject`;
|
|
845
1099
|
var PopoverRenameObject = ({ object: obj }) => {
|
|
846
|
-
const { t } =
|
|
847
|
-
const doneButton =
|
|
1100
|
+
const { t } = useTranslation15(SPACE_PLUGIN);
|
|
1101
|
+
const doneButton = useRef4(null);
|
|
848
1102
|
const object = obj;
|
|
849
|
-
const [name, setName] =
|
|
1103
|
+
const [name, setName] = useState6(object.name || object.title || "");
|
|
850
1104
|
const handleDone = useCallback8(() => {
|
|
851
1105
|
try {
|
|
852
1106
|
object.name = name;
|
|
@@ -868,23 +1122,23 @@ var PopoverRenameObject = ({ object: obj }) => {
|
|
|
868
1122
|
object,
|
|
869
1123
|
name
|
|
870
1124
|
]);
|
|
871
|
-
return /* @__PURE__ */
|
|
1125
|
+
return /* @__PURE__ */ React16.createElement("div", {
|
|
872
1126
|
role: "none",
|
|
873
1127
|
className: "p-1 flex gap-2"
|
|
874
|
-
}, /* @__PURE__ */
|
|
1128
|
+
}, /* @__PURE__ */ React16.createElement("div", {
|
|
875
1129
|
role: "none",
|
|
876
1130
|
className: "flex-1"
|
|
877
|
-
}, /* @__PURE__ */
|
|
1131
|
+
}, /* @__PURE__ */ React16.createElement(Input2.Root, null, /* @__PURE__ */ React16.createElement(Input2.Label, {
|
|
878
1132
|
srOnly: true
|
|
879
|
-
}, t("object name label")), /* @__PURE__ */
|
|
880
|
-
placeholder: t("object
|
|
1133
|
+
}, t("object name label")), /* @__PURE__ */ React16.createElement(Input2.TextInput, {
|
|
1134
|
+
placeholder: t("object placeholder"),
|
|
881
1135
|
value: name,
|
|
882
1136
|
"data-testid": "spacePlugin.renameObject.input",
|
|
883
1137
|
onChange: ({ target: { value } }) => setName(value),
|
|
884
1138
|
onKeyDown: ({ key }) => key === "Enter" && doneButton.current?.click()
|
|
885
|
-
}))), /* @__PURE__ */
|
|
1139
|
+
}))), /* @__PURE__ */ React16.createElement(Popover.Close, {
|
|
886
1140
|
asChild: true
|
|
887
|
-
}, /* @__PURE__ */
|
|
1141
|
+
}, /* @__PURE__ */ React16.createElement(Button5, {
|
|
888
1142
|
ref: doneButton,
|
|
889
1143
|
classNames: "self-stretch",
|
|
890
1144
|
onClick: handleDone
|
|
@@ -894,37 +1148,37 @@ var PopoverRenameObject = ({ object: obj }) => {
|
|
|
894
1148
|
};
|
|
895
1149
|
|
|
896
1150
|
// packages/plugins/plugin-space/src/components/PopoverRenameSpace.tsx
|
|
897
|
-
import
|
|
898
|
-
import { Button as
|
|
1151
|
+
import React17, { useCallback as useCallback9, useRef as useRef5, useState as useState7 } from "react";
|
|
1152
|
+
import { Button as Button6, Input as Input3, Popover as Popover2, useTranslation as useTranslation16 } from "@dxos/react-ui";
|
|
899
1153
|
var POPOVER_RENAME_SPACE = `${SPACE_PLUGIN}/PopoverRenameSpace`;
|
|
900
1154
|
var PopoverRenameSpace = ({ space }) => {
|
|
901
|
-
const { t } =
|
|
902
|
-
const doneButton =
|
|
903
|
-
const [name, setName] =
|
|
1155
|
+
const { t } = useTranslation16(SPACE_PLUGIN);
|
|
1156
|
+
const doneButton = useRef5(null);
|
|
1157
|
+
const [name, setName] = useState7(space.properties.name ?? "");
|
|
904
1158
|
const handleDone = useCallback9(() => {
|
|
905
1159
|
space.properties.name = name;
|
|
906
1160
|
}, [
|
|
907
1161
|
space,
|
|
908
1162
|
name
|
|
909
1163
|
]);
|
|
910
|
-
return /* @__PURE__ */
|
|
1164
|
+
return /* @__PURE__ */ React17.createElement("div", {
|
|
911
1165
|
role: "none",
|
|
912
1166
|
className: "p-1 flex gap-2"
|
|
913
|
-
}, /* @__PURE__ */
|
|
1167
|
+
}, /* @__PURE__ */ React17.createElement("div", {
|
|
914
1168
|
role: "none",
|
|
915
1169
|
className: "flex-1"
|
|
916
|
-
}, /* @__PURE__ */
|
|
1170
|
+
}, /* @__PURE__ */ React17.createElement(Input3.Root, null, /* @__PURE__ */ React17.createElement(Input3.Label, {
|
|
917
1171
|
srOnly: true
|
|
918
|
-
}, t("space name label")), /* @__PURE__ */
|
|
1172
|
+
}, t("space name label")), /* @__PURE__ */ React17.createElement(Input3.TextInput, {
|
|
919
1173
|
defaultValue: space.properties.name ?? "",
|
|
920
1174
|
placeholder: t("unnamed space label"),
|
|
921
1175
|
onChange: ({ target: { value } }) => setName(value),
|
|
922
1176
|
// TODO(wittjosiah): Ideally this should access the popover context to close the popover.
|
|
923
1177
|
// Currently this is not possible because Radix does not expose the popover context.
|
|
924
1178
|
onKeyDown: ({ key }) => key === "Enter" && doneButton.current?.click()
|
|
925
|
-
}))), /* @__PURE__ */
|
|
1179
|
+
}))), /* @__PURE__ */ React17.createElement(Popover2.Close, {
|
|
926
1180
|
asChild: true
|
|
927
|
-
}, /* @__PURE__ */
|
|
1181
|
+
}, /* @__PURE__ */ React17.createElement(Button6, {
|
|
928
1182
|
ref: doneButton,
|
|
929
1183
|
classNames: "self-stretch",
|
|
930
1184
|
onClick: handleDone
|
|
@@ -934,20 +1188,20 @@ var PopoverRenameSpace = ({ space }) => {
|
|
|
934
1188
|
};
|
|
935
1189
|
|
|
936
1190
|
// packages/plugins/plugin-space/src/components/ShareSpaceButton.tsx
|
|
937
|
-
import
|
|
1191
|
+
import React18 from "react";
|
|
938
1192
|
import { createIntent as createIntent6, useIntentDispatcher as useIntentDispatcher6 } from "@dxos/app-framework";
|
|
939
|
-
import { IconButton as IconButton4, useTranslation as
|
|
1193
|
+
import { IconButton as IconButton4, useTranslation as useTranslation17 } from "@dxos/react-ui";
|
|
940
1194
|
var ShareSpaceButton = ({ space }) => {
|
|
941
1195
|
const { dispatchPromise: dispatch } = useIntentDispatcher6();
|
|
942
|
-
return /* @__PURE__ */
|
|
1196
|
+
return /* @__PURE__ */ React18.createElement(ShareSpaceButtonImpl, {
|
|
943
1197
|
onClick: () => dispatch(createIntent6(SpaceAction.Share, {
|
|
944
1198
|
space
|
|
945
1199
|
}))
|
|
946
1200
|
});
|
|
947
1201
|
};
|
|
948
1202
|
var ShareSpaceButtonImpl = ({ onClick }) => {
|
|
949
|
-
const { t } =
|
|
950
|
-
return /* @__PURE__ */
|
|
1203
|
+
const { t } = useTranslation17(SPACE_PLUGIN);
|
|
1204
|
+
return /* @__PURE__ */ React18.createElement(IconButton4, {
|
|
951
1205
|
"data-testid": "spacePlugin.shareSpaceButton",
|
|
952
1206
|
icon: "ph--users--regular",
|
|
953
1207
|
label: t("share space label"),
|
|
@@ -956,20 +1210,20 @@ var ShareSpaceButtonImpl = ({ onClick }) => {
|
|
|
956
1210
|
};
|
|
957
1211
|
|
|
958
1212
|
// packages/plugins/plugin-space/src/components/SpacePresence.tsx
|
|
959
|
-
import
|
|
1213
|
+
import React19, { useCallback as useCallback10, useEffect as useEffect4, useState as useState9 } from "react";
|
|
960
1214
|
import { useAppGraph as useAppGraph2, useCapability } from "@dxos/app-framework";
|
|
961
1215
|
import { generateName } from "@dxos/display-name";
|
|
962
1216
|
import { PublicKey, useClient as useClient5 } from "@dxos/react-client";
|
|
963
|
-
import { getSpace as getSpace3, useMembers, fullyQualifiedId as
|
|
1217
|
+
import { getSpace as getSpace3, useMembers, fullyQualifiedId as fullyQualifiedId3 } from "@dxos/react-client/echo";
|
|
964
1218
|
import { useIdentity } from "@dxos/react-client/halo";
|
|
965
|
-
import { Avatar,
|
|
1219
|
+
import { Avatar, Tooltip as Tooltip2, useTranslation as useTranslation18, List as List2, ListItem as ListItem2, useDefaultValue } from "@dxos/react-ui";
|
|
966
1220
|
import { AttentionGlyph, useAttended, useAttention } from "@dxos/react-ui-attention";
|
|
967
1221
|
import { ComplexMap, keyToFallback } from "@dxos/util";
|
|
968
1222
|
|
|
969
1223
|
// packages/plugins/plugin-space/src/hooks/usePath.ts
|
|
970
|
-
import { useEffect as useEffect3, useState as
|
|
1224
|
+
import { useEffect as useEffect3, useState as useState8 } from "react";
|
|
971
1225
|
var usePath = (graph, id, timeout) => {
|
|
972
|
-
const [pathState, setPathState] =
|
|
1226
|
+
const [pathState, setPathState] = useState8(id ? graph.getPath({
|
|
973
1227
|
target: id
|
|
974
1228
|
}) : void 0);
|
|
975
1229
|
useEffect3(() => {
|
|
@@ -1013,7 +1267,7 @@ var SpacePresence = ({ object, spaceKey }) => {
|
|
|
1013
1267
|
const identity = useIdentity();
|
|
1014
1268
|
const space = spaceKey ? client.spaces.get(spaceKey) : getSpace3(object);
|
|
1015
1269
|
const spaceMembers = useMembers(space?.key);
|
|
1016
|
-
const [_moment, setMoment] =
|
|
1270
|
+
const [_moment, setMoment] = useState9(Date.now());
|
|
1017
1271
|
useEffect4(() => {
|
|
1018
1272
|
const interval = setInterval(() => setMoment(Date.now()), REFRESH_INTERVAL);
|
|
1019
1273
|
return () => clearInterval(interval);
|
|
@@ -1025,7 +1279,7 @@ var SpacePresence = ({ object, spaceKey }) => {
|
|
|
1025
1279
|
if (!identity || !spaceState || !space) {
|
|
1026
1280
|
return null;
|
|
1027
1281
|
}
|
|
1028
|
-
const currentObjectViewers = spaceState.viewersByObject[
|
|
1282
|
+
const currentObjectViewers = spaceState.viewersByObject[fullyQualifiedId3(object)] ?? noViewers;
|
|
1029
1283
|
const membersForObject = spaceMembers.filter((member) => memberOnline(member) && memberIsNotSelf(member)).filter((member) => currentObjectViewers.has(member.identity.identityKey)).map((member) => {
|
|
1030
1284
|
const objectView = currentObjectViewers.get(member.identity.identityKey);
|
|
1031
1285
|
const lastSeen = objectView?.lastSeen ?? -Infinity;
|
|
@@ -1036,7 +1290,7 @@ var SpacePresence = ({ object, spaceKey }) => {
|
|
|
1036
1290
|
lastSeen
|
|
1037
1291
|
};
|
|
1038
1292
|
}).toSorted((a, b) => a.lastSeen - b.lastSeen);
|
|
1039
|
-
return /* @__PURE__ */
|
|
1293
|
+
return /* @__PURE__ */ React19.createElement(FullPresence, {
|
|
1040
1294
|
members: membersForObject
|
|
1041
1295
|
});
|
|
1042
1296
|
};
|
|
@@ -1046,63 +1300,60 @@ var FullPresence = (props) => {
|
|
|
1046
1300
|
if (members.length === 0) {
|
|
1047
1301
|
return null;
|
|
1048
1302
|
}
|
|
1049
|
-
return /* @__PURE__ */
|
|
1050
|
-
|
|
1051
|
-
classNames: "mbs-2 mie-4",
|
|
1303
|
+
return /* @__PURE__ */ React19.createElement("div", {
|
|
1304
|
+
className: "dx-avatar-group",
|
|
1052
1305
|
"data-testid": "spacePlugin.presence"
|
|
1053
|
-
}, members.slice(0, 3).map((member, i) => /* @__PURE__ */
|
|
1306
|
+
}, members.slice(0, 3).map((member, i) => /* @__PURE__ */ React19.createElement(Tooltip2.Root, {
|
|
1054
1307
|
key: member.identity.identityKey.toHex()
|
|
1055
|
-
}, /* @__PURE__ */
|
|
1308
|
+
}, /* @__PURE__ */ React19.createElement(Tooltip2.Trigger, null, /* @__PURE__ */ React19.createElement(PrensenceAvatar, {
|
|
1056
1309
|
identity: member.identity,
|
|
1057
|
-
group: true,
|
|
1058
1310
|
match: member.currentlyAttended,
|
|
1059
1311
|
index: members.length - i,
|
|
1060
|
-
onClick: () => onMemberClick?.(member)
|
|
1061
|
-
|
|
1312
|
+
onClick: () => onMemberClick?.(member),
|
|
1313
|
+
size
|
|
1314
|
+
})), /* @__PURE__ */ React19.createElement(Tooltip2.Portal, null, /* @__PURE__ */ React19.createElement(Tooltip2.Content, {
|
|
1062
1315
|
side: "bottom"
|
|
1063
|
-
}, /* @__PURE__ */
|
|
1064
|
-
status: "inactive"
|
|
1065
|
-
}, /* @__PURE__ */ React17.createElement(Avatar.Frame, {
|
|
1316
|
+
}, /* @__PURE__ */ React19.createElement("span", null, getName(member.identity)), /* @__PURE__ */ React19.createElement(Tooltip2.Arrow, null))))), members.length > 3 && /* @__PURE__ */ React19.createElement(Tooltip2.Root, null, /* @__PURE__ */ React19.createElement(Tooltip2.Trigger, null, /* @__PURE__ */ React19.createElement(Avatar.Root, null, /* @__PURE__ */ React19.createElement(Avatar.Content, {
|
|
1317
|
+
status: "inactive",
|
|
1066
1318
|
style: {
|
|
1067
1319
|
zIndex: members.length - 4
|
|
1068
|
-
}
|
|
1069
|
-
|
|
1070
|
-
|
|
1071
|
-
})))), /* @__PURE__ */ React17.createElement(Tooltip2.Portal, null, /* @__PURE__ */ React17.createElement(Tooltip2.Content, {
|
|
1320
|
+
},
|
|
1321
|
+
fallback: `+${members.length - 3}`
|
|
1322
|
+
}))), /* @__PURE__ */ React19.createElement(Tooltip2.Portal, null, /* @__PURE__ */ React19.createElement(Tooltip2.Content, {
|
|
1072
1323
|
side: "bottom"
|
|
1073
|
-
}, /* @__PURE__ */
|
|
1324
|
+
}, /* @__PURE__ */ React19.createElement(Tooltip2.Arrow, null), /* @__PURE__ */ React19.createElement(List2, {
|
|
1074
1325
|
classNames: "max-h-56 overflow-y-auto"
|
|
1075
|
-
}, members.map((member) => /* @__PURE__ */
|
|
1326
|
+
}, members.map((member) => /* @__PURE__ */ React19.createElement(ListItem2.Root, {
|
|
1076
1327
|
key: member.identity.identityKey.toHex(),
|
|
1077
1328
|
classNames: "flex gap-2 items-center cursor-pointer mbe-2",
|
|
1078
1329
|
onClick: () => onMemberClick?.(member),
|
|
1079
1330
|
"data-testid": "identity-list-item"
|
|
1080
|
-
}, /* @__PURE__ */
|
|
1331
|
+
}, /* @__PURE__ */ React19.createElement(PrensenceAvatar, {
|
|
1081
1332
|
identity: member.identity,
|
|
1333
|
+
size,
|
|
1082
1334
|
showName: true,
|
|
1083
1335
|
match: member.currentlyAttended
|
|
1084
1336
|
}))))))));
|
|
1085
1337
|
};
|
|
1086
|
-
var PrensenceAvatar = ({ identity, showName, match,
|
|
1087
|
-
const Root = group ? AvatarGroupItem.Root : Avatar.Root;
|
|
1338
|
+
var PrensenceAvatar = ({ identity, showName, match, index, onClick, size }) => {
|
|
1088
1339
|
const status = match ? "current" : "active";
|
|
1089
1340
|
const fallbackValue = keyToFallback(identity.identityKey);
|
|
1090
|
-
return /* @__PURE__ */
|
|
1341
|
+
return /* @__PURE__ */ React19.createElement(Avatar.Root, null, /* @__PURE__ */ React19.createElement(Avatar.Content, {
|
|
1091
1342
|
status,
|
|
1092
|
-
hue: identity.profile?.data?.hue || fallbackValue.hue
|
|
1093
|
-
}, /* @__PURE__ */ React17.createElement(Avatar.Frame, {
|
|
1343
|
+
hue: identity.profile?.data?.hue || fallbackValue.hue,
|
|
1094
1344
|
"data-testid": "spacePlugin.presence.member",
|
|
1095
1345
|
"data-status": status,
|
|
1346
|
+
size,
|
|
1347
|
+
classNames: "mbs-2 mie-4",
|
|
1096
1348
|
...index ? {
|
|
1097
1349
|
style: {
|
|
1098
1350
|
zIndex: index
|
|
1099
1351
|
}
|
|
1100
1352
|
} : {},
|
|
1101
|
-
onClick: () => onClick?.()
|
|
1102
|
-
|
|
1103
|
-
|
|
1104
|
-
|
|
1105
|
-
classNames: "text-sm truncate pli-2"
|
|
1353
|
+
onClick: () => onClick?.(),
|
|
1354
|
+
fallback: identity.profile?.data?.emoji || fallbackValue.emoji
|
|
1355
|
+
}), /* @__PURE__ */ React19.createElement(Avatar.Label, {
|
|
1356
|
+
classNames: showName ? "text-sm truncate pli-2" : "sr-only"
|
|
1106
1357
|
}, getName(identity)));
|
|
1107
1358
|
};
|
|
1108
1359
|
var SmallPresenceLive = ({ id, open, viewers }) => {
|
|
@@ -1117,7 +1368,7 @@ var SmallPresenceLive = ({ id, open, viewers }) => {
|
|
|
1117
1368
|
const moment = Date.now();
|
|
1118
1369
|
return Array.from(viewers2.values()).filter((viewer) => moment - viewer.lastSeen < ACTIVITY_DURATION);
|
|
1119
1370
|
};
|
|
1120
|
-
const [activeViewers, setActiveViewers] =
|
|
1371
|
+
const [activeViewers, setActiveViewers] = useState9(viewers ? getActiveViewers(viewers) : []);
|
|
1121
1372
|
useEffect4(() => {
|
|
1122
1373
|
if (viewers) {
|
|
1123
1374
|
setActiveViewers(getActiveViewers(viewers));
|
|
@@ -1129,62 +1380,59 @@ var SmallPresenceLive = ({ id, open, viewers }) => {
|
|
|
1129
1380
|
}, [
|
|
1130
1381
|
viewers
|
|
1131
1382
|
]);
|
|
1132
|
-
return /* @__PURE__ */
|
|
1383
|
+
return /* @__PURE__ */ React19.createElement(SmallPresence, {
|
|
1133
1384
|
count: activeViewers.length,
|
|
1134
1385
|
attended: isAttended,
|
|
1135
1386
|
containsAttended
|
|
1136
1387
|
});
|
|
1137
1388
|
};
|
|
1138
1389
|
var SmallPresence = ({ count = 0, attended, containsAttended }) => {
|
|
1139
|
-
const { t } =
|
|
1140
|
-
return /* @__PURE__ */
|
|
1390
|
+
const { t } = useTranslation18(SPACE_PLUGIN);
|
|
1391
|
+
return /* @__PURE__ */ React19.createElement(Tooltip2.Root, null, /* @__PURE__ */ React19.createElement(Tooltip2.Trigger, {
|
|
1141
1392
|
asChild: true
|
|
1142
|
-
}, /* @__PURE__ */
|
|
1393
|
+
}, /* @__PURE__ */ React19.createElement(AttentionGlyph, {
|
|
1143
1394
|
attended,
|
|
1144
1395
|
containsAttended,
|
|
1145
1396
|
presence: count > 1 ? "many" : count === 1 ? "one" : "none",
|
|
1146
1397
|
classNames: "self-center mie-1"
|
|
1147
|
-
})), /* @__PURE__ */
|
|
1398
|
+
})), /* @__PURE__ */ React19.createElement(Tooltip2.Portal, null, /* @__PURE__ */ React19.createElement(Tooltip2.Content, {
|
|
1148
1399
|
side: "bottom"
|
|
1149
|
-
}, /* @__PURE__ */
|
|
1400
|
+
}, /* @__PURE__ */ React19.createElement("span", null, t("presence label", {
|
|
1150
1401
|
count
|
|
1151
|
-
})), /* @__PURE__ */
|
|
1402
|
+
})), /* @__PURE__ */ React19.createElement(Tooltip2.Arrow, null))));
|
|
1152
1403
|
};
|
|
1153
1404
|
|
|
1154
1405
|
// packages/plugins/plugin-space/src/components/SpacePluginSettings.tsx
|
|
1155
|
-
import
|
|
1156
|
-
import { Input as Input4, useTranslation as
|
|
1406
|
+
import React20 from "react";
|
|
1407
|
+
import { Input as Input4, useTranslation as useTranslation19 } from "@dxos/react-ui";
|
|
1157
1408
|
import { DeprecatedFormContainer, DeprecatedFormInput } from "@dxos/react-ui-form";
|
|
1158
1409
|
var SpacePluginSettings = ({ settings }) => {
|
|
1159
|
-
const { t } =
|
|
1160
|
-
return /* @__PURE__ */
|
|
1410
|
+
const { t } = useTranslation19(SPACE_PLUGIN);
|
|
1411
|
+
return /* @__PURE__ */ React20.createElement(DeprecatedFormContainer, null, /* @__PURE__ */ React20.createElement(DeprecatedFormInput, {
|
|
1161
1412
|
label: t("show hidden spaces label")
|
|
1162
|
-
}, /* @__PURE__ */
|
|
1413
|
+
}, /* @__PURE__ */ React20.createElement(Input4.Switch, {
|
|
1163
1414
|
checked: settings.showHidden,
|
|
1164
1415
|
onCheckedChange: (checked) => settings.showHidden = !!checked
|
|
1165
1416
|
})));
|
|
1166
1417
|
};
|
|
1167
1418
|
|
|
1168
|
-
// packages/plugins/plugin-space/src/components/SpaceSettings/
|
|
1169
|
-
import
|
|
1419
|
+
// packages/plugins/plugin-space/src/components/SpaceSettings/SpacePropertiesForm.tsx
|
|
1420
|
+
import React21, { useCallback as useCallback11, useMemo as useMemo3, useState as useState10 } from "react";
|
|
1170
1421
|
import { log as log3 } from "@dxos/log";
|
|
1171
1422
|
import { EdgeReplicationSetting } from "@dxos/protocols/proto/dxos/echo/metadata";
|
|
1172
|
-
import {
|
|
1173
|
-
import {
|
|
1174
|
-
import { DeprecatedFormContainer as DeprecatedFormContainer2, DeprecatedFormInput as DeprecatedFormInput2 } from "@dxos/react-ui-form";
|
|
1423
|
+
import { Input as Input5, useTranslation as useTranslation20 } from "@dxos/react-ui";
|
|
1424
|
+
import { Form as Form4, ControlItem, ControlItemInput } from "@dxos/react-ui-form";
|
|
1175
1425
|
import { HuePicker, IconPicker } from "@dxos/react-ui-pickers";
|
|
1176
|
-
var __dxlog_file5 = "/home/runner/work/dxos/dxos/packages/plugins/plugin-space/src/components/SpaceSettings/
|
|
1177
|
-
var
|
|
1178
|
-
const { t } =
|
|
1179
|
-
const
|
|
1180
|
-
const edgeEnabled = Boolean(client.config.values.runtime?.client?.edgeFeatures?.echoReplicator);
|
|
1181
|
-
const [edgeReplication, setEdgeReplication] = useState9(space.internal.data.edgeReplication === EdgeReplicationSetting.ENABLED);
|
|
1426
|
+
var __dxlog_file5 = "/home/runner/work/dxos/dxos/packages/plugins/plugin-space/src/components/SpaceSettings/SpacePropertiesForm.tsx";
|
|
1427
|
+
var SpacePropertiesForm = ({ space }) => {
|
|
1428
|
+
const { t } = useTranslation20(SPACE_PLUGIN);
|
|
1429
|
+
const [edgeReplication, setEdgeReplication] = useState10(space.internal.data.edgeReplication === EdgeReplicationSetting.ENABLED);
|
|
1182
1430
|
const toggleEdgeReplication = useCallback11(async (next) => {
|
|
1183
1431
|
setEdgeReplication(next);
|
|
1184
1432
|
await space?.internal.setEdgeReplicationPreference(next ? EdgeReplicationSetting.ENABLED : EdgeReplicationSetting.DISABLED).catch((err) => {
|
|
1185
1433
|
log3.catch(err, void 0, {
|
|
1186
1434
|
F: __dxlog_file5,
|
|
1187
|
-
L:
|
|
1435
|
+
L: 34,
|
|
1188
1436
|
S: void 0,
|
|
1189
1437
|
C: (f, a) => f(...a)
|
|
1190
1438
|
});
|
|
@@ -1193,155 +1441,172 @@ var SpaceSettingsPanel = ({ space }) => {
|
|
|
1193
1441
|
}, [
|
|
1194
1442
|
space
|
|
1195
1443
|
]);
|
|
1196
|
-
|
|
1197
|
-
|
|
1198
|
-
|
|
1199
|
-
|
|
1200
|
-
value: space.properties.name ?? "",
|
|
1201
|
-
onChange: (event) => {
|
|
1202
|
-
space.properties.name = event.target.value;
|
|
1444
|
+
const handleSave = useCallback11((properties) => {
|
|
1445
|
+
void toggleEdgeReplication(properties.edgeReplication);
|
|
1446
|
+
if (properties.name !== space.properties.name) {
|
|
1447
|
+
space.properties.name = properties.name;
|
|
1203
1448
|
}
|
|
1204
|
-
|
|
1205
|
-
|
|
1206
|
-
}, /* @__PURE__ */ React19.createElement(Toolbar.Root, null, /* @__PURE__ */ React19.createElement(IconPicker, {
|
|
1207
|
-
value: space.properties.icon,
|
|
1208
|
-
onChange: (nextIcon) => space.properties.icon = nextIcon,
|
|
1209
|
-
onReset: () => {
|
|
1210
|
-
space.properties.icon = void 0;
|
|
1449
|
+
if (properties.icon !== space.properties.icon) {
|
|
1450
|
+
space.properties.icon = properties.icon;
|
|
1211
1451
|
}
|
|
1212
|
-
|
|
1213
|
-
|
|
1214
|
-
}, /* @__PURE__ */ React19.createElement(Toolbar.Root, null, /* @__PURE__ */ React19.createElement(HuePicker, {
|
|
1215
|
-
value: space.properties.hue,
|
|
1216
|
-
onChange: (nextHue) => space.properties.hue = nextHue,
|
|
1217
|
-
onReset: () => {
|
|
1218
|
-
space.properties.hue = void 0;
|
|
1452
|
+
if (properties.hue !== space.properties.hue) {
|
|
1453
|
+
space.properties.hue = properties.hue;
|
|
1219
1454
|
}
|
|
1220
|
-
}
|
|
1221
|
-
|
|
1222
|
-
|
|
1223
|
-
|
|
1224
|
-
|
|
1225
|
-
|
|
1455
|
+
}, [
|
|
1456
|
+
space,
|
|
1457
|
+
toggleEdgeReplication
|
|
1458
|
+
]);
|
|
1459
|
+
const values = useMemo3(() => ({
|
|
1460
|
+
name: space.properties.name,
|
|
1461
|
+
icon: space.properties.icon,
|
|
1462
|
+
hue: space.properties.hue,
|
|
1463
|
+
edgeReplication
|
|
1464
|
+
}), [
|
|
1465
|
+
space.properties.name,
|
|
1466
|
+
space.properties.icon,
|
|
1467
|
+
space.properties.hue,
|
|
1468
|
+
edgeReplication
|
|
1469
|
+
]);
|
|
1470
|
+
const customElements = useMemo3(() => ({
|
|
1471
|
+
name: ({ type, label, getValue, onValueChange }) => {
|
|
1472
|
+
const handleChange = useCallback11(({ target: { value } }) => onValueChange(type, value), [
|
|
1473
|
+
onValueChange,
|
|
1474
|
+
type
|
|
1475
|
+
]);
|
|
1476
|
+
return /* @__PURE__ */ React21.createElement(ControlItemInput, {
|
|
1477
|
+
title: label,
|
|
1478
|
+
description: t("display name description")
|
|
1479
|
+
}, /* @__PURE__ */ React21.createElement(Input5.TextInput, {
|
|
1480
|
+
value: getValue(),
|
|
1481
|
+
onChange: handleChange,
|
|
1482
|
+
placeholder: t("display name input placeholder"),
|
|
1483
|
+
classNames: "min-is-64"
|
|
1484
|
+
}));
|
|
1485
|
+
},
|
|
1486
|
+
icon: ({ type, label, getValue, onValueChange }) => {
|
|
1487
|
+
const handleChange = useCallback11((nextEmoji) => onValueChange(type, nextEmoji), [
|
|
1488
|
+
onValueChange,
|
|
1489
|
+
type
|
|
1490
|
+
]);
|
|
1491
|
+
const handleEmojiReset = useCallback11(() => onValueChange(type, void 0), [
|
|
1492
|
+
onValueChange,
|
|
1493
|
+
type
|
|
1494
|
+
]);
|
|
1495
|
+
return /* @__PURE__ */ React21.createElement(ControlItem, {
|
|
1496
|
+
title: label,
|
|
1497
|
+
description: t("icon description")
|
|
1498
|
+
}, /* @__PURE__ */ React21.createElement(IconPicker, {
|
|
1499
|
+
value: getValue(),
|
|
1500
|
+
onChange: handleChange,
|
|
1501
|
+
onReset: handleEmojiReset,
|
|
1502
|
+
classNames: "justify-self-end",
|
|
1503
|
+
iconSize: 5
|
|
1504
|
+
}));
|
|
1505
|
+
},
|
|
1506
|
+
hue: ({ type, label, getValue, onValueChange }) => {
|
|
1507
|
+
const handleChange = useCallback11((nextHue) => onValueChange(type, nextHue), [
|
|
1508
|
+
onValueChange,
|
|
1509
|
+
type
|
|
1510
|
+
]);
|
|
1511
|
+
const handleHueReset = useCallback11(() => onValueChange(type, void 0), [
|
|
1512
|
+
onValueChange,
|
|
1513
|
+
type
|
|
1514
|
+
]);
|
|
1515
|
+
return /* @__PURE__ */ React21.createElement(ControlItem, {
|
|
1516
|
+
title: label,
|
|
1517
|
+
description: t("hue description")
|
|
1518
|
+
}, /* @__PURE__ */ React21.createElement(HuePicker, {
|
|
1519
|
+
value: getValue(),
|
|
1520
|
+
onChange: handleChange,
|
|
1521
|
+
onReset: handleHueReset,
|
|
1522
|
+
classNames: "[--hue-preview-size:1.25rem] justify-self-end"
|
|
1523
|
+
}));
|
|
1524
|
+
},
|
|
1525
|
+
edgeReplication: ({ type, label, getValue, onValueChange }) => {
|
|
1526
|
+
const handleChange = useCallback11((checked) => onValueChange(type, checked), [
|
|
1527
|
+
onValueChange,
|
|
1528
|
+
type
|
|
1529
|
+
]);
|
|
1530
|
+
return /* @__PURE__ */ React21.createElement(ControlItemInput, {
|
|
1531
|
+
title: label,
|
|
1532
|
+
description: t("edge replication description")
|
|
1533
|
+
}, /* @__PURE__ */ React21.createElement(Input5.Switch, {
|
|
1534
|
+
checked: getValue(),
|
|
1535
|
+
onCheckedChange: handleChange,
|
|
1536
|
+
classNames: "justify-self-end"
|
|
1537
|
+
}));
|
|
1538
|
+
}
|
|
1539
|
+
}), [
|
|
1540
|
+
t
|
|
1541
|
+
]);
|
|
1542
|
+
return /* @__PURE__ */ React21.createElement(Form4, {
|
|
1543
|
+
schema: SpaceForm,
|
|
1544
|
+
values,
|
|
1545
|
+
autoSave: true,
|
|
1546
|
+
onSave: handleSave,
|
|
1547
|
+
Custom: customElements,
|
|
1548
|
+
classNames: 'p-0 container-max-width [&_[role="form"]]:grid [&_[role="form"]]:grid-cols-1 md:[&_[role="form"]]:grid-cols-[1fr_min-content] [&_[role="form"]]:gap-4'
|
|
1549
|
+
});
|
|
1226
1550
|
};
|
|
1227
1551
|
|
|
1228
|
-
// packages/plugins/plugin-space/src/components/SpaceSettings/
|
|
1229
|
-
import
|
|
1230
|
-
import { Surface as
|
|
1231
|
-
import {
|
|
1232
|
-
import {
|
|
1233
|
-
import {
|
|
1234
|
-
import {
|
|
1552
|
+
// packages/plugins/plugin-space/src/components/SpaceSettings/SpaceSettingsContainer.tsx
|
|
1553
|
+
import React22, { useCallback as useCallback12, useMemo as useMemo4 } from "react";
|
|
1554
|
+
import { Surface as Surface3, useCapabilities as useCapabilities2, useCapability as useCapability2 } from "@dxos/app-framework";
|
|
1555
|
+
import { toLocalizedString as toLocalizedString3, useTranslation as useTranslation21 } from "@dxos/react-ui";
|
|
1556
|
+
import { ControlSectionHeading } from "@dxos/react-ui-form";
|
|
1557
|
+
import { Accordion } from "@dxos/react-ui-list";
|
|
1558
|
+
import { StackItem as StackItem3 } from "@dxos/react-ui-stack";
|
|
1559
|
+
import { byPosition } from "@dxos/util";
|
|
1235
1560
|
var SPACE_SETTINGS_DIALOG = `${SPACE_PLUGIN}/SpaceSettingsDialog`;
|
|
1236
|
-
var
|
|
1237
|
-
const { t } =
|
|
1238
|
-
const
|
|
1239
|
-
const
|
|
1240
|
-
const
|
|
1241
|
-
const locked = space.properties[COMPOSER_SPACE_LOCK];
|
|
1242
|
-
const name = getSpaceDisplayName(space, {
|
|
1243
|
-
personal: client.spaces.default === space,
|
|
1244
|
-
namesCache
|
|
1245
|
-
});
|
|
1246
|
-
const panels = useCapabilities2(SpaceCapabilities.SettingsPanel);
|
|
1247
|
-
const data = useMemo(() => ({
|
|
1561
|
+
var SpaceSettingsContainer = ({ space }) => {
|
|
1562
|
+
const { t } = useTranslation21(SPACE_PLUGIN);
|
|
1563
|
+
const state = useCapability2(SpaceCapabilities.MutableState);
|
|
1564
|
+
const items = useCapabilities2(SpaceCapabilities.SettingsSection).toSorted(byPosition);
|
|
1565
|
+
const data = useMemo4(() => ({
|
|
1248
1566
|
subject: space
|
|
1249
1567
|
}), [
|
|
1250
1568
|
space
|
|
1251
1569
|
]);
|
|
1252
|
-
|
|
1253
|
-
|
|
1254
|
-
|
|
1255
|
-
|
|
1256
|
-
|
|
1257
|
-
|
|
1258
|
-
|
|
1259
|
-
|
|
1260
|
-
|
|
1261
|
-
|
|
1262
|
-
|
|
1263
|
-
|
|
1264
|
-
|
|
1265
|
-
|
|
1266
|
-
|
|
1267
|
-
|
|
1268
|
-
|
|
1269
|
-
|
|
1270
|
-
|
|
1271
|
-
|
|
1272
|
-
|
|
1273
|
-
|
|
1274
|
-
|
|
1275
|
-
|
|
1276
|
-
density: "fine",
|
|
1277
|
-
variant: "ghost",
|
|
1278
|
-
autoFocus: true
|
|
1279
|
-
}, /* @__PURE__ */ React20.createElement(Icon4, {
|
|
1280
|
-
icon: "ph--x--regular",
|
|
1281
|
-
size: 4
|
|
1282
|
-
})))), /* @__PURE__ */ React20.createElement(Tabs.Root, {
|
|
1283
|
-
orientation: "vertical",
|
|
1284
|
-
value: selected,
|
|
1285
|
-
onValueChange: setSelected,
|
|
1286
|
-
activePart: tabsActivePart,
|
|
1287
|
-
onActivePartChange: setTabsActivePart,
|
|
1288
|
-
classNames: "flex flex-col flex-1 mbs-2"
|
|
1289
|
-
}, /* @__PURE__ */ React20.createElement(Tabs.Viewport, {
|
|
1290
|
-
classNames: "flex-1 min-bs-0"
|
|
1291
|
-
}, /* @__PURE__ */ React20.createElement("div", {
|
|
1292
|
-
role: "none",
|
|
1293
|
-
className: "overflow-y-auto pli-3 @md:pis-2 @md:pie-0 mbe-4 border-r border-separator"
|
|
1294
|
-
}, /* @__PURE__ */ React20.createElement(Tabs.Tablist, {
|
|
1295
|
-
classNames: "flex flex-col max-bs-none min-is-[200px] gap-4 overflow-y-auto"
|
|
1296
|
-
}, /* @__PURE__ */ React20.createElement("div", {
|
|
1297
|
-
role: "none",
|
|
1298
|
-
className: "flex flex-col ml-1"
|
|
1299
|
-
}, /* @__PURE__ */ React20.createElement(Tabs.Tab, {
|
|
1300
|
-
value: "settings"
|
|
1301
|
-
}, t("settings tab label")), /* @__PURE__ */ React20.createElement(Tabs.Tab, {
|
|
1302
|
-
value: "members",
|
|
1303
|
-
disabled: locked
|
|
1304
|
-
}, t("members tab label")), panels.map((panel) => /* @__PURE__ */ React20.createElement(Tabs.Tab, {
|
|
1305
|
-
key: panel.id,
|
|
1306
|
-
value: panel.id
|
|
1307
|
-
}, toLocalizedString3(panel.label, t)))))), /* @__PURE__ */ React20.createElement(Tabs.Tabpanel, {
|
|
1308
|
-
value: "settings",
|
|
1309
|
-
classNames: "pli-3 @md:pli-5 max-bs-dvh overflow-y-auto"
|
|
1310
|
-
}, /* @__PURE__ */ React20.createElement(SpaceSettingsPanel, {
|
|
1311
|
-
space
|
|
1312
|
-
})), /* @__PURE__ */ React20.createElement(Tabs.Tabpanel, {
|
|
1313
|
-
value: "members",
|
|
1314
|
-
classNames: "pli-3 @md:pli-5 max-bs-dvh overflow-y-auto"
|
|
1315
|
-
}, /* @__PURE__ */ React20.createElement(Clipboard.Provider, null, /* @__PURE__ */ React20.createElement(SpacePanel, {
|
|
1316
|
-
space,
|
|
1317
|
-
hideHeading: true,
|
|
1318
|
-
target,
|
|
1319
|
-
createInvitationUrl
|
|
1320
|
-
}))), panels.map((panel) => /* @__PURE__ */ React20.createElement(Tabs.Tabpanel, {
|
|
1321
|
-
key: panel.id,
|
|
1322
|
-
value: panel.id,
|
|
1323
|
-
classNames: "pli-3 @md:pli-5 max-bs-dvh overflow-y-auto"
|
|
1324
|
-
}, /* @__PURE__ */ React20.createElement(Surface2, {
|
|
1325
|
-
role: `space-settings--${panel.id}`,
|
|
1326
|
-
data
|
|
1327
|
-
}))))))
|
|
1328
|
-
);
|
|
1570
|
+
const handleOpenSectionChange = useCallback12((sections) => {
|
|
1571
|
+
state.spaceSettingsOpenSections.splice(0, state.spaceSettingsOpenSections.length, ...sections);
|
|
1572
|
+
}, [
|
|
1573
|
+
state
|
|
1574
|
+
]);
|
|
1575
|
+
return /* @__PURE__ */ React22.createElement(StackItem3.Content, {
|
|
1576
|
+
classNames: "p-2 block overflow-y-auto"
|
|
1577
|
+
}, /* @__PURE__ */ React22.createElement(Accordion.Root, {
|
|
1578
|
+
items,
|
|
1579
|
+
value: state.spaceSettingsOpenSections,
|
|
1580
|
+
onValueChange: handleOpenSectionChange
|
|
1581
|
+
}, ({ items: items2 }) => /* @__PURE__ */ React22.createElement(React22.Fragment, null, items2.map((item) => /* @__PURE__ */ React22.createElement(Accordion.Item, {
|
|
1582
|
+
key: item.id,
|
|
1583
|
+
item,
|
|
1584
|
+
classNames: "container-max-width"
|
|
1585
|
+
}, /* @__PURE__ */ React22.createElement(Accordion.ItemHeader, {
|
|
1586
|
+
classNames: "pie-6",
|
|
1587
|
+
asChild: true
|
|
1588
|
+
}, /* @__PURE__ */ React22.createElement(ControlSectionHeading, {
|
|
1589
|
+
title: toLocalizedString3(item.label, t)
|
|
1590
|
+
})), /* @__PURE__ */ React22.createElement(Accordion.ItemBody, null, /* @__PURE__ */ React22.createElement(Surface3, {
|
|
1591
|
+
role: `space-settings--${item.id}`,
|
|
1592
|
+
data
|
|
1593
|
+
})))))));
|
|
1329
1594
|
};
|
|
1330
1595
|
|
|
1331
1596
|
// packages/plugins/plugin-space/src/components/SyncStatus/InlineSyncStatus.tsx
|
|
1332
|
-
import
|
|
1597
|
+
import React23, { useEffect as useEffect6, useState as useState12 } from "react";
|
|
1333
1598
|
import { useAppGraph as useAppGraph3 } from "@dxos/app-framework";
|
|
1334
1599
|
import { QueryEdgeStatusResponse } from "@dxos/protocols/proto/dxos/client/services";
|
|
1335
1600
|
import { EdgeReplicationSetting as EdgeReplicationSetting2 } from "@dxos/protocols/proto/dxos/echo/metadata";
|
|
1336
|
-
import { useClient as
|
|
1337
|
-
import { Tooltip as Tooltip3, useTranslation as
|
|
1601
|
+
import { useClient as useClient7 } from "@dxos/react-client";
|
|
1602
|
+
import { Tooltip as Tooltip3, useTranslation as useTranslation22 } from "@dxos/react-ui";
|
|
1338
1603
|
import { AttentionGlyph as AttentionGlyph2, useAttended as useAttended2, useAttention as useAttention2 } from "@dxos/react-ui-attention";
|
|
1339
1604
|
|
|
1340
1605
|
// packages/plugins/plugin-space/src/components/SyncStatus/sync-state.ts
|
|
1341
1606
|
import { useEffect as useEffect5, useState as useState11 } from "react";
|
|
1342
1607
|
import { Context } from "@dxos/context";
|
|
1343
1608
|
import { EdgeService } from "@dxos/protocols";
|
|
1344
|
-
import { useClient as
|
|
1609
|
+
import { useClient as useClient6 } from "@dxos/react-client";
|
|
1345
1610
|
var __dxlog_file6 = "/home/runner/work/dxos/dxos/packages/plugins/plugin-space/src/components/SyncStatus/sync-state.ts";
|
|
1346
1611
|
var createEmptyEdgeSyncState = () => ({
|
|
1347
1612
|
missingOnLocal: 0,
|
|
@@ -1362,7 +1627,7 @@ var getSyncSummary = (syncMap) => {
|
|
|
1362
1627
|
};
|
|
1363
1628
|
var isEdgePeerId = (peerId, spaceId) => peerId.startsWith(`${EdgeService.AUTOMERGE_REPLICATOR}:${spaceId}`);
|
|
1364
1629
|
var useSyncState = () => {
|
|
1365
|
-
const client =
|
|
1630
|
+
const client = useClient6();
|
|
1366
1631
|
const [spaceState, setSpaceState] = useState11({});
|
|
1367
1632
|
useEffect5(() => {
|
|
1368
1633
|
const ctx = new Context(void 0, {
|
|
@@ -1422,7 +1687,7 @@ var useSpaceSyncState = (space) => {
|
|
|
1422
1687
|
// packages/plugins/plugin-space/src/components/SyncStatus/InlineSyncStatus.tsx
|
|
1423
1688
|
var useEdgeStatus = () => {
|
|
1424
1689
|
const [status, setStatus] = useState12(QueryEdgeStatusResponse.EdgeStatus.NOT_CONNECTED);
|
|
1425
|
-
const client =
|
|
1690
|
+
const client = useClient7();
|
|
1426
1691
|
useEffect6(() => {
|
|
1427
1692
|
client.services.services.EdgeAgentService?.queryEdgeStatus().subscribe(({ status: status2 }) => {
|
|
1428
1693
|
setStatus(status2);
|
|
@@ -1433,7 +1698,7 @@ var useEdgeStatus = () => {
|
|
|
1433
1698
|
return status;
|
|
1434
1699
|
};
|
|
1435
1700
|
var InlineSyncStatus = ({ space, open }) => {
|
|
1436
|
-
const { t } =
|
|
1701
|
+
const { t } = useTranslation22(SPACE_PLUGIN);
|
|
1437
1702
|
const id = space.id;
|
|
1438
1703
|
const { hasAttention, isAncestor, isRelated } = useAttention2(id);
|
|
1439
1704
|
const isAttended = hasAttention || isAncestor || isRelated;
|
|
@@ -1446,33 +1711,33 @@ var InlineSyncStatus = ({ space, open }) => {
|
|
|
1446
1711
|
const edgeSyncEnabled = space.internal.data.edgeReplication === EdgeReplicationSetting2.ENABLED;
|
|
1447
1712
|
const syncState = useSpaceSyncState(space);
|
|
1448
1713
|
const syncing = connectedToEdge && edgeSyncEnabled && syncState && syncState.missingOnLocal > 0;
|
|
1449
|
-
return /* @__PURE__ */
|
|
1714
|
+
return /* @__PURE__ */ React23.createElement(Tooltip3.Root, null, /* @__PURE__ */ React23.createElement(Tooltip3.Trigger, {
|
|
1450
1715
|
asChild: true
|
|
1451
|
-
}, /* @__PURE__ */
|
|
1716
|
+
}, /* @__PURE__ */ React23.createElement(AttentionGlyph2, {
|
|
1452
1717
|
syncing,
|
|
1453
1718
|
attended: isAttended,
|
|
1454
1719
|
containsAttended,
|
|
1455
1720
|
classNames: "self-center mie-1"
|
|
1456
|
-
})), /* @__PURE__ */
|
|
1721
|
+
})), /* @__PURE__ */ React23.createElement(Tooltip3.Portal, null, /* @__PURE__ */ React23.createElement(Tooltip3.Content, {
|
|
1457
1722
|
side: "bottom",
|
|
1458
1723
|
classNames: "z-[70]"
|
|
1459
|
-
}, /* @__PURE__ */
|
|
1724
|
+
}, /* @__PURE__ */ React23.createElement("span", null, t("syncing label")), /* @__PURE__ */ React23.createElement(Tooltip3.Arrow, null))));
|
|
1460
1725
|
};
|
|
1461
1726
|
|
|
1462
1727
|
// packages/plugins/plugin-space/src/components/SyncStatus/SyncStatus.tsx
|
|
1463
|
-
import
|
|
1728
|
+
import React25, { useCallback as useCallback13, useEffect as useEffect8, useState as useState14 } from "react";
|
|
1464
1729
|
import { StatusBar } from "@dxos/plugin-status-bar";
|
|
1465
|
-
import { useClient as
|
|
1466
|
-
import { Icon as Icon6, Input as Input6, Popover as Popover3, useTranslation as
|
|
1730
|
+
import { useClient as useClient9 } from "@dxos/react-client";
|
|
1731
|
+
import { Icon as Icon6, Input as Input6, Popover as Popover3, useTranslation as useTranslation24 } from "@dxos/react-ui";
|
|
1467
1732
|
import { SyntaxHighlighter } from "@dxos/react-ui-syntax-highlighter";
|
|
1468
|
-
import { mx as
|
|
1733
|
+
import { mx as mx8 } from "@dxos/react-ui-theme";
|
|
1469
1734
|
|
|
1470
1735
|
// packages/plugins/plugin-space/src/components/SyncStatus/Space.tsx
|
|
1471
|
-
import
|
|
1472
|
-
import { useClient as
|
|
1736
|
+
import React24, { useEffect as useEffect7, useState as useState13 } from "react";
|
|
1737
|
+
import { useClient as useClient8 } from "@dxos/react-client";
|
|
1473
1738
|
import { useSpace } from "@dxos/react-client/echo";
|
|
1474
|
-
import { Icon as Icon5, toLocalizedString as toLocalizedString4, useTranslation as
|
|
1475
|
-
import { mx as
|
|
1739
|
+
import { Icon as Icon5, toLocalizedString as toLocalizedString4, useTranslation as useTranslation23 } from "@dxos/react-ui";
|
|
1740
|
+
import { mx as mx7 } from "@dxos/react-ui-theme";
|
|
1476
1741
|
var SYNC_STALLED_TIMEOUT = 5e3;
|
|
1477
1742
|
var styles = {
|
|
1478
1743
|
barBg: "bg-neutral-50 dark:bg-green-900 text-black",
|
|
@@ -1503,8 +1768,8 @@ var useActive = (count) => {
|
|
|
1503
1768
|
return active;
|
|
1504
1769
|
};
|
|
1505
1770
|
var SpaceRowContainer = ({ spaceId, state }) => {
|
|
1506
|
-
const { t } =
|
|
1507
|
-
const client =
|
|
1771
|
+
const { t } = useTranslation23(SPACE_PLUGIN);
|
|
1772
|
+
const client = useClient8();
|
|
1508
1773
|
const space = useSpace(spaceId);
|
|
1509
1774
|
if (!space) {
|
|
1510
1775
|
return null;
|
|
@@ -1512,7 +1777,7 @@ var SpaceRowContainer = ({ spaceId, state }) => {
|
|
|
1512
1777
|
const spaceName = toLocalizedString4(getSpaceDisplayName(space, {
|
|
1513
1778
|
personal: space === client.spaces.default
|
|
1514
1779
|
}), t);
|
|
1515
|
-
return /* @__PURE__ */
|
|
1780
|
+
return /* @__PURE__ */ React24.createElement(SpaceRow, {
|
|
1516
1781
|
spaceId,
|
|
1517
1782
|
spaceName,
|
|
1518
1783
|
state
|
|
@@ -1521,19 +1786,19 @@ var SpaceRowContainer = ({ spaceId, state }) => {
|
|
|
1521
1786
|
var SpaceRow = ({ spaceId, spaceName, state: { localDocumentCount, remoteDocumentCount, missingOnLocal, missingOnRemote } }) => {
|
|
1522
1787
|
const downActive = useActive(localDocumentCount);
|
|
1523
1788
|
const upActive = useActive(remoteDocumentCount);
|
|
1524
|
-
return /* @__PURE__ */
|
|
1789
|
+
return /* @__PURE__ */ React24.createElement("div", {
|
|
1525
1790
|
className: "flex items-center mx-0.5 gap-0.5 cursor-pointer",
|
|
1526
1791
|
title: spaceId,
|
|
1527
1792
|
onClick: () => {
|
|
1528
1793
|
void navigator.clipboard.writeText(spaceId);
|
|
1529
1794
|
}
|
|
1530
|
-
}, /* @__PURE__ */
|
|
1795
|
+
}, /* @__PURE__ */ React24.createElement("span", {
|
|
1531
1796
|
className: "is-1/2 truncate"
|
|
1532
|
-
}, spaceName), /* @__PURE__ */
|
|
1797
|
+
}, spaceName), /* @__PURE__ */ React24.createElement(Icon5, {
|
|
1533
1798
|
icon: "ph--arrow-fat-line-left--regular",
|
|
1534
1799
|
size: 3,
|
|
1535
|
-
classNames:
|
|
1536
|
-
}), /* @__PURE__ */
|
|
1800
|
+
classNames: mx7(downActive && "animate-[pulse_1s_infinite]")
|
|
1801
|
+
}), /* @__PURE__ */ React24.createElement(Candle, {
|
|
1537
1802
|
up: {
|
|
1538
1803
|
count: remoteDocumentCount,
|
|
1539
1804
|
total: remoteDocumentCount + missingOnRemote
|
|
@@ -1543,37 +1808,37 @@ var SpaceRow = ({ spaceId, spaceName, state: { localDocumentCount, remoteDocumen
|
|
|
1543
1808
|
total: localDocumentCount + missingOnLocal
|
|
1544
1809
|
},
|
|
1545
1810
|
title: spaceId
|
|
1546
|
-
}), /* @__PURE__ */
|
|
1811
|
+
}), /* @__PURE__ */ React24.createElement(Icon5, {
|
|
1547
1812
|
icon: "ph--arrow-fat-line-right--regular",
|
|
1548
1813
|
size: 3,
|
|
1549
|
-
classNames:
|
|
1814
|
+
classNames: mx7(upActive && "animate-[pulse_1s_step-start_infinite]")
|
|
1550
1815
|
}));
|
|
1551
1816
|
};
|
|
1552
1817
|
var Candle = ({ classNames, up, down }) => {
|
|
1553
|
-
return /* @__PURE__ */
|
|
1554
|
-
className:
|
|
1555
|
-
}, /* @__PURE__ */
|
|
1818
|
+
return /* @__PURE__ */ React24.createElement("div", {
|
|
1819
|
+
className: mx7("grid grid-cols-[1fr_2rem_1fr] w-full h-3", classNames)
|
|
1820
|
+
}, /* @__PURE__ */ React24.createElement(Bar, {
|
|
1556
1821
|
classNames: "justify-end",
|
|
1557
1822
|
...up
|
|
1558
|
-
}), /* @__PURE__ */
|
|
1823
|
+
}), /* @__PURE__ */ React24.createElement("div", {
|
|
1559
1824
|
className: "relative"
|
|
1560
|
-
}, /* @__PURE__ */
|
|
1561
|
-
className:
|
|
1562
|
-
}, up.total)), /* @__PURE__ */
|
|
1825
|
+
}, /* @__PURE__ */ React24.createElement("div", {
|
|
1826
|
+
className: mx7("absolute inset-0 flex items-center justify-center text-xs", styles.barBg)
|
|
1827
|
+
}, up.total)), /* @__PURE__ */ React24.createElement(Bar, down));
|
|
1563
1828
|
};
|
|
1564
1829
|
var Bar = ({ classNames, count, total }) => {
|
|
1565
1830
|
let p = count / total * 100;
|
|
1566
1831
|
if (count < total) {
|
|
1567
1832
|
p = Math.min(p, 95);
|
|
1568
1833
|
}
|
|
1569
|
-
return /* @__PURE__ */
|
|
1570
|
-
className:
|
|
1571
|
-
}, /* @__PURE__ */
|
|
1572
|
-
className:
|
|
1834
|
+
return /* @__PURE__ */ React24.createElement("div", {
|
|
1835
|
+
className: mx7("relative flex w-full", styles.barBg, classNames)
|
|
1836
|
+
}, /* @__PURE__ */ React24.createElement("div", {
|
|
1837
|
+
className: mx7("shrink-0", styles.barFg),
|
|
1573
1838
|
style: {
|
|
1574
1839
|
width: `${p}%`
|
|
1575
1840
|
}
|
|
1576
|
-
}), count !== total && /* @__PURE__ */
|
|
1841
|
+
}), count !== total && /* @__PURE__ */ React24.createElement("div", {
|
|
1577
1842
|
className: "absolute top-0 bottom-0 flex items-center mx-0.5 text-black text-xs"
|
|
1578
1843
|
}, count));
|
|
1579
1844
|
};
|
|
@@ -1582,7 +1847,7 @@ var Bar = ({ classNames, count, total }) => {
|
|
|
1582
1847
|
import { Context as Context2 } from "@dxos/context";
|
|
1583
1848
|
var __dxlog_file7 = "/home/runner/work/dxos/dxos/packages/plugins/plugin-space/src/components/SyncStatus/save-tracker.ts";
|
|
1584
1849
|
var createClientSaveTracker = (client, cb) => {
|
|
1585
|
-
const
|
|
1850
|
+
const CleanupFns = {};
|
|
1586
1851
|
const state = {};
|
|
1587
1852
|
const install = (spaces) => {
|
|
1588
1853
|
for (const space of spaces) {
|
|
@@ -1590,7 +1855,7 @@ var createClientSaveTracker = (client, cb) => {
|
|
|
1590
1855
|
continue;
|
|
1591
1856
|
}
|
|
1592
1857
|
state[space.id] = "saved";
|
|
1593
|
-
|
|
1858
|
+
CleanupFns[space.id] = createSpaceSaveTracker(space, (s) => {
|
|
1594
1859
|
state[space.id] = s;
|
|
1595
1860
|
cb(Object.values(state).some((s2) => s2 === "saving") ? "saving" : "saved");
|
|
1596
1861
|
});
|
|
@@ -1601,7 +1866,7 @@ var createClientSaveTracker = (client, cb) => {
|
|
|
1601
1866
|
});
|
|
1602
1867
|
install(client.spaces.get());
|
|
1603
1868
|
return () => {
|
|
1604
|
-
for (const unsubscribe of Object.values(
|
|
1869
|
+
for (const unsubscribe of Object.values(CleanupFns)) {
|
|
1605
1870
|
unsubscribe();
|
|
1606
1871
|
}
|
|
1607
1872
|
};
|
|
@@ -1671,7 +1936,7 @@ var getIcon = (status) => {
|
|
|
1671
1936
|
|
|
1672
1937
|
// packages/plugins/plugin-space/src/components/SyncStatus/SyncStatus.tsx
|
|
1673
1938
|
var SyncStatus = () => {
|
|
1674
|
-
const client =
|
|
1939
|
+
const client = useClient9();
|
|
1675
1940
|
const state = useSyncState();
|
|
1676
1941
|
const [saved, setSaved] = useState14(true);
|
|
1677
1942
|
useEffect8(() => {
|
|
@@ -1679,13 +1944,13 @@ var SyncStatus = () => {
|
|
|
1679
1944
|
setSaved(state2 === "saved");
|
|
1680
1945
|
});
|
|
1681
1946
|
}, []);
|
|
1682
|
-
return /* @__PURE__ */
|
|
1947
|
+
return /* @__PURE__ */ React25.createElement(SyncStatusIndicator, {
|
|
1683
1948
|
state,
|
|
1684
1949
|
saved
|
|
1685
1950
|
});
|
|
1686
1951
|
};
|
|
1687
1952
|
var SyncStatusIndicator = ({ state, saved }) => {
|
|
1688
|
-
const { t } =
|
|
1953
|
+
const { t } = useTranslation24(SPACE_PLUGIN);
|
|
1689
1954
|
const summary = getSyncSummary(state);
|
|
1690
1955
|
const offline = Object.values(state).length === 0;
|
|
1691
1956
|
const needsToUpload = summary.differentDocuments > 0 || summary.missingOnRemote > 0;
|
|
@@ -1712,66 +1977,64 @@ var SyncStatusIndicator = ({ state, saved }) => {
|
|
|
1712
1977
|
needsToDownload
|
|
1713
1978
|
]);
|
|
1714
1979
|
const title = t(`${status} label`);
|
|
1715
|
-
const icon = /* @__PURE__ */
|
|
1980
|
+
const icon = /* @__PURE__ */ React25.createElement(Icon6, {
|
|
1716
1981
|
icon: getIcon(status),
|
|
1717
1982
|
size: 4,
|
|
1718
1983
|
classNames
|
|
1719
1984
|
});
|
|
1720
1985
|
if (offline) {
|
|
1721
|
-
return /* @__PURE__ */
|
|
1986
|
+
return /* @__PURE__ */ React25.createElement(StatusBar.Item, {
|
|
1722
1987
|
title
|
|
1723
1988
|
}, icon);
|
|
1724
1989
|
} else {
|
|
1725
|
-
return /* @__PURE__ */
|
|
1990
|
+
return /* @__PURE__ */ React25.createElement(Popover3.Root, null, /* @__PURE__ */ React25.createElement(Popover3.Trigger, {
|
|
1726
1991
|
asChild: true
|
|
1727
|
-
}, /* @__PURE__ */
|
|
1992
|
+
}, /* @__PURE__ */ React25.createElement(StatusBar.Button, {
|
|
1728
1993
|
title
|
|
1729
|
-
}, icon)), /* @__PURE__ */
|
|
1994
|
+
}, icon)), /* @__PURE__ */ React25.createElement(Popover3.Portal, null, /* @__PURE__ */ React25.createElement(Popover3.Content, null, /* @__PURE__ */ React25.createElement(SyncStatusDetail, {
|
|
1730
1995
|
state,
|
|
1731
1996
|
summary,
|
|
1732
1997
|
debug: false
|
|
1733
|
-
}), /* @__PURE__ */
|
|
1998
|
+
}), /* @__PURE__ */ React25.createElement(Popover3.Arrow, null))));
|
|
1734
1999
|
}
|
|
1735
2000
|
};
|
|
1736
2001
|
var SyncStatusDetail = ({ classNames, state, summary, debug }) => {
|
|
1737
2002
|
const [showAll, setShowAll] = useState14(false);
|
|
1738
|
-
const { t } =
|
|
2003
|
+
const { t } = useTranslation24(SPACE_PLUGIN);
|
|
1739
2004
|
const entries = Object.entries(state).filter(([_, value]) => showAll || value.missingOnLocal + value.missingOnRemote > 0).toSorted(([a], [b]) => a < b ? -1 : a > b ? 1 : 0);
|
|
1740
|
-
const handleCheckedChange =
|
|
2005
|
+
const handleCheckedChange = useCallback13((state2) => setShowAll(state2), [
|
|
1741
2006
|
setShowAll
|
|
1742
2007
|
]);
|
|
1743
|
-
return /* @__PURE__ */
|
|
1744
|
-
className:
|
|
1745
|
-
}, /* @__PURE__ */
|
|
2008
|
+
return /* @__PURE__ */ React25.createElement("div", {
|
|
2009
|
+
className: mx8("flex flex-col gap-3 p-2 text-xs min-w-[400px]", classNames)
|
|
2010
|
+
}, /* @__PURE__ */ React25.createElement("div", {
|
|
1746
2011
|
role: "none",
|
|
1747
2012
|
className: "flex items-center"
|
|
1748
|
-
}, /* @__PURE__ */
|
|
2013
|
+
}, /* @__PURE__ */ React25.createElement("h1", {
|
|
1749
2014
|
className: "flex-1"
|
|
1750
|
-
}, t("sync status title")), /* @__PURE__ */
|
|
2015
|
+
}, t("sync status title")), /* @__PURE__ */ React25.createElement("div", {
|
|
1751
2016
|
className: "flex items-center gap-2"
|
|
1752
|
-
}, /* @__PURE__ */
|
|
2017
|
+
}, /* @__PURE__ */ React25.createElement(Input6.Root, null, /* @__PURE__ */ React25.createElement(Input6.Label, {
|
|
1753
2018
|
classNames: "text-xs"
|
|
1754
|
-
}, t("show all label")), /* @__PURE__ */
|
|
2019
|
+
}, t("show all label")), /* @__PURE__ */ React25.createElement(Input6.Checkbox, {
|
|
1755
2020
|
checked: showAll,
|
|
1756
2021
|
onCheckedChange: handleCheckedChange
|
|
1757
|
-
})))), /* @__PURE__ */
|
|
2022
|
+
})))), /* @__PURE__ */ React25.createElement("div", {
|
|
1758
2023
|
className: "flex flex-col gap-2"
|
|
1759
|
-
}, entries.length === 0 && /* @__PURE__ */
|
|
2024
|
+
}, entries.length === 0 && /* @__PURE__ */ React25.createElement("div", {
|
|
1760
2025
|
role: "none",
|
|
1761
2026
|
className: "flex justify-center"
|
|
1762
|
-
}, t("no sync status label")), entries.map(([spaceId, state2]) => /* @__PURE__ */
|
|
2027
|
+
}, t("no sync status label")), entries.map(([spaceId, state2]) => /* @__PURE__ */ React25.createElement(SpaceRowContainer, {
|
|
1763
2028
|
key: spaceId,
|
|
1764
2029
|
spaceId,
|
|
1765
2030
|
state: state2
|
|
1766
|
-
}))), debug && /* @__PURE__ */
|
|
2031
|
+
}))), debug && /* @__PURE__ */ React25.createElement(SyntaxHighlighter, {
|
|
1767
2032
|
language: "json"
|
|
1768
2033
|
}, JSON.stringify(summary, null, 2)));
|
|
1769
2034
|
};
|
|
1770
2035
|
|
|
1771
2036
|
export {
|
|
1772
|
-
AdvancedObjectSettings,
|
|
1773
2037
|
AwaitingObject,
|
|
1774
|
-
BaseObjectSettings,
|
|
1775
2038
|
CREATE_OBJECT_DIALOG,
|
|
1776
2039
|
CreateObjectDialog,
|
|
1777
2040
|
CREATE_SPACE_DIALOG,
|
|
@@ -1780,7 +2043,9 @@ export {
|
|
|
1780
2043
|
CollectionSection,
|
|
1781
2044
|
JOIN_DIALOG,
|
|
1782
2045
|
JoinDialog,
|
|
2046
|
+
MembersContainer,
|
|
1783
2047
|
MenuFooter,
|
|
2048
|
+
ObjectSettingsContainer,
|
|
1784
2049
|
PersistenceStatus,
|
|
1785
2050
|
POPOVER_ADD_SPACE,
|
|
1786
2051
|
PopoverAddSpace,
|
|
@@ -1795,9 +2060,9 @@ export {
|
|
|
1795
2060
|
SmallPresenceLive,
|
|
1796
2061
|
SmallPresence,
|
|
1797
2062
|
SpacePluginSettings,
|
|
1798
|
-
|
|
2063
|
+
SpacePropertiesForm,
|
|
1799
2064
|
SPACE_SETTINGS_DIALOG,
|
|
1800
|
-
|
|
2065
|
+
SpaceSettingsContainer,
|
|
1801
2066
|
InlineSyncStatus,
|
|
1802
2067
|
SyncStatus,
|
|
1803
2068
|
SyncStatusIndicator,
|
|
@@ -1814,4 +2079,4 @@ export {
|
|
|
1814
2079
|
SpaceState,
|
|
1815
2080
|
SpacesReady
|
|
1816
2081
|
};
|
|
1817
|
-
//# sourceMappingURL=chunk-
|
|
2082
|
+
//# sourceMappingURL=chunk-BEWBZ4Q4.mjs.map
|