@dxos/plugin-space 0.8.4-main.3a94e84 → 0.8.4-main.406dc2a

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 (305) hide show
  1. package/dist/lib/browser/{CollectionMain-D2B75XBS.mjs → CollectionMain-AX7KKXWP.mjs} +4 -4
  2. package/dist/lib/browser/CollectionMain-AX7KKXWP.mjs.map +7 -0
  3. package/dist/lib/browser/ObjectDetailsPanel-MQBHG666.mjs +145 -0
  4. package/dist/lib/browser/ObjectDetailsPanel-MQBHG666.mjs.map +7 -0
  5. package/dist/lib/browser/ObjectSettings-KNUZFCGS.mjs +151 -0
  6. package/dist/lib/browser/ObjectSettings-KNUZFCGS.mjs.map +7 -0
  7. package/dist/lib/browser/RecordMain-H4DVHICS.mjs +116 -0
  8. package/dist/lib/browser/RecordMain-H4DVHICS.mjs.map +7 -0
  9. package/dist/lib/browser/{app-graph-builder-7CZZJS3S.mjs → app-graph-builder-3R5GGT46.mjs} +102 -61
  10. package/dist/lib/browser/app-graph-builder-3R5GGT46.mjs.map +7 -0
  11. package/dist/lib/browser/{app-graph-serializer-H6AW7KGS.mjs → app-graph-serializer-25Z5BG22.mjs} +14 -14
  12. package/dist/lib/browser/app-graph-serializer-25Z5BG22.mjs.map +7 -0
  13. package/dist/lib/browser/{chunk-V7MJSSBQ.mjs → chunk-522KZGQF.mjs} +310 -342
  14. package/dist/lib/browser/chunk-522KZGQF.mjs.map +7 -0
  15. package/dist/lib/browser/chunk-7XOTWRZ3.mjs +166 -0
  16. package/dist/lib/browser/chunk-7XOTWRZ3.mjs.map +7 -0
  17. package/dist/lib/browser/chunk-EIXZABXD.mjs +19 -0
  18. package/dist/lib/browser/chunk-EIXZABXD.mjs.map +7 -0
  19. package/dist/lib/browser/chunk-IRKDREHY.mjs +11 -0
  20. package/dist/lib/browser/chunk-IRKDREHY.mjs.map +7 -0
  21. package/dist/lib/browser/{chunk-XUYKJUU7.mjs → chunk-OV6D543A.mjs} +99 -44
  22. package/dist/lib/browser/chunk-OV6D543A.mjs.map +7 -0
  23. package/dist/lib/browser/{chunk-QACNNDOT.mjs → chunk-PTGRQQ6J.mjs} +13 -10
  24. package/dist/lib/browser/chunk-PTGRQQ6J.mjs.map +7 -0
  25. package/dist/lib/browser/chunk-RLI2IAHK.mjs +20 -0
  26. package/dist/lib/browser/chunk-RLI2IAHK.mjs.map +7 -0
  27. package/dist/lib/browser/{chunk-SGTQ52SU.mjs → chunk-WS2PJDES.mjs} +22 -12
  28. package/dist/lib/browser/chunk-WS2PJDES.mjs.map +7 -0
  29. package/dist/lib/browser/{identity-created-23XJJV2N.mjs → identity-created-PW2BA46S.mjs} +4 -4
  30. package/dist/lib/browser/{identity-created-23XJJV2N.mjs.map → identity-created-PW2BA46S.mjs.map} +3 -3
  31. package/dist/lib/browser/index.mjs +36 -53
  32. package/dist/lib/browser/index.mjs.map +3 -3
  33. package/dist/lib/browser/{intent-resolver-TIXVDYN7.mjs → intent-resolver-ICGUSVH6.mjs} +52 -45
  34. package/dist/lib/browser/intent-resolver-ICGUSVH6.mjs.map +7 -0
  35. package/dist/lib/browser/meta.json +1 -1
  36. package/dist/lib/browser/{react-root-N2J7TDRX.mjs → react-root-H56QN474.mjs} +11 -11
  37. package/dist/lib/browser/react-root-H56QN474.mjs.map +7 -0
  38. package/dist/lib/browser/{react-surface-TPNLWJJH.mjs → react-surface-VOE2ILKO.mjs} +57 -77
  39. package/dist/lib/browser/react-surface-VOE2ILKO.mjs.map +7 -0
  40. package/dist/lib/browser/{schema-defs-Z6FC4AHC.mjs → schema-defs-7R7RKCAE.mjs} +5 -5
  41. package/dist/lib/browser/schema-defs-7R7RKCAE.mjs.map +7 -0
  42. package/dist/lib/browser/{settings-4IMP5RYT.mjs → settings-OBFJ67ZG.mjs} +5 -5
  43. package/dist/lib/browser/{settings-4IMP5RYT.mjs.map → settings-OBFJ67ZG.mjs.map} +1 -1
  44. package/dist/lib/browser/{spaces-ready-TOPG6IV4.mjs → spaces-ready-MFIVK6I6.mjs} +18 -16
  45. package/dist/lib/browser/spaces-ready-MFIVK6I6.mjs.map +7 -0
  46. package/dist/lib/browser/{state-QYZAB45H.mjs → state-LSPRFIRO.mjs} +7 -7
  47. package/dist/lib/browser/state-LSPRFIRO.mjs.map +7 -0
  48. package/dist/lib/browser/types/index.mjs +2 -2
  49. package/dist/lib/node-esm/{CollectionMain-ZJIFCWKZ.mjs → CollectionMain-EU57SRYK.mjs} +4 -4
  50. package/dist/lib/node-esm/CollectionMain-EU57SRYK.mjs.map +7 -0
  51. package/dist/lib/node-esm/ObjectDetailsPanel-NABA2S56.mjs +146 -0
  52. package/dist/lib/node-esm/ObjectDetailsPanel-NABA2S56.mjs.map +7 -0
  53. package/dist/lib/node-esm/ObjectSettings-GXGTITF5.mjs +152 -0
  54. package/dist/lib/node-esm/ObjectSettings-GXGTITF5.mjs.map +7 -0
  55. package/dist/lib/node-esm/RecordMain-MYFTAQ2U.mjs +117 -0
  56. package/dist/lib/node-esm/RecordMain-MYFTAQ2U.mjs.map +7 -0
  57. package/dist/lib/node-esm/{app-graph-builder-KGIGWC72.mjs → app-graph-builder-VGRMD5TP.mjs} +102 -61
  58. package/dist/lib/node-esm/app-graph-builder-VGRMD5TP.mjs.map +7 -0
  59. package/dist/lib/node-esm/{app-graph-serializer-2ICUGQQT.mjs → app-graph-serializer-U4GHXWRG.mjs} +14 -14
  60. package/dist/lib/node-esm/app-graph-serializer-U4GHXWRG.mjs.map +7 -0
  61. package/dist/lib/node-esm/{chunk-JH6F4C3I.mjs → chunk-4F25JKVT.mjs} +22 -12
  62. package/dist/lib/node-esm/chunk-4F25JKVT.mjs.map +7 -0
  63. package/dist/lib/node-esm/{chunk-6X5DLJM5.mjs → chunk-DG5YEEPZ.mjs} +310 -342
  64. package/dist/lib/node-esm/chunk-DG5YEEPZ.mjs.map +7 -0
  65. package/dist/lib/node-esm/chunk-H5UPFRRH.mjs +21 -0
  66. package/dist/lib/node-esm/chunk-H5UPFRRH.mjs.map +7 -0
  67. package/dist/lib/node-esm/{chunk-P442DOQ3.mjs → chunk-HAKW2RFD.mjs} +13 -10
  68. package/dist/lib/node-esm/chunk-HAKW2RFD.mjs.map +7 -0
  69. package/dist/lib/node-esm/{chunk-HWNG4MEU.mjs → chunk-MWNATOXL.mjs} +2 -4
  70. package/dist/lib/node-esm/chunk-MWNATOXL.mjs.map +7 -0
  71. package/dist/lib/node-esm/chunk-PAAWJ4RE.mjs +167 -0
  72. package/dist/lib/node-esm/chunk-PAAWJ4RE.mjs.map +7 -0
  73. package/dist/lib/node-esm/chunk-SVFKU7EW.mjs +20 -0
  74. package/dist/lib/node-esm/chunk-SVFKU7EW.mjs.map +7 -0
  75. package/dist/lib/node-esm/{chunk-4AOMYKDE.mjs → chunk-TNUWML33.mjs} +99 -44
  76. package/dist/lib/node-esm/chunk-TNUWML33.mjs.map +7 -0
  77. package/dist/lib/node-esm/{identity-created-IJQO6GCR.mjs → identity-created-MWTLGQRU.mjs} +4 -4
  78. package/dist/lib/node-esm/{identity-created-IJQO6GCR.mjs.map → identity-created-MWTLGQRU.mjs.map} +3 -3
  79. package/dist/lib/node-esm/index.mjs +36 -53
  80. package/dist/lib/node-esm/index.mjs.map +3 -3
  81. package/dist/lib/node-esm/{intent-resolver-MHGHRGDT.mjs → intent-resolver-KVB2A4YC.mjs} +52 -45
  82. package/dist/lib/node-esm/intent-resolver-KVB2A4YC.mjs.map +7 -0
  83. package/dist/lib/node-esm/meta.json +1 -1
  84. package/dist/lib/node-esm/{react-root-KW3TGJGY.mjs → react-root-56PGW5PH.mjs} +11 -11
  85. package/dist/lib/node-esm/react-root-56PGW5PH.mjs.map +7 -0
  86. package/dist/lib/node-esm/{react-surface-UUIUUD6P.mjs → react-surface-NYEQ23A4.mjs} +57 -77
  87. package/dist/lib/node-esm/react-surface-NYEQ23A4.mjs.map +7 -0
  88. package/dist/lib/node-esm/{schema-defs-WHJM7UZE.mjs → schema-defs-RYG5DSUE.mjs} +5 -5
  89. package/dist/lib/node-esm/schema-defs-RYG5DSUE.mjs.map +7 -0
  90. package/dist/lib/node-esm/{settings-SAOBPND3.mjs → settings-QGWWNMMZ.mjs} +5 -5
  91. package/dist/lib/node-esm/{settings-SAOBPND3.mjs.map → settings-QGWWNMMZ.mjs.map} +1 -1
  92. package/dist/lib/node-esm/{spaces-ready-HIUKNDZK.mjs → spaces-ready-TC27M7MP.mjs} +18 -16
  93. package/dist/lib/node-esm/spaces-ready-TC27M7MP.mjs.map +7 -0
  94. package/dist/lib/node-esm/{state-ZVEHQ4BJ.mjs → state-TCGOPLRO.mjs} +7 -7
  95. package/dist/lib/node-esm/state-TCGOPLRO.mjs.map +7 -0
  96. package/dist/lib/node-esm/types/index.mjs +2 -2
  97. package/dist/types/src/SpacePlugin.d.ts +1 -1
  98. package/dist/types/src/SpacePlugin.d.ts.map +1 -1
  99. package/dist/types/src/capabilities/app-graph-builder.d.ts +1 -1
  100. package/dist/types/src/capabilities/app-graph-builder.d.ts.map +1 -1
  101. package/dist/types/src/capabilities/app-graph-serializer.d.ts +1 -1
  102. package/dist/types/src/capabilities/capabilities.d.ts +5 -4
  103. package/dist/types/src/capabilities/capabilities.d.ts.map +1 -1
  104. package/dist/types/src/capabilities/identity-created.d.ts +1 -1
  105. package/dist/types/src/capabilities/identity-created.d.ts.map +1 -1
  106. package/dist/types/src/capabilities/index.d.ts +11 -12
  107. package/dist/types/src/capabilities/index.d.ts.map +1 -1
  108. package/dist/types/src/capabilities/intent-resolver.d.ts +1 -1
  109. package/dist/types/src/capabilities/intent-resolver.d.ts.map +1 -1
  110. package/dist/types/src/capabilities/react-root.d.ts +2 -2
  111. package/dist/types/src/capabilities/react-root.d.ts.map +1 -1
  112. package/dist/types/src/capabilities/react-surface.d.ts +1 -1
  113. package/dist/types/src/capabilities/react-surface.d.ts.map +1 -1
  114. package/dist/types/src/capabilities/schema-defs.d.ts +1 -1
  115. package/dist/types/src/capabilities/schema-defs.d.ts.map +1 -1
  116. package/dist/types/src/capabilities/settings.d.ts +1 -1
  117. package/dist/types/src/capabilities/spaces-ready.d.ts +1 -1
  118. package/dist/types/src/capabilities/spaces-ready.d.ts.map +1 -1
  119. package/dist/types/src/capabilities/state.d.ts +1 -1
  120. package/dist/types/src/capabilities/state.d.ts.map +1 -1
  121. package/dist/types/src/components/CreateDialog/CreateObjectDialog.d.ts +3 -3
  122. package/dist/types/src/components/CreateDialog/CreateObjectDialog.d.ts.map +1 -1
  123. package/dist/types/src/components/CreateDialog/CreateObjectDialog.stories.d.ts +1604 -4
  124. package/dist/types/src/components/CreateDialog/CreateObjectDialog.stories.d.ts.map +1 -1
  125. package/dist/types/src/components/CreateDialog/CreateObjectPanel.d.ts +5 -3
  126. package/dist/types/src/components/CreateDialog/CreateObjectPanel.d.ts.map +1 -1
  127. package/dist/types/src/components/CreateDialog/CreateSpaceDialog.d.ts +1 -1
  128. package/dist/types/src/components/CreateDialog/CreateSpaceDialog.d.ts.map +1 -1
  129. package/dist/types/src/components/JoinDialog.d.ts +1 -1
  130. package/dist/types/src/components/JoinDialog.d.ts.map +1 -1
  131. package/dist/types/src/components/MembersContainer.d.ts +3 -2
  132. package/dist/types/src/components/MembersContainer.d.ts.map +1 -1
  133. package/dist/types/src/components/MembersContainer.stories.d.ts +1604 -5
  134. package/dist/types/src/components/MembersContainer.stories.d.ts.map +1 -1
  135. package/dist/types/src/components/ObjectDetailsPanel/ObjectDetailsPanel.d.ts +9 -0
  136. package/dist/types/src/components/ObjectDetailsPanel/ObjectDetailsPanel.d.ts.map +1 -0
  137. package/dist/types/src/components/ObjectDetailsPanel/ObjectForm.d.ts +10 -0
  138. package/dist/types/src/components/ObjectDetailsPanel/ObjectForm.d.ts.map +1 -0
  139. package/dist/types/src/components/ObjectDetailsPanel/index.d.ts +3 -0
  140. package/dist/types/src/components/ObjectDetailsPanel/index.d.ts.map +1 -0
  141. package/dist/types/src/components/ObjectSettings/AdvancedObjectSettings.d.ts.map +1 -1
  142. package/dist/types/src/components/ObjectSettings/BaseObjectSettings.d.ts +1 -1
  143. package/dist/types/src/components/ObjectSettings/BaseObjectSettings.d.ts.map +1 -1
  144. package/dist/types/src/components/ObjectSettings/BaseObjectSettings.stories.d.ts +1440 -0
  145. package/dist/types/src/components/ObjectSettings/BaseObjectSettings.stories.d.ts.map +1 -0
  146. package/dist/types/src/components/ObjectSettings/ForeignKeys.d.ts +1 -1
  147. package/dist/types/src/components/ObjectSettings/ForeignKeys.d.ts.map +1 -1
  148. package/dist/types/src/components/ObjectSettings/ObjectSettingsContainer.d.ts.map +1 -1
  149. package/dist/types/src/components/ObjectSettings/index.d.ts +2 -1
  150. package/dist/types/src/components/ObjectSettings/index.d.ts.map +1 -1
  151. package/dist/types/src/components/PopoverRenameObject.d.ts +2 -2
  152. package/dist/types/src/components/PopoverRenameObject.d.ts.map +1 -1
  153. package/dist/types/src/components/PopoverRenameSpace.d.ts +1 -1
  154. package/dist/types/src/components/PopoverRenameSpace.d.ts.map +1 -1
  155. package/dist/types/src/components/RecordMain.d.ts +7 -0
  156. package/dist/types/src/components/RecordMain.d.ts.map +1 -0
  157. package/dist/types/src/components/SpacePluginSettings.d.ts.map +1 -1
  158. package/dist/types/src/components/SpacePresence.d.ts.map +1 -1
  159. package/dist/types/src/components/SpacePresence.stories.d.ts +1432 -4
  160. package/dist/types/src/components/SpacePresence.stories.d.ts.map +1 -1
  161. package/dist/types/src/components/SpaceSettings/SpaceSettingsContainer.d.ts.map +1 -1
  162. package/dist/types/src/components/SpaceSettings/SpaceSettingsContainer.stories.d.ts +1437 -4
  163. package/dist/types/src/components/SpaceSettings/SpaceSettingsContainer.stories.d.ts.map +1 -1
  164. package/dist/types/src/components/SyncStatus/SyncStatus.d.ts.map +1 -1
  165. package/dist/types/src/components/SyncStatus/SyncStatus.stories.d.ts +1438 -5
  166. package/dist/types/src/components/SyncStatus/SyncStatus.stories.d.ts.map +1 -1
  167. package/dist/types/src/components/ViewEditor.d.ts +1 -1
  168. package/dist/types/src/components/ViewEditor.d.ts.map +1 -1
  169. package/dist/types/src/components/index.d.ts +9 -3
  170. package/dist/types/src/components/index.d.ts.map +1 -1
  171. package/dist/types/src/events.d.ts.map +1 -1
  172. package/dist/types/src/hooks/index.d.ts +1 -0
  173. package/dist/types/src/hooks/index.d.ts.map +1 -1
  174. package/dist/types/src/hooks/useActiveSpace.d.ts.map +1 -1
  175. package/dist/types/src/hooks/useInputSurfaceLookup.d.ts +1 -1
  176. package/dist/types/src/hooks/useInputSurfaceLookup.d.ts.map +1 -1
  177. package/dist/types/src/hooks/usePath.d.ts +1 -1
  178. package/dist/types/src/hooks/usePath.d.ts.map +1 -1
  179. package/dist/types/src/hooks/useTypeOptions.d.ts +10 -0
  180. package/dist/types/src/hooks/useTypeOptions.d.ts.map +1 -0
  181. package/dist/types/src/meta.d.ts +0 -1
  182. package/dist/types/src/meta.d.ts.map +1 -1
  183. package/dist/types/src/translations.d.ts +1236 -26
  184. package/dist/types/src/translations.d.ts.map +1 -1
  185. package/dist/types/src/types/types.d.ts +78 -96
  186. package/dist/types/src/types/types.d.ts.map +1 -1
  187. package/dist/types/src/util.d.ts +10 -7
  188. package/dist/types/src/util.d.ts.map +1 -1
  189. package/dist/types/tsconfig.tsbuildinfo +1 -1
  190. package/package.json +63 -58
  191. package/src/SpacePlugin.ts +206 -220
  192. package/src/capabilities/app-graph-builder.ts +127 -69
  193. package/src/capabilities/app-graph-serializer.ts +7 -7
  194. package/src/capabilities/capabilities.ts +18 -12
  195. package/src/capabilities/identity-created.ts +1 -1
  196. package/src/capabilities/index.ts +0 -1
  197. package/src/capabilities/intent-resolver.ts +40 -28
  198. package/src/capabilities/react-root.tsx +4 -3
  199. package/src/capabilities/react-surface.tsx +50 -107
  200. package/src/capabilities/schema-defs.ts +3 -2
  201. package/src/capabilities/spaces-ready.ts +11 -8
  202. package/src/capabilities/state.ts +5 -4
  203. package/src/components/AwaitingObject.tsx +3 -3
  204. package/src/components/CollectionMain.tsx +2 -2
  205. package/src/components/CollectionSection.tsx +2 -2
  206. package/src/components/CreateDialog/CreateObjectDialog.stories.tsx +11 -10
  207. package/src/components/CreateDialog/CreateObjectDialog.tsx +24 -13
  208. package/src/components/CreateDialog/CreateObjectPanel.tsx +22 -11
  209. package/src/components/CreateDialog/CreateSpaceDialog.tsx +6 -5
  210. package/src/components/JoinDialog.tsx +7 -7
  211. package/src/components/MembersContainer.stories.tsx +36 -10
  212. package/src/components/MembersContainer.tsx +13 -14
  213. package/src/components/MenuFooter.tsx +2 -2
  214. package/src/components/ObjectDetailsPanel/ObjectDetailsPanel.tsx +52 -0
  215. package/src/components/ObjectDetailsPanel/ObjectForm.tsx +75 -0
  216. package/src/components/ObjectDetailsPanel/index.ts +7 -0
  217. package/src/components/ObjectSettings/AdvancedObjectSettings.tsx +4 -3
  218. package/src/components/ObjectSettings/BaseObjectSettings.stories.tsx +63 -0
  219. package/src/components/ObjectSettings/BaseObjectSettings.tsx +96 -26
  220. package/src/components/ObjectSettings/ForeignKeys.tsx +3 -3
  221. package/src/components/ObjectSettings/ObjectSettingsContainer.tsx +3 -2
  222. package/src/components/ObjectSettings/index.ts +3 -1
  223. package/src/components/PersistenceStatus.tsx +2 -2
  224. package/src/components/PopoverRenameObject.tsx +9 -15
  225. package/src/components/PopoverRenameSpace.tsx +4 -4
  226. package/src/components/RecordMain.tsx +87 -0
  227. package/src/components/SchemaContainer.tsx +5 -5
  228. package/src/components/SpacePluginSettings.tsx +8 -9
  229. package/src/components/SpacePresence.stories.tsx +23 -22
  230. package/src/components/SpacePresence.tsx +10 -10
  231. package/src/components/SpaceSettings/SpaceSettingsContainer.stories.tsx +17 -9
  232. package/src/components/SpaceSettings/SpaceSettingsContainer.tsx +19 -18
  233. package/src/components/SyncStatus/InlineSyncStatus.tsx +7 -7
  234. package/src/components/SyncStatus/SyncStatus.stories.tsx +6 -7
  235. package/src/components/SyncStatus/SyncStatus.tsx +93 -5
  236. package/src/components/ViewEditor.tsx +14 -20
  237. package/src/components/index.ts +2 -1
  238. package/src/events.ts +7 -7
  239. package/src/hooks/index.ts +1 -0
  240. package/src/hooks/useActiveSpace.ts +2 -2
  241. package/src/hooks/useInputSurfaceLookup.tsx +2 -2
  242. package/src/hooks/usePath.ts +1 -1
  243. package/src/hooks/useTypeOptions.ts +59 -0
  244. package/src/meta.ts +1 -3
  245. package/src/translations.ts +11 -8
  246. package/src/types/types.ts +21 -13
  247. package/src/util.tsx +97 -40
  248. package/dist/lib/browser/CollectionMain-D2B75XBS.mjs.map +0 -7
  249. package/dist/lib/browser/ObjectDetailsPanel-YPTDQKMG.mjs +0 -88
  250. package/dist/lib/browser/ObjectDetailsPanel-YPTDQKMG.mjs.map +0 -7
  251. package/dist/lib/browser/app-graph-builder-7CZZJS3S.mjs.map +0 -7
  252. package/dist/lib/browser/app-graph-serializer-H6AW7KGS.mjs.map +0 -7
  253. package/dist/lib/browser/chunk-CEFHNVU7.mjs +0 -20
  254. package/dist/lib/browser/chunk-CEFHNVU7.mjs.map +0 -7
  255. package/dist/lib/browser/chunk-FBCGT5YY.mjs +0 -13
  256. package/dist/lib/browser/chunk-FBCGT5YY.mjs.map +0 -7
  257. package/dist/lib/browser/chunk-JS3MMC42.mjs +0 -19
  258. package/dist/lib/browser/chunk-JS3MMC42.mjs.map +0 -7
  259. package/dist/lib/browser/chunk-QACNNDOT.mjs.map +0 -7
  260. package/dist/lib/browser/chunk-SGTQ52SU.mjs.map +0 -7
  261. package/dist/lib/browser/chunk-V7MJSSBQ.mjs.map +0 -7
  262. package/dist/lib/browser/chunk-VLBRSGJ2.mjs +0 -94
  263. package/dist/lib/browser/chunk-VLBRSGJ2.mjs.map +0 -7
  264. package/dist/lib/browser/chunk-XUYKJUU7.mjs.map +0 -7
  265. package/dist/lib/browser/intent-resolver-TIXVDYN7.mjs.map +0 -7
  266. package/dist/lib/browser/react-root-N2J7TDRX.mjs.map +0 -7
  267. package/dist/lib/browser/react-surface-TPNLWJJH.mjs.map +0 -7
  268. package/dist/lib/browser/schema-defs-Z6FC4AHC.mjs.map +0 -7
  269. package/dist/lib/browser/schema-tools-BNP4JTD7.mjs +0 -124
  270. package/dist/lib/browser/schema-tools-BNP4JTD7.mjs.map +0 -7
  271. package/dist/lib/browser/spaces-ready-TOPG6IV4.mjs.map +0 -7
  272. package/dist/lib/browser/state-QYZAB45H.mjs.map +0 -7
  273. package/dist/lib/node-esm/CollectionMain-ZJIFCWKZ.mjs.map +0 -7
  274. package/dist/lib/node-esm/ObjectDetailsPanel-QKZEDSZK.mjs +0 -89
  275. package/dist/lib/node-esm/ObjectDetailsPanel-QKZEDSZK.mjs.map +0 -7
  276. package/dist/lib/node-esm/app-graph-builder-KGIGWC72.mjs.map +0 -7
  277. package/dist/lib/node-esm/app-graph-serializer-2ICUGQQT.mjs.map +0 -7
  278. package/dist/lib/node-esm/chunk-4AOMYKDE.mjs.map +0 -7
  279. package/dist/lib/node-esm/chunk-5HHYE264.mjs +0 -20
  280. package/dist/lib/node-esm/chunk-5HHYE264.mjs.map +0 -7
  281. package/dist/lib/node-esm/chunk-5T3ZH23B.mjs +0 -21
  282. package/dist/lib/node-esm/chunk-5T3ZH23B.mjs.map +0 -7
  283. package/dist/lib/node-esm/chunk-6X5DLJM5.mjs.map +0 -7
  284. package/dist/lib/node-esm/chunk-HWNG4MEU.mjs.map +0 -7
  285. package/dist/lib/node-esm/chunk-JH6F4C3I.mjs.map +0 -7
  286. package/dist/lib/node-esm/chunk-P442DOQ3.mjs.map +0 -7
  287. package/dist/lib/node-esm/chunk-SSLBYZEY.mjs +0 -96
  288. package/dist/lib/node-esm/chunk-SSLBYZEY.mjs.map +0 -7
  289. package/dist/lib/node-esm/intent-resolver-MHGHRGDT.mjs.map +0 -7
  290. package/dist/lib/node-esm/react-root-KW3TGJGY.mjs.map +0 -7
  291. package/dist/lib/node-esm/react-surface-UUIUUD6P.mjs.map +0 -7
  292. package/dist/lib/node-esm/schema-defs-WHJM7UZE.mjs.map +0 -7
  293. package/dist/lib/node-esm/schema-tools-KWW5PTML.mjs +0 -126
  294. package/dist/lib/node-esm/schema-tools-KWW5PTML.mjs.map +0 -7
  295. package/dist/lib/node-esm/spaces-ready-HIUKNDZK.mjs.map +0 -7
  296. package/dist/lib/node-esm/state-ZVEHQ4BJ.mjs.map +0 -7
  297. package/dist/types/src/capabilities/schema-tool.test.d.ts +0 -2
  298. package/dist/types/src/capabilities/schema-tool.test.d.ts.map +0 -1
  299. package/dist/types/src/capabilities/schema-tools.d.ts +0 -13
  300. package/dist/types/src/capabilities/schema-tools.d.ts.map +0 -1
  301. package/dist/types/src/components/ObjectDetailsPanel.d.ts +0 -9
  302. package/dist/types/src/components/ObjectDetailsPanel.d.ts.map +0 -1
  303. package/src/capabilities/schema-tool.test.ts +0 -44
  304. package/src/capabilities/schema-tools.ts +0 -125
  305. package/src/components/ObjectDetailsPanel.tsx +0 -77
