@dxos/plugin-navtree 0.8.4-main.ead640a → 0.8.4-main.effb148878

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 (271) hide show
  1. package/LICENSE +102 -5
  2. package/README.md +1 -1
  3. package/dist/lib/neutral/CommandsDialogContent-UBGIQ5FI.mjs +112 -0
  4. package/dist/lib/neutral/CommandsDialogContent-UBGIQ5FI.mjs.map +7 -0
  5. package/dist/lib/neutral/CommandsTrigger-BH5WLMHK.mjs +27 -0
  6. package/dist/lib/neutral/CommandsTrigger-BH5WLMHK.mjs.map +7 -0
  7. package/dist/lib/neutral/NavTreeContainer-6AR4BFDD.mjs +12 -0
  8. package/dist/lib/neutral/NavTreeContainer-6AR4BFDD.mjs.map +7 -0
  9. package/dist/lib/neutral/NavTreeDocumentTitle-H3E6ZLYE.mjs +22 -0
  10. package/dist/lib/neutral/NavTreeDocumentTitle-H3E6ZLYE.mjs.map +7 -0
  11. package/dist/lib/neutral/NavTreePlugin.mjs +56 -0
  12. package/dist/lib/neutral/NavTreePlugin.mjs.map +7 -0
  13. package/dist/lib/neutral/NavTreePlugin.node.mjs +18 -0
  14. package/dist/lib/neutral/NavTreePlugin.node.mjs.map +7 -0
  15. package/dist/lib/neutral/NavTreePlugin.workerd.mjs +16 -0
  16. package/dist/lib/neutral/NavTreePlugin.workerd.mjs.map +7 -0
  17. package/dist/lib/neutral/app-graph-builder-Z347LKSF.mjs +42 -0
  18. package/dist/lib/neutral/app-graph-builder-Z347LKSF.mjs.map +7 -0
  19. package/dist/lib/neutral/capabilities/index.mjs +17 -0
  20. package/dist/lib/neutral/capabilities/index.mjs.map +7 -0
  21. package/dist/lib/neutral/chunk-5OPDKH6B.mjs +273 -0
  22. package/dist/lib/neutral/chunk-5OPDKH6B.mjs.map +7 -0
  23. package/dist/lib/neutral/chunk-J5LGTIGS.mjs +10 -0
  24. package/dist/lib/neutral/chunk-J5LGTIGS.mjs.map +7 -0
  25. package/dist/lib/neutral/chunk-JOSNCOV4.mjs +79 -0
  26. package/dist/lib/neutral/chunk-JOSNCOV4.mjs.map +7 -0
  27. package/dist/lib/neutral/chunk-RWLAJYUL.mjs +35 -0
  28. package/dist/lib/neutral/chunk-RWLAJYUL.mjs.map +7 -0
  29. package/dist/lib/neutral/chunk-T7QS2EFI.mjs +8 -0
  30. package/dist/lib/neutral/chunk-T7QS2EFI.mjs.map +7 -0
  31. package/dist/lib/neutral/chunk-ZSWYB7JW.mjs +27 -0
  32. package/dist/lib/neutral/chunk-ZSWYB7JW.mjs.map +7 -0
  33. package/dist/lib/neutral/components/index.mjs +879 -0
  34. package/dist/lib/neutral/components/index.mjs.map +7 -0
  35. package/dist/lib/neutral/containers/index.mjs +20 -0
  36. package/dist/lib/neutral/containers/index.mjs.map +7 -0
  37. package/dist/lib/neutral/expose-26FV4W5D.mjs +38 -0
  38. package/dist/lib/neutral/expose-26FV4W5D.mjs.map +7 -0
  39. package/dist/lib/neutral/hooks/index.mjs +169 -0
  40. package/dist/lib/neutral/hooks/index.mjs.map +7 -0
  41. package/dist/lib/neutral/index.mjs +34 -0
  42. package/dist/lib/neutral/index.mjs.map +7 -0
  43. package/dist/lib/{browser/keyboard-AHSAWKXA.mjs → neutral/keyboard-EJ65BVTC.mjs} +25 -20
  44. package/dist/lib/neutral/keyboard-EJ65BVTC.mjs.map +7 -0
  45. package/dist/lib/neutral/meta.json +1 -0
  46. package/dist/lib/neutral/meta.mjs +12 -0
  47. package/dist/lib/neutral/meta.mjs.map +7 -0
  48. package/dist/lib/neutral/operation-handler-ORDOJUL2.mjs +13 -0
  49. package/dist/lib/neutral/operation-handler-ORDOJUL2.mjs.map +7 -0
  50. package/dist/lib/neutral/operations/index.mjs +8 -0
  51. package/dist/lib/neutral/operations/index.mjs.map +7 -0
  52. package/dist/lib/neutral/plugin.mjs +16 -0
  53. package/dist/lib/neutral/plugin.mjs.map +7 -0
  54. package/dist/lib/neutral/react-surface-EWCZMKVX.mjs +50 -0
  55. package/dist/lib/neutral/react-surface-EWCZMKVX.mjs.map +7 -0
  56. package/dist/lib/neutral/state-VVITVXWM.mjs +127 -0
  57. package/dist/lib/neutral/state-VVITVXWM.mjs.map +7 -0
  58. package/dist/lib/neutral/testing/index.mjs +433 -0
  59. package/dist/lib/neutral/testing/index.mjs.map +7 -0
  60. package/dist/lib/neutral/translations.mjs +23 -0
  61. package/dist/lib/neutral/translations.mjs.map +7 -0
  62. package/dist/lib/neutral/types/index.mjs +10 -0
  63. package/dist/lib/neutral/types/index.mjs.map +7 -0
  64. package/dist/types/src/NavTreePlugin.d.ts +3 -1
  65. package/dist/types/src/NavTreePlugin.d.ts.map +1 -1
  66. package/dist/types/src/NavTreePlugin.node.d.ts +4 -0
  67. package/dist/types/src/NavTreePlugin.node.d.ts.map +1 -0
  68. package/dist/types/src/NavTreePlugin.test.d.ts +2 -0
  69. package/dist/types/src/NavTreePlugin.test.d.ts.map +1 -0
  70. package/dist/types/src/NavTreePlugin.workerd.d.ts +4 -0
  71. package/dist/types/src/NavTreePlugin.workerd.d.ts.map +1 -0
  72. package/dist/types/src/capabilities/app-graph-builder.d.ts +4 -2
  73. package/dist/types/src/capabilities/app-graph-builder.d.ts.map +1 -1
  74. package/dist/types/src/capabilities/index.d.ts +7 -108
  75. package/dist/types/src/capabilities/index.d.ts.map +1 -1
  76. package/dist/types/src/capabilities/keyboard.d.ts +3 -2
  77. package/dist/types/src/capabilities/keyboard.d.ts.map +1 -1
  78. package/dist/types/src/capabilities/operation-handler.d.ts +6 -0
  79. package/dist/types/src/capabilities/operation-handler.d.ts.map +1 -0
  80. package/dist/types/src/capabilities/react-surface.d.ts +3 -2
  81. package/dist/types/src/capabilities/react-surface.d.ts.map +1 -1
  82. package/dist/types/src/capabilities/state.d.ts +4 -18
  83. package/dist/types/src/capabilities/state.d.ts.map +1 -1
  84. package/dist/types/src/components/NavTree/NavTree.d.ts +11 -4
  85. package/dist/types/src/components/NavTree/NavTree.d.ts.map +1 -1
  86. package/dist/types/src/components/NavTree/NavTree.stories.d.ts +10 -12
  87. package/dist/types/src/components/NavTree/NavTree.stories.d.ts.map +1 -1
  88. package/dist/types/src/components/{NavTreeContext.d.ts → NavTreeContext/NavTreeContext.d.ts} +1 -1
  89. package/dist/types/src/components/NavTreeContext/NavTreeContext.d.ts.map +1 -0
  90. package/dist/types/src/components/NavTreeContext/index.d.ts +2 -0
  91. package/dist/types/src/components/NavTreeContext/index.d.ts.map +1 -0
  92. package/dist/types/src/components/NavTreeItem/NavTreeItemAction.d.ts +13 -9
  93. package/dist/types/src/components/NavTreeItem/NavTreeItemAction.d.ts.map +1 -1
  94. package/dist/types/src/components/NavTreeItem/NavTreeItemAction.stories.d.ts +3 -2
  95. package/dist/types/src/components/NavTreeItem/NavTreeItemAction.stories.d.ts.map +1 -1
  96. package/dist/types/src/components/NavTreeItem/NavTreeItemColumns.d.ts.map +1 -1
  97. package/dist/types/src/components/Sidebar/L0Menu.d.ts +8 -5
  98. package/dist/types/src/components/Sidebar/L0Menu.d.ts.map +1 -1
  99. package/dist/types/src/components/Sidebar/L1Panel.d.ts +4 -7
  100. package/dist/types/src/components/Sidebar/L1Panel.d.ts.map +1 -1
  101. package/dist/types/src/components/Sidebar/L1Tabs.d.ts +5 -4
  102. package/dist/types/src/components/Sidebar/L1Tabs.d.ts.map +1 -1
  103. package/dist/types/src/components/UserAccountAvatar/UserAccountAvatar.d.ts.map +1 -1
  104. package/dist/types/src/components/UserAccountAvatar/UserAccountAvatar.stories.d.ts.map +1 -1
  105. package/dist/types/src/components/index.d.ts +0 -3
  106. package/dist/types/src/components/index.d.ts.map +1 -1
  107. package/dist/types/src/components/types.d.ts +8 -17
  108. package/dist/types/src/components/types.d.ts.map +1 -1
  109. package/dist/types/src/containers/CommandsDialogContent/CommandsDialogContent.d.ts +6 -0
  110. package/dist/types/src/containers/CommandsDialogContent/CommandsDialogContent.d.ts.map +1 -0
  111. package/dist/types/src/containers/CommandsDialogContent/CommandsDialogContent.stories.d.ts +28 -0
  112. package/dist/types/src/containers/CommandsDialogContent/CommandsDialogContent.stories.d.ts.map +1 -0
  113. package/dist/types/src/containers/CommandsDialogContent/index.d.ts +2 -0
  114. package/dist/types/src/containers/CommandsDialogContent/index.d.ts.map +1 -0
  115. package/dist/types/src/containers/CommandsTrigger/CommandsTrigger.d.ts.map +1 -0
  116. package/dist/types/src/containers/CommandsTrigger/index.d.ts +2 -0
  117. package/dist/types/src/containers/CommandsTrigger/index.d.ts.map +1 -0
  118. package/dist/types/src/containers/NavTreeContainer/NavTreeContainer.d.ts +9 -0
  119. package/dist/types/src/containers/NavTreeContainer/NavTreeContainer.d.ts.map +1 -0
  120. package/dist/types/src/containers/NavTreeContainer/index.d.ts +3 -0
  121. package/dist/types/src/containers/NavTreeContainer/index.d.ts.map +1 -0
  122. package/dist/types/src/{components → containers/NavTreeDocumentTitle}/NavTreeDocumentTitle.d.ts +1 -1
  123. package/dist/types/src/containers/NavTreeDocumentTitle/NavTreeDocumentTitle.d.ts.map +1 -0
  124. package/dist/types/src/containers/NavTreeDocumentTitle/index.d.ts +2 -0
  125. package/dist/types/src/containers/NavTreeDocumentTitle/index.d.ts.map +1 -0
  126. package/dist/types/src/containers/index.d.ts +7 -0
  127. package/dist/types/src/containers/index.d.ts.map +1 -0
  128. package/dist/types/src/experimental/Tree.d.ts +2 -2
  129. package/dist/types/src/experimental/Tree.d.ts.map +1 -1
  130. package/dist/types/src/experimental/Tree.stories.d.ts +18 -4
  131. package/dist/types/src/experimental/Tree.stories.d.ts.map +1 -1
  132. package/dist/types/src/hooks/index.d.ts +5 -0
  133. package/dist/types/src/hooks/index.d.ts.map +1 -0
  134. package/dist/types/src/hooks/useActions.d.ts +5 -0
  135. package/dist/types/src/hooks/useActions.d.ts.map +1 -0
  136. package/dist/types/src/hooks/useLoadDescendents.d.ts +6 -0
  137. package/dist/types/src/hooks/useLoadDescendents.d.ts.map +1 -0
  138. package/dist/types/src/hooks/useNavTreeModel.d.ts +7 -0
  139. package/dist/types/src/hooks/useNavTreeModel.d.ts.map +1 -0
  140. package/dist/types/src/hooks/useNavTreeState.d.ts +18 -0
  141. package/dist/types/src/hooks/useNavTreeState.d.ts.map +1 -0
  142. package/dist/types/src/index.d.ts +1 -3
  143. package/dist/types/src/index.d.ts.map +1 -1
  144. package/dist/types/src/meta.d.ts +2 -2
  145. package/dist/types/src/meta.d.ts.map +1 -1
  146. package/dist/types/src/operations/expose.d.ts +5 -0
  147. package/dist/types/src/operations/expose.d.ts.map +1 -0
  148. package/dist/types/src/operations/index.d.ts +3 -0
  149. package/dist/types/src/operations/index.d.ts.map +1 -0
  150. package/dist/types/src/plugin.d.ts +4 -0
  151. package/dist/types/src/plugin.d.ts.map +1 -0
  152. package/dist/types/src/testing/app-graph-builder.d.ts +2 -3
  153. package/dist/types/src/testing/app-graph-builder.d.ts.map +1 -1
  154. package/dist/types/src/testing/generator.d.ts +5 -6
  155. package/dist/types/src/testing/generator.d.ts.map +1 -1
  156. package/dist/types/src/testing/update-state.d.ts +2 -2
  157. package/dist/types/src/testing/update-state.d.ts.map +1 -1
  158. package/dist/types/src/translations.d.ts +8 -11
  159. package/dist/types/src/translations.d.ts.map +1 -1
  160. package/dist/types/src/types/NavTreeCapabilities.d.ts +13 -0
  161. package/dist/types/src/types/NavTreeCapabilities.d.ts.map +1 -0
  162. package/dist/types/src/types/NavTreeEvents.d.ts +3 -0
  163. package/dist/types/src/types/NavTreeEvents.d.ts.map +1 -0
  164. package/dist/types/src/types/index.d.ts +4 -0
  165. package/dist/types/src/types/index.d.ts.map +1 -0
  166. package/dist/types/src/{types.d.ts → types/schema.d.ts} +7 -7
  167. package/dist/types/src/types/schema.d.ts.map +1 -0
  168. package/dist/types/src/util.d.ts +12 -8
  169. package/dist/types/src/util.d.ts.map +1 -1
  170. package/dist/types/tsconfig.tsbuildinfo +1 -1
  171. package/package.json +126 -59
  172. package/src/NavTreePlugin.node.ts +17 -0
  173. package/src/NavTreePlugin.test.ts +27 -0
  174. package/src/NavTreePlugin.tsx +41 -77
  175. package/src/NavTreePlugin.workerd.ts +16 -0
  176. package/src/capabilities/app-graph-builder.ts +34 -45
  177. package/src/capabilities/index.ts +10 -8
  178. package/src/capabilities/keyboard.ts +58 -51
  179. package/src/capabilities/operation-handler.ts +16 -0
  180. package/src/capabilities/react-surface.tsx +46 -38
  181. package/src/capabilities/state.ts +132 -84
  182. package/src/components/NavTree/NavTree.stories.tsx +51 -57
  183. package/src/components/NavTree/NavTree.tsx +65 -33
  184. package/src/components/{NavTreeContext.tsx → NavTreeContext/NavTreeContext.tsx} +1 -1
  185. package/src/components/NavTreeContext/index.ts +5 -0
  186. package/src/components/NavTreeItem/NavTreeItemAction.stories.tsx +23 -15
  187. package/src/components/NavTreeItem/NavTreeItemAction.tsx +75 -52
  188. package/src/components/NavTreeItem/NavTreeItemColumns.tsx +46 -20
  189. package/src/components/Sidebar/L0Menu.tsx +155 -184
  190. package/src/components/Sidebar/L1Panel.tsx +203 -102
  191. package/src/components/Sidebar/L1Tabs.tsx +18 -34
  192. package/src/components/UserAccountAvatar/UserAccountAvatar.stories.tsx +2 -3
  193. package/src/components/UserAccountAvatar/UserAccountAvatar.tsx +1 -1
  194. package/src/components/index.ts +1 -3
  195. package/src/components/types.ts +13 -19
  196. package/src/containers/CommandsDialogContent/CommandsDialogContent.stories.tsx +46 -0
  197. package/src/containers/CommandsDialogContent/CommandsDialogContent.tsx +127 -0
  198. package/src/containers/CommandsDialogContent/index.ts +5 -0
  199. package/src/containers/CommandsTrigger/CommandsTrigger.tsx +28 -0
  200. package/src/containers/CommandsTrigger/index.ts +5 -0
  201. package/src/containers/NavTreeContainer/NavTreeContainer.tsx +271 -0
  202. package/src/containers/NavTreeContainer/index.ts +6 -0
  203. package/src/{components → containers/NavTreeDocumentTitle}/NavTreeDocumentTitle.tsx +4 -3
  204. package/src/containers/NavTreeDocumentTitle/index.ts +5 -0
  205. package/src/containers/index.ts +12 -0
  206. package/src/experimental/Tree.stories.tsx +82 -85
  207. package/src/experimental/Tree.tsx +4 -4
  208. package/src/hooks/index.ts +8 -0
  209. package/src/hooks/useActions.ts +34 -0
  210. package/src/hooks/useLoadDescendents.ts +23 -0
  211. package/src/hooks/useNavTreeModel.ts +118 -0
  212. package/src/hooks/useNavTreeState.ts +35 -0
  213. package/src/index.ts +1 -3
  214. package/src/meta.ts +23 -4
  215. package/src/operations/expose.ts +42 -0
  216. package/src/operations/index.ts +7 -0
  217. package/src/plugin.ts +11 -0
  218. package/src/testing/app-graph-builder.ts +167 -239
  219. package/src/testing/generator.ts +35 -38
  220. package/src/testing/update-state.ts +6 -6
  221. package/src/translations.ts +8 -10
  222. package/src/types/NavTreeCapabilities.ts +21 -0
  223. package/src/types/NavTreeEvents.ts +12 -0
  224. package/src/types/index.ts +8 -0
  225. package/src/{types.ts → types/schema.ts} +6 -6
  226. package/src/util.ts +28 -17
  227. package/dist/lib/browser/app-graph-builder-YAPMENYT.mjs +0 -46
  228. package/dist/lib/browser/app-graph-builder-YAPMENYT.mjs.map +0 -7
  229. package/dist/lib/browser/chunk-IMFXKPSB.mjs +0 -1482
  230. package/dist/lib/browser/chunk-IMFXKPSB.mjs.map +0 -7
  231. package/dist/lib/browser/chunk-LPAREX6J.mjs +0 -15
  232. package/dist/lib/browser/chunk-LPAREX6J.mjs.map +0 -7
  233. package/dist/lib/browser/chunk-ZENLR72O.mjs +0 -14
  234. package/dist/lib/browser/chunk-ZENLR72O.mjs.map +0 -7
  235. package/dist/lib/browser/index.mjs +0 -146
  236. package/dist/lib/browser/index.mjs.map +0 -7
  237. package/dist/lib/browser/intent-resolver-TCQXGF6U.mjs +0 -47
  238. package/dist/lib/browser/intent-resolver-TCQXGF6U.mjs.map +0 -7
  239. package/dist/lib/browser/keyboard-AHSAWKXA.mjs.map +0 -7
  240. package/dist/lib/browser/meta.json +0 -1
  241. package/dist/lib/browser/react-surface-AH2TP73M.mjs +0 -51
  242. package/dist/lib/browser/react-surface-AH2TP73M.mjs.map +0 -7
  243. package/dist/lib/browser/state-2Q623V7U.mjs +0 -117
  244. package/dist/lib/browser/state-2Q623V7U.mjs.map +0 -7
  245. package/dist/types/src/capabilities/capabilities.d.ts +0 -21
  246. package/dist/types/src/capabilities/capabilities.d.ts.map +0 -1
  247. package/dist/types/src/capabilities/intent-resolver.d.ts +0 -4
  248. package/dist/types/src/capabilities/intent-resolver.d.ts.map +0 -1
  249. package/dist/types/src/components/CommandsDialog/CommandsDialog.d.ts +0 -5
  250. package/dist/types/src/components/CommandsDialog/CommandsDialog.d.ts.map +0 -1
  251. package/dist/types/src/components/CommandsDialog/CommandsTrigger.d.ts.map +0 -1
  252. package/dist/types/src/components/CommandsDialog/index.d.ts +0 -3
  253. package/dist/types/src/components/CommandsDialog/index.d.ts.map +0 -1
  254. package/dist/types/src/components/NavTreeContainer.d.ts +0 -9
  255. package/dist/types/src/components/NavTreeContainer.d.ts.map +0 -1
  256. package/dist/types/src/components/NavTreeContext.d.ts.map +0 -1
  257. package/dist/types/src/components/NavTreeDocumentTitle.d.ts.map +0 -1
  258. package/dist/types/src/events.d.ts +0 -4
  259. package/dist/types/src/events.d.ts.map +0 -1
  260. package/dist/types/src/hooks.d.ts +0 -3
  261. package/dist/types/src/hooks.d.ts.map +0 -1
  262. package/dist/types/src/types.d.ts.map +0 -1
  263. package/src/capabilities/capabilities.ts +0 -20
  264. package/src/capabilities/intent-resolver.ts +0 -37
  265. package/src/components/CommandsDialog/CommandsDialog.tsx +0 -118
  266. package/src/components/CommandsDialog/CommandsTrigger.tsx +0 -35
  267. package/src/components/CommandsDialog/index.ts +0 -6
  268. package/src/components/NavTreeContainer.tsx +0 -346
  269. package/src/events.ts +0 -11
  270. package/src/hooks.ts +0 -21
  271. /package/dist/types/src/{components/CommandsDialog → containers/CommandsTrigger}/CommandsTrigger.d.ts +0 -0
