@dxos/plugin-navtree 0.8.3-staging.0fa589b → 0.8.4-main.3a94e84

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (51) hide show
  1. package/dist/lib/browser/{app-graph-builder-P7AY3K72.mjs → app-graph-builder-5J4LRWDX.mjs} +3 -3
  2. package/dist/lib/browser/{chunk-IEW3JD5C.mjs → chunk-ERDGQTH5.mjs} +2 -2
  3. package/dist/lib/browser/{chunk-ZJPL4XJD.mjs → chunk-SICQTLXC.mjs} +63 -50
  4. package/dist/lib/browser/chunk-SICQTLXC.mjs.map +7 -0
  5. package/dist/lib/browser/{chunk-33VLL4IJ.mjs → chunk-WCARAZ7J.mjs} +3 -3
  6. package/dist/lib/browser/index.mjs +10 -10
  7. package/dist/lib/browser/index.mjs.map +3 -3
  8. package/dist/lib/browser/{intent-resolver-NAYKKAOP.mjs → intent-resolver-3XYN2CBU.mjs} +5 -5
  9. package/dist/lib/browser/{keyboard-DDFATRUG.mjs → keyboard-QRS6WOQH.mjs} +3 -3
  10. package/dist/lib/browser/meta.json +1 -1
  11. package/dist/lib/browser/{react-surface-H3JRTVNU.mjs → react-surface-WURHCBQQ.mjs} +5 -5
  12. package/dist/lib/browser/{state-J6AKZRB4.mjs → state-54DY3DOY.mjs} +4 -4
  13. package/dist/types/src/components/CommandsDialog/CommandsTrigger.d.ts.map +1 -1
  14. package/dist/types/src/components/NavTree/NavTree.stories.d.ts +1 -1
  15. package/dist/types/src/components/NavTree/NavTree.stories.d.ts.map +1 -1
  16. package/dist/types/src/components/NavTreeContainer.d.ts.map +1 -1
  17. package/dist/types/src/components/NavTreeItem/NavTreeItemAction.stories.d.ts +1 -1
  18. package/dist/types/src/components/NavTreeItem/NavTreeItemAction.stories.d.ts.map +1 -1
  19. package/dist/types/src/components/Sidebar/L1Panel.d.ts.map +1 -1
  20. package/dist/types/src/components/UserAccountAvatar/UserAccountAvatar.stories.d.ts +1 -1
  21. package/dist/types/src/components/UserAccountAvatar/UserAccountAvatar.stories.d.ts.map +1 -1
  22. package/dist/types/src/components/index.d.ts +1 -1
  23. package/dist/types/src/components/index.d.ts.map +1 -1
  24. package/dist/types/src/experimental/Tree.d.ts +5 -5
  25. package/dist/types/src/experimental/Tree.d.ts.map +1 -1
  26. package/dist/types/src/experimental/Tree.stories.d.ts +1 -1
  27. package/dist/types/src/experimental/Tree.stories.d.ts.map +1 -1
  28. package/dist/types/src/translations.d.ts +13 -13
  29. package/dist/types/src/translations.d.ts.map +1 -1
  30. package/dist/types/tsconfig.tsbuildinfo +1 -1
  31. package/package.json +40 -42
  32. package/src/NavTreePlugin.tsx +1 -1
  33. package/src/components/CommandsDialog/CommandsTrigger.tsx +2 -4
  34. package/src/components/NavTree/NavTree.stories.tsx +2 -2
  35. package/src/components/NavTreeContainer.tsx +3 -4
  36. package/src/components/NavTreeItem/NavTreeItemAction.stories.tsx +1 -1
  37. package/src/components/NavTreeItem/NavTreeItemAction.tsx +4 -4
  38. package/src/components/Sidebar/L1Panel.tsx +2 -3
  39. package/src/components/UserAccountAvatar/UserAccountAvatar.stories.tsx +1 -1
  40. package/src/components/index.ts +1 -1
  41. package/src/experimental/Tree.stories.tsx +9 -9
  42. package/src/experimental/Tree.tsx +15 -16
  43. package/src/translations.ts +6 -4
  44. package/dist/lib/browser/chunk-ZJPL4XJD.mjs.map +0 -7
  45. /package/dist/lib/browser/{app-graph-builder-P7AY3K72.mjs.map → app-graph-builder-5J4LRWDX.mjs.map} +0 -0
  46. /package/dist/lib/browser/{chunk-IEW3JD5C.mjs.map → chunk-ERDGQTH5.mjs.map} +0 -0
  47. /package/dist/lib/browser/{chunk-33VLL4IJ.mjs.map → chunk-WCARAZ7J.mjs.map} +0 -0
  48. /package/dist/lib/browser/{intent-resolver-NAYKKAOP.mjs.map → intent-resolver-3XYN2CBU.mjs.map} +0 -0
  49. /package/dist/lib/browser/{keyboard-DDFATRUG.mjs.map → keyboard-QRS6WOQH.mjs.map} +0 -0
  50. /package/dist/lib/browser/{react-surface-H3JRTVNU.mjs.map → react-surface-WURHCBQQ.mjs.map} +0 -0
  51. /package/dist/lib/browser/{state-J6AKZRB4.mjs.map → state-54DY3DOY.mjs.map} +0 -0
@@ -1,9 +1,9 @@
1
1
  import {
2
2
  COMMANDS_DIALOG,
3
3
  NAVTREE_PLUGIN
4
- } from "./chunk-IEW3JD5C.mjs";
4
+ } from "./chunk-ERDGQTH5.mjs";
5
5
 
6
- // packages/plugins/plugin-navtree/src/capabilities/app-graph-builder.ts
6
+ // src/capabilities/app-graph-builder.ts
7
7
  import { Rx } from "@effect-rx/rx-react";
8
8
  import { Option, pipe } from "effect";
9
9
  import { Capabilities, contributes, createIntent, LayoutAction } from "@dxos/app-framework";
@@ -42,4 +42,4 @@ var app_graph_builder_default = (context) => contributes(Capabilities.AppGraphBu
42
42
  export {
43
43
  app_graph_builder_default as default
44
44
  };
45
- //# sourceMappingURL=app-graph-builder-P7AY3K72.mjs.map
45
+ //# sourceMappingURL=app-graph-builder-5J4LRWDX.mjs.map
@@ -1,4 +1,4 @@
1
- // packages/plugins/plugin-navtree/src/meta.ts
1
+ // src/meta.ts
2
2
  var NAVTREE_PLUGIN = "dxos.org/plugin/navtree";
3
3
  var KEY_BINDING = "KeyBinding";
4
4
  var COMMANDS_DIALOG = `${NAVTREE_PLUGIN}/CommandsDialog`;
@@ -13,4 +13,4 @@ export {
13
13
  COMMANDS_DIALOG,
14
14
  meta
15
15
  };
16
- //# sourceMappingURL=chunk-IEW3JD5C.mjs.map
16
+ //# sourceMappingURL=chunk-ERDGQTH5.mjs.map
@@ -1,13 +1,13 @@
1
1
  import {
2
2
  NavTreeCapabilities
3
- } from "./chunk-33VLL4IJ.mjs";
3
+ } from "./chunk-WCARAZ7J.mjs";
4
4
  import {
5
5
  COMMANDS_DIALOG,
6
6
  KEY_BINDING,
7
7
  NAVTREE_PLUGIN
8
- } from "./chunk-IEW3JD5C.mjs";
8
+ } from "./chunk-ERDGQTH5.mjs";
9
9
 
10
- // packages/plugins/plugin-navtree/src/components/CommandsDialog/CommandsDialog.tsx
10
+ // src/components/CommandsDialog/CommandsDialog.tsx
11
11
  import { useSignals as _useSignals } from "@preact-signals/safe-react/tracking";
12
12
  import React, { useMemo, useState } from "react";
13
13
  import { createIntent, LayoutAction, useAppGraph, useIntentDispatcher } from "@dxos/app-framework";
@@ -117,13 +117,11 @@ var CommandsDialogContent = ({ selected: initial }) => {
117
117
  }
118
118
  };
119
119
 
120
- // packages/plugins/plugin-navtree/src/components/CommandsDialog/CommandsTrigger.tsx
120
+ // src/components/CommandsDialog/CommandsTrigger.tsx
121
121
  import { useSignals as _useSignals2 } from "@preact-signals/safe-react/tracking";
122
- import { MagnifyingGlass } from "@phosphor-icons/react";
123
122
  import React2 from "react";
124
123
  import { createIntent as createIntent2, LayoutAction as LayoutAction2, useIntentDispatcher as useIntentDispatcher2 } from "@dxos/app-framework";
125
- import { Button as Button2, useTranslation as useTranslation2 } from "@dxos/react-ui";
126
- import { getSize } from "@dxos/react-ui-theme";
124
+ import { Button as Button2, Icon as Icon2, useTranslation as useTranslation2 } from "@dxos/react-ui";
127
125
  var CommandsTrigger = () => {
128
126
  var _effect = _useSignals2();
129
127
  try {
@@ -140,15 +138,16 @@ var CommandsTrigger = () => {
140
138
  }))