@@ -2,7 +2,7 @@
2
2
  // Copyright 2024 DXOS.org
3
3
  //
4
4
 
5
- import { Option } from 'effect';
5
+ import * as Option from 'effect/Option';
6
6
  import { useEffect, useState } from 'react';
7
7
 
8
8
  import { type ReadableGraph } from '@dxos/plugin-graph';
@@ -0,0 +1,59 @@
1
+ //
2
+ // Copyright 2025 DXOS.org
3
+ //
4
+
5
+ import { useMemo } from 'react';
6
+
7
+ import { useCapabilities } from '@dxos/app-framework';
8
+ import { Type } from '@dxos/echo';
9
+ import { ClientCapabilities } from '@dxos/plugin-client';
10
+ import { useClient } from '@dxos/react-client';
11
+ import { type Space } from '@dxos/react-client/echo';
12
+ import { useTranslation } from '@dxos/react-ui';
13
+ import { DataType, type TypenameAnnotation, getTypenames } from '@dxos/schema';
14
+
15
+ import { SpaceCapabilities } from '../capabilities';
16
+
17
+ const OMIT = [DataType.Collection.typename, Type.getTypename(DataType.QueryCollection)];
18
+
19
+ export const useTypeOptions = ({ space, annotation }: { space?: Space; annotation: TypenameAnnotation[] }) => {
20
+ const { t } = useTranslation();
21
+ const client = useClient();
22
+
23
+ const schemaWhitelists = useCapabilities(ClientCapabilities.SchemaWhiteList);
24
+ const whitelistedTypenames = useMemo(
25
+ () => new Set(schemaWhitelists.flatMap((typeArray) => typeArray.map((type) => Type.getTypename(type)))),
26
+ [schemaWhitelists],
27
+ );
28
+
29
+ const objectForms = useCapabilities(SpaceCapabilities.ObjectForm);
30
+ const objectFormTypenames = useMemo(
31
+ () =>
32
+ new Set(
33
+ objectForms
34
+ .map((form) => Type.getTypename(form.objectSchema))
35
+ // TODO(wittjosiah): Remove.
36
+ .filter((typename) => !OMIT.includes(typename) && !typename.endsWith('View')),
37
+ ),
38
+ [objectForms],
39
+ );
40
+
41
+ const typenames = getTypenames({
42
+ annotation,
43
+ whitelistedTypenames,
44
+ objectFormTypenames,
45
+ space,
46
+ client,
47
+ });
48
+
49
+ return useMemo(
50
+ () =>
51
+ typenames
52
+ .map((typename) => ({
53
+ value: typename,
54
+ label: t('typename label', { ns: typename, defaultValue: typename }),
55
+ }))
56
+ .toSorted((a, b) => a.label.localeCompare(b.label)),
57
+ [t, typenames],
58
+ );
59
+ };
package/src/meta.ts CHANGED
@@ -4,10 +4,8 @@
4
4
 
