@dxos/plugin-space 0.8.4-main.a4bbb77 → 0.8.4-main.ae835ea

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 (224) hide show
  1. package/dist/lib/browser/{CollectionMain-AX7KKXWP.mjs → CollectionMain-HTKSZCRR.mjs} +2 -2
  2. package/dist/lib/browser/ObjectDetailsPanel-5B45G744.mjs +145 -0
  3. package/dist/lib/browser/ObjectDetailsPanel-5B45G744.mjs.map +7 -0
  4. package/dist/lib/browser/ObjectSettings-UFTKBP7B.mjs +146 -0
  5. package/dist/lib/browser/ObjectSettings-UFTKBP7B.mjs.map +7 -0
  6. package/dist/lib/browser/RecordMain-BCSXTSEB.mjs +99 -0
  7. package/dist/lib/browser/RecordMain-BCSXTSEB.mjs.map +7 -0
  8. package/dist/lib/browser/{app-graph-builder-W7RVDAUA.mjs → app-graph-builder-QJFO4ANM.mjs} +37 -34
  9. package/dist/lib/browser/app-graph-builder-QJFO4ANM.mjs.map +7 -0
  10. package/dist/lib/browser/{app-graph-serializer-VLHVTDX4.mjs → app-graph-serializer-3R5NVV7U.mjs} +5 -5
  11. package/dist/lib/browser/{chunk-E2I747A7.mjs → chunk-2NS3VPSY.mjs} +2 -2
  12. package/dist/lib/browser/chunk-2NS3VPSY.mjs.map +7 -0
  13. package/dist/lib/browser/{chunk-ZIZ2JLW6.mjs → chunk-4V4JNJ33.mjs} +12 -4
  14. package/dist/lib/browser/chunk-4V4JNJ33.mjs.map +7 -0
  15. package/dist/lib/browser/{chunk-2BFVC5K6.mjs → chunk-ENBBJSNE.mjs} +230 -254
  16. package/dist/lib/browser/chunk-ENBBJSNE.mjs.map +7 -0
  17. package/dist/lib/browser/chunk-HS2VD6DN.mjs +166 -0
  18. package/dist/lib/browser/chunk-HS2VD6DN.mjs.map +7 -0
  19. package/dist/lib/browser/{chunk-PN27K4I7.mjs → chunk-OWNBEI5J.mjs} +23 -14
  20. package/dist/lib/browser/chunk-OWNBEI5J.mjs.map +7 -0
  21. package/dist/lib/browser/{chunk-JCHSUOPF.mjs → chunk-SLDQWMQ2.mjs} +12 -7
  22. package/dist/lib/browser/chunk-SLDQWMQ2.mjs.map +7 -0
  23. package/dist/lib/browser/chunk-VZBIIYFM.mjs +16 -0
  24. package/dist/lib/browser/chunk-VZBIIYFM.mjs.map +7 -0
  25. package/dist/lib/browser/{chunk-EIXZABXD.mjs → chunk-WJXU4GKV.mjs} +2 -2
  26. package/dist/lib/browser/index.mjs +31 -31
  27. package/dist/lib/browser/index.mjs.map +3 -3
  28. package/dist/lib/browser/{intent-resolver-HA7DPAUE.mjs → intent-resolver-MBVOLXFQ.mjs} +30 -23
  29. package/dist/lib/browser/intent-resolver-MBVOLXFQ.mjs.map +7 -0
  30. package/dist/lib/browser/meta.json +1 -1
  31. package/dist/lib/browser/{react-root-YQUJU64P.mjs → react-root-NKEKCEYM.mjs} +7 -7
  32. package/dist/lib/browser/{react-surface-HTXYMRSW.mjs → react-surface-PYSN2MBY.mjs} +15 -46
  33. package/dist/lib/browser/react-surface-PYSN2MBY.mjs.map +7 -0
  34. package/dist/lib/browser/{schema-defs-R56ZDBZ7.mjs → schema-defs-DWYK7TYW.mjs} +3 -3
  35. package/dist/lib/browser/{settings-5XPQMSPO.mjs → settings-ZUCC3ZLB.mjs} +3 -3
  36. package/dist/lib/browser/{spaces-ready-YY77ANIF.mjs → spaces-ready-HTWWJHLR.mjs} +6 -6
  37. package/dist/lib/browser/spaces-ready-HTWWJHLR.mjs.map +7 -0
  38. package/dist/lib/browser/{state-Y4RVCG4A.mjs → state-ISVAKMO7.mjs} +3 -3
  39. package/dist/lib/browser/types/index.mjs +2 -2
  40. package/dist/lib/node-esm/{CollectionMain-EU57SRYK.mjs → CollectionMain-OUHGG6OC.mjs} +2 -2
  41. package/dist/lib/node-esm/ObjectDetailsPanel-4SDHQVQU.mjs +146 -0
  42. package/dist/lib/node-esm/ObjectDetailsPanel-4SDHQVQU.mjs.map +7 -0
  43. package/dist/lib/node-esm/ObjectSettings-EU6F43RP.mjs +147 -0
  44. package/dist/lib/node-esm/ObjectSettings-EU6F43RP.mjs.map +7 -0
  45. package/dist/lib/node-esm/RecordMain-SD76DGOR.mjs +100 -0
  46. package/dist/lib/node-esm/RecordMain-SD76DGOR.mjs.map +7 -0
  47. package/dist/lib/node-esm/{app-graph-builder-5ZJJUMQI.mjs → app-graph-builder-B23W62HY.mjs} +37 -34
  48. package/dist/lib/node-esm/app-graph-builder-B23W62HY.mjs.map +7 -0
  49. package/dist/lib/node-esm/{app-graph-serializer-EZJSGJUT.mjs → app-graph-serializer-3Z3EXEEF.mjs} +5 -5
  50. package/dist/lib/node-esm/chunk-BDEFTL6K.mjs +18 -0
  51. package/dist/lib/node-esm/chunk-BDEFTL6K.mjs.map +7 -0
  52. package/dist/lib/node-esm/{chunk-5XRYHWL7.mjs → chunk-G4PDWB7G.mjs} +12 -4
  53. package/dist/lib/node-esm/chunk-G4PDWB7G.mjs.map +7 -0
  54. package/dist/lib/node-esm/{chunk-SVFKU7EW.mjs → chunk-H4JILUJK.mjs} +2 -2
  55. package/dist/lib/node-esm/{chunk-BLPXWPLB.mjs → chunk-KKPCCA5O.mjs} +230 -254
  56. package/dist/lib/node-esm/chunk-KKPCCA5O.mjs.map +7 -0
  57. package/dist/lib/node-esm/chunk-PM4ZIGKC.mjs +167 -0
  58. package/dist/lib/node-esm/chunk-PM4ZIGKC.mjs.map +7 -0
  59. package/dist/lib/node-esm/{chunk-XDQXUZMK.mjs → chunk-XEVIWD3O.mjs} +23 -14
  60. package/dist/lib/node-esm/chunk-XEVIWD3O.mjs.map +7 -0
  61. package/dist/lib/node-esm/{chunk-6WNZW6KT.mjs → chunk-YFQXFQGT.mjs} +12 -7
  62. package/dist/lib/node-esm/chunk-YFQXFQGT.mjs.map +7 -0
  63. package/dist/lib/node-esm/{chunk-IJVBBVCL.mjs → chunk-ZLMFLI7G.mjs} +2 -2
  64. package/dist/lib/node-esm/chunk-ZLMFLI7G.mjs.map +7 -0
  65. package/dist/lib/node-esm/index.mjs +31 -31
  66. package/dist/lib/node-esm/index.mjs.map +3 -3
  67. package/dist/lib/node-esm/{intent-resolver-LQNHMPIX.mjs → intent-resolver-IWI47NTW.mjs} +30 -23
  68. package/dist/lib/node-esm/intent-resolver-IWI47NTW.mjs.map +7 -0
  69. package/dist/lib/node-esm/meta.json +1 -1
  70. package/dist/lib/node-esm/{react-root-UTLJEIKE.mjs → react-root-LX7SIG6M.mjs} +7 -7
  71. package/dist/lib/node-esm/{react-surface-LYDYON3U.mjs → react-surface-6SVGOZNJ.mjs} +15 -46
  72. package/dist/lib/node-esm/react-surface-6SVGOZNJ.mjs.map +7 -0
  73. package/dist/lib/node-esm/{schema-defs-7IMJPIWS.mjs → schema-defs-EOG2UPJU.mjs} +3 -3
  74. package/dist/lib/node-esm/{settings-XBSK5KHH.mjs → settings-ZDJNLFGW.mjs} +3 -3
  75. package/dist/lib/node-esm/{spaces-ready-YX4IHT4P.mjs → spaces-ready-VUGYPF4L.mjs} +6 -6
  76. package/dist/lib/node-esm/spaces-ready-VUGYPF4L.mjs.map +7 -0
  77. package/dist/lib/node-esm/{state-HOHAVPUO.mjs → state-QZ4Q6ZRL.mjs} +3 -3
  78. package/dist/lib/node-esm/types/index.mjs +2 -2
  79. package/dist/types/src/SpacePlugin.d.ts.map +1 -1
  80. package/dist/types/src/capabilities/app-graph-builder.d.ts.map +1 -1
  81. package/dist/types/src/capabilities/capabilities.d.ts +2 -1
  82. package/dist/types/src/capabilities/capabilities.d.ts.map +1 -1
  83. package/dist/types/src/capabilities/intent-resolver.d.ts.map +1 -1
  84. package/dist/types/src/capabilities/react-surface.d.ts.map +1 -1
  85. package/dist/types/src/components/CreateDialog/CreateObjectDialog.d.ts.map +1 -1
  86. package/dist/types/src/components/CreateDialog/CreateObjectDialog.stories.d.ts +80 -0
  87. package/dist/types/src/components/CreateDialog/CreateObjectDialog.stories.d.ts.map +1 -1
  88. package/dist/types/src/components/CreateDialog/CreateObjectPanel.d.ts +1 -1
  89. package/dist/types/src/components/CreateDialog/CreateObjectPanel.d.ts.map +1 -1
  90. package/dist/types/src/components/CreateDialog/CreateSpaceDialog.d.ts.map +1 -1
  91. package/dist/types/src/components/MembersContainer.stories.d.ts +80 -0
  92. package/dist/types/src/components/MembersContainer.stories.d.ts.map +1 -1
  93. package/dist/types/src/components/ObjectDetailsPanel/ObjectDetailsPanel.d.ts +9 -0
  94. package/dist/types/src/components/ObjectDetailsPanel/ObjectDetailsPanel.d.ts.map +1 -0
  95. package/dist/types/src/components/ObjectDetailsPanel/ObjectForm.d.ts +10 -0
  96. package/dist/types/src/components/ObjectDetailsPanel/ObjectForm.d.ts.map +1 -0
  97. package/dist/types/src/components/ObjectDetailsPanel/index.d.ts +3 -0
  98. package/dist/types/src/components/ObjectDetailsPanel/index.d.ts.map +1 -0
  99. package/dist/types/src/components/ObjectSettings/BaseObjectSettings.d.ts +2 -2
  100. package/dist/types/src/components/ObjectSettings/BaseObjectSettings.d.ts.map +1 -1
  101. package/dist/types/src/components/ObjectSettings/BaseObjectSettings.stories.d.ts +1500 -0
  102. package/dist/types/src/components/ObjectSettings/BaseObjectSettings.stories.d.ts.map +1 -0
  103. package/dist/types/src/components/ObjectSettings/ForeignKeys.d.ts +1 -1
  104. package/dist/types/src/components/ObjectSettings/ForeignKeys.d.ts.map +1 -1
  105. package/dist/types/src/components/ObjectSettings/index.d.ts +2 -1
  106. package/dist/types/src/components/ObjectSettings/index.d.ts.map +1 -1
  107. package/dist/types/src/components/RecordMain.d.ts +4 -3
  108. package/dist/types/src/components/RecordMain.d.ts.map +1 -1
  109. package/dist/types/src/components/RecordMain.stories.d.ts +1667 -0
  110. package/dist/types/src/components/RecordMain.stories.d.ts.map +1 -0
  111. package/dist/types/src/components/SpacePresence.stories.d.ts +80 -0
  112. package/dist/types/src/components/SpacePresence.stories.d.ts.map +1 -1
  113. package/dist/types/src/components/SpaceSettings/SpaceSettingsContainer.d.ts.map +1 -1
  114. package/dist/types/src/components/SpaceSettings/SpaceSettingsContainer.stories.d.ts +80 -0
  115. package/dist/types/src/components/SpaceSettings/SpaceSettingsContainer.stories.d.ts.map +1 -1
  116. package/dist/types/src/components/SyncStatus/SyncStatus.d.ts.map +1 -1
  117. package/dist/types/src/components/SyncStatus/SyncStatus.stories.d.ts +81 -1
  118. package/dist/types/src/components/SyncStatus/SyncStatus.stories.d.ts.map +1 -1
  119. package/dist/types/src/components/ViewEditor.d.ts.map +1 -1
  120. package/dist/types/src/components/index.d.ts +4 -6
  121. package/dist/types/src/components/index.d.ts.map +1 -1
  122. package/dist/types/src/hooks/index.d.ts +1 -0
  123. package/dist/types/src/hooks/index.d.ts.map +1 -1
  124. package/dist/types/src/hooks/useInputSurfaceLookup.d.ts +1 -1
  125. package/dist/types/src/hooks/useInputSurfaceLookup.d.ts.map +1 -1
  126. package/dist/types/src/hooks/usePath.d.ts +1 -1
  127. package/dist/types/src/hooks/usePath.d.ts.map +1 -1
  128. package/dist/types/src/hooks/useTypeOptions.d.ts +10 -0
  129. package/dist/types/src/hooks/useTypeOptions.d.ts.map +1 -0
  130. package/dist/types/src/meta.d.ts.map +1 -1
  131. package/dist/types/src/translations.d.ts +80 -0
  132. package/dist/types/src/translations.d.ts.map +1 -1
  133. package/dist/types/src/types/types.d.ts +6 -4
  134. package/dist/types/src/types/types.d.ts.map +1 -1
  135. package/dist/types/src/util.d.ts +4 -1
  136. package/dist/types/src/util.d.ts.map +1 -1
  137. package/dist/types/tsconfig.tsbuildinfo +1 -1
  138. package/package.json +50 -48
  139. package/src/SpacePlugin.ts +7 -13
  140. package/src/capabilities/app-graph-builder.ts +29 -24
  141. package/src/capabilities/capabilities.ts +7 -2
  142. package/src/capabilities/intent-resolver.ts +13 -8
  143. package/src/capabilities/react-surface.tsx +6 -77
  144. package/src/capabilities/spaces-ready.ts +1 -1
  145. package/src/components/CreateDialog/CreateObjectDialog.tsx +5 -4
  146. package/src/components/CreateDialog/CreateObjectPanel.tsx +2 -2
  147. package/src/components/CreateDialog/CreateSpaceDialog.tsx +2 -1
  148. package/src/components/MembersContainer.tsx +1 -1
  149. package/src/components/{ObjectDetailsPanel.tsx → ObjectDetailsPanel/ObjectDetailsPanel.tsx} +8 -35
  150. package/src/components/ObjectDetailsPanel/ObjectForm.tsx +75 -0
  151. package/src/components/ObjectDetailsPanel/index.ts +7 -0
  152. package/src/components/ObjectSettings/AdvancedObjectSettings.tsx +1 -1
  153. package/src/components/ObjectSettings/BaseObjectSettings.stories.tsx +63 -0
  154. package/src/components/ObjectSettings/BaseObjectSettings.tsx +86 -26
  155. package/src/components/ObjectSettings/ForeignKeys.tsx +1 -1
  156. package/src/components/ObjectSettings/index.ts +3 -1
  157. package/src/components/RecordMain.stories.tsx +116 -0
  158. package/src/components/RecordMain.tsx +69 -29
  159. package/src/components/SchemaContainer.tsx +1 -1
  160. package/src/components/SpacePresence.tsx +1 -1
  161. package/src/components/SpaceSettings/SpaceSettingsContainer.tsx +4 -3
  162. package/src/components/SyncStatus/InlineSyncStatus.tsx +5 -5
  163. package/src/components/SyncStatus/SyncStatus.stories.tsx +3 -2
  164. package/src/components/SyncStatus/SyncStatus.tsx +93 -3
  165. package/src/components/ViewEditor.tsx +6 -7
  166. package/src/components/index.ts +1 -1
  167. package/src/hooks/index.ts +1 -0
  168. package/src/hooks/useInputSurfaceLookup.tsx +1 -1
  169. package/src/hooks/usePath.ts +1 -1
  170. package/src/hooks/useTypeOptions.ts +59 -0
  171. package/src/meta.ts +5 -0
  172. package/src/translations.ts +10 -1
  173. package/src/types/types.ts +9 -5
  174. package/src/util.tsx +22 -8
  175. package/dist/lib/browser/ObjectDetailsPanel-ETI5YBTH.mjs +0 -90
  176. package/dist/lib/browser/ObjectDetailsPanel-ETI5YBTH.mjs.map +0 -7
  177. package/dist/lib/browser/RecordMain-TEBGAVSL.mjs +0 -68
  178. package/dist/lib/browser/RecordMain-TEBGAVSL.mjs.map +0 -7
  179. package/dist/lib/browser/app-graph-builder-W7RVDAUA.mjs.map +0 -7
  180. package/dist/lib/browser/chunk-2BFVC5K6.mjs.map +0 -7
  181. package/dist/lib/browser/chunk-E2I747A7.mjs.map +0 -7
  182. package/dist/lib/browser/chunk-ELJDGQTO.mjs +0 -94
  183. package/dist/lib/browser/chunk-ELJDGQTO.mjs.map +0 -7
  184. package/dist/lib/browser/chunk-IRKDREHY.mjs +0 -11
  185. package/dist/lib/browser/chunk-IRKDREHY.mjs.map +0 -7
  186. package/dist/lib/browser/chunk-JCHSUOPF.mjs.map +0 -7
  187. package/dist/lib/browser/chunk-PN27K4I7.mjs.map +0 -7
  188. package/dist/lib/browser/chunk-ZIZ2JLW6.mjs.map +0 -7
  189. package/dist/lib/browser/intent-resolver-HA7DPAUE.mjs.map +0 -7
  190. package/dist/lib/browser/react-surface-HTXYMRSW.mjs.map +0 -7
  191. package/dist/lib/browser/spaces-ready-YY77ANIF.mjs.map +0 -7
  192. package/dist/lib/node-esm/ObjectDetailsPanel-TQ5GN4QJ.mjs +0 -91
  193. package/dist/lib/node-esm/ObjectDetailsPanel-TQ5GN4QJ.mjs.map +0 -7
  194. package/dist/lib/node-esm/RecordMain-WLYJMYER.mjs +0 -70
  195. package/dist/lib/node-esm/RecordMain-WLYJMYER.mjs.map +0 -7
  196. package/dist/lib/node-esm/app-graph-builder-5ZJJUMQI.mjs.map +0 -7
  197. package/dist/lib/node-esm/chunk-5XRYHWL7.mjs.map +0 -7
  198. package/dist/lib/node-esm/chunk-6WNZW6KT.mjs.map +0 -7
  199. package/dist/lib/node-esm/chunk-BLPXWPLB.mjs.map +0 -7
  200. package/dist/lib/node-esm/chunk-IJVBBVCL.mjs.map +0 -7
  201. package/dist/lib/node-esm/chunk-MWNATOXL.mjs +0 -13
  202. package/dist/lib/node-esm/chunk-MWNATOXL.mjs.map +0 -7
  203. package/dist/lib/node-esm/chunk-Q6AAQLQG.mjs +0 -96
  204. package/dist/lib/node-esm/chunk-Q6AAQLQG.mjs.map +0 -7
  205. package/dist/lib/node-esm/chunk-XDQXUZMK.mjs.map +0 -7
  206. package/dist/lib/node-esm/intent-resolver-LQNHMPIX.mjs.map +0 -7
  207. package/dist/lib/node-esm/react-surface-LYDYON3U.mjs.map +0 -7
  208. package/dist/lib/node-esm/spaces-ready-YX4IHT4P.mjs.map +0 -7
  209. package/dist/types/src/components/ObjectDetailsPanel.d.ts +0 -9
  210. package/dist/types/src/components/ObjectDetailsPanel.d.ts.map +0 -1
  211. /package/dist/lib/browser/{CollectionMain-AX7KKXWP.mjs.map → CollectionMain-HTKSZCRR.mjs.map} +0 -0
  212. /package/dist/lib/browser/{app-graph-serializer-VLHVTDX4.mjs.map → app-graph-serializer-3R5NVV7U.mjs.map} +0 -0
  213. /package/dist/lib/browser/{chunk-EIXZABXD.mjs.map → chunk-WJXU4GKV.mjs.map} +0 -0
  214. /package/dist/lib/browser/{react-root-YQUJU64P.mjs.map → react-root-NKEKCEYM.mjs.map} +0 -0
  215. /package/dist/lib/browser/{schema-defs-R56ZDBZ7.mjs.map → schema-defs-DWYK7TYW.mjs.map} +0 -0
  216. /package/dist/lib/browser/{settings-5XPQMSPO.mjs.map → settings-ZUCC3ZLB.mjs.map} +0 -0
  217. /package/dist/lib/browser/{state-Y4RVCG4A.mjs.map → state-ISVAKMO7.mjs.map} +0 -0
  218. /package/dist/lib/node-esm/{CollectionMain-EU57SRYK.mjs.map → CollectionMain-OUHGG6OC.mjs.map} +0 -0
  219. /package/dist/lib/node-esm/{app-graph-serializer-EZJSGJUT.mjs.map → app-graph-serializer-3Z3EXEEF.mjs.map} +0 -0
  220. /package/dist/lib/node-esm/{chunk-SVFKU7EW.mjs.map → chunk-H4JILUJK.mjs.map} +0 -0
  221. /package/dist/lib/node-esm/{react-root-UTLJEIKE.mjs.map → react-root-LX7SIG6M.mjs.map} +0 -0
  222. /package/dist/lib/node-esm/{schema-defs-7IMJPIWS.mjs.map → schema-defs-EOG2UPJU.mjs.map} +0 -0
  223. /package/dist/lib/node-esm/{settings-XBSK5KHH.mjs.map → settings-ZDJNLFGW.mjs.map} +0 -0
  224. /package/dist/lib/node-esm/{state-HOHAVPUO.mjs.map → state-QZ4Q6ZRL.mjs.map} +0 -0
