@dxos/plugin-navtree 0.10.0 → 0.11.0

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 (187) hide show
  1. package/PLUGIN.mdl +8 -6
  2. package/dist/lib/NavTreePlugin.mjs +40 -0
  3. package/dist/lib/NavTreePlugin.mjs.map +1 -0
  4. package/dist/lib/capabilities.mjs +11 -0
  5. package/dist/lib/capabilities.mjs.map +1 -0
  6. package/dist/lib/chunk-CommandsDialogContent.mjs +100 -0
  7. package/dist/lib/chunk-CommandsDialogContent.mjs.map +1 -0
  8. package/dist/lib/chunk-CommandsTrigger.mjs +27 -0
  9. package/dist/lib/chunk-CommandsTrigger.mjs.map +1 -0
  10. package/dist/lib/chunk-NavTreeDocumentTitle.mjs +17 -0
  11. package/dist/lib/chunk-NavTreeDocumentTitle.mjs.map +1 -0
  12. package/dist/lib/chunk-app-graph-builder.mjs +33 -0
  13. package/dist/lib/chunk-app-graph-builder.mjs.map +1 -0
  14. package/dist/lib/chunk-expose.mjs +31 -0
  15. package/dist/lib/chunk-expose.mjs.map +1 -0
  16. package/dist/lib/chunk-keyboard.mjs +49 -0
  17. package/dist/lib/chunk-keyboard.mjs.map +1 -0
  18. package/dist/lib/{neutral/chunk-IRQMJLRY.mjs → chunk-meta.mjs} +14 -23
  19. package/dist/lib/chunk-meta.mjs.map +1 -0
  20. package/dist/lib/chunk-operation-handler.mjs +11 -0
  21. package/dist/lib/chunk-operation-handler.mjs.map +1 -0
  22. package/dist/lib/chunk-react-surface.mjs +46 -0
  23. package/dist/lib/chunk-react-surface.mjs.map +1 -0
  24. package/dist/lib/chunk-state.mjs +106 -0
  25. package/dist/lib/chunk-state.mjs.map +1 -0
  26. package/dist/lib/chunk-types.mjs +26 -0
  27. package/dist/lib/chunk-types.mjs.map +1 -0
  28. package/dist/lib/chunk-util.mjs +51 -0
  29. package/dist/lib/chunk-util.mjs.map +1 -0
  30. package/dist/lib/components.mjs +723 -0
  31. package/dist/lib/components.mjs.map +1 -0
  32. package/dist/lib/containers.mjs +231 -0
  33. package/dist/lib/containers.mjs.map +1 -0
  34. package/dist/lib/hooks.mjs +162 -0
  35. package/dist/lib/hooks.mjs.map +1 -0
  36. package/dist/lib/index.mjs +4 -0
  37. package/dist/lib/meta.mjs +2 -0
  38. package/dist/lib/operations.mjs +7 -0
  39. package/dist/lib/operations.mjs.map +1 -0
  40. package/dist/lib/plugin.mjs +9 -0
  41. package/dist/lib/plugin.mjs.map +1 -0
  42. package/dist/lib/testing.mjs +397 -0
  43. package/dist/lib/testing.mjs.map +1 -0
  44. package/dist/lib/translations.mjs +17 -0
  45. package/dist/lib/translations.mjs.map +1 -0
  46. package/dist/lib/types.mjs +2 -0
  47. package/dist/types/src/NavTreePlugin.d.ts.map +1 -1
  48. package/dist/types/src/capabilities/app-graph-builder.d.ts +1 -1
  49. package/dist/types/src/capabilities/keyboard.d.ts +1 -1
  50. package/dist/types/src/capabilities/nav-tree-view-state.d.ts +12 -0
  51. package/dist/types/src/capabilities/nav-tree-view-state.d.ts.map +1 -0
  52. package/dist/types/src/capabilities/nav-tree-view-state.test.d.ts +2 -0
  53. package/dist/types/src/capabilities/nav-tree-view-state.test.d.ts.map +1 -0
  54. package/dist/types/src/capabilities/operation-handler.d.ts +1 -1
  55. package/dist/types/src/capabilities/react-surface.d.ts +1 -1
  56. package/dist/types/src/capabilities/react-surface.d.ts.map +1 -1
  57. package/dist/types/src/capabilities/state.d.ts +1 -1
  58. package/dist/types/src/components/NavTree/NavTree.d.ts.map +1 -1
  59. package/dist/types/src/components/NavTree/NavTree.stories.d.ts +3 -0
  60. package/dist/types/src/components/NavTree/NavTree.stories.d.ts.map +1 -1
  61. package/dist/types/src/components/NavTreeContext/NavTreeContext.d.ts.map +1 -1
  62. package/dist/types/src/components/NavTreeItem/NavTreeItemAction.d.ts +1 -1
  63. package/dist/types/src/components/NavTreeItem/NavTreeItemAction.d.ts.map +1 -1
  64. package/dist/types/src/components/Sidebar/L0Menu.d.ts.map +1 -1
  65. package/dist/types/src/components/Sidebar/L1Panel.d.ts +5 -2
  66. package/dist/types/src/components/Sidebar/L1Panel.d.ts.map +1 -1
  67. package/dist/types/src/components/Sidebar/L1Tabs.d.ts.map +1 -1
  68. package/dist/types/src/containers/CommandsDialogContent/CommandsDialogContent.d.ts.map +1 -1
  69. package/dist/types/src/containers/CommandsDialogContent/CommandsDialogContent.stories.d.ts +2 -0
  70. package/dist/types/src/containers/CommandsDialogContent/CommandsDialogContent.stories.d.ts.map +1 -1
  71. package/dist/types/src/containers/CommandsTrigger/CommandsTrigger.d.ts +4 -1
  72. package/dist/types/src/containers/CommandsTrigger/CommandsTrigger.d.ts.map +1 -1
  73. package/dist/types/src/containers/NavTreeContainer/NavTreeContainer.d.ts.map +1 -1
  74. package/dist/types/src/containers/NavTreeDocumentTitle/NavTreeDocumentTitle.d.ts +5 -2
  75. package/dist/types/src/containers/NavTreeDocumentTitle/NavTreeDocumentTitle.d.ts.map +1 -1
  76. package/dist/types/src/experimental/Tree.d.ts +0 -1
  77. package/dist/types/src/experimental/Tree.d.ts.map +1 -1
  78. package/dist/types/src/experimental/Tree.stories.d.ts.map +1 -1
  79. package/dist/types/src/experimental/visit-nodes.d.ts +3 -0
  80. package/dist/types/src/experimental/visit-nodes.d.ts.map +1 -0
  81. package/dist/types/src/hooks/useActions.d.ts +3 -1
  82. package/dist/types/src/hooks/useActions.d.ts.map +1 -1
  83. package/dist/types/src/translations.d.ts +2 -0
  84. package/dist/types/src/translations.d.ts.map +1 -1
  85. package/dist/types/src/types/NavTreeCapabilities.d.ts +1 -1
  86. package/dist/types/src/types/NavTreeCapabilities.d.ts.map +1 -1
  87. package/dist/types/src/types/schema.d.ts +1 -1
  88. package/dist/types/src/types/schema.d.ts.map +1 -1
  89. package/dist/types/src/util.d.ts.map +1 -1
  90. package/dist/types/tsconfig.tsbuildinfo +1 -1
  91. package/package.json +47 -52
  92. package/src/NavTreePlugin.tsx +3 -1
  93. package/src/capabilities/nav-tree-view-state.test.ts +55 -0
  94. package/src/capabilities/nav-tree-view-state.ts +19 -0
  95. package/src/capabilities/{react-surface.tsx → react-surface.ts} +8 -9
  96. package/src/capabilities/state.ts +47 -38
  97. package/src/components/NavTree/NavTree.stories.tsx +26 -5
  98. package/src/components/NavTree/NavTree.tsx +10 -13
  99. package/src/components/NavTreeItem/NavTreeItemAction.tsx +1 -1
  100. package/src/components/Sidebar/L0Menu.tsx +9 -3
  101. package/src/components/Sidebar/L1Panel.tsx +52 -20
  102. package/src/components/Sidebar/L1Tabs.tsx +6 -0
  103. package/src/containers/CommandsDialogContent/CommandsDialogContent.tsx +49 -44
  104. package/src/containers/CommandsTrigger/CommandsTrigger.tsx +2 -0
  105. package/src/containers/NavTreeContainer/NavTreeContainer.tsx +17 -18
  106. package/src/containers/NavTreeDocumentTitle/NavTreeDocumentTitle.tsx +2 -0
  107. package/src/experimental/Tree.stories.tsx +2 -1
  108. package/src/experimental/Tree.tsx +2 -18
  109. package/src/experimental/visit-nodes.ts +27 -0
  110. package/src/hooks/useActions.ts +15 -4
  111. package/src/hooks/useNavTreeModel.ts +1 -1
  112. package/src/operations/expose.ts +2 -2
  113. package/src/testing/app-graph-builder.ts +1 -1
  114. package/src/translations.ts +3 -0
  115. package/src/types/NavTreeCapabilities.ts +1 -1
  116. package/src/types/schema.ts +1 -1
  117. package/src/util.ts +7 -9
  118. package/dist/lib/neutral/CommandsDialogContent-TEKBCQ3U.mjs +0 -112
  119. package/dist/lib/neutral/CommandsDialogContent-TEKBCQ3U.mjs.map +0 -7
  120. package/dist/lib/neutral/CommandsTrigger-HGCI22SP.mjs +0 -27
  121. package/dist/lib/neutral/CommandsTrigger-HGCI22SP.mjs.map +0 -7
  122. package/dist/lib/neutral/NavTreeContainer-ICDKC2GI.mjs +0 -12
  123. package/dist/lib/neutral/NavTreeContainer-ICDKC2GI.mjs.map +0 -7
  124. package/dist/lib/neutral/NavTreeDocumentTitle-RMERXZGK.mjs +0 -22
  125. package/dist/lib/neutral/NavTreeDocumentTitle-RMERXZGK.mjs.map +0 -7
  126. package/dist/lib/neutral/NavTreePlugin.mjs +0 -68
  127. package/dist/lib/neutral/NavTreePlugin.mjs.map +0 -7
  128. package/dist/lib/neutral/NavTreePlugin.node.mjs +0 -18
  129. package/dist/lib/neutral/NavTreePlugin.node.mjs.map +0 -7
  130. package/dist/lib/neutral/NavTreePlugin.workerd.mjs +0 -16
  131. package/dist/lib/neutral/NavTreePlugin.workerd.mjs.map +0 -7
  132. package/dist/lib/neutral/app-graph-builder-2DYAIROU.mjs +0 -42
  133. package/dist/lib/neutral/app-graph-builder-2DYAIROU.mjs.map +0 -7
  134. package/dist/lib/neutral/capabilities/index.mjs +0 -17
  135. package/dist/lib/neutral/capabilities/index.mjs.map +0 -7
  136. package/dist/lib/neutral/chunk-4RN6TH36.mjs +0 -292
  137. package/dist/lib/neutral/chunk-4RN6TH36.mjs.map +0 -7
  138. package/dist/lib/neutral/chunk-BAVI2K7A.mjs +0 -27
  139. package/dist/lib/neutral/chunk-BAVI2K7A.mjs.map +0 -7
  140. package/dist/lib/neutral/chunk-EAN4K6OL.mjs +0 -8
  141. package/dist/lib/neutral/chunk-EAN4K6OL.mjs.map +0 -7
  142. package/dist/lib/neutral/chunk-IRQMJLRY.mjs.map +0 -7
  143. package/dist/lib/neutral/chunk-J5LGTIGS.mjs +0 -10
  144. package/dist/lib/neutral/chunk-J5LGTIGS.mjs.map +0 -7
  145. package/dist/lib/neutral/chunk-JOSNCOV4.mjs +0 -79
  146. package/dist/lib/neutral/chunk-JOSNCOV4.mjs.map +0 -7
  147. package/dist/lib/neutral/components/index.mjs +0 -814
  148. package/dist/lib/neutral/components/index.mjs.map +0 -7
  149. package/dist/lib/neutral/containers/index.mjs +0 -20
  150. package/dist/lib/neutral/containers/index.mjs.map +0 -7
  151. package/dist/lib/neutral/expose-HIBA2NQG.mjs +0 -38
  152. package/dist/lib/neutral/expose-HIBA2NQG.mjs.map +0 -7
  153. package/dist/lib/neutral/hooks/index.mjs +0 -181
  154. package/dist/lib/neutral/hooks/index.mjs.map +0 -7
  155. package/dist/lib/neutral/index.mjs +0 -34
  156. package/dist/lib/neutral/index.mjs.map +0 -7
  157. package/dist/lib/neutral/keyboard-JM2HCF5N.mjs +0 -58
  158. package/dist/lib/neutral/keyboard-JM2HCF5N.mjs.map +0 -7
  159. package/dist/lib/neutral/meta.json +0 -1
  160. package/dist/lib/neutral/meta.mjs +0 -12
  161. package/dist/lib/neutral/meta.mjs.map +0 -7
  162. package/dist/lib/neutral/operation-handler-ORDOJUL2.mjs +0 -13
  163. package/dist/lib/neutral/operation-handler-ORDOJUL2.mjs.map +0 -7
  164. package/dist/lib/neutral/operations/index.mjs +0 -8
  165. package/dist/lib/neutral/operations/index.mjs.map +0 -7
  166. package/dist/lib/neutral/plugin.mjs +0 -16
  167. package/dist/lib/neutral/plugin.mjs.map +0 -7
  168. package/dist/lib/neutral/react-surface-QPMUEDZX.mjs +0 -48
  169. package/dist/lib/neutral/react-surface-QPMUEDZX.mjs.map +0 -7
  170. package/dist/lib/neutral/state-PDZU4PIP.mjs +0 -126
  171. package/dist/lib/neutral/state-PDZU4PIP.mjs.map +0 -7
  172. package/dist/lib/neutral/testing/index.mjs +0 -439
  173. package/dist/lib/neutral/testing/index.mjs.map +0 -7
  174. package/dist/lib/neutral/translations.mjs +0 -23
  175. package/dist/lib/neutral/translations.mjs.map +0 -7
  176. package/dist/lib/neutral/types/index.mjs +0 -10
  177. package/dist/lib/neutral/types/index.mjs.map +0 -7
  178. package/dist/types/src/NavTreePlugin.node.d.ts +0 -4
  179. package/dist/types/src/NavTreePlugin.node.d.ts.map +0 -1
  180. package/dist/types/src/NavTreePlugin.test.d.ts +0 -2
  181. package/dist/types/src/NavTreePlugin.test.d.ts.map +0 -1
  182. package/dist/types/src/NavTreePlugin.workerd.d.ts +0 -4
  183. package/dist/types/src/NavTreePlugin.workerd.d.ts.map +0 -1
  184. package/src/NavTreePlugin.node.ts +0 -17
  185. package/src/NavTreePlugin.test.ts +0 -27
  186. package/src/NavTreePlugin.workerd.ts +0 -16
  187. /package/src/components/NavTreeContext/{NavTreeContext.tsx → NavTreeContext.ts} +0 -0
