@dxos/plugin-space 0.9.1-main.c7dcc2e112 → 0.9.1-staging.ee54ba693a

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 (308) hide show
  1. package/dist/lib/neutral/{CreateObjectDialog-4VMOUKM7.mjs → CreateObjectDialog-5454N3FJ.mjs} +22 -7
  2. package/dist/lib/neutral/CreateObjectDialog-5454N3FJ.mjs.map +7 -0
  3. package/dist/lib/neutral/DefaultProperties-5SAWQC6I.mjs +58 -0
  4. package/dist/lib/neutral/DefaultProperties-5SAWQC6I.mjs.map +7 -0
  5. package/dist/lib/neutral/{JoinDialog-QZGNRJ4P.mjs → JoinDialog-ATNUCNL2.mjs} +7 -31
  6. package/dist/lib/neutral/JoinDialog-ATNUCNL2.mjs.map +7 -0
  7. package/dist/lib/neutral/{MembersContainer-OWCAMBKS.mjs → MembersContainer-C4ZTP6ZW.mjs} +9 -5
  8. package/dist/lib/neutral/MembersContainer-C4ZTP6ZW.mjs.map +7 -0
  9. package/dist/lib/neutral/{MenuFooter-QCNFUIAO.mjs → MenuFooter-FWE5LFM4.mjs} +3 -3
  10. package/dist/lib/neutral/{RelatedArticle-YRCRBIYU.mjs → RelatedArticle-Z777WVDW.mjs} +1 -2
  11. package/dist/lib/neutral/RelatedArticle-Z777WVDW.mjs.map +7 -0
  12. package/dist/lib/neutral/{RenamePopover-XBZAKNM7.mjs → RenamePopover-AZT2KPOF.mjs} +13 -5
  13. package/dist/lib/neutral/RenamePopover-AZT2KPOF.mjs.map +7 -0
  14. package/dist/lib/neutral/{SchemaContainer-2NK5YB5O.mjs → SchemaContainer-4GJKQBXM.mjs} +8 -4
  15. package/dist/lib/neutral/SchemaContainer-4GJKQBXM.mjs.map +7 -0
  16. package/dist/lib/neutral/{SmallPresenceLive-L4H7WJOA.mjs → SmallPresenceLive-FW3AMEY5.mjs} +2 -2
  17. package/dist/lib/neutral/{SpaceHomeArticle-ZV7EERLS.mjs → SpaceHomeArticle-Y47TLZ72.mjs} +2 -2
  18. package/dist/lib/neutral/{SpaceHomeArticle-ZV7EERLS.mjs.map → SpaceHomeArticle-Y47TLZ72.mjs.map} +1 -1
  19. package/dist/lib/neutral/{SpaceHomeRecent-ZR4LIIUD.mjs → SpaceHomeRecent-S57AO3EV.mjs} +11 -5
  20. package/dist/lib/neutral/{SpaceHomeRecent-ZR4LIIUD.mjs.map → SpaceHomeRecent-S57AO3EV.mjs.map} +3 -3
  21. package/dist/lib/neutral/SpacePlugin.mjs +1 -1
  22. package/dist/lib/neutral/{SpacePresence-PDTEDHDE.mjs → SpacePresence-T37WH43Y.mjs} +2 -2
  23. package/dist/lib/neutral/SpaceSettings-6CZF7GEO.mjs +60 -0
  24. package/dist/lib/neutral/SpaceSettings-6CZF7GEO.mjs.map +7 -0
  25. package/dist/lib/neutral/{SpaceSettingsContainer-QAFQ4LWC.mjs → SpaceSettingsContainer-72CJWELM.mjs} +39 -36
  26. package/dist/lib/neutral/SpaceSettingsContainer-72CJWELM.mjs.map +7 -0
  27. package/dist/lib/neutral/TypeCollectionArticle-W76ADS2G.mjs +143 -0
  28. package/dist/lib/neutral/TypeCollectionArticle-W76ADS2G.mjs.map +7 -0
  29. package/dist/lib/neutral/{add-object-S64XELC3.mjs → add-object-H2N4AOQJ.mjs} +10 -10
  30. package/dist/lib/neutral/add-object-H2N4AOQJ.mjs.map +7 -0
  31. package/dist/lib/neutral/{add-relation-GWSE42BU.mjs → add-relation-BGTLART5.mjs} +3 -3
  32. package/dist/lib/neutral/{add-type-C3KYE6PI.mjs → add-type-JIDLRANR.mjs} +3 -3
  33. package/dist/lib/neutral/{add-type-C3KYE6PI.mjs.map → add-type-JIDLRANR.mjs.map} +1 -1
  34. package/dist/lib/neutral/{app-graph-builder-TMAD2ZTH.mjs → app-graph-builder-7H2KOD4B.mjs} +187 -163
  35. package/dist/lib/neutral/app-graph-builder-7H2KOD4B.mjs.map +7 -0
  36. package/dist/lib/neutral/capabilities/index.mjs +9 -9
  37. package/dist/lib/neutral/capabilities/node.mjs +2 -2
  38. package/dist/lib/neutral/{chunk-PSCIOT7Q.mjs → chunk-52ASDNRA.mjs} +2 -3
  39. package/dist/lib/neutral/{chunk-PSCIOT7Q.mjs.map → chunk-52ASDNRA.mjs.map} +3 -3
  40. package/dist/lib/neutral/{chunk-2RPQHHD7.mjs → chunk-C2ULK22J.mjs} +1 -1
  41. package/dist/lib/neutral/{chunk-DSYEB2UN.mjs → chunk-F5KLUP2P.mjs} +7 -2
  42. package/dist/lib/neutral/chunk-F5KLUP2P.mjs.map +7 -0
  43. package/dist/lib/neutral/{chunk-F2VJ6VBV.mjs → chunk-LMUG6PEJ.mjs} +3 -4
  44. package/dist/lib/neutral/chunk-LMUG6PEJ.mjs.map +7 -0
  45. package/dist/lib/neutral/{chunk-2LTGSUGQ.mjs → chunk-RAAHDTVF.mjs} +8 -4
  46. package/dist/lib/neutral/chunk-RAAHDTVF.mjs.map +7 -0
  47. package/dist/lib/neutral/{chunk-LY6XK5MV.mjs → chunk-SPWAMXNR.mjs} +2 -2
  48. package/dist/lib/neutral/{chunk-LY6XK5MV.mjs.map → chunk-SPWAMXNR.mjs.map} +3 -3
  49. package/dist/lib/neutral/chunk-U5WTDOMV.mjs +8 -0
  50. package/dist/lib/neutral/chunk-V7JALUM3.mjs +9 -0
  51. package/dist/lib/neutral/chunk-V7JALUM3.mjs.map +7 -0
  52. package/dist/lib/neutral/{close-YZHFYPUN.mjs → close-5WEQZRNK.mjs} +3 -3
  53. package/dist/lib/neutral/components/index.mjs +18 -19
  54. package/dist/lib/neutral/components/index.mjs.map +4 -4
  55. package/dist/lib/neutral/constants.mjs +16 -0
  56. package/dist/lib/neutral/constants.mjs.map +7 -0
  57. package/dist/lib/neutral/containers/index.mjs +18 -14
  58. package/dist/lib/neutral/containers/index.mjs.map +3 -3
  59. package/dist/lib/neutral/{create-XKU2W6QC.mjs → create-QZ47FHQU.mjs} +4 -4
  60. package/dist/lib/neutral/{create-XKU2W6QC.mjs.map → create-QZ47FHQU.mjs.map} +3 -3
  61. package/dist/lib/neutral/{create-object-22WUOWZQ.mjs → create-object-ZU6FZW5X.mjs} +1 -6
  62. package/dist/lib/neutral/create-object-ZU6FZW5X.mjs.map +7 -0
  63. package/dist/lib/neutral/{delete-EFM7CAVO.mjs → delete-SPCU2VFM.mjs} +3 -3
  64. package/dist/lib/neutral/{delete-field-ONAPFFO5.mjs → delete-field-TAKJVEAD.mjs} +3 -3
  65. package/dist/lib/neutral/{duplicate-object-OJRPFV5I.mjs → duplicate-object-BUPZOO6S.mjs} +3 -3
  66. package/dist/lib/neutral/{export-space-M5RNVUQX.mjs → export-space-S5SCAL4M.mjs} +3 -3
  67. package/dist/lib/neutral/{get-share-link-FUQBJPSQ.mjs → get-share-link-CLM5IQRL.mjs} +3 -3
  68. package/dist/lib/neutral/{identity-created-QMV4DANW.mjs → identity-created-BEYMLBK4.mjs} +2 -2
  69. package/dist/lib/neutral/{identity-created-QMV4DANW.mjs.map → identity-created-BEYMLBK4.mjs.map} +3 -3
  70. package/dist/lib/neutral/{import-space-L3AUIARM.mjs → import-space-LJQK3KT7.mjs} +3 -3
  71. package/dist/lib/neutral/index.mjs +7 -3
  72. package/dist/lib/neutral/join-FSODYIOC.mjs +54 -0
  73. package/dist/lib/neutral/join-FSODYIOC.mjs.map +7 -0
  74. package/dist/lib/neutral/meta.json +1 -1
  75. package/dist/lib/neutral/{migrate-WPUISBC4.mjs → migrate-WHM6LU7L.mjs} +4 -4
  76. package/dist/lib/neutral/{migrate-WPUISBC4.mjs.map → migrate-WHM6LU7L.mjs.map} +3 -3
  77. package/dist/lib/neutral/{navigation-handler-IKXZGMII.mjs → navigation-handler-ZF7MV2HL.mjs} +16 -10
  78. package/dist/lib/neutral/navigation-handler-ZF7MV2HL.mjs.map +7 -0
  79. package/dist/lib/neutral/{navigation-resolver-VBPGMFCE.mjs → navigation-resolver-KBESOSWU.mjs} +5 -5
  80. package/dist/lib/neutral/navigation-resolver-KBESOSWU.mjs.map +7 -0
  81. package/dist/lib/neutral/{open-RRYULTSY.mjs → open-JCXTL3SK.mjs} +3 -3
  82. package/dist/lib/neutral/{open-create-object-BRUVFZSY.mjs → open-create-object-WAIAU7TA.mjs} +6 -6
  83. package/dist/lib/neutral/{open-create-space-ARLQWW65.mjs → open-create-space-VU47FWPZ.mjs} +6 -6
  84. package/dist/lib/neutral/{open-import-space-65H57JXX.mjs → open-import-space-GUHIEWYB.mjs} +6 -6
  85. package/dist/lib/neutral/{open-members-677P6KD3.mjs → open-members-MLLBHKUU.mjs} +3 -3
  86. package/dist/lib/neutral/{open-settings-PRBSGO6D.mjs → open-settings-DTPZF4U4.mjs} +3 -3
  87. package/dist/lib/neutral/operations/index.mjs +3 -3
  88. package/dist/lib/neutral/plugin.mjs +3 -3
  89. package/dist/lib/neutral/{react-surface-5EQ6X4CL.mjs → react-surface-LRA7GIFN.mjs} +33 -14
  90. package/dist/lib/neutral/react-surface-LRA7GIFN.mjs.map +7 -0
  91. package/dist/lib/neutral/{remove-objects-PWJJI36V.mjs → remove-objects-WEO66EDS.mjs} +3 -3
  92. package/dist/lib/neutral/{rename-4727PKI4.mjs → rename-Q6UNCBIM.mjs} +6 -6
  93. package/dist/lib/neutral/{rename-object-FXUAB5FN.mjs → rename-object-2UCEGU7U.mjs} +6 -6
  94. package/dist/lib/neutral/{restore-field-3ICSIHGA.mjs → restore-field-6CQAFOXY.mjs} +3 -3
  95. package/dist/lib/neutral/{restore-objects-V2BTEWN3.mjs → restore-objects-3VINLP7C.mjs} +3 -3
  96. package/dist/lib/neutral/{share-ZOZPAUGI.mjs → share-A4WPILNF.mjs} +3 -3
  97. package/dist/lib/neutral/{snapshot-ZC5PU55W.mjs → snapshot-HBYMAPA7.mjs} +3 -3
  98. package/dist/lib/neutral/{spaces-ready-EXPCJD4N.mjs → spaces-ready-GWMSU72V.mjs} +4 -4
  99. package/dist/lib/neutral/{spaces-ready-EXPCJD4N.mjs.map → spaces-ready-GWMSU72V.mjs.map} +3 -3
  100. package/dist/lib/neutral/testing.mjs +1 -1
  101. package/dist/lib/neutral/translations.mjs +14 -6
  102. package/dist/lib/neutral/translations.mjs.map +2 -2
  103. package/dist/lib/neutral/types/index.mjs +1 -1
  104. package/dist/lib/neutral/{wait-for-object-WURK2SLQ.mjs → wait-for-object-U6P2NNWY.mjs} +3 -3
  105. package/dist/types/src/capabilities/app-graph-builder/app-graph-builder.d.ts +1 -1
  106. package/dist/types/src/capabilities/app-graph-builder/extensions/collections.d.ts +15 -33
  107. package/dist/types/src/capabilities/app-graph-builder/extensions/collections.d.ts.map +1 -1
  108. package/dist/types/src/capabilities/app-graph-builder/extensions/companions.d.ts.map +1 -1
  109. package/dist/types/src/capabilities/app-graph-builder/extensions/database.d.ts +15 -33
  110. package/dist/types/src/capabilities/app-graph-builder/extensions/database.d.ts.map +1 -1
  111. package/dist/types/src/capabilities/app-graph-builder/extensions/settings.d.ts +3 -2
  112. package/dist/types/src/capabilities/app-graph-builder/extensions/settings.d.ts.map +1 -1
  113. package/dist/types/src/capabilities/app-graph-builder/extensions/shared.d.ts +1 -4
  114. package/dist/types/src/capabilities/app-graph-builder/extensions/shared.d.ts.map +1 -1
  115. package/dist/types/src/capabilities/app-graph-builder/extensions/spaces.d.ts +17 -4
  116. package/dist/types/src/capabilities/app-graph-builder/extensions/spaces.d.ts.map +1 -1
  117. package/dist/types/src/capabilities/create-object.d.ts +1 -33
  118. package/dist/types/src/capabilities/create-object.d.ts.map +1 -1
  119. package/dist/types/src/capabilities/navigation-handler/navigation-handler.d.ts +1 -2
  120. package/dist/types/src/capabilities/navigation-handler/navigation-handler.d.ts.map +1 -1
  121. package/dist/types/src/capabilities/navigation-resolver.d.ts +1 -2
  122. package/dist/types/src/capabilities/navigation-resolver.d.ts.map +1 -1
  123. package/dist/types/src/capabilities/react-root.d.ts +1 -5
  124. package/dist/types/src/capabilities/react-root.d.ts.map +1 -1
  125. package/dist/types/src/capabilities/react-surface.d.ts +1 -1
  126. package/dist/types/src/capabilities/react-surface.d.ts.map +1 -1
  127. package/dist/types/src/capabilities/repair.d.ts +1 -2
  128. package/dist/types/src/capabilities/repair.d.ts.map +1 -1
  129. package/dist/types/src/capabilities/settings.d.ts +1 -3
  130. package/dist/types/src/capabilities/settings.d.ts.map +1 -1
  131. package/dist/types/src/capabilities/spaces-ready.d.ts +1 -1
  132. package/dist/types/src/capabilities/state.d.ts +1 -13
  133. package/dist/types/src/capabilities/state.d.ts.map +1 -1
  134. package/dist/types/src/capabilities/undo-mappings.d.ts +2 -3
  135. package/dist/types/src/capabilities/undo-mappings.d.ts.map +1 -1
  136. package/dist/types/src/components/ForeignKeys/ForeignKeys.d.ts.map +1 -1
  137. package/dist/types/src/components/index.d.ts +2 -2
  138. package/dist/types/src/components/index.d.ts.map +1 -1
  139. package/dist/types/src/containers/CreateObjectDialog/CreateObjectDialog.d.ts.map +1 -1
  140. package/dist/types/src/containers/CreateObjectDialog/CreateObjectDialog.stories.d.ts +122 -52
  141. package/dist/types/src/containers/CreateObjectDialog/CreateObjectDialog.stories.d.ts.map +1 -1
  142. package/dist/types/src/containers/CreateSpaceDialog/CreateSpaceDialog.stories.d.ts +122 -52
  143. package/dist/types/src/containers/CreateSpaceDialog/CreateSpaceDialog.stories.d.ts.map +1 -1
  144. package/dist/types/src/containers/DefaultProperties/DefaultProperties.d.ts +15 -0
  145. package/dist/types/src/containers/DefaultProperties/DefaultProperties.d.ts.map +1 -0
  146. package/dist/types/src/containers/DefaultProperties/index.d.ts +2 -0
  147. package/dist/types/src/containers/DefaultProperties/index.d.ts.map +1 -0
  148. package/dist/types/src/containers/JoinDialog/JoinDialog.d.ts.map +1 -1
  149. package/dist/types/src/containers/JoinDialog/JoinDialog.stories.d.ts +122 -52
  150. package/dist/types/src/containers/JoinDialog/JoinDialog.stories.d.ts.map +1 -1
  151. package/dist/types/src/containers/MembersContainer/MembersContainer.d.ts.map +1 -1
  152. package/dist/types/src/containers/RelatedArticle/RelatedArticle.d.ts.map +1 -1
  153. package/dist/types/src/containers/RenamePopover/RenamePopover.d.ts +5 -1
  154. package/dist/types/src/containers/RenamePopover/RenamePopover.d.ts.map +1 -1
  155. package/dist/types/src/containers/RenamePopover/index.d.ts +1 -1
  156. package/dist/types/src/containers/RenamePopover/index.d.ts.map +1 -1
  157. package/dist/types/src/containers/SchemaContainer/SchemaContainer.d.ts.map +1 -1
  158. package/dist/types/src/containers/SpaceHomeRecent/SpaceHomeRecent.d.ts.map +1 -1
  159. package/dist/types/src/containers/SpacePresence/SpacePresence.d.ts.map +1 -1
  160. package/dist/types/src/containers/SpacePresence/SpacePresence.stories.d.ts +122 -52
  161. package/dist/types/src/containers/SpacePresence/SpacePresence.stories.d.ts.map +1 -1
  162. package/dist/types/src/containers/SpacePresence/index.d.ts +1 -1
  163. package/dist/types/src/containers/SpacePresence/index.d.ts.map +1 -1
  164. package/dist/types/src/containers/SpaceSettings/SpaceSettings.d.ts +11 -0
  165. package/dist/types/src/containers/SpaceSettings/SpaceSettings.d.ts.map +1 -0
  166. package/dist/types/src/{components → containers}/SpaceSettings/SpaceSettings.stories.d.ts +123 -53
  167. package/dist/types/src/{components → containers}/SpaceSettings/SpaceSettings.stories.d.ts.map +1 -1
  168. package/dist/types/src/{components → containers}/SpaceSettings/index.d.ts.map +1 -1
  169. package/dist/types/src/containers/SpaceSettingsContainer/SpaceSettingsContainer.stories.d.ts +122 -52
  170. package/dist/types/src/containers/SpaceSettingsContainer/SpaceSettingsContainer.stories.d.ts.map +1 -1
  171. package/dist/types/src/containers/SyncStatus/SyncStatus.stories.d.ts +122 -52
  172. package/dist/types/src/containers/SyncStatus/SyncStatus.stories.d.ts.map +1 -1
  173. package/dist/types/src/containers/TypeCollectionArticle/TypeCollectionArticle.d.ts +16 -0
  174. package/dist/types/src/containers/TypeCollectionArticle/TypeCollectionArticle.d.ts.map +1 -0
  175. package/dist/types/src/containers/TypeCollectionArticle/TypeCollectionArticle.stories.d.ts +21 -0
  176. package/dist/types/src/containers/TypeCollectionArticle/TypeCollectionArticle.stories.d.ts.map +1 -0
  177. package/dist/types/src/containers/TypeCollectionArticle/index.d.ts +2 -0
  178. package/dist/types/src/containers/TypeCollectionArticle/index.d.ts.map +1 -0
  179. package/dist/types/src/containers/index.d.ts +4 -1
  180. package/dist/types/src/containers/index.d.ts.map +1 -1
  181. package/dist/types/src/errors.d.ts +33 -0
  182. package/dist/types/src/errors.d.ts.map +1 -0
  183. package/dist/types/src/index.d.ts +1 -0
  184. package/dist/types/src/index.d.ts.map +1 -1
  185. package/dist/types/src/meta.d.ts +4 -0
  186. package/dist/types/src/meta.d.ts.map +1 -1
  187. package/dist/types/src/operations/definitions.d.ts +9 -37
  188. package/dist/types/src/operations/definitions.d.ts.map +1 -1
  189. package/dist/types/src/operations/join.d.ts.map +1 -1
  190. package/dist/types/src/translations.d.ts +122 -52
  191. package/dist/types/src/translations.d.ts.map +1 -1
  192. package/dist/types/src/types/Settings.d.ts +3 -1
  193. package/dist/types/src/types/Settings.d.ts.map +1 -1
  194. package/dist/types/src/types/capabilities.d.ts +1 -1
  195. package/dist/types/src/types/capabilities.d.ts.map +1 -1
  196. package/dist/types/src/util.d.ts.map +1 -1
  197. package/dist/types/tsconfig.tsbuildinfo +1 -1
  198. package/package.json +70 -59
  199. package/src/SpacePlugin.ts +3 -3
  200. package/src/capabilities/app-graph-builder/extensions/collections.ts +45 -52
  201. package/src/capabilities/app-graph-builder/extensions/companions.ts +3 -2
  202. package/src/capabilities/app-graph-builder/extensions/database.ts +108 -84
  203. package/src/capabilities/app-graph-builder/extensions/settings.ts +8 -5
  204. package/src/capabilities/app-graph-builder/extensions/shared.test.ts +13 -9
  205. package/src/capabilities/app-graph-builder/extensions/shared.ts +2 -5
  206. package/src/capabilities/app-graph-builder/extensions/spaces.ts +32 -6
  207. package/src/capabilities/create-object.ts +0 -5
  208. package/src/capabilities/identity-created.ts +1 -1
  209. package/src/capabilities/navigation-handler/navigation-handler.ts +14 -4
  210. package/src/capabilities/navigation-resolver.ts +8 -8
  211. package/src/capabilities/react-surface.tsx +39 -13
  212. package/src/capabilities/spaces-ready.ts +1 -1
  213. package/src/components/ForeignKeys/ForeignKeys.tsx +20 -19
  214. package/src/components/index.ts +3 -3
  215. package/src/containers/CreateObjectDialog/CreateObjectDialog.stories.tsx +1 -1
  216. package/src/containers/CreateObjectDialog/CreateObjectDialog.tsx +38 -3
  217. package/src/containers/DefaultProperties/DefaultProperties.tsx +69 -0
  218. package/src/containers/DefaultProperties/index.ts +5 -0
  219. package/src/containers/JoinDialog/JoinDialog.tsx +8 -21
  220. package/src/containers/MembersContainer/MembersContainer.tsx +37 -33
  221. package/src/containers/RelatedArticle/RelatedArticle.tsx +1 -2
  222. package/src/containers/RenamePopover/RenamePopover.tsx +18 -5
  223. package/src/containers/RenamePopover/index.ts +1 -1
  224. package/src/containers/SchemaContainer/SchemaContainer.tsx +21 -17
  225. package/src/containers/SpaceHomeArticle/SpaceHomeArticle.tsx +1 -1
  226. package/src/containers/SpaceHomeRecent/SpaceHomeRecent.tsx +12 -10
  227. package/src/containers/SpacePresence/SpacePresence.tsx +22 -20
  228. package/src/containers/SpacePresence/index.ts +1 -1
  229. package/src/{components → containers}/SpaceSettings/SpaceSettings.stories.tsx +1 -1
  230. package/src/containers/SpaceSettings/SpaceSettings.tsx +75 -0
  231. package/src/containers/SpaceSettingsContainer/SpaceSettingsContainer.tsx +115 -106
  232. package/src/containers/TypeCollectionArticle/TypeCollectionArticle.stories.tsx +116 -0
  233. package/src/containers/TypeCollectionArticle/TypeCollectionArticle.tsx +162 -0
  234. package/src/containers/TypeCollectionArticle/index.ts +5 -0
  235. package/src/containers/index.ts +4 -1
  236. package/src/errors.ts +11 -0
  237. package/src/index.ts +1 -0
  238. package/src/operations/add-object.ts +6 -5
  239. package/src/operations/add-type.ts +1 -1
  240. package/src/operations/create.ts +2 -2
  241. package/src/operations/definitions.ts +1 -2
  242. package/src/operations/join.ts +19 -0
  243. package/src/operations/migrate.ts +1 -1
  244. package/src/translations.ts +15 -6
  245. package/src/types/Settings.ts +10 -1
  246. package/src/types/capabilities.ts +1 -1
  247. package/src/util.ts +0 -1
  248. package/dist/lib/neutral/CreateObjectDialog-4VMOUKM7.mjs.map +0 -7
  249. package/dist/lib/neutral/JoinDialog-QZGNRJ4P.mjs.map +0 -7
  250. package/dist/lib/neutral/MembersContainer-OWCAMBKS.mjs.map +0 -7
  251. package/dist/lib/neutral/ObjectProperties-BF6KGFFC.mjs +0 -33
  252. package/dist/lib/neutral/ObjectProperties-BF6KGFFC.mjs.map +0 -7
  253. package/dist/lib/neutral/RelatedArticle-YRCRBIYU.mjs.map +0 -7
  254. package/dist/lib/neutral/RenamePopover-XBZAKNM7.mjs.map +0 -7
  255. package/dist/lib/neutral/SchemaContainer-2NK5YB5O.mjs.map +0 -7
  256. package/dist/lib/neutral/SpaceSettings-IVTCSLNT.mjs +0 -37
  257. package/dist/lib/neutral/SpaceSettings-IVTCSLNT.mjs.map +0 -7
  258. package/dist/lib/neutral/SpaceSettingsContainer-QAFQ4LWC.mjs.map +0 -7
  259. package/dist/lib/neutral/add-object-S64XELC3.mjs.map +0 -7
  260. package/dist/lib/neutral/app-graph-builder-TMAD2ZTH.mjs.map +0 -7
  261. package/dist/lib/neutral/chunk-2LTGSUGQ.mjs.map +0 -7
  262. package/dist/lib/neutral/chunk-DSYEB2UN.mjs.map +0 -7
  263. package/dist/lib/neutral/chunk-F2VJ6VBV.mjs.map +0 -7
  264. package/dist/lib/neutral/chunk-I5JXVBXX.mjs +0 -8
  265. package/dist/lib/neutral/create-object-22WUOWZQ.mjs.map +0 -7
  266. package/dist/lib/neutral/join-VY3QYBU7.mjs +0 -28
  267. package/dist/lib/neutral/join-VY3QYBU7.mjs.map +0 -7
  268. package/dist/lib/neutral/navigation-handler-IKXZGMII.mjs.map +0 -7
  269. package/dist/lib/neutral/navigation-resolver-VBPGMFCE.mjs.map +0 -7
  270. package/dist/lib/neutral/react-surface-5EQ6X4CL.mjs.map +0 -7
  271. package/dist/types/src/components/SpaceSettings/SpaceSettings.d.ts +0 -8
  272. package/dist/types/src/components/SpaceSettings/SpaceSettings.d.ts.map +0 -1
  273. package/dist/types/src/containers/ObjectProperties/ObjectProperties.d.ts +0 -10
  274. package/dist/types/src/containers/ObjectProperties/ObjectProperties.d.ts.map +0 -1
  275. package/dist/types/src/containers/ObjectProperties/index.d.ts +0 -2
  276. package/dist/types/src/containers/ObjectProperties/index.d.ts.map +0 -1
  277. package/src/components/SpaceSettings/SpaceSettings.tsx +0 -56
  278. package/src/containers/ObjectProperties/ObjectProperties.tsx +0 -32
  279. package/src/containers/ObjectProperties/index.ts +0 -5
  280. /package/dist/lib/neutral/{MenuFooter-QCNFUIAO.mjs.map → MenuFooter-FWE5LFM4.mjs.map} +0 -0
  281. /package/dist/lib/neutral/{SmallPresenceLive-L4H7WJOA.mjs.map → SmallPresenceLive-FW3AMEY5.mjs.map} +0 -0
  282. /package/dist/lib/neutral/{SpacePresence-PDTEDHDE.mjs.map → SpacePresence-T37WH43Y.mjs.map} +0 -0
  283. /package/dist/lib/neutral/{add-relation-GWSE42BU.mjs.map → add-relation-BGTLART5.mjs.map} +0 -0
  284. /package/dist/lib/neutral/{chunk-2RPQHHD7.mjs.map → chunk-C2ULK22J.mjs.map} +0 -0
  285. /package/dist/lib/neutral/{chunk-I5JXVBXX.mjs.map → chunk-U5WTDOMV.mjs.map} +0 -0
  286. /package/dist/lib/neutral/{close-YZHFYPUN.mjs.map → close-5WEQZRNK.mjs.map} +0 -0
  287. /package/dist/lib/neutral/{delete-EFM7CAVO.mjs.map → delete-SPCU2VFM.mjs.map} +0 -0
  288. /package/dist/lib/neutral/{delete-field-ONAPFFO5.mjs.map → delete-field-TAKJVEAD.mjs.map} +0 -0
  289. /package/dist/lib/neutral/{duplicate-object-OJRPFV5I.mjs.map → duplicate-object-BUPZOO6S.mjs.map} +0 -0
  290. /package/dist/lib/neutral/{export-space-M5RNVUQX.mjs.map → export-space-S5SCAL4M.mjs.map} +0 -0
  291. /package/dist/lib/neutral/{get-share-link-FUQBJPSQ.mjs.map → get-share-link-CLM5IQRL.mjs.map} +0 -0
  292. /package/dist/lib/neutral/{import-space-L3AUIARM.mjs.map → import-space-LJQK3KT7.mjs.map} +0 -0
  293. /package/dist/lib/neutral/{open-RRYULTSY.mjs.map → open-JCXTL3SK.mjs.map} +0 -0
  294. /package/dist/lib/neutral/{open-create-object-BRUVFZSY.mjs.map → open-create-object-WAIAU7TA.mjs.map} +0 -0
  295. /package/dist/lib/neutral/{open-create-space-ARLQWW65.mjs.map → open-create-space-VU47FWPZ.mjs.map} +0 -0
  296. /package/dist/lib/neutral/{open-import-space-65H57JXX.mjs.map → open-import-space-GUHIEWYB.mjs.map} +0 -0
  297. /package/dist/lib/neutral/{open-members-677P6KD3.mjs.map → open-members-MLLBHKUU.mjs.map} +0 -0
  298. /package/dist/lib/neutral/{open-settings-PRBSGO6D.mjs.map → open-settings-DTPZF4U4.mjs.map} +0 -0
  299. /package/dist/lib/neutral/{remove-objects-PWJJI36V.mjs.map → remove-objects-WEO66EDS.mjs.map} +0 -0
  300. /package/dist/lib/neutral/{rename-4727PKI4.mjs.map → rename-Q6UNCBIM.mjs.map} +0 -0
  301. /package/dist/lib/neutral/{rename-object-FXUAB5FN.mjs.map → rename-object-2UCEGU7U.mjs.map} +0 -0
  302. /package/dist/lib/neutral/{restore-field-3ICSIHGA.mjs.map → restore-field-6CQAFOXY.mjs.map} +0 -0
  303. /package/dist/lib/neutral/{restore-objects-V2BTEWN3.mjs.map → restore-objects-3VINLP7C.mjs.map} +0 -0
  304. /package/dist/lib/neutral/{share-ZOZPAUGI.mjs.map → share-A4WPILNF.mjs.map} +0 -0
  305. /package/dist/lib/neutral/{snapshot-ZC5PU55W.mjs.map → snapshot-HBYMAPA7.mjs.map} +0 -0
  306. /package/dist/lib/neutral/{wait-for-object-WURK2SLQ.mjs.map → wait-for-object-U6P2NNWY.mjs.map} +0 -0
  307. /package/dist/types/src/{components → containers}/SpaceSettings/index.d.ts +0 -0
  308. /package/src/{components → containers}/SpaceSettings/index.ts +0 -0
