@dxos/plugin-navtree 0.8.4-main.b97322e → 0.8.4-main.bcb3aa67d6

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 (202) hide show
  1. package/dist/lib/browser/index.mjs +168 -115
  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 +2 -1
  5. package/dist/types/src/NavTreePlugin.d.ts.map +1 -1
  6. package/dist/types/src/capabilities/app-graph-builder.d.ts +4 -2
  7. package/dist/types/src/capabilities/app-graph-builder.d.ts.map +1 -1
  8. package/dist/types/src/capabilities/index.d.ts +7 -105
  9. package/dist/types/src/capabilities/index.d.ts.map +1 -1
  10. package/dist/types/src/capabilities/keyboard.d.ts +3 -2
  11. package/dist/types/src/capabilities/keyboard.d.ts.map +1 -1
  12. package/dist/types/src/capabilities/operation-handler.d.ts +6 -0
  13. package/dist/types/src/capabilities/operation-handler.d.ts.map +1 -0
  14. package/dist/types/src/capabilities/react-surface.d.ts +3 -2
  15. package/dist/types/src/capabilities/react-surface.d.ts.map +1 -1
  16. package/dist/types/src/capabilities/state.d.ts +4 -18
  17. package/dist/types/src/capabilities/state.d.ts.map +1 -1
  18. package/dist/types/src/components/NavTree/NavTree.d.ts +12 -5
  19. package/dist/types/src/components/NavTree/NavTree.d.ts.map +1 -1
  20. package/dist/types/src/components/NavTree/NavTree.stories.d.ts +26 -5
  21. package/dist/types/src/components/NavTree/NavTree.stories.d.ts.map +1 -1
  22. package/dist/types/src/components/{NavTreeContext.d.ts → NavTreeContext/NavTreeContext.d.ts} +1 -1
  23. package/dist/types/src/components/NavTreeContext/NavTreeContext.d.ts.map +1 -0
  24. package/dist/types/src/components/NavTreeContext/index.d.ts +2 -0
  25. package/dist/types/src/components/NavTreeContext/index.d.ts.map +1 -0
  26. package/dist/types/src/components/NavTreeItem/NavTreeItemAction.d.ts +17 -9
  27. package/dist/types/src/components/NavTreeItem/NavTreeItemAction.d.ts.map +1 -1
  28. package/dist/types/src/components/NavTreeItem/NavTreeItemAction.stories.d.ts +33 -4
  29. package/dist/types/src/components/NavTreeItem/NavTreeItemAction.stories.d.ts.map +1 -1
  30. package/dist/types/src/components/NavTreeItem/NavTreeItemColumns.d.ts +2 -2
  31. package/dist/types/src/components/NavTreeItem/NavTreeItemColumns.d.ts.map +1 -1
  32. package/dist/types/src/components/Sidebar/L0Menu.d.ts +10 -5
  33. package/dist/types/src/components/Sidebar/L0Menu.d.ts.map +1 -1
  34. package/dist/types/src/components/Sidebar/L1Panel.d.ts +4 -8
  35. package/dist/types/src/components/Sidebar/L1Panel.d.ts.map +1 -1
  36. package/dist/types/src/components/Sidebar/L1Tabs.d.ts +13 -0
  37. package/dist/types/src/components/Sidebar/L1Tabs.d.ts.map +1 -0
  38. package/dist/types/src/components/Sidebar/index.d.ts +1 -0
  39. package/dist/types/src/components/Sidebar/index.d.ts.map +1 -1
  40. package/dist/types/src/components/UserAccountAvatar/UserAccountAvatar.d.ts.map +1 -1
  41. package/dist/types/src/components/UserAccountAvatar/UserAccountAvatar.stories.d.ts +8 -5
  42. package/dist/types/src/components/UserAccountAvatar/UserAccountAvatar.stories.d.ts.map +1 -1
  43. package/dist/types/src/components/index.d.ts +0 -3
  44. package/dist/types/src/components/index.d.ts.map +1 -1
  45. package/dist/types/src/components/types.d.ts +8 -16
  46. package/dist/types/src/components/types.d.ts.map +1 -1
  47. package/dist/types/src/containers/CommandsDialogContent/CommandsDialogContent.d.ts +6 -0
  48. package/dist/types/src/containers/CommandsDialogContent/CommandsDialogContent.d.ts.map +1 -0
  49. package/dist/types/src/containers/CommandsDialogContent/CommandsDialogContent.stories.d.ts +29 -0
  50. package/dist/types/src/containers/CommandsDialogContent/CommandsDialogContent.stories.d.ts.map +1 -0
  51. package/dist/types/src/containers/CommandsDialogContent/index.d.ts +3 -0
  52. package/dist/types/src/containers/CommandsDialogContent/index.d.ts.map +1 -0
  53. package/dist/types/src/containers/CommandsTrigger/CommandsTrigger.d.ts.map +1 -0
  54. package/dist/types/src/containers/CommandsTrigger/index.d.ts +3 -0
  55. package/dist/types/src/containers/CommandsTrigger/index.d.ts.map +1 -0
  56. package/dist/types/src/containers/NavTreeContainer/NavTreeContainer.d.ts +9 -0
  57. package/dist/types/src/containers/NavTreeContainer/NavTreeContainer.d.ts.map +1 -0
  58. package/dist/types/src/containers/NavTreeContainer/index.d.ts +3 -0
  59. package/dist/types/src/containers/NavTreeContainer/index.d.ts.map +1 -0
  60. package/dist/types/src/{components → containers/NavTreeDocumentTitle}/NavTreeDocumentTitle.d.ts +1 -1
  61. package/dist/types/src/containers/NavTreeDocumentTitle/NavTreeDocumentTitle.d.ts.map +1 -0
  62. package/dist/types/src/containers/NavTreeDocumentTitle/index.d.ts +3 -0
  63. package/dist/types/src/containers/NavTreeDocumentTitle/index.d.ts.map +1 -0
  64. package/dist/types/src/containers/index.d.ts +7 -0
  65. package/dist/types/src/containers/index.d.ts.map +1 -0
  66. package/dist/types/src/experimental/Tree.d.ts +1 -2
  67. package/dist/types/src/experimental/Tree.d.ts.map +1 -1
  68. package/dist/types/src/experimental/Tree.stories.d.ts +23 -6
  69. package/dist/types/src/experimental/Tree.stories.d.ts.map +1 -1
  70. package/dist/types/src/hooks/index.d.ts +5 -0
  71. package/dist/types/src/hooks/index.d.ts.map +1 -0
  72. package/dist/types/src/hooks/useActions.d.ts +5 -0
  73. package/dist/types/src/hooks/useActions.d.ts.map +1 -0
  74. package/dist/types/src/hooks/useLoadDescendents.d.ts +6 -0
  75. package/dist/types/src/hooks/useLoadDescendents.d.ts.map +1 -0
  76. package/dist/types/src/hooks/useNavTreeModel.d.ts +7 -0
  77. package/dist/types/src/hooks/useNavTreeModel.d.ts.map +1 -0
  78. package/dist/types/src/hooks/useNavTreeState.d.ts +22 -0
  79. package/dist/types/src/hooks/useNavTreeState.d.ts.map +1 -0
  80. package/dist/types/src/index.d.ts +1 -2
  81. package/dist/types/src/index.d.ts.map +1 -1
  82. package/dist/types/src/meta.d.ts +3 -4
  83. package/dist/types/src/meta.d.ts.map +1 -1
  84. package/dist/types/src/operations/expose.d.ts +5 -0
  85. package/dist/types/src/operations/expose.d.ts.map +1 -0
  86. package/dist/types/src/operations/index.d.ts +3 -0
  87. package/dist/types/src/operations/index.d.ts.map +1 -0
  88. package/dist/types/src/testing/app-graph-builder.d.ts +2 -3
  89. package/dist/types/src/testing/app-graph-builder.d.ts.map +1 -1
  90. package/dist/types/src/testing/generator.d.ts +5 -6
  91. package/dist/types/src/testing/generator.d.ts.map +1 -1
  92. package/dist/types/src/testing/update-state.d.ts +2 -2
  93. package/dist/types/src/testing/update-state.d.ts.map +1 -1
  94. package/dist/types/src/translations.d.ts +9 -9
  95. package/dist/types/src/translations.d.ts.map +1 -1
  96. package/dist/types/src/types/capabilities.d.ts +16 -0
  97. package/dist/types/src/types/capabilities.d.ts.map +1 -0
  98. package/dist/types/src/types/events.d.ts +5 -0
  99. package/dist/types/src/types/events.d.ts.map +1 -0
  100. package/dist/types/src/types/index.d.ts +4 -0
  101. package/dist/types/src/types/index.d.ts.map +1 -0
  102. package/dist/types/src/{types.d.ts → types/schema.d.ts} +10 -9
  103. package/dist/types/src/types/schema.d.ts.map +1 -0
  104. package/dist/types/src/util.d.ts +12 -9
  105. package/dist/types/src/util.d.ts.map +1 -1
  106. package/dist/types/tsconfig.tsbuildinfo +1 -1
  107. package/package.json +67 -54
  108. package/src/NavTreePlugin.tsx +65 -84
  109. package/src/capabilities/app-graph-builder.ts +34 -44
  110. package/src/capabilities/index.ts +10 -8
  111. package/src/capabilities/keyboard.ts +58 -51
  112. package/src/capabilities/operation-handler.ts +16 -0
  113. package/src/capabilities/react-surface.tsx +45 -37
  114. package/src/capabilities/state.ts +129 -84
  115. package/src/components/NavTree/NavTree.stories.tsx +106 -99
  116. package/src/components/NavTree/NavTree.tsx +70 -35
  117. package/src/components/{NavTreeContext.tsx → NavTreeContext/NavTreeContext.tsx} +1 -1
  118. package/src/components/NavTreeContext/index.ts +5 -0
  119. package/src/components/NavTreeItem/NavTreeItemAction.stories.tsx +19 -13
  120. package/src/components/NavTreeItem/NavTreeItemAction.tsx +71 -47
  121. package/src/components/NavTreeItem/NavTreeItemColumns.tsx +70 -38
  122. package/src/components/Sidebar/L0Menu.tsx +171 -206
  123. package/src/components/Sidebar/L1Panel.tsx +270 -135
  124. package/src/components/Sidebar/L1Tabs.tsx +43 -0
  125. package/src/components/Sidebar/index.ts +1 -0
  126. package/src/components/UserAccountAvatar/UserAccountAvatar.stories.tsx +9 -9
  127. package/src/components/UserAccountAvatar/UserAccountAvatar.tsx +20 -12
  128. package/src/components/index.ts +1 -3
  129. package/src/components/types.ts +15 -19
  130. package/src/containers/CommandsDialogContent/CommandsDialogContent.stories.tsx +46 -0
  131. package/src/containers/CommandsDialogContent/CommandsDialogContent.tsx +131 -0
  132. package/src/containers/CommandsDialogContent/index.ts +7 -0
  133. package/src/containers/CommandsTrigger/CommandsTrigger.tsx +28 -0
  134. package/src/containers/CommandsTrigger/index.ts +7 -0
  135. package/src/containers/NavTreeContainer/NavTreeContainer.tsx +271 -0
  136. package/src/containers/NavTreeContainer/index.ts +6 -0
  137. package/src/{components → containers/NavTreeDocumentTitle}/NavTreeDocumentTitle.tsx +5 -4
  138. package/src/containers/NavTreeDocumentTitle/index.ts +7 -0
  139. package/src/containers/index.ts +12 -0
  140. package/src/experimental/Tree.stories.tsx +78 -83
  141. package/src/experimental/Tree.tsx +6 -23
  142. package/src/hooks/index.ts +8 -0
  143. package/src/hooks/useActions.ts +34 -0
  144. package/src/hooks/useLoadDescendents.ts +23 -0
  145. package/src/hooks/useNavTreeModel.ts +118 -0
  146. package/src/hooks/useNavTreeState.ts +42 -0
  147. package/src/index.ts +1 -2
  148. package/src/meta.ts +11 -8
  149. package/src/operations/expose.ts +42 -0
  150. package/src/operations/index.ts +7 -0
  151. package/src/testing/app-graph-builder.ts +166 -237
  152. package/src/testing/generator.ts +20 -18
  153. package/src/testing/update-state.ts +6 -6
  154. package/src/translations.ts +9 -9
  155. package/src/types/capabilities.ts +21 -0
  156. package/src/types/events.ts +12 -0
  157. package/src/types/index.ts +7 -0
  158. package/src/{types.ts → types/schema.ts} +9 -8
  159. package/src/util.ts +26 -33
  160. package/dist/lib/browser/app-graph-builder-5J4LRWDX.mjs +0 -45
  161. package/dist/lib/browser/app-graph-builder-5J4LRWDX.mjs.map +0 -7
  162. package/dist/lib/browser/chunk-ERDGQTH5.mjs +0 -16
  163. package/dist/lib/browser/chunk-ERDGQTH5.mjs.map +0 -7
  164. package/dist/lib/browser/chunk-SICQTLXC.mjs +0 -1442
  165. package/dist/lib/browser/chunk-SICQTLXC.mjs.map +0 -7
  166. package/dist/lib/browser/chunk-WCARAZ7J.mjs +0 -15
  167. package/dist/lib/browser/chunk-WCARAZ7J.mjs.map +0 -7
  168. package/dist/lib/browser/intent-resolver-3XYN2CBU.mjs +0 -47
  169. package/dist/lib/browser/intent-resolver-3XYN2CBU.mjs.map +0 -7
  170. package/dist/lib/browser/keyboard-QRS6WOQH.mjs +0 -51
  171. package/dist/lib/browser/keyboard-QRS6WOQH.mjs.map +0 -7
  172. package/dist/lib/browser/react-surface-WURHCBQQ.mjs +0 -51
  173. package/dist/lib/browser/react-surface-WURHCBQQ.mjs.map +0 -7
  174. package/dist/lib/browser/state-54DY3DOY.mjs +0 -117
  175. package/dist/lib/browser/state-54DY3DOY.mjs.map +0 -7
  176. package/dist/types/src/capabilities/capabilities.d.ts +0 -21
  177. package/dist/types/src/capabilities/capabilities.d.ts.map +0 -1
  178. package/dist/types/src/capabilities/intent-resolver.d.ts +0 -4
  179. package/dist/types/src/capabilities/intent-resolver.d.ts.map +0 -1
  180. package/dist/types/src/components/CommandsDialog/CommandsDialog.d.ts +0 -5
  181. package/dist/types/src/components/CommandsDialog/CommandsDialog.d.ts.map +0 -1
  182. package/dist/types/src/components/CommandsDialog/CommandsTrigger.d.ts.map +0 -1
  183. package/dist/types/src/components/CommandsDialog/index.d.ts +0 -3
  184. package/dist/types/src/components/CommandsDialog/index.d.ts.map +0 -1
  185. package/dist/types/src/components/NavTreeContainer.d.ts +0 -9
  186. package/dist/types/src/components/NavTreeContainer.d.ts.map +0 -1
  187. package/dist/types/src/components/NavTreeContext.d.ts.map +0 -1
  188. package/dist/types/src/components/NavTreeDocumentTitle.d.ts.map +0 -1
  189. package/dist/types/src/events.d.ts +0 -4
  190. package/dist/types/src/events.d.ts.map +0 -1
  191. package/dist/types/src/hooks.d.ts +0 -3
  192. package/dist/types/src/hooks.d.ts.map +0 -1
  193. package/dist/types/src/types.d.ts.map +0 -1
  194. package/src/capabilities/capabilities.ts +0 -20
  195. package/src/capabilities/intent-resolver.ts +0 -37
  196. package/src/components/CommandsDialog/CommandsDialog.tsx +0 -118
  197. package/src/components/CommandsDialog/CommandsTrigger.tsx +0 -35
  198. package/src/components/CommandsDialog/index.ts +0 -6
  199. package/src/components/NavTreeContainer.tsx +0 -313
  200. package/src/events.ts +0 -11
  201. package/src/hooks.ts +0 -21
  202. /package/dist/types/src/{components/CommandsDialog → containers/CommandsTrigger}/CommandsTrigger.d.ts +0 -0
