@dxos/plugin-navtree 0.8.4-main.4a85c3132b → 0.8.4-main.51f1e5ca51

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 (169) hide show
  1. package/dist/lib/browser/index.mjs +115 -74
  2. package/dist/lib/browser/index.mjs.map +4 -4
  3. package/dist/lib/browser/meta.json +1 -1
  4. package/dist/lib/browser/translations.mjs +21 -0
  5. package/dist/lib/browser/translations.mjs.map +7 -0
  6. package/dist/types/src/capabilities/app-graph-builder.d.ts.map +1 -0
  7. package/dist/types/src/capabilities/index.d.ts +7 -5
  8. package/dist/types/src/capabilities/index.d.ts.map +1 -1
  9. package/dist/types/src/capabilities/keyboard.d.ts.map +1 -0
  10. package/dist/types/src/capabilities/operation-handler.d.ts +6 -0
  11. package/dist/types/src/capabilities/operation-handler.d.ts.map +1 -0
  12. package/dist/types/src/capabilities/react-surface.d.ts.map +1 -0
  13. package/dist/types/src/capabilities/{state/state.d.ts → state.d.ts} +1 -1
  14. package/dist/types/src/capabilities/state.d.ts.map +1 -0
  15. package/dist/types/src/components/NavTree/NavTree.d.ts.map +1 -1
  16. package/dist/types/src/components/NavTree/NavTree.stories.d.ts +9 -11
  17. package/dist/types/src/components/NavTree/NavTree.stories.d.ts.map +1 -1
  18. package/dist/types/src/components/{NavTreeContext.d.ts → NavTreeContext/NavTreeContext.d.ts} +1 -1
  19. package/dist/types/src/components/NavTreeContext/NavTreeContext.d.ts.map +1 -0
  20. package/dist/types/src/components/NavTreeContext/index.d.ts +2 -0
  21. package/dist/types/src/components/NavTreeContext/index.d.ts.map +1 -0
  22. package/dist/types/src/components/NavTreeItem/NavTreeItemAction.d.ts +7 -3
  23. package/dist/types/src/components/NavTreeItem/NavTreeItemAction.d.ts.map +1 -1
  24. package/dist/types/src/components/NavTreeItem/NavTreeItemAction.stories.d.ts +1 -1
  25. package/dist/types/src/components/NavTreeItem/NavTreeItemAction.stories.d.ts.map +1 -1
  26. package/dist/types/src/components/NavTreeItem/NavTreeItemColumns.d.ts.map +1 -1
  27. package/dist/types/src/components/Sidebar/L0Menu.d.ts.map +1 -1
  28. package/dist/types/src/components/Sidebar/L1Panel.d.ts.map +1 -1
  29. package/dist/types/src/components/Sidebar/L1Tabs.d.ts.map +1 -1
  30. package/dist/types/src/components/UserAccountAvatar/UserAccountAvatar.d.ts.map +1 -1
  31. package/dist/types/src/components/UserAccountAvatar/UserAccountAvatar.stories.d.ts.map +1 -1
  32. package/dist/types/src/components/types.d.ts +1 -2
  33. package/dist/types/src/components/types.d.ts.map +1 -1
  34. package/dist/types/src/containers/CommandsDialogContent/CommandsDialogContent.d.ts.map +1 -1
  35. package/dist/types/src/containers/CommandsDialogContent/CommandsDialogContent.stories.d.ts +28 -0
  36. package/dist/types/src/containers/CommandsDialogContent/CommandsDialogContent.stories.d.ts.map +1 -0
  37. package/dist/types/src/containers/CommandsDialogContent/index.d.ts +1 -2
  38. package/dist/types/src/containers/CommandsDialogContent/index.d.ts.map +1 -1
  39. package/dist/types/src/containers/CommandsTrigger/CommandsTrigger.d.ts.map +1 -1
  40. package/dist/types/src/containers/CommandsTrigger/index.d.ts +1 -2
  41. package/dist/types/src/containers/CommandsTrigger/index.d.ts.map +1 -1
  42. package/dist/types/src/containers/NavTreeContainer/NavTreeContainer.d.ts.map +1 -1
  43. package/dist/types/src/containers/NavTreeContainer/index.d.ts +2 -2
  44. package/dist/types/src/containers/NavTreeContainer/index.d.ts.map +1 -1
  45. package/dist/types/src/containers/NavTreeDocumentTitle/NavTreeDocumentTitle.d.ts.map +1 -1
  46. package/dist/types/src/containers/NavTreeDocumentTitle/index.d.ts +1 -2
  47. package/dist/types/src/containers/NavTreeDocumentTitle/index.d.ts.map +1 -1
  48. package/dist/types/src/containers/index.d.ts +1 -1
  49. package/dist/types/src/containers/index.d.ts.map +1 -1
  50. package/dist/types/src/experimental/Tree.d.ts +2 -2
  51. package/dist/types/src/experimental/Tree.d.ts.map +1 -1
  52. package/dist/types/src/experimental/Tree.stories.d.ts.map +1 -1
  53. package/dist/types/src/hooks/useActions.d.ts +2 -4
  54. package/dist/types/src/hooks/useActions.d.ts.map +1 -1
  55. package/dist/types/src/hooks/useLoadDescendents.d.ts.map +1 -1
  56. package/dist/types/src/hooks/useNavTreeModel.d.ts +1 -1
  57. package/dist/types/src/hooks/useNavTreeModel.d.ts.map +1 -1
  58. package/dist/types/src/hooks/useNavTreeState.d.ts +2 -6
  59. package/dist/types/src/hooks/useNavTreeState.d.ts.map +1 -1
  60. package/dist/types/src/meta.d.ts.map +1 -1
  61. package/dist/types/src/operations/expose.d.ts +5 -0
  62. package/dist/types/src/operations/expose.d.ts.map +1 -0
  63. package/dist/types/src/operations/index.d.ts +3 -0
  64. package/dist/types/src/operations/index.d.ts.map +1 -0
  65. package/dist/types/src/testing/app-graph-builder.d.ts.map +1 -1
  66. package/dist/types/src/testing/generator.d.ts.map +1 -1
  67. package/dist/types/src/testing/update-state.d.ts.map +1 -1
  68. package/dist/types/src/translations.d.ts +8 -11
  69. package/dist/types/src/translations.d.ts.map +1 -1
  70. package/dist/types/src/types/capabilities.d.ts +1 -2
  71. package/dist/types/src/types/capabilities.d.ts.map +1 -1
  72. package/dist/types/src/types/events.d.ts.map +1 -1
  73. package/dist/types/src/util.d.ts +2 -2
  74. package/dist/types/src/util.d.ts.map +1 -1
  75. package/dist/types/tsconfig.tsbuildinfo +1 -1
  76. package/package.json +57 -43
  77. package/src/NavTreePlugin.tsx +7 -7
  78. package/src/capabilities/{app-graph-builder/app-graph-builder.ts → app-graph-builder.ts} +7 -7
  79. package/src/capabilities/index.ts +11 -5
  80. package/src/capabilities/{keyboard/keyboard.ts → keyboard.ts} +2 -2
  81. package/src/capabilities/operation-handler.ts +16 -0
  82. package/src/capabilities/{react-surface/react-surface.tsx → react-surface.tsx} +8 -8
  83. package/src/capabilities/{state/state.ts → state.ts} +5 -5
  84. package/src/components/NavTree/NavTree.stories.tsx +17 -16
  85. package/src/components/NavTree/NavTree.tsx +3 -2
  86. package/src/components/{NavTreeContext.tsx → NavTreeContext/NavTreeContext.tsx} +1 -1
  87. package/src/components/NavTreeContext/index.ts +5 -0
  88. package/src/components/NavTreeItem/NavTreeItemAction.stories.tsx +6 -8
  89. package/src/components/NavTreeItem/NavTreeItemAction.tsx +62 -45
  90. package/src/components/NavTreeItem/NavTreeItemColumns.tsx +7 -5
  91. package/src/components/Sidebar/L0Menu.tsx +49 -74
  92. package/src/components/Sidebar/L1Panel.tsx +97 -134
  93. package/src/components/Sidebar/L1Tabs.tsx +0 -1
  94. package/src/components/types.ts +1 -2
  95. package/src/containers/CommandsDialogContent/CommandsDialogContent.stories.tsx +46 -0
  96. package/src/containers/CommandsDialogContent/CommandsDialogContent.tsx +52 -58
  97. package/src/containers/CommandsDialogContent/index.ts +1 -3
  98. package/src/containers/CommandsTrigger/CommandsTrigger.tsx +7 -5
  99. package/src/containers/CommandsTrigger/index.ts +1 -3
  100. package/src/containers/NavTreeContainer/NavTreeContainer.tsx +28 -27
  101. package/src/containers/NavTreeContainer/index.ts +2 -3
  102. package/src/containers/NavTreeDocumentTitle/NavTreeDocumentTitle.tsx +2 -2
  103. package/src/containers/NavTreeDocumentTitle/index.ts +1 -3
  104. package/src/containers/index.ts +1 -1
  105. package/src/experimental/Tree.stories.tsx +27 -27
  106. package/src/hooks/useActions.ts +18 -22
  107. package/src/hooks/useNavTreeModel.ts +10 -4
  108. package/src/hooks/useNavTreeState.ts +2 -9
  109. package/src/meta.ts +2 -2
  110. package/src/operations/expose.ts +42 -0
  111. package/src/operations/index.ts +7 -0
  112. package/src/testing/app-graph-builder.ts +40 -36
  113. package/src/testing/generator.ts +22 -22
  114. package/src/translations.ts +8 -10
  115. package/src/types/capabilities.ts +4 -4
  116. package/src/types/events.ts +1 -1
  117. package/src/util.ts +2 -2
  118. package/dist/lib/browser/CommandsDialogContent-A27AKTHH.mjs +0 -111
  119. package/dist/lib/browser/CommandsDialogContent-A27AKTHH.mjs.map +0 -7
  120. package/dist/lib/browser/CommandsTrigger-HBZYQCGV.mjs +0 -33
  121. package/dist/lib/browser/CommandsTrigger-HBZYQCGV.mjs.map +0 -7
  122. package/dist/lib/browser/NavTreeContainer-B5K4FUJS.mjs +0 -12
  123. package/dist/lib/browser/NavTreeContainer-B5K4FUJS.mjs.map +0 -7
  124. package/dist/lib/browser/NavTreeDocumentTitle-GEE3URWH.mjs +0 -26
  125. package/dist/lib/browser/NavTreeDocumentTitle-GEE3URWH.mjs.map +0 -7
  126. package/dist/lib/browser/app-graph-builder-XGA4GPGL.mjs +0 -44
  127. package/dist/lib/browser/app-graph-builder-XGA4GPGL.mjs.map +0 -7
  128. package/dist/lib/browser/chunk-DQCYMXEU.mjs +0 -1426
  129. package/dist/lib/browser/chunk-DQCYMXEU.mjs.map +0 -7
  130. package/dist/lib/browser/chunk-H3OJ4WLF.mjs +0 -14
  131. package/dist/lib/browser/chunk-H3OJ4WLF.mjs.map +0 -7
  132. package/dist/lib/browser/chunk-X2HDG62A.mjs +0 -23
  133. package/dist/lib/browser/chunk-X2HDG62A.mjs.map +0 -7
  134. package/dist/lib/browser/chunk-YKTYPINZ.mjs +0 -19
  135. package/dist/lib/browser/chunk-YKTYPINZ.mjs.map +0 -7
  136. package/dist/lib/browser/keyboard-OJZC54PK.mjs +0 -54
  137. package/dist/lib/browser/keyboard-OJZC54PK.mjs.map +0 -7
  138. package/dist/lib/browser/operation-resolver-BNAMYOHF.mjs +0 -53
  139. package/dist/lib/browser/operation-resolver-BNAMYOHF.mjs.map +0 -7
  140. package/dist/lib/browser/react-surface-AYHOAJ4I.mjs +0 -59
  141. package/dist/lib/browser/react-surface-AYHOAJ4I.mjs.map +0 -7
  142. package/dist/lib/browser/state-AC3EETN7.mjs +0 -131
  143. package/dist/lib/browser/state-AC3EETN7.mjs.map +0 -7
  144. package/dist/types/src/capabilities/app-graph-builder/app-graph-builder.d.ts.map +0 -1
  145. package/dist/types/src/capabilities/app-graph-builder/index.d.ts +0 -3
  146. package/dist/types/src/capabilities/app-graph-builder/index.d.ts.map +0 -1
  147. package/dist/types/src/capabilities/keyboard/index.d.ts +0 -3
  148. package/dist/types/src/capabilities/keyboard/index.d.ts.map +0 -1
  149. package/dist/types/src/capabilities/keyboard/keyboard.d.ts.map +0 -1
  150. package/dist/types/src/capabilities/operation-resolver/index.d.ts +0 -3
  151. package/dist/types/src/capabilities/operation-resolver/index.d.ts.map +0 -1
  152. package/dist/types/src/capabilities/operation-resolver/operation-resolver.d.ts +0 -5
  153. package/dist/types/src/capabilities/operation-resolver/operation-resolver.d.ts.map +0 -1
  154. package/dist/types/src/capabilities/react-surface/index.d.ts +0 -3
  155. package/dist/types/src/capabilities/react-surface/index.d.ts.map +0 -1
  156. package/dist/types/src/capabilities/react-surface/react-surface.d.ts.map +0 -1
  157. package/dist/types/src/capabilities/state/index.d.ts +0 -3
  158. package/dist/types/src/capabilities/state/index.d.ts.map +0 -1
  159. package/dist/types/src/capabilities/state/state.d.ts.map +0 -1
  160. package/dist/types/src/components/NavTreeContext.d.ts.map +0 -1
  161. package/src/capabilities/app-graph-builder/index.ts +0 -7
  162. package/src/capabilities/keyboard/index.ts +0 -7
  163. package/src/capabilities/operation-resolver/index.ts +0 -7
  164. package/src/capabilities/operation-resolver/operation-resolver.ts +0 -44
  165. package/src/capabilities/react-surface/index.ts +0 -7
  166. package/src/capabilities/state/index.ts +0 -7
  167. /package/dist/types/src/capabilities/{app-graph-builder/app-graph-builder.d.ts → app-graph-builder.d.ts} +0 -0
  168. /package/dist/types/src/capabilities/{keyboard/keyboard.d.ts → keyboard.d.ts} +0 -0
  169. /package/dist/types/src/capabilities/{react-surface/react-surface.d.ts → react-surface.d.ts} +0 -0
