@dxos/plugin-space 0.8.4-main.dedc0f3 → 0.8.4-main.ead640a

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 (265) hide show
  1. package/dist/lib/browser/{CollectionMain-D2B75XBS.mjs → CollectionMain-AX7KKXWP.mjs} +4 -4
  2. package/dist/lib/browser/CollectionMain-AX7KKXWP.mjs.map +7 -0
  3. package/dist/lib/browser/ObjectDetailsPanel-MQBHG666.mjs +145 -0
  4. package/dist/lib/browser/ObjectDetailsPanel-MQBHG666.mjs.map +7 -0
  5. package/dist/lib/browser/ObjectSettings-KNUZFCGS.mjs +151 -0
  6. package/dist/lib/browser/ObjectSettings-KNUZFCGS.mjs.map +7 -0
  7. package/dist/lib/browser/RecordMain-MV535I2C.mjs +119 -0
  8. package/dist/lib/browser/RecordMain-MV535I2C.mjs.map +7 -0
  9. package/dist/lib/browser/{app-graph-builder-AFC6PNAB.mjs → app-graph-builder-6SNKPPKD.mjs} +61 -58
  10. package/dist/lib/browser/app-graph-builder-6SNKPPKD.mjs.map +7 -0
  11. package/dist/lib/browser/{app-graph-serializer-Q7QG4EKW.mjs → app-graph-serializer-YGUHIKUW.mjs} +14 -14
  12. package/dist/lib/browser/app-graph-serializer-YGUHIKUW.mjs.map +7 -0
  13. package/dist/lib/browser/{chunk-WZYRDFW7.mjs → chunk-2IAM4LHT.mjs} +12 -4
  14. package/dist/lib/browser/chunk-2IAM4LHT.mjs.map +7 -0
  15. package/dist/lib/browser/{chunk-S33AYKSS.mjs → chunk-AB7EFWFA.mjs} +47 -38
  16. package/dist/lib/browser/chunk-AB7EFWFA.mjs.map +7 -0
  17. package/dist/lib/browser/chunk-EIXZABXD.mjs +19 -0
  18. package/dist/lib/browser/chunk-EIXZABXD.mjs.map +7 -0
  19. package/dist/lib/browser/chunk-IRKDREHY.mjs +11 -0
  20. package/dist/lib/browser/chunk-IRKDREHY.mjs.map +7 -0
  21. package/dist/lib/browser/{chunk-6GRF7NEF.mjs → chunk-KXSDZJ5T.mjs} +258 -289
  22. package/dist/lib/browser/chunk-KXSDZJ5T.mjs.map +7 -0
  23. package/dist/lib/browser/chunk-RLI2IAHK.mjs +20 -0
  24. package/dist/lib/browser/chunk-RLI2IAHK.mjs.map +7 -0
  25. package/dist/lib/browser/chunk-TIVKWB5L.mjs +166 -0
  26. package/dist/lib/browser/chunk-TIVKWB5L.mjs.map +7 -0
  27. package/dist/lib/browser/{chunk-URST7EEN.mjs → chunk-WS2PJDES.mjs} +13 -9
  28. package/dist/lib/browser/chunk-WS2PJDES.mjs.map +7 -0
  29. package/dist/lib/browser/{identity-created-T6ZNVE7S.mjs → identity-created-PW2BA46S.mjs} +3 -3
  30. package/dist/lib/browser/{identity-created-T6ZNVE7S.mjs.map → identity-created-PW2BA46S.mjs.map} +1 -1
  31. package/dist/lib/browser/index.mjs +34 -31
  32. package/dist/lib/browser/index.mjs.map +3 -3
  33. package/dist/lib/browser/{intent-resolver-CO262Q44.mjs → intent-resolver-XQSUBM5U.mjs} +30 -28
  34. package/dist/lib/browser/intent-resolver-XQSUBM5U.mjs.map +7 -0
  35. package/dist/lib/browser/meta.json +1 -1
  36. package/dist/lib/browser/{react-root-K4IVLFYZ.mjs → react-root-OIXDY6US.mjs} +11 -11
  37. package/dist/lib/browser/react-root-OIXDY6US.mjs.map +7 -0
  38. package/dist/lib/browser/{react-surface-TPUOK2LC.mjs → react-surface-I4BQVF7V.mjs} +42 -73
  39. package/dist/lib/browser/react-surface-I4BQVF7V.mjs.map +7 -0
  40. package/dist/lib/browser/{schema-defs-YDPFZELA.mjs → schema-defs-7R7RKCAE.mjs} +5 -5
  41. package/dist/lib/browser/{schema-defs-YDPFZELA.mjs.map → schema-defs-7R7RKCAE.mjs.map} +1 -1
  42. package/dist/lib/browser/{settings-ZYH2JWNI.mjs → settings-OBFJ67ZG.mjs} +5 -5
  43. package/dist/lib/browser/{settings-ZYH2JWNI.mjs.map → settings-OBFJ67ZG.mjs.map} +1 -1
  44. package/dist/lib/browser/{spaces-ready-3I5LISH4.mjs → spaces-ready-6YB55EJK.mjs} +8 -8
  45. package/dist/lib/browser/spaces-ready-6YB55EJK.mjs.map +7 -0
  46. package/dist/lib/browser/{state-2RGW7FQG.mjs → state-LSPRFIRO.mjs} +7 -7
  47. package/dist/lib/browser/state-LSPRFIRO.mjs.map +7 -0
  48. package/dist/lib/browser/types/index.mjs +2 -2
  49. package/dist/lib/node-esm/{CollectionMain-ZJIFCWKZ.mjs → CollectionMain-EU57SRYK.mjs} +4 -4
  50. package/dist/lib/node-esm/CollectionMain-EU57SRYK.mjs.map +7 -0
  51. package/dist/lib/node-esm/ObjectDetailsPanel-NABA2S56.mjs +146 -0
  52. package/dist/lib/node-esm/ObjectDetailsPanel-NABA2S56.mjs.map +7 -0
  53. package/dist/lib/node-esm/ObjectSettings-GXGTITF5.mjs +152 -0
  54. package/dist/lib/node-esm/ObjectSettings-GXGTITF5.mjs.map +7 -0
  55. package/dist/lib/node-esm/RecordMain-ME2BU65P.mjs +120 -0
  56. package/dist/lib/node-esm/RecordMain-ME2BU65P.mjs.map +7 -0
  57. package/dist/lib/node-esm/{app-graph-builder-OW2EBYRI.mjs → app-graph-builder-PYG5N3FB.mjs} +61 -58
  58. package/dist/lib/node-esm/app-graph-builder-PYG5N3FB.mjs.map +7 -0
  59. package/dist/lib/node-esm/{app-graph-serializer-6PGC5WR5.mjs → app-graph-serializer-FVQ2WB3U.mjs} +14 -14
  60. package/dist/lib/node-esm/app-graph-serializer-FVQ2WB3U.mjs.map +7 -0
  61. package/dist/lib/node-esm/{chunk-RXDT5LA5.mjs → chunk-4F25JKVT.mjs} +13 -9
  62. package/dist/lib/node-esm/chunk-4F25JKVT.mjs.map +7 -0
  63. package/dist/lib/node-esm/{chunk-LGNPMOXU.mjs → chunk-DNRBVD2G.mjs} +12 -4
  64. package/dist/lib/node-esm/chunk-DNRBVD2G.mjs.map +7 -0
  65. package/dist/lib/node-esm/chunk-GHL2523Z.mjs +167 -0
  66. package/dist/lib/node-esm/chunk-GHL2523Z.mjs.map +7 -0
  67. package/dist/lib/node-esm/chunk-H5UPFRRH.mjs +21 -0
  68. package/dist/lib/node-esm/chunk-H5UPFRRH.mjs.map +7 -0
  69. package/dist/lib/node-esm/{chunk-HWNG4MEU.mjs → chunk-MWNATOXL.mjs} +2 -4
  70. package/dist/lib/node-esm/chunk-MWNATOXL.mjs.map +7 -0
  71. package/dist/lib/node-esm/{chunk-TEUN2E4F.mjs → chunk-QHAVT7PC.mjs} +47 -38
  72. package/dist/lib/node-esm/chunk-QHAVT7PC.mjs.map +7 -0
  73. package/dist/lib/node-esm/chunk-SVFKU7EW.mjs +20 -0
  74. package/dist/lib/node-esm/chunk-SVFKU7EW.mjs.map +7 -0
  75. package/dist/lib/node-esm/{chunk-NMCD2PSG.mjs → chunk-X55EOSEF.mjs} +258 -289
  76. package/dist/lib/node-esm/chunk-X55EOSEF.mjs.map +7 -0
  77. package/dist/lib/node-esm/{identity-created-AL7NNCKH.mjs → identity-created-MWTLGQRU.mjs} +3 -3
  78. package/dist/lib/node-esm/{identity-created-AL7NNCKH.mjs.map → identity-created-MWTLGQRU.mjs.map} +1 -1
  79. package/dist/lib/node-esm/index.mjs +34 -31
  80. package/dist/lib/node-esm/index.mjs.map +3 -3
  81. package/dist/lib/node-esm/{intent-resolver-EXPK4B76.mjs → intent-resolver-27YPEIWX.mjs} +30 -28
  82. package/dist/lib/node-esm/intent-resolver-27YPEIWX.mjs.map +7 -0
  83. package/dist/lib/node-esm/meta.json +1 -1
  84. package/dist/lib/node-esm/{react-root-4OQ7MPGW.mjs → react-root-K7YPW753.mjs} +11 -11
  85. package/dist/lib/node-esm/react-root-K7YPW753.mjs.map +7 -0
  86. package/dist/lib/node-esm/{react-surface-WXEXIDB7.mjs → react-surface-F5LL3JUY.mjs} +42 -73
  87. package/dist/lib/node-esm/react-surface-F5LL3JUY.mjs.map +7 -0
  88. package/dist/lib/node-esm/{schema-defs-OYBCWKAS.mjs → schema-defs-RYG5DSUE.mjs} +5 -5
  89. package/dist/lib/node-esm/{schema-defs-OYBCWKAS.mjs.map → schema-defs-RYG5DSUE.mjs.map} +1 -1
  90. package/dist/lib/node-esm/{settings-2RYFMMTP.mjs → settings-QGWWNMMZ.mjs} +5 -5
  91. package/dist/lib/node-esm/{settings-2RYFMMTP.mjs.map → settings-QGWWNMMZ.mjs.map} +1 -1
  92. package/dist/lib/node-esm/{spaces-ready-JAP22P57.mjs → spaces-ready-EPHL7RGX.mjs} +8 -8
  93. package/dist/lib/node-esm/spaces-ready-EPHL7RGX.mjs.map +7 -0
  94. package/dist/lib/node-esm/{state-7VBVBGNS.mjs → state-TCGOPLRO.mjs} +7 -7
  95. package/dist/lib/node-esm/state-TCGOPLRO.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.map +1 -1
  100. package/dist/types/src/capabilities/capabilities.d.ts +4 -3
  101. package/dist/types/src/capabilities/capabilities.d.ts.map +1 -1
  102. package/dist/types/src/capabilities/react-surface.d.ts.map +1 -1
  103. package/dist/types/src/components/CreateDialog/CreateObjectDialog.d.ts +1 -1
  104. package/dist/types/src/components/CreateDialog/CreateObjectDialog.d.ts.map +1 -1
  105. package/dist/types/src/components/CreateDialog/CreateObjectDialog.stories.d.ts +80 -1
  106. package/dist/types/src/components/CreateDialog/CreateObjectDialog.stories.d.ts.map +1 -1
  107. package/dist/types/src/components/CreateDialog/CreateObjectPanel.d.ts +1 -1
  108. package/dist/types/src/components/CreateDialog/CreateObjectPanel.d.ts.map +1 -1
  109. package/dist/types/src/components/CreateDialog/CreateSpaceDialog.d.ts +1 -1
  110. package/dist/types/src/components/CreateDialog/CreateSpaceDialog.d.ts.map +1 -1
  111. package/dist/types/src/components/JoinDialog.d.ts +1 -1
  112. package/dist/types/src/components/JoinDialog.d.ts.map +1 -1
  113. package/dist/types/src/components/MembersContainer.stories.d.ts +80 -1
  114. package/dist/types/src/components/MembersContainer.stories.d.ts.map +1 -1
  115. package/dist/types/src/components/ObjectDetailsPanel/ObjectDetailsPanel.d.ts +9 -0
  116. package/dist/types/src/components/ObjectDetailsPanel/ObjectDetailsPanel.d.ts.map +1 -0
  117. package/dist/types/src/components/ObjectDetailsPanel/ObjectForm.d.ts +10 -0
  118. package/dist/types/src/components/ObjectDetailsPanel/ObjectForm.d.ts.map +1 -0
  119. package/dist/types/src/components/ObjectDetailsPanel/index.d.ts +3 -0
  120. package/dist/types/src/components/ObjectDetailsPanel/index.d.ts.map +1 -0
  121. package/dist/types/src/components/ObjectSettings/BaseObjectSettings.d.ts +1 -1
  122. package/dist/types/src/components/ObjectSettings/BaseObjectSettings.d.ts.map +1 -1
  123. package/dist/types/src/components/ObjectSettings/BaseObjectSettings.stories.d.ts +1500 -0
  124. package/dist/types/src/components/ObjectSettings/BaseObjectSettings.stories.d.ts.map +1 -0
  125. package/dist/types/src/components/ObjectSettings/ForeignKeys.d.ts +1 -1
  126. package/dist/types/src/components/ObjectSettings/ForeignKeys.d.ts.map +1 -1
  127. package/dist/types/src/components/ObjectSettings/index.d.ts +2 -1
  128. package/dist/types/src/components/ObjectSettings/index.d.ts.map +1 -1
  129. package/dist/types/src/components/PopoverRenameObject.d.ts +1 -1
  130. package/dist/types/src/components/PopoverRenameObject.d.ts.map +1 -1
  131. package/dist/types/src/components/PopoverRenameSpace.d.ts +1 -1
  132. package/dist/types/src/components/PopoverRenameSpace.d.ts.map +1 -1
  133. package/dist/types/src/components/RecordMain.d.ts +1 -1
  134. package/dist/types/src/components/RecordMain.d.ts.map +1 -1
  135. package/dist/types/src/components/SpacePresence.stories.d.ts +82 -3
  136. package/dist/types/src/components/SpacePresence.stories.d.ts.map +1 -1
  137. package/dist/types/src/components/SpaceSettings/SpaceSettingsContainer.d.ts.map +1 -1
  138. package/dist/types/src/components/SpaceSettings/SpaceSettingsContainer.stories.d.ts +80 -1
  139. package/dist/types/src/components/SpaceSettings/SpaceSettingsContainer.stories.d.ts.map +1 -1
  140. package/dist/types/src/components/SyncStatus/SyncStatus.d.ts.map +1 -1
  141. package/dist/types/src/components/SyncStatus/SyncStatus.stories.d.ts +81 -2
  142. package/dist/types/src/components/SyncStatus/SyncStatus.stories.d.ts.map +1 -1
  143. package/dist/types/src/components/ViewEditor.d.ts.map +1 -1
  144. package/dist/types/src/components/index.d.ts +4 -4
  145. package/dist/types/src/components/index.d.ts.map +1 -1
  146. package/dist/types/src/events.d.ts.map +1 -1
  147. package/dist/types/src/hooks/index.d.ts +1 -0
  148. package/dist/types/src/hooks/index.d.ts.map +1 -1
  149. package/dist/types/src/hooks/useInputSurfaceLookup.d.ts +1 -1
  150. package/dist/types/src/hooks/useInputSurfaceLookup.d.ts.map +1 -1
  151. package/dist/types/src/hooks/usePath.d.ts +1 -1
  152. package/dist/types/src/hooks/usePath.d.ts.map +1 -1
  153. package/dist/types/src/hooks/useTypeOptions.d.ts +10 -0
  154. package/dist/types/src/hooks/useTypeOptions.d.ts.map +1 -0
  155. package/dist/types/src/meta.d.ts +0 -1
  156. package/dist/types/src/meta.d.ts.map +1 -1
  157. package/dist/types/src/translations.d.ts +80 -0
  158. package/dist/types/src/translations.d.ts.map +1 -1
  159. package/dist/types/src/types/types.d.ts +54 -52
  160. package/dist/types/src/types/types.d.ts.map +1 -1
  161. package/dist/types/src/util.d.ts +6 -3
  162. package/dist/types/src/util.d.ts.map +1 -1
  163. package/dist/types/tsconfig.tsbuildinfo +1 -1
  164. package/package.json +61 -59
  165. package/src/SpacePlugin.ts +206 -200
  166. package/src/capabilities/app-graph-builder.ts +53 -46
  167. package/src/capabilities/app-graph-serializer.ts +7 -7
  168. package/src/capabilities/capabilities.ts +15 -10
  169. package/src/capabilities/intent-resolver.ts +19 -19
  170. package/src/capabilities/react-root.tsx +2 -2
  171. package/src/capabilities/react-surface.tsx +31 -102
  172. package/src/capabilities/spaces-ready.ts +1 -1
  173. package/src/capabilities/state.ts +2 -2
  174. package/src/components/AwaitingObject.tsx +2 -2
  175. package/src/components/CollectionMain.tsx +2 -2
  176. package/src/components/CollectionSection.tsx +2 -2
  177. package/src/components/CreateDialog/CreateObjectDialog.stories.tsx +5 -5
  178. package/src/components/CreateDialog/CreateObjectDialog.tsx +8 -7
  179. package/src/components/CreateDialog/CreateObjectPanel.tsx +6 -6
  180. package/src/components/CreateDialog/CreateSpaceDialog.tsx +5 -4
  181. package/src/components/JoinDialog.tsx +6 -6
  182. package/src/components/MembersContainer.stories.tsx +6 -5
  183. package/src/components/MembersContainer.tsx +6 -6
  184. package/src/components/MenuFooter.tsx +2 -2
  185. package/src/components/{ObjectDetailsPanel.tsx → ObjectDetailsPanel/ObjectDetailsPanel.tsx} +9 -36
  186. package/src/components/ObjectDetailsPanel/ObjectForm.tsx +75 -0
  187. package/src/components/ObjectDetailsPanel/index.ts +7 -0
  188. package/src/components/ObjectSettings/AdvancedObjectSettings.tsx +3 -3
  189. package/src/components/ObjectSettings/BaseObjectSettings.stories.tsx +63 -0
  190. package/src/components/ObjectSettings/BaseObjectSettings.tsx +96 -26
  191. package/src/components/ObjectSettings/ForeignKeys.tsx +3 -3
  192. package/src/components/ObjectSettings/index.ts +3 -1
  193. package/src/components/PersistenceStatus.tsx +2 -2
  194. package/src/components/PopoverRenameObject.tsx +3 -3
  195. package/src/components/PopoverRenameSpace.tsx +3 -3
  196. package/src/components/RecordMain.tsx +61 -9
  197. package/src/components/SchemaContainer.tsx +3 -3
  198. package/src/components/SpacePluginSettings.tsx +2 -2
  199. package/src/components/SpacePresence.stories.tsx +22 -24
  200. package/src/components/SpacePresence.tsx +3 -3
  201. package/src/components/SpaceSettings/SpaceSettingsContainer.stories.tsx +9 -4
  202. package/src/components/SpaceSettings/SpaceSettingsContainer.tsx +13 -12
  203. package/src/components/SyncStatus/InlineSyncStatus.tsx +7 -7
  204. package/src/components/SyncStatus/SyncStatus.stories.tsx +4 -5
  205. package/src/components/SyncStatus/SyncStatus.tsx +92 -5
  206. package/src/components/ViewEditor.tsx +6 -7
  207. package/src/components/index.ts +1 -1
  208. package/src/events.ts +6 -6
  209. package/src/hooks/index.ts +1 -0
  210. package/src/hooks/useInputSurfaceLookup.tsx +1 -1
  211. package/src/hooks/usePath.ts +1 -1
  212. package/src/hooks/useTypeOptions.ts +59 -0
  213. package/src/meta.ts +1 -3
  214. package/src/translations.ts +10 -1
  215. package/src/types/types.ts +11 -7
  216. package/src/util.tsx +46 -32
  217. package/dist/lib/browser/CollectionMain-D2B75XBS.mjs.map +0 -7
  218. package/dist/lib/browser/ObjectDetailsPanel-J7KGPJJK.mjs +0 -90
  219. package/dist/lib/browser/ObjectDetailsPanel-J7KGPJJK.mjs.map +0 -7
  220. package/dist/lib/browser/RecordMain-TEBGAVSL.mjs +0 -68
  221. package/dist/lib/browser/RecordMain-TEBGAVSL.mjs.map +0 -7
  222. package/dist/lib/browser/app-graph-builder-AFC6PNAB.mjs.map +0 -7
  223. package/dist/lib/browser/app-graph-serializer-Q7QG4EKW.mjs.map +0 -7
  224. package/dist/lib/browser/chunk-6GRF7NEF.mjs.map +0 -7
  225. package/dist/lib/browser/chunk-CBYL62HG.mjs +0 -19
  226. package/dist/lib/browser/chunk-CBYL62HG.mjs.map +0 -7
  227. package/dist/lib/browser/chunk-ELJDGQTO.mjs +0 -94
  228. package/dist/lib/browser/chunk-ELJDGQTO.mjs.map +0 -7
  229. package/dist/lib/browser/chunk-FBCGT5YY.mjs +0 -13
  230. package/dist/lib/browser/chunk-FBCGT5YY.mjs.map +0 -7
  231. package/dist/lib/browser/chunk-S33AYKSS.mjs.map +0 -7
  232. package/dist/lib/browser/chunk-TUQZO5P4.mjs +0 -20
  233. package/dist/lib/browser/chunk-TUQZO5P4.mjs.map +0 -7
  234. package/dist/lib/browser/chunk-URST7EEN.mjs.map +0 -7
  235. package/dist/lib/browser/chunk-WZYRDFW7.mjs.map +0 -7
  236. package/dist/lib/browser/intent-resolver-CO262Q44.mjs.map +0 -7
  237. package/dist/lib/browser/react-root-K4IVLFYZ.mjs.map +0 -7
  238. package/dist/lib/browser/react-surface-TPUOK2LC.mjs.map +0 -7
  239. package/dist/lib/browser/spaces-ready-3I5LISH4.mjs.map +0 -7
  240. package/dist/lib/browser/state-2RGW7FQG.mjs.map +0 -7
  241. package/dist/lib/node-esm/CollectionMain-ZJIFCWKZ.mjs.map +0 -7
  242. package/dist/lib/node-esm/ObjectDetailsPanel-7ADOXZ5W.mjs +0 -91
  243. package/dist/lib/node-esm/ObjectDetailsPanel-7ADOXZ5W.mjs.map +0 -7
  244. package/dist/lib/node-esm/RecordMain-WLYJMYER.mjs +0 -70
  245. package/dist/lib/node-esm/RecordMain-WLYJMYER.mjs.map +0 -7
  246. package/dist/lib/node-esm/app-graph-builder-OW2EBYRI.mjs.map +0 -7
  247. package/dist/lib/node-esm/app-graph-serializer-6PGC5WR5.mjs.map +0 -7
  248. package/dist/lib/node-esm/chunk-FJZNSJC4.mjs +0 -20
  249. package/dist/lib/node-esm/chunk-FJZNSJC4.mjs.map +0 -7
  250. package/dist/lib/node-esm/chunk-HC677WUJ.mjs +0 -21
  251. package/dist/lib/node-esm/chunk-HC677WUJ.mjs.map +0 -7
  252. package/dist/lib/node-esm/chunk-HWNG4MEU.mjs.map +0 -7
  253. package/dist/lib/node-esm/chunk-LGNPMOXU.mjs.map +0 -7
  254. package/dist/lib/node-esm/chunk-NMCD2PSG.mjs.map +0 -7
  255. package/dist/lib/node-esm/chunk-Q6AAQLQG.mjs +0 -96
  256. package/dist/lib/node-esm/chunk-Q6AAQLQG.mjs.map +0 -7
  257. package/dist/lib/node-esm/chunk-RXDT5LA5.mjs.map +0 -7
  258. package/dist/lib/node-esm/chunk-TEUN2E4F.mjs.map +0 -7
  259. package/dist/lib/node-esm/intent-resolver-EXPK4B76.mjs.map +0 -7
  260. package/dist/lib/node-esm/react-root-4OQ7MPGW.mjs.map +0 -7
  261. package/dist/lib/node-esm/react-surface-WXEXIDB7.mjs.map +0 -7
  262. package/dist/lib/node-esm/spaces-ready-JAP22P57.mjs.map +0 -7
  263. package/dist/lib/node-esm/state-7VBVBGNS.mjs.map +0 -7
  264. package/dist/types/src/components/ObjectDetailsPanel.d.ts +0 -9
  265. package/dist/types/src/components/ObjectDetailsPanel.d.ts.map +0 -1
