@dxos/plugin-navtree 0.8.4-main.9735255 → 0.8.4-main.9be5663bfe

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 (187) hide show
  1. package/dist/lib/browser/index.mjs +137 -72
  2. package/dist/lib/browser/index.mjs.map +4 -4
  3. package/dist/lib/browser/meta.json +1 -1
  4. package/dist/types/src/NavTreePlugin.d.ts.map +1 -1
  5. package/dist/types/src/capabilities/app-graph-builder.d.ts +6 -0
  6. package/dist/types/src/capabilities/app-graph-builder.d.ts.map +1 -0
  7. package/dist/types/src/capabilities/index.d.ts +7 -5
  8. package/dist/types/src/capabilities/index.d.ts.map +1 -1
  9. package/dist/types/src/capabilities/keyboard.d.ts +5 -0
  10. package/dist/types/src/capabilities/keyboard.d.ts.map +1 -0
  11. package/dist/types/src/capabilities/operation-handler.d.ts +6 -0
  12. package/dist/types/src/capabilities/operation-handler.d.ts.map +1 -0
  13. package/dist/types/src/capabilities/react-surface.d.ts +5 -0
  14. package/dist/types/src/capabilities/react-surface.d.ts.map +1 -0
  15. package/dist/types/src/capabilities/state.d.ts +6 -0
  16. package/dist/types/src/capabilities/state.d.ts.map +1 -0
  17. package/dist/types/src/components/NavTree/NavTree.d.ts +10 -32
  18. package/dist/types/src/components/NavTree/NavTree.d.ts.map +1 -1
  19. package/dist/types/src/components/NavTree/NavTree.stories.d.ts +10 -14
  20. package/dist/types/src/components/NavTree/NavTree.stories.d.ts.map +1 -1
  21. package/dist/types/src/components/{NavTreeContext.d.ts → NavTreeContext/NavTreeContext.d.ts} +1 -1
  22. package/dist/types/src/components/NavTreeContext/NavTreeContext.d.ts.map +1 -0
  23. package/dist/types/src/components/NavTreeContext/index.d.ts +2 -0
  24. package/dist/types/src/components/NavTreeContext/index.d.ts.map +1 -0
  25. package/dist/types/src/components/NavTreeItem/NavTreeItemAction.d.ts +7 -3
  26. package/dist/types/src/components/NavTreeItem/NavTreeItemAction.d.ts.map +1 -1
  27. package/dist/types/src/components/NavTreeItem/NavTreeItemAction.stories.d.ts +1 -1
  28. package/dist/types/src/components/NavTreeItem/NavTreeItemAction.stories.d.ts.map +1 -1
  29. package/dist/types/src/components/NavTreeItem/NavTreeItemColumns.d.ts.map +1 -1
  30. package/dist/types/src/components/Sidebar/L0Menu.d.ts +4 -1
  31. package/dist/types/src/components/Sidebar/L0Menu.d.ts.map +1 -1
  32. package/dist/types/src/components/Sidebar/L1Panel.d.ts +3 -6
  33. package/dist/types/src/components/Sidebar/L1Panel.d.ts.map +1 -1
  34. package/dist/types/src/components/Sidebar/L1Tabs.d.ts +3 -2
  35. package/dist/types/src/components/Sidebar/L1Tabs.d.ts.map +1 -1
  36. package/dist/types/src/components/UserAccountAvatar/UserAccountAvatar.stories.d.ts.map +1 -1
  37. package/dist/types/src/components/index.d.ts +0 -3
  38. package/dist/types/src/components/index.d.ts.map +1 -1
  39. package/dist/types/src/components/types.d.ts +5 -13
  40. package/dist/types/src/components/types.d.ts.map +1 -1
  41. package/dist/types/src/{components/CommandsDialog/CommandsDialog.d.ts → containers/CommandsDialogContent/CommandsDialogContent.d.ts} +1 -1
  42. package/dist/types/src/containers/CommandsDialogContent/CommandsDialogContent.d.ts.map +1 -0
  43. package/dist/types/src/containers/CommandsDialogContent/CommandsDialogContent.stories.d.ts +29 -0
  44. package/dist/types/src/containers/CommandsDialogContent/CommandsDialogContent.stories.d.ts.map +1 -0
  45. package/dist/types/src/containers/CommandsDialogContent/index.d.ts +2 -0
  46. package/dist/types/src/containers/CommandsDialogContent/index.d.ts.map +1 -0
  47. package/dist/types/src/containers/CommandsTrigger/CommandsTrigger.d.ts.map +1 -0
  48. package/dist/types/src/containers/CommandsTrigger/index.d.ts +2 -0
  49. package/dist/types/src/containers/CommandsTrigger/index.d.ts.map +1 -0
  50. package/dist/types/src/containers/NavTreeContainer/NavTreeContainer.d.ts +9 -0
  51. package/dist/types/src/containers/NavTreeContainer/NavTreeContainer.d.ts.map +1 -0
  52. package/dist/types/src/containers/NavTreeContainer/index.d.ts +3 -0
  53. package/dist/types/src/containers/NavTreeContainer/index.d.ts.map +1 -0
  54. package/dist/types/src/containers/NavTreeDocumentTitle/NavTreeDocumentTitle.d.ts.map +1 -0
  55. package/dist/types/src/containers/NavTreeDocumentTitle/index.d.ts +2 -0
  56. package/dist/types/src/containers/NavTreeDocumentTitle/index.d.ts.map +1 -0
  57. package/dist/types/src/containers/index.d.ts +7 -0
  58. package/dist/types/src/containers/index.d.ts.map +1 -0
  59. package/dist/types/src/experimental/Tree.stories.d.ts +18 -4
  60. package/dist/types/src/experimental/Tree.stories.d.ts.map +1 -1
  61. package/dist/types/src/hooks/index.d.ts +5 -0
  62. package/dist/types/src/hooks/index.d.ts.map +1 -0
  63. package/dist/types/src/hooks/useActions.d.ts +5 -0
  64. package/dist/types/src/hooks/useActions.d.ts.map +1 -0
  65. package/dist/types/src/hooks/useLoadDescendents.d.ts +6 -0
  66. package/dist/types/src/hooks/useLoadDescendents.d.ts.map +1 -0
  67. package/dist/types/src/hooks/useNavTreeModel.d.ts +7 -0
  68. package/dist/types/src/hooks/useNavTreeModel.d.ts.map +1 -0
  69. package/dist/types/src/{hooks.d.ts → hooks/useNavTreeState.d.ts} +2 -14
  70. package/dist/types/src/hooks/useNavTreeState.d.ts.map +1 -0
  71. package/dist/types/src/meta.d.ts.map +1 -1
  72. package/dist/types/src/operations/expose.d.ts +5 -0
  73. package/dist/types/src/operations/expose.d.ts.map +1 -0
  74. package/dist/types/src/operations/index.d.ts +3 -0
  75. package/dist/types/src/operations/index.d.ts.map +1 -0
  76. package/dist/types/src/testing/app-graph-builder.d.ts.map +1 -1
  77. package/dist/types/src/testing/generator.d.ts +3 -3
  78. package/dist/types/src/testing/generator.d.ts.map +1 -1
  79. package/dist/types/src/translations.d.ts +9 -10
  80. package/dist/types/src/translations.d.ts.map +1 -1
  81. package/dist/types/src/types/events.d.ts.map +1 -1
  82. package/dist/types/src/util.d.ts +6 -2
  83. package/dist/types/src/util.d.ts.map +1 -1
  84. package/dist/types/tsconfig.tsbuildinfo +1 -1
  85. package/package.json +54 -43
  86. package/src/NavTreePlugin.tsx +26 -27
  87. package/src/capabilities/{app-graph-builder/app-graph-builder.ts → app-graph-builder.ts} +10 -9
  88. package/src/capabilities/index.ts +11 -5
  89. package/src/capabilities/{keyboard/keyboard.ts → keyboard.ts} +7 -6
  90. package/src/capabilities/operation-handler.ts +16 -0
  91. package/src/capabilities/{react-surface/react-surface.tsx → react-surface.tsx} +15 -15
  92. package/src/capabilities/{state/state.ts → state.ts} +43 -15
  93. package/src/components/NavTree/NavTree.stories.tsx +30 -27
  94. package/src/components/NavTree/NavTree.tsx +64 -22
  95. package/src/components/{NavTreeContext.tsx → NavTreeContext/NavTreeContext.tsx} +1 -1
  96. package/src/components/NavTreeContext/index.ts +5 -0
  97. package/src/components/NavTreeItem/NavTreeItemAction.stories.tsx +7 -9
  98. package/src/components/NavTreeItem/NavTreeItemAction.tsx +56 -39
  99. package/src/components/NavTreeItem/NavTreeItemColumns.tsx +43 -17
  100. package/src/components/Sidebar/L0Menu.tsx +104 -113
  101. package/src/components/Sidebar/L1Panel.tsx +253 -94
  102. package/src/components/Sidebar/L1Tabs.tsx +13 -4
  103. package/src/components/UserAccountAvatar/UserAccountAvatar.stories.tsx +2 -3
  104. package/src/components/UserAccountAvatar/UserAccountAvatar.tsx +1 -1
  105. package/src/components/index.ts +0 -3
  106. package/src/components/types.ts +12 -17
  107. package/src/containers/CommandsDialogContent/CommandsDialogContent.stories.tsx +45 -0
  108. package/src/{components/CommandsDialog/CommandsDialog.tsx → containers/CommandsDialogContent/CommandsDialogContent.tsx} +23 -21
  109. package/src/containers/CommandsDialogContent/index.ts +5 -0
  110. package/src/containers/CommandsTrigger/CommandsTrigger.tsx +28 -0
  111. package/src/containers/CommandsTrigger/index.ts +5 -0
  112. package/src/{components → containers/NavTreeContainer}/NavTreeContainer.tsx +85 -142
  113. package/src/containers/NavTreeContainer/index.ts +6 -0
  114. package/src/{components → containers/NavTreeDocumentTitle}/NavTreeDocumentTitle.tsx +2 -2
  115. package/src/containers/NavTreeDocumentTitle/index.ts +5 -0
  116. package/src/containers/index.ts +12 -0
  117. package/src/experimental/Tree.stories.tsx +81 -84
  118. package/src/experimental/Tree.tsx +3 -3
  119. package/src/hooks/index.ts +8 -0
  120. package/src/hooks/useActions.ts +34 -0
  121. package/src/hooks/useLoadDescendents.ts +23 -0
  122. package/src/hooks/useNavTreeModel.ts +118 -0
  123. package/src/{hooks.ts → hooks/useNavTreeState.ts} +3 -34
  124. package/src/meta.ts +2 -2
  125. package/src/operations/expose.ts +42 -0
  126. package/src/operations/index.ts +7 -0
  127. package/src/testing/app-graph-builder.ts +40 -36
  128. package/src/testing/generator.ts +25 -25
  129. package/src/translations.ts +9 -10
  130. package/src/types/capabilities.ts +2 -2
  131. package/src/types/events.ts +4 -3
  132. package/src/util.ts +19 -5
  133. package/dist/lib/browser/app-graph-builder-RSMA6I22.mjs +0 -43
  134. package/dist/lib/browser/app-graph-builder-RSMA6I22.mjs.map +0 -7
  135. package/dist/lib/browser/chunk-6YPQ625I.mjs +0 -1293
  136. package/dist/lib/browser/chunk-6YPQ625I.mjs.map +0 -7
  137. package/dist/lib/browser/chunk-AGQDZBPL.mjs +0 -23
  138. package/dist/lib/browser/chunk-AGQDZBPL.mjs.map +0 -7
  139. package/dist/lib/browser/chunk-YKTYPINZ.mjs +0 -19
  140. package/dist/lib/browser/chunk-YKTYPINZ.mjs.map +0 -7
  141. package/dist/lib/browser/keyboard-32EH3N4K.mjs +0 -52
  142. package/dist/lib/browser/keyboard-32EH3N4K.mjs.map +0 -7
  143. package/dist/lib/browser/operation-resolver-IB75DC5O.mjs +0 -52
  144. package/dist/lib/browser/operation-resolver-IB75DC5O.mjs.map +0 -7
  145. package/dist/lib/browser/react-surface-F6CVMS3Y.mjs +0 -58
  146. package/dist/lib/browser/react-surface-F6CVMS3Y.mjs.map +0 -7
  147. package/dist/lib/browser/state-EVYQOUI3.mjs +0 -120
  148. package/dist/lib/browser/state-EVYQOUI3.mjs.map +0 -7
  149. package/dist/types/src/capabilities/app-graph-builder/app-graph-builder.d.ts +0 -6
  150. package/dist/types/src/capabilities/app-graph-builder/app-graph-builder.d.ts.map +0 -1
  151. package/dist/types/src/capabilities/app-graph-builder/index.d.ts +0 -3
  152. package/dist/types/src/capabilities/app-graph-builder/index.d.ts.map +0 -1
  153. package/dist/types/src/capabilities/keyboard/index.d.ts +0 -3
  154. package/dist/types/src/capabilities/keyboard/index.d.ts.map +0 -1
  155. package/dist/types/src/capabilities/keyboard/keyboard.d.ts +0 -5
  156. package/dist/types/src/capabilities/keyboard/keyboard.d.ts.map +0 -1
  157. package/dist/types/src/capabilities/operation-resolver/index.d.ts +0 -3
  158. package/dist/types/src/capabilities/operation-resolver/index.d.ts.map +0 -1
  159. package/dist/types/src/capabilities/operation-resolver/operation-resolver.d.ts +0 -5
  160. package/dist/types/src/capabilities/operation-resolver/operation-resolver.d.ts.map +0 -1
  161. package/dist/types/src/capabilities/react-surface/index.d.ts +0 -3
  162. package/dist/types/src/capabilities/react-surface/index.d.ts.map +0 -1
  163. package/dist/types/src/capabilities/react-surface/react-surface.d.ts +0 -5
  164. package/dist/types/src/capabilities/react-surface/react-surface.d.ts.map +0 -1
  165. package/dist/types/src/capabilities/state/index.d.ts +0 -3
  166. package/dist/types/src/capabilities/state/index.d.ts.map +0 -1
  167. package/dist/types/src/capabilities/state/state.d.ts +0 -6
  168. package/dist/types/src/capabilities/state/state.d.ts.map +0 -1
  169. package/dist/types/src/components/CommandsDialog/CommandsDialog.d.ts.map +0 -1
  170. package/dist/types/src/components/CommandsDialog/CommandsTrigger.d.ts.map +0 -1
  171. package/dist/types/src/components/CommandsDialog/index.d.ts +0 -3
  172. package/dist/types/src/components/CommandsDialog/index.d.ts.map +0 -1
  173. package/dist/types/src/components/NavTreeContainer.d.ts +0 -16
  174. package/dist/types/src/components/NavTreeContainer.d.ts.map +0 -1
  175. package/dist/types/src/components/NavTreeContext.d.ts.map +0 -1
  176. package/dist/types/src/components/NavTreeDocumentTitle.d.ts.map +0 -1
  177. package/dist/types/src/hooks.d.ts.map +0 -1
  178. package/src/capabilities/app-graph-builder/index.ts +0 -7
  179. package/src/capabilities/keyboard/index.ts +0 -7
  180. package/src/capabilities/operation-resolver/index.ts +0 -7
  181. package/src/capabilities/operation-resolver/operation-resolver.ts +0 -41
  182. package/src/capabilities/react-surface/index.ts +0 -7
  183. package/src/capabilities/state/index.ts +0 -7
  184. package/src/components/CommandsDialog/CommandsTrigger.tsx +0 -26
  185. package/src/components/CommandsDialog/index.ts +0 -6
  186. /package/dist/types/src/{components/CommandsDialog → containers/CommandsTrigger}/CommandsTrigger.d.ts +0 -0
  187. /package/dist/types/src/{components → containers/NavTreeDocumentTitle}/NavTreeDocumentTitle.d.ts +0 -0