141
139
  }, /* @__PURE__ */ React2.createElement("span", {
142
140
  className: "text-description font-normal grow text-start"
143
- }, t("command list input placeholder")), /* @__PURE__ */ React2.createElement(MagnifyingGlass, {
144
- className: getSize(5)
141
+ }, t("command list input placeholder")), /* @__PURE__ */ React2.createElement(Icon2, {
142
+ icon: "ph--magnifying-glass--regular",
143
+ size: 5
145
144
  }));
146
145
  } finally {
147
146
  _effect.f();
148
147
  }
149
148
  };
150
149
 
151
- // packages/plugins/plugin-navtree/src/util.ts
150
+ // src/util.ts
152
151
  import { isAction as isAction2, isActionLike } from "@dxos/app-graph";
153
152
  import { isNonNullable } from "@dxos/util";
154
153
  var getParent = (graph, node, path) => {
@@ -227,7 +226,7 @@ var l0ItemType = (item) => {
227
226
  }
228
227
  };
229
228
 
230
- // packages/plugins/plugin-navtree/src/components/NavTreeContainer.tsx
229
+ // src/components/NavTreeContainer.tsx
231
230
  import { useSignals as _useSignals9 } from "@preact-signals/safe-react/tracking";
232
231
  import { monitorForElements } from "@atlaskit/pragmatic-drag-and-drop/element/adapter";
233
232
  import { extractInstruction } from "@atlaskit/pragmatic-drag-and-drop-hitbox/tree-item";
@@ -239,24 +238,24 @@ import { PLANK_COMPANION_TYPE } from "@dxos/plugin-deck/types";
239
238
  import { useConnections } from "@dxos/plugin-graph";
240
239
  import { useMediaQuery as useMediaQuery2, useSidebars } from "@dxos/react-ui";
241
240
  import { isTreeData } from "@dxos/react-ui-list";
242
- import { mx as mx5 } from "@dxos/react-ui-theme";
241
+ import { mx as mx4 } from "@dxos/react-ui-theme";
243
242
  import { arrayMove as arrayMove2, byPosition } from "@dxos/util";
244
243
 
245
- // packages/plugins/plugin-navtree/src/components/NavTree/NavTree.tsx
244
+ // src/components/NavTree/NavTree.tsx
246
245
  import { useSignals as _useSignals8 } from "@preact-signals/safe-react/tracking";
247
246
  import React8, { useMemo as useMemo4 } from "react";
248
247
  import { Tabs as Tabs3 } from "@dxos/react-ui-tabs";
249
248
 
250
- // packages/plugins/plugin-navtree/src/hooks.ts
249
+ // src/hooks.ts
251
250
  import { useEffect as useEffect2 } from "react";
252
251
 
253
- // packages/plugins/plugin-navtree/src/components/NavTreeContext.tsx
252
+ // src/components/NavTreeContext.tsx
254
253
  import { createContext, useContext } from "react";
255
254
  import { raise } from "@dxos/debug";
256
255
  var NavTreeContext = /* @__PURE__ */ createContext(null);
257
256
  var useNavTreeContext = () => useContext(NavTreeContext) ?? raise(new Error("Missing NavTreeContext"));
258
257
 
259
- // packages/plugins/plugin-navtree/src/components/NavTreeDocumentTitle.tsx
258
+ // src/components/NavTreeDocumentTitle.tsx
260
259
  import { useEffect } from "react";
261
260
  import { toLocalizedString as toLocalizedString2, useTranslation as useTranslation3 } from "@dxos/react-ui";
