@dxos/plugin-navtree 0.8.4-main.70d3990 → 0.8.4-main.7996785055

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 (244) hide show
  1. package/dist/lib/browser/CommandsDialogContent-U726OBZ2.mjs +117 -0
  2. package/dist/lib/browser/CommandsDialogContent-U726OBZ2.mjs.map +7 -0
  3. package/dist/lib/browser/CommandsTrigger-LCFJL36T.mjs +32 -0
  4. package/dist/lib/browser/CommandsTrigger-LCFJL36T.mjs.map +7 -0
  5. package/dist/lib/browser/NavTreeContainer-35LP3XZM.mjs +12 -0
  6. package/dist/lib/browser/NavTreeContainer-35LP3XZM.mjs.map +7 -0
  7. package/dist/lib/browser/NavTreeDocumentTitle-L6NLLWLD.mjs +26 -0
  8. package/dist/lib/browser/NavTreeDocumentTitle-L6NLLWLD.mjs.map +7 -0
  9. package/dist/lib/browser/app-graph-builder-Z43OTNI2.mjs +44 -0
  10. package/dist/lib/browser/app-graph-builder-Z43OTNI2.mjs.map +7 -0
  11. package/dist/lib/browser/{chunk-E6MZBCU5.mjs → chunk-A4VDCIJC.mjs} +3 -3
  12. package/dist/lib/browser/chunk-A4VDCIJC.mjs.map +7 -0
  13. package/dist/lib/browser/chunk-KF26WA4O.mjs +23 -0
  14. package/dist/lib/browser/chunk-KF26WA4O.mjs.map +7 -0
  15. package/dist/lib/browser/chunk-MTTE5C5L.mjs +1452 -0
  16. package/dist/lib/browser/chunk-MTTE5C5L.mjs.map +7 -0
  17. package/dist/lib/browser/chunk-PD6TZ6TP.mjs +14 -0
  18. package/dist/lib/browser/chunk-PD6TZ6TP.mjs.map +7 -0
  19. package/dist/lib/browser/expose-LKZ6QBBD.mjs +43 -0
  20. package/dist/lib/browser/expose-LKZ6QBBD.mjs.map +7 -0
  21. package/dist/lib/browser/index.mjs +86 -91
  22. package/dist/lib/browser/index.mjs.map +4 -4
  23. package/dist/lib/browser/{keyboard-YJEK2HTH.mjs → keyboard-HYGFQO7T.mjs} +22 -14
  24. package/dist/lib/browser/keyboard-HYGFQO7T.mjs.map +7 -0
  25. package/dist/lib/browser/meta.json +1 -1
  26. package/dist/lib/browser/operation-handler-VHOUWGCZ.mjs +16 -0
  27. package/dist/lib/browser/operation-handler-VHOUWGCZ.mjs.map +7 -0
  28. package/dist/lib/browser/react-surface-XWFN75ZB.mjs +59 -0
  29. package/dist/lib/browser/react-surface-XWFN75ZB.mjs.map +7 -0
  30. package/dist/lib/browser/state-CWMNNF7K.mjs +131 -0
  31. package/dist/lib/browser/state-CWMNNF7K.mjs.map +7 -0
  32. package/dist/types/src/NavTreePlugin.d.ts +2 -1
  33. package/dist/types/src/NavTreePlugin.d.ts.map +1 -1
  34. package/dist/types/src/capabilities/app-graph-builder/app-graph-builder.d.ts +6 -0
  35. package/dist/types/src/capabilities/app-graph-builder/app-graph-builder.d.ts.map +1 -0
  36. package/dist/types/src/capabilities/app-graph-builder/index.d.ts +3 -0
  37. package/dist/types/src/capabilities/app-graph-builder/index.d.ts.map +1 -0
  38. package/dist/types/src/capabilities/index.d.ts +5 -108
  39. package/dist/types/src/capabilities/index.d.ts.map +1 -1
  40. package/dist/types/src/capabilities/keyboard/index.d.ts +3 -0
  41. package/dist/types/src/capabilities/keyboard/index.d.ts.map +1 -0
  42. package/dist/types/src/capabilities/keyboard/keyboard.d.ts +5 -0
  43. package/dist/types/src/capabilities/keyboard/keyboard.d.ts.map +1 -0
  44. package/dist/types/src/capabilities/operation-handler/index.d.ts +4 -0
  45. package/dist/types/src/capabilities/operation-handler/index.d.ts.map +1 -0
  46. package/dist/types/src/capabilities/operation-handler/operation-handler.d.ts +6 -0
  47. package/dist/types/src/capabilities/operation-handler/operation-handler.d.ts.map +1 -0
  48. package/dist/types/src/capabilities/react-surface/index.d.ts +3 -0
  49. package/dist/types/src/capabilities/react-surface/index.d.ts.map +1 -0
  50. package/dist/types/src/capabilities/react-surface/react-surface.d.ts +5 -0
  51. package/dist/types/src/capabilities/react-surface/react-surface.d.ts.map +1 -0
  52. package/dist/types/src/capabilities/state/index.d.ts +3 -0
  53. package/dist/types/src/capabilities/state/index.d.ts.map +1 -0
  54. package/dist/types/src/capabilities/state/state.d.ts +6 -0
  55. package/dist/types/src/capabilities/state/state.d.ts.map +1 -0
  56. package/dist/types/src/components/NavTree/NavTree.d.ts +11 -4
  57. package/dist/types/src/components/NavTree/NavTree.d.ts.map +1 -1
  58. package/dist/types/src/components/NavTree/NavTree.stories.d.ts +2 -2
  59. package/dist/types/src/components/NavTree/NavTree.stories.d.ts.map +1 -1
  60. package/dist/types/src/components/{NavTreeContext.d.ts → NavTreeContext/NavTreeContext.d.ts} +1 -1
  61. package/dist/types/src/components/NavTreeContext/NavTreeContext.d.ts.map +1 -0
  62. package/dist/types/src/components/NavTreeContext/index.d.ts +2 -0
  63. package/dist/types/src/components/NavTreeContext/index.d.ts.map +1 -0
  64. package/dist/types/src/components/NavTreeItem/NavTreeItemAction.d.ts +16 -8
  65. package/dist/types/src/components/NavTreeItem/NavTreeItemAction.d.ts.map +1 -1
  66. package/dist/types/src/components/NavTreeItem/NavTreeItemAction.stories.d.ts +3 -2
  67. package/dist/types/src/components/NavTreeItem/NavTreeItemAction.stories.d.ts.map +1 -1
  68. package/dist/types/src/components/NavTreeItem/NavTreeItemColumns.d.ts.map +1 -1
  69. package/dist/types/src/components/Sidebar/L0Menu.d.ts +8 -5
  70. package/dist/types/src/components/Sidebar/L0Menu.d.ts.map +1 -1
  71. package/dist/types/src/components/Sidebar/L1Panel.d.ts +4 -7
  72. package/dist/types/src/components/Sidebar/L1Panel.d.ts.map +1 -1
  73. package/dist/types/src/components/Sidebar/L1Tabs.d.ts +5 -4
  74. package/dist/types/src/components/Sidebar/L1Tabs.d.ts.map +1 -1
  75. package/dist/types/src/components/UserAccountAvatar/UserAccountAvatar.stories.d.ts.map +1 -1
  76. package/dist/types/src/components/index.d.ts +0 -3
  77. package/dist/types/src/components/index.d.ts.map +1 -1
  78. package/dist/types/src/components/types.d.ts +8 -16
  79. package/dist/types/src/components/types.d.ts.map +1 -1
  80. package/dist/types/src/containers/CommandsDialogContent/CommandsDialogContent.d.ts +6 -0
  81. package/dist/types/src/containers/CommandsDialogContent/CommandsDialogContent.d.ts.map +1 -0
  82. package/dist/types/src/containers/CommandsDialogContent/CommandsDialogContent.stories.d.ts +30 -0
  83. package/dist/types/src/containers/CommandsDialogContent/CommandsDialogContent.stories.d.ts.map +1 -0
  84. package/dist/types/src/containers/CommandsDialogContent/index.d.ts +3 -0
  85. package/dist/types/src/containers/CommandsDialogContent/index.d.ts.map +1 -0
  86. package/dist/types/src/containers/CommandsTrigger/CommandsTrigger.d.ts.map +1 -0
  87. package/dist/types/src/containers/CommandsTrigger/index.d.ts +3 -0
  88. package/dist/types/src/containers/CommandsTrigger/index.d.ts.map +1 -0
  89. package/dist/types/src/containers/NavTreeContainer/NavTreeContainer.d.ts +9 -0
  90. package/dist/types/src/containers/NavTreeContainer/NavTreeContainer.d.ts.map +1 -0
  91. package/dist/types/src/containers/NavTreeContainer/index.d.ts +3 -0
  92. package/dist/types/src/containers/NavTreeContainer/index.d.ts.map +1 -0
  93. package/dist/types/src/{components → containers/NavTreeDocumentTitle}/NavTreeDocumentTitle.d.ts +1 -1
  94. package/dist/types/src/containers/NavTreeDocumentTitle/NavTreeDocumentTitle.d.ts.map +1 -0
  95. package/dist/types/src/containers/NavTreeDocumentTitle/index.d.ts +3 -0
  96. package/dist/types/src/containers/NavTreeDocumentTitle/index.d.ts.map +1 -0
  97. package/dist/types/src/containers/index.d.ts +7 -0
  98. package/dist/types/src/containers/index.d.ts.map +1 -0
  99. package/dist/types/src/experimental/Tree.stories.d.ts +18 -4
  100. package/dist/types/src/experimental/Tree.stories.d.ts.map +1 -1
  101. package/dist/types/src/hooks/index.d.ts +5 -0
  102. package/dist/types/src/hooks/index.d.ts.map +1 -0
  103. package/dist/types/src/hooks/useActions.d.ts +5 -0
  104. package/dist/types/src/hooks/useActions.d.ts.map +1 -0
  105. package/dist/types/src/hooks/useLoadDescendents.d.ts +6 -0
  106. package/dist/types/src/hooks/useLoadDescendents.d.ts.map +1 -0
  107. package/dist/types/src/hooks/useNavTreeModel.d.ts +7 -0
  108. package/dist/types/src/hooks/useNavTreeModel.d.ts.map +1 -0
  109. package/dist/types/src/hooks/useNavTreeState.d.ts +22 -0
  110. package/dist/types/src/hooks/useNavTreeState.d.ts.map +1 -0
  111. package/dist/types/src/index.d.ts +1 -2
  112. package/dist/types/src/index.d.ts.map +1 -1
  113. package/dist/types/src/meta.d.ts +2 -2
  114. package/dist/types/src/meta.d.ts.map +1 -1
  115. package/dist/types/src/operations/expose.d.ts +5 -0
  116. package/dist/types/src/operations/expose.d.ts.map +1 -0
  117. package/dist/types/src/operations/index.d.ts +3 -0
  118. package/dist/types/src/operations/index.d.ts.map +1 -0
  119. package/dist/types/src/testing/app-graph-builder.d.ts +2 -3
  120. package/dist/types/src/testing/app-graph-builder.d.ts.map +1 -1
  121. package/dist/types/src/testing/generator.d.ts +5 -6
  122. package/dist/types/src/testing/generator.d.ts.map +1 -1
  123. package/dist/types/src/testing/update-state.d.ts +2 -2
  124. package/dist/types/src/testing/update-state.d.ts.map +1 -1
  125. package/dist/types/src/types/capabilities.d.ts +16 -0
  126. package/dist/types/src/types/capabilities.d.ts.map +1 -0
  127. package/dist/types/src/types/events.d.ts +5 -0
  128. package/dist/types/src/types/events.d.ts.map +1 -0
  129. package/dist/types/src/types/index.d.ts +4 -0
  130. package/dist/types/src/types/index.d.ts.map +1 -0
  131. package/dist/types/src/{types.d.ts → types/schema.d.ts} +6 -6
  132. package/dist/types/src/types/schema.d.ts.map +1 -0
  133. package/dist/types/src/util.d.ts +11 -7
  134. package/dist/types/src/util.d.ts.map +1 -1
  135. package/dist/types/tsconfig.tsbuildinfo +1 -1
  136. package/package.json +55 -53
  137. package/src/NavTreePlugin.tsx +54 -73
  138. package/src/capabilities/app-graph-builder/app-graph-builder.ts +42 -0
  139. package/src/capabilities/app-graph-builder/index.ts +7 -0
  140. package/src/capabilities/index.ts +5 -9
  141. package/src/capabilities/keyboard/index.ts +7 -0
  142. package/src/capabilities/keyboard/keyboard.ts +66 -0
  143. package/src/capabilities/operation-handler/index.ts +11 -0
  144. package/src/capabilities/operation-handler/operation-handler.ts +16 -0
  145. package/src/capabilities/react-surface/index.ts +7 -0
  146. package/src/capabilities/react-surface/react-surface.tsx +53 -0
  147. package/src/capabilities/state/index.ts +7 -0
  148. package/src/capabilities/state/state.ts +149 -0
  149. package/src/components/NavTree/NavTree.stories.tsx +44 -51
  150. package/src/components/NavTree/NavTree.tsx +63 -32
  151. package/src/components/{NavTreeContext.tsx → NavTreeContext/NavTreeContext.tsx} +1 -1
  152. package/src/components/NavTreeContext/index.ts +5 -0
  153. package/src/components/NavTreeItem/NavTreeItemAction.stories.tsx +17 -9
  154. package/src/components/NavTreeItem/NavTreeItemAction.tsx +65 -42
  155. package/src/components/NavTreeItem/NavTreeItemColumns.tsx +42 -16
  156. package/src/components/Sidebar/L0Menu.tsx +141 -177
  157. package/src/components/Sidebar/L1Panel.tsx +251 -93
  158. package/src/components/Sidebar/L1Tabs.tsx +18 -33
  159. package/src/components/UserAccountAvatar/UserAccountAvatar.stories.tsx +2 -3
  160. package/src/components/UserAccountAvatar/UserAccountAvatar.tsx +1 -1
  161. package/src/components/index.ts +1 -3
  162. package/src/components/types.ts +14 -19
  163. package/src/containers/CommandsDialogContent/CommandsDialogContent.stories.tsx +46 -0
  164. package/src/containers/CommandsDialogContent/CommandsDialogContent.tsx +131 -0
  165. package/src/containers/CommandsDialogContent/index.ts +7 -0
  166. package/src/containers/CommandsTrigger/CommandsTrigger.tsx +28 -0
  167. package/src/containers/CommandsTrigger/index.ts +7 -0
  168. package/src/containers/NavTreeContainer/NavTreeContainer.tsx +271 -0
  169. package/src/containers/NavTreeContainer/index.ts +6 -0
  170. package/src/{components → containers/NavTreeDocumentTitle}/NavTreeDocumentTitle.tsx +4 -3
  171. package/src/containers/NavTreeDocumentTitle/index.ts +7 -0
  172. package/src/containers/index.ts +12 -0
  173. package/src/experimental/Tree.stories.tsx +55 -58
  174. package/src/experimental/Tree.tsx +4 -4
  175. package/src/hooks/index.ts +8 -0
  176. package/src/hooks/useActions.ts +34 -0
  177. package/src/hooks/useLoadDescendents.ts +23 -0
  178. package/src/hooks/useNavTreeModel.ts +118 -0
  179. package/src/hooks/useNavTreeState.ts +42 -0
  180. package/src/index.ts +1 -2
  181. package/src/meta.ts +4 -4
  182. package/src/operations/expose.ts +42 -0
  183. package/src/operations/index.ts +7 -0
  184. package/src/testing/app-graph-builder.ts +158 -234
  185. package/src/testing/generator.ts +13 -13
  186. package/src/testing/update-state.ts +6 -6
  187. package/src/types/capabilities.ts +21 -0
  188. package/src/types/events.ts +12 -0
  189. package/src/types/index.ts +7 -0
  190. package/src/{types.ts → types/schema.ts} +5 -5
  191. package/src/util.ts +27 -16
  192. package/dist/lib/browser/app-graph-builder-OHSCN3GX.mjs +0 -46
  193. package/dist/lib/browser/app-graph-builder-OHSCN3GX.mjs.map +0 -7
  194. package/dist/lib/browser/chunk-5VLWX4PK.mjs +0 -15
  195. package/dist/lib/browser/chunk-5VLWX4PK.mjs.map +0 -7
  196. package/dist/lib/browser/chunk-E6MZBCU5.mjs.map +0 -7
  197. package/dist/lib/browser/chunk-UDAINHB6.mjs +0 -1488
  198. package/dist/lib/browser/chunk-UDAINHB6.mjs.map +0 -7
  199. package/dist/lib/browser/intent-resolver-YUVXVPHG.mjs +0 -47
  200. package/dist/lib/browser/intent-resolver-YUVXVPHG.mjs.map +0 -7
  201. package/dist/lib/browser/keyboard-YJEK2HTH.mjs.map +0 -7
  202. package/dist/lib/browser/react-surface-V6LS3R4L.mjs +0 -51
  203. package/dist/lib/browser/react-surface-V6LS3R4L.mjs.map +0 -7
  204. package/dist/lib/browser/state-BFD5KJCV.mjs +0 -117
  205. package/dist/lib/browser/state-BFD5KJCV.mjs.map +0 -7
  206. package/dist/types/src/capabilities/app-graph-builder.d.ts +0 -4
  207. package/dist/types/src/capabilities/app-graph-builder.d.ts.map +0 -1
  208. package/dist/types/src/capabilities/capabilities.d.ts +0 -21
  209. package/dist/types/src/capabilities/capabilities.d.ts.map +0 -1
  210. package/dist/types/src/capabilities/intent-resolver.d.ts +0 -4
  211. package/dist/types/src/capabilities/intent-resolver.d.ts.map +0 -1
  212. package/dist/types/src/capabilities/keyboard.d.ts +0 -4
  213. package/dist/types/src/capabilities/keyboard.d.ts.map +0 -1
  214. package/dist/types/src/capabilities/react-surface.d.ts +0 -4
  215. package/dist/types/src/capabilities/react-surface.d.ts.map +0 -1
  216. package/dist/types/src/capabilities/state.d.ts +0 -20
  217. package/dist/types/src/capabilities/state.d.ts.map +0 -1
  218. package/dist/types/src/components/CommandsDialog/CommandsDialog.d.ts +0 -5
  219. package/dist/types/src/components/CommandsDialog/CommandsDialog.d.ts.map +0 -1
  220. package/dist/types/src/components/CommandsDialog/CommandsTrigger.d.ts.map +0 -1
  221. package/dist/types/src/components/CommandsDialog/index.d.ts +0 -3
  222. package/dist/types/src/components/CommandsDialog/index.d.ts.map +0 -1
  223. package/dist/types/src/components/NavTreeContainer.d.ts +0 -9
  224. package/dist/types/src/components/NavTreeContainer.d.ts.map +0 -1
  225. package/dist/types/src/components/NavTreeContext.d.ts.map +0 -1
  226. package/dist/types/src/components/NavTreeDocumentTitle.d.ts.map +0 -1
  227. package/dist/types/src/events.d.ts +0 -4
  228. package/dist/types/src/events.d.ts.map +0 -1
  229. package/dist/types/src/hooks.d.ts +0 -3
  230. package/dist/types/src/hooks.d.ts.map +0 -1
  231. package/dist/types/src/types.d.ts.map +0 -1
  232. package/src/capabilities/app-graph-builder.ts +0 -53
  233. package/src/capabilities/capabilities.ts +0 -20
  234. package/src/capabilities/intent-resolver.ts +0 -37
  235. package/src/capabilities/keyboard.ts +0 -57
  236. package/src/capabilities/react-surface.tsx +0 -45
  237. package/src/capabilities/state.ts +0 -104
  238. package/src/components/CommandsDialog/CommandsDialog.tsx +0 -126
  239. package/src/components/CommandsDialog/CommandsTrigger.tsx +0 -36
  240. package/src/components/CommandsDialog/index.ts +0 -6
  241. package/src/components/NavTreeContainer.tsx +0 -378
  242. package/src/events.ts +0 -11
  243. package/src/hooks.ts +0 -21
  244. /package/dist/types/src/{components/CommandsDialog → containers/CommandsTrigger}/CommandsTrigger.d.ts +0 -0
