@dxos/plugin-space 0.8.4-main.c85a9c8dae → 0.8.4-main.d05673bc65

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.
Files changed (344) hide show
  1. package/dist/lib/browser/{CollectionArticle-WASDM637.mjs → CollectionArticle-WPLUW5HF.mjs} +5 -36
  2. package/dist/lib/browser/CollectionArticle-WPLUW5HF.mjs.map +7 -0
  3. package/dist/lib/browser/{CollectionSection-LK4O6QDD.mjs → CollectionSection-H2MBNI63.mjs} +2 -2
  4. package/dist/lib/browser/{CreateObjectDialog-MA6DPYMD.mjs → CreateObjectDialog-YUBUWSEL.mjs} +17 -21
  5. package/dist/lib/browser/CreateObjectDialog-YUBUWSEL.mjs.map +7 -0
  6. package/dist/lib/browser/{CreateSpaceDialog-WCEICWIE.mjs → CreateSpaceDialog-3M2LAWV6.mjs} +7 -7
  7. package/dist/lib/browser/CreateSpaceDialog-3M2LAWV6.mjs.map +7 -0
  8. package/dist/lib/browser/{InlineSyncStatus-BT7BRBCO.mjs → InlineSyncStatus-K5MZ3YMZ.mjs} +9 -18
  9. package/dist/lib/browser/InlineSyncStatus-K5MZ3YMZ.mjs.map +7 -0
  10. package/dist/lib/browser/{JoinDialog-PMCAIRCU.mjs → JoinDialog-PBK2RE5F.mjs} +8 -10
  11. package/dist/lib/browser/JoinDialog-PBK2RE5F.mjs.map +7 -0
  12. package/dist/lib/browser/{MembersContainer-MMFCXLVZ.mjs → MembersContainer-OGYV2L4M.mjs} +4 -4
  13. package/dist/lib/browser/{MenuFooter-HYBTNOBT.mjs → MenuFooter-XCBDK7WP.mjs} +3 -4
  14. package/dist/lib/{node-esm/MenuFooter-2QB3453Y.mjs.map → browser/MenuFooter-XCBDK7WP.mjs.map} +1 -1
  15. package/dist/lib/browser/{ObjectCardStack-CHWNLUYQ.mjs → ObjectCardStack-OMXF2DSG.mjs} +6 -6
  16. package/dist/lib/browser/{ObjectDetails-YUGVDNSA.mjs → ObjectDetails-QFTQQN4W.mjs} +6 -6
  17. package/dist/lib/browser/{ObjectRenamePopover-RQUOVPFH.mjs → ObjectRenamePopover-JNPJIFIR.mjs} +3 -3
  18. package/dist/lib/browser/{ObjectRenamePopover-RQUOVPFH.mjs.map → ObjectRenamePopover-JNPJIFIR.mjs.map} +1 -1
  19. package/dist/lib/browser/{RecordArticle-ONWKYM3Z.mjs → RecordArticle-BO2XHBFN.mjs} +2 -2
  20. package/dist/lib/browser/{SchemaContainer-62AJXKAF.mjs → SchemaContainer-QWCSIZBS.mjs} +2 -2
  21. package/dist/lib/browser/SmallPresenceLive-AHHLBAUP.mjs +9 -0
  22. package/dist/lib/browser/{SpacePluginSettings-BRJTADV5.mjs → SpacePluginSettings-QGZKNQLK.mjs} +4 -4
  23. package/dist/lib/browser/SpacePresence-JIWLBUWO.mjs +12 -0
  24. package/dist/lib/browser/{SpaceRenamePopover-SAKMPDLX.mjs → SpaceRenamePopover-ZL6RRZ2B.mjs} +3 -3
  25. package/dist/lib/browser/{SpaceRenamePopover-SAKMPDLX.mjs.map → SpaceRenamePopover-ZL6RRZ2B.mjs.map} +1 -1
  26. package/dist/lib/browser/{SpaceSettingsContainer-UBMVKUPR.mjs → SpaceSettingsContainer-MIOOT63N.mjs} +5 -5
  27. package/dist/lib/browser/SpaceSettingsContainer-MIOOT63N.mjs.map +7 -0
  28. package/dist/lib/browser/{SyncStatus-5UQ7CIII.mjs → SyncStatus-6N7JJ7XF.mjs} +6 -6
  29. package/dist/lib/browser/{ViewEditor-F74RR542.mjs → ViewEditor-3FX5HDRT.mjs} +4 -7
  30. package/dist/lib/browser/ViewEditor-3FX5HDRT.mjs.map +7 -0
  31. package/dist/lib/browser/app-graph-builder-JORZZE3P.mjs +1203 -0
  32. package/dist/lib/browser/app-graph-builder-JORZZE3P.mjs.map +7 -0
  33. package/dist/lib/browser/{app-graph-serializer-KTQOBYUF.mjs → app-graph-serializer-UZWWGLGY.mjs} +5 -5
  34. package/dist/lib/browser/{chunk-RWOK4F4G.mjs → chunk-2WHUSAHE.mjs} +17 -14
  35. package/dist/lib/browser/chunk-2WHUSAHE.mjs.map +7 -0
  36. package/dist/lib/browser/{chunk-USN5QKRV.mjs → chunk-6IT5IBB5.mjs} +54 -86
  37. package/dist/lib/browser/chunk-6IT5IBB5.mjs.map +7 -0
  38. package/dist/lib/browser/chunk-6OA75CWN.mjs +77 -0
  39. package/dist/lib/browser/chunk-6OA75CWN.mjs.map +7 -0
  40. package/dist/lib/browser/{chunk-PXVKN4LU.mjs → chunk-AUX3RRLY.mjs} +34 -9
  41. package/dist/lib/browser/chunk-AUX3RRLY.mjs.map +7 -0
  42. package/dist/lib/browser/{chunk-HSMQFM57.mjs → chunk-CBWGVOJE.mjs} +2 -2
  43. package/dist/lib/browser/{chunk-HSMQFM57.mjs.map → chunk-CBWGVOJE.mjs.map} +1 -1
  44. package/dist/lib/browser/{chunk-XIIYC7P5.mjs → chunk-ICXESMDI.mjs} +6 -6
  45. package/dist/lib/browser/chunk-ICXESMDI.mjs.map +7 -0
  46. package/dist/lib/browser/chunk-RJUOHI3B.mjs +19 -0
  47. package/dist/lib/browser/{chunk-ASV6DYFH.mjs.map → chunk-RJUOHI3B.mjs.map} +1 -1
  48. package/dist/lib/browser/{chunk-J5F4LUJD.mjs → chunk-SSTUPFZ2.mjs} +3 -3
  49. package/dist/lib/browser/{chunk-ABCDB5YC.mjs → chunk-UYOJYBGW.mjs} +7 -16
  50. package/dist/lib/browser/chunk-UYOJYBGW.mjs.map +7 -0
  51. package/dist/lib/browser/cli/index.mjs +8 -17
  52. package/dist/lib/browser/cli/index.mjs.map +3 -3
  53. package/dist/lib/browser/{identity-created-VKLIZOXJ.mjs → identity-created-ETXNQYR6.mjs} +4 -4
  54. package/dist/lib/browser/{identity-created-VKLIZOXJ.mjs.map → identity-created-ETXNQYR6.mjs.map} +3 -3
  55. package/dist/lib/browser/index.mjs +33 -53
  56. package/dist/lib/browser/index.mjs.map +3 -3
  57. package/dist/lib/browser/meta.json +1 -1
  58. package/dist/lib/browser/{operation-resolver-Y3HYRXX7.mjs → operation-resolver-D4LHB4D4.mjs} +64 -88
  59. package/dist/lib/browser/operation-resolver-D4LHB4D4.mjs.map +7 -0
  60. package/dist/lib/browser/{react-root-UYBW5RE7.mjs → react-root-OD2HP63B.mjs} +6 -6
  61. package/dist/lib/browser/{react-surface-NJ23NZFF.mjs → react-surface-E4TAFED5.mjs} +57 -79
  62. package/dist/lib/browser/react-surface-E4TAFED5.mjs.map +7 -0
  63. package/dist/lib/browser/repair-NUVEV4AK.mjs +31 -0
  64. package/dist/lib/browser/repair-NUVEV4AK.mjs.map +7 -0
  65. package/dist/lib/browser/{settings-2ELVUFDR.mjs → settings-RUDP2Q56.mjs} +3 -3
  66. package/dist/lib/browser/{spaces-ready-Q6JASPT4.mjs → spaces-ready-B2GYL5IN.mjs} +6 -6
  67. package/dist/lib/browser/spaces-ready-B2GYL5IN.mjs.map +7 -0
  68. package/dist/lib/browser/{state-CTX4WQOM.mjs → state-I6JDZCDE.mjs} +5 -5
  69. package/dist/lib/browser/{state-CTX4WQOM.mjs.map → state-I6JDZCDE.mjs.map} +2 -2
  70. package/dist/lib/browser/types/index.mjs +2 -2
  71. package/dist/lib/node-esm/{CollectionArticle-A6GGG73Z.mjs → CollectionArticle-JGVNBX66.mjs} +5 -36
  72. package/dist/lib/node-esm/CollectionArticle-JGVNBX66.mjs.map +7 -0
  73. package/dist/lib/node-esm/{CollectionSection-WWKDOAAT.mjs → CollectionSection-BI66Y34F.mjs} +2 -2
  74. package/dist/lib/node-esm/{CreateObjectDialog-4WEFNDDF.mjs → CreateObjectDialog-B6OLP5VQ.mjs} +17 -21
  75. package/dist/lib/node-esm/CreateObjectDialog-B6OLP5VQ.mjs.map +7 -0
  76. package/dist/lib/node-esm/{CreateSpaceDialog-P7QCPB5J.mjs → CreateSpaceDialog-J47M5FPQ.mjs} +7 -7
  77. package/dist/lib/node-esm/CreateSpaceDialog-J47M5FPQ.mjs.map +7 -0
  78. package/dist/lib/node-esm/{InlineSyncStatus-3PCXU7NX.mjs → InlineSyncStatus-BLD57LB5.mjs} +9 -18
  79. package/dist/lib/node-esm/InlineSyncStatus-BLD57LB5.mjs.map +7 -0
  80. package/dist/lib/node-esm/{JoinDialog-XEOLJZVN.mjs → JoinDialog-XCOYKSHA.mjs} +8 -10
  81. package/dist/lib/node-esm/JoinDialog-XCOYKSHA.mjs.map +7 -0
  82. package/dist/lib/node-esm/{MembersContainer-UQZLW3YA.mjs → MembersContainer-4PV3Z4BA.mjs} +4 -4
  83. package/dist/lib/node-esm/{MenuFooter-2QB3453Y.mjs → MenuFooter-PXG2GV6A.mjs} +3 -4
  84. package/dist/lib/node-esm/{ObjectCardStack-UXEWG6RV.mjs → ObjectCardStack-457SNNVF.mjs} +6 -6
  85. package/dist/lib/node-esm/{ObjectDetails-26PVHUQL.mjs → ObjectDetails-OLF7HSM4.mjs} +6 -6
  86. package/dist/lib/node-esm/{ObjectRenamePopover-EHTP76G7.mjs → ObjectRenamePopover-BRPKVNVF.mjs} +3 -3
  87. package/dist/lib/node-esm/{ObjectRenamePopover-EHTP76G7.mjs.map → ObjectRenamePopover-BRPKVNVF.mjs.map} +1 -1
  88. package/dist/lib/node-esm/{RecordArticle-APY2WKUW.mjs → RecordArticle-XUIT25PP.mjs} +2 -2
  89. package/dist/lib/node-esm/{SchemaContainer-XR2D6MYX.mjs → SchemaContainer-5G4R3Z6O.mjs} +2 -2
  90. package/dist/lib/node-esm/SmallPresenceLive-4K7RJS74.mjs +10 -0
  91. package/dist/lib/node-esm/SmallPresenceLive-4K7RJS74.mjs.map +7 -0
  92. package/dist/lib/node-esm/{SpacePluginSettings-VEB5IGG7.mjs → SpacePluginSettings-PENV4GHL.mjs} +4 -4
  93. package/dist/lib/node-esm/SpacePresence-H3VZWFJV.mjs +13 -0
  94. package/dist/lib/node-esm/SpacePresence-H3VZWFJV.mjs.map +7 -0
  95. package/dist/lib/node-esm/{SpaceRenamePopover-WHM632OT.mjs → SpaceRenamePopover-XEMTI4PU.mjs} +3 -3
  96. package/dist/lib/node-esm/{SpaceRenamePopover-WHM632OT.mjs.map → SpaceRenamePopover-XEMTI4PU.mjs.map} +1 -1
  97. package/dist/lib/node-esm/{SpaceSettingsContainer-Y62J2L65.mjs → SpaceSettingsContainer-WI4D7RWA.mjs} +5 -5
  98. package/dist/lib/node-esm/SpaceSettingsContainer-WI4D7RWA.mjs.map +7 -0
  99. package/dist/lib/node-esm/{SyncStatus-XTJAVHPN.mjs → SyncStatus-YEBGTNSD.mjs} +6 -6
  100. package/dist/lib/node-esm/{ViewEditor-B2BLYF5U.mjs → ViewEditor-CUQVNM2H.mjs} +4 -7
  101. package/dist/lib/node-esm/ViewEditor-CUQVNM2H.mjs.map +7 -0
  102. package/dist/lib/node-esm/app-graph-builder-WTM6SSX7.mjs +1204 -0
  103. package/dist/lib/node-esm/app-graph-builder-WTM6SSX7.mjs.map +7 -0
  104. package/dist/lib/node-esm/{app-graph-serializer-GXQYSQAZ.mjs → app-graph-serializer-RT2RQTV2.mjs} +5 -5
  105. package/dist/lib/node-esm/{chunk-OSFH2XKO.mjs → chunk-2OLR2ZKH.mjs} +6 -6
  106. package/dist/lib/node-esm/chunk-2OLR2ZKH.mjs.map +7 -0
  107. package/dist/lib/node-esm/chunk-5KTTTTEX.mjs +20 -0
  108. package/dist/lib/node-esm/{chunk-CVXULIYC.mjs.map → chunk-5KTTTTEX.mjs.map} +1 -1
  109. package/dist/lib/node-esm/{chunk-SL4BJSUG.mjs → chunk-63N5JJXI.mjs} +2 -2
  110. package/dist/lib/node-esm/{chunk-SL4BJSUG.mjs.map → chunk-63N5JJXI.mjs.map} +1 -1
  111. package/dist/lib/node-esm/{chunk-UJQUBDQS.mjs → chunk-EDC2RUJU.mjs} +7 -16
  112. package/dist/lib/node-esm/chunk-EDC2RUJU.mjs.map +7 -0
  113. package/dist/lib/node-esm/{chunk-3DWZCVVQ.mjs → chunk-EVNSLSQS.mjs} +54 -86
  114. package/dist/lib/node-esm/chunk-EVNSLSQS.mjs.map +7 -0
  115. package/dist/lib/node-esm/chunk-GEGWQVZX.mjs +78 -0
  116. package/dist/lib/node-esm/chunk-GEGWQVZX.mjs.map +7 -0
  117. package/dist/lib/node-esm/{chunk-P2AVANDG.mjs → chunk-RYQQXNI7.mjs} +34 -9
  118. package/dist/lib/node-esm/chunk-RYQQXNI7.mjs.map +7 -0
  119. package/dist/lib/node-esm/{chunk-GWUPFA7J.mjs → chunk-S5BQUCL4.mjs} +17 -14
  120. package/dist/lib/node-esm/chunk-S5BQUCL4.mjs.map +7 -0
  121. package/dist/lib/node-esm/{chunk-S2IELCDF.mjs → chunk-XYLDAH5C.mjs} +3 -3
  122. package/dist/lib/node-esm/cli/index.mjs +8 -17
  123. package/dist/lib/node-esm/cli/index.mjs.map +3 -3
  124. package/dist/lib/node-esm/{identity-created-EGSTETJ5.mjs → identity-created-U5LGULVL.mjs} +4 -4
  125. package/dist/lib/node-esm/{identity-created-EGSTETJ5.mjs.map → identity-created-U5LGULVL.mjs.map} +3 -3
  126. package/dist/lib/node-esm/index.mjs +33 -53
  127. package/dist/lib/node-esm/index.mjs.map +3 -3
  128. package/dist/lib/node-esm/meta.json +1 -1
  129. package/dist/lib/node-esm/{operation-resolver-IRQ2NVUQ.mjs → operation-resolver-IL2AHNPN.mjs} +64 -88
  130. package/dist/lib/node-esm/operation-resolver-IL2AHNPN.mjs.map +7 -0
  131. package/dist/lib/node-esm/{react-root-UEN3LLJD.mjs → react-root-RILC5MBD.mjs} +6 -6
  132. package/dist/lib/node-esm/{react-surface-UDO3PGH6.mjs → react-surface-SWKRVK4S.mjs} +57 -79
  133. package/dist/lib/node-esm/react-surface-SWKRVK4S.mjs.map +7 -0
  134. package/dist/lib/node-esm/repair-LRZHFPSJ.mjs +32 -0
  135. package/dist/lib/node-esm/repair-LRZHFPSJ.mjs.map +7 -0
  136. package/dist/lib/node-esm/{settings-DCTVM2BV.mjs → settings-3EKSEAAG.mjs} +3 -3
  137. package/dist/lib/node-esm/{spaces-ready-XLGRTJV2.mjs → spaces-ready-QK3EHBOS.mjs} +6 -6
  138. package/dist/lib/node-esm/spaces-ready-QK3EHBOS.mjs.map +7 -0
  139. package/dist/lib/node-esm/{state-G74V3WZG.mjs → state-W36RRYUO.mjs} +5 -5
  140. package/dist/lib/node-esm/{state-G74V3WZG.mjs.map → state-W36RRYUO.mjs.map} +2 -2
  141. package/dist/lib/node-esm/types/index.mjs +2 -2
  142. package/dist/types/src/SpacePlugin.d.ts.map +1 -1
  143. package/dist/types/src/capabilities/app-graph-builder/app-graph-builder.d.ts +1 -2
  144. package/dist/types/src/capabilities/app-graph-builder/app-graph-builder.d.ts.map +1 -1
  145. package/dist/types/src/capabilities/app-graph-builder/extensions/collections.d.ts +33 -0
  146. package/dist/types/src/capabilities/app-graph-builder/extensions/collections.d.ts.map +1 -0
  147. package/dist/types/src/capabilities/app-graph-builder/extensions/companions.d.ts +19 -0
  148. package/dist/types/src/capabilities/app-graph-builder/extensions/companions.d.ts.map +1 -0
  149. package/dist/types/src/capabilities/app-graph-builder/extensions/index.d.ts +6 -0
  150. package/dist/types/src/capabilities/app-graph-builder/extensions/index.d.ts.map +1 -0
  151. package/dist/types/src/capabilities/app-graph-builder/extensions/settings.d.ts +12 -0
  152. package/dist/types/src/capabilities/app-graph-builder/extensions/settings.d.ts.map +1 -0
  153. package/dist/types/src/capabilities/app-graph-builder/extensions/shared.d.ts +57 -0
  154. package/dist/types/src/capabilities/app-graph-builder/extensions/shared.d.ts.map +1 -0
  155. package/dist/types/src/capabilities/app-graph-builder/extensions/shared.test.d.ts +2 -0
  156. package/dist/types/src/capabilities/app-graph-builder/extensions/shared.test.d.ts.map +1 -0
  157. package/dist/types/src/capabilities/app-graph-builder/extensions/spaces.d.ts +24 -0
  158. package/dist/types/src/capabilities/app-graph-builder/extensions/spaces.d.ts.map +1 -0
  159. package/dist/types/src/capabilities/app-graph-builder/extensions/types.d.ts +38 -0
  160. package/dist/types/src/capabilities/app-graph-builder/extensions/types.d.ts.map +1 -0
  161. package/dist/types/src/capabilities/operation-resolver/operation-resolver.d.ts.map +1 -1
  162. package/dist/types/src/capabilities/react-surface/react-surface.d.ts.map +1 -1
  163. package/dist/types/src/capabilities/repair/repair.d.ts.map +1 -1
  164. package/dist/types/src/capabilities/state/state.d.ts.map +1 -1
  165. package/dist/types/src/cli/commands/database/add.d.ts +0 -1
  166. package/dist/types/src/cli/commands/database/add.d.ts.map +1 -1
  167. package/dist/types/src/cli/plugin.d.ts.map +1 -1
  168. package/dist/types/src/components/AwaitingObject/AwaitingObject.d.ts.map +1 -0
  169. package/dist/types/src/components/AwaitingObject/index.d.ts +2 -0
  170. package/dist/types/src/components/AwaitingObject/index.d.ts.map +1 -0
  171. package/dist/types/src/components/CreateDialog/CreateObjectPanel.d.ts +0 -1
  172. package/dist/types/src/components/CreateDialog/CreateObjectPanel.d.ts.map +1 -1
  173. package/dist/types/src/components/ObjectDetails/BaseObjectSettings.stories.d.ts +68 -14
  174. package/dist/types/src/components/ObjectDetails/BaseObjectSettings.stories.d.ts.map +1 -1
  175. package/dist/types/src/components/ObjectForm/ObjectForm.d.ts.map +1 -1
  176. package/dist/types/src/containers/CollectionArticle/CollectionArticle.d.ts +1 -2
  177. package/dist/types/src/containers/CollectionArticle/CollectionArticle.d.ts.map +1 -1
  178. package/dist/types/src/containers/CreateObjectDialog/CreateObjectDialog.d.ts +2 -1
  179. package/dist/types/src/containers/CreateObjectDialog/CreateObjectDialog.d.ts.map +1 -1
  180. package/dist/types/src/containers/CreateObjectDialog/index.d.ts +2 -2
  181. package/dist/types/src/containers/CreateObjectDialog/index.d.ts.map +1 -1
  182. package/dist/types/src/containers/CreateSpaceDialog/CreateSpaceDialog.d.ts.map +1 -1
  183. package/dist/types/src/containers/InlineSyncStatus/InlineSyncStatus.d.ts.map +1 -1
  184. package/dist/types/src/containers/JoinDialog/index.d.ts +2 -2
  185. package/dist/types/src/containers/JoinDialog/index.d.ts.map +1 -1
  186. package/dist/types/src/containers/ObjectDetails/ObjectDetails.d.ts +1 -0
  187. package/dist/types/src/containers/ObjectDetails/ObjectDetails.d.ts.map +1 -1
  188. package/dist/types/src/containers/SmallPresenceLive/index.d.ts +1 -1
  189. package/dist/types/src/containers/SmallPresenceLive/index.d.ts.map +1 -1
  190. package/dist/types/src/containers/SpacePresence/SpacePresence.d.ts.map +1 -1
  191. package/dist/types/src/containers/SpacePresence/SpacePresence.stories.d.ts +67 -13
  192. package/dist/types/src/containers/SpacePresence/SpacePresence.stories.d.ts.map +1 -1
  193. package/dist/types/src/containers/SpacePresence/index.d.ts +2 -2
  194. package/dist/types/src/containers/SpacePresence/index.d.ts.map +1 -1
  195. package/dist/types/src/containers/SpaceSettingsContainer/SpaceSettingsContainer.stories.d.ts +67 -13
  196. package/dist/types/src/containers/SpaceSettingsContainer/SpaceSettingsContainer.stories.d.ts.map +1 -1
  197. package/dist/types/src/containers/SyncStatus/SyncStatus.stories.d.ts +67 -13
  198. package/dist/types/src/containers/SyncStatus/SyncStatus.stories.d.ts.map +1 -1
  199. package/dist/types/src/containers/ViewEditor/ViewEditor.d.ts.map +1 -1
  200. package/dist/types/src/containers/index.d.ts +1 -1
  201. package/dist/types/src/containers/index.d.ts.map +1 -1
  202. package/dist/types/src/translations.d.ts +67 -13
  203. package/dist/types/src/translations.d.ts.map +1 -1
  204. package/dist/types/src/types/form.d.ts +0 -2
  205. package/dist/types/src/types/form.d.ts.map +1 -1
  206. package/dist/types/src/types/types.d.ts +29 -46
  207. package/dist/types/src/types/types.d.ts.map +1 -1
  208. package/dist/types/src/util.d.ts +4 -161
  209. package/dist/types/src/util.d.ts.map +1 -1
  210. package/dist/types/tsconfig.tsbuildinfo +1 -1
  211. package/package.json +57 -57
  212. package/src/SpacePlugin.ts +14 -22
  213. package/src/capabilities/app-graph-builder/app-graph-builder.ts +14 -657
  214. package/src/capabilities/app-graph-builder/extensions/collections.ts +351 -0
  215. package/src/capabilities/app-graph-builder/extensions/companions.ts +80 -0
  216. package/src/capabilities/app-graph-builder/extensions/index.ts +9 -0
  217. package/src/capabilities/app-graph-builder/extensions/settings.ts +60 -0
  218. package/src/capabilities/app-graph-builder/extensions/shared.test.ts +112 -0
  219. package/src/capabilities/app-graph-builder/extensions/shared.ts +171 -0
  220. package/src/capabilities/app-graph-builder/extensions/spaces.ts +338 -0
  221. package/src/capabilities/app-graph-builder/extensions/types.ts +421 -0
  222. package/src/capabilities/identity-created/identity-created.ts +3 -3
  223. package/src/capabilities/operation-resolver/operation-resolver.ts +65 -73
  224. package/src/capabilities/react-surface/react-surface.tsx +33 -58
  225. package/src/capabilities/repair/repair.ts +3 -32
  226. package/src/capabilities/spaces-ready/spaces-ready.ts +2 -2
  227. package/src/capabilities/state/state.ts +4 -2
  228. package/src/cli/commands/database/add.ts +0 -1
  229. package/src/cli/commands/space/close/close.ts +1 -1
  230. package/src/cli/commands/space/create/create.ts +1 -1
  231. package/src/cli/commands/space/join/join.ts +1 -1
  232. package/src/cli/commands/space/open/open.ts +1 -1
  233. package/src/cli/plugin.ts +0 -1
  234. package/src/components/{AwaitingObject.tsx → AwaitingObject/AwaitingObject.tsx} +2 -2
  235. package/src/components/AwaitingObject/index.ts +5 -0
  236. package/src/components/CreateDialog/CreateObjectPanel.tsx +5 -2
  237. package/src/components/ObjectDetails/BaseObjectSettings.stories.tsx +4 -4
  238. package/src/components/ObjectDetails/BaseObjectSettings.tsx +4 -4
  239. package/src/components/ObjectForm/ObjectForm.tsx +6 -4
  240. package/src/constants.ts +5 -5
  241. package/src/containers/CollectionArticle/CollectionArticle.tsx +7 -54
  242. package/src/containers/CreateObjectDialog/CreateObjectDialog.tsx +10 -10
  243. package/src/containers/CreateObjectDialog/index.ts +2 -3
  244. package/src/containers/CreateSpaceDialog/CreateSpaceDialog.tsx +5 -3
  245. package/src/containers/InlineSyncStatus/InlineSyncStatus.tsx +7 -18
  246. package/src/containers/JoinDialog/JoinDialog.tsx +4 -4
  247. package/src/containers/JoinDialog/index.ts +2 -3
  248. package/src/containers/ObjectRenamePopover/ObjectRenamePopover.tsx +1 -1
  249. package/src/containers/SmallPresenceLive/index.ts +1 -1
  250. package/src/containers/SpacePresence/SpacePresence.tsx +4 -16
  251. package/src/containers/SpacePresence/index.ts +2 -3
  252. package/src/containers/SpaceRenamePopover/SpaceRenamePopover.tsx +1 -1
  253. package/src/containers/SpaceSettingsContainer/SpaceSettingsContainer.tsx +2 -2
  254. package/src/containers/ViewEditor/ViewEditor.tsx +0 -1
  255. package/src/containers/index.ts +1 -1
  256. package/src/helpers/query.test.ts +1 -1
  257. package/src/hooks/useActiveSpace.ts +4 -4
  258. package/src/meta.ts +1 -1
  259. package/src/translations.ts +27 -1
  260. package/src/types/capabilities.ts +7 -7
  261. package/src/types/events.ts +5 -5
  262. package/src/types/form.ts +1 -8
  263. package/src/types/types.ts +36 -58
  264. package/src/util.ts +82 -0
  265. package/dist/lib/browser/CollectionArticle-WASDM637.mjs.map +0 -7
  266. package/dist/lib/browser/CreateObjectDialog-MA6DPYMD.mjs.map +0 -7
  267. package/dist/lib/browser/CreateSpaceDialog-WCEICWIE.mjs.map +0 -7
  268. package/dist/lib/browser/InlineSyncStatus-BT7BRBCO.mjs.map +0 -7
  269. package/dist/lib/browser/JoinDialog-PMCAIRCU.mjs.map +0 -7
  270. package/dist/lib/browser/SmallPresenceLive-LZD2NGKK.mjs +0 -10
  271. package/dist/lib/browser/SpacePresence-MLU576L6.mjs +0 -13
  272. package/dist/lib/browser/SpacePresence-MLU576L6.mjs.map +0 -7
  273. package/dist/lib/browser/SpaceSettingsContainer-UBMVKUPR.mjs.map +0 -7
  274. package/dist/lib/browser/ViewEditor-F74RR542.mjs.map +0 -7
  275. package/dist/lib/browser/app-graph-builder-VFYFI7CD.mjs +0 -593
  276. package/dist/lib/browser/app-graph-builder-VFYFI7CD.mjs.map +0 -7
  277. package/dist/lib/browser/chunk-ABCDB5YC.mjs.map +0 -7
  278. package/dist/lib/browser/chunk-ASV6DYFH.mjs +0 -19
  279. package/dist/lib/browser/chunk-PXVKN4LU.mjs.map +0 -7
  280. package/dist/lib/browser/chunk-RWOK4F4G.mjs.map +0 -7
  281. package/dist/lib/browser/chunk-TPZUQ5DC.mjs +0 -749
  282. package/dist/lib/browser/chunk-TPZUQ5DC.mjs.map +0 -7
  283. package/dist/lib/browser/chunk-USN5QKRV.mjs.map +0 -7
  284. package/dist/lib/browser/chunk-XIIYC7P5.mjs.map +0 -7
  285. package/dist/lib/browser/operation-resolver-Y3HYRXX7.mjs.map +0 -7
  286. package/dist/lib/browser/react-surface-NJ23NZFF.mjs.map +0 -7
  287. package/dist/lib/browser/repair-N2I4DR2Z.mjs +0 -50
  288. package/dist/lib/browser/repair-N2I4DR2Z.mjs.map +0 -7
  289. package/dist/lib/browser/spaces-ready-Q6JASPT4.mjs.map +0 -7
  290. package/dist/lib/node-esm/CollectionArticle-A6GGG73Z.mjs.map +0 -7
  291. package/dist/lib/node-esm/CreateObjectDialog-4WEFNDDF.mjs.map +0 -7
  292. package/dist/lib/node-esm/CreateSpaceDialog-P7QCPB5J.mjs.map +0 -7
  293. package/dist/lib/node-esm/InlineSyncStatus-3PCXU7NX.mjs.map +0 -7
  294. package/dist/lib/node-esm/JoinDialog-XEOLJZVN.mjs.map +0 -7
  295. package/dist/lib/node-esm/SmallPresenceLive-K4243KXR.mjs +0 -11
  296. package/dist/lib/node-esm/SpacePresence-HC2XGQ54.mjs +0 -14
  297. package/dist/lib/node-esm/SpacePresence-HC2XGQ54.mjs.map +0 -7
  298. package/dist/lib/node-esm/SpaceSettingsContainer-Y62J2L65.mjs.map +0 -7
  299. package/dist/lib/node-esm/ViewEditor-B2BLYF5U.mjs.map +0 -7
  300. package/dist/lib/node-esm/app-graph-builder-N37ED6UI.mjs +0 -594
  301. package/dist/lib/node-esm/app-graph-builder-N37ED6UI.mjs.map +0 -7
  302. package/dist/lib/node-esm/chunk-3DWZCVVQ.mjs.map +0 -7
  303. package/dist/lib/node-esm/chunk-CVXULIYC.mjs +0 -20
  304. package/dist/lib/node-esm/chunk-GWUPFA7J.mjs.map +0 -7
  305. package/dist/lib/node-esm/chunk-OSFH2XKO.mjs.map +0 -7
  306. package/dist/lib/node-esm/chunk-P2AVANDG.mjs.map +0 -7
  307. package/dist/lib/node-esm/chunk-UJQUBDQS.mjs.map +0 -7
  308. package/dist/lib/node-esm/chunk-WW6YYBRG.mjs +0 -750
  309. package/dist/lib/node-esm/chunk-WW6YYBRG.mjs.map +0 -7
  310. package/dist/lib/node-esm/operation-resolver-IRQ2NVUQ.mjs.map +0 -7
  311. package/dist/lib/node-esm/react-surface-UDO3PGH6.mjs.map +0 -7
  312. package/dist/lib/node-esm/repair-P6ND7ZRU.mjs +0 -51
  313. package/dist/lib/node-esm/repair-P6ND7ZRU.mjs.map +0 -7
  314. package/dist/lib/node-esm/spaces-ready-XLGRTJV2.mjs.map +0 -7
  315. package/dist/types/src/components/AwaitingObject.d.ts.map +0 -1
  316. package/src/util.tsx +0 -956
  317. /package/dist/lib/browser/{CollectionSection-LK4O6QDD.mjs.map → CollectionSection-H2MBNI63.mjs.map} +0 -0
  318. /package/dist/lib/browser/{MembersContainer-MMFCXLVZ.mjs.map → MembersContainer-OGYV2L4M.mjs.map} +0 -0
  319. /package/dist/lib/browser/{ObjectCardStack-CHWNLUYQ.mjs.map → ObjectCardStack-OMXF2DSG.mjs.map} +0 -0
  320. /package/dist/lib/browser/{ObjectDetails-YUGVDNSA.mjs.map → ObjectDetails-QFTQQN4W.mjs.map} +0 -0
  321. /package/dist/lib/browser/{RecordArticle-ONWKYM3Z.mjs.map → RecordArticle-BO2XHBFN.mjs.map} +0 -0
  322. /package/dist/lib/browser/{SchemaContainer-62AJXKAF.mjs.map → SchemaContainer-QWCSIZBS.mjs.map} +0 -0
  323. /package/dist/lib/browser/{SmallPresenceLive-LZD2NGKK.mjs.map → SmallPresenceLive-AHHLBAUP.mjs.map} +0 -0
  324. /package/dist/lib/browser/{SpacePluginSettings-BRJTADV5.mjs.map → SpacePluginSettings-QGZKNQLK.mjs.map} +0 -0
  325. /package/dist/lib/{node-esm/SmallPresenceLive-K4243KXR.mjs.map → browser/SpacePresence-JIWLBUWO.mjs.map} +0 -0
  326. /package/dist/lib/browser/{SyncStatus-5UQ7CIII.mjs.map → SyncStatus-6N7JJ7XF.mjs.map} +0 -0
  327. /package/dist/lib/browser/{app-graph-serializer-KTQOBYUF.mjs.map → app-graph-serializer-UZWWGLGY.mjs.map} +0 -0
  328. /package/dist/lib/browser/{chunk-J5F4LUJD.mjs.map → chunk-SSTUPFZ2.mjs.map} +0 -0
  329. /package/dist/lib/browser/{react-root-UYBW5RE7.mjs.map → react-root-OD2HP63B.mjs.map} +0 -0
  330. /package/dist/lib/browser/{settings-2ELVUFDR.mjs.map → settings-RUDP2Q56.mjs.map} +0 -0
  331. /package/dist/lib/node-esm/{CollectionSection-WWKDOAAT.mjs.map → CollectionSection-BI66Y34F.mjs.map} +0 -0
  332. /package/dist/lib/node-esm/{MembersContainer-UQZLW3YA.mjs.map → MembersContainer-4PV3Z4BA.mjs.map} +0 -0
  333. /package/dist/lib/{browser/MenuFooter-HYBTNOBT.mjs.map → node-esm/MenuFooter-PXG2GV6A.mjs.map} +0 -0
  334. /package/dist/lib/node-esm/{ObjectCardStack-UXEWG6RV.mjs.map → ObjectCardStack-457SNNVF.mjs.map} +0 -0
  335. /package/dist/lib/node-esm/{ObjectDetails-26PVHUQL.mjs.map → ObjectDetails-OLF7HSM4.mjs.map} +0 -0
  336. /package/dist/lib/node-esm/{RecordArticle-APY2WKUW.mjs.map → RecordArticle-XUIT25PP.mjs.map} +0 -0
  337. /package/dist/lib/node-esm/{SchemaContainer-XR2D6MYX.mjs.map → SchemaContainer-5G4R3Z6O.mjs.map} +0 -0
  338. /package/dist/lib/node-esm/{SpacePluginSettings-VEB5IGG7.mjs.map → SpacePluginSettings-PENV4GHL.mjs.map} +0 -0
  339. /package/dist/lib/node-esm/{SyncStatus-XTJAVHPN.mjs.map → SyncStatus-YEBGTNSD.mjs.map} +0 -0
  340. /package/dist/lib/node-esm/{app-graph-serializer-GXQYSQAZ.mjs.map → app-graph-serializer-RT2RQTV2.mjs.map} +0 -0
  341. /package/dist/lib/node-esm/{chunk-S2IELCDF.mjs.map → chunk-XYLDAH5C.mjs.map} +0 -0
  342. /package/dist/lib/node-esm/{react-root-UEN3LLJD.mjs.map → react-root-RILC5MBD.mjs.map} +0 -0
  343. /package/dist/lib/node-esm/{settings-DCTVM2BV.mjs.map → settings-3EKSEAAG.mjs.map} +0 -0
  344. /package/dist/types/src/components/{AwaitingObject.d.ts → AwaitingObject/AwaitingObject.d.ts} +0 -0