@@ -0,0 +1,433 @@
1
+ import "../chunk-J5LGTIGS.mjs";
2
+
3
+ // src/testing/app-graph-builder.ts
4
+ import { Atom } from "@effect-atom/atom-react";
5
+ import * as Effect from "effect/Effect";
6
+ import { log } from "@dxos/log";
7
+ import { GraphBuilder, Node, NodeMatcher } from "@dxos/plugin-graph";
8
+ import { random } from "@dxos/random";
9
+ var __dxlog_file = "/__w/dxos/dxos/packages/plugins/plugin-navtree/src/testing/app-graph-builder.ts";
10
+ var storybookGraphBuilders = () => {
11
+ const propertiesCache = /* @__PURE__ */ new Map();
12
+ const getProperties = (id, defaults) => {
13
+ const cached = propertiesCache.get(id);
14
+ if (cached) {
15
+ return cached;
16
+ }
17
+ propertiesCache.set(id, defaults);
18
+ return defaults;
19
+ };
20
+ return Effect.runSync(Effect.all([
21
+ // Create app menu actions.
22
+ GraphBuilder.createExtension({
23
+ id: "app-menu",
24
+ match: NodeMatcher.whenRoot,
25
+ actions: () => Effect.succeed(Array.from({
26
+ length: 5
27
+ }, (_, i) => ({
28
+ id: `action-${i}`,
29
+ data: Effect.fnUntraced(function* () {
30
+ log.info("action", {
31
+ id: "app-menu",
32
+ index: i
33
+ }, { "~LogMeta": "~LogMeta", F: __dxlog_file, L: 29, S: this });
34
+ }),
35
+ properties: {
36
+ label: `Action ${i}`,
37
+ icon: random.properties.icon(),
38
+ disposition: "menu"
39
+ }
40
+ })))
41
+ }),
42
+ // Create user account node.
43
+ GraphBuilder.createExtension({
44
+ id: "user-account",
45
+ match: NodeMatcher.whenRoot,
46
+ connector: () => Effect.succeed([
47
+ Node.make({
48
+ id: "user-account",
49
+ type: "user-account",
50
+ properties: {
51
+ label: "User profile",
52
+ icon: "ph--user--regular",
53
+ disposition: "user-account",
54
+ userId: "1234567890ABCDEF",
55
+ hue: random.properties.hue(),
56
+ emoji: random.properties.emoji(),
57
+ status: "active"
58
+ },
59
+ nodes: [
60
+ Node.make({
61
+ id: "profile",
62
+ type: "profile",
63
+ properties: {
64
+ label: "Profile",
65
+ icon: "ph--user--regular"
66
+ }
67
+ }),
68
+ Node.make({
69
+ id: "devices",
70
+ type: "devices",
71
+ properties: {
72
+ label: "Devices",
73
+ icon: "ph--devices--regular"
74
+ }
75
+ }),
76
+ Node.make({
77
+ id: "security",
78
+ type: "security",
79
+ properties: {
80
+ label: "Security",
81
+ icon: "ph--key--regular"
82
+ }
83
+ })
84
+ ]
85
+ })
86
+ ])
87
+ }),
88
+ // Create space (workspace) nodes directly under root.
89
+ GraphBuilder.createExtension({
90
+ id: "spaces",
91
+ match: NodeMatcher.whenRoot,
92
+ connector: (_, get) => Effect.sync(() => {
93
+ const count = Atom.make((get2) => {
94
+ let value = 3;
95
+ const interval = setInterval(() => {
96
+ if (value >= 10) {
97
+ clearInterval(interval);
98
+ return;
99
+ }
100
+ value++;
101
+ get2.setSelf(value);
102
+ }, 5e3);
103
+ get2.addFinalizer(() => clearInterval(interval));
104
+ return value;
105
+ });
106
+ return Array.from({
107
+ length: get(count)
108
+ }, (_2, i) => Node.make({
109
+ id: `space-${i}`,
110
+ type: "space",
111
+ properties: getProperties(`space-${i}`, {
112
+ label: `Space ${i}`,
113
+ icon: random.properties.icon(),
114
+ hue: random.properties.hue(),
115
+ disposition: "workspace"
116
+ })
117
+ }));
118
+ })
119
+ }),
120
+ // Create space actions.
121
+ GraphBuilder.createExtension({
122
+ id: "space-actions",
123
+ match: NodeMatcher.whenNodeType("space"),
124
+ actions: () => Effect.succeed(Array.from({
125
+ length: 5
126
+ }, (_, i) => ({
127
+ id: `action-${i}`,
128
+ data: Effect.fnUntraced(function* () {
129
+ log.info("action", {
130
+ id: "space-actions",
131
+ index: i
132
+ }, { "~LogMeta": "~LogMeta", F: __dxlog_file, L: 128, S: this });
133
+ }),
134
+ properties: getProperties(`action-${i}`, {
135
+ label: `Action ${i}`,
136
+ icon: random.properties.icon()
137
+ })
138
+ })))
139
+ }),
140
+ // Create object nodes.
141
+ GraphBuilder.createExtension({
142
+ id: "objects",
143
+ match: NodeMatcher.whenNodeType("space"),
144
+ connector: (_, get) => Effect.sync(() => {
145
+ const count = Atom.make((get2) => {
146
+ let value = 3;
147
+ const interval = setInterval(() => {
148
+ if (value >= 20) {
149
+ clearInterval(interval);
150
+ return;
151
+ }
152
+ value++;
153
+ get2.setSelf(value);
154
+ }, 5e3);
155
+ get2.addFinalizer(() => clearInterval(interval));
156
+ return value;
157
+ });
158
+ return Array.from({
159
+ length: get(count)
160
+ }, (_2, i) => Node.make({
161
+ id: `object-${i}`,
162
+ type: "object",
163
+ properties: getProperties(`object-${i}`, {
164
+ label: `Object ${i}`,
165
+ icon: random.properties.icon()
166
+ })
167
+ }));
168
+ })
169
+ }),
170
+ // Create object actions.
171
+ GraphBuilder.createExtension({
172
+ id: "object-actions",
173
+ match: NodeMatcher.whenNodeType("object"),
174
+ actions: () => Effect.succeed(Array.from({
175
+ length: 5
176
+ }, (_, i) => ({
177
+ id: `action-${i}`,
178
+ data: Effect.fnUntraced(function* () {
179
+ log.info("action", {
180
+ id: "object-actions",
181
+ index: i
182
+ }, { "~LogMeta": "~LogMeta", F: __dxlog_file, L: 178, S: this });
183
+ }),
184
+ properties: getProperties(`action-${i}`, {
185
+ label: `Action ${i}`,
186
+ icon: random.properties.icon()
187
+ })
188
+ })))
189
+ })
190
+ ]));
191
+ };
192
+
193
+ // src/testing/generator.ts
194
+ import * as Schema from "effect/Schema";
195
+ import { DXN, Obj, Type } from "@dxos/echo";
196
+ import { TestSchema } from "@dxos/echo/testing";
197
+ import { random as random2 } from "@dxos/random";
198
+ import { range } from "@dxos/util";
199
+ var createFactory = ({ createSchema, createData }) => {
200
+ const schema = createSchema?.();
201
+ return {
202
+ schema,
203
+ createObject: () => schema ? Obj.make(schema, createData()) : Obj.make(TestSchema.Expando, createData())
204
+ };
205
+ };
206
+ var Status = [
207
+ "pending",
208
+ "active",
209
+ "done"
210
+ ];
211
+ var Priority = [
212
+ 1,
213
+ 2,
214
+ 3,
215
+ 4,
216
+ 5
217
+ ];
218
+ var defaultGenerators = {
219
+ document: {
220
+ createData: () => ({
221
+ title: random2.lorem.sentence(3),
222
+ body: random2.lorem.sentences({
223
+ min: 1,
224
+ max: random2.number.int({
225
+ min: 1,
226
+ max: 3
227
+ })
228
+ })
229
+ })
230
+ },
231
+ image: {
232
+ createData: () => ({
233
+ title: random2.lorem.sentence(3),
234
+ image: random2.helpers.arrayElement(data.images),
235
+ body: random2.datatype.boolean() ? random2.lorem.sentences() : void 0
236
+ })
237
+ },
238
+ project: {
239
+ createSchema: () => Schema.Struct({
240
+ title: Schema.String,
241
+ repo: Schema.String,
242
+ status: Schema.String,
243
+ priority: Schema.Number
244
+ }).pipe(Type.makeObject(DXN.make("com.example.type.project", "0.1.0"))),
245
+ createData: () => ({
246
+ title: random2.commerce.productName(),
247
+ repo: random2.datatype.boolean({
248
+ probability: 0.3
249
+ }) ? random2.internet.url() : void 0,
250
+ status: random2.helpers.arrayElement(Status),
251
+ priority: random2.helpers.arrayElement(Priority)
252
+ })
253
+ }
254
+ };
255
+ var TestObjectGenerator = class {
256
+ factories;
257
+ constructor({ types, factories } = {}) {
258
+ this.factories = factories ?? (types ?? Object.keys(defaultGenerators)).reduce((acc, type) => {
259
+ acc[type] = createFactory(defaultGenerators[type]);
260
+ return acc;
261
+ }, {});
262
+ }
263
+ get schema() {
264
+ return Object.values(this.factories).map((f) => f.schema);
265
+ }
266
+ createObject({ types } = {}) {
267
+ const type = random2.helpers.arrayElement(types ?? Object.keys(this.factories));
268
+ const factory = this.factories[type];
269
+ return factory?.createObject();
270
+ }
271
+ createObjects({ types, length }) {
272
+ return range(length, () => this.createObject({
273
+ types
274
+ }));
275
+ }
276
+ };
277
+ var data = {
278
+ images: [
279
+ "/images/image-1.png",
280
+ "/images/image-2.png",
281
+ "/images/image-3.png",
282
+ "/images/image-4.png",
283
+ "/images/image-5.png",
284
+ "/images/image-6.png"
285
+ ]
286
+ };
287
+ var createTree = () => {
288
+ const generator = new TestObjectGenerator({
289
+ types: [
290
+ "document"
291
+ ]
292
+ });
293
+ const initialContent = {
294
+ id: "root",
295
+ data: null,
296
+ type: "root",
297
+ properties: {
298
+ label: "Root",
299
+ icon: "ph--circle--regular"
300
+ },
301
+ nodes: [
302
+ ...Array(4)
303
+ ].map(() => {
304
+ const l0 = generator.createObject();
305
+ return {
306
+ id: random2.string.uuid(),
307
+ data: null,
308
+ type: "category",
309
+ properties: {
310
+ label: l0.title,
311
+ icon: "ph--horse--regular",
312
+ disposition: "workspace"
313
+ },
314
+ nodes: [
315
+ ...[
316
+ ...Array(4)
317
+ ].map(() => {
318
+ const l1 = generator.createObject();
319
+ return {
320
+ id: random2.string.uuid(),
321
+ data: null,
322
+ type: "document",
323
+ properties: {
324
+ label: l1.title,
325
+ icon: "ph--butterfly--regular"
326
+ },
327
+ nodes: [
328
+ {
329
+ id: `${random2.string.uuid()}__a1`,
330
+ data: () => {
331
+ },
332
+ type: "action",
333
+ properties: {
334
+ label: random2.lorem.words(2),
335
+ icon: "ph--boat--regular"
336
+ }
337
+ },
338
+ {
339
+ id: `${random2.string.uuid()}__a2`,
340
+ data: () => {
341
+ },
342
+ type: "action",
343
+ properties: {
344
+ label: random2.lorem.words(2),
345
+ icon: "ph--train-simple--regular"
346
+ }
347
+ }
348
+ ]
349
+ };
350
+ }),
351
+ {
352
+ id: `${random2.string.uuid()}__a1`,
353
+ data: () => {
354
+ },
355
+ type: "action",
356
+ properties: {
357
+ label: random2.lorem.words(2),
358
+ icon: "ph--boat--regular"
359
+ }
360
+ },
361
+ {
362
+ id: `${random2.string.uuid()}__a2`,
363
+ data: () => {
364
+ },
365
+ type: "action",
366
+ properties: {
367
+ label: random2.lorem.words(2),
368
+ icon: "ph--train-simple--regular"
369
+ }
370
+ }
371
+ ]
372
+ };
373
+ })
374
+ };
375
+ return initialContent;
376
+ };
377
+
378
+ // src/testing/update-state.ts
379
+ import { log as log2 } from "@dxos/log";
380
+ var __dxlog_file2 = "/__w/dxos/dxos/packages/plugins/plugin-navtree/src/testing/update-state.ts";
381
+ var removeItem = (tree, source) => {
382
+ const parent = getNode(tree, source.path.slice(1, -1));
383
+ const index = parent.nodes.findIndex((node) => node.id === source.id);
384
+ const item = parent.nodes[index];
385
+ parent.nodes.splice(index, 1);
386
+ return item;
387
+ };
388
+ var getNode = (tree, path) => {
389
+ let node = tree;
390
+ for (const part of path) {
391
+ node = node.nodes.find((n) => n.id === part);
392
+ }
393
+ return node;
394
+ };
395
+ var updateState = ({ state, instruction, source, target }) => {
396
+ switch (instruction.type) {
397
+ case "reorder-above": {
398
+ const item = removeItem(state, source);
399
+ const parent = getNode(state, target.path.slice(1, -1));
400
+ const index = parent.nodes.findIndex(({ id }) => id === target.id);
401
+ parent.nodes.splice(index, 0, item);
402
+ break;
403
+ }
404
+ case "reorder-below": {
405
+ const item = removeItem(state, source);
406
+ const parent = getNode(state, target.path.slice(1, -1));
407
+ const index = parent.nodes.findIndex(({ id }) => id === target.id);
408
+ parent.nodes.splice(index + 1, 0, item);
409
+ break;
410
+ }
411
+ case "make-child": {
412
+ const item = removeItem(state, source);
413
+ const parent = getNode(state, target.path.slice(1));
414
+ parent.nodes.push(item);
415
+ break;
416
+ }
417
+ case "instruction-blocked":
418
+ break;
419
+ default:
420
+ log2.warn("Unsupported instruction", instruction, { "~LogMeta": "~LogMeta", F: __dxlog_file2, L: 48, S: void 0 });
421
+ break;
422
+ }
423
+ };
424
+ export {
425
+ Priority,
426
+ Status,
427
+ TestObjectGenerator,
428
+ createTree,
429
+ defaultGenerators,
430
+ storybookGraphBuilders,
431
+ updateState
432
+ };
433
+ //# sourceMappingURL=index.mjs.map
@@ -0,0 +1,7 @@
1
+ {
2
+ "version": 3,
3
+ "sources": ["../../../../src/testing/app-graph-builder.ts", "../../../../src/testing/generator.ts", "../../../../src/testing/update-state.ts"],
4
+ "sourcesContent": ["//\n// Copyright 2025 DXOS.org\n//\n\nimport { Atom } from '@effect-atom/atom-react';\nimport * as Effect from 'effect/Effect';\n\nimport { type BuilderExtensions } from '@dxos/app-graph';\nimport { log } from '@dxos/log';\nimport { GraphBuilder, Node, NodeMatcher } from '@dxos/plugin-graph';\nimport { random } from '@dxos/random';\n\nexport const storybookGraphBuilders = (): BuilderExtensions => {\n const propertiesCache = new Map<string, Record<string, unknown>>();\n const getProperties = (id: string, defaults: Record<string, unknown>) => {\n const cached = propertiesCache.get(id);\n if (cached) {\n return cached;\n }\n\n propertiesCache.set(id, defaults);\n return defaults;\n };\n\n return Effect.runSync(\n Effect.all([\n // Create app menu actions.\n GraphBuilder.createExtension({\n id: 'app-menu',\n match: NodeMatcher.whenRoot,\n actions: () =>\n Effect.succeed(\n Array.from({ length: 5 }, (_, i) => ({\n id: `action-${i}`,\n data: Effect.fnUntraced(function* () {\n log.info('action', { id: 'app-menu', index: i });\n }),\n properties: {\n label: `Action ${i}`,\n icon: random.properties.icon(),\n disposition: 'menu',\n },\n })),\n ),\n }),\n // Create user account node.\n GraphBuilder.createExtension({\n id: 'user-account',\n match: NodeMatcher.whenRoot,\n connector: () =>\n Effect.succeed([\n Node.make({\n id: 'user-account',\n type: 'user-account',\n properties: {\n label: 'User profile',\n icon: 'ph--user--regular',\n disposition: 'user-account',\n userId: '1234567890ABCDEF',\n hue: random.properties.hue(),\n emoji: random.properties.emoji(),\n status: 'active',\n },\n nodes: [\n Node.make({\n id: 'profile',\n type: 'profile',\n properties: {\n label: 'Profile',\n icon: 'ph--user--regular',\n },\n }),\n Node.make({\n id: 'devices',\n type: 'devices',\n properties: {\n label: 'Devices',\n icon: 'ph--devices--regular',\n },\n }),\n Node.make({\n id: 'security',\n type: 'security',\n properties: {\n label: 'Security',\n icon: 'ph--key--regular',\n },\n }),\n ],\n }),\n ]),\n }),\n // Create space (workspace) nodes directly under root.\n GraphBuilder.createExtension({\n id: 'spaces',\n match: NodeMatcher.whenRoot,\n connector: (_, get) =>\n Effect.sync(() => {\n const count = Atom.make((get) => {\n let value = 3;\n const interval = setInterval(() => {\n if (value >= 10) {\n clearInterval(interval);\n return;\n }\n\n value++;\n get.setSelf(value);\n }, 5000);\n get.addFinalizer(() => clearInterval(interval));\n return value;\n });\n\n return Array.from({ length: get(count) }, (_, i) =>\n Node.make({\n id: `space-${i}`,\n type: 'space',\n properties: getProperties(`space-${i}`, {\n label: `Space ${i}`,\n icon: random.properties.icon(),\n hue: random.properties.hue(),\n disposition: 'workspace',\n }),\n }),\n );\n }),\n }),\n // Create space actions.\n GraphBuilder.createExtension({\n id: 'space-actions',\n match: NodeMatcher.whenNodeType('space'),\n actions: () =>\n Effect.succeed(\n Array.from({ length: 5 }, (_, i) => ({\n id: `action-${i}`,\n data: Effect.fnUntraced(function* () {\n log.info('action', { id: 'space-actions', index: i });\n }),\n properties: getProperties(`action-${i}`, {\n label: `Action ${i}`,\n icon: random.properties.icon(),\n }),\n })),\n ),\n }),\n // Create object nodes.\n GraphBuilder.createExtension({\n id: 'objects',\n match: NodeMatcher.whenNodeType('space'),\n connector: (_, get) =>\n Effect.sync(() => {\n const count = Atom.make((get) => {\n let value = 3;\n const interval = setInterval(() => {\n if (value >= 20) {\n clearInterval(interval);\n return;\n }\n\n value++;\n get.setSelf(value);\n }, 5000);\n get.addFinalizer(() => clearInterval(interval));\n return value;\n });\n\n return Array.from({ length: get(count) }, (_, i) =>\n Node.make({\n id: `object-${i}`,\n type: 'object',\n properties: getProperties(`object-${i}`, {\n label: `Object ${i}`,\n icon: random.properties.icon(),\n }),\n }),\n );\n }),\n }),\n // Create object actions.\n GraphBuilder.createExtension({\n id: 'object-actions',\n match: NodeMatcher.whenNodeType('object'),\n actions: () =>\n Effect.succeed(\n Array.from({ length: 5 }, (_, i) => ({\n id: `action-${i}`,\n data: Effect.fnUntraced(function* () {\n log.info('action', { id: 'object-actions', index: i });\n }),\n properties: getProperties(`action-${i}`, {\n label: `Action ${i}`,\n icon: random.properties.icon(),\n }),\n })),\n ),\n }),\n ]),\n );\n};\n", "//\n// Copyright 2023 DXOS.org\n//\n\nimport * as Schema from 'effect/Schema';\n\nimport { type Node } from '@dxos/app-graph';\nimport { DXN, Obj, Type } from '@dxos/echo';\nimport { TestSchema } from '@dxos/echo/testing';\nimport { random } from '@dxos/random';\nimport { range } from '@dxos/util';\n\n// TODO(burdon): Reconcile with @dxos/plugin-debug, @dxos/react-ui/testing.\n// TODO(burdon): Bug when adding stale objects to space (e.g., static objects already added in previous story invocation).\n\n// TODO(burdon): Commit to using ECHO to generate all test data? Or convert from raw data?\nexport type TestItem = { id: string; type: string } & Record<string, any>;\n\ntype ObjectDataGenerator = {\n createSchema?: () => Type.AnyObj;\n createData: () => any;\n};\n\ntype ObjectFactory<T> = {\n schema?: Type.AnyObj; // TODO(burdon): Support both typed and expando schema.\n createObject: () => T;\n};\n\ntype ObjectFactoryMap = { [type: string]: ObjectFactory<any> };\n\nconst createFactory = ({ createSchema, createData }: ObjectDataGenerator) => {\n const schema = createSchema?.();\n return {\n schema,\n createObject: () => (schema ? Obj.make(schema, createData()) : Obj.make(TestSchema.Expando, createData())),\n };\n};\n\n// TODO(burdon): Handle restricted values.\nexport const Status = ['pending', 'active', 'done'];\nexport const Priority = [1, 2, 3, 4, 5];\n\nexport const defaultGenerators: { [type: string]: ObjectDataGenerator } = {\n document: {\n createData: () => ({\n title: random.lorem.sentence(3),\n body: random.lorem.sentences({ min: 1, max: random.number.int({ min: 1, max: 3 }) }),\n }),\n },\n\n image: {\n createData: () => ({\n title: random.lorem.sentence(3),\n image: random.helpers.arrayElement(data.images),\n body: random.datatype.boolean() ? random.lorem.sentences() : undefined,\n }),\n },\n\n project: {\n createSchema: () =>\n Schema.Struct({\n title: Schema.String,\n repo: Schema.String,\n status: Schema.String,\n priority: Schema.Number,\n }).pipe(Type.makeObject(DXN.make('com.example.type.project', '0.1.0'))),\n\n createData: () => ({\n title: random.commerce.productName(),\n repo: random.datatype.boolean({ probability: 0.3 }) ? random.internet.url() : undefined,\n status: random.helpers.arrayElement(Status),\n priority: random.helpers.arrayElement(Priority),\n }),\n },\n};\n\n/**\n * Typed object generator.\n */\nexport class TestObjectGenerator {\n public readonly factories: ObjectFactoryMap;\n\n constructor({ types, factories }: { types?: string[]; factories?: ObjectFactoryMap } = {}) {\n this.factories =\n factories ??\n (types ?? Object.keys(defaultGenerators)).reduce<ObjectFactoryMap>((acc, type) => {\n acc[type] = createFactory(defaultGenerators[type]);\n return acc;\n }, {});\n }\n\n get schema(): Type.AnyObj[] {\n return Object.values(this.factories).map((f) => f.schema!);\n }\n\n createObject({ types }: { types?: string[] } = {}) {\n const type = random.helpers.arrayElement(types ?? Object.keys(this.factories));\n const factory = this.factories[type];\n return factory?.createObject();\n }\n\n createObjects({ types, length }: { types?: string[]; length: number }) {\n return range(length, () => this.createObject({ types }));\n }\n}\n\n// https://unsplash.com\n// TODO(burdon): Use https://picsum.photos?\nconst data = {\n images: [\n '/images/image-1.png',\n '/images/image-2.png',\n '/images/image-3.png',\n '/images/image-4.png',\n '/images/image-5.png',\n '/images/image-6.png',\n ],\n};\n\nexport const createTree = () => {\n const generator = new TestObjectGenerator({ types: ['document'] });\n\n const initialContent = {\n id: 'root',\n data: null,\n type: 'root',\n properties: {\n label: 'Root',\n icon: 'ph--circle--regular',\n },\n nodes: [...Array(4)].map(() => {\n const l0 = generator.createObject();\n return {\n id: random.string.uuid(),\n data: null,\n type: 'category',\n properties: {\n label: l0.title,\n icon: 'ph--horse--regular',\n disposition: 'workspace',\n },\n nodes: [\n ...[...Array(4)].map(() => {\n const l1 = generator.createObject();\n return {\n id: random.string.uuid(),\n data: null,\n type: 'document',\n properties: {\n label: l1.title,\n icon: 'ph--butterfly--regular',\n },\n nodes: [\n {\n id: `${random.string.uuid()}__a1`,\n data: () => {},\n type: 'action',\n properties: {\n label: random.lorem.words(2),\n icon: 'ph--boat--regular',\n },\n },\n {\n id: `${random.string.uuid()}__a2`,\n data: () => {},\n type: 'action',\n properties: {\n label: random.lorem.words(2),\n icon: 'ph--train-simple--regular',\n },\n },\n ],\n } satisfies Node.NodeArg<any>;\n }),\n {\n id: `${random.string.uuid()}__a1`,\n data: () => {},\n type: 'action',\n properties: {\n label: random.lorem.words(2),\n icon: 'ph--boat--regular',\n },\n },\n {\n id: `${random.string.uuid()}__a2`,\n data: () => {},\n type: 'action',\n properties: {\n label: random.lorem.words(2),\n icon: 'ph--train-simple--regular',\n },\n },\n ],\n } satisfies Node.NodeArg<any>;\n }),\n } satisfies Node.NodeArg<any>;\n\n return initialContent;\n};\n", "//\n// Copyright 2024 DXOS.org\n//\n\nimport { type Instruction } from '@atlaskit/pragmatic-drag-and-drop-hitbox/tree-item';\n\nimport { type Node } from '@dxos/app-graph';\nimport { log } from '@dxos/log';\nimport { type TreeData } from '@dxos/react-ui-list';\n\nconst removeItem = (tree: Node.NodeArg<any>, source: TreeData) => {\n const parent = getNode(tree, source.path.slice(1, -1));\n const index = parent.nodes!.findIndex((node: Node.NodeArg<any>) => node.id === source.id);\n const item = parent.nodes![index];\n parent.nodes!.splice(index, 1);\n return item;\n};\n\nconst getNode = (tree: Node.NodeArg<any>, path: string[]) => {\n let node = tree;\n for (const part of path) {\n node = node.nodes!.find((n: Node.NodeArg<any>) => n.id === part)!;\n }\n return node;\n};\n\n// TODO(wittjosiah): Reconcile with react-ui-list/Tree/testing.\nexport const updateState = ({\n state,\n instruction,\n source,\n target,\n}: {\n state: Node.NodeArg<any>;\n instruction: Instruction;\n source: TreeData;\n target: TreeData;\n}) => {\n switch (instruction.type) {\n case 'reorder-above': {\n const item = removeItem(state, source);\n const parent = getNode(state, target.path.slice(1, -1));\n const index = parent.nodes!.findIndex(({ id }) => id === target.id);\n parent.nodes!.splice(index, 0, item);\n break;\n }\n\n case 'reorder-below': {\n const item = removeItem(state, source);\n const parent = getNode(state, target.path.slice(1, -1));\n const index = parent.nodes!.findIndex(({ id }) => id === target.id);\n parent.nodes!.splice(index + 1, 0, item);\n break;\n }\n\n case 'make-child': {\n const item = removeItem(state, source);\n const parent = getNode(state, target.path.slice(1));\n parent.nodes!.push(item);\n break;\n }\n\n case 'instruction-blocked':\n break;\n\n default:\n log.warn('Unsupported instruction', instruction);\n break;\n }\n};\n"],
5
+ "mappings": "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",
6
+ "names": ["Atom", "Effect", "log", "GraphBuilder", "Node", "NodeMatcher", "random", "storybookGraphBuilders", "getProperties", "defaults", "propertiesCache", "cached", "createExtension", "whenRoot", "actions", "_", "data", "index", "i", "properties", "disposition", "connector", "type", "label", "userId", "hue", "emoji", "status", "nodes", "count", "interval", "setInterval", "value", "clearInterval", "get", "addFinalizer", "Array", "make", "whenNodeType", "Schema", "DXN", "Obj", "Type", "TestSchema", "random", "range", "createFactory", "createSchema", "createData", "schema", "createObject", "make", "Expando", "Status", "Priority", "defaultGenerators", "document", "title", "lorem", "sentence", "body", "sentences", "min", "max", "number", "int", "image", "helpers", "arrayElement", "data", "images", "datatype", "boolean", "undefined", "project", "Struct", "String", "repo", "status", "priority", "Number", "pipe", "makeObject", "commerce", "productName", "probability", "internet", "url", "TestObjectGenerator", "factories", "types", "Object", "keys", "reduce", "acc", "type", "values", "map", "f", "factory", "createObjects", "length", "createTree", "generator", "initialContent", "id", "properties", "label", "icon", "nodes", "Array", "l0", "string", "uuid", "disposition", "l1", "words", "log", "__dxlog_file", "removeItem", "parent", "nodes", "findIndex", "item", "index", "splice", "getNode", "part", "path", "node", "push"]
7
+ }
@@ -0,0 +1,23 @@
1
+ import "./chunk-J5LGTIGS.mjs";
2
+
3
+ // src/translations.ts
4
+ import { meta } from "#meta";
5
+ var translations = [
6
+ {
7
+ "en-US": {
8
+ [meta.id]: {
9
+ "app-menu.label": "App menu",
10
+ "open-commands.label": "Search commands",
11
+ "commands-dialog.title": "Commands",
12
+ "command-list-input.placeholder": "Search for commands\u2026",
13
+ "node-actions-menu-invoker.label": "More options",
14
+ "tree-item-actions.label": "More actions",
15
+ "button-back.button": "Back to Space"
16
+ }
17
+ }
18
+ }
19
+ ];
20
+ export {
21
+ translations
22
+ };
23
+ //# sourceMappingURL=translations.mjs.map
@@ -0,0 +1,7 @@
1
+ {
2
+ "version": 3,
3
+ "sources": ["../../../src/translations.ts"],
4
+ "sourcesContent": ["//\n// Copyright 2023 DXOS.org\n//\n\nimport { type Resource } from '@dxos/react-ui';\n\nimport { meta } from '#meta';\n\nexport const translations = [\n {\n 'en-US': {\n [meta.id]: {\n 'app-menu.label': 'App menu',\n 'open-commands.label': 'Search commands',\n 'commands-dialog.title': 'Commands',\n 'command-list-input.placeholder': 'Search for commands…',\n 'node-actions-menu-invoker.label': 'More options',\n 'tree-item-actions.label': 'More actions',\n 'button-back.button': 'Back to Space',\n },\n },\n },\n] as const satisfies Resource[];\n"],
5
+ "mappings": ";;;AAMA,SAASA,YAAY;AAEd,IAAMC,eAAe;EAC1B;IACE,SAAS;MACP,CAACD,KAAKE,EAAE,GAAG;QACT,kBAAkB;QAClB,uBAAuB;QACvB,yBAAyB;QACzB,kCAAkC;QAClC,mCAAmC;QACnC,2BAA2B;QAC3B,sBAAsB;MACxB;IACF;EACF;;",
6
+ "names": ["meta", "translations", "id"]
7
+ }
@@ -0,0 +1,10 @@
1
+ import {
2
+ NavTreeCapabilities_exports,
3
+ NavTreeEvents_exports
4
+ } from "../chunk-ZSWYB7JW.mjs";
5
+ import "../chunk-J5LGTIGS.mjs";
6
+ export {
7
+ NavTreeCapabilities_exports as NavTreeCapabilities,
8
+ NavTreeEvents_exports as NavTreeEvents
9
+ };
10
+ //# sourceMappingURL=index.mjs.map
@@ -0,0 +1,7 @@
1
+ {
2
+ "version": 3,
3
+ "sources": [],
4
+ "sourcesContent": [],
5
+ "mappings": "",
6
+ "names": []
7
+ }
@@ -1,2 +1,4 @@
1
- export declare const NavTreePlugin: import("@dxos/app-framework").PluginFactory<void>;
1
+ import { Plugin } from '@dxos/app-framework';
2
+ export declare const NavTreePlugin: Plugin.PluginFactory<void>;
3
+ export default NavTreePlugin;
2
4
  //# sourceMappingURL=NavTreePlugin.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"NavTreePlugin.d.ts","sourceRoot":"","sources":["../../../src/NavTreePlugin.tsx"],"names":[],"mappings":"AAsBA,eAAO,MAAM,aAAa,mDAuExB,CAAC"}
