@elliemae/ds-treeview 2.3.0-next.0 → 3.0.0-alpha.0

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 (333) hide show
  1. package/dist/cjs/TreeView.js +50 -0
  2. package/dist/cjs/TreeView.js.map +7 -0
  3. package/dist/cjs/TreeViewContext.js +116 -0
  4. package/dist/cjs/TreeViewContext.js.map +7 -0
  5. package/dist/cjs/config/cssClassesConstants.js +41 -0
  6. package/dist/cjs/config/cssClassesConstants.js.map +7 -0
  7. package/dist/cjs/config/useTreeview.js +151 -0
  8. package/dist/cjs/config/useTreeview.js.map +7 -0
  9. package/dist/cjs/hoc/DnDTreeContext.js +45 -0
  10. package/dist/cjs/hoc/DnDTreeContext.js.map +7 -0
  11. package/dist/cjs/hoc/SortableItemContext.js +46 -0
  12. package/dist/cjs/hoc/SortableItemContext.js.map +7 -0
  13. package/dist/cjs/hoc/WithConditionalDnDContext.js +128 -0
  14. package/dist/cjs/hoc/WithConditionalDnDContext.js.map +7 -0
  15. package/dist/cjs/hoc/WithDnDSortableItemContext.js +69 -0
  16. package/dist/cjs/hoc/WithDnDSortableItemContext.js.map +7 -0
  17. package/dist/cjs/index.js +37 -0
  18. package/dist/cjs/index.js.map +7 -0
  19. package/dist/cjs/parts/CheckboxSelectable.js +97 -0
  20. package/dist/cjs/parts/CheckboxSelectable.js.map +7 -0
  21. package/dist/cjs/parts/ChildrenCountDisplayer.js +47 -0
  22. package/dist/cjs/parts/ChildrenCountDisplayer.js.map +7 -0
  23. package/dist/cjs/parts/DnDHandle.js +57 -0
  24. package/dist/cjs/parts/DnDHandle.js.map +7 -0
  25. package/dist/cjs/parts/DropIndicator.js +80 -0
  26. package/dist/cjs/parts/DropIndicator.js.map +7 -0
  27. package/dist/cjs/parts/ExpandCaret.js +96 -0
  28. package/dist/cjs/parts/ExpandCaret.js.map +7 -0
  29. package/dist/cjs/parts/Icon.js +52 -0
  30. package/dist/cjs/parts/Icon.js.map +7 -0
  31. package/dist/cjs/parts/NestingSpace.js +55 -0
  32. package/dist/cjs/parts/NestingSpace.js.map +7 -0
  33. package/dist/cjs/parts/RadioSelectable.js +74 -0
  34. package/dist/cjs/parts/RadioSelectable.js.map +7 -0
  35. package/dist/cjs/parts/TreeItem.js +166 -0
  36. package/dist/cjs/parts/TreeItem.js.map +7 -0
  37. package/dist/cjs/parts/TreeItemText.js +101 -0
  38. package/dist/cjs/parts/TreeItemText.js.map +7 -0
  39. package/dist/cjs/parts/TreeList.js +123 -0
  40. package/dist/cjs/parts/TreeList.js.map +7 -0
  41. package/dist/cjs/plugins/dnd/TreeDndPlugin.js +35 -0
  42. package/dist/cjs/plugins/dnd/TreeDndPlugin.js.map +7 -0
  43. package/dist/cjs/plugins/dnd/index.js +28 -0
  44. package/dist/cjs/plugins/dnd/index.js.map +7 -0
  45. package/dist/cjs/plugins/index.js +34 -0
  46. package/dist/cjs/plugins/index.js.map +7 -0
  47. package/dist/cjs/plugins/roving/TreeRovingPlugin.js +35 -0
  48. package/dist/cjs/plugins/roving/TreeRovingPlugin.js.map +7 -0
  49. package/dist/cjs/plugins/roving/index.js +28 -0
  50. package/dist/cjs/plugins/roving/index.js.map +7 -0
  51. package/dist/cjs/plugins/searchable/SearchableTreePlugin.js +35 -0
  52. package/dist/cjs/plugins/searchable/SearchableTreePlugin.js.map +7 -0
  53. package/dist/cjs/plugins/searchable/index.js +28 -0
  54. package/dist/cjs/plugins/searchable/index.js.map +7 -0
  55. package/dist/cjs/plugins/selectable/SelectablePluginTree.js +35 -0
  56. package/dist/cjs/plugins/selectable/SelectablePluginTree.js.map +7 -0
  57. package/dist/cjs/plugins/selectable/index.js +28 -0
  58. package/dist/cjs/plugins/selectable/index.js.map +7 -0
  59. package/dist/cjs/plugins/toolbar/TreeToolbarPlugin.js +35 -0
  60. package/dist/cjs/plugins/toolbar/TreeToolbarPlugin.js.map +7 -0
  61. package/dist/cjs/plugins/toolbar/index.js +28 -0
  62. package/dist/cjs/plugins/toolbar/index.js.map +7 -0
  63. package/dist/cjs/plugins/tree/TreeDataPlugin.js +35 -0
  64. package/dist/cjs/plugins/tree/TreeDataPlugin.js.map +7 -0
  65. package/dist/cjs/plugins/tree/index.js +28 -0
  66. package/dist/cjs/plugins/tree/index.js.map +7 -0
  67. package/dist/cjs/plugins/virtualization/TreeVirtualizationPlugin.js +35 -0
  68. package/dist/cjs/plugins/virtualization/TreeVirtualizationPlugin.js.map +7 -0
  69. package/dist/cjs/plugins/virtualization/index.js +28 -0
  70. package/dist/cjs/plugins/virtualization/index.js.map +7 -0
  71. package/dist/cjs/react-desc-prop-types.js +85 -0
  72. package/dist/cjs/react-desc-prop-types.js.map +7 -0
  73. package/dist/cjs/related-components/TreeViewSearchBar.js +50 -0
  74. package/dist/cjs/related-components/TreeViewSearchBar.js.map +7 -0
  75. package/dist/cjs/sharedTypes.js +27 -0
  76. package/dist/cjs/sharedTypes.js.map +7 -0
  77. package/dist/cjs/utils/array-helpers.js +48 -0
  78. package/dist/cjs/utils/array-helpers.js.map +7 -0
  79. package/dist/cjs/utils/group-expands-helpers.js +138 -0
  80. package/dist/cjs/utils/group-expands-helpers.js.map +7 -0
  81. package/dist/cjs/utils/keyboard-helpers.js +170 -0
  82. package/dist/cjs/utils/keyboard-helpers.js.map +7 -0
  83. package/dist/cjs/utils/object-helpers.js +76 -0
  84. package/dist/cjs/utils/object-helpers.js.map +7 -0
  85. package/dist/cjs/utils/refs-helpers.js +52 -0
  86. package/dist/cjs/utils/refs-helpers.js.map +7 -0
  87. package/dist/cjs/utils/selectable-helper.js +88 -0
  88. package/dist/cjs/utils/selectable-helper.js.map +7 -0
  89. package/dist/cjs/utils/string-helpers.js +35 -0
  90. package/dist/cjs/utils/string-helpers.js.map +7 -0
  91. package/dist/cjs/utils/tree-helpers.js +184 -0
  92. package/dist/cjs/utils/tree-helpers.js.map +7 -0
  93. package/dist/cjs/utils/useInstanceRefActions.js +98 -0
  94. package/dist/cjs/utils/useInstanceRefActions.js.map +7 -0
  95. package/dist/cjs/utils/useTree.js +106 -0
  96. package/dist/cjs/utils/useTree.js.map +7 -0
  97. package/dist/esm/TreeView.js +21 -0
  98. package/dist/esm/TreeView.js.map +7 -0
  99. package/{esm → dist/esm}/TreeViewContext.js +24 -29
  100. package/dist/esm/TreeViewContext.js.map +7 -0
  101. package/dist/esm/config/cssClassesConstants.js +12 -0
  102. package/dist/esm/config/cssClassesConstants.js.map +7 -0
  103. package/dist/esm/config/useTreeview.js +122 -0
  104. package/dist/esm/config/useTreeview.js.map +7 -0
  105. package/dist/esm/hoc/DnDTreeContext.js +16 -0
  106. package/dist/esm/hoc/DnDTreeContext.js.map +7 -0
  107. package/dist/esm/hoc/SortableItemContext.js +17 -0
  108. package/dist/esm/hoc/SortableItemContext.js.map +7 -0
  109. package/dist/esm/hoc/WithConditionalDnDContext.js +99 -0
  110. package/dist/esm/hoc/WithConditionalDnDContext.js.map +7 -0
  111. package/dist/esm/hoc/WithDnDSortableItemContext.js +40 -0
  112. package/dist/esm/hoc/WithDnDSortableItemContext.js.map +7 -0
  113. package/dist/esm/index.js +8 -0
  114. package/dist/esm/index.js.map +7 -0
  115. package/dist/esm/parts/CheckboxSelectable.js +68 -0
  116. package/dist/esm/parts/CheckboxSelectable.js.map +7 -0
  117. package/dist/esm/parts/ChildrenCountDisplayer.js +18 -0
  118. package/dist/esm/parts/ChildrenCountDisplayer.js.map +7 -0
  119. package/dist/esm/parts/DnDHandle.js +28 -0
  120. package/dist/esm/parts/DnDHandle.js.map +7 -0
  121. package/dist/esm/parts/DropIndicator.js +51 -0
  122. package/dist/esm/parts/DropIndicator.js.map +7 -0
  123. package/dist/esm/parts/ExpandCaret.js +67 -0
  124. package/dist/esm/parts/ExpandCaret.js.map +7 -0
  125. package/dist/esm/parts/Icon.js +23 -0
  126. package/dist/esm/parts/Icon.js.map +7 -0
  127. package/dist/esm/parts/NestingSpace.js +26 -0
  128. package/dist/esm/parts/NestingSpace.js.map +7 -0
  129. package/dist/esm/parts/RadioSelectable.js +45 -0
  130. package/dist/esm/parts/RadioSelectable.js.map +7 -0
  131. package/dist/esm/parts/TreeItem.js +137 -0
  132. package/dist/esm/parts/TreeItem.js.map +7 -0
  133. package/dist/esm/parts/TreeItemText.js +72 -0
  134. package/dist/esm/parts/TreeItemText.js.map +7 -0
  135. package/dist/esm/parts/TreeList.js +94 -0
  136. package/dist/esm/parts/TreeList.js.map +7 -0
  137. package/dist/esm/plugins/dnd/TreeDndPlugin.js +6 -0
  138. package/dist/esm/plugins/dnd/TreeDndPlugin.js.map +7 -0
  139. package/dist/esm/plugins/dnd/index.js +3 -0
  140. package/dist/esm/plugins/dnd/index.js.map +7 -0
  141. package/dist/esm/plugins/index.js +9 -0
  142. package/dist/esm/plugins/index.js.map +7 -0
  143. package/dist/esm/plugins/roving/TreeRovingPlugin.js +6 -0
  144. package/dist/esm/plugins/roving/TreeRovingPlugin.js.map +7 -0
  145. package/dist/esm/plugins/roving/index.js +3 -0
  146. package/dist/esm/plugins/roving/index.js.map +7 -0
  147. package/dist/esm/plugins/searchable/SearchableTreePlugin.js +6 -0
  148. package/dist/esm/plugins/searchable/SearchableTreePlugin.js.map +7 -0
  149. package/dist/esm/plugins/searchable/index.js +3 -0
  150. package/dist/esm/plugins/searchable/index.js.map +7 -0
  151. package/dist/esm/plugins/selectable/SelectablePluginTree.js +6 -0
  152. package/dist/esm/plugins/selectable/SelectablePluginTree.js.map +7 -0
  153. package/dist/esm/plugins/selectable/index.js +3 -0
  154. package/dist/esm/plugins/selectable/index.js.map +7 -0
  155. package/dist/esm/plugins/toolbar/TreeToolbarPlugin.js +6 -0
  156. package/dist/esm/plugins/toolbar/TreeToolbarPlugin.js.map +7 -0
  157. package/dist/esm/plugins/toolbar/index.js +3 -0
  158. package/dist/esm/plugins/toolbar/index.js.map +7 -0
  159. package/dist/esm/plugins/tree/TreeDataPlugin.js +6 -0
  160. package/dist/esm/plugins/tree/TreeDataPlugin.js.map +7 -0
  161. package/dist/esm/plugins/tree/index.js +3 -0
  162. package/dist/esm/plugins/tree/index.js.map +7 -0
  163. package/dist/esm/plugins/virtualization/TreeVirtualizationPlugin.js +6 -0
  164. package/dist/esm/plugins/virtualization/TreeVirtualizationPlugin.js.map +7 -0
  165. package/dist/esm/plugins/virtualization/index.js +3 -0
  166. package/dist/esm/plugins/virtualization/index.js.map +7 -0
  167. package/dist/esm/react-desc-prop-types.js +56 -0
  168. package/dist/esm/react-desc-prop-types.js.map +7 -0
  169. package/dist/esm/related-components/TreeViewSearchBar.js +21 -0
  170. package/dist/esm/related-components/TreeViewSearchBar.js.map +7 -0
  171. package/dist/esm/sharedTypes.js +2 -0
  172. package/dist/esm/sharedTypes.js.map +7 -0
  173. package/{esm → dist/esm}/utils/array-helpers.js +6 -6
  174. package/dist/esm/utils/array-helpers.js.map +7 -0
  175. package/dist/esm/utils/group-expands-helpers.js +109 -0
  176. package/dist/esm/utils/group-expands-helpers.js.map +7 -0
  177. package/{esm → dist/esm}/utils/keyboard-helpers.js +43 -71
  178. package/dist/esm/utils/keyboard-helpers.js.map +7 -0
  179. package/dist/esm/utils/object-helpers.js +47 -0
  180. package/dist/esm/utils/object-helpers.js.map +7 -0
  181. package/dist/esm/utils/refs-helpers.js +23 -0
  182. package/dist/esm/utils/refs-helpers.js.map +7 -0
  183. package/dist/esm/utils/selectable-helper.js +59 -0
  184. package/dist/esm/utils/selectable-helper.js.map +7 -0
  185. package/dist/esm/utils/string-helpers.js +6 -0
  186. package/dist/esm/utils/string-helpers.js.map +7 -0
  187. package/dist/esm/utils/tree-helpers.js +155 -0
  188. package/dist/esm/utils/tree-helpers.js.map +7 -0
  189. package/{esm → dist/esm}/utils/useInstanceRefActions.js +21 -35
  190. package/dist/esm/utils/useInstanceRefActions.js.map +7 -0
  191. package/dist/esm/utils/useTree.js +77 -0
  192. package/dist/esm/utils/useTree.js.map +7 -0
  193. package/{types → dist/types}/TreeView.d.ts +0 -0
  194. package/{types → dist/types}/TreeViewContext.d.ts +0 -0
  195. package/{types → dist/types}/config/cssClassesConstants.d.ts +0 -0
  196. package/{types → dist/types}/config/useTreeview.d.ts +0 -0
  197. package/{types → dist/types}/hoc/DnDTreeContext.d.ts +0 -0
  198. package/{types → dist/types}/hoc/SortableItemContext.d.ts +0 -0
  199. package/{types → dist/types}/hoc/WithConditionalDnDContext.d.ts +0 -0
  200. package/{types → dist/types}/hoc/WithDnDSortableItemContext.d.ts +0 -0
  201. package/{types → dist/types}/index.d.ts +0 -0
  202. package/{types → dist/types}/parts/CheckboxSelectable.d.ts +0 -0
  203. package/{types → dist/types}/parts/ChildrenCountDisplayer.d.ts +0 -0
  204. package/{types → dist/types}/parts/DnDHandle.d.ts +0 -0
  205. package/{types → dist/types}/parts/DropIndicator.d.ts +0 -0
  206. package/{types → dist/types}/parts/ExpandCaret.d.ts +0 -0
  207. package/{types → dist/types}/parts/Icon.d.ts +0 -0
  208. package/{types → dist/types}/parts/NestingSpace.d.ts +0 -0
  209. package/{types → dist/types}/parts/RadioSelectable.d.ts +0 -0
  210. package/{types → dist/types}/parts/TreeItem.d.ts +0 -0
  211. package/{types → dist/types}/parts/TreeItemText.d.ts +0 -0
  212. package/{types → dist/types}/parts/TreeList.d.ts +0 -0
  213. package/{types → dist/types}/plugins/dnd/TreeDndPlugin.d.ts +0 -0
  214. package/{types → dist/types}/plugins/dnd/index.d.ts +0 -0
  215. package/{types → dist/types}/plugins/index.d.ts +0 -0
  216. package/{types → dist/types}/plugins/roving/TreeRovingPlugin.d.ts +0 -0
  217. package/{types → dist/types}/plugins/roving/index.d.ts +0 -0
  218. package/{types → dist/types}/plugins/searchable/SearchableTreePlugin.d.ts +0 -0
  219. package/{types → dist/types}/plugins/searchable/index.d.ts +0 -0
  220. package/{types → dist/types}/plugins/selectable/SelectablePluginTree.d.ts +0 -0
  221. package/{types → dist/types}/plugins/selectable/index.d.ts +0 -0
  222. package/{types → dist/types}/plugins/toolbar/TreeToolbarPlugin.d.ts +0 -0
  223. package/{types → dist/types}/plugins/toolbar/index.d.ts +0 -0
  224. package/{types → dist/types}/plugins/tree/TreeDataPlugin.d.ts +0 -0
  225. package/{types → dist/types}/plugins/tree/index.d.ts +0 -0
  226. package/{types → dist/types}/plugins/virtualization/TreeVirtualizationPlugin.d.ts +0 -0
  227. package/{types → dist/types}/plugins/virtualization/index.d.ts +0 -0
  228. package/{types → dist/types}/react-desc-prop-types.d.ts +0 -0
  229. package/{types → dist/types}/related-components/TreeViewSearchBar.d.ts +0 -0
  230. package/{types → dist/types}/sharedTypes.d.ts +0 -0
  231. package/{types → dist/types}/utils/array-helpers.d.ts +0 -0
  232. package/{types → dist/types}/utils/group-expands-helpers.d.ts +0 -0
  233. package/{types → dist/types}/utils/keyboard-helpers.d.ts +0 -0
  234. package/{types → dist/types}/utils/object-helpers.d.ts +0 -0
  235. package/{types → dist/types}/utils/refs-helpers.d.ts +0 -0
  236. package/{types → dist/types}/utils/selectable-helper.d.ts +0 -0
  237. package/{types → dist/types}/utils/string-helpers.d.ts +0 -0
  238. package/{types → dist/types}/utils/tree-helpers.d.ts +0 -0
  239. package/{types → dist/types}/utils/useInstanceRefActions.d.ts +0 -0
  240. package/{types → dist/types}/utils/useTree.d.ts +0 -0
  241. package/package.json +129 -120
  242. package/cjs/TreeView.js +0 -30
  243. package/cjs/TreeViewContext.js +0 -98
  244. package/cjs/config/cssClassesConstants.js +0 -13
  245. package/cjs/config/useTreeview.js +0 -127
  246. package/cjs/hoc/DnDTreeContext.js +0 -18
  247. package/cjs/hoc/SortableItemContext.js +0 -21
  248. package/cjs/hoc/WithConditionalDnDContext.js +0 -138
  249. package/cjs/hoc/WithDnDSortableItemContext.js +0 -70
  250. package/cjs/index.js +0 -26
  251. package/cjs/parts/CheckboxSelectable.js +0 -86
  252. package/cjs/parts/ChildrenCountDisplayer.js +0 -30
  253. package/cjs/parts/DnDHandle.js +0 -46
  254. package/cjs/parts/DropIndicator.js +0 -75
  255. package/cjs/parts/ExpandCaret.js +0 -94
  256. package/cjs/parts/Icon.js +0 -37
  257. package/cjs/parts/NestingSpace.js +0 -47
  258. package/cjs/parts/RadioSelectable.js +0 -59
  259. package/cjs/parts/TreeItem.js +0 -185
  260. package/cjs/parts/TreeItemText.js +0 -108
  261. package/cjs/parts/TreeList.js +0 -139
  262. package/cjs/plugins/dnd/TreeDndPlugin.js +0 -7
  263. package/cjs/plugins/dnd/index.js +0 -9
  264. package/cjs/plugins/index.js +0 -21
  265. package/cjs/plugins/roving/TreeRovingPlugin.js +0 -7
  266. package/cjs/plugins/roving/index.js +0 -9
  267. package/cjs/plugins/searchable/SearchableTreePlugin.js +0 -7
  268. package/cjs/plugins/searchable/index.js +0 -9
  269. package/cjs/plugins/selectable/SelectablePluginTree.js +0 -7
  270. package/cjs/plugins/selectable/index.js +0 -9
  271. package/cjs/plugins/toolbar/TreeToolbarPlugin.js +0 -7
  272. package/cjs/plugins/toolbar/index.js +0 -9
  273. package/cjs/plugins/tree/TreeDataPlugin.js +0 -7
  274. package/cjs/plugins/tree/index.js +0 -9
  275. package/cjs/plugins/virtualization/TreeVirtualizationPlugin.js +0 -7
  276. package/cjs/plugins/virtualization/index.js +0 -9
  277. package/cjs/react-desc-prop-types.js +0 -56
  278. package/cjs/related-components/TreeViewSearchBar.js +0 -48
  279. package/cjs/sharedTypes.js +0 -2
  280. package/cjs/utils/array-helpers.js +0 -24
  281. package/cjs/utils/group-expands-helpers.js +0 -111
  282. package/cjs/utils/keyboard-helpers.js +0 -175
  283. package/cjs/utils/object-helpers.js +0 -69
  284. package/cjs/utils/refs-helpers.js +0 -31
  285. package/cjs/utils/selectable-helper.js +0 -80
  286. package/cjs/utils/string-helpers.js +0 -7
  287. package/cjs/utils/tree-helpers.js +0 -220
  288. package/cjs/utils/useInstanceRefActions.js +0 -87
  289. package/cjs/utils/useTree.js +0 -108
  290. package/esm/TreeView.js +0 -21
  291. package/esm/config/cssClassesConstants.js +0 -6
  292. package/esm/config/useTreeview.js +0 -119
  293. package/esm/hoc/DnDTreeContext.js +0 -14
  294. package/esm/hoc/SortableItemContext.js +0 -17
  295. package/esm/hoc/WithConditionalDnDContext.js +0 -128
  296. package/esm/hoc/WithDnDSortableItemContext.js +0 -61
  297. package/esm/index.js +0 -9
  298. package/esm/parts/CheckboxSelectable.js +0 -78
  299. package/esm/parts/ChildrenCountDisplayer.js +0 -22
  300. package/esm/parts/DnDHandle.js +0 -38
  301. package/esm/parts/DropIndicator.js +0 -68
  302. package/esm/parts/ExpandCaret.js +0 -85
  303. package/esm/parts/Icon.js +0 -29
  304. package/esm/parts/NestingSpace.js +0 -39
  305. package/esm/parts/RadioSelectable.js +0 -53
  306. package/esm/parts/TreeItem.js +0 -173
  307. package/esm/parts/TreeItemText.js +0 -99
  308. package/esm/parts/TreeList.js +0 -127
  309. package/esm/plugins/dnd/TreeDndPlugin.js +0 -3
  310. package/esm/plugins/dnd/index.js +0 -1
  311. package/esm/plugins/index.js +0 -7
  312. package/esm/plugins/roving/TreeRovingPlugin.js +0 -3
  313. package/esm/plugins/roving/index.js +0 -1
  314. package/esm/plugins/searchable/SearchableTreePlugin.js +0 -3
  315. package/esm/plugins/searchable/index.js +0 -1
  316. package/esm/plugins/selectable/SelectablePluginTree.js +0 -3
  317. package/esm/plugins/selectable/index.js +0 -1
  318. package/esm/plugins/toolbar/TreeToolbarPlugin.js +0 -3
  319. package/esm/plugins/toolbar/index.js +0 -1
  320. package/esm/plugins/tree/TreeDataPlugin.js +0 -3
  321. package/esm/plugins/tree/index.js +0 -1
  322. package/esm/plugins/virtualization/TreeVirtualizationPlugin.js +0 -3
  323. package/esm/plugins/virtualization/index.js +0 -1
  324. package/esm/react-desc-prop-types.js +0 -52
  325. package/esm/related-components/TreeViewSearchBar.js +0 -40
  326. package/esm/sharedTypes.js +0 -1
  327. package/esm/utils/group-expands-helpers.js +0 -99
  328. package/esm/utils/object-helpers.js +0 -64
  329. package/esm/utils/refs-helpers.js +0 -27
  330. package/esm/utils/selectable-helper.js +0 -70
  331. package/esm/utils/string-helpers.js +0 -3
  332. package/esm/utils/tree-helpers.js +0 -205
  333. package/esm/utils/useTree.js +0 -99