@@ -31,17 +31,22 @@ var SpaceHomeRecent = ({ space }) => {
31
31
  if (recent.length === 0) {
32
32
  return null;
33
33
  }
34
- return /* @__PURE__ */ React.createElement(React.Fragment, null, /* @__PURE__ */ React.createElement("h2", {
34
+ return /* @__PURE__ */ React.createElement("div", {
35
+ className: "flex justify-center w-full"
36
+ }, /* @__PURE__ */ React.createElement("div", {
37
+ className: "flex flex-col w-full max-w-[40rem]"
38
+ }, /* @__PURE__ */ React.createElement("h2", {
35
39
  className: "text-sm font-medium text-description"
36
40
  }, t("space-home.recent.heading")), /* @__PURE__ */ React.createElement(Masonry.Root, {
37
41
  Tile: RecentObjectTile
38
42
  }, /* @__PURE__ */ React.createElement(Masonry.Content, {
39
- padding: false
43
+ classNames: "pt-trim-sm",
44
+ padding: false,
45
+ scrollbars: false
40
46
  }, /* @__PURE__ */ React.createElement(Masonry.Viewport, {
41
- classNames: "py-2",
42
47
  items: recent,
43
48
  getId: (object) => object.id
44
- }))));
49
+ })))));
45
50
  };