@@ -0,0 +1,7 @@
1
+ {
2
+ "version": 3,
3
+ "sources": ["../../../src/containers/NavTreeContainer/NavTreeContainer.tsx", "../../../src/components/NavTree/NavTree.tsx", "../../../src/hooks/useActions.ts", "../../../src/hooks/useLoadDescendents.ts", "../../../src/hooks/useNavTreeModel.ts", "../../../src/util.ts", "../../../src/hooks/useNavTreeState.ts", "../../../src/components/NavTreeContext/NavTreeContext.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/components/Sidebar/L1Tabs.tsx"],
4
+ "sourcesContent": ["//\n// Copyright 2023 DXOS.org\n//\n\nimport { monitorForElements } from '@atlaskit/pragmatic-drag-and-drop/element/adapter';\nimport { type Instruction, extractInstruction } from '@atlaskit/pragmatic-drag-and-drop-hitbox/tree-item';\nimport React, { forwardRef, memo, useCallback, useEffect, useMemo, useRef } from 'react';\n\nimport { Surface, useOperationInvoker } from '@dxos/app-framework/ui';\nimport { LayoutOperation } from '@dxos/app-toolkit';\nimport { useAppGraph, useLayout } from '@dxos/app-toolkit/ui';\nimport { Graph, Node, useActionRunner } from '@dxos/plugin-graph';\nimport { useMediaQuery, useSidebars } from '@dxos/react-ui';\nimport { type TreeData, isTreeData } from '@dxos/react-ui-list';\nimport { arrayMove } from '@dxos/util';\n\nimport { NAV_TREE_ITEM, NavTree, NavTreeContext } from '../../components';\nimport { useNavTreeModel, useNavTreeState } from '../../hooks';\nimport { meta } from '../../meta';\nimport { type NavTreeItemGraphNode } from '../../types';\nimport { filterItems, getParent, resolveMigrationOperation } from '../../util';\n\n// TODO(thure): Is NavTree truly authoritative in this regard?\nexport const NODE_TYPE = 'dxos/app-graph/node';\n\n// TODO(wittjosiah): Avoid using Surface within the navtree, prefer declarative data flow.\nconst NavTreeItemEnd = ({ node, open }: { node: Node.Node; open: boolean }) => {\n const data = useMemo(() => ({ id: node.id, subject: node.data, open }), [node.id, node.data, open]);\n return <Surface.Surface role='navtree-item-end' data={data} limit={1} />;\n};\n\nconst getItems = (graph: Graph.ReadableGraph, node?: Node.Node, disposition?: string) => {\n return Graph.getConnections(graph, node?.id ?? Node.RootId, 'child').filter((node) => filterItems(node, disposition));\n};\n\nexport type NavTreeContainerProps = {\n popoverAnchorId?: string;\n tab: string;\n};\n\nexport const NavTreeContainer$ = forwardRef<HTMLDivElement, NavTreeContainerProps>(\n ({ tab, popoverAnchorId }, forwardedRef) => {\n const [isLg] = useMediaQuery('lg');\n const { invokePromise } = useOperationInvoker();\n const runAction = useActionRunner();\n const { graph } = useAppGraph();\n const { getItem, setItem } = useNavTreeState();\n const layout = useLayout();\n const model = useNavTreeModel(Node.RootId);\n const { navigationSidebarState } = useSidebars(meta.id);\n const latestRef = useRef({\n tab,\n activeItems: layout.active,\n navigationSidebarState,\n isLg,\n });\n\n useEffect(() => {\n latestRef.current = {\n tab,\n activeItems: layout.active,\n navigationSidebarState,\n isLg,\n };\n }, [tab, layout.active, navigationSidebarState, isLg]);\n\n const handleOpenChange = useCallback(\n ({ item: { id }, path, open }: { item: Node.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(graph, id, 'child');\n },\n [graph, setItem],\n );\n\n const handleTabChange = useCallback(\n (node: NavTreeItemGraphNode) => {\n Graph.expand(graph, node.id, 'child');\n\n const {\n tab: activeTab,\n activeItems,\n navigationSidebarState: currentSidebarState,\n isLg: latestIsLg,\n } = latestRef.current;\n void invokePromise(LayoutOperation.UpdateSidebar, {\n state:\n node.id === activeTab\n ? currentSidebarState === 'expanded'\n ? latestIsLg\n ? 'collapsed'\n : 'closed'\n : 'expanded'\n : 'expanded',\n });\n\n void invokePromise(LayoutOperation.SwitchWorkspace, { subject: node.id });\n\n // Open the first item if the workspace is empty.\n if (activeItems.length === 0) {\n const [item] = getItems(graph, node).filter((node) => !Node.isActionLike(node));\n if (item && item.data) {\n void invokePromise(LayoutOperation.Open, { subject: [item.id] });\n }\n }\n },\n [invokePromise, graph],\n );\n\n const blockInstruction = useCallback(\n ({ instruction, source, target }: { instruction: Instruction; source: TreeData; target: TreeData }) => {\n return target.item.properties.blockInstruction?.(source, instruction) ?? false;\n },\n [],\n );\n\n const canDrop = useCallback(({ source, target }: { source: TreeData; target: TreeData }) => {\n return target.item.properties.canDrop?.(source) ?? false;\n }, []);\n\n const canSelect = useCallback(({ item }: { item: Node.Node }) => {\n return item.properties.selectable ?? true;\n }, []);\n\n const handleSelect = useCallback(\n ({ item: node, path, option }: { item: Node.Node; path: string[]; option: boolean }) => {\n if (!node.data) {\n return;\n }\n\n if (Node.isAction(node)) {\n const [parent] = Graph.getConnections(graph, node.id, Node.childRelation('inbound'));\n if (parent) {\n void runAction(node, { parent, path, caller: NAV_TREE_ITEM });\n }\n return;\n }\n\n const current = getItem(path).current;\n if (!current) {\n void invokePromise(LayoutOperation.Open, { subject: [node.id], key: node.properties.key });\n } else if (option) {\n void invokePromise(LayoutOperation.Close, { subject: [node.id] });\n } else {\n void invokePromise(LayoutOperation.ScrollIntoView, { subject: node.id });\n }\n\n const defaultAction = Graph.getActions(graph, node.id).find(\n (action) => action.properties?.disposition === 'default',\n );\n if (Node.isAction(defaultAction)) {\n void runAction(defaultAction);\n }\n\n if (!isLg) {\n void invokePromise(LayoutOperation.UpdateSidebar, { state: 'closed' });\n }\n },\n [graph, invokePromise, getItem, runAction, isLg],\n );\n\n const handleBack = useCallback(() => void invokePromise(LayoutOperation.RevertWorkspace), [invokePromise]);\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 sameParent = sourcePath.slice(0, -1).join() === targetPath.slice(0, -1).join();\n const operation =\n sameParent && 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 sourceNode.properties.onRearrange?.(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 || target?.id === sourceParent?.id) {\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 onItemHover = useCallback(({ item }: { item: Node.Node }) => Graph.expand(graph, item.id, 'child'), [graph]);\n\n const navTreeContextValue = useMemo(\n () => ({\n model,\n popoverAnchorId,\n renderItemEnd: NavTreeItemEnd,\n blockInstruction,\n canDrop,\n canSelect,\n setAlternateTree,\n onBack: handleBack,\n onOpenChange: handleOpenChange,\n onSelect: handleSelect,\n onTabChange: handleTabChange,\n onItemHover,\n }),\n [\n model,\n popoverAnchorId,\n blockInstruction,\n canDrop,\n canSelect,\n setAlternateTree,\n handleBack,\n handleOpenChange,\n handleSelect,\n handleTabChange,\n onItemHover,\n ],\n );\n\n return (\n <NavTreeContext.Provider value={navTreeContextValue}>\n <NavTree id={Node.RootId} root={Graph.getRoot(graph)} tab={tab} open={layout.sidebarOpen} ref={forwardedRef} />\n </NavTreeContext.Provider>\n );\n },\n);\n\nexport const NavTreeContainer = memo(NavTreeContainer$);\n", "//\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';\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 topLevelActions,\n l0Items: topLevelWorkspaces,\n pinnedItems,\n userAccountItem,\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 { useMemo } from 'react';\n\nimport { useAppGraph } from '@dxos/app-toolkit/ui';\nimport { Graph, Node, useActions as useGraphActions } from '@dxos/plugin-graph';\n\nimport { type FlattenedActions } from '../types';\n\n/** Returns flattened actions and grouped sub-actions for a given graph node. */\nexport const useActions = (node: Node.Node): FlattenedActions => {\n const { graph } = useAppGraph();\n const actions = useGraphActions(graph, node.id);\n\n return useMemo(() => {\n return actions.reduce(\n (acc: FlattenedActions, arg) => {\n if (arg.properties.disposition === 'item') {\n return acc;\n }\n\n acc.actions.push(arg);\n if (!Node.isAction(arg)) {\n const actionGroup = Graph.getActions(graph, arg.id);\n acc.groupedActions[arg.id] = actionGroup;\n }\n return acc;\n },\n { actions: [], groupedActions: {} },\n );\n }, [actions]);\n};\n", "//\n// Copyright 2025 DXOS.org\n//\n\nimport { useEffect } from 'react';\n\nimport { type Node } from '@dxos/app-graph';\nimport { useAppGraph } from '@dxos/app-toolkit/ui';\nimport { Graph } from '@dxos/plugin-graph';\n\n/**\n * Expands a root node in the app graph.\n */\nexport const useLoadDescendents = (root?: Node.Node) => {\n const { graph } = useAppGraph();\n useEffect(() => {\n if (!root) {\n return;\n }\n\n Graph.expand(graph, root.id, 'child');\n }, [graph, root]);\n};\n", "//\n// Copyright 2025 DXOS.org\n//\n\nimport { Atom } from '@effect-atom/atom-react';\nimport * as Option from 'effect/Option';\nimport { useMemo } from 'react';\n\nimport { useAppGraph } from '@dxos/app-toolkit/ui';\nimport { PLANK_COMPANION_TYPE } from '@dxos/plugin-deck/types';\nimport { type Node } from '@dxos/plugin-graph';\nimport { Path, type TreeModel } from '@dxos/react-ui-list';\nimport { mx } from '@dxos/ui-theme';\n\nimport { type NavTreeItemGraphNode } from '../types';\nimport { filterItems } from '../util';\n\nimport { useNavTreeState } from './useNavTreeState';\n\n// TODO(wittjosiah): Move companion/hidden nodes to their own edge categories so this filter is unnecessary.\nconst isVisibleChild = (node: Node.Node): boolean =>\n node.type !== PLANK_COMPANION_TYPE && node.properties.disposition !== 'hidden';\n\n/** Create an atom family for item display props keyed by path. */\nconst createItemPropsFamily = (graph: ReturnType<typeof useAppGraph>['graph']) =>\n Atom.family((pathKey: string) => {\n const path = Path.parts(pathKey);\n const id = Path.last(pathKey);\n return Atom.make((get) => {\n const nodeOpt = get(graph.node(id));\n const node = Option.getOrElse(nodeOpt, () => undefined);\n if (!node) {\n return { id, label: id };\n }\n const safeChildren = get(graph.connections(node.id, 'child')).filter((child) => !path.includes(child.id));\n const visibleChildren = safeChildren.filter(isVisibleChild);\n const parentOf =\n visibleChildren.length > 0\n ? visibleChildren.map((child) => child.id)\n : node.properties.role === 'branch'\n ? []\n : undefined;\n const parentId = path.length >= 2 ? path[path.length - 2] : undefined;\n const parentNode = parentId ? Option.getOrElse(get(graph.node(parentId)), () => undefined) : undefined;\n const droppable =\n node.properties.droppable === false || parentNode?.properties.childrenDroppable === false ? false : undefined;\n\n return {\n id: node.id,\n parentOf,\n disabled: node.properties.disabled,\n draggable: node.properties.draggable,\n droppable,\n label: node.properties.label ?? node.id,\n className: mx(node.properties.className, node.properties.modified && 'italic'),\n headingClassName: node.properties.headingClassName,\n icon: node.properties.icon,\n iconHue: node.properties.iconHue,\n testId: node.properties.testId,\n };\n }).pipe(Atom.keepAlive);\n });\n\n/** Create an atom family for outbound child IDs keyed by parent ID (pre-sorted by position on write). */\nconst createChildIdsFamily = (graph: ReturnType<typeof useAppGraph>['graph']) =>\n Atom.family((id: string) =>\n Atom.make((get) => get(graph.connections(id, 'child')).map((child) => child.id)).pipe(Atom.keepAlive),\n );\n\n/** Create an atom family for item resolution keyed by ID. */\nconst createItemFamily = (graph: ReturnType<typeof useAppGraph>['graph']) =>\n Atom.family((id: string) =>\n Atom.make((get) => {\n const node = Option.getOrElse(get(graph.node(id)), () => undefined);\n return node && filterItems(node) ? node : undefined;\n }).pipe(Atom.keepAlive),\n );\n\n/** Create an atom family for open state keyed by path. */\nconst createItemOpenFamily = (getItemAtom: ReturnType<typeof useNavTreeState>['getItemAtom']) =>\n Atom.family((pathKey: string) => {\n const path = Path.parts(pathKey);\n const stateAtom = getItemAtom(path);\n return Atom.make((get) => get(stateAtom).open).pipe(Atom.keepAlive);\n });\n\n/** Create an atom family for current (selected) state keyed by path. */\nconst createItemCurrentFamily = (getItemAtom: ReturnType<typeof useNavTreeState>['getItemAtom']) =>\n Atom.family((pathKey: string) => {\n const path = Path.parts(pathKey);\n const stateAtom = getItemAtom(path);\n return Atom.make((get) => get(stateAtom).current).pipe(Atom.keepAlive);\n });\n\n/**\n * Creates a TreeModel backed by the app graph and navtree state.\n */\nexport const useNavTreeModel = (rootId: string): TreeModel<NavTreeItemGraphNode> => {\n const { graph } = useAppGraph();\n const { getItemAtom } = useNavTreeState();\n\n const itemPropsFamily = useMemo(() => createItemPropsFamily(graph), [graph]);\n const childIdsFamily = useMemo(() => createChildIdsFamily(graph), [graph]);\n const itemFamily = useMemo(() => createItemFamily(graph), [graph]);\n const itemOpenFamily = useMemo(() => createItemOpenFamily(getItemAtom), [getItemAtom]);\n const itemCurrentFamily = useMemo(() => createItemCurrentFamily(getItemAtom), [getItemAtom]);\n\n return useMemo(\n () => ({\n item: (id: string) => itemFamily(id),\n itemProps: (path: string[]) => itemPropsFamily(Path.create(...path)),\n itemOpen: (path: string[]) => itemOpenFamily(Path.create(...path)),\n itemCurrent: (path: string[]) => itemCurrentFamily(Path.create(...path)),\n childIds: (parentId?: string) => childIdsFamily(parentId ?? rootId),\n }),\n [itemFamily, itemPropsFamily, itemOpenFamily, itemCurrentFamily, childIdsFamily, rootId],\n );\n};\n", "//\n// Copyright 2023 DXOS.org\n//\n\nimport { Graph, Node } from '@dxos/plugin-graph';\nimport { isNonNullable } from '@dxos/util';\n\nimport { type NavTreeItemGraphNode } from './types';\n\nexport const getParent = (\n graph: Graph.ReadableGraph,\n node: NavTreeItemGraphNode,\n path: string[],\n): NavTreeItemGraphNode | undefined => {\n const parentId = path[path.length - 2];\n return Graph.getConnections(graph, node.id, Node.childRelation('inbound')).find(\n (n: Node.Node) => n.id === parentId,\n ) as NavTreeItemGraphNode | undefined;\n};\n\nexport const getPersistenceParent = (\n graph: 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: 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: Node.Action[]): Node.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: Graph.ReadableGraph,\n node: NavTreeItemGraphNode,\n path: readonly string[] = [],\n): NavTreeItemGraphNode[] => {\n return Graph.getConnections(graph, node.id, 'child')\n .map((n: Node.Node) => {\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\n/**\n * Determines whether a node should be visible based on its disposition.\n */\nexport const filterItems = (node: 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 = Node.isAction(node);\n return !action || node.properties.disposition === 'item';\n } else {\n return node.properties.disposition === disposition;\n }\n};\n\nexport const l0ItemType = (item: Node.Node) => {\n if (Node.isActionLike(item)) {\n return 'action';\n } else {\n return 'tab';\n }\n};\n", "//\n// Copyright 2025 DXOS.org\n//\n\nimport { type Atom, useAtomValue } from '@effect-atom/atom-react';\nimport { useMemo } from 'react';\n\nimport { useCapability } from '@dxos/app-framework/ui';\n\nimport { NavTreeCapabilities } from '../types';\n\nexport type UseNavTreeStateResult = {\n getItem: (path: string[]) => NavTreeCapabilities.NavTreeItemState;\n getItemAtom: (path: string[]) => Atom.Atom<NavTreeCapabilities.NavTreeItemState>;\n setItem: (path: string[], key: 'open' | 'current' | 'alternateTree', next: boolean) => void;\n};\n\n/**\n * Hook that provides access to navtree state functions.\n * For reactive subscriptions, use `useNavTreeItemState` or `useAtomValue(getItemAtom(path))`.\n */\nexport const useNavTreeState = (): UseNavTreeStateResult => {\n return useCapability(NavTreeCapabilities.State);\n};\n\n/**\n * Hook that subscribes to a single navtree item's state.\n * Use this for fine-grained reactivity.\n */\nexport const useNavTreeItemState = (path: string[]): NavTreeCapabilities.NavTreeItemState => {\n const { getItemAtom } = useCapability(NavTreeCapabilities.State);\n const pathKey = useMemo(() => path.join('~'), [path]);\n const atom = useMemo(() => getItemAtom(path), [getItemAtom, pathKey]);\n return useAtomValue(atom);\n};\n\n/**\n * Hook that subscribes to the alternateTree state for a tree item.\n */\nexport const useIsAlternateTree = (path: string[], _item?: any): boolean => {\n return useNavTreeItemState(path).alternateTree ?? false;\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 { 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 { 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';\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 role='none'\n className={mx(\n 'hidden group-aria-selected/l0item:block absolute start-0 h-6 w-1.5 bg-accent-surface 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 role='none'\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-active-surface'\n : 'w-(--dx-l0-avatar-size) h-(--dx-l0-avatar-size) bg-active-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}-surface-text)` } };\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-toolbar-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 role='none' className='grid place-items-center'>\n <IconButton variant='ghost' icon='ph--list--regular' iconOnly label={t('app menu label')} />\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 role='none' 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 role='none' 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 Effect from 'effect/Effect';\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, useConnections, useEdges } from '@dxos/plugin-graph';\nimport { DensityProvider, IconButton, ScrollArea, toLocalizedString, useTranslation } from '@dxos/react-ui';\nimport { useAttended } from '@dxos/react-ui-attention';\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 { useActions, useIsAlternateTree, useLoadDescendents } from '../../hooks';\nimport { meta } from '../../meta';\nimport { NAV_TREE_ITEM } from '../NavTree';\nimport { useNavTreeContext } from '../NavTreeContext';\nimport { NavTreeItemAction, NavTreeItemColumns } from '../NavTreeItem';\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 const alternateTree = useAlternateTreeItem(item);\n const alternatePath = useMemo(() => [...path, item.id], [item.id, path]);\n const isAlternate = useIsAlternateTree(alternatePath, item);\n\n return (\n <DensityProvider density='fine'>\n <L1PanelHeader path={path} item={item} onBack={onBack} />\n <ScrollArea.Root thin orientation='vertical'>\n <ScrollArea.Viewport>\n {isAlternate && alternateTree ? (\n <Tree\n model={navTreeContext.model}\n id={alternateTree.id}\n rootId={alternateTree.id}\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 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 ) : (\n <Tree\n model={navTreeContext.model}\n id={item.id}\n rootId={item.id}\n path={path}\n levelOffset={5}\n gridTemplateColumns='[tree-row-start] 1fr min-content min-content min-content [tree-row-end]'\n draggable\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 )}\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 { primaryAction, groupedActions, menuActions, onAction } = useL1MenuActions({ item, path });\n useLoadDescendents(item);\n\n // TODO(wittjosiah): Hack to only show containsAttended when attended item is within alternate tree (e.g. settings).\n // Since every object in the space is a descendant of the space node, we'd otherwise always show containsAttended.\n const alternateTree = useAlternateTreeItem(item);\n const attended = useAttended();\n const alternateTreeOpen = useMemo(() => {\n if (!alternateTree) {\n return true;\n }\n const hasAlternateAttended = attended.some(\n (attendedId) => attendedId === alternateTree.id || attendedId.startsWith(alternateTree.id + '/'),\n );\n return !hasAlternateAttended;\n }, [alternateTree, attended]);\n\n return (\n <div\n data-tauri-drag-region\n className='flex w-full items-center border-b border-subdued-separator dx-app-drag dx-density-coarse pe-1'\n >\n {backCapableWorkspace ? (\n <IconButton\n density='coarse'\n classNames={['shrink-0 px-2 pointer-fine:px-1', hoverableControlItem, hoverableOpenControlItem]}\n variant='ghost'\n icon='ph--caret-left--regular'\n iconOnly\n label={t('button back')}\n data-testid='treeView.primaryTreeButton'\n onClick={() => onBack?.()}\n />\n ) : (\n <div data-tauri-drag-region className='w-6' />\n )}\n <h2 data-tauri-drag-region className='flex-1 truncate min-w-0'>\n {title}\n </h2>\n {/* TODO(wittjosiah): Reconcile with NavTreeItemColumns. */}\n <div role='none' className='contents dx-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 path={path}\n monolithic={Node.isAction(primaryAction)}\n menuActions={Node.isAction(primaryAction) ? [primaryAction] : groupedActions[primaryAction?.id ?? '']}\n menuType={primaryAction.properties?.menuType}\n caller={NAV_TREE_ITEM}\n />\n )}\n {menuActions.length === 1 && (\n <IconButton\n density='coarse'\n classNames={['shrink-0 px-2 pointer-fine:px-1', hoverableControlItem, hoverableOpenControlItem]}\n variant='ghost'\n icon={menuActions[0].properties?.icon ?? 'ph--placeholder--regular'}\n iconOnly\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 {menuActions.length > 1 && (\n <Menu.Root caller={NAV_TREE_ITEM} onAction={onAction}>\n <Menu.Trigger asChild>\n <IconButton\n density='coarse'\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 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 {ItemEnd && <ItemEnd node={item} open={alternateTreeOpen} />}\n </div>\n </div>\n );\n};\n\n/**\n * Builds the menu actions for the L1 panel header, combining graph actions with a synthetic settings/back action.\n */\nconst useL1MenuActions = ({ item, path }: Pick<L1PanelProps, 'item' | 'path'>) => {\n const { t } = useTranslation(meta.id);\n const { setAlternateTree } = useNavTreeContext();\n const { graph } = useAppGraph();\n const runAction = useActionRunner();\n\n const alternateTree = useAlternateTreeItem(item);\n const alternatePath = useMemo(() => [...path, item.id], [item.id, path]);\n const isAlternate = useIsAlternateTree(alternatePath, item);\n\n // Graph actions.\n const { actions: actionsProp, groupedActions } = useActions(item);\n const [primaryAction, ...secondaryActions] = actionsProp.toSorted((a, _b) =>\n a.properties?.disposition === 'list-item-primary' ? -1 : 1,\n );\n\n const graphMenuActions = (\n primaryAction?.properties?.disposition === 'list-item-primary' ? secondaryActions : actionsProp\n )\n .flatMap((action) => (Node.isAction(action) ? [action] : []))\n .filter((a) => ['list-item', 'list-item-primary'].includes(a.properties?.disposition));\n\n // Synthetic settings/back action.\n const settingsActionId = `${item.id}~settings`;\n const settingsAction = useMemo((): Node.Action | undefined => {\n if (!alternateTree) {\n return undefined;\n }\n return {\n id: settingsActionId,\n type: Node.ActionType,\n data: () => Effect.void,\n properties: {\n label: isAlternate ? ['button back', { ns: meta.id }] : (alternateTree.properties.label ?? alternateTree.id),\n icon: isAlternate\n ? 'ph--arrow-u-down-left--regular'\n : (alternateTree.properties.icon ?? 'ph--placeholder--regular'),\n disposition: 'list-item',\n testId: isAlternate ? 'navtree.backToSpace' : 'navtree.spaceSettings',\n },\n } as Node.Action;\n }, [alternateTree, isAlternate, settingsActionId, t]);\n\n const menuActions = useMemo(\n () => [...graphMenuActions, ...(settingsAction ? [settingsAction] : [])],\n [graphMenuActions, settingsAction],\n );\n\n const onAction = useCallback(\n (action: Node.Action, params?: Node.InvokeProps) => {\n if (action.id === settingsActionId) {\n if (alternateTree && !isAlternate) {\n Graph.expand(graph, alternateTree.id, 'child');\n }\n setAlternateTree?.(alternatePath, !isAlternate);\n } else {\n void runAction(action, { ...params, path });\n }\n },\n [settingsActionId, setAlternateTree, alternatePath, isAlternate, runAction, graph, alternateTree, path],\n );\n\n return { primaryAction, groupedActions, menuActions, onAction };\n};\n\n/** Finds the first child with disposition 'alternate-tree' using graph connections directly. */\nconst useAlternateTreeItem = (item: Node.Node): Node.Node | undefined => {\n const { graph } = useAppGraph();\n const connections = useConnections(graph, item.id, 'child');\n return connections.find((node) => node.properties.disposition === 'alternate-tree');\n};\n\nexport const L1Panel = memo(L1Panel$);\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 { Menu, type MenuItem } from '@dxos/react-ui-menu';\nimport { composable, composableProps, hoverableControlItem, hoverableOpenControlItem } from '@dxos/ui-theme';\n\nimport { meta } from '../../meta';\nimport { type ActionProperties } from '../../types';\n\nconst fallbackIcon = 'ph--placeholder--regular';\n\nconst fineActionButtonProps = {\n size: 4 as const,\n density: 'fine' as const,\n};\n\nconst coarseActionButtonProps = {\n size: 5 as const,\n density: 'coarse' 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 === 'coarse' ? coarseActionButtonProps : fineActionButtonProps)}\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 === 'coarse' ? coarseActionButtonProps : fineActionButtonProps)}\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: node,\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\n return monolithic && menuActions?.length === 1 ? (\n <NavTreeItemMonolithicAction baseLabel={baseLabel} parent={node} path={path} {...menuActions[0]} />\n ) : (\n <NavTreeItemActionDropdownMenu {...props} label={baseLabel} parent={node} path={path} menuActions={menuActions} />\n );\n};\n", "//\n// Copyright 2025 DXOS.org\n//\n\nimport React, { Fragment, memo, useMemo } from 'react';\n\nimport { Node } from '@dxos/app-graph';\nimport { Popover, Treegrid, toLocalizedString, useTranslation } from '@dxos/react-ui';\n\nimport { useActions } from '../../hooks';\nimport { meta } from '../../meta';\nimport { NAV_TREE_ITEM } from '../NavTree';\nimport { useNavTreeContext } from '../NavTreeContext';\nimport { type NavTreeItemColumnsProps } from '../types';\n\nimport { NavTreeItemAction } 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 { actions: actionsProp, groupedActions } = useActions(item);\n const sortedActions = useMemo(\n () =>\n actionsProp.toSorted((actionA, actionB) => {\n const primaryA = actionA.properties?.disposition === 'list-item-primary';\n const primaryB = actionB.properties?.disposition === 'list-item-primary';\n if (primaryA && !primaryB) {\n return -1;\n }\n if (primaryB && !primaryA) {\n return 1;\n }\n return 0;\n }),\n [actionsProp],\n );\n const [primaryAction, ...secondaryActions] = sortedActions;\n\n const actions = useMemo(\n () =>\n (primaryAction?.properties?.disposition === 'list-item-primary' ? secondaryActions : sortedActions)\n .flatMap((action) => (Node.isAction(action) ? [action] : []))\n .filter((a) => ['list-item', 'list-item-primary'].includes(a.properties?.disposition)),\n [sortedActions, primaryAction],\n );\n\n const primaryMenuActions = useMemo(\n () =>\n primaryAction\n ? Node.isAction(primaryAction)\n ? [primaryAction]\n : groupedActions[primaryAction?.id ?? '']\n : undefined,\n [primaryAction, groupedActions],\n );\n\n const ActionRoot = popoverAnchorId === `${NAV_TREE_ITEM}:${item.id}` ? Popover.Anchor : Fragment;\n\n return (\n <div role='none' className='contents dx-app-no-drag'>\n {primaryAction?.properties?.disposition === 'list-item-primary' && !primaryAction?.properties?.disabled ? (\n <Treegrid.Cell classNames='contents'>\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 path={path}\n monolithic={Node.isAction(primaryAction)}\n menuActions={primaryMenuActions}\n menuType={primaryAction.properties?.menuType}\n caller={NAV_TREE_ITEM}\n />\n </Treegrid.Cell>\n ) : (\n <Treegrid.Cell role='none' />\n )}\n <ActionRoot>\n {actions.length > 0 ? (\n <Treegrid.Cell classNames='contents'>\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 path={path}\n menuActions={actions}\n menuType='dropdown'\n caller={NAV_TREE_ITEM}\n />\n </Treegrid.Cell>\n ) : (\n <Treegrid.Cell role='none' />\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 2025 DXOS.org\n//\n\nimport React from 'react';\n\nimport { type Node } from '@dxos/app-graph';\n\nimport { l0ItemType } from '../../util';\n\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": ["monitorForElements", "extractInstruction", "React", "forwardRef", "memo", "useCallback", "useEffect", "useMemo", "useRef", "Surface", "useOperationInvoker", "LayoutOperation", "useAppGraph", "useLayout", "Graph", "Node", "useActionRunner", "useMediaQuery", "useSidebars", "isTreeData", "arrayMove", "React", "forwardRef", "useMemo", "useAppGraph", "Node", "useConnections", "useActions", "useGraphActions", "Tabs", "byPosition", "useMemo", "useAppGraph", "Graph", "Node", "useActions", "useGraphActions", "useActions", "node", "graph", "useAppGraph", "actions", "useGraphActions", "id", "useMemo", "reduce", "acc", "arg", "properties", "disposition", "push", "Node", "isAction", "actionGroup", "Graph", "getActions", "groupedActions", "useEffect", "useAppGraph", "Graph", "useLoadDescendents", "root", "graph", "useAppGraph", "useEffect", "Graph", "expand", "id", "Atom", "Option", "useMemo", "useAppGraph", "PLANK_COMPANION_TYPE", "Path", "mx", "Graph", "Node", "isNonNullable", "getParent", "graph", "node", "path", "parentId", "length", "Graph", "getConnections", "id", "Node", "childRelation", "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", "filterItems", "action", "isAction", "l0ItemType", "item", "isActionLike", "useAtomValue", "useMemo", "useCapability", "useNavTreeState", "useCapability", "NavTreeCapabilities", "State", "useNavTreeItemState", "path", "getItemAtom", "pathKey", "useMemo", "join", "atom", "useAtomValue", "useIsAlternateTree", "_item", "alternateTree", "isVisibleChild", "node", "type", "PLANK_COMPANION_TYPE", "properties", "disposition", "createItemPropsFamily", "graph", "Atom", "family", "pathKey", "path", "Path", "parts", "id", "last", "make", "get", "nodeOpt", "getOrElse", "undefined", "label", "safeChildren", "connections", "filter", "child", "includes", "visibleChildren", "parentOf", "length", "map", "role", "parentId", "parentNode", "droppable", "childrenDroppable", "disabled", "draggable", "className", "mx", "modified", "headingClassName", "icon", "iconHue", "testId", "pipe", "keepAlive", "createChildIdsFamily", "createItemFamily", "filterItems", "createItemOpenFamily", "getItemAtom", "stateAtom", "open", "createItemCurrentFamily", "current", "useNavTreeModel", "rootId", "useAppGraph", "useNavTreeState", "itemPropsFamily", "useMemo", "childIdsFamily", "itemFamily", "itemOpenFamily", "itemCurrentFamily", "item", "itemProps", "create", "itemOpen", "itemCurrent", "childIds", "createContext", "useContext", "raise", "NavTreeContext", "createContext", "useNavTreeContext", "useContext", "raise", "Error", "combine", "draggable", "dropTargetForElements", "preserveOffsetOnSource", "scrollJustEnoughIntoView", "attachClosestEdge", "extractClosestEdge", "useAtomValue", "React", "forwardRef", "memo", "useCallback", "useLayoutEffect", "useMemo", "useRef", "useState", "DxAvatar", "useActionRunner", "Icon", "IconButton", "ListItem", "ScrollArea", "Tooltip", "toLocalizedString", "useMediaQuery", "useTranslation", "Menu", "Tabs", "mx", "arrayMove", "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", "id", "model", "itemPath", "useMemo", "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", "role", "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", "iconOnly", "Content", "group", "items", "ScrollArea", "centered", "thin", "orientation", "Viewport", "key", "UserAccountAvatar", "userId", "emoji", "status", "Effect", "Option", "React", "memo", "useCallback", "useMemo", "Node", "isPinnedWorkspace", "useAppGraph", "Graph", "useActionRunner", "useConnections", "useEdges", "DensityProvider", "IconButton", "ScrollArea", "toLocalizedString", "useTranslation", "useAttended", "Tree", "Menu", "Tabs", "hoverableControlItem", "hoverableOpenControlItem", "React", "useCallback", "useActionRunner", "IconButton", "toLocalizedString", "useDensityContext", "useTranslation", "Menu", "composable", "composableProps", "hoverableControlItem", "hoverableOpenControlItem", "fallbackIcon", "fineActionButtonProps", "size", "density", "coarseActionButtonProps", "NavTreeItemActionDropdownMenu", "composable", "parent", "path", "label", "icon", "testId", "menuActions", "caller", "props", "forwardedRef", "t", "useTranslation", "meta", "id", "useDensityContext", "runAction", "useActionRunner", "handleAction", "useCallback", "action", "params", "React", "Menu", "Root", "onAction", "Trigger", "asChild", "IconButton", "composableProps", "classNames", "hoverableControlItem", "hoverableOpenControlItem", "variant", "iconOnly", "toLocalizedString", "data-testid", "ref", "Content", "group", "items", "displayName", "NavTreeItemMonolithicAction", "properties", "disabled", "baseLabel", "onClick", "event", "stopPropagation", "NavTreeItemAction", "monolithic", "menuType", "node", "monolithicAction", "length", "React", "Fragment", "memo", "useMemo", "Node", "Popover", "Treegrid", "toLocalizedString", "useTranslation", "NavTreeItemColumns", "memo", "path", "item", "open", "t", "useTranslation", "meta", "id", "renderItemEnd", "ItemEnd", "popoverAnchorId", "useNavTreeContext", "level", "length", "actions", "actionsProp", "groupedActions", "useActions", "sortedActions", "useMemo", "toSorted", "actionA", "actionB", "primaryA", "properties", "disposition", "primaryB", "primaryAction", "secondaryActions", "flatMap", "action", "Node", "isAction", "filter", "a", "includes", "primaryMenuActions", "undefined", "ActionRoot", "NAV_TREE_ITEM", "Popover", "Anchor", "Fragment", "React", "div", "role", "className", "disabled", "Treegrid", "Cell", "classNames", "NavTreeItemAction", "testId", "label", "toLocalizedString", "icon", "parent", "monolithic", "menuActions", "menuType", "caller", "node", "L1Panel$", "open", "path", "item", "isCurrent", "onBack", "t", "useTranslation", "meta", "id", "title", "toLocalizedString", "properties", "label", "isActivated", "useIsActivatedWorkspace", "shouldRenderContent", "React", "Tabs", "Panel", "key", "value", "classNames", "tabIndex", "aria-label", "inert", "L1PanelContent", "graph", "useAppGraph", "edges", "useEdges", "useMemo", "childIds", "Graph", "relationKey", "some", "childId", "child", "getNode", "isNone", "disposition", "undefined", "navTreeContext", "useNavTreeContext", "alternateTree", "useAlternateTreeItem", "alternatePath", "isAlternate", "useIsAlternateTree", "DensityProvider", "density", "L1PanelHeader", "ScrollArea", "Root", "thin", "orientation", "Viewport", "Tree", "model", "rootId", "levelOffset", "gridTemplateColumns", "renderColumns", "NavTreeItemColumns", "blockInstruction", "canDrop", "canSelect", "onOpenChange", "onSelect", "onItemHover", "draggable", "renderItemEnd", "ItemEnd", "backCapableWorkspace", "isPinnedWorkspace", "primaryAction", "groupedActions", "menuActions", "onAction", "useL1MenuActions", "useLoadDescendents", "attended", "useAttended", "alternateTreeOpen", "hasAlternateAttended", "attendedId", "startsWith", "div", "data-tauri-drag-region", "className", "IconButton", "hoverableControlItem", "hoverableOpenControlItem", "variant", "icon", "iconOnly", "data-testid", "onClick", "h2", "role", "disabled", "NavTreeItemAction", "testId", "parent", "monolithic", "Node", "isAction", "menuType", "caller", "NAV_TREE_ITEM", "length", "Menu", "Trigger", "asChild", "Content", "group", "items", "node", "setAlternateTree", "runAction", "useActionRunner", "actions", "actionsProp", "useActions", "secondaryActions", "toSorted", "a", "_b", "graphMenuActions", "flatMap", "action", "filter", "includes", "settingsActionId", "settingsAction", "type", "ActionType", "data", "void", "ns", "useCallback", "params", "expand", "connections", "useConnections", "find", "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", "NODE_TYPE", "NavTreeItemEnd", "node", "open", "data", "useMemo", "id", "subject", "React", "Surface", "role", "limit", "getItems", "graph", "disposition", "Graph", "getConnections", "Node", "RootId", "filter", "filterItems", "NavTreeContainer$", "forwardRef", "tab", "popoverAnchorId", "forwardedRef", "isLg", "useMediaQuery", "invokePromise", "useOperationInvoker", "runAction", "useActionRunner", "useAppGraph", "getItem", "setItem", "useNavTreeState", "layout", "useLayout", "model", "useNavTreeModel", "navigationSidebarState", "useSidebars", "meta", "latestRef", "useRef", "activeItems", "active", "useEffect", "current", "handleOpenChange", "useCallback", "item", "path", "expand", "handleTabChange", "activeTab", "currentSidebarState", "latestIsLg", "LayoutOperation", "UpdateSidebar", "state", "SwitchWorkspace", "length", "isActionLike", "Open", "blockInstruction", "instruction", "source", "target", "properties", "canDrop", "canSelect", "selectable", "handleSelect", "option", "isAction", "parent", "childRelation", "caller", "NAV_TREE_ITEM", "key", "Close", "ScrollIntoView", "defaultAction", "getActions", "find", "action", "handleBack", "RevertWorkspace", "monitorForElements", "canMonitor", "isTreeData", "onDrop", "location", "dropTargets", "extractInstruction", "type", "sourceNode", "targetNode", "sourcePath", "targetPath", "sameParent", "slice", "join", "operation", "resolveMigrationOperation", "sourceParent", "getParent", "targetParent", "sourceItems", "targetItems", "sourceIndex", "findIndex", "targetIndex", "migrationIndex", "undefined", "nextItems", "map", "arrayMove", "onRearrange", "onCopy", "onTransferStart", "onTransferEnd", "setAlternateTree", "onItemHover", "navTreeContextValue", "renderItemEnd", "onBack", "onOpenChange", "onSelect", "onTabChange", "NavTreeContext", "Provider", "value", "NavTree", "root", "getRoot", "sidebarOpen", "ref", "NavTreeContainer", "memo"]
7
+ }
@@ -0,0 +1,14 @@
1
+ // src/containers/index.ts
2
+ import { lazy } from "react";
3
+ var CommandsDialogContent = lazy(() => import("./CommandsDialogContent-U726OBZ2.mjs"));
4
+ var CommandsTrigger = lazy(() => import("./CommandsTrigger-LCFJL36T.mjs"));
5
+ var NavTreeContainer = lazy(() => import("./NavTreeContainer-35LP3XZM.mjs"));
6
+ var NavTreeDocumentTitle = lazy(() => import("./NavTreeDocumentTitle-L6NLLWLD.mjs"));
7
+
8
+ export {
9
+ CommandsDialogContent,
10
+ CommandsTrigger,
11
+ NavTreeContainer,
12
+ NavTreeDocumentTitle
13
+ };
14
+ //# sourceMappingURL=chunk-PD6TZ6TP.mjs.map
@@ -0,0 +1,7 @@
1
+ {
2
+ "version": 3,
3
+ "sources": ["../../../src/containers/index.ts"],
4
+ "sourcesContent": ["//\n// Copyright 2023 DXOS.org\n//\n\nimport { type ComponentType, lazy } from 'react';\n\nexport { NODE_TYPE } from './NavTreeContainer';\n\nexport const CommandsDialogContent: ComponentType<any> = lazy(() => import('./CommandsDialogContent'));\nexport const CommandsTrigger: ComponentType<any> = lazy(() => import('./CommandsTrigger'));\nexport const NavTreeContainer: ComponentType<any> = lazy(() => import('./NavTreeContainer'));\nexport const NavTreeDocumentTitle: ComponentType<any> = lazy(() => import('./NavTreeDocumentTitle'));\n"],
5
+ "mappings": ";AAIA,SAA6BA,YAAY;AAIlC,IAAMC,wBAA4CC,KAAK,MAAM,OAAO,sCAAA,CAAA;AACpE,IAAMC,kBAAsCD,KAAK,MAAM,OAAO,gCAAA,CAAA;AAC9D,IAAME,mBAAuCF,KAAK,MAAM,OAAO,iCAAA,CAAA;AAC/D,IAAMG,uBAA2CH,KAAK,MAAM,OAAO,qCAAA,CAAA;",
6
+ "names": ["lazy", "CommandsDialogContent", "lazy", "CommandsTrigger", "NavTreeContainer", "NavTreeDocumentTitle"]
7
+ }
@@ -0,0 +1,43 @@
1
+ import {
2
+ NavTreeCapabilities
3
+ } from "./chunk-KF26WA4O.mjs";
4
+ import "./chunk-A4VDCIJC.mjs";
5
+
6
+ // src/operations/expose.ts
7
+ import * as Effect from "effect/Effect";
8
+ import * as Option from "effect/Option";
9
+ import { Capability } from "@dxos/app-framework";
10
+ import { AppCapabilities, LayoutOperation } from "@dxos/app-toolkit";
11
+ import { log } from "@dxos/log";
12
+ import { Operation } from "@dxos/operation";
13
+ import { Graph } from "@dxos/plugin-graph";
14
+ import { expandAttendableId } from "@dxos/react-ui-attention";
15
+ var __dxlog_file = "/__w/dxos/dxos/packages/plugins/plugin-navtree/src/operations/expose.ts";
16
+ var handler = LayoutOperation.Expose.pipe(Operation.withHandler(Effect.fnUntraced(function* ({ subject }) {
17
+ const { graph } = yield* Capability.get(AppCapabilities.AppGraph);
18
+ const { getItem, setItem } = yield* Capability.get(NavTreeCapabilities.State);
19
+ const prefixes = expandAttendableId(subject);
20
+ for (const qualifiedId of prefixes) {
21
+ Graph.expand(graph, qualifiedId, "child");
22
+ const treePath = prefixes.slice(0, prefixes.indexOf(qualifiedId) + 1);
23
+ const state = getItem(treePath);
24
+ if (!state.open) {
25
+ setItem(treePath, "open", true);
26
+ }
27
+ }
28
+ if (Option.isNone(Graph.getNode(graph, subject))) {
29
+ log("Node not found after expansion", {
30
+ subject
31
+ }, {
32
+ F: __dxlog_file,
33
+ L: 36,
34
+ S: this,
35
+ C: (f, a) => f(...a)
36
+ });
37
+ }
38
+ })));
39
+ var expose_default = handler;
40
+ export {
41
+ expose_default as default
42
+ };
43
+ //# sourceMappingURL=expose-LKZ6QBBD.mjs.map
@@ -0,0 +1,7 @@
1
+ {
2
+ "version": 3,
3
+ "sources": ["../../../src/operations/expose.ts"],
4
+ "sourcesContent": ["//\n// Copyright 2025 DXOS.org\n//\n\nimport * as Effect from 'effect/Effect';\nimport * as Option from 'effect/Option';\n\nimport { Capability } from '@dxos/app-framework';\nimport { AppCapabilities, LayoutOperation } from '@dxos/app-toolkit';\nimport { log } from '@dxos/log';\nimport { Operation } from '@dxos/operation';\nimport { Graph } from '@dxos/plugin-graph';\nimport { expandAttendableId } from '@dxos/react-ui-attention';\n\nimport { NavTreeCapabilities } from '../types';\n\nconst handler: Operation.WithHandler<typeof LayoutOperation.Expose> = LayoutOperation.Expose.pipe(\n Operation.withHandler(\n Effect.fnUntraced(function* ({ subject }) {\n const { graph } = yield* Capability.get(AppCapabilities.AppGraph);\n const { getItem, setItem } = yield* Capability.get(NavTreeCapabilities.State);\n\n const prefixes = expandAttendableId(subject);\n\n for (const qualifiedId of prefixes) {\n Graph.expand(graph, qualifiedId, 'child');\n\n const treePath = prefixes.slice(0, prefixes.indexOf(qualifiedId) + 1);\n const state = getItem(treePath);\n if (!state.open) {\n setItem(treePath, 'open', true);\n }\n }\n\n if (Option.isNone(Graph.getNode(graph, subject))) {\n log('Node not found after expansion', { subject });\n }\n }),\n ),\n);\n\nexport default handler;\n"],
5
+ "mappings": ";;;;;;AAIA,YAAYA,YAAY;AACxB,YAAYC,YAAY;AAExB,SAASC,kBAAkB;AAC3B,SAASC,iBAAiBC,uBAAuB;AACjD,SAASC,WAAW;AACpB,SAASC,iBAAiB;AAC1B,SAASC,aAAa;AACtB,SAASC,0BAA0B;;AAInC,IAAMC,UAAgEC,gBAAgBC,OAAOC,KAC3FC,UAAUC,YACDC,kBAAW,WAAW,EAAEC,QAAO,GAAE;AACtC,QAAM,EAAEC,MAAK,IAAK,OAAOC,WAAWC,IAAIC,gBAAgBC,QAAQ;AAChE,QAAM,EAAEC,SAASC,QAAO,IAAK,OAAOL,WAAWC,IAAIK,oBAAoBC,KAAK;AAE5E,QAAMC,WAAWC,mBAAmBX,OAAAA;AAEpC,aAAWY,eAAeF,UAAU;AAClCG,UAAMC,OAAOb,OAAOW,aAAa,OAAA;AAEjC,UAAMG,WAAWL,SAASM,MAAM,GAAGN,SAASO,QAAQL,WAAAA,IAAe,CAAA;AACnE,UAAMM,QAAQZ,QAAQS,QAAAA;AACtB,QAAI,CAACG,MAAMC,MAAM;AACfZ,cAAQQ,UAAU,QAAQ,IAAA;IAC5B;EACF;AAEA,MAAWK,cAAOP,MAAMQ,QAAQpB,OAAOD,OAAAA,CAAAA,GAAW;AAChDsB,QAAI,kCAAkC;MAAEtB;IAAQ,GAAA;;;;;;EAClD;AACF,CAAA,CAAA,CAAA;AAIJ,IAAA,iBAAeP;",
6
+ "names": ["Effect", "Option", "Capability", "AppCapabilities", "LayoutOperation", "log", "Operation", "Graph", "expandAttendableId", "handler", "LayoutOperation", "Expose", "pipe", "Operation", "withHandler", "fnUntraced", "subject", "graph", "Capability", "get", "AppCapabilities", "AppGraph", "getItem", "setItem", "NavTreeCapabilities", "State", "prefixes", "expandAttendableId", "qualifiedId", "Graph", "expand", "treePath", "slice", "indexOf", "state", "open", "isNone", "getNode", "log"]
7
+ }
@@ -1,35 +1,49 @@
1
+ import "./chunk-PD6TZ6TP.mjs";
1
2
  import {
2
- AppGraphBuilder,
3
- IntentResolver,
4
- Keyboard,
5
3
  NODE_TYPE,
6
- ReactSurface,
7
- State,
4
+ filterItems,
8
5
  getChildren,
9
6
  getParent,
10
7
  getPersistenceParent,
11
8
  l0ItemType,
12
9
  resolveMigrationOperation,
13
10
  sortActions
14
- } from "./chunk-UDAINHB6.mjs";
11
+ } from "./chunk-MTTE5C5L.mjs";
15
12
  import {
16
- NavTreeCapabilities
17
- } from "./chunk-5VLWX4PK.mjs";
13
+ NavTreeCapabilities,
14
+ NavTreeEvents
15
+ } from "./chunk-KF26WA4O.mjs";
18
16
  import {
19
17
  COMMANDS_DIALOG,
20
18
  KEY_BINDING,
21
19
  meta
22
- } from "./chunk-E6MZBCU5.mjs";
23
-
24
- // src/events.ts
25
- import { Events } from "@dxos/app-framework";
26
- (function(NavTreeEvents2) {
27
- NavTreeEvents2.StateReady = Events.createStateEvent(meta.id);
28
- })(NavTreeEvents || (NavTreeEvents = {}));
29
- var NavTreeEvents;
20
+ } from "./chunk-A4VDCIJC.mjs";
30
21
 
