@dxos/plugin-navtree 0.9.0 → 0.9.1-main.c7dcc2e112
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/neutral/{CommandsDialogContent-UBGIQ5FI.mjs → CommandsDialogContent-TEKBCQ3U.mjs} +3 -3
- package/dist/lib/neutral/CommandsDialogContent-TEKBCQ3U.mjs.map +7 -0
- package/dist/lib/neutral/{CommandsTrigger-BH5WLMHK.mjs → CommandsTrigger-HGCI22SP.mjs} +2 -2
- package/dist/lib/neutral/{CommandsTrigger-BH5WLMHK.mjs.map → CommandsTrigger-HGCI22SP.mjs.map} +3 -3
- package/dist/lib/neutral/{NavTreeContainer-6AR4BFDD.mjs → NavTreeContainer-QIWROTCL.mjs} +2 -2
- package/dist/lib/neutral/{NavTreeDocumentTitle-H3E6ZLYE.mjs → NavTreeDocumentTitle-RMERXZGK.mjs} +2 -2
- package/dist/lib/neutral/{NavTreeDocumentTitle-H3E6ZLYE.mjs.map → NavTreeDocumentTitle-RMERXZGK.mjs.map} +3 -3
- package/dist/lib/neutral/NavTreePlugin.mjs +2 -2
- package/dist/lib/neutral/NavTreePlugin.mjs.map +4 -4
- package/dist/lib/neutral/{app-graph-builder-Z347LKSF.mjs → app-graph-builder-2DYAIROU.mjs} +2 -2
- package/dist/lib/neutral/{app-graph-builder-Z347LKSF.mjs.map → app-graph-builder-2DYAIROU.mjs.map} +3 -3
- package/dist/lib/neutral/capabilities/index.mjs +3 -3
- package/dist/lib/neutral/{chunk-ZSWYB7JW.mjs → chunk-BAVI2K7A.mjs} +3 -3
- package/dist/lib/neutral/{chunk-ZSWYB7JW.mjs.map → chunk-BAVI2K7A.mjs.map} +3 -3
- package/dist/lib/neutral/{chunk-T7QS2EFI.mjs → chunk-EAN4K6OL.mjs} +2 -2
- package/dist/lib/neutral/chunk-IRQMJLRY.mjs +45 -0
- package/dist/lib/neutral/chunk-IRQMJLRY.mjs.map +7 -0
- package/dist/lib/neutral/{chunk-5OPDKH6B.mjs → chunk-UBVNITFG.mjs} +4 -4
- package/dist/lib/neutral/chunk-UBVNITFG.mjs.map +7 -0
- package/dist/lib/neutral/components/index.mjs +44 -37
- package/dist/lib/neutral/components/index.mjs.map +3 -3
- package/dist/lib/neutral/containers/index.mjs +5 -5
- package/dist/lib/neutral/{expose-26FV4W5D.mjs → expose-HIBA2NQG.mjs} +2 -2
- package/dist/lib/neutral/index.mjs +2 -2
- package/dist/lib/neutral/meta.json +1 -1
- package/dist/lib/neutral/meta.mjs +1 -1
- package/dist/lib/neutral/operations/index.mjs +1 -1
- package/dist/lib/neutral/plugin.mjs +2 -2
- package/dist/lib/neutral/{react-surface-Q5XMAG7Z.mjs → react-surface-N4EESW3L.mjs} +9 -12
- package/dist/lib/neutral/{react-surface-Q5XMAG7Z.mjs.map → react-surface-N4EESW3L.mjs.map} +3 -3
- package/dist/lib/neutral/{state-VVJEWUHM.mjs → state-PDZU4PIP.mjs} +2 -2
- package/dist/lib/neutral/state-PDZU4PIP.mjs.map +7 -0
- package/dist/lib/neutral/translations.mjs +1 -1
- package/dist/lib/neutral/translations.mjs.map +3 -3
- package/dist/lib/neutral/types/index.mjs +1 -1
- package/dist/types/dx.config.d.ts +28 -0
- package/dist/types/dx.config.d.ts.map +1 -0
- package/dist/types/src/capabilities/index.d.ts +4 -4
- package/dist/types/src/capabilities/index.d.ts.map +1 -1
- package/dist/types/src/capabilities/react-surface.d.ts +2 -2
- package/dist/types/src/capabilities/react-surface.d.ts.map +1 -1
- package/dist/types/src/components/NavTree/NavTree.d.ts.map +1 -1
- package/dist/types/src/components/NavTreeItem/NavTreeItemColumns.d.ts.map +1 -1
- package/dist/types/src/meta.d.ts +28 -2
- package/dist/types/src/meta.d.ts.map +1 -1
- package/dist/types/src/types/NavTreeCapabilities.d.ts.map +1 -1
- package/dist/types/src/types/NavTreeEvents.d.ts.map +1 -1
- package/dist/types/tsconfig.tsbuildinfo +1 -1
- package/dx.config.ts +31 -0
- package/package.json +33 -32
- package/src/NavTreePlugin.test.ts +1 -1
- package/src/NavTreePlugin.tsx +1 -1
- package/src/capabilities/app-graph-builder.ts +1 -1
- package/src/capabilities/react-surface.tsx +6 -13
- package/src/capabilities/state.ts +1 -1
- package/src/components/NavTree/NavTree.tsx +2 -1
- package/src/components/NavTreeItem/NavTreeItemAction.tsx +2 -2
- package/src/components/NavTreeItem/NavTreeItemColumns.tsx +5 -3
- package/src/components/Sidebar/L0Menu.tsx +4 -4
- package/src/components/Sidebar/L1Panel.tsx +5 -5
- package/src/containers/CommandsDialogContent/CommandsDialogContent.tsx +2 -2
- package/src/containers/CommandsTrigger/CommandsTrigger.tsx +1 -1
- package/src/containers/NavTreeContainer/NavTreeContainer.tsx +3 -3
- package/src/containers/NavTreeDocumentTitle/NavTreeDocumentTitle.tsx +1 -1
- package/src/meta.ts +3 -23
- package/src/translations.ts +1 -1
- package/src/types/NavTreeCapabilities.ts +1 -1
- package/src/types/NavTreeEvents.ts +1 -1
- package/dist/lib/neutral/CommandsDialogContent-UBGIQ5FI.mjs.map +0 -7
- package/dist/lib/neutral/chunk-5OPDKH6B.mjs.map +0 -7
- package/dist/lib/neutral/chunk-MDGKDQMZ.mjs +0 -37
- package/dist/lib/neutral/chunk-MDGKDQMZ.mjs.map +0 -7
- package/dist/lib/neutral/state-VVJEWUHM.mjs.map +0 -7
- /package/dist/lib/neutral/{NavTreeContainer-6AR4BFDD.mjs.map → NavTreeContainer-QIWROTCL.mjs.map} +0 -0
- /package/dist/lib/neutral/{chunk-T7QS2EFI.mjs.map → chunk-EAN4K6OL.mjs.map} +0 -0
- /package/dist/lib/neutral/{expose-26FV4W5D.mjs.map → expose-HIBA2NQG.mjs.map} +0 -0
|
@@ -100,7 +100,7 @@ var l0Breakpoints = {
|
|
|
100
100
|
lg: "hidden lg:grid"
|
|
101
101
|
};
|
|
102
102
|
var L0ItemRoot = /* @__PURE__ */ memo(/* @__PURE__ */ forwardRef(({ item, parent, path, onMouseEnter, children }, forwardedRef) => {
|
|
103
|
-
const { t } = useTranslation(meta.
|
|
103
|
+
const { t } = useTranslation(meta.profile.key);
|
|
104
104
|
const { model } = useNavTreeContext();
|
|
105
105
|
const itemPath = useMemo(() => [
|
|
106
106
|
...path,
|
|
@@ -138,7 +138,7 @@ var L0ItemActiveTabIndicator = ({ classNames }) => /* @__PURE__ */ React2.create
|
|
|
138
138
|
className: mx("hidden group-aria-selected/l0item:block absolute start-0 h-6 w-1.5 bg-accent-bg rounded-sm", classNames)
|
|
139
139
|
});
|
|
140
140
|
var L0Item = /* @__PURE__ */ memo(({ item, parent, path, pinned, onRearrange, onItemHover }) => {
|
|
141
|
-
const { t } = useTranslation(meta.
|
|
141
|
+
const { t } = useTranslation(meta.profile.key);
|
|
142
142
|
const itemElement = useRef(null);
|
|
143
143
|
const [closestEdge, setEdge] = useState(null);
|
|
144
144
|
const localizedString = toLocalizedString(item.properties.label, t);
|
|
@@ -241,7 +241,7 @@ var L0Item = /* @__PURE__ */ memo(({ item, parent, path, pinned, onRearrange, on
|
|
|
241
241
|
}));
|
|
242
242
|
});
|
|
243
243
|
var ItemAvatar = ({ item }) => {
|
|
244
|
-
const { t } = useTranslation(meta.
|
|
244
|
+
const { t } = useTranslation(meta.profile.key);
|
|
245
245
|
if (item.properties.icon) {
|
|
246
246
|
const hue = item.properties.hue ?? null;
|
|
247
247
|
const hueFgStyle = hue && {
|
|
@@ -270,7 +270,7 @@ var ItemAvatar = ({ item }) => {
|
|
|
270
270
|
return null;
|
|
271
271
|
};
|
|
272
272
|
var L0Menu = ({ menuActions, topLevelItems, pinnedItems, userAccountItem, parent, path, onItemHover }) => {
|
|
273
|
-
const { t } = useTranslation(meta.
|
|
273
|
+
const { t } = useTranslation(meta.profile.key);
|
|
274
274
|
const runAction = useActionRunner();
|
|
275
275
|
const handleAction = useCallback((action, params) => {
|
|
276
276
|
void runAction(action, params);
|
|
@@ -362,7 +362,7 @@ var L0Menu = ({ menuActions, topLevelItems, pinnedItems, userAccountItem, parent
|
|
|
362
362
|
// src/components/Sidebar/L1Panel.tsx
|
|
363
363
|
import * as Option from "effect/Option";
|
|
364
364
|
import React5, { memo as memo3, useCallback as useCallback3, useMemo as useMemo3 } from "react";
|
|
365
|
-
import {
|
|
365
|
+
import { Paths } from "@dxos/app-toolkit";
|
|
366
366
|
import { useAppGraph } from "@dxos/app-toolkit/ui";
|
|
367
367
|
import { Graph, useActionRunner as useActionRunner3, useEdges } from "@dxos/plugin-graph";
|
|
368
368
|
import { DensityProvider, IconButton as IconButton3, ScrollArea as ScrollArea2, toLocalizedString as toLocalizedString4, useTranslation as useTranslation4 } from "@dxos/react-ui";
|
|
@@ -397,7 +397,7 @@ var lgActionButtonProps = {
|
|
|
397
397
|
density: "lg"
|
|
398
398
|
};
|
|
399
399
|
var NavTreeItemActionDropdownMenu = composable(({ parent, path, label, icon, testId, menuActions, caller, ...props }, forwardedRef) => {
|
|
400
|
-
const { t } = useTranslation2(meta2.
|
|
400
|
+
const { t } = useTranslation2(meta2.profile.key);
|
|
401
401
|
const density = useDensityContext();
|
|
402
402
|
const runAction = useActionRunner2();
|
|
403
403
|
const handleAction = useCallback2((action, params = {}) => runAction(action, {
|
|
@@ -471,44 +471,51 @@ var NavTreeItemMonolithicAction = (props) => {
|
|
|
471
471
|
|
|
472
472
|
// src/components/NavTreeItem/NavTreeItemColumns.tsx
|
|
473
473
|
var NavTreeItemColumns = /* @__PURE__ */ memo2(({ path, item, open }) => {
|
|
474
|
-
const { t } = useTranslation3(meta3.
|
|
474
|
+
const { t } = useTranslation3(meta3.profile.key);
|
|
475
475
|
const { renderItemEnd: ItemEnd, popoverAnchorId } = useNavTreeContext();
|
|
476
476
|
const level = path.length - 2;
|
|
477
477
|
const flattenedActions = useActions(item);
|
|
478
478
|
const allActions = useMemo2(() => getListActions(flattenedActions), [
|
|
479
479
|
flattenedActions
|
|
480
480
|
]);
|
|
481
|
-
const
|
|
482
|
-
|
|
483
|
-
|
|
484
|
-
|
|
485
|
-
|
|
486
|
-
|
|
487
|
-
|
|
488
|
-
|
|
489
|
-
|
|
490
|
-
|
|
491
|
-
|
|
492
|
-
|
|
493
|
-
|
|
494
|
-
|
|
495
|
-
|
|
496
|
-
|
|
497
|
-
|
|
498
|
-
|
|
499
|
-
|
|
500
|
-
|
|
501
|
-
|
|
502
|
-
|
|
503
|
-
|
|
504
|
-
|
|
505
|
-
|
|
506
|
-
|
|
481
|
+
const anchored = popoverAnchorId === `${NAV_TREE_ITEM}:${item.id}`;
|
|
482
|
+
const ActionRoot = anchored ? Popover.Anchor : Fragment;
|
|
483
|
+
return (
|
|
484
|
+
// `data-popover-anchor` lets the enclosing row highlight itself while a popover (e.g. rename) is open on it.
|
|
485
|
+
/* @__PURE__ */ React4.createElement("div", {
|
|
486
|
+
className: "contents dx-app-no-drag",
|
|
487
|
+
...anchored && {
|
|
488
|
+
"data-popover-anchor": ""
|
|
489
|
+
}
|
|
490
|
+
}, /* @__PURE__ */ React4.createElement(ActionRoot, null, allActions.length === 1 ? /* @__PURE__ */ React4.createElement(Treegrid.Cell, {
|
|
491
|
+
classNames: "contents"
|
|
492
|
+
}, /* @__PURE__ */ React4.createElement(NavTreeItemMonolithicAction, {
|
|
493
|
+
baseLabel: toLocalizedString3(allActions[0].properties?.label, t),
|
|
494
|
+
parent: item,
|
|
495
|
+
path,
|
|
496
|
+
...allActions[0]
|
|
497
|
+
})) : allActions.length > 1 ? /* @__PURE__ */ React4.createElement(Treegrid.Cell, {
|
|
498
|
+
classNames: "contents"
|
|
499
|
+
}, /* @__PURE__ */ React4.createElement(NavTreeItemActionDropdownMenu, {
|
|
500
|
+
testId: `navtree.treeItem.actionsLevel${level}`,
|
|
501
|
+
label: t("tree-item-actions.label"),
|
|
502
|
+
icon: "ph--dots-three-vertical--regular",
|
|
503
|
+
parent: item,
|
|
504
|
+
path,
|
|
505
|
+
menuActions: allActions,
|
|
506
|
+
caller: NAV_TREE_ITEM
|
|
507
|
+
})) : /* @__PURE__ */ React4.createElement(Treegrid.Cell, null)), ItemEnd && /* @__PURE__ */ React4.createElement(Treegrid.Cell, {
|
|
508
|
+
classNames: "contents"
|
|
509
|
+
}, /* @__PURE__ */ React4.createElement(ItemEnd, {
|
|
510
|
+
node: item,
|
|
511
|
+
open
|
|
512
|
+
})))
|
|
513
|
+
);
|
|
507
514
|
});
|
|
508
515
|
|
|
509
516
|
// src/components/Sidebar/L1Panel.tsx
|
|
510
517
|
var L1Panel$ = ({ open, path, item, isCurrent, onBack }) => {
|
|
511
|
-
const { t } = useTranslation4(meta4.
|
|
518
|
+
const { t } = useTranslation4(meta4.profile.key);
|
|
512
519
|
const title = toLocalizedString4(item.properties.label, t);
|
|
513
520
|
const isActivated = useIsActivatedWorkspace(item);
|
|
514
521
|
const shouldRenderContent = isCurrent || isActivated;
|
|
@@ -583,10 +590,10 @@ var L1PanelContent = ({ path, item, onBack }) => {
|
|
|
583
590
|
}))));
|
|
584
591
|
};
|
|
585
592
|
var L1PanelHeader = ({ item, path, onBack }) => {
|
|
586
|
-
const { t } = useTranslation4(meta4.
|
|
593
|
+
const { t } = useTranslation4(meta4.profile.key);
|
|
587
594
|
const { renderItemEnd: ItemEnd } = useNavTreeContext();
|
|
588
595
|
const title = toLocalizedString4(item.properties.label, t);
|
|
589
|
-
const backCapableWorkspace = isPinnedWorkspace(item.id);
|
|
596
|
+
const backCapableWorkspace = Paths.isPinnedWorkspace(item.id);
|
|
590
597
|
const { menuActions, onAction } = useL1MenuActions({
|
|
591
598
|
item,
|
|
592
599
|
path
|
|
@@ -622,7 +629,7 @@ var L1PanelHeader = ({ item, path, onBack }) => {
|
|
|
622
629
|
})));
|
|
623
630
|
};
|
|
624
631
|
var MenuActions = ({ item, menuActions, onAction }) => {
|
|
625
|
-
const { t } = useTranslation4(meta4.
|
|
632
|
+
const { t } = useTranslation4(meta4.profile.key);
|
|
626
633
|
if (menuActions.length === 0) {
|
|
627
634
|
return null;
|
|
628
635
|
}
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"version": 3,
|
|
3
3
|
"sources": ["../../../../src/components/NavTree/NavTree.tsx", "../../../../src/components/NavTreeContext/NavTreeContext.tsx", "../../../../src/components/Sidebar/L0Menu.tsx", "../../../../src/components/UserAccountAvatar/UserAccountAvatar.tsx", "../../../../src/components/Sidebar/L1Panel.tsx", "../../../../src/components/NavTreeItem/NavTreeItemColumns.tsx", "../../../../src/components/NavTreeItem/NavTreeItemAction.tsx", "../../../../src/components/Sidebar/L1Tabs.tsx"],
|
|
4
|
-
"sourcesContent": ["//\n// Copyright 2024 DXOS.org\n//\n\nimport React, { forwardRef, useMemo } from 'react';\n\nimport { useAppGraph } from '@dxos/app-toolkit/ui';\nimport { Node, useConnections, useActions as useGraphActions } from '@dxos/plugin-graph';\nimport { Tabs } from '@dxos/react-ui-tabs';\nimport { byPosition } from '@dxos/util';\n\nimport { useLoadDescendents } from '#hooks';\n\nimport { useNavTreeContext } from '../NavTreeContext';\nimport { L0Menu, L1Tabs, type L1TabsProps } from '../Sidebar';\n\nexport const NAV_TREE_ITEM = 'NavTreeItem';\n\nexport type NavTreeProps = { id: string; root?: Node.Node; tab: string } & Pick<L1TabsProps, 'open'>;\n\n// TODO(wittjosiah): Refactor to Radix-style.\nexport const NavTree = forwardRef<HTMLDivElement, NavTreeProps>(({ id, root, tab, ...props }, forwardedRef) => {\n const { onBack, onItemHover } = useNavTreeContext();\n const { topLevelActions, l0Items, pinnedItems, userAccountItem, topLevelItems } = useTopLevelNavItems(root);\n\n useLoadDescendents(root);\n const path = useMemo(() => [id], [id]);\n\n return (\n // TODO(thure): `Tabs.Root` forces all items that should be able to receive focus to use `Tabs.Tab(Primitive)` since\n // it uses RovingFocus and doesn't support moving focus to an item that is not a tab. Assess whether this situation\n // should change including whether it should motivate a change in the design/taxonomy, or if this means this should\n // not use `react-ui-tabs` at all.\n <Tabs.Root value={tab} orientation='vertical' classNames='relative' ref={forwardedRef}>\n <L0Menu\n menuActions={topLevelActions}\n topLevelItems={l0Items}\n pinnedItems={pinnedItems}\n userAccountItem={userAccountItem}\n path={path}\n parent={root}\n onItemHover={onItemHover}\n />\n <L1Tabs topLevelItems={topLevelItems} path={path} currentItemId={tab} onBack={onBack} {...props} />\n </Tabs.Root>\n );\n});\n\n/**\n * Partitions root children into workspaces, pinned items, user-account, and top-level actions.\n */\nconst useTopLevelNavItems = (root?: Node.Node) => {\n const { graph } = useAppGraph();\n const rootId = root?.id ?? Node.RootId;\n const rootOutboundItems = useConnections(graph, rootId, 'child');\n const rootActions = useGraphActions(graph, rootId);\n\n const { topLevelActions, l0Items, pinnedItems, userAccountItem } = useMemo(() => {\n const topLevelWorkspaces: Node.Node[] = [];\n const outboundPinnedItems: Node.Node[] = [];\n let userAccountItem: Node.Node | undefined;\n for (const node of rootOutboundItems) {\n switch (node.properties.disposition) {\n case 'workspace':\n topLevelWorkspaces.push(node);\n break;\n case 'pin-end':\n outboundPinnedItems.push(node);\n break;\n case 'user-account':\n userAccountItem ??= node;\n break;\n }\n }\n\n const topLevelActions = rootActions\n .filter((action) => action.properties.disposition === 'menu')\n .toSorted((a, b) => byPosition(a.properties, b.properties));\n const pinnedItems = [\n ...outboundPinnedItems,\n ...rootActions.filter((action) => action.properties.disposition === 'pin-end'),\n ].toSorted((a, b) => byPosition(a.properties, b.properties));\n\n return {\n pinnedItems,\n topLevelActions,\n userAccountItem,\n l0Items: topLevelWorkspaces,\n };\n }, [rootActions, rootOutboundItems]);\n\n const topLevelItems = useMemo(\n () => [...l0Items, ...pinnedItems, ...(userAccountItem ? [userAccountItem] : [])],\n [l0Items, pinnedItems, userAccountItem],\n );\n\n return { topLevelActions, l0Items, pinnedItems, userAccountItem, topLevelItems };\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('Missing NavTreeContext'));\n", "//\n// Copyright 2025 DXOS.org\n//\n\nimport {\n type Edge,\n attachClosestEdge,\n extractClosestEdge,\n} from '@atlaskit/pragmatic-drag-and-drop-hitbox/closest-edge';\nimport { combine } from '@atlaskit/pragmatic-drag-and-drop/combine';\nimport { draggable, dropTargetForElements } from '@atlaskit/pragmatic-drag-and-drop/element/adapter';\nimport { preserveOffsetOnSource } from '@atlaskit/pragmatic-drag-and-drop/element/preserve-offset-on-source';\nimport { scrollJustEnoughIntoView } from '@atlaskit/pragmatic-drag-and-drop/element/scroll-just-enough-into-view';\nimport { useAtomValue } from '@effect-atom/atom-react';\nimport React, {\n type MouseEvent,\n type PropsWithChildren,\n forwardRef,\n memo,\n useCallback,\n useLayoutEffect,\n useMemo,\n useRef,\n useState,\n} from 'react';\n\nimport { type Node } from '@dxos/app-graph';\nimport { DxAvatar } from '@dxos/lit-ui/react';\nimport { useActionRunner } from '@dxos/plugin-graph';\nimport {\n Icon,\n IconButton,\n ListItem,\n ScrollArea,\n type ThemedClassName,\n Tooltip,\n toLocalizedString,\n useMediaQuery,\n useTranslation,\n} from '@dxos/react-ui';\nimport { Menu, type MenuItem } from '@dxos/react-ui-menu';\nimport type { StackItemRearrangeHandler } from '@dxos/react-ui-stack';\nimport { Tabs } from '@dxos/react-ui-tabs';\nimport { mx } from '@dxos/ui-theme';\nimport { arrayMove } from '@dxos/util';\n\nimport { useNavTreeState } from '#hooks';\nimport { meta } from '#meta';\n\nimport { l0ItemType } from '../../util';\nimport { useNavTreeContext } from '../NavTreeContext';\nimport { UserAccountAvatar } from '../UserAccountAvatar';\n\n//\n// L0Item\n//\n\ntype L0ItemData = {\n id: L0ItemProps['item']['id'];\n type: 'l0Item';\n};\n\ntype L0ItemRootProps = {\n item: Node.Node;\n parent?: Node.Node;\n path: string[];\n onMouseEnter?: () => void;\n};\n\ntype L0ItemProps = L0ItemRootProps & {\n item: Node.Node;\n parent?: Node.Node;\n path: string[];\n pinned?: boolean;\n onRearrange?: StackItemRearrangeHandler<L0ItemData>;\n onItemHover?: (params: { item: Node.Node }) => void;\n};\n\nconst useL0ItemClick = ({ item, parent, path }: L0ItemProps, type: string) => {\n const { onSelect, onTabChange } = useNavTreeContext();\n const { getItem } = useNavTreeState();\n const [isLg] = useMediaQuery('lg');\n const runAction = useActionRunner();\n\n return useCallback(\n (event: MouseEvent) => {\n switch (type) {\n case 'action': {\n const { properties: { caller } = {} } = item;\n return void runAction(item as Node.Action, caller ? { parent, path, caller } : { parent, path });\n }\n case 'tab':\n return onTabChange?.(item);\n case 'link':\n return onSelect?.({ item, path, current: !getItem(path).current, option: event.altKey });\n }\n },\n [item, parent, type, getItem, onSelect, onTabChange, isLg, runAction],\n );\n};\n\nconst l0Breakpoints: Record<string, string> = {\n lg: 'hidden lg:grid',\n};\n\nconst L0ItemRoot = memo(\n forwardRef<HTMLButtonElement, PropsWithChildren<L0ItemRootProps>>(\n ({ item, parent, path, onMouseEnter, children }, forwardedRef) => {\n const { t } = useTranslation(meta.id);\n const { model } = useNavTreeContext();\n const itemPath = useMemo(() => [...path, item.id], [item.id, path]);\n const { id, testId } = useAtomValue(model.itemProps(itemPath));\n const localizedString = toLocalizedString(item.properties.label, t);\n\n const type = l0ItemType(item);\n const handleClick = useL0ItemClick({ item, parent, path: itemPath }, type);\n\n return (\n <Tooltip.Trigger asChild delayDuration={0} side='right' content={localizedString}>\n <Tabs.TabPrimitive\n className={mx(\n 'group/l0item flex w-full justify-center items-center relative',\n 'dx-app-no-drag dx-focus-ring-group data[type!=\"collection\"]:cursor-pointer',\n l0Breakpoints[item.properties.l0Breakpoint],\n )}\n tabIndex={type === 'tab' ? 0 : undefined}\n data-type={type}\n data-testid={testId}\n data-object-id={id}\n value={item.id}\n onClick={handleClick}\n onMouseEnter={onMouseEnter}\n ref={forwardedRef}\n >\n {children}\n </Tabs.TabPrimitive>\n </Tooltip.Trigger>\n );\n },\n ),\n);\n\nexport const L0ItemActiveTabIndicator = ({ classNames }: ThemedClassName<{}>) => (\n <div\n className={mx(\n 'hidden group-aria-selected/l0item:block absolute start-0 h-6 w-1.5 bg-accent-bg rounded-sm',\n classNames,\n )}\n />\n);\n\n// TODO(burdon): Factor out pinned (non-draggable) items.\nconst L0Item = memo(({ item, parent, path, pinned, onRearrange, onItemHover }: L0ItemProps) => {\n const { t } = useTranslation(meta.id);\n const itemElement = useRef<HTMLButtonElement | null>(null);\n const [closestEdge, setEdge] = useState<Edge | null>(null);\n const localizedString = toLocalizedString(item.properties.label, t);\n const hue = item.properties.hue ?? null;\n\n useLayoutEffect(() => {\n if (!itemElement.current || !onRearrange) {\n return;\n }\n\n return combine(\n draggable({\n element: itemElement.current,\n getInitialData: () => ({ id: item.id, type: 'l0Item' }) satisfies L0ItemData,\n onGenerateDragPreview: ({ nativeSetDragImage, source, location }) => {\n document.body.setAttribute('data-drag-preview', 'true');\n const element = source.element.querySelector('[data-frame]') as HTMLElement;\n scrollJustEnoughIntoView({ element });\n const { x, y } = preserveOffsetOnSource({ element, input: location.current.input })({\n container: (element.offsetParent ?? document.body) as HTMLElement,\n });\n nativeSetDragImage?.(element, x, y);\n },\n onDragStart: () => {\n document.body.removeAttribute('data-drag-preview');\n itemElement.current!.closest('[data-drag-autoscroll]')?.setAttribute('data-drag-autoscroll', 'active');\n },\n onDrop: () => {\n itemElement.current!.closest('[data-drag-autoscroll]')?.setAttribute('data-drag-autoscroll', 'idle');\n },\n }),\n dropTargetForElements({\n element: itemElement.current,\n getData: ({ input, element }) => {\n return attachClosestEdge(\n { id: item.id, type: 'l0Item' },\n { input, element, allowedEdges: ['top', 'bottom'] },\n );\n },\n onDragEnter: ({ self, source }) => {\n if (source.data.type === self.data.type) {\n setEdge(extractClosestEdge(self.data));\n }\n },\n onDrag: ({ self, source }) => {\n if (source.data.type === self.data.type) {\n setEdge(extractClosestEdge(self.data));\n }\n },\n onDragLeave: () => setEdge(null),\n onDrop: ({ self, source }) => {\n setEdge(null);\n if (source.data.type === self.data.type) {\n onRearrange(source.data as L0ItemData, self.data as L0ItemData, extractClosestEdge(self.data));\n }\n },\n }),\n );\n }, [item, onRearrange]);\n\n const handleMouseEnter = useCallback(() => onItemHover?.({ item }), [item, onItemHover]);\n\n return (\n <L0ItemRoot ref={itemElement} item={item} parent={parent} path={path} onMouseEnter={handleMouseEnter}>\n <div\n data-frame={true}\n {...(hue && { style: { background: `var(--color-${hue}-surface)` } })}\n className={mx(\n 'flex justify-center items-center dx-focus-ring-group-indicator transition-colors rounded-sm',\n pinned\n ? 'p-2 group-hover/l0item:bg-current-surface'\n : 'w-(--dx-l0-avatar-size) h-(--dx-l0-avatar-size) bg-current-surface',\n )}\n >\n <ItemAvatar item={item} />\n </div>\n <L0ItemActiveTabIndicator />\n <span id={`${item.id}__label`} className='sr-only'>\n {localizedString}\n </span>\n {closestEdge && <ListItem.DropIndicator edge={closestEdge} />}\n </L0ItemRoot>\n );\n});\n\nconst ItemAvatar = ({ item }: Pick<L0ItemProps, 'item'>) => {\n const { t } = useTranslation(meta.id);\n\n // Actions.\n if (item.properties.icon) {\n const hue = item.properties.hue ?? null;\n const hueFgStyle = hue && { style: { color: `var(--color-${hue}-fg)` } };\n return <Icon icon={item.properties.icon} size={6} {...hueFgStyle} />;\n }\n\n const type = l0ItemType(item);\n if (type === 'tab' && item.properties.disposition !== 'pin-end') {\n const hue = item.properties.hue ?? null;\n const localizedString = toLocalizedString(item.properties.label, t);\n return <DxAvatar hue={hue} hueVariant='surface' variant='square' size={12} fallback={localizedString} />;\n }\n\n return null;\n};\n\n//\n// L0Menu\n//\n\nexport type L0MenuProps = {\n menuActions: MenuItem[];\n topLevelItems: Node.Node[];\n pinnedItems: Node.Node[];\n userAccountItem?: Node.Node;\n parent?: Node.Node;\n path: string[];\n onItemHover?: (params: { item: Node.Node }) => void;\n};\n\nexport const L0Menu = ({\n menuActions,\n topLevelItems,\n pinnedItems,\n userAccountItem,\n parent,\n path,\n onItemHover,\n}: L0MenuProps) => {\n const { t } = useTranslation(meta.id);\n const runAction = useActionRunner();\n const handleAction = useCallback(\n (action: Node.Action, params: Node.InvokeProps) => {\n void runAction(action, params);\n },\n [runAction],\n );\n\n const handleRearrange = useCallback<StackItemRearrangeHandler<L0ItemData>>(\n (source, target, closestEdge) => {\n const sourceItem = topLevelItems.find((i) => i.id === source.id);\n if (!sourceItem?.properties.onRearrange) {\n return;\n }\n\n const sourceIndex = topLevelItems.findIndex((i) => i.id === source.id);\n const targetIndex = topLevelItems.findIndex((i) => i.id === target.id);\n const insertIndex =\n source.id === target.id\n ? sourceIndex\n : targetIndex +\n (sourceIndex < targetIndex ? (closestEdge === 'top' ? -1 : 0) : closestEdge === 'bottom' ? 1 : 0);\n const nextOrder = arrayMove([...topLevelItems], sourceIndex, insertIndex);\n return sourceItem.properties.onRearrange(nextOrder.map((item) => item.data));\n },\n [topLevelItems],\n );\n\n // Check if any items have onRearrange to enable drag-and-drop.\n const hasRearrangeableItems = topLevelItems.some((item) => item.properties.onRearrange);\n\n return (\n <Tabs.Tablist\n data-tauri-drag-region\n classNames={[\n 'group/l0 absolute z-[1] inset-y-0 start-0 rounded-is',\n 'grid grid-cols-[var(--dx-l0-size)] grid-rows-[var(--dx-rail-size)_1fr_min-content_var(--dx-l0-size)] dx-contain-layout',\n 'w-(--dx-l0-size) bg-l0-surface dx-app-drag pb-[env(safe-area-inset-bottom)]',\n '[body[data-platform=\"macos\"]_&]:pt-[30px]',\n '[body[data-platform=\"ios\"]_&]:pt-[max(env(safe-area-inset-top),0.25rem)]',\n ]}\n >\n {/* TODO(wittjosiah): Use L0Item trigger. */}\n <Menu.Root onAction={handleAction}>\n <Menu.Trigger asChild data-testid='spacePlugin.addSpace'>\n <div className='grid place-items-center'>\n <IconButton\n density='lg'\n variant='ghost'\n size={5}\n icon='ph--list--regular'\n iconOnly\n square\n label={t('app-menu.label')}\n />\n </div>\n </Menu.Trigger>\n <Menu.Content group={parent} items={menuActions} />\n </Menu.Root>\n\n {/* Space list. */}\n <ScrollArea.Root centered thin orientation='vertical'>\n <ScrollArea.Viewport classNames='flex flex-col gap-2 py-1'>\n {topLevelItems.map((item) => (\n <L0Item\n key={item.id}\n item={item}\n parent={parent}\n path={path}\n onItemHover={onItemHover}\n {...(hasRearrangeableItems && { onRearrange: handleRearrange })}\n />\n ))}\n </ScrollArea.Viewport>\n </ScrollArea.Root>\n\n {/* Actions. */}\n <div className='grid grid-cols-1 auto-rows-(--dx-rail-action) pt-2'>\n {pinnedItems.map((item) => (\n <L0Item key={item.id} item={item} parent={parent} path={path} pinned />\n ))}\n </div>\n\n {userAccountItem && (\n <div className='grid dx-app-no-drag'>\n <L0ItemRoot key={userAccountItem.id} item={userAccountItem} parent={parent} path={path}>\n <UserAccountAvatar\n userId={userAccountItem.properties.userId}\n hue={userAccountItem.properties.hue}\n emoji={userAccountItem.properties.emoji}\n status={userAccountItem.properties.status}\n size={10}\n />\n </L0ItemRoot>\n </div>\n )}\n </Tabs.Tablist>\n );\n};\n", "//\n// Copyright 2023 DXOS.org\n//\n\nimport React from 'react';\n\nimport { Avatar, type AvatarStatus, type Size } from '@dxos/react-ui';\nimport { hexToFallback } from '@dxos/util';\n\nimport { L0ItemActiveTabIndicator } from '../Sidebar';\n\nexport type UserAccountAvatarProps = {\n size?: Size;\n userId?: string;\n hue?: string;\n emoji?: string;\n status?: AvatarStatus;\n};\n\nexport const UserAccountAvatar = ({ size, userId, hue, emoji, status }: UserAccountAvatarProps) => {\n const fallbackValue = hexToFallback(userId ?? '0');\n\n return (\n <>\n <L0ItemActiveTabIndicator classNames='inset-y-6' />\n <div\n className='grid place-items-center dx-focus-ring-group-indicator rounded-full'\n data-joyride='welcome/account'\n >\n <Avatar.Root>\n <Avatar.Content\n variant='circle'\n size={size ?? 12}\n status={status ?? 'active'}\n hue={hue || fallbackValue.hue}\n fallback={emoji || fallbackValue.emoji}\n data-testid='treeView.userAccount'\n />\n </Avatar.Root>\n </div>\n </>\n );\n};\n", "//\n// Copyright 2025 DXOS.org\n//\n\nimport * as Option from 'effect/Option';\nimport React, { memo, useCallback, useMemo } from 'react';\n\nimport { Node } from '@dxos/app-graph';\nimport { isPinnedWorkspace } from '@dxos/app-toolkit';\nimport { useAppGraph } from '@dxos/app-toolkit/ui';\nimport { Graph, useActionRunner, useEdges } from '@dxos/plugin-graph';\nimport { DensityProvider, IconButton, ScrollArea, toLocalizedString, useTranslation } from '@dxos/react-ui';\nimport { Tree } from '@dxos/react-ui-list';\nimport { Menu, type MenuItem } from '@dxos/react-ui-menu';\nimport { Tabs } from '@dxos/react-ui-tabs';\nimport { hoverableControlItem, hoverableOpenControlItem } from '@dxos/ui-theme';\n\nimport { getListActions, useActions, useLoadDescendents } from '#hooks';\nimport { meta } from '#meta';\n\nimport { NAV_TREE_ITEM } from '../NavTree';\nimport { useNavTreeContext } from '../NavTreeContext';\nimport { NavTreeItemColumns } from '../NavTreeItem/NavTreeItemColumns';\n\nexport type L1PanelProps = {\n open?: boolean;\n path: string[];\n item: Node.Node;\n isCurrent: boolean;\n onBack?: () => void;\n};\n\n/**\n * Space or settings panel.\n */\nconst L1Panel$ = ({ open, path, item, isCurrent, onBack }: L1PanelProps) => {\n const { t } = useTranslation(meta.id);\n const title = toLocalizedString(item.properties.label, t);\n const isActivated = useIsActivatedWorkspace(item);\n const shouldRenderContent = isCurrent || isActivated;\n\n return (\n <Tabs.Panel\n key={item.id}\n value={item.id}\n classNames={[\n 'absolute inset-y-0 end-0',\n 'w-[calc(100%-var(--dx-l0-size))] lg:w-(--dx-l1-size) grid-cols-1 grid-rows-[var(--dx-rail-size)_1fr]',\n 'py-[env(safe-area-inset-top)]',\n isCurrent && 'grid',\n ]}\n tabIndex={-1}\n aria-label={title}\n {...(isCurrent && { 'data-testid': 'navtree.workspace.visible' })}\n {...(!open && { inert: true })}\n >\n {shouldRenderContent && <L1PanelContent open={open} path={path} item={item} onBack={onBack} />}\n </Tabs.Panel>\n );\n};\n\n/** Determines whether a workspace tab has been populated with real child content (i.e. expanded at least once). */\nconst useIsActivatedWorkspace = (item: Node.Node): boolean => {\n const { graph } = useAppGraph();\n const edges = useEdges(graph, item.id);\n\n return useMemo(() => {\n const childIds = edges[Graph.relationKey('child')] ?? [];\n return childIds.some((childId) => {\n const child = Graph.getNode(graph, childId);\n if (Option.isNone(child)) {\n return false;\n }\n return child.value.properties.disposition === undefined;\n });\n }, [edges, graph]);\n};\n\n/**\n * Mounted panel content for active or previously-visited tabs.\n */\nconst L1PanelContent = ({ path, item, onBack }: Pick<L1PanelProps, 'open' | 'path' | 'item' | 'onBack'>) => {\n const navTreeContext = useNavTreeContext();\n\n return (\n <DensityProvider density='md'>\n <L1PanelHeader path={path} item={item} onBack={onBack} />\n <ScrollArea.Root thin orientation='vertical'>\n <ScrollArea.Viewport>\n <Tree\n classNames='pt-[2px]'\n model={navTreeContext.model}\n id={item.id}\n rootId={item.id}\n path={path}\n levelOffset={5}\n draggable\n gridTemplateColumns='[tree-row-start] minmax(0, 1fr) min-content min-content [tree-row-end]'\n renderColumns={NavTreeItemColumns}\n blockInstruction={navTreeContext.blockInstruction}\n canDrop={navTreeContext.canDrop}\n canSelect={navTreeContext.canSelect}\n onOpenChange={navTreeContext.onOpenChange}\n onSelect={navTreeContext.onSelect}\n onItemHover={navTreeContext.onItemHover}\n />\n </ScrollArea.Viewport>\n </ScrollArea.Root>\n </DensityProvider>\n );\n};\n\n/**\n * Header row.\n */\nconst L1PanelHeader = ({ item, path, onBack }: Pick<L1PanelProps, 'item' | 'path' | 'onBack'>) => {\n const { t } = useTranslation(meta.id);\n const { renderItemEnd: ItemEnd } = useNavTreeContext();\n const title = toLocalizedString(item.properties.label, t);\n const backCapableWorkspace = isPinnedWorkspace(item.id);\n\n const { menuActions, onAction } = useL1MenuActions({ item, path });\n useLoadDescendents(item);\n\n return (\n <div\n data-tauri-drag-region\n className='grid grid-cols-[28px_1fr_min-content_min-content] w-full items-center dx-app-drag dx-density-lg'\n >\n {backCapableWorkspace ? (\n <IconButton\n classNames={[hoverableControlItem, hoverableOpenControlItem]}\n variant='ghost'\n icon='ph--caret-left--regular'\n iconOnly\n size={4}\n label={t('button-back.button')}\n data-testid='treeView.primaryTreeButton'\n onClick={() => onBack?.()}\n />\n ) : (\n <div />\n )}\n <h2 data-tauri-drag-region className='flex-1 truncate min-w-0'>\n {title}\n </h2>\n <div className='contents dx-app-no-drag'>\n <MenuActions item={item} menuActions={menuActions} onAction={onAction} />\n {ItemEnd && <ItemEnd node={item} open />}\n </div>\n </div>\n );\n};\n\ntype L1MenuActions = {\n menuActions: Node.Action[];\n onAction: (action: Node.Action, params?: Node.InvokeProps) => void;\n};\n\n/**\n * Header menu actions for an L1 workspace tab. Renders nothing for an empty\n * `menuActions`, a single inline icon button for one action, and a\n * `…`-menu trigger for multiple.\n */\nconst MenuActions = ({\n item,\n menuActions,\n onAction,\n}: {\n item: Node.Node;\n} & Pick<L1MenuActions, 'menuActions' | 'onAction'>) => {\n const { t } = useTranslation(meta.id);\n\n if (menuActions.length === 0) {\n return null;\n }\n\n if (menuActions.length === 1) {\n return (\n <IconButton\n classNames={['shrink-0 px-2 pointer-fine:px-1', hoverableControlItem, hoverableOpenControlItem]}\n variant='ghost'\n icon={menuActions[0].properties?.icon ?? 'ph--circle-dashed--regular'}\n iconOnly\n size={4}\n label={toLocalizedString(menuActions[0].properties?.label, t)}\n data-testid={menuActions[0].properties?.testId}\n onClick={() => onAction(menuActions[0] as Node.Action)}\n />\n );\n }\n\n return (\n <Menu.Root caller={NAV_TREE_ITEM} onAction={onAction}>\n <Menu.Trigger asChild>\n <IconButton\n classNames={['shrink-0 px-2 pointer-fine:px-1', hoverableControlItem, hoverableOpenControlItem]}\n variant='ghost'\n icon='ph--dots-three-vertical--regular'\n iconOnly\n size={4}\n label={t('tree-item-actions.label')}\n data-testid='navtree.treeItem.actionsLevel0'\n />\n </Menu.Trigger>\n <Menu.Content group={item} items={menuActions as MenuItem[]} />\n </Menu.Root>\n );\n};\n\n/**\n * Builds the menu actions for the L1 panel header.\n */\nconst useL1MenuActions = ({ item, path }: Pick<L1PanelProps, 'item' | 'path'>): L1MenuActions => {\n const runAction = useActionRunner();\n\n const menuActions = getListActions(useActions(item));\n\n const onAction = useCallback(\n (action: Node.Action, params?: Node.InvokeProps) => {\n void runAction(action, { ...params, path });\n },\n [runAction, path],\n );\n\n return { menuActions, onAction };\n};\n\nexport const L1Panel = memo(L1Panel$);\n", "//\n// Copyright 2025 DXOS.org\n//\n\nimport React, { Fragment, memo, useMemo } from 'react';\n\nimport { Popover, Treegrid, toLocalizedString, useTranslation } from '@dxos/react-ui';\n\nimport { getListActions, useActions } from '#hooks';\nimport { meta } from '#meta';\n\nimport { NAV_TREE_ITEM } from '../NavTree';\nimport { useNavTreeContext } from '../NavTreeContext';\nimport { type NavTreeItemColumnsProps } from '../types';\nimport { NavTreeItemActionDropdownMenu, NavTreeItemMonolithicAction } from './NavTreeItemAction';\n\nexport const NavTreeItemColumns = memo(({ path, item, open }: NavTreeItemColumnsProps) => {\n const { t } = useTranslation(meta.id);\n const { renderItemEnd: ItemEnd, popoverAnchorId } = useNavTreeContext();\n\n const level = path.length - 2;\n const flattenedActions = useActions(item);\n const allActions = useMemo(() => getListActions(flattenedActions), [flattenedActions]);\n\n const ActionRoot = popoverAnchorId === `${NAV_TREE_ITEM}:${item.id}` ? Popover.Anchor : Fragment;\n\n return (\n <div className='contents dx-app-no-drag'>\n <ActionRoot>\n {allActions.length === 1 ? (\n <Treegrid.Cell classNames='contents'>\n <NavTreeItemMonolithicAction\n baseLabel={toLocalizedString(allActions[0].properties?.label, t)}\n parent={item}\n path={path}\n {...allActions[0]}\n />\n </Treegrid.Cell>\n ) : allActions.length > 1 ? (\n <Treegrid.Cell classNames='contents'>\n <NavTreeItemActionDropdownMenu\n testId={`navtree.treeItem.actionsLevel${level}`}\n label={t('tree-item-actions.label')}\n icon='ph--dots-three-vertical--regular'\n parent={item}\n path={path}\n menuActions={allActions}\n caller={NAV_TREE_ITEM}\n />\n </Treegrid.Cell>\n ) : (\n <Treegrid.Cell />\n )}\n </ActionRoot>\n {ItemEnd && (\n <Treegrid.Cell classNames='contents'>\n <ItemEnd node={item} open={open} />\n </Treegrid.Cell>\n )}\n </div>\n );\n});\n", "//\n// Copyright 2023 DXOS.org\n//\n\nimport React, { useCallback } from 'react';\n\nimport { type Node } from '@dxos/app-graph';\nimport { useActionRunner } from '@dxos/plugin-graph';\nimport { IconButton, toLocalizedString, useDensityContext, useTranslation } from '@dxos/react-ui';\nimport { composable, composableProps } from '@dxos/react-ui';\nimport { Menu, type MenuItem } from '@dxos/react-ui-menu';\nimport { hoverableControlItem, hoverableOpenControlItem } from '@dxos/ui-theme';\n\nimport { meta } from '#meta';\nimport { type ActionProperties } from '#types';\n\nconst fallbackIcon = 'ph--circle-dashed--regular';\n\nconst mdActionButtonProps = {\n size: 4 as const,\n density: 'md' as const,\n};\n\nconst lgActionButtonProps = {\n size: 5 as const,\n density: 'lg' as const,\n};\n\nexport type NavTreeItemActionMenuProps = ActionProperties & {\n parent: Node.Node;\n path?: string[];\n caller?: string;\n monolithic?: boolean;\n menuActions?: Node.Action[];\n};\n\nexport const NavTreeItemActionDropdownMenu = composable<HTMLButtonElement, NavTreeItemActionMenuProps>(\n ({ parent, path, label, icon, testId, menuActions, caller, ...props }, forwardedRef) => {\n const { t } = useTranslation(meta.id);\n const density = useDensityContext();\n const runAction = useActionRunner();\n const handleAction = useCallback(\n (action: Node.Action, params: Node.InvokeProps = {}) => runAction(action, { ...params, path }),\n [runAction, path],\n );\n\n return (\n <Menu.Root caller={caller} onAction={handleAction}>\n <Menu.Trigger asChild>\n <IconButton\n {...(density === 'lg' ? lgActionButtonProps : mdActionButtonProps)}\n {...composableProps(props)}\n classNames={['shrink-0 px-2 pointer-fine:px-1', hoverableControlItem, hoverableOpenControlItem]}\n variant='ghost'\n icon={icon ?? fallbackIcon}\n iconOnly\n label={toLocalizedString(label, t)}\n data-testid={testId}\n ref={forwardedRef}\n />\n </Menu.Trigger>\n <Menu.Content group={parent} items={menuActions as MenuItem[]} />\n </Menu.Root>\n );\n },\n);\n\nNavTreeItemActionDropdownMenu.displayName = 'NavTreeItemActionDropdownMenu';\n\nexport const NavTreeItemMonolithicAction = (\n props: Node.Action & {\n parent: Node.Node;\n path?: string[];\n onAction?: (action: Node.Action) => void;\n baseLabel: string;\n },\n) => {\n const {\n parent,\n path,\n properties: { disabled, caller, testId, icon, variant = 'ghost', iconOnly = true } = { label: 'never' },\n baseLabel,\n } = props;\n const density = useDensityContext();\n const runAction = useActionRunner();\n return (\n <IconButton\n {...(density === 'lg' ? lgActionButtonProps : mdActionButtonProps)}\n variant={variant}\n classNames={[\n 'shrink-0',\n hoverableControlItem,\n hoverableOpenControlItem,\n iconOnly ? 'px-2 pointer-fine:px-1' : 'p-2 pointer-fine:p-2 me-1',\n ]}\n icon={icon ?? fallbackIcon}\n iconOnly={iconOnly}\n label={baseLabel}\n disabled={disabled}\n onClick={(event) => {\n event.stopPropagation();\n if (disabled) {\n return;\n }\n\n void runAction(props, caller ? { parent, caller, path } : { parent, path });\n }}\n data-testid={testId}\n />\n );\n};\n\nexport const NavTreeItemAction = ({\n monolithic,\n menuActions,\n menuType,\n parent,\n path,\n ...props\n}: NavTreeItemActionMenuProps) => {\n const { t } = useTranslation(meta.id);\n\n const monolithicAction = menuActions?.length === 1 && menuActions[0];\n const baseLabel = toLocalizedString(monolithicAction ? monolithicAction.properties!.label : props.label, t);\n return monolithic && menuActions?.length === 1 ? (\n <NavTreeItemMonolithicAction baseLabel={baseLabel} parent={parent} path={path} {...menuActions[0]} />\n ) : (\n <NavTreeItemActionDropdownMenu {...props} label={baseLabel} parent={parent} path={path} menuActions={menuActions} />\n );\n};\n", "//\n// Copyright 2025 DXOS.org\n//\n\nimport React from 'react';\n\nimport { type Node } from '@dxos/app-graph';\n\nimport { l0ItemType } from '../../util';\nimport { L1Panel, type L1PanelProps } from './L1Panel';\n\nexport type L1TabsProps = Pick<L1PanelProps, 'open' | 'onBack'> & {\n currentItemId: string;\n path: string[];\n topLevelItems: Node.Node[];\n};\n\n/**\n * Each workspace is an L1 tab.\n */\nexport const L1Tabs = ({ topLevelItems, currentItemId, onBack, open, path }: L1TabsProps) => {\n return (\n <>\n {topLevelItems.map((item) => {\n const type = l0ItemType(item);\n if (type === 'tab') {\n return (\n <L1Panel\n key={item.id}\n item={item}\n path={path}\n open={open}\n onBack={onBack}\n isCurrent={item.id === currentItemId}\n />\n );\n }\n return null;\n })}\n </>\n );\n};\n"],
|
|
5
|
-
"mappings": "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",
|
|
6
|
-
"names": ["React", "forwardRef", "useMemo", "useAppGraph", "Node", "useConnections", "useActions", "useGraphActions", "Tabs", "byPosition", "useLoadDescendents", "createContext", "useContext", "raise", "NavTreeContext", "useNavTreeContext", "Error", "attachClosestEdge", "extractClosestEdge", "combine", "draggable", "dropTargetForElements", "preserveOffsetOnSource", "scrollJustEnoughIntoView", "useAtomValue", "React", "forwardRef", "memo", "useCallback", "useLayoutEffect", "useMemo", "useRef", "useState", "DxAvatar", "useActionRunner", "Icon", "IconButton", "ListItem", "ScrollArea", "Tooltip", "toLocalizedString", "useMediaQuery", "useTranslation", "Menu", "Tabs", "mx", "arrayMove", "useNavTreeState", "meta", "React", "Avatar", "hexToFallback", "UserAccountAvatar", "size", "userId", "hue", "emoji", "status", "fallbackValue", "hexToFallback", "L0ItemActiveTabIndicator", "classNames", "div", "className", "data-joyride", "Avatar", "Root", "Content", "variant", "fallback", "data-testid", "useL0ItemClick", "item", "parent", "path", "type", "onSelect", "onTabChange", "useNavTreeContext", "getItem", "useNavTreeState", "isLg", "useMediaQuery", "runAction", "useActionRunner", "useCallback", "event", "properties", "caller", "current", "option", "altKey", "l0Breakpoints", "lg", "L0ItemRoot", "memo", "forwardRef", "onMouseEnter", "children", "forwardedRef", "t", "useTranslation", "meta", "
|
|
4
|
+
"sourcesContent": ["//\n// Copyright 2024 DXOS.org\n//\n\nimport React, { forwardRef, useMemo } from 'react';\n\nimport { useAppGraph } from '@dxos/app-toolkit/ui';\nimport { Node, useConnections, useActions as useGraphActions } from '@dxos/plugin-graph';\nimport { type MenuItem } from '@dxos/react-ui-menu';\nimport { Tabs } from '@dxos/react-ui-tabs';\nimport { byPosition } from '@dxos/util';\n\nimport { useLoadDescendents } from '#hooks';\n\nimport { useNavTreeContext } from '../NavTreeContext';\nimport { L0Menu, L1Tabs, type L1TabsProps } from '../Sidebar';\n\nexport const NAV_TREE_ITEM = 'NavTreeItem';\n\nexport type NavTreeProps = { id: string; root?: Node.Node; tab: string } & Pick<L1TabsProps, 'open'>;\n\n// TODO(wittjosiah): Refactor to Radix-style.\nexport const NavTree = forwardRef<HTMLDivElement, NavTreeProps>(({ id, root, tab, ...props }, forwardedRef) => {\n const { onBack, onItemHover } = useNavTreeContext();\n const { topLevelActions, l0Items, pinnedItems, userAccountItem, topLevelItems } = useTopLevelNavItems(root);\n\n useLoadDescendents(root);\n const path = useMemo(() => [id], [id]);\n\n return (\n // TODO(thure): `Tabs.Root` forces all items that should be able to receive focus to use `Tabs.Tab(Primitive)` since\n // it uses RovingFocus and doesn't support moving focus to an item that is not a tab. Assess whether this situation\n // should change including whether it should motivate a change in the design/taxonomy, or if this means this should\n // not use `react-ui-tabs` at all.\n <Tabs.Root value={tab} orientation='vertical' classNames='relative' ref={forwardedRef}>\n <L0Menu\n menuActions={topLevelActions as MenuItem[]}\n topLevelItems={l0Items}\n pinnedItems={pinnedItems}\n userAccountItem={userAccountItem}\n path={path}\n parent={root}\n onItemHover={onItemHover}\n />\n <L1Tabs topLevelItems={topLevelItems} path={path} currentItemId={tab} onBack={onBack} {...props} />\n </Tabs.Root>\n );\n});\n\n/**\n * Partitions root children into workspaces, pinned items, user-account, and top-level actions.\n */\nconst useTopLevelNavItems = (root?: Node.Node) => {\n const { graph } = useAppGraph();\n const rootId = root?.id ?? Node.RootId;\n const rootOutboundItems = useConnections(graph, rootId, 'child');\n const rootActions = useGraphActions(graph, rootId);\n\n const { topLevelActions, l0Items, pinnedItems, userAccountItem } = useMemo(() => {\n const topLevelWorkspaces: Node.Node[] = [];\n const outboundPinnedItems: Node.Node[] = [];\n let userAccountItem: Node.Node | undefined;\n for (const node of rootOutboundItems) {\n switch (node.properties.disposition) {\n case 'workspace':\n topLevelWorkspaces.push(node);\n break;\n case 'pin-end':\n outboundPinnedItems.push(node);\n break;\n case 'user-account':\n userAccountItem ??= node;\n break;\n }\n }\n\n const topLevelActions = rootActions\n .filter((action) => action.properties.disposition === 'menu')\n .toSorted((a, b) => byPosition(a.properties, b.properties));\n const pinnedItems = [\n ...outboundPinnedItems,\n ...rootActions.filter((action) => action.properties.disposition === 'pin-end'),\n ].toSorted((a, b) => byPosition(a.properties, b.properties));\n\n return {\n pinnedItems,\n topLevelActions,\n userAccountItem,\n l0Items: topLevelWorkspaces,\n };\n }, [rootActions, rootOutboundItems]);\n\n const topLevelItems = useMemo(\n () => [...l0Items, ...pinnedItems, ...(userAccountItem ? [userAccountItem] : [])],\n [l0Items, pinnedItems, userAccountItem],\n );\n\n return { topLevelActions, l0Items, pinnedItems, userAccountItem, topLevelItems };\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('Missing NavTreeContext'));\n", "//\n// Copyright 2025 DXOS.org\n//\n\nimport {\n type Edge,\n attachClosestEdge,\n extractClosestEdge,\n} from '@atlaskit/pragmatic-drag-and-drop-hitbox/closest-edge';\nimport { combine } from '@atlaskit/pragmatic-drag-and-drop/combine';\nimport { draggable, dropTargetForElements } from '@atlaskit/pragmatic-drag-and-drop/element/adapter';\nimport { preserveOffsetOnSource } from '@atlaskit/pragmatic-drag-and-drop/element/preserve-offset-on-source';\nimport { scrollJustEnoughIntoView } from '@atlaskit/pragmatic-drag-and-drop/element/scroll-just-enough-into-view';\nimport { useAtomValue } from '@effect-atom/atom-react';\nimport React, {\n type MouseEvent,\n type PropsWithChildren,\n forwardRef,\n memo,\n useCallback,\n useLayoutEffect,\n useMemo,\n useRef,\n useState,\n} from 'react';\n\nimport { type Node } from '@dxos/app-graph';\nimport { DxAvatar } from '@dxos/lit-ui/react';\nimport { useActionRunner } from '@dxos/plugin-graph';\nimport {\n Icon,\n IconButton,\n ListItem,\n ScrollArea,\n type ThemedClassName,\n Tooltip,\n toLocalizedString,\n useMediaQuery,\n useTranslation,\n} from '@dxos/react-ui';\nimport { Menu, type MenuItem } from '@dxos/react-ui-menu';\nimport type { StackItemRearrangeHandler } from '@dxos/react-ui-stack';\nimport { Tabs } from '@dxos/react-ui-tabs';\nimport { mx } from '@dxos/ui-theme';\nimport { arrayMove } from '@dxos/util';\n\nimport { useNavTreeState } from '#hooks';\nimport { meta } from '#meta';\n\nimport { l0ItemType } from '../../util';\nimport { useNavTreeContext } from '../NavTreeContext';\nimport { UserAccountAvatar } from '../UserAccountAvatar';\n\n//\n// L0Item\n//\n\ntype L0ItemData = {\n id: L0ItemProps['item']['id'];\n type: 'l0Item';\n};\n\ntype L0ItemRootProps = {\n item: Node.Node;\n parent?: Node.Node;\n path: string[];\n onMouseEnter?: () => void;\n};\n\ntype L0ItemProps = L0ItemRootProps & {\n item: Node.Node;\n parent?: Node.Node;\n path: string[];\n pinned?: boolean;\n onRearrange?: StackItemRearrangeHandler<L0ItemData>;\n onItemHover?: (params: { item: Node.Node }) => void;\n};\n\nconst useL0ItemClick = ({ item, parent, path }: L0ItemProps, type: string) => {\n const { onSelect, onTabChange } = useNavTreeContext();\n const { getItem } = useNavTreeState();\n const [isLg] = useMediaQuery('lg');\n const runAction = useActionRunner();\n\n return useCallback(\n (event: MouseEvent) => {\n switch (type) {\n case 'action': {\n const { properties: { caller } = {} } = item;\n return void runAction(item as Node.Action, caller ? { parent, path, caller } : { parent, path });\n }\n case 'tab':\n return onTabChange?.(item);\n case 'link':\n return onSelect?.({ item, path, current: !getItem(path).current, option: event.altKey });\n }\n },\n [item, parent, type, getItem, onSelect, onTabChange, isLg, runAction],\n );\n};\n\nconst l0Breakpoints: Record<string, string> = {\n lg: 'hidden lg:grid',\n};\n\nconst L0ItemRoot = memo(\n forwardRef<HTMLButtonElement, PropsWithChildren<L0ItemRootProps>>(\n ({ item, parent, path, onMouseEnter, children }, forwardedRef) => {\n const { t } = useTranslation(meta.profile.key);\n const { model } = useNavTreeContext();\n const itemPath = useMemo(() => [...path, item.id], [item.id, path]);\n const { id, testId } = useAtomValue(model.itemProps(itemPath));\n const localizedString = toLocalizedString(item.properties.label, t);\n\n const type = l0ItemType(item);\n const handleClick = useL0ItemClick({ item, parent, path: itemPath }, type);\n\n return (\n <Tooltip.Trigger asChild delayDuration={0} side='right' content={localizedString}>\n <Tabs.TabPrimitive\n className={mx(\n 'group/l0item flex w-full justify-center items-center relative',\n 'dx-app-no-drag dx-focus-ring-group data[type!=\"collection\"]:cursor-pointer',\n l0Breakpoints[item.properties.l0Breakpoint],\n )}\n tabIndex={type === 'tab' ? 0 : undefined}\n data-type={type}\n data-testid={testId}\n data-object-id={id}\n value={item.id}\n onClick={handleClick}\n onMouseEnter={onMouseEnter}\n ref={forwardedRef}\n >\n {children}\n </Tabs.TabPrimitive>\n </Tooltip.Trigger>\n );\n },\n ),\n);\n\nexport const L0ItemActiveTabIndicator = ({ classNames }: ThemedClassName<{}>) => (\n <div\n className={mx(\n 'hidden group-aria-selected/l0item:block absolute start-0 h-6 w-1.5 bg-accent-bg rounded-sm',\n classNames,\n )}\n />\n);\n\n// TODO(burdon): Factor out pinned (non-draggable) items.\nconst L0Item = memo(({ item, parent, path, pinned, onRearrange, onItemHover }: L0ItemProps) => {\n const { t } = useTranslation(meta.profile.key);\n const itemElement = useRef<HTMLButtonElement | null>(null);\n const [closestEdge, setEdge] = useState<Edge | null>(null);\n const localizedString = toLocalizedString(item.properties.label, t);\n const hue = item.properties.hue ?? null;\n\n useLayoutEffect(() => {\n if (!itemElement.current || !onRearrange) {\n return;\n }\n\n return combine(\n draggable({\n element: itemElement.current,\n getInitialData: () => ({ id: item.id, type: 'l0Item' }) satisfies L0ItemData,\n onGenerateDragPreview: ({ nativeSetDragImage, source, location }) => {\n document.body.setAttribute('data-drag-preview', 'true');\n const element = source.element.querySelector('[data-frame]') as HTMLElement;\n scrollJustEnoughIntoView({ element });\n const { x, y } = preserveOffsetOnSource({ element, input: location.current.input })({\n container: (element.offsetParent ?? document.body) as HTMLElement,\n });\n nativeSetDragImage?.(element, x, y);\n },\n onDragStart: () => {\n document.body.removeAttribute('data-drag-preview');\n itemElement.current!.closest('[data-drag-autoscroll]')?.setAttribute('data-drag-autoscroll', 'active');\n },\n onDrop: () => {\n itemElement.current!.closest('[data-drag-autoscroll]')?.setAttribute('data-drag-autoscroll', 'idle');\n },\n }),\n dropTargetForElements({\n element: itemElement.current,\n getData: ({ input, element }) => {\n return attachClosestEdge(\n { id: item.id, type: 'l0Item' },\n { input, element, allowedEdges: ['top', 'bottom'] },\n );\n },\n onDragEnter: ({ self, source }) => {\n if (source.data.type === self.data.type) {\n setEdge(extractClosestEdge(self.data));\n }\n },\n onDrag: ({ self, source }) => {\n if (source.data.type === self.data.type) {\n setEdge(extractClosestEdge(self.data));\n }\n },\n onDragLeave: () => setEdge(null),\n onDrop: ({ self, source }) => {\n setEdge(null);\n if (source.data.type === self.data.type) {\n onRearrange(source.data as L0ItemData, self.data as L0ItemData, extractClosestEdge(self.data));\n }\n },\n }),\n );\n }, [item, onRearrange]);\n\n const handleMouseEnter = useCallback(() => onItemHover?.({ item }), [item, onItemHover]);\n\n return (\n <L0ItemRoot ref={itemElement} item={item} parent={parent} path={path} onMouseEnter={handleMouseEnter}>\n <div\n data-frame={true}\n {...(hue && { style: { background: `var(--color-${hue}-surface)` } })}\n className={mx(\n 'flex justify-center items-center dx-focus-ring-group-indicator transition-colors rounded-sm',\n pinned\n ? 'p-2 group-hover/l0item:bg-current-surface'\n : 'w-(--dx-l0-avatar-size) h-(--dx-l0-avatar-size) bg-current-surface',\n )}\n >\n <ItemAvatar item={item} />\n </div>\n <L0ItemActiveTabIndicator />\n <span id={`${item.id}__label`} className='sr-only'>\n {localizedString}\n </span>\n {closestEdge && <ListItem.DropIndicator edge={closestEdge} />}\n </L0ItemRoot>\n );\n});\n\nconst ItemAvatar = ({ item }: Pick<L0ItemProps, 'item'>) => {\n const { t } = useTranslation(meta.profile.key);\n\n // Actions.\n if (item.properties.icon) {\n const hue = item.properties.hue ?? null;\n const hueFgStyle = hue && { style: { color: `var(--color-${hue}-fg)` } };\n return <Icon icon={item.properties.icon} size={6} {...hueFgStyle} />;\n }\n\n const type = l0ItemType(item);\n if (type === 'tab' && item.properties.disposition !== 'pin-end') {\n const hue = item.properties.hue ?? null;\n const localizedString = toLocalizedString(item.properties.label, t);\n return <DxAvatar hue={hue} hueVariant='surface' variant='square' size={12} fallback={localizedString} />;\n }\n\n return null;\n};\n\n//\n// L0Menu\n//\n\nexport type L0MenuProps = {\n menuActions: MenuItem[];\n topLevelItems: Node.Node[];\n pinnedItems: Node.Node[];\n userAccountItem?: Node.Node;\n parent?: Node.Node;\n path: string[];\n onItemHover?: (params: { item: Node.Node }) => void;\n};\n\nexport const L0Menu = ({\n menuActions,\n topLevelItems,\n pinnedItems,\n userAccountItem,\n parent,\n path,\n onItemHover,\n}: L0MenuProps) => {\n const { t } = useTranslation(meta.profile.key);\n const runAction = useActionRunner();\n const handleAction = useCallback(\n (action: Node.Action, params: Node.InvokeProps) => {\n void runAction(action, params);\n },\n [runAction],\n );\n\n const handleRearrange = useCallback<StackItemRearrangeHandler<L0ItemData>>(\n (source, target, closestEdge) => {\n const sourceItem = topLevelItems.find((i) => i.id === source.id);\n if (!sourceItem?.properties.onRearrange) {\n return;\n }\n\n const sourceIndex = topLevelItems.findIndex((i) => i.id === source.id);\n const targetIndex = topLevelItems.findIndex((i) => i.id === target.id);\n const insertIndex =\n source.id === target.id\n ? sourceIndex\n : targetIndex +\n (sourceIndex < targetIndex ? (closestEdge === 'top' ? -1 : 0) : closestEdge === 'bottom' ? 1 : 0);\n const nextOrder = arrayMove([...topLevelItems], sourceIndex, insertIndex);\n return sourceItem.properties.onRearrange(nextOrder.map((item) => item.data));\n },\n [topLevelItems],\n );\n\n // Check if any items have onRearrange to enable drag-and-drop.\n const hasRearrangeableItems = topLevelItems.some((item) => item.properties.onRearrange);\n\n return (\n <Tabs.Tablist\n data-tauri-drag-region\n classNames={[\n 'group/l0 absolute z-[1] inset-y-0 start-0 rounded-is',\n 'grid grid-cols-[var(--dx-l0-size)] grid-rows-[var(--dx-rail-size)_1fr_min-content_var(--dx-l0-size)] dx-contain-layout',\n 'w-(--dx-l0-size) bg-l0-surface dx-app-drag pb-[env(safe-area-inset-bottom)]',\n '[body[data-platform=\"macos\"]_&]:pt-[30px]',\n '[body[data-platform=\"ios\"]_&]:pt-[max(env(safe-area-inset-top),0.25rem)]',\n ]}\n >\n {/* TODO(wittjosiah): Use L0Item trigger. */}\n <Menu.Root onAction={handleAction}>\n <Menu.Trigger asChild data-testid='spacePlugin.addSpace'>\n <div className='grid place-items-center'>\n <IconButton\n density='lg'\n variant='ghost'\n size={5}\n icon='ph--list--regular'\n iconOnly\n square\n label={t('app-menu.label')}\n />\n </div>\n </Menu.Trigger>\n <Menu.Content group={parent} items={menuActions} />\n </Menu.Root>\n\n {/* Space list. */}\n <ScrollArea.Root centered thin orientation='vertical'>\n <ScrollArea.Viewport classNames='flex flex-col gap-2 py-1'>\n {topLevelItems.map((item) => (\n <L0Item\n key={item.id}\n item={item}\n parent={parent}\n path={path}\n onItemHover={onItemHover}\n {...(hasRearrangeableItems && { onRearrange: handleRearrange })}\n />\n ))}\n </ScrollArea.Viewport>\n </ScrollArea.Root>\n\n {/* Actions. */}\n <div className='grid grid-cols-1 auto-rows-(--dx-rail-action) pt-2'>\n {pinnedItems.map((item) => (\n <L0Item key={item.id} item={item} parent={parent} path={path} pinned />\n ))}\n </div>\n\n {userAccountItem && (\n <div className='grid dx-app-no-drag'>\n <L0ItemRoot key={userAccountItem.id} item={userAccountItem} parent={parent} path={path}>\n <UserAccountAvatar\n userId={userAccountItem.properties.userId}\n hue={userAccountItem.properties.hue}\n emoji={userAccountItem.properties.emoji}\n status={userAccountItem.properties.status}\n size={10}\n />\n </L0ItemRoot>\n </div>\n )}\n </Tabs.Tablist>\n );\n};\n", "//\n// Copyright 2023 DXOS.org\n//\n\nimport React from 'react';\n\nimport { Avatar, type AvatarStatus, type Size } from '@dxos/react-ui';\nimport { hexToFallback } from '@dxos/util';\n\nimport { L0ItemActiveTabIndicator } from '../Sidebar';\n\nexport type UserAccountAvatarProps = {\n size?: Size;\n userId?: string;\n hue?: string;\n emoji?: string;\n status?: AvatarStatus;\n};\n\nexport const UserAccountAvatar = ({ size, userId, hue, emoji, status }: UserAccountAvatarProps) => {\n const fallbackValue = hexToFallback(userId ?? '0');\n\n return (\n <>\n <L0ItemActiveTabIndicator classNames='inset-y-6' />\n <div\n className='grid place-items-center dx-focus-ring-group-indicator rounded-full'\n data-joyride='welcome/account'\n >\n <Avatar.Root>\n <Avatar.Content\n variant='circle'\n size={size ?? 12}\n status={status ?? 'active'}\n hue={hue || fallbackValue.hue}\n fallback={emoji || fallbackValue.emoji}\n data-testid='treeView.userAccount'\n />\n </Avatar.Root>\n </div>\n </>\n );\n};\n", "//\n// Copyright 2025 DXOS.org\n//\n\nimport * as Option from 'effect/Option';\nimport React, { memo, useCallback, useMemo } from 'react';\n\nimport { Node } from '@dxos/app-graph';\nimport { Paths } from '@dxos/app-toolkit';\nimport { useAppGraph } from '@dxos/app-toolkit/ui';\nimport { Graph, useActionRunner, useEdges } from '@dxos/plugin-graph';\nimport { DensityProvider, IconButton, ScrollArea, toLocalizedString, useTranslation } from '@dxos/react-ui';\nimport { Tree } from '@dxos/react-ui-list';\nimport { Menu, type MenuItem } from '@dxos/react-ui-menu';\nimport { Tabs } from '@dxos/react-ui-tabs';\nimport { hoverableControlItem, hoverableOpenControlItem } from '@dxos/ui-theme';\n\nimport { getListActions, useActions, useLoadDescendents } from '#hooks';\nimport { meta } from '#meta';\n\nimport { NAV_TREE_ITEM } from '../NavTree';\nimport { useNavTreeContext } from '../NavTreeContext';\nimport { NavTreeItemColumns } from '../NavTreeItem/NavTreeItemColumns';\n\nexport type L1PanelProps = {\n open?: boolean;\n path: string[];\n item: Node.Node;\n isCurrent: boolean;\n onBack?: () => void;\n};\n\n/**\n * Space or settings panel.\n */\nconst L1Panel$ = ({ open, path, item, isCurrent, onBack }: L1PanelProps) => {\n const { t } = useTranslation(meta.profile.key);\n const title = toLocalizedString(item.properties.label, t);\n const isActivated = useIsActivatedWorkspace(item);\n const shouldRenderContent = isCurrent || isActivated;\n\n return (\n <Tabs.Panel\n key={item.id}\n value={item.id}\n classNames={[\n 'absolute inset-y-0 end-0',\n 'w-[calc(100%-var(--dx-l0-size))] lg:w-(--dx-l1-size) grid-cols-1 grid-rows-[var(--dx-rail-size)_1fr]',\n 'py-[env(safe-area-inset-top)]',\n isCurrent && 'grid',\n ]}\n tabIndex={-1}\n aria-label={title}\n {...(isCurrent && { 'data-testid': 'navtree.workspace.visible' })}\n {...(!open && { inert: true })}\n >\n {shouldRenderContent && <L1PanelContent open={open} path={path} item={item} onBack={onBack} />}\n </Tabs.Panel>\n );\n};\n\n/** Determines whether a workspace tab has been populated with real child content (i.e. expanded at least once). */\nconst useIsActivatedWorkspace = (item: Node.Node): boolean => {\n const { graph } = useAppGraph();\n const edges = useEdges(graph, item.id);\n\n return useMemo(() => {\n const childIds = edges[Graph.relationKey('child')] ?? [];\n return childIds.some((childId) => {\n const child = Graph.getNode(graph, childId);\n if (Option.isNone(child)) {\n return false;\n }\n return child.value.properties.disposition === undefined;\n });\n }, [edges, graph]);\n};\n\n/**\n * Mounted panel content for active or previously-visited tabs.\n */\nconst L1PanelContent = ({ path, item, onBack }: Pick<L1PanelProps, 'open' | 'path' | 'item' | 'onBack'>) => {\n const navTreeContext = useNavTreeContext();\n\n return (\n <DensityProvider density='md'>\n <L1PanelHeader path={path} item={item} onBack={onBack} />\n <ScrollArea.Root thin orientation='vertical'>\n <ScrollArea.Viewport>\n <Tree\n classNames='pt-[2px]'\n model={navTreeContext.model}\n id={item.id}\n rootId={item.id}\n path={path}\n levelOffset={5}\n draggable\n gridTemplateColumns='[tree-row-start] minmax(0, 1fr) min-content min-content [tree-row-end]'\n renderColumns={NavTreeItemColumns}\n blockInstruction={navTreeContext.blockInstruction}\n canDrop={navTreeContext.canDrop}\n canSelect={navTreeContext.canSelect}\n onOpenChange={navTreeContext.onOpenChange}\n onSelect={navTreeContext.onSelect}\n onItemHover={navTreeContext.onItemHover}\n />\n </ScrollArea.Viewport>\n </ScrollArea.Root>\n </DensityProvider>\n );\n};\n\n/**\n * Header row.\n */\nconst L1PanelHeader = ({ item, path, onBack }: Pick<L1PanelProps, 'item' | 'path' | 'onBack'>) => {\n const { t } = useTranslation(meta.profile.key);\n const { renderItemEnd: ItemEnd } = useNavTreeContext();\n const title = toLocalizedString(item.properties.label, t);\n const backCapableWorkspace = Paths.isPinnedWorkspace(item.id);\n\n const { menuActions, onAction } = useL1MenuActions({ item, path });\n useLoadDescendents(item);\n\n return (\n <div\n data-tauri-drag-region\n className='grid grid-cols-[28px_1fr_min-content_min-content] w-full items-center dx-app-drag dx-density-lg'\n >\n {backCapableWorkspace ? (\n <IconButton\n classNames={[hoverableControlItem, hoverableOpenControlItem]}\n variant='ghost'\n icon='ph--caret-left--regular'\n iconOnly\n size={4}\n label={t('button-back.button')}\n data-testid='treeView.primaryTreeButton'\n onClick={() => onBack?.()}\n />\n ) : (\n <div />\n )}\n <h2 data-tauri-drag-region className='flex-1 truncate min-w-0'>\n {title}\n </h2>\n <div className='contents dx-app-no-drag'>\n <MenuActions item={item} menuActions={menuActions} onAction={onAction} />\n {ItemEnd && <ItemEnd node={item} open />}\n </div>\n </div>\n );\n};\n\ntype L1MenuActions = {\n menuActions: Node.Action[];\n onAction: (action: Node.Action, params?: Node.InvokeProps) => void;\n};\n\n/**\n * Header menu actions for an L1 workspace tab. Renders nothing for an empty\n * `menuActions`, a single inline icon button for one action, and a\n * `…`-menu trigger for multiple.\n */\nconst MenuActions = ({\n item,\n menuActions,\n onAction,\n}: {\n item: Node.Node;\n} & Pick<L1MenuActions, 'menuActions' | 'onAction'>) => {\n const { t } = useTranslation(meta.profile.key);\n\n if (menuActions.length === 0) {\n return null;\n }\n\n if (menuActions.length === 1) {\n return (\n <IconButton\n classNames={['shrink-0 px-2 pointer-fine:px-1', hoverableControlItem, hoverableOpenControlItem]}\n variant='ghost'\n icon={menuActions[0].properties?.icon ?? 'ph--circle-dashed--regular'}\n iconOnly\n size={4}\n label={toLocalizedString(menuActions[0].properties?.label, t)}\n data-testid={menuActions[0].properties?.testId}\n onClick={() => onAction(menuActions[0] as Node.Action)}\n />\n );\n }\n\n return (\n <Menu.Root caller={NAV_TREE_ITEM} onAction={onAction}>\n <Menu.Trigger asChild>\n <IconButton\n classNames={['shrink-0 px-2 pointer-fine:px-1', hoverableControlItem, hoverableOpenControlItem]}\n variant='ghost'\n icon='ph--dots-three-vertical--regular'\n iconOnly\n size={4}\n label={t('tree-item-actions.label')}\n data-testid='navtree.treeItem.actionsLevel0'\n />\n </Menu.Trigger>\n <Menu.Content group={item} items={menuActions as MenuItem[]} />\n </Menu.Root>\n );\n};\n\n/**\n * Builds the menu actions for the L1 panel header.\n */\nconst useL1MenuActions = ({ item, path }: Pick<L1PanelProps, 'item' | 'path'>): L1MenuActions => {\n const runAction = useActionRunner();\n\n const menuActions = getListActions(useActions(item));\n\n const onAction = useCallback(\n (action: Node.Action, params?: Node.InvokeProps) => {\n void runAction(action, { ...params, path });\n },\n [runAction, path],\n );\n\n return { menuActions, onAction };\n};\n\nexport const L1Panel = memo(L1Panel$);\n", "//\n// Copyright 2025 DXOS.org\n//\n\nimport React, { Fragment, memo, useMemo } from 'react';\n\nimport { Popover, Treegrid, toLocalizedString, useTranslation } from '@dxos/react-ui';\n\nimport { getListActions, useActions } from '#hooks';\nimport { meta } from '#meta';\n\nimport { NAV_TREE_ITEM } from '../NavTree';\nimport { useNavTreeContext } from '../NavTreeContext';\nimport { type NavTreeItemColumnsProps } from '../types';\nimport { NavTreeItemActionDropdownMenu, NavTreeItemMonolithicAction } from './NavTreeItemAction';\n\nexport const NavTreeItemColumns = memo(({ path, item, open }: NavTreeItemColumnsProps) => {\n const { t } = useTranslation(meta.profile.key);\n const { renderItemEnd: ItemEnd, popoverAnchorId } = useNavTreeContext();\n\n const level = path.length - 2;\n const flattenedActions = useActions(item);\n const allActions = useMemo(() => getListActions(flattenedActions), [flattenedActions]);\n\n const anchored = popoverAnchorId === `${NAV_TREE_ITEM}:${item.id}`;\n const ActionRoot = anchored ? Popover.Anchor : Fragment;\n\n return (\n // `data-popover-anchor` lets the enclosing row highlight itself while a popover (e.g. rename) is open on it.\n <div className='contents dx-app-no-drag' {...(anchored && { 'data-popover-anchor': '' })}>\n <ActionRoot>\n {allActions.length === 1 ? (\n <Treegrid.Cell classNames='contents'>\n <NavTreeItemMonolithicAction\n baseLabel={toLocalizedString(allActions[0].properties?.label, t)}\n parent={item}\n path={path}\n {...allActions[0]}\n />\n </Treegrid.Cell>\n ) : allActions.length > 1 ? (\n <Treegrid.Cell classNames='contents'>\n <NavTreeItemActionDropdownMenu\n testId={`navtree.treeItem.actionsLevel${level}`}\n label={t('tree-item-actions.label')}\n icon='ph--dots-three-vertical--regular'\n parent={item}\n path={path}\n menuActions={allActions}\n caller={NAV_TREE_ITEM}\n />\n </Treegrid.Cell>\n ) : (\n <Treegrid.Cell />\n )}\n </ActionRoot>\n {ItemEnd && (\n <Treegrid.Cell classNames='contents'>\n <ItemEnd node={item} open={open} />\n </Treegrid.Cell>\n )}\n </div>\n );\n});\n", "//\n// Copyright 2023 DXOS.org\n//\n\nimport React, { useCallback } from 'react';\n\nimport { type Node } from '@dxos/app-graph';\nimport { useActionRunner } from '@dxos/plugin-graph';\nimport { IconButton, toLocalizedString, useDensityContext, useTranslation } from '@dxos/react-ui';\nimport { composable, composableProps } from '@dxos/react-ui';\nimport { Menu, type MenuItem } from '@dxos/react-ui-menu';\nimport { hoverableControlItem, hoverableOpenControlItem } from '@dxos/ui-theme';\n\nimport { meta } from '#meta';\nimport { type ActionProperties } from '#types';\n\nconst fallbackIcon = 'ph--circle-dashed--regular';\n\nconst mdActionButtonProps = {\n size: 4 as const,\n density: 'md' as const,\n};\n\nconst lgActionButtonProps = {\n size: 5 as const,\n density: 'lg' as const,\n};\n\nexport type NavTreeItemActionMenuProps = ActionProperties & {\n parent: Node.Node;\n path?: string[];\n caller?: string;\n monolithic?: boolean;\n menuActions?: Node.Action[];\n};\n\nexport const NavTreeItemActionDropdownMenu = composable<HTMLButtonElement, NavTreeItemActionMenuProps>(\n ({ parent, path, label, icon, testId, menuActions, caller, ...props }, forwardedRef) => {\n const { t } = useTranslation(meta.profile.key);\n const density = useDensityContext();\n const runAction = useActionRunner();\n const handleAction = useCallback(\n (action: Node.Action, params: Node.InvokeProps = {}) => runAction(action, { ...params, path }),\n [runAction, path],\n );\n\n return (\n <Menu.Root caller={caller} onAction={handleAction}>\n <Menu.Trigger asChild>\n <IconButton\n {...(density === 'lg' ? lgActionButtonProps : mdActionButtonProps)}\n {...composableProps(props)}\n classNames={['shrink-0 px-2 pointer-fine:px-1', hoverableControlItem, hoverableOpenControlItem]}\n variant='ghost'\n icon={icon ?? fallbackIcon}\n iconOnly\n label={toLocalizedString(label, t)}\n data-testid={testId}\n ref={forwardedRef}\n />\n </Menu.Trigger>\n <Menu.Content group={parent} items={menuActions as MenuItem[]} />\n </Menu.Root>\n );\n },\n);\n\nNavTreeItemActionDropdownMenu.displayName = 'NavTreeItemActionDropdownMenu';\n\nexport const NavTreeItemMonolithicAction = (\n props: Node.Action & {\n parent: Node.Node;\n path?: string[];\n onAction?: (action: Node.Action) => void;\n baseLabel: string;\n },\n) => {\n const {\n parent,\n path,\n properties: { disabled, caller, testId, icon, variant = 'ghost', iconOnly = true } = { label: 'never' },\n baseLabel,\n } = props;\n const density = useDensityContext();\n const runAction = useActionRunner();\n return (\n <IconButton\n {...(density === 'lg' ? lgActionButtonProps : mdActionButtonProps)}\n variant={variant}\n classNames={[\n 'shrink-0',\n hoverableControlItem,\n hoverableOpenControlItem,\n iconOnly ? 'px-2 pointer-fine:px-1' : 'p-2 pointer-fine:p-2 me-1',\n ]}\n icon={icon ?? fallbackIcon}\n iconOnly={iconOnly}\n label={baseLabel}\n disabled={disabled}\n onClick={(event) => {\n event.stopPropagation();\n if (disabled) {\n return;\n }\n\n void runAction(props, caller ? { parent, caller, path } : { parent, path });\n }}\n data-testid={testId}\n />\n );\n};\n\nexport const NavTreeItemAction = ({\n monolithic,\n menuActions,\n menuType,\n parent,\n path,\n ...props\n}: NavTreeItemActionMenuProps) => {\n const { t } = useTranslation(meta.profile.key);\n\n const monolithicAction = menuActions?.length === 1 && menuActions[0];\n const baseLabel = toLocalizedString(monolithicAction ? monolithicAction.properties!.label : props.label, t);\n return monolithic && menuActions?.length === 1 ? (\n <NavTreeItemMonolithicAction baseLabel={baseLabel} parent={parent} path={path} {...menuActions[0]} />\n ) : (\n <NavTreeItemActionDropdownMenu {...props} label={baseLabel} parent={parent} path={path} menuActions={menuActions} />\n );\n};\n", "//\n// Copyright 2025 DXOS.org\n//\n\nimport React from 'react';\n\nimport { type Node } from '@dxos/app-graph';\n\nimport { l0ItemType } from '../../util';\nimport { L1Panel, type L1PanelProps } from './L1Panel';\n\nexport type L1TabsProps = Pick<L1PanelProps, 'open' | 'onBack'> & {\n currentItemId: string;\n path: string[];\n topLevelItems: Node.Node[];\n};\n\n/**\n * Each workspace is an L1 tab.\n */\nexport const L1Tabs = ({ topLevelItems, currentItemId, onBack, open, path }: L1TabsProps) => {\n return (\n <>\n {topLevelItems.map((item) => {\n const type = l0ItemType(item);\n if (type === 'tab') {\n return (\n <L1Panel\n key={item.id}\n item={item}\n path={path}\n open={open}\n onBack={onBack}\n isCurrent={item.id === currentItemId}\n />\n );\n }\n return null;\n })}\n </>\n );\n};\n"],
|
|
5
|
+
"mappings": "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",
|
|
6
|
+
"names": ["React", "forwardRef", "useMemo", "useAppGraph", "Node", "useConnections", "useActions", "useGraphActions", "Tabs", "byPosition", "useLoadDescendents", "createContext", "useContext", "raise", "NavTreeContext", "useNavTreeContext", "Error", "attachClosestEdge", "extractClosestEdge", "combine", "draggable", "dropTargetForElements", "preserveOffsetOnSource", "scrollJustEnoughIntoView", "useAtomValue", "React", "forwardRef", "memo", "useCallback", "useLayoutEffect", "useMemo", "useRef", "useState", "DxAvatar", "useActionRunner", "Icon", "IconButton", "ListItem", "ScrollArea", "Tooltip", "toLocalizedString", "useMediaQuery", "useTranslation", "Menu", "Tabs", "mx", "arrayMove", "useNavTreeState", "meta", "React", "Avatar", "hexToFallback", "UserAccountAvatar", "size", "userId", "hue", "emoji", "status", "fallbackValue", "hexToFallback", "L0ItemActiveTabIndicator", "classNames", "div", "className", "data-joyride", "Avatar", "Root", "Content", "variant", "fallback", "data-testid", "useL0ItemClick", "item", "parent", "path", "type", "onSelect", "onTabChange", "useNavTreeContext", "getItem", "useNavTreeState", "isLg", "useMediaQuery", "runAction", "useActionRunner", "useCallback", "event", "properties", "caller", "current", "option", "altKey", "l0Breakpoints", "lg", "L0ItemRoot", "memo", "forwardRef", "onMouseEnter", "children", "forwardedRef", "t", "useTranslation", "meta", "profile", "key", "model", "itemPath", "useMemo", "id", "testId", "useAtomValue", "itemProps", "localizedString", "toLocalizedString", "label", "l0ItemType", "handleClick", "React", "Tooltip", "Trigger", "asChild", "delayDuration", "side", "content", "Tabs", "TabPrimitive", "className", "mx", "l0Breakpoint", "tabIndex", "undefined", "data-type", "data-testid", "data-object-id", "value", "onClick", "ref", "L0ItemActiveTabIndicator", "classNames", "div", "L0Item", "pinned", "onRearrange", "onItemHover", "itemElement", "useRef", "closestEdge", "setEdge", "useState", "hue", "useLayoutEffect", "combine", "draggable", "element", "getInitialData", "onGenerateDragPreview", "nativeSetDragImage", "source", "location", "document", "body", "setAttribute", "querySelector", "scrollJustEnoughIntoView", "x", "y", "preserveOffsetOnSource", "input", "container", "offsetParent", "onDragStart", "removeAttribute", "closest", "onDrop", "dropTargetForElements", "getData", "attachClosestEdge", "allowedEdges", "onDragEnter", "self", "data", "extractClosestEdge", "onDrag", "onDragLeave", "handleMouseEnter", "data-frame", "style", "background", "ItemAvatar", "span", "ListItem", "DropIndicator", "edge", "icon", "hueFgStyle", "color", "Icon", "size", "disposition", "DxAvatar", "hueVariant", "variant", "fallback", "L0Menu", "menuActions", "topLevelItems", "pinnedItems", "userAccountItem", "handleAction", "action", "params", "handleRearrange", "target", "sourceItem", "find", "i", "sourceIndex", "findIndex", "targetIndex", "insertIndex", "nextOrder", "arrayMove", "map", "hasRearrangeableItems", "some", "Tablist", "data-tauri-drag-region", "Menu", "Root", "onAction", "IconButton", "density", "iconOnly", "square", "Content", "group", "items", "ScrollArea", "centered", "thin", "orientation", "Viewport", "UserAccountAvatar", "userId", "emoji", "status", "Option", "React", "memo", "useCallback", "useMemo", "Paths", "useAppGraph", "Graph", "useActionRunner", "useEdges", "DensityProvider", "IconButton", "ScrollArea", "toLocalizedString", "useTranslation", "Tree", "Menu", "Tabs", "hoverableControlItem", "hoverableOpenControlItem", "getListActions", "useActions", "useLoadDescendents", "meta", "React", "Fragment", "memo", "useMemo", "Popover", "Treegrid", "toLocalizedString", "useTranslation", "getListActions", "useActions", "meta", "React", "useCallback", "useActionRunner", "IconButton", "toLocalizedString", "useDensityContext", "useTranslation", "composable", "composableProps", "Menu", "hoverableControlItem", "hoverableOpenControlItem", "meta", "fallbackIcon", "mdActionButtonProps", "size", "density", "lgActionButtonProps", "NavTreeItemActionDropdownMenu", "parent", "path", "label", "icon", "testId", "menuActions", "caller", "props", "forwardedRef", "t", "profile", "key", "runAction", "handleAction", "action", "params", "Root", "onAction", "Trigger", "asChild", "classNames", "variant", "iconOnly", "data-testid", "ref", "Content", "group", "items", "displayName", "NavTreeItemMonolithicAction", "properties", "disabled", "baseLabel", "onClick", "event", "stopPropagation", "NavTreeItemColumns", "memo", "path", "item", "open", "t", "useTranslation", "meta", "profile", "key", "renderItemEnd", "ItemEnd", "popoverAnchorId", "useNavTreeContext", "level", "length", "flattenedActions", "useActions", "allActions", "useMemo", "getListActions", "anchored", "NAV_TREE_ITEM", "id", "ActionRoot", "Popover", "Anchor", "Fragment", "React", "div", "className", "Treegrid", "Cell", "classNames", "NavTreeItemMonolithicAction", "baseLabel", "toLocalizedString", "properties", "label", "parent", "NavTreeItemActionDropdownMenu", "testId", "icon", "menuActions", "caller", "node", "L1Panel$", "open", "path", "item", "isCurrent", "onBack", "t", "useTranslation", "meta", "profile", "key", "title", "toLocalizedString", "properties", "label", "isActivated", "useIsActivatedWorkspace", "shouldRenderContent", "React", "Tabs", "Panel", "id", "value", "classNames", "tabIndex", "aria-label", "inert", "L1PanelContent", "graph", "useAppGraph", "edges", "useEdges", "useMemo", "childIds", "Graph", "relationKey", "some", "childId", "child", "getNode", "isNone", "disposition", "undefined", "navTreeContext", "useNavTreeContext", "DensityProvider", "density", "L1PanelHeader", "ScrollArea", "Root", "thin", "orientation", "Viewport", "Tree", "model", "rootId", "levelOffset", "draggable", "gridTemplateColumns", "renderColumns", "NavTreeItemColumns", "blockInstruction", "canDrop", "canSelect", "onOpenChange", "onSelect", "onItemHover", "renderItemEnd", "ItemEnd", "backCapableWorkspace", "Paths", "isPinnedWorkspace", "menuActions", "onAction", "useL1MenuActions", "useLoadDescendents", "div", "data-tauri-drag-region", "className", "IconButton", "hoverableControlItem", "hoverableOpenControlItem", "variant", "icon", "iconOnly", "size", "data-testid", "onClick", "h2", "MenuActions", "node", "length", "testId", "Menu", "caller", "NAV_TREE_ITEM", "Trigger", "asChild", "Content", "group", "items", "runAction", "useActionRunner", "getListActions", "useActions", "useCallback", "action", "params", "L1Panel", "memo", "React", "L1Tabs", "topLevelItems", "currentItemId", "onBack", "open", "path", "React", "map", "item", "type", "l0ItemType", "L1Panel", "key", "id", "isCurrent", "NAV_TREE_ITEM", "NavTree", "forwardRef", "id", "root", "tab", "props", "forwardedRef", "onBack", "onItemHover", "useNavTreeContext", "topLevelActions", "l0Items", "pinnedItems", "userAccountItem", "topLevelItems", "useTopLevelNavItems", "useLoadDescendents", "path", "useMemo", "React", "Tabs", "Root", "value", "orientation", "classNames", "ref", "L0Menu", "menuActions", "parent", "L1Tabs", "currentItemId", "graph", "useAppGraph", "rootId", "Node", "RootId", "rootOutboundItems", "useConnections", "rootActions", "useGraphActions", "topLevelWorkspaces", "outboundPinnedItems", "node", "properties", "disposition", "push", "filter", "action", "toSorted", "a", "b", "byPosition"]
|
|
7
7
|
}
|
|
@@ -1,15 +1,15 @@
|
|
|
1
1
|
import {
|
|
2
2
|
NODE_TYPE
|
|
3
|
-
} from "../chunk-
|
|
3
|
+
} from "../chunk-UBVNITFG.mjs";
|
|
4
4
|
import "../chunk-JOSNCOV4.mjs";
|
|
5
5
|
import "../chunk-J5LGTIGS.mjs";
|
|
6
6
|
|
|
7
7
|
// src/containers/index.ts
|
|
8
8
|
import { lazy } from "react";
|
|
9
|
-
var CommandsDialogContent = lazy(() => import("../CommandsDialogContent-
|
|
10
|
-
var CommandsTrigger = lazy(() => import("../CommandsTrigger-
|
|
11
|
-
var NavTreeContainer = lazy(() => import("../NavTreeContainer-
|
|
12
|
-
var NavTreeDocumentTitle = lazy(() => import("../NavTreeDocumentTitle-
|
|
9
|
+
var CommandsDialogContent = lazy(() => import("../CommandsDialogContent-TEKBCQ3U.mjs"));
|
|
10
|
+
var CommandsTrigger = lazy(() => import("../CommandsTrigger-HGCI22SP.mjs"));
|
|
11
|
+
var NavTreeContainer = lazy(() => import("../NavTreeContainer-QIWROTCL.mjs"));
|
|
12
|
+
var NavTreeDocumentTitle = lazy(() => import("../NavTreeDocumentTitle-RMERXZGK.mjs"));
|
|
13
13
|
export {
|
|
14
14
|
CommandsDialogContent,
|
|
15
15
|
CommandsTrigger,
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import {
|
|
2
2
|
NavTreeCapabilities_exports
|
|
3
|
-
} from "./chunk-
|
|
3
|
+
} from "./chunk-BAVI2K7A.mjs";
|
|
4
4
|
import "./chunk-J5LGTIGS.mjs";
|
|
5
5
|
|
|
6
6
|
// src/operations/expose.ts
|
|
@@ -35,4 +35,4 @@ var expose_default = handler;
|
|
|
35
35
|
export {
|
|
36
36
|
expose_default as default
|
|
37
37
|
};
|
|
38
|
-
//# sourceMappingURL=expose-
|
|
38
|
+
//# sourceMappingURL=expose-HIBA2NQG.mjs.map
|
|
@@ -2,11 +2,11 @@ import {
|
|
|
2
2
|
COMMANDS_DIALOG,
|
|
3
3
|
KEY_BINDING,
|
|
4
4
|
meta
|
|
5
|
-
} from "./chunk-
|
|
5
|
+
} from "./chunk-IRQMJLRY.mjs";
|
|
6
6
|
import {
|
|
7
7
|
NavTreeCapabilities_exports,
|
|
8
8
|
NavTreeEvents_exports
|
|
9
|
-
} from "./chunk-
|
|
9
|
+
} from "./chunk-BAVI2K7A.mjs";
|
|
10
10
|
import {
|
|
11
11
|
filterItems,
|
|
12
12
|
getChildren,
|