@dxos/plugin-space 0.8.3 → 0.8.4-main.2e9d522

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 (228) hide show
  1. package/dist/lib/browser/CollectionMain-D2B75XBS.mjs +31 -0
  2. package/dist/lib/browser/CollectionMain-D2B75XBS.mjs.map +7 -0
  3. package/dist/lib/browser/ObjectDetailsPanel-YPTDQKMG.mjs +88 -0
  4. package/dist/lib/browser/ObjectDetailsPanel-YPTDQKMG.mjs.map +7 -0
  5. package/dist/lib/browser/{app-graph-builder-M2RH72VL.mjs → app-graph-builder-7CZZJS3S.mjs} +143 -27
  6. package/dist/lib/browser/app-graph-builder-7CZZJS3S.mjs.map +7 -0
  7. package/dist/lib/browser/{app-graph-serializer-F7ISRRBV.mjs → app-graph-serializer-H6AW7KGS.mjs} +13 -13
  8. package/dist/lib/browser/app-graph-serializer-H6AW7KGS.mjs.map +7 -0
  9. package/dist/lib/browser/{chunk-BXNL6SDI.mjs → chunk-CEFHNVU7.mjs} +4 -3
  10. package/dist/lib/browser/chunk-CEFHNVU7.mjs.map +7 -0
  11. package/dist/lib/browser/{chunk-PTKYMZWO.mjs → chunk-FBCGT5YY.mjs} +2 -2
  12. package/dist/lib/browser/{chunk-YMCZR6EZ.mjs → chunk-JS3MMC42.mjs} +4 -3
  13. package/dist/lib/browser/{chunk-YMCZR6EZ.mjs.map → chunk-JS3MMC42.mjs.map} +3 -3
  14. package/dist/lib/browser/{chunk-4ZKSFDXM.mjs → chunk-QACNNDOT.mjs} +73 -12
  15. package/dist/lib/browser/chunk-QACNNDOT.mjs.map +7 -0
  16. package/dist/lib/browser/{chunk-TW7O2EPP.mjs → chunk-SGTQ52SU.mjs} +59 -5
  17. package/dist/lib/browser/chunk-SGTQ52SU.mjs.map +7 -0
  18. package/dist/lib/browser/{chunk-NFUKCRGE.mjs → chunk-V7MJSSBQ.mjs} +392 -324
  19. package/dist/lib/browser/chunk-V7MJSSBQ.mjs.map +7 -0
  20. package/dist/lib/browser/{chunk-7Y4M7GXO.mjs → chunk-VLBRSGJ2.mjs} +4 -4
  21. package/dist/lib/browser/{chunk-V24VASAJ.mjs → chunk-XUYKJUU7.mjs} +128 -25
  22. package/dist/lib/browser/chunk-XUYKJUU7.mjs.map +7 -0
  23. package/dist/lib/browser/{identity-created-PI7TKANR.mjs → identity-created-23XJJV2N.mjs} +4 -4
  24. package/dist/lib/browser/identity-created-23XJJV2N.mjs.map +7 -0
  25. package/dist/lib/browser/index.mjs +105 -16
  26. package/dist/lib/browser/index.mjs.map +3 -3
  27. package/dist/lib/browser/{intent-resolver-RWU6ZE4H.mjs → intent-resolver-TIXVDYN7.mjs} +171 -21
  28. package/dist/lib/browser/intent-resolver-TIXVDYN7.mjs.map +7 -0
  29. package/dist/lib/browser/meta.json +1 -1
  30. package/dist/lib/browser/{react-root-QIKHSNT2.mjs → react-root-N2J7TDRX.mjs} +8 -8
  31. package/dist/lib/browser/{react-surface-W56UD53I.mjs → react-surface-TPNLWJJH.mjs} +42 -21
  32. package/dist/lib/browser/react-surface-TPNLWJJH.mjs.map +7 -0
  33. package/dist/lib/browser/{schema-defs-WREJNMIC.mjs → schema-defs-Z6FC4AHC.mjs} +4 -4
  34. package/dist/lib/browser/{schema-tools-ILTVSSS3.mjs → schema-tools-BNP4JTD7.mjs} +3 -3
  35. package/dist/lib/browser/{settings-K54STC5A.mjs → settings-4IMP5RYT.mjs} +4 -4
  36. package/dist/lib/browser/{spaces-ready-3PDRDHPC.mjs → spaces-ready-TOPG6IV4.mjs} +7 -7
  37. package/dist/lib/browser/{state-HRZ4VRXU.mjs → state-QYZAB45H.mjs} +4 -4
  38. package/dist/lib/browser/types/index.mjs +2 -2
  39. package/dist/lib/node-esm/CollectionMain-ZJIFCWKZ.mjs +32 -0
  40. package/dist/lib/node-esm/CollectionMain-ZJIFCWKZ.mjs.map +7 -0
  41. package/dist/lib/node-esm/ObjectDetailsPanel-QKZEDSZK.mjs +89 -0
  42. package/dist/lib/node-esm/ObjectDetailsPanel-QKZEDSZK.mjs.map +7 -0
  43. package/dist/lib/node-esm/{app-graph-builder-BCHVZ4OM.mjs → app-graph-builder-KGIGWC72.mjs} +143 -27
  44. package/dist/lib/node-esm/app-graph-builder-KGIGWC72.mjs.map +7 -0
  45. package/dist/lib/node-esm/{app-graph-serializer-TXRGGNP2.mjs → app-graph-serializer-2ICUGQQT.mjs} +13 -13
  46. package/dist/lib/node-esm/app-graph-serializer-2ICUGQQT.mjs.map +7 -0
  47. package/dist/lib/node-esm/{chunk-HO7AIKQS.mjs → chunk-4AOMYKDE.mjs} +128 -25
  48. package/dist/lib/node-esm/chunk-4AOMYKDE.mjs.map +7 -0
  49. package/dist/lib/node-esm/{chunk-3CP67AYY.mjs → chunk-5HHYE264.mjs} +4 -3
  50. package/dist/lib/node-esm/{chunk-3CP67AYY.mjs.map → chunk-5HHYE264.mjs.map} +3 -3
  51. package/dist/lib/node-esm/{chunk-BSLREHIX.mjs → chunk-5T3ZH23B.mjs} +4 -3
  52. package/dist/lib/node-esm/chunk-5T3ZH23B.mjs.map +7 -0
  53. package/dist/lib/node-esm/{chunk-LA6AVVH6.mjs → chunk-6X5DLJM5.mjs} +392 -324
  54. package/dist/lib/node-esm/chunk-6X5DLJM5.mjs.map +7 -0
  55. package/dist/lib/node-esm/{chunk-MSWEFAPD.mjs → chunk-HWNG4MEU.mjs} +2 -2
  56. package/dist/lib/node-esm/{chunk-D4QMPPS7.mjs → chunk-JH6F4C3I.mjs} +59 -5
  57. package/dist/lib/node-esm/chunk-JH6F4C3I.mjs.map +7 -0
  58. package/dist/lib/node-esm/{chunk-JBQKU4K5.mjs → chunk-P442DOQ3.mjs} +73 -12
  59. package/dist/lib/node-esm/chunk-P442DOQ3.mjs.map +7 -0
  60. package/dist/lib/node-esm/{chunk-GH2FGJXH.mjs → chunk-SSLBYZEY.mjs} +4 -4
  61. package/dist/lib/node-esm/{identity-created-35CTAQWI.mjs → identity-created-IJQO6GCR.mjs} +4 -4
  62. package/dist/lib/node-esm/identity-created-IJQO6GCR.mjs.map +7 -0
  63. package/dist/lib/node-esm/index.mjs +105 -16
  64. package/dist/lib/node-esm/index.mjs.map +3 -3
  65. package/dist/lib/node-esm/{intent-resolver-JO6L2VXC.mjs → intent-resolver-MHGHRGDT.mjs} +171 -21
  66. package/dist/lib/node-esm/intent-resolver-MHGHRGDT.mjs.map +7 -0
  67. package/dist/lib/node-esm/meta.json +1 -1
  68. package/dist/lib/node-esm/{react-root-YFGL3B4J.mjs → react-root-KW3TGJGY.mjs} +8 -8
  69. package/dist/lib/node-esm/{react-surface-CVAPDLEZ.mjs → react-surface-UUIUUD6P.mjs} +42 -21
  70. package/dist/lib/node-esm/react-surface-UUIUUD6P.mjs.map +7 -0
  71. package/dist/lib/node-esm/{schema-defs-4MEJETVX.mjs → schema-defs-WHJM7UZE.mjs} +4 -4
  72. package/dist/lib/node-esm/{schema-tools-SRLCRZ3B.mjs → schema-tools-KWW5PTML.mjs} +3 -3
  73. package/dist/lib/node-esm/{settings-TD76LTQS.mjs → settings-SAOBPND3.mjs} +4 -4
  74. package/dist/lib/node-esm/{spaces-ready-FJMGPAVV.mjs → spaces-ready-HIUKNDZK.mjs} +7 -7
  75. package/dist/lib/node-esm/{state-XQNDCN37.mjs → state-ZVEHQ4BJ.mjs} +4 -4
  76. package/dist/lib/node-esm/types/index.mjs +2 -2
  77. package/dist/types/src/SpacePlugin.d.ts.map +1 -1
  78. package/dist/types/src/capabilities/app-graph-builder.d.ts.map +1 -1
  79. package/dist/types/src/capabilities/app-graph-serializer.d.ts.map +1 -1
  80. package/dist/types/src/capabilities/capabilities.d.ts +9 -3
  81. package/dist/types/src/capabilities/capabilities.d.ts.map +1 -1
  82. package/dist/types/src/capabilities/identity-created.d.ts.map +1 -1
  83. package/dist/types/src/capabilities/intent-resolver.d.ts.map +1 -1
  84. package/dist/types/src/capabilities/react-surface.d.ts.map +1 -1
  85. package/dist/types/src/components/AwaitingObject.d.ts.map +1 -1
  86. package/dist/types/src/components/CollectionMain.d.ts +1 -0
  87. package/dist/types/src/components/CollectionMain.d.ts.map +1 -1
  88. package/dist/types/src/components/CreateDialog/CreateObjectDialog.d.ts +3 -2
  89. package/dist/types/src/components/CreateDialog/CreateObjectDialog.d.ts.map +1 -1
  90. package/dist/types/src/components/CreateDialog/CreateObjectDialog.stories.d.ts +1 -1
  91. package/dist/types/src/components/CreateDialog/CreateObjectDialog.stories.d.ts.map +1 -1
  92. package/dist/types/src/components/MembersContainer.d.ts.map +1 -1
  93. package/dist/types/src/components/MembersContainer.stories.d.ts +1 -1
  94. package/dist/types/src/components/MembersContainer.stories.d.ts.map +1 -1
  95. package/dist/types/src/components/MenuFooter.d.ts.map +1 -1
  96. package/dist/types/src/components/ObjectDetailsPanel.d.ts +9 -0
  97. package/dist/types/src/components/ObjectDetailsPanel.d.ts.map +1 -0
  98. package/dist/types/src/components/PersistenceStatus.d.ts.map +1 -1
  99. package/dist/types/src/components/SpacePresence.stories.d.ts +1 -1
  100. package/dist/types/src/components/SpacePresence.stories.d.ts.map +1 -1
  101. package/dist/types/src/components/SpaceSettings/SpaceSettingsContainer.stories.d.ts +1 -1
  102. package/dist/types/src/components/SpaceSettings/SpaceSettingsContainer.stories.d.ts.map +1 -1
  103. package/dist/types/src/components/SyncStatus/SyncStatus.d.ts +1 -1
  104. package/dist/types/src/components/SyncStatus/SyncStatus.stories.d.ts +1 -1
  105. package/dist/types/src/components/SyncStatus/SyncStatus.stories.d.ts.map +1 -1
  106. package/dist/types/src/components/SyncStatus/status.d.ts +5 -5
  107. package/dist/types/src/components/ViewEditor.d.ts +8 -0
  108. package/dist/types/src/components/ViewEditor.d.ts.map +1 -0
  109. package/dist/types/src/components/index.d.ts +8 -1
  110. package/dist/types/src/components/index.d.ts.map +1 -1
  111. package/dist/types/src/events.d.ts +1 -0
  112. package/dist/types/src/events.d.ts.map +1 -1
  113. package/dist/types/src/translations.d.ts +212 -410
  114. package/dist/types/src/translations.d.ts.map +1 -1
  115. package/dist/types/src/types/types.d.ts +82 -2
  116. package/dist/types/src/types/types.d.ts.map +1 -1
  117. package/dist/types/src/util.d.ts +27 -2
  118. package/dist/types/src/util.d.ts.map +1 -1
  119. package/dist/types/tsconfig.tsbuildinfo +1 -1
  120. package/package.json +50 -52
  121. package/src/SpacePlugin.ts +90 -7
  122. package/src/capabilities/app-graph-builder.ts +166 -7
  123. package/src/capabilities/app-graph-serializer.ts +6 -6
  124. package/src/capabilities/capabilities.ts +8 -3
  125. package/src/capabilities/identity-created.ts +2 -4
  126. package/src/capabilities/intent-resolver.ts +117 -8
  127. package/src/capabilities/react-surface.tsx +50 -13
  128. package/src/components/AwaitingObject.tsx +4 -6
  129. package/src/components/CollectionMain.tsx +2 -0
  130. package/src/components/CreateDialog/CreateObjectDialog.stories.tsx +4 -4
  131. package/src/components/CreateDialog/CreateObjectDialog.tsx +29 -25
  132. package/src/components/MembersContainer.stories.tsx +4 -4
  133. package/src/components/MembersContainer.tsx +6 -5
  134. package/src/components/MenuFooter.tsx +2 -3
  135. package/src/components/ObjectDetailsPanel.tsx +77 -0
  136. package/src/components/PersistenceStatus.tsx +5 -6
  137. package/src/components/PopoverRenameObject.tsx +2 -2
  138. package/src/components/SpacePresence.stories.tsx +2 -2
  139. package/src/components/SpaceSettings/SpaceSettingsContainer.stories.tsx +2 -2
  140. package/src/components/SyncStatus/SyncStatus.stories.tsx +8 -15
  141. package/src/components/SyncStatus/SyncStatus.tsx +1 -1
  142. package/src/components/SyncStatus/save-tracker.ts +3 -3
  143. package/src/components/SyncStatus/status.ts +4 -4
  144. package/src/components/ViewEditor.tsx +64 -0
  145. package/src/components/index.ts +6 -1
  146. package/src/events.ts +1 -0
  147. package/src/translations.ts +71 -7
  148. package/src/types/types.ts +56 -3
  149. package/src/util.tsx +116 -21
  150. package/dist/lib/browser/app-graph-builder-M2RH72VL.mjs.map +0 -7
  151. package/dist/lib/browser/app-graph-serializer-F7ISRRBV.mjs.map +0 -7
  152. package/dist/lib/browser/chunk-4ZKSFDXM.mjs.map +0 -7
  153. package/dist/lib/browser/chunk-BXNL6SDI.mjs.map +0 -7
  154. package/dist/lib/browser/chunk-NFUKCRGE.mjs.map +0 -7
  155. package/dist/lib/browser/chunk-TW7O2EPP.mjs.map +0 -7
  156. package/dist/lib/browser/chunk-V24VASAJ.mjs.map +0 -7
  157. package/dist/lib/browser/identity-created-PI7TKANR.mjs.map +0 -7
  158. package/dist/lib/browser/intent-resolver-RWU6ZE4H.mjs.map +0 -7
  159. package/dist/lib/browser/react-surface-W56UD53I.mjs.map +0 -7
  160. package/dist/lib/node/app-graph-builder-6LK5HLLE.cjs +0 -364
  161. package/dist/lib/node/app-graph-builder-6LK5HLLE.cjs.map +0 -7
  162. package/dist/lib/node/app-graph-serializer-HKHBNHA3.cjs +0 -89
  163. package/dist/lib/node/app-graph-serializer-HKHBNHA3.cjs.map +0 -7
  164. package/dist/lib/node/chunk-3X4EA4XL.cjs +0 -37
  165. package/dist/lib/node/chunk-3X4EA4XL.cjs.map +0 -7
  166. package/dist/lib/node/chunk-5WLAXYE3.cjs +0 -125
  167. package/dist/lib/node/chunk-5WLAXYE3.cjs.map +0 -7
  168. package/dist/lib/node/chunk-6P2DB4QQ.cjs +0 -36
  169. package/dist/lib/node/chunk-6P2DB4QQ.cjs.map +0 -7
  170. package/dist/lib/node/chunk-DOC5XEZ4.cjs +0 -184
  171. package/dist/lib/node/chunk-DOC5XEZ4.cjs.map +0 -7
  172. package/dist/lib/node/chunk-NCHF433F.cjs +0 -1921
  173. package/dist/lib/node/chunk-NCHF433F.cjs.map +0 -7
  174. package/dist/lib/node/chunk-NL5Y4EDX.cjs +0 -38
  175. package/dist/lib/node/chunk-NL5Y4EDX.cjs.map +0 -7
  176. package/dist/lib/node/chunk-ULJZPATP.cjs +0 -312
  177. package/dist/lib/node/chunk-ULJZPATP.cjs.map +0 -7
  178. package/dist/lib/node/chunk-XHWVT7LW.cjs +0 -572
  179. package/dist/lib/node/chunk-XHWVT7LW.cjs.map +0 -7
  180. package/dist/lib/node/identity-created-FF4WZ2WY.cjs +0 -42
  181. package/dist/lib/node/identity-created-FF4WZ2WY.cjs.map +0 -7
  182. package/dist/lib/node/index.cjs +0 -278
  183. package/dist/lib/node/index.cjs.map +0 -7
  184. package/dist/lib/node/intent-resolver-AV4CMM3Z.cjs +0 -609
  185. package/dist/lib/node/intent-resolver-AV4CMM3Z.cjs.map +0 -7
  186. package/dist/lib/node/meta.json +0 -1
  187. package/dist/lib/node/react-root-RQUU3A45.cjs +0 -51
  188. package/dist/lib/node/react-root-RQUU3A45.cjs.map +0 -7
  189. package/dist/lib/node/react-surface-AZFJLE72.cjs +0 -351
  190. package/dist/lib/node/react-surface-AZFJLE72.cjs.map +0 -7
  191. package/dist/lib/node/schema-defs-OB2X2HBH.cjs +0 -42
  192. package/dist/lib/node/schema-defs-OB2X2HBH.cjs.map +0 -7
  193. package/dist/lib/node/schema-tools-IYREN4IH.cjs +0 -147
  194. package/dist/lib/node/schema-tools-IYREN4IH.cjs.map +0 -7
  195. package/dist/lib/node/settings-P2EQ7VKQ.cjs +0 -38
  196. package/dist/lib/node/settings-P2EQ7VKQ.cjs.map +0 -7
  197. package/dist/lib/node/spaces-ready-DXPOHYV7.cjs +0 -210
  198. package/dist/lib/node/spaces-ready-DXPOHYV7.cjs.map +0 -7
  199. package/dist/lib/node/state-M35DK75Z.cjs +0 -61
  200. package/dist/lib/node/state-M35DK75Z.cjs.map +0 -7
  201. package/dist/lib/node/types/index.cjs +0 -48
  202. package/dist/lib/node/types/index.cjs.map +0 -7
  203. package/dist/lib/node-esm/app-graph-builder-BCHVZ4OM.mjs.map +0 -7
  204. package/dist/lib/node-esm/app-graph-serializer-TXRGGNP2.mjs.map +0 -7
  205. package/dist/lib/node-esm/chunk-BSLREHIX.mjs.map +0 -7
  206. package/dist/lib/node-esm/chunk-D4QMPPS7.mjs.map +0 -7
  207. package/dist/lib/node-esm/chunk-HO7AIKQS.mjs.map +0 -7
  208. package/dist/lib/node-esm/chunk-JBQKU4K5.mjs.map +0 -7
  209. package/dist/lib/node-esm/chunk-LA6AVVH6.mjs.map +0 -7
  210. package/dist/lib/node-esm/identity-created-35CTAQWI.mjs.map +0 -7
  211. package/dist/lib/node-esm/intent-resolver-JO6L2VXC.mjs.map +0 -7
  212. package/dist/lib/node-esm/react-surface-CVAPDLEZ.mjs.map +0 -7
  213. /package/dist/lib/browser/{chunk-PTKYMZWO.mjs.map → chunk-FBCGT5YY.mjs.map} +0 -0
  214. /package/dist/lib/browser/{chunk-7Y4M7GXO.mjs.map → chunk-VLBRSGJ2.mjs.map} +0 -0
  215. /package/dist/lib/browser/{react-root-QIKHSNT2.mjs.map → react-root-N2J7TDRX.mjs.map} +0 -0
  216. /package/dist/lib/browser/{schema-defs-WREJNMIC.mjs.map → schema-defs-Z6FC4AHC.mjs.map} +0 -0
  217. /package/dist/lib/browser/{schema-tools-ILTVSSS3.mjs.map → schema-tools-BNP4JTD7.mjs.map} +0 -0
  218. /package/dist/lib/browser/{settings-K54STC5A.mjs.map → settings-4IMP5RYT.mjs.map} +0 -0
  219. /package/dist/lib/browser/{spaces-ready-3PDRDHPC.mjs.map → spaces-ready-TOPG6IV4.mjs.map} +0 -0
  220. /package/dist/lib/browser/{state-HRZ4VRXU.mjs.map → state-QYZAB45H.mjs.map} +0 -0
  221. /package/dist/lib/node-esm/{chunk-MSWEFAPD.mjs.map → chunk-HWNG4MEU.mjs.map} +0 -0
  222. /package/dist/lib/node-esm/{chunk-GH2FGJXH.mjs.map → chunk-SSLBYZEY.mjs.map} +0 -0
  223. /package/dist/lib/node-esm/{react-root-YFGL3B4J.mjs.map → react-root-KW3TGJGY.mjs.map} +0 -0
  224. /package/dist/lib/node-esm/{schema-defs-4MEJETVX.mjs.map → schema-defs-WHJM7UZE.mjs.map} +0 -0
  225. /package/dist/lib/node-esm/{schema-tools-SRLCRZ3B.mjs.map → schema-tools-KWW5PTML.mjs.map} +0 -0
  226. /package/dist/lib/node-esm/{settings-TD76LTQS.mjs.map → settings-SAOBPND3.mjs.map} +0 -0
  227. /package/dist/lib/node-esm/{spaces-ready-FJMGPAVV.mjs.map → spaces-ready-HIUKNDZK.mjs.map} +0 -0
  228. /package/dist/lib/node-esm/{state-XQNDCN37.mjs.map → state-ZVEHQ4BJ.mjs.map} +0 -0