@@ -1,7 +0,0 @@
1
- {
2
- "version": 3,
3
- "sources": ["../../../src/components/CommandsDialog/CommandsDialog.tsx", "../../../src/components/CommandsDialog/CommandsTrigger.tsx", "../../../src/util.ts", "../../../src/components/NavTreeContainer.tsx", "../../../src/hooks.ts", "../../../src/components/NavTree/NavTree.tsx", "../../../src/components/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", "../../../src/components/NavTreeDocumentTitle.tsx"],
4
- "sourcesContent": ["//\n// Copyright 2023 DXOS.org\n//\n\nimport React, { forwardRef, useMemo, useState } from 'react';\n\nimport { Common } from '@dxos/app-framework';\nimport { useAppGraph, useOperationInvoker } from '@dxos/app-framework/react';\nimport { Keyboard, keySymbols } from '@dxos/keyboard';\nimport { Graph, Node, useActionRunner } from '@dxos/plugin-graph';\nimport { useActions } from '@dxos/plugin-graph';\nimport { Button, Dialog, toLocalizedString, useTranslation } from '@dxos/react-ui';\nimport { SearchList, useSearchListResults } from '@dxos/react-ui-searchlist';\nimport { osTranslations } from '@dxos/ui-theme';\nimport { getHostPlatform } from '@dxos/util';\n\nimport { KEY_BINDING, meta } from '../../meta';\n\nexport type CommandsDialogContentProps = {\n selected?: string;\n};\n\n// TODO(wittjosiah): This probably deserves its own plugin but for now it lives here w/ other navigation UI.\nexport const CommandsDialogContent = forwardRef<HTMLDivElement, CommandsDialogContentProps>(\n ({ selected: initial }, forwardedRef) => {\n const { t } = useTranslation(meta.id);\n const { invokeSync } = useOperationInvoker();\n const runAction = useActionRunner();\n const { graph } = useAppGraph();\n const [selected, setSelected] = useState<string | undefined>(initial);\n\n // Traverse graph.\n // TODO(burdon): Factor out commonality with shortcut dialog.\n const allActions = useMemo(() => {\n // TODO(burdon): Get from navtree (not keyboard).\n const current = Keyboard.singleton.getCurrentContext();\n const actionMap = new Set<string>();\n const actions: Node.ActionLike[] = [];\n Graph.traverse(graph, {\n visitor: (node, path) => {\n if (\n (Node.isAction(node) || Node.isActionGroup(node)) &&\n !actionMap.has(node.id) &&\n current.startsWith(path.slice(0, -1).join('/'))\n ) {\n actionMap.add(node.id);\n actions.push(node);\n }\n },\n });\n\n actions.sort((a, b) => {\n return toLocalizedString(a.properties.label, t)\n ?.toLowerCase()\n .localeCompare(toLocalizedString(b.properties.label, t)?.toLowerCase());\n });\n\n return actions;\n }, [graph]);\n\n const group = allActions.find(({ id }) => id === selected);\n const groupActions = useActions(graph, group?.id);\n const actions = Node.isActionGroup(group) ? groupActions : allActions;\n\n const { results, handleSearch } = useSearchListResults({\n items: actions,\n extract: (action) => toLocalizedString(action.properties.label, t),\n });\n\n return (\n <Dialog.Content ref={forwardedRef}>\n <Dialog.Title>{t('commands dialog title', { ns: meta.id })}</Dialog.Title>\n <SearchList.Root onSearch={handleSearch}>\n <div aria-label={t('command list input placeholder')} role='combobox' aria-expanded='true'>\n <SearchList.Input placeholder={t('command list input placeholder')} />\n <SearchList.Content>\n <SearchList.Viewport>\n {results.map((action) => {\n const shortcut =\n typeof action.properties.keyBinding === 'string'\n ? action.properties.keyBinding\n : action.properties.keyBinding?.[getHostPlatform()];\n\n return (\n <SearchList.Item\n value={action.id}\n key={action.id}\n label={toLocalizedString(action.properties.label, t)}\n icon={action.properties.icon}\n suffix={shortcut ? keySymbols(shortcut).join('') : undefined}\n onSelect={() => {\n if (action.properties.disabled) {\n return;\n }\n\n if (Node.isActionGroup(action)) {\n setSelected(action.id);\n return;\n }\n\n invokeSync(Common.LayoutOperation.UpdateDialog, { state: false });\n setTimeout(() => {\n const node = Graph.getConnections(graph, group?.id ?? action.id, 'inbound')[0];\n if (node && Node.isAction(action)) {\n void runAction(action, { parent: node, caller: KEY_BINDING });\n }\n });\n }}\n classNames='flex items-center gap-2'\n disabled={action.properties.disabled}\n {...(action.properties?.testId && {\n 'data-testid': action.properties.testId,\n })}\n />\n );\n })}\n </SearchList.Viewport>\n </SearchList.Content>\n </div>\n </SearchList.Root>\n <div role='none' className='pli-cardSpacingInline pbe-cardSpacingBlock'>\n <Dialog.Close asChild>\n <Button classNames='is-full'>{t('close label', { ns: osTranslations })}</Button>\n </Dialog.Close>\n </div>\n </Dialog.Content>\n );\n },\n);\n", "//\n// Copyright 2024 DXOS.org\n//\n\nimport React from 'react';\n\nimport { Common } from '@dxos/app-framework';\nimport { useOperationInvoker } from '@dxos/app-framework/react';\nimport { Button, Icon, useTranslation } from '@dxos/react-ui';\n\nimport { COMMANDS_DIALOG, meta } from '../../meta';\n\n// TODO(thure): Refactor to be handled by a more appropriate plugin.\nexport const CommandsTrigger = () => {\n const { invokeSync } = useOperationInvoker();\n const { t } = useTranslation(meta.id);\n return (\n <Button\n classNames='m-1 pli-1 lg:pli-2'\n onClick={() => invokeSync(Common.LayoutOperation.UpdateDialog, { subject: COMMANDS_DIALOG, blockAlign: 'start' })}\n >\n <span className='text-description font-normal grow text-start'>{t('command list input placeholder')}</span>\n <Icon icon='ph--magnifying-glass--regular' size={5} />\n </Button>\n );\n};\n", "//\n// Copyright 2023 DXOS.org\n//\n\nimport { 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, 'inbound').find((n: Node.Node) => n.id === parentId) as\n | NavTreeItemGraphNode\n | 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, 'outbound')\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\nexport const l0ItemType = (item: Node.Node) => {\n if (Node.isActionLike(item)) {\n return 'action';\n } else {\n return 'tab';\n }\n};\n", "//\n// Copyright 2023 DXOS.org\n//\n\nimport { monitorForElements } from '@atlaskit/pragmatic-drag-and-drop/element/adapter';\nimport { type Instruction, extractInstruction } from '@atlaskit/pragmatic-drag-and-drop-hitbox/tree-item';\nimport React, { forwardRef, memo, useCallback, useEffect, useMemo } from 'react';\n\nimport { Common } from '@dxos/app-framework';\nimport { Surface, useAppGraph, useLayout, useOperationInvoker } from '@dxos/app-framework/react';\nimport { PLANK_COMPANION_TYPE } from '@dxos/plugin-deck/types';\nimport { Graph, Node, useActionRunner } from '@dxos/plugin-graph';\nimport { useConnections, useActions as useGraphActions } from '@dxos/plugin-graph';\nimport { useMediaQuery, useSidebars } from '@dxos/react-ui';\nimport { type TreeData, type TreeItemDataProps, isTreeData } from '@dxos/react-ui-list';\nimport { mx } from '@dxos/ui-theme';\nimport { arrayMove, byPosition } from '@dxos/util';\n\nimport { useIsAlternateTree, useIsCurrent, useIsOpen, useNavTreeState } from '../hooks';\nimport { meta } from '../meta';\nimport { type FlattenedActions, type NavTreeItemGraphNode } from '../types';\nimport { getChildren, getParent, resolveMigrationOperation } from '../util';\n\nimport { NAV_TREE_ITEM, NavTree } from './NavTree';\nimport { NavTreeContext } from './NavTreeContext';\nimport { type NavTreeContextValue } from './types';\n\n// TODO(thure): Is NavTree truly authoritative in this regard?\nexport const NODE_TYPE = 'dxos/app-graph/node';\n\nconst renderItemEnd = ({ node, open }: { node: Node.Node; open: boolean }) => (\n <Surface role='navtree-item-end' data={{ id: node.id, subject: node.data, open }} limit={1} />\n);\n\nconst getChildrenFilter = (node: Node.Node): node is Node.Node =>\n !Node.isActionLike(node) && node.type !== PLANK_COMPANION_TYPE && node.properties.disposition !== 'hidden';\n\nconst 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\nconst getItems = (graph: Graph.ReadableGraph, node?: Node.Node, disposition?: string) => {\n return Graph.getConnections(graph, node?.id ?? Node.RootId, 'outbound').filter((node) =>\n filterItems(node, disposition),\n );\n};\n\nconst useItems = (node?: Node.Node, options?: { disposition?: string; sort?: boolean }) => {\n const { graph } = useAppGraph();\n const connections = useConnections(graph, node?.id ?? Node.RootId);\n const filtered = connections.filter((node) => filterItems(node, options?.disposition));\n return options?.sort ? filtered.toSorted((a, b) => byPosition(a.properties, b.properties)) : filtered;\n};\n\nconst useActions = (node: Node.Node): FlattenedActions => {\n const { graph } = useAppGraph();\n const actions = useGraphActions(graph, node.id);\n\n return useMemo(\n () =>\n 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\nexport type NavTreeContainerProps = {\n popoverAnchorId?: string;\n topbar?: boolean;\n} & Pick<NavTreeContextValue, 'tab'>;\n\nexport const NavTreeContainer$ = forwardRef<HTMLDivElement, NavTreeContainerProps>(\n ({ tab, popoverAnchorId, topbar }, forwardedRef) => {\n const [isLg] = useMediaQuery('lg');\n const { invokeSync, invokePromise } = useOperationInvoker();\n const runAction = useActionRunner();\n const { graph } = useAppGraph();\n const { getItem, setItem } = useNavTreeState();\n const layout = useLayout();\n const { navigationSidebarState } = useSidebars(meta.id);\n\n const getProps = useCallback(\n (node: Node.Node, path: string[]): TreeItemDataProps => {\n const children = getChildren(graph, node, path).filter(getChildrenFilter);\n const parentOf =\n children.length > 0 ? children.map(({ id }) => id) : node.properties.role === 'branch' ? [] : undefined;\n return {\n id: node.id,\n parentOf,\n disabled: node.properties.disabled,\n label: node.properties.label ?? node.id,\n className: mx(node.properties.className, node.properties.modified && 'italic'), // TODO(burdon): Italic?\n headingClassName: node.properties.headingClassName,\n icon: node.properties.icon,\n iconHue: node.properties.iconHue,\n testId: node.properties.testId,\n };\n },\n [graph],\n );\n\n const loadDescendents = useCallback(\n (node: Node.Node) => {\n Graph.expand(graph, node.id, 'outbound');\n // Load one level deeper, which resolves some juddering observed on open/close.\n Graph.getConnections(graph, node.id, 'outbound').forEach((child) => {\n Graph.expand(graph, child.id, 'outbound');\n });\n },\n [graph],\n );\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, 'outbound');\n },\n [graph],\n );\n\n const handleTabChange = useCallback(\n (node: NavTreeItemGraphNode) => {\n invokeSync(Common.LayoutOperation.UpdateSidebar, {\n state:\n node.id === tab\n ? navigationSidebarState === 'expanded'\n ? isLg\n ? 'collapsed'\n : 'closed'\n : 'expanded'\n : 'expanded',\n });\n\n invokeSync(Common.LayoutOperation.SwitchWorkspace, { subject: node.id });\n\n // Open the first item if the workspace is empty.\n if (layout.active.length === 0) {\n const [item] = getItems(graph, node).filter((node) => !Node.isActionLike(node));\n if (item && item.data) {\n invokeSync(Common.LayoutOperation.Open, { subject: [item.id] });\n }\n }\n },\n [invokeSync, layout.active, tab, navigationSidebarState, isLg],\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, 'inbound');\n if (parent) {\n void runAction(node, { parent, caller: NAV_TREE_ITEM });\n }\n return;\n }\n\n const current = getItem(path).current;\n if (!current) {\n invokeSync(Common.LayoutOperation.Open, { subject: [node.id], key: node.properties.key });\n } else if (option) {\n invokeSync(Common.LayoutOperation.Close, { subject: [node.id] });\n } else {\n void invokePromise(Common.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 invokeSync(Common.LayoutOperation.UpdateSidebar, { state: 'closed' });\n }\n },\n [graph, invokeSync, invokePromise, getItem, isLg, runAction],\n );\n\n const handleBack = useCallback(() => invokeSync(Common.LayoutOperation.RevertWorkspace), [invokeSync]);\n\n // TODO(wittjosiah): Factor out hook.\n useEffect(() => {\n return monitorForElements({\n canMonitor: ({ source }) => isTreeData(source.data),\n onDrop: ({ location, source }) => {\n // Didn't drop on anything.\n if (!location.current.dropTargets.length) {\n return;\n }\n const target = location.current.dropTargets[0];\n const instruction: Instruction | null = extractInstruction(target.data);\n if (instruction !== null && instruction.type !== 'instruction-blocked') {\n const sourceNode = source.data.item as NavTreeItemGraphNode;\n const targetNode = target.data.item as NavTreeItemGraphNode;\n const sourcePath = source.data.path as string[];\n const targetPath = target.data.path as string[];\n const operation =\n sourcePath.slice(0, -1).join() === targetPath.slice(0, -1).join() && instruction.type !== 'make-child'\n ? 'rearrange'\n : resolveMigrationOperation(graph, sourceNode, targetPath, targetNode);\n const sourceParent = getParent(graph, sourceNode, sourcePath);\n const targetParent = getParent(graph, targetNode, targetPath);\n const sourceItems = getItems(graph, sourceParent);\n const targetItems = getItems(graph, targetParent);\n const sourceIndex = sourceItems.findIndex(({ id }) => id === sourceNode.id);\n const targetIndex = targetItems.findIndex(({ id }) => id === targetNode.id);\n const migrationIndex =\n instruction.type === 'make-child'\n ? undefined\n : instruction.type === 'reorder-below'\n ? targetIndex + 1\n : targetIndex;\n switch (operation) {\n case 'rearrange': {\n const nextItems = sourceItems.map(({ data }) => data);\n arrayMove(nextItems, sourceIndex, targetIndex);\n void 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 || !sourceParent?.properties.onTransferEnd) {\n break;\n }\n void target?.properties.onTransferStart(sourceNode, migrationIndex);\n void sourceParent?.properties.onTransferEnd?.(sourceNode, target);\n break;\n }\n }\n }\n },\n });\n }, [graph]);\n\n const setAlternateTree = useCallback(\n (path: string[], open: boolean) => {\n setItem(path, 'alternateTree', open);\n },\n [setItem],\n );\n\n const navTreeContextValue = useMemo(\n () => ({\n blockInstruction,\n canDrop,\n canSelect,\n getProps,\n useIsAlternateTree,\n useIsCurrent,\n useIsOpen,\n loadDescendents,\n onBack: handleBack,\n onOpenChange: handleOpenChange,\n onSelect: handleSelect,\n onTabChange: handleTabChange,\n popoverAnchorId,\n renderItemEnd,\n setAlternateTree,\n tab,\n topbar,\n useActions,\n useItems,\n }),\n [\n blockInstruction,\n canDrop,\n canSelect,\n getProps,\n handleBack,\n handleOpenChange,\n handleSelect,\n handleTabChange,\n loadDescendents,\n popoverAnchorId,\n renderItemEnd,\n setAlternateTree,\n tab,\n topbar,\n useActions,\n ],\n );\n\n return (\n <NavTreeContext.Provider value={navTreeContextValue}>\n <NavTree id={Node.RootId} root={Graph.getRoot(graph)} open={layout.sidebarOpen} ref={forwardedRef} />\n </NavTreeContext.Provider>\n );\n },\n);\n\nexport const NavTreeContainer = memo(NavTreeContainer$);\n", "//\n// Copyright 2025 DXOS.org\n//\n\nimport { type Atom, useAtomValue } from '@effect-atom/atom-react';\nimport { useEffect, useMemo } from 'react';\n\nimport { useCapability } from '@dxos/app-framework/react';\nimport { type Node } from '@dxos/app-graph';\n\nimport { useNavTreeContext } from './components';\nimport { NavTreeCapabilities } from './types';\n\nexport const useLoadDescendents = (root?: Node.Node) => {\n const { loadDescendents } = useNavTreeContext();\n useEffect(() => {\n const frame = requestAnimationFrame(() => {\n if (root) {\n void loadDescendents?.(root);\n }\n });\n return () => cancelAnimationFrame(frame);\n }, [root]);\n};\n\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 // Memoize the path to avoid creating new atoms on every render.\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 open state for a tree item.\n * Designed to be passed to Tree component as useIsOpen prop.\n */\nexport const useIsOpen = (path: string[], _item?: any): boolean => {\n return useNavTreeItemState(path).open;\n};\n\n/**\n * Hook that subscribes to the current state for a tree item.\n * Designed to be passed to Tree component as useIsCurrent prop.\n */\nexport const useIsCurrent = (path: string[], _item?: any): boolean => {\n return useNavTreeItemState(path).current;\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 2024 DXOS.org\n//\n\nimport React, { forwardRef, useMemo } from 'react';\n\nimport { type TreeProps } from '@dxos/react-ui-list';\nimport { Tabs } from '@dxos/react-ui-tabs';\n\nimport { useLoadDescendents } from '../../hooks';\nimport { type NavTreeItemGraphNode } from '../../types';\nimport { useNavTreeContext } from '../NavTreeContext';\nimport { L0Menu, L1Tabs, type L1TabsProps } from '../Sidebar';\n\nexport const NAV_TREE_ITEM = 'NavTreeItem';\n\nexport type NavTreeProps = Pick<TreeProps<NavTreeItemGraphNode>, 'id' | 'root'> & Pick<L1TabsProps, 'open'>;\n\nexport const NavTree = forwardRef<HTMLDivElement, NavTreeProps>(({ id, root, ...props }, forwardedRef) => {\n const { tab, useItems, onBack } = useNavTreeContext();\n const topLevelActions = useItems(root, { disposition: 'menu', sort: true });\n const topLevelWorkspaces = useItems(root, { disposition: 'workspace' });\n const l0Items = topLevelWorkspaces;\n const pinnedItems = useItems(root, { disposition: 'pin-end', sort: true });\n const userAccountItem = useItems(root, { disposition: 'user-account' })[0];\n const topLevelItems = useMemo(\n () => [\n // prettier-ignore\n ...l0Items,\n ...pinnedItems,\n ...(userAccountItem ? [userAccountItem] : []),\n ],\n [l0Items, pinnedItems, userAccountItem],\n );\n\n useLoadDescendents(root);\n const path = useMemo(() => [id], [id]);\n\n return (\n // 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' verticalVariant='stateless' 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 />\n <L1Tabs topLevelItems={topLevelItems} path={path} currentItemId={tab} onBack={onBack} {...props} />\n </Tabs.Root>\n );\n});\n", "//\n// Copyright 2025 DXOS.org\n//\n\nimport { createContext, useContext } from 'react';\n\nimport { raise } from '@dxos/debug';\n\nimport { type NavTreeContextValue } from './types';\n\nexport const NavTreeContext = createContext<NavTreeContextValue | null>(null);\n\nexport const useNavTreeContext = () => useContext(NavTreeContext) ?? raise(new Error('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 React, {\n type MouseEvent,\n type PropsWithChildren,\n forwardRef,\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 ListItem,\n ScrollArea,\n type ThemedClassName,\n Tooltip,\n toLocalizedString,\n useMediaQuery,\n useTranslation,\n} from '@dxos/react-ui';\nimport { DropdownMenu, type MenuItem, MenuProvider } 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};\n\ntype L0ItemProps = L0ItemRootProps & {\n item: Node.Node;\n parent?: Node.Node;\n path: string[];\n pinned?: boolean;\n onRearrange?: StackItemRearrangeHandler<L0ItemData>;\n};\n\nconst useL0ItemClick = ({ item, parent, path }: L0ItemProps, type: string) => {\n const { tab, 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, caller } : { parent });\n }\n\n case 'tab':\n return onTabChange?.(item);\n\n case 'link':\n return onSelect?.({ item, path, current: !getItem(path).current, option: event.altKey });\n }\n },\n [item, parent, type, tab, getItem, onSelect, onTabChange, isLg, runAction],\n );\n};\n\nconst l0Breakpoints: Record<string, string> = {\n lg: 'hidden lg:grid',\n};\n\nconst l0ItemRoot =\n 'group/l0item flex is-full justify-center items-center relative data[type!=\"collection\"]:cursor-pointer app-no-drag dx-focus-ring-group';\n\nconst l0ItemContent = 'flex justify-center items-center dx-focus-ring-group-indicator transition-colors rounded-sm';\n\nconst L0ItemRoot = forwardRef<HTMLElement, PropsWithChildren<L0ItemRootProps>>(\n ({ item, parent, path, children }, forwardedRef) => {\n const { getProps } = useNavTreeContext();\n const { id, testId } = getProps?.(item, path) ?? {};\n const type = l0ItemType(item);\n const itemPath = useMemo(() => [...path, item.id], [item.id, path]);\n\n const { t } = useTranslation(meta.id);\n const localizedString = toLocalizedString(item.properties.label, t);\n\n const handleClick = useL0ItemClick({ item, parent, path: itemPath }, type);\n const rootProps =\n type === 'tab'\n ? { value: item.id, tabIndex: 0, onClick: handleClick, 'data-testid': testId, 'data-object-id': id }\n : { onClick: handleClick, 'data-testid': testId, 'data-object-id': id };\n\n return (\n <Tooltip.Trigger asChild delayDuration={0} side='right' content={localizedString}>\n <Tabs.TabPrimitive\n {...(rootProps as any)}\n data-type={type}\n className={mx(l0ItemRoot, l0Breakpoints[item.properties.l0Breakpoint])}\n ref={forwardedRef}\n >\n {children}\n </Tabs.TabPrimitive>\n </Tooltip.Trigger>\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 inline-start-0 inset-block-2 is-1 bg-accentSurface rounded-ie',\n classNames,\n )}\n />\n);\n\n// TODO(burdon): Factor out pinned (non-draggable) items.\nconst L0Item = ({ item, parent, path, pinned, onRearrange }: L0ItemProps) => {\n const { t } = useTranslation(meta.id);\n const itemElement = useRef<HTMLElement | null>(null);\n const [closestEdge, setEdge] = useState<Edge | null>(null);\n const localizedString = toLocalizedString(item.properties.label, t);\n const hue = item.properties.hue ?? null;\n\n useLayoutEffect(() => {\n // NOTE(thure): This is copied from StackItem, perhaps this should be DRYed out.\n if (!itemElement.current || !onRearrange) {\n return;\n }\n\n return combine(\n draggable({\n element: itemElement.current,\n getInitialData: () => ({ id: item.id, type: 'l0Item' }) satisfies L0ItemData,\n onGenerateDragPreview: ({ nativeSetDragImage, source, location }) => {\n document.body.setAttribute('data-drag-preview', 'true');\n const element = source.element.querySelector('[data-frame]') as HTMLElement;\n scrollJustEnoughIntoView({ element });\n const { x, y } = preserveOffsetOnSource({ element, input: location.current.input })({\n container: (element.offsetParent ?? document.body) as HTMLElement,\n });\n nativeSetDragImage?.(element, x, y);\n },\n onDragStart: () => {\n document.body.removeAttribute('data-drag-preview');\n itemElement.current!.closest('[data-drag-autoscroll]')?.setAttribute('data-drag-autoscroll', 'active');\n },\n onDrop: () => {\n itemElement.current!.closest('[data-drag-autoscroll]')?.setAttribute('data-drag-autoscroll', 'idle');\n },\n }),\n dropTargetForElements({\n element: itemElement.current,\n getData: ({ input, element }) => {\n return attachClosestEdge(\n { id: item.id, type: 'l0Item' },\n { input, element, allowedEdges: ['top', 'bottom'] },\n );\n },\n onDragEnter: ({ self, source }) => {\n if (source.data.type === self.data.type) {\n setEdge(extractClosestEdge(self.data));\n }\n },\n onDrag: ({ self, source }) => {\n if (source.data.type === self.data.type) {\n setEdge(extractClosestEdge(self.data));\n }\n },\n onDragLeave: () => setEdge(null),\n onDrop: ({ self, source }) => {\n setEdge(null);\n if (source.data.type === self.data.type) {\n onRearrange(source.data as L0ItemData, self.data as L0ItemData, extractClosestEdge(self.data));\n }\n },\n }),\n );\n }, [item, onRearrange]);\n\n return (\n <L0ItemRoot ref={itemElement} item={item} parent={parent} path={path}>\n <div\n role='none'\n data-frame={true}\n {...(hue && { style: { background: `var(--dx-${hue}Surface)` } })}\n className={mx(\n l0ItemContent,\n pinned\n ? 'p-2 group-hover/l0item:bg-activeSurface'\n : 'is-[--l0-avatar-size] bs-[--l0-avatar-size] bg-activeSurface',\n )}\n >\n <ItemAvatar item={item} />\n </div>\n <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 const type = l0ItemType(item);\n if (item.properties.icon) {\n const hue = item.properties.hue ?? null;\n const hueFgStyle = hue && { style: { color: `var(--dx-${hue}SurfaceText)` } };\n return <Icon icon={item.properties.icon} size={6} {...hueFgStyle} />;\n }\n\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};\n\nexport const L0Menu = ({ menuActions, topLevelItems, pinnedItems, userAccountItem, parent, path }: 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 classNames={[\n 'group/l0 absolute z-[1] inset-block-0 inline-start-0 rounded-is',\n 'grid grid-cols-[var(--l0-size)] grid-rows-[var(--rail-size)_1fr_min-content_var(--l0-size)] contain-layout',\n '!is-[--l0-size] bg-baseSurface border-ie border-subduedSeparator app-drag pbe-[env(safe-area-inset-bottom)]',\n ]}\n >\n {/* TODO(wittjosiah): Use L0Item trigger. */}\n <MenuProvider onAction={handleAction}>\n <DropdownMenu.Root group={parent} items={menuActions}>\n <Tooltip.Trigger content={t('app menu label')} side='right' asChild>\n <Tabs.TabPrimitive value='options' asChild role='button'>\n <DropdownMenu.Trigger\n data-testid='spacePlugin.addSpace'\n className={mx(\n l0ItemRoot,\n 'grid place-items-center dx-focus-ring-group',\n '[body[data-platform=\"macos\"]_&]:mt-[30px]',\n )}\n >\n <div\n role='none'\n className={mx(\n l0ItemContent,\n 'is-[--rail-action] bs-[--rail-action] group-hover/l0item:bg-hoverSurface',\n )}\n >\n <Icon icon='ph--list--regular' size={5} />\n </div>\n </DropdownMenu.Trigger>\n </Tabs.TabPrimitive>\n </Tooltip.Trigger>\n </DropdownMenu.Root>\n </MenuProvider>\n\n {/* Space list. */}\n <ScrollArea.Root>\n <ScrollArea.Viewport>\n <div\n role='none'\n className={mx([\n 'flex flex-col gap-1 pbs-1',\n '[body[data-platform=\"macos\"]_&]:pbs-[30px]',\n '[body[data-platform=\"ios\"]_&]:pbs-[max(env(safe-area-inset-top),0.25rem)]',\n ])}\n >\n {topLevelItems.map((item) => (\n <L0Item\n key={item.id}\n item={item}\n parent={parent}\n path={path}\n {...(hasRearrangeableItems && { onRearrange: handleRearrange })}\n />\n ))}\n </div>\n <ScrollArea.Scrollbar orientation='vertical'>\n <ScrollArea.Thumb />\n </ScrollArea.Scrollbar>\n </ScrollArea.Viewport>\n </ScrollArea.Root>\n\n {/* Actions. */}\n <div role='none' className='grid grid-cols-1 auto-rows-[--rail-action] pbs-2'>\n {pinnedItems.map((item) => (\n <L0Item key={item.id} item={item} parent={parent} path={path} pinned />\n ))}\n </div>\n\n {userAccountItem && (\n <div role='none' className='grid app-no-drag'>\n <L0ItemRoot key={userAccountItem.id} item={userAccountItem} parent={parent} path={path}>\n <UserAccountAvatar\n userId={userAccountItem.properties.userId}\n hue={userAccountItem.properties.hue}\n emoji={userAccountItem.properties.emoji}\n status={userAccountItem.properties.status}\n size={10}\n />\n </L0ItemRoot>\n </div>\n )}\n </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-block-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 React, { useCallback, useMemo } from 'react';\n\nimport { type Node } from '@dxos/app-graph';\nimport { DensityProvider, IconButton, toLocalizedString, useTranslation } from '@dxos/react-ui';\nimport { Tree } from '@dxos/react-ui-list';\nimport { Tabs } from '@dxos/react-ui-tabs';\nimport { hoverableControlItem, hoverableOpenControlItem } from '@dxos/ui-theme';\n\nimport { useIsAlternateTree } from '../../hooks';\nimport { meta } from '../../meta';\nimport { useNavTreeContext } from '../NavTreeContext';\nimport { NavTreeItemColumns } from '../NavTreeItem';\n\nexport type L1PanelProps = {\n open?: boolean;\n path: string[];\n item: Node.Node;\n currentItemId: string;\n onBack?: () => void;\n};\n\n/**\n * Space or settings panel.\n */\nexport const L1Panel = ({ open, path, item, currentItemId, onBack }: L1PanelProps) => {\n const { t } = useTranslation(meta.id);\n const navTreeContext = useNavTreeContext();\n const title = toLocalizedString(item.properties.label, t);\n\n // TODO(wittjosiah): Support multiple alternate trees.\n const { useItems } = navTreeContext;\n const alternateTree = useItems(item, { disposition: 'alternate-tree' })[0];\n const alternatePath = useMemo(() => [...path, item.id], [item.id, path]);\n const isAlternate = useIsAlternateTree(alternatePath, item);\n const useAlternateItems = useCallback(\n (node?: Node.Node, { disposition }: { disposition?: string } = {}) => {\n // TODO(wittjosiah): Sorting is expensive, limit to necessary items for now.\n return useItems(node, { disposition, sort: node?.id === alternateTree.id });\n },\n [alternateTree, useItems],\n );\n\n return (\n <Tabs.Tabpanel\n key={item.id}\n value={item.id}\n classNames={[\n 'absolute inset-block-0 inline-end-0',\n 'is-[calc(100%-var(--l0-size))] lg:is-[--l1-size] grid-cols-1 grid-rows-[var(--rail-size)_1fr]',\n 'pbs-[env(safe-area-inset-top)]',\n item.id === currentItemId && 'grid',\n ]}\n tabIndex={-1}\n aria-label={title}\n {...(!open && { inert: true })}\n >\n {item.id === currentItemId && (\n <DensityProvider density='fine'>\n <L1PanelHeader path={path} item={item} currentItemId={currentItemId} onBack={onBack} />\n <div role='none' className='overflow-y-auto'>\n {isAlternate ? (\n <Tree\n {...navTreeContext}\n id={alternateTree.id}\n root={alternateTree}\n path={alternatePath}\n levelOffset={5}\n gridTemplateColumns='[tree-row-start] 1fr min-content min-content min-content [tree-row-end]'\n renderColumns={NavTreeItemColumns}\n useItems={useAlternateItems}\n />\n ) : (\n <Tree\n {...navTreeContext}\n id={item.id}\n root={item}\n path={path}\n levelOffset={5}\n gridTemplateColumns='[tree-row-start] 1fr min-content min-content min-content [tree-row-end]'\n renderColumns={NavTreeItemColumns}\n draggable\n />\n )}\n </div>\n </DensityProvider>\n )}\n </Tabs.Tabpanel>\n );\n};\n\n/**\n * Header row.\n */\nconst L1PanelHeader = ({ item, path, onBack }: L1PanelProps) => {\n const { t } = useTranslation(meta.id);\n const { setAlternateTree, ...navTreeContext } = useNavTreeContext();\n const title = toLocalizedString(item.properties.label, t);\n\n // TODO(wittjosiah): Support multiple alternate trees.\n const alternateTree = navTreeContext.useItems(item, { disposition: 'alternate-tree' })[0];\n const alternatePath = useMemo(() => [...path, item.id], [item.id, path]);\n const isAlternate = useIsAlternateTree(alternatePath, item);\n const backCapable = item.id.startsWith('!') || isAlternate;\n\n const handleOpen = useCallback(() => {\n setAlternateTree?.(alternatePath, true);\n }, [alternatePath, setAlternateTree]);\n\n const handleBack = useCallback(() => {\n if (isAlternate) {\n setAlternateTree?.(alternatePath, false);\n } else {\n onBack?.();\n }\n }, [isAlternate, alternatePath, setAlternateTree, onBack]);\n\n // TODO(burdon): Reuse same grid as tree?\n return (\n <div className='flex is-full items-center border-be border-subduedSeparator app-drag density-coarse'>\n <div className='is-6' />\n <h2 className='flex-1 truncate min-is-0'>{title}</h2>\n {(backCapable && (\n <IconButton\n data-testid='treeView.primaryTreeButton'\n variant='ghost'\n icon='ph--arrow-u-down-left--regular'\n iconOnly\n label={t('button back')}\n classNames={[hoverableControlItem, hoverableOpenControlItem, 'pointer-fine:pli-1']}\n onClick={handleBack}\n />\n )) ||\n (alternateTree && !isAlternate && (\n <IconButton\n data-testid='treeView.alternateTreeButton'\n variant='ghost'\n icon={alternateTree.properties.icon ?? 'ph--placeholder--regular'}\n iconOnly\n label={toLocalizedString(alternateTree.properties.label ?? alternateTree.id, t)}\n classNames={[hoverableControlItem, hoverableOpenControlItem, 'pointer-fine:pli-1']}\n onClick={handleOpen}\n />\n ))}\n <NavTreeItemColumns open path={path} item={item} density='coarse' />\n </div>\n );\n};\n", "//\n// Copyright 2023 DXOS.org\n//\n\nimport React 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 { DropdownMenu, type MenuItem, MenuProvider } from '@dxos/react-ui-menu';\nimport { hoverableControlItem, hoverableOpenControlItem } from '@dxos/ui-theme';\n\nimport { meta } from '../../meta';\nimport { type ActionProperties } from '../../types';\n\nexport type NavTreeItemActionMenuProps = ActionProperties & {\n parent: Node.Node;\n caller?: string;\n monolithic?: boolean;\n menuActions?: Node.Action[];\n};\n\nconst fallbackIcon = 'ph--placeholder--regular';\n\nconst fineActionButtonProps = {\n size: 4 as const,\n density: 'fine' as const,\n};\nconst coarseActionButtonProps = {\n size: 5 as const,\n density: 'coarse' as const,\n};\n\nexport const NavTreeItemActionDropdownMenu = ({\n parent,\n label,\n icon,\n testId,\n menuActions,\n caller,\n}: NavTreeItemActionMenuProps) => {\n const { t } = useTranslation(meta.id);\n const density = useDensityContext();\n const runAction = useActionRunner();\n\n return (\n <MenuProvider onAction={runAction}>\n <DropdownMenu.Root group={parent} items={menuActions as MenuItem[]} caller={caller}>\n <DropdownMenu.Trigger asChild>\n <IconButton\n {...(density === 'coarse' ? coarseActionButtonProps : fineActionButtonProps)}\n classNames={['shrink-0 pli-2 pointer-fine:pli-1', hoverableControlItem, hoverableOpenControlItem]}\n variant='ghost'\n icon={icon ?? fallbackIcon}\n iconOnly\n label={toLocalizedString(label, t)}\n data-testid={testId}\n />\n </DropdownMenu.Trigger>\n </DropdownMenu.Root>\n </MenuProvider>\n );\n};\n\nexport const NavTreeItemMonolithicAction = (\n props: Node.Action & { parent: Node.Node; onAction?: (action: Node.Action) => void; baseLabel: string },\n) => {\n const {\n parent,\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 ? 'pli-2 pointer-fine:pli-1' : 'p-2 pointer-fine:p-2 mie-1',\n ]}\n icon={icon ?? fallbackIcon}\n iconOnly={iconOnly}\n label={baseLabel}\n disabled={disabled}\n onClick={(event) => {\n event.stopPropagation();\n if (disabled) {\n return;\n }\n\n void runAction(props, caller ? { parent, caller } : { parent });\n }}\n data-testid={testId}\n />\n );\n};\n\nexport const NavTreeItemAction = ({ monolithic, menuActions, parent: node, ...props }: NavTreeItemActionMenuProps) => {\n const { t } = useTranslation(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} {...menuActions[0]} />\n ) : (\n <NavTreeItemActionDropdownMenu {...props} label={baseLabel} parent={node} menuActions={menuActions} />\n );\n};\n", "//\n// Copyright 2025 DXOS.org\n//\n\nimport React, { Fragment, memo } from 'react';\n\nimport { Node } from '@dxos/app-graph';\nimport { Popover, Treegrid, toLocalizedString, useTranslation } from '@dxos/react-ui';\n\nimport { useLoadDescendents } 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 { useActions, renderItemEnd: ItemEnd, popoverAnchorId } = useNavTreeContext();\n\n const level = path.length - 2;\n const { actions: _actions, groupedActions } = useActions(item);\n const [primaryAction, ...secondaryActions] = _actions.toSorted((a, _b) =>\n a.properties?.disposition === 'list-item-primary' ? -1 : 1,\n );\n\n const actions = (primaryAction?.properties?.disposition === 'list-item-primary' ? secondaryActions : _actions)\n .flatMap((action) => (Node.isAction(action) ? [action] : []))\n .filter((a) => ['list-item', 'list-item-primary'].includes(a.properties?.disposition));\n\n useLoadDescendents(item);\n useLoadDescendents(primaryAction && !Node.isAction(primaryAction) ? (primaryAction as Node.Node) : undefined);\n\n const ActionRoot = popoverAnchorId === `dxos.org/ui/${NAV_TREE_ITEM}/${item.id}` ? Popover.Anchor : Fragment;\n\n return (\n <div role='none' className='contents 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 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 </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 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' | 'currentItemId' | 'onBack'> & {\n path: string[];\n topLevelItems: Node.Node[];\n};\n\n/**\n * Each workspace is an L1 tab.\n */\nexport const L1Tabs = ({ topLevelItems, onBack, ...props }: L1TabsProps) => {\n return (\n <>\n {topLevelItems.map((item) => {\n const type = l0ItemType(item);\n if (type === 'tab') {\n return <L1Panel key={item.id} item={item} {...props} onBack={onBack} />;\n }\n return null;\n })}\n </>\n );\n};\n", "//\n// Copyright 2023 DXOS.org\n//\nimport { useEffect } from 'react';\n\nimport { type Node } from '@dxos/app-graph';\nimport { toLocalizedString, useTranslation } from '@dxos/react-ui';\nimport { osTranslations } from '@dxos/ui-theme';\n\nimport { meta } from '../meta';\n\nexport const NavTreeDocumentTitle = ({ node }: { node?: Node.Node }) => {\n const { t } = useTranslation(meta.id);\n useEffect(() => {\n document.title = node ? toLocalizedString(node.properties.label, t) : t('current app name', { ns: osTranslations });\n }, [node?.properties?.label]);\n return null;\n};\n"],
5
- "mappings": "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",
6
- "names": ["React", "forwardRef", "useMemo", "useState", "Common", "useAppGraph", "useOperationInvoker", "Keyboard", "keySymbols", "Graph", "Node", "useActionRunner", "useActions", "Button", "Dialog", "toLocalizedString", "useTranslation", "SearchList", "useSearchListResults", "osTranslations", "getHostPlatform", "CommandsDialogContent", "forwardRef", "selected", "initial", "forwardedRef", "t", "useTranslation", "meta", "id", "invokeSync", "useOperationInvoker", "runAction", "useActionRunner", "graph", "useAppGraph", "setSelected", "useState", "allActions", "useMemo", "current", "Keyboard", "singleton", "getCurrentContext", "actionMap", "Set", "actions", "Graph", "traverse", "visitor", "node", "path", "Node", "isAction", "isActionGroup", "has", "startsWith", "slice", "join", "add", "push", "sort", "a", "b", "toLocalizedString", "properties", "label", "toLowerCase", "localeCompare", "group", "find", "groupActions", "useActions", "results", "handleSearch", "useSearchListResults", "items", "extract", "action", "Dialog", "Content", "ref", "Title", "ns", "SearchList", "Root", "onSearch", "div", "aria-label", "role", "aria-expanded", "Input", "placeholder", "Viewport", "map", "shortcut", "keyBinding", "getHostPlatform", "Item", "value", "key", "icon", "suffix", "keySymbols", "undefined", "onSelect", "disabled", "Common", "LayoutOperation", "UpdateDialog", "state", "setTimeout", "getConnections", "parent", "caller", "KEY_BINDING", "classNames", "testId", "className", "Close", "asChild", "Button", "osTranslations", "React", "Common", "useOperationInvoker", "Button", "Icon", "useTranslation", "CommandsTrigger", "invokeSync", "useOperationInvoker", "t", "useTranslation", "meta", "id", "React", "Button", "classNames", "onClick", "Common", "LayoutOperation", "UpdateDialog", "subject", "COMMANDS_DIALOG", "blockAlign", "span", "className", "Icon", "icon", "size", "Graph", "Node", "isNonNullable", "getParent", "graph", "node", "path", "parentId", "length", "Graph", "getConnections", "id", "find", "n", "getPersistenceParent", "persistenceClass", "properties", "acceptPersistenceClass", "has", "parent", "slice", "resolveMigrationOperation", "activeNode", "destinationPath", "destinationRelatedNode", "activeClass", "persistenceParent", "activeKey", "persistenceKey", "acceptPersistenceKey", "onTransferStart", "onCopy", "sortActions", "actions", "sort", "a", "b", "disposition", "getChildren", "map", "nextPath", "includes", "undefined", "filter", "isNonNullable", "l0ItemType", "item", "Node", "isActionLike", "monitorForElements", "extractInstruction", "React", "forwardRef", "memo", "useCallback", "useEffect", "useMemo", "Common", "Surface", "useAppGraph", "useLayout", "useOperationInvoker", "PLANK_COMPANION_TYPE", "Graph", "Node", "useActionRunner", "useConnections", "useActions", "useGraphActions", "useMediaQuery", "useSidebars", "isTreeData", "mx", "arrayMove", "byPosition", "useAtomValue", "useEffect", "useMemo", "useCapability", "React", "forwardRef", "useMemo", "Tabs", "createContext", "useContext", "raise", "NavTreeContext", "createContext", "useNavTreeContext", "useContext", "raise", "Error", "combine", "draggable", "dropTargetForElements", "preserveOffsetOnSource", "scrollJustEnoughIntoView", "attachClosestEdge", "extractClosestEdge", "React", "forwardRef", "useCallback", "useLayoutEffect", "useMemo", "useRef", "useState", "DxAvatar", "useActionRunner", "Icon", "ListItem", "ScrollArea", "Tooltip", "toLocalizedString", "useMediaQuery", "useTranslation", "DropdownMenu", "MenuProvider", "Tabs", "mx", "arrayMove", "React", "Avatar", "hexToFallback", "UserAccountAvatar", "size", "userId", "hue", "emoji", "status", "fallbackValue", "hexToFallback", "React", "L0ItemActiveTabIndicator", "classNames", "div", "className", "data-joyride", "Avatar", "Root", "Content", "variant", "fallback", "data-testid", "useL0ItemClick", "item", "parent", "path", "type", "tab", "onSelect", "onTabChange", "useNavTreeContext", "getItem", "useNavTreeState", "isLg", "useMediaQuery", "runAction", "useActionRunner", "useCallback", "event", "properties", "caller", "current", "option", "altKey", "l0Breakpoints", "lg", "l0ItemRoot", "l0ItemContent", "L0ItemRoot", "forwardRef", "children", "forwardedRef", "getProps", "id", "testId", "l0ItemType", "itemPath", "useMemo", "t", "useTranslation", "meta", "localizedString", "toLocalizedString", "label", "handleClick", "rootProps", "value", "tabIndex", "onClick", "React", "Tooltip", "Trigger", "asChild", "delayDuration", "side", "content", "Tabs", "TabPrimitive", "data-type", "className", "mx", "l0Breakpoint", "ref", "L0ItemActiveTabIndicator", "classNames", "div", "role", "L0Item", "pinned", "onRearrange", "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", "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", "MenuProvider", "onAction", "DropdownMenu", "Root", "group", "items", "data-testid", "ScrollArea", "Viewport", "key", "Scrollbar", "orientation", "Thumb", "UserAccountAvatar", "userId", "emoji", "status", "React", "useCallback", "useMemo", "DensityProvider", "IconButton", "toLocalizedString", "useTranslation", "Tree", "Tabs", "hoverableControlItem", "hoverableOpenControlItem", "React", "useActionRunner", "IconButton", "toLocalizedString", "useDensityContext", "useTranslation", "DropdownMenu", "MenuProvider", "hoverableControlItem", "hoverableOpenControlItem", "fallbackIcon", "fineActionButtonProps", "size", "density", "coarseActionButtonProps", "NavTreeItemActionDropdownMenu", "parent", "label", "icon", "testId", "menuActions", "caller", "t", "useTranslation", "meta", "id", "useDensityContext", "runAction", "useActionRunner", "React", "MenuProvider", "onAction", "DropdownMenu", "Root", "group", "items", "Trigger", "asChild", "IconButton", "classNames", "hoverableControlItem", "hoverableOpenControlItem", "variant", "iconOnly", "toLocalizedString", "data-testid", "NavTreeItemMonolithicAction", "props", "properties", "disabled", "baseLabel", "onClick", "event", "stopPropagation", "NavTreeItemAction", "monolithic", "node", "monolithicAction", "length", "React", "Fragment", "memo", "Node", "Popover", "Treegrid", "toLocalizedString", "useTranslation", "NavTreeItemColumns", "memo", "path", "item", "open", "t", "useTranslation", "meta", "id", "useActions", "renderItemEnd", "ItemEnd", "popoverAnchorId", "useNavTreeContext", "level", "length", "actions", "_actions", "groupedActions", "primaryAction", "secondaryActions", "toSorted", "a", "_b", "properties", "disposition", "flatMap", "action", "Node", "isAction", "filter", "includes", "useLoadDescendents", "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", "currentItemId", "onBack", "t", "useTranslation", "meta", "id", "navTreeContext", "useNavTreeContext", "title", "toLocalizedString", "properties", "label", "useItems", "alternateTree", "disposition", "alternatePath", "useMemo", "isAlternate", "useIsAlternateTree", "useAlternateItems", "useCallback", "node", "sort", "React", "Tabs", "Tabpanel", "key", "value", "classNames", "tabIndex", "aria-label", "inert", "DensityProvider", "density", "L1PanelHeader", "div", "role", "className", "Tree", "root", "levelOffset", "gridTemplateColumns", "renderColumns", "NavTreeItemColumns", "draggable", "setAlternateTree", "backCapable", "startsWith", "handleOpen", "handleBack", "h2", "IconButton", "data-testid", "variant", "icon", "iconOnly", "hoverableControlItem", "hoverableOpenControlItem", "onClick", "React", "L1Tabs", "topLevelItems", "onBack", "props", "React", "map", "item", "type", "l0ItemType", "L1Panel", "key", "id", "NAV_TREE_ITEM", "NavTree", "forwardRef", "id", "root", "props", "forwardedRef", "tab", "useItems", "onBack", "useNavTreeContext", "topLevelActions", "disposition", "sort", "topLevelWorkspaces", "l0Items", "pinnedItems", "userAccountItem", "topLevelItems", "useMemo", "useLoadDescendents", "path", "React", "Tabs", "Root", "value", "orientation", "verticalVariant", "classNames", "ref", "L0Menu", "menuActions", "parent", "L1Tabs", "currentItemId", "useEffect", "toLocalizedString", "useTranslation", "osTranslations", "NavTreeDocumentTitle", "node", "t", "useTranslation", "meta", "id", "useEffect", "document", "title", "toLocalizedString", "properties", "label", "ns", "osTranslations", "useLoadDescendents", "root", "loadDescendents", "useNavTreeContext", "useEffect", "frame", "requestAnimationFrame", "cancelAnimationFrame", "useNavTreeState", "useCapability", "NavTreeCapabilities", "State", "useNavTreeItemState", "path", "getItemAtom", "pathKey", "useMemo", "join", "atom", "useAtomValue", "useIsOpen", "_item", "open", "useIsCurrent", "current", "useIsAlternateTree", "alternateTree", "NODE_TYPE", "renderItemEnd", "node", "open", "React", "Surface", "role", "data", "id", "subject", "limit", "getChildrenFilter", "Node", "isActionLike", "type", "PLANK_COMPANION_TYPE", "properties", "disposition", "filterItems", "action", "isAction", "getItems", "graph", "Graph", "getConnections", "RootId", "filter", "useItems", "options", "useAppGraph", "connections", "useConnections", "filtered", "sort", "toSorted", "a", "b", "byPosition", "useActions", "actions", "useGraphActions", "useMemo", "reduce", "acc", "arg", "push", "actionGroup", "getActions", "groupedActions", "NavTreeContainer$", "forwardRef", "tab", "popoverAnchorId", "topbar", "forwardedRef", "isLg", "useMediaQuery", "invokeSync", "invokePromise", "useOperationInvoker", "runAction", "useActionRunner", "getItem", "setItem", "useNavTreeState", "layout", "useLayout", "navigationSidebarState", "useSidebars", "meta", "getProps", "useCallback", "path", "children", "getChildren", "parentOf", "length", "map", "undefined", "disabled", "label", "className", "mx", "modified", "headingClassName", "icon", "iconHue", "testId", "loadDescendents", "expand", "forEach", "child", "handleOpenChange", "item", "handleTabChange", "Common", "LayoutOperation", "UpdateSidebar", "state", "SwitchWorkspace", "active", "Open", "blockInstruction", "instruction", "source", "target", "canDrop", "canSelect", "selectable", "handleSelect", "option", "parent", "caller", "NAV_TREE_ITEM", "current", "key", "Close", "ScrollIntoView", "defaultAction", "find", "handleBack", "RevertWorkspace", "useEffect", "monitorForElements", "canMonitor", "isTreeData", "onDrop", "location", "dropTargets", "extractInstruction", "sourceNode", "targetNode", "sourcePath", "targetPath", "operation", "slice", "join", "resolveMigrationOperation", "sourceParent", "getParent", "targetParent", "sourceItems", "targetItems", "sourceIndex", "findIndex", "targetIndex", "migrationIndex", "nextItems", "arrayMove", "onRearrange", "onCopy", "onTransferStart", "onTransferEnd", "setAlternateTree", "navTreeContextValue", "useIsAlternateTree", "useIsCurrent", "useIsOpen", "onBack", "onOpenChange", "onSelect", "onTabChange", "NavTreeContext", "Provider", "value", "NavTree", "root", "getRoot", "sidebarOpen", "ref", "NavTreeContainer", "memo"]
7
- }
@@ -1,23 +0,0 @@
1
- import {
2
- meta
3
- } from "./chunk-YKTYPINZ.mjs";
4
-
5
- // src/types/capabilities.ts
6
- import { Capability } from "@dxos/app-framework";
7
- (function(NavTreeCapabilities2) {
8
- NavTreeCapabilities2.State = Capability.make(`${meta.id}/capability/state`);
9
- })(NavTreeCapabilities || (NavTreeCapabilities = {}));
10
- var NavTreeCapabilities;
11
-
12
- // src/types/events.ts
13
- import { Common } from "@dxos/app-framework";
14
- (function(NavTreeEvents2) {
15
- NavTreeEvents2.StateReady = Common.ActivationEvent.createStateEvent(meta.id);
16
- })(NavTreeEvents || (NavTreeEvents = {}));
17
- var NavTreeEvents;
18
-
19
- export {
20
- NavTreeCapabilities,
21
- NavTreeEvents
22
- };
23
- //# sourceMappingURL=chunk-AGQDZBPL.mjs.map
@@ -1,7 +0,0 @@
1
- {
2
- "version": 3,
3
- "sources": ["../../../src/types/capabilities.ts", "../../../src/types/events.ts"],
4
- "sourcesContent": ["//\n// Copyright 2025 DXOS.org\n//\n\nimport { type Atom } from '@effect-atom/atom-react';\n\nimport { Capability } from '@dxos/app-framework';\n\nimport { meta } from '../meta';\n\nexport namespace NavTreeCapabilities {\n export type NavTreeItemState = { open: boolean; current: boolean; alternateTree?: boolean };\n\n export type NavTreeStateStore = {\n getItem: (path: string[]) => NavTreeItemState;\n getItemAtom: (path: string[]) => Atom.Atom<NavTreeItemState>;\n setItem: (path: string[], key: 'open' | 'current' | 'alternateTree', next: boolean) => void;\n };\n\n export const State = Capability.make<NavTreeStateStore>(`${meta.id}/capability/state`);\n}\n", "//\n// Copyright 2025 DXOS.org\n//\n\nimport { type ActivationEvent, Common } from '@dxos/app-framework';\n\nimport { meta } from '../meta';\n\nexport namespace NavTreeEvents {\n export const StateReady: ActivationEvent.ActivationEvent = Common.ActivationEvent.createStateEvent(meta.id);\n}\n"],
5
- "mappings": ";;;;;AAMA,SAASA,kBAAkB;UAIVC,sBAAAA;uBASFC,QAAQC,WAAWC,KAAwB,GAAGC,KAAKC,EAAE,mBAAmB;AACvF,GAViBL,wBAAAA,sBAAAA,CAAAA,EAAAA;;;;ACNjB,SAA+BM,cAAc;UAI5BC,gBAAAA;iBACFC,aAA8CC,OAAOC,gBAAgBC,iBAAiBC,KAAKC,EAAE;AAC5G,GAFiBN,kBAAAA,gBAAAA,CAAAA,EAAAA;;",
6
- "names": ["Capability", "NavTreeCapabilities", "State", "Capability", "make", "meta", "id", "Common", "NavTreeEvents", "StateReady", "Common", "ActivationEvent", "createStateEvent", "meta", "id"]
7
- }
@@ -1,19 +0,0 @@
1
- // src/meta.ts
2
- import { trim } from "@dxos/util";
3
- var meta = {
4
- id: "dxos.org/plugin/navtree",
5
- name: "Navtree",
6
- description: trim`
7
- Hierarchical navigation tree for browsing spaces, folders, and objects.
8
- Provides sidebar navigation with collapsible sections and quick access to workspace content.
9
- `
10
- };
11
- var KEY_BINDING = "KeyBinding";
12
- var COMMANDS_DIALOG = `${meta.id}/CommandsDialog`;
13
-
14
- export {
15
- meta,
16
- KEY_BINDING,
17
- COMMANDS_DIALOG
18
- };
19
- //# sourceMappingURL=chunk-YKTYPINZ.mjs.map
@@ -1,7 +0,0 @@
1
- {
2
- "version": 3,
3
- "sources": ["../../../src/meta.ts"],
4
- "sourcesContent": ["//\n// Copyright 2023 DXOS.org\n//\n\nimport { type Plugin } from '@dxos/app-framework';\nimport { trim } from '@dxos/util';\n\nexport const meta: Plugin.Meta = {\n id: 'dxos.org/plugin/navtree',\n name: 'Navtree',\n description: trim`\n Hierarchical navigation tree for browsing spaces, folders, and objects.\n Provides sidebar navigation with collapsible sections and quick access to workspace content.\n `,\n};\n\n// TODO(wittjosiah): Factor out.\nexport const KEY_BINDING = 'KeyBinding';\n// TODO(wittjosiah): Factor out.\nexport const COMMANDS_DIALOG = `${meta.id}/CommandsDialog`;\n"],
5
- "mappings": ";AAKA,SAASA,YAAY;AAEd,IAAMC,OAAoB;EAC/BC,IAAI;EACJC,MAAM;EACNC,aAAaC;;;;AAIf;AAGO,IAAMC,cAAc;AAEpB,IAAMC,kBAAkB,GAAGN,KAAKC,EAAE;",
6
- "names": ["trim", "meta", "id", "name", "description", "trim", "KEY_BINDING", "COMMANDS_DIALOG"]
7
- }
@@ -1,52 +0,0 @@
1
- import {
2
- KEY_BINDING
3
- } from "./chunk-YKTYPINZ.mjs";
4
-
5
- // src/capabilities/keyboard/keyboard.ts
6
- import * as Effect from "effect/Effect";
7
- import { Capability, Common } from "@dxos/app-framework";
8
- import { debounce } from "@dxos/async";
9
- import { Keyboard } from "@dxos/keyboard";
10
- import { Graph, Node, runAction } from "@dxos/plugin-graph";
11
- import { getHostPlatform } from "@dxos/util";
12
- var keyboard_default = Capability.makeModule(Effect.fnUntraced(function* () {
13
- const { graph } = yield* Capability.get(Common.Capability.AppGraph);
14
- const invoker = yield* Capability.get(Common.Capability.OperationInvoker);
15
- const pluginContext = yield* Capability.Service;
16
- const visitor = (node, path) => {
17
- let shortcut;
18
- if (typeof node.properties.keyBinding === "object") {
19
- const availablePlatforms = Object.keys(node.properties.keyBinding);
20
- const platform = getHostPlatform();
21
- shortcut = availablePlatforms.includes(platform) ? node.properties.keyBinding[platform] : platform === "ios" ? node.properties.keyBinding.macos : platform === "linux" || platform === "unknown" ? node.properties.keyBinding.windows : void 0;
22
- } else {
23
- shortcut = node.properties.keyBinding;
24
- }
25
- if (shortcut && Node.isAction(node)) {
26
- Keyboard.singleton.getContext(path.slice(0, -1).join("/")).bind({
27
- shortcut,
28
- handler: () => void runAction(invoker, pluginContext, node, {
29
- parent: node,
30
- caller: KEY_BINDING
31
- }),
32
- data: node.properties.label
33
- });
34
- }
35
- };
36
- const eventHandler = debounce(() => {
37
- Graph.traverse(graph, {
38
- visitor
39
- });
40
- }, 500);
41
- const unsubscribe = graph.onNodeChanged.on(eventHandler);
42
- Keyboard.singleton.initialize();
43
- Keyboard.singleton.setCurrentContext(Node.RootId);
44
- return Capability.contributes(Common.Capability.Null, null, () => Effect.sync(() => {
45
- unsubscribe();
46
- Keyboard.singleton.destroy();
47
- }));
48
- }));
49
- export {
50
- keyboard_default as default
51
- };
52
- //# sourceMappingURL=keyboard-32EH3N4K.mjs.map
@@ -1,7 +0,0 @@
1
- {
2
- "version": 3,
3
- "sources": ["../../../src/capabilities/keyboard/keyboard.ts"],
4
- "sourcesContent": ["//\n// Copyright 2025 DXOS.org\n//\n\nimport * as Effect from 'effect/Effect';\n\nimport { Capability, Common } from '@dxos/app-framework';\nimport { debounce } from '@dxos/async';\nimport { Keyboard } from '@dxos/keyboard';\nimport { Graph, Node, runAction } from '@dxos/plugin-graph';\nimport { getHostPlatform } from '@dxos/util';\n\nimport { KEY_BINDING } from '../../meta';\n\nexport default Capability.makeModule(\n Effect.fnUntraced(function* () {\n const { graph } = yield* Capability.get(Common.Capability.AppGraph);\n const invoker = yield* Capability.get(Common.Capability.OperationInvoker);\n const pluginContext = yield* Capability.Service;\n\n // TODO(wittjosiah): Factor out.\n // TODO(wittjosiah): Handle removal of actions.\n const visitor = (node: Node.Node, path: string[]) => {\n let shortcut: string | undefined;\n if (typeof node.properties.keyBinding === 'object') {\n const availablePlatforms = Object.keys(node.properties.keyBinding);\n const platform = getHostPlatform();\n shortcut = availablePlatforms.includes(platform)\n ? node.properties.keyBinding[platform]\n : platform === 'ios'\n ? node.properties.keyBinding.macos // Fallback to macos if ios-specific bindings not provided.\n : platform === 'linux' || platform === 'unknown'\n ? node.properties.keyBinding.windows // Fallback to windows if platform-specific bindings not provided.\n : undefined;\n } else {\n shortcut = node.properties.keyBinding;\n }\n\n if (shortcut && Node.isAction(node)) {\n Keyboard.singleton.getContext(path.slice(0, -1).join('/')).bind({\n shortcut,\n handler: () => void runAction(invoker, pluginContext, node, { parent: node, caller: KEY_BINDING }),\n data: node.properties.label,\n });\n }\n };\n\n const eventHandler = debounce(() => {\n Graph.traverse(graph, { visitor });\n }, 500);\n\n const unsubscribe = graph.onNodeChanged.on(eventHandler);\n\n // TODO(burdon): Create context and plugin.\n Keyboard.singleton.initialize();\n Keyboard.singleton.setCurrentContext(Node.RootId);\n\n return Capability.contributes(Common.Capability.Null, null, () =>\n Effect.sync(() => {\n unsubscribe();\n Keyboard.singleton.destroy();\n }),\n );\n }),\n);\n"],
5
- "mappings": ";;;;;AAIA,YAAYA,YAAY;AAExB,SAASC,YAAYC,cAAc;AACnC,SAASC,gBAAgB;AACzB,SAASC,gBAAgB;AACzB,SAASC,OAAOC,MAAMC,iBAAiB;AACvC,SAASC,uBAAuB;AAIhC,IAAA,mBAAeC,WAAWC,WACjBC,kBAAW,aAAA;AAChB,QAAM,EAAEC,MAAK,IAAK,OAAOH,WAAWI,IAAIC,OAAOL,WAAWM,QAAQ;AAClE,QAAMC,UAAU,OAAOP,WAAWI,IAAIC,OAAOL,WAAWQ,gBAAgB;AACxE,QAAMC,gBAAgB,OAAOT,WAAWU;AAIxC,QAAMC,UAAU,CAACC,MAAiBC,SAAAA;AAChC,QAAIC;AACJ,QAAI,OAAOF,KAAKG,WAAWC,eAAe,UAAU;AAClD,YAAMC,qBAAqBC,OAAOC,KAAKP,KAAKG,WAAWC,UAAU;AACjE,YAAMI,WAAWC,gBAAAA;AACjBP,iBAAWG,mBAAmBK,SAASF,QAAAA,IACnCR,KAAKG,WAAWC,WAAWI,QAAAA,IAC3BA,aAAa,QACXR,KAAKG,WAAWC,WAAWO,QAC3BH,aAAa,WAAWA,aAAa,YACnCR,KAAKG,WAAWC,WAAWQ,UAC3BC;IACV,OAAO;AACLX,iBAAWF,KAAKG,WAAWC;IAC7B;AAEA,QAAIF,YAAYY,KAAKC,SAASf,IAAAA,GAAO;AACnCgB,eAASC,UAAUC,WAAWjB,KAAKkB,MAAM,GAAG,EAAC,EAAGC,KAAK,GAAA,CAAA,EAAMC,KAAK;QAC9DnB;QACAoB,SAAS,MAAM,KAAKC,UAAU5B,SAASE,eAAeG,MAAM;UAAEwB,QAAQxB;UAAMyB,QAAQC;QAAY,CAAA;QAChGC,MAAM3B,KAAKG,WAAWyB;MACxB,CAAA;IACF;EACF;AAEA,QAAMC,eAAeC,SAAS,MAAA;AAC5BC,UAAMC,SAASzC,OAAO;MAAEQ;IAAQ,CAAA;EAClC,GAAG,GAAA;AAEH,QAAMkC,cAAc1C,MAAM2C,cAAcC,GAAGN,YAAAA;AAG3Cb,WAASC,UAAUmB,WAAU;AAC7BpB,WAASC,UAAUoB,kBAAkBvB,KAAKwB,MAAM;AAEhD,SAAOlD,WAAWmD,YAAY9C,OAAOL,WAAWoD,MAAM,MAAM,MACnDC,YAAK,MAAA;AACVR,gBAAAA;AACAjB,aAASC,UAAUyB,QAAO;EAC5B,CAAA,CAAA;AAEJ,CAAA,CAAA;",
6
- "names": ["Effect", "Capability", "Common", "debounce", "Keyboard", "Graph", "Node", "runAction", "getHostPlatform", "Capability", "makeModule", "fnUntraced", "graph", "get", "Common", "AppGraph", "invoker", "OperationInvoker", "pluginContext", "Service", "visitor", "node", "path", "shortcut", "properties", "keyBinding", "availablePlatforms", "Object", "keys", "platform", "getHostPlatform", "includes", "macos", "windows", "undefined", "Node", "isAction", "Keyboard", "singleton", "getContext", "slice", "join", "bind", "handler", "runAction", "parent", "caller", "KEY_BINDING", "data", "label", "eventHandler", "debounce", "Graph", "traverse", "unsubscribe", "onNodeChanged", "on", "initialize", "setCurrentContext", "RootId", "contributes", "Null", "sync", "destroy"]
7
- }
@@ -1,52 +0,0 @@
1
- import {
2
- NavTreeCapabilities
3
- } from "./chunk-AGQDZBPL.mjs";
4
- import "./chunk-YKTYPINZ.mjs";
5
-
6
- // src/capabilities/operation-resolver/operation-resolver.ts
7
- import * as Effect from "effect/Effect";
8
- import { Capability, Common } from "@dxos/app-framework";
9
- import { log } from "@dxos/log";
10
- import { OperationResolver } from "@dxos/operation";
11
- import { Graph } from "@dxos/plugin-graph";
12
- var __dxlog_file = "/__w/dxos/dxos/packages/plugins/plugin-navtree/src/capabilities/operation-resolver/operation-resolver.ts";
13
- var operation_resolver_default = Capability.makeModule(Effect.fnUntraced(function* () {
14
- return Capability.contributes(Common.Capability.OperationResolver, [
15
- OperationResolver.make({
16
- operation: Common.LayoutOperation.Expose,
17
- handler: Effect.fnUntraced(function* ({ subject }) {
18
- const { graph } = yield* Capability.get(Common.Capability.AppGraph);
19
- const { getItem, setItem } = yield* Capability.get(NavTreeCapabilities.State);
20
- yield* Effect.tryPromise(() => Graph.waitForPath(graph, {
21
- target: subject
22
- }, {
23
- timeout: 1e3
24
- })).pipe(Effect.andThen((path) => {
25
- [
26
- ...Array(path.length)
27
- ].forEach((_, index) => {
28
- const subpath = path.slice(0, index);
29
- const value = getItem(subpath);
30
- if (!value.open) {
31
- setItem(subpath, "open", true);
32
- }
33
- });
34
- }), Effect.catchAll(() => {
35
- log("Path to node not found", {
36
- subject
37
- }, {
38
- F: __dxlog_file,
39
- L: 33,
40
- S: this,
41
- C: (f, a) => f(...a)
42
- });
43
- return Effect.void;
44
- }));
45
- })
46
- })
47
- ]);
48
- }));
49
- export {
50
- operation_resolver_default as default
51
- };
52
- //# sourceMappingURL=operation-resolver-IB75DC5O.mjs.map
@@ -1,7 +0,0 @@
1
- {
2
- "version": 3,
3
- "sources": ["../../../src/capabilities/operation-resolver/operation-resolver.ts"],
4
- "sourcesContent": ["//\n// Copyright 2025 DXOS.org\n//\n\nimport * as Effect from 'effect/Effect';\n\nimport { Capability, Common } from '@dxos/app-framework';\nimport { log } from '@dxos/log';\nimport { OperationResolver } from '@dxos/operation';\nimport { Graph } from '@dxos/plugin-graph';\n\nimport { NavTreeCapabilities } from '../../types';\n\nexport default Capability.makeModule(\n Effect.fnUntraced(function* () {\n return Capability.contributes(Common.Capability.OperationResolver, [\n OperationResolver.make({\n operation: Common.LayoutOperation.Expose,\n handler: Effect.fnUntraced(function* ({ subject }) {\n const { graph } = yield* Capability.get(Common.Capability.AppGraph);\n const { getItem, setItem } = yield* Capability.get(NavTreeCapabilities.State);\n yield* Effect.tryPromise(() => Graph.waitForPath(graph, { target: subject }, { timeout: 1_000 })).pipe(\n Effect.andThen((path) => {\n [...Array(path.length)].forEach((_, index) => {\n const subpath = path.slice(0, index);\n const value = getItem(subpath);\n if (!value.open) {\n setItem(subpath, 'open', true);\n }\n });\n }),\n Effect.catchAll(() => {\n log('Path to node not found', { subject });\n return Effect.void;\n }),\n );\n }),\n }),\n ]);\n }),\n);\n"],
5
- "mappings": ";;;;;;AAIA,YAAYA,YAAY;AAExB,SAASC,YAAYC,cAAc;AACnC,SAASC,WAAW;AACpB,SAASC,yBAAyB;AAClC,SAASC,aAAa;;AAItB,IAAA,6BAAeC,WAAWC,WACjBC,kBAAW,aAAA;AAChB,SAAOF,WAAWG,YAAYC,OAAOJ,WAAWK,mBAAmB;IACjEA,kBAAkBC,KAAK;MACrBC,WAAWH,OAAOI,gBAAgBC;MAClCC,SAAgBR,kBAAW,WAAW,EAAES,QAAO,GAAE;AAC/C,cAAM,EAAEC,MAAK,IAAK,OAAOZ,WAAWa,IAAIT,OAAOJ,WAAWc,QAAQ;AAClE,cAAM,EAAEC,SAASC,QAAO,IAAK,OAAOhB,WAAWa,IAAII,oBAAoBC,KAAK;AAC5E,eAAcC,kBAAW,MAAMC,MAAMC,YAAYT,OAAO;UAAEU,QAAQX;QAAQ,GAAG;UAAEY,SAAS;QAAM,CAAA,CAAA,EAAIC,KACzFC,eAAQ,CAACC,SAAAA;AACd;eAAIC,MAAMD,KAAKE,MAAM;YAAGC,QAAQ,CAACC,GAAGC,UAAAA;AAClC,kBAAMC,UAAUN,KAAKO,MAAM,GAAGF,KAAAA;AAC9B,kBAAMG,QAAQnB,QAAQiB,OAAAA;AACtB,gBAAI,CAACE,MAAMC,MAAM;AACfnB,sBAAQgB,SAAS,QAAQ,IAAA;YAC3B;UACF,CAAA;QACF,CAAA,GACOI,gBAAS,MAAA;AACdC,cAAI,0BAA0B;YAAE1B;UAAQ,GAAA;;;;;;AACxC,iBAAc2B;QAChB,CAAA,CAAA;MAEJ,CAAA;IACF,CAAA;GACD;AACH,CAAA,CAAA;",
6
- "names": ["Effect", "Capability", "Common", "log", "OperationResolver", "Graph", "Capability", "makeModule", "fnUntraced", "contributes", "Common", "OperationResolver", "make", "operation", "LayoutOperation", "Expose", "handler", "subject", "graph", "get", "AppGraph", "getItem", "setItem", "NavTreeCapabilities", "State", "tryPromise", "Graph", "waitForPath", "target", "timeout", "pipe", "andThen", "path", "Array", "length", "forEach", "_", "index", "subpath", "slice", "value", "open", "catchAll", "log", "void"]
7
- }
@@ -1,58 +0,0 @@
1
- import {
2
- CommandsDialogContent,
3
- CommandsTrigger,
4
- NavTreeContainer,
5
- NavTreeDocumentTitle
6
- } from "./chunk-6YPQ625I.mjs";
7
- import "./chunk-AGQDZBPL.mjs";
8
- import {
9
- COMMANDS_DIALOG,
10
- meta
11
- } from "./chunk-YKTYPINZ.mjs";
12
-
13
- // src/capabilities/react-surface/react-surface.tsx
14
- import * as Effect from "effect/Effect";
15
- import React from "react";
16
- import { Capability, Common } from "@dxos/app-framework";
17
- import { Node } from "@dxos/plugin-graph";
18
- var react_surface_default = Capability.makeModule(() => Effect.succeed(Capability.contributes(Common.Capability.ReactSurface, [
19
- Common.createSurface({
20
- id: COMMANDS_DIALOG,
21
- role: "dialog",
22
- filter: (data) => data.component === COMMANDS_DIALOG,
23
- component: ({ data, ref }) => /* @__PURE__ */ React.createElement(CommandsDialogContent, {
24
- ...data.props,
25
- ref
26
- })
27
- }),
28
- Common.createSurface({
29
- id: `${meta.id}/navigation`,
30
- role: "navigation",
31
- filter: (data) => typeof data.current === "string",
32
- component: ({ data, ref }) => {
33
- return /* @__PURE__ */ React.createElement(NavTreeContainer, {
34
- tab: data.current,
35
- popoverAnchorId: data.popoverAnchorId,
36
- topbar: data.topbar,
37
- ref
38
- });
39
- }
40
- }),
41
- Common.createSurface({
42
- id: `${meta.id}/document-title`,
43
- role: "document-title",
44
- component: ({ data }) => /* @__PURE__ */ React.createElement(NavTreeDocumentTitle, {
45
- node: Node.isGraphNode(data.subject) ? data.subject : void 0
46
- })
47
- }),
48
- Common.createSurface({
49
- id: `${meta.id}/search-input`,
50
- role: "search-input",
51
- position: "fallback",
52
- component: () => /* @__PURE__ */ React.createElement(CommandsTrigger, null)
53
- })
54
- ])));
55
- export {
56
- react_surface_default as default
57
- };
58
- //# sourceMappingURL=react-surface-F6CVMS3Y.mjs.map
@@ -1,7 +0,0 @@
1
- {
2
- "version": 3,
3
- "sources": ["../../../src/capabilities/react-surface/react-surface.tsx"],
4
- "sourcesContent": ["//\n// Copyright 2025 DXOS.org\n//\n\nimport * as Effect from 'effect/Effect';\nimport React from 'react';\n\nimport { Capability, Common } from '@dxos/app-framework';\nimport { Node } from '@dxos/plugin-graph';\n\nimport { CommandsDialogContent, CommandsTrigger, NavTreeContainer, NavTreeDocumentTitle } from '../../components';\nimport { COMMANDS_DIALOG, meta } from '../../meta';\n\nexport default Capability.makeModule(() =>\n Effect.succeed(\n Capability.contributes(Common.Capability.ReactSurface, [\n Common.createSurface({\n id: COMMANDS_DIALOG,\n role: 'dialog',\n filter: (data): data is { props: { selected?: string } } => data.component === COMMANDS_DIALOG,\n component: ({ data, ref }) => <CommandsDialogContent {...data.props} ref={ref} />,\n }),\n Common.createSurface({\n id: `${meta.id}/navigation`,\n role: 'navigation',\n filter: (data): data is { popoverAnchorId?: string; topbar: boolean; current: string } =>\n typeof data.current === 'string',\n component: ({ data, ref }) => {\n return (\n <NavTreeContainer\n tab={data.current}\n popoverAnchorId={data.popoverAnchorId as string | undefined}\n topbar={data.topbar as boolean}\n ref={ref}\n />\n );\n },\n }),\n Common.createSurface({\n id: `${meta.id}/document-title`,\n role: 'document-title',\n component: ({ data }) => (\n <NavTreeDocumentTitle node={Node.isGraphNode(data.subject) ? data.subject : undefined} />\n ),\n }),\n Common.createSurface({\n id: `${meta.id}/search-input`,\n role: 'search-input',\n position: 'fallback',\n component: () => <CommandsTrigger />,\n }),\n ]),\n ),\n);\n"],
5
- "mappings": ";;;;;;;;;;;;;AAIA,YAAYA,YAAY;AACxB,OAAOC,WAAW;AAElB,SAASC,YAAYC,cAAc;AACnC,SAASC,YAAY;AAKrB,IAAA,wBAAeC,WAAWC,WAAW,MAC5BC,eACLF,WAAWG,YAAYC,OAAOJ,WAAWK,cAAc;EACrDD,OAAOE,cAAc;IACnBC,IAAIC;IACJC,MAAM;IACNC,QAAQ,CAACC,SAAmDA,KAAKC,cAAcJ;IAC/EI,WAAW,CAAC,EAAED,MAAME,IAAG,MAAO,sBAAA,cAACC,uBAAAA;MAAuB,GAAGH,KAAKI;MAAOF;;EACvE,CAAA;EACAT,OAAOE,cAAc;IACnBC,IAAI,GAAGS,KAAKT,EAAE;IACdE,MAAM;IACNC,QAAQ,CAACC,SACP,OAAOA,KAAKM,YAAY;IAC1BL,WAAW,CAAC,EAAED,MAAME,IAAG,MAAE;AACvB,aACE,sBAAA,cAACK,kBAAAA;QACCC,KAAKR,KAAKM;QACVG,iBAAiBT,KAAKS;QACtBC,QAAQV,KAAKU;QACbR;;IAGN;EACF,CAAA;EACAT,OAAOE,cAAc;IACnBC,IAAI,GAAGS,KAAKT,EAAE;IACdE,MAAM;IACNG,WAAW,CAAC,EAAED,KAAI,MAChB,sBAAA,cAACW,sBAAAA;MAAqBC,MAAMC,KAAKC,YAAYd,KAAKe,OAAO,IAAIf,KAAKe,UAAUC;;EAEhF,CAAA;EACAvB,OAAOE,cAAc;IACnBC,IAAI,GAAGS,KAAKT,EAAE;IACdE,MAAM;IACNmB,UAAU;IACVhB,WAAW,MAAM,sBAAA,cAACiB,iBAAAA,IAAAA;EACpB,CAAA;CACD,CAAA,CAAA;",
6
- "names": ["Effect", "React", "Capability", "Common", "Node", "Capability", "makeModule", "succeed", "contributes", "Common", "ReactSurface", "createSurface", "id", "COMMANDS_DIALOG", "role", "filter", "data", "component", "ref", "CommandsDialogContent", "props", "meta", "current", "NavTreeContainer", "tab", "popoverAnchorId", "topbar", "NavTreeDocumentTitle", "node", "Node", "isGraphNode", "subject", "undefined", "position", "CommandsTrigger"]
7
- }