@dxos/plugin-space 0.8.2-main.f081794 → 0.8.2-main.fbd8ed0

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 (283) hide show
  1. package/dist/lib/browser/app-graph-builder-7X3SIPCD.mjs +328 -0
  2. package/dist/lib/browser/app-graph-builder-7X3SIPCD.mjs.map +7 -0
  3. package/dist/lib/browser/{app-graph-serializer-6WIAFHYK.mjs → app-graph-serializer-VRU57AEZ.mjs} +6 -6
  4. package/dist/lib/browser/app-graph-serializer-VRU57AEZ.mjs.map +7 -0
  5. package/dist/lib/browser/{chunk-MHTZAZT2.mjs → chunk-43UQWMD3.mjs} +327 -535
  6. package/dist/lib/browser/chunk-43UQWMD3.mjs.map +7 -0
  7. package/dist/lib/browser/chunk-AR5R2F6B.mjs +88 -0
  8. package/dist/lib/browser/chunk-AR5R2F6B.mjs.map +7 -0
  9. package/dist/lib/browser/chunk-CY35NLWL.mjs +296 -0
  10. package/dist/lib/browser/chunk-CY35NLWL.mjs.map +7 -0
  11. package/dist/lib/browser/{chunk-FSHDAPFY.mjs → chunk-IQFFOAWD.mjs} +24 -38
  12. package/dist/lib/browser/chunk-IQFFOAWD.mjs.map +7 -0
  13. package/dist/lib/browser/{chunk-MIJHUABE.mjs → chunk-UBSVH2NQ.mjs} +3 -4
  14. package/dist/lib/browser/chunk-UBSVH2NQ.mjs.map +7 -0
  15. package/dist/lib/browser/{identity-created-DVHNLGYU.mjs → identity-created-ANRJHNMQ.mjs} +3 -3
  16. package/dist/lib/browser/identity-created-ANRJHNMQ.mjs.map +7 -0
  17. package/dist/lib/browser/index.mjs +24 -23
  18. package/dist/lib/browser/index.mjs.map +3 -3
  19. package/dist/lib/browser/{intent-resolver-72IWBVYE.mjs → intent-resolver-KRINV5QI.mjs} +90 -94
  20. package/dist/lib/browser/intent-resolver-KRINV5QI.mjs.map +7 -0
  21. package/dist/lib/browser/meta.json +1 -1
  22. package/dist/lib/browser/{react-root-DRVM5ACV.mjs → react-root-J3SP2HVW.mjs} +5 -4
  23. package/dist/lib/browser/{react-surface-KODNQYDN.mjs → react-surface-J7T2IMH4.mjs} +6 -30
  24. package/dist/lib/browser/react-surface-J7T2IMH4.mjs.map +7 -0
  25. package/dist/lib/browser/schema-defs-OCBY7APN.mjs +26 -0
  26. package/dist/lib/browser/schema-defs-OCBY7APN.mjs.map +7 -0
  27. package/dist/lib/browser/{schema-tools-YAXPRIXP.mjs → schema-tools-MYC4LTQD.mjs} +22 -22
  28. package/dist/lib/browser/schema-tools-MYC4LTQD.mjs.map +7 -0
  29. package/dist/lib/browser/{settings-2UIV5WX5.mjs → settings-G24447B7.mjs} +2 -2
  30. package/dist/lib/browser/{spaces-ready-3URIMLCR.mjs → spaces-ready-5I3RKYTT.mjs} +16 -15
  31. package/dist/lib/browser/spaces-ready-5I3RKYTT.mjs.map +7 -0
  32. package/dist/lib/browser/{state-CYV6QCTN.mjs → state-SI4B5GHC.mjs} +2 -2
  33. package/dist/lib/browser/state-SI4B5GHC.mjs.map +7 -0
  34. package/dist/lib/browser/types/index.mjs +1 -1
  35. package/dist/lib/node/app-graph-builder-C2ISDMSL.cjs +328 -0
  36. package/dist/lib/node/app-graph-builder-C2ISDMSL.cjs.map +7 -0
  37. package/dist/lib/node/{app-graph-serializer-GOLCQHFQ.cjs → app-graph-serializer-VLBCR3IX.cjs} +22 -22
  38. package/dist/lib/node/app-graph-serializer-VLBCR3IX.cjs.map +7 -0
  39. package/dist/lib/node/{chunk-EI3ZPOLJ.cjs → chunk-5YHUQJVB.cjs} +7 -8
  40. package/dist/lib/node/chunk-5YHUQJVB.cjs.map +7 -0
  41. package/dist/lib/node/chunk-DQN4ZQDW.cjs +119 -0
  42. package/dist/lib/node/chunk-DQN4ZQDW.cjs.map +7 -0
  43. package/dist/lib/node/chunk-K6ZO4WDJ.cjs +324 -0
  44. package/dist/lib/node/chunk-K6ZO4WDJ.cjs.map +7 -0
  45. package/dist/lib/node/{chunk-GPZPEQXP.cjs → chunk-MXBE2VET.cjs} +351 -550
  46. package/dist/lib/node/chunk-MXBE2VET.cjs.map +7 -0
  47. package/dist/lib/node/{chunk-U63V2254.cjs → chunk-SCATWJKX.cjs} +46 -61
  48. package/dist/lib/node/chunk-SCATWJKX.cjs.map +7 -0
  49. package/dist/lib/node/{identity-created-YYTW4K3Z.cjs → identity-created-NIPYGVG3.cjs} +7 -7
  50. package/dist/lib/node/identity-created-NIPYGVG3.cjs.map +7 -0
  51. package/dist/lib/node/index.cjs +74 -74
  52. package/dist/lib/node/index.cjs.map +3 -3
  53. package/dist/lib/node/{intent-resolver-KA56XGUX.cjs → intent-resolver-MJVRY6YE.cjs} +133 -136
  54. package/dist/lib/node/intent-resolver-MJVRY6YE.cjs.map +7 -0
  55. package/dist/lib/node/meta.json +1 -1
  56. package/dist/lib/node/{react-root-6WGN5WRQ.cjs → react-root-M4BZ6VXB.cjs} +9 -8
  57. package/dist/lib/node/{react-root-6WGN5WRQ.cjs.map → react-root-M4BZ6VXB.cjs.map} +1 -1
  58. package/dist/lib/node/{react-surface-37AVZFPL.cjs → react-surface-RYKSYYKM.cjs} +42 -64
  59. package/dist/lib/node/react-surface-RYKSYYKM.cjs.map +7 -0
  60. package/dist/lib/node/{schema-PPJ5BZ3A.cjs → schema-defs-2HJLXSNK.cjs} +13 -11
  61. package/dist/lib/node/schema-defs-2HJLXSNK.cjs.map +7 -0
  62. package/dist/lib/node/{schema-tools-BLIMOZYY.cjs → schema-tools-OE3MFYYH.cjs} +24 -24
  63. package/dist/lib/node/schema-tools-OE3MFYYH.cjs.map +7 -0
  64. package/dist/lib/node/{settings-HJROTHC4.cjs → settings-AFWO4AWK.cjs} +6 -6
  65. package/dist/lib/node/{spaces-ready-IWDDIAAD.cjs → spaces-ready-BMPXSFHF.cjs} +24 -23
  66. package/dist/lib/node/spaces-ready-BMPXSFHF.cjs.map +7 -0
  67. package/dist/lib/node/{state-JLN7TGRR.cjs → state-L2ZSDKLS.cjs} +5 -5
  68. package/dist/lib/node/state-L2ZSDKLS.cjs.map +7 -0
  69. package/dist/lib/node/types/index.cjs +15 -15
  70. package/dist/lib/node/types/index.cjs.map +1 -1
  71. package/dist/lib/node-esm/app-graph-builder-WVCQZ324.mjs +329 -0
  72. package/dist/lib/node-esm/app-graph-builder-WVCQZ324.mjs.map +7 -0
  73. package/dist/lib/node-esm/{app-graph-serializer-AZXSO7HK.mjs → app-graph-serializer-GEUYYXKD.mjs} +6 -6
  74. package/dist/lib/node-esm/app-graph-serializer-GEUYYXKD.mjs.map +7 -0
  75. package/dist/lib/node-esm/{chunk-DUA32XUX.mjs → chunk-5NIBYPVF.mjs} +3 -4
  76. package/dist/lib/node-esm/chunk-5NIBYPVF.mjs.map +7 -0
  77. package/dist/lib/node-esm/chunk-CLRCW6PU.mjs +297 -0
  78. package/dist/lib/node-esm/chunk-CLRCW6PU.mjs.map +7 -0
  79. package/dist/lib/node-esm/{chunk-ABKX22IP.mjs → chunk-FI3WV22Y.mjs} +327 -535
  80. package/dist/lib/node-esm/chunk-FI3WV22Y.mjs.map +7 -0
  81. package/dist/lib/node-esm/chunk-HNKAG5CX.mjs +90 -0
  82. package/dist/lib/node-esm/chunk-HNKAG5CX.mjs.map +7 -0
  83. package/dist/lib/node-esm/{chunk-TVN6VHTT.mjs → chunk-S2W6HS4A.mjs} +24 -38
  84. package/dist/lib/node-esm/chunk-S2W6HS4A.mjs.map +7 -0
  85. package/dist/lib/node-esm/{identity-created-MP4GLXHO.mjs → identity-created-O5X2FFWU.mjs} +3 -3
  86. package/dist/lib/node-esm/identity-created-O5X2FFWU.mjs.map +7 -0
  87. package/dist/lib/node-esm/index.mjs +24 -23
  88. package/dist/lib/node-esm/index.mjs.map +3 -3
  89. package/dist/lib/node-esm/{intent-resolver-SG2ECM5R.mjs → intent-resolver-JT6EB47M.mjs} +90 -94
  90. package/dist/lib/node-esm/intent-resolver-JT6EB47M.mjs.map +7 -0
  91. package/dist/lib/node-esm/meta.json +1 -1
  92. package/dist/lib/node-esm/{react-root-MSUT6S2S.mjs → react-root-S2LW4FS7.mjs} +5 -4
  93. package/dist/lib/{browser/react-root-DRVM5ACV.mjs.map → node-esm/react-root-S2LW4FS7.mjs.map} +1 -1
  94. package/dist/lib/node-esm/{react-surface-G73SO23W.mjs → react-surface-ZNNMO7QQ.mjs} +6 -30
  95. package/dist/lib/node-esm/react-surface-ZNNMO7QQ.mjs.map +7 -0
  96. package/dist/lib/node-esm/schema-defs-B74N3GQ5.mjs +27 -0
  97. package/dist/lib/node-esm/schema-defs-B74N3GQ5.mjs.map +7 -0
  98. package/dist/lib/node-esm/{schema-tools-IU7EX5A5.mjs → schema-tools-YTJLA3NQ.mjs} +22 -22
  99. package/dist/lib/node-esm/schema-tools-YTJLA3NQ.mjs.map +7 -0
  100. package/dist/lib/node-esm/{settings-KCLKPJVY.mjs → settings-MJVSCOI4.mjs} +2 -2
  101. package/dist/lib/node-esm/{spaces-ready-Z3SXKWX2.mjs → spaces-ready-XKG57SL5.mjs} +16 -15
  102. package/dist/lib/node-esm/spaces-ready-XKG57SL5.mjs.map +7 -0
  103. package/dist/lib/node-esm/{state-YZPY5T5A.mjs → state-QUDYGEU6.mjs} +2 -2
  104. package/dist/lib/node-esm/state-QUDYGEU6.mjs.map +7 -0
  105. package/dist/lib/node-esm/types/index.mjs +1 -1
  106. package/dist/types/src/SpacePlugin.d.ts.map +1 -1
  107. package/dist/types/src/capabilities/app-graph-builder.d.ts +2 -179
  108. package/dist/types/src/capabilities/app-graph-builder.d.ts.map +1 -1
  109. package/dist/types/src/capabilities/app-graph-serializer.d.ts +2 -2
  110. package/dist/types/src/capabilities/app-graph-serializer.d.ts.map +1 -1
  111. package/dist/types/src/capabilities/identity-created.d.ts +2 -2
  112. package/dist/types/src/capabilities/identity-created.d.ts.map +1 -1
  113. package/dist/types/src/capabilities/index.d.ts +9 -184
  114. package/dist/types/src/capabilities/index.d.ts.map +1 -1
  115. package/dist/types/src/capabilities/intent-resolver.d.ts +4 -3
  116. package/dist/types/src/capabilities/intent-resolver.d.ts.map +1 -1
  117. package/dist/types/src/capabilities/react-surface.d.ts.map +1 -1
  118. package/dist/types/src/capabilities/schema-defs.d.ts +4 -0
  119. package/dist/types/src/capabilities/schema-defs.d.ts.map +1 -0
  120. package/dist/types/src/capabilities/schema-tools.d.ts +2 -2
  121. package/dist/types/src/capabilities/schema-tools.d.ts.map +1 -1
  122. package/dist/types/src/capabilities/spaces-ready.d.ts +2 -2
  123. package/dist/types/src/capabilities/spaces-ready.d.ts.map +1 -1
  124. package/dist/types/src/capabilities/state.d.ts +2 -2
  125. package/dist/types/src/capabilities/state.d.ts.map +1 -1
  126. package/dist/types/src/components/AwaitingObject.d.ts.map +1 -1
  127. package/dist/types/src/components/CollectionMain.d.ts.map +1 -1
  128. package/dist/types/src/components/CollectionSection.d.ts.map +1 -1
  129. package/dist/types/src/components/CreateDialog/CreateObjectDialog.d.ts.map +1 -1
  130. package/dist/types/src/components/CreateDialog/CreateObjectPanel.d.ts.map +1 -1
  131. package/dist/types/src/components/CreateDialog/CreateSpaceDialog.d.ts.map +1 -1
  132. package/dist/types/src/components/JoinDialog.d.ts.map +1 -1
  133. package/dist/types/src/components/MembersContainer.d.ts.map +1 -1
  134. package/dist/types/src/components/MembersContainer.stories.d.ts.map +1 -1
  135. package/dist/types/src/components/MenuFooter.d.ts +2 -2
  136. package/dist/types/src/components/MenuFooter.d.ts.map +1 -1
  137. package/dist/types/src/components/ObjectSettings/AdvancedObjectSettings.d.ts +2 -2
  138. package/dist/types/src/components/ObjectSettings/AdvancedObjectSettings.d.ts.map +1 -1
  139. package/dist/types/src/components/ObjectSettings/BaseObjectSettings.d.ts +2 -2
  140. package/dist/types/src/components/ObjectSettings/BaseObjectSettings.d.ts.map +1 -1
  141. package/dist/types/src/components/ObjectSettings/ForeignKeys.d.ts.map +1 -1
  142. package/dist/types/src/components/ObjectSettings/ObjectSettingsContainer.d.ts +2 -2
  143. package/dist/types/src/components/ObjectSettings/ObjectSettingsContainer.d.ts.map +1 -1
  144. package/dist/types/src/components/PersistenceStatus.d.ts.map +1 -1
  145. package/dist/types/src/components/PopoverRenameObject.d.ts.map +1 -1
  146. package/dist/types/src/components/PopoverRenameSpace.d.ts.map +1 -1
  147. package/dist/types/src/components/SchemaContainer.d.ts.map +1 -1
  148. package/dist/types/src/components/SpacePluginSettings.d.ts.map +1 -1
  149. package/dist/types/src/components/SpacePresence.d.ts.map +1 -1
  150. package/dist/types/src/components/SpacePresence.stories.d.ts.map +1 -1
  151. package/dist/types/src/components/SpaceSettings/SpaceSettingsContainer.d.ts.map +1 -1
  152. package/dist/types/src/components/SyncStatus/InlineSyncStatus.d.ts.map +1 -1
  153. package/dist/types/src/components/SyncStatus/SyncStatus.d.ts.map +1 -1
  154. package/dist/types/src/components/SyncStatus/save-tracker.d.ts.map +1 -1
  155. package/dist/types/src/components/SyncStatus/status.d.ts.map +1 -1
  156. package/dist/types/src/components/index.d.ts +0 -2
  157. package/dist/types/src/components/index.d.ts.map +1 -1
  158. package/dist/types/src/hooks/index.d.ts +1 -0
  159. package/dist/types/src/hooks/index.d.ts.map +1 -1
  160. package/dist/types/src/hooks/useActiveSpace.d.ts +4 -0
  161. package/dist/types/src/hooks/useActiveSpace.d.ts.map +1 -0
  162. package/dist/types/src/hooks/useInputSurfaceLookup.d.ts +2 -2
  163. package/dist/types/src/hooks/useInputSurfaceLookup.d.ts.map +1 -1
  164. package/dist/types/src/hooks/usePath.d.ts +3 -2
  165. package/dist/types/src/hooks/usePath.d.ts.map +1 -1
  166. package/dist/types/src/index.d.ts +1 -0
  167. package/dist/types/src/index.d.ts.map +1 -1
  168. package/dist/types/src/translations.d.ts +2 -263
  169. package/dist/types/src/translations.d.ts.map +1 -1
  170. package/dist/types/src/types/collection.d.ts +9 -8
  171. package/dist/types/src/types/collection.d.ts.map +1 -1
  172. package/dist/types/src/types/thread.d.ts +205 -110
  173. package/dist/types/src/types/thread.d.ts.map +1 -1
  174. package/dist/types/src/types/types.d.ts +154 -142
  175. package/dist/types/src/types/types.d.ts.map +1 -1
  176. package/dist/types/src/util.d.ts +10 -16
  177. package/dist/types/src/util.d.ts.map +1 -1
  178. package/dist/types/tsconfig.tsbuildinfo +1 -1
  179. package/package.json +51 -45
  180. package/src/SpacePlugin.tsx +9 -8
  181. package/src/capabilities/app-graph-builder.ts +376 -268
  182. package/src/capabilities/app-graph-serializer.ts +4 -4
  183. package/src/capabilities/identity-created.ts +3 -3
  184. package/src/capabilities/index.ts +2 -2
  185. package/src/capabilities/intent-resolver.ts +85 -95
  186. package/src/capabilities/react-surface.tsx +17 -38
  187. package/src/capabilities/schema-defs.ts +30 -0
  188. package/src/capabilities/schema-tool.test.ts +2 -3
  189. package/src/capabilities/schema-tools.ts +25 -25
  190. package/src/capabilities/spaces-ready.ts +14 -12
  191. package/src/capabilities/state.ts +3 -3
  192. package/src/components/AwaitingObject.tsx +1 -1
  193. package/src/components/CollectionMain.tsx +2 -5
  194. package/src/components/CreateDialog/CreateObjectDialog.stories.tsx +2 -2
  195. package/src/components/CreateDialog/CreateObjectDialog.tsx +1 -1
  196. package/src/components/CreateDialog/CreateSpaceDialog.tsx +2 -3
  197. package/src/components/MembersContainer.stories.tsx +1 -5
  198. package/src/components/MembersContainer.tsx +23 -15
  199. package/src/components/MenuFooter.tsx +2 -2
  200. package/src/components/ObjectSettings/AdvancedObjectSettings.tsx +2 -2
  201. package/src/components/ObjectSettings/BaseObjectSettings.tsx +2 -2
  202. package/src/components/ObjectSettings/ObjectSettingsContainer.tsx +4 -4
  203. package/src/components/PersistenceStatus.tsx +11 -14
  204. package/src/components/PopoverRenameObject.tsx +12 -6
  205. package/src/components/PopoverRenameSpace.tsx +8 -0
  206. package/src/components/SpacePresence.stories.tsx +1 -1
  207. package/src/components/SpacePresence.tsx +34 -43
  208. package/src/components/SpaceSettings/SpaceSettingsContainer.tsx +5 -3
  209. package/src/components/SyncStatus/InlineSyncStatus.tsx +10 -17
  210. package/src/components/index.ts +0 -2
  211. package/src/hooks/index.ts +1 -0
  212. package/src/hooks/useActiveSpace.ts +20 -0
  213. package/src/hooks/useInputSurfaceLookup.tsx +2 -2
  214. package/src/hooks/usePath.ts +9 -6
  215. package/src/index.ts +1 -0
  216. package/src/translations.ts +1 -2
  217. package/src/types/collection.ts +6 -4
  218. package/src/types/thread.ts +14 -8
  219. package/src/types/types.ts +109 -96
  220. package/src/util.tsx +36 -73
  221. package/dist/lib/browser/app-graph-builder-J4PN5HOM.mjs +0 -369
  222. package/dist/lib/browser/app-graph-builder-J4PN5HOM.mjs.map +0 -7
  223. package/dist/lib/browser/app-graph-serializer-6WIAFHYK.mjs.map +0 -7
  224. package/dist/lib/browser/chunk-FSHDAPFY.mjs.map +0 -7
  225. package/dist/lib/browser/chunk-KDNV4YRD.mjs +0 -283
  226. package/dist/lib/browser/chunk-KDNV4YRD.mjs.map +0 -7
  227. package/dist/lib/browser/chunk-MHTZAZT2.mjs.map +0 -7
  228. package/dist/lib/browser/chunk-MIJHUABE.mjs.map +0 -7
  229. package/dist/lib/browser/identity-created-DVHNLGYU.mjs.map +0 -7
  230. package/dist/lib/browser/intent-resolver-72IWBVYE.mjs.map +0 -7
  231. package/dist/lib/browser/react-surface-KODNQYDN.mjs.map +0 -7
  232. package/dist/lib/browser/schema-FHTA26SW.mjs +0 -24
  233. package/dist/lib/browser/schema-FHTA26SW.mjs.map +0 -7
  234. package/dist/lib/browser/schema-tools-YAXPRIXP.mjs.map +0 -7
  235. package/dist/lib/browser/spaces-ready-3URIMLCR.mjs.map +0 -7
  236. package/dist/lib/browser/state-CYV6QCTN.mjs.map +0 -7
  237. package/dist/lib/node/app-graph-builder-3BNPC5GB.cjs +0 -371
  238. package/dist/lib/node/app-graph-builder-3BNPC5GB.cjs.map +0 -7
  239. package/dist/lib/node/app-graph-serializer-GOLCQHFQ.cjs.map +0 -7
  240. package/dist/lib/node/chunk-3UKLWXNJ.cjs +0 -311
  241. package/dist/lib/node/chunk-3UKLWXNJ.cjs.map +0 -7
  242. package/dist/lib/node/chunk-EI3ZPOLJ.cjs.map +0 -7
  243. package/dist/lib/node/chunk-GPZPEQXP.cjs.map +0 -7
  244. package/dist/lib/node/chunk-U63V2254.cjs.map +0 -7
  245. package/dist/lib/node/identity-created-YYTW4K3Z.cjs.map +0 -7
  246. package/dist/lib/node/intent-resolver-KA56XGUX.cjs.map +0 -7
  247. package/dist/lib/node/react-surface-37AVZFPL.cjs.map +0 -7
  248. package/dist/lib/node/schema-PPJ5BZ3A.cjs.map +0 -7
  249. package/dist/lib/node/schema-tools-BLIMOZYY.cjs.map +0 -7
  250. package/dist/lib/node/spaces-ready-IWDDIAAD.cjs.map +0 -7
  251. package/dist/lib/node/state-JLN7TGRR.cjs.map +0 -7
  252. package/dist/lib/node-esm/app-graph-builder-OVMSUAX3.mjs +0 -370
  253. package/dist/lib/node-esm/app-graph-builder-OVMSUAX3.mjs.map +0 -7
  254. package/dist/lib/node-esm/app-graph-serializer-AZXSO7HK.mjs.map +0 -7
  255. package/dist/lib/node-esm/chunk-35OHQARN.mjs +0 -284
  256. package/dist/lib/node-esm/chunk-35OHQARN.mjs.map +0 -7
  257. package/dist/lib/node-esm/chunk-ABKX22IP.mjs.map +0 -7
  258. package/dist/lib/node-esm/chunk-DUA32XUX.mjs.map +0 -7
  259. package/dist/lib/node-esm/chunk-TVN6VHTT.mjs.map +0 -7
  260. package/dist/lib/node-esm/identity-created-MP4GLXHO.mjs.map +0 -7
  261. package/dist/lib/node-esm/intent-resolver-SG2ECM5R.mjs.map +0 -7
  262. package/dist/lib/node-esm/react-surface-G73SO23W.mjs.map +0 -7
  263. package/dist/lib/node-esm/schema-OUZKVYM5.mjs +0 -25
  264. package/dist/lib/node-esm/schema-OUZKVYM5.mjs.map +0 -7
  265. package/dist/lib/node-esm/schema-tools-IU7EX5A5.mjs.map +0 -7
  266. package/dist/lib/node-esm/spaces-ready-Z3SXKWX2.mjs.map +0 -7
  267. package/dist/lib/node-esm/state-YZPY5T5A.mjs.map +0 -7
  268. package/dist/types/src/capabilities/schema.d.ts +0 -4
  269. package/dist/types/src/capabilities/schema.d.ts.map +0 -1
  270. package/dist/types/src/components/PopoverAddSpace.d.ts +0 -4
  271. package/dist/types/src/components/PopoverAddSpace.d.ts.map +0 -1
  272. package/dist/types/src/components/ShareSpaceButton.d.ts +0 -9
  273. package/dist/types/src/components/ShareSpaceButton.d.ts.map +0 -1
  274. package/dist/types/src/components/ShareSpaceButton.stories.d.ts +0 -10
  275. package/dist/types/src/components/ShareSpaceButton.stories.d.ts.map +0 -1
  276. package/src/capabilities/schema.ts +0 -27
  277. package/src/components/PopoverAddSpace.tsx +0 -52
  278. package/src/components/ShareSpaceButton.stories.tsx +0 -27
  279. package/src/components/ShareSpaceButton.tsx +0 -32
  280. /package/dist/lib/{node-esm/react-root-MSUT6S2S.mjs.map → browser/react-root-J3SP2HVW.mjs.map} +0 -0
  281. /package/dist/lib/browser/{settings-2UIV5WX5.mjs.map → settings-G24447B7.mjs.map} +0 -0
  282. /package/dist/lib/node/{settings-HJROTHC4.cjs.map → settings-AFWO4AWK.cjs.map} +0 -0
  283. /package/dist/lib/node-esm/{settings-KCLKPJVY.mjs.map → settings-MJVSCOI4.mjs.map} +0 -0
