rsuite 5.60.2 → 5.61.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 (438) hide show
  1. package/Accordion/styles/index.css +4 -4
  2. package/AutoComplete/styles/index.css +58 -22
  3. package/Button/styles/index.css +12 -8
  4. package/Button/styles/mixin.less +1 -1
  5. package/CHANGELOG.md +25 -0
  6. package/Calendar/styles/index.css +16 -15
  7. package/CascadeTree/styles/index.css +11 -9
  8. package/CascadeTree/styles/index.less +7 -0
  9. package/CascadeTree/styles/search.less +0 -10
  10. package/Cascader/styles/index.css +60 -31
  11. package/CheckPicker/styles/index.css +59 -27
  12. package/CheckPicker/styles/index.less +3 -3
  13. package/CheckTree/styles/index.css +160 -134
  14. package/CheckTree/styles/index.less +141 -1
  15. package/CheckTreePicker/styles/index.css +170 -126
  16. package/CheckTreePicker/styles/index.less +8 -181
  17. package/Checkbox/styles/index.css +7 -8
  18. package/Checkbox/styles/index.less +1 -5
  19. package/DateInput/styles/index.css +4 -4
  20. package/DatePicker/styles/index.css +62 -26
  21. package/DateRangeInput/styles/index.css +4 -4
  22. package/DateRangePicker/styles/index.css +67 -26
  23. package/DateRangePicker/styles/index.less +2 -0
  24. package/Dropdown/styles/index.css +14 -13
  25. package/Highlight/package.json +7 -0
  26. package/Highlight/styles/index.css +8 -0
  27. package/Highlight/styles/index.less +6 -0
  28. package/IconButton/styles/index.css +11 -10
  29. package/Input/styles/index.css +4 -4
  30. package/InputGroup/styles/index.css +18 -17
  31. package/InputGroup/styles/index.less +1 -1
  32. package/InputNumber/styles/index.css +19 -18
  33. package/InputPicker/styles/index.css +58 -22
  34. package/MultiCascadeTree/styles/index.css +61 -36
  35. package/MultiCascadeTree/styles/index.less +1 -1
  36. package/MultiCascader/styles/index.css +704 -679
  37. package/MultiCascader/styles/index.less +0 -1
  38. package/Nav/styles/index.css +15 -14
  39. package/Navbar/styles/index.css +14 -13
  40. package/Pagination/styles/index.css +62 -26
  41. package/Panel/styles/index.css +4 -4
  42. package/Placeholder/styles/index.css +2 -3
  43. package/Placeholder/styles/index.less +2 -3
  44. package/README.md +21 -39
  45. package/Radio/styles/index.css +7 -7
  46. package/Radio/styles/index.less +1 -5
  47. package/RangeSlider/styles/index.css +1 -1
  48. package/Rate/styles/index.css +1 -1
  49. package/Rate/styles/index.less +1 -1
  50. package/SelectPicker/styles/index.css +58 -22
  51. package/Slider/styles/index.css +1 -1
  52. package/Slider/styles/index.less +1 -1
  53. package/Steps/styles/index.css +6 -1
  54. package/Steps/styles/index.less +2 -1
  55. package/Tabs/styles/index.css +15 -14
  56. package/TagInput/styles/index.css +59 -27
  57. package/TagPicker/styles/index.css +59 -27
  58. package/Toggle/styles/index.css +10 -7
  59. package/Tree/styles/indent-line.less +8 -0
  60. package/Tree/styles/index.css +140 -141
  61. package/Tree/styles/index.less +188 -1
  62. package/Tree/styles/toggle.less +36 -0
  63. package/TreePicker/styles/index.css +142 -134
  64. package/TreePicker/styles/index.less +4 -234
  65. package/Uploader/styles/index.css +12 -11
  66. package/cjs/@types/common.d.ts +41 -4
  67. package/cjs/AutoComplete/AutoComplete.js +2 -1
  68. package/cjs/CascadeTree/CascadeTree.js +8 -7
  69. package/cjs/CascadeTree/SearchView.js +7 -14
  70. package/cjs/CascadeTree/hooks/usePaths.js +4 -4
  71. package/cjs/CascadeTree/hooks/useSearch.js +2 -1
  72. package/cjs/CascadeTree/utils.d.ts +0 -11
  73. package/cjs/CascadeTree/utils.js +0 -23
  74. package/cjs/Cascader/Cascader.js +17 -16
  75. package/cjs/CheckPicker/CheckPicker.js +26 -29
  76. package/cjs/CheckTree/CheckTree.d.ts +16 -0
  77. package/cjs/CheckTree/CheckTree.js +112 -0
  78. package/cjs/CheckTree/CheckTreeNode.d.ts +72 -0
  79. package/cjs/CheckTree/CheckTreeNode.js +117 -0
  80. package/cjs/CheckTree/CheckTreeView.d.ts +70 -0
  81. package/cjs/CheckTree/CheckTreeView.js +310 -0
  82. package/cjs/CheckTree/hooks/useTreeCheckState.d.ts +10 -0
  83. package/cjs/CheckTree/hooks/useTreeCheckState.js +93 -0
  84. package/cjs/CheckTree/hooks/useTreeNodeProps.d.ts +22 -0
  85. package/cjs/CheckTree/hooks/useTreeNodeProps.js +59 -0
  86. package/cjs/CheckTree/hooks/useTreeValue.d.ts +5 -0
  87. package/cjs/CheckTree/hooks/useTreeValue.js +21 -0
  88. package/cjs/CheckTree/index.d.ts +2 -14
  89. package/cjs/CheckTree/index.js +2 -23
  90. package/cjs/CheckTree/utils.d.ts +53 -0
  91. package/cjs/{CheckTreePicker → CheckTree}/utils.js +76 -26
  92. package/cjs/CheckTreePicker/CheckTreePicker.d.ts +30 -12
  93. package/cjs/CheckTreePicker/CheckTreePicker.js +153 -603
  94. package/cjs/CheckTreePicker/hooks/useFocusState.d.ts +16 -0
  95. package/cjs/CheckTreePicker/hooks/useFocusState.js +42 -0
  96. package/cjs/DatePicker/DatePicker.d.ts +4 -0
  97. package/cjs/DatePicker/DatePicker.js +20 -5
  98. package/cjs/DatePicker/types.d.ts +0 -4
  99. package/cjs/DateRangePicker/DateRangePicker.d.ts +51 -23
  100. package/cjs/DateRangePicker/DateRangePicker.js +71 -51
  101. package/cjs/DateRangePicker/hooks/useDateDisabled.d.ts +16 -0
  102. package/cjs/DateRangePicker/hooks/useDateDisabled.js +31 -0
  103. package/cjs/DateRangePicker/types.d.ts +1 -0
  104. package/cjs/Highlight/Highlight.d.ts +14 -0
  105. package/cjs/Highlight/Highlight.js +58 -0
  106. package/cjs/Highlight/index.d.ts +3 -0
  107. package/cjs/Highlight/index.js +9 -0
  108. package/cjs/Highlight/utils/highlightText.d.ts +5 -0
  109. package/cjs/Highlight/utils/highlightText.js +29 -0
  110. package/cjs/InputPicker/InputPicker.js +37 -41
  111. package/cjs/MultiCascadeTree/SearchView.js +6 -14
  112. package/cjs/MultiCascadeTree/hooks/useCascadeValue.js +15 -1
  113. package/cjs/MultiCascadeTree/hooks/useColumnData.js +2 -2
  114. package/cjs/MultiCascadeTree/hooks/useFlattenData.js +3 -3
  115. package/cjs/MultiCascadeTree/hooks/useSearch.js +2 -1
  116. package/cjs/MultiCascadeTree/utils.d.ts +4 -4
  117. package/cjs/MultiCascadeTree/utils.js +20 -11
  118. package/cjs/MultiCascader/MultiCascader.js +12 -12
  119. package/cjs/SelectPicker/SelectPicker.js +2 -6
  120. package/cjs/Tree/IndentLine.d.ts +3 -0
  121. package/cjs/Tree/IndentLine.js +18 -0
  122. package/cjs/Tree/Tree.d.ts +4 -92
  123. package/cjs/Tree/Tree.js +79 -20
  124. package/cjs/Tree/TreeNode.d.ts +101 -0
  125. package/cjs/Tree/TreeNode.js +147 -0
  126. package/cjs/Tree/TreeNodeToggle.d.ts +9 -0
  127. package/cjs/Tree/TreeNodeToggle.js +56 -0
  128. package/cjs/Tree/TreeProvider.d.ts +52 -0
  129. package/cjs/Tree/TreeProvider.js +84 -0
  130. package/cjs/Tree/TreeView.d.ts +68 -0
  131. package/cjs/Tree/TreeView.js +305 -0
  132. package/cjs/Tree/hooks/useExpandTree.d.ts +60 -0
  133. package/cjs/Tree/hooks/useExpandTree.js +77 -0
  134. package/cjs/Tree/hooks/useFlattenTree.d.ts +42 -0
  135. package/cjs/Tree/hooks/useFlattenTree.js +98 -0
  136. package/cjs/Tree/hooks/useFocusTree.d.ts +24 -0
  137. package/cjs/Tree/hooks/useFocusTree.js +158 -0
  138. package/cjs/Tree/hooks/useForceUpdate.d.ts +2 -0
  139. package/cjs/Tree/hooks/useForceUpdate.js +16 -0
  140. package/cjs/Tree/hooks/useTreeDrag.d.ts +32 -0
  141. package/cjs/Tree/hooks/useTreeDrag.js +268 -0
  142. package/cjs/Tree/hooks/useTreeNodeProps.d.ts +29 -0
  143. package/cjs/Tree/hooks/useTreeNodeProps.js +83 -0
  144. package/cjs/Tree/hooks/useTreeNodeRefs.d.ts +6 -0
  145. package/cjs/Tree/hooks/useTreeNodeRefs.js +22 -0
  146. package/cjs/Tree/hooks/useTreeSearch.d.ts +18 -0
  147. package/cjs/Tree/hooks/useTreeSearch.js +74 -0
  148. package/cjs/Tree/hooks/useTreeWithChildren.d.ts +14 -0
  149. package/cjs/Tree/hooks/useTreeWithChildren.js +64 -0
  150. package/cjs/Tree/hooks/useVirtualizedTreeData.d.ts +7 -0
  151. package/cjs/Tree/hooks/useVirtualizedTreeData.js +82 -0
  152. package/cjs/Tree/types.d.ts +257 -0
  153. package/cjs/Tree/types.js +33 -0
  154. package/cjs/Tree/utils/flattenTree.d.ts +25 -0
  155. package/cjs/Tree/utils/flattenTree.js +95 -0
  156. package/cjs/Tree/utils/focusableTree.d.ts +55 -0
  157. package/cjs/Tree/utils/focusableTree.js +157 -0
  158. package/cjs/Tree/utils/formatNodeRefKey.d.ts +4 -0
  159. package/cjs/Tree/utils/formatNodeRefKey.js +11 -0
  160. package/cjs/Tree/utils/getExpandItemValues.d.ts +11 -0
  161. package/cjs/Tree/utils/getExpandItemValues.js +21 -0
  162. package/cjs/Tree/utils/getNodeParentKeys.d.ts +5 -0
  163. package/cjs/Tree/utils/getNodeParentKeys.js +21 -0
  164. package/cjs/Tree/utils/getTreeActiveNode.d.ts +5 -0
  165. package/cjs/Tree/utils/getTreeActiveNode.js +21 -0
  166. package/cjs/Tree/utils/hasVisibleChildren.d.ts +5 -0
  167. package/cjs/Tree/utils/hasVisibleChildren.js +16 -0
  168. package/cjs/Tree/utils/indentTreeNode.d.ts +3 -0
  169. package/cjs/Tree/utils/indentTreeNode.js +18 -0
  170. package/cjs/Tree/utils/index.d.ts +11 -0
  171. package/cjs/Tree/utils/index.js +35 -0
  172. package/cjs/Tree/utils/isExpand.d.ts +6 -0
  173. package/cjs/Tree/utils/isExpand.js +14 -0
  174. package/cjs/Tree/utils/isSearching.d.ts +1 -0
  175. package/cjs/Tree/utils/isSearching.js +10 -0
  176. package/cjs/Tree/utils/treeKeyboardInteractions.d.ts +21 -0
  177. package/cjs/Tree/utils/treeKeyboardInteractions.js +49 -0
  178. package/cjs/TreePicker/TreePicker.d.ts +27 -21
  179. package/cjs/TreePicker/TreePicker.js +155 -575
  180. package/cjs/TreePicker/hooks/useFocusState.d.ts +20 -0
  181. package/cjs/TreePicker/hooks/useFocusState.js +53 -0
  182. package/cjs/index.d.ts +2 -0
  183. package/cjs/index.js +3 -1
  184. package/cjs/internals/Picker/Listbox.d.ts +40 -10
  185. package/cjs/internals/Picker/Listbox.js +21 -16
  186. package/cjs/internals/Picker/PickerIndicator.d.ts +2 -1
  187. package/cjs/internals/Picker/PickerIndicator.js +7 -3
  188. package/cjs/internals/Picker/hooks/useFocusItemValue.js +4 -4
  189. package/cjs/internals/Picker/hooks/usePickerRef.d.ts +1 -4
  190. package/cjs/internals/Picker/hooks/usePickerRef.js +3 -20
  191. package/cjs/internals/Picker/index.d.ts +0 -1
  192. package/cjs/internals/Picker/index.js +1 -4
  193. package/cjs/internals/Picker/utils.js +12 -12
  194. package/cjs/internals/{Picker → Tree}/TreeView.js +1 -1
  195. package/cjs/internals/Tree/index.d.ts +1 -0
  196. package/cjs/internals/Tree/index.js +8 -0
  197. package/cjs/internals/Tree/utils/filterNodesOfTree.d.ts +5 -0
  198. package/cjs/internals/Tree/utils/filterNodesOfTree.js +31 -0
  199. package/cjs/internals/Tree/utils/findNodeOfTree.d.ts +1 -0
  200. package/cjs/internals/Tree/utils/findNodeOfTree.js +26 -0
  201. package/cjs/internals/Tree/utils/getParentMap.d.ts +15 -0
  202. package/cjs/internals/Tree/utils/getParentMap.js +52 -0
  203. package/cjs/internals/Tree/utils/getPathTowardsItem.d.ts +4 -0
  204. package/cjs/internals/Tree/utils/getPathTowardsItem.js +16 -0
  205. package/cjs/internals/Tree/utils/index.d.ts +4 -0
  206. package/cjs/internals/Tree/utils/index.js +14 -0
  207. package/cjs/internals/Windowing/List.d.ts +1 -0
  208. package/cjs/internals/Windowing/List.js +5 -1
  209. package/cjs/internals/Windowing/index.d.ts +1 -1
  210. package/cjs/internals/Windowing/index.js +4 -2
  211. package/cjs/internals/hooks/index.d.ts +1 -0
  212. package/cjs/internals/hooks/index.js +8 -0
  213. package/cjs/internals/hooks/useFoucsVirtualListItem.d.ts +7 -0
  214. package/cjs/internals/hooks/useFoucsVirtualListItem.js +26 -0
  215. package/cjs/{utils → internals/utils}/getSafeRegExpString.d.ts +1 -1
  216. package/cjs/{utils → internals/utils}/getSafeRegExpString.js +1 -1
  217. package/cjs/internals/utils/index.d.ts +2 -0
  218. package/cjs/internals/utils/index.js +9 -0
  219. package/cjs/internals/utils/stringifyReactNode.d.ts +2 -0
  220. package/cjs/internals/utils/stringifyReactNode.js +17 -0
  221. package/cjs/utils/constants.d.ts +0 -2
  222. package/cjs/utils/constants.js +1 -6
  223. package/cjs/utils/getDataGroupBy.js +3 -3
  224. package/cjs/utils/index.d.ts +0 -3
  225. package/cjs/utils/index.js +1 -10
  226. package/cjs/utils/useIsomorphicLayoutEffect.d.ts +2 -2
  227. package/dist/rsuite-no-reset-rtl.css +292 -300
  228. package/dist/rsuite-no-reset-rtl.min.css +1 -1
  229. package/dist/rsuite-no-reset-rtl.min.css.map +1 -1
  230. package/dist/rsuite-no-reset.css +294 -304
  231. package/dist/rsuite-no-reset.min.css +1 -1
  232. package/dist/rsuite-no-reset.min.css.map +1 -1
  233. package/dist/rsuite-rtl.css +293 -301
  234. package/dist/rsuite-rtl.min.css +1 -1
  235. package/dist/rsuite-rtl.min.css.map +1 -1
  236. package/dist/rsuite.css +295 -305
  237. package/dist/rsuite.js +611 -116
  238. package/dist/rsuite.js.map +1 -1
  239. package/dist/rsuite.min.css +1 -1
  240. package/dist/rsuite.min.css.map +1 -1
  241. package/dist/rsuite.min.js +1 -1
  242. package/dist/rsuite.min.js.map +1 -1
  243. package/esm/@types/common.d.ts +41 -4
  244. package/esm/AutoComplete/AutoComplete.js +2 -1
  245. package/esm/CascadeTree/CascadeTree.js +2 -1
  246. package/esm/CascadeTree/SearchView.js +6 -13
  247. package/esm/CascadeTree/hooks/usePaths.js +1 -1
  248. package/esm/CascadeTree/hooks/useSearch.js +2 -1
  249. package/esm/CascadeTree/utils.d.ts +0 -11
  250. package/esm/CascadeTree/utils.js +0 -22
  251. package/esm/Cascader/Cascader.js +2 -1
  252. package/esm/CheckPicker/CheckPicker.js +4 -7
  253. package/esm/CheckTree/CheckTree.d.ts +16 -0
  254. package/esm/CheckTree/CheckTree.js +105 -0
  255. package/esm/CheckTree/CheckTreeNode.d.ts +72 -0
  256. package/esm/CheckTree/CheckTreeNode.js +110 -0
  257. package/esm/CheckTree/CheckTreeView.d.ts +70 -0
  258. package/esm/CheckTree/CheckTreeView.js +304 -0
  259. package/esm/CheckTree/hooks/useTreeCheckState.d.ts +10 -0
  260. package/esm/CheckTree/hooks/useTreeCheckState.js +87 -0
  261. package/esm/CheckTree/hooks/useTreeNodeProps.d.ts +22 -0
  262. package/esm/CheckTree/hooks/useTreeNodeProps.js +52 -0
  263. package/esm/CheckTree/hooks/useTreeValue.d.ts +5 -0
  264. package/esm/CheckTree/hooks/useTreeValue.js +16 -0
  265. package/esm/CheckTree/index.d.ts +2 -14
  266. package/esm/CheckTree/index.js +1 -21
  267. package/esm/CheckTree/utils.d.ts +53 -0
  268. package/esm/{CheckTreePicker → CheckTree}/utils.js +72 -22
  269. package/esm/CheckTreePicker/CheckTreePicker.d.ts +30 -12
  270. package/esm/CheckTreePicker/CheckTreePicker.js +156 -607
  271. package/esm/CheckTreePicker/hooks/useFocusState.d.ts +16 -0
  272. package/esm/CheckTreePicker/hooks/useFocusState.js +37 -0
  273. package/esm/DatePicker/DatePicker.d.ts +4 -0
  274. package/esm/DatePicker/DatePicker.js +20 -5
  275. package/esm/DatePicker/types.d.ts +0 -4
  276. package/esm/DateRangePicker/DateRangePicker.d.ts +51 -23
  277. package/esm/DateRangePicker/DateRangePicker.js +71 -51
  278. package/esm/DateRangePicker/hooks/useDateDisabled.d.ts +16 -0
  279. package/esm/DateRangePicker/hooks/useDateDisabled.js +26 -0
  280. package/esm/DateRangePicker/types.d.ts +1 -0
  281. package/esm/Highlight/Highlight.d.ts +14 -0
  282. package/esm/Highlight/Highlight.js +52 -0
  283. package/esm/Highlight/index.d.ts +3 -0
  284. package/esm/Highlight/index.js +3 -0
  285. package/esm/Highlight/utils/highlightText.d.ts +5 -0
  286. package/esm/Highlight/utils/highlightText.js +25 -0
  287. package/esm/InputPicker/InputPicker.js +3 -7
  288. package/esm/MultiCascadeTree/SearchView.js +6 -14
  289. package/esm/MultiCascadeTree/hooks/useCascadeValue.js +15 -1
  290. package/esm/MultiCascadeTree/hooks/useColumnData.js +1 -1
  291. package/esm/MultiCascadeTree/hooks/useFlattenData.js +1 -1
  292. package/esm/MultiCascadeTree/hooks/useSearch.js +2 -1
  293. package/esm/MultiCascadeTree/utils.d.ts +4 -4
  294. package/esm/MultiCascadeTree/utils.js +18 -9
  295. package/esm/MultiCascader/MultiCascader.js +1 -1
  296. package/esm/SelectPicker/SelectPicker.js +2 -6
  297. package/esm/Tree/IndentLine.d.ts +3 -0
  298. package/esm/Tree/IndentLine.js +12 -0
  299. package/esm/Tree/Tree.d.ts +4 -92
  300. package/esm/Tree/Tree.js +78 -18
  301. package/esm/Tree/TreeNode.d.ts +101 -0
  302. package/esm/Tree/TreeNode.js +141 -0
  303. package/esm/Tree/TreeNodeToggle.d.ts +9 -0
  304. package/esm/Tree/TreeNodeToggle.js +50 -0
  305. package/esm/Tree/TreeProvider.d.ts +52 -0
  306. package/esm/Tree/TreeProvider.js +74 -0
  307. package/esm/Tree/TreeView.d.ts +68 -0
  308. package/esm/Tree/TreeView.js +299 -0
  309. package/esm/Tree/hooks/useExpandTree.d.ts +60 -0
  310. package/esm/Tree/hooks/useExpandTree.js +70 -0
  311. package/esm/Tree/hooks/useFlattenTree.d.ts +42 -0
  312. package/esm/Tree/hooks/useFlattenTree.js +92 -0
  313. package/esm/Tree/hooks/useFocusTree.d.ts +24 -0
  314. package/esm/Tree/hooks/useFocusTree.js +153 -0
  315. package/esm/Tree/hooks/useForceUpdate.d.ts +2 -0
  316. package/esm/Tree/hooks/useForceUpdate.js +11 -0
  317. package/esm/Tree/hooks/useTreeDrag.d.ts +32 -0
  318. package/esm/Tree/hooks/useTreeDrag.js +264 -0
  319. package/esm/Tree/hooks/useTreeNodeProps.d.ts +29 -0
  320. package/esm/Tree/hooks/useTreeNodeProps.js +76 -0
  321. package/esm/Tree/hooks/useTreeNodeRefs.d.ts +6 -0
  322. package/esm/Tree/hooks/useTreeNodeRefs.js +18 -0
  323. package/esm/Tree/hooks/useTreeSearch.d.ts +18 -0
  324. package/esm/Tree/hooks/useTreeSearch.js +69 -0
  325. package/esm/Tree/hooks/useTreeWithChildren.d.ts +14 -0
  326. package/esm/Tree/hooks/useTreeWithChildren.js +59 -0
  327. package/esm/Tree/hooks/useVirtualizedTreeData.d.ts +7 -0
  328. package/esm/Tree/hooks/useVirtualizedTreeData.js +77 -0
  329. package/esm/Tree/types.d.ts +257 -0
  330. package/esm/Tree/types.js +30 -0
  331. package/esm/Tree/utils/flattenTree.d.ts +25 -0
  332. package/esm/Tree/utils/flattenTree.js +88 -0
  333. package/esm/Tree/utils/focusableTree.d.ts +55 -0
  334. package/esm/Tree/utils/focusableTree.js +146 -0
  335. package/esm/Tree/utils/formatNodeRefKey.d.ts +4 -0
  336. package/esm/Tree/utils/formatNodeRefKey.js +7 -0
  337. package/esm/Tree/utils/getExpandItemValues.d.ts +11 -0
  338. package/esm/Tree/utils/getExpandItemValues.js +17 -0
  339. package/esm/Tree/utils/getNodeParentKeys.d.ts +5 -0
  340. package/esm/Tree/utils/getNodeParentKeys.js +17 -0
  341. package/esm/Tree/utils/getTreeActiveNode.d.ts +5 -0
  342. package/esm/Tree/utils/getTreeActiveNode.js +16 -0
  343. package/esm/Tree/utils/hasVisibleChildren.d.ts +5 -0
  344. package/esm/Tree/utils/hasVisibleChildren.js +12 -0
  345. package/esm/Tree/utils/indentTreeNode.d.ts +3 -0
  346. package/esm/Tree/utils/indentTreeNode.js +14 -0
  347. package/esm/Tree/utils/index.d.ts +11 -0
  348. package/esm/Tree/utils/index.js +14 -0
  349. package/esm/Tree/utils/isExpand.d.ts +6 -0
  350. package/esm/Tree/utils/isExpand.js +11 -0
  351. package/esm/Tree/utils/isSearching.d.ts +1 -0
  352. package/esm/Tree/utils/isSearching.js +5 -0
  353. package/esm/Tree/utils/treeKeyboardInteractions.d.ts +21 -0
  354. package/esm/Tree/utils/treeKeyboardInteractions.js +43 -0
  355. package/esm/TreePicker/TreePicker.d.ts +27 -21
  356. package/esm/TreePicker/TreePicker.js +158 -579
  357. package/esm/TreePicker/hooks/useFocusState.d.ts +20 -0
  358. package/esm/TreePicker/hooks/useFocusState.js +48 -0
  359. package/esm/index.d.ts +2 -0
  360. package/esm/index.js +1 -0
  361. package/esm/internals/Picker/Listbox.d.ts +40 -10
  362. package/esm/internals/Picker/Listbox.js +22 -16
  363. package/esm/internals/Picker/PickerIndicator.d.ts +2 -1
  364. package/esm/internals/Picker/PickerIndicator.js +7 -3
  365. package/esm/internals/Picker/hooks/useFocusItemValue.js +1 -1
  366. package/esm/internals/Picker/hooks/usePickerRef.d.ts +1 -4
  367. package/esm/internals/Picker/hooks/usePickerRef.js +3 -20
  368. package/esm/internals/Picker/index.d.ts +0 -1
  369. package/esm/internals/Picker/index.js +0 -1
  370. package/esm/internals/Picker/utils.js +1 -1
  371. package/esm/internals/{Picker → Tree}/TreeView.js +1 -1
  372. package/esm/internals/Tree/index.d.ts +1 -0
  373. package/esm/internals/Tree/index.js +2 -0
  374. package/esm/internals/Tree/utils/filterNodesOfTree.d.ts +5 -0
  375. package/esm/internals/Tree/utils/filterNodesOfTree.js +26 -0
  376. package/esm/internals/Tree/utils/findNodeOfTree.d.ts +1 -0
  377. package/esm/internals/Tree/utils/findNodeOfTree.js +22 -0
  378. package/esm/internals/Tree/utils/getParentMap.d.ts +15 -0
  379. package/esm/internals/Tree/utils/getParentMap.js +47 -0
  380. package/esm/internals/Tree/utils/getPathTowardsItem.d.ts +4 -0
  381. package/esm/internals/Tree/utils/getPathTowardsItem.js +12 -0
  382. package/esm/internals/Tree/utils/index.d.ts +4 -0
  383. package/esm/internals/Tree/utils/index.js +5 -0
  384. package/esm/internals/Windowing/List.d.ts +1 -0
  385. package/esm/internals/Windowing/List.js +3 -0
  386. package/esm/internals/Windowing/index.d.ts +1 -1
  387. package/esm/internals/Windowing/index.js +1 -1
  388. package/esm/internals/hooks/index.d.ts +1 -0
  389. package/esm/internals/hooks/index.js +2 -0
  390. package/esm/internals/hooks/useFoucsVirtualListItem.d.ts +7 -0
  391. package/esm/internals/hooks/useFoucsVirtualListItem.js +22 -0
  392. package/esm/{utils → internals/utils}/getSafeRegExpString.d.ts +1 -1
  393. package/esm/{utils → internals/utils}/getSafeRegExpString.js +1 -1
  394. package/esm/internals/utils/index.d.ts +2 -0
  395. package/esm/internals/utils/index.js +3 -0
  396. package/esm/internals/utils/stringifyReactNode.d.ts +2 -0
  397. package/esm/internals/utils/stringifyReactNode.js +12 -0
  398. package/esm/utils/constants.d.ts +0 -2
  399. package/esm/utils/constants.js +0 -3
  400. package/esm/utils/getDataGroupBy.js +1 -1
  401. package/esm/utils/index.d.ts +0 -3
  402. package/esm/utils/index.js +0 -3
  403. package/esm/utils/useIsomorphicLayoutEffect.d.ts +2 -2
  404. package/internals/Picker/styles/index.less +27 -1
  405. package/package.json +1 -1
  406. package/styles/color-modes/dark.less +5 -1
  407. package/styles/color-modes/high-contrast.less +8 -2
  408. package/styles/color-modes/light.less +10 -5
  409. package/styles/index.less +1 -0
  410. package/TreePicker/styles/mixin.less +0 -7
  411. package/cjs/CheckTreePicker/CheckTreeNode.d.ts +0 -28
  412. package/cjs/CheckTreePicker/CheckTreeNode.js +0 -140
  413. package/cjs/CheckTreePicker/utils.d.ts +0 -44
  414. package/cjs/Tree/TreeContext.d.ts +0 -6
  415. package/cjs/Tree/TreeContext.js +0 -10
  416. package/cjs/TreePicker/TreeNode.d.ts +0 -36
  417. package/cjs/TreePicker/TreeNode.js +0 -174
  418. package/cjs/utils/appendTooltip.d.ts +0 -10
  419. package/cjs/utils/appendTooltip.js +0 -20
  420. package/cjs/utils/stringToObject.d.ts +0 -2
  421. package/cjs/utils/stringToObject.js +0 -19
  422. package/cjs/utils/treeUtils.d.ts +0 -304
  423. package/cjs/utils/treeUtils.js +0 -1095
  424. package/esm/CheckTreePicker/CheckTreeNode.d.ts +0 -28
  425. package/esm/CheckTreePicker/CheckTreeNode.js +0 -133
  426. package/esm/CheckTreePicker/utils.d.ts +0 -44
  427. package/esm/Tree/TreeContext.d.ts +0 -6
  428. package/esm/Tree/TreeContext.js +0 -4
  429. package/esm/TreePicker/TreeNode.d.ts +0 -36
  430. package/esm/TreePicker/TreeNode.js +0 -167
  431. package/esm/utils/appendTooltip.d.ts +0 -10
  432. package/esm/utils/appendTooltip.js +0 -15
  433. package/esm/utils/stringToObject.d.ts +0 -2
  434. package/esm/utils/stringToObject.js +0 -14
  435. package/esm/utils/treeUtils.d.ts +0 -304
  436. package/esm/utils/treeUtils.js +0 -1043
  437. /package/cjs/internals/{Picker → Tree}/TreeView.d.ts +0 -0
  438. /package/esm/internals/{Picker → Tree}/TreeView.d.ts +0 -0