31
22
  // src/NavTreePlugin.tsx
32
- import { Capabilities, Events as Events2, LayoutAction, allOf, contributes, createIntent, defineModule, definePlugin } from "@dxos/app-framework";
23
+ import * as Effect from "effect/Effect";
24
+ import { ActivationEvent, ActivationEvents, Capabilities, Capability as Capability6, Plugin } from "@dxos/app-framework";
25
+ import { AppActivationEvents, AppCapabilities, AppPlugin, LayoutOperation } from "@dxos/app-toolkit";
26
+ import { Graph } from "@dxos/plugin-graph";
27
+
28
+ // src/capabilities/app-graph-builder/index.ts
29
+ import { Capability } from "@dxos/app-framework";
30
+ var AppGraphBuilder = Capability.lazy("AppGraphBuilder", () => import("./app-graph-builder-Z43OTNI2.mjs"));
31
+
32
+ // src/capabilities/keyboard/index.ts
33
+ import { Capability as Capability2 } from "@dxos/app-framework";
34
+ var Keyboard = Capability2.lazy("Keyboard", () => import("./keyboard-HYGFQO7T.mjs"));
35
+
36
+ // src/capabilities/operation-handler/index.ts
37
+ import { Capability as Capability3 } from "@dxos/app-framework";
38
+ var OperationHandler = Capability3.lazy("OperationHandler", () => import("./operation-handler-VHOUWGCZ.mjs"));
39
+
40
+ // src/capabilities/react-surface/index.ts
41
+ import { Capability as Capability4 } from "@dxos/app-framework";
42
+ var ReactSurface = Capability4.lazy("ReactSurface", () => import("./react-surface-XWFN75ZB.mjs"));
43
+
44
+ // src/capabilities/state/index.ts
45
+ import { Capability as Capability5 } from "@dxos/app-framework";
46
+ var State = Capability5.lazy("State", () => import("./state-CWMNNF7K.mjs"));
33
47
 