@@ -2,12 +2,12 @@ import { createRequire } from 'node:module';const require = createRequire(import
2
2
  import {
3
3
  SPACE_TYPE,
4
4
  SpaceAction
5
- } from "./chunk-D4QMPPS7.mjs";
5
+ } from "./chunk-JH6F4C3I.mjs";
6
6
  import {
7
7
  SPACE_PLUGIN
8
- } from "./chunk-MSWEFAPD.mjs";
8
+ } from "./chunk-HWNG4MEU.mjs";
9
9
 
10
- // packages/plugins/plugin-space/src/util.tsx
10
+ // src/util.tsx
11
11
  import { Rx } from "@effect-rx/rx-react";
12
12
  import { pipe } from "effect";
13
13
  import { chain, createIntent, LayoutAction } from "@dxos/app-framework";
@@ -19,7 +19,7 @@ import { ACTION_GROUP_TYPE, ACTION_TYPE, isGraphNode } from "@dxos/plugin-graph"
19
19
  import { fullyQualifiedId, getSpace, SpaceState, isSpace } from "@dxos/react-client/echo";
20
20
  import { ATTENDABLE_PATH_SEPARATOR } from "@dxos/react-ui-attention";
21
21
  import { DataType } from "@dxos/schema";
22
- var __dxlog_file = "/home/runner/work/dxos/dxos/packages/plugins/plugin-space/src/util.tsx";
22
+ var __dxlog_file = "/__w/dxos/dxos/packages/plugins/plugin-space/src/util.tsx";
23
23
  var SPACES = `${SPACE_PLUGIN}-spaces`;