@@ -0,0 +1,7 @@
1
+ {
2
+ "version": 3,
3
+ "sources": ["../../../src/components/AwaitingObject.tsx", "../../../src/components/CreateDialog/CreateObjectDialog.tsx", "../../../src/components/CreateDialog/CreateObjectPanel.tsx", "../../../src/capabilities/index.ts", "../../../src/components/CreateDialog/CreateSpaceDialog.tsx", "../../../src/components/CollectionMain.tsx", "../../../src/components/CollectionSection.tsx", "../../../src/components/JoinDialog.tsx", "../../../src/components/MembersContainer.tsx", "../../../src/components/MenuFooter.tsx", "../../../src/components/ObjectSettings/ObjectSettingsContainer.tsx", "../../../src/components/ObjectSettings/BaseObjectSettings.tsx", "../../../src/components/PersistenceStatus.tsx", "../../../src/components/PopoverRenameObject.tsx", "../../../src/components/PopoverRenameSpace.tsx", "../../../src/components/SchemaContainer.tsx", "../../../src/components/SpacePresence.tsx", "../../../src/components/SpacePluginSettings.tsx", "../../../src/components/SpaceSettings/SpaceSettingsContainer.tsx", "../../../src/components/SyncStatus/InlineSyncStatus.tsx", "../../../src/components/SyncStatus/SyncStatus.tsx", "../../../src/components/SyncStatus/save-tracker.ts", "../../../src/components/SyncStatus/status.ts"],
4
+ "sourcesContent": ["//\n// Copyright 2023 DXOS.org\n//\n\nimport { CheckCircle, CircleDashed, CircleNotch } from '@phosphor-icons/react';\nimport React, { useCallback, useEffect, useState } from 'react';\n\nimport { createIntent, LayoutAction, useIntentDispatcher, useLayout } from '@dxos/app-framework';\nimport { useClient } from '@dxos/react-client';\nimport { Filter, fullyQualifiedId, useQuery } from '@dxos/react-client/echo';\nimport { Button, Toast, useTranslation } from '@dxos/react-ui';\nimport { getSize, mx } from '@dxos/react-ui-theme';\n\nimport { SPACE_PLUGIN } from '../meta';\nimport { SpaceAction } from '../types';\n\nconst WAIT_FOR_OBJECT_TIMEOUT = 180e3; // 3 minutes\nconst TOAST_TIMEOUT = 240e3; // 4 minutes\n\nexport const AwaitingObject = ({ id }: { id: string }) => {\n const [open, setOpen] = useState(true);\n const [waiting, setWaiting] = useState(true);\n const [found, setFound] = useState(false);\n const { t } = useTranslation(SPACE_PLUGIN);\n const { dispatchPromise: dispatch } = useIntentDispatcher();\n const layout = useLayout();\n\n const client = useClient();\n const objects = useQuery(client.spaces, Filter.everything());\n\n useEffect(() => {\n if (!id) {\n return;\n }\n\n const timeout = setTimeout(() => {\n setWaiting(false);\n }, WAIT_FOR_OBJECT_TIMEOUT);\n\n () => clearTimeout(timeout);\n }, [id]);\n\n useEffect(() => {\n if (objects.findIndex((object) => fullyQualifiedId(object) === id) > -1) {\n setFound(true);\n\n if (layout.active.includes(id)) {\n setOpen(false);\n }\n }\n }, [id, objects, layout]);\n\n const handleClose = useCallback(\n async () => dispatch(createIntent(SpaceAction.WaitForObject, { id: undefined })),\n [dispatch],\n );\n\n const handleNavigate = useCallback(() => {\n void dispatch(createIntent(LayoutAction.Open, { part: 'main', subject: [id] }));\n void handleClose();\n }, [id, handleClose, dispatch]);\n\n return (\n <Toast.Root open={open} duration={TOAST_TIMEOUT} onOpenChange={setOpen}>\n <Toast.Body>\n <Toast.Title classNames='flex items-center gap-2'>\n {found ? (\n <>\n <CheckCircle className={getSize(5)} />\n <span>{t('found object label')}</span>\n </>\n ) : waiting ? (\n <>\n <CircleNotch className={mx(getSize(5), 'animate-spin')} />\n <span>{t('waiting for object label')}</span>\n </>\n ) : (\n <>\n <CircleDashed className={getSize(5)} />\n <span>{t('object not found label')}</span>\n </>\n )}\n </Toast.Title>\n <Toast.Description>\n {t(\n found\n ? 'found object description'\n : waiting\n ? 'waiting for object description'\n : 'object not found description',\n )}\n </Toast.Description>\n </Toast.Body>\n <Toast.Actions>\n {found ? (\n <>\n <Toast.Action altText={t('go to object alt')} asChild>\n <Button variant='primary' onClick={handleNavigate}>\n {t('go to object label')}\n </Button>\n </Toast.Action>\n <Toast.Close asChild>\n <Button onClick={handleClose}>{t('close label', { ns: 'appkit' })}</Button>\n </Toast.Close>\n </>\n ) : (\n <Toast.Close asChild>\n <Button onClick={handleClose}>{t(waiting ? 'close label' : 'confirm label', { ns: 'appkit' })}</Button>\n </Toast.Close>\n )}\n </Toast.Actions>\n </Toast.Root>\n );\n};\n", "//\n// Copyright 2024 DXOS.org\n//\n\nimport { pipe } from 'effect';\nimport React, { useCallback, useRef } from 'react';\n\nimport {\n Capabilities,\n chain,\n createIntent,\n LayoutAction,\n useCapabilities,\n useIntentDispatcher,\n usePluginManager,\n} from '@dxos/app-framework';\nimport { invariant } from '@dxos/invariant';\nimport { useClient } from '@dxos/react-client';\nimport { getSpace, isLiveObject, isSpace, type Live, useSpaces } from '@dxos/react-client/echo';\nimport { Button, Dialog, Icon, useTranslation } from '@dxos/react-ui';\n\nimport { CreateObjectPanel, type CreateObjectPanelProps } from './CreateObjectPanel';\nimport { SpaceCapabilities } from '../../capabilities';\nimport { SPACE_PLUGIN } from '../../meta';\nimport { type ObjectForm, SpaceAction } from '../../types';\n\nexport const CREATE_OBJECT_DIALOG = `${SPACE_PLUGIN}/CreateObjectDialog`;\n\nexport type CreateObjectDialogProps = Pick<CreateObjectPanelProps, 'target' | 'typename' | 'name'> & {\n shouldNavigate?: (object: Live<any>) => boolean;\n};\n\nexport const CreateObjectDialog = ({\n target,\n typename,\n name,\n shouldNavigate: _shouldNavigate,\n}: CreateObjectDialogProps) => {\n const closeRef = useRef<HTMLButtonElement | null>(null);\n const manager = usePluginManager();\n const { t } = useTranslation(SPACE_PLUGIN);\n const client = useClient();\n const spaces = useSpaces();\n const { dispatchPromise: dispatch } = useIntentDispatcher();\n const forms = useCapabilities(SpaceCapabilities.ObjectForm);\n\n const resolve = useCallback(\n (typename: string) =>\n manager.context.getCapabilities(Capabilities.Metadata).find(({ id }) => id === typename)?.metadata ?? {},\n [manager],\n );\n\n const handleCreateObject = useCallback(\n async ({\n form,\n target,\n data = {},\n }: {\n form: ObjectForm;\n target: CreateObjectPanelProps['target'];\n data?: Record<string, any>;\n }) => {\n if (!target) {\n // TODO(wittjosiah): UI feedback.\n return;\n }\n\n // NOTE: Must close before navigating or attention won't follow object.\n closeRef.current?.click();\n\n const space = isSpace(target) ? target : getSpace(target);\n invariant(space, 'Missing space');\n const result = await dispatch(form.getIntent(data, { space }));\n const object = result.data?.object;\n if (isLiveObject(object)) {\n const addObjectIntent = createIntent(SpaceAction.AddObject, { target, object, hidden: form.hidden });\n const shouldNavigate = _shouldNavigate ?? (() => true);\n if (shouldNavigate(object)) {\n await dispatch(pipe(addObjectIntent, chain(LayoutAction.Open, { part: 'main' })));\n } else {\n await dispatch(addObjectIntent);\n }\n }\n },\n [dispatch, resolve],\n );\n\n return (\n // TODO(wittjosiah): The tablist dialog pattern is copied from @dxos/plugin-manager.\n // Consider factoring it out to the tabs package.\n <Dialog.Content classNames='p-0 bs-content max-bs-full md:max-is-[40rem] overflow-hidden'>\n <div role='none' className='flex justify-between pbs-2 pis-2 pie-2 @md:pbs-4 @md:pis-4 @md:pie-4'>\n <Dialog.Title>{t('create object dialog title')}</Dialog.Title>\n <Dialog.Close asChild>\n <Button ref={closeRef} density='fine' variant='ghost' autoFocus>\n <Icon icon='ph--x--regular' size={4} />\n </Button>\n </Dialog.Close>\n </div>\n\n <CreateObjectPanel\n classNames='p-4'\n forms={forms}\n spaces={spaces}\n target={target}\n typename={typename}\n name={name}\n defaultSpaceId={client.spaces.default.id}\n resolve={resolve}\n onCreateObject={handleCreateObject}\n />\n </Dialog.Content>\n );\n};\n", "//\n// Copyright 2024 DXOS.org\n//\n\nimport React, { useCallback, useState } from 'react';\n\nimport { getTypeAnnotation, type TypeAnnotation } from '@dxos/echo-schema';\nimport { invariant } from '@dxos/invariant';\nimport { type SpaceId, type Space } from '@dxos/react-client/echo';\nimport { Icon, type ThemedClassName, toLocalizedString, useTranslation } from '@dxos/react-ui';\nimport { Form } from '@dxos/react-ui-form';\nimport { SearchList } from '@dxos/react-ui-searchlist';\nimport { mx } from '@dxos/react-ui-theme';\nimport { isNonNullable, type MaybePromise } from '@dxos/util';\n\nimport { useInputSurfaceLookup } from '../../hooks';\nimport { SPACE_PLUGIN } from '../../meta';\nimport { type ObjectForm, type CollectionType } from '../../types';\nimport { getSpaceDisplayName } from '../../util';\n\nexport type CreateObjectPanelProps = ThemedClassName<{\n forms: ObjectForm[];\n spaces: Space[];\n typename?: string;\n target?: Space | CollectionType;\n name?: string;\n defaultSpaceId?: SpaceId;\n resolve?: (typename: string) => Record<string, any>;\n onCreateObject?: (params: {\n form: ObjectForm;\n target: Space | CollectionType;\n data?: Record<string, any>;\n }) => MaybePromise<void>;\n}>;\n\nexport const CreateObjectPanel = ({\n classNames,\n forms,\n spaces,\n typename: initialTypename,\n target: initialTarget,\n name: initialName,\n defaultSpaceId,\n resolve,\n onCreateObject,\n}: CreateObjectPanelProps) => {\n const { t } = useTranslation(SPACE_PLUGIN);\n const [typename, setTypename] = useState<string | undefined>(initialTypename);\n const [target, setTarget] = useState<Space | CollectionType | undefined>(initialTarget);\n const form = forms.find((form) => getTypeAnnotation(form.objectSchema)?.typename === typename);\n const options: TypeAnnotation[] = forms\n .map((form) => getTypeAnnotation(form.objectSchema))\n .filter(isNonNullable)\n .sort((a, b) => {\n const nameA = t('typename label', { ns: a.typename, defaultValue: a.typename });\n const nameB = t('typename label', { ns: b.typename, defaultValue: b.typename });\n return nameA.localeCompare(nameB);\n });\n\n const handleCreateObject = useCallback(\n async (props: Record<string, any>) => {\n if (!form || !target) {\n return;\n }\n await onCreateObject?.({ form, target, data: props });\n },\n [onCreateObject, form, target],\n );\n\n const handleSetTypename = useCallback(\n async (typename: string) => {\n invariant(target, 'target is required');\n const form = forms.find((form) => getTypeAnnotation(form.objectSchema)?.typename === typename);\n if (form && !form.formSchema) {\n await onCreateObject?.({ form, target });\n } else {\n setTypename(typename);\n }\n },\n [forms, onCreateObject, target],\n );\n\n const inputSurfaceLookup = useInputSurfaceLookup({ target });\n\n // TODO(wittjosiah): These inputs should be rolled into a `Form` once it supports the necessary variants.\n return (\n <div role='form' className={mx('flex flex-col gap-2', classNames)}>\n {!form ? (\n <SelectSchema options={options} resolve={resolve} onChange={handleSetTypename} />\n ) : !target ? (\n <SelectSpace spaces={spaces} defaultSpaceId={defaultSpaceId} onChange={setTarget} />\n ) : form.formSchema ? (\n <Form\n classNames='!p-0'\n autoFocus\n values={{ name: initialName }}\n schema={form.formSchema}\n testId='create-object-form'\n onSave={handleCreateObject}\n lookupComponent={inputSurfaceLookup}\n />\n ) : undefined}\n </div>\n );\n};\n\nconst SelectSpace = ({\n spaces,\n defaultSpaceId,\n onChange,\n}: { onChange: (space: Space) => void } & Pick<CreateObjectPanelProps, 'spaces' | 'defaultSpaceId'>) => {\n const { t } = useTranslation(SPACE_PLUGIN);\n\n return (\n <SearchList.Root label={t('space input label')} classNames='flex flex-col grow overflow-hidden'>\n <SearchList.Input\n autoFocus\n data-testid='create-object-form.space-input'\n placeholder={t('space input placeholder')}\n classNames='px-1 my-2'\n />\n <SearchList.Content classNames='max-bs-[24rem] overflow-auto'>\n {spaces\n .sort((a, b) => {\n const aName = toLocalizedString(getSpaceDisplayName(a, { personal: a.id === defaultSpaceId }), t);\n const bName = toLocalizedString(getSpaceDisplayName(b, { personal: b.id === defaultSpaceId }), t);\n return aName.localeCompare(bName);\n })\n .map((space) => (\n <SearchList.Item\n key={space.id}\n value={toLocalizedString(getSpaceDisplayName(space, { personal: space.id === defaultSpaceId }), t)}\n onSelect={() => onChange(space)}\n classNames='flex items-center gap-2'\n >\n <span className='grow truncate'>\n {toLocalizedString(getSpaceDisplayName(space, { personal: space.id === defaultSpaceId }), t)}\n </span>\n </SearchList.Item>\n ))}\n </SearchList.Content>\n </SearchList.Root>\n );\n};\n\nconst SelectSchema = ({\n options,\n resolve,\n onChange,\n}: {\n options: TypeAnnotation[];\n onChange: (type: string) => void;\n} & Pick<CreateObjectPanelProps, 'resolve'>) => {\n const { t } = useTranslation(SPACE_PLUGIN);\n\n return (\n <SearchList.Root label={t('schema input label')} classNames='flex flex-col grow overflow-hidden'>\n <SearchList.Input\n autoFocus\n data-testid='create-object-form.schema-input'\n placeholder={t('schema input placeholder')}\n classNames='px-1 my-2'\n />\n <SearchList.Content classNames='max-bs-[24rem] overflow-auto'>\n {options.map((option) => (\n <SearchList.Item\n key={option.typename}\n value={t('typename label', { ns: option.typename, defaultValue: option.typename })}\n onSelect={() => onChange(option.typename)}\n classNames='flex items-center gap-2'\n >\n <span className='flex gap-2 items-center grow truncate'>\n <Icon icon={resolve?.(option.typename).icon ?? 'ph--placeholder--regular'} size={5} />\n {t('typename label', { ns: option.typename, defaultValue: option.typename })}\n </span>\n </SearchList.Item>\n ))}\n </SearchList.Content>\n </SearchList.Root>\n );\n};\n", "//\n// Copyright 2025 DXOS.org\n//\n\nimport { lazy } from '@dxos/app-framework';\n\nexport const AppGraphBuilder = lazy(() => import('./app-graph-builder'));\nexport const AppGraphSerializer = lazy(() => import('./app-graph-serializer'));\nexport const IdentityCreated = lazy(() => import('./identity-created'));\nexport const IntentResolver = lazy(() => import('./intent-resolver'));\nexport const ReactRoot = lazy(() => import('./react-root'));\nexport const ReactSurface = lazy(() => import('./react-surface'));\nexport const SchemaDefs = lazy(() => import('./schema-defs'));\nexport const SchemaTools = lazy(() => import('./schema-tools'));\nexport const SpaceSettings = lazy(() => import('./settings'));\nexport const SpaceState = lazy(() => import('./state'));\nexport const SpacesReady = lazy(() => import('./spaces-ready'));\n\nexport * from './capabilities';\n", "//\n// Copyright 2024 DXOS.org\n//\n\nimport { Effect, type Schema } from 'effect';\nimport React, { useCallback, useRef } from 'react';\n\nimport { createIntent, LayoutAction, useIntentDispatcher } from '@dxos/app-framework';\nimport { Button, Dialog, Icon, useTranslation } from '@dxos/react-ui';\nimport { Form } from '@dxos/react-ui-form';\n\nimport { useInputSurfaceLookup } from '../../hooks';\nimport { SPACE_PLUGIN } from '../../meta';\nimport { SpaceAction, SpaceForm } from '../../types';\n\nexport const CREATE_SPACE_DIALOG = `${SPACE_PLUGIN}/CreateSpaceDialog`;\n\ntype FormValues = Schema.Schema.Type<typeof SpaceForm>;\nconst initialValues: FormValues = { edgeReplication: true };\n\nexport const CreateSpaceDialog = () => {\n const closeRef = useRef<HTMLButtonElement | null>(null);\n const { t } = useTranslation(SPACE_PLUGIN);\n const { dispatch } = useIntentDispatcher();\n\n const inputSurfaceLookup = useInputSurfaceLookup();\n\n const handleCreateSpace = useCallback(\n async (data: FormValues) => {\n const program = Effect.gen(function* () {\n const { space } = yield* dispatch(createIntent(SpaceAction.Create, data));\n yield* dispatch(createIntent(LayoutAction.SwitchWorkspace, { part: 'workspace', subject: space.id }));\n yield* dispatch(createIntent(SpaceAction.OpenCreateObject, { target: space }));\n });\n await Effect.runPromise(program);\n },\n [dispatch],\n );\n\n return (\n // TODO(wittjosiah): The tablist dialog pattern is copied from @dxos/plugin-manager.\n // Consider factoring it out to the tabs package.\n <Dialog.Content classNames='p-0 bs-content min-bs-[16rem] max-bs-full md:max-is-[32rem] overflow-hidden'>\n <div role='none' className='flex justify-between pbs-2 pis-2 pie-2 @md:pbs-4 @md:pis-4 @md:pie-4'>\n <Dialog.Title>{t('create space dialog title')}</Dialog.Title>\n <Dialog.Close asChild>\n <Button ref={closeRef} density='fine' variant='ghost' autoFocus>\n <Icon icon='ph--x--regular' size={4} />\n </Button>\n </Dialog.Close>\n </div>\n <div className='p-4'>\n <Form\n testId='create-space-form'\n classNames='!p-0'\n autoFocus\n values={initialValues}\n schema={SpaceForm}\n lookupComponent={inputSurfaceLookup}\n onSave={handleCreateSpace}\n />\n </div>\n </Dialog.Content>\n );\n};\n", "//\n// Copyright 2023 DXOS.org\n//\n\nimport React from 'react';\n\nimport { useTranslation } from '@dxos/react-ui';\nimport { baseSurface, descriptionMessage, mx } from '@dxos/react-ui-theme';\n\nimport { SPACE_PLUGIN } from '../meta';\nimport type { CollectionType } from '../types';\n\nexport const CollectionMain = ({ collection }: { collection: CollectionType }) => {\n const { t } = useTranslation(SPACE_PLUGIN);\n\n return (\n <div\n role='none'\n className={mx(baseSurface, 'min-bs-screen is-full flex items-center justify-center p-8')}\n data-testid='composer.firstRunMessage'\n >\n <p\n role='alert'\n className={mx(descriptionMessage, 'rounded-lg p-8 font-normal text-lg max-is-[24rem] break-words')}\n >\n {collection.name ?? t('unnamed collection label')}\n </p>\n </div>\n );\n};\n", "//\n// Copyright 2023 DXOS.org\n//\n\nimport React from 'react';\n\nimport { useTranslation } from '@dxos/react-ui';\n\nimport { SPACE_PLUGIN } from '../meta';\nimport type { CollectionType } from '../types';\n\nexport const CollectionSection = ({ collection }: { collection: CollectionType }) => {\n const { t } = useTranslation(SPACE_PLUGIN);\n // TODO(wittjosiah): Better placeholder.\n return (\n <div className='min-bs-[3.5rem] grid grid-rows-subgrid grid-cols-subgrid items-center'>\n <span className='truncate'>{collection.name ?? t('unnamed collection label')}</span>\n </div>\n );\n};\n", "//\n// Copyright 2024 DXOS.org\n//\n\nimport React, { useCallback } from 'react';\n\nimport { createIntent, LayoutAction, useAppGraph, useIntentDispatcher } from '@dxos/app-framework';\nimport { Trigger } from '@dxos/async';\nimport { ObservabilityAction } from '@dxos/plugin-observability/types';\nimport { useClient } from '@dxos/react-client';\nimport { type Space } from '@dxos/react-client/echo';\nimport { type InvitationResult } from '@dxos/react-client/invitations';\nimport { Dialog, useTranslation } from '@dxos/react-ui';\nimport { JoinPanel, type JoinPanelProps } from '@dxos/shell/react';\n\nimport { SPACE_PLUGIN } from '../meta';\n\nexport const JOIN_DIALOG = `${SPACE_PLUGIN}/JoinDialog`;\n\nexport type JoinDialogProps = JoinPanelProps & {\n navigableCollections?: boolean;\n};\n\nexport const JoinDialog = ({ navigableCollections, onDone, ...props }: JoinDialogProps) => {\n const { dispatchPromise: dispatch } = useIntentDispatcher();\n const client = useClient();\n const { graph } = useAppGraph();\n const { t } = useTranslation(SPACE_PLUGIN);\n\n const handleDone = useCallback(\n async (result: InvitationResult | null) => {\n const spaceKey = result?.spaceKey;\n if (!spaceKey) {\n return;\n }\n\n await Promise.all([\n dispatch(\n createIntent(LayoutAction.AddToast, {\n part: 'toast',\n subject: {\n id: `${SPACE_PLUGIN}/join-success`,\n duration: 5_000,\n title: ['join success label', { ns: SPACE_PLUGIN }],\n closeLabel: ['dismiss label', { ns: SPACE_PLUGIN }],\n },\n }),\n ),\n dispatch(\n createIntent(LayoutAction.UpdateDialog, {\n part: 'dialog',\n options: {\n state: false,\n },\n }),\n ),\n ]);\n\n let space = client.spaces.get(spaceKey);\n if (!space) {\n // TODO(wittjosiah): Add api to wait for a space.\n const trigger = new Trigger<Space>();\n client.spaces.subscribe(() => {\n const space = client.spaces.get(spaceKey);\n if (space) {\n trigger.wake(space);\n }\n });\n space = await trigger.wait();\n }\n\n await dispatch(createIntent(LayoutAction.SwitchWorkspace, { part: 'workspace', subject: space.id }));\n\n // TODO(wittjosiah): If navigableCollections is false and there's no target,\n // should try to navigate to the first object of the space replicates.\n // Potentially this could also be done on the inviters side to ensure there's always a target.\n const target = result?.target || (navigableCollections ? space?.id : undefined);\n if (target) {\n // Wait before navigating to the target node.\n // If the target has not yet replicated, this will trigger a loading toast.\n await graph.waitForPath({ target }).catch(() => {});\n await Promise.all([\n dispatch(createIntent(LayoutAction.Open, { part: 'main', subject: [target] })),\n dispatch(createIntent(LayoutAction.Expose, { part: 'navigation', subject: target })),\n ]);\n }\n\n await onDone?.(result);\n\n if (space) {\n await dispatch(\n createIntent(ObservabilityAction.SendEvent, {\n name: 'space.join',\n properties: {\n spaceId: space.id,\n },\n }),\n );\n }\n },\n [dispatch, client, graph],\n );\n\n return (\n <Dialog.Content>\n <Dialog.Title classNames='sr-only'>{t('join space label', { ns: 'os' })}</Dialog.Title>\n <JoinPanel\n {...props}\n exitActionParent={<Dialog.Close asChild />}\n doneActionParent={<Dialog.Close asChild />}\n onDone={handleDone}\n />\n </Dialog.Content>\n );\n};\n", "//\n// Copyright 2025 DXOS.org\n//\n\nimport { Check, X } from '@phosphor-icons/react';\nimport React, { type Dispatch, type SetStateAction, useCallback, useMemo, useState } from 'react';\nimport { QR } from 'react-qr-rounded';\n\nimport { createIntent, useIntentDispatcher } from '@dxos/app-framework';\nimport { log } from '@dxos/log';\nimport { useConfig } from '@dxos/react-client';\nimport { fullyQualifiedId, useSpaceInvitations, type Space } from '@dxos/react-client/echo';\nimport { type CancellableInvitationObservable, Invitation, InvitationEncoder } from '@dxos/react-client/invitations';\nimport { Button, Clipboard, Icon, Input, useId, useTranslation } from '@dxos/react-ui';\nimport { ControlPage, ControlSection, ControlFrame, ControlFrameItem, ControlItemInput } from '@dxos/react-ui-form';\nimport { StackItem } from '@dxos/react-ui-stack';\nimport { getSize, mx } from '@dxos/react-ui-theme';\nimport {\n type ActionMenuItem,\n AuthCode,\n BifurcatedAction,\n Centered,\n Emoji,\n InvitationList,\n SpaceMemberList,\n Viewport,\n} from '@dxos/shell/react';\nimport { hexToEmoji } from '@dxos/util';\n\nimport { SPACE_PLUGIN } from '../meta';\nimport { CollectionType, SpaceAction } from '../types';\nimport { COMPOSER_SPACE_LOCK } from '../util';\n\n// TODO(wittjosiah): Copied from Shell.\nconst activeActionKey = 'dxos:react-shell/space-manager/active-action';\n\nconst handleInvitationEvent = (invitation: Invitation, subscription: ZenObservable.Subscription) => {\n const invitationCode = InvitationEncoder.encode(invitation);\n if (invitation.state === Invitation.State.CONNECTING) {\n log.info(JSON.stringify({ invitationCode, authCode: invitation.authCode }));\n subscription.unsubscribe();\n }\n};\n\nexport const MembersContainer = ({\n space,\n createInvitationUrl,\n}: {\n space: Space;\n createInvitationUrl: (invitationCode: string) => string;\n}) => {\n const { t } = useTranslation(SPACE_PLUGIN);\n const config = useConfig();\n const { dispatchPromise: dispatch } = useIntentDispatcher();\n const invitations = useSpaceInvitations(space.key);\n const visibleInvitations = invitations?.filter(\n (invitation) => ![Invitation.State.CANCELLED].includes(invitation.get().state),\n );\n\n const [activeAction, setInternalActiveAction] = useState(localStorage.getItem(activeActionKey) ?? 'inviteMany');\n\n const setActiveAction = (nextAction: string) => {\n setInternalActiveAction(nextAction);\n localStorage.setItem(activeActionKey, nextAction);\n };\n\n // TODO(wittjosiah): Track which was the most recently viewed object.\n const target = space.properties[CollectionType.typename]?.target?.objects[0]?.target;\n\n const locked = space.properties[COMPOSER_SPACE_LOCK];\n const handleChangeLocked = useCallback(() => {\n space.properties[COMPOSER_SPACE_LOCK] = !locked;\n }, [locked, space]);\n\n const inviteActions = useMemo(\n (): Record<string, ActionMenuItem> => ({\n inviteOne: {\n label: t('invite one label', { ns: 'os' }),\n description: t('invite one description', { ns: 'os' }),\n icon: () => <Icon icon='ph--user-plus--regular' size={5} />,\n testId: 'membersContainer.inviteOne',\n onClick: async () => {\n const { data: invitation } = await dispatch(\n createIntent(SpaceAction.Share, {\n space,\n type: Invitation.Type.INTERACTIVE,\n authMethod: Invitation.AuthMethod.SHARED_SECRET,\n multiUse: false,\n target: target && fullyQualifiedId(target),\n }),\n );\n if (invitation && config.values.runtime?.app?.env?.DX_ENVIRONMENT !== 'production') {\n const subscription: ZenObservable.Subscription = invitation.subscribe((invitation) =>\n handleInvitationEvent(invitation, subscription),\n );\n }\n },\n },\n inviteMany: {\n label: t('invite many label', { ns: 'os' }),\n description: t('invite many description', { ns: 'os' }),\n icon: () => <Icon icon='ph--users-three--regular' size={5} />,\n testId: 'membersContainer.inviteMany',\n onClick: async () => {\n const { data: invitation } = await dispatch(\n createIntent(SpaceAction.Share, {\n space,\n type: Invitation.Type.DELEGATED,\n authMethod: Invitation.AuthMethod.KNOWN_PUBLIC_KEY,\n multiUse: true,\n target: target && fullyQualifiedId(target),\n }),\n );\n if (invitation && config.values.runtime?.app?.env?.DX_ENVIRONMENT !== 'production') {\n const subscription: ZenObservable.Subscription = invitation.subscribe((invitation) =>\n handleInvitationEvent(invitation, subscription),\n );\n }\n },\n },\n }),\n [t, space, target],\n );\n\n const [selectedInvitation, setSelectedInvitation] = useState<CancellableInvitationObservable | null>(null);\n const handleSend = (event: { type: 'selectInvitation'; invitation: CancellableInvitationObservable }) => {\n setSelectedInvitation(event.invitation);\n };\n const handleBack = () => {\n setSelectedInvitation(null);\n };\n\n return (\n <Clipboard.Provider>\n <StackItem.Content classNames='block overflow-y-auto'>\n <ControlPage>\n <ControlSection title={t('members verbose label')} description={t('members description')}>\n <ControlFrame>\n <ControlFrameItem title={t('members label')}>\n <SpaceMemberList spaceKey={space.key} includeSelf />\n </ControlFrameItem>\n {locked && (\n <ControlFrameItem title={t('invitations label')}>\n <p className='text-description mbe-2'>{t('locked space description')}</p>\n </ControlFrameItem>\n )}\n {!locked && (\n <ControlFrameItem title={t('invitations label')}>\n {selectedInvitation && <InvitationSection {...selectedInvitation} onBack={handleBack} />}\n {!selectedInvitation && (\n <>\n <p className='text-description mbe-2'>{t('space invitation description')}</p>\n <InvitationList\n className='mb-2'\n send={handleSend}\n invitations={visibleInvitations ?? []}\n onClickRemove={(invitation) => invitation.cancel()}\n createInvitationUrl={createInvitationUrl}\n />\n <BifurcatedAction\n actions={inviteActions}\n activeAction={activeAction}\n onChangeActiveAction={setActiveAction as Dispatch<SetStateAction<string>>}\n data-testid='membersContainer.createInvitation'\n />\n </>\n )}\n </ControlFrameItem>\n )}\n </ControlFrame>\n {/* TODO(wittjosiah): Make ControlItemInput & ControlFrame compatible. */}\n <div className='justify-center gap-4 p-0 mbs-4 container-max-width grid grid-cols-1 md:grid-cols-[1fr_min-content]'>\n <ControlItemInput title={t('space locked label')} description={t('space locked description')}>\n <Input.Switch checked={locked} onCheckedChange={handleChangeLocked} classNames='justify-self-end' />\n </ControlItemInput>\n </div>\n </ControlSection>\n </ControlPage>\n </StackItem.Content>\n </Clipboard.Provider>\n );\n};\n\n// TODO(wittjosiah): Reconcile the below components with DevicesContainer in @dxos/plugin-client.\n\ntype InvitationComponentProps = Partial<\n Pick<Invitation, 'authCode' | 'invitationId'> & {\n state: Invitation.State;\n url: string;\n onBack: () => void;\n }\n>;\n\nconst InvitationSection = ({\n state = Invitation.State.INIT,\n authCode,\n invitationId = 'never',\n url = 'never',\n onBack,\n}: InvitationComponentProps) => {\n const activeView =\n state < 0\n ? 'init'\n : state >= Invitation.State.CANCELLED\n ? 'complete'\n : state >= Invitation.State.READY_FOR_AUTHENTICATION && authCode\n ? 'auth-code'\n : 'qr-code';\n return (\n <Viewport.Root activeView={activeView}>\n <Viewport.Views>\n <Viewport.View id='init'>\n {/* This view intentionally left blank while conditionally rendering the viewport. */}\n </Viewport.View>\n <Viewport.View id='complete'>\n <InvitationComplete statusValue={state} />\n </Viewport.View>\n <Viewport.View id='auth-code'>\n <InvitationAuthCode id={invitationId} code={authCode ?? 'never'} onCancel={onBack} />\n </Viewport.View>\n <Viewport.View id='qr-code'>\n <InvitationQR id={invitationId} url={url} onCancel={onBack} />\n </Viewport.View>\n </Viewport.Views>\n </Viewport.Root>\n );\n};\n\nconst InvitationQR = ({ id, url, onCancel }: { id: string; url: string; onCancel?: () => void }) => {\n const { t } = useTranslation('os');\n const qrLabel = useId('members-container__qr-code');\n const emoji = hexToEmoji(id);\n return (\n <>\n <p className='text-description'>{t('qr code description', { ns: SPACE_PLUGIN })}</p>\n <div role='group' className='grid grid-cols-[1fr_min-content] mlb-2 gap-2'>\n <div role='none' className='is-full aspect-square relative text-description'>\n <QR\n rounding={100}\n backgroundColor='transparent'\n color='currentColor'\n aria-labelledby={qrLabel}\n errorCorrectionLevel='Q'\n cutout={true}\n >\n {url ?? 'never'}\n </QR>\n <Centered>\n <Emoji text={emoji} />\n </Centered>\n </div>\n <span id={qrLabel} className='sr-only'>\n {t('qr label')}\n </span>\n <Clipboard.Button value={url ?? 'never'} />\n </div>\n <Button variant='ghost' onClick={onCancel}>\n {t('cancel label')}\n </Button>\n </>\n );\n};\n\nconst InvitationAuthCode = ({ id, code, onCancel }: { id: string; code: string; onCancel?: () => void }) => {\n const { t } = useTranslation('os');\n const emoji = hexToEmoji(id);\n\n return (\n <>\n <p className='text-description'>{t('auth other device emoji message')}</p>\n {emoji && <Emoji text={emoji} className='mli-auto mlb-2 text-center' />}\n <p className='text-description'>{t('auth code message')}</p>\n <AuthCode code={code} large classNames='mli-auto mlb-2 text-center grow' />\n <Button variant='ghost' onClick={onCancel}>\n {t('cancel label')}\n </Button>\n </>\n );\n};\n\nconst InvitationComplete = ({ statusValue }: { statusValue: number }) => {\n return statusValue > 0 ? <Check className={mx('m-1.5', getSize(6))} /> : <X className={mx('m-1.5', getSize(6))} />;\n};\n", "//\n// Copyright 2024 DXOS.org\n//\n\nimport { Planet } from '@phosphor-icons/react';\nimport React from 'react';\n\nimport { type AnyLiveObject, getSpace } from '@dxos/client/echo';\nimport { useClient } from '@dxos/react-client';\nimport { DropdownMenu, toLocalizedString, useTranslation } from '@dxos/react-ui';\n\nimport { SPACE_PLUGIN } from '../meta';\nimport { getSpaceDisplayName } from '../util';\n\nexport const MenuFooter = ({ object }: { object: AnyLiveObject<any> }) => {\n const { t } = useTranslation(SPACE_PLUGIN);\n const client = useClient();\n const space = getSpace(object);\n const spaceName = space ? getSpaceDisplayName(space, { personal: client.spaces.default === space }) : '';\n return space ? (\n <>\n <DropdownMenu.Separator />\n <DropdownMenu.GroupLabel>{t('menu footer label')}</DropdownMenu.GroupLabel>\n <dl className='pis-2 mbe-2 text-xs grid grid-cols-[max-content_1fr] gap-2'>\n <dt className='uppercase text-[.75em] tracking-wide font-medium mbs-px self-start'>{t('location label')}</dt>\n <dd className='line-clamp-3'>\n <Planet className='inline-block mie-1' />\n {toLocalizedString(spaceName, t)}\n </dd>\n </dl>\n </>\n ) : null;\n};\n", "//\n// Copyright 2025 DXOS.org\n//\n\nimport React, { useMemo } from 'react';\n\nimport { Surface } from '@dxos/app-framework';\nimport { type AnyLiveObject } from '@dxos/react-client/echo';\nimport { Clipboard } from '@dxos/react-ui';\nimport { StackItem } from '@dxos/react-ui-stack';\n\nimport { BaseObjectSettings } from './BaseObjectSettings';\n\nexport type ObjectSettingsContainerProps = {\n object: AnyLiveObject<any>;\n role: string;\n};\n\nexport const ObjectSettingsContainer = ({ object, role }: ObjectSettingsContainerProps) => {\n const data = useMemo(() => ({ subject: object }), [object]);\n\n return (\n <Clipboard.Provider>\n <StackItem.Content toolbar={false} role={role}>\n <div className='flex flex-col overflow-y-auto divide-y divide-separator'>\n <BaseObjectSettings object={object}>\n <Surface role='base-object-settings' data={data} />\n </BaseObjectSettings>\n <Surface role='object-settings' data={data} />\n {/* TODO(wittjosiah): Remove? */}\n {/* <AdvancedObjectSettings object={object} /> */}\n </div>\n </StackItem.Content>\n </Clipboard.Provider>\n );\n};\n", "//\n// Copyright 2024 DXOS.org\n//\n\nimport React, { type PropsWithChildren, useRef } from 'react';\n\nimport { type AnyLiveObject } from '@dxos/react-client/echo';\nimport { Input, type ThemedClassName, useTranslation } from '@dxos/react-ui';\nimport { mx } from '@dxos/react-ui-theme';\n\nimport { meta } from '../../meta';\n\nexport type BaseObjectSettingsProps = ThemedClassName<\n PropsWithChildren<{\n object: AnyLiveObject<any>;\n }>\n>;\n\nexport const BaseObjectSettings = ({ classNames, children, object }: BaseObjectSettingsProps) => {\n const { t } = useTranslation(meta.id);\n const inputRef = useRef<HTMLInputElement>(null);\n\n // TODO(wittjosiah): This should be a form based on the schema of the object.\n // The form should only include fields with a specific settings annotation.\n // Perhaps also including the field of the title annotation as well.\n return (\n <form className={mx('flex flex-col p-2 gap-2', classNames)}>\n <Input.Root>\n <Input.Label>{t('name label')}</Input.Label>\n <Input.TextInput\n ref={inputRef}\n placeholder={t('name placeholder')}\n value={object.name ?? ''}\n onChange={(event) => {\n object.name = event.target.value;\n }}\n onKeyDown={(event) => {\n if (event.key === 'Enter') {\n inputRef.current?.blur();\n }\n }}\n />\n </Input.Root>\n {children}\n </form>\n );\n};\n", "//\n// Copyright 2024 DXOS.org\n//\n\nimport { ArrowsCounterClockwise, CheckCircle, Warning } from '@phosphor-icons/react';\nimport React, { useEffect, useState } from 'react';\n\nimport { debounce } from '@dxos/async';\nimport { type EchoDatabase } from '@dxos/react-client/echo';\nimport { Tooltip, useTranslation } from '@dxos/react-ui';\nimport { getSize, mx, staticPlaceholderText, warningText } from '@dxos/react-ui-theme';\n\nimport { SPACE_PLUGIN } from '../meta';\n\nenum Status {\n PERSISTED_LOCALLY = 0,\n PENDING = 1,\n ERROR = 2,\n}\n\n// TODO(zan): This now has no usages. Remove it?\nexport const PersistenceStatus = ({ db }: { db: EchoDatabase }) => {\n const { t } = useTranslation(SPACE_PLUGIN);\n const [displayMessage, setDisplayMessage] = useState(false);\n const [status, naturalSetStatus] = useState<Status>(Status.PERSISTED_LOCALLY);\n const [prevStatus, setPrevStatus] = useState<Status>(Status.PERSISTED_LOCALLY);\n const _setStatus = debounce(naturalSetStatus, 500);\n\n // TODO(dmaretskyi): Fix this when we have save status for automerge.\n // useEffect(() => {\n // return db.pendingBatch.on(({ duration, error }) => {\n // if (error) {\n // setStatus(Status.ERROR);\n // } else if (duration === undefined) {\n // setStatus(Status.PENDING);\n // } else {\n // setStatus(Status.PERSISTED_LOCALLY);\n // }\n // });\n // }, [db]);\n\n useEffect(() => {\n // If this is changed outside the effect it's batched with setStatus and the following condition will never be true.\n setPrevStatus(status);\n\n if (prevStatus !== status && status === Status.PERSISTED_LOCALLY) {\n setDisplayMessage(true);\n const timeout = setTimeout(() => setDisplayMessage(false), 5000);\n return () => clearTimeout(timeout);\n }\n }, [status]); // `prevStatus` omitted from dependency array to prevent timeout from being reset.\n\n switch (status) {\n case Status.ERROR:\n return (\n <div className='flex items-center'>\n <Warning className={mx(getSize(4), 'me-1')} />\n <span className={mx('text-sm', warningText)}>{t('persistence error label')}</span>\n </div>\n );\n case Status.PENDING:\n return (\n <div className='flex items-center'>\n <ArrowsCounterClockwise className={mx(getSize(4), 'me-1')} />\n <span className={mx('text-sm', staticPlaceholderText)}>{t('persistence pending label')}</span>\n </div>\n );\n case Status.PERSISTED_LOCALLY:\n default:\n return (\n <Tooltip.Trigger\n delayDuration={400}\n role='status'\n content={t('persisted locally message')}\n className='flex items-center'\n >\n <CheckCircle className={mx(getSize(4), 'me-1')} />\n {displayMessage && (\n <span className={mx('text-sm', staticPlaceholderText)}>{t('persisted locally label')}</span>\n )}\n </Tooltip.Trigger>\n );\n }\n};\n", "//\n// Copyright 2023 DXOS.org\n//\n\nimport React, { useCallback, useRef, useState } from 'react';\n\nimport { createIntent, LayoutAction, useIntentDispatcher } from '@dxos/app-framework';\nimport { type Live } from '@dxos/live-object';\nimport { log } from '@dxos/log';\nimport { Button, Input, useTranslation } from '@dxos/react-ui';\n\nimport { SPACE_PLUGIN } from '../meta';\n\nexport const POPOVER_RENAME_OBJECT = `${SPACE_PLUGIN}/PopoverRenameObject`;\n\nexport const PopoverRenameObject = ({ object: obj }: { object: Live<any> }) => {\n const { t } = useTranslation(SPACE_PLUGIN);\n const doneButton = useRef<HTMLButtonElement>(null);\n // TODO(wittjosiah): Use schema here.\n const object = obj as any;\n // TODO(burdon): Field should not be hardcoded field.\n const [name, setName] = useState(object.name || object.title || '');\n const { dispatchPromise: dispatch } = useIntentDispatcher();\n\n const handleDone = useCallback(() => {\n try {\n object.name = name;\n } catch {\n try {\n object.title = name;\n } catch (err) {\n log.error('Failed to rename object', { err });\n }\n }\n void dispatch(\n createIntent(LayoutAction.UpdatePopover, {\n part: 'popover',\n options: { variant: 'react', anchorId: '', state: false },\n }),\n );\n }, [object, name]);\n\n return (\n <div role='none' className='p-1 flex gap-2'>\n <div role='none' className='flex-1'>\n <Input.Root>\n <Input.Label srOnly>{t('object name label')}</Input.Label>\n <Input.TextInput\n placeholder={t('object placeholder')}\n value={name}\n data-testid='spacePlugin.renameObject.input'\n onChange={({ target: { value } }) => setName(value)}\n onKeyDown={({ key }) => key === 'Enter' && doneButton.current?.click()}\n />\n </Input.Root>\n </div>\n <Button ref={doneButton} classNames='self-stretch' onClick={handleDone}>\n {t('done label', { ns: 'os' })}\n </Button>\n </div>\n );\n};\n", "//\n// Copyright 2023 DXOS.org\n//\n\nimport React, { useCallback, useRef, useState } from 'react';\n\nimport { createIntent, LayoutAction, useIntentDispatcher } from '@dxos/app-framework';\nimport { type Space } from '@dxos/react-client/echo';\nimport { Button, Input, Popover, useTranslation } from '@dxos/react-ui';\n\nimport { SPACE_PLUGIN } from '../meta';\n\nexport const POPOVER_RENAME_SPACE = `${SPACE_PLUGIN}/PopoverRenameSpace`;\n\nexport const PopoverRenameSpace = ({ space }: { space: Space }) => {\n const { t } = useTranslation(SPACE_PLUGIN);\n const doneButton = useRef<HTMLButtonElement>(null);\n const [name, setName] = useState(space.properties.name ?? '');\n const { dispatchPromise: dispatch } = useIntentDispatcher();\n\n const handleDone = useCallback(() => {\n space.properties.name = name;\n void dispatch(\n createIntent(LayoutAction.UpdatePopover, {\n part: 'popover',\n options: { variant: 'react', anchorId: '', state: false },\n }),\n );\n }, [space, name]);\n\n // TODO(thure): Why does the input value need to be uncontrolled to work?\n return (\n <div role='none' className='p-1 flex gap-2'>\n <div role='none' className='flex-1'>\n <Input.Root>\n <Input.Label srOnly>{t('space name label')}</Input.Label>\n <Input.TextInput\n defaultValue={space.properties.name ?? ''}\n placeholder={t('unnamed space label')}\n onChange={({ target: { value } }) => setName(value)}\n // TODO(wittjosiah): Ideally this should access the popover context to close the popover.\n // Currently this is not possible because Radix does not expose the popover context.\n onKeyDown={({ key }) => key === 'Enter' && doneButton.current?.click()}\n />\n </Input.Root>\n </div>\n <Popover.Close asChild>\n <Button ref={doneButton} classNames='self-stretch' onClick={handleDone}>\n {t('done label', { ns: 'os' })}\n </Button>\n </Popover.Close>\n </div>\n );\n};\n", "//\n// Copyright 2025 DXOS.org\n//\n\nimport React, { useState, useEffect } from 'react';\n\nimport { type EchoSchema } from '@dxos/echo-schema';\nimport { type Space } from '@dxos/react-client/echo';\nimport { useTranslation } from '@dxos/react-ui';\nimport { controlItemClasses, ControlPage, ControlSection } from '@dxos/react-ui-form';\nimport { StackItem } from '@dxos/react-ui-stack';\n\nimport { SPACE_PLUGIN } from '../meta';\n\ntype SchemaPanelProps = { space: Space };\n\n// TODO(ZaymonFC):\n// - Support deleting Schema. This should tie in to some sort of\n// 'DangerZone™️' / 'Are you really sure?' / 'this might have consequences' component.\n\n/**\n * Subscribe to and retrieve all schemas from a space's schema registry.\n */\nexport const useQuerySpaceSchemas = (space: Space): EchoSchema[] => {\n const [schemas, setSchemas] = useState<EchoSchema[]>([]);\n\n useEffect(() => {\n const query = space.db.schemaRegistry.query();\n const initialResults = query.runSync();\n setSchemas(initialResults);\n\n const unsubscribe = query.subscribe(() => setSchemas(query.results));\n return () => unsubscribe();\n }, [space]);\n\n return schemas;\n};\n\nexport const SchemaContainer = ({ space }: SchemaPanelProps) => {\n const { t } = useTranslation(SPACE_PLUGIN);\n const schemas = useQuerySpaceSchemas(space);\n\n return (\n <StackItem.Content classNames='block overflow-y-auto'>\n <ControlPage>\n <ControlSection title={t('schema verbose label')} description={t('schema description')}>\n <div role='none' className={controlItemClasses}>\n {schemas.length === 0 && <div className='text-center plb-4'>{t('no schemas found message')}</div>}\n {schemas.map((schema) => (\n <div key={schema.id}>\n <div>{schema.typename}</div>\n </div>\n ))}\n </div>\n </ControlSection>\n </ControlPage>\n </StackItem.Content>\n );\n};\n", "//\n// Copyright 2023 DXOS.org\n//\n\nimport { Option } from 'effect';\nimport React, { forwardRef, useCallback, useEffect, useState } from 'react';\n\nimport { useAppGraph, useCapability } from '@dxos/app-framework';\nimport { generateName } from '@dxos/display-name';\nimport { type Expando } from '@dxos/echo-schema';\nimport { PublicKey, useClient } from '@dxos/react-client';\nimport { getSpace, useMembers, type SpaceMember, fullyQualifiedId } from '@dxos/react-client/echo';\nimport { type Identity, useIdentity } from '@dxos/react-client/halo';\nimport {\n Avatar,\n type AvatarContentProps,\n type Size,\n type ThemedClassName,\n Tooltip,\n Popover,\n useTranslation,\n List,\n ListItem,\n useDefaultValue,\n type DxAvatar,\n} from '@dxos/react-ui';\nimport { AttentionGlyph, useAttended, useAttention, type AttentionGlyphProps } from '@dxos/react-ui-attention';\nimport { ComplexMap, keyToFallback } from '@dxos/util';\n\nimport { SpaceCapabilities } from '../capabilities';\nimport { usePath } from '../hooks';\nimport { SPACE_PLUGIN } from '../meta';\nimport type { ObjectViewerProps } from '../types';\n\n// TODO(thure): Get/derive these values from protocol\nconst REFRESH_INTERVAL = 5000;\nconst ACTIVITY_DURATION = 30_000;\n\n// TODO(thure): This is chiefly meant to satisfy TS & provide an empty map after `deepSignal` interactions.\nconst noViewers = new ComplexMap<PublicKey, ObjectViewerProps>(PublicKey.hash);\n\n// TODO(wittjosiah): Factor out?\nconst getName = (identity: Identity) => identity.profile?.displayName ?? generateName(identity.identityKey.toHex());\n\nexport const SpacePresence = ({ object, spaceKey }: { object: Expando; spaceKey?: PublicKey }) => {\n // TODO(wittjosiah): Doesn't need to be mutable but readonly type messes with ComplexMap.\n const spaceState = useCapability(SpaceCapabilities.MutableState);\n const client = useClient();\n const identity = useIdentity();\n const space = spaceKey ? client.spaces.get(spaceKey) : getSpace(object);\n const spaceMembers = useMembers(space?.key);\n\n const [_moment, setMoment] = useState(Date.now());\n\n // NOTE(thure): This is necessary so Presence updates without any underlying data updating.\n useEffect(() => {\n const interval = setInterval(() => setMoment(Date.now()), REFRESH_INTERVAL);\n return () => clearInterval(interval);\n }, []);\n\n const memberOnline = useCallback((member: SpaceMember) => member.presence === 1, []);\n const memberIsNotSelf = useCallback(\n (member: SpaceMember) => !identity?.identityKey.equals(member.identity.identityKey),\n [identity?.identityKey],\n );\n\n // TODO(thure): Could it be a smell to return early when there are interactions with `deepSignal` later, since it\n // prevents reactivity?\n if (!identity || !spaceState || !space) {\n return null;\n }\n\n const currentObjectViewers = spaceState.viewersByObject[fullyQualifiedId(object)] ?? noViewers;\n\n const membersForObject = spaceMembers\n .filter((member) => memberOnline(member) && memberIsNotSelf(member))\n .filter((member) => currentObjectViewers.has(member.identity.identityKey))\n .map((member) => {\n const objectView = currentObjectViewers.get(member.identity.identityKey);\n const lastSeen = objectView?.lastSeen ?? -Infinity;\n const currentlyAttended = objectView?.currentlyAttended ?? false;\n\n return {\n ...member,\n currentlyAttended,\n lastSeen,\n };\n })\n .toSorted((a, b) => a.lastSeen - b.lastSeen);\n\n return <FullPresence members={membersForObject} />;\n};\n\nexport type Member = SpaceMember & {\n /**\n * Last time a member was seen on this object.\n */\n lastSeen: number;\n currentlyAttended: boolean;\n};\n\nexport type MemberPresenceProps = ThemedClassName<{\n size?: Size;\n members?: Member[];\n showCount?: boolean;\n onMemberClick?: (member: Member) => void;\n}>;\n\nexport const FullPresence = (props: MemberPresenceProps) => {\n const { size = 9, onMemberClick } = props;\n const members = useDefaultValue(props.members, () => []);\n\n if (members.length === 0) {\n return null;\n }\n\n return (\n <div className='dx-avatar-group' data-testid='spacePlugin.presence'>\n {members.slice(0, 3).map((member, i) => (\n <Tooltip.Trigger\n key={member.identity.identityKey.toHex()}\n side='bottom'\n content={getName(member.identity)}\n className='grid focus:outline-none'\n >\n <PresenceAvatar\n identity={member.identity}\n match={member.currentlyAttended} // TODO(Zan): Match always true now we're showing 'members viewing current object'.\n index={members.length - i}\n onClick={() => onMemberClick?.(member)}\n size={size}\n />\n </Tooltip.Trigger>\n ))}\n\n {members.length > 3 && (\n <Popover.Root>\n <Popover.Trigger className='grid focus:outline-none'>\n <Avatar.Root>\n {/* TODO(wittjosiah): Make text fit. */}\n <Avatar.Content\n status='inactive'\n style={{ zIndex: members.length - 4 }}\n fallback={`+${members.length - 3}`}\n size={size}\n />\n </Avatar.Root>\n </Popover.Trigger>\n <Popover.Portal>\n <Popover.Content side='bottom'>\n <Popover.Arrow />\n <List classNames='max-h-56 overflow-y-auto'>\n {members.map((member) => (\n <ListItem.Root\n key={member.identity.identityKey.toHex()}\n classNames='flex gap-2 items-center cursor-pointer mbe-2'\n onClick={() => onMemberClick?.(member)}\n data-testid='identity-list-item'\n >\n {/* TODO(Zan): Match always true now we're showing 'members viewing current object'. */}\n <PresenceAvatar identity={member.identity} size={size} showName match={member.currentlyAttended} />\n </ListItem.Root>\n ))}\n </List>\n </Popover.Content>\n </Popover.Portal>\n </Popover.Root>\n )}\n </div>\n );\n};\n\ntype PresenceAvatarProps = Pick<AvatarContentProps, 'size'> & {\n identity: Identity;\n showName?: boolean;\n match?: boolean;\n index?: number;\n onClick?: () => void;\n};\n\nconst PresenceAvatar = forwardRef<DxAvatar, PresenceAvatarProps>(\n ({ identity, showName, match, index, onClick, size }, forwardedRef) => {\n const status = match ? 'current' : 'active';\n const fallbackValue = keyToFallback(identity.identityKey);\n return (\n <Avatar.Root>\n <Avatar.Content\n status={status}\n hue={identity.profile?.data?.hue || fallbackValue.hue}\n data-testid='spacePlugin.presence.member'\n data-status={status}\n size={size}\n {...(index ? { style: { zIndex: index } } : {})}\n onClick={onClick}\n fallback={identity.profile?.data?.emoji || fallbackValue.emoji}\n ref={forwardedRef}\n />\n <Avatar.Label classNames={showName ? 'text-sm truncate pli-2' : 'sr-only'}>{getName(identity)}</Avatar.Label>\n </Avatar.Root>\n );\n },\n);\n\nexport type SmallPresenceLiveProps = {\n id?: string;\n open?: boolean;\n viewers?: ComplexMap<PublicKey, ObjectViewerProps>;\n};\n\nexport const SmallPresenceLive = ({ id, open, viewers }: SmallPresenceLiveProps) => {\n const { hasAttention, isAncestor, isRelated } = useAttention(id);\n const isAttended = hasAttention || isAncestor || isRelated;\n\n // TODO(wittjosiah): If the attended node is deep in the graph and the graph is not fully loaded\n // this will result in an empty path until the graph is connected.\n // TODO(wittjosiah): Consider using this indicator for all open nodes instead of just attended.\n const { graph } = useAppGraph();\n const attended = useAttended();\n const startOfAttention = attended.at(-1);\n const path = usePath(graph, startOfAttention);\n const containsAttended = !open && !isAttended && id && Option.isSome(path) ? path.value.includes(id) : false;\n\n const getActiveViewers = (viewers: ComplexMap<PublicKey, ObjectViewerProps>): ObjectViewerProps[] => {\n const moment = Date.now();\n return Array.from<ObjectViewerProps>(viewers.values()).filter(\n (viewer) => moment - viewer.lastSeen < ACTIVITY_DURATION,\n );\n };\n\n const [activeViewers, setActiveViewers] = useState(viewers ? getActiveViewers(viewers) : []);\n\n useEffect(() => {\n if (viewers) {\n setActiveViewers(getActiveViewers(viewers));\n const interval = setInterval(() => {\n setActiveViewers(getActiveViewers(viewers));\n }, REFRESH_INTERVAL);\n return () => clearInterval(interval);\n }\n }, [viewers]);\n\n return <SmallPresence count={activeViewers.length} attended={isAttended} containsAttended={containsAttended} />;\n};\n\nexport type SmallPresenceProps = {\n count?: number;\n} & Pick<AttentionGlyphProps, 'attended' | 'containsAttended'>;\n\nexport const SmallPresence = ({ count = 0, attended, containsAttended }: SmallPresenceProps) => {\n const { t } = useTranslation(SPACE_PLUGIN);\n\n return (\n <Tooltip.Trigger asChild content={t('presence label', { count })} side='bottom'>\n <AttentionGlyph\n attended={attended}\n containsAttended={containsAttended}\n presence={count > 1 ? 'many' : count === 1 ? 'one' : 'none'}\n classNames='self-center mie-1'\n />\n </Tooltip.Trigger>\n );\n};\n", "//\n// Copyright 2023 DXOS.org\n//\n\nimport React from 'react';\n\nimport { createIntent, useIntentDispatcher } from '@dxos/app-framework';\nimport { useClient } from '@dxos/react-client';\nimport { useSpaces } from '@dxos/react-client/echo';\nimport { Input, toLocalizedString, useTranslation, List, ListItem, Button } from '@dxos/react-ui';\nimport { DeprecatedFormContainer, DeprecatedFormInput } from '@dxos/react-ui-form';\n\nimport { SPACE_PLUGIN } from '../meta';\nimport { SpaceAction, type SpaceSettingsProps } from '../types';\nimport { getSpaceDisplayName } from '../util';\n\nexport const SpacePluginSettings = ({ settings }: { settings: SpaceSettingsProps }) => {\n const { t } = useTranslation(SPACE_PLUGIN);\n const { dispatchPromise: dispatch } = useIntentDispatcher();\n const client = useClient();\n const spaces = useSpaces({ all: settings.showHidden });\n\n // TODO(wittjosiah): Migrate to new form container.\n return (\n <DeprecatedFormContainer>\n <DeprecatedFormInput label={t('show hidden spaces label')}>\n <Input.Switch checked={settings.showHidden} onCheckedChange={(checked) => (settings.showHidden = !!checked)} />\n </DeprecatedFormInput>\n <div role='none'>\n <h2 className='text-xl my-4'>Space Settings</h2>\n <List classNames='max-w-md mx-auto'>\n {spaces.map((space) => (\n <ListItem.Root key={space.id}>\n <ListItem.Heading classNames='flex flex-col grow truncate mbe-2'>\n {toLocalizedString(getSpaceDisplayName(space, { personal: space === client.spaces.default }), t)}\n </ListItem.Heading>\n <ListItem.Endcap>\n <Button onClick={() => dispatch(createIntent(SpaceAction.OpenSettings, { space }))}>\n {t('open space settings label')}\n </Button>\n </ListItem.Endcap>\n </ListItem.Root>\n ))}\n </List>\n </div>\n </DeprecatedFormContainer>\n );\n};\n", "//\n// Copyright 2024 DXOS.org\n//\n\nimport { pipe, Schema } from 'effect';\nimport React, { type ChangeEvent, useCallback, useMemo, useState } from 'react';\n\nimport { chain, createIntent, LayoutAction, useIntentDispatcher } from '@dxos/app-framework';\nimport { log } from '@dxos/log';\nimport { EdgeReplicationSetting } from '@dxos/protocols/proto/dxos/echo/metadata';\nimport { useClient } from '@dxos/react-client';\nimport { SpaceState, type Space } from '@dxos/react-client/echo';\nimport { Button, Input, useMulticastObservable, useTranslation } from '@dxos/react-ui';\nimport {\n Form,\n type InputComponent,\n ControlItem,\n ControlItemInput,\n ControlSection,\n ControlPage,\n} from '@dxos/react-ui-form';\nimport { HuePicker, IconPicker } from '@dxos/react-ui-pickers';\nimport { StackItem } from '@dxos/react-ui-stack';\n\nimport { SPACE_PLUGIN } from '../../meta';\nimport { SpaceAction, SpaceForm } from '../../types';\n\nconst FormSchema = SpaceForm.pipe(\n Schema.extend(Schema.Struct({ archived: Schema.Boolean.annotations({ title: 'Archive space' }) })),\n);\n\nexport type SpaceSettingsContainerProps = {\n space: Space;\n};\n\n// TODO(wittjosiah): Handle space migrations here?\nexport const SpaceSettingsContainer = ({ space }: SpaceSettingsContainerProps) => {\n const { t } = useTranslation(SPACE_PLUGIN);\n const { dispatchPromise: dispatch } = useIntentDispatcher();\n const client = useClient();\n const archived = useMulticastObservable(space.state) === SpaceState.SPACE_INACTIVE;\n const [edgeReplication, setEdgeReplication] = useState(\n space.internal.data.edgeReplication === EdgeReplicationSetting.ENABLED,\n );\n const toggleEdgeReplication = useCallback(\n async (next: boolean) => {\n setEdgeReplication(next);\n await space?.internal\n .setEdgeReplicationPreference(next ? EdgeReplicationSetting.ENABLED : EdgeReplicationSetting.DISABLED)\n .catch((err: unknown) => {\n log.catch(err);\n setEdgeReplication(!next);\n });\n },\n [space],\n );\n\n const handleSave = useCallback(\n (properties: Schema.Schema.Type<typeof FormSchema>) => {\n void toggleEdgeReplication(properties.edgeReplication);\n if (properties.name !== space.properties.name) {\n space.properties.name = properties.name;\n }\n if (properties.icon !== space.properties.icon) {\n space.properties.icon = properties.icon;\n }\n if (properties.hue !== space.properties.hue) {\n space.properties.hue = properties.hue;\n }\n if (properties.archived && !archived) {\n void dispatch(\n pipe(\n createIntent(SpaceAction.Close, { space }),\n chain(LayoutAction.SwitchWorkspace, { part: 'workspace', subject: client.spaces.default.id }),\n ),\n );\n } else if (!properties.archived && archived) {\n void dispatch(createIntent(SpaceAction.Open, { space }));\n }\n },\n [space, toggleEdgeReplication, archived],\n );\n\n const values = useMemo(\n () => ({\n name: space.properties.name,\n icon: space.properties.icon,\n hue: space.properties.hue,\n edgeReplication,\n archived,\n }),\n [space.properties.name, space.properties.icon, space.properties.hue, edgeReplication, archived],\n );\n\n const customElements: Partial<Record<string, InputComponent>> = useMemo(\n () => ({\n name: ({ type, label, getValue, onValueChange }) => {\n const handleChange = useCallback(\n ({ target: { value } }: ChangeEvent<HTMLInputElement>) => onValueChange(type, value),\n [onValueChange, type],\n );\n return (\n <ControlItemInput title={label} description={t('display name description')}>\n <Input.TextInput\n value={getValue()}\n onChange={handleChange}\n placeholder={t('display name input placeholder')}\n classNames='min-is-64'\n />\n </ControlItemInput>\n );\n },\n icon: ({ type, label, getValue, onValueChange }) => {\n const handleChange = useCallback((nextEmoji: string) => onValueChange(type, nextEmoji), [onValueChange, type]);\n const handleEmojiReset = useCallback(() => onValueChange(type, undefined), [onValueChange, type]);\n return (\n <ControlItem title={label} description={t('icon description')}>\n <IconPicker\n value={getValue()}\n onChange={handleChange}\n onReset={handleEmojiReset}\n classNames='justify-self-end'\n iconSize={5}\n />\n </ControlItem>\n );\n },\n hue: ({ type, label, getValue, onValueChange }) => {\n const handleChange = useCallback((nextHue: string) => onValueChange(type, nextHue), [onValueChange, type]);\n const handleHueReset = useCallback(() => onValueChange(type, undefined), [onValueChange, type]);\n return (\n <ControlItem title={label} description={t('hue description')}>\n <HuePicker\n value={getValue()}\n onChange={handleChange}\n onReset={handleHueReset}\n classNames='[--hue-preview-size:1.25rem] justify-self-end'\n />\n </ControlItem>\n );\n },\n edgeReplication: ({ type, label, getValue, onValueChange }) => {\n const handleChange = useCallback((checked: boolean) => onValueChange(type, checked), [onValueChange, type]);\n return (\n <ControlItemInput title={label} description={t('edge replication description')}>\n <Input.Switch checked={getValue()} onCheckedChange={handleChange} classNames='justify-self-end' />\n </ControlItemInput>\n );\n },\n archived: ({ type, label, getValue, onValueChange }) => {\n const handleChange = useCallback(() => onValueChange(type, !getValue()), [onValueChange, type, getValue]);\n return (\n <ControlItemInput title={label} description={t('archive space description')}>\n <Button disabled={space === client.spaces.default} onClick={handleChange}>\n {getValue() ? t('unarchive space label') : t('archive space label')}\n </Button>\n </ControlItemInput>\n );\n },\n }),\n [t, space],\n );\n\n return (\n <StackItem.Content classNames='block overflow-y-auto pli-2'>\n <ControlPage>\n <ControlSection\n title={t('space properties settings verbose label', { ns: SPACE_PLUGIN })}\n description={t('space properties settings description', { ns: SPACE_PLUGIN })}\n >\n <Form\n schema={FormSchema}\n values={values}\n autoSave\n onSave={handleSave}\n Custom={customElements}\n classNames='p-0 container-max-width [&_[role=\"form\"]]:grid [&_[role=\"form\"]]:grid-cols-1 md:[&_[role=\"form\"]]:grid-cols-[1fr_min-content] [&_[role=\"form\"]]:gap-4'\n />\n </ControlSection>\n </ControlPage>\n </StackItem.Content>\n );\n};\n", "//\n// Copyright 2024 DXOS.org\n//\n\nimport { Option } from 'effect';\nimport React, { useEffect, useState } from 'react';\n\nimport { useAppGraph } from '@dxos/app-framework';\nimport { EdgeStatus } from '@dxos/protocols/proto/dxos/client/services';\nimport { EdgeReplicationSetting } from '@dxos/protocols/proto/dxos/echo/metadata';\nimport { useClient } from '@dxos/react-client';\nimport { type Space, useSpaceSyncState } from '@dxos/react-client/echo';\nimport { Tooltip, useTranslation } from '@dxos/react-ui';\nimport { AttentionGlyph, useAttended, useAttention } from '@dxos/react-ui-attention';\n\nimport { usePath } from '../../hooks';\nimport { SPACE_PLUGIN } from '../../meta';\n\nconst useEdgeStatus = (): EdgeStatus => {\n const [status, setStatus] = useState(EdgeStatus.NOT_CONNECTED);\n const client = useClient();\n useEffect(() => {\n client.services.services.EdgeAgentService?.queryEdgeStatus().subscribe(({ status }) => {\n setStatus(status);\n });\n }, [client]);\n\n return status;\n};\n\nexport const InlineSyncStatus = ({ space, open }: { space: Space; open?: boolean }) => {\n const { t } = useTranslation(SPACE_PLUGIN);\n const id = space.id;\n const { hasAttention, isAncestor, isRelated } = useAttention(id);\n const isAttended = hasAttention || isAncestor || isRelated;\n\n // TODO(wittjosiah): If the attended node is deep in the graph and the graph is not fully loaded\n // this will result in an empty path until the graph is connected.\n // TODO(wittjosiah): Consider using this indicator for all open nodes instead of just attended.\n const { graph } = useAppGraph();\n const attended = useAttended();\n const startOfAttention = attended.at(-1);\n const path = usePath(graph, startOfAttention);\n const containsAttended = !open && !isAttended && id && Option.isSome(path) ? path.value.includes(id) : false;\n\n const connectedToEdge = useEdgeStatus() === EdgeStatus.CONNECTED;\n // TODO(wittjosiah): This is not reactive.\n const edgeSyncEnabled = space.internal.data.edgeReplication === EdgeReplicationSetting.ENABLED;\n const syncState = useSpaceSyncState(space);\n const syncing = connectedToEdge && edgeSyncEnabled && syncState && syncState.missingOnLocal > 0;\n\n return (\n <Tooltip.Trigger asChild content={t('syncing label')} side='bottom'>\n <AttentionGlyph\n syncing={syncing}\n attended={isAttended}\n containsAttended={containsAttended}\n classNames='self-center mie-1'\n />\n </Tooltip.Trigger>\n );\n};\n", "//\n// Copyright 2024 DXOS.org\n//\n\nimport React, { useEffect, useState } from 'react';\n\nimport { StatusBar } from '@dxos/plugin-status-bar';\nimport { useClient } from '@dxos/react-client';\nimport { getSyncSummary, type SpaceSyncStateMap, useSyncState } from '@dxos/react-client/echo';\nimport { Icon, useTranslation } from '@dxos/react-ui';\n\nimport { createClientSaveTracker } from './save-tracker';\nimport { getIcon, getStatus } from './status';\nimport { SPACE_PLUGIN } from '../../meta';\n\nconst SYNC_STALLED_TIMEOUT = 5_000;\n\nexport const SyncStatus = () => {\n const client = useClient();\n const state = useSyncState();\n const [saved, setSaved] = useState(true);\n\n useEffect(() => {\n return createClientSaveTracker(client, (state) => {\n setSaved(state === 'saved');\n });\n }, []);\n\n return <SyncStatusIndicator state={state} saved={saved} />;\n};\n\nexport const SyncStatusIndicator = ({ state, saved }: { state: SpaceSyncStateMap; saved: Boolean }) => {\n const { t } = useTranslation(SPACE_PLUGIN);\n const summary = getSyncSummary(state);\n const offline = Object.values(state).length === 0;\n const needsToUpload = summary.differentDocuments > 0 || summary.missingOnRemote > 0;\n const needsToDownload = summary.differentDocuments > 0 || summary.missingOnLocal > 0;\n const status = getStatus({ offline, saved, needsToUpload, needsToDownload });\n\n const [classNames, setClassNames] = useState<string>();\n useEffect(() => {\n setClassNames(undefined);\n if (offline || (!needsToUpload && !needsToDownload)) {\n return;\n }\n\n const t = setTimeout(() => {\n // TODO(wittjosiah): Use semantic color tokens.\n setClassNames('text-orange-500');\n }, SYNC_STALLED_TIMEOUT);\n return () => clearTimeout(t);\n }, [offline, needsToUpload, needsToDownload]);\n\n const title = t(`${status} label`);\n const icon = <Icon icon={getIcon(status)} size={4} classNames={classNames} />;\n\n return <StatusBar.Item title={title}>{icon}</StatusBar.Item>;\n};\n", "//\n// Copyright 2024 DXOS.org\n//\n\nimport { type CleanupFn } from '@dxos/async';\nimport { type Client } from '@dxos/client';\nimport { type Space, type SpaceId } from '@dxos/client/echo';\nimport { Context } from '@dxos/context';\n\nexport const createClientSaveTracker = (client: Client, cb: (state: 'saved' | 'saving') => void) => {\n const CleanupFns: Record<SpaceId, CleanupFn> = {};\n const state: Record<SpaceId, 'saved' | 'saving'> = {};\n\n const install = (spaces: Space[]) => {\n for (const space of spaces) {\n if (state[space.id]) {\n continue;\n }\n\n state[space.id] = 'saved';\n CleanupFns[space.id] = createSpaceSaveTracker(space, (s) => {\n state[space.id] = s;\n cb(Object.values(state).some((s) => s === 'saving') ? 'saving' : 'saved');\n });\n }\n };\n client.spaces.subscribe((spaces) => {\n install(spaces);\n });\n install(client.spaces.get());\n\n return () => {\n for (const unsubscribe of Object.values(CleanupFns)) {\n unsubscribe();\n }\n };\n};\n\nconst createSpaceSaveTracker = (space: Space, cb: (state: 'saved' | 'saving') => void): CleanupFn => {\n const ctx = new Context();\n\n void space.waitUntilReady().then(() => {\n if (ctx.disposed) {\n return;\n }\n\n let hasUnsavedChanges = false;\n let lastFlushPromise: Promise<void> | undefined;\n space.crud.saveStateChanged.on(ctx, ({ unsavedDocuments }) => {\n hasUnsavedChanges = unsavedDocuments.length > 0;\n });\n space.crud.saveStateChanged.debounce(500).on(ctx, () => {\n if (hasUnsavedChanges) {\n lastFlushPromise = undefined;\n cb('saving');\n } else {\n const flushPromise = space.crud.flush();\n lastFlushPromise = flushPromise;\n void flushPromise.then(() => {\n if (lastFlushPromise === flushPromise) {\n cb('saved');\n }\n });\n }\n });\n });\n\n return () => {\n void ctx.dispose();\n };\n};\n", "//\n// Copyright 2024 DXOS.org\n//\n\nexport type Status = 'saving locally' | 'downloading' | 'uploading' | 'offline persisted' | 'remote synced';\n\nexport const getStatus = ({\n offline,\n saved,\n needsToUpload,\n needsToDownload,\n}: {\n offline: Boolean;\n saved: Boolean;\n needsToUpload: Boolean;\n needsToDownload: Boolean;\n}): Status => {\n if (!saved) {\n return 'saving locally';\n } else if (!offline && needsToDownload) {\n return 'downloading';\n } else if (!offline && needsToUpload) {\n return 'uploading';\n } else if (offline && !needsToUpload && !needsToDownload) {\n return 'offline persisted';\n } else {\n return 'remote synced';\n }\n};\n\nexport const getIcon = (status: Status) => {\n switch (status) {\n case 'saving locally':\n return 'ph--download--regular';\n case 'downloading':\n return 'ph--cloud-arrow-down--regular';\n case 'uploading':\n return 'ph--cloud-arrow-up--regular';\n case 'offline persisted':\n return 'ph--check-circle--regular';\n case 'remote synced':\n return 'ph--cloud-check--regular';\n }\n};\n"],
5
+ "mappings": "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",
6
+ "names": ["import_react", "import_app_framework", "import_react_client", "import_echo", "import_react_ui", "import_invariant", "import_react_ui_theme", "import_effect", "import_react_ui_form", "import_util", "import_react_ui_stack", "import_async", "import_log", "import_metadata", "import_react_ui_attention", "WAIT_FOR_OBJECT_TIMEOUT", "TOAST_TIMEOUT", "AwaitingObject", "id", "open", "setOpen", "useState", "waiting", "setWaiting", "found", "setFound", "t", "useTranslation", "SPACE_PLUGIN", "dispatchPromise", "dispatch", "useIntentDispatcher", "layout", "useLayout", "client", "useClient", "objects", "useQuery", "spaces", "Filter", "everything", "useEffect", "timeout", "setTimeout", "clearTimeout", "findIndex", "object", "fullyQualifiedId", "active", "includes", "handleClose", "useCallback", "createIntent", "SpaceAction", "WaitForObject", "undefined", "handleNavigate", "LayoutAction", "Open", "part", "subject", "React", "Toast", "Root", "duration", "onOpenChange", "Body", "Title", "classNames", "CheckCircle", "className", "getSize", "span", "CircleNotch", "mx", "CircleDashed", "Description", "Actions", "Action", "altText", "asChild", "Button", "variant", "onClick", "Close", "ns", "CreateObjectPanel", "forms", "typename", "initialTypename", "target", "initialTarget", "name", "initialName", "defaultSpaceId", "resolve", "onCreateObject", "setTypename", "setTarget", "form", "find", "getTypeAnnotation", "objectSchema", "options", "map", "filter", "isNonNullable", "sort", "a", "b", "nameA", "defaultValue", "nameB", "localeCompare", "handleCreateObject", "props", "data", "handleSetTypename", "invariant", "formSchema", "inputSurfaceLookup", "useInputSurfaceLookup", "div", "role", "SelectSchema", "onChange", "SelectSpace", "Form", "autoFocus", "values", "schema", "testId", "onSave", "lookupComponent", "SearchList", "label", "Input", "data-testid", "placeholder", "Content", "aName", "toLocalizedString", "getSpaceDisplayName", "personal", "bName", "space", "Item", "key", "value", "onSelect", "option", "Icon", "icon", "size", "AppGraphBuilder", "lazy", "AppGraphSerializer", "IdentityCreated", "IntentResolver", "ReactRoot", "ReactSurface", "SchemaDefs", "SchemaTools", "SpaceSettings", "SpaceState", "SpacesReady", "CREATE_OBJECT_DIALOG", "CreateObjectDialog", "shouldNavigate", "_shouldNavigate", "closeRef", "useRef", "manager", "usePluginManager", "useSpaces", "useCapabilities", "SpaceCapabilities", "ObjectForm", "context", "getCapabilities", "Capabilities", "Metadata", "metadata", "current", "click", "isSpace", "getSpace", "result", "getIntent", "isLiveObject", "addObjectIntent", "AddObject", "hidden", "pipe", "chain", "Dialog", "ref", "density", "default", "CREATE_SPACE_DIALOG", "initialValues", "edgeReplication", "CreateSpaceDialog", "handleCreateSpace", "program", "Effect", "gen", "Create", "SwitchWorkspace", "OpenCreateObject", "runPromise", "SpaceForm", "CollectionMain", "collection", "baseSurface", "p", "descriptionMessage", "CollectionSection", "JOIN_DIALOG", "JoinDialog", "navigableCollections", "onDone", "graph", "useAppGraph", "handleDone", "spaceKey", "Promise", "all", "AddToast", "title", "closeLabel", "UpdateDialog", "state", "get", "trigger", "Trigger", "subscribe", "wake", "wait", "waitForPath", "catch", "Expose", "ObservabilityAction", "SendEvent", "properties", "spaceId", "JoinPanel", "exitActionParent", "doneActionParent", "activeActionKey", "handleInvitationEvent", "invitation", "subscription", "invitationCode", "InvitationEncoder", "encode", "Invitation", "State", "CONNECTING", "log", "info", "JSON", "stringify", "authCode", "unsubscribe", "MembersContainer", "createInvitationUrl", "config", "useConfig", "invitations", "useSpaceInvitations", "visibleInvitations", "CANCELLED", "activeAction", "setInternalActiveAction", "localStorage", "getItem", "setActiveAction", "nextAction", "setItem", "CollectionType", "locked", "COMPOSER_SPACE_LOCK", "handleChangeLocked", "inviteActions", "useMemo", "inviteOne", "description", "Share", "type", "Type", "INTERACTIVE", "authMethod", "AuthMethod", "SHARED_SECRET", "multiUse", "runtime", "app", "env", "DX_ENVIRONMENT", "inviteMany", "DELEGATED", "KNOWN_PUBLIC_KEY", "selectedInvitation", "setSelectedInvitation", "handleSend", "event", "handleBack", "Clipboard", "Provider", "StackItem", "ControlPage", "ControlSection", "ControlFrame", "ControlFrameItem", "SpaceMemberList", "includeSelf", "InvitationSection", "onBack", "InvitationList", "send", "onClickRemove", "cancel", "BifurcatedAction", "actions", "onChangeActiveAction", "ControlItemInput", "Switch", "checked", "onCheckedChange", "INIT", "invitationId", "url", "activeView", "READY_FOR_AUTHENTICATION", "Viewport", "Views", "View", "InvitationComplete", "statusValue", "InvitationAuthCode", "code", "onCancel", "InvitationQR", "qrLabel", "useId", "emoji", "hexToEmoji", "QR", "rounding", "backgroundColor", "color", "aria-labelledby", "errorCorrectionLevel", "cutout", "Centered", "Emoji", "text", "AuthCode", "large", "Check", "X", "MenuFooter", "spaceName", "DropdownMenu", "Separator", "GroupLabel", "dl", "dt", "dd", "Planet", "BaseObjectSettings", "children", "meta", "inputRef", "Label", "TextInput", "onKeyDown", "blur", "ObjectSettingsContainer", "toolbar", "Surface", "Status", "PersistenceStatus", "db", "displayMessage", "setDisplayMessage", "status", "naturalSetStatus", "prevStatus", "setPrevStatus", "_setStatus", "debounce", "Warning", "warningText", "ArrowsCounterClockwise", "staticPlaceholderText", "Tooltip", "delayDuration", "content", "POPOVER_RENAME_OBJECT", "PopoverRenameObject", "obj", "doneButton", "setName", "err", "error", "UpdatePopover", "anchorId", "srOnly", "POPOVER_RENAME_SPACE", "PopoverRenameSpace", "Popover", "useQuerySpaceSchemas", "schemas", "setSchemas", "query", "schemaRegistry", "initialResults", "runSync", "results", "SchemaContainer", "controlItemClasses", "length", "REFRESH_INTERVAL", "ACTIVITY_DURATION", "noViewers", "ComplexMap", "PublicKey", "hash", "getName", "identity", "profile", "displayName", "generateName", "identityKey", "toHex", "SpacePresence", "spaceState", "useCapability", "MutableState", "useIdentity", "spaceMembers", "useMembers", "_moment", "setMoment", "Date", "now", "interval", "setInterval", "clearInterval", "memberOnline", "member", "presence", "memberIsNotSelf", "equals", "currentObjectViewers", "viewersByObject", "membersForObject", "has", "objectView", "lastSeen", "currentlyAttended", "toSorted", "FullPresence", "members", "onMemberClick", "useDefaultValue", "slice", "i", "side", "PresenceAvatar", "match", "index", "Avatar", "style", "zIndex", "fallback", "Portal", "Arrow", "List", "ListItem", "showName", "forwardRef", "forwardedRef", "fallbackValue", "keyToFallback", "hue", "data-status", "SmallPresenceLive", "viewers", "hasAttention", "isAncestor", "isRelated", "useAttention", "isAttended", "attended", "useAttended", "startOfAttention", "at", "path", "usePath", "containsAttended", "Option", "isSome", "getActiveViewers", "moment", "Array", "from", "viewer", "activeViewers", "setActiveViewers", "SmallPresence", "count", "AttentionGlyph", "SpacePluginSettings", "settings", "showHidden", "DeprecatedFormContainer", "DeprecatedFormInput", "h2", "Heading", "Endcap", "OpenSettings", "FormSchema", "Schema", "extend", "Struct", "archived", "Boolean", "annotations", "SpaceSettingsContainer", "useMulticastObservable", "SPACE_INACTIVE", "setEdgeReplication", "internal", "EdgeReplicationSetting", "ENABLED", "toggleEdgeReplication", "next", "setEdgeReplicationPreference", "DISABLED", "handleSave", "customElements", "getValue", "onValueChange", "handleChange", "nextEmoji", "handleEmojiReset", "ControlItem", "IconPicker", "onReset", "iconSize", "nextHue", "handleHueReset", "HuePicker", "disabled", "autoSave", "Custom", "useEdgeStatus", "setStatus", "EdgeStatus", "NOT_CONNECTED", "services", "EdgeAgentService", "queryEdgeStatus", "InlineSyncStatus", "connectedToEdge", "CONNECTED", "edgeSyncEnabled", "syncState", "useSpaceSyncState", "syncing", "missingOnLocal", "createClientSaveTracker", "cb", "CleanupFns", "install", "createSpaceSaveTracker", "s", "Object", "some", "ctx", "Context", "waitUntilReady", "then", "disposed", "hasUnsavedChanges", "lastFlushPromise", "crud", "saveStateChanged", "on", "unsavedDocuments", "flushPromise", "flush", "dispose", "getStatus", "offline", "saved", "needsToUpload", "needsToDownload", "getIcon", "SYNC_STALLED_TIMEOUT", "SyncStatus", "useSyncState", "setSaved", "SyncStatusIndicator", "summary", "getSyncSummary", "differentDocuments", "missingOnRemote", "setClassNames", "StatusBar"]
7
+ }
@@ -16,8 +16,8 @@ var __copyProps = (to, from, except, desc) => {
16
16
  return to;
17
17
  };