46
51
  var RecentObjectTile = ({ data }) => {
47
52
  const { invokePromise } = useOperationInvoker();
@@ -69,6 +74,7 @@ var RecentObjectTile = ({ data }) => {
69
74
  ]);
70
75
  return /* @__PURE__ */ React.createElement(Card.Root, {
71
76
  role: "button",
77
+ fullWidth: true,
72
78
  classNames: "cursor-pointer",
73
79
  onClick: handleClick
74
80
  }, /* @__PURE__ */ React.createElement(Card.Header, null, /* @__PURE__ */ React.createElement(Card.Block, null, /* @__PURE__ */ React.createElement(Icon, {
@@ -80,4 +86,4 @@ RecentObjectTile.displayName = "RecentObjectTile";
80
86
  export {
81
87
  SpaceHomeRecent as default
82
88
  };
83
- //# sourceMappingURL=SpaceHomeRecent-ZR4LIIUD.mjs.map
89
+ //# sourceMappingURL=SpaceHomeRecent-S57AO3EV.mjs.map
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "version": 3,
3
3
  "sources": ["../../../src/containers/SpaceHomeRecent/SpaceHomeRecent.tsx"],
4
- "sourcesContent": ["//\n// Copyright 2026 DXOS.org\n//\n\nimport * as Option from 'effect/Option';\nimport React, { useCallback, useMemo } from 'react';\n\nimport { useCapabilities, useOperationInvoker } from '@dxos/app-framework/ui';\nimport { AppCapabilities, LayoutOperation, Paths } from '@dxos/app-toolkit';\nimport { Collection, Filter, Obj, Order, Query, Type } from '@dxos/echo';\nimport { HiddenAnnotation, getTypeAnnotation } from '@dxos/echo/Annotation';\nimport { Kind as EntityKind } from '@dxos/echo/Entity';\nimport { type Space, useQuery } from '@dxos/react-client/echo';\nimport { Card, Icon, toLocalizedString, useTranslation } from '@dxos/react-ui';\nimport { Masonry } from '@dxos/react-ui-masonry';\nimport { getStyles } from '@dxos/ui-theme';\n\nimport { meta } from '#meta';\n\n/** Number of recently-modified objects to surface as cards. */\nconst RECENT_LIMIT = 10;\n\ntype SpaceScopedProps = {\n space?: Space;\n};\n\n/**\n * Recent-objects region for the Home article. Queries the most-recently-modified objects of\n * registered, non-hidden, non-relation, non-collection types and renders them as a Masonry of\n * tiles. Renders nothing (no heading) when the space has no recent objects — the starter-prompt\n * contributor (plugin-assistant) fills the empty state instead.\n */\nexport const SpaceHomeRecent = ({ space }: SpaceScopedProps) => {\n const { t } = useTranslation(meta.profile.key);\n\n const schemas = useCapabilities(AppCapabilities.Schema);\n const filter = useMemo(() => {\n const collectionTypename = Type.getTypename(Collection.Collection);\n const types = schemas\n .flat()\n .filter(Type.isType)\n .filter((type) => getTypeAnnotation(Type.getSchema(type))?.kind !== EntityKind.Relation)\n .filter((type) => !HiddenAnnotation.get(Type.getSchema(type)).pipe(Option.getOrElse(() => false)))\n .filter((type) => Type.getTypename(type) !== collectionTypename);\n return types.length > 0 ? Filter.or(...types.map((type) => Filter.type(type))) : undefined;\n }, [schemas]);\n\n const query = useMemo(\n () =>\n Query.select(filter ?? Filter.everything())\n .orderBy(Order.updated('desc'))\n .limit(RECENT_LIMIT),\n [filter],\n );\n const recent = useQuery(filter && space ? space.db : undefined, query);\n\n if (recent.length === 0) {\n return null;\n }\n\n return (\n <>\n <h2 className='text-sm font-medium text-description'>{t('space-home.recent.heading')}</h2>\n <Masonry.Root Tile={RecentObjectTile}>\n <Masonry.Content padding={false}>\n <Masonry.Viewport classNames='py-2' items={recent} getId={(object) => object.id} />\n </Masonry.Content>\n </Masonry.Root>\n </>\n );\n};\n\nconst RecentObjectTile = ({ data }: { data: Obj.Unknown; index: number }) => {\n const { invokePromise } = useOperationInvoker();\n const { t } = useTranslation(meta.profile.key);\n const typename = Obj.getTypename(data);\n const label = toLocalizedString(\n Obj.getLabel(data) ?? (typename ? ['object-name.placeholder', { ns: typename, defaultValue: 'New item' }] : ''),\n t,\n );\n const iconAnnotation = Obj.getIcon(data);\n const icon = iconAnnotation?.icon ?? 'ph--circle-dashed--regular';\n const iconStyles = iconAnnotation?.hue ? getStyles(iconAnnotation.hue) : undefined;\n\n const handleClick = useCallback(() => {\n void invokePromise(LayoutOperation.Open, { subject: [Paths.getObjectPathFromObject(data)] });\n }, [invokePromise, data]);\n\n return (\n <Card.Root role='button' classNames='cursor-pointer' onClick={handleClick}>\n <Card.Header>\n <Card.Block>\n <Icon icon={icon} classNames={iconStyles?.text} />\n </Card.Block>\n <Card.Title>{label}</Card.Title>\n </Card.Header>\n </Card.Root>\n );\n};\n\nRecentObjectTile.displayName = 'RecentObjectTile';\n"],
5
- "mappings": "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",
6
- "names": ["Option", "React", "useCallback", "useMemo", "useCapabilities", "useOperationInvoker", "AppCapabilities", "LayoutOperation", "Paths", "Collection", "Filter", "Obj", "Order", "Query", "Type", "HiddenAnnotation", "getTypeAnnotation", "Kind", "EntityKind", "useQuery", "Card", "Icon", "toLocalizedString", "useTranslation", "Masonry", "getStyles", "meta", "RECENT_LIMIT", "SpaceHomeRecent", "space", "t", "profile", "key", "schemas", "Schema", "filter", "collectionTypename", "getTypename", "types", "flat", "isType", "type", "getSchema", "kind", "Relation", "get", "pipe", "getOrElse", "length", "or", "map", "undefined", "query", "select", "everything", "orderBy", "updated", "limit", "recent", "db", "h2", "className", "Root", "Tile", "RecentObjectTile", "Content", "padding", "Viewport", "classNames", "items", "getId", "object", "id", "data", "invokePromise", "typename", "label", "getLabel", "ns", "defaultValue", "iconAnnotation", "getIcon", "icon", "iconStyles", "hue", "handleClick", "Open", "subject", "getObjectPathFromObject", "role", "onClick", "Header", "Block", "text", "Title", "displayName"]
4
+ "sourcesContent": ["//\n// Copyright 2026 DXOS.org\n//\n\nimport * as Option from 'effect/Option';\nimport React, { useCallback, useMemo } from 'react';\n\nimport { useCapabilities, useOperationInvoker } from '@dxos/app-framework/ui';\nimport { AppCapabilities, LayoutOperation, Paths } from '@dxos/app-toolkit';\nimport { Collection, Filter, Obj, Order, Query, Type } from '@dxos/echo';\nimport { HiddenAnnotation, getTypeAnnotation } from '@dxos/echo/Annotation';\nimport { Kind as EntityKind } from '@dxos/echo/Entity';\nimport { type Space, useQuery } from '@dxos/react-client/echo';\nimport { Card, Icon, toLocalizedString, useTranslation } from '@dxos/react-ui';\nimport { Masonry } from '@dxos/react-ui-masonry';\nimport { getStyles } from '@dxos/ui-theme';\n\nimport { meta } from '#meta';\n\n/** Number of recently-modified objects to surface as cards. */\nconst RECENT_LIMIT = 10;\n\ntype SpaceScopedProps = {\n space?: Space;\n};\n\n/**\n * Recent-objects region for the Home article. Queries the most-recently-modified objects of\n * registered, non-hidden, non-relation, non-collection types and renders them as a Masonry of\n * tiles. Renders nothing (no heading) when the space has no recent objects — the starter-prompt\n * contributor (plugin-assistant) fills the empty state instead.\n */\nexport const SpaceHomeRecent = ({ space }: SpaceScopedProps) => {\n const { t } = useTranslation(meta.profile.key);\n\n const schemas = useCapabilities(AppCapabilities.Schema);\n const filter = useMemo(() => {\n const collectionTypename = Type.getTypename(Collection.Collection);\n const types = schemas\n .flat()\n .filter(Type.isType)\n .filter((type) => getTypeAnnotation(Type.getSchema(type))?.kind !== EntityKind.Relation)\n .filter((type) => !HiddenAnnotation.get(Type.getSchema(type)).pipe(Option.getOrElse(() => false)))\n .filter((type) => Type.getTypename(type) !== collectionTypename);\n return types.length > 0 ? Filter.or(...types.map((type) => Filter.type(type))) : undefined;\n }, [schemas]);\n\n const query = useMemo(\n () =>\n Query.select(filter ?? Filter.everything())\n .orderBy(Order.updated('desc'))\n .limit(RECENT_LIMIT),\n [filter],\n );\n\n const recent = useQuery(filter && space ? space.db : undefined, query);\n if (recent.length === 0) {\n return null;\n }\n\n return (\n <div className='flex justify-center w-full'>\n <div className='flex flex-col w-full max-w-[40rem]'>\n <h2 className='text-sm font-medium text-description'>{t('space-home.recent.heading')}</h2>\n <Masonry.Root Tile={RecentObjectTile}>\n <Masonry.Content classNames='pt-trim-sm' padding={false} scrollbars={false}>\n <Masonry.Viewport items={recent} getId={(object) => object.id} />\n </Masonry.Content>\n </Masonry.Root>\n </div>\n </div>\n );\n};\n\nconst RecentObjectTile = ({ data }: { data: Obj.Unknown; index: number }) => {\n const { invokePromise } = useOperationInvoker();\n const { t } = useTranslation(meta.profile.key);\n const typename = Obj.getTypename(data);\n const label = toLocalizedString(\n Obj.getLabel(data) ?? (typename ? ['object-name.placeholder', { ns: typename, defaultValue: 'New item' }] : ''),\n t,\n );\n const iconAnnotation = Obj.getIcon(data);\n const icon = iconAnnotation?.icon ?? 'ph--circle-dashed--regular';\n const iconStyles = iconAnnotation?.hue ? getStyles(iconAnnotation.hue) : undefined;\n\n const handleClick = useCallback(() => {\n void invokePromise(LayoutOperation.Open, { subject: [Paths.getObjectPathFromObject(data)] });\n }, [invokePromise, data]);\n\n return (\n <Card.Root role='button' fullWidth classNames='cursor-pointer' onClick={handleClick}>\n <Card.Header>\n <Card.Block>\n <Icon icon={icon} classNames={iconStyles?.text} />\n </Card.Block>\n <Card.Title>{label}</Card.Title>\n </Card.Header>\n </Card.Root>\n );\n};\n\nRecentObjectTile.displayName = 'RecentObjectTile';\n"],
5
+ "mappings": "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",
6
+ "names": ["Option", "React", "useCallback", "useMemo", "useCapabilities", "useOperationInvoker", "AppCapabilities", "LayoutOperation", "Paths", "Collection", "Filter", "Obj", "Order", "Query", "Type", "HiddenAnnotation", "getTypeAnnotation", "Kind", "EntityKind", "useQuery", "Card", "Icon", "toLocalizedString", "useTranslation", "Masonry", "getStyles", "meta", "RECENT_LIMIT", "SpaceHomeRecent", "space", "t", "profile", "key", "schemas", "Schema", "filter", "collectionTypename", "getTypename", "types", "flat", "isType", "type", "getSchema", "kind", "Relation", "get", "pipe", "getOrElse", "length", "or", "map", "undefined", "query", "select", "everything", "orderBy", "updated", "limit", "recent", "db", "div", "className", "h2", "Root", "Tile", "RecentObjectTile", "Content", "classNames", "padding", "scrollbars", "Viewport", "items", "getId", "object", "id", "data", "invokePromise", "typename", "label", "getLabel", "ns", "defaultValue", "iconAnnotation", "getIcon", "icon", "iconStyles", "hue", "handleClick", "Open", "subject", "getObjectPathFromObject", "role", "fullWidth", "onClick", "Header", "Block", "text", "Title", "displayName"]
7
7
  }
@@ -1,7 +1,7 @@
1
1
  import {
2
2
  SpacePlugin,
3
3
  SpacePlugin_default
4
- } from "./chunk-LY6XK5MV.mjs";
4
+ } from "./chunk-SPWAMXNR.mjs";
5
5
  import "./chunk-J5LGTIGS.mjs";
6
6
  export {
7
7
  SpacePlugin,
@@ -1,11 +1,11 @@
1
1
  import {
2
2
  SmallPresenceLive,
3
3
  SpacePresence
4
- } from "./chunk-2LTGSUGQ.mjs";
4
+ } from "./chunk-RAAHDTVF.mjs";
5
5
  import "./chunk-J5LGTIGS.mjs";
6
6
  export {
7
7
  SmallPresenceLive,
8
8
  SpacePresence,
9
9
  SpacePresence as default
10
10
  };
11
- //# sourceMappingURL=SpacePresence-PDTEDHDE.mjs.map
11
+ //# sourceMappingURL=SpacePresence-T37WH43Y.mjs.map
@@ -0,0 +1,60 @@
1
+ import {
2
+ getSpaceDisplayName
3
+ } from "./chunk-52ASDNRA.mjs";
4
+ import "./chunk-F5KLUP2P.mjs";
5
+ import "./chunk-J5LGTIGS.mjs";
6
+
7
+ // src/containers/SpaceSettings/SpaceSettings.tsx
8
+ import React from "react";
9
+ import { AppSpace } from "@dxos/app-toolkit";
10
+ import { IconButton, Input, toLocalizedString, useTranslation } from "@dxos/react-ui";
11
+ import { Form } from "@dxos/react-ui-form";
12
+ import { Listbox } from "@dxos/react-ui-list";
13
+ import { meta } from "#meta";
14
+ var SpaceSettings = ({ spaces, onOpenSpaceSettings, settings, onSettingsChange }) => {
15
+ const { t } = useTranslation(meta.profile.key);
16
+ return /* @__PURE__ */ React.createElement(Form.Root, {
17
+ variant: "settings"
18
+ }, /* @__PURE__ */ React.createElement(Form.Viewport, {
19
+ scroll: true
20
+ }, /* @__PURE__ */ React.createElement(Form.Content, null, /* @__PURE__ */ React.createElement(Form.Section, {
21
+ title: t("plugin.name")
22
+ }, /* @__PURE__ */ React.createElement(Form.Row, {
23
+ label: t("settings.show-hidden.label"),
24
+ description: t("settings.show-hidden.description")
25
+ }, /* @__PURE__ */ React.createElement(Input.Root, null, /* @__PURE__ */ React.createElement(Input.Switch, {
26
+ disabled: !onSettingsChange,
27
+ checked: settings?.showHidden,
28
+ onCheckedChange: (checked) => onSettingsChange?.((s) => ({
29
+ ...s,
30
+ showHidden: !!checked
31
+ }))
32
+ })))), /* @__PURE__ */ React.createElement(Form.Section, {
33
+ title: t("space-settings.label"),
34
+ description: t("space-settings.description")
35
+ }, /* @__PURE__ */ React.createElement(Form.Row, {
36
+ label: t("settings.space-list.label"),
37
+ description: t("settings.space-list.description")
38
+ }, /* @__PURE__ */ React.createElement(Listbox.Root, null, /* @__PURE__ */ React.createElement(Listbox.Content, {
39
+ "aria-label": t("settings.space-list.label"),
40
+ classNames: "w-full gap-trim-sm"
41
+ }, spaces?.map((space) => /* @__PURE__ */ React.createElement(Listbox.Item, {
42
+ key: space.id,
43
+ id: space.id,
44
+ classNames: "w-full items-center"
45
+ }, /* @__PURE__ */ React.createElement(Listbox.ItemLabel, {
46
+ classNames: "min-h-0!"
47
+ }, toLocalizedString(getSpaceDisplayName(space, {
48
+ personal: AppSpace.isPersonalSpace(space)
49
+ }), t)), /* @__PURE__ */ React.createElement(IconButton, {
50
+ icon: "ph--faders--regular",
51
+ iconOnly: true,
52
+ label: t("settings.open-settings.label"),
53
+ disabled: !onOpenSpaceSettings,
54
+ onClick: () => onOpenSpaceSettings?.(space)
55
+ }))))))))));
56
+ };
57
+ export {
58
+ SpaceSettings as default
59
+ };
60
+ //# sourceMappingURL=SpaceSettings-6CZF7GEO.mjs.map
@@ -0,0 +1,7 @@
1
+ {
2
+ "version": 3,
3
+ "sources": ["../../../src/containers/SpaceSettings/SpaceSettings.tsx"],
4
+ "sourcesContent": ["//\n// Copyright 2023 DXOS.org\n//\n\nimport React from 'react';\n\nimport { AppSpace } from '@dxos/app-toolkit';\nimport { type Space } from '@dxos/react-client/echo';\nimport { IconButton, Input, toLocalizedString, useTranslation } from '@dxos/react-ui';\nimport { Form } from '@dxos/react-ui-form';\nimport { Listbox } from '@dxos/react-ui-list';\n\nimport { meta } from '#meta';\nimport { type Settings } from '#types';\n\nimport { getSpaceDisplayName } from '../../util';\n\nexport type SpaceSettingsProps = {\n spaces?: Space[];\n onOpenSpaceSettings?: (space: Space) => void;\n settings?: Settings.Settings;\n onSettingsChange?: (updater: (prev: Settings.Settings) => Settings.Settings) => void;\n};\n\nexport const SpaceSettings = ({ spaces, onOpenSpaceSettings, settings, onSettingsChange }: SpaceSettingsProps) => {\n const { t } = useTranslation(meta.profile.key);\n\n return (\n <Form.Root variant='settings'>\n <Form.Viewport scroll>\n <Form.Content>\n <Form.Section title={t('plugin.name')}>\n <Form.Row label={t('settings.show-hidden.label')} description={t('settings.show-hidden.description')}>\n <Input.Root>\n <Input.Switch\n disabled={!onSettingsChange}\n checked={settings?.showHidden}\n onCheckedChange={(checked) => onSettingsChange?.((s) => ({ ...s, showHidden: !!checked }))}\n />\n </Input.Root>\n </Form.Row>\n </Form.Section>\n <Form.Section title={t('space-settings.label')} description={t('space-settings.description')}>\n <Form.Row label={t('settings.space-list.label')} description={t('settings.space-list.description')}>\n <Listbox.Root>\n <Listbox.Content aria-label={t('settings.space-list.label')} classNames='w-full gap-trim-sm'>\n {spaces?.map((space) => (\n <Listbox.Item key={space.id} id={space.id} classNames='w-full items-center'>\n {/* TODO(burdon): Should auto center and truncate; NOTE truncate doesn't work with flex grow. */}\n <Listbox.ItemLabel classNames='min-h-0!'>\n {toLocalizedString(\n getSpaceDisplayName(space, {\n personal: AppSpace.isPersonalSpace(space),\n }),\n t,\n )}\n </Listbox.ItemLabel>\n <IconButton\n icon='ph--faders--regular'\n iconOnly\n label={t('settings.open-settings.label')}\n disabled={!onOpenSpaceSettings}\n onClick={() => onOpenSpaceSettings?.(space)}\n />\n </Listbox.Item>\n ))}\n </Listbox.Content>\n </Listbox.Root>\n </Form.Row>\n </Form.Section>\n </Form.Content>\n </Form.Viewport>\n </Form.Root>\n );\n};\n"],
5
+ "mappings": ";;;;;;;AAIA,OAAOA,WAAW;AAElB,SAASC,gBAAgB;AAEzB,SAASC,YAAYC,OAAOC,mBAAmBC,sBAAsB;AACrE,SAASC,YAAY;AACrB,SAASC,eAAe;AAExB,SAASC,YAAY;AAYd,IAAMC,gBAAgB,CAAC,EAAEC,QAAQC,qBAAqBC,UAAUC,iBAAgB,MAAsB;AAC3G,QAAM,EAAEC,EAAC,IAAKC,eAAeC,KAAKC,QAAQC,GAAG;AAE7C,SACE,sBAAA,cAACC,KAAKC,MAAI;IAACC,SAAQ;KACjB,sBAAA,cAACF,KAAKG,UAAQ;IAACC,QAAAA;KACb,sBAAA,cAACJ,KAAKK,SAAO,MACX,sBAAA,cAACL,KAAKM,SAAO;IAACC,OAAOZ,EAAE,aAAA;KACrB,sBAAA,cAACK,KAAKQ,KAAG;IAACC,OAAOd,EAAE,4BAAA;IAA+Be,aAAaf,EAAE,kCAAA;KAC/D,sBAAA,cAACgB,MAAMV,MAAI,MACT,sBAAA,cAACU,MAAMC,QAAM;IACXC,UAAU,CAACnB;IACXoB,SAASrB,UAAUsB;IACnBC,iBAAiB,CAACF,YAAYpB,mBAAmB,CAACuB,OAAO;MAAE,GAAGA;MAAGF,YAAY,CAAC,CAACD;IAAQ,EAAA;SAK/F,sBAAA,cAACd,KAAKM,SAAO;IAACC,OAAOZ,EAAE,sBAAA;IAAyBe,aAAaf,EAAE,4BAAA;KAC7D,sBAAA,cAACK,KAAKQ,KAAG;IAACC,OAAOd,EAAE,2BAAA;IAA8Be,aAAaf,EAAE,iCAAA;KAC9D,sBAAA,cAACuB,QAAQjB,MAAI,MACX,sBAAA,cAACiB,QAAQb,SAAO;IAACc,cAAYxB,EAAE,2BAAA;IAA8ByB,YAAW;KACrE7B,QAAQ8B,IAAI,CAACC,UACZ,sBAAA,cAACJ,QAAQK,MAAI;IAACxB,KAAKuB,MAAME;IAAIA,IAAIF,MAAME;IAAIJ,YAAW;KAEpD,sBAAA,cAACF,QAAQO,WAAS;IAACL,YAAW;KAC3BM,kBACCC,oBAAoBL,OAAO;IACzBM,UAAUC,SAASC,gBAAgBR,KAAAA;EACrC,CAAA,GACA3B,CAAAA,CAAAA,GAGJ,sBAAA,cAACoC,YAAAA;IACCC,MAAK;IACLC,UAAAA;IACAxB,OAAOd,EAAE,8BAAA;IACTkB,UAAU,CAACrB;IACX0C,SAAS,MAAM1C,sBAAsB8B,KAAAA;;AAY7D;",
6
+ "names": ["React", "AppSpace", "IconButton", "Input", "toLocalizedString", "useTranslation", "Form", "Listbox", "meta", "SpaceSettings", "spaces", "onOpenSpaceSettings", "settings", "onSettingsChange", "t", "useTranslation", "meta", "profile", "key", "Form", "Root", "variant", "Viewport", "scroll", "Content", "Section", "title", "Row", "label", "description", "Input", "Switch", "disabled", "checked", "showHidden", "onCheckedChange", "s", "Listbox", "aria-label", "classNames", "map", "space", "Item", "id", "ItemLabel", "toLocalizedString", "getSpaceDisplayName", "personal", "AppSpace", "isPersonalSpace", "IconButton", "icon", "iconOnly", "onClick"]
7
+ }
@@ -3,14 +3,14 @@ import "./chunk-J5LGTIGS.mjs";
3
3
  // src/containers/SpaceSettingsContainer/SpaceSettingsContainer.tsx
4
4
  import React, { useCallback, useMemo, useState } from "react";
5
5
  import { useCapabilities, useOperationInvoker } from "@dxos/app-framework/ui";
6
- import { AppSpace, Paths, LayoutOperation } from "@dxos/app-toolkit";
6
+ import { AppSpace, LayoutOperation, Paths } from "@dxos/app-toolkit";
7
7
  import { Obj } from "@dxos/echo";
8
8
  import { log } from "@dxos/log";
9
9
  import { SpaceArchive } from "@dxos/protocols/proto/dxos/client/services";
10
10
  import { EdgeReplicationSetting } from "@dxos/protocols/proto/dxos/echo/metadata";
11
11
  import { useClient } from "@dxos/react-client";
12
12
  import { Button, Dialog, DropdownMenu, Icon, IconButton, Input, useTranslation } from "@dxos/react-ui";
13
- import { Form, Settings } from "@dxos/react-ui-form";
13
+ import { Form } from "@dxos/react-ui-form";
14
14
  import { HuePicker, IconPicker } from "@dxos/react-ui-pickers";
15
15
  import { meta } from "#meta";
16
16
  import { SpaceOperation } from "#operations";
@@ -71,15 +71,15 @@ var SpaceSettingsContainer = ({ space }) => {
71
71
  onValueChange,
72
72
  type
73
73
  ]);
74
- return /* @__PURE__ */ React.createElement(Settings.Item, {
75
- title: label,
74
+ return /* @__PURE__ */ React.createElement(Form.Row, {
75
+ label,
76
76
  description: t("display-name.description")
77
- }, /* @__PURE__ */ React.createElement(Input.TextInput, {
77
+ }, /* @__PURE__ */ React.createElement(Input.Root, null, /* @__PURE__ */ React.createElement(Input.TextInput, {
78
78
  value: getValue(),
79
79
  onChange: handleChange,
80
80
  placeholder: t("display-name-input.placeholder"),
81
81
  classNames: "min-w-64"
82
- }));
82
+ })));
83
83
  },
84
84
  icon: personal ? () => null : ({ type, label, getValue, onValueChange }) => {
85
85
  const handleChange = useCallback((icon) => onValueChange(type, icon), [
@@ -90,8 +90,8 @@ var SpaceSettingsContainer = ({ space }) => {
90
90
  onValueChange,
91
91
  type
92
92
  ]);
93
- return /* @__PURE__ */ React.createElement(Settings.Item, {
94
- title: label,
93
+ return /* @__PURE__ */ React.createElement(Form.Row, {
94
+ label,
95
95
  description: t("icon.description")
96
96
  }, /* @__PURE__ */ React.createElement(IconPicker, {
97
97
  value: getValue(),
@@ -109,8 +109,8 @@ var SpaceSettingsContainer = ({ space }) => {
109
109
  onValueChange,
110
110
  type
111
111
  ]);
112
- return /* @__PURE__ */ React.createElement(Settings.Item, {
113
- title: label,
112
+ return /* @__PURE__ */ React.createElement(Form.Row, {
113
+ label,
114
114
  description: t("hue.description")
115
115
  }, /* @__PURE__ */ React.createElement(HuePicker, {
116
116
  value: getValue(),
@@ -124,14 +124,14 @@ var SpaceSettingsContainer = ({ space }) => {
124
124
  onValueChange,
125
125
  type
126
126
  ]);
127
- return /* @__PURE__ */ React.createElement(Settings.Item, {
128
- title: label,
127
+ return /* @__PURE__ */ React.createElement(Form.Row, {
128
+ label,
129
129
  description: t("edge-replication.description")
130
- }, /* @__PURE__ */ React.createElement(Input.Switch, {
130
+ }, /* @__PURE__ */ React.createElement(Input.Root, null, /* @__PURE__ */ React.createElement(Input.Switch, {
131
131
  checked: getValue(),
132
132
  onCheckedChange: handleChange,
133
133
  classNames: "justify-self-end"
134
- }));
134
+ })));
135
135
  }
136
136
  }), [
137
137
  t,
@@ -197,38 +197,41 @@ var SpaceSettingsContainer = ({ space }) => {
197
197
  invokePromise,
198
198
  t
199
199
  ]);
200
- return /* @__PURE__ */ React.createElement(Settings.Viewport, null, /* @__PURE__ */ React.createElement(Settings.Section, {
201
- title: t("space-properties-settings-verbose.label"),
202
- description: t("space-properties-settings.description", {
203
- ns: meta.profile.key
204
- })
205
- }, /* @__PURE__ */ React.createElement(Form.Root, {
200
+ return /* @__PURE__ */ React.createElement(Form.Root, {
201
+ variant: "settings",
206
202
  key: space.id,
207
203
  fieldMap,
208
204
  schema: SpaceFormSchema,
209
205
  defaultValues,
210
206
  onValuesChanged: handleValuesChanged
211
- }, /* @__PURE__ */ React.createElement(Form.FieldSet, null))), /* @__PURE__ */ React.createElement(Settings.Section, {
207
+ }, /* @__PURE__ */ React.createElement(Form.Viewport, {
208
+ scroll: true
209
+ }, /* @__PURE__ */ React.createElement(Form.Content, null, /* @__PURE__ */ React.createElement(Form.Section, {
210
+ title: t("space-properties-settings-verbose.label"),
211
+ description: t("space-properties-settings.description", {
212
+ ns: meta.profile.key
213
+ })
214
+ }, /* @__PURE__ */ React.createElement(Form.FieldSet, null)), /* @__PURE__ */ React.createElement(Form.Section, {
212
215
  title: t("space-controls.title"),
213
216
  description: t("space-controls.description")
214
- }, /* @__PURE__ */ React.createElement(Settings.Item, {
215
- title: t("space-key.title"),
216
- description: t("space-key.description")
217
+ }, /* @__PURE__ */ React.createElement(Form.Row, {
218
+ label: t("space-id.title"),
219
+ description: t("space-id.description")
217
220
  }, /* @__PURE__ */ React.createElement("div", {
218
221
  className: "flex items-center gap-2"
219
222
  }, /* @__PURE__ */ React.createElement(Input.Root, null, /* @__PURE__ */ React.createElement(Input.TextInput, {
220
- value: space.key.toHex(),
223
+ value: space.id,
221
224
  disabled: true,
222
225
  classNames: "flex-1 font-mono text-xs"
223
226
  })), /* @__PURE__ */ React.createElement(IconButton, {
224
227
  icon: "ph--copy--regular",
225
228
  iconOnly: true,
226
- label: t("copy-space-key.label"),
229
+ label: t("copy-space-id.label"),
227
230
  onClick: () => {
228
- void navigator.clipboard.writeText(space.key.toHex());
231
+ void navigator.clipboard.writeText(space.id);
229
232
  }
230
- }))), /* @__PURE__ */ React.createElement(Settings.Item, {
231
- title: t("backup-space.title"),
233
+ }))), /* @__PURE__ */ React.createElement(Form.Row, {
234
+ label: t("backup-space.title"),
232
235
  description: t("backup-space.description")
233
236
  }, /* @__PURE__ */ React.createElement(DropdownMenu.Root, null, /* @__PURE__ */ React.createElement(DropdownMenu.Trigger, {
234
237
  asChild: true
@@ -240,16 +243,16 @@ var SpaceSettingsContainer = ({ space }) => {
240
243
  onClick: handleBackupBinary
241
244
  }, t("download-backup-binary.label")), /* @__PURE__ */ React.createElement(DropdownMenu.Item, {
242
245
  onClick: handleBackupJson
243
- }, t("download-backup-json.label")))))), /* @__PURE__ */ React.createElement(Settings.Item, {
244
- title: t("repair-space.title"),
246
+ }, t("download-backup-json.label")))))), /* @__PURE__ */ React.createElement(Form.Row, {
247
+ label: t("repair-space.title"),
245
248
  description: t("repair-space.description")
246
249
  }, /* @__PURE__ */ React.createElement(Button, {
247
250
  onClick: handleRepair
248
- }, t("repair-space.label")))), /* @__PURE__ */ React.createElement(Settings.Section, {
251
+ }, t("repair-space.label")))), !personal && /* @__PURE__ */ React.createElement(Form.Section, {
249
252
  title: t("danger-zone.title"),
250
253
  description: t("danger-zone.description")
251
- }, !personal && /* @__PURE__ */ React.createElement(Settings.Item, {
252
- title: t("delete-space.title"),
254
+ }, /* @__PURE__ */ React.createElement(Form.Row, {
255
+ label: t("delete-space.title"),
253
256
  description: t("delete-space.description")
254
257
  }, /* @__PURE__ */ React.createElement(Dialog.Root, {
255
258
  open: deleteConfirmOpen,
@@ -267,10 +270,10 @@ var SpaceSettingsContainer = ({ space }) => {
267
270
  variant: "destructive",
268
271
  onClick: handleDelete,
269
272
  "data-testid": "spaceSettings.deleteSpaceConfirm"
270
- }, t("delete-space.label")))))))))));
273
+ }, t("delete-space.label")))))))))))));
271
274
  };
