@dxos/plugin-space 0.8.4-main.84f28bd → 0.8.4-main.ae835ea

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 (310) hide show
  1. package/dist/lib/browser/CollectionMain-HTKSZCRR.mjs +31 -0
  2. package/dist/lib/browser/CollectionMain-HTKSZCRR.mjs.map +7 -0
  3. package/dist/lib/browser/ObjectDetailsPanel-5B45G744.mjs +145 -0
  4. package/dist/lib/browser/ObjectDetailsPanel-5B45G744.mjs.map +7 -0
  5. package/dist/lib/browser/ObjectSettings-UFTKBP7B.mjs +146 -0
  6. package/dist/lib/browser/ObjectSettings-UFTKBP7B.mjs.map +7 -0
  7. package/dist/lib/browser/RecordMain-BCSXTSEB.mjs +99 -0
  8. package/dist/lib/browser/RecordMain-BCSXTSEB.mjs.map +7 -0
  9. package/dist/lib/browser/app-graph-builder-QJFO4ANM.mjs +520 -0
  10. package/dist/lib/browser/app-graph-builder-QJFO4ANM.mjs.map +7 -0
  11. package/dist/lib/browser/{app-graph-serializer-UKYMBX4O.mjs → app-graph-serializer-3R5NVV7U.mjs} +14 -14
  12. package/dist/lib/browser/app-graph-serializer-3R5NVV7U.mjs.map +7 -0
  13. package/dist/lib/browser/chunk-2NS3VPSY.mjs +20 -0
  14. package/dist/lib/browser/chunk-2NS3VPSY.mjs.map +7 -0
  15. package/dist/lib/browser/{chunk-6VLSHG4A.mjs → chunk-4V4JNJ33.mjs} +80 -10
  16. package/dist/lib/browser/chunk-4V4JNJ33.mjs.map +7 -0
  17. package/dist/lib/browser/{chunk-GVTXQCIW.mjs → chunk-ENBBJSNE.mjs} +482 -448
  18. package/dist/lib/browser/chunk-ENBBJSNE.mjs.map +7 -0
  19. package/dist/lib/browser/chunk-HS2VD6DN.mjs +166 -0
  20. package/dist/lib/browser/chunk-HS2VD6DN.mjs.map +7 -0
  21. package/dist/lib/browser/{chunk-WBSEOLEM.mjs → chunk-OWNBEI5J.mjs} +221 -57
  22. package/dist/lib/browser/chunk-OWNBEI5J.mjs.map +7 -0
  23. package/dist/lib/browser/{chunk-S6NY637J.mjs → chunk-SLDQWMQ2.mjs} +77 -12
  24. package/dist/lib/browser/chunk-SLDQWMQ2.mjs.map +7 -0
  25. package/dist/lib/browser/chunk-VZBIIYFM.mjs +16 -0
  26. package/dist/lib/browser/chunk-VZBIIYFM.mjs.map +7 -0
  27. package/dist/lib/browser/chunk-WJXU4GKV.mjs +19 -0
  28. package/dist/lib/browser/chunk-WJXU4GKV.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 +109 -40
  32. package/dist/lib/browser/index.mjs.map +3 -3
  33. package/dist/lib/browser/{intent-resolver-WK5WYFH3.mjs → intent-resolver-MBVOLXFQ.mjs} +194 -32
  34. package/dist/lib/browser/intent-resolver-MBVOLXFQ.mjs.map +7 -0
  35. package/dist/lib/browser/meta.json +1 -1
  36. package/dist/lib/browser/{react-root-7S6FIC5G.mjs → react-root-NKEKCEYM.mjs} +11 -11
  37. package/dist/lib/browser/react-root-NKEKCEYM.mjs.map +7 -0
  38. package/dist/lib/browser/{react-surface-6C3YJNDK.mjs → react-surface-PYSN2MBY.mjs} +78 -77
  39. package/dist/lib/browser/react-surface-PYSN2MBY.mjs.map +7 -0
  40. package/dist/lib/browser/{schema-defs-K3B3OAH4.mjs → schema-defs-DWYK7TYW.mjs} +5 -5
  41. package/dist/lib/browser/schema-defs-DWYK7TYW.mjs.map +7 -0
  42. package/dist/lib/browser/{settings-XNWYRWNM.mjs → settings-ZUCC3ZLB.mjs} +5 -5
  43. package/dist/lib/browser/{settings-XNWYRWNM.mjs.map → settings-ZUCC3ZLB.mjs.map} +1 -1
  44. package/dist/lib/browser/{spaces-ready-K7NSNBHM.mjs → spaces-ready-HTWWJHLR.mjs} +18 -16
  45. package/dist/lib/browser/spaces-ready-HTWWJHLR.mjs.map +7 -0
  46. package/dist/lib/browser/{state-522XTUR4.mjs → state-ISVAKMO7.mjs} +7 -7
  47. package/dist/lib/browser/state-ISVAKMO7.mjs.map +7 -0
  48. package/dist/lib/browser/types/index.mjs +2 -2
  49. package/dist/lib/node-esm/CollectionMain-OUHGG6OC.mjs +32 -0
  50. package/dist/lib/node-esm/CollectionMain-OUHGG6OC.mjs.map +7 -0
  51. package/dist/lib/node-esm/ObjectDetailsPanel-4SDHQVQU.mjs +146 -0
  52. package/dist/lib/node-esm/ObjectDetailsPanel-4SDHQVQU.mjs.map +7 -0
  53. package/dist/lib/node-esm/ObjectSettings-EU6F43RP.mjs +147 -0
  54. package/dist/lib/node-esm/ObjectSettings-EU6F43RP.mjs.map +7 -0
  55. package/dist/lib/node-esm/RecordMain-SD76DGOR.mjs +100 -0
  56. package/dist/lib/node-esm/RecordMain-SD76DGOR.mjs.map +7 -0
  57. package/dist/lib/node-esm/{app-graph-builder-TO72W6MI.mjs → app-graph-builder-B23W62HY.mjs} +215 -58
  58. package/dist/lib/node-esm/app-graph-builder-B23W62HY.mjs.map +7 -0
  59. package/dist/lib/node-esm/{app-graph-serializer-LA3IZDXJ.mjs → app-graph-serializer-3Z3EXEEF.mjs} +14 -14
  60. package/dist/lib/node-esm/app-graph-serializer-3Z3EXEEF.mjs.map +7 -0
  61. package/dist/lib/node-esm/chunk-BDEFTL6K.mjs +18 -0
  62. package/dist/lib/node-esm/chunk-BDEFTL6K.mjs.map +7 -0
  63. package/dist/lib/node-esm/{chunk-SXD6T2N4.mjs → chunk-G4PDWB7G.mjs} +80 -10
  64. package/dist/lib/node-esm/chunk-G4PDWB7G.mjs.map +7 -0
  65. package/dist/lib/node-esm/chunk-H4JILUJK.mjs +20 -0
  66. package/dist/lib/node-esm/chunk-H4JILUJK.mjs.map +7 -0
  67. package/dist/lib/node-esm/{chunk-OUBADVJE.mjs → chunk-KKPCCA5O.mjs} +482 -448
  68. package/dist/lib/node-esm/chunk-KKPCCA5O.mjs.map +7 -0
  69. package/dist/lib/node-esm/chunk-PM4ZIGKC.mjs +167 -0
  70. package/dist/lib/node-esm/chunk-PM4ZIGKC.mjs.map +7 -0
  71. package/dist/lib/node-esm/{chunk-HJJHLWKY.mjs → chunk-XEVIWD3O.mjs} +221 -57
  72. package/dist/lib/node-esm/chunk-XEVIWD3O.mjs.map +7 -0
  73. package/dist/lib/node-esm/{chunk-2THX6G4C.mjs → chunk-YFQXFQGT.mjs} +77 -12
  74. package/dist/lib/node-esm/chunk-YFQXFQGT.mjs.map +7 -0
  75. package/dist/lib/node-esm/chunk-ZLMFLI7G.mjs +21 -0
  76. package/dist/lib/node-esm/chunk-ZLMFLI7G.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 +109 -40
  80. package/dist/lib/node-esm/index.mjs.map +3 -3
  81. package/dist/lib/node-esm/{intent-resolver-HSR27ME4.mjs → intent-resolver-IWI47NTW.mjs} +194 -32
  82. package/dist/lib/node-esm/intent-resolver-IWI47NTW.mjs.map +7 -0
  83. package/dist/lib/node-esm/meta.json +1 -1
  84. package/dist/lib/node-esm/{react-root-HUK3ANLV.mjs → react-root-LX7SIG6M.mjs} +11 -11
  85. package/dist/lib/node-esm/react-root-LX7SIG6M.mjs.map +7 -0
  86. package/dist/lib/node-esm/{react-surface-AGAWX7DD.mjs → react-surface-6SVGOZNJ.mjs} +78 -77
  87. package/dist/lib/node-esm/react-surface-6SVGOZNJ.mjs.map +7 -0
  88. package/dist/lib/node-esm/{schema-defs-4MCDG4DV.mjs → schema-defs-EOG2UPJU.mjs} +5 -5
  89. package/dist/lib/node-esm/schema-defs-EOG2UPJU.mjs.map +7 -0
  90. package/dist/lib/node-esm/{settings-YGKHGFPH.mjs → settings-ZDJNLFGW.mjs} +5 -5
  91. package/dist/lib/node-esm/{settings-YGKHGFPH.mjs.map → settings-ZDJNLFGW.mjs.map} +1 -1
  92. package/dist/lib/node-esm/{spaces-ready-UM2P3DCR.mjs → spaces-ready-VUGYPF4L.mjs} +18 -16
  93. package/dist/lib/node-esm/spaces-ready-VUGYPF4L.mjs.map +7 -0
  94. package/dist/lib/node-esm/{state-C4IOXPZP.mjs → state-QZ4Q6ZRL.mjs} +7 -7
  95. package/dist/lib/node-esm/state-QZ4Q6ZRL.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 +12 -5
  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/AwaitingObject.d.ts.map +1 -1
  122. package/dist/types/src/components/CollectionMain.d.ts +1 -0
  123. package/dist/types/src/components/CollectionMain.d.ts.map +1 -1
  124. package/dist/types/src/components/CreateDialog/CreateObjectDialog.d.ts +5 -4
  125. package/dist/types/src/components/CreateDialog/CreateObjectDialog.d.ts.map +1 -1
  126. package/dist/types/src/components/CreateDialog/CreateObjectDialog.stories.d.ts +1664 -4
  127. package/dist/types/src/components/CreateDialog/CreateObjectDialog.stories.d.ts.map +1 -1
  128. package/dist/types/src/components/CreateDialog/CreateObjectPanel.d.ts +5 -3
  129. package/dist/types/src/components/CreateDialog/CreateObjectPanel.d.ts.map +1 -1
  130. package/dist/types/src/components/CreateDialog/CreateSpaceDialog.d.ts +1 -1
  131. package/dist/types/src/components/CreateDialog/CreateSpaceDialog.d.ts.map +1 -1
  132. package/dist/types/src/components/JoinDialog.d.ts +1 -1
  133. package/dist/types/src/components/JoinDialog.d.ts.map +1 -1
  134. package/dist/types/src/components/MembersContainer.d.ts +3 -2
  135. package/dist/types/src/components/MembersContainer.d.ts.map +1 -1
  136. package/dist/types/src/components/MembersContainer.stories.d.ts +1664 -5
  137. package/dist/types/src/components/MembersContainer.stories.d.ts.map +1 -1
  138. package/dist/types/src/components/MenuFooter.d.ts.map +1 -1
  139. package/dist/types/src/components/ObjectDetailsPanel/ObjectDetailsPanel.d.ts +9 -0
  140. package/dist/types/src/components/ObjectDetailsPanel/ObjectDetailsPanel.d.ts.map +1 -0
  141. package/dist/types/src/components/ObjectDetailsPanel/ObjectForm.d.ts +10 -0
  142. package/dist/types/src/components/ObjectDetailsPanel/ObjectForm.d.ts.map +1 -0
  143. package/dist/types/src/components/ObjectDetailsPanel/index.d.ts +3 -0
  144. package/dist/types/src/components/ObjectDetailsPanel/index.d.ts.map +1 -0
  145. package/dist/types/src/components/ObjectSettings/AdvancedObjectSettings.d.ts.map +1 -1
  146. package/dist/types/src/components/ObjectSettings/BaseObjectSettings.d.ts +2 -2
  147. package/dist/types/src/components/ObjectSettings/BaseObjectSettings.d.ts.map +1 -1
  148. package/dist/types/src/components/ObjectSettings/BaseObjectSettings.stories.d.ts +1500 -0
  149. package/dist/types/src/components/ObjectSettings/BaseObjectSettings.stories.d.ts.map +1 -0
  150. package/dist/types/src/components/ObjectSettings/ForeignKeys.d.ts +1 -1
  151. package/dist/types/src/components/ObjectSettings/ForeignKeys.d.ts.map +1 -1
  152. package/dist/types/src/components/ObjectSettings/ObjectSettingsContainer.d.ts.map +1 -1
  153. package/dist/types/src/components/ObjectSettings/index.d.ts +2 -1
  154. package/dist/types/src/components/ObjectSettings/index.d.ts.map +1 -1
  155. package/dist/types/src/components/PersistenceStatus.d.ts.map +1 -1
  156. package/dist/types/src/components/PopoverRenameObject.d.ts +2 -2
  157. package/dist/types/src/components/PopoverRenameObject.d.ts.map +1 -1
  158. package/dist/types/src/components/PopoverRenameSpace.d.ts +1 -1
  159. package/dist/types/src/components/PopoverRenameSpace.d.ts.map +1 -1
  160. package/dist/types/src/components/RecordMain.d.ts +8 -0
  161. package/dist/types/src/components/RecordMain.d.ts.map +1 -0
  162. package/dist/types/src/components/RecordMain.stories.d.ts +1667 -0
  163. package/dist/types/src/components/RecordMain.stories.d.ts.map +1 -0
  164. package/dist/types/src/components/SpacePluginSettings.d.ts.map +1 -1
  165. package/dist/types/src/components/SpacePresence.d.ts.map +1 -1
  166. package/dist/types/src/components/SpacePresence.stories.d.ts +1492 -4
  167. package/dist/types/src/components/SpacePresence.stories.d.ts.map +1 -1
  168. package/dist/types/src/components/SpaceSettings/SpaceSettingsContainer.d.ts.map +1 -1
  169. package/dist/types/src/components/SpaceSettings/SpaceSettingsContainer.stories.d.ts +1497 -4
  170. package/dist/types/src/components/SpaceSettings/SpaceSettingsContainer.stories.d.ts.map +1 -1
  171. package/dist/types/src/components/SyncStatus/SyncStatus.d.ts +1 -1
  172. package/dist/types/src/components/SyncStatus/SyncStatus.d.ts.map +1 -1
  173. package/dist/types/src/components/SyncStatus/SyncStatus.stories.d.ts +1498 -5
  174. package/dist/types/src/components/SyncStatus/SyncStatus.stories.d.ts.map +1 -1
  175. package/dist/types/src/components/SyncStatus/status.d.ts +5 -5
  176. package/dist/types/src/components/ViewEditor.d.ts +8 -0
  177. package/dist/types/src/components/ViewEditor.d.ts.map +1 -0
  178. package/dist/types/src/components/index.d.ts +13 -2
  179. package/dist/types/src/components/index.d.ts.map +1 -1
  180. package/dist/types/src/events.d.ts +1 -0
  181. package/dist/types/src/events.d.ts.map +1 -1
  182. package/dist/types/src/hooks/index.d.ts +1 -0
  183. package/dist/types/src/hooks/index.d.ts.map +1 -1
  184. package/dist/types/src/hooks/useActiveSpace.d.ts.map +1 -1
  185. package/dist/types/src/hooks/useInputSurfaceLookup.d.ts +1 -1
  186. package/dist/types/src/hooks/useInputSurfaceLookup.d.ts.map +1 -1
  187. package/dist/types/src/hooks/usePath.d.ts +1 -1
  188. package/dist/types/src/hooks/usePath.d.ts.map +1 -1
  189. package/dist/types/src/hooks/useTypeOptions.d.ts +10 -0
  190. package/dist/types/src/hooks/useTypeOptions.d.ts.map +1 -0
  191. package/dist/types/src/meta.d.ts +0 -1
  192. package/dist/types/src/meta.d.ts.map +1 -1
  193. package/dist/types/src/translations.d.ts +1342 -11
  194. package/dist/types/src/translations.d.ts.map +1 -1
  195. package/dist/types/src/types/types.d.ts +128 -66
  196. package/dist/types/src/types/types.d.ts.map +1 -1
  197. package/dist/types/src/util.d.ts +37 -7
  198. package/dist/types/src/util.d.ts.map +1 -1
  199. package/dist/types/tsconfig.tsbuildinfo +1 -1
  200. package/package.json +63 -60
  201. package/src/SpacePlugin.ts +201 -139
  202. package/src/capabilities/app-graph-builder.ts +265 -47
  203. package/src/capabilities/app-graph-serializer.ts +7 -7
  204. package/src/capabilities/capabilities.ts +20 -9
  205. package/src/capabilities/identity-created.ts +1 -1
  206. package/src/capabilities/index.ts +0 -1
  207. package/src/capabilities/intent-resolver.ts +147 -21
  208. package/src/capabilities/react-root.tsx +4 -3
  209. package/src/capabilities/react-surface.tsx +79 -99
  210. package/src/capabilities/schema-defs.ts +3 -2
  211. package/src/capabilities/spaces-ready.ts +11 -8
  212. package/src/capabilities/state.ts +5 -4
  213. package/src/components/AwaitingObject.tsx +7 -9
  214. package/src/components/CollectionMain.tsx +4 -2
  215. package/src/components/CollectionSection.tsx +2 -2
  216. package/src/components/CreateDialog/CreateObjectDialog.stories.tsx +11 -10
  217. package/src/components/CreateDialog/CreateObjectDialog.tsx +51 -36
  218. package/src/components/CreateDialog/CreateObjectPanel.tsx +22 -11
  219. package/src/components/CreateDialog/CreateSpaceDialog.tsx +6 -5
  220. package/src/components/JoinDialog.tsx +7 -7
  221. package/src/components/MembersContainer.stories.tsx +36 -10
  222. package/src/components/MembersContainer.tsx +18 -17
  223. package/src/components/MenuFooter.tsx +4 -5
  224. package/src/components/ObjectDetailsPanel/ObjectDetailsPanel.tsx +52 -0
  225. package/src/components/ObjectDetailsPanel/ObjectForm.tsx +75 -0
  226. package/src/components/ObjectDetailsPanel/index.ts +7 -0
  227. package/src/components/ObjectSettings/AdvancedObjectSettings.tsx +4 -3
  228. package/src/components/ObjectSettings/BaseObjectSettings.stories.tsx +63 -0
  229. package/src/components/ObjectSettings/BaseObjectSettings.tsx +86 -26
  230. package/src/components/ObjectSettings/ForeignKeys.tsx +3 -3
  231. package/src/components/ObjectSettings/ObjectSettingsContainer.tsx +3 -2
  232. package/src/components/ObjectSettings/index.ts +3 -1
  233. package/src/components/PersistenceStatus.tsx +7 -8
  234. package/src/components/PopoverRenameObject.tsx +10 -16
  235. package/src/components/PopoverRenameSpace.tsx +4 -4
  236. package/src/components/RecordMain.stories.tsx +116 -0
  237. package/src/components/RecordMain.tsx +83 -0
  238. package/src/components/SchemaContainer.tsx +5 -5
  239. package/src/components/SpacePluginSettings.tsx +8 -9
  240. package/src/components/SpacePresence.stories.tsx +23 -22
  241. package/src/components/SpacePresence.tsx +10 -10
  242. package/src/components/SpaceSettings/SpaceSettingsContainer.stories.tsx +17 -9
  243. package/src/components/SpaceSettings/SpaceSettingsContainer.tsx +19 -18
  244. package/src/components/SyncStatus/InlineSyncStatus.tsx +7 -7
  245. package/src/components/SyncStatus/SyncStatus.stories.tsx +9 -9
  246. package/src/components/SyncStatus/SyncStatus.tsx +98 -7
  247. package/src/components/SyncStatus/status.ts +4 -4
  248. package/src/components/ViewEditor.tsx +58 -0
  249. package/src/components/index.ts +8 -2
  250. package/src/events.ts +7 -6
  251. package/src/hooks/index.ts +1 -0
  252. package/src/hooks/useActiveSpace.ts +2 -2
  253. package/src/hooks/useInputSurfaceLookup.tsx +2 -2
  254. package/src/hooks/usePath.ts +1 -1
  255. package/src/hooks/useTypeOptions.ts +59 -0
  256. package/src/meta.ts +6 -3
  257. package/src/translations.ts +77 -5
  258. package/src/types/types.ts +78 -16
  259. package/src/util.tsx +215 -57
  260. package/dist/lib/browser/app-graph-builder-PMDF6PJV.mjs +0 -363
  261. package/dist/lib/browser/app-graph-builder-PMDF6PJV.mjs.map +0 -7
  262. package/dist/lib/browser/app-graph-serializer-UKYMBX4O.mjs.map +0 -7
  263. package/dist/lib/browser/chunk-6VLSHG4A.mjs.map +0 -7
  264. package/dist/lib/browser/chunk-C7KGJTAL.mjs +0 -18
  265. package/dist/lib/browser/chunk-C7KGJTAL.mjs.map +0 -7
  266. package/dist/lib/browser/chunk-FBCGT5YY.mjs +0 -13
  267. package/dist/lib/browser/chunk-FBCGT5YY.mjs.map +0 -7
  268. package/dist/lib/browser/chunk-GVTXQCIW.mjs.map +0 -7
  269. package/dist/lib/browser/chunk-S6NY637J.mjs.map +0 -7
  270. package/dist/lib/browser/chunk-VLBRSGJ2.mjs +0 -94
  271. package/dist/lib/browser/chunk-VLBRSGJ2.mjs.map +0 -7
  272. package/dist/lib/browser/chunk-WBSEOLEM.mjs.map +0 -7
  273. package/dist/lib/browser/chunk-XXIPJLJF.mjs +0 -19
  274. package/dist/lib/browser/chunk-XXIPJLJF.mjs.map +0 -7
  275. package/dist/lib/browser/intent-resolver-WK5WYFH3.mjs.map +0 -7
  276. package/dist/lib/browser/react-root-7S6FIC5G.mjs.map +0 -7
  277. package/dist/lib/browser/react-surface-6C3YJNDK.mjs.map +0 -7
  278. package/dist/lib/browser/schema-defs-K3B3OAH4.mjs.map +0 -7
  279. package/dist/lib/browser/schema-tools-BNP4JTD7.mjs +0 -124
  280. package/dist/lib/browser/schema-tools-BNP4JTD7.mjs.map +0 -7
  281. package/dist/lib/browser/spaces-ready-K7NSNBHM.mjs.map +0 -7
  282. package/dist/lib/browser/state-522XTUR4.mjs.map +0 -7
  283. package/dist/lib/node-esm/app-graph-builder-TO72W6MI.mjs.map +0 -7
  284. package/dist/lib/node-esm/app-graph-serializer-LA3IZDXJ.mjs.map +0 -7
  285. package/dist/lib/node-esm/chunk-2THX6G4C.mjs.map +0 -7
  286. package/dist/lib/node-esm/chunk-72QMMRKC.mjs +0 -19
  287. package/dist/lib/node-esm/chunk-72QMMRKC.mjs.map +0 -7
  288. package/dist/lib/node-esm/chunk-AT7LGFER.mjs +0 -20
  289. package/dist/lib/node-esm/chunk-AT7LGFER.mjs.map +0 -7
  290. package/dist/lib/node-esm/chunk-HJJHLWKY.mjs.map +0 -7
  291. package/dist/lib/node-esm/chunk-HWNG4MEU.mjs +0 -15
  292. package/dist/lib/node-esm/chunk-HWNG4MEU.mjs.map +0 -7
  293. package/dist/lib/node-esm/chunk-OUBADVJE.mjs.map +0 -7
  294. package/dist/lib/node-esm/chunk-SSLBYZEY.mjs +0 -96
  295. package/dist/lib/node-esm/chunk-SSLBYZEY.mjs.map +0 -7
  296. package/dist/lib/node-esm/chunk-SXD6T2N4.mjs.map +0 -7
  297. package/dist/lib/node-esm/intent-resolver-HSR27ME4.mjs.map +0 -7
  298. package/dist/lib/node-esm/react-root-HUK3ANLV.mjs.map +0 -7
  299. package/dist/lib/node-esm/react-surface-AGAWX7DD.mjs.map +0 -7
  300. package/dist/lib/node-esm/schema-defs-4MCDG4DV.mjs.map +0 -7
  301. package/dist/lib/node-esm/schema-tools-KWW5PTML.mjs +0 -126
  302. package/dist/lib/node-esm/schema-tools-KWW5PTML.mjs.map +0 -7
  303. package/dist/lib/node-esm/spaces-ready-UM2P3DCR.mjs.map +0 -7
  304. package/dist/lib/node-esm/state-C4IOXPZP.mjs.map +0 -7
  305. package/dist/types/src/capabilities/schema-tool.test.d.ts +0 -2
  306. package/dist/types/src/capabilities/schema-tool.test.d.ts.map +0 -1
  307. package/dist/types/src/capabilities/schema-tools.d.ts +0 -13
  308. package/dist/types/src/capabilities/schema-tools.d.ts.map +0 -1
  309. package/src/capabilities/schema-tool.test.ts +0 -44
  310. package/src/capabilities/schema-tools.ts +0 -125