@@ -0,0 +1,147 @@
1
+ import { createRequire } from 'node:module';const require = createRequire(import.meta.url);
2
+ import {
3
+ meta
4
+ } from "./chunk-BDEFTL6K.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 { batch } from "@preact/signals-core";
16
+ import * as Function from "effect/Function";
17
+ import * as Option from "effect/Option";
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 { 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
+ // TODO(wittjosiah): Support multiple tags.
27
+ tag: Type.Ref(Tag.Tag).pipe(Schema.optional)
28
+ });
29
+ var TagSchema = Tag.Tag.pipe(Schema.omit("id"));
30
+ var BaseObjectSettings = ({ classNames, children, object }) => {
31
+ var _effect = _useSignals();
32
+ try {
33
+ const space = getSpace(object);
34
+ const handleRefQueryLookup = useRefQueryLookupHandler({
35
+ space
36
+ });
37
+ const formSchema = useMemo(() => {
38
+ return Function.pipe(Obj.getSchema(object), Option.fromNullable, Option.map((schema) => BaseSchema.pipe(Schema.extend(schema))), Option.getOrUndefined);
39
+ }, [
40
+ object
41
+ ]);
42
+ const meta2 = Obj.getMeta(object);
43
+ const tag = meta2.tags?.[0] ? space?.db.ref(DXN.parse(meta2.tags?.[0])) : void 0;
44
+ const values = useMemo(() => ({
45
+ tag,
46
+ ...object
47
+ }), [
48
+ object,
49
+ tag
50
+ ]);
51
+ const handleCreateTag = useCallback((values2) => {
52
+ invariant(space, void 0, {
53
+ F: __dxlog_file,
54
+ L: 59,
55
+ S: void 0,
56
+ A: [
57
+ "space",
58
+ ""
59
+ ]
60
+ });
61
+ const tag2 = space.db.add(Tag.make(values2));
62
+ const meta3 = Obj.getMeta(object);
63
+ meta3.tags = [
64
+ Obj.getDXN(tag2).toString()
65
+ ];
66
+ }, []);
67
+ const handleSave = useCallback(({ tag: tag2, ...values2 }) => {
68
+ batch(() => {
69
+ const meta3 = Obj.getMeta(object);
70
+ const currentTag = meta3.tags?.[0];
71
+ if (tag2 !== void 0 && currentTag !== tag2?.dxn.toString()) {
72
+ meta3.tags = [
73
+ tag2.dxn.toString()
74
+ ];
75
+ }
76
+ Object.entries(values2).forEach(([key, value]) => {
77
+ if (value !== void 0 && value !== object[key]) {
78
+ Object.defineProperty(object, key, {
79
+ value
80
+ });
81
+ }
82
+ });
83
+ });
84
+ }, [
85
+ object
86
+ ]);
87
+ if (!formSchema) {
88
+ return null;
89
+ }
90
+ return /* @__PURE__ */ React.createElement(React.Fragment, null, /* @__PURE__ */ React.createElement(Form, {
91
+ classNames,
92
+ outerSpacing: false,
93
+ autoSave: true,
94
+ schema: formSchema,
95
+ values,
96
+ createSchema: TagSchema,
97
+ createOptionIcon: "ph--plus--regular",
98
+ createOptionLabel: [
99
+ "add tag label",
100
+ {
101
+ ns: meta.id
102
+ }
103
+ ],
104
+ createInitialValuePath: "label",
105
+ onCreate: handleCreateTag,
106
+ onSave: handleSave,
107
+ onQueryRefOptions: handleRefQueryLookup
108
+ }), children);
109
+ } finally {
110
+ _effect.f();
111
+ }
112
+ };
113
+
114
+ // src/components/ObjectSettings/ObjectSettingsContainer.tsx
115
+ var ObjectSettingsContainer = ({ object, role }) => {
116
+ var _effect = _useSignals2();
117
+ try {
118
+ const data = useMemo2(() => ({
119
+ subject: object
120
+ }), [
121
+ object
122
+ ]);
123
+ return /* @__PURE__ */ React2.createElement(Clipboard.Provider, null, /* @__PURE__ */ React2.createElement(StackItem.Content, {
124
+ toolbar: true
125
+ }, /* @__PURE__ */ React2.createElement(Toolbar.Root, null), /* @__PURE__ */ React2.createElement("div", {
126
+ role: "none",
127
+ className: "overflow-y-auto pli-cardSpacingInline plb-cardSpacingBlock"
128
+ }, /* @__PURE__ */ React2.createElement(BaseObjectSettings, {
129
+ object
130
+ }, /* @__PURE__ */ React2.createElement(Surface, {
131
+ role: "base-object-settings",
132
+ data
133
+ })), /* @__PURE__ */ React2.createElement(Surface, {
134
+ role: "object-settings",
135
+ data
136
+ }))));
137
+ } finally {
138
+ _effect.f();
139
+ }
140
+ };
141
+
142
+ // src/components/ObjectSettings/index.ts
143
+ var ObjectSettings_default = ObjectSettingsContainer;
144
+ export {
145
+ ObjectSettings_default as default
146
+ };
147
+ //# sourceMappingURL=ObjectSettings-EU6F43RP.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 { batch } from '@preact/signals-core';\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 { 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\n// TODO(wittjosiah): Would be nice to control order when extending so this isn't always first/last.\nconst BaseSchema = Schema.Struct({\n // TODO(wittjosiah): Support multiple tags.\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 return Function.pipe(\n Obj.getSchema(object),\n Option.fromNullable,\n Option.map((schema) => BaseSchema.pipe(Schema.extend(schema))),\n Option.getOrUndefined,\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 tag,\n ...object,\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 ({ tag, ...values }: Schema.Schema.Type<typeof formSchema>) => {\n batch(() => {\n const meta = Obj.getMeta(object);\n const currentTag = meta.tags?.[0];\n if (tag !== undefined && currentTag !== tag?.dxn.toString()) {\n meta.tags = [tag.dxn.toString()];\n }\n\n Object.entries(values).forEach(([key, value]) => {\n if (value !== undefined && value !== object[key as keyof Obj.Any]) {\n Object.defineProperty(object, key, { value });\n }\n });\n });\n },\n [object],\n );\n\n if (!formSchema) {\n return null;\n }\n\n return (\n <>\n <Form\n classNames={classNames}\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", "batch", "Function", "Option", "Schema", "React", "useCallback", "useMemo", "DXN", "Obj", "Tag", "Type", "invariant", "getSpace", "Form", "useRefQueryLookupHandler", "BaseSchema", "Struct", "tag", "Type", "Ref", "Tag", "pipe", "optional", "TagSchema", "omit", "BaseObjectSettings", "classNames", "children", "object", "space", "getSpace", "handleRefQueryLookup", "useRefQueryLookupHandler", "formSchema", "useMemo", "Obj", "getSchema", "fromNullable", "map", "schema", "extend", "getOrUndefined", "meta", "getMeta", "tags", "db", "ref", "DXN", "parse", "undefined", "values", "handleCreateTag", "useCallback", "invariant", "add", "make", "getDXN", "toString", "handleSave", "batch", "currentTag", "dxn", "Object", "entries", "forEach", "key", "value", "defineProperty", "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,100 @@
1
+ import { createRequire } from 'node:module';const require = createRequire(import.meta.url);
2
+ import {
3
+ meta
4
+ } from "./chunk-BDEFTL6K.mjs";
5
+
6
+ // src/components/RecordMain.tsx
7
+ import { useSignals as _useSignals } from "@preact-signals/safe-react/tracking";
8
+ import React, { useMemo } from "react";
9
+ import { Surface } from "@dxos/app-framework";
10
+ import { Filter, Ref, Relation } from "@dxos/echo";
11
+ import { getSpace, useQuery } from "@dxos/react-client/echo";
12
+ import { useTranslation } from "@dxos/react-ui";
13
+ import { Masonry } from "@dxos/react-ui-masonry";
14
+ import { StackItem } from "@dxos/react-ui-stack";
15
+ import { mx } from "@dxos/react-ui-theme";
16
+ import { isNonNullable } from "@dxos/util";
17
+ var RecordMain = ({ record }) => {
18
+ var _effect = _useSignals();
19
+ try {
20
+ const { t } = useTranslation(meta.id);
21
+ const space = getSpace(record);
22
+ const data = useMemo(() => ({
23
+ subject: record
24
+ }), [
25
+ record
26
+ ]);
27
+ const objects = useQuery(space, Filter.everything());
28
+ const related = useMemo(() => {
29
+ const relations = objects.filter((obj) => Relation.isRelation(obj));
30
+ const targetObjects = relations.filter((relation) => Relation.getSource(relation) === record).map((relation) => Relation.getTarget(relation));
31
+ const sourceObjects = relations.filter((relation) => Relation.getTarget(relation) === record).map((relation) => Relation.getSource(relation));
32
+ const references = getReferencesFromObject(record);
33
+ const referencedObjects = references.map((ref) => ref.target).filter(isNonNullable);
34
+ const referencingObjects = objects.filter((obj) => {
35
+ const refs = getReferencesFromObject(obj);
36
+ return refs.some((ref) => ref.target === record);
37
+ });
38
+ return [
39
+ ...referencedObjects,
40
+ ...referencingObjects,
41
+ ...targetObjects,
42
+ ...sourceObjects
43
+ ];
44
+ }, [
45
+ record,
46
+ objects
47
+ ]);
48
+ return /* @__PURE__ */ React.createElement(StackItem.Content, {
49
+ classNames: "flex flex-col items-center"
50
+ }, /* @__PURE__ */ React.createElement("div", {
51
+ role: "none",
52
+ className: mx("flex flex-col gap-4 p-6 is-full overflow-y-auto")
53
+ }, /* @__PURE__ */ React.createElement("div", {
54
+ role: "none",
55
+ className: mx("flex flex-col gap-1 card-min-width card-max-width")
56
+ }, /* @__PURE__ */ React.createElement(Surface, {
57
+ role: "section",
58
+ data,
59
+ limit: 1
60
+ })), related.length > 0 && /* @__PURE__ */ React.createElement("div", {
61
+ role: "none",
62
+ className: mx("flex flex-col gap-1", related.length === 1 ? "card-max-width" : "is-full")
63
+ }, /* @__PURE__ */ React.createElement("label", {
64
+ className: "text-description text-sm mbs-2"
65
+ }, t("related objects label")), /* @__PURE__ */ React.createElement(Masonry.Root, {
66
+ items: related,
67
+ render: Card,
68
+ intrinsicHeight: true,
69
+ columnCount: related.length === 1 ? 1 : void 0
70
+ }))));
71
+ } finally {
72
+ _effect.f();
73
+ }
74
+ };
75
+ var Card = ({ data: subject }) => {
76
+ var _effect = _useSignals();
77
+ try {
78
+ const data = useMemo(() => ({
79
+ subject
80
+ }), [
81
+ subject
82
+ ]);
83
+ return /* @__PURE__ */ React.createElement(Surface, {
84
+ role: "card",
85
+ data,
86
+ limit: 1
87
+ });
88
+ } finally {
89
+ _effect.f();
90
+ }
91
+ };
92
+ var getReferencesFromObject = (obj) => {
93
+ return Object.getOwnPropertyNames(obj).map((name) => obj[name]).filter((value) => Ref.isRef(value));
94
+ };
95
+ var RecordMain_default = RecordMain;
96
+ export {
97
+ RecordMain,
98
+ RecordMain_default as default
99
+ };
100
+ //# sourceMappingURL=RecordMain-SD76DGOR.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, { useMemo } from 'react';\n\nimport { Surface } from '@dxos/app-framework';\nimport { Filter, type Obj, Ref, Relation } from '@dxos/echo';\nimport { getSpace, useQuery } from '@dxos/react-client/echo';\nimport { useTranslation } from '@dxos/react-ui';\nimport { Masonry } from '@dxos/react-ui-masonry';\nimport { StackItem } from '@dxos/react-ui-stack';\nimport { mx } from '@dxos/react-ui-theme';\nimport { isNonNullable } from '@dxos/util';\n\nimport { meta } from '../meta';\n\nexport type RecordMainProps = {\n record: Obj.Any;\n};\n\nexport const RecordMain = ({ record }: RecordMainProps) => {\n const { t } = useTranslation(meta.id);\n const space = getSpace(record);\n const data = useMemo(() => ({ subject: record }), [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 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, ...targetObjects, ...sourceObjects];\n }, [record, objects]);\n\n return (\n <StackItem.Content classNames='flex flex-col items-center'>\n <div role='none' className={mx('flex flex-col gap-4 p-6 is-full overflow-y-auto')}>\n <div role='none' className={mx('flex flex-col gap-1 card-min-width card-max-width')}>\n <Surface role='section' data={data} limit={1} />\n </div>\n\n {/* TODO(wittjosiah): This should maybe be in a separate stack item. */}\n {related.length > 0 && (\n <div role='none' className={mx('flex flex-col gap-1', related.length === 1 ? 'card-max-width' : 'is-full')}>\n <label className='text-description text-sm mbs-2'>{t('related objects label')}</label>\n <Masonry.Root<Obj.Any>\n items={related}\n render={Card}\n intrinsicHeight\n columnCount={related.length === 1 ? 1 : undefined}\n />\n </div>\n )}\n </div>\n </StackItem.Content>\n );\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\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\nexport default RecordMain;\n"],
5
+ "mappings": ";;;;;;;AAIA,OAAOA,SAASC,eAAe;AAE/B,SAASC,eAAe;AACxB,SAASC,QAAkBC,KAAKC,gBAAgB;AAChD,SAASC,UAAUC,gBAAgB;AACnC,SAASC,sBAAsB;AAC/B,SAASC,eAAe;AACxB,SAASC,iBAAiB;AAC1B,SAASC,UAAU;AACnB,SAASC,qBAAqB;AAQvB,IAAMC,aAAa,CAAC,EAAEC,OAAM,MAAmB;;;AACpD,UAAM,EAAEC,EAAC,IAAKC,eAAeC,KAAKC,EAAE;AACpC,UAAMC,QAAQC,SAASN,MAAAA;AACvB,UAAMO,OAAOC,QAAQ,OAAO;MAAEC,SAAST;IAAO,IAAI;MAACA;KAAO;AAG1D,UAAMU,UAAUC,SAASN,OAAOO,OAAOC,WAAU,CAAA;AACjD,UAAMC,UAAUN,QAAQ,MAAA;AACtB,YAAMO,YAAYL,QAAQM,OAAO,CAACC,QAAQC,SAASC,WAAWF,GAAAA,CAAAA;AAC9D,YAAMG,gBAAgBL,UACnBC,OAAO,CAACK,aAAaH,SAASI,UAAUD,QAAAA,MAAcrB,MAAAA,EACtDuB,IAAI,CAACF,aAAaH,SAASM,UAAUH,QAAAA,CAAAA;AACxC,YAAMI,gBAAgBV,UACnBC,OAAO,CAACK,aAAaH,SAASM,UAAUH,QAAAA,MAAcrB,MAAAA,EACtDuB,IAAI,CAACF,aAAaH,SAASI,UAAUD,QAAAA,CAAAA;AAExC,YAAMK,aAAaC,wBAAwB3B,MAAAA;AAC3C,YAAM4B,oBAAoBF,WAAWH,IAAI,CAACM,QAAQA,IAAIC,MAAM,EAAEd,OAAOe,aAAAA;AACrE,YAAMC,qBAAqBtB,QAAQM,OAAO,CAACC,QAAAA;AACzC,cAAMgB,OAAON,wBAAwBV,GAAAA;AACrC,eAAOgB,KAAKC,KAAK,CAACL,QAAQA,IAAIC,WAAW9B,MAAAA;MAC3C,CAAA;AAEA,aAAO;WAAI4B;WAAsBI;WAAuBZ;WAAkBK;;IAC5E,GAAG;MAACzB;MAAQU;KAAQ;AAEpB,WACE,sBAAA,cAACyB,UAAUC,SAAO;MAACC,YAAW;OAC5B,sBAAA,cAACC,OAAAA;MAAIC,MAAK;MAAOC,WAAWC,GAAG,iDAAA;OAC7B,sBAAA,cAACH,OAAAA;MAAIC,MAAK;MAAOC,WAAWC,GAAG,mDAAA;OAC7B,sBAAA,cAACC,SAAAA;MAAQH,MAAK;MAAUhC;MAAYoC,OAAO;SAI5C7B,QAAQ8B,SAAS,KAChB,sBAAA,cAACN,OAAAA;MAAIC,MAAK;MAAOC,WAAWC,GAAG,uBAAuB3B,QAAQ8B,WAAW,IAAI,mBAAmB,SAAA;OAC9F,sBAAA,cAACC,SAAAA;MAAML,WAAU;OAAkCvC,EAAE,uBAAA,CAAA,GACrD,sBAAA,cAAC6C,QAAQC,MAAI;MACXC,OAAOlC;MACPmC,QAAQC;MACRC,iBAAAA;MACAC,aAAatC,QAAQ8B,WAAW,IAAI,IAAIS;;;;;AAOtD;AAEA,IAAMH,OAAO,CAAC,EAAE3C,MAAME,QAAO,MAAqB;;;AAChD,UAAMF,OAAOC,QAAQ,OAAO;MAAEC;IAAQ,IAAI;MAACA;KAAQ;AACnD,WAAO,sBAAA,cAACiC,SAAAA;MAAQH,MAAK;MAAOhC;MAAYoC,OAAO;;;;;AACjD;AAEA,IAAMhB,0BAA0B,CAACV,QAAAA;AAC/B,SAAOqC,OAAOC,oBAAoBtC,GAAAA,EAC/BM,IAAI,CAACiC,SAASvC,IAAIuC,IAAAA,CAAsB,EACxCxC,OAAO,CAACyC,UAAUC,IAAIC,MAAMF,KAAAA,CAAAA;AACjC;AAEA,IAAA,qBAAe1D;",
6
+ "names": ["React", "useMemo", "Surface", "Filter", "Ref", "Relation", "getSpace", "useQuery", "useTranslation", "Masonry", "StackItem", "mx", "isNonNullable", "RecordMain", "record", "t", "useTranslation", "meta", "id", "space", "getSpace", "data", "useMemo", "subject", "objects", "useQuery", "Filter", "everything", "related", "relations", "filter", "obj", "Relation", "isRelation", "targetObjects", "relation", "getSource", "map", "getTarget", "sourceObjects", "references", "getReferencesFromObject", "referencedObjects", "ref", "target", "isNonNullable", "referencingObjects", "refs", "some", "StackItem", "Content", "classNames", "div", "role", "className", "mx", "Surface", "limit", "length", "label", "Masonry", "Root", "items", "render", "Card", "intrinsicHeight", "columnCount", "undefined", "Object", "getOwnPropertyNames", "name", "value", "Ref", "isRef"]
7
+ }
@@ -1,10 +1,10 @@
1
1
  import { createRequire } from 'node:module';const require = createRequire(import.meta.url);