34
48
  // src/translations.ts
35
49
  var translations = [
@@ -51,90 +65,71 @@ var translations = [
51
65
  ];
52
66
 
53
67
  // src/NavTreePlugin.tsx
54
- var NavTreePlugin = definePlugin(meta, () => [
55
- defineModule({
56
- id: `${meta.id}/module/state`,
57
- activatesOn: Events2.LayoutReady,
58
- activatesAfter: [
59
- NavTreeEvents.StateReady
60
- ],
61
- activate: State
62
- }),
63
- defineModule({
64
- id: `${meta.id}/module/translations`,
65
- activatesOn: Events2.SetupTranslations,
66
- activate: () => contributes(Capabilities.Translations, translations)
67
- }),
68
- defineModule({
69
- id: `${meta.id}/module/metadata`,
70
- activatesOn: Events2.SetupMetadata,
71
- activate: () => contributes(Capabilities.Metadata, {
72
- id: NODE_TYPE,
73
- metadata: {
74
- parse: ({ item }, type) => {
75
- switch (type) {
76
- case "node":
77
- return item;
78
- case "object":
79
- return item.data;
80
- case "view-object":
81
- return {
82
- id: `${item.id}-view`,
83
- object: item.data
84
- };
85
- }
68
+ var NavTreePlugin = Plugin.define(meta).pipe(AppPlugin.addAppGraphModule({
69
+ activate: AppGraphBuilder
70
+ }), AppPlugin.addMetadataModule({
71
+ metadata: {
72
+ id: NODE_TYPE,
73
+ metadata: {
74
+ parse: ({ item }, type) => {
75
+ switch (type) {
76
+ case "node":
77
+ return item;
78
+ case "object":
79
+ return item.data;
80
+ case "view-object":
81
+ return {
82
+ id: `${item.id}-view`,
83
+ object: item.data
84
+ };
86
85
  }
87
86
  }
88
- })
89
- }),
90
- defineModule({
91
- id: `${meta.id}/module/expose`,
92
- activatesOn: allOf(Events2.DispatcherReady, Events2.AppGraphReady, Events2.LayoutReady, NavTreeEvents.StateReady),
93
- activate: async (context) => {
94
- const layout = context.getCapability(Capabilities.Layout);
95
- const { dispatchPromise: dispatch } = context.getCapability(Capabilities.IntentDispatcher);
96
- const { graph } = context.getCapability(Capabilities.AppGraph);
97
- if (dispatch && layout.active.length === 1) {
98
- void graph.waitForPath({
99
- target: layout.active[0]
100
- }, {
101
- timeout: 3e4
102
- }).then(() => dispatch(createIntent(LayoutAction.Expose, {
103
- part: "navigation",
104
- subject: layout.active[0]
105
- }))).catch(() => {
106
- });
107
- }
108
- return [];
109
87
  }
110
- }),
111
- defineModule({
112
- id: `${meta.id}/module/keyboard`,
113
- activatesOn: Events2.AppGraphReady,
114
- activate: Keyboard
115
- }),
116
- defineModule({
117
- id: `${meta.id}/module/react-surface`,
118
- activatesOn: Events2.SetupReactSurface,
119
- activate: ReactSurface
120
- }),
121
- defineModule({
122
- id: `${meta.id}/module/intent-resolver`,
123
- activatesOn: Events2.SetupIntentResolver,
124
- activate: IntentResolver
125
- }),
126
- defineModule({
127
- id: `${meta.id}/module/app-graph-builder`,
128
- activatesOn: Events2.SetupAppGraph,
129
- activate: AppGraphBuilder
88
+ }
89
+ }), AppPlugin.addOperationHandlerModule({
90
+ activate: OperationHandler
91
+ }), AppPlugin.addSurfaceModule({
92
+ activate: ReactSurface
93
+ }), AppPlugin.addTranslationsModule({
94
+ translations
95
+ }), Plugin.addModule({
96
+ id: "state",
97
+ activatesOn: AppActivationEvents.LayoutReady,
98
+ activatesAfter: [
99
+ NavTreeEvents.StateReady
100
+ ],
101
+ activate: State
102
+ }), Plugin.addModule({
103
+ id: "expose",
104
+ activatesOn: ActivationEvent.allOf(ActivationEvents.OperationInvokerReady, AppActivationEvents.AppGraphReady, AppActivationEvents.LayoutReady, NavTreeEvents.StateReady),
105
+ activate: Effect.fnUntraced(function* () {
106
+ const layout = yield* Capabilities.getAtomValue(AppCapabilities.Layout);
107
+ const { invokePromise } = yield* Capability6.get(Capabilities.OperationInvoker);
108
+ const { graph } = yield* Capability6.get(AppCapabilities.AppGraph);
109
+ if (invokePromise && layout.active.length === 1) {
110
+ void Graph.waitForPath(graph, {
111
+ target: layout.active[0]
112
+ }, {
113
+ timeout: 3e4
114
+ }).then(() => invokePromise(LayoutOperation.Expose, {
115
+ subject: layout.active[0]
116
+ })).catch(() => {
117
+ });
118
+ }
119
+ return [];
130
120
  })
131
- ]);
121
+ }), Plugin.addModule({
122
+ id: "keyboard",
123
+ activatesOn: ActivationEvent.allOf(AppActivationEvents.AppGraphReady, ActivationEvents.OperationInvokerReady),
124
+ activate: Keyboard
125
+ }), Plugin.make);
132
126
  export {
133
127
  COMMANDS_DIALOG,
134
128
  KEY_BINDING,
135
129
  NavTreeCapabilities,
136
130
  NavTreeEvents,
137
131
  NavTreePlugin,
132
+ filterItems,
138
133
  getChildren,
139
134
  getParent,
140
135
  getPersistenceParent,