@astral/ui 4.100.0 → 4.101.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 (464) hide show
  1. package/components/InfiniteTreeList/InfiniteTreeList.d.ts +18 -0
  2. package/components/InfiniteTreeList/InfiniteTreeList.js +26 -19
  3. package/components/InfiniteTreeList/InfiniteTreeListActions/InfiniteTreeListActions.d.ts +9 -0
  4. package/components/InfiniteTreeList/InfiniteTreeListActions/InfiniteTreeListActions.js +9 -0
  5. package/components/InfiniteTreeList/InfiniteTreeListActions/types.d.ts +5 -0
  6. package/components/InfiniteTreeList/InfiniteTreeListActions/useLogic/useLogic.js +5 -6
  7. package/components/InfiniteTreeList/InfiniteTreeListContext/InfiniteTreeListContext.d.ts +81 -0
  8. package/components/InfiniteTreeList/InfiniteTreeListContext/InfiniteTreeListContext.js +21 -0
  9. package/components/InfiniteTreeList/InfiniteTreeListContext/InfiniteTreeListContextProvider/InfiniteTreeListContextProvider.d.ts +3 -2
  10. package/components/InfiniteTreeList/InfiniteTreeListContext/InfiniteTreeListContextProvider/InfiniteTreeListContextProvider.js +69 -13
  11. package/components/InfiniteTreeList/InfiniteTreeListItem/ErrorPlaceholder/ErrorPlaceholder.d.ts +6 -0
  12. package/components/InfiniteTreeList/InfiniteTreeListItem/ErrorPlaceholder/ErrorPlaceholder.js +8 -0
  13. package/components/InfiniteTreeList/InfiniteTreeListItem/ErrorPlaceholder/constants.d.ts +1 -0
  14. package/components/InfiniteTreeList/InfiniteTreeListItem/ErrorPlaceholder/constants.js +1 -0
  15. package/components/InfiniteTreeList/InfiniteTreeListItem/ErrorPlaceholder/index.d.ts +1 -0
  16. package/components/InfiniteTreeList/InfiniteTreeListItem/ErrorPlaceholder/index.js +1 -0
  17. package/components/InfiniteTreeList/{ErrorMessage → InfiniteTreeListItem/ErrorPlaceholder}/styles.d.ts +1 -1
  18. package/components/InfiniteTreeList/InfiniteTreeListItem/ErrorPlaceholder/styles.js +8 -0
  19. package/components/InfiniteTreeList/InfiniteTreeListItem/InfiniteTreeListItem.js +29 -7
  20. package/components/InfiniteTreeList/InfiniteTreeListItem/TreeListItemContext/TreeListItemContext.d.ts +19 -0
  21. package/components/InfiniteTreeList/InfiniteTreeListItem/TreeListItemContext/TreeListItemContext.js +4 -0
  22. package/components/InfiniteTreeList/InfiniteTreeListItem/TreeListItemContext/TreeListItemContextProvider/TreeListItemContextProvider.d.ts +4 -0
  23. package/components/InfiniteTreeList/InfiniteTreeListItem/TreeListItemContext/TreeListItemContextProvider/TreeListItemContextProvider.js +13 -8
  24. package/components/InfiniteTreeList/InfiniteTreeListItem/constants.d.ts +6 -0
  25. package/components/InfiniteTreeList/InfiniteTreeListItem/constants.js +7 -0
  26. package/components/InfiniteTreeList/InfiniteTreeListItem/styles.d.ts +4 -4
  27. package/components/InfiniteTreeList/InfiniteTreeListItem/styles.js +28 -5
  28. package/components/InfiniteTreeList/InfiniteTreeListItem/types.d.ts +20 -3
  29. package/components/InfiniteTreeList/InfiniteTreeListItem/useLogic/useLogic.d.ts +7 -1
  30. package/components/InfiniteTreeList/InfiniteTreeListItem/useLogic/useLogic.js +57 -5
  31. package/components/InfiniteTreeList/{EndData → ListFooter/EndData}/EndData.js +1 -1
  32. package/components/InfiniteTreeList/{ErrorMessage → ListFooter/ErrorMessage}/ErrorMessage.js +2 -2
  33. package/components/InfiniteTreeList/ListFooter/ErrorMessage/styles.d.ts +5 -0
  34. package/components/InfiniteTreeList/{ErrorMessage → ListFooter/ErrorMessage}/styles.js +1 -1
  35. package/components/InfiniteTreeList/ListFooter/ListFooter.d.ts +10 -0
  36. package/components/InfiniteTreeList/ListFooter/ListFooter.js +25 -0
  37. package/components/InfiniteTreeList/ListFooter/index.d.ts +2 -0
  38. package/components/InfiniteTreeList/ListFooter/index.js +1 -0
  39. package/components/InfiniteTreeList/{styles.d.ts → ListFooter/styles.d.ts} +2 -2
  40. package/components/InfiniteTreeList/{styles.js → ListFooter/styles.js} +1 -1
  41. package/components/InfiniteTreeList/ListFooter/types.d.ts +22 -0
  42. package/components/InfiniteTreeList/ListFooter/types.js +1 -0
  43. package/components/InfiniteTreeList/OnTopButton/OnTopButton.d.ts +8 -2
  44. package/components/InfiniteTreeList/OnTopButton/OnTopButton.js +6 -5
  45. package/components/InfiniteTreeList/OnTopButton/styles.d.ts +4 -0
  46. package/components/InfiniteTreeList/OnTopButton/styles.js +10 -0
  47. package/components/InfiniteTreeList/ParentItems/Item/CustomParentWrapper/CustomParentWrapper.d.ts +23 -0
  48. package/components/InfiniteTreeList/ParentItems/Item/CustomParentWrapper/CustomParentWrapper.js +12 -0
  49. package/components/InfiniteTreeList/ParentItems/Item/CustomParentWrapper/index.d.ts +1 -0
  50. package/components/InfiniteTreeList/ParentItems/Item/CustomParentWrapper/index.js +1 -0
  51. package/components/InfiniteTreeList/ParentItems/Item/Item.d.ts +10 -0
  52. package/components/InfiniteTreeList/ParentItems/Item/Item.js +22 -0
  53. package/components/InfiniteTreeList/ParentItems/Item/index.d.ts +2 -0
  54. package/components/InfiniteTreeList/ParentItems/Item/index.js +2 -0
  55. package/components/InfiniteTreeList/ParentItems/Item/types.d.ts +8 -0
  56. package/components/InfiniteTreeList/ParentItems/Item/types.js +1 -0
  57. package/components/InfiniteTreeList/ParentItems/Item/useLogic/index.d.ts +1 -0
  58. package/components/InfiniteTreeList/ParentItems/Item/useLogic/index.js +1 -0
  59. package/components/InfiniteTreeList/ParentItems/Item/useLogic/useLogic.d.ts +12 -0
  60. package/components/InfiniteTreeList/ParentItems/Item/useLogic/useLogic.js +12 -0
  61. package/components/InfiniteTreeList/ParentItems/ParentItems.d.ts +11 -0
  62. package/components/InfiniteTreeList/ParentItems/ParentItems.js +11 -0
  63. package/components/InfiniteTreeList/ParentItems/index.d.ts +3 -0
  64. package/components/InfiniteTreeList/ParentItems/index.js +3 -0
  65. package/components/InfiniteTreeList/ParentItems/types.d.ts +8 -0
  66. package/components/InfiniteTreeList/ParentItems/types.js +1 -0
  67. package/components/InfiniteTreeList/TreeItem/ChildrenPlaceholder/ChildrenPlaceholder.d.ts +9 -0
  68. package/components/InfiniteTreeList/TreeItem/ChildrenPlaceholder/ChildrenPlaceholder.js +22 -0
  69. package/components/InfiniteTreeList/TreeItem/ChildrenPlaceholder/NoDataRow/NoDataRow.d.ts +1 -0
  70. package/components/InfiniteTreeList/TreeItem/ChildrenPlaceholder/NoDataRow/NoDataRow.js +5 -0
  71. package/components/InfiniteTreeList/TreeItem/ChildrenPlaceholder/NoDataRow/index.d.ts +1 -0
  72. package/components/InfiniteTreeList/TreeItem/ChildrenPlaceholder/NoDataRow/index.js +1 -0
  73. package/components/InfiniteTreeList/TreeItem/ChildrenPlaceholder/index.d.ts +1 -0
  74. package/components/InfiniteTreeList/TreeItem/ChildrenPlaceholder/index.js +1 -0
  75. package/components/InfiniteTreeList/TreeItem/CustomItemWrapper/CustomItemWrapper.d.ts +20 -0
  76. package/components/InfiniteTreeList/TreeItem/CustomItemWrapper/CustomItemWrapper.js +10 -0
  77. package/components/InfiniteTreeList/TreeItem/CustomItemWrapper/index.d.ts +1 -0
  78. package/components/InfiniteTreeList/TreeItem/CustomItemWrapper/index.js +1 -0
  79. package/components/InfiniteTreeList/TreeItem/ParentSlot/ParentSlot.d.ts +5 -0
  80. package/components/InfiniteTreeList/TreeItem/ParentSlot/ParentSlot.js +38 -0
  81. package/components/InfiniteTreeList/TreeItem/ParentSlot/index.d.ts +2 -0
  82. package/components/InfiniteTreeList/TreeItem/ParentSlot/index.js +2 -0
  83. package/components/InfiniteTreeList/TreeItem/ParentSlot/styles.d.ts +9 -0
  84. package/components/InfiniteTreeList/TreeItem/ParentSlot/styles.js +8 -0
  85. package/components/InfiniteTreeList/TreeItem/ParentSlot/types.d.ts +6 -0
  86. package/components/InfiniteTreeList/TreeItem/ParentSlot/types.js +1 -0
  87. package/components/InfiniteTreeList/TreeItem/TreeItem.d.ts +5 -2
  88. package/components/InfiniteTreeList/TreeItem/TreeItem.js +31 -4
  89. package/components/InfiniteTreeList/TreeItem/constants.d.ts +3 -0
  90. package/components/InfiniteTreeList/TreeItem/constants.js +3 -1
  91. package/components/InfiniteTreeList/TreeItem/styles.d.ts +0 -3
  92. package/components/InfiniteTreeList/TreeItem/styles.js +23 -8
  93. package/components/InfiniteTreeList/TreeItem/types.d.ts +4 -9
  94. package/components/InfiniteTreeList/TreeItem/useLogic/useLogic.d.ts +29 -9
  95. package/components/InfiniteTreeList/TreeItem/useLogic/useLogic.js +61 -19
  96. package/components/InfiniteTreeList/constants.d.ts +14 -2
  97. package/components/InfiniteTreeList/constants.js +14 -2
  98. package/components/InfiniteTreeList/hooks/index.d.ts +5 -0
  99. package/components/InfiniteTreeList/hooks/index.js +5 -0
  100. package/components/InfiniteTreeList/hooks/useChildrenState/index.d.ts +2 -0
  101. package/components/InfiniteTreeList/hooks/useChildrenState/index.js +2 -0
  102. package/components/InfiniteTreeList/hooks/useChildrenState/types.d.ts +43 -0
  103. package/components/InfiniteTreeList/hooks/useChildrenState/types.js +1 -0
  104. package/components/InfiniteTreeList/hooks/useChildrenState/useChildrenState.d.ts +20 -0
  105. package/components/InfiniteTreeList/hooks/useChildrenState/useChildrenState.js +115 -0
  106. package/components/InfiniteTreeList/hooks/useEnterAnimation/index.d.ts +2 -0
  107. package/components/InfiniteTreeList/hooks/useEnterAnimation/index.js +2 -0
  108. package/components/InfiniteTreeList/hooks/useEnterAnimation/types.d.ts +29 -0
  109. package/components/InfiniteTreeList/hooks/useEnterAnimation/types.js +1 -0
  110. package/components/InfiniteTreeList/hooks/useEnterAnimation/useEnterAnimation.d.ts +6 -0
  111. package/components/InfiniteTreeList/hooks/useEnterAnimation/useEnterAnimation.js +35 -0
  112. package/components/InfiniteTreeList/hooks/useExpandNotifier/index.d.ts +1 -0
  113. package/components/InfiniteTreeList/hooks/useExpandNotifier/index.js +1 -0
  114. package/components/InfiniteTreeList/hooks/useExpandNotifier/useExpandNotifier.d.ts +8 -0
  115. package/components/InfiniteTreeList/hooks/useExpandNotifier/useExpandNotifier.js +19 -0
  116. package/components/InfiniteTreeList/hooks/useFlatTree/index.d.ts +2 -0
  117. package/components/InfiniteTreeList/hooks/useFlatTree/index.js +2 -0
  118. package/components/InfiniteTreeList/hooks/useFlatTree/types.d.ts +20 -0
  119. package/components/InfiniteTreeList/hooks/useFlatTree/types.js +1 -0
  120. package/components/InfiniteTreeList/hooks/useFlatTree/useFlatTree.d.ts +15 -0
  121. package/components/InfiniteTreeList/hooks/useFlatTree/useFlatTree.js +88 -0
  122. package/components/InfiniteTreeList/hooks/useListScroll/index.d.ts +2 -0
  123. package/components/InfiniteTreeList/hooks/useListScroll/index.js +2 -0
  124. package/components/InfiniteTreeList/hooks/useListScroll/types.d.ts +25 -0
  125. package/components/InfiniteTreeList/hooks/useListScroll/types.js +1 -0
  126. package/components/InfiniteTreeList/hooks/useListScroll/useListScroll.d.ts +29 -0
  127. package/components/InfiniteTreeList/hooks/useListScroll/useListScroll.js +59 -0
  128. package/components/InfiniteTreeList/index.d.ts +1 -1
  129. package/components/InfiniteTreeList/public.d.ts +1 -1
  130. package/components/InfiniteTreeList/types.d.ts +83 -17
  131. package/components/InfiniteTreeList/useLogic/useLogic.d.ts +22 -12
  132. package/components/InfiniteTreeList/useLogic/useLogic.js +66 -71
  133. package/components/InfiniteTreeList/utils/checkHasSkeletonPlaceholders/checkHasSkeletonPlaceholders.d.ts +5 -0
  134. package/components/InfiniteTreeList/utils/checkHasSkeletonPlaceholders/checkHasSkeletonPlaceholders.js +6 -0
  135. package/components/InfiniteTreeList/utils/checkHasSkeletonPlaceholders/index.d.ts +1 -0
  136. package/components/InfiniteTreeList/utils/checkHasSkeletonPlaceholders/index.js +1 -0
  137. package/components/InfiniteTreeList/utils/checkIsChildrenPlaceholder/checkIsChildrenPlaceholder.d.ts +5 -0
  138. package/components/InfiniteTreeList/utils/checkIsChildrenPlaceholder/checkIsChildrenPlaceholder.js +4 -0
  139. package/components/InfiniteTreeList/utils/checkIsChildrenPlaceholder/index.d.ts +1 -0
  140. package/components/InfiniteTreeList/utils/checkIsChildrenPlaceholder/index.js +1 -0
  141. package/components/InfiniteTreeList/utils/checkIsChildrenPlaceholderOf/checkIsChildrenPlaceholderOf.d.ts +5 -0
  142. package/components/InfiniteTreeList/utils/checkIsChildrenPlaceholderOf/checkIsChildrenPlaceholderOf.js +5 -0
  143. package/components/InfiniteTreeList/utils/checkIsChildrenPlaceholderOf/index.d.ts +1 -0
  144. package/components/InfiniteTreeList/utils/checkIsChildrenPlaceholderOf/index.js +1 -0
  145. package/components/InfiniteTreeList/utils/checkIsDirectChild/checkIsDirectChild.d.ts +6 -0
  146. package/components/InfiniteTreeList/utils/checkIsDirectChild/checkIsDirectChild.js +6 -0
  147. package/components/InfiniteTreeList/utils/checkIsDirectChild/index.d.ts +1 -0
  148. package/components/InfiniteTreeList/utils/checkIsDirectChild/index.js +1 -0
  149. package/components/InfiniteTreeList/utils/checkIsNoDataChildren/checkIsNoDataChildren.d.ts +12 -0
  150. package/components/InfiniteTreeList/utils/checkIsNoDataChildren/checkIsNoDataChildren.js +14 -0
  151. package/components/InfiniteTreeList/utils/checkIsNoDataChildren/index.d.ts +1 -0
  152. package/components/InfiniteTreeList/utils/checkIsNoDataChildren/index.js +1 -0
  153. package/components/InfiniteTreeList/utils/checkIsSameChildren/checkIsSameChildren.d.ts +5 -0
  154. package/components/InfiniteTreeList/utils/checkIsSameChildren/checkIsSameChildren.js +16 -0
  155. package/components/InfiniteTreeList/utils/checkIsSameChildren/index.d.ts +1 -0
  156. package/components/InfiniteTreeList/utils/checkIsSameChildren/index.js +1 -0
  157. package/components/InfiniteTreeList/utils/countDirectChildren/countDirectChildren.d.ts +5 -0
  158. package/components/InfiniteTreeList/utils/countDirectChildren/countDirectChildren.js +5 -0
  159. package/components/InfiniteTreeList/utils/countDirectChildren/index.d.ts +1 -0
  160. package/components/InfiniteTreeList/utils/countDirectChildren/index.js +1 -0
  161. package/components/InfiniteTreeList/utils/createParentSlots/createParentSlots.d.ts +24 -0
  162. package/components/InfiniteTreeList/utils/createParentSlots/createParentSlots.js +35 -0
  163. package/components/InfiniteTreeList/utils/createParentSlots/index.d.ts +1 -0
  164. package/components/InfiniteTreeList/utils/createParentSlots/index.js +1 -0
  165. package/components/InfiniteTreeList/utils/createTailRegistry/createTailRegistry.d.ts +21 -0
  166. package/components/InfiniteTreeList/utils/createTailRegistry/createTailRegistry.js +40 -0
  167. package/components/InfiniteTreeList/utils/createTailRegistry/index.d.ts +1 -0
  168. package/components/InfiniteTreeList/utils/createTailRegistry/index.js +1 -0
  169. package/components/InfiniteTreeList/utils/flattenChildren/flattenChildren.d.ts +5 -0
  170. package/components/InfiniteTreeList/utils/flattenChildren/flattenChildren.js +5 -0
  171. package/components/InfiniteTreeList/utils/flattenChildren/index.d.ts +1 -0
  172. package/components/InfiniteTreeList/utils/flattenChildren/index.js +1 -0
  173. package/components/InfiniteTreeList/utils/flattenTree/flattenTree.d.ts +6 -0
  174. package/components/InfiniteTreeList/{useLogic/utils → utils}/flattenTree/flattenTree.js +9 -4
  175. package/components/InfiniteTreeList/utils/getEnteringChildren/getEnteringChildren.d.ts +17 -0
  176. package/components/InfiniteTreeList/utils/getEnteringChildren/getEnteringChildren.js +14 -0
  177. package/components/InfiniteTreeList/utils/getEnteringChildren/index.d.ts +1 -0
  178. package/components/InfiniteTreeList/utils/getEnteringChildren/index.js +1 -0
  179. package/components/InfiniteTreeList/utils/getIdsToKeep/getIdsToKeep.d.ts +10 -0
  180. package/components/InfiniteTreeList/utils/getIdsToKeep/getIdsToKeep.js +27 -0
  181. package/components/InfiniteTreeList/utils/getIdsToKeep/index.d.ts +1 -0
  182. package/components/InfiniteTreeList/utils/getIdsToKeep/index.js +1 -0
  183. package/components/InfiniteTreeList/{useLogic/utils → utils}/getInitialExpandedIds/getInitialExpandedIds.d.ts +4 -2
  184. package/components/InfiniteTreeList/{useLogic/utils → utils}/getInitialExpandedIds/getInitialExpandedIds.js +5 -4
  185. package/components/InfiniteTreeList/utils/getNestedItems/getNestedItems.d.ts +6 -0
  186. package/components/InfiniteTreeList/utils/getNestedItems/getNestedItems.js +18 -0
  187. package/components/InfiniteTreeList/utils/getNestedItems/index.d.ts +1 -0
  188. package/components/InfiniteTreeList/utils/getNestedItems/index.js +1 -0
  189. package/components/InfiniteTreeList/utils/index.d.ts +20 -0
  190. package/components/InfiniteTreeList/utils/index.js +20 -0
  191. package/components/InfiniteTreeList/utils/insertChildren/index.d.ts +1 -0
  192. package/components/InfiniteTreeList/utils/insertChildren/index.js +1 -0
  193. package/components/InfiniteTreeList/utils/insertChildren/insertChildren.d.ts +5 -0
  194. package/components/InfiniteTreeList/utils/insertChildren/insertChildren.js +41 -0
  195. package/components/InfiniteTreeList/utils/removeChildren/index.d.ts +1 -0
  196. package/components/InfiniteTreeList/utils/removeChildren/index.js +1 -0
  197. package/components/InfiniteTreeList/utils/removeChildren/removeChildren.d.ts +5 -0
  198. package/components/InfiniteTreeList/utils/removeChildren/removeChildren.js +12 -0
  199. package/components/InfiniteTreeList/utils/sortCollapsed/sortCollapsed.d.ts +5 -0
  200. package/components/InfiniteTreeList/{useLogic/utils → utils}/sortCollapsed/sortCollapsed.js +1 -6
  201. package/components/InfiniteTreeList/utils/startRemoveAnimation/index.d.ts +1 -0
  202. package/components/InfiniteTreeList/utils/startRemoveAnimation/index.js +1 -0
  203. package/components/InfiniteTreeList/utils/startRemoveAnimation/startRemoveAnimation.d.ts +1 -0
  204. package/components/InfiniteTreeList/utils/startRemoveAnimation/startRemoveAnimation.js +5 -0
  205. package/components/InfiniteTreeList/utils/syncChildrenPlaceholders/index.d.ts +1 -0
  206. package/components/InfiniteTreeList/utils/syncChildrenPlaceholders/index.js +1 -0
  207. package/components/InfiniteTreeList/utils/syncChildrenPlaceholders/syncChildrenPlaceholders.d.ts +11 -0
  208. package/components/InfiniteTreeList/utils/syncChildrenPlaceholders/syncChildrenPlaceholders.js +99 -0
  209. package/node/components/InfiniteTreeList/InfiniteTreeList.d.ts +18 -0
  210. package/node/components/InfiniteTreeList/InfiniteTreeList.js +24 -17
  211. package/node/components/InfiniteTreeList/InfiniteTreeListActions/InfiniteTreeListActions.d.ts +9 -0
  212. package/node/components/InfiniteTreeList/InfiniteTreeListActions/InfiniteTreeListActions.js +9 -0
  213. package/node/components/InfiniteTreeList/InfiniteTreeListActions/types.d.ts +5 -0
  214. package/node/components/InfiniteTreeList/InfiniteTreeListActions/useLogic/useLogic.js +5 -6
  215. package/node/components/InfiniteTreeList/InfiniteTreeListContext/InfiniteTreeListContext.d.ts +81 -0
  216. package/node/components/InfiniteTreeList/InfiniteTreeListContext/InfiniteTreeListContext.js +21 -0
  217. package/node/components/InfiniteTreeList/InfiniteTreeListContext/InfiniteTreeListContextProvider/InfiniteTreeListContextProvider.d.ts +3 -2
  218. package/node/components/InfiniteTreeList/InfiniteTreeListContext/InfiniteTreeListContextProvider/InfiniteTreeListContextProvider.js +69 -13
  219. package/node/components/InfiniteTreeList/InfiniteTreeListItem/ErrorPlaceholder/ErrorPlaceholder.d.ts +6 -0
  220. package/node/components/InfiniteTreeList/InfiniteTreeListItem/ErrorPlaceholder/ErrorPlaceholder.js +12 -0
  221. package/node/components/InfiniteTreeList/InfiniteTreeListItem/ErrorPlaceholder/constants.d.ts +1 -0
  222. package/node/components/InfiniteTreeList/InfiniteTreeListItem/ErrorPlaceholder/constants.js +4 -0
  223. package/node/components/InfiniteTreeList/InfiniteTreeListItem/ErrorPlaceholder/index.d.ts +1 -0
  224. package/node/components/InfiniteTreeList/InfiniteTreeListItem/ErrorPlaceholder/index.js +5 -0
  225. package/node/components/InfiniteTreeList/InfiniteTreeListItem/ErrorPlaceholder/styles.js +11 -0
  226. package/node/components/InfiniteTreeList/InfiniteTreeListItem/InfiniteTreeListItem.js +28 -6
  227. package/node/components/InfiniteTreeList/InfiniteTreeListItem/TreeListItemContext/TreeListItemContext.d.ts +19 -0
  228. package/node/components/InfiniteTreeList/InfiniteTreeListItem/TreeListItemContext/TreeListItemContext.js +4 -0
  229. package/node/components/InfiniteTreeList/InfiniteTreeListItem/TreeListItemContext/TreeListItemContextProvider/TreeListItemContextProvider.d.ts +4 -0
  230. package/node/components/InfiniteTreeList/InfiniteTreeListItem/TreeListItemContext/TreeListItemContextProvider/TreeListItemContextProvider.js +13 -8
  231. package/node/components/InfiniteTreeList/InfiniteTreeListItem/constants.d.ts +6 -0
  232. package/node/components/InfiniteTreeList/InfiniteTreeListItem/constants.js +10 -0
  233. package/node/components/InfiniteTreeList/InfiniteTreeListItem/styles.d.ts +4 -4
  234. package/node/components/InfiniteTreeList/InfiniteTreeListItem/styles.js +29 -6
  235. package/node/components/InfiniteTreeList/InfiniteTreeListItem/types.d.ts +20 -3
  236. package/node/components/InfiniteTreeList/InfiniteTreeListItem/useLogic/useLogic.d.ts +7 -1
  237. package/node/components/InfiniteTreeList/InfiniteTreeListItem/useLogic/useLogic.js +56 -4
  238. package/node/components/InfiniteTreeList/{EndData → ListFooter/EndData}/EndData.js +1 -1
  239. package/node/components/InfiniteTreeList/{ErrorMessage → ListFooter/ErrorMessage}/ErrorMessage.js +2 -2
  240. package/node/components/InfiniteTreeList/ListFooter/ErrorMessage/styles.d.ts +5 -0
  241. package/node/components/InfiniteTreeList/{ErrorMessage → ListFooter/ErrorMessage}/styles.js +1 -1
  242. package/node/components/InfiniteTreeList/ListFooter/ListFooter.d.ts +10 -0
  243. package/node/components/InfiniteTreeList/ListFooter/ListFooter.js +29 -0
  244. package/node/components/InfiniteTreeList/ListFooter/index.d.ts +2 -0
  245. package/node/components/InfiniteTreeList/ListFooter/index.js +17 -0
  246. package/node/components/InfiniteTreeList/{styles.js → ListFooter/styles.js} +1 -1
  247. package/node/components/InfiniteTreeList/ListFooter/types.d.ts +22 -0
  248. package/node/components/InfiniteTreeList/ListFooter/types.js +2 -0
  249. package/node/components/InfiniteTreeList/OnTopButton/OnTopButton.d.ts +8 -2
  250. package/node/components/InfiniteTreeList/OnTopButton/OnTopButton.js +6 -5
  251. package/node/components/InfiniteTreeList/OnTopButton/styles.d.ts +4 -0
  252. package/node/components/InfiniteTreeList/OnTopButton/styles.js +13 -0
  253. package/node/components/InfiniteTreeList/ParentItems/Item/CustomParentWrapper/CustomParentWrapper.d.ts +23 -0
  254. package/node/components/InfiniteTreeList/ParentItems/Item/CustomParentWrapper/CustomParentWrapper.js +15 -0
  255. package/node/components/InfiniteTreeList/ParentItems/Item/CustomParentWrapper/index.d.ts +1 -0
  256. package/node/components/InfiniteTreeList/ParentItems/Item/CustomParentWrapper/index.js +17 -0
  257. package/node/components/InfiniteTreeList/ParentItems/Item/Item.d.ts +10 -0
  258. package/node/components/InfiniteTreeList/ParentItems/Item/Item.js +25 -0
  259. package/node/components/InfiniteTreeList/ParentItems/Item/index.d.ts +2 -0
  260. package/node/components/InfiniteTreeList/ParentItems/Item/index.js +18 -0
  261. package/node/components/InfiniteTreeList/ParentItems/Item/types.d.ts +8 -0
  262. package/node/components/InfiniteTreeList/ParentItems/Item/types.js +2 -0
  263. package/node/components/InfiniteTreeList/ParentItems/Item/useLogic/index.d.ts +1 -0
  264. package/node/components/InfiniteTreeList/ParentItems/Item/useLogic/index.js +17 -0
  265. package/node/components/InfiniteTreeList/ParentItems/Item/useLogic/useLogic.d.ts +12 -0
  266. package/node/components/InfiniteTreeList/ParentItems/Item/useLogic/useLogic.js +16 -0
  267. package/node/components/InfiniteTreeList/ParentItems/ParentItems.d.ts +11 -0
  268. package/node/components/InfiniteTreeList/ParentItems/ParentItems.js +15 -0
  269. package/node/components/InfiniteTreeList/ParentItems/index.d.ts +3 -0
  270. package/node/components/InfiniteTreeList/ParentItems/index.js +19 -0
  271. package/node/components/InfiniteTreeList/ParentItems/types.d.ts +8 -0
  272. package/node/components/InfiniteTreeList/ParentItems/types.js +2 -0
  273. package/node/components/InfiniteTreeList/TreeItem/ChildrenPlaceholder/ChildrenPlaceholder.d.ts +9 -0
  274. package/node/components/InfiniteTreeList/TreeItem/ChildrenPlaceholder/ChildrenPlaceholder.js +26 -0
  275. package/node/components/InfiniteTreeList/TreeItem/ChildrenPlaceholder/NoDataRow/NoDataRow.d.ts +1 -0
  276. package/node/components/InfiniteTreeList/TreeItem/ChildrenPlaceholder/NoDataRow/NoDataRow.js +9 -0
  277. package/node/components/InfiniteTreeList/TreeItem/ChildrenPlaceholder/NoDataRow/index.d.ts +1 -0
  278. package/node/components/InfiniteTreeList/TreeItem/ChildrenPlaceholder/NoDataRow/index.js +17 -0
  279. package/node/components/InfiniteTreeList/TreeItem/ChildrenPlaceholder/index.d.ts +1 -0
  280. package/node/components/InfiniteTreeList/TreeItem/ChildrenPlaceholder/index.js +17 -0
  281. package/node/components/InfiniteTreeList/TreeItem/CustomItemWrapper/CustomItemWrapper.d.ts +20 -0
  282. package/node/components/InfiniteTreeList/TreeItem/CustomItemWrapper/CustomItemWrapper.js +13 -0
  283. package/node/components/InfiniteTreeList/TreeItem/CustomItemWrapper/index.d.ts +1 -0
  284. package/node/components/InfiniteTreeList/TreeItem/CustomItemWrapper/index.js +17 -0
  285. package/node/components/InfiniteTreeList/TreeItem/ParentSlot/ParentSlot.d.ts +5 -0
  286. package/node/components/InfiniteTreeList/TreeItem/ParentSlot/ParentSlot.js +42 -0
  287. package/node/components/InfiniteTreeList/TreeItem/ParentSlot/index.d.ts +2 -0
  288. package/node/components/InfiniteTreeList/TreeItem/ParentSlot/index.js +18 -0
  289. package/node/components/InfiniteTreeList/TreeItem/ParentSlot/styles.d.ts +9 -0
  290. package/node/components/InfiniteTreeList/TreeItem/ParentSlot/styles.js +11 -0
  291. package/node/components/InfiniteTreeList/TreeItem/ParentSlot/types.d.ts +6 -0
  292. package/node/components/InfiniteTreeList/TreeItem/ParentSlot/types.js +2 -0
  293. package/node/components/InfiniteTreeList/TreeItem/TreeItem.d.ts +5 -2
  294. package/node/components/InfiniteTreeList/TreeItem/TreeItem.js +31 -4
  295. package/node/components/InfiniteTreeList/TreeItem/constants.d.ts +3 -0
  296. package/node/components/InfiniteTreeList/TreeItem/constants.js +3 -1
  297. package/node/components/InfiniteTreeList/TreeItem/styles.d.ts +0 -3
  298. package/node/components/InfiniteTreeList/TreeItem/styles.js +23 -8
  299. package/node/components/InfiniteTreeList/TreeItem/types.d.ts +4 -9
  300. package/node/components/InfiniteTreeList/TreeItem/useLogic/useLogic.d.ts +29 -9
  301. package/node/components/InfiniteTreeList/TreeItem/useLogic/useLogic.js +60 -18
  302. package/node/components/InfiniteTreeList/constants.d.ts +14 -2
  303. package/node/components/InfiniteTreeList/constants.js +15 -3
  304. package/node/components/InfiniteTreeList/hooks/index.d.ts +5 -0
  305. package/node/components/InfiniteTreeList/hooks/index.js +21 -0
  306. package/node/components/InfiniteTreeList/hooks/useChildrenState/index.d.ts +2 -0
  307. package/node/components/InfiniteTreeList/hooks/useChildrenState/index.js +18 -0
  308. package/node/components/InfiniteTreeList/hooks/useChildrenState/types.d.ts +43 -0
  309. package/node/components/InfiniteTreeList/hooks/useChildrenState/types.js +2 -0
  310. package/node/components/InfiniteTreeList/hooks/useChildrenState/useChildrenState.d.ts +20 -0
  311. package/node/components/InfiniteTreeList/hooks/useChildrenState/useChildrenState.js +119 -0
  312. package/node/components/InfiniteTreeList/hooks/useEnterAnimation/index.d.ts +2 -0
  313. package/node/components/InfiniteTreeList/hooks/useEnterAnimation/index.js +18 -0
  314. package/node/components/InfiniteTreeList/hooks/useEnterAnimation/types.d.ts +29 -0
  315. package/node/components/InfiniteTreeList/hooks/useEnterAnimation/types.js +2 -0
  316. package/node/components/InfiniteTreeList/hooks/useEnterAnimation/useEnterAnimation.d.ts +6 -0
  317. package/node/components/InfiniteTreeList/hooks/useEnterAnimation/useEnterAnimation.js +39 -0
  318. package/node/components/InfiniteTreeList/hooks/useExpandNotifier/index.d.ts +1 -0
  319. package/node/components/InfiniteTreeList/hooks/useExpandNotifier/index.js +17 -0
  320. package/node/components/InfiniteTreeList/hooks/useExpandNotifier/useExpandNotifier.d.ts +8 -0
  321. package/node/components/InfiniteTreeList/hooks/useExpandNotifier/useExpandNotifier.js +23 -0
  322. package/node/components/InfiniteTreeList/hooks/useFlatTree/index.d.ts +2 -0
  323. package/node/components/InfiniteTreeList/hooks/useFlatTree/index.js +18 -0
  324. package/node/components/InfiniteTreeList/hooks/useFlatTree/types.d.ts +20 -0
  325. package/node/components/InfiniteTreeList/hooks/useFlatTree/types.js +2 -0
  326. package/node/components/InfiniteTreeList/hooks/useFlatTree/useFlatTree.d.ts +15 -0
  327. package/node/components/InfiniteTreeList/hooks/useFlatTree/useFlatTree.js +92 -0
  328. package/node/components/InfiniteTreeList/hooks/useListScroll/index.d.ts +2 -0
  329. package/node/components/InfiniteTreeList/hooks/useListScroll/index.js +18 -0
  330. package/node/components/InfiniteTreeList/hooks/useListScroll/types.d.ts +25 -0
  331. package/node/components/InfiniteTreeList/hooks/useListScroll/types.js +2 -0
  332. package/node/components/InfiniteTreeList/hooks/useListScroll/useListScroll.d.ts +29 -0
  333. package/node/components/InfiniteTreeList/hooks/useListScroll/useListScroll.js +63 -0
  334. package/node/components/InfiniteTreeList/index.d.ts +1 -1
  335. package/node/components/InfiniteTreeList/public.d.ts +1 -1
  336. package/node/components/InfiniteTreeList/types.d.ts +83 -17
  337. package/node/components/InfiniteTreeList/useLogic/useLogic.d.ts +22 -12
  338. package/node/components/InfiniteTreeList/useLogic/useLogic.js +64 -69
  339. package/node/components/InfiniteTreeList/utils/checkHasSkeletonPlaceholders/checkHasSkeletonPlaceholders.d.ts +5 -0
  340. package/node/components/InfiniteTreeList/utils/checkHasSkeletonPlaceholders/checkHasSkeletonPlaceholders.js +10 -0
  341. package/node/components/InfiniteTreeList/utils/checkHasSkeletonPlaceholders/index.d.ts +1 -0
  342. package/node/components/InfiniteTreeList/utils/checkHasSkeletonPlaceholders/index.js +17 -0
  343. package/node/components/InfiniteTreeList/utils/checkIsChildrenPlaceholder/checkIsChildrenPlaceholder.d.ts +5 -0
  344. package/node/components/InfiniteTreeList/utils/checkIsChildrenPlaceholder/checkIsChildrenPlaceholder.js +8 -0
  345. package/node/components/InfiniteTreeList/utils/checkIsChildrenPlaceholder/index.d.ts +1 -0
  346. package/node/components/InfiniteTreeList/utils/checkIsChildrenPlaceholder/index.js +17 -0
  347. package/node/components/InfiniteTreeList/utils/checkIsChildrenPlaceholderOf/checkIsChildrenPlaceholderOf.d.ts +5 -0
  348. package/node/components/InfiniteTreeList/utils/checkIsChildrenPlaceholderOf/checkIsChildrenPlaceholderOf.js +9 -0
  349. package/node/components/InfiniteTreeList/utils/checkIsChildrenPlaceholderOf/index.d.ts +1 -0
  350. package/node/components/InfiniteTreeList/utils/checkIsChildrenPlaceholderOf/index.js +17 -0
  351. package/node/components/InfiniteTreeList/utils/checkIsDirectChild/checkIsDirectChild.d.ts +6 -0
  352. package/node/components/InfiniteTreeList/utils/checkIsDirectChild/checkIsDirectChild.js +10 -0
  353. package/node/components/InfiniteTreeList/utils/checkIsDirectChild/index.d.ts +1 -0
  354. package/node/components/InfiniteTreeList/utils/checkIsDirectChild/index.js +17 -0
  355. package/node/components/InfiniteTreeList/utils/checkIsNoDataChildren/checkIsNoDataChildren.d.ts +12 -0
  356. package/node/components/InfiniteTreeList/utils/checkIsNoDataChildren/checkIsNoDataChildren.js +18 -0
  357. package/node/components/InfiniteTreeList/utils/checkIsNoDataChildren/index.d.ts +1 -0
  358. package/node/components/InfiniteTreeList/utils/checkIsNoDataChildren/index.js +17 -0
  359. package/node/components/InfiniteTreeList/utils/checkIsSameChildren/checkIsSameChildren.d.ts +5 -0
  360. package/node/components/InfiniteTreeList/utils/checkIsSameChildren/checkIsSameChildren.js +20 -0
  361. package/node/components/InfiniteTreeList/utils/checkIsSameChildren/index.d.ts +1 -0
  362. package/node/components/InfiniteTreeList/utils/checkIsSameChildren/index.js +17 -0
  363. package/node/components/InfiniteTreeList/utils/countDirectChildren/countDirectChildren.d.ts +5 -0
  364. package/node/components/InfiniteTreeList/utils/countDirectChildren/countDirectChildren.js +9 -0
  365. package/node/components/InfiniteTreeList/utils/countDirectChildren/index.d.ts +1 -0
  366. package/node/components/InfiniteTreeList/utils/countDirectChildren/index.js +17 -0
  367. package/node/components/InfiniteTreeList/utils/createParentSlots/createParentSlots.d.ts +24 -0
  368. package/node/components/InfiniteTreeList/utils/createParentSlots/createParentSlots.js +39 -0
  369. package/node/components/InfiniteTreeList/utils/createParentSlots/index.d.ts +1 -0
  370. package/node/components/InfiniteTreeList/utils/createParentSlots/index.js +17 -0
  371. package/node/components/InfiniteTreeList/utils/createTailRegistry/createTailRegistry.d.ts +21 -0
  372. package/node/components/InfiniteTreeList/utils/createTailRegistry/createTailRegistry.js +44 -0
  373. package/node/components/InfiniteTreeList/utils/createTailRegistry/index.d.ts +1 -0
  374. package/node/components/InfiniteTreeList/utils/createTailRegistry/index.js +5 -0
  375. package/node/components/InfiniteTreeList/utils/flattenChildren/flattenChildren.d.ts +5 -0
  376. package/node/components/InfiniteTreeList/utils/flattenChildren/flattenChildren.js +9 -0
  377. package/node/components/InfiniteTreeList/utils/flattenChildren/index.d.ts +1 -0
  378. package/node/components/InfiniteTreeList/utils/flattenChildren/index.js +17 -0
  379. package/node/components/InfiniteTreeList/utils/flattenTree/flattenTree.d.ts +6 -0
  380. package/node/components/InfiniteTreeList/{useLogic/utils → utils}/flattenTree/flattenTree.js +9 -4
  381. package/node/components/InfiniteTreeList/utils/getEnteringChildren/getEnteringChildren.d.ts +17 -0
  382. package/node/components/InfiniteTreeList/utils/getEnteringChildren/getEnteringChildren.js +18 -0
  383. package/node/components/InfiniteTreeList/utils/getEnteringChildren/index.d.ts +1 -0
  384. package/node/components/InfiniteTreeList/utils/getEnteringChildren/index.js +17 -0
  385. package/node/components/InfiniteTreeList/utils/getIdsToKeep/getIdsToKeep.d.ts +10 -0
  386. package/node/components/InfiniteTreeList/utils/getIdsToKeep/getIdsToKeep.js +31 -0
  387. package/node/components/InfiniteTreeList/utils/getIdsToKeep/index.d.ts +1 -0
  388. package/node/components/InfiniteTreeList/utils/getIdsToKeep/index.js +17 -0
  389. package/node/components/InfiniteTreeList/{useLogic/utils → utils}/getInitialExpandedIds/getInitialExpandedIds.d.ts +4 -2
  390. package/node/components/InfiniteTreeList/{useLogic/utils → utils}/getInitialExpandedIds/getInitialExpandedIds.js +5 -4
  391. package/node/components/InfiniteTreeList/utils/getNestedItems/getNestedItems.d.ts +6 -0
  392. package/node/components/InfiniteTreeList/utils/getNestedItems/getNestedItems.js +22 -0
  393. package/node/components/InfiniteTreeList/utils/getNestedItems/index.d.ts +1 -0
  394. package/node/components/InfiniteTreeList/{useLogic/utils/getDescendants → utils/getNestedItems}/index.js +1 -1
  395. package/node/components/InfiniteTreeList/utils/index.d.ts +20 -0
  396. package/node/components/InfiniteTreeList/utils/index.js +36 -0
  397. package/node/components/InfiniteTreeList/utils/insertChildren/index.d.ts +1 -0
  398. package/node/components/InfiniteTreeList/utils/insertChildren/index.js +17 -0
  399. package/node/components/InfiniteTreeList/utils/insertChildren/insertChildren.d.ts +5 -0
  400. package/node/components/InfiniteTreeList/utils/insertChildren/insertChildren.js +45 -0
  401. package/node/components/InfiniteTreeList/utils/removeChildren/index.d.ts +1 -0
  402. package/node/components/InfiniteTreeList/utils/removeChildren/index.js +17 -0
  403. package/node/components/InfiniteTreeList/utils/removeChildren/removeChildren.d.ts +5 -0
  404. package/node/components/InfiniteTreeList/utils/removeChildren/removeChildren.js +16 -0
  405. package/node/components/InfiniteTreeList/utils/sortCollapsed/sortCollapsed.d.ts +5 -0
  406. package/node/components/InfiniteTreeList/{useLogic/utils → utils}/sortCollapsed/sortCollapsed.js +1 -6
  407. package/node/components/InfiniteTreeList/utils/startRemoveAnimation/index.d.ts +1 -0
  408. package/node/components/InfiniteTreeList/utils/startRemoveAnimation/index.js +17 -0
  409. package/node/components/InfiniteTreeList/utils/startRemoveAnimation/startRemoveAnimation.d.ts +1 -0
  410. package/node/components/InfiniteTreeList/utils/startRemoveAnimation/startRemoveAnimation.js +9 -0
  411. package/node/components/InfiniteTreeList/utils/syncChildrenPlaceholders/index.d.ts +1 -0
  412. package/node/components/InfiniteTreeList/utils/syncChildrenPlaceholders/index.js +17 -0
  413. package/node/components/InfiniteTreeList/utils/syncChildrenPlaceholders/syncChildrenPlaceholders.d.ts +11 -0
  414. package/node/components/InfiniteTreeList/utils/syncChildrenPlaceholders/syncChildrenPlaceholders.js +104 -0
  415. package/package.json +1 -1
  416. package/components/InfiniteTreeList/useLogic/utils/flattenTree/flattenTree.d.ts +0 -5
  417. package/components/InfiniteTreeList/useLogic/utils/getDescendants/getDescendants.d.ts +0 -10
  418. package/components/InfiniteTreeList/useLogic/utils/getDescendants/getDescendants.js +0 -22
  419. package/components/InfiniteTreeList/useLogic/utils/getDescendants/index.d.ts +0 -1
  420. package/components/InfiniteTreeList/useLogic/utils/getDescendants/index.js +0 -1
  421. package/components/InfiniteTreeList/useLogic/utils/index.d.ts +0 -4
  422. package/components/InfiniteTreeList/useLogic/utils/index.js +0 -4
  423. package/components/InfiniteTreeList/useLogic/utils/sortCollapsed/sortCollapsed.d.ts +0 -10
  424. package/node/components/InfiniteTreeList/useLogic/utils/flattenTree/flattenTree.d.ts +0 -5
  425. package/node/components/InfiniteTreeList/useLogic/utils/getDescendants/getDescendants.d.ts +0 -10
  426. package/node/components/InfiniteTreeList/useLogic/utils/getDescendants/getDescendants.js +0 -26
  427. package/node/components/InfiniteTreeList/useLogic/utils/getDescendants/index.d.ts +0 -1
  428. package/node/components/InfiniteTreeList/useLogic/utils/index.d.ts +0 -4
  429. package/node/components/InfiniteTreeList/useLogic/utils/index.js +0 -20
  430. package/node/components/InfiniteTreeList/useLogic/utils/sortCollapsed/sortCollapsed.d.ts +0 -10
  431. /package/components/InfiniteTreeList/{EndData → ListFooter/EndData}/EndData.d.ts +0 -0
  432. /package/components/InfiniteTreeList/{EndData → ListFooter/EndData}/constants.d.ts +0 -0
  433. /package/components/InfiniteTreeList/{EndData → ListFooter/EndData}/constants.js +0 -0
  434. /package/components/InfiniteTreeList/{EndData → ListFooter/EndData}/index.d.ts +0 -0
  435. /package/components/InfiniteTreeList/{EndData → ListFooter/EndData}/index.js +0 -0
  436. /package/components/InfiniteTreeList/{ErrorMessage → ListFooter/ErrorMessage}/ErrorMessage.d.ts +0 -0
  437. /package/components/InfiniteTreeList/{ErrorMessage → ListFooter/ErrorMessage}/constants.d.ts +0 -0
  438. /package/components/InfiniteTreeList/{ErrorMessage → ListFooter/ErrorMessage}/constants.js +0 -0
  439. /package/components/InfiniteTreeList/{ErrorMessage → ListFooter/ErrorMessage}/index.d.ts +0 -0
  440. /package/components/InfiniteTreeList/{ErrorMessage → ListFooter/ErrorMessage}/index.js +0 -0
  441. /package/components/InfiniteTreeList/{useLogic/utils → utils}/flattenTree/index.d.ts +0 -0
  442. /package/components/InfiniteTreeList/{useLogic/utils → utils}/flattenTree/index.js +0 -0
  443. /package/components/InfiniteTreeList/{useLogic/utils → utils}/getInitialExpandedIds/index.d.ts +0 -0
  444. /package/components/InfiniteTreeList/{useLogic/utils → utils}/getInitialExpandedIds/index.js +0 -0
  445. /package/components/InfiniteTreeList/{useLogic/utils → utils}/sortCollapsed/index.d.ts +0 -0
  446. /package/components/InfiniteTreeList/{useLogic/utils → utils}/sortCollapsed/index.js +0 -0
  447. /package/node/components/InfiniteTreeList/{ErrorMessage → InfiniteTreeListItem/ErrorPlaceholder}/styles.d.ts +0 -0
  448. /package/node/components/InfiniteTreeList/{EndData → ListFooter/EndData}/EndData.d.ts +0 -0
  449. /package/node/components/InfiniteTreeList/{EndData → ListFooter/EndData}/constants.d.ts +0 -0
  450. /package/node/components/InfiniteTreeList/{EndData → ListFooter/EndData}/constants.js +0 -0
  451. /package/node/components/InfiniteTreeList/{EndData → ListFooter/EndData}/index.d.ts +0 -0
  452. /package/node/components/InfiniteTreeList/{EndData → ListFooter/EndData}/index.js +0 -0
  453. /package/node/components/InfiniteTreeList/{ErrorMessage → ListFooter/ErrorMessage}/ErrorMessage.d.ts +0 -0
  454. /package/node/components/InfiniteTreeList/{ErrorMessage → ListFooter/ErrorMessage}/constants.d.ts +0 -0
  455. /package/node/components/InfiniteTreeList/{ErrorMessage → ListFooter/ErrorMessage}/constants.js +0 -0
  456. /package/node/components/InfiniteTreeList/{ErrorMessage → ListFooter/ErrorMessage}/index.d.ts +0 -0
  457. /package/node/components/InfiniteTreeList/{ErrorMessage → ListFooter/ErrorMessage}/index.js +0 -0
  458. /package/node/components/InfiniteTreeList/{styles.d.ts → ListFooter/styles.d.ts} +0 -0
  459. /package/node/components/InfiniteTreeList/{useLogic/utils → utils}/flattenTree/index.d.ts +0 -0
  460. /package/node/components/InfiniteTreeList/{useLogic/utils → utils}/flattenTree/index.js +0 -0
  461. /package/node/components/InfiniteTreeList/{useLogic/utils → utils}/getInitialExpandedIds/index.d.ts +0 -0
  462. /package/node/components/InfiniteTreeList/{useLogic/utils → utils}/getInitialExpandedIds/index.js +0 -0
  463. /package/node/components/InfiniteTreeList/{useLogic/utils → utils}/sortCollapsed/index.d.ts +0 -0
  464. /package/node/components/InfiniteTreeList/{useLogic/utils → utils}/sortCollapsed/index.js +0 -0
