@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.
- package/components/InfiniteTreeList/InfiniteTreeList.d.ts +18 -0
- package/components/InfiniteTreeList/InfiniteTreeList.js +26 -19
- package/components/InfiniteTreeList/InfiniteTreeListActions/InfiniteTreeListActions.d.ts +9 -0
- package/components/InfiniteTreeList/InfiniteTreeListActions/InfiniteTreeListActions.js +9 -0
- package/components/InfiniteTreeList/InfiniteTreeListActions/types.d.ts +5 -0
- package/components/InfiniteTreeList/InfiniteTreeListActions/useLogic/useLogic.js +5 -6
- package/components/InfiniteTreeList/InfiniteTreeListContext/InfiniteTreeListContext.d.ts +81 -0
- package/components/InfiniteTreeList/InfiniteTreeListContext/InfiniteTreeListContext.js +21 -0
- package/components/InfiniteTreeList/InfiniteTreeListContext/InfiniteTreeListContextProvider/InfiniteTreeListContextProvider.d.ts +3 -2
- package/components/InfiniteTreeList/InfiniteTreeListContext/InfiniteTreeListContextProvider/InfiniteTreeListContextProvider.js +69 -13
- package/components/InfiniteTreeList/InfiniteTreeListItem/ErrorPlaceholder/ErrorPlaceholder.d.ts +6 -0
- package/components/InfiniteTreeList/InfiniteTreeListItem/ErrorPlaceholder/ErrorPlaceholder.js +8 -0
- package/components/InfiniteTreeList/InfiniteTreeListItem/ErrorPlaceholder/constants.d.ts +1 -0
- package/components/InfiniteTreeList/InfiniteTreeListItem/ErrorPlaceholder/constants.js +1 -0
- package/components/InfiniteTreeList/InfiniteTreeListItem/ErrorPlaceholder/index.d.ts +1 -0
- package/components/InfiniteTreeList/InfiniteTreeListItem/ErrorPlaceholder/index.js +1 -0
- package/components/InfiniteTreeList/{ErrorMessage → InfiniteTreeListItem/ErrorPlaceholder}/styles.d.ts +1 -1
- package/components/InfiniteTreeList/InfiniteTreeListItem/ErrorPlaceholder/styles.js +8 -0
- package/components/InfiniteTreeList/InfiniteTreeListItem/InfiniteTreeListItem.js +29 -7
- package/components/InfiniteTreeList/InfiniteTreeListItem/TreeListItemContext/TreeListItemContext.d.ts +19 -0
- package/components/InfiniteTreeList/InfiniteTreeListItem/TreeListItemContext/TreeListItemContext.js +4 -0
- package/components/InfiniteTreeList/InfiniteTreeListItem/TreeListItemContext/TreeListItemContextProvider/TreeListItemContextProvider.d.ts +4 -0
- package/components/InfiniteTreeList/InfiniteTreeListItem/TreeListItemContext/TreeListItemContextProvider/TreeListItemContextProvider.js +13 -8
- package/components/InfiniteTreeList/InfiniteTreeListItem/constants.d.ts +6 -0
- package/components/InfiniteTreeList/InfiniteTreeListItem/constants.js +7 -0
- package/components/InfiniteTreeList/InfiniteTreeListItem/styles.d.ts +4 -4
- package/components/InfiniteTreeList/InfiniteTreeListItem/styles.js +28 -5
- package/components/InfiniteTreeList/InfiniteTreeListItem/types.d.ts +20 -3
- package/components/InfiniteTreeList/InfiniteTreeListItem/useLogic/useLogic.d.ts +7 -1
- package/components/InfiniteTreeList/InfiniteTreeListItem/useLogic/useLogic.js +57 -5
- package/components/InfiniteTreeList/{EndData → ListFooter/EndData}/EndData.js +1 -1
- package/components/InfiniteTreeList/{ErrorMessage → ListFooter/ErrorMessage}/ErrorMessage.js +2 -2
- package/components/InfiniteTreeList/ListFooter/ErrorMessage/styles.d.ts +5 -0
- package/components/InfiniteTreeList/{ErrorMessage → ListFooter/ErrorMessage}/styles.js +1 -1
- package/components/InfiniteTreeList/ListFooter/ListFooter.d.ts +10 -0
- package/components/InfiniteTreeList/ListFooter/ListFooter.js +25 -0
- package/components/InfiniteTreeList/ListFooter/index.d.ts +2 -0
- package/components/InfiniteTreeList/ListFooter/index.js +1 -0
- package/components/InfiniteTreeList/{styles.d.ts → ListFooter/styles.d.ts} +2 -2
- package/components/InfiniteTreeList/{styles.js → ListFooter/styles.js} +1 -1
- package/components/InfiniteTreeList/ListFooter/types.d.ts +22 -0
- package/components/InfiniteTreeList/ListFooter/types.js +1 -0
- package/components/InfiniteTreeList/OnTopButton/OnTopButton.d.ts +8 -2
- package/components/InfiniteTreeList/OnTopButton/OnTopButton.js +6 -5
- package/components/InfiniteTreeList/OnTopButton/styles.d.ts +4 -0
- package/components/InfiniteTreeList/OnTopButton/styles.js +10 -0
- package/components/InfiniteTreeList/ParentItems/Item/CustomParentWrapper/CustomParentWrapper.d.ts +23 -0
- package/components/InfiniteTreeList/ParentItems/Item/CustomParentWrapper/CustomParentWrapper.js +12 -0
- package/components/InfiniteTreeList/ParentItems/Item/CustomParentWrapper/index.d.ts +1 -0
- package/components/InfiniteTreeList/ParentItems/Item/CustomParentWrapper/index.js +1 -0
- package/components/InfiniteTreeList/ParentItems/Item/Item.d.ts +10 -0
- package/components/InfiniteTreeList/ParentItems/Item/Item.js +22 -0
- package/components/InfiniteTreeList/ParentItems/Item/index.d.ts +2 -0
- package/components/InfiniteTreeList/ParentItems/Item/index.js +2 -0
- package/components/InfiniteTreeList/ParentItems/Item/types.d.ts +8 -0
- package/components/InfiniteTreeList/ParentItems/Item/types.js +1 -0
- package/components/InfiniteTreeList/ParentItems/Item/useLogic/index.d.ts +1 -0
- package/components/InfiniteTreeList/ParentItems/Item/useLogic/index.js +1 -0
- package/components/InfiniteTreeList/ParentItems/Item/useLogic/useLogic.d.ts +12 -0
- package/components/InfiniteTreeList/ParentItems/Item/useLogic/useLogic.js +12 -0
- package/components/InfiniteTreeList/ParentItems/ParentItems.d.ts +11 -0
- package/components/InfiniteTreeList/ParentItems/ParentItems.js +11 -0
- package/components/InfiniteTreeList/ParentItems/index.d.ts +3 -0
- package/components/InfiniteTreeList/ParentItems/index.js +3 -0
- package/components/InfiniteTreeList/ParentItems/types.d.ts +8 -0
- package/components/InfiniteTreeList/ParentItems/types.js +1 -0
- package/components/InfiniteTreeList/TreeItem/ChildrenPlaceholder/ChildrenPlaceholder.d.ts +9 -0
- package/components/InfiniteTreeList/TreeItem/ChildrenPlaceholder/ChildrenPlaceholder.js +22 -0
- package/components/InfiniteTreeList/TreeItem/ChildrenPlaceholder/NoDataRow/NoDataRow.d.ts +1 -0
- package/components/InfiniteTreeList/TreeItem/ChildrenPlaceholder/NoDataRow/NoDataRow.js +5 -0
- package/components/InfiniteTreeList/TreeItem/ChildrenPlaceholder/NoDataRow/index.d.ts +1 -0
- package/components/InfiniteTreeList/TreeItem/ChildrenPlaceholder/NoDataRow/index.js +1 -0
- package/components/InfiniteTreeList/TreeItem/ChildrenPlaceholder/index.d.ts +1 -0
- package/components/InfiniteTreeList/TreeItem/ChildrenPlaceholder/index.js +1 -0
- package/components/InfiniteTreeList/TreeItem/CustomItemWrapper/CustomItemWrapper.d.ts +20 -0
- package/components/InfiniteTreeList/TreeItem/CustomItemWrapper/CustomItemWrapper.js +10 -0
- package/components/InfiniteTreeList/TreeItem/CustomItemWrapper/index.d.ts +1 -0
- package/components/InfiniteTreeList/TreeItem/CustomItemWrapper/index.js +1 -0
- package/components/InfiniteTreeList/TreeItem/ParentSlot/ParentSlot.d.ts +5 -0
- package/components/InfiniteTreeList/TreeItem/ParentSlot/ParentSlot.js +38 -0
- package/components/InfiniteTreeList/TreeItem/ParentSlot/index.d.ts +2 -0
- package/components/InfiniteTreeList/TreeItem/ParentSlot/index.js +2 -0
- package/components/InfiniteTreeList/TreeItem/ParentSlot/styles.d.ts +9 -0
- package/components/InfiniteTreeList/TreeItem/ParentSlot/styles.js +8 -0
- package/components/InfiniteTreeList/TreeItem/ParentSlot/types.d.ts +6 -0
- package/components/InfiniteTreeList/TreeItem/ParentSlot/types.js +1 -0
- package/components/InfiniteTreeList/TreeItem/TreeItem.d.ts +5 -2
- package/components/InfiniteTreeList/TreeItem/TreeItem.js +31 -4
- package/components/InfiniteTreeList/TreeItem/constants.d.ts +3 -0
- package/components/InfiniteTreeList/TreeItem/constants.js +3 -1
- package/components/InfiniteTreeList/TreeItem/styles.d.ts +0 -3
- package/components/InfiniteTreeList/TreeItem/styles.js +23 -8
- package/components/InfiniteTreeList/TreeItem/types.d.ts +4 -9
- package/components/InfiniteTreeList/TreeItem/useLogic/useLogic.d.ts +29 -9
- package/components/InfiniteTreeList/TreeItem/useLogic/useLogic.js +61 -19
- package/components/InfiniteTreeList/constants.d.ts +14 -2
- package/components/InfiniteTreeList/constants.js +14 -2
- package/components/InfiniteTreeList/hooks/index.d.ts +5 -0
- package/components/InfiniteTreeList/hooks/index.js +5 -0
- package/components/InfiniteTreeList/hooks/useChildrenState/index.d.ts +2 -0
- package/components/InfiniteTreeList/hooks/useChildrenState/index.js +2 -0
- package/components/InfiniteTreeList/hooks/useChildrenState/types.d.ts +43 -0
- package/components/InfiniteTreeList/hooks/useChildrenState/types.js +1 -0
- package/components/InfiniteTreeList/hooks/useChildrenState/useChildrenState.d.ts +20 -0
- package/components/InfiniteTreeList/hooks/useChildrenState/useChildrenState.js +115 -0
- package/components/InfiniteTreeList/hooks/useEnterAnimation/index.d.ts +2 -0
- package/components/InfiniteTreeList/hooks/useEnterAnimation/index.js +2 -0
- package/components/InfiniteTreeList/hooks/useEnterAnimation/types.d.ts +29 -0
- package/components/InfiniteTreeList/hooks/useEnterAnimation/types.js +1 -0
- package/components/InfiniteTreeList/hooks/useEnterAnimation/useEnterAnimation.d.ts +6 -0
- package/components/InfiniteTreeList/hooks/useEnterAnimation/useEnterAnimation.js +35 -0
- package/components/InfiniteTreeList/hooks/useExpandNotifier/index.d.ts +1 -0
- package/components/InfiniteTreeList/hooks/useExpandNotifier/index.js +1 -0
- package/components/InfiniteTreeList/hooks/useExpandNotifier/useExpandNotifier.d.ts +8 -0
- package/components/InfiniteTreeList/hooks/useExpandNotifier/useExpandNotifier.js +19 -0
- package/components/InfiniteTreeList/hooks/useFlatTree/index.d.ts +2 -0
- package/components/InfiniteTreeList/hooks/useFlatTree/index.js +2 -0
- package/components/InfiniteTreeList/hooks/useFlatTree/types.d.ts +20 -0
- package/components/InfiniteTreeList/hooks/useFlatTree/types.js +1 -0
- package/components/InfiniteTreeList/hooks/useFlatTree/useFlatTree.d.ts +15 -0
- package/components/InfiniteTreeList/hooks/useFlatTree/useFlatTree.js +88 -0
- package/components/InfiniteTreeList/hooks/useListScroll/index.d.ts +2 -0
- package/components/InfiniteTreeList/hooks/useListScroll/index.js +2 -0
- package/components/InfiniteTreeList/hooks/useListScroll/types.d.ts +25 -0
- package/components/InfiniteTreeList/hooks/useListScroll/types.js +1 -0
- package/components/InfiniteTreeList/hooks/useListScroll/useListScroll.d.ts +29 -0
- package/components/InfiniteTreeList/hooks/useListScroll/useListScroll.js +59 -0
- package/components/InfiniteTreeList/index.d.ts +1 -1
- package/components/InfiniteTreeList/public.d.ts +1 -1
- package/components/InfiniteTreeList/types.d.ts +83 -17
- package/components/InfiniteTreeList/useLogic/useLogic.d.ts +22 -12
- package/components/InfiniteTreeList/useLogic/useLogic.js +66 -71
- package/components/InfiniteTreeList/utils/checkHasSkeletonPlaceholders/checkHasSkeletonPlaceholders.d.ts +5 -0
- package/components/InfiniteTreeList/utils/checkHasSkeletonPlaceholders/checkHasSkeletonPlaceholders.js +6 -0
- package/components/InfiniteTreeList/utils/checkHasSkeletonPlaceholders/index.d.ts +1 -0
- package/components/InfiniteTreeList/utils/checkHasSkeletonPlaceholders/index.js +1 -0
- package/components/InfiniteTreeList/utils/checkIsChildrenPlaceholder/checkIsChildrenPlaceholder.d.ts +5 -0
- package/components/InfiniteTreeList/utils/checkIsChildrenPlaceholder/checkIsChildrenPlaceholder.js +4 -0
- package/components/InfiniteTreeList/utils/checkIsChildrenPlaceholder/index.d.ts +1 -0
- package/components/InfiniteTreeList/utils/checkIsChildrenPlaceholder/index.js +1 -0
- package/components/InfiniteTreeList/utils/checkIsChildrenPlaceholderOf/checkIsChildrenPlaceholderOf.d.ts +5 -0
- package/components/InfiniteTreeList/utils/checkIsChildrenPlaceholderOf/checkIsChildrenPlaceholderOf.js +5 -0
- package/components/InfiniteTreeList/utils/checkIsChildrenPlaceholderOf/index.d.ts +1 -0
- package/components/InfiniteTreeList/utils/checkIsChildrenPlaceholderOf/index.js +1 -0
- package/components/InfiniteTreeList/utils/checkIsDirectChild/checkIsDirectChild.d.ts +6 -0
- package/components/InfiniteTreeList/utils/checkIsDirectChild/checkIsDirectChild.js +6 -0
- package/components/InfiniteTreeList/utils/checkIsDirectChild/index.d.ts +1 -0
- package/components/InfiniteTreeList/utils/checkIsDirectChild/index.js +1 -0
- package/components/InfiniteTreeList/utils/checkIsNoDataChildren/checkIsNoDataChildren.d.ts +12 -0
- package/components/InfiniteTreeList/utils/checkIsNoDataChildren/checkIsNoDataChildren.js +14 -0
- package/components/InfiniteTreeList/utils/checkIsNoDataChildren/index.d.ts +1 -0
- package/components/InfiniteTreeList/utils/checkIsNoDataChildren/index.js +1 -0
- package/components/InfiniteTreeList/utils/checkIsSameChildren/checkIsSameChildren.d.ts +5 -0
- package/components/InfiniteTreeList/utils/checkIsSameChildren/checkIsSameChildren.js +16 -0
- package/components/InfiniteTreeList/utils/checkIsSameChildren/index.d.ts +1 -0
- package/components/InfiniteTreeList/utils/checkIsSameChildren/index.js +1 -0
- package/components/InfiniteTreeList/utils/countDirectChildren/countDirectChildren.d.ts +5 -0
- package/components/InfiniteTreeList/utils/countDirectChildren/countDirectChildren.js +5 -0
- package/components/InfiniteTreeList/utils/countDirectChildren/index.d.ts +1 -0
- package/components/InfiniteTreeList/utils/countDirectChildren/index.js +1 -0
- package/components/InfiniteTreeList/utils/createParentSlots/createParentSlots.d.ts +24 -0
- package/components/InfiniteTreeList/utils/createParentSlots/createParentSlots.js +35 -0
- package/components/InfiniteTreeList/utils/createParentSlots/index.d.ts +1 -0
- package/components/InfiniteTreeList/utils/createParentSlots/index.js +1 -0
- package/components/InfiniteTreeList/utils/createTailRegistry/createTailRegistry.d.ts +21 -0
- package/components/InfiniteTreeList/utils/createTailRegistry/createTailRegistry.js +40 -0
- package/components/InfiniteTreeList/utils/createTailRegistry/index.d.ts +1 -0
- package/components/InfiniteTreeList/utils/createTailRegistry/index.js +1 -0
- package/components/InfiniteTreeList/utils/flattenChildren/flattenChildren.d.ts +5 -0
- package/components/InfiniteTreeList/utils/flattenChildren/flattenChildren.js +5 -0
- package/components/InfiniteTreeList/utils/flattenChildren/index.d.ts +1 -0
- package/components/InfiniteTreeList/utils/flattenChildren/index.js +1 -0
- package/components/InfiniteTreeList/utils/flattenTree/flattenTree.d.ts +6 -0
- package/components/InfiniteTreeList/{useLogic/utils → utils}/flattenTree/flattenTree.js +9 -4
- package/components/InfiniteTreeList/utils/getEnteringChildren/getEnteringChildren.d.ts +17 -0
- package/components/InfiniteTreeList/utils/getEnteringChildren/getEnteringChildren.js +14 -0
- package/components/InfiniteTreeList/utils/getEnteringChildren/index.d.ts +1 -0
- package/components/InfiniteTreeList/utils/getEnteringChildren/index.js +1 -0
- package/components/InfiniteTreeList/utils/getIdsToKeep/getIdsToKeep.d.ts +10 -0
- package/components/InfiniteTreeList/utils/getIdsToKeep/getIdsToKeep.js +27 -0
- package/components/InfiniteTreeList/utils/getIdsToKeep/index.d.ts +1 -0
- package/components/InfiniteTreeList/utils/getIdsToKeep/index.js +1 -0
- package/components/InfiniteTreeList/{useLogic/utils → utils}/getInitialExpandedIds/getInitialExpandedIds.d.ts +4 -2
- package/components/InfiniteTreeList/{useLogic/utils → utils}/getInitialExpandedIds/getInitialExpandedIds.js +5 -4
- package/components/InfiniteTreeList/utils/getNestedItems/getNestedItems.d.ts +6 -0
- package/components/InfiniteTreeList/utils/getNestedItems/getNestedItems.js +18 -0
- package/components/InfiniteTreeList/utils/getNestedItems/index.d.ts +1 -0
- package/components/InfiniteTreeList/utils/getNestedItems/index.js +1 -0
- package/components/InfiniteTreeList/utils/index.d.ts +20 -0
- package/components/InfiniteTreeList/utils/index.js +20 -0
- package/components/InfiniteTreeList/utils/insertChildren/index.d.ts +1 -0
- package/components/InfiniteTreeList/utils/insertChildren/index.js +1 -0
- package/components/InfiniteTreeList/utils/insertChildren/insertChildren.d.ts +5 -0
- package/components/InfiniteTreeList/utils/insertChildren/insertChildren.js +41 -0
- package/components/InfiniteTreeList/utils/removeChildren/index.d.ts +1 -0
- package/components/InfiniteTreeList/utils/removeChildren/index.js +1 -0
- package/components/InfiniteTreeList/utils/removeChildren/removeChildren.d.ts +5 -0
- package/components/InfiniteTreeList/utils/removeChildren/removeChildren.js +12 -0
- package/components/InfiniteTreeList/utils/sortCollapsed/sortCollapsed.d.ts +5 -0
- package/components/InfiniteTreeList/{useLogic/utils → utils}/sortCollapsed/sortCollapsed.js +1 -6
- package/components/InfiniteTreeList/utils/startRemoveAnimation/index.d.ts +1 -0
- package/components/InfiniteTreeList/utils/startRemoveAnimation/index.js +1 -0
- package/components/InfiniteTreeList/utils/startRemoveAnimation/startRemoveAnimation.d.ts +1 -0
- package/components/InfiniteTreeList/utils/startRemoveAnimation/startRemoveAnimation.js +5 -0
- package/components/InfiniteTreeList/utils/syncChildrenPlaceholders/index.d.ts +1 -0
- package/components/InfiniteTreeList/utils/syncChildrenPlaceholders/index.js +1 -0
- package/components/InfiniteTreeList/utils/syncChildrenPlaceholders/syncChildrenPlaceholders.d.ts +11 -0
- package/components/InfiniteTreeList/utils/syncChildrenPlaceholders/syncChildrenPlaceholders.js +99 -0
- package/node/components/InfiniteTreeList/InfiniteTreeList.d.ts +18 -0
- package/node/components/InfiniteTreeList/InfiniteTreeList.js +24 -17
- package/node/components/InfiniteTreeList/InfiniteTreeListActions/InfiniteTreeListActions.d.ts +9 -0
- package/node/components/InfiniteTreeList/InfiniteTreeListActions/InfiniteTreeListActions.js +9 -0
- package/node/components/InfiniteTreeList/InfiniteTreeListActions/types.d.ts +5 -0
- package/node/components/InfiniteTreeList/InfiniteTreeListActions/useLogic/useLogic.js +5 -6
- package/node/components/InfiniteTreeList/InfiniteTreeListContext/InfiniteTreeListContext.d.ts +81 -0
- package/node/components/InfiniteTreeList/InfiniteTreeListContext/InfiniteTreeListContext.js +21 -0
- package/node/components/InfiniteTreeList/InfiniteTreeListContext/InfiniteTreeListContextProvider/InfiniteTreeListContextProvider.d.ts +3 -2
- package/node/components/InfiniteTreeList/InfiniteTreeListContext/InfiniteTreeListContextProvider/InfiniteTreeListContextProvider.js +69 -13
- package/node/components/InfiniteTreeList/InfiniteTreeListItem/ErrorPlaceholder/ErrorPlaceholder.d.ts +6 -0
- package/node/components/InfiniteTreeList/InfiniteTreeListItem/ErrorPlaceholder/ErrorPlaceholder.js +12 -0
- package/node/components/InfiniteTreeList/InfiniteTreeListItem/ErrorPlaceholder/constants.d.ts +1 -0
- package/node/components/InfiniteTreeList/InfiniteTreeListItem/ErrorPlaceholder/constants.js +4 -0
- package/node/components/InfiniteTreeList/InfiniteTreeListItem/ErrorPlaceholder/index.d.ts +1 -0
- package/node/components/InfiniteTreeList/InfiniteTreeListItem/ErrorPlaceholder/index.js +5 -0
- package/node/components/InfiniteTreeList/InfiniteTreeListItem/ErrorPlaceholder/styles.js +11 -0
- package/node/components/InfiniteTreeList/InfiniteTreeListItem/InfiniteTreeListItem.js +28 -6
- package/node/components/InfiniteTreeList/InfiniteTreeListItem/TreeListItemContext/TreeListItemContext.d.ts +19 -0
- package/node/components/InfiniteTreeList/InfiniteTreeListItem/TreeListItemContext/TreeListItemContext.js +4 -0
- package/node/components/InfiniteTreeList/InfiniteTreeListItem/TreeListItemContext/TreeListItemContextProvider/TreeListItemContextProvider.d.ts +4 -0
- package/node/components/InfiniteTreeList/InfiniteTreeListItem/TreeListItemContext/TreeListItemContextProvider/TreeListItemContextProvider.js +13 -8
- package/node/components/InfiniteTreeList/InfiniteTreeListItem/constants.d.ts +6 -0
- package/node/components/InfiniteTreeList/InfiniteTreeListItem/constants.js +10 -0
- package/node/components/InfiniteTreeList/InfiniteTreeListItem/styles.d.ts +4 -4
- package/node/components/InfiniteTreeList/InfiniteTreeListItem/styles.js +29 -6
- package/node/components/InfiniteTreeList/InfiniteTreeListItem/types.d.ts +20 -3
- package/node/components/InfiniteTreeList/InfiniteTreeListItem/useLogic/useLogic.d.ts +7 -1
- package/node/components/InfiniteTreeList/InfiniteTreeListItem/useLogic/useLogic.js +56 -4
- package/node/components/InfiniteTreeList/{EndData → ListFooter/EndData}/EndData.js +1 -1
- package/node/components/InfiniteTreeList/{ErrorMessage → ListFooter/ErrorMessage}/ErrorMessage.js +2 -2
- package/node/components/InfiniteTreeList/ListFooter/ErrorMessage/styles.d.ts +5 -0
- package/node/components/InfiniteTreeList/{ErrorMessage → ListFooter/ErrorMessage}/styles.js +1 -1
- package/node/components/InfiniteTreeList/ListFooter/ListFooter.d.ts +10 -0
- package/node/components/InfiniteTreeList/ListFooter/ListFooter.js +29 -0
- package/node/components/InfiniteTreeList/ListFooter/index.d.ts +2 -0
- package/node/components/InfiniteTreeList/ListFooter/index.js +17 -0
- package/node/components/InfiniteTreeList/{styles.js → ListFooter/styles.js} +1 -1
- package/node/components/InfiniteTreeList/ListFooter/types.d.ts +22 -0
- package/node/components/InfiniteTreeList/ListFooter/types.js +2 -0
- package/node/components/InfiniteTreeList/OnTopButton/OnTopButton.d.ts +8 -2
- package/node/components/InfiniteTreeList/OnTopButton/OnTopButton.js +6 -5
- package/node/components/InfiniteTreeList/OnTopButton/styles.d.ts +4 -0
- package/node/components/InfiniteTreeList/OnTopButton/styles.js +13 -0
- package/node/components/InfiniteTreeList/ParentItems/Item/CustomParentWrapper/CustomParentWrapper.d.ts +23 -0
- package/node/components/InfiniteTreeList/ParentItems/Item/CustomParentWrapper/CustomParentWrapper.js +15 -0
- package/node/components/InfiniteTreeList/ParentItems/Item/CustomParentWrapper/index.d.ts +1 -0
- package/node/components/InfiniteTreeList/ParentItems/Item/CustomParentWrapper/index.js +17 -0
- package/node/components/InfiniteTreeList/ParentItems/Item/Item.d.ts +10 -0
- package/node/components/InfiniteTreeList/ParentItems/Item/Item.js +25 -0
- package/node/components/InfiniteTreeList/ParentItems/Item/index.d.ts +2 -0
- package/node/components/InfiniteTreeList/ParentItems/Item/index.js +18 -0
- package/node/components/InfiniteTreeList/ParentItems/Item/types.d.ts +8 -0
- package/node/components/InfiniteTreeList/ParentItems/Item/types.js +2 -0
- package/node/components/InfiniteTreeList/ParentItems/Item/useLogic/index.d.ts +1 -0
- package/node/components/InfiniteTreeList/ParentItems/Item/useLogic/index.js +17 -0
- package/node/components/InfiniteTreeList/ParentItems/Item/useLogic/useLogic.d.ts +12 -0
- package/node/components/InfiniteTreeList/ParentItems/Item/useLogic/useLogic.js +16 -0
- package/node/components/InfiniteTreeList/ParentItems/ParentItems.d.ts +11 -0
- package/node/components/InfiniteTreeList/ParentItems/ParentItems.js +15 -0
- package/node/components/InfiniteTreeList/ParentItems/index.d.ts +3 -0
- package/node/components/InfiniteTreeList/ParentItems/index.js +19 -0
- package/node/components/InfiniteTreeList/ParentItems/types.d.ts +8 -0
- package/node/components/InfiniteTreeList/ParentItems/types.js +2 -0
- package/node/components/InfiniteTreeList/TreeItem/ChildrenPlaceholder/ChildrenPlaceholder.d.ts +9 -0
- package/node/components/InfiniteTreeList/TreeItem/ChildrenPlaceholder/ChildrenPlaceholder.js +26 -0
- package/node/components/InfiniteTreeList/TreeItem/ChildrenPlaceholder/NoDataRow/NoDataRow.d.ts +1 -0
- package/node/components/InfiniteTreeList/TreeItem/ChildrenPlaceholder/NoDataRow/NoDataRow.js +9 -0
- package/node/components/InfiniteTreeList/TreeItem/ChildrenPlaceholder/NoDataRow/index.d.ts +1 -0
- package/node/components/InfiniteTreeList/TreeItem/ChildrenPlaceholder/NoDataRow/index.js +17 -0
- package/node/components/InfiniteTreeList/TreeItem/ChildrenPlaceholder/index.d.ts +1 -0
- package/node/components/InfiniteTreeList/TreeItem/ChildrenPlaceholder/index.js +17 -0
- package/node/components/InfiniteTreeList/TreeItem/CustomItemWrapper/CustomItemWrapper.d.ts +20 -0
- package/node/components/InfiniteTreeList/TreeItem/CustomItemWrapper/CustomItemWrapper.js +13 -0
- package/node/components/InfiniteTreeList/TreeItem/CustomItemWrapper/index.d.ts +1 -0
- package/node/components/InfiniteTreeList/TreeItem/CustomItemWrapper/index.js +17 -0
- package/node/components/InfiniteTreeList/TreeItem/ParentSlot/ParentSlot.d.ts +5 -0
- package/node/components/InfiniteTreeList/TreeItem/ParentSlot/ParentSlot.js +42 -0
- package/node/components/InfiniteTreeList/TreeItem/ParentSlot/index.d.ts +2 -0
- package/node/components/InfiniteTreeList/TreeItem/ParentSlot/index.js +18 -0
- package/node/components/InfiniteTreeList/TreeItem/ParentSlot/styles.d.ts +9 -0
- package/node/components/InfiniteTreeList/TreeItem/ParentSlot/styles.js +11 -0
- package/node/components/InfiniteTreeList/TreeItem/ParentSlot/types.d.ts +6 -0
- package/node/components/InfiniteTreeList/TreeItem/ParentSlot/types.js +2 -0
- package/node/components/InfiniteTreeList/TreeItem/TreeItem.d.ts +5 -2
- package/node/components/InfiniteTreeList/TreeItem/TreeItem.js +31 -4
- package/node/components/InfiniteTreeList/TreeItem/constants.d.ts +3 -0
- package/node/components/InfiniteTreeList/TreeItem/constants.js +3 -1
- package/node/components/InfiniteTreeList/TreeItem/styles.d.ts +0 -3
- package/node/components/InfiniteTreeList/TreeItem/styles.js +23 -8
- package/node/components/InfiniteTreeList/TreeItem/types.d.ts +4 -9
- package/node/components/InfiniteTreeList/TreeItem/useLogic/useLogic.d.ts +29 -9
- package/node/components/InfiniteTreeList/TreeItem/useLogic/useLogic.js +60 -18
- package/node/components/InfiniteTreeList/constants.d.ts +14 -2
- package/node/components/InfiniteTreeList/constants.js +15 -3
- package/node/components/InfiniteTreeList/hooks/index.d.ts +5 -0
- package/node/components/InfiniteTreeList/hooks/index.js +21 -0
- package/node/components/InfiniteTreeList/hooks/useChildrenState/index.d.ts +2 -0
- package/node/components/InfiniteTreeList/hooks/useChildrenState/index.js +18 -0
- package/node/components/InfiniteTreeList/hooks/useChildrenState/types.d.ts +43 -0
- package/node/components/InfiniteTreeList/hooks/useChildrenState/types.js +2 -0
- package/node/components/InfiniteTreeList/hooks/useChildrenState/useChildrenState.d.ts +20 -0
- package/node/components/InfiniteTreeList/hooks/useChildrenState/useChildrenState.js +119 -0
- package/node/components/InfiniteTreeList/hooks/useEnterAnimation/index.d.ts +2 -0
- package/node/components/InfiniteTreeList/hooks/useEnterAnimation/index.js +18 -0
- package/node/components/InfiniteTreeList/hooks/useEnterAnimation/types.d.ts +29 -0
- package/node/components/InfiniteTreeList/hooks/useEnterAnimation/types.js +2 -0
- package/node/components/InfiniteTreeList/hooks/useEnterAnimation/useEnterAnimation.d.ts +6 -0
- package/node/components/InfiniteTreeList/hooks/useEnterAnimation/useEnterAnimation.js +39 -0
- package/node/components/InfiniteTreeList/hooks/useExpandNotifier/index.d.ts +1 -0
- package/node/components/InfiniteTreeList/hooks/useExpandNotifier/index.js +17 -0
- package/node/components/InfiniteTreeList/hooks/useExpandNotifier/useExpandNotifier.d.ts +8 -0
- package/node/components/InfiniteTreeList/hooks/useExpandNotifier/useExpandNotifier.js +23 -0
- package/node/components/InfiniteTreeList/hooks/useFlatTree/index.d.ts +2 -0
- package/node/components/InfiniteTreeList/hooks/useFlatTree/index.js +18 -0
- package/node/components/InfiniteTreeList/hooks/useFlatTree/types.d.ts +20 -0
- package/node/components/InfiniteTreeList/hooks/useFlatTree/types.js +2 -0
- package/node/components/InfiniteTreeList/hooks/useFlatTree/useFlatTree.d.ts +15 -0
- package/node/components/InfiniteTreeList/hooks/useFlatTree/useFlatTree.js +92 -0
- package/node/components/InfiniteTreeList/hooks/useListScroll/index.d.ts +2 -0
- package/node/components/InfiniteTreeList/hooks/useListScroll/index.js +18 -0
- package/node/components/InfiniteTreeList/hooks/useListScroll/types.d.ts +25 -0
- package/node/components/InfiniteTreeList/hooks/useListScroll/types.js +2 -0
- package/node/components/InfiniteTreeList/hooks/useListScroll/useListScroll.d.ts +29 -0
- package/node/components/InfiniteTreeList/hooks/useListScroll/useListScroll.js +63 -0
- package/node/components/InfiniteTreeList/index.d.ts +1 -1
- package/node/components/InfiniteTreeList/public.d.ts +1 -1
- package/node/components/InfiniteTreeList/types.d.ts +83 -17
- package/node/components/InfiniteTreeList/useLogic/useLogic.d.ts +22 -12
- package/node/components/InfiniteTreeList/useLogic/useLogic.js +64 -69
- package/node/components/InfiniteTreeList/utils/checkHasSkeletonPlaceholders/checkHasSkeletonPlaceholders.d.ts +5 -0
- package/node/components/InfiniteTreeList/utils/checkHasSkeletonPlaceholders/checkHasSkeletonPlaceholders.js +10 -0
- package/node/components/InfiniteTreeList/utils/checkHasSkeletonPlaceholders/index.d.ts +1 -0
- package/node/components/InfiniteTreeList/utils/checkHasSkeletonPlaceholders/index.js +17 -0
- package/node/components/InfiniteTreeList/utils/checkIsChildrenPlaceholder/checkIsChildrenPlaceholder.d.ts +5 -0
- package/node/components/InfiniteTreeList/utils/checkIsChildrenPlaceholder/checkIsChildrenPlaceholder.js +8 -0
- package/node/components/InfiniteTreeList/utils/checkIsChildrenPlaceholder/index.d.ts +1 -0
- package/node/components/InfiniteTreeList/utils/checkIsChildrenPlaceholder/index.js +17 -0
- package/node/components/InfiniteTreeList/utils/checkIsChildrenPlaceholderOf/checkIsChildrenPlaceholderOf.d.ts +5 -0
- package/node/components/InfiniteTreeList/utils/checkIsChildrenPlaceholderOf/checkIsChildrenPlaceholderOf.js +9 -0
- package/node/components/InfiniteTreeList/utils/checkIsChildrenPlaceholderOf/index.d.ts +1 -0
- package/node/components/InfiniteTreeList/utils/checkIsChildrenPlaceholderOf/index.js +17 -0
- package/node/components/InfiniteTreeList/utils/checkIsDirectChild/checkIsDirectChild.d.ts +6 -0
- package/node/components/InfiniteTreeList/utils/checkIsDirectChild/checkIsDirectChild.js +10 -0
- package/node/components/InfiniteTreeList/utils/checkIsDirectChild/index.d.ts +1 -0
- package/node/components/InfiniteTreeList/utils/checkIsDirectChild/index.js +17 -0
- package/node/components/InfiniteTreeList/utils/checkIsNoDataChildren/checkIsNoDataChildren.d.ts +12 -0
- package/node/components/InfiniteTreeList/utils/checkIsNoDataChildren/checkIsNoDataChildren.js +18 -0
- package/node/components/InfiniteTreeList/utils/checkIsNoDataChildren/index.d.ts +1 -0
- package/node/components/InfiniteTreeList/utils/checkIsNoDataChildren/index.js +17 -0
- package/node/components/InfiniteTreeList/utils/checkIsSameChildren/checkIsSameChildren.d.ts +5 -0
- package/node/components/InfiniteTreeList/utils/checkIsSameChildren/checkIsSameChildren.js +20 -0
- package/node/components/InfiniteTreeList/utils/checkIsSameChildren/index.d.ts +1 -0
- package/node/components/InfiniteTreeList/utils/checkIsSameChildren/index.js +17 -0
- package/node/components/InfiniteTreeList/utils/countDirectChildren/countDirectChildren.d.ts +5 -0
- package/node/components/InfiniteTreeList/utils/countDirectChildren/countDirectChildren.js +9 -0
- package/node/components/InfiniteTreeList/utils/countDirectChildren/index.d.ts +1 -0
- package/node/components/InfiniteTreeList/utils/countDirectChildren/index.js +17 -0
- package/node/components/InfiniteTreeList/utils/createParentSlots/createParentSlots.d.ts +24 -0
- package/node/components/InfiniteTreeList/utils/createParentSlots/createParentSlots.js +39 -0
- package/node/components/InfiniteTreeList/utils/createParentSlots/index.d.ts +1 -0
- package/node/components/InfiniteTreeList/utils/createParentSlots/index.js +17 -0
- package/node/components/InfiniteTreeList/utils/createTailRegistry/createTailRegistry.d.ts +21 -0
- package/node/components/InfiniteTreeList/utils/createTailRegistry/createTailRegistry.js +44 -0
- package/node/components/InfiniteTreeList/utils/createTailRegistry/index.d.ts +1 -0
- package/node/components/InfiniteTreeList/utils/createTailRegistry/index.js +5 -0
- package/node/components/InfiniteTreeList/utils/flattenChildren/flattenChildren.d.ts +5 -0
- package/node/components/InfiniteTreeList/utils/flattenChildren/flattenChildren.js +9 -0
- package/node/components/InfiniteTreeList/utils/flattenChildren/index.d.ts +1 -0
- package/node/components/InfiniteTreeList/utils/flattenChildren/index.js +17 -0
- package/node/components/InfiniteTreeList/utils/flattenTree/flattenTree.d.ts +6 -0
- package/node/components/InfiniteTreeList/{useLogic/utils → utils}/flattenTree/flattenTree.js +9 -4
- package/node/components/InfiniteTreeList/utils/getEnteringChildren/getEnteringChildren.d.ts +17 -0
- package/node/components/InfiniteTreeList/utils/getEnteringChildren/getEnteringChildren.js +18 -0
- package/node/components/InfiniteTreeList/utils/getEnteringChildren/index.d.ts +1 -0
- package/node/components/InfiniteTreeList/utils/getEnteringChildren/index.js +17 -0
- package/node/components/InfiniteTreeList/utils/getIdsToKeep/getIdsToKeep.d.ts +10 -0
- package/node/components/InfiniteTreeList/utils/getIdsToKeep/getIdsToKeep.js +31 -0
- package/node/components/InfiniteTreeList/utils/getIdsToKeep/index.d.ts +1 -0
- package/node/components/InfiniteTreeList/utils/getIdsToKeep/index.js +17 -0
- package/node/components/InfiniteTreeList/{useLogic/utils → utils}/getInitialExpandedIds/getInitialExpandedIds.d.ts +4 -2
- package/node/components/InfiniteTreeList/{useLogic/utils → utils}/getInitialExpandedIds/getInitialExpandedIds.js +5 -4
- package/node/components/InfiniteTreeList/utils/getNestedItems/getNestedItems.d.ts +6 -0
- package/node/components/InfiniteTreeList/utils/getNestedItems/getNestedItems.js +22 -0
- package/node/components/InfiniteTreeList/utils/getNestedItems/index.d.ts +1 -0
- package/node/components/InfiniteTreeList/{useLogic/utils/getDescendants → utils/getNestedItems}/index.js +1 -1
- package/node/components/InfiniteTreeList/utils/index.d.ts +20 -0
- package/node/components/InfiniteTreeList/utils/index.js +36 -0
- package/node/components/InfiniteTreeList/utils/insertChildren/index.d.ts +1 -0
- package/node/components/InfiniteTreeList/utils/insertChildren/index.js +17 -0
- package/node/components/InfiniteTreeList/utils/insertChildren/insertChildren.d.ts +5 -0
- package/node/components/InfiniteTreeList/utils/insertChildren/insertChildren.js +45 -0
- package/node/components/InfiniteTreeList/utils/removeChildren/index.d.ts +1 -0
- package/node/components/InfiniteTreeList/utils/removeChildren/index.js +17 -0
- package/node/components/InfiniteTreeList/utils/removeChildren/removeChildren.d.ts +5 -0
- package/node/components/InfiniteTreeList/utils/removeChildren/removeChildren.js +16 -0
- package/node/components/InfiniteTreeList/utils/sortCollapsed/sortCollapsed.d.ts +5 -0
- package/node/components/InfiniteTreeList/{useLogic/utils → utils}/sortCollapsed/sortCollapsed.js +1 -6
- package/node/components/InfiniteTreeList/utils/startRemoveAnimation/index.d.ts +1 -0
- package/node/components/InfiniteTreeList/utils/startRemoveAnimation/index.js +17 -0
- package/node/components/InfiniteTreeList/utils/startRemoveAnimation/startRemoveAnimation.d.ts +1 -0
- package/node/components/InfiniteTreeList/utils/startRemoveAnimation/startRemoveAnimation.js +9 -0
- package/node/components/InfiniteTreeList/utils/syncChildrenPlaceholders/index.d.ts +1 -0
- package/node/components/InfiniteTreeList/utils/syncChildrenPlaceholders/index.js +17 -0
- package/node/components/InfiniteTreeList/utils/syncChildrenPlaceholders/syncChildrenPlaceholders.d.ts +11 -0
- package/node/components/InfiniteTreeList/utils/syncChildrenPlaceholders/syncChildrenPlaceholders.js +104 -0
- package/package.json +1 -1
- package/components/InfiniteTreeList/useLogic/utils/flattenTree/flattenTree.d.ts +0 -5
- package/components/InfiniteTreeList/useLogic/utils/getDescendants/getDescendants.d.ts +0 -10
- package/components/InfiniteTreeList/useLogic/utils/getDescendants/getDescendants.js +0 -22
- package/components/InfiniteTreeList/useLogic/utils/getDescendants/index.d.ts +0 -1
- package/components/InfiniteTreeList/useLogic/utils/getDescendants/index.js +0 -1
- package/components/InfiniteTreeList/useLogic/utils/index.d.ts +0 -4
- package/components/InfiniteTreeList/useLogic/utils/index.js +0 -4
- package/components/InfiniteTreeList/useLogic/utils/sortCollapsed/sortCollapsed.d.ts +0 -10
- package/node/components/InfiniteTreeList/useLogic/utils/flattenTree/flattenTree.d.ts +0 -5
- package/node/components/InfiniteTreeList/useLogic/utils/getDescendants/getDescendants.d.ts +0 -10
- package/node/components/InfiniteTreeList/useLogic/utils/getDescendants/getDescendants.js +0 -26
- package/node/components/InfiniteTreeList/useLogic/utils/getDescendants/index.d.ts +0 -1
- package/node/components/InfiniteTreeList/useLogic/utils/index.d.ts +0 -4
- package/node/components/InfiniteTreeList/useLogic/utils/index.js +0 -20
- package/node/components/InfiniteTreeList/useLogic/utils/sortCollapsed/sortCollapsed.d.ts +0 -10
- /package/components/InfiniteTreeList/{EndData → ListFooter/EndData}/EndData.d.ts +0 -0
- /package/components/InfiniteTreeList/{EndData → ListFooter/EndData}/constants.d.ts +0 -0
- /package/components/InfiniteTreeList/{EndData → ListFooter/EndData}/constants.js +0 -0
- /package/components/InfiniteTreeList/{EndData → ListFooter/EndData}/index.d.ts +0 -0
- /package/components/InfiniteTreeList/{EndData → ListFooter/EndData}/index.js +0 -0
- /package/components/InfiniteTreeList/{ErrorMessage → ListFooter/ErrorMessage}/ErrorMessage.d.ts +0 -0
- /package/components/InfiniteTreeList/{ErrorMessage → ListFooter/ErrorMessage}/constants.d.ts +0 -0
- /package/components/InfiniteTreeList/{ErrorMessage → ListFooter/ErrorMessage}/constants.js +0 -0
- /package/components/InfiniteTreeList/{ErrorMessage → ListFooter/ErrorMessage}/index.d.ts +0 -0
- /package/components/InfiniteTreeList/{ErrorMessage → ListFooter/ErrorMessage}/index.js +0 -0
- /package/components/InfiniteTreeList/{useLogic/utils → utils}/flattenTree/index.d.ts +0 -0
- /package/components/InfiniteTreeList/{useLogic/utils → utils}/flattenTree/index.js +0 -0
- /package/components/InfiniteTreeList/{useLogic/utils → utils}/getInitialExpandedIds/index.d.ts +0 -0
- /package/components/InfiniteTreeList/{useLogic/utils → utils}/getInitialExpandedIds/index.js +0 -0
- /package/components/InfiniteTreeList/{useLogic/utils → utils}/sortCollapsed/index.d.ts +0 -0
- /package/components/InfiniteTreeList/{useLogic/utils → utils}/sortCollapsed/index.js +0 -0
- /package/node/components/InfiniteTreeList/{ErrorMessage → InfiniteTreeListItem/ErrorPlaceholder}/styles.d.ts +0 -0
- /package/node/components/InfiniteTreeList/{EndData → ListFooter/EndData}/EndData.d.ts +0 -0
- /package/node/components/InfiniteTreeList/{EndData → ListFooter/EndData}/constants.d.ts +0 -0
- /package/node/components/InfiniteTreeList/{EndData → ListFooter/EndData}/constants.js +0 -0
- /package/node/components/InfiniteTreeList/{EndData → ListFooter/EndData}/index.d.ts +0 -0
- /package/node/components/InfiniteTreeList/{EndData → ListFooter/EndData}/index.js +0 -0
- /package/node/components/InfiniteTreeList/{ErrorMessage → ListFooter/ErrorMessage}/ErrorMessage.d.ts +0 -0
- /package/node/components/InfiniteTreeList/{ErrorMessage → ListFooter/ErrorMessage}/constants.d.ts +0 -0
- /package/node/components/InfiniteTreeList/{ErrorMessage → ListFooter/ErrorMessage}/constants.js +0 -0
- /package/node/components/InfiniteTreeList/{ErrorMessage → ListFooter/ErrorMessage}/index.d.ts +0 -0
- /package/node/components/InfiniteTreeList/{ErrorMessage → ListFooter/ErrorMessage}/index.js +0 -0
- /package/node/components/InfiniteTreeList/{styles.d.ts → ListFooter/styles.d.ts} +0 -0
- /package/node/components/InfiniteTreeList/{useLogic/utils → utils}/flattenTree/index.d.ts +0 -0
- /package/node/components/InfiniteTreeList/{useLogic/utils → utils}/flattenTree/index.js +0 -0
- /package/node/components/InfiniteTreeList/{useLogic/utils → utils}/getInitialExpandedIds/index.d.ts +0 -0
- /package/node/components/InfiniteTreeList/{useLogic/utils → utils}/getInitialExpandedIds/index.js +0 -0
- /package/node/components/InfiniteTreeList/{useLogic/utils → utils}/sortCollapsed/index.d.ts +0 -0
- /package/node/components/InfiniteTreeList/{useLogic/utils → utils}/sortCollapsed/index.js +0 -0
|
@@ -1,51 +1,53 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import { useCallback, useContext, useMemo, useRef } from 'react';
|
|
2
2
|
import { ConfigContext } from '../../ConfigProvider';
|
|
3
|
-
import {
|
|
4
|
-
import {
|
|
5
|
-
import {
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
3
|
+
import { CHILDREN_SKELETON_COUNT } from '../constants';
|
|
4
|
+
import { useChildrenState, useEnterAnimation, useExpandNotifier, useFlatTree, useListScroll, } from '../hooks';
|
|
5
|
+
import { createParentSlots } from '../utils';
|
|
6
|
+
/**
|
|
7
|
+
* Логика списка: сводит плоский список, данные дочерних элементов, скролл
|
|
8
|
+
* и анимацию появления строк в props для `Virtuoso` и дочерних компонентов
|
|
9
|
+
*/
|
|
10
|
+
export const useLogic = ({ initialExpandedLevel, items, onRetry, errorMsg, isError, isLoading, scrollRef, isEndReached, onLoadMore, renderItem, renderParent, itemSkeleton, endOfScrollMsg, noDataImgSrc, errorImgSrc, }) => {
|
|
10
11
|
const { imagesMap } = useContext(ConfigContext);
|
|
11
|
-
const
|
|
12
|
-
const
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
const
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
};
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
12
|
+
const enterAnimation = useEnterAnimation();
|
|
13
|
+
const parentSlotsRef = useRef(null);
|
|
14
|
+
if (!parentSlotsRef.current) {
|
|
15
|
+
parentSlotsRef.current = createParentSlots();
|
|
16
|
+
}
|
|
17
|
+
const acquireParentSlot = useCallback((itemId) => parentSlotsRef.current?.acquire(itemId) ?? null, []);
|
|
18
|
+
const releaseParentSlot = useCallback((itemId) => {
|
|
19
|
+
parentSlotsRef.current?.release(itemId);
|
|
20
|
+
}, []);
|
|
21
|
+
const { notifyExpand, resetExpandNotification } = useExpandNotifier();
|
|
22
|
+
const { flatList, flatListRef, expandedIds, expandedIdsRef, insertChildren, syncChildrenPlaceholders, onToggle, } = useFlatTree({
|
|
23
|
+
items,
|
|
24
|
+
initialExpandedLevel,
|
|
25
|
+
enterAnimation,
|
|
26
|
+
onCollapse: resetExpandNotification,
|
|
27
|
+
});
|
|
28
|
+
const { registerChildren, nodePaginationMap, parentItems } = useChildrenState({
|
|
29
|
+
items,
|
|
30
|
+
flatList,
|
|
31
|
+
flatListRef,
|
|
32
|
+
expandedIds,
|
|
33
|
+
expandedIdsRef,
|
|
34
|
+
enterAnimation,
|
|
35
|
+
insertChildren,
|
|
36
|
+
syncChildrenPlaceholders,
|
|
37
|
+
skeletonCount: itemSkeleton ? CHILDREN_SKELETON_COUNT : 1,
|
|
38
|
+
releaseParentSlot,
|
|
39
|
+
});
|
|
40
|
+
const { scrollParent, tailRegistry, isEndReachedWithScroll, virtuosoProps, onTopButtonProps, } = useListScroll({
|
|
41
|
+
scrollRef,
|
|
42
|
+
isEndReached,
|
|
43
|
+
onLoadMore,
|
|
44
|
+
flatListRef,
|
|
45
|
+
enterAnimation,
|
|
46
|
+
});
|
|
45
47
|
const contentStateProps = useMemo(() => {
|
|
46
48
|
const isNoData = !items?.length;
|
|
47
49
|
return {
|
|
48
|
-
// Проверка на текущие элементы списка необходима для рендера loading состояния при
|
|
50
|
+
// Проверка на текущие элементы списка необходима для рендера loading состояния при подгрузке данных
|
|
49
51
|
// вместо общего LoadingPlaceholder на всю страницу
|
|
50
52
|
isLoading: isNoData && isLoading,
|
|
51
53
|
isError: isNoData && isError,
|
|
@@ -57,43 +59,36 @@ export const useLogic = ({ initialExpandedLevel, items, onRetry, errorMsg, isErr
|
|
|
57
59
|
onRetry,
|
|
58
60
|
},
|
|
59
61
|
};
|
|
60
|
-
}, [items, isLoading, isError, errorMsg, onRetry, imagesMap]);
|
|
61
|
-
const
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
62
|
+
}, [items, isLoading, isError, errorMsg, errorImgSrc, onRetry, imagesMap]);
|
|
63
|
+
const footerContext = useMemo(() => ({
|
|
64
|
+
isLoading,
|
|
65
|
+
isError,
|
|
66
|
+
isEndReached: isEndReachedWithScroll,
|
|
67
|
+
endOfScrollMsg,
|
|
68
|
+
onRetry,
|
|
69
|
+
}), [isLoading, isError, isEndReachedWithScroll, endOfScrollMsg, onRetry]);
|
|
68
70
|
return {
|
|
69
71
|
flatList,
|
|
70
72
|
onToggle,
|
|
73
|
+
nodePaginationMap,
|
|
74
|
+
registerChildren,
|
|
75
|
+
notifyExpand,
|
|
76
|
+
parentItems,
|
|
77
|
+
acquireParentSlot,
|
|
71
78
|
contentStateProps,
|
|
72
79
|
scrollParent,
|
|
73
|
-
virtuosoProps
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
rangeChanged: handleRangeChanged,
|
|
77
|
-
endReached: handleEndReach,
|
|
78
|
-
totalListHeightChanged: recalculateVerticalScroll,
|
|
79
|
-
},
|
|
80
|
-
footerProps: {
|
|
81
|
-
isError,
|
|
82
|
-
isLoading,
|
|
83
|
-
isEndReached: isEndReachedWithScroll,
|
|
84
|
-
},
|
|
85
|
-
onTopButtonProps: {
|
|
86
|
-
isActive: isStickyButtonActive,
|
|
87
|
-
handleScrollToTop,
|
|
88
|
-
scrollRef,
|
|
89
|
-
},
|
|
90
|
-
endOfScrollMsg,
|
|
80
|
+
virtuosoProps,
|
|
81
|
+
footerContext,
|
|
82
|
+
onTopButtonProps,
|
|
91
83
|
itemSkeleton,
|
|
92
84
|
renderItem,
|
|
85
|
+
// Fallback подставляется один раз: ниже по дереву строка выбирает функцию по
|
|
86
|
+
// типу узла, не проверяя, передал ли потребитель renderParent
|
|
87
|
+
renderParent: renderParent ?? renderItem,
|
|
93
88
|
items,
|
|
94
|
-
onLoadMore,
|
|
95
89
|
onRetry,
|
|
96
90
|
noDataImgSrc,
|
|
97
|
-
|
|
91
|
+
enterAnimation,
|
|
92
|
+
tailRegistry,
|
|
98
93
|
};
|
|
99
94
|
};
|
|
@@ -0,0 +1,5 @@
|
|
|
1
|
+
import type { FlattenTree, InfiniteTreeListData } from '../../types';
|
|
2
|
+
/**
|
|
3
|
+
* Есть ли у родителя строки-заглушки skeleton
|
|
4
|
+
*/
|
|
5
|
+
export declare const checkHasSkeletonPlaceholders: <TData extends InfiniteTreeListData<TData>>(flatList: FlattenTree<TData>[], parentId: string) => boolean;
|
|
@@ -0,0 +1,6 @@
|
|
|
1
|
+
import { checkIsChildrenPlaceholderOf } from '../checkIsChildrenPlaceholderOf';
|
|
2
|
+
/**
|
|
3
|
+
* Есть ли у родителя строки-заглушки skeleton
|
|
4
|
+
*/
|
|
5
|
+
export const checkHasSkeletonPlaceholders = (flatList, parentId) => flatList.some((item) => checkIsChildrenPlaceholderOf(item, parentId) &&
|
|
6
|
+
item.placeholderKind === 'skeleton');
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export * from './checkHasSkeletonPlaceholders';
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export * from './checkHasSkeletonPlaceholders';
|
package/components/InfiniteTreeList/utils/checkIsChildrenPlaceholder/checkIsChildrenPlaceholder.d.ts
ADDED
|
@@ -0,0 +1,5 @@
|
|
|
1
|
+
import type { FlattenTree, InfiniteTreeListData } from '../../types';
|
|
2
|
+
/**
|
|
3
|
+
* Проверяет, является ли элемент строкой-заглушкой ветки
|
|
4
|
+
*/
|
|
5
|
+
export declare const checkIsChildrenPlaceholder: <TData extends InfiniteTreeListData<TData>>(item: FlattenTree<TData>) => boolean;
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export * from './checkIsChildrenPlaceholder';
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export * from './checkIsChildrenPlaceholder';
|
|
@@ -0,0 +1,5 @@
|
|
|
1
|
+
import type { FlattenTree, InfiniteTreeListData } from '../../types';
|
|
2
|
+
/**
|
|
3
|
+
* Проверяет, является ли элемент строкой-заглушкой ветки конкретного родителя
|
|
4
|
+
*/
|
|
5
|
+
export declare const checkIsChildrenPlaceholderOf: <TData extends InfiniteTreeListData<TData>>(item: FlattenTree<TData>, parentId: string) => boolean;
|
|
@@ -0,0 +1,5 @@
|
|
|
1
|
+
import { checkIsChildrenPlaceholder } from '../checkIsChildrenPlaceholder';
|
|
2
|
+
/**
|
|
3
|
+
* Проверяет, является ли элемент строкой-заглушкой ветки конкретного родителя
|
|
4
|
+
*/
|
|
5
|
+
export const checkIsChildrenPlaceholderOf = (item, parentId) => item.meta.parentId === parentId && checkIsChildrenPlaceholder(item);
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export * from './checkIsChildrenPlaceholderOf';
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export * from './checkIsChildrenPlaceholderOf';
|
|
@@ -0,0 +1,6 @@
|
|
|
1
|
+
import type { FlattenTree, InfiniteTreeListData } from '../../types';
|
|
2
|
+
/**
|
|
3
|
+
* Проверяет, является ли элемент прямым дочерним элементом родителя.
|
|
4
|
+
* Строки-заглушки ветки прямыми дочерними элементами не считаются
|
|
5
|
+
*/
|
|
6
|
+
export declare const checkIsDirectChild: <TData extends InfiniteTreeListData<TData>>(item: FlattenTree<TData>, parentId: string) => boolean;
|
|
@@ -0,0 +1,6 @@
|
|
|
1
|
+
import { checkIsChildrenPlaceholder } from '../checkIsChildrenPlaceholder';
|
|
2
|
+
/**
|
|
3
|
+
* Проверяет, является ли элемент прямым дочерним элементом родителя.
|
|
4
|
+
* Строки-заглушки ветки прямыми дочерними элементами не считаются
|
|
5
|
+
*/
|
|
6
|
+
export const checkIsDirectChild = (item, parentId) => item.meta.parentId === parentId && !checkIsChildrenPlaceholder(item);
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export * from './checkIsDirectChild';
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export * from './checkIsDirectChild';
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
import type { InfiniteTreeChildrenPagination, InfiniteTreeListData } from '../../types';
|
|
2
|
+
/**
|
|
3
|
+
* Пришли ли раскрытому узлу пустые дочерние элементы, для которых нужно
|
|
4
|
+
* показать заглушку «Нет данных».
|
|
5
|
+
*
|
|
6
|
+
* Пустые дочерние элементы без ошибки — ещё не признак отсутствия данных:
|
|
7
|
+
* до первого запроса узел отдаёт такое же пустое состояние, и заглушка мигала
|
|
8
|
+
* бы перед skeleton-строками. Поэтому дочерние элементы считаются
|
|
9
|
+
* загруженными, только если узел уже побывал в состоянии загрузки либо сам
|
|
10
|
+
* сообщил `isEndReached`
|
|
11
|
+
*/
|
|
12
|
+
export declare const checkIsNoDataChildren: <TData extends InfiniteTreeListData<TData>>(childrenState: InfiniteTreeChildrenPagination<TData>, hasLoadedOnce: boolean) => boolean;
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Пришли ли раскрытому узлу пустые дочерние элементы, для которых нужно
|
|
3
|
+
* показать заглушку «Нет данных».
|
|
4
|
+
*
|
|
5
|
+
* Пустые дочерние элементы без ошибки — ещё не признак отсутствия данных:
|
|
6
|
+
* до первого запроса узел отдаёт такое же пустое состояние, и заглушка мигала
|
|
7
|
+
* бы перед skeleton-строками. Поэтому дочерние элементы считаются
|
|
8
|
+
* загруженными, только если узел уже побывал в состоянии загрузки либо сам
|
|
9
|
+
* сообщил `isEndReached`
|
|
10
|
+
*/
|
|
11
|
+
export const checkIsNoDataChildren = (childrenState, hasLoadedOnce) => !childrenState.isLoading &&
|
|
12
|
+
!childrenState.isError &&
|
|
13
|
+
childrenState.data.length === 0 &&
|
|
14
|
+
(Boolean(childrenState.isEndReached) || hasLoadedOnce);
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export * from './checkIsNoDataChildren';
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export * from './checkIsNoDataChildren';
|
|
@@ -0,0 +1,5 @@
|
|
|
1
|
+
import type { InfiniteTreeChildrenPagination, InfiniteTreeListData } from '../../types';
|
|
2
|
+
/**
|
|
3
|
+
* Сравнивает данные дочерних элементов узла по содержимому
|
|
4
|
+
*/
|
|
5
|
+
export declare const checkIsSameChildren: <TData extends InfiniteTreeListData<TData>>(current?: InfiniteTreeChildrenPagination<TData> | undefined, next?: InfiniteTreeChildrenPagination<TData> | undefined) => boolean;
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Сравнивает данные дочерних элементов узла по содержимому
|
|
3
|
+
*/
|
|
4
|
+
export const checkIsSameChildren = (current, next) => {
|
|
5
|
+
if (current === next) {
|
|
6
|
+
return true;
|
|
7
|
+
}
|
|
8
|
+
if (!current || !next) {
|
|
9
|
+
return false;
|
|
10
|
+
}
|
|
11
|
+
return (current.isLoading === next.isLoading &&
|
|
12
|
+
current.isError === next.isError &&
|
|
13
|
+
current.isEndReached === next.isEndReached &&
|
|
14
|
+
current.data.length === next.data.length &&
|
|
15
|
+
current.data.every((item, index) => item.id === next.data[index]?.id));
|
|
16
|
+
};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export * from './checkIsSameChildren';
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export * from './checkIsSameChildren';
|
|
@@ -0,0 +1,5 @@
|
|
|
1
|
+
import type { FlattenTree, InfiniteTreeListData } from '../../types';
|
|
2
|
+
/**
|
|
3
|
+
* Количество прямых дочерних элементов родителя без строк-заглушек
|
|
4
|
+
*/
|
|
5
|
+
export declare const countDirectChildren: <TData extends InfiniteTreeListData<TData>>(flatList: FlattenTree<TData>[], parentId: string) => number;
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export * from './countDirectChildren';
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export * from './countDirectChildren';
|
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
export type ParentSlots = {
|
|
2
|
+
/**
|
|
3
|
+
* Отдаёт контейнер строки узла, создавая его при первом обращении
|
|
4
|
+
*/
|
|
5
|
+
acquire: (itemId: string) => HTMLDivElement | null;
|
|
6
|
+
/**
|
|
7
|
+
* Выбрасывает контейнер узла вместе с его поддеревом
|
|
8
|
+
*/
|
|
9
|
+
release: (itemId: string) => void;
|
|
10
|
+
};
|
|
11
|
+
/**
|
|
12
|
+
* Реестр постоянных контейнеров строк узлов с подгружаемыми дочерними
|
|
13
|
+
* элементами.
|
|
14
|
+
*
|
|
15
|
+
* Такая строка монтируется один раз, вне виртуализации, и живёт, пока жив
|
|
16
|
+
* список: виртуализация переносит её готовый DOM-узел в строку скролла и
|
|
17
|
+
* обратно, а React-поддерево при этом не размонтируется. Иначе состояние
|
|
18
|
+
* строки — store, query, локальный state — умирало бы на каждом скролле.
|
|
19
|
+
*
|
|
20
|
+
* Контейнер обязан быть стабильным: смена контейнера в `createPortal` — для
|
|
21
|
+
* React другой узел, он размонтирует поддерево и состояние потеряется. Поэтому
|
|
22
|
+
* переносится сам контейнер, а не содержимое портала
|
|
23
|
+
*/
|
|
24
|
+
export declare const createParentSlots: () => ParentSlots;
|
|
@@ -0,0 +1,35 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Реестр постоянных контейнеров строк узлов с подгружаемыми дочерними
|
|
3
|
+
* элементами.
|
|
4
|
+
*
|
|
5
|
+
* Такая строка монтируется один раз, вне виртуализации, и живёт, пока жив
|
|
6
|
+
* список: виртуализация переносит её готовый DOM-узел в строку скролла и
|
|
7
|
+
* обратно, а React-поддерево при этом не размонтируется. Иначе состояние
|
|
8
|
+
* строки — store, query, локальный state — умирало бы на каждом скролле.
|
|
9
|
+
*
|
|
10
|
+
* Контейнер обязан быть стабильным: смена контейнера в `createPortal` — для
|
|
11
|
+
* React другой узел, он размонтирует поддерево и состояние потеряется. Поэтому
|
|
12
|
+
* переносится сам контейнер, а не содержимое портала
|
|
13
|
+
*/
|
|
14
|
+
export const createParentSlots = () => {
|
|
15
|
+
const slots = new Map();
|
|
16
|
+
return {
|
|
17
|
+
acquire: (itemId) => {
|
|
18
|
+
if (typeof document === 'undefined') {
|
|
19
|
+
return null;
|
|
20
|
+
}
|
|
21
|
+
const slot = slots.get(itemId);
|
|
22
|
+
if (slot) {
|
|
23
|
+
return slot;
|
|
24
|
+
}
|
|
25
|
+
const created = document.createElement('div');
|
|
26
|
+
created.style.display = 'contents';
|
|
27
|
+
slots.set(itemId, created);
|
|
28
|
+
return created;
|
|
29
|
+
},
|
|
30
|
+
release: (itemId) => {
|
|
31
|
+
slots.get(itemId)?.remove();
|
|
32
|
+
slots.delete(itemId);
|
|
33
|
+
},
|
|
34
|
+
};
|
|
35
|
+
};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export * from './createParentSlots';
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export * from './createParentSlots';
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
export type TailRegistry = {
|
|
2
|
+
/**
|
|
3
|
+
* Регистрирует хвост ветки. Тот же `parentId` и `itemId` — обновляет callback.
|
|
4
|
+
* Новый `itemId` сбрасывает `isLoadMoreRequested`
|
|
5
|
+
*/
|
|
6
|
+
register: (parentId: string, itemId: string, endReached: () => void) => void;
|
|
7
|
+
/**
|
|
8
|
+
* Удаляет запись. Без `itemId` — всегда. С `itemId` — только если совпал хвост
|
|
9
|
+
*/
|
|
10
|
+
unregister: (parentId: string, itemId?: string) => void;
|
|
11
|
+
/**
|
|
12
|
+
* Вызывает `endReached` для хвостов, чей индекс попадает в видимый диапазон.
|
|
13
|
+
* `getIndex === -1` пропускает запись
|
|
14
|
+
*/
|
|
15
|
+
checkRange: (endIndex: number, getIndex: (itemId: string) => number) => void;
|
|
16
|
+
};
|
|
17
|
+
/**
|
|
18
|
+
* Реестр хвостов вложенных веток. Живёт на экземпляре списка и переживает
|
|
19
|
+
* размонтирование строки виртуализацией
|
|
20
|
+
*/
|
|
21
|
+
export declare const createTailRegistry: () => TailRegistry;
|
|
@@ -0,0 +1,40 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Реестр хвостов вложенных веток. Живёт на экземпляре списка и переживает
|
|
3
|
+
* размонтирование строки виртуализацией
|
|
4
|
+
*/
|
|
5
|
+
export const createTailRegistry = () => {
|
|
6
|
+
const entries = new Map();
|
|
7
|
+
return {
|
|
8
|
+
register(parentId, itemId, endReached) {
|
|
9
|
+
const existing = entries.get(parentId);
|
|
10
|
+
if (existing && existing.itemId === itemId) {
|
|
11
|
+
existing.endReached = endReached;
|
|
12
|
+
return;
|
|
13
|
+
}
|
|
14
|
+
entries.set(parentId, { itemId, endReached, isLoadMoreRequested: false });
|
|
15
|
+
},
|
|
16
|
+
unregister(parentId, itemId) {
|
|
17
|
+
if (itemId === undefined) {
|
|
18
|
+
entries.delete(parentId);
|
|
19
|
+
return;
|
|
20
|
+
}
|
|
21
|
+
const existing = entries.get(parentId);
|
|
22
|
+
if (existing?.itemId === itemId) {
|
|
23
|
+
entries.delete(parentId);
|
|
24
|
+
}
|
|
25
|
+
},
|
|
26
|
+
checkRange(endIndex, getIndex) {
|
|
27
|
+
entries.forEach((entry) => {
|
|
28
|
+
if (entry.isLoadMoreRequested) {
|
|
29
|
+
return;
|
|
30
|
+
}
|
|
31
|
+
const index = getIndex(entry.itemId);
|
|
32
|
+
if (index === -1 || endIndex < index) {
|
|
33
|
+
return;
|
|
34
|
+
}
|
|
35
|
+
entry.isLoadMoreRequested = true;
|
|
36
|
+
entry.endReached();
|
|
37
|
+
});
|
|
38
|
+
},
|
|
39
|
+
};
|
|
40
|
+
};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export { createTailRegistry, type TailRegistry } from './createTailRegistry';
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export { createTailRegistry } from './createTailRegistry';
|
|
@@ -0,0 +1,5 @@
|
|
|
1
|
+
import type { FlattenTree, FlattenTreeParent, InfiniteTreeListData } from '../../types';
|
|
2
|
+
/**
|
|
3
|
+
* Строит плоский список дочерних элементов относительно родителя
|
|
4
|
+
*/
|
|
5
|
+
export declare const flattenChildren: <TData extends InfiniteTreeListData<TData>>(children: TData[], parent: FlattenTreeParent, expandedIds: Set<string>) => FlattenTree<TData>[];
|
|
@@ -0,0 +1,5 @@
|
|
|
1
|
+
import { flattenTree } from '../flattenTree';
|
|
2
|
+
/**
|
|
3
|
+
* Строит плоский список дочерних элементов относительно родителя
|
|
4
|
+
*/
|
|
5
|
+
export const flattenChildren = (children, parent, expandedIds) => flattenTree(children, expandedIds, parent.meta.path, parent.meta.level + 1, parent.id);
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export * from './flattenChildren';
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export * from './flattenChildren';
|
|
@@ -0,0 +1,6 @@
|
|
|
1
|
+
import type { FlattenTree, InfiniteTreeListData } from '../../types';
|
|
2
|
+
/**
|
|
3
|
+
* Преобразует дерево в плоский список для виртуализации.
|
|
4
|
+
* Можно вызвать для всего дерева или для ветки относительно родителя
|
|
5
|
+
*/
|
|
6
|
+
export declare const flattenTree: <TData extends InfiniteTreeListData<TData>>(items: TData[], expandedIds: Set<string>, parentPath?: string[], level?: number, parentId?: string) => FlattenTree<TData>[];
|
|
@@ -1,16 +1,22 @@
|
|
|
1
1
|
/**
|
|
2
|
-
*
|
|
2
|
+
* Проверяет, подгружаются ли дочерние элементы узла отдельно.
|
|
3
|
+
*/
|
|
4
|
+
const getIsChildrenAsync = (item) => item.hasChildren === true || item.children?.length === 0;
|
|
5
|
+
/**
|
|
6
|
+
* Преобразует дерево в плоский список для виртуализации.
|
|
7
|
+
* Можно вызвать для всего дерева или для ветки относительно родителя
|
|
3
8
|
*/
|
|
4
9
|
export const flattenTree = (items, expandedIds, parentPath = [], level = 0, parentId) => {
|
|
5
10
|
const result = [];
|
|
6
11
|
items.forEach((item, index) => {
|
|
7
12
|
const path = [...parentPath, item.id];
|
|
8
13
|
const isExpanded = expandedIds.has(item.id);
|
|
9
|
-
|
|
14
|
+
const isChildrenAsync = Boolean(getIsChildrenAsync(item));
|
|
10
15
|
const flattenedItem = {
|
|
11
16
|
...item,
|
|
12
17
|
meta: {
|
|
13
|
-
hasNested: Boolean(item.children),
|
|
18
|
+
hasNested: Boolean(item.children) || item.hasChildren === true,
|
|
19
|
+
isChildrenAsync,
|
|
14
20
|
level,
|
|
15
21
|
path,
|
|
16
22
|
isExpanded,
|
|
@@ -20,7 +26,6 @@ export const flattenTree = (items, expandedIds, parentPath = [], level = 0, pare
|
|
|
20
26
|
},
|
|
21
27
|
};
|
|
22
28
|
result.push(flattenedItem);
|
|
23
|
-
// Рекурсивно обрабатываем детей с сохранением типизации
|
|
24
29
|
if (isExpanded && item.children && item.children.length > 0) {
|
|
25
30
|
const childItems = flattenTree(item.children, expandedIds, path, level + 1, item.id);
|
|
26
31
|
result.push(...childItems);
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
type EnteringChildren = {
|
|
2
|
+
/**
|
|
3
|
+
* id дочерних элементов, которые должны появиться с enter-анимацией
|
|
4
|
+
*/
|
|
5
|
+
itemIds: string[];
|
|
6
|
+
/**
|
|
7
|
+
* Индекс каскадной задержки первого анимируемого дочернего элемента
|
|
8
|
+
*/
|
|
9
|
+
startDelayIndex: number;
|
|
10
|
+
};
|
|
11
|
+
/**
|
|
12
|
+
* Определяет, какие дочерние элементы родителя должны появиться
|
|
13
|
+
* с enter-анимацией. Уже показанные дочерние элементы и занятые места
|
|
14
|
+
* skeleton-узлов анимацию не получают
|
|
15
|
+
*/
|
|
16
|
+
export declare const getEnteringChildren: (childIds: string[], existingDirectCount: number, skeletonCount: number) => EnteringChildren;
|
|
17
|
+
export {};
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
// cspell:ignore анимируемого
|
|
2
|
+
/**
|
|
3
|
+
* Определяет, какие дочерние элементы родителя должны появиться
|
|
4
|
+
* с enter-анимацией. Уже показанные дочерние элементы и занятые места
|
|
5
|
+
* skeleton-узлов анимацию не получают
|
|
6
|
+
*/
|
|
7
|
+
export const getEnteringChildren = (childIds, existingDirectCount, skeletonCount) => {
|
|
8
|
+
const isReplacingSkeletons = existingDirectCount === 0 && skeletonCount > 0;
|
|
9
|
+
const skipCount = isReplacingSkeletons ? skeletonCount : existingDirectCount;
|
|
10
|
+
return {
|
|
11
|
+
itemIds: childIds.slice(skipCount),
|
|
12
|
+
startDelayIndex: isReplacingSkeletons ? skipCount : 0,
|
|
13
|
+
};
|
|
14
|
+
};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export * from './getEnteringChildren';
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export * from './getEnteringChildren';
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
import type { InfiniteTreeChildrenPagination, InfiniteTreeListData } from '../../types';
|
|
2
|
+
/**
|
|
3
|
+
* Собирает id узлов, которые нужно оставить при очистке: те, до которых можно
|
|
4
|
+
* дойти по данным списка.
|
|
5
|
+
*
|
|
6
|
+
* Обход идёт сверху вниз: от `items` к их загруженным дочерним элементам и
|
|
7
|
+
* дальше вглубь. Поэтому ветка, отрезанная сменой набора данных, в результат
|
|
8
|
+
* не попадёт, даже если её дочерние элементы ещё лежат в загруженных
|
|
9
|
+
*/
|
|
10
|
+
export declare const getIdsToKeep: <TData extends InfiniteTreeListData<TData>>(items: TData[], childrenStateMap: Record<string, InfiniteTreeChildrenPagination<TData>>) => Set<string>;
|
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Собирает id узлов, которые нужно оставить при очистке: те, до которых можно
|
|
3
|
+
* дойти по данным списка.
|
|
4
|
+
*
|
|
5
|
+
* Обход идёт сверху вниз: от `items` к их загруженным дочерним элементам и
|
|
6
|
+
* дальше вглубь. Поэтому ветка, отрезанная сменой набора данных, в результат
|
|
7
|
+
* не попадёт, даже если её дочерние элементы ещё лежат в загруженных
|
|
8
|
+
*/
|
|
9
|
+
export const getIdsToKeep = (items, childrenStateMap) => {
|
|
10
|
+
const idsToKeep = new Set();
|
|
11
|
+
const queue = [...items];
|
|
12
|
+
while (queue.length > 0) {
|
|
13
|
+
const item = queue.pop();
|
|
14
|
+
if (!item || idsToKeep.has(item.id)) {
|
|
15
|
+
continue;
|
|
16
|
+
}
|
|
17
|
+
idsToKeep.add(item.id);
|
|
18
|
+
if (item.children?.length) {
|
|
19
|
+
queue.push(...item.children);
|
|
20
|
+
}
|
|
21
|
+
const loadedChildren = childrenStateMap[item.id]?.data;
|
|
22
|
+
if (loadedChildren?.length) {
|
|
23
|
+
queue.push(...loadedChildren);
|
|
24
|
+
}
|
|
25
|
+
}
|
|
26
|
+
return idsToKeep;
|
|
27
|
+
};
|