@dxos/plugin-navtree 0.6.13-main.548ca8d → 0.6.13-staging.1e988a3

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.
@@ -10,4 +10,4 @@ export {
10
10
  KEY_BINDING,
11
11
  meta_default
12
12
  };
13
- //# sourceMappingURL=chunk-PSVCPL4T.mjs.map
13
+ //# sourceMappingURL=chunk-U7MTKDFQ.mjs.map
@@ -0,0 +1,7 @@
1
+ {
2
+ "version": 3,
3
+ "sources": ["../../../src/meta.ts"],
4
+ "sourcesContent": ["//\n// Copyright 2023 DXOS.org\n//\n\nexport const NAVTREE_PLUGIN = 'dxos.org/plugin/navtree';\n\n// TODO(wittjosiah): Factor out.\nexport const KEY_BINDING = 'KeyBinding';\n\nexport default {\n id: NAVTREE_PLUGIN,\n};\n"],
5
+ "mappings": ";AAIO,IAAMA,iBAAiB;AAGvB,IAAMC,cAAc;AAE3B,IAAA,eAAe;EACbC,IAAIF;AACN;",
6
+ "names": ["NAVTREE_PLUGIN", "KEY_BINDING", "id"]
7
+ }
@@ -2,11 +2,12 @@ import {
2
2
  KEY_BINDING,
3
3
  NAVTREE_PLUGIN,
4
4
  meta_default
5
- } from "./chunk-PSVCPL4T.mjs";
5
+ } from "./chunk-U7MTKDFQ.mjs";
6
6
 
7
7
  // packages/plugins/plugin-navtree/src/NavTreePlugin.tsx
8
+ import { MagnifyingGlass as MagnifyingGlass2 } from "@phosphor-icons/react";
8
9
  import React8 from "react";
9
- import { resolvePlugin, parseIntentPlugin, LayoutAction as LayoutAction3, parseGraphPlugin, NavigationAction as NavigationAction2 } from "@dxos/app-framework";
10
+ import { resolvePlugin, parseIntentPlugin, LayoutAction as LayoutAction4, parseGraphPlugin, NavigationAction as NavigationAction2 } from "@dxos/app-framework";
10
11
  import { createExtension, isAction as isAction4, isGraphNode } from "@dxos/app-graph";
11
12
  import { Keyboard as Keyboard2 } from "@dxos/keyboard";
12
13
  import { LocalStorageStore } from "@dxos/local-storage";
@@ -14,12 +15,13 @@ import { Path as Path3 } from "@dxos/react-ui-mosaic";
14
15
  import { getHostPlatform as getHostPlatform2 } from "@dxos/util";
15
16
 
16
17
  // packages/plugins/plugin-navtree/src/components/CommandsDialog.tsx
18
+ import { DotOutline } from "@phosphor-icons/react";
17
19
  import React, { useMemo, useState } from "react";
18
20
  import { useIntentDispatcher, LayoutAction } from "@dxos/app-framework";
19
21
  import { isActionGroup, isAction } from "@dxos/app-graph";
20
22
  import { Keyboard, keySymbols } from "@dxos/keyboard";
21
23
  import { useGraph } from "@dxos/plugin-graph";
22
- import { Button, Dialog, Icon, useTranslation, toLocalizedString } from "@dxos/react-ui";
24
+ import { Button, Dialog, useTranslation, toLocalizedString } from "@dxos/react-ui";
23
25
  import { SearchList } from "@dxos/react-ui-searchlist";
24
26
  import { descriptionText, mx } from "@dxos/react-ui-theme";
25
27
  import { getHostPlatform } from "@dxos/util";