2
2
  import {
3
3
  getActiveSpace
4
- } from "./chunk-Q6AAQLQG.mjs";
4
+ } from "./chunk-PM4ZIGKC.mjs";
5
5
  import {
6
6
  SpaceCapabilities
7
- } from "./chunk-IJVBBVCL.mjs";
7
+ } from "./chunk-ZLMFLI7G.mjs";
8
8
  import {
9
9
  SHARED,
10
10
  SPACES,
@@ -15,18 +15,21 @@ import {
15
15
  createStaticSchemaActions,
16
16
  createStaticSchemaNode,
17
17
  rxFromQuery
18
- } from "./chunk-XDQXUZMK.mjs";
18
+ } from "./chunk-XEVIWD3O.mjs";
19
19
  import {
20
20
  SPACE_TYPE,
21
21
  SpaceAction
22
- } from "./chunk-6WNZW6KT.mjs";
22
+ } from "./chunk-YFQXFQGT.mjs";
23
23
  import {
24
24
  meta
25
- } from "./chunk-MWNATOXL.mjs";
25
+ } from "./chunk-BDEFTL6K.mjs";
26
26
 
27
27
  // src/capabilities/app-graph-builder.ts
28
28
  import { Rx } from "@effect-rx/rx-react";
29
- import { Array, Option, Schema, pipe } from "effect";
29
+ import * as Array from "effect/Array";
30
+ import * as Function from "effect/Function";
31
+ import * as Option from "effect/Option";
32
+ import * as Schema from "effect/Schema";
30
33
  import { Capabilities, contributes, createIntent } from "@dxos/app-framework";
