@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.
- package/dist/lib/browser/index.mjs +115 -74
- package/dist/lib/browser/index.mjs.map +4 -4
- package/dist/lib/browser/meta.json +1 -1
- package/dist/lib/browser/translations.mjs +21 -0
- package/dist/lib/browser/translations.mjs.map +7 -0
- package/dist/types/src/capabilities/app-graph-builder.d.ts.map +1 -0
- package/dist/types/src/capabilities/index.d.ts +7 -5
- package/dist/types/src/capabilities/index.d.ts.map +1 -1
- package/dist/types/src/capabilities/keyboard.d.ts.map +1 -0
- package/dist/types/src/capabilities/operation-handler.d.ts +6 -0
- package/dist/types/src/capabilities/operation-handler.d.ts.map +1 -0
- package/dist/types/src/capabilities/react-surface.d.ts.map +1 -0
- package/dist/types/src/capabilities/{state/state.d.ts → state.d.ts} +1 -1
- package/dist/types/src/capabilities/state.d.ts.map +1 -0
- package/dist/types/src/components/NavTree/NavTree.d.ts.map +1 -1
- package/dist/types/src/components/NavTree/NavTree.stories.d.ts +9 -11
- package/dist/types/src/components/NavTree/NavTree.stories.d.ts.map +1 -1
- package/dist/types/src/components/{NavTreeContext.d.ts → NavTreeContext/NavTreeContext.d.ts} +1 -1
- package/dist/types/src/components/NavTreeContext/NavTreeContext.d.ts.map +1 -0
- package/dist/types/src/components/NavTreeContext/index.d.ts +2 -0
- package/dist/types/src/components/NavTreeContext/index.d.ts.map +1 -0
- package/dist/types/src/components/NavTreeItem/NavTreeItemAction.d.ts +7 -3
- package/dist/types/src/components/NavTreeItem/NavTreeItemAction.d.ts.map +1 -1
- package/dist/types/src/components/NavTreeItem/NavTreeItemAction.stories.d.ts +1 -1
- package/dist/types/src/components/NavTreeItem/NavTreeItemAction.stories.d.ts.map +1 -1
- package/dist/types/src/components/NavTreeItem/NavTreeItemColumns.d.ts.map +1 -1
- package/dist/types/src/components/Sidebar/L0Menu.d.ts.map +1 -1
- package/dist/types/src/components/Sidebar/L1Panel.d.ts.map +1 -1
- package/dist/types/src/components/Sidebar/L1Tabs.d.ts.map +1 -1
- package/dist/types/src/components/UserAccountAvatar/UserAccountAvatar.d.ts.map +1 -1
- package/dist/types/src/components/UserAccountAvatar/UserAccountAvatar.stories.d.ts.map +1 -1
- package/dist/types/src/components/types.d.ts +1 -2
- package/dist/types/src/components/types.d.ts.map +1 -1
- package/dist/types/src/containers/CommandsDialogContent/CommandsDialogContent.d.ts.map +1 -1
- package/dist/types/src/containers/CommandsDialogContent/CommandsDialogContent.stories.d.ts +28 -0
- package/dist/types/src/containers/CommandsDialogContent/CommandsDialogContent.stories.d.ts.map +1 -0
- package/dist/types/src/containers/CommandsDialogContent/index.d.ts +1 -2
- package/dist/types/src/containers/CommandsDialogContent/index.d.ts.map +1 -1
- package/dist/types/src/containers/CommandsTrigger/CommandsTrigger.d.ts.map +1 -1
- package/dist/types/src/containers/CommandsTrigger/index.d.ts +1 -2
- package/dist/types/src/containers/CommandsTrigger/index.d.ts.map +1 -1
- package/dist/types/src/containers/NavTreeContainer/NavTreeContainer.d.ts.map +1 -1
- package/dist/types/src/containers/NavTreeContainer/index.d.ts +2 -2
- package/dist/types/src/containers/NavTreeContainer/index.d.ts.map +1 -1
- package/dist/types/src/containers/NavTreeDocumentTitle/NavTreeDocumentTitle.d.ts.map +1 -1
- package/dist/types/src/containers/NavTreeDocumentTitle/index.d.ts +1 -2
- package/dist/types/src/containers/NavTreeDocumentTitle/index.d.ts.map +1 -1
- package/dist/types/src/containers/index.d.ts +1 -1
- package/dist/types/src/containers/index.d.ts.map +1 -1
- package/dist/types/src/experimental/Tree.d.ts +2 -2
- package/dist/types/src/experimental/Tree.d.ts.map +1 -1
- package/dist/types/src/experimental/Tree.stories.d.ts.map +1 -1
- package/dist/types/src/hooks/useActions.d.ts +2 -4
- package/dist/types/src/hooks/useActions.d.ts.map +1 -1
- package/dist/types/src/hooks/useLoadDescendents.d.ts.map +1 -1
- package/dist/types/src/hooks/useNavTreeModel.d.ts +1 -1
- package/dist/types/src/hooks/useNavTreeModel.d.ts.map +1 -1
- package/dist/types/src/hooks/useNavTreeState.d.ts +2 -6
- package/dist/types/src/hooks/useNavTreeState.d.ts.map +1 -1
- package/dist/types/src/meta.d.ts.map +1 -1
- package/dist/types/src/operations/expose.d.ts +5 -0
- package/dist/types/src/operations/expose.d.ts.map +1 -0
- package/dist/types/src/operations/index.d.ts +3 -0
- package/dist/types/src/operations/index.d.ts.map +1 -0
- package/dist/types/src/testing/app-graph-builder.d.ts.map +1 -1
- package/dist/types/src/testing/generator.d.ts.map +1 -1
- package/dist/types/src/testing/update-state.d.ts.map +1 -1
- package/dist/types/src/translations.d.ts +8 -11
- package/dist/types/src/translations.d.ts.map +1 -1
- package/dist/types/src/types/capabilities.d.ts +1 -2
- package/dist/types/src/types/capabilities.d.ts.map +1 -1
- package/dist/types/src/types/events.d.ts.map +1 -1
- package/dist/types/src/util.d.ts +2 -2
- package/dist/types/src/util.d.ts.map +1 -1
- package/dist/types/tsconfig.tsbuildinfo +1 -1
- package/package.json +57 -43
- package/src/NavTreePlugin.tsx +7 -7
- package/src/capabilities/{app-graph-builder/app-graph-builder.ts → app-graph-builder.ts} +7 -7
- package/src/capabilities/index.ts +11 -5
- package/src/capabilities/{keyboard/keyboard.ts → keyboard.ts} +2 -2
- package/src/capabilities/operation-handler.ts +16 -0
- package/src/capabilities/{react-surface/react-surface.tsx → react-surface.tsx} +8 -8
- package/src/capabilities/{state/state.ts → state.ts} +5 -5
- package/src/components/NavTree/NavTree.stories.tsx +17 -16
- package/src/components/NavTree/NavTree.tsx +3 -2
- package/src/components/{NavTreeContext.tsx → NavTreeContext/NavTreeContext.tsx} +1 -1
- package/src/components/NavTreeContext/index.ts +5 -0
- package/src/components/NavTreeItem/NavTreeItemAction.stories.tsx +6 -8
- package/src/components/NavTreeItem/NavTreeItemAction.tsx +62 -45
- package/src/components/NavTreeItem/NavTreeItemColumns.tsx +7 -5
- package/src/components/Sidebar/L0Menu.tsx +49 -74
- package/src/components/Sidebar/L1Panel.tsx +97 -134
- package/src/components/Sidebar/L1Tabs.tsx +0 -1
- package/src/components/types.ts +1 -2
- package/src/containers/CommandsDialogContent/CommandsDialogContent.stories.tsx +46 -0
- package/src/containers/CommandsDialogContent/CommandsDialogContent.tsx +52 -58
- package/src/containers/CommandsDialogContent/index.ts +1 -3
- package/src/containers/CommandsTrigger/CommandsTrigger.tsx +7 -5
- package/src/containers/CommandsTrigger/index.ts +1 -3
- package/src/containers/NavTreeContainer/NavTreeContainer.tsx +28 -27
- package/src/containers/NavTreeContainer/index.ts +2 -3
- package/src/containers/NavTreeDocumentTitle/NavTreeDocumentTitle.tsx +2 -2
- package/src/containers/NavTreeDocumentTitle/index.ts +1 -3
- package/src/containers/index.ts +1 -1
- package/src/experimental/Tree.stories.tsx +27 -27
- package/src/hooks/useActions.ts +18 -22
- package/src/hooks/useNavTreeModel.ts +10 -4
- package/src/hooks/useNavTreeState.ts +2 -9
- package/src/meta.ts +2 -2
- package/src/operations/expose.ts +42 -0
- package/src/operations/index.ts +7 -0
- package/src/testing/app-graph-builder.ts +40 -36
- package/src/testing/generator.ts +22 -22
- package/src/translations.ts +8 -10
- package/src/types/capabilities.ts +4 -4
- package/src/types/events.ts +1 -1
- package/src/util.ts +2 -2
- package/dist/lib/browser/CommandsDialogContent-A27AKTHH.mjs +0 -111
- package/dist/lib/browser/CommandsDialogContent-A27AKTHH.mjs.map +0 -7
- package/dist/lib/browser/CommandsTrigger-HBZYQCGV.mjs +0 -33
- package/dist/lib/browser/CommandsTrigger-HBZYQCGV.mjs.map +0 -7
- package/dist/lib/browser/NavTreeContainer-B5K4FUJS.mjs +0 -12
- package/dist/lib/browser/NavTreeContainer-B5K4FUJS.mjs.map +0 -7
- package/dist/lib/browser/NavTreeDocumentTitle-GEE3URWH.mjs +0 -26
- package/dist/lib/browser/NavTreeDocumentTitle-GEE3URWH.mjs.map +0 -7
- package/dist/lib/browser/app-graph-builder-XGA4GPGL.mjs +0 -44
- package/dist/lib/browser/app-graph-builder-XGA4GPGL.mjs.map +0 -7
- package/dist/lib/browser/chunk-DQCYMXEU.mjs +0 -1426
- package/dist/lib/browser/chunk-DQCYMXEU.mjs.map +0 -7
- package/dist/lib/browser/chunk-H3OJ4WLF.mjs +0 -14
- package/dist/lib/browser/chunk-H3OJ4WLF.mjs.map +0 -7
- package/dist/lib/browser/chunk-X2HDG62A.mjs +0 -23
- package/dist/lib/browser/chunk-X2HDG62A.mjs.map +0 -7
- package/dist/lib/browser/chunk-YKTYPINZ.mjs +0 -19
- package/dist/lib/browser/chunk-YKTYPINZ.mjs.map +0 -7
- package/dist/lib/browser/keyboard-OJZC54PK.mjs +0 -54
- package/dist/lib/browser/keyboard-OJZC54PK.mjs.map +0 -7
- package/dist/lib/browser/operation-resolver-BNAMYOHF.mjs +0 -53
- package/dist/lib/browser/operation-resolver-BNAMYOHF.mjs.map +0 -7
- package/dist/lib/browser/react-surface-AYHOAJ4I.mjs +0 -59
- package/dist/lib/browser/react-surface-AYHOAJ4I.mjs.map +0 -7
- package/dist/lib/browser/state-AC3EETN7.mjs +0 -131
- package/dist/lib/browser/state-AC3EETN7.mjs.map +0 -7
- package/dist/types/src/capabilities/app-graph-builder/app-graph-builder.d.ts.map +0 -1
- package/dist/types/src/capabilities/app-graph-builder/index.d.ts +0 -3
- package/dist/types/src/capabilities/app-graph-builder/index.d.ts.map +0 -1
- package/dist/types/src/capabilities/keyboard/index.d.ts +0 -3
- package/dist/types/src/capabilities/keyboard/index.d.ts.map +0 -1
- package/dist/types/src/capabilities/keyboard/keyboard.d.ts.map +0 -1
- package/dist/types/src/capabilities/operation-resolver/index.d.ts +0 -3
- package/dist/types/src/capabilities/operation-resolver/index.d.ts.map +0 -1
- package/dist/types/src/capabilities/operation-resolver/operation-resolver.d.ts +0 -5
- package/dist/types/src/capabilities/operation-resolver/operation-resolver.d.ts.map +0 -1
- package/dist/types/src/capabilities/react-surface/index.d.ts +0 -3
- package/dist/types/src/capabilities/react-surface/index.d.ts.map +0 -1
- package/dist/types/src/capabilities/react-surface/react-surface.d.ts.map +0 -1
- package/dist/types/src/capabilities/state/index.d.ts +0 -3
- package/dist/types/src/capabilities/state/index.d.ts.map +0 -1
- package/dist/types/src/capabilities/state/state.d.ts.map +0 -1
- package/dist/types/src/components/NavTreeContext.d.ts.map +0 -1
- package/src/capabilities/app-graph-builder/index.ts +0 -7
- package/src/capabilities/keyboard/index.ts +0 -7
- package/src/capabilities/operation-resolver/index.ts +0 -7
- package/src/capabilities/operation-resolver/operation-resolver.ts +0 -44
- package/src/capabilities/react-surface/index.ts +0 -7
- package/src/capabilities/state/index.ts +0 -7
- /package/dist/types/src/capabilities/{app-graph-builder/app-graph-builder.d.ts → app-graph-builder.d.ts} +0 -0
- /package/dist/types/src/capabilities/{keyboard/keyboard.d.ts → keyboard.d.ts} +0 -0
- /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 +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 +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 +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 +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,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
|
-
);
|
|
File without changes
|
|
File without changes
|
/package/dist/types/src/capabilities/{react-surface/react-surface.d.ts → react-surface.d.ts}
RENAMED
|
File without changes
|