@@ -17,11 +17,9 @@ import { type ComplexMap } from '@dxos/util';
17
17
 
18
18
  import { meta } from '../meta';
19
19
 
20
- import { TypeInputOptionsAnnotation } from './form';
20
+ export const SPACE_DIRECTORY_HANDLE = `${meta.id}.directory`;
21
21
 
22
- export const SPACE_DIRECTORY_HANDLE = `${meta.id}/directory`;
23
-
24
- export const SPACE_TYPE = 'dxos.org/type/Space';
22
+ export const SPACE_TYPE = 'org.dxos.type.space';
25
23
 
26
24
  export type SpacePluginOptions = {
27
25
  /**
@@ -144,11 +142,11 @@ export const SpaceForm = Schema.Struct({
144
142
  edgeReplication: Schema.optional(Schema.Boolean.annotations({ title: 'Enable EDGE Replication' })),
145
143
  });
146
144
 
147
- const COLLECTION_OPERATION = 'dxos.org/plugin/collection/operation';
145
+ const COLLECTION_OPERATION = 'org.dxos.plugin.collection.operation';
148
146
 
149
147
  export namespace CollectionOperation {
150
148
  export const Create = Operation.make({
151
- meta: { key: `${COLLECTION_OPERATION}/create`, name: 'Create Collection' },
149
+ meta: { key: `${COLLECTION_OPERATION}.create`, name: 'Create Collection' },
152
150
  services: [Capability.Service],
153
151
  schema: {
154
152
  input: Schema.Struct({
@@ -161,7 +159,7 @@ export namespace CollectionOperation {
161
159
  });
162
160
  }
163
161
 
164
- const SPACE_OPERATION = `${meta.id}/operation`;
162
+ const SPACE_OPERATION = `${meta.id}.operation`;
165
163
 
166
164
  /**
167
165
  * Operations for the Space plugin.
@@ -169,7 +167,7 @@ const SPACE_OPERATION = `${meta.id}/operation`;
169
167
  export namespace SpaceOperation {
170
168
  export const Create = Operation.make({
171
169
  meta: {
172
- key: `${SPACE_OPERATION}/create`,
170
+ key: `${SPACE_OPERATION}.create`,
173
171
  name: 'Create Space',
174
172
  description: 'Create a new space.',
175
173
  },
@@ -186,7 +184,7 @@ export namespace SpaceOperation {
186
184
 
187
185
  export const Join = Operation.make({
188
186
  meta: {
189
- key: `${SPACE_OPERATION}/join`,
187
+ key: `${SPACE_OPERATION}.join`,
190
188
  name: 'Join Space',
191
189
  description: 'Join a space via invitation.',
192
190
  },
@@ -202,7 +200,7 @@ export namespace SpaceOperation {
202
200
 
203
201
  export const Open = Operation.make({
204
202
  meta: {
205
- key: `${SPACE_OPERATION}/open`,
203
+ key: `${SPACE_OPERATION}.open`,
206
204
  name: 'Open Space',
207
205
  description: 'Open a space.',
208
206
  },
@@ -217,7 +215,7 @@ export namespace SpaceOperation {
217
215
 
218
216
  export const Close = Operation.make({
219
217
  meta: {
220
- key: `${SPACE_OPERATION}/close`,
218
+ key: `${SPACE_OPERATION}.close`,
221
219
  name: 'Close Space',
222
220
  description: 'Close a space.',
223
221
  },
@@ -232,7 +230,7 @@ export namespace SpaceOperation {
232
230
 
233
231
  export const Share = Operation.make({
234
232
  meta: {
235
- key: `${SPACE_OPERATION}/share`,
233
+ key: `${SPACE_OPERATION}.share`,
236
234
  name: 'Share Space',
237
235
  description: 'Share a space.',
238
236
  },
@@ -252,7 +250,7 @@ export namespace SpaceOperation {
252
250
  // TODO(wittjosiah): This appears to be unused.
253
251
  export const Lock = Operation.make({
254
252
  meta: {
255
- key: `${SPACE_OPERATION}/lock`,
253
+ key: `${SPACE_OPERATION}.lock`,
256
254
  name: 'Lock Space',
257
255
  description: 'Lock a space to prevent modifications.',
258
256
  },
@@ -268,7 +266,7 @@ export namespace SpaceOperation {
268
266
  // TODO(wittjosiah): This appears to be unused.
269
267
  export const Unlock = Operation.make({
270
268
  meta: {
271
- key: `${SPACE_OPERATION}/unlock`,
269
+ key: `${SPACE_OPERATION}.unlock`,
272
270
  name: 'Unlock Space',
273
271
  description: 'Unlock a space to allow modifications.',
274
272
  },
@@ -283,7 +281,7 @@ export namespace SpaceOperation {
283
281
 
284
282
  export const OpenSettings = Operation.make({
285
283
  meta: {
286
- key: `${SPACE_OPERATION}/open-settings`,
284
+ key: `${SPACE_OPERATION}.open-settings`,
287
285
  name: 'Open Space Settings',
288
286
  description: 'Open space settings.',
289
287
  },
@@ -298,7 +296,7 @@ export namespace SpaceOperation {
298
296
 
299
297
  export const WaitForObject = Operation.make({
300
298
  meta: {
301
- key: `${SPACE_OPERATION}/wait-for-object`,
299
+ key: `${SPACE_OPERATION}.wait-for-object`,
302
300
  name: 'Wait For Object',
303
301
  description: 'Wait for an object to be available.',
304
302
  },
@@ -313,7 +311,7 @@ export namespace SpaceOperation {
313
311
 
314
312
  export const AddObject = Operation.make({
315
313
  meta: {
316
- key: `${SPACE_OPERATION}/add-object`,
314
+ key: `${SPACE_OPERATION}.add-object`,
317
315
  name: 'Add Object',
318
316
  description: 'Add an object to a space.',
319
317
  },
@@ -325,6 +323,9 @@ export namespace SpaceOperation {
325
323
  description: 'The database or collection to add to.',
326
324
  }),
327
325
  hidden: Schema.optional(Schema.Boolean),
326
+ targetNodeId: Schema.optional(
327
+ Schema.String.annotations({ description: 'Qualified graph node ID of the target collection.' }),
328
+ ),
328
329
  }),
329
330
  output: Schema.Struct({
330
331
  id: Schema.String,
@@ -350,7 +351,7 @@ export namespace SpaceOperation {
350
351
 
351
352
  export const RemoveObjects = Operation.make({
352
353
  meta: {
353
- key: `${SPACE_OPERATION}/remove-objects`,
354
+ key: `${SPACE_OPERATION}.remove-objects`,
354
355
  name: 'Remove Objects',
355
356
  description: 'Remove objects from a space.',
356
357
  },
@@ -375,7 +376,7 @@ export namespace SpaceOperation {
375
376
 
376
377
  export const DeleteField = Operation.make({
377
378
  meta: {
378
- key: `${SPACE_OPERATION}/delete-field`,
379
+ key: `${SPACE_OPERATION}.delete-field`,
379
380
  name: 'Delete Field',
380
381
  description: 'Delete a field from a view.',
381
382
  },
@@ -391,7 +392,7 @@ export namespace SpaceOperation {
391
392
 
392
393
  export const OpenCreateObject = Operation.make({
393
394
  meta: {
394
- key: `${SPACE_OPERATION}/open-create-object`,
395
+ key: `${SPACE_OPERATION}.open-create-object`,
395
396
  name: 'Open Create Object Dialog',
396
397
  description: 'Open the create object dialog.',
397
398
  },
@@ -405,6 +406,9 @@ export namespace SpaceOperation {
405
406
  typename: Schema.optional(Schema.String),
406
407
  initialFormValues: Schema.optional(Schema.Any),
407
408
  navigable: Schema.optional(Schema.Boolean),
409
+ targetNodeId: Schema.optional(
410
+ Schema.String.annotations({ description: 'Qualified graph node ID of the target collection.' }),
411
+ ),
408
412
  // TODO(wittjosiah): This is a function, is there a better way to handle this?
409
413
  onCreateObject: Schema.optional(Schema.Any),
410
414
  }),
@@ -414,7 +418,7 @@ export namespace SpaceOperation {
414
418
 
415
419
  export const OpenCreateSpace = Operation.make({
416
420
  meta: {
417
- key: `${SPACE_OPERATION}/open-create-space`,
421
+ key: `${SPACE_OPERATION}.open-create-space`,
418
422
  name: 'Open Create Space Dialog',
419
423
  description: 'Open the create space dialog.',
420
424
  },
@@ -427,7 +431,7 @@ export namespace SpaceOperation {
427
431
 
428
432
  export const Migrate = Operation.make({
429
433
  meta: {
430
- key: `${SPACE_OPERATION}/migrate`,
434
+ key: `${SPACE_OPERATION}.migrate`,
431
435
  name: 'Migrate Space',
432
436
  description: 'Migrate a space to a new version.',
433
437
  },
@@ -443,7 +447,7 @@ export namespace SpaceOperation {
443
447
 
444
448
  export const Snapshot = Operation.make({
445
449
  meta: {
446
- key: `${SPACE_OPERATION}/snapshot`,
450
+ key: `${SPACE_OPERATION}.snapshot`,
447
451
  name: 'Create Snapshot',
448
452
  description: 'Create a snapshot of the space.',
449
453
  },
@@ -461,7 +465,7 @@ export namespace SpaceOperation {
461
465
 
462
466
  export const Rename = Operation.make({
463
467
  meta: {
464
- key: `${SPACE_OPERATION}/rename`,
468
+ key: `${SPACE_OPERATION}.rename`,
465
469
  name: 'Rename Space',
466
470
  description: 'Rename a space.',
467
471
  },
@@ -477,7 +481,7 @@ export namespace SpaceOperation {
477
481
 
478
482
  export const RenameObject = Operation.make({
479
483
  meta: {
480
- key: `${SPACE_OPERATION}/rename-object`,
484
+ key: `${SPACE_OPERATION}.rename-object`,
481
485
  name: 'Rename Object',
482
486
  description: 'Rename an object.',
483
487
  },
@@ -493,7 +497,7 @@ export namespace SpaceOperation {
493
497
 
494
498
  export const OpenMembers = Operation.make({
495
499
  meta: {
496
- key: `${SPACE_OPERATION}/open-members`,
500
+ key: `${SPACE_OPERATION}.open-members`,
497
501
  name: 'Open Members',
498
502
  description: 'Open the members panel for a space.',
499
503
  },
@@ -508,7 +512,7 @@ export namespace SpaceOperation {
508
512
 
509
513
  export const GetShareLink = Operation.make({
510
514
  meta: {
511
- key: `${SPACE_OPERATION}/get-share-link`,
515
+ key: `${SPACE_OPERATION}.get-share-link`,
512
516
  name: 'Get Share Link',
513
517
  description: 'Get a shareable link for a space.',
514
518
  },
@@ -525,37 +529,11 @@ export namespace SpaceOperation {
525
529
 
526
530
  export const StoredSchemaForm = Schema.Struct({
527
531
  name: Schema.optional(Schema.String),
528
- typename: Schema.String.pipe(
529
- Schema.annotations({ title: 'Select type (leave blank to create a new type)' }),
530
- TypeInputOptionsAnnotation.set({
531
- location: ['runtime'],
532
- kind: ['user'],
533
- registered: ['unregistered'],
534
- }),
535
- Schema.optional,
536
- ),
537
- });
538
-
539
- export const UseStaticSchema = Operation.make({
540
- meta: {
541
- key: `${SPACE_OPERATION}/use-static-schema`,
542
- name: 'Use Static Schema',
543
- description: 'Use a static schema in the space.',
544
- },
545
- services: [Capability.Service, Plugin.Service],
546
- schema: {
547
- input: Schema.Struct({
548
- db: Database.Database,
549
- typename: Schema.String,
550
- show: Schema.optional(Schema.Boolean),
551
- }),
552
- output: Schema.Struct({}),
553
- },
554
532
  });
555
533
 
556
534
  export const AddSchema = Operation.make({
557
535
  meta: {
558
- key: `${SPACE_OPERATION}/add-schema`,
536
+ key: `${SPACE_OPERATION}.add-schema`,
559
537
  name: 'Add Schema',
560
538
  description: 'Add a schema to the space.',
561
539
  },
@@ -580,7 +558,7 @@ export namespace SpaceOperation {
580
558
 
581
559
  export const AddRelation = Operation.make({
582
560
  meta: {
583
- key: `${SPACE_OPERATION}/add-relation`,
561
+ key: `${SPACE_OPERATION}.add-relation`,
584
562
  name: 'Add Relation',
585
563
  description: 'Add a relation between objects.',
586
564
  },
@@ -604,7 +582,7 @@ export namespace SpaceOperation {
604
582
  // TODO(wittjosiah): This appears to be unused.
605
583
  export const DuplicateObject = Operation.make({
606
584
  meta: {
607
- key: `${SPACE_OPERATION}/duplicate-object`,
585
+ key: `${SPACE_OPERATION}.duplicate-object`,
608
586
  name: 'Duplicate Object',
609
587
  description: 'Duplicate an object.',
610
588
  },
@@ -623,7 +601,7 @@ export namespace SpaceOperation {
623
601
  */
624
602
  export const RestoreField = Operation.make({
625
603
  meta: {
626
- key: `${SPACE_OPERATION}/restore-field`,
604
+ key: `${SPACE_OPERATION}.restore-field`,
627
605
  name: 'Restore Field',
628
606
  description: 'Restore a deleted field to a view.',
629
607
  },
@@ -645,7 +623,7 @@ export namespace SpaceOperation {
645
623
  */
646
624
  export const RestoreObjects = Operation.make({
647
625
  meta: {
648
- key: `${SPACE_OPERATION}/restore-objects`,
626
+ key: `${SPACE_OPERATION}.restore-objects`,
649
627
  name: 'Restore Objects',
650
628
  description: 'Restore deleted objects to a space.',
651
629
  },
package/src/util.ts ADDED
@@ -0,0 +1,82 @@
1
+ //
2
+ // Copyright 2023 DXOS.org
3
+ //
4
+
5
+ import { type Space, SpaceState } from '@dxos/client/echo';
6
+ import { type Database, Obj, Type } from '@dxos/echo';
7
+ import { invariant } from '@dxos/invariant';
8
+ import { Expando } from '@dxos/schema';
9
+ import { type Label } from '@dxos/ui-types';
10
+
11
+ import { meta } from './meta';
12
+
13
+ //
14
+ // Constants
15
+ //
16
+
17
+ const META_NS: { ns: string } = { ns: meta.id };
18
+ const PERSONAL_SPACE_LABEL: Label = ['personal space label', META_NS];
19
+ const UNNAMED_SPACE_LABEL: Label = ['unnamed space label', META_NS];
20
+
21
+ export const SPACES = `${meta.id}-spaces`;
22
+ export const COMPOSER_SPACE_LOCK = `${meta.id}.lock`;
23
+ // TODO(wittjosiah): Remove.
24
+ export const SHARED = 'shared-spaces';
25
+
26
+ //
27
+ // Helpers
28
+ //
29
+
30
+ /** Returns the display label for a space (name, namesCache entry, or fallback). */
31
+ export const getSpaceDisplayName = (
32
+ space: Space,
33
+ { personal, namesCache = {} }: { personal?: boolean; namesCache?: Record<string, string> } = {},
34
+ ): Label => {
35
+ return space.state.get() === SpaceState.SPACE_READY && (space.properties.name?.length ?? 0) > 0
36
+ ? space.properties.name!
37
+ : namesCache[space.id]
38
+ ? namesCache[space.id]
39
+ : personal
40
+ ? PERSONAL_SPACE_LABEL
41
+ : UNNAMED_SPACE_LABEL;
42
+ };
43
+
44
+ //
45
+ // Deprecated
46
+ //
47
+
48
+ /** @deprecated This is a temporary solution. */
49
+ export const getNestedObjects = async (
50
+ object: Obj.Unknown,
51
+ resolve: (typename: string) => Record<string, any>,
52
+ ): Promise<Obj.Unknown[]> => {
53
+ const type = Obj.getTypename(object);
54
+ if (!type) {
55
+ return [];
56
+ }
57
+
58
+ const metadata = resolve(type);
59
+ const loadReferences = metadata?.loadReferences;
60
+ if (typeof loadReferences !== 'function') {
61
+ return [];
62
+ }
63
+
64
+ const objects: Obj.Unknown[] = await loadReferences(object);
65
+ const nested = await Promise.all(objects.map((object) => getNestedObjects(object, resolve)));
66
+ return [...objects, ...nested.flat()];
67
+ };
68
+
69
+ /** @deprecated Workaround for ECHO not supporting clone. */
70
+ export const cloneObject = async (
71
+ object: Obj.Unknown,
72
+ resolve: (typename: string) => Record<string, any>,
73
+ newDb: Database.Database,
74
+ ): Promise<Obj.Unknown> => {
75
+ const schema = Obj.getSchema(object);
76
+ const typename = schema ? (Type.getTypename(schema) ?? Expando.Expando.typename) : Expando.Expando.typename;
77
+ const metadata = resolve(typename);
78
+ const serializer = metadata.serializer;
79
+ invariant(serializer, `No serializer for type: ${typename}`);
80
+ const content = await serializer.serialize({ object });
81
+ return serializer.deserialize({ content, db: newDb, newId: true });
82
+ };
@@ -1,7 +0,0 @@
1
- {
2
- "version": 3,
3
- "sources": ["../../../src/containers/CollectionArticle/CollectionArticle.tsx", "../../../src/containers/CollectionArticle/index.ts"],
4
- "sourcesContent": ["//\n// Copyright 2025 DXOS.org\n//\n\nimport React, { useCallback, useMemo } from 'react';\n\nimport { useCapabilities, useOperationInvoker } from '@dxos/app-framework/ui';\nimport { AppCapabilities, LayoutOperation } from '@dxos/app-toolkit';\nimport { type SurfaceComponentProps } from '@dxos/app-toolkit/ui';\nimport { Feed, Filter, Obj } from '@dxos/echo';\nimport { type Collection } from '@dxos/echo';\nimport { useClient } from '@dxos/react-client';\nimport { getSpace, useQuery } from '@dxos/react-client/echo';\nimport { Panel, ScrollArea, Toolbar, toLocalizedString, useTranslation } from '@dxos/react-ui';\nimport { Card } from '@dxos/react-ui';\nimport { Mosaic, type MosaicStackTileComponent } from '@dxos/react-ui-mosaic';\nimport { SearchList, useSearchListResults } from '@dxos/react-ui-searchlist';\nimport { ManagedCollection } from '@dxos/schema';\nimport { getStyles } from '@dxos/ui-theme';\n\nimport { meta } from '../../meta';\n\n/**\n * Hook to resolve metadata (icon, iconHue, etc.) for objects based on their typename.\n */\nconst useMetadataResolver = () => {\n const allMetadata = useCapabilities(AppCapabilities.Metadata);\n return useCallback((typename: string) => allMetadata.find((m) => m.id === typename)?.metadata ?? {}, [allMetadata]);\n};\n\n/**\n * Article view for collections.\n */\nexport const CollectionArticle = ({\n subject,\n}: SurfaceComponentProps<Collection.Collection | ManagedCollection.ManagedCollection>) => {\n const { t } = useTranslation(meta.id);\n const resolveMetadata = useMetadataResolver();\n const { items, handleSearch } = useCollectionItems(subject, resolveMetadata);\n\n return (\n <SearchList.Root onSearch={handleSearch}>\n <Panel.Root className='dx-article'>\n <Panel.Toolbar asChild>\n <Toolbar.Root>\n <SearchList.Input placeholder={t('search placeholder')} />\n </Toolbar.Root>\n </Panel.Toolbar>\n <Panel.Content asChild>\n <SearchList.Content>\n <Mosaic.Container asChild>\n <ScrollArea.Root orientation='vertical'>\n <ScrollArea.Viewport classNames='p-2'>\n <Mosaic.Stack items={items} getId={(item) => item.id} Tile={ObjectTile} />\n </ScrollArea.Viewport>\n </ScrollArea.Root>\n </Mosaic.Container>\n </SearchList.Content>\n </Panel.Content>\n </Panel.Root>\n </SearchList.Root>\n );\n};\n\ntype ObjectItem = {\n id: string;\n object: Obj.Unknown;\n icon: string;\n iconHue?: string;\n};\n\nconst ObjectTile: MosaicStackTileComponent<ObjectItem> = (props) => {\n const item = props.data;\n const { t } = useTranslation(meta.id);\n const { invokeSync } = useOperationInvoker();\n\n const typename = Obj.getTypename(item.object) ?? '';\n const label =\n Obj.getLabel(item.object) ??\n toLocalizedString(['object name placeholder', { ns: typename, defaultValue: item.id }], t);\n const styles = item.iconHue ? getStyles(item.iconHue) : undefined;\n\n const handleClick = () => {\n invokeSync(LayoutOperation.Open, { subject: [item.id] });\n };\n\n return (\n <Card.Root fullWidth>\n <Card.Toolbar>\n <Card.ToolbarIconButton\n variant='ghost'\n label={label}\n icon={item.icon}\n iconOnly\n iconClassNames={styles?.surfaceText}\n />\n <Card.Title onClick={handleClick}>{label}</Card.Title>\n <Card.Menu />\n </Card.Toolbar>\n </Card.Root>\n );\n};\n\n/**\n * Hook to get items from a regular collection.\n */\nconst useRegularCollectionItems = (collection: Collection.Collection): Obj.Unknown[] => {\n return useMemo(\n () => (collection.objects ?? []).map((ref) => ref.target).filter((obj): obj is Obj.Unknown => Obj.isObject(obj)),\n [collection.objects],\n );\n};\n\n/**\n * Hook to get items from a managed collection by querying the space.\n */\nconst useManagedCollectionItems = (collection: ManagedCollection.ManagedCollection): Obj.Unknown[] => {\n const client = useClient();\n const space = getSpace(collection);\n const [typename, feedKind] = collection.key.split('~');\n\n const schema = useMemo(\n () => client.graph.schemaRegistry.query({ typename, location: ['runtime'] }).runSync()[0],\n [client, typename],\n );\n\n const filter = useMemo(\n () =>\n typename === Feed.Feed.typename\n ? Filter.type(Feed.Feed, { kind: feedKind })\n : schema\n ? Filter.type(schema)\n : Filter.nothing(),\n [typename, schema, feedKind],\n );\n\n return useQuery(space?.db, filter);\n};\n\ntype MetadataResolver = (typename: string) => { icon?: string; iconHue?: string };\n\n/**\n * Combined hook to get collection items with search/filter support.\n */\nconst useCollectionItems = (\n collection: Collection.Collection | ManagedCollection.ManagedCollection,\n resolveMetadata: MetadataResolver,\n) => {\n const isManaged = Obj.instanceOf(ManagedCollection.ManagedCollection, collection);\n\n // Call both hooks unconditionally to satisfy React's rules of hooks.\n const regularObjects = useRegularCollectionItems(collection as Collection.Collection);\n const managedObjects = useManagedCollectionItems(collection as ManagedCollection.ManagedCollection);\n\n const objects = isManaged ? managedObjects : regularObjects;\n\n // Convert objects to items with resolved metadata.\n const items = useMemo(\n () =>\n objects.map((obj) => {\n const typename = Obj.getTypename(obj);\n const metadata = typename ? resolveMetadata(typename) : {};\n return {\n id: Obj.getDXN(obj).toString(),\n object: obj,\n icon: metadata.icon ?? 'ph--placeholder--regular',\n iconHue: metadata.iconHue,\n } satisfies ObjectItem;\n }),\n [objects, resolveMetadata],\n );\n\n // Use searchlist results for filtering.\n const { results, handleSearch } = useSearchListResults({\n items,\n extract: (item) => Obj.getLabel(item.object) ?? item.id,\n });\n\n return { items: results, handleSearch };\n};\n", "//\n// Copyright 2025 DXOS.org\n//\n\nimport { CollectionArticle } from './CollectionArticle';\n\nexport default CollectionArticle;\n"],
5
- "mappings": ";;;;;AAIA,OAAOA,SAASC,aAAaC,eAAe;AAE5C,SAASC,iBAAiBC,2BAA2B;AACrD,SAASC,iBAAiBC,uBAAuB;AAEjD,SAASC,MAAMC,QAAQC,WAAW;AAElC,SAASC,iBAAiB;AAC1B,SAASC,UAAUC,gBAAgB;AACnC,SAASC,OAAOC,YAAYC,SAASC,mBAAmBC,sBAAsB;AAC9E,SAASC,YAAY;AACrB,SAASC,cAA6C;AACtD,SAASC,YAAYC,4BAA4B;AACjD,SAASC,yBAAyB;AAClC,SAASC,iBAAiB;AAO1B,IAAMC,sBAAsB,MAAA;AAC1B,QAAMC,cAAcC,gBAAgBC,gBAAgBC,QAAQ;AAC5D,SAAOC,YAAY,CAACC,aAAqBL,YAAYM,KAAK,CAACC,MAAMA,EAAEC,OAAOH,QAAAA,GAAWI,YAAY,CAAC,GAAG;IAACT;GAAY;AACpH;AAKO,IAAMU,oBAAoB,CAAC,EAChCC,QAAO,MAC4E;AACnF,QAAM,EAAEC,EAAC,IAAKC,eAAeC,KAAKN,EAAE;AACpC,QAAMO,kBAAkBhB,oBAAAA;AACxB,QAAM,EAAEiB,OAAOC,aAAY,IAAKC,mBAAmBP,SAASI,eAAAA;AAE5D,SACE,sBAAA,cAACI,WAAWC,MAAI;IAACC,UAAUJ;KACzB,sBAAA,cAACK,MAAMF,MAAI;IAACG,WAAU;KACpB,sBAAA,cAACD,MAAME,SAAO;IAACC,SAAAA;KACb,sBAAA,cAACD,QAAQJ,MAAI,MACX,sBAAA,cAACD,WAAWO,OAAK;IAACC,aAAaf,EAAE,oBAAA;QAGrC,sBAAA,cAACU,MAAMM,SAAO;IAACH,SAAAA;KACb,sBAAA,cAACN,WAAWS,SAAO,MACjB,sBAAA,cAACC,OAAOC,WAAS;IAACL,SAAAA;KAChB,sBAAA,cAACM,WAAWX,MAAI;IAACY,aAAY;KAC3B,sBAAA,cAACD,WAAWE,UAAQ;IAACC,YAAW;KAC9B,sBAAA,cAACL,OAAOM,OAAK;IAACnB;IAAcoB,OAAO,CAACC,SAASA,KAAK7B;IAAI8B,MAAMC;;AAS9E;AASA,IAAMA,aAAmD,CAACC,UAAAA;AACxD,QAAMH,OAAOG,MAAMC;AACnB,QAAM,EAAE7B,EAAC,IAAKC,eAAeC,KAAKN,EAAE;AACpC,QAAM,EAAEkC,WAAU,IAAKC,oBAAAA;AAEvB,QAAMtC,WAAWuC,IAAIC,YAAYR,KAAKS,MAAM,KAAK;AACjD,QAAMC,QACJH,IAAII,SAASX,KAAKS,MAAM,KACxBG,kBAAkB;IAAC;IAA2B;MAAEC,IAAI7C;MAAU8C,cAAcd,KAAK7B;IAAG;KAAII,CAAAA;AAC1F,QAAMwC,SAASf,KAAKgB,UAAUC,UAAUjB,KAAKgB,OAAO,IAAIE;AAExD,QAAMC,cAAc,MAAA;AAClBd,eAAWe,gBAAgBC,MAAM;MAAE/C,SAAS;QAAC0B,KAAK7B;;IAAI,CAAA;EACxD;AAEA,SACE,sBAAA,cAACmD,KAAKvC,MAAI;IAACwC,WAAAA;KACT,sBAAA,cAACD,KAAKnC,SAAO,MACX,sBAAA,cAACmC,KAAKE,mBAAiB;IACrBC,SAAQ;IACRf;IACAgB,MAAM1B,KAAK0B;IACXC,UAAAA;IACAC,gBAAgBb,QAAQc;MAE1B,sBAAA,cAACP,KAAKQ,OAAK;IAACC,SAASZ;KAAcT,KAAAA,GACnC,sBAAA,cAACY,KAAKU,MAAI,IAAA,CAAA,CAAA;AAIlB;AAKA,IAAMC,4BAA4B,CAACC,eAAAA;AACjC,SAAOC,QACL,OAAOD,WAAWE,WAAW,CAAA,GAAIC,IAAI,CAACC,QAAQA,IAAIC,MAAM,EAAEC,OAAO,CAACC,QAA4BlC,IAAImC,SAASD,GAAAA,CAAAA,GAC3G;IAACP,WAAWE;GAAQ;AAExB;AAKA,IAAMO,4BAA4B,CAACT,eAAAA;AACjC,QAAMU,SAASC,UAAAA;AACf,QAAMC,QAAQC,SAASb,UAAAA;AACvB,QAAM,CAAClE,UAAUgF,QAAAA,IAAYd,WAAWe,IAAIC,MAAM,GAAA;AAElD,QAAMC,SAAShB,QACb,MAAMS,OAAOQ,MAAMC,eAAeC,MAAM;IAAEtF;IAAUuF,UAAU;MAAC;;EAAW,CAAA,EAAGC,QAAO,EAAG,CAAA,GACvF;IAACZ;IAAQ5E;GAAS;AAGpB,QAAMwE,SAASL,QACb,MACEnE,aAAayF,KAAKA,KAAKzF,WACnB0F,OAAOC,KAAKF,KAAKA,MAAM;IAAEG,MAAMZ;EAAS,CAAA,IACxCG,SACEO,OAAOC,KAAKR,MAAAA,IACZO,OAAOG,QAAO,GACtB;IAAC7F;IAAUmF;IAAQH;GAAS;AAG9B,SAAOc,SAAShB,OAAOiB,IAAIvB,MAAAA;AAC7B;AAOA,IAAM3D,qBAAqB,CACzBqD,YACAxD,oBAAAA;AAEA,QAAMsF,YAAYzD,IAAI0D,WAAWC,kBAAkBA,mBAAmBhC,UAAAA;AAGtE,QAAMiC,iBAAiBlC,0BAA0BC,UAAAA;AACjD,QAAMkC,iBAAiBzB,0BAA0BT,UAAAA;AAEjD,QAAME,UAAU4B,YAAYI,iBAAiBD;AAG7C,QAAMxF,QAAQwD,QACZ,MACEC,QAAQC,IAAI,CAACI,QAAAA;AACX,UAAMzE,WAAWuC,IAAIC,YAAYiC,GAAAA;AACjC,UAAMrE,WAAWJ,WAAWU,gBAAgBV,QAAAA,IAAY,CAAC;AACzD,WAAO;MACLG,IAAIoC,IAAI8D,OAAO5B,GAAAA,EAAK6B,SAAQ;MAC5B7D,QAAQgC;MACRf,MAAMtD,SAASsD,QAAQ;MACvBV,SAAS5C,SAAS4C;IACpB;EACF,CAAA,GACF;IAACoB;IAAS1D;GAAgB;AAI5B,QAAM,EAAE6F,SAAS3F,aAAY,IAAK4F,qBAAqB;IACrD7F;IACA8F,SAAS,CAACzE,SAASO,IAAII,SAASX,KAAKS,MAAM,KAAKT,KAAK7B;EACvD,CAAA;AAEA,SAAO;IAAEQ,OAAO4F;IAAS3F;EAAa;AACxC;;;AC7KA,IAAA,4BAAe8F;",
6
- "names": ["React", "useCallback", "useMemo", "useCapabilities", "useOperationInvoker", "AppCapabilities", "LayoutOperation", "Feed", "Filter", "Obj", "useClient", "getSpace", "useQuery", "Panel", "ScrollArea", "Toolbar", "toLocalizedString", "useTranslation", "Card", "Mosaic", "SearchList", "useSearchListResults", "ManagedCollection", "getStyles", "useMetadataResolver", "allMetadata", "useCapabilities", "AppCapabilities", "Metadata", "useCallback", "typename", "find", "m", "id", "metadata", "CollectionArticle", "subject", "t", "useTranslation", "meta", "resolveMetadata", "items", "handleSearch", "useCollectionItems", "SearchList", "Root", "onSearch", "Panel", "className", "Toolbar", "asChild", "Input", "placeholder", "Content", "Mosaic", "Container", "ScrollArea", "orientation", "Viewport", "classNames", "Stack", "getId", "item", "Tile", "ObjectTile", "props", "data", "invokeSync", "useOperationInvoker", "Obj", "getTypename", "object", "label", "getLabel", "toLocalizedString", "ns", "defaultValue", "styles", "iconHue", "getStyles", "undefined", "handleClick", "LayoutOperation", "Open", "Card", "fullWidth", "ToolbarIconButton", "variant", "icon", "iconOnly", "iconClassNames", "surfaceText", "Title", "onClick", "Menu", "useRegularCollectionItems", "collection", "useMemo", "objects", "map", "ref", "target", "filter", "obj", "isObject", "useManagedCollectionItems", "client", "useClient", "space", "getSpace", "feedKind", "key", "split", "schema", "graph", "schemaRegistry", "query", "location", "runSync", "Feed", "Filter", "type", "kind", "nothing", "useQuery", "db", "isManaged", "instanceOf", "ManagedCollection", "regularObjects", "managedObjects", "getDXN", "toString", "results", "useSearchListResults", "extract", "CollectionArticle"]
7
- }
@@ -1,7 +0,0 @@
1
- {
2
- "version": 3,
3
- "sources": ["../../../src/containers/CreateObjectDialog/CreateObjectDialog.tsx", "../../../src/containers/CreateObjectDialog/index.ts"],
4
- "sourcesContent": ["//\n// Copyright 2024 DXOS.org\n//\n\nimport * as Effect from 'effect/Effect';\nimport * as Option from 'effect/Option';\nimport React, { useCallback, useMemo, useRef, useState } from 'react';\n\nimport { Capability } from '@dxos/app-framework';\nimport { useOperationInvoker, usePluginManager } from '@dxos/app-framework/ui';\nimport { AppCapabilities, LayoutOperation } from '@dxos/app-toolkit';\nimport { Database, Obj, Type } from '@dxos/echo';\nimport { type Collection } from '@dxos/echo';\nimport { runAndForwardErrors } from '@dxos/effect';\nimport { invariant } from '@dxos/invariant';\nimport { Operation } from '@dxos/operation';\nimport { useClient } from '@dxos/react-client';\nimport { useSpaces } from '@dxos/react-client/echo';\nimport { Dialog, useTranslation } from '@dxos/react-ui';\nimport { ViewAnnotation } from '@dxos/schema';\n\nimport {\n type CreateObjectOption,\n CreateObjectPanel,\n type CreateObjectPanelProps,\n type Metadata,\n} from '../../components';\nimport { meta } from '../../meta';\nimport { SpaceOperation } from '../../types';\n\nexport const CREATE_OBJECT_DIALOG = `${meta.id}/CreateObjectDialog`;\n\nexport type CreateObjectDialogProps = Pick<CreateObjectPanelProps, 'target' | 'typename' | 'initialFormValues'> & {\n views?: boolean;\n onCreateObject?: (object: Obj.Unknown) => void;\n shouldNavigate?: (object: Obj.Unknown) => boolean;\n};\n\nexport const CreateObjectDialog = ({\n target: initialTarget,\n typename: initialTypename,\n views,\n initialFormValues,\n onCreateObject,\n shouldNavigate: _shouldNavigate,\n}: CreateObjectDialogProps) => {\n const manager = usePluginManager();\n const { t } = useTranslation(meta.id);\n const operationInvoker = useOperationInvoker();\n const [target, setTarget] = useState<Database.Database | Collection.Collection | undefined>(initialTarget);\n const [typename, setTypename] = useState<string | undefined>(initialTypename);\n const client = useClient();\n const spaces = useSpaces();\n const closeRef = useRef<HTMLButtonElement | null>(null);\n\n const resolve = useCallback<NonNullable<CreateObjectPanelProps['resolve']>>(\n (id) => {\n const metadata = manager.capabilities\n .getAll(AppCapabilities.Metadata)\n .find(({ id: entryId }) => entryId === id)?.metadata;\n return metadata?.createObject ? (metadata as Metadata) : undefined;\n },\n [manager],\n );\n\n const db = Database.isDatabase(target) ? target : target && Obj.getDatabase(target);\n // TODO(wittjosiah): Support database schemas.\n const schemas = db?.schemaRegistry.query({ location: ['runtime'], includeSystem: false }).runSync();\n\n const viewTypenames = useMemo(() => {\n const set = new Set<string>();\n for (const schema of schemas ?? []) {\n if (ViewAnnotation.get(schema).pipe(Option.getOrElse(() => false))) {\n set.add(Type.getTypename(schema));\n }\n }\n return set;\n }, [schemas]);\n\n const options = useMemo<CreateObjectOption[]>(\n () =>\n manager.capabilities\n .getAll(AppCapabilities.Metadata)\n .filter((entry) => entry.metadata?.createObject)\n .filter((entry) => (views === true ? viewTypenames.has(entry.id) : !viewTypenames.has(entry.id)))\n .map((entry) => ({\n id: entry.id,\n label: t('typename label', { ns: entry.id, defaultValue: entry.id }),\n icon: entry.metadata?.icon,\n })),\n [manager, views, viewTypenames, t],\n );\n\n const handleCreateObject = useCallback<NonNullable<CreateObjectPanelProps['onCreateObject']>>(\n ({ metadata, data = {} }) =>\n Effect.gen(function* () {\n if (!target) {\n // TODO(wittjosiah): UI feedback.\n return;\n }\n\n // NOTE: Must close before navigating or attention won't follow object.\n closeRef.current?.click();\n\n const db = Database.isDatabase(target) ? target : target && Obj.getDatabase(target);\n invariant(db, 'Missing database');\n const object = yield* metadata.createObject(data, { db });\n if (Obj.isObject(object) && !Obj.instanceOf(Type.PersistentType, object)) {\n // TODO(wittjosiah): Selection in navtree isn't working as expected when hidden typenames evals to true.\n const hidden = !metadata.addToCollectionOnCreate;\n yield* operationInvoker.invoke(SpaceOperation.AddObject, {\n target,\n object,\n hidden,\n });\n const shouldNavigate = _shouldNavigate ?? (() => true);\n if (shouldNavigate(object)) {\n yield* operationInvoker.invoke(LayoutOperation.Open, {\n subject: [Obj.getDXN(object).toString()],\n });\n }\n\n onCreateObject?.(object);\n }\n }).pipe(\n Effect.provideService(Capability.Service, manager.capabilities),\n Effect.provideService(Operation.Service, operationInvoker),\n runAndForwardErrors,\n ),\n [target, _shouldNavigate, onCreateObject, manager.capabilities, operationInvoker],\n );\n\n return (\n <Dialog.Content>\n <Dialog.Header>\n <Dialog.Title>\n {t('create object dialog title', {\n object: t('typename label', {\n ns: typename,\n defaultValue: views ? 'View' : 'Object',\n }),\n })}\n </Dialog.Title>\n <Dialog.Close asChild>\n <Dialog.CloseIconButton ref={closeRef} />\n </Dialog.Close>\n </Dialog.Header>\n <Dialog.Body>\n <CreateObjectPanel\n options={options}\n spaces={spaces}\n target={target}\n typename={typename}\n initialFormValues={initialFormValues}\n defaultSpaceId={client.spaces.default.id}\n resolve={resolve}\n onTargetChange={setTarget}\n onTypenameChange={setTypename}\n onCreateObject={handleCreateObject}\n />\n </Dialog.Body>\n </Dialog.Content>\n );\n};\n", "//\n// Copyright 2024 DXOS.org\n//\n\nimport { CreateObjectDialog } from './CreateObjectDialog';\n\nexport default CreateObjectDialog;\n"],
5
- "mappings": "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",
6
- "names": ["Effect", "Option", "React", "useCallback", "useMemo", "useRef", "useState", "Capability", "useOperationInvoker", "usePluginManager", "AppCapabilities", "LayoutOperation", "Database", "Obj", "Type", "runAndForwardErrors", "invariant", "Operation", "useClient", "useSpaces", "Dialog", "useTranslation", "ViewAnnotation", "CREATE_OBJECT_DIALOG", "meta", "id", "CreateObjectDialog", "target", "initialTarget", "typename", "initialTypename", "views", "initialFormValues", "onCreateObject", "shouldNavigate", "_shouldNavigate", "manager", "usePluginManager", "t", "useTranslation", "operationInvoker", "useOperationInvoker", "setTarget", "useState", "setTypename", "client", "useClient", "spaces", "useSpaces", "closeRef", "useRef", "resolve", "useCallback", "metadata", "capabilities", "getAll", "AppCapabilities", "Metadata", "find", "entryId", "createObject", "undefined", "db", "Database", "isDatabase", "Obj", "getDatabase", "schemas", "schemaRegistry", "query", "location", "includeSystem", "runSync", "viewTypenames", "useMemo", "set", "Set", "schema", "ViewAnnotation", "get", "pipe", "getOrElse", "add", "Type", "getTypename", "options", "filter", "entry", "has", "map", "label", "ns", "defaultValue", "icon", "handleCreateObject", "data", "gen", "current", "click", "invariant", "object", "isObject", "instanceOf", "PersistentType", "hidden", "addToCollectionOnCreate", "invoke", "SpaceOperation", "AddObject", "LayoutOperation", "Open", "subject", "getDXN", "toString", "provideService", "Capability", "Service", "Operation", "runAndForwardErrors", "Dialog", "Content", "Header", "Title", "Close", "asChild", "CloseIconButton", "ref", "Body", "CreateObjectPanel", "defaultSpaceId", "default", "onTargetChange", "onTypenameChange", "CreateObjectDialog"]
7
- }
@@ -1,7 +0,0 @@
1
- {
2
- "version": 3,
3
- "sources": ["../../../src/containers/CreateSpaceDialog/CreateSpaceDialog.tsx", "../../../src/containers/CreateSpaceDialog/index.ts"],
4
- "sourcesContent": ["//\n// Copyright 2024 DXOS.org\n//\n\nimport * as Effect from 'effect/Effect';\nimport type * as Schema from 'effect/Schema';\nimport React, { useCallback, useRef } from 'react';\n\nimport { useOperationInvoker } from '@dxos/app-framework/ui';\nimport { LayoutOperation } from '@dxos/app-toolkit';\nimport { runAndForwardErrors } from '@dxos/effect';\nimport { Dialog, useTranslation } from '@dxos/react-ui';\nimport { Form } from '@dxos/react-ui-form';\n\nimport { useInputSurfaceLookup } from '../../hooks';\nimport { meta } from '../../meta';\nimport { SpaceForm, SpaceOperation } from '../../types';\n\nexport const CREATE_SPACE_DIALOG = `${meta.id}/CreateSpaceDialog`;\n\ntype FormValues = Schema.Schema.Type<typeof SpaceForm>;\nconst initialValues: FormValues = { edgeReplication: true };\n\nexport const CreateSpaceDialog = () => {\n const closeRef = useRef<HTMLButtonElement | null>(null);\n const { t } = useTranslation(meta.id);\n const { invokePromise } = useOperationInvoker();\n\n const inputSurfaceLookup = useInputSurfaceLookup();\n\n const handleCreateSpace = useCallback(\n async (data: FormValues) => {\n const program = Effect.gen(function* () {\n const { data: result } = yield* Effect.promise(() => invokePromise(SpaceOperation.Create, data));\n if (result?.space) {\n yield* Effect.promise(() => invokePromise(LayoutOperation.SwitchWorkspace, { subject: result.space.id }));\n yield* Effect.promise(() => invokePromise(LayoutOperation.UpdateDialog, { state: false }));\n }\n });\n await runAndForwardErrors(program);\n },\n [invokePromise],\n );\n\n return (\n <Dialog.Content>\n <Dialog.Header>\n <Dialog.Title>{t('create space dialog title')}</Dialog.Title>\n <Dialog.Close asChild>\n <Dialog.CloseIconButton ref={closeRef} />\n </Dialog.Close>\n </Dialog.Header>\n <Form.Root\n testId='create-space-form'\n autoFocus\n schema={SpaceForm}\n defaultValues={initialValues}\n fieldProvider={inputSurfaceLookup}\n onSave={handleCreateSpace}\n >\n <Form.Viewport>\n <Form.Content>\n <Form.FieldSet />\n <Form.Submit />\n </Form.Content>\n </Form.Viewport>\n </Form.Root>\n </Dialog.Content>\n );\n};\n", "//\n// Copyright 2024 DXOS.org\n//\n\nimport { CreateSpaceDialog } from './CreateSpaceDialog';\n\nexport default CreateSpaceDialog;\n"],
5
- "mappings": ";;;;;;;;;;;;AAIA,YAAYA,YAAY;AAExB,OAAOC,SAASC,aAAaC,cAAc;AAE3C,SAASC,2BAA2B;AACpC,SAASC,uBAAuB;AAChC,SAASC,2BAA2B;AACpC,SAASC,QAAQC,sBAAsB;AACvC,SAASC,YAAY;AAMd,IAAMC,sBAAsB,GAAGC,KAAKC,EAAE;AAG7C,IAAMC,gBAA4B;EAAEC,iBAAiB;AAAK;AAEnD,IAAMC,oBAAoB,MAAA;AAC/B,QAAMC,WAAWC,OAAiC,IAAA;AAClD,QAAM,EAAEC,EAAC,IAAKC,eAAeR,KAAKC,EAAE;AACpC,QAAM,EAAEQ,cAAa,IAAKC,oBAAAA;AAE1B,QAAMC,qBAAqBC,sBAAAA;AAE3B,QAAMC,oBAAoBC,YACxB,OAAOC,SAAAA;AACL,UAAMC,UAAiBC,WAAI,aAAA;AACzB,YAAM,EAAEF,MAAMG,OAAM,IAAK,OAAcC,eAAQ,MAAMV,cAAcW,eAAeC,QAAQN,IAAAA,CAAAA;AAC1F,UAAIG,QAAQI,OAAO;AACjB,eAAcH,eAAQ,MAAMV,cAAcc,gBAAgBC,iBAAiB;UAAEC,SAASP,OAAOI,MAAMrB;QAAG,CAAA,CAAA;AACtG,eAAckB,eAAQ,MAAMV,cAAcc,gBAAgBG,cAAc;UAAEC,OAAO;QAAM,CAAA,CAAA;MACzF;IACF,CAAA;AACA,UAAMC,oBAAoBZ,OAAAA;EAC5B,GACA;IAACP;GAAc;AAGjB,SACE,sBAAA,cAACoB,OAAOC,SAAO,MACb,sBAAA,cAACD,OAAOE,QAAM,MACZ,sBAAA,cAACF,OAAOG,OAAK,MAAEzB,EAAE,2BAAA,CAAA,GACjB,sBAAA,cAACsB,OAAOI,OAAK;IAACC,SAAAA;KACZ,sBAAA,cAACL,OAAOM,iBAAe;IAACC,KAAK/B;QAGjC,sBAAA,cAACgC,KAAKC,MAAI;IACRC,QAAO;IACPC,WAAAA;IACAC,QAAQC;IACRC,eAAezC;IACf0C,eAAejC;IACfkC,QAAQhC;KAER,sBAAA,cAACwB,KAAKS,UAAQ,MACZ,sBAAA,cAACT,KAAKP,SAAO,MACX,sBAAA,cAACO,KAAKU,UAAQ,IAAA,GACd,sBAAA,cAACV,KAAKW,QAAM,IAAA,CAAA,CAAA,CAAA,CAAA;AAMxB;;;AC/DA,IAAA,4BAAeC;",
6
- "names": ["Effect", "React", "useCallback", "useRef", "useOperationInvoker", "LayoutOperation", "runAndForwardErrors", "Dialog", "useTranslation", "Form", "CREATE_SPACE_DIALOG", "meta", "id", "initialValues", "edgeReplication", "CreateSpaceDialog", "closeRef", "useRef", "t", "useTranslation", "invokePromise", "useOperationInvoker", "inputSurfaceLookup", "useInputSurfaceLookup", "handleCreateSpace", "useCallback", "data", "program", "gen", "result", "promise", "SpaceOperation", "Create", "space", "LayoutOperation", "SwitchWorkspace", "subject", "UpdateDialog", "state", "runAndForwardErrors", "Dialog", "Content", "Header", "Title", "Close", "asChild", "CloseIconButton", "ref", "Form", "Root", "testId", "autoFocus", "schema", "SpaceForm", "defaultValues", "fieldProvider", "onSave", "Viewport", "FieldSet", "Submit", "CreateSpaceDialog"]
7
- }
@@ -1,7 +0,0 @@
1
- {
2
- "version": 3,
3
- "sources": ["../../../src/containers/InlineSyncStatus/InlineSyncStatus.tsx", "../../../src/containers/InlineSyncStatus/index.ts"],
4
- "sourcesContent": ["//\n// Copyright 2024 DXOS.org\n//\n\nimport * as Option from 'effect/Option';\nimport React, { useEffect, useState } from 'react';\n\nimport { useAppGraph } from '@dxos/app-toolkit/ui';\nimport { EdgeStatus } from '@dxos/protocols/proto/dxos/client/services';\nimport { EdgeReplicationSetting } from '@dxos/protocols/proto/dxos/echo/metadata';\nimport { useClient } from '@dxos/react-client';\nimport { type Space, useSpaceSyncState } from '@dxos/react-client/echo';\nimport { Tooltip, useTranslation } from '@dxos/react-ui';\nimport { AttentionGlyph, useAttended, useAttention } from '@dxos/react-ui-attention';\n\nimport { usePath } from '../../hooks';\nimport { meta } from '../../meta';\n\nconst useEdgeStatus = (): EdgeStatus.ConnectionState => {\n const [status, setStatus] = useState(EdgeStatus.ConnectionState.NOT_CONNECTED);\n const client = useClient();\n useEffect(() => {\n client.services.services.EdgeAgentService?.queryEdgeStatus().subscribe(({ status }) => {\n setStatus(status.state);\n });\n }, [client]);\n\n return status;\n};\n\nexport const InlineSyncStatus = ({ space, open }: { space: Space; open?: boolean }) => {\n const { t } = useTranslation(meta.id);\n const id = space.id;\n const { hasAttention, isAncestor, isRelated } = useAttention(id);\n const isAttended = hasAttention || isAncestor || isRelated;\n\n // TODO(wittjosiah): If the attended node is deep in the graph and the graph is not fully loaded\n // this will result in an empty path until the graph is connected.\n // TODO(wittjosiah): Consider using this indicator for all open nodes instead of just attended.\n const { graph } = useAppGraph();\n const attended = useAttended();\n const startOfAttention = attended.at(-1);\n const path = usePath(graph, startOfAttention);\n const containsAttended = !open && !isAttended && id && Option.isSome(path) ? path.value.includes(id) : false;\n\n const connectedToEdge = useEdgeStatus() === EdgeStatus.ConnectionState.CONNECTED;\n // TODO(wittjosiah): This is not reactive.\n const edgeSyncEnabled = space.internal.data.edgeReplication === EdgeReplicationSetting.ENABLED;\n const syncState = useSpaceSyncState(space);\n const syncing = connectedToEdge && edgeSyncEnabled && syncState && syncState.missingOnLocal > 0;\n\n return (\n <Tooltip.Trigger asChild content={t('syncing label')} side='bottom'>\n <AttentionGlyph\n syncing={syncing}\n attended={isAttended}\n containsAttended={containsAttended}\n classNames='self-center mx-1'\n />\n </Tooltip.Trigger>\n );\n};\n", "//\n// Copyright 2024 DXOS.org\n//\n\nimport { InlineSyncStatus } from './InlineSyncStatus';\n\nexport default InlineSyncStatus;\n"],
5
- "mappings": ";;;;;;;;;AAIA,YAAYA,YAAY;AACxB,OAAOC,SAASC,WAAWC,gBAAgB;AAE3C,SAASC,mBAAmB;AAC5B,SAASC,kBAAkB;AAC3B,SAASC,8BAA8B;AACvC,SAASC,iBAAiB;AAC1B,SAAqBC,yBAAyB;AAC9C,SAASC,SAASC,sBAAsB;AACxC,SAASC,gBAAgBC,aAAaC,oBAAoB;AAK1D,IAAMC,gBAAgB,MAAA;AACpB,QAAM,CAACC,QAAQC,SAAAA,IAAaC,SAASC,WAAWC,gBAAgBC,aAAa;AAC7E,QAAMC,SAASC,UAAAA;AACfC,YAAU,MAAA;AACRF,WAAOG,SAASA,SAASC,kBAAkBC,gBAAAA,EAAkBC,UAAU,CAAC,EAAEZ,QAAAA,QAAM,MAAE;AAChFC,gBAAUD,QAAOa,KAAK;IACxB,CAAA;EACF,GAAG;IAACP;GAAO;AAEX,SAAON;AACT;AAEO,IAAMc,mBAAmB,CAAC,EAAEC,OAAOC,KAAI,MAAoC;AAChF,QAAM,EAAEC,EAAC,IAAKC,eAAeC,KAAKC,EAAE;AACpC,QAAMA,KAAKL,MAAMK;AACjB,QAAM,EAAEC,cAAcC,YAAYC,UAAS,IAAKC,aAAaJ,EAAAA;AAC7D,QAAMK,aAAaJ,gBAAgBC,cAAcC;AAKjD,QAAM,EAAEG,MAAK,IAAKC,YAAAA;AAClB,QAAMC,WAAWC,YAAAA;AACjB,QAAMC,mBAAmBF,SAASG,GAAG,EAAC;AACtC,QAAMC,OAAOC,QAAQP,OAAOI,gBAAAA;AAC5B,QAAMI,mBAAmB,CAAClB,QAAQ,CAACS,cAAcL,MAAae,cAAOH,IAAAA,IAAQA,KAAKI,MAAMC,SAASjB,EAAAA,IAAM;AAEvG,QAAMkB,kBAAkBvC,cAAAA,MAAoBI,WAAWC,gBAAgBmC;AAEvE,QAAMC,kBAAkBzB,MAAM0B,SAASC,KAAKC,oBAAoBC,uBAAuBC;AACvF,QAAMC,YAAYC,kBAAkBhC,KAAAA;AACpC,QAAMiC,UAAUV,mBAAmBE,mBAAmBM,aAAaA,UAAUG,iBAAiB;AAE9F,SACE,sBAAA,cAACC,QAAQC,SAAO;IAACC,SAAAA;IAAQC,SAASpC,EAAE,eAAA;IAAkBqC,MAAK;KACzD,sBAAA,cAACC,gBAAAA;IACCP;IACApB,UAAUH;IACVS;IACAsB,YAAW;;AAInB;;;ACvDA,IAAA,2BAAeC;",
6
- "names": ["Option", "React", "useEffect", "useState", "useAppGraph", "EdgeStatus", "EdgeReplicationSetting", "useClient", "useSpaceSyncState", "Tooltip", "useTranslation", "AttentionGlyph", "useAttended", "useAttention", "useEdgeStatus", "status", "setStatus", "useState", "EdgeStatus", "ConnectionState", "NOT_CONNECTED", "client", "useClient", "useEffect", "services", "EdgeAgentService", "queryEdgeStatus", "subscribe", "state", "InlineSyncStatus", "space", "open", "t", "useTranslation", "meta", "id", "hasAttention", "isAncestor", "isRelated", "useAttention", "isAttended", "graph", "useAppGraph", "attended", "useAttended", "startOfAttention", "at", "path", "usePath", "containsAttended", "isSome", "value", "includes", "connectedToEdge", "CONNECTED", "edgeSyncEnabled", "internal", "data", "edgeReplication", "EdgeReplicationSetting", "ENABLED", "syncState", "useSpaceSyncState", "syncing", "missingOnLocal", "Tooltip", "Trigger", "asChild", "content", "side", "AttentionGlyph", "classNames", "InlineSyncStatus"]
7
- }
@@ -1,7 +0,0 @@
1
- {
2
- "version": 3,
3
- "sources": ["../../../src/containers/JoinDialog/JoinDialog.tsx", "../../../src/containers/JoinDialog/index.ts"],
4
- "sourcesContent": ["//\n// Copyright 2024 DXOS.org\n//\n\nimport React, { useCallback } from 'react';\n\nimport { useOperationInvoker } from '@dxos/app-framework/ui';\nimport { LayoutOperation } from '@dxos/app-toolkit';\nimport { useAppGraph } from '@dxos/app-toolkit/ui';\nimport { Trigger } from '@dxos/async';\nimport { Graph } from '@dxos/plugin-graph';\nimport { ObservabilityOperation } from '@dxos/plugin-observability/types';\nimport { useClient } from '@dxos/react-client';\nimport { type Space } from '@dxos/react-client/echo';\nimport { type InvitationResult } from '@dxos/react-client/invitations';\nimport { Dialog, useTranslation } from '@dxos/react-ui';\nimport { JoinPanel, type JoinPanelProps } from '@dxos/shell/react';\nimport { osTranslations } from '@dxos/ui-theme';\n\nimport { meta } from '../../meta';\n\nexport const JOIN_DIALOG = `${meta.id}/JoinDialog`;\n\nexport type JoinDialogProps = JoinPanelProps & {\n navigableCollections?: boolean;\n};\n\nexport const JoinDialog = ({ navigableCollections, onDone, ...props }: JoinDialogProps) => {\n const { invokePromise } = useOperationInvoker();\n const client = useClient();\n const { graph } = useAppGraph();\n const { t } = useTranslation(meta.id);\n\n const handleDone = useCallback(\n async (result: InvitationResult | null) => {\n const spaceKey = result?.spaceKey;\n if (!spaceKey) {\n return;\n }\n\n await Promise.all([\n invokePromise(LayoutOperation.AddToast, {\n id: `${meta.id}/join-success`,\n duration: 5_000,\n title: ['join success label', { ns: meta.id }],\n closeLabel: ['dismiss label', { ns: meta.id }],\n }),\n invokePromise(LayoutOperation.UpdateDialog, { state: false }),\n ]);\n\n let space = client.spaces.get(spaceKey);\n if (!space) {\n // TODO(wittjosiah): Add api to wait for a space.\n const trigger = new Trigger<Space>();\n client.spaces.subscribe(() => {\n const space = client.spaces.get(spaceKey);\n if (space) {\n trigger.wake(space);\n }\n });\n space = await trigger.wait();\n }\n\n await invokePromise(LayoutOperation.SwitchWorkspace, { subject: space.id });\n\n // TODO(wittjosiah): If navigableCollections is false and there's no target,\n // should try to navigate to the first object of the space replicates.\n // Potentially this could also be done on the inviters side to ensure there's always a target.\n const target = result?.target || (navigableCollections ? space?.id : undefined);\n if (target) {\n // Wait before navigating to the target node.\n // If the target has not yet replicated, this will trigger a loading toast.\n await Graph.waitForPath(graph, { target }).catch(() => {});\n await Promise.all([\n invokePromise(LayoutOperation.Open, { subject: [target] }),\n invokePromise(LayoutOperation.Expose, { subject: target }),\n ]);\n }\n\n await onDone?.(result);\n\n if (space) {\n await invokePromise(ObservabilityOperation.SendEvent, {\n name: 'space.join',\n properties: {\n spaceId: space.id,\n },\n });\n }\n },\n [invokePromise, client, graph, navigableCollections, onDone],\n );\n\n return (\n <Dialog.Content>\n <Dialog.Title classNames='sr-only'>{t('join space label', { ns: osTranslations })}</Dialog.Title>\n <JoinPanel\n {...props}\n exitActionParent={<Dialog.Close asChild />}\n doneActionParent={<Dialog.Close asChild />}\n onDone={handleDone}\n />\n </Dialog.Content>\n );\n};\n", "//\n// Copyright 2024 DXOS.org\n//\n\nimport { JoinDialog } from './JoinDialog';\n\nexport default JoinDialog;\n"],
5
- "mappings": ";;;;;AAIA,OAAOA,SAASC,mBAAmB;AAEnC,SAASC,2BAA2B;AACpC,SAASC,uBAAuB;AAChC,SAASC,mBAAmB;AAC5B,SAASC,eAAe;AACxB,SAASC,aAAa;AACtB,SAASC,8BAA8B;AACvC,SAASC,iBAAiB;AAG1B,SAASC,QAAQC,sBAAsB;AACvC,SAASC,iBAAsC;AAC/C,SAASC,sBAAsB;AAIxB,IAAMC,cAAc,GAAGC,KAAKC,EAAE;AAM9B,IAAMC,aAAa,CAAC,EAAEC,sBAAsBC,QAAQ,GAAGC,MAAAA,MAAwB;AACpF,QAAM,EAAEC,cAAa,IAAKC,oBAAAA;AAC1B,QAAMC,SAASC,UAAAA;AACf,QAAM,EAAEC,MAAK,IAAKC,YAAAA;AAClB,QAAM,EAAEC,EAAC,IAAKC,eAAeb,KAAKC,EAAE;AAEpC,QAAMa,aAAaC,YACjB,OAAOC,WAAAA;AACL,UAAMC,WAAWD,QAAQC;AACzB,QAAI,CAACA,UAAU;AACb;IACF;AAEA,UAAMC,QAAQC,IAAI;MAChBb,cAAcc,gBAAgBC,UAAU;QACtCpB,IAAI,GAAGD,KAAKC,EAAE;QACdqB,UAAU;QACVC,OAAO;UAAC;UAAsB;YAAEC,IAAIxB,KAAKC;UAAG;;QAC5CwB,YAAY;UAAC;UAAiB;YAAED,IAAIxB,KAAKC;UAAG;;MAC9C,CAAA;MACAK,cAAcc,gBAAgBM,cAAc;QAAEC,OAAO;MAAM,CAAA;KAC5D;AAED,QAAIC,QAAQpB,OAAOqB,OAAOC,IAAIb,QAAAA;AAC9B,QAAI,CAACW,OAAO;AAEV,YAAMG,UAAU,IAAIC,QAAAA;AACpBxB,aAAOqB,OAAOI,UAAU,MAAA;AACtB,cAAML,SAAQpB,OAAOqB,OAAOC,IAAIb,QAAAA;AAChC,YAAIW,QAAO;AACTG,kBAAQG,KAAKN,MAAAA;QACf;MACF,CAAA;AACAA,cAAQ,MAAMG,QAAQI,KAAI;IAC5B;AAEA,UAAM7B,cAAcc,gBAAgBgB,iBAAiB;MAAEC,SAAST,MAAM3B;IAAG,CAAA;AAKzE,UAAMqC,SAAStB,QAAQsB,WAAWnC,uBAAuByB,OAAO3B,KAAKsC;AACrE,QAAID,QAAQ;AAGV,YAAME,MAAMC,YAAY/B,OAAO;QAAE4B;MAAO,CAAA,EAAGI,MAAM,MAAA;MAAO,CAAA;AACxD,YAAMxB,QAAQC,IAAI;QAChBb,cAAcc,gBAAgBuB,MAAM;UAAEN,SAAS;YAACC;;QAAQ,CAAA;QACxDhC,cAAcc,gBAAgBwB,QAAQ;UAAEP,SAASC;QAAO,CAAA;OACzD;IACH;AAEA,UAAMlC,SAASY,MAAAA;AAEf,QAAIY,OAAO;AACT,YAAMtB,cAAcuC,uBAAuBC,WAAW;QACpDC,MAAM;QACNC,YAAY;UACVC,SAASrB,MAAM3B;QACjB;MACF,CAAA;IACF;EACF,GACA;IAACK;IAAeE;IAAQE;IAAOP;IAAsBC;GAAO;AAG9D,SACE,sBAAA,cAAC8C,OAAOC,SAAO,MACb,sBAAA,cAACD,OAAOE,OAAK;IAACC,YAAW;KAAWzC,EAAE,oBAAoB;IAAEY,IAAI8B;EAAe,CAAA,CAAA,GAC/E,sBAAA,cAACC,WAAAA;IACE,GAAGlD;IACJmD,kBAAkB,sBAAA,cAACN,OAAOO,OAAK;MAACC,SAAAA;;IAChCC,kBAAkB,sBAAA,cAACT,OAAOO,OAAK;MAACC,SAAAA;;IAChCtD,QAAQU;;AAIhB;;;AClGA,IAAA,qBAAe8C;",
6
- "names": ["React", "useCallback", "useOperationInvoker", "LayoutOperation", "useAppGraph", "Trigger", "Graph", "ObservabilityOperation", "useClient", "Dialog", "useTranslation", "JoinPanel", "osTranslations", "JOIN_DIALOG", "meta", "id", "JoinDialog", "navigableCollections", "onDone", "props", "invokePromise", "useOperationInvoker", "client", "useClient", "graph", "useAppGraph", "t", "useTranslation", "handleDone", "useCallback", "result", "spaceKey", "Promise", "all", "LayoutOperation", "AddToast", "duration", "title", "ns", "closeLabel", "UpdateDialog", "state", "space", "spaces", "get", "trigger", "Trigger", "subscribe", "wake", "wait", "SwitchWorkspace", "subject", "target", "undefined", "Graph", "waitForPath", "catch", "Open", "Expose", "ObservabilityOperation", "SendEvent", "name", "properties", "spaceId", "Dialog", "Content", "Title", "classNames", "osTranslations", "JoinPanel", "exitActionParent", "Close", "asChild", "doneActionParent", "JoinDialog"]
7
- }
@@ -1,10 +0,0 @@
1
- import {
2
- SmallPresenceLive
3
- } from "./chunk-ABCDB5YC.mjs";
4
- import "./chunk-XIIYC7P5.mjs";
5
- import "./chunk-USN5QKRV.mjs";
6
- import "./chunk-HSMQFM57.mjs";
7
- export {
8
- SmallPresenceLive as default
9
- };
10
- //# sourceMappingURL=SmallPresenceLive-LZD2NGKK.mjs.map
@@ -1,13 +0,0 @@
1
- import {
2
- SpacePresence
3
- } from "./chunk-ABCDB5YC.mjs";
4
- import "./chunk-XIIYC7P5.mjs";
5
- import "./chunk-USN5QKRV.mjs";
6
- import "./chunk-HSMQFM57.mjs";
7
-
8
- // src/containers/SpacePresence/index.ts
9
- var SpacePresence_default = SpacePresence;
10
- export {
11
- SpacePresence_default as default
12
- };
13
- //# sourceMappingURL=SpacePresence-MLU576L6.mjs.map
@@ -1,7 +0,0 @@
1
- {
2
- "version": 3,
3
- "sources": ["../../../src/containers/SpacePresence/index.ts"],
4
- "sourcesContent": ["//\n// Copyright 2023 DXOS.org\n//\n\nimport { SpacePresence } from './SpacePresence';\n\nexport default SpacePresence;\n"],
5
- "mappings": ";;;;;;;;AAMA,IAAA,wBAAeA;",
6
- "names": ["SpacePresence"]
7
- }
@@ -1,7 +0,0 @@
1
- {
2
- "version": 3,
3
- "sources": ["../../../src/containers/SpaceSettingsContainer/SpaceSettingsContainer.tsx", "../../../src/containers/SpaceSettingsContainer/index.ts"],
4
- "sourcesContent": ["//\n// Copyright 2024 DXOS.org\n//\n\nimport * as Schema from 'effect/Schema';\nimport React, { type ChangeEvent, useCallback, useMemo, useState } from 'react';\n\nimport { useCapabilities, useOperationInvoker } from '@dxos/app-framework/ui';\nimport { LayoutOperation } from '@dxos/app-toolkit';\nimport { Obj } from '@dxos/echo';\nimport { log } from '@dxos/log';\nimport { EdgeReplicationSetting } from '@dxos/protocols/proto/dxos/echo/metadata';\nimport { useClient } from '@dxos/react-client';\nimport { type Space, SpaceState } from '@dxos/react-client/echo';\nimport { Button, Input, useFileDownload, useMulticastObservable, useTranslation } from '@dxos/react-ui';\nimport { Form, type FormFieldMap, Settings } from '@dxos/react-ui-form';\nimport { HuePicker, IconPicker } from '@dxos/react-ui-pickers';\n\nimport { meta } from '../../meta';\nimport { SpaceCapabilities, SpaceForm, SpaceOperation } from '../../types';\n\nconst SpaceFormSchema = SpaceForm.pipe(\n Schema.extend(\n Schema.Struct({\n archived: Schema.Boolean.annotations({ title: 'Archive Space' }),\n }),\n ),\n);\n\nexport type SpaceSettingsContainerProps = {\n space: Space;\n};\n\n// TODO(wittjosiah): Handle space migrations here?\nexport const SpaceSettingsContainer = ({ space }: SpaceSettingsContainerProps) => {\n const { t } = useTranslation(meta.id);\n const { invokePromise } = useOperationInvoker();\n const client = useClient();\n const archived = useMulticastObservable(space.state) === SpaceState.SPACE_INACTIVE;\n const [edgeReplication, setEdgeReplication] = useState(\n space.internal.data.edgeReplication === EdgeReplicationSetting.ENABLED,\n );\n const toggleEdgeReplication = useCallback(\n async (next: boolean) => {\n setEdgeReplication(next);\n await space?.internal\n .setEdgeReplicationPreference(next ? EdgeReplicationSetting.ENABLED : EdgeReplicationSetting.DISABLED)\n .catch((err: unknown) => {\n log.catch(err);\n setEdgeReplication(!next);\n });\n },\n [space],\n );\n\n const handleValuesChanged = useCallback(\n (newValues: Partial<Schema.Schema.Type<typeof SpaceFormSchema>>, meta: { changed?: Record<string, boolean> }) => {\n const changed = meta.changed ?? {};\n if (changed['edgeReplication']) {\n void toggleEdgeReplication(newValues.edgeReplication ?? false);\n }\n\n if (changed['name'] || changed['icon'] || changed['hue']) {\n Obj.change(space.properties, (p) => {\n if (changed['name'] && newValues.name !== undefined) {\n p.name = newValues.name;\n }\n if (changed['icon']) {\n p.icon = newValues.icon;\n }\n if (changed['hue']) {\n p.hue = newValues.hue;\n }\n });\n }\n\n if (changed['archived']) {\n if (newValues.archived && !archived) {\n void invokePromise(SpaceOperation.Close, { space });\n void invokePromise(LayoutOperation.SwitchWorkspace, {\n subject: client.spaces.default.id,\n });\n } else if (!newValues.archived && archived) {\n void invokePromise(SpaceOperation.Open, { space });\n }\n }\n },\n [space, client, archived, invokePromise, toggleEdgeReplication],\n );\n\n const values = useMemo(\n () => ({\n name: space.properties.name,\n icon: space.properties.icon,\n hue: space.properties.hue,\n edgeReplication,\n archived,\n }),\n [space.properties.name, space.properties.icon, space.properties.hue, edgeReplication, archived],\n );\n\n const fieldMap = useMemo<FormFieldMap>(\n () => ({\n name: ({ type, label, getValue, onValueChange }) => {\n const handleChange = useCallback(\n ({ target: { value } }: ChangeEvent<HTMLInputElement>) => onValueChange(type, value),\n [onValueChange, type],\n );\n return (\n <Settings.ItemInput title={label} description={t('display name description')}>\n <Input.TextInput\n value={getValue()}\n onChange={handleChange}\n placeholder={t('display name input placeholder')}\n classNames='min-w-64'\n />\n </Settings.ItemInput>\n );\n },\n icon: ({ type, label, getValue, onValueChange }) => {\n const handleChange = useCallback((icon: string) => onValueChange(type, icon), [onValueChange, type]);\n const handleReset = useCallback(() => onValueChange(type, undefined), [onValueChange, type]);\n return (\n <Settings.Item title={label} description={t('icon description')}>\n <IconPicker\n value={getValue()}\n onChange={handleChange}\n onReset={handleReset}\n classNames='justify-self-end'\n />\n </Settings.Item>\n );\n },\n hue: ({ type, label, getValue, onValueChange }) => {\n const handleChange = useCallback((nextHue: string) => onValueChange(type, nextHue), [onValueChange, type]);\n const handleReset = useCallback(() => onValueChange(type, undefined), [onValueChange, type]);\n return (\n <Settings.Item title={label} description={t('hue description')}>\n <HuePicker value={getValue()} onChange={handleChange} onReset={handleReset} classNames='justify-self-end' />\n </Settings.Item>\n );\n },\n edgeReplication: ({ type, label, getValue, onValueChange }) => {\n const handleChange = useCallback((checked: boolean) => onValueChange(type, checked), [onValueChange, type]);\n return (\n <Settings.ItemInput title={label} description={t('edge replication description')}>\n <Input.Switch checked={getValue()} onCheckedChange={handleChange} classNames='justify-self-end' />\n </Settings.ItemInput>\n );\n },\n archived: ({ type, label, getValue, onValueChange }) => {\n const handleChange = useCallback(() => onValueChange(type, !getValue()), [onValueChange, type, getValue]);\n return (\n <Settings.ItemInput title={label} description={t('archive space description')}>\n <Button\n disabled={space === client.spaces.default}\n variant={getValue() ? 'default' : 'destructive'}\n onClick={handleChange}\n >\n {getValue() ? t('unarchive space label') : t('archive space label')}\n </Button>\n </Settings.ItemInput>\n );\n },\n }),\n [t, space, client],\n );\n\n const download = useFileDownload();\n const handleBackup = useCallback(async () => {\n const archive = await space.internal.export();\n download(new Blob([archive.contents as Uint8Array<ArrayBuffer>]), archive.filename);\n }, [space, download]);\n\n const repairs = useCapabilities(SpaceCapabilities.Repair);\n const handleRepair = useCallback(async () => {\n await Promise.all(repairs.map((repair) => repair({ space, isDefault: client.spaces.default === space })));\n }, [client, space, repairs]);\n\n return (\n <Settings.Root>\n <Settings.Section\n title={t('space properties settings verbose label')}\n description={t('space properties settings description', { ns: meta.id })}\n >\n <Form.Root fieldMap={fieldMap} schema={SpaceFormSchema} values={values} onValuesChanged={handleValuesChanged}>\n <Form.FieldSet />\n </Form.Root>\n </Settings.Section>\n <Settings.Section title={t('space controls title')} description={t('space controls description')}>\n <Settings.ItemInput title={t('backup space title')} description={t('backup space description')}>\n <Button onClick={handleBackup}>{t('download backup label')}</Button>\n </Settings.ItemInput>\n <Settings.ItemInput title={t('repair space title')} description={t('repair space description')}>\n <Button onClick={handleRepair}>{t('repair space label')}</Button>\n </Settings.ItemInput>\n </Settings.Section>\n </Settings.Root>\n );\n};\n\nSpaceSettingsContainer.displayName = 'SpaceSettingsContainer';\n", "//\n// Copyright 2024 DXOS.org\n//\n\nimport { SpaceSettingsContainer } from './SpaceSettingsContainer';\n\nexport default SpaceSettingsContainer;\n"],
5
- "mappings": "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",
6
- "names": ["Schema", "React", "useCallback", "useMemo", "useState", "useCapabilities", "useOperationInvoker", "LayoutOperation", "Obj", "log", "EdgeReplicationSetting", "useClient", "SpaceState", "Button", "Input", "useFileDownload", "useMulticastObservable", "useTranslation", "Form", "Settings", "HuePicker", "IconPicker", "SpaceFormSchema", "SpaceForm", "pipe", "extend", "Struct", "archived", "Boolean", "annotations", "title", "SpaceSettingsContainer", "space", "t", "useTranslation", "meta", "id", "invokePromise", "useOperationInvoker", "client", "useClient", "useMulticastObservable", "state", "SpaceState", "SPACE_INACTIVE", "edgeReplication", "setEdgeReplication", "useState", "internal", "data", "EdgeReplicationSetting", "ENABLED", "toggleEdgeReplication", "useCallback", "next", "setEdgeReplicationPreference", "DISABLED", "catch", "err", "log", "handleValuesChanged", "newValues", "changed", "Obj", "change", "properties", "p", "name", "undefined", "icon", "hue", "SpaceOperation", "Close", "LayoutOperation", "SwitchWorkspace", "subject", "spaces", "default", "Open", "values", "useMemo", "fieldMap", "type", "label", "getValue", "onValueChange", "handleChange", "target", "value", "Settings", "ItemInput", "description", "Input", "TextInput", "onChange", "placeholder", "classNames", "handleReset", "Item", "IconPicker", "onReset", "nextHue", "HuePicker", "checked", "Switch", "onCheckedChange", "Button", "disabled", "variant", "onClick", "download", "useFileDownload", "handleBackup", "archive", "export", "Blob", "contents", "filename", "repairs", "useCapabilities", "SpaceCapabilities", "Repair", "handleRepair", "Promise", "all", "map", "repair", "isDefault", "Root", "Section", "ns", "Form", "schema", "onValuesChanged", "FieldSet", "displayName", "SpaceSettingsContainer"]
7
- }
@@ -1,7 +0,0 @@
1
- {
2
- "version": 3,
3
- "sources": ["../../../src/containers/ViewEditor/ViewEditor.tsx", "../../../src/containers/ViewEditor/index.ts"],
4
- "sourcesContent": ["//\n// Copyright 2023 DXOS.org\n//\n\nimport * as Schema from 'effect/Schema';\nimport React, { useCallback, useState } from 'react';\n\nimport { useOperationInvoker } from '@dxos/app-framework/ui';\nimport { DXN, Filter, JsonSchema, Obj, Query, type QueryAST, Tag, Type } from '@dxos/echo';\nimport { type View } from '@dxos/echo';\nimport { type Mutable } from '@dxos/echo/internal';\nimport { useClient } from '@dxos/react-client';\nimport { getSpace, useQuery } from '@dxos/react-client/echo';\nimport { useAsyncEffect } from '@dxos/react-ui';\nimport { ViewEditor as NaturalViewEditor } from '@dxos/react-ui-form';\nimport { ViewModel } from '@dxos/schema';\n\nimport { resolveSchemaWithRegistry } from '../../helpers';\nimport { useTypeOptions } from '../../hooks';\nimport { SpaceOperation } from '../../types';\n\nexport type ViewEditorProps = { view: View.View };\n\nexport const ViewEditor = ({ view }: ViewEditorProps) => {\n const { invokePromise } = useOperationInvoker();\n const client = useClient();\n const space = getSpace(view);\n const [schema, setSchema] = useState<Schema.Schema.AnyNoContext>(() => Schema.Struct({}));\n const tags = useQuery(space?.db, Filter.type(Tag.Tag));\n const types = useTypeOptions({\n space,\n annotation: {\n location: ['database', 'runtime'],\n kind: ['user'],\n registered: ['registered'],\n },\n });\n\n useAsyncEffect(async () => {\n if (!view?.query || !space) {\n return;\n }\n\n const foundSchema = await resolveSchemaWithRegistry(space.db.schemaRegistry, view.query.ast);\n if (foundSchema && foundSchema !== schema) {\n setSchema(() => foundSchema);\n }\n }, [client, space, view, schema]);\n\n const handleQueryChanged = useCallback(\n async (newQuery: QueryAST.Query, target?: string) => {\n if (!view || !space) {\n return;\n }\n\n const queue = target && DXN.tryParse(target) ? target : undefined;\n const query = queue ? Query.fromAst(newQuery).from({ queues: [queue] }) : Query.fromAst(newQuery);\n Obj.change(view, (v) => {\n v.query.ast = query.ast as Mutable<typeof query.ast>;\n });\n const newSchema = await resolveSchemaWithRegistry(space.db.schemaRegistry, query.ast);\n if (!newSchema) {\n return;\n }\n\n const newView = ViewModel.make({\n query,\n jsonSchema: JsonSchema.toJsonSchema(newSchema),\n });\n Obj.change(view, (v) => {\n v.projection = Obj.getSnapshot(newView).projection as Mutable<typeof v.projection>;\n });\n\n setSchema(() => newSchema);\n },\n [view, schema],\n );\n\n const handleDelete = useCallback(\n (fieldId: string) => {\n void invokePromise(SpaceOperation.DeleteField, { view, fieldId });\n },\n [invokePromise, view],\n );\n\n if (!space || !schema) {\n return null;\n }\n\n return (\n <NaturalViewEditor\n registry={space.db.schemaRegistry}\n schema={schema}\n view={view}\n mode='tag'\n db={space.db}\n tags={tags}\n types={types}\n onQueryChanged={handleQueryChanged}\n onDelete={Type.isMutable(schema) ? handleDelete : undefined}\n />\n );\n};\n", "//\n// Copyright 2023 DXOS.org\n//\n\nimport { ViewEditor } from './ViewEditor';\n\nexport default ViewEditor;\n"],
5
- "mappings": ";;;;;;;;;;;;AAIA,YAAYA,YAAY;AACxB,OAAOC,SAASC,aAAaC,gBAAgB;AAE7C,SAASC,2BAA2B;AACpC,SAASC,KAAKC,QAAQC,YAAYC,KAAKC,OAAsBC,KAAKC,YAAY;AAG9E,SAASC,iBAAiB;AAC1B,SAASC,UAAUC,gBAAgB;AACnC,SAASC,sBAAsB;AAC/B,SAASC,cAAcC,yBAAyB;AAChD,SAASC,iBAAiB;AAQnB,IAAMC,aAAa,CAAC,EAAEC,KAAI,MAAmB;AAClD,QAAM,EAAEC,cAAa,IAAKC,oBAAAA;AAC1B,QAAMC,SAASC,UAAAA;AACf,QAAMC,QAAQC,SAASN,IAAAA;AACvB,QAAM,CAACO,QAAQC,SAAAA,IAAaC,SAAqC,MAAaC,cAAO,CAAC,CAAA,CAAA;AACtF,QAAMC,OAAOC,SAASP,OAAOQ,IAAIC,OAAOC,KAAKC,IAAIA,GAAG,CAAA;AACpD,QAAMC,QAAQC,eAAe;IAC3Bb;IACAc,YAAY;MACVC,UAAU;QAAC;QAAY;;MACvBC,MAAM;QAAC;;MACPC,YAAY;QAAC;;IACf;EACF,CAAA;AAEAC,iBAAe,YAAA;AACb,QAAI,CAACvB,MAAMwB,SAAS,CAACnB,OAAO;AAC1B;IACF;AAEA,UAAMoB,cAAc,MAAMC,0BAA0BrB,MAAMQ,GAAGc,gBAAgB3B,KAAKwB,MAAMI,GAAG;AAC3F,QAAIH,eAAeA,gBAAgBlB,QAAQ;AACzCC,gBAAU,MAAMiB,WAAAA;IAClB;EACF,GAAG;IAACtB;IAAQE;IAAOL;IAAMO;GAAO;AAEhC,QAAMsB,qBAAqBC,YACzB,OAAOC,UAA0BC,WAAAA;AAC/B,QAAI,CAAChC,QAAQ,CAACK,OAAO;AACnB;IACF;AAEA,UAAM4B,QAAQD,UAAUE,IAAIC,SAASH,MAAAA,IAAUA,SAASI;AACxD,UAAMZ,QAAQS,QAAQI,MAAMC,QAAQP,QAAAA,EAAUQ,KAAK;MAAEC,QAAQ;QAACP;;IAAO,CAAA,IAAKI,MAAMC,QAAQP,QAAAA;AACxFU,QAAIC,OAAO1C,MAAM,CAAC2C,MAAAA;AAChBA,QAAEnB,MAAMI,MAAMJ,MAAMI;IACtB,CAAA;AACA,UAAMgB,YAAY,MAAMlB,0BAA0BrB,MAAMQ,GAAGc,gBAAgBH,MAAMI,GAAG;AACpF,QAAI,CAACgB,WAAW;AACd;IACF;AAEA,UAAMC,UAAUC,UAAUC,KAAK;MAC7BvB;MACAwB,YAAYC,WAAWC,aAAaN,SAAAA;IACtC,CAAA;AACAH,QAAIC,OAAO1C,MAAM,CAAC2C,MAAAA;AAChBA,QAAEQ,aAAaV,IAAIW,YAAYP,OAAAA,EAASM;IAC1C,CAAA;AAEA3C,cAAU,MAAMoC,SAAAA;EAClB,GACA;IAAC5C;IAAMO;GAAO;AAGhB,QAAM8C,eAAevB,YACnB,CAACwB,YAAAA;AACC,SAAKrD,cAAcsD,eAAeC,aAAa;MAAExD;MAAMsD;IAAQ,CAAA;EACjE,GACA;IAACrD;IAAeD;GAAK;AAGvB,MAAI,CAACK,SAAS,CAACE,QAAQ;AACrB,WAAO;EACT;AAEA,SACE,sBAAA,cAACkD,mBAAAA;IACCC,UAAUrD,MAAMQ,GAAGc;IACnBpB;IACAP;IACA2D,MAAK;IACL9C,IAAIR,MAAMQ;IACVF;IACAM;IACA2C,gBAAgB/B;IAChBgC,UAAUC,KAAKC,UAAUxD,MAAAA,IAAU8C,eAAejB;;AAGxD;;;AChGA,IAAA,qBAAe4B;",
6
- "names": ["Schema", "React", "useCallback", "useState", "useOperationInvoker", "DXN", "Filter", "JsonSchema", "Obj", "Query", "Tag", "Type", "useClient", "getSpace", "useQuery", "useAsyncEffect", "ViewEditor", "NaturalViewEditor", "ViewModel", "ViewEditor", "view", "invokePromise", "useOperationInvoker", "client", "useClient", "space", "getSpace", "schema", "setSchema", "useState", "Struct", "tags", "useQuery", "db", "Filter", "type", "Tag", "types", "useTypeOptions", "annotation", "location", "kind", "registered", "useAsyncEffect", "query", "foundSchema", "resolveSchemaWithRegistry", "schemaRegistry", "ast", "handleQueryChanged", "useCallback", "newQuery", "target", "queue", "DXN", "tryParse", "undefined", "Query", "fromAst", "from", "queues", "Obj", "change", "v", "newSchema", "newView", "ViewModel", "make", "jsonSchema", "JsonSchema", "toJsonSchema", "projection", "getSnapshot", "handleDelete", "fieldId", "SpaceOperation", "DeleteField", "NaturalViewEditor", "registry", "mode", "onQueryChanged", "onDelete", "Type", "isMutable", "ViewEditor"]
7
- }