24
24
  var COMPOSER_SPACE_LOCK = "dxos.org/plugin/space/lock";
25
25
  var SHARED = "shared-spaces";
@@ -102,12 +102,34 @@ var getQueryCollectionNodePartials = ({ collection, space, resolve }) => {
102
102
  }
103
103
  };
104
104
  };
105
+ var getSchemaGraphNodePartials = () => {
106
+ return {
107
+ role: "branch",
108
+ canDrop: () => false
109
+ };
110
+ };
111
+ var getViewGraphNodePartials = ({ view, resolve }) => {
112
+ const presentation = view.presentation.target;
113
+ const typename = presentation ? Obj.getTypename(presentation) : void 0;
114
+ const metadata = typename ? resolve(typename) : {};
115
+ return {
116
+ label: view.name || [
117
+ "object name placeholder",
118
+ {
119
+ ns: typename,
120
+ default: "New view"
121
+ }
122
+ ],
123
+ icon: metadata.icon,
124
+ canDrop: () => false
125
+ };
126
+ };
105
127
  var checkPendingMigration = (space) => {
106
128
  return space.state.get() === SpaceState.SPACE_REQUIRES_MIGRATION || space.state.get() === SpaceState.SPACE_READY && !!Migrations.versionProperty && space.properties[Migrations.versionProperty] !== Migrations.targetVersion;
107
129
  };