@@ -0,0 +1,38 @@
1
+ import { jsx as _jsx } from "react/jsx-runtime";
2
+ import { useContext, useLayoutEffect, useRef } from 'react';
3
+ import { infiniteTreeListClassnames } from '../../constants';
4
+ import { InfiniteTreeListContext } from '../../InfiniteTreeListContext';
5
+ import { Host } from './styles';
6
+ /**
7
+ * Слот строки родительского узла списка
8
+ */
9
+ export const ParentSlot = ({ itemId }) => {
10
+ const { acquireParentSlot, enterAnimation } = useContext(InfiniteTreeListContext);
11
+ const hostRef = useRef(null);
12
+ useLayoutEffect(() => {
13
+ const host = hostRef.current;
14
+ const slot = acquireParentSlot(itemId);
15
+ if (!host || !slot) {
16
+ return;
17
+ }
18
+ host.appendChild(slot);
19
+ const row = slot.firstElementChild;
20
+ if (row instanceof HTMLElement) {
21
+ // Без снятия узел вернулся бы в список с анимацией исчезновения от
22
+ // прошлого сворачивания ветки
23
+ row.classList.remove(infiniteTreeListClassnames.rowRemoveAnimation);
24
+ const { shouldAnimate, delayIndex } = enterAnimation.read(itemId);
25
+ row.classList.toggle(infiniteTreeListClassnames.rowAddAnimation, shouldAnimate);
26
+ if (shouldAnimate && delayIndex !== undefined) {
27
+ row.style.setProperty('--sibling-index', String(delayIndex));
28
+ }
29
+ }
30
+ enterAnimation.claim(itemId);
31
+ // Контейнер не удаляется, а открепляется: строка остаётся смонтированной и
32
+ // ждёт следующего появления узла на экране
33
+ return () => {
34
+ slot.remove();
35
+ };
36
+ }, [itemId, acquireParentSlot, enterAnimation]);
37
+ return _jsx(Host, { ref: hostRef });
38
+ };
@@ -0,0 +1,2 @@
1
+ export * from './ParentSlot';
2
+ export * from './types';
@@ -0,0 +1,2 @@
1
+ export * from './ParentSlot';
2
+ export * from './types';
@@ -0,0 +1,9 @@
1
+ /// <reference types="react" />
2
+ /**
3
+ * Место строки узла в скролле. Своего box не создаёт: отступы и раскладка
4
+ * перенесённой строки считаются так же, как если бы она была здесь всегда
5
+ */
6
+ export declare const Host: import("../../../styled").StyledComponent<{
7
+ theme?: import("@emotion/react").Theme | undefined;
8
+ as?: import("react").ElementType<any, keyof import("react").JSX.IntrinsicElements> | undefined;
9
+ }, import("react").DetailedHTMLProps<import("react").HTMLAttributes<HTMLDivElement>, HTMLDivElement>, {}>;
@@ -0,0 +1,8 @@
1
+ import { styled } from '../../../styled';
2
+ /**
3
+ * Место строки узла в скролле. Своего box не создаёт: отступы и раскладка
4
+ * перенесённой строки считаются так же, как если бы она была здесь всегда
5
+ */
6
+ export const Host = styled.div `
7
+ display: contents;
8
+ `;
@@ -0,0 +1,6 @@
1
+ export type ParentSlotProps = {
2
+ /**
3
+ * Id узла, чей контейнер занимает строка
4
+ */
5
+ itemId: string;
6
+ };
@@ -1,3 +1,6 @@
1
- import type { InfiniteTreeListData } from '../types';
2
1
  import { type TreeItemProps } from './types';
