@dxos/plugin-navtree 0.7.4 → 0.7.5-labs.5f04cf6

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 (84) hide show
  1. package/dist/lib/browser/app-graph-builder-OF4MMBLH.mjs +42 -0
  2. package/dist/lib/browser/app-graph-builder-OF4MMBLH.mjs.map +7 -0
  3. package/dist/lib/browser/chunk-IMGT2LAL.mjs +658 -0
  4. package/dist/lib/browser/chunk-IMGT2LAL.mjs.map +7 -0
  5. package/dist/lib/browser/{chunk-PSVCPL4T.mjs → chunk-KOXMEAOS.mjs} +5 -3
  6. package/dist/lib/browser/chunk-KOXMEAOS.mjs.map +7 -0
  7. package/dist/lib/browser/chunk-OI7AAA6Q.mjs +15 -0
  8. package/dist/lib/browser/chunk-OI7AAA6Q.mjs.map +7 -0
  9. package/dist/lib/browser/index.mjs +106 -1212
  10. package/dist/lib/browser/index.mjs.map +4 -4
  11. package/dist/lib/browser/intent-resolver-74JPWYBP.mjs +42 -0
  12. package/dist/lib/browser/intent-resolver-74JPWYBP.mjs.map +7 -0
  13. package/dist/lib/browser/keyboard-MUBRTPI5.mjs +46 -0
  14. package/dist/lib/browser/keyboard-MUBRTPI5.mjs.map +7 -0
  15. package/dist/lib/browser/meta.json +1 -1
  16. package/dist/lib/browser/react-surface-6QWXI53A.mjs +189 -0
  17. package/dist/lib/browser/react-surface-6QWXI53A.mjs.map +7 -0
  18. package/dist/lib/browser/state-HT65TAYL.mjs +111 -0
  19. package/dist/lib/browser/state-HT65TAYL.mjs.map +7 -0
  20. package/dist/types/src/NavTreePlugin.d.ts +1 -3
  21. package/dist/types/src/NavTreePlugin.d.ts.map +1 -1
  22. package/dist/types/src/capabilities/app-graph-builder.d.ts +181 -0
  23. package/dist/types/src/capabilities/app-graph-builder.d.ts.map +1 -0
  24. package/dist/types/src/capabilities/capabilities.d.ts +17 -0
  25. package/dist/types/src/capabilities/capabilities.d.ts.map +1 -0
  26. package/dist/types/src/capabilities/index.d.ts +195 -0
  27. package/dist/types/src/capabilities/index.d.ts.map +1 -0
  28. package/dist/types/src/capabilities/intent-resolver.d.ts +4 -0
  29. package/dist/types/src/capabilities/intent-resolver.d.ts.map +1 -0
  30. package/dist/types/src/capabilities/keyboard.d.ts +4 -0
  31. package/dist/types/src/capabilities/keyboard.d.ts.map +1 -0
  32. package/dist/types/src/capabilities/react-surface.d.ts +4 -0
  33. package/dist/types/src/capabilities/react-surface.d.ts.map +1 -0
  34. package/dist/types/src/capabilities/state.d.ts +17 -0
  35. package/dist/types/src/capabilities/state.d.ts.map +1 -0
  36. package/dist/types/src/components/CommandsTrigger.d.ts.map +1 -1
  37. package/dist/types/src/components/NavTree.d.ts +2 -2
  38. package/dist/types/src/components/NavTree.d.ts.map +1 -1
  39. package/dist/types/src/components/NavTreeContainer.d.ts.map +1 -1
  40. package/dist/types/src/components/NavTreeFooter.d.ts.map +1 -1
  41. package/dist/types/src/components/NavTreeItemAction.d.ts +4 -8
  42. package/dist/types/src/components/NavTreeItemAction.d.ts.map +1 -1
  43. package/dist/types/src/components/NavTreeItemAction.stories.d.ts +0 -5
  44. package/dist/types/src/components/NavTreeItemAction.stories.d.ts.map +1 -1
  45. package/dist/types/src/components/NotchStart.d.ts.map +1 -1
  46. package/dist/types/src/components/index.d.ts +1 -0
  47. package/dist/types/src/components/index.d.ts.map +1 -1
  48. package/dist/types/src/events.d.ts +4 -0
  49. package/dist/types/src/events.d.ts.map +1 -0
  50. package/dist/types/src/index.d.ts +3 -2
  51. package/dist/types/src/index.d.ts.map +1 -1
  52. package/dist/types/src/meta.d.ts +2 -2
  53. package/dist/types/src/meta.d.ts.map +1 -1
  54. package/dist/types/src/translations.d.ts +0 -1
  55. package/dist/types/src/translations.d.ts.map +1 -1
  56. package/dist/types/src/types.d.ts +1 -1
  57. package/dist/types/src/types.d.ts.map +1 -1
  58. package/dist/types/tsconfig.tsbuildinfo +1 -0
  59. package/package.json +31 -38
  60. package/src/NavTreePlugin.tsx +70 -287
  61. package/src/capabilities/app-graph-builder.ts +40 -0
  62. package/src/capabilities/capabilities.ts +18 -0
  63. package/src/capabilities/index.ts +13 -0
  64. package/src/capabilities/intent-resolver.ts +30 -0
  65. package/src/capabilities/keyboard.ts +54 -0
  66. package/src/capabilities/react-surface.tsx +82 -0
  67. package/src/capabilities/state.ts +100 -0
  68. package/src/components/CommandsDialog.tsx +3 -3
  69. package/src/components/CommandsTrigger.tsx +11 -8
  70. package/src/components/NavTree.tsx +6 -11
  71. package/src/components/NavTreeContainer.tsx +22 -56
  72. package/src/components/NavTreeFooter.tsx +21 -18
  73. package/src/components/NavTreeItemAction.stories.tsx +0 -2
  74. package/src/components/NavTreeItemAction.tsx +51 -317
  75. package/src/components/NotchStart.tsx +8 -7
  76. package/src/components/index.ts +1 -0
  77. package/src/events.ts +11 -0
  78. package/src/index.ts +3 -4
  79. package/src/meta.ts +3 -1
  80. package/src/translations.ts +0 -1
  81. package/src/types.ts +1 -1
  82. package/dist/lib/browser/chunk-PSVCPL4T.mjs.map +0 -7
  83. package/dist/lib/browser/meta.mjs +0 -11
  84. package/dist/lib/browser/meta.mjs.map +0 -7
