@dxos/plugin-navtree 0.7.5-labs.071a3e2 → 0.7.5-labs.401163d
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/{chunk-54MPRXMH.mjs → chunk-SKZPY4LJ.mjs} +18 -7
- package/dist/lib/browser/chunk-SKZPY4LJ.mjs.map +7 -0
- package/dist/lib/browser/index.mjs +1 -1
- package/dist/lib/browser/meta.json +1 -1
- package/dist/lib/browser/{react-surface-LNRTNSM6.mjs → react-surface-OZDS36WN.mjs} +2 -2
- package/dist/lib/browser/{state-65TQKYX7.mjs → state-IEFQTUPG.mjs} +2 -2
- package/dist/lib/browser/state-IEFQTUPG.mjs.map +7 -0
- package/dist/types/src/components/L0Menu.d.ts.map +1 -1
- package/package.json +30 -31
- package/src/capabilities/state.ts +1 -1
- package/src/components/L0Menu.tsx +11 -3
- package/src/components/NavTree.stories.tsx +1 -1
- package/src/stories/Graph.stories.tsx +1 -1
- package/src/util.ts +2 -2
- package/dist/lib/browser/chunk-54MPRXMH.mjs.map +0 -7
- package/dist/lib/browser/state-65TQKYX7.mjs.map +0 -7
- /package/dist/lib/browser/{react-surface-LNRTNSM6.mjs.map → react-surface-OZDS36WN.mjs.map} +0 -0
|
@@ -187,7 +187,7 @@ var NotchStart = () => {
|
|
|
187
187
|
|
|
188
188
|
// packages/plugins/plugin-navtree/src/util.ts
|
|
189
189
|
import { ACTION_TYPE, ACTION_GROUP_TYPE, isAction as isAction2, isActionLike } from "@dxos/app-graph";
|
|
190
|
-
import {
|
|
190
|
+
import { isNonNullable } from "@dxos/util";
|
|
191
191
|
var getParent = (graph, node, path) => {
|
|
192
192
|
const parentId = path[path.length - 2];
|
|
193
193
|
return graph.nodes(node, {
|
|
@@ -239,7 +239,7 @@ var getChildren = (graph, node, filter, path = []) => {
|
|
|
239
239
|
node.id
|
|
240
240
|
];
|
|
241
241
|
return nextPath.includes(n.id) ? void 0 : n;
|
|
242
|
-
}).filter(
|
|
242
|
+
}).filter(isNonNullable);
|
|
243
243
|
};
|
|
244
244
|
var getActions = (graph, node) => {
|
|
245
245
|
return graph.actions(node).reduce((acc, arg) => {
|
|
@@ -438,6 +438,7 @@ var L0Item = ({ item, parent, path, pinned }) => {
|
|
|
438
438
|
onClick: handleClick
|
|
439
439
|
};
|
|
440
440
|
const localizedString = toLocalizedString2(item.properties.label, t);
|
|
441
|
+
const hue = item.properties.hue ?? null;
|
|
441
442
|
const avatarValue = useMemo2(() => type === "tab" ? getFirstTwoRenderableChars(localizedString).join("") : [], [
|
|
442
443
|
type,
|
|
443
444
|
item.properties.label,
|
|
@@ -453,13 +454,23 @@ var L0Item = ({ item, parent, path, pinned }) => {
|
|
|
453
454
|
className: mx3('group/l0i dx-focus-ring-group grid overflow-hidden relative data[type!="collection"]:cursor-pointer app-no-drag', l0Breakpoints[item.properties.l0Breakpoint])
|
|
454
455
|
}, type !== "collection" && /* @__PURE__ */ React5.createElement("div", {
|
|
455
456
|
role: "none",
|
|
456
|
-
className: mx3("absolute -z-[1]
|
|
457
|
+
className: mx3("absolute -z-[1] dx-focus-ring-group-indicator transition-colors", type === "tab" || pinned ? "rounded" : "rounded-full", pinned ? "bg-transparent group-hover/l0i:bg-groupSurface inset-inline-3 inset-block-0.5" : "bg-groupSurface inset-inline-3 inset-block-2"),
|
|
458
|
+
...hue && {
|
|
459
|
+
style: {
|
|
460
|
+
background: `var(--dx-${hue}Surface)`
|
|
461
|
+
}
|
|
462
|
+
}
|
|
457
463
|
}), /* @__PURE__ */ React5.createElement("div", {
|
|
458
464
|
role: "none",
|
|
459
465
|
className: "hidden group-aria-selected/l0i:block absolute inline-start-0 inset-block-4 is-1 bg-accentSurface rounded-ie"
|
|
460
466
|
}), type === "tab" && item.properties.disposition !== "pin-end" ? /* @__PURE__ */ React5.createElement("span", {
|
|
461
467
|
role: "img",
|
|
462
|
-
className: "place-self-center text-3xl font-light"
|
|
468
|
+
className: "place-self-center text-3xl font-light",
|
|
469
|
+
...hue && {
|
|
470
|
+
style: {
|
|
471
|
+
color: `var(--dx-${hue}SurfaceText)`
|
|
472
|
+
}
|
|
473
|
+
}
|
|
463
474
|
}, avatarValue) : item.properties.icon && /* @__PURE__ */ React5.createElement(Icon2, {
|
|
464
475
|
icon: item.properties.icon,
|
|
465
476
|
size: pinned ? 5 : 7,
|
|
@@ -809,8 +820,8 @@ import { lazy } from "@dxos/app-framework";
|
|
|
809
820
|
var AppGraphBuilder = lazy(() => import("./app-graph-builder-BL7LRXCM.mjs"));
|
|
810
821
|
var IntentResolver = lazy(() => import("./intent-resolver-U25VBFH3.mjs"));
|
|
811
822
|
var Keyboard2 = lazy(() => import("./keyboard-MUBRTPI5.mjs"));
|
|
812
|
-
var ReactSurface = lazy(() => import("./react-surface-
|
|
813
|
-
var State = lazy(() => import("./state-
|
|
823
|
+
var ReactSurface = lazy(() => import("./react-surface-OZDS36WN.mjs"));
|
|
824
|
+
var State = lazy(() => import("./state-IEFQTUPG.mjs"));
|
|
814
825
|
|
|
815
826
|
// packages/plugins/plugin-navtree/src/components/NavTreeContainer.tsx
|
|
816
827
|
var NODE_TYPE = "dxos/app-graph/node";
|
|
@@ -1106,4 +1117,4 @@ export {
|
|
|
1106
1117
|
ReactSurface,
|
|
1107
1118
|
State
|
|
1108
1119
|
};
|
|
1109
|
-
//# sourceMappingURL=chunk-
|
|
1120
|
+
//# sourceMappingURL=chunk-SKZPY4LJ.mjs.map
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
{
|
|
2
|
+
"version": 3,
|
|
3
|
+
"sources": ["../../../src/components/CommandsDialog.tsx", "../../../src/components/CommandsTrigger.tsx", "../../../src/components/NotchStart.tsx", "../../../src/components/HaloButton.tsx", "../../../src/util.ts", "../../../src/components/NavTreeContainer.tsx", "../../../src/components/NavTree.tsx", "../../../src/components/L0Menu.tsx", "../../../src/components/NavTreeContext.tsx", "../../../src/hooks.ts", "../../../src/components/L1Panels.tsx", "../../../src/components/NavTreeItemColumns.tsx", "../../../src/components/NavTreeItemAction.tsx", "../../../src/capabilities/index.ts", "../../../src/components/NavTreeDocumentTitle.tsx"],
|
|
4
|
+
"sourcesContent": ["//\n// Copyright 2023 DXOS.org\n//\n\nimport React, { useMemo, useState } from 'react';\n\nimport { createIntent, LayoutAction, useAppGraph, useIntentDispatcher } from '@dxos/app-framework';\nimport { type ActionLike, isActionGroup, isAction } from '@dxos/app-graph';\nimport { Keyboard, keySymbols } from '@dxos/keyboard';\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 { dispatchPromise: dispatch } = useIntentDispatcher();\n const { graph } = useAppGraph();\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(createIntent(LayoutAction.UpdateDialog, { part: 'dialog', options: { 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 2024 DXOS.org\n//\n\nimport { MagnifyingGlass } from '@phosphor-icons/react';\nimport React from 'react';\n\nimport { createIntent, LayoutAction, useIntentDispatcher } from '@dxos/app-framework';\nimport { Button, useTranslation } from '@dxos/react-ui';\nimport { getSize } from '@dxos/react-ui-theme';\n\nimport { COMMANDS_DIALOG, NAVTREE_PLUGIN } from '../meta';\n\n// TODO(thure): Refactor to be handled by a more appropriate plugin.\nexport const CommandsTrigger = () => {\n const { dispatchPromise: dispatch } = useIntentDispatcher();\n const { t } = useTranslation(NAVTREE_PLUGIN);\n return (\n <Button\n classNames='m-1 pli-1 lg:pli-2'\n onClick={() =>\n dispatch(\n createIntent(LayoutAction.UpdateDialog, {\n part: 'dialog',\n subject: COMMANDS_DIALOG,\n options: {\n blockAlign: 'start',\n },\n }),\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 2024 DXOS.org\n//\n\nimport React from 'react';\n\nimport { createIntent, useCapabilities, useIntentDispatcher } from '@dxos/app-framework';\nimport { ClientAction } from '@dxos/plugin-client/types';\nimport { ObservabilityCapabilities } 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 // TODO(wittjosiah): Can this be removed now?\n const [observability] = useCapabilities(ObservabilityCapabilities.Observability);\n const { dispatchPromise: dispatch } = useIntentDispatcher();\n return (\n <HaloButton\n size={12}\n identityKey={identity?.identityKey.toHex()}\n hue={identity?.profile?.data?.hue}\n emoji={identity?.profile?.data?.emoji}\n internal={observability?.group === 'dxos'}\n onClick={() => dispatch(createIntent(ClientAction.ShareIdentity))}\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 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 isActionLike,\n} from '@dxos/app-graph';\nimport { isNonNullable } from '@dxos/util';\n\nimport { type FlattenedActions, type NavTreeItemGraphNode } from './types';\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 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(isNonNullable) as NavTreeItemGraphNode[];\n};\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\nexport const l0ItemType = (item: Node<any>) => {\n if (item.properties.disposition === 'collection') {\n return 'collection';\n } else if (isActionLike(item)) {\n return 'action';\n } else if (item.properties.disposition === 'navigation') {\n return 'link';\n } else {\n return 'tab';\n }\n};\n\n// Regular expression to match renderable characters\n// Excludes control characters, combining marks, and other non-renderable characters\nconst renderableCharRegex =\n /^(?![\\p{Control}\\p{Mark}\\p{Separator}\\p{Surrogate}\\p{Unassigned}])[\\p{L}\\p{N}\\p{P}\\p{S}\\p{Emoji}]$/u;\n\n/**\n * Returns the first two renderable characters from a string that are separated by non-word characters.\n * Handles Unicode characters correctly.\n *\n * @param {string} label - The input string to process\n * @returns {[string, string]} Array containing the two characters, or empty strings if not found\n */\nexport const getFirstTwoRenderableChars = (label: string) => {\n // Convert string to array of Unicode characters\n const characters = Array.from(label);\n\n // Keep track of found renderable characters\n const result = ['', ''];\n let foundFirst = false;\n\n for (let i = 0; i < characters.length; i++) {\n const char = characters[i];\n\n if (renderableCharRegex.test(char)) {\n if (!foundFirst) {\n result[0] = char;\n foundFirst = true;\n } else {\n // Check if there's at least one non-word character between the first and current char\n const textBetween = characters.slice(result[0].length, i).join('');\n if (/[^\\p{L}\\p{N}_]/u.test(textBetween)) {\n result[1] = char;\n break;\n }\n }\n }\n }\n\n return result;\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 { untracked } from '@preact/signals-core';\nimport React, { memo, useCallback, useEffect, useMemo } from 'react';\n\nimport {\n createIntent,\n LayoutAction,\n Surface,\n useAppGraph,\n useCapability,\n useIntentDispatcher,\n useLayout,\n} from '@dxos/app-framework';\nimport { isAction, isActionLike, type Node } from '@dxos/app-graph';\nimport { isEchoObject, isSpace } from '@dxos/react-client/echo';\nimport { useMediaQuery } from '@dxos/react-ui';\nimport { isTreeData, type TreeData, type PropsFromTreeItem } from '@dxos/react-ui-list';\nimport { mx } from '@dxos/react-ui-theme';\nimport { arrayMove } from '@dxos/util';\n\nimport { NAV_TREE_ITEM, NavTree } from './NavTree';\nimport { NavTreeContext } from './NavTreeContext';\nimport { type NavTreeContextValue } from './types';\nimport { NavTreeCapabilities } from '../capabilities';\nimport { type NavTreeItemGraphNode } from '../types';\nimport {\n expandActions,\n expandChildren,\n getActions as naturalGetActions,\n getChildren,\n getParent,\n resolveMigrationOperation,\n expandChildrenAndActions,\n} from '../util';\n\n// TODO(thure): Is NavTree truly authoritative in this regard?\nexport const NODE_TYPE = 'dxos/app-graph/node';\n\nconst renderItemEnd = ({ node, open }: { node: Node; open: boolean }) => (\n <Surface role='navtree-item-end' data={{ id: node.id, subject: node.data, open }} limit={1} />\n);\n\nexport type NavTreeContainerProps = {\n popoverAnchorId?: string;\n topbar?: boolean;\n} & Pick<NavTreeContextValue, 'tab'>;\n\nexport const NavTreeContainer = memo(({ tab, popoverAnchorId, topbar }: NavTreeContainerProps) => {\n const [isLg] = useMediaQuery('lg', { ssr: false });\n const { dispatchPromise: dispatch } = useIntentDispatcher();\n const { graph } = useAppGraph();\n const layout = useLayout();\n const { isOpen, isCurrent, setItem } = useCapability(NavTreeCapabilities.State);\n\n const getActions = useCallback((node: Node) => naturalGetActions(graph, node), [graph]);\n\n const getItems = useCallback(\n (node?: Node, disposition?: string) => {\n return graph.nodes(node ?? graph.root, {\n filter: (node): node is Node => {\n return untracked(() => {\n const action = isActionLike(node);\n if (!disposition) {\n return !action || node.properties.disposition === 'item';\n }\n\n return node.properties.disposition === disposition;\n });\n },\n });\n },\n [graph],\n );\n\n const getProps = useCallback(\n (node: Node, path: string[]): PropsFromTreeItem => {\n const children = getChildren(graph, node, undefined, path);\n const parentOf =\n children.length > 0 ? children.map(({ id }) => id) : node.properties.role === 'branch' ? [] : undefined;\n return {\n id: node.id,\n label: node.properties.label ?? node.id,\n parentOf,\n icon: node.properties.icon,\n disabled: node.properties.disabled,\n className: mx(node.properties.modified && 'italic', node.properties.className),\n headingClassName: node.properties.headingClassName,\n testId: node.properties.testId,\n };\n },\n [graph],\n );\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 onOpenChange = useCallback(\n ({ item: { id }, path, open }: { item: Node; path: string[]; open: boolean }) => {\n // TODO(thure): This might become a localstorage leak; openItemIds that no longer exist should be removed from this map.\n setItem(path, 'open', open);\n\n if (graph) {\n const node = graph.findNode(id);\n return node && expandChildrenAndActions(graph, node as NavTreeItemGraphNode);\n }\n },\n [graph],\n );\n\n const onTabChange = useCallback(\n async (node: NavTreeItemGraphNode) => {\n await dispatch(createIntent(LayoutAction.SwitchWorkspace, { part: 'workspace', subject: node.id }));\n // Open the first item if the workspace is empty.\n if (layout.active.length === 0) {\n const [item] = getItems(node).filter((node) => !isActionLike(node));\n if (item) {\n await dispatch(createIntent(LayoutAction.Open, { part: 'main', subject: [item.id] }));\n }\n }\n },\n [dispatch, layout],\n );\n\n const canDrop = useCallback((source: TreeData, target: TreeData) => {\n const sourceNode = source.item as Node;\n const targetNode = target.item as Node;\n if (isSpace(targetNode.data)) {\n // TODO(wittjosiah): Find a way to only allow space as source for rearranging.\n return isEchoObject(sourceNode.data) || isSpace(sourceNode.data);\n } else if (isEchoObject(targetNode.data)) {\n return isEchoObject(sourceNode.data);\n } else {\n return false;\n }\n }, []);\n\n const handleSelect = useCallback(\n ({ item: node, path, option }: { item: Node; path: string[]; option: boolean }) => {\n if (!node.data) {\n return;\n }\n\n if (isAction(node)) {\n const [parent] = graph.nodes(node, { relation: 'inbound' });\n void (parent && node.data({ node: parent, caller: NAV_TREE_ITEM }));\n return;\n }\n\n const current = isCurrent(path, node);\n if (!current) {\n void dispatch(\n createIntent(LayoutAction.Open, {\n part: 'main',\n subject: [node.id],\n options: { key: node.properties.key },\n }),\n );\n } else if (option) {\n void dispatch(\n createIntent(LayoutAction.Close, { part: 'main', subject: [node.id], options: { state: false } }),\n );\n } else {\n void dispatch(createIntent(LayoutAction.ScrollIntoView, { part: 'current', subject: node.id }));\n }\n\n const defaultAction = graph.actions(node).find((action) => action.properties?.disposition === 'default');\n if (isAction(defaultAction)) {\n void (defaultAction.data as () => void)();\n }\n\n if (!isLg) {\n void dispatch(createIntent(LayoutAction.UpdateSidebar, { part: 'sidebar', options: { state: 'closed' } }));\n }\n },\n [graph, dispatch, isCurrent, isLg],\n );\n\n // TODO(wittjosiah): Factor out hook.\n useEffect(() => {\n return monitorForElements({\n canMonitor: ({ source }) => isTreeData(source.data),\n onDrop: ({ location, source }) => {\n // Didn't drop on anything.\n if (!location.current.dropTargets.length) {\n return;\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.item as NavTreeItemGraphNode;\n const targetNode = target.data.item as NavTreeItemGraphNode;\n const sourcePath = source.data.path as string[];\n const targetPath = target.data.path as string[];\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 const sourceParent = getParent(graph, sourceNode, sourcePath);\n const targetParent = getParent(graph, targetNode, targetPath);\n const sourceItems = getItems(sourceParent);\n const targetItems = getItems(targetParent);\n const sourceIndex = sourceItems.findIndex(({ id }) => id === sourceNode.id);\n const targetIndex = targetItems.findIndex(({ id }) => id === targetNode.id);\n const migrationIndex =\n instruction.type === 'make-child'\n ? undefined\n : instruction.type === 'reorder-below'\n ? targetIndex + 1\n : targetIndex;\n switch (operation) {\n case 'rearrange': {\n const nextItems = sourceItems.map(({ data }) => data);\n arrayMove(nextItems, sourceIndex, targetIndex);\n void sourceParent?.properties.onRearrangeChildren?.(nextItems);\n break;\n }\n case 'copy': {\n const target = instruction.type === 'make-child' ? targetNode : targetParent;\n void target?.properties.onCopy?.(sourceNode, migrationIndex);\n break;\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 void target?.properties.onTransferStart(sourceNode, migrationIndex);\n void sourceParent?.properties.onTransferEnd?.(sourceNode, target);\n break;\n }\n }\n }\n },\n });\n }, [graph]);\n\n const navTreeContextValue = useMemo(\n () => ({\n tab,\n onTabChange,\n getActions,\n loadDescendents,\n renderItemEnd,\n popoverAnchorId,\n topbar,\n getItems,\n getProps,\n isCurrent,\n isOpen,\n onOpenChange,\n canDrop,\n onSelect: handleSelect,\n }),\n [\n tab,\n onTabChange,\n getActions,\n loadDescendents,\n renderItemEnd,\n popoverAnchorId,\n topbar,\n getItems,\n getProps,\n isCurrent,\n isOpen,\n onOpenChange,\n canDrop,\n handleSelect,\n ],\n );\n\n return (\n <NavTreeContext.Provider value={navTreeContextValue}>\n <NavTree root={graph.root} id={graph.root.id} />\n </NavTreeContext.Provider>\n );\n});\n", "//\n// Copyright 2024 DXOS.org\n//\n\nimport React, { useMemo } from 'react';\n\nimport { Tabs } from '@dxos/react-ui-tabs';\nimport { byPosition } from '@dxos/util';\n\nimport { L0Menu } from './L0Menu';\nimport { L1Panels } from './L1Panels';\nimport { useNavTreeContext } from './NavTreeContext';\nimport { type NavTreeProps } from './types';\nimport { useLoadDescendents } from '../hooks';\n\nexport const NAV_TREE_ITEM = 'NavTreeItem';\n\nexport const NavTree = ({ id, root }: NavTreeProps) => {\n const { getItems, tab } = useNavTreeContext();\n const topLevelActions = getItems(root, 'item');\n const topLevelCollections = getItems(root, 'collection');\n const topLevelWorkspaces = getItems(root, 'workspace');\n const topLevelNavigation = getItems(root, 'navigation');\n const l0Items = useMemo(\n () => [...topLevelActions, ...topLevelCollections, ...topLevelWorkspaces, ...topLevelNavigation],\n [topLevelActions, topLevelCollections, topLevelWorkspaces, topLevelNavigation],\n );\n const pinnedItems = getItems(root, 'pin-end').toSorted((a, b) => byPosition(a.properties, b.properties));\n const topLevelItems = useMemo(() => [...l0Items, ...pinnedItems], [l0Items, pinnedItems]);\n\n useLoadDescendents(root);\n const path = useMemo(() => [id], [id]);\n\n return (\n // NOTE(thure): 74px (rather than rem) is intentional in order to match the size of macOS windowing controls\n <Tabs.Root value={tab} orientation='vertical' verticalVariant='stateless' classNames='relative'>\n <L0Menu topLevelItems={l0Items} pinnedItems={pinnedItems} path={path} parent={root} />\n <L1Panels topLevelItems={topLevelItems} path={path} currentItemId={tab} />\n </Tabs.Root>\n );\n};\n", "//\n// Copyright 2025 DXOS.org\n//\n\nimport React, { type MouseEvent, useCallback, useMemo } from 'react';\n\nimport { createIntent, LayoutAction, useIntentDispatcher } from '@dxos/app-framework';\nimport { type Node } from '@dxos/app-graph';\nimport { Icon, toLocalizedString, Tooltip, useMediaQuery, useSidebars, useTranslation } from '@dxos/react-ui';\nimport { Tabs } from '@dxos/react-ui-tabs';\nimport { mx } from '@dxos/react-ui-theme';\n\nimport { useNavTreeContext } from './NavTreeContext';\nimport { NotchStart } from './NotchStart';\nimport { useLoadDescendents } from '../hooks';\nimport { NAVTREE_PLUGIN } from '../meta';\nimport { getFirstTwoRenderableChars, l0ItemType } from '../util';\n\ntype L0ItemProps = {\n item: Node<any>;\n parent?: Node<any>;\n path: string[];\n pinned?: boolean;\n};\n\nconst useL0ItemClick = ({ item, parent, path }: L0ItemProps, type: string) => {\n const { tab, onTabChange, onSelect, isCurrent } = useNavTreeContext();\n const { dispatchPromise: dispatch } = useIntentDispatcher();\n const { navigationSidebarState } = useSidebars(NAVTREE_PLUGIN);\n const [isLg] = useMediaQuery('lg', { ssr: false });\n\n return useCallback(\n (event: MouseEvent) => {\n switch (type) {\n case 'tab':\n // TODO(thure): This dispatch should rightly be in `onTabChange`, but that callback wasn’t reacting to changes\n // to its dependencies.\n void dispatch(\n createIntent(LayoutAction.UpdateSidebar, {\n part: 'sidebar',\n options: {\n state:\n item.id === tab\n ? navigationSidebarState === 'expanded'\n ? isLg\n ? 'collapsed'\n : 'closed'\n : 'expanded'\n : 'expanded',\n },\n }),\n );\n return onTabChange?.(item);\n case 'link':\n return onSelect?.({ item, path, current: !isCurrent(path, item), option: event.altKey });\n case 'action': {\n const {\n data: invoke,\n properties: { caller },\n } = item;\n return invoke?.(caller ? { node: parent, caller } : { node: parent });\n }\n }\n },\n [item, type, onSelect, isCurrent, parent, tab, navigationSidebarState, isLg, dispatch],\n );\n};\n\nconst l0Breakpoints: Record<string, string> = {\n lg: 'hidden lg:grid',\n};\n\nconst L0Item = ({ item, parent, path, pinned }: L0ItemProps) => {\n const { t } = useTranslation(NAVTREE_PLUGIN);\n const type = l0ItemType(item);\n const itemPath = useMemo(() => [...path, item.id], [item.id, path]);\n const { getProps } = useNavTreeContext();\n const { id, testId } = getProps?.(item, path) ?? {};\n const Root = type === 'collection' ? 'h2' : type === 'tab' ? Tabs.TabPrimitive : 'button';\n const handleClick = useL0ItemClick({ item, path: itemPath, parent }, type);\n const rootProps =\n type === 'tab'\n ? { value: item.id, tabIndex: 0, onClick: handleClick, 'data-testid': testId, 'data-itemid': id }\n : type !== 'collection'\n ? { onClick: handleClick, 'data-testid': testId, 'data-itemid': id }\n : { onClick: handleClick };\n const localizedString = toLocalizedString(item.properties.label, t);\n const hue = item.properties.hue ?? null;\n const avatarValue = useMemo(\n () => (type === 'tab' ? getFirstTwoRenderableChars(localizedString).join('') : []),\n [type, item.properties.label, t],\n );\n\n return (\n <Tooltip.Root delayDuration={0}>\n <Tooltip.Trigger asChild>\n <Root\n {...(rootProps as any)}\n data-type={type}\n className={mx(\n 'group/l0i dx-focus-ring-group grid overflow-hidden relative data[type!=\"collection\"]:cursor-pointer app-no-drag',\n l0Breakpoints[item.properties.l0Breakpoint],\n )}\n >\n {type !== 'collection' && (\n <div\n role='none'\n className={mx(\n 'absolute -z-[1] dx-focus-ring-group-indicator transition-colors',\n type === 'tab' || pinned ? 'rounded' : 'rounded-full',\n pinned\n ? 'bg-transparent group-hover/l0i:bg-groupSurface inset-inline-3 inset-block-0.5'\n : 'bg-groupSurface inset-inline-3 inset-block-2',\n )}\n {...(hue && { style: { background: `var(--dx-${hue}Surface)` } })}\n />\n )}\n <div\n role='none'\n className='hidden group-aria-selected/l0i:block absolute inline-start-0 inset-block-4 is-1 bg-accentSurface rounded-ie'\n />\n {type === 'tab' && item.properties.disposition !== 'pin-end' ? (\n <span\n role='img'\n className='place-self-center text-3xl font-light'\n {...(hue && { style: { color: `var(--dx-${hue}SurfaceText)` } })}\n >\n {avatarValue}\n </span>\n ) : (\n item.properties.icon && (\n <Icon icon={item.properties.icon} size={pinned ? 5 : 7} classNames='place-self-center' />\n )\n )}\n <span id={`${item.id}__label`} className='sr-only'>\n {localizedString}\n </span>\n </Root>\n </Tooltip.Trigger>\n <Tooltip.Portal>\n <Tooltip.Content side='right'>\n {localizedString}\n <Tooltip.Arrow />\n </Tooltip.Content>\n </Tooltip.Portal>\n </Tooltip.Root>\n );\n};\n\nconst L0Collection = ({ item, path, parent }: L0ItemProps) => {\n const navTreeContext = useNavTreeContext();\n useLoadDescendents(item);\n const collectionItems = navTreeContext.getItems(item);\n const groupPath = useMemo(() => [...path, item.id], [item.id, path]);\n const { id, testId } = navTreeContext.getProps?.(item, path) ?? {};\n return (\n <div\n role='group'\n className='contents group/l0c'\n aria-labelledby={`${item.id}__label`}\n data-itemid={id}\n data-testid={testId}\n >\n {/* TODO(burdon): Option. */}\n {/* <L0Item item={item} parent={parent} path={groupPath} /> */}\n {collectionItems.map((collectionItem) => (\n <L0Item key={collectionItem.id} item={collectionItem} parent={item} path={groupPath} />\n ))}\n </div>\n );\n};\n\nexport const L0Menu = ({\n topLevelItems,\n pinnedItems,\n parent,\n path,\n}: {\n topLevelItems: Node<any>[];\n pinnedItems: Node<any>[];\n parent?: Node<any>;\n path: string[];\n}) => {\n return (\n <Tabs.Tablist classNames='group/l0 absolute z-[1] inset-block-0 inline-start-0 rounded-is-lg grid grid-cols-[var(--l0-size)] grid-rows-[1fr_min-content_var(--l0-size)] contain-layout !is-[--l0-size] bg-baseSurface border-ie border-separator app-drag'>\n <div\n role='none'\n className='grid auto-rows-[calc(var(--l0-size)-.5rem)] min-bs-0 !overflow-y-auto plb-1 [body[data-platform=\"darwin\"]_&]:pbs-[calc(30px+0.25rem)]'\n >\n {topLevelItems.map((item) => {\n if (l0ItemType(item) === 'collection') {\n return <L0Collection key={item.id} item={item} parent={parent} path={path} />;\n } else {\n return <L0Item key={item.id} item={item} parent={parent} path={path} />;\n }\n })}\n </div>\n <div role='none' className='grid grid-cols-1 auto-rows-[--rail-action] pbs-2'>\n {pinnedItems\n .filter((item) => l0ItemType(item) !== 'collection')\n .map((item) => (\n <L0Item key={item.id} item={item} parent={parent} path={path} pinned />\n ))}\n </div>\n <div role='none' className='grid p-2 app-no-drag'>\n <NotchStart />\n </div>\n <div\n role='none'\n className='hidden [body[data-platform=\"darwin\"]_&]:block absolute block-start-0 is-[calc(var(--l0-size)-1px)] bs-[calc(40px+0.25rem)]'\n style={{\n background:\n 'linear-gradient(to bottom, var(--dx-baseSurface) 0%, var(--dx-baseSurface) 70%, transparent 100%)',\n }}\n />\n </Tabs.Tablist>\n );\n};\n", "//\n// Copyright 2025 DXOS.org\n//\n\nimport { createContext, useContext } from 'react';\n\nimport { raise } from '@dxos/debug';\n\nimport { type NavTreeContextValue } from './types';\n\nexport const NavTreeContext = createContext<NavTreeContextValue | null>(null);\n\nexport const useNavTreeContext = () => useContext(NavTreeContext) ?? raise(new Error('NavTreeContext not found'));\n", "//\n// Copyright 2025 DXOS.org\n//\n\nimport { useEffect } from 'react';\n\nimport { type Node } from '@dxos/app-graph';\n\nimport { useNavTreeContext } from './components/NavTreeContext';\n\nexport const useLoadDescendents = (root?: Node) => {\n const { loadDescendents } = useNavTreeContext();\n useEffect(() => {\n const frame = requestAnimationFrame(() => {\n if (root) {\n void loadDescendents?.(root);\n }\n });\n return () => cancelAnimationFrame(frame);\n }, [root]);\n};\n", "//\n// Copyright 2025 DXOS.org\n//\n\nimport React, { useMemo } from 'react';\n\nimport { useLayout } from '@dxos/app-framework';\nimport { type Node } from '@dxos/app-graph';\nimport { toLocalizedString, useTranslation } from '@dxos/react-ui';\nimport { Tree } from '@dxos/react-ui-list';\nimport { Tabs } from '@dxos/react-ui-tabs';\n\nimport { useNavTreeContext } from './NavTreeContext';\nimport { NavTreeItemColumns } from './NavTreeItemColumns';\nimport { useLoadDescendents } from '../hooks';\nimport { NAVTREE_PLUGIN } from '../meta';\nimport { l0ItemType } from '../util';\n\ntype L1PanelProps = { item: Node<any>; path: string[]; currentItemId: string };\n\nconst L1Panel = ({ item, path, currentItemId }: L1PanelProps) => {\n const layout = useLayout();\n const navTreeContext = useNavTreeContext();\n const { t } = useTranslation(NAVTREE_PLUGIN);\n return (\n <Tabs.Tabpanel\n key={item.id}\n value={item.id}\n classNames={[\n 'absolute inset-block-0 inline-end-0 is-[calc(100%-var(--l0-size))] lg:is-[--l1-size] grid-cols-1 grid-rows-[var(--rail-size)_1fr]',\n item.id === currentItemId && 'grid',\n ]}\n tabIndex={-1}\n {...(!layout.sidebarOpen && { inert: 'true' })}\n >\n {item.id === currentItemId && (\n <>\n <h2 className='flex items-center border-be border-separator pis-4 app-drag'>\n <span className='flex-1 truncate cursor-default'>{toLocalizedString(item.properties.label, t)}</span>\n <NavTreeItemColumns path={path} item={item} open />\n </h2>\n <div role='none' className='overflow-y-auto'>\n <Tree\n {...navTreeContext}\n id={item.id}\n root={item}\n path={path}\n levelOffset={5}\n draggable\n gridTemplateColumns='[tree-row-start] 1fr min-content min-content min-content [tree-row-end]'\n renderColumns={NavTreeItemColumns}\n />\n </div>\n </>\n )}\n </Tabs.Tabpanel>\n );\n};\n\nconst L1PanelCollection = ({ item, path, currentItemId }: L1PanelProps) => {\n const { getItems } = useNavTreeContext();\n useLoadDescendents(item);\n const collectionItems = getItems(item);\n const groupPath = useMemo(() => [...path, item.id], [item.id, path]);\n return (\n <>\n {collectionItems\n .filter((item) => l0ItemType(item) === 'tab')\n .map((item) => (\n <L1Panel key={item.id} item={item} path={groupPath} currentItemId={currentItemId} />\n ))}\n </>\n );\n};\n\nexport const L1Panels = ({\n topLevelItems,\n path,\n currentItemId,\n}: {\n topLevelItems: Node<any>[];\n path: string[];\n currentItemId: string;\n}) => {\n return (\n <>\n {topLevelItems.map((item) => {\n const type = l0ItemType(item);\n switch (type) {\n case 'collection':\n return <L1PanelCollection key={item.id} item={item} path={path} currentItemId={currentItemId} />;\n case 'tab':\n return <L1Panel key={item.id} item={item} path={path} currentItemId={currentItemId} />;\n default:\n return null;\n }\n })}\n </>\n );\n};\n", "//\n// Copyright 2025 DXOS.org\n//\n\nimport React, { Fragment, memo } from 'react';\n\nimport { isAction } from '@dxos/app-graph';\nimport { Popover, toLocalizedString, Treegrid, useTranslation } from '@dxos/react-ui';\n\nimport { NAV_TREE_ITEM } from './NavTree';\nimport { useNavTreeContext } from './NavTreeContext';\nimport { NavTreeItemAction } from './NavTreeItemAction';\nimport type { NavTreeItemColumnsProps } from './types';\nimport { useLoadDescendents } from '../hooks';\nimport { NAVTREE_PLUGIN } from '../meta';\n\nexport const NavTreeItemColumns = memo(({ path, item, open }: NavTreeItemColumnsProps) => {\n const { t } = useTranslation(NAVTREE_PLUGIN);\n const { getActions, renderItemEnd: ItemEnd, popoverAnchorId } = useNavTreeContext();\n\n const level = path.length - 2;\n\n const { actions: _actions, groupedActions } = getActions(item);\n const [primaryAction, ...secondaryActions] = _actions.toSorted((a, b) =>\n a.properties?.disposition === 'toolbar' ? -1 : 1,\n );\n\n const actions = (primaryAction?.properties?.disposition === 'toolbar' ? secondaryActions : _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 useLoadDescendents(item);\n useLoadDescendents(primaryAction && !isAction(primaryAction) ? primaryAction : undefined);\n\n return (\n <div role='none' className='contents app-no-drag'>\n {primaryAction?.properties?.disposition === 'toolbar' && !primaryAction?.properties?.disabled ? (\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}\n monolithic={isAction(primaryAction)}\n menuActions={isAction(primaryAction) ? [primaryAction] : 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}\n menuActions={actions}\n menuType='dropdown'\n caller={NAV_TREE_ITEM}\n />\n ) : (\n <Treegrid.Cell />\n )}\n </ActionRoot>\n {ItemEnd && <ItemEnd node={item} open={open} />}\n </div>\n );\n});\n", "//\n// Copyright 2023 DXOS.org\n//\n\nimport React, { type MutableRefObject, useRef } from 'react';\n\nimport { type Action, type Node } from '@dxos/app-graph';\nimport { useTranslation, toLocalizedString, IconButton } from '@dxos/react-ui';\nimport { DropdownMenu, MenuProvider, type MenuItem } from '@dxos/react-ui-menu';\nimport { hoverableControlItem, hoverableOpenControlItem, mx } from '@dxos/react-ui-theme';\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 onAction?: (action: Action) => void;\n};\n\nconst fallbackIcon = 'ph--placeholder--regular';\n\nconst actionButtonProps = {\n size: 4 as const,\n density: 'fine' as const,\n};\n\nexport const NavTreeItemActionDropdownMenu = ({\n label,\n icon,\n testId,\n menuActions,\n onAction,\n}: NavTreeItemActionMenuProps) => {\n const { t } = useTranslation(NAVTREE_PLUGIN);\n const suppressNextTooltip = useRef<boolean>(false);\n return (\n <MenuProvider onAction={onAction}>\n <DropdownMenu.Root items={menuActions as MenuItem[]} suppressNextTooltip={suppressNextTooltip}>\n <DropdownMenu.Trigger asChild>\n <IconButton\n {...actionButtonProps}\n classNames={mx('shrink-0 pli-2 pointer-fine:pli-1', hoverableControlItem, hoverableOpenControlItem)}\n variant='ghost'\n icon={icon ?? fallbackIcon}\n iconOnly\n label={toLocalizedString(label, t)}\n data-testid={testId}\n suppressNextTooltip={suppressNextTooltip}\n />\n </DropdownMenu.Trigger>\n </DropdownMenu.Root>\n </MenuProvider>\n );\n};\n\nexport const NavTreeItemMonolithicAction = ({\n parent,\n properties: { disabled, caller, testId, icon, variant = 'ghost', iconOnly = true } = { label: 'never' },\n data: invoke,\n baseLabel,\n}: Action & { parent: Node; onAction?: (action: Action) => void; baseLabel: string }) => {\n return (\n <IconButton\n {...actionButtonProps}\n variant={variant}\n classNames={mx(\n 'shrink-0',\n hoverableControlItem,\n hoverableOpenControlItem,\n iconOnly ? 'pli-2 pointer-fine:pli-1' : 'p-2 pointer-fine:p-2 mie-1',\n )}\n icon={icon ?? fallbackIcon}\n iconOnly={iconOnly}\n label={baseLabel}\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 );\n};\n\nexport const NavTreeItemAction = ({ monolithic, menuActions, parent: node, ...props }: NavTreeItemActionMenuProps) => {\n const { t } = useTranslation(NAVTREE_PLUGIN);\n\n const monolithicAction = menuActions?.length === 1 && menuActions[0];\n const baseLabel = toLocalizedString(monolithicAction ? monolithicAction.properties!.label : props.label, t);\n\n return monolithic && menuActions?.length === 1 ? (\n <NavTreeItemMonolithicAction baseLabel={baseLabel} parent={node} {...menuActions[0]} />\n ) : (\n <NavTreeItemActionDropdownMenu\n {...props}\n label={baseLabel}\n parent={node}\n menuActions={menuActions}\n onAction={(action) => action.data?.(props.caller ? { node, caller: props.caller } : { node })}\n />\n );\n};\n", "//\n// Copyright 2025 DXOS.org\n//\n\nimport { lazy } from '@dxos/app-framework';\n\nexport const AppGraphBuilder = lazy(() => import('./app-graph-builder'));\nexport const IntentResolver = lazy(() => import('./intent-resolver'));\nexport const Keyboard = lazy(() => import('./keyboard'));\nexport const ReactSurface = lazy(() => import('./react-surface'));\nexport const State = lazy(() => import('./state'));\n\nexport * from './capabilities';\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"],
|
|
5
|
+
"mappings": ";;;;;;;;;;AAIA,OAAOA,SAASC,SAASC,gBAAgB;AAEzC,SAASC,cAAcC,cAAcC,aAAaC,2BAA2B;AAC7E,SAA0BC,eAAeC,gBAAgB;AACzD,SAASC,UAAUC,kBAAkB;AACrC,SAASC,QAAQC,QAAQC,MAAMC,gBAAgBC,yBAAyB;AACxE,SAASC,kBAAkB;AAC3B,SAASC,iBAAiBC,UAAU;AACpC,SAASC,uBAAuB;AAKzB,IAAMC,wBAAwB,CAAC,EAAEC,UAAUC,QAAO,MAAyB;AAChF,QAAM,EAAEC,EAAC,IAAKC,eAAeC,cAAAA;AAC7B,QAAM,CAACJ,UAAUK,WAAAA,IAAeC,SAA6BL,OAAAA;AAC7D,QAAM,EAAEM,iBAAiBC,SAAQ,IAAKC,oBAAAA;AACtC,QAAM,EAAEC,MAAK,IAAKC,YAAAA;AAIlB,QAAMC,aAAaC,QAAQ,MAAA;AAEzB,UAAMC,UAAUC,SAASC,UAAUC,kBAAiB;AACpD,UAAMC,YAAY,oBAAIC,IAAAA;AACtB,UAAMC,WAAwB,CAAA;AAC9BV,WAAOW,SAAS;MACdC,SAAS,CAACC,MAAMC,SAAAA;AACd,aACGC,SAASF,IAAAA,KAASG,cAAcH,IAAAA,MACjC,CAACL,UAAUS,IAAIJ,KAAKK,EAAE,KACtBd,QAAQe,WAAWL,KAAKM,MAAM,GAAG,EAAC,EAAGC,KAAK,GAAA,CAAA,GAC1C;AACAb,oBAAUc,IAAIT,KAAKK,EAAE;AACrBR,UAAAA,SAAQa,KAAKV,IAAAA;QACf;MACF;IACF,CAAA;AAEAH,IAAAA,SAAQc,KAAK,CAACC,GAAGC,MAAAA;AACf,aAAOC,kBAAkBF,EAAEG,WAAWC,OAAOrC,CAAAA,GACzCsC,YAAAA,EACDC,cAAcJ,kBAAkBD,EAAEE,WAAWC,OAAOrC,CAAAA,GAAIsC,YAAAA,CAAAA;IAC7D,CAAA;AAGA,WAAOpB;EACT,GAAG;IAACV;GAAM;AAEV,QAAMgC,QAAQ9B,WAAW+B,KAAK,CAAC,EAAEf,GAAE,MAAOA,OAAO5B,QAAAA;AACjD,QAAMoB,UAAUM,cAAcgB,KAAAA,IAAShC,MAAMU,QAAQsB,KAAAA,IAAS9B;AAE9D,SACE,sBAAA,cAACgC,OAAOC,SAAO;IAACC,YAAY;MAAC;;KAC3B,sBAAA,cAACF,OAAOG,OAAK,MAAE7C,EAAE,yBAAyB;IAAE8C,IAAI5C;EAAe,CAAA,CAAA,GAG/D,sBAAA,cAAC6C,WAAWC,MAAI;IAACX,OAAOrC,EAAE,gCAAA;IAAmC4C,YAAW;KACtE,sBAAA,cAACG,WAAWE,OAAK;IAACC,aAAalD,EAAE,gCAAA;IAAmC4C,YAAW;MAC/E,sBAAA,cAACG,WAAWJ,SAAO;IAACC,YAAW;KAC5B1B,SAASiC,IAAI,CAACC,WAAAA;AACb,UAAMf,QAAQF,kBAAkBiB,OAAOhB,WAAWC,OAAOrC,CAAAA;AACzD,UAAMqD,WACJ,OAAOD,OAAOhB,WAAWkB,eAAe,WACpCF,OAAOhB,WAAWkB,aAClBF,OAAOhB,WAAWkB,aAAaC,gBAAAA,CAAAA;AACrC,WACE,sBAAA,cAACR,WAAWS,MAAI;MACdC,OAAOpB;MACPqB,KAAKN,OAAO1B;MACZiC,UAAU,MAAA;AACR,YAAIP,OAAOhB,WAAWwB,UAAU;AAC9B;QACF;AAEA,YAAIpC,cAAc4B,MAAAA,GAAS;AACzBjD,sBAAYiD,OAAO1B,EAAE;AACrB;QACF;AAEA,aAAKpB,SAASuD,aAAaC,aAAaC,cAAc;UAAEC,MAAM;UAAUC,SAAS;YAAEC,OAAO;UAAM;QAAE,CAAA,CAAA;AAClGC,mBAAW,MAAA;AACT,gBAAM9C,OAAOb,MAAM4D,MAAM5B,SAASY,QAAQ;YAAEiB,UAAU;UAAU,CAAA,EAAG,CAAA;AACnE,gBAAMhD,QAAQE,SAAS6B,MAAAA,KAAWA,OAAOkB,KAAK;YAAEjD;YAAMkD,QAAQC;UAAY,CAAA;QAC5E,CAAA;MACF;MACA5B,YAAW;MACXgB,UAAUR,OAAOhB,WAAWwB;MAC3B,GAAIR,OAAOhB,YAAYqC,UAAU;QAAE,eAAerB,OAAOhB,WAAWqC;MAAO;OAE5E,sBAAA,cAACC,MAAAA;MAAKC,MAAMvB,OAAOhB,WAAWuC;MAAMC,MAAM;QAC1C,sBAAA,cAACC,QAAAA;MAAKC,WAAU;OAAiBzC,KAAAA,GAChCgB,YAAY,sBAAA,cAACwB,QAAAA;MAAKC,WAAWC,GAAG,YAAYC,eAAAA;OAAmBC,WAAW5B,QAAAA,EAAUxB,KAAK,EAAA,CAAA,CAAA;EAGhG,CAAA,CAAA,CAAA,GAIJ,sBAAA,cAACa,OAAOwC,OAAK;IAACC,SAAAA;KACZ,sBAAA,cAACC,QAAAA;IAAOC,SAAQ;IAAUzC,YAAW;KAClC5C,EAAE,eAAe;IAAE8C,IAAI;EAAK,CAAA,CAAA,CAAA,CAAA;AAKvC;;;AC1GA,SAASwC,uBAAuB;AAChC,OAAOC,YAAW;AAElB,SAASC,gBAAAA,eAAcC,gBAAAA,eAAcC,uBAAAA,4BAA2B;AAChE,SAASC,UAAAA,SAAQC,kBAAAA,uBAAsB;AACvC,SAASC,eAAe;AAKjB,IAAMC,kBAAkB,MAAA;AAC7B,QAAM,EAAEC,iBAAiBC,SAAQ,IAAKC,qBAAAA;AACtC,QAAM,EAAEC,EAAC,IAAKC,gBAAeC,cAAAA;AAC7B,SACE,gBAAAC,OAAA,cAACC,SAAAA;IACCC,YAAW;IACXC,SAAS,MACPR,SACES,cAAaC,cAAaC,cAAc;MACtCC,MAAM;MACNC,SAASC;MACTC,SAAS;QACPC,YAAY;MACd;IACF,CAAA,CAAA;KAIJ,gBAAAX,OAAA,cAACY,QAAAA;IAAKC,WAAU;KAAgDhB,EAAE,gCAAA,CAAA,GAClE,gBAAAG,OAAA,cAACc,iBAAAA;IAAgBD,WAAWE,QAAQ,CAAA;;AAG1C;;;AChCA,OAAOC,YAAW;AAElB,SAASC,gBAAAA,eAAcC,iBAAiBC,uBAAAA,4BAA2B;AACnE,SAASC,oBAAoB;AAC7B,SAASC,iCAAiC;AAC1C,SAASC,mBAAmB;;;ACL5B,OAAOC,YAAW;AAElB,SAASC,iBAAiBC,wBAAwB;AAClD,SAASC,cAAyB;AAClC,SAASC,WAAWC,MAAAA,WAAU;AAC9B,SAASC,qBAAqB;AAE9B,IAAMC,WAAW;AAWV,IAAMC,aAAa,CAACC,UAAAA;AACzB,QAAM,EAAEC,SAASC,aAAaC,UAAUC,OAAO,EAAC,IAAKJ;AACrD,QAAMK,gBAAgBC,cAAcJ,eAAe,GAAA;AACnD,QAAM,EAAEK,OAAOC,gBAAe,IAAKC,iBAAAA;AACnC,SACE,gBAAAC,OAAA,cAACC,UAAAA;IAAOC,WAAWC,IAAGC,WAAW,iCAAA;IAAoCb;KACnE,gBAAAS,OAAA,cAACK,OAAOC,MAAI;IACVZ;IACAa,SAAQ;IACRC,QAAQV,oBAAoBW,gBAAgBC,UAAU,UAAUjB,WAAW,aAAa;IACxFkB,KAAKrB,MAAMqB,OAAOhB,cAAcgB;KAEhC,gBAAAX,OAAA,cAACK,OAAOO,OAAK;IAACC,eAAY;IAAsBC,gBAAa;KAC1DrB,WAAW,gBAAAO,OAAA,cAACK,OAAOU,OAAK;IAACC,MAAM5B;OAAe,gBAAAY,OAAA,cAACK,OAAOY,UAAQ;IAACC,MAAM5B,MAAM6B,SAASxB,cAAcwB;;AAK7G;;;AD1BO,IAAMC,aAAa,MAAA;AACxB,QAAMC,WAAWC,YAAAA;AAEjB,QAAM,CAACC,aAAAA,IAAiBC,gBAAgBC,0BAA0BC,aAAa;AAC/E,QAAM,EAAEC,iBAAiBC,SAAQ,IAAKC,qBAAAA;AACtC,SACE,gBAAAC,OAAA,cAACC,YAAAA;IACCC,MAAM;IACNC,aAAaZ,UAAUY,YAAYC,MAAAA;IACnCC,KAAKd,UAAUe,SAASC,MAAMF;IAC9BG,OAAOjB,UAAUe,SAASC,MAAMC;IAChCC,UAAUhB,eAAeiB,UAAU;IACnCC,SAAS,MAAMb,SAASc,cAAaC,aAAaC,aAAa,CAAA;;AAGrE;;;AEzBA,SAKEC,aACAC,mBACAC,YAAAA,WACAC,oBACK;AACP,SAASC,qBAAqB;AAIvB,IAAMC,YAAY,CACvBC,OACAC,MACAC,SAAAA;AAEA,QAAMC,WAAWD,KAAKA,KAAKE,SAAS,CAAA;AACpC,SAAOJ,MAAMK,MAAMJ,MAAM;IAAEK,UAAU;EAAU,CAAA,EAAGC,KAAK,CAACC,MAAMA,EAAEC,OAAON,QAAAA;AACzE;AAEO,IAAMO,uBAAuB,CAClCV,OACAC,MACAC,MACAS,qBAAAA;AAEA,MAAIV,KAAKW,WAAWC,wBAAwBC,IAAIH,gBAAAA,GAAmB;AACjE,WAAOV;EACT,OAAO;AACL,UAAMc,SAAShB,UAAUC,OAAOC,MAAMC,IAAAA;AACtC,WAAOa,SAASL,qBAAqBV,OAAOe,QAAQb,KAAKc,MAAM,GAAGd,KAAKE,SAAS,CAAA,GAAIO,gBAAAA,IAAoB;EAC1G;AACF;AAEO,IAAMM,4BAA4B,CACvCjB,OACAkB,YACAC,iBACAC,2BAAAA;AAEA,QAAMC,cAAcH,WAAWN,WAAWD;AAC1C,MAAIS,0BAA0BC,aAAa;AACzC,UAAMC,oBAAoBZ,qBAAqBV,OAAOoB,wBAAwBD,iBAAiBE,WAAAA;AAC/F,QAAIC,mBAAmB;AACrB,YAAMC,YAAYL,WAAWN,WAAWY;AACxC,UAAID,aAAaD,mBAAmBV,WAAWa,sBAAsB;AACnE,eAAOH,kBAAkBV,WAAWa,qBAAqBX,IAAIS,SAAAA,KAC3DD,kBAAkBV,WAAWc,kBAC3B,aACAJ,kBAAkBV,WAAWe,SAC3B,SACA;MACR,OAAO;AACL,eAAO;MACT;IACF,OAAO;AACL,aAAO;IACT;EACF,OAAO;AACL,WAAO;EACT;AACF;AAGO,IAAMC,cAAc,CAACC,YAC1BA,QAAQC,KAAK,CAACC,GAAGC,MAAAA;AACf,MAAID,EAAEnB,WAAWqB,gBAAgBD,EAAEpB,WAAWqB,aAAa;AACzD,WAAO;EACT;AAEA,MAAIF,EAAEnB,WAAWqB,gBAAgB,WAAW;AAC1C,WAAO;EACT;AAEA,SAAO;AACT,CAAA;AAEK,IAAMC,cAAc,CACzBlC,OACAC,MACAkC,QACAjC,OAA0B,CAAA,MAAE;AAE5B,SAAOF,MACJK,MAAMJ,MAAM;IAAEK,UAAU;IAAY6B;EAAO,CAAA,EAC3CC,IAAI,CAAC5B,MAAAA;AAEJ,UAAM6B,WAAW;SAAInC;MAAMD,KAAKQ;;AAChC,WAAO4B,SAASC,SAAS9B,EAAEC,EAAE,IAAI8B,SAAa/B;EAChD,CAAA,EACC2B,OAAOK,aAAAA;AACZ;AAEO,IAAMC,aAAa,CAACzC,OAAcC,SAAAA;AACvC,SAAOD,MAAM6B,QAAQ5B,IAAAA,EAAMyC,OACzB,CAACC,KAAuBC,QAAAA;AACtB,QAAIA,IAAIhC,WAAWqB,gBAAgB,QAAQ;AACzC,aAAOU;IACT;AAEAA,QAAId,QAAQgB,KAAKD,GAAAA;AACjB,QAAI,CAACE,UAASF,GAAAA,GAAM;AAClB,YAAMG,cAAc/C,MAAM6B,QAAQe,GAAAA;AAClCD,UAAIK,eAAeJ,IAAInC,EAAE,IAAIsC;IAC/B;AACA,WAAOJ;EACT,GACA;IAAEd,SAAS,CAAA;IAAImB,gBAAgB,CAAC;EAAE,CAAA;AAEtC;AAEO,IAAMC,2BAA2B,CAACjD,OAAcC,SAAAA;AACrD,SAAOiD,QAAQC,IAAI;IAACC,eAAepD,OAAOC,IAAAA;IAAOoD,cAAcrD,OAAOC,IAAAA;GAAM;AAC9E;AAEO,IAAMmD,iBAAiB,CAACpD,OAAcC,SAAAA;AAC3C,SAAOD,MAAMsD,OAAOrD,MAAM,UAAA;AAC5B;AAEO,IAAMoD,gBAAgB,CAACrD,OAAcC,SAAAA;AAC1C,SAAOiD,QAAQC,IAAI;IAACnD,MAAMsD,OAAOrD,MAAM,YAAYsD,WAAAA;IAAcvD,MAAMsD,OAAOrD,MAAM,YAAYuD,iBAAAA;GAAmB;AACrH;AAEO,IAAMC,aAAa,CAACC,SAAAA;AACzB,MAAIA,KAAK9C,WAAWqB,gBAAgB,cAAc;AAChD,WAAO;EACT,WAAW0B,aAAaD,IAAAA,GAAO;AAC7B,WAAO;EACT,WAAWA,KAAK9C,WAAWqB,gBAAgB,cAAc;AACvD,WAAO;EACT,OAAO;AACL,WAAO;EACT;AACF;AAIA,IAAM2B,sBACJ;AASK,IAAMC,6BAA6B,CAACC,UAAAA;AAEzC,QAAMC,aAAaC,MAAMC,KAAKH,KAAAA;AAG9B,QAAMI,SAAS;IAAC;IAAI;;AACpB,MAAIC,aAAa;AAEjB,WAASC,IAAI,GAAGA,IAAIL,WAAW3D,QAAQgE,KAAK;AAC1C,UAAMC,OAAON,WAAWK,CAAAA;AAExB,QAAIR,oBAAoBU,KAAKD,IAAAA,GAAO;AAClC,UAAI,CAACF,YAAY;AACfD,eAAO,CAAA,IAAKG;AACZF,qBAAa;MACf,OAAO;AAEL,cAAMI,cAAcR,WAAW/C,MAAMkD,OAAO,CAAA,EAAG9D,QAAQgE,CAAAA,EAAGI,KAAK,EAAA;AAC/D,YAAI,kBAAkBF,KAAKC,WAAAA,GAAc;AACvCL,iBAAO,CAAA,IAAKG;AACZ;QACF;MACF;IACF;EACF;AAEA,SAAOH;AACT;;;ACjLA,SAASO,0BAA0B;AACnC,SAASC,0BAA4C;AACrD,SAASC,iBAAiB;AAC1B,OAAOC,WAASC,QAAAA,OAAMC,eAAAA,cAAaC,aAAAA,YAAWC,WAAAA,gBAAe;AAE7D,SACEC,gBAAAA,eACAC,gBAAAA,eACAC,SACAC,eAAAA,cACAC,eACAC,uBAAAA,sBACAC,aAAAA,kBACK;AACP,SAASC,YAAAA,WAAUC,gBAAAA,qBAA+B;AAClD,SAASC,cAAcC,eAAe;AACtC,SAASC,iBAAAA,sBAAqB;AAC9B,SAASC,kBAAyD;AAClE,SAASC,MAAAA,WAAU;AACnB,SAASC,iBAAiB;;;ACnB1B,OAAOC,UAASC,WAAAA,gBAAe;AAE/B,SAASC,QAAAA,aAAY;AACrB,SAASC,kBAAkB;;;ACH3B,OAAOC,UAA0BC,aAAaC,WAAAA,gBAAe;AAE7D,SAASC,gBAAAA,eAAcC,gBAAAA,eAAcC,uBAAAA,4BAA2B;AAEhE,SAASC,QAAAA,OAAMC,qBAAAA,oBAAmBC,SAASC,eAAeC,aAAaC,kBAAAA,uBAAsB;AAC7F,SAASC,YAAY;AACrB,SAASC,MAAAA,WAAU;;;ACNnB,SAASC,eAAeC,kBAAkB;AAE1C,SAASC,aAAa;AAIf,IAAMC,iBAAiBC,8BAA0C,IAAA;AAEjE,IAAMC,oBAAoB,MAAMC,WAAWH,cAAAA,KAAmBI,MAAM,IAAIC,MAAM,0BAAA,CAAA;;;ACRrF,SAASC,iBAAiB;AAMnB,IAAMC,qBAAqB,CAACC,SAAAA;AACjC,QAAM,EAAEC,gBAAe,IAAKC,kBAAAA;AAC5BC,YAAU,MAAA;AACR,UAAMC,QAAQC,sBAAsB,MAAA;AAClC,UAAIL,MAAM;AACR,aAAKC,kBAAkBD,IAAAA;MACzB;IACF,CAAA;AACA,WAAO,MAAMM,qBAAqBF,KAAAA;EACpC,GAAG;IAACJ;GAAK;AACX;;;AFKA,IAAMO,iBAAiB,CAAC,EAAEC,MAAMC,QAAQC,KAAI,GAAiBC,SAAAA;AAC3D,QAAM,EAAEC,KAAKC,aAAaC,UAAUC,UAAS,IAAKC,kBAAAA;AAClD,QAAM,EAAEC,iBAAiBC,SAAQ,IAAKC,qBAAAA;AACtC,QAAM,EAAEC,uBAAsB,IAAKC,YAAYC,cAAAA;AAC/C,QAAM,CAACC,IAAAA,IAAQC,cAAc,MAAM;IAAEC,KAAK;EAAM,CAAA;AAEhD,SAAOC,YACL,CAACC,UAAAA;AACC,YAAQhB,MAAAA;MACN,KAAK;AAGH,aAAKO,SACHU,cAAaC,cAAaC,eAAe;UACvCC,MAAM;UACNC,SAAS;YACPC,OACEzB,KAAK0B,OAAOtB,MACRQ,2BAA2B,aACzBG,OACE,cACA,WACF,aACF;UACR;QACF,CAAA,CAAA;AAEF,eAAOV,cAAcL,IAAAA;MACvB,KAAK;AACH,eAAOM,WAAW;UAAEN;UAAME;UAAMyB,SAAS,CAACpB,UAAUL,MAAMF,IAAAA;UAAO4B,QAAQT,MAAMU;QAAO,CAAA;MACxF,KAAK,UAAU;AACb,cAAM,EACJC,MAAMC,QACNC,YAAY,EAAEC,OAAM,EAAE,IACpBjC;AACJ,eAAO+B,SAASE,SAAS;UAAEC,MAAMjC;UAAQgC;QAAO,IAAI;UAAEC,MAAMjC;QAAO,CAAA;MACrE;IACF;EACF,GACA;IAACD;IAAMG;IAAMG;IAAUC;IAAWN;IAAQG;IAAKQ;IAAwBG;IAAML;GAAS;AAE1F;AAEA,IAAMyB,gBAAwC;EAC5CC,IAAI;AACN;AAEA,IAAMC,SAAS,CAAC,EAAErC,MAAMC,QAAQC,MAAMoC,OAAM,MAAe;AACzD,QAAM,EAAEC,EAAC,IAAKC,gBAAe1B,cAAAA;AAC7B,QAAMX,OAAOsC,WAAWzC,IAAAA;AACxB,QAAM0C,WAAWC,SAAQ,MAAM;OAAIzC;IAAMF,KAAK0B;KAAK;IAAC1B,KAAK0B;IAAIxB;GAAK;AAClE,QAAM,EAAE0C,SAAQ,IAAKpC,kBAAAA;AACrB,QAAM,EAAEkB,IAAImB,OAAM,IAAKD,WAAW5C,MAAME,IAAAA,KAAS,CAAC;AAClD,QAAM4C,OAAO3C,SAAS,eAAe,OAAOA,SAAS,QAAQ4C,KAAKC,eAAe;AACjF,QAAMC,cAAclD,eAAe;IAAEC;IAAME,MAAMwC;IAAUzC;EAAO,GAAGE,IAAAA;AACrE,QAAM+C,YACJ/C,SAAS,QACL;IAAEgD,OAAOnD,KAAK0B;IAAI0B,UAAU;IAAGC,SAASJ;IAAa,eAAeJ;IAAQ,eAAenB;EAAG,IAC9FvB,SAAS,eACP;IAAEkD,SAASJ;IAAa,eAAeJ;IAAQ,eAAenB;EAAG,IACjE;IAAE2B,SAASJ;EAAY;AAC/B,QAAMK,kBAAkBC,mBAAkBvD,KAAKgC,WAAWwB,OAAOjB,CAAAA;AACjE,QAAMkB,MAAMzD,KAAKgC,WAAWyB,OAAO;AACnC,QAAMC,cAAcf,SAClB,MAAOxC,SAAS,QAAQwD,2BAA2BL,eAAAA,EAAiBM,KAAK,EAAA,IAAM,CAAA,GAC/E;IAACzD;IAAMH,KAAKgC,WAAWwB;IAAOjB;GAAE;AAGlC,SACE,gBAAAsB,OAAA,cAACC,QAAQhB,MAAI;IAACiB,eAAe;KAC3B,gBAAAF,OAAA,cAACC,QAAQE,SAAO;IAACC,SAAAA;KACf,gBAAAJ,OAAA,cAACf,MAAAA;IACE,GAAII;IACLgB,aAAW/D;IACXgE,WAAWC,IACT,mHACAjC,cAAcnC,KAAKgC,WAAWqC,YAAY,CAAC;KAG5ClE,SAAS,gBACR,gBAAA0D,OAAA,cAACS,OAAAA;IACCC,MAAK;IACLJ,WAAWC,IACT,mEACAjE,SAAS,SAASmC,SAAS,YAAY,gBACvCA,SACI,kFACA,8CAAA;IAEL,GAAImB,OAAO;MAAEe,OAAO;QAAEC,YAAY,YAAYhB,GAAAA;MAAc;IAAE;MAGnE,gBAAAI,OAAA,cAACS,OAAAA;IACCC,MAAK;IACLJ,WAAU;MAEXhE,SAAS,SAASH,KAAKgC,WAAW0C,gBAAgB,YACjD,gBAAAb,OAAA,cAACc,QAAAA;IACCJ,MAAK;IACLJ,WAAU;IACT,GAAIV,OAAO;MAAEe,OAAO;QAAEI,OAAO,YAAYnB,GAAAA;MAAkB;IAAE;KAE7DC,WAAAA,IAGH1D,KAAKgC,WAAW6C,QACd,gBAAAhB,OAAA,cAACiB,OAAAA;IAAKD,MAAM7E,KAAKgC,WAAW6C;IAAME,MAAMzC,SAAS,IAAI;IAAG0C,YAAW;MAGvE,gBAAAnB,OAAA,cAACc,QAAAA;IAAKjD,IAAI,GAAG1B,KAAK0B,EAAE;IAAWyC,WAAU;KACtCb,eAAAA,CAAAA,CAAAA,GAIP,gBAAAO,OAAA,cAACC,QAAQmB,QAAM,MACb,gBAAApB,OAAA,cAACC,QAAQoB,SAAO;IAACC,MAAK;KACnB7B,iBACD,gBAAAO,OAAA,cAACC,QAAQsB,OAAK,IAAA,CAAA,CAAA,CAAA;AAKxB;AAEA,IAAMC,eAAe,CAAC,EAAErF,MAAME,MAAMD,OAAM,MAAe;AACvD,QAAMqF,iBAAiB9E,kBAAAA;AACvB+E,qBAAmBvF,IAAAA;AACnB,QAAMwF,kBAAkBF,eAAeG,SAASzF,IAAAA;AAChD,QAAM0F,YAAY/C,SAAQ,MAAM;OAAIzC;IAAMF,KAAK0B;KAAK;IAAC1B,KAAK0B;IAAIxB;GAAK;AACnE,QAAM,EAAEwB,IAAImB,OAAM,IAAKyC,eAAe1C,WAAW5C,MAAME,IAAAA,KAAS,CAAC;AACjE,SACE,gBAAA2D,OAAA,cAACS,OAAAA;IACCC,MAAK;IACLJ,WAAU;IACVwB,mBAAiB,GAAG3F,KAAK0B,EAAE;IAC3BkE,eAAalE;IACbmE,eAAahD;KAIZ2C,gBAAgBM,IAAI,CAACC,mBACpB,gBAAAlC,OAAA,cAACxB,QAAAA;IAAO2D,KAAKD,eAAerE;IAAI1B,MAAM+F;IAAgB9F,QAAQD;IAAME,MAAMwF;;AAIlF;AAEO,IAAMO,SAAS,CAAC,EACrBC,eACAC,aACAlG,QACAC,KAAI,MAML;AACC,SACE,gBAAA2D,OAAA,cAACd,KAAKqD,SAAO;IAACpB,YAAW;KACvB,gBAAAnB,OAAA,cAACS,OAAAA;IACCC,MAAK;IACLJ,WAAU;KAET+B,cAAcJ,IAAI,CAAC9F,SAAAA;AAClB,QAAIyC,WAAWzC,IAAAA,MAAU,cAAc;AACrC,aAAO,gBAAA6D,OAAA,cAACwB,cAAAA;QAAaW,KAAKhG,KAAK0B;QAAI1B;QAAYC;QAAgBC;;IACjE,OAAO;AACL,aAAO,gBAAA2D,OAAA,cAACxB,QAAAA;QAAO2D,KAAKhG,KAAK0B;QAAI1B;QAAYC;QAAgBC;;IAC3D;EACF,CAAA,CAAA,GAEF,gBAAA2D,OAAA,cAACS,OAAAA;IAAIC,MAAK;IAAOJ,WAAU;KACxBgC,YACEE,OAAO,CAACrG,SAASyC,WAAWzC,IAAAA,MAAU,YAAA,EACtC8F,IAAI,CAAC9F,SACJ,gBAAA6D,OAAA,cAACxB,QAAAA;IAAO2D,KAAKhG,KAAK0B;IAAI1B;IAAYC;IAAgBC;IAAYoC,QAAAA;QAGpE,gBAAAuB,OAAA,cAACS,OAAAA;IAAIC,MAAK;IAAOJ,WAAU;KACzB,gBAAAN,OAAA,cAACyC,YAAAA,IAAAA,CAAAA,GAEH,gBAAAzC,OAAA,cAACS,OAAAA;IACCC,MAAK;IACLJ,WAAU;IACVK,OAAO;MACLC,YACE;IACJ;;AAIR;;;AGrNA,OAAO8B,UAASC,WAAAA,gBAAe;AAE/B,SAASC,iBAAiB;AAE1B,SAASC,qBAAAA,oBAAmBC,kBAAAA,uBAAsB;AAClD,SAASC,YAAY;AACrB,SAASC,QAAAA,aAAY;;;ACNrB,OAAOC,UAASC,UAAUC,YAAY;AAEtC,SAASC,YAAAA,iBAAgB;AACzB,SAASC,SAASC,qBAAAA,oBAAmBC,UAAUC,kBAAAA,uBAAsB;;;ACHrE,OAAOC,UAAgCC,cAAc;AAGrD,SAASC,kBAAAA,iBAAgBC,qBAAAA,oBAAmBC,kBAAkB;AAC9D,SAASC,cAAcC,oBAAmC;AAC1D,SAASC,sBAAsBC,0BAA0BC,MAAAA,WAAU;AAcnE,IAAMC,eAAe;AAErB,IAAMC,oBAAoB;EACxBC,MAAM;EACNC,SAAS;AACX;AAEO,IAAMC,gCAAgC,CAAC,EAC5CC,OACAC,MACAC,QACAC,aACAC,SAAQ,MACmB;AAC3B,QAAM,EAAEC,EAAC,IAAKC,gBAAeC,cAAAA;AAC7B,QAAMC,sBAAsBC,OAAgB,KAAA;AAC5C,SACE,gBAAAC,OAAA,cAACC,cAAAA;IAAaP;KACZ,gBAAAM,OAAA,cAACE,aAAaC,MAAI;IAACC,OAAOX;IAA2BK;KACnD,gBAAAE,OAAA,cAACE,aAAaG,SAAO;IAACC,SAAAA;KACpB,gBAAAN,OAAA,cAACO,YAAAA;IACE,GAAGrB;IACJsB,YAAYC,IAAG,qCAAqCC,sBAAsBC,wBAAAA;IAC1EC,SAAQ;IACRrB,MAAMA,QAAQN;IACd4B,UAAAA;IACAvB,OAAOwB,mBAAkBxB,OAAOK,CAAAA;IAChCoB,eAAavB;IACbM;;AAMZ;AAEO,IAAMkB,8BAA8B,CAAC,EAC1CC,QACAC,YAAY,EAAEC,UAAUC,QAAQ5B,QAAQD,MAAMqB,UAAU,SAASC,WAAW,KAAI,IAAK;EAAEvB,OAAO;AAAQ,GACtG+B,MAAMC,QACNC,UAAS,MACyE;AAClF,SACE,gBAAAvB,OAAA,cAACO,YAAAA;IACE,GAAGrB;IACJ0B;IACAJ,YAAYC,IACV,YACAC,sBACAC,0BACAE,WAAW,6BAA6B,4BAAA;IAE1CtB,MAAMA,QAAQN;IACd4B;IACAvB,OAAOiC;IACPJ;IACAK,SAAS,CAACC,UAAAA;AACR,UAAIN,UAAU;AACZ;MACF;AACAM,YAAMC,gBAAe;AACrB,WAAKJ,SAASF,SAAS;QAAEO,MAAMV;QAAQG;MAAO,IAAI;QAAEO,MAAMV;MAAO,CAAA;IACnE;IACAF,eAAavB;;AAGnB;AAEO,IAAMoC,oBAAoB,CAAC,EAAEC,YAAYpC,aAAawB,QAAQU,MAAM,GAAGG,MAAAA,MAAmC;AAC/G,QAAM,EAAEnC,EAAC,IAAKC,gBAAeC,cAAAA;AAE7B,QAAMkC,mBAAmBtC,aAAauC,WAAW,KAAKvC,YAAY,CAAA;AAClE,QAAM8B,YAAYT,mBAAkBiB,mBAAmBA,iBAAiBb,WAAY5B,QAAQwC,MAAMxC,OAAOK,CAAAA;AAEzG,SAAOkC,cAAcpC,aAAauC,WAAW,IAC3C,gBAAAhC,OAAA,cAACgB,6BAAAA;IAA4BO;IAAsBN,QAAQU;IAAO,GAAGlC,YAAY,CAAA;OAEjF,gBAAAO,OAAA,cAACX,+BAAAA;IACE,GAAGyC;IACJxC,OAAOiC;IACPN,QAAQU;IACRlC;IACAC,UAAU,CAACuC,WAAWA,OAAOZ,OAAOS,MAAMV,SAAS;MAAEO;MAAMP,QAAQU,MAAMV;IAAO,IAAI;MAAEO;IAAK,CAAA;;AAGjG;;;AD5FO,IAAMO,qBAAqBC,qBAAK,CAAC,EAAEC,MAAMC,MAAMC,KAAI,MAA2B;AACnF,QAAM,EAAEC,EAAC,IAAKC,gBAAeC,cAAAA;AAC7B,QAAM,EAAEC,YAAAA,aAAYC,eAAeC,SAASC,gBAAe,IAAKC,kBAAAA;AAEhE,QAAMC,QAAQX,KAAKY,SAAS;AAE5B,QAAM,EAAEC,SAASC,UAAUC,eAAc,IAAKT,YAAWL,IAAAA;AACzD,QAAM,CAACe,eAAe,GAAGC,gBAAAA,IAAoBH,SAASI,SAAS,CAACC,GAAGC,MACjED,EAAEE,YAAYC,gBAAgB,YAAY,KAAK,CAAA;AAGjD,QAAMT,WAAWG,eAAeK,YAAYC,gBAAgB,YAAYL,mBAAmBH,UACxFS,QAAQ,CAACC,WAAYC,UAASD,MAAAA,IAAU;IAACA;MAAU,CAAA,CAAE,EACrDE,OAAO,CAACF,WAAW,CAACA,OAAOH,YAAYM,MAAAA;AAE1C,QAAMC,aAAanB,oBAAoB,eAAeoB,aAAAA,IAAiB5B,KAAK6B,EAAE,KAAKC,QAAQC,SAASC;AAEpGC,qBAAmBjC,IAAAA;AACnBiC,qBAAmBlB,iBAAiB,CAACS,UAAST,aAAAA,IAAiBA,gBAAgBmB,MAAAA;AAE/E,SACE,gBAAAC,OAAA,cAACC,OAAAA;IAAIC,MAAK;IAAOC,WAAU;KACxBvB,eAAeK,YAAYC,gBAAgB,aAAa,CAACN,eAAeK,YAAYmB,WACnF,gBAAAJ,OAAA,cAACK,mBAAAA;IACCC,QAAQ1B,cAAcK,YAAYqB;IAClCC,OAAOC,mBAAkB5B,cAAcK,YAAYsB,OAAOxC,CAAAA;IAC1D0C,MAAM7B,cAAcK,YAAYwB,QAAQ;IACxCC,QAAQ7C;IACR8C,YAAYtB,UAAST,aAAAA;IACrBgC,aAAavB,UAAST,aAAAA,IAAiB;MAACA;QAAiBD,eAAeC,cAAcc,EAAE;IACxFmB,UAAUjC,cAAcK,YAAY4B;IACpCC,QAAQrB;OAGV,gBAAAO,OAAA,cAACe,SAASC,MAAI,IAAA,GAEhB,gBAAAhB,OAAA,cAACR,YAAAA,MACEf,QAAQD,SAAS,IAChB,gBAAAwB,OAAA,cAACK,mBAAAA;IACCC,QAAQ,gCAAgC/B,KAAAA;IACxCgC,OAAOxC,EAAE,yBAAA;IACT0C,MAAK;IACLC,QAAQ7C;IACR+C,aAAanC;IACboC,UAAS;IACTC,QAAQrB;OAGV,gBAAAO,OAAA,cAACe,SAASC,MAAI,IAAA,CAAA,GAGjB5C,WAAW,gBAAA4B,OAAA,cAAC5B,SAAAA;IAAQ6C,MAAMpD;IAAMC;;AAGvC,CAAA;;;ADlDA,IAAMoD,UAAU,CAAC,EAAEC,MAAMC,MAAMC,cAAa,MAAgB;AAC1D,QAAMC,SAASC,UAAAA;AACf,QAAMC,iBAAiBC,kBAAAA;AACvB,QAAM,EAAEC,EAAC,IAAKC,gBAAeC,cAAAA;AAC7B,SACE,gBAAAC,OAAA,cAACC,MAAKC,UAAQ;IACZC,KAAKb,KAAKc;IACVC,OAAOf,KAAKc;IACZE,YAAY;MACV;MACAhB,KAAKc,OAAOZ,iBAAiB;;IAE/Be,UAAU;IACT,GAAI,CAACd,OAAOe,eAAe;MAAEC,OAAO;IAAO;KAE3CnB,KAAKc,OAAOZ,iBACX,gBAAAQ,OAAA,cAAAA,OAAA,UAAA,MACE,gBAAAA,OAAA,cAACU,MAAAA;IAAGC,WAAU;KACZ,gBAAAX,OAAA,cAACY,QAAAA;IAAKD,WAAU;KAAkCE,mBAAkBvB,KAAKwB,WAAWC,OAAOlB,CAAAA,CAAAA,GAC3F,gBAAAG,OAAA,cAACgB,oBAAAA;IAAmBzB;IAAYD;IAAY2B,MAAAA;OAE9C,gBAAAjB,OAAA,cAACkB,OAAAA;IAAIC,MAAK;IAAOR,WAAU;KACzB,gBAAAX,OAAA,cAACoB,MAAAA;IACE,GAAGzB;IACJS,IAAId,KAAKc;IACTiB,MAAM/B;IACNC;IACA+B,aAAa;IACbC,WAAAA;IACAC,qBAAoB;IACpBC,eAAeT;;AAO7B;AAEA,IAAMU,oBAAoB,CAAC,EAAEpC,MAAMC,MAAMC,cAAa,MAAgB;AACpE,QAAM,EAAEmC,SAAQ,IAAK/B,kBAAAA;AACrBgC,qBAAmBtC,IAAAA;AACnB,QAAMuC,kBAAkBF,SAASrC,IAAAA;AACjC,QAAMwC,YAAYC,SAAQ,MAAM;OAAIxC;IAAMD,KAAKc;KAAK;IAACd,KAAKc;IAAIb;GAAK;AACnE,SACE,gBAAAS,OAAA,cAAAA,OAAA,UAAA,MACG6B,gBACEG,OAAO,CAAC1C,UAAS2C,WAAW3C,KAAAA,MAAU,KAAA,EACtC4C,IAAI,CAAC5C,UACJ,gBAAAU,OAAA,cAACX,SAAAA;IAAQc,KAAKb,MAAKc;IAAId,MAAMA;IAAMC,MAAMuC;IAAWtC;;AAI9D;AAEO,IAAM2C,WAAW,CAAC,EACvBC,eACA7C,MACAC,cAAa,MAKd;AACC,SACE,gBAAAQ,OAAA,cAAAA,OAAA,UAAA,MACGoC,cAAcF,IAAI,CAAC5C,SAAAA;AAClB,UAAM+C,OAAOJ,WAAW3C,IAAAA;AACxB,YAAQ+C,MAAAA;MACN,KAAK;AACH,eAAO,gBAAArC,OAAA,cAAC0B,mBAAAA;UAAkBvB,KAAKb,KAAKc;UAAId;UAAYC;UAAYC;;MAClE,KAAK;AACH,eAAO,gBAAAQ,OAAA,cAACX,SAAAA;UAAQc,KAAKb,KAAKc;UAAId;UAAYC;UAAYC;;MACxD;AACE,eAAO;IACX;EACF,CAAA,CAAA;AAGN;;;AJpFO,IAAM8C,gBAAgB;AAEtB,IAAMC,UAAU,CAAC,EAAEC,IAAIC,KAAI,MAAgB;AAChD,QAAM,EAAEC,UAAUC,IAAG,IAAKC,kBAAAA;AAC1B,QAAMC,kBAAkBH,SAASD,MAAM,MAAA;AACvC,QAAMK,sBAAsBJ,SAASD,MAAM,YAAA;AAC3C,QAAMM,qBAAqBL,SAASD,MAAM,WAAA;AAC1C,QAAMO,qBAAqBN,SAASD,MAAM,YAAA;AAC1C,QAAMQ,UAAUC,SACd,MAAM;OAAIL;OAAoBC;OAAwBC;OAAuBC;KAC7E;IAACH;IAAiBC;IAAqBC;IAAoBC;GAAmB;AAEhF,QAAMG,cAAcT,SAASD,MAAM,SAAA,EAAWW,SAAS,CAACC,GAAGC,MAAMC,WAAWF,EAAEG,YAAYF,EAAEE,UAAU,CAAA;AACtG,QAAMC,gBAAgBP,SAAQ,MAAM;OAAID;OAAYE;KAAc;IAACF;IAASE;GAAY;AAExFO,qBAAmBjB,IAAAA;AACnB,QAAMkB,OAAOT,SAAQ,MAAM;IAACV;KAAK;IAACA;GAAG;AAErC;;IAEE,gBAAAoB,OAAA,cAACC,MAAKC,MAAI;MAACC,OAAOpB;MAAKqB,aAAY;MAAWC,iBAAgB;MAAYC,YAAW;OACnF,gBAAAN,OAAA,cAACO,QAAAA;MAAOV,eAAeR;MAASE;MAA0BQ;MAAYS,QAAQ3B;QAC9E,gBAAAmB,OAAA,cAACS,UAAAA;MAASZ;MAA8BE;MAAYW,eAAe3B;;;AAGzE;;;AOpCA,SAAS4B,YAAY;AAEd,IAAMC,kBAAkBC,KAAK,MAAM,OAAO,kCAAA,CAAA;AAC1C,IAAMC,iBAAiBD,KAAK,MAAM,OAAO,gCAAA,CAAA;AACzC,IAAME,YAAWF,KAAK,MAAM,OAAO,yBAAA,CAAA;AACnC,IAAMG,eAAeH,KAAK,MAAM,OAAO,8BAAA,CAAA;AACvC,IAAMI,QAAQJ,KAAK,MAAM,OAAO,sBAAA,CAAA;;;AR+BhC,IAAMK,YAAY;AAEzB,IAAMC,gBAAgB,CAAC,EAAEC,MAAMC,KAAI,MACjC,gBAAAC,QAAA,cAACC,SAAAA;EAAQC,MAAK;EAAmBC,MAAM;IAAEC,IAAIN,KAAKM;IAAIC,SAASP,KAAKK;IAAMJ;EAAK;EAAGO,OAAO;;AAQpF,IAAMC,mBAAmBC,gBAAAA,MAAK,CAAC,EAAEC,KAAKC,iBAAiBC,OAAM,MAAyB;AAC3F,QAAM,CAACC,IAAAA,IAAQC,eAAc,MAAM;IAAEC,KAAK;EAAM,CAAA;AAChD,QAAM,EAAEC,iBAAiBC,SAAQ,IAAKC,qBAAAA;AACtC,QAAM,EAAEC,MAAK,IAAKC,aAAAA;AAClB,QAAMC,SAASC,WAAAA;AACf,QAAM,EAAEC,QAAQC,WAAWC,QAAO,IAAKC,cAAcC,oBAAoBC,KAAK;AAE9E,QAAMC,cAAaC,aAAY,CAAC/B,SAAegC,WAAkBZ,OAAOpB,IAAAA,GAAO;IAACoB;GAAM;AAEtF,QAAMa,WAAWF,aACf,CAAC/B,MAAakC,gBAAAA;AACZ,WAAOd,MAAMe,MAAMnC,QAAQoB,MAAMgB,MAAM;MACrCC,QAAQ,CAACrC,UAAAA;AACP,eAAOsC,UAAU,MAAA;AACf,gBAAMC,SAASC,cAAaxC,KAAAA;AAC5B,cAAI,CAACkC,aAAa;AAChB,mBAAO,CAACK,UAAUvC,MAAKyC,WAAWP,gBAAgB;UACpD;AAEA,iBAAOlC,MAAKyC,WAAWP,gBAAgBA;QACzC,CAAA;MACF;IACF,CAAA;EACF,GACA;IAACd;GAAM;AAGT,QAAMsB,WAAWX,aACf,CAAC/B,MAAY2C,SAAAA;AACX,UAAMC,WAAWC,YAAYzB,OAAOpB,MAAM8C,QAAWH,IAAAA;AACrD,UAAMI,WACJH,SAASI,SAAS,IAAIJ,SAASK,IAAI,CAAC,EAAE3C,GAAE,MAAOA,EAAAA,IAAMN,KAAKyC,WAAWrC,SAAS,WAAW,CAAA,IAAK0C;AAChG,WAAO;MACLxC,IAAIN,KAAKM;MACT4C,OAAOlD,KAAKyC,WAAWS,SAASlD,KAAKM;MACrCyC;MACAI,MAAMnD,KAAKyC,WAAWU;MACtBC,UAAUpD,KAAKyC,WAAWW;MAC1BC,WAAWC,IAAGtD,KAAKyC,WAAWc,YAAY,UAAUvD,KAAKyC,WAAWY,SAAS;MAC7EG,kBAAkBxD,KAAKyC,WAAWe;MAClCC,QAAQzD,KAAKyC,WAAWgB;IAC1B;EACF,GACA;IAACrC;GAAM;AAGT,QAAMsC,kBAAkB3B,aACtB,CAAC/B,SAAAA;AACC,SAAK2D,cAAcvC,OAAOpB,IAAAA;AAC1B,QAAI,CAACwC,cAAaxC,IAAAA,GAAO;AACvB,WAAK4D,eAAexC,OAAOpB,IAAAA,EAAM6D,KAAK;;QAEpCC,QAAQC,IACNlB,YAAYzB,OAAOpB,IAAAA,EAAMgE,QAAQ,CAACC,UAAU;UAACN,cAAcvC,OAAO6C,KAAAA;UAAQL,eAAexC,OAAO6C,KAAAA;SAAO,CAAA;OAAA;IAG7G;EACF,GACA;IAAC7C;GAAM;AAGT,QAAM8C,eAAenC,aACnB,CAAC,EAAEoC,MAAM,EAAE7D,GAAE,GAAIqC,MAAM1C,KAAI,MAAiD;AAE1EyB,YAAQiB,MAAM,QAAQ1C,IAAAA;AAEtB,QAAImB,OAAO;AACT,YAAMpB,OAAOoB,MAAMgD,SAAS9D,EAAAA;AAC5B,aAAON,QAAQqE,yBAAyBjD,OAAOpB,IAAAA;IACjD;EACF,GACA;IAACoB;GAAM;AAGT,QAAMkD,cAAcvC,aAClB,OAAO/B,SAAAA;AACL,UAAMkB,SAASqD,cAAaC,cAAaC,iBAAiB;MAAEC,MAAM;MAAanE,SAASP,KAAKM;IAAG,CAAA,CAAA;AAEhG,QAAIgB,OAAOqD,OAAO3B,WAAW,GAAG;AAC9B,YAAM,CAACmB,IAAAA,IAAQlC,SAASjC,IAAAA,EAAMqC,OAAO,CAACrC,UAAS,CAACwC,cAAaxC,KAAAA,CAAAA;AAC7D,UAAImE,MAAM;AACR,cAAMjD,SAASqD,cAAaC,cAAaI,MAAM;UAAEF,MAAM;UAAQnE,SAAS;YAAC4D,KAAK7D;;QAAI,CAAA,CAAA;MACpF;IACF;EACF,GACA;IAACY;IAAUI;GAAO;AAGpB,QAAMuD,UAAU9C,aAAY,CAAC+C,QAAkBC,WAAAA;AAC7C,UAAMC,aAAaF,OAAOX;AAC1B,UAAMc,aAAaF,OAAOZ;AAC1B,QAAIe,QAAQD,WAAW5E,IAAI,GAAG;AAE5B,aAAO8E,aAAaH,WAAW3E,IAAI,KAAK6E,QAAQF,WAAW3E,IAAI;IACjE,WAAW8E,aAAaF,WAAW5E,IAAI,GAAG;AACxC,aAAO8E,aAAaH,WAAW3E,IAAI;IACrC,OAAO;AACL,aAAO;IACT;EACF,GAAG,CAAA,CAAE;AAEL,QAAM+E,eAAerD,aACnB,CAAC,EAAEoC,MAAMnE,MAAM2C,MAAM0C,OAAM,MAAmD;AAC5E,QAAI,CAACrF,KAAKK,MAAM;AACd;IACF;AAEA,QAAIiF,UAAStF,IAAAA,GAAO;AAClB,YAAM,CAACuF,MAAAA,IAAUnE,MAAMe,MAAMnC,MAAM;QAAEwF,UAAU;MAAU,CAAA;AACzD,YAAMD,UAAUvF,KAAKK,KAAK;QAAEL,MAAMuF;QAAQE,QAAQC;MAAc,CAAA;AAChE;IACF;AAEA,UAAMC,UAAUlE,UAAUkB,MAAM3C,IAAAA;AAChC,QAAI,CAAC2F,SAAS;AACZ,WAAKzE,SACHqD,cAAaC,cAAaI,MAAM;QAC9BF,MAAM;QACNnE,SAAS;UAACP,KAAKM;;QACfsF,SAAS;UAAEC,KAAK7F,KAAKyC,WAAWoD;QAAI;MACtC,CAAA,CAAA;IAEJ,WAAWR,QAAQ;AACjB,WAAKnE,SACHqD,cAAaC,cAAasB,OAAO;QAAEpB,MAAM;QAAQnE,SAAS;UAACP,KAAKM;;QAAKsF,SAAS;UAAEG,OAAO;QAAM;MAAE,CAAA,CAAA;IAEnG,OAAO;AACL,WAAK7E,SAASqD,cAAaC,cAAawB,gBAAgB;QAAEtB,MAAM;QAAWnE,SAASP,KAAKM;MAAG,CAAA,CAAA;IAC9F;AAEA,UAAM2F,gBAAgB7E,MAAM8E,QAAQlG,IAAAA,EAAMmG,KAAK,CAAC5D,WAAWA,OAAOE,YAAYP,gBAAgB,SAAA;AAC9F,QAAIoD,UAASW,aAAAA,GAAgB;AAC3B,WAAMA,cAAc5F,KAAI;IAC1B;AAEA,QAAI,CAACS,MAAM;AACT,WAAKI,SAASqD,cAAaC,cAAa4B,eAAe;QAAE1B,MAAM;QAAWkB,SAAS;UAAEG,OAAO;QAAS;MAAE,CAAA,CAAA;IACzG;EACF,GACA;IAAC3E;IAAOF;IAAUO;IAAWX;GAAK;AAIpCuF,EAAAA,WAAU,MAAA;AACR,WAAOC,mBAAmB;MACxBC,YAAY,CAAC,EAAEzB,OAAM,MAAO0B,WAAW1B,OAAOzE,IAAI;MAClDoG,QAAQ,CAAC,EAAEC,UAAU5B,OAAM,MAAE;AAE3B,YAAI,CAAC4B,SAASf,QAAQgB,YAAY3D,QAAQ;AACxC;QACF;AACA,cAAM+B,SAAS2B,SAASf,QAAQgB,YAAY,CAAA;AAC5C,cAAMC,cAAkCC,mBAAmB9B,OAAO1E,IAAI;AACtE,YAAIuG,gBAAgB,QAAQA,YAAYE,SAAS,uBAAuB;AACtE,gBAAM9B,aAAaF,OAAOzE,KAAK8D;AAC/B,gBAAMc,aAAaF,OAAO1E,KAAK8D;AAC/B,gBAAM4C,aAAajC,OAAOzE,KAAKsC;AAC/B,gBAAMqE,aAAajC,OAAO1E,KAAKsC;AAC/B,gBAAMsE,YACJF,WAAWG,MAAM,GAAG,EAAC,EAAGC,KAAI,MAAOH,WAAWE,MAAM,GAAG,EAAC,EAAGC,KAAI,KAAMP,YAAYE,SAAS,eACtF,cACAM,0BAA0BhG,OAAO4D,YAAYgC,YAAY/B,UAAAA;AAC/D,gBAAMoC,eAAeC,UAAUlG,OAAO4D,YAAY+B,UAAAA;AAClD,gBAAMQ,eAAeD,UAAUlG,OAAO6D,YAAY+B,UAAAA;AAClD,gBAAMQ,cAAcvF,SAASoF,YAAAA;AAC7B,gBAAMI,cAAcxF,SAASsF,YAAAA;AAC7B,gBAAMG,cAAcF,YAAYG,UAAU,CAAC,EAAErH,GAAE,MAAOA,OAAO0E,WAAW1E,EAAE;AAC1E,gBAAMsH,cAAcH,YAAYE,UAAU,CAAC,EAAErH,GAAE,MAAOA,OAAO2E,WAAW3E,EAAE;AAC1E,gBAAMuH,iBACJjB,YAAYE,SAAS,eACjBhE,SACA8D,YAAYE,SAAS,kBACnBc,cAAc,IACdA;AACR,kBAAQX,WAAAA;YACN,KAAK,aAAa;AAChB,oBAAMa,YAAYN,YAAYvE,IAAI,CAAC,EAAE5C,KAAI,MAAOA,IAAAA;AAChD0H,wBAAUD,WAAWJ,aAAaE,WAAAA;AAClC,mBAAKP,cAAc5E,WAAWuF,sBAAsBF,SAAAA;AACpD;YACF;YACA,KAAK,QAAQ;AACX,oBAAM/C,UAAS6B,YAAYE,SAAS,eAAe7B,aAAasC;AAChE,mBAAKxC,SAAQtC,WAAWwF,SAASjD,YAAY6C,cAAAA;AAC7C;YACF;YACA,KAAK,YAAY;AACf,oBAAM9C,UAAS6B,YAAYE,SAAS,eAAe7B,aAAasC;AAChE,kBAAI,CAACxC,SAAQtC,WAAWyF,mBAAmB,CAACb,cAAc5E,WAAW0F,eAAe;AAClF;cACF;AACA,mBAAKpD,SAAQtC,WAAWyF,gBAAgBlD,YAAY6C,cAAAA;AACpD,mBAAKR,cAAc5E,WAAW0F,gBAAgBnD,YAAYD,OAAAA;AAC1D;YACF;UACF;QACF;MACF;IACF,CAAA;EACF,GAAG;IAAC3D;GAAM;AAEV,QAAMgH,sBAAsBC,SAC1B,OAAO;IACL1H;IACA2D;IACAxC,YAAAA;IACA4B;IACA3D;IACAa;IACAC;IACAoB;IACAS;IACAjB;IACAD;IACA0C;IACAW;IACAyD,UAAUlD;EACZ,IACA;IACEzE;IACA2D;IACAxC;IACA4B;IACA3D;IACAa;IACAC;IACAoB;IACAS;IACAjB;IACAD;IACA0C;IACAW;IACAO;GACD;AAGH,SACE,gBAAAlF,QAAA,cAACqI,eAAeC,UAAQ;IAACC,OAAOL;KAC9B,gBAAAlI,QAAA,cAACwI,SAAAA;IAAQtG,MAAMhB,MAAMgB;IAAM9B,IAAIc,MAAMgB,KAAK9B;;AAGhD,CAAA;;;ASlSA,SAASqI,aAAAA,kBAAiB;AAG1B,SAASC,qBAAAA,oBAAmBC,kBAAAA,uBAAsB;AAI3C,IAAMC,uBAAuB,CAAC,EAAEC,KAAI,MAAmB;AAC5D,QAAM,EAAEC,EAAC,IAAKC,gBAAeC,cAAAA;AAC7BC,EAAAA,WAAU,MAAA;AACRC,aAASC,QAAQN,OAAOO,mBAAkBP,KAAKQ,WAAWC,OAAOR,CAAAA,IAAKA,EAAE,oBAAoB;MAAES,IAAI;IAAS,CAAA;EAC7G,GAAG;IAACV,MAAMQ,YAAYC;GAAM;AAC5B,SAAO;AACT;",
|
|
6
|
+
"names": ["React", "useMemo", "useState", "createIntent", "LayoutAction", "useAppGraph", "useIntentDispatcher", "isActionGroup", "isAction", "Keyboard", "keySymbols", "Button", "Dialog", "Icon", "useTranslation", "toLocalizedString", "SearchList", "descriptionText", "mx", "getHostPlatform", "CommandsDialogContent", "selected", "initial", "t", "useTranslation", "NAVTREE_PLUGIN", "setSelected", "useState", "dispatchPromise", "dispatch", "useIntentDispatcher", "graph", "useAppGraph", "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", "createIntent", "LayoutAction", "UpdateDialog", "part", "options", "state", "setTimeout", "nodes", "relation", "data", "caller", "KEY_BINDING", "testId", "Icon", "icon", "size", "span", "className", "mx", "descriptionText", "keySymbols", "Close", "asChild", "Button", "variant", "MagnifyingGlass", "React", "createIntent", "LayoutAction", "useIntentDispatcher", "Button", "useTranslation", "getSize", "CommandsTrigger", "dispatchPromise", "dispatch", "useIntentDispatcher", "t", "useTranslation", "NAVTREE_PLUGIN", "React", "Button", "classNames", "onClick", "createIntent", "LayoutAction", "UpdateDialog", "part", "subject", "COMMANDS_DIALOG", "options", "blockAlign", "span", "className", "MagnifyingGlass", "getSize", "React", "createIntent", "useCapabilities", "useIntentDispatcher", "ClientAction", "ObservabilityCapabilities", "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", "observability", "useCapabilities", "ObservabilityCapabilities", "Observability", "dispatchPromise", "dispatch", "useIntentDispatcher", "React", "HaloButton", "size", "identityKey", "toHex", "hue", "profile", "data", "emoji", "internal", "group", "onClick", "createIntent", "ClientAction", "ShareIdentity", "ACTION_TYPE", "ACTION_GROUP_TYPE", "isAction", "isActionLike", "isNonNullable", "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", "getChildren", "filter", "map", "nextPath", "includes", "undefined", "isNonNullable", "getActions", "reduce", "acc", "arg", "push", "isAction", "actionGroup", "groupedActions", "expandChildrenAndActions", "Promise", "all", "expandChildren", "expandActions", "expand", "ACTION_TYPE", "ACTION_GROUP_TYPE", "l0ItemType", "item", "isActionLike", "renderableCharRegex", "getFirstTwoRenderableChars", "label", "characters", "Array", "from", "result", "foundFirst", "i", "char", "test", "textBetween", "join", "monitorForElements", "extractInstruction", "untracked", "React", "memo", "useCallback", "useEffect", "useMemo", "createIntent", "LayoutAction", "Surface", "useAppGraph", "useCapability", "useIntentDispatcher", "useLayout", "isAction", "isActionLike", "isEchoObject", "isSpace", "useMediaQuery", "isTreeData", "mx", "arrayMove", "React", "useMemo", "Tabs", "byPosition", "React", "useCallback", "useMemo", "createIntent", "LayoutAction", "useIntentDispatcher", "Icon", "toLocalizedString", "Tooltip", "useMediaQuery", "useSidebars", "useTranslation", "Tabs", "mx", "createContext", "useContext", "raise", "NavTreeContext", "createContext", "useNavTreeContext", "useContext", "raise", "Error", "useEffect", "useLoadDescendents", "root", "loadDescendents", "useNavTreeContext", "useEffect", "frame", "requestAnimationFrame", "cancelAnimationFrame", "useL0ItemClick", "item", "parent", "path", "type", "tab", "onTabChange", "onSelect", "isCurrent", "useNavTreeContext", "dispatchPromise", "dispatch", "useIntentDispatcher", "navigationSidebarState", "useSidebars", "NAVTREE_PLUGIN", "isLg", "useMediaQuery", "ssr", "useCallback", "event", "createIntent", "LayoutAction", "UpdateSidebar", "part", "options", "state", "id", "current", "option", "altKey", "data", "invoke", "properties", "caller", "node", "l0Breakpoints", "lg", "L0Item", "pinned", "t", "useTranslation", "l0ItemType", "itemPath", "useMemo", "getProps", "testId", "Root", "Tabs", "TabPrimitive", "handleClick", "rootProps", "value", "tabIndex", "onClick", "localizedString", "toLocalizedString", "label", "hue", "avatarValue", "getFirstTwoRenderableChars", "join", "React", "Tooltip", "delayDuration", "Trigger", "asChild", "data-type", "className", "mx", "l0Breakpoint", "div", "role", "style", "background", "disposition", "span", "color", "icon", "Icon", "size", "classNames", "Portal", "Content", "side", "Arrow", "L0Collection", "navTreeContext", "useLoadDescendents", "collectionItems", "getItems", "groupPath", "aria-labelledby", "data-itemid", "data-testid", "map", "collectionItem", "key", "L0Menu", "topLevelItems", "pinnedItems", "Tablist", "filter", "NotchStart", "React", "useMemo", "useLayout", "toLocalizedString", "useTranslation", "Tree", "Tabs", "React", "Fragment", "memo", "isAction", "Popover", "toLocalizedString", "Treegrid", "useTranslation", "React", "useRef", "useTranslation", "toLocalizedString", "IconButton", "DropdownMenu", "MenuProvider", "hoverableControlItem", "hoverableOpenControlItem", "mx", "fallbackIcon", "actionButtonProps", "size", "density", "NavTreeItemActionDropdownMenu", "label", "icon", "testId", "menuActions", "onAction", "t", "useTranslation", "NAVTREE_PLUGIN", "suppressNextTooltip", "useRef", "React", "MenuProvider", "DropdownMenu", "Root", "items", "Trigger", "asChild", "IconButton", "classNames", "mx", "hoverableControlItem", "hoverableOpenControlItem", "variant", "iconOnly", "toLocalizedString", "data-testid", "NavTreeItemMonolithicAction", "parent", "properties", "disabled", "caller", "data", "invoke", "baseLabel", "onClick", "event", "stopPropagation", "node", "NavTreeItemAction", "monolithic", "props", "monolithicAction", "length", "action", "NavTreeItemColumns", "memo", "path", "item", "open", "t", "useTranslation", "NAVTREE_PLUGIN", "getActions", "renderItemEnd", "ItemEnd", "popoverAnchorId", "useNavTreeContext", "level", "length", "actions", "_actions", "groupedActions", "primaryAction", "secondaryActions", "toSorted", "a", "b", "properties", "disposition", "flatMap", "action", "isAction", "filter", "hidden", "ActionRoot", "NAV_TREE_ITEM", "id", "Popover", "Anchor", "Fragment", "useLoadDescendents", "undefined", "React", "div", "role", "className", "disabled", "NavTreeItemAction", "testId", "label", "toLocalizedString", "icon", "parent", "monolithic", "menuActions", "menuType", "caller", "Treegrid", "Cell", "node", "L1Panel", "item", "path", "currentItemId", "layout", "useLayout", "navTreeContext", "useNavTreeContext", "t", "useTranslation", "NAVTREE_PLUGIN", "React", "Tabs", "Tabpanel", "key", "id", "value", "classNames", "tabIndex", "sidebarOpen", "inert", "h2", "className", "span", "toLocalizedString", "properties", "label", "NavTreeItemColumns", "open", "div", "role", "Tree", "root", "levelOffset", "draggable", "gridTemplateColumns", "renderColumns", "L1PanelCollection", "getItems", "useLoadDescendents", "collectionItems", "groupPath", "useMemo", "filter", "l0ItemType", "map", "L1Panels", "topLevelItems", "type", "NAV_TREE_ITEM", "NavTree", "id", "root", "getItems", "tab", "useNavTreeContext", "topLevelActions", "topLevelCollections", "topLevelWorkspaces", "topLevelNavigation", "l0Items", "useMemo", "pinnedItems", "toSorted", "a", "b", "byPosition", "properties", "topLevelItems", "useLoadDescendents", "path", "React", "Tabs", "Root", "value", "orientation", "verticalVariant", "classNames", "L0Menu", "parent", "L1Panels", "currentItemId", "lazy", "AppGraphBuilder", "lazy", "IntentResolver", "Keyboard", "ReactSurface", "State", "NODE_TYPE", "renderItemEnd", "node", "open", "React", "Surface", "role", "data", "id", "subject", "limit", "NavTreeContainer", "memo", "tab", "popoverAnchorId", "topbar", "isLg", "useMediaQuery", "ssr", "dispatchPromise", "dispatch", "useIntentDispatcher", "graph", "useAppGraph", "layout", "useLayout", "isOpen", "isCurrent", "setItem", "useCapability", "NavTreeCapabilities", "State", "getActions", "useCallback", "naturalGetActions", "getItems", "disposition", "nodes", "root", "filter", "untracked", "action", "isActionLike", "properties", "getProps", "path", "children", "getChildren", "undefined", "parentOf", "length", "map", "label", "icon", "disabled", "className", "mx", "modified", "headingClassName", "testId", "loadDescendents", "expandActions", "expandChildren", "then", "Promise", "all", "flatMap", "child", "onOpenChange", "item", "findNode", "expandChildrenAndActions", "onTabChange", "createIntent", "LayoutAction", "SwitchWorkspace", "part", "active", "Open", "canDrop", "source", "target", "sourceNode", "targetNode", "isSpace", "isEchoObject", "handleSelect", "option", "isAction", "parent", "relation", "caller", "NAV_TREE_ITEM", "current", "options", "key", "Close", "state", "ScrollIntoView", "defaultAction", "actions", "find", "UpdateSidebar", "useEffect", "monitorForElements", "canMonitor", "isTreeData", "onDrop", "location", "dropTargets", "instruction", "extractInstruction", "type", "sourcePath", "targetPath", "operation", "slice", "join", "resolveMigrationOperation", "sourceParent", "getParent", "targetParent", "sourceItems", "targetItems", "sourceIndex", "findIndex", "targetIndex", "migrationIndex", "nextItems", "arrayMove", "onRearrangeChildren", "onCopy", "onTransferStart", "onTransferEnd", "navTreeContextValue", "useMemo", "onSelect", "NavTreeContext", "Provider", "value", "NavTree", "useEffect", "toLocalizedString", "useTranslation", "NavTreeDocumentTitle", "node", "t", "useTranslation", "NAVTREE_PLUGIN", "useEffect", "document", "title", "toLocalizedString", "properties", "label", "ns"]
|
|
7
|
+
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"inputs":{"packages/plugins/plugin-navtree/src/meta.ts":{"bytes":1521,"imports":[],"format":"esm"},"packages/plugins/plugin-navtree/src/capabilities/capabilities.ts":{"bytes":2005,"imports":[{"path":"@dxos/app-framework","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/capabilities/app-graph-builder.ts":{"bytes":5007,"imports":[{"path":"@dxos/app-framework","kind":"import-statement","external":true},{"path":"@dxos/plugin-graph","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/capabilities/intent-resolver.ts":{"bytes":5294,"imports":[{"path":"@dxos/app-framework","kind":"import-statement","external":true},{"path":"@dxos/echo-schema","kind":"import-statement","external":true},{"path":"@dxos/log","kind":"import-statement","external":true},{"path":"packages/plugins/plugin-navtree/src/capabilities/capabilities.ts","kind":"import-statement","original":"./capabilities"}],"format":"esm"},"packages/plugins/plugin-navtree/src/capabilities/keyboard.ts":{"bytes":7323,"imports":[{"path":"@dxos/app-framework","kind":"import-statement","external":true},{"path":"@dxos/keyboard","kind":"import-statement","external":true},{"path":"@dxos/plugin-graph","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/CommandsDialog.tsx":{"bytes":16513,"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/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/CommandsTrigger.tsx":{"bytes":4234,"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/components/NavTreeContext.tsx":{"bytes":1514,"imports":[{"path":"react","kind":"import-statement","external":true},{"path":"@dxos/debug","kind":"import-statement","external":true}],"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":4052,"imports":[{"path":"react","kind":"import-statement","external":true},{"path":"@dxos/app-framework","kind":"import-statement","external":true},{"path":"@dxos/plugin-client/types","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/hooks.ts":{"bytes":2031,"imports":[{"path":"react","kind":"import-statement","external":true},{"path":"packages/plugins/plugin-navtree/src/components/NavTreeContext.tsx","kind":"import-statement","original":"./components/NavTreeContext"}],"format":"esm"},"packages/plugins/plugin-navtree/src/util.ts":{"bytes":18367,"imports":[{"path":"@dxos/app-graph","kind":"import-statement","external":true},{"path":"@dxos/util","kind":"import-statement","external":true}],"format":"esm"},"packages/plugins/plugin-navtree/src/components/L0Menu.tsx":{"bytes":26513,"imports":[{"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-tabs","kind":"import-statement","external":true},{"path":"@dxos/react-ui-theme","kind":"import-statement","external":true},{"path":"packages/plugins/plugin-navtree/src/components/NavTreeContext.tsx","kind":"import-statement","original":"./NavTreeContext"},{"path":"packages/plugins/plugin-navtree/src/components/NotchStart.tsx","kind":"import-statement","original":"./NotchStart"},{"path":"packages/plugins/plugin-navtree/src/hooks.ts","kind":"import-statement","original":"../hooks"},{"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/NavTreeItemAction.tsx":{"bytes":11669,"imports":[{"path":"react","kind":"import-statement","external":true},{"path":"@dxos/react-ui","kind":"import-statement","external":true},{"path":"@dxos/react-ui-menu","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/components/NavTreeItemColumns.tsx":{"bytes":9922,"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":"packages/plugins/plugin-navtree/src/components/NavTree.tsx","kind":"import-statement","original":"./NavTree"},{"path":"packages/plugins/plugin-navtree/src/components/NavTreeContext.tsx","kind":"import-statement","original":"./NavTreeContext"},{"path":"packages/plugins/plugin-navtree/src/components/NavTreeItemAction.tsx","kind":"import-statement","original":"./NavTreeItemAction"},{"path":"packages/plugins/plugin-navtree/src/hooks.ts","kind":"import-statement","original":"../hooks"},{"path":"packages/plugins/plugin-navtree/src/meta.ts","kind":"import-statement","original":"../meta"}],"format":"esm"},"packages/plugins/plugin-navtree/src/components/L1Panels.tsx":{"bytes":11419,"imports":[{"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-list","kind":"import-statement","external":true},{"path":"@dxos/react-ui-tabs","kind":"import-statement","external":true},{"path":"packages/plugins/plugin-navtree/src/components/NavTreeContext.tsx","kind":"import-statement","original":"./NavTreeContext"},{"path":"packages/plugins/plugin-navtree/src/components/NavTreeItemColumns.tsx","kind":"import-statement","original":"./NavTreeItemColumns"},{"path":"packages/plugins/plugin-navtree/src/hooks.ts","kind":"import-statement","original":"../hooks"},{"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/NavTree.tsx":{"bytes":6573,"imports":[{"path":"react","kind":"import-statement","external":true},{"path":"@dxos/react-ui-tabs","kind":"import-statement","external":true},{"path":"@dxos/util","kind":"import-statement","external":true},{"path":"packages/plugins/plugin-navtree/src/components/L0Menu.tsx","kind":"import-statement","original":"./L0Menu"},{"path":"packages/plugins/plugin-navtree/src/components/L1Panels.tsx","kind":"import-statement","original":"./L1Panels"},{"path":"packages/plugins/plugin-navtree/src/components/NavTreeContext.tsx","kind":"import-statement","original":"./NavTreeContext"},{"path":"packages/plugins/plugin-navtree/src/hooks.ts","kind":"import-statement","original":"../hooks"}],"format":"esm"},"packages/plugins/plugin-navtree/src/components/NavTreeContainer.tsx":{"bytes":36724,"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":"@preact/signals-core","kind":"import-statement","external":true},{"path":"react","kind":"import-statement","external":true},{"path":"@dxos/app-framework","kind":"import-statement","external":true},{"path":"@dxos/app-graph","kind":"import-statement","external":true},{"path":"@dxos/react-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/NavTreeContext.tsx","kind":"import-statement","original":"./NavTreeContext"},{"path":"packages/plugins/plugin-navtree/src/capabilities/index.ts","kind":"import-statement","original":"../capabilities"},{"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/types.ts":{"bytes":1770,"imports":[],"format":"esm"},"packages/plugins/plugin-navtree/src/components/index.ts":{"bytes":1239,"imports":[{"path":"packages/plugins/plugin-navtree/src/components/CommandsDialog.tsx","kind":"import-statement","original":"./CommandsDialog"},{"path":"packages/plugins/plugin-navtree/src/components/CommandsTrigger.tsx","kind":"import-statement","original":"./CommandsTrigger"},{"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/NavTreeContext.tsx","kind":"import-statement","original":"./NavTreeContext"},{"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"},{"path":"packages/plugins/plugin-navtree/src/components/types.ts","kind":"import-statement","original":"./types"}],"format":"esm"},"packages/plugins/plugin-navtree/src/capabilities/react-surface.tsx":{"bytes":6457,"imports":[{"path":"react","kind":"import-statement","external":true},{"path":"@dxos/app-framework","kind":"import-statement","external":true},{"path":"@dxos/plugin-graph","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/meta.ts","kind":"import-statement","original":"../meta"}],"format":"esm"},"packages/plugins/plugin-navtree/src/capabilities/state.ts":{"bytes":12275,"imports":[{"path":"@preact/signals-core","kind":"import-statement","external":true},{"path":"@dxos/app-framework","kind":"import-statement","external":true},{"path":"@dxos/live-object","kind":"import-statement","external":true},{"path":"@dxos/react-ui-mosaic","kind":"import-statement","external":true},{"path":"packages/plugins/plugin-navtree/src/capabilities/capabilities.ts","kind":"import-statement","original":"./capabilities"},{"path":"packages/plugins/plugin-navtree/src/meta.ts","kind":"import-statement","original":"../meta"}],"format":"esm"},"packages/plugins/plugin-navtree/src/capabilities/index.ts":{"bytes":1864,"imports":[{"path":"@dxos/app-framework","kind":"import-statement","external":true},{"path":"packages/plugins/plugin-navtree/src/capabilities/capabilities.ts","kind":"import-statement","original":"./capabilities"},{"path":"packages/plugins/plugin-navtree/src/capabilities/app-graph-builder.ts","kind":"dynamic-import","original":"./app-graph-builder"},{"path":"packages/plugins/plugin-navtree/src/capabilities/intent-resolver.ts","kind":"dynamic-import","original":"./intent-resolver"},{"path":"packages/plugins/plugin-navtree/src/capabilities/keyboard.ts","kind":"dynamic-import","original":"./keyboard"},{"path":"packages/plugins/plugin-navtree/src/capabilities/react-surface.tsx","kind":"dynamic-import","original":"./react-surface"},{"path":"packages/plugins/plugin-navtree/src/capabilities/state.ts","kind":"dynamic-import","original":"./state"}],"format":"esm"},"packages/plugins/plugin-navtree/src/events.ts":{"bytes":1199,"imports":[{"path":"@dxos/app-framework","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":1959,"imports":[{"path":"packages/plugins/plugin-navtree/src/meta.ts","kind":"import-statement","original":"./meta"}],"format":"esm"},"packages/plugins/plugin-navtree/src/NavTreePlugin.tsx":{"bytes":10777,"imports":[{"path":"@dxos/app-framework","kind":"import-statement","external":true},{"path":"packages/plugins/plugin-navtree/src/capabilities/index.ts","kind":"import-statement","original":"./capabilities"},{"path":"packages/plugins/plugin-navtree/src/components/index.ts","kind":"import-statement","original":"./components"},{"path":"packages/plugins/plugin-navtree/src/events.ts","kind":"import-statement","original":"./events"},{"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"}],"format":"esm"},"packages/plugins/plugin-navtree/src/index.ts":{"bytes":1032,"imports":[{"path":"packages/plugins/plugin-navtree/src/capabilities/index.ts","kind":"import-statement","original":"./capabilities"},{"path":"packages/plugins/plugin-navtree/src/events.ts","kind":"import-statement","original":"./events"},{"path":"packages/plugins/plugin-navtree/src/NavTreePlugin.tsx","kind":"import-statement","original":"./NavTreePlugin"},{"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"}},"outputs":{"packages/plugins/plugin-navtree/dist/lib/browser/index.mjs.map":{"imports":[],"exports":[],"inputs":{},"bytes":6356},"packages/plugins/plugin-navtree/dist/lib/browser/index.mjs":{"imports":[{"path":"packages/plugins/plugin-navtree/dist/lib/browser/chunk-54MPRXMH.mjs","kind":"import-statement"},{"path":"packages/plugins/plugin-navtree/dist/lib/browser/chunk-AOAGODQB.mjs","kind":"import-statement"},{"path":"packages/plugins/plugin-navtree/dist/lib/browser/chunk-KOXMEAOS.mjs","kind":"import-statement"},{"path":"@dxos/app-framework","kind":"import-statement","external":true},{"path":"@dxos/app-framework","kind":"import-statement","external":true}],"exports":["COMMANDS_DIALOG","KEY_BINDING","NAVTREE_PLUGIN","NavTreeCapabilities","NavTreeEvents","NavTreePlugin","expandActions","expandChildren","expandChildrenAndActions","getActions","getChildren","getFirstTwoRenderableChars","getParent","getPersistenceParent","l0ItemType","meta","resolveMigrationOperation","sortActions"],"entryPoint":"packages/plugins/plugin-navtree/src/index.ts","inputs":{"packages/plugins/plugin-navtree/src/index.ts":{"bytesInOutput":0},"packages/plugins/plugin-navtree/src/events.ts":{"bytesInOutput":207},"packages/plugins/plugin-navtree/src/NavTreePlugin.tsx":{"bytesInOutput":2231},"packages/plugins/plugin-navtree/src/translations.ts":{"bytesInOutput":453}},"bytes":3997},"packages/plugins/plugin-navtree/dist/lib/browser/app-graph-builder-BL7LRXCM.mjs.map":{"imports":[],"exports":[],"inputs":{},"bytes":2435},"packages/plugins/plugin-navtree/dist/lib/browser/app-graph-builder-BL7LRXCM.mjs":{"imports":[{"path":"packages/plugins/plugin-navtree/dist/lib/browser/chunk-KOXMEAOS.mjs","kind":"import-statement"},{"path":"@dxos/app-framework","kind":"import-statement","external":true},{"path":"@dxos/plugin-graph","kind":"import-statement","external":true}],"exports":["default"],"entryPoint":"packages/plugins/plugin-navtree/src/capabilities/app-graph-builder.ts","inputs":{"packages/plugins/plugin-navtree/src/capabilities/app-graph-builder.ts":{"bytesInOutput":1003}},"bytes":1260},"packages/plugins/plugin-navtree/dist/lib/browser/intent-resolver-U25VBFH3.mjs.map":{"imports":[],"exports":[],"inputs":{},"bytes":2665},"packages/plugins/plugin-navtree/dist/lib/browser/intent-resolver-U25VBFH3.mjs":{"imports":[{"path":"packages/plugins/plugin-navtree/dist/lib/browser/chunk-AOAGODQB.mjs","kind":"import-statement"},{"path":"packages/plugins/plugin-navtree/dist/lib/browser/chunk-KOXMEAOS.mjs","kind":"import-statement"},{"path":"@dxos/app-framework","kind":"import-statement","external":true},{"path":"@dxos/echo-schema","kind":"import-statement","external":true},{"path":"@dxos/log","kind":"import-statement","external":true}],"exports":["default"],"entryPoint":"packages/plugins/plugin-navtree/src/capabilities/intent-resolver.ts","inputs":{"packages/plugins/plugin-navtree/src/capabilities/intent-resolver.ts":{"bytesInOutput":1242}},"bytes":1510},"packages/plugins/plugin-navtree/dist/lib/browser/keyboard-MUBRTPI5.mjs.map":{"imports":[],"exports":[],"inputs":{},"bytes":3671},"packages/plugins/plugin-navtree/dist/lib/browser/keyboard-MUBRTPI5.mjs":{"imports":[{"path":"packages/plugins/plugin-navtree/dist/lib/browser/chunk-KOXMEAOS.mjs","kind":"import-statement"},{"path":"@dxos/app-framework","kind":"import-statement","external":true},{"path":"@dxos/keyboard","kind":"import-statement","external":true},{"path":"@dxos/plugin-graph","kind":"import-statement","external":true},{"path":"@dxos/util","kind":"import-statement","external":true}],"exports":["default"],"entryPoint":"packages/plugins/plugin-navtree/src/capabilities/keyboard.ts","inputs":{"packages/plugins/plugin-navtree/src/capabilities/keyboard.ts":{"bytesInOutput":1480}},"bytes":1688},"packages/plugins/plugin-navtree/dist/lib/browser/react-surface-LNRTNSM6.mjs.map":{"imports":[],"exports":[],"inputs":{},"bytes":3166},"packages/plugins/plugin-navtree/dist/lib/browser/react-surface-LNRTNSM6.mjs":{"imports":[{"path":"packages/plugins/plugin-navtree/dist/lib/browser/chunk-54MPRXMH.mjs","kind":"import-statement"},{"path":"packages/plugins/plugin-navtree/dist/lib/browser/chunk-AOAGODQB.mjs","kind":"import-statement"},{"path":"packages/plugins/plugin-navtree/dist/lib/browser/chunk-KOXMEAOS.mjs","kind":"import-statement"},{"path":"react","kind":"import-statement","external":true},{"path":"@dxos/app-framework","kind":"import-statement","external":true},{"path":"@dxos/plugin-graph","kind":"import-statement","external":true}],"exports":["default"],"entryPoint":"packages/plugins/plugin-navtree/src/capabilities/react-surface.tsx","inputs":{"packages/plugins/plugin-navtree/src/capabilities/react-surface.tsx":{"bytesInOutput":1411}},"bytes":1829},"packages/plugins/plugin-navtree/dist/lib/browser/chunk-54MPRXMH.mjs.map":{"imports":[],"exports":[],"inputs":{},"bytes":80817},"packages/plugins/plugin-navtree/dist/lib/browser/chunk-54MPRXMH.mjs":{"imports":[{"path":"packages/plugins/plugin-navtree/dist/lib/browser/chunk-AOAGODQB.mjs","kind":"import-statement"},{"path":"packages/plugins/plugin-navtree/dist/lib/browser/chunk-KOXMEAOS.mjs","kind":"import-statement"},{"path":"react","kind":"import-statement","external":true},{"path":"@dxos/app-framework","kind":"import-statement","external":true},{"path":"@dxos/app-graph","kind":"import-statement","external":true},{"path":"@dxos/keyboard","kind":"import-statement","external":true},{"path":"@dxos/react-ui","kind":"import-statement","external":true},{"path":"@dxos/react-ui-searchlist","kind":"import-statement","external":true},{"path":"@dxos/react-ui-theme","kind":"import-statement","external":true},{"path":"@dxos/util","kind":"import-statement","external":true},{"path":"@phosphor-icons/react","kind":"import-statement","external":true},{"path":"react","kind":"import-statement","external":true},{"path":"@dxos/app-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":"react","kind":"import-statement","external":true},{"path":"@dxos/app-framework","kind":"import-statement","external":true},{"path":"@dxos/plugin-client/types","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":"@dxos/app-graph","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":"@preact/signals-core","kind":"import-statement","external":true},{"path":"react","kind":"import-statement","external":true},{"path":"@dxos/app-framework","kind":"import-statement","external":true},{"path":"@dxos/app-graph","kind":"import-statement","external":true},{"path":"@dxos/react-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":"react","kind":"import-statement","external":true},{"path":"@dxos/react-ui-tabs","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/react-ui","kind":"import-statement","external":true},{"path":"@dxos/react-ui-tabs","kind":"import-statement","external":true},{"path":"@dxos/react-ui-theme","kind":"import-statement","external":true},{"path":"react","kind":"import-statement","external":true},{"path":"@dxos/debug","kind":"import-statement","external":true},{"path":"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-list","kind":"import-statement","external":true},{"path":"@dxos/react-ui-tabs","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":"react","kind":"import-statement","external":true},{"path":"@dxos/react-ui","kind":"import-statement","external":true},{"path":"@dxos/react-ui-menu","kind":"import-statement","external":true},{"path":"@dxos/react-ui-theme","kind":"import-statement","external":true},{"path":"@dxos/app-framework","kind":"import-statement","external":true},{"path":"packages/plugins/plugin-navtree/dist/lib/browser/app-graph-builder-BL7LRXCM.mjs","kind":"dynamic-import"},{"path":"packages/plugins/plugin-navtree/dist/lib/browser/intent-resolver-U25VBFH3.mjs","kind":"dynamic-import"},{"path":"packages/plugins/plugin-navtree/dist/lib/browser/keyboard-MUBRTPI5.mjs","kind":"dynamic-import"},{"path":"packages/plugins/plugin-navtree/dist/lib/browser/react-surface-LNRTNSM6.mjs","kind":"dynamic-import"},{"path":"packages/plugins/plugin-navtree/dist/lib/browser/state-65TQKYX7.mjs","kind":"dynamic-import"},{"path":"react","kind":"import-statement","external":true},{"path":"@dxos/react-ui","kind":"import-statement","external":true}],"exports":["AppGraphBuilder","CommandsDialogContent","CommandsTrigger","IntentResolver","Keyboard","NODE_TYPE","NavTreeContainer","NavTreeDocumentTitle","NotchStart","ReactSurface","State","expandActions","expandChildren","expandChildrenAndActions","getActions","getChildren","getFirstTwoRenderableChars","getParent","getPersistenceParent","l0ItemType","resolveMigrationOperation","sortActions"],"inputs":{"packages/plugins/plugin-navtree/src/components/CommandsDialog.tsx":{"bytesInOutput":4002},"packages/plugins/plugin-navtree/src/components/CommandsTrigger.tsx":{"bytesInOutput":1039},"packages/plugins/plugin-navtree/src/components/NotchStart.tsx":{"bytesInOutput":882},"packages/plugins/plugin-navtree/src/components/HaloButton.tsx":{"bytesInOutput":1237},"packages/plugins/plugin-navtree/src/util.ts":{"bytesInOutput":3760},"packages/plugins/plugin-navtree/src/components/NavTreeContainer.tsx":{"bytesInOutput":8864},"packages/plugins/plugin-navtree/src/components/NavTree.tsx":{"bytesInOutput":1609},"packages/plugins/plugin-navtree/src/components/L0Menu.tsx":{"bytesInOutput":7063},"packages/plugins/plugin-navtree/src/components/NavTreeContext.tsx":{"bytesInOutput":252},"packages/plugins/plugin-navtree/src/hooks.ts":{"bytesInOutput":334},"packages/plugins/plugin-navtree/src/components/L1Panels.tsx":{"bytesInOutput":2924},"packages/plugins/plugin-navtree/src/components/NavTreeItemColumns.tsx":{"bytesInOutput":2423},"packages/plugins/plugin-navtree/src/components/NavTreeItemAction.tsx":{"bytesInOutput":2792},"packages/plugins/plugin-navtree/src/capabilities/index.ts":{"bytesInOutput":387},"packages/plugins/plugin-navtree/src/components/NavTreeDocumentTitle.tsx":{"bytesInOutput":456},"packages/plugins/plugin-navtree/src/components/index.ts":{"bytesInOutput":0}},"bytes":40039},"packages/plugins/plugin-navtree/dist/lib/browser/state-65TQKYX7.mjs.map":{"imports":[],"exports":[],"inputs":{},"bytes":6219},"packages/plugins/plugin-navtree/dist/lib/browser/state-65TQKYX7.mjs":{"imports":[{"path":"packages/plugins/plugin-navtree/dist/lib/browser/chunk-AOAGODQB.mjs","kind":"import-statement"},{"path":"packages/plugins/plugin-navtree/dist/lib/browser/chunk-KOXMEAOS.mjs","kind":"import-statement"},{"path":"@preact/signals-core","kind":"import-statement","external":true},{"path":"@dxos/app-framework","kind":"import-statement","external":true},{"path":"@dxos/live-object","kind":"import-statement","external":true},{"path":"@dxos/react-ui-mosaic","kind":"import-statement","external":true}],"exports":["default"],"entryPoint":"packages/plugins/plugin-navtree/src/capabilities/state.ts","inputs":{"packages/plugins/plugin-navtree/src/capabilities/state.ts":{"bytesInOutput":2489}},"bytes":2753},"packages/plugins/plugin-navtree/dist/lib/browser/chunk-AOAGODQB.mjs.map":{"imports":[],"exports":[],"inputs":{},"bytes":1116},"packages/plugins/plugin-navtree/dist/lib/browser/chunk-AOAGODQB.mjs":{"imports":[{"path":"packages/plugins/plugin-navtree/dist/lib/browser/chunk-KOXMEAOS.mjs","kind":"import-statement"},{"path":"@dxos/app-framework","kind":"import-statement","external":true}],"exports":["NavTreeCapabilities"],"inputs":{"packages/plugins/plugin-navtree/src/capabilities/capabilities.ts":{"bytesInOutput":257}},"bytes":462},"packages/plugins/plugin-navtree/dist/lib/browser/chunk-KOXMEAOS.mjs.map":{"imports":[],"exports":[],"inputs":{},"bytes":690},"packages/plugins/plugin-navtree/dist/lib/browser/chunk-KOXMEAOS.mjs":{"imports":[],"exports":["COMMANDS_DIALOG","KEY_BINDING","NAVTREE_PLUGIN","meta"],"inputs":{"packages/plugins/plugin-navtree/src/meta.ts":{"bytesInOutput":175}},"bytes":338}}}
|
|
1
|
+
{"inputs":{"packages/plugins/plugin-navtree/src/meta.ts":{"bytes":1521,"imports":[],"format":"esm"},"packages/plugins/plugin-navtree/src/capabilities/capabilities.ts":{"bytes":2005,"imports":[{"path":"@dxos/app-framework","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/capabilities/app-graph-builder.ts":{"bytes":5007,"imports":[{"path":"@dxos/app-framework","kind":"import-statement","external":true},{"path":"@dxos/plugin-graph","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/capabilities/intent-resolver.ts":{"bytes":5294,"imports":[{"path":"@dxos/app-framework","kind":"import-statement","external":true},{"path":"@dxos/echo-schema","kind":"import-statement","external":true},{"path":"@dxos/log","kind":"import-statement","external":true},{"path":"packages/plugins/plugin-navtree/src/capabilities/capabilities.ts","kind":"import-statement","original":"./capabilities"}],"format":"esm"},"packages/plugins/plugin-navtree/src/capabilities/keyboard.ts":{"bytes":7323,"imports":[{"path":"@dxos/app-framework","kind":"import-statement","external":true},{"path":"@dxos/keyboard","kind":"import-statement","external":true},{"path":"@dxos/plugin-graph","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/CommandsDialog.tsx":{"bytes":16513,"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/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/CommandsTrigger.tsx":{"bytes":4234,"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/components/NavTreeContext.tsx":{"bytes":1514,"imports":[{"path":"react","kind":"import-statement","external":true},{"path":"@dxos/debug","kind":"import-statement","external":true}],"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":4052,"imports":[{"path":"react","kind":"import-statement","external":true},{"path":"@dxos/app-framework","kind":"import-statement","external":true},{"path":"@dxos/plugin-client/types","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/hooks.ts":{"bytes":2031,"imports":[{"path":"react","kind":"import-statement","external":true},{"path":"packages/plugins/plugin-navtree/src/components/NavTreeContext.tsx","kind":"import-statement","original":"./components/NavTreeContext"}],"format":"esm"},"packages/plugins/plugin-navtree/src/util.ts":{"bytes":18379,"imports":[{"path":"@dxos/app-graph","kind":"import-statement","external":true},{"path":"@dxos/util","kind":"import-statement","external":true}],"format":"esm"},"packages/plugins/plugin-navtree/src/components/L0Menu.tsx":{"bytes":27541,"imports":[{"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-tabs","kind":"import-statement","external":true},{"path":"@dxos/react-ui-theme","kind":"import-statement","external":true},{"path":"packages/plugins/plugin-navtree/src/components/NavTreeContext.tsx","kind":"import-statement","original":"./NavTreeContext"},{"path":"packages/plugins/plugin-navtree/src/components/NotchStart.tsx","kind":"import-statement","original":"./NotchStart"},{"path":"packages/plugins/plugin-navtree/src/hooks.ts","kind":"import-statement","original":"../hooks"},{"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/NavTreeItemAction.tsx":{"bytes":11669,"imports":[{"path":"react","kind":"import-statement","external":true},{"path":"@dxos/react-ui","kind":"import-statement","external":true},{"path":"@dxos/react-ui-menu","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/components/NavTreeItemColumns.tsx":{"bytes":9922,"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":"packages/plugins/plugin-navtree/src/components/NavTree.tsx","kind":"import-statement","original":"./NavTree"},{"path":"packages/plugins/plugin-navtree/src/components/NavTreeContext.tsx","kind":"import-statement","original":"./NavTreeContext"},{"path":"packages/plugins/plugin-navtree/src/components/NavTreeItemAction.tsx","kind":"import-statement","original":"./NavTreeItemAction"},{"path":"packages/plugins/plugin-navtree/src/hooks.ts","kind":"import-statement","original":"../hooks"},{"path":"packages/plugins/plugin-navtree/src/meta.ts","kind":"import-statement","original":"../meta"}],"format":"esm"},"packages/plugins/plugin-navtree/src/components/L1Panels.tsx":{"bytes":11419,"imports":[{"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-list","kind":"import-statement","external":true},{"path":"@dxos/react-ui-tabs","kind":"import-statement","external":true},{"path":"packages/plugins/plugin-navtree/src/components/NavTreeContext.tsx","kind":"import-statement","original":"./NavTreeContext"},{"path":"packages/plugins/plugin-navtree/src/components/NavTreeItemColumns.tsx","kind":"import-statement","original":"./NavTreeItemColumns"},{"path":"packages/plugins/plugin-navtree/src/hooks.ts","kind":"import-statement","original":"../hooks"},{"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/NavTree.tsx":{"bytes":6573,"imports":[{"path":"react","kind":"import-statement","external":true},{"path":"@dxos/react-ui-tabs","kind":"import-statement","external":true},{"path":"@dxos/util","kind":"import-statement","external":true},{"path":"packages/plugins/plugin-navtree/src/components/L0Menu.tsx","kind":"import-statement","original":"./L0Menu"},{"path":"packages/plugins/plugin-navtree/src/components/L1Panels.tsx","kind":"import-statement","original":"./L1Panels"},{"path":"packages/plugins/plugin-navtree/src/components/NavTreeContext.tsx","kind":"import-statement","original":"./NavTreeContext"},{"path":"packages/plugins/plugin-navtree/src/hooks.ts","kind":"import-statement","original":"../hooks"}],"format":"esm"},"packages/plugins/plugin-navtree/src/components/NavTreeContainer.tsx":{"bytes":36724,"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":"@preact/signals-core","kind":"import-statement","external":true},{"path":"react","kind":"import-statement","external":true},{"path":"@dxos/app-framework","kind":"import-statement","external":true},{"path":"@dxos/app-graph","kind":"import-statement","external":true},{"path":"@dxos/react-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/NavTreeContext.tsx","kind":"import-statement","original":"./NavTreeContext"},{"path":"packages/plugins/plugin-navtree/src/capabilities/index.ts","kind":"import-statement","original":"../capabilities"},{"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/types.ts":{"bytes":1770,"imports":[],"format":"esm"},"packages/plugins/plugin-navtree/src/components/index.ts":{"bytes":1239,"imports":[{"path":"packages/plugins/plugin-navtree/src/components/CommandsDialog.tsx","kind":"import-statement","original":"./CommandsDialog"},{"path":"packages/plugins/plugin-navtree/src/components/CommandsTrigger.tsx","kind":"import-statement","original":"./CommandsTrigger"},{"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/NavTreeContext.tsx","kind":"import-statement","original":"./NavTreeContext"},{"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"},{"path":"packages/plugins/plugin-navtree/src/components/types.ts","kind":"import-statement","original":"./types"}],"format":"esm"},"packages/plugins/plugin-navtree/src/capabilities/react-surface.tsx":{"bytes":6457,"imports":[{"path":"react","kind":"import-statement","external":true},{"path":"@dxos/app-framework","kind":"import-statement","external":true},{"path":"@dxos/plugin-graph","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/meta.ts","kind":"import-statement","original":"../meta"}],"format":"esm"},"packages/plugins/plugin-navtree/src/capabilities/state.ts":{"bytes":12273,"imports":[{"path":"@preact/signals-core","kind":"import-statement","external":true},{"path":"@dxos/app-framework","kind":"import-statement","external":true},{"path":"@dxos/live-object","kind":"import-statement","external":true},{"path":"@dxos/react-ui-list","kind":"import-statement","external":true},{"path":"packages/plugins/plugin-navtree/src/capabilities/capabilities.ts","kind":"import-statement","original":"./capabilities"},{"path":"packages/plugins/plugin-navtree/src/meta.ts","kind":"import-statement","original":"../meta"}],"format":"esm"},"packages/plugins/plugin-navtree/src/capabilities/index.ts":{"bytes":1864,"imports":[{"path":"@dxos/app-framework","kind":"import-statement","external":true},{"path":"packages/plugins/plugin-navtree/src/capabilities/capabilities.ts","kind":"import-statement","original":"./capabilities"},{"path":"packages/plugins/plugin-navtree/src/capabilities/app-graph-builder.ts","kind":"dynamic-import","original":"./app-graph-builder"},{"path":"packages/plugins/plugin-navtree/src/capabilities/intent-resolver.ts","kind":"dynamic-import","original":"./intent-resolver"},{"path":"packages/plugins/plugin-navtree/src/capabilities/keyboard.ts","kind":"dynamic-import","original":"./keyboard"},{"path":"packages/plugins/plugin-navtree/src/capabilities/react-surface.tsx","kind":"dynamic-import","original":"./react-surface"},{"path":"packages/plugins/plugin-navtree/src/capabilities/state.ts","kind":"dynamic-import","original":"./state"}],"format":"esm"},"packages/plugins/plugin-navtree/src/events.ts":{"bytes":1199,"imports":[{"path":"@dxos/app-framework","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":1959,"imports":[{"path":"packages/plugins/plugin-navtree/src/meta.ts","kind":"import-statement","original":"./meta"}],"format":"esm"},"packages/plugins/plugin-navtree/src/NavTreePlugin.tsx":{"bytes":10777,"imports":[{"path":"@dxos/app-framework","kind":"import-statement","external":true},{"path":"packages/plugins/plugin-navtree/src/capabilities/index.ts","kind":"import-statement","original":"./capabilities"},{"path":"packages/plugins/plugin-navtree/src/components/index.ts","kind":"import-statement","original":"./components"},{"path":"packages/plugins/plugin-navtree/src/events.ts","kind":"import-statement","original":"./events"},{"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"}],"format":"esm"},"packages/plugins/plugin-navtree/src/index.ts":{"bytes":1032,"imports":[{"path":"packages/plugins/plugin-navtree/src/capabilities/index.ts","kind":"import-statement","original":"./capabilities"},{"path":"packages/plugins/plugin-navtree/src/events.ts","kind":"import-statement","original":"./events"},{"path":"packages/plugins/plugin-navtree/src/NavTreePlugin.tsx","kind":"import-statement","original":"./NavTreePlugin"},{"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"}},"outputs":{"packages/plugins/plugin-navtree/dist/lib/browser/index.mjs.map":{"imports":[],"exports":[],"inputs":{},"bytes":6356},"packages/plugins/plugin-navtree/dist/lib/browser/index.mjs":{"imports":[{"path":"packages/plugins/plugin-navtree/dist/lib/browser/chunk-SKZPY4LJ.mjs","kind":"import-statement"},{"path":"packages/plugins/plugin-navtree/dist/lib/browser/chunk-AOAGODQB.mjs","kind":"import-statement"},{"path":"packages/plugins/plugin-navtree/dist/lib/browser/chunk-KOXMEAOS.mjs","kind":"import-statement"},{"path":"@dxos/app-framework","kind":"import-statement","external":true},{"path":"@dxos/app-framework","kind":"import-statement","external":true}],"exports":["COMMANDS_DIALOG","KEY_BINDING","NAVTREE_PLUGIN","NavTreeCapabilities","NavTreeEvents","NavTreePlugin","expandActions","expandChildren","expandChildrenAndActions","getActions","getChildren","getFirstTwoRenderableChars","getParent","getPersistenceParent","l0ItemType","meta","resolveMigrationOperation","sortActions"],"entryPoint":"packages/plugins/plugin-navtree/src/index.ts","inputs":{"packages/plugins/plugin-navtree/src/index.ts":{"bytesInOutput":0},"packages/plugins/plugin-navtree/src/events.ts":{"bytesInOutput":207},"packages/plugins/plugin-navtree/src/NavTreePlugin.tsx":{"bytesInOutput":2231},"packages/plugins/plugin-navtree/src/translations.ts":{"bytesInOutput":453}},"bytes":3997},"packages/plugins/plugin-navtree/dist/lib/browser/app-graph-builder-BL7LRXCM.mjs.map":{"imports":[],"exports":[],"inputs":{},"bytes":2435},"packages/plugins/plugin-navtree/dist/lib/browser/app-graph-builder-BL7LRXCM.mjs":{"imports":[{"path":"packages/plugins/plugin-navtree/dist/lib/browser/chunk-KOXMEAOS.mjs","kind":"import-statement"},{"path":"@dxos/app-framework","kind":"import-statement","external":true},{"path":"@dxos/plugin-graph","kind":"import-statement","external":true}],"exports":["default"],"entryPoint":"packages/plugins/plugin-navtree/src/capabilities/app-graph-builder.ts","inputs":{"packages/plugins/plugin-navtree/src/capabilities/app-graph-builder.ts":{"bytesInOutput":1003}},"bytes":1260},"packages/plugins/plugin-navtree/dist/lib/browser/intent-resolver-U25VBFH3.mjs.map":{"imports":[],"exports":[],"inputs":{},"bytes":2665},"packages/plugins/plugin-navtree/dist/lib/browser/intent-resolver-U25VBFH3.mjs":{"imports":[{"path":"packages/plugins/plugin-navtree/dist/lib/browser/chunk-AOAGODQB.mjs","kind":"import-statement"},{"path":"packages/plugins/plugin-navtree/dist/lib/browser/chunk-KOXMEAOS.mjs","kind":"import-statement"},{"path":"@dxos/app-framework","kind":"import-statement","external":true},{"path":"@dxos/echo-schema","kind":"import-statement","external":true},{"path":"@dxos/log","kind":"import-statement","external":true}],"exports":["default"],"entryPoint":"packages/plugins/plugin-navtree/src/capabilities/intent-resolver.ts","inputs":{"packages/plugins/plugin-navtree/src/capabilities/intent-resolver.ts":{"bytesInOutput":1242}},"bytes":1510},"packages/plugins/plugin-navtree/dist/lib/browser/keyboard-MUBRTPI5.mjs.map":{"imports":[],"exports":[],"inputs":{},"bytes":3671},"packages/plugins/plugin-navtree/dist/lib/browser/keyboard-MUBRTPI5.mjs":{"imports":[{"path":"packages/plugins/plugin-navtree/dist/lib/browser/chunk-KOXMEAOS.mjs","kind":"import-statement"},{"path":"@dxos/app-framework","kind":"import-statement","external":true},{"path":"@dxos/keyboard","kind":"import-statement","external":true},{"path":"@dxos/plugin-graph","kind":"import-statement","external":true},{"path":"@dxos/util","kind":"import-statement","external":true}],"exports":["default"],"entryPoint":"packages/plugins/plugin-navtree/src/capabilities/keyboard.ts","inputs":{"packages/plugins/plugin-navtree/src/capabilities/keyboard.ts":{"bytesInOutput":1480}},"bytes":1688},"packages/plugins/plugin-navtree/dist/lib/browser/react-surface-OZDS36WN.mjs.map":{"imports":[],"exports":[],"inputs":{},"bytes":3166},"packages/plugins/plugin-navtree/dist/lib/browser/react-surface-OZDS36WN.mjs":{"imports":[{"path":"packages/plugins/plugin-navtree/dist/lib/browser/chunk-SKZPY4LJ.mjs","kind":"import-statement"},{"path":"packages/plugins/plugin-navtree/dist/lib/browser/chunk-AOAGODQB.mjs","kind":"import-statement"},{"path":"packages/plugins/plugin-navtree/dist/lib/browser/chunk-KOXMEAOS.mjs","kind":"import-statement"},{"path":"react","kind":"import-statement","external":true},{"path":"@dxos/app-framework","kind":"import-statement","external":true},{"path":"@dxos/plugin-graph","kind":"import-statement","external":true}],"exports":["default"],"entryPoint":"packages/plugins/plugin-navtree/src/capabilities/react-surface.tsx","inputs":{"packages/plugins/plugin-navtree/src/capabilities/react-surface.tsx":{"bytesInOutput":1411}},"bytes":1829},"packages/plugins/plugin-navtree/dist/lib/browser/chunk-SKZPY4LJ.mjs.map":{"imports":[],"exports":[],"inputs":{},"bytes":81310},"packages/plugins/plugin-navtree/dist/lib/browser/chunk-SKZPY4LJ.mjs":{"imports":[{"path":"packages/plugins/plugin-navtree/dist/lib/browser/chunk-AOAGODQB.mjs","kind":"import-statement"},{"path":"packages/plugins/plugin-navtree/dist/lib/browser/chunk-KOXMEAOS.mjs","kind":"import-statement"},{"path":"react","kind":"import-statement","external":true},{"path":"@dxos/app-framework","kind":"import-statement","external":true},{"path":"@dxos/app-graph","kind":"import-statement","external":true},{"path":"@dxos/keyboard","kind":"import-statement","external":true},{"path":"@dxos/react-ui","kind":"import-statement","external":true},{"path":"@dxos/react-ui-searchlist","kind":"import-statement","external":true},{"path":"@dxos/react-ui-theme","kind":"import-statement","external":true},{"path":"@dxos/util","kind":"import-statement","external":true},{"path":"@phosphor-icons/react","kind":"import-statement","external":true},{"path":"react","kind":"import-statement","external":true},{"path":"@dxos/app-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":"react","kind":"import-statement","external":true},{"path":"@dxos/app-framework","kind":"import-statement","external":true},{"path":"@dxos/plugin-client/types","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":"@dxos/app-graph","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":"@preact/signals-core","kind":"import-statement","external":true},{"path":"react","kind":"import-statement","external":true},{"path":"@dxos/app-framework","kind":"import-statement","external":true},{"path":"@dxos/app-graph","kind":"import-statement","external":true},{"path":"@dxos/react-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":"react","kind":"import-statement","external":true},{"path":"@dxos/react-ui-tabs","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/react-ui","kind":"import-statement","external":true},{"path":"@dxos/react-ui-tabs","kind":"import-statement","external":true},{"path":"@dxos/react-ui-theme","kind":"import-statement","external":true},{"path":"react","kind":"import-statement","external":true},{"path":"@dxos/debug","kind":"import-statement","external":true},{"path":"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-list","kind":"import-statement","external":true},{"path":"@dxos/react-ui-tabs","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":"react","kind":"import-statement","external":true},{"path":"@dxos/react-ui","kind":"import-statement","external":true},{"path":"@dxos/react-ui-menu","kind":"import-statement","external":true},{"path":"@dxos/react-ui-theme","kind":"import-statement","external":true},{"path":"@dxos/app-framework","kind":"import-statement","external":true},{"path":"packages/plugins/plugin-navtree/dist/lib/browser/app-graph-builder-BL7LRXCM.mjs","kind":"dynamic-import"},{"path":"packages/plugins/plugin-navtree/dist/lib/browser/intent-resolver-U25VBFH3.mjs","kind":"dynamic-import"},{"path":"packages/plugins/plugin-navtree/dist/lib/browser/keyboard-MUBRTPI5.mjs","kind":"dynamic-import"},{"path":"packages/plugins/plugin-navtree/dist/lib/browser/react-surface-OZDS36WN.mjs","kind":"dynamic-import"},{"path":"packages/plugins/plugin-navtree/dist/lib/browser/state-IEFQTUPG.mjs","kind":"dynamic-import"},{"path":"react","kind":"import-statement","external":true},{"path":"@dxos/react-ui","kind":"import-statement","external":true}],"exports":["AppGraphBuilder","CommandsDialogContent","CommandsTrigger","IntentResolver","Keyboard","NODE_TYPE","NavTreeContainer","NavTreeDocumentTitle","NotchStart","ReactSurface","State","expandActions","expandChildren","expandChildrenAndActions","getActions","getChildren","getFirstTwoRenderableChars","getParent","getPersistenceParent","l0ItemType","resolveMigrationOperation","sortActions"],"inputs":{"packages/plugins/plugin-navtree/src/components/CommandsDialog.tsx":{"bytesInOutput":4002},"packages/plugins/plugin-navtree/src/components/CommandsTrigger.tsx":{"bytesInOutput":1039},"packages/plugins/plugin-navtree/src/components/NotchStart.tsx":{"bytesInOutput":882},"packages/plugins/plugin-navtree/src/components/HaloButton.tsx":{"bytesInOutput":1237},"packages/plugins/plugin-navtree/src/util.ts":{"bytesInOutput":3764},"packages/plugins/plugin-navtree/src/components/NavTreeContainer.tsx":{"bytesInOutput":8864},"packages/plugins/plugin-navtree/src/components/NavTree.tsx":{"bytesInOutput":1609},"packages/plugins/plugin-navtree/src/components/L0Menu.tsx":{"bytesInOutput":7305},"packages/plugins/plugin-navtree/src/components/NavTreeContext.tsx":{"bytesInOutput":252},"packages/plugins/plugin-navtree/src/hooks.ts":{"bytesInOutput":334},"packages/plugins/plugin-navtree/src/components/L1Panels.tsx":{"bytesInOutput":2924},"packages/plugins/plugin-navtree/src/components/NavTreeItemColumns.tsx":{"bytesInOutput":2423},"packages/plugins/plugin-navtree/src/components/NavTreeItemAction.tsx":{"bytesInOutput":2792},"packages/plugins/plugin-navtree/src/capabilities/index.ts":{"bytesInOutput":387},"packages/plugins/plugin-navtree/src/components/NavTreeDocumentTitle.tsx":{"bytesInOutput":456},"packages/plugins/plugin-navtree/src/components/index.ts":{"bytesInOutput":0}},"bytes":40285},"packages/plugins/plugin-navtree/dist/lib/browser/state-IEFQTUPG.mjs.map":{"imports":[],"exports":[],"inputs":{},"bytes":6217},"packages/plugins/plugin-navtree/dist/lib/browser/state-IEFQTUPG.mjs":{"imports":[{"path":"packages/plugins/plugin-navtree/dist/lib/browser/chunk-AOAGODQB.mjs","kind":"import-statement"},{"path":"packages/plugins/plugin-navtree/dist/lib/browser/chunk-KOXMEAOS.mjs","kind":"import-statement"},{"path":"@preact/signals-core","kind":"import-statement","external":true},{"path":"@dxos/app-framework","kind":"import-statement","external":true},{"path":"@dxos/live-object","kind":"import-statement","external":true},{"path":"@dxos/react-ui-list","kind":"import-statement","external":true}],"exports":["default"],"entryPoint":"packages/plugins/plugin-navtree/src/capabilities/state.ts","inputs":{"packages/plugins/plugin-navtree/src/capabilities/state.ts":{"bytesInOutput":2487}},"bytes":2751},"packages/plugins/plugin-navtree/dist/lib/browser/chunk-AOAGODQB.mjs.map":{"imports":[],"exports":[],"inputs":{},"bytes":1116},"packages/plugins/plugin-navtree/dist/lib/browser/chunk-AOAGODQB.mjs":{"imports":[{"path":"packages/plugins/plugin-navtree/dist/lib/browser/chunk-KOXMEAOS.mjs","kind":"import-statement"},{"path":"@dxos/app-framework","kind":"import-statement","external":true}],"exports":["NavTreeCapabilities"],"inputs":{"packages/plugins/plugin-navtree/src/capabilities/capabilities.ts":{"bytesInOutput":257}},"bytes":462},"packages/plugins/plugin-navtree/dist/lib/browser/chunk-KOXMEAOS.mjs.map":{"imports":[],"exports":[],"inputs":{},"bytes":690},"packages/plugins/plugin-navtree/dist/lib/browser/chunk-KOXMEAOS.mjs":{"imports":[],"exports":["COMMANDS_DIALOG","KEY_BINDING","NAVTREE_PLUGIN","meta"],"inputs":{"packages/plugins/plugin-navtree/src/meta.ts":{"bytesInOutput":175}},"bytes":338}}}
|
|
@@ -4,7 +4,7 @@ import {
|
|
|
4
4
|
NavTreeContainer,
|
|
5
5
|
NavTreeDocumentTitle,
|
|
6
6
|
NotchStart
|
|
7
|
-
} from "./chunk-
|
|
7
|
+
} from "./chunk-SKZPY4LJ.mjs";
|
|
8
8
|
import "./chunk-AOAGODQB.mjs";
|
|
9
9
|
import {
|
|
10
10
|
COMMANDS_DIALOG,
|
|
@@ -54,4 +54,4 @@ var react_surface_default = () => contributes(Capabilities.ReactSurface, [
|
|
|
54
54
|
export {
|
|
55
55
|
react_surface_default as default
|
|
56
56
|
};
|
|
57
|
-
//# sourceMappingURL=react-surface-
|
|
57
|
+
//# sourceMappingURL=react-surface-OZDS36WN.mjs.map
|
|
@@ -9,7 +9,7 @@ import {
|
|
|
9
9
|
import { effect } from "@preact/signals-core";
|
|
10
10
|
import { Capabilities, contributes } from "@dxos/app-framework";
|
|
11
11
|
import { create } from "@dxos/live-object";
|
|
12
|
-
import { Path } from "@dxos/react-ui-
|
|
12
|
+
import { Path } from "@dxos/react-ui-list";
|
|
13
13
|
var KEY = `${NAVTREE_PLUGIN}/state`;
|
|
14
14
|
var getInitialState = () => {
|
|
15
15
|
const stringified = localStorage.getItem(KEY);
|
|
@@ -105,4 +105,4 @@ var state_default = (context) => {
|
|
|
105
105
|
export {
|
|
106
106
|
state_default as default
|
|
107
107
|
};
|
|
108
|
-
//# sourceMappingURL=state-
|
|
108
|
+
//# sourceMappingURL=state-IEFQTUPG.mjs.map
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
{
|
|
2
|
+
"version": 3,
|
|
3
|
+
"sources": ["../../../src/capabilities/state.ts"],
|
|
4
|
+
"sourcesContent": ["//\n// Copyright 2025 DXOS.org\n//\n\nimport { effect } from '@preact/signals-core';\n\nimport { Capabilities, contributes, type PluginsContext } from '@dxos/app-framework';\nimport { type ReactiveObject, create } from '@dxos/live-object';\nimport { Path } from '@dxos/react-ui-list';\n\nimport { NavTreeCapabilities } from './capabilities';\nimport { NAVTREE_PLUGIN } from '../meta';\n\nconst KEY = `${NAVTREE_PLUGIN}/state`;\n\nconst getInitialState = () => {\n const stringified = localStorage.getItem(KEY);\n if (!stringified) {\n return;\n }\n\n try {\n const cached: [string, { open: boolean; current: boolean }][] = JSON.parse(stringified);\n return cached.map(\n ([key, value]): [\n string,\n ReactiveObject<{\n open: boolean;\n current: boolean;\n }>,\n ] => [key, create({ open: value.open, current: false })],\n );\n } catch {}\n};\n\nexport default (context: PluginsContext) => {\n const layout = context.requestCapability(Capabilities.Layout);\n\n // TODO(wittjosiah): This currently needs to be not a ReactiveObject at the root.\n // If it is a ReactiveObject then React errors when initializing new paths because of state change during render.\n // Ideally this could be a ReactiveObject but be able to access and update the root level without breaking render.\n // Wrapping accesses and updates in `untracked` didn't seem to work in all cases.\n const state = new Map<string, ReactiveObject<{ open: boolean; current: boolean }>>(\n getInitialState() ?? [\n // TODO(thure): Initialize these dynamically.\n ['root', create({ open: true, current: false })],\n ['root~dxos.org/plugin/space-spaces', create({ open: true, current: false })],\n ['root~dxos.org/plugin/files', create({ open: true, current: false })],\n ],\n );\n\n const getItem = (_path: string[]) => {\n const path = Path.create(..._path);\n const value = state.get(path) ?? create({ open: false, current: false });\n if (!state.has(path)) {\n state.set(path, value);\n }\n\n return value;\n };\n\n const setItem = (path: string[], key: 'open' | 'current', next: boolean) => {\n const value = getItem(path);\n value[key] = next;\n\n localStorage.setItem(KEY, JSON.stringify(Array.from(state.entries())));\n };\n\n const isOpen = (path: string[]) => getItem(path).open;\n const isCurrent = (path: string[]) => getItem(path).current;\n\n let previous: string[] = [];\n const unsubscribe = effect(() => {\n const removed = previous.filter((id) => !layout.active.includes(id));\n previous = layout.active;\n\n // TODO(wittjosiah): This is setTimeout because there's a race between the keys be initialized.\n // This could be avoided if the location was a path as well and not just an id.\n setTimeout(() => {\n removed.forEach((id) => {\n const keys = Array.from(state.keys()).filter((key) => Path.last(key) === id);\n keys.forEach((key) => {\n setItem(Path.parts(key), 'current', false);\n });\n });\n\n layout.active.forEach((id) => {\n const keys = Array.from(new Set([...state.keys(), id])).filter((key) => Path.last(key) === id);\n keys.forEach((key) => {\n setItem(Path.parts(key), 'current', true);\n });\n });\n });\n });\n\n return contributes(NavTreeCapabilities.State, { state, getItem, setItem, isOpen, isCurrent }, () => unsubscribe());\n};\n"],
|
|
5
|
+
"mappings": ";;;;;;;;AAIA,SAASA,cAAc;AAEvB,SAASC,cAAcC,mBAAwC;AAC/D,SAA8BC,cAAc;AAC5C,SAASC,YAAY;AAKrB,IAAMC,MAAM,GAAGC,cAAAA;AAEf,IAAMC,kBAAkB,MAAA;AACtB,QAAMC,cAAcC,aAAaC,QAAQL,GAAAA;AACzC,MAAI,CAACG,aAAa;AAChB;EACF;AAEA,MAAI;AACF,UAAMG,SAA0DC,KAAKC,MAAML,WAAAA;AAC3E,WAAOG,OAAOG,IACZ,CAAC,CAACC,KAAKC,KAAAA,MAMF;MAACD;MAAKE,OAAO;QAAEC,MAAMF,MAAME;QAAMC,SAAS;MAAM,CAAA;KAAG;EAE5D,QAAQ;EAAC;AACX;AAEA,IAAA,gBAAe,CAACC,YAAAA;AACd,QAAMC,SAASD,QAAQE,kBAAkBC,aAAaC,MAAM;AAM5D,QAAMC,QAAQ,IAAIC,IAChBnB,gBAAAA,KAAqB;;IAEnB;MAAC;MAAQU,OAAO;QAAEC,MAAM;QAAMC,SAAS;MAAM,CAAA;;IAC7C;MAAC;MAAqCF,OAAO;QAAEC,MAAM;QAAMC,SAAS;MAAM,CAAA;;IAC1E;MAAC;MAA8BF,OAAO;QAAEC,MAAM;QAAMC,SAAS;MAAM,CAAA;;GACpE;AAGH,QAAMT,UAAU,CAACiB,UAAAA;AACf,UAAMC,OAAOC,KAAKZ,OAAM,GAAIU,KAAAA;AAC5B,UAAMX,QAAQS,MAAMK,IAAIF,IAAAA,KAASX,OAAO;MAAEC,MAAM;MAAOC,SAAS;IAAM,CAAA;AACtE,QAAI,CAACM,MAAMM,IAAIH,IAAAA,GAAO;AACpBH,YAAMO,IAAIJ,MAAMZ,KAAAA;IAClB;AAEA,WAAOA;EACT;AAEA,QAAMiB,UAAU,CAACL,MAAgBb,KAAyBmB,SAAAA;AACxD,UAAMlB,QAAQN,QAAQkB,IAAAA;AACtBZ,UAAMD,GAAAA,IAAOmB;AAEbzB,iBAAawB,QAAQ5B,KAAKO,KAAKuB,UAAUC,MAAMC,KAAKZ,MAAMa,QAAO,CAAA,CAAA,CAAA;EACnE;AAEA,QAAMC,SAAS,CAACX,SAAmBlB,QAAQkB,IAAAA,EAAMV;AACjD,QAAMsB,YAAY,CAACZ,SAAmBlB,QAAQkB,IAAAA,EAAMT;AAEpD,MAAIsB,WAAqB,CAAA;AACzB,QAAMC,cAAcC,OAAO,MAAA;AACzB,UAAMC,UAAUH,SAASI,OAAO,CAACC,OAAO,CAACzB,OAAO0B,OAAOC,SAASF,EAAAA,CAAAA;AAChEL,eAAWpB,OAAO0B;AAIlBE,eAAW,MAAA;AACTL,cAAQM,QAAQ,CAACJ,OAAAA;AACf,cAAMK,OAAOf,MAAMC,KAAKZ,MAAM0B,KAAI,CAAA,EAAIN,OAAO,CAAC9B,QAAQc,KAAKuB,KAAKrC,GAAAA,MAAS+B,EAAAA;AACzEK,aAAKD,QAAQ,CAACnC,QAAAA;AACZkB,kBAAQJ,KAAKwB,MAAMtC,GAAAA,GAAM,WAAW,KAAA;QACtC,CAAA;MACF,CAAA;AAEAM,aAAO0B,OAAOG,QAAQ,CAACJ,OAAAA;AACrB,cAAMK,OAAOf,MAAMC,KAAK,oBAAIiB,IAAI;aAAI7B,MAAM0B,KAAI;UAAIL;SAAG,CAAA,EAAGD,OAAO,CAAC9B,QAAQc,KAAKuB,KAAKrC,GAAAA,MAAS+B,EAAAA;AAC3FK,aAAKD,QAAQ,CAACnC,QAAAA;AACZkB,kBAAQJ,KAAKwB,MAAMtC,GAAAA,GAAM,WAAW,IAAA;QACtC,CAAA;MACF,CAAA;IACF,CAAA;EACF,CAAA;AAEA,SAAOwC,YAAYC,oBAAoBC,OAAO;IAAEhC;IAAOf;IAASuB;IAASM;IAAQC;EAAU,GAAG,MAAME,YAAAA,CAAAA;AACtG;",
|
|
6
|
+
"names": ["effect", "Capabilities", "contributes", "create", "Path", "KEY", "NAVTREE_PLUGIN", "getInitialState", "stringified", "localStorage", "getItem", "cached", "JSON", "parse", "map", "key", "value", "create", "open", "current", "context", "layout", "requestCapability", "Capabilities", "Layout", "state", "Map", "_path", "path", "Path", "get", "has", "set", "setItem", "next", "stringify", "Array", "from", "entries", "isOpen", "isCurrent", "previous", "unsubscribe", "effect", "removed", "filter", "id", "active", "includes", "setTimeout", "forEach", "keys", "last", "parts", "Set", "contributes", "NavTreeCapabilities", "State"]
|
|
7
|
+
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"L0Menu.d.ts","sourceRoot":"","sources":["../../../../src/components/L0Menu.tsx"],"names":[],"mappings":"AAIA,OAAO,KAAgD,MAAM,OAAO,CAAC;AAGrE,OAAO,EAAE,KAAK,IAAI,EAAE,MAAM,iBAAiB,CAAC;
|
|
1
|
+
{"version":3,"file":"L0Menu.d.ts","sourceRoot":"","sources":["../../../../src/components/L0Menu.tsx"],"names":[],"mappings":"AAIA,OAAO,KAAgD,MAAM,OAAO,CAAC;AAGrE,OAAO,EAAE,KAAK,IAAI,EAAE,MAAM,iBAAiB,CAAC;AAqK5C,eAAO,MAAM,MAAM,kDAKhB;IACD,aAAa,EAAE,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC;IAC3B,WAAW,EAAE,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC;IACzB,MAAM,CAAC,EAAE,IAAI,CAAC,GAAG,CAAC,CAAC;IACnB,IAAI,EAAE,MAAM,EAAE,CAAC;CAChB,sBAmCA,CAAC"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@dxos/plugin-navtree",
|
|
3
|
-
"version": "0.7.5-labs.
|
|
3
|
+
"version": "0.7.5-labs.401163d",
|
|
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",
|
|
@@ -28,29 +28,28 @@
|
|
|
28
28
|
"@radix-ui/react-dismissable-layer": "1.1.5",
|
|
29
29
|
"@radix-ui/react-use-controllable-state": "1.1.0",
|
|
30
30
|
"date-fns": "^3.3.1",
|
|
31
|
-
"@dxos/app-framework": "0.7.5-labs.
|
|
32
|
-
"@dxos/app-graph": "0.7.5-labs.
|
|
33
|
-
"@dxos/async": "0.7.5-labs.
|
|
34
|
-
"@dxos/
|
|
35
|
-
"@dxos/
|
|
36
|
-
"@dxos/
|
|
37
|
-
"@dxos/keyboard": "0.7.5-labs.
|
|
38
|
-
"@dxos/
|
|
39
|
-
"@dxos/
|
|
40
|
-
"@dxos/log": "0.7.5-labs.
|
|
41
|
-
"@dxos/plugin-client": "0.7.5-labs.
|
|
42
|
-
"@dxos/plugin-
|
|
43
|
-
"@dxos/plugin-
|
|
44
|
-
"@dxos/plugin-theme": "0.7.5-labs.
|
|
45
|
-
"@dxos/protocols": "0.7.5-labs.
|
|
46
|
-
"@dxos/react-
|
|
47
|
-
"@dxos/react-ui-
|
|
48
|
-
"@dxos/react-
|
|
49
|
-
"@dxos/react-ui-
|
|
50
|
-
"@dxos/react-ui-
|
|
51
|
-
"@dxos/react-ui-stack": "0.7.5-labs.
|
|
52
|
-
"@dxos/
|
|
53
|
-
"@dxos/util": "0.7.5-labs.071a3e2"
|
|
31
|
+
"@dxos/app-framework": "0.7.5-labs.401163d",
|
|
32
|
+
"@dxos/app-graph": "0.7.5-labs.401163d",
|
|
33
|
+
"@dxos/async": "0.7.5-labs.401163d",
|
|
34
|
+
"@dxos/echo-schema": "0.7.5-labs.401163d",
|
|
35
|
+
"@dxos/debug": "0.7.5-labs.401163d",
|
|
36
|
+
"@dxos/invariant": "0.7.5-labs.401163d",
|
|
37
|
+
"@dxos/keyboard": "0.7.5-labs.401163d",
|
|
38
|
+
"@dxos/local-storage": "0.7.5-labs.401163d",
|
|
39
|
+
"@dxos/live-object": "0.7.5-labs.401163d",
|
|
40
|
+
"@dxos/log": "0.7.5-labs.401163d",
|
|
41
|
+
"@dxos/plugin-client": "0.7.5-labs.401163d",
|
|
42
|
+
"@dxos/plugin-graph": "0.7.5-labs.401163d",
|
|
43
|
+
"@dxos/plugin-observability": "0.7.5-labs.401163d",
|
|
44
|
+
"@dxos/plugin-theme": "0.7.5-labs.401163d",
|
|
45
|
+
"@dxos/protocols": "0.7.5-labs.401163d",
|
|
46
|
+
"@dxos/react-client": "0.7.5-labs.401163d",
|
|
47
|
+
"@dxos/react-ui-menu": "0.7.5-labs.401163d",
|
|
48
|
+
"@dxos/react-ui-list": "0.7.5-labs.401163d",
|
|
49
|
+
"@dxos/react-ui-searchlist": "0.7.5-labs.401163d",
|
|
50
|
+
"@dxos/react-ui-tabs": "0.7.5-labs.401163d",
|
|
51
|
+
"@dxos/react-ui-stack": "0.7.5-labs.401163d",
|
|
52
|
+
"@dxos/util": "0.7.5-labs.401163d"
|
|
54
53
|
},
|
|
55
54
|
"devDependencies": {
|
|
56
55
|
"@phosphor-icons/react": "^2.1.5",
|
|
@@ -59,18 +58,18 @@
|
|
|
59
58
|
"react": "~18.2.0",
|
|
60
59
|
"react-dom": "~18.2.0",
|
|
61
60
|
"vite": "5.4.7",
|
|
62
|
-
"@dxos/echo-signals": "0.7.5-labs.
|
|
63
|
-
"@dxos/random": "0.7.5-labs.
|
|
64
|
-
"@dxos/react-ui": "0.7.5-labs.
|
|
65
|
-
"@dxos/react-ui-theme": "0.7.5-labs.
|
|
66
|
-
"@dxos/storybook-utils": "0.7.5-labs.
|
|
61
|
+
"@dxos/echo-signals": "0.7.5-labs.401163d",
|
|
62
|
+
"@dxos/random": "0.7.5-labs.401163d",
|
|
63
|
+
"@dxos/react-ui": "0.7.5-labs.401163d",
|
|
64
|
+
"@dxos/react-ui-theme": "0.7.5-labs.401163d",
|
|
65
|
+
"@dxos/storybook-utils": "0.7.5-labs.401163d"
|
|
67
66
|
},
|
|
68
67
|
"peerDependencies": {
|
|
69
68
|
"@phosphor-icons/react": "^2.1.5",
|
|
70
69
|
"react": "~18.2.0",
|
|
71
70
|
"react-dom": "~18.2.0",
|
|
72
|
-
"@dxos/react-ui": "0.7.5-labs.
|
|
73
|
-
"@dxos/react-ui-theme": "0.7.5-labs.
|
|
71
|
+
"@dxos/react-ui": "0.7.5-labs.401163d",
|
|
72
|
+
"@dxos/react-ui-theme": "0.7.5-labs.401163d"
|
|
74
73
|
},
|
|
75
74
|
"publishConfig": {
|
|
76
75
|
"access": "public"
|
|
@@ -6,7 +6,7 @@ import { effect } from '@preact/signals-core';
|
|
|
6
6
|
|
|
7
7
|
import { Capabilities, contributes, type PluginsContext } from '@dxos/app-framework';
|
|
8
8
|
import { type ReactiveObject, create } from '@dxos/live-object';
|
|
9
|
-
import { Path } from '@dxos/react-ui-
|
|
9
|
+
import { Path } from '@dxos/react-ui-list';
|
|
10
10
|
|
|
11
11
|
import { NavTreeCapabilities } from './capabilities';
|
|
12
12
|
import { NAVTREE_PLUGIN } from '../meta';
|
|
@@ -85,6 +85,7 @@ const L0Item = ({ item, parent, path, pinned }: L0ItemProps) => {
|
|
|
85
85
|
? { onClick: handleClick, 'data-testid': testId, 'data-itemid': id }
|
|
86
86
|
: { onClick: handleClick };
|
|
87
87
|
const localizedString = toLocalizedString(item.properties.label, t);
|
|
88
|
+
const hue = item.properties.hue ?? null;
|
|
88
89
|
const avatarValue = useMemo(
|
|
89
90
|
() => (type === 'tab' ? getFirstTwoRenderableChars(localizedString).join('') : []),
|
|
90
91
|
[type, item.properties.label, t],
|
|
@@ -105,10 +106,13 @@ const L0Item = ({ item, parent, path, pinned }: L0ItemProps) => {
|
|
|
105
106
|
<div
|
|
106
107
|
role='none'
|
|
107
108
|
className={mx(
|
|
108
|
-
'absolute -z-[1]
|
|
109
|
+
'absolute -z-[1] dx-focus-ring-group-indicator transition-colors',
|
|
109
110
|
type === 'tab' || pinned ? 'rounded' : 'rounded-full',
|
|
110
|
-
pinned
|
|
111
|
+
pinned
|
|
112
|
+
? 'bg-transparent group-hover/l0i:bg-groupSurface inset-inline-3 inset-block-0.5'
|
|
113
|
+
: 'bg-groupSurface inset-inline-3 inset-block-2',
|
|
111
114
|
)}
|
|
115
|
+
{...(hue && { style: { background: `var(--dx-${hue}Surface)` } })}
|
|
112
116
|
/>
|
|
113
117
|
)}
|
|
114
118
|
<div
|
|
@@ -116,7 +120,11 @@ const L0Item = ({ item, parent, path, pinned }: L0ItemProps) => {
|
|
|
116
120
|
className='hidden group-aria-selected/l0i:block absolute inline-start-0 inset-block-4 is-1 bg-accentSurface rounded-ie'
|
|
117
121
|
/>
|
|
118
122
|
{type === 'tab' && item.properties.disposition !== 'pin-end' ? (
|
|
119
|
-
<span
|
|
123
|
+
<span
|
|
124
|
+
role='img'
|
|
125
|
+
className='place-self-center text-3xl font-light'
|
|
126
|
+
{...(hue && { style: { color: `var(--dx-${hue}SurfaceText)` } })}
|
|
127
|
+
>
|
|
120
128
|
{avatarValue}
|
|
121
129
|
</span>
|
|
122
130
|
) : (
|
|
@@ -13,7 +13,7 @@ import { isActionLike, type NodeArg } from '@dxos/app-graph';
|
|
|
13
13
|
import { create, type ReactiveObject } from '@dxos/live-object';
|
|
14
14
|
import { faker } from '@dxos/random';
|
|
15
15
|
import { isTreeData, type TreeData } from '@dxos/react-ui-list';
|
|
16
|
-
import { Path } from '@dxos/react-ui-
|
|
16
|
+
import { Path } from '@dxos/react-ui-list';
|
|
17
17
|
import { withLayout, withTheme } from '@dxos/storybook-utils';
|
|
18
18
|
|
|
19
19
|
import { StorybookNavTree } from '../stories/StorybookNavTree';
|
|
@@ -15,7 +15,7 @@ import { registerSignalsRuntime } from '@dxos/echo-signals/react';
|
|
|
15
15
|
import { create, type ReactiveObject } from '@dxos/live-object';
|
|
16
16
|
import { faker } from '@dxos/random';
|
|
17
17
|
import { isTreeData, type PropsFromTreeItem } from '@dxos/react-ui-list';
|
|
18
|
-
import { Path } from '@dxos/react-ui-
|
|
18
|
+
import { Path } from '@dxos/react-ui-list';
|
|
19
19
|
import { withLayout, withTheme } from '@dxos/storybook-utils';
|
|
20
20
|
|
|
21
21
|
import { StorybookNavTree } from './StorybookNavTree';
|
package/src/util.ts
CHANGED
|
@@ -12,7 +12,7 @@ import {
|
|
|
12
12
|
isAction,
|
|
13
13
|
isActionLike,
|
|
14
14
|
} from '@dxos/app-graph';
|
|
15
|
-
import {
|
|
15
|
+
import { isNonNullable } from '@dxos/util';
|
|
16
16
|
|
|
17
17
|
import { type FlattenedActions, type NavTreeItemGraphNode } from './types';
|
|
18
18
|
|
|
@@ -95,7 +95,7 @@ export const getChildren = (
|
|
|
95
95
|
const nextPath = [...path, node.id];
|
|
96
96
|
return nextPath.includes(n.id) ? undefined : (n as NavTreeItemGraphNode);
|
|
97
97
|
})
|
|
98
|
-
.filter(
|
|
98
|
+
.filter(isNonNullable) as NavTreeItemGraphNode[];
|
|
99
99
|
};
|
|
100
100
|
|
|
101
101
|
export const getActions = (graph: Graph, node: Node): FlattenedActions => {
|
|
@@ -1,7 +0,0 @@
|
|
|
1
|
-
{
|
|
2
|
-
"version": 3,
|
|
3
|
-
"sources": ["../../../src/components/CommandsDialog.tsx", "../../../src/components/CommandsTrigger.tsx", "../../../src/components/NotchStart.tsx", "../../../src/components/HaloButton.tsx", "../../../src/util.ts", "../../../src/components/NavTreeContainer.tsx", "../../../src/components/NavTree.tsx", "../../../src/components/L0Menu.tsx", "../../../src/components/NavTreeContext.tsx", "../../../src/hooks.ts", "../../../src/components/L1Panels.tsx", "../../../src/components/NavTreeItemColumns.tsx", "../../../src/components/NavTreeItemAction.tsx", "../../../src/capabilities/index.ts", "../../../src/components/NavTreeDocumentTitle.tsx"],
|
|
4
|
-
"sourcesContent": ["//\n// Copyright 2023 DXOS.org\n//\n\nimport React, { useMemo, useState } from 'react';\n\nimport { createIntent, LayoutAction, useAppGraph, useIntentDispatcher } from '@dxos/app-framework';\nimport { type ActionLike, isActionGroup, isAction } from '@dxos/app-graph';\nimport { Keyboard, keySymbols } from '@dxos/keyboard';\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 { dispatchPromise: dispatch } = useIntentDispatcher();\n const { graph } = useAppGraph();\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(createIntent(LayoutAction.UpdateDialog, { part: 'dialog', options: { 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 2024 DXOS.org\n//\n\nimport { MagnifyingGlass } from '@phosphor-icons/react';\nimport React from 'react';\n\nimport { createIntent, LayoutAction, useIntentDispatcher } from '@dxos/app-framework';\nimport { Button, useTranslation } from '@dxos/react-ui';\nimport { getSize } from '@dxos/react-ui-theme';\n\nimport { COMMANDS_DIALOG, NAVTREE_PLUGIN } from '../meta';\n\n// TODO(thure): Refactor to be handled by a more appropriate plugin.\nexport const CommandsTrigger = () => {\n const { dispatchPromise: dispatch } = useIntentDispatcher();\n const { t } = useTranslation(NAVTREE_PLUGIN);\n return (\n <Button\n classNames='m-1 pli-1 lg:pli-2'\n onClick={() =>\n dispatch(\n createIntent(LayoutAction.UpdateDialog, {\n part: 'dialog',\n subject: COMMANDS_DIALOG,\n options: {\n blockAlign: 'start',\n },\n }),\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 2024 DXOS.org\n//\n\nimport React from 'react';\n\nimport { createIntent, useCapabilities, useIntentDispatcher } from '@dxos/app-framework';\nimport { ClientAction } from '@dxos/plugin-client/types';\nimport { ObservabilityCapabilities } 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 // TODO(wittjosiah): Can this be removed now?\n const [observability] = useCapabilities(ObservabilityCapabilities.Observability);\n const { dispatchPromise: dispatch } = useIntentDispatcher();\n return (\n <HaloButton\n size={12}\n identityKey={identity?.identityKey.toHex()}\n hue={identity?.profile?.data?.hue}\n emoji={identity?.profile?.data?.emoji}\n internal={observability?.group === 'dxos'}\n onClick={() => dispatch(createIntent(ClientAction.ShareIdentity))}\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 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 isActionLike,\n} from '@dxos/app-graph';\nimport { nonNullable } from '@dxos/util';\n\nimport { type FlattenedActions, type NavTreeItemGraphNode } from './types';\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 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\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\nexport const l0ItemType = (item: Node<any>) => {\n if (item.properties.disposition === 'collection') {\n return 'collection';\n } else if (isActionLike(item)) {\n return 'action';\n } else if (item.properties.disposition === 'navigation') {\n return 'link';\n } else {\n return 'tab';\n }\n};\n\n// Regular expression to match renderable characters\n// Excludes control characters, combining marks, and other non-renderable characters\nconst renderableCharRegex =\n /^(?![\\p{Control}\\p{Mark}\\p{Separator}\\p{Surrogate}\\p{Unassigned}])[\\p{L}\\p{N}\\p{P}\\p{S}\\p{Emoji}]$/u;\n\n/**\n * Returns the first two renderable characters from a string that are separated by non-word characters.\n * Handles Unicode characters correctly.\n *\n * @param {string} label - The input string to process\n * @returns {[string, string]} Array containing the two characters, or empty strings if not found\n */\nexport const getFirstTwoRenderableChars = (label: string) => {\n // Convert string to array of Unicode characters\n const characters = Array.from(label);\n\n // Keep track of found renderable characters\n const result = ['', ''];\n let foundFirst = false;\n\n for (let i = 0; i < characters.length; i++) {\n const char = characters[i];\n\n if (renderableCharRegex.test(char)) {\n if (!foundFirst) {\n result[0] = char;\n foundFirst = true;\n } else {\n // Check if there's at least one non-word character between the first and current char\n const textBetween = characters.slice(result[0].length, i).join('');\n if (/[^\\p{L}\\p{N}_]/u.test(textBetween)) {\n result[1] = char;\n break;\n }\n }\n }\n }\n\n return result;\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 { untracked } from '@preact/signals-core';\nimport React, { memo, useCallback, useEffect, useMemo } from 'react';\n\nimport {\n createIntent,\n LayoutAction,\n Surface,\n useAppGraph,\n useCapability,\n useIntentDispatcher,\n useLayout,\n} from '@dxos/app-framework';\nimport { isAction, isActionLike, type Node } from '@dxos/app-graph';\nimport { isEchoObject, isSpace } from '@dxos/react-client/echo';\nimport { useMediaQuery } from '@dxos/react-ui';\nimport { isTreeData, type TreeData, type PropsFromTreeItem } from '@dxos/react-ui-list';\nimport { mx } from '@dxos/react-ui-theme';\nimport { arrayMove } from '@dxos/util';\n\nimport { NAV_TREE_ITEM, NavTree } from './NavTree';\nimport { NavTreeContext } from './NavTreeContext';\nimport { type NavTreeContextValue } from './types';\nimport { NavTreeCapabilities } from '../capabilities';\nimport { type NavTreeItemGraphNode } from '../types';\nimport {\n expandActions,\n expandChildren,\n getActions as naturalGetActions,\n getChildren,\n getParent,\n resolveMigrationOperation,\n expandChildrenAndActions,\n} from '../util';\n\n// TODO(thure): Is NavTree truly authoritative in this regard?\nexport const NODE_TYPE = 'dxos/app-graph/node';\n\nconst renderItemEnd = ({ node, open }: { node: Node; open: boolean }) => (\n <Surface role='navtree-item-end' data={{ id: node.id, subject: node.data, open }} limit={1} />\n);\n\nexport type NavTreeContainerProps = {\n popoverAnchorId?: string;\n topbar?: boolean;\n} & Pick<NavTreeContextValue, 'tab'>;\n\nexport const NavTreeContainer = memo(({ tab, popoverAnchorId, topbar }: NavTreeContainerProps) => {\n const [isLg] = useMediaQuery('lg', { ssr: false });\n const { dispatchPromise: dispatch } = useIntentDispatcher();\n const { graph } = useAppGraph();\n const layout = useLayout();\n const { isOpen, isCurrent, setItem } = useCapability(NavTreeCapabilities.State);\n\n const getActions = useCallback((node: Node) => naturalGetActions(graph, node), [graph]);\n\n const getItems = useCallback(\n (node?: Node, disposition?: string) => {\n return graph.nodes(node ?? graph.root, {\n filter: (node): node is Node => {\n return untracked(() => {\n const action = isActionLike(node);\n if (!disposition) {\n return !action || node.properties.disposition === 'item';\n }\n\n return node.properties.disposition === disposition;\n });\n },\n });\n },\n [graph],\n );\n\n const getProps = useCallback(\n (node: Node, path: string[]): PropsFromTreeItem => {\n const children = getChildren(graph, node, undefined, path);\n const parentOf =\n children.length > 0 ? children.map(({ id }) => id) : node.properties.role === 'branch' ? [] : undefined;\n return {\n id: node.id,\n label: node.properties.label ?? node.id,\n parentOf,\n icon: node.properties.icon,\n disabled: node.properties.disabled,\n className: mx(node.properties.modified && 'italic', node.properties.className),\n headingClassName: node.properties.headingClassName,\n testId: node.properties.testId,\n };\n },\n [graph],\n );\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 onOpenChange = useCallback(\n ({ item: { id }, path, open }: { item: Node; path: string[]; open: boolean }) => {\n // TODO(thure): This might become a localstorage leak; openItemIds that no longer exist should be removed from this map.\n setItem(path, 'open', open);\n\n if (graph) {\n const node = graph.findNode(id);\n return node && expandChildrenAndActions(graph, node as NavTreeItemGraphNode);\n }\n },\n [graph],\n );\n\n const onTabChange = useCallback(\n async (node: NavTreeItemGraphNode) => {\n await dispatch(createIntent(LayoutAction.SwitchWorkspace, { part: 'workspace', subject: node.id }));\n // Open the first item if the workspace is empty.\n if (layout.active.length === 0) {\n const [item] = getItems(node).filter((node) => !isActionLike(node));\n if (item) {\n await dispatch(createIntent(LayoutAction.Open, { part: 'main', subject: [item.id] }));\n }\n }\n },\n [dispatch, layout],\n );\n\n const canDrop = useCallback((source: TreeData, target: TreeData) => {\n const sourceNode = source.item as Node;\n const targetNode = target.item as Node;\n if (isSpace(targetNode.data)) {\n // TODO(wittjosiah): Find a way to only allow space as source for rearranging.\n return isEchoObject(sourceNode.data) || isSpace(sourceNode.data);\n } else if (isEchoObject(targetNode.data)) {\n return isEchoObject(sourceNode.data);\n } else {\n return false;\n }\n }, []);\n\n const handleSelect = useCallback(\n ({ item: node, path, option }: { item: Node; path: string[]; option: boolean }) => {\n if (!node.data) {\n return;\n }\n\n if (isAction(node)) {\n const [parent] = graph.nodes(node, { relation: 'inbound' });\n void (parent && node.data({ node: parent, caller: NAV_TREE_ITEM }));\n return;\n }\n\n const current = isCurrent(path, node);\n if (!current) {\n void dispatch(\n createIntent(LayoutAction.Open, {\n part: 'main',\n subject: [node.id],\n options: { key: node.properties.key },\n }),\n );\n } else if (option) {\n void dispatch(\n createIntent(LayoutAction.Close, { part: 'main', subject: [node.id], options: { state: false } }),\n );\n } else {\n void dispatch(createIntent(LayoutAction.ScrollIntoView, { part: 'current', subject: node.id }));\n }\n\n const defaultAction = graph.actions(node).find((action) => action.properties?.disposition === 'default');\n if (isAction(defaultAction)) {\n void (defaultAction.data as () => void)();\n }\n\n if (!isLg) {\n void dispatch(createIntent(LayoutAction.UpdateSidebar, { part: 'sidebar', options: { state: 'closed' } }));\n }\n },\n [graph, dispatch, isCurrent, isLg],\n );\n\n // TODO(wittjosiah): Factor out hook.\n useEffect(() => {\n return monitorForElements({\n canMonitor: ({ source }) => isTreeData(source.data),\n onDrop: ({ location, source }) => {\n // Didn't drop on anything.\n if (!location.current.dropTargets.length) {\n return;\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.item as NavTreeItemGraphNode;\n const targetNode = target.data.item as NavTreeItemGraphNode;\n const sourcePath = source.data.path as string[];\n const targetPath = target.data.path as string[];\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 const sourceParent = getParent(graph, sourceNode, sourcePath);\n const targetParent = getParent(graph, targetNode, targetPath);\n const sourceItems = getItems(sourceParent);\n const targetItems = getItems(targetParent);\n const sourceIndex = sourceItems.findIndex(({ id }) => id === sourceNode.id);\n const targetIndex = targetItems.findIndex(({ id }) => id === targetNode.id);\n const migrationIndex =\n instruction.type === 'make-child'\n ? undefined\n : instruction.type === 'reorder-below'\n ? targetIndex + 1\n : targetIndex;\n switch (operation) {\n case 'rearrange': {\n const nextItems = sourceItems.map(({ data }) => data);\n arrayMove(nextItems, sourceIndex, targetIndex);\n void sourceParent?.properties.onRearrangeChildren?.(nextItems);\n break;\n }\n case 'copy': {\n const target = instruction.type === 'make-child' ? targetNode : targetParent;\n void target?.properties.onCopy?.(sourceNode, migrationIndex);\n break;\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 void target?.properties.onTransferStart(sourceNode, migrationIndex);\n void sourceParent?.properties.onTransferEnd?.(sourceNode, target);\n break;\n }\n }\n }\n },\n });\n }, [graph]);\n\n const navTreeContextValue = useMemo(\n () => ({\n tab,\n onTabChange,\n getActions,\n loadDescendents,\n renderItemEnd,\n popoverAnchorId,\n topbar,\n getItems,\n getProps,\n isCurrent,\n isOpen,\n onOpenChange,\n canDrop,\n onSelect: handleSelect,\n }),\n [\n tab,\n onTabChange,\n getActions,\n loadDescendents,\n renderItemEnd,\n popoverAnchorId,\n topbar,\n getItems,\n getProps,\n isCurrent,\n isOpen,\n onOpenChange,\n canDrop,\n handleSelect,\n ],\n );\n\n return (\n <NavTreeContext.Provider value={navTreeContextValue}>\n <NavTree root={graph.root} id={graph.root.id} />\n </NavTreeContext.Provider>\n );\n});\n", "//\n// Copyright 2024 DXOS.org\n//\n\nimport React, { useMemo } from 'react';\n\nimport { Tabs } from '@dxos/react-ui-tabs';\nimport { byPosition } from '@dxos/util';\n\nimport { L0Menu } from './L0Menu';\nimport { L1Panels } from './L1Panels';\nimport { useNavTreeContext } from './NavTreeContext';\nimport { type NavTreeProps } from './types';\nimport { useLoadDescendents } from '../hooks';\n\nexport const NAV_TREE_ITEM = 'NavTreeItem';\n\nexport const NavTree = ({ id, root }: NavTreeProps) => {\n const { getItems, tab } = useNavTreeContext();\n const topLevelActions = getItems(root, 'item');\n const topLevelCollections = getItems(root, 'collection');\n const topLevelWorkspaces = getItems(root, 'workspace');\n const topLevelNavigation = getItems(root, 'navigation');\n const l0Items = useMemo(\n () => [...topLevelActions, ...topLevelCollections, ...topLevelWorkspaces, ...topLevelNavigation],\n [topLevelActions, topLevelCollections, topLevelWorkspaces, topLevelNavigation],\n );\n const pinnedItems = getItems(root, 'pin-end').toSorted((a, b) => byPosition(a.properties, b.properties));\n const topLevelItems = useMemo(() => [...l0Items, ...pinnedItems], [l0Items, pinnedItems]);\n\n useLoadDescendents(root);\n const path = useMemo(() => [id], [id]);\n\n return (\n // NOTE(thure): 74px (rather than rem) is intentional in order to match the size of macOS windowing controls\n <Tabs.Root value={tab} orientation='vertical' verticalVariant='stateless' classNames='relative'>\n <L0Menu topLevelItems={l0Items} pinnedItems={pinnedItems} path={path} parent={root} />\n <L1Panels topLevelItems={topLevelItems} path={path} currentItemId={tab} />\n </Tabs.Root>\n );\n};\n", "//\n// Copyright 2025 DXOS.org\n//\n\nimport React, { type MouseEvent, useCallback, useMemo } from 'react';\n\nimport { createIntent, LayoutAction, useIntentDispatcher } from '@dxos/app-framework';\nimport { type Node } from '@dxos/app-graph';\nimport { Icon, toLocalizedString, Tooltip, useMediaQuery, useSidebars, useTranslation } from '@dxos/react-ui';\nimport { Tabs } from '@dxos/react-ui-tabs';\nimport { mx } from '@dxos/react-ui-theme';\n\nimport { useNavTreeContext } from './NavTreeContext';\nimport { NotchStart } from './NotchStart';\nimport { useLoadDescendents } from '../hooks';\nimport { NAVTREE_PLUGIN } from '../meta';\nimport { getFirstTwoRenderableChars, l0ItemType } from '../util';\n\ntype L0ItemProps = {\n item: Node<any>;\n parent?: Node<any>;\n path: string[];\n pinned?: boolean;\n};\n\nconst useL0ItemClick = ({ item, parent, path }: L0ItemProps, type: string) => {\n const { tab, onTabChange, onSelect, isCurrent } = useNavTreeContext();\n const { dispatchPromise: dispatch } = useIntentDispatcher();\n const { navigationSidebarState } = useSidebars(NAVTREE_PLUGIN);\n const [isLg] = useMediaQuery('lg', { ssr: false });\n\n return useCallback(\n (event: MouseEvent) => {\n switch (type) {\n case 'tab':\n // TODO(thure): This dispatch should rightly be in `onTabChange`, but that callback wasn’t reacting to changes\n // to its dependencies.\n void dispatch(\n createIntent(LayoutAction.UpdateSidebar, {\n part: 'sidebar',\n options: {\n state:\n item.id === tab\n ? navigationSidebarState === 'expanded'\n ? isLg\n ? 'collapsed'\n : 'closed'\n : 'expanded'\n : 'expanded',\n },\n }),\n );\n return onTabChange?.(item);\n case 'link':\n return onSelect?.({ item, path, current: !isCurrent(path, item), option: event.altKey });\n case 'action': {\n const {\n data: invoke,\n properties: { caller },\n } = item;\n return invoke?.(caller ? { node: parent, caller } : { node: parent });\n }\n }\n },\n [item, type, onSelect, isCurrent, parent, tab, navigationSidebarState, isLg, dispatch],\n );\n};\n\nconst l0Breakpoints: Record<string, string> = {\n lg: 'hidden lg:grid',\n};\n\nconst L0Item = ({ item, parent, path, pinned }: L0ItemProps) => {\n const { t } = useTranslation(NAVTREE_PLUGIN);\n const type = l0ItemType(item);\n const itemPath = useMemo(() => [...path, item.id], [item.id, path]);\n const { getProps } = useNavTreeContext();\n const { id, testId } = getProps?.(item, path) ?? {};\n const Root = type === 'collection' ? 'h2' : type === 'tab' ? Tabs.TabPrimitive : 'button';\n const handleClick = useL0ItemClick({ item, path: itemPath, parent }, type);\n const rootProps =\n type === 'tab'\n ? { value: item.id, tabIndex: 0, onClick: handleClick, 'data-testid': testId, 'data-itemid': id }\n : type !== 'collection'\n ? { onClick: handleClick, 'data-testid': testId, 'data-itemid': id }\n : { onClick: handleClick };\n const localizedString = toLocalizedString(item.properties.label, t);\n const avatarValue = useMemo(\n () => (type === 'tab' ? getFirstTwoRenderableChars(localizedString).join('') : []),\n [type, item.properties.label, t],\n );\n\n return (\n <Tooltip.Root delayDuration={0}>\n <Tooltip.Trigger asChild>\n <Root\n {...(rootProps as any)}\n data-type={type}\n className={mx(\n 'group/l0i dx-focus-ring-group grid overflow-hidden relative data[type!=\"collection\"]:cursor-pointer app-no-drag',\n l0Breakpoints[item.properties.l0Breakpoint],\n )}\n >\n {type !== 'collection' && (\n <div\n role='none'\n className={mx(\n 'absolute -z-[1] group-hover/l0i:bg-input dx-focus-ring-group-indicator transition-colors',\n type === 'tab' || pinned ? 'rounded' : 'rounded-full',\n pinned ? 'bg-transparent inset-inline-3 inset-block-0' : 'bg-input inset-inline-3 inset-block-2',\n )}\n />\n )}\n <div\n role='none'\n className='hidden group-aria-selected/l0i:block absolute inline-start-0 inset-block-4 is-1 bg-accentSurface rounded-ie'\n />\n {type === 'tab' && item.properties.disposition !== 'pin-end' ? (\n <span role='img' className='place-self-center text-3xl font-light'>\n {avatarValue}\n </span>\n ) : (\n item.properties.icon && (\n <Icon icon={item.properties.icon} size={pinned ? 5 : 7} classNames='place-self-center' />\n )\n )}\n <span id={`${item.id}__label`} className='sr-only'>\n {localizedString}\n </span>\n </Root>\n </Tooltip.Trigger>\n <Tooltip.Portal>\n <Tooltip.Content side='right'>\n {localizedString}\n <Tooltip.Arrow />\n </Tooltip.Content>\n </Tooltip.Portal>\n </Tooltip.Root>\n );\n};\n\nconst L0Collection = ({ item, path, parent }: L0ItemProps) => {\n const navTreeContext = useNavTreeContext();\n useLoadDescendents(item);\n const collectionItems = navTreeContext.getItems(item);\n const groupPath = useMemo(() => [...path, item.id], [item.id, path]);\n const { id, testId } = navTreeContext.getProps?.(item, path) ?? {};\n return (\n <div\n role='group'\n className='contents group/l0c'\n aria-labelledby={`${item.id}__label`}\n data-itemid={id}\n data-testid={testId}\n >\n {/* TODO(burdon): Option. */}\n {/* <L0Item item={item} parent={parent} path={groupPath} /> */}\n {collectionItems.map((collectionItem) => (\n <L0Item key={collectionItem.id} item={collectionItem} parent={item} path={groupPath} />\n ))}\n </div>\n );\n};\n\nexport const L0Menu = ({\n topLevelItems,\n pinnedItems,\n parent,\n path,\n}: {\n topLevelItems: Node<any>[];\n pinnedItems: Node<any>[];\n parent?: Node<any>;\n path: string[];\n}) => {\n return (\n <Tabs.Tablist classNames='group/l0 absolute z-[1] inset-block-0 inline-start-0 rounded-is-lg grid grid-cols-[var(--l0-size)] grid-rows-[1fr_min-content_var(--l0-size)] contain-layout !is-[--l0-size] bg-baseSurface border-ie border-separator app-drag'>\n <div\n role='none'\n className='grid auto-rows-[calc(var(--l0-size)-.5rem)] min-bs-0 !overflow-y-auto plb-1 [body[data-platform=\"darwin\"]_&]:pbs-[calc(30px+0.25rem)]'\n >\n {topLevelItems.map((item) => {\n if (l0ItemType(item) === 'collection') {\n return <L0Collection key={item.id} item={item} parent={parent} path={path} />;\n } else {\n return <L0Item key={item.id} item={item} parent={parent} path={path} />;\n }\n })}\n </div>\n <div role='none' className='grid grid-cols-1 auto-rows-[--rail-action] pbs-2'>\n {pinnedItems\n .filter((item) => l0ItemType(item) !== 'collection')\n .map((item) => (\n <L0Item key={item.id} item={item} parent={parent} path={path} pinned />\n ))}\n </div>\n <div role='none' className='grid p-2 app-no-drag'>\n <NotchStart />\n </div>\n <div\n role='none'\n className='hidden [body[data-platform=\"darwin\"]_&]:block absolute block-start-0 is-[calc(var(--l0-size)-1px)] bs-[calc(40px+0.25rem)]'\n style={{\n background:\n 'linear-gradient(to bottom, var(--dx-baseSurface) 0%, var(--dx-baseSurface) 70%, transparent 100%)',\n }}\n />\n </Tabs.Tablist>\n );\n};\n", "//\n// Copyright 2025 DXOS.org\n//\n\nimport { createContext, useContext } from 'react';\n\nimport { raise } from '@dxos/debug';\n\nimport { type NavTreeContextValue } from './types';\n\nexport const NavTreeContext = createContext<NavTreeContextValue | null>(null);\n\nexport const useNavTreeContext = () => useContext(NavTreeContext) ?? raise(new Error('NavTreeContext not found'));\n", "//\n// Copyright 2025 DXOS.org\n//\n\nimport { useEffect } from 'react';\n\nimport { type Node } from '@dxos/app-graph';\n\nimport { useNavTreeContext } from './components/NavTreeContext';\n\nexport const useLoadDescendents = (root?: Node) => {\n const { loadDescendents } = useNavTreeContext();\n useEffect(() => {\n const frame = requestAnimationFrame(() => {\n if (root) {\n void loadDescendents?.(root);\n }\n });\n return () => cancelAnimationFrame(frame);\n }, [root]);\n};\n", "//\n// Copyright 2025 DXOS.org\n//\n\nimport React, { useMemo } from 'react';\n\nimport { useLayout } from '@dxos/app-framework';\nimport { type Node } from '@dxos/app-graph';\nimport { toLocalizedString, useTranslation } from '@dxos/react-ui';\nimport { Tree } from '@dxos/react-ui-list';\nimport { Tabs } from '@dxos/react-ui-tabs';\n\nimport { useNavTreeContext } from './NavTreeContext';\nimport { NavTreeItemColumns } from './NavTreeItemColumns';\nimport { useLoadDescendents } from '../hooks';\nimport { NAVTREE_PLUGIN } from '../meta';\nimport { l0ItemType } from '../util';\n\ntype L1PanelProps = { item: Node<any>; path: string[]; currentItemId: string };\n\nconst L1Panel = ({ item, path, currentItemId }: L1PanelProps) => {\n const layout = useLayout();\n const navTreeContext = useNavTreeContext();\n const { t } = useTranslation(NAVTREE_PLUGIN);\n return (\n <Tabs.Tabpanel\n key={item.id}\n value={item.id}\n classNames={[\n 'absolute inset-block-0 inline-end-0 is-[calc(100%-var(--l0-size))] lg:is-[--l1-size] grid-cols-1 grid-rows-[var(--rail-size)_1fr]',\n item.id === currentItemId && 'grid',\n ]}\n tabIndex={-1}\n {...(!layout.sidebarOpen && { inert: 'true' })}\n >\n {item.id === currentItemId && (\n <>\n <h2 className='flex items-center border-be border-separator pis-4 app-drag'>\n <span className='flex-1 truncate cursor-default'>{toLocalizedString(item.properties.label, t)}</span>\n <NavTreeItemColumns path={path} item={item} open />\n </h2>\n <div role='none' className='overflow-y-auto'>\n <Tree\n {...navTreeContext}\n id={item.id}\n root={item}\n path={path}\n levelOffset={5}\n draggable\n gridTemplateColumns='[tree-row-start] 1fr min-content min-content min-content [tree-row-end]'\n renderColumns={NavTreeItemColumns}\n />\n </div>\n </>\n )}\n </Tabs.Tabpanel>\n );\n};\n\nconst L1PanelCollection = ({ item, path, currentItemId }: L1PanelProps) => {\n const { getItems } = useNavTreeContext();\n useLoadDescendents(item);\n const collectionItems = getItems(item);\n const groupPath = useMemo(() => [...path, item.id], [item.id, path]);\n return (\n <>\n {collectionItems\n .filter((item) => l0ItemType(item) === 'tab')\n .map((item) => (\n <L1Panel key={item.id} item={item} path={groupPath} currentItemId={currentItemId} />\n ))}\n </>\n );\n};\n\nexport const L1Panels = ({\n topLevelItems,\n path,\n currentItemId,\n}: {\n topLevelItems: Node<any>[];\n path: string[];\n currentItemId: string;\n}) => {\n return (\n <>\n {topLevelItems.map((item) => {\n const type = l0ItemType(item);\n switch (type) {\n case 'collection':\n return <L1PanelCollection key={item.id} item={item} path={path} currentItemId={currentItemId} />;\n case 'tab':\n return <L1Panel key={item.id} item={item} path={path} currentItemId={currentItemId} />;\n default:\n return null;\n }\n })}\n </>\n );\n};\n", "//\n// Copyright 2025 DXOS.org\n//\n\nimport React, { Fragment, memo } from 'react';\n\nimport { isAction } from '@dxos/app-graph';\nimport { Popover, toLocalizedString, Treegrid, useTranslation } from '@dxos/react-ui';\n\nimport { NAV_TREE_ITEM } from './NavTree';\nimport { useNavTreeContext } from './NavTreeContext';\nimport { NavTreeItemAction } from './NavTreeItemAction';\nimport type { NavTreeItemColumnsProps } from './types';\nimport { useLoadDescendents } from '../hooks';\nimport { NAVTREE_PLUGIN } from '../meta';\n\nexport const NavTreeItemColumns = memo(({ path, item, open }: NavTreeItemColumnsProps) => {\n const { t } = useTranslation(NAVTREE_PLUGIN);\n const { getActions, renderItemEnd: ItemEnd, popoverAnchorId } = useNavTreeContext();\n\n const level = path.length - 2;\n\n const { actions: _actions, groupedActions } = getActions(item);\n const [primaryAction, ...secondaryActions] = _actions.toSorted((a, b) =>\n a.properties?.disposition === 'toolbar' ? -1 : 1,\n );\n\n const actions = (primaryAction?.properties?.disposition === 'toolbar' ? secondaryActions : _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 useLoadDescendents(item);\n useLoadDescendents(primaryAction && !isAction(primaryAction) ? primaryAction : undefined);\n\n return (\n <div role='none' className='contents app-no-drag'>\n {primaryAction?.properties?.disposition === 'toolbar' && !primaryAction?.properties?.disabled ? (\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}\n monolithic={isAction(primaryAction)}\n menuActions={isAction(primaryAction) ? [primaryAction] : 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}\n menuActions={actions}\n menuType='dropdown'\n caller={NAV_TREE_ITEM}\n />\n ) : (\n <Treegrid.Cell />\n )}\n </ActionRoot>\n {ItemEnd && <ItemEnd node={item} open={open} />}\n </div>\n );\n});\n", "//\n// Copyright 2023 DXOS.org\n//\n\nimport React, { type MutableRefObject, useRef } from 'react';\n\nimport { type Action, type Node } from '@dxos/app-graph';\nimport { useTranslation, toLocalizedString, IconButton } from '@dxos/react-ui';\nimport { DropdownMenu, MenuProvider, type MenuItem } from '@dxos/react-ui-menu';\nimport { hoverableControlItem, hoverableOpenControlItem, mx } from '@dxos/react-ui-theme';\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 onAction?: (action: Action) => void;\n};\n\nconst fallbackIcon = 'ph--placeholder--regular';\n\nconst actionButtonProps = {\n size: 4 as const,\n density: 'fine' as const,\n};\n\nexport const NavTreeItemActionDropdownMenu = ({\n label,\n icon,\n testId,\n menuActions,\n onAction,\n}: NavTreeItemActionMenuProps) => {\n const { t } = useTranslation(NAVTREE_PLUGIN);\n const suppressNextTooltip = useRef<boolean>(false);\n return (\n <MenuProvider onAction={onAction}>\n <DropdownMenu.Root items={menuActions as MenuItem[]} suppressNextTooltip={suppressNextTooltip}>\n <DropdownMenu.Trigger asChild>\n <IconButton\n {...actionButtonProps}\n classNames={mx('shrink-0 pli-2 pointer-fine:pli-1', hoverableControlItem, hoverableOpenControlItem)}\n variant='ghost'\n icon={icon ?? fallbackIcon}\n iconOnly\n label={toLocalizedString(label, t)}\n data-testid={testId}\n suppressNextTooltip={suppressNextTooltip}\n />\n </DropdownMenu.Trigger>\n </DropdownMenu.Root>\n </MenuProvider>\n );\n};\n\nexport const NavTreeItemMonolithicAction = ({\n parent,\n properties: { disabled, caller, testId, icon, variant = 'ghost', iconOnly = true } = { label: 'never' },\n data: invoke,\n baseLabel,\n}: Action & { parent: Node; onAction?: (action: Action) => void; baseLabel: string }) => {\n return (\n <IconButton\n {...actionButtonProps}\n variant={variant}\n classNames={mx(\n 'shrink-0',\n hoverableControlItem,\n hoverableOpenControlItem,\n iconOnly ? 'pli-2 pointer-fine:pli-1' : 'p-2 pointer-fine:p-2 mie-1',\n )}\n icon={icon ?? fallbackIcon}\n iconOnly={iconOnly}\n label={baseLabel}\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 );\n};\n\nexport const NavTreeItemAction = ({ monolithic, menuActions, parent: node, ...props }: NavTreeItemActionMenuProps) => {\n const { t } = useTranslation(NAVTREE_PLUGIN);\n\n const monolithicAction = menuActions?.length === 1 && menuActions[0];\n const baseLabel = toLocalizedString(monolithicAction ? monolithicAction.properties!.label : props.label, t);\n\n return monolithic && menuActions?.length === 1 ? (\n <NavTreeItemMonolithicAction baseLabel={baseLabel} parent={node} {...menuActions[0]} />\n ) : (\n <NavTreeItemActionDropdownMenu\n {...props}\n label={baseLabel}\n parent={node}\n menuActions={menuActions}\n onAction={(action) => action.data?.(props.caller ? { node, caller: props.caller } : { node })}\n />\n );\n};\n", "//\n// Copyright 2025 DXOS.org\n//\n\nimport { lazy } from '@dxos/app-framework';\n\nexport const AppGraphBuilder = lazy(() => import('./app-graph-builder'));\nexport const IntentResolver = lazy(() => import('./intent-resolver'));\nexport const Keyboard = lazy(() => import('./keyboard'));\nexport const ReactSurface = lazy(() => import('./react-surface'));\nexport const State = lazy(() => import('./state'));\n\nexport * from './capabilities';\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"],
|
|
5
|
-
"mappings": "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",
|
|
6
|
-
"names": ["React", "useMemo", "useState", "createIntent", "LayoutAction", "useAppGraph", "useIntentDispatcher", "isActionGroup", "isAction", "Keyboard", "keySymbols", "Button", "Dialog", "Icon", "useTranslation", "toLocalizedString", "SearchList", "descriptionText", "mx", "getHostPlatform", "CommandsDialogContent", "selected", "initial", "t", "useTranslation", "NAVTREE_PLUGIN", "setSelected", "useState", "dispatchPromise", "dispatch", "useIntentDispatcher", "graph", "useAppGraph", "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", "createIntent", "LayoutAction", "UpdateDialog", "part", "options", "state", "setTimeout", "nodes", "relation", "data", "caller", "KEY_BINDING", "testId", "Icon", "icon", "size", "span", "className", "mx", "descriptionText", "keySymbols", "Close", "asChild", "Button", "variant", "MagnifyingGlass", "React", "createIntent", "LayoutAction", "useIntentDispatcher", "Button", "useTranslation", "getSize", "CommandsTrigger", "dispatchPromise", "dispatch", "useIntentDispatcher", "t", "useTranslation", "NAVTREE_PLUGIN", "React", "Button", "classNames", "onClick", "createIntent", "LayoutAction", "UpdateDialog", "part", "subject", "COMMANDS_DIALOG", "options", "blockAlign", "span", "className", "MagnifyingGlass", "getSize", "React", "createIntent", "useCapabilities", "useIntentDispatcher", "ClientAction", "ObservabilityCapabilities", "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", "observability", "useCapabilities", "ObservabilityCapabilities", "Observability", "dispatchPromise", "dispatch", "useIntentDispatcher", "React", "HaloButton", "size", "identityKey", "toHex", "hue", "profile", "data", "emoji", "internal", "group", "onClick", "createIntent", "ClientAction", "ShareIdentity", "ACTION_TYPE", "ACTION_GROUP_TYPE", "isAction", "isActionLike", "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", "getChildren", "filter", "map", "nextPath", "includes", "undefined", "nonNullable", "getActions", "reduce", "acc", "arg", "push", "isAction", "actionGroup", "groupedActions", "expandChildrenAndActions", "Promise", "all", "expandChildren", "expandActions", "expand", "ACTION_TYPE", "ACTION_GROUP_TYPE", "l0ItemType", "item", "isActionLike", "renderableCharRegex", "getFirstTwoRenderableChars", "label", "characters", "Array", "from", "result", "foundFirst", "i", "char", "test", "textBetween", "join", "monitorForElements", "extractInstruction", "untracked", "React", "memo", "useCallback", "useEffect", "useMemo", "createIntent", "LayoutAction", "Surface", "useAppGraph", "useCapability", "useIntentDispatcher", "useLayout", "isAction", "isActionLike", "isEchoObject", "isSpace", "useMediaQuery", "isTreeData", "mx", "arrayMove", "React", "useMemo", "Tabs", "byPosition", "React", "useCallback", "useMemo", "createIntent", "LayoutAction", "useIntentDispatcher", "Icon", "toLocalizedString", "Tooltip", "useMediaQuery", "useSidebars", "useTranslation", "Tabs", "mx", "createContext", "useContext", "raise", "NavTreeContext", "createContext", "useNavTreeContext", "useContext", "raise", "Error", "useEffect", "useLoadDescendents", "root", "loadDescendents", "useNavTreeContext", "useEffect", "frame", "requestAnimationFrame", "cancelAnimationFrame", "useL0ItemClick", "item", "parent", "path", "type", "tab", "onTabChange", "onSelect", "isCurrent", "useNavTreeContext", "dispatchPromise", "dispatch", "useIntentDispatcher", "navigationSidebarState", "useSidebars", "NAVTREE_PLUGIN", "isLg", "useMediaQuery", "ssr", "useCallback", "event", "createIntent", "LayoutAction", "UpdateSidebar", "part", "options", "state", "id", "current", "option", "altKey", "data", "invoke", "properties", "caller", "node", "l0Breakpoints", "lg", "L0Item", "pinned", "t", "useTranslation", "l0ItemType", "itemPath", "useMemo", "getProps", "testId", "Root", "Tabs", "TabPrimitive", "handleClick", "rootProps", "value", "tabIndex", "onClick", "localizedString", "toLocalizedString", "label", "avatarValue", "getFirstTwoRenderableChars", "join", "React", "Tooltip", "delayDuration", "Trigger", "asChild", "data-type", "className", "mx", "l0Breakpoint", "div", "role", "disposition", "span", "icon", "Icon", "size", "classNames", "Portal", "Content", "side", "Arrow", "L0Collection", "navTreeContext", "useLoadDescendents", "collectionItems", "getItems", "groupPath", "aria-labelledby", "data-itemid", "data-testid", "map", "collectionItem", "key", "L0Menu", "topLevelItems", "pinnedItems", "Tablist", "filter", "NotchStart", "style", "background", "React", "useMemo", "useLayout", "toLocalizedString", "useTranslation", "Tree", "Tabs", "React", "Fragment", "memo", "isAction", "Popover", "toLocalizedString", "Treegrid", "useTranslation", "React", "useRef", "useTranslation", "toLocalizedString", "IconButton", "DropdownMenu", "MenuProvider", "hoverableControlItem", "hoverableOpenControlItem", "mx", "fallbackIcon", "actionButtonProps", "size", "density", "NavTreeItemActionDropdownMenu", "label", "icon", "testId", "menuActions", "onAction", "t", "useTranslation", "NAVTREE_PLUGIN", "suppressNextTooltip", "useRef", "React", "MenuProvider", "DropdownMenu", "Root", "items", "Trigger", "asChild", "IconButton", "classNames", "mx", "hoverableControlItem", "hoverableOpenControlItem", "variant", "iconOnly", "toLocalizedString", "data-testid", "NavTreeItemMonolithicAction", "parent", "properties", "disabled", "caller", "data", "invoke", "baseLabel", "onClick", "event", "stopPropagation", "node", "NavTreeItemAction", "monolithic", "props", "monolithicAction", "length", "action", "NavTreeItemColumns", "memo", "path", "item", "open", "t", "useTranslation", "NAVTREE_PLUGIN", "getActions", "renderItemEnd", "ItemEnd", "popoverAnchorId", "useNavTreeContext", "level", "length", "actions", "_actions", "groupedActions", "primaryAction", "secondaryActions", "toSorted", "a", "b", "properties", "disposition", "flatMap", "action", "isAction", "filter", "hidden", "ActionRoot", "NAV_TREE_ITEM", "id", "Popover", "Anchor", "Fragment", "useLoadDescendents", "undefined", "React", "div", "role", "className", "disabled", "NavTreeItemAction", "testId", "label", "toLocalizedString", "icon", "parent", "monolithic", "menuActions", "menuType", "caller", "Treegrid", "Cell", "node", "L1Panel", "item", "path", "currentItemId", "layout", "useLayout", "navTreeContext", "useNavTreeContext", "t", "useTranslation", "NAVTREE_PLUGIN", "React", "Tabs", "Tabpanel", "key", "id", "value", "classNames", "tabIndex", "sidebarOpen", "inert", "h2", "className", "span", "toLocalizedString", "properties", "label", "NavTreeItemColumns", "open", "div", "role", "Tree", "root", "levelOffset", "draggable", "gridTemplateColumns", "renderColumns", "L1PanelCollection", "getItems", "useLoadDescendents", "collectionItems", "groupPath", "useMemo", "filter", "l0ItemType", "map", "L1Panels", "topLevelItems", "type", "NAV_TREE_ITEM", "NavTree", "id", "root", "getItems", "tab", "useNavTreeContext", "topLevelActions", "topLevelCollections", "topLevelWorkspaces", "topLevelNavigation", "l0Items", "useMemo", "pinnedItems", "toSorted", "a", "b", "byPosition", "properties", "topLevelItems", "useLoadDescendents", "path", "React", "Tabs", "Root", "value", "orientation", "verticalVariant", "classNames", "L0Menu", "parent", "L1Panels", "currentItemId", "lazy", "AppGraphBuilder", "lazy", "IntentResolver", "Keyboard", "ReactSurface", "State", "NODE_TYPE", "renderItemEnd", "node", "open", "React", "Surface", "role", "data", "id", "subject", "limit", "NavTreeContainer", "memo", "tab", "popoverAnchorId", "topbar", "isLg", "useMediaQuery", "ssr", "dispatchPromise", "dispatch", "useIntentDispatcher", "graph", "useAppGraph", "layout", "useLayout", "isOpen", "isCurrent", "setItem", "useCapability", "NavTreeCapabilities", "State", "getActions", "useCallback", "naturalGetActions", "getItems", "disposition", "nodes", "root", "filter", "untracked", "action", "isActionLike", "properties", "getProps", "path", "children", "getChildren", "undefined", "parentOf", "length", "map", "label", "icon", "disabled", "className", "mx", "modified", "headingClassName", "testId", "loadDescendents", "expandActions", "expandChildren", "then", "Promise", "all", "flatMap", "child", "onOpenChange", "item", "findNode", "expandChildrenAndActions", "onTabChange", "createIntent", "LayoutAction", "SwitchWorkspace", "part", "active", "Open", "canDrop", "source", "target", "sourceNode", "targetNode", "isSpace", "isEchoObject", "handleSelect", "option", "isAction", "parent", "relation", "caller", "NAV_TREE_ITEM", "current", "options", "key", "Close", "state", "ScrollIntoView", "defaultAction", "actions", "find", "UpdateSidebar", "useEffect", "monitorForElements", "canMonitor", "isTreeData", "onDrop", "location", "dropTargets", "instruction", "extractInstruction", "type", "sourcePath", "targetPath", "operation", "slice", "join", "resolveMigrationOperation", "sourceParent", "getParent", "targetParent", "sourceItems", "targetItems", "sourceIndex", "findIndex", "targetIndex", "migrationIndex", "nextItems", "arrayMove", "onRearrangeChildren", "onCopy", "onTransferStart", "onTransferEnd", "navTreeContextValue", "useMemo", "onSelect", "NavTreeContext", "Provider", "value", "NavTree", "useEffect", "toLocalizedString", "useTranslation", "NavTreeDocumentTitle", "node", "t", "useTranslation", "NAVTREE_PLUGIN", "useEffect", "document", "title", "toLocalizedString", "properties", "label", "ns"]
|
|
7
|
-
}
|
|
@@ -1,7 +0,0 @@
|
|
|
1
|
-
{
|
|
2
|
-
"version": 3,
|
|
3
|
-
"sources": ["../../../src/capabilities/state.ts"],
|
|
4
|
-
"sourcesContent": ["//\n// Copyright 2025 DXOS.org\n//\n\nimport { effect } from '@preact/signals-core';\n\nimport { Capabilities, contributes, type PluginsContext } from '@dxos/app-framework';\nimport { type ReactiveObject, create } from '@dxos/live-object';\nimport { Path } from '@dxos/react-ui-mosaic';\n\nimport { NavTreeCapabilities } from './capabilities';\nimport { NAVTREE_PLUGIN } from '../meta';\n\nconst KEY = `${NAVTREE_PLUGIN}/state`;\n\nconst getInitialState = () => {\n const stringified = localStorage.getItem(KEY);\n if (!stringified) {\n return;\n }\n\n try {\n const cached: [string, { open: boolean; current: boolean }][] = JSON.parse(stringified);\n return cached.map(\n ([key, value]): [\n string,\n ReactiveObject<{\n open: boolean;\n current: boolean;\n }>,\n ] => [key, create({ open: value.open, current: false })],\n );\n } catch {}\n};\n\nexport default (context: PluginsContext) => {\n const layout = context.requestCapability(Capabilities.Layout);\n\n // TODO(wittjosiah): This currently needs to be not a ReactiveObject at the root.\n // If it is a ReactiveObject then React errors when initializing new paths because of state change during render.\n // Ideally this could be a ReactiveObject but be able to access and update the root level without breaking render.\n // Wrapping accesses and updates in `untracked` didn't seem to work in all cases.\n const state = new Map<string, ReactiveObject<{ open: boolean; current: boolean }>>(\n getInitialState() ?? [\n // TODO(thure): Initialize these dynamically.\n ['root', create({ open: true, current: false })],\n ['root~dxos.org/plugin/space-spaces', create({ open: true, current: false })],\n ['root~dxos.org/plugin/files', create({ open: true, current: false })],\n ],\n );\n\n const getItem = (_path: string[]) => {\n const path = Path.create(..._path);\n const value = state.get(path) ?? create({ open: false, current: false });\n if (!state.has(path)) {\n state.set(path, value);\n }\n\n return value;\n };\n\n const setItem = (path: string[], key: 'open' | 'current', next: boolean) => {\n const value = getItem(path);\n value[key] = next;\n\n localStorage.setItem(KEY, JSON.stringify(Array.from(state.entries())));\n };\n\n const isOpen = (path: string[]) => getItem(path).open;\n const isCurrent = (path: string[]) => getItem(path).current;\n\n let previous: string[] = [];\n const unsubscribe = effect(() => {\n const removed = previous.filter((id) => !layout.active.includes(id));\n previous = layout.active;\n\n // TODO(wittjosiah): This is setTimeout because there's a race between the keys be initialized.\n // This could be avoided if the location was a path as well and not just an id.\n setTimeout(() => {\n removed.forEach((id) => {\n const keys = Array.from(state.keys()).filter((key) => Path.last(key) === id);\n keys.forEach((key) => {\n setItem(Path.parts(key), 'current', false);\n });\n });\n\n layout.active.forEach((id) => {\n const keys = Array.from(new Set([...state.keys(), id])).filter((key) => Path.last(key) === id);\n keys.forEach((key) => {\n setItem(Path.parts(key), 'current', true);\n });\n });\n });\n });\n\n return contributes(NavTreeCapabilities.State, { state, getItem, setItem, isOpen, isCurrent }, () => unsubscribe());\n};\n"],
|
|
5
|
-
"mappings": ";;;;;;;;AAIA,SAASA,cAAc;AAEvB,SAASC,cAAcC,mBAAwC;AAC/D,SAA8BC,cAAc;AAC5C,SAASC,YAAY;AAKrB,IAAMC,MAAM,GAAGC,cAAAA;AAEf,IAAMC,kBAAkB,MAAA;AACtB,QAAMC,cAAcC,aAAaC,QAAQL,GAAAA;AACzC,MAAI,CAACG,aAAa;AAChB;EACF;AAEA,MAAI;AACF,UAAMG,SAA0DC,KAAKC,MAAML,WAAAA;AAC3E,WAAOG,OAAOG,IACZ,CAAC,CAACC,KAAKC,KAAAA,MAMF;MAACD;MAAKE,OAAO;QAAEC,MAAMF,MAAME;QAAMC,SAAS;MAAM,CAAA;KAAG;EAE5D,QAAQ;EAAC;AACX;AAEA,IAAA,gBAAe,CAACC,YAAAA;AACd,QAAMC,SAASD,QAAQE,kBAAkBC,aAAaC,MAAM;AAM5D,QAAMC,QAAQ,IAAIC,IAChBnB,gBAAAA,KAAqB;;IAEnB;MAAC;MAAQU,OAAO;QAAEC,MAAM;QAAMC,SAAS;MAAM,CAAA;;IAC7C;MAAC;MAAqCF,OAAO;QAAEC,MAAM;QAAMC,SAAS;MAAM,CAAA;;IAC1E;MAAC;MAA8BF,OAAO;QAAEC,MAAM;QAAMC,SAAS;MAAM,CAAA;;GACpE;AAGH,QAAMT,UAAU,CAACiB,UAAAA;AACf,UAAMC,OAAOC,KAAKZ,OAAM,GAAIU,KAAAA;AAC5B,UAAMX,QAAQS,MAAMK,IAAIF,IAAAA,KAASX,OAAO;MAAEC,MAAM;MAAOC,SAAS;IAAM,CAAA;AACtE,QAAI,CAACM,MAAMM,IAAIH,IAAAA,GAAO;AACpBH,YAAMO,IAAIJ,MAAMZ,KAAAA;IAClB;AAEA,WAAOA;EACT;AAEA,QAAMiB,UAAU,CAACL,MAAgBb,KAAyBmB,SAAAA;AACxD,UAAMlB,QAAQN,QAAQkB,IAAAA;AACtBZ,UAAMD,GAAAA,IAAOmB;AAEbzB,iBAAawB,QAAQ5B,KAAKO,KAAKuB,UAAUC,MAAMC,KAAKZ,MAAMa,QAAO,CAAA,CAAA,CAAA;EACnE;AAEA,QAAMC,SAAS,CAACX,SAAmBlB,QAAQkB,IAAAA,EAAMV;AACjD,QAAMsB,YAAY,CAACZ,SAAmBlB,QAAQkB,IAAAA,EAAMT;AAEpD,MAAIsB,WAAqB,CAAA;AACzB,QAAMC,cAAcC,OAAO,MAAA;AACzB,UAAMC,UAAUH,SAASI,OAAO,CAACC,OAAO,CAACzB,OAAO0B,OAAOC,SAASF,EAAAA,CAAAA;AAChEL,eAAWpB,OAAO0B;AAIlBE,eAAW,MAAA;AACTL,cAAQM,QAAQ,CAACJ,OAAAA;AACf,cAAMK,OAAOf,MAAMC,KAAKZ,MAAM0B,KAAI,CAAA,EAAIN,OAAO,CAAC9B,QAAQc,KAAKuB,KAAKrC,GAAAA,MAAS+B,EAAAA;AACzEK,aAAKD,QAAQ,CAACnC,QAAAA;AACZkB,kBAAQJ,KAAKwB,MAAMtC,GAAAA,GAAM,WAAW,KAAA;QACtC,CAAA;MACF,CAAA;AAEAM,aAAO0B,OAAOG,QAAQ,CAACJ,OAAAA;AACrB,cAAMK,OAAOf,MAAMC,KAAK,oBAAIiB,IAAI;aAAI7B,MAAM0B,KAAI;UAAIL;SAAG,CAAA,EAAGD,OAAO,CAAC9B,QAAQc,KAAKuB,KAAKrC,GAAAA,MAAS+B,EAAAA;AAC3FK,aAAKD,QAAQ,CAACnC,QAAAA;AACZkB,kBAAQJ,KAAKwB,MAAMtC,GAAAA,GAAM,WAAW,IAAA;QACtC,CAAA;MACF,CAAA;IACF,CAAA;EACF,CAAA;AAEA,SAAOwC,YAAYC,oBAAoBC,OAAO;IAAEhC;IAAOf;IAASuB;IAASM;IAAQC;EAAU,GAAG,MAAME,YAAAA,CAAAA;AACtG;",
|
|
6
|
-
"names": ["effect", "Capabilities", "contributes", "create", "Path", "KEY", "NAVTREE_PLUGIN", "getInitialState", "stringified", "localStorage", "getItem", "cached", "JSON", "parse", "map", "key", "value", "create", "open", "current", "context", "layout", "requestCapability", "Capabilities", "Layout", "state", "Map", "_path", "path", "Path", "get", "has", "set", "setItem", "next", "stringify", "Array", "from", "entries", "isOpen", "isCurrent", "previous", "unsubscribe", "effect", "removed", "filter", "id", "active", "includes", "setTimeout", "forEach", "keys", "last", "parts", "Set", "contributes", "NavTreeCapabilities", "State"]
|
|
7
|
-
}
|
|
File without changes
|