3
- export declare const TreeItem: <TData extends InfiniteTreeListData<TData>>(props: TreeItemProps<TData>) => import("react/jsx-runtime").JSX.Element;
2
+ /**
3
+ * Строка виртуализации: обёртка, которую `Virtuoso` рендерит вокруг элемента.
4
+ * Ставит контекст строки, css-переменные уровня и каскада, classname анимации
5
+ */
6
+ export declare const TreeItem: ({ children, ...props }: TreeItemProps) => import("react/jsx-runtime").JSX.Element;
@@ -1,8 +1,35 @@
1
1
  import { jsx as _jsx } from "react/jsx-runtime";
2
+ import { cva } from '../../utils/cva';
3
+ import { infiniteTreeListClassnames } from '../constants';
4
+ import { TreeListItemContextProvider } from '../InfiniteTreeListItem';
5
+ import { ChildrenPlaceholder } from './ChildrenPlaceholder';
6
+ import { CustomItemWrapper } from './CustomItemWrapper';
7
+ import { ParentSlot } from './ParentSlot';
2
8
  import { Wrapper } from './styles';
3
9
  import { useLogic } from './useLogic';
4
- export const TreeItem = (props) => {
5
- const { item, renderItem, classname, onAnimationEnd } = useLogic(props);
6
- const { nodeId, level, siblingIndex } = item.meta;
7
- return (_jsx(Wrapper, { id: nodeId, className: classname, "$level": level, "$siblingIndex": siblingIndex, onAnimationEnd: onAnimationEnd, children: renderItem(item) }));
10
+ const treeItemCva = cva(infiniteTreeListClassnames.row, {
11
+ variants: {
12
+ isSpinner: {
13
+ true: infiniteTreeListClassnames.rowSpinner,
14
+ },
15
+ hasAddAnimation: {
16
+ true: infiniteTreeListClassnames.rowAddAnimation,
17
+ },
18
+ },
19
+ });
20
+ /**
21
+ * Строка виртуализации: обёртка, которую `Virtuoso` рендерит вокруг элемента.
22
+ * Ставит контекст строки, css-переменные уровня и каскада, classname анимации
23
+ */
24
+ export const TreeItem = ({ children, ...props }) => {
25
+ const { item, renderItem, onToggle, memoizedItemProps, cssVars, isSpinner, hasAddAnimation, } = useLogic(props);
26
+ const { nodeId, isChildrenAsync } = item.meta;
27
+ // Строку узла с подгружаемыми дочерними элементами рисует не список,
28
+ // а постоянный слой: сюда она приезжает готовым DOM-узлом. Иначе store,
29
+ // заведённый потребителем внутри renderParent, умирал бы на каждом уходе
30
+ // строки со скролла
31
+ if (isChildrenAsync && !item.placeholderKind) {
32
+ return (_jsx("div", { ...memoizedItemProps, children: _jsx(ParentSlot, { itemId: item.id }) }));
33
+ }
34
+ return (_jsx("div", { ...memoizedItemProps, children: _jsx(TreeListItemContextProvider, { item: item, onToggle: onToggle, children: _jsx(Wrapper, { id: nodeId, className: treeItemCva({ isSpinner, hasAddAnimation }), style: cssVars, children: item.placeholderKind ? (_jsx(ChildrenPlaceholder, { item: item })) : (_jsx(CustomItemWrapper, { item: item, renderItem: renderItem })) }) }) }));
8
35
  };
@@ -1 +1,4 @@
1
+ /**
2
+ * Задержка каскадной анимации между соседними строками, мс
3
+ */
1
4
  export declare const ANIMATION_DELAY = 30;
@@ -1,2 +1,4 @@
1
- // Задержка для каскадной анимации элементов в ms
1
+ /**
2
+ * Задержка каскадной анимации между соседними строками, мс
3
+ */
2
4
  export const ANIMATION_DELAY = 30;
@@ -2,7 +2,4 @@
2
2
  export declare const Wrapper: import("../../styled").StyledComponent<{
3
3
  theme?: import("@emotion/react").Theme | undefined;
4
4
  as?: import("react").ElementType<any, keyof import("react").JSX.IntrinsicElements> | undefined;
5
- } & {
6
- $level: number;
7
- $siblingIndex?: number | undefined;
8
5
  }, import("react").DetailedHTMLProps<import("react").HTMLAttributes<HTMLDivElement>, HTMLDivElement>, {}>;
@@ -3,6 +3,9 @@ import { tooltipClassnames } from '../../Tooltip';
3
3
  import { infiniteTreeListClassnames } from '../constants';
4
4
  import { ANIMATION_DELAY } from './constants';
5
5
  export const Wrapper = styled.div `
6
+ --level: 0;
7
+ --sibling-index: 0;
8
+
6
9
  @keyframes slide-in-from-left {
7
10
  0% {
8
11
  transform: translateX(-16px);
@@ -39,21 +42,33 @@ export const Wrapper = styled.div `
39
42
 
40
43
  min-height: 60px;
41
44
  margin-top: ${({ theme }) => theme.spacing(1)};
42
- margin-left: ${({ $level }) => `calc(${$level} * 20px)`};
45
+ margin-left: calc(var(--level) * ${({ theme }) => theme.spacing(5)});
43
46
 
44
47
  border: 1px solid ${({ theme }) => theme.palette.components.border.default};
45
48
  border-radius: ${({ theme }) => theme.shape.medium};
46
-
47
- &.${infiniteTreeListClassnames.addAnimation} {
48
- animation: slide-in-from-left ${({ theme }) => theme.transitions.duration.short}ms ease-out;
49
+
50
+ &.${infiniteTreeListClassnames.rowAddAnimation} {
51
+ animation: slide-in-from-left
52
+ ${({ theme }) => theme.transitions.duration.short}ms ease-out;
49
53
  animation-fill-mode: both;
50
- animation-delay: ${({ $siblingIndex = 0 }) => $siblingIndex * ANIMATION_DELAY}ms;
54
+ animation-delay: calc(var(--sibling-index) * ${ANIMATION_DELAY}ms);
51
55
  }
52
56
 
53
- &.${infiniteTreeListClassnames.removeAnimation} {
54
- animation: slide-out-to-left ${({ theme }) => theme.transitions.duration.shorter}ms ease-in forwards;
57
+ &.${infiniteTreeListClassnames.rowRemoveAnimation} {
58
+ animation: slide-out-to-left
59
+ ${({ theme }) => theme.transitions.duration.shorter}ms ease-in forwards;
55
60
  animation-fill-mode: both;
56
- animation-delay: ${({ $siblingIndex = 0 }) => $siblingIndex * ANIMATION_DELAY}ms;
61
+ animation-delay: calc(var(--sibling-index) * ${ANIMATION_DELAY}ms);
62
+ }
63
+
64
+ &.${infiniteTreeListClassnames.rowSpinner} {
65
+ justify-content: center;
66
+
67
+ width: 100%;
68
+ min-height: 64px;
69
+
70
+ background: transparent;
71
+ border: none;
57
72
  }
58
73
 
59
74
  & > .${tooltipClassnames.contentWrapper} {
@@ -1,9 +1,4 @@
1
- import type { ReactNode, RefObject } from 'react';
2
- import { type FlattenTree, type InfiniteTreeItemMeta, type InfiniteTreeListData } from '../types';
3
- export type TreeItemProps<TData extends InfiniteTreeListData<TData>> = {
4
- item: FlattenTree<TData>;
5
- renderItem: (item: TData & {
6
- meta: InfiniteTreeItemMeta;
7
- }) => ReactNode;
8
- recentlyExpandedIds: RefObject<Set<string>>;
9
- };
1
+ import type { ContextProp, ItemProps as VirtuosoItemProps } from 'react-virtuoso';
2
+ import { type ListFooterContext } from '../ListFooter';
3
+ import type { FlattenTree, InfiniteTreeListData } from '../types';
4
+ export type TreeItemProps = VirtuosoItemProps<FlattenTree<InfiniteTreeListData>> & ContextProp<ListFooterContext>;
@@ -1,11 +1,31 @@
1
- /// <reference types="react" />
2
- import type { InfiniteTreeListData } from '../../types';
1
+ import { type CSSProperties } from 'react';
3
2
  import { type TreeItemProps } from '../types';
4
- export declare const useLogic: <TData extends InfiniteTreeListData<TData>>({ item, renderItem, recentlyExpandedIds, }: TreeItemProps<TData>) => {
5
- item: import("../../types").FlattenTree<TData>;
6
- renderItem: (item: TData & {
7
- meta: import("../../types").InfiniteTreeItemMeta;
8
- }) => import("react").ReactNode;
9
- classname: string;
10
- onAnimationEnd: () => void;
3
+ type UseLogicParams = Omit<TreeItemProps, 'children'>;
4
+ /**
5
+ * Логика строки виртуализации: регистрирует хвост ветки в реестре, один раз
6
+ * на mount читает метку enter-анимации и считает css-переменные строки.
7
+ *
8
+ * Про хвост: `Virtuoso` виртуализирует плоский список, и его `endReached` —
9
+ * это конец всего списка, то есть корневая пагинация. У вложенной пагинации
10
+ * свой признак конца: последний загруженный дочерний элемент раскрытой
11
+ * ветки. Такая строка пишет себя в `tailRegistry`, а `useListScroll` на смене
12
+ * видимого диапазона зовёт `checkRange` — попал хвост в кадр, ветка просит
13
+ * `onLoadMore(parentId)`. Отдельного элемента-sentinel в разметке для
14
+ * этого нет
15
+ */
16
+ export declare const useLogic: ({ item, context, ...itemProps }: UseLogicParams) => {
17
+ item: import("../../types").FlattenTree<import("../../types").InfiniteTreeListData>;
18
+ renderItem: (item: import("../../types").FlattenTree<import("../../types").InfiniteTreeListData>) => import("react").ReactNode;
19
+ onToggle: (item: import("../../types").InfiniteTreeListData) => void;
20
+ memoizedItemProps: {
21
+ style?: CSSProperties | undefined;
22
+ 'data-index': number;
23
+ 'data-item-group-index'?: number | undefined;
24
+ 'data-item-index': number;
25
+ 'data-known-size': number;
26
+ };
27
+ cssVars: CSSProperties;
28
+ isSpinner: boolean;
29
+ hasAddAnimation: boolean;
11
30
  };
31
+ export {};
@@ -1,24 +1,66 @@
1
- import { useEffect, useMemo } from 'react';
2
- import { infiniteTreeListClassnames } from '../../constants';
3
- export const useLogic = ({ item, renderItem, recentlyExpandedIds, }) => {
4
- const deleteRecentlyExpandedId = () => {
5
- item.meta.parentId &&
6
- recentlyExpandedIds.current?.delete(item.meta.parentId);
7
- };
1
+ // cspell:ignore виртуализирует
2
+ import { useContext, useEffect, useMemo, useRef, } from 'react';
3
+ import { InfiniteTreeListContext } from '../../InfiniteTreeListContext';
4
+ /**
5
+ * Логика строки виртуализации: регистрирует хвост ветки в реестре, один раз
6
+ * на mount читает метку enter-анимации и считает css-переменные строки.
7
+ *
8
+ * Про хвост: `Virtuoso` виртуализирует плоский список, и его `endReached` —
9
+ * это конец всего списка, то есть корневая пагинация. У вложенной пагинации
10
+ * свой признак конца: последний загруженный дочерний элемент раскрытой
11
+ * ветки. Такая строка пишет себя в `tailRegistry`, а `useListScroll` на смене
12
+ * видимого диапазона зовёт `checkRange` — попал хвост в кадр, ветка просит
13
+ * `onLoadMore(parentId)`. Отдельного элемента-sentinel в разметке для
14
+ * этого нет
15
+ */
16
+ export const useLogic = ({ item, context, ...itemProps }) => {
17
+ const { renderItem, onToggle, nodePaginationMap, onLoadMore, enterAnimation, tailRegistry, } = useContext(InfiniteTreeListContext);
18
+ const memoizedItemProps = useMemo(() => itemProps, [itemProps.style]);
19
+ const { parentId, siblingIndex, level } = item.meta;
20
+ const parentPagination = parentId ? nodePaginationMap[parentId] : undefined;
21
+ const isLastChild = parentPagination?.lastChildId === item.id;
22
+ const shouldRegister = Boolean(isLastChild &&
23
+ parentId &&
24
+ !parentPagination?.isEndReached &&
25
+ !parentPagination?.isChildrenLoading &&
26
+ !parentPagination?.isChildrenError);
27
+ // Решение об анимации принимается один раз, на mount строки. Чтение метки
28
+ // не меняет состояние, поэтому отброшенный рендер ничего не ломает
29
+ const enterState = useRef(null);
30
+ if (!enterState.current) {
31
+ enterState.current = enterAnimation.read(item.id);
32
+ }
33
+ const { shouldAnimate, delayIndex } = enterState.current;
34
+ // Метка забирается после коммита: повторный mount строки при скролле
35
+ // виртуализации анимации уже не получит
36
+ useEffect(() => {
37
+ enterAnimation.claim(item.id);
38
+ }, []);
8
39
  useEffect(() => {
40
+ if (!shouldRegister || !parentId) {
41
+ return;
42
+ }
43
+ const registeredParentId = parentId;
44
+ const registeredItemId = item.id;
45
+ tailRegistry.register(registeredParentId, registeredItemId, () => onLoadMore(registeredParentId));
9
46
  return () => {
10
- deleteRecentlyExpandedId();
47
+ tailRegistry.unregister(registeredParentId, registeredItemId);
11
48
  };
12
- }, []);
13
- const onAnimationEnd = () => {
14
- deleteRecentlyExpandedId();
49
+ }, [shouldRegister, parentId, item.id, tailRegistry, onLoadMore]);
50
+ const isSpinner = item.placeholderKind === 'spinner';
51
+ // Уровень вложенности и индекс каскада — динамические значения, поэтому
52
+ // передаются в стили через css vars, а не через styled props
53
+ const cssVars = {
54
+ '--level': level,
55
+ '--sibling-index': delayIndex ?? siblingIndex,
56
+ };
57
+ return {
58
+ item,
59
+ renderItem,
60
+ onToggle,
61
+ memoizedItemProps,
62
+ cssVars,
63
+ isSpinner,
64
+ hasAddAnimation: !isSpinner && shouldAnimate,
15
65
  };
16
- const classname = useMemo(() => {
17
- if (item?.meta.parentId &&
18
- recentlyExpandedIds.current?.has(item?.meta.parentId)) {
19
- return infiniteTreeListClassnames.addAnimation;
20
- }
21
- return '';
22
- }, [item.id]);
23
- return { item, renderItem, classname, onAnimationEnd };
24
66
  };
@@ -1,6 +1,18 @@
1
1
  export declare const VIRTUOSO_CONTAINER_ID = "virtuoso-container";
2
2
  export declare const OVERSCAN = 30;
3
+ /**
4
+ * Окно ожидания mount строки, помеченной для enter-анимации.
5
+ * Virtuoso монтирует видимые дочерние строки в следующем кадре после смены
6
+ * data, поэтому `useLayoutEffect` снимает метку слишком рано
7
+ */
8
+ export declare const ENTER_ANIMATION_MOUNT_WINDOW_MS = 100;
9
+ export declare const CHILDREN_SKELETON_COUNT = 3;
10
+ export declare const CHILDREN_NO_DATA_MSG = "\u041D\u0435\u0442 \u0434\u0430\u043D\u043D\u044B\u0445";
3
11
  export declare const infiniteTreeListClassnames: {
4
- addAnimation: string;
5
- removeAnimation: string;
12
+ row: string;
13
+ rowAddAnimation: string;
14
+ rowRemoveAnimation: string;
15
+ rowSpinner: string;
16
+ scrollToTopButton: string;
17
+ visibleScrollToTopButton: string;
6
18
  };
@@ -1,7 +1,19 @@
1
1
  import { createUIKitClassname } from '../utils/createUIKitClassname';
2
2
  export const VIRTUOSO_CONTAINER_ID = 'virtuoso-container';
3
3
  export const OVERSCAN = 30;
4
+ /**
5
+ * Окно ожидания mount строки, помеченной для enter-анимации.
6
+ * Virtuoso монтирует видимые дочерние строки в следующем кадре после смены
7
+ * data, поэтому `useLayoutEffect` снимает метку слишком рано
8
+ */
9
+ export const ENTER_ANIMATION_MOUNT_WINDOW_MS = 100;
10
+ export const CHILDREN_SKELETON_COUNT = 3;
11
+ export const CHILDREN_NO_DATA_MSG = 'Нет данных';
4
12
  export const infiniteTreeListClassnames = {
5
- addAnimation: createUIKitClassname('infinite-tree-list_add-animation'),
6
- removeAnimation: createUIKitClassname('infinite-tree-list_remove-animation'),
13
+ row: createUIKitClassname('infinite-tree-list__row'),
14
+ rowAddAnimation: createUIKitClassname('infinite-tree-list__row_add-animation'),
15
+ rowRemoveAnimation: createUIKitClassname('infinite-tree-list__row_remove-animation'),
16
+ rowSpinner: createUIKitClassname('infinite-tree-list__row_spinner'),
17
+ scrollToTopButton: createUIKitClassname('infinite-tree-list__scroll-to-top-button'),
18
+ visibleScrollToTopButton: createUIKitClassname('infinite-tree-list__scroll-to-top-button_visible'),
7
19
  };
@@ -0,0 +1,5 @@
1
+ export * from './useChildrenState';
2
+ export * from './useEnterAnimation';
3
+ export * from './useExpandNotifier';
4
+ export * from './useFlatTree';
5
+ export * from './useListScroll';
@@ -0,0 +1,5 @@
1
+ export * from './useChildrenState';
2
+ export * from './useEnterAnimation';
3
+ export * from './useExpandNotifier';
4
+ export * from './useFlatTree';
5
+ export * from './useListScroll';
@@ -0,0 +1,2 @@
1
+ export * from './types';
2
+ export * from './useChildrenState';
@@ -0,0 +1,2 @@
1
+ export * from './types';
2
+ export * from './useChildrenState';
@@ -0,0 +1,43 @@
1
+ import type { RefObject } from 'react';
2
+ import type { FlattenTree, InfiniteTreeListData } from '../../types';
3
+ import type { EnterAnimationResult } from '../useEnterAnimation';
4
+ export type UseChildrenStateParams<TData extends InfiniteTreeListData<TData>> = {
5
+ /**
6
+ * Данные списка
7
+ */
8
+ items: TData[];
9
+ /**
10
+ * Плоский список строк
11
+ */
12
+ flatList: FlattenTree<TData>[];
13
+ /**
14
+ * Список для синхронного чтения
15
+ */
16
+ flatListRef: RefObject<FlattenTree<TData>[]>;
17
+ /**
18
+ * Набор раскрытых узлов
19
+ */
20
+ expandedIds: Set<string>;
21
+ /**
22
+ * Набор раскрытых узлов для синхронного чтения
23
+ */
24
+ expandedIdsRef: RefObject<Set<string>>;
25
+ /**
26
+ * Контроллер enter-анимации: метит новые дочерние элементы
27
+ * и skeleton-узлы
28
+ */
29
+ enterAnimation: EnterAnimationResult;
30
+ /**
31
+ * Вставляет дочерние элементы узла в плоский список
32
+ */
33
+ insertChildren: (parentId: string, childrenData: TData[]) => void;
34
+ /**
35
+ * Функция управления placeholder ветки родителя
36
+ */
37
+ syncChildrenPlaceholders: (parentId: string, isChildrenLoading: boolean, skeletonCount: number, isChildrenError?: boolean, isChildrenNoData?: boolean) => void;
38
+ skeletonCount: number;
39
+ /**
40
+ * Выбрасывает контейнер строки узла, которого больше нет в данных
41
+ */
42
+ releaseParentSlot: (itemId: string) => void;
43
+ };
@@ -0,0 +1,20 @@
1
+ import type { NodePagination } from '../../InfiniteTreeListContext';
2
+ import type { FlattenTree, InfiniteTreeChildrenPagination, InfiniteTreeListData } from '../../types';
3
+ import type { UseChildrenStateParams } from './types';
4
+ /**
5
+ * Сводит данные дочерних элементов раскрытых узлов в плоский список:
6
+ * вставляет их, ставит заглушки ветки, собирает пагинацию узлов и метит новые
7
+ * строки для enter-анимации. Дочерние элементы отдаёт строка узла
8
+ * (`childItems`, `isLoading`, `isError`), не props списка.
9
+ *
10
+ * Дочерние элементы смонтированными хук не держит — их строки живут
11
+ * по правилам виртуализации. Строки узлов с подгружаемыми дочерними
12
+ * элементами, наоборот, монтируются один раз и живут, пока жив список:
13
+ * их состояние не должно умирать ни от ухода строки со скролла,
14
+ * ни от сворачивания ветки
15
+ */
16
+ export declare const useChildrenState: <TData extends InfiniteTreeListData<TData>>({ items, flatList, flatListRef, expandedIds, expandedIdsRef, enterAnimation, insertChildren, syncChildrenPlaceholders, skeletonCount, releaseParentSlot, }: UseChildrenStateParams<TData>) => {
17
+ registerChildren: (itemId: string, childrenState: InfiniteTreeChildrenPagination) => void;
18
+ nodePaginationMap: Record<string, NodePagination>;
19
+ parentItems: FlattenTree<TData>[];
20
+ };
@@ -0,0 +1,115 @@
1
+ import { useCallback, useEffect, useMemo, useRef, useState } from 'react';
2
+ import { checkHasSkeletonPlaceholders, checkIsNoDataChildren, checkIsSameChildren, countDirectChildren, getChildrenPlaceholderIds, getEnteringChildren, getIdsToKeep, } from '../../utils';
3
+ /**
4
+ * Сводит данные дочерних элементов раскрытых узлов в плоский список:
5
+ * вставляет их, ставит заглушки ветки, собирает пагинацию узлов и метит новые
6
+ * строки для enter-анимации. Дочерние элементы отдаёт строка узла
7
+ * (`childItems`, `isLoading`, `isError`), не props списка.
8
+ *
9
+ * Дочерние элементы смонтированными хук не держит — их строки живут
10
+ * по правилам виртуализации. Строки узлов с подгружаемыми дочерними
11
+ * элементами, наоборот, монтируются один раз и живут, пока жив список:
12
+ * их состояние не должно умирать ни от ухода строки со скролла,
13
+ * ни от сворачивания ветки
14
+ */
15
+ export const useChildrenState = ({ items, flatList, flatListRef, expandedIds, expandedIdsRef, enterAnimation, insertChildren, syncChildrenPlaceholders, skeletonCount, releaseParentSlot, }) => {
16
+ const [childrenStateMap, setChildrenStateMap] = useState({});
17
+ const childrenStateMapRef = useRef(childrenStateMap);
18
+ // Синхронизация после коммита: запись в ref во время рендера — side effect,
19
+ // отброшенный рендер оставил бы в ref значение из дерева, которое
20
+ // не попало в коммит
21
+ useEffect(() => {
22
+ childrenStateMapRef.current = childrenStateMap;
23
+ });
24
+ const loadedOnceIdsRef = useRef(new Set());
25
+ const registerChildren = useCallback((itemId, childrenState) => {
26
+ const nextChildren = childrenState;
27
+ setChildrenStateMap((prev) => {
28
+ if (checkIsSameChildren(prev[itemId], nextChildren)) {
29
+ return prev;
30
+ }
31
+ return { ...prev, [itemId]: nextChildren };
32
+ });
33
+ }, []);
34
+ const resolveNoData = useCallback((parentId, childrenState) => {
35
+ const hasLoadedOnce = loadedOnceIdsRef.current.has(parentId);
36
+ if (childrenState.isLoading) {
37
+ loadedOnceIdsRef.current.add(parentId);
38
+ }
39
+ return checkIsNoDataChildren(childrenState, hasLoadedOnce);
40
+ }, []);
41
+ const syncChildren = useCallback((parentId, childrenState) => {
42
+ const existingDirectCount = countDirectChildren(flatListRef.current, parentId);
43
+ const hasSkeletons = checkHasSkeletonPlaceholders(flatListRef.current, parentId);
44
+ insertChildren(parentId, childrenState.data);
45
+ syncChildrenPlaceholders(parentId, Boolean(childrenState.isLoading), skeletonCount, childrenState.isError, resolveNoData(parentId, childrenState));
46
+ if (childrenState.isLoading) {
47
+ // Первая загрузка необходима для skeleton-элементов
48
+ const firstLoading = existingDirectCount === 0 && !hasSkeletons;
49
+ if (firstLoading) {
50
+ enterAnimation.schedule(getChildrenPlaceholderIds(parentId, skeletonCount));
51
+ }
52
+ return;
53
+ }
54
+ if (childrenState.isError ||
55
+ childrenState.data.length <= existingDirectCount) {
56
+ return;
57
+ }
58
+ const { itemIds, startDelayIndex } = getEnteringChildren(childrenState.data.map((item) => item.id), existingDirectCount, hasSkeletons ? skeletonCount : 0);
59
+ enterAnimation.schedule(itemIds, startDelayIndex);
60
+ }, [
61
+ enterAnimation,
62
+ flatListRef,
63
+ insertChildren,
64
+ resolveNoData,
65
+ skeletonCount,
66
+ syncChildrenPlaceholders,
67
+ ]);
68
+ useEffect(() => {
69
+ Object.entries(childrenStateMap).forEach(([parentId, childrenState]) => {
70
+ if (expandedIdsRef.current.has(parentId)) {
71
+ syncChildren(parentId, childrenState);
72
+ }
73
+ });
74
+ }, [childrenStateMap, expandedIds]);
75
+ const nodePaginationMap = useMemo(() => Object.entries(childrenStateMap).reduce((acc, [parentId, childrenState]) => {
76
+ acc[parentId] = {
77
+ lastChildId: childrenState.data[childrenState.data.length - 1]?.id,
78
+ isEndReached: childrenState.isEndReached,
79
+ isChildrenLoading: childrenState.isLoading,
80
+ isChildrenError: childrenState.isError,
81
+ };
82
+ return acc;
83
+ }, {}), [childrenStateMap]);
84
+ const parentItemsRef = useRef(new Map());
85
+ const parentItems = useMemo(() => {
86
+ flatList.forEach((item) => {
87
+ if (item.meta.isChildrenAsync) {
88
+ parentItemsRef.current.set(item.id, item);
89
+ }
90
+ });
91
+ return [...parentItemsRef.current.values()];
92
+ }, [flatList]);
93
+ useEffect(() => {
94
+ const idsToKeep = getIdsToKeep(items, childrenStateMapRef.current);
95
+ parentItemsRef.current.forEach((_, itemId) => {
96
+ if (!idsToKeep.has(itemId)) {
97
+ parentItemsRef.current.delete(itemId);
98
+ releaseParentSlot(itemId);
99
+ }
100
+ });
101
+ loadedOnceIdsRef.current.forEach((itemId) => {
102
+ if (!idsToKeep.has(itemId)) {
103
+ loadedOnceIdsRef.current.delete(itemId);
104
+ }
105
+ });
106
+ setChildrenStateMap((prev) => {
107
+ const entriesToKeep = Object.entries(prev).filter(([itemId]) => idsToKeep.has(itemId));
108
+ if (entriesToKeep.length === Object.keys(prev).length) {
109
+ return prev;
110
+ }
111
+ return Object.fromEntries(entriesToKeep);
112
+ });
113
+ }, [items, releaseParentSlot]);
114
+ return { registerChildren, nodePaginationMap, parentItems };
115
+ };
@@ -0,0 +1,2 @@
1
+ export * from './types';
2
+ export * from './useEnterAnimation';
@@ -0,0 +1,2 @@
1
+ export * from './types';
2
+ export * from './useEnterAnimation';
@@ -0,0 +1,29 @@
1
+ export type EnterAnimationState = {
2
+ /**
3
+ * Строка должна появиться с enter-анимацией
4
+ */
5
+ shouldAnimate: boolean;
6
+ /**
7
+ * Индекс каскадной задержки анимации
8
+ */
9
+ delayIndex?: number;
10
+ };
11
+ export type EnterAnimationResult = {
12
+ /**
13
+ * Планирует появление элементов с enter-анимацией.
14
+ * Порядок id задаёт каскад, `startDelayIndex` сдвигает его начало
15
+ */
16
+ schedule: (itemIds: string[], startDelayIndex?: number) => void;
17
+ /**
18
+ * Возвращает состояние анимации, не изменяя метку. Безопасно для рендера
19
+ */
20
+ read: (itemId: string) => EnterAnimationState;
21
+ /**
22
+ * Забирает метку элемента: повторный mount при скролле анимации не получит
23
+ */
24
+ claim: (itemId: string) => void;
25
+ /**
26
+ * Сбрасывает все метки
27
+ */
28
+ reset: () => void;
29
+ };