@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,6 +1,6 @@
1
1
  import {
2
- SPACE_PLUGIN
3
- } from "./chunk-FBCGT5YY.mjs";
2
+ meta
3
+ } from "./chunk-IRKDREHY.mjs";
4
4
 
5
5
  // src/components/CollectionMain.tsx
6
6
  import { useSignals as _useSignals } from "@preact-signals/safe-react/tracking";
@@ -10,7 +10,7 @@ import { baseSurface, descriptionMessage, mx } from "@dxos/react-ui-theme";
10
10
  var CollectionMain = ({ collection }) => {
11
11
  var _effect = _useSignals();
12
12
  try {
13
- const { t } = useTranslation(SPACE_PLUGIN);
13
+ const { t } = useTranslation(meta.id);
14
14
  return /* @__PURE__ */ React.createElement("div", {
15
15
  role: "none",
16
16
  className: mx(baseSurface, "min-bs-screen is-full flex items-center justify-center p-8"),
@@ -28,4 +28,4 @@ export {
28
28
  CollectionMain,
29
29
  CollectionMain_default as default
30
30
  };
31
- //# sourceMappingURL=CollectionMain-D2B75XBS.mjs.map
31
+ //# sourceMappingURL=CollectionMain-AX7KKXWP.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,145 @@
1
+ import {
2
+ meta
3
+ } from "./chunk-IRKDREHY.mjs";
4
+
5
+ // src/components/ObjectDetailsPanel/ObjectDetailsPanel.tsx
6
+ import { useSignals as _useSignals2 } from "@preact-signals/safe-react/tracking";
7
+ import React2 from "react";
8
+ import { useClient } from "@dxos/react-client";
9
+ import { Filter, getSpace as getSpace2, useQuery, useSchema } from "@dxos/react-client/echo";
10
+ import { Callout, useTranslation } from "@dxos/react-ui";
11
+ import { useSelected } from "@dxos/react-ui-attention";
12
+ import { getTypenameFromQuery } from "@dxos/schema";
13
+ import { isNonNullable } from "@dxos/util";
14
+
15
+ // src/components/ObjectDetailsPanel/ObjectForm.tsx
16
+ import { useSignals as _useSignals } from "@preact-signals/safe-react/tracking";
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 { setValue } 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/ObjectDetailsPanel/ObjectForm.tsx";
25
+ var TagSchema = Tag.Tag.pipe(Schema.omit("id"));
26
+ var ObjectForm = ({ object, schema }) => {
27
+ var _effect = _useSignals();
28
+ try {
29
+ const space = getSpace(object);
30
+ const handleRefQueryLookup = useRefQueryLookupHandler({
31
+ space
32
+ });
33
+ const formSchema = useMemo(() => Schema.Struct({
34
+ tag: Type.Ref(Tag.Tag).pipe(Schema.optional)
35
+ }).pipe(Schema.extend(schema)), [
36
+ schema
37
+ ]);
38
+ const meta2 = Obj.getMeta(object);
39
+ const tag = meta2.tags?.[0] ? space?.db.ref(DXN.parse(meta2.tags?.[0])) : void 0;
40
+ const values = useMemo(() => ({
41
+ tag,
42
+ ...object
43
+ }), [
44
+ object,
45
+ tag
46
+ ]);
47
+ const handleCreateTag = useCallback((values2) => {
48
+ invariant(space, void 0, {
49
+ F: __dxlog_file,
50
+ L: 34,
51
+ S: void 0,
52
+ A: [
53
+ "space",
54
+ ""
55
+ ]
56
+ });
57
+ const tag2 = space.db.add(Tag.make(values2));
58
+ const meta3 = Obj.getMeta(object);
59
+ meta3.tags = [
60
+ Obj.getDXN(tag2).toString()
61
+ ];
62
+ }, []);
63
+ const handleSave = useCallback((values2, { changed }) => {
64
+ const changedPaths = Object.keys(changed).filter((path) => changed[path]);
65
+ for (const path of changedPaths) {
66
+ if (path === "tag") {
67
+ const tag2 = values2[path];
68
+ const meta3 = Obj.getMeta(object);
69
+ const currentTag = meta3.tags?.[0];
70
+ if (currentTag !== tag2?.dxn.toString()) {
71
+ meta3.tags = tag2 ? [
72
+ tag2.dxn.toString()
73
+ ] : [];
74
+ }
75
+ continue;
76
+ }
77
+ const value = values2[path];
78
+ setValue(object, path, value);
79
+ }
80
+ }, [
81
+ object
82
+ ]);
83
+ return /* @__PURE__ */ React.createElement(Form, {
84
+ autoSave: true,
85
+ schema: formSchema,
86
+ values,
87
+ createSchema: TagSchema,
88
+ createOptionIcon: "ph--plus--regular",
89
+ createOptionLabel: [
90
+ "add tag label",
91
+ {
92
+ ns: meta.id
93
+ }
94
+ ],
95
+ createInitialValuePath: "label",
96
+ onCreate: handleCreateTag,
97
+ onSave: handleSave,
98
+ onQueryRefOptions: handleRefQueryLookup
99
+ });
100
+ } finally {
101
+ _effect.f();
102
+ }
103
+ };
104
+
105
+ // src/components/ObjectDetailsPanel/ObjectDetailsPanel.tsx
106
+ var ObjectDetailsPanel = ({ objectId, view }) => {
107
+ var _effect = _useSignals2();
108
+ try {
109
+ const { t } = useTranslation(meta.id);
110
+ const client = useClient();
111
+ const space = getSpace2(view);
112
+ const typename = view.query ? getTypenameFromQuery(view.query.ast) : void 0;
113
+ const schema = useSchema(client, space, typename);
114
+ const queriedObjects = useQuery(space, schema ? Filter.type(schema) : Filter.nothing());
115
+ const selectedRows = useSelected(objectId, "multi");
116
+ const selectedObjects = selectedRows.map((id) => queriedObjects.find((obj) => obj.id === id)).filter(isNonNullable);
117
+ if (selectedObjects.length === 0) {
118
+ return /* @__PURE__ */ React2.createElement("div", {
119
+ role: "none",
120
+ className: "plb-cardSpacingBlock pli-cardSpacingInline"
121
+ }, /* @__PURE__ */ React2.createElement(Callout.Root, {
122
+ classNames: "is-full"
123
+ }, /* @__PURE__ */ React2.createElement(Callout.Title, null, t("row details no selection label"))));
124
+ }
125
+ return /* @__PURE__ */ React2.createElement("div", {
126
+ role: "none",
127
+ className: "bs-full is-full flex flex-col p-2 gap-1 overflow-y-auto"
128
+ }, schema && selectedObjects.map((object) => /* @__PURE__ */ React2.createElement("div", {
129
+ key: object.id,
130
+ className: "border border-separator rounded"
131
+ }, /* @__PURE__ */ React2.createElement(ObjectForm, {
132
+ object,
133
+ schema
134
+ }))));
135
+ } finally {
136
+ _effect.f();
137
+ }
138
+ };
139
+
140
+ // src/components/ObjectDetailsPanel/index.ts
141
+ var ObjectDetailsPanel_default = ObjectDetailsPanel;
142
+ export {
143
+ ObjectDetailsPanel_default as default
144
+ };
145
+ //# sourceMappingURL=ObjectDetailsPanel-MQBHG666.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": ";;;;;;AAIA,OAAOA,YAAW;AAElB,SAASC,iBAAiB;AAC1B,SAASC,QAAQC,YAAAA,WAAUC,UAAUC,iBAAiB;AACtD,SAASC,SAASC,sBAAsB;AACxC,SAASC,mBAAmB;AAE5B,SAASC,4BAA4B;AACrC,SAASC,qBAAqB;;;;ACR9B,YAAYC,YAAY;AACxB,OAAOC,SAASC,aAAaC,eAAe;AAE5C,SAASC,KAAKC,KAAKC,KAAKC,YAAY;AACpC,SAAwBC,gBAAgB;AACxC,SAASC,iBAAiB;AAC1B,SAASC,gBAAgB;AACzB,SAASC,MAAMC,gCAAgC;;AAI/C,IAAMC,YAAYC,IAAIA,IAAIC,KAAYC,YAAK,IAAA,CAAA;AAIpC,IAAMC,aAAa,CAAC,EAAEC,QAAQC,OAAM,MAAmB;;;AAC5D,UAAMC,QAAQC,SAASH,MAAAA;AACvB,UAAMI,uBAAuBC,yBAAyB;MAAEH;IAAM,CAAA;AAE9D,UAAMI,aAAaC,QACjB,MAAaC,cAAO;MAAEC,KAAKC,KAAKC,IAAIf,IAAIA,GAAG,EAAEC,KAAYe,eAAQ;IAAE,CAAA,EAAGf,KAAYgB,cAAOZ,MAAAA,CAAAA,GACzF;MAACA;KAAO;AAGV,UAAMa,QAAOC,IAAIC,QAAQhB,MAAAA;AACzB,UAAMS,MAAMK,MAAKG,OAAO,CAAA,IAAKf,OAAOgB,GAAGC,IAAIC,IAAIC,MAAMP,MAAKG,OAAO,CAAA,CAAE,CAAA,IAAKK;AACxE,UAAMC,SAAShB,QAAQ,OAAO;MAAEE;MAAK,GAAGT;IAAO,IAAI;MAACA;MAAQS;KAAI;AAEhE,UAAMe,kBAAkBC,YAAY,CAACF,YAAAA;AACnCG,gBAAUxB,OAAAA,QAAAA;;;;;;;;;AACV,YAAMO,OAAMP,MAAMgB,GAAGS,IAAI/B,IAAIgC,KAAKL,OAAAA,CAAAA;AAClC,YAAMT,QAAOC,IAAIC,QAAQhB,MAAAA;AACzBc,MAAAA,MAAKG,OAAO;QAACF,IAAIc,OAAOpB,IAAAA,EAAKqB,SAAQ;;IACvC,GAAG,CAAA,CAAE;AAEL,UAAMC,aAAaN,YACjB,CAACF,SAAa,EAAES,QAAO,MAA0C;AAC/D,YAAMC,eAAeC,OAAOC,KAAKH,OAAAA,EAASI,OAAO,CAACC,SAASL,QAAQK,IAAAA,CAAiB;AACpF,iBAAWA,QAAQJ,cAAc;AAC/B,YAAII,SAAS,OAAO;AAClB,gBAAM5B,OAAMc,QAAOc,IAAAA;AACnB,gBAAMvB,QAAOC,IAAIC,QAAQhB,MAAAA;AACzB,gBAAMsC,aAAaxB,MAAKG,OAAO,CAAA;AAC/B,cAAIqB,eAAe7B,MAAK8B,IAAIT,SAAAA,GAAY;AACtChB,YAAAA,MAAKG,OAAOR,OAAM;cAACA,KAAI8B,IAAIT,SAAQ;gBAAM,CAAA;UAC3C;AACA;QACF;AAEA,cAAMU,QAAQjB,QAAOc,IAAAA;AACrBI,iBAASzC,QAAQqC,MAAMG,KAAAA;MACzB;IACF,GACA;MAACxC;KAAO;AAGV,WACE,sBAAA,cAAC0C,MAAAA;MACCC,UAAAA;MACA1C,QAAQK;MACRiB;MACAqB,cAAcjD;MACdkD,kBAAiB;MACjBC,mBAAmB;QAAC;QAAiB;UAAEC,IAAIC,KAAWC;QAAG;;MACzDC,wBAAuB;MACvBC,UAAU3B;MACV4B,QAAQrB;MACRsB,mBAAmBjD;;;;;AAGzB;;;ADtDO,IAAMkD,qBAAqB,CAAC,EAAEC,UAAUC,KAAI,MAAwB;;;AACzE,UAAM,EAAEC,EAAC,IAAKC,eAAeC,KAAKC,EAAE;AACpC,UAAMC,SAASC,UAAAA;AACf,UAAMC,QAAQC,UAASR,IAAAA;AACvB,UAAMS,WAAWT,KAAKU,QAAQC,qBAAqBX,KAAKU,MAAME,GAAG,IAAIC;AACrE,UAAMC,SAASC,UAAUV,QAAQE,OAAOE,QAAAA;AAExC,UAAMO,iBAAiBC,SAASV,OAAOO,SAASI,OAAOC,KAAKL,MAAAA,IAAUI,OAAOE,QAAO,CAAA;AACpF,UAAMC,eAAeC,YAAYvB,UAAU,OAAA;AAC3C,UAAMwB,kBAAkBF,aAAaG,IAAI,CAACpB,OAAOY,eAAeS,KAAK,CAACC,QAAQA,IAAItB,OAAOA,EAAAA,CAAAA,EAAKuB,OAAOC,aAAAA;AAErG,QAAIL,gBAAgBM,WAAW,GAAG;AAChC,aACE,gBAAAC,OAAA,cAACC,OAAAA;QAAIC,MAAK;QAAOC,WAAU;SACzB,gBAAAH,OAAA,cAACI,QAAQC,MAAI;QAACC,YAAW;SACvB,gBAAAN,OAAA,cAACI,QAAQG,OAAK,MAAEpC,EAAE,gCAAA,CAAA,CAAA,CAAA;IAI1B;AAEA,WACE,gBAAA6B,OAAA,cAACC,OAAAA;MAAIC,MAAK;MAAOC,WAAU;OACxBnB,UACCS,gBAAgBC,IAAI,CAACc,WACnB,gBAAAR,OAAA,cAACC,OAAAA;MAAIQ,KAAKD,OAAOlC;MAAI6B,WAAU;OAC7B,gBAAAH,OAAA,cAACU,YAAAA;MAAWF;MAAgBxB;;;;;AAKxC;;;AE7CA,IAAA,6BAAe2B;",
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,151 @@
1
+ import {
2
+ meta
3
+ } from "./chunk-IRKDREHY.mjs";
4
+
5
+ // src/components/ObjectSettings/ObjectSettingsContainer.tsx
6
+ import { useSignals as _useSignals2 } from "@preact-signals/safe-react/tracking";
7
+ import React2, { useMemo as useMemo2 } from "react";
8
+ import { Surface } from "@dxos/app-framework";
9
+ import { Clipboard, Toolbar } from "@dxos/react-ui";
10
+ import { StackItem } from "@dxos/react-ui-stack";
11
+
12
+ // src/components/ObjectSettings/BaseObjectSettings.tsx
13
+ import { useSignals as _useSignals } from "@preact-signals/safe-react/tracking";
14
+ import * as Function from "effect/Function";
15
+ import * as Option from "effect/Option";
16
+ import * as Schema from "effect/Schema";
17
+ import React, { useCallback, useMemo } from "react";
18
+ import { DXN, Obj, Tag, Type } from "@dxos/echo";
19
+ import { DescriptionAnnotation } from "@dxos/echo/internal";
20
+ import { invariant } from "@dxos/invariant";
21
+ import { getSpace } from "@dxos/react-client/echo";
22
+ import { Form, useRefQueryLookupHandler } from "@dxos/react-ui-form";
23
+ var __dxlog_file = "/__w/dxos/dxos/packages/plugins/plugin-space/src/components/ObjectSettings/BaseObjectSettings.tsx";
24
+ var BaseSchema = Schema.Struct({
25
+ label: Schema.String.pipe(Schema.optional),
26
+ // TODO(wittjosiah): Support multiple tags.
27
+ tag: Type.Ref(Tag.Tag).pipe(Schema.optional)
28
+ });
29
+ var BaseSchemaWithDescription = Schema.Struct({
30
+ label: Schema.String.pipe(Schema.optional),
31
+ description: Schema.String.pipe(Schema.optional),
32
+ tag: Type.Ref(Tag.Tag).pipe(Schema.optional)
33
+ });
34
+ var TagSchema = Tag.Tag.pipe(Schema.omit("id"));
35
+ var BaseObjectSettings = ({ classNames, children, object }) => {
36
+ var _effect = _useSignals();
37
+ try {
38
+ const space = getSpace(object);
39
+ const handleRefQueryLookup = useRefQueryLookupHandler({
40
+ space
41
+ });
42
+ const formSchema = useMemo(() => {
43
+ const description = Function.pipe(Obj.getSchema(object), Option.fromNullable, Option.flatMap((schema) => DescriptionAnnotation.get(schema)), Option.getOrUndefined);
44
+ if (description) {
45
+ return BaseSchemaWithDescription;
46
+ } else {
47
+ return BaseSchema;
48
+ }
49
+ }, [
50
+ object
51
+ ]);
52
+ const meta2 = Obj.getMeta(object);
53
+ const tag = meta2.tags?.[0] ? space?.db.ref(DXN.parse(meta2.tags?.[0])) : void 0;
54
+ const values = useMemo(() => ({
55
+ label: Obj.getLabel(object),
56
+ description: Obj.getDescription(object),
57
+ tag
58
+ }), [
59
+ object,
60
+ tag
61
+ ]);
62
+ const handleCreateTag = useCallback((values2) => {
63
+ invariant(space, void 0, {
64
+ F: __dxlog_file,
65
+ L: 72,
66
+ S: void 0,
67
+ A: [
68
+ "space",
69
+ ""
70
+ ]
71
+ });
72
+ const tag2 = space.db.add(Tag.make(values2));
73
+ const meta3 = Obj.getMeta(object);
74
+ meta3.tags = [
75
+ Obj.getDXN(tag2).toString()
76
+ ];
77
+ }, []);
78
+ const handleSave = useCallback((values2) => {
79
+ if (values2.label !== void 0 && Obj.getLabel(object) !== values2.label) {
80
+ Obj.setLabel(object, values2.label);
81
+ }
82
+ if (values2.description !== void 0 && Obj.getDescription(object) !== values2.description) {
83
+ Obj.setDescription(object, values2.description);
84
+ }
85
+ const meta3 = Obj.getMeta(object);
86
+ const currentTag = meta3.tags?.[0];
87
+ if (values2.tag !== void 0 && currentTag !== values2.tag?.dxn.toString()) {
88
+ meta3.tags = [
89
+ values2.tag.dxn.toString()
90
+ ];
91
+ }
92
+ }, [
93
+ object
94
+ ]);
95
+ return /* @__PURE__ */ React.createElement(React.Fragment, null, /* @__PURE__ */ React.createElement(Form, {
96
+ outerSpacing: false,
97
+ autoSave: true,
98
+ schema: formSchema,
99
+ values,
100
+ createSchema: TagSchema,
101
+ createOptionIcon: "ph--plus--regular",
102
+ createOptionLabel: [
103
+ "add tag label",
104
+ {
105
+ ns: meta.id
106
+ }
107
+ ],
108
+ createInitialValuePath: "label",
109
+ onCreate: handleCreateTag,
110
+ onSave: handleSave,
111
+ onQueryRefOptions: handleRefQueryLookup
112
+ }), children);
113
+ } finally {
114
+ _effect.f();
115
+ }
116
+ };
117
+
118
+ // src/components/ObjectSettings/ObjectSettingsContainer.tsx
119
+ var ObjectSettingsContainer = ({ object, role }) => {
120
+ var _effect = _useSignals2();
121
+ try {
122
+ const data = useMemo2(() => ({
123
+ subject: object
124
+ }), [
125
+ object
126
+ ]);
127
+ return /* @__PURE__ */ React2.createElement(Clipboard.Provider, null, /* @__PURE__ */ React2.createElement(StackItem.Content, {
128
+ toolbar: true
129
+ }, /* @__PURE__ */ React2.createElement(Toolbar.Root, null), /* @__PURE__ */ React2.createElement("div", {
130
+ role: "none",
131
+ className: "overflow-y-auto pli-cardSpacingInline plb-cardSpacingBlock"
132
+ }, /* @__PURE__ */ React2.createElement(BaseObjectSettings, {
133
+ object
134
+ }, /* @__PURE__ */ React2.createElement(Surface, {
135
+ role: "base-object-settings",
136
+ data
137
+ })), /* @__PURE__ */ React2.createElement(Surface, {
138
+ role: "object-settings",
139
+ data
140
+ }))));
141
+ } finally {
142
+ _effect.f();
143
+ }
144
+ };
145
+
146
+ // src/components/ObjectSettings/index.ts
147
+ var ObjectSettings_default = ObjectSettingsContainer;
148
+ export {
149
+ ObjectSettings_default as default
150
+ };
151
+ //# sourceMappingURL=ObjectSettings-KNUZFCGS.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,119 @@
1
+ import {
2
+ meta
3
+ } from "./chunk-IRKDREHY.mjs";
4
+
5
+ // src/components/RecordMain.tsx
6
+ import { useSignals as _useSignals } from "@preact-signals/safe-react/tracking";
7
+ import React, { useCallback, useMemo } from "react";
8
+ import { Surface } from "@dxos/app-framework";
9
+ import { Filter, Obj, Ref } from "@dxos/echo";
10
+ import { setValue } from "@dxos/echo/internal";
11
+ import { invariant } from "@dxos/invariant";
12
+ import { getSpace, useQuery } from "@dxos/react-client/echo";
13
+ import { useTranslation } from "@dxos/react-ui";
14
+ import { Form, useRefQueryLookupHandler } from "@dxos/react-ui-form";
15
+ import { Masonry } from "@dxos/react-ui-masonry";
16
+ import { StackItem } from "@dxos/react-ui-stack";
17
+ import { isNonNullable } from "@dxos/util";
18
+ var __dxlog_file = "/__w/dxos/dxos/packages/plugins/plugin-space/src/components/RecordMain.tsx";
19
+ var getReferencesFromObject = (obj) => {
20
+ return Object.getOwnPropertyNames(obj).map((name) => obj[name]).filter((value) => Ref.isRef(value));
21
+ };
22
+ var Card = ({ data: subject }) => {
23
+ var _effect = _useSignals();
24
+ try {
25
+ const data = useMemo(() => ({
26
+ subject
27
+ }), [
28
+ subject
29
+ ]);
30
+ return /* @__PURE__ */ React.createElement(Surface, {
31
+ role: "card",
32
+ data,
33
+ limit: 1
34
+ });
35
+ } finally {
36
+ _effect.f();
37
+ }
38
+ };
39
+ var RecordMain = ({ record }) => {
40
+ var _effect = _useSignals();
41
+ try {
42
+ const { t } = useTranslation(meta.id);
43
+ const space = getSpace(record);
44
+ const schema = Obj.getSchema(record);
45
+ const objects = useQuery(space, Filter.everything());
46
+ const related = useMemo(() => {
47
+ const references = getReferencesFromObject(record);
48
+ const referencedObjects = references.map((ref) => ref.target).filter(isNonNullable);
49
+ const referencingObjects = objects.filter((obj) => {
50
+ const refs = getReferencesFromObject(obj);
51
+ return refs.some((ref) => ref.target === record);
52
+ });
53
+ return [
54
+ ...referencedObjects,
55
+ ...referencingObjects
56
+ ];
57
+ }, [
58
+ record,
59
+ objects
60
+ ]);
61
+ const handleRefQueryLookup = useRefQueryLookupHandler({
62
+ space
63
+ });
64
+ const handleSave = useCallback((values, { changed }) => {
65
+ const id = values.id;
66
+ invariant(typeof id === "string", void 0, {
67
+ F: __dxlog_file,
68
+ L: 63,
69
+ S: void 0,
70
+ A: [
71
+ "typeof id === 'string'",
72
+ ""
73
+ ]
74
+ });
75
+ const changedPaths = Object.keys(changed).filter((path) => changed[path]);
76
+ for (const path of changedPaths) {
77
+ const value = values[path];
78
+ setValue(record, path, value);
79
+ }
80
+ }, [
81
+ record
82
+ ]);
83
+ if (!schema) {
84
+ return null;
85
+ }
86
+ return /* @__PURE__ */ React.createElement(StackItem.Content, {
87
+ classNames: "container-max-width",
88
+ scrollable: true
89
+ }, /* @__PURE__ */ React.createElement("div", {
90
+ role: "none",
91
+ className: "flex flex-col gap-4 p-2"
92
+ }, /* @__PURE__ */ React.createElement("div", {
93
+ key: record.id,
94
+ className: "border border-separator rounded"
95
+ }, /* @__PURE__ */ React.createElement(Form, {
96
+ autoSave: true,
97
+ schema,
98
+ values: record,
99
+ onSave: handleSave,
100
+ onQueryRefOptions: handleRefQueryLookup
101
+ })), related.length > 0 && /* @__PURE__ */ React.createElement("div", {
102
+ className: "flex flex-col gap-1 p-2"
103
+ }, /* @__PURE__ */ React.createElement("label", {
104
+ className: "text-description text-sm"
105
+ }, t("related objects label")), /* @__PURE__ */ React.createElement(Masonry.Root, {
106
+ items: related,
107
+ render: Card,
108
+ intrinsicHeight: true
109
+ }))));
110
+ } finally {
111
+ _effect.f();
112
+ }
113
+ };
114
+ var RecordMain_default = RecordMain;
115
+ export {
116
+ RecordMain,
117
+ RecordMain_default as default
118
+ };
119
+ //# sourceMappingURL=RecordMain-MV535I2C.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
+ }