@@ -1,131 +0,0 @@
1
- import {
2
- NavTreeCapabilities
3
- } from "./chunk-X2HDG62A.mjs";
4
- import {
5
- meta
6
- } from "./chunk-YKTYPINZ.mjs";
7
-
8
- // src/capabilities/state/state.ts
9
- import { Atom } from "@effect-atom/atom-react";
10
- import * as Effect from "effect/Effect";
11
- import { Capabilities, Capability } from "@dxos/app-framework";
12
- import { AppCapabilities } from "@dxos/app-toolkit";
13
- import { Graph, Node } from "@dxos/plugin-graph";
14
- import { Path } from "@dxos/react-ui-list";
15
- var KEY = `${meta.id}/state/v1`;
16
- var defaultItemState = {
17
- open: false,
18
- current: false,
19
- alternateTree: false
20
- };
21
- var isTopLevelPath = (path) => path.length === 2 && path[0] === Node.RootId;
22
- var defaultStateEntries = [
23
- [
24
- "root",
25
- {
26
- open: true,
27
- current: false
28
- }
29
- ]
30
- ];
31
- var getInitialState = () => {
32
- const stringified = localStorage.getItem(KEY);
33
- if (!stringified) {
34
- return new Map(defaultStateEntries);
35
- }
36
- try {
37
- const cached = JSON.parse(stringified);
38
- return new Map(cached.map(([key, value]) => [
39
- key,
40
- {
41
- open: value.open,
42
- current: false
43
- }
44
- ]));
45
- } catch {
46
- return new Map(defaultStateEntries);
47
- }
48
- };
49
- var state_default = Capability.makeModule(Effect.fnUntraced(function* () {
50
- const registry = yield* Capability.get(Capabilities.AtomRegistry);
51
- const layoutAtom = yield* Capability.get(AppCapabilities.Layout);
52
- const backingState = getInitialState();
53
- const itemAtomFamily = Atom.family((pathString) => Atom.make(backingState.get(pathString) ?? {
54
- ...defaultItemState
55
- }).pipe(Atom.keepAlive));
56
- const getItemAtom = (path) => {
57
- const pathString = Path.create(...path);
58
- if (!backingState.has(pathString)) {
59
- backingState.set(pathString, {
60
- ...defaultItemState
61
- });
62
- }
63
- return itemAtomFamily(pathString);
64
- };
65
- const getItem = (path) => {
66
- return registry.get(getItemAtom(path));
67
- };
68
- const setItem = (path, key, next) => {
69
- const pathString = Path.create(...path);
70
- const atom = itemAtomFamily(pathString);
71
- const currentValue = registry.get(atom);
72
- const newValue = {
73
- ...currentValue,
74
- [key]: next
75
- };
76
- registry.set(atom, newValue);
77
- if (!(key === "open" && isTopLevelPath(path))) {
78
- backingState.set(pathString, newValue);
79
- localStorage.setItem(KEY, JSON.stringify(Array.from(backingState.entries())));
80
- }
81
- };
82
- let previous = [];
83
- const unsubscribe = registry.subscribe(layoutAtom, (layout) => {
84
- const removed = previous.filter((id) => !layout.active.includes(id));
85
- previous = layout.active;
86
- const handleUpdate = () => {
87
- removed.forEach((id) => {
88
- const keys = Array.from(backingState.keys()).filter((key) => Path.last(key) === id);
89
- keys.forEach((key) => {
90
- setItem(Path.parts(key), "current", false);
91
- });
92
- });
93
- layout.active.forEach((id) => {
94
- const keys = Array.from(/* @__PURE__ */ new Set([
95
- ...backingState.keys(),
96
- id
97
- ])).filter((key) => Path.last(key) === id);
98
- keys.forEach((key) => {
99
- setItem(Path.parts(key), "current", true);
100
- });
101
- });
102
- };
103
- const timeout = setTimeout(handleUpdate, 500);
104
- handleUpdate();
105
- return () => clearTimeout(timeout);
106
- });
107
- yield* Effect.gen(function* () {
108
- const { graph } = yield* Capability.waitFor(AppCapabilities.AppGraph);
109
- const layout = registry.get(layoutAtom);
110
- if (layout.workspace) {
111
- Graph.expand(graph, layout.workspace, "child");
112
- }
113
- const openPaths = Array.from(backingState.entries()).filter(([, state]) => state.open).map(([pathString]) => Path.parts(pathString)).filter((path) => !isTopLevelPath(path));
114
- for (const path of openPaths) {
115
- const nodeId = path[path.length - 1];
116
- if (!nodeId) {
117
- continue;
118
- }
119
- Graph.expand(graph, nodeId, "child");
120
- }
121
- }).pipe(Effect.forkDaemon);
122
- return Capability.contributes(NavTreeCapabilities.State, {
123
- getItem,
124
- getItemAtom,
125
- setItem
126
- }, () => Effect.sync(() => unsubscribe()));
127
- }));
128
- export {
129
- state_default as default
130
- };
131
- //# sourceMappingURL=state-AC3EETN7.mjs.map
@@ -1,7 +0,0 @@
1
- {
2
- "version": 3,
3
- "sources": ["../../../src/capabilities/state/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 { Capabilities, Capability } from '@dxos/app-framework';\nimport { AppCapabilities } from '@dxos/app-toolkit';\nimport { Graph, Node } from '@dxos/plugin-graph';\nimport { Path } from '@dxos/react-ui-list';\n\nimport { meta } from '../../meta';\nimport { type NavTreeCapabilities as NC, NavTreeCapabilities } from '../../types';\n\nconst KEY = `${meta.id}/state/v1`;\n\n/** Default item state for new entries. */\nconst defaultItemState: NC.NavTreeItemState = { open: false, current: false, alternateTree: false };\n\n/** L0 (top-level workspace) paths are direct children of root — not part of the expandable tree model. */\nconst isTopLevelPath = (path: string[]): boolean => path.length === 2 && path[0] === Node.RootId;\n\n/** Default state entries for initial tree structure. */\n// TODO(thure): Initialize these dynamically.\nconst defaultStateEntries: [string, NC.NavTreeItemState][] = [['root', { open: true, current: false }]];\n\nconst getInitialState = (): Map<string, NC.NavTreeItemState> => {\n const stringified = localStorage.getItem(KEY);\n if (!stringified) {\n return new Map(defaultStateEntries);\n }\n\n try {\n const cached: [string, { open: boolean; current: boolean }][] = JSON.parse(stringified);\n return new Map(cached.map(([key, value]) => [key, { open: value.open, current: false }]));\n } catch {\n return new Map(defaultStateEntries);\n }\n};\n\nexport default Capability.makeModule(\n Effect.fnUntraced(function* () {\n const registry = yield* Capability.get(Capabilities.AtomRegistry);\n const layoutAtom = yield* Capability.get(AppCapabilities.Layout);\n\n // Backing state for persistence (not reactive).\n const backingState = getInitialState();\n\n // Per-path atom family for fine-grained reactivity.\n // keepAlive prevents atoms from being garbage collected when components unmount,\n // ensuring state is preserved across deletion/restoration cycles.\n const itemAtomFamily = Atom.family((pathString: string) =>\n Atom.make<NC.NavTreeItemState>(backingState.get(pathString) ?? { ...defaultItemState }).pipe(Atom.keepAlive),\n );\n\n const getItemAtom = (path: string[]): Atom.Atom<NC.NavTreeItemState> => {\n const pathString = Path.create(...path);\n if (!backingState.has(pathString)) {\n backingState.set(pathString, { ...defaultItemState });\n }\n return itemAtomFamily(pathString);\n };\n\n const getItem = (path: string[]): NC.NavTreeItemState => {\n return registry.get(getItemAtom(path));\n };\n\n const setItem = (path: string[], key: 'open' | 'current' | 'alternateTree', next: boolean) => {\n const pathString = Path.create(...path);\n const atom = itemAtomFamily(pathString);\n const currentValue = registry.get(atom);\n const newValue = { ...currentValue, [key]: next };\n\n registry.set(atom, newValue);\n\n if (!(key === 'open' && isTopLevelPath(path))) {\n backingState.set(pathString, newValue);\n localStorage.setItem(KEY, JSON.stringify(Array.from(backingState.entries())));\n }\n };\n\n // Subscribe to layout changes to update current state.\n let previous: string[] = [];\n const unsubscribe = registry.subscribe(layoutAtom, (layout) => {\n const removed = previous.filter((id) => !layout.active.includes(id));\n previous = layout.active;\n\n const handleUpdate = () => {\n // Mark removed items as not current.\n removed.forEach((id) => {\n const keys = Array.from(backingState.keys()).filter((key) => Path.last(key) === id);\n keys.forEach((key) => {\n setItem(Path.parts(key), 'current', false);\n });\n });\n\n // Mark active items as current.\n layout.active.forEach((id: string) => {\n const keys = Array.from(new Set([...backingState.keys(), id])).filter((key) => Path.last(key) === id);\n keys.forEach((key) => {\n setItem(Path.parts(key), 'current', true);\n });\n });\n };\n\n // TODO(wittjosiah): This is setTimeout because there's a race between the keys being initialized.\n // Keys are initialized on the first render of an item in the navtree.\n // This could be avoided if the location was a path as well and not just an id.\n const timeout = setTimeout(handleUpdate, 500);\n handleUpdate();\n return () => clearTimeout(timeout);\n });\n\n // Once graph is ready, expand every node marked open in state so the graph has children loaded for rendering.\n yield* Effect.gen(function* () {\n const { graph } = yield* Capability.waitFor(AppCapabilities.AppGraph);\n\n // Always expand the active workspace so its subtree is initialized.\n const layout = registry.get(layoutAtom);\n if (layout.workspace) {\n Graph.expand(graph, layout.workspace, 'child');\n }\n\n // Expand persisted open nodes, skipping inactive workspace tabs.\n const openPaths = Array.from(backingState.entries())\n .filter(([, state]) => state.open)\n .map(([pathString]) => Path.parts(pathString))\n .filter((path) => !isTopLevelPath(path));\n for (const path of openPaths) {\n const nodeId = path[path.length - 1];\n if (!nodeId) {\n continue;\n }\n Graph.expand(graph, nodeId, 'child');\n }\n }).pipe(Effect.forkDaemon);\n\n return Capability.contributes(\n NavTreeCapabilities.State,\n {\n getItem,\n getItemAtom,\n setItem,\n },\n () => Effect.sync(() => unsubscribe()),\n );\n }),\n);\n"],
5
- "mappings": "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",
6
- "names": ["Atom", "Effect", "Capabilities", "Capability", "AppCapabilities", "Graph", "Node", "Path", "KEY", "meta", "id", "defaultItemState", "open", "current", "alternateTree", "isTopLevelPath", "path", "length", "Node", "RootId", "defaultStateEntries", "getInitialState", "stringified", "localStorage", "getItem", "Map", "cached", "JSON", "parse", "map", "key", "value", "Capability", "makeModule", "fnUntraced", "registry", "get", "Capabilities", "AtomRegistry", "layoutAtom", "AppCapabilities", "Layout", "backingState", "itemAtomFamily", "Atom", "family", "pathString", "make", "pipe", "keepAlive", "getItemAtom", "Path", "create", "has", "set", "setItem", "next", "atom", "currentValue", "newValue", "stringify", "Array", "from", "entries", "previous", "unsubscribe", "subscribe", "layout", "removed", "filter", "active", "includes", "handleUpdate", "forEach", "keys", "last", "parts", "Set", "timeout", "setTimeout", "clearTimeout", "gen", "graph", "waitFor", "AppGraph", "workspace", "Graph", "expand", "openPaths", "state", "nodeId", "forkDaemon", "contributes", "NavTreeCapabilities", "State", "sync"]
7
- }
@@ -1 +0,0 @@
1
- {"version":3,"file":"app-graph-builder.d.ts","sourceRoot":"","sources":["../../../../../src/capabilities/app-graph-builder/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,EAAe,MAAM,oBAAoB,CAAC;;AAI/D,wBA4BE"}
@@ -1,3 +0,0 @@
1
- import { Capability } from '@dxos/app-framework';
2
- export declare const AppGraphBuilder: Capability.LazyCapability<void, Capability.Capability<Capability.InterfaceDef<import("@dxos/app-graph").BuilderExtensions>>, Error>;
3
- //# sourceMappingURL=index.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../../src/capabilities/app-graph-builder/index.ts"],"names":[],"mappings":"AAIA,OAAO,EAAE,UAAU,EAAE,MAAM,qBAAqB,CAAC;AAEjD,eAAO,MAAM,eAAe,qIAA0E,CAAC"}
@@ -1,3 +0,0 @@
1
- import { Capability } from '@dxos/app-framework';
2
- export declare const Keyboard: Capability.LazyCapability<void, Capability.Capability<Capability.InterfaceDef<null>>, Error>;
3
- //# sourceMappingURL=index.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../../src/capabilities/keyboard/index.ts"],"names":[],"mappings":"AAIA,OAAO,EAAE,UAAU,EAAE,MAAM,qBAAqB,CAAC;AAEjD,eAAO,MAAM,QAAQ,8FAA0D,CAAC"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"keyboard.d.ts","sourceRoot":"","sources":["../../../../../src/capabilities/keyboard/keyboard.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,MAAM,MAAM,eAAe,CAAC;AAExC,OAAO,EAAgB,UAAU,EAAE,MAAM,qBAAqB,CAAC;;AAS/D,wBAkDE"}
@@ -1,3 +0,0 @@
1
- import { Capability } from '@dxos/app-framework';
2
- export declare const OperationResolver: Capability.LazyCapability<void, Capability.Capability<Capability.InterfaceDef<import("@dxos/app-framework/Capabilities").OperationResolver[]>>, Error>;
3
- //# sourceMappingURL=index.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../../src/capabilities/operation-resolver/index.ts"],"names":[],"mappings":"AAIA,OAAO,EAAE,UAAU,EAAE,MAAM,qBAAqB,CAAC;AAEjD,eAAO,MAAM,iBAAiB,wJAA6E,CAAC"}
@@ -1,5 +0,0 @@
1
- import * as Effect from 'effect/Effect';
2
- import { Capabilities, Capability } from '@dxos/app-framework';
3
- declare const _default: (props: void) => Effect.Effect<Capability.Capability<Capability.InterfaceDef<Capabilities.OperationResolver[]>>, never, never>;
4
- export default _default;
5
- //# sourceMappingURL=operation-resolver.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"operation-resolver.d.ts","sourceRoot":"","sources":["../../../../../src/capabilities/operation-resolver/operation-resolver.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,MAAM,MAAM,eAAe,CAAC;AAExC,OAAO,EAAE,YAAY,EAAE,UAAU,EAAE,MAAM,qBAAqB,CAAC;;AAQ/D,wBA6BE"}
@@ -1,3 +0,0 @@
1
- import { Capability } from '@dxos/app-framework';
2
- export declare const ReactSurface: Capability.LazyCapability<void, Capability.Capability<Capability.InterfaceDef<import("@dxos/app-framework/Capabilities").ReactSurface>>, Error>;
3
- //# sourceMappingURL=index.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../../src/capabilities/react-surface/index.ts"],"names":[],"mappings":"AAIA,OAAO,EAAE,UAAU,EAAE,MAAM,qBAAqB,CAAC;AAEjD,eAAO,MAAM,YAAY,iJAAmE,CAAC"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"react-surface.d.ts","sourceRoot":"","sources":["../../../../../src/capabilities/react-surface/react-surface.tsx"],"names":[],"mappings":"AAIA,OAAO,KAAK,MAAM,MAAM,eAAe,CAAC;AAGxC,OAAO,EAAE,YAAY,EAAE,UAAU,EAAE,MAAM,qBAAqB,CAAC;;AAO/D,wBAsCE"}
@@ -1,3 +0,0 @@
1
- import { Capability } from '@dxos/app-framework';
2
- export declare const State: Capability.LazyCapability<void, Capability.Capability<Capability.InterfaceDef<import("../..").NavTreeCapabilities.NavTreeStateStore>>, Error>;
3
- //# sourceMappingURL=index.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../../src/capabilities/state/index.ts"],"names":[],"mappings":"AAIA,OAAO,EAAE,UAAU,EAAE,MAAM,qBAAqB,CAAC;AAEjD,eAAO,MAAM,KAAK,+IAAoD,CAAC"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"state.d.ts","sourceRoot":"","sources":["../../../../../src/capabilities/state/state.ts"],"names":[],"mappings":"AAKA,OAAO,KAAK,MAAM,MAAM,eAAe,CAAC;AAExC,OAAO,EAAgB,UAAU,EAAE,MAAM,qBAAqB,CAAC;AAM/D,OAAO,EAAE,KAAK,mBAAmB,IAAI,EAAE,EAAuB,MAAM,aAAa,CAAC;;AA4BlF,wBA2GE"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"NavTreeContext.d.ts","sourceRoot":"","sources":["../../../../src/components/NavTreeContext.tsx"],"names":[],"mappings":"AAQA,OAAO,EAAE,KAAK,mBAAmB,EAAE,MAAM,SAAS,CAAC;AAEnD,eAAO,MAAM,cAAc,qDAAkD,CAAC;AAE9E,eAAO,MAAM,iBAAiB,2BAAiF,CAAC"}
@@ -1,7 +0,0 @@
1
- //
2
- // Copyright 2025 DXOS.org
3
- //
4
-
5
- import { Capability } from '@dxos/app-framework';
6
-
7
- export const AppGraphBuilder = Capability.lazy('AppGraphBuilder', () => import('./app-graph-builder'));
@@ -1,7 +0,0 @@
1
- //
2
- // Copyright 2025 DXOS.org
3
- //
4
-
5
- import { Capability } from '@dxos/app-framework';
6
-
7
- export const Keyboard = Capability.lazy('Keyboard', () => import('./keyboard'));
@@ -1,7 +0,0 @@
1
- //
2
- // Copyright 2025 DXOS.org
3
- //
4
-
5
- import { Capability } from '@dxos/app-framework';
6
-
7
- export const OperationResolver = Capability.lazy('OperationResolver', () => import('./operation-resolver'));
@@ -1,44 +0,0 @@
1
- //
2
- // Copyright 2025 DXOS.org
3
- //
4
-
5
- import * as Effect from 'effect/Effect';
6
-
7
- import { Capabilities, Capability } from '@dxos/app-framework';
8
- import { AppCapabilities, LayoutOperation } from '@dxos/app-toolkit';
9
- import { log } from '@dxos/log';
10
- import { OperationResolver } from '@dxos/operation';
11
- import { Graph } from '@dxos/plugin-graph';
12
-
13
- import { NavTreeCapabilities } from '../../types';
14
-
15
- export default Capability.makeModule(
16
- Effect.fnUntraced(function* () {
17
- return Capability.contributes(Capabilities.OperationResolver, [
18
- OperationResolver.make({
19
- operation: LayoutOperation.Expose,
20
- handler: Effect.fnUntraced(function* ({ subject }) {
21
- // TODO(wittjosiah): There's a lot of scenarios where this will fail.
22
- // Probably needs to be aware of the composer ontology to more reliably ensure objects are accessible.
23
- const { graph } = yield* Capability.get(AppCapabilities.AppGraph);
24
- const { getItem, setItem } = yield* Capability.get(NavTreeCapabilities.State);
25
- yield* Effect.tryPromise(() => Graph.waitForPath(graph, { target: subject }, { timeout: 1_000 })).pipe(
26
- Effect.andThen((path) => {
27
- [...Array(path.length)].forEach((_, index) => {
28
- const subpath = path.slice(0, index);
29
- const value = getItem(subpath);
30
- if (!value.open) {
31
- setItem(subpath, 'open', true);
32
- }
33
- });
34
- }),
35
- Effect.catchAll(() => {
36
- log('Path to node not found', { subject });
37
- return Effect.void;
38
- }),
39
- );
40
- }),
41
- }),
42
- ]);
43
- }),
44
- );
@@ -1,7 +0,0 @@
1
- //
2
- // Copyright 2025 DXOS.org
3
- //
4
-
5
- import { Capability } from '@dxos/app-framework';
6
-
7
- export const ReactSurface = Capability.lazy('ReactSurface', () => import('./react-surface'));
@@ -1,7 +0,0 @@
1
- //
2
- // Copyright 2025 DXOS.org
3
- //
4
-
5
- import { Capability } from '@dxos/app-framework';
6
-
7
- export const State = Capability.lazy('State', () => import('./state'));