@@ -1,439 +0,0 @@
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: "appMenu",
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: "userAccount",
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: "spaceActions",
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
- ...i % 3 === 0 && {
167
- count: (i + 1) * 2
168
- },
169
- ...i % 3 === 1 && {
170
- modifiedCount: i + 1
171
- }
172
- })
173
- }));
174
- })
175
- }),
176
- // Create object actions.
177
- GraphBuilder.createExtension({
178
- id: "objectActions",
179
- match: NodeMatcher.whenNodeType("object"),
180
- actions: () => Effect.succeed(Array.from({
181
- length: 5
182
- }, (_, i) => ({
183
- id: `action-${i}`,
184
- data: Effect.fnUntraced(function* () {
185
- log.info("action", {
186
- id: "objectActions",
187
- index: i
188
- }, { "~LogMeta": "~LogMeta", F: __dxlog_file, L: 184, S: this });
189
- }),
190
- properties: getProperties(`action-${i}`, {
191
- label: `Action ${i}`,
192
- icon: random.properties.icon()
193
- })
194
- })))
195
- })
196
- ]));
197
- };
198
-
199
- // src/testing/generator.ts
200
- import * as Schema from "effect/Schema";
201
- import { DXN, Obj, Type } from "@dxos/echo";
202
- import { TestSchema } from "@dxos/echo/testing";
203
- import { random as random2 } from "@dxos/random";
204
- import { range } from "@dxos/util";
205
- var createFactory = ({ createSchema, createData }) => {
206
- const schema = createSchema?.();
207
- return {
208
- schema,
209
- createObject: () => schema ? Obj.make(schema, createData()) : Obj.make(TestSchema.Expando, createData())
210
- };
211
- };
212
- var Status = [
213
- "pending",
214
- "active",
215
- "done"
216
- ];
217
- var Priority = [
218
- 1,
219
- 2,
220
- 3,
221
- 4,
222
- 5
223
- ];
224
- var defaultGenerators = {
225
- document: {
226
- createData: () => ({
227
- title: random2.lorem.sentence(3),
228
- body: random2.lorem.sentences({
229
- min: 1,
230
- max: random2.number.int({
231
- min: 1,
232
- max: 3
233
- })
234
- })
235
- })
236
- },
237
- image: {
238
- createData: () => ({
239
- title: random2.lorem.sentence(3),
240
- image: random2.helpers.arrayElement(data.images),
241
- body: random2.datatype.boolean() ? random2.lorem.sentences() : void 0
242
- })
243
- },
244
- project: {
245
- createSchema: () => Type.makeObject(DXN.make("com.example.type.project", "0.1.0"))(Schema.Struct({
246
- title: Schema.String,
247
- repo: Schema.String,
248
- status: Schema.String,
249
- priority: Schema.Number
250
- })),
251
- createData: () => ({
252
- title: random2.commerce.productName(),
253
- repo: random2.datatype.boolean({
254
- probability: 0.3
255
- }) ? random2.internet.url() : void 0,
256
- status: random2.helpers.arrayElement(Status),
257
- priority: random2.helpers.arrayElement(Priority)
258
- })
259
- }
260
- };
261
- var TestObjectGenerator = class {
262
- factories;
263
- constructor({ types, factories } = {}) {
264
- this.factories = factories ?? (types ?? Object.keys(defaultGenerators)).reduce((acc, type) => {
265
- acc[type] = createFactory(defaultGenerators[type]);
266
- return acc;
267
- }, {});
268
- }
269
- get schema() {
270
- return Object.values(this.factories).map((f) => f.schema);
271
- }
272
- createObject({ types } = {}) {
273
- const type = random2.helpers.arrayElement(types ?? Object.keys(this.factories));
274
- const factory = this.factories[type];
275
- return factory?.createObject();
276
- }
277
- createObjects({ types, length }) {
278
- return range(length, () => this.createObject({
279
- types
280
- }));
281
- }
282
- };
283
- var data = {
284
- images: [
285
- "/images/image-1.png",
286
- "/images/image-2.png",
287
- "/images/image-3.png",
288
- "/images/image-4.png",
289
- "/images/image-5.png",
290
- "/images/image-6.png"
291
- ]
292
- };
293
- var createTree = () => {
294
- const generator = new TestObjectGenerator({
295
- types: [
296
- "document"
297
- ]
298
- });
299
- const initialContent = {
300
- id: "root",
301
- data: null,
302
- type: "root",
303
- properties: {
304
- label: "Root",
305
- icon: "ph--circle--regular"
306
- },
307
- nodes: [
308
- ...Array(4)
309
- ].map(() => {
310
- const l0 = generator.createObject();
311
- return {
312
- id: random2.string.uuid(),
313
- data: null,
314
- type: "category",
315
- properties: {
316
- label: l0.title,
317
- icon: "ph--horse--regular",
318
- disposition: "workspace"
319
- },
320
- nodes: [
321
- ...[
322
- ...Array(4)
323
- ].map(() => {
324
- const l1 = generator.createObject();
325
- return {
326
- id: random2.string.uuid(),
327
- data: null,
328
- type: "document",
329
- properties: {
330
- label: l1.title,
331
- icon: "ph--butterfly--regular"
332
- },
333
- nodes: [
334
- {
335
- id: `${random2.string.uuid()}__a1`,
336
- data: () => {
337
- },
338
- type: "action",
339
- properties: {
340
- label: random2.lorem.words(2),
341
- icon: "ph--boat--regular"
342
- }
343
- },
344
- {
345
- id: `${random2.string.uuid()}__a2`,
346
- data: () => {
347
- },
348
- type: "action",
349
- properties: {
350
- label: random2.lorem.words(2),
351
- icon: "ph--train-simple--regular"
352
- }
353
- }
354
- ]
355
- };
356
- }),
357
- {
358
- id: `${random2.string.uuid()}__a1`,
359
- data: () => {
360
- },
361
- type: "action",
362
- properties: {
363
- label: random2.lorem.words(2),
364
- icon: "ph--boat--regular"
365
- }
366
- },
367
- {
368
- id: `${random2.string.uuid()}__a2`,
369
- data: () => {
370
- },
371
- type: "action",
372
- properties: {
373
- label: random2.lorem.words(2),
374
- icon: "ph--train-simple--regular"
375
- }
376
- }
377
- ]
378
- };
379
- })
380
- };
381
- return initialContent;
382
- };
383
-
384
- // src/testing/update-state.ts
385
- import { log as log2 } from "@dxos/log";
386
- var __dxlog_file2 = "/__w/dxos/dxos/packages/plugins/plugin-navtree/src/testing/update-state.ts";
387
- var removeItem = (tree, source) => {
388
- const parent = getNode(tree, source.path.slice(1, -1));
389
- const index = parent.nodes.findIndex((node) => node.id === source.id);
390
- const item = parent.nodes[index];
391
- parent.nodes.splice(index, 1);
392
- return item;
393
- };
394
- var getNode = (tree, path) => {
395
- let node = tree;
396
- for (const part of path) {
397
- node = node.nodes.find((n) => n.id === part);
398
- }
399
- return node;
400
- };
401
- var updateState = ({ state, instruction, source, target }) => {
402
- switch (instruction.type) {
403
- case "reorder-above": {
404
- const item = removeItem(state, source);
405
- const parent = getNode(state, target.path.slice(1, -1));
406
- const index = parent.nodes.findIndex(({ id }) => id === target.id);
407
- parent.nodes.splice(index, 0, item);
408
- break;
409
- }
410
- case "reorder-below": {
411
- const item = removeItem(state, source);
412
- const parent = getNode(state, target.path.slice(1, -1));
413
- const index = parent.nodes.findIndex(({ id }) => id === target.id);
414
- parent.nodes.splice(index + 1, 0, item);
415
- break;
416
- }
417
- case "make-child": {
418
- const item = removeItem(state, source);
419
- const parent = getNode(state, target.path.slice(1));
420
- parent.nodes.push(item);
421
- break;
422
- }
423
- case "instruction-blocked":
424
- break;
425
- default:
426
- log2.warn("Unsupported instruction", instruction, { "~LogMeta": "~LogMeta", F: __dxlog_file2, L: 48, S: void 0 });
427
- break;
428
- }
429
- };
430
- export {
431
- Priority,
432
- Status,
433
- TestObjectGenerator,
434
- createTree,
435
- defaultGenerators,
436
- storybookGraphBuilders,
437
- updateState
438
- };
439
- //# sourceMappingURL=index.mjs.map
@@ -1,7 +0,0 @@
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: 'appMenu',\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: 'userAccount',\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: 'spaceActions',\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 ...(i % 3 === 0 && { count: (i + 1) * 2 }),\n ...(i % 3 === 1 && { modifiedCount: i + 1 }),\n }),\n }),\n );\n }),\n }),\n // Create object actions.\n GraphBuilder.createExtension({\n id: 'objectActions',\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: 'objectActions', 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 Type.makeObject(DXN.make('com.example.type.project', '0.1.0'))(\n Schema.Struct({\n title: Schema.String,\n repo: Schema.String,\n status: Schema.String,\n priority: Schema.Number,\n }),\n ),\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", "makeObject", "Struct", "String", "repo", "status", "priority", "Number", "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
- }
@@ -1,23 +0,0 @@
1
- import "./chunk-J5LGTIGS.mjs";
2
-
3
- // src/translations.ts
4
- import { meta } from "#meta";
5
- var translations = [
6
- {
7
- "en-US": {
8
- [meta.profile.key]: {
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
@@ -1,7 +0,0 @@
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.profile.key]: {\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,QAAQC,GAAG,GAAG;QAClB,kBAAkB;QAClB,uBAAuB;QACvB,yBAAyB;QACzB,kCAAkC;QAClC,mCAAmC;QACnC,2BAA2B;QAC3B,sBAAsB;MACxB;IACF;EACF;;",
6
- "names": ["meta", "translations", "profile", "key"]
7
- }
@@ -1,10 +0,0 @@
1
- import {
2
- NavTreeCapabilities_exports,
3
- NavTreeEvents_exports
4
- } from "../chunk-BAVI2K7A.mjs";
5
- import "../chunk-J5LGTIGS.mjs";
6
- export {
7
- NavTreeCapabilities_exports as NavTreeCapabilities,
8
- NavTreeEvents_exports as NavTreeEvents
9
- };
10
- //# sourceMappingURL=index.mjs.map
@@ -1,7 +0,0 @@
1
- {
2
- "version": 3,
3
- "sources": [],
4
- "sourcesContent": [],
5
- "mappings": "",
6
- "names": []
7
- }
@@ -1,4 +0,0 @@
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
@@ -1 +0,0 @@
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"}
@@ -1,2 +0,0 @@
1
- export {};
2
- //# sourceMappingURL=NavTreePlugin.test.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"NavTreePlugin.test.d.ts","sourceRoot":"","sources":["../../../src/NavTreePlugin.test.ts"],"names":[],"mappings":""}
@@ -1,4 +0,0 @@
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
@@ -1 +0,0 @@
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,17 +0,0 @@
1
- //
2
- // Copyright 2025 DXOS.org
3
- //
4
-
5
- import { Plugin } from '@dxos/app-framework';
6
- import { AppPlugin } from '@dxos/app-toolkit';
7
-
8
- import { AppGraphBuilder, OperationHandler } from '#capabilities';
9
- import { meta } from '#meta';
10
-
11
- export const NavTreePlugin = Plugin.define(meta).pipe(
12
- AppPlugin.addAppGraphModule({ activate: AppGraphBuilder }),
13
- AppPlugin.addOperationHandlerModule({ activate: OperationHandler }),
14
- Plugin.make,
15
- );
16
-
17
- export default NavTreePlugin;
@@ -1,27 +0,0 @@
1
- //
2
- // Copyright 2025 DXOS.org
3
- //
4
-
5
- import { describe, test } from 'vitest';
6
-
7
- import { ActivationEvents } from '@dxos/app-framework';
8
- import { createComposerTestApp } from '@dxos/plugin-testing/harness';
9
-
10
- import { NavTreePlugin } from '#plugin';
11
-
12
- import { meta } from './meta';
13
-
14
- const moduleId = (name: string) => `${meta.profile.key}.module.${name}`;
15
-
16
- describe('NavTreePlugin', () => {
17
- test('modules activate on the expected events', async ({ expect }) => {
18
- await using harness = await createComposerTestApp({
19
- plugins: [NavTreePlugin()],
20
- });
21
-
22
- expect(harness.manager.getActive()).toEqual(expect.arrayContaining([moduleId('AppGraphBuilder')]));
23
-
24
- await harness.fire(ActivationEvents.SetupProcessManager);
25
- expect(harness.manager.getActive()).toContain(moduleId('OperationHandler'));
26
- });
27
- });
@@ -1,16 +0,0 @@
1
- //
2
- // Copyright 2025 DXOS.org
3
- //
4
-
5
- import { Plugin } from '@dxos/app-framework';
6
- import { AppPlugin } from '@dxos/app-toolkit';
7
-
8
- import { OperationHandler } from '#capabilities';
9
- import { meta } from '#meta';
10
-
11
- export const NavTreePlugin = Plugin.define(meta).pipe(
12
- AppPlugin.addOperationHandlerModule({ activate: OperationHandler }),
13
- Plugin.make,
14
- );
15
-
16
- export default NavTreePlugin;