18
18
  var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
19
- var chunk_U63V2254_exports = {};
20
- __export(chunk_U63V2254_exports, {
19
+ var chunk_SCATWJKX_exports = {};
20
+ __export(chunk_SCATWJKX_exports, {
21
21
  COMPOSER_SPACE_LOCK: () => COMPOSER_SPACE_LOCK,
22
22
  SHARED: () => SHARED,
23
23
  SPACES: () => SPACES,
@@ -26,14 +26,14 @@ __export(chunk_U63V2254_exports, {
26
26
  constructSpaceActions: () => constructSpaceActions,
27
27
  constructSpaceNode: () => constructSpaceNode,
28
28
  createObjectNode: () => createObjectNode,
29
- getActiveSpace: () => getActiveSpace,
30
29
  getNestedObjects: () => getNestedObjects,
31
30
  getSpaceDisplayName: () => getSpaceDisplayName,
32
- memoizeQuery: () => memoizeQuery
31
+ rxFromQuery: () => rxFromQuery
33
32
  });
34
- module.exports = __toCommonJS(chunk_U63V2254_exports);
35
- var import_chunk_3UKLWXNJ = require("./chunk-3UKLWXNJ.cjs");
33
+ module.exports = __toCommonJS(chunk_SCATWJKX_exports);
34
+ var import_chunk_K6ZO4WDJ = require("./chunk-K6ZO4WDJ.cjs");
36
35
  var import_chunk_6P2DB4QQ = require("./chunk-6P2DB4QQ.cjs");
36
+ var import_rx_react = require("@effect-rx/rx-react");
37
37
  var import_app_framework = require("@dxos/app-framework");
38
38
  var import_echo_schema = require("@dxos/echo-schema");
39
39
  var import_echo_schema2 = require("@dxos/echo-schema");
@@ -47,16 +47,14 @@ var __dxlog_file = "/home/runner/work/dxos/dxos/packages/plugins/plugin-space/sr
47
47
  var SPACES = `${import_chunk_6P2DB4QQ.SPACE_PLUGIN}-spaces`;
48
48
  var COMPOSER_SPACE_LOCK = "dxos.org/plugin/space/lock";
49
49
  var SHARED = "shared-spaces";
50
- var EMPTY_ARRAY = [];
51
- var memoizeQuery = (spaceOrEcho, filter, options) => {
52
- const key = JSON.stringify({
53
- space: (0, import_echo.isSpace)(spaceOrEcho) ? spaceOrEcho.id : void 0,
54
- filter: import_echo.Filter.from(filter).toProto()
50
+ var rxFromQuery = (query) => {
51
+ return import_rx_react.Rx.make((get) => {
52
+ const unsubscribe = query.subscribe((result) => {
53
+ get.setSelf(result.objects);
54
+ });
55
+ get.addFinalizer(() => unsubscribe());
56
+ return query.objects;
55
57
  });
56
- const query = (0, import_plugin_graph.memoize)(() => (0, import_echo.isSpace)(spaceOrEcho) ? spaceOrEcho.db.query(filter, options) : spaceOrEcho?.query(filter, options), key);
57
- const unsubscribe = (0, import_plugin_graph.memoize)(() => query?.subscribe(), key);
58
- (0, import_plugin_graph.cleanup)(() => unsubscribe?.());
59
- return query?.objects ?? EMPTY_ARRAY;
60
58
  };
61
59
  var getSpaceDisplayName = (space, { personal, namesCache = {} } = {}) => {
62
60
  return space.state.get() === import_echo.SpaceState.SPACE_READY && (space.properties.name?.length ?? 0) > 0 ? space.properties.name : namesCache[space.id] ? namesCache[space.id] : personal ? [
@@ -114,8 +112,8 @@ var checkPendingMigration = (space) => {
114
112
  };
115
113
  var constructSpaceNode = ({ space, navigable = false, personal, namesCache, resolve }) => {
116
114
  const hasPendingMigration = checkPendingMigration(space);
117
- const collection = space.state.get() === import_echo.SpaceState.SPACE_READY && space.properties[import_chunk_3UKLWXNJ.CollectionType.typename]?.target;
118
- const partials = space.state.get() === import_echo.SpaceState.SPACE_READY && collection instanceof import_chunk_3UKLWXNJ.CollectionType ? getCollectionGraphNodePartials({
115
+ const collection = space.state.get() === import_echo.SpaceState.SPACE_READY && space.properties[import_chunk_K6ZO4WDJ.CollectionType.typename]?.target;
116
+ const partials = space.state.get() === import_echo.SpaceState.SPACE_READY && collection instanceof import_chunk_K6ZO4WDJ.CollectionType ? getCollectionGraphNodePartials({
119
117
  collection,
120
118
  space,
121
119
  resolve,
@@ -123,7 +121,7 @@ var constructSpaceNode = ({ space, navigable = false, personal, namesCache, reso
123
121
  }) : {};
124
122
  return {
125
123
  id: space.id,
126
- type: import_chunk_3UKLWXNJ.SPACE_TYPE,
124
+ type: import_chunk_K6ZO4WDJ.SPACE_TYPE,
127
125
  cacheable: [
128
126
  "label",
129
127
  "icon",
@@ -214,10 +212,10 @@ var constructSpaceActions = ({ space, dispatch, personal, migrating }) => {
214
212
  const actions = [];
215
213
  if (hasPendingMigration) {
216
214
  actions.push({
217
- id: getId(import_chunk_3UKLWXNJ.SpaceAction.Migrate._tag),
215
+ id: getId(import_chunk_K6ZO4WDJ.SpaceAction.Migrate._tag),
218
216
  type: import_plugin_graph.ACTION_GROUP_TYPE,
219
217
  data: async () => {
220
- await dispatch((0, import_app_framework.createIntent)(import_chunk_3UKLWXNJ.SpaceAction.Migrate, {
218
+ await dispatch((0, import_app_framework.createIntent)(import_chunk_K6ZO4WDJ.SpaceAction.Migrate, {
221
219
  space
222
220
  }));
223
221
  },
@@ -236,10 +234,10 @@ var constructSpaceActions = ({ space, dispatch, personal, migrating }) => {
236
234
  }
237
235
  if (state === import_echo.SpaceState.SPACE_READY && !hasPendingMigration) {
238
236
  actions.push({
239
- id: getId(import_chunk_3UKLWXNJ.SpaceAction.OpenCreateObject._tag),
237
+ id: getId(import_chunk_K6ZO4WDJ.SpaceAction.OpenCreateObject._tag),
240
238
  type: import_plugin_graph.ACTION_TYPE,
241
239
  data: async () => {
242
- await dispatch((0, import_app_framework.createIntent)(import_chunk_3UKLWXNJ.SpaceAction.OpenCreateObject, {
240
+ await dispatch((0, import_app_framework.createIntent)(import_chunk_K6ZO4WDJ.SpaceAction.OpenCreateObject, {
243
241
  target: space
244
242
  }));
245
243
  },
@@ -255,12 +253,12 @@ var constructSpaceActions = ({ space, dispatch, personal, migrating }) => {
255
253
  testId: "spacePlugin.createObject"
256
254
  }
257
255
  }, {
258
- id: getId(import_chunk_3UKLWXNJ.SpaceAction.Rename._tag),
256
+ id: getId(import_chunk_K6ZO4WDJ.SpaceAction.Rename._tag),
259
257
  type: import_plugin_graph.ACTION_TYPE,
260
258
  data: async (params) => {
261
- await dispatch((0, import_app_framework.createIntent)(import_chunk_3UKLWXNJ.SpaceAction.Rename, {
259
+ await dispatch((0, import_app_framework.createIntent)(import_chunk_K6ZO4WDJ.SpaceAction.Rename, {
262
260
  space,
263
- caller: params.caller
261
+ caller: params?.caller
264
262
  }));
265
263
  },
266
264
  properties: {
@@ -289,7 +287,7 @@ var createObjectNode = ({ object, space, navigable = false, resolve }) => {
289
287
  if (Object.keys(metadata).length === 0) {
290
288
  return void 0;
291
289
  }
292
- const partials = object instanceof import_chunk_3UKLWXNJ.CollectionType ? getCollectionGraphNodePartials({
290
+ const partials = object instanceof import_chunk_K6ZO4WDJ.CollectionType ? getCollectionGraphNodePartials({
293
291
  collection: object,
294
292
  space,
295
293
  resolve,
@@ -320,12 +318,11 @@ var createObjectNode = ({ object, space, navigable = false, resolve }) => {
320
318
  }
321
319
  };
322
320
  };
323
- var constructObjectActions = ({ node, dispatch, navigable = false }) => {
324
- const object = node.data;
321
+ var constructObjectActions = ({ object, graph, dispatch, navigable = false }) => {
325
322
  const space = (0, import_echo.getSpace)(object);
326
323
  (0, import_invariant.invariant)(space, "Space not found", {
327
324
  F: __dxlog_file,
328
- L: 384,
325
+ L: 362,
329
326
  S: void 0,
330
327
  A: [
331
328
  "space",
@@ -334,12 +331,12 @@ var constructObjectActions = ({ node, dispatch, navigable = false }) => {
334
331
  });
335
332
  const getId = (id) => `${id}/${(0, import_echo.fullyQualifiedId)(object)}`;
336
333
  const actions = [
337
- ...object instanceof import_chunk_3UKLWXNJ.CollectionType ? [
334
+ ...object instanceof import_chunk_K6ZO4WDJ.CollectionType ? [
338
335
  {
339
- id: getId(import_chunk_3UKLWXNJ.SpaceAction.OpenCreateObject._tag),
336
+ id: getId(import_chunk_K6ZO4WDJ.SpaceAction.OpenCreateObject._tag),
340
337
  type: import_plugin_graph.ACTION_TYPE,
341
338
  data: async () => {
342
- await dispatch((0, import_app_framework.createIntent)(import_chunk_3UKLWXNJ.SpaceAction.OpenCreateObject, {
339
+ await dispatch((0, import_app_framework.createIntent)(import_chunk_K6ZO4WDJ.SpaceAction.OpenCreateObject, {
343
340
  target: object
344
341
  }));
345
342
  },
@@ -357,36 +354,35 @@ var constructObjectActions = ({ node, dispatch, navigable = false }) => {
357
354
  }
358
355
  ] : [],
359
356
  {
360
- id: getId(import_chunk_3UKLWXNJ.SpaceAction.RenameObject._tag),
357
+ id: getId(import_chunk_K6ZO4WDJ.SpaceAction.RenameObject._tag),
361
358
  type: import_plugin_graph.ACTION_TYPE,
362
359
  data: async (params) => {
363
- await dispatch((0, import_app_framework.createIntent)(import_chunk_3UKLWXNJ.SpaceAction.RenameObject, {
360
+ await dispatch((0, import_app_framework.createIntent)(import_chunk_K6ZO4WDJ.SpaceAction.RenameObject, {
364
361
  object,
365
- caller: params.caller
362
+ caller: params?.caller
366
363
  }));
367
364
  },
368
365
  properties: {
369
366
  label: [
370
- object instanceof import_chunk_3UKLWXNJ.CollectionType ? "rename collection label" : "rename object label",
367
+ object instanceof import_chunk_K6ZO4WDJ.CollectionType ? "rename collection label" : "rename object label",
371
368
  {
372
369
  ns: import_chunk_6P2DB4QQ.SPACE_PLUGIN
373
370
  }
374
371
  ],
375
372
  icon: "ph--pencil-simple-line--regular",
376
- // TODO(wittjosiah): Doesn't work.
377
- // keyBinding: 'shift+F6',
373
+ // TODO(wittjosiah): Need's focus.
374
+ keyBinding: {
375
+ macos: "shift+F6"
376
+ },
378
377
  testId: "spacePlugin.renameObject"
379
378
  }
380
379
  },
381
380
  {
382
- id: getId(import_chunk_3UKLWXNJ.SpaceAction.RemoveObjects._tag),
381
+ id: getId(import_chunk_K6ZO4WDJ.SpaceAction.RemoveObjects._tag),
383
382
  type: import_plugin_graph.ACTION_TYPE,
384
383
  data: async () => {
385
- const graph = (0, import_plugin_graph.getGraph)(node);
386
- const collection = graph.nodes(node, {
387
- relation: "inbound"
388
- }).find(({ data }) => data instanceof import_chunk_3UKLWXNJ.CollectionType)?.data;
389
- await dispatch((0, import_app_framework.createIntent)(import_chunk_3UKLWXNJ.SpaceAction.RemoveObjects, {
384
+ const collection = graph.getConnections((0, import_echo.fullyQualifiedId)(object), "inbound").find(({ data }) => data instanceof import_chunk_K6ZO4WDJ.CollectionType)?.data;
385
+ await dispatch((0, import_app_framework.createIntent)(import_chunk_K6ZO4WDJ.SpaceAction.RemoveObjects, {
390
386
  objects: [
391
387
  object
392
388
  ],
@@ -395,17 +391,17 @@ var constructObjectActions = ({ node, dispatch, navigable = false }) => {
395
391
  },
396
392
  properties: {
397
393
  label: [
398
- object instanceof import_chunk_3UKLWXNJ.CollectionType ? "delete collection label" : "delete object label",
394
+ object instanceof import_chunk_K6ZO4WDJ.CollectionType ? "delete collection label" : "delete object label",
399
395
  {
400
396
  ns: import_chunk_6P2DB4QQ.SPACE_PLUGIN
401
397
  }
402
398
  ],
403
399
  icon: "ph--trash--regular",
404
- keyBinding: object instanceof import_chunk_3UKLWXNJ.CollectionType ? void 0 : "shift+meta+Backspace",
400
+ keyBinding: object instanceof import_chunk_K6ZO4WDJ.CollectionType ? void 0 : "shift+meta+Backspace",
405
401
  testId: "spacePlugin.deleteObject"
406
402
  }
407
403
  },
408
- ...navigable || !(object instanceof import_chunk_3UKLWXNJ.CollectionType) ? [
404
+ ...navigable || !(object instanceof import_chunk_K6ZO4WDJ.CollectionType) ? [
409
405
  {
410
406
  id: getId("copy-link"),
411
407
  type: import_plugin_graph.ACTION_TYPE,
@@ -449,16 +445,6 @@ var constructObjectActions = ({ node, dispatch, navigable = false }) => {
449
445
  ];
450
446
  return actions;
451
447
  };
452
- var getActiveSpace = (graph, active) => {
453
- if (!active) {
454
- return;
455
- }
456
- const node = graph.findNode(active);
457
- if (!node || !(0, import_live_object.isLiveObject)(node.data)) {
458
- return;
459
- }
460
- return (0, import_echo.getSpace)(node.data);
461
- };
462
448
  var getNestedObjects = async (object, resolve) => {
463
449
  const type = (0, import_echo_schema.getTypename)(object);
464
450
  if (!type) {
@@ -483,7 +469,7 @@ var cloneObject = async (object, resolve, newSpace) => {
483
469
  const serializer = metadata.serializer;
484
470
  (0, import_invariant.invariant)(serializer, `No serializer for type: ${typename}`, {
485
471
  F: __dxlog_file,
486
- L: 528,
472
+ L: 491,
487
473
  S: void 0,
488
474
  A: [
489
475
  "serializer",
@@ -509,9 +495,8 @@ var cloneObject = async (object, resolve, newSpace) => {
509
495
  constructSpaceActions,
510
496
  constructSpaceNode,
511
497
  createObjectNode,
512
- getActiveSpace,
513
498
  getNestedObjects,
514
499
  getSpaceDisplayName,
515
- memoizeQuery
500
+ rxFromQuery
516
501
  });
517
- //# sourceMappingURL=chunk-U63V2254.cjs.map
502
+ //# sourceMappingURL=chunk-SCATWJKX.cjs.map