@@ -0,0 +1,189 @@
1
+ import {
2
+ CommandsDialogContent,
3
+ CommandsTrigger,
4
+ NavTreeContainer,
5
+ NavTreeDocumentTitle,
6
+ NotchStart,
7
+ expandChildrenAndActions
8
+ } from "./chunk-IMGT2LAL.mjs";
9
+ import {
10
+ NavTreeCapabilities
11
+ } from "./chunk-OI7AAA6Q.mjs";
12
+ import {
13
+ COMMANDS_DIALOG,
14
+ NAVTREE_PLUGIN
15
+ } from "./chunk-KOXMEAOS.mjs";
16
+
17
+ // packages/plugins/plugin-navtree/src/capabilities/react-surface.tsx
18
+ import React2, { useCallback } from "react";
19
+ import { createSurface, Capabilities, contributes, useCapability } from "@dxos/app-framework";
20
+ import { isGraphNode } from "@dxos/plugin-graph";
21
+
22
+ // packages/plugins/plugin-navtree/src/components/NavTreeFooter.tsx
23
+ import { formatDistance } from "date-fns/formatDistance";
24
+ import React from "react";
25
+ import { SettingsAction, useIntentDispatcher, createIntent, usePluginManager } from "@dxos/app-framework";
26
+ import { useConfig } from "@dxos/react-client";
27
+ import { Button, Link, Message, Popover, Tooltip, Trans, useDefaultValue, useSidebars, useTranslation, Icon, IconButton } from "@dxos/react-ui";
28
+ import { LayoutControls } from "@dxos/react-ui-stack";
29
+ import { mx } from "@dxos/react-ui-theme";
30
+ var buttonStyles = "!pli-1.5 text-xs font-normal";
31
+ var repo = "https://github.com/dxos/dxos";
32
+ var VERSION_REGEX = /([\d.]+)/;
33
+ var NavTreeFooter = (props) => {
34
+ const layoutPart = useDefaultValue(props.layoutPart, () => "sidebar");
35
+ const config = useConfig();
36
+ const { t } = useTranslation(NAVTREE_PLUGIN);
37
+ const { navigationSidebarOpen } = useSidebars(NAVTREE_PLUGIN);
38
+ const { dispatchPromise: dispatch } = useIntentDispatcher();
39
+ const { version, timestamp, commitHash } = config.values.runtime?.app?.build ?? {};
40
+ const manager = usePluginManager();
41
+ const [_, v] = version?.match(VERSION_REGEX) ?? [];
42
+ const releaseUrl = config.values.runtime?.app?.env?.DX_ENVIRONMENT === "production" ? `${repo}/releases/tag/v${version}` : `${repo}/commit/${commitHash}`;
43
+ const previewUrl = "https://docs.dxos.org/composer#technology-preview";
44
+ return /* @__PURE__ */ React.createElement("div", {
45
+ role: "none",
46
+ className: mx("flex pbe-[env(safe-area-inset-bottom)] box-content justify-end", layoutPart === "complementary" && "md:justify-end flex-row-reverse")
47
+ }, /* @__PURE__ */ React.createElement(Popover.Root, null, /* @__PURE__ */ React.createElement(Popover.Trigger, {
48
+ asChild: true
49
+ }, /* @__PURE__ */ React.createElement(Button, {
50
+ variant: "ghost",
51
+ classNames: buttonStyles,
52
+ ...!navigationSidebarOpen && {
53
+ tabIndex: -1
54
+ }
55
+ }, "v", v)), /* @__PURE__ */ React.createElement(Popover.Portal, null, /* @__PURE__ */ React.createElement(Popover.Content, {
56
+ side: "top",
57
+ role: "message",
58
+ classNames: "z-[12] bg-warning-500 max-is-[min(calc(100vw-16px),40ch)]"
59
+ }, /* @__PURE__ */ React.createElement(Message.Root, {
60
+ valence: "warning",
61
+ className: "rounded-be-none p-5"
62
+ }, /* @__PURE__ */ React.createElement(Message.Title, null, /* @__PURE__ */ React.createElement(Icon, {
63
+ icon: "ph--warning--duotone",
64
+ size: 6,
65
+ classNames: "inline mie-2"
66
+ }), /* @__PURE__ */ React.createElement("span", null, t("warning title"))), /* @__PURE__ */ React.createElement(Message.Body, null, t("technology preview message"), /* @__PURE__ */ React.createElement("br", null), /* @__PURE__ */ React.createElement(Link, {
67
+ href: previewUrl,
68
+ target: "_blank",
69
+ rel: "noreferrer",
70
+ variant: "neutral"
71
+ }, t("learn more label"), /* @__PURE__ */ React.createElement(Icon, {
72
+ icon: "ph--arrow-square-out--bold",
73
+ classNames: "inline mis-1"
74
+ })))), /* @__PURE__ */ React.createElement("div", {
75
+ role: "none",
76
+ className: "plb-4 pli-5 space-b-2 text-baseText"
77
+ }, timestamp && /* @__PURE__ */ React.createElement("p", null, t("released message", {
78
+ released: formatDistance(new Date(timestamp), /* @__PURE__ */ new Date(), {
79
+ addSuffix: true
80
+ })
81
+ }), /* @__PURE__ */ React.createElement("br", null), /* @__PURE__ */ React.createElement(Link, {
82
+ href: releaseUrl,
83
+ target: "_blank",
84
+ rel: "noreferrer",
85
+ variant: "neutral"
86
+ }, t("see release label"), /* @__PURE__ */ React.createElement(Icon, {
87
+ icon: "ph--arrow-square-out--bold",
88
+ classNames: "inline mis-1"
89
+ }))), /* @__PURE__ */ React.createElement("p", null, /* @__PURE__ */ React.createElement(Trans, {
90
+ t,
91
+ i18nKey: "powered by dxos message",
92
+ components: {
93
+ dxos: /* @__PURE__ */ React.createElement(Link, {
94
+ href: "https://dxos.org",
95
+ target: "_blank",
96
+ rel: "noreferrer",
97
+ variant: "neutral"
98
+ })
99
+ }
100
+ }))), /* @__PURE__ */ React.createElement(Popover.Arrow, null)))), /* @__PURE__ */ React.createElement(Tooltip.Root, null, /* @__PURE__ */ React.createElement(Tooltip.Trigger, {
101
+ asChild: true
102
+ }, /* @__PURE__ */ React.createElement(IconButton, {
103
+ icon: "ph--gear-six--regular",
104
+ iconOnly: true,
105
+ label: t("open settings label"),
106
+ size: 4,
107
+ variant: "ghost",
108
+ classNames: buttonStyles,
109
+ "data-testid": "treeView.openSettings",
110
+ "data-joyride": "welcome/settings",
111
+ ...!navigationSidebarOpen && {
112
+ tabIndex: -1
113
+ },
114
+ iconClassNames: "rotate-90",
115
+ onClick: () => dispatch(createIntent(SettingsAction.Open))
116
+ })), /* @__PURE__ */ React.createElement(Tooltip.Portal, null, /* @__PURE__ */ React.createElement(Tooltip.Content, {
117
+ classNames: "z-[12]"
118
+ }, t("open settings label"), /* @__PURE__ */ React.createElement(Tooltip.Arrow, null)))), manager.enabled.includes("dxos.org/plugin/deck") && /* @__PURE__ */ React.createElement(LayoutControls, {
119
+ variant: "hide-disabled",
120
+ capabilities: {
121
+ incrementStart: false,
122
+ incrementEnd: false
123
+ },
124
+ onClick: (_type) => {
125
+ }
126
+ }));
127
+ };
128
+
129
+ // packages/plugins/plugin-navtree/src/capabilities/react-surface.tsx
130
+ var react_surface_default = () => contributes(Capabilities.ReactSurface, [
131
+ createSurface({
132
+ id: COMMANDS_DIALOG,
133
+ role: "dialog",
134
+ filter: (data) => data.component === COMMANDS_DIALOG,
135
+ component: ({ data }) => /* @__PURE__ */ React2.createElement(CommandsDialogContent, {
136
+ selected: data.subject
137
+ })
138
+ }),
139
+ createSurface({
140
+ id: `${NAVTREE_PLUGIN}/navigation`,
141
+ role: "navigation",
142
+ component: ({ data }) => {
143
+ const { graph } = useCapability(Capabilities.AppGraph);
144
+ const { isOpen, isCurrent, setItem } = useCapability(NavTreeCapabilities.State);
145
+ const handleOpenChange = useCallback(({ item: { id }, path, open }) => {
146
+ setItem(path, "open", open);
147
+ if (graph) {
148
+ const node = graph.findNode(id);
149
+ return node && expandChildrenAndActions(graph, node);
150
+ }
151
+ }, [
152
+ graph
153
+ ]);
154
+ return /* @__PURE__ */ React2.createElement(NavTreeContainer, {
155
+ isOpen,
156
+ isCurrent,
157
+ onOpenChange: handleOpenChange,
158
+ popoverAnchorId: data.popoverAnchorId
159
+ });
160
+ }
161
+ }),
162
+ createSurface({
163
+ id: `${NAVTREE_PLUGIN}/document-title`,
164
+ role: "document-title",
165
+ component: ({ data }) => /* @__PURE__ */ React2.createElement(NavTreeDocumentTitle, {
166
+ node: isGraphNode(data.subject) ? data.subject : void 0
167
+ })
168
+ }),
169
+ createSurface({
170
+ id: `${NAVTREE_PLUGIN}/notch-start`,
171
+ role: "notch-start",
172
+ component: () => /* @__PURE__ */ React2.createElement(NotchStart, null)
173
+ }),
174
+ createSurface({
175
+ id: `${NAVTREE_PLUGIN}/header-end`,
176
+ role: "header-end",
177
+ component: () => /* @__PURE__ */ React2.createElement(NavTreeFooter, null)
178
+ }),
179
+ createSurface({
180
+ id: `${NAVTREE_PLUGIN}/search-input`,
181
+ role: "search-input",
182
+ disposition: "fallback",
183
+ component: () => /* @__PURE__ */ React2.createElement(CommandsTrigger, null)
184
+ })
185
+ ]);
186
+ export {
187
+ react_surface_default as default
188
+ };
189
+ //# sourceMappingURL=react-surface-6QWXI53A.mjs.map
@@ -0,0 +1,7 @@
1
+ {
2
+ "version": 3,
3
+ "sources": ["../../../src/capabilities/react-surface.tsx", "../../../src/components/NavTreeFooter.tsx"],
4
+ "sourcesContent": ["//\n// Copyright 2025 DXOS.org\n//\n\nimport React, { useCallback } from 'react';\n\nimport { createSurface, Capabilities, contributes, useCapability } from '@dxos/app-framework';\nimport { isGraphNode, type Node } from '@dxos/plugin-graph';\n\nimport { NavTreeCapabilities } from './capabilities';\nimport {\n CommandsDialogContent,\n CommandsTrigger,\n NavTreeDocumentTitle,\n NotchStart,\n NavTreeContainer,\n} from '../components';\nimport { NavTreeFooter } from '../components/NavTreeFooter';\nimport { COMMANDS_DIALOG, NAVTREE_PLUGIN } from '../meta';\nimport { type NavTreeItemGraphNode } from '../types';\nimport { expandChildrenAndActions } from '../util';\n\nexport default () =>\n contributes(Capabilities.ReactSurface, [\n createSurface({\n id: COMMANDS_DIALOG,\n role: 'dialog',\n filter: (data): data is { subject?: string } => data.component === COMMANDS_DIALOG,\n component: ({ data }) => <CommandsDialogContent selected={data.subject} />,\n }),\n createSurface({\n id: `${NAVTREE_PLUGIN}/navigation`,\n role: 'navigation',\n component: ({ data }) => {\n const { graph } = useCapability(Capabilities.AppGraph);\n const { isOpen, isCurrent, setItem } = useCapability(NavTreeCapabilities.State);\n\n const handleOpenChange = useCallback(\n ({ item: { id }, path, open }: { item: Node; path: string[]; open: boolean }) => {\n // TODO(thure): This might become a localstorage leak; openItemIds that no longer exist should be removed from this map.\n setItem(path, 'open', open);\n\n if (graph) {\n const node = graph.findNode(id);\n return node && expandChildrenAndActions(graph, node as NavTreeItemGraphNode);\n }\n },\n [graph],\n );\n\n return (\n <NavTreeContainer\n isOpen={isOpen}\n isCurrent={isCurrent}\n onOpenChange={handleOpenChange}\n popoverAnchorId={data.popoverAnchorId as string | undefined}\n />\n );\n },\n }),\n createSurface({\n id: `${NAVTREE_PLUGIN}/document-title`,\n role: 'document-title',\n component: ({ data }) => <NavTreeDocumentTitle node={isGraphNode(data.subject) ? data.subject : undefined} />,\n }),\n createSurface({\n id: `${NAVTREE_PLUGIN}/notch-start`,\n role: 'notch-start',\n component: () => <NotchStart />,\n }),\n createSurface({\n id: `${NAVTREE_PLUGIN}/header-end`,\n role: 'header-end',\n component: () => <NavTreeFooter />,\n }),\n createSurface({\n id: `${NAVTREE_PLUGIN}/search-input`,\n role: 'search-input',\n disposition: 'fallback',\n component: () => <CommandsTrigger />,\n }),\n ]);\n", "//\n// Copyright 2024 DXOS.org\n//\n\nimport { formatDistance } from 'date-fns/formatDistance';\nimport React from 'react';\n\nimport {\n type LayoutPart,\n SettingsAction,\n useIntentDispatcher,\n createIntent,\n usePluginManager,\n} from '@dxos/app-framework';\nimport { useConfig } from '@dxos/react-client';\nimport {\n Button,\n Link,\n Message,\n Popover,\n Tooltip,\n Trans,\n useDefaultValue,\n useSidebars,\n useTranslation,\n Icon,\n IconButton,\n} from '@dxos/react-ui';\nimport { LayoutControls } from '@dxos/react-ui-stack';\nimport { mx } from '@dxos/react-ui-theme';\n\nimport { NAVTREE_PLUGIN } from '../meta';\n\nconst buttonStyles = '!pli-1.5 text-xs font-normal';\n\nconst repo = 'https://github.com/dxos/dxos';\n\nconst VERSION_REGEX = /([\\d.]+)/;\n\nexport const NavTreeFooter = (props: { layoutPart?: LayoutPart }) => {\n const layoutPart = useDefaultValue(props.layoutPart, () => 'sidebar');\n const config = useConfig();\n const { t } = useTranslation(NAVTREE_PLUGIN);\n const { navigationSidebarOpen } = useSidebars(NAVTREE_PLUGIN);\n const { dispatchPromise: dispatch } = useIntentDispatcher();\n const { version, timestamp, commitHash } = config.values.runtime?.app?.build ?? {};\n const manager = usePluginManager();\n const [_, v] = version?.match(VERSION_REGEX) ?? [];\n\n const releaseUrl =\n config.values.runtime?.app?.env?.DX_ENVIRONMENT === 'production'\n ? `${repo}/releases/tag/v${version}`\n : `${repo}/commit/${commitHash}`;\n\n const previewUrl = 'https://docs.dxos.org/composer#technology-preview';\n\n return (\n <div\n role='none'\n className={mx(\n 'flex pbe-[env(safe-area-inset-bottom)] box-content justify-end',\n layoutPart === 'complementary' && 'md:justify-end flex-row-reverse',\n )}\n >\n <Popover.Root>\n <Popover.Trigger asChild>\n <Button variant='ghost' classNames={buttonStyles} {...(!navigationSidebarOpen && { tabIndex: -1 })}>\n v{v}\n </Button>\n </Popover.Trigger>\n <Popover.Portal>\n <Popover.Content\n side='top'\n role='message'\n classNames='z-[12] bg-warning-500 max-is-[min(calc(100vw-16px),40ch)]'\n >\n <Message.Root valence='warning' className='rounded-be-none p-5'>\n <Message.Title>\n <Icon icon='ph--warning--duotone' size={6} classNames='inline mie-2' />\n <span>{t('warning title')}</span>\n </Message.Title>\n <Message.Body>\n {t('technology preview message')}\n <br />\n <Link href={previewUrl} target='_blank' rel='noreferrer' variant='neutral'>\n {t('learn more label')}\n <Icon icon='ph--arrow-square-out--bold' classNames='inline mis-1' />\n </Link>\n </Message.Body>\n </Message.Root>\n <div role='none' className='plb-4 pli-5 space-b-2 text-baseText'>\n {timestamp && (\n <p>\n {t('released message', {\n released: formatDistance(new Date(timestamp), new Date(), { addSuffix: true }),\n })}\n <br />\n <Link href={releaseUrl} target='_blank' rel='noreferrer' variant='neutral'>\n {t('see release label')}\n <Icon icon='ph--arrow-square-out--bold' classNames='inline mis-1' />\n </Link>\n </p>\n )}\n <p>\n <Trans\n {...{\n t,\n i18nKey: 'powered by dxos message',\n components: {\n dxos: <Link href='https://dxos.org' target='_blank' rel='noreferrer' variant='neutral' />,\n },\n }}\n />\n </p>\n </div>\n <Popover.Arrow />\n </Popover.Content>\n </Popover.Portal>\n </Popover.Root>\n\n <Tooltip.Root>\n <Tooltip.Trigger asChild>\n {/* TODO(burdon): Reconcile with action created by LayoutPlugin. */}\n <IconButton\n icon='ph--gear-six--regular'\n iconOnly\n label={t('open settings label')}\n size={4}\n variant='ghost'\n classNames={buttonStyles}\n data-testid='treeView.openSettings'\n data-joyride='welcome/settings'\n {...(!navigationSidebarOpen && { tabIndex: -1 })}\n iconClassNames='rotate-90'\n onClick={() => dispatch(createIntent(SettingsAction.Open))}\n />\n </Tooltip.Trigger>\n <Tooltip.Portal>\n <Tooltip.Content classNames='z-[12]'>\n {t('open settings label')}\n <Tooltip.Arrow />\n </Tooltip.Content>\n </Tooltip.Portal>\n </Tooltip.Root>\n\n {/* NOTE(thure): Unpinning from the NavTree’s default position in Deck is temporarily disabled. */}\n {manager.enabled.includes('dxos.org/plugin/deck') && (\n <LayoutControls\n variant='hide-disabled'\n capabilities={{\n incrementStart: false,\n incrementEnd: false,\n }}\n onClick={(_type) => {\n // TODO(Zan): If we inmplement pinning again, we should dispatch here.\n }}\n />\n )}\n </div>\n );\n};\n"],
5
+ "mappings": "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",
6
+ "names": ["React", "useCallback", "createSurface", "Capabilities", "contributes", "useCapability", "isGraphNode", "formatDistance", "React", "SettingsAction", "useIntentDispatcher", "createIntent", "usePluginManager", "useConfig", "Button", "Link", "Message", "Popover", "Tooltip", "Trans", "useDefaultValue", "useSidebars", "useTranslation", "Icon", "IconButton", "LayoutControls", "mx", "buttonStyles", "repo", "VERSION_REGEX", "NavTreeFooter", "props", "layoutPart", "useDefaultValue", "config", "useConfig", "t", "useTranslation", "NAVTREE_PLUGIN", "navigationSidebarOpen", "useSidebars", "dispatchPromise", "dispatch", "useIntentDispatcher", "version", "timestamp", "commitHash", "values", "runtime", "app", "build", "manager", "usePluginManager", "_", "v", "match", "releaseUrl", "env", "DX_ENVIRONMENT", "previewUrl", "div", "role", "className", "mx", "Popover", "Root", "Trigger", "asChild", "Button", "variant", "classNames", "tabIndex", "Portal", "Content", "side", "Message", "valence", "Title", "Icon", "icon", "size", "span", "Body", "br", "Link", "href", "target", "rel", "p", "released", "formatDistance", "Date", "addSuffix", "Trans", "i18nKey", "components", "dxos", "Arrow", "Tooltip", "IconButton", "iconOnly", "label", "data-testid", "data-joyride", "iconClassNames", "onClick", "createIntent", "SettingsAction", "Open", "enabled", "includes", "LayoutControls", "capabilities", "incrementStart", "incrementEnd", "_type", "contributes", "Capabilities", "ReactSurface", "createSurface", "id", "COMMANDS_DIALOG", "role", "filter", "data", "component", "React", "CommandsDialogContent", "selected", "subject", "NAVTREE_PLUGIN", "graph", "useCapability", "AppGraph", "isOpen", "isCurrent", "setItem", "NavTreeCapabilities", "State", "handleOpenChange", "useCallback", "item", "path", "open", "node", "findNode", "expandChildrenAndActions", "NavTreeContainer", "onOpenChange", "popoverAnchorId", "NavTreeDocumentTitle", "isGraphNode", "undefined", "NotchStart", "NavTreeFooter", "disposition", "CommandsTrigger"]
7
+ }
@@ -0,0 +1,111 @@
1
+ import {
2
+ NavTreeCapabilities
3
+ } from "./chunk-OI7AAA6Q.mjs";
4
+ import {
5
+ NAVTREE_PLUGIN
6
+ } from "./chunk-KOXMEAOS.mjs";
7
+
8
+ // packages/plugins/plugin-navtree/src/capabilities/state.ts
9
+ import { effect } from "@preact/signals-core";
10
+ import { Capabilities, contributes } from "@dxos/app-framework";
11
+ import { create } from "@dxos/live-object";
12
+ import { Path } from "@dxos/react-ui-mosaic";
13
+ var KEY = `${NAVTREE_PLUGIN}/state`;
14
+ var getInitialState = () => {
15
+ const stringified = localStorage.getItem(KEY);
16
+ if (!stringified) {
17
+ return;
18
+ }
19
+ try {
20
+ const cached = JSON.parse(stringified);
21
+ return cached.map(([key, value]) => [
22
+ key,
23
+ create({
24
+ open: value.open,
25
+ current: false
26
+ })
27
+ ]);
28
+ } catch {
29
+ }
30
+ };
31
+ var state_default = (context) => {
32
+ const state = new Map(getInitialState() ?? [
33
+ // TODO(thure): Initialize these dynamically.
34
+ [
35
+ "root",
36
+ create({
37
+ open: true,
38
+ current: false
39
+ })
40
+ ],
41
+ [
42
+ "root~dxos.org/plugin/space-spaces",
43
+ create({
44
+ open: true,
45
+ current: false
46
+ })
47
+ ],
48
+ [
49
+ "root~dxos.org/plugin/files",
50
+ create({
51
+ open: true,
52
+ current: false
53
+ })
54
+ ]
55
+ ]);
56
+ const getItem = (_path) => {
57
+ const path = Path.create(..._path);
58
+ const value = state.get(path) ?? create({
59
+ open: false,
60
+ current: false
61
+ });
62
+ if (!state.has(path)) {
63
+ state.set(path, value);
64
+ }
65
+ return value;
66
+ };
67
+ const setItem = (path, key, next) => {
68
+ const value = getItem(path);
69
+ value[key] = next;
70
+ localStorage.setItem(KEY, JSON.stringify(Array.from(state.entries())));
71
+ };
72
+ const isOpen = (path) => getItem(path).open;
73
+ const isCurrent = (path) => getItem(path).current;
74
+ const location = context.requestCapability(Capabilities.Location);
75
+ const layout = context.requestCapability(Capabilities.Layout);
76
+ let previous = [];
77
+ const unsubscribe = effect(() => {
78
+ const part = layout.layoutMode === "solo" ? "solo" : "main";
79
+ const current = location.active[part]?.map(({ id }) => id) ?? [];
80
+ const removed = previous.filter((id) => !current.includes(id));
81
+ previous = current;
82
+ setTimeout(() => {
83
+ removed.forEach((id) => {
84
+ const keys = Array.from(state.keys()).filter((key) => Path.last(key) === id);
85
+ keys.forEach((key) => {
86
+ setItem(Path.parts(key), "current", false);
87
+ });
88
+ });
89
+ current.forEach((id) => {
90
+ const keys = Array.from(/* @__PURE__ */ new Set([
91
+ ...state.keys(),
92
+ id
93
+ ])).filter((key) => Path.last(key) === id);
94
+ keys.forEach((key) => {
95
+ setItem(Path.parts(key), "current", true);
96
+ });
97
+ });
98
+ });
99
+ });
100
+ return contributes(NavTreeCapabilities.State, {
101
+ state,
102
+ getItem,
103
+ setItem,
104
+ isOpen,
105
+ isCurrent
106
+ }, () => unsubscribe());
107
+ };
108
+ export {
109
+ state_default as default
110
+ };
111
+ //# sourceMappingURL=state-HT65TAYL.mjs.map
@@ -0,0 +1,7 @@
1
+ {
2
+ "version": 3,
3
+ "sources": ["../../../src/capabilities/state.ts"],
4
+ "sourcesContent": ["//\n// Copyright 2025 DXOS.org\n//\n\nimport { effect } from '@preact/signals-core';\n\nimport { Capabilities, contributes, type PluginsContext } from '@dxos/app-framework';\nimport { type ReactiveObject, create } from '@dxos/live-object';\nimport { Path } from '@dxos/react-ui-mosaic';\n\nimport { NavTreeCapabilities } from './capabilities';\nimport { NAVTREE_PLUGIN } from '../meta';\n\nconst KEY = `${NAVTREE_PLUGIN}/state`;\n\nconst getInitialState = () => {\n const stringified = localStorage.getItem(KEY);\n if (!stringified) {\n return;\n }\n\n try {\n const cached: [string, { open: boolean; current: boolean }][] = JSON.parse(stringified);\n return cached.map(\n ([key, value]): [\n string,\n ReactiveObject<{\n open: boolean;\n current: boolean;\n }>,\n ] => [key, create({ open: value.open, current: false })],\n );\n } catch {}\n};\n\nexport default (context: PluginsContext) => {\n // TODO(wittjosiah): This currently needs to be not a ReactiveObject at the root.\n // If it is a ReactiveObject then React errors when initializing new paths because of state change during render.\n // Ideally this could be a ReactiveObject but be able to access and update the root level without breaking render.\n // Wrapping accesses and updates in `untracked` didn't seem to work in all cases.\n const state = new Map<string, ReactiveObject<{ open: boolean; current: boolean }>>(\n getInitialState() ?? [\n // TODO(thure): Initialize these dynamically.\n ['root', create({ open: true, current: false })],\n ['root~dxos.org/plugin/space-spaces', create({ open: true, current: false })],\n ['root~dxos.org/plugin/files', create({ open: true, current: false })],\n ],\n );\n\n const getItem = (_path: string[]) => {\n const path = Path.create(..._path);\n const value = state.get(path) ?? create({ open: false, current: false });\n if (!state.has(path)) {\n state.set(path, value);\n }\n\n return value;\n };\n\n const setItem = (path: string[], key: 'open' | 'current', next: boolean) => {\n const value = getItem(path);\n value[key] = next;\n\n localStorage.setItem(KEY, JSON.stringify(Array.from(state.entries())));\n };\n\n const isOpen = (path: string[]) => getItem(path).open;\n const isCurrent = (path: string[]) => getItem(path).current;\n\n const location = context.requestCapability(Capabilities.Location);\n const layout = context.requestCapability(Capabilities.Layout);\n\n let previous: string[] = [];\n const unsubscribe = effect(() => {\n const part = layout.layoutMode === 'solo' ? 'solo' : 'main';\n const current = location.active[part]?.map(({ id }) => id) ?? [];\n const removed = previous.filter((id) => !current.includes(id));\n previous = current;\n\n // TODO(wittjosiah): This is setTimeout because there's a race between the keys be initialized.\n // This could be avoided if the location was a path as well and not just an id.\n setTimeout(() => {\n removed.forEach((id) => {\n const keys = Array.from(state.keys()).filter((key) => Path.last(key) === id);\n keys.forEach((key) => {\n setItem(Path.parts(key), 'current', false);\n });\n });\n\n current.forEach((id) => {\n const keys = Array.from(new Set([...state.keys(), id])).filter((key) => Path.last(key) === id);\n keys.forEach((key) => {\n setItem(Path.parts(key), 'current', true);\n });\n });\n });\n });\n\n return contributes(NavTreeCapabilities.State, { state, getItem, setItem, isOpen, isCurrent }, () => unsubscribe());\n};\n"],
5
+ "mappings": "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",
6
+ "names": ["effect", "Capabilities", "contributes", "create", "Path", "KEY", "NAVTREE_PLUGIN", "getInitialState", "stringified", "localStorage", "getItem", "cached", "JSON", "parse", "map", "key", "value", "create", "open", "current", "context", "state", "Map", "_path", "path", "Path", "get", "has", "set", "setItem", "next", "stringify", "Array", "from", "entries", "isOpen", "isCurrent", "location", "requestCapability", "Capabilities", "Location", "layout", "Layout", "previous", "unsubscribe", "effect", "part", "layoutMode", "active", "id", "removed", "filter", "includes", "setTimeout", "forEach", "keys", "last", "parts", "Set", "contributes", "NavTreeCapabilities", "State"]
7
+ }
@@ -1,4 +1,2 @@
1
- import { type GraphBuilderProvides, type IntentResolverProvides, type MetadataRecordsProvides, type PluginDefinition, type SurfaceProvides, type TranslationsProvides } from '@dxos/app-framework';
2
- export type NavTreePluginProvides = SurfaceProvides & MetadataRecordsProvides & GraphBuilderProvides & TranslationsProvides & IntentResolverProvides;
3
- export declare const NavTreePlugin: () => PluginDefinition<NavTreePluginProvides>;
1
+ export declare const NavTreePlugin: () => import("@dxos/app-framework").Plugin;
4
2
  //# sourceMappingURL=NavTreePlugin.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"NavTreePlugin.d.ts","sourceRoot":"","sources":["../../../src/NavTreePlugin.tsx"],"names":[],"mappings":"AAOA,OAAO,EACL,KAAK,oBAAoB,EAEzB,KAAK,sBAAsB,EAE3B,KAAK,uBAAuB,EAO5B,KAAK,gBAAgB,EAErB,KAAK,eAAe,EACpB,KAAK,oBAAoB,EAC1B,MAAM,qBAAqB,CAAC;AAgB7B,MAAM,MAAM,qBAAqB,GAAG,eAAe,GACjD,uBAAuB,GACvB,oBAAoB,GACpB,oBAAoB,GACpB,sBAAsB,CAAC;AAuBzB,eAAO,MAAM,aAAa,QAAO,gBAAgB,CAAC,qBAAqB,CAkPtE,CAAC"}
