react-native-system-ui 1.0.6 → 1.0.8
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/README.md +13 -13
- package/dist/cjs/components/calendar/Calendar.js +1 -1
- package/dist/cjs/components/cascader/Cascader.js +1 -1
- package/dist/cjs/components/cascader/useCascaderExtend.js +1 -1
- package/dist/cjs/components/dialog/Dialog.js +1 -1
- package/dist/cjs/components/dialog/imperative.js +1 -1
- package/dist/cjs/components/field/Field.js +1 -1
- package/dist/cjs/components/form/Form.js +1 -1
- package/dist/cjs/components/number-keyboard/NumberKeyboard.js +1 -1
- package/dist/cjs/components/overlay/Overlay.js +1 -1
- package/dist/cjs/components/picker/Picker.js +1 -1
- package/dist/cjs/components/popup/Popup.js +1 -1
- package/dist/cjs/components/portal/PortalHost.js +1 -1
- package/dist/cjs/components/selector/Selector.js +1 -1
- package/dist/cjs/components/slider/Slider.js +1 -1
- package/dist/cjs/components/stepper/Stepper.js +1 -1
- package/dist/cjs/components/swiper/Swiper.js +1 -1
- package/dist/cjs/components/tabs/Tabs.js +1 -1
- package/dist/cjs/components/toast/Toast.js +1 -1
- package/dist/cjs/hooks/calendar/utils.js +1 -0
- package/dist/cjs/hooks/cascader/utils.js +1 -0
- package/dist/cjs/hooks/dialog/ActionButton.js +1 -0
- package/dist/cjs/hooks/field/renderers.js +1 -0
- package/dist/cjs/hooks/form/utils.js +1 -0
- package/dist/cjs/hooks/number-keyboard/utils.js +1 -0
- package/dist/cjs/hooks/picker/normalize.js +1 -0
- package/dist/cjs/hooks/picker/value.js +1 -0
- package/dist/cjs/hooks/popup/utils.js +1 -0
- package/dist/cjs/hooks/slider/utils.js +1 -0
- package/dist/cjs/hooks/swiper/utils.js +1 -0
- package/dist/cjs/hooks/tabs/TabBarItem.js +1 -0
- package/dist/cjs/hooks/tabs/useTabsInternals.js +1 -0
- package/dist/cjs/utils/compare.js +1 -1
- package/dist/es/components/calendar/Calendar.js +1 -1
- package/dist/es/components/cascader/Cascader.js +1 -1
- package/dist/es/components/cascader/useCascaderExtend.js +1 -1
- package/dist/es/components/dialog/Dialog.js +1 -1
- package/dist/es/components/dialog/imperative.js +1 -1
- package/dist/es/components/field/Field.js +1 -1
- package/dist/es/components/form/Form.js +1 -1
- package/dist/es/components/number-keyboard/NumberKeyboard.js +1 -1
- package/dist/es/components/overlay/Overlay.js +1 -1
- package/dist/es/components/picker/Picker.js +1 -1
- package/dist/es/components/popup/Popup.js +1 -1
- package/dist/es/components/portal/PortalHost.js +1 -1
- package/dist/es/components/selector/Selector.js +1 -1
- package/dist/es/components/slider/Slider.js +1 -1
- package/dist/es/components/stepper/Stepper.js +1 -1
- package/dist/es/components/swiper/Swiper.js +1 -1
- package/dist/es/components/tabs/Tabs.js +1 -1
- package/dist/es/components/toast/Toast.js +1 -1
- package/dist/es/hooks/calendar/utils.js +1 -0
- package/dist/es/hooks/cascader/utils.js +1 -0
- package/dist/es/hooks/dialog/ActionButton.js +1 -0
- package/dist/es/hooks/field/renderers.js +1 -0
- package/dist/es/hooks/form/utils.js +1 -0
- package/dist/es/hooks/number-keyboard/utils.js +1 -0
- package/dist/es/hooks/picker/normalize.js +1 -0
- package/dist/es/hooks/picker/value.js +1 -0
- package/dist/es/hooks/popup/utils.js +1 -0
- package/dist/es/hooks/slider/utils.js +1 -0
- package/dist/es/hooks/swiper/utils.js +1 -0
- package/dist/es/hooks/tabs/TabBarItem.js +1 -0
- package/dist/es/hooks/tabs/useTabsInternals.js +1 -0
- package/dist/es/utils/compare.js +1 -1
- package/dist/types/components/action-sheet/ActionSheet.d.ts +1 -4
- package/dist/types/components/action-sheet/index.d.ts +1 -4
- package/dist/types/components/action-sheet/tokens.d.ts +1 -4
- package/dist/types/components/action-sheet/types.d.ts +1 -87
- package/dist/types/components/area/Area.d.ts +1 -4
- package/dist/types/components/area/index.d.ts +1 -3
- package/dist/types/components/area/tokens.d.ts +1 -7
- package/dist/types/components/area/types.d.ts +1 -20
- package/dist/types/components/avatar/Avatar.d.ts +1 -7
- package/dist/types/components/avatar/index.d.ts +1 -2
- package/dist/types/components/avatar/tokens.d.ts +1 -4
- package/dist/types/components/avatar/types.d.ts +1 -62
- package/dist/types/components/badge/Badge.d.ts +1 -4
- package/dist/types/components/badge/index.d.ts +1 -3
- package/dist/types/components/badge/tokens.d.ts +1 -2
- package/dist/types/components/badge/types.d.ts +1 -57
- package/dist/types/components/button/Button.d.ts +1 -5
- package/dist/types/components/button/ButtonContext.d.ts +1 -2
- package/dist/types/components/button/ButtonGroup.d.ts +1 -23
- package/dist/types/components/button/index.d.ts +1 -6
- package/dist/types/components/button/tokens.d.ts +1 -2
- package/dist/types/components/button/types.d.ts +1 -109
- package/dist/types/components/calendar/Calendar.d.ts +1 -4
- package/dist/types/components/calendar/index.d.ts +1 -3
- package/dist/types/components/calendar/tokens.d.ts +1 -4
- package/dist/types/components/calendar/types.d.ts +1 -111
- package/dist/types/components/cascader/Cascader.d.ts +1 -4
- package/dist/types/components/cascader/index.d.ts +1 -4
- package/dist/types/components/cascader/tokens.d.ts +1 -4
- package/dist/types/components/cascader/types.d.ts +1 -142
- package/dist/types/components/cascader/useCascaderExtend.d.ts +1 -12
- package/dist/types/components/cell/Cell.d.ts +1 -4
- package/dist/types/components/cell/CellContext.d.ts +1 -7
- package/dist/types/components/cell/CellGroup.d.ts +1 -3
- package/dist/types/components/cell/index.d.ts +1 -8
- package/dist/types/components/cell/tokens.d.ts +1 -4
- package/dist/types/components/cell/types.d.ts +1 -112
- package/dist/types/components/checkbox/Checkbox.d.ts +1 -5
- package/dist/types/components/checkbox/CheckboxContext.d.ts +1 -2
- package/dist/types/components/checkbox/CheckboxGroup.d.ts +1 -22
- package/dist/types/components/checkbox/index.d.ts +1 -7
- package/dist/types/components/checkbox/tokens.d.ts +1 -2
- package/dist/types/components/checkbox/types.d.ts +1 -99
- package/dist/types/components/circle/Circle.d.ts +1 -5
- package/dist/types/components/circle/index.d.ts +1 -3
- package/dist/types/components/circle/tokens.d.ts +1 -4
- package/dist/types/components/circle/types.d.ts +1 -51
- package/dist/types/components/collapse/Collapse.d.ts +1 -43
- package/dist/types/components/collapse/index.d.ts +1 -3
- package/dist/types/components/collapse/tokens.d.ts +1 -4
- package/dist/types/components/collapse/types.d.ts +1 -45
- package/dist/types/components/config-provider/ConfigProvider.d.ts +1 -3
- package/dist/types/components/config-provider/DirectionContext.d.ts +1 -3
- package/dist/types/components/config-provider/LocaleContext.d.ts +1 -3
- package/dist/types/components/config-provider/index.d.ts +1 -6
- package/dist/types/components/config-provider/locale/en-US.d.ts +1 -106
- package/dist/types/components/config-provider/locale/types.d.ts +1 -130
- package/dist/types/components/config-provider/locale/zh-CN.d.ts +1 -106
- package/dist/types/components/config-provider/tokens.d.ts +1 -3
- package/dist/types/components/config-provider/types.d.ts +1 -10
- package/dist/types/components/config-provider/useDirection.d.ts +1 -1
- package/dist/types/components/config-provider/useLocale.d.ts +1 -1
- package/dist/types/components/count-down/CountDown.d.ts +1 -4
- package/dist/types/components/count-down/index.d.ts +1 -4
- package/dist/types/components/count-down/tokens.d.ts +1 -4
- package/dist/types/components/count-down/types.d.ts +1 -29
- package/dist/types/components/datetime-picker/DatetimePicker.d.ts +1 -4
- package/dist/types/components/datetime-picker/index.d.ts +1 -3
- package/dist/types/components/datetime-picker/tokens.d.ts +1 -15
- package/dist/types/components/datetime-picker/types.d.ts +1 -38
- package/dist/types/components/dialog/Dialog.d.ts +1 -4
- package/dist/types/components/dialog/imperative.d.ts +1 -23
- package/dist/types/components/dialog/index.d.ts +1 -5
- package/dist/types/components/dialog/tokens.d.ts +1 -48
- package/dist/types/components/dialog/types.d.ts +1 -70
- package/dist/types/components/divider/Divider.d.ts +1 -3
- package/dist/types/components/divider/index.d.ts +1 -3
- package/dist/types/components/divider/tokens.d.ts +1 -4
- package/dist/types/components/divider/types.d.ts +1 -48
- package/dist/types/components/empty/Empty.d.ts +1 -3
- package/dist/types/components/empty/index.d.ts +1 -3
- package/dist/types/components/empty/tokens.d.ts +1 -4
- package/dist/types/components/empty/types.d.ts +1 -44
- package/dist/types/components/error-boundary/ErrorBoundary.d.ts +1 -6
- package/dist/types/components/error-boundary/index.d.ts +1 -2
- package/dist/types/components/error-boundary/types.d.ts +1 -18
- package/dist/types/components/field/Field.d.ts +1 -4
- package/dist/types/components/field/index.d.ts +1 -7
- package/dist/types/components/field/tokens.d.ts +1 -131
- package/dist/types/components/field/types.d.ts +1 -86
- package/dist/types/components/flex/Flex.d.ts +1 -9
- package/dist/types/components/flex/FlexContext.d.ts +1 -2
- package/dist/types/components/flex/FlexItem.d.ts +1 -3
- package/dist/types/components/flex/index.d.ts +1 -8
- package/dist/types/components/flex/tokens.d.ts +1 -2
- package/dist/types/components/flex/types.d.ts +1 -37
- package/dist/types/components/form/Form.d.ts +1 -26
- package/dist/types/components/form/FormItem.d.ts +1 -5
- package/dist/types/components/form/FormList.d.ts +1 -18
- package/dist/types/components/form/index.d.ts +1 -17
- package/dist/types/components/form/tokens.d.ts +1 -7
- package/dist/types/components/form/types.d.ts +1 -68
- package/dist/types/components/grid/Grid.d.ts +1 -19
- package/dist/types/components/grid/GridContext.d.ts +1 -2
- package/dist/types/components/grid/GridItem.d.ts +1 -3
- package/dist/types/components/grid/index.d.ts +1 -5
- package/dist/types/components/grid/tokens.d.ts +1 -4
- package/dist/types/components/grid/types.d.ts +1 -77
- package/dist/types/components/image/Image.d.ts +1 -5
- package/dist/types/components/image/index.d.ts +1 -4
- package/dist/types/components/image/tokens.d.ts +1 -2
- package/dist/types/components/image/types.d.ts +1 -53
- package/dist/types/components/image-preview/ImagePreview.d.ts +1 -4
- package/dist/types/components/image-preview/imperative.d.ts +1 -5
- package/dist/types/components/image-preview/index.d.ts +1 -6
- package/dist/types/components/image-preview/tokens.d.ts +1 -27
- package/dist/types/components/image-preview/types.d.ts +1 -55
- package/dist/types/components/index.d.ts +1 -213
- package/dist/types/components/input/Input.d.ts +1 -8
- package/dist/types/components/input/index.d.ts +1 -4
- package/dist/types/components/input/tokens.d.ts +1 -2
- package/dist/types/components/input/types.d.ts +1 -42
- package/dist/types/components/loading/Loading.d.ts +1 -3
- package/dist/types/components/loading/index.d.ts +1 -3
- package/dist/types/components/loading/tokens.d.ts +1 -4
- package/dist/types/components/loading/types.d.ts +1 -32
- package/dist/types/components/nav-bar/NavBar.d.ts +1 -4
- package/dist/types/components/nav-bar/index.d.ts +1 -4
- package/dist/types/components/nav-bar/tokens.d.ts +1 -4
- package/dist/types/components/nav-bar/types.d.ts +1 -67
- package/dist/types/components/notice-bar/NoticeBar.d.ts +1 -3
- package/dist/types/components/notice-bar/index.d.ts +1 -3
- package/dist/types/components/notice-bar/tokens.d.ts +1 -24
- package/dist/types/components/notice-bar/types.d.ts +1 -26
- package/dist/types/components/notify/Notify.d.ts +1 -6
- package/dist/types/components/notify/imperative.d.ts +1 -22
- package/dist/types/components/notify/index.d.ts +1 -15
- package/dist/types/components/notify/tokens.d.ts +1 -4
- package/dist/types/components/notify/types.d.ts +1 -64
- package/dist/types/components/number-keyboard/NumberKeyboard.d.ts +1 -4
- package/dist/types/components/number-keyboard/index.d.ts +1 -4
- package/dist/types/components/number-keyboard/tokens.d.ts +1 -42
- package/dist/types/components/number-keyboard/types.d.ts +1 -35
- package/dist/types/components/overlay/Overlay.d.ts +1 -5
- package/dist/types/components/overlay/index.d.ts +1 -5
- package/dist/types/components/overlay/tokens.d.ts +1 -6
- package/dist/types/components/overlay/types.d.ts +1 -13
- package/dist/types/components/password-input/PasswordInput.d.ts +1 -4
- package/dist/types/components/password-input/index.d.ts +1 -2
- package/dist/types/components/password-input/tokens.d.ts +1 -40
- package/dist/types/components/password-input/types.d.ts +1 -35
- package/dist/types/components/picker/Picker.d.ts +1 -32
- package/dist/types/components/picker/index.d.ts +1 -4
- package/dist/types/components/picker/tokens.d.ts +1 -39
- package/dist/types/components/picker/types.d.ts +1 -73
- package/dist/types/components/popup/Popup.d.ts +1 -5
- package/dist/types/components/popup/index.d.ts +1 -4
- package/dist/types/components/popup/tokens.d.ts +1 -48
- package/dist/types/components/popup/types.d.ts +1 -41
- package/dist/types/components/portal/Portal.d.ts +1 -14
- package/dist/types/components/portal/PortalContext.d.ts +1 -7
- package/dist/types/components/portal/PortalHost.d.ts +1 -11
- package/dist/types/components/portal/index.d.ts +1 -3
- package/dist/types/components/portal/tokens.d.ts +1 -3
- package/dist/types/components/portal/types.d.ts +1 -1
- package/dist/types/components/progress/Progress.d.ts +1 -8
- package/dist/types/components/progress/index.d.ts +1 -4
- package/dist/types/components/progress/tokens.d.ts +1 -4
- package/dist/types/components/progress/types.d.ts +1 -51
- package/dist/types/components/radio/Radio.d.ts +1 -3
- package/dist/types/components/radio/RadioContext.d.ts +1 -2
- package/dist/types/components/radio/RadioGroup.d.ts +1 -14
- package/dist/types/components/radio/index.d.ts +1 -7
- package/dist/types/components/radio/tokens.d.ts +1 -2
- package/dist/types/components/radio/types.d.ts +1 -95
- package/dist/types/components/safe-area-view/SafeAreaView.d.ts +1 -10
- package/dist/types/components/safe-area-view/index.d.ts +1 -2
- package/dist/types/components/safe-area-view/tokens.d.ts +1 -3
- package/dist/types/components/safe-area-view/types.d.ts +1 -1
- package/dist/types/components/search/Search.d.ts +1 -4
- package/dist/types/components/search/index.d.ts +1 -4
- package/dist/types/components/search/tokens.d.ts +1 -41
- package/dist/types/components/search/types.d.ts +1 -28
- package/dist/types/components/selector/Selector.d.ts +1 -7
- package/dist/types/components/selector/index.d.ts +1 -4
- package/dist/types/components/selector/tokens.d.ts +1 -2
- package/dist/types/components/selector/types.d.ts +1 -74
- package/dist/types/components/share-sheet/ShareSheet.d.ts +1 -4
- package/dist/types/components/share-sheet/index.d.ts +1 -4
- package/dist/types/components/share-sheet/tokens.d.ts +1 -40
- package/dist/types/components/share-sheet/types.d.ts +1 -26
- package/dist/types/components/sidebar/Sidebar.d.ts +1 -4
- package/dist/types/components/sidebar/SidebarContext.d.ts +1 -7
- package/dist/types/components/sidebar/SidebarItem.d.ts +1 -4
- package/dist/types/components/sidebar/index.d.ts +1 -8
- package/dist/types/components/sidebar/tokens.d.ts +1 -4
- package/dist/types/components/sidebar/types.d.ts +1 -64
- package/dist/types/components/skeleton/Skeleton.d.ts +1 -5
- package/dist/types/components/skeleton/index.d.ts +1 -5
- package/dist/types/components/skeleton/tokens.d.ts +1 -2
- package/dist/types/components/skeleton/types.d.ts +1 -45
- package/dist/types/components/slider/Slider.d.ts +1 -4
- package/dist/types/components/slider/index.d.ts +1 -3
- package/dist/types/components/slider/tokens.d.ts +1 -28
- package/dist/types/components/slider/types.d.ts +1 -38
- package/dist/types/components/space/Space.d.ts +1 -3
- package/dist/types/components/space/index.d.ts +1 -3
- package/dist/types/components/space/tokens.d.ts +1 -3
- package/dist/types/components/space/types.d.ts +1 -39
- package/dist/types/components/stepper/Stepper.d.ts +1 -4
- package/dist/types/components/stepper/index.d.ts +1 -4
- package/dist/types/components/stepper/tokens.d.ts +1 -46
- package/dist/types/components/stepper/types.d.ts +1 -46
- package/dist/types/components/swiper/Swiper.d.ts +1 -9
- package/dist/types/components/swiper/SwiperItem.d.ts +1 -1
- package/dist/types/components/swiper/SwiperPagIndicator.d.ts +1 -36
- package/dist/types/components/swiper/index.d.ts +1 -14
- package/dist/types/components/swiper/tokens.d.ts +1 -11
- package/dist/types/components/swiper/types.d.ts +1 -29
- package/dist/types/components/switch/Switch.d.ts +1 -7
- package/dist/types/components/switch/index.d.ts +1 -4
- package/dist/types/components/switch/tokens.d.ts +1 -2
- package/dist/types/components/switch/types.d.ts +1 -33
- package/dist/types/components/tabbar/Tabbar.d.ts +1 -4
- package/dist/types/components/tabbar/TabbarContext.d.ts +1 -13
- package/dist/types/components/tabbar/TabbarItem.d.ts +1 -4
- package/dist/types/components/tabbar/index.d.ts +1 -9
- package/dist/types/components/tabbar/tokens.d.ts +1 -28
- package/dist/types/components/tabbar/types.d.ts +1 -39
- package/dist/types/components/tabs/Tabs.d.ts +1 -8
- package/dist/types/components/tabs/index.d.ts +1 -10
- package/dist/types/components/tabs/tokens.d.ts +1 -96
- package/dist/types/components/tabs/types.d.ts +1 -64
- package/dist/types/components/tag/Tag.d.ts +1 -3
- package/dist/types/components/tag/index.d.ts +1 -3
- package/dist/types/components/tag/tokens.d.ts +1 -4
- package/dist/types/components/tag/types.d.ts +1 -69
- package/dist/types/components/theme.d.ts +1 -112
- package/dist/types/components/toast/Toast.d.ts +1 -33
- package/dist/types/components/toast/imperative.d.ts +1 -22
- package/dist/types/components/toast/index.d.ts +1 -15
- package/dist/types/components/toast/tokens.d.ts +1 -29
- package/dist/types/components/toast/types.d.ts +1 -1
- package/dist/types/components/typography/Typography.d.ts +1 -11
- package/dist/types/components/typography/index.d.ts +1 -3
- package/dist/types/components/typography/tokens.d.ts +1 -2
- package/dist/types/components/typography/types.d.ts +1 -66
- package/dist/types/components/water-mark/WaterMark.d.ts +1 -4
- package/dist/types/components/water-mark/index.d.ts +1 -5
- package/dist/types/components/water-mark/tokens.d.ts +1 -2
- package/dist/types/components/water-mark/types.d.ts +1 -58
- package/dist/types/design-system/Text.d.ts +1 -3
- package/dist/types/design-system/ThemeContext.d.ts +1 -14
- package/dist/types/design-system/ThemeProvider.d.ts +1 -14
- package/dist/types/design-system/createComponentTokensHook.d.ts +1 -4
- package/dist/types/design-system/index.d.ts +1 -11
- package/dist/types/design-system/mergeTokensOverride.d.ts +1 -2
- package/dist/types/design-system/presets.d.ts +1 -8
- package/dist/types/design-system/tokens.d.ts +1 -74
- package/dist/types/design-system/useTheme.d.ts +1 -1
- package/dist/types/hooks/animation/index.d.ts +1 -3
- package/dist/types/hooks/animation/useAnimatedTransition.d.ts +1 -13
- package/dist/types/hooks/animation/useReducedMotion.d.ts +1 -3
- package/dist/types/hooks/aria/index.d.ts +1 -4
- package/dist/types/hooks/aria/useAriaListBox.d.ts +1 -14
- package/dist/types/hooks/aria/useAriaOverlay.d.ts +1 -14
- package/dist/types/hooks/aria/useAriaPress.d.ts +1 -19
- package/dist/types/hooks/aria/useAriaToggle.d.ts +1 -12
- package/dist/types/hooks/calendar/utils.d.ts +1 -0
- package/dist/types/hooks/cascader/utils.d.ts +1 -0
- package/dist/types/hooks/dialog/ActionButton.d.ts +1 -0
- package/dist/types/hooks/field/renderers.d.ts +1 -0
- package/dist/types/hooks/form/utils.d.ts +1 -0
- package/dist/types/hooks/gesture/index.d.ts +1 -1
- package/dist/types/hooks/gesture/useGestureScroll.d.ts +1 -33
- package/dist/types/hooks/index.d.ts +1 -9
- package/dist/types/hooks/number-keyboard/utils.d.ts +1 -0
- package/dist/types/hooks/overlay/OverlayStackStore.d.ts +1 -39
- package/dist/types/hooks/overlay/index.d.ts +1 -2
- package/dist/types/hooks/overlay/useOverlayStack.d.ts +1 -10
- package/dist/types/hooks/picker/normalize.d.ts +1 -0
- package/dist/types/hooks/picker/value.d.ts +1 -0
- package/dist/types/hooks/popup/utils.d.ts +1 -0
- package/dist/types/hooks/slider/utils.d.ts +1 -0
- package/dist/types/hooks/swiper/utils.d.ts +1 -0
- package/dist/types/hooks/tabs/TabBarItem.d.ts +1 -0
- package/dist/types/hooks/tabs/useTabsInternals.d.ts +1 -0
- package/dist/types/hooks/useControllableValue.d.ts +1 -9
- package/dist/types/hooks/useCountDown.d.ts +1 -23
- package/dist/types/hooks/useHairline.d.ts +1 -10
- package/dist/types/hooks/useSafeAreaPadding.d.ts +1 -13
- package/dist/types/index.d.ts +1 -9
- package/dist/types/nativewind.d.ts +1 -4
- package/dist/types/platform/animation.d.ts +1 -9
- package/dist/types/platform/history.d.ts +1 -1
- package/dist/types/platform/index.d.ts +1 -5
- package/dist/types/platform/measure.d.ts +1 -7
- package/dist/types/platform/runtime.d.ts +1 -3
- package/dist/types/platform/scrollLock.d.ts +1 -2
- package/dist/types/types.d.ts +1 -4
- package/dist/types/utils/array.d.ts +1 -1
- package/dist/types/utils/color.d.ts +1 -3
- package/dist/types/utils/compare.d.ts +1 -2
- package/dist/types/utils/createPlatformShadow.d.ts +1 -11
- package/dist/types/utils/date.d.ts +1 -13
- package/dist/types/utils/deepMerge.d.ts +1 -3
- package/dist/types/utils/hairline.d.ts +1 -15
- package/dist/types/utils/index.d.ts +1 -13
- package/dist/types/utils/number.d.ts +1 -11
- package/dist/types/utils/promise.d.ts +1 -1
- package/dist/types/utils/render.d.ts +1 -5
- package/dist/types/utils/rtl.d.ts +1 -5
- package/dist/types/utils/string.d.ts +1 -3
- package/dist/types/utils/validate.d.ts +1 -13
- package/package.json +38 -45
|
@@ -1 +1 @@
|
|
|
1
|
-
function _extends(){return _extends=Object.assign?Object.assign.bind():function(e){for(var t=1;t<arguments.length;t++){var a=arguments[t];for(var n in a)({}).hasOwnProperty.call(a,n)&&(e[n]=a[n])}return e},_extends.apply(null,arguments)}import React,{useCallback,useEffect,useMemo,useRef,useState}from"react";import{Pressable,Text,View}from"react-native";import{useControllableValue}from"../../hooks";import{renderTextOrNode}from"../../utils";import{isRenderable}from"../../utils/validate";import Popup from"../popup";import{useLocale}from"../config-provider/useLocale";import{useCalendarTokens}from"./tokens";
|
|
1
|
+
function _extends(){return _extends=Object.assign?Object.assign.bind():function(e){for(var t=1;t<arguments.length;t++){var a=arguments[t];for(var n in a)({}).hasOwnProperty.call(a,n)&&(e[n]=a[n])}return e},_extends.apply(null,arguments)}import React,{useCallback,useEffect,useMemo,useRef,useState}from"react";import{Pressable,Text,View}from"react-native";import{useControllableValue}from"../../hooks";import{renderTextOrNode}from"../../utils";import{isRenderable}from"../../utils/validate";import Popup from"../popup";import{useLocale}from"../config-provider/useLocale";import{useCalendarTokens}from"./tokens";import{buildMonth,clampMonth,daysBetween,DEFAULT_MAX,DEFAULT_MIN,formatMonth,getCalendarDayTestId,isSameDay,isSameMonth,mapValue,normalizeValue,reorderWeekdays,startOfDay,startOfMonth,toArrayValue}from"../../hooks/calendar/utils";const CalendarImpl=e=>{const{tokensOverride:t,value:a,defaultValue:n,minDate:o=DEFAULT_MIN,maxDate:l=DEFAULT_MAX,type:r,title:s,showSubtitle:i,showHeader:u,showConfirm:c,confirmText:d,weekStartsOn:p,weekdays:m,formatMonthTitle:g,allowSameDay:f,maxRange:y,onOverRange:b,poppable:h,visible:O,defaultVisible:C,onVisibleChange:k,closeOnClickOverlay:T,closeOnConfirm:V,popupPlacement:w,popupRound:R,popupProps:v,onOpen:S,onOpened:M,onClose:x,onClosed:D,color:P,onConfirm:z,onSelect:E,style:B,...I}=e,A=useLocale(),L=A?.vanCalendar,N=useCalendarTokens(t),H=s??L?.title??N.defaults.title,_=i??N.defaults.showSubtitle,W=u??N.defaults.showHeader,F=d??L?.confirm??N.defaults.confirmText,$=p??N.defaults.weekStartsOn,U=f??N.defaults.allowSameDay,Y=h??N.defaults.poppable,j=T??N.defaults.closeOnClickOverlay,X=V??N.defaults.closeOnConfirm,G=w??N.defaults.popupPlacement,q=R??N.defaults.popupRound,J=r??N.defaults.type,K=c??N.defaults.showConfirm[J],[Q,Z]=useControllableValue(e,{defaultValue:!1,valuePropName:"visible",defaultValuePropName:"defaultVisible",trigger:"onVisibleChange"}),{onClose:ee,onClosed:te,onOpen:ae,onOpened:ne,closeOnOverlayPress:oe,overlay:le,...re}=v??{},se=useRef({onConfirm:z,onOverRange:b,popupOnOpen:ae,onOpen:S,popupOnOpened:ne,onOpened:M,popupOnClose:ee,onClose:x,popupOnClosed:te,onClosed:D});se.current.onConfirm=z,se.current.onOverRange=b,se.current.popupOnOpen=ae,se.current.onOpen=S,se.current.popupOnOpened=ne,se.current.onOpened=M,se.current.popupOnClose=ee,se.current.onClose=x,se.current.popupOnClosed=te,se.current.onClosed=D;const ie=useCallback(()=>{Y&&Z(!1)},[Y,Z]),ue=useCallback(()=>{se.current.popupOnOpen?.(),se.current.onOpen?.()},[]),ce=useCallback(()=>{se.current.popupOnOpened?.(),se.current.onOpened?.()},[]),de=useCallback(()=>{ie(),se.current.popupOnClose?.(),se.current.onClose?.()},[ie]),pe=useCallback(()=>{se.current.popupOnClosed?.(),se.current.onClosed?.()},[]),me=oe??j,ge=le??!0,[fe,ye]=useControllableValue(e,{defaultValue:null,valuePropName:"value",defaultValuePropName:"defaultValue",trigger:"onSelect"}),be=normalizeValue(toArrayValue(fe),J),[he,Oe]=useState(()=>clampMonth(be.length?be[0]:new Date,o,l)),Ce=be.length?be[0].getTime():null,ke=o.getTime(),Te=l.getTime();useEffect(()=>{if(!be.length)return;const e=clampMonth(be[0],o,l);Oe(t=>isSameMonth(e,t)?t:e)},[Ce,ke,Te]);const Ve=useMemo(()=>buildMonth(he,$),[he,$]),we=useMemo(()=>Ve.map(e=>e?{day:e,key:e.toISOString(),timeValue:startOfDay(e).getTime(),dateValue:e.getDate()}:null),[Ve]),Re=startOfDay(o).getTime(),ve=startOfDay(l).getTime(),Se=m??L?.weekdays??N.defaults.weekdays,Me=useMemo(()=>reorderWeekdays(Se,$,N.defaults.weekdays),[Se,N.defaults.weekdays,$]),xe=useMemo(()=>g?g(he):L?.monthTitle?L.monthTitle(he.getFullYear(),he.getMonth()+1):formatMonth(he),[he,g,L]),De=startOfMonth(o),Pe=startOfMonth(l),ze=he.getTime()>De.getTime(),Ee=he.getTime()<Pe.getTime(),Be=useCallback(e=>Oe(t=>clampMonth(new Date(t.getFullYear(),t.getMonth()+e,1),o,l)),[o,l]),Ie=useCallback(()=>Be(-1),[Be]),Ae=useCallback(()=>Be(1),[Be]),Le="range"===J?be.length<2:0===be.length,Ne=N.spacing.column/2,He=useCallback(e=>{K||"range"===J&&e.length<2||"multiple"===J&&0===e.length||e.length&&(se.current.onConfirm?.(mapValue(e,J)),Y&&X&&ie())},[K,J,Y,X,ie]),_e=useCallback(()=>{K&&Le||(se.current.onConfirm?.(mapValue(be,J)),Y&&X&&ie())},[K,Le,be,J,Y,X,ie]),We=useCallback(e=>{if("range"===J&&2===e.length){const[t,a]=e;if(!U&&isSameDay(t,a))return!1;if(y&&daysBetween(t,a)+1>y)return se.current.onOverRange?.(y),!1}return!("multiple"===J&&y&&e.length>y)||(se.current.onOverRange?.(y),!1)},[J,U,y]),Fe=useRef(void 0),$e=useCallback(e=>{const t=startOfDay(e).getTime();if(t<Re||t>ve)return;let a=[];const n=be;switch(J){case"single":default:a=[e];break;case"multiple":a=n.find(t=>isSameDay(t,e))?n.filter(t=>!isSameDay(t,e)):[...n,e];break;case"range":if(n.length<1||n.length>1)a=[e];else{const t=n[0];a=isSameDay(t,e)?U?[t,e]:[e]:[t,e].sort((e,t)=>e.getTime()-t.getTime())}}const o=normalizeValue(a,J);We(o)&&(ye(mapValue(o,J)),K||He(o))},[be,J,Re,ve,U,We,ye,K,He]);Fe.current=$e;const Ue=useCallback(e=>Fe.current?.(e),[]),Ye=useMemo(()=>be.map(e=>startOfDay(e).getTime()),[be]),je=useMemo(()=>new Set(Ye),[Ye]),Xe="range"===J&&2===Ye.length?[Ye[0],Ye[1]]:null,Ge=useCallback((e,t)=>{if(!e)return React.createElement(View,{key:`p-${t}`,style:[N.layout.dayPlaceholder,{paddingVertical:N.spacing.dayPaddingVertical,paddingHorizontal:Ne}]});const{day:a,key:n,timeValue:o,dateValue:l}=e,r=o<Re||o>ve,s=je.has(o),i="range"===J&&Xe&&o>Xe[0]&&o<Xe[1],u=[N.layout.dayText,{borderRadius:N.radii.day,color:N.colors.text,minWidth:N.sizing.dayMinWidth}];r?u.push({color:N.colors.disabled}):i?u.push({backgroundColor:N.colors.rangeBackground}):s&&u.push({backgroundColor:P??N.colors.selectedBackground,color:N.colors.selectedText});const c=`${a.getFullYear()}-${String(a.getMonth()+1).padStart(2,"0")}-${String(a.getDate()).padStart(2,"0")}${s?", selected":""}${r?", disabled":""}`;return React.createElement(Pressable,{key:n,accessibilityRole:"button",accessibilityLabel:c,accessibilityState:{selected:s,disabled:r},style:[N.layout.dayButton,{paddingVertical:N.spacing.dayPaddingVertical,paddingHorizontal:Ne}],disabled:r,onPress:()=>Ue(a),testID:getCalendarDayTestId(a)},React.createElement(Text,{style:u},l))},[je,J,Xe,Re,ve,N,P,Ue,Ne]),qe=React.createElement(View,_extends({style:[{backgroundColor:N.colors.background,padding:N.spacing.containerPadding,borderRadius:N.radii.container},B]},I),W?React.createElement(View,{style:[N.layout.header,{marginBottom:N.spacing.headerMarginBottom}]},React.createElement(Pressable,{testID:"calendar-nav-prev",accessibilityRole:"button",accessibilityLabel:"previous month",onPress:Ie,disabled:!ze},React.createElement(Text,{style:[N.layout.navText,{fontSize:N.sizing.navButtonSize,paddingHorizontal:N.spacing.navPaddingHorizontal},!ze&&{opacity:.3}]},"<")),React.createElement(View,{style:N.layout.headerCenter},isRenderable(H)?renderTextOrNode(H,[N.layout.headerTitle,{color:N.colors.text,fontSize:N.typography.headerTitleSize,fontWeight:N.typography.headerTitleWeight}]):null,_?renderTextOrNode(xe,[N.layout.headerSubtitle,{color:N.colors.headerSubtitle,fontSize:N.typography.headerSubtitleSize}]):null),React.createElement(Pressable,{testID:"calendar-nav-next",accessibilityRole:"button",accessibilityLabel:"next month",onPress:Ae,disabled:!Ee},React.createElement(Text,{style:[N.layout.navText,{fontSize:N.sizing.navButtonSize,paddingHorizontal:N.spacing.navPaddingHorizontal},!Ee&&{opacity:.3}]},">"))):null,React.createElement(View,{style:[N.layout.weekRow,{marginBottom:N.spacing.weekRowMarginBottom}]},Me.map((e,t)=>React.createElement(View,{key:`w-${t}`,style:[N.layout.weekLabelItem,{paddingHorizontal:Ne}]},renderTextOrNode(e,[N.layout.weekLabel,{color:N.colors.text}])))),React.createElement(View,{style:[N.layout.days,{rowGap:N.spacing.row}]},we.map((e,t)=>Ge(e,t))),K?React.createElement(Pressable,{style:[N.layout.confirmButton,{backgroundColor:P??N.colors.selectedBackground,opacity:Le?.5:1,marginTop:N.spacing.confirmMarginTop,paddingVertical:N.spacing.confirmPaddingVertical,borderRadius:N.radii.confirmButton}],onPress:_e,disabled:Le},renderTextOrNode(F,[N.layout.confirmText,{color:N.colors.confirmText,fontWeight:N.typography.confirmTextWeight}])):null);return Y?React.createElement(Popup,_extends({visible:Q,placement:G,round:q,closeOnOverlayPress:me,overlay:ge,safeAreaInsetTop:null!=re?.safeAreaInsetTop?re.safeAreaInsetTop:W,safeAreaInsetBottom:null!=re?.safeAreaInsetBottom?re.safeAreaInsetBottom:"bottom"===G,onOpen:ue,onOpened:ce,onClose:de,onClosed:pe},re),qe):qe},Calendar=React.memo(CalendarImpl);Calendar.displayName="Calendar";export default Calendar;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
function _extends(){return _extends=Object.assign?Object.assign.bind():function(e){for(var t=1;t<arguments.length;t++){var o=arguments[t];for(var a in o)({}).hasOwnProperty.call(o,a)&&(e[a]=o[a])}return e},_extends.apply(null,arguments)}import React,{useCallback,useEffect,useRef,useState}from"react";import{FlatList,Pressable,Text,View,useWindowDimensions}from"react-native";import{Checked,Cross}from"react-native-system-icon";import{useControllableValue}from"../../hooks";import{shallowEqualArray,renderTextOrNode}from"../../utils";import{isFunction,isNumber,isText}from"../../utils/validate";import Popup from"../popup";import Tabs from"../tabs";import{useLocale}from"../config-provider/useLocale";import{useCascaderTokens}from"./tokens";import{useCascaderExtend}from"./useCascaderExtend";
|
|
1
|
+
function _extends(){return _extends=Object.assign?Object.assign.bind():function(e){for(var t=1;t<arguments.length;t++){var o=arguments[t];for(var a in o)({}).hasOwnProperty.call(o,a)&&(e[a]=o[a])}return e},_extends.apply(null,arguments)}import React,{useCallback,useEffect,useRef,useState}from"react";import{FlatList,Pressable,Text,View,useWindowDimensions}from"react-native";import{Checked,Cross}from"react-native-system-icon";import{useControllableValue}from"../../hooks";import{shallowEqualArray,renderTextOrNode}from"../../utils";import{isFunction,isNumber,isText}from"../../utils/validate";import Popup from"../popup";import Tabs from"../tabs";import{useLocale}from"../config-provider/useLocale";import{useCascaderTokens}from"./tokens";import{useCascaderExtend}from"./useCascaderExtend";import{getFieldKeys,resolveRows}from"../../hooks/cascader/utils";const CascaderImpl=e=>{const{tokensOverride:t,options:o=[],title:a,placeholder:n,activeColor:l,fieldNames:i,optionRender:r,showHeader:s,closeable:c,closeIcon:d,onChange:u,onClose:p,onFinish:g,onClickTab:y,onTabChange:m,swipeable:h,style:b,testID:f,children:C,poppable:v,visible:R,defaultVisible:x,onVisibleChange:k,closeOnClickOverlay:T,closeOnFinish:E,popupPlacement:S,popupRound:w,popupProps:P,loadingText:z,...I}=e,O=useLocale(),V=useCascaderTokens(t),L=a??O?.vanCascader?.placeholder??V.defaults.title,N=n??O?.vanCascader?.placeholder??V.defaults.placeholder,H=l??V.colors.tabActive,A=s??V.defaults.showHeader,K=h??V.defaults.swipeable,F=v??V.defaults.poppable,W=T??V.defaults.closeOnClickOverlay,B=E??V.defaults.closeOnFinish,D=S??V.defaults.popupPlacement,M=w??V.defaults.popupRound,_=z??V.defaults.loadingText,[j,q]=useControllableValue(e,{defaultValue:[],trigger:"onChange"}),$=getFieldKeys(i),G=Array.isArray(j)?j:[],[J,Q]=useState(G),U=c??V.defaults.closeable,[X,Y]=useControllableValue(e,{defaultValue:!1,valuePropName:"visible",defaultValuePropName:"defaultVisible",trigger:"onVisibleChange"}),Z=F?J:G,{tabs:ee,items:te,depth:oe}=useCascaderExtend(o,$,Z),{width:ae}=useWindowDimensions(),[ne,le]=useState(0),ie=useCallback(e=>{const t=e.nativeEvent.layout.width;t&&le(e=>e===t?e:t)},[]),re=resolveRows(o,$,G),[se,ce]=useState(0);useEffect(()=>{const e=ee.length;let t=Math.max(e-1,0);t>=oe&&(t=Math.max(oe-1,0)),ce(e=>e===t?e:t)},[ee.length,oe]),useEffect(()=>{F&&X||Q(e=>shallowEqualArray(e,G)?e:G)},[G,F,X]);const de=useCallback(()=>{F&&!X&&(Q(e=>shallowEqualArray(e,G)?e:G),Y(!0))},[G,F,X,Y]),ue=useRef(p),pe=useRef(u),ge=useRef(g),ye=useRef(y),me=useRef(m);ue.current=p,pe.current=u,ge.current=g,ye.current=y,me.current=m;const he=useCallback(e=>{F&&X&&(Y(!1),e&&ue.current?.())},[F,X,Y]),be=useCallback(()=>{F&&(X?he(!0):de())},[he,de,F,X]),fe=isFunction(C),Ce=fe?C:null,ve=useCallback(e=>{const t=isNumber(e.index)?e.index:Number(e.name);if(Number.isNaN(t))return;const o=te[t]?.[$.textKey];ye.current?.(t,isText(o)?String(o):N)},[te,$.textKey,N]),Re=useCallback((e,t)=>{const o=isNumber(t)?t:Number(e);Number.isNaN(o)||(ce(o),me.current?.(o))},[]),xe=useCallback((e,t)=>{if(e.disabled)return;const a=e[$.valueKey];if(null==a)return;const n=[...(F?J:G).slice(0,t),a],l=resolveRows(o,$,n),i=e[$.childrenKey]??[],r=Object.prototype.hasOwnProperty.call(e,$.childrenKey)&&!i.length,s=n.length>=oe,c=!i.length&&!r;F?(Q(n),pe.current?.(n,l)):q(n,l),(c||s)&&(F&&(q(n,l),B&&he(!0)),ge.current?.(n,l))},[G,B,he,oe,$,o,J,F,q]),ke=useCallback(e=>{if(e<=0)return N;const t=te[e-1];if(!t)return N;if(!Object.prototype.hasOwnProperty.call(t,$.childrenKey))return N;return 0===(t[$.childrenKey]??[]).length&&Z.length===e?_:N},[Z.length,te,$.childrenKey,_,N]),Te=F||fe?null:C,Ee=React.createElement(View,_extends({testID:f,style:[V.layout.container,{backgroundColor:V.colors.background},b]},I),A?React.createElement(View,{style:[V.layout.header,{height:V.sizing.headerHeight,paddingHorizontal:V.spacing.headerPaddingHorizontal}]},renderTextOrNode(L,[V.layout.title,{color:V.colors.headerText,fontSize:V.typography.titleSize,fontWeight:V.typography.titleWeight}]),U?React.createElement(Pressable,{hitSlop:8,onPress:()=>{F?he(!0):ue.current?.()},style:[V.layout.closeButton,{marginLeft:V.spacing.closeButtonMarginLeft}],accessibilityRole:"button",accessibilityLabel:O?.vanCascader?.close??"Close"},d??(e=>React.createElement(Cross,{size:V.sizing.closeIconSize,fill:e.pressed?V.colors.closeIconActive:V.colors.closeIcon,color:e.pressed?V.colors.closeIconActive:V.colors.closeIcon}))):null):null,(()=>{if(!ee.length)return React.createElement(CascaderOptionList,{optionList:[],tabIndex:0,selectedValue:Z[0],activeColor:H,keys:$,optionRender:r,onSelect:xe,tokens:V,emptyText:ke(0)});const e=!!K,t=ne||ae||void 0,o={height:V.sizing.headerHeight,paddingHorizontal:V.spacing.tabNavPaddingHorizontal,paddingVertical:V.spacing.tabNavPaddingVertical,backgroundColor:V.colors.background};return React.createElement(View,{style:V.layout.tabsWrapper,onLayout:ie},React.createElement(Tabs,{style:t?{width:t}:void 0,active:se,onChange:Re,onClickTab:ve,align:"center",swipeable:e,swipeThreshold:0,scrollable:!0,animated:!0,duration:300,color:H,lineHeight:V.sizing.indicatorHeight,titleActiveColor:V.colors.tabText,titleInactiveColor:V.colors.tabInactive,tabBarStyle:o,tabStyle:[V.layout.tabsItem,{paddingHorizontal:V.spacing.tabPaddingHorizontal}],titleStyle:[V.layout.tabsTitle,{fontSize:V.typography.tabsTitleSize}],contentStyle:e?void 0:V.layout.tabsContentStatic},ee.map((e,t)=>{const o=te[t],a=isText(o?.[$.textKey])?String(o?.[$.textKey]):"",n=!a;return React.createElement(Tabs.TabPane,{key:t,name:t,title:e=>React.createElement(Text,{style:[V.layout.tabTitleNode,{color:n?V.colors.tabInactive:V.colors.tabText,fontWeight:n?V.typography.tabTitlePlaceholderWeight:V.typography.tabTitleWeight}]},n?N:a)},React.createElement(CascaderOptionList,{optionList:e,tabIndex:t,selectedValue:Z[t],activeColor:H,keys:$,optionRender:r,onSelect:xe,tokens:V,emptyText:ke(t)}))})))})(),Te?React.createElement(View,{style:[V.layout.inlineChildren,{paddingVertical:V.spacing.inlineChildrenPaddingVertical,paddingHorizontal:V.spacing.headerPaddingHorizontal}]},Te):null);if(!F)return Ee;const{closeOnOverlayPress:Se,overlay:we,onOpen:Pe,onOpened:ze,onClose:Ie,onClosed:Oe,...Ve}=P??{},Le=useRef(Ie);Le.current=Ie;const Ne=useCallback(()=>{Le.current?.(),he(!0)},[he]),He={open:de,close:()=>he(!0),toggle:be},Ae=useCallback(e=>{if(!React.isValidElement(e))return e;const t=e.props,o=()=>{t.onPress?.(),t.onClick?.(),de()};return React.cloneElement(e,{onPress:o,onClick:o})},[de])(Ce?Ce(G,re,He):fe?null:C||null);return React.createElement(React.Fragment,null,Ae,React.createElement(Popup,_extends({visible:X,placement:D,round:M,closeOnOverlayPress:Se??W,overlay:we??!0,safeAreaInsetTop:null!=Ve?.safeAreaInsetTop?Ve.safeAreaInsetTop:A&&U,safeAreaInsetBottom:null!=Ve?.safeAreaInsetBottom?Ve.safeAreaInsetBottom:"bottom"===D,onOpen:Pe,onOpened:ze,onClose:Ne,onClosed:Oe},Ve,{style:{paddingLeft:0,paddingRight:0}}),Ee))},CascaderOptionItem=React.memo(({option:e,tabIndex:t,selected:o,activeColor:a,keys:n,optionRender:l,onSelect:i,tokens:r})=>{const s=e[n.valueKey],c=e[n.textKey],d=!!e.disabled,u=e.color??r.colors.optionText,p=d?r.colors.optionDisabled:o?e.color??a:u,g=[r.layout.optionText,{color:p,fontSize:r.typography.optionTextSize},o?{fontWeight:r.typography.optionTextActiveWeight}:null],y=l?l({option:e,selected:o}):renderTextOrNode(c,g),m=isText(y)?renderTextOrNode(y,g):y;return React.createElement(Pressable,{testID:`cascader-option-${t}-${String(s)}`,style:({pressed:e})=>[r.layout.option,{minHeight:r.sizing.optionMinHeight,paddingVertical:r.spacing.optionPaddingVertical,paddingHorizontal:r.spacing.optionPaddingHorizontal},e&&!d&&{backgroundColor:r.colors.optionActiveBackground}],onPress:()=>i(e,t),disabled:d},React.createElement(View,{style:r.layout.optionContent},React.createElement(View,{style:[r.layout.optionLabel,{marginRight:r.spacing.optionLabelMarginRight}]},m),o?React.createElement(Checked,{size:r.sizing.selectedIconSize,fill:a,color:a}):null))}),CascaderOptionList=React.memo(({optionList:e,tabIndex:t,selectedValue:o,activeColor:a,keys:n,optionRender:l,onSelect:i,tokens:r,emptyText:s})=>{const c=useCallback(({item:e})=>React.createElement(CascaderOptionItem,{option:e,tabIndex:t,selected:o===e[n.valueKey],activeColor:a,keys:n,optionRender:l,onSelect:i,tokens:r}),[a,n,i,l,o,t,r]),d=useCallback(e=>String(e[n.valueKey]),[n.valueKey]);return e.length?React.createElement(FlatList,{data:e,style:[r.layout.optionList,{height:r.sizing.optionListHeight}],contentContainerStyle:{paddingTop:r.spacing.optionListPaddingTop,paddingBottom:r.spacing.optionListPaddingBottom},showsVerticalScrollIndicator:!1,renderItem:c,keyExtractor:d,removeClippedSubviews:!0,initialNumToRender:20,windowSize:5}):React.createElement(View,{style:[r.layout.optionList,{height:r.sizing.optionListHeight}]},React.createElement(Text,{style:[r.layout.empty,{color:r.colors.placeholder,paddingVertical:r.spacing.emptyPaddingVertical,fontSize:r.typography.emptyTextSize}]},s))}),Cascader=React.memo(CascaderImpl);export default Cascader;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
const getDepth=(e,t)=>{let n=1;const r=(e,
|
|
1
|
+
const getDepth=(e,t)=>{let n=1;const r=(e,l)=>{e?.length&&(l>n&&(n=l),e.forEach(e=>{Object.prototype.hasOwnProperty.call(e,t)&&l+1>n&&(n=l+1);const c=e[t];c?.length&&r(c,l+1)}))};return r(e,1),n};export const useCascaderExtend=(e=[],t,n)=>{const r=getDepth(e,t.childrenKey),l=[e],c=[];if(n?.length){let r=e;for(let e=0;e<n.length;e+=1){const o=n[e];if(null==o||!r?.length)break;const h=r.find(e=>e[t.valueKey]===o);if(!h)break;c.push(h);if(!Object.prototype.hasOwnProperty.call(h,t.childrenKey))break;const s=h[t.childrenKey]??[];l.push(s),r=s}}return{tabs:l,items:c,depth:r}};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
function _extends(){return _extends=Object.assign?Object.assign.bind():function(e){for(var
|
|
1
|
+
function _extends(){return _extends=Object.assign?Object.assign.bind():function(e){for(var o=1;o<arguments.length;o++){var t=arguments[o];for(var n in t)({}).hasOwnProperty.call(t,n)&&(e[n]=t[n])}return e},_extends.apply(null,arguments)}import React,{useCallback,useEffect,useMemo,useRef}from"react";import{Animated,Easing,Platform,Pressable,StyleSheet,View}from"react-native";import{useLocale}from"../config-provider/useLocale";import{nativeDriverEnabled}from"../../platform";import{useReducedMotion}from"../../hooks/animation";import{createHairlineView}from"../../utils/hairline";import{isPromiseLike}from"../../utils/promise";import{isNumber,isValidNode}from"../../utils/validate";import{renderTextOrNode}from"../../utils";import{Close}from"react-native-system-icon";import Button from"../button";import Popup from"../popup";import{useDialogTokens}from"./tokens";import{ActionButton}from"../../hooks/dialog/ActionButton";const DialogImpl=e=>{const o=useLocale(),{visible:t,title:n,message:i,messageAlign:r="center",theme:a="default",width:l,closeable:s=!1,closeIcon:c,overlay:d=!0,overlayStyle:g,overlayTestID:p="dialog-overlay",closeOnBackPress:m=!1,closeOnPopstate:u=!0,closeOnOverlayPress:f=!1,closeOnClickOverlay:y=!1,onClickOverlay:b,onClickCloseIcon:h,beforeClose:C,showCancelButton:v=!1,showConfirmButton:P=!0,cancelButtonText:k,cancelButtonColor:x,cancelProps:w,confirmButtonText:B,confirmButtonColor:R,confirmProps:E,footer:O,contentStyle:z,titleStyle:I,messageStyle:H,tokensOverride:V,style:T,children:D,onCancel:L,onConfirm:A,onClose:F,onClosed:N,...W}=e,M=useDialogTokens(V),q=useReducedMotion(),G=isValidNode(n),_=isValidNode(D),j=isValidNode(i)||_,J=v||P,K="round-button"===a,Q=w?.loading,U=E?.loading,X=k??o.cancel,Y=B??o.confirm,Z=useRef({seq:0,beforeClose:C,onClose:F,onCancel:L,onConfirm:A,onClickCloseIcon:h,cancelLoad:Q,confirmLoad:U});Object.assign(Z.current,{beforeClose:C,onClose:F,onCancel:L,onConfirm:A,onClickCloseIcon:h,cancelLoad:Q,confirmLoad:U});const $=useCallback((e,o)=>{const t=Z.current;t.seq+=1;const n=t.seq,i=t.beforeClose;if(!i)return void o?.();let r;try{r=i(e)}catch{return}!1!==r&&(isPromiseLike(r)?r.then(e=>{!1!==e&&Z.current.seq===n&&o?.()}).catch(()=>{}):o?.())},[]),ee=useCallback(()=>{Z.current.onClickCloseIcon?.(),$("close",()=>Z.current.onClose?.())},[$]),oe=useCallback(()=>{Z.current.cancelLoad||$("cancel",()=>Z.current.onCancel?.())},[$]),te=useCallback(()=>{Z.current.confirmLoad||$("confirm",()=>Z.current.onConfirm?.())},[$]),ne=useRef(new Animated.Value(.7)).current,ie=useRef(null);useEffect(()=>{ie.current?.stop(),ne.setValue(t?.7:1);const e=Animated.timing(ne,{toValue:t?1:.9,duration:q?0:300,easing:t?Easing.out(Easing.cubic):Easing.in(Easing.cubic),useNativeDriver:nativeDriverEnabled,isInteraction:!1});ie.current=e,e.start()},[ne,t,q]),useEffect(()=>()=>{ie.current?.stop()},[]);const re={transform:[{scale:ne}]},ae=useMemo(()=>G?{wrap:[S.titleWrap,{paddingTop:j?M.spacing.titlePaddingTop:M.spacing.titleIsolatedPadding,paddingBottom:j?0:M.spacing.titleIsolatedPadding,paddingHorizontal:j?M.spacing.paddingHorizontal:0,marginBottom:j?M.spacing.titleGap:0}],text:[S.title,{color:M.colors.title,fontFamily:M.typography.fontFamily,fontSize:M.typography.titleSize,lineHeight:M.typography.titleLineHeight,fontWeight:M.typography.titleWeight},I]}:null,[G,j,I,M]),le=useMemo(()=>({text:[S.msg,{color:K?M.colors.title:M.colors.message,fontFamily:M.typography.fontFamily,fontSize:M.typography.messageSize,lineHeight:M.typography.messageLineHeight,textAlign:r},H],content:_?null:{alignItems:"center"===r?"center":"left"===r?"flex-start":"flex-end"},wrap:[S.msgWrap,{paddingTop:G?M.spacing.messagePaddingTop:M.spacing.messagePadding,paddingBottom:K?M.spacing.roundFooterPadding:M.spacing.messagePadding,paddingHorizontal:M.spacing.messagePaddingHorizontal}]}),[K,r,H,_,G,M]),se=useMemo(()=>({border:[S.footerBorder,createHairlineView({position:"top",color:M.colors.divider,left:0,right:0,top:0})],round:[S.roundFooter,{paddingTop:M.spacing.messagePaddingTop,paddingHorizontal:M.spacing.messagePaddingHorizontal,paddingBottom:M.spacing.roundFooterPadding}]}),[M]),ce=useMemo(()=>{const e=l?isNumber(l)?{width:l}:{width:String(l)}:{width:"90%",maxWidth:M.sizes.maxWidth};return[{backgroundColor:M.colors.background,borderRadius:M.sizes.borderRadius,padding:0},e,T]},[l,T,M]),de=useCallback(()=>{const e=Z.current.beforeClose;if(!e)return!0;try{return e("close")}catch{return!1}},[]),ge=useMemo(()=>J&&React.createElement(View,{style:se.round},v&&React.createElement(View,{style:[S.roundBtnWrap,P&&{marginRight:M.spacing.roundFooterGap}]},React.createElement(Button,{block:!0,round:!0,type:"warning",text:X,color:x,loading:Q,disabled:w?.disabled,onPress:oe,style:{minHeight:M.sizes.roundButtonHeight}})),P&&React.createElement(View,{style:[S.roundBtnWrap,v&&{marginLeft:M.spacing.roundFooterGap}]},React.createElement(Button,{block:!0,round:!0,type:"danger",text:Y,color:R,loading:U,disabled:E?.disabled,onPress:te,style:{minHeight:M.sizes.roundButtonHeight}}))),[x,Q,w?.disabled,X,R,U,E?.disabled,Y,oe,te,J,se.round,v,P,M.sizes.roundButtonHeight,M.spacing.roundFooterGap]),pe=useMemo(()=>J&&React.createElement(View,{style:S.footer},React.createElement(View,{style:se.border,pointerEvents:"none"}),v&&React.createElement(ActionButton,{tokens:M,text:X,color:x??M.colors.cancel,dividerPosition:"none",loading:Q,disabled:w?.disabled,onPress:oe}),P&&React.createElement(ActionButton,{tokens:M,text:Y,color:R??M.colors.confirm,dividerPosition:v?"left":"none",loading:U,disabled:E?.disabled,onPress:te})),[x,Q,w?.disabled,X,R,U,E?.disabled,Y,se.border,oe,te,J,v,P,M]),me=O??(K?ge:pe);return React.createElement(Popup,_extends({visible:t,placement:"center",round:!0,overlay:d,overlayStyle:g,overlayTestID:p,closeOnBackPress:m,closeOnPopstate:u,closeOnClickOverlay:f||y,onClickOverlay:b,beforeClose:de,onClose:F,onClosed:N,contentAnimationStyle:re,style:ce,accessibilityRole:"android"===Platform.OS?"alert":"alertdialog",accessibilityLabel:"string"==typeof n?n:void 0},W),s&&React.createElement(Pressable,{style:[S.closeIcon,{top:M.spacing.paddingTop/2,right:M.spacing.paddingHorizontal/2,padding:M.spacing.closeIconPadding}],hitSlop:{top:8,bottom:8,left:8,right:8},onPress:ee},c??React.createElement(Close,{size:M.sizes.closeSize,fill:M.colors.closeIcon,color:M.colors.closeIcon})),ae&&React.createElement(View,{style:ae.wrap},renderTextOrNode(n,ae.text)),j&&React.createElement(View,{style:[S.content,le.content,z]},_?D:React.createElement(View,{style:le.wrap},renderTextOrNode(i,le.text))),me)},S=StyleSheet.create({titleWrap:{alignItems:"center"},title:{textAlign:"center"},content:{width:"100%"},msg:{textAlign:"center"},footer:{flexDirection:"row",position:"relative"},footerBorder:{position:"absolute",top:0,left:0,right:0,height:0},msgWrap:{width:"100%"},roundFooter:{width:"100%",flexDirection:"row"},roundBtnWrap:{flex:1},closeIcon:{position:"absolute",zIndex:1}});export const Dialog=React.memo(DialogImpl);Dialog.displayName="Dialog";export default Dialog;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
function _extends(){return _extends=Object.assign?Object.assign.bind():function(e){for(var t=1;t<arguments.length;t++){var r=arguments[t];for(var o in r)({}).hasOwnProperty.call(r,o)&&(e[o]=r[o])}return e},_extends.apply(null,arguments)}import React,{useCallback,useEffect,useState}from"react";import{Portal}from"../portal/Portal";import{deepMerge,isString,isUndefined}from"../../utils";import Dialog from"./Dialog";const runHook=async e=>{if(!e)return!0;try{return!1!==await e()}catch(e){return console.error(e),!
|
|
1
|
+
function _extends(){return _extends=Object.assign?Object.assign.bind():function(e){for(var t=1;t<arguments.length;t++){var r=arguments[t];for(var o in r)({}).hasOwnProperty.call(r,o)&&(e[o]=r[o])}return e},_extends.apply(null,arguments)}import React,{useCallback,useEffect,useState}from"react";import{Portal}from"../portal/Portal";import{deepMerge,isString,isUndefined}from"../../utils";import Dialog from"./Dialog";const runHook=async e=>{if(!e)return!0;try{return!1!==await e()}catch(e){return console.error(e),!1}},registry=new Map,defaults={default:{},show:{},alert:{},confirm:{}},requestClose=e=>{const t=registry.get(e);t?t.close?t.close():(Portal.remove(e),registry.delete(e)):Portal.remove(e)},DialogPortalInstance=({options:e,meta:t,portalKeyRef:r})=>{const[o,n]=useState(!0),s=useCallback(()=>{n(!1)},[]);useEffect(()=>{if(!r.current)return;const e=registry.get(r.current);return e&&(e.close=s),()=>{const e=registry.get(r.current??-1);e&&e.close===s&&(e.close=void 0)}},[s,r]),useEffect(()=>()=>{r.current&®istry.delete(r.current)},[r]);const a=useCallback(async(r,o)=>{await runHook(()=>e.beforeClose?.(r))&&await runHook(o)&&(("confirm"===r&&"alert"===t.mode||"confirm"===t.mode)&&t.resolve?.("confirm"===r),s())},[s,t,e.beforeClose]),l=useCallback(()=>{e.onClosed?.(),r.current&&(Portal.remove(r.current),registry.delete(r.current))},[e,r]);return React.createElement(Dialog,_extends({},e,{visible:o,onCancel:e.showCancelButton?()=>a("cancel",e.onCancel):e.onCancel,onConfirm:()=>a("confirm",e.onConfirm),onClose:()=>a("close",e.onClose),onClosed:l}))},mount=(e,t)=>{const r={current:0},o=React.createElement(DialogPortalInstance,{options:e,meta:t,portalKeyRef:r}),n=Portal.add(o);return r.current=n,registry.set(n,{key:n,options:e,meta:t}),()=>requestClose(n)},normalize=(e,t={})=>{const r={...deepMerge(deepMerge(defaults.default,defaults[e]),t),visible:!0};return isUndefined(r.showConfirmButton)&&(r.showConfirmButton=!0),r},setDefaultOptions=(e,t)=>{isString(e)?defaults[e]=deepMerge(defaults[e],t??{}):defaults.default=deepMerge(defaults.default,e)},resetDefaultOptions=e=>{e?defaults[e]={}:(defaults.default={},defaults.show={},defaults.alert={},defaults.confirm={})};export const DialogImperative={show:e=>mount(normalize("show",e),{mode:"show"}),alert:e=>new Promise(t=>{mount(normalize("alert",{...e,showCancelButton:!1}),{mode:"alert",resolve:t})}),confirm:e=>new Promise(t=>{mount(normalize("confirm",{showCancelButton:!0,...e}),{mode:"confirm",resolve:e=>t(void 0===e||e)})}),clear:()=>{registry.forEach((e,t)=>requestClose(t))},setDefaultOptions:setDefaultOptions,resetDefaultOptions:resetDefaultOptions};export const __DIALOG_STORE__={getItems:()=>Array.from(registry.values()).map(({key:e,options:t,meta:r})=>({key:e,options:t,meta:r})),close:requestClose};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
|
|
1
|
+
import React,{useCallback,useId,useImperativeHandle,useMemo,useRef,useState}from"react";import{Platform,Pressable,Text,View}from"react-native";import{QuestionO}from"react-native-system-icon";import Cell from"../cell";import Dialog from"../dialog";import{formatNumberInput}from"../../utils/string";import{isDef,isFiniteNumber,isFunction,isObject,isRenderable,isText}from"../../utils/validate";import{useFieldTokens}from"./tokens";import{alignMap,FieldClearButton,FieldControlRow,FieldInput,FieldSlot,mapKeyboardType,resolveTooltipDialog}from"../../hooks/field/renderers";const FieldImpl=(e,t)=>{const{tokensOverride:r,label:l,labelWidth:i,labelAlign:o,inputAlign:n,controlAlign:a,required:s=!1,colon:c=!1,intro:u,description:d,tooltip:g,error:m=!1,errorMessage:p,errorMessageAlign:f="left",errorMessagePosition:b="inner",disabled:y=!1,readOnly:R=!1,clearable:h=!1,clearTrigger:x,clearIcon:T,leftIcon:w,rightIcon:S,prefix:v,suffix:C,button:I,extra:k,value:F,defaultValue:M="",type:z="text",rows:E,autoSize:P=!1,formatter:L,formatTrigger:O,showWordLimit:D=!1,onOverlimit:H,onClear:A,onClick:N,onClickInput:B,onClickLeftIcon:V,onClickRightIcon:G,border:W,center:j,clickable:q,isLink:K,arrowDirection:Q,size:$,titleStyle:_,contentStyle:J,inputStyle:U,labelStyle:X,introStyle:Y,errorMessageStyle:Z,style:ee,androidRipple:te,children:re,placeholderTextColor:le,onFocus:ie,onBlur:oe,onPressIn:ne,onChangeText:ae,maxLength:se,...ce}=e,ue=useFieldTokens(r),de=i??ue.defaults.labelWidth,ge=o??ue.defaults.labelAlign,me=n??ue.defaults.inputAlign,pe=a??ue.defaults.controlAlign,fe=x??ue.defaults.clearTrigger,be=E??ue.defaults.rows,ye=O??ue.defaults.formatTrigger,Re=[{width:de,minWidth:de,maxWidth:de,flexBasis:de,marginRight:ue.spacing.labelGap,flexShrink:0,flexGrow:0},_],he=C??I,xe=u??d,Te=le??(y?ue.colors.disabled:ue.colors.placeholder),we="textarea"===z,Se=void 0!==F,[ve,Ce]=useState(M),Ie=Se?F??"":ve,[ke,Fe]=useState(!1),[Me,ze]=useState(!1),Ee=useRef(!1),Pe=useRef(null),Le=useId(),Oe=useId(),De=useMemo(()=>{const e=[isRenderable(p)?Oe:null,isRenderable(xe)?Le:null].filter(Boolean);return e.length?e:void 0},[Oe,p,Le,xe]),He=ue.defaults.textareaLineHeight,Ae=P&&isObject(P)?P:void 0,Ne=we?Ae&&isDef(Ae.minRows)?Math.max(1,Ae.minRows):Math.max(1,be):1,Be=we&&Ae&&isDef(Ae.maxRows)?Math.max(1,Ae.maxRows):void 0,Ve=useMemo(()=>we?Math.max(ue.sizes.textareaMinHeight,Ne*He):void 0,[we,He,Ne,ue.sizes.textareaMinHeight]),Ge=useMemo(()=>we&&Be?Math.max(ue.sizes.textareaMinHeight,Be*He):void 0,[we,He,Be,ue.sizes.textareaMinHeight]),[We,je]=useState(Ve),qe=useRef(ae);qe.current=ae;const Ke=useRef(H);Ke.current=H;const Qe=useRef(ie);Qe.current=ie;const $e=useRef(oe);$e.current=oe;const _e=useRef(ne);_e.current=ne;const Je=useRef(B);Je.current=B;const Ue=useRef(A);Ue.current=A;const Xe=useCallback((e,t="onChange")=>L&&t===ye?L(e):e,[ye,L]),Ye=useCallback((e,t="onChange")=>{const r=Xe(e,t);Se||Ce(r),qe.current?.(r)},[Xe,Se]);useImperativeHandle(t,()=>({focus:()=>Pe.current?.focus(),blur:()=>Pe.current?.blur(),clear:()=>Ye(""),get nativeElement(){return Pe.current}}));const Ze="left"!==pe?pe:me,et=h&&!R&&""!==(Ie??"")&&("always"===fe||"focus"===fe&&(ke||Me)),tt=useCallback(e=>{let t=e??"";if("number"===z||"digit"===z){const e="number"===z;t=formatNumberInput(t,e,e)}isFiniteNumber(se)&&se>=0&&t.length>se&&(Ke.current?.(t),t=t.slice(0,se)),Ye(t,"onChange")},[se,z,Ye]),rt=useCallback(e=>{Fe(!0),Qe.current?.(e),R&&Pe.current?.blur()},[R]),lt=useCallback(e=>{if("web"!==Platform.OS&&Ee.current)return Ee.current=!1,Fe(!1),void $e.current?.(e);Ye(Ie??"","onBlur"),Fe(!1),$e.current?.(e)},[Ye,Ie]),it=useCallback(e=>{_e.current?.(e),Je.current?.()},[]),ot=useCallback(e=>{if(!we)return;const t=e.nativeEvent.contentSize?.height??0;if(!t)return;let r=t;P?(r=Math.max(Ve??t,t),Ge&&(r=Math.min(r,Ge))):Ve&&(r=Math.max(Ve,t)),je(r)},[P,we,Ge,Ve]),nt=useCallback(()=>{"web"!==Platform.OS&&(Ee.current=!0),Ye(""),Pe.current?.clear?.(),Pe.current?.focus?.(),Ue.current?.()},[Ye]),at=useCallback(()=>{ze(!0),"web"!==Platform.OS&&nt()},[nt]),st=useCallback(()=>{ze(!1),Ee.current=!1},[]),ct=isRenderable(re)?React.createElement(View,{style:[ue.layout.children,{minHeight:ue.sizes.controlMinHeight}]},re):React.createElement(FieldInput,{inputRef:Pe,tokens:ue,isTextarea:we,disabled:y,error:m,finalTextAlign:Ze,lineHeight:He,textareaHeight:We,minHeight:Ve,inputStyle:U,value:Ie??"",onChangeText:tt,onFocus:rt,onBlur:lt,onPressIn:it,rows:be,keyboardType:ce.keyboardType??mapKeyboardType(z),placeholderTextColor:Te,onContentSizeChange:ot,describedBy:De,secureTextEntry:"password"===z,editable:!y&&!R,restInputProps:ce}),ut=[{width:"100%",justifyContent:alignMap[pe]},J],dt=e=>isText(e)?React.createElement(Text,{style:[ue.layout.affixText,{color:ue.colors.input,fontSize:ue.typography.inputSize}],numberOfLines:1},e):e,gt=isRenderable(g)?(()=>{const e=React.createElement(QuestionO,{size:ue.sizes.icon,fill:ue.colors.tooltip,color:ue.colors.tooltip}),{icon:t,dialogProps:r}=resolveTooltipDialog(g,e);return React.createElement(Pressable,{style:[ue.layout.tooltip,{marginLeft:ue.spacing.rightIconGap}],onPress:()=>Dialog.show(r),accessibilityRole:"button"},t)})():null,mt=isRenderable(l)?(()=>{const e=isText(l)?React.createElement(Text,{style:[{color:y?ue.colors.disabled:ue.colors.label,fontSize:ue.typography.labelSize,textAlign:ge},X],numberOfLines:1},l,c?":":""):l;return React.createElement(View,{style:ue.layout.labelRow},e,gt)})():null,pt=D&&null!=se?(()=>{const e=(Ie??"").length,t=isFunction(D)?D({currentCount:e,maxLength:se}):`${e}/${se}`;return isRenderable(t)?isText(t)?React.createElement(Text,{style:[ue.layout.wordLimit,{color:ue.colors.wordLimit,fontSize:ue.typography.wordLimitSize??12,textAlign:"right",alignSelf:"flex-end",marginTop:ue.spacing.wordLimitMarginTop}]},t):t:null})():null,ft=isRenderable(p)?isText(p)?React.createElement(Text,{nativeID:Oe,style:[ue.layout.message,{color:ue.colors.error,fontSize:ue.typography.messageSize,textAlign:f,marginTop:ue.spacing.messageMarginTop},Z],accessibilityLiveRegion:"polite"},p):React.createElement(View,{nativeID:Oe,style:[ue.layout.message,{alignSelf:alignMap[f],marginTop:ue.spacing.messageMarginTop}],accessibilityLiveRegion:"polite"},p):null,bt=isRenderable(xe)?isText(xe)?React.createElement(Text,{nativeID:Le,style:[ue.layout.message,{color:ue.colors.intro,fontSize:ue.typography.introSize,textAlign:pe,marginTop:ue.spacing.introMarginTop},Y]},xe):React.createElement(View,{nativeID:Le,style:{marginTop:ue.spacing.introMarginTop}},xe):null,yt=v?React.createElement(View,{style:[ue.layout.prefix,{paddingRight:ue.spacing.prefixGap}]},dt(v)):null,Rt=he?React.createElement(View,{style:[ue.layout.suffix,{paddingLeft:ue.spacing.suffixGap}]},dt(he)):null,ht=w?React.createElement(FieldSlot,{onPress:V,style:[ue.layout.leftIcon,{marginRight:ue.spacing.leftIconGap,minWidth:ue.sizes.icon}]},w):null,xt=S?React.createElement(FieldSlot,{onPress:G,style:[ue.layout.rightIcon,{paddingHorizontal:ue.spacing.rightIconGap}]},S):null,Tt=et?React.createElement(FieldClearButton,{show:et,tokens:ue,clearIcon:T,onPressIn:at,onPressOut:"web"===Platform.OS?st:void 0,onPress:"web"===Platform.OS?nt:void 0}):null,wt="outer"===b,St=React.createElement(Cell,{title:mt,icon:void 0,required:s,border:W,center:j,size:$,clickable:q,isLink:K,arrowDirection:Q,extra:k,titleStyle:Re,style:[ee,wt&&(m||isRenderable(p))?{borderColor:ue.colors.error}:void 0],contentStyle:ut,accessibilityState:m?{invalid:!0}:void 0,accessibilityLabel:isText(l)?String(l):void 0,onPress:N,android_ripple:te},React.createElement(FieldControlRow,{tokens:ue,prefixNode:yt,leftIconNode:ht,controlNode:ct,clearNode:Tt,rightIconNode:xt,suffixNode:Rt}),pt,wt?null:ft,bt);return wt&&ft?React.createElement(React.Fragment,null,St,ft):St},FieldForwardRef=React.forwardRef(FieldImpl);FieldForwardRef.displayName="Field";export const Field=React.memo(FieldForwardRef);export default Field;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
function _extends(){return _extends=Object.assign?Object.assign.bind():function(e){for(var
|
|
1
|
+
function _extends(){return _extends=Object.assign?Object.assign.bind():function(e){for(var t=1;t<arguments.length;t++){var r=arguments[t];for(var n in r)({}).hasOwnProperty.call(r,n)&&(e[n]=r[n])}return e},_extends.apply(null,arguments)}import React,{useCallback,useContext,useEffect,useImperativeHandle,useMemo,useRef,useState}from"react";import{View}from"react-native";import{deepEqualObject,renderTextOrNode}from"../../utils";import{isPromiseLike}from"../../utils/promise";import{isText}from"../../utils/validate";import{useLocale}from"../config-provider/useLocale";import{getValueByName,normalizeTrigger,runRuleValidation,serializeNamePath,setValueByName}from"../../hooks/form/utils";export{getValueByName,normalizeTrigger,serializeNamePath,setValueByName,toNamePath}from"../../hooks/form/utils";export const FORM_ALL_FIELDS_KEY="__form_all__";export const FormContext=React.createContext(null);const InternalFormImpl=(e,t)=>{const{initialValues:r,colon:n,labelWidth:a,showValidateMessage:u=!0,onValuesChange:s,onFinish:l,style:c,footer:i,children:o,...m}=e,f=useLocale(),d=useRef({}),g=useRef({}),h=useRef(r??d.current),V=useRef({}),N=useRef(new Map),F=useRef(r??d.current),b=useRef({}),p=useRef(new Set),y=useRef(s),v=useRef(l);y.current=s,v.current=l;const R=r??d.current,[,_]=useState(0),x=useCallback((e,t)=>{p.current.forEach(r=>r(e,t))},[]);useEffect(()=>{deepEqualObject(h.current,R)||(h.current=R,F.current=R,g.current={},_(e=>e+1),x({[FORM_ALL_FIELDS_KEY]:!0},R))},[R,x]);const B=useCallback((e,t)=>{const r=serializeNamePath(e),n=g.current[r];if(!t.length){if(!n)return;const t={...g.current};return delete t[r],g.current=t,void x({[r]:getValueByName(F.current,e)},F.current)}n?.[0]===t[0]&&n.length===t.length||(g.current={...g.current,[r]:t},x({[r]:getValueByName(F.current,e)},F.current))},[x]),E=useCallback((e,t)=>{const r=serializeNamePath(e),n=V.current[r];if(n?.dependencies?.length)for(const e of n.dependencies){const t=serializeNamePath(e),n=N.current.get(t);n&&(n.delete(r),n.size||N.current.delete(t))}if(V.current[r]={...t,name:e},t.dependencies?.length)for(const e of t.dependencies){const t=serializeNamePath(e),n=N.current.get(t);n?n.add(r):N.current.set(t,new Set([r]))}if(void 0!==t.initialValue){void 0===getValueByName(h.current,e)&&(h.current=setValueByName(h.current,e,t.initialValue));if(void 0===getValueByName(F.current,e)){const n=setValueByName(F.current,e,t.initialValue);F.current=n,x({[r]:t.initialValue},n)}}return()=>{const t=V.current[r];if(delete V.current[r],t?.dependencies?.length)for(const e of t.dependencies){const t=serializeNamePath(e),n=N.current.get(t);n&&(n.delete(r),n.size||N.current.delete(t))}B(e,[])}},[x,B]),z=useRef(f);z.current=f;const P=useCallback(async(e,t,r,n)=>{const a=serializeNamePath(e),u=(b.current[a]??0)+1;b.current[a]=u;const s=V.current[a],l=s?.rules??[];if(!l.length)return B(e,[]),!0;const c=t?l.filter(e=>{const r=e.validateTrigger??s.validateTrigger;return!r||normalizeTrigger(r).includes(t)}):l;if(!c.length)return g.current[a]?.length&&B(e,[]),!0;const i=n??F.current,o=r??getValueByName(i,e),m=z.current?.vanForm?.validationFailed;for(const t of c){const r=runRuleValidation(t,o,i,m),n=isPromiseLike(r)?await r:r;if(b.current[a]!==u)return!0;if(n)return B(e,[n]),!1}return b.current[a]!==u||B(e,[]),!0},[B]),C=useCallback(async e=>{const t=e??Object.values(V.current).map(e=>e.name);if((await Promise.all(t.map(e=>P(e)))).some(e=>!e))throw g.current;return F.current},[P]),k=useCallback((e,t,r,n,a)=>{P(t,r,n,a);const u=N.current.get(e);if(u?.size)for(const e of u){const t=V.current[e];t&&P(t.name,r,getValueByName(a,t.name),a)}},[P]),L=useCallback((e,t,r)=>{const n=serializeNamePath(e),a=F.current;if(getValueByName(a,e)===t)return;const u=setValueByName(a,e,t);F.current=u,y.current?.(u,n,t),k(n,e,r,t,u),x({[n]:t},u)},[x,k]),O=useMemo(()=>({submit:async()=>{try{const e=await C();return v.current?.(e),e}catch{return}},getFieldsValue:()=>F.current,setFieldsValue:(e,t)=>{const r=t?.validate??!1,n=F.current;let a=n;const u={};Object.keys(e).forEach(t=>{const n=e[t];getValueByName(a,t)!==n&&(u[t]=n,a=setValueByName(a,t,n),y.current?.(a,t,n),r&&k(t,t,void 0,n,a))}),a!==n&&(F.current=a,x(u,a))},resetFields:()=>{let e=h.current;Object.values(V.current).forEach(t=>{void 0!==t.initialValue&&void 0===getValueByName(e,t.name)&&(e=setValueByName(e,t.name,t.initialValue))}),h.current=e,F.current=e,g.current={},x({[FORM_ALL_FIELDS_KEY]:!0},e)},validateFields:C,getFieldError:e=>g.current[serializeNamePath(e)]??[]}),[C,k,x]);useImperativeHandle(t,()=>O,[O]);const w=useMemo(()=>({getFieldValue:e=>getValueByName(F.current,e),setFieldValue:L,registerField:E,getFieldError:e=>g.current[serializeNamePath(e)],validateField:(e,t)=>P(e,t),getFieldsValue:()=>F.current,subscribe:e=>(p.current.add(e),()=>p.current.delete(e)),form:O,colon:n,labelWidth:a,showValidateMessage:u}),[L,E,P,O,n,a,u]);return React.createElement(FormContext.Provider,{value:w},React.createElement(View,_extends({style:c},m),o,isText(i)?renderTextOrNode(i,[]):i))},InternalFormRef=React.forwardRef(InternalFormImpl),InternalForm=React.memo(InternalFormRef);export const useWatch=(e,t)=>{const r=useContext(FormContext),n=void 0===e?void 0:Array.isArray(e)?e.length&&isText(e[0])?[e]:e:[e],a=useCallback(e=>{const a=e??r?.getFieldsValue?.()??t?.current?.getFieldsValue?.()??{};if(!n)return a;if(1===n.length)return getValueByName(a,n[0]);const u={};for(const e of n)u[serializeNamePath(e)]=getValueByName(a,e);return u},[r,t,n]),[u,s]=useState(()=>a());return useEffect(()=>{if(r?.subscribe)return r.subscribe((e,t)=>{"__form_all__"in e?s(a(t)):n&&!n.some(t=>serializeNamePath(t)in e)||s(a(t))})},[r,a,n]),useEffect(()=>{s(a())},[a]),u};export const FormSubscribe=({to:e,children:t})=>{const r=useContext(FormContext),[n,a]=useState({});return useEffect(()=>{if(r?.subscribe)return r.subscribe(t=>{(!e||"__form_all__"in t||Object.keys(t).some(t=>e.includes(t)))&&a(t)})},[r,e]),React.createElement(React.Fragment,null,t(n,r?.form||null))};export default InternalForm;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
function _extends(){return _extends=Object.assign?Object.assign.bind():function(e){for(var t=1;t<arguments.length;t++){var r=arguments[t];for(var o in r)({}).hasOwnProperty.call(r,o)&&(e[o]=r[o])}return e},_extends.apply(null,arguments)}import React,{useCallback,useEffect,useMemo,useRef,useState}from"react";import{Animated,Easing,Pressable,StyleSheet,Text,View}from"react-native";import{useControllableValue}from"../../hooks";import{nativeDriverEnabled}from"../../platform";import{useReducedMotion}from"../../hooks/animation";import{createPlatformShadow}from"../../utils/createPlatformShadow";import{parseNumberLike}from"../../utils/number";import{isRenderable,renderTextOrNode}from"../../utils";import Loading from"../loading";import Portal from"../portal/Portal";import{useLocale}from"../config-provider/useLocale";import{SafeAreaView}from"../safe-area-view";import{useNumberKeyboardTokens}from"./tokens";
|
|
1
|
+
function _extends(){return _extends=Object.assign?Object.assign.bind():function(e){for(var t=1;t<arguments.length;t++){var r=arguments[t];for(var o in r)({}).hasOwnProperty.call(r,o)&&(e[o]=r[o])}return e},_extends.apply(null,arguments)}import React,{useCallback,useEffect,useMemo,useRef,useState}from"react";import{Animated,Easing,Pressable,StyleSheet,Text,View}from"react-native";import{useControllableValue}from"../../hooks";import{nativeDriverEnabled}from"../../platform";import{useReducedMotion}from"../../hooks/animation";import{createPlatformShadow}from"../../utils/createPlatformShadow";import{parseNumberLike}from"../../utils/number";import{isRenderable,renderTextOrNode}from"../../utils";import Loading from"../loading";import Portal from"../portal/Portal";import{useLocale}from"../config-provider/useLocale";import{SafeAreaView}from"../safe-area-view";import{useNumberKeyboardTokens}from"./tokens";import{buildKeyboardKeys,RE_NUM_LIKE}from"../../hooks/number-keyboard/utils";const registry=new Set,NumberKeyboard=React.memo(e=>{const{visible:t,title:r,tokensOverride:o,theme:n="default",extraKey:a,randomKeyOrder:i,showDeleteKey:l=!0,closeButtonText:s,deleteButtonText:c,closeButtonLoading:u,onChange:d,onInput:f,onDelete:m,onClose:y,onBlur:p,onHide:g,onShow:b,value:x,defaultValue:h,maxlength:k,blurOnClose:R=!0,safeAreaInsetBottom:w=!0,transition:v=!0,transitionDuration:E=300,numberKeyRender:z,deleteRender:T,extraKeyRender:C,style:N,...B}=e,V=useLocale(),A=useReducedMotion(),F=useNumberKeyboardTokens(o),{colors:K,radii:P,shadow:D,sizing:L,spacing:M,typography:H}=F,[I,O]=useControllableValue(e,{defaultValue:"",valuePropName:"value",defaultValuePropName:"defaultValue",trigger:"onChange"}),_=I??"",W=(()=>{const e=parseNumberLike(k,void 0);return null!=e&&Number.isFinite(e)&&e>=0?Math.floor(e):void 0})(),$=useRef(_),j=useRef(W),G=useRef(y),U=useRef(p),Y=useRef(b),q=useRef(g),J=useRef(m),Q=useRef(f);$.current=_,j.current=W,G.current=y,U.current=p,Y.current=b,q.current=g,J.current=m,Q.current=f;const X="custom"===n,Z=V?.vanNumberKeyboard?.close??"Done",ee=X?s??Z:s,te=useCallback(()=>{G.current?.(),R&&U.current?.()},[R]),re=useRef(t);useEffect(()=>{t&&!re.current&&Y.current?.(),!t&&re.current&&q.current?.(),re.current=t},[t]),useEffect(()=>(t?(registry.add(te),registry.forEach(e=>{e!==te&&e()})):registry.delete(te),()=>{registry.delete(te)}),[t,te]);const oe=useMemo(()=>buildKeyboardKeys({randomKeyOrder:i,visible:t,isCustom:X,extraKey:a,showDeleteKey:l}),[a,X,i,l,t]),ne=useCallback((e,t)=>{if("delete"===t){const e=$.current;if(!e)return;return J.current?.(),void O(e.slice(0,-1))}if("close"===t||"extra"===t&&!e)return void te();if(!e)return;const r=$.current,o=j.current;void 0!==o&&r.length>=o||(Q.current?.(e),O(`${r}${e}`))},[te,O]),ae=useMemo(()=>createPlatformShadow(D),[D.color,D.elevation,D.offsetY,D.opacity,D.radius]),ie=useCallback((e,t,r=!1,o=!1,n)=>{const a=e.type,i=""===a&&!e.text,l=i||r&&u,s=l?void 0:()=>ne(e.text,a),d=r?K.closeBackground:K.keyBackground,f=r?K.closeActiveBackground:K.keyActiveBackground,m=r?K.closeText:K.keyText,y=r?K.closeText:K.keyTextActive,p=n??(r?L.closeHeight:L.keyHeight),g=L.auxFontSize??Math.round(.64*L.fontSize),b=L.defaultIconFontSize??L.fontSize,x=e.text??"",h="delete"===a?T?.()??c??"⌫":"extra"===a?C?C(x):x||"⌨︎":"close"===a?ee??Z:z?z(x):x,k="delete"===a&&null==T&&null==c||"extra"===a&&!C&&!x,R="extra"===a&&"string"==typeof h&&RE_NUM_LIKE.test(h),w=""===a?L.fontSize:k?b:R?L.fontSize:g;return React.createElement(Pressable,{key:`${a}-${t}-${e.text??t}`,onPress:s,disabled:l,style:[{opacity:i?1:l?.6:1},o?{width:"100%",flexBasis:"auto",flexGrow:0,alignSelf:"stretch"}:{flexBasis:0,flexGrow:e.wider?2:1,flexShrink:1,minWidth:0}],accessible:!i,accessibilityRole:i?void 0:"button",accessibilityLabel:i?void 0:"delete"===a?"delete":"close"===a?ee??"close":"extra"===a?x||"collapse":x,accessibilityState:i?void 0:{disabled:!!l},accessibilityElementsHidden:i,importantForAccessibility:i?"no-hide-descendants":void 0},({pressed:e})=>{const t=e&&!l,o=l?K.keyBackground:t?f:d,n=t?y:m;return React.createElement(View,{style:[S.k,{height:p,backgroundColor:o,borderRadius:P.key}]},r&&u?React.createElement(Loading,{size:18,color:n}):isRenderable(h)?renderTextOrNode(h,[S.kTxt,{color:n,fontFamily:H.fontFamily,fontSize:w}]):null)})},[u,K.closeActiveBackground,K.closeBackground,K.closeText,K.keyActiveBackground,K.keyBackground,K.keyText,K.keyTextActive,Z,c,T,C,ne,z,P.key,L.auxFontSize,L.closeHeight,L.defaultIconFontSize,L.fontSize,L.keyHeight,H.fontFamily,ee]),le=useRef(new Animated.Value(t?1:0)).current,se=useRef(null),ce=useRef(0),[ue,de]=useState(0),[fe,me]=useState(t),ye=A||!1===v?0:E;useEffect(()=>{ce.current+=1;const e=ce.current;t&&me(!0),se.current?.stop();const r=Animated.timing(le,{toValue:t?1:0,duration:ye,useNativeDriver:nativeDriverEnabled,easing:t?Easing.out(Easing.cubic):Easing.in(Easing.cubic),isInteraction:!1});return se.current=r,r.start(({finished:r})=>{r&&!t&&ce.current===e&&me(!1)}),()=>{se.current?.stop(),se.current=null}},[le,t,ye]);const pe=le.interpolate({inputRange:[0,1],outputRange:[ue||320,0]}),ge=useCallback(e=>{const{height:t}=e.nativeEvent.layout;de(e=>Math.abs(t-e)>.5?t:e)},[]),be=!X&&(r||s),xe=2*L.keyHeight+M.keyGap,he=useMemo(()=>{const e=M.keyGap,t=M.paddingHorizontal,o={paddingHorizontal:M.titlePadding},n=[S.dRow,{flexDirection:"column",flexWrap:"nowrap",paddingHorizontal:t,paddingTop:e,paddingBottom:e,gap:e}],a={flexDirection:"row",gap:e},i=[S.cRow,{paddingHorizontal:t,paddingTop:be?0:e,paddingBottom:e,width:"100%"}],s=[S.cMat,{flexDirection:"column",flexWrap:"nowrap",gap:e}],c=[S.cSide,{gap:e,marginLeft:e}],u=oe.map((e,t)=>({key:e,index:t})),d=[];for(let e=0;e<u.length;e+=3)d.push(u.slice(e,e+3));const f=React.createElement(View,{style:n},d.map((e,t)=>React.createElement(View,{key:`l-${t}`,style:a},e.map(e=>ie(e.key,e.index))))),m=[];for(let e=0;e<9&&e<u.length;e+=3)m.push(u.slice(e,e+3));const y=u.slice(9);1===y.length?m.push([{key:{type:""},index:1000001},y[0],{key:{type:""},index:1000002}]):y.length&&m.push(y);const p=React.createElement(View,{style:s},m.map((e,t)=>React.createElement(View,{key:`cl-${t}`,style:a},e.map(e=>ie(e.key,e.index))))),g=l&&ie({type:"delete"},999,!1,!0,xe),b=ie({type:"close"},1e3,!0,!0,xe),x={color:K.title,fontFamily:H.fontFamily,fontSize:L.titleFontSize},h={color:K.title,fontFamily:H.fontFamily,fontSize:L.auxFontSize??Math.round(.64*L.fontSize)};return{headerNode:be?React.createElement(View,{style:[S.hdr,o]},React.createElement(Text,{style:[S.tBold,S.tCenter,x],numberOfLines:1},r),ee&&React.createElement(Pressable,{onPress:te,style:S.hdrClose,accessibilityRole:"button",accessibilityLabel:ee},React.createElement(Text,{style:h},ee))):null,bodyNode:X?React.createElement(View,{style:i},p,React.createElement(View,{style:c},g,b)):f,safeAreaNode:w&&React.createElement(SafeAreaView,{edge:"bottom"})}},[te,K.title,xe,be,X,oe,ie,ee,w,L.auxFontSize,L.fontSize,L.titleFontSize,M.keyGap,M.paddingHorizontal,M.titlePadding,H.fontFamily,r,l]);return fe||t?React.createElement(Portal,null,React.createElement(Animated.View,_extends({},B,{pointerEvents:t?"auto":"none",renderToHardwareTextureAndroid:!0,shouldRasterizeIOS:!0,onLayout:ge,style:[S.wrap,ae,N,{transform:[{translateY:pe}],backgroundColor:K.background}]}),he.headerNode,he.bodyNode,he.safeAreaNode)):null}),S=StyleSheet.create({wrap:{position:"absolute",left:0,right:0,bottom:0},hdr:{flexDirection:"row",alignItems:"center",justifyContent:"flex-end",height:44,position:"relative"},tBold:{fontWeight:"600"},tCenter:{position:"absolute",left:12,right:12,textAlign:"center"},hdrClose:{minWidth:56,alignItems:"flex-end"},k:{justifyContent:"center",alignItems:"center"},kTxt:{includeFontPadding:!1,textAlign:"center"},dRow:{flexDirection:"row",flexWrap:"wrap"},cRow:{flexDirection:"row"},cMat:{flex:3,flexDirection:"row",flexWrap:"wrap"},cSide:{flex:1,flexDirection:"column",justifyContent:"flex-start"}});export default NumberKeyboard;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
import React from"react";import{Modal,Platform}from"react-native";import{OverlayContainer}from"@react-native-aria/overlays";import{useKeyboardDismissable}from"@react-native-aria/interactions";import{useOverlayTokens}from"./tokens";const IS_WEB="web"===Platform.OS,OverlayImpl=(e,a)=>{const{children:r,isOpen:t,visible:o,useRNModal:l,useRNModalOnAndroid:s=!1,isKeyboardDismissable:i=!0,animationPreset:n="fade",onRequestClose:m,style:d}=e,y=useOverlayTokens(),
|
|
1
|
+
import React from"react";import{Modal,Platform}from"react-native";import{OverlayContainer}from"@react-native-aria/overlays";import{useKeyboardDismissable}from"@react-native-aria/interactions";import{useOverlayTokens}from"./tokens";const IS_WEB="web"===Platform.OS,NOOP=()=>{},OverlayImpl=(e,a)=>{const{children:r,isOpen:t,visible:o,useRNModal:l,useRNModalOnAndroid:s=!1,isKeyboardDismissable:i=!0,animationPreset:n="fade",onRequestClose:m,style:d}=e,y=useOverlayTokens(),O=l??!IS_WEB,c=IS_WEB?{zIndex:y.layer.zIndex,position:"fixed",top:0,left:0,right:0,bottom:0}:void 0,v=t??o??!1;return useKeyboardDismissable({enabled:!IS_WEB&&v&&i,callback:m??NOOP}),v?O||s&&"android"===Platform.OS?React.createElement(Modal,{statusBarTranslucent:!0,transparent:!0,visible:v,onRequestClose:m,animationType:n,ref:a},r):React.createElement(OverlayContainer,{style:[d,c]},r):null},OverlayForwardRef=React.forwardRef(OverlayImpl);OverlayForwardRef.displayName="Overlay";export const Overlay=React.memo(OverlayForwardRef);export default Overlay;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
function _extends(){return _extends=Object.assign?Object.assign.bind():function(e){for(var t=1;t<arguments.length;t++){var n=arguments[t];for(var r in n)({}).hasOwnProperty.call(n,r)&&(e[r]=n[r])}return e},_extends.apply(null,arguments)}import React,{useCallback,useEffect,useMemo,useRef,useState}from"react";import{Pressable,Text,View,Platform,StyleSheet,ScrollView,PanResponder}from"react-native";import Loading from"../loading";import{useLocale}from"../config-provider/useLocale";import{withAlpha}from"../../utils/color";import{isFiniteNumber,isText}from"../../utils/validate";import{clamp,isObject,shallowEqualArray}from"../../utils";import{usePickerTokens}from"./tokens";import{createHairlineView}from"../../utils/hairline";export const toArrayValue=e=>Array.isArray(e)?e.filter(e=>null!=e):null==e?[]:[e];const isColumnWithOptions=e=>!!e&&isObject(e)&&"options"in e&&Array.isArray(e.options),hasChildren=e=>!!e&&isObject(e)&&Array.isArray(e.children)&&e.children.length>0;export const findEnabledIndex=(e,t)=>{if(!e.length)return-1;const n=Math.min(Math.max(t,0),e.length-1);if(!e[n]?.disabled)return n;for(let t=n+1;t<e.length;t+=1)if(!e[t]?.disabled)return t;for(let t=n-1;t>=0;t-=1)if(!e[t]?.disabled)return t;return-1};const normalizeMultiple=(e,t,n)=>{const r=[],o=[];return e.forEach((e,a)=>{const l=n[a],i=void 0!==t[a]?e.findIndex(e=>e.value===t[a]):-1,c=e.findIndex(e=>e.value===l),s=findEnabledIndex(e,c>=0?c:i>=0?i:0),u=s>=0?e[s]:void 0,m=c>=0&&!e[c]?.disabled;r[a]=m?l:u?.value??t[a]??e[0]?.value,o[a]=u}),{columns:e,values:r,options:o}},normalizeCascade=(e,t)=>{const n=[],r=[],o=[];let a=e,l=0;for(;a&&a.length&&l<10;){n.push(a);const e=t[l],i=a.findIndex(t=>t.value===e||String(t.value)===String(e)),c=findEnabledIndex(a,i>=0?i:0),s=c>=0?a[c]:a[0];if(r[l]=s?.value,o[l]=s,!s||!hasChildren(s))break;a=s.children,l+=1}return{columns:n,values:r,options:o}};export const prepareColumns=(e=[])=>{if(!Array.isArray(e)||0===e.length)return{type:"single",columnsList:[],defaults:[],cascadeRoot:[]};const t=e.every(e=>!Array.isArray(e)&&!isColumnWithOptions(e)),n=t&&e.some(e=>hasChildren(e));if(n)return{type:"cascade",columnsList:[],defaults:[],cascadeRoot:e};const r=e,o=[],a=[];return t&&!n?(o.push(e),a.push(void 0)):r.forEach(e=>{if(Array.isArray(e))o.push(e),a.push(void 0);else if(isColumnWithOptions(e)){const t=e;o.push(t.options??[]),a.push(t.defaultValue)}}),{type:"multiple",columnsList:o,defaults:a}};export const normalizePicker=(e,t=[])=>{const n=Array.isArray(t)?t:[];return"cascade"===e.type&&e.cascadeRoot?.length?normalizeCascade(e.cascadeRoot,n):normalizeMultiple(e.columnsList,e.defaults,n)};const W=StyleSheet.create({column:{flex:1},option:{justifyContent:"center",alignItems:"center"},grab:{cursor:"pointer",userSelect:"none",touchAction:"none"}}),WheelPickerItemInner=({item:e,index:t,itemHeight:n,active:r,disabled:o,renderItem:a})=>{const l=a(e,t,{active:r,disabled:o});return React.createElement(View,{style:[W.option,{height:n}]},l)},WheelPickerItem=React.memo(WheelPickerItemInner),getVelocityBucket=e=>{const t=Math.abs(e);return t>1.2?2:t>.6?1:0},adjustIndex=(e,t)=>{const n=t.length;if(!n)return 0;const r=clamp(e,0,n-1),o=findEnabledIndex(t,r);return o>=0?o:r},indexToOffset=(e,t)=>-e*t,offsetToIndex=(e,t,n,r)=>{const o=-Math.max(0,n-1)*t,a=clamp(e,o,0);let l=Math.round(-a/t);l=adjustIndex(l,r);return{index:l,snapOffset:indexToOffset(l,t)}},shouldMomentum=(e,t)=>t<500&&Math.abs(e)>8,momentumTarget=(e,t,n,r,o)=>{const a=Math.abs(e/t),l=clamp(n+a/.0025*(e<0?-1:1),o,0),i=Math.round(-l/r);return indexToOffset(i,r)},WheelPickerInner=({data:e,selectedIndex:t,onChange:n,onInteractStart:r,onInteractEnd:o,renderItem:a,itemHeight:l,visibleRest:i,readOnly:c,indicatorColor:s,decelerationRate:u=Platform.select({ios:.9985,android:.995,default:.995})??"normal",scrollEventThrottle:m=16,swipeDuration:d=300})=>{const f="web"===Platform.OS,p=useRef(null),h=useRef(null),b=i*l,g=e.length,y=Math.max(0,g-1),R=-y*l,E=l*(2*i+1),v=clamp(t,0,y),x=findEnabledIndex(e,v),k=x>=0?x:v,C=2*i+1,w=g>20*C?32:m,I=g>4*C,T=useCallback(()=>React.createElement(View,{style:{height:b}}),[b]),V=useMemo(()=>[S.indicator,{height:l,top:l*i}],[l,i]),P=useRef(null),A=useRef(!1),M=useRef(0),O=useCallback(()=>{P.current&&(clearTimeout(P.current),P.current=null)},[]),D=useCallback((t,r)=>{if(c)return;const{index:o,snapOffset:a}=offsetToIndex(-t,l,g,e),i=-a;Math.abs(i-t)>.5&&p.current?.scrollToOffset({offset:i,animated:r}),n(o)},[e,l,n,c,g]);useEffect(()=>{const e=k*l;f||h.current?.scrollTo({y:e,animated:!1})},[f,l,k]);const[H,z]=useState(()=>indexToOffset(k,l)),L=useRef(H),F=useRef(0),j=useRef(0),[_,q]=useState(0),[G,N]=useState(0),$=useRef(0),B=useRef(null),Y=useRef(0),J=useRef(null),K=useRef(null),Q=useRef(null),U=useRef(null),X=useRef(!1),Z=useRef(r);Z.current=r;const ee=useRef(o);ee.current=o;const te=useCallback(()=>{c||X.current||(X.current=!0,Z.current?.())},[c]),ne=useCallback(()=>{X.current&&(X.current=!1,ee.current?.())},[]),re=useCallback(()=>{null!=U.current&&"undefined"!=typeof cancelAnimationFrame&&(cancelAnimationFrame(U.current),U.current=null),null!=J.current&&"undefined"!=typeof cancelAnimationFrame&&(cancelAnimationFrame(J.current),J.current=null)},[]),oe=useCallback(()=>{Q.current&&(clearTimeout(Q.current),Q.current=null)},[]);useEffect(()=>()=>{O(),oe(),re()},[O,oe,re]);const ae=useCallback(e=>{const t=getVelocityBucket(e);t!==$.current&&($.current=t,N(t))},[]),le=useCallback(e=>{const t=Date.now(),n=B.current;if(null!=n){const r=Math.max(1,t-n);ae(e/r)}B.current=t},[ae]);useEffect(()=>{if(!f)return;oe(),K.current=null,q(0);const e=indexToOffset(k,l);L.current=e,z(e)},[oe,f,l,k,q]);const ie=useCallback(()=>{if(c)return;const e=K.current;null!=e&&(K.current=null,oe(),q(0),ne(),n(e))},[oe,n,c,q]),ce=useCallback(e=>{if(c)return;te();const t=clamp(e,0,y),n=indexToOffset(t,l);oe(),K.current=t,L.current=n,q(d),z(n),d<=0?ie():Q.current=setTimeout(ie,d+80)},[oe,ie,l,y,c,d]),se=useCallback(t=>{if(c)return;const n=t.nativeEvent?.deltaY??0;n&&(Y.current+=n,null==J.current&&"undefined"!=typeof requestAnimationFrame&&(J.current=requestAnimationFrame(()=>{J.current=null;const t=Y.current;if(Y.current=0,!t)return;le(t);const n=t>0?1:-1,{index:r}=offsetToIndex(L.current,l,g,e),o=clamp(r+n,0,y);ce(o)})))},[e,l,y,c,ce,g,le]),ue=clamp(Math.round(-H/l),0,y),me=useMemo(()=>{if(!f||g<=0)return{items:null,topSpacer:null,bottomSpacer:null};let t=0,n=y;if(I){const e=Math.max(2*C,8),r=2===G?4*C:1===G?2*C:0,o=Math.min(e+r,Math.max(6*C,24));t=clamp(ue-o,0,y),n=clamp(ue+o,0,y)}const r=[];for(let o=t;o<=n;o+=1){const t=e[o];t&&r.push(React.createElement(WheelPickerItem,{key:`${o}-${String(t.value??"")}`,item:t,index:o,itemHeight:l,active:o===k,disabled:!!t.disabled,renderItem:a}))}const o=t*l,i=(y-n)*l;return{items:r,topSpacer:o>0&&React.createElement(View,{style:{height:o}}),bottomSpacer:i>0&&React.createElement(View,{style:{height:i}})}},[e,f,l,y,a,k,g,C,ue,G,I]),de=useMemo(()=>({transform:[{translateY:H}]}),[H]),fe=useMemo(()=>_?{transitionProperty:"transform",transitionDuration:_+"ms",transitionTimingFunction:"cubic-bezier(0.23, 1, 0.68, 1)",willChange:"transform"}:void 0,[_]),pe=useCallback(e=>{const t=e.nativeEvent?.propertyName??e.propertyName;t&&"transform"!==t&&"webkitTransform"!==t||ie()},[ie]),he=useMemo(()=>PanResponder.create({onStartShouldSetPanResponder:()=>!c,onMoveShouldSetPanResponder:()=>!c,onPanResponderGrant:()=>{re(),K.current=null,te(),q(0),F.current=L.current,j.current=Date.now()},onPanResponderMove:(e,t)=>{if(c)return;ae(t.vy);const n=clamp(F.current+t.dy,R,0);L.current=n,"undefined"==typeof requestAnimationFrame?z(n):null!=U.current||(U.current=requestAnimationFrame(()=>{U.current=null,z(L.current)}))},onPanResponderRelease:(t,n)=>{if(c)return;ae(0);const r=Date.now()-j.current,o=n.dy;let a=clamp(F.current+o,R,0);shouldMomentum(o,r)&&(a=momentumTarget(o,r,F.current,l,R));const{index:i}=offsetToIndex(a,l,g,e);ce(i)},onPanResponderTerminationRequest:()=>!1,onPanResponderTerminate:()=>{ne(),q(0)}}),[e,l,R,ne,te,c,ae,ce,re,g]),be=!c,ge=useCallback(()=>be,[be]),ye=useMemo(()=>({paddingVertical:b}),[b]),Re=useCallback(e=>{M.current=e.nativeEvent.contentOffset.y},[]),Ee=useCallback(()=>{A.current=!1,O(),te()},[O,te]),ve=useCallback(e=>{if(c)return;const t=e.nativeEvent.contentOffset.y;M.current=t,O(),P.current=setTimeout(()=>{A.current||(D(M.current,!0),ne())},80)},[O,D,ne,c]),xe=useCallback(()=>{A.current=!0,O(),te()},[O,te]),ke=useCallback(e=>{A.current=!1,O();const t=e.nativeEvent.contentOffset.y;M.current=t,D(t,!1),ne()},[O,D,ne]);return f?React.createElement(View,_extends({style:[W.column,{height:E},W.grab],onWheel:se},he.panHandlers),React.createElement(View,{style:V,pointerEvents:"none"},React.createElement(View,{style:createHairlineView({position:"top",color:s,left:0,right:0})}),React.createElement(View,{style:createHairlineView({position:"bottom",color:s,left:0,right:0})})),React.createElement(View,{style:[de,fe],onTransitionEnd:pe},React.createElement(T,null),me.topSpacer,me.items,me.bottomSpacer,React.createElement(T,null))):React.createElement(View,{style:[W.column,{height:E}],collapsable:!1},React.createElement(View,{style:V,pointerEvents:"none"},React.createElement(View,{style:createHairlineView({position:"top",color:s,left:0,right:0})}),React.createElement(View,{style:createHairlineView({position:"bottom",color:s,left:0,right:0})})),React.createElement(ScrollView,{ref:h,showsVerticalScrollIndicator:!1,scrollEventThrottle:w,decelerationRate:u,snapToInterval:l,snapToAlignment:"start",bounces:!1,overScrollMode:"never",nestedScrollEnabled:!0,contentContainerStyle:ye,onStartShouldSetResponderCapture:ge,onMoveShouldSetResponderCapture:ge,onScroll:Re,onScrollBeginDrag:Ee,onScrollEndDrag:ve,onMomentumScrollBegin:xe,onMomentumScrollEnd:ke,scrollEnabled:!c},e.map((e,t)=>React.createElement(WheelPickerItem,{key:`${t}-${String(e.value??"")}`,item:e,index:t,itemHeight:l,active:t===k,disabled:!!e.disabled,renderItem:a}))))},WheelPicker=React.memo(WheelPickerInner);export function usePickerValue({columns:e,valueProp:t,defaultValue:n,emitConfirmOnAutoSelect:r=!0,onChange:o,onConfirm:a}){const l=useMemo(()=>prepareColumns(e),[e]),i=void 0!==t,c=useRef(o),s=useRef(a);c.current=o,s.current=a;const[u,m]=useState(()=>normalizePicker(l,toArrayValue(t??n)).values),d=useRef(u);d.current=u;const f=useCallback(e=>{d.current=e,m(e)},[]);useEffect(()=>{if(!i)return;const e=toArrayValue(t);shallowEqualArray(d.current,e)||f(e)},[f,i,t]);const p=useMemo(()=>normalizePicker(l,u),[l,u]);useEffect(()=>{i||shallowEqualArray(u,p.values)||(f(p.values),c.current?.(p.values,p.options),r&&s.current?.(p.values,p.options))},[f,r,u,i,p]);const h=useCallback((e,t)=>{const n=[...d.current];n[t]=e.value,"cascade"===l.type&&(n.length=t+1);const r=normalizePicker(l,n);shallowEqualArray(d.current,r.values)||(f(r.values),c.current?.(r.values,r.options))},[f,l]),b=useCallback(()=>{s.current?.(p.values,p.options)},[p]);return{preparedColumns:l,normalized:p,handleSelect:h,handleConfirm:b}}const getVisibleCount=e=>{const t=isFiniteNumber(e)?Math.max(3,Math.floor(e)):5;return t%2==0?t+1:t},GRADIENT_OVERLAY_ALPHA=.25,GRADIENT_STEPS=[.95,.75,.55,.35],GRADIENT_STEPS_REVERSED=[.35,.55,.75,.95],GradientMask=({height:e,color:t,position:n,maskType:r})=>{const o=[S.gMask,{height:e},"top"===n?{top:0}:{bottom:0}],a=withAlpha(t,.25);if("solid"===r)return React.createElement(View,{pointerEvents:"none",style:[...o,{backgroundColor:withAlpha(t,.9)}]});if("web"===Platform.OS){const e="top"===n?"180deg":"0deg";return React.createElement(View,{pointerEvents:"none",style:[...o,{backgroundColor:a,backgroundImage:`linear-gradient(${e}, ${withAlpha(t,.98)}, ${withAlpha(t,.4)})`}]})}return React.createElement(View,{pointerEvents:"none",style:[...o,{backgroundColor:a}]},("top"===n?GRADIENT_STEPS:GRADIENT_STEPS_REVERSED).map((e,n)=>React.createElement(View,{key:n,style:{flex:1,backgroundColor:withAlpha(t,e)}})))},PickerColumn=React.memo(e=>{const{columnIndex:t,options:n,value:r,itemHeight:o,visibleItemCount:a,optionRender:l,getOptionTestID:i,getOptionA11yLabel:c,onSelect:s,tokens:u,readOnly:m,decelerationRate:d,scrollEventThrottle:f,swipeDuration:p}=e,h=Math.max(1,Math.floor((a-1)/2)),b=useMemo(()=>new Map(n.map((e,t)=>[e.value,t])),[n]),g=useMemo(()=>{if(!n.length)return 0;const e=b.get(r);return findEnabledIndex(n,"number"==typeof e&&e>=0?e:0)},[n,r,b]),y=useCallback(e=>{const r=findEnabledIndex(n,e),o=n[r];o&&!o.disabled&&s(o,t,r)},[t,s,n]),{text:R,textDisabled:E,textMuted:v}=u.colors,x={fontSize:u.typography.optionSize,fontFamily:u.typography.fontFamily,fontWeight:u.typography.optionWeight},k=useCallback((e,n,r)=>{const{active:a=!1,disabled:s=!1}=r??{},u=s?E:a?R:v,m=l?l(e,{columnIndex:t,active:a}):e.label??e.value,d=i?.(e,{columnIndex:t,active:a}),f=c?.(e,{columnIndex:t,active:a});return React.createElement(View,{style:[W.option,{opacity:s?.5:1,minHeight:o}],testID:d,accessible:!!f,accessibilityLabel:f},isText(m)?React.createElement(Text,{numberOfLines:1,style:[S.optTxt,x,{color:u}]},m):m)},[R,E,v,t,c,i,o,x,l]);return React.createElement(View,{style:[W.column,{height:o*a}]},React.createElement(WheelPicker,{data:n,itemHeight:o,visibleRest:h,selectedIndex:Math.max(0,g),onChange:y,readOnly:m,indicatorColor:u.colors.indicator,decelerationRate:d,scrollEventThrottle:f,swipeDuration:p,renderItem:k}))}),PickerImpl=e=>{const{tokensOverride:t}=e,n=useLocale(),r=usePickerTokens(t),{columns:o=[],value:a,defaultValue:l,title:i,showToolbar:c=r.defaults.showToolbar,toolbarPosition:s=r.defaults.toolbarPosition,confirmButtonText:u=n?.confirm??"Confirm",cancelButtonText:m=n?.cancel??"Cancel",itemHeight:d=r.defaults.itemHeight,visibleItemCount:f=r.defaults.visibleItemCount,loading:p=!1,readOnly:h=!1,decelerationRate:b=Platform.select({ios:.999,android:.997,default:.989})??"normal",swipeDuration:g=r.defaults.swipeDuration,scrollEventThrottle:y=16,columnsTop:R,columnsBottom:E,optionRender:v,getOptionTestID:x,getOptionA11yLabel:k,emitConfirmOnAutoSelect:C=!0,maskColor:w,maskType:I=r.defaults.maskType,onChange:T,onConfirm:V,onCancel:P,style:A,testID:M,...O}=e,W=getVisibleCount(f??r.defaults.visibleItemCount),{normalized:D,handleSelect:H,handleConfirm:z,preparedColumns:L}=usePickerValue({columns:o,valueProp:a,defaultValue:l,emitConfirmOnAutoSelect:C,onChange:T,onConfirm:V}),F="cascade"===L.type,j={fontSize:r.typography.toolbarSize,fontFamily:r.typography.fontFamily,fontWeight:r.typography.toolbarWeight},_=(e,t)=>React.isValidElement(e)?React.createElement(View,{style:S.actW},e):isText(e)?React.createElement(Text,{numberOfLines:1,style:[S.actTxt,j,{color:t}]},e):React.createElement(View,{style:S.actW}),q=c?React.createElement(View,{style:[S.toolbar,{height:r.spacing.toolbarHeight,paddingHorizontal:r.spacing.actionPadding}]},React.createElement(Pressable,{onPress:P,accessibilityRole:"button"},_(m,r.colors.cancel)),null==(G=i)?React.createElement(View,null):React.isValidElement(G)?React.createElement(View,{style:S.ttlW},G):React.createElement(Text,{style:[S.title,j,{color:r.colors.text}],numberOfLines:1},G),React.createElement(Pressable,{onPress:z,accessibilityRole:"button"},_(u,r.colors.confirm)),React.createElement(View,{style:createHairlineView({position:"bottom",color:r.colors.indicator,left:0,right:0})})):null;var G;const N=d*W,$=Math.max(1,Math.floor((W-1)/2)),B=d*$,Y=B,J=D.columns.length>0,K=w??r.colors.mask,Q=J?D.columns.map((e,t)=>{const n=F?`${t}-${D.values.slice(0,t).map(String).join("|")}`:String(t);return React.createElement(PickerColumn,{key:n,columnIndex:t,options:e,value:D.values[t],itemHeight:d,visibleItemCount:W,decelerationRate:b,scrollEventThrottle:y,optionRender:v,getOptionTestID:x,getOptionA11yLabel:k,readOnly:h,swipeDuration:g,onSelect:H,tokens:r})}):null;return React.createElement(View,_extends({},O,{style:[{backgroundColor:r.colors.background,borderRadius:r.radius.container},A],testID:M}),"top"===s&&q,React.createElement(View,{style:[S.body,{height:N}]},React.createElement(View,{style:S.columns,pointerEvents:p?"none":"auto"},R,Q,E,J&&React.createElement(React.Fragment,null,React.createElement(View,{pointerEvents:"none",style:[S.indicator,{top:B,height:d}]},React.createElement(View,{style:createHairlineView({position:"top",color:r.colors.indicator,left:0,right:0})}),React.createElement(View,{style:createHairlineView({position:"bottom",color:r.colors.indicator,left:0,right:0})})),React.createElement(GradientMask,{position:"top",height:Y,color:K,maskType:I}),React.createElement(GradientMask,{position:"bottom",height:Y,color:K,maskType:I}))),p&&React.createElement(View,{style:[S.loading,{backgroundColor:r.colors.loadingMask}]},React.createElement(Loading,null))),"bottom"===s&&q)},S=StyleSheet.create({body:{position:"relative",overflow:"hidden"},columns:{flex:1,flexDirection:"row"},optTxt:{includeFontPadding:!1},indicator:{position:"absolute",left:0,right:0,zIndex:3},gMask:{position:"absolute",left:0,right:0,zIndex:2},toolbar:{flexDirection:"row",alignItems:"center",justifyContent:"space-between"},title:{flex:1,textAlign:"center"},ttlW:{flex:1,alignItems:"center",justifyContent:"center"},actTxt:{minWidth:44,textAlign:"center"},actW:{minWidth:44,alignItems:"center",justifyContent:"center"},loading:{position:"absolute",top:0,left:0,right:0,bottom:0,alignItems:"center",justifyContent:"center"}}),Picker=React.memo(PickerImpl);export default Picker;
|
|
1
|
+
function _extends(){return _extends=Object.assign?Object.assign.bind():function(e){for(var t=1;t<arguments.length;t++){var n=arguments[t];for(var r in n)({}).hasOwnProperty.call(n,r)&&(e[r]=n[r])}return e},_extends.apply(null,arguments)}import React,{useCallback,useEffect,useMemo,useRef,useState}from"react";import{Pressable,Text,View,Platform,StyleSheet,ScrollView,PanResponder}from"react-native";import Loading from"../loading";import{useLocale}from"../config-provider/useLocale";import{isText}from"../../utils/validate";import{clamp}from"../../utils";import{usePickerTokens}from"./tokens";import{createHairlineView}from"../../utils/hairline";import{findEnabledIndex}from"../../hooks/picker/normalize";import{getVisibleCount,GradientMask,usePickerValue}from"../../hooks/picker/value";export{toArrayValue,findEnabledIndex,prepareColumns,normalizePicker}from"../../hooks/picker/normalize";export{usePickerValue}from"../../hooks/picker/value";const W=StyleSheet.create({column:{flex:1},option:{justifyContent:"center",alignItems:"center"},grab:{cursor:"pointer",userSelect:"none",touchAction:"none"}}),WheelPickerItemInner=({item:e,index:t,itemHeight:n,active:r,disabled:o,renderItem:l})=>{const a=l(e,t,{active:r,disabled:o});return React.createElement(View,{style:[W.option,{height:n}]},a)},WheelPickerItem=React.memo(WheelPickerItemInner),getVelocityBucket=e=>{const t=Math.abs(e);return t>1.2?2:t>.6?1:0},adjustIndex=(e,t)=>{const n=t.length;if(!n)return 0;const r=clamp(e,0,n-1),o=findEnabledIndex(t,r);return o>=0?o:r},indexToOffset=(e,t)=>-e*t,offsetToIndex=(e,t,n,r)=>{const o=-Math.max(0,n-1)*t,l=clamp(e,o,0);let a=Math.round(-l/t);a=adjustIndex(a,r);return{index:a,snapOffset:indexToOffset(a,t)}},shouldMomentum=(e,t)=>t<500&&Math.abs(e)>8,momentumTarget=(e,t,n,r,o)=>{const l=Math.abs(e/t),a=clamp(n+l/.0025*(e<0?-1:1),o,0),i=Math.round(-a/r);return indexToOffset(i,r)},WheelPickerInner=({data:e,selectedIndex:t,onChange:n,onInteractStart:r,onInteractEnd:o,renderItem:l,itemHeight:a,visibleRest:i,readOnly:c,indicatorColor:s,decelerationRate:u=Platform.select({ios:.9985,android:.995,default:.995})??"normal",scrollEventThrottle:m=16,swipeDuration:d=300})=>{const f="web"===Platform.OS,p=useRef(null),h=useRef(null),b=i*a,g=e.length,y=Math.max(0,g-1),R=-y*a,E=a*(2*i+1),k=clamp(t,0,y),x=findEnabledIndex(e,k),v=x>=0?x:k,w=2*i+1,C=g>20*w?32:m,I=g>4*w,T=useCallback(()=>React.createElement(View,{style:{height:b}}),[b]),V=useMemo(()=>[S.indicator,{height:a,top:a*i}],[a,i]),P=useRef(null),M=useRef(!1),O=useRef(0),D=useCallback(()=>{P.current&&(clearTimeout(P.current),P.current=null)},[]),H=useCallback((t,r)=>{if(c)return;const{index:o,snapOffset:l}=offsetToIndex(-t,a,g,e),i=-l;Math.abs(i-t)>.5&&p.current?.scrollToOffset({offset:i,animated:r}),n(o)},[e,a,n,c,g]);useEffect(()=>{const e=v*a;f||h.current?.scrollTo({y:e,animated:!1})},[f,a,v]);const[A,F]=useState(()=>indexToOffset(v,a)),L=useRef(A),z=useRef(0),j=useRef(0),[B,$]=useState(0),[q,_]=useState(0),G=useRef(0),N=useRef(null),Y=useRef(0),J=useRef(null),K=useRef(null),Q=useRef(null),U=useRef(null),X=useRef(!1),Z=useRef(r);Z.current=r;const ee=useRef(o);ee.current=o;const te=useCallback(()=>{c||X.current||(X.current=!0,Z.current?.())},[c]),ne=useCallback(()=>{X.current&&(X.current=!1,ee.current?.())},[]),re=useCallback(()=>{null!=U.current&&"undefined"!=typeof cancelAnimationFrame&&(cancelAnimationFrame(U.current),U.current=null),null!=J.current&&"undefined"!=typeof cancelAnimationFrame&&(cancelAnimationFrame(J.current),J.current=null)},[]),oe=useCallback(()=>{Q.current&&(clearTimeout(Q.current),Q.current=null)},[]);useEffect(()=>()=>{D(),oe(),re()},[D,oe,re]);const le=useCallback(e=>{const t=getVelocityBucket(e);t!==G.current&&(G.current=t,_(t))},[]),ae=useCallback(e=>{const t=Date.now(),n=N.current;if(null!=n){const r=Math.max(1,t-n);le(e/r)}N.current=t},[le]);useEffect(()=>{if(!f)return;oe(),K.current=null,$(0);const e=indexToOffset(v,a);L.current=e,F(e)},[oe,f,a,v,$]);const ie=useCallback(()=>{if(c)return;const e=K.current;null!=e&&(K.current=null,oe(),$(0),ne(),n(e))},[oe,n,c,$]),ce=useCallback(e=>{if(c)return;te();const t=clamp(e,0,y),n=indexToOffset(t,a);oe(),K.current=t,L.current=n,$(d),F(n),d<=0?ie():Q.current=setTimeout(ie,d+80)},[oe,ie,a,y,c,d]),se=useCallback(t=>{if(c)return;const n=t.nativeEvent?.deltaY??0;n&&(Y.current+=n,null==J.current&&"undefined"!=typeof requestAnimationFrame&&(J.current=requestAnimationFrame(()=>{J.current=null;const t=Y.current;if(Y.current=0,!t)return;ae(t);const n=t>0?1:-1,{index:r}=offsetToIndex(L.current,a,g,e),o=clamp(r+n,0,y);ce(o)})))},[e,a,y,c,ce,g,ae]),ue=clamp(Math.round(-A/a),0,y),me=useMemo(()=>{if(!f||g<=0)return{items:null,topSpacer:null,bottomSpacer:null};let t=0,n=y;if(I){const e=Math.max(2*w,8),r=2===q?4*w:1===q?2*w:0,o=Math.min(e+r,Math.max(6*w,24));t=clamp(ue-o,0,y),n=clamp(ue+o,0,y)}const r=[];for(let o=t;o<=n;o+=1){const t=e[o];t&&r.push(React.createElement(WheelPickerItem,{key:`${o}-${String(t.value??"")}`,item:t,index:o,itemHeight:a,active:o===v,disabled:!!t.disabled,renderItem:l}))}const o=t*a,i=(y-n)*a;return{items:r,topSpacer:o>0&&React.createElement(View,{style:{height:o}}),bottomSpacer:i>0&&React.createElement(View,{style:{height:i}})}},[e,f,a,y,l,v,g,w,ue,q,I]),de=useMemo(()=>({transform:[{translateY:A}]}),[A]),fe=useMemo(()=>B?{transitionProperty:"transform",transitionDuration:B+"ms",transitionTimingFunction:"cubic-bezier(0.23, 1, 0.68, 1)",willChange:"transform"}:void 0,[B]),pe=useCallback(e=>{const t=e.nativeEvent?.propertyName??e.propertyName;t&&"transform"!==t&&"webkitTransform"!==t||ie()},[ie]),he=useMemo(()=>PanResponder.create({onStartShouldSetPanResponder:()=>!c,onMoveShouldSetPanResponder:()=>!c,onPanResponderGrant:()=>{re(),K.current=null,te(),$(0),z.current=L.current,j.current=Date.now()},onPanResponderMove:(e,t)=>{if(c)return;le(t.vy);const n=clamp(z.current+t.dy,R,0);L.current=n,"undefined"==typeof requestAnimationFrame?F(n):null!=U.current||(U.current=requestAnimationFrame(()=>{U.current=null,F(L.current)}))},onPanResponderRelease:(t,n)=>{if(c)return;le(0);const r=Date.now()-j.current,o=n.dy;let l=clamp(z.current+o,R,0);shouldMomentum(o,r)&&(l=momentumTarget(o,r,z.current,a,R));const{index:i}=offsetToIndex(l,a,g,e);ce(i)},onPanResponderTerminationRequest:()=>!1,onPanResponderTerminate:()=>{ne(),$(0)}}),[e,a,R,ne,te,c,le,ce,re,g]),be=!c,ge=useCallback(()=>be,[be]),ye=useMemo(()=>({paddingVertical:b}),[b]),Re=useCallback(e=>{O.current=e.nativeEvent.contentOffset.y},[]),Ee=useCallback(()=>{M.current=!1,D(),te()},[D,te]),ke=useCallback(e=>{if(c)return;const t=e.nativeEvent.contentOffset.y;O.current=t,D(),P.current=setTimeout(()=>{M.current||(H(O.current,!0),ne())},80)},[D,H,ne,c]),xe=useCallback(()=>{M.current=!0,D(),te()},[D,te]),Se=useCallback(e=>{M.current=!1,D();const t=e.nativeEvent.contentOffset.y;O.current=t,H(t,!1),ne()},[D,H,ne]);return f?React.createElement(View,_extends({style:[W.column,{height:E},W.grab],onWheel:se},he.panHandlers),React.createElement(View,{style:V,pointerEvents:"none"},React.createElement(View,{style:createHairlineView({position:"top",color:s,left:0,right:0})}),React.createElement(View,{style:createHairlineView({position:"bottom",color:s,left:0,right:0})})),React.createElement(View,{style:[de,fe],onTransitionEnd:pe},React.createElement(T,null),me.topSpacer,me.items,me.bottomSpacer,React.createElement(T,null))):React.createElement(View,{style:[W.column,{height:E}],collapsable:!1},React.createElement(View,{style:V,pointerEvents:"none"},React.createElement(View,{style:createHairlineView({position:"top",color:s,left:0,right:0})}),React.createElement(View,{style:createHairlineView({position:"bottom",color:s,left:0,right:0})})),React.createElement(ScrollView,{ref:h,showsVerticalScrollIndicator:!1,scrollEventThrottle:C,decelerationRate:u,snapToInterval:a,snapToAlignment:"start",bounces:!1,overScrollMode:"never",nestedScrollEnabled:!0,contentContainerStyle:ye,onStartShouldSetResponderCapture:ge,onMoveShouldSetResponderCapture:ge,onScroll:Re,onScrollBeginDrag:Ee,onScrollEndDrag:ke,onMomentumScrollBegin:xe,onMomentumScrollEnd:Se,scrollEnabled:!c},e.map((e,t)=>React.createElement(WheelPickerItem,{key:`${t}-${String(e.value??"")}`,item:e,index:t,itemHeight:a,active:t===v,disabled:!!e.disabled,renderItem:l}))))},WheelPicker=React.memo(WheelPickerInner),PickerColumn=React.memo(e=>{const{columnIndex:t,options:n,value:r,itemHeight:o,visibleItemCount:l,optionRender:a,getOptionTestID:i,getOptionA11yLabel:c,onSelect:s,tokens:u,readOnly:m,decelerationRate:d,scrollEventThrottle:f,swipeDuration:p}=e,h=Math.max(1,Math.floor((l-1)/2)),b=useMemo(()=>new Map(n.map((e,t)=>[e.value,t])),[n]),g=useMemo(()=>{if(!n.length)return 0;const e=b.get(r);return findEnabledIndex(n,"number"==typeof e&&e>=0?e:0)},[n,r,b]),y=useCallback(e=>{const r=findEnabledIndex(n,e),o=n[r];o&&!o.disabled&&s(o,t,r)},[t,s,n]),{text:R,textDisabled:E,textMuted:k}=u.colors,x={fontSize:u.typography.optionSize,fontFamily:u.typography.fontFamily,fontWeight:u.typography.optionWeight},v=useCallback((e,n,r)=>{const{active:l=!1,disabled:s=!1}=r??{},u=s?E:l?R:k,m=a?a(e,{columnIndex:t,active:l}):e.label??e.value,d=i?.(e,{columnIndex:t,active:l}),f=c?.(e,{columnIndex:t,active:l});return React.createElement(View,{style:[W.option,{opacity:s?.5:1,minHeight:o}],testID:d,accessible:!!f,accessibilityLabel:f},isText(m)?React.createElement(Text,{numberOfLines:1,style:[S.optTxt,x,{color:u}]},m):m)},[R,E,k,t,c,i,o,x,a]);return React.createElement(View,{style:[W.column,{height:o*l}]},React.createElement(WheelPicker,{data:n,itemHeight:o,visibleRest:h,selectedIndex:Math.max(0,g),onChange:y,readOnly:m,indicatorColor:u.colors.indicator,decelerationRate:d,scrollEventThrottle:f,swipeDuration:p,renderItem:v}))}),PickerImpl=e=>{const{tokensOverride:t}=e,n=useLocale(),r=usePickerTokens(t),{columns:o=[],value:l,defaultValue:a,title:i,showToolbar:c=r.defaults.showToolbar,toolbarPosition:s=r.defaults.toolbarPosition,confirmButtonText:u=n?.confirm??"Confirm",cancelButtonText:m=n?.cancel??"Cancel",itemHeight:d=r.defaults.itemHeight,visibleItemCount:f=r.defaults.visibleItemCount,loading:p=!1,readOnly:h=!1,decelerationRate:b=Platform.select({ios:.999,android:.997,default:.989})??"normal",swipeDuration:g=r.defaults.swipeDuration,scrollEventThrottle:y=16,columnsTop:R,columnsBottom:E,optionRender:k,getOptionTestID:x,getOptionA11yLabel:v,emitConfirmOnAutoSelect:w=!0,maskColor:C,maskType:I=r.defaults.maskType,onChange:T,onConfirm:V,onCancel:P,style:M,testID:O,...W}=e,D=getVisibleCount(f??r.defaults.visibleItemCount),{normalized:H,handleSelect:A,handleConfirm:F,preparedColumns:L}=usePickerValue({columns:o,valueProp:l,defaultValue:a,emitConfirmOnAutoSelect:w,onChange:T,onConfirm:V}),z="cascade"===L.type,j={fontSize:r.typography.toolbarSize,fontFamily:r.typography.fontFamily,fontWeight:r.typography.toolbarWeight},B=(e,t)=>React.isValidElement(e)?React.createElement(View,{style:S.actW},e):isText(e)?React.createElement(Text,{numberOfLines:1,style:[S.actTxt,j,{color:t}]},e):React.createElement(View,{style:S.actW}),$=c?React.createElement(View,{style:[S.toolbar,{height:r.spacing.toolbarHeight,paddingHorizontal:r.spacing.actionPadding}]},React.createElement(Pressable,{onPress:P,accessibilityRole:"button"},B(m,r.colors.cancel)),null==(q=i)?React.createElement(View,null):React.isValidElement(q)?React.createElement(View,{style:S.ttlW},q):React.createElement(Text,{style:[S.title,j,{color:r.colors.text}],numberOfLines:1},q),React.createElement(Pressable,{onPress:F,accessibilityRole:"button"},B(u,r.colors.confirm)),React.createElement(View,{style:createHairlineView({position:"bottom",color:r.colors.indicator,left:0,right:0})})):null;var q;const _=d*D,G=Math.max(1,Math.floor((D-1)/2)),N=d*G,Y=N,J=H.columns.length>0,K=C??r.colors.mask,Q=J?H.columns.map((e,t)=>{const n=z?`${t}-${H.values.slice(0,t).map(String).join("|")}`:String(t);return React.createElement(PickerColumn,{key:n,columnIndex:t,options:e,value:H.values[t],itemHeight:d,visibleItemCount:D,decelerationRate:b,scrollEventThrottle:y,optionRender:k,getOptionTestID:x,getOptionA11yLabel:v,readOnly:h,swipeDuration:g,onSelect:A,tokens:r})}):null;return React.createElement(View,_extends({},W,{style:[{backgroundColor:r.colors.background,borderRadius:r.radius.container},M],testID:O}),"top"===s&&$,React.createElement(View,{style:[S.body,{height:_}]},React.createElement(View,{style:S.columns,pointerEvents:p?"none":"auto"},R,Q,E,J&&React.createElement(React.Fragment,null,React.createElement(View,{pointerEvents:"none",style:[S.indicator,{top:N,height:d}]},React.createElement(View,{style:createHairlineView({position:"top",color:r.colors.indicator,left:0,right:0})}),React.createElement(View,{style:createHairlineView({position:"bottom",color:r.colors.indicator,left:0,right:0})})),React.createElement(GradientMask,{position:"top",height:Y,color:K,maskType:I}),React.createElement(GradientMask,{position:"bottom",height:Y,color:K,maskType:I}))),p&&React.createElement(View,{style:[S.loading,{backgroundColor:r.colors.loadingMask}]},React.createElement(Loading,null))),"bottom"===s&&$)},S=StyleSheet.create({body:{position:"relative",overflow:"hidden"},columns:{flex:1,flexDirection:"row"},optTxt:{includeFontPadding:!1},indicator:{position:"absolute",left:0,right:0,zIndex:3},toolbar:{flexDirection:"row",alignItems:"center",justifyContent:"space-between"},title:{flex:1,textAlign:"center"},ttlW:{flex:1,alignItems:"center",justifyContent:"center"},actTxt:{minWidth:44,textAlign:"center"},actW:{minWidth:44,alignItems:"center",justifyContent:"center"},loading:{position:"absolute",top:0,left:0,right:0,bottom:0,alignItems:"center",justifyContent:"center"}}),Picker=React.memo(PickerImpl);export default Picker;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
function _extends(){return _extends=Object.assign?Object.assign.bind():function(e){for(var t=1;t<arguments.length;t++){var o=arguments[t];for(var n in o)({}).hasOwnProperty.call(o,n)&&(e[n]=o[n])}return e},_extends.apply(null,arguments)}import React,{useCallback,useEffect,useMemo,useRef,useState}from"react";import{Animated,
|
|
1
|
+
function _extends(){return _extends=Object.assign?Object.assign.bind():function(e){for(var t=1;t<arguments.length;t++){var o=arguments[t];for(var n in o)({}).hasOwnProperty.call(o,n)&&(e[n]=o[n])}return e},_extends.apply(null,arguments)}import React,{useCallback,useEffect,useMemo,useRef,useState}from"react";import{Animated,Platform,Pressable,StyleSheet,Text,View,useWindowDimensions}from"react-native";import{SafeAreaView}from"../safe-area-view";import{addPopStateListener,nativeDriverEnabled}from"../../platform";import{useReducedMotion}from"../../hooks/animation";import{createPlatformShadow}from"../../utils/createPlatformShadow";import{isRenderable,isText}from"../../utils/validate";import{Cross}from"react-native-system-icon";import Portal from"../portal/Portal";import{useAriaOverlay,useOverlayStack}from"../../hooks";import{useLocale}from"../config-provider/useLocale";import{useDirection}from"../config-provider/useDirection";import{usePopupTokens}from"./tokens";import{buildRadius,CAPTURE,CONTENT_SELF,EASE_IN,EASE_OUT,hiddenStyle,placementConfig}from"../../hooks/popup/utils";const AnimatedPressable=Animated.createAnimatedComponent(Pressable),PopupImpl=e=>{const t=useLocale(),o=useDirection(),{visible:n,placement:i,position:r,title:l,description:s,tokensOverride:a,overlay:c=!0,overlayStyle:u,overlayAccessibilityLabel:p=t?.vanPopup?.closeOverlay??"Close overlay",closeOnOverlayPress:d,closeOnClickOverlay:m,overlayTestID:f="popup-overlay",closeable:y=!1,closeIcon:g,closeIconPosition:h="top-right",round:b,safeArea:R=!1,safeAreaInsetTop:v=!1,safeAreaInsetBottom:E,lockScroll:C=!0,destroyOnClose:O=!1,duration:P=300,zIndex:I,closeOnBackPress:A=!1,closeOnPopstate:k=!1,children:w,beforeClose:x,onClickOverlay:T,onClose:z,onOpen:W,onOpened:L,onClosed:V,stopPropagation:D=!0,style:F,contentAnimationStyle:H,...M}=e,B=i??r??"center",_=m??d??!0,j="center"===B,N=E??!1,U=usePopupTokens(a),X=useReducedMotion(),Y=useRef({onOpened:L,onClosed:V,onOpen:W,onClose:z,beforeClose:x,onClickOverlay:T});Y.current={onOpened:L,onClosed:V,onOpen:W,onClose:z,beforeClose:x,onClickOverlay:T};const q=useMemo(()=>{const e=createPlatformShadow(U.shadow),{colors:t,spacing:o,typography:n,layout:i}=U;return{popup:{backgroundColor:t.background,padding:o.padding,...e},title:{color:t.title,fontFamily:n.fontFamily,fontSize:n.titleSize,fontWeight:n.titleWeight,marginHorizontal:o.descriptionHorizontal,textAlign:"center"},titleWrap:{marginTop:o.titleTop,marginBottom:o.titleBottom,marginHorizontal:o.descriptionHorizontal,alignItems:"center"},desc:{color:t.description,fontFamily:n.fontFamily,fontSize:n.descriptionSize,lineHeight:n.descriptionLineHeight},descWrap:{marginHorizontal:o.descriptionHorizontal,marginBottom:o.descriptionBottom},closeBase:{minWidth:o.closeIconSize,minHeight:o.closeIconSize,padding:o.closeIconPadding},closeDef:{width:o.closeIconSize,height:o.closeIconSize},side:{width:i.sideWidth,maxWidth:i.maxWidth},center:{minWidth:i.minWidth,maxWidth:i.centerMaxWidth}}},[U]),[G,J]=useState(n),[K,Q]=useState(n),Z=n||K,$=_&&(z||x),ee=useRef(new Animated.Value(0)).current,te=useRef(null),oe=useRef(0),ne=useRef(n),ie=useRef(!1),re="top"===B||"bottom"===B,le="left"===B||"right"===B,se="top"===B||"left"===B?-1:1,ae=useCallback((e,t)=>{oe.current+=1;const o=oe.current;te.current?.stop();const n=t?0:P,i=Animated.timing(ee,{toValue:e?1:0,duration:n,easing:e?EASE_OUT:EASE_IN,useNativeDriver:nativeDriverEnabled,isInteraction:!1});te.current=i,i.start(({finished:t})=>{t&&o===oe.current&&(e?Y.current.onOpened?.():(Q(!1),O&&J(!1),Y.current.onClosed?.()))})},[O,P,ee]);useEffect(()=>{n?(J(!0),Q(!0),ae(!0,X)):ne.current&&ae(!1,X)},[ae,n,X]),useEffect(()=>{n&&!ne.current&&Y.current.onOpen?.(),ne.current=n},[n]),useEffect(()=>()=>{te.current?.stop()},[]);const ce=useCallback(async e=>{if(!ie.current){ie.current=!0;try{if(Y.current.beforeClose){if(!1===await Y.current.beforeClose(e))return}Y.current.onClose?.()}finally{ie.current=!1}}},[]);useEffect(()=>{if(k)return addPopStateListener(()=>{n&&ce("close")})},[k,ce,n]);const ue=useCallback(()=>{Y.current.onClickOverlay?.(),_&&ce("overlay")},[ce,_]),pe=useCallback(()=>ce("close-icon"),[ce]),de=useCallback(()=>ce("close"),[ce]),{zIndex:me}=useOverlayStack({visible:Z,onClose:de,closeOnBack:A,lockScroll:C,zIndex:I,type:"popup"}),{overlayRef:fe,overlayProps:ye}=useAriaOverlay({isOpen:Z,onClose:()=>ce("overlay"),isDismissable:_,overlayProps:{..."android"===Platform.OS?{}:{accessibilityRole:"dialog"},accessibilityLiveRegion:"polite"}}),{onLayout:ge,...Se}=ye,he=useMemo(()=>D?{...Se,onStartShouldSetResponder:CAPTURE}:Se,[Se,D]),be=placementConfig[B],Re=buildRadius(b,B,U.radius.round),{width:ve,height:Ee}=useWindowDimensions(),Ce=le?ve:re?Ee:0,Oe=useMemo(()=>{if(j)return null;const e=[Ce*se,0];return"y"===be.axis?{translateY:ee.interpolate({inputRange:[0,1],outputRange:e})}:{translateX:ee.interpolate({inputRange:[0,1],outputRange:e})}},[be.axis,se,Ce,j,ee]),Pe=useMemo(()=>Oe?[Oe]:[],[Oe]),Ie=useMemo(()=>{const e=H?.transform,t=Array.isArray(e)?[...Pe,...e]:Pe,o={...H,transform:t};return j?{...o,opacity:ee}:null==H?.opacity?{...o,opacity:1}:o},[Pe,H,j,ee]),[Ae,ke]=useState(0),we=useCallback(e=>ke(e.nativeEvent.layout.height),[]),xe=G||n,Te=!Z,ze=isRenderable(l)||isRenderable(s),We=useMemo(()=>{if(!ze)return null;const e=U.spacing.closeIconRight+U.spacing.closeIconSize,t=y&&h.startsWith("top-")?h.endsWith("right")?{paddingRight:e}:{paddingLeft:e}:void 0,o=(e,t,o)=>isRenderable(e)?isText(e)?React.createElement(Text,{style:t},e):React.createElement(View,{style:o},e):null;return React.createElement(View,{style:[S.header,t]},o(l,[S.title,q.title],q.titleWrap),o(s,[S.desc,q.desc],q.descWrap))},[y,h,s,q,ze,l,U.spacing.closeIconRight,U.spacing.closeIconSize]),Le=useMemo(()=>{if(!y)return null;const e=null!=g,t=h.includes("bottom")?{bottom:U.spacing.closeIconTop}:{top:U.spacing.closeIconTop+Ae},n="rtl"===o,i=h.endsWith("left")?n?{right:U.spacing.closeIconRight}:{left:U.spacing.closeIconRight}:n?{left:U.spacing.closeIconRight}:{right:U.spacing.closeIconRight};return React.createElement(Pressable,{style:[S.closeBase,q.closeBase,t,i,!e&&q.closeDef],hitSlop:8,onPress:pe},e?g:React.createElement(Cross,{size:22,fill:U.colors.closeIcon,color:U.colors.closeIcon}))},[g,h,y,q,pe,Ae,U.colors.closeIcon,U.spacing.closeIconRight,U.spacing.closeIconTop]),Ve=ze?React.createElement(React.Fragment,null,We,w):w;if(!xe)return null;const De=me??I,Fe=R?React.createElement(SafeAreaView,null,Ve):React.createElement(React.Fragment,null,v&&React.createElement(SafeAreaView,{edge:"top",onLayout:we,pointerEvents:"none"}),Ve,N&&React.createElement(SafeAreaView,{edge:"bottom",pointerEvents:"none"}));return React.createElement(Portal,null,React.createElement(View,{style:[S.root,De?{zIndex:De}:void 0],pointerEvents:"box-none"},React.createElement(View,{style:[S.ctr,be.container],pointerEvents:Z?"auto":"none",accessibilityViewIsModal:Z,accessibilityLiveRegion:"polite",onAccessibilityEscape:de},c&&Z?React.createElement(AnimatedPressable,_extends({testID:f,style:[S.ovl,{backgroundColor:U.colors.overlay,opacity:ee},u],renderToHardwareTextureAndroid:"android"===Platform.OS,shouldRasterizeIOS:"ios"===Platform.OS,pointerEvents:Z?"auto":"none"},$?{accessibilityRole:"button",accessibilityLabel:p,accessibilityHint:t?.vanPopup?.closeHint??"Double-tap to close"}:{accessible:!1},{onPress:ue})):null,!c&&C&&Z?React.createElement(View,{style:S.lock,pointerEvents:"auto",onStartShouldSetResponder:CAPTURE,onMoveShouldSetResponder:CAPTURE}):null,React.createElement(Animated.View,_extends({ref:fe},he,{onLayout:ge,renderToHardwareTextureAndroid:"android"===Platform.OS,shouldRasterizeIOS:"ios"===Platform.OS,style:[q.popup,j&&q.center,re&&S.popV,le&&q.side,CONTENT_SELF[B],Re,Ie,F,Te&&hiddenStyle]},M),Le,Fe))))},S=StyleSheet.create({root:{...StyleSheet.absoluteFillObject,justifyContent:"center"},ctr:{flex:1},ovl:{...StyleSheet.absoluteFillObject,opacity:0},header:{width:"100%"},title:{includeFontPadding:!1},desc:{includeFontPadding:!1},popV:{alignSelf:"stretch"},closeBase:{position:"absolute",zIndex:999,alignItems:"center",justifyContent:"center"},lock:{...StyleSheet.absoluteFillObject}});export const Popup=React.memo(PopupImpl);export default Popup;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
import React,{useCallback,useEffect,useMemo,useRef,useState}from"react";import{DeviceEventEmitter,NativeEventEmitter,Platform,StyleSheet,View}from"react-native";import{isNumber}from"../../utils";import{PortalContext}from"./PortalContext";const AE="RNSU_PORTAL_ADD",UE="RNSU_PORTAL_UPDATE",RE="RNSU_PORTAL_REMOVE",CE="RNSU_PORTAL_CLEAR",TVE=DeviceEventEmitter||new NativeEventEmitter,IW="web"===Platform.OS,ao=(e,t)=>{"mount"===t.type?e.mount(t.children,t.key):"update"===t.type?e.update(t.key,t.children):"clear"===t.type?e.clear():e.unmount(t.key)},PortalManagerView=React.forwardRef((e,t)=>{const[r,n]=useState([]),a=useRef(0),o=useCallback(e=>{n(t=>{const r=t.findIndex(t=>t.key===e.key);return-1===r?[...t,e]:[...t.slice(0,r),e,...t.slice(r+1)]})},[]),l=useCallback((e,t)=>{const r=t??++a.current;return isNumber(t)&&t>=a.current&&(a.current=t+1),o({key:r,children:e}),r},[o]),c=useCallback((e,t)=>{o({key:e,children:t})},[o]),u=useCallback(e=>{n(t=>t.filter(t=>t.key!==e))},[]),s=useCallback(()=>{n([])},[]);return React.useImperativeHandle(t,()=>({mount:l,update:c,unmount:u,clear:s}),[l,c,u,s]),0===r.length?null:React.createElement(View,{pointerEvents:"box-none",style:S.pl,collapsable:!1},r.map(e=>React.createElement(View,{key:e.key,pointerEvents:"box-none",collapsable:!1,style:S.pe},e.children)))});let ah=0,nh=1,ngk=1e4;const gm={mount:(e,t)=>{"undefined"!=typeof __DEV__&&__DEV__&&0===ah&&console.warn("[Portal] Please mount <PortalHost> or <ConfigProvider> at the root to enable imperative APIs.");const r=t??ngk++;return isNumber(t)&&t>=ngk&&(ngk=t+1),TVE.emit(AE,{key:r,children:e}),r},update:(e,t)=>{TVE.emit(UE,{key:e,children:t})},unmount:e=>{TVE.emit(RE,{key:e})}},PortalHostImpl=({children:e})=>{const t=useRef(nh++),r=useRef(null),n=useRef([]),a=useRef(1),o=useCallback(e=>{const t=r.current;t?ao(t,e):n.current.push(e)},[]),l=useMemo(()=>({mount:(e,t)=>{const r=t??a.current++;return isNumber(t)&&t>=a.current&&(a.current=t+1),o({type:"mount",key:r,children:e}),r},update:(e,t)=>{o({type:"update",key:e,children:t})},unmount:e=>{o({type:"unmount",key:e})}}),[o]),c=useCallback(e=>{if(r.current=e,e){if(n.current.length>0){n.current.splice(0,n.current.length).forEach(t=>ao(e,t))}0===ah||ah===t.current?ah=t.current:"undefined"!=typeof __DEV__&&__DEV__&&console.warn("[PortalHost] Multiple PortalHost instances detected. Imperative APIs will only use the first mounted host.")}},[]);return useEffect(()=>()=>{ah===t.current&&(ah=
|
|
1
|
+
import React,{useCallback,useEffect,useMemo,useRef,useState}from"react";import{DeviceEventEmitter,NativeEventEmitter,Platform,StyleSheet,View}from"react-native";import{isNumber}from"../../utils";import{PortalContext}from"./PortalContext";const AE="RNSU_PORTAL_ADD",UE="RNSU_PORTAL_UPDATE",RE="RNSU_PORTAL_REMOVE",CE="RNSU_PORTAL_CLEAR",TVE=DeviceEventEmitter||new NativeEventEmitter,IW="web"===Platform.OS,ao=(e,t)=>{"mount"===t.type?e.mount(t.children,t.key):"update"===t.type?e.update(t.key,t.children):"clear"===t.type?e.clear():e.unmount(t.key)},PortalManagerView=React.forwardRef((e,t)=>{const[r,n]=useState([]),a=useRef(0),o=useCallback(e=>{n(t=>{const r=t.findIndex(t=>t.key===e.key);return-1===r?[...t,e]:[...t.slice(0,r),e,...t.slice(r+1)]})},[]),l=useCallback((e,t)=>{const r=t??++a.current;return isNumber(t)&&t>=a.current&&(a.current=t+1),o({key:r,children:e}),r},[o]),c=useCallback((e,t)=>{o({key:e,children:t})},[o]),u=useCallback(e=>{n(t=>t.filter(t=>t.key!==e))},[]),s=useCallback(()=>{n([])},[]);return React.useImperativeHandle(t,()=>({mount:l,update:c,unmount:u,clear:s}),[l,c,u,s]),0===r.length?null:React.createElement(View,{pointerEvents:"box-none",style:S.pl,collapsable:!1},r.map(e=>React.createElement(View,{key:e.key,pointerEvents:"box-none",collapsable:!1,style:S.pe},e.children)))});let ah=0,nh=1,ngk=1e4;const hr=new Set,pickActiveHost=()=>{const e=hr.values().next();return e.done?0:e.value},gm={mount:(e,t)=>{"undefined"!=typeof __DEV__&&__DEV__&&0===ah&&console.warn("[Portal] Please mount <PortalHost> or <ConfigProvider> at the root to enable imperative APIs.");const r=t??ngk++;return isNumber(t)&&t>=ngk&&(ngk=t+1),TVE.emit(AE,{key:r,children:e}),r},update:(e,t)=>{TVE.emit(UE,{key:e,children:t})},unmount:e=>{TVE.emit(RE,{key:e})}},PortalHostImpl=({children:e})=>{const t=useRef(nh++),r=useRef(null),n=useRef([]),a=useRef(1),o=useCallback(e=>{const t=r.current;t?ao(t,e):n.current.push(e)},[]),l=useMemo(()=>({mount:(e,t)=>{const r=t??a.current++;return isNumber(t)&&t>=a.current&&(a.current=t+1),o({type:"mount",key:r,children:e}),r},update:(e,t)=>{o({type:"update",key:e,children:t})},unmount:e=>{o({type:"unmount",key:e})}}),[o]),c=useCallback(e=>{if(r.current=e,e){if(n.current.length>0){n.current.splice(0,n.current.length).forEach(t=>ao(e,t))}0===ah||ah===t.current?ah=t.current:"undefined"!=typeof __DEV__&&__DEV__&&console.warn("[PortalHost] Multiple PortalHost instances detected. Imperative APIs will only use the first mounted host.")}},[]);return useEffect(()=>(hr.add(t.current),0===ah&&(ah=t.current),()=>{hr.delete(t.current),ah===t.current&&(ah=pickActiveHost(),n.current=[],0===ah&&portalStore.clear())}),[]),useEffect(()=>{const e=TVE.addListener(AE,({key:e,children:r})=>{ah===t.current&&o({type:"mount",key:e,children:r})}),r=TVE.addListener(UE,({key:e,children:r})=>{ah===t.current&&o({type:"update",key:e,children:r})}),a=TVE.addListener(RE,({key:e})=>{ah===t.current&&o({type:"unmount",key:e})}),l=TVE.addListener(CE,()=>{ah===t.current&&(n.current=[],o({type:"clear"}))});return()=>{e.remove(),r.remove(),a.remove(),l.remove()}},[o]),React.createElement(PortalContext.Provider,{value:l},React.createElement(View,{style:S.h,collapsable:!1},React.createElement(View,{style:S.r,collapsable:!1,pointerEvents:"box-none"},e),React.createElement(PortalManagerView,{ref:c})))};export const PortalHost=React.memo(PortalHostImpl);PortalHost.displayName="PortalHost";const S=StyleSheet.create({h:{position:"relative",flex:1},r:{flex:1},pl:IW?{position:"fixed",top:0,left:0,right:0,bottom:0}:{...StyleSheet.absoluteFillObject},pe:{...StyleSheet.absoluteFillObject}});export const portalManager=gm;export const portalStore={clear:()=>{TVE.emit(CE)},hasHosts:()=>0!==ah};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
function _extends(){return _extends=Object.assign?Object.assign.bind():function(e){for(var t=1;t<arguments.length;t++){var o=arguments[t];for(var l in o)({}).hasOwnProperty.call(o,l)&&(e[l]=o[l])}return e},_extends.apply(null,arguments)}import React,{useCallback,useMemo}from"react";import{Pressable,Text,View}from"react-native";import{useSelectorTokens}from"./tokens";import{useAriaPress,useControllableValue}from"../../hooks";import{isText}from"../../utils";const CHECK_MARK="✓",CH=8,CW=10,SelectorOptionItemImpl=({option:e,active:t,disabled:o,multiple:l,showCheckMark:a,basis:
|
|
1
|
+
function _extends(){return _extends=Object.assign?Object.assign.bind():function(e){for(var t=1;t<arguments.length;t++){var o=arguments[t];for(var l in o)({}).hasOwnProperty.call(o,l)&&(e[l]=o[l])}return e},_extends.apply(null,arguments)}import React,{useCallback,useMemo}from"react";import{Pressable,Text,View}from"react-native";import{useSelectorTokens}from"./tokens";import{useAriaPress,useControllableValue}from"../../hooks";import{isText}from"../../utils";const CHECK_MARK="✓",CH=8,CW=10,SelectorOptionItemImpl=({option:e,active:t,disabled:o,multiple:l,showCheckMark:a,basis:r,containerWidth:i,columns:s,gap:c,tokens:n,itemStyle:d,labelStyle:p,descriptionStyle:m,onToggle:u})=>{const y=e.label,b=e.description,g=null!=b,h=isText(y)?String(y):String(e.value),S=isText(b)?String(b):void 0,{interactionProps:f,states:k}=useAriaPress({disabled:o,onPress:()=>u(e),extraProps:{accessibilityRole:l?"checkbox":"radio",accessibilityLabel:h,accessibilityHint:S,accessibilityState:l?{checked:t,disabled:o}:{selected:t,disabled:o}}}),x=i>0?{width:(i-(s-1)*c)/s,flexGrow:0,flexShrink:0}:{flexBasis:r,flexShrink:1};return React.createElement(Pressable,_extends({},f,{style:[n.layout.pressable,x]}),React.createElement(View,{style:[n.layout.item,{paddingHorizontal:n.spacing.paddingHorizontal,paddingVertical:n.spacing.paddingVertical,borderRadius:n.radii.item,borderColor:t?n.colors.borderActive:n.colors.border,backgroundColor:t?n.colors.backgroundActive:n.colors.background,opacity:o?n.states.disabledOpacity:1},k.pressed&&{opacity:.9},d]},isText(y)?React.createElement(Text,{style:[n.layout.label,{color:t?n.colors.textActive:n.colors.text,fontSize:n.typography.fontSize,lineHeight:1.4*n.typography.fontSize,fontFamily:n.typography.fontFamily,fontWeight:n.typography.fontWeight},p]},y):y,g?isText(b)?React.createElement(Text,{style:[n.layout.description,{marginTop:n.spacing.descriptionMarginTop,color:o?n.colors.disabledText:n.colors.description,fontSize:n.typography.descriptionSize,lineHeight:1.4*n.typography.descriptionSize},m]},b):React.createElement(View,{style:{marginTop:n.spacing.descriptionMarginTop}},b):null,t&&a?React.createElement(React.Fragment,null,React.createElement(View,{style:[n.layout.checkMarkTriangle,{borderTopWidth:8,borderBottomWidth:8,borderLeftWidth:10,borderRightWidth:10,borderBottomColor:n.colors.check,borderRightColor:n.colors.check}]}),React.createElement(Text,{style:[n.layout.checkMark,{color:n.colors.checkForeground}]},"✓")):null))},SelectorOptionItemMemo=React.memo(SelectorOptionItemImpl);SelectorOptionItemMemo.displayName="SelectorOptionItem";const SelectorOptionItem=SelectorOptionItemMemo,SelectorImpl=e=>{const{tokensOverride:t,options:o,columns:l,multiple:a,showCheckMark:r,disabled:i,onChange:s,itemStyle:c,labelStyle:n,descriptionStyle:d,style:p,onLayout:m,...u}=e,y=Array.isArray(o)?o:[],b=useSelectorTokens(t),[g,h]=React.useState(0),S=l??b.defaults.columns??1,f=a??b.defaults.multiple,k=r??b.defaults.showCheckMark,x=Boolean(i??b.defaults.disabled),[v=[],R]=useControllableValue(e,{defaultValue:[]}),T=useMemo(()=>{const e=new Map;for(const t of y)e.set(t.value,t);return e},[y]),C=Math.max(1,Math.floor(S)),M=100/C+"%",w=b.spacing.gap,O=useMemo(()=>new Set(v),[v]),E=useCallback(e=>{if(x||e.disabled)return;const t=O.has(e.value),o=f?t?v.filter(t=>t!==e.value):[...v,e.value]:t?[]:[e.value];R(o,{items:o.map(e=>T.get(e)).filter(Boolean)})},[x,f,T,O,R,v]),I=useCallback(e=>{h(e.nativeEvent.layout.width),m?.(e)},[m]);return React.createElement(View,_extends({},u,{onLayout:I,style:[b.layout.container,{columnGap:w,rowGap:w},p],accessibilityRole:f?void 0:"radiogroup"}),y.map(e=>React.createElement(SelectorOptionItem,{key:String(e.value),option:e,active:O.has(e.value),disabled:x||Boolean(e.disabled),multiple:f,showCheckMark:k,basis:M,containerWidth:g,columns:C,gap:w,tokens:b,itemStyle:c,labelStyle:n,descriptionStyle:d,onToggle:E})))};export const Selector=React.memo(SelectorImpl);Selector.displayName="Selector";export default Selector;
|