1
+ {"version":3,"file":"NavTreePlugin.d.ts","sourceRoot":"","sources":["../../../src/NavTreePlugin.tsx"],"names":[],"mappings":"AAMA,OAAO,EAA+D,MAAM,EAAE,MAAM,qBAAqB,CAAC;AAS1G,eAAO,MAAM,aAAa,4BAwCzB,CAAC;eAEa,aAAa"}
@@ -0,0 +1,4 @@
1
+ import { Plugin } from '@dxos/app-framework';
2
+ export declare const NavTreePlugin: Plugin.PluginFactory<void>;
3
+ export default NavTreePlugin;
4
+ //# sourceMappingURL=NavTreePlugin.node.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"NavTreePlugin.node.d.ts","sourceRoot":"","sources":["../../../src/NavTreePlugin.node.ts"],"names":[],"mappings":"AAIA,OAAO,EAAE,MAAM,EAAE,MAAM,qBAAqB,CAAC;AAM7C,eAAO,MAAM,aAAa,4BAIzB,CAAC;eAEa,aAAa"}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=NavTreePlugin.test.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"NavTreePlugin.test.d.ts","sourceRoot":"","sources":["../../../src/NavTreePlugin.test.ts"],"names":[],"mappings":""}
@@ -0,0 +1,4 @@
1
+ import { Plugin } from '@dxos/app-framework';
2
+ export declare const NavTreePlugin: Plugin.PluginFactory<void>;
3
+ export default NavTreePlugin;
4
+ //# sourceMappingURL=NavTreePlugin.workerd.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"NavTreePlugin.workerd.d.ts","sourceRoot":"","sources":["../../../src/NavTreePlugin.workerd.ts"],"names":[],"mappings":"AAIA,OAAO,EAAE,MAAM,EAAE,MAAM,qBAAqB,CAAC;AAM7C,eAAO,MAAM,aAAa,4BAGzB,CAAC;eAEa,aAAa"}
@@ -1,4 +1,6 @@
1
- import { type PluginContext } from '@dxos/app-framework';
2
- declare const _default: (context: PluginContext) => import("@dxos/app-framework").Capability<import("@dxos/app-framework").InterfaceDef<import("@dxos/app-graph").BuilderExtensions>>;
1
+ import * as Effect from 'effect/Effect';
2
+ import { Capability } from '@dxos/app-framework';
3
+ import { GraphBuilder } from '@dxos/plugin-graph';
4
+ declare const _default: (props: void) => Effect.Effect<Capability.Capability<Capability.InterfaceDef<GraphBuilder.BuilderExtensions>>, never, never>;
3
5
  export default _default;
4
6
  //# sourceMappingURL=app-graph-builder.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"app-graph-builder.d.ts","sourceRoot":"","sources":["../../../../src/capabilities/app-graph-builder.ts"],"names":[],"mappings":"AAQA,OAAO,EAA8B,KAAK,aAAa,EAA6B,MAAM,qBAAqB,CAAC;yBAKhG,SAAS,aAAa;AAAtC,wBAuCI"}
1
+ {"version":3,"file":"app-graph-builder.d.ts","sourceRoot":"","sources":["../../../../src/capabilities/app-graph-builder.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,MAAM,MAAM,eAAe,CAAC;AAExC,OAAO,EAAE,UAAU,EAAE,MAAM,qBAAqB,CAAC;AAGjD,OAAO,EAAE,YAAY,EAAqB,MAAM,oBAAoB,CAAC"}