@dxos/plugin-navtree 0.7.0 → 0.7.1-staging.599df14
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/lib/browser/index.mjs +11 -9
- package/dist/lib/browser/index.mjs.map +3 -3
- package/dist/lib/browser/meta.json +1 -1
- package/dist/types/src/components/NavTreeContainer.d.ts.map +1 -1
- package/package.json +28 -28
- package/src/components/NavTreeContainer.tsx +5 -7
- package/src/components/NavTreeFooter.tsx +1 -1
|
@@ -12,7 +12,7 @@ import { invariant } from "@dxos/invariant";
|
|
|
12
12
|
import { Keyboard as Keyboard2 } from "@dxos/keyboard";
|
|
13
13
|
import { LocalStorageStore } from "@dxos/local-storage";
|
|
14
14
|
import { Path as Path2 } from "@dxos/react-ui-mosaic";
|
|
15
|
-
import { mx as
|
|
15
|
+
import { mx as mx5 } from "@dxos/react-ui-theme";
|
|
16
16
|
import { getHostPlatform as getHostPlatform3 } from "@dxos/util";
|
|
17
17
|
|
|
18
18
|
// packages/plugins/plugin-navtree/src/components/CommandsDialog.tsx
|
|
@@ -472,7 +472,6 @@ import { useGraph as useGraph2 } from "@dxos/plugin-graph";
|
|
|
472
472
|
import { isEchoObject, isSpace } from "@dxos/react-client/echo";
|
|
473
473
|
import { ElevationProvider, useMediaQuery, useSidebars as useSidebars2 } from "@dxos/react-ui";
|
|
474
474
|
import { isItem } from "@dxos/react-ui-list";
|
|
475
|
-
import { mx as mx4 } from "@dxos/react-ui-theme";
|
|
476
475
|
import { arrayMove } from "@dxos/util";
|
|
477
476
|
|
|
478
477
|
// packages/plugins/plugin-navtree/src/components/NavTreeFooter.tsx
|
|
@@ -569,7 +568,7 @@ var NavTreeFooter = (props) => {
|
|
|
569
568
|
}, /* @__PURE__ */ React5.createElement("span", {
|
|
570
569
|
className: "sr-only"
|
|
571
570
|
}, t("open settings label")), /* @__PURE__ */ React5.createElement(GearSix, {
|
|
572
|
-
className: mx3(getSize(
|
|
571
|
+
className: mx3(getSize(5), "rotate-90")
|
|
573
572
|
}))), /* @__PURE__ */ React5.createElement(Tooltip2.Portal, null, /* @__PURE__ */ React5.createElement(Tooltip2.Content, {
|
|
574
573
|
classNames: "z-[12]"
|
|
575
574
|
}, t("open settings label"), /* @__PURE__ */ React5.createElement(Tooltip2.Arrow, null)))), navigationPlugin?.meta.id === "dxos.org/plugin/deck" && /* @__PURE__ */ React5.createElement(LayoutControls, {
|
|
@@ -848,13 +847,16 @@ var NavTreeContainer = ({ items, current, open, popoverAnchorId, ...props }) =>
|
|
|
848
847
|
elevation: "chrome"
|
|
849
848
|
}, /* @__PURE__ */ React6.createElement("div", {
|
|
850
849
|
role: "none",
|
|
851
|
-
className:
|
|
850
|
+
className: "grid grid-cols-1 grid-rows-[var(--rail-size)_1fr_min-content] bs-full overflow-hidden"
|
|
851
|
+
}, /* @__PURE__ */ React6.createElement("div", {
|
|
852
|
+
role: "none",
|
|
853
|
+
className: "border-be border-separator"
|
|
852
854
|
}, /* @__PURE__ */ React6.createElement(Surface, {
|
|
853
855
|
role: "search-input",
|
|
854
856
|
limit: 1
|
|
855
|
-
}), /* @__PURE__ */ React6.createElement("div", {
|
|
857
|
+
})), /* @__PURE__ */ React6.createElement("div", {
|
|
856
858
|
role: "none",
|
|
857
|
-
className: "!overflow-y-auto"
|
|
859
|
+
className: "border-be border-separator !overflow-y-auto"
|
|
858
860
|
}, /* @__PURE__ */ React6.createElement(NavTree, {
|
|
859
861
|
items,
|
|
860
862
|
open,
|
|
@@ -894,7 +896,7 @@ import { useIdentity } from "@dxos/react-client/halo";
|
|
|
894
896
|
import React7 from "react";
|
|
895
897
|
import { ConnectionState, useNetworkStatus } from "@dxos/react-client/mesh";
|
|
896
898
|
import { Avatar } from "@dxos/react-ui";
|
|
897
|
-
import { focusRing, mx as
|
|
899
|
+
import { focusRing, mx as mx4 } from "@dxos/react-ui-theme";
|
|
898
900
|
import { hexToFallback } from "@dxos/util";
|
|
899
901
|
var INTERNAL = "https://avatars.githubusercontent.com/u/57182821";
|
|
900
902
|
var HaloButton = (props) => {
|
|
@@ -902,7 +904,7 @@ var HaloButton = (props) => {
|
|
|
902
904
|
const fallbackValue = hexToFallback(identityKey ?? "0");
|
|
903
905
|
const { swarm: connectionState } = useNetworkStatus();
|
|
904
906
|
return /* @__PURE__ */ React7.createElement("button", {
|
|
905
|
-
className:
|
|
907
|
+
className: mx4(focusRing, "rounded grid place-items-center"),
|
|
906
908
|
onClick
|
|
907
909
|
}, /* @__PURE__ */ React7.createElement(Avatar.Root, {
|
|
908
910
|
size,
|
|
@@ -1030,7 +1032,7 @@ var NavTreePlugin = () => {
|
|
|
1030
1032
|
icon: node.properties.icon,
|
|
1031
1033
|
disabled: node.properties.disabled,
|
|
1032
1034
|
testId: node.properties.testId,
|
|
1033
|
-
className:
|
|
1035
|
+
className: mx5(node.properties.modified && "italic", node.properties.className),
|
|
1034
1036
|
headingClassName: node.properties.headingClassName,
|
|
1035
1037
|
path,
|
|
1036
1038
|
parentOf,
|
|
@@ -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/NavTree.tsx", "../../../src/components/NavTreeItemAction.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 parseNavigationPlugin,\n} from '@dxos/app-framework';\nimport { createExtension, type Graph, isAction, isGraphNode, type Node, type NodeFilter } from '@dxos/app-graph';\nimport { invariant } from '@dxos/invariant';\nimport { Keyboard } from '@dxos/keyboard';\nimport { LocalStorageStore } from '@dxos/local-storage';\nimport { Path } from '@dxos/react-ui-mosaic';\nimport { mx } from '@dxos/react-ui-theme';\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 { type NavTreeItem } from './types';\nimport {\n expandOpenGraphNodes,\n getActions,\n getChildren,\n treeItemsFromRootNode,\n type NavTreeItemGraphNode,\n} from './util';\n\nexport type NavTreePluginProvides = SurfaceProvides &\n MetadataRecordsProvides &\n GraphBuilderProvides &\n TranslationsProvides &\n IntentResolverProvides;\n\ntype NavTreeState = {\n root?: NavTreeItemGraphNode;\n flatTree: NavTreeItem[];\n open: string[];\n};\n\nexport const NavTreePlugin = (): PluginDefinition<NavTreePluginProvides> => {\n let graphPlugin: Plugin<GraphProvides> | undefined;\n let graph: Graph | undefined;\n const itemCache = new Map<string, NavTreeItem>();\n\n const state = new LocalStorageStore<NavTreeState>('dxos.org/settings/navtree', {\n root: undefined,\n get flatTree() {\n if (!this.root || !graph) {\n return [];\n }\n\n return treeItemsFromRootNode(graph, this.root, this.open, getItem);\n },\n // TODO(thure): Do this dynamically.\n open: ['root', 'root~dxos.org/plugin/space-spaces', 'root~dxos.org/plugin/files'],\n });\n\n const getItem = (node: NavTreeItemGraphNode, parent: readonly string[], filter?: NodeFilter) => {\n invariant(graph);\n const path = [...parent, node.id];\n const { actions, groupedActions } = getActions(graph, node);\n const children = getChildren(graph, node, filter, path);\n const parentOf =\n children.length > 0 ? children.map(({ id }) => id) : node.properties.role === 'branch' ? [] : undefined;\n const item = {\n id: node.id,\n label: node.properties.label ?? node.id,\n icon: node.properties.icon,\n disabled: node.properties.disabled,\n testId: node.properties.testId,\n className: mx(node.properties.modified && 'italic', node.properties.className),\n headingClassName: node.properties.headingClassName,\n path,\n parentOf,\n node,\n actions,\n groupedActions,\n } satisfies NavTreeItem;\n\n const cachedItem = itemCache.get(node.id);\n // TODO(wittjosiah): This is not a good enough check.\n // Consider better ways to doing reactive transformations which retain referential equality.\n if (cachedItem && JSON.stringify(item) === JSON.stringify(cachedItem)) {\n return cachedItem;\n } else {\n itemCache.set(node.id, item);\n return item;\n }\n };\n\n const handleOpenChange = (item: NavTreeItem, open: boolean) => {\n const path = Path.create(...item.path);\n // TODO(thure): This might become a localstorage leak; openItemIds that no longer exist should be removed from this map.\n if (open) {\n state.values.open.push(path);\n } else {\n const index = state.values.open.indexOf(path);\n if (index > -1) {\n state.values.open.splice(index, 1);\n }\n }\n\n if (graph) {\n void expandOpenGraphNodes(graph, state.values.open);\n }\n };\n\n return {\n meta,\n ready: async (plugins) => {\n state.prop({ key: 'open', type: LocalStorageStore.json<string[]>() });\n\n graphPlugin = resolvePlugin(plugins, parseGraphPlugin);\n graph = graphPlugin?.provides.graph;\n if (!graph) {\n return;\n }\n\n const dispatch = resolvePlugin(plugins, parseIntentPlugin)?.provides.intent.dispatch;\n const soloPart = resolvePlugin(plugins, parseNavigationPlugin)?.provides.location.active.solo?.[0];\n if (dispatch && soloPart) {\n void dispatch({ plugin: NAVTREE_PLUGIN, action: NavigationAction.EXPOSE, data: { id: soloPart.id } });\n }\n\n state.values.root = graph.root as NavTreeItemGraphNode;\n void expandOpenGraphNodes(graph, state.values.open);\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 return (\n <NavTreeContainer\n items={state.values.flatTree}\n current={data.activeIds as string[]}\n open={state.values.open}\n onOpenChange={handleOpenChange}\n popoverAnchorId={data.popoverAnchorId as string}\n />\n );\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: async (intent) => {\n switch (intent.action) {\n case NavigationAction.EXPOSE: {\n if (graph && intent.data?.id) {\n const path = await graph.waitForPath({ target: intent.data.id });\n const additionalOpenItems = [...Array(path.length)].reduce((acc: string[], _, index) => {\n const itemId = Path.create(...path.slice(0, index));\n if (itemId.length > 0 && !state.values.open.includes(itemId)) {\n acc.push(itemId);\n }\n return acc;\n }, []);\n state.values.open.push(...additionalOpenItems);\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 { StackItem } from '@dxos/react-ui-stack';\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 <StackItem.Sigil\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 <StackItem.HeadingLabel attendableId={activeNode.id}>{label}</StackItem.HeadingLabel>\n </>\n );\n};\n", "//\n// Copyright 2024 DXOS.org\n//\n\nimport React, { Fragment, useCallback, useEffect, type FC } from 'react';\n\nimport { isAction, type Node } from '@dxos/app-graph';\nimport { Popover, toLocalizedString, Treegrid, useTranslation } from '@dxos/react-ui';\nimport { Tree, type TreeProps } from '@dxos/react-ui-list';\nimport { type MaybePromise } from '@dxos/util';\n\nimport { NavTreeItemAction } from './NavTreeItemAction';\nimport { NAVTREE_PLUGIN } from '../meta';\nimport { type NavTreeItem } from '../types';\n\nexport const NAV_TREE_ITEM = 'NavTreeItem';\n\nexport type NavTreeProps = Omit<TreeProps<NavTreeItem>, 'draggable' | 'gridTemplateColumns' | 'renderColumns'> &\n Pick<NavTreeColumnsProps, 'loadDescendents' | 'renderPresence' | 'popoverAnchorId'>;\n\nexport const NavTree = ({ loadDescendents, renderPresence, popoverAnchorId, ...props }: NavTreeProps) => {\n const renderColumns = useCallback<NonNullable<TreeProps<NavTreeItem>['renderColumns']>>(\n ({ item, menuOpen, setMenuOpen }) => {\n return (\n <NavTreeColumns\n item={item}\n menuOpen={menuOpen}\n setMenuOpen={setMenuOpen}\n loadDescendents={loadDescendents}\n renderPresence={renderPresence}\n popoverAnchorId={popoverAnchorId}\n />\n );\n },\n [renderPresence, popoverAnchorId, loadDescendents],\n );\n\n return (\n <Tree<NavTreeItem>\n {...props}\n draggable\n gridTemplateColumns='[tree-row-start] 1fr min-content min-content min-content [tree-row-end]'\n renderColumns={renderColumns}\n />\n );\n};\n\ntype NavTreeColumnsProps = {\n item: NavTreeItem;\n menuOpen: boolean;\n setMenuOpen: (open: boolean) => void;\n loadDescendents?: (node: Node) => MaybePromise<void>;\n renderPresence?: FC<{ item: NavTreeItem }>;\n popoverAnchorId?: string;\n};\n\nconst NavTreeColumns = ({\n item,\n menuOpen,\n setMenuOpen,\n loadDescendents,\n renderPresence: Presence,\n popoverAnchorId,\n}: NavTreeColumnsProps) => {\n const { t } = useTranslation(NAVTREE_PLUGIN);\n\n const level = item.path.length - 2;\n\n const [primaryAction, ...secondaryActions] = item.actions.toSorted((a, b) =>\n a.properties?.disposition === 'toolbar' ? -1 : 1,\n );\n\n const actions = (primaryAction?.properties?.disposition === 'toolbar' ? secondaryActions : item.actions)\n .flatMap((action) => (isAction(action) ? [action] : []))\n .filter((action) => !action.properties?.hidden);\n\n const ActionRoot = popoverAnchorId === `dxos.org/ui/${NAV_TREE_ITEM}/${item.id}` ? Popover.Anchor : Fragment;\n\n // TODO(thure): Ideally this should not be necessary.\n useEffect(() => {\n const frame = requestAnimationFrame(() => {\n void loadDescendents?.(item.node);\n if (primaryAction && !isAction(primaryAction)) {\n void loadDescendents?.(primaryAction);\n }\n });\n return () => cancelAnimationFrame(frame);\n }, [primaryAction]);\n\n return (\n <>\n {primaryAction?.properties?.disposition === 'toolbar' ? (\n <NavTreeItemAction\n testId={primaryAction.properties?.testId}\n label={toLocalizedString(primaryAction.properties?.label, t)}\n icon={primaryAction.properties?.icon ?? 'ph--placeholder--regular'}\n parent={item.node}\n monolithic={isAction(primaryAction)}\n menuActions={isAction(primaryAction) ? [primaryAction] : item.groupedActions[primaryAction.id]}\n menuType={primaryAction.properties?.menuType}\n caller={NAV_TREE_ITEM}\n />\n ) : (\n <Treegrid.Cell />\n )}\n <ActionRoot>\n {actions.length > 0 ? (\n <NavTreeItemAction\n testId={`navtree.treeItem.actionsLevel${level}`}\n label={t('tree item actions label')}\n icon='ph--dots-three-vertical--regular'\n parent={item.node}\n menuActions={actions}\n menuType='dropdown'\n caller={NAV_TREE_ITEM}\n menuOpen={menuOpen}\n onChangeMenuOpen={setMenuOpen}\n />\n ) : (\n <Treegrid.Cell />\n )}\n </ActionRoot>\n {Presence && <Presence item={item} />}\n </>\n );\n};\n", "//\n// Copyright 2023 DXOS.org\n//\n\nimport { useControllableState } from '@radix-ui/react-use-controllable-state';\nimport React, { type MutableRefObject, type PropsWithChildren, useRef, useState } from 'react';\n\nimport { type Action, type ActionLike, type Node } from '@dxos/app-graph';\nimport { keySymbols } from '@dxos/keyboard';\nimport {\n Button,\n Dialog,\n DropdownMenu,\n ContextMenu,\n Tooltip,\n useTranslation,\n toLocalizedString,\n Icon,\n} from '@dxos/react-ui';\nimport { SearchList } from '@dxos/react-ui-searchlist';\nimport { descriptionText, hoverableControlItem, hoverableOpenControlItem, mx } from '@dxos/react-ui-theme';\nimport { getHostPlatform } from '@dxos/util';\n\nimport { NAVTREE_PLUGIN } from '../meta';\nimport { type ActionProperties } from '../types';\n\nexport type NavTreeItemActionMenuProps = ActionProperties & {\n parent: Node;\n caller?: string;\n monolithic?: boolean;\n menuActions?: Action[];\n suppressNextTooltip?: MutableRefObject<boolean>;\n menuOpen?: boolean;\n defaultMenuOpen?: boolean;\n onChangeMenuOpen?: (nextOpen: boolean) => void;\n onAction?: (action: Action) => void;\n};\n\nconst getShortcut = (action: ActionLike) => {\n return typeof action.properties?.keyBinding === 'string'\n ? action.properties.keyBinding\n : action.properties?.keyBinding?.[getHostPlatform()];\n};\n\nconst fallbackIcon = 'ph--placeholder--regular';\n\nexport const NavTreeItemActionDropdownMenu = ({\n label,\n icon,\n testId,\n defaultMenuOpen,\n menuActions,\n menuOpen,\n suppressNextTooltip,\n onChangeMenuOpen,\n onAction,\n}: NavTreeItemActionMenuProps) => {\n const { t } = useTranslation(NAVTREE_PLUGIN);\n\n const [optionsMenuOpen, setOptionsMenuOpen] = useControllableState({\n prop: menuOpen,\n defaultProp: defaultMenuOpen,\n onChange: onChangeMenuOpen,\n });\n\n return (\n <DropdownMenu.Root\n {...{\n open: optionsMenuOpen,\n onOpenChange: (nextOpen: boolean) => {\n if (!nextOpen && suppressNextTooltip) {\n suppressNextTooltip.current = true;\n }\n return setOptionsMenuOpen(nextOpen);\n },\n }}\n >\n <Tooltip.Trigger asChild>\n <DropdownMenu.Trigger asChild>\n <Button\n variant='ghost'\n density='fine'\n classNames={mx('shrink-0 !pli-2 pointer-fine:!pli-1', hoverableControlItem, hoverableOpenControlItem)}\n data-testid={testId}\n aria-label={t('tree item actions label')}\n >\n <span className='sr-only'>{toLocalizedString(label, t)}</span>\n <Icon icon={icon ?? fallbackIcon} size={4} />\n </Button>\n </DropdownMenu.Trigger>\n </Tooltip.Trigger>\n <DropdownMenu.Portal>\n <DropdownMenu.Content classNames='z-[31]'>\n <DropdownMenu.Viewport>\n {menuActions?.map((action) => {\n const shortcut = getShortcut(action);\n return (\n <DropdownMenu.Item\n key={action.id}\n onClick={(event) => {\n if (action.properties?.disabled) {\n return;\n }\n event.stopPropagation();\n // TODO(thure): Why does Dialog’s modal-ness cause issues if we don’t explicitly close the menu here?\n if (suppressNextTooltip) {\n suppressNextTooltip.current = true;\n }\n setOptionsMenuOpen(false);\n onAction?.(action);\n }}\n classNames='gap-2'\n disabled={action.properties?.disabled}\n {...(action.properties?.testId && { 'data-testid': action.properties.testId })}\n >\n {action.properties?.icon && <Icon icon={action.properties!.icon} size={4} />}\n <span className='grow truncate'>{toLocalizedString(action.properties!.label, t)}</span>\n {shortcut && <span className={mx('shrink-0', descriptionText)}>{keySymbols(shortcut).join('')}</span>}\n </DropdownMenu.Item>\n );\n })}\n </DropdownMenu.Viewport>\n <DropdownMenu.Arrow />\n </DropdownMenu.Content>\n </DropdownMenu.Portal>\n </DropdownMenu.Root>\n );\n};\n\nexport const NavTreeItemActionContextMenu = (\n props: PropsWithChildren<Pick<NavTreeItemActionMenuProps, 'menuActions' | 'onAction'>>,\n) => {\n return (props.menuActions?.length ?? 0) > 0 ? <NavTreeItemActionContextMenuImpl {...props} /> : <>{props.children}</>;\n};\n\nconst NavTreeItemActionContextMenuImpl = ({\n menuActions,\n onAction,\n children,\n}: PropsWithChildren<Pick<NavTreeItemActionMenuProps, 'menuActions' | 'onAction'>>) => {\n const { t } = useTranslation(NAVTREE_PLUGIN);\n\n return (\n <ContextMenu.Root>\n <ContextMenu.Trigger asChild>{children}</ContextMenu.Trigger>\n <ContextMenu.Portal>\n <ContextMenu.Content classNames='z-[31]'>\n <ContextMenu.Viewport>\n {menuActions?.map((action) => {\n const shortcut = getShortcut(action);\n return (\n <ContextMenu.Item\n key={action.id}\n onClick={(event) => {\n if (action.properties?.disabled) {\n return;\n }\n event.stopPropagation();\n onAction?.(action);\n }}\n classNames='gap-2'\n disabled={action.properties?.disabled}\n {...(action.properties?.testId && { 'data-testid': action.properties.testId })}\n >\n {action.properties?.icon && <Icon icon={action.properties?.icon} size={4} />}\n <span className='grow truncate'>{toLocalizedString(action.properties!.label, t)}</span>\n {shortcut && <span className={mx('shrink-0', descriptionText)}>{keySymbols(shortcut).join('')}</span>}\n </ContextMenu.Item>\n );\n })}\n </ContextMenu.Viewport>\n <ContextMenu.Arrow />\n </ContextMenu.Content>\n </ContextMenu.Portal>\n </ContextMenu.Root>\n );\n};\n\nexport const NavTreeItemActionSearchList = ({\n menuActions,\n icon,\n label,\n testId,\n suppressNextTooltip,\n onAction,\n}: Pick<\n NavTreeItemActionMenuProps,\n 'icon' | 'menuActions' | 'testId' | 'label' | 'onAction' | 'suppressNextTooltip'\n>) => {\n const { t } = useTranslation(NAVTREE_PLUGIN);\n\n const [optionsMenuOpen, setOptionsMenuOpen] = useState(false);\n const button = useRef<HTMLButtonElement | null>(null);\n\n // TODO(burdon): Optionally sort.\n const sortedActions = menuActions?.sort(({ properties: p1 }, { properties: p2 }) => {\n const t1 = toLocalizedString(p1!.label, t).toLowerCase();\n const t2 = toLocalizedString(p2!.label, t).toLowerCase();\n return t1.localeCompare(t2);\n });\n\n // TODO(thure): Use LayoutPlugin’s global Dialog.\n return (\n <Dialog.Root\n {...{\n open: optionsMenuOpen,\n onOpenChange: (nextOpen: boolean) => {\n if (!nextOpen && suppressNextTooltip) {\n suppressNextTooltip.current = true;\n }\n return setOptionsMenuOpen(nextOpen);\n },\n }}\n >\n <Tooltip.Trigger asChild>\n <Dialog.Trigger asChild>\n <Button\n variant='ghost'\n density='fine'\n classNames={mx('shrink-0 !pli-2 pointer-fine:!pli-1', hoverableControlItem, hoverableOpenControlItem)}\n data-testid={testId}\n onKeyDownCapture={(event) => {\n // TODO(thure): Why is only this `Button` affected and not `DropdownMenu.Trigger`’s?\n if (button.current && button.current === event.target) {\n switch (event.key) {\n case 'Enter':\n case ' ':\n // Capture this event and stop propagation to the drag start handler.\n event.stopPropagation();\n setOptionsMenuOpen(true);\n break;\n default:\n }\n }\n }}\n ref={button}\n >\n <Icon icon={icon ?? fallbackIcon} size={4} />\n </Button>\n </Dialog.Trigger>\n </Tooltip.Trigger>\n <Dialog.Portal>\n <Dialog.Overlay>\n <Dialog.Content classNames='z-[31] is-full max-is-[24rem] pli-2 plb-1'>\n <SearchList.Root label={t('tree item searchlist input placeholder')}>\n <SearchList.Input placeholder={t('tree item searchlist input placeholder')} classNames='pli-3' />\n <SearchList.Content classNames='min-bs-[12rem] bs-[50dvh] max-bs-[30rem] overflow-auto'>\n {sortedActions?.map((action) => {\n const label = toLocalizedString(action.properties!.label, t);\n const shortcut = getShortcut(action);\n return (\n <SearchList.Item\n // TODO(burdon): Value should be id since label is not unique.\n value={label}\n key={action.id}\n onSelect={() => {\n if (action.properties?.disabled) {\n return;\n }\n if (suppressNextTooltip) {\n suppressNextTooltip.current = true;\n }\n setOptionsMenuOpen(false);\n onAction?.(action);\n }}\n classNames='flex items-center gap-2 pli-2'\n disabled={action.properties?.disabled}\n {...(action.properties?.testId && { 'data-testid': action.properties.testId })}\n >\n {action.properties?.icon && <Icon icon={action.properties?.icon} size={4} />}\n <span className='grow truncate'>{label}</span>\n {shortcut && (\n <span className={mx('shrink-0', descriptionText)}>{keySymbols(shortcut).join('')}</span>\n )}\n </SearchList.Item>\n );\n })}\n </SearchList.Content>\n <div role='none' className='flex items-center plb-2 pli-3'>\n <span className={descriptionText}>{toLocalizedString(label, t)}</span>\n </div>\n </SearchList.Root>\n </Dialog.Content>\n </Dialog.Overlay>\n </Dialog.Portal>\n </Dialog.Root>\n );\n};\n\nexport const NavTreeItemMonolithicAction = ({\n parent,\n properties: { disabled, caller, testId, label, icon } = { label: 'never' },\n data: invoke,\n}: Action & { parent: Node; onAction?: (action: Action) => void }) => {\n const { t } = useTranslation(NAVTREE_PLUGIN);\n return (\n <Tooltip.Trigger asChild>\n <Button\n variant='ghost'\n density='fine'\n classNames={mx('shrink-0 !pli-2 pointer-fine:!pli-1', hoverableControlItem, hoverableOpenControlItem)}\n disabled={disabled}\n onClick={(event) => {\n if (disabled) {\n return;\n }\n event.stopPropagation();\n void invoke?.(caller ? { node: parent, caller } : { node: parent });\n }}\n data-testid={testId}\n >\n <span className='sr-only'>{toLocalizedString(label, t)}</span>\n <Icon icon={icon ?? fallbackIcon} size={4} />\n </Button>\n </Tooltip.Trigger>\n );\n};\n\nexport const NavTreeItemAction = ({ monolithic, menuActions, parent: node, ...props }: NavTreeItemActionMenuProps) => {\n const { t } = useTranslation(NAVTREE_PLUGIN);\n const suppressNextTooltip = useRef<boolean>(false);\n const [triggerTooltipOpen, setTriggerTooltipOpen] = useState(false);\n\n const monolithicAction = menuActions?.length === 1 && menuActions[0];\n const baseLabel = toLocalizedString(monolithicAction ? monolithicAction.properties!.label : props.label, t);\n\n return (\n <Tooltip.Root\n open={triggerTooltipOpen}\n onOpenChange={(nextOpen) => {\n if (suppressNextTooltip.current) {\n setTriggerTooltipOpen(false);\n suppressNextTooltip.current = false;\n } else {\n setTriggerTooltipOpen(nextOpen);\n }\n }}\n >\n {baseLabel && (\n <Tooltip.Portal>\n <Tooltip.Content classNames='z-[31]' side='bottom'>\n {baseLabel}\n <Tooltip.Arrow />\n </Tooltip.Content>\n </Tooltip.Portal>\n )}\n {monolithic && menuActions?.length === 1 ? (\n <NavTreeItemMonolithicAction parent={node} {...menuActions[0]} />\n ) : props.menuType === 'searchList' ? (\n <NavTreeItemActionSearchList\n {...props}\n menuActions={menuActions}\n suppressNextTooltip={suppressNextTooltip}\n onAction={(action) => action.data?.(props.caller ? { node, caller: props.caller } : { node })}\n />\n ) : (\n <NavTreeItemActionDropdownMenu\n {...props}\n parent={node}\n menuActions={menuActions}\n suppressNextTooltip={suppressNextTooltip}\n onAction={(action) => action.data?.(props.caller ? { node, caller: props.caller } : { node })}\n />\n )}\n </Tooltip.Root>\n );\n};\n", "//\n// Copyright 2023 DXOS.org\n//\n\nimport { monitorForElements } from '@atlaskit/pragmatic-drag-and-drop/element/adapter';\nimport { extractInstruction, type Instruction } from '@atlaskit/pragmatic-drag-and-drop-hitbox/tree-item';\nimport React, { useCallback, useEffect } from 'react';\n\nimport { NavigationAction, Surface, useIntentDispatcher } from '@dxos/app-framework';\nimport { isAction, isActionLike, type Node } from '@dxos/app-graph';\nimport { useGraph } from '@dxos/plugin-graph';\nimport { isEchoObject, isSpace } from '@dxos/react-client/echo';\nimport { ElevationProvider, useMediaQuery, useSidebars } from '@dxos/react-ui';\nimport { isItem } from '@dxos/react-ui-list';\nimport { mx } from '@dxos/react-ui-theme';\nimport { arrayMove } from '@dxos/util';\n\nimport { NAV_TREE_ITEM, NavTree, type NavTreeProps } from './NavTree';\nimport { NavTreeFooter } from './NavTreeFooter';\nimport { NAVTREE_PLUGIN } from '../meta';\nimport { type NavTreeItem } from '../types';\nimport {\n expandActions,\n expandChildren,\n getChildren,\n getParent,\n resolveMigrationOperation,\n type NavTreeItemGraphNode,\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 = ({ item }: { item: NavTreeItem }) => (\n <Surface role='presence--glyph' data={{ object: item.node.data, id: item.node.id }} />\n);\n\nexport type NavTreeContainerProps = {\n items: NavTreeItem[];\n current: string[];\n open: string[];\n popoverAnchorId?: string;\n} & Pick<NavTreeProps, 'onOpenChange'>;\n\nexport const NavTreeContainer = ({ items, current, open, popoverAnchorId, ...props }: NavTreeContainerProps) => {\n const { closeNavigationSidebar } = useSidebars(NAVTREE_PLUGIN);\n const [isLg] = useMediaQuery('lg', { ssr: false });\n const dispatch = useIntentDispatcher();\n const { graph } = useGraph();\n\n const loadDescendents = useCallback(\n (node: Node) => {\n void expandActions(graph, node);\n if (!isActionLike(node)) {\n void expandChildren(graph, node).then(() =>\n // Load one level deeper, which resolves some juddering observed on open/close.\n Promise.all(\n getChildren(graph, node).flatMap((child) => [expandActions(graph, child), expandChildren(graph, child)]),\n ),\n );\n }\n },\n [graph],\n );\n\n const canDrop = useCallback((source: NavTreeItem, target: NavTreeItem) => {\n if (isSpace(target.node.data)) {\n // TODO(wittjosiah): Find a way to only allow space as source for rearranging.\n return isEchoObject(source.node.data) || isSpace(source.node.data);\n } else if (isEchoObject(target.node.data)) {\n return isEchoObject(source.node.data);\n } else {\n return false;\n }\n }, []);\n\n const handleSelect = useCallback(\n ({ node, actions, path }: NavTreeItem) => {\n if (!node.data) {\n return;\n }\n\n if (isAction(node)) {\n const [parentId] = path.slice(1);\n const parent = items.find(({ id }) => id === parentId)?.node;\n void (parent && node.data({ node: parent, caller: NAV_TREE_ITEM }));\n return;\n }\n\n // TODO(thure): Refactor opening related planks (comments in this case) to a generalized approach.\n void 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\n if (!isLg) {\n closeNavigationSidebar();\n }\n },\n [items, dispatch, isLg, closeNavigationSidebar],\n );\n\n // TODO(wittjosiah): Factor out hook.\n useEffect(() => {\n return monitorForElements({\n canMonitor: ({ source }) => isItem(source.data),\n onDrop: ({ location, source }) => {\n // Didn't drop on anything.\n if (!location.current.dropTargets.length) {\n return;\n }\n\n const target = location.current.dropTargets[0];\n const instruction: Instruction | null = extractInstruction(target.data);\n if (instruction !== null && instruction.type !== 'instruction-blocked') {\n const sourceNode = source.data.node as NavTreeItemGraphNode;\n const targetNode = target.data.node as NavTreeItemGraphNode;\n\n const sourcePath = source.data.path as string[];\n const targetPath = target.data.path as string[];\n\n const nextItems = instruction.type.startsWith('reorder')\n ? items.filter((item) => item.path.slice(0, -1).join() === targetPath.slice(0, -1).join())\n : items.filter((item) => item.path.slice(0, -1).join() === targetPath.join());\n const operation =\n sourcePath.slice(0, -1).join() === targetPath.slice(0, -1).join() && instruction.type !== 'make-child'\n ? 'rearrange'\n : resolveMigrationOperation(graph, sourceNode, targetPath, targetNode);\n\n const sourceParent = getParent(graph, sourceNode, sourcePath);\n const targetParent = getParent(graph, targetNode, targetPath);\n\n const sourceIndex = nextItems.findIndex(({ id }) => id === sourceNode.id);\n const targetIndex = nextItems.findIndex(({ id }) => id === targetNode.id);\n const migrationIndex =\n instruction.type === 'make-child'\n ? nextItems.length > 0\n ? nextItems.length - 1\n : 0\n : instruction.type === 'reorder-below'\n ? targetIndex + 1\n : targetIndex;\n\n switch (operation) {\n case 'rearrange': {\n arrayMove(nextItems, sourceIndex, targetIndex);\n void sourceParent?.properties.onRearrangeChildren?.(nextItems.map((item) => item.node.data));\n break;\n }\n\n case 'copy': {\n const target = instruction.type === 'make-child' ? targetNode : targetParent;\n void target?.properties.onCopy?.(sourceNode, migrationIndex);\n break;\n }\n\n case 'transfer': {\n const target = instruction.type === 'make-child' ? targetNode : targetParent;\n if (!target?.properties.onTransferStart || !sourceParent?.properties.onTransferEnd) {\n break;\n }\n\n void target?.properties.onTransferStart(sourceNode, migrationIndex);\n void sourceParent?.properties.onTransferEnd?.(sourceNode, target);\n break;\n }\n }\n }\n },\n });\n }, [items]);\n\n return (\n <ElevationProvider elevation='chrome'>\n <div\n role='none'\n className={mx(\n 'grid grid-cols-1 grid-rows-[var(--rail-size)_1fr_min-content]',\n 'bs-full overflow-hidden row-span-3 divide-y divide-separator',\n )}\n >\n <Surface role='search-input' limit={1} />\n\n {/* TODO(thure): What gives this an inline `overflow: initial`? */}\n <div role='none' className='!overflow-y-auto'>\n <NavTree\n items={items}\n open={open}\n current={current}\n loadDescendents={loadDescendents}\n renderPresence={renderPresence}\n popoverAnchorId={popoverAnchorId}\n canDrop={canDrop}\n onSelect={handleSelect}\n {...props}\n />\n </div>\n\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 type LayoutPart,\n SettingsAction,\n parseNavigationPlugin,\n useResolvePlugin,\n useIntentDispatcher,\n} from '@dxos/app-framework';\nimport { useConfig } from '@dxos/react-client';\nimport {\n Button,\n Link,\n Message,\n Popover,\n Tooltip,\n Trans,\n useDefaultValue,\n useSidebars,\n useTranslation,\n} from '@dxos/react-ui';\nimport { LayoutControls } from '@dxos/react-ui-stack';\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\nconst VERSION_REGEX = /([\\d.]+)/;\n\nexport const NavTreeFooter = (props: { layoutPart?: LayoutPart }) => {\n const layoutPart = useDefaultValue(props.layoutPart, () => 'sidebar');\n const config = useConfig();\n const { t } = useTranslation(NAVTREE_PLUGIN);\n const { navigationSidebarOpen } = useSidebars(NAVTREE_PLUGIN);\n const dispatch = useIntentDispatcher();\n const { version, timestamp, commitHash } = config.values.runtime?.app?.build ?? {};\n const navigationPlugin = useResolvePlugin(parseNavigationPlugin);\n const [_, v] = version?.match(VERSION_REGEX) ?? [];\n\n const releaseUrl =\n config.values.runtime?.app?.env?.DX_ENVIRONMENT === 'production'\n ? `${repo}/releases/tag/v${version}`\n : `${repo}/commit/${commitHash}`;\n\n const previewUrl = 'https://docs.dxos.org/composer#technology-preview';\n\n return (\n <div\n role='none'\n className={mx(\n 'flex bs-[--rail-size] pbe-[env(safe-area-inset-bottom)] box-content justify-end',\n layoutPart === 'complementary' && 'md:justify-end flex-row-reverse',\n )}\n >\n <Popover.Root>\n <Popover.Trigger asChild>\n <Button variant='ghost' classNames={buttonStyles} {...(!navigationSidebarOpen && { tabIndex: -1 })}>\n v{v}\n </Button>\n </Popover.Trigger>\n <Popover.Portal>\n <Popover.Content\n side='top'\n role='message'\n classNames='z-[12] bg-warning-500 max-is-[min(calc(100vw-16px),40ch)]'\n >\n <Message.Root valence='warning' className='rounded-be-none p-5'>\n <Message.Title>\n <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 <LayoutControls\n variant='hide-disabled'\n capabilities={{\n incrementStart: false,\n incrementEnd: false,\n }}\n onClick={(_type) => {\n // TODO(Zan): If we inmplement pinning again, we should dispatch here.\n }}\n />\n )}\n </div>\n );\n};\n", "//\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 { type MaybePromise, nonNullable } from '@dxos/util';\n\nimport { type NodeProperties, type NavTreeItem } from './types';\n\nexport type NavTreeItemGraphNode = Node<\n any,\n Partial<\n NodeProperties & {\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 >\n>;\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 persistenceParent.properties.onTransferStart\n ? 'transfer'\n : persistenceParent.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: NavTreeItem[], path?: string[]): NavTreeItem | 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: readonly 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<NavTreeItem, 'actions' | 'groupedActions'>>;\n\nexport const getActions = (graph: Graph, node: Node): FlattenedActions => {\n return graph.actions(node).reduce(\n (acc: FlattenedActions, arg) => {\n if (arg.properties.disposition === 'item') {\n return acc;\n }\n\n acc.actions.push(arg);\n if (!isAction(arg)) {\n const actionGroup = graph.actions(arg);\n acc.groupedActions[arg.id] = actionGroup;\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,\n node,\n open,\n getItem,\n path = [],\n filter,\n}: {\n graph: Graph;\n node: NavTreeItemGraphNode;\n open: string[];\n getItem: (node: NavTreeItemGraphNode, parent: readonly string[], filter?: NodeFilter) => NavTreeItem;\n path?: readonly string[];\n filter?: NodeFilter;\n}): Generator<NavTreeItem> {\n const stack: NavTreeItem[] = [getItem(node, path, filter)];\n while (stack.length > 0) {\n const nextItem = stack.pop()!;\n if (nextItem.path.length > 1) {\n yield nextItem;\n }\n const { node, path } = nextItem;\n const children = getChildren(graph, node, filter, path);\n const actions = graph.actions(node);\n if (path.length === 1 || open.includes(Path.create(...path))) {\n for (let i = actions.length - 1; i >= 0; i--) {\n if (actions[i].properties.disposition === 'item') {\n stack.push(getItem(actions[i], path, filter));\n }\n }\n for (let i = children.length - 1; i >= 0; i--) {\n const child = children[i] as NavTreeItemGraphNode;\n stack.push(getItem(child, path, filter));\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 open: string[],\n getItem: (node: NavTreeItemGraphNode, parent: readonly string[]) => NavTreeItem,\n path?: readonly string[],\n filter?: NodeFilter,\n): NavTreeItem[] => {\n return Array.from(navTreeItemVisitor({ graph, node: rootNode, open, getItem, path, filter }));\n};\n\nexport const expandOpenGraphNodes = (graph: Graph, open: string[]) => {\n return Promise.all(\n open\n .map((id) => {\n const node = graph.findNode(Path.last(id));\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='w-full h-full !rounded-none'\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 { 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 'tree item actions label': 'More actions',\n 'tree item searchlist input placeholder': 'Search for actions…',\n 'empty branch message': ' ',\n },\n },\n },\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", "parseNavigationPlugin", "createExtension", "isAction", "isGraphNode", "invariant", "Keyboard", "LocalStorageStore", "Path", "mx", "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", "StackItem", "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", "StackItem", "Sigil", "icon", "attendableId", "triggerLabel", "onAction", "action", "data", "node", "caller", "HeadingLabel", "React", "Fragment", "useCallback", "useEffect", "isAction", "Popover", "toLocalizedString", "Treegrid", "useTranslation", "Tree", "useControllableState", "React", "useRef", "useState", "keySymbols", "Button", "Dialog", "DropdownMenu", "ContextMenu", "Tooltip", "useTranslation", "toLocalizedString", "Icon", "SearchList", "descriptionText", "hoverableControlItem", "hoverableOpenControlItem", "mx", "getHostPlatform", "getShortcut", "action", "properties", "keyBinding", "getHostPlatform", "fallbackIcon", "NavTreeItemActionDropdownMenu", "label", "icon", "testId", "defaultMenuOpen", "menuActions", "menuOpen", "suppressNextTooltip", "onChangeMenuOpen", "onAction", "t", "useTranslation", "NAVTREE_PLUGIN", "optionsMenuOpen", "setOptionsMenuOpen", "useControllableState", "prop", "defaultProp", "onChange", "React", "DropdownMenu", "Root", "open", "onOpenChange", "nextOpen", "current", "Tooltip", "Trigger", "asChild", "Button", "variant", "density", "classNames", "mx", "hoverableControlItem", "hoverableOpenControlItem", "data-testid", "aria-label", "span", "className", "toLocalizedString", "Icon", "size", "Portal", "Content", "Viewport", "map", "shortcut", "Item", "key", "id", "onClick", "event", "disabled", "stopPropagation", "descriptionText", "keySymbols", "join", "Arrow", "NavTreeItemActionSearchList", "menuActions", "icon", "label", "testId", "suppressNextTooltip", "onAction", "t", "useTranslation", "NAVTREE_PLUGIN", "optionsMenuOpen", "setOptionsMenuOpen", "useState", "button", "useRef", "sortedActions", "sort", "properties", "p1", "p2", "t1", "toLocalizedString", "toLowerCase", "t2", "localeCompare", "React", "Dialog", "Root", "open", "onOpenChange", "nextOpen", "current", "Tooltip", "Trigger", "asChild", "Button", "variant", "density", "classNames", "mx", "hoverableControlItem", "hoverableOpenControlItem", "data-testid", "onKeyDownCapture", "event", "target", "key", "stopPropagation", "ref", "Icon", "fallbackIcon", "size", "Portal", "Overlay", "Content", "SearchList", "Input", "placeholder", "map", "action", "shortcut", "getShortcut", "Item", "value", "id", "onSelect", "disabled", "span", "className", "descriptionText", "keySymbols", "join", "div", "role", "NavTreeItemMonolithicAction", "parent", "caller", "data", "invoke", "onClick", "node", "NavTreeItemAction", "monolithic", "props", "triggerTooltipOpen", "setTriggerTooltipOpen", "monolithicAction", "length", "baseLabel", "side", "Arrow", "menuType", "NavTreeItemActionDropdownMenu", "NAV_TREE_ITEM", "NavTree", "loadDescendents", "renderPresence", "popoverAnchorId", "props", "renderColumns", "useCallback", "item", "menuOpen", "setMenuOpen", "React", "NavTreeColumns", "Tree", "draggable", "gridTemplateColumns", "Presence", "t", "useTranslation", "NAVTREE_PLUGIN", "level", "path", "length", "primaryAction", "secondaryActions", "actions", "toSorted", "a", "b", "properties", "disposition", "flatMap", "action", "isAction", "filter", "hidden", "ActionRoot", "id", "Popover", "Anchor", "Fragment", "useEffect", "frame", "requestAnimationFrame", "node", "cancelAnimationFrame", "NavTreeItemAction", "testId", "label", "toLocalizedString", "icon", "parent", "monolithic", "menuActions", "groupedActions", "menuType", "caller", "Treegrid", "Cell", "onChangeMenuOpen", "monitorForElements", "extractInstruction", "React", "useCallback", "useEffect", "NavigationAction", "Surface", "useIntentDispatcher", "isAction", "isActionLike", "useGraph", "isEchoObject", "isSpace", "ElevationProvider", "useMediaQuery", "useSidebars", "isItem", "mx", "arrayMove", "ArrowSquareOut", "GearSix", "Warning", "formatDistance", "React", "SettingsAction", "parseNavigationPlugin", "useResolvePlugin", "useIntentDispatcher", "useConfig", "Button", "Link", "Message", "Popover", "Tooltip", "Trans", "useDefaultValue", "useSidebars", "useTranslation", "LayoutControls", "getSize", "mx", "buttonStyles", "repo", "VERSION_REGEX", "NavTreeFooter", "props", "layoutPart", "useDefaultValue", "config", "useConfig", "t", "useTranslation", "NAVTREE_PLUGIN", "navigationSidebarOpen", "useSidebars", "dispatch", "useIntentDispatcher", "version", "timestamp", "commitHash", "values", "runtime", "app", "build", "navigationPlugin", "useResolvePlugin", "parseNavigationPlugin", "_", "v", "match", "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", "LayoutControls", "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", "open", "getItem", "stack", "nextItem", "pop", "children", "Path", "create", "i", "child", "treeItemsFromRootNode", "rootNode", "Array", "from", "expandOpenGraphNodes", "findNode", "last", "NODE_TYPE", "renderPresence", "item", "React", "Surface", "role", "data", "object", "node", "id", "NavTreeContainer", "items", "current", "open", "popoverAnchorId", "props", "closeNavigationSidebar", "useSidebars", "NAVTREE_PLUGIN", "isLg", "useMediaQuery", "ssr", "dispatch", "useIntentDispatcher", "graph", "useGraph", "loadDescendents", "useCallback", "expandActions", "isActionLike", "expandChildren", "then", "Promise", "all", "getChildren", "flatMap", "child", "canDrop", "source", "target", "isSpace", "isEchoObject", "handleSelect", "actions", "path", "isAction", "parentId", "slice", "parent", "find", "caller", "NAV_TREE_ITEM", "action", "NavigationAction", "OPEN", "activeParts", "main", "defaultAction", "properties", "disposition", "useEffect", "monitorForElements", "canMonitor", "isItem", "onDrop", "location", "dropTargets", "length", "instruction", "extractInstruction", "type", "sourceNode", "targetNode", "sourcePath", "targetPath", "nextItems", "startsWith", "filter", "join", "operation", "resolveMigrationOperation", "sourceParent", "getParent", "targetParent", "sourceIndex", "findIndex", "targetIndex", "migrationIndex", "arrayMove", "onRearrangeChildren", "map", "onCopy", "onTransferStart", "onTransferEnd", "ElevationProvider", "elevation", "div", "className", "mx", "limit", "NavTree", "onSelect", "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", "NAVTREE_PLUGIN", "NavTreePlugin", "graphPlugin", "graph", "itemCache", "Map", "state", "LocalStorageStore", "root", "undefined", "flatTree", "treeItemsFromRootNode", "open", "getItem", "node", "parent", "filter", "invariant", "path", "id", "actions", "groupedActions", "getActions", "children", "getChildren", "parentOf", "length", "map", "properties", "role", "item", "label", "icon", "disabled", "testId", "className", "mx", "modified", "headingClassName", "cachedItem", "get", "JSON", "stringify", "set", "handleOpenChange", "Path", "create", "values", "push", "index", "indexOf", "splice", "expandOpenGraphNodes", "meta", "ready", "plugins", "prop", "key", "type", "json", "resolvePlugin", "parseGraphPlugin", "provides", "dispatch", "parseIntentPlugin", "intent", "soloPart", "parseNavigationPlugin", "location", "active", "solo", "plugin", "NAVTREE_PLUGIN", "action", "NavigationAction", "EXPOSE", "data", "subscribeTraverse", "visitor", "shortcut", "keyBinding", "availablePlatforms", "Object", "keys", "platform", "getHostPlatform", "includes", "macos", "windows", "isAction", "Keyboard", "singleton", "getContext", "slice", "join", "bind", "handler", "caller", "KEY_BINDING", "initialize", "setCurrentContext", "unload", "destroy", "metadata", "records", "NODE_TYPE", "parse", "object", "surface", "component", "selected", "subject", "React", "CommandsDialogContent", "NavTreeContainer", "items", "current", "activeIds", "onOpenChange", "popoverAnchorId", "NavTreeDocumentTitle", "isGraphNode", "activeNode", "NavBarStart", "disposition", "NotchStart", "CommandsTrigger", "resolver", "waitForPath", "target", "additionalOpenItems", "Array", "reduce", "acc", "_", "itemId", "builder", "intentPlugin", "createExtension", "LayoutAction", "SET_LAYOUT", "element", "dialogBlockAlign", "ns", "translations", "NavTreePlugin"]
|
|
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 parseNavigationPlugin,\n} from '@dxos/app-framework';\nimport { createExtension, type Graph, isAction, isGraphNode, type Node, type NodeFilter } from '@dxos/app-graph';\nimport { invariant } from '@dxos/invariant';\nimport { Keyboard } from '@dxos/keyboard';\nimport { LocalStorageStore } from '@dxos/local-storage';\nimport { Path } from '@dxos/react-ui-mosaic';\nimport { mx } from '@dxos/react-ui-theme';\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 { type NavTreeItem } from './types';\nimport {\n expandOpenGraphNodes,\n getActions,\n getChildren,\n treeItemsFromRootNode,\n type NavTreeItemGraphNode,\n} from './util';\n\nexport type NavTreePluginProvides = SurfaceProvides &\n MetadataRecordsProvides &\n GraphBuilderProvides &\n TranslationsProvides &\n IntentResolverProvides;\n\ntype NavTreeState = {\n root?: NavTreeItemGraphNode;\n flatTree: NavTreeItem[];\n open: string[];\n};\n\nexport const NavTreePlugin = (): PluginDefinition<NavTreePluginProvides> => {\n let graphPlugin: Plugin<GraphProvides> | undefined;\n let graph: Graph | undefined;\n const itemCache = new Map<string, NavTreeItem>();\n\n const state = new LocalStorageStore<NavTreeState>('dxos.org/settings/navtree', {\n root: undefined,\n get flatTree() {\n if (!this.root || !graph) {\n return [];\n }\n\n return treeItemsFromRootNode(graph, this.root, this.open, getItem);\n },\n // TODO(thure): Do this dynamically.\n open: ['root', 'root~dxos.org/plugin/space-spaces', 'root~dxos.org/plugin/files'],\n });\n\n const getItem = (node: NavTreeItemGraphNode, parent: readonly string[], filter?: NodeFilter) => {\n invariant(graph);\n const path = [...parent, node.id];\n const { actions, groupedActions } = getActions(graph, node);\n const children = getChildren(graph, node, filter, path);\n const parentOf =\n children.length > 0 ? children.map(({ id }) => id) : node.properties.role === 'branch' ? [] : undefined;\n const item = {\n id: node.id,\n label: node.properties.label ?? node.id,\n icon: node.properties.icon,\n disabled: node.properties.disabled,\n testId: node.properties.testId,\n className: mx(node.properties.modified && 'italic', node.properties.className),\n headingClassName: node.properties.headingClassName,\n path,\n parentOf,\n node,\n actions,\n groupedActions,\n } satisfies NavTreeItem;\n\n const cachedItem = itemCache.get(node.id);\n // TODO(wittjosiah): This is not a good enough check.\n // Consider better ways to doing reactive transformations which retain referential equality.\n if (cachedItem && JSON.stringify(item) === JSON.stringify(cachedItem)) {\n return cachedItem;\n } else {\n itemCache.set(node.id, item);\n return item;\n }\n };\n\n const handleOpenChange = (item: NavTreeItem, open: boolean) => {\n const path = Path.create(...item.path);\n // TODO(thure): This might become a localstorage leak; openItemIds that no longer exist should be removed from this map.\n if (open) {\n state.values.open.push(path);\n } else {\n const index = state.values.open.indexOf(path);\n if (index > -1) {\n state.values.open.splice(index, 1);\n }\n }\n\n if (graph) {\n void expandOpenGraphNodes(graph, state.values.open);\n }\n };\n\n return {\n meta,\n ready: async (plugins) => {\n state.prop({ key: 'open', type: LocalStorageStore.json<string[]>() });\n\n graphPlugin = resolvePlugin(plugins, parseGraphPlugin);\n graph = graphPlugin?.provides.graph;\n if (!graph) {\n return;\n }\n\n const dispatch = resolvePlugin(plugins, parseIntentPlugin)?.provides.intent.dispatch;\n const soloPart = resolvePlugin(plugins, parseNavigationPlugin)?.provides.location.active.solo?.[0];\n if (dispatch && soloPart) {\n void dispatch({ plugin: NAVTREE_PLUGIN, action: NavigationAction.EXPOSE, data: { id: soloPart.id } });\n }\n\n state.values.root = graph.root as NavTreeItemGraphNode;\n void expandOpenGraphNodes(graph, state.values.open);\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 return (\n <NavTreeContainer\n items={state.values.flatTree}\n current={data.activeIds as string[]}\n open={state.values.open}\n onOpenChange={handleOpenChange}\n popoverAnchorId={data.popoverAnchorId as string}\n />\n );\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: async (intent) => {\n switch (intent.action) {\n case NavigationAction.EXPOSE: {\n if (graph && intent.data?.id) {\n const path = await graph.waitForPath({ target: intent.data.id });\n const additionalOpenItems = [...Array(path.length)].reduce((acc: string[], _, index) => {\n const itemId = Path.create(...path.slice(0, index));\n if (itemId.length > 0 && !state.values.open.includes(itemId)) {\n acc.push(itemId);\n }\n return acc;\n }, []);\n state.values.open.push(...additionalOpenItems);\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 { StackItem } from '@dxos/react-ui-stack';\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 <StackItem.Sigil\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 <StackItem.HeadingLabel attendableId={activeNode.id}>{label}</StackItem.HeadingLabel>\n </>\n );\n};\n", "//\n// Copyright 2024 DXOS.org\n//\n\nimport React, { Fragment, useCallback, useEffect, type FC } from 'react';\n\nimport { isAction, type Node } from '@dxos/app-graph';\nimport { Popover, toLocalizedString, Treegrid, useTranslation } from '@dxos/react-ui';\nimport { Tree, type TreeProps } from '@dxos/react-ui-list';\nimport { type MaybePromise } from '@dxos/util';\n\nimport { NavTreeItemAction } from './NavTreeItemAction';\nimport { NAVTREE_PLUGIN } from '../meta';\nimport { type NavTreeItem } from '../types';\n\nexport const NAV_TREE_ITEM = 'NavTreeItem';\n\nexport type NavTreeProps = Omit<TreeProps<NavTreeItem>, 'draggable' | 'gridTemplateColumns' | 'renderColumns'> &\n Pick<NavTreeColumnsProps, 'loadDescendents' | 'renderPresence' | 'popoverAnchorId'>;\n\nexport const NavTree = ({ loadDescendents, renderPresence, popoverAnchorId, ...props }: NavTreeProps) => {\n const renderColumns = useCallback<NonNullable<TreeProps<NavTreeItem>['renderColumns']>>(\n ({ item, menuOpen, setMenuOpen }) => {\n return (\n <NavTreeColumns\n item={item}\n menuOpen={menuOpen}\n setMenuOpen={setMenuOpen}\n loadDescendents={loadDescendents}\n renderPresence={renderPresence}\n popoverAnchorId={popoverAnchorId}\n />\n );\n },\n [renderPresence, popoverAnchorId, loadDescendents],\n );\n\n return (\n <Tree<NavTreeItem>\n {...props}\n draggable\n gridTemplateColumns='[tree-row-start] 1fr min-content min-content min-content [tree-row-end]'\n renderColumns={renderColumns}\n />\n );\n};\n\ntype NavTreeColumnsProps = {\n item: NavTreeItem;\n menuOpen: boolean;\n setMenuOpen: (open: boolean) => void;\n loadDescendents?: (node: Node) => MaybePromise<void>;\n renderPresence?: FC<{ item: NavTreeItem }>;\n popoverAnchorId?: string;\n};\n\nconst NavTreeColumns = ({\n item,\n menuOpen,\n setMenuOpen,\n loadDescendents,\n renderPresence: Presence,\n popoverAnchorId,\n}: NavTreeColumnsProps) => {\n const { t } = useTranslation(NAVTREE_PLUGIN);\n\n const level = item.path.length - 2;\n\n const [primaryAction, ...secondaryActions] = item.actions.toSorted((a, b) =>\n a.properties?.disposition === 'toolbar' ? -1 : 1,\n );\n\n const actions = (primaryAction?.properties?.disposition === 'toolbar' ? secondaryActions : item.actions)\n .flatMap((action) => (isAction(action) ? [action] : []))\n .filter((action) => !action.properties?.hidden);\n\n const ActionRoot = popoverAnchorId === `dxos.org/ui/${NAV_TREE_ITEM}/${item.id}` ? Popover.Anchor : Fragment;\n\n // TODO(thure): Ideally this should not be necessary.\n useEffect(() => {\n const frame = requestAnimationFrame(() => {\n void loadDescendents?.(item.node);\n if (primaryAction && !isAction(primaryAction)) {\n void loadDescendents?.(primaryAction);\n }\n });\n return () => cancelAnimationFrame(frame);\n }, [primaryAction]);\n\n return (\n <>\n {primaryAction?.properties?.disposition === 'toolbar' ? (\n <NavTreeItemAction\n testId={primaryAction.properties?.testId}\n label={toLocalizedString(primaryAction.properties?.label, t)}\n icon={primaryAction.properties?.icon ?? 'ph--placeholder--regular'}\n parent={item.node}\n monolithic={isAction(primaryAction)}\n menuActions={isAction(primaryAction) ? [primaryAction] : item.groupedActions[primaryAction.id]}\n menuType={primaryAction.properties?.menuType}\n caller={NAV_TREE_ITEM}\n />\n ) : (\n <Treegrid.Cell />\n )}\n <ActionRoot>\n {actions.length > 0 ? (\n <NavTreeItemAction\n testId={`navtree.treeItem.actionsLevel${level}`}\n label={t('tree item actions label')}\n icon='ph--dots-three-vertical--regular'\n parent={item.node}\n menuActions={actions}\n menuType='dropdown'\n caller={NAV_TREE_ITEM}\n menuOpen={menuOpen}\n onChangeMenuOpen={setMenuOpen}\n />\n ) : (\n <Treegrid.Cell />\n )}\n </ActionRoot>\n {Presence && <Presence item={item} />}\n </>\n );\n};\n", "//\n// Copyright 2023 DXOS.org\n//\n\nimport { useControllableState } from '@radix-ui/react-use-controllable-state';\nimport React, { type MutableRefObject, type PropsWithChildren, useRef, useState } from 'react';\n\nimport { type Action, type ActionLike, type Node } from '@dxos/app-graph';\nimport { keySymbols } from '@dxos/keyboard';\nimport {\n Button,\n Dialog,\n DropdownMenu,\n ContextMenu,\n Tooltip,\n useTranslation,\n toLocalizedString,\n Icon,\n} from '@dxos/react-ui';\nimport { SearchList } from '@dxos/react-ui-searchlist';\nimport { descriptionText, hoverableControlItem, hoverableOpenControlItem, mx } from '@dxos/react-ui-theme';\nimport { getHostPlatform } from '@dxos/util';\n\nimport { NAVTREE_PLUGIN } from '../meta';\nimport { type ActionProperties } from '../types';\n\nexport type NavTreeItemActionMenuProps = ActionProperties & {\n parent: Node;\n caller?: string;\n monolithic?: boolean;\n menuActions?: Action[];\n suppressNextTooltip?: MutableRefObject<boolean>;\n menuOpen?: boolean;\n defaultMenuOpen?: boolean;\n onChangeMenuOpen?: (nextOpen: boolean) => void;\n onAction?: (action: Action) => void;\n};\n\nconst getShortcut = (action: ActionLike) => {\n return typeof action.properties?.keyBinding === 'string'\n ? action.properties.keyBinding\n : action.properties?.keyBinding?.[getHostPlatform()];\n};\n\nconst fallbackIcon = 'ph--placeholder--regular';\n\nexport const NavTreeItemActionDropdownMenu = ({\n label,\n icon,\n testId,\n defaultMenuOpen,\n menuActions,\n menuOpen,\n suppressNextTooltip,\n onChangeMenuOpen,\n onAction,\n}: NavTreeItemActionMenuProps) => {\n const { t } = useTranslation(NAVTREE_PLUGIN);\n\n const [optionsMenuOpen, setOptionsMenuOpen] = useControllableState({\n prop: menuOpen,\n defaultProp: defaultMenuOpen,\n onChange: onChangeMenuOpen,\n });\n\n return (\n <DropdownMenu.Root\n {...{\n open: optionsMenuOpen,\n onOpenChange: (nextOpen: boolean) => {\n if (!nextOpen && suppressNextTooltip) {\n suppressNextTooltip.current = true;\n }\n return setOptionsMenuOpen(nextOpen);\n },\n }}\n >\n <Tooltip.Trigger asChild>\n <DropdownMenu.Trigger asChild>\n <Button\n variant='ghost'\n density='fine'\n classNames={mx('shrink-0 !pli-2 pointer-fine:!pli-1', hoverableControlItem, hoverableOpenControlItem)}\n data-testid={testId}\n aria-label={t('tree item actions label')}\n >\n <span className='sr-only'>{toLocalizedString(label, t)}</span>\n <Icon icon={icon ?? fallbackIcon} size={4} />\n </Button>\n </DropdownMenu.Trigger>\n </Tooltip.Trigger>\n <DropdownMenu.Portal>\n <DropdownMenu.Content classNames='z-[31]'>\n <DropdownMenu.Viewport>\n {menuActions?.map((action) => {\n const shortcut = getShortcut(action);\n return (\n <DropdownMenu.Item\n key={action.id}\n onClick={(event) => {\n if (action.properties?.disabled) {\n return;\n }\n event.stopPropagation();\n // TODO(thure): Why does Dialog’s modal-ness cause issues if we don’t explicitly close the menu here?\n if (suppressNextTooltip) {\n suppressNextTooltip.current = true;\n }\n setOptionsMenuOpen(false);\n onAction?.(action);\n }}\n classNames='gap-2'\n disabled={action.properties?.disabled}\n {...(action.properties?.testId && { 'data-testid': action.properties.testId })}\n >\n {action.properties?.icon && <Icon icon={action.properties!.icon} size={4} />}\n <span className='grow truncate'>{toLocalizedString(action.properties!.label, t)}</span>\n {shortcut && <span className={mx('shrink-0', descriptionText)}>{keySymbols(shortcut).join('')}</span>}\n </DropdownMenu.Item>\n );\n })}\n </DropdownMenu.Viewport>\n <DropdownMenu.Arrow />\n </DropdownMenu.Content>\n </DropdownMenu.Portal>\n </DropdownMenu.Root>\n );\n};\n\nexport const NavTreeItemActionContextMenu = (\n props: PropsWithChildren<Pick<NavTreeItemActionMenuProps, 'menuActions' | 'onAction'>>,\n) => {\n return (props.menuActions?.length ?? 0) > 0 ? <NavTreeItemActionContextMenuImpl {...props} /> : <>{props.children}</>;\n};\n\nconst NavTreeItemActionContextMenuImpl = ({\n menuActions,\n onAction,\n children,\n}: PropsWithChildren<Pick<NavTreeItemActionMenuProps, 'menuActions' | 'onAction'>>) => {\n const { t } = useTranslation(NAVTREE_PLUGIN);\n\n return (\n <ContextMenu.Root>\n <ContextMenu.Trigger asChild>{children}</ContextMenu.Trigger>\n <ContextMenu.Portal>\n <ContextMenu.Content classNames='z-[31]'>\n <ContextMenu.Viewport>\n {menuActions?.map((action) => {\n const shortcut = getShortcut(action);\n return (\n <ContextMenu.Item\n key={action.id}\n onClick={(event) => {\n if (action.properties?.disabled) {\n return;\n }\n event.stopPropagation();\n onAction?.(action);\n }}\n classNames='gap-2'\n disabled={action.properties?.disabled}\n {...(action.properties?.testId && { 'data-testid': action.properties.testId })}\n >\n {action.properties?.icon && <Icon icon={action.properties?.icon} size={4} />}\n <span className='grow truncate'>{toLocalizedString(action.properties!.label, t)}</span>\n {shortcut && <span className={mx('shrink-0', descriptionText)}>{keySymbols(shortcut).join('')}</span>}\n </ContextMenu.Item>\n );\n })}\n </ContextMenu.Viewport>\n <ContextMenu.Arrow />\n </ContextMenu.Content>\n </ContextMenu.Portal>\n </ContextMenu.Root>\n );\n};\n\nexport const NavTreeItemActionSearchList = ({\n menuActions,\n icon,\n label,\n testId,\n suppressNextTooltip,\n onAction,\n}: Pick<\n NavTreeItemActionMenuProps,\n 'icon' | 'menuActions' | 'testId' | 'label' | 'onAction' | 'suppressNextTooltip'\n>) => {\n const { t } = useTranslation(NAVTREE_PLUGIN);\n\n const [optionsMenuOpen, setOptionsMenuOpen] = useState(false);\n const button = useRef<HTMLButtonElement | null>(null);\n\n // TODO(burdon): Optionally sort.\n const sortedActions = menuActions?.sort(({ properties: p1 }, { properties: p2 }) => {\n const t1 = toLocalizedString(p1!.label, t).toLowerCase();\n const t2 = toLocalizedString(p2!.label, t).toLowerCase();\n return t1.localeCompare(t2);\n });\n\n // TODO(thure): Use LayoutPlugin’s global Dialog.\n return (\n <Dialog.Root\n {...{\n open: optionsMenuOpen,\n onOpenChange: (nextOpen: boolean) => {\n if (!nextOpen && suppressNextTooltip) {\n suppressNextTooltip.current = true;\n }\n return setOptionsMenuOpen(nextOpen);\n },\n }}\n >\n <Tooltip.Trigger asChild>\n <Dialog.Trigger asChild>\n <Button\n variant='ghost'\n density='fine'\n classNames={mx('shrink-0 !pli-2 pointer-fine:!pli-1', hoverableControlItem, hoverableOpenControlItem)}\n data-testid={testId}\n onKeyDownCapture={(event) => {\n // TODO(thure): Why is only this `Button` affected and not `DropdownMenu.Trigger`’s?\n if (button.current && button.current === event.target) {\n switch (event.key) {\n case 'Enter':\n case ' ':\n // Capture this event and stop propagation to the drag start handler.\n event.stopPropagation();\n setOptionsMenuOpen(true);\n break;\n default:\n }\n }\n }}\n ref={button}\n >\n <Icon icon={icon ?? fallbackIcon} size={4} />\n </Button>\n </Dialog.Trigger>\n </Tooltip.Trigger>\n <Dialog.Portal>\n <Dialog.Overlay>\n <Dialog.Content classNames='z-[31] is-full max-is-[24rem] pli-2 plb-1'>\n <SearchList.Root label={t('tree item searchlist input placeholder')}>\n <SearchList.Input placeholder={t('tree item searchlist input placeholder')} classNames='pli-3' />\n <SearchList.Content classNames='min-bs-[12rem] bs-[50dvh] max-bs-[30rem] overflow-auto'>\n {sortedActions?.map((action) => {\n const label = toLocalizedString(action.properties!.label, t);\n const shortcut = getShortcut(action);\n return (\n <SearchList.Item\n // TODO(burdon): Value should be id since label is not unique.\n value={label}\n key={action.id}\n onSelect={() => {\n if (action.properties?.disabled) {\n return;\n }\n if (suppressNextTooltip) {\n suppressNextTooltip.current = true;\n }\n setOptionsMenuOpen(false);\n onAction?.(action);\n }}\n classNames='flex items-center gap-2 pli-2'\n disabled={action.properties?.disabled}\n {...(action.properties?.testId && { 'data-testid': action.properties.testId })}\n >\n {action.properties?.icon && <Icon icon={action.properties?.icon} size={4} />}\n <span className='grow truncate'>{label}</span>\n {shortcut && (\n <span className={mx('shrink-0', descriptionText)}>{keySymbols(shortcut).join('')}</span>\n )}\n </SearchList.Item>\n );\n })}\n </SearchList.Content>\n <div role='none' className='flex items-center plb-2 pli-3'>\n <span className={descriptionText}>{toLocalizedString(label, t)}</span>\n </div>\n </SearchList.Root>\n </Dialog.Content>\n </Dialog.Overlay>\n </Dialog.Portal>\n </Dialog.Root>\n );\n};\n\nexport const NavTreeItemMonolithicAction = ({\n parent,\n properties: { disabled, caller, testId, label, icon } = { label: 'never' },\n data: invoke,\n}: Action & { parent: Node; onAction?: (action: Action) => void }) => {\n const { t } = useTranslation(NAVTREE_PLUGIN);\n return (\n <Tooltip.Trigger asChild>\n <Button\n variant='ghost'\n density='fine'\n classNames={mx('shrink-0 !pli-2 pointer-fine:!pli-1', hoverableControlItem, hoverableOpenControlItem)}\n disabled={disabled}\n onClick={(event) => {\n if (disabled) {\n return;\n }\n event.stopPropagation();\n void invoke?.(caller ? { node: parent, caller } : { node: parent });\n }}\n data-testid={testId}\n >\n <span className='sr-only'>{toLocalizedString(label, t)}</span>\n <Icon icon={icon ?? fallbackIcon} size={4} />\n </Button>\n </Tooltip.Trigger>\n );\n};\n\nexport const NavTreeItemAction = ({ monolithic, menuActions, parent: node, ...props }: NavTreeItemActionMenuProps) => {\n const { t } = useTranslation(NAVTREE_PLUGIN);\n const suppressNextTooltip = useRef<boolean>(false);\n const [triggerTooltipOpen, setTriggerTooltipOpen] = useState(false);\n\n const monolithicAction = menuActions?.length === 1 && menuActions[0];\n const baseLabel = toLocalizedString(monolithicAction ? monolithicAction.properties!.label : props.label, t);\n\n return (\n <Tooltip.Root\n open={triggerTooltipOpen}\n onOpenChange={(nextOpen) => {\n if (suppressNextTooltip.current) {\n setTriggerTooltipOpen(false);\n suppressNextTooltip.current = false;\n } else {\n setTriggerTooltipOpen(nextOpen);\n }\n }}\n >\n {baseLabel && (\n <Tooltip.Portal>\n <Tooltip.Content classNames='z-[31]' side='bottom'>\n {baseLabel}\n <Tooltip.Arrow />\n </Tooltip.Content>\n </Tooltip.Portal>\n )}\n {monolithic && menuActions?.length === 1 ? (\n <NavTreeItemMonolithicAction parent={node} {...menuActions[0]} />\n ) : props.menuType === 'searchList' ? (\n <NavTreeItemActionSearchList\n {...props}\n menuActions={menuActions}\n suppressNextTooltip={suppressNextTooltip}\n onAction={(action) => action.data?.(props.caller ? { node, caller: props.caller } : { node })}\n />\n ) : (\n <NavTreeItemActionDropdownMenu\n {...props}\n parent={node}\n menuActions={menuActions}\n suppressNextTooltip={suppressNextTooltip}\n onAction={(action) => action.data?.(props.caller ? { node, caller: props.caller } : { node })}\n />\n )}\n </Tooltip.Root>\n );\n};\n", "//\n// Copyright 2023 DXOS.org\n//\n\nimport { monitorForElements } from '@atlaskit/pragmatic-drag-and-drop/element/adapter';\nimport { extractInstruction, type Instruction } from '@atlaskit/pragmatic-drag-and-drop-hitbox/tree-item';\nimport React, { useCallback, useEffect } from 'react';\n\nimport { NavigationAction, Surface, useIntentDispatcher } from '@dxos/app-framework';\nimport { isAction, isActionLike, type Node } from '@dxos/app-graph';\nimport { useGraph } from '@dxos/plugin-graph';\nimport { isEchoObject, isSpace } from '@dxos/react-client/echo';\nimport { ElevationProvider, useMediaQuery, useSidebars } from '@dxos/react-ui';\nimport { isItem } from '@dxos/react-ui-list';\nimport { arrayMove } from '@dxos/util';\n\nimport { NAV_TREE_ITEM, NavTree, type NavTreeProps } from './NavTree';\nimport { NavTreeFooter } from './NavTreeFooter';\nimport { NAVTREE_PLUGIN } from '../meta';\nimport { type NavTreeItem } from '../types';\nimport {\n expandActions,\n expandChildren,\n getChildren,\n getParent,\n resolveMigrationOperation,\n type NavTreeItemGraphNode,\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 = ({ item }: { item: NavTreeItem }) => (\n <Surface role='presence--glyph' data={{ object: item.node.data, id: item.node.id }} />\n);\n\nexport type NavTreeContainerProps = {\n items: NavTreeItem[];\n current: string[];\n open: string[];\n popoverAnchorId?: string;\n} & Pick<NavTreeProps, 'onOpenChange'>;\n\nexport const NavTreeContainer = ({ items, current, open, popoverAnchorId, ...props }: NavTreeContainerProps) => {\n const { closeNavigationSidebar } = useSidebars(NAVTREE_PLUGIN);\n const [isLg] = useMediaQuery('lg', { ssr: false });\n const dispatch = useIntentDispatcher();\n const { graph } = useGraph();\n\n const loadDescendents = useCallback(\n (node: Node) => {\n void expandActions(graph, node);\n if (!isActionLike(node)) {\n void expandChildren(graph, node).then(() =>\n // Load one level deeper, which resolves some juddering observed on open/close.\n Promise.all(\n getChildren(graph, node).flatMap((child) => [expandActions(graph, child), expandChildren(graph, child)]),\n ),\n );\n }\n },\n [graph],\n );\n\n const canDrop = useCallback((source: NavTreeItem, target: NavTreeItem) => {\n if (isSpace(target.node.data)) {\n // TODO(wittjosiah): Find a way to only allow space as source for rearranging.\n return isEchoObject(source.node.data) || isSpace(source.node.data);\n } else if (isEchoObject(target.node.data)) {\n return isEchoObject(source.node.data);\n } else {\n return false;\n }\n }, []);\n\n const handleSelect = useCallback(\n ({ node, actions, path }: NavTreeItem) => {\n if (!node.data) {\n return;\n }\n\n if (isAction(node)) {\n const [parentId] = path.slice(1);\n const parent = items.find(({ id }) => id === parentId)?.node;\n void (parent && node.data({ node: parent, caller: NAV_TREE_ITEM }));\n return;\n }\n\n // TODO(thure): Refactor opening related planks (comments in this case) to a generalized approach.\n void 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\n if (!isLg) {\n closeNavigationSidebar();\n }\n },\n [items, dispatch, isLg, closeNavigationSidebar],\n );\n\n // TODO(wittjosiah): Factor out hook.\n useEffect(() => {\n return monitorForElements({\n canMonitor: ({ source }) => isItem(source.data),\n onDrop: ({ location, source }) => {\n // Didn't drop on anything.\n if (!location.current.dropTargets.length) {\n return;\n }\n\n const target = location.current.dropTargets[0];\n const instruction: Instruction | null = extractInstruction(target.data);\n if (instruction !== null && instruction.type !== 'instruction-blocked') {\n const sourceNode = source.data.node as NavTreeItemGraphNode;\n const targetNode = target.data.node as NavTreeItemGraphNode;\n\n const sourcePath = source.data.path as string[];\n const targetPath = target.data.path as string[];\n\n const nextItems = instruction.type.startsWith('reorder')\n ? items.filter((item) => item.path.slice(0, -1).join() === targetPath.slice(0, -1).join())\n : items.filter((item) => item.path.slice(0, -1).join() === targetPath.join());\n const operation =\n sourcePath.slice(0, -1).join() === targetPath.slice(0, -1).join() && instruction.type !== 'make-child'\n ? 'rearrange'\n : resolveMigrationOperation(graph, sourceNode, targetPath, targetNode);\n\n const sourceParent = getParent(graph, sourceNode, sourcePath);\n const targetParent = getParent(graph, targetNode, targetPath);\n\n const sourceIndex = nextItems.findIndex(({ id }) => id === sourceNode.id);\n const targetIndex = nextItems.findIndex(({ id }) => id === targetNode.id);\n const migrationIndex =\n instruction.type === 'make-child'\n ? nextItems.length > 0\n ? nextItems.length - 1\n : 0\n : instruction.type === 'reorder-below'\n ? targetIndex + 1\n : targetIndex;\n\n switch (operation) {\n case 'rearrange': {\n arrayMove(nextItems, sourceIndex, targetIndex);\n void sourceParent?.properties.onRearrangeChildren?.(nextItems.map((item) => item.node.data));\n break;\n }\n\n case 'copy': {\n const target = instruction.type === 'make-child' ? targetNode : targetParent;\n void target?.properties.onCopy?.(sourceNode, migrationIndex);\n break;\n }\n\n case 'transfer': {\n const target = instruction.type === 'make-child' ? targetNode : targetParent;\n if (!target?.properties.onTransferStart || !sourceParent?.properties.onTransferEnd) {\n break;\n }\n\n void target?.properties.onTransferStart(sourceNode, migrationIndex);\n void sourceParent?.properties.onTransferEnd?.(sourceNode, target);\n break;\n }\n }\n }\n },\n });\n }, [items]);\n\n return (\n <ElevationProvider elevation='chrome'>\n <div\n role='none'\n className='grid grid-cols-1 grid-rows-[var(--rail-size)_1fr_min-content] bs-full overflow-hidden'\n >\n <div role='none' className='border-be border-separator'>\n <Surface role='search-input' limit={1} />\n </div>\n\n {/* TODO(thure): What gives this an inline `overflow: initial`? */}\n <div role='none' className='border-be border-separator !overflow-y-auto'>\n <NavTree\n items={items}\n open={open}\n current={current}\n loadDescendents={loadDescendents}\n renderPresence={renderPresence}\n popoverAnchorId={popoverAnchorId}\n canDrop={canDrop}\n onSelect={handleSelect}\n {...props}\n />\n </div>\n\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 type LayoutPart,\n SettingsAction,\n parseNavigationPlugin,\n useResolvePlugin,\n useIntentDispatcher,\n} from '@dxos/app-framework';\nimport { useConfig } from '@dxos/react-client';\nimport {\n Button,\n Link,\n Message,\n Popover,\n Tooltip,\n Trans,\n useDefaultValue,\n useSidebars,\n useTranslation,\n} from '@dxos/react-ui';\nimport { LayoutControls } from '@dxos/react-ui-stack';\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\nconst VERSION_REGEX = /([\\d.]+)/;\n\nexport const NavTreeFooter = (props: { layoutPart?: LayoutPart }) => {\n const layoutPart = useDefaultValue(props.layoutPart, () => 'sidebar');\n const config = useConfig();\n const { t } = useTranslation(NAVTREE_PLUGIN);\n const { navigationSidebarOpen } = useSidebars(NAVTREE_PLUGIN);\n const dispatch = useIntentDispatcher();\n const { version, timestamp, commitHash } = config.values.runtime?.app?.build ?? {};\n const navigationPlugin = useResolvePlugin(parseNavigationPlugin);\n const [_, v] = version?.match(VERSION_REGEX) ?? [];\n\n const releaseUrl =\n config.values.runtime?.app?.env?.DX_ENVIRONMENT === 'production'\n ? `${repo}/releases/tag/v${version}`\n : `${repo}/commit/${commitHash}`;\n\n const previewUrl = 'https://docs.dxos.org/composer#technology-preview';\n\n return (\n <div\n role='none'\n className={mx(\n 'flex bs-[--rail-size] pbe-[env(safe-area-inset-bottom)] box-content justify-end',\n layoutPart === 'complementary' && 'md:justify-end flex-row-reverse',\n )}\n >\n <Popover.Root>\n <Popover.Trigger asChild>\n <Button variant='ghost' classNames={buttonStyles} {...(!navigationSidebarOpen && { tabIndex: -1 })}>\n v{v}\n </Button>\n </Popover.Trigger>\n <Popover.Portal>\n <Popover.Content\n side='top'\n role='message'\n classNames='z-[12] bg-warning-500 max-is-[min(calc(100vw-16px),40ch)]'\n >\n <Message.Root valence='warning' className='rounded-be-none p-5'>\n <Message.Title>\n <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(5), '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 <LayoutControls\n variant='hide-disabled'\n capabilities={{\n incrementStart: false,\n incrementEnd: false,\n }}\n onClick={(_type) => {\n // TODO(Zan): If we inmplement pinning again, we should dispatch here.\n }}\n />\n )}\n </div>\n );\n};\n", "//\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 { type MaybePromise, nonNullable } from '@dxos/util';\n\nimport { type NodeProperties, type NavTreeItem } from './types';\n\nexport type NavTreeItemGraphNode = Node<\n any,\n Partial<\n NodeProperties & {\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 >\n>;\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 persistenceParent.properties.onTransferStart\n ? 'transfer'\n : persistenceParent.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: NavTreeItem[], path?: string[]): NavTreeItem | 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: readonly 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<NavTreeItem, 'actions' | 'groupedActions'>>;\n\nexport const getActions = (graph: Graph, node: Node): FlattenedActions => {\n return graph.actions(node).reduce(\n (acc: FlattenedActions, arg) => {\n if (arg.properties.disposition === 'item') {\n return acc;\n }\n\n acc.actions.push(arg);\n if (!isAction(arg)) {\n const actionGroup = graph.actions(arg);\n acc.groupedActions[arg.id] = actionGroup;\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,\n node,\n open,\n getItem,\n path = [],\n filter,\n}: {\n graph: Graph;\n node: NavTreeItemGraphNode;\n open: string[];\n getItem: (node: NavTreeItemGraphNode, parent: readonly string[], filter?: NodeFilter) => NavTreeItem;\n path?: readonly string[];\n filter?: NodeFilter;\n}): Generator<NavTreeItem> {\n const stack: NavTreeItem[] = [getItem(node, path, filter)];\n while (stack.length > 0) {\n const nextItem = stack.pop()!;\n if (nextItem.path.length > 1) {\n yield nextItem;\n }\n const { node, path } = nextItem;\n const children = getChildren(graph, node, filter, path);\n const actions = graph.actions(node);\n if (path.length === 1 || open.includes(Path.create(...path))) {\n for (let i = actions.length - 1; i >= 0; i--) {\n if (actions[i].properties.disposition === 'item') {\n stack.push(getItem(actions[i], path, filter));\n }\n }\n for (let i = children.length - 1; i >= 0; i--) {\n const child = children[i] as NavTreeItemGraphNode;\n stack.push(getItem(child, path, filter));\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 open: string[],\n getItem: (node: NavTreeItemGraphNode, parent: readonly string[]) => NavTreeItem,\n path?: readonly string[],\n filter?: NodeFilter,\n): NavTreeItem[] => {\n return Array.from(navTreeItemVisitor({ graph, node: rootNode, open, getItem, path, filter }));\n};\n\nexport const expandOpenGraphNodes = (graph: Graph, open: string[]) => {\n return Promise.all(\n open\n .map((id) => {\n const node = graph.findNode(Path.last(id));\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='w-full h-full !rounded-none'\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 { 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 'tree item actions label': 'More actions',\n 'tree item searchlist input placeholder': 'Search for actions…',\n 'empty branch message': ' ',\n },\n },\n },\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", "parseNavigationPlugin", "createExtension", "isAction", "isGraphNode", "invariant", "Keyboard", "LocalStorageStore", "Path", "mx", "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", "StackItem", "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", "StackItem", "Sigil", "icon", "attendableId", "triggerLabel", "onAction", "action", "data", "node", "caller", "HeadingLabel", "React", "Fragment", "useCallback", "useEffect", "isAction", "Popover", "toLocalizedString", "Treegrid", "useTranslation", "Tree", "useControllableState", "React", "useRef", "useState", "keySymbols", "Button", "Dialog", "DropdownMenu", "ContextMenu", "Tooltip", "useTranslation", "toLocalizedString", "Icon", "SearchList", "descriptionText", "hoverableControlItem", "hoverableOpenControlItem", "mx", "getHostPlatform", "getShortcut", "action", "properties", "keyBinding", "getHostPlatform", "fallbackIcon", "NavTreeItemActionDropdownMenu", "label", "icon", "testId", "defaultMenuOpen", "menuActions", "menuOpen", "suppressNextTooltip", "onChangeMenuOpen", "onAction", "t", "useTranslation", "NAVTREE_PLUGIN", "optionsMenuOpen", "setOptionsMenuOpen", "useControllableState", "prop", "defaultProp", "onChange", "React", "DropdownMenu", "Root", "open", "onOpenChange", "nextOpen", "current", "Tooltip", "Trigger", "asChild", "Button", "variant", "density", "classNames", "mx", "hoverableControlItem", "hoverableOpenControlItem", "data-testid", "aria-label", "span", "className", "toLocalizedString", "Icon", "size", "Portal", "Content", "Viewport", "map", "shortcut", "Item", "key", "id", "onClick", "event", "disabled", "stopPropagation", "descriptionText", "keySymbols", "join", "Arrow", "NavTreeItemActionSearchList", "menuActions", "icon", "label", "testId", "suppressNextTooltip", "onAction", "t", "useTranslation", "NAVTREE_PLUGIN", "optionsMenuOpen", "setOptionsMenuOpen", "useState", "button", "useRef", "sortedActions", "sort", "properties", "p1", "p2", "t1", "toLocalizedString", "toLowerCase", "t2", "localeCompare", "React", "Dialog", "Root", "open", "onOpenChange", "nextOpen", "current", "Tooltip", "Trigger", "asChild", "Button", "variant", "density", "classNames", "mx", "hoverableControlItem", "hoverableOpenControlItem", "data-testid", "onKeyDownCapture", "event", "target", "key", "stopPropagation", "ref", "Icon", "fallbackIcon", "size", "Portal", "Overlay", "Content", "SearchList", "Input", "placeholder", "map", "action", "shortcut", "getShortcut", "Item", "value", "id", "onSelect", "disabled", "span", "className", "descriptionText", "keySymbols", "join", "div", "role", "NavTreeItemMonolithicAction", "parent", "caller", "data", "invoke", "onClick", "node", "NavTreeItemAction", "monolithic", "props", "triggerTooltipOpen", "setTriggerTooltipOpen", "monolithicAction", "length", "baseLabel", "side", "Arrow", "menuType", "NavTreeItemActionDropdownMenu", "NAV_TREE_ITEM", "NavTree", "loadDescendents", "renderPresence", "popoverAnchorId", "props", "renderColumns", "useCallback", "item", "menuOpen", "setMenuOpen", "React", "NavTreeColumns", "Tree", "draggable", "gridTemplateColumns", "Presence", "t", "useTranslation", "NAVTREE_PLUGIN", "level", "path", "length", "primaryAction", "secondaryActions", "actions", "toSorted", "a", "b", "properties", "disposition", "flatMap", "action", "isAction", "filter", "hidden", "ActionRoot", "id", "Popover", "Anchor", "Fragment", "useEffect", "frame", "requestAnimationFrame", "node", "cancelAnimationFrame", "NavTreeItemAction", "testId", "label", "toLocalizedString", "icon", "parent", "monolithic", "menuActions", "groupedActions", "menuType", "caller", "Treegrid", "Cell", "onChangeMenuOpen", "monitorForElements", "extractInstruction", "React", "useCallback", "useEffect", "NavigationAction", "Surface", "useIntentDispatcher", "isAction", "isActionLike", "useGraph", "isEchoObject", "isSpace", "ElevationProvider", "useMediaQuery", "useSidebars", "isItem", "arrayMove", "ArrowSquareOut", "GearSix", "Warning", "formatDistance", "React", "SettingsAction", "parseNavigationPlugin", "useResolvePlugin", "useIntentDispatcher", "useConfig", "Button", "Link", "Message", "Popover", "Tooltip", "Trans", "useDefaultValue", "useSidebars", "useTranslation", "LayoutControls", "getSize", "mx", "buttonStyles", "repo", "VERSION_REGEX", "NavTreeFooter", "props", "layoutPart", "useDefaultValue", "config", "useConfig", "t", "useTranslation", "NAVTREE_PLUGIN", "navigationSidebarOpen", "useSidebars", "dispatch", "useIntentDispatcher", "version", "timestamp", "commitHash", "values", "runtime", "app", "build", "navigationPlugin", "useResolvePlugin", "parseNavigationPlugin", "_", "v", "match", "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", "LayoutControls", "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", "open", "getItem", "stack", "nextItem", "pop", "children", "Path", "create", "i", "child", "treeItemsFromRootNode", "rootNode", "Array", "from", "expandOpenGraphNodes", "findNode", "last", "NODE_TYPE", "renderPresence", "item", "React", "Surface", "role", "data", "object", "node", "id", "NavTreeContainer", "items", "current", "open", "popoverAnchorId", "props", "closeNavigationSidebar", "useSidebars", "NAVTREE_PLUGIN", "isLg", "useMediaQuery", "ssr", "dispatch", "useIntentDispatcher", "graph", "useGraph", "loadDescendents", "useCallback", "expandActions", "isActionLike", "expandChildren", "then", "Promise", "all", "getChildren", "flatMap", "child", "canDrop", "source", "target", "isSpace", "isEchoObject", "handleSelect", "actions", "path", "isAction", "parentId", "slice", "parent", "find", "caller", "NAV_TREE_ITEM", "action", "NavigationAction", "OPEN", "activeParts", "main", "defaultAction", "properties", "disposition", "useEffect", "monitorForElements", "canMonitor", "isItem", "onDrop", "location", "dropTargets", "length", "instruction", "extractInstruction", "type", "sourceNode", "targetNode", "sourcePath", "targetPath", "nextItems", "startsWith", "filter", "join", "operation", "resolveMigrationOperation", "sourceParent", "getParent", "targetParent", "sourceIndex", "findIndex", "targetIndex", "migrationIndex", "arrayMove", "onRearrangeChildren", "map", "onCopy", "onTransferStart", "onTransferEnd", "ElevationProvider", "elevation", "div", "className", "limit", "NavTree", "onSelect", "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", "NAVTREE_PLUGIN", "NavTreePlugin", "graphPlugin", "graph", "itemCache", "Map", "state", "LocalStorageStore", "root", "undefined", "flatTree", "treeItemsFromRootNode", "open", "getItem", "node", "parent", "filter", "invariant", "path", "id", "actions", "groupedActions", "getActions", "children", "getChildren", "parentOf", "length", "map", "properties", "role", "item", "label", "icon", "disabled", "testId", "className", "mx", "modified", "headingClassName", "cachedItem", "get", "JSON", "stringify", "set", "handleOpenChange", "Path", "create", "values", "push", "index", "indexOf", "splice", "expandOpenGraphNodes", "meta", "ready", "plugins", "prop", "key", "type", "json", "resolvePlugin", "parseGraphPlugin", "provides", "dispatch", "parseIntentPlugin", "intent", "soloPart", "parseNavigationPlugin", "location", "active", "solo", "plugin", "NAVTREE_PLUGIN", "action", "NavigationAction", "EXPOSE", "data", "subscribeTraverse", "visitor", "shortcut", "keyBinding", "availablePlatforms", "Object", "keys", "platform", "getHostPlatform", "includes", "macos", "windows", "isAction", "Keyboard", "singleton", "getContext", "slice", "join", "bind", "handler", "caller", "KEY_BINDING", "initialize", "setCurrentContext", "unload", "destroy", "metadata", "records", "NODE_TYPE", "parse", "object", "surface", "component", "selected", "subject", "React", "CommandsDialogContent", "NavTreeContainer", "items", "current", "activeIds", "onOpenChange", "popoverAnchorId", "NavTreeDocumentTitle", "isGraphNode", "activeNode", "NavBarStart", "disposition", "NotchStart", "CommandsTrigger", "resolver", "waitForPath", "target", "additionalOpenItems", "Array", "reduce", "acc", "_", "itemId", "builder", "intentPlugin", "createExtension", "LayoutAction", "SET_LAYOUT", "element", "dialogBlockAlign", "ns", "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":5777,"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-stack","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/NavTreeItemAction.tsx":{"bytes":42901,"imports":[{"path":"@radix-ui/react-use-controllable-state","kind":"import-statement","external":true},{"path":"react","kind":"import-statement","external":true},{"path":"@dxos/keyboard","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/NavTree.tsx":{"bytes":13518,"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-list","kind":"import-statement","external":true},{"path":"packages/plugins/plugin-navtree/src/components/NavTreeItemAction.tsx","kind":"import-statement","original":"./NavTreeItemAction"},{"path":"packages/plugins/plugin-navtree/src/meta.ts","kind":"import-statement","original":"../meta"}],"format":"esm"},"packages/plugins/plugin-navtree/src/components/NavTreeFooter.tsx":{"bytes":18328,"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-stack","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":20927,"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":26566,"imports":[{"path":"@atlaskit/pragmatic-drag-and-drop/element/adapter","kind":"import-statement","external":true},{"path":"@atlaskit/pragmatic-drag-and-drop-hitbox/tree-item","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/plugin-graph","kind":"import-statement","external":true},{"path":"@dxos/react-client/echo","kind":"import-statement","external":true},{"path":"@dxos/react-ui","kind":"import-statement","external":true},{"path":"@dxos/react-ui-list","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/components/NavTree.tsx","kind":"import-statement","original":"./NavTree"},{"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":1040,"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/NavTree.tsx","kind":"import-statement","original":"./NavTree"},{"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":3992,"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":3150,"imports":[{"path":"packages/plugins/plugin-navtree/src/meta.ts","kind":"import-statement","original":"./meta"}],"format":"esm"},"packages/plugins/plugin-navtree/src/NavTreePlugin.tsx":{"bytes":38942,"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/invariant","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/react-ui-theme","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":103409},"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/invariant","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/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-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-stack","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-list","kind":"import-statement","external":true},{"path":"@radix-ui/react-use-controllable-state","kind":"import-statement","external":true},{"path":"react","kind":"import-statement","external":true},{"path":"@dxos/keyboard","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":"@atlaskit/pragmatic-drag-and-drop/element/adapter","kind":"import-statement","external":true},{"path":"@atlaskit/pragmatic-drag-and-drop-hitbox/tree-item","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/plugin-graph","kind":"import-statement","external":true},{"path":"@dxos/react-client/echo","kind":"import-statement","external":true},{"path":"@dxos/react-ui","kind":"import-statement","external":true},{"path":"@dxos/react-ui-list","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":"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-stack","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}],"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":9330},"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":1447},"packages/plugins/plugin-navtree/src/components/NavTree.tsx":{"bytesInOutput":3259},"packages/plugins/plugin-navtree/src/components/NavTreeItemAction.tsx":{"bytesInOutput":9874},"packages/plugins/plugin-navtree/src/components/NavTreeContainer.tsx":{"bytesInOutput":6278},"packages/plugins/plugin-navtree/src/components/NavTreeFooter.tsx":{"bytesInOutput":5311},"packages/plugins/plugin-navtree/src/util.ts":{"bytesInOutput":4282},"packages/plugins/plugin-navtree/src/components/NavTreeDocumentTitle.tsx":{"bytesInOutput":456},"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":990},"packages/plugins/plugin-navtree/src/translations.ts":{"bytesInOutput":879},"packages/plugins/plugin-navtree/src/index.ts":{"bytesInOutput":33}},"bytes":49838},"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":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":5777,"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-stack","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/NavTreeItemAction.tsx":{"bytes":42901,"imports":[{"path":"@radix-ui/react-use-controllable-state","kind":"import-statement","external":true},{"path":"react","kind":"import-statement","external":true},{"path":"@dxos/keyboard","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/NavTree.tsx":{"bytes":13518,"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-list","kind":"import-statement","external":true},{"path":"packages/plugins/plugin-navtree/src/components/NavTreeItemAction.tsx","kind":"import-statement","original":"./NavTreeItemAction"},{"path":"packages/plugins/plugin-navtree/src/meta.ts","kind":"import-statement","original":"../meta"}],"format":"esm"},"packages/plugins/plugin-navtree/src/components/NavTreeFooter.tsx":{"bytes":18328,"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-stack","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":20927,"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":26603,"imports":[{"path":"@atlaskit/pragmatic-drag-and-drop/element/adapter","kind":"import-statement","external":true},{"path":"@atlaskit/pragmatic-drag-and-drop-hitbox/tree-item","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/plugin-graph","kind":"import-statement","external":true},{"path":"@dxos/react-client/echo","kind":"import-statement","external":true},{"path":"@dxos/react-ui","kind":"import-statement","external":true},{"path":"@dxos/react-ui-list","kind":"import-statement","external":true},{"path":"@dxos/util","kind":"import-statement","external":true},{"path":"packages/plugins/plugin-navtree/src/components/NavTree.tsx","kind":"import-statement","original":"./NavTree"},{"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":1040,"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/NavTree.tsx","kind":"import-statement","original":"./NavTree"},{"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":3992,"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":3150,"imports":[{"path":"packages/plugins/plugin-navtree/src/meta.ts","kind":"import-statement","original":"./meta"}],"format":"esm"},"packages/plugins/plugin-navtree/src/NavTreePlugin.tsx":{"bytes":38942,"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/invariant","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/react-ui-theme","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":103399},"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/invariant","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/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-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-stack","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-list","kind":"import-statement","external":true},{"path":"@radix-ui/react-use-controllable-state","kind":"import-statement","external":true},{"path":"react","kind":"import-statement","external":true},{"path":"@dxos/keyboard","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":"@atlaskit/pragmatic-drag-and-drop/element/adapter","kind":"import-statement","external":true},{"path":"@atlaskit/pragmatic-drag-and-drop-hitbox/tree-item","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/plugin-graph","kind":"import-statement","external":true},{"path":"@dxos/react-client/echo","kind":"import-statement","external":true},{"path":"@dxos/react-ui","kind":"import-statement","external":true},{"path":"@dxos/react-ui-list","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-stack","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}],"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":9330},"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":1447},"packages/plugins/plugin-navtree/src/components/NavTree.tsx":{"bytesInOutput":3259},"packages/plugins/plugin-navtree/src/components/NavTreeItemAction.tsx":{"bytesInOutput":9874},"packages/plugins/plugin-navtree/src/components/NavTreeContainer.tsx":{"bytesInOutput":6324},"packages/plugins/plugin-navtree/src/components/NavTreeFooter.tsx":{"bytesInOutput":5311},"packages/plugins/plugin-navtree/src/util.ts":{"bytesInOutput":4282},"packages/plugins/plugin-navtree/src/components/NavTreeDocumentTitle.tsx":{"bytesInOutput":456},"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":990},"packages/plugins/plugin-navtree/src/translations.ts":{"bytesInOutput":879},"packages/plugins/plugin-navtree/src/index.ts":{"bytesInOutput":33}},"bytes":49884},"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 +1 @@
|
|
|
1
|
-
{"version":3,"file":"NavTreeContainer.d.ts","sourceRoot":"","sources":["../../../../src/components/NavTreeContainer.tsx"],"names":[],"mappings":"AAMA,OAAO,KAAiC,MAAM,OAAO,CAAC;
|
|
1
|
+
{"version":3,"file":"NavTreeContainer.d.ts","sourceRoot":"","sources":["../../../../src/components/NavTreeContainer.tsx"],"names":[],"mappings":"AAMA,OAAO,KAAiC,MAAM,OAAO,CAAC;AAUtD,OAAO,EAA0B,KAAK,YAAY,EAAE,MAAM,WAAW,CAAC;AAGtE,OAAO,EAAE,KAAK,WAAW,EAAE,MAAM,UAAU,CAAC;AAW5C,eAAO,MAAM,SAAS,wBAAwB,CAAC;AAM/C,MAAM,MAAM,qBAAqB,GAAG;IAClC,KAAK,EAAE,WAAW,EAAE,CAAC;IACrB,OAAO,EAAE,MAAM,EAAE,CAAC;IAClB,IAAI,EAAE,MAAM,EAAE,CAAC;IACf,eAAe,CAAC,EAAE,MAAM,CAAC;CAC1B,GAAG,IAAI,CAAC,YAAY,EAAE,cAAc,CAAC,CAAC;AAEvC,eAAO,MAAM,gBAAgB,wDAAyD,qBAAqB,sBAsK1G,CAAC"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@dxos/plugin-navtree",
|
|
3
|
-
"version": "0.7.
|
|
3
|
+
"version": "0.7.1-staging.599df14",
|
|
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",
|
|
@@ -35,26 +35,26 @@
|
|
|
35
35
|
"@preact/signals-core": "^1.6.0",
|
|
36
36
|
"@radix-ui/react-use-controllable-state": "^1.0.0",
|
|
37
37
|
"date-fns": "^3.3.1",
|
|
38
|
-
"@dxos/app-framework": "0.7.
|
|
39
|
-
"@dxos/
|
|
40
|
-
"@dxos/
|
|
41
|
-
"@dxos/
|
|
42
|
-
"@dxos/invariant": "0.7.
|
|
43
|
-
"@dxos/
|
|
44
|
-
"@dxos/
|
|
45
|
-
"@dxos/plugin-client": "0.7.
|
|
46
|
-
"@dxos/
|
|
47
|
-
"@dxos/
|
|
48
|
-
"@dxos/
|
|
49
|
-
"@dxos/
|
|
50
|
-
"@dxos/plugin-observability": "0.7.
|
|
51
|
-
"@dxos/protocols": "0.7.
|
|
52
|
-
"@dxos/react-client": "0.7.
|
|
53
|
-
"@dxos/react-ui-mosaic": "0.7.
|
|
54
|
-
"@dxos/react-ui-list": "0.7.
|
|
55
|
-
"@dxos/react-ui-searchlist": "0.7.
|
|
56
|
-
"@dxos/
|
|
57
|
-
"@dxos/
|
|
38
|
+
"@dxos/app-framework": "0.7.1-staging.599df14",
|
|
39
|
+
"@dxos/app-graph": "0.7.1-staging.599df14",
|
|
40
|
+
"@dxos/async": "0.7.1-staging.599df14",
|
|
41
|
+
"@dxos/echo-schema": "0.7.1-staging.599df14",
|
|
42
|
+
"@dxos/invariant": "0.7.1-staging.599df14",
|
|
43
|
+
"@dxos/keyboard": "0.7.1-staging.599df14",
|
|
44
|
+
"@dxos/local-storage": "0.7.1-staging.599df14",
|
|
45
|
+
"@dxos/plugin-client": "0.7.1-staging.599df14",
|
|
46
|
+
"@dxos/debug": "0.7.1-staging.599df14",
|
|
47
|
+
"@dxos/plugin-graph": "0.7.1-staging.599df14",
|
|
48
|
+
"@dxos/log": "0.7.1-staging.599df14",
|
|
49
|
+
"@dxos/plugin-theme": "0.7.1-staging.599df14",
|
|
50
|
+
"@dxos/plugin-observability": "0.7.1-staging.599df14",
|
|
51
|
+
"@dxos/protocols": "0.7.1-staging.599df14",
|
|
52
|
+
"@dxos/react-client": "0.7.1-staging.599df14",
|
|
53
|
+
"@dxos/react-ui-mosaic": "0.7.1-staging.599df14",
|
|
54
|
+
"@dxos/react-ui-list": "0.7.1-staging.599df14",
|
|
55
|
+
"@dxos/react-ui-searchlist": "0.7.1-staging.599df14",
|
|
56
|
+
"@dxos/util": "0.7.1-staging.599df14",
|
|
57
|
+
"@dxos/react-ui-stack": "0.7.1-staging.599df14"
|
|
58
58
|
},
|
|
59
59
|
"devDependencies": {
|
|
60
60
|
"@phosphor-icons/react": "^2.1.5",
|
|
@@ -63,18 +63,18 @@
|
|
|
63
63
|
"react": "~18.2.0",
|
|
64
64
|
"react-dom": "~18.2.0",
|
|
65
65
|
"vite": "5.4.7",
|
|
66
|
-
"@dxos/
|
|
67
|
-
"@dxos/
|
|
68
|
-
"@dxos/
|
|
69
|
-
"@dxos/
|
|
70
|
-
"@dxos/react-ui": "0.7.
|
|
66
|
+
"@dxos/echo-signals": "0.7.1-staging.599df14",
|
|
67
|
+
"@dxos/random": "0.7.1-staging.599df14",
|
|
68
|
+
"@dxos/react-ui-theme": "0.7.1-staging.599df14",
|
|
69
|
+
"@dxos/storybook-utils": "0.7.1-staging.599df14",
|
|
70
|
+
"@dxos/react-ui": "0.7.1-staging.599df14"
|
|
71
71
|
},
|
|
72
72
|
"peerDependencies": {
|
|
73
73
|
"@phosphor-icons/react": "^2.1.5",
|
|
74
74
|
"react": "~18.2.0",
|
|
75
75
|
"react-dom": "~18.2.0",
|
|
76
|
-
"@dxos/react-ui": "0.7.
|
|
77
|
-
"@dxos/react-ui-theme": "0.7.
|
|
76
|
+
"@dxos/react-ui": "0.7.1-staging.599df14",
|
|
77
|
+
"@dxos/react-ui-theme": "0.7.1-staging.599df14"
|
|
78
78
|
},
|
|
79
79
|
"publishConfig": {
|
|
80
80
|
"access": "public"
|
|
@@ -12,7 +12,6 @@ import { useGraph } from '@dxos/plugin-graph';
|
|
|
12
12
|
import { isEchoObject, isSpace } from '@dxos/react-client/echo';
|
|
13
13
|
import { ElevationProvider, useMediaQuery, useSidebars } from '@dxos/react-ui';
|
|
14
14
|
import { isItem } from '@dxos/react-ui-list';
|
|
15
|
-
import { mx } from '@dxos/react-ui-theme';
|
|
16
15
|
import { arrayMove } from '@dxos/util';
|
|
17
16
|
|
|
18
17
|
import { NAV_TREE_ITEM, NavTree, type NavTreeProps } from './NavTree';
|
|
@@ -183,15 +182,14 @@ export const NavTreeContainer = ({ items, current, open, popoverAnchorId, ...pro
|
|
|
183
182
|
<ElevationProvider elevation='chrome'>
|
|
184
183
|
<div
|
|
185
184
|
role='none'
|
|
186
|
-
className=
|
|
187
|
-
'grid grid-cols-1 grid-rows-[var(--rail-size)_1fr_min-content]',
|
|
188
|
-
'bs-full overflow-hidden row-span-3 divide-y divide-separator',
|
|
189
|
-
)}
|
|
185
|
+
className='grid grid-cols-1 grid-rows-[var(--rail-size)_1fr_min-content] bs-full overflow-hidden'
|
|
190
186
|
>
|
|
191
|
-
<
|
|
187
|
+
<div role='none' className='border-be border-separator'>
|
|
188
|
+
<Surface role='search-input' limit={1} />
|
|
189
|
+
</div>
|
|
192
190
|
|
|
193
191
|
{/* TODO(thure): What gives this an inline `overflow: initial`? */}
|
|
194
|
-
<div role='none' className='!overflow-y-auto'>
|
|
192
|
+
<div role='none' className='border-be border-separator !overflow-y-auto'>
|
|
195
193
|
<NavTree
|
|
196
194
|
items={items}
|
|
197
195
|
open={open}
|
|
@@ -129,7 +129,7 @@ export const NavTreeFooter = (props: { layoutPart?: LayoutPart }) => {
|
|
|
129
129
|
onClick={() => dispatch({ action: SettingsAction.OPEN })}
|
|
130
130
|
>
|
|
131
131
|
<span className='sr-only'>{t('open settings label')}</span>
|
|
132
|
-
<GearSix className={mx(getSize(
|
|
132
|
+
<GearSix className={mx(getSize(5), 'rotate-90')} />
|
|
133
133
|
</Button>
|
|
134
134
|
</Tooltip.Trigger>
|
|
135
135
|
<Tooltip.Portal>
|