262
261
  var NavTreeDocumentTitle = ({ node }) => {
@@ -271,7 +270,7 @@ var NavTreeDocumentTitle = ({ node }) => {
271
270
  return null;
272
271
  };
273
272
 
274
- // packages/plugins/plugin-navtree/src/hooks.ts
273
+ // src/hooks.ts
275
274
  var useLoadDescendents = (root) => {
276
275
  const { loadDescendents } = useNavTreeContext();
277
276
  useEffect2(() => {
@@ -286,7 +285,7 @@ var useLoadDescendents = (root) => {
286
285
  ]);
287
286
  };
288
287
 
289
- // packages/plugins/plugin-navtree/src/components/Sidebar/L0Menu.tsx
288
+ // src/components/Sidebar/L0Menu.tsx
290
289
  import { useSignals as _useSignals4 } from "@preact-signals/safe-react/tracking";
291
290
  import { combine } from "@atlaskit/pragmatic-drag-and-drop/combine";
292
291
  import { draggable, dropTargetForElements } from "@atlaskit/pragmatic-drag-and-drop/element/adapter";
@@ -295,13 +294,13 @@ import { scrollJustEnoughIntoView } from "@atlaskit/pragmatic-drag-and-drop/elem
295
294
  import { attachClosestEdge, extractClosestEdge } from "@atlaskit/pragmatic-drag-and-drop-hitbox/closest-edge";
296
295
  import React4, { forwardRef, useCallback, useLayoutEffect, useMemo as useMemo2, useRef, useState as useState2 } from "react";
297
296
  import { invariant } from "@dxos/invariant";
298
- import { Icon as Icon2, ListItem, ScrollArea, Tooltip, toLocalizedString as toLocalizedString3, useMediaQuery, useTranslation as useTranslation4 } from "@dxos/react-ui";
297
+ import { Icon as Icon3, ListItem, ScrollArea, Tooltip, toLocalizedString as toLocalizedString3, useMediaQuery, useTranslation as useTranslation4 } from "@dxos/react-ui";
299
298
  import { MenuProvider, DropdownMenu } from "@dxos/react-ui-menu";
300
299
  import { Tabs } from "@dxos/react-ui-tabs";
301
300
  import { mx as mx2 } from "@dxos/react-ui-theme";
302
301
  import { arrayMove, getFirstTwoRenderableChars } from "@dxos/util";
303
302
 
304
- // packages/plugins/plugin-navtree/src/components/UserAccountAvatar/UserAccountAvatar.tsx
303
+ // src/components/UserAccountAvatar/UserAccountAvatar.tsx
305
304
  import { useSignals as _useSignals3 } from "@preact-signals/safe-react/tracking";
306
305
  import React3 from "react";
307
306
  import { Avatar } from "@dxos/react-ui";
@@ -326,8 +325,8 @@ var UserAccountAvatar = ({ size, userId, hue, emoji, status }) => {
326
325
  }
327
326
  };
328
327
 
329
- // packages/plugins/plugin-navtree/src/components/Sidebar/L0Menu.tsx
330
- var __dxlog_file = "/home/runner/work/dxos/dxos/packages/plugins/plugin-navtree/src/components/Sidebar/L0Menu.tsx";
328
+ // src/components/Sidebar/L0Menu.tsx
329
+ var __dxlog_file = "/__w/dxos/dxos/packages/plugins/plugin-navtree/src/components/Sidebar/L0Menu.tsx";
331
330
  var useL0ItemClick = ({ item, parent, path }, type) => {
332
331
  const { tab, isCurrent, onSelect, onTabChange } = useNavTreeContext();
333
332
  const [isLg] = useMediaQuery("lg", {
@@ -561,7 +560,7 @@ var ItemAvatar = ({ item }) => {
561
560
  color: `var(--dx-${hue}SurfaceText)`
562
561
  }
563
562
  };
564
- return /* @__PURE__ */ React4.createElement(Icon2, {
563
+ return /* @__PURE__ */ React4.createElement(Icon3, {
565
564
  icon: item.properties.icon,
566
565
  size: 5,
567
566
  ...hueFgStyle
@@ -654,7 +653,7 @@ var L0Menu = ({ menuActions, topLevelItems, pinnedItems, userAccountItem, parent
654
653
  }, /* @__PURE__ */ React4.createElement("div", {
655
654
  role: "none",
656
655
  className: mx2(l0ItemContent, "is-[--rail-action] bs-[--rail-action] group-hover/l0item:bg-hoverSurface")
657
- }, /* @__PURE__ */ React4.createElement(Icon2, {
656
+ }, /* @__PURE__ */ React4.createElement(Icon3, {
658
657
  icon: "ph--list--regular",
659
658
  size: 5
660
659
  })))))), /* @__PURE__ */ React4.createElement(ScrollArea.Root, null, /* @__PURE__ */ React4.createElement(ScrollArea.Viewport, null, /* @__PURE__ */ React4.createElement("div", {
@@ -717,20 +716,20 @@ var L0Menu = ({ menuActions, topLevelItems, pinnedItems, userAccountItem, parent
717
716
  }
718
717
  };
719
718
 
720
- // packages/plugins/plugin-navtree/src/components/Sidebar/L1Panel.tsx
719
+ // src/components/Sidebar/L1Panel.tsx
721
720
  import { useSignals as _useSignals7 } from "@preact-signals/safe-react/tracking";
722
721
  import React7, { useCallback as useCallback2, useMemo as useMemo3 } from "react";
723
- import { Button as Button3, Icon as Icon3, IconButton as IconButton2, toLocalizedString as toLocalizedString6, useTranslation as useTranslation7 } from "@dxos/react-ui";
722
+ import { Button as Button3, Icon as Icon4, IconButton as IconButton2, toLocalizedString as toLocalizedString6, useTranslation as useTranslation7 } from "@dxos/react-ui";
724
723
  import { Tree } from "@dxos/react-ui-list";
725
724
  import { Tabs as Tabs2 } from "@dxos/react-ui-tabs";
726
- import { hoverableControlItem as hoverableControlItem2, hoverableOpenControlItem as hoverableOpenControlItem2, mx as mx4 } from "@dxos/react-ui-theme";
725
+ import { hoverableControlItem as hoverableControlItem2, hoverableOpenControlItem as hoverableOpenControlItem2, mx as mx3 } from "@dxos/react-ui-theme";
727
726
 
728
- // packages/plugins/plugin-navtree/src/components/NavTreeItem/NavTreeItemAction.tsx
727
+ // src/components/NavTreeItem/NavTreeItemAction.tsx
729
728
  import { useSignals as _useSignals5 } from "@preact-signals/safe-react/tracking";
730
729
  import React5 from "react";
731
730
  import { useTranslation as useTranslation5, toLocalizedString as toLocalizedString4, IconButton, useDensityContext } from "@dxos/react-ui";
732
731
  import { DropdownMenu as DropdownMenu2, MenuProvider as MenuProvider2 } from "@dxos/react-ui-menu";
733
- import { hoverableControlItem, hoverableOpenControlItem, mx as mx3 } from "@dxos/react-ui-theme";
732
+ import { hoverableControlItem, hoverableOpenControlItem } from "@dxos/react-ui-theme";
734
733
  var fallbackIcon = "ph--placeholder--regular";
735
734
  var fineActionButtonProps = {
736
735
  size: 4,
@@ -753,7 +752,11 @@ var NavTreeItemActionDropdownMenu = ({ parent, label, icon, testId, menuActions,
753
752
  asChild: true
754
753
  }, /* @__PURE__ */ React5.createElement(IconButton, {
755
754
  ...density === "coarse" ? coarseActionButtonProps : fineActionButtonProps,
756
- classNames: mx3("shrink-0 pli-2 pointer-fine:pli-1", hoverableControlItem, hoverableOpenControlItem),
755
+ classNames: [
756
+ "shrink-0 pli-2 pointer-fine:pli-1",
757
+ hoverableControlItem,
758
+ hoverableOpenControlItem
759
+ ],
757
760
  variant: "ghost",
758
761
  icon: icon ?? fallbackIcon,
759
762
  iconOnly: true,
@@ -773,7 +776,12 @@ var NavTreeItemMonolithicAction = ({ parent, properties: { disabled, caller, tes
773
776
  return /* @__PURE__ */ React5.createElement(IconButton, {
774
777
  ...density === "coarse" ? coarseActionButtonProps : fineActionButtonProps,
775
778
  variant,
776
- classNames: mx3("shrink-0", hoverableControlItem, hoverableOpenControlItem, iconOnly ? "pli-2 pointer-fine:pli-1" : "p-2 pointer-fine:p-2 mie-1"),
779
+ classNames: [
780
+ "shrink-0",
781
+ hoverableControlItem,
782
+ hoverableOpenControlItem,
783
+ iconOnly ? "pli-2 pointer-fine:pli-1" : "p-2 pointer-fine:p-2 mie-1"
784
+ ],
777
785
  icon: icon ?? fallbackIcon,
778
786
  iconOnly,
779
787
  label: baseLabel,
@@ -817,7 +825,7 @@ var NavTreeItemAction = ({ monolithic, menuActions, parent: node, ...props }) =>
817
825
  }
818
826
  };
819
827
 
820
- // packages/plugins/plugin-navtree/src/components/NavTreeItem/NavTreeItemColumns.tsx
828
+ // src/components/NavTreeItem/NavTreeItemColumns.tsx
821
829
  import { useSignals as _useSignals6 } from "@preact-signals/safe-react/tracking";
822
830
  import React6, { Fragment, memo } from "react";
823
831
  import { isAction as isAction3 } from "@dxos/app-graph";
@@ -872,7 +880,7 @@ var NavTreeItemColumns = /* @__PURE__ */ memo(({ path, item, open, density = "fi
872
880
  }
873
881
  });
874
882
 
875
- // packages/plugins/plugin-navtree/src/components/Sidebar/L1Panel.tsx
883
+ // src/components/Sidebar/L1Panel.tsx
876
884
  var headingBackButtonLabel = "inset-0 min-is-0 truncate flex items-center pis-2";
877
885
  var TitleButton = ({ title, onClick }) => {
878
886
  var _effect = _useSignals7();
@@ -881,11 +889,11 @@ var TitleButton = ({ title, onClick }) => {
881
889
  variant: "ghost",
882
890
  classNames: "pli-1 flex-1 group text-start justify-start bs-[--rail-action] font-normal",
883
891
  onClick
884
- }, /* @__PURE__ */ React7.createElement(Icon3, {
892
+ }, /* @__PURE__ */ React7.createElement(Icon4, {
885
893
  icon: "ph--caret-left--bold",
886
894
  size: 3
887
895
  }), /* @__PURE__ */ React7.createElement("span", {
888
- className: mx4(headingBackButtonLabel)
896
+ className: mx3(headingBackButtonLabel)
889
897
  }, title));
890
898
  } finally {
891
899
  _effect.f();
@@ -949,7 +957,7 @@ var L1Panel = ({ open, item, path, currentItemId, onBack }) => {
949
957
  inert: "true"
950
958
  }
951
959
  }, item.id === currentItemId && /* @__PURE__ */ React7.createElement(React7.Fragment, null, /* @__PURE__ */ React7.createElement("h2", {
952
- className: "flex items-center border-be border-subduedSeparator app-drag pli-1"
960
+ className: "flex items-center border-be border-subduedSeparator app-drag pli-1 density-coarse"
953
961
  }, backCapable ? /* @__PURE__ */ React7.createElement(TitleButton, {
954
962
  title,
955
963
  onClick: handleBack
@@ -957,10 +965,14 @@ var L1Panel = ({ open, item, path, currentItemId, onBack }) => {
957
965
  className: "flex-1 truncate min-is-0 pis-6"
958
966
  }, title), alternateTree && !isAlternate && /* @__PURE__ */ React7.createElement(IconButton2, {
959
967
  variant: "ghost",
960
- classNames: mx4("shrink-0", hoverableControlItem2, hoverableOpenControlItem2, "pli-2 pointer-fine:pli-1"),
968
+ classNames: [
969
+ "shrink-0",
970
+ hoverableControlItem2,
971
+ hoverableOpenControlItem2,
972
+ "pli-2 pointer-fine:pli-1"
973
+ ],
961
974
  iconOnly: true,
962
975
  size: 5,
963
- density: "coarse",
964
976
  icon: alternateTree.properties.icon ?? "ph--placeholder--regular",
965
977
  label: toLocalizedString6(alternateTree.properties.label ?? alternateTree.id, t),
966
978
  "data-testid": "treeView.alternateTreeButton",
@@ -1047,7 +1059,7 @@ var L1Panels = ({ topLevelItems, onBack, ...props }) => {
1047
1059
  }
1048
1060
  };
1049
1061
 
1050
- // packages/plugins/plugin-navtree/src/components/NavTree/NavTree.tsx
1062
+ // src/components/NavTree/NavTree.tsx
1051
1063
  var NAV_TREE_ITEM = "NavTreeItem";
1052
1064
  var NavTree = ({ id, root, ...props }) => {
1053
1065
  var _effect = _useSignals8();
@@ -1125,15 +1137,15 @@ var NavTree = ({ id, root, ...props }) => {
1125
1137
  }
1126
1138
  };
1127
1139
 
1128
- // packages/plugins/plugin-navtree/src/capabilities/index.ts
1140
+ // src/capabilities/index.ts
1129
1141
  import { lazy } from "@dxos/app-framework";
1130
- var AppGraphBuilder = lazy(() => import("./app-graph-builder-P7AY3K72.mjs"));
1131
- var IntentResolver = lazy(() => import("./intent-resolver-NAYKKAOP.mjs"));
1132
- var Keyboard2 = lazy(() => import("./keyboard-DDFATRUG.mjs"));
1133
- var ReactSurface = lazy(() => import("./react-surface-H3JRTVNU.mjs"));
1134
- var State = lazy(() => import("./state-J6AKZRB4.mjs"));
1142
+ var AppGraphBuilder = lazy(() => import("./app-graph-builder-5J4LRWDX.mjs"));
1143
+ var IntentResolver = lazy(() => import("./intent-resolver-3XYN2CBU.mjs"));
1144
+ var Keyboard2 = lazy(() => import("./keyboard-QRS6WOQH.mjs"));
1145
+ var ReactSurface = lazy(() => import("./react-surface-WURHCBQQ.mjs"));
1146
+ var State = lazy(() => import("./state-54DY3DOY.mjs"));
1135
1147
 
1136
- // packages/plugins/plugin-navtree/src/components/NavTreeContainer.tsx
1148
+ // src/components/NavTreeContainer.tsx
1137
1149
  var NODE_TYPE = "dxos/app-graph/node";
1138
1150
  var renderItemEnd = ({ node, open }) => /* @__PURE__ */ React9.createElement(Surface, {
1139
1151
  role: "navtree-item-end",
@@ -1160,8 +1172,9 @@ var getItems = (graph, node, disposition) => {
1160
1172
  };
1161
1173
  var useItems = (node, options) => {
1162
1174
  const { graph } = useAppGraph2();
1163
- const connections = useConnections(graph, node?.id ?? ROOT_ID).filter((node2) => filterItems(node2, options?.disposition));
1164
- return options?.sort ? connections.toSorted((a, b) => byPosition(a.properties, b.properties)) : connections;
1175
+ const connections = useConnections(graph, node?.id ?? ROOT_ID);
1176
+ const filtered = connections.filter((node2) => filterItems(node2, options?.disposition));
1177
+ return options?.sort ? filtered.toSorted((a, b) => byPosition(a.properties, b.properties)) : filtered;
1165
1178
  };
1166
1179
  var NavTreeContainer = /* @__PURE__ */ memo2(({ tab, popoverAnchorId, topbar }) => {
1167
1180
  var _effect = _useSignals9();
@@ -1186,7 +1199,7 @@ var NavTreeContainer = /* @__PURE__ */ memo2(({ tab, popoverAnchorId, topbar })
1186
1199
  parentOf,
1187
1200
  icon: node.properties.icon,
1188
1201
  disabled: node.properties.disabled,
1189
- className: mx5(node.properties.modified && "italic", node.properties.className),
1202
+ className: mx4(node.properties.modified && "italic", node.properties.className),
1190
1203
  headingClassName: node.properties.headingClassName,
1191
1204
  testId: node.properties.testId
1192
1205
  };
@@ -1426,4 +1439,4 @@ export {
1426
1439
  ReactSurface,
1427
1440
  State
1428
1441
  };
1429
- //# sourceMappingURL=chunk-ZJPL4XJD.mjs.map
1442
+ //# sourceMappingURL=chunk-SICQTLXC.mjs.map
@@ -0,0 +1,7 @@
1
+ {
2
+ "version": 3,
3
+ "sources": ["../../../src/components/CommandsDialog/CommandsDialog.tsx", "../../../src/components/CommandsDialog/CommandsTrigger.tsx", "../../../src/util.ts", "../../../src/components/NavTreeContainer.tsx", "../../../src/components/NavTree/NavTree.tsx", "../../../src/hooks.ts", "../../../src/components/NavTreeContext.tsx", "../../../src/components/NavTreeDocumentTitle.tsx", "../../../src/components/Sidebar/L0Menu.tsx", "../../../src/components/UserAccountAvatar/UserAccountAvatar.tsx", "../../../src/components/Sidebar/L1Panel.tsx", "../../../src/components/NavTreeItem/NavTreeItemAction.tsx", "../../../src/components/NavTreeItem/NavTreeItemColumns.tsx", "../../../src/capabilities/index.ts"],
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, isAction, isActionGroup } from '@dxos/app-graph';\nimport { Keyboard, keySymbols } from '@dxos/keyboard';\nimport { useActions } from '@dxos/plugin-graph';\nimport { Button, Dialog, Icon, useTranslation, toLocalizedString } from '@dxos/react-ui';\nimport { SearchList } from '@dxos/react-ui-searchlist';\nimport {\n cardDialogContent,\n cardDialogHeader,\n cardDialogPaddedOverflow,\n cardDialogSearchListRoot,\n} from '@dxos/react-ui-stack';\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 return actions;\n }, [graph]);\n\n const group = allActions.find(({ id }) => id === selected);\n const groupActions = useActions(graph, group?.id);\n const actions = isActionGroup(group) ? groupActions : allActions;\n\n return (\n <Dialog.Content classNames={cardDialogContent}>\n <Dialog.Title classNames={cardDialogHeader}>{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={cardDialogSearchListRoot}>\n <SearchList.Input placeholder={t('command list input placeholder')} />\n <SearchList.Content classNames={cardDialogPaddedOverflow}>\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.getConnections(group?.id ?? action.id, 'inbound')[0];\n void (node && isAction(action) && action.data({ parent: 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 <div role='none' className='pli-cardSpacingInline pbe-cardSpacingBlock'>\n <Dialog.Close asChild>\n <Button classNames='is-full'>{t('close label', { ns: 'os' })}</Button>\n </Dialog.Close>\n </div>\n </Dialog.Content>\n );\n};\n", "//\n// Copyright 2024 DXOS.org\n//\n\nimport React from 'react';\n\nimport { createIntent, LayoutAction, useIntentDispatcher } from '@dxos/app-framework';\nimport { Button, Icon, useTranslation } from '@dxos/react-ui';\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 <Icon icon='ph--magnifying-glass--regular' size={5} />\n </Button>\n );\n};\n", "//\n// Copyright 2023 DXOS.org\n//\n\nimport { type Action, type Node, type ReadableGraph, isAction, isActionLike } from '@dxos/app-graph';\nimport { isNonNullable } from '@dxos/util';\n\nimport { type FlattenedActions, type NavTreeItemGraphNode } from './types';\n\nexport const getParent = (\n graph: ReadableGraph,\n node: NavTreeItemGraphNode,\n path: string[],\n): NavTreeItemGraphNode | undefined => {\n const parentId = path[path.length - 2];\n return graph.getConnections(node.id, 'inbound').find((n) => n.id === parentId) as NavTreeItemGraphNode | undefined;\n};\n\nexport const getPersistenceParent = (\n graph: ReadableGraph,\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: ReadableGraph,\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 === 'list-item-primary') {\n return -1;\n }\n\n return 1;\n });\n\nexport const getChildren = (\n graph: ReadableGraph,\n node: NavTreeItemGraphNode,\n path: readonly string[] = [],\n): NavTreeItemGraphNode[] => {\n return graph\n .getConnections(node.id, 'outbound')\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: ReadableGraph, node: Node): FlattenedActions => {\n return graph.getActions(node.id).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.getActions(arg.id);\n acc.groupedActions[arg.id] = actionGroup;\n }\n return acc;\n },\n { actions: [], groupedActions: {} },\n );\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// 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, ROOT_ID, type Node, type ReadableGraph } from '@dxos/app-graph';\nimport { PLANK_COMPANION_TYPE } from '@dxos/plugin-deck/types';\nimport { useConnections } from '@dxos/plugin-graph';\nimport { useMediaQuery, useSidebars } from '@dxos/react-ui';\nimport { isTreeData, type TreeItemDataProps, type TreeData } from '@dxos/react-ui-list';\nimport { mx } from '@dxos/react-ui-theme';\nimport { arrayMove, byPosition } 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 { NAVTREE_PLUGIN } from '../meta';\nimport { type NavTreeItemGraphNode } from '../types';\nimport { getChildren, getParent, getActions as naturalGetActions, resolveMigrationOperation } 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\nconst getChildrenFilter = (node: Node): node is Node =>\n untracked(() => !isActionLike(node) && node.type !== PLANK_COMPANION_TYPE);\n\nconst filterItems = (node: Node, disposition?: string) => {\n if (!disposition && (node.properties.disposition === 'hidden' || node.properties.disposition === 'alternate-tree')) {\n return false;\n } else if (!disposition) {\n const action = isAction(node);\n return !action || node.properties.disposition === 'item';\n } else {\n return node.properties.disposition === disposition;\n }\n};\n\nconst getItems = (graph: ReadableGraph, node?: Node, disposition?: string) => {\n return graph.getConnections(node?.id ?? ROOT_ID, 'outbound').filter((node) => filterItems(node, disposition));\n};\n\nconst useItems = (node?: Node, options?: { disposition?: string; sort?: boolean }) => {\n const { graph } = useAppGraph();\n const connections = useConnections(graph, node?.id ?? ROOT_ID);\n const filtered = connections.filter((node) => filterItems(node, options?.disposition));\n return options?.sort ? filtered.toSorted((a, b) => byPosition(a.properties, b.properties)) : filtered;\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 { isOpen, isCurrent, isAlternateTree, setItem } = useCapability(NavTreeCapabilities.State);\n const layout = useLayout();\n const { navigationSidebarState } = useSidebars(NAVTREE_PLUGIN);\n\n const getActions = useCallback((node: Node) => naturalGetActions(graph, node), [graph]);\n\n const getProps = useCallback(\n (node: Node, path: string[]): TreeItemDataProps => {\n const children = getChildren(graph, node, path).filter(getChildrenFilter);\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 graph.expand(node.id, 'outbound');\n // Load one level deeper, which resolves some juddering observed on open/close.\n graph.getConnections(node.id, 'outbound').forEach((child) => {\n graph.expand(child.id, 'outbound');\n });\n },\n [graph],\n );\n\n const handleOpenChange = useCallback(\n ({ item: { id }, path, open }: { item: Node; path: string[]; open: boolean }) => {\n // TODO(thure): This might become a localstorage leak; openItemIds that no longer exist should be removed from this map.\n setItem(path, 'open', open);\n graph.expand(id, 'outbound');\n },\n [graph],\n );\n\n const handleTabChange = useCallback(\n async (node: NavTreeItemGraphNode) => {\n await dispatch(\n createIntent(LayoutAction.UpdateSidebar, {\n part: 'sidebar',\n options: {\n state:\n node.id === tab\n ? navigationSidebarState === 'expanded'\n ? isLg\n ? 'collapsed'\n : 'closed'\n : 'expanded'\n : 'expanded',\n },\n }),\n );\n\n await dispatch(createIntent(LayoutAction.SwitchWorkspace, { part: 'workspace', subject: node.id }));\n\n // Open the first item if the workspace is empty.\n if (layout.active.length === 0) {\n const [item] = getItems(graph, node).filter((node) => !isActionLike(node));\n if (item && item.data) {\n await dispatch(createIntent(LayoutAction.Open, { part: 'main', subject: [item.id] }));\n }\n }\n },\n [dispatch, layout.active, tab, navigationSidebarState, isLg],\n );\n\n const canDrop = useCallback(({ source, target }: { source: TreeData; target: TreeData }) => {\n return target.item.properties.canDrop?.(source) ?? false;\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.getConnections(node.id, 'inbound');\n void (parent && node.data({ 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.getActions(node.id).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 const handleBack = useCallback(\n () => dispatch(createIntent(LayoutAction.RevertWorkspace, { part: 'workspace', options: { revert: true } })),\n [dispatch],\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(graph, sourceParent);\n const targetItems = getItems(graph, 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 setAlternateTree = useCallback(\n (path: string[], open: boolean) => {\n setItem(path, 'alternateTree', open);\n },\n [setItem],\n );\n\n const navTreeContextValue = useMemo(\n () => ({\n useItems,\n tab,\n getActions,\n loadDescendents,\n renderItemEnd,\n popoverAnchorId,\n topbar,\n getProps,\n isCurrent,\n isOpen,\n canDrop,\n isAlternateTree,\n setAlternateTree,\n onTabChange: handleTabChange,\n onOpenChange: handleOpenChange,\n onSelect: handleSelect,\n onBack: handleBack,\n }),\n [\n tab,\n getActions,\n loadDescendents,\n renderItemEnd,\n popoverAnchorId,\n topbar,\n getProps,\n isCurrent,\n isOpen,\n canDrop,\n isAlternateTree,\n setAlternateTree,\n handleTabChange,\n handleOpenChange,\n handleSelect,\n handleBack,\n ],\n );\n\n return (\n <NavTreeContext.Provider value={navTreeContextValue}>\n <NavTree id={ROOT_ID} root={graph.root} open={layout.sidebarOpen} />\n </NavTreeContext.Provider>\n );\n});\n", "//\n// Copyright 2024 DXOS.org\n//\n\nimport React, { useMemo } from 'react';\n\nimport { type TreeProps } from '@dxos/react-ui-list';\nimport { Tabs } from '@dxos/react-ui-tabs';\n\nimport { useLoadDescendents } from '../../hooks';\nimport { type NavTreeItemGraphNode } from '../../types';\nimport { useNavTreeContext } from '../NavTreeContext';\nimport { L0Menu, L1Panels, type L1PanelsProps } from '../Sidebar';\n\nexport const NAV_TREE_ITEM = 'NavTreeItem';\n\nexport type NavTreeProps = Pick<TreeProps<NavTreeItemGraphNode>, 'id' | 'root'> & Pick<L1PanelsProps, 'open'>;\n\nexport const NavTree = ({ id, root, ...props }: NavTreeProps) => {\n const { tab, useItems, onBack } = useNavTreeContext();\n const topLevelActions = useItems(root, { disposition: 'menu', sort: true });\n const topLevelCollections = useItems(root, { disposition: 'collection' });\n const topLevelWorkspaces = useItems(root, { disposition: 'workspace' });\n const topLevelNavigation = useItems(root, { disposition: 'navigation' });\n const l0Items = useMemo(\n () => [\n // prettier-ignore\n ...topLevelCollections,\n ...topLevelWorkspaces,\n ...topLevelNavigation,\n ],\n [topLevelCollections, topLevelWorkspaces, topLevelNavigation],\n );\n const pinnedItems = useItems(root, { disposition: 'pin-end', sort: true });\n const userAccountItem = useItems(root, { disposition: 'user-account' })[0];\n const topLevelItems = useMemo(\n () => [\n // prettier-ignore\n ...l0Items,\n ...pinnedItems,\n ...(userAccountItem ? [userAccountItem] : []),\n ],\n [l0Items, pinnedItems, userAccountItem],\n );\n\n useLoadDescendents(root);\n const path = useMemo(() => [id], [id]);\n\n return (\n <Tabs.Root value={tab} orientation='vertical' verticalVariant='stateless' classNames='relative'>\n <L0Menu\n menuActions={topLevelActions}\n topLevelItems={l0Items}\n pinnedItems={pinnedItems}\n userAccountItem={userAccountItem}\n path={path}\n parent={root}\n />\n <L1Panels topLevelItems={topLevelItems} path={path} currentItemId={tab} onBack={onBack} {...props} />\n </Tabs.Root>\n );\n};\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';\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 { 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 2023 DXOS.org\n//\nimport { useEffect } from 'react';\n\nimport { type Node } from '@dxos/app-graph';\nimport { toLocalizedString, useTranslation } from '@dxos/react-ui';\n\nimport { NAVTREE_PLUGIN } from '../meta';\n\nexport const NavTreeDocumentTitle = ({ node }: { node?: Node }) => {\n const { t } = useTranslation(NAVTREE_PLUGIN);\n useEffect(() => {\n document.title = node ? toLocalizedString(node.properties.label, t) : t('current app name', { ns: 'appkit' });\n }, [node?.properties?.label]);\n return null;\n};\n", "//\n// Copyright 2025 DXOS.org\n//\n\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 {\n type Edge,\n attachClosestEdge,\n extractClosestEdge,\n} from '@atlaskit/pragmatic-drag-and-drop-hitbox/closest-edge';\nimport React, {\n forwardRef,\n type MouseEvent,\n type PropsWithChildren,\n useCallback,\n useLayoutEffect,\n useMemo,\n useRef,\n useState,\n} from 'react';\n\nimport { type Node } from '@dxos/app-graph';\nimport { invariant } from '@dxos/invariant';\nimport { Icon, ListItem, ScrollArea, Tooltip, toLocalizedString, useMediaQuery, useTranslation } from '@dxos/react-ui';\nimport { MenuProvider, DropdownMenu, 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/react-ui-theme';\nimport { arrayMove, getFirstTwoRenderableChars } from '@dxos/util';\n\nimport { useLoadDescendents } from '../../hooks';\nimport { NAVTREE_PLUGIN } from '../../meta';\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<any>;\n parent?: Node<any>;\n path: string[];\n};\n\ntype L0ItemProps = L0ItemRootProps & {\n item: Node<any>;\n parent?: Node<any>;\n path: string[];\n pinned?: boolean;\n onRearrange?: StackItemRearrangeHandler<L0ItemData>;\n};\n\nconst useL0ItemClick = ({ item, parent, path }: L0ItemProps, type: string) => {\n const { tab, isCurrent, onSelect, onTabChange } = useNavTreeContext();\n const [isLg] = useMediaQuery('lg', { ssr: false });\n\n return useCallback(\n (event: MouseEvent) => {\n switch (type) {\n case 'action': {\n const {\n data: invoke,\n properties: { caller },\n } = item;\n\n return invoke?.(caller ? { node: parent, caller } : { node: parent });\n }\n\n case 'tab':\n return onTabChange?.(item);\n\n case 'link':\n return onSelect?.({ item, path, current: !isCurrent(path, item), option: event.altKey });\n }\n },\n [item, parent, type, tab, isCurrent, onSelect, onTabChange, isLg],\n );\n};\n\nconst l0Breakpoints: Record<string, string> = {\n lg: 'hidden lg:grid',\n};\n\nconst l0ItemRoot =\n 'group/l0item flex w-full justify-center items-center relative data[type!=\"collection\"]:cursor-pointer app-no-drag dx-focus-ring-group';\n\nconst l0ItemContent = 'flex justify-center items-center dx-focus-ring-group-indicator transition-colors rounded-sm';\n\nconst L0ItemRoot = forwardRef<HTMLElement, PropsWithChildren<L0ItemRootProps>>(\n ({ item, parent, path, children }, forwardedRef) => {\n const { getProps } = useNavTreeContext();\n const { id, testId } = getProps?.(item, path) ?? {};\n const type = l0ItemType(item);\n const itemPath = useMemo(() => [...path, item.id], [item.id, path]);\n\n const { t } = useTranslation(NAVTREE_PLUGIN);\n const localizedString = toLocalizedString(item.properties.label, t);\n\n const handleClick = useL0ItemClick({ item, parent, path: itemPath }, 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\n const Root = type === 'collection' ? 'h2' : type === 'tab' ? Tabs.TabPrimitive : 'button';\n\n return (\n <Tooltip.Trigger asChild delayDuration={0} side='right' content={localizedString}>\n <Root\n {...(rootProps as any)}\n data-type={type}\n className={mx(l0ItemRoot, l0Breakpoints[item.properties.l0Breakpoint])}\n ref={forwardedRef}\n >\n {children}\n </Root>\n </Tooltip.Trigger>\n );\n },\n);\n\nconst L0Avatar = ({ item }: Pick<L0ItemProps, 'item'>) => {\n const { t } = useTranslation(NAVTREE_PLUGIN);\n const type = l0ItemType(item);\n const hue = item.properties.hue ?? null;\n const hueFgStyle = hue && { style: { color: `var(--dx-${hue}SurfaceText)` } };\n const localizedString = toLocalizedString(item.properties.label, t);\n const avatarValue = useMemo(\n () => (type === 'tab' ? getFirstTwoRenderableChars(localizedString).join('').toUpperCase() : []),\n [type, item.properties.label, t],\n );\n\n return (\n <span role='img' className='place-self-center text-xl font-light' {...hueFgStyle}>\n {avatarValue}\n </span>\n );\n};\n\n// TODO(burdon): Factor out pinned (non-draggable) items.\nconst L0Item = ({ item, parent, path, pinned, onRearrange }: L0ItemProps) => {\n const { t } = useTranslation(NAVTREE_PLUGIN);\n const itemElement = useRef<HTMLElement | 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 // NOTE(thure): This is copied from StackItem, perhaps this should be DRYed out.\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 return (\n <L0ItemRoot ref={itemElement} item={item} parent={parent} path={path}>\n <div\n role='none'\n data-frame={true}\n {...(hue && { style: { background: `var(--dx-${hue}Surface)` } })}\n className={mx(\n l0ItemContent,\n pinned\n ? 'p-2 group-hover/l0item:bg-activeSurface'\n : 'is-[--l0-avatar-size] bs-[--l0-avatar-size] bg-activeSurface',\n )}\n >\n <ItemAvatar item={item} />\n </div>\n <div\n role='none'\n className='hidden group-aria-selected/l0item:block absolute inline-start-0 inset-block-2 is-1 bg-accentSurface rounded-ie'\n />\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 type = l0ItemType(item);\n if (item.properties.icon) {\n const hue = item.properties.hue ?? null;\n const hueFgStyle = hue && { style: { color: `var(--dx-${hue}SurfaceText)` } };\n return <Icon icon={item.properties.icon} size={5} {...hueFgStyle} />;\n }\n\n if (type === 'tab' && item.properties.disposition !== 'pin-end') {\n return <L0Avatar item={item} />;\n }\n\n return null;\n};\n\n//\n// L0Collection\n//\n\nconst L0Collection = ({ item, path }: L0ItemProps) => {\n const navTreeContext = useNavTreeContext();\n useLoadDescendents(item);\n const collectionItems = navTreeContext.useItems(item);\n const groupPath = useMemo(() => [...path, item.id], [item.id, path]);\n const { id, testId } = navTreeContext.getProps?.(item, path) ?? {};\n\n const handleRearrange = useCallback<StackItemRearrangeHandler<L0ItemData>>(\n (source, target, closestEdge) => {\n invariant(item.properties.onRearrangeChildren);\n const sourceIndex = collectionItems.findIndex((i) => i.id === source.id);\n const targetIndex = collectionItems.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([...collectionItems], sourceIndex, insertIndex);\n return item.properties.onRearrangeChildren(nextOrder);\n },\n [collectionItems, item.properties.onRearrangeChildren],\n );\n\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 {collectionItems.map((collectionItem) => (\n <L0Item\n key={collectionItem.id}\n item={collectionItem}\n parent={item}\n path={groupPath}\n {...(item.properties.onRearrangeChildren && { onRearrange: handleRearrange })}\n />\n ))}\n </div>\n );\n};\n\n//\n// L0Menu\n//\n\nexport type L0MenuProps = {\n menuActions: MenuItem[];\n topLevelItems: Node<any>[];\n pinnedItems: Node<any>[];\n userAccountItem?: Node<any>;\n parent?: Node<any>;\n path: string[];\n};\n\nexport const L0Menu = ({ menuActions, topLevelItems, pinnedItems, userAccountItem, parent, path }: L0MenuProps) => {\n const { t } = useTranslation(NAVTREE_PLUGIN);\n\n return (\n <Tabs.Tablist\n classNames={[\n 'group/l0 absolute z-[1] inset-block-0 inline-start-0 rounded-is',\n 'grid grid-cols-[var(--l0-size)] grid-rows-[var(--rail-size)_1fr_min-content_var(--l0-size)] contain-layout',\n '!is-[--l0-size] bg-baseSurface border-ie border-subduedSeparator app-drag pbe-[env(safe-area-inset-bottom)]',\n ]}\n >\n {/* TODO(wittjosiah): Use L0Item trigger. */}\n <MenuProvider>\n <DropdownMenu.Root group={parent} items={menuActions}>\n <Tooltip.Trigger content={t('app menu label')} side='right' asChild>\n <DropdownMenu.Trigger\n data-testid='spacePlugin.addSpace'\n className={mx(l0ItemRoot, 'grid place-items-center')}\n >\n <div\n role='none'\n className={mx(\n l0ItemContent,\n 'is-[--rail-action] bs-[--rail-action] group-hover/l0item:bg-hoverSurface',\n )}\n >\n <Icon icon='ph--list--regular' size={5} />\n </div>\n </DropdownMenu.Trigger>\n </Tooltip.Trigger>\n </DropdownMenu.Root>\n </MenuProvider>\n\n {/* Space list. */}\n <ScrollArea.Root>\n <ScrollArea.Viewport>\n <div\n role='none'\n className={mx([\n 'flex flex-col gap-1 pbs-1',\n '[body[data-platform=\"darwin\"]_&]:pbs-[calc(30px+0.25rem)]',\n '[body[data-platform=\"ios\"]_&]:pbs-[max(env(safe-area-inset-top),0.25rem)]',\n ])}\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 <ScrollArea.Scrollbar orientation='vertical'>\n <ScrollArea.Thumb />\n </ScrollArea.Scrollbar>\n </ScrollArea.Viewport>\n </ScrollArea.Root>\n\n {/* Actions. */}\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\n {userAccountItem && (\n <div role='none' className='grid 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\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-sidebarSurface) 0%, var(--dx-sidebarSurface) 70%, transparent 100%)',\n }}\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\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 <div className='grid place-items-center' data-joyride='welcome/account'>\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// Copyright 2025 DXOS.org\n//\n\nimport React, { useCallback, useMemo } from 'react';\n\nimport { type Node } from '@dxos/app-graph';\nimport { Button, type ButtonProps, Icon, IconButton, toLocalizedString, useTranslation } from '@dxos/react-ui';\nimport { Tree } from '@dxos/react-ui-list';\nimport { Tabs } from '@dxos/react-ui-tabs';\nimport { hoverableControlItem, hoverableOpenControlItem, mx } from '@dxos/react-ui-theme';\n\nimport { useLoadDescendents } from '../../hooks';\nimport { NAVTREE_PLUGIN } from '../../meta';\nimport { l0ItemType } from '../../util';\nimport { useNavTreeContext } from '../NavTreeContext';\nimport { NavTreeItemColumns } from '../NavTreeItem';\n\nconst headingBackButtonLabel = 'inset-0 min-is-0 truncate flex items-center pis-2';\n\nconst TitleButton = ({ title, onClick }: { title: string } & Pick<ButtonProps, 'onClick'>) => {\n return (\n <Button\n variant='ghost'\n classNames='pli-1 flex-1 group text-start justify-start bs-[--rail-action] font-normal'\n onClick={onClick}\n >\n <Icon icon='ph--caret-left--bold' size={3} />\n <span className={mx(headingBackButtonLabel)}>{title}</span>\n </Button>\n );\n};\n\nexport type L1PanelProps = {\n open?: boolean;\n item: Node<any>;\n path: string[];\n currentItemId: string;\n onBack?: () => void;\n};\n\nconst L1Panel = ({ open, item, path, currentItemId, onBack }: L1PanelProps) => {\n const { isAlternateTree, setAlternateTree, ...navTreeContext } = useNavTreeContext();\n const { t } = useTranslation(NAVTREE_PLUGIN);\n\n // TODO(wittjosiah): Support multiple alternate trees.\n const alternateTree = navTreeContext.useItems(item, { disposition: 'alternate-tree' })[0];\n const alternatePath = useMemo(() => [...path, item.id], [item.id, path]);\n const handleOpen = useCallback(() => setAlternateTree?.(alternatePath, true), [alternatePath, setAlternateTree]);\n const isAlternate = isAlternateTree?.(alternatePath, item) ?? false;\n const useAlternateItems = useCallback(\n (node?: Node, { disposition }: { disposition?: string } = {}) => {\n // TODO(wittjosiah): Sorting is expensive, limit to necessary items for now.\n return navTreeContext.useItems(node, { disposition, sort: node?.id === alternateTree.id });\n },\n [navTreeContext, alternateTree],\n );\n\n const handleBack = useCallback(() => {\n if (isAlternate) {\n setAlternateTree?.(alternatePath, false);\n } else {\n onBack?.();\n }\n }, [isAlternate, onBack, alternatePath, setAlternateTree]);\n\n const title = toLocalizedString(item.properties.label, t);\n const backCapable = item.id.startsWith('!') || isAlternate;\n\n return (\n <Tabs.Tabpanel\n key={item.id}\n value={item.id}\n classNames={[\n 'absolute inset-block-0 inline-end-0',\n 'is-[calc(100%-var(--l0-size))] lg:is-[--l1-size] grid-cols-1 grid-rows-[var(--rail-size)_1fr]',\n 'pbs-[env(safe-area-inset-top)]',\n item.id === currentItemId && 'grid',\n ]}\n tabIndex={-1}\n aria-label={title}\n {...(!open && { inert: 'true' })}\n >\n {item.id === currentItemId && (\n <>\n <h2 className='flex items-center border-be border-subduedSeparator app-drag pli-1 density-coarse'>\n {backCapable ? (\n <TitleButton title={title} onClick={handleBack} />\n ) : (\n <span className='flex-1 truncate min-is-0 pis-6'>{title}</span>\n )}\n {alternateTree && !isAlternate && (\n <IconButton\n variant='ghost'\n classNames={['shrink-0', hoverableControlItem, hoverableOpenControlItem, 'pli-2 pointer-fine:pli-1']}\n iconOnly\n size={5}\n icon={alternateTree.properties.icon ?? 'ph--placeholder--regular'}\n label={toLocalizedString(alternateTree.properties.label ?? alternateTree.id, t)}\n data-testid='treeView.alternateTreeButton'\n onClick={handleOpen}\n />\n )}\n <NavTreeItemColumns path={path} item={item} open density='coarse' />\n </h2>\n <div role='none' className='overflow-y-auto'>\n {isAlternate ? (\n <Tree\n {...navTreeContext}\n useItems={useAlternateItems}\n id={alternateTree.id}\n root={alternateTree}\n path={alternatePath}\n levelOffset={5}\n gridTemplateColumns='[tree-row-start] 1fr min-content min-content min-content [tree-row-end]'\n renderColumns={NavTreeItemColumns}\n />\n ) : (\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 )}\n </div>\n </>\n )}\n </Tabs.Tabpanel>\n );\n};\n\nconst L1PanelCollection = ({ item, path, ...props }: L1PanelProps) => {\n const { useItems } = useNavTreeContext();\n useLoadDescendents(item);\n const collectionItems = useItems(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} {...props} />\n ))}\n </>\n );\n};\n\nexport type L1PanelsProps = Pick<L1PanelProps, 'open' | 'currentItemId' | 'onBack'> & {\n topLevelItems: Node<any>[];\n path: string[];\n};\n\nexport const L1Panels = ({ topLevelItems, onBack, ...props }: L1PanelsProps) => {\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} {...props} />;\n case 'tab':\n return <L1Panel key={item.id} item={item} {...props} onBack={onBack} />;\n default:\n return null;\n }\n })}\n </>\n );\n};\n", "//\n// Copyright 2023 DXOS.org\n//\n\nimport React from 'react';\n\nimport { type Action, type Node } from '@dxos/app-graph';\nimport { useTranslation, toLocalizedString, IconButton, useDensityContext } from '@dxos/react-ui';\nimport { DropdownMenu, MenuProvider, type MenuItem } from '@dxos/react-ui-menu';\nimport { hoverableControlItem, hoverableOpenControlItem } 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};\n\nconst fallbackIcon = 'ph--placeholder--regular';\n\nconst fineActionButtonProps = {\n size: 4 as const,\n density: 'fine' as const,\n};\nconst coarseActionButtonProps = {\n size: 5 as const,\n density: 'coarse' as const,\n};\n\nexport const NavTreeItemActionDropdownMenu = ({\n parent,\n label,\n icon,\n testId,\n menuActions,\n caller,\n}: NavTreeItemActionMenuProps) => {\n const { t } = useTranslation(NAVTREE_PLUGIN);\n const density = useDensityContext();\n return (\n <MenuProvider>\n <DropdownMenu.Root group={parent} items={menuActions as MenuItem[]} caller={caller}>\n <DropdownMenu.Trigger asChild>\n <IconButton\n {...(density === 'coarse' ? coarseActionButtonProps : fineActionButtonProps)}\n classNames={['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 />\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 const density = useDensityContext();\n return (\n <IconButton\n {...(density === 'coarse' ? coarseActionButtonProps : fineActionButtonProps)}\n variant={variant}\n classNames={[\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 ? { parent, caller } : { 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 {...props} label={baseLabel} parent={node} menuActions={menuActions} />\n );\n};\n", "//\n// Copyright 2025 DXOS.org\n//\n\nimport React, { Fragment, memo } from 'react';\n\nimport { isAction } from '@dxos/app-graph';\nimport { DensityProvider, Popover, toLocalizedString, Treegrid, useTranslation } from '@dxos/react-ui';\n\nimport { NavTreeItemAction } from './NavTreeItemAction';\nimport { useLoadDescendents } from '../../hooks';\nimport { NAVTREE_PLUGIN } from '../../meta';\nimport { NAV_TREE_ITEM } from '../NavTree';\nimport { useNavTreeContext } from '../NavTreeContext';\nimport type { NavTreeItemColumnsProps } from '../types';\n\nexport const NavTreeItemColumns = memo(({ path, item, open, density = 'fine' }: 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 === 'list-item-primary' ? -1 : 1,\n );\n\n const actions = (primaryAction?.properties?.disposition === 'list-item-primary' ? secondaryActions : _actions)\n .flatMap((action) => (isAction(action) ? [action] : []))\n .filter((a) => ['list-item', 'list-item-primary'].includes(a.properties?.disposition));\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 <DensityProvider density={density}>\n <div role='none' className='contents app-no-drag'>\n {primaryAction?.properties?.disposition === 'list-item-primary' && !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 </DensityProvider>\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"],
5
+ "mappings": "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",
6
+ "names": ["React", "useMemo", "useState", "createIntent", "LayoutAction", "useAppGraph", "useIntentDispatcher", "isAction", "isActionGroup", "Keyboard", "keySymbols", "useActions", "Button", "Dialog", "Icon", "useTranslation", "toLocalizedString", "SearchList", "cardDialogContent", "cardDialogHeader", "cardDialogPaddedOverflow", "cardDialogSearchListRoot", "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", "groupActions", "useActions", "Dialog", "Content", "classNames", "cardDialogContent", "Title", "cardDialogHeader", "ns", "SearchList", "Root", "cardDialogSearchListRoot", "Input", "placeholder", "cardDialogPaddedOverflow", "map", "action", "shortcut", "keyBinding", "getHostPlatform", "Item", "value", "key", "onSelect", "disabled", "createIntent", "LayoutAction", "UpdateDialog", "part", "options", "state", "setTimeout", "getConnections", "data", "parent", "caller", "KEY_BINDING", "testId", "Icon", "icon", "size", "span", "className", "mx", "descriptionText", "keySymbols", "div", "role", "Close", "asChild", "Button", "React", "createIntent", "LayoutAction", "useIntentDispatcher", "Button", "Icon", "useTranslation", "CommandsTrigger", "dispatchPromise", "dispatch", "useIntentDispatcher", "t", "useTranslation", "NAVTREE_PLUGIN", "React", "Button", "classNames", "onClick", "createIntent", "LayoutAction", "UpdateDialog", "part", "subject", "COMMANDS_DIALOG", "options", "blockAlign", "span", "className", "Icon", "icon", "size", "isAction", "isActionLike", "isNonNullable", "getParent", "graph", "node", "path", "parentId", "length", "getConnections", "id", "find", "n", "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", "map", "nextPath", "includes", "undefined", "filter", "isNonNullable", "getActions", "reduce", "acc", "arg", "push", "isAction", "actionGroup", "groupedActions", "l0ItemType", "item", "isActionLike", "monitorForElements", "extractInstruction", "untracked", "React", "memo", "useCallback", "useEffect", "useMemo", "createIntent", "LayoutAction", "Surface", "useAppGraph", "useCapability", "useIntentDispatcher", "useLayout", "isAction", "isActionLike", "ROOT_ID", "PLANK_COMPANION_TYPE", "useConnections", "useMediaQuery", "useSidebars", "isTreeData", "mx", "arrayMove", "byPosition", "React", "useMemo", "Tabs", "useEffect", "createContext", "useContext", "raise", "NavTreeContext", "createContext", "useNavTreeContext", "useContext", "raise", "Error", "useEffect", "toLocalizedString", "useTranslation", "NavTreeDocumentTitle", "node", "t", "useTranslation", "NAVTREE_PLUGIN", "useEffect", "document", "title", "toLocalizedString", "properties", "label", "ns", "useLoadDescendents", "root", "loadDescendents", "useNavTreeContext", "useEffect", "frame", "requestAnimationFrame", "cancelAnimationFrame", "combine", "draggable", "dropTargetForElements", "preserveOffsetOnSource", "scrollJustEnoughIntoView", "attachClosestEdge", "extractClosestEdge", "React", "forwardRef", "useCallback", "useLayoutEffect", "useMemo", "useRef", "useState", "invariant", "Icon", "ListItem", "ScrollArea", "Tooltip", "toLocalizedString", "useMediaQuery", "useTranslation", "MenuProvider", "DropdownMenu", "Tabs", "mx", "arrayMove", "getFirstTwoRenderableChars", "React", "Avatar", "hexToFallback", "UserAccountAvatar", "size", "userId", "hue", "emoji", "status", "fallbackValue", "hexToFallback", "React", "div", "className", "data-joyride", "Avatar", "Root", "Content", "variant", "fallback", "data-testid", "useL0ItemClick", "item", "parent", "path", "type", "tab", "isCurrent", "onSelect", "onTabChange", "useNavTreeContext", "isLg", "useMediaQuery", "ssr", "useCallback", "event", "data", "invoke", "properties", "caller", "node", "current", "option", "altKey", "l0Breakpoints", "lg", "l0ItemRoot", "l0ItemContent", "L0ItemRoot", "forwardRef", "children", "forwardedRef", "getProps", "id", "testId", "l0ItemType", "itemPath", "useMemo", "t", "useTranslation", "NAVTREE_PLUGIN", "localizedString", "toLocalizedString", "label", "handleClick", "rootProps", "value", "tabIndex", "onClick", "Root", "Tabs", "TabPrimitive", "React", "Tooltip", "Trigger", "asChild", "delayDuration", "side", "content", "data-type", "className", "mx", "l0Breakpoint", "ref", "L0Avatar", "hue", "hueFgStyle", "style", "color", "avatarValue", "getFirstTwoRenderableChars", "join", "toUpperCase", "span", "role", "L0Item", "pinned", "onRearrange", "itemElement", "useRef", "closestEdge", "setEdge", "useState", "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", "extractClosestEdge", "onDrag", "onDragLeave", "div", "data-frame", "background", "ItemAvatar", "ListItem", "DropIndicator", "edge", "icon", "Icon", "size", "disposition", "L0Collection", "navTreeContext", "useLoadDescendents", "collectionItems", "useItems", "groupPath", "handleRearrange", "target", "invariant", "onRearrangeChildren", "sourceIndex", "findIndex", "i", "targetIndex", "insertIndex", "nextOrder", "arrayMove", "aria-labelledby", "data-itemid", "data-testid", "map", "collectionItem", "key", "L0Menu", "menuActions", "topLevelItems", "pinnedItems", "userAccountItem", "Tablist", "classNames", "MenuProvider", "DropdownMenu", "group", "items", "ScrollArea", "Viewport", "Scrollbar", "orientation", "Thumb", "filter", "UserAccountAvatar", "userId", "emoji", "status", "React", "useCallback", "useMemo", "Button", "Icon", "IconButton", "toLocalizedString", "useTranslation", "Tree", "Tabs", "hoverableControlItem", "hoverableOpenControlItem", "mx", "React", "useTranslation", "toLocalizedString", "IconButton", "useDensityContext", "DropdownMenu", "MenuProvider", "hoverableControlItem", "hoverableOpenControlItem", "fallbackIcon", "fineActionButtonProps", "size", "density", "coarseActionButtonProps", "NavTreeItemActionDropdownMenu", "parent", "label", "icon", "testId", "menuActions", "caller", "t", "useTranslation", "NAVTREE_PLUGIN", "useDensityContext", "React", "MenuProvider", "DropdownMenu", "Root", "group", "items", "Trigger", "asChild", "IconButton", "classNames", "hoverableControlItem", "hoverableOpenControlItem", "variant", "iconOnly", "toLocalizedString", "data-testid", "NavTreeItemMonolithicAction", "properties", "disabled", "data", "invoke", "baseLabel", "onClick", "event", "stopPropagation", "NavTreeItemAction", "monolithic", "node", "props", "monolithicAction", "length", "React", "Fragment", "memo", "isAction", "DensityProvider", "Popover", "toLocalizedString", "Treegrid", "useTranslation", "NavTreeItemColumns", "memo", "path", "item", "open", "density", "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", "includes", "ActionRoot", "NAV_TREE_ITEM", "id", "Popover", "Anchor", "Fragment", "useLoadDescendents", "undefined", "React", "DensityProvider", "div", "role", "className", "disabled", "NavTreeItemAction", "testId", "label", "toLocalizedString", "icon", "parent", "monolithic", "menuActions", "menuType", "caller", "Treegrid", "Cell", "node", "headingBackButtonLabel", "TitleButton", "title", "onClick", "React", "Button", "variant", "classNames", "Icon", "icon", "size", "span", "className", "mx", "L1Panel", "open", "item", "path", "currentItemId", "onBack", "isAlternateTree", "setAlternateTree", "navTreeContext", "useNavTreeContext", "t", "useTranslation", "NAVTREE_PLUGIN", "alternateTree", "useItems", "disposition", "alternatePath", "useMemo", "id", "handleOpen", "useCallback", "isAlternate", "useAlternateItems", "node", "sort", "handleBack", "toLocalizedString", "properties", "label", "backCapable", "startsWith", "Tabs", "Tabpanel", "key", "value", "tabIndex", "aria-label", "inert", "h2", "IconButton", "hoverableControlItem", "hoverableOpenControlItem", "iconOnly", "data-testid", "NavTreeItemColumns", "density", "div", "role", "Tree", "root", "levelOffset", "gridTemplateColumns", "renderColumns", "draggable", "L1PanelCollection", "props", "useLoadDescendents", "collectionItems", "groupPath", "filter", "l0ItemType", "map", "L1Panels", "topLevelItems", "type", "NAV_TREE_ITEM", "NavTree", "id", "root", "props", "tab", "useItems", "onBack", "useNavTreeContext", "topLevelActions", "disposition", "sort", "topLevelCollections", "topLevelWorkspaces", "topLevelNavigation", "l0Items", "useMemo", "pinnedItems", "userAccountItem", "topLevelItems", "useLoadDescendents", "path", "React", "Tabs", "Root", "value", "orientation", "verticalVariant", "classNames", "L0Menu", "menuActions", "parent", "L1Panels", "currentItemId", "lazy", "AppGraphBuilder", "lazy", "IntentResolver", "Keyboard", "ReactSurface", "State", "NODE_TYPE", "renderItemEnd", "node", "open", "React", "Surface", "role", "data", "id", "subject", "limit", "getChildrenFilter", "untracked", "isActionLike", "type", "PLANK_COMPANION_TYPE", "filterItems", "disposition", "properties", "action", "isAction", "getItems", "graph", "getConnections", "ROOT_ID", "filter", "useItems", "options", "useAppGraph", "connections", "useConnections", "filtered", "sort", "toSorted", "a", "b", "byPosition", "NavTreeContainer", "memo", "tab", "popoverAnchorId", "topbar", "isLg", "useMediaQuery", "ssr", "dispatchPromise", "dispatch", "useIntentDispatcher", "isOpen", "isCurrent", "isAlternateTree", "setItem", "useCapability", "NavTreeCapabilities", "State", "layout", "useLayout", "navigationSidebarState", "useSidebars", "NAVTREE_PLUGIN", "getActions", "useCallback", "naturalGetActions", "getProps", "path", "children", "getChildren", "parentOf", "length", "map", "undefined", "label", "icon", "disabled", "className", "mx", "modified", "headingClassName", "testId", "loadDescendents", "expand", "forEach", "child", "handleOpenChange", "item", "handleTabChange", "createIntent", "LayoutAction", "UpdateSidebar", "part", "state", "SwitchWorkspace", "active", "Open", "canDrop", "source", "target", "handleSelect", "option", "parent", "caller", "NAV_TREE_ITEM", "current", "key", "Close", "ScrollIntoView", "defaultAction", "find", "handleBack", "RevertWorkspace", "revert", "useEffect", "monitorForElements", "canMonitor", "isTreeData", "onDrop", "location", "dropTargets", "instruction", "extractInstruction", "sourceNode", "targetNode", "sourcePath", "targetPath", "operation", "slice", "join", "resolveMigrationOperation", "sourceParent", "getParent", "targetParent", "sourceItems", "targetItems", "sourceIndex", "findIndex", "targetIndex", "migrationIndex", "nextItems", "arrayMove", "onRearrangeChildren", "onCopy", "onTransferStart", "onTransferEnd", "setAlternateTree", "navTreeContextValue", "useMemo", "onTabChange", "onOpenChange", "onSelect", "onBack", "NavTreeContext", "Provider", "value", "NavTree", "root", "sidebarOpen"]
7
+ }