5
5
  import { type PluginMeta } from '@dxos/app-framework';
6
6
 
7
- export const SPACE_PLUGIN = 'dxos.org/plugin/space';
8
-
9
7
  export const meta: PluginMeta = {
10
- id: SPACE_PLUGIN,
8
+ id: 'dxos.org/plugin/space',
11
9
  name: 'Spaces',
12
10
  icon: 'ph--planet--regular',
13
11
  };
@@ -2,7 +2,8 @@
2
2
  // Copyright 2023 DXOS.org
3
3
  //
4
4
 
5
- import { StoredSchema } from '@dxos/echo-schema';
5
+ import { Type } from '@dxos/echo';
6
+ import { StoredSchema } from '@dxos/echo/internal';
6
7
  import { type Resource } from '@dxos/react-ui';
7
8
  import { DataType } from '@dxos/schema';
8
9
 
@@ -21,7 +22,7 @@ export const translations = [
21
22
  'rename object label': 'Rename collection',
22
23
  'delete object label': 'Delete collection',
23
24
  },
24
- [DataType.QueryCollection.typename]: {
25
+ [Type.getTypename(DataType.QueryCollection)]: {
25
26
  'typename label': 'Smart Collection',
26
27
  'typename label_zero': 'Smart Collections',
27
28
  'typename label_one': 'Smart Collection',
@@ -39,7 +40,7 @@ export const translations = [
39
40
  'rename object label': 'Rename record type',
40
41
  'delete object label': 'Delete record type',
41
42
  },
42
- [DataType.View.typename]: {
43
+ [Type.getTypename(DataType.View)]: {
43
44
  'typename label': 'View',
44
45
  'typename label_zero': 'Views',
45
46
  'typename label_one': 'View',
@@ -69,7 +70,7 @@ export const translations = [
69
70
  'typename label_other': 'People',
70
71
  'object name placeholder': 'New person',
71
72
  },
72
- [DataType.Project.typename]: {
73
+ [Type.getTypename(DataType.Project)]: {
73
74
  'typename label': 'Project',
74
75
  'typename label_zero': 'Projects',
75
76
  'typename label_one': 'Project',
@@ -189,10 +190,12 @@ export const translations = [
189
190
  'creating in collection label': 'In Collection',
190
191
  'clear input label': 'Clear',
191
192
  'expose object label': 'Expose in navtree',
193
+ 'add tag label': 'Add tag',
192
194
  'advanced settings label': 'Advanced',
193
195
  'foreign keys': 'Foreign Keys',
194
196
  'add key': 'Add Key',
195
197
  'open space settings label': 'Open settings',
198
+ 'related objects label': 'Related',
196
199
 
197
200
  'row details no selection label': 'No objects selected',
198
201
  'companion selected objects label': 'Selected',
@@ -214,10 +217,10 @@ export const translations = [
214
217
  'space settings properties label': 'General settings',
215
218
  'space properties settings verbose label': 'Manage space properties',
216
219
  'space properties settings description': 'You can configure how this space is displayed in the app here.',
217
- 'space settings schema label': 'Schema',
218
- 'schema verbose label': 'Manage schema',
219
- 'schema description': 'You can manage all of the schema stored within this space here.',
220
- 'no schemas found message': 'No schemas found',
220
+ 'space settings schema label': 'Record types',
221
+ 'schema verbose label': 'Manage record types',
222
+ 'schema description': 'You can manage all of the record types stored within this space here.',
223
+ 'no schemas found message': 'No record types found',
221
224
  'display name input placeholder': 'Space name',
222
225
  'display name description': 'Name of the space as it appears in the app.',
223
226
  'icon description': 'Icon used to represent the space in the app.',
@@ -2,11 +2,11 @@
2
2
  // Copyright 2023 DXOS.org
3
3
  //
4
4
 
5
- import { Schema } from 'effect';
5
+ import * as Schema from 'effect/Schema';
6
6
 
7
7
  import { type AnyIntentChain } from '@dxos/app-framework';
8
8
  import { type Obj, Type } from '@dxos/echo';
9
- import { EchoSchema, StoredSchema, type TypedObject, type BaseObject } from '@dxos/echo-schema';
9
+ import { type BaseObject, EchoSchema, StoredSchema } from '@dxos/echo/internal';
10
10
  import { type PublicKey } from '@dxos/react-client';
11
11
  // TODO(wittjosiah): This pulls in full client.
12
12
  import { EchoObjectSchema, ReactiveObjectSchema, type Space, SpaceSchema } from '@dxos/react-client/echo';
@@ -14,9 +14,10 @@ import { CancellableInvitationObservable, Invitation } from '@dxos/react-client/
14
14
  import { DataType, FieldSchema, TypenameAnnotationId } from '@dxos/schema';
15
15
  import { type ComplexMap } from '@dxos/util';
16
16
 
17
- import { SPACE_PLUGIN } from '../meta';
17
+ import { meta } from '../meta';
18
+
19
+ export const SPACE_DIRECTORY_HANDLE = `${meta.id}/directory`;
18
20
 
19
- export const SPACE_DIRECTORY_HANDLE = 'dxos.org/plugin/space/directory';
20
21
  export const SPACE_TYPE = 'dxos.org/type/Space';
21
22
 
22
23
  export type ObjectViewerProps = {
@@ -105,8 +106,7 @@ export const SpaceForm = Schema.Struct({
105
106
  });
106
107
 
107
108
  export type ObjectForm<T extends BaseObject = BaseObject> = {
108
- // TODO(dmaretskyi): Change to Schema.Schema.AnyNoContext
109
- objectSchema: TypedObject;
109
+ objectSchema: Schema.Schema.AnyNoContext;
110
110
  formSchema?: Schema.Schema<T, any>;
111
111
  hidden?: boolean;
112
112
  getIntent: (props: T, options: { space: Space }) => AnyIntentChain;
@@ -114,7 +114,7 @@ export type ObjectForm<T extends BaseObject = BaseObject> = {
114
114
 
115
115
  export const defineObjectForm = <T extends BaseObject>(form: ObjectForm<T>) => form;
116
116
 
117
- export const SPACE_ACTION = `${SPACE_PLUGIN}/action`;
117
+ export const SPACE_ACTION = `${meta.id}/action`;
118
118
 
119
119
  export namespace SpaceAction {
120
120
  export class OpenCreateSpace extends Schema.TaggedClass<OpenCreateSpace>()(`${SPACE_ACTION}/open-create-space`, {
@@ -230,6 +230,8 @@ export namespace SpaceAction {
230
230
  input: Schema.Struct({
231
231
  space: SpaceSchema,
232
232
  typename: Schema.String,
233
+ // TODO(wittjosiah): This is leaky.
234
+ show: Schema.optional(Schema.Boolean),
233
235
  }),
234
236
  output: Schema.Struct({}),
235
237
  }) {}
@@ -238,8 +240,13 @@ export namespace SpaceAction {
238
240
  input: Schema.Struct({
239
241
  space: SpaceSchema,
240
242
  name: Schema.optional(Schema.String),
243
+ typename: Schema.optional(Schema.String),
244
+ // TODO(wittjosiah): Semantic version format.
245
+ version: Schema.optional(Schema.String),
241
246
  // TODO(wittjosiah): Schema for schema?
242
247
  schema: Schema.Any,
248
+ // TODO(wittjosiah): This is leaky.
249
+ show: Schema.optional(Schema.Boolean),
243
250
  }),
244
251
  output: Schema.Struct({
245
252
  // TODO(wittjosiah): ObjectId.
@@ -270,7 +277,9 @@ export namespace SpaceAction {
270
277
  export class OpenCreateObject extends Schema.TaggedClass<OpenCreateObject>()(`${SPACE_ACTION}/open-create-object`, {
271
278
  input: Schema.Struct({
272
279
  target: Schema.Union(SpaceSchema, DataType.Collection),
280
+ views: Schema.optional(Schema.Boolean),
273
281
  typename: Schema.optional(Schema.String),
282
+ initialFormValues: Schema.optional(Schema.Any),
274
283
  navigable: Schema.optional(Schema.Boolean),
275
284
  // TODO(wittjosiah): This is a function, is there a better way to handle this?
276
285
  onCreateObject: Schema.optional(Schema.Any),
@@ -362,11 +371,9 @@ export namespace CollectionAction {
362
371
 
363
372
  export const QueryCollectionForm = Schema.Struct({
364
373
  name: Schema.optional(Schema.String),
365
- typename: Schema.optional(
366
- Schema.String.annotations({
367
- [TypenameAnnotationId]: ['object-form'],
368
- }),
369
- ),
374
+ typename: Schema.String.annotations({
375
+ [TypenameAnnotationId]: ['object-form'],
376
+ }),
370
377
  });
371
378
 
372
379
  export class CreateQueryCollection extends Schema.TaggedClass<CreateQueryCollection>()(
@@ -374,7 +381,8 @@ export namespace CollectionAction {
374
381
  {
375
382
  input: QueryCollectionForm,
376
383
  output: Schema.Struct({
377
- object: DataType.QueryCollection,
384
+ // TODO(wittjosiah): Remove cast.
385
+ object: EchoObjectSchema, // DataType.QueryCollection,
378
386
  }),
379
387
  },
380
388
  ) {}
package/src/util.tsx CHANGED
@@ -3,33 +3,33 @@
3
3
  //
4
4
 
5
5
  import { Rx } from '@effect-rx/rx-react';
6
- import { pipe } from 'effect';
6
+ import * as Function from 'effect/Function';
7
7
 
8
- import { chain, createIntent, LayoutAction, type PromiseIntentDispatcher } from '@dxos/app-framework';
8
+ import { LayoutAction, type PromiseIntentDispatcher, chain, createIntent } from '@dxos/app-framework';
9
9
  import { Obj, Ref, Type } from '@dxos/echo';
10
- import { type AnyEchoObject, EXPANDO_TYPENAME } from '@dxos/echo-schema';
10
+ import { type AnyEchoObject, EXPANDO_TYPENAME } from '@dxos/echo/internal';
11
11
  import { invariant } from '@dxos/invariant';
12
12
  import { Migrations } from '@dxos/migrations';
13
13
  import {
14
14
  ACTION_GROUP_TYPE,
15
15
  ACTION_TYPE,
16
- type ReadableGraph,
17
16
  type ActionData,
18
17
  type InvokeParams,
19
18
  type Node,
20
19
  type NodeArg,
20
+ type ReadableGraph,
21
21
  isGraphNode,
22
22
  } from '@dxos/plugin-graph';
23
- import { fullyQualifiedId, getSpace, type QueryResult, SpaceState, type Space, isSpace } from '@dxos/react-client/echo';
23
+ import { type QueryResult, type Space, SpaceState, fullyQualifiedId, getSpace, isSpace } from '@dxos/react-client/echo';
24
24
  import { ATTENDABLE_PATH_SEPARATOR } from '@dxos/react-ui-attention';
25
25
  import { type TreeData } from '@dxos/react-ui-list';
26
- import { DataType } from '@dxos/schema';
26
+ import { DataType, getTypenameFromQuery } from '@dxos/schema';
27
27
 
28
- import { SPACE_PLUGIN } from './meta';
29
- import { SpaceAction, SPACE_TYPE, type ObjectForm } from './types';
28
+ import { meta } from './meta';
29
+ import { type ObjectForm, SPACE_TYPE, SpaceAction } from './types';
30
30
 
31
- export const SPACES = `${SPACE_PLUGIN}-spaces`;
32
- export const COMPOSER_SPACE_LOCK = 'dxos.org/plugin/space/lock';
31
+ export const SPACES = `${meta.id}-spaces`;
32
+ export const COMPOSER_SPACE_LOCK = `${meta.id}/lock`;
33
33
  // TODO(wittjosiah): Remove.
34
34
  export const SHARED = 'shared-spaces';
35
35
 
@@ -57,8 +57,8 @@ export const getSpaceDisplayName = (
57
57
  : namesCache[space.id]
58
58
  ? namesCache[space.id]
59
59
  : personal
60
- ? ['personal space label', { ns: SPACE_PLUGIN }]
61
- : ['unnamed space label', { ns: SPACE_PLUGIN }];
60
+ ? ['personal space label', { ns: meta.id }]
61
+ : ['unnamed space label', { ns: meta.id }];
62
62
  };
63
63
 
64
64
  const getCollectionGraphNodePartials = ({
@@ -145,16 +145,15 @@ const getQueryCollectionNodePartials = ({
145
145
  space: Space;
146
146
  resolve: (typename: string) => Record<string, any>;
147
147
  }) => {
148
+ const typename = getTypenameFromQuery(collection.query);
148
149
  return {
149
- icon: collection.query.typename && resolve(collection.query.typename)?.icon,
150
+ icon: typename && resolve(typename)?.icon,
150
151
  acceptPersistenceClass: new Set(['echo']),
151
152
  acceptPersistenceKey: new Set([space.id]),
152
153
  role: 'branch',
153
154
  canDrop: (source: TreeData) => {
154
155
  return (
155
- isGraphNode(source.item) &&
156
- Obj.isObject(source.item.data) &&
157
- Obj.getTypename(source.item.data) === collection.query.typename
156
+ isGraphNode(source.item) && Obj.isObject(source.item.data) && Obj.getTypename(source.item.data) === typename
158
157
  );
159
158
  },
160
159
  onTransferStart: (child: Node<Obj.Any>, index?: number) => {
@@ -245,40 +244,40 @@ export const constructSpaceNode = ({
245
244
  nodes: [
246
245
  {
247
246
  id: `settings${ATTENDABLE_PATH_SEPARATOR}${space.id}`,
248
- type: `${SPACE_PLUGIN}/settings`,
247
+ type: `${meta.id}/settings`,
249
248
  data: null,
250
249
  properties: {
251
- label: ['settings panel label', { ns: SPACE_PLUGIN }],
250
+ label: ['settings panel label', { ns: meta.id }],
252
251
  icon: 'ph--faders--regular',
253
252
  disposition: 'alternate-tree',
254
253
  },
255
254
  nodes: [
256
255
  {
257
256
  id: `properties-settings${ATTENDABLE_PATH_SEPARATOR}${space.id}`,
258
- type: `${SPACE_PLUGIN}/properties`,
259
- data: `${SPACE_PLUGIN}/properties`,
257
+ type: `${meta.id}/properties`,
258
+ data: `${meta.id}/properties`,
260
259
  properties: {
261
- label: ['space settings properties label', { ns: SPACE_PLUGIN }],
260
+ label: ['space settings properties label', { ns: meta.id }],
262
261
  icon: 'ph--sliders--regular',
263
262
  position: 'hoist',
264
263
  },
265
264
  },
266
265
  {
267
266
  id: `members-settings${ATTENDABLE_PATH_SEPARATOR}${space.id}`,
268
- type: `${SPACE_PLUGIN}/members`,
269
- data: `${SPACE_PLUGIN}/members`,
267
+ type: `${meta.id}/members`,
268
+ data: `${meta.id}/members`,
270
269
  properties: {
271
- label: ['members panel label', { ns: SPACE_PLUGIN }],
270
+ label: ['members panel label', { ns: meta.id }],
272
271
  icon: 'ph--users--regular',
273
272
  position: 'hoist',
274
273
  },
275
274
  },
276
275
  {
277
276
  id: `schema-settings${ATTENDABLE_PATH_SEPARATOR}${space.id}`,
278
- type: `${SPACE_PLUGIN}/schema`,
279
- data: `${SPACE_PLUGIN}/schema`,
277
+ type: `${meta.id}/schema`,
278
+ data: `${meta.id}/schema`,
280
279
  properties: {
281
- label: ['space settings schema label', { ns: SPACE_PLUGIN }],
280
+ label: ['space settings schema label', { ns: meta.id }],
282
281
  icon: 'ph--shapes--regular',
283
282
  },
284
283
  },
@@ -312,7 +311,7 @@ export const constructSpaceActions = ({
312
311
  await dispatch(createIntent(SpaceAction.Migrate, { space }));
313
312
  },
314
313
  properties: {
315
- label: ['migrate space label', { ns: SPACE_PLUGIN }],
314
+ label: ['migrate space label', { ns: meta.id }],
316
315
  icon: 'ph--database--regular',
317
316
  disposition: 'list-item-primary',
318
317
  disabled: migrating || Migrations.running(space),
@@ -329,7 +328,7 @@ export const constructSpaceActions = ({
329
328
  await dispatch(createIntent(SpaceAction.OpenCreateObject, { target: space }));
330
329
  },
331
330
  properties: {
332
- label: ['create object in space label', { ns: SPACE_PLUGIN }],
331
+ label: ['create object in space label', { ns: meta.id }],
333
332
  icon: 'ph--plus--regular',
334
333
  disposition: 'item',
335
334
  testId: 'spacePlugin.createObject',
@@ -342,7 +341,7 @@ export const constructSpaceActions = ({
342
341
  await dispatch(createIntent(SpaceAction.Rename, { space, caller: params?.caller }));
343
342
  },
344
343
  properties: {
345
- label: ['rename space label', { ns: SPACE_PLUGIN }],
344
+ label: ['rename space label', { ns: meta.id }],
346
345
  icon: 'ph--pencil-simple-line--regular',
347
346
  keyBinding: {
348
347
  macos: 'shift+F6',
@@ -359,12 +358,13 @@ export const constructSpaceActions = ({
359
358
  export const createStaticSchemaNode = ({ schema, space }: { schema: Type.Obj.Any; space: Space }) => {
360
359
  return {
361
360
  id: `${space.id}/${Type.getTypename(schema)}`,
362
- type: `${SPACE_PLUGIN}/static-schema`,
361
+ type: `${meta.id}/static-schema`,
363
362
  data: schema,
364
363
  properties: {
365
364
  label: ['typename label', { ns: Type.getTypename(schema), default: Type.getTypename(schema) }],
366
365
  icon: 'ph--database--regular',
367
366
  role: 'branch',
367
+ selectable: false,
368
368
  canDrop: () => false,
369
369
  space,
370
370
  },
@@ -374,15 +374,36 @@ export const createStaticSchemaNode = ({ schema, space }: { schema: Type.Obj.Any
374
374
  export const createStaticSchemaActions = ({
375
375
  schema,
376
376
  space,
377
+ dispatch,
377
378
  deletable,
378
379
  }: {
379
380
  schema: Type.Obj.Any;
380
381
  space: Space;
382
+ dispatch: PromiseIntentDispatcher;
381
383
  deletable: boolean;
382
384
  }) => {
383
385
  const getId = (id: string) => `${space.id}/${Type.getTypename(schema)}/${id}`;
384
386
 
385
387
  const actions: NodeArg<ActionData>[] = [
388
+ {
389
+ id: getId(SpaceAction.AddObject._tag),
390
+ type: ACTION_TYPE,
391
+ data: async () => {
392
+ await dispatch(
393
+ createIntent(SpaceAction.OpenCreateObject, {
394
+ target: space,
395
+ views: true,
396
+ initialFormValues: { typename: Type.getTypename(schema) },
397
+ }),
398
+ );
399
+ },
400
+ properties: {
401
+ label: ['add view to schema label', { ns: Type.getTypename(DataType.StoredSchema) }],
402
+ icon: 'ph--plus--regular',
403
+ disposition: 'list-item-primary',
404
+ testId: 'spacePlugin.addViewToSchema',
405
+ },
406
+ },
386
407
  {
387
408
  id: getId(SpaceAction.RenameObject._tag),
388
409
  type: ACTION_TYPE,
@@ -424,19 +445,21 @@ export const createStaticSchemaActions = ({
424
445
  export const createObjectNode = ({
425
446
  space,
426
447
  object,
448
+ disposition,
427
449
  droppable = true,
428
450
  navigable = false,
429
451
  resolve,
430
452
  }: {
431
453
  space: Space;
432
454
  object: Obj.Any;
455
+ disposition?: string;
433
456
  droppable?: boolean;
434
457
  navigable?: boolean;
435
458
  resolve: (typename: string) => Record<string, any>;
436
459
  }) => {
437
460
  const type = Obj.getTypename(object);
438
461
  if (!type) {
439
- return undefined;
462
+ return null;
440
463
  }
441
464
 
442
465
  const metadata = resolve(type);
@@ -450,10 +473,19 @@ export const createObjectNode = ({
450
473
  ? getViewGraphNodePartials({ view: object, resolve })
451
474
  : metadata.graphProps;
452
475
 
453
- const label = Obj.getLabel(object) ||
476
+ // TODO(wittjosiah): Obj.getLabel isn't triggering reactivity in some cases.
477
+ // e.g., create new collection with no name and rename it.
478
+ const label = (object as any).name ||
479
+ Obj.getLabel(object) ||
454
480
  // TODO(wittjosiah): Remove metadata labels.
455
481
  metadata.label?.(object) || ['object name placeholder', { ns: type, default: 'New item' }];
456
482
 
483
+ const selectable =
484
+ (!Obj.instanceOf(DataType.StoredSchema, object) &&
485
+ !Obj.instanceOf(DataType.QueryCollection, object) &&
486
+ !Obj.instanceOf(DataType.Collection, object)) ||
487
+ (navigable && Obj.instanceOf(DataType.Collection, object));
488
+
457
489
  return {
458
490
  id: fullyQualifiedId(object),
459
491
  type,
@@ -462,9 +494,11 @@ export const createObjectNode = ({
462
494
  properties: {
463
495
  label,
464
496
  icon: metadata.icon ?? 'ph--placeholder--regular',
497
+ disposition,
465
498
  testId: 'spacePlugin.object',
466
499
  persistenceClass: 'echo',
467
500
  persistenceKey: space?.id,
501
+ selectable,
468
502
  canDrop: (source: TreeData) => {
469
503
  return droppable && isGraphNode(source.item) && Obj.isObject(source.item.data);
470
504
  },
@@ -497,7 +531,7 @@ export const constructObjectActions = ({
497
531
 
498
532
  const queryCollection = Obj.instanceOf(DataType.QueryCollection, object) ? object : undefined;
499
533
  const matchingObjectForm = queryCollection
500
- ? objectForms.find((form) => Type.getTypename(form.objectSchema) === queryCollection.query.typename)
534
+ ? objectForms.find((form) => Type.getTypename(form.objectSchema) === getTypenameFromQuery(queryCollection.query))
501
535
  : undefined;
502
536
 
503
537
  const actions: NodeArg<ActionData>[] = [
@@ -510,7 +544,7 @@ export const constructObjectActions = ({
510
544
  await dispatch(createIntent(SpaceAction.OpenCreateObject, { target: object }));
511
545
  },
512
546
  properties: {
513
- label: ['create object in collection label', { ns: SPACE_PLUGIN }],
547
+ label: ['create object in collection label', { ns: meta.id }],
514
548
  icon: 'ph--plus--regular',
515
549
  disposition: 'list-item-primary',
516
550
  testId: 'spacePlugin.createObject',
@@ -518,6 +552,29 @@ export const constructObjectActions = ({
518
552
  },
519
553
  ]
520
554
  : []),
555
+ ...(Obj.instanceOf(DataType.StoredSchema, object)
556
+ ? [
557
+ {
558
+ id: getId(SpaceAction.AddObject._tag),
559
+ type: ACTION_TYPE,
560
+ data: async () => {
561
+ await dispatch(
562
+ createIntent(SpaceAction.OpenCreateObject, {
563
+ target: space,
564
+ views: true,
565
+ initialFormValues: { typename: object.typename },
566
+ }),
567
+ );
568
+ },
569
+ properties: {
570
+ label: ['add view to schema label', { ns: Type.getTypename(DataType.StoredSchema) }],
571
+ icon: 'ph--plus--regular',
572
+ disposition: 'list-item-primary',
573
+ testId: 'spacePlugin.addViewToSchema',
574
+ },
575
+ },
576
+ ]
577
+ : []),
521
578
  ...(matchingObjectForm
522
579
  ? [
523
580
  {
@@ -528,12 +585,12 @@ export const constructObjectActions = ({
528
585
  await dispatch(
529
586
  createIntent(SpaceAction.OpenCreateObject, {
530
587
  target: space,
531
- typename: queryCollection?.query.typename,
588
+ typename: queryCollection ? getTypenameFromQuery(queryCollection.query) : undefined,
532
589
  }),
533
590
  );
534
591
  } else {
535
592
  await dispatch(
536
- pipe(
593
+ Function.pipe(
537
594
  matchingObjectForm.getIntent({}, { space }),
538
595
  chain(SpaceAction.AddObject, { target: space, hidden: true }),
539
596
  chain(LayoutAction.Open, { part: 'main' }),
@@ -542,7 +599,7 @@ export const constructObjectActions = ({
542
599
  }
543
600
  },
544
601
  properties: {
545
- label: ['create object in smart collection label', { ns: SPACE_PLUGIN }],
602
+ label: ['create object in smart collection label', { ns: meta.id }],
546
603
  icon: 'ph--plus--regular',
547
604
  disposition: 'list-item-primary',
548
605
  testId: 'spacePlugin.createObject',
@@ -599,7 +656,7 @@ export const constructObjectActions = ({
599
656
  await navigator.clipboard.writeText(url);
600
657
  },
601
658
  properties: {
602
- label: ['copy link label', { ns: SPACE_PLUGIN }],
659
+ label: ['copy link label', { ns: meta.id }],
603
660
  icon: 'ph--link--regular',
604
661
  disposition: 'list-item',
605
662
  testId: 'spacePlugin.copyLink',
@@ -615,7 +672,7 @@ export const constructObjectActions = ({
615
672
  await dispatch(createIntent(LayoutAction.Expose, { part: 'navigation', subject: fullyQualifiedId(object) }));
616
673
  },
617
674
  properties: {
618
- label: ['expose object label', { ns: SPACE_PLUGIN }],
675
+ label: ['expose object label', { ns: meta.id }],
619
676
  icon: 'ph--eye--regular',
620
677
  disposition: 'heading-list-item',
621
678
  testId: 'spacePlugin.exposeObject',
@@ -1,7 +0,0 @@
1
- {
2
- "version": 3,
3
- "sources": ["../../../src/components/CollectionMain.tsx"],
4
- "sourcesContent": ["//\n// Copyright 2023 DXOS.org\n//\n\nimport React from 'react';\n\nimport { useTranslation } from '@dxos/react-ui';\nimport { baseSurface, descriptionMessage, mx } from '@dxos/react-ui-theme';\nimport { type DataType } from '@dxos/schema';\n\nimport { SPACE_PLUGIN } from '../meta';\n\nexport const CollectionMain = ({ collection }: { collection: DataType.Collection }) => {\n const { t } = useTranslation(SPACE_PLUGIN);\n\n return (\n <div\n role='none'\n className={mx(baseSurface, 'min-bs-screen is-full flex items-center justify-center p-8')}\n data-testid='composer.firstRunMessage'\n >\n <p\n role='alert'\n className={mx(descriptionMessage, 'rounded-md p-8 font-normal text-lg max-is-[24rem] break-words')}\n >\n {collection.name ?? t('unnamed collection label')}\n </p>\n </div>\n );\n};\n\nexport default CollectionMain;\n"],
5
- "mappings": ";;;;;;AAIA,OAAOA,WAAW;AAElB,SAASC,sBAAsB;AAC/B,SAASC,aAAaC,oBAAoBC,UAAU;AAK7C,IAAMC,iBAAiB,CAAC,EAAEC,WAAU,MAAuC;;;AAChF,UAAM,EAAEC,EAAC,IAAKC,eAAeC,YAAAA;AAE7B,WACE,sBAAA,cAACC,OAAAA;MACCC,MAAK;MACLC,WAAWC,GAAGC,aAAa,4DAAA;MAC3BC,eAAY;OAEZ,sBAAA,cAACC,KAAAA;MACCL,MAAK;MACLC,WAAWC,GAAGI,oBAAoB,+DAAA;OAEjCX,WAAWY,QAAQX,EAAE,0BAAA,CAAA,CAAA;;;;AAI9B;AAEA,IAAA,yBAAeF;",
6
- "names": ["React", "useTranslation", "baseSurface", "descriptionMessage", "mx", "CollectionMain", "collection", "t", "useTranslation", "SPACE_PLUGIN", "div", "role", "className", "mx", "baseSurface", "data-testid", "p", "descriptionMessage", "name"]
7
- }