@@ -0,0 +1,67 @@
1
+ import * as React from "react";
2
+ import React2, { useContext, useCallback } from "react";
3
+ import Button from "@elliemae/ds-button";
4
+ import { ArrowheadDown, ArrowheadRight } from "@elliemae/ds-icons";
5
+ import { toggleItemExpand } from "../utils/group-expands-helpers";
6
+ import { focusItem } from "../utils/tree-helpers";
7
+ import TreeViewContext from "../TreeViewContext";
8
+ const ExpandCaret = (props) => {
9
+ const defaultHandleExpandGroup = useCallback(toggleItemExpand, []);
10
+ const { item } = props;
11
+ const { id, isExpanded, isGroup, children } = item;
12
+ const isGroupOrHasChildrens = isGroup || Array.isArray(children) && children.length > 0;
13
+ const ctx = useContext(TreeViewContext);
14
+ const {
15
+ props: { onItemFocus },
16
+ handleExpandGroup = defaultHandleExpandGroup,
17
+ triggerTreeRerender,
18
+ updateUserExpandedState,
19
+ setLatestToggledItem,
20
+ setFocusedItem,
21
+ virtualListHelpers: { scrollToIndex }
22
+ } = ctx;
23
+ if (isGroupOrHasChildrens)
24
+ return /* @__PURE__ */ React2.createElement(Button, {
25
+ buttonType: "text",
26
+ className: "expandable-arrow",
27
+ "data-testid": "tree-item-expand-toggle",
28
+ key: `${id}-expand-addon`,
29
+ icon: isExpanded ? /* @__PURE__ */ React2.createElement(ArrowheadDown, {
30
+ size: "s",
31
+ "data-testid": "ic-arrow-head-down"
32
+ }) : /* @__PURE__ */ React2.createElement(ArrowheadRight, {
33
+ size: "s",
34
+ "data-testid": "ic-arrow-head-right"
35
+ }),
36
+ onMouseDown: (e) => {
37
+ if (e) {
38
+ e.preventDefault();
39
+ }
40
+ },
41
+ onClick: (e) => {
42
+ e.stopPropagation();
43
+ if (e)
44
+ handleExpandGroup(item, triggerTreeRerender, updateUserExpandedState, scrollToIndex, e);
45
+ setLatestToggledItem(item);
46
+ const itemVitualIndex = item.virtualIndex;
47
+ if (typeof itemVitualIndex === "number") {
48
+ onItemFocus({
49
+ itemIndex: itemVitualIndex,
50
+ scrollToItem: (opts = { align: "start" }) => scrollToIndex(itemVitualIndex, opts),
51
+ item
52
+ });
53
+ }
54
+ setFocusedItem(item);
55
+ focusItem(item);
56
+ },
57
+ size: "s",
58
+ tabIndex: -1
59
+ });
60
+ return /* @__PURE__ */ React2.createElement("div", {
61
+ style: { width: "24px" }
62
+ });
63
+ };
64
+ export {
65
+ ExpandCaret
66
+ };
67
+ //# sourceMappingURL=ExpandCaret.js.map
@@ -0,0 +1,7 @@
1
+ {
2
+ "version": 3,
3
+ "sources": ["../../../../../scripts/build/transpile/react-shim.js", "../../../src/parts/ExpandCaret.tsx"],
4
+ "sourcesContent": ["import * as React from 'react';\nexport { React };\n", "import React, { useContext, useCallback } from 'react';\nimport Button from '@elliemae/ds-button';\nimport { ArrowheadDown, ArrowheadRight } from '@elliemae/ds-icons';\nimport { toggleItemExpand } from '../utils/group-expands-helpers';\nimport { focusItem } from '../utils/tree-helpers';\nimport TreeViewContext from '../TreeViewContext';\nimport type { DSTreeviewT } from '../react-desc-prop-types';\n\ninterface PropsT {\n item: DSTreeviewT.Item;\n}\n\nexport const ExpandCaret = (props: PropsT): JSX.Element | null => {\n const defaultHandleExpandGroup = useCallback(toggleItemExpand, []);\n const { item } = props;\n const { id, isExpanded, isGroup, children } = item;\n const isGroupOrHasChildrens = isGroup || (Array.isArray(children) && children.length > 0);\n const ctx = useContext(TreeViewContext);\n const {\n props: { onItemFocus },\n handleExpandGroup = defaultHandleExpandGroup,\n triggerTreeRerender,\n updateUserExpandedState,\n setLatestToggledItem,\n setFocusedItem,\n virtualListHelpers: { scrollToIndex },\n } = ctx;\n\n if (isGroupOrHasChildrens)\n return (\n <Button\n buttonType=\"text\"\n className=\"expandable-arrow\"\n data-testid=\"tree-item-expand-toggle\"\n key={`${id}-expand-addon`}\n icon={\n isExpanded ? (\n <ArrowheadDown size=\"s\" data-testid=\"ic-arrow-head-down\" />\n ) : (\n <ArrowheadRight size=\"s\" data-testid=\"ic-arrow-head-right\" />\n )\n }\n onMouseDown={(e: React.MouseEvent) => {\n // prevent focusing the caret\n if (e) {\n e.preventDefault();\n }\n }}\n onClick={(e) => {\n e.stopPropagation();\n if (e) handleExpandGroup(item, triggerTreeRerender, updateUserExpandedState, scrollToIndex, e);\n setLatestToggledItem(item);\n const itemVitualIndex = item.virtualIndex;\n if (typeof itemVitualIndex === 'number') {\n onItemFocus({\n itemIndex: itemVitualIndex,\n scrollToItem: (opts = { align: 'start' }) => scrollToIndex(itemVitualIndex, opts),\n item,\n });\n }\n setFocusedItem(item);\n focusItem(item);\n }}\n size=\"s\"\n tabIndex={-1}\n />\n );\n return <div style={{ width: '24px' }} />;\n};\n"],
5
+ "mappings": "AAAA;ACAA;AACA;AACA;AACA;AACA;AACA;AAOO,MAAM,cAAc,CAAC,UAAsC;AAChE,QAAM,2BAA2B,YAAY,kBAAkB;AAC/D,QAAM,EAAE,SAAS;AACjB,QAAM,EAAE,IAAI,YAAY,SAAS,aAAa;AAC9C,QAAM,wBAAwB,WAAY,MAAM,QAAQ,aAAa,SAAS,SAAS;AACvF,QAAM,MAAM,WAAW;AACvB,QAAM;AAAA,IACJ,OAAO,EAAE;AAAA,IACT,oBAAoB;AAAA,IACpB;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA,oBAAoB,EAAE;AAAA,MACpB;AAEJ,MAAI;AACF,WACE,qCAAC,QAAD;AAAA,MACE,YAAW;AAAA,MACX,WAAU;AAAA,MACV,eAAY;AAAA,MACZ,KAAK,GAAG;AAAA,MACR,MACE,aACE,qCAAC,eAAD;AAAA,QAAe,MAAK;AAAA,QAAI,eAAY;AAAA,WAEpC,qCAAC,gBAAD;AAAA,QAAgB,MAAK;AAAA,QAAI,eAAY;AAAA;AAAA,MAGzC,aAAa,CAAC,MAAwB;AAEpC,YAAI,GAAG;AACL,YAAE;AAAA;AAAA;AAAA,MAGN,SAAS,CAAC,MAAM;AACd,UAAE;AACF,YAAI;AAAG,4BAAkB,MAAM,qBAAqB,yBAAyB,eAAe;AAC5F,6BAAqB;AACrB,cAAM,kBAAkB,KAAK;AAC7B,YAAI,OAAO,oBAAoB,UAAU;AACvC,sBAAY;AAAA,YACV,WAAW;AAAA,YACX,cAAc,CAAC,OAAO,EAAE,OAAO,cAAc,cAAc,iBAAiB;AAAA,YAC5E;AAAA;AAAA;AAGJ,uBAAe;AACf,kBAAU;AAAA;AAAA,MAEZ,MAAK;AAAA,MACL,UAAU;AAAA;AAGhB,SAAO,qCAAC,OAAD;AAAA,IAAK,OAAO,EAAE,OAAO;AAAA;AAAA;",
6
+ "names": []
7
+ }
@@ -0,0 +1,23 @@
1
+ import * as React from "react";
2
+ import React2, { useContext } from "react";
3
+ import { cx } from "@elliemae/ds-utilities";
4
+ import TreeViewContext from "../TreeViewContext";
5
+ const Icon = (props) => {
6
+ const { item } = props;
7
+ const isGroupOrHasChildrens = item.isGroup || Array.isArray(item.children) && item.children.length > 0;
8
+ const ctx = useContext(TreeViewContext);
9
+ const {
10
+ props: { groupIcon, itemIcon }
11
+ } = ctx;
12
+ const icon = isGroupOrHasChildrens ? groupIcon : itemIcon;
13
+ if (!icon)
14
+ return null;
15
+ return React2.cloneElement(icon, {
16
+ "data-testid": isGroupOrHasChildrens ? "tree-item-group-icon" : "tree-item-icon",
17
+ className: cx(icon.props.className, "tree-item-icon")
18
+ });
19
+ };
20
+ export {
21
+ Icon
22
+ };
23
+ //# sourceMappingURL=Icon.js.map
@@ -0,0 +1,7 @@
1
+ {
2
+ "version": 3,
3
+ "sources": ["../../../../../scripts/build/transpile/react-shim.js", "../../../src/parts/Icon.tsx"],
4
+ "sourcesContent": ["import * as React from 'react';\nexport { React };\n", "import React, { useContext } from 'react';\nimport { cx } from '@elliemae/ds-utilities';\n\nimport TreeViewContext from '../TreeViewContext';\nimport type { DSTreeviewT } from '../react-desc-prop-types';\ninterface PropsT {\n item: DSTreeviewT.Item;\n}\nexport const Icon = (props: PropsT): JSX.Element | null => {\n const { item } = props;\n const isGroupOrHasChildrens = item.isGroup || (Array.isArray(item.children) && item.children.length > 0);\n const ctx = useContext(TreeViewContext);\n const {\n props: { groupIcon, itemIcon },\n } = ctx;\n const icon = isGroupOrHasChildrens ? groupIcon : itemIcon;\n if (!icon) return null;\n\n return React.cloneElement(icon, {\n 'data-testid': isGroupOrHasChildrens ? 'tree-item-group-icon' : 'tree-item-icon',\n // legacy class-name way of handling things,\n // this will eventually be deprecated in favor of styled components\n // untill then, just eslint-ignore and move on\n // eslint-disable-next-line @typescript-eslint/no-unsafe-member-access, @typescript-eslint/no-unsafe-assignment\n className: cx(icon.props.className, 'tree-item-icon'),\n });\n};\n"],
5
+ "mappings": "AAAA;ACAA;AACA;AAEA;AAKO,MAAM,OAAO,CAAC,UAAsC;AACzD,QAAM,EAAE,SAAS;AACjB,QAAM,wBAAwB,KAAK,WAAY,MAAM,QAAQ,KAAK,aAAa,KAAK,SAAS,SAAS;AACtG,QAAM,MAAM,WAAW;AACvB,QAAM;AAAA,IACJ,OAAO,EAAE,WAAW;AAAA,MAClB;AACJ,QAAM,OAAO,wBAAwB,YAAY;AACjD,MAAI,CAAC;AAAM,WAAO;AAElB,SAAO,OAAM,aAAa,MAAM;AAAA,IAC9B,eAAe,wBAAwB,yBAAyB;AAAA,IAKhE,WAAW,GAAG,KAAK,MAAM,WAAW;AAAA;AAAA;",
6
+ "names": []
7
+ }
@@ -0,0 +1,26 @@
1
+ import * as React from "react";
2
+ import React2 from "react";
3
+ const getItemNestingLeftPadding = (level, opts) => {
4
+ const { spaceForNestingLevel = 1.5 } = opts;
5
+ const groupLeftPadding = spaceForNestingLevel * (level - 1);
6
+ const finalLeftPadding = groupLeftPadding + spaceForNestingLevel - 0.1;
7
+ return finalLeftPadding > 0 ? `${finalLeftPadding}em` : "0";
8
+ };
9
+ const NestingSpace = (props) => {
10
+ const { item, spaceForNestingLevel } = props;
11
+ const { treeDepth } = item;
12
+ if (treeDepth) {
13
+ const itemNestingLeftPadding = getItemNestingLeftPadding(treeDepth - 1, {
14
+ spaceForNestingLevel
15
+ });
16
+ return /* @__PURE__ */ React2.createElement("div", {
17
+ "data-testid": "tree-item-nested-space",
18
+ style: { width: itemNestingLeftPadding }
19
+ });
20
+ }
21
+ return null;
22
+ };
23
+ export {
24
+ NestingSpace
25
+ };
26
+ //# sourceMappingURL=NestingSpace.js.map
@@ -0,0 +1,7 @@
1
+ {
2
+ "version": 3,
3
+ "sources": ["../../../../../scripts/build/transpile/react-shim.js", "../../../src/parts/NestingSpace.tsx"],
4
+ "sourcesContent": ["import * as React from 'react';\nexport { React };\n", "import React from 'react';\nimport type { DSTreeviewT } from '../react-desc-prop-types';\n\nconst getItemNestingLeftPadding = (level: number, opts: { spaceForNestingLevel: number }) => {\n const { spaceForNestingLevel = 1.5 } = opts;\n const groupLeftPadding = spaceForNestingLevel * (level - 1);\n const finalLeftPadding = groupLeftPadding + spaceForNestingLevel - 0.1;\n // root level left-padding would be negative and would not be applied\n // if \"root-level\" nesting, then defaults to 0 left-padding.\n return finalLeftPadding > 0 ? `${finalLeftPadding}em` : '0';\n};\n\ntype NestingSpacePropsType = {\n item: DSTreeviewT.Item;\n spaceForNestingLevel: number;\n};\n\nexport const NestingSpace = (props: NestingSpacePropsType): JSX.Element | null => {\n const { item, spaceForNestingLevel } = props;\n const { treeDepth } = item;\n if (treeDepth) {\n const itemNestingLeftPadding = getItemNestingLeftPadding(treeDepth - 1, {\n spaceForNestingLevel,\n });\n\n return <div data-testid=\"tree-item-nested-space\" style={{ width: itemNestingLeftPadding }} />;\n }\n return null;\n};\n"],
5
+ "mappings": "AAAA;ACAA;AAGA,MAAM,4BAA4B,CAAC,OAAe,SAA2C;AAC3F,QAAM,EAAE,uBAAuB,QAAQ;AACvC,QAAM,mBAAmB,uBAAwB,SAAQ;AACzD,QAAM,mBAAmB,mBAAmB,uBAAuB;AAGnE,SAAO,mBAAmB,IAAI,GAAG,uBAAuB;AAAA;AAQnD,MAAM,eAAe,CAAC,UAAqD;AAChF,QAAM,EAAE,MAAM,yBAAyB;AACvC,QAAM,EAAE,cAAc;AACtB,MAAI,WAAW;AACb,UAAM,yBAAyB,0BAA0B,YAAY,GAAG;AAAA,MACtE;AAAA;AAGF,WAAO,qCAAC,OAAD;AAAA,MAAK,eAAY;AAAA,MAAyB,OAAO,EAAE,OAAO;AAAA;AAAA;AAEnE,SAAO;AAAA;",
6
+ "names": []
7
+ }
@@ -0,0 +1,45 @@
1
+ import * as React from "react";
2
+ import React2, { useContext, useCallback, useMemo } from "react";
3
+ import { DSRadio } from "@elliemae/ds-form";
4
+ import TreeViewContext from "../TreeViewContext";
5
+ function RadioSelectable(props) {
6
+ const { item, itemIndex } = props;
7
+ const ctx = useContext(TreeViewContext);
8
+ const {
9
+ props: { onSelectionChange, isItemDisabled },
10
+ virtualListHelpers: { scrollToIndex },
11
+ uniqueTreeViewUUID,
12
+ selectedCheckboxes,
13
+ setSelectedCheckboxes
14
+ } = ctx;
15
+ const { id } = item;
16
+ const onRadioChange = useCallback(() => {
17
+ const newSelectionHasmap = { [id]: true };
18
+ setSelectedCheckboxes(newSelectionHasmap);
19
+ const indexAndScrollTo = {
20
+ scrollToItem: () => {
21
+ if (item.virtualIndex)
22
+ scrollToIndex(item.virtualIndex);
23
+ },
24
+ itemIndex
25
+ };
26
+ if (onSelectionChange)
27
+ onSelectionChange(newSelectionHasmap, item, indexAndScrollTo);
28
+ }, [id, setSelectedCheckboxes, itemIndex, onSelectionChange, item, scrollToIndex]);
29
+ const radioName = useMemo(() => `radios-${uniqueTreeViewUUID}`, [uniqueTreeViewUUID]);
30
+ const isDisabled = useMemo(() => isItemDisabled(item), [item, isItemDisabled]);
31
+ return /* @__PURE__ */ React2.createElement(DSRadio, {
32
+ checked: selectedCheckboxes[id] === true,
33
+ name: radioName,
34
+ disabled: isDisabled,
35
+ className: "em-ds-tree-item-radio",
36
+ "data-testid": "tree-item-radio",
37
+ onChange: onRadioChange,
38
+ tabIndex: 0
39
+ });
40
+ }
41
+ var RadioSelectable_default = RadioSelectable;
42
+ export {
43
+ RadioSelectable_default as default
44
+ };
45
+ //# sourceMappingURL=RadioSelectable.js.map
@@ -0,0 +1,7 @@
1
+ {
2
+ "version": 3,
3
+ "sources": ["../../../../../scripts/build/transpile/react-shim.js", "../../../src/parts/RadioSelectable.tsx"],
4
+ "sourcesContent": ["import * as React from 'react';\nexport { React };\n", "import React, { useContext, useCallback, useMemo } from 'react';\nimport { DSRadio } from '@elliemae/ds-form';\nimport TreeViewContext from '../TreeViewContext';\nimport type { DSTreeviewT } from '../react-desc-prop-types';\ninterface PropsT {\n item: DSTreeviewT.Item;\n itemIndex: number;\n}\nfunction RadioSelectable(props: PropsT) {\n const { item, itemIndex } = props;\n\n const ctx = useContext(TreeViewContext);\n const {\n props: { onSelectionChange, isItemDisabled },\n virtualListHelpers: { scrollToIndex },\n uniqueTreeViewUUID,\n selectedCheckboxes,\n setSelectedCheckboxes,\n } = ctx;\n\n const { id } = item;\n\n const onRadioChange = useCallback(() => {\n const newSelectionHasmap = { [id]: true };\n setSelectedCheckboxes(newSelectionHasmap);\n const indexAndScrollTo = {\n scrollToItem: () => {\n if (item.virtualIndex) scrollToIndex(item.virtualIndex);\n },\n itemIndex,\n };\n if (onSelectionChange) onSelectionChange(newSelectionHasmap, item, indexAndScrollTo);\n }, [id, setSelectedCheckboxes, itemIndex, onSelectionChange, item, scrollToIndex]);\n\n const radioName = useMemo(() => `radios-${uniqueTreeViewUUID}`, [uniqueTreeViewUUID]);\n\n const isDisabled = useMemo(() => isItemDisabled(item), [item, isItemDisabled]);\n\n return (\n <DSRadio\n checked={selectedCheckboxes[id] === true}\n name={radioName}\n disabled={isDisabled}\n className=\"em-ds-tree-item-radio\"\n data-testid=\"tree-item-radio\"\n onChange={onRadioChange}\n tabIndex={0}\n />\n );\n}\n\nexport default RadioSelectable;\n"],
5
+ "mappings": "AAAA;ACAA;AACA;AACA;AAMA,yBAAyB,OAAe;AACtC,QAAM,EAAE,MAAM,cAAc;AAE5B,QAAM,MAAM,WAAW;AACvB,QAAM;AAAA,IACJ,OAAO,EAAE,mBAAmB;AAAA,IAC5B,oBAAoB,EAAE;AAAA,IACtB;AAAA,IACA;AAAA,IACA;AAAA,MACE;AAEJ,QAAM,EAAE,OAAO;AAEf,QAAM,gBAAgB,YAAY,MAAM;AACtC,UAAM,qBAAqB,GAAG,KAAK;AACnC,0BAAsB;AACtB,UAAM,mBAAmB;AAAA,MACvB,cAAc,MAAM;AAClB,YAAI,KAAK;AAAc,wBAAc,KAAK;AAAA;AAAA,MAE5C;AAAA;AAEF,QAAI;AAAmB,wBAAkB,oBAAoB,MAAM;AAAA,KAClE,CAAC,IAAI,uBAAuB,WAAW,mBAAmB,MAAM;AAEnE,QAAM,YAAY,QAAQ,MAAM,UAAU,sBAAsB,CAAC;AAEjE,QAAM,aAAa,QAAQ,MAAM,eAAe,OAAO,CAAC,MAAM;AAE9D,SACE,qCAAC,SAAD;AAAA,IACE,SAAS,mBAAmB,QAAQ;AAAA,IACpC,MAAM;AAAA,IACN,UAAU;AAAA,IACV,WAAU;AAAA,IACV,eAAY;AAAA,IACZ,UAAU;AAAA,IACV,UAAU;AAAA;AAAA;AAKhB,IAAO,0BAAQ;",
6
+ "names": []
7
+ }
@@ -0,0 +1,137 @@
1
+ import * as React from "react";
2
+ import React2, { useContext, useMemo, useCallback } from "react";
3
+ import { aggregatedClasses } from "@elliemae/ds-classnames";
4
+ import RadioSelectable from "./RadioSelectable";
5
+ import CheckboxSelectable from "./CheckboxSelectable";
6
+ import TreeViewContext from "../TreeViewContext";
7
+ import { setMultipleRefs } from "../utils/refs-helpers";
8
+ import { useOnItemKeyDown } from "../utils/keyboard-helpers";
9
+ import { NestingSpace } from "./NestingSpace";
10
+ import { Icon } from "./Icon";
11
+ import { ExpandCaret } from "./ExpandCaret";
12
+ import { TreeItemText } from "./TreeItemText";
13
+ import { DSTreeViewPrefix, treeItemBlockName } from "../config/cssClassesConstants";
14
+ import { DnDHandle } from "./DnDHandle";
15
+ import { withDnDSortableItemContext } from "../hoc/WithDnDSortableItemContext";
16
+ import { DropIndicatorPosition, SortableItemContext } from "../hoc/SortableItemContext";
17
+ import DropIndicator from "./DropIndicator";
18
+ const TreeListItem = aggregatedClasses("li", {
19
+ "data-testid": treeItemBlockName,
20
+ role: "treeitem"
21
+ })(treeItemBlockName);
22
+ const TreeListItemAddonsWrapper = aggregatedClasses("div")(treeItemBlockName, "addons");
23
+ const TreeItem = (props) => {
24
+ const {
25
+ item,
26
+ itemIndex,
27
+ itemWrapperStyle = {},
28
+ virtualItemRef,
29
+ spaceForNestingLevel = 1.5,
30
+ isDragOverlay = false
31
+ } = props;
32
+ const { id, node } = item;
33
+ const { nodeItemRef } = node.model;
34
+ const { draggableProps } = useContext(SortableItemContext);
35
+ const onItemKeyDown = useOnItemKeyDown(item, draggableProps);
36
+ const ctx = useContext(TreeViewContext);
37
+ const {
38
+ props: { disableIcons, rightAddons, onItemClick, onItemFocus, rowSize, labelOverflow },
39
+ withRadioChecks,
40
+ withCheckboxChecks,
41
+ withDragAndDrop,
42
+ selectedItem,
43
+ selectedCheckboxes,
44
+ hoverItem,
45
+ virtualListHelpers: { scrollToIndex },
46
+ setHoverItem,
47
+ setSelectedItem,
48
+ setFocusedItem
49
+ } = ctx;
50
+ const setItemRefs = (ref) => {
51
+ setMultipleRefs(virtualItemRef, !isDragOverlay && nodeItemRef, !isDragOverlay && draggableProps && draggableProps.setNodeRef)(ref);
52
+ };
53
+ const dropIndicatorPosition = draggableProps && draggableProps.shouldShowDropIndicatorPosition && draggableProps.dropIndicatorPosition;
54
+ const isDropIndicatorPositionInside = dropIndicatorPosition === DropIndicatorPosition.Inside;
55
+ const isDragging = draggableProps && draggableProps.isDragging;
56
+ const isDropValid = draggableProps && draggableProps.isDropValid;
57
+ const dropPreviewClassName = useMemo(() => {
58
+ if (isDropIndicatorPositionInside) {
59
+ const className = `${DSTreeViewPrefix}-${treeItemBlockName}${isDropValid ? "--valid" : "--invalid"}-drop-in`;
60
+ return className;
61
+ }
62
+ return "";
63
+ }, [isDropIndicatorPositionInside, isDropValid]);
64
+ const dragOverlayClassName = useMemo(() => isDragOverlay ? "drag-overlay" : "", [isDragOverlay]);
65
+ const selectedClassName = useMemo(() => selectedItem?.id === item.id && !isDragOverlay ? "selected" : "", [isDragOverlay, item.id, selectedItem?.id]);
66
+ const hoverClassName = useMemo(() => !isDragOverlay && (hoverItem?.id === item.id || isDragging) ? "hover" : "", [isDragOverlay, hoverItem?.id, item.id, isDragging]);
67
+ const fixedHeightClassname = useMemo(() => {
68
+ if (labelOverflow === "truncate") {
69
+ if (rowSize === "compact")
70
+ return `${DSTreeViewPrefix}-${treeItemBlockName}--fixed-height-compact`;
71
+ return `${DSTreeViewPrefix}-${treeItemBlockName}--fixed-height`;
72
+ }
73
+ return "";
74
+ }, [labelOverflow, rowSize]);
75
+ const finalClassName = useMemo(() => `${dropPreviewClassName} ${fixedHeightClassname} ${selectedClassName} ${hoverClassName} ${dragOverlayClassName}`, [dropPreviewClassName, selectedClassName, hoverClassName, fixedHeightClassname, dragOverlayClassName]);
76
+ const handleItemClick = useCallback((e) => {
77
+ onItemClick(item, e);
78
+ setFocusedItem(item);
79
+ setSelectedItem(item);
80
+ const itemVirtualIndex = typeof item.virtualIndex === "number" ? item.virtualIndex : -1;
81
+ onItemFocus({
82
+ itemIndex: itemVirtualIndex,
83
+ scrollToItem: (opts = { align: "start" }) => scrollToIndex(itemVirtualIndex, opts),
84
+ item
85
+ });
86
+ }, [item, scrollToIndex, onItemClick, onItemFocus, setSelectedItem, setFocusedItem]);
87
+ return /* @__PURE__ */ React2.createElement(TreeListItem, {
88
+ tabIndex: 0,
89
+ onMouseLeave: () => {
90
+ if (hoverItem?.id === item.id) {
91
+ setHoverItem(null);
92
+ }
93
+ },
94
+ onMouseEnter: () => {
95
+ setHoverItem(item);
96
+ },
97
+ onClick: handleItemClick,
98
+ onBlur: () => setFocusedItem(null),
99
+ ref: setItemRefs,
100
+ style: { ...itemWrapperStyle },
101
+ className: finalClassName,
102
+ "aria-expanded": !!item.isExpanded,
103
+ "aria-selected": !!selectedCheckboxes[item.id],
104
+ "data-id": item.id,
105
+ "data-index": item.virtualIndex,
106
+ onKeyDown: onItemKeyDown
107
+ }, /* @__PURE__ */ React2.createElement(TreeListItemAddonsWrapper, null, withDragAndDrop ? /* @__PURE__ */ React2.createElement(DnDHandle, {
108
+ id,
109
+ isDragOverlay
110
+ }) : null, withRadioChecks && !isDragOverlay ? /* @__PURE__ */ React2.createElement(RadioSelectable, {
111
+ item,
112
+ itemIndex
113
+ }) : null, withCheckboxChecks && !isDragOverlay ? /* @__PURE__ */ React2.createElement(CheckboxSelectable, {
114
+ item,
115
+ itemIndex
116
+ }) : null, !isDragOverlay && /* @__PURE__ */ React2.createElement(NestingSpace, {
117
+ item,
118
+ spaceForNestingLevel
119
+ }), !isDragOverlay && /* @__PURE__ */ React2.createElement(ExpandCaret, {
120
+ item
121
+ }), !disableIcons ? /* @__PURE__ */ React2.createElement(Icon, {
122
+ item
123
+ }) : null), /* @__PURE__ */ React2.createElement(TreeItemText, {
124
+ item
125
+ }), rightAddons && /* @__PURE__ */ React2.createElement(TreeListItemAddonsWrapper, null, typeof rightAddons === "function" ? rightAddons(item) : rightAddons), /* @__PURE__ */ React2.createElement(DropIndicator, {
126
+ dropIndicatorPosition,
127
+ isDropValid
128
+ }));
129
+ };
130
+ var TreeItem_default = withDnDSortableItemContext(TreeItem);
131
+ export {
132
+ TreeItem,
133
+ TreeListItem,
134
+ TreeListItemAddonsWrapper,
135
+ TreeItem_default as default
136
+ };
137
+ //# sourceMappingURL=TreeItem.js.map
@@ -0,0 +1,7 @@
1
+ {
2
+ "version": 3,
3
+ "sources": ["../../../../../scripts/build/transpile/react-shim.js", "../../../src/parts/TreeItem.tsx"],
4
+ "sourcesContent": ["import * as React from 'react';\nexport { React };\n", "/* eslint-disable complexity */\n/* eslint-disable max-lines */\nimport React, { useContext, useMemo, useCallback } from 'react';\n\nimport { aggregatedClasses } from '@elliemae/ds-classnames';\n\nimport RadioSelectable from './RadioSelectable';\nimport CheckboxSelectable from './CheckboxSelectable';\nimport TreeViewContext from '../TreeViewContext';\nimport { setMultipleRefs } from '../utils/refs-helpers';\nimport { useOnItemKeyDown } from '../utils/keyboard-helpers';\nimport { NestingSpace } from './NestingSpace';\nimport { Icon } from './Icon';\nimport { ExpandCaret } from './ExpandCaret';\nimport { TreeItemText } from './TreeItemText';\nimport { DSTreeViewPrefix, treeItemBlockName } from '../config/cssClassesConstants';\nimport type { DSTreeviewT } from '../react-desc-prop-types';\nimport { DnDHandle } from './DnDHandle';\nimport { withDnDSortableItemContext } from '../hoc/WithDnDSortableItemContext';\nimport { DropIndicatorPosition, SortableItemContext } from '../hoc/SortableItemContext';\nimport DropIndicator from './DropIndicator';\n\nexport const TreeListItem = aggregatedClasses('li', {\n 'data-testid': treeItemBlockName,\n role: 'treeitem',\n // temp fix untill we move to styled components\n})(treeItemBlockName) as unknown as React.ComponentType<React.ComponentProps<'li'>>;\n\nexport const TreeListItemAddonsWrapper = aggregatedClasses('div')(\n treeItemBlockName,\n 'addons',\n // temp fix untill we move to styled components\n) as unknown as React.ComponentType;\n\ninterface PropsT {\n item: DSTreeviewT.Item;\n itemIndex: number;\n isDragOverlay?: boolean;\n virtualItemRef?: React.RefObject<HTMLLIElement>;\n itemWrapperStyle?: { [key: string]: unknown };\n spaceForNestingLevel?: number;\n}\nexport const TreeItem = (props: PropsT): JSX.Element => {\n const {\n item,\n itemIndex,\n itemWrapperStyle = {},\n virtualItemRef,\n spaceForNestingLevel = 1.5,\n isDragOverlay = false,\n } = props;\n const { id, node } = item;\n const { nodeItemRef } = node.model;\n\n const { draggableProps } = useContext(SortableItemContext);\n\n const onItemKeyDown = useOnItemKeyDown(item, draggableProps);\n\n const ctx = useContext(TreeViewContext);\n const {\n props: { disableIcons, rightAddons, onItemClick, onItemFocus, rowSize, labelOverflow },\n withRadioChecks,\n withCheckboxChecks,\n withDragAndDrop,\n selectedItem,\n selectedCheckboxes,\n hoverItem,\n virtualListHelpers: { scrollToIndex },\n setHoverItem,\n setSelectedItem,\n setFocusedItem,\n } = ctx;\n\n // Sortable Items needs to update\n // - the virtual list ref (for react-virtual requirement)\n // - nodeItemRef which is a prop avaiable in the TreeModel nodes\n // - the drag and drop node reference\n const setItemRefs: React.LegacyRef<HTMLLIElement> | undefined = (ref: HTMLLIElement) => {\n setMultipleRefs(\n virtualItemRef,\n !isDragOverlay && nodeItemRef,\n !isDragOverlay && draggableProps && draggableProps.setNodeRef,\n )(ref);\n };\n\n const dropIndicatorPosition =\n draggableProps && draggableProps.shouldShowDropIndicatorPosition && draggableProps.dropIndicatorPosition;\n\n const isDropIndicatorPositionInside = dropIndicatorPosition === DropIndicatorPosition.Inside;\n\n const isDragging = draggableProps && draggableProps.isDragging;\n\n const isDropValid = draggableProps && draggableProps.isDropValid;\n\n const dropPreviewClassName = useMemo(() => {\n if (isDropIndicatorPositionInside) {\n const className = `${DSTreeViewPrefix}-${treeItemBlockName}${isDropValid ? '--valid' : '--invalid'}-drop-in`;\n return className;\n }\n return '';\n }, [isDropIndicatorPositionInside, isDropValid]);\n\n const dragOverlayClassName = useMemo(() => (isDragOverlay ? 'drag-overlay' : ''), [isDragOverlay]);\n\n const selectedClassName = useMemo(\n () => (selectedItem?.id === item.id && !isDragOverlay ? 'selected' : ''),\n [isDragOverlay, item.id, selectedItem?.id],\n );\n const hoverClassName = useMemo(\n () => (!isDragOverlay && (hoverItem?.id === item.id || isDragging) ? 'hover' : ''),\n [isDragOverlay, hoverItem?.id, item.id, isDragging],\n );\n const fixedHeightClassname = useMemo(() => {\n if (labelOverflow === 'truncate') {\n if (rowSize === 'compact') return `${DSTreeViewPrefix}-${treeItemBlockName}--fixed-height-compact`;\n return `${DSTreeViewPrefix}-${treeItemBlockName}--fixed-height`;\n }\n return '';\n }, [labelOverflow, rowSize]);\n\n const finalClassName = useMemo(\n () =>\n `${dropPreviewClassName} ${fixedHeightClassname} ${selectedClassName} ${hoverClassName} ${dragOverlayClassName}`,\n [dropPreviewClassName, selectedClassName, hoverClassName, fixedHeightClassname, dragOverlayClassName],\n );\n\n const handleItemClick = useCallback(\n (e: React.MouseEvent<HTMLLIElement>) => {\n onItemClick(item, e);\n setFocusedItem(item);\n setSelectedItem(item);\n const itemVirtualIndex = typeof item.virtualIndex === 'number' ? item.virtualIndex : -1;\n onItemFocus({\n itemIndex: itemVirtualIndex,\n scrollToItem: (opts = { align: 'start' }) => scrollToIndex(itemVirtualIndex, opts),\n item,\n });\n },\n [item, scrollToIndex, onItemClick, onItemFocus, setSelectedItem, setFocusedItem],\n );\n\n return (\n <TreeListItem\n tabIndex={0}\n onMouseLeave={() => {\n if (hoverItem?.id === item.id) {\n setHoverItem(null);\n }\n }}\n onMouseEnter={() => {\n setHoverItem(item);\n }}\n onClick={handleItemClick}\n onBlur={() => setFocusedItem(null)}\n ref={setItemRefs}\n style={{ ...itemWrapperStyle }}\n className={finalClassName}\n aria-expanded={!!item.isExpanded}\n aria-selected={!!selectedCheckboxes[item.id]}\n data-id={item.id}\n data-index={item.virtualIndex}\n onKeyDown={onItemKeyDown}\n >\n <TreeListItemAddonsWrapper>\n {withDragAndDrop ? <DnDHandle id={id} isDragOverlay={isDragOverlay} /> : null}\n {withRadioChecks && !isDragOverlay ? <RadioSelectable item={item} itemIndex={itemIndex} /> : null}\n {withCheckboxChecks && !isDragOverlay ? <CheckboxSelectable item={item} itemIndex={itemIndex} /> : null}\n {!isDragOverlay && <NestingSpace item={item} spaceForNestingLevel={spaceForNestingLevel} />}\n {!isDragOverlay && <ExpandCaret item={item} />}\n {!disableIcons ? <Icon item={item} /> : null}\n </TreeListItemAddonsWrapper>\n <TreeItemText item={item} />\n {rightAddons && (\n <TreeListItemAddonsWrapper>\n {typeof rightAddons === 'function' ? rightAddons(item) : rightAddons}\n </TreeListItemAddonsWrapper>\n )}\n <DropIndicator dropIndicatorPosition={dropIndicatorPosition} isDropValid={isDropValid} />\n </TreeListItem>\n );\n};\n\nexport default withDnDSortableItemContext(TreeItem);\n"],
5
+ "mappings": "AAAA;ACEA;AAEA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AAEO,MAAM,eAAe,kBAAkB,MAAM;AAAA,EAClD,eAAe;AAAA,EACf,MAAM;AAAA,GAEL;AAEI,MAAM,4BAA4B,kBAAkB,OACzD,mBACA;AAYK,MAAM,WAAW,CAAC,UAA+B;AACtD,QAAM;AAAA,IACJ;AAAA,IACA;AAAA,IACA,mBAAmB;AAAA,IACnB;AAAA,IACA,uBAAuB;AAAA,IACvB,gBAAgB;AAAA,MACd;AACJ,QAAM,EAAE,IAAI,SAAS;AACrB,QAAM,EAAE,gBAAgB,KAAK;AAE7B,QAAM,EAAE,mBAAmB,WAAW;AAEtC,QAAM,gBAAgB,iBAAiB,MAAM;AAE7C,QAAM,MAAM,WAAW;AACvB,QAAM;AAAA,IACJ,OAAO,EAAE,cAAc,aAAa,aAAa,aAAa,SAAS;AAAA,IACvE;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA,oBAAoB,EAAE;AAAA,IACtB;AAAA,IACA;AAAA,IACA;AAAA,MACE;AAMJ,QAAM,cAA0D,CAAC,QAAuB;AACtF,oBACE,gBACA,CAAC,iBAAiB,aAClB,CAAC,iBAAiB,kBAAkB,eAAe,YACnD;AAAA;AAGJ,QAAM,wBACJ,kBAAkB,eAAe,mCAAmC,eAAe;AAErF,QAAM,gCAAgC,0BAA0B,sBAAsB;AAEtF,QAAM,aAAa,kBAAkB,eAAe;AAEpD,QAAM,cAAc,kBAAkB,eAAe;AAErD,QAAM,uBAAuB,QAAQ,MAAM;AACzC,QAAI,+BAA+B;AACjC,YAAM,YAAY,GAAG,oBAAoB,oBAAoB,cAAc,YAAY;AACvF,aAAO;AAAA;AAET,WAAO;AAAA,KACN,CAAC,+BAA+B;AAEnC,QAAM,uBAAuB,QAAQ,MAAO,gBAAgB,iBAAiB,IAAK,CAAC;AAEnF,QAAM,oBAAoB,QACxB,MAAO,cAAc,OAAO,KAAK,MAAM,CAAC,gBAAgB,aAAa,IACrE,CAAC,eAAe,KAAK,IAAI,cAAc;AAEzC,QAAM,iBAAiB,QACrB,MAAO,CAAC,iBAAkB,YAAW,OAAO,KAAK,MAAM,cAAc,UAAU,IAC/E,CAAC,eAAe,WAAW,IAAI,KAAK,IAAI;AAE1C,QAAM,uBAAuB,QAAQ,MAAM;AACzC,QAAI,kBAAkB,YAAY;AAChC,UAAI,YAAY;AAAW,eAAO,GAAG,oBAAoB;AACzD,aAAO,GAAG,oBAAoB;AAAA;AAEhC,WAAO;AAAA,KACN,CAAC,eAAe;AAEnB,QAAM,iBAAiB,QACrB,MACE,GAAG,wBAAwB,wBAAwB,qBAAqB,kBAAkB,wBAC5F,CAAC,sBAAsB,mBAAmB,gBAAgB,sBAAsB;AAGlF,QAAM,kBAAkB,YACtB,CAAC,MAAuC;AACtC,gBAAY,MAAM;AAClB,mBAAe;AACf,oBAAgB;AAChB,UAAM,mBAAmB,OAAO,KAAK,iBAAiB,WAAW,KAAK,eAAe;AACrF,gBAAY;AAAA,MACV,WAAW;AAAA,MACX,cAAc,CAAC,OAAO,EAAE,OAAO,cAAc,cAAc,kBAAkB;AAAA,MAC7E;AAAA;AAAA,KAGJ,CAAC,MAAM,eAAe,aAAa,aAAa,iBAAiB;AAGnE,SACE,qCAAC,cAAD;AAAA,IACE,UAAU;AAAA,IACV,cAAc,MAAM;AAClB,UAAI,WAAW,OAAO,KAAK,IAAI;AAC7B,qBAAa;AAAA;AAAA;AAAA,IAGjB,cAAc,MAAM;AAClB,mBAAa;AAAA;AAAA,IAEf,SAAS;AAAA,IACT,QAAQ,MAAM,eAAe;AAAA,IAC7B,KAAK;AAAA,IACL,OAAO,KAAK;AAAA,IACZ,WAAW;AAAA,IACX,iBAAe,CAAC,CAAC,KAAK;AAAA,IACtB,iBAAe,CAAC,CAAC,mBAAmB,KAAK;AAAA,IACzC,WAAS,KAAK;AAAA,IACd,cAAY,KAAK;AAAA,IACjB,WAAW;AAAA,KAEX,qCAAC,2BAAD,MACG,kBAAkB,qCAAC,WAAD;AAAA,IAAW;AAAA,IAAQ;AAAA,OAAmC,MACxE,mBAAmB,CAAC,gBAAgB,qCAAC,iBAAD;AAAA,IAAiB;AAAA,IAAY;AAAA,OAA2B,MAC5F,sBAAsB,CAAC,gBAAgB,qCAAC,oBAAD;AAAA,IAAoB;AAAA,IAAY;AAAA,OAA2B,MAClG,CAAC,iBAAiB,qCAAC,cAAD;AAAA,IAAc;AAAA,IAAY;AAAA,MAC5C,CAAC,iBAAiB,qCAAC,aAAD;AAAA,IAAa;AAAA,MAC/B,CAAC,eAAe,qCAAC,MAAD;AAAA,IAAM;AAAA,OAAiB,OAE1C,qCAAC,cAAD;AAAA,IAAc;AAAA,MACb,eACC,qCAAC,2BAAD,MACG,OAAO,gBAAgB,aAAa,YAAY,QAAQ,cAG7D,qCAAC,eAAD;AAAA,IAAe;AAAA,IAA8C;AAAA;AAAA;AAKnE,IAAO,mBAAQ,2BAA2B;",
6
+ "names": []
7
+ }
@@ -0,0 +1,72 @@
1
+ import * as React from "react";
2
+ import React2, { useMemo, useContext } from "react";
3
+ import Highlighter from "react-highlight-words";
4
+ import { SimpleTruncatedTooltipText } from "@elliemae/ds-truncated-tooltip-text";
5
+ import { aggregatedClasses } from "@elliemae/ds-classnames";
6
+ import { ChildrenCountDisplayer } from "./ChildrenCountDisplayer";
7
+ import { DSTreeViewPrefix, treeItemBlockName } from "../config/cssClassesConstants";
8
+ import TreeViewContext from "../TreeViewContext";
9
+ const ItemContent = aggregatedClasses("div")(`${treeItemBlockName}-content`);
10
+ const ItemValue = aggregatedClasses("span")(treeItemBlockName, "value");
11
+ const classNameModifierWrapAll = `${DSTreeViewPrefix}-${treeItemBlockName}__value--wrap-all`;
12
+ const classNameModifierTruncate = `${DSTreeViewPrefix}-${treeItemBlockName}__value--truncate`;
13
+ const CustomHighlight = ({ children }) => /* @__PURE__ */ React2.createElement("mark", {
14
+ className: "tree-text-highlight",
15
+ "data-testid": "tree-text-highlight"
16
+ }, children);
17
+ function TreeItemText(props) {
18
+ const { item } = props;
19
+ const ctx = useContext(TreeViewContext);
20
+ const {
21
+ props: { searchQuery, showChildrenAmount, labelOverflow, nameKey }
22
+ } = ctx;
23
+ const Text = useMemo(() => {
24
+ const itemLabelText = item[nameKey];
25
+ if (searchQuery) {
26
+ if (labelOverflow === "truncate") {
27
+ return /* @__PURE__ */ React2.createElement(SimpleTruncatedTooltipText, {
28
+ value: /* @__PURE__ */ React2.createElement(React2.Fragment, null, /* @__PURE__ */ React2.createElement(Highlighter, {
29
+ autoEscape: true,
30
+ highlightTag: CustomHighlight,
31
+ searchWords: [searchQuery],
32
+ textToHighlight: itemLabelText
33
+ }), showChildrenAmount ? /* @__PURE__ */ React2.createElement(ChildrenCountDisplayer, {
34
+ item
35
+ }) : null)
36
+ });
37
+ }
38
+ return /* @__PURE__ */ React2.createElement(React2.Fragment, null, /* @__PURE__ */ React2.createElement(Highlighter, {
39
+ autoEscape: true,
40
+ highlightTag: CustomHighlight,
41
+ searchWords: [searchQuery],
42
+ textToHighlight: itemLabelText
43
+ }), showChildrenAmount ? /* @__PURE__ */ React2.createElement(ChildrenCountDisplayer, {
44
+ item
45
+ }) : null);
46
+ }
47
+ if (labelOverflow === "truncate") {
48
+ return /* @__PURE__ */ React2.createElement(SimpleTruncatedTooltipText, {
49
+ value: /* @__PURE__ */ React2.createElement(React2.Fragment, null, itemLabelText, showChildrenAmount ? /* @__PURE__ */ React2.createElement(ChildrenCountDisplayer, {
50
+ item
51
+ }) : null)
52
+ });
53
+ }
54
+ return /* @__PURE__ */ React2.createElement(React2.Fragment, null, itemLabelText, showChildrenAmount ? /* @__PURE__ */ React2.createElement(ChildrenCountDisplayer, {
55
+ item
56
+ }) : null);
57
+ }, [item, searchQuery, nameKey, showChildrenAmount, labelOverflow]);
58
+ let className = "";
59
+ if (labelOverflow === "wrap-all")
60
+ className += `${classNameModifierWrapAll} `;
61
+ if (labelOverflow === "truncate")
62
+ className += `${classNameModifierTruncate} `;
63
+ return /* @__PURE__ */ React2.createElement(ItemContent, {
64
+ "data-testid": `${treeItemBlockName}-content`
65
+ }, /* @__PURE__ */ React2.createElement(ItemValue, {
66
+ className
67
+ }, Text));
68
+ }
69
+ export {
70
+ TreeItemText
71
+ };
72
+ //# sourceMappingURL=TreeItemText.js.map
@@ -0,0 +1,7 @@
1
+ {
2
+ "version": 3,
3
+ "sources": ["../../../../../scripts/build/transpile/react-shim.js", "../../../src/parts/TreeItemText.tsx"],
4
+ "sourcesContent": ["import * as React from 'react';\nexport { React };\n", "/* eslint-disable max-lines */\nimport React, { useMemo, useContext } from 'react';\nimport Highlighter from 'react-highlight-words';\nimport { SimpleTruncatedTooltipText } from '@elliemae/ds-truncated-tooltip-text';\nimport { aggregatedClasses } from '@elliemae/ds-classnames';\n\nimport { ChildrenCountDisplayer } from './ChildrenCountDisplayer';\nimport { DSTreeViewPrefix, treeItemBlockName } from '../config/cssClassesConstants';\n\nimport TreeViewContext from '../TreeViewContext';\nimport type { DSTreeviewT } from '../react-desc-prop-types';\n\nconst ItemContent = aggregatedClasses('div')(`${treeItemBlockName}-content`) as unknown as React.ComponentType<\n React.ComponentProps<'div'>\n>;\nconst ItemValue = aggregatedClasses('span')(treeItemBlockName, 'value') as unknown as React.ComponentType<\n React.ComponentProps<'span'>\n>;\n\n// const wrapperClassName = `${DSTreeViewPrefix}-${treeItemBlockName}-content`;\nconst classNameModifierWrapAll = `${DSTreeViewPrefix}-${treeItemBlockName}__value--wrap-all`;\nconst classNameModifierTruncate = `${DSTreeViewPrefix}-${treeItemBlockName}__value--truncate`;\n\n// eslint-disable-next-line react/prop-types\nconst CustomHighlight = ({ children }: { children: React.ReactNode }) => (\n <mark className=\"tree-text-highlight\" data-testid=\"tree-text-highlight\">\n {children}\n </mark>\n);\ninterface PropsT {\n item: DSTreeviewT.Item;\n}\nexport function TreeItemText(props: PropsT): JSX.Element {\n const { item } = props;\n const ctx = useContext(TreeViewContext);\n const {\n props: { searchQuery, showChildrenAmount, labelOverflow, nameKey },\n } = ctx;\n\n const Text = useMemo(() => {\n const itemLabelText = item[nameKey] as DSTreeviewT.Item['name'];\n if (searchQuery) {\n if (labelOverflow === 'truncate') {\n return (\n <SimpleTruncatedTooltipText\n value={\n <>\n <Highlighter\n autoEscape\n highlightTag={CustomHighlight}\n searchWords={[searchQuery]}\n textToHighlight={itemLabelText}\n />\n {showChildrenAmount ? <ChildrenCountDisplayer item={item} /> : null}\n </>\n }\n />\n );\n }\n return (\n <>\n <Highlighter\n autoEscape\n highlightTag={CustomHighlight}\n searchWords={[searchQuery]}\n textToHighlight={itemLabelText}\n />\n {showChildrenAmount ? <ChildrenCountDisplayer item={item} /> : null}\n </>\n );\n }\n if (labelOverflow === 'truncate') {\n return (\n <SimpleTruncatedTooltipText\n value={\n <>\n {itemLabelText}\n {showChildrenAmount ? <ChildrenCountDisplayer item={item} /> : null}\n </>\n }\n />\n );\n }\n return (\n <>\n {itemLabelText}\n {showChildrenAmount ? <ChildrenCountDisplayer item={item} /> : null}\n </>\n );\n }, [item, searchQuery, nameKey, showChildrenAmount, labelOverflow]);\n\n let className = '';\n if (labelOverflow === 'wrap-all') className += `${classNameModifierWrapAll} `;\n if (labelOverflow === 'truncate') className += `${classNameModifierTruncate} `;\n\n return (\n <ItemContent data-testid={`${treeItemBlockName}-content`}>\n <ItemValue className={className}>{Text}</ItemValue>\n </ItemContent>\n );\n}\n"],
5
+ "mappings": "AAAA;ACCA;AACA;AACA;AACA;AAEA;AACA;AAEA;AAGA,MAAM,cAAc,kBAAkB,OAAO,GAAG;AAGhD,MAAM,YAAY,kBAAkB,QAAQ,mBAAmB;AAK/D,MAAM,2BAA2B,GAAG,oBAAoB;AACxD,MAAM,4BAA4B,GAAG,oBAAoB;AAGzD,MAAM,kBAAkB,CAAC,EAAE,eACzB,qCAAC,QAAD;AAAA,EAAM,WAAU;AAAA,EAAsB,eAAY;AAAA,GAC/C;AAME,sBAAsB,OAA4B;AACvD,QAAM,EAAE,SAAS;AACjB,QAAM,MAAM,WAAW;AACvB,QAAM;AAAA,IACJ,OAAO,EAAE,aAAa,oBAAoB,eAAe;AAAA,MACvD;AAEJ,QAAM,OAAO,QAAQ,MAAM;AACzB,UAAM,gBAAgB,KAAK;AAC3B,QAAI,aAAa;AACf,UAAI,kBAAkB,YAAY;AAChC,eACE,qCAAC,4BAAD;AAAA,UACE,OACE,4DACE,qCAAC,aAAD;AAAA,YACE,YAAU;AAAA,YACV,cAAc;AAAA,YACd,aAAa,CAAC;AAAA,YACd,iBAAiB;AAAA,cAElB,qBAAqB,qCAAC,wBAAD;AAAA,YAAwB;AAAA,eAAiB;AAAA;AAAA;AAMzE,aACE,4DACE,qCAAC,aAAD;AAAA,QACE,YAAU;AAAA,QACV,cAAc;AAAA,QACd,aAAa,CAAC;AAAA,QACd,iBAAiB;AAAA,UAElB,qBAAqB,qCAAC,wBAAD;AAAA,QAAwB;AAAA,WAAiB;AAAA;AAIrE,QAAI,kBAAkB,YAAY;AAChC,aACE,qCAAC,4BAAD;AAAA,QACE,OACE,4DACG,eACA,qBAAqB,qCAAC,wBAAD;AAAA,UAAwB;AAAA,aAAiB;AAAA;AAAA;AAMzE,WACE,4DACG,eACA,qBAAqB,qCAAC,wBAAD;AAAA,MAAwB;AAAA,SAAiB;AAAA,KAGlE,CAAC,MAAM,aAAa,SAAS,oBAAoB;AAEpD,MAAI,YAAY;AAChB,MAAI,kBAAkB;AAAY,iBAAa,GAAG;AAClD,MAAI,kBAAkB;AAAY,iBAAa,GAAG;AAElD,SACE,qCAAC,aAAD;AAAA,IAAa,eAAa,GAAG;AAAA,KAC3B,qCAAC,WAAD;AAAA,IAAW;AAAA,KAAuB;AAAA;",
6
+ "names": []
7
+ }
@@ -0,0 +1,94 @@
1
+ import * as React from "react";
2
+ import React2, { useContext } from "react";
3
+ import { aggregatedClasses } from "@elliemae/ds-classnames";
4
+ import { DSCircularProgressIndicator } from "@elliemae/ds-circular-progress-indicator";
5
+ import TreeViewContext from "../TreeViewContext";
6
+ import { DSTreeViewPrefix, treeListBlockName } from "../config/cssClassesConstants";
7
+ import TreeItem from "./TreeItem";
8
+ import { withConditionalDnDRowContext } from "../hoc/WithConditionalDnDContext";
9
+ import { DnDTreeContext } from "../hoc/DnDTreeContext";
10
+ const treeListNoItemsBn = `${treeListBlockName}-no-items`;
11
+ const TreeListNoItems = aggregatedClasses("div", {
12
+ "data-testid": treeListNoItemsBn
13
+ })(treeListNoItemsBn);
14
+ const TreeListWrapper = aggregatedClasses("ul", {
15
+ "data-testid": treeListBlockName,
16
+ role: "tree"
17
+ })(treeListBlockName, null, ({ rowSize }) => ({
18
+ [`rowsize-${rowSize}`]: rowSize
19
+ }));
20
+ const compactRowClass = `${DSTreeViewPrefix}-tv-row-size-compact`;
21
+ const normaRowClass = `${DSTreeViewPrefix}-tv-row-size-normal`;
22
+ const TreeListComp = () => {
23
+ const ctx = useContext(TreeViewContext);
24
+ const {
25
+ virtualListRef,
26
+ virtualListHelpers,
27
+ visibleItems: flattenedVisibleItems,
28
+ props: { width, height, rowSize, noItemsPlaceholder, isLoading }
29
+ } = ctx;
30
+ const { totalSize, virtualItems } = virtualListHelpers;
31
+ const className = `${rowSize === "compact" ? `${compactRowClass}` : `${normaRowClass}`}`;
32
+ const { visibleItems } = useContext(DnDTreeContext);
33
+ return /* @__PURE__ */ React2.createElement(TreeListWrapper, {
34
+ ref: virtualListRef,
35
+ className,
36
+ style: {
37
+ height: `${typeof height === "number" ? `${height}px` : height}`,
38
+ width: `${typeof width === "number" ? `${width}px` : width}`,
39
+ overflow: "auto"
40
+ }
41
+ }, isLoading ? /* @__PURE__ */ React2.createElement("div", {
42
+ style: {
43
+ width: "100%",
44
+ height: "100%",
45
+ display: "flex",
46
+ alignItems: "center",
47
+ justifyContent: "center"
48
+ }
49
+ }, /* @__PURE__ */ React2.createElement(DSCircularProgressIndicator, {
50
+ size: "xl",
51
+ loading: isLoading,
52
+ showLabel: true,
53
+ waiting: false,
54
+ showTooltip: false
55
+ })) : null, !isLoading && virtualItems.length === 0 ? /* @__PURE__ */ React2.createElement(TreeListNoItems, null, noItemsPlaceholder) : null, !isLoading && virtualItems.length !== 0 ? /* @__PURE__ */ React2.createElement("div", {
56
+ style: {
57
+ height: `${totalSize}px`,
58
+ width: "100%",
59
+ position: "relative"
60
+ }
61
+ }, virtualItems.map((virtualItem) => {
62
+ const { index, measureRef, start } = virtualItem;
63
+ const item = (visibleItems || flattenedVisibleItems)[index];
64
+ if (!item)
65
+ return null;
66
+ item.virtualIndex = index;
67
+ const { id } = item;
68
+ const style = {
69
+ position: "absolute",
70
+ top: `${start}px`,
71
+ left: 0,
72
+ width: "100%"
73
+ };
74
+ const listItemProps = {
75
+ key: `DS-TreeView-List-Item-${id}`,
76
+ virtualItemRef: measureRef,
77
+ index,
78
+ itemIndex: index,
79
+ item,
80
+ itemWrapperStyle: style
81
+ };
82
+ return /* @__PURE__ */ React2.createElement(TreeItem, {
83
+ ...listItemProps
84
+ });
85
+ })) : null);
86
+ };
87
+ const TreeList = withConditionalDnDRowContext(TreeListComp);
88
+ export {
89
+ TreeList,
90
+ TreeListNoItems,
91
+ TreeListWrapper,
92
+ treeListNoItemsBn
93
+ };
94
+ //# sourceMappingURL=TreeList.js.map
@@ -0,0 +1,7 @@
1
+ {
2
+ "version": 3,
3
+ "sources": ["../../../../../scripts/build/transpile/react-shim.js", "../../../src/parts/TreeList.tsx"],
4
+ "sourcesContent": ["import * as React from 'react';\nexport { React };\n", "/* eslint-disable max-lines */\nimport React, { useContext } from 'react';\nimport { aggregatedClasses } from '@elliemae/ds-classnames';\nimport { DSCircularProgressIndicator } from '@elliemae/ds-circular-progress-indicator';\n\nimport TreeViewContext from '../TreeViewContext';\nimport { DSTreeViewPrefix, treeListBlockName } from '../config/cssClassesConstants';\nimport TreeItem from './TreeItem';\n\nimport type { DSTreeviewT } from '../react-desc-prop-types';\nimport { withConditionalDnDRowContext } from '../hoc/WithConditionalDnDContext';\nimport { DnDTreeContext } from '../hoc/DnDTreeContext';\n\nexport const treeListNoItemsBn = `${treeListBlockName}-no-items`;\nexport const TreeListNoItems = aggregatedClasses('div', {\n 'data-testid': treeListNoItemsBn,\n})(treeListNoItemsBn) as unknown as React.ComponentType<React.ComponentProps<'div'>>;\n\n// React.ComponentProps<'ul'> uses LegacyRef typings that existed pre-hook era\n// we omit the LegacyRef typings in favor of hook-era typings\ninterface UlProps extends Omit<React.ComponentProps<'ul'>, 'ref'> {\n ref: React.MutableRefObject<HTMLUListElement | undefined> | undefined;\n}\nexport const TreeListWrapper = aggregatedClasses('ul', {\n 'data-testid': treeListBlockName,\n role: 'tree',\n})(treeListBlockName, null, ({ rowSize }: { rowSize: 'normal' | 'compact' }) => ({\n [`rowsize-${rowSize}`]: rowSize,\n})) as unknown as React.ComponentType<UlProps>;\n\nconst compactRowClass = `${DSTreeViewPrefix}-tv-row-size-compact`;\nconst normaRowClass = `${DSTreeViewPrefix}-tv-row-size-normal`;\n\ninterface PropsT {\n onMouseDragOverItem?: (opts: {\n event: React.MouseEvent<HTMLLIElement>;\n item: DSTreeviewT.Item;\n itemIndex: number;\n setIsDraggingOverThis: React.Dispatch<React.SetStateAction<boolean>>;\n openFolderOnHoverTimeout: React.MutableRefObject<NodeJS.Timeout | null>;\n }) => void;\n}\n\nconst TreeListComp: React.ComponentType<PropsT> = () => {\n const ctx = useContext(TreeViewContext);\n const {\n virtualListRef,\n virtualListHelpers,\n visibleItems: flattenedVisibleItems,\n props: { width, height, rowSize, noItemsPlaceholder, isLoading },\n } = ctx;\n const { totalSize, virtualItems } = virtualListHelpers;\n const className = `${rowSize === 'compact' ? `${compactRowClass}` : `${normaRowClass}`}`;\n\n const { visibleItems } = useContext(DnDTreeContext);\n\n return (\n <TreeListWrapper\n ref={virtualListRef}\n className={className}\n style={{\n height: `${typeof height === 'number' ? `${height}px` : height}`,\n width: `${typeof width === 'number' ? `${width}px` : width}`,\n overflow: 'auto',\n }}\n >\n {isLoading ? (\n <div\n style={{\n width: '100%',\n height: '100%',\n display: 'flex',\n alignItems: 'center',\n justifyContent: 'center',\n }}\n >\n <DSCircularProgressIndicator size=\"xl\" loading={isLoading} showLabel waiting={false} showTooltip={false} />\n </div>\n ) : null}\n {!isLoading && virtualItems.length === 0 ? <TreeListNoItems>{noItemsPlaceholder}</TreeListNoItems> : null}\n {!isLoading && virtualItems.length !== 0 ? (\n <div\n style={{\n height: `${totalSize}px`,\n width: '100%',\n position: 'relative',\n }}\n >\n {virtualItems.map((virtualItem) => {\n const { index, measureRef, start } = virtualItem;\n const item = (visibleItems || flattenedVisibleItems)[index];\n if (!item) return null;\n item.virtualIndex = index;\n const { id } = item;\n\n const style = {\n position: 'absolute',\n top: `${start}px`,\n left: 0,\n width: '100%',\n };\n\n const listItemProps = {\n key: `DS-TreeView-List-Item-${id}`,\n virtualItemRef: measureRef,\n index, // this is consumed by the DnD HOC\n itemIndex: index,\n item,\n itemWrapperStyle: style,\n };\n\n return <TreeItem {...listItemProps} />;\n })}\n </div>\n ) : null}\n </TreeListWrapper>\n );\n};\n\nexport const TreeList = withConditionalDnDRowContext(TreeListComp);\n"],
5
+ "mappings": "AAAA;ACCA;AACA;AACA;AAEA;AACA;AACA;AAGA;AACA;AAEO,MAAM,oBAAoB,GAAG;AAC7B,MAAM,kBAAkB,kBAAkB,OAAO;AAAA,EACtD,eAAe;AAAA,GACd;AAOI,MAAM,kBAAkB,kBAAkB,MAAM;AAAA,EACrD,eAAe;AAAA,EACf,MAAM;AAAA,GACL,mBAAmB,MAAM,CAAC,EAAE,cAAkD;AAAA,GAC9E,WAAW,YAAY;AAAA;AAG1B,MAAM,kBAAkB,GAAG;AAC3B,MAAM,gBAAgB,GAAG;AAYzB,MAAM,eAA4C,MAAM;AACtD,QAAM,MAAM,WAAW;AACvB,QAAM;AAAA,IACJ;AAAA,IACA;AAAA,IACA,cAAc;AAAA,IACd,OAAO,EAAE,OAAO,QAAQ,SAAS,oBAAoB;AAAA,MACnD;AACJ,QAAM,EAAE,WAAW,iBAAiB;AACpC,QAAM,YAAY,GAAG,YAAY,YAAY,GAAG,oBAAoB,GAAG;AAEvE,QAAM,EAAE,iBAAiB,WAAW;AAEpC,SACE,qCAAC,iBAAD;AAAA,IACE,KAAK;AAAA,IACL;AAAA,IACA,OAAO;AAAA,MACL,QAAQ,GAAG,OAAO,WAAW,WAAW,GAAG,aAAa;AAAA,MACxD,OAAO,GAAG,OAAO,UAAU,WAAW,GAAG,YAAY;AAAA,MACrD,UAAU;AAAA;AAAA,KAGX,YACC,qCAAC,OAAD;AAAA,IACE,OAAO;AAAA,MACL,OAAO;AAAA,MACP,QAAQ;AAAA,MACR,SAAS;AAAA,MACT,YAAY;AAAA,MACZ,gBAAgB;AAAA;AAAA,KAGlB,qCAAC,6BAAD;AAAA,IAA6B,MAAK;AAAA,IAAK,SAAS;AAAA,IAAW,WAAS;AAAA,IAAC,SAAS;AAAA,IAAO,aAAa;AAAA,QAElG,MACH,CAAC,aAAa,aAAa,WAAW,IAAI,qCAAC,iBAAD,MAAkB,sBAAwC,MACpG,CAAC,aAAa,aAAa,WAAW,IACrC,qCAAC,OAAD;AAAA,IACE,OAAO;AAAA,MACL,QAAQ,GAAG;AAAA,MACX,OAAO;AAAA,MACP,UAAU;AAAA;AAAA,KAGX,aAAa,IAAI,CAAC,gBAAgB;AACjC,UAAM,EAAE,OAAO,YAAY,UAAU;AACrC,UAAM,OAAQ,iBAAgB,uBAAuB;AACrD,QAAI,CAAC;AAAM,aAAO;AAClB,SAAK,eAAe;AACpB,UAAM,EAAE,OAAO;AAEf,UAAM,QAAQ;AAAA,MACZ,UAAU;AAAA,MACV,KAAK,GAAG;AAAA,MACR,MAAM;AAAA,MACN,OAAO;AAAA;AAGT,UAAM,gBAAgB;AAAA,MACpB,KAAK,yBAAyB;AAAA,MAC9B,gBAAgB;AAAA,MAChB;AAAA,MACA,WAAW;AAAA,MACX;AAAA,MACA,kBAAkB;AAAA;AAGpB,WAAO,qCAAC,UAAD;AAAA,SAAc;AAAA;AAAA,QAGvB;AAAA;AAKH,MAAM,WAAW,6BAA6B;",
6
+ "names": []
7
+ }
@@ -0,0 +1,6 @@
1
+ import * as React from "react";
2
+ const TreeDndPlugin = "tree-dnd";
3
+ export {
4
+ TreeDndPlugin
5
+ };
6
+ //# sourceMappingURL=TreeDndPlugin.js.map
@@ -0,0 +1,7 @@
1
+ {
2
+ "version": 3,
3
+ "sources": ["../../../../../../scripts/build/transpile/react-shim.js", "../../../../src/plugins/dnd/TreeDndPlugin.tsx"],
4
+ "sourcesContent": ["import * as React from 'react';\nexport { React };\n", "export const TreeDndPlugin = 'tree-dnd';\n"],
5
+ "mappings": "AAAA;ACAO,MAAM,gBAAgB;",
6
+ "names": []
7
+ }
@@ -0,0 +1,3 @@
1
+ import * as React from "react";
2
+ export * from "./TreeDndPlugin";
3
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1,7 @@
1
+ {
2
+ "version": 3,
3
+ "sources": ["../../../../../../scripts/build/transpile/react-shim.js", "../../../../src/plugins/dnd/index.tsx"],
4
+ "sourcesContent": ["import * as React from 'react';\nexport { React };\n", "export * from './TreeDndPlugin';\n"],
5
+ "mappings": "AAAA;ACAA;",
6
+ "names": []
7
+ }
@@ -0,0 +1,9 @@
1
+ import * as React from "react";
2
+ export * from "./dnd";
3
+ export * from "./roving";
4
+ export * from "./selectable";
5
+ export * from "./toolbar";
6
+ export * from "./tree";
7
+ export * from "./virtualization";
8
+ export * from "./searchable";
9
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1,7 @@
1
+ {
2
+ "version": 3,
3
+ "sources": ["../../../../../scripts/build/transpile/react-shim.js", "../../../src/plugins/index.tsx"],
4
+ "sourcesContent": ["import * as React from 'react';\nexport { React };\n", "export * from './dnd';\nexport * from './roving';\nexport * from './selectable';\nexport * from './toolbar';\nexport * from './tree';\nexport * from './virtualization';\nexport * from './searchable';\n"],
5
+ "mappings": "AAAA;ACAA;AACA;AACA;AACA;AACA;AACA;AACA;",
6
+ "names": []
7
+ }