@dxos/plugin-space 0.8.4-main.67995b8 → 0.8.4-main.72ec0f3

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 (363) hide show
  1. package/dist/lib/browser/{CollectionMain-D2B75XBS.mjs → CollectionArticle-WTHWY4YS.mjs} +10 -10
  2. package/dist/lib/browser/CollectionArticle-WTHWY4YS.mjs.map +7 -0
  3. package/dist/lib/browser/ObjectDetailsPanel-2BRUBHP6.mjs +141 -0
  4. package/dist/lib/browser/ObjectDetailsPanel-2BRUBHP6.mjs.map +7 -0
  5. package/dist/lib/browser/ObjectSettings-5LLWCVEK.mjs +144 -0
  6. package/dist/lib/browser/ObjectSettings-5LLWCVEK.mjs.map +7 -0
  7. package/dist/lib/browser/RecordArticle-SXDRWTTU.mjs +116 -0
  8. package/dist/lib/browser/RecordArticle-SXDRWTTU.mjs.map +7 -0
  9. package/dist/lib/browser/{app-graph-builder-V3MP3CDK.mjs → app-graph-builder-VQAB3GCQ.mjs} +138 -90
  10. package/dist/lib/browser/app-graph-builder-VQAB3GCQ.mjs.map +7 -0
  11. package/dist/lib/browser/{app-graph-serializer-H6AW7KGS.mjs → app-graph-serializer-KSLKMEPP.mjs} +19 -19
  12. package/dist/lib/browser/app-graph-serializer-KSLKMEPP.mjs.map +7 -0
  13. package/dist/lib/browser/{chunk-XUYKJUU7.mjs → chunk-ERQMHU7L.mjs} +124 -63
  14. package/dist/lib/browser/chunk-ERQMHU7L.mjs.map +7 -0
  15. package/dist/lib/browser/{chunk-FBJEXW54.mjs → chunk-J2BUK5E6.mjs} +587 -513
  16. package/dist/lib/browser/chunk-J2BUK5E6.mjs.map +7 -0
  17. package/dist/lib/browser/chunk-K5J7ZB5P.mjs +20 -0
  18. package/dist/lib/browser/chunk-K5J7ZB5P.mjs.map +7 -0
  19. package/dist/lib/browser/{chunk-SGTQ52SU.mjs → chunk-M2Z6D4ZI.mjs} +32 -21
  20. package/dist/lib/browser/chunk-M2Z6D4ZI.mjs.map +7 -0
  21. package/dist/lib/browser/{chunk-QACNNDOT.mjs → chunk-OLBBSOVI.mjs} +30 -17
  22. package/dist/lib/browser/chunk-OLBBSOVI.mjs.map +7 -0
  23. package/dist/lib/browser/chunk-PU5IOFMG.mjs +167 -0
  24. package/dist/lib/browser/chunk-PU5IOFMG.mjs.map +7 -0
  25. package/dist/lib/browser/chunk-VZBIIYFM.mjs +16 -0
  26. package/dist/lib/browser/chunk-VZBIIYFM.mjs.map +7 -0
  27. package/dist/lib/browser/chunk-WJXU4GKV.mjs +19 -0
  28. package/dist/lib/browser/chunk-WJXU4GKV.mjs.map +7 -0
  29. package/dist/lib/browser/{identity-created-23XJJV2N.mjs → identity-created-NAXTPQXE.mjs} +6 -6
  30. package/dist/lib/browser/identity-created-NAXTPQXE.mjs.map +7 -0
  31. package/dist/lib/browser/index.mjs +91 -91
  32. package/dist/lib/browser/index.mjs.map +3 -3
  33. package/dist/lib/browser/{intent-resolver-XHGD73WZ.mjs → intent-resolver-Q2XWHAVA.mjs} +87 -85
  34. package/dist/lib/browser/intent-resolver-Q2XWHAVA.mjs.map +7 -0
  35. package/dist/lib/browser/meta.json +1 -1
  36. package/dist/lib/browser/react-root-MM4HADPE.mjs +30 -0
  37. package/dist/lib/browser/react-root-MM4HADPE.mjs.map +7 -0
  38. package/dist/lib/browser/{react-surface-YWZZQF7H.mjs → react-surface-SGZC3Y4U.mjs} +81 -105
  39. package/dist/lib/browser/react-surface-SGZC3Y4U.mjs.map +7 -0
  40. package/dist/lib/browser/{schema-defs-Z6FC4AHC.mjs → schema-defs-QPI2JU3X.mjs} +6 -6
  41. package/dist/lib/browser/schema-defs-QPI2JU3X.mjs.map +7 -0
  42. package/dist/lib/browser/{settings-4IMP5RYT.mjs → settings-WKLGKUHQ.mjs} +5 -5
  43. package/dist/lib/browser/{settings-4IMP5RYT.mjs.map → settings-WKLGKUHQ.mjs.map} +1 -1
  44. package/dist/lib/browser/{spaces-ready-TOPG6IV4.mjs → spaces-ready-C5QC2UFL.mjs} +21 -18
  45. package/dist/lib/browser/spaces-ready-C5QC2UFL.mjs.map +7 -0
  46. package/dist/lib/browser/{state-QYZAB45H.mjs → state-Q7YRE5KG.mjs} +7 -7
  47. package/dist/lib/browser/state-Q7YRE5KG.mjs.map +7 -0
  48. package/dist/lib/browser/types/index.mjs +2 -2
  49. package/dist/lib/node-esm/{CollectionMain-ZJIFCWKZ.mjs → CollectionArticle-KHXYT3SH.mjs} +10 -10
  50. package/dist/lib/node-esm/CollectionArticle-KHXYT3SH.mjs.map +7 -0
  51. package/dist/lib/node-esm/ObjectDetailsPanel-6PZQIQG3.mjs +142 -0
  52. package/dist/lib/node-esm/ObjectDetailsPanel-6PZQIQG3.mjs.map +7 -0
  53. package/dist/lib/node-esm/ObjectSettings-OQSBOH7K.mjs +145 -0
  54. package/dist/lib/node-esm/ObjectSettings-OQSBOH7K.mjs.map +7 -0
  55. package/dist/lib/node-esm/RecordArticle-NACBH42P.mjs +117 -0
  56. package/dist/lib/node-esm/RecordArticle-NACBH42P.mjs.map +7 -0
  57. package/dist/lib/node-esm/{app-graph-builder-SG4VECBB.mjs → app-graph-builder-24JCLJPX.mjs} +138 -90
  58. package/dist/lib/node-esm/app-graph-builder-24JCLJPX.mjs.map +7 -0
  59. package/dist/lib/node-esm/{app-graph-serializer-2ICUGQQT.mjs → app-graph-serializer-R723K764.mjs} +19 -19
  60. package/dist/lib/node-esm/app-graph-serializer-R723K764.mjs.map +7 -0
  61. package/dist/lib/node-esm/{chunk-JH6F4C3I.mjs → chunk-2PN7QNGV.mjs} +32 -21
  62. package/dist/lib/node-esm/chunk-2PN7QNGV.mjs.map +7 -0
  63. package/dist/lib/node-esm/chunk-BDEFTL6K.mjs +18 -0
  64. package/dist/lib/node-esm/chunk-BDEFTL6K.mjs.map +7 -0
  65. package/dist/lib/node-esm/chunk-H4JILUJK.mjs +20 -0
  66. package/dist/lib/node-esm/chunk-H4JILUJK.mjs.map +7 -0
  67. package/dist/lib/node-esm/{chunk-2A3VBXBP.mjs → chunk-ITQFSFQ3.mjs} +587 -513
  68. package/dist/lib/node-esm/chunk-ITQFSFQ3.mjs.map +7 -0
  69. package/dist/lib/node-esm/chunk-TJPQDQNI.mjs +168 -0
  70. package/dist/lib/node-esm/chunk-TJPQDQNI.mjs.map +7 -0
  71. package/dist/lib/node-esm/{chunk-4AOMYKDE.mjs → chunk-VH2EBZEV.mjs} +124 -63
  72. package/dist/lib/node-esm/chunk-VH2EBZEV.mjs.map +7 -0
  73. package/dist/lib/node-esm/{chunk-P442DOQ3.mjs → chunk-WC4VBFMA.mjs} +30 -17
  74. package/dist/lib/node-esm/chunk-WC4VBFMA.mjs.map +7 -0
  75. package/dist/lib/node-esm/chunk-Z7BB6HC2.mjs +21 -0
  76. package/dist/lib/node-esm/chunk-Z7BB6HC2.mjs.map +7 -0
  77. package/dist/lib/node-esm/{identity-created-IJQO6GCR.mjs → identity-created-OXLKCJE3.mjs} +6 -6
  78. package/dist/lib/node-esm/identity-created-OXLKCJE3.mjs.map +7 -0
  79. package/dist/lib/node-esm/index.mjs +91 -91
  80. package/dist/lib/node-esm/index.mjs.map +3 -3
  81. package/dist/lib/node-esm/{intent-resolver-LEANKSKZ.mjs → intent-resolver-YK4ESSET.mjs} +87 -85
  82. package/dist/lib/node-esm/intent-resolver-YK4ESSET.mjs.map +7 -0
  83. package/dist/lib/node-esm/meta.json +1 -1
  84. package/dist/lib/node-esm/{react-root-5Y7LJRX6.mjs → react-root-5ANDLQMX.mjs} +13 -12
  85. package/dist/lib/node-esm/react-root-5ANDLQMX.mjs.map +7 -0
  86. package/dist/lib/node-esm/{react-surface-YQFNIKYT.mjs → react-surface-V7J2QB44.mjs} +81 -105
  87. package/dist/lib/node-esm/react-surface-V7J2QB44.mjs.map +7 -0
  88. package/dist/lib/node-esm/{schema-defs-WHJM7UZE.mjs → schema-defs-ZS2D47XW.mjs} +6 -6
  89. package/dist/lib/node-esm/schema-defs-ZS2D47XW.mjs.map +7 -0
  90. package/dist/lib/node-esm/{settings-SAOBPND3.mjs → settings-RBB5633M.mjs} +5 -5
  91. package/dist/lib/node-esm/{settings-SAOBPND3.mjs.map → settings-RBB5633M.mjs.map} +1 -1
  92. package/dist/lib/node-esm/{spaces-ready-HIUKNDZK.mjs → spaces-ready-SJCXV6YH.mjs} +21 -18
  93. package/dist/lib/node-esm/spaces-ready-SJCXV6YH.mjs.map +7 -0
  94. package/dist/lib/node-esm/{state-ZVEHQ4BJ.mjs → state-362I5BMK.mjs} +7 -7
  95. package/dist/lib/node-esm/state-362I5BMK.mjs.map +7 -0
  96. package/dist/lib/node-esm/types/index.mjs +2 -2
  97. package/dist/types/src/SpacePlugin.d.ts +1 -1
  98. package/dist/types/src/SpacePlugin.d.ts.map +1 -1
  99. package/dist/types/src/capabilities/app-graph-builder.d.ts +1 -1
  100. package/dist/types/src/capabilities/app-graph-builder.d.ts.map +1 -1
  101. package/dist/types/src/capabilities/app-graph-serializer.d.ts +1 -1
  102. package/dist/types/src/capabilities/capabilities.d.ts +7 -6
  103. package/dist/types/src/capabilities/capabilities.d.ts.map +1 -1
  104. package/dist/types/src/capabilities/identity-created.d.ts +1 -1
  105. package/dist/types/src/capabilities/identity-created.d.ts.map +1 -1
  106. package/dist/types/src/capabilities/index.d.ts +11 -12
  107. package/dist/types/src/capabilities/index.d.ts.map +1 -1
  108. package/dist/types/src/capabilities/intent-resolver.d.ts +1 -1
  109. package/dist/types/src/capabilities/intent-resolver.d.ts.map +1 -1
  110. package/dist/types/src/capabilities/react-root.d.ts +2 -2
  111. package/dist/types/src/capabilities/react-root.d.ts.map +1 -1
  112. package/dist/types/src/capabilities/react-surface.d.ts +1 -1
  113. package/dist/types/src/capabilities/react-surface.d.ts.map +1 -1
  114. package/dist/types/src/capabilities/schema-defs.d.ts +1 -1
  115. package/dist/types/src/capabilities/schema-defs.d.ts.map +1 -1
  116. package/dist/types/src/capabilities/settings.d.ts +1 -1
  117. package/dist/types/src/capabilities/spaces-ready.d.ts +1 -1
  118. package/dist/types/src/capabilities/spaces-ready.d.ts.map +1 -1
  119. package/dist/types/src/capabilities/state.d.ts +1 -1
  120. package/dist/types/src/capabilities/state.d.ts.map +1 -1
  121. package/dist/types/src/components/AwaitingObject.d.ts.map +1 -1
  122. package/dist/types/src/components/CollectionArticle.d.ts +6 -0
  123. package/dist/types/src/components/CollectionArticle.d.ts.map +1 -0
  124. package/dist/types/src/components/CollectionSection.d.ts +3 -4
  125. package/dist/types/src/components/CollectionSection.d.ts.map +1 -1
  126. package/dist/types/src/components/CreateDialog/CreateObjectDialog.d.ts +3 -3
  127. package/dist/types/src/components/CreateDialog/CreateObjectDialog.d.ts.map +1 -1
  128. package/dist/types/src/components/CreateDialog/CreateObjectDialog.stories.d.ts +1694 -4
  129. package/dist/types/src/components/CreateDialog/CreateObjectDialog.stories.d.ts.map +1 -1
  130. package/dist/types/src/components/CreateDialog/CreateObjectPanel.d.ts +7 -5
  131. package/dist/types/src/components/CreateDialog/CreateObjectPanel.d.ts.map +1 -1
  132. package/dist/types/src/components/CreateDialog/CreateSpaceDialog.d.ts +1 -1
  133. package/dist/types/src/components/CreateDialog/CreateSpaceDialog.d.ts.map +1 -1
  134. package/dist/types/src/components/{JoinDialog.d.ts → JoinDialog/JoinDialog.d.ts} +1 -1
  135. package/dist/types/src/components/JoinDialog/JoinDialog.d.ts.map +1 -0
  136. package/dist/types/src/components/JoinDialog/index.d.ts +2 -0
  137. package/dist/types/src/components/JoinDialog/index.d.ts.map +1 -0
  138. package/dist/types/src/components/{MembersContainer.d.ts → MembersContainer/MembersContainer.d.ts} +3 -2
  139. package/dist/types/src/components/MembersContainer/MembersContainer.d.ts.map +1 -0
  140. package/dist/types/src/components/MembersContainer/MembersContainer.stories.d.ts +1697 -0
  141. package/dist/types/src/components/MembersContainer/MembersContainer.stories.d.ts.map +1 -0
  142. package/dist/types/src/components/MembersContainer/index.d.ts +2 -0
  143. package/dist/types/src/components/MembersContainer/index.d.ts.map +1 -0
  144. package/dist/types/src/components/ObjectDetailsPanel/ObjectDetailsPanel.d.ts +9 -0
  145. package/dist/types/src/components/ObjectDetailsPanel/ObjectDetailsPanel.d.ts.map +1 -0
  146. package/dist/types/src/components/ObjectDetailsPanel/ObjectForm.d.ts +10 -0
  147. package/dist/types/src/components/ObjectDetailsPanel/ObjectForm.d.ts.map +1 -0
  148. package/dist/types/src/components/ObjectDetailsPanel/index.d.ts +3 -0
  149. package/dist/types/src/components/ObjectDetailsPanel/index.d.ts.map +1 -0
  150. package/dist/types/src/components/ObjectRenamePopover/ObjectRenamePopover.d.ts +7 -0
  151. package/dist/types/src/components/ObjectRenamePopover/ObjectRenamePopover.d.ts.map +1 -0
  152. package/dist/types/src/components/ObjectRenamePopover/index.d.ts +2 -0
  153. package/dist/types/src/components/ObjectRenamePopover/index.d.ts.map +1 -0
  154. package/dist/types/src/components/ObjectSettings/AdvancedObjectSettings.d.ts.map +1 -1
  155. package/dist/types/src/components/ObjectSettings/BaseObjectSettings.d.ts +2 -2
  156. package/dist/types/src/components/ObjectSettings/BaseObjectSettings.d.ts.map +1 -1
  157. package/dist/types/src/components/ObjectSettings/BaseObjectSettings.stories.d.ts +1530 -0
  158. package/dist/types/src/components/ObjectSettings/BaseObjectSettings.stories.d.ts.map +1 -0
  159. package/dist/types/src/components/ObjectSettings/ForeignKeys.d.ts +1 -1
  160. package/dist/types/src/components/ObjectSettings/ForeignKeys.d.ts.map +1 -1
  161. package/dist/types/src/components/ObjectSettings/ObjectSettingsContainer.d.ts.map +1 -1
  162. package/dist/types/src/components/ObjectSettings/index.d.ts +2 -1
  163. package/dist/types/src/components/ObjectSettings/index.d.ts.map +1 -1
  164. package/dist/types/src/components/RecordArticle.d.ts +5 -0
  165. package/dist/types/src/components/RecordArticle.d.ts.map +1 -0
  166. package/dist/types/src/components/RecordArticle.stories.d.ts +1697 -0
  167. package/dist/types/src/components/RecordArticle.stories.d.ts.map +1 -0
  168. package/dist/types/src/components/SchemaContainer.d.ts +1 -1
  169. package/dist/types/src/components/SchemaContainer.d.ts.map +1 -1
  170. package/dist/types/src/components/SpacePluginSettings.d.ts.map +1 -1
  171. package/dist/types/src/components/{SpacePresence.d.ts → SpacePresence/SpacePresence.d.ts} +4 -3
  172. package/dist/types/src/components/SpacePresence/SpacePresence.d.ts.map +1 -0
  173. package/dist/types/src/components/SpacePresence/SpacePresence.stories.d.ts +1527 -0
  174. package/dist/types/src/components/SpacePresence/SpacePresence.stories.d.ts.map +1 -0
  175. package/dist/types/src/components/SpacePresence/index.d.ts +2 -0
  176. package/dist/types/src/components/SpacePresence/index.d.ts.map +1 -0
  177. package/dist/types/src/components/SpaceRenamePopover/SpaceRenamePopover.d.ts +7 -0
  178. package/dist/types/src/components/SpaceRenamePopover/SpaceRenamePopover.d.ts.map +1 -0
  179. package/dist/types/src/components/SpaceRenamePopover/index.d.ts +2 -0
  180. package/dist/types/src/components/SpaceRenamePopover/index.d.ts.map +1 -0
  181. package/dist/types/src/components/SpaceSettings/SpaceSettingsContainer.d.ts.map +1 -1
  182. package/dist/types/src/components/SpaceSettings/SpaceSettingsContainer.stories.d.ts +1527 -4
  183. package/dist/types/src/components/SpaceSettings/SpaceSettingsContainer.stories.d.ts.map +1 -1
  184. package/dist/types/src/components/SyncStatus/SyncStatus.d.ts.map +1 -1
  185. package/dist/types/src/components/SyncStatus/SyncStatus.stories.d.ts +1528 -5
  186. package/dist/types/src/components/SyncStatus/SyncStatus.stories.d.ts.map +1 -1
  187. package/dist/types/src/components/ViewEditor.d.ts +3 -4
  188. package/dist/types/src/components/ViewEditor.d.ts.map +1 -1
  189. package/dist/types/src/components/index.d.ts +10 -11
  190. package/dist/types/src/components/index.d.ts.map +1 -1
  191. package/dist/types/src/events.d.ts.map +1 -1
  192. package/dist/types/src/helpers/index.d.ts +2 -0
  193. package/dist/types/src/helpers/index.d.ts.map +1 -0
  194. package/dist/types/src/helpers/query.d.ts +8 -0
  195. package/dist/types/src/helpers/query.d.ts.map +1 -0
  196. package/dist/types/src/helpers/query.test.d.ts +2 -0
  197. package/dist/types/src/helpers/query.test.d.ts.map +1 -0
  198. package/dist/types/src/hooks/index.d.ts +1 -0
  199. package/dist/types/src/hooks/index.d.ts.map +1 -1
  200. package/dist/types/src/hooks/useActiveSpace.d.ts.map +1 -1
  201. package/dist/types/src/hooks/useInputSurfaceLookup.d.ts +1 -1
  202. package/dist/types/src/hooks/useInputSurfaceLookup.d.ts.map +1 -1
  203. package/dist/types/src/hooks/usePath.d.ts +1 -1
  204. package/dist/types/src/hooks/usePath.d.ts.map +1 -1
  205. package/dist/types/src/hooks/useTypeOptions.d.ts +10 -0
  206. package/dist/types/src/hooks/useTypeOptions.d.ts.map +1 -0
  207. package/dist/types/src/index.d.ts +1 -0
  208. package/dist/types/src/index.d.ts.map +1 -1
  209. package/dist/types/src/meta.d.ts +0 -1
  210. package/dist/types/src/meta.d.ts.map +1 -1
  211. package/dist/types/src/translations.d.ts +1326 -26
  212. package/dist/types/src/translations.d.ts.map +1 -1
  213. package/dist/types/src/types/types.d.ts +78 -96
  214. package/dist/types/src/types/types.d.ts.map +1 -1
  215. package/dist/types/src/util.d.ts +16 -11
  216. package/dist/types/src/util.d.ts.map +1 -1
  217. package/dist/types/tsconfig.tsbuildinfo +1 -1
  218. package/package.json +68 -63
  219. package/src/SpacePlugin.ts +230 -220
  220. package/src/capabilities/app-graph-builder.ts +214 -133
  221. package/src/capabilities/app-graph-serializer.ts +12 -12
  222. package/src/capabilities/capabilities.ts +19 -13
  223. package/src/capabilities/identity-created.ts +3 -3
  224. package/src/capabilities/index.ts +0 -1
  225. package/src/capabilities/intent-resolver.ts +81 -65
  226. package/src/capabilities/react-root.tsx +6 -4
  227. package/src/capabilities/react-surface.tsx +78 -145
  228. package/src/capabilities/schema-defs.ts +4 -3
  229. package/src/capabilities/spaces-ready.ts +16 -10
  230. package/src/capabilities/state.ts +5 -4
  231. package/src/components/AwaitingObject.tsx +12 -14
  232. package/src/components/{CollectionMain.tsx → CollectionArticle.tsx} +7 -6
  233. package/src/components/CollectionSection.tsx +8 -6
  234. package/src/components/CreateDialog/CreateObjectDialog.stories.tsx +17 -16
  235. package/src/components/CreateDialog/CreateObjectDialog.tsx +51 -33
  236. package/src/components/CreateDialog/CreateObjectPanel.tsx +24 -13
  237. package/src/components/CreateDialog/CreateSpaceDialog.tsx +30 -11
  238. package/src/components/{JoinDialog.tsx → JoinDialog/JoinDialog.tsx} +26 -10
  239. package/src/components/JoinDialog/index.ts +5 -0
  240. package/src/components/MembersContainer/MembersContainer.stories.tsx +56 -0
  241. package/src/components/{MembersContainer.tsx → MembersContainer/MembersContainer.tsx} +22 -21
  242. package/src/components/MembersContainer/index.ts +5 -0
  243. package/src/components/MenuFooter.tsx +2 -2
  244. package/src/components/ObjectDetailsPanel/ObjectDetailsPanel.tsx +51 -0
  245. package/src/components/ObjectDetailsPanel/ObjectForm.tsx +72 -0
  246. package/src/components/ObjectDetailsPanel/index.ts +7 -0
  247. package/src/components/{PopoverRenameObject.tsx → ObjectRenamePopover/ObjectRenamePopover.tsx} +10 -16
  248. package/src/components/ObjectRenamePopover/index.ts +5 -0
  249. package/src/components/ObjectSettings/AdvancedObjectSettings.tsx +4 -3
  250. package/src/components/ObjectSettings/BaseObjectSettings.stories.tsx +63 -0
  251. package/src/components/ObjectSettings/BaseObjectSettings.tsx +90 -26
  252. package/src/components/ObjectSettings/ForeignKeys.tsx +4 -4
  253. package/src/components/ObjectSettings/ObjectSettingsContainer.tsx +4 -3
  254. package/src/components/ObjectSettings/index.ts +3 -1
  255. package/src/components/RecordArticle.stories.tsx +115 -0
  256. package/src/components/RecordArticle.tsx +114 -0
  257. package/src/components/SchemaContainer.tsx +25 -28
  258. package/src/components/SpacePluginSettings.tsx +16 -11
  259. package/src/components/{SpacePresence.stories.tsx → SpacePresence/SpacePresence.stories.tsx} +24 -23
  260. package/src/components/{SpacePresence.tsx → SpacePresence/SpacePresence.tsx} +22 -17
  261. package/src/components/SpacePresence/index.ts +5 -0
  262. package/src/components/{PopoverRenameSpace.tsx → SpaceRenamePopover/SpaceRenamePopover.tsx} +7 -6
  263. package/src/components/SpaceRenamePopover/index.ts +5 -0
  264. package/src/components/SpaceSettings/SpaceSettingsContainer.stories.tsx +17 -9
  265. package/src/components/SpaceSettings/SpaceSettingsContainer.tsx +49 -28
  266. package/src/components/SyncStatus/InlineSyncStatus.tsx +8 -8
  267. package/src/components/SyncStatus/SyncStatus.stories.tsx +9 -9
  268. package/src/components/SyncStatus/SyncStatus.tsx +109 -12
  269. package/src/components/ViewEditor.tsx +51 -23
  270. package/src/components/index.ts +7 -7
  271. package/src/events.ts +7 -7
  272. package/src/helpers/index.ts +5 -0
  273. package/src/helpers/query.test.ts +24 -0
  274. package/src/helpers/query.ts +158 -0
  275. package/src/hooks/index.ts +1 -0
  276. package/src/hooks/useActiveSpace.ts +3 -2
  277. package/src/hooks/useInputSurfaceLookup.tsx +8 -3
  278. package/src/hooks/usePath.ts +1 -1
  279. package/src/hooks/useTypeOptions.ts +59 -0
  280. package/src/index.ts +1 -0
  281. package/src/meta.ts +6 -3
  282. package/src/translations.ts +29 -14
  283. package/src/types/types.ts +31 -22
  284. package/src/util.tsx +131 -66
  285. package/dist/lib/browser/CollectionMain-D2B75XBS.mjs.map +0 -7
  286. package/dist/lib/browser/ObjectDetailsPanel-YPTDQKMG.mjs +0 -88
  287. package/dist/lib/browser/ObjectDetailsPanel-YPTDQKMG.mjs.map +0 -7
  288. package/dist/lib/browser/app-graph-builder-V3MP3CDK.mjs.map +0 -7
  289. package/dist/lib/browser/app-graph-serializer-H6AW7KGS.mjs.map +0 -7
  290. package/dist/lib/browser/chunk-CEFHNVU7.mjs +0 -20
  291. package/dist/lib/browser/chunk-CEFHNVU7.mjs.map +0 -7
  292. package/dist/lib/browser/chunk-FBCGT5YY.mjs +0 -13
  293. package/dist/lib/browser/chunk-FBCGT5YY.mjs.map +0 -7
  294. package/dist/lib/browser/chunk-FBJEXW54.mjs.map +0 -7
  295. package/dist/lib/browser/chunk-JS3MMC42.mjs +0 -19
  296. package/dist/lib/browser/chunk-JS3MMC42.mjs.map +0 -7
  297. package/dist/lib/browser/chunk-QACNNDOT.mjs.map +0 -7
  298. package/dist/lib/browser/chunk-SGTQ52SU.mjs.map +0 -7
  299. package/dist/lib/browser/chunk-VLBRSGJ2.mjs +0 -94
  300. package/dist/lib/browser/chunk-VLBRSGJ2.mjs.map +0 -7
  301. package/dist/lib/browser/chunk-XUYKJUU7.mjs.map +0 -7
  302. package/dist/lib/browser/identity-created-23XJJV2N.mjs.map +0 -7
  303. package/dist/lib/browser/intent-resolver-XHGD73WZ.mjs.map +0 -7
  304. package/dist/lib/browser/react-root-CMWOGJG5.mjs +0 -29
  305. package/dist/lib/browser/react-root-CMWOGJG5.mjs.map +0 -7
  306. package/dist/lib/browser/react-surface-YWZZQF7H.mjs.map +0 -7
  307. package/dist/lib/browser/schema-defs-Z6FC4AHC.mjs.map +0 -7
  308. package/dist/lib/browser/schema-tools-BNP4JTD7.mjs +0 -124
  309. package/dist/lib/browser/schema-tools-BNP4JTD7.mjs.map +0 -7
  310. package/dist/lib/browser/spaces-ready-TOPG6IV4.mjs.map +0 -7
  311. package/dist/lib/browser/state-QYZAB45H.mjs.map +0 -7
  312. package/dist/lib/node-esm/CollectionMain-ZJIFCWKZ.mjs.map +0 -7
  313. package/dist/lib/node-esm/ObjectDetailsPanel-QKZEDSZK.mjs +0 -89
  314. package/dist/lib/node-esm/ObjectDetailsPanel-QKZEDSZK.mjs.map +0 -7
  315. package/dist/lib/node-esm/app-graph-builder-SG4VECBB.mjs.map +0 -7
  316. package/dist/lib/node-esm/app-graph-serializer-2ICUGQQT.mjs.map +0 -7
  317. package/dist/lib/node-esm/chunk-2A3VBXBP.mjs.map +0 -7
  318. package/dist/lib/node-esm/chunk-4AOMYKDE.mjs.map +0 -7
  319. package/dist/lib/node-esm/chunk-5HHYE264.mjs +0 -20
  320. package/dist/lib/node-esm/chunk-5HHYE264.mjs.map +0 -7
  321. package/dist/lib/node-esm/chunk-5T3ZH23B.mjs +0 -21
  322. package/dist/lib/node-esm/chunk-5T3ZH23B.mjs.map +0 -7
  323. package/dist/lib/node-esm/chunk-HWNG4MEU.mjs +0 -15
  324. package/dist/lib/node-esm/chunk-HWNG4MEU.mjs.map +0 -7
  325. package/dist/lib/node-esm/chunk-JH6F4C3I.mjs.map +0 -7
  326. package/dist/lib/node-esm/chunk-P442DOQ3.mjs.map +0 -7
  327. package/dist/lib/node-esm/chunk-SSLBYZEY.mjs +0 -96
  328. package/dist/lib/node-esm/chunk-SSLBYZEY.mjs.map +0 -7
  329. package/dist/lib/node-esm/identity-created-IJQO6GCR.mjs.map +0 -7
  330. package/dist/lib/node-esm/intent-resolver-LEANKSKZ.mjs.map +0 -7
  331. package/dist/lib/node-esm/react-root-5Y7LJRX6.mjs.map +0 -7
  332. package/dist/lib/node-esm/react-surface-YQFNIKYT.mjs.map +0 -7
  333. package/dist/lib/node-esm/schema-defs-WHJM7UZE.mjs.map +0 -7
  334. package/dist/lib/node-esm/schema-tools-KWW5PTML.mjs +0 -126
  335. package/dist/lib/node-esm/schema-tools-KWW5PTML.mjs.map +0 -7
  336. package/dist/lib/node-esm/spaces-ready-HIUKNDZK.mjs.map +0 -7
  337. package/dist/lib/node-esm/state-ZVEHQ4BJ.mjs.map +0 -7
  338. package/dist/types/src/capabilities/schema-tool.test.d.ts +0 -2
  339. package/dist/types/src/capabilities/schema-tool.test.d.ts.map +0 -1
  340. package/dist/types/src/capabilities/schema-tools.d.ts +0 -13
  341. package/dist/types/src/capabilities/schema-tools.d.ts.map +0 -1
  342. package/dist/types/src/components/CollectionMain.d.ts +0 -7
  343. package/dist/types/src/components/CollectionMain.d.ts.map +0 -1
  344. package/dist/types/src/components/JoinDialog.d.ts.map +0 -1
  345. package/dist/types/src/components/MembersContainer.d.ts.map +0 -1
  346. package/dist/types/src/components/MembersContainer.stories.d.ts +0 -8
  347. package/dist/types/src/components/MembersContainer.stories.d.ts.map +0 -1
  348. package/dist/types/src/components/ObjectDetailsPanel.d.ts +0 -9
  349. package/dist/types/src/components/ObjectDetailsPanel.d.ts.map +0 -1
  350. package/dist/types/src/components/PersistenceStatus.d.ts +0 -6
  351. package/dist/types/src/components/PersistenceStatus.d.ts.map +0 -1
  352. package/dist/types/src/components/PopoverRenameObject.d.ts +0 -7
  353. package/dist/types/src/components/PopoverRenameObject.d.ts.map +0 -1
  354. package/dist/types/src/components/PopoverRenameSpace.d.ts +0 -7
  355. package/dist/types/src/components/PopoverRenameSpace.d.ts.map +0 -1
  356. package/dist/types/src/components/SpacePresence.d.ts.map +0 -1
  357. package/dist/types/src/components/SpacePresence.stories.d.ts +0 -9
  358. package/dist/types/src/components/SpacePresence.stories.d.ts.map +0 -1
  359. package/src/capabilities/schema-tool.test.ts +0 -44
  360. package/src/capabilities/schema-tools.ts +0 -125
  361. package/src/components/MembersContainer.stories.tsx +0 -30
  362. package/src/components/ObjectDetailsPanel.tsx +0 -77
  363. package/src/components/PersistenceStatus.tsx +0 -83