1
+ {"version":3,"file":"NavTreePlugin.d.ts","sourceRoot":"","sources":["../../../src/NavTreePlugin.tsx"],"names":[],"mappings":"AAuBA,eAAO,MAAM,aAAa,4CAoEtB,CAAC"}
@@ -0,0 +1,181 @@
1
+ import { type PluginsContext } from '@dxos/app-framework';
2
+ import { type Node } from '@dxos/plugin-graph';
3
+ declare const _default: (context: PluginsContext) => import("@dxos/app-framework").Capability<Readonly<{
4
+ id: string;
5
+ disposition: import("packages/common/util/dist/types/src").Disposition;
6
+ resolver?: import("@dxos/plugin-graph").ResolverExtension;
7
+ connector?: import("@dxos/plugin-graph").ConnectorExtension;
8
+ relation?: import("@dxos/plugin-graph").Relation;
9
+ type?: string;
10
+ filter?: (node: import("packages/sdk/app-graph/dist/types/src").Node) => boolean;
11
+ }> | Readonly<{
12
+ id: string;
13
+ disposition: import("packages/common/util/dist/types/src").Disposition;
14
+ resolver?: import("@dxos/plugin-graph").ResolverExtension;
15
+ connector?: import("@dxos/plugin-graph").ConnectorExtension;
16
+ relation?: import("@dxos/plugin-graph").Relation;
17
+ type?: string;
18
+ filter?: (node: import("packages/sdk/app-graph/dist/types/src").Node) => boolean;
19
+ }>[] | (Readonly<{
20
+ id: string;
21
+ disposition: import("packages/common/util/dist/types/src").Disposition;
22
+ resolver?: import("@dxos/plugin-graph").ResolverExtension;
23
+ connector?: import("@dxos/plugin-graph").ConnectorExtension;
24
+ relation?: import("@dxos/plugin-graph").Relation;
25
+ type?: string;
26
+ filter?: (node: import("packages/sdk/app-graph/dist/types/src").Node) => boolean;
27
+ }> | Readonly<{
28
+ id: string;
29
+ disposition: import("packages/common/util/dist/types/src").Disposition;
30
+ resolver?: import("@dxos/plugin-graph").ResolverExtension;
31
+ connector?: import("@dxos/plugin-graph").ConnectorExtension;
32
+ relation?: import("@dxos/plugin-graph").Relation;
33
+ type?: string;
34
+ filter?: (node: import("packages/sdk/app-graph/dist/types/src").Node) => boolean;
35
+ }>[] | (Readonly<{
36
+ id: string;
37
+ disposition: import("packages/common/util/dist/types/src").Disposition;
38
+ resolver?: import("@dxos/plugin-graph").ResolverExtension;
39
+ connector?: import("@dxos/plugin-graph").ConnectorExtension;
40
+ relation?: import("@dxos/plugin-graph").Relation;
41
+ type?: string;
42
+ filter?: (node: import("packages/sdk/app-graph/dist/types/src").Node) => boolean;
43
+ }> | Readonly<{
44
+ id: string;
45
+ disposition: import("packages/common/util/dist/types/src").Disposition;
46
+ resolver?: import("@dxos/plugin-graph").ResolverExtension;
47
+ connector?: import("@dxos/plugin-graph").ConnectorExtension;
48
+ relation?: import("@dxos/plugin-graph").Relation;
49
+ type?: string;
50
+ filter?: (node: import("packages/sdk/app-graph/dist/types/src").Node) => boolean;
51
+ }>[] | (Readonly<{
52
+ id: string;
53
+ disposition: import("packages/common/util/dist/types/src").Disposition;
54
+ resolver?: import("@dxos/plugin-graph").ResolverExtension;
55
+ connector?: import("@dxos/plugin-graph").ConnectorExtension;
56
+ relation?: import("@dxos/plugin-graph").Relation;
57
+ type?: string;
58
+ filter?: (node: import("packages/sdk/app-graph/dist/types/src").Node) => boolean;
59
+ }> | Readonly<{
60
+ id: string;
61
+ disposition: import("packages/common/util/dist/types/src").Disposition;
62
+ resolver?: import("@dxos/plugin-graph").ResolverExtension;
63
+ connector?: import("@dxos/plugin-graph").ConnectorExtension;
64
+ relation?: import("@dxos/plugin-graph").Relation;
65
+ type?: string;
66
+ filter?: (node: import("packages/sdk/app-graph/dist/types/src").Node) => boolean;
67
+ }>[] | (Readonly<{
68
+ id: string;
69
+ disposition: import("packages/common/util/dist/types/src").Disposition;
70
+ resolver?: import("@dxos/plugin-graph").ResolverExtension;
71
+ connector?: import("@dxos/plugin-graph").ConnectorExtension;
72
+ relation?: import("@dxos/plugin-graph").Relation;
73
+ type?: string;
74
+ filter?: (node: import("packages/sdk/app-graph/dist/types/src").Node) => boolean;
75
+ }> | Readonly<{
76
+ id: string;
77
+ disposition: import("packages/common/util/dist/types/src").Disposition;
78
+ resolver?: import("@dxos/plugin-graph").ResolverExtension;
79
+ connector?: import("@dxos/plugin-graph").ConnectorExtension;
80
+ relation?: import("@dxos/plugin-graph").Relation;
81
+ type?: string;
82
+ filter?: (node: import("packages/sdk/app-graph/dist/types/src").Node) => boolean;
83
+ }>[] | (Readonly<{
84
+ id: string;
85
+ disposition: import("packages/common/util/dist/types/src").Disposition;
86
+ resolver?: import("@dxos/plugin-graph").ResolverExtension;
87
+ connector?: import("@dxos/plugin-graph").ConnectorExtension;
88
+ relation?: import("@dxos/plugin-graph").Relation;
89
+ type?: string;
90
+ filter?: (node: import("packages/sdk/app-graph/dist/types/src").Node) => boolean;
91
+ }> | Readonly<{
92
+ id: string;
93
+ disposition: import("packages/common/util/dist/types/src").Disposition;
94
+ resolver?: import("@dxos/plugin-graph").ResolverExtension;
95
+ connector?: import("@dxos/plugin-graph").ConnectorExtension;
96
+ relation?: import("@dxos/plugin-graph").Relation;
97
+ type?: string;
98
+ filter?: (node: import("packages/sdk/app-graph/dist/types/src").Node) => boolean;
99
+ }>[] | (Readonly<{
100
+ id: string;
101
+ disposition: import("packages/common/util/dist/types/src").Disposition;
102
+ resolver?: import("@dxos/plugin-graph").ResolverExtension;
103
+ connector?: import("@dxos/plugin-graph").ConnectorExtension;
104
+ relation?: import("@dxos/plugin-graph").Relation;
105
+ type?: string;
106
+ filter?: (node: import("packages/sdk/app-graph/dist/types/src").Node) => boolean;
107
+ }> | Readonly<{
108
+ id: string;
109
+ disposition: import("packages/common/util/dist/types/src").Disposition;
110
+ resolver?: import("@dxos/plugin-graph").ResolverExtension;
111
+ connector?: import("@dxos/plugin-graph").ConnectorExtension;
112
+ relation?: import("@dxos/plugin-graph").Relation;
113
+ type?: string;
114
+ filter?: (node: import("packages/sdk/app-graph/dist/types/src").Node) => boolean;
115
+ }>[] | (Readonly<{
116
+ id: string;
117
+ disposition: import("packages/common/util/dist/types/src").Disposition;
118
+ resolver?: import("@dxos/plugin-graph").ResolverExtension;
119
+ connector?: import("@dxos/plugin-graph").ConnectorExtension;
120
+ relation?: import("@dxos/plugin-graph").Relation;
121
+ type?: string;
122
+ filter?: (node: import("packages/sdk/app-graph/dist/types/src").Node) => boolean;
123
+ }> | Readonly<{
124
+ id: string;
125
+ disposition: import("packages/common/util/dist/types/src").Disposition;
126
+ resolver?: import("@dxos/plugin-graph").ResolverExtension;
127
+ connector?: import("@dxos/plugin-graph").ConnectorExtension;
128
+ relation?: import("@dxos/plugin-graph").Relation;
129
+ type?: string;
130
+ filter?: (node: import("packages/sdk/app-graph/dist/types/src").Node) => boolean;
131
+ }>[] | (Readonly<{
132
+ id: string;
133
+ disposition: import("packages/common/util/dist/types/src").Disposition;
134
+ resolver?: import("@dxos/plugin-graph").ResolverExtension;
135
+ connector?: import("@dxos/plugin-graph").ConnectorExtension;
136
+ relation?: import("@dxos/plugin-graph").Relation;
137
+ type?: string;
138
+ filter?: (node: import("packages/sdk/app-graph/dist/types/src").Node) => boolean;
139
+ }> | Readonly<{
140
+ id: string;
141
+ disposition: import("packages/common/util/dist/types/src").Disposition;
142
+ resolver?: import("@dxos/plugin-graph").ResolverExtension;
143
+ connector?: import("@dxos/plugin-graph").ConnectorExtension;
144
+ relation?: import("@dxos/plugin-graph").Relation;
145
+ type?: string;
146
+ filter?: (node: import("packages/sdk/app-graph/dist/types/src").Node) => boolean;
147
+ }>[] | (Readonly<{
148
+ id: string;
149
+ disposition: import("packages/common/util/dist/types/src").Disposition;
150
+ resolver?: import("@dxos/plugin-graph").ResolverExtension;
151
+ connector?: import("@dxos/plugin-graph").ConnectorExtension;
152
+ relation?: import("@dxos/plugin-graph").Relation;
153
+ type?: string;
154
+ filter?: (node: import("packages/sdk/app-graph/dist/types/src").Node) => boolean;
155
+ }> | Readonly<{
156
+ id: string;
157
+ disposition: import("packages/common/util/dist/types/src").Disposition;
158
+ resolver?: import("@dxos/plugin-graph").ResolverExtension;
159
+ connector?: import("@dxos/plugin-graph").ConnectorExtension;
160
+ relation?: import("@dxos/plugin-graph").Relation;
161
+ type?: string;
162
+ filter?: (node: import("packages/sdk/app-graph/dist/types/src").Node) => boolean;
163
+ }>[] | (any[] | Readonly<{
164
+ id: string;
165
+ disposition: import("packages/common/util/dist/types/src").Disposition;
166
+ resolver?: import("@dxos/plugin-graph").ResolverExtension;
167
+ connector?: import("@dxos/plugin-graph").ConnectorExtension;
168
+ relation?: import("@dxos/plugin-graph").Relation;
169
+ type?: string;
170
+ filter?: (node: import("packages/sdk/app-graph/dist/types/src").Node) => boolean;
171
+ }> | Readonly<{
172
+ id: string;
173
+ disposition: import("packages/common/util/dist/types/src").Disposition;
174
+ resolver?: import("@dxos/plugin-graph").ResolverExtension;
175
+ connector?: import("@dxos/plugin-graph").ConnectorExtension;
176
+ relation?: import("@dxos/plugin-graph").Relation;
177
+ type?: string;
178
+ filter?: (node: import("packages/sdk/app-graph/dist/types/src").Node) => boolean;
179
+ }>[])[])[])[])[])[])[])[])[])[])[]>;
180
+ export default _default;
181
+ //# sourceMappingURL=app-graph-builder.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"app-graph-builder.d.ts","sourceRoot":"","sources":["../../../../src/capabilities/app-graph-builder.ts"],"names":[],"mappings":"AAIA,OAAO,EAA6B,KAAK,cAAc,EAA8B,MAAM,qBAAqB,CAAC;AACjH,OAAO,EAAmB,KAAK,IAAI,EAAE,MAAM,oBAAoB,CAAC;kCAIvC,cAAc;;wBA+BimI,qCAAY;sBAAyC,oBAAiB;uBAAgD,oBAAiB;sBAAgD,oBAAiB;;2BAAkE,uCAAiB;;;wBAAwF,qCAAY;sBAAyC,oBAAiB;uBAAgD,oBAAiB;sBAAgD,oBAAiB;;2BAAkE,uCAAiB;;;wBAA2F,qCAAY;sBAAyC,oBAAiB;uBAAgD,oBAAiB;sBAAgD,oBAAiB;;2BAAkE,uCAAiB;;;wBAAwF,qCAAY;sBAAyC,oBAAiB;uBAAgD,oBAAiB;sBAAgD,oBAAiB;;2BAAkE,uCAAiB;;;wBAA2F,qCAAY;sBAAyC,oBAAiB;uBAAgD,oBAAiB;sBAAgD,oBAAiB;;2BAAkE,uCAAiB;;;wBAAwF,qCAAY;sBAAyC,oBAAiB;uBAAgD,oBAAiB;sBAAgD,oBAAiB;;2BAAkE,uCAAiB;;;wBAA2F,qCAAY;sBAAyC,oBAAiB;uBAAgD,oBAAiB;sBAAgD,oBAAiB;;2BAAkE,uCAAiB;;;wBAAwF,qCAAY;sBAAyC,oBAAiB;uBAAgD,oBAAiB;sBAAgD,oBAAiB;;2BAAkE,uCAAiB;;;wBAA2F,qCAAY;sBAAyC,oBAAiB;uBAAgD,oBAAiB;sBAAgD,oBAAiB;;2BAAkE,uCAAiB;;;wBAAwF,qCAAY;sBAAyC,oBAAiB;uBAAgD,oBAAiB;sBAAgD,oBAAiB;;2BAAkE,uCAAiB;;;wBAA2F,qCAAY;sBAAyC,oBAAiB;uBAAgD,oBAAiB;sBAAgD,oBAAiB;;2BAAkE,uCAAiB;;;wBAAwF,qCAAY;sBAAyC,oBAAiB;uBAAgD,oBAAiB;sBAAgD,oBAAiB;;2BAAkE,uCAAiB;;;wBAA2F,qCAAY;sBAAyC,oBAAiB;uBAAgD,oBAAiB;sBAAgD,oBAAiB;;2BAAkE,uCAAiB;;;wBAAwF,qCAAY;sBAAyC,oBAAiB;uBAAgD,oBAAiB;sBAAgD,oBAAiB;;2BAAkE,uCAAiB;;;wBAA2F,qCAAY;sBAAyC,oBAAiB;uBAAgD,oBAAiB;sBAAgD,oBAAiB;;2BAAkE,uCAAiB;;;wBAAwF,qCAAY;sBAAyC,oBAAiB;uBAAgD,oBAAiB;sBAAgD,oBAAiB;;2BAAkE,uCAAiB;;;wBAA2F,qCAAY;sBAAyC,oBAAiB;uBAAgD,oBAAiB;sBAAgD,oBAAiB;;2BAAkE,uCAAiB;;;wBAAwF,qCAAY;sBAAyC,oBAAiB;uBAAgD,oBAAiB;sBAAgD,oBAAiB;;2BAAkE,uCAAiB;;;wBAA2F,qCAAY;sBAAyC,oBAAiB;uBAAgD,oBAAiB;sBAAgD,oBAAiB;;2BAAkE,uCAAiB;;;wBAAwF,qCAAY;sBAAyC,oBAAiB;uBAAgD,oBAAiB;sBAAgD,oBAAiB;;2BAAkE,uCAAiB;;;wBAA2F,qCAAY;sBAAyC,oBAAiB;uBAAgD,oBAAiB;sBAAgD,oBAAiB;;2BAAkE,uCAAiB;;;wBAAwF,qCAAY;sBAAyC,oBAAiB;uBAAgD,oBAAiB;sBAAgD,oBAAiB;;2BAAkE,uCAAiB;;AA/BhjY,wBA8BI"}
@@ -0,0 +1,17 @@
1
+ import { type ReactiveObject } from '@dxos/live-object';
2
+ export declare namespace NavTreeCapabilities {
3
+ const State: import("@dxos/app-framework").InterfaceDef<{
4
+ state: Map<string, ReactiveObject<{
5
+ open: boolean;
6
+ current: boolean;
7
+ }>>;
8
+ getItem: (path: string[]) => ReactiveObject<{
9
+ open: boolean;
10
+ current: boolean;
11
+ }>;
12
+ setItem: (path: string[], key: "open" | "current", next: boolean) => void;
13
+ isOpen: (path: string[]) => boolean;
14
+ isCurrent: (path: string[]) => boolean;
15
+ }>;
16
+ }
17
+ //# sourceMappingURL=capabilities.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"capabilities.d.ts","sourceRoot":"","sources":["../../../../src/capabilities/capabilities.ts"],"names":[],"mappings":"AAKA,OAAO,EAAE,KAAK,cAAc,EAAE,MAAM,mBAAmB,CAAC;AAIxD,yBAAiB,mBAAmB,CAAC;IAC5B,MAAM,KAAK;eACT,GAAG,CAAC,MAAM,EAAE,cAAc,CAAC;YAAE,IAAI,EAAE,OAAO,CAAC;YAAC,OAAO,EAAE,OAAO,CAAA;SAAE,CAAC,CAAC;iBAC9D,CAAC,IAAI,EAAE,MAAM,EAAE,KAAK,cAAc,CAAC;YAAE,IAAI,EAAE,OAAO,CAAC;YAAC,OAAO,EAAE,OAAO,CAAA;SAAE,CAAC;iBACvE,CAAC,IAAI,EAAE,MAAM,EAAE,EAAE,GAAG,EAAE,MAAM,GAAG,SAAS,EAAE,IAAI,EAAE,OAAO,KAAK,IAAI;gBACjE,CAAC,IAAI,EAAE,MAAM,EAAE,KAAK,OAAO;mBACxB,CAAC,IAAI,EAAE,MAAM,EAAE,KAAK,OAAO;MACA,CAAC;CAC1C"}