108
130
  var constructSpaceNode = ({ space, navigable = false, personal, namesCache, resolve }) => {
109
131
  const hasPendingMigration = checkPendingMigration(space);
110
- const collection = space.state.get() === SpaceState.SPACE_READY && space.properties[Type.getTypename(DataType.Collection)]?.target;
132
+ const collection = space.state.get() === SpaceState.SPACE_READY && space.properties[DataType.Collection.typename]?.target;
111
133
  const partials = space.state.get() === SpaceState.SPACE_READY && Obj.instanceOf(DataType.Collection, collection) ? getCollectionGraphNodePartials({
112
134
  collection,
113
135
  space,
@@ -275,15 +297,79 @@ var constructSpaceActions = ({ space, dispatch, personal, migrating }) => {
275
297
  }
276
298
  return actions;
277
299
  };
300
+ var createStaticSchemaNode = ({ schema, space }) => {
301
+ return {
302
+ id: `${space.id}/${Type.getTypename(schema)}`,
303
+ type: `${SPACE_PLUGIN}/static-schema`,
304
+ data: schema,
305
+ properties: {
306
+ label: [
307
+ "typename label",
308
+ {
309
+ ns: Type.getTypename(schema),
310
+ default: Type.getTypename(schema)
311
+ }
312
+ ],
313
+ icon: "ph--database--regular",
314
+ role: "branch",
315
+ canDrop: () => false,
316
+ space
317
+ }
318
+ };
319
+ };
320
+ var createStaticSchemaActions = ({ schema, space, deletable }) => {
321
+ const getId = (id) => `${space.id}/${Type.getTypename(schema)}/${id}`;
322
+ const actions = [
323
+ {
324
+ id: getId(SpaceAction.RenameObject._tag),
325
+ type: ACTION_TYPE,
326
+ data: async (params) => {
327
+ throw new Error("Not implemented");
328
+ },
329
+ properties: {
330
+ label: [
331
+ "rename object label",
332
+ {
333
+ ns: Type.getTypename(DataType.StoredSchema)
334
+ }
335
+ ],
336
+ icon: "ph--pencil-simple-line--regular",
337
+ disabled: true,
338
+ disposition: "list-item",
339
+ testId: "spacePlugin.renameObject"
340
+ }
341
+ },
342
+ {
343
+ id: getId(SpaceAction.RemoveObjects._tag),
344
+ type: ACTION_TYPE,
345
+ data: async () => {
346
+ const index = space.properties.staticRecords.findIndex((typename) => typename === Type.getTypename(schema));
347
+ if (index > -1) {
348
+ space.properties.staticRecords.splice(index, 1);
349
+ }
350
+ },
351
+ properties: {
352
+ label: [
353
+ "delete object label",
354
+ {
355
+ ns: Type.getTypename(DataType.StoredSchema)
356
+ }
357
+ ],
358
+ icon: "ph--trash--regular",
359
+ disposition: "list-item",
360
+ disabled: !deletable,
361
+ testId: "spacePlugin.deleteObject"
362
+ }
363
+ }
364
+ ];
365
+ return actions;
366
+ };
278
367
  var createObjectNode = ({ space, object, droppable = true, navigable = false, resolve }) => {
279
368
  const type = Obj.getTypename(object);
280
369
  if (!type) {
281
370
  return void 0;
282
371
  }
283
372
  const metadata = resolve(type);
284
- if (Object.keys(metadata).length === 0) {
285
- return void 0;
286
- }
287
373
  const partials = Obj.instanceOf(DataType.Collection, object) ? getCollectionGraphNodePartials({
288
374
  collection: object,
289
375
  space,
@@ -292,7 +378,18 @@ var createObjectNode = ({ space, object, droppable = true, navigable = false, re
292
378
  collection: object,
293
379
  space,
294
380
  resolve
381
+ }) : Obj.instanceOf(DataType.StoredSchema, object) ? getSchemaGraphNodePartials() : Obj.instanceOf(DataType.View, object) ? getViewGraphNodePartials({
382
+ view: object,
383
+ resolve
295
384
  }) : metadata.graphProps;
385
+ const label = Obj.getLabel(object) || // TODO(wittjosiah): Remove metadata labels.
386
+ metadata.label?.(object) || [
387
+ "object name placeholder",
388
+ {
389
+ ns: type,
390
+ default: "New item"
391
+ }
392
+ ];
296
393
  return {
297
394
  id: fullyQualifiedId(object),
298
395
  type,
@@ -303,14 +400,7 @@ var createObjectNode = ({ space, object, droppable = true, navigable = false, re
303
400
  ],
304
401
  data: object,
305
402
  properties: {
306
- // TODO(burdon): Use annotation to get the name field.
307
- label: metadata.label?.(object) || object.name || [
308
- "object name placeholder",
309
- {
310
- ns: type,
311
- default: "New object"
312
- }
313
- ],
403
+ label,
314
404
  icon: metadata.icon ?? "ph--placeholder--regular",
315
405
  testId: "spacePlugin.object",
316
406
  persistenceClass: "echo",
@@ -322,17 +412,27 @@ var createObjectNode = ({ space, object, droppable = true, navigable = false, re
322
412
  }
323
413
  };
324
414
  };
325
- var constructObjectActions = ({ object, graph, dispatch, objectForms, navigable = false }) => {
415
+ var constructObjectActions = ({ object, graph, dispatch, objectForms, deletable = true, navigable = false }) => {
326
416
  const space = getSpace(object);
327
417
  invariant(space, "Space not found", {
328
418
  F: __dxlog_file,
329
- L: 398,
419
+ L: 492,
330
420
  S: void 0,
331
421
  A: [
332
422
  "space",
333
423
  "'Space not found'"
334
424
  ]
335
425
  });
426
+ const typename = Obj.getTypename(object);
427
+ invariant(typename, "Object has no typename", {
428
+ F: __dxlog_file,
429
+ L: 494,
430
+ S: void 0,
431
+ A: [
432
+ "typename",
433
+ "'Object has no typename'"
434
+ ]
435
+ });
336
436
  const getId = (id) => `${id}/${fullyQualifiedId(object)}`;
337
437
  const queryCollection = Obj.instanceOf(DataType.QueryCollection, object) ? object : void 0;
338
438
  const matchingObjectForm = queryCollection ? objectForms.find((form) => Type.getTypename(form.objectSchema) === queryCollection.query.typename) : void 0;
@@ -404,9 +504,9 @@ var constructObjectActions = ({ object, graph, dispatch, objectForms, navigable
404
504
  },
405
505
  properties: {
406
506
  label: [
407
- Obj.instanceOf(DataType.Collection, object) ? "rename collection label" : "rename object label",
507
+ "rename object label",
408
508
  {
409
- ns: SPACE_PLUGIN
509
+ ns: typename
410
510
  }
411
511
  ],
412
512
  icon: "ph--pencil-simple-line--regular",
@@ -432,19 +532,20 @@ var constructObjectActions = ({ object, graph, dispatch, objectForms, navigable
432
532
  },
433
533
  properties: {
434
534
  label: [
435
- Obj.instanceOf(DataType.Collection, object) ? "delete collection label" : "delete object label",
535
+ "delete object label",
436
536
  {
437
- ns: SPACE_PLUGIN
537
+ ns: typename
438
538
  }
439
539
  ],
440
540
  icon: "ph--trash--regular",
441
541
  disposition: "list-item",
542
+ disabled: !deletable,
442
543
  // TODO(wittjosiah): This is a browser shortcut.
443
544
  // keyBinding: object instanceof CollectionType ? undefined : 'shift+meta+Backspace',
444
545
  testId: "spacePlugin.deleteObject"
445
546
  }
446
547
  },
447
- ...navigable || !Obj.instanceOf(DataType.Collection, object) && !Obj.instanceOf(DataType.QueryCollection, object) ? [
548
+ ...navigable || !Obj.instanceOf(DataType.Collection, object) && !Obj.instanceOf(DataType.QueryCollection, object) && !Obj.instanceOf(DataType.StoredSchema, object) ? [
448
549
  {
449
550
  id: getId("copy-link"),
450
551
  type: ACTION_TYPE,
@@ -514,7 +615,7 @@ var cloneObject = async (object, resolve, newSpace) => {
514
615
  const serializer = metadata.serializer;
515
616
  invariant(serializer, `No serializer for type: ${typename}`, {
516
617
  F: __dxlog_file,
517
- L: 570,
618
+ L: 665,
518
619
  S: void 0,
519
620
  A: [
520
621
  "serializer",
@@ -539,9 +640,11 @@ export {
539
640
  getSpaceDisplayName,
540
641
  constructSpaceNode,
541
642
  constructSpaceActions,
643
+ createStaticSchemaNode,
644
+ createStaticSchemaActions,
542
645
  createObjectNode,
543
646
  constructObjectActions,
544
647
  getNestedObjects,
545
648
  cloneObject
546
649
  };
547
- //# sourceMappingURL=chunk-HO7AIKQS.mjs.map
650
+ //# sourceMappingURL=chunk-4AOMYKDE.mjs.map
@@ -0,0 +1,7 @@
1
+ {
2
+ "version": 3,
3
+ "sources": ["../../../src/util.tsx"],
4
+ "sourcesContent": ["//\n// Copyright 2023 DXOS.org\n//\n\nimport { Rx } from '@effect-rx/rx-react';\nimport { pipe } from 'effect';\n\nimport { chain, createIntent, LayoutAction, type PromiseIntentDispatcher } from '@dxos/app-framework';\nimport { Obj, Ref, Type } from '@dxos/echo';\nimport { type AnyEchoObject, EXPANDO_TYPENAME } from '@dxos/echo-schema';\nimport { invariant } from '@dxos/invariant';\nimport { Migrations } from '@dxos/migrations';\nimport {\n ACTION_GROUP_TYPE,\n ACTION_TYPE,\n type ReadableGraph,\n type ActionData,\n type InvokeParams,\n type Node,\n type NodeArg,\n isGraphNode,\n} from '@dxos/plugin-graph';\nimport { fullyQualifiedId, getSpace, type QueryResult, SpaceState, type Space, isSpace } from '@dxos/react-client/echo';\nimport { ATTENDABLE_PATH_SEPARATOR } from '@dxos/react-ui-attention';\nimport { type TreeData } from '@dxos/react-ui-list';\nimport { DataType } from '@dxos/schema';\n\nimport { SPACE_PLUGIN } from './meta';\nimport { SpaceAction, SPACE_TYPE, type ObjectForm } from './types';\n\nexport const SPACES = `${SPACE_PLUGIN}-spaces`;\nexport const COMPOSER_SPACE_LOCK = 'dxos.org/plugin/space/lock';\n// TODO(wittjosiah): Remove.\nexport const SHARED = 'shared-spaces';\n\n/**\n * Convert a query result to an Rx value of the objects.\n */\nexport const rxFromQuery = <T extends AnyEchoObject>(query: QueryResult<T>): Rx.Rx<T[]> => {\n return Rx.make((get) => {\n const unsubscribe = query.subscribe((result) => {\n get.setSelf(result.objects);\n });\n\n get.addFinalizer(() => unsubscribe());\n return query.objects;\n });\n};\n\n// TODO(wittjosiah): Factor out? Expose via capability?\nexport const getSpaceDisplayName = (\n space: Space,\n { personal, namesCache = {} }: { personal?: boolean; namesCache?: Record<string, string> } = {},\n): string | [string, { ns: string }] => {\n return space.state.get() === SpaceState.SPACE_READY && (space.properties.name?.length ?? 0) > 0\n ? space.properties.name\n : namesCache[space.id]\n ? namesCache[space.id]\n : personal\n ? ['personal space label', { ns: SPACE_PLUGIN }]\n : ['unnamed space label', { ns: SPACE_PLUGIN }];\n};\n\nconst getCollectionGraphNodePartials = ({\n collection,\n space,\n resolve,\n}: {\n collection: DataType.Collection;\n space: Space;\n resolve: (typename: string) => Record<string, any>;\n}) => {\n return {\n acceptPersistenceClass: new Set(['echo']),\n acceptPersistenceKey: new Set([space.id]),\n role: 'branch',\n onRearrangeChildren: (nextOrder: unknown[]) => {\n // Change on disk.\n collection.objects = nextOrder.filter(Obj.isObject).map(Ref.make);\n },\n onTransferStart: (child: Node<Obj.Any>, index?: number) => {\n // TODO(wittjosiah): Support transfer between spaces.\n // const childSpace = getSpace(child.data);\n // if (space && childSpace && !childSpace.key.equals(space.key)) {\n // // Create clone of child and add to destination space.\n // const newObject = clone(child.data, {\n // // TODO(wittjosiah): This needs to be generalized and not hardcoded here.\n // additional: [\n // child.data.content,\n // ...(child.data.objects ?? []),\n // ...(child.data.objects ?? []).map((object: TypedObject) => object.content),\n // ],\n // });\n // space.db.add(newObject);\n // collection.objects.push(newObject);\n // } else {\n\n // Add child to destination collection.\n // TODO(dmaretskyi): Compare by id.\n if (!collection.objects.find((object) => object.target === child.data)) {\n if (typeof index !== 'undefined') {\n collection.objects.splice(index, 0, Ref.make(child.data));\n } else {\n collection.objects.push(Ref.make(child.data));\n }\n }\n\n // }\n },\n onTransferEnd: (child: Node<Obj.Any>, destination: Node) => {\n // Remove child from origin collection.\n const index = collection.objects.findIndex((object) => object.target === child.data);\n if (index > -1) {\n collection.objects.splice(index, 1);\n }\n\n // TODO(wittjosiah): Support transfer between spaces.\n // const childSpace = getSpace(child.data);\n // const destinationSpace =\n // destination.data instanceof SpaceProxy ? destination.data : getSpace(destination.data);\n // if (destinationSpace && childSpace && !childSpace.key.equals(destinationSpace.key)) {\n // // Mark child as deleted in origin space.\n // childSpace.db.remove(child.data);\n // }\n },\n onCopy: async (child: Node<Obj.Any>, index?: number) => {\n // Create clone of child and add to destination space.\n const newObject = await cloneObject(child.data, resolve, space);\n space.db.add(newObject);\n if (typeof index !== 'undefined') {\n collection.objects.splice(index, 0, Ref.make(newObject));\n } else {\n collection.objects.push(Ref.make(newObject));\n }\n },\n };\n};\n\nconst getQueryCollectionNodePartials = ({\n collection,\n space,\n resolve,\n}: {\n collection: DataType.QueryCollection;\n space: Space;\n resolve: (typename: string) => Record<string, any>;\n}) => {\n return {\n icon: collection.query.typename && resolve(collection.query.typename)?.icon,\n acceptPersistenceClass: new Set(['echo']),\n acceptPersistenceKey: new Set([space.id]),\n role: 'branch',\n canDrop: (source: TreeData) => {\n return (\n isGraphNode(source.item) &&\n Obj.isObject(source.item.data) &&\n Obj.getTypename(source.item.data) === collection.query.typename\n );\n },\n onTransferStart: (child: Node<Obj.Any>, index?: number) => {\n // No-op. Objects are moved into query collections by being removed from their original collection.\n },\n onTransferEnd: (child: Node<Obj.Any>, destination: Node) => {\n // No-op. Objects are moved out of query collections by being added to another collection.\n },\n };\n};\n\nconst getSchemaGraphNodePartials = () => {\n return {\n role: 'branch',\n canDrop: () => false,\n };\n};\n\nconst getViewGraphNodePartials = ({\n view,\n resolve,\n}: {\n view: DataType.View;\n resolve: (typename: string) => Record<string, any>;\n}) => {\n const presentation = view.presentation.target;\n const typename = presentation ? Obj.getTypename(presentation) : undefined;\n const metadata = typename ? resolve(typename) : {};\n\n return {\n label: view.name || ['object name placeholder', { ns: typename, default: 'New view' }],\n icon: metadata.icon,\n canDrop: () => false,\n };\n};\n\nconst checkPendingMigration = (space: Space) => {\n return (\n space.state.get() === SpaceState.SPACE_REQUIRES_MIGRATION ||\n (space.state.get() === SpaceState.SPACE_READY &&\n !!Migrations.versionProperty &&\n space.properties[Migrations.versionProperty] !== Migrations.targetVersion)\n );\n};\n\nexport const constructSpaceNode = ({\n space,\n navigable = false,\n personal,\n namesCache,\n resolve,\n}: {\n space: Space;\n navigable?: boolean;\n personal?: boolean;\n namesCache?: Record<string, string>;\n resolve: (typename: string) => Record<string, any>;\n}) => {\n const hasPendingMigration = checkPendingMigration(space);\n const collection =\n space.state.get() === SpaceState.SPACE_READY && space.properties[DataType.Collection.typename]?.target;\n const partials =\n space.state.get() === SpaceState.SPACE_READY && Obj.instanceOf(DataType.Collection, collection)\n ? getCollectionGraphNodePartials({ collection, space, resolve })\n : {};\n\n return {\n id: space.id,\n type: SPACE_TYPE,\n cacheable: ['label', 'icon', 'role'],\n data: space,\n properties: {\n ...partials,\n label: getSpaceDisplayName(space, { personal, namesCache }),\n description: space.state.get() === SpaceState.SPACE_READY && space.properties.description,\n hue: space.state.get() === SpaceState.SPACE_READY && space.properties.hue,\n icon:\n space.state.get() === SpaceState.SPACE_READY && space.properties.icon\n ? `ph--${space.properties.icon}--regular`\n : undefined,\n disabled: !navigable || space.state.get() !== SpaceState.SPACE_READY || hasPendingMigration,\n testId: 'spacePlugin.space',\n canDrop: (source: TreeData) => {\n // TODO(wittjosiah): Find a way to only allow space as source for rearranging.\n return Obj.isObject(source.item.data) || isSpace(source.item.data);\n },\n },\n nodes: [\n {\n id: `settings${ATTENDABLE_PATH_SEPARATOR}${space.id}`,\n type: `${SPACE_PLUGIN}/settings`,\n data: null,\n properties: {\n label: ['settings panel label', { ns: SPACE_PLUGIN }],\n icon: 'ph--faders--regular',\n disposition: 'alternate-tree',\n },\n nodes: [\n {\n id: `properties-settings${ATTENDABLE_PATH_SEPARATOR}${space.id}`,\n type: `${SPACE_PLUGIN}/properties`,\n data: `${SPACE_PLUGIN}/properties`,\n properties: {\n label: ['space settings properties label', { ns: SPACE_PLUGIN }],\n icon: 'ph--sliders--regular',\n position: 'hoist',\n },\n },\n {\n id: `members-settings${ATTENDABLE_PATH_SEPARATOR}${space.id}`,\n type: `${SPACE_PLUGIN}/members`,\n data: `${SPACE_PLUGIN}/members`,\n properties: {\n label: ['members panel label', { ns: SPACE_PLUGIN }],\n icon: 'ph--users--regular',\n position: 'hoist',\n },\n },\n {\n id: `schema-settings${ATTENDABLE_PATH_SEPARATOR}${space.id}`,\n type: `${SPACE_PLUGIN}/schema`,\n data: `${SPACE_PLUGIN}/schema`,\n properties: {\n label: ['space settings schema label', { ns: SPACE_PLUGIN }],\n icon: 'ph--shapes--regular',\n },\n },\n ],\n },\n ],\n };\n};\n\nexport const constructSpaceActions = ({\n space,\n dispatch,\n personal,\n migrating,\n}: {\n space: Space;\n dispatch: PromiseIntentDispatcher;\n personal?: boolean;\n migrating?: boolean;\n}) => {\n const state = space.state.get();\n const hasPendingMigration = checkPendingMigration(space);\n const getId = (id: string) => `${id}/${space.id}`;\n const actions: NodeArg<ActionData>[] = [];\n\n if (hasPendingMigration) {\n actions.push({\n id: getId(SpaceAction.Migrate._tag),\n type: ACTION_GROUP_TYPE,\n data: async () => {\n await dispatch(createIntent(SpaceAction.Migrate, { space }));\n },\n properties: {\n label: ['migrate space label', { ns: SPACE_PLUGIN }],\n icon: 'ph--database--regular',\n disposition: 'list-item-primary',\n disabled: migrating || Migrations.running(space),\n },\n });\n }\n\n if (state === SpaceState.SPACE_READY && !hasPendingMigration) {\n actions.push(\n {\n id: getId(SpaceAction.OpenCreateObject._tag),\n type: ACTION_TYPE,\n data: async () => {\n await dispatch(createIntent(SpaceAction.OpenCreateObject, { target: space }));\n },\n properties: {\n label: ['create object in space label', { ns: SPACE_PLUGIN }],\n icon: 'ph--plus--regular',\n disposition: 'item',\n testId: 'spacePlugin.createObject',\n },\n },\n {\n id: getId(SpaceAction.Rename._tag),\n type: ACTION_TYPE,\n data: async (params?: InvokeParams) => {\n await dispatch(createIntent(SpaceAction.Rename, { space, caller: params?.caller }));\n },\n properties: {\n label: ['rename space label', { ns: SPACE_PLUGIN }],\n icon: 'ph--pencil-simple-line--regular',\n keyBinding: {\n macos: 'shift+F6',\n windows: 'shift+F6',\n },\n },\n },\n );\n }\n\n return actions;\n};\n\nexport const createStaticSchemaNode = ({ schema, space }: { schema: Type.Obj.Any; space: Space }) => {\n return {\n id: `${space.id}/${Type.getTypename(schema)}`,\n type: `${SPACE_PLUGIN}/static-schema`,\n data: schema,\n properties: {\n label: ['typename label', { ns: Type.getTypename(schema), default: Type.getTypename(schema) }],\n icon: 'ph--database--regular',\n role: 'branch',\n canDrop: () => false,\n space,\n },\n };\n};\n\nexport const createStaticSchemaActions = ({\n schema,\n space,\n deletable,\n}: {\n schema: Type.Obj.Any;\n space: Space;\n deletable: boolean;\n}) => {\n const getId = (id: string) => `${space.id}/${Type.getTypename(schema)}/${id}`;\n\n const actions: NodeArg<ActionData>[] = [\n {\n id: getId(SpaceAction.RenameObject._tag),\n type: ACTION_TYPE,\n data: async (params?: InvokeParams) => {\n throw new Error('Not implemented');\n },\n properties: {\n label: ['rename object label', { ns: Type.getTypename(DataType.StoredSchema) }],\n icon: 'ph--pencil-simple-line--regular',\n disabled: true,\n disposition: 'list-item',\n testId: 'spacePlugin.renameObject',\n },\n },\n {\n id: getId(SpaceAction.RemoveObjects._tag),\n type: ACTION_TYPE,\n data: async () => {\n const index = space.properties.staticRecords.findIndex(\n (typename: string) => typename === Type.getTypename(schema),\n );\n if (index > -1) {\n space.properties.staticRecords.splice(index, 1);\n }\n },\n properties: {\n label: ['delete object label', { ns: Type.getTypename(DataType.StoredSchema) }],\n icon: 'ph--trash--regular',\n disposition: 'list-item',\n disabled: !deletable,\n testId: 'spacePlugin.deleteObject',\n },\n },\n ];\n\n return actions;\n};\n\nexport const createObjectNode = ({\n space,\n object,\n droppable = true,\n navigable = false,\n resolve,\n}: {\n space: Space;\n object: Obj.Any;\n droppable?: boolean;\n navigable?: boolean;\n resolve: (typename: string) => Record<string, any>;\n}) => {\n const type = Obj.getTypename(object);\n if (!type) {\n return undefined;\n }\n\n const metadata = resolve(type);\n const partials = Obj.instanceOf(DataType.Collection, object)\n ? getCollectionGraphNodePartials({ collection: object, space, resolve })\n : Obj.instanceOf(DataType.QueryCollection, object)\n ? getQueryCollectionNodePartials({ collection: object, space, resolve })\n : Obj.instanceOf(DataType.StoredSchema, object)\n ? getSchemaGraphNodePartials()\n : Obj.instanceOf(DataType.View, object)\n ? getViewGraphNodePartials({ view: object, resolve })\n : metadata.graphProps;\n\n const label = Obj.getLabel(object) ||\n // TODO(wittjosiah): Remove metadata labels.\n metadata.label?.(object) || ['object name placeholder', { ns: type, default: 'New item' }];\n\n return {\n id: fullyQualifiedId(object),\n type,\n cacheable: ['label', 'icon', 'role'],\n data: object,\n properties: {\n label,\n icon: metadata.icon ?? 'ph--placeholder--regular',\n testId: 'spacePlugin.object',\n persistenceClass: 'echo',\n persistenceKey: space?.id,\n canDrop: (source: TreeData) => {\n return droppable && isGraphNode(source.item) && Obj.isObject(source.item.data);\n },\n ...partials,\n },\n };\n};\n\nexport const constructObjectActions = ({\n object,\n graph,\n dispatch,\n objectForms,\n deletable = true,\n navigable = false,\n}: {\n object: Obj.Any;\n graph: ReadableGraph;\n dispatch: PromiseIntentDispatcher;\n objectForms: ObjectForm<any>[];\n deletable?: boolean;\n navigable?: boolean;\n}) => {\n const space = getSpace(object);\n invariant(space, 'Space not found');\n const typename = Obj.getTypename(object);\n invariant(typename, 'Object has no typename');\n\n const getId = (id: string) => `${id}/${fullyQualifiedId(object)}`;\n\n const queryCollection = Obj.instanceOf(DataType.QueryCollection, object) ? object : undefined;\n const matchingObjectForm = queryCollection\n ? objectForms.find((form) => Type.getTypename(form.objectSchema) === queryCollection.query.typename)\n : undefined;\n\n const actions: NodeArg<ActionData>[] = [\n ...(Obj.instanceOf(DataType.Collection, object)\n ? [\n {\n id: getId(SpaceAction.OpenCreateObject._tag),\n type: ACTION_TYPE,\n data: async () => {\n await dispatch(createIntent(SpaceAction.OpenCreateObject, { target: object }));\n },\n properties: {\n label: ['create object in collection label', { ns: SPACE_PLUGIN }],\n icon: 'ph--plus--regular',\n disposition: 'list-item-primary',\n testId: 'spacePlugin.createObject',\n },\n },\n ]\n : []),\n ...(matchingObjectForm\n ? [\n {\n id: getId(SpaceAction.OpenCreateObject._tag),\n type: ACTION_TYPE,\n data: async () => {\n if (matchingObjectForm.formSchema) {\n await dispatch(\n createIntent(SpaceAction.OpenCreateObject, {\n target: space,\n typename: queryCollection?.query.typename,\n }),\n );\n } else {\n await dispatch(\n pipe(\n matchingObjectForm.getIntent({}, { space }),\n chain(SpaceAction.AddObject, { target: space, hidden: true }),\n chain(LayoutAction.Open, { part: 'main' }),\n ),\n );\n }\n },\n properties: {\n label: ['create object in smart collection label', { ns: SPACE_PLUGIN }],\n icon: 'ph--plus--regular',\n disposition: 'list-item-primary',\n testId: 'spacePlugin.createObject',\n },\n },\n ]\n : []),\n {\n id: getId(SpaceAction.RenameObject._tag),\n type: ACTION_TYPE,\n data: async (params?: InvokeParams) => {\n await dispatch(createIntent(SpaceAction.RenameObject, { object, caller: params?.caller }));\n },\n properties: {\n label: ['rename object label', { ns: typename }],\n icon: 'ph--pencil-simple-line--regular',\n disposition: 'list-item',\n // TODO(wittjosiah): Not working.\n // keyBinding: {\n // macos: 'shift+F6',\n // },\n testId: 'spacePlugin.renameObject',\n },\n },\n {\n id: getId(SpaceAction.RemoveObjects._tag),\n type: ACTION_TYPE,\n data: async () => {\n const collection = graph\n .getConnections(fullyQualifiedId(object), 'inbound')\n .find(({ data }) => Obj.instanceOf(DataType.Collection, data))?.data;\n await dispatch(createIntent(SpaceAction.RemoveObjects, { objects: [object], target: collection }));\n },\n properties: {\n label: ['delete object label', { ns: typename }],\n icon: 'ph--trash--regular',\n disposition: 'list-item',\n disabled: !deletable,\n // TODO(wittjosiah): This is a browser shortcut.\n // keyBinding: object instanceof CollectionType ? undefined : 'shift+meta+Backspace',\n testId: 'spacePlugin.deleteObject',\n },\n },\n ...(navigable ||\n (!Obj.instanceOf(DataType.Collection, object) &&\n !Obj.instanceOf(DataType.QueryCollection, object) &&\n !Obj.instanceOf(DataType.StoredSchema, object))\n ? [\n {\n id: getId('copy-link'),\n type: ACTION_TYPE,\n data: async () => {\n const url = `${window.location.origin}/${space.id}/${fullyQualifiedId(object)}`;\n await navigator.clipboard.writeText(url);\n },\n properties: {\n label: ['copy link label', { ns: SPACE_PLUGIN }],\n icon: 'ph--link--regular',\n disposition: 'list-item',\n testId: 'spacePlugin.copyLink',\n },\n },\n ]\n : []),\n // TODO(wittjosiah): Factor out and apply to all nodes.\n {\n id: getId(LayoutAction.Expose._tag),\n type: ACTION_TYPE,\n data: async () => {\n await dispatch(createIntent(LayoutAction.Expose, { part: 'navigation', subject: fullyQualifiedId(object) }));\n },\n properties: {\n label: ['expose object label', { ns: SPACE_PLUGIN }],\n icon: 'ph--eye--regular',\n disposition: 'heading-list-item',\n testId: 'spacePlugin.exposeObject',\n },\n },\n ];\n\n return actions;\n};\n\n/**\n * @deprecated This is a temporary solution.\n */\nexport const getNestedObjects = async (\n object: Obj.Any,\n resolve: (typename: string) => Record<string, any>,\n): Promise<Obj.Any[]> => {\n const type = Obj.getTypename(object);\n if (!type) {\n return [];\n }\n\n const metadata = resolve(type);\n const loadReferences = metadata?.loadReferences;\n if (typeof loadReferences !== 'function') {\n return [];\n }\n\n const objects: Obj.Any[] = await loadReferences(object);\n const nested = await Promise.all(objects.map((object) => getNestedObjects(object, resolve)));\n return [...objects, ...nested.flat()];\n};\n\n/**\n * @deprecated Workaround for ECHO not supporting clone.\n */\n// TODO(burdon): Remove.\nexport const cloneObject = async (\n object: Type.Expando,\n resolve: (typename: string) => Record<string, any>,\n newSpace: Space,\n): Promise<Type.Expando> => {\n const schema = Obj.getSchema(object);\n const typename = schema ? (Type.getTypename(schema) ?? EXPANDO_TYPENAME) : EXPANDO_TYPENAME;\n const metadata = resolve(typename);\n const serializer = metadata.serializer;\n invariant(serializer, `No serializer for type: ${typename}`);\n const content = await serializer.serialize({ object });\n return serializer.deserialize({ content, space: newSpace, newId: true });\n};\n"],
5
+ "mappings": "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",
6
+ "names": ["Rx", "pipe", "chain", "createIntent", "LayoutAction", "Obj", "Ref", "Type", "EXPANDO_TYPENAME", "invariant", "Migrations", "ACTION_GROUP_TYPE", "ACTION_TYPE", "isGraphNode", "fullyQualifiedId", "getSpace", "SpaceState", "isSpace", "ATTENDABLE_PATH_SEPARATOR", "DataType", "SPACES", "SPACE_PLUGIN", "COMPOSER_SPACE_LOCK", "SHARED", "rxFromQuery", "query", "Rx", "make", "get", "unsubscribe", "subscribe", "result", "setSelf", "objects", "addFinalizer", "getSpaceDisplayName", "space", "personal", "namesCache", "state", "SpaceState", "SPACE_READY", "properties", "name", "length", "id", "ns", "getCollectionGraphNodePartials", "collection", "resolve", "acceptPersistenceClass", "Set", "acceptPersistenceKey", "role", "onRearrangeChildren", "nextOrder", "filter", "Obj", "isObject", "map", "Ref", "onTransferStart", "child", "index", "find", "object", "target", "data", "splice", "push", "onTransferEnd", "destination", "findIndex", "onCopy", "newObject", "cloneObject", "db", "add", "getQueryCollectionNodePartials", "icon", "typename", "canDrop", "source", "isGraphNode", "item", "getTypename", "getSchemaGraphNodePartials", "getViewGraphNodePartials", "view", "presentation", "undefined", "metadata", "label", "default", "checkPendingMigration", "SPACE_REQUIRES_MIGRATION", "Migrations", "versionProperty", "targetVersion", "constructSpaceNode", "navigable", "hasPendingMigration", "DataType", "Collection", "partials", "instanceOf", "type", "SPACE_TYPE", "cacheable", "description", "hue", "disabled", "testId", "isSpace", "nodes", "ATTENDABLE_PATH_SEPARATOR", "disposition", "position", "constructSpaceActions", "dispatch", "migrating", "getId", "actions", "SpaceAction", "Migrate", "_tag", "ACTION_GROUP_TYPE", "createIntent", "running", "OpenCreateObject", "ACTION_TYPE", "Rename", "params", "caller", "keyBinding", "macos", "windows", "createStaticSchemaNode", "schema", "Type", "createStaticSchemaActions", "deletable", "RenameObject", "Error", "StoredSchema", "RemoveObjects", "staticRecords", "createObjectNode", "droppable", "QueryCollection", "View", "graphProps", "getLabel", "fullyQualifiedId", "persistenceClass", "persistenceKey", "constructObjectActions", "graph", "objectForms", "getSpace", "invariant", "queryCollection", "matchingObjectForm", "form", "objectSchema", "formSchema", "pipe", "getIntent", "chain", "AddObject", "hidden", "LayoutAction", "Open", "part", "getConnections", "url", "window", "location", "origin", "navigator", "clipboard", "writeText", "Expose", "subject", "getNestedObjects", "loadReferences", "nested", "Promise", "all", "flat", "newSpace", "getSchema", "EXPANDO_TYPENAME", "serializer", "content", "serialize", "deserialize", "newId"]
7
+ }
@@ -1,19 +1,20 @@
1
1
  import { createRequire } from 'node:module';const require = createRequire(import.meta.url);
2
2
  import {
3
3
  SPACE_PLUGIN
4
- } from "./chunk-MSWEFAPD.mjs";
4
+ } from "./chunk-HWNG4MEU.mjs";
5
5
 
6
- // packages/plugins/plugin-space/src/events.ts
6
+ // src/events.ts
7
7
  import { defineEvent, Events } from "@dxos/app-framework";
8
8
  (function(SpaceEvents2) {
9
9
  SpaceEvents2.StateReady = Events.createStateEvent(`${SPACE_PLUGIN}/event/state-ready`);
10
10
  SpaceEvents2.SetupSettingsPanel = defineEvent(`${SPACE_PLUGIN}/event/setup-settings-panel`);
11
11
  SpaceEvents2.DefaultSpaceReady = defineEvent(`${SPACE_PLUGIN}/event/default-space-ready`);
12
12
  SpaceEvents2.SpaceCreated = defineEvent(`${SPACE_PLUGIN}/event/space-created`);
13
+ SpaceEvents2.SchemaAdded = defineEvent(`${SPACE_PLUGIN}/event/schema-added`);
13
14
  })(SpaceEvents || (SpaceEvents = {}));
14
15
  var SpaceEvents;
15
16
 
16
17
  export {
17
18
  SpaceEvents
18
19
  };
19
- //# sourceMappingURL=chunk-3CP67AYY.mjs.map
20
+ //# sourceMappingURL=chunk-5HHYE264.mjs.map
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "version": 3,
3
3
  "sources": ["../../../src/events.ts"],
4
- "sourcesContent": ["//\n// Copyright 2025 DXOS.org\n//\n\nimport { defineEvent, Events } from '@dxos/app-framework';\n\nimport { SPACE_PLUGIN } from './meta';\n\nexport namespace SpaceEvents {\n export const StateReady = Events.createStateEvent(`${SPACE_PLUGIN}/event/state-ready`);\n export const SetupSettingsPanel = defineEvent(`${SPACE_PLUGIN}/event/setup-settings-panel`);\n export const DefaultSpaceReady = defineEvent(`${SPACE_PLUGIN}/event/default-space-ready`);\n export const SpaceCreated = defineEvent(`${SPACE_PLUGIN}/event/space-created`);\n}\n"],
5
- "mappings": ";;;;;;AAIA,SAASA,aAAaC,cAAc;UAInBC,cAAAA;eACFC,aAAaC,OAAOC,iBAAiB,GAAGC,YAAAA,oBAAgC;eACxEC,qBAAqBC,YAAY,GAAGF,YAAAA,6BAAyC;eAC7EG,oBAAoBD,YAAY,GAAGF,YAAAA,4BAAwC;eAC3EI,eAAeF,YAAY,GAAGF,YAAAA,sBAAkC;AAC/E,GALiBJ,gBAAAA,cAAAA,CAAAA,EAAAA;;",
6
- "names": ["defineEvent", "Events", "SpaceEvents", "StateReady", "Events", "createStateEvent", "SPACE_PLUGIN", "SetupSettingsPanel", "defineEvent", "DefaultSpaceReady", "SpaceCreated"]
4
+ "sourcesContent": ["//\n// Copyright 2025 DXOS.org\n//\n\nimport { defineEvent, Events } from '@dxos/app-framework';\n\nimport { SPACE_PLUGIN } from './meta';\n\nexport namespace SpaceEvents {\n export const StateReady = Events.createStateEvent(`${SPACE_PLUGIN}/event/state-ready`);\n export const SetupSettingsPanel = defineEvent(`${SPACE_PLUGIN}/event/setup-settings-panel`);\n export const DefaultSpaceReady = defineEvent(`${SPACE_PLUGIN}/event/default-space-ready`);\n export const SpaceCreated = defineEvent(`${SPACE_PLUGIN}/event/space-created`);\n export const SchemaAdded = defineEvent(`${SPACE_PLUGIN}/event/schema-added`);\n}\n"],
5
+ "mappings": ";;;;;;AAIA,SAASA,aAAaC,cAAc;UAInBC,cAAAA;eACFC,aAAaC,OAAOC,iBAAiB,GAAGC,YAAAA,oBAAgC;eACxEC,qBAAqBC,YAAY,GAAGF,YAAAA,6BAAyC;eAC7EG,oBAAoBD,YAAY,GAAGF,YAAAA,4BAAwC;eAC3EI,eAAeF,YAAY,GAAGF,YAAAA,sBAAkC;eAChEK,cAAcH,YAAY,GAAGF,YAAAA,qBAAiC;AAC7E,GANiBJ,gBAAAA,cAAAA,CAAAA,EAAAA;;",
6
+ "names": ["defineEvent", "Events", "SpaceEvents", "StateReady", "Events", "createStateEvent", "SPACE_PLUGIN", "SetupSettingsPanel", "defineEvent", "DefaultSpaceReady", "SpaceCreated", "SchemaAdded"]
7
7
  }
@@ -1,15 +1,16 @@
1
1
  import { createRequire } from 'node:module';const require = createRequire(import.meta.url);
2
2
  import {
3
3
  SPACE_PLUGIN
4
- } from "./chunk-MSWEFAPD.mjs";
4
+ } from "./chunk-HWNG4MEU.mjs";
5
5
 
6
- // packages/plugins/plugin-space/src/capabilities/capabilities.ts
6
+ // src/capabilities/capabilities.ts
7
7
  import { defineCapability } from "@dxos/app-framework";
8
8
  (function(SpaceCapabilities2) {
9
9
  SpaceCapabilities2.State = defineCapability(`${SPACE_PLUGIN}/capability/state`);
10
10
  SpaceCapabilities2.MutableState = defineCapability(`${SPACE_PLUGIN}/capability/state`);
11
11
  SpaceCapabilities2.SettingsSection = defineCapability(`${SPACE_PLUGIN}/capability/settings-section`);
12
12
  SpaceCapabilities2.OnSpaceCreated = defineCapability(`${SPACE_PLUGIN}/capability/on-space-created`);
13
+ SpaceCapabilities2.OnSchemaAdded = defineCapability(`${SPACE_PLUGIN}/capability/on-schema-added`);
13
14
  SpaceCapabilities2.ObjectForm = defineCapability(`${SPACE_PLUGIN}/capability/object-form`);
14
15
  })(SpaceCapabilities || (SpaceCapabilities = {}));
15
16
  var SpaceCapabilities;
@@ -17,4 +18,4 @@ var SpaceCapabilities;
17
18
  export {
18
19
  SpaceCapabilities
19
20
  };
20
- //# sourceMappingURL=chunk-BSLREHIX.mjs.map
21
+ //# sourceMappingURL=chunk-5T3ZH23B.mjs.map
@@ -0,0 +1,7 @@
1
+ {
2
+ "version": 3,
3
+ "sources": ["../../../src/capabilities/capabilities.ts"],
4
+ "sourcesContent": ["//\n// Copyright 2025 DXOS.org\n//\n\nimport { type Schema } from 'effect';\n\nimport { type AnyIntentChain, defineCapability, type Label } from '@dxos/app-framework';\nimport { type Space } from '@dxos/react-client/echo';\nimport { type DataType } from '@dxos/schema';\nimport { type Position, type DeepReadonly } from '@dxos/util';\n\nimport { SPACE_PLUGIN } from '../meta';\nimport { type ObjectForm, type PluginState } from '../types';\n\nexport namespace SpaceCapabilities {\n export const State = defineCapability<DeepReadonly<PluginState>>(`${SPACE_PLUGIN}/capability/state`);\n export const MutableState = defineCapability<PluginState>(`${SPACE_PLUGIN}/capability/state`);\n\n export type SettingsSection = { id: string; label: Label; position?: Position };\n export const SettingsSection = defineCapability<SettingsSection>(`${SPACE_PLUGIN}/capability/settings-section`);\n\n export type OnSpaceCreated = (params: { space: Space; rootCollection: DataType.Collection }) => AnyIntentChain;\n export const OnSpaceCreated = defineCapability<OnSpaceCreated>(`${SPACE_PLUGIN}/capability/on-space-created`);\n\n export type OnSchemaAdded = (params: { space: Space; schema: Schema.Schema.AnyNoContext }) => AnyIntentChain;\n export const OnSchemaAdded = defineCapability<OnSchemaAdded>(`${SPACE_PLUGIN}/capability/on-schema-added`);\n\n export const ObjectForm = defineCapability<ObjectForm<any>>(`${SPACE_PLUGIN}/capability/object-form`);\n}\n"],
5
+ "mappings": ";;;;;;AAMA,SAA8BA,wBAAoC;UAQjDC,oBAAAA;qBACFC,QAAQC,iBAA4C,GAAGC,YAAAA,mBAA+B;qBACtFC,eAAeF,iBAA8B,GAAGC,YAAAA,mBAA+B;qBAG/EE,kBAAkBH,iBAAkC,GAAGC,YAAAA,8BAA0C;qBAGjGG,iBAAiBJ,iBAAiC,GAAGC,YAAAA,8BAA0C;qBAG/FI,gBAAgBL,iBAAgC,GAAGC,YAAAA,6BAAyC;qBAE5FK,aAAaN,iBAAkC,GAAGC,YAAAA,yBAAqC;AACtG,GAdiBH,sBAAAA,oBAAAA,CAAAA,EAAAA;;",
6
+ "names": ["defineCapability", "SpaceCapabilities", "State", "defineCapability", "SPACE_PLUGIN", "MutableState", "SettingsSection", "OnSpaceCreated", "OnSchemaAdded", "ObjectForm"]
7
+ }