@@ -1,1095 +0,0 @@
1
- 'use client';
2
- "use strict";
3
-
4
- var _interopRequireWildcard = require("@babel/runtime/helpers/interopRequireWildcard");
5
- var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
6
- exports.__esModule = true;
7
- exports.shouldShowNodeByParentExpanded = shouldShowNodeByParentExpanded;
8
- exports.UNSAFE_flattenTree = UNSAFE_flattenTree;
9
- exports.flattenTree = flattenTree;
10
- exports.walkTreeBfs = walkTreeBfs;
11
- exports.walkTreeDfs = walkTreeDfs;
12
- exports.getNodeParents = getNodeParents;
13
- exports.getNodeParentKeys = getNodeParentKeys;
14
- exports.hasVisibleChildren = hasVisibleChildren;
15
- exports.compareArray = compareArray;
16
- exports.getDefaultExpandItemValues = getDefaultExpandItemValues;
17
- exports.getExpandItemValues = getExpandItemValues;
18
- exports.getDragNodeKeys = getDragNodeKeys;
19
- exports.calDropNodePosition = calDropNodePosition;
20
- exports.removeDragNode = removeDragNode;
21
- exports.createUpdateTreeDataFunction = createUpdateTreeDataFunction;
22
- exports.findNodeOfTree = findNodeOfTree;
23
- exports.filterNodesOfTree = filterNodesOfTree;
24
- exports.leftArrowHandler = leftArrowHandler;
25
- exports.rightArrowHandler = rightArrowHandler;
26
- exports.getExpandWhenSearching = getExpandWhenSearching;
27
- exports.getTreeActiveNode = getTreeActiveNode;
28
- exports.toggleExpand = toggleExpand;
29
- exports.getTreeNodeTitle = getTreeNodeTitle;
30
- exports.getChildrenByFlattenNodes = getChildrenByFlattenNodes;
31
- exports.useTreeDrag = useTreeDrag;
32
- exports.useFlattenTreeData = useFlattenTreeData;
33
- exports.useTreeNodeRefs = useTreeNodeRefs;
34
- exports.useTreeSearch = useTreeSearch;
35
- exports.useGetTreeNodeChildren = useGetTreeNodeChildren;
36
- exports.focusToActiveTreeNode = focusToActiveTreeNode;
37
- exports.isSearching = isSearching;
38
- exports.getTreeNodeIndent = getTreeNodeIndent;
39
- exports.getNodeFormattedRefKey = getNodeFormattedRefKey;
40
- exports.createDragPreview = createDragPreview;
41
- exports.removeDragPreview = removeDragPreview;
42
- exports.stringifyTreeNodeLabel = stringifyTreeNodeLabel;
43
- exports.getParentMap = getParentMap;
44
- exports.getKeyParentMap = getKeyParentMap;
45
- exports.getPathTowardsItem = getPathTowardsItem;
46
- exports.getScrollToIndex = exports.focusPreviousItem = exports.focusNextItem = exports.focusTreeNode = exports.getElementByDataKey = exports.getActiveItem = exports.getActiveIndex = exports.getFocusableItems = exports.WalkTreeStrategy = void 0;
47
- var _extends3 = _interopRequireDefault(require("@babel/runtime/helpers/extends"));
48
- var _isEmpty2 = _interopRequireDefault(require("lodash/isEmpty"));
49
- var _clone2 = _interopRequireDefault(require("lodash/clone"));
50
- var _isNil2 = _interopRequireDefault(require("lodash/isNil"));
51
- var _isArray2 = _interopRequireDefault(require("lodash/isArray"));
52
- var _omit2 = _interopRequireDefault(require("lodash/omit"));
53
- var _isUndefined2 = _interopRequireDefault(require("lodash/isUndefined"));
54
- var _intersection2 = _interopRequireDefault(require("lodash/intersection"));
55
- var _react = _interopRequireWildcard(require("react"));
56
- var _shallowEqualArray = _interopRequireDefault(require("../utils/shallowEqualArray"));
57
- var _utils = require("../CheckTreePicker/utils");
58
- var _utils2 = require("../utils");
59
- var _Picker = require("../internals/Picker");
60
- var _reactToString = _interopRequireDefault(require("./reactToString"));
61
- var _constants = require("./constants");
62
- var _attachParent = require("./attachParent");
63
- function _createForOfIteratorHelperLoose(o, allowArrayLike) { var it = typeof Symbol !== "undefined" && o[Symbol.iterator] || o["@@iterator"]; if (it) return (it = it.call(o)).next.bind(it); if (Array.isArray(o) || (it = _unsupportedIterableToArray(o)) || allowArrayLike && o && typeof o.length === "number") { if (it) o = it; var i = 0; return function () { if (i >= o.length) return { done: true }; return { done: false, value: o[i++] }; }; } throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); }
64
- function _unsupportedIterableToArray(o, minLen) { if (!o) return; if (typeof o === "string") return _arrayLikeToArray(o, minLen); var n = Object.prototype.toString.call(o).slice(8, -1); if (n === "Object" && o.constructor) n = o.constructor.name; if (n === "Map" || n === "Set") return Array.from(o); if (n === "Arguments" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen); }
65
- function _arrayLikeToArray(arr, len) { if (len == null || len > arr.length) len = arr.length; for (var i = 0, arr2 = new Array(len); i < len; i++) { arr2[i] = arr[i]; } return arr2; }
66
- // gap of tree node
67
- var TREE_NODE_GAP = 4;
68
-
69
- /**
70
- * according node parentNode expand state decide node whether to show
71
- * @param {*} expandItemValues
72
- * @param {*} parentKeys
73
- */
74
- function shouldShowNodeByParentExpanded(expandItemValues, parentKeys) {
75
- if (expandItemValues === void 0) {
76
- expandItemValues = [];
77
- }
78
- if (parentKeys === void 0) {
79
- parentKeys = [];
80
- }
81
- var intersectionKeys = (0, _intersection2.default)(expandItemValues, parentKeys);
82
- if (intersectionKeys.length === parentKeys.length) {
83
- return true;
84
- }
85
- return false;
86
- }
87
-
88
- /**
89
- * flatten tree structure to array
90
- * @param {*} tree
91
- * @param {*} childrenKey
92
- * @param {*} executor
93
- *
94
- * @deprecated This {@link UNSAFE_flattenTree} function is considered unsafe because it mutates `tree` argument in-place
95
- * Use {@link flattenTree} instead.
96
- */
97
- function UNSAFE_flattenTree(tree, childrenKey, executor) {
98
- if (childrenKey === void 0) {
99
- childrenKey = 'children';
100
- }
101
- var flattenData = [];
102
- var traverse = function traverse(data, parent) {
103
- if (!(0, _isArray2.default)(data)) {
104
- return;
105
- }
106
- data.forEach(function (item, index) {
107
- var node = typeof executor === 'function' ? executor(item, index) : item;
108
- flattenData.push((0, _attachParent.attachParent)(node, parent));
109
- if (item[childrenKey]) {
110
- traverse(item[childrenKey], item);
111
- }
112
- });
113
- };
114
- traverse(tree, null);
115
- return flattenData;
116
- }
117
- var WalkTreeStrategy;
118
- exports.WalkTreeStrategy = WalkTreeStrategy;
119
- (function (WalkTreeStrategy) {
120
- WalkTreeStrategy[WalkTreeStrategy["DFS"] = 0] = "DFS";
121
- WalkTreeStrategy[WalkTreeStrategy["BFS"] = 1] = "BFS";
122
- })(WalkTreeStrategy || (exports.WalkTreeStrategy = WalkTreeStrategy = {}));
123
- function flattenTree(rootNodes, getChildren, walkStrategy) {
124
- if (walkStrategy === void 0) {
125
- walkStrategy = WalkTreeStrategy.BFS;
126
- }
127
- var result = [];
128
- if (walkStrategy === WalkTreeStrategy.BFS) {
129
- walkTreeBfs(rootNodes, getChildren, function (node) {
130
- return result.push(node);
131
- });
132
- } else if (walkStrategy === WalkTreeStrategy.DFS) {
133
- walkTreeDfs(rootNodes, getChildren, function (node) {
134
- return result.push(node);
135
- });
136
- }
137
- return result;
138
- }
139
- function walkTreeBfs(rootNodes, getChildren, callback) {
140
- for (var queue = [].concat(rootNodes); queue.length > 0;) {
141
- var _node = queue.shift();
142
- callback(_node);
143
- var children = getChildren(_node);
144
- if (children) {
145
- queue.push.apply(queue, children);
146
- }
147
- }
148
- }
149
- function walkTreeDfs(rootNodes, getChildren, callback) {
150
- for (var _iterator = _createForOfIteratorHelperLoose(rootNodes), _step; !(_step = _iterator()).done;) {
151
- var _node2 = _step.value;
152
- callback(_node2);
153
- var children = getChildren(_node2);
154
- if (children) {
155
- walkTreeDfs(children, getChildren, callback);
156
- }
157
- }
158
- }
159
-
160
- /**
161
- * get all ancestor nodes of given node
162
- * @param {*} node
163
- */
164
- function getNodeParents(node, parentKey, valueKey) {
165
- if (parentKey === void 0) {
166
- parentKey = 'parent';
167
- }
168
- var parents = [];
169
- var traverse = function traverse(node) {
170
- if (node !== null && node !== void 0 && node[parentKey]) {
171
- traverse(node[parentKey]);
172
- if (valueKey) {
173
- parents.push(node[parentKey][valueKey]);
174
- } else {
175
- parents.push(node[parentKey]);
176
- }
177
- }
178
- };
179
- traverse(node);
180
- return parents;
181
- }
182
-
183
- /**
184
- * get all parentKeys of given node
185
- * @param nodes
186
- * @param node
187
- * @param valueKey
188
- */
189
- function getNodeParentKeys(nodes, node, valueKey) {
190
- var parentKeys = [];
191
- var traverse = function traverse(node) {
192
- var _node$parent;
193
- if (node !== null && node !== void 0 && (_node$parent = node.parent) !== null && _node$parent !== void 0 && _node$parent.refKey) {
194
- var _node$parent2;
195
- traverse(nodes[node.parent.refKey]);
196
- parentKeys.push(node === null || node === void 0 ? void 0 : (_node$parent2 = node.parent) === null || _node$parent2 === void 0 ? void 0 : _node$parent2[valueKey]);
197
- }
198
- };
199
- traverse(node);
200
- return parentKeys;
201
- }
202
- function hasVisibleChildren(node, childrenKey) {
203
- if (!Array.isArray(node[childrenKey])) {
204
- return false;
205
- }
206
- return node[childrenKey].some(function (child) {
207
- return child.visible;
208
- });
209
- }
210
-
211
- /**
212
- * shallow equal array
213
- * @param a
214
- * @param b
215
- */
216
- function compareArray(a, b) {
217
- return (0, _isArray2.default)(a) && (0, _isArray2.default)(b) && !(0, _shallowEqualArray.default)(a, b);
218
- }
219
- function getDefaultExpandItemValues(data, props) {
220
- var valueKey = props.valueKey,
221
- defaultExpandAll = props.defaultExpandAll,
222
- childrenKey = props.childrenKey,
223
- _props$defaultExpandI = props.defaultExpandItemValues,
224
- defaultExpandItemValues = _props$defaultExpandI === void 0 ? [] : _props$defaultExpandI;
225
- if (defaultExpandAll) {
226
- return UNSAFE_flattenTree(data, childrenKey).filter(function (item) {
227
- return Array.isArray(item[childrenKey]) && item[childrenKey].length > 0;
228
- }).map(function (item) {
229
- return item[valueKey];
230
- });
231
- }
232
- return defaultExpandItemValues;
233
- }
234
-
235
- /**
236
- * 获取 expandItemValues 的 value
237
- * @param props
238
- */
239
- function getExpandItemValues(props) {
240
- var expandItemValues = props.expandItemValues,
241
- defaultExpandItemValues = props.defaultExpandItemValues;
242
- if (!(0, _isUndefined2.default)(expandItemValues) && Array.isArray(expandItemValues)) {
243
- return expandItemValues;
244
- }
245
- if (!(0, _isUndefined2.default)(defaultExpandItemValues) && Array.isArray(defaultExpandItemValues)) {
246
- return defaultExpandItemValues;
247
- }
248
- return [];
249
- }
250
-
251
- /**
252
- * get dragNode and it's children node keys
253
- * @param node
254
- * @param childrenKey
255
- * @param valueKey
256
- */
257
- function getDragNodeKeys(dragNode, childrenKey, valueKey) {
258
- var dragNodeKeys = [dragNode[valueKey]];
259
- var traverse = function traverse(data) {
260
- if ((data === null || data === void 0 ? void 0 : data.length) > 0) {
261
- data.forEach(function (node) {
262
- dragNodeKeys = dragNodeKeys.concat([node[valueKey]]);
263
- if (node[childrenKey]) {
264
- traverse(node[childrenKey]);
265
- }
266
- });
267
- }
268
- };
269
- traverse(dragNode[childrenKey]);
270
- return dragNodeKeys;
271
- }
272
- function calDropNodePosition(event, treeNodeElement) {
273
- var clientY = event.clientY;
274
- var _treeNodeElement$getB = treeNodeElement.getBoundingClientRect(),
275
- top = _treeNodeElement$getB.top,
276
- bottom = _treeNodeElement$getB.bottom;
277
- var gap = TREE_NODE_GAP;
278
-
279
- // bottom of node
280
- if (clientY >= bottom - gap && clientY <= bottom) {
281
- return _utils2.TREE_NODE_DROP_POSITION.DRAG_OVER_BOTTOM;
282
- }
283
-
284
- // top of node
285
- if (clientY <= top + gap && clientY >= top) {
286
- return _utils2.TREE_NODE_DROP_POSITION.DRAG_OVER_TOP;
287
- }
288
- if (clientY >= top + gap && clientY <= bottom - gap) {
289
- return _utils2.TREE_NODE_DROP_POSITION.DRAG_OVER;
290
- }
291
- return -1;
292
- }
293
- function removeDragNode(data, params, _ref) {
294
- var valueKey = _ref.valueKey,
295
- childrenKey = _ref.childrenKey;
296
- var dragNode = params.dragNode;
297
- var traverse = function traverse(items, parent) {
298
- for (var _index = 0; _index < items.length; _index += 1) {
299
- var _item = items[_index];
300
- if ((0, _utils2.shallowEqual)(_item[valueKey], dragNode[valueKey])) {
301
- items.splice(_index, 1);
302
- // when children is empty, delete children prop for hidden anchor
303
- if (items.length === 0 && parent) {
304
- delete parent.children;
305
- }
306
- break;
307
- }
308
- if (Array.isArray(_item[childrenKey])) {
309
- traverse(_item[childrenKey], _item);
310
- }
311
- }
312
- };
313
- traverse(data);
314
- }
315
- function createUpdateTreeDataFunction(params, _ref2) {
316
- var valueKey = _ref2.valueKey,
317
- childrenKey = _ref2.childrenKey;
318
- return function (tree) {
319
- var data = [].concat(tree);
320
- var dragNode = params.dragNode,
321
- dropNode = params.dropNode,
322
- dropNodePosition = params.dropNodePosition;
323
- var cloneDragNode = (0, _extends3.default)({}, dragNode);
324
- removeDragNode(data, params, {
325
- valueKey: valueKey,
326
- childrenKey: childrenKey
327
- });
328
- var updateTree = function updateTree(items) {
329
- for (var _index2 = 0; _index2 < items.length; _index2 += 1) {
330
- var _item2 = items[_index2];
331
- if ((0, _utils2.shallowEqual)(_item2[valueKey], dropNode[valueKey])) {
332
- // drag to node inside
333
- if (dropNodePosition === _utils2.TREE_NODE_DROP_POSITION.DRAG_OVER) {
334
- _item2[childrenKey] = (0, _isNil2.default)(_item2[childrenKey]) ? [] : _item2[childrenKey];
335
- _item2[childrenKey].push(cloneDragNode);
336
- break;
337
- } else if (dropNodePosition === _utils2.TREE_NODE_DROP_POSITION.DRAG_OVER_TOP) {
338
- // drag to top of node
339
- items.splice(_index2, 0, cloneDragNode);
340
- break;
341
- } else if (dropNodePosition === _utils2.TREE_NODE_DROP_POSITION.DRAG_OVER_BOTTOM) {
342
- // drag to bottom of node
343
- items.splice(_index2 + 1, 0, cloneDragNode);
344
- break;
345
- }
346
- }
347
- if (Array.isArray(_item2[childrenKey]) && _item2[childrenKey].length > 0) {
348
- updateTree(_item2[childrenKey]);
349
- }
350
- }
351
- };
352
- updateTree(data);
353
- return [].concat(data);
354
- };
355
- }
356
- function findNodeOfTree(data, check) {
357
- var findNode = function findNode(nodes) {
358
- if (nodes === void 0) {
359
- nodes = [];
360
- }
361
- for (var i = 0; i < nodes.length; i += 1) {
362
- var _item3 = nodes[i];
363
- if ((0, _isArray2.default)(_item3.children)) {
364
- var _node3 = findNode(_item3.children);
365
- if (_node3) {
366
- return _node3;
367
- }
368
- }
369
- if (check(_item3)) {
370
- return _item3;
371
- }
372
- }
373
- return undefined;
374
- };
375
- return findNode(data);
376
- }
377
- function filterNodesOfTree(data, check) {
378
- var findNodes = function findNodes(nodes) {
379
- if (nodes === void 0) {
380
- nodes = [];
381
- }
382
- var nextNodes = [];
383
- for (var i = 0; i < nodes.length; i += 1) {
384
- if ((0, _isArray2.default)(nodes[i].children)) {
385
- var nextChildren = findNodes(nodes[i].children);
386
- if (nextChildren.length) {
387
- var _item4 = (0, _clone2.default)(nodes[i]);
388
- _item4.children = nextChildren;
389
- nextNodes.push(_item4);
390
- continue;
391
- }
392
- }
393
- if (check(nodes[i])) {
394
- nextNodes.push(nodes[i]);
395
- }
396
- }
397
- return nextNodes;
398
- };
399
- return findNodes(data);
400
- }
401
-
402
- /**
403
- * get all focusable items
404
- * exclude not visible and disabled node
405
- * @param filteredData - filtered tree data
406
- * @param props - TreeProps
407
- * @param isSearching - component is in Searching
408
- * @returns
409
- */
410
- var getFocusableItems = function getFocusableItems(filteredData, props, isSearching) {
411
- var disabledItemValues = props.disabledItemValues,
412
- valueKey = props.valueKey,
413
- childrenKey = props.childrenKey,
414
- expandItemValues = props.expandItemValues;
415
- var items = [];
416
- var loop = function loop(nodes) {
417
- nodes.forEach(function (node) {
418
- var disabled = disabledItemValues.some(function (disabledItem) {
419
- return (0, _utils2.shallowEqual)(disabledItem, node[valueKey]);
420
- });
421
- if (!disabled && node.visible) {
422
- items.push(node);
423
- }
424
- // always expand when searching
425
- var expand = isSearching ? true : expandItemValues.includes(node[valueKey]);
426
- if (node[childrenKey] && expand) {
427
- loop(node[childrenKey]);
428
- }
429
- });
430
- };
431
- loop(filteredData);
432
- return items;
433
- };
434
-
435
- /**
436
- * return all focusable Item and active Element index
437
- * @param focusItemValue
438
- * @param focusableItems items
439
- */
440
- exports.getFocusableItems = getFocusableItems;
441
- var getActiveIndex = function getActiveIndex(focusItemValue, focusItems, valueKey) {
442
- var activeIndex = -1;
443
- focusItems.forEach(function (item, index) {
444
- if ((0, _utils2.shallowEqual)(item[valueKey], focusItemValue)) {
445
- activeIndex = index;
446
- }
447
- });
448
- return activeIndex;
449
- };
450
-
451
- /**
452
- * get current active element and node data
453
- * @param flattenNodes - flattenData
454
- */
455
- exports.getActiveIndex = getActiveIndex;
456
- var getActiveItem = function getActiveItem(focusItemValue, flattenNodes, valueKey) {
457
- var nodeData = null;
458
- var activeNode = Object.values(flattenNodes).find(function (node) {
459
- return (0, _utils2.shallowEqual)(node[valueKey], focusItemValue);
460
- });
461
- if (activeNode) {
462
- nodeData = activeNode;
463
- }
464
- return nodeData;
465
- };
466
- exports.getActiveItem = getActiveItem;
467
- var getElementByDataKey = function getElementByDataKey(dataKey, treeNodesRefs, selector) {
468
- var ele = treeNodesRefs[dataKey];
469
- if (ele instanceof Element) {
470
- return ele.querySelector(selector);
471
- }
472
- return null;
473
- };
474
-
475
- /**
476
- * focus to specify tree node
477
- * @param refKey - target node refKey
478
- * @param treeNodeRefs - all tree node refs object
479
- * @param selector - node css selector
480
- */
481
- exports.getElementByDataKey = getElementByDataKey;
482
- var focusTreeNode = function focusTreeNode(refKey, treeNodeRefs, selector) {
483
- var _node$focus;
484
- var node = getElementByDataKey(refKey, treeNodeRefs, selector);
485
- node === null || node === void 0 ? void 0 : (_node$focus = node.focus) === null || _node$focus === void 0 ? void 0 : _node$focus.call(node);
486
- };
487
- exports.focusTreeNode = focusTreeNode;
488
- /**
489
- * focus next item with keyboard
490
- * @param param
491
- */
492
- var focusNextItem = function focusNextItem(_ref3) {
493
- var focusItemValue = _ref3.focusItemValue,
494
- focusableItems = _ref3.focusableItems,
495
- treeNodesRefs = _ref3.treeNodesRefs,
496
- selector = _ref3.selector,
497
- valueKey = _ref3.valueKey,
498
- callback = _ref3.callback;
499
- var activeIndex = getActiveIndex(focusItemValue, focusableItems, valueKey);
500
- if (focusableItems.length === 0) {
501
- return;
502
- }
503
- var nextIndex = activeIndex === focusableItems.length - 1 ? 0 : activeIndex + 1;
504
- var nextFocusItemValue = focusableItems[nextIndex][valueKey];
505
- callback === null || callback === void 0 ? void 0 : callback(nextFocusItemValue);
506
- focusTreeNode(focusableItems[nextIndex].refKey, treeNodesRefs, selector);
507
- };
508
-
509
- /**
510
- * focus prev item with keyboard
511
- * @param param
512
- */
513
- exports.focusNextItem = focusNextItem;
514
- var focusPreviousItem = function focusPreviousItem(_ref4) {
515
- var focusItemValue = _ref4.focusItemValue,
516
- focusableItems = _ref4.focusableItems,
517
- treeNodesRefs = _ref4.treeNodesRefs,
518
- selector = _ref4.selector,
519
- valueKey = _ref4.valueKey,
520
- callback = _ref4.callback;
521
- var activeIndex = getActiveIndex(focusItemValue, focusableItems, valueKey);
522
- if (focusableItems.length === 0) {
523
- return;
524
- }
525
- var prevIndex = activeIndex === 0 ? focusableItems.length - 1 : activeIndex - 1;
526
- prevIndex = prevIndex >= 0 ? prevIndex : 0;
527
- var prevFocusItemValue = focusableItems[prevIndex][valueKey];
528
- callback === null || callback === void 0 ? void 0 : callback(prevFocusItemValue);
529
- focusTreeNode(focusableItems[prevIndex].refKey, treeNodesRefs, selector);
530
- };
531
- exports.focusPreviousItem = focusPreviousItem;
532
- /**
533
- * Left arrow keyboard event handler
534
- * When focus is on an open node, closes the node.
535
- * When focus is on a child node that is also either an end node or a closed node, moves focus to its parent node.
536
- * When focus is on a root node that is also either an end node or a closed node, does nothing.
537
- * @see https://www.w3.org/TR/wai-aria-practices/#TreeView
538
- */
539
- function leftArrowHandler(_ref5) {
540
- var focusItem = _ref5.focusItem,
541
- expand = _ref5.expand,
542
- onExpand = _ref5.onExpand,
543
- onFocusItem = _ref5.onFocusItem;
544
- if ((0, _isEmpty2.default)(focusItem)) {
545
- return;
546
- }
547
- if (expand) {
548
- onExpand((0, _extends3.default)({}, focusItem, {
549
- expand: expand
550
- }));
551
- } else if (focusItem !== null && focusItem !== void 0 && focusItem.parent) {
552
- onFocusItem();
553
- }
554
- }
555
-
556
- /**
557
- * Right arrow keyboard event handler
558
- * When focus is on a closed node, opens the node; focus does not move.
559
- * When focus is on a open node, moves focus to the first child node.
560
- * When focus is on an end node, does nothing.
561
- * @see https://www.w3.org/TR/wai-aria-practices/#TreeView
562
- */
563
- function rightArrowHandler(_ref6) {
564
- var focusItem = _ref6.focusItem,
565
- expand = _ref6.expand,
566
- childrenKey = _ref6.childrenKey,
567
- onExpand = _ref6.onExpand,
568
- onFocusItem = _ref6.onFocusItem;
569
- if ((0, _isEmpty2.default)(focusItem) || !Array.isArray(focusItem[childrenKey])) {
570
- return;
571
- }
572
- if (!expand) {
573
- onExpand((0, _extends3.default)({}, focusItem, {
574
- expand: expand
575
- }));
576
- } else {
577
- onFocusItem();
578
- }
579
- }
580
-
581
- /**
582
- * get scrollIndex in virtualized list
583
- * @param nodes - data
584
- * @param value - activeItem value
585
- * @param valueKey
586
- */
587
- var getScrollToIndex = function getScrollToIndex(nodes, value, valueKey) {
588
- return nodes.filter(function (n) {
589
- return n.visible;
590
- }).findIndex(function (item) {
591
- return item[valueKey] === value;
592
- });
593
- };
594
-
595
- /**
596
- * when searching, expand state always return true
597
- * @param searchKeyword
598
- * @param expand
599
- */
600
- exports.getScrollToIndex = getScrollToIndex;
601
- function getExpandWhenSearching(searchKeyword, expand) {
602
- return isSearching(searchKeyword) ? true : expand;
603
- }
604
- function getTreeActiveNode(nodes, value, valueKey) {
605
- if ((0, _isUndefined2.default)(value)) {
606
- return undefined;
607
- }
608
- for (var refKey in nodes) {
609
- if ((0, _utils2.shallowEqual)(nodes[refKey][valueKey], value)) {
610
- return nodes[refKey];
611
- }
612
- }
613
- }
614
- /**
615
- * toggle tree node
616
- * @param param0
617
- */
618
- function toggleExpand(_ref7) {
619
- var node = _ref7.node,
620
- isExpand = _ref7.isExpand,
621
- expandItemValues = _ref7.expandItemValues,
622
- valueKey = _ref7.valueKey;
623
- var newExpandItemValues = new Set(expandItemValues);
624
- if (isExpand) {
625
- newExpandItemValues.add(node[valueKey]);
626
- } else {
627
- newExpandItemValues.delete(node[valueKey]);
628
- }
629
- return Array.from(newExpandItemValues);
630
- }
631
- function getTreeNodeTitle(label) {
632
- if (typeof label === 'string') {
633
- return label;
634
- } else if ( /*#__PURE__*/_react.default.isValidElement(label)) {
635
- var _nodes = (0, _reactToString.default)(label);
636
- return _nodes.join('');
637
- }
638
- }
639
-
640
- /**
641
- * get all children from flattenNodes object by given parent node
642
- * @param nodes
643
- * @param parent
644
- */
645
- function getChildrenByFlattenNodes(nodes, parent) {
646
- if (!(0, _isNil2.default)(parent.refKey) && (0, _isNil2.default)(nodes[parent.refKey])) {
647
- return [];
648
- }
649
- return Object.values(nodes).filter(function (item) {
650
- var _item$parent;
651
- return (item === null || item === void 0 ? void 0 : (_item$parent = item.parent) === null || _item$parent === void 0 ? void 0 : _item$parent.refKey) === parent.refKey && item.refKey && !nodes[item.refKey].uncheckable;
652
- });
653
- }
654
- function useTreeDrag() {
655
- // current dragging node
656
- var dragNode = (0, _react.useRef)(null);
657
- var _useState = (0, _react.useState)(null),
658
- dragOverNodeKey = _useState[0],
659
- setDragOverNodeKey = _useState[1]; // drag node and it's children nodes key
660
- var _useState2 = (0, _react.useState)([]),
661
- dragNodeKeys = _useState2[0],
662
- setDragNodeKeys = _useState2[1];
663
- var _useState3 = (0, _react.useState)(null),
664
- dropNodePosition = _useState3[0],
665
- setDropNodePosition = _useState3[1];
666
- var setDragNode = function setDragNode(node) {
667
- dragNode.current = node;
668
- };
669
- return {
670
- dragNode: dragNode === null || dragNode === void 0 ? void 0 : dragNode.current,
671
- dragOverNodeKey: dragOverNodeKey,
672
- dragNodeKeys: dragNodeKeys,
673
- dropNodePosition: dropNodePosition,
674
- setDragNode: setDragNode,
675
- setDragOverNodeKey: setDragOverNodeKey,
676
- setDragNodeKeys: setDragNodeKeys,
677
- setDropNodePosition: setDropNodePosition
678
- };
679
- }
680
- /**
681
- * hooks for flatten tree structure
682
- * @param param0
683
- */
684
- function useFlattenTreeData(_ref8) {
685
- var data = _ref8.data,
686
- labelKey = _ref8.labelKey,
687
- valueKey = _ref8.valueKey,
688
- childrenKey = _ref8.childrenKey,
689
- _ref8$uncheckableItem = _ref8.uncheckableItemValues,
690
- uncheckableItemValues = _ref8$uncheckableItem === void 0 ? [] : _ref8$uncheckableItem,
691
- callback = _ref8.callback;
692
- var _useState4 = (0, _react.useState)(Object.create(null)),
693
- dispatch = _useState4[1];
694
- var forceUpdate = (0, _react.useCallback)(function () {
695
- dispatch(Object.create(null));
696
- }, [dispatch]);
697
- var flattenNodes = (0, _react.useRef)({});
698
- var flattenTreeData = (0, _react.useCallback)(function (treeData, parent, layer) {
699
- if (layer === void 0) {
700
- layer = 1;
701
- }
702
- if (!Array.isArray(treeData) || treeData.length === 0) {
703
- return [];
704
- }
705
- treeData.map(function (node) {
706
- var _extends2;
707
- var value = node[valueKey];
708
- /**
709
- * because the value of the node's type is string or number,
710
- * so it can used as the key of the object directly
711
- * to avoid number value is converted to string. 1 and '1' will be convert to '1'
712
- * we used `String_` or `Number_` prefix
713
- */
714
- var refKey = getNodeFormattedRefKey(value);
715
- node.refKey = refKey;
716
- flattenNodes.current[refKey] = (0, _extends3.default)((_extends2 = {
717
- layer: layer
718
- }, _extends2[labelKey] = node[labelKey], _extends2[valueKey] = node[valueKey], _extends2.uncheckable = uncheckableItemValues.some(function (value) {
719
- return (0, _utils2.shallowEqual)(node[valueKey], value);
720
- }), _extends2), node);
721
- if (parent) {
722
- flattenNodes.current[refKey].parent = (0, _omit2.default)(parent, 'parent', 'children');
723
- }
724
- flattenTreeData(node[childrenKey], node, layer + 1);
725
- });
726
- callback === null || callback === void 0 ? void 0 : callback(flattenNodes.current);
727
- }, [childrenKey, valueKey, labelKey, callback, uncheckableItemValues]);
728
- var serializeListOnlyParent = (0, _react.useCallback)(function (nodes, key) {
729
- var list = [];
730
- Object.keys(nodes).forEach(function (refKey) {
731
- var currentNode = nodes[refKey];
732
- if (!(0, _isNil2.default)(currentNode.parent) && !(0, _isNil2.default)(currentNode.parent.refKey)) {
733
- var parentNode = nodes[currentNode.parent.refKey];
734
- if (currentNode[key]) {
735
- if (!(parentNode !== null && parentNode !== void 0 && parentNode.checkAll)) {
736
- list.push(nodes[refKey][valueKey]);
737
- } else if (parentNode !== null && parentNode !== void 0 && parentNode.uncheckable) {
738
- list.push(nodes[refKey][valueKey]);
739
- }
740
- }
741
- } else {
742
- if (currentNode[key]) {
743
- list.push(nodes[refKey][valueKey]);
744
- }
745
- }
746
- });
747
- return list;
748
- }, [valueKey]);
749
-
750
- /**
751
- * using in CheckTreePicker, to unSerializeList check property
752
- */
753
- var unSerializeList = (0, _react.useCallback)(function (_ref9) {
754
- var nodes = _ref9.nodes,
755
- key = _ref9.key,
756
- _ref9$value = _ref9.value,
757
- value = _ref9$value === void 0 ? [] : _ref9$value,
758
- cascade = _ref9.cascade,
759
- uncheckableItemValues = _ref9.uncheckableItemValues;
760
- // Reset values to false
761
- Object.keys(nodes).forEach(function (refKey) {
762
- var node = nodes[refKey];
763
- if (cascade && !(0, _isNil2.default)(node.parent) && !(0, _isNil2.default)(node.parent.refKey)) {
764
- node[key] = nodes[node.parent.refKey][key];
765
- } else {
766
- node[key] = false;
767
- }
768
- value.forEach(function (value) {
769
- if ((0, _utils2.shallowEqual)(nodes[refKey][valueKey], value) && !uncheckableItemValues.some(function (uncheckableValue) {
770
- return (0, _utils2.shallowEqual)(value, uncheckableValue);
771
- })) {
772
- nodes[refKey][key] = true;
773
- }
774
- });
775
- });
776
- }, [valueKey]);
777
- var formatVirtualizedTreeData = function formatVirtualizedTreeData(nodes, data, expandItemValues, options) {
778
- var cascade = options.cascade,
779
- searchKeyword = options.searchKeyword;
780
- return UNSAFE_flattenTree(data, childrenKey, function (node) {
781
- var formatted = {};
782
- var curNode = nodes === null || nodes === void 0 ? void 0 : nodes[node.refKey];
783
- var parentKeys = getNodeParentKeys(nodes, curNode, valueKey);
784
- /**
785
- * When using virtualized,
786
- * if the parent node is collapsed, the child nodes should be hidden
787
- * avoid component height calculation errors
788
- */
789
- var visible = curNode !== null && curNode !== void 0 && curNode.parent ? shouldShowNodeByParentExpanded(expandItemValues, parentKeys) : true;
790
-
791
- /**
792
- * when searching, every node default expand
793
- * the node's visible should follow the original state
794
- */
795
- if (isSearching(searchKeyword)) {
796
- visible = node.visible;
797
- }
798
- if (curNode) {
799
- var checkState = !(0, _isUndefined2.default)(cascade) ? (0, _utils.getNodeCheckState)({
800
- node: curNode,
801
- cascade: cascade,
802
- nodes: nodes,
803
- childrenKey: childrenKey
804
- }) : undefined;
805
- formatted = (0, _extends3.default)({}, node, {
806
- check: curNode.check,
807
- uncheckable: curNode.uncheckable,
808
- hasChildren: !!node[childrenKey],
809
- layer: curNode.layer,
810
- parent: curNode.parent,
811
- checkState: checkState,
812
- visible: visible
813
- });
814
- }
815
- return formatted;
816
- });
817
- };
818
- (0, _react.useEffect)(function () {
819
- // when data is changed, should clear the flattenNodes, avoid duplicate keys
820
- flattenNodes.current = {};
821
- flattenTreeData(data);
822
- }, [data]); // eslint-disable-line react-hooks/exhaustive-deps
823
-
824
- return {
825
- forceUpdate: forceUpdate,
826
- flattenNodes: flattenNodes.current,
827
- flattenTreeData: flattenTreeData,
828
- serializeListOnlyParent: serializeListOnlyParent,
829
- unSerializeList: unSerializeList,
830
- formatVirtualizedTreeData: formatVirtualizedTreeData
831
- };
832
- }
833
-
834
- /**
835
- * A hook that saving every tree node ref
836
- */
837
- function useTreeNodeRefs() {
838
- var treeNodeRefs = (0, _react.useRef)({});
839
- var saveTreeNodeRef = function saveTreeNodeRef(ref, refKey) {
840
- if (!(0, _isNil2.default)(refKey)) {
841
- treeNodeRefs.current[refKey] = ref;
842
- }
843
- };
844
- return {
845
- treeNodesRefs: treeNodeRefs.current,
846
- saveTreeNodeRef: saveTreeNodeRef
847
- };
848
- }
849
- /**
850
- * A hook that handles tree search filter options
851
- * @param props
852
- */
853
- function useTreeSearch(props) {
854
- var labelKey = props.labelKey,
855
- childrenKey = props.childrenKey,
856
- searchKeyword = props.searchKeyword,
857
- data = props.data,
858
- searchBy = props.searchBy,
859
- callback = props.callback;
860
- var filterVisibleData = (0, _react.useCallback)(function (data, searchKeyword) {
861
- var setVisible = function setVisible(nodes) {
862
- return nodes.forEach(function (item) {
863
- item.visible = searchBy ? searchBy(searchKeyword, item[labelKey], item) : (0, _Picker.shouldDisplay)(item[labelKey], searchKeyword);
864
- if ((0, _isArray2.default)(item[childrenKey])) {
865
- filterVisibleData(item[childrenKey], searchKeyword);
866
- item[childrenKey].forEach(function (child) {
867
- if (child.visible) {
868
- item.visible = child.visible;
869
- }
870
- });
871
- }
872
- });
873
- };
874
- setVisible(data);
875
- return data;
876
- }, [childrenKey, labelKey, searchBy]);
877
-
878
- // Use search keywords to filter options.
879
- var _useState5 = (0, _react.useState)(searchKeyword !== null && searchKeyword !== void 0 ? searchKeyword : ''),
880
- searchKeywordState = _useState5[0],
881
- setSearchKeyword = _useState5[1];
882
- var _useState6 = (0, _react.useState)(function () {
883
- return filterVisibleData(data, searchKeywordState);
884
- }),
885
- filteredData = _useState6[0],
886
- setFilteredData = _useState6[1];
887
- var handleSearch = function handleSearch(searchKeyword, event) {
888
- var filteredData = filterVisibleData(data, searchKeyword);
889
- setFilteredData(filteredData);
890
- setSearchKeyword(searchKeyword);
891
- event && (callback === null || callback === void 0 ? void 0 : callback(searchKeyword, filteredData, event));
892
- };
893
- (0, _react.useEffect)(function () {
894
- handleSearch(searchKeyword !== null && searchKeyword !== void 0 ? searchKeyword : '');
895
- // eslint-disable-next-line react-hooks/exhaustive-deps
896
- }, [searchKeyword]);
897
- var handleSetFilteredData = (0, _react.useCallback)(function (data, searchKeyword) {
898
- setFilteredData(filterVisibleData(data, searchKeyword));
899
- }, [filterVisibleData]);
900
- return {
901
- searchKeywordState: searchKeywordState,
902
- filteredData: filteredData,
903
- setFilteredData: handleSetFilteredData,
904
- setSearchKeyword: setSearchKeyword,
905
- handleSearch: handleSearch
906
- };
907
- }
908
- function useGetTreeNodeChildren(treeData, valueKey, childrenKey) {
909
- var _useState7 = (0, _react.useState)([]),
910
- loadingNodeValues = _useState7[0],
911
- setLoadingNodeValues = _useState7[1];
912
- var _useState8 = (0, _react.useState)(treeData),
913
- data = _useState8[0],
914
- setData = _useState8[1];
915
- var concatChildren = (0, _react.useCallback)(function (treeNode, children) {
916
- var value = treeNode[valueKey];
917
- treeNode = findNodeOfTree(data, function (item) {
918
- return value === item[valueKey];
919
- });
920
- treeNode[childrenKey] = children;
921
- var newData = data.concat([]);
922
- setData(newData);
923
- return newData;
924
- }, [data, valueKey, childrenKey]);
925
- var loadChildren = (0, _react.useCallback)(function (node, getChildren) {
926
- setLoadingNodeValues(function (prev) {
927
- return prev.concat(node[valueKey]);
928
- });
929
- var children = getChildren(node);
930
- if (children instanceof Promise) {
931
- children.then(function (res) {
932
- var newData = concatChildren(node, res);
933
- setData(newData);
934
- setLoadingNodeValues(function (prev) {
935
- return prev.filter(function (item) {
936
- return !(0, _utils2.shallowEqual)(item, node[valueKey]);
937
- });
938
- });
939
- });
940
- } else {
941
- setData(concatChildren(node, children));
942
- setLoadingNodeValues(function (prev) {
943
- return prev.filter(function (item) {
944
- return !(0, _utils2.shallowEqual)(item, node[valueKey]);
945
- });
946
- });
947
- }
948
- }, [concatChildren, valueKey]);
949
- return {
950
- data: data,
951
- setData: setData,
952
- loadingNodeValues: loadingNodeValues,
953
- loadChildren: loadChildren
954
- };
955
- }
956
- /**
957
- * Focus to active tree node.
958
- * @param param0
959
- */
960
- function focusToActiveTreeNode(_ref10) {
961
- var _activeItem$focus;
962
- var list = _ref10.list,
963
- valueKey = _ref10.valueKey,
964
- activeNode = _ref10.activeNode,
965
- virtualized = _ref10.virtualized,
966
- container = _ref10.container,
967
- selector = _ref10.selector,
968
- formattedNodes = _ref10.formattedNodes;
969
- if (!container) return;
970
- if (virtualized && activeNode) {
971
- var _list$scrollToRow;
972
- var scrollIndex = getScrollToIndex(formattedNodes, activeNode === null || activeNode === void 0 ? void 0 : activeNode[valueKey], valueKey);
973
- (_list$scrollToRow = list.scrollToRow) === null || _list$scrollToRow === void 0 ? void 0 : _list$scrollToRow.call(list, scrollIndex);
974
- return;
975
- }
976
- var activeItem = container.querySelector(selector);
977
- if (!activeItem) {
978
- return;
979
- }
980
- activeItem === null || activeItem === void 0 ? void 0 : (_activeItem$focus = activeItem.focus) === null || _activeItem$focus === void 0 ? void 0 : _activeItem$focus.call(activeItem);
981
- }
982
- function isSearching(searchKeyword) {
983
- return !(0, _isEmpty2.default)(searchKeyword);
984
- }
985
- function getTreeNodeIndent(rtl, layer, absolute) {
986
- var _ref12;
987
- if (absolute === void 0) {
988
- absolute = false;
989
- }
990
- // layer start from 1
991
- var offset = layer * _constants.TREE_NODE_PADDING + _constants.TREE_NODE_ROOT_PADDING;
992
- if (absolute) {
993
- var _ref11;
994
- return _ref11 = {}, _ref11[rtl ? 'right' : 'left'] = offset, _ref11;
995
- }
996
- return _ref12 = {}, _ref12[rtl ? 'paddingRight' : 'paddingLeft'] = offset, _ref12;
997
- }
998
-
999
- /**
1000
- * according to the value type to get the formatted valueKey of the node
1001
- * @param value
1002
- * @returns
1003
- */
1004
- function getNodeFormattedRefKey(value) {
1005
- return "" + (typeof value === 'number' ? 'Number_' : 'String_') + value;
1006
- }
1007
-
1008
- /**
1009
- * create drag preview when tree node start drag
1010
- * @param name
1011
- * @param className
1012
- * @returns
1013
- */
1014
- function createDragPreview(name, className) {
1015
- var dragPreview = document.createElement('div');
1016
- dragPreview.id = 'rs-tree-drag-preview';
1017
- dragPreview.innerHTML = name;
1018
- dragPreview.classList.add(className);
1019
- document.body.appendChild(dragPreview);
1020
- return dragPreview;
1021
- }
1022
-
1023
- /**
1024
- * remove drag preview when tree node drop
1025
- */
1026
- function removeDragPreview() {
1027
- var _dragPreview$parentNo, _dragPreview$parentNo2;
1028
- var dragPreview = document.getElementById('rs-tree-drag-preview');
1029
- dragPreview === null || dragPreview === void 0 ? void 0 : (_dragPreview$parentNo = dragPreview.parentNode) === null || _dragPreview$parentNo === void 0 ? void 0 : (_dragPreview$parentNo2 = _dragPreview$parentNo.removeChild) === null || _dragPreview$parentNo2 === void 0 ? void 0 : _dragPreview$parentNo2.call(_dragPreview$parentNo, dragPreview);
1030
- }
1031
- function stringifyTreeNodeLabel(label) {
1032
- if (typeof label === 'string') {
1033
- return label;
1034
- } else if ( /*#__PURE__*/_react.default.isValidElement(label)) {
1035
- var _nodes2 = (0, _reactToString.default)(label);
1036
- return _nodes2.join('');
1037
- }
1038
- return '';
1039
- }
1040
-
1041
- /**
1042
- * Returns a WeakMap that maps each item in `items` to its parent
1043
- * indicated by `getChildren` function
1044
- */
1045
- function getParentMap(items, getChildren) {
1046
- var map = new WeakMap();
1047
- for (var queue = [].concat(items); queue.length > 0;) {
1048
- var _item5 = queue.shift();
1049
- var children = getChildren(_item5);
1050
- if (children) {
1051
- for (var _iterator2 = _createForOfIteratorHelperLoose(children), _step2; !(_step2 = _iterator2()).done;) {
1052
- var child = _step2.value;
1053
- map.set(child, _item5);
1054
- queue.push(child);
1055
- }
1056
- }
1057
- }
1058
- return map;
1059
- }
1060
-
1061
- /**
1062
- * Returns a Map that maps each item's "key", indicated by `getKey` function,
1063
- * to its parent indicated by `getChildren` function
1064
- *
1065
- * NOTICE:
1066
- * Using this function is discouraged.
1067
- * Use {@link getParentMap} whenever possible.
1068
- */
1069
- function getKeyParentMap(items, getKey, getChildren) {
1070
- var map = new Map();
1071
- for (var queue = [].concat(items); queue.length > 0;) {
1072
- var _item6 = queue.shift();
1073
- var children = getChildren(_item6);
1074
- if (children) {
1075
- for (var _iterator3 = _createForOfIteratorHelperLoose(children), _step3; !(_step3 = _iterator3()).done;) {
1076
- var child = _step3.value;
1077
- map.set(getKey(child), _item6);
1078
- queue.push(child);
1079
- }
1080
- }
1081
- }
1082
- return map;
1083
- }
1084
-
1085
- /**
1086
- * Returns an array indicating the hierarchy path from root towards `target` item
1087
- */
1088
- function getPathTowardsItem(target, getParent) {
1089
- if (!target) return [];
1090
- var path = [target];
1091
- for (var parent = getParent(target); !!parent; parent = getParent(parent)) {
1092
- path.unshift(parent);
1093
- }
1094
- return path;
1095
- }