@@ -1,7 +0,0 @@
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/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", "../../../src/components/ViewEditor.tsx", "../../../src/components/index.ts"],
4
- "sourcesContent": ["//\n// Copyright 2023 DXOS.org\n//\n\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, Icon, Toast, useTranslation } from '@dxos/react-ui';\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 <Icon icon='ph--check-circle--regular' size={5} />\n <span>{t('found object label')}</span>\n </>\n ) : waiting ? (\n <>\n <Icon icon='ph--circle-notch--regular' size={5} classNames='animate-spin' />\n <span>{t('waiting for object label')}</span>\n </>\n ) : (\n <>\n <Icon icon='ph--circle-dashed--regular' size={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 { Effect, pipe } from 'effect';\nimport React, { useCallback, useRef, useState } from 'react';\n\nimport {\n Capabilities,\n LayoutAction,\n chain,\n createIntent,\n useCapabilities,\n useIntentDispatcher,\n usePluginManager,\n} from '@dxos/app-framework';\nimport { Obj, Query, Type } from '@dxos/echo';\nimport { invariant } from '@dxos/invariant';\nimport { useClient } from '@dxos/react-client';\nimport { getSpace, isLiveObject, isSpace, type Space, useQuery, useSpaces } from '@dxos/react-client/echo';\nimport { Button, Dialog, Icon, useTranslation } from '@dxos/react-ui';\nimport { cardDialogContent, cardDialogHeader } from '@dxos/react-ui-stack';\nimport { DataType } from '@dxos/schema';\nimport { isNonNullable } from '@dxos/util';\n\nimport { CreateObjectPanel, type CreateObjectPanelProps } from './CreateObjectPanel';\nimport { SpaceCapabilities } from '../../capabilities';\nimport { SPACE_PLUGIN } from '../../meta';\nimport { SpaceAction } from '../../types';\n\nexport const CREATE_OBJECT_DIALOG = `${SPACE_PLUGIN}/CreateObjectDialog`;\n\nexport type CreateObjectDialogProps = Pick<CreateObjectPanelProps, 'target' | 'typename' | 'name'> & {\n onCreateObject?: (object: Obj.Any) => void;\n shouldNavigate?: (object: Obj.Any) => boolean;\n};\n\nexport const CreateObjectDialog = ({\n target: initialTarget,\n typename: initialTypename,\n name,\n onCreateObject,\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 { dispatch } = useIntentDispatcher();\n const forms = useCapabilities(SpaceCapabilities.ObjectForm);\n const [target, setTarget] = useState<Space | DataType.Collection | undefined>(initialTarget);\n const [typename, setTypename] = useState<string | undefined>(initialTypename);\n const space = isSpace(target) ? target : getSpace(target);\n const queryCollections = useQuery(space, Query.type(DataType.QueryCollection));\n const hiddenTypenames = queryCollections.map((collection) => collection.query.typename).filter(isNonNullable);\n\n const resolve = useCallback<NonNullable<CreateObjectPanelProps['resolve']>>(\n (typename) =>\n manager.context.getCapabilities(Capabilities.Metadata).find(({ id }) => id === typename)?.metadata ?? {},\n [manager],\n );\n\n const handleCreateObject = useCallback<NonNullable<CreateObjectPanelProps['onCreateObject']>>(\n ({ form, data = {} }) =>\n Effect.gen(function* () {\n if (!target) {\n // TODO(wittjosiah): UI feedback.\n return;\n }\n\n // NOTE: Must close before navigating or attention won't follow object.\n closeRef.current?.click();\n\n const space = isSpace(target) ? target : getSpace(target);\n invariant(space, 'Missing space');\n const { object } = yield* dispatch(form.getIntent(data, { space }));\n if (isLiveObject(object) && !Obj.instanceOf(DataType.StoredSchema, object)) {\n // TODO(wittjosiah): Selection in navtree isn't working as expected when hidden typenames evals to true.\n const hidden = form.hidden || hiddenTypenames.includes(Type.getTypename(form.objectSchema));\n const addObjectIntent = createIntent(SpaceAction.AddObject, { target, object, hidden });\n const shouldNavigate = _shouldNavigate ?? (() => true);\n if (shouldNavigate(object)) {\n yield* dispatch(pipe(addObjectIntent, chain(LayoutAction.Open, { part: 'main' })));\n } else {\n yield* dispatch(addObjectIntent);\n }\n\n onCreateObject?.(object);\n }\n }).pipe(Effect.runPromise),\n [dispatch, target, resolve, hiddenTypenames, _shouldNavigate],\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={cardDialogContent}>\n <div role='none' className={cardDialogHeader}>\n <Dialog.Title>\n {t('create object dialog title', { object: t('typename label', { ns: typename, defaultValue: 'Item' }) })}\n </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 forms={forms}\n spaces={spaces}\n target={target}\n typename={typename}\n name={name}\n defaultSpaceId={client.spaces.default.id}\n resolve={resolve}\n onTargetChange={setTarget}\n onTypenameChange={setTypename}\n onCreateObject={handleCreateObject}\n />\n </Dialog.Content>\n );\n};\n", "//\n// Copyright 2024 DXOS.org\n//\n\nimport React, { useCallback } from 'react';\n\nimport { Type } from '@dxos/echo';\nimport { getTypeAnnotation, type TypeAnnotation } from '@dxos/echo-schema';\nimport { type SpaceId, type Space } from '@dxos/react-client/echo';\nimport { Icon, toLocalizedString, useTranslation } from '@dxos/react-ui';\nimport { Form } from '@dxos/react-ui-form';\nimport { SearchList } from '@dxos/react-ui-searchlist';\nimport { cardDialogOverflow, cardDialogPaddedOverflow, cardDialogSearchListRoot } from '@dxos/react-ui-stack';\nimport { type DataType } from '@dxos/schema';\nimport { isNonNullable, type MaybePromise } from '@dxos/util';\n\nimport { useInputSurfaceLookup } from '../../hooks';\nimport { SPACE_PLUGIN } from '../../meta';\nimport { type ObjectForm } from '../../types';\nimport { getSpaceDisplayName } from '../../util';\n\nexport type CreateObjectPanelProps = {\n forms: ObjectForm[];\n spaces: Space[];\n typename?: string;\n target?: Space | DataType.Collection;\n name?: string;\n defaultSpaceId?: SpaceId;\n resolve?: (typename: string) => Record<string, any>;\n onTargetChange?: (target: Space) => void;\n onTypenameChange?: (typename: string) => void;\n onCreateObject?: (params: { form: ObjectForm; data?: Record<string, any> }) => MaybePromise<void>;\n};\n\nexport const CreateObjectPanel = ({\n forms,\n spaces,\n typename,\n target,\n name: initialName,\n defaultSpaceId,\n resolve,\n onTargetChange,\n onTypenameChange,\n onCreateObject,\n}: CreateObjectPanelProps) => {\n const { t } = useTranslation(SPACE_PLUGIN);\n const form = forms.find((form) => Type.getTypename(form.objectSchema) === 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) {\n return;\n }\n await onCreateObject?.({ form, data: props });\n },\n [onCreateObject, form],\n );\n\n const handleSetTypename = useCallback(\n async (typename: string) => {\n const form = forms.find((form) => getTypeAnnotation(form.objectSchema)?.typename === typename);\n if (form && !form.formSchema) {\n await onCreateObject?.({ form });\n } else {\n onTypenameChange?.(typename);\n }\n },\n [forms, onCreateObject],\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 !form ? (\n <SelectSchema options={options} resolve={resolve} onChange={handleSetTypename} />\n ) : !target ? (\n <SelectSpace spaces={spaces} defaultSpaceId={defaultSpaceId} onChange={onTargetChange} />\n ) : form.formSchema ? (\n <div role='none' className={cardDialogOverflow}>\n <Form\n autoFocus\n values={{ name: initialName }}\n schema={form.formSchema}\n testId='create-object-form'\n onSave={handleCreateObject}\n lookupComponent={inputSurfaceLookup}\n outerSpacing='blockStart-0'\n />\n </div>\n ) : null;\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={cardDialogSearchListRoot}>\n <SearchList.Input\n autoFocus\n data-testid='create-object-form.space-input'\n placeholder={t('space input placeholder')}\n />\n <SearchList.Content classNames={[cardDialogOverflow, 'plb-cardSpacingBlock']}>\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={cardDialogSearchListRoot}>\n <SearchList.Input\n autoFocus\n data-testid='create-object-form.schema-input'\n placeholder={t('schema input placeholder')}\n />\n <SearchList.Content classNames={cardDialogPaddedOverflow}>\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';\nimport { cardDialogContent, cardDialogHeader } from '@dxos/react-ui-stack';\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(LayoutAction.UpdateDialog, { part: 'dialog', options: { state: false } }));\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={cardDialogContent}>\n <div role='none' className={cardDialogHeader}>\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 role='none' className='contents'>\n <Form\n testId='create-space-form'\n autoFocus\n values={initialValues}\n schema={SpaceForm}\n lookupComponent={inputSurfaceLookup}\n onSave={handleCreateSpace}\n outerSpacing='scroll-fields'\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 { type DataType } from '@dxos/schema';\n\nimport { SPACE_PLUGIN } from '../meta';\n\nexport const CollectionSection = ({ collection }: { collection: DataType.Collection }) => {\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 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 { DataType } from '@dxos/schema';\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 { 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[DataType.Collection.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 ? (\n <Icon icon='ph--check--regular' size={6} classNames='m-1.5' />\n ) : (\n <Icon icon='ph--x--regular' size={6} classNames='m-1.5' />\n );\n};\n", "//\n// Copyright 2024 DXOS.org\n//\n\nimport React from 'react';\n\nimport { getSpace } from '@dxos/client/echo';\nimport { type Obj } from '@dxos/echo';\nimport { useClient } from '@dxos/react-client';\nimport { DropdownMenu, Icon, toLocalizedString, useTranslation } from '@dxos/react-ui';\n\nimport { SPACE_PLUGIN } from '../meta';\nimport { getSpaceDisplayName } from '../util';\n\nexport const MenuFooter = ({ object }: { object: Obj.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 <Icon icon='ph--planet--regular' classNames='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 Obj } from '@dxos/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: Obj.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}>\n <div role='none' className='overflow-y-auto pli-cardSpacingInline plb-cardSpacingBlock'>\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 Obj } from '@dxos/echo';\nimport { Input, type ThemedClassName, useTranslation } from '@dxos/react-ui';\n\nimport { meta } from '../../meta';\n\nexport type BaseObjectSettingsProps = ThemedClassName<\n PropsWithChildren<{\n object: Obj.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 <>\n <Input.Root>\n <Input.Label>{t('name label')}</Input.Label>\n <Input.TextInput\n ref={inputRef}\n placeholder={t('name placeholder')}\n // TODO(burdon): Use annotation to get the name field.\n value={(object as any).name ?? ''}\n onChange={(event) => {\n (object as any).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 </>\n );\n};\n", "//\n// Copyright 2024 DXOS.org\n//\n\nimport React, { useEffect, useState } from 'react';\n\nimport { debounce } from '@dxos/async';\nimport { type EchoDatabase } from '@dxos/react-client/echo';\nimport { Icon, Tooltip, useTranslation } from '@dxos/react-ui';\nimport { 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 <Icon icon='ph--warning--regular' size={4} classNames='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 <Icon icon='ph--arrows-counter-clockwise--regular' size={4} classNames='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 <Icon icon='ph--check-circle--regular' size={4} classNames='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 (err) {\n try {\n object.title = name;\n } catch {\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-2 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-2 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 Type } from '@dxos/echo';\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): Type.Schema[] => {\n const [schemas, setSchemas] = useState<Type.Schema[]>([]);\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 Type } from '@dxos/echo';\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: Type.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 <Popover.Viewport classNames='max-bs-56'>\n <List>\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\n identity={member.identity}\n size={size}\n showName\n match={member.currentlyAttended}\n />\n </ListItem.Root>\n ))}\n </List>\n </Popover.Viewport>\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, IconButton } from '@dxos/react-ui';\nimport { controlItemClasses, ControlPage, ControlSection, 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 client = useClient();\n const spaces = useSpaces({ all: settings.showHidden });\n const { dispatchPromise: dispatch } = useIntentDispatcher();\n\n // TODO(wittjosiah): Migrate to new form container.\n return (\n <ControlPage>\n <ControlSection title={t('space settings label')} description={t('space settings description')}>\n <div className='pli-trimMd container-max-width'>\n <DeprecatedFormInput label={t('show hidden spaces label')}>\n <Input.Switch\n checked={settings.showHidden}\n onCheckedChange={(checked) => (settings.showHidden = !!checked)}\n />\n </DeprecatedFormInput>\n </div>\n <List classNames={[controlItemClasses, 'flex flex-col gap-trimSm']}>\n {spaces.map((space) => (\n <ListItem.Root key={space.id} classNames='is-full items-center'>\n {/* TODO(burdon): Should auto center and truncate; NOTE truncate doesn't work with flex grow. */}\n <ListItem.Heading classNames='grow truncate !min-bs-0'>\n {toLocalizedString(getSpaceDisplayName(space, { personal: space === client.spaces.default }), t)}\n </ListItem.Heading>\n <IconButton\n icon='ph--faders--regular'\n onClick={() => dispatch(createIntent(SpaceAction.OpenSettings, { space }))}\n label={t('open space settings label')}\n />\n </ListItem.Root>\n ))}\n </List>\n </ControlSection>\n </ControlPage>\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 outerSpacing={false}\n classNames='container-max-width grid grid-cols-1 md:grid-cols-[1fr_min-content] 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.db.saveStateChanged.on(ctx, ({ unsavedDocuments }) => {\n hasUnsavedChanges = unsavedDocuments.length > 0;\n });\n space.db.saveStateChanged.debounce(500).on(ctx, () => {\n if (hasUnsavedChanges) {\n lastFlushPromise = undefined;\n cb('saving');\n } else {\n const flushPromise = space.db.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", "//\n// Copyright 2023 DXOS.org\n//\n\nimport React, { useCallback, useMemo } from 'react';\n\nimport { createIntent, useIntentDispatcher } from '@dxos/app-framework';\nimport { Type } from '@dxos/echo';\nimport { invariant } from '@dxos/invariant';\nimport { useClient } from '@dxos/react-client';\nimport { Filter, getSpace, useQuery, useSchema } from '@dxos/react-client/echo';\nimport { ViewEditor as NativeViewEditor } from '@dxos/react-ui-form';\nimport { DataType } from '@dxos/schema';\n\nimport { SpaceAction } from '../types';\n\ntype ViewEditorProps = { view: DataType.View };\n\nexport const ViewEditor = ({ view }: ViewEditorProps) => {\n const { dispatchPromise: dispatch } = useIntentDispatcher();\n const client = useClient();\n const space = getSpace(view);\n const schema = useSchema(client, space, view.query.typename);\n\n const views = useQuery(space, Filter.type(DataType.View));\n const currentTypename = useMemo(() => view.query?.typename, [view.query?.typename]);\n\n const handleUpdateTypename = useCallback(\n (typename: string) => {\n invariant(schema);\n invariant(Type.isMutable(schema));\n\n const matchingViews = views.filter((view) => view.query.typename === currentTypename);\n for (const view of matchingViews) {\n view.query.typename = typename;\n }\n\n schema.updateTypename(typename);\n },\n [views, schema],\n );\n\n const handleDelete = useCallback(\n (fieldId: string) => {\n void dispatch(createIntent(SpaceAction.DeleteField, { view, fieldId }));\n },\n [dispatch, view],\n );\n\n if (!space || !schema) {\n return null;\n }\n\n return (\n <NativeViewEditor\n registry={space.db.schemaRegistry}\n schema={schema}\n view={view}\n onTypenameChanged={Type.isMutable(schema) ? handleUpdateTypename : undefined}\n onDelete={Type.isMutable(schema) ? handleDelete : undefined}\n outerSpacing={false}\n />\n );\n};\n", "//\n// Copyright 2023 DXOS.org\n//\n\nimport { lazy } from 'react';\n\nexport * from './AwaitingObject';\nexport * from './CreateDialog';\nexport * from './CollectionSection';\nexport * from './JoinDialog';\nexport * from './MembersContainer';\nexport * from './MenuFooter';\nexport * from './ObjectSettings';\nexport * from './PersistenceStatus';\nexport * from './PopoverRenameObject';\nexport * from './PopoverRenameSpace';\nexport * from './SchemaContainer';\nexport * from './SpacePresence';\nexport * from './SpacePluginSettings';\nexport * from './SpaceSettings';\nexport * from './SyncStatus';\nexport * from './ViewEditor';\n\nexport const CollectionMain = lazy(() => import('./CollectionMain'));\nexport const ObjectDetailsPanel = lazy(() => import('./ObjectDetailsPanel'));\n"],
5
- "mappings": "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",
6
- "names": ["React", "useCallback", "useEffect", "useState", "createIntent", "LayoutAction", "useIntentDispatcher", "useLayout", "useClient", "Filter", "fullyQualifiedId", "useQuery", "Button", "Icon", "Toast", "useTranslation", "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", "Toast", "Root", "duration", "onOpenChange", "Body", "Title", "classNames", "Icon", "icon", "size", "span", "Description", "Actions", "Action", "altText", "asChild", "Button", "variant", "onClick", "Close", "ns", "Effect", "pipe", "React", "useCallback", "useRef", "useState", "Capabilities", "LayoutAction", "chain", "createIntent", "useCapabilities", "useIntentDispatcher", "usePluginManager", "Obj", "Query", "Type", "invariant", "useClient", "getSpace", "isLiveObject", "isSpace", "useQuery", "useSpaces", "Button", "Dialog", "Icon", "useTranslation", "cardDialogContent", "cardDialogHeader", "DataType", "isNonNullable", "React", "useCallback", "Type", "getTypeAnnotation", "Icon", "toLocalizedString", "useTranslation", "Form", "SearchList", "cardDialogOverflow", "cardDialogPaddedOverflow", "cardDialogSearchListRoot", "isNonNullable", "CreateObjectPanel", "forms", "spaces", "typename", "target", "name", "initialName", "defaultSpaceId", "resolve", "onTargetChange", "onTypenameChange", "onCreateObject", "t", "useTranslation", "SPACE_PLUGIN", "form", "find", "Type", "getTypename", "objectSchema", "options", "map", "getTypeAnnotation", "filter", "isNonNullable", "sort", "a", "b", "nameA", "ns", "defaultValue", "nameB", "localeCompare", "handleCreateObject", "useCallback", "props", "data", "handleSetTypename", "formSchema", "inputSurfaceLookup", "useInputSurfaceLookup", "React", "SelectSchema", "onChange", "SelectSpace", "div", "role", "className", "cardDialogOverflow", "Form", "autoFocus", "values", "schema", "testId", "onSave", "lookupComponent", "outerSpacing", "SearchList", "Root", "label", "classNames", "cardDialogSearchListRoot", "Input", "data-testid", "placeholder", "Content", "aName", "toLocalizedString", "getSpaceDisplayName", "personal", "id", "bName", "space", "Item", "key", "value", "onSelect", "span", "cardDialogPaddedOverflow", "option", "Icon", "icon", "size", "lazy", "AppGraphBuilder", "lazy", "AppGraphSerializer", "IdentityCreated", "IntentResolver", "ReactRoot", "ReactSurface", "SchemaDefs", "SchemaTools", "SpaceSettings", "SpaceState", "SpacesReady", "CREATE_OBJECT_DIALOG", "SPACE_PLUGIN", "CreateObjectDialog", "target", "initialTarget", "typename", "initialTypename", "name", "onCreateObject", "shouldNavigate", "_shouldNavigate", "closeRef", "useRef", "manager", "usePluginManager", "t", "useTranslation", "client", "useClient", "spaces", "useSpaces", "dispatch", "useIntentDispatcher", "forms", "useCapabilities", "SpaceCapabilities", "ObjectForm", "setTarget", "useState", "setTypename", "space", "isSpace", "getSpace", "queryCollections", "useQuery", "Query", "type", "DataType", "QueryCollection", "hiddenTypenames", "map", "collection", "query", "filter", "isNonNullable", "resolve", "useCallback", "context", "getCapabilities", "Capabilities", "Metadata", "find", "id", "metadata", "handleCreateObject", "form", "data", "Effect", "gen", "current", "click", "invariant", "object", "getIntent", "isLiveObject", "Obj", "instanceOf", "StoredSchema", "hidden", "includes", "Type", "getTypename", "objectSchema", "addObjectIntent", "createIntent", "SpaceAction", "AddObject", "pipe", "chain", "LayoutAction", "Open", "part", "runPromise", "React", "Dialog", "Content", "classNames", "cardDialogContent", "div", "role", "className", "cardDialogHeader", "Title", "ns", "defaultValue", "Close", "asChild", "Button", "ref", "density", "variant", "autoFocus", "Icon", "icon", "size", "CreateObjectPanel", "defaultSpaceId", "default", "onTargetChange", "onTypenameChange", "Effect", "React", "useCallback", "useRef", "createIntent", "LayoutAction", "useIntentDispatcher", "Button", "Dialog", "Icon", "useTranslation", "Form", "cardDialogContent", "cardDialogHeader", "CREATE_SPACE_DIALOG", "SPACE_PLUGIN", "initialValues", "edgeReplication", "CreateSpaceDialog", "closeRef", "useRef", "t", "useTranslation", "dispatch", "useIntentDispatcher", "inputSurfaceLookup", "useInputSurfaceLookup", "handleCreateSpace", "useCallback", "data", "program", "Effect", "gen", "space", "createIntent", "SpaceAction", "Create", "LayoutAction", "SwitchWorkspace", "part", "subject", "id", "UpdateDialog", "options", "state", "runPromise", "React", "Dialog", "Content", "classNames", "cardDialogContent", "div", "role", "className", "cardDialogHeader", "Title", "Close", "asChild", "Button", "ref", "density", "variant", "autoFocus", "Icon", "icon", "size", "Form", "testId", "values", "schema", "SpaceForm", "lookupComponent", "onSave", "outerSpacing", "React", "useTranslation", "CollectionSection", "collection", "t", "useTranslation", "SPACE_PLUGIN", "React", "div", "className", "span", "name", "React", "useCallback", "createIntent", "LayoutAction", "useAppGraph", "useIntentDispatcher", "Trigger", "ObservabilityAction", "useClient", "Dialog", "useTranslation", "JoinPanel", "JOIN_DIALOG", "SPACE_PLUGIN", "JoinDialog", "navigableCollections", "onDone", "props", "dispatchPromise", "dispatch", "useIntentDispatcher", "client", "useClient", "graph", "useAppGraph", "t", "useTranslation", "handleDone", "useCallback", "result", "spaceKey", "Promise", "all", "createIntent", "LayoutAction", "AddToast", "part", "subject", "id", "duration", "title", "ns", "closeLabel", "UpdateDialog", "options", "state", "space", "spaces", "get", "trigger", "Trigger", "subscribe", "wake", "wait", "SwitchWorkspace", "target", "undefined", "waitForPath", "catch", "Open", "Expose", "ObservabilityAction", "SendEvent", "name", "properties", "spaceId", "React", "Dialog", "Content", "Title", "classNames", "JoinPanel", "exitActionParent", "Close", "asChild", "doneActionParent", "React", "useCallback", "useMemo", "useState", "QR", "createIntent", "useIntentDispatcher", "log", "useConfig", "fullyQualifiedId", "useSpaceInvitations", "Invitation", "InvitationEncoder", "Button", "Clipboard", "Icon", "Input", "useId", "useTranslation", "ControlPage", "ControlSection", "ControlFrame", "ControlFrameItem", "ControlItemInput", "StackItem", "DataType", "AuthCode", "BifurcatedAction", "Centered", "Emoji", "InvitationList", "SpaceMemberList", "Viewport", "hexToEmoji", "activeActionKey", "handleInvitationEvent", "invitation", "subscription", "invitationCode", "InvitationEncoder", "encode", "state", "Invitation", "State", "CONNECTING", "log", "info", "JSON", "stringify", "authCode", "unsubscribe", "MembersContainer", "space", "createInvitationUrl", "t", "useTranslation", "SPACE_PLUGIN", "config", "useConfig", "dispatchPromise", "dispatch", "useIntentDispatcher", "invitations", "useSpaceInvitations", "key", "visibleInvitations", "filter", "CANCELLED", "includes", "get", "activeAction", "setInternalActiveAction", "useState", "localStorage", "getItem", "setActiveAction", "nextAction", "setItem", "target", "properties", "DataType", "Collection", "typename", "objects", "locked", "COMPOSER_SPACE_LOCK", "handleChangeLocked", "useCallback", "inviteActions", "useMemo", "inviteOne", "label", "ns", "description", "icon", "React", "Icon", "size", "testId", "onClick", "data", "createIntent", "SpaceAction", "Share", "type", "Type", "INTERACTIVE", "authMethod", "AuthMethod", "SHARED_SECRET", "multiUse", "fullyQualifiedId", "values", "runtime", "app", "env", "DX_ENVIRONMENT", "subscribe", "inviteMany", "DELEGATED", "KNOWN_PUBLIC_KEY", "selectedInvitation", "setSelectedInvitation", "handleSend", "event", "handleBack", "Clipboard", "Provider", "StackItem", "Content", "classNames", "ControlPage", "ControlSection", "title", "ControlFrame", "ControlFrameItem", "SpaceMemberList", "spaceKey", "includeSelf", "p", "className", "InvitationSection", "onBack", "InvitationList", "send", "onClickRemove", "cancel", "BifurcatedAction", "actions", "onChangeActiveAction", "data-testid", "div", "ControlItemInput", "Input", "Switch", "checked", "onCheckedChange", "INIT", "invitationId", "url", "activeView", "READY_FOR_AUTHENTICATION", "Viewport", "Root", "Views", "View", "id", "InvitationComplete", "statusValue", "InvitationAuthCode", "code", "onCancel", "InvitationQR", "qrLabel", "useId", "emoji", "hexToEmoji", "role", "QR", "rounding", "backgroundColor", "color", "aria-labelledby", "errorCorrectionLevel", "cutout", "Centered", "Emoji", "text", "span", "Button", "value", "variant", "AuthCode", "large", "React", "getSpace", "useClient", "DropdownMenu", "Icon", "toLocalizedString", "useTranslation", "MenuFooter", "object", "t", "useTranslation", "SPACE_PLUGIN", "client", "useClient", "space", "getSpace", "spaceName", "getSpaceDisplayName", "personal", "spaces", "default", "React", "DropdownMenu", "Separator", "GroupLabel", "dl", "className", "dt", "dd", "Icon", "icon", "classNames", "toLocalizedString", "React", "useMemo", "Surface", "Clipboard", "StackItem", "React", "useRef", "Input", "useTranslation", "BaseObjectSettings", "classNames", "children", "object", "t", "useTranslation", "meta", "id", "inputRef", "useRef", "React", "Input", "Root", "Label", "TextInput", "ref", "placeholder", "value", "name", "onChange", "event", "target", "onKeyDown", "key", "current", "blur", "ObjectSettingsContainer", "object", "role", "data", "useMemo", "subject", "React", "Clipboard", "Provider", "StackItem", "Content", "toolbar", "div", "className", "BaseObjectSettings", "Surface", "React", "useEffect", "useState", "debounce", "Icon", "Tooltip", "useTranslation", "mx", "staticPlaceholderText", "warningText", "PersistenceStatus", "db", "t", "useTranslation", "SPACE_PLUGIN", "displayMessage", "setDisplayMessage", "useState", "status", "naturalSetStatus", "prevStatus", "setPrevStatus", "_setStatus", "debounce", "useEffect", "timeout", "setTimeout", "clearTimeout", "React", "div", "className", "Icon", "icon", "size", "classNames", "span", "mx", "warningText", "staticPlaceholderText", "Tooltip", "Trigger", "delayDuration", "role", "content", "React", "useCallback", "useRef", "useState", "createIntent", "LayoutAction", "useIntentDispatcher", "log", "Button", "Input", "useTranslation", "POPOVER_RENAME_OBJECT", "SPACE_PLUGIN", "PopoverRenameObject", "object", "obj", "t", "useTranslation", "doneButton", "useRef", "name", "setName", "useState", "title", "dispatchPromise", "dispatch", "useIntentDispatcher", "handleDone", "useCallback", "err", "log", "error", "createIntent", "LayoutAction", "UpdatePopover", "part", "options", "variant", "anchorId", "state", "React", "div", "role", "className", "Input", "Root", "Label", "srOnly", "TextInput", "placeholder", "value", "data-testid", "onChange", "target", "onKeyDown", "key", "current", "click", "Button", "ref", "classNames", "onClick", "ns", "React", "useCallback", "useRef", "useState", "createIntent", "LayoutAction", "useIntentDispatcher", "Button", "Input", "Popover", "useTranslation", "POPOVER_RENAME_SPACE", "SPACE_PLUGIN", "PopoverRenameSpace", "space", "t", "useTranslation", "doneButton", "useRef", "name", "setName", "useState", "properties", "dispatchPromise", "dispatch", "useIntentDispatcher", "handleDone", "useCallback", "createIntent", "LayoutAction", "UpdatePopover", "part", "options", "variant", "anchorId", "state", "React", "div", "role", "className", "Input", "Root", "Label", "srOnly", "TextInput", "defaultValue", "placeholder", "onChange", "target", "value", "onKeyDown", "key", "current", "click", "Popover", "Close", "asChild", "Button", "ref", "classNames", "onClick", "ns", "React", "useState", "useEffect", "useTranslation", "controlItemClasses", "ControlPage", "ControlSection", "StackItem", "useQuerySpaceSchemas", "space", "schemas", "setSchemas", "useState", "useEffect", "query", "db", "schemaRegistry", "initialResults", "runSync", "unsubscribe", "subscribe", "results", "SchemaContainer", "t", "useTranslation", "SPACE_PLUGIN", "React", "StackItem", "Content", "classNames", "ControlPage", "ControlSection", "title", "description", "div", "role", "className", "controlItemClasses", "length", "map", "schema", "key", "id", "typename", "Option", "React", "forwardRef", "useCallback", "useEffect", "useState", "useAppGraph", "useCapability", "generateName", "PublicKey", "useClient", "getSpace", "useMembers", "fullyQualifiedId", "useIdentity", "Avatar", "Tooltip", "Popover", "useTranslation", "List", "ListItem", "useDefaultValue", "AttentionGlyph", "useAttended", "useAttention", "ComplexMap", "keyToFallback", "REFRESH_INTERVAL", "ACTIVITY_DURATION", "noViewers", "ComplexMap", "PublicKey", "hash", "getName", "identity", "profile", "displayName", "generateName", "identityKey", "toHex", "SpacePresence", "object", "spaceKey", "spaceState", "useCapability", "SpaceCapabilities", "MutableState", "client", "useClient", "useIdentity", "space", "spaces", "get", "getSpace", "spaceMembers", "useMembers", "key", "_moment", "setMoment", "useState", "Date", "now", "useEffect", "interval", "setInterval", "clearInterval", "memberOnline", "useCallback", "member", "presence", "memberIsNotSelf", "equals", "currentObjectViewers", "viewersByObject", "fullyQualifiedId", "membersForObject", "filter", "has", "map", "objectView", "lastSeen", "currentlyAttended", "toSorted", "a", "b", "React", "FullPresence", "members", "props", "size", "onMemberClick", "useDefaultValue", "length", "div", "className", "data-testid", "slice", "i", "Tooltip", "Trigger", "side", "content", "PresenceAvatar", "match", "index", "onClick", "Popover", "Root", "Avatar", "Content", "status", "style", "zIndex", "fallback", "Portal", "Arrow", "Viewport", "classNames", "List", "ListItem", "showName", "forwardRef", "forwardedRef", "fallbackValue", "keyToFallback", "hue", "data", "data-status", "emoji", "ref", "Label", "SmallPresenceLive", "id", "open", "viewers", "hasAttention", "isAncestor", "isRelated", "useAttention", "isAttended", "graph", "useAppGraph", "attended", "useAttended", "startOfAttention", "at", "path", "usePath", "containsAttended", "Option", "isSome", "value", "includes", "getActiveViewers", "moment", "Array", "from", "values", "viewer", "activeViewers", "setActiveViewers", "SmallPresence", "count", "t", "useTranslation", "SPACE_PLUGIN", "asChild", "AttentionGlyph", "React", "createIntent", "useIntentDispatcher", "useClient", "useSpaces", "Input", "toLocalizedString", "useTranslation", "List", "ListItem", "IconButton", "controlItemClasses", "ControlPage", "ControlSection", "DeprecatedFormInput", "SpacePluginSettings", "settings", "t", "useTranslation", "SPACE_PLUGIN", "client", "useClient", "spaces", "useSpaces", "all", "showHidden", "dispatchPromise", "dispatch", "useIntentDispatcher", "React", "ControlPage", "ControlSection", "title", "description", "div", "className", "DeprecatedFormInput", "label", "Input", "Switch", "checked", "onCheckedChange", "List", "classNames", "controlItemClasses", "map", "space", "ListItem", "Root", "key", "id", "Heading", "toLocalizedString", "getSpaceDisplayName", "personal", "default", "IconButton", "icon", "onClick", "createIntent", "SpaceAction", "OpenSettings", "pipe", "Schema", "React", "useCallback", "useMemo", "useState", "chain", "createIntent", "LayoutAction", "useIntentDispatcher", "log", "EdgeReplicationSetting", "useClient", "SpaceState", "Button", "Input", "useMulticastObservable", "useTranslation", "Form", "ControlItem", "ControlItemInput", "ControlSection", "ControlPage", "HuePicker", "IconPicker", "StackItem", "FormSchema", "SpaceForm", "pipe", "Schema", "extend", "Struct", "archived", "Boolean", "annotations", "title", "SpaceSettingsContainer", "space", "t", "useTranslation", "SPACE_PLUGIN", "dispatchPromise", "dispatch", "useIntentDispatcher", "client", "useClient", "useMulticastObservable", "state", "SpaceState", "SPACE_INACTIVE", "edgeReplication", "setEdgeReplication", "useState", "internal", "data", "EdgeReplicationSetting", "ENABLED", "toggleEdgeReplication", "useCallback", "next", "setEdgeReplicationPreference", "DISABLED", "catch", "err", "log", "handleSave", "properties", "name", "icon", "hue", "createIntent", "SpaceAction", "Close", "chain", "LayoutAction", "SwitchWorkspace", "part", "subject", "spaces", "default", "id", "Open", "values", "useMemo", "customElements", "type", "label", "getValue", "onValueChange", "handleChange", "target", "value", "React", "ControlItemInput", "description", "Input", "TextInput", "onChange", "placeholder", "classNames", "nextEmoji", "handleEmojiReset", "undefined", "ControlItem", "IconPicker", "onReset", "iconSize", "nextHue", "handleHueReset", "HuePicker", "checked", "Switch", "onCheckedChange", "Button", "disabled", "onClick", "StackItem", "Content", "ControlPage", "ControlSection", "ns", "Form", "schema", "autoSave", "onSave", "Custom", "outerSpacing", "Option", "React", "useEffect", "useState", "useAppGraph", "EdgeStatus", "EdgeReplicationSetting", "useClient", "useSpaceSyncState", "Tooltip", "useTranslation", "AttentionGlyph", "useAttended", "useAttention", "useEdgeStatus", "status", "setStatus", "useState", "EdgeStatus", "NOT_CONNECTED", "client", "useClient", "useEffect", "services", "EdgeAgentService", "queryEdgeStatus", "subscribe", "InlineSyncStatus", "space", "open", "t", "useTranslation", "SPACE_PLUGIN", "id", "hasAttention", "isAncestor", "isRelated", "useAttention", "isAttended", "graph", "useAppGraph", "attended", "useAttended", "startOfAttention", "at", "path", "usePath", "containsAttended", "Option", "isSome", "value", "includes", "connectedToEdge", "CONNECTED", "edgeSyncEnabled", "internal", "data", "edgeReplication", "EdgeReplicationSetting", "ENABLED", "syncState", "useSpaceSyncState", "syncing", "missingOnLocal", "React", "Tooltip", "Trigger", "asChild", "content", "side", "AttentionGlyph", "classNames", "React", "useEffect", "useState", "StatusBar", "useClient", "getSyncSummary", "useSyncState", "Icon", "useTranslation", "Context", "createClientSaveTracker", "client", "cb", "CleanupFns", "state", "install", "spaces", "space", "id", "createSpaceSaveTracker", "s", "Object", "values", "some", "subscribe", "get", "unsubscribe", "ctx", "waitUntilReady", "then", "disposed", "hasUnsavedChanges", "lastFlushPromise", "db", "saveStateChanged", "on", "unsavedDocuments", "length", "debounce", "undefined", "flushPromise", "flush", "dispose", "getStatus", "offline", "saved", "needsToUpload", "needsToDownload", "getIcon", "status", "SYNC_STALLED_TIMEOUT", "SyncStatus", "client", "useClient", "state", "useSyncState", "saved", "setSaved", "useState", "useEffect", "createClientSaveTracker", "React", "SyncStatusIndicator", "t", "useTranslation", "SPACE_PLUGIN", "summary", "getSyncSummary", "offline", "Object", "values", "length", "needsToUpload", "differentDocuments", "missingOnRemote", "needsToDownload", "missingOnLocal", "status", "getStatus", "classNames", "setClassNames", "undefined", "setTimeout", "clearTimeout", "title", "icon", "Icon", "getIcon", "size", "StatusBar", "Item", "React", "useCallback", "useMemo", "createIntent", "useIntentDispatcher", "Type", "invariant", "useClient", "Filter", "getSpace", "useQuery", "useSchema", "ViewEditor", "NativeViewEditor", "DataType", "ViewEditor", "view", "dispatchPromise", "dispatch", "useIntentDispatcher", "client", "useClient", "space", "getSpace", "schema", "useSchema", "query", "typename", "views", "useQuery", "Filter", "type", "DataType", "View", "currentTypename", "useMemo", "handleUpdateTypename", "useCallback", "invariant", "Type", "isMutable", "matchingViews", "filter", "updateTypename", "handleDelete", "fieldId", "createIntent", "SpaceAction", "DeleteField", "React", "NativeViewEditor", "registry", "db", "schemaRegistry", "onTypenameChanged", "undefined", "onDelete", "outerSpacing", "lazy", "CollectionMain", "lazy", "ObjectDetailsPanel"]
7
- }
@@ -1,7 +0,0 @@
1
- {
2
- "version": 3,
3
- "sources": ["../../../src/util.tsx"],
4
- "sourcesContent": ["//\n// Copyright 2023 DXOS.org\n//\n\nimport { Rx } from '@effect-rx/rx-react';\nimport { pipe } from 'effect';\n\nimport { chain, createIntent, LayoutAction, type PromiseIntentDispatcher } from '@dxos/app-framework';\nimport { Obj, Ref, Type } from '@dxos/echo';\nimport { type AnyEchoObject, EXPANDO_TYPENAME } from '@dxos/echo-schema';\nimport { invariant } from '@dxos/invariant';\nimport { Migrations } from '@dxos/migrations';\nimport {\n ACTION_GROUP_TYPE,\n ACTION_TYPE,\n type ReadableGraph,\n type ActionData,\n type InvokeParams,\n type Node,\n type NodeArg,\n isGraphNode,\n} from '@dxos/plugin-graph';\nimport { fullyQualifiedId, getSpace, type QueryResult, SpaceState, type Space, isSpace } from '@dxos/react-client/echo';\nimport { ATTENDABLE_PATH_SEPARATOR } from '@dxos/react-ui-attention';\nimport { type TreeData } from '@dxos/react-ui-list';\nimport { DataType } from '@dxos/schema';\n\nimport { SPACE_PLUGIN } from './meta';\nimport { SpaceAction, SPACE_TYPE, type ObjectForm } from './types';\n\nexport const SPACES = `${SPACE_PLUGIN}-spaces`;\nexport const COMPOSER_SPACE_LOCK = 'dxos.org/plugin/space/lock';\n// TODO(wittjosiah): Remove.\nexport const SHARED = 'shared-spaces';\n\n/**\n * Convert a query result to an Rx value of the objects.\n */\nexport const rxFromQuery = <T extends AnyEchoObject>(query: QueryResult<T>): Rx.Rx<T[]> => {\n return Rx.make((get) => {\n const unsubscribe = query.subscribe((result) => {\n get.setSelf(result.objects);\n });\n\n get.addFinalizer(() => unsubscribe());\n return query.objects;\n });\n};\n\n// TODO(wittjosiah): Factor out? Expose via capability?\nexport const getSpaceDisplayName = (\n space: Space,\n { personal, namesCache = {} }: { personal?: boolean; namesCache?: Record<string, string> } = {},\n): string | [string, { ns: string }] => {\n return space.state.get() === SpaceState.SPACE_READY && (space.properties.name?.length ?? 0) > 0\n ? space.properties.name\n : namesCache[space.id]\n ? namesCache[space.id]\n : personal\n ? ['personal space label', { ns: SPACE_PLUGIN }]\n : ['unnamed space label', { ns: SPACE_PLUGIN }];\n};\n\nconst getCollectionGraphNodePartials = ({\n collection,\n space,\n resolve,\n}: {\n collection: DataType.Collection;\n space: Space;\n resolve: (typename: string) => Record<string, any>;\n}) => {\n return {\n acceptPersistenceClass: new Set(['echo']),\n acceptPersistenceKey: new Set([space.id]),\n role: 'branch',\n onRearrangeChildren: (nextOrder: unknown[]) => {\n // Change on disk.\n collection.objects = nextOrder.filter(Obj.isObject).map(Ref.make);\n },\n onTransferStart: (child: Node<Obj.Any>, index?: number) => {\n // TODO(wittjosiah): Support transfer between spaces.\n // const childSpace = getSpace(child.data);\n // if (space && childSpace && !childSpace.key.equals(space.key)) {\n // // Create clone of child and add to destination space.\n // const newObject = clone(child.data, {\n // // TODO(wittjosiah): This needs to be generalized and not hardcoded here.\n // additional: [\n // child.data.content,\n // ...(child.data.objects ?? []),\n // ...(child.data.objects ?? []).map((object: TypedObject) => object.content),\n // ],\n // });\n // space.db.add(newObject);\n // collection.objects.push(newObject);\n // } else {\n\n // Add child to destination collection.\n // TODO(dmaretskyi): Compare by id.\n if (!collection.objects.find((object) => object.target === child.data)) {\n if (typeof index !== 'undefined') {\n collection.objects.splice(index, 0, Ref.make(child.data));\n } else {\n collection.objects.push(Ref.make(child.data));\n }\n }\n\n // }\n },\n onTransferEnd: (child: Node<Obj.Any>, destination: Node) => {\n // Remove child from origin collection.\n const index = collection.objects.findIndex((object) => object.target === child.data);\n if (index > -1) {\n collection.objects.splice(index, 1);\n }\n\n // TODO(wittjosiah): Support transfer between spaces.\n // const childSpace = getSpace(child.data);\n // const destinationSpace =\n // destination.data instanceof SpaceProxy ? destination.data : getSpace(destination.data);\n // if (destinationSpace && childSpace && !childSpace.key.equals(destinationSpace.key)) {\n // // Mark child as deleted in origin space.\n // childSpace.db.remove(child.data);\n // }\n },\n onCopy: async (child: Node<Obj.Any>, index?: number) => {\n // Create clone of child and add to destination space.\n const newObject = await cloneObject(child.data, resolve, space);\n space.db.add(newObject);\n if (typeof index !== 'undefined') {\n collection.objects.splice(index, 0, Ref.make(newObject));\n } else {\n collection.objects.push(Ref.make(newObject));\n }\n },\n };\n};\n\nconst getQueryCollectionNodePartials = ({\n collection,\n space,\n resolve,\n}: {\n collection: DataType.QueryCollection;\n space: Space;\n resolve: (typename: string) => Record<string, any>;\n}) => {\n return {\n icon: collection.query.typename && resolve(collection.query.typename)?.icon,\n acceptPersistenceClass: new Set(['echo']),\n acceptPersistenceKey: new Set([space.id]),\n role: 'branch',\n canDrop: (source: TreeData) => {\n return (\n isGraphNode(source.item) &&\n Obj.isObject(source.item.data) &&\n Obj.getTypename(source.item.data) === collection.query.typename\n );\n },\n onTransferStart: (child: Node<Obj.Any>, index?: number) => {\n // No-op. Objects are moved into query collections by being removed from their original collection.\n },\n onTransferEnd: (child: Node<Obj.Any>, destination: Node) => {\n // No-op. Objects are moved out of query collections by being added to another collection.\n },\n };\n};\n\nconst getSchemaGraphNodePartials = () => {\n return {\n role: 'branch',\n canDrop: () => false,\n };\n};\n\nconst getViewGraphNodePartials = ({\n view,\n resolve,\n}: {\n view: DataType.View;\n resolve: (typename: string) => Record<string, any>;\n}) => {\n const presentation = view.presentation.target;\n const typename = presentation ? Obj.getTypename(presentation) : undefined;\n const metadata = typename ? resolve(typename) : {};\n\n return {\n label: view.name || ['object name placeholder', { ns: typename, default: 'New view' }],\n icon: metadata.icon,\n canDrop: () => false,\n };\n};\n\nconst checkPendingMigration = (space: Space) => {\n return (\n space.state.get() === SpaceState.SPACE_REQUIRES_MIGRATION ||\n (space.state.get() === SpaceState.SPACE_READY &&\n !!Migrations.versionProperty &&\n space.properties[Migrations.versionProperty] !== Migrations.targetVersion)\n );\n};\n\nexport const constructSpaceNode = ({\n space,\n navigable = false,\n personal,\n namesCache,\n resolve,\n}: {\n space: Space;\n navigable?: boolean;\n personal?: boolean;\n namesCache?: Record<string, string>;\n resolve: (typename: string) => Record<string, any>;\n}) => {\n const hasPendingMigration = checkPendingMigration(space);\n const collection =\n space.state.get() === SpaceState.SPACE_READY && space.properties[DataType.Collection.typename]?.target;\n const partials =\n space.state.get() === SpaceState.SPACE_READY && Obj.instanceOf(DataType.Collection, collection)\n ? getCollectionGraphNodePartials({ collection, space, resolve })\n : {};\n\n return {\n id: space.id,\n type: SPACE_TYPE,\n cacheable: ['label', 'icon', 'role'],\n data: space,\n properties: {\n ...partials,\n label: getSpaceDisplayName(space, { personal, namesCache }),\n description: space.state.get() === SpaceState.SPACE_READY && space.properties.description,\n hue: space.state.get() === SpaceState.SPACE_READY && space.properties.hue,\n icon:\n space.state.get() === SpaceState.SPACE_READY && space.properties.icon\n ? `ph--${space.properties.icon}--regular`\n : undefined,\n disabled: !navigable || space.state.get() !== SpaceState.SPACE_READY || hasPendingMigration,\n testId: 'spacePlugin.space',\n canDrop: (source: TreeData) => {\n // TODO(wittjosiah): Find a way to only allow space as source for rearranging.\n return Obj.isObject(source.item.data) || isSpace(source.item.data);\n },\n },\n nodes: [\n {\n id: `settings${ATTENDABLE_PATH_SEPARATOR}${space.id}`,\n type: `${SPACE_PLUGIN}/settings`,\n data: null,\n properties: {\n label: ['settings panel label', { ns: SPACE_PLUGIN }],\n icon: 'ph--faders--regular',\n disposition: 'alternate-tree',\n },\n nodes: [\n {\n id: `properties-settings${ATTENDABLE_PATH_SEPARATOR}${space.id}`,\n type: `${SPACE_PLUGIN}/properties`,\n data: `${SPACE_PLUGIN}/properties`,\n properties: {\n label: ['space settings properties label', { ns: SPACE_PLUGIN }],\n icon: 'ph--sliders--regular',\n position: 'hoist',\n },\n },\n {\n id: `members-settings${ATTENDABLE_PATH_SEPARATOR}${space.id}`,\n type: `${SPACE_PLUGIN}/members`,\n data: `${SPACE_PLUGIN}/members`,\n properties: {\n label: ['members panel label', { ns: SPACE_PLUGIN }],\n icon: 'ph--users--regular',\n position: 'hoist',\n },\n },\n {\n id: `schema-settings${ATTENDABLE_PATH_SEPARATOR}${space.id}`,\n type: `${SPACE_PLUGIN}/schema`,\n data: `${SPACE_PLUGIN}/schema`,\n properties: {\n label: ['space settings schema label', { ns: SPACE_PLUGIN }],\n icon: 'ph--shapes--regular',\n },\n },\n ],\n },\n ],\n };\n};\n\nexport const constructSpaceActions = ({\n space,\n dispatch,\n personal,\n migrating,\n}: {\n space: Space;\n dispatch: PromiseIntentDispatcher;\n personal?: boolean;\n migrating?: boolean;\n}) => {\n const state = space.state.get();\n const hasPendingMigration = checkPendingMigration(space);\n const getId = (id: string) => `${id}/${space.id}`;\n const actions: NodeArg<ActionData>[] = [];\n\n if (hasPendingMigration) {\n actions.push({\n id: getId(SpaceAction.Migrate._tag),\n type: ACTION_GROUP_TYPE,\n data: async () => {\n await dispatch(createIntent(SpaceAction.Migrate, { space }));\n },\n properties: {\n label: ['migrate space label', { ns: SPACE_PLUGIN }],\n icon: 'ph--database--regular',\n disposition: 'list-item-primary',\n disabled: migrating || Migrations.running(space),\n },\n });\n }\n\n if (state === SpaceState.SPACE_READY && !hasPendingMigration) {\n actions.push(\n {\n id: getId(SpaceAction.OpenCreateObject._tag),\n type: ACTION_TYPE,\n data: async () => {\n await dispatch(createIntent(SpaceAction.OpenCreateObject, { target: space }));\n },\n properties: {\n label: ['create object in space label', { ns: SPACE_PLUGIN }],\n icon: 'ph--plus--regular',\n disposition: 'item',\n testId: 'spacePlugin.createObject',\n },\n },\n {\n id: getId(SpaceAction.Rename._tag),\n type: ACTION_TYPE,\n data: async (params?: InvokeParams) => {\n await dispatch(createIntent(SpaceAction.Rename, { space, caller: params?.caller }));\n },\n properties: {\n label: ['rename space label', { ns: SPACE_PLUGIN }],\n icon: 'ph--pencil-simple-line--regular',\n keyBinding: {\n macos: 'shift+F6',\n windows: 'shift+F6',\n },\n },\n },\n );\n }\n\n return actions;\n};\n\nexport const createStaticSchemaNode = ({ schema, space }: { schema: Type.Obj.Any; space: Space }) => {\n return {\n id: `${space.id}/${Type.getTypename(schema)}`,\n type: `${SPACE_PLUGIN}/static-schema`,\n data: schema,\n properties: {\n label: ['typename label', { ns: Type.getTypename(schema), default: Type.getTypename(schema) }],\n icon: 'ph--database--regular',\n role: 'branch',\n canDrop: () => false,\n space,\n },\n };\n};\n\nexport const createStaticSchemaActions = ({\n schema,\n space,\n deletable,\n}: {\n schema: Type.Obj.Any;\n space: Space;\n deletable: boolean;\n}) => {\n const getId = (id: string) => `${space.id}/${Type.getTypename(schema)}/${id}`;\n\n const actions: NodeArg<ActionData>[] = [\n {\n id: getId(SpaceAction.RenameObject._tag),\n type: ACTION_TYPE,\n data: async (params?: InvokeParams) => {\n throw new Error('Not implemented');\n },\n properties: {\n label: ['rename object label', { ns: Type.getTypename(DataType.StoredSchema) }],\n icon: 'ph--pencil-simple-line--regular',\n disabled: true,\n disposition: 'list-item',\n testId: 'spacePlugin.renameObject',\n },\n },\n {\n id: getId(SpaceAction.RemoveObjects._tag),\n type: ACTION_TYPE,\n data: async () => {\n const index = space.properties.staticRecords.findIndex(\n (typename: string) => typename === Type.getTypename(schema),\n );\n if (index > -1) {\n space.properties.staticRecords.splice(index, 1);\n }\n },\n properties: {\n label: ['delete object label', { ns: Type.getTypename(DataType.StoredSchema) }],\n icon: 'ph--trash--regular',\n disposition: 'list-item',\n disabled: !deletable,\n testId: 'spacePlugin.deleteObject',\n },\n },\n ];\n\n return actions;\n};\n\nexport const createObjectNode = ({\n space,\n object,\n droppable = true,\n navigable = false,\n resolve,\n}: {\n space: Space;\n object: Obj.Any;\n droppable?: boolean;\n navigable?: boolean;\n resolve: (typename: string) => Record<string, any>;\n}) => {\n const type = Obj.getTypename(object);\n if (!type) {\n return undefined;\n }\n\n const metadata = resolve(type);\n const partials = Obj.instanceOf(DataType.Collection, object)\n ? getCollectionGraphNodePartials({ collection: object, space, resolve })\n : Obj.instanceOf(DataType.QueryCollection, object)\n ? getQueryCollectionNodePartials({ collection: object, space, resolve })\n : Obj.instanceOf(DataType.StoredSchema, object)\n ? getSchemaGraphNodePartials()\n : Obj.instanceOf(DataType.View, object)\n ? getViewGraphNodePartials({ view: object, resolve })\n : metadata.graphProps;\n\n const label = Obj.getLabel(object) ||\n // TODO(wittjosiah): Remove metadata labels.\n metadata.label?.(object) || ['object name placeholder', { ns: type, default: 'New item' }];\n\n return {\n id: fullyQualifiedId(object),\n type,\n cacheable: ['label', 'icon', 'role'],\n data: object,\n properties: {\n label,\n icon: metadata.icon ?? 'ph--placeholder--regular',\n testId: 'spacePlugin.object',\n persistenceClass: 'echo',\n persistenceKey: space?.id,\n canDrop: (source: TreeData) => {\n return droppable && isGraphNode(source.item) && Obj.isObject(source.item.data);\n },\n ...partials,\n },\n };\n};\n\nexport const constructObjectActions = ({\n object,\n graph,\n dispatch,\n objectForms,\n deletable = true,\n navigable = false,\n}: {\n object: Obj.Any;\n graph: ReadableGraph;\n dispatch: PromiseIntentDispatcher;\n objectForms: ObjectForm<any>[];\n deletable?: boolean;\n navigable?: boolean;\n}) => {\n const space = getSpace(object);\n invariant(space, 'Space not found');\n const typename = Obj.getTypename(object);\n invariant(typename, 'Object has no typename');\n\n const getId = (id: string) => `${id}/${fullyQualifiedId(object)}`;\n\n const queryCollection = Obj.instanceOf(DataType.QueryCollection, object) ? object : undefined;\n const matchingObjectForm = queryCollection\n ? objectForms.find((form) => Type.getTypename(form.objectSchema) === queryCollection.query.typename)\n : undefined;\n\n const actions: NodeArg<ActionData>[] = [\n ...(Obj.instanceOf(DataType.Collection, object)\n ? [\n {\n id: getId(SpaceAction.OpenCreateObject._tag),\n type: ACTION_TYPE,\n data: async () => {\n await dispatch(createIntent(SpaceAction.OpenCreateObject, { target: object }));\n },\n properties: {\n label: ['create object in collection label', { ns: SPACE_PLUGIN }],\n icon: 'ph--plus--regular',\n disposition: 'list-item-primary',\n testId: 'spacePlugin.createObject',\n },\n },\n ]\n : []),\n ...(matchingObjectForm\n ? [\n {\n id: getId(SpaceAction.OpenCreateObject._tag),\n type: ACTION_TYPE,\n data: async () => {\n if (matchingObjectForm.formSchema) {\n await dispatch(\n createIntent(SpaceAction.OpenCreateObject, {\n target: space,\n typename: queryCollection?.query.typename,\n }),\n );\n } else {\n await dispatch(\n pipe(\n matchingObjectForm.getIntent({}, { space }),\n chain(SpaceAction.AddObject, { target: space, hidden: true }),\n chain(LayoutAction.Open, { part: 'main' }),\n ),\n );\n }\n },\n properties: {\n label: ['create object in smart collection label', { ns: SPACE_PLUGIN }],\n icon: 'ph--plus--regular',\n disposition: 'list-item-primary',\n testId: 'spacePlugin.createObject',\n },\n },\n ]\n : []),\n {\n id: getId(SpaceAction.RenameObject._tag),\n type: ACTION_TYPE,\n data: async (params?: InvokeParams) => {\n await dispatch(createIntent(SpaceAction.RenameObject, { object, caller: params?.caller }));\n },\n properties: {\n label: ['rename object label', { ns: typename }],\n icon: 'ph--pencil-simple-line--regular',\n disposition: 'list-item',\n // TODO(wittjosiah): Not working.\n // keyBinding: {\n // macos: 'shift+F6',\n // },\n testId: 'spacePlugin.renameObject',\n },\n },\n {\n id: getId(SpaceAction.RemoveObjects._tag),\n type: ACTION_TYPE,\n data: async () => {\n const collection = graph\n .getConnections(fullyQualifiedId(object), 'inbound')\n .find(({ data }) => Obj.instanceOf(DataType.Collection, data))?.data;\n await dispatch(createIntent(SpaceAction.RemoveObjects, { objects: [object], target: collection }));\n },\n properties: {\n label: ['delete object label', { ns: typename }],\n icon: 'ph--trash--regular',\n disposition: 'list-item',\n disabled: !deletable,\n // TODO(wittjosiah): This is a browser shortcut.\n // keyBinding: object instanceof CollectionType ? undefined : 'shift+meta+Backspace',\n testId: 'spacePlugin.deleteObject',\n },\n },\n ...(navigable ||\n (!Obj.instanceOf(DataType.Collection, object) &&\n !Obj.instanceOf(DataType.QueryCollection, object) &&\n !Obj.instanceOf(DataType.StoredSchema, object))\n ? [\n {\n id: getId('copy-link'),\n type: ACTION_TYPE,\n data: async () => {\n const url = `${window.location.origin}/${space.id}/${fullyQualifiedId(object)}`;\n await navigator.clipboard.writeText(url);\n },\n properties: {\n label: ['copy link label', { ns: SPACE_PLUGIN }],\n icon: 'ph--link--regular',\n disposition: 'list-item',\n testId: 'spacePlugin.copyLink',\n },\n },\n ]\n : []),\n // TODO(wittjosiah): Factor out and apply to all nodes.\n {\n id: getId(LayoutAction.Expose._tag),\n type: ACTION_TYPE,\n data: async () => {\n await dispatch(createIntent(LayoutAction.Expose, { part: 'navigation', subject: fullyQualifiedId(object) }));\n },\n properties: {\n label: ['expose object label', { ns: SPACE_PLUGIN }],\n icon: 'ph--eye--regular',\n disposition: 'heading-list-item',\n testId: 'spacePlugin.exposeObject',\n },\n },\n ];\n\n return actions;\n};\n\n/**\n * @deprecated This is a temporary solution.\n */\nexport const getNestedObjects = async (\n object: Obj.Any,\n resolve: (typename: string) => Record<string, any>,\n): Promise<Obj.Any[]> => {\n const type = Obj.getTypename(object);\n if (!type) {\n return [];\n }\n\n const metadata = resolve(type);\n const loadReferences = metadata?.loadReferences;\n if (typeof loadReferences !== 'function') {\n return [];\n }\n\n const objects: Obj.Any[] = await loadReferences(object);\n const nested = await Promise.all(objects.map((object) => getNestedObjects(object, resolve)));\n return [...objects, ...nested.flat()];\n};\n\n/**\n * @deprecated Workaround for ECHO not supporting clone.\n */\n// TODO(burdon): Remove.\nexport const cloneObject = async (\n object: Type.Expando,\n resolve: (typename: string) => Record<string, any>,\n newSpace: Space,\n): Promise<Type.Expando> => {\n const schema = Obj.getSchema(object);\n const typename = schema ? (Type.getTypename(schema) ?? EXPANDO_TYPENAME) : EXPANDO_TYPENAME;\n const metadata = resolve(typename);\n const serializer = metadata.serializer;\n invariant(serializer, `No serializer for type: ${typename}`);\n const content = await serializer.serialize({ object });\n return serializer.deserialize({ content, space: newSpace, newId: true });\n};\n"],
5
- "mappings": "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",
6
- "names": ["Rx", "pipe", "chain", "createIntent", "LayoutAction", "Obj", "Ref", "Type", "EXPANDO_TYPENAME", "invariant", "Migrations", "ACTION_GROUP_TYPE", "ACTION_TYPE", "isGraphNode", "fullyQualifiedId", "getSpace", "SpaceState", "isSpace", "ATTENDABLE_PATH_SEPARATOR", "DataType", "SPACES", "SPACE_PLUGIN", "COMPOSER_SPACE_LOCK", "SHARED", "rxFromQuery", "query", "Rx", "make", "get", "unsubscribe", "subscribe", "result", "setSelf", "objects", "addFinalizer", "getSpaceDisplayName", "space", "personal", "namesCache", "state", "SpaceState", "SPACE_READY", "properties", "name", "length", "id", "ns", "getCollectionGraphNodePartials", "collection", "resolve", "acceptPersistenceClass", "Set", "acceptPersistenceKey", "role", "onRearrangeChildren", "nextOrder", "filter", "Obj", "isObject", "map", "Ref", "onTransferStart", "child", "index", "find", "object", "target", "data", "splice", "push", "onTransferEnd", "destination", "findIndex", "onCopy", "newObject", "cloneObject", "db", "add", "getQueryCollectionNodePartials", "icon", "typename", "canDrop", "source", "isGraphNode", "item", "getTypename", "getSchemaGraphNodePartials", "getViewGraphNodePartials", "view", "presentation", "undefined", "metadata", "label", "default", "checkPendingMigration", "SPACE_REQUIRES_MIGRATION", "Migrations", "versionProperty", "targetVersion", "constructSpaceNode", "navigable", "hasPendingMigration", "DataType", "Collection", "partials", "instanceOf", "type", "SPACE_TYPE", "cacheable", "description", "hue", "disabled", "testId", "isSpace", "nodes", "ATTENDABLE_PATH_SEPARATOR", "disposition", "position", "constructSpaceActions", "dispatch", "migrating", "getId", "actions", "SpaceAction", "Migrate", "_tag", "ACTION_GROUP_TYPE", "createIntent", "running", "OpenCreateObject", "ACTION_TYPE", "Rename", "params", "caller", "keyBinding", "macos", "windows", "createStaticSchemaNode", "schema", "Type", "createStaticSchemaActions", "deletable", "RenameObject", "Error", "StoredSchema", "RemoveObjects", "staticRecords", "createObjectNode", "droppable", "QueryCollection", "View", "graphProps", "getLabel", "fullyQualifiedId", "persistenceClass", "persistenceKey", "constructObjectActions", "graph", "objectForms", "getSpace", "invariant", "queryCollection", "matchingObjectForm", "form", "objectSchema", "formSchema", "pipe", "getIntent", "chain", "AddObject", "hidden", "LayoutAction", "Open", "part", "getConnections", "url", "window", "location", "origin", "navigator", "clipboard", "writeText", "Expose", "subject", "getNestedObjects", "loadReferences", "nested", "Promise", "all", "flat", "newSpace", "getSchema", "EXPANDO_TYPENAME", "serializer", "content", "serialize", "deserialize", "newId"]
7
- }
@@ -1,20 +0,0 @@
1
- import { createRequire } from 'node:module';const require = createRequire(import.meta.url);
2
- import {
3
- SPACE_PLUGIN
4
- } from "./chunk-HWNG4MEU.mjs";
5
-
6
- // src/events.ts
7
- import { defineEvent, Events } from "@dxos/app-framework";
8
- (function(SpaceEvents2) {
9
- SpaceEvents2.StateReady = Events.createStateEvent(`${SPACE_PLUGIN}/event/state-ready`);
10
- SpaceEvents2.SetupSettingsPanel = defineEvent(`${SPACE_PLUGIN}/event/setup-settings-panel`);
11
- SpaceEvents2.DefaultSpaceReady = defineEvent(`${SPACE_PLUGIN}/event/default-space-ready`);
12
- SpaceEvents2.SpaceCreated = defineEvent(`${SPACE_PLUGIN}/event/space-created`);
13
- SpaceEvents2.SchemaAdded = defineEvent(`${SPACE_PLUGIN}/event/schema-added`);
14
- })(SpaceEvents || (SpaceEvents = {}));
15
- var SpaceEvents;
16
-
17
- export {
18
- SpaceEvents
19
- };
20
- //# sourceMappingURL=chunk-5HHYE264.mjs.map
@@ -1,7 +0,0 @@
1
- {
2
- "version": 3,
3
- "sources": ["../../../src/events.ts"],
4
- "sourcesContent": ["//\n// Copyright 2025 DXOS.org\n//\n\nimport { defineEvent, Events } from '@dxos/app-framework';\n\nimport { SPACE_PLUGIN } from './meta';\n\nexport namespace SpaceEvents {\n export const StateReady = Events.createStateEvent(`${SPACE_PLUGIN}/event/state-ready`);\n export const SetupSettingsPanel = defineEvent(`${SPACE_PLUGIN}/event/setup-settings-panel`);\n export const DefaultSpaceReady = defineEvent(`${SPACE_PLUGIN}/event/default-space-ready`);\n export const SpaceCreated = defineEvent(`${SPACE_PLUGIN}/event/space-created`);\n export const SchemaAdded = defineEvent(`${SPACE_PLUGIN}/event/schema-added`);\n}\n"],
5
- "mappings": ";;;;;;AAIA,SAASA,aAAaC,cAAc;UAInBC,cAAAA;eACFC,aAAaC,OAAOC,iBAAiB,GAAGC,YAAAA,oBAAgC;eACxEC,qBAAqBC,YAAY,GAAGF,YAAAA,6BAAyC;eAC7EG,oBAAoBD,YAAY,GAAGF,YAAAA,4BAAwC;eAC3EI,eAAeF,YAAY,GAAGF,YAAAA,sBAAkC;eAChEK,cAAcH,YAAY,GAAGF,YAAAA,qBAAiC;AAC7E,GANiBJ,gBAAAA,cAAAA,CAAAA,EAAAA;;",
6
- "names": ["defineEvent", "Events", "SpaceEvents", "StateReady", "Events", "createStateEvent", "SPACE_PLUGIN", "SetupSettingsPanel", "defineEvent", "DefaultSpaceReady", "SpaceCreated", "SchemaAdded"]
7
- }
@@ -1,21 +0,0 @@
1
- import { createRequire } from 'node:module';const require = createRequire(import.meta.url);
2
- import {
3
- SPACE_PLUGIN
4
- } from "./chunk-HWNG4MEU.mjs";
5
-
6
- // src/capabilities/capabilities.ts
7
- import { defineCapability } from "@dxos/app-framework";
8
- (function(SpaceCapabilities2) {
9
- SpaceCapabilities2.State = defineCapability(`${SPACE_PLUGIN}/capability/state`);
10
- SpaceCapabilities2.MutableState = defineCapability(`${SPACE_PLUGIN}/capability/state`);
11
- SpaceCapabilities2.SettingsSection = defineCapability(`${SPACE_PLUGIN}/capability/settings-section`);
12
- SpaceCapabilities2.OnSpaceCreated = defineCapability(`${SPACE_PLUGIN}/capability/on-space-created`);
13
- SpaceCapabilities2.OnSchemaAdded = defineCapability(`${SPACE_PLUGIN}/capability/on-schema-added`);
14
- SpaceCapabilities2.ObjectForm = defineCapability(`${SPACE_PLUGIN}/capability/object-form`);
15
- })(SpaceCapabilities || (SpaceCapabilities = {}));
16
- var SpaceCapabilities;
17
-
18
- export {
19
- SpaceCapabilities
20
- };
21
- //# sourceMappingURL=chunk-5T3ZH23B.mjs.map
@@ -1,7 +0,0 @@
1
- {
2
- "version": 3,
3
- "sources": ["../../../src/capabilities/capabilities.ts"],
4
- "sourcesContent": ["//\n// Copyright 2025 DXOS.org\n//\n\nimport { type Schema } from 'effect';\n\nimport { type AnyIntentChain, defineCapability, type Label } from '@dxos/app-framework';\nimport { type Space } from '@dxos/react-client/echo';\nimport { type DataType } from '@dxos/schema';\nimport { type Position, type DeepReadonly } from '@dxos/util';\n\nimport { SPACE_PLUGIN } from '../meta';\nimport { type ObjectForm, type PluginState } from '../types';\n\nexport namespace SpaceCapabilities {\n export const State = defineCapability<DeepReadonly<PluginState>>(`${SPACE_PLUGIN}/capability/state`);\n export const MutableState = defineCapability<PluginState>(`${SPACE_PLUGIN}/capability/state`);\n\n export type SettingsSection = { id: string; label: Label; position?: Position };\n export const SettingsSection = defineCapability<SettingsSection>(`${SPACE_PLUGIN}/capability/settings-section`);\n\n export type OnSpaceCreated = (params: { space: Space; rootCollection: DataType.Collection }) => AnyIntentChain;\n export const OnSpaceCreated = defineCapability<OnSpaceCreated>(`${SPACE_PLUGIN}/capability/on-space-created`);\n\n export type OnSchemaAdded = (params: { space: Space; schema: Schema.Schema.AnyNoContext }) => AnyIntentChain;\n export const OnSchemaAdded = defineCapability<OnSchemaAdded>(`${SPACE_PLUGIN}/capability/on-schema-added`);\n\n export const ObjectForm = defineCapability<ObjectForm<any>>(`${SPACE_PLUGIN}/capability/object-form`);\n}\n"],
5
- "mappings": ";;;;;;AAMA,SAA8BA,wBAAoC;UAQjDC,oBAAAA;qBACFC,QAAQC,iBAA4C,GAAGC,YAAAA,mBAA+B;qBACtFC,eAAeF,iBAA8B,GAAGC,YAAAA,mBAA+B;qBAG/EE,kBAAkBH,iBAAkC,GAAGC,YAAAA,8BAA0C;qBAGjGG,iBAAiBJ,iBAAiC,GAAGC,YAAAA,8BAA0C;qBAG/FI,gBAAgBL,iBAAgC,GAAGC,YAAAA,6BAAyC;qBAE5FK,aAAaN,iBAAkC,GAAGC,YAAAA,yBAAqC;AACtG,GAdiBH,sBAAAA,oBAAAA,CAAAA,EAAAA;;",
6
- "names": ["defineCapability", "SpaceCapabilities", "State", "defineCapability", "SPACE_PLUGIN", "MutableState", "SettingsSection", "OnSpaceCreated", "OnSchemaAdded", "ObjectForm"]
7
- }
@@ -1,15 +0,0 @@
1
- import { createRequire } from 'node:module';const require = createRequire(import.meta.url);
2
-
3
- // src/meta.ts
4
- var SPACE_PLUGIN = "dxos.org/plugin/space";
5
- var meta = {
6
- id: SPACE_PLUGIN,
7
- name: "Spaces",
8
- icon: "ph--planet--regular"
9
- };
10
-
11
- export {
12
- SPACE_PLUGIN,
13
- meta
14
- };
15
- //# sourceMappingURL=chunk-HWNG4MEU.mjs.map
@@ -1,7 +0,0 @@
1
- {
2
- "version": 3,
3
- "sources": ["../../../src/meta.ts"],
4
- "sourcesContent": ["//\n// Copyright 2023 DXOS.org\n//\n\nimport { type PluginMeta } from '@dxos/app-framework';\n\nexport const SPACE_PLUGIN = 'dxos.org/plugin/space';\n\nexport const meta: PluginMeta = {\n id: SPACE_PLUGIN,\n name: 'Spaces',\n icon: 'ph--planet--regular',\n};\n"],
5
- "mappings": ";;;AAMO,IAAMA,eAAe;AAErB,IAAMC,OAAmB;EAC9BC,IAAIF;EACJG,MAAM;EACNC,MAAM;AACR;",
6
- "names": ["SPACE_PLUGIN", "meta", "id", "name", "icon"]
7
- }