@@ -1,7 +1,7 @@
1
1
  import { createRequire } from 'node:module';const require = createRequire(import.meta.url);
2
2
  import {
3
- SPACE_PLUGIN
4
- } from "./chunk-HWNG4MEU.mjs";
3
+ meta
4
+ } from "./chunk-MWNATOXL.mjs";
5
5
 
6
6
  // src/components/CollectionMain.tsx
7
7
  import { useSignals as _useSignals } from "@preact-signals/safe-react/tracking";
@@ -11,7 +11,7 @@ import { baseSurface, descriptionMessage, mx } from "@dxos/react-ui-theme";
11
11
  var CollectionMain = ({ collection }) => {
12
12
  var _effect = _useSignals();
13
13
  try {
14
- const { t } = useTranslation(SPACE_PLUGIN);
14
+ const { t } = useTranslation(meta.id);
15
15
  return /* @__PURE__ */ React.createElement("div", {
16
16
  role: "none",
17
17
  className: mx(baseSurface, "min-bs-screen is-full flex items-center justify-center p-8"),
@@ -29,4 +29,4 @@ export {
29
29
  CollectionMain,
30
30
  CollectionMain_default as default
31
31
  };
32
- //# sourceMappingURL=CollectionMain-ZJIFCWKZ.mjs.map
32
+ //# sourceMappingURL=CollectionMain-EU57SRYK.mjs.map
@@ -0,0 +1,7 @@
1
+ {
2
+ "version": 3,
3
+ "sources": ["../../../src/components/CollectionMain.tsx"],
4
+ "sourcesContent": ["//\n// Copyright 2023 DXOS.org\n//\n\nimport React from 'react';\n\nimport { useTranslation } from '@dxos/react-ui';\nimport { baseSurface, descriptionMessage, mx } from '@dxos/react-ui-theme';\nimport { type DataType } from '@dxos/schema';\n\nimport { meta } from '../meta';\n\nexport const CollectionMain = ({ collection }: { collection: DataType.Collection }) => {\n const { t } = useTranslation(meta.id);\n\n return (\n <div\n role='none'\n className={mx(baseSurface, 'min-bs-screen is-full flex items-center justify-center p-8')}\n data-testid='composer.firstRunMessage'\n >\n <p\n role='alert'\n className={mx(descriptionMessage, 'rounded-md p-8 font-normal text-lg max-is-[24rem] break-words')}\n >\n {collection.name ?? t('unnamed collection label')}\n </p>\n </div>\n );\n};\n\nexport default CollectionMain;\n"],
5
+ "mappings": ";;;;;;;AAIA,OAAOA,WAAW;AAElB,SAASC,sBAAsB;AAC/B,SAASC,aAAaC,oBAAoBC,UAAU;AAK7C,IAAMC,iBAAiB,CAAC,EAAEC,WAAU,MAAuC;;;AAChF,UAAM,EAAEC,EAAC,IAAKC,eAAeC,KAAKC,EAAE;AAEpC,WACE,sBAAA,cAACC,OAAAA;MACCC,MAAK;MACLC,WAAWC,GAAGC,aAAa,4DAAA;MAC3BC,eAAY;OAEZ,sBAAA,cAACC,KAAAA;MACCL,MAAK;MACLC,WAAWC,GAAGI,oBAAoB,+DAAA;OAEjCZ,WAAWa,QAAQZ,EAAE,0BAAA,CAAA,CAAA;;;;AAI9B;AAEA,IAAA,yBAAeF;",
6
+ "names": ["React", "useTranslation", "baseSurface", "descriptionMessage", "mx", "CollectionMain", "collection", "t", "useTranslation", "meta", "id", "div", "role", "className", "mx", "baseSurface", "data-testid", "p", "descriptionMessage", "name"]
7
+ }
@@ -0,0 +1,146 @@
1
+ import { createRequire } from 'node:module';const require = createRequire(import.meta.url);
2
+ import {
3
+ meta
4
+ } from "./chunk-MWNATOXL.mjs";
5
+
6
+ // src/components/ObjectDetailsPanel/ObjectDetailsPanel.tsx
7
+ import { useSignals as _useSignals2 } from "@preact-signals/safe-react/tracking";
8
+ import React2 from "react";
9
+ import { useClient } from "@dxos/react-client";
10
+ import { Filter, getSpace as getSpace2, useQuery, useSchema } from "@dxos/react-client/echo";
11
+ import { Callout, useTranslation } from "@dxos/react-ui";
12
+ import { useSelected } from "@dxos/react-ui-attention";
13
+ import { getTypenameFromQuery } from "@dxos/schema";
14
+ import { isNonNullable } from "@dxos/util";
15
+
16
+ // src/components/ObjectDetailsPanel/ObjectForm.tsx
17
+ import { useSignals as _useSignals } from "@preact-signals/safe-react/tracking";
18
+ import * as Schema from "effect/Schema";
19
+ import React, { useCallback, useMemo } from "react";
20
+ import { DXN, Obj, Tag, Type } from "@dxos/echo";
21
+ import { setValue } from "@dxos/echo/internal";
22
+ import { invariant } from "@dxos/invariant";
23
+ import { getSpace } from "@dxos/react-client/echo";
24
+ import { Form, useRefQueryLookupHandler } from "@dxos/react-ui-form";
25
+ var __dxlog_file = "/__w/dxos/dxos/packages/plugins/plugin-space/src/components/ObjectDetailsPanel/ObjectForm.tsx";
26
+ var TagSchema = Tag.Tag.pipe(Schema.omit("id"));
27
+ var ObjectForm = ({ object, schema }) => {
28
+ var _effect = _useSignals();
29
+ try {
30
+ const space = getSpace(object);
31
+ const handleRefQueryLookup = useRefQueryLookupHandler({
32
+ space
33
+ });
34
+ const formSchema = useMemo(() => Schema.Struct({
35
+ tag: Type.Ref(Tag.Tag).pipe(Schema.optional)
36
+ }).pipe(Schema.extend(schema)), [
37
+ schema
38
+ ]);
39
+ const meta2 = Obj.getMeta(object);
40
+ const tag = meta2.tags?.[0] ? space?.db.ref(DXN.parse(meta2.tags?.[0])) : void 0;
41
+ const values = useMemo(() => ({
42
+ tag,
43
+ ...object
44
+ }), [
45
+ object,
46
+ tag
47
+ ]);
48
+ const handleCreateTag = useCallback((values2) => {
49
+ invariant(space, void 0, {
50
+ F: __dxlog_file,
51
+ L: 34,
52
+ S: void 0,
53
+ A: [
54
+ "space",
55
+ ""
56
+ ]
57
+ });
58
+ const tag2 = space.db.add(Tag.make(values2));
59
+ const meta3 = Obj.getMeta(object);
60
+ meta3.tags = [
61
+ Obj.getDXN(tag2).toString()
62
+ ];
63
+ }, []);
64
+ const handleSave = useCallback((values2, { changed }) => {
65
+ const changedPaths = Object.keys(changed).filter((path) => changed[path]);
66
+ for (const path of changedPaths) {
67
+ if (path === "tag") {
68
+ const tag2 = values2[path];
69
+ const meta3 = Obj.getMeta(object);
70
+ const currentTag = meta3.tags?.[0];
71
+ if (currentTag !== tag2?.dxn.toString()) {
72
+ meta3.tags = tag2 ? [
73
+ tag2.dxn.toString()
74
+ ] : [];
75
+ }
76
+ continue;
77
+ }
78
+ const value = values2[path];
79
+ setValue(object, path, value);
80
+ }
81
+ }, [
82
+ object
83
+ ]);
84
+ return /* @__PURE__ */ React.createElement(Form, {
85
+ autoSave: true,
86
+ schema: formSchema,
87
+ values,
88
+ createSchema: TagSchema,
89
+ createOptionIcon: "ph--plus--regular",
90
+ createOptionLabel: [
91
+ "add tag label",
92
+ {
93
+ ns: meta.id
94
+ }
95
+ ],
96
+ createInitialValuePath: "label",
97
+ onCreate: handleCreateTag,
98
+ onSave: handleSave,
99
+ onQueryRefOptions: handleRefQueryLookup
100
+ });
101
+ } finally {
102
+ _effect.f();
103
+ }
104
+ };
105
+
106
+ // src/components/ObjectDetailsPanel/ObjectDetailsPanel.tsx
107
+ var ObjectDetailsPanel = ({ objectId, view }) => {
108
+ var _effect = _useSignals2();
109
+ try {
110
+ const { t } = useTranslation(meta.id);
111
+ const client = useClient();
112
+ const space = getSpace2(view);
113
+ const typename = view.query ? getTypenameFromQuery(view.query.ast) : void 0;
114
+ const schema = useSchema(client, space, typename);
115
+ const queriedObjects = useQuery(space, schema ? Filter.type(schema) : Filter.nothing());
116
+ const selectedRows = useSelected(objectId, "multi");
117
+ const selectedObjects = selectedRows.map((id) => queriedObjects.find((obj) => obj.id === id)).filter(isNonNullable);
118
+ if (selectedObjects.length === 0) {
119
+ return /* @__PURE__ */ React2.createElement("div", {
120
+ role: "none",
121
+ className: "plb-cardSpacingBlock pli-cardSpacingInline"
122
+ }, /* @__PURE__ */ React2.createElement(Callout.Root, {
123
+ classNames: "is-full"
124
+ }, /* @__PURE__ */ React2.createElement(Callout.Title, null, t("row details no selection label"))));
125
+ }
126
+ return /* @__PURE__ */ React2.createElement("div", {
127
+ role: "none",
128
+ className: "bs-full is-full flex flex-col p-2 gap-1 overflow-y-auto"
129
+ }, schema && selectedObjects.map((object) => /* @__PURE__ */ React2.createElement("div", {
130
+ key: object.id,
131
+ className: "border border-separator rounded"
132
+ }, /* @__PURE__ */ React2.createElement(ObjectForm, {
133
+ object,
134
+ schema
135
+ }))));
136
+ } finally {
137
+ _effect.f();
138
+ }
139
+ };
140
+
141
+ // src/components/ObjectDetailsPanel/index.ts
142
+ var ObjectDetailsPanel_default = ObjectDetailsPanel;
143
+ export {
144
+ ObjectDetailsPanel_default as default
145
+ };
146
+ //# sourceMappingURL=ObjectDetailsPanel-NABA2S56.mjs.map
@@ -0,0 +1,7 @@
1
+ {
2
+ "version": 3,
3
+ "sources": ["../../../src/components/ObjectDetailsPanel/ObjectDetailsPanel.tsx", "../../../src/components/ObjectDetailsPanel/ObjectForm.tsx", "../../../src/components/ObjectDetailsPanel/index.ts"],
4
+ "sourcesContent": ["//\n// Copyright 2025 DXOS.org\n//\n\nimport React from 'react';\n\nimport { useClient } from '@dxos/react-client';\nimport { Filter, getSpace, useQuery, useSchema } from '@dxos/react-client/echo';\nimport { Callout, useTranslation } from '@dxos/react-ui';\nimport { useSelected } from '@dxos/react-ui-attention';\nimport { type DataType } from '@dxos/schema';\nimport { getTypenameFromQuery } from '@dxos/schema';\nimport { isNonNullable } from '@dxos/util';\n\nimport { meta } from '../../meta';\n\nimport { ObjectForm } from './ObjectForm';\n\ntype RowDetailsPanelProps = { objectId: string; view: DataType.View };\n\nexport const ObjectDetailsPanel = ({ objectId, view }: RowDetailsPanelProps) => {\n const { t } = useTranslation(meta.id);\n const client = useClient();\n const space = getSpace(view);\n const typename = view.query ? getTypenameFromQuery(view.query.ast) : undefined;\n const schema = useSchema(client, space, typename);\n\n const queriedObjects = useQuery(space, schema ? Filter.type(schema) : Filter.nothing());\n const selectedRows = useSelected(objectId, 'multi');\n const selectedObjects = selectedRows.map((id) => queriedObjects.find((obj) => obj.id === id)).filter(isNonNullable);\n\n if (selectedObjects.length === 0) {\n return (\n <div role='none' className='plb-cardSpacingBlock pli-cardSpacingInline'>\n <Callout.Root classNames='is-full'>\n <Callout.Title>{t('row details no selection label')}</Callout.Title>\n </Callout.Root>\n </div>\n );\n }\n\n return (\n <div role='none' className='bs-full is-full flex flex-col p-2 gap-1 overflow-y-auto'>\n {schema &&\n selectedObjects.map((object) => (\n <div key={object.id} className='border border-separator rounded'>\n <ObjectForm object={object} schema={schema} />\n </div>\n ))}\n </div>\n );\n};\n", "//\n// Copyright 2025 DXOS.org\n//\n\nimport * as Schema from 'effect/Schema';\nimport React, { useCallback, useMemo } from 'react';\n\nimport { DXN, Obj, Tag, Type } from '@dxos/echo';\nimport { type JsonPath, setValue } from '@dxos/echo/internal';\nimport { invariant } from '@dxos/invariant';\nimport { getSpace } from '@dxos/react-client/echo';\nimport { Form, useRefQueryLookupHandler } from '@dxos/react-ui-form';\n\nimport { meta as pluginMeta } from '../../meta';\n\nconst TagSchema = Tag.Tag.pipe(Schema.omit('id'));\n\ntype ObjectFormProps = { object: Obj.Any; schema: Schema.Schema.AnyNoContext };\n\nexport const ObjectForm = ({ object, schema }: ObjectFormProps) => {\n const space = getSpace(object);\n const handleRefQueryLookup = useRefQueryLookupHandler({ space });\n\n const formSchema = useMemo(\n () => Schema.Struct({ tag: Type.Ref(Tag.Tag).pipe(Schema.optional) }).pipe(Schema.extend(schema)),\n [schema],\n );\n\n const meta = Obj.getMeta(object);\n const tag = meta.tags?.[0] ? space?.db.ref(DXN.parse(meta.tags?.[0])) : undefined;\n const values = useMemo(() => ({ tag, ...object }), [object, tag]);\n\n const handleCreateTag = useCallback((values: Schema.Schema.Type<typeof TagSchema>) => {\n invariant(space);\n const tag = space.db.add(Tag.make(values));\n const meta = Obj.getMeta(object);\n meta.tags = [Obj.getDXN(tag).toString()];\n }, []);\n\n const handleSave = useCallback(\n (values: any, { changed }: { changed: Record<JsonPath, boolean> }) => {\n const changedPaths = Object.keys(changed).filter((path) => changed[path as JsonPath]) as JsonPath[];\n for (const path of changedPaths) {\n if (path === 'tag') {\n const tag = values[path];\n const meta = Obj.getMeta(object);\n const currentTag = meta.tags?.[0];\n if (currentTag !== tag?.dxn.toString()) {\n meta.tags = tag ? [tag.dxn.toString()] : [];\n }\n continue;\n }\n\n const value = values[path];\n setValue(object, path, value);\n }\n },\n [object],\n );\n\n return (\n <Form\n autoSave\n schema={formSchema}\n values={values}\n createSchema={TagSchema}\n createOptionIcon='ph--plus--regular'\n createOptionLabel={['add tag label', { ns: pluginMeta.id }]}\n createInitialValuePath='label'\n onCreate={handleCreateTag}\n onSave={handleSave}\n onQueryRefOptions={handleRefQueryLookup}\n />\n );\n};\n", "//\n// Copyright 2025 DXOS.org\n//\n\nimport { ObjectDetailsPanel } from './ObjectDetailsPanel';\n\nexport default ObjectDetailsPanel;\n"],
5
+ "mappings": "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",
6
+ "names": ["React", "useClient", "Filter", "getSpace", "useQuery", "useSchema", "Callout", "useTranslation", "useSelected", "getTypenameFromQuery", "isNonNullable", "Schema", "React", "useCallback", "useMemo", "DXN", "Obj", "Tag", "Type", "setValue", "invariant", "getSpace", "Form", "useRefQueryLookupHandler", "TagSchema", "Tag", "pipe", "omit", "ObjectForm", "object", "schema", "space", "getSpace", "handleRefQueryLookup", "useRefQueryLookupHandler", "formSchema", "useMemo", "Struct", "tag", "Type", "Ref", "optional", "extend", "meta", "Obj", "getMeta", "tags", "db", "ref", "DXN", "parse", "undefined", "values", "handleCreateTag", "useCallback", "invariant", "add", "make", "getDXN", "toString", "handleSave", "changed", "changedPaths", "Object", "keys", "filter", "path", "currentTag", "dxn", "value", "setValue", "Form", "autoSave", "createSchema", "createOptionIcon", "createOptionLabel", "ns", "pluginMeta", "id", "createInitialValuePath", "onCreate", "onSave", "onQueryRefOptions", "ObjectDetailsPanel", "objectId", "view", "t", "useTranslation", "meta", "id", "client", "useClient", "space", "getSpace", "typename", "query", "getTypenameFromQuery", "ast", "undefined", "schema", "useSchema", "queriedObjects", "useQuery", "Filter", "type", "nothing", "selectedRows", "useSelected", "selectedObjects", "map", "find", "obj", "filter", "isNonNullable", "length", "React", "div", "role", "className", "Callout", "Root", "classNames", "Title", "object", "key", "ObjectForm", "ObjectDetailsPanel"]
7
+ }
@@ -0,0 +1,152 @@
1
+ import { createRequire } from 'node:module';const require = createRequire(import.meta.url);
2
+ import {
3
+ meta
4
+ } from "./chunk-MWNATOXL.mjs";
5
+
6
+ // src/components/ObjectSettings/ObjectSettingsContainer.tsx
7
+ import { useSignals as _useSignals2 } from "@preact-signals/safe-react/tracking";
8
+ import React2, { useMemo as useMemo2 } from "react";
9
+ import { Surface } from "@dxos/app-framework";
10
+ import { Clipboard, Toolbar } from "@dxos/react-ui";
11
+ import { StackItem } from "@dxos/react-ui-stack";
12
+
13
+ // src/components/ObjectSettings/BaseObjectSettings.tsx
14
+ import { useSignals as _useSignals } from "@preact-signals/safe-react/tracking";
15
+ import * as Function from "effect/Function";
16
+ import * as Option from "effect/Option";
17
+ import * as Schema from "effect/Schema";
18
+ import React, { useCallback, useMemo } from "react";
19
+ import { DXN, Obj, Tag, Type } from "@dxos/echo";
20
+ import { DescriptionAnnotation } from "@dxos/echo/internal";
21
+ import { invariant } from "@dxos/invariant";
22
+ import { getSpace } from "@dxos/react-client/echo";
23
+ import { Form, useRefQueryLookupHandler } from "@dxos/react-ui-form";
24
+ var __dxlog_file = "/__w/dxos/dxos/packages/plugins/plugin-space/src/components/ObjectSettings/BaseObjectSettings.tsx";
25
+ var BaseSchema = Schema.Struct({
26
+ label: Schema.String.pipe(Schema.optional),
27
+ // TODO(wittjosiah): Support multiple tags.
28
+ tag: Type.Ref(Tag.Tag).pipe(Schema.optional)
29
+ });
30
+ var BaseSchemaWithDescription = Schema.Struct({
31
+ label: Schema.String.pipe(Schema.optional),
32
+ description: Schema.String.pipe(Schema.optional),
33
+ tag: Type.Ref(Tag.Tag).pipe(Schema.optional)
34
+ });
35
+ var TagSchema = Tag.Tag.pipe(Schema.omit("id"));
36
+ var BaseObjectSettings = ({ classNames, children, object }) => {
37
+ var _effect = _useSignals();
38
+ try {
39
+ const space = getSpace(object);
40
+ const handleRefQueryLookup = useRefQueryLookupHandler({
41
+ space
42
+ });
43
+ const formSchema = useMemo(() => {
44
+ const description = Function.pipe(Obj.getSchema(object), Option.fromNullable, Option.flatMap((schema) => DescriptionAnnotation.get(schema)), Option.getOrUndefined);
45
+ if (description) {
46
+ return BaseSchemaWithDescription;
47
+ } else {
48
+ return BaseSchema;
49
+ }
50
+ }, [
51
+ object
52
+ ]);
53
+ const meta2 = Obj.getMeta(object);
54
+ const tag = meta2.tags?.[0] ? space?.db.ref(DXN.parse(meta2.tags?.[0])) : void 0;
55
+ const values = useMemo(() => ({
56
+ label: Obj.getLabel(object),
57
+ description: Obj.getDescription(object),
58
+ tag
59
+ }), [
60
+ object,
61
+ tag
62
+ ]);
63
+ const handleCreateTag = useCallback((values2) => {
64
+ invariant(space, void 0, {
65
+ F: __dxlog_file,
66
+ L: 72,
67
+ S: void 0,
68
+ A: [
69
+ "space",
70
+ ""
71
+ ]
72
+ });
73
+ const tag2 = space.db.add(Tag.make(values2));
74
+ const meta3 = Obj.getMeta(object);
75
+ meta3.tags = [
76
+ Obj.getDXN(tag2).toString()
77
+ ];
78
+ }, []);
79
+ const handleSave = useCallback((values2) => {
80
+ if (values2.label !== void 0 && Obj.getLabel(object) !== values2.label) {
81
+ Obj.setLabel(object, values2.label);
82
+ }
83
+ if (values2.description !== void 0 && Obj.getDescription(object) !== values2.description) {
84
+ Obj.setDescription(object, values2.description);
85
+ }
86
+ const meta3 = Obj.getMeta(object);
87
+ const currentTag = meta3.tags?.[0];
88
+ if (values2.tag !== void 0 && currentTag !== values2.tag?.dxn.toString()) {
89
+ meta3.tags = [
90
+ values2.tag.dxn.toString()
91
+ ];
92
+ }
93
+ }, [
94
+ object
95
+ ]);
96
+ return /* @__PURE__ */ React.createElement(React.Fragment, null, /* @__PURE__ */ React.createElement(Form, {
97
+ outerSpacing: false,
98
+ autoSave: true,
99
+ schema: formSchema,
100
+ values,
101
+ createSchema: TagSchema,
102
+ createOptionIcon: "ph--plus--regular",
103
+ createOptionLabel: [
104
+ "add tag label",
105
+ {
106
+ ns: meta.id
107
+ }
108
+ ],
109
+ createInitialValuePath: "label",
110
+ onCreate: handleCreateTag,
111
+ onSave: handleSave,
112
+ onQueryRefOptions: handleRefQueryLookup
113
+ }), children);
114
+ } finally {
115
+ _effect.f();
116
+ }
117
+ };
118
+
119
+ // src/components/ObjectSettings/ObjectSettingsContainer.tsx
120
+ var ObjectSettingsContainer = ({ object, role }) => {
121
+ var _effect = _useSignals2();
122
+ try {
123
+ const data = useMemo2(() => ({
124
+ subject: object
125
+ }), [
126
+ object
127
+ ]);
128
+ return /* @__PURE__ */ React2.createElement(Clipboard.Provider, null, /* @__PURE__ */ React2.createElement(StackItem.Content, {
129
+ toolbar: true
130
+ }, /* @__PURE__ */ React2.createElement(Toolbar.Root, null), /* @__PURE__ */ React2.createElement("div", {
131
+ role: "none",
132
+ className: "overflow-y-auto pli-cardSpacingInline plb-cardSpacingBlock"
133
+ }, /* @__PURE__ */ React2.createElement(BaseObjectSettings, {
134
+ object
135
+ }, /* @__PURE__ */ React2.createElement(Surface, {
136
+ role: "base-object-settings",
137
+ data
138
+ })), /* @__PURE__ */ React2.createElement(Surface, {
139
+ role: "object-settings",
140
+ data
141
+ }))));
142
+ } finally {
143
+ _effect.f();
144
+ }
145
+ };
146
+
147
+ // src/components/ObjectSettings/index.ts
148
+ var ObjectSettings_default = ObjectSettingsContainer;
149
+ export {
150
+ ObjectSettings_default as default
151
+ };
152
+ //# sourceMappingURL=ObjectSettings-GXGTITF5.mjs.map
@@ -0,0 +1,7 @@
1
+ {
2
+ "version": 3,
3
+ "sources": ["../../../src/components/ObjectSettings/ObjectSettingsContainer.tsx", "../../../src/components/ObjectSettings/BaseObjectSettings.tsx", "../../../src/components/ObjectSettings/index.ts"],
4
+ "sourcesContent": ["//\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, Toolbar } 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>\n <Toolbar.Root></Toolbar.Root>\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 * as Function from 'effect/Function';\nimport * as Option from 'effect/Option';\nimport * as Schema from 'effect/Schema';\nimport React, { type PropsWithChildren, useCallback, useMemo } from 'react';\n\nimport { DXN, Obj, Tag, Type } from '@dxos/echo';\nimport { DescriptionAnnotation } from '@dxos/echo/internal';\nimport { invariant } from '@dxos/invariant';\nimport { getSpace } from '@dxos/react-client/echo';\nimport { type ThemedClassName } from '@dxos/react-ui';\nimport { Form, useRefQueryLookupHandler } from '@dxos/react-ui-form';\n\nimport { meta as pluginMeta } from '../../meta';\n\nconst BaseSchema = Schema.Struct({\n label: Schema.String.pipe(Schema.optional),\n // TODO(wittjosiah): Support multiple tags.\n tag: Type.Ref(Tag.Tag).pipe(Schema.optional),\n});\n\n// TODO(wittjosiah): Use extend but need to be able to control order of fields.\nconst BaseSchemaWithDescription = Schema.Struct({\n label: Schema.String.pipe(Schema.optional),\n description: Schema.String.pipe(Schema.optional),\n tag: Type.Ref(Tag.Tag).pipe(Schema.optional),\n});\n\n// TODO(wittjosiah): Better way to support validation of object schemas?\nconst TagSchema = Tag.Tag.pipe(Schema.omit('id'));\n\nexport type BaseObjectSettingsProps = ThemedClassName<\n PropsWithChildren<{\n object: Obj.Any;\n }>\n>;\n\n// TODO(wittjosiah): Reconcile w/ ObjectDetailsPanel.\nexport const BaseObjectSettings = ({ classNames, children, object }: BaseObjectSettingsProps) => {\n const space = getSpace(object);\n const handleRefQueryLookup = useRefQueryLookupHandler({ space });\n\n const formSchema = useMemo(() => {\n const description = Function.pipe(\n Obj.getSchema(object),\n Option.fromNullable,\n Option.flatMap((schema) => DescriptionAnnotation.get(schema)),\n Option.getOrUndefined,\n );\n if (description) {\n return BaseSchemaWithDescription;\n } else {\n return BaseSchema;\n }\n }, [object]);\n\n const meta = Obj.getMeta(object);\n const tag = meta.tags?.[0] ? space?.db.ref(DXN.parse(meta.tags?.[0])) : undefined;\n const values = useMemo(\n () => ({\n label: Obj.getLabel(object),\n description: Obj.getDescription(object),\n tag,\n }),\n [object, tag],\n );\n\n const handleCreateTag = useCallback((values: Schema.Schema.Type<typeof TagSchema>) => {\n invariant(space);\n const tag = space.db.add(Tag.make(values));\n const meta = Obj.getMeta(object);\n meta.tags = [Obj.getDXN(tag).toString()];\n }, []);\n\n const handleSave = useCallback(\n (values: Schema.Schema.Type<typeof BaseSchemaWithDescription>) => {\n if (values.label !== undefined && Obj.getLabel(object) !== values.label) {\n Obj.setLabel(object, values.label);\n }\n\n if (values.description !== undefined && Obj.getDescription(object) !== values.description) {\n Obj.setDescription(object, values.description);\n }\n\n const meta = Obj.getMeta(object);\n const currentTag = meta.tags?.[0];\n if (values.tag !== undefined && currentTag !== values.tag?.dxn.toString()) {\n meta.tags = [values.tag.dxn.toString()];\n }\n },\n [object],\n );\n\n // TODO(wittjosiah): The schema for this form should be based on the schema of the object.\n // Perhaps with fields filtered down to only those with a specific settings annotation.\n return (\n <>\n <Form\n outerSpacing={false}\n autoSave\n schema={formSchema}\n values={values}\n createSchema={TagSchema}\n createOptionIcon='ph--plus--regular'\n createOptionLabel={['add tag label', { ns: pluginMeta.id }]}\n createInitialValuePath='label'\n onCreate={handleCreateTag}\n onSave={handleSave}\n onQueryRefOptions={handleRefQueryLookup}\n />\n {children}\n </>\n );\n};\n", "//\n// Copyright 2025 DXOS.org\n//\n\nimport { ObjectSettingsContainer } from './ObjectSettingsContainer';\n\nexport default ObjectSettingsContainer;\n"],
5
+ "mappings": "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",
6
+ "names": ["React", "useMemo", "Surface", "Clipboard", "Toolbar", "StackItem", "Function", "Option", "Schema", "React", "useCallback", "useMemo", "DXN", "Obj", "Tag", "Type", "DescriptionAnnotation", "invariant", "getSpace", "Form", "useRefQueryLookupHandler", "BaseSchema", "Struct", "label", "String", "pipe", "optional", "tag", "Type", "Ref", "Tag", "BaseSchemaWithDescription", "description", "TagSchema", "omit", "BaseObjectSettings", "classNames", "children", "object", "space", "getSpace", "handleRefQueryLookup", "useRefQueryLookupHandler", "formSchema", "useMemo", "Obj", "getSchema", "fromNullable", "flatMap", "schema", "DescriptionAnnotation", "get", "getOrUndefined", "meta", "getMeta", "tags", "db", "ref", "DXN", "parse", "undefined", "values", "getLabel", "getDescription", "handleCreateTag", "useCallback", "invariant", "add", "make", "getDXN", "toString", "handleSave", "setLabel", "setDescription", "currentTag", "dxn", "Form", "outerSpacing", "autoSave", "createSchema", "createOptionIcon", "createOptionLabel", "ns", "pluginMeta", "id", "createInitialValuePath", "onCreate", "onSave", "onQueryRefOptions", "ObjectSettingsContainer", "object", "role", "data", "useMemo", "subject", "React", "Clipboard", "Provider", "StackItem", "Content", "toolbar", "Toolbar", "Root", "div", "className", "BaseObjectSettings", "Surface", "ObjectSettingsContainer"]
7
+ }
@@ -0,0 +1,120 @@
1
+ import { createRequire } from 'node:module';const require = createRequire(import.meta.url);
2
+ import {
3
+ meta
4
+ } from "./chunk-MWNATOXL.mjs";
5
+
6
+ // src/components/RecordMain.tsx
7
+ import { useSignals as _useSignals } from "@preact-signals/safe-react/tracking";
8
+ import React, { useCallback, useMemo } from "react";
9
+ import { Surface } from "@dxos/app-framework";
10
+ import { Filter, Obj, Ref } from "@dxos/echo";
11
+ import { setValue } from "@dxos/echo/internal";
12
+ import { invariant } from "@dxos/invariant";
13
+ import { getSpace, useQuery } from "@dxos/react-client/echo";
14
+ import { useTranslation } from "@dxos/react-ui";
15
+ import { Form, useRefQueryLookupHandler } from "@dxos/react-ui-form";
16
+ import { Masonry } from "@dxos/react-ui-masonry";
17
+ import { StackItem } from "@dxos/react-ui-stack";
18
+ import { isNonNullable } from "@dxos/util";
19
+ var __dxlog_file = "/__w/dxos/dxos/packages/plugins/plugin-space/src/components/RecordMain.tsx";
20
+ var getReferencesFromObject = (obj) => {
21
+ return Object.getOwnPropertyNames(obj).map((name) => obj[name]).filter((value) => Ref.isRef(value));
22
+ };
23
+ var Card = ({ data: subject }) => {
24
+ var _effect = _useSignals();
25
+ try {
26
+ const data = useMemo(() => ({
27
+ subject
28
+ }), [
29
+ subject
30
+ ]);
31
+ return /* @__PURE__ */ React.createElement(Surface, {
32
+ role: "card",
33
+ data,
34
+ limit: 1
35
+ });
36
+ } finally {
37
+ _effect.f();
38
+ }
39
+ };
40
+ var RecordMain = ({ record }) => {
41
+ var _effect = _useSignals();
42
+ try {
43
+ const { t } = useTranslation(meta.id);
44
+ const space = getSpace(record);
45
+ const schema = Obj.getSchema(record);
46
+ const objects = useQuery(space, Filter.everything());
47
+ const related = useMemo(() => {
48
+ const references = getReferencesFromObject(record);
49
+ const referencedObjects = references.map((ref) => ref.target).filter(isNonNullable);
50
+ const referencingObjects = objects.filter((obj) => {
51
+ const refs = getReferencesFromObject(obj);
52
+ return refs.some((ref) => ref.target === record);
53
+ });
54
+ return [
55
+ ...referencedObjects,
56
+ ...referencingObjects
57
+ ];
58
+ }, [
59
+ record,
60
+ objects
61
+ ]);
62
+ const handleRefQueryLookup = useRefQueryLookupHandler({
63
+ space
64
+ });
65
+ const handleSave = useCallback((values, { changed }) => {
66
+ const id = values.id;
67
+ invariant(typeof id === "string", void 0, {
68
+ F: __dxlog_file,
69
+ L: 63,
70
+ S: void 0,
71
+ A: [
72
+ "typeof id === 'string'",
73
+ ""
74
+ ]
75
+ });
76
+ const changedPaths = Object.keys(changed).filter((path) => changed[path]);
77
+ for (const path of changedPaths) {
78
+ const value = values[path];
79
+ setValue(record, path, value);
80
+ }
81
+ }, [
82
+ record
83
+ ]);
84
+ if (!schema) {
85
+ return null;
86
+ }
87
+ return /* @__PURE__ */ React.createElement(StackItem.Content, {
88
+ classNames: "container-max-width",
89
+ scrollable: true
90
+ }, /* @__PURE__ */ React.createElement("div", {
91
+ role: "none",
92
+ className: "flex flex-col gap-4 p-2"
93
+ }, /* @__PURE__ */ React.createElement("div", {
94
+ key: record.id,
95
+ className: "border border-separator rounded"
96
+ }, /* @__PURE__ */ React.createElement(Form, {
97
+ autoSave: true,
98
+ schema,
99
+ values: record,
100
+ onSave: handleSave,
101
+ onQueryRefOptions: handleRefQueryLookup
102
+ })), related.length > 0 && /* @__PURE__ */ React.createElement("div", {
103
+ className: "flex flex-col gap-1 p-2"
104
+ }, /* @__PURE__ */ React.createElement("label", {
105
+ className: "text-description text-sm"
106
+ }, t("related objects label")), /* @__PURE__ */ React.createElement(Masonry.Root, {
107
+ items: related,
108
+ render: Card,
109
+ intrinsicHeight: true
110
+ }))));
111
+ } finally {
112
+ _effect.f();
113
+ }
114
+ };
115
+ var RecordMain_default = RecordMain;
116
+ export {
117
+ RecordMain,
118
+ RecordMain_default as default
119
+ };
120
+ //# sourceMappingURL=RecordMain-ME2BU65P.mjs.map
@@ -0,0 +1,7 @@
1
+ {
2
+ "version": 3,
3
+ "sources": ["../../../src/components/RecordMain.tsx"],
4
+ "sourcesContent": ["//\n// Copyright 2023 DXOS.org\n//\n\nimport React, { useCallback, useMemo } from 'react';\n\nimport { Surface } from '@dxos/app-framework';\nimport { Filter, Obj, Ref } from '@dxos/echo';\nimport { type JsonPath, setValue } from '@dxos/echo/internal';\nimport { invariant } from '@dxos/invariant';\nimport { getSpace, useQuery } from '@dxos/react-client/echo';\nimport { useTranslation } from '@dxos/react-ui';\nimport { Form, useRefQueryLookupHandler } from '@dxos/react-ui-form';\nimport { Masonry } from '@dxos/react-ui-masonry';\nimport { StackItem } from '@dxos/react-ui-stack';\nimport { isNonNullable } from '@dxos/util';\n\nimport { meta } from '../meta';\n\nconst getReferencesFromObject = (obj: Obj.Any): Ref.Any[] => {\n return Object.getOwnPropertyNames(obj)\n .map((name) => obj[name as keyof Obj.Any])\n .filter((value) => Ref.isRef(value)) as Ref.Any[];\n};\n\nconst Card = ({ data: subject }: { data: Obj.Any }) => {\n const data = useMemo(() => ({ subject }), [subject]);\n return <Surface role='card' data={data} limit={1} />;\n};\n\nexport const RecordMain = ({ record }: { record: Obj.Any }) => {\n const { t } = useTranslation(meta.id);\n const space = getSpace(record);\n const schema = Obj.getSchema(record);\n\n // TODO(wittjosiah): This is a hack. ECHO needs to have a back reference index to easily query for related objects.\n const objects = useQuery(space, Filter.everything());\n const related = useMemo(() => {\n // TODO(wittjosiah): Support links via relations as well.\n // const relations = objects.filter((obj) => Relation.isRelation(obj));\n // const targetObjects = relations\n // .filter((relation) => Relation.getSource(relation) === record)\n // .map((relation) => Relation.getTarget(relation));\n // const sourceObjects = relations\n // .filter((relation) => Relation.getTarget(relation) === record)\n // .map((relation) => Relation.getSource(relation));\n\n const references = getReferencesFromObject(record);\n const referencedObjects = references.map((ref) => ref.target).filter(isNonNullable);\n const referencingObjects = objects.filter((obj) => {\n const refs = getReferencesFromObject(obj);\n return refs.some((ref) => ref.target === record);\n });\n\n return [...referencedObjects, ...referencingObjects];\n }, [record, objects]);\n\n const handleRefQueryLookup = useRefQueryLookupHandler({ space });\n\n const handleSave = useCallback(\n (values: any, { changed }: { changed: Record<JsonPath, boolean> }) => {\n const id = values.id;\n invariant(typeof id === 'string');\n\n const changedPaths = Object.keys(changed).filter((path) => changed[path as JsonPath]) as JsonPath[];\n for (const path of changedPaths) {\n const value = values[path];\n setValue(record, path, value);\n }\n },\n [record],\n );\n\n if (!schema) {\n return null;\n }\n\n return (\n <StackItem.Content classNames='container-max-width' scrollable>\n <div role='none' className='flex flex-col gap-4 p-2'>\n <div key={record.id} className='border border-separator rounded'>\n <Form autoSave schema={schema} values={record} onSave={handleSave} onQueryRefOptions={handleRefQueryLookup} />\n </div>\n {related.length > 0 && (\n <div className='flex flex-col gap-1 p-2'>\n <label className='text-description text-sm'>{t('related objects label')}</label>\n <Masonry.Root<Obj.Any> items={related} render={Card} intrinsicHeight />\n </div>\n )}\n </div>\n </StackItem.Content>\n );\n};\n\nexport default RecordMain;\n"],
5
+ "mappings": ";;;;;;;AAIA,OAAOA,SAASC,aAAaC,eAAe;AAE5C,SAASC,eAAe;AACxB,SAASC,QAAQC,KAAKC,WAAW;AACjC,SAAwBC,gBAAgB;AACxC,SAASC,iBAAiB;AAC1B,SAASC,UAAUC,gBAAgB;AACnC,SAASC,sBAAsB;AAC/B,SAASC,MAAMC,gCAAgC;AAC/C,SAASC,eAAe;AACxB,SAASC,iBAAiB;AAC1B,SAASC,qBAAqB;;AAI9B,IAAMC,0BAA0B,CAACC,QAAAA;AAC/B,SAAOC,OAAOC,oBAAoBF,GAAAA,EAC/BG,IAAI,CAACC,SAASJ,IAAII,IAAAA,CAAsB,EACxCC,OAAO,CAACC,UAAUC,IAAIC,MAAMF,KAAAA,CAAAA;AACjC;AAEA,IAAMG,OAAO,CAAC,EAAEC,MAAMC,QAAO,MAAqB;;;AAChD,UAAMD,OAAOE,QAAQ,OAAO;MAAED;IAAQ,IAAI;MAACA;KAAQ;AACnD,WAAO,sBAAA,cAACE,SAAAA;MAAQC,MAAK;MAAOJ;MAAYK,OAAO;;;;;AACjD;AAEO,IAAMC,aAAa,CAAC,EAAEC,OAAM,MAAuB;;;AACxD,UAAM,EAAEC,EAAC,IAAKC,eAAeC,KAAKC,EAAE;AACpC,UAAMC,QAAQC,SAASN,MAAAA;AACvB,UAAMO,SAASC,IAAIC,UAAUT,MAAAA;AAG7B,UAAMU,UAAUC,SAASN,OAAOO,OAAOC,WAAU,CAAA;AACjD,UAAMC,UAAUnB,QAAQ,MAAA;AAUtB,YAAMoB,aAAajC,wBAAwBkB,MAAAA;AAC3C,YAAMgB,oBAAoBD,WAAW7B,IAAI,CAAC+B,QAAQA,IAAIC,MAAM,EAAE9B,OAAO+B,aAAAA;AACrE,YAAMC,qBAAqBV,QAAQtB,OAAO,CAACL,QAAAA;AACzC,cAAMsC,OAAOvC,wBAAwBC,GAAAA;AACrC,eAAOsC,KAAKC,KAAK,CAACL,QAAQA,IAAIC,WAAWlB,MAAAA;MAC3C,CAAA;AAEA,aAAO;WAAIgB;WAAsBI;;IACnC,GAAG;MAACpB;MAAQU;KAAQ;AAEpB,UAAMa,uBAAuBC,yBAAyB;MAAEnB;IAAM,CAAA;AAE9D,UAAMoB,aAAaC,YACjB,CAACC,QAAa,EAAEC,QAAO,MAA0C;AAC/D,YAAMxB,KAAKuB,OAAOvB;AAClByB,gBAAU,OAAOzB,OAAO,UAAA,QAAA;;;;;;;;;AAExB,YAAM0B,eAAe9C,OAAO+C,KAAKH,OAAAA,EAASxC,OAAO,CAAC4C,SAASJ,QAAQI,IAAAA,CAAiB;AACpF,iBAAWA,QAAQF,cAAc;AAC/B,cAAMzC,QAAQsC,OAAOK,IAAAA;AACrBC,iBAASjC,QAAQgC,MAAM3C,KAAAA;MACzB;IACF,GACA;MAACW;KAAO;AAGV,QAAI,CAACO,QAAQ;AACX,aAAO;IACT;AAEA,WACE,sBAAA,cAAC2B,UAAUC,SAAO;MAACC,YAAW;MAAsBC,YAAAA;OAClD,sBAAA,cAACC,OAAAA;MAAIzC,MAAK;MAAO0C,WAAU;OACzB,sBAAA,cAACD,OAAAA;MAAIE,KAAKxC,OAAOI;MAAImC,WAAU;OAC7B,sBAAA,cAACE,MAAAA;MAAKC,UAAAA;MAASnC;MAAgBoB,QAAQ3B;MAAQ2C,QAAQlB;MAAYmB,mBAAmBrB;SAEvFT,QAAQ+B,SAAS,KAChB,sBAAA,cAACP,OAAAA;MAAIC,WAAU;OACb,sBAAA,cAACO,SAAAA;MAAMP,WAAU;OAA4BtC,EAAE,uBAAA,CAAA,GAC/C,sBAAA,cAAC8C,QAAQC,MAAI;MAAUC,OAAOnC;MAASoC,QAAQ1D;MAAM2D,iBAAAA;;;;;AAMjE;AAEA,IAAA,qBAAepD;",
6
+ "names": ["React", "useCallback", "useMemo", "Surface", "Filter", "Obj", "Ref", "setValue", "invariant", "getSpace", "useQuery", "useTranslation", "Form", "useRefQueryLookupHandler", "Masonry", "StackItem", "isNonNullable", "getReferencesFromObject", "obj", "Object", "getOwnPropertyNames", "map", "name", "filter", "value", "Ref", "isRef", "Card", "data", "subject", "useMemo", "Surface", "role", "limit", "RecordMain", "record", "t", "useTranslation", "meta", "id", "space", "getSpace", "schema", "Obj", "getSchema", "objects", "useQuery", "Filter", "everything", "related", "references", "referencedObjects", "ref", "target", "isNonNullable", "referencingObjects", "refs", "some", "handleRefQueryLookup", "useRefQueryLookupHandler", "handleSave", "useCallback", "values", "changed", "invariant", "changedPaths", "keys", "path", "setValue", "StackItem", "Content", "classNames", "scrollable", "div", "className", "key", "Form", "autoSave", "onSave", "onQueryRefOptions", "length", "label", "Masonry", "Root", "items", "render", "intrinsicHeight"]
7
+ }