272
275
  SpaceSettingsContainer.displayName = "SpaceSettingsContainer";
273
276
  export {
274
277
  SpaceSettingsContainer as default
275
278
  };
276
- //# sourceMappingURL=SpaceSettingsContainer-QAFQ4LWC.mjs.map
279
+ //# sourceMappingURL=SpaceSettingsContainer-72CJWELM.mjs.map
@@ -0,0 +1,7 @@
1
+ {
2
+ "version": 3,
3
+ "sources": ["../../../src/containers/SpaceSettingsContainer/SpaceSettingsContainer.tsx"],
4
+ "sourcesContent": ["//\n// Copyright 2024 DXOS.org\n//\n\nimport * as Schema from 'effect/Schema';\nimport React, { type ChangeEvent, useCallback, useMemo, useState } from 'react';\n\nimport { useCapabilities, useOperationInvoker } from '@dxos/app-framework/ui';\nimport { AppSpace, LayoutOperation, Paths } from '@dxos/app-toolkit';\nimport { AppSurface } from '@dxos/app-toolkit/ui';\nimport { Obj } from '@dxos/echo';\nimport { log } from '@dxos/log';\nimport { SpaceArchive } from '@dxos/protocols/proto/dxos/client/services';\nimport { EdgeReplicationSetting } from '@dxos/protocols/proto/dxos/echo/metadata';\nimport { useClient } from '@dxos/react-client';\nimport { Button, Dialog, DropdownMenu, Icon, IconButton, Input, useTranslation } from '@dxos/react-ui';\nimport { Form, type FormFieldMap } from '@dxos/react-ui-form';\nimport { HuePicker, IconPicker } from '@dxos/react-ui-pickers';\n\nimport { meta } from '#meta';\nimport { SpaceOperation } from '#operations';\nimport { SpaceCapabilities, SpaceForm } from '#types';\n\nconst SpaceFormSchema = SpaceForm;\n\n// TODO(wittjosiah): Handle space migrations here?\nexport const SpaceSettingsContainer = ({ space }: AppSurface.SpaceArticleProps) => {\n const { t } = useTranslation(meta.profile.key);\n const { invokePromise } = useOperationInvoker();\n const client = useClient();\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 handleValuesChanged = useCallback(\n (newValues: Partial<Schema.Schema.Type<typeof SpaceFormSchema>>, meta: { changed?: Record<string, boolean> }) => {\n const changed = meta.changed ?? {};\n if (changed['edgeReplication']) {\n void toggleEdgeReplication(newValues.edgeReplication ?? false);\n }\n\n if (changed['name'] || changed['icon'] || changed['hue']) {\n Obj.update(space.properties, (obj) => {\n if (changed['name'] && newValues.name !== undefined) {\n obj.name = newValues.name;\n }\n if (changed['icon']) {\n obj.icon = newValues.icon;\n }\n if (changed['hue']) {\n obj.hue = newValues.hue;\n }\n });\n }\n },\n [space, toggleEdgeReplication],\n );\n\n const defaultValues = useMemo(\n () => ({\n name: space.properties.name,\n icon: space.properties.icon,\n hue: space.properties.hue,\n edgeReplication,\n }),\n [space.properties.name, space.properties.icon, space.properties.hue, edgeReplication],\n );\n\n const personal = AppSpace.isPersonalSpace(space);\n\n const fieldMap = useMemo<FormFieldMap>(\n () => ({\n name: personal\n ? () => null\n : ({ type, label, getValue, onValueChange }) => {\n const handleChange = useCallback(\n ({ target: { value } }: ChangeEvent<HTMLInputElement>) => onValueChange(type, value),\n [onValueChange, type],\n );\n return (\n <Form.Row label={label} description={t('display-name.description')}>\n <Input.Root>\n <Input.TextInput\n value={getValue()}\n onChange={handleChange}\n placeholder={t('display-name-input.placeholder')}\n classNames='min-w-64'\n />\n </Input.Root>\n </Form.Row>\n );\n },\n icon: personal\n ? () => null\n : ({ type, label, getValue, onValueChange }) => {\n const handleChange = useCallback((icon: string) => onValueChange(type, icon), [onValueChange, type]);\n const handleReset = useCallback(() => onValueChange(type, undefined), [onValueChange, type]);\n return (\n <Form.Row label={label} description={t('icon.description')}>\n <IconPicker\n value={getValue()}\n onChange={handleChange}\n onReset={handleReset}\n classNames='justify-self-end'\n />\n </Form.Row>\n );\n },\n hue: ({ type, label, getValue, onValueChange }) => {\n const handleChange = useCallback((nextHue: string) => onValueChange(type, nextHue), [onValueChange, type]);\n const handleReset = useCallback(() => onValueChange(type, undefined), [onValueChange, type]);\n return (\n <Form.Row label={label} description={t('hue.description')}>\n <HuePicker value={getValue()} onChange={handleChange} onReset={handleReset} classNames='justify-self-end' />\n </Form.Row>\n );\n },\n edgeReplication: ({ type, label, getValue, onValueChange }) => {\n const handleChange = useCallback((checked: boolean) => onValueChange(type, checked), [onValueChange, type]);\n return (\n <Form.Row label={label} description={t('edge-replication.description')}>\n <Input.Root>\n <Input.Switch checked={getValue()} onCheckedChange={handleChange} classNames='justify-self-end' />\n </Input.Root>\n </Form.Row>\n );\n },\n }),\n [t, space, personal],\n );\n\n const handleBackupBinary = useCallback(async () => {\n await invokePromise(SpaceOperation.ExportSpace, { space, format: SpaceArchive.Format.BINARY });\n }, [space, invokePromise]);\n const handleBackupJson = useCallback(async () => {\n await invokePromise(SpaceOperation.ExportSpace, { space, format: SpaceArchive.Format.JSON });\n }, [space, invokePromise]);\n\n const repairs = useCapabilities(SpaceCapabilities.Repair);\n const handleRepair = useCallback(async () => {\n await Promise.all(repairs.map((repair) => repair({ space, isDefault: AppSpace.isPersonalSpace(space) })));\n }, [space, repairs]);\n\n const [deleteConfirmOpen, setDeleteConfirmOpen] = useState(false);\n // Wired to an onClick handler: must resolve (never reject) so it can't trigger an unhandled rejection.\n const handleDelete = useCallback(async () => {\n try {\n await invokePromise(SpaceOperation.Delete, { space });\n setDeleteConfirmOpen(false);\n const personalSpace = AppSpace.getPersonalSpace(client);\n if (personalSpace) {\n void invokePromise(LayoutOperation.SwitchWorkspace, { subject: Paths.getSpacePath(personalSpace.id) });\n }\n } catch (err) {\n log.catch(err, { stage: 'delete: invocation rejected', spaceId: space.id });\n setDeleteConfirmOpen(false);\n void invokePromise(LayoutOperation.AddToast, {\n id: `${space.id}-delete-failed`,\n title: t('delete-space-failed.message'),\n icon: 'ph--warning--regular',\n });\n }\n }, [space, client, invokePromise, t]);\n\n return (\n <Form.Root\n variant='settings'\n key={space.id}\n fieldMap={fieldMap}\n schema={SpaceFormSchema}\n defaultValues={defaultValues}\n onValuesChanged={handleValuesChanged}\n >\n <Form.Viewport scroll>\n <Form.Content>\n <Form.Section\n title={t('space-properties-settings-verbose.label')}\n description={t('space-properties-settings.description', { ns: meta.profile.key })}\n >\n <Form.FieldSet />\n </Form.Section>\n\n <Form.Section title={t('space-controls.title')} description={t('space-controls.description')}>\n <Form.Row label={t('space-id.title')} description={t('space-id.description')}>\n <div className='flex items-center gap-2'>\n <Input.Root>\n <Input.TextInput value={space.id} disabled classNames='flex-1 font-mono text-xs' />\n </Input.Root>\n <IconButton\n icon='ph--copy--regular'\n iconOnly\n label={t('copy-space-id.label')}\n onClick={() => {\n void navigator.clipboard.writeText(space.id);\n }}\n />\n </div>\n </Form.Row>\n <Form.Row label={t('backup-space.title')} description={t('backup-space.description')}>\n <DropdownMenu.Root>\n <DropdownMenu.Trigger asChild>\n <Button>\n {t('download-backup.label')}\n <Icon icon='ph--caret-down--regular' size={4} classNames='mis-2' />\n </Button>\n </DropdownMenu.Trigger>\n <DropdownMenu.Content>\n <DropdownMenu.Viewport>\n <DropdownMenu.Item onClick={handleBackupBinary}>\n {t('download-backup-binary.label')}\n </DropdownMenu.Item>\n <DropdownMenu.Item onClick={handleBackupJson}>{t('download-backup-json.label')}</DropdownMenu.Item>\n </DropdownMenu.Viewport>\n </DropdownMenu.Content>\n </DropdownMenu.Root>\n </Form.Row>\n <Form.Row label={t('repair-space.title')} description={t('repair-space.description')}>\n <Button onClick={handleRepair}>{t('repair-space.label')}</Button>\n </Form.Row>\n </Form.Section>\n\n {!personal && (\n <Form.Section title={t('danger-zone.title')} description={t('danger-zone.description')}>\n <Form.Row label={t('delete-space.title')} description={t('delete-space.description')}>\n <Dialog.Root open={deleteConfirmOpen} onOpenChange={setDeleteConfirmOpen}>\n <Dialog.Trigger asChild>\n <Button variant='destructive' data-testid='spaceSettings.deleteSpace'>\n {t('delete-space.label')}\n </Button>\n </Dialog.Trigger>\n <Dialog.Portal>\n <Dialog.Overlay>\n <Dialog.Content>\n <Dialog.Header>\n <Dialog.Title>{t('delete-space-confirm.title')}</Dialog.Title>\n </Dialog.Header>\n <Dialog.Body>\n <Dialog.Description>{t('delete-space-confirm.description')}</Dialog.Description>\n <div className='flex justify-end gap-2 mbs-4'>\n <Dialog.Close asChild>\n <Button>{t('cancel.label')}</Button>\n </Dialog.Close>\n <Button\n variant='destructive'\n onClick={handleDelete}\n data-testid='spaceSettings.deleteSpaceConfirm'\n >\n {t('delete-space.label')}\n </Button>\n </div>\n </Dialog.Body>\n </Dialog.Content>\n </Dialog.Overlay>\n </Dialog.Portal>\n </Dialog.Root>\n </Form.Row>\n </Form.Section>\n )}\n </Form.Content>\n </Form.Viewport>\n </Form.Root>\n );\n};\n\nSpaceSettingsContainer.displayName = 'SpaceSettingsContainer';\n"],
5
+ "mappings": "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",
6
+ "names": ["React", "useCallback", "useMemo", "useState", "useCapabilities", "useOperationInvoker", "AppSpace", "LayoutOperation", "Paths", "Obj", "log", "SpaceArchive", "EdgeReplicationSetting", "useClient", "Button", "Dialog", "DropdownMenu", "Icon", "IconButton", "Input", "useTranslation", "Form", "HuePicker", "IconPicker", "meta", "SpaceOperation", "SpaceCapabilities", "SpaceForm", "SpaceFormSchema", "SpaceSettingsContainer", "invokePromise", "client", "edgeReplication", "setEdgeReplication", "toggleEdgeReplication", "next", "setEdgeReplicationPreference", "err", "space", "newValues", "changed", "name", "undefined", "obj", "properties", "hue", "personal", "type", "label", "handleChange", "onValueChange", "value", "getValue", "placeholder", "classNames", "icon", "onReset", "handleReset", "checked", "onCheckedChange", "t", "format", "BINARY", "JSON", "Promise", "map", "repair", "isDefault", "isPersonalSpace", "handleDelete", "Delete", "setDeleteConfirmOpen", "SwitchWorkspace", "stage", "spaceId", "AddToast", "title", "fieldMap", "schema", "defaultValues", "onValuesChanged", "scroll", "Content", "ns", "className", "Root", "disabled", "iconOnly", "onClick", "navigator", "writeText", "asChild", "handleBackupBinary", "Item", "handleBackupJson", "description", "handleRepair", "open", "deleteConfirmOpen", "onOpenChange", "variant", "data-testid", "Close", "displayName"]
7
+ }
@@ -0,0 +1,143 @@
1
+ import "./chunk-J5LGTIGS.mjs";
2
+
3
+ // src/containers/TypeCollectionArticle/TypeCollectionArticle.tsx
4
+ import * as Option from "effect/Option";
5
+ import React, { useCallback, useMemo } from "react";
6
+ import { Surface, useOperationInvoker } from "@dxos/app-framework/ui";
7
+ import { AppAnnotation, LayoutOperation, Paths } from "@dxos/app-toolkit";
8
+ import { AppSurface } from "@dxos/app-toolkit/ui";
9
+ import { Filter, Obj, Type } from "@dxos/echo";
10
+ import { useObject, useQuery } from "@dxos/react-client/echo";
11
+ import { Card, Focus, Icon, Panel, useTranslation } from "@dxos/react-ui";
12
+ import { useSelection } from "@dxos/react-ui-attention";
13
+ import { Empty } from "@dxos/react-ui-list";
14
+ import { Masonry } from "@dxos/react-ui-masonry";
15
+ import { getStyles } from "@dxos/ui-theme";
16
+ import { meta } from "#meta";
17
+ var TypeCollectionArticle = ({ role, space, typeUri, attendableId }) => {
18
+ const { t } = useTranslation(meta.profile.key);
19
+ const { invokePromise } = useOperationInvoker();
20
+ const currentId = useSelection(attendableId, "single");
21
+ const objects = useQuery(space.db, Filter.type(typeUri));
22
+ const handleOpen = useCallback((object) => {
23
+ const id = Obj.getURI(object);
24
+ void invokePromise(LayoutOperation.Select, {
25
+ contextId: attendableId,
26
+ subject: {
27
+ mode: "single",
28
+ id
29
+ }
30
+ });
31
+ void invokePromise(LayoutOperation.Open, {
32
+ subject: [
33
+ Paths.getObjectPathFromObject(object)
34
+ ],
35
+ pivotId: attendableId,
36
+ navigation: "immediate"
37
+ });
38
+ }, [
39
+ attendableId,
40
+ invokePromise
41
+ ]);
42
+ const handleDelete = useCallback((object) => {
43
+ Obj.getDatabase(object)?.remove(object);
44
+ }, []);
45
+ const tileItems = useMemo(() => objects.map((object) => ({
46
+ object,
47
+ current: Obj.getURI(object) === currentId,
48
+ onOpen: handleOpen,
49
+ onDelete: Obj.getParent(object) ? void 0 : handleDelete
50
+ })), [
51
+ objects,
52
+ currentId,
53
+ handleOpen,
54
+ handleDelete
55
+ ]);
56
+ return /* @__PURE__ */ React.createElement(Panel.Root, {
57
+ role
58
+ }, /* @__PURE__ */ React.createElement(Panel.Toolbar, null), /* @__PURE__ */ React.createElement(Panel.Content, null, objects.length === 0 ? /* @__PURE__ */ React.createElement(Empty, {
59
+ classNames: "bs-full",
60
+ label: t("type-collection-empty.message")
61
+ }) : /* @__PURE__ */ React.createElement(Masonry.Root, {
62
+ Tile: TileAdapter
63
+ }, /* @__PURE__ */ React.createElement(Masonry.Content, {
64
+ classNames: "p-trim-md"
65
+ }, /* @__PURE__ */ React.createElement(Masonry.Viewport, {
66
+ getId: (data) => Obj.getURI(data.object),
67
+ items: tileItems
68
+ })))));
69
+ };
70
+ var TileAdapter = ({ data }) => {
71
+ if (!data?.object) {
72
+ return null;
73
+ }
74
+ return /* @__PURE__ */ React.createElement(TypeCollectionTile, {
75
+ object: data.object,
76
+ current: data.current,
77
+ onOpen: data.onOpen,
78
+ onDelete: data.onDelete
79
+ });
80
+ };
81
+ var TypeCollectionTile = ({ object, current, onOpen, onDelete }) => {
82
+ const { t } = useTranslation(meta.profile.key);
83
+ const [live] = useObject(object);
84
+ const typename = Obj.getTypename(live);
85
+ const label = Obj.getLabel(live) || t("object-name.placeholder", {
86
+ ns: typename ?? meta.profile.key,
87
+ defaultValue: t("object-name.placeholder")
88
+ });
89
+ const iconAnnotation = Obj.getIcon(live);
90
+ const icon = iconAnnotation?.icon ?? "ph--circle-dashed--regular";
91
+ const iconStyles = iconAnnotation?.hue ? getStyles(iconAnnotation.hue) : void 0;
92
+ const type = Obj.getType(object);
93
+ const showCardContent = !!type && Option.getOrElse(AppAnnotation.CardAnnotation.get(Type.getSchema(type)), () => false);
94
+ const cardData = useMemo(() => ({
95
+ subject: object
96
+ }), [
97
+ object
98
+ ]);
99
+ const handleCurrentChange = useCallback(() => onOpen(object), [
100
+ onOpen,
101
+ object
102
+ ]);
103
+ const menuItems = useMemo(() => [
104
+ ...onDelete ? [
105
+ {
106
+ label: t("delete-object.label", {
107
+ ns: typename ?? meta.profile.key,
108
+ defaultValue: t("delete-object.label")
109
+ }),
110
+ onClick: () => onDelete?.(object)
111
+ }
112
+ ] : []
113
+ ], [
114
+ t,
115
+ typename,
116
+ onDelete,
117
+ object
118
+ ]);
119
+ return /* @__PURE__ */ React.createElement(Focus.Item, {
120
+ asChild: true,
121
+ current,
122
+ onCurrentChange: handleCurrentChange
123
+ }, /* @__PURE__ */ React.createElement(Card.Root, {
124
+ fullWidth: true,
125
+ classNames: [
126
+ "dx-hover cursor-pointer",
127
+ current && "dx-current"
128
+ ]
129
+ }, /* @__PURE__ */ React.createElement(Card.Header, null, /* @__PURE__ */ React.createElement(Card.Block, null, /* @__PURE__ */ React.createElement(Icon, {
130
+ icon,
131
+ classNames: iconStyles?.text
132
+ })), /* @__PURE__ */ React.createElement(Card.Title, null, label), menuItems.length > 0 && /* @__PURE__ */ React.createElement(Card.Menu, {
133
+ items: menuItems
134
+ })), showCardContent && /* @__PURE__ */ React.createElement(Surface.Surface, {
135
+ type: AppSurface.CardContent,
136
+ data: cardData,
137
+ limit: 1
138
+ })));
139
+ };
140
+ export {
141
+ TypeCollectionArticle as default
142
+ };
143
+ //# sourceMappingURL=TypeCollectionArticle-W76ADS2G.mjs.map
@@ -0,0 +1,7 @@
1
+ {
2
+ "version": 3,
3
+ "sources": ["../../../src/containers/TypeCollectionArticle/TypeCollectionArticle.tsx"],
4
+ "sourcesContent": ["//\n// Copyright 2025 DXOS.org\n//\n\nimport * as Option from 'effect/Option';\nimport React, { useCallback, useMemo } from 'react';\n\nimport { Surface, useOperationInvoker } from '@dxos/app-framework/ui';\nimport { AppAnnotation, LayoutOperation, Paths } from '@dxos/app-toolkit';\nimport { AppSurface } from '@dxos/app-toolkit/ui';\nimport { Filter, Obj, Type } from '@dxos/echo';\nimport { type URI } from '@dxos/keys';\nimport { type Space, useObject, useQuery } from '@dxos/react-client/echo';\nimport { Card, Focus, Icon, Panel, useTranslation } from '@dxos/react-ui';\nimport { useSelection } from '@dxos/react-ui-attention';\nimport { Empty } from '@dxos/react-ui-list';\nimport { Masonry } from '@dxos/react-ui-masonry';\nimport { getStyles } from '@dxos/ui-theme';\n\nimport { meta } from '#meta';\n\nexport type TypeCollectionArticleProps = {\n role?: string;\n space: Space;\n typeUri: URI.URI;\n attendableId: string;\n};\n\n/**\n * List view rendered when a type node is selected: a masonry grid of header-only cards, one per object\n * of the type. Selecting a card navigates to that object, opening it as a sibling plank. Objects are not\n * enumerated in the nav tree; each navigated object becomes a hidden child of the type node resolved on demand.\n */\nexport const TypeCollectionArticle = ({ role, space, typeUri, attendableId }: TypeCollectionArticleProps) => {\n const { t } = useTranslation(meta.profile.key);\n const { invokePromise } = useOperationInvoker();\n const currentId = useSelection(attendableId, 'single');\n\n const objects = useQuery(space.db, Filter.type(typeUri));\n\n const handleOpen = useCallback(\n (object: Obj.Unknown) => {\n const id = Obj.getURI(object);\n void invokePromise(LayoutOperation.Select, { contextId: attendableId, subject: { mode: 'single', id } });\n void invokePromise(LayoutOperation.Open, {\n subject: [Paths.getObjectPathFromObject(object)],\n pivotId: attendableId,\n navigation: 'immediate',\n });\n },\n [attendableId, invokePromise],\n );\n\n const handleDelete = useCallback((object: Obj.Unknown) => {\n Obj.getDatabase(object)?.remove(object);\n }, []);\n\n const tileItems = useMemo<TileData[]>(\n () =>\n objects.map((object) => ({\n object,\n current: Obj.getURI(object) === currentId,\n onOpen: handleOpen,\n onDelete: Obj.getParent(object) ? undefined : handleDelete,\n })),\n [objects, currentId, handleOpen, handleDelete],\n );\n\n return (\n <Panel.Root role={role}>\n <Panel.Toolbar />\n <Panel.Content>\n {objects.length === 0 ? (\n <Empty classNames='bs-full' label={t('type-collection-empty.message')} />\n ) : (\n <Masonry.Root Tile={TileAdapter}>\n <Masonry.Content classNames='p-trim-md'>\n <Masonry.Viewport getId={(data) => Obj.getURI(data.object)} items={tileItems} />\n </Masonry.Content>\n </Masonry.Root>\n )}\n </Panel.Content>\n </Panel.Root>\n );\n};\n\ntype TileData = {\n object: Obj.Unknown;\n current: boolean;\n onOpen: (object: Obj.Unknown) => void;\n onDelete?: (object: Obj.Unknown) => void;\n};\n\nconst TileAdapter = ({ data }: { data: TileData | undefined; index: number }) => {\n if (!data?.object) {\n return null;\n }\n\n return (\n <TypeCollectionTile object={data.object} current={data.current} onOpen={data.onOpen} onDelete={data.onDelete} />\n );\n};\n\ntype TypeCollectionTileProps = TileData;\n\n/** Selectable header-only card for a single object. */\nconst TypeCollectionTile = ({ object, current, onOpen, onDelete }: TypeCollectionTileProps) => {\n const { t } = useTranslation(meta.profile.key);\n // Subscribe so the label re-renders when the object changes.\n const [live] = useObject(object);\n // Mirror the app-graph label: the object's own label, else the type-scoped placeholder\n // (e.g. \"New video\" lives in the type's namespace, not the space plugin's).\n const typename = Obj.getTypename(live);\n const label =\n Obj.getLabel(live) ||\n t('object-name.placeholder', { ns: typename ?? meta.profile.key, defaultValue: t('object-name.placeholder') });\n\n const iconAnnotation = Obj.getIcon(live);\n const icon = iconAnnotation?.icon ?? 'ph--circle-dashed--regular';\n const iconStyles = iconAnnotation?.hue ? getStyles(iconAnnotation.hue) : undefined;\n\n // Render a content preview body only for types that opt in via `CardAnnotation`.\n const type = Obj.getType(object);\n const showCardContent =\n !!type && Option.getOrElse(AppAnnotation.CardAnnotation.get(Type.getSchema(type)), () => false);\n const cardData = useMemo<AppSurface.ObjectCardData>(() => ({ subject: object }), [object]);\n\n // `Focus.Item` calls `onCurrentChange` on click and on Enter.\n const handleCurrentChange = useCallback(() => onOpen(object), [onOpen, object]);\n\n const menuItems = useMemo(\n () => [\n ...(onDelete\n ? [\n {\n label: t('delete-object.label', {\n ns: typename ?? meta.profile.key,\n defaultValue: t('delete-object.label'),\n }),\n onClick: () => onDelete?.(object),\n },\n ]\n : []),\n ],\n [t, typename, onDelete, object],\n );\n\n return (\n <Focus.Item asChild current={current} onCurrentChange={handleCurrentChange}>\n <Card.Root fullWidth classNames={['dx-hover cursor-pointer', current && 'dx-current']}>\n <Card.Header>\n <Card.Block>\n <Icon icon={icon} classNames={iconStyles?.text} />\n </Card.Block>\n <Card.Title>{label}</Card.Title>\n {menuItems.length > 0 && <Card.Menu items={menuItems} />}\n </Card.Header>\n {showCardContent && <Surface.Surface type={AppSurface.CardContent} data={cardData} limit={1} />}\n </Card.Root>\n </Focus.Item>\n );\n};\n"],
5
+ "mappings": "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",
6
+ "names": ["Option", "React", "useCallback", "useMemo", "Surface", "useOperationInvoker", "AppAnnotation", "LayoutOperation", "Paths", "AppSurface", "Filter", "Obj", "Type", "useObject", "useQuery", "Card", "Focus", "Icon", "Panel", "useTranslation", "useSelection", "Empty", "Masonry", "getStyles", "meta", "TypeCollectionArticle", "role", "space", "typeUri", "attendableId", "t", "profile", "key", "invokePromise", "currentId", "objects", "db", "type", "handleOpen", "object", "id", "getURI", "Select", "contextId", "subject", "mode", "Open", "getObjectPathFromObject", "pivotId", "navigation", "handleDelete", "getDatabase", "remove", "tileItems", "map", "current", "onOpen", "onDelete", "getParent", "undefined", "Root", "Toolbar", "Content", "length", "classNames", "label", "Tile", "TileAdapter", "Viewport", "getId", "data", "items", "TypeCollectionTile", "live", "typename", "getTypename", "getLabel", "ns", "defaultValue", "iconAnnotation", "getIcon", "icon", "iconStyles", "hue", "getType", "showCardContent", "getOrElse", "CardAnnotation", "get", "getSchema", "cardData", "handleCurrentChange", "menuItems", "onClick", "Item", "asChild", "onCurrentChange", "fullWidth", "Header", "Block", "text", "Title", "Menu", "CardContent", "limit"]
7
+ }