@@ -1,21 +0,0 @@
1
- import { type Live } from '@dxos/live-object';
2
- import { type NavTreeItemGraphNode } from '../types';
3
- export declare namespace NavTreeCapabilities {
4
- const State: import("@dxos/app-framework").InterfaceDef<{
5
- state: Map<string, Live<{
6
- open: boolean;
7
- current: boolean;
8
- alternateTree?: boolean;
9
- }>>;
10
- getItem: (path: string[]) => Live<{
11
- open: boolean;
12
- current: boolean;
13
- alternateTree?: boolean;
14
- }>;
15
- setItem: (path: string[], key: "open" | "current" | "alternateTree", next: boolean) => void;
16
- isOpen: (path: string[], item: NavTreeItemGraphNode) => boolean;
17
- isCurrent: (path: string[], item: NavTreeItemGraphNode) => boolean;
18
- isAlternateTree: (path: string[], item: NavTreeItemGraphNode) => boolean;
19
- }>;
20
- }
21
- //# sourceMappingURL=capabilities.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"capabilities.d.ts","sourceRoot":"","sources":["../../../../src/capabilities/capabilities.ts"],"names":[],"mappings":"AAKA,OAAO,EAAE,KAAK,IAAI,EAAE,MAAM,mBAAmB,CAAC;AAG9C,OAAO,EAAE,KAAK,oBAAoB,EAAE,MAAM,UAAU,CAAC;AAErD,yBAAiB,mBAAmB,CAAC;IAC5B,MAAM,KAAK;eACT,GAAG,CAAC,MAAM,EAAE,IAAI,CAAC;YAAE,IAAI,EAAE,OAAO,CAAC;YAAC,OAAO,EAAE,OAAO,CAAC;YAAC,aAAa,CAAC,EAAE,OAAO,CAAA;SAAE,CAAC,CAAC;iBAC7E,CAAC,IAAI,EAAE,MAAM,EAAE,KAAK,IAAI,CAAC;YAAE,IAAI,EAAE,OAAO,CAAC;YAAC,OAAO,EAAE,OAAO,CAAC;YAAC,aAAa,CAAC,EAAE,OAAO,CAAA;SAAE,CAAC;iBACtF,CAAC,IAAI,EAAE,MAAM,EAAE,EAAE,GAAG,EAAE,MAAM,GAAG,SAAS,GAAG,eAAe,EAAE,IAAI,EAAE,OAAO,KAAK,IAAI;gBACnF,CAAC,IAAI,EAAE,MAAM,EAAE,EAAE,IAAI,EAAE,oBAAoB,KAAK,OAAO;mBACpD,CAAC,IAAI,EAAE,MAAM,EAAE,EAAE,IAAI,EAAE,oBAAoB,KAAK,OAAO;yBACjD,CAAC,IAAI,EAAE,MAAM,EAAE,EAAE,IAAI,EAAE,oBAAoB,KAAK,OAAO;MAClC,CAAC;CAC1C"}
@@ -1,4 +0,0 @@
1
- import { type PluginContext, Capabilities } from '@dxos/app-framework';
2
- declare const _default: (context: PluginContext) => import("@dxos/app-framework").Capability<Capabilities.IntentResolver>;
3
- export default _default;
4
- //# sourceMappingURL=intent-resolver.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"intent-resolver.d.ts","sourceRoot":"","sources":["../../../../src/capabilities/intent-resolver.ts"],"names":[],"mappings":"AAMA,OAAO,EAAe,KAAK,aAAa,EAAE,YAAY,EAAgC,MAAM,qBAAqB,CAAC;yBAKlG,SAAS,aAAa;AAAtC,wBAyBI"}
@@ -1,5 +0,0 @@
1
- import React from 'react';
2
- export declare const CommandsDialogContent: ({ selected: initial }: {
3
- selected?: string;
4
- }) => React.JSX.Element;
5
- //# sourceMappingURL=CommandsDialog.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"CommandsDialog.d.ts","sourceRoot":"","sources":["../../../../../src/components/CommandsDialog/CommandsDialog.tsx"],"names":[],"mappings":"AAIA,OAAO,KAA4B,MAAM,OAAO,CAAC;AAoBjD,eAAO,MAAM,qBAAqB,GAAI,uBAAuB;IAAE,QAAQ,CAAC,EAAE,MAAM,CAAA;CAAE,sBA6FjF,CAAC"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"CommandsTrigger.d.ts","sourceRoot":"","sources":["../../../../../src/components/CommandsDialog/CommandsTrigger.tsx"],"names":[],"mappings":"AAIA,OAAO,KAAK,MAAM,OAAO,CAAC;AAQ1B,eAAO,MAAM,eAAe,yBAsB3B,CAAC"}
@@ -1,3 +0,0 @@
1
- export * from './CommandsDialog';
2
- export * from './CommandsTrigger';
3
- //# sourceMappingURL=index.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../../src/components/CommandsDialog/index.ts"],"names":[],"mappings":"AAIA,cAAc,kBAAkB,CAAC;AACjC,cAAc,mBAAmB,CAAC"}
@@ -1,9 +0,0 @@
1
- import React from 'react';
2
- import { type NavTreeContextValue } from './types';
3
- export declare const NODE_TYPE = "dxos/app-graph/node";
4
- export type NavTreeContainerProps = {
5
- popoverAnchorId?: string;
6
- topbar?: boolean;
7
- } & Pick<NavTreeContextValue, 'tab'>;
8
- export declare const NavTreeContainer: React.MemoExoticComponent<({ tab, popoverAnchorId, topbar }: NavTreeContainerProps) => React.JSX.Element>;
9
- //# sourceMappingURL=NavTreeContainer.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"NavTreeContainer.d.ts","sourceRoot":"","sources":["../../../../src/components/NavTreeContainer.tsx"],"names":[],"mappings":"AAOA,OAAO,KAAgD,MAAM,OAAO,CAAC;AAqBrE,OAAO,EAAE,KAAK,mBAAmB,EAAE,MAAM,SAAS,CAAC;AAOnD,eAAO,MAAM,SAAS,wBAAwB,CAAC;AA+B/C,MAAM,MAAM,qBAAqB,GAAG;IAClC,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB,MAAM,CAAC,EAAE,OAAO,CAAC;CAClB,GAAG,IAAI,CAAC,mBAAmB,EAAE,KAAK,CAAC,CAAC;AAErC,eAAO,MAAM,gBAAgB,+DAA2C,qBAAqB,uBAiP3F,CAAC"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"NavTreeContext.d.ts","sourceRoot":"","sources":["../../../../src/components/NavTreeContext.tsx"],"names":[],"mappings":"AAQA,OAAO,EAAE,KAAK,mBAAmB,EAAE,MAAM,SAAS,CAAC;AAEnD,eAAO,MAAM,cAAc,qDAAkD,CAAC;AAE9E,eAAO,MAAM,iBAAiB,2BAAiF,CAAC"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"NavTreeDocumentTitle.d.ts","sourceRoot":"","sources":["../../../../src/components/NavTreeDocumentTitle.tsx"],"names":[],"mappings":"AAKA,OAAO,EAAE,KAAK,IAAI,EAAE,MAAM,iBAAiB,CAAC;AAK5C,eAAO,MAAM,oBAAoB,GAAI,UAAU;IAAE,IAAI,CAAC,EAAE,IAAI,CAAA;CAAE,SAM7D,CAAC"}
@@ -1,4 +0,0 @@
1
- export declare namespace NavTreeEvents {
2
- const StateReady: import("@dxos/app-framework").ActivationEvent;
3
- }
4
- //# sourceMappingURL=events.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"events.d.ts","sourceRoot":"","sources":["../../../src/events.ts"],"names":[],"mappings":"AAQA,yBAAiB,aAAa,CAAC;IACtB,MAAM,UAAU,+CAA0C,CAAC;CACnE"}
@@ -1,3 +0,0 @@
1
- import { type Node } from '@dxos/app-graph';
2
- export declare const useLoadDescendents: (root?: Node) => void;
3
- //# sourceMappingURL=hooks.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"hooks.d.ts","sourceRoot":"","sources":["../../../src/hooks.ts"],"names":[],"mappings":"AAMA,OAAO,EAAE,KAAK,IAAI,EAAE,MAAM,iBAAiB,CAAC;AAI5C,eAAO,MAAM,kBAAkB,GAAI,OAAO,IAAI,SAU7C,CAAC"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../src/types.ts"],"names":[],"mappings":"AAIA,OAAO,EAAE,KAAK,MAAM,EAAE,KAAK,UAAU,EAAE,KAAK,IAAI,EAAE,MAAM,iBAAiB,CAAC;AAC1E,OAAO,EAAE,KAAK,KAAK,EAAE,MAAM,gBAAgB,CAAC;AAC5C,OAAO,EAAE,KAAK,YAAY,EAAE,KAAK,QAAQ,EAAE,MAAM,YAAY,CAAC;AAE9D,MAAM,MAAM,oBAAoB,GAAG,IAAI,CACrC,GAAG,EACH,OAAO,CACL,cAAc,GAAG;IACf,gBAAgB,EAAE,MAAM,CAAC;IACzB,cAAc,EAAE,MAAM,CAAC;IACvB,sBAAsB,EAAE,GAAG,CAAC,MAAM,CAAC,CAAC;IACpC,oBAAoB,EAAE,GAAG,CAAC,MAAM,CAAC,CAAC;IAClC,mBAAmB,EAAE,CAAC,SAAS,EAAE,oBAAoB,EAAE,KAAK,YAAY,CAAC,IAAI,CAAC,CAAC;IAC/E,MAAM,EAAE,CAAC,UAAU,EAAE,oBAAoB,EAAE,KAAK,CAAC,EAAE,MAAM,KAAK,YAAY,CAAC,IAAI,CAAC,CAAC;IACjF,eAAe,EAAE,CAAC,UAAU,EAAE,oBAAoB,EAAE,KAAK,CAAC,EAAE,MAAM,KAAK,YAAY,CAAC,IAAI,CAAC,CAAC;IAC1F,aAAa,EAAE,CAAC,UAAU,EAAE,oBAAoB,EAAE,iBAAiB,EAAE,oBAAoB,KAAK,YAAY,CAAC,IAAI,CAAC,CAAC;CAClH,CACF,CACF,CAAC;AAEF,MAAM,MAAM,gBAAgB,GAAG;IAC7B,OAAO,EAAE,UAAU,EAAE,CAAC;IACtB,cAAc,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,EAAE,CAAC,CAAC;CAC1C,CAAC;AAEF,KAAK,gBAAgB,GAAG;IACtB,KAAK,EAAE,KAAK,CAAC;IACb,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,QAAQ,CAAC,EAAE,QAAQ,CAAC;IACpB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,gBAAgB,CAAC,EAAE,MAAM,CAAC;CAC3B,CAAC;AAEF,MAAM,MAAM,cAAc,GAAG,gBAAgB,GAAG;IAC9C,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,OAAO,CAAC,EAAE,MAAM,CAAC;CAClB,CAAC;AAEF,MAAM,MAAM,gBAAgB,GAAG,gBAAgB,GAAG;IAChD,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,MAAM,CAAC,EAAE,OAAO,CAAC;IACjB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,QAAQ,CAAC,EAAE,UAAU,CAAC;IACtB,UAAU,CAAC,EAAE,MAAM,GAAG,UAAU,CAAC;CAClC,CAAC;AAEF;;GAEG;AACH,MAAM,MAAM,UAAU,GAAG;IAGvB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,OAAO,CAAC,EAAE,MAAM,CAAC;CAClB,CAAC"}
@@ -1,20 +0,0 @@
1
- //
2
- // Copyright 2025 DXOS.org
3
- //
4
-
5
- import { defineCapability } from '@dxos/app-framework';
6
- import { type Live } from '@dxos/live-object';
7
-
8
- import { NAVTREE_PLUGIN } from '../meta';
9
- import { type NavTreeItemGraphNode } from '../types';
10
-
11
- export namespace NavTreeCapabilities {
12
- export const State = defineCapability<{
13
- state: Map<string, Live<{ open: boolean; current: boolean; alternateTree?: boolean }>>;
14
- getItem: (path: string[]) => Live<{ open: boolean; current: boolean; alternateTree?: boolean }>;
15
- setItem: (path: string[], key: 'open' | 'current' | 'alternateTree', next: boolean) => void;
16
- isOpen: (path: string[], item: NavTreeItemGraphNode) => boolean;
17
- isCurrent: (path: string[], item: NavTreeItemGraphNode) => boolean;
18
- isAlternateTree: (path: string[], item: NavTreeItemGraphNode) => boolean;
19
- }>(`${NAVTREE_PLUGIN}/capability/state`);
20
- }
@@ -1,37 +0,0 @@
1
- //
2
- // Copyright 2025 DXOS.org
3
- //
4
-
5
- import { Schema } from 'effect';
6
-
7
- import { contributes, type PluginContext, Capabilities, createResolver, LayoutAction } from '@dxos/app-framework';
8
- import { log } from '@dxos/log';
9
-
10
- import { NavTreeCapabilities } from './capabilities';
11
-
12
- export default (context: PluginContext) =>
13
- contributes(
14
- Capabilities.IntentResolver,
15
- createResolver({
16
- intent: LayoutAction.UpdateLayout,
17
- filter: (data): data is Schema.Schema.Type<typeof LayoutAction.Expose.fields.input> =>
18
- Schema.is(LayoutAction.Expose.fields.input)(data),
19
- resolve: async ({ subject }) => {
20
- const { graph } = context.getCapability(Capabilities.AppGraph);
21
- const { getItem, setItem } = context.getCapability(NavTreeCapabilities.State);
22
-
23
- try {
24
- const path = await graph.waitForPath({ target: subject }, { timeout: 1_000 });
25
- [...Array(path.length)].forEach((_, index) => {
26
- const subpath = path.slice(0, index);
27
- const value = getItem(subpath);
28
- if (!value.open) {
29
- setItem(subpath, 'open', true);
30
- }
31
- });
32
- } catch {
33
- log('Path to node not found', { subject });
34
- }
35
- },
36
- }),
37
- );
@@ -1,118 +0,0 @@
1
- //
2
- // Copyright 2023 DXOS.org
3
- //
4
-
5
- import React, { useMemo, useState } from 'react';
6
-
7
- import { createIntent, LayoutAction, useAppGraph, useIntentDispatcher } from '@dxos/app-framework';
8
- import { type ActionLike, isAction, isActionGroup } from '@dxos/app-graph';
9
- import { Keyboard, keySymbols } from '@dxos/keyboard';
10
- import { useActions } from '@dxos/plugin-graph';
11
- import { Button, Dialog, Icon, useTranslation, toLocalizedString } from '@dxos/react-ui';
12
- import { SearchList } from '@dxos/react-ui-searchlist';
13
- import {
14
- cardDialogContent,
15
- cardDialogHeader,
16
- cardDialogPaddedOverflow,
17
- cardDialogSearchListRoot,
18
- } from '@dxos/react-ui-stack';
19
- import { descriptionText, mx } from '@dxos/react-ui-theme';
20
- import { getHostPlatform } from '@dxos/util';
21
-
22
- import { KEY_BINDING, NAVTREE_PLUGIN } from '../../meta';
23
-
24
- // TODO(wittjosiah): This probably deserves its own plugin but for now it lives here w/ other navigation UI.
25
- export const CommandsDialogContent = ({ selected: initial }: { selected?: string }) => {
26
- const { t } = useTranslation(NAVTREE_PLUGIN);
27
- const [selected, setSelected] = useState<string | undefined>(initial);
28
- const { dispatchPromise: dispatch } = useIntentDispatcher();
29
- const { graph } = useAppGraph();
30
-
31
- // Traverse graph.
32
- // TODO(burdon): Factor out commonality with shortcut dialog.
33
- const allActions = useMemo(() => {
34
- // TODO(burdon): Get from navtree (not keyboard).
35
- const current = Keyboard.singleton.getCurrentContext();
36
- const actionMap = new Set<string>();
37
- const actions: ActionLike[] = [];
38
- graph.traverse({
39
- visitor: (node, path) => {
40
- if (
41
- (isAction(node) || isActionGroup(node)) &&
42
- !actionMap.has(node.id) &&
43
- current.startsWith(path.slice(0, -1).join('/'))
44
- ) {
45
- actionMap.add(node.id);
46
- actions.push(node);
47
- }
48
- },
49
- });
50
-
51
- actions.sort((a, b) => {
52
- return toLocalizedString(a.properties.label, t)
53
- ?.toLowerCase()
54
- .localeCompare(toLocalizedString(b.properties.label, t)?.toLowerCase());
55
- });
56
-
57
- return actions;
58
- }, [graph]);
59
-
60
- const group = allActions.find(({ id }) => id === selected);
61
- const groupActions = useActions(graph, group?.id);
62
- const actions = isActionGroup(group) ? groupActions : allActions;
63
-
64
- return (
65
- <Dialog.Content classNames={cardDialogContent}>
66
- <Dialog.Title classNames={cardDialogHeader}>{t('commands dialog title', { ns: NAVTREE_PLUGIN })}</Dialog.Title>
67
-
68
- {/* TODO(burdon): BUG: Overscrolls container. */}
69
- <SearchList.Root label={t('command list input placeholder')} classNames={cardDialogSearchListRoot}>
70
- <SearchList.Input placeholder={t('command list input placeholder')} />
71
- <SearchList.Content classNames={cardDialogPaddedOverflow}>
72
- {actions?.map((action) => {
73
- const label = toLocalizedString(action.properties.label, t);
74
- const shortcut =
75
- typeof action.properties.keyBinding === 'string'
76
- ? action.properties.keyBinding
77
- : action.properties.keyBinding?.[getHostPlatform()];
78
- return (
79
- <SearchList.Item
80
- value={label}
81
- key={action.id}
82
- onSelect={() => {
83
- if (action.properties.disabled) {
84
- return;
85
- }
86
-
87
- if (isActionGroup(action)) {
88
- setSelected(action.id);
89
- return;
90
- }
91
-
92
- void dispatch(createIntent(LayoutAction.UpdateDialog, { part: 'dialog', options: { state: false } }));
93
- setTimeout(() => {
94
- const node = graph.getConnections(group?.id ?? action.id, 'inbound')[0];
95
- void (node && isAction(action) && action.data({ parent: node, caller: KEY_BINDING }));
96
- });
97
- }}
98
- classNames='flex items-center gap-2'
99
- disabled={action.properties.disabled}
100
- {...(action.properties?.testId && { 'data-testid': action.properties.testId })}
101
- >
102
- <Icon icon={action.properties.icon} size={4} />
103
- <span className='grow truncate'>{label}</span>
104
- {shortcut && <span className={mx('shrink-0', descriptionText)}>{keySymbols(shortcut).join('')}</span>}
105
- </SearchList.Item>
106
- );
107
- })}
108
- </SearchList.Content>
109
- </SearchList.Root>
110
-
111
- <div role='none' className='pli-cardSpacingInline pbe-cardSpacingBlock'>
112
- <Dialog.Close asChild>
113
- <Button classNames='is-full'>{t('close label', { ns: 'os' })}</Button>
114
- </Dialog.Close>
115
- </div>
116
- </Dialog.Content>
117
- );
118
- };
@@ -1,35 +0,0 @@
1
- //
2
- // Copyright 2024 DXOS.org
3
- //
4
-
5
- import React from 'react';
6
-
7
- import { createIntent, LayoutAction, useIntentDispatcher } from '@dxos/app-framework';
8
- import { Button, Icon, useTranslation } from '@dxos/react-ui';
9
-
10
- import { COMMANDS_DIALOG, NAVTREE_PLUGIN } from '../../meta';
11
-
12
- // TODO(thure): Refactor to be handled by a more appropriate plugin.
13
- export const CommandsTrigger = () => {
14
- const { dispatchPromise: dispatch } = useIntentDispatcher();
15
- const { t } = useTranslation(NAVTREE_PLUGIN);
16
- return (
17
- <Button
18
- classNames='m-1 pli-1 lg:pli-2'
19
- onClick={() =>
20
- dispatch(
21
- createIntent(LayoutAction.UpdateDialog, {
22
- part: 'dialog',
23
- subject: COMMANDS_DIALOG,
24
- options: {
25
- blockAlign: 'start',
26
- },
27
- }),
28
- )
29
- }
30
- >
31
- <span className='text-description font-normal grow text-start'>{t('command list input placeholder')}</span>
32
- <Icon icon='ph--magnifying-glass--regular' size={5} />
33
- </Button>
34
- );
35
- };
@@ -1,6 +0,0 @@
1
- //
2
- // Copyright 2023 DXOS.org
3
- //
4
-
5
- export * from './CommandsDialog';
6
- export * from './CommandsTrigger';
@@ -1,313 +0,0 @@
1
- //
2
- // Copyright 2023 DXOS.org
3
- //
4
-
5
- import { monitorForElements } from '@atlaskit/pragmatic-drag-and-drop/element/adapter';
6
- import { extractInstruction, type Instruction } from '@atlaskit/pragmatic-drag-and-drop-hitbox/tree-item';
7
- import { untracked } from '@preact/signals-core';
8
- import React, { memo, useCallback, useEffect, useMemo } from 'react';
9
-
10
- import {
11
- createIntent,
12
- LayoutAction,
13
- Surface,
14
- useAppGraph,
15
- useCapability,
16
- useIntentDispatcher,
17
- useLayout,
18
- } from '@dxos/app-framework';
19
- import { isAction, isActionLike, ROOT_ID, type Node, type ReadableGraph } from '@dxos/app-graph';
20
- import { PLANK_COMPANION_TYPE } from '@dxos/plugin-deck/types';
21
- import { useConnections } from '@dxos/plugin-graph';
22
- import { useMediaQuery, useSidebars } from '@dxos/react-ui';
23
- import { isTreeData, type TreeItemDataProps, type TreeData } from '@dxos/react-ui-list';
24
- import { mx } from '@dxos/react-ui-theme';
25
- import { arrayMove, byPosition } from '@dxos/util';
26
-
27
- import { NAV_TREE_ITEM, NavTree } from './NavTree';
28
- import { NavTreeContext } from './NavTreeContext';
29
- import { type NavTreeContextValue } from './types';
30
- import { NavTreeCapabilities } from '../capabilities';
31
- import { NAVTREE_PLUGIN } from '../meta';
32
- import { type NavTreeItemGraphNode } from '../types';
33
- import { getChildren, getParent, getActions as naturalGetActions, resolveMigrationOperation } from '../util';
34
-
35
- // TODO(thure): Is NavTree truly authoritative in this regard?
36
- export const NODE_TYPE = 'dxos/app-graph/node';
37
-
38
- const renderItemEnd = ({ node, open }: { node: Node; open: boolean }) => (
39
- <Surface role='navtree-item-end' data={{ id: node.id, subject: node.data, open }} limit={1} />
40
- );
41
-
42
- const getChildrenFilter = (node: Node): node is Node =>
43
- untracked(() => !isActionLike(node) && node.type !== PLANK_COMPANION_TYPE);
44
-
45
- const filterItems = (node: Node, disposition?: string) => {
46
- if (!disposition && (node.properties.disposition === 'hidden' || node.properties.disposition === 'alternate-tree')) {
47
- return false;
48
- } else if (!disposition) {
49
- const action = isAction(node);
50
- return !action || node.properties.disposition === 'item';
51
- } else {
52
- return node.properties.disposition === disposition;
53
- }
54
- };
55
-
56
- const getItems = (graph: ReadableGraph, node?: Node, disposition?: string) => {
57
- return graph.getConnections(node?.id ?? ROOT_ID, 'outbound').filter((node) => filterItems(node, disposition));
58
- };
59
-
60
- const useItems = (node?: Node, options?: { disposition?: string; sort?: boolean }) => {
61
- const { graph } = useAppGraph();
62
- const connections = useConnections(graph, node?.id ?? ROOT_ID);
63
- const filtered = connections.filter((node) => filterItems(node, options?.disposition));
64
- return options?.sort ? filtered.toSorted((a, b) => byPosition(a.properties, b.properties)) : filtered;
65
- };
66
-
67
- export type NavTreeContainerProps = {
68
- popoverAnchorId?: string;
69
- topbar?: boolean;
70
- } & Pick<NavTreeContextValue, 'tab'>;
71
-
72
- export const NavTreeContainer = memo(({ tab, popoverAnchorId, topbar }: NavTreeContainerProps) => {
73
- const [isLg] = useMediaQuery('lg', { ssr: false });
74
- const { dispatchPromise: dispatch } = useIntentDispatcher();
75
- const { graph } = useAppGraph();
76
- const { isOpen, isCurrent, isAlternateTree, setItem } = useCapability(NavTreeCapabilities.State);
77
- const layout = useLayout();
78
- const { navigationSidebarState } = useSidebars(NAVTREE_PLUGIN);
79
-
80
- const getActions = useCallback((node: Node) => naturalGetActions(graph, node), [graph]);
81
-
82
- const getProps = useCallback(
83
- (node: Node, path: string[]): TreeItemDataProps => {
84
- const children = getChildren(graph, node, path).filter(getChildrenFilter);
85
- const parentOf =
86
- children.length > 0 ? children.map(({ id }) => id) : node.properties.role === 'branch' ? [] : undefined;
87
- return {
88
- id: node.id,
89
- label: node.properties.label ?? node.id,
90
- parentOf,
91
- icon: node.properties.icon,
92
- disabled: node.properties.disabled,
93
- className: mx(node.properties.modified && 'italic', node.properties.className),
94
- headingClassName: node.properties.headingClassName,
95
- testId: node.properties.testId,
96
- };
97
- },
98
- [graph],
99
- );
100
-
101
- const loadDescendents = useCallback(
102
- (node: Node) => {
103
- graph.expand(node.id, 'outbound');
104
- // Load one level deeper, which resolves some juddering observed on open/close.
105
- graph.getConnections(node.id, 'outbound').forEach((child) => {
106
- graph.expand(child.id, 'outbound');
107
- });
108
- },
109
- [graph],
110
- );
111
-
112
- const handleOpenChange = useCallback(
113
- ({ item: { id }, path, open }: { item: Node; path: string[]; open: boolean }) => {
114
- // TODO(thure): This might become a localstorage leak; openItemIds that no longer exist should be removed from this map.
115
- setItem(path, 'open', open);
116
- graph.expand(id, 'outbound');
117
- },
118
- [graph],
119
- );
120
-
121
- const handleTabChange = useCallback(
122
- async (node: NavTreeItemGraphNode) => {
123
- await dispatch(
124
- createIntent(LayoutAction.UpdateSidebar, {
125
- part: 'sidebar',
126
- options: {
127
- state:
128
- node.id === tab
129
- ? navigationSidebarState === 'expanded'
130
- ? isLg
131
- ? 'collapsed'
132
- : 'closed'
133
- : 'expanded'
134
- : 'expanded',
135
- },
136
- }),
137
- );
138
-
139
- await dispatch(createIntent(LayoutAction.SwitchWorkspace, { part: 'workspace', subject: node.id }));
140
-
141
- // Open the first item if the workspace is empty.
142
- if (layout.active.length === 0) {
143
- const [item] = getItems(graph, node).filter((node) => !isActionLike(node));
144
- if (item && item.data) {
145
- await dispatch(createIntent(LayoutAction.Open, { part: 'main', subject: [item.id] }));
146
- }
147
- }
148
- },
149
- [dispatch, layout.active, tab, navigationSidebarState, isLg],
150
- );
151
-
152
- const canDrop = useCallback(({ source, target }: { source: TreeData; target: TreeData }) => {
153
- return target.item.properties.canDrop?.(source) ?? false;
154
- }, []);
155
-
156
- const handleSelect = useCallback(
157
- ({ item: node, path, option }: { item: Node; path: string[]; option: boolean }) => {
158
- if (!node.data) {
159
- return;
160
- }
161
-
162
- if (isAction(node)) {
163
- const [parent] = graph.getConnections(node.id, 'inbound');
164
- void (parent && node.data({ parent, caller: NAV_TREE_ITEM }));
165
- return;
166
- }
167
-
168
- const current = isCurrent(path, node);
169
- if (!current) {
170
- void dispatch(
171
- createIntent(LayoutAction.Open, {
172
- part: 'main',
173
- subject: [node.id],
174
- options: { key: node.properties.key },
175
- }),
176
- );
177
- } else if (option) {
178
- void dispatch(
179
- createIntent(LayoutAction.Close, { part: 'main', subject: [node.id], options: { state: false } }),
180
- );
181
- } else {
182
- void dispatch(createIntent(LayoutAction.ScrollIntoView, { part: 'current', subject: node.id }));
183
- }
184
-
185
- const defaultAction = graph.getActions(node.id).find((action) => action.properties?.disposition === 'default');
186
- if (isAction(defaultAction)) {
187
- void (defaultAction.data as () => void)();
188
- }
189
-
190
- if (!isLg) {
191
- void dispatch(createIntent(LayoutAction.UpdateSidebar, { part: 'sidebar', options: { state: 'closed' } }));
192
- }
193
- },
194
- [graph, dispatch, isCurrent, isLg],
195
- );
196
-
197
- const handleBack = useCallback(
198
- () => dispatch(createIntent(LayoutAction.RevertWorkspace, { part: 'workspace', options: { revert: true } })),
199
- [dispatch],
200
- );
201
-
202
- // TODO(wittjosiah): Factor out hook.
203
- useEffect(() => {
204
- return monitorForElements({
205
- canMonitor: ({ source }) => isTreeData(source.data),
206
- onDrop: ({ location, source }) => {
207
- // Didn't drop on anything.
208
- if (!location.current.dropTargets.length) {
209
- return;
210
- }
211
- const target = location.current.dropTargets[0];
212
- const instruction: Instruction | null = extractInstruction(target.data);
213
- if (instruction !== null && instruction.type !== 'instruction-blocked') {
214
- const sourceNode = source.data.item as NavTreeItemGraphNode;
215
- const targetNode = target.data.item as NavTreeItemGraphNode;
216
- const sourcePath = source.data.path as string[];
217
- const targetPath = target.data.path as string[];
218
- const operation =
219
- sourcePath.slice(0, -1).join() === targetPath.slice(0, -1).join() && instruction.type !== 'make-child'
220
- ? 'rearrange'
221
- : resolveMigrationOperation(graph, sourceNode, targetPath, targetNode);
222
- const sourceParent = getParent(graph, sourceNode, sourcePath);
223
- const targetParent = getParent(graph, targetNode, targetPath);
224
- const sourceItems = getItems(graph, sourceParent);
225
- const targetItems = getItems(graph, targetParent);
226
- const sourceIndex = sourceItems.findIndex(({ id }) => id === sourceNode.id);
227
- const targetIndex = targetItems.findIndex(({ id }) => id === targetNode.id);
228
- const migrationIndex =
229
- instruction.type === 'make-child'
230
- ? undefined
231
- : instruction.type === 'reorder-below'
232
- ? targetIndex + 1
233
- : targetIndex;
234
- switch (operation) {
235
- case 'rearrange': {
236
- const nextItems = sourceItems.map(({ data }) => data);
237
- arrayMove(nextItems, sourceIndex, targetIndex);
238
- void sourceParent?.properties.onRearrangeChildren?.(nextItems);
239
- break;
240
- }
241
- case 'copy': {
242
- const target = instruction.type === 'make-child' ? targetNode : targetParent;
243
- void target?.properties.onCopy?.(sourceNode, migrationIndex);
244
- break;
245
- }
246
- case 'transfer': {
247
- const target = instruction.type === 'make-child' ? targetNode : targetParent;
248
- if (!target?.properties.onTransferStart || !sourceParent?.properties.onTransferEnd) {
249
- break;
250
- }
251
- void target?.properties.onTransferStart(sourceNode, migrationIndex);
252
- void sourceParent?.properties.onTransferEnd?.(sourceNode, target);
253
- break;
254
- }
255
- }
256
- }
257
- },
258
- });
259
- }, [graph]);
260
-
261
- const setAlternateTree = useCallback(
262
- (path: string[], open: boolean) => {
263
- setItem(path, 'alternateTree', open);
264
- },
265
- [setItem],
266
- );
267
-
268
- const navTreeContextValue = useMemo(
269
- () => ({
270
- useItems,
271
- tab,
272
- getActions,
273
- loadDescendents,
274
- renderItemEnd,
275
- popoverAnchorId,
276
- topbar,
277
- getProps,
278
- isCurrent,
279
- isOpen,
280
- canDrop,
281
- isAlternateTree,
282
- setAlternateTree,
283
- onTabChange: handleTabChange,
284
- onOpenChange: handleOpenChange,
285
- onSelect: handleSelect,
286
- onBack: handleBack,
287
- }),
288
- [
289
- tab,
290
- getActions,
291
- loadDescendents,
292
- renderItemEnd,
293
- popoverAnchorId,
294
- topbar,
295
- getProps,
296
- isCurrent,
297
- isOpen,
298
- canDrop,
299
- isAlternateTree,
300
- setAlternateTree,
301
- handleTabChange,
302
- handleOpenChange,
303
- handleSelect,
304
- handleBack,
305
- ],
306
- );
307
-
308
- return (
309
- <NavTreeContext.Provider value={navTreeContextValue}>
310
- <NavTree id={ROOT_ID} root={graph.root} open={layout.sidebarOpen} />
311
- </NavTreeContext.Provider>
312
- );
313
- });
package/src/events.ts DELETED
@@ -1,11 +0,0 @@
1
- //
2
- // Copyright 2025 DXOS.org
3
- //
4
-
5
- import { Events } from '@dxos/app-framework';
6
-
7
- import { NAVTREE_PLUGIN } from './meta';
8
-
9
- export namespace NavTreeEvents {
10
- export const StateReady = Events.createStateEvent(NAVTREE_PLUGIN);
11
- }