@@ -66,6 +68,7 @@ var CommandsDialogContent = ({ selected: initial }) => {
66
68
  }, actions?.map((action) => {
67
69
  const label = toLocalizedString(action.properties.label, t);
68
70
  const shortcut = typeof action.properties.keyBinding === "string" ? action.properties.keyBinding : action.properties.keyBinding?.[getHostPlatform()];
71
+ const Icon = action.properties.icon ?? DotOutline;
69
72
  return /* @__PURE__ */ React.createElement(SearchList.Item, {
70
73
  value: label,
71
74
  key: action.id,
@@ -100,8 +103,8 @@ var CommandsDialogContent = ({ selected: initial }) => {
100
103
  "data-testid": action.properties.testId
101
104
  }
102
105
  }, /* @__PURE__ */ React.createElement(Icon, {
103
- icon: action.properties.icon,
104
- size: 4
106
+ size: 4,
107
+ className: mx(!action.properties.icon && "invisible")
105
108
  }), /* @__PURE__ */ React.createElement("span", {
106
109
  className: "grow truncate"
107
110
  }, label), shortcut && /* @__PURE__ */ React.createElement("span", {
@@ -118,6 +121,7 @@ var CommandsDialogContent = ({ selected: initial }) => {
118
121
  };
119
122
 
120
123
  // packages/plugins/plugin-navtree/src/components/NavBarStart.tsx
124
+ import { DotsThreeVertical } from "@phosphor-icons/react";
121
125
  import React2, { Fragment } from "react";
122
126
  import { getGraph } from "@dxos/app-graph";
123
127
  import { Popover, toLocalizedString as toLocalizedString2, useTranslation as useTranslation2 } from "@dxos/react-ui";
@@ -126,17 +130,16 @@ var TREE_ITEM_MAIN_HEADING = "TreeItemMainHeading";
126
130
  var NavBarStart = ({ activeNode, popoverAnchorId }) => {
127
131
  const { t } = useTranslation2(NAVTREE_PLUGIN);
128
132
  const ActionRoot = popoverAnchorId === `dxos.org/ui/${TREE_ITEM_MAIN_HEADING}/${activeNode.id}` || popoverAnchorId === `dxos.org/ui/${KEY_BINDING}/${activeNode.id}` ? Popover.Anchor : Fragment;
133
+ const Icon = activeNode.properties?.icon ?? DotsThreeVertical;
129
134
  const graph = getGraph(activeNode);
130
135
  const actions = graph.actions(activeNode);
131
136
  const label = toLocalizedString2(activeNode.properties?.label, t);
132
137
  const menuTriggerLabel = t("node actions menu invoker label");
133
138
  return /* @__PURE__ */ React2.createElement(React2.Fragment, null, /* @__PURE__ */ React2.createElement(ActionRoot, null, /* @__PURE__ */ React2.createElement(PlankHeading.ActionsMenu, {
134
- icon: activeNode.properties?.icon ?? "ph--dots-three-vertical--regular",
139
+ Icon,
135
140
  attendableId: activeNode.id,
136
141
  triggerLabel: menuTriggerLabel,
137
- actions: [
138
- actions
139
- ],
142
+ actions,
140
143
  onAction: (action) => typeof action.data === "function" && action.data({
141
144
  node: action,
142
145
  caller: TREE_ITEM_MAIN_HEADING
@@ -148,10 +151,10 @@ var NavBarStart = ({ activeNode, popoverAnchorId }) => {
148
151
 
149
152
  // packages/plugins/plugin-navtree/src/components/NavTreeContainer.tsx
150
153
  import React4, { useCallback, useMemo as useMemo2 } from "react";
151
- import { NavigationAction, Surface, useIntentDispatcher as useIntentDispatcher3 } from "@dxos/app-framework";
154
+ import { NavigationAction, LayoutAction as LayoutAction2, Surface, SLUG_PATH_SEPARATOR, SLUG_COLLECTION_INDICATOR, useIntentDispatcher as useIntentDispatcher3 } from "@dxos/app-framework";
152
155
  import { getGraph as getGraph2, isAction as isAction3, isActionLike } from "@dxos/app-graph";
153
156
  import { ElevationProvider, useMediaQuery, useSidebars as useSidebars2 } from "@dxos/react-ui";
154
- import { Mosaic, Path as Path2 } from "@dxos/react-ui-mosaic";
157
+ import { Path as Path2 } from "@dxos/react-ui-mosaic";
155
158
  import { NavTree, getLevel } from "@dxos/react-ui-navtree";
156
159
  import { arrayMove } from "@dxos/util";
157
160
 
@@ -167,7 +170,7 @@ import { getSize, mx as mx2 } from "@dxos/react-ui-theme";
167
170
  var buttonStyles = "pli-1.5 text-xs font-normal";
168
171
  var repo = "https://github.com/dxos/dxos";
169
172
  var NavTreeFooter = (props) => {
170
- const layoutPart = useDefaultValue(props.layoutPart, () => "sidebar");
173
+ const layoutPart = useDefaultValue(props.layoutPart, "sidebar");
171
174
  const config = useConfig();
172
175
  const { t } = useTranslation3(NAVTREE_PLUGIN);
173
176
  const { navigationSidebarOpen } = useSidebars(NAVTREE_PLUGIN);
@@ -448,13 +451,26 @@ var NavTreeContainer = ({ root, activeIds, openItemIds, onOpenItemIdsChange, att
448
451
  await dispatch({
449
452
  action: NavigationAction.OPEN,
450
453
  data: {
451
- activeParts: {
454
+ activeParts: node.data?.comments ? {
455
+ main: [
456
+ node.id
457
+ ],
458
+ complementary: [
459
+ `${node.id}${SLUG_PATH_SEPARATOR}comments${SLUG_COLLECTION_INDICATOR}`
460
+ ]
461
+ } : {
452
462
  main: [
453
463
  node.id
454
464
  ]
455
465
  }
456
466
  }
457
467
  });
468
+ await dispatch({
469
+ action: LayoutAction2.SCROLL_INTO_VIEW,
470
+ data: {
471
+ id: node.id
472
+ }
473
+ });
458
474
  const defaultAction = actions?.find((action) => action.properties?.disposition === "default");
459
475
  if (isAction3(defaultAction)) {
460
476
  void defaultAction.data();
@@ -664,7 +680,7 @@ var NavTreeContainer = ({ root, activeIds, openItemIds, onOpenItemIdsChange, att
664
680
  onOpenItemIdsChange,
665
681
  openItemIds
666
682
  ]);
667
- return /* @__PURE__ */ React4.createElement(Mosaic.Root, null, /* @__PURE__ */ React4.createElement(Mosaic.DragOverlay, null), /* @__PURE__ */ React4.createElement(ElevationProvider, {
683
+ return /* @__PURE__ */ React4.createElement(ElevationProvider, {
668
684
  elevation: "chrome"
669
685
  }, /* @__PURE__ */ React4.createElement("div", {
670
686
  role: "none",
@@ -691,7 +707,7 @@ var NavTreeContainer = ({ root, activeIds, openItemIds, onOpenItemIdsChange, att
691
707
  renderPresence,
692
708
  resolveItemLevel,
693
709
  loadDescendents
694
- })), /* @__PURE__ */ React4.createElement(NavTreeFooter, null))));
710
+ })), /* @__PURE__ */ React4.createElement(NavTreeFooter, null)));
695
711
  };
696
712
 
697
713
  // packages/plugins/plugin-navtree/src/components/NavTreeDocumentTitle.tsx
@@ -765,7 +781,7 @@ var NotchStart = () => {
765
781
  // packages/plugins/plugin-navtree/src/components/CommandsTrigger.tsx
766
782
  import { MagnifyingGlass } from "@phosphor-icons/react";
767
783
  import React7 from "react";
768
- import { LayoutAction as LayoutAction2, useIntent } from "@dxos/app-framework";
784
+ import { LayoutAction as LayoutAction3, useIntent } from "@dxos/app-framework";
769
785
  import { Button as Button3, useTranslation as useTranslation5 } from "@dxos/react-ui";
770
786
  import { getSize as getSize2 } from "@dxos/react-ui-theme";
771
787
  var CommandsTrigger = () => {
@@ -774,7 +790,7 @@ var CommandsTrigger = () => {
774
790
  return /* @__PURE__ */ React7.createElement(Button3, {
775
791
  classNames: "pis-3 pie-2 gap-2 mli-1 mbs-1 min-bs-0 bs-[--rail-action] justify-start",
776
792
  onClick: () => dispatch({
777
- action: LayoutAction2.SET_LAYOUT,
793
+ action: LayoutAction3.SET_LAYOUT,
778
794
  data: {
779
795
  element: "dialog",
780
796
  component: `${NAVTREE_PLUGIN}/Commands`,
@@ -988,7 +1004,7 @@ var NavTreePlugin = () => {
988
1004
  id: "dxos.org/plugin/navtree/open-commands",
989
1005
  data: async () => {
990
1006
  await intentPlugin?.provides.intent.dispatch({
991
- action: LayoutAction3.SET_LAYOUT,
1007
+ action: LayoutAction4.SET_LAYOUT,
992
1008
  data: {
993
1009
  element: "dialog",
994
1010
  component: `${NAVTREE_PLUGIN}/Commands`,
@@ -1003,7 +1019,8 @@ var NavTreePlugin = () => {
1003
1019
  ns: NAVTREE_PLUGIN
1004
1020
  }
1005
1021
  ],
1006
- icon: "ph--magnifying-glass--regular",
1022
+ icon: (props) => /* @__PURE__ */ React8.createElement(MagnifyingGlass2, props),
1023
+ iconSymbol: "ph--magnifying-glass--regular",
1007
1024
  keyBinding: {
1008
1025
  macos: "meta+k",
1009
1026
  windows: "ctrl+k"
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "version": 3,
3
3
  "sources": ["../../../src/NavTreePlugin.tsx", "../../../src/components/CommandsDialog.tsx", "../../../src/components/NavBarStart.tsx", "../../../src/components/NavTreeContainer.tsx", "../../../src/components/NavTreeFooter.tsx", "../../../src/util.ts", "../../../src/components/NavTreeDocumentTitle.tsx", "../../../src/components/NotchStart.tsx", "../../../src/components/HaloButton.tsx", "../../../src/components/CommandsTrigger.tsx", "../../../src/translations.ts", "../../../src/index.ts"],
4
- "sourcesContent": ["//\n// Copyright 2023 DXOS.org\n//\n\nimport React from 'react';\n\nimport {\n type GraphBuilderProvides,\n resolvePlugin,\n type MetadataRecordsProvides,\n type PluginDefinition,\n type SurfaceProvides,\n type TranslationsProvides,\n type Plugin,\n type IntentResolverProvides,\n parseIntentPlugin,\n LayoutAction,\n type GraphProvides,\n parseGraphPlugin,\n NavigationAction,\n} from '@dxos/app-framework';\nimport { createExtension, type Graph, isAction, isGraphNode, type Node } from '@dxos/app-graph';\nimport { Keyboard } from '@dxos/keyboard';\nimport { LocalStorageStore } from '@dxos/local-storage';\nimport { Path } from '@dxos/react-ui-mosaic';\nimport { type OpenItemIds } from '@dxos/react-ui-navtree';\nimport { getHostPlatform } from '@dxos/util';\n\nimport {\n CommandsDialogContent,\n NODE_TYPE,\n NavBarStart,\n NavTreeContainer,\n NavTreeDocumentTitle,\n NotchStart,\n} from './components';\nimport { CommandsTrigger } from './components/CommandsTrigger';\nimport meta, { KEY_BINDING, NAVTREE_PLUGIN } from './meta';\nimport translations from './translations';\nimport { expandOpenGraphNodes, getActions, getChildren, type NavTreeItem, type NavTreeItemGraphNode } from './util';\n\nexport type NavTreePluginProvides = SurfaceProvides &\n MetadataRecordsProvides &\n GraphBuilderProvides &\n TranslationsProvides &\n IntentResolverProvides;\n\ntype NavTreeState = { root?: NavTreeItemGraphNode; openItemIds: OpenItemIds };\n\nexport const NavTreePlugin = (): PluginDefinition<NavTreePluginProvides> => {\n const state = new LocalStorageStore<NavTreeState>('dxos.org/settings/navtree', {\n // TODO(thure): Do this dynamically.\n openItemIds: { root: true, 'dxos.org/plugin/space-spaces': true, 'dxos.org/plugin/files': true },\n });\n\n let graphPlugin: Plugin<GraphProvides> | undefined;\n let graph: Graph | undefined;\n\n const handleOpenItemIdsChange = (nextOpenItemIds: OpenItemIds) => {\n // TODO(thure): This might become a localstorage leak; openItemIds that no longer exist should be removed from this map.\n state.values.openItemIds = nextOpenItemIds;\n if (graph) {\n void expandOpenGraphNodes(graph, nextOpenItemIds);\n }\n };\n\n return {\n meta,\n ready: async (plugins) => {\n graphPlugin = resolvePlugin(plugins, parseGraphPlugin);\n graph = graphPlugin?.provides.graph;\n if (!graph) {\n return;\n }\n\n state.values.root = graph.root as NavTreeItemGraphNode;\n getChildren(graph, state.values.root);\n getActions(graph, state.values.root);\n\n state.prop({ key: 'openItemIds', storageKey: 'openItemIds', type: LocalStorageStore.json<OpenItemIds>() });\n\n void expandOpenGraphNodes(graph, state.values.openItemIds);\n\n // TODO(wittjosiah): Factor out.\n // TODO(wittjosiah): Handle removal of actions.\n graph.subscribeTraverse({\n visitor: (node, path) => {\n let shortcut: string | undefined;\n if (typeof node.properties.keyBinding === 'object') {\n const availablePlatforms = Object.keys(node.properties.keyBinding);\n const platform = getHostPlatform();\n shortcut = availablePlatforms.includes(platform)\n ? node.properties.keyBinding[platform]\n : platform === 'ios'\n ? node.properties.keyBinding.macos // Fallback to macos if ios-specific bindings not provided.\n : platform === 'linux' || platform === 'unknown'\n ? node.properties.keyBinding.windows // Fallback to windows if platform-specific bindings not provided.\n : undefined;\n } else {\n shortcut = node.properties.keyBinding;\n }\n\n if (shortcut && isAction(node)) {\n Keyboard.singleton.getContext(path.slice(0, -1).join('/')).bind({\n shortcut,\n handler: () => {\n void node.data({ node, caller: KEY_BINDING });\n },\n data: node.properties.label,\n });\n }\n },\n });\n\n // TODO(burdon): Create context and plugin.\n Keyboard.singleton.initialize();\n Keyboard.singleton.setCurrentContext(graphPlugin?.provides.graph.root.id);\n },\n unload: async () => {\n Keyboard.singleton.destroy();\n },\n provides: {\n metadata: {\n records: {\n [NODE_TYPE]: {\n parse: (item: NavTreeItem, type: string) => {\n switch (type) {\n case 'node':\n return item.node;\n case 'object':\n return item.node.data;\n case 'view-object':\n return { id: `${item.id}-view`, object: item.node.data };\n }\n },\n },\n },\n },\n surface: {\n component: ({ data, role }) => {\n switch (data.component) {\n case `${NAVTREE_PLUGIN}/Commands`: {\n const selected = typeof data.subject === 'string' ? data.subject : undefined;\n return <CommandsDialogContent selected={selected} />;\n }\n }\n\n switch (role) {\n case 'navigation':\n if (state.values.root && state.values.openItemIds) {\n return (\n <NavTreeContainer\n root={state.values.root}\n activeIds={data.activeIds as Set<string>}\n openItemIds={state.values.openItemIds}\n onOpenItemIdsChange={handleOpenItemIdsChange}\n attended={data.attended as string[]}\n popoverAnchorId={data.popoverAnchorId as string}\n />\n );\n }\n break;\n\n case 'document-title': {\n return <NavTreeDocumentTitle node={isGraphNode(data.activeNode) ? data.activeNode : undefined} />;\n }\n\n case 'navbar-start': {\n if (state.values.root && data.activeNode) {\n return {\n node: (\n <NavBarStart\n activeNode={data.activeNode as Node}\n popoverAnchorId={data.popoverAnchorId as string | undefined}\n />\n ),\n disposition: 'hoist',\n };\n }\n break;\n }\n\n case 'notch-start':\n return <NotchStart />;\n\n case 'search-input':\n return {\n node: <CommandsTrigger />,\n disposition: 'fallback',\n };\n }\n\n return null;\n },\n },\n intent: {\n resolver: (intent) => {\n switch (intent.action) {\n case NavigationAction.EXPOSE: {\n if (graph && intent.data?.id) {\n const path = graph.getPath({ target: intent.data.id });\n if (Array.isArray(path)) {\n const additionalOpenItems = [...Array(path.length - 1)].reduce((acc: OpenItemIds, _, index) => {\n const itemId = Path.create(...path.slice(1, index + 1));\n if (itemId.length > 0) {\n acc[itemId] = true;\n }\n return acc;\n }, {});\n state.values.openItemIds = {\n ...additionalOpenItems,\n ...state.values.openItemIds,\n };\n }\n }\n break;\n }\n }\n },\n },\n graph: {\n builder: (plugins) => {\n // TODO(burdon): Move to separate plugin (for keys and command k). Move bindings from LayoutPlugin.\n const intentPlugin = resolvePlugin(plugins, parseIntentPlugin);\n\n return [\n createExtension({\n id: NAVTREE_PLUGIN,\n filter: (node): node is Node<null> => node.id === 'root',\n actions: () => [\n {\n id: 'dxos.org/plugin/navtree/open-commands',\n data: async () => {\n await intentPlugin?.provides.intent.dispatch({\n action: LayoutAction.SET_LAYOUT,\n data: {\n element: 'dialog',\n component: `${NAVTREE_PLUGIN}/Commands`,\n dialogBlockAlign: 'start',\n },\n });\n },\n properties: {\n label: ['open commands label', { ns: NAVTREE_PLUGIN }],\n icon: 'ph--magnifying-glass--regular',\n keyBinding: {\n macos: 'meta+k',\n windows: 'ctrl+k',\n },\n },\n },\n ],\n }),\n ];\n },\n },\n translations,\n },\n };\n};\n", "//\n// Copyright 2023 DXOS.org\n//\n\nimport React, { useMemo, useState } from 'react';\n\nimport { useIntentDispatcher, LayoutAction } from '@dxos/app-framework';\nimport { type ActionLike, isActionGroup, isAction } from '@dxos/app-graph';\nimport { Keyboard, keySymbols } from '@dxos/keyboard';\nimport { useGraph } from '@dxos/plugin-graph';\nimport { Button, Dialog, Icon, useTranslation, toLocalizedString } from '@dxos/react-ui';\nimport { SearchList } from '@dxos/react-ui-searchlist';\nimport { descriptionText, mx } from '@dxos/react-ui-theme';\nimport { getHostPlatform } from '@dxos/util';\n\nimport { KEY_BINDING, NAVTREE_PLUGIN } from '../meta';\n\n// TODO(wittjosiah): This probably deserves its own plugin but for now it lives here w/ other navigation UI.\nexport const CommandsDialogContent = ({ selected: initial }: { selected?: string }) => {\n const { t } = useTranslation(NAVTREE_PLUGIN);\n const [selected, setSelected] = useState<string | undefined>(initial);\n const dispatch = useIntentDispatcher();\n const { graph } = useGraph();\n\n // Traverse graph.\n // TODO(burdon): Factor out commonality with shortcut dialog.\n const allActions = useMemo(() => {\n // TODO(burdon): Get from navtree (not keyboard).\n const current = Keyboard.singleton.getCurrentContext();\n const actionMap = new Set<string>();\n const actions: ActionLike[] = [];\n graph?.traverse({\n visitor: (node, path) => {\n if (\n (isAction(node) || isActionGroup(node)) &&\n !actionMap.has(node.id) &&\n current.startsWith(path.slice(0, -1).join('/'))\n ) {\n actionMap.add(node.id);\n actions.push(node);\n }\n },\n });\n\n actions.sort((a, b) => {\n return toLocalizedString(a.properties.label, t)\n ?.toLowerCase()\n .localeCompare(toLocalizedString(b.properties.label, t)?.toLowerCase());\n });\n\n // console.log(JSON.stringify(actions, undefined, 2));\n return actions;\n }, [graph]);\n\n const group = allActions.find(({ id }) => id === selected);\n const actions = isActionGroup(group) ? graph.actions(group) : allActions;\n\n return (\n <Dialog.Content classNames={['md:max-is-[30rem] overflow-hidden mbs-12']}>\n <Dialog.Title>{t('commands dialog title', { ns: NAVTREE_PLUGIN })}</Dialog.Title>\n\n {/* TODO(burdon): BUG: Overscrolls container. */}\n <SearchList.Root label={t('command list input placeholder')} classNames='flex flex-col grow overflow-hidden my-2'>\n <SearchList.Input placeholder={t('command list input placeholder')} classNames='px-1 my-2' />\n <SearchList.Content classNames='max-bs-[24rem] overflow-auto'>\n {actions?.map((action) => {\n const label = toLocalizedString(action.properties.label, t);\n const shortcut =\n typeof action.properties.keyBinding === 'string'\n ? action.properties.keyBinding\n : action.properties.keyBinding?.[getHostPlatform()];\n return (\n <SearchList.Item\n value={label}\n key={action.id}\n onSelect={() => {\n if (action.properties.disabled) {\n return;\n }\n\n if (isActionGroup(action)) {\n setSelected(action.id);\n return;\n }\n\n void dispatch({ action: LayoutAction.SET_LAYOUT, data: { element: 'dialog', state: false } });\n setTimeout(() => {\n const node = graph.nodes(group ?? action, { relation: 'inbound' })[0];\n void (node && isAction(action) && action.data({ node, caller: KEY_BINDING }));\n });\n }}\n classNames='flex items-center gap-2'\n disabled={action.properties.disabled}\n {...(action.properties?.testId && { 'data-testid': action.properties.testId })}\n >\n <Icon icon={action.properties.icon} size={4} />\n <span className='grow truncate'>{label}</span>\n {shortcut && <span className={mx('shrink-0', descriptionText)}>{keySymbols(shortcut).join('')}</span>}\n </SearchList.Item>\n );\n })}\n </SearchList.Content>\n </SearchList.Root>\n\n <Dialog.Close asChild>\n <Button variant='primary' classNames='mbs-2'>\n {t('close label', { ns: 'os' })}\n </Button>\n </Dialog.Close>\n </Dialog.Content>\n );\n};\n", "//\n// Copyright 2023 DXOS.org\n//\n\nimport React, { Fragment } from 'react';\n\nimport { getGraph, type Node } from '@dxos/app-graph';\nimport { Popover, toLocalizedString, useTranslation } from '@dxos/react-ui';\nimport { PlankHeading } from '@dxos/react-ui-deck';\n\nimport { KEY_BINDING, NAVTREE_PLUGIN } from '../meta';\n\nconst TREE_ITEM_MAIN_HEADING = 'TreeItemMainHeading';\n\nexport const NavBarStart = ({ activeNode, popoverAnchorId }: { activeNode: Node; popoverAnchorId?: string }) => {\n const { t } = useTranslation(NAVTREE_PLUGIN);\n\n const ActionRoot =\n popoverAnchorId === `dxos.org/ui/${TREE_ITEM_MAIN_HEADING}/${activeNode.id}` ||\n popoverAnchorId === `dxos.org/ui/${KEY_BINDING}/${activeNode.id}`\n ? Popover.Anchor\n : Fragment;\n\n const graph = getGraph(activeNode);\n const actions = graph.actions(activeNode);\n const label = toLocalizedString(activeNode.properties?.label, t);\n\n const menuTriggerLabel = t('node actions menu invoker label');\n\n return (\n <>\n <ActionRoot>\n <PlankHeading.ActionsMenu\n icon={activeNode.properties?.icon ?? 'ph--dots-three-vertical--regular'}\n attendableId={activeNode.id}\n triggerLabel={menuTriggerLabel}\n actions={[actions]}\n onAction={(action) =>\n typeof action.data === 'function' && action.data({ node: action as Node, caller: TREE_ITEM_MAIN_HEADING })\n }\n />\n </ActionRoot>\n <PlankHeading.Label attendableId={activeNode.id}>{label}</PlankHeading.Label>\n </>\n );\n};\n", "//\n// Copyright 2023 DXOS.org\n//\n\nimport React, { type ReactNode, useCallback, useMemo } from 'react';\n\nimport { NavigationAction, Surface, useIntentDispatcher } from '@dxos/app-framework';\nimport { getGraph, isAction, isActionLike } from '@dxos/app-graph';\nimport { ElevationProvider, useMediaQuery, useSidebars } from '@dxos/react-ui';\nimport { type MosaicDropEvent, type MosaicMoveEvent, Mosaic, Path } from '@dxos/react-ui-mosaic';\nimport {\n NavTree,\n type NavTreeItemNode,\n type NavTreeNode,\n getLevel,\n type NavTreeActionsNode,\n type NavTreeProps,\n type NavTreeItemMoveDetails,\n} from '@dxos/react-ui-navtree';\nimport { arrayMove } from '@dxos/util';\n\nimport { NavTreeFooter } from './NavTreeFooter';\nimport { NAVTREE_PLUGIN } from '../meta';\nimport {\n expandActions,\n expandChildren,\n getChildren,\n getParent,\n type NavTreeItem,\n type NavTreeItemGraphNode,\n resolveMigrationOperation,\n treeItemsFromRootNode,\n} from '../util';\n\n// TODO(thure): Is NavTree truly authoritative in this regard?\nexport const NODE_TYPE = 'dxos/app-graph/node';\n\nconst renderPresence = (node: NavTreeNode): ReactNode => (\n <Surface role='presence--glyph' data={{ object: node.data }} />\n);\n\nexport const NavTreeContainer = ({\n root,\n activeIds,\n openItemIds,\n onOpenItemIdsChange,\n attended,\n popoverAnchorId,\n}: {\n root: NavTreeItemGraphNode;\n activeIds: Set<string>;\n openItemIds: Record<string, true>;\n onOpenItemIdsChange: (nextOpenItemIds: Record<string, true>) => void;\n // TODO(wittjosiah): Use attention context directly?\n attended: string[];\n popoverAnchorId?: string;\n}) => {\n const { closeNavigationSidebar } = useSidebars(NAVTREE_PLUGIN);\n const [isLg] = useMediaQuery('lg', { ssr: false });\n const dispatch = useIntentDispatcher();\n\n const graph = useMemo(() => getGraph(root), [root]);\n\n const items = treeItemsFromRootNode(graph, root, openItemIds);\n\n const loadDescendents = useCallback(\n (node: NavTreeNode | NavTreeActionsNode) => {\n void expandActions(graph, node as NavTreeItemGraphNode);\n if (!isActionLike(node)) {\n void expandChildren(graph, node as NavTreeItemGraphNode).then(() =>\n // Load one level deeper, which resolves some juddering observed on open/close.\n Promise.all(\n getChildren(graph, node as NavTreeItemGraphNode).flatMap((child) => [\n expandActions(graph, child),\n expandChildren(graph, child),\n ]),\n ),\n );\n }\n },\n [graph],\n );\n\n const handleNavigate = async ({ node, actions }: NavTreeItemNode) => {\n if (!node.data) {\n return;\n }\n\n // TODO(thure): Refactor opening related planks (comments in this case) to a generalized approach.\n await dispatch({\n action: NavigationAction.OPEN,\n data: {\n activeParts: {\n main: [node.id],\n },\n },\n });\n\n const defaultAction = actions?.find((action) => action.properties?.disposition === 'default');\n if (isAction(defaultAction)) {\n void (defaultAction.data as () => void)();\n }\n if (!isLg) {\n closeNavigationSidebar();\n }\n };\n\n const handleItemOpenChange = ({ id, actions, path }: NavTreeItemNode, nextOpen: boolean) => {\n if (path) {\n if (nextOpen) {\n onOpenItemIdsChange({ ...openItemIds, [id]: true });\n } else {\n // TODO(thure): Filter vs single-remove, make setting?\n const { [id]: _, ...nextOpenItemIds } = openItemIds;\n onOpenItemIdsChange(nextOpenItemIds);\n }\n }\n\n // TODO(wittjosiah): This is a temporary solution to ensure spaces get enabled when they are expanded.\n const defaultAction = actions?.find((action) => action.properties?.disposition === 'default');\n if (isAction(defaultAction)) {\n void (defaultAction.data as () => void)();\n }\n };\n\n const resolveItemLevel = useCallback(\n (overPosition: number | undefined, activeId: string | undefined, levelOffset: number) => {\n if (!(typeof overPosition === 'number' && activeId)) {\n return 1;\n } else {\n const nextItems = arrayMove(\n items,\n items.findIndex(({ id }) => id === activeId),\n overPosition,\n );\n const previousItem: NavTreeItem | undefined = nextItems[overPosition - 1];\n const nextItem: NavTreeItem | undefined = nextItems[overPosition + 1];\n return Math.min(\n previousItem ? getLevel(previousItem?.path) + 1 : 1,\n Math.max(nextItem ? getLevel(nextItem?.path) : 1, getLevel(nextItems[overPosition].path) + levelOffset),\n );\n }\n },\n [items],\n );\n\n const handleMove: NavTreeProps['onMove'] = useCallback(\n ({ active, over, details }: MosaicMoveEvent<number, NavTreeItemMoveDetails>) => {\n const levelOffset = Math.floor((details?.delta?.x ?? 0) / 16);\n const overPosition = over.position ?? 0;\n\n const nextItems = arrayMove(\n items,\n items.findIndex(({ id }) => id === active.item.id),\n overPosition,\n );\n\n const previousItem: NavTreeItem | undefined = nextItems[overPosition - 1];\n const nextItem: NavTreeItem | undefined = nextItems[overPosition + 1];\n\n const activeNode = 'node' in active.item ? (active.item as NavTreeItem).node : undefined;\n\n if (!activeNode || !previousItem || !previousItem.path) {\n // console.log('[reject]', !activeNode, !previousItem, !previousItem.path);\n // log.warn('Top-level rearrange before the first item of the NavTree is unsupported at this time.');\n return { operation: 'reject' as const, details: { levelOffset } };\n }\n\n const overLevel = resolveItemLevel(overPosition, active.item.id, levelOffset);\n\n const previousLevel = getLevel(previousItem.path);\n\n // console.log('[over]', overLevel, previousLevel, levelOffset);\n\n if (previousLevel === overLevel - 1) {\n if (Path.hasChild(previousItem.id, active.item.id)) {\n // Previous is already parent of Active, rearrange.\n const operation = previousItem.node.properties.onRearrangeChildren\n ? ('rearrange' as const)\n : ('reject' as const);\n return { operation, details: { levelOffset } };\n } else {\n // Previous is not yet parent of Active, check transfer or copy.\n const operation = resolveMigrationOperation(graph, activeNode, previousItem.path, previousItem.node);\n // console.log('[migration result]', operation, 'Previous is not yet parent of Active, check transfer or copy.');\n return { operation, details: { levelOffset } };\n }\n } else if (previousLevel === overLevel) {\n const parent = getParent(graph, previousItem.node, previousItem.path);\n const parentPath = previousItem.path.slice(0, previousItem.path.length - 1);\n if (Path.siblings(previousItem.id, active.item.id)) {\n // Previous is already a sibling of Active, rearrange.\n const operation = parent?.properties.onRearrangeChildren ? ('rearrange' as const) : ('reject' as const);\n return { operation, details: { levelOffset } };\n } else {\n // Previous is not yet a sibling of Active, transfer/copy to Previous’s parent.\n const operation = resolveMigrationOperation(graph, activeNode, parentPath, parent);\n // console.log(\n // '[migration result]',\n // operation,\n // 'Previous is not yet a sibling of Active, transfer/copy to Previous’s parent.',\n // );\n return { operation, details: { levelOffset } };\n }\n } else if (nextItem && nextItem.path) {\n const nextLevel = getLevel(nextItem.path);\n if (nextLevel === overLevel) {\n const parent = getParent(graph, nextItem.node, nextItem.path);\n const parentPath = nextItem.path.slice(0, nextItem.path.length - 1);\n if (Path.siblings(nextItem.id, active.item.id)) {\n // Next is already a sibling of Active, rearrange.\n const operation = parent?.properties.onRearrangeChildren ? ('rearrange' as const) : ('reject' as const);\n return { operation, details: { levelOffset } };\n } else {\n // Next is not yet a sibling of Active, transfer to Next’s parent.\n const operation = resolveMigrationOperation(graph, activeNode, parentPath, parent);\n // console.log(\n // '[migration result]',\n // operation,\n // 'Next is not yet a sibling of Active, transfer to Next’s parent.',\n // );\n return { operation, details: { levelOffset } };\n }\n } else {\n // console.log('[migration result]', 'reject');\n return { operation: 'reject' as const, details: { levelOffset } };\n }\n } else {\n // console.log('[migration result]', 'reject');\n return { operation: 'reject' as const, details: { levelOffset } };\n }\n },\n [root, items],\n );\n\n const handleDrop = useCallback(\n ({ operation, active, over, details = {} }: MosaicDropEvent<number, NavTreeItemMoveDetails>) => {\n if (Path.first(over.path) !== root.id) {\n return undefined;\n }\n const { levelOffset = 0 } = details;\n const overPosition = over.position ?? 0;\n\n const nextItems = arrayMove(\n items,\n items.findIndex(({ id }) => id === active.item.id),\n overPosition,\n );\n\n const activeNode = 'node' in active.item ? (active.item as NavTreeItem).node : undefined;\n const activeParentId = Path.parent(active.item.id);\n\n if (!activeNode) {\n return undefined;\n }\n\n const activeParent = getParent(graph, activeNode, (active.item as NavTreeItem).path ?? []);\n\n if (operation === 'rearrange') {\n void activeParent?.properties.onRearrangeChildren?.(\n nextItems.filter(({ id }) => Path.hasChild(activeParentId, id)).map(({ node }) => node.data),\n );\n return null;\n } else {\n const previousItem: NavTreeItem | undefined = nextItems[overPosition - 1];\n const nextItem: NavTreeItem | undefined = nextItems[overPosition + 1];\n\n const overLevel = resolveItemLevel(overPosition, active.item.id, levelOffset);\n\n const previousLevel = getLevel(previousItem.path);\n\n if (operation === 'copy') {\n if (previousLevel === overLevel - 1) {\n void previousItem.node.properties.onCopy?.(activeNode, 0);\n return null;\n } else if (previousLevel === overLevel) {\n const parent = getParent(graph, previousItem.node, previousItem.path ?? []);\n void parent?.properties.onCopy?.(\n activeNode,\n getChildren(graph, parent).findIndex(({ id }) => id === previousItem.node.id) + 1,\n );\n return null;\n } else if (nextItem && nextItem.path) {\n const parent = getParent(graph, nextItem.node, nextItem.path ?? []);\n void parent?.properties.onCopy?.(\n activeNode,\n getChildren(graph, parent).findIndex(({ id }) => id === nextItem.node.id),\n );\n return null;\n }\n } else if (operation === 'transfer') {\n const onTransferEnd = activeParent?.properties.onTransferEnd;\n if (!onTransferEnd) {\n return undefined;\n } else if (previousLevel === overLevel - 1) {\n const onTransferStart = previousItem.node.properties.onTransferStart;\n if (onTransferStart) {\n void onTransferEnd(activeNode, previousItem.node);\n void onTransferStart(activeNode, 0);\n return null;\n }\n } else if (previousLevel === overLevel && previousItem.path) {\n const parent = getParent(graph, previousItem.node, previousItem.path);\n if (parent?.properties.onTransferStart) {\n void onTransferEnd(activeNode, previousItem.node);\n void parent.properties.onTransferStart(\n activeNode,\n getChildren(graph, parent).findIndex(({ id }) => id === previousItem.node.id) + 1,\n );\n return null;\n }\n } else if (nextItem && nextItem.path) {\n const parent = getParent(graph, nextItem.node, nextItem.path);\n if (parent?.properties.onTransferStart) {\n void onTransferEnd(activeNode, previousItem.node);\n void parent.properties.onTransferStart(\n activeNode,\n getChildren(graph, parent).findIndex(({ id }) => id === nextItem.node.id),\n );\n return null;\n }\n }\n }\n }\n return undefined;\n },\n [root, items],\n );\n\n const handleDragEnd = useCallback(() => {\n onOpenItemIdsChange({ ...openItemIds });\n }, [onOpenItemIdsChange, openItemIds]);\n\n return (\n <Mosaic.Root>\n <Mosaic.DragOverlay />\n <ElevationProvider elevation='chrome'>\n <div\n role='none'\n className='bs-full overflow-hidden row-span-3 grid grid-cols-1 grid-rows-[min-content_1fr_min-content]'\n >\n <Surface role='search-input' limit={1} />\n {/* TODO(thure): what gives this an inline `overflow: initial`? */}\n <div role='none' className='!overflow-y-auto'>\n <NavTree\n id={root.id}\n items={items}\n current={activeIds}\n attended={attended}\n type={NODE_TYPE}\n open={openItemIds}\n onNavigate={handleNavigate}\n onItemOpenChange={handleItemOpenChange}\n onMove={handleMove}\n onDrop={handleDrop}\n onDragEnd={handleDragEnd}\n popoverAnchorId={popoverAnchorId}\n renderPresence={renderPresence}\n resolveItemLevel={resolveItemLevel}\n loadDescendents={loadDescendents}\n />\n </div>\n <NavTreeFooter />\n </div>\n </ElevationProvider>\n </Mosaic.Root>\n );\n};\n", "//\n// Copyright 2024 DXOS.org\n//\n\nimport { ArrowSquareOut, GearSix, Warning } from '@phosphor-icons/react';\nimport { formatDistance } from 'date-fns/formatDistance';\nimport React from 'react';\n\nimport {\n SettingsAction,\n useResolvePlugin,\n parseNavigationPlugin,\n useIntentDispatcher,\n type LayoutPart,\n} from '@dxos/app-framework';\nimport { useConfig } from '@dxos/react-client';\nimport {\n Button,\n Tooltip,\n Popover,\n useSidebars,\n useTranslation,\n Link,\n Message,\n Trans,\n useDefaultValue,\n} from '@dxos/react-ui';\nimport { PlankHeading } from '@dxos/react-ui-deck';\nimport { getSize, 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\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 dispatch = useIntentDispatcher();\n const { version, timestamp, commitHash } = config.values.runtime?.app?.build ?? {};\n const navigationPlugin = useResolvePlugin(parseNavigationPlugin);\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 'bs-[--rail-size] pbe-[env(safe-area-inset-bottom)] box-content border-separator border-bs pli-1 flex 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{version}\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 <Warning weight='duotone' className='inline mie-2 is-6 bs-6' />\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 <ArrowSquareOut className='inline mis-1' weight='bold' />\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 <ArrowSquareOut className='inline mis-1' weight='bold' />\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 <Button\n variant='ghost'\n classNames={buttonStyles}\n data-testid='treeView.openSettings'\n data-joyride='welcome/settings'\n {...(!navigationSidebarOpen && { tabIndex: -1 })}\n onClick={() => dispatch({ action: SettingsAction.OPEN })}\n >\n <span className='sr-only'>{t('open settings label')}</span>\n <GearSix className={mx(getSize(4), 'rotate-90')} />\n </Button>\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 {navigationPlugin?.meta.id === 'dxos.org/plugin/deck' && (\n <PlankHeading.Controls\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", "//\n// Copyright 2023 DXOS.org\n//\n\nimport {\n type Action,\n type Node,\n type NodeFilter,\n type Graph,\n ACTION_TYPE,\n ACTION_GROUP_TYPE,\n isAction,\n} from '@dxos/app-graph';\nimport { Path } from '@dxos/react-ui-mosaic';\nimport {\n type NavTreeActionNode,\n type NavTreeItemActions,\n type NavTreeItemNode,\n type NavTreeItemNodeProperties,\n type OpenItemIds,\n} from '@dxos/react-ui-navtree';\nimport { type MaybePromise, nonNullable } from '@dxos/util';\n\nexport type NavTreeItemGraphNode = Node<\n any,\n NavTreeItemNodeProperties &\n Partial<{\n persistenceClass: string;\n persistenceKey: string;\n acceptPersistenceClass: Set<string>;\n acceptPersistenceKey: Set<string>;\n onRearrangeChildren: (nextOrder: NavTreeItemGraphNode[]) => MaybePromise<void>;\n onCopy: (activeNode: NavTreeItemGraphNode, index?: number) => MaybePromise<void>;\n onTransferStart: (activeNode: NavTreeItemGraphNode, index?: number) => MaybePromise<void>;\n onTransferEnd: (activeNode: NavTreeItemGraphNode, destinationParent: NavTreeItemGraphNode) => MaybePromise<void>;\n }>\n>;\nexport type NavTreeItem = NavTreeItemNode<NavTreeItemGraphNode>;\n\nexport const getParent = (\n graph: Graph,\n node: NavTreeItemGraphNode,\n path: string[],\n): NavTreeItemGraphNode | undefined => {\n const parentId = path[path.length - 2];\n return graph.nodes(node, { relation: 'inbound' }).find((n) => n.id === parentId) as NavTreeItemGraphNode | undefined;\n};\n\nexport const getPersistenceParent = (\n graph: Graph,\n node: NavTreeItemGraphNode,\n path: string[],\n persistenceClass: string,\n): NavTreeItemGraphNode | null => {\n if (node.properties.acceptPersistenceClass?.has(persistenceClass)) {\n return node;\n } else {\n const parent = getParent(graph, node, path);\n return parent ? getPersistenceParent(graph, parent, path.slice(0, path.length - 1), persistenceClass) : null;\n }\n};\n\nexport const resolveMigrationOperation = (\n graph: Graph,\n activeNode: NavTreeItemGraphNode,\n destinationPath: string[],\n destinationRelatedNode?: NavTreeItemGraphNode,\n): 'transfer' | 'copy' | 'reject' => {\n const activeClass = activeNode.properties.persistenceClass;\n if (destinationRelatedNode && activeClass) {\n const persistenceParent = getPersistenceParent(graph, destinationRelatedNode, destinationPath, activeClass);\n if (persistenceParent) {\n const activeKey = activeNode.properties.persistenceKey;\n if (activeKey && persistenceParent?.properties.acceptPersistenceKey) {\n return persistenceParent.properties.acceptPersistenceKey.has(activeKey) &&\n destinationRelatedNode.properties.onTransferStart\n ? 'transfer'\n : destinationRelatedNode.properties.onCopy\n ? 'copy'\n : 'reject';\n } else {\n return 'reject';\n }\n } else {\n return 'reject';\n }\n } else {\n return 'reject';\n }\n};\n\n// TODO(wittjosiah): Move into node implementation?\nexport const sortActions = (actions: Action[]): Action[] =>\n actions.sort((a, b) => {\n if (a.properties.disposition === b.properties.disposition) {\n return 0;\n }\n\n if (a.properties.disposition === 'toolbar') {\n return -1;\n }\n\n return 1;\n });\n\nexport const getTreeItemNode = (treeItems: NavTreeItemNode[], path?: string[]): NavTreeItemNode | undefined => {\n if (!path) {\n return undefined;\n }\n\n return treeItems.find((treeItem) => {\n return treeItem.path && !treeItem.path.find((id, index) => path[index] !== id);\n });\n};\n\nexport const getChildren = (\n graph: Graph,\n node: NavTreeItemGraphNode,\n filter?: NodeFilter,\n path: string[] = [],\n): NavTreeItemGraphNode[] => {\n return graph\n .nodes(node, { relation: 'outbound', filter })\n .map((n) => {\n // Break cycles.\n const nextPath = [...path, node.id];\n return nextPath.includes(n.id) ? undefined : (n as NavTreeItemGraphNode);\n })\n .filter(nonNullable) as NavTreeItemGraphNode[];\n};\n\ntype FlattenedActions = Required<Pick<NavTreeItemNode, 'actions' | 'groupedActions'>>;\n\nexport const getActions = (graph: Graph, node: NavTreeItemGraphNode): FlattenedActions => {\n return graph.actions(node).reduce(\n (acc: FlattenedActions, arg) => {\n acc.actions.push(arg as unknown as NavTreeItemActions[number]);\n if (!isAction(arg)) {\n const actionGroup = graph.actions(arg);\n acc.groupedActions[arg.id] = actionGroup as unknown as NavTreeActionNode[];\n }\n return acc;\n },\n { actions: [], groupedActions: {} },\n );\n};\n\nexport const expandChildrenAndActions = (graph: Graph, node: Node) => {\n return Promise.all([expandChildren(graph, node), expandActions(graph, node)]);\n};\n\nexport const expandChildren = (graph: Graph, node: Node) => {\n return graph.expand(node, 'outbound');\n};\n\nexport const expandActions = (graph: Graph, node: Node) => {\n return Promise.all([graph.expand(node, 'outbound', ACTION_TYPE), graph.expand(node, 'outbound', ACTION_GROUP_TYPE)]);\n};\n\nfunction* navTreeItemVisitor(\n graph: Graph,\n node: NavTreeItemGraphNode,\n openItemIds: OpenItemIds,\n path: string[] = [],\n filter?: NodeFilter,\n): Generator<NavTreeItem> {\n const l0Children = getChildren(graph, node, filter, path);\n const { actions: l0Actions, groupedActions: l0GroupedActions } = getActions(graph, node);\n\n const stack: NavTreeItem[] = [\n {\n id: node.id,\n node,\n path: [],\n parentOf: (l0Children ?? []).map(({ id }) => id),\n actions: l0Actions,\n groupedActions: l0GroupedActions,\n },\n ];\n\n while (stack.length > 0) {\n const nextItem = stack.pop()!;\n if ((nextItem.path?.length ?? 0) > 0) {\n yield nextItem;\n }\n const { id, node, path } = nextItem;\n const children = getChildren(graph, node, filter, path);\n if (path?.length === 0 || (id ?? 'never') in openItemIds) {\n for (let i = children.length - 1; i >= 0; i--) {\n const child = children[i] as NavTreeItemGraphNode;\n const childPath = path ? [...path, child.id] : [child.id];\n const childChildren = getChildren(graph, child, filter, childPath);\n const { actions: childActions, groupedActions: childGroupedActions } = getActions(graph, child);\n stack.push({\n id: Path.create(...childPath),\n node: child,\n path: childPath,\n ...((childChildren?.length ?? 0) > 0 && {\n parentOf: childChildren!.map(({ id }) => Path.create(...childPath, id)),\n }),\n actions: childActions,\n groupedActions: childGroupedActions,\n });\n }\n }\n }\n}\n\n/**\n * Get a reactive tree node from a graph node.\n */\nexport const treeItemsFromRootNode = (\n graph: Graph,\n rootNode: NavTreeItemGraphNode,\n openItemIds: OpenItemIds,\n path: string[] = [],\n filter?: NodeFilter,\n): NavTreeItem[] => {\n return Array.from(navTreeItemVisitor(graph, rootNode, openItemIds, path, filter));\n};\n\nexport const expandOpenGraphNodes = (graph: Graph, openItemIds: OpenItemIds) => {\n return Promise.all(\n Object.keys(openItemIds)\n .map((openItemId) => {\n const node = graph.findNode(Path.last(openItemId));\n return node && expandChildrenAndActions(graph, node as NavTreeItemGraphNode);\n })\n .filter(nonNullable),\n );\n};\n", "//\n// Copyright 2023 DXOS.org\n//\nimport { useEffect } from 'react';\n\nimport { type Node } from '@dxos/app-graph';\nimport { toLocalizedString, useTranslation } from '@dxos/react-ui';\n\nimport { NAVTREE_PLUGIN } from '../meta';\n\nexport const NavTreeDocumentTitle = ({ node }: { node?: Node }) => {\n const { t } = useTranslation(NAVTREE_PLUGIN);\n useEffect(() => {\n document.title = node ? toLocalizedString(node.properties.label, t) : t('current app name', { ns: 'appkit' });\n }, [node?.properties?.label]);\n return null;\n};\n", "//\n// Copyright 2024 DXOS.org\n//\n\nimport React from 'react';\n\nimport { useIntentDispatcher, useResolvePlugin } from '@dxos/app-framework';\nimport { ClientAction } from '@dxos/plugin-client/meta';\nimport { parseObservabilityPlugin } from '@dxos/plugin-observability';\nimport { useIdentity } from '@dxos/react-client/halo';\n\nimport { HaloButton } from './HaloButton';\n\n// TODO(thure): Refactor to be handled by a more appropriate plugin (ClientPlugin?).\nexport const NotchStart = () => {\n const identity = useIdentity();\n const observabilityPlugin = useResolvePlugin(parseObservabilityPlugin);\n const dispatch = useIntentDispatcher();\n return (\n <HaloButton\n size={8}\n identityKey={identity?.identityKey.toHex()}\n hue={identity?.profile?.data?.hue}\n emoji={identity?.profile?.data?.emoji}\n internal={observabilityPlugin?.provides?.observability?.group === 'dxos'}\n onClick={() => dispatch({ action: ClientAction.SHARE_IDENTITY })}\n />\n );\n};\n", "//\n// Copyright 2023 DXOS.org\n//\n\nimport React from 'react';\n\nimport { ConnectionState, useNetworkStatus } from '@dxos/react-client/mesh';\nimport { Avatar, type Size } from '@dxos/react-ui';\nimport { focusRing, mx } from '@dxos/react-ui-theme';\nimport { hexToFallback } from '@dxos/util';\n\nconst INTERNAL = 'https://avatars.githubusercontent.com/u/57182821';\n\nexport type HaloButtonProps = {\n size?: Size;\n identityKey?: string;\n hue?: string;\n emoji?: string;\n internal?: boolean;\n onClick?: () => void;\n};\n\nexport const HaloButton = (props: HaloButtonProps) => {\n const { onClick, identityKey, internal, size = 8 } = props;\n const fallbackValue = hexToFallback(identityKey ?? '0');\n const { swarm: connectionState } = useNetworkStatus();\n return (\n <button className={mx(focusRing, 'rounded grid place-items-center')} onClick={onClick}>\n <Avatar.Root\n size={size}\n variant='circle'\n status={connectionState === ConnectionState.OFFLINE ? 'error' : internal ? 'internal' : 'active'}\n hue={props.hue || fallbackValue.hue}\n >\n <Avatar.Frame data-testid='treeView.haloButton' data-joyride='welcome/halo'>\n {internal ? <Avatar.Image href={INTERNAL} /> : <Avatar.Fallback text={props.emoji || fallbackValue.emoji} />}\n </Avatar.Frame>\n </Avatar.Root>\n </button>\n );\n};\n", "//\n// Copyright 2024 DXOS.org\n//\n\nimport { MagnifyingGlass } from '@phosphor-icons/react';\nimport React from 'react';\n\nimport { LayoutAction, useIntent } from '@dxos/app-framework';\nimport { Button, useTranslation } from '@dxos/react-ui';\nimport { getSize } from '@dxos/react-ui-theme';\n\nimport { NAVTREE_PLUGIN } from '../meta';\n\n// TODO(thure): Refactor to be handled by a more appropriate plugin.\nexport const CommandsTrigger = () => {\n const { dispatch } = useIntent();\n const { t } = useTranslation(NAVTREE_PLUGIN);\n return (\n <Button\n classNames='pis-3 pie-2 gap-2 mli-1 mbs-1 min-bs-0 bs-[--rail-action] justify-start'\n onClick={() =>\n dispatch({\n action: LayoutAction.SET_LAYOUT,\n data: { element: 'dialog', component: `${NAVTREE_PLUGIN}/Commands`, dialogBlockAlign: 'start' },\n })\n }\n >\n <span className='text-description font-normal grow text-start'>{t('command list input placeholder')}</span>\n <MagnifyingGlass className={getSize(5)} />\n </Button>\n );\n};\n", "//\n// Copyright 2023 DXOS.org\n//\n\nimport { translations as navtreeTranslations } from '@dxos/react-ui-navtree';\n\nimport { NAVTREE_PLUGIN } from './meta';\n\nexport default [\n {\n 'en-US': {\n [NAVTREE_PLUGIN]: {\n 'open settings label': 'Settings',\n 'open commands label': 'Search commands',\n 'commands dialog title': 'Commands',\n 'command list input placeholder': 'Search for commands…',\n 'node actions menu invoker label': 'More options',\n 'warning title': 'WARNING',\n 'technology preview message': 'Composer is still in technology preview.',\n 'learn more label': 'Learn more',\n 'released message': 'This version released {{released}}.',\n 'see release label': 'See release on GitHub',\n 'powered by dxos message': 'Powered by <dxos>DXOS</dxos>',\n },\n },\n },\n ...navtreeTranslations,\n];\n", "//\n// Copyright 2023 DXOS.org\n//\n\nimport { NavTreePlugin } from './NavTreePlugin';\n\nexport default NavTreePlugin;\n\nexport * from './NavTreePlugin';\nexport * from './util';\n"],
5
- "mappings": "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",
6
- "names": ["React", "resolvePlugin", "parseIntentPlugin", "LayoutAction", "parseGraphPlugin", "NavigationAction", "createExtension", "isAction", "isGraphNode", "Keyboard", "LocalStorageStore", "Path", "getHostPlatform", "React", "useMemo", "useState", "useIntentDispatcher", "LayoutAction", "isActionGroup", "isAction", "Keyboard", "keySymbols", "useGraph", "Button", "Dialog", "Icon", "useTranslation", "toLocalizedString", "SearchList", "descriptionText", "mx", "getHostPlatform", "CommandsDialogContent", "selected", "initial", "t", "useTranslation", "NAVTREE_PLUGIN", "setSelected", "useState", "dispatch", "useIntentDispatcher", "graph", "useGraph", "allActions", "useMemo", "current", "Keyboard", "singleton", "getCurrentContext", "actionMap", "Set", "actions", "traverse", "visitor", "node", "path", "isAction", "isActionGroup", "has", "id", "startsWith", "slice", "join", "add", "push", "sort", "a", "b", "toLocalizedString", "properties", "label", "toLowerCase", "localeCompare", "group", "find", "Dialog", "Content", "classNames", "Title", "ns", "SearchList", "Root", "Input", "placeholder", "map", "action", "shortcut", "keyBinding", "getHostPlatform", "Item", "value", "key", "onSelect", "disabled", "LayoutAction", "SET_LAYOUT", "data", "element", "state", "setTimeout", "nodes", "relation", "caller", "KEY_BINDING", "testId", "Icon", "icon", "size", "span", "className", "mx", "descriptionText", "keySymbols", "Close", "asChild", "Button", "variant", "React", "Fragment", "getGraph", "Popover", "toLocalizedString", "useTranslation", "PlankHeading", "TREE_ITEM_MAIN_HEADING", "NavBarStart", "activeNode", "popoverAnchorId", "t", "useTranslation", "NAVTREE_PLUGIN", "ActionRoot", "id", "KEY_BINDING", "Popover", "Anchor", "Fragment", "graph", "getGraph", "actions", "label", "toLocalizedString", "properties", "menuTriggerLabel", "React", "PlankHeading", "ActionsMenu", "icon", "attendableId", "triggerLabel", "onAction", "action", "data", "node", "caller", "Label", "React", "useCallback", "useMemo", "NavigationAction", "Surface", "useIntentDispatcher", "getGraph", "isAction", "isActionLike", "ElevationProvider", "useMediaQuery", "useSidebars", "Mosaic", "Path", "NavTree", "getLevel", "arrayMove", "ArrowSquareOut", "GearSix", "Warning", "formatDistance", "React", "SettingsAction", "useResolvePlugin", "parseNavigationPlugin", "useIntentDispatcher", "useConfig", "Button", "Tooltip", "Popover", "useSidebars", "useTranslation", "Link", "Message", "Trans", "useDefaultValue", "PlankHeading", "getSize", "mx", "buttonStyles", "repo", "NavTreeFooter", "props", "layoutPart", "useDefaultValue", "config", "useConfig", "t", "useTranslation", "NAVTREE_PLUGIN", "navigationSidebarOpen", "useSidebars", "dispatch", "useIntentDispatcher", "version", "timestamp", "commitHash", "values", "runtime", "app", "build", "navigationPlugin", "useResolvePlugin", "parseNavigationPlugin", "releaseUrl", "env", "DX_ENVIRONMENT", "previewUrl", "React", "div", "role", "className", "mx", "Popover", "Root", "Trigger", "asChild", "Button", "variant", "classNames", "tabIndex", "Portal", "Content", "side", "Message", "valence", "Title", "Warning", "weight", "span", "Body", "br", "Link", "href", "target", "rel", "ArrowSquareOut", "p", "released", "formatDistance", "Date", "addSuffix", "Trans", "i18nKey", "components", "dxos", "Arrow", "Tooltip", "data-testid", "data-joyride", "onClick", "action", "SettingsAction", "OPEN", "GearSix", "getSize", "meta", "id", "PlankHeading", "Controls", "capabilities", "incrementStart", "incrementEnd", "_type", "ACTION_TYPE", "ACTION_GROUP_TYPE", "isAction", "Path", "nonNullable", "getParent", "graph", "node", "path", "parentId", "length", "nodes", "relation", "find", "n", "id", "getPersistenceParent", "persistenceClass", "properties", "acceptPersistenceClass", "has", "parent", "slice", "resolveMigrationOperation", "activeNode", "destinationPath", "destinationRelatedNode", "activeClass", "persistenceParent", "activeKey", "persistenceKey", "acceptPersistenceKey", "onTransferStart", "onCopy", "sortActions", "actions", "sort", "a", "b", "disposition", "getTreeItemNode", "treeItems", "undefined", "treeItem", "index", "getChildren", "filter", "map", "nextPath", "includes", "nonNullable", "getActions", "reduce", "acc", "arg", "push", "isAction", "actionGroup", "groupedActions", "expandChildrenAndActions", "Promise", "all", "expandChildren", "expandActions", "expand", "ACTION_TYPE", "ACTION_GROUP_TYPE", "navTreeItemVisitor", "openItemIds", "l0Children", "l0Actions", "l0GroupedActions", "stack", "parentOf", "nextItem", "pop", "children", "i", "child", "childPath", "childChildren", "childActions", "childGroupedActions", "Path", "create", "treeItemsFromRootNode", "rootNode", "Array", "from", "expandOpenGraphNodes", "Object", "keys", "openItemId", "findNode", "last", "NODE_TYPE", "renderPresence", "node", "React", "Surface", "role", "data", "object", "NavTreeContainer", "root", "activeIds", "openItemIds", "onOpenItemIdsChange", "attended", "popoverAnchorId", "closeNavigationSidebar", "useSidebars", "NAVTREE_PLUGIN", "isLg", "useMediaQuery", "ssr", "dispatch", "useIntentDispatcher", "graph", "useMemo", "getGraph", "items", "treeItemsFromRootNode", "loadDescendents", "useCallback", "expandActions", "isActionLike", "expandChildren", "then", "Promise", "all", "getChildren", "flatMap", "child", "handleNavigate", "actions", "action", "NavigationAction", "OPEN", "activeParts", "main", "id", "defaultAction", "find", "properties", "disposition", "isAction", "handleItemOpenChange", "path", "nextOpen", "_", "nextOpenItemIds", "resolveItemLevel", "overPosition", "activeId", "levelOffset", "nextItems", "arrayMove", "findIndex", "previousItem", "nextItem", "Math", "min", "getLevel", "max", "handleMove", "active", "over", "details", "floor", "delta", "x", "position", "item", "activeNode", "undefined", "operation", "overLevel", "previousLevel", "Path", "hasChild", "onRearrangeChildren", "resolveMigrationOperation", "parent", "getParent", "parentPath", "slice", "length", "siblings", "nextLevel", "handleDrop", "first", "activeParentId", "activeParent", "filter", "map", "onCopy", "onTransferEnd", "onTransferStart", "handleDragEnd", "Mosaic", "Root", "DragOverlay", "ElevationProvider", "elevation", "div", "className", "limit", "NavTree", "current", "type", "open", "onNavigate", "onItemOpenChange", "onMove", "onDrop", "onDragEnd", "NavTreeFooter", "useEffect", "toLocalizedString", "useTranslation", "NavTreeDocumentTitle", "node", "t", "useTranslation", "NAVTREE_PLUGIN", "useEffect", "document", "title", "toLocalizedString", "properties", "label", "ns", "React", "useIntentDispatcher", "useResolvePlugin", "ClientAction", "parseObservabilityPlugin", "useIdentity", "React", "ConnectionState", "useNetworkStatus", "Avatar", "focusRing", "mx", "hexToFallback", "INTERNAL", "HaloButton", "props", "onClick", "identityKey", "internal", "size", "fallbackValue", "hexToFallback", "swarm", "connectionState", "useNetworkStatus", "React", "button", "className", "mx", "focusRing", "Avatar", "Root", "variant", "status", "ConnectionState", "OFFLINE", "hue", "Frame", "data-testid", "data-joyride", "Image", "href", "Fallback", "text", "emoji", "NotchStart", "identity", "useIdentity", "observabilityPlugin", "useResolvePlugin", "parseObservabilityPlugin", "dispatch", "useIntentDispatcher", "React", "HaloButton", "size", "identityKey", "toHex", "hue", "profile", "data", "emoji", "internal", "provides", "observability", "group", "onClick", "action", "ClientAction", "SHARE_IDENTITY", "MagnifyingGlass", "React", "LayoutAction", "useIntent", "Button", "useTranslation", "getSize", "CommandsTrigger", "dispatch", "useIntent", "t", "useTranslation", "NAVTREE_PLUGIN", "React", "Button", "classNames", "onClick", "action", "LayoutAction", "SET_LAYOUT", "data", "element", "component", "dialogBlockAlign", "span", "className", "MagnifyingGlass", "getSize", "translations", "navtreeTranslations", "NAVTREE_PLUGIN", "navtreeTranslations", "NavTreePlugin", "state", "LocalStorageStore", "openItemIds", "root", "graphPlugin", "graph", "handleOpenItemIdsChange", "nextOpenItemIds", "values", "expandOpenGraphNodes", "meta", "ready", "plugins", "resolvePlugin", "parseGraphPlugin", "provides", "getChildren", "getActions", "prop", "key", "storageKey", "type", "json", "subscribeTraverse", "visitor", "node", "path", "shortcut", "properties", "keyBinding", "availablePlatforms", "Object", "keys", "platform", "getHostPlatform", "includes", "macos", "windows", "undefined", "isAction", "Keyboard", "singleton", "getContext", "slice", "join", "bind", "handler", "data", "caller", "KEY_BINDING", "label", "initialize", "setCurrentContext", "id", "unload", "destroy", "metadata", "records", "NODE_TYPE", "parse", "item", "object", "surface", "component", "role", "NAVTREE_PLUGIN", "selected", "subject", "React", "CommandsDialogContent", "NavTreeContainer", "activeIds", "onOpenItemIdsChange", "attended", "popoverAnchorId", "NavTreeDocumentTitle", "isGraphNode", "activeNode", "NavBarStart", "disposition", "NotchStart", "CommandsTrigger", "intent", "resolver", "action", "NavigationAction", "EXPOSE", "getPath", "target", "Array", "isArray", "additionalOpenItems", "length", "reduce", "acc", "_", "index", "itemId", "Path", "create", "builder", "intentPlugin", "parseIntentPlugin", "createExtension", "filter", "actions", "dispatch", "LayoutAction", "SET_LAYOUT", "element", "dialogBlockAlign", "ns", "icon", "translations", "NavTreePlugin"]
4
+ "sourcesContent": ["//\n// Copyright 2023 DXOS.org\n//\n\nimport { MagnifyingGlass, type IconProps } from '@phosphor-icons/react';\nimport React from 'react';\n\nimport {\n type GraphBuilderProvides,\n resolvePlugin,\n type MetadataRecordsProvides,\n type PluginDefinition,\n type SurfaceProvides,\n type TranslationsProvides,\n type Plugin,\n type IntentResolverProvides,\n parseIntentPlugin,\n LayoutAction,\n type GraphProvides,\n parseGraphPlugin,\n NavigationAction,\n} from '@dxos/app-framework';\nimport { createExtension, type Graph, isAction, isGraphNode, type Node } from '@dxos/app-graph';\nimport { Keyboard } from '@dxos/keyboard';\nimport { LocalStorageStore } from '@dxos/local-storage';\nimport { Path } from '@dxos/react-ui-mosaic';\nimport { type OpenItemIds } from '@dxos/react-ui-navtree';\nimport { getHostPlatform } from '@dxos/util';\n\nimport {\n CommandsDialogContent,\n NODE_TYPE,\n NavBarStart,\n NavTreeContainer,\n NavTreeDocumentTitle,\n NotchStart,\n} from './components';\nimport { CommandsTrigger } from './components/CommandsTrigger';\nimport meta, { KEY_BINDING, NAVTREE_PLUGIN } from './meta';\nimport translations from './translations';\nimport { expandOpenGraphNodes, getActions, getChildren, type NavTreeItem, type NavTreeItemGraphNode } from './util';\n\nexport type NavTreePluginProvides = SurfaceProvides &\n MetadataRecordsProvides &\n GraphBuilderProvides &\n TranslationsProvides &\n IntentResolverProvides;\n\ntype NavTreeState = { root?: NavTreeItemGraphNode; openItemIds: OpenItemIds };\n\nexport const NavTreePlugin = (): PluginDefinition<NavTreePluginProvides> => {\n const state = new LocalStorageStore<NavTreeState>('dxos.org/settings/navtree', {\n // TODO(thure): Do this dynamically.\n openItemIds: { root: true, 'dxos.org/plugin/space-spaces': true, 'dxos.org/plugin/files': true },\n });\n\n let graphPlugin: Plugin<GraphProvides> | undefined;\n let graph: Graph | undefined;\n\n const handleOpenItemIdsChange = (nextOpenItemIds: OpenItemIds) => {\n // TODO(thure): This might become a localstorage leak; openItemIds that no longer exist should be removed from this map.\n state.values.openItemIds = nextOpenItemIds;\n if (graph) {\n void expandOpenGraphNodes(graph, nextOpenItemIds);\n }\n };\n\n return {\n meta,\n ready: async (plugins) => {\n graphPlugin = resolvePlugin(plugins, parseGraphPlugin);\n graph = graphPlugin?.provides.graph;\n if (!graph) {\n return;\n }\n\n state.values.root = graph.root as NavTreeItemGraphNode;\n getChildren(graph, state.values.root);\n getActions(graph, state.values.root);\n\n state.prop({ key: 'openItemIds', storageKey: 'openItemIds', type: LocalStorageStore.json<OpenItemIds>() });\n\n void expandOpenGraphNodes(graph, state.values.openItemIds);\n\n // TODO(wittjosiah): Factor out.\n // TODO(wittjosiah): Handle removal of actions.\n graph.subscribeTraverse({\n visitor: (node, path) => {\n let shortcut: string | undefined;\n if (typeof node.properties.keyBinding === 'object') {\n const availablePlatforms = Object.keys(node.properties.keyBinding);\n const platform = getHostPlatform();\n shortcut = availablePlatforms.includes(platform)\n ? node.properties.keyBinding[platform]\n : platform === 'ios'\n ? node.properties.keyBinding.macos // Fallback to macos if ios-specific bindings not provided.\n : platform === 'linux' || platform === 'unknown'\n ? node.properties.keyBinding.windows // Fallback to windows if platform-specific bindings not provided.\n : undefined;\n } else {\n shortcut = node.properties.keyBinding;\n }\n\n if (shortcut && isAction(node)) {\n Keyboard.singleton.getContext(path.slice(0, -1).join('/')).bind({\n shortcut,\n handler: () => {\n void node.data({ node, caller: KEY_BINDING });\n },\n data: node.properties.label,\n });\n }\n },\n });\n\n // TODO(burdon): Create context and plugin.\n Keyboard.singleton.initialize();\n Keyboard.singleton.setCurrentContext(graphPlugin?.provides.graph.root.id);\n },\n unload: async () => {\n Keyboard.singleton.destroy();\n },\n provides: {\n metadata: {\n records: {\n [NODE_TYPE]: {\n parse: (item: NavTreeItem, type: string) => {\n switch (type) {\n case 'node':\n return item.node;\n case 'object':\n return item.node.data;\n case 'view-object':\n return { id: `${item.id}-view`, object: item.node.data };\n }\n },\n },\n },\n },\n surface: {\n component: ({ data, role }) => {\n switch (data.component) {\n case `${NAVTREE_PLUGIN}/Commands`: {\n const selected = typeof data.subject === 'string' ? data.subject : undefined;\n return <CommandsDialogContent selected={selected} />;\n }\n }\n\n switch (role) {\n case 'navigation':\n if (state.values.root && state.values.openItemIds) {\n return (\n <NavTreeContainer\n root={state.values.root}\n activeIds={data.activeIds as Set<string>}\n openItemIds={state.values.openItemIds}\n onOpenItemIdsChange={handleOpenItemIdsChange}\n attended={data.attended as Set<string>}\n popoverAnchorId={data.popoverAnchorId as string}\n />\n );\n }\n break;\n\n case 'document-title': {\n return <NavTreeDocumentTitle node={isGraphNode(data.activeNode) ? data.activeNode : undefined} />;\n }\n\n case 'navbar-start': {\n if (state.values.root && data.activeNode) {\n return {\n node: (\n <NavBarStart\n activeNode={data.activeNode as Node}\n popoverAnchorId={data.popoverAnchorId as string | undefined}\n />\n ),\n disposition: 'hoist',\n };\n }\n break;\n }\n\n case 'notch-start':\n return <NotchStart />;\n\n case 'search-input':\n return {\n node: <CommandsTrigger />,\n disposition: 'fallback',\n };\n }\n\n return null;\n },\n },\n intent: {\n resolver: (intent) => {\n switch (intent.action) {\n case NavigationAction.EXPOSE: {\n if (graph && intent.data?.id) {\n const path = graph.getPath({ target: intent.data.id });\n if (Array.isArray(path)) {\n const additionalOpenItems = [...Array(path.length - 1)].reduce((acc: OpenItemIds, _, index) => {\n const itemId = Path.create(...path.slice(1, index + 1));\n if (itemId.length > 0) {\n acc[itemId] = true;\n }\n return acc;\n }, {});\n state.values.openItemIds = {\n ...additionalOpenItems,\n ...state.values.openItemIds,\n };\n }\n }\n break;\n }\n }\n },\n },\n graph: {\n builder: (plugins) => {\n // TODO(burdon): Move to separate plugin (for keys and command k). Move bindings from LayoutPlugin.\n const intentPlugin = resolvePlugin(plugins, parseIntentPlugin);\n\n return [\n createExtension({\n id: NAVTREE_PLUGIN,\n filter: (node): node is Node<null> => node.id === 'root',\n actions: () => [\n {\n id: 'dxos.org/plugin/navtree/open-commands',\n data: async () => {\n await intentPlugin?.provides.intent.dispatch({\n action: LayoutAction.SET_LAYOUT,\n data: {\n element: 'dialog',\n component: `${NAVTREE_PLUGIN}/Commands`,\n dialogBlockAlign: 'start',\n },\n });\n },\n properties: {\n label: ['open commands label', { ns: NAVTREE_PLUGIN }],\n icon: (props: IconProps) => <MagnifyingGlass {...props} />,\n iconSymbol: 'ph--magnifying-glass--regular',\n keyBinding: {\n macos: 'meta+k',\n windows: 'ctrl+k',\n },\n },\n },\n ],\n }),\n ];\n },\n },\n translations,\n },\n };\n};\n", "//\n// Copyright 2023 DXOS.org\n//\n\nimport { DotOutline } from '@phosphor-icons/react';\nimport React, { useMemo, useState } from 'react';\n\nimport { useIntentDispatcher, LayoutAction } from '@dxos/app-framework';\nimport { type ActionLike, isActionGroup, isAction } from '@dxos/app-graph';\nimport { Keyboard, keySymbols } from '@dxos/keyboard';\nimport { useGraph } from '@dxos/plugin-graph';\nimport { Button, Dialog, useTranslation, toLocalizedString } from '@dxos/react-ui';\nimport { SearchList } from '@dxos/react-ui-searchlist';\nimport { descriptionText, mx } from '@dxos/react-ui-theme';\nimport { getHostPlatform } from '@dxos/util';\n\nimport { KEY_BINDING, NAVTREE_PLUGIN } from '../meta';\n\n// TODO(wittjosiah): This probably deserves its own plugin but for now it lives here w/ other navigation UI.\nexport const CommandsDialogContent = ({ selected: initial }: { selected?: string }) => {\n const { t } = useTranslation(NAVTREE_PLUGIN);\n const [selected, setSelected] = useState<string | undefined>(initial);\n const dispatch = useIntentDispatcher();\n const { graph } = useGraph();\n\n // Traverse graph.\n // TODO(burdon): Factor out commonality with shortcut dialog.\n const allActions = useMemo(() => {\n // TODO(burdon): Get from navtree (not keyboard).\n const current = Keyboard.singleton.getCurrentContext();\n const actionMap = new Set<string>();\n const actions: ActionLike[] = [];\n graph?.traverse({\n visitor: (node, path) => {\n if (\n (isAction(node) || isActionGroup(node)) &&\n !actionMap.has(node.id) &&\n current.startsWith(path.slice(0, -1).join('/'))\n ) {\n actionMap.add(node.id);\n actions.push(node);\n }\n },\n });\n\n actions.sort((a, b) => {\n return toLocalizedString(a.properties.label, t)\n ?.toLowerCase()\n .localeCompare(toLocalizedString(b.properties.label, t)?.toLowerCase());\n });\n\n // console.log(JSON.stringify(actions, undefined, 2));\n return actions;\n }, [graph]);\n\n const group = allActions.find(({ id }) => id === selected);\n const actions = isActionGroup(group) ? graph.actions(group) : allActions;\n\n return (\n <Dialog.Content classNames={['md:max-is-[30rem] overflow-hidden mbs-12']}>\n <Dialog.Title>{t('commands dialog title', { ns: NAVTREE_PLUGIN })}</Dialog.Title>\n\n {/* TODO(burdon): BUG: Overscrolls container. */}\n <SearchList.Root label={t('command list input placeholder')} classNames='flex flex-col grow overflow-hidden my-2'>\n <SearchList.Input placeholder={t('command list input placeholder')} classNames='px-1 my-2' />\n <SearchList.Content classNames='max-bs-[24rem] overflow-auto'>\n {actions?.map((action) => {\n const label = toLocalizedString(action.properties.label, t);\n const shortcut =\n typeof action.properties.keyBinding === 'string'\n ? action.properties.keyBinding\n : action.properties.keyBinding?.[getHostPlatform()];\n const Icon = action.properties.icon ?? DotOutline;\n return (\n <SearchList.Item\n value={label}\n key={action.id}\n onSelect={() => {\n if (action.properties.disabled) {\n return;\n }\n\n if (isActionGroup(action)) {\n setSelected(action.id);\n return;\n }\n\n void dispatch({ action: LayoutAction.SET_LAYOUT, data: { element: 'dialog', state: false } });\n setTimeout(() => {\n const node = graph.nodes(group ?? action, { relation: 'inbound' })[0];\n void (node && isAction(action) && action.data({ node, caller: KEY_BINDING }));\n });\n }}\n classNames='flex items-center gap-2'\n disabled={action.properties.disabled}\n {...(action.properties?.testId && { 'data-testid': action.properties.testId })}\n >\n <Icon size={4} className={mx(!action.properties.icon && 'invisible')} />\n <span className='grow truncate'>{label}</span>\n {shortcut && <span className={mx('shrink-0', descriptionText)}>{keySymbols(shortcut).join('')}</span>}\n </SearchList.Item>\n );\n })}\n </SearchList.Content>\n </SearchList.Root>\n\n <Dialog.Close asChild>\n <Button variant='primary' classNames='mbs-2'>\n {t('close label', { ns: 'os' })}\n </Button>\n </Dialog.Close>\n </Dialog.Content>\n );\n};\n", "//\n// Copyright 2023 DXOS.org\n//\n\nimport { DotsThreeVertical } from '@phosphor-icons/react';\nimport React, { Fragment } from 'react';\n\nimport { getGraph, type Node } from '@dxos/app-graph';\nimport { Popover, toLocalizedString, useTranslation } from '@dxos/react-ui';\nimport { PlankHeading } from '@dxos/react-ui-deck';\n\nimport { KEY_BINDING, NAVTREE_PLUGIN } from '../meta';\n\nconst TREE_ITEM_MAIN_HEADING = 'TreeItemMainHeading';\n\nexport const NavBarStart = ({ activeNode, popoverAnchorId }: { activeNode: Node; popoverAnchorId?: string }) => {\n const { t } = useTranslation(NAVTREE_PLUGIN);\n\n const ActionRoot =\n popoverAnchorId === `dxos.org/ui/${TREE_ITEM_MAIN_HEADING}/${activeNode.id}` ||\n popoverAnchorId === `dxos.org/ui/${KEY_BINDING}/${activeNode.id}`\n ? Popover.Anchor\n : Fragment;\n\n const Icon = activeNode.properties?.icon ?? DotsThreeVertical;\n const graph = getGraph(activeNode);\n const actions = graph.actions(activeNode);\n const label = toLocalizedString(activeNode.properties?.label, t);\n\n const menuTriggerLabel = t('node actions menu invoker label');\n\n return (\n <>\n <ActionRoot>\n <PlankHeading.ActionsMenu\n Icon={Icon}\n attendableId={activeNode.id}\n triggerLabel={menuTriggerLabel}\n actions={actions}\n onAction={(action) =>\n typeof action.data === 'function' && action.data({ node: action as Node, caller: TREE_ITEM_MAIN_HEADING })\n }\n />\n </ActionRoot>\n <PlankHeading.Label attendableId={activeNode.id}>{label}</PlankHeading.Label>\n </>\n );\n};\n", "//\n// Copyright 2023 DXOS.org\n//\n\nimport React, { type ReactNode, useCallback, useMemo } from 'react';\n\nimport {\n NavigationAction,\n LayoutAction,\n Surface,\n SLUG_PATH_SEPARATOR,\n SLUG_COLLECTION_INDICATOR,\n useIntentDispatcher,\n} from '@dxos/app-framework';\nimport { getGraph, isAction, isActionLike } from '@dxos/app-graph';\nimport { ElevationProvider, useMediaQuery, useSidebars } from '@dxos/react-ui';\nimport { type MosaicDropEvent, type MosaicMoveEvent, Path } from '@dxos/react-ui-mosaic';\nimport {\n NavTree,\n type NavTreeItemNode,\n type NavTreeNode,\n getLevel,\n type NavTreeActionsNode,\n type NavTreeProps,\n type NavTreeItemMoveDetails,\n} from '@dxos/react-ui-navtree';\nimport { arrayMove } from '@dxos/util';\n\nimport { NavTreeFooter } from './NavTreeFooter';\nimport { NAVTREE_PLUGIN } from '../meta';\nimport {\n expandActions,\n expandChildren,\n getChildren,\n getParent,\n type NavTreeItem,\n type NavTreeItemGraphNode,\n resolveMigrationOperation,\n treeItemsFromRootNode,\n} from '../util';\n\n// TODO(thure): Is NavTree truly authoritative in this regard?\nexport const NODE_TYPE = 'dxos/app-graph/node';\n\nconst renderPresence = (node: NavTreeNode): ReactNode => (\n <Surface role='presence--glyph' data={{ object: node.data }} />\n);\n\nexport const NavTreeContainer = ({\n root,\n activeIds,\n openItemIds,\n onOpenItemIdsChange,\n attended,\n popoverAnchorId,\n}: {\n root: NavTreeItemGraphNode;\n activeIds: Set<string>;\n openItemIds: Record<string, true>;\n onOpenItemIdsChange: (nextOpenItemIds: Record<string, true>) => void;\n attended: Set<string>;\n popoverAnchorId?: string;\n}) => {\n const { closeNavigationSidebar } = useSidebars(NAVTREE_PLUGIN);\n const [isLg] = useMediaQuery('lg', { ssr: false });\n const dispatch = useIntentDispatcher();\n\n const graph = useMemo(() => getGraph(root), [root]);\n\n const items = treeItemsFromRootNode(graph, root, openItemIds);\n\n const loadDescendents = useCallback(\n (node: NavTreeNode | NavTreeActionsNode) => {\n void expandActions(graph, node as NavTreeItemGraphNode);\n if (!isActionLike(node)) {\n void expandChildren(graph, node as NavTreeItemGraphNode).then(() =>\n // Load one level deeper, which resolves some juddering observed on open/close.\n Promise.all(\n getChildren(graph, node as NavTreeItemGraphNode).flatMap((child) => [\n expandActions(graph, child),\n expandChildren(graph, child),\n ]),\n ),\n );\n }\n },\n [graph],\n );\n\n const handleNavigate = async ({ node, actions }: NavTreeItemNode) => {\n if (!node.data) {\n return;\n }\n\n // TODO(thure): Refactor opening related planks (comments in this case) to a generalized approach.\n await dispatch({\n action: NavigationAction.OPEN,\n data: {\n activeParts: node.data?.comments\n ? {\n main: [node.id],\n complementary: [`${node.id}${SLUG_PATH_SEPARATOR}comments${SLUG_COLLECTION_INDICATOR}`],\n }\n : {\n main: [node.id],\n },\n },\n });\n\n await dispatch({ action: LayoutAction.SCROLL_INTO_VIEW, data: { id: node.id } });\n\n const defaultAction = actions?.find((action) => action.properties?.disposition === 'default');\n if (isAction(defaultAction)) {\n void (defaultAction.data as () => void)();\n }\n if (!isLg) {\n closeNavigationSidebar();\n }\n };\n\n const handleItemOpenChange = ({ id, actions, path }: NavTreeItemNode, nextOpen: boolean) => {\n if (path) {\n if (nextOpen) {\n onOpenItemIdsChange({ ...openItemIds, [id]: true });\n } else {\n // TODO(thure): Filter vs single-remove, make setting?\n const { [id]: _, ...nextOpenItemIds } = openItemIds;\n onOpenItemIdsChange(nextOpenItemIds);\n }\n }\n\n // TODO(wittjosiah): This is a temporary solution to ensure spaces get enabled when they are expanded.\n const defaultAction = actions?.find((action) => action.properties?.disposition === 'default');\n if (isAction(defaultAction)) {\n void (defaultAction.data as () => void)();\n }\n };\n\n const resolveItemLevel = useCallback(\n (overPosition: number | undefined, activeId: string | undefined, levelOffset: number) => {\n if (!(typeof overPosition === 'number' && activeId)) {\n return 1;\n } else {\n const nextItems = arrayMove(\n items,\n items.findIndex(({ id }) => id === activeId),\n overPosition,\n );\n const previousItem: NavTreeItem | undefined = nextItems[overPosition - 1];\n const nextItem: NavTreeItem | undefined = nextItems[overPosition + 1];\n return Math.min(\n previousItem ? getLevel(previousItem?.path) + 1 : 1,\n Math.max(nextItem ? getLevel(nextItem?.path) : 1, getLevel(nextItems[overPosition].path) + levelOffset),\n );\n }\n },\n [items],\n );\n\n const handleMove: NavTreeProps['onMove'] = useCallback(\n ({ active, over, details }: MosaicMoveEvent<number, NavTreeItemMoveDetails>) => {\n const levelOffset = Math.floor((details?.delta?.x ?? 0) / 16);\n const overPosition = over.position ?? 0;\n\n const nextItems = arrayMove(\n items,\n items.findIndex(({ id }) => id === active.item.id),\n overPosition,\n );\n\n const previousItem: NavTreeItem | undefined = nextItems[overPosition - 1];\n const nextItem: NavTreeItem | undefined = nextItems[overPosition + 1];\n\n const activeNode = 'node' in active.item ? (active.item as NavTreeItem).node : undefined;\n\n if (!activeNode || !previousItem || !previousItem.path) {\n // console.log('[reject]', !activeNode, !previousItem, !previousItem.path);\n // log.warn('Top-level rearrange before the first item of the NavTree is unsupported at this time.');\n return { operation: 'reject' as const, details: { levelOffset } };\n }\n\n const overLevel = resolveItemLevel(overPosition, active.item.id, levelOffset);\n\n const previousLevel = getLevel(previousItem.path);\n\n // console.log('[over]', overLevel, previousLevel, levelOffset);\n\n if (previousLevel === overLevel - 1) {\n if (Path.hasChild(previousItem.id, active.item.id)) {\n // Previous is already parent of Active, rearrange.\n const operation = previousItem.node.properties.onRearrangeChildren\n ? ('rearrange' as const)\n : ('reject' as const);\n return { operation, details: { levelOffset } };\n } else {\n // Previous is not yet parent of Active, check transfer or copy.\n const operation = resolveMigrationOperation(graph, activeNode, previousItem.path, previousItem.node);\n // console.log('[migration result]', operation, 'Previous is not yet parent of Active, check transfer or copy.');\n return { operation, details: { levelOffset } };\n }\n } else if (previousLevel === overLevel) {\n const parent = getParent(graph, previousItem.node, previousItem.path);\n const parentPath = previousItem.path.slice(0, previousItem.path.length - 1);\n if (Path.siblings(previousItem.id, active.item.id)) {\n // Previous is already a sibling of Active, rearrange.\n const operation = parent?.properties.onRearrangeChildren ? ('rearrange' as const) : ('reject' as const);\n return { operation, details: { levelOffset } };\n } else {\n // Previous is not yet a sibling of Active, transfer/copy to Previous’s parent.\n const operation = resolveMigrationOperation(graph, activeNode, parentPath, parent);\n // console.log(\n // '[migration result]',\n // operation,\n // 'Previous is not yet a sibling of Active, transfer/copy to Previous’s parent.',\n // );\n return { operation, details: { levelOffset } };\n }\n } else if (nextItem && nextItem.path) {\n const nextLevel = getLevel(nextItem.path);\n if (nextLevel === overLevel) {\n const parent = getParent(graph, nextItem.node, nextItem.path);\n const parentPath = nextItem.path.slice(0, nextItem.path.length - 1);\n if (Path.siblings(nextItem.id, active.item.id)) {\n // Next is already a sibling of Active, rearrange.\n const operation = parent?.properties.onRearrangeChildren ? ('rearrange' as const) : ('reject' as const);\n return { operation, details: { levelOffset } };\n } else {\n // Next is not yet a sibling of Active, transfer to Next’s parent.\n const operation = resolveMigrationOperation(graph, activeNode, parentPath, parent);\n // console.log(\n // '[migration result]',\n // operation,\n // 'Next is not yet a sibling of Active, transfer to Next’s parent.',\n // );\n return { operation, details: { levelOffset } };\n }\n } else {\n // console.log('[migration result]', 'reject');\n return { operation: 'reject' as const, details: { levelOffset } };\n }\n } else {\n // console.log('[migration result]', 'reject');\n return { operation: 'reject' as const, details: { levelOffset } };\n }\n },\n [root, items],\n );\n\n const handleDrop = useCallback(\n ({ operation, active, over, details = {} }: MosaicDropEvent<number, NavTreeItemMoveDetails>) => {\n if (Path.first(over.path) !== root.id) {\n return undefined;\n }\n const { levelOffset = 0 } = details;\n const overPosition = over.position ?? 0;\n\n const nextItems = arrayMove(\n items,\n items.findIndex(({ id }) => id === active.item.id),\n overPosition,\n );\n\n const activeNode = 'node' in active.item ? (active.item as NavTreeItem).node : undefined;\n const activeParentId = Path.parent(active.item.id);\n\n if (!activeNode) {\n return undefined;\n }\n\n const activeParent = getParent(graph, activeNode, (active.item as NavTreeItem).path ?? []);\n\n if (operation === 'rearrange') {\n void activeParent?.properties.onRearrangeChildren?.(\n nextItems.filter(({ id }) => Path.hasChild(activeParentId, id)).map(({ node }) => node.data),\n );\n return null;\n } else {\n const previousItem: NavTreeItem | undefined = nextItems[overPosition - 1];\n const nextItem: NavTreeItem | undefined = nextItems[overPosition + 1];\n\n const overLevel = resolveItemLevel(overPosition, active.item.id, levelOffset);\n\n const previousLevel = getLevel(previousItem.path);\n\n if (operation === 'copy') {\n if (previousLevel === overLevel - 1) {\n void previousItem.node.properties.onCopy?.(activeNode, 0);\n return null;\n } else if (previousLevel === overLevel) {\n const parent = getParent(graph, previousItem.node, previousItem.path ?? []);\n void parent?.properties.onCopy?.(\n activeNode,\n getChildren(graph, parent).findIndex(({ id }) => id === previousItem.node.id) + 1,\n );\n return null;\n } else if (nextItem && nextItem.path) {\n const parent = getParent(graph, nextItem.node, nextItem.path ?? []);\n void parent?.properties.onCopy?.(\n activeNode,\n getChildren(graph, parent).findIndex(({ id }) => id === nextItem.node.id),\n );\n return null;\n }\n } else if (operation === 'transfer') {\n const onTransferEnd = activeParent?.properties.onTransferEnd;\n if (!onTransferEnd) {\n return undefined;\n } else if (previousLevel === overLevel - 1) {\n const onTransferStart = previousItem.node.properties.onTransferStart;\n if (onTransferStart) {\n void onTransferEnd(activeNode, previousItem.node);\n void onTransferStart(activeNode, 0);\n return null;\n }\n } else if (previousLevel === overLevel && previousItem.path) {\n const parent = getParent(graph, previousItem.node, previousItem.path);\n if (parent?.properties.onTransferStart) {\n void onTransferEnd(activeNode, previousItem.node);\n void parent.properties.onTransferStart(\n activeNode,\n getChildren(graph, parent).findIndex(({ id }) => id === previousItem.node.id) + 1,\n );\n return null;\n }\n } else if (nextItem && nextItem.path) {\n const parent = getParent(graph, nextItem.node, nextItem.path);\n if (parent?.properties.onTransferStart) {\n void onTransferEnd(activeNode, previousItem.node);\n void parent.properties.onTransferStart(\n activeNode,\n getChildren(graph, parent).findIndex(({ id }) => id === nextItem.node.id),\n );\n return null;\n }\n }\n }\n }\n return undefined;\n },\n [root, items],\n );\n\n const handleDragEnd = useCallback(() => {\n onOpenItemIdsChange({ ...openItemIds });\n }, [onOpenItemIdsChange, openItemIds]);\n\n return (\n <ElevationProvider elevation='chrome'>\n <div\n role='none'\n className='bs-full overflow-hidden row-span-3 grid grid-cols-1 grid-rows-[min-content_1fr_min-content]'\n >\n <Surface role='search-input' limit={1} />\n {/* TODO(thure): what gives this an inline `overflow: initial`? */}\n <div role='none' className='!overflow-y-auto'>\n <NavTree\n id={root.id}\n items={items}\n current={activeIds}\n attended={attended}\n type={NODE_TYPE}\n open={openItemIds}\n onNavigate={handleNavigate}\n onItemOpenChange={handleItemOpenChange}\n onMove={handleMove}\n onDrop={handleDrop}\n onDragEnd={handleDragEnd}\n popoverAnchorId={popoverAnchorId}\n renderPresence={renderPresence}\n resolveItemLevel={resolveItemLevel}\n loadDescendents={loadDescendents}\n />\n </div>\n <NavTreeFooter />\n </div>\n </ElevationProvider>\n );\n};\n", "//\n// Copyright 2024 DXOS.org\n//\n\nimport { ArrowSquareOut, GearSix, Warning } from '@phosphor-icons/react';\nimport { formatDistance } from 'date-fns/formatDistance';\nimport React from 'react';\n\nimport {\n SettingsAction,\n useResolvePlugin,\n parseNavigationPlugin,\n useIntentDispatcher,\n type LayoutPart,\n} from '@dxos/app-framework';\nimport { useConfig } from '@dxos/react-client';\nimport {\n Button,\n Tooltip,\n Popover,\n useSidebars,\n useTranslation,\n Link,\n Message,\n Trans,\n useDefaultValue,\n} from '@dxos/react-ui';\nimport { PlankHeading } from '@dxos/react-ui-deck';\nimport { getSize, 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\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 dispatch = useIntentDispatcher();\n const { version, timestamp, commitHash } = config.values.runtime?.app?.build ?? {};\n const navigationPlugin = useResolvePlugin(parseNavigationPlugin);\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 'bs-[--rail-size] pbe-[env(safe-area-inset-bottom)] box-content border-separator border-bs pli-1 flex 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{version}\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 <Warning weight='duotone' className='inline mie-2 is-6 bs-6' />\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 <ArrowSquareOut className='inline mis-1' weight='bold' />\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 <ArrowSquareOut className='inline mis-1' weight='bold' />\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 <Button\n variant='ghost'\n classNames={buttonStyles}\n data-testid='treeView.openSettings'\n data-joyride='welcome/settings'\n {...(!navigationSidebarOpen && { tabIndex: -1 })}\n onClick={() => dispatch({ action: SettingsAction.OPEN })}\n >\n <span className='sr-only'>{t('open settings label')}</span>\n <GearSix className={mx(getSize(4), 'rotate-90')} />\n </Button>\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 {navigationPlugin?.meta.id === 'dxos.org/plugin/deck' && (\n <PlankHeading.Controls\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", "//\n// Copyright 2023 DXOS.org\n//\n\nimport {\n type Action,\n type Node,\n type NodeFilter,\n type Graph,\n ACTION_TYPE,\n ACTION_GROUP_TYPE,\n isAction,\n} from '@dxos/app-graph';\nimport { Path } from '@dxos/react-ui-mosaic';\nimport {\n type NavTreeActionNode,\n type NavTreeItemActions,\n type NavTreeItemNode,\n type NavTreeItemNodeProperties,\n type OpenItemIds,\n} from '@dxos/react-ui-navtree';\nimport { type MaybePromise, nonNullable } from '@dxos/util';\n\nexport type NavTreeItemGraphNode = Node<\n any,\n NavTreeItemNodeProperties &\n Partial<{\n persistenceClass: string;\n persistenceKey: string;\n acceptPersistenceClass: Set<string>;\n acceptPersistenceKey: Set<string>;\n onRearrangeChildren: (nextOrder: NavTreeItemGraphNode[]) => MaybePromise<void>;\n onCopy: (activeNode: NavTreeItemGraphNode, index?: number) => MaybePromise<void>;\n onTransferStart: (activeNode: NavTreeItemGraphNode, index?: number) => MaybePromise<void>;\n onTransferEnd: (activeNode: NavTreeItemGraphNode, destinationParent: NavTreeItemGraphNode) => MaybePromise<void>;\n }>\n>;\nexport type NavTreeItem = NavTreeItemNode<NavTreeItemGraphNode>;\n\nexport const getParent = (\n graph: Graph,\n node: NavTreeItemGraphNode,\n path: string[],\n): NavTreeItemGraphNode | undefined => {\n const parentId = path[path.length - 2];\n return graph.nodes(node, { relation: 'inbound' }).find((n) => n.id === parentId) as NavTreeItemGraphNode | undefined;\n};\n\nexport const getPersistenceParent = (\n graph: Graph,\n node: NavTreeItemGraphNode,\n path: string[],\n persistenceClass: string,\n): NavTreeItemGraphNode | null => {\n if (node.properties.acceptPersistenceClass?.has(persistenceClass)) {\n return node;\n } else {\n const parent = getParent(graph, node, path);\n return parent ? getPersistenceParent(graph, parent, path.slice(0, path.length - 1), persistenceClass) : null;\n }\n};\n\nexport const resolveMigrationOperation = (\n graph: Graph,\n activeNode: NavTreeItemGraphNode,\n destinationPath: string[],\n destinationRelatedNode?: NavTreeItemGraphNode,\n): 'transfer' | 'copy' | 'reject' => {\n const activeClass = activeNode.properties.persistenceClass;\n if (destinationRelatedNode && activeClass) {\n const persistenceParent = getPersistenceParent(graph, destinationRelatedNode, destinationPath, activeClass);\n if (persistenceParent) {\n const activeKey = activeNode.properties.persistenceKey;\n if (activeKey && persistenceParent?.properties.acceptPersistenceKey) {\n return persistenceParent.properties.acceptPersistenceKey.has(activeKey) &&\n destinationRelatedNode.properties.onTransferStart\n ? 'transfer'\n : destinationRelatedNode.properties.onCopy\n ? 'copy'\n : 'reject';\n } else {\n return 'reject';\n }\n } else {\n return 'reject';\n }\n } else {\n return 'reject';\n }\n};\n\n// TODO(wittjosiah): Move into node implementation?\nexport const sortActions = (actions: Action[]): Action[] =>\n actions.sort((a, b) => {\n if (a.properties.disposition === b.properties.disposition) {\n return 0;\n }\n\n if (a.properties.disposition === 'toolbar') {\n return -1;\n }\n\n return 1;\n });\n\nexport const getTreeItemNode = (treeItems: NavTreeItemNode[], path?: string[]): NavTreeItemNode | undefined => {\n if (!path) {\n return undefined;\n }\n\n return treeItems.find((treeItem) => {\n return treeItem.path && !treeItem.path.find((id, index) => path[index] !== id);\n });\n};\n\nexport const getChildren = (\n graph: Graph,\n node: NavTreeItemGraphNode,\n filter?: NodeFilter,\n path: string[] = [],\n): NavTreeItemGraphNode[] => {\n return graph\n .nodes(node, { relation: 'outbound', filter })\n .map((n) => {\n // Break cycles.\n const nextPath = [...path, node.id];\n return nextPath.includes(n.id) ? undefined : (n as NavTreeItemGraphNode);\n })\n .filter(nonNullable) as NavTreeItemGraphNode[];\n};\n\ntype FlattenedActions = Required<Pick<NavTreeItemNode, 'actions' | 'groupedActions'>>;\n\nexport const getActions = (graph: Graph, node: NavTreeItemGraphNode): FlattenedActions => {\n return graph.actions(node).reduce(\n (acc: FlattenedActions, arg) => {\n acc.actions.push(arg as unknown as NavTreeItemActions[number]);\n if (!isAction(arg)) {\n const actionGroup = graph.actions(arg);\n acc.groupedActions[arg.id] = actionGroup as unknown as NavTreeActionNode[];\n }\n return acc;\n },\n { actions: [], groupedActions: {} },\n );\n};\n\nexport const expandChildrenAndActions = (graph: Graph, node: Node) => {\n return Promise.all([expandChildren(graph, node), expandActions(graph, node)]);\n};\n\nexport const expandChildren = (graph: Graph, node: Node) => {\n return graph.expand(node, 'outbound');\n};\n\nexport const expandActions = (graph: Graph, node: Node) => {\n return Promise.all([graph.expand(node, 'outbound', ACTION_TYPE), graph.expand(node, 'outbound', ACTION_GROUP_TYPE)]);\n};\n\nfunction* navTreeItemVisitor(\n graph: Graph,\n node: NavTreeItemGraphNode,\n openItemIds: OpenItemIds,\n path: string[] = [],\n filter?: NodeFilter,\n): Generator<NavTreeItem> {\n const l0Children = getChildren(graph, node, filter, path);\n const { actions: l0Actions, groupedActions: l0GroupedActions } = getActions(graph, node);\n\n const stack: NavTreeItem[] = [\n {\n id: node.id,\n node,\n path: [],\n parentOf: (l0Children ?? []).map(({ id }) => id),\n actions: l0Actions,\n groupedActions: l0GroupedActions,\n },\n ];\n\n while (stack.length > 0) {\n const nextItem = stack.pop()!;\n if ((nextItem.path?.length ?? 0) > 0) {\n yield nextItem;\n }\n const { id, node, path } = nextItem;\n const children = getChildren(graph, node, filter, path);\n if (path?.length === 0 || (id ?? 'never') in openItemIds) {\n for (let i = children.length - 1; i >= 0; i--) {\n const child = children[i] as NavTreeItemGraphNode;\n const childPath = path ? [...path, child.id] : [child.id];\n const childChildren = getChildren(graph, child, filter, childPath);\n const { actions: childActions, groupedActions: childGroupedActions } = getActions(graph, child);\n stack.push({\n id: Path.create(...childPath),\n node: child,\n path: childPath,\n ...((childChildren?.length ?? 0) > 0 && {\n parentOf: childChildren!.map(({ id }) => Path.create(...childPath, id)),\n }),\n actions: childActions,\n groupedActions: childGroupedActions,\n });\n }\n }\n }\n}\n\n/**\n * Get a reactive tree node from a graph node.\n */\nexport const treeItemsFromRootNode = (\n graph: Graph,\n rootNode: NavTreeItemGraphNode,\n openItemIds: OpenItemIds,\n path: string[] = [],\n filter?: NodeFilter,\n): NavTreeItem[] => {\n return Array.from(navTreeItemVisitor(graph, rootNode, openItemIds, path, filter));\n};\n\nexport const expandOpenGraphNodes = (graph: Graph, openItemIds: OpenItemIds) => {\n return Promise.all(\n Object.keys(openItemIds)\n .map((openItemId) => {\n const node = graph.findNode(Path.last(openItemId));\n return node && expandChildrenAndActions(graph, node as NavTreeItemGraphNode);\n })\n .filter(nonNullable),\n );\n};\n", "//\n// Copyright 2023 DXOS.org\n//\nimport { useEffect } from 'react';\n\nimport { type Node } from '@dxos/app-graph';\nimport { toLocalizedString, useTranslation } from '@dxos/react-ui';\n\nimport { NAVTREE_PLUGIN } from '../meta';\n\nexport const NavTreeDocumentTitle = ({ node }: { node?: Node }) => {\n const { t } = useTranslation(NAVTREE_PLUGIN);\n useEffect(() => {\n document.title = node ? toLocalizedString(node.properties.label, t) : t('current app name', { ns: 'appkit' });\n }, [node?.properties?.label]);\n return null;\n};\n", "//\n// Copyright 2024 DXOS.org\n//\n\nimport React from 'react';\n\nimport { useIntentDispatcher, useResolvePlugin } from '@dxos/app-framework';\nimport { ClientAction } from '@dxos/plugin-client/meta';\nimport { parseObservabilityPlugin } from '@dxos/plugin-observability';\nimport { useIdentity } from '@dxos/react-client/halo';\n\nimport { HaloButton } from './HaloButton';\n\n// TODO(thure): Refactor to be handled by a more appropriate plugin (ClientPlugin?).\nexport const NotchStart = () => {\n const identity = useIdentity();\n const observabilityPlugin = useResolvePlugin(parseObservabilityPlugin);\n const dispatch = useIntentDispatcher();\n return (\n <HaloButton\n size={8}\n identityKey={identity?.identityKey.toHex()}\n hue={identity?.profile?.data?.hue}\n emoji={identity?.profile?.data?.emoji}\n internal={observabilityPlugin?.provides?.observability?.group === 'dxos'}\n onClick={() => dispatch({ action: ClientAction.SHARE_IDENTITY })}\n />\n );\n};\n", "//\n// Copyright 2023 DXOS.org\n//\n\nimport React from 'react';\n\nimport { ConnectionState, useNetworkStatus } from '@dxos/react-client/mesh';\nimport { Avatar, type Size } from '@dxos/react-ui';\nimport { focusRing, mx } from '@dxos/react-ui-theme';\nimport { hexToFallback } from '@dxos/util';\n\nconst INTERNAL = 'https://avatars.githubusercontent.com/u/57182821';\n\nexport type HaloButtonProps = {\n size?: Size;\n identityKey?: string;\n hue?: string;\n emoji?: string;\n internal?: boolean;\n onClick?: () => void;\n};\n\nexport const HaloButton = (props: HaloButtonProps) => {\n const { onClick, identityKey, internal, size = 8 } = props;\n const fallbackValue = hexToFallback(identityKey ?? '0');\n const { swarm: connectionState } = useNetworkStatus();\n return (\n <button className={mx(focusRing, 'rounded grid place-items-center')} onClick={onClick}>\n <Avatar.Root\n size={size}\n variant='circle'\n status={connectionState === ConnectionState.OFFLINE ? 'error' : internal ? 'internal' : 'active'}\n hue={props.hue || fallbackValue.hue}\n >\n <Avatar.Frame data-testid='treeView.haloButton' data-joyride='welcome/halo'>\n {internal ? <Avatar.Image href={INTERNAL} /> : <Avatar.Fallback text={props.emoji || fallbackValue.emoji} />}\n </Avatar.Frame>\n </Avatar.Root>\n </button>\n );\n};\n", "//\n// Copyright 2024 DXOS.org\n//\n\nimport { MagnifyingGlass } from '@phosphor-icons/react';\nimport React from 'react';\n\nimport { LayoutAction, useIntent } from '@dxos/app-framework';\nimport { Button, useTranslation } from '@dxos/react-ui';\nimport { getSize } from '@dxos/react-ui-theme';\n\nimport { NAVTREE_PLUGIN } from '../meta';\n\n// TODO(thure): Refactor to be handled by a more appropriate plugin.\nexport const CommandsTrigger = () => {\n const { dispatch } = useIntent();\n const { t } = useTranslation(NAVTREE_PLUGIN);\n return (\n <Button\n classNames='pis-3 pie-2 gap-2 mli-1 mbs-1 min-bs-0 bs-[--rail-action] justify-start'\n onClick={() =>\n dispatch({\n action: LayoutAction.SET_LAYOUT,\n data: { element: 'dialog', component: `${NAVTREE_PLUGIN}/Commands`, dialogBlockAlign: 'start' },\n })\n }\n >\n <span className='text-description font-normal grow text-start'>{t('command list input placeholder')}</span>\n <MagnifyingGlass className={getSize(5)} />\n </Button>\n );\n};\n", "//\n// Copyright 2023 DXOS.org\n//\n\nimport { translations as navtreeTranslations } from '@dxos/react-ui-navtree';\n\nimport { NAVTREE_PLUGIN } from './meta';\n\nexport default [\n {\n 'en-US': {\n [NAVTREE_PLUGIN]: {\n 'open settings label': 'Settings',\n 'open commands label': 'Search commands',\n 'commands dialog title': 'Commands',\n 'command list input placeholder': 'Search for commands…',\n 'node actions menu invoker label': 'More options',\n 'warning title': 'WARNING',\n 'technology preview message': 'Composer is still in technology preview.',\n 'learn more label': 'Learn more',\n 'released message': 'This version released {{released}}.',\n 'see release label': 'See release on GitHub',\n 'powered by dxos message': 'Powered by <dxos>DXOS</dxos>',\n },\n },\n },\n ...navtreeTranslations,\n];\n", "//\n// Copyright 2023 DXOS.org\n//\n\nimport { NavTreePlugin } from './NavTreePlugin';\n\nexport default NavTreePlugin;\n\nexport * from './NavTreePlugin';\nexport * from './util';\n"],
5
+ "mappings": "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",
6
+ "names": ["MagnifyingGlass", "React", "resolvePlugin", "parseIntentPlugin", "LayoutAction", "parseGraphPlugin", "NavigationAction", "createExtension", "isAction", "isGraphNode", "Keyboard", "LocalStorageStore", "Path", "getHostPlatform", "DotOutline", "React", "useMemo", "useState", "useIntentDispatcher", "LayoutAction", "isActionGroup", "isAction", "Keyboard", "keySymbols", "useGraph", "Button", "Dialog", "useTranslation", "toLocalizedString", "SearchList", "descriptionText", "mx", "getHostPlatform", "CommandsDialogContent", "selected", "initial", "t", "useTranslation", "NAVTREE_PLUGIN", "setSelected", "useState", "dispatch", "useIntentDispatcher", "graph", "useGraph", "allActions", "useMemo", "current", "Keyboard", "singleton", "getCurrentContext", "actionMap", "Set", "actions", "traverse", "visitor", "node", "path", "isAction", "isActionGroup", "has", "id", "startsWith", "slice", "join", "add", "push", "sort", "a", "b", "toLocalizedString", "properties", "label", "toLowerCase", "localeCompare", "group", "find", "Dialog", "Content", "classNames", "Title", "ns", "SearchList", "Root", "Input", "placeholder", "map", "action", "shortcut", "keyBinding", "getHostPlatform", "Icon", "icon", "DotOutline", "Item", "value", "key", "onSelect", "disabled", "LayoutAction", "SET_LAYOUT", "data", "element", "state", "setTimeout", "nodes", "relation", "caller", "KEY_BINDING", "testId", "size", "className", "mx", "span", "descriptionText", "keySymbols", "Close", "asChild", "Button", "variant", "DotsThreeVertical", "React", "Fragment", "getGraph", "Popover", "toLocalizedString", "useTranslation", "PlankHeading", "TREE_ITEM_MAIN_HEADING", "NavBarStart", "activeNode", "popoverAnchorId", "t", "useTranslation", "NAVTREE_PLUGIN", "ActionRoot", "id", "KEY_BINDING", "Popover", "Anchor", "Fragment", "Icon", "properties", "icon", "DotsThreeVertical", "graph", "getGraph", "actions", "label", "toLocalizedString", "menuTriggerLabel", "React", "PlankHeading", "ActionsMenu", "attendableId", "triggerLabel", "onAction", "action", "data", "node", "caller", "Label", "React", "useCallback", "useMemo", "NavigationAction", "LayoutAction", "Surface", "SLUG_PATH_SEPARATOR", "SLUG_COLLECTION_INDICATOR", "useIntentDispatcher", "getGraph", "isAction", "isActionLike", "ElevationProvider", "useMediaQuery", "useSidebars", "Path", "NavTree", "getLevel", "arrayMove", "ArrowSquareOut", "GearSix", "Warning", "formatDistance", "React", "SettingsAction", "useResolvePlugin", "parseNavigationPlugin", "useIntentDispatcher", "useConfig", "Button", "Tooltip", "Popover", "useSidebars", "useTranslation", "Link", "Message", "Trans", "useDefaultValue", "PlankHeading", "getSize", "mx", "buttonStyles", "repo", "NavTreeFooter", "props", "layoutPart", "useDefaultValue", "config", "useConfig", "t", "useTranslation", "NAVTREE_PLUGIN", "navigationSidebarOpen", "useSidebars", "dispatch", "useIntentDispatcher", "version", "timestamp", "commitHash", "values", "runtime", "app", "build", "navigationPlugin", "useResolvePlugin", "parseNavigationPlugin", "releaseUrl", "env", "DX_ENVIRONMENT", "previewUrl", "React", "div", "role", "className", "mx", "Popover", "Root", "Trigger", "asChild", "Button", "variant", "classNames", "tabIndex", "Portal", "Content", "side", "Message", "valence", "Title", "Warning", "weight", "span", "Body", "br", "Link", "href", "target", "rel", "ArrowSquareOut", "p", "released", "formatDistance", "Date", "addSuffix", "Trans", "i18nKey", "components", "dxos", "Arrow", "Tooltip", "data-testid", "data-joyride", "onClick", "action", "SettingsAction", "OPEN", "GearSix", "getSize", "meta", "id", "PlankHeading", "Controls", "capabilities", "incrementStart", "incrementEnd", "_type", "ACTION_TYPE", "ACTION_GROUP_TYPE", "isAction", "Path", "nonNullable", "getParent", "graph", "node", "path", "parentId", "length", "nodes", "relation", "find", "n", "id", "getPersistenceParent", "persistenceClass", "properties", "acceptPersistenceClass", "has", "parent", "slice", "resolveMigrationOperation", "activeNode", "destinationPath", "destinationRelatedNode", "activeClass", "persistenceParent", "activeKey", "persistenceKey", "acceptPersistenceKey", "onTransferStart", "onCopy", "sortActions", "actions", "sort", "a", "b", "disposition", "getTreeItemNode", "treeItems", "undefined", "treeItem", "index", "getChildren", "filter", "map", "nextPath", "includes", "nonNullable", "getActions", "reduce", "acc", "arg", "push", "isAction", "actionGroup", "groupedActions", "expandChildrenAndActions", "Promise", "all", "expandChildren", "expandActions", "expand", "ACTION_TYPE", "ACTION_GROUP_TYPE", "navTreeItemVisitor", "openItemIds", "l0Children", "l0Actions", "l0GroupedActions", "stack", "parentOf", "nextItem", "pop", "children", "i", "child", "childPath", "childChildren", "childActions", "childGroupedActions", "Path", "create", "treeItemsFromRootNode", "rootNode", "Array", "from", "expandOpenGraphNodes", "Object", "keys", "openItemId", "findNode", "last", "NODE_TYPE", "renderPresence", "node", "React", "Surface", "role", "data", "object", "NavTreeContainer", "root", "activeIds", "openItemIds", "onOpenItemIdsChange", "attended", "popoverAnchorId", "closeNavigationSidebar", "useSidebars", "NAVTREE_PLUGIN", "isLg", "useMediaQuery", "ssr", "dispatch", "useIntentDispatcher", "graph", "useMemo", "getGraph", "items", "treeItemsFromRootNode", "loadDescendents", "useCallback", "expandActions", "isActionLike", "expandChildren", "then", "Promise", "all", "getChildren", "flatMap", "child", "handleNavigate", "actions", "action", "NavigationAction", "OPEN", "activeParts", "comments", "main", "id", "complementary", "SLUG_PATH_SEPARATOR", "SLUG_COLLECTION_INDICATOR", "LayoutAction", "SCROLL_INTO_VIEW", "defaultAction", "find", "properties", "disposition", "isAction", "handleItemOpenChange", "path", "nextOpen", "_", "nextOpenItemIds", "resolveItemLevel", "overPosition", "activeId", "levelOffset", "nextItems", "arrayMove", "findIndex", "previousItem", "nextItem", "Math", "min", "getLevel", "max", "handleMove", "active", "over", "details", "floor", "delta", "x", "position", "item", "activeNode", "undefined", "operation", "overLevel", "previousLevel", "Path", "hasChild", "onRearrangeChildren", "resolveMigrationOperation", "parent", "getParent", "parentPath", "slice", "length", "siblings", "nextLevel", "handleDrop", "first", "activeParentId", "activeParent", "filter", "map", "onCopy", "onTransferEnd", "onTransferStart", "handleDragEnd", "ElevationProvider", "elevation", "div", "className", "limit", "NavTree", "current", "type", "open", "onNavigate", "onItemOpenChange", "onMove", "onDrop", "onDragEnd", "NavTreeFooter", "useEffect", "toLocalizedString", "useTranslation", "NavTreeDocumentTitle", "node", "t", "useTranslation", "NAVTREE_PLUGIN", "useEffect", "document", "title", "toLocalizedString", "properties", "label", "ns", "React", "useIntentDispatcher", "useResolvePlugin", "ClientAction", "parseObservabilityPlugin", "useIdentity", "React", "ConnectionState", "useNetworkStatus", "Avatar", "focusRing", "mx", "hexToFallback", "INTERNAL", "HaloButton", "props", "onClick", "identityKey", "internal", "size", "fallbackValue", "hexToFallback", "swarm", "connectionState", "useNetworkStatus", "React", "button", "className", "mx", "focusRing", "Avatar", "Root", "variant", "status", "ConnectionState", "OFFLINE", "hue", "Frame", "data-testid", "data-joyride", "Image", "href", "Fallback", "text", "emoji", "NotchStart", "identity", "useIdentity", "observabilityPlugin", "useResolvePlugin", "parseObservabilityPlugin", "dispatch", "useIntentDispatcher", "React", "HaloButton", "size", "identityKey", "toHex", "hue", "profile", "data", "emoji", "internal", "provides", "observability", "group", "onClick", "action", "ClientAction", "SHARE_IDENTITY", "MagnifyingGlass", "React", "LayoutAction", "useIntent", "Button", "useTranslation", "getSize", "CommandsTrigger", "dispatch", "useIntent", "t", "useTranslation", "NAVTREE_PLUGIN", "React", "Button", "classNames", "onClick", "action", "LayoutAction", "SET_LAYOUT", "data", "element", "component", "dialogBlockAlign", "span", "className", "MagnifyingGlass", "getSize", "translations", "navtreeTranslations", "NAVTREE_PLUGIN", "navtreeTranslations", "NavTreePlugin", "state", "LocalStorageStore", "openItemIds", "root", "graphPlugin", "graph", "handleOpenItemIdsChange", "nextOpenItemIds", "values", "expandOpenGraphNodes", "meta", "ready", "plugins", "resolvePlugin", "parseGraphPlugin", "provides", "getChildren", "getActions", "prop", "key", "storageKey", "type", "json", "subscribeTraverse", "visitor", "node", "path", "shortcut", "properties", "keyBinding", "availablePlatforms", "Object", "keys", "platform", "getHostPlatform", "includes", "macos", "windows", "undefined", "isAction", "Keyboard", "singleton", "getContext", "slice", "join", "bind", "handler", "data", "caller", "KEY_BINDING", "label", "initialize", "setCurrentContext", "id", "unload", "destroy", "metadata", "records", "NODE_TYPE", "parse", "item", "object", "surface", "component", "role", "NAVTREE_PLUGIN", "selected", "subject", "React", "CommandsDialogContent", "NavTreeContainer", "activeIds", "onOpenItemIdsChange", "attended", "popoverAnchorId", "NavTreeDocumentTitle", "isGraphNode", "activeNode", "NavBarStart", "disposition", "NotchStart", "CommandsTrigger", "intent", "resolver", "action", "NavigationAction", "EXPOSE", "getPath", "target", "Array", "isArray", "additionalOpenItems", "length", "reduce", "acc", "_", "index", "itemId", "Path", "create", "builder", "intentPlugin", "parseIntentPlugin", "createExtension", "filter", "actions", "dispatch", "LayoutAction", "SET_LAYOUT", "element", "dialogBlockAlign", "ns", "icon", "props", "MagnifyingGlass", "iconSymbol", "translations", "NavTreePlugin"]
7
7
  }
@@ -1 +1 @@
1
- {"inputs":{"packages/plugins/plugin-navtree/src/meta.ts":{"bytes":1128,"imports":[],"format":"esm"},"packages/plugins/plugin-navtree/src/components/CommandsDialog.tsx":{"bytes":16433,"imports":[{"path":"react","kind":"import-statement","external":true},{"path":"@dxos/app-framework","kind":"import-statement","external":true},{"path":"@dxos/app-graph","kind":"import-statement","external":true},{"path":"@dxos/keyboard","kind":"import-statement","external":true},{"path":"@dxos/plugin-graph","kind":"import-statement","external":true},{"path":"@dxos/react-ui","kind":"import-statement","external":true},{"path":"@dxos/react-ui-searchlist","kind":"import-statement","external":true},{"path":"@dxos/react-ui-theme","kind":"import-statement","external":true},{"path":"@dxos/util","kind":"import-statement","external":true},{"path":"packages/plugins/plugin-navtree/src/meta.ts","kind":"import-statement","original":"../meta"}],"format":"esm"},"packages/plugins/plugin-navtree/src/components/NavBarStart.tsx":{"bytes":5792,"imports":[{"path":"react","kind":"import-statement","external":true},{"path":"@dxos/app-graph","kind":"import-statement","external":true},{"path":"@dxos/react-ui","kind":"import-statement","external":true},{"path":"@dxos/react-ui-deck","kind":"import-statement","external":true},{"path":"packages/plugins/plugin-navtree/src/meta.ts","kind":"import-statement","original":"../meta"}],"format":"esm"},"packages/plugins/plugin-navtree/src/components/NavTreeFooter.tsx":{"bytes":18093,"imports":[{"path":"@phosphor-icons/react","kind":"import-statement","external":true},{"path":"date-fns/formatDistance","kind":"import-statement","external":true},{"path":"react","kind":"import-statement","external":true},{"path":"@dxos/app-framework","kind":"import-statement","external":true},{"path":"@dxos/react-client","kind":"import-statement","external":true},{"path":"@dxos/react-ui","kind":"import-statement","external":true},{"path":"@dxos/react-ui-deck","kind":"import-statement","external":true},{"path":"@dxos/react-ui-theme","kind":"import-statement","external":true},{"path":"packages/plugins/plugin-navtree/src/meta.ts","kind":"import-statement","original":"../meta"}],"format":"esm"},"packages/plugins/plugin-navtree/src/util.ts":{"bytes":23279,"imports":[{"path":"@dxos/app-graph","kind":"import-statement","external":true},{"path":"@dxos/react-ui-mosaic","kind":"import-statement","external":true},{"path":"@dxos/util","kind":"import-statement","external":true}],"format":"esm"},"packages/plugins/plugin-navtree/src/components/NavTreeContainer.tsx":{"bytes":47568,"imports":[{"path":"react","kind":"import-statement","external":true},{"path":"@dxos/app-framework","kind":"import-statement","external":true},{"path":"@dxos/app-graph","kind":"import-statement","external":true},{"path":"@dxos/react-ui","kind":"import-statement","external":true},{"path":"@dxos/react-ui-mosaic","kind":"import-statement","external":true},{"path":"@dxos/react-ui-navtree","kind":"import-statement","external":true},{"path":"@dxos/util","kind":"import-statement","external":true},{"path":"packages/plugins/plugin-navtree/src/components/NavTreeFooter.tsx","kind":"import-statement","original":"./NavTreeFooter"},{"path":"packages/plugins/plugin-navtree/src/meta.ts","kind":"import-statement","original":"../meta"},{"path":"packages/plugins/plugin-navtree/src/util.ts","kind":"import-statement","original":"../util"}],"format":"esm"},"packages/plugins/plugin-navtree/src/components/NavTreeDocumentTitle.tsx":{"bytes":2287,"imports":[{"path":"react","kind":"import-statement","external":true},{"path":"@dxos/react-ui","kind":"import-statement","external":true},{"path":"packages/plugins/plugin-navtree/src/meta.ts","kind":"import-statement","original":"../meta"}],"format":"esm"},"packages/plugins/plugin-navtree/src/components/HaloButton.tsx":{"bytes":4991,"imports":[{"path":"react","kind":"import-statement","external":true},{"path":"@dxos/react-client/mesh","kind":"import-statement","external":true},{"path":"@dxos/react-ui","kind":"import-statement","external":true},{"path":"@dxos/react-ui-theme","kind":"import-statement","external":true},{"path":"@dxos/util","kind":"import-statement","external":true}],"format":"esm"},"packages/plugins/plugin-navtree/src/components/NotchStart.tsx":{"bytes":3865,"imports":[{"path":"react","kind":"import-statement","external":true},{"path":"@dxos/app-framework","kind":"import-statement","external":true},{"path":"@dxos/plugin-client/meta","kind":"import-statement","external":true},{"path":"@dxos/plugin-observability","kind":"import-statement","external":true},{"path":"@dxos/react-client/halo","kind":"import-statement","external":true},{"path":"packages/plugins/plugin-navtree/src/components/HaloButton.tsx","kind":"import-statement","original":"./HaloButton"}],"format":"esm"},"packages/plugins/plugin-navtree/src/components/index.ts":{"bytes":953,"imports":[{"path":"packages/plugins/plugin-navtree/src/components/CommandsDialog.tsx","kind":"import-statement","original":"./CommandsDialog"},{"path":"packages/plugins/plugin-navtree/src/components/NavBarStart.tsx","kind":"import-statement","original":"./NavBarStart"},{"path":"packages/plugins/plugin-navtree/src/components/NavTreeContainer.tsx","kind":"import-statement","original":"./NavTreeContainer"},{"path":"packages/plugins/plugin-navtree/src/components/NavTreeDocumentTitle.tsx","kind":"import-statement","original":"./NavTreeDocumentTitle"},{"path":"packages/plugins/plugin-navtree/src/components/NotchStart.tsx","kind":"import-statement","original":"./NotchStart"}],"format":"esm"},"packages/plugins/plugin-navtree/src/components/CommandsTrigger.tsx":{"bytes":4096,"imports":[{"path":"@phosphor-icons/react","kind":"import-statement","external":true},{"path":"react","kind":"import-statement","external":true},{"path":"@dxos/app-framework","kind":"import-statement","external":true},{"path":"@dxos/react-ui","kind":"import-statement","external":true},{"path":"@dxos/react-ui-theme","kind":"import-statement","external":true},{"path":"packages/plugins/plugin-navtree/src/meta.ts","kind":"import-statement","original":"../meta"}],"format":"esm"},"packages/plugins/plugin-navtree/src/translations.ts":{"bytes":3044,"imports":[{"path":"@dxos/react-ui-navtree","kind":"import-statement","external":true},{"path":"packages/plugins/plugin-navtree/src/meta.ts","kind":"import-statement","original":"./meta"}],"format":"esm"},"packages/plugins/plugin-navtree/src/NavTreePlugin.tsx":{"bytes":32163,"imports":[{"path":"react","kind":"import-statement","external":true},{"path":"@dxos/app-framework","kind":"import-statement","external":true},{"path":"@dxos/app-graph","kind":"import-statement","external":true},{"path":"@dxos/keyboard","kind":"import-statement","external":true},{"path":"@dxos/local-storage","kind":"import-statement","external":true},{"path":"@dxos/react-ui-mosaic","kind":"import-statement","external":true},{"path":"@dxos/util","kind":"import-statement","external":true},{"path":"packages/plugins/plugin-navtree/src/components/index.ts","kind":"import-statement","original":"./components"},{"path":"packages/plugins/plugin-navtree/src/components/CommandsTrigger.tsx","kind":"import-statement","original":"./components/CommandsTrigger"},{"path":"packages/plugins/plugin-navtree/src/meta.ts","kind":"import-statement","original":"./meta"},{"path":"packages/plugins/plugin-navtree/src/translations.ts","kind":"import-statement","original":"./translations"},{"path":"packages/plugins/plugin-navtree/src/util.ts","kind":"import-statement","original":"./util"}],"format":"esm"},"packages/plugins/plugin-navtree/src/index.ts":{"bytes":875,"imports":[{"path":"packages/plugins/plugin-navtree/src/NavTreePlugin.tsx","kind":"import-statement","original":"./NavTreePlugin"},{"path":"packages/plugins/plugin-navtree/src/NavTreePlugin.tsx","kind":"import-statement","original":"./NavTreePlugin"},{"path":"packages/plugins/plugin-navtree/src/util.ts","kind":"import-statement","original":"./util"}],"format":"esm"}},"outputs":{"packages/plugins/plugin-navtree/dist/lib/browser/index.mjs.map":{"imports":[],"exports":[],"inputs":{},"bytes":81701},"packages/plugins/plugin-navtree/dist/lib/browser/index.mjs":{"imports":[{"path":"packages/plugins/plugin-navtree/dist/lib/browser/chunk-PSVCPL4T.mjs","kind":"import-statement"},{"path":"react","kind":"import-statement","external":true},{"path":"@dxos/app-framework","kind":"import-statement","external":true},{"path":"@dxos/app-graph","kind":"import-statement","external":true},{"path":"@dxos/keyboard","kind":"import-statement","external":true},{"path":"@dxos/local-storage","kind":"import-statement","external":true},{"path":"@dxos/react-ui-mosaic","kind":"import-statement","external":true},{"path":"@dxos/util","kind":"import-statement","external":true},{"path":"react","kind":"import-statement","external":true},{"path":"@dxos/app-framework","kind":"import-statement","external":true},{"path":"@dxos/app-graph","kind":"import-statement","external":true},{"path":"@dxos/keyboard","kind":"import-statement","external":true},{"path":"@dxos/plugin-graph","kind":"import-statement","external":true},{"path":"@dxos/react-ui","kind":"import-statement","external":true},{"path":"@dxos/react-ui-searchlist","kind":"import-statement","external":true},{"path":"@dxos/react-ui-theme","kind":"import-statement","external":true},{"path":"@dxos/util","kind":"import-statement","external":true},{"path":"react","kind":"import-statement","external":true},{"path":"@dxos/app-graph","kind":"import-statement","external":true},{"path":"@dxos/react-ui","kind":"import-statement","external":true},{"path":"@dxos/react-ui-deck","kind":"import-statement","external":true},{"path":"react","kind":"import-statement","external":true},{"path":"@dxos/app-framework","kind":"import-statement","external":true},{"path":"@dxos/app-graph","kind":"import-statement","external":true},{"path":"@dxos/react-ui","kind":"import-statement","external":true},{"path":"@dxos/react-ui-mosaic","kind":"import-statement","external":true},{"path":"@dxos/react-ui-navtree","kind":"import-statement","external":true},{"path":"@dxos/util","kind":"import-statement","external":true},{"path":"@phosphor-icons/react","kind":"import-statement","external":true},{"path":"date-fns/formatDistance","kind":"import-statement","external":true},{"path":"react","kind":"import-statement","external":true},{"path":"@dxos/app-framework","kind":"import-statement","external":true},{"path":"@dxos/react-client","kind":"import-statement","external":true},{"path":"@dxos/react-ui","kind":"import-statement","external":true},{"path":"@dxos/react-ui-deck","kind":"import-statement","external":true},{"path":"@dxos/react-ui-theme","kind":"import-statement","external":true},{"path":"@dxos/app-graph","kind":"import-statement","external":true},{"path":"@dxos/react-ui-mosaic","kind":"import-statement","external":true},{"path":"@dxos/util","kind":"import-statement","external":true},{"path":"react","kind":"import-statement","external":true},{"path":"@dxos/react-ui","kind":"import-statement","external":true},{"path":"react","kind":"import-statement","external":true},{"path":"@dxos/app-framework","kind":"import-statement","external":true},{"path":"@dxos/plugin-client/meta","kind":"import-statement","external":true},{"path":"@dxos/plugin-observability","kind":"import-statement","external":true},{"path":"@dxos/react-client/halo","kind":"import-statement","external":true},{"path":"react","kind":"import-statement","external":true},{"path":"@dxos/react-client/mesh","kind":"import-statement","external":true},{"path":"@dxos/react-ui","kind":"import-statement","external":true},{"path":"@dxos/react-ui-theme","kind":"import-statement","external":true},{"path":"@dxos/util","kind":"import-statement","external":true},{"path":"@phosphor-icons/react","kind":"import-statement","external":true},{"path":"react","kind":"import-statement","external":true},{"path":"@dxos/app-framework","kind":"import-statement","external":true},{"path":"@dxos/react-ui","kind":"import-statement","external":true},{"path":"@dxos/react-ui-theme","kind":"import-statement","external":true},{"path":"@dxos/react-ui-navtree","kind":"import-statement","external":true}],"exports":["NavTreePlugin","default","expandActions","expandChildren","expandChildrenAndActions","expandOpenGraphNodes","getActions","getChildren","getParent","getPersistenceParent","getTreeItemNode","resolveMigrationOperation","sortActions","treeItemsFromRootNode"],"entryPoint":"packages/plugins/plugin-navtree/src/index.ts","inputs":{"packages/plugins/plugin-navtree/src/NavTreePlugin.tsx":{"bytesInOutput":7568},"packages/plugins/plugin-navtree/src/components/CommandsDialog.tsx":{"bytesInOutput":4002},"packages/plugins/plugin-navtree/src/components/index.ts":{"bytesInOutput":0},"packages/plugins/plugin-navtree/src/components/NavBarStart.tsx":{"bytesInOutput":1454},"packages/plugins/plugin-navtree/src/components/NavTreeContainer.tsx":{"bytesInOutput":10750},"packages/plugins/plugin-navtree/src/components/NavTreeFooter.tsx":{"bytesInOutput":5269},"packages/plugins/plugin-navtree/src/util.ts":{"bytesInOutput":4902},"packages/plugins/plugin-navtree/src/components/NavTreeDocumentTitle.tsx":{"bytesInOutput":441},"packages/plugins/plugin-navtree/src/components/NotchStart.tsx":{"bytesInOutput":879},"packages/plugins/plugin-navtree/src/components/HaloButton.tsx":{"bytesInOutput":1237},"packages/plugins/plugin-navtree/src/components/CommandsTrigger.tsx":{"bytesInOutput":1034},"packages/plugins/plugin-navtree/src/translations.ts":{"bytesInOutput":814},"packages/plugins/plugin-navtree/src/index.ts":{"bytesInOutput":33}},"bytes":39765},"packages/plugins/plugin-navtree/dist/lib/browser/meta.mjs.map":{"imports":[],"exports":[],"inputs":{},"bytes":93},"packages/plugins/plugin-navtree/dist/lib/browser/meta.mjs":{"imports":[{"path":"packages/plugins/plugin-navtree/dist/lib/browser/chunk-PSVCPL4T.mjs","kind":"import-statement"}],"exports":["KEY_BINDING","NAVTREE_PLUGIN","default"],"entryPoint":"packages/plugins/plugin-navtree/src/meta.ts","inputs":{},"bytes":193},"packages/plugins/plugin-navtree/dist/lib/browser/chunk-PSVCPL4T.mjs.map":{"imports":[],"exports":[],"inputs":{},"bytes":523},"packages/plugins/plugin-navtree/dist/lib/browser/chunk-PSVCPL4T.mjs":{"imports":[],"exports":["KEY_BINDING","NAVTREE_PLUGIN","meta_default"],"inputs":{"packages/plugins/plugin-navtree/src/meta.ts":{"bytesInOutput":125}},"bytes":277}}}
1
+ {"inputs":{"packages/plugins/plugin-navtree/src/meta.ts":{"bytes":1024,"imports":[],"format":"esm"},"packages/plugins/plugin-navtree/src/components/CommandsDialog.tsx":{"bytes":16879,"imports":[{"path":"@phosphor-icons/react","kind":"import-statement","external":true},{"path":"react","kind":"import-statement","external":true},{"path":"@dxos/app-framework","kind":"import-statement","external":true},{"path":"@dxos/app-graph","kind":"import-statement","external":true},{"path":"@dxos/keyboard","kind":"import-statement","external":true},{"path":"@dxos/plugin-graph","kind":"import-statement","external":true},{"path":"@dxos/react-ui","kind":"import-statement","external":true},{"path":"@dxos/react-ui-searchlist","kind":"import-statement","external":true},{"path":"@dxos/react-ui-theme","kind":"import-statement","external":true},{"path":"@dxos/util","kind":"import-statement","external":true},{"path":"packages/plugins/plugin-navtree/src/meta.ts","kind":"import-statement","original":"../meta"}],"format":"esm"},"packages/plugins/plugin-navtree/src/components/NavBarStart.tsx":{"bytes":6009,"imports":[{"path":"@phosphor-icons/react","kind":"import-statement","external":true},{"path":"react","kind":"import-statement","external":true},{"path":"@dxos/app-graph","kind":"import-statement","external":true},{"path":"@dxos/react-ui","kind":"import-statement","external":true},{"path":"@dxos/react-ui-deck","kind":"import-statement","external":true},{"path":"packages/plugins/plugin-navtree/src/meta.ts","kind":"import-statement","original":"../meta"}],"format":"esm"},"packages/plugins/plugin-navtree/src/components/NavTreeFooter.tsx":{"bytes":18077,"imports":[{"path":"@phosphor-icons/react","kind":"import-statement","external":true},{"path":"date-fns/formatDistance","kind":"import-statement","external":true},{"path":"react","kind":"import-statement","external":true},{"path":"@dxos/app-framework","kind":"import-statement","external":true},{"path":"@dxos/react-client","kind":"import-statement","external":true},{"path":"@dxos/react-ui","kind":"import-statement","external":true},{"path":"@dxos/react-ui-deck","kind":"import-statement","external":true},{"path":"@dxos/react-ui-theme","kind":"import-statement","external":true},{"path":"packages/plugins/plugin-navtree/src/meta.ts","kind":"import-statement","original":"../meta"}],"format":"esm"},"packages/plugins/plugin-navtree/src/util.ts":{"bytes":23279,"imports":[{"path":"@dxos/app-graph","kind":"import-statement","external":true},{"path":"@dxos/react-ui-mosaic","kind":"import-statement","external":true},{"path":"@dxos/util","kind":"import-statement","external":true}],"format":"esm"},"packages/plugins/plugin-navtree/src/components/NavTreeContainer.tsx":{"bytes":48642,"imports":[{"path":"react","kind":"import-statement","external":true},{"path":"@dxos/app-framework","kind":"import-statement","external":true},{"path":"@dxos/app-graph","kind":"import-statement","external":true},{"path":"@dxos/react-ui","kind":"import-statement","external":true},{"path":"@dxos/react-ui-mosaic","kind":"import-statement","external":true},{"path":"@dxos/react-ui-navtree","kind":"import-statement","external":true},{"path":"@dxos/util","kind":"import-statement","external":true},{"path":"packages/plugins/plugin-navtree/src/components/NavTreeFooter.tsx","kind":"import-statement","original":"./NavTreeFooter"},{"path":"packages/plugins/plugin-navtree/src/meta.ts","kind":"import-statement","original":"../meta"},{"path":"packages/plugins/plugin-navtree/src/util.ts","kind":"import-statement","original":"../util"}],"format":"esm"},"packages/plugins/plugin-navtree/src/components/NavTreeDocumentTitle.tsx":{"bytes":2287,"imports":[{"path":"react","kind":"import-statement","external":true},{"path":"@dxos/react-ui","kind":"import-statement","external":true},{"path":"packages/plugins/plugin-navtree/src/meta.ts","kind":"import-statement","original":"../meta"}],"format":"esm"},"packages/plugins/plugin-navtree/src/components/HaloButton.tsx":{"bytes":4991,"imports":[{"path":"react","kind":"import-statement","external":true},{"path":"@dxos/react-client/mesh","kind":"import-statement","external":true},{"path":"@dxos/react-ui","kind":"import-statement","external":true},{"path":"@dxos/react-ui-theme","kind":"import-statement","external":true},{"path":"@dxos/util","kind":"import-statement","external":true}],"format":"esm"},"packages/plugins/plugin-navtree/src/components/NotchStart.tsx":{"bytes":3865,"imports":[{"path":"react","kind":"import-statement","external":true},{"path":"@dxos/app-framework","kind":"import-statement","external":true},{"path":"@dxos/plugin-client/meta","kind":"import-statement","external":true},{"path":"@dxos/plugin-observability","kind":"import-statement","external":true},{"path":"@dxos/react-client/halo","kind":"import-statement","external":true},{"path":"packages/plugins/plugin-navtree/src/components/HaloButton.tsx","kind":"import-statement","original":"./HaloButton"}],"format":"esm"},"packages/plugins/plugin-navtree/src/components/index.ts":{"bytes":953,"imports":[{"path":"packages/plugins/plugin-navtree/src/components/CommandsDialog.tsx","kind":"import-statement","original":"./CommandsDialog"},{"path":"packages/plugins/plugin-navtree/src/components/NavBarStart.tsx","kind":"import-statement","original":"./NavBarStart"},{"path":"packages/plugins/plugin-navtree/src/components/NavTreeContainer.tsx","kind":"import-statement","original":"./NavTreeContainer"},{"path":"packages/plugins/plugin-navtree/src/components/NavTreeDocumentTitle.tsx","kind":"import-statement","original":"./NavTreeDocumentTitle"},{"path":"packages/plugins/plugin-navtree/src/components/NotchStart.tsx","kind":"import-statement","original":"./NotchStart"}],"format":"esm"},"packages/plugins/plugin-navtree/src/components/CommandsTrigger.tsx":{"bytes":4096,"imports":[{"path":"@phosphor-icons/react","kind":"import-statement","external":true},{"path":"react","kind":"import-statement","external":true},{"path":"@dxos/app-framework","kind":"import-statement","external":true},{"path":"@dxos/react-ui","kind":"import-statement","external":true},{"path":"@dxos/react-ui-theme","kind":"import-statement","external":true},{"path":"packages/plugins/plugin-navtree/src/meta.ts","kind":"import-statement","original":"../meta"}],"format":"esm"},"packages/plugins/plugin-navtree/src/translations.ts":{"bytes":3044,"imports":[{"path":"@dxos/react-ui-navtree","kind":"import-statement","external":true},{"path":"packages/plugins/plugin-navtree/src/meta.ts","kind":"import-statement","original":"./meta"}],"format":"esm"},"packages/plugins/plugin-navtree/src/NavTreePlugin.tsx":{"bytes":32716,"imports":[{"path":"@phosphor-icons/react","kind":"import-statement","external":true},{"path":"react","kind":"import-statement","external":true},{"path":"@dxos/app-framework","kind":"import-statement","external":true},{"path":"@dxos/app-graph","kind":"import-statement","external":true},{"path":"@dxos/keyboard","kind":"import-statement","external":true},{"path":"@dxos/local-storage","kind":"import-statement","external":true},{"path":"@dxos/react-ui-mosaic","kind":"import-statement","external":true},{"path":"@dxos/util","kind":"import-statement","external":true},{"path":"packages/plugins/plugin-navtree/src/components/index.ts","kind":"import-statement","original":"./components"},{"path":"packages/plugins/plugin-navtree/src/components/CommandsTrigger.tsx","kind":"import-statement","original":"./components/CommandsTrigger"},{"path":"packages/plugins/plugin-navtree/src/meta.ts","kind":"import-statement","original":"./meta"},{"path":"packages/plugins/plugin-navtree/src/translations.ts","kind":"import-statement","original":"./translations"},{"path":"packages/plugins/plugin-navtree/src/util.ts","kind":"import-statement","original":"./util"}],"format":"esm"},"packages/plugins/plugin-navtree/src/index.ts":{"bytes":875,"imports":[{"path":"packages/plugins/plugin-navtree/src/NavTreePlugin.tsx","kind":"import-statement","original":"./NavTreePlugin"},{"path":"packages/plugins/plugin-navtree/src/NavTreePlugin.tsx","kind":"import-statement","original":"./NavTreePlugin"},{"path":"packages/plugins/plugin-navtree/src/util.ts","kind":"import-statement","original":"./util"}],"format":"esm"}},"outputs":{"packages/plugins/plugin-navtree/dist/lib/browser/index.mjs.map":{"imports":[],"exports":[],"inputs":{},"bytes":82848},"packages/plugins/plugin-navtree/dist/lib/browser/index.mjs":{"imports":[{"path":"packages/plugins/plugin-navtree/dist/lib/browser/chunk-U7MTKDFQ.mjs","kind":"import-statement"},{"path":"@phosphor-icons/react","kind":"import-statement","external":true},{"path":"react","kind":"import-statement","external":true},{"path":"@dxos/app-framework","kind":"import-statement","external":true},{"path":"@dxos/app-graph","kind":"import-statement","external":true},{"path":"@dxos/keyboard","kind":"import-statement","external":true},{"path":"@dxos/local-storage","kind":"import-statement","external":true},{"path":"@dxos/react-ui-mosaic","kind":"import-statement","external":true},{"path":"@dxos/util","kind":"import-statement","external":true},{"path":"@phosphor-icons/react","kind":"import-statement","external":true},{"path":"react","kind":"import-statement","external":true},{"path":"@dxos/app-framework","kind":"import-statement","external":true},{"path":"@dxos/app-graph","kind":"import-statement","external":true},{"path":"@dxos/keyboard","kind":"import-statement","external":true},{"path":"@dxos/plugin-graph","kind":"import-statement","external":true},{"path":"@dxos/react-ui","kind":"import-statement","external":true},{"path":"@dxos/react-ui-searchlist","kind":"import-statement","external":true},{"path":"@dxos/react-ui-theme","kind":"import-statement","external":true},{"path":"@dxos/util","kind":"import-statement","external":true},{"path":"@phosphor-icons/react","kind":"import-statement","external":true},{"path":"react","kind":"import-statement","external":true},{"path":"@dxos/app-graph","kind":"import-statement","external":true},{"path":"@dxos/react-ui","kind":"import-statement","external":true},{"path":"@dxos/react-ui-deck","kind":"import-statement","external":true},{"path":"react","kind":"import-statement","external":true},{"path":"@dxos/app-framework","kind":"import-statement","external":true},{"path":"@dxos/app-graph","kind":"import-statement","external":true},{"path":"@dxos/react-ui","kind":"import-statement","external":true},{"path":"@dxos/react-ui-mosaic","kind":"import-statement","external":true},{"path":"@dxos/react-ui-navtree","kind":"import-statement","external":true},{"path":"@dxos/util","kind":"import-statement","external":true},{"path":"@phosphor-icons/react","kind":"import-statement","external":true},{"path":"date-fns/formatDistance","kind":"import-statement","external":true},{"path":"react","kind":"import-statement","external":true},{"path":"@dxos/app-framework","kind":"import-statement","external":true},{"path":"@dxos/react-client","kind":"import-statement","external":true},{"path":"@dxos/react-ui","kind":"import-statement","external":true},{"path":"@dxos/react-ui-deck","kind":"import-statement","external":true},{"path":"@dxos/react-ui-theme","kind":"import-statement","external":true},{"path":"@dxos/app-graph","kind":"import-statement","external":true},{"path":"@dxos/react-ui-mosaic","kind":"import-statement","external":true},{"path":"@dxos/util","kind":"import-statement","external":true},{"path":"react","kind":"import-statement","external":true},{"path":"@dxos/react-ui","kind":"import-statement","external":true},{"path":"react","kind":"import-statement","external":true},{"path":"@dxos/app-framework","kind":"import-statement","external":true},{"path":"@dxos/plugin-client/meta","kind":"import-statement","external":true},{"path":"@dxos/plugin-observability","kind":"import-statement","external":true},{"path":"@dxos/react-client/halo","kind":"import-statement","external":true},{"path":"react","kind":"import-statement","external":true},{"path":"@dxos/react-client/mesh","kind":"import-statement","external":true},{"path":"@dxos/react-ui","kind":"import-statement","external":true},{"path":"@dxos/react-ui-theme","kind":"import-statement","external":true},{"path":"@dxos/util","kind":"import-statement","external":true},{"path":"@phosphor-icons/react","kind":"import-statement","external":true},{"path":"react","kind":"import-statement","external":true},{"path":"@dxos/app-framework","kind":"import-statement","external":true},{"path":"@dxos/react-ui","kind":"import-statement","external":true},{"path":"@dxos/react-ui-theme","kind":"import-statement","external":true},{"path":"@dxos/react-ui-navtree","kind":"import-statement","external":true}],"exports":["NavTreePlugin","default","expandActions","expandChildren","expandChildrenAndActions","expandOpenGraphNodes","getActions","getChildren","getParent","getPersistenceParent","getTreeItemNode","resolveMigrationOperation","sortActions","treeItemsFromRootNode"],"entryPoint":"packages/plugins/plugin-navtree/src/index.ts","inputs":{"packages/plugins/plugin-navtree/src/NavTreePlugin.tsx":{"bytesInOutput":7751},"packages/plugins/plugin-navtree/src/components/CommandsDialog.tsx":{"bytesInOutput":4128},"packages/plugins/plugin-navtree/src/components/index.ts":{"bytesInOutput":0},"packages/plugins/plugin-navtree/src/components/NavBarStart.tsx":{"bytesInOutput":1488},"packages/plugins/plugin-navtree/src/components/NavTreeContainer.tsx":{"bytesInOutput":11026},"packages/plugins/plugin-navtree/src/components/NavTreeFooter.tsx":{"bytesInOutput":5263},"packages/plugins/plugin-navtree/src/util.ts":{"bytesInOutput":4902},"packages/plugins/plugin-navtree/src/components/NavTreeDocumentTitle.tsx":{"bytesInOutput":441},"packages/plugins/plugin-navtree/src/components/NotchStart.tsx":{"bytesInOutput":879},"packages/plugins/plugin-navtree/src/components/HaloButton.tsx":{"bytesInOutput":1237},"packages/plugins/plugin-navtree/src/components/CommandsTrigger.tsx":{"bytesInOutput":1034},"packages/plugins/plugin-navtree/src/translations.ts":{"bytesInOutput":814},"packages/plugins/plugin-navtree/src/index.ts":{"bytesInOutput":33}},"bytes":40378},"packages/plugins/plugin-navtree/dist/lib/browser/meta.mjs.map":{"imports":[],"exports":[],"inputs":{},"bytes":93},"packages/plugins/plugin-navtree/dist/lib/browser/meta.mjs":{"imports":[{"path":"packages/plugins/plugin-navtree/dist/lib/browser/chunk-U7MTKDFQ.mjs","kind":"import-statement"}],"exports":["KEY_BINDING","NAVTREE_PLUGIN","default"],"entryPoint":"packages/plugins/plugin-navtree/src/meta.ts","inputs":{},"bytes":193},"packages/plugins/plugin-navtree/dist/lib/browser/chunk-U7MTKDFQ.mjs.map":{"imports":[],"exports":[],"inputs":{},"bytes":444},"packages/plugins/plugin-navtree/dist/lib/browser/chunk-U7MTKDFQ.mjs":{"imports":[],"exports":["KEY_BINDING","NAVTREE_PLUGIN","meta_default"],"inputs":{"packages/plugins/plugin-navtree/src/meta.ts":{"bytesInOutput":125}},"bytes":277}}}
@@ -2,7 +2,7 @@ import {
2
2
  KEY_BINDING,
3
3
  NAVTREE_PLUGIN,
4
4
  meta_default
5
- } from "./chunk-PSVCPL4T.mjs";
5
+ } from "./chunk-U7MTKDFQ.mjs";
6
6
  export {
7
7
  KEY_BINDING,
8
8
  NAVTREE_PLUGIN,
@@ -1 +1 @@
1
- {"version":3,"file":"NavTreePlugin.d.ts","sourceRoot":"","sources":["../../../src/NavTreePlugin.tsx"],"names":[],"mappings":"AAMA,OAAO,EACL,KAAK,oBAAoB,EAEzB,KAAK,uBAAuB,EAC5B,KAAK,gBAAgB,EACrB,KAAK,eAAe,EACpB,KAAK,oBAAoB,EAEzB,KAAK,sBAAsB,EAM5B,MAAM,qBAAqB,CAAC;AAqB7B,MAAM,MAAM,qBAAqB,GAAG,eAAe,GACjD,uBAAuB,GACvB,oBAAoB,GACpB,oBAAoB,GACpB,sBAAsB,CAAC;AAIzB,eAAO,MAAM,aAAa,QAAO,gBAAgB,CAAC,qBAAqB,CAkNtE,CAAC"}
1
+ {"version":3,"file":"NavTreePlugin.d.ts","sourceRoot":"","sources":["../../../src/NavTreePlugin.tsx"],"names":[],"mappings":"AAOA,OAAO,EACL,KAAK,oBAAoB,EAEzB,KAAK,uBAAuB,EAC5B,KAAK,gBAAgB,EACrB,KAAK,eAAe,EACpB,KAAK,oBAAoB,EAEzB,KAAK,sBAAsB,EAM5B,MAAM,qBAAqB,CAAC;AAqB7B,MAAM,MAAM,qBAAqB,GAAG,eAAe,GACjD,uBAAuB,GACvB,oBAAoB,GACpB,oBAAoB,GACpB,sBAAsB,CAAC;AAIzB,eAAO,MAAM,aAAa,QAAO,gBAAgB,CAAC,qBAAqB,CAmNtE,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"CommandsDialog.d.ts","sourceRoot":"","sources":["../../../../src/components/CommandsDialog.tsx"],"names":[],"mappings":"AAIA,OAAO,KAA4B,MAAM,OAAO,CAAC;AAcjD,eAAO,MAAM,qBAAqB,0BAA2B;IAAE,QAAQ,CAAC,EAAE,MAAM,CAAA;CAAE,sBA6FjF,CAAC"}
1
+ {"version":3,"file":"CommandsDialog.d.ts","sourceRoot":"","sources":["../../../../src/components/CommandsDialog.tsx"],"names":[],"mappings":"AAKA,OAAO,KAA4B,MAAM,OAAO,CAAC;AAcjD,eAAO,MAAM,qBAAqB,0BAA2B;IAAE,QAAQ,CAAC,EAAE,MAAM,CAAA;CAAE,sBA8FjF,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"NavBarStart.d.ts","sourceRoot":"","sources":["../../../../src/components/NavBarStart.tsx"],"names":[],"mappings":"AAIA,OAAO,KAAmB,MAAM,OAAO,CAAC;AAExC,OAAO,EAAY,KAAK,IAAI,EAAE,MAAM,iBAAiB,CAAC;AAQtD,eAAO,MAAM,WAAW,oCAAqC;IAAE,UAAU,EAAE,IAAI,CAAC;IAAC,eAAe,CAAC,EAAE,MAAM,CAAA;CAAE,sBA+B1G,CAAC"}
1
+ {"version":3,"file":"NavBarStart.d.ts","sourceRoot":"","sources":["../../../../src/components/NavBarStart.tsx"],"names":[],"mappings":"AAKA,OAAO,KAAmB,MAAM,OAAO,CAAC;AAExC,OAAO,EAAY,KAAK,IAAI,EAAE,MAAM,iBAAiB,CAAC;AAQtD,eAAO,MAAM,WAAW,oCAAqC;IAAE,UAAU,EAAE,IAAI,CAAC;IAAC,eAAe,CAAC,EAAE,MAAM,CAAA;CAAE,sBAgC1G,CAAC"}
@@ -6,7 +6,7 @@ export declare const NavTreeContainer: ({ root, activeIds, openItemIds, onOpenIt
6
6
  activeIds: Set<string>;
7
7
  openItemIds: Record<string, true>;
8
8
  onOpenItemIdsChange: (nextOpenItemIds: Record<string, true>) => void;
9
- attended: string[];
9
+ attended: Set<string>;
10
10
  popoverAnchorId?: string;
11
11
  }) => React.JSX.Element;
12
12
  //# sourceMappingURL=NavTreeContainer.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"NavTreeContainer.d.ts","sourceRoot":"","sources":["../../../../src/components/NavTreeContainer.tsx"],"names":[],"mappings":"AAIA,OAAO,KAA+C,MAAM,OAAO,CAAC;AAmBpE,OAAO,EAML,KAAK,oBAAoB,EAG1B,MAAM,SAAS,CAAC;AAGjB,eAAO,MAAM,SAAS,wBAAwB,CAAC;AAM/C,eAAO,MAAM,gBAAgB,sFAO1B;IACD,IAAI,EAAE,oBAAoB,CAAC;IAC3B,SAAS,EAAE,GAAG,CAAC,MAAM,CAAC,CAAC;IACvB,WAAW,EAAE,MAAM,CAAC,MAAM,EAAE,IAAI,CAAC,CAAC;IAClC,mBAAmB,EAAE,CAAC,eAAe,EAAE,MAAM,CAAC,MAAM,EAAE,IAAI,CAAC,KAAK,IAAI,CAAC;IAErE,QAAQ,EAAE,MAAM,EAAE,CAAC;IACnB,eAAe,CAAC,EAAE,MAAM,CAAC;CAC1B,sBAuTA,CAAC"}
1
+ {"version":3,"file":"NavTreeContainer.d.ts","sourceRoot":"","sources":["../../../../src/components/NavTreeContainer.tsx"],"names":[],"mappings":"AAIA,OAAO,KAA+C,MAAM,OAAO,CAAC;AA0BpE,OAAO,EAML,KAAK,oBAAoB,EAG1B,MAAM,SAAS,CAAC;AAGjB,eAAO,MAAM,SAAS,wBAAwB,CAAC;AAM/C,eAAO,MAAM,gBAAgB,sFAO1B;IACD,IAAI,EAAE,oBAAoB,CAAC;IAC3B,SAAS,EAAE,GAAG,CAAC,MAAM,CAAC,CAAC;IACvB,WAAW,EAAE,MAAM,CAAC,MAAM,EAAE,IAAI,CAAC,CAAC;IAClC,mBAAmB,EAAE,CAAC,eAAe,EAAE,MAAM,CAAC,MAAM,EAAE,IAAI,CAAC,KAAK,IAAI,CAAC;IACrE,QAAQ,EAAE,GAAG,CAAC,MAAM,CAAC,CAAC;IACtB,eAAe,CAAC,EAAE,MAAM,CAAC;CAC1B,sBA2TA,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"meta.d.ts","sourceRoot":"","sources":["../../../src/meta.ts"],"names":[],"mappings":"AAMA,eAAO,MAAM,cAAc,4BAA4B,CAAC;AAGxD,eAAO,MAAM,WAAW,eAAe,CAAC;;;;AAExC,wBAEuB"}
1
+ {"version":3,"file":"meta.d.ts","sourceRoot":"","sources":["../../../src/meta.ts"],"names":[],"mappings":"AAIA,eAAO,MAAM,cAAc,4BAA4B,CAAC;AAGxD,eAAO,MAAM,WAAW,eAAe,CAAC;;;;AAExC,wBAEE"}
@@ -1 +1 @@
1
- {"version":3,"file":"Graph.stories.d.ts","sourceRoot":"","sources":["../../../../src/stories/Graph.stories.tsx"],"names":[],"mappings":"AAIA,OAAO,aAAa,CAAC;AAGrB,OAAO,KAA4B,MAAM,OAAO,CAAC;;;qRAuBK,GAAG,CAAC,OAAO;;;AAwGjE,wBAIE;AAEF,eAAO,MAAM,OAAO;wBACE;QAAE,KAAK,CAAC,EAAE,OAAO,CAAA;KAAE;CAMxC,CAAC"}
1
+ {"version":3,"file":"Graph.stories.d.ts","sourceRoot":"","sources":["../../../../src/stories/Graph.stories.tsx"],"names":[],"mappings":"AAIA,OAAO,aAAa,CAAC;AAGrB,OAAO,KAA4B,MAAM,OAAO,CAAC;;;;;;AA+HjD,wBAIE;AAEF,eAAO,MAAM,OAAO;wBACE;QAAE,KAAK,CAAC,EAAE,OAAO,CAAA;KAAE;CAMxC,CAAC"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@dxos/plugin-navtree",
3
- "version": "0.6.13-main.548ca8d",
3
+ "version": "0.6.13-staging.1e988a3",
4
4
  "description": "DXOS Surface plugin for a tree view visualization of the graph.",
5
5
  "homepage": "https://dxos.org",
6
6
  "bugs": "https://github.com/dxos/dxos/issues",
@@ -31,25 +31,25 @@
31
31
  "dependencies": {
32
32
  "@preact/signals-core": "^1.6.0",
33
33
  "date-fns": "^3.3.1",
34
- "@dxos/app-framework": "0.6.13-main.548ca8d",
35
- "@dxos/app-graph": "0.6.13-main.548ca8d",
36
- "@dxos/async": "0.6.13-main.548ca8d",
37
- "@dxos/debug": "0.6.13-main.548ca8d",
38
- "@dxos/echo-schema": "0.6.13-main.548ca8d",
39
- "@dxos/keyboard": "0.6.13-main.548ca8d",
40
- "@dxos/local-storage": "0.6.13-main.548ca8d",
41
- "@dxos/log": "0.6.13-main.548ca8d",
42
- "@dxos/plugin-client": "0.6.13-main.548ca8d",
43
- "@dxos/plugin-observability": "0.6.13-main.548ca8d",
44
- "@dxos/plugin-graph": "0.6.13-main.548ca8d",
45
- "@dxos/plugin-theme": "0.6.13-main.548ca8d",
46
- "@dxos/react-client": "0.6.13-main.548ca8d",
47
- "@dxos/react-ui-deck": "0.6.13-main.548ca8d",
48
- "@dxos/protocols": "0.6.13-main.548ca8d",
49
- "@dxos/react-ui-mosaic": "0.6.13-main.548ca8d",
50
- "@dxos/react-ui-navtree": "0.6.13-main.548ca8d",
51
- "@dxos/react-ui-searchlist": "0.6.13-main.548ca8d",
52
- "@dxos/util": "0.6.13-main.548ca8d"
34
+ "@dxos/app-framework": "0.6.13-staging.1e988a3",
35
+ "@dxos/app-graph": "0.6.13-staging.1e988a3",
36
+ "@dxos/debug": "0.6.13-staging.1e988a3",
37
+ "@dxos/async": "0.6.13-staging.1e988a3",
38
+ "@dxos/echo-schema": "0.6.13-staging.1e988a3",
39
+ "@dxos/keyboard": "0.6.13-staging.1e988a3",
40
+ "@dxos/local-storage": "0.6.13-staging.1e988a3",
41
+ "@dxos/log": "0.6.13-staging.1e988a3",
42
+ "@dxos/plugin-client": "0.6.13-staging.1e988a3",
43
+ "@dxos/plugin-graph": "0.6.13-staging.1e988a3",
44
+ "@dxos/plugin-observability": "0.6.13-staging.1e988a3",
45
+ "@dxos/plugin-theme": "0.6.13-staging.1e988a3",
46
+ "@dxos/react-ui-deck": "0.6.13-staging.1e988a3",
47
+ "@dxos/protocols": "0.6.13-staging.1e988a3",
48
+ "@dxos/react-client": "0.6.13-staging.1e988a3",
49
+ "@dxos/react-ui-mosaic": "0.6.13-staging.1e988a3",
50
+ "@dxos/react-ui-searchlist": "0.6.13-staging.1e988a3",
51
+ "@dxos/react-ui-navtree": "0.6.13-staging.1e988a3",
52
+ "@dxos/util": "0.6.13-staging.1e988a3"
53
53
  },
54
54
  "devDependencies": {
55
55
  "@phosphor-icons/react": "^2.1.5",
@@ -57,19 +57,19 @@
57
57
  "@types/react-dom": "~18.2.0",
58
58
  "react": "~18.2.0",
59
59
  "react-dom": "~18.2.0",
60
- "vite": "5.4.7",
61
- "@dxos/echo-signals": "0.6.13-main.548ca8d",
62
- "@dxos/random": "0.6.13-main.548ca8d",
63
- "@dxos/react-ui": "0.6.13-main.548ca8d",
64
- "@dxos/storybook-utils": "0.6.13-main.548ca8d",
65
- "@dxos/react-ui-theme": "0.6.13-main.548ca8d"
60
+ "vite": "^5.3.4",
61
+ "@dxos/random": "0.6.13-staging.1e988a3",
62
+ "@dxos/echo-signals": "0.6.13-staging.1e988a3",
63
+ "@dxos/react-ui": "0.6.13-staging.1e988a3",
64
+ "@dxos/react-ui-theme": "0.6.13-staging.1e988a3",
65
+ "@dxos/storybook-utils": "0.6.13-staging.1e988a3"
66
66
  },
67
67
  "peerDependencies": {
68
68
  "@phosphor-icons/react": "^2.1.5",
69
- "react": "~18.2.0",
70
- "react-dom": "~18.2.0",
71
- "@dxos/react-ui": "0.6.13-main.548ca8d",
72
- "@dxos/react-ui-theme": "0.6.13-main.548ca8d"
69
+ "react": "^18.0.0",
70
+ "react-dom": "^18.0.0",
71
+ "@dxos/react-ui": "0.6.13-staging.1e988a3",
72
+ "@dxos/react-ui-theme": "0.6.13-staging.1e988a3"
73
73
  },
74
74
  "publishConfig": {
75
75
  "access": "public"
@@ -2,6 +2,7 @@
2
2
  // Copyright 2023 DXOS.org
3
3
  //
4
4
 
5
+ import { MagnifyingGlass, type IconProps } from '@phosphor-icons/react';
5
6
  import React from 'react';
6
7
 
7
8
  import {
@@ -154,7 +155,7 @@ export const NavTreePlugin = (): PluginDefinition<NavTreePluginProvides> => {
154
155
  activeIds={data.activeIds as Set<string>}
155
156
  openItemIds={state.values.openItemIds}
156
157
  onOpenItemIdsChange={handleOpenItemIdsChange}
157
- attended={data.attended as string[]}
158
+ attended={data.attended as Set<string>}
158
159
  popoverAnchorId={data.popoverAnchorId as string}
159
160
  />
160
161
  );
@@ -242,7 +243,8 @@ export const NavTreePlugin = (): PluginDefinition<NavTreePluginProvides> => {
242
243
  },
243
244
  properties: {
244
245
  label: ['open commands label', { ns: NAVTREE_PLUGIN }],
245
- icon: 'ph--magnifying-glass--regular',
246
+ icon: (props: IconProps) => <MagnifyingGlass {...props} />,
247
+ iconSymbol: 'ph--magnifying-glass--regular',
246
248
  keyBinding: {
247
249
  macos: 'meta+k',
248
250
  windows: 'ctrl+k',
@@ -2,13 +2,14 @@
2
2
  // Copyright 2023 DXOS.org
3
3
  //
4
4
 
5
+ import { DotOutline } from '@phosphor-icons/react';
5
6
  import React, { useMemo, useState } from 'react';
6
7
 
7
8
  import { useIntentDispatcher, LayoutAction } from '@dxos/app-framework';
8
9
  import { type ActionLike, isActionGroup, isAction } from '@dxos/app-graph';
9
10
  import { Keyboard, keySymbols } from '@dxos/keyboard';
10
11
  import { useGraph } from '@dxos/plugin-graph';
11
- import { Button, Dialog, Icon, useTranslation, toLocalizedString } from '@dxos/react-ui';
12
+ import { Button, Dialog, useTranslation, toLocalizedString } from '@dxos/react-ui';
12
13
  import { SearchList } from '@dxos/react-ui-searchlist';
13
14
  import { descriptionText, mx } from '@dxos/react-ui-theme';
14
15
  import { getHostPlatform } from '@dxos/util';
@@ -69,6 +70,7 @@ export const CommandsDialogContent = ({ selected: initial }: { selected?: string
69
70
  typeof action.properties.keyBinding === 'string'
70
71
  ? action.properties.keyBinding
71
72
  : action.properties.keyBinding?.[getHostPlatform()];
73
+ const Icon = action.properties.icon ?? DotOutline;
72
74
  return (
73
75
  <SearchList.Item
74
76
  value={label}
@@ -93,7 +95,7 @@ export const CommandsDialogContent = ({ selected: initial }: { selected?: string
93
95
  disabled={action.properties.disabled}
94
96
  {...(action.properties?.testId && { 'data-testid': action.properties.testId })}
95
97
  >
96
- <Icon icon={action.properties.icon} size={4} />
98
+ <Icon size={4} className={mx(!action.properties.icon && 'invisible')} />
97
99
  <span className='grow truncate'>{label}</span>
98
100
  {shortcut && <span className={mx('shrink-0', descriptionText)}>{keySymbols(shortcut).join('')}</span>}
99
101
  </SearchList.Item>
@@ -2,6 +2,7 @@
2
2
  // Copyright 2023 DXOS.org
3
3
  //
4
4
 
5
+ import { DotsThreeVertical } from '@phosphor-icons/react';
5
6
  import React, { Fragment } from 'react';
6
7
 
7
8
  import { getGraph, type Node } from '@dxos/app-graph';
@@ -21,6 +22,7 @@ export const NavBarStart = ({ activeNode, popoverAnchorId }: { activeNode: Node;
21
22
  ? Popover.Anchor
22
23
  : Fragment;
23
24
 
25
+ const Icon = activeNode.properties?.icon ?? DotsThreeVertical;
24
26
  const graph = getGraph(activeNode);
25
27
  const actions = graph.actions(activeNode);
26
28
  const label = toLocalizedString(activeNode.properties?.label, t);
@@ -31,10 +33,10 @@ export const NavBarStart = ({ activeNode, popoverAnchorId }: { activeNode: Node;
31
33
  <>
32
34
  <ActionRoot>
33
35
  <PlankHeading.ActionsMenu
34
- icon={activeNode.properties?.icon ?? 'ph--dots-three-vertical--regular'}
36
+ Icon={Icon}
35
37
  attendableId={activeNode.id}
36
38
  triggerLabel={menuTriggerLabel}
37
- actions={[actions]}
39
+ actions={actions}
38
40
  onAction={(action) =>
39
41
  typeof action.data === 'function' && action.data({ node: action as Node, caller: TREE_ITEM_MAIN_HEADING })
40
42
  }
@@ -4,10 +4,17 @@
4
4
 
5
5
  import React, { type ReactNode, useCallback, useMemo } from 'react';
6
6
 
7
- import { NavigationAction, Surface, useIntentDispatcher } from '@dxos/app-framework';
7
+ import {
8
+ NavigationAction,
9
+ LayoutAction,
10
+ Surface,
11
+ SLUG_PATH_SEPARATOR,
12
+ SLUG_COLLECTION_INDICATOR,
13
+ useIntentDispatcher,
14
+ } from '@dxos/app-framework';
8
15
  import { getGraph, isAction, isActionLike } from '@dxos/app-graph';
9
16
  import { ElevationProvider, useMediaQuery, useSidebars } from '@dxos/react-ui';
10
- import { type MosaicDropEvent, type MosaicMoveEvent, Mosaic, Path } from '@dxos/react-ui-mosaic';
17
+ import { type MosaicDropEvent, type MosaicMoveEvent, Path } from '@dxos/react-ui-mosaic';
11
18
  import {
12
19
  NavTree,
13
20
  type NavTreeItemNode,
@@ -51,8 +58,7 @@ export const NavTreeContainer = ({
51
58
  activeIds: Set<string>;
52
59
  openItemIds: Record<string, true>;
53
60
  onOpenItemIdsChange: (nextOpenItemIds: Record<string, true>) => void;
54
- // TODO(wittjosiah): Use attention context directly?
55
- attended: string[];
61
+ attended: Set<string>;
56
62
  popoverAnchorId?: string;
57
63
  }) => {
58
64
  const { closeNavigationSidebar } = useSidebars(NAVTREE_PLUGIN);
@@ -90,12 +96,19 @@ export const NavTreeContainer = ({
90
96
  await dispatch({
91
97
  action: NavigationAction.OPEN,
92
98
  data: {
93
- activeParts: {
94
- main: [node.id],
95
- },
99
+ activeParts: node.data?.comments
100
+ ? {
101
+ main: [node.id],
102
+ complementary: [`${node.id}${SLUG_PATH_SEPARATOR}comments${SLUG_COLLECTION_INDICATOR}`],
103
+ }
104
+ : {
105
+ main: [node.id],
106
+ },
96
107
  },
97
108
  });
98
109
 
110
+ await dispatch({ action: LayoutAction.SCROLL_INTO_VIEW, data: { id: node.id } });
111
+
99
112
  const defaultAction = actions?.find((action) => action.properties?.disposition === 'default');
100
113
  if (isAction(defaultAction)) {
101
114
  void (defaultAction.data as () => void)();
@@ -332,37 +345,34 @@ export const NavTreeContainer = ({
332
345
  }, [onOpenItemIdsChange, openItemIds]);
333
346
 
334
347
  return (
335
- <Mosaic.Root>
336
- <Mosaic.DragOverlay />
337
- <ElevationProvider elevation='chrome'>
338
- <div
339
- role='none'
340
- className='bs-full overflow-hidden row-span-3 grid grid-cols-1 grid-rows-[min-content_1fr_min-content]'
341
- >
342
- <Surface role='search-input' limit={1} />
343
- {/* TODO(thure): what gives this an inline `overflow: initial`? */}
344
- <div role='none' className='!overflow-y-auto'>
345
- <NavTree
346
- id={root.id}
347
- items={items}
348
- current={activeIds}
349
- attended={attended}
350
- type={NODE_TYPE}
351
- open={openItemIds}
352
- onNavigate={handleNavigate}
353
- onItemOpenChange={handleItemOpenChange}
354
- onMove={handleMove}
355
- onDrop={handleDrop}
356
- onDragEnd={handleDragEnd}
357
- popoverAnchorId={popoverAnchorId}
358
- renderPresence={renderPresence}
359
- resolveItemLevel={resolveItemLevel}
360
- loadDescendents={loadDescendents}
361
- />
362
- </div>
363
- <NavTreeFooter />
348
+ <ElevationProvider elevation='chrome'>
349
+ <div
350
+ role='none'
351
+ className='bs-full overflow-hidden row-span-3 grid grid-cols-1 grid-rows-[min-content_1fr_min-content]'
352
+ >
353
+ <Surface role='search-input' limit={1} />
354
+ {/* TODO(thure): what gives this an inline `overflow: initial`? */}
355
+ <div role='none' className='!overflow-y-auto'>
356
+ <NavTree
357
+ id={root.id}
358
+ items={items}
359
+ current={activeIds}
360
+ attended={attended}
361
+ type={NODE_TYPE}
362
+ open={openItemIds}
363
+ onNavigate={handleNavigate}
364
+ onItemOpenChange={handleItemOpenChange}
365
+ onMove={handleMove}
366
+ onDrop={handleDrop}
367
+ onDragEnd={handleDragEnd}
368
+ popoverAnchorId={popoverAnchorId}
369
+ renderPresence={renderPresence}
370
+ resolveItemLevel={resolveItemLevel}
371
+ loadDescendents={loadDescendents}
372
+ />
364
373
  </div>
365
- </ElevationProvider>
366
- </Mosaic.Root>
374
+ <NavTreeFooter />
375
+ </div>
376
+ </ElevationProvider>
367
377
  );
368
378
  };
@@ -35,7 +35,7 @@ const buttonStyles = 'pli-1.5 text-xs font-normal';
35
35
  const repo = 'https://github.com/dxos/dxos';
36
36
 
37
37
  export const NavTreeFooter = (props: { layoutPart?: LayoutPart }) => {
38
- const layoutPart = useDefaultValue(props.layoutPart, () => 'sidebar');
38
+ const layoutPart = useDefaultValue(props.layoutPart, 'sidebar');
39
39
  const config = useConfig();
40
40
  const { t } = useTranslation(NAVTREE_PLUGIN);
41
41
  const { navigationSidebarOpen } = useSidebars(NAVTREE_PLUGIN);
@@ -6,7 +6,7 @@ import { CaretRight, Circle, File, Folder, type Icon, type IconProps, Plus, User
6
6
  import React, { type HTMLAttributes, type PropsWithChildren } from 'react';
7
7
 
8
8
  import { type ClassNameValue, type Size } from '@dxos/react-ui';
9
- import { getSize, mx } from '@dxos/react-ui-theme';
9
+ import { mx } from '@dxos/react-ui-theme';
10
10
 
11
11
  // TODO(burdon): Rounded border if first/last.
12
12
  const styles = {
@@ -29,7 +29,7 @@ export const IconButton = ({
29
29
  // TODO(burdon): Density aware.
30
30
  return (
31
31
  <div className={mx('flex w-6 h-6 items-center justify-center select-none', classNames)} onClick={onClick}>
32
- <Icon className={mx('cursor-pointer', getSize(size))} {...props} />
32
+ <Icon size={size} className='cursor-pointer' {...props} />
33
33
  </div>
34
34
  );
35
35
  };
package/src/meta.ts CHANGED
@@ -2,8 +2,6 @@
2
2
  // Copyright 2023 DXOS.org
3
3
  //
4
4
 
5
- import { type PluginMeta } from '@dxos/app-framework';
6
-
7
5
  export const NAVTREE_PLUGIN = 'dxos.org/plugin/navtree';
8
6
 
9
7
  // TODO(wittjosiah): Factor out.
@@ -11,4 +9,4 @@ export const KEY_BINDING = 'KeyBinding';
11
9
 
12
10
  export default {
13
11
  id: NAVTREE_PLUGIN,
14
- } satisfies PluginMeta;
12
+ };
@@ -8,7 +8,7 @@ import { batch } from '@preact/signals-core';
8
8
  import React, { useMemo, useState } from 'react';
9
9
 
10
10
  import { Graph } from '@dxos/app-graph';
11
- import { registerSignalsRuntime } from '@dxos/echo-signals/react';
11
+ import { registerSignalRuntime } from '@dxos/echo-signals/react';
12
12
  import { faker } from '@dxos/random';
13
13
  import { Treegrid } from '@dxos/react-ui';
14
14
  import { Mosaic, Path, type MosaicDropEvent, type MosaicMoveEvent, type MosaicOperation } from '@dxos/react-ui-mosaic';
@@ -19,7 +19,7 @@ import { arrayMove } from '@dxos/util';
19
19
  import { type NavTreeItemGraphNode, treeItemsFromRootNode } from '../util';
20
20
 
21
21
  faker.seed(3);
22
- registerSignalsRuntime();
22
+ registerSignalRuntime();
23
23
 
24
24
  const createGraph = () => {
25
25
  const graph = new Graph();
@@ -1,7 +0,0 @@
1
- {
2
- "version": 3,
3
- "sources": ["../../../src/meta.ts"],
4
- "sourcesContent": ["//\n// Copyright 2023 DXOS.org\n//\n\nimport { type PluginMeta } from '@dxos/app-framework';\n\nexport const NAVTREE_PLUGIN = 'dxos.org/plugin/navtree';\n\n// TODO(wittjosiah): Factor out.\nexport const KEY_BINDING = 'KeyBinding';\n\nexport default {\n id: NAVTREE_PLUGIN,\n} satisfies PluginMeta;\n"],
5
- "mappings": ";AAMO,IAAMA,iBAAiB;AAGvB,IAAMC,cAAc;AAE3B,IAAA,eAAe;EACbC,IAAIF;AACN;",
6
- "names": ["NAVTREE_PLUGIN", "KEY_BINDING", "id"]
7
- }