@xhsreds/reds-rn-next 0.9.1-feat-swiper202511031535 → 0.9.1-feat-0.10.0-rc202511031536
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/coverage/.tmp/coverage-10.json +1 -1
- package/coverage/.tmp/coverage-11.json +1 -1
- package/coverage/.tmp/coverage-12.json +1 -1
- package/coverage/.tmp/coverage-13.json +1 -1
- package/coverage/.tmp/coverage-14.json +1 -1
- package/coverage/.tmp/coverage-15.json +1 -1
- package/coverage/.tmp/coverage-17.json +1 -1
- package/coverage/.tmp/coverage-2.json +1 -1
- package/coverage/.tmp/coverage-21.json +1 -1
- package/coverage/.tmp/coverage-22.json +1 -1
- package/coverage/.tmp/coverage-23.json +1 -1
- package/coverage/.tmp/coverage-24.json +1 -1
- package/coverage/.tmp/coverage-25.json +1 -1
- package/coverage/.tmp/coverage-26.json +1 -1
- package/coverage/.tmp/coverage-27.json +1 -1
- package/coverage/.tmp/coverage-3.json +1 -1
- package/coverage/.tmp/coverage-30.json +1 -1
- package/coverage/.tmp/coverage-31.json +1 -1
- package/coverage/.tmp/coverage-32.json +1 -1
- package/coverage/.tmp/coverage-33.json +1 -1
- package/coverage/.tmp/coverage-34.json +1 -1
- package/coverage/.tmp/coverage-35.json +1 -1
- package/coverage/.tmp/coverage-36.json +1 -1
- package/coverage/.tmp/coverage-37.json +1 -1
- package/coverage/.tmp/coverage-38.json +1 -1
- package/coverage/.tmp/coverage-39.json +1 -1
- package/coverage/.tmp/coverage-4.json +1 -1
- package/coverage/.tmp/coverage-40.json +1 -1
- package/coverage/.tmp/coverage-41.json +1 -1
- package/coverage/.tmp/coverage-42.json +1 -1
- package/coverage/.tmp/coverage-5.json +1 -1
- package/coverage/.tmp/coverage-6.json +1 -1
- package/coverage/.tmp/coverage-7.json +1 -1
- package/coverage/.tmp/coverage-8.json +1 -1
- package/coverage/.tmp/coverage-9.json +1 -1
- package/lib/cjs/_chunks/{hnLc3Qom.js → C9tZEm0t.js} +10 -8
- package/lib/cjs/_chunks/{hnLc3Qom.js.map → C9tZEm0t.js.map} +1 -1
- package/lib/cjs/_chunks/CwkpVXDI.js.map +1 -1
- package/lib/cjs/_chunks/{Dn-t7SiM.js → DNr-ZG4Y.js} +2 -2
- package/lib/cjs/_chunks/{Dn-t7SiM.js.map → DNr-ZG4Y.js.map} +1 -1
- package/lib/cjs/_chunks/{CIr5S84J.js → DUU5wf2f.js} +4 -2
- package/lib/cjs/_chunks/DUU5wf2f.js.map +1 -0
- package/lib/cjs/components/ActionSheets/ActionSheets.js +1 -1
- package/lib/cjs/components/ActionSheets/ActionSheetsItem.js +1 -1
- package/lib/cjs/components/ActionSheets/api.js +1 -1
- package/lib/cjs/components/ActionSheets/hooks.js +1 -1
- package/lib/cjs/components/ActionSheets/index.js +1 -1
- package/lib/cjs/components/ActionablePopover/ActionablePopover.js +1 -1
- package/lib/cjs/components/ActionablePopover/index.js +1 -1
- package/lib/cjs/components/Alert/Alert.js +1 -1
- package/lib/cjs/components/Alert/hooks/alert.js +1 -1
- package/lib/cjs/components/Alert/index.js +1 -1
- package/lib/cjs/components/Alert/styles.js +1 -1
- package/lib/cjs/components/Avatar/Avatar.js +1 -1
- package/lib/cjs/components/Avatar/index.js +1 -1
- package/lib/cjs/components/Avatar/styles.js +1 -1
- package/lib/cjs/components/AvatarGroup/AvatarGroup.js +1 -1
- package/lib/cjs/components/AvatarGroup/index.js +1 -1
- package/lib/cjs/components/Badge/Badge.js +1 -1
- package/lib/cjs/components/Badge/index.js +1 -1
- package/lib/cjs/components/Badge/styles.js +1 -1
- package/lib/cjs/components/BottomBar/BottomBar.js +1 -1
- package/lib/cjs/components/BottomBar/index.js +1 -1
- package/lib/cjs/components/Button/Button.js +1 -1
- package/lib/cjs/components/Button/Viewable.js +1 -1
- package/lib/cjs/components/Button/index.js +1 -1
- package/lib/cjs/components/Button/styleMap.js +1 -1
- package/lib/cjs/components/Carousel/Carousel.js +10 -3
- package/lib/cjs/components/Carousel/Carousel.js.map +1 -1
- package/lib/cjs/components/Carousel/index.js +1 -1
- package/lib/cjs/components/CheckBoxGroup/CheckBox.js +1 -1
- package/lib/cjs/components/CheckBoxGroup/CheckBoxGroup.js +1 -1
- package/lib/cjs/components/CheckBoxGroup/index.js +1 -1
- package/lib/cjs/components/CheckBoxGroup/styles.js +1 -1
- package/lib/cjs/components/Collapse/Collapse.js +1 -1
- package/lib/cjs/components/Collapse/Item/Item.js +1 -1
- package/lib/cjs/components/Collapse/Item/styles.js +1 -1
- package/lib/cjs/components/Collapse/index.js +1 -1
- package/lib/cjs/components/ConfigProvider/ConfigProvider.js +1 -1
- package/lib/cjs/components/ConfigProvider/hooks/ConfigCache/ConfigCache.js +1 -1
- package/lib/cjs/components/ConfigProvider/hooks/ConfigCache/index.js +1 -1
- package/lib/cjs/components/ConfigProvider/hooks/themeToken/index.js +1 -1
- package/lib/cjs/components/ConfigProvider/hooks/themeToken/useThemeToken.js +1 -1
- package/lib/cjs/components/ConfigProvider/index.js +1 -1
- package/lib/cjs/components/DatePicker/DatePicker.js +1 -1
- package/lib/cjs/components/DatePicker/api.js +1 -1
- package/lib/cjs/components/DatePicker/index.js +1 -1
- package/lib/cjs/components/Divider/Divider.js +1 -1
- package/lib/cjs/components/Divider/index.js +1 -1
- package/lib/cjs/components/Divider/styles.js +1 -1
- package/lib/cjs/components/DropDown/DropDown.js +1 -1
- package/lib/cjs/components/DropDown/DropDownItem.js +1 -1
- package/lib/cjs/components/DropDown/index.js +1 -1
- package/lib/cjs/components/Empty/Empty.js +1 -1
- package/lib/cjs/components/Empty/index.js +1 -1
- package/lib/cjs/components/Empty/styles.js +1 -1
- package/lib/cjs/components/FAB/FAB.js +1 -1
- package/lib/cjs/components/FAB/index.js +1 -1
- package/lib/cjs/components/Form/Form.js +1 -1
- package/lib/cjs/components/Form/FormItem.js +1 -1
- package/lib/cjs/components/Form/index.js +1 -1
- package/lib/cjs/components/Form/styles.js +1 -1
- package/lib/cjs/components/Image/Image.js +30 -93
- package/lib/cjs/components/Image/Image.js.map +1 -1
- package/lib/cjs/components/Image/Image69.js +1 -1
- package/lib/cjs/components/Image/VisibilitySensor.js +2 -2
- package/lib/cjs/components/Image/VisibilitySensor.js.map +1 -1
- package/lib/cjs/components/Image/hook/index.js +1 -1
- package/lib/cjs/components/Image/index.js +5 -4
- package/lib/cjs/components/Image/index.js.map +1 -1
- package/lib/cjs/components/Image/queryCacheBatcher.js +96 -0
- package/lib/cjs/components/Image/queryCacheBatcher.js.map +1 -0
- package/lib/cjs/components/Image/utils.js +1 -1
- package/lib/cjs/components/ImagePreview/ImagePreview.js +1 -1
- package/lib/cjs/components/ImagePreview/api.js +1 -1
- package/lib/cjs/components/ImagePreview/index.js +1 -1
- package/lib/cjs/components/LanguageProvider/hooks/useLanguage.js +1 -1
- package/lib/cjs/components/LanguageProvider/index.js +1 -1
- package/lib/cjs/components/List/List.js +1 -1
- package/lib/cjs/components/List/ListItem/ListItem.js +1 -1
- package/lib/cjs/components/List/index.js +1 -1
- package/lib/cjs/components/List/styles.js +1 -1
- package/lib/cjs/components/MiniSnackBar/MiniSnackBar.js +1 -1
- package/lib/cjs/components/MiniSnackBar/index.js +1 -1
- package/lib/cjs/components/MiniSnackBar/styles.js +1 -1
- package/lib/cjs/components/NavigationBar/NavigationBar.js +1 -1
- package/lib/cjs/components/NavigationBar/index.js +1 -1
- package/lib/cjs/components/NavigationBar/styles.js +1 -1
- package/lib/cjs/components/NoticeBar/NoticeBar.js +1 -1
- package/lib/cjs/components/NoticeBar/index.js +1 -1
- package/lib/cjs/components/Picker/Picker.js +1 -1
- package/lib/cjs/components/Picker/api.js +1 -1
- package/lib/cjs/components/Picker/index.js +1 -1
- package/lib/cjs/components/PickerView/PickerView.js +1 -1
- package/lib/cjs/components/PickerView/Wheel.js +1 -1
- package/lib/cjs/components/PickerView/index.js +1 -1
- package/lib/cjs/components/Popover/Popover.js +5 -4
- package/lib/cjs/components/Popover/Popover.js.map +1 -1
- package/lib/cjs/components/Popover/index.js +1 -1
- package/lib/cjs/components/Portal/core/PortalProvider.js +1 -1
- package/lib/cjs/components/Portal/index.js +1 -1
- package/lib/cjs/components/Progress/Progress.js +1 -1
- package/lib/cjs/components/Progress/index.js +1 -1
- package/lib/cjs/components/Progress/styles.js +1 -1
- package/lib/cjs/components/ProgressIndicator/ProgressIndicator.js +1 -1
- package/lib/cjs/components/ProgressIndicator/index.js +1 -1
- package/lib/cjs/components/ProgressIndicator/styles.js +1 -1
- package/lib/cjs/components/PullRefresh/PullRefresh.js +105 -41
- package/lib/cjs/components/PullRefresh/PullRefresh.js.map +1 -1
- package/lib/cjs/components/PullRefresh/component.js +2 -2
- package/lib/cjs/components/PullRefresh/index.js +2 -2
- package/lib/cjs/components/PullRefresh/interface/index.js +1 -1
- package/lib/cjs/components/Radio/Radio.js +5 -10
- package/lib/cjs/components/Radio/Radio.js.map +1 -1
- package/lib/cjs/components/Radio/RadioGroup.js +1 -1
- package/lib/cjs/components/Radio/index.js +5 -10
- package/lib/cjs/components/Radio/index.js.map +1 -1
- package/lib/cjs/components/Radio/styles.js +1 -1
- package/lib/cjs/components/Rate/Rate.js +1 -1
- package/lib/cjs/components/Rate/index.js +1 -1
- package/lib/cjs/components/Result/Result.js +1 -1
- package/lib/cjs/components/Result/index.js +1 -1
- package/lib/cjs/components/Result/styles.js +1 -1
- package/lib/cjs/components/Search/Search.js +1 -1
- package/lib/cjs/components/Search/index.js +1 -1
- package/lib/cjs/components/Search/styles.js +1 -1
- package/lib/cjs/components/SegmentedControl/SegmentedControl.js +1 -1
- package/lib/cjs/components/SegmentedControl/index.js +1 -1
- package/lib/cjs/components/Sheets/AnimatedSheets.js +1 -1
- package/lib/cjs/components/Sheets/Sheets.js +1 -1
- package/lib/cjs/components/Sheets/api.js +1 -1
- package/lib/cjs/components/Sheets/index.js +1 -1
- package/lib/cjs/components/Sheets/styles.js +2 -2
- package/lib/cjs/components/Sheets/styles.js.map +1 -1
- package/lib/cjs/components/Skeleton/Item/SkeletonItem.js +1 -1
- package/lib/cjs/components/Skeleton/Item/SkeletonItem69.js +1 -1
- package/lib/cjs/components/Skeleton/Skeleton.js +1 -1
- package/lib/cjs/components/Skeleton/Skeleton69.js +1 -1
- package/lib/cjs/components/Skeleton/index.js +1 -1
- package/lib/cjs/components/Slider/Slider.js +1 -1
- package/lib/cjs/components/Slider/index.js +1 -1
- package/lib/cjs/components/SlimAlert/Alert.js +1 -1
- package/lib/cjs/components/SlimAlert/AlertContent.js +1 -1
- package/lib/cjs/components/SlimAlert/AlertFooter.js +1 -1
- package/lib/cjs/components/SlimAlert/index.js +1 -1
- package/lib/cjs/components/SlimAlert/styles.js +1 -1
- package/lib/cjs/components/SlimNavigationBar/NavigationBar.js +1 -1
- package/lib/cjs/components/SlimNavigationBar/NavigationBarAction.js +1 -1
- package/lib/cjs/components/SlimNavigationBar/index.js +1 -1
- package/lib/cjs/components/SlimNavigationBar/styles.js +1 -1
- package/lib/cjs/components/SlimSheets/AnimatedSheets.js +1 -1
- package/lib/cjs/components/SlimSheets/AnimatedSheetsAction.js +1 -1
- package/lib/cjs/components/SlimSheets/AnimatedSheetsHeader.js +1 -1
- package/lib/cjs/components/SlimSheets/DragAnimatedSheets.js +1 -1
- package/lib/cjs/components/SlimSheets/index.js +1 -1
- package/lib/cjs/components/SlimTabs/BadgeSlimTabItem.js +1 -1
- package/lib/cjs/components/SlimTabs/SlimTab.js +1 -1
- package/lib/cjs/components/SlimTabs/SlimTabItem.js +1 -1
- package/lib/cjs/components/SlimTabs/SlimTabItemLabel.js +1 -1
- package/lib/cjs/components/SlimTabs/SlimTabItemValue.js +1 -1
- package/lib/cjs/components/SlimTabs/SlimTabList.js +1 -1
- package/lib/cjs/components/SlimTabs/index.js +1 -1
- package/lib/cjs/components/SlimTabs/styles.js +1 -1
- package/lib/cjs/components/SnackBar/SnackBar.js +1 -1
- package/lib/cjs/components/SnackBar/index.js +1 -1
- package/lib/cjs/components/SnackBar/styles.js +1 -1
- package/lib/cjs/components/Stepper/Stepper.js +1 -1
- package/lib/cjs/components/Stepper/index.js +1 -1
- package/lib/cjs/components/Switch/Switch.js +1 -1
- package/lib/cjs/components/Switch/index.js +1 -1
- package/lib/cjs/components/Tab/Tabs.js +1 -1
- package/lib/cjs/components/Tab/index.js +1 -1
- package/lib/cjs/components/Tab/styles.js +1 -1
- package/lib/cjs/components/TabBar/TabBar.js +1 -1
- package/lib/cjs/components/TabBar/index.js +1 -1
- package/lib/cjs/components/TabBar/styles.js +1 -1
- package/lib/cjs/components/Tag/Tag.js +1 -1
- package/lib/cjs/components/Tag/index.js +1 -1
- package/lib/cjs/components/Text/Text.js +1 -1
- package/lib/cjs/components/Text/Viewable.js +1 -1
- package/lib/cjs/components/Text/hooks/cloneContainer.js +1 -1
- package/lib/cjs/components/Text/hooks/index.js +1 -1
- package/lib/cjs/components/Text/hooks/loadFontFromFile.js +2 -2
- package/lib/cjs/components/Text/hooks/loadFontFromFile.js.map +1 -1
- package/lib/cjs/components/Text/index.js +1 -1
- package/lib/cjs/components/Text/styles.js +1 -1
- package/lib/cjs/components/TextField/TextField.js +1 -1
- package/lib/cjs/components/TextField/index.js +1 -1
- package/lib/cjs/components/TextField/styles.js +1 -1
- package/lib/cjs/components/TextView/TextView.js +1 -1
- package/lib/cjs/components/TextView/index.js +1 -1
- package/lib/cjs/components/TextView/styles.js +1 -1
- package/lib/cjs/components/Toast/Toast.js +1 -1
- package/lib/cjs/components/Toast/api.js +1 -1
- package/lib/cjs/components/Toast/index.js +1 -1
- package/lib/cjs/components/Toast/styles.js +1 -1
- package/lib/cjs/components/Uploader/Uploader.js +3 -3
- package/lib/cjs/components/Uploader/Uploader.js.map +1 -1
- package/lib/cjs/components/Uploader/index.js +2 -2
- package/lib/cjs/components/Uploader/interface/index.js +2 -2
- package/lib/cjs/components/Uploader/styles.js +2 -2
- package/lib/cjs/components/Uploader/utils.js +1 -1
- package/lib/cjs/index.js +5 -11
- package/lib/cjs/index.js.map +1 -1
- package/lib/cjs/pvCount/pvData.js +0 -1
- package/lib/cjs/pvCount/pvData.js.map +1 -1
- package/lib/esm/_chunks/{CgvIDP0E.js → CAkwE9ZD.js} +10 -8
- package/lib/esm/_chunks/{CgvIDP0E.js.map → CAkwE9ZD.js.map} +1 -1
- package/lib/esm/_chunks/Da9cW8JG.js.map +1 -1
- package/lib/esm/_chunks/{DRgGcbc8.js → eYElHgNc.js} +2 -2
- package/lib/esm/_chunks/{DRgGcbc8.js.map → eYElHgNc.js.map} +1 -1
- package/lib/esm/_chunks/{CZtagXcj.js → gC9g4Fr_.js} +4 -2
- package/lib/esm/_chunks/gC9g4Fr_.js.map +1 -0
- package/lib/esm/components/ActionSheets/ActionSheets.js +1 -1
- package/lib/esm/components/ActionSheets/ActionSheetsItem.js +1 -1
- package/lib/esm/components/ActionSheets/api.js +1 -1
- package/lib/esm/components/ActionSheets/hooks.js +1 -1
- package/lib/esm/components/ActionSheets/index.js +1 -1
- package/lib/esm/components/ActionablePopover/ActionablePopover.js +1 -1
- package/lib/esm/components/ActionablePopover/index.js +1 -1
- package/lib/esm/components/Alert/Alert.js +1 -1
- package/lib/esm/components/Alert/hooks/alert.js +1 -1
- package/lib/esm/components/Alert/index.js +1 -1
- package/lib/esm/components/Alert/styles.js +1 -1
- package/lib/esm/components/Avatar/Avatar.js +1 -1
- package/lib/esm/components/Avatar/index.js +1 -1
- package/lib/esm/components/Avatar/styles.js +1 -1
- package/lib/esm/components/AvatarGroup/AvatarGroup.js +1 -1
- package/lib/esm/components/AvatarGroup/index.js +1 -1
- package/lib/esm/components/Badge/Badge.js +1 -1
- package/lib/esm/components/Badge/index.js +1 -1
- package/lib/esm/components/Badge/styles.js +1 -1
- package/lib/esm/components/BottomBar/BottomBar.js +1 -1
- package/lib/esm/components/BottomBar/index.js +1 -1
- package/lib/esm/components/Button/Button.js +1 -1
- package/lib/esm/components/Button/Viewable.js +1 -1
- package/lib/esm/components/Button/index.js +1 -1
- package/lib/esm/components/Button/styleMap.js +1 -1
- package/lib/esm/components/Carousel/Carousel.js +10 -3
- package/lib/esm/components/Carousel/Carousel.js.map +1 -1
- package/lib/esm/components/Carousel/index.js +1 -1
- package/lib/esm/components/CheckBoxGroup/CheckBox.js +1 -1
- package/lib/esm/components/CheckBoxGroup/CheckBoxGroup.js +1 -1
- package/lib/esm/components/CheckBoxGroup/index.js +1 -1
- package/lib/esm/components/CheckBoxGroup/styles.js +1 -1
- package/lib/esm/components/Collapse/Collapse.js +1 -1
- package/lib/esm/components/Collapse/Item/Item.js +1 -1
- package/lib/esm/components/Collapse/Item/styles.js +1 -1
- package/lib/esm/components/Collapse/index.js +1 -1
- package/lib/esm/components/ConfigProvider/ConfigProvider.js +1 -1
- package/lib/esm/components/ConfigProvider/hooks/ConfigCache/ConfigCache.js +1 -1
- package/lib/esm/components/ConfigProvider/hooks/ConfigCache/index.js +1 -1
- package/lib/esm/components/ConfigProvider/hooks/themeToken/index.js +1 -1
- package/lib/esm/components/ConfigProvider/hooks/themeToken/useThemeToken.js +1 -1
- package/lib/esm/components/ConfigProvider/index.js +1 -1
- package/lib/esm/components/DatePicker/DatePicker.js +1 -1
- package/lib/esm/components/DatePicker/api.js +1 -1
- package/lib/esm/components/DatePicker/index.js +1 -1
- package/lib/esm/components/Divider/Divider.js +1 -1
- package/lib/esm/components/Divider/index.js +1 -1
- package/lib/esm/components/Divider/styles.js +1 -1
- package/lib/esm/components/DropDown/DropDown.js +1 -1
- package/lib/esm/components/DropDown/DropDownItem.js +1 -1
- package/lib/esm/components/DropDown/index.js +1 -1
- package/lib/esm/components/Empty/Empty.js +1 -1
- package/lib/esm/components/Empty/index.js +1 -1
- package/lib/esm/components/Empty/styles.js +1 -1
- package/lib/esm/components/FAB/FAB.js +1 -1
- package/lib/esm/components/FAB/index.js +1 -1
- package/lib/esm/components/Form/Form.js +1 -1
- package/lib/esm/components/Form/FormItem.js +1 -1
- package/lib/esm/components/Form/index.js +1 -1
- package/lib/esm/components/Form/styles.js +1 -1
- package/lib/esm/components/Image/Image.js +32 -95
- package/lib/esm/components/Image/Image.js.map +1 -1
- package/lib/esm/components/Image/Image69.js +1 -1
- package/lib/esm/components/Image/VisibilitySensor.js +2 -2
- package/lib/esm/components/Image/VisibilitySensor.js.map +1 -1
- package/lib/esm/components/Image/hook/index.js +1 -1
- package/lib/esm/components/Image/index.js +5 -4
- package/lib/esm/components/Image/index.js.map +1 -1
- package/lib/esm/components/Image/queryCacheBatcher.js +92 -0
- package/lib/esm/components/Image/queryCacheBatcher.js.map +1 -0
- package/lib/esm/components/Image/utils.js +1 -1
- package/lib/esm/components/ImagePreview/ImagePreview.js +1 -1
- package/lib/esm/components/ImagePreview/api.js +1 -1
- package/lib/esm/components/ImagePreview/index.js +1 -1
- package/lib/esm/components/LanguageProvider/hooks/useLanguage.js +1 -1
- package/lib/esm/components/LanguageProvider/index.js +1 -1
- package/lib/esm/components/List/List.js +1 -1
- package/lib/esm/components/List/ListItem/ListItem.js +1 -1
- package/lib/esm/components/List/index.js +1 -1
- package/lib/esm/components/List/styles.js +1 -1
- package/lib/esm/components/MiniSnackBar/MiniSnackBar.js +1 -1
- package/lib/esm/components/MiniSnackBar/index.js +1 -1
- package/lib/esm/components/MiniSnackBar/styles.js +1 -1
- package/lib/esm/components/NavigationBar/NavigationBar.js +1 -1
- package/lib/esm/components/NavigationBar/index.js +1 -1
- package/lib/esm/components/NavigationBar/styles.js +1 -1
- package/lib/esm/components/NoticeBar/NoticeBar.js +1 -1
- package/lib/esm/components/NoticeBar/index.js +1 -1
- package/lib/esm/components/Picker/Picker.js +1 -1
- package/lib/esm/components/Picker/api.js +1 -1
- package/lib/esm/components/Picker/index.js +1 -1
- package/lib/esm/components/PickerView/PickerView.js +1 -1
- package/lib/esm/components/PickerView/Wheel.js +1 -1
- package/lib/esm/components/PickerView/index.js +1 -1
- package/lib/esm/components/Popover/Popover.js +5 -4
- package/lib/esm/components/Popover/Popover.js.map +1 -1
- package/lib/esm/components/Popover/index.js +1 -1
- package/lib/esm/components/Portal/core/PortalProvider.js +1 -1
- package/lib/esm/components/Portal/index.js +1 -1
- package/lib/esm/components/Progress/Progress.js +1 -1
- package/lib/esm/components/Progress/index.js +1 -1
- package/lib/esm/components/Progress/styles.js +1 -1
- package/lib/esm/components/ProgressIndicator/ProgressIndicator.js +1 -1
- package/lib/esm/components/ProgressIndicator/index.js +1 -1
- package/lib/esm/components/ProgressIndicator/styles.js +1 -1
- package/lib/esm/components/PullRefresh/PullRefresh.js +106 -42
- package/lib/esm/components/PullRefresh/PullRefresh.js.map +1 -1
- package/lib/esm/components/PullRefresh/component.js +2 -2
- package/lib/esm/components/PullRefresh/index.js +2 -2
- package/lib/esm/components/PullRefresh/interface/index.js +1 -1
- package/lib/esm/components/Radio/Radio.js +5 -10
- package/lib/esm/components/Radio/Radio.js.map +1 -1
- package/lib/esm/components/Radio/RadioGroup.js +1 -1
- package/lib/esm/components/Radio/index.js +5 -10
- package/lib/esm/components/Radio/index.js.map +1 -1
- package/lib/esm/components/Radio/styles.js +1 -1
- package/lib/esm/components/Rate/Rate.js +1 -1
- package/lib/esm/components/Rate/index.js +1 -1
- package/lib/esm/components/Result/Result.js +1 -1
- package/lib/esm/components/Result/index.js +1 -1
- package/lib/esm/components/Result/styles.js +1 -1
- package/lib/esm/components/Search/Search.js +1 -1
- package/lib/esm/components/Search/index.js +1 -1
- package/lib/esm/components/Search/styles.js +1 -1
- package/lib/esm/components/SegmentedControl/SegmentedControl.js +1 -1
- package/lib/esm/components/SegmentedControl/index.js +1 -1
- package/lib/esm/components/Sheets/AnimatedSheets.js +1 -1
- package/lib/esm/components/Sheets/Sheets.js +1 -1
- package/lib/esm/components/Sheets/api.js +1 -1
- package/lib/esm/components/Sheets/index.js +1 -1
- package/lib/esm/components/Sheets/styles.js +2 -2
- package/lib/esm/components/Sheets/styles.js.map +1 -1
- package/lib/esm/components/Skeleton/Item/SkeletonItem.js +1 -1
- package/lib/esm/components/Skeleton/Item/SkeletonItem69.js +1 -1
- package/lib/esm/components/Skeleton/Skeleton.js +1 -1
- package/lib/esm/components/Skeleton/Skeleton69.js +1 -1
- package/lib/esm/components/Skeleton/index.js +1 -1
- package/lib/esm/components/Slider/Slider.js +1 -1
- package/lib/esm/components/Slider/index.js +1 -1
- package/lib/esm/components/SlimAlert/Alert.js +1 -1
- package/lib/esm/components/SlimAlert/AlertContent.js +1 -1
- package/lib/esm/components/SlimAlert/AlertFooter.js +1 -1
- package/lib/esm/components/SlimAlert/index.js +1 -1
- package/lib/esm/components/SlimAlert/styles.js +1 -1
- package/lib/esm/components/SlimNavigationBar/NavigationBar.js +1 -1
- package/lib/esm/components/SlimNavigationBar/NavigationBarAction.js +1 -1
- package/lib/esm/components/SlimNavigationBar/index.js +1 -1
- package/lib/esm/components/SlimNavigationBar/styles.js +1 -1
- package/lib/esm/components/SlimSheets/AnimatedSheets.js +1 -1
- package/lib/esm/components/SlimSheets/AnimatedSheetsAction.js +1 -1
- package/lib/esm/components/SlimSheets/AnimatedSheetsHeader.js +1 -1
- package/lib/esm/components/SlimSheets/DragAnimatedSheets.js +1 -1
- package/lib/esm/components/SlimSheets/index.js +1 -1
- package/lib/esm/components/SlimTabs/BadgeSlimTabItem.js +1 -1
- package/lib/esm/components/SlimTabs/SlimTab.js +1 -1
- package/lib/esm/components/SlimTabs/SlimTabItem.js +1 -1
- package/lib/esm/components/SlimTabs/SlimTabItemLabel.js +1 -1
- package/lib/esm/components/SlimTabs/SlimTabItemValue.js +1 -1
- package/lib/esm/components/SlimTabs/SlimTabList.js +1 -1
- package/lib/esm/components/SlimTabs/index.js +1 -1
- package/lib/esm/components/SlimTabs/styles.js +1 -1
- package/lib/esm/components/SnackBar/SnackBar.js +1 -1
- package/lib/esm/components/SnackBar/index.js +1 -1
- package/lib/esm/components/SnackBar/styles.js +1 -1
- package/lib/esm/components/Stepper/Stepper.js +1 -1
- package/lib/esm/components/Stepper/index.js +1 -1
- package/lib/esm/components/Switch/Switch.js +1 -1
- package/lib/esm/components/Switch/index.js +1 -1
- package/lib/esm/components/Tab/Tabs.js +1 -1
- package/lib/esm/components/Tab/index.js +1 -1
- package/lib/esm/components/Tab/styles.js +1 -1
- package/lib/esm/components/TabBar/TabBar.js +1 -1
- package/lib/esm/components/TabBar/index.js +1 -1
- package/lib/esm/components/TabBar/styles.js +1 -1
- package/lib/esm/components/Tag/Tag.js +1 -1
- package/lib/esm/components/Tag/index.js +1 -1
- package/lib/esm/components/Text/Text.js +1 -1
- package/lib/esm/components/Text/Viewable.js +1 -1
- package/lib/esm/components/Text/hooks/cloneContainer.js +1 -1
- package/lib/esm/components/Text/hooks/index.js +1 -1
- package/lib/esm/components/Text/hooks/loadFontFromFile.js +2 -2
- package/lib/esm/components/Text/hooks/loadFontFromFile.js.map +1 -1
- package/lib/esm/components/Text/index.js +1 -1
- package/lib/esm/components/Text/styles.js +1 -1
- package/lib/esm/components/TextField/TextField.js +1 -1
- package/lib/esm/components/TextField/index.js +1 -1
- package/lib/esm/components/TextField/styles.js +1 -1
- package/lib/esm/components/TextView/TextView.js +1 -1
- package/lib/esm/components/TextView/index.js +1 -1
- package/lib/esm/components/TextView/styles.js +1 -1
- package/lib/esm/components/Toast/Toast.js +1 -1
- package/lib/esm/components/Toast/api.js +1 -1
- package/lib/esm/components/Toast/index.js +1 -1
- package/lib/esm/components/Toast/styles.js +1 -1
- package/lib/esm/components/Uploader/Uploader.js +3 -3
- package/lib/esm/components/Uploader/Uploader.js.map +1 -1
- package/lib/esm/components/Uploader/index.js +2 -2
- package/lib/esm/components/Uploader/interface/index.js +2 -2
- package/lib/esm/components/Uploader/styles.js +2 -2
- package/lib/esm/components/Uploader/utils.js +1 -1
- package/lib/esm/index.js +5 -10
- package/lib/esm/index.js.map +1 -1
- package/lib/esm/pvCount/pvData.js +0 -1
- package/lib/esm/pvCount/pvData.js.map +1 -1
- package/lib/src/components/Image/queryCacheBatcher.d.ts +5 -0
- package/lib/src/components/Popover/Popover.d.ts +1 -1
- package/lib/src/components/Popover/interface/index.d.ts +1 -0
- package/lib/src/components/PullRefresh/PullRefresh.d.ts +2 -0
- package/lib/src/components/PullRefresh/interface/index.d.ts +5 -0
- package/lib/src/index.d.ts +0 -1
- package/lib/types/components/Image/queryCacheBatcher.d.ts +5 -0
- package/lib/types/components/Popover/Popover.d.ts +1 -1
- package/lib/types/components/Popover/interface/index.d.ts +1 -0
- package/lib/types/components/PullRefresh/PullRefresh.d.ts +2 -0
- package/lib/types/components/PullRefresh/interface/index.d.ts +5 -0
- package/lib/types/index.d.ts +0 -1
- package/package.json +1 -2
- package/src/components/Carousel/Carousel.tsx +15 -3
- package/src/components/Carousel/demo/index.tsx +14 -2
- package/src/components/Image/Image.tsx +53 -115
- package/src/components/Image/VisibilitySensor.tsx +1 -2
- package/src/components/Image/queryCacheBatcher.ts +84 -0
- package/src/components/Popover/Popover.tsx +4 -3
- package/src/components/Popover/doc/index.mdx +22 -21
- package/src/components/Popover/interface/index.ts +1 -0
- package/src/components/PullRefresh/PullRefresh.tsx +146 -55
- package/src/components/PullRefresh/doc/index.mdx +19 -16
- package/src/components/PullRefresh/interface/index.ts +6 -0
- package/src/components/Sheets/styles.ts +2 -2
- package/src/index.ts +0 -1
- package/lib/cjs/_chunks/CIr5S84J.js.map +0 -1
- package/lib/cjs/components/Swiper/LazyPage.js +0 -42
- package/lib/cjs/components/Swiper/LazyPage.js.map +0 -1
- package/lib/cjs/components/Swiper/Swiper.js +0 -27
- package/lib/cjs/components/Swiper/Swiper.js.map +0 -1
- package/lib/cjs/components/Swiper/SwiperFlatList.js +0 -227
- package/lib/cjs/components/Swiper/SwiperFlatList.js.map +0 -1
- package/lib/cjs/components/Swiper/SwiperPagerView.js +0 -231
- package/lib/cjs/components/Swiper/SwiperPagerView.js.map +0 -1
- package/lib/cjs/components/Swiper/index.js +0 -16
- package/lib/cjs/components/Swiper/index.js.map +0 -1
- package/lib/cjs/components/Swiper/types.js +0 -3
- package/lib/cjs/components/Swiper/types.js.map +0 -1
- package/lib/cjs/components/Swiper/utils.js +0 -73
- package/lib/cjs/components/Swiper/utils.js.map +0 -1
- package/lib/esm/_chunks/CZtagXcj.js.map +0 -1
- package/lib/esm/components/Swiper/LazyPage.js +0 -40
- package/lib/esm/components/Swiper/LazyPage.js.map +0 -1
- package/lib/esm/components/Swiper/Swiper.js +0 -25
- package/lib/esm/components/Swiper/Swiper.js.map +0 -1
- package/lib/esm/components/Swiper/SwiperFlatList.js +0 -225
- package/lib/esm/components/Swiper/SwiperFlatList.js.map +0 -1
- package/lib/esm/components/Swiper/SwiperPagerView.js +0 -229
- package/lib/esm/components/Swiper/SwiperPagerView.js.map +0 -1
- package/lib/esm/components/Swiper/index.js +0 -10
- package/lib/esm/components/Swiper/index.js.map +0 -1
- package/lib/esm/components/Swiper/types.js +0 -2
- package/lib/esm/components/Swiper/types.js.map +0 -1
- package/lib/esm/components/Swiper/utils.js +0 -68
- package/lib/esm/components/Swiper/utils.js.map +0 -1
- package/lib/src/components/Swiper/LazyPage.d.ts +0 -7
- package/lib/src/components/Swiper/Swiper.d.ts +0 -5
- package/lib/src/components/Swiper/SwiperFlatList.d.ts +0 -5
- package/lib/src/components/Swiper/SwiperPagerView.d.ts +0 -5
- package/lib/src/components/Swiper/index.d.ts +0 -24
- package/lib/src/components/Swiper/types.d.ts +0 -166
- package/lib/src/components/Swiper/utils.d.ts +0 -42
- package/lib/types/components/Swiper/LazyPage.d.ts +0 -7
- package/lib/types/components/Swiper/Swiper.d.ts +0 -5
- package/lib/types/components/Swiper/SwiperFlatList.d.ts +0 -5
- package/lib/types/components/Swiper/SwiperPagerView.d.ts +0 -5
- package/lib/types/components/Swiper/index.d.ts +0 -24
- package/lib/types/components/Swiper/types.d.ts +0 -166
- package/lib/types/components/Swiper/utils.d.ts +0 -42
- package/src/components/Swiper/LazyPage.tsx +0 -44
- package/src/components/Swiper/Swiper.tsx +0 -31
- package/src/components/Swiper/SwiperFlatList.tsx +0 -299
- package/src/components/Swiper/SwiperPagerView.tsx +0 -286
- package/src/components/Swiper/demo/index.tsx +0 -146
- package/src/components/Swiper/doc/index.mdx +0 -49
- package/src/components/Swiper/index.ts +0 -25
- package/src/components/Swiper/types.ts +0 -208
- package/src/components/Swiper/utils.ts +0 -133
|
@@ -1,24 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Swiper - A performant, data-driven carousel component
|
|
3
|
-
*
|
|
4
|
-
* @example
|
|
5
|
-
* ```tsx
|
|
6
|
-
* import { Swiper, SwiperRef } from '@/components/Swiper'
|
|
7
|
-
*
|
|
8
|
-
* const swiperRef = useRef<SwiperRef>(null)
|
|
9
|
-
*
|
|
10
|
-
* <Swiper
|
|
11
|
-
* ref={swiperRef}
|
|
12
|
-
* data={items}
|
|
13
|
-
* renderItem={(item, index) => <ItemCard item={item} />}
|
|
14
|
-
* infinite
|
|
15
|
-
* onPageChange={(index) => console.log('Page:', index)}
|
|
16
|
-
* />
|
|
17
|
-
*
|
|
18
|
-
* // Programmatic control
|
|
19
|
-
* swiperRef.current?.next()
|
|
20
|
-
* swiperRef.current?.goToPage(5)
|
|
21
|
-
* ```
|
|
22
|
-
*/
|
|
23
|
-
export { Swiper } from "./Swiper";
|
|
24
|
-
export type { SwiperProps, SwiperRef } from "./types";
|
|
@@ -1,166 +0,0 @@
|
|
|
1
|
-
import { ReactNode } from "react";
|
|
2
|
-
import { StyleProp, ViewStyle } from "react-native";
|
|
3
|
-
/**
|
|
4
|
-
* Props for the Swiper component
|
|
5
|
-
*/
|
|
6
|
-
export interface SwiperProps<T> {
|
|
7
|
-
/** Array of data items to render */
|
|
8
|
-
data: T[];
|
|
9
|
-
/** Function to render each item */
|
|
10
|
-
renderItem: (item: T, index: number) => ReactNode;
|
|
11
|
-
/** Optional key extractor for list items */
|
|
12
|
-
keyExtractor?: (item: T, index: number) => string;
|
|
13
|
-
/** Enable infinite/loop scrolling */
|
|
14
|
-
infinite?: boolean;
|
|
15
|
-
/** Initial page index to display */
|
|
16
|
-
initialPage?: number;
|
|
17
|
-
/**
|
|
18
|
-
* Choose implementation: 'pagerView' or 'flatlist'
|
|
19
|
-
*
|
|
20
|
-
* PagerView (default):
|
|
21
|
-
* - Native ViewPager (Android) / UIPageViewController (iOS)
|
|
22
|
-
* - Smooth 60fps gestures
|
|
23
|
-
* - Better UX for small-medium datasets
|
|
24
|
-
*
|
|
25
|
-
* FlatList:
|
|
26
|
-
* - Built-in virtualization (better for large datasets)
|
|
27
|
-
* - removeClippedSubviews support
|
|
28
|
-
* - More predictable behavior across platforms
|
|
29
|
-
*
|
|
30
|
-
* Default: 'pagerView'
|
|
31
|
-
*/
|
|
32
|
-
implementation?: "pagerView" | "flatlist";
|
|
33
|
-
/**
|
|
34
|
-
* Number of items to clone on each end for infinite scroll (default: 2)
|
|
35
|
-
*
|
|
36
|
-
* Can be set larger than array length for maximum buffering.
|
|
37
|
-
* Higher values = smoother fast scrolling, but more memory usage.
|
|
38
|
-
*
|
|
39
|
-
* Examples:
|
|
40
|
-
* - cloneCount=2: Default, good for most cases
|
|
41
|
-
* - cloneCount=5-10: Better for fast scrolling
|
|
42
|
-
* - cloneCount=20+: Maximum buffer for very fast scrolling
|
|
43
|
-
*/
|
|
44
|
-
cloneCount?: number;
|
|
45
|
-
/**
|
|
46
|
-
* Number of pages to mount on each side of current page (default: 2)
|
|
47
|
-
*
|
|
48
|
-
* Note: When cloneCount is large, the effective mount window will
|
|
49
|
-
* automatically scale up to prevent blank pages during fast scrolling.
|
|
50
|
-
* Effective window = max(lazyMountWindow, cloneCount/10, capped at 10)
|
|
51
|
-
*/
|
|
52
|
-
lazyMountWindow?: number;
|
|
53
|
-
/**
|
|
54
|
-
* Enable aggressive memory management by unmounting pages far from current position
|
|
55
|
-
*
|
|
56
|
-
* When true, pages beyond unmountThreshold will be unmounted to free memory.
|
|
57
|
-
* When false (default), pages stay mounted once loaded for better UX.
|
|
58
|
-
*
|
|
59
|
-
* Recommended: true for large datasets with heavy content (images/videos)
|
|
60
|
-
*/
|
|
61
|
-
removeClippedPages?: boolean;
|
|
62
|
-
/**
|
|
63
|
-
* Distance from current page before unmounting (default: lazyMountWindow * 3)
|
|
64
|
-
* Only applies when removeClippedPages is true
|
|
65
|
-
*/
|
|
66
|
-
unmountThreshold?: number;
|
|
67
|
-
/** Callback when page changes */
|
|
68
|
-
onPageChange?: (index: number) => void;
|
|
69
|
-
/** Callback when swiping to next page */
|
|
70
|
-
onNext?: (index: number) => void;
|
|
71
|
-
/** Callback when swiping to previous page */
|
|
72
|
-
onPrev?: (index: number) => void;
|
|
73
|
-
/** Callback when scroll state changes */
|
|
74
|
-
onPageScrollStateChanged?: (state: "idle" | "dragging" | "settling") => void;
|
|
75
|
-
/**
|
|
76
|
-
* Callback when user releases drag (before momentum scroll begins)
|
|
77
|
-
*
|
|
78
|
-
* FlatList implementation only.
|
|
79
|
-
* Fires when user lifts finger after dragging, before momentum animation starts.
|
|
80
|
-
* Useful for immediate UI updates (e.g., updating active indicator)
|
|
81
|
-
* while deferring expensive operations (e.g., data fetching) to onPageChange.
|
|
82
|
-
*
|
|
83
|
-
* @param index - The page index where drag ended (real index, not display index)
|
|
84
|
-
*
|
|
85
|
-
* @example
|
|
86
|
-
* <Swiper
|
|
87
|
-
* implementation="flatlist"
|
|
88
|
-
* onScrollEndDrag={(index) => updateActiveIndex(index)} // Fast UI update
|
|
89
|
-
* onPageChange={(index) => fetchData(index)} // Slower data fetch
|
|
90
|
-
* />
|
|
91
|
-
*/
|
|
92
|
-
onScrollEndDrag?: (index: number) => void;
|
|
93
|
-
/** Style for the pager container */
|
|
94
|
-
style?: StyleProp<ViewStyle>;
|
|
95
|
-
/** Margin between pages (Android only) */
|
|
96
|
-
pageMargin?: number;
|
|
97
|
-
/** Enable/disable scrolling */
|
|
98
|
-
scrollEnabled?: boolean;
|
|
99
|
-
/** Allow overdrag effect */
|
|
100
|
-
overdrag?: boolean;
|
|
101
|
-
/**
|
|
102
|
-
* Number of pages to keep off-screen on each side (Android only)
|
|
103
|
-
*
|
|
104
|
-
* This is a NATIVE Android API that destroys/recreates views automatically.
|
|
105
|
-
* More efficient than our JS-based removeClippedPages approach.
|
|
106
|
-
*
|
|
107
|
-
* Note: iOS doesn't support this - all pages stay in memory on iOS
|
|
108
|
-
*
|
|
109
|
-
* Examples:
|
|
110
|
-
* - offscreenPageLimit=1: Keep 1 page on each side (3 total in memory)
|
|
111
|
-
* - offscreenPageLimit=2: Keep 2 pages on each side (5 total in memory)
|
|
112
|
-
*
|
|
113
|
-
* Default: Android default is 1, but PagerView doesn't set a default
|
|
114
|
-
*/
|
|
115
|
-
offscreenPageLimit?: number;
|
|
116
|
-
/** Custom placeholder component for unmounted pages */
|
|
117
|
-
renderPlaceholder?: (index: number) => ReactNode;
|
|
118
|
-
}
|
|
119
|
-
/**
|
|
120
|
-
* Ref methods exposed by Swiper component
|
|
121
|
-
*/
|
|
122
|
-
export interface SwiperRef {
|
|
123
|
-
/** Navigate to specific page */
|
|
124
|
-
goToPage: (index: number, animated?: boolean) => void;
|
|
125
|
-
/** Go to next page */
|
|
126
|
-
next: (animated?: boolean) => void;
|
|
127
|
-
/** Go to previous page */
|
|
128
|
-
prev: (animated?: boolean) => void;
|
|
129
|
-
/** Get current page index */
|
|
130
|
-
getCurrentPage: () => number;
|
|
131
|
-
}
|
|
132
|
-
/**
|
|
133
|
-
* Props for LazyPage component
|
|
134
|
-
*/
|
|
135
|
-
export interface LazyPageProps {
|
|
136
|
-
/** Whether this page should be mounted */
|
|
137
|
-
shouldMount: boolean;
|
|
138
|
-
/** Whether this page should be unmounted if far away */
|
|
139
|
-
shouldUnmount?: boolean;
|
|
140
|
-
/** Content to render when mounted */
|
|
141
|
-
children: ReactNode;
|
|
142
|
-
/** Optional placeholder when not mounted */
|
|
143
|
-
placeholder?: ReactNode;
|
|
144
|
-
/** Style for page container */
|
|
145
|
-
style?: StyleProp<ViewStyle>;
|
|
146
|
-
}
|
|
147
|
-
/**
|
|
148
|
-
* Return type for infinite data preparation
|
|
149
|
-
*/
|
|
150
|
-
export interface InfiniteDataResult<T> {
|
|
151
|
-
/** Data array with clones added */
|
|
152
|
-
displayData: T[];
|
|
153
|
-
/** Offset where real data starts */
|
|
154
|
-
offset: number;
|
|
155
|
-
/** Number of clones on each side */
|
|
156
|
-
cloneCount: number;
|
|
157
|
-
}
|
|
158
|
-
/**
|
|
159
|
-
* Return type for jump calculation
|
|
160
|
-
*/
|
|
161
|
-
export interface JumpResult {
|
|
162
|
-
/** Whether a jump is needed */
|
|
163
|
-
shouldJump: boolean;
|
|
164
|
-
/** Target index to jump to (if shouldJump is true) */
|
|
165
|
-
jumpTo?: number;
|
|
166
|
-
}
|
|
@@ -1,42 +0,0 @@
|
|
|
1
|
-
import type { InfiniteDataResult, JumpResult } from "./types";
|
|
2
|
-
/**
|
|
3
|
-
* Prepare data array for infinite scrolling by cloning boundary items
|
|
4
|
-
*
|
|
5
|
-
* @param data Original data array
|
|
6
|
-
* @param infinite Whether infinite scroll is enabled
|
|
7
|
-
* @param cloneCount Number of items to clone on each end (default: 2)
|
|
8
|
-
* Can exceed data.length - will repeat entire array multiple times
|
|
9
|
-
* @returns Object with displayData (with clones), offset, and cloneCount
|
|
10
|
-
*
|
|
11
|
-
* @example
|
|
12
|
-
* // With data=[A,B,C] and cloneCount=2: [B,C,A,B,C,A,B]
|
|
13
|
-
* // With data=[A,B,C] and cloneCount=5: [A,B,C,A,B,C,A,B,C,A,B]
|
|
14
|
-
*/
|
|
15
|
-
export declare function prepareInfiniteData<T>(data: T[], infinite: boolean, cloneCount?: number): InfiniteDataResult<T>;
|
|
16
|
-
/**
|
|
17
|
-
* Calculate if a jump is needed after page change for infinite scroll
|
|
18
|
-
*
|
|
19
|
-
* @param newPage Current display page index
|
|
20
|
-
* @param dataLength Length of original data array
|
|
21
|
-
* @param offset Offset where real data starts
|
|
22
|
-
* @param cloneCount Number of clones on each side
|
|
23
|
-
* @returns Object indicating if jump is needed and target index
|
|
24
|
-
*/
|
|
25
|
-
export declare function shouldJumpForInfinite(newPage: number, dataLength: number, offset: number, cloneCount: number): JumpResult;
|
|
26
|
-
/**
|
|
27
|
-
* Convert display index to real data index
|
|
28
|
-
*
|
|
29
|
-
* @param displayIndex Index in the display array (with clones)
|
|
30
|
-
* @param offset Offset where real data starts
|
|
31
|
-
* @param dataLength Length of original data array
|
|
32
|
-
* @returns Real index in original data array
|
|
33
|
-
*/
|
|
34
|
-
export declare function getRealIndex(displayIndex: number, offset: number, dataLength: number): number;
|
|
35
|
-
/**
|
|
36
|
-
* Get display index from real data index
|
|
37
|
-
*
|
|
38
|
-
* @param realIndex Index in original data array
|
|
39
|
-
* @param offset Offset where real data starts
|
|
40
|
-
* @returns Display index in display array (with clones)
|
|
41
|
-
*/
|
|
42
|
-
export declare function getDisplayIndex(realIndex: number, offset: number): number;
|
|
@@ -1,44 +0,0 @@
|
|
|
1
|
-
import React, { useState, useEffect } from "react";
|
|
2
|
-
import { View, StyleSheet, Dimensions } from "react-native";
|
|
3
|
-
import type { LazyPageProps } from "./types";
|
|
4
|
-
|
|
5
|
-
/**
|
|
6
|
-
* LazyPage component that conditionally mounts/unmounts content
|
|
7
|
-
* based on proximity to current page
|
|
8
|
-
*/
|
|
9
|
-
export const LazyPage: React.FC<LazyPageProps> = ({
|
|
10
|
-
shouldMount,
|
|
11
|
-
shouldUnmount = false,
|
|
12
|
-
children,
|
|
13
|
-
placeholder,
|
|
14
|
-
style,
|
|
15
|
-
}) => {
|
|
16
|
-
const [mounted, setMounted] = useState(false);
|
|
17
|
-
|
|
18
|
-
useEffect(() => {
|
|
19
|
-
if (shouldMount && !mounted) {
|
|
20
|
-
// Mount the page when it enters the window
|
|
21
|
-
setMounted(true);
|
|
22
|
-
} else if (shouldUnmount && mounted) {
|
|
23
|
-
// Unmount the page when it's far from current position
|
|
24
|
-
// This helps free memory for large datasets
|
|
25
|
-
setMounted(false);
|
|
26
|
-
}
|
|
27
|
-
// Note: By default (shouldUnmount=false), pages stay mounted for better UX
|
|
28
|
-
// Enable shouldUnmount for aggressive memory management
|
|
29
|
-
}, [shouldMount, shouldUnmount, mounted]);
|
|
30
|
-
|
|
31
|
-
return (
|
|
32
|
-
<View style={[styles.page, style]}>{mounted ? children : placeholder || <View style={styles.placeholder} />}</View>
|
|
33
|
-
);
|
|
34
|
-
};
|
|
35
|
-
|
|
36
|
-
const styles = StyleSheet.create({
|
|
37
|
-
page: {
|
|
38
|
-
flex: 1,
|
|
39
|
-
},
|
|
40
|
-
placeholder: {
|
|
41
|
-
flex: 1,
|
|
42
|
-
backgroundColor: "transparent",
|
|
43
|
-
},
|
|
44
|
-
});
|
|
@@ -1,31 +0,0 @@
|
|
|
1
|
-
import React, { forwardRef } from "react";
|
|
2
|
-
import type { SwiperProps, SwiperRef } from "./types";
|
|
3
|
-
import { SwiperPagerView } from "./SwiperPagerView";
|
|
4
|
-
import { SwiperFlatList } from "./SwiperFlatList";
|
|
5
|
-
|
|
6
|
-
/**
|
|
7
|
-
* Swiper Component - A performant, data-driven carousel with infinite scroll support
|
|
8
|
-
*
|
|
9
|
-
* Features:
|
|
10
|
-
* - Two implementations: PagerView (default) and FlatList
|
|
11
|
-
* - Lazy mounting for performance with large datasets
|
|
12
|
-
* - Infinite/loop scrolling with seamless transitions
|
|
13
|
-
* - Programmatic control via ref methods
|
|
14
|
-
* - Event callbacks for page changes
|
|
15
|
-
* - Nested scroll support
|
|
16
|
-
* - TypeScript generic support for type-safe data
|
|
17
|
-
*/
|
|
18
|
-
function SwiperComponent<T>(props: SwiperProps<T>, ref: React.Ref<SwiperRef>) {
|
|
19
|
-
const { implementation = "pagerView" } = props;
|
|
20
|
-
|
|
21
|
-
if (implementation === "flatlist") {
|
|
22
|
-
return <SwiperFlatList ref={ref} {...props} />;
|
|
23
|
-
}
|
|
24
|
-
|
|
25
|
-
return <SwiperPagerView ref={ref} {...props} />;
|
|
26
|
-
}
|
|
27
|
-
|
|
28
|
-
// Export with generic type support
|
|
29
|
-
export const Swiper = forwardRef(SwiperComponent) as <T>(
|
|
30
|
-
props: SwiperProps<T> & { ref?: React.Ref<SwiperRef> },
|
|
31
|
-
) => React.ReactElement;
|
|
@@ -1,299 +0,0 @@
|
|
|
1
|
-
import React, { forwardRef, useCallback, useEffect, useImperativeHandle, useMemo, useRef, useState } from "react";
|
|
2
|
-
import { FlatList, StyleSheet, View, LayoutChangeEvent } from "react-native";
|
|
3
|
-
import type { SwiperProps, SwiperRef } from "./types";
|
|
4
|
-
import { prepareInfiniteData, shouldJumpForInfinite, getRealIndex, getDisplayIndex } from "./utils";
|
|
5
|
-
|
|
6
|
-
/**
|
|
7
|
-
* FlatList-based Swiper implementation
|
|
8
|
-
*/
|
|
9
|
-
function SwiperFlatListComponent<T>(props: SwiperProps<T>, ref: React.Ref<SwiperRef>) {
|
|
10
|
-
const {
|
|
11
|
-
data,
|
|
12
|
-
renderItem,
|
|
13
|
-
keyExtractor,
|
|
14
|
-
infinite = false,
|
|
15
|
-
initialPage = 0,
|
|
16
|
-
cloneCount = 2,
|
|
17
|
-
onPageChange,
|
|
18
|
-
onNext,
|
|
19
|
-
onPrev,
|
|
20
|
-
onScrollEndDrag,
|
|
21
|
-
onPageScrollStateChanged,
|
|
22
|
-
style,
|
|
23
|
-
} = props;
|
|
24
|
-
|
|
25
|
-
// Refs
|
|
26
|
-
const flatListRef = useRef<FlatList>(null);
|
|
27
|
-
const currentPageRef = useRef<number>(initialPage);
|
|
28
|
-
const isJumpingRef = useRef<boolean>(false);
|
|
29
|
-
const scrollingRef = useRef<boolean>(false);
|
|
30
|
-
|
|
31
|
-
// State
|
|
32
|
-
const [currentPage, setCurrentPage] = useState(initialPage);
|
|
33
|
-
const [containerWidth, setContainerWidth] = useState(0);
|
|
34
|
-
|
|
35
|
-
// Prepare data for infinite scrolling
|
|
36
|
-
const {
|
|
37
|
-
displayData,
|
|
38
|
-
offset,
|
|
39
|
-
cloneCount: actualCloneCount,
|
|
40
|
-
} = useMemo(() => {
|
|
41
|
-
return prepareInfiniteData(data, infinite, cloneCount);
|
|
42
|
-
}, [data, infinite, cloneCount]);
|
|
43
|
-
|
|
44
|
-
// Calculate adjusted initial page for infinite mode
|
|
45
|
-
const adjustedInitialPage = useMemo(() => {
|
|
46
|
-
return infinite ? getDisplayIndex(initialPage, offset) : initialPage;
|
|
47
|
-
}, [infinite, initialPage, offset]);
|
|
48
|
-
|
|
49
|
-
/**
|
|
50
|
-
* Handle layout to measure actual container width
|
|
51
|
-
*/
|
|
52
|
-
const handleLayout = useCallback((event: LayoutChangeEvent) => {
|
|
53
|
-
const { width } = event.nativeEvent.layout;
|
|
54
|
-
if (width > 0) {
|
|
55
|
-
setContainerWidth(width);
|
|
56
|
-
}
|
|
57
|
-
}, []);
|
|
58
|
-
|
|
59
|
-
/**
|
|
60
|
-
* Handle scroll begin drag - fires when user starts dragging
|
|
61
|
-
*/
|
|
62
|
-
const handleScrollBeginDrag = useCallback(() => {
|
|
63
|
-
onPageScrollStateChanged?.("dragging");
|
|
64
|
-
}, [onPageScrollStateChanged]);
|
|
65
|
-
|
|
66
|
-
/**
|
|
67
|
-
* Handle scroll end drag - fires when user releases finger
|
|
68
|
-
*/
|
|
69
|
-
const handleScrollEndDrag = useCallback(
|
|
70
|
-
(event: any) => {
|
|
71
|
-
if (isJumpingRef.current || containerWidth === 0) {
|
|
72
|
-
return;
|
|
73
|
-
}
|
|
74
|
-
|
|
75
|
-
const offsetX = event.nativeEvent.contentOffset.x;
|
|
76
|
-
const newDisplayPage = Math.round(offsetX / containerWidth);
|
|
77
|
-
|
|
78
|
-
const realIndex = getRealIndex(newDisplayPage, offset, data.length);
|
|
79
|
-
|
|
80
|
-
// Call the callback if provided
|
|
81
|
-
onScrollEndDrag?.(realIndex);
|
|
82
|
-
|
|
83
|
-
// Transition to settling state (momentum begins)
|
|
84
|
-
onPageScrollStateChanged?.("settling");
|
|
85
|
-
},
|
|
86
|
-
[data.length, offset, onScrollEndDrag, onPageScrollStateChanged, containerWidth],
|
|
87
|
-
);
|
|
88
|
-
|
|
89
|
-
/**
|
|
90
|
-
* Handle scroll end - detect which page we're on
|
|
91
|
-
*/
|
|
92
|
-
const handleMomentumScrollEnd = useCallback(
|
|
93
|
-
(event: any) => {
|
|
94
|
-
if (isJumpingRef.current || containerWidth === 0) {
|
|
95
|
-
return;
|
|
96
|
-
}
|
|
97
|
-
|
|
98
|
-
const offsetX = event.nativeEvent.contentOffset.x;
|
|
99
|
-
const newDisplayPage = Math.round(offsetX / containerWidth);
|
|
100
|
-
|
|
101
|
-
if (newDisplayPage === currentPageRef.current) {
|
|
102
|
-
return;
|
|
103
|
-
}
|
|
104
|
-
|
|
105
|
-
const prevPage = currentPageRef.current;
|
|
106
|
-
currentPageRef.current = newDisplayPage;
|
|
107
|
-
|
|
108
|
-
const realIndex = getRealIndex(newDisplayPage, offset, data.length);
|
|
109
|
-
setCurrentPage(realIndex);
|
|
110
|
-
|
|
111
|
-
// Emit events
|
|
112
|
-
onPageChange?.(realIndex);
|
|
113
|
-
|
|
114
|
-
if (newDisplayPage > prevPage) {
|
|
115
|
-
onNext?.(realIndex);
|
|
116
|
-
} else if (newDisplayPage < prevPage) {
|
|
117
|
-
onPrev?.(realIndex);
|
|
118
|
-
}
|
|
119
|
-
|
|
120
|
-
// Transition to idle state (scroll complete)
|
|
121
|
-
onPageScrollStateChanged?.("idle");
|
|
122
|
-
|
|
123
|
-
// Handle infinite scroll jump - jump earlier to avoid hitting edge
|
|
124
|
-
if (infinite && data.length >= 3) {
|
|
125
|
-
// Use larger threshold for FlatList to jump before hitting edge
|
|
126
|
-
const threshold = Math.max(3, Math.min(5, Math.ceil(actualCloneCount / 5)));
|
|
127
|
-
const totalLength = offset + data.length + actualCloneCount;
|
|
128
|
-
|
|
129
|
-
// Near start
|
|
130
|
-
if (newDisplayPage < offset + threshold && newDisplayPage < offset + data.length / 2) {
|
|
131
|
-
const dataIndex =
|
|
132
|
-
actualCloneCount > data.length
|
|
133
|
-
? newDisplayPage % data.length
|
|
134
|
-
: data.length - actualCloneCount + newDisplayPage;
|
|
135
|
-
|
|
136
|
-
const jumpTo = offset + dataIndex;
|
|
137
|
-
performJump(jumpTo);
|
|
138
|
-
}
|
|
139
|
-
// Near end
|
|
140
|
-
else if (newDisplayPage >= offset + data.length - threshold && newDisplayPage >= offset + data.length / 2) {
|
|
141
|
-
const offsetInCycle = (newDisplayPage - offset) % data.length;
|
|
142
|
-
const jumpTo = offset + offsetInCycle;
|
|
143
|
-
performJump(jumpTo);
|
|
144
|
-
}
|
|
145
|
-
}
|
|
146
|
-
},
|
|
147
|
-
[data.length, offset, actualCloneCount, infinite, onPageChange, onNext, onPrev, containerWidth],
|
|
148
|
-
);
|
|
149
|
-
|
|
150
|
-
/**
|
|
151
|
-
* Perform jump without animation
|
|
152
|
-
*/
|
|
153
|
-
const performJump = useCallback((targetIndex: number) => {
|
|
154
|
-
isJumpingRef.current = true;
|
|
155
|
-
|
|
156
|
-
requestAnimationFrame(() => {
|
|
157
|
-
flatListRef.current?.scrollToIndex({
|
|
158
|
-
index: targetIndex,
|
|
159
|
-
animated: false,
|
|
160
|
-
});
|
|
161
|
-
currentPageRef.current = targetIndex;
|
|
162
|
-
|
|
163
|
-
requestAnimationFrame(() => {
|
|
164
|
-
isJumpingRef.current = false;
|
|
165
|
-
});
|
|
166
|
-
});
|
|
167
|
-
}, []);
|
|
168
|
-
|
|
169
|
-
/**
|
|
170
|
-
* Get item layout for proper scrollToIndex
|
|
171
|
-
*/
|
|
172
|
-
const getItemLayout = useCallback(
|
|
173
|
-
(_: any, index: number) => ({
|
|
174
|
-
length: containerWidth,
|
|
175
|
-
offset: containerWidth * index,
|
|
176
|
-
index,
|
|
177
|
-
}),
|
|
178
|
-
[containerWidth],
|
|
179
|
-
);
|
|
180
|
-
|
|
181
|
-
/**
|
|
182
|
-
* Render each item
|
|
183
|
-
*/
|
|
184
|
-
const renderFlatListItem = useCallback(
|
|
185
|
-
({ item, index }: { item: T; index: number }) => {
|
|
186
|
-
const realIndex = getRealIndex(index, offset, data.length);
|
|
187
|
-
return <View style={[styles.page, { width: containerWidth }]}>{renderItem(item, realIndex)}</View>;
|
|
188
|
-
},
|
|
189
|
-
[renderItem, offset, data.length, containerWidth],
|
|
190
|
-
);
|
|
191
|
-
|
|
192
|
-
/**
|
|
193
|
-
* Expose ref methods
|
|
194
|
-
*/
|
|
195
|
-
useImperativeHandle(
|
|
196
|
-
ref,
|
|
197
|
-
() => ({
|
|
198
|
-
goToPage: (index: number, animated = true) => {
|
|
199
|
-
const clampedIndex = Math.max(0, Math.min(index, data.length - 1));
|
|
200
|
-
const displayIndex = infinite ? getDisplayIndex(clampedIndex, offset) : clampedIndex;
|
|
201
|
-
|
|
202
|
-
flatListRef.current?.scrollToIndex({
|
|
203
|
-
index: displayIndex,
|
|
204
|
-
animated,
|
|
205
|
-
});
|
|
206
|
-
},
|
|
207
|
-
|
|
208
|
-
next: (animated = true) => {
|
|
209
|
-
const nextPage = currentPageRef.current + 1;
|
|
210
|
-
if (nextPage < displayData.length) {
|
|
211
|
-
flatListRef.current?.scrollToIndex({
|
|
212
|
-
index: nextPage,
|
|
213
|
-
animated,
|
|
214
|
-
});
|
|
215
|
-
}
|
|
216
|
-
},
|
|
217
|
-
|
|
218
|
-
prev: (animated = true) => {
|
|
219
|
-
const prevPage = currentPageRef.current - 1;
|
|
220
|
-
if (prevPage >= 0) {
|
|
221
|
-
flatListRef.current?.scrollToIndex({
|
|
222
|
-
index: prevPage,
|
|
223
|
-
animated,
|
|
224
|
-
});
|
|
225
|
-
}
|
|
226
|
-
},
|
|
227
|
-
|
|
228
|
-
getCurrentPage: () => currentPage,
|
|
229
|
-
}),
|
|
230
|
-
[currentPage, data.length, infinite, offset, displayData.length],
|
|
231
|
-
);
|
|
232
|
-
|
|
233
|
-
/**
|
|
234
|
-
* Initialize to initial page after container width is measured
|
|
235
|
-
*/
|
|
236
|
-
useEffect(() => {
|
|
237
|
-
if (containerWidth > 0) {
|
|
238
|
-
const timer = setTimeout(() => {
|
|
239
|
-
flatListRef.current?.scrollToIndex({
|
|
240
|
-
index: adjustedInitialPage,
|
|
241
|
-
animated: false,
|
|
242
|
-
});
|
|
243
|
-
}, 100);
|
|
244
|
-
|
|
245
|
-
return () => clearTimeout(timer);
|
|
246
|
-
}
|
|
247
|
-
}, [adjustedInitialPage, containerWidth]);
|
|
248
|
-
|
|
249
|
-
if (data.length === 0) {
|
|
250
|
-
return null;
|
|
251
|
-
}
|
|
252
|
-
|
|
253
|
-
return (
|
|
254
|
-
<View style={[styles.container, style]} onLayout={handleLayout}>
|
|
255
|
-
{containerWidth > 0 && (
|
|
256
|
-
<FlatList
|
|
257
|
-
ref={flatListRef}
|
|
258
|
-
data={displayData}
|
|
259
|
-
renderItem={renderFlatListItem}
|
|
260
|
-
keyExtractor={(item, index) => {
|
|
261
|
-
const realIndex = getRealIndex(index, offset, data.length);
|
|
262
|
-
return keyExtractor?.(item, realIndex) ?? `swiper-fl-${index}`;
|
|
263
|
-
}}
|
|
264
|
-
horizontal
|
|
265
|
-
pagingEnabled
|
|
266
|
-
showsHorizontalScrollIndicator={false}
|
|
267
|
-
onScrollBeginDrag={onPageScrollStateChanged ? handleScrollBeginDrag : undefined}
|
|
268
|
-
onScrollEndDrag={onScrollEndDrag || onPageScrollStateChanged ? handleScrollEndDrag : undefined}
|
|
269
|
-
onMomentumScrollEnd={handleMomentumScrollEnd}
|
|
270
|
-
getItemLayout={getItemLayout}
|
|
271
|
-
initialScrollIndex={adjustedInitialPage}
|
|
272
|
-
// Optimized for fast scrolling with paging
|
|
273
|
-
initialNumToRender={10}
|
|
274
|
-
windowSize={21}
|
|
275
|
-
maxToRenderPerBatch={10}
|
|
276
|
-
updateCellsBatchingPeriod={30}
|
|
277
|
-
removeClippedSubviews={false}
|
|
278
|
-
style={styles.flatList}
|
|
279
|
-
/>
|
|
280
|
-
)}
|
|
281
|
-
</View>
|
|
282
|
-
);
|
|
283
|
-
}
|
|
284
|
-
|
|
285
|
-
const styles = StyleSheet.create({
|
|
286
|
-
container: {
|
|
287
|
-
flex: 1,
|
|
288
|
-
},
|
|
289
|
-
flatList: {
|
|
290
|
-
flex: 1,
|
|
291
|
-
},
|
|
292
|
-
page: {
|
|
293
|
-
flex: 1,
|
|
294
|
-
},
|
|
295
|
-
});
|
|
296
|
-
|
|
297
|
-
export const SwiperFlatList = forwardRef(SwiperFlatListComponent) as <T>(
|
|
298
|
-
props: SwiperProps<T> & { ref?: React.Ref<SwiperRef> },
|
|
299
|
-
) => React.ReactElement;
|