package/src/util.tsx CHANGED
@@ -3,40 +3,40 @@
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 { 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
 
36
36
  /**
37
37
  * Convert a query result to an Rx value of the objects.
38
38
  */
39
- export const rxFromQuery = <T extends Obj.Any>(query: QueryResult<T>): Rx.Rx<T[]> => {
39
+ export const rxFromQuery = <T extends AnyEchoObject>(query: QueryResult<T>): Rx.Rx<T[]> => {
40
40
  return Rx.make((get) => {
41
41
  const unsubscribe = query.subscribe((result) => {
42
42
  get.setSelf(result.objects);
@@ -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,17 @@ const getQueryCollectionNodePartials = ({
145
145
  space: Space;
146
146
  resolve: (typename: string) => Record<string, any>;
147
147
  }) => {
148
+ const typename = getTypenameFromQuery(collection.query);
149
+ const metadata = typename ? resolve(typename) : {};
148
150
  return {
149
- icon: collection.query.typename && resolve(collection.query.typename)?.icon,
151
+ icon: metadata.icon,
152
+ iconHue: metadata.iconHue,
150
153
  acceptPersistenceClass: new Set(['echo']),
151
154
  acceptPersistenceKey: new Set([space.id]),
152
155
  role: 'branch',
153
156
  canDrop: (source: TreeData) => {
154
157
  return (
155
- isGraphNode(source.item) &&
156
- Obj.isObject(source.item.data) &&
157
- Obj.getTypename(source.item.data) === collection.query.typename
158
+ isGraphNode(source.item) && Obj.isObject(source.item.data) && Obj.getTypename(source.item.data) === typename
158
159
  );
159
160
  },
160
161
  onTransferStart: (child: Node<Obj.Any>, index?: number) => {
@@ -166,6 +167,32 @@ const getQueryCollectionNodePartials = ({
166
167
  };
167
168
  };
168
169
 
170
+ const getSchemaGraphNodePartials = () => {
171
+ return {
172
+ role: 'branch',
173
+ canDrop: () => false,
174
+ };
175
+ };
176
+
177
+ const getViewGraphNodePartials = ({
178
+ view,
179
+ resolve,
180
+ }: {
181
+ view: DataType.View;
182
+ resolve: (typename: string) => Record<string, any>;
183
+ }) => {
184
+ const presentation = view.presentation.target;
185
+ const typename = presentation ? Obj.getTypename(presentation) : undefined;
186
+ const metadata = typename ? resolve(typename) : {};
187
+
188
+ return {
189
+ label: view.name || ['object name placeholder', { ns: typename, default: 'New view' }],
190
+ icon: metadata.icon,
191
+ iconHue: metadata.iconHue,
192
+ canDrop: () => false,
193
+ };
194
+ };
195
+
169
196
  const checkPendingMigration = (space: Space) => {
170
197
  return (
171
198
  space.state.get() === SpaceState.SPACE_REQUIRES_MIGRATION ||
@@ -210,6 +237,7 @@ export const constructSpaceNode = ({
210
237
  space.state.get() === SpaceState.SPACE_READY && space.properties.icon
211
238
  ? `ph--${space.properties.icon}--regular`
212
239
  : undefined,
240
+ iconHue: space.state.get() === SpaceState.SPACE_READY && space.properties.iconHue,
213
241
  disabled: !navigable || space.state.get() !== SpaceState.SPACE_READY || hasPendingMigration,
214
242
  testId: 'spacePlugin.space',
215
243
  canDrop: (source: TreeData) => {
@@ -220,40 +248,40 @@ export const constructSpaceNode = ({
220
248
  nodes: [
221
249
  {
222
250
  id: `settings${ATTENDABLE_PATH_SEPARATOR}${space.id}`,
223
- type: `${SPACE_PLUGIN}/settings`,
251
+ type: `${meta.id}/settings`,
224
252
  data: null,
225
253
  properties: {
226
- label: ['settings panel label', { ns: SPACE_PLUGIN }],
254
+ label: ['settings panel label', { ns: meta.id }],
227
255
  icon: 'ph--faders--regular',
228
256
  disposition: 'alternate-tree',
229
257
  },
230
258
  nodes: [
231
259
  {
232
260
  id: `properties-settings${ATTENDABLE_PATH_SEPARATOR}${space.id}`,
233
- type: `${SPACE_PLUGIN}/properties`,
234
- data: `${SPACE_PLUGIN}/properties`,
261
+ type: `${meta.id}/properties`,
262
+ data: `${meta.id}/properties`,
235
263
  properties: {
236
- label: ['space settings properties label', { ns: SPACE_PLUGIN }],
264
+ label: ['space settings properties label', { ns: meta.id }],
237
265
  icon: 'ph--sliders--regular',
238
266
  position: 'hoist',
239
267
  },
240
268
  },
241
269
  {
242
270
  id: `members-settings${ATTENDABLE_PATH_SEPARATOR}${space.id}`,
243
- type: `${SPACE_PLUGIN}/members`,
244
- data: `${SPACE_PLUGIN}/members`,
271
+ type: `${meta.id}/members`,
272
+ data: `${meta.id}/members`,
245
273
  properties: {
246
- label: ['members panel label', { ns: SPACE_PLUGIN }],
274
+ label: ['members panel label', { ns: meta.id }],
247
275
  icon: 'ph--users--regular',
248
276
  position: 'hoist',
249
277
  },
250
278
  },
251
279
  {
252
280
  id: `schema-settings${ATTENDABLE_PATH_SEPARATOR}${space.id}`,
253
- type: `${SPACE_PLUGIN}/schema`,
254
- data: `${SPACE_PLUGIN}/schema`,
281
+ type: `${meta.id}/schema`,
282
+ data: `${meta.id}/schema`,
255
283
  properties: {
256
- label: ['space settings schema label', { ns: SPACE_PLUGIN }],
284
+ label: ['space settings schema label', { ns: meta.id }],
257
285
  icon: 'ph--shapes--regular',
258
286
  },
259
287
  },
@@ -287,7 +315,7 @@ export const constructSpaceActions = ({
287
315
  await dispatch(createIntent(SpaceAction.Migrate, { space }));
288
316
  },
289
317
  properties: {
290
- label: ['migrate space label', { ns: SPACE_PLUGIN }],
318
+ label: ['migrate space label', { ns: meta.id }],
291
319
  icon: 'ph--database--regular',
292
320
  disposition: 'list-item-primary',
293
321
  disabled: migrating || Migrations.running(space),
@@ -304,7 +332,7 @@ export const constructSpaceActions = ({
304
332
  await dispatch(createIntent(SpaceAction.OpenCreateObject, { target: space }));
305
333
  },
306
334
  properties: {
307
- label: ['create object in space label', { ns: SPACE_PLUGIN }],
335
+ label: ['create object in space label', { ns: meta.id }],
308
336
  icon: 'ph--plus--regular',
309
337
  disposition: 'item',
310
338
  testId: 'spacePlugin.createObject',
@@ -317,7 +345,7 @@ export const constructSpaceActions = ({
317
345
  await dispatch(createIntent(SpaceAction.Rename, { space, caller: params?.caller }));
318
346
  },
319
347
  properties: {
320
- label: ['rename space label', { ns: SPACE_PLUGIN }],
348
+ label: ['rename space label', { ns: meta.id }],
321
349
  icon: 'ph--pencil-simple-line--regular',
322
350
  keyBinding: {
323
351
  macos: 'shift+F6',
@@ -331,34 +359,137 @@ export const constructSpaceActions = ({
331
359
  return actions;
332
360
  };
333
361
 
362
+ export const createStaticSchemaNode = ({ schema, space }: { schema: Type.Obj.Any; space: Space }) => {
363
+ return {
364
+ id: `${space.id}/${Type.getTypename(schema)}`,
365
+ type: `${meta.id}/static-schema`,
366
+ data: schema,
367
+ properties: {
368
+ label: ['typename label', { ns: Type.getTypename(schema), default: Type.getTypename(schema) }],
369
+ icon: 'ph--database--regular',
370
+ iconHue: 'green',
371
+ role: 'branch',
372
+ selectable: false,
373
+ canDrop: () => false,
374
+ space,
375
+ },
376
+ };
377
+ };
378
+
379
+ export const createStaticSchemaActions = ({
380
+ schema,
381
+ space,
382
+ dispatch,
383
+ deletable,
384
+ }: {
385
+ schema: Type.Obj.Any;
386
+ space: Space;
387
+ dispatch: PromiseIntentDispatcher;
388
+ deletable: boolean;
389
+ }) => {
390
+ const getId = (id: string) => `${space.id}/${Type.getTypename(schema)}/${id}`;
391
+
392
+ const actions: NodeArg<ActionData>[] = [
393
+ {
394
+ id: getId(SpaceAction.AddObject._tag),
395
+ type: ACTION_TYPE,
396
+ data: async () => {
397
+ await dispatch(
398
+ createIntent(SpaceAction.OpenCreateObject, {
399
+ target: space,
400
+ views: true,
401
+ initialFormValues: { typename: Type.getTypename(schema) },
402
+ }),
403
+ );
404
+ },
405
+ properties: {
406
+ label: ['add view to schema label', { ns: Type.getTypename(DataType.StoredSchema) }],
407
+ icon: 'ph--plus--regular',
408
+ disposition: 'list-item-primary',
409
+ testId: 'spacePlugin.addViewToSchema',
410
+ },
411
+ },
412
+ {
413
+ id: getId(SpaceAction.RenameObject._tag),
414
+ type: ACTION_TYPE,
415
+ data: async (params?: InvokeParams) => {
416
+ throw new Error('Not implemented');
417
+ },
418
+ properties: {
419
+ label: ['rename object label', { ns: Type.getTypename(DataType.StoredSchema) }],
420
+ icon: 'ph--pencil-simple-line--regular',
421
+ disabled: true,
422
+ disposition: 'list-item',
423
+ testId: 'spacePlugin.renameObject',
424
+ },
425
+ },
426
+ {
427
+ id: getId(SpaceAction.RemoveObjects._tag),
428
+ type: ACTION_TYPE,
429
+ data: async () => {
430
+ const index = space.properties.staticRecords.findIndex(
431
+ (typename: string) => typename === Type.getTypename(schema),
432
+ );
433
+ if (index > -1) {
434
+ space.properties.staticRecords.splice(index, 1);
435
+ }
436
+ },
437
+ properties: {
438
+ label: ['delete object label', { ns: Type.getTypename(DataType.StoredSchema) }],
439
+ icon: 'ph--trash--regular',
440
+ disposition: 'list-item',
441
+ disabled: !deletable,
442
+ testId: 'spacePlugin.deleteObject',
443
+ },
444
+ },
445
+ ];
446
+
447
+ return actions;
448
+ };
449
+
334
450
  export const createObjectNode = ({
335
451
  space,
336
452
  object,
453
+ disposition,
337
454
  droppable = true,
338
455
  navigable = false,
339
456
  resolve,
340
457
  }: {
341
458
  space: Space;
342
459
  object: Obj.Any;
460
+ disposition?: string;
343
461
  droppable?: boolean;
344
462
  navigable?: boolean;
345
463
  resolve: (typename: string) => Record<string, any>;
346
464
  }) => {
347
465
  const type = Obj.getTypename(object);
348
466
  if (!type) {
349
- return undefined;
467
+ return null;
350
468
  }
351
469
 
352
470
  const metadata = resolve(type);
353
- if (Object.keys(metadata).length === 0) {
354
- return undefined;
355
- }
356
-
357
471
  const partials = Obj.instanceOf(DataType.Collection, object)
358
472
  ? getCollectionGraphNodePartials({ collection: object, space, resolve })
359
473
  : Obj.instanceOf(DataType.QueryCollection, object)
360
474
  ? getQueryCollectionNodePartials({ collection: object, space, resolve })
361
- : metadata.graphProps;
475
+ : Obj.instanceOf(DataType.StoredSchema, object)
476
+ ? getSchemaGraphNodePartials()
477
+ : Obj.instanceOf(DataType.View, object)
478
+ ? getViewGraphNodePartials({ view: object, resolve })
479
+ : metadata.graphProps;
480
+
481
+ // TODO(wittjosiah): Obj.getLabel isn't triggering reactivity in some cases.
482
+ // e.g., create new collection with no name and rename it.
483
+ const label = (object as any).name ||
484
+ Obj.getLabel(object) ||
485
+ // TODO(wittjosiah): Remove metadata labels.
486
+ metadata.label?.(object) || ['object name placeholder', { ns: type, default: 'New item' }];
487
+
488
+ const selectable =
489
+ (!Obj.instanceOf(DataType.StoredSchema, object) &&
490
+ !Obj.instanceOf(DataType.QueryCollection, object) &&
491
+ !Obj.instanceOf(DataType.Collection, object)) ||
492
+ (navigable && Obj.instanceOf(DataType.Collection, object));
362
493
 
363
494
  return {
364
495
  id: fullyQualifiedId(object),
@@ -366,13 +497,14 @@ export const createObjectNode = ({
366
497
  cacheable: ['label', 'icon', 'role'],
367
498
  data: object,
368
499
  properties: {
369
- // TODO(burdon): Use annotation to get the name field.
370
- label: metadata.label?.(object) ||
371
- (object as any).name || ['object name placeholder', { ns: type, default: 'New object' }],
500
+ label,
372
501
  icon: metadata.icon ?? 'ph--placeholder--regular',
502
+ iconHue: metadata.iconHue,
503
+ disposition,
373
504
  testId: 'spacePlugin.object',
374
505
  persistenceClass: 'echo',
375
506
  persistenceKey: space?.id,
507
+ selectable,
376
508
  canDrop: (source: TreeData) => {
377
509
  return droppable && isGraphNode(source.item) && Obj.isObject(source.item.data);
378
510
  },
@@ -386,21 +518,26 @@ export const constructObjectActions = ({
386
518
  graph,
387
519
  dispatch,
388
520
  objectForms,
521
+ deletable = true,
389
522
  navigable = false,
390
523
  }: {
391
524
  object: Obj.Any;
392
525
  graph: ReadableGraph;
393
526
  dispatch: PromiseIntentDispatcher;
394
527
  objectForms: ObjectForm<any>[];
528
+ deletable?: boolean;
395
529
  navigable?: boolean;
396
530
  }) => {
397
531
  const space = getSpace(object);
398
532
  invariant(space, 'Space not found');
533
+ const typename = Obj.getTypename(object);
534
+ invariant(typename, 'Object has no typename');
535
+
399
536
  const getId = (id: string) => `${id}/${fullyQualifiedId(object)}`;
400
537
 
401
538
  const queryCollection = Obj.instanceOf(DataType.QueryCollection, object) ? object : undefined;
402
539
  const matchingObjectForm = queryCollection
403
- ? objectForms.find((form) => Type.getTypename(form.objectSchema) === queryCollection.query.typename)
540
+ ? objectForms.find((form) => Type.getTypename(form.objectSchema) === getTypenameFromQuery(queryCollection.query))
404
541
  : undefined;
405
542
 
406
543
  const actions: NodeArg<ActionData>[] = [
@@ -413,7 +550,7 @@ export const constructObjectActions = ({
413
550
  await dispatch(createIntent(SpaceAction.OpenCreateObject, { target: object }));
414
551
  },
415
552
  properties: {
416
- label: ['create object in collection label', { ns: SPACE_PLUGIN }],
553
+ label: ['create object in collection label', { ns: meta.id }],
417
554
  icon: 'ph--plus--regular',
418
555
  disposition: 'list-item-primary',
419
556
  testId: 'spacePlugin.createObject',
@@ -421,6 +558,29 @@ export const constructObjectActions = ({
421
558
  },
422
559
  ]
423
560
  : []),
561
+ ...(Obj.instanceOf(DataType.StoredSchema, object)
562
+ ? [
563
+ {
564
+ id: getId(SpaceAction.AddObject._tag),
565
+ type: ACTION_TYPE,
566
+ data: async () => {
567
+ await dispatch(
568
+ createIntent(SpaceAction.OpenCreateObject, {
569
+ target: space,
570
+ views: true,
571
+ initialFormValues: { typename: object.typename },
572
+ }),
573
+ );
574
+ },
575
+ properties: {
576
+ label: ['add view to schema label', { ns: Type.getTypename(DataType.StoredSchema) }],
577
+ icon: 'ph--plus--regular',
578
+ disposition: 'list-item-primary',
579
+ testId: 'spacePlugin.addViewToSchema',
580
+ },
581
+ },
582
+ ]
583
+ : []),
424
584
  ...(matchingObjectForm
425
585
  ? [
426
586
  {
@@ -431,12 +591,12 @@ export const constructObjectActions = ({
431
591
  await dispatch(
432
592
  createIntent(SpaceAction.OpenCreateObject, {
433
593
  target: space,
434
- typename: queryCollection?.query.typename,
594
+ typename: queryCollection ? getTypenameFromQuery(queryCollection.query) : undefined,
435
595
  }),
436
596
  );
437
597
  } else {
438
598
  await dispatch(
439
- pipe(
599
+ Function.pipe(
440
600
  matchingObjectForm.getIntent({}, { space }),
441
601
  chain(SpaceAction.AddObject, { target: space, hidden: true }),
442
602
  chain(LayoutAction.Open, { part: 'main' }),
@@ -445,7 +605,7 @@ export const constructObjectActions = ({
445
605
  }
446
606
  },
447
607
  properties: {
448
- label: ['create object in smart collection label', { ns: SPACE_PLUGIN }],
608
+ label: ['create object in smart collection label', { ns: meta.id }],
449
609
  icon: 'ph--plus--regular',
450
610
  disposition: 'list-item-primary',
451
611
  testId: 'spacePlugin.createObject',
@@ -460,10 +620,7 @@ export const constructObjectActions = ({
460
620
  await dispatch(createIntent(SpaceAction.RenameObject, { object, caller: params?.caller }));
461
621
  },
462
622
  properties: {
463
- label: [
464
- Obj.instanceOf(DataType.Collection, object) ? 'rename collection label' : 'rename object label',
465
- { ns: SPACE_PLUGIN },
466
- ],
623
+ label: ['rename object label', { ns: typename }],
467
624
  icon: 'ph--pencil-simple-line--regular',
468
625
  disposition: 'list-item',
469
626
  // TODO(wittjosiah): Not working.
@@ -483,18 +640,19 @@ export const constructObjectActions = ({
483
640
  await dispatch(createIntent(SpaceAction.RemoveObjects, { objects: [object], target: collection }));
484
641
  },
485
642
  properties: {
486
- label: [
487
- Obj.instanceOf(DataType.Collection, object) ? 'delete collection label' : 'delete object label',
488
- { ns: SPACE_PLUGIN },
489
- ],
643
+ label: ['delete object label', { ns: typename }],
490
644
  icon: 'ph--trash--regular',
491
645
  disposition: 'list-item',
646
+ disabled: !deletable,
492
647
  // TODO(wittjosiah): This is a browser shortcut.
493
648
  // keyBinding: object instanceof CollectionType ? undefined : 'shift+meta+Backspace',
494
649
  testId: 'spacePlugin.deleteObject',
495
650
  },
496
651
  },
497
- ...(navigable || (!Obj.instanceOf(DataType.Collection, object) && !Obj.instanceOf(DataType.QueryCollection, object))
652
+ ...(navigable ||
653
+ (!Obj.instanceOf(DataType.Collection, object) &&
654
+ !Obj.instanceOf(DataType.QueryCollection, object) &&
655
+ !Obj.instanceOf(DataType.StoredSchema, object))
498
656
  ? [
499
657
  {
500
658
  id: getId('copy-link'),
@@ -504,7 +662,7 @@ export const constructObjectActions = ({
504
662
  await navigator.clipboard.writeText(url);
505
663
  },
506
664
  properties: {
507
- label: ['copy link label', { ns: SPACE_PLUGIN }],
665
+ label: ['copy link label', { ns: meta.id }],
508
666
  icon: 'ph--link--regular',
509
667
  disposition: 'list-item',
510
668
  testId: 'spacePlugin.copyLink',
@@ -520,7 +678,7 @@ export const constructObjectActions = ({
520
678
  await dispatch(createIntent(LayoutAction.Expose, { part: 'navigation', subject: fullyQualifiedId(object) }));
521
679
  },
522
680
  properties: {
523
- label: ['expose object label', { ns: SPACE_PLUGIN }],
681
+ label: ['expose object label', { ns: meta.id }],
524
682
  icon: 'ph--eye--regular',
525
683
  disposition: 'heading-list-item',
526
684
  testId: 'spacePlugin.exposeObject',
@@ -564,7 +722,7 @@ export const cloneObject = async (
564
722
  newSpace: Space,
565
723
  ): Promise<Type.Expando> => {
566
724
  const schema = Obj.getSchema(object);
567
- const typename = schema ? Type.getTypename(schema) ?? EXPANDO_TYPENAME : EXPANDO_TYPENAME;
725
+ const typename = schema ? (Type.getTypename(schema) ?? EXPANDO_TYPENAME) : EXPANDO_TYPENAME;
568
726
  const metadata = resolve(typename);
569
727
  const serializer = metadata.serializer;
570
728
  invariant(serializer, `No serializer for type: ${typename}`);