31
34
  import { SpaceState, getSpace, isSpace, parseId } from "@dxos/client/echo";
32
35
  import { Filter, Obj, Query, Type } from "@dxos/echo";
@@ -34,7 +37,7 @@ import { log } from "@dxos/log";
34
37
  import { ClientCapabilities } from "@dxos/plugin-client";
35
38
  import { ATTENDABLE_PATH_SEPARATOR, PLANK_COMPANION_TYPE } from "@dxos/plugin-deck/types";
36
39
  import { ROOT_ID, createExtension, rxFromObservable, rxFromSignal } from "@dxos/plugin-graph";
37
- import { DataType, typenameFromQuery } from "@dxos/schema";
40
+ import { DataType, getTypenameFromQuery } from "@dxos/schema";
38
41
  import { isNonNullable } from "@dxos/util";
39
42
  var __dxlog_file = "/__w/dxos/dxos/packages/plugins/plugin-space/src/capabilities/app-graph-builder.ts";
40
43
  var app_graph_builder_default = ((context) => {
@@ -71,7 +74,7 @@ var app_graph_builder_default = ((context) => {
71
74
  } else {
72
75
  log.warn("spaces order object not found", void 0, {
73
76
  F: __dxlog_file,
74
- L: 71,
77
+ L: 74,
75
78
  S: void 0,
76
79
  C: (f, a) => f(...a)
77
80
  });
@@ -84,7 +87,7 @@ var app_graph_builder_default = ((context) => {
84
87
  createExtension({
85
88
  id: `${meta.id}/primary-actions`,
86
89
  position: "hoist",
87
- actions: (node) => Rx.make((get) => pipe(get(node), Option.flatMap((node2) => node2.id === ROOT_ID ? Option.some(node2) : Option.none()), Option.map(() => [
90
+ actions: (node) => Rx.make((get) => Function.pipe(get(node), Option.flatMap((node2) => node2.id === ROOT_ID ? Option.some(node2) : Option.none()), Option.map(() => [
88
91
  {
89
92
  id: SpaceAction.OpenCreateSpace._tag,
90
93
  data: async () => {
@@ -176,7 +179,7 @@ var app_graph_builder_default = ((context) => {
176
179
  createExtension({
177
180
  id: `${meta.id}/root`,
178
181
  position: "hoist",
179
- connector: (node) => Rx.make((get) => pipe(get(node), Option.flatMap((node2) => node2.id === ROOT_ID ? Option.some(node2) : Option.none()), Option.map(() => [
182
+ connector: (node) => Rx.make((get) => Function.pipe(get(node), Option.flatMap((node2) => node2.id === ROOT_ID ? Option.some(node2) : Option.none()), Option.map(() => [
180
183
  spacesNode
181
184
  ]), Option.getOrElse(() => [])))
182
185
  }),
@@ -185,7 +188,7 @@ var app_graph_builder_default = ((context) => {
185
188
  id: SPACES,
186
189
  connector: (node) => {
187
190
  let query;
188
- return Rx.make((get) => pipe(get(node), Option.flatMap((node2) => node2.id === SPACES ? Option.some(node2) : Option.none()), Option.map(() => {
191
+ return Rx.make((get) => Function.pipe(get(node), Option.flatMap((node2) => node2.id === SPACES ? Option.some(node2) : Option.none()), Option.map(() => {
189
192
  const state = context.getCapability(SpaceCapabilities.State);
190
193
  const client = context.getCapability(ClientCapabilities.Client);
191
194
  const spacesRx = rxFromObservable(client.spaces);
@@ -229,7 +232,7 @@ var app_graph_builder_default = ((context) => {
229
232
  // Create space actions.
230
233
  createExtension({
231
234
  id: `${meta.id}/actions`,
232
- actions: (node) => Rx.make((get) => pipe(get(node), Option.flatMap((node2) => node2.type === SPACE_TYPE && isSpace(node2.data) ? Option.some(node2.data) : Option.none()), Option.flatMap((space) => {
235
+ actions: (node) => Rx.make((get) => Function.pipe(get(node), Option.flatMap((node2) => node2.type === SPACE_TYPE && isSpace(node2.data) ? Option.some(node2.data) : Option.none()), Option.flatMap((space) => {
233
236
  const [dispatcher] = get(context.capabilities(Capabilities.IntentDispatcher));
234
237
  const [client] = get(context.capabilities(ClientCapabilities.Client));
235
238
  const [state] = get(context.capabilities(SpaceCapabilities.State));
@@ -248,7 +251,7 @@ var app_graph_builder_default = ((context) => {
248
251
  // Create nodes for objects in the root collection of a space.
249
252
  createExtension({
250
253
  id: `${meta.id}/root-collection`,
251
- connector: (node) => Rx.make((get) => pipe(get(node), Option.flatMap((node2) => node2.type === SPACE_TYPE && isSpace(node2.data) ? Option.some(node2.data) : Option.none()), Option.map((space) => {
254
+ connector: (node) => Rx.make((get) => Function.pipe(get(node), Option.flatMap((node2) => node2.type === SPACE_TYPE && isSpace(node2.data) ? Option.some(node2.data) : Option.none()), Option.map((space) => {
252
255
  const state = context.getCapability(SpaceCapabilities.State);
253
256
  const spaceState = get(rxFromObservable(space.state));
254
257
  if (spaceState !== SpaceState.SPACE_READY) {
@@ -258,7 +261,7 @@ var app_graph_builder_default = ((context) => {
258
261
  if (!collection) {
259
262
  return [];
260
263
  }
261
- return get(rxFromSignal(() => pipe(collection.objects, Array.map((object) => object.target), Array.filter(isNonNullable), Array.map((object) => createObjectNode({
264
+ return get(rxFromSignal(() => Function.pipe(collection.objects, Array.map((object) => object.target), Array.filter(isNonNullable), Array.map((object) => createObjectNode({
262
265
  space,
263
266
  object,
264
267
  resolve,
@@ -269,10 +272,10 @@ var app_graph_builder_default = ((context) => {
269
272
  // Create nodes for objects in a collection or by its fully qualified id.
270
273
  createExtension({
271
274
  id: `${meta.id}/objects`,
272
- connector: (node) => Rx.make((get) => pipe(get(node), Option.flatMap((node2) => Obj.instanceOf(DataType.Collection, node2.data) ? Option.some(node2.data) : Option.none()), Option.map((collection) => {
275
+ connector: (node) => Rx.make((get) => Function.pipe(get(node), Option.flatMap((node2) => Obj.instanceOf(DataType.Collection, node2.data) ? Option.some(node2.data) : Option.none()), Option.map((collection) => {
273
276
  const state = context.getCapability(SpaceCapabilities.State);
274
277
  const space = getSpace(collection);
275
- return get(rxFromSignal(() => pipe(collection.objects, Array.map((object) => object.target), Array.filter(isNonNullable), Array.map((object) => space && createObjectNode({
278
+ return get(rxFromSignal(() => Function.pipe(collection.objects, Array.map((object) => object.target), Array.filter(isNonNullable), Array.map((object) => space && createObjectNode({
276
279
  object,
277
280
  space,
278
281
  resolve,
@@ -285,9 +288,9 @@ var app_graph_builder_default = ((context) => {
285
288
  id: `${meta.id}/query-collection-objects`,
286
289
  connector: (node) => {
287
290
  let query;
288
- return Rx.make((get) => pipe(get(node), Option.flatMap((node2) => Obj.instanceOf(DataType.QueryCollection, node2.data) ? Option.some(node2.data) : Option.none()), Option.flatMap((collection) => {
291
+ return Rx.make((get) => Function.pipe(get(node), Option.flatMap((node2) => Obj.instanceOf(DataType.QueryCollection, node2.data) ? Option.some(node2.data) : Option.none()), Option.flatMap((collection) => {
289
292
  const space = getSpace(collection);
290
- const typename = typenameFromQuery(collection.query);
293
+ const typename = getTypenameFromQuery(collection.query);
291
294
  return typename && space ? Option.some({
292
295
  typename,
293
296
  space
@@ -318,7 +321,7 @@ var app_graph_builder_default = ((context) => {
318
321
  id: `${meta.id}/static-schemas`,
319
322
  connector: (node) => {
320
323
  const client = context.getCapability(ClientCapabilities.Client);
321
- return Rx.make((get) => pipe(get(node), Option.flatMap((node2) => Obj.instanceOf(DataType.QueryCollection, node2.data) && typenameFromQuery(node2.data.query) === DataType.StoredSchema.typename ? Option.some(node2.data) : Option.none()), Option.flatMap((collection) => {
324
+ return Rx.make((get) => Function.pipe(get(node), Option.flatMap((node2) => Obj.instanceOf(DataType.QueryCollection, node2.data) && getTypenameFromQuery(node2.data.query) === DataType.StoredSchema.typename ? Option.some(node2.data) : Option.none()), Option.flatMap((collection) => {
322
325
  const space = getSpace(collection);
323
326
  return space?.properties.staticRecords ? Option.some(space) : Option.none();
324
327
  }), Option.map((space) => {
@@ -334,7 +337,7 @@ var app_graph_builder_default = ((context) => {
334
337
  id: `${meta.id}/static-schema-actions`,
335
338
  actions: (node) => {
336
339
  let query;
337
- return Rx.make((get) => pipe(get(node), Option.flatMap((node2) => {
340
+ return Rx.make((get) => Function.pipe(get(node), Option.flatMap((node2) => {
338
341
  const space = isSpace(node2.properties.space) ? node2.properties.space : void 0;
339
342
  return space && Schema.isSchema(node2.data) ? Option.some({
340
343
  space,
@@ -347,7 +350,7 @@ var app_graph_builder_default = ((context) => {
347
350
  const views = get(rxFromQuery(query));
348
351
  const filteredViews = get(rxFromSignal(() => (
349
352
  // TODO(wittjosiah): Remove cast.
350
- views.filter((view) => typenameFromQuery(view.query.ast) === Type.getTypename(schema))
353
+ views.filter((view) => getTypenameFromQuery(view.query.ast) === Type.getTypename(schema))
351
354
  )));
352
355
  const deletable = filteredViews.length === 0;
353
356
  const [dispatcher] = get(context.capabilities(Capabilities.IntentDispatcher));
@@ -368,7 +371,7 @@ var app_graph_builder_default = ((context) => {
368
371
  id: `${meta.id}/schema-views`,
369
372
  connector: (node) => {
370
373
  let query;
371
- return Rx.make((get) => pipe(get(node), Option.flatMap((node2) => {
374
+ return Rx.make((get) => Function.pipe(get(node), Option.flatMap((node2) => {
372
375
  const space = getSpace(node2.data) ?? (isSpace(node2.properties.space) ? node2.properties.space : void 0);
373
376
  return space && (Obj.instanceOf(DataType.StoredSchema, node2.data) || Schema.isSchema(node2.data)) ? Option.some({
374
377
  space,
@@ -379,7 +382,7 @@ var app_graph_builder_default = ((context) => {
379
382
  query = space.db.query(Filter.type(DataType.View));
380
383
  }
381
384
  const typename = Schema.isSchema(schema) ? Type.getTypename(schema) : schema.typename;
382
- return get(rxFromQuery(query)).filter((view) => typenameFromQuery(view.query.ast) === typename).map((view) => get(rxFromSignal(() => createObjectNode({
385
+ return get(rxFromQuery(query)).filter((view) => getTypenameFromQuery(view.query.ast) === typename).map((view) => get(rxFromSignal(() => createObjectNode({
383
386
  object: view,
384
387
  space,
385
388
  resolve,
@@ -424,22 +427,22 @@ var app_graph_builder_default = ((context) => {
424
427
  id: `${meta.id}/object-actions`,
425
428
  actions: (node) => {
426
429
  let query;
427
- return Rx.make((get) => pipe(get(node), Option.flatMap((node2) => {
430
+ return Rx.make((get) => Function.pipe(get(node), Option.flatMap((node2) => {
428
431
  const space = getSpace(node2.data);
429
- return space && Obj.isObject(node2.data) ? Option.some({
432
+ return space && Obj.isObject(node2.data) && Obj.getTypename(node2.data) === node2.type ? Option.some({
430
433
  space,
431
434
  object: node2.data
432
435
  }) : Option.none();
433
436
  }), Option.flatMap(({ space, object }) => {
434
- const isSchema = Obj.instanceOf(DataType.StoredSchema, object);
435
- if (!query && isSchema) {
437
+ const isSchema2 = Obj.instanceOf(DataType.StoredSchema, object);
438
+ if (!query && isSchema2) {
436
439
  query = space.db.query(Filter.type(DataType.View));
437
440
  }
438
- let deletable = !isSchema && // Don't allow the Records smart collection to be deleted.
439
- !(Obj.instanceOf(DataType.QueryCollection, object) && typenameFromQuery(object.query) === DataType.StoredSchema.typename);
440
- if (isSchema && query) {
441
+ let deletable = !isSchema2 && // Don't allow the Records smart collection to be deleted.
442
+ !(Obj.instanceOf(DataType.QueryCollection, object) && getTypenameFromQuery(object.query) === DataType.StoredSchema.typename);
443
+ if (isSchema2 && query) {
441
444
  const views = get(rxFromQuery(query));
442
- const filteredViews = get(rxFromSignal(() => views.filter((view) => typenameFromQuery(view.query.ast) === object.typename)));
445
+ const filteredViews = get(rxFromSignal(() => views.filter((view) => getTypenameFromQuery(view.query.ast) === object.typename)));
443
446
  deletable = filteredViews.length === 0;
444
447
  }
445
448
  const [dispatcher] = get(context.capabilities(Capabilities.IntentDispatcher));
@@ -464,7 +467,7 @@ var app_graph_builder_default = ((context) => {
464
467
  // View selected objects.
465
468
  createExtension({
466
469
  id: `${meta.id}/selected-objects`,
467
- connector: (node) => Rx.make((get) => pipe(get(node), Option.flatMap((node2) => Obj.instanceOf(DataType.View, node2.data) ? Option.some(node2) : Option.none()), Option.map((node2) => [
470
+ connector: (node) => Rx.make((get) => Function.pipe(get(node), Option.flatMap((node2) => Obj.instanceOf(DataType.View, node2.data) ? Option.some(node2) : Option.none()), Option.map((node2) => [
468
471
  {
469
472
  id: [
470
473
  node2.id,
@@ -488,7 +491,7 @@ var app_graph_builder_default = ((context) => {
488
491
  // Object settings plank companion.
489
492
  createExtension({
490
493
  id: `${meta.id}/settings`,
491
- connector: (node) => Rx.make((get) => pipe(get(node), Option.flatMap((node2) => Obj.isObject(node2.data) ? Option.some(node2) : Option.none()), Option.map((node2) => [
494
+ connector: (node) => Rx.make((get) => Function.pipe(get(node), Option.flatMap((node2) => Obj.isObject(node2.data) ? Option.some(node2) : Option.none()), Option.map((node2) => [
492
495
  {
493
496
  id: [
494
497
  node2.id,
@@ -515,4 +518,4 @@ var app_graph_builder_default = ((context) => {
515
518
  export {
516
519
  app_graph_builder_default as default
517
520
  };
518
- //# sourceMappingURL=app-graph-builder-5ZJJUMQI.mjs.map
521
+ //# sourceMappingURL=app-graph-builder-B23W62HY.mjs.map