react-native-system-ui 1.0.1 → 1.0.3
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 +44 -24
- package/dist/cjs/components/action-sheet/ActionSheet.js +1 -297
- package/dist/cjs/components/action-sheet/index.js +1 -16
- package/dist/cjs/components/action-sheet/tokens.js +1 -133
- package/dist/cjs/components/area/Area.js +1 -127
- package/dist/cjs/components/area/index.js +1 -9
- package/dist/cjs/components/area/tokens.js +1 -14
- package/dist/cjs/components/avatar/Avatar.js +1 -125
- package/dist/cjs/components/avatar/index.js +1 -18
- package/dist/cjs/components/avatar/tokens.js +1 -56
- package/dist/cjs/components/badge/Badge.js +1 -166
- package/dist/cjs/components/badge/index.js +1 -8
- package/dist/cjs/components/badge/tokens.js +1 -81
- package/dist/cjs/components/button/Button.js +1 -203
- package/dist/cjs/components/button/ButtonContext.js +1 -12
- package/dist/cjs/components/button/ButtonGroup.js +1 -65
- package/dist/cjs/components/button/index.js +1 -12
- package/dist/cjs/components/button/tokens.js +1 -176
- package/dist/cjs/components/calendar/Calendar.js +1 -452
- package/dist/cjs/components/calendar/index.js +1 -9
- package/dist/cjs/components/calendar/tokens.js +1 -129
- package/dist/cjs/components/cascader/Cascader.js +1 -481
- package/dist/cjs/components/cascader/index.js +1 -15
- package/dist/cjs/components/cascader/tokens.js +1 -138
- package/dist/cjs/components/cascader/useCascaderExtend.js +1 -39
- package/dist/cjs/components/cell/Cell.js +1 -181
- package/dist/cjs/components/cell/CellContext.js +1 -19
- package/dist/cjs/components/cell/CellGroup.js +1 -100
- package/dist/cjs/components/cell/index.js +1 -19
- package/dist/cjs/components/cell/tokens.js +1 -173
- package/dist/cjs/components/checkbox/Checkbox.js +1 -251
- package/dist/cjs/components/checkbox/CheckboxContext.js +1 -12
- package/dist/cjs/components/checkbox/CheckboxGroup.js +1 -148
- package/dist/cjs/components/checkbox/index.js +1 -16
- package/dist/cjs/components/checkbox/tokens.js +1 -97
- package/dist/cjs/components/circle/Circle.js +1 -212
- package/dist/cjs/components/circle/index.js +1 -9
- package/dist/cjs/components/circle/tokens.js +1 -55
- package/dist/cjs/components/collapse/Collapse.js +1 -311
- package/dist/cjs/components/collapse/index.js +1 -8
- package/dist/cjs/components/collapse/tokens.js +1 -81
- package/dist/cjs/components/config-provider/ConfigProvider.js +1 -44
- package/dist/cjs/components/config-provider/DirectionContext.js +1 -15
- package/dist/cjs/components/config-provider/LocaleContext.js +1 -16
- package/dist/cjs/components/config-provider/index.js +1 -40
- package/dist/cjs/components/config-provider/locale/en-US.js +1 -112
- package/dist/cjs/components/config-provider/locale/zh-CN.js +1 -112
- package/dist/cjs/components/config-provider/tokens.js +1 -11
- package/dist/cjs/components/config-provider/useDirection.js +1 -16
- package/dist/cjs/components/config-provider/useLocale.js +1 -16
- package/dist/cjs/components/count-down/CountDown.js +1 -88
- package/dist/cjs/components/count-down/index.js +1 -15
- package/dist/cjs/components/count-down/tokens.js +1 -34
- package/dist/cjs/components/datetime-picker/DatetimePicker.js +1 -319
- package/dist/cjs/components/datetime-picker/index.js +1 -9
- package/dist/cjs/components/datetime-picker/tokens.js +1 -22
- package/dist/cjs/components/dialog/Dialog.js +1 -433
- package/dist/cjs/components/dialog/imperative.js +1 -199
- package/dist/cjs/components/dialog/index.js +1 -23
- package/dist/cjs/components/dialog/tokens.js +1 -64
- package/dist/cjs/components/divider/Divider.js +1 -126
- package/dist/cjs/components/divider/index.js +1 -8
- package/dist/cjs/components/divider/tokens.js +1 -62
- package/dist/cjs/components/empty/Empty.js +1 -125
- package/dist/cjs/components/empty/index.js +1 -8
- package/dist/cjs/components/empty/tokens.js +1 -55
- package/dist/cjs/components/error-boundary/ErrorBoundary.js +1 -74
- package/dist/cjs/components/error-boundary/index.js +1 -19
- package/dist/cjs/components/field/Field.js +1 -565
- package/dist/cjs/components/field/index.js +1 -29
- package/dist/cjs/components/field/tokens.js +1 -150
- package/dist/cjs/components/flex/Flex.js +1 -85
- package/dist/cjs/components/flex/FlexContext.js +1 -12
- package/dist/cjs/components/flex/FlexItem.js +1 -95
- package/dist/cjs/components/flex/index.js +1 -19
- package/dist/cjs/components/flex/tokens.js +1 -21
- package/dist/cjs/components/form/Form.js +1 -340
- package/dist/cjs/components/form/FormContext.js +1 -12
- package/dist/cjs/components/form/FormItem.js +1 -151
- package/dist/cjs/components/form/FormList.js +1 -95
- package/dist/cjs/components/form/index.js +1 -50
- package/dist/cjs/components/form/tokens.js +1 -14
- package/dist/cjs/components/form/utils.js +1 -56
- package/dist/cjs/components/grid/Grid.js +1 -118
- package/dist/cjs/components/grid/GridContext.js +1 -12
- package/dist/cjs/components/grid/GridItem.js +1 -158
- package/dist/cjs/components/grid/index.js +1 -12
- package/dist/cjs/components/grid/tokens.js +1 -105
- package/dist/cjs/components/image/Image.js +1 -263
- package/dist/cjs/components/image/index.js +1 -16
- package/dist/cjs/components/image/tokens.js +1 -66
- package/dist/cjs/components/image-preview/ImagePreview.js +1 -398
- package/dist/cjs/components/image-preview/imperative.js +1 -72
- package/dist/cjs/components/image-preview/index.js +1 -17
- package/dist/cjs/components/image-preview/tokens.js +1 -43
- package/dist/cjs/components/index.js +1 -769
- package/dist/cjs/components/input/Input.js +1 -122
- package/dist/cjs/components/input/index.js +1 -15
- package/dist/cjs/components/input/tokens.js +1 -22
- package/dist/cjs/components/loading/Loading.js +1 -76
- package/dist/cjs/components/loading/index.js +1 -8
- package/dist/cjs/components/loading/tokens.js +1 -32
- package/dist/cjs/components/nav-bar/NavBar.js +1 -196
- package/dist/cjs/components/nav-bar/index.js +1 -16
- package/dist/cjs/components/nav-bar/tokens.js +1 -90
- package/dist/cjs/components/notice-bar/NoticeBar.js +1 -369
- package/dist/cjs/components/notice-bar/index.js +1 -8
- package/dist/cjs/components/notice-bar/tokens.js +1 -39
- package/dist/cjs/components/notify/Notify.js +1 -262
- package/dist/cjs/components/notify/imperative.js +1 -145
- package/dist/cjs/components/notify/index.js +1 -10
- package/dist/cjs/components/notify/tokens.js +1 -74
- package/dist/cjs/components/number-keyboard/NumberKeyboard.js +1 -487
- package/dist/cjs/components/number-keyboard/index.js +1 -15
- package/dist/cjs/components/number-keyboard/tokens.js +1 -59
- package/dist/cjs/components/overlay/Overlay.js +1 -81
- package/dist/cjs/components/overlay/index.js +1 -28
- package/dist/cjs/components/overlay/tokens.js +1 -13
- package/dist/cjs/components/password-input/PasswordInput.js +1 -346
- package/dist/cjs/components/password-input/index.js +1 -13
- package/dist/cjs/components/password-input/tokens.js +1 -53
- package/dist/cjs/components/picker/Picker.js +1 -1056
- package/dist/cjs/components/picker/index.js +1 -15
- package/dist/cjs/components/picker/tokens.js +1 -53
- package/dist/cjs/components/popup/Popup.js +1 -518
- package/dist/cjs/components/popup/index.js +1 -15
- package/dist/cjs/components/popup/tokens.js +1 -62
- package/dist/cjs/components/portal/Portal.js +1 -50
- package/dist/cjs/components/portal/PortalContext.js +1 -15
- package/dist/cjs/components/portal/PortalHost.js +1 -253
- package/dist/cjs/components/portal/index.js +1 -25
- package/dist/cjs/components/portal/tokens.js +1 -11
- package/dist/cjs/components/progress/Progress.js +1 -216
- package/dist/cjs/components/progress/index.js +1 -14
- package/dist/cjs/components/progress/tokens.js +1 -52
- package/dist/cjs/components/radio/Radio.js +1 -245
- package/dist/cjs/components/radio/RadioContext.js +1 -12
- package/dist/cjs/components/radio/RadioGroup.js +1 -113
- package/dist/cjs/components/radio/index.js +1 -16
- package/dist/cjs/components/radio/tokens.js +1 -92
- package/dist/cjs/components/safe-area-view/SafeAreaView.js +1 -59
- package/dist/cjs/components/safe-area-view/index.js +1 -12
- package/dist/cjs/components/safe-area-view/tokens.js +1 -11
- package/dist/cjs/components/search/Search.js +1 -215
- package/dist/cjs/components/search/index.js +1 -15
- package/dist/cjs/components/search/tokens.js +1 -54
- package/dist/cjs/components/selector/Selector.js +1 -185
- package/dist/cjs/components/selector/index.js +1 -15
- package/dist/cjs/components/selector/tokens.js +1 -100
- package/dist/cjs/components/share-sheet/ShareSheet.js +1 -286
- package/dist/cjs/components/share-sheet/index.js +1 -16
- package/dist/cjs/components/share-sheet/tokens.js +1 -55
- package/dist/cjs/components/sidebar/Sidebar.js +1 -103
- package/dist/cjs/components/sidebar/SidebarContext.js +1 -17
- package/dist/cjs/components/sidebar/SidebarItem.js +1 -103
- package/dist/cjs/components/sidebar/index.js +1 -26
- package/dist/cjs/components/sidebar/tokens.js +1 -93
- package/dist/cjs/components/skeleton/Skeleton.js +1 -162
- package/dist/cjs/components/skeleton/index.js +1 -22
- package/dist/cjs/components/skeleton/tokens.js +1 -39
- package/dist/cjs/components/slider/Slider.js +1 -633
- package/dist/cjs/components/slider/index.js +1 -8
- package/dist/cjs/components/slider/tokens.js +1 -37
- package/dist/cjs/components/space/Space.js +1 -134
- package/dist/cjs/components/space/index.js +1 -18
- package/dist/cjs/components/space/tokens.js +1 -39
- package/dist/cjs/components/stepper/Stepper.js +1 -484
- package/dist/cjs/components/stepper/index.js +1 -15
- package/dist/cjs/components/stepper/tokens.js +1 -60
- package/dist/cjs/components/swiper/Swiper.js +1 -364
- package/dist/cjs/components/swiper/SwiperItem.js +1 -12
- package/dist/cjs/components/swiper/SwiperPagIndicator.js +1 -106
- package/dist/cjs/components/swiper/index.js +1 -40
- package/dist/cjs/components/swiper/tokens.js +1 -18
- package/dist/cjs/components/switch/Switch.js +1 -102
- package/dist/cjs/components/switch/index.js +1 -15
- package/dist/cjs/components/switch/tokens.js +1 -31
- package/dist/cjs/components/tabbar/Tabbar.js +1 -149
- package/dist/cjs/components/tabbar/TabbarContext.js +1 -17
- package/dist/cjs/components/tabbar/TabbarItem.js +1 -153
- package/dist/cjs/components/tabbar/index.js +1 -25
- package/dist/cjs/components/tabbar/tokens.js +1 -41
- package/dist/cjs/components/tabs/Tabs.js +1 -860
- package/dist/cjs/components/tabs/index.js +1 -25
- package/dist/cjs/components/tabs/tokens.js +1 -111
- package/dist/cjs/components/tag/Tag.js +1 -130
- package/dist/cjs/components/tag/index.js +1 -8
- package/dist/cjs/components/tag/tokens.js +1 -104
- package/dist/cjs/components/toast/Toast.js +1 -303
- package/dist/cjs/components/toast/imperative.js +1 -144
- package/dist/cjs/components/toast/index.js +1 -10
- package/dist/cjs/components/toast/tokens.js +1 -43
- package/dist/cjs/components/typography/Typography.js +1 -181
- package/dist/cjs/components/typography/index.js +1 -9
- package/dist/cjs/components/typography/tokens.js +1 -88
- package/dist/cjs/components/water-mark/WaterMark.js +1 -172
- package/dist/cjs/components/water-mark/index.js +1 -22
- package/dist/cjs/components/water-mark/tokens.js +1 -54
- package/dist/cjs/design-system/Text.js +1 -38
- package/dist/cjs/design-system/ThemeContext.js +1 -19
- package/dist/cjs/design-system/ThemeProvider.js +1 -31
- package/dist/cjs/design-system/createComponentTokensHook.js +1 -28
- package/dist/cjs/design-system/index.js +1 -66
- package/dist/cjs/design-system/mergeTokensOverride.js +1 -9
- package/dist/cjs/design-system/presets.js +1 -146
- package/dist/cjs/design-system/tokens.js +1 -135
- package/dist/cjs/design-system/useTheme.js +1 -16
- package/dist/cjs/hooks/animation/index.js +1 -25
- package/dist/cjs/hooks/animation/useAnimatedTransition.js +1 -72
- package/dist/cjs/hooks/animation/useReducedMotion.js +1 -75
- package/dist/cjs/hooks/aria/index.js +1 -49
- package/dist/cjs/hooks/aria/useAriaListBox.js +1 -50
- package/dist/cjs/hooks/aria/useAriaOverlay.js +1 -50
- package/dist/cjs/hooks/aria/useAriaPress.js +1 -94
- package/dist/cjs/hooks/aria/useAriaToggle.js +1 -41
- package/dist/cjs/hooks/gesture/index.js +1 -16
- package/dist/cjs/hooks/gesture/useGestureScroll.js +1 -129
- package/dist/cjs/hooks/index.js +1 -96
- package/dist/cjs/hooks/overlay/OverlayStackStore.js +1 -106
- package/dist/cjs/hooks/overlay/index.js +1 -27
- package/dist/cjs/hooks/overlay/useOverlayStack.js +1 -53
- package/dist/cjs/hooks/useControllableValue.js +1 -41
- package/dist/cjs/hooks/useCountDown.js +1 -99
- package/dist/cjs/hooks/useHairline.js +1 -46
- package/dist/cjs/hooks/useSafeAreaPadding.js +1 -38
- package/dist/cjs/index.js +1 -104
- package/dist/cjs/nativewind.js +1 -0
- package/dist/cjs/platform/animation.js +1 -22
- package/dist/cjs/platform/history.js +1 -14
- package/dist/cjs/platform/index.js +1 -60
- package/dist/cjs/platform/measure.js +1 -39
- package/dist/cjs/platform/runtime.js +1 -19
- package/dist/cjs/platform/scrollLock.js +1 -24
- package/dist/cjs/utils/array.js +1 -12
- package/dist/cjs/utils/color.js +1 -33
- package/dist/cjs/utils/compare.js +1 -21
- package/dist/cjs/utils/createPlatformShadow.js +1 -52
- package/dist/cjs/utils/date.js +1 -45
- package/dist/cjs/utils/deepMerge.js +1 -27
- package/dist/cjs/utils/hairline.js +1 -107
- package/dist/cjs/utils/index.js +1 -148
- package/dist/cjs/utils/number.js +1 -65
- package/dist/cjs/utils/promise.js +1 -9
- package/dist/cjs/utils/render.js +1 -21
- package/dist/cjs/utils/rtl.js +1 -25
- package/dist/cjs/utils/string.js +1 -22
- package/dist/cjs/utils/validate.js +1 -39
- package/dist/es/components/action-sheet/ActionSheet.js +1 -271
- package/dist/es/components/action-sheet/index.js +1 -3
- package/dist/es/components/action-sheet/tokens.js +1 -126
- package/dist/es/components/area/Area.js +1 -113
- package/dist/es/components/area/index.js +1 -2
- package/dist/es/components/area/tokens.js +1 -8
- package/dist/es/components/avatar/Avatar.js +1 -106
- package/dist/es/components/avatar/index.js +1 -1
- package/dist/es/components/avatar/tokens.js +1 -49
- package/dist/es/components/badge/Badge.js +1 -147
- package/dist/es/components/badge/index.js +1 -2
- package/dist/es/components/badge/tokens.js +1 -75
- package/dist/es/components/button/Button.js +1 -184
- package/dist/es/components/button/ButtonContext.js +1 -1
- package/dist/es/components/button/ButtonGroup.js +1 -46
- package/dist/es/components/button/index.js +1 -7
- package/dist/es/components/button/tokens.js +1 -170
- package/dist/es/components/calendar/Calendar.js +1 -432
- package/dist/es/components/calendar/index.js +1 -2
- package/dist/es/components/calendar/tokens.js +1 -122
- package/dist/es/components/cascader/Cascader.js +1 -455
- package/dist/es/components/cascader/index.js +1 -3
- package/dist/es/components/cascader/tokens.js +1 -131
- package/dist/es/components/cascader/useCascaderExtend.js +1 -32
- package/dist/es/components/cell/Cell.js +1 -156
- package/dist/es/components/cell/CellContext.js +1 -6
- package/dist/es/components/cell/CellGroup.js +1 -81
- package/dist/es/components/cell/index.js +1 -8
- package/dist/es/components/cell/tokens.js +1 -160
- package/dist/es/components/checkbox/Checkbox.js +1 -220
- package/dist/es/components/checkbox/CheckboxContext.js +1 -1
- package/dist/es/components/checkbox/CheckboxGroup.js +1 -117
- package/dist/es/components/checkbox/index.js +1 -5
- package/dist/es/components/checkbox/tokens.js +1 -85
- package/dist/es/components/circle/Circle.js +1 -187
- package/dist/es/components/circle/index.js +1 -2
- package/dist/es/components/circle/tokens.js +1 -48
- package/dist/es/components/collapse/Collapse.js +1 -286
- package/dist/es/components/collapse/index.js +1 -2
- package/dist/es/components/collapse/tokens.js +1 -74
- package/dist/es/components/config-provider/ConfigProvider.js +1 -25
- package/dist/es/components/config-provider/DirectionContext.js +1 -2
- package/dist/es/components/config-provider/LocaleContext.js +1 -3
- package/dist/es/components/config-provider/index.js +1 -5
- package/dist/es/components/config-provider/locale/en-US.js +1 -106
- package/dist/es/components/config-provider/locale/zh-CN.js +1 -106
- package/dist/es/components/config-provider/tokens.js +1 -5
- package/dist/es/components/config-provider/useDirection.js +1 -3
- package/dist/es/components/config-provider/useLocale.js +1 -3
- package/dist/es/components/count-down/CountDown.js +1 -69
- package/dist/es/components/count-down/index.js +1 -3
- package/dist/es/components/count-down/tokens.js +1 -27
- package/dist/es/components/datetime-picker/DatetimePicker.js +1 -305
- package/dist/es/components/datetime-picker/index.js +1 -2
- package/dist/es/components/datetime-picker/tokens.js +1 -16
- package/dist/es/components/dialog/Dialog.js +1 -407
- package/dist/es/components/dialog/imperative.js +1 -185
- package/dist/es/components/dialog/index.js +1 -17
- package/dist/es/components/dialog/tokens.js +1 -57
- package/dist/es/components/divider/Divider.js +1 -107
- package/dist/es/components/divider/index.js +1 -2
- package/dist/es/components/divider/tokens.js +1 -55
- package/dist/es/components/empty/Empty.js +1 -100
- package/dist/es/components/empty/index.js +1 -2
- package/dist/es/components/empty/tokens.js +1 -48
- package/dist/es/components/error-boundary/ErrorBoundary.js +1 -62
- package/dist/es/components/error-boundary/index.js +1 -1
- package/dist/es/components/field/Field.js +1 -539
- package/dist/es/components/field/index.js +1 -6
- package/dist/es/components/field/tokens.js +1 -138
- package/dist/es/components/flex/Flex.js +1 -66
- package/dist/es/components/flex/FlexContext.js +1 -1
- package/dist/es/components/flex/FlexItem.js +1 -76
- package/dist/es/components/flex/index.js +1 -8
- package/dist/es/components/flex/tokens.js +1 -15
- package/dist/es/components/form/Form.js +1 -319
- package/dist/es/components/form/FormContext.js +1 -1
- package/dist/es/components/form/FormItem.js +1 -138
- package/dist/es/components/form/FormList.js +1 -81
- package/dist/es/components/form/index.js +1 -13
- package/dist/es/components/form/tokens.js +1 -8
- package/dist/es/components/form/utils.js +1 -45
- package/dist/es/components/grid/Grid.js +1 -99
- package/dist/es/components/grid/GridContext.js +1 -1
- package/dist/es/components/grid/GridItem.js +1 -138
- package/dist/es/components/grid/index.js +1 -6
- package/dist/es/components/grid/tokens.js +1 -98
- package/dist/es/components/image/Image.js +1 -238
- package/dist/es/components/image/index.js +1 -3
- package/dist/es/components/image/tokens.js +1 -60
- package/dist/es/components/image-preview/ImagePreview.js +1 -378
- package/dist/es/components/image-preview/imperative.js +1 -58
- package/dist/es/components/image-preview/index.js +1 -11
- package/dist/es/components/image-preview/tokens.js +1 -37
- package/dist/es/components/index.js +1 -110
- package/dist/es/components/input/Input.js +1 -109
- package/dist/es/components/input/index.js +1 -3
- package/dist/es/components/input/tokens.js +1 -16
- package/dist/es/components/loading/Loading.js +1 -57
- package/dist/es/components/loading/index.js +1 -2
- package/dist/es/components/loading/tokens.js +1 -25
- package/dist/es/components/nav-bar/NavBar.js +1 -171
- package/dist/es/components/nav-bar/index.js +1 -3
- package/dist/es/components/nav-bar/tokens.js +1 -83
- package/dist/es/components/notice-bar/NoticeBar.js +1 -344
- package/dist/es/components/notice-bar/index.js +1 -2
- package/dist/es/components/notice-bar/tokens.js +1 -32
- package/dist/es/components/notify/Notify.js +1 -242
- package/dist/es/components/notify/imperative.js +1 -131
- package/dist/es/components/notify/index.js +1 -5
- package/dist/es/components/notify/tokens.js +1 -67
- package/dist/es/components/number-keyboard/NumberKeyboard.js +1 -467
- package/dist/es/components/number-keyboard/index.js +1 -3
- package/dist/es/components/number-keyboard/tokens.js +1 -53
- package/dist/es/components/overlay/Overlay.js +1 -50
- package/dist/es/components/overlay/index.js +1 -4
- package/dist/es/components/overlay/tokens.js +1 -7
- package/dist/es/components/password-input/PasswordInput.js +1 -327
- package/dist/es/components/password-input/index.js +1 -1
- package/dist/es/components/password-input/tokens.js +1 -41
- package/dist/es/components/picker/Picker.js +1 -1031
- package/dist/es/components/picker/index.js +1 -3
- package/dist/es/components/picker/tokens.js +1 -47
- package/dist/es/components/popup/Popup.js +1 -492
- package/dist/es/components/popup/index.js +1 -3
- package/dist/es/components/popup/tokens.js +1 -55
- package/dist/es/components/portal/Portal.js +1 -37
- package/dist/es/components/portal/PortalContext.js +1 -2
- package/dist/es/components/portal/PortalHost.js +1 -234
- package/dist/es/components/portal/index.js +1 -3
- package/dist/es/components/portal/tokens.js +1 -5
- package/dist/es/components/progress/Progress.js +1 -196
- package/dist/es/components/progress/index.js +1 -3
- package/dist/es/components/progress/tokens.js +1 -45
- package/dist/es/components/radio/Radio.js +1 -214
- package/dist/es/components/radio/RadioContext.js +1 -1
- package/dist/es/components/radio/RadioGroup.js +1 -82
- package/dist/es/components/radio/index.js +1 -5
- package/dist/es/components/radio/tokens.js +1 -80
- package/dist/es/components/safe-area-view/SafeAreaView.js +1 -40
- package/dist/es/components/safe-area-view/index.js +1 -1
- package/dist/es/components/safe-area-view/tokens.js +1 -5
- package/dist/es/components/search/Search.js +1 -189
- package/dist/es/components/search/index.js +1 -3
- package/dist/es/components/search/tokens.js +1 -48
- package/dist/es/components/selector/Selector.js +1 -166
- package/dist/es/components/selector/index.js +1 -3
- package/dist/es/components/selector/tokens.js +1 -88
- package/dist/es/components/share-sheet/ShareSheet.js +1 -266
- package/dist/es/components/share-sheet/index.js +1 -3
- package/dist/es/components/share-sheet/tokens.js +1 -49
- package/dist/es/components/sidebar/Sidebar.js +1 -84
- package/dist/es/components/sidebar/SidebarContext.js +1 -3
- package/dist/es/components/sidebar/SidebarItem.js +1 -84
- package/dist/es/components/sidebar/index.js +1 -8
- package/dist/es/components/sidebar/tokens.js +1 -80
- package/dist/es/components/skeleton/Skeleton.js +1 -143
- package/dist/es/components/skeleton/index.js +1 -4
- package/dist/es/components/skeleton/tokens.js +1 -33
- package/dist/es/components/slider/Slider.js +1 -596
- package/dist/es/components/slider/index.js +1 -2
- package/dist/es/components/slider/tokens.js +1 -31
- package/dist/es/components/space/Space.js +1 -115
- package/dist/es/components/space/index.js +1 -2
- package/dist/es/components/space/tokens.js +1 -32
- package/dist/es/components/stepper/Stepper.js +1 -465
- package/dist/es/components/stepper/index.js +1 -3
- package/dist/es/components/stepper/tokens.js +1 -54
- package/dist/es/components/swiper/Swiper.js +1 -344
- package/dist/es/components/swiper/SwiperItem.js +1 -1
- package/dist/es/components/swiper/SwiperPagIndicator.js +1 -87
- package/dist/es/components/swiper/index.js +1 -10
- package/dist/es/components/swiper/tokens.js +1 -12
- package/dist/es/components/switch/Switch.js +1 -83
- package/dist/es/components/switch/index.js +1 -3
- package/dist/es/components/switch/tokens.js +1 -25
- package/dist/es/components/tabbar/Tabbar.js +1 -130
- package/dist/es/components/tabbar/TabbarContext.js +1 -3
- package/dist/es/components/tabbar/TabbarItem.js +1 -133
- package/dist/es/components/tabbar/index.js +1 -7
- package/dist/es/components/tabbar/tokens.js +1 -35
- package/dist/es/components/tabs/Tabs.js +1 -841
- package/dist/es/components/tabs/index.js +1 -7
- package/dist/es/components/tabs/tokens.js +1 -105
- package/dist/es/components/tag/Tag.js +1 -105
- package/dist/es/components/tag/index.js +1 -2
- package/dist/es/components/tag/tokens.js +1 -97
- package/dist/es/components/toast/Toast.js +1 -277
- package/dist/es/components/toast/imperative.js +1 -130
- package/dist/es/components/toast/index.js +1 -5
- package/dist/es/components/toast/tokens.js +1 -36
- package/dist/es/components/typography/Typography.js +1 -162
- package/dist/es/components/typography/index.js +1 -2
- package/dist/es/components/typography/tokens.js +1 -82
- package/dist/es/components/water-mark/WaterMark.js +1 -153
- package/dist/es/components/water-mark/index.js +1 -4
- package/dist/es/components/water-mark/tokens.js +1 -42
- package/dist/es/design-system/Text.js +1 -19
- package/dist/es/design-system/ThemeContext.js +1 -6
- package/dist/es/design-system/ThemeProvider.js +1 -17
- package/dist/es/design-system/createComponentTokensHook.js +1 -15
- package/dist/es/design-system/index.js +1 -7
- package/dist/es/design-system/mergeTokensOverride.js +1 -2
- package/dist/es/design-system/presets.js +1 -139
- package/dist/es/design-system/tokens.js +1 -128
- package/dist/es/design-system/useTheme.js +1 -3
- package/dist/es/hooks/animation/index.js +1 -2
- package/dist/es/hooks/animation/useAnimatedTransition.js +1 -53
- package/dist/es/hooks/animation/useReducedMotion.js +1 -54
- package/dist/es/hooks/aria/index.js +1 -5
- package/dist/es/hooks/aria/useAriaListBox.js +1 -25
- package/dist/es/hooks/aria/useAriaOverlay.js +1 -25
- package/dist/es/hooks/aria/useAriaPress.js +1 -57
- package/dist/es/hooks/aria/useAriaToggle.js +1 -16
- package/dist/es/hooks/gesture/index.js +1 -2
- package/dist/es/hooks/gesture/useGestureScroll.js +1 -110
- package/dist/es/hooks/index.js +1 -8
- package/dist/es/hooks/overlay/OverlayStackStore.js +1 -93
- package/dist/es/hooks/overlay/index.js +1 -3
- package/dist/es/hooks/overlay/useOverlayStack.js +1 -40
- package/dist/es/hooks/useControllableValue.js +1 -29
- package/dist/es/hooks/useCountDown.js +1 -87
- package/dist/es/hooks/useHairline.js +1 -26
- package/dist/es/hooks/useSafeAreaPadding.js +1 -20
- package/dist/es/index.js +1 -11
- package/dist/es/nativewind.js +1 -0
- package/dist/es/platform/animation.js +1 -10
- package/dist/es/platform/history.js +1 -7
- package/dist/es/platform/index.js +1 -6
- package/dist/es/platform/measure.js +1 -32
- package/dist/es/platform/runtime.js +1 -4
- package/dist/es/platform/scrollLock.js +1 -16
- package/dist/es/types.js +1 -1
- package/dist/es/utils/array.js +1 -5
- package/dist/es/utils/color.js +1 -25
- package/dist/es/utils/compare.js +1 -13
- package/dist/es/utils/createPlatformShadow.js +1 -39
- package/dist/es/utils/date.js +1 -33
- package/dist/es/utils/deepMerge.js +1 -21
- package/dist/es/utils/hairline.js +1 -93
- package/dist/es/utils/index.js +1 -14
- package/dist/es/utils/number.js +1 -48
- package/dist/es/utils/promise.js +1 -2
- package/dist/es/utils/render.js +1 -7
- package/dist/es/utils/rtl.js +1 -17
- package/dist/es/utils/string.js +1 -13
- package/dist/es/utils/validate.js +1 -14
- package/dist/types/nativewind.d.ts +4 -0
- package/package.json +15 -3
|
@@ -1,344 +1 @@
|
|
|
1
|
-
function _extends()
|
|
2
|
-
import React, { useCallback, useEffect, useMemo, useRef, useState } from 'react';
|
|
3
|
-
import { Animated, Easing, Pressable, StyleSheet, Text, View, Platform } from 'react-native';
|
|
4
|
-
import { Arrow, Close } from 'react-native-system-icon';
|
|
5
|
-
import { useAriaPress } from '../../hooks';
|
|
6
|
-
import { useLocale } from '../config-provider/useLocale';
|
|
7
|
-
import { useDirection } from '../config-provider/useDirection';
|
|
8
|
-
import { parseNumber } from '../../utils/number';
|
|
9
|
-
import { isRenderable, isText } from '../../utils/validate';
|
|
10
|
-
import { renderTextOrNode } from '../../utils';
|
|
11
|
-
import { nativeDriverEnabled } from '../../platform';
|
|
12
|
-
import { useReducedMotion } from '../../hooks/animation';
|
|
13
|
-
import { useNoticeBarTokens } from './tokens';
|
|
14
|
-
const AnimatedText = Animated.createAnimatedComponent(Text);
|
|
15
|
-
const IS_WEB = Platform.OS === 'web';
|
|
16
|
-
if (IS_WEB) {
|
|
17
|
-
const globalObj = typeof globalThis !== 'undefined' ? globalThis : window;
|
|
18
|
-
if (globalObj.global === undefined) globalObj.global = globalObj;
|
|
19
|
-
}
|
|
20
|
-
const NoticeBarImpl = props => {
|
|
21
|
-
const {
|
|
22
|
-
text,
|
|
23
|
-
children,
|
|
24
|
-
color,
|
|
25
|
-
background,
|
|
26
|
-
leftIcon,
|
|
27
|
-
rightIcon,
|
|
28
|
-
mode,
|
|
29
|
-
tokensOverride,
|
|
30
|
-
delay = 1,
|
|
31
|
-
speed = 60,
|
|
32
|
-
scrollable,
|
|
33
|
-
wrapable = false,
|
|
34
|
-
direction = 'horizontal',
|
|
35
|
-
items,
|
|
36
|
-
verticalInterval = 3000,
|
|
37
|
-
verticalDuration = 300,
|
|
38
|
-
onPress,
|
|
39
|
-
onClose,
|
|
40
|
-
onReplay,
|
|
41
|
-
textProps,
|
|
42
|
-
style,
|
|
43
|
-
...rest
|
|
44
|
-
} = props;
|
|
45
|
-
const locale = useLocale();
|
|
46
|
-
const layoutDir = useDirection();
|
|
47
|
-
const reducedMotion = useReducedMotion();
|
|
48
|
-
const tokens = useNoticeBarTokens(tokensOverride);
|
|
49
|
-
const resolvedColor = color ?? tokens.colors.text;
|
|
50
|
-
const resolvedBackground = background ?? tokens.colors.background;
|
|
51
|
-
const content = text ?? children;
|
|
52
|
-
const isTextContent = isText(content);
|
|
53
|
-
const isVertical = direction === 'vertical';
|
|
54
|
-
const [visible, setVisible] = useState(true);
|
|
55
|
-
const {
|
|
56
|
-
onLayout: textOnLayout,
|
|
57
|
-
...restTextProps
|
|
58
|
-
} = textProps ?? {};
|
|
59
|
-
const [contentWidth, setContentWidth] = useState(0);
|
|
60
|
-
const [containerWidth, setContainerWidth] = useState(0);
|
|
61
|
-
const translateX = useRef(new Animated.Value(0)).current;
|
|
62
|
-
const resolvedDelay = Math.max(0, parseNumber(delay, 1));
|
|
63
|
-
const resolvedSpeed = parseNumber(speed, 60);
|
|
64
|
-
const resolvedVerticalInterval = Math.max(0, parseNumber(verticalInterval, 3000));
|
|
65
|
-
const resolvedVerticalDuration = Math.max(0, parseNumber(verticalDuration, 300));
|
|
66
|
-
const verticalItems = useMemo(() => {
|
|
67
|
-
if (!isVertical) return [];
|
|
68
|
-
if (items && items.length) return items;
|
|
69
|
-
const arr = React.Children.toArray(children);
|
|
70
|
-
if (arr.length) return arr;
|
|
71
|
-
return text !== undefined ? [text] : [];
|
|
72
|
-
}, [children, isVertical, items, text]);
|
|
73
|
-
const hasVerticalLoop = !reducedMotion && isVertical && verticalItems.length > 1;
|
|
74
|
-
const verticalTrackItems = useMemo(() => hasVerticalLoop ? [...verticalItems, verticalItems[0]] : verticalItems, [hasVerticalLoop, verticalItems]);
|
|
75
|
-
const verticalTranslateY = useRef(new Animated.Value(0)).current;
|
|
76
|
-
const [itemHeight, setItemHeight] = useState(0);
|
|
77
|
-
const setContentWidthSafe = useCallback(next => {
|
|
78
|
-
setContentWidth(prev => Math.abs(prev - next) < 0.5 ? prev : next);
|
|
79
|
-
}, []);
|
|
80
|
-
const setContainerWidthSafe = useCallback(next => {
|
|
81
|
-
setContainerWidth(prev => Math.abs(prev - next) < 0.5 ? prev : next);
|
|
82
|
-
}, []);
|
|
83
|
-
const onCloseRef = useRef(onClose);
|
|
84
|
-
onCloseRef.current = onClose;
|
|
85
|
-
const onReplayRef = useRef(onReplay);
|
|
86
|
-
onReplayRef.current = onReplay;
|
|
87
|
-
const handleClose = useCallback(() => {
|
|
88
|
-
setVisible(false);
|
|
89
|
-
onCloseRef.current?.();
|
|
90
|
-
}, []);
|
|
91
|
-
const closePress = useAriaPress({
|
|
92
|
-
disabled: mode !== 'closeable' || !visible,
|
|
93
|
-
onPress: handleClose,
|
|
94
|
-
extraProps: {
|
|
95
|
-
accessibilityRole: 'button',
|
|
96
|
-
accessibilityLabel: locale?.vanNoticeBar?.close ?? 'Close'
|
|
97
|
-
}
|
|
98
|
-
});
|
|
99
|
-
const barPress = useAriaPress({
|
|
100
|
-
disabled: !onPress || !visible,
|
|
101
|
-
onPress,
|
|
102
|
-
extraProps: onPress ? {
|
|
103
|
-
accessibilityRole: 'button'
|
|
104
|
-
} : undefined
|
|
105
|
-
});
|
|
106
|
-
const rightNode = mode === 'closeable' ? /*#__PURE__*/React.createElement(Pressable, _extends({
|
|
107
|
-
hitSlop: 8
|
|
108
|
-
}, closePress.interactionProps), /*#__PURE__*/React.createElement(Close, {
|
|
109
|
-
size: 16,
|
|
110
|
-
fill: resolvedColor,
|
|
111
|
-
color: resolvedColor
|
|
112
|
-
})) : mode === 'link' ? /*#__PURE__*/React.createElement(Arrow, {
|
|
113
|
-
size: 16,
|
|
114
|
-
fill: resolvedColor,
|
|
115
|
-
color: resolvedColor
|
|
116
|
-
}) : rightIcon || null;
|
|
117
|
-
const hasLeft = isRenderable(leftIcon);
|
|
118
|
-
const hasRight = Boolean(rightNode);
|
|
119
|
-
const effectiveContainerWidth = Math.max(0, containerWidth - (hasLeft ? tokens.spacing.sidePadding : 0) - (hasRight ? tokens.spacing.sidePadding : 0));
|
|
120
|
-
const shouldScroll = !reducedMotion && !isVertical && !wrapable && (scrollable ?? contentWidth > effectiveContainerWidth);
|
|
121
|
-
useEffect(() => {
|
|
122
|
-
if (!visible || isVertical) {
|
|
123
|
-
translateX.stopAnimation();
|
|
124
|
-
return;
|
|
125
|
-
}
|
|
126
|
-
if (!shouldScroll || contentWidth === 0 || containerWidth === 0 || resolvedSpeed <= 0 || !Number.isFinite(resolvedSpeed)) {
|
|
127
|
-
translateX.setValue(0);
|
|
128
|
-
return;
|
|
129
|
-
}
|
|
130
|
-
let cancelled = false;
|
|
131
|
-
const duration = (contentWidth + containerWidth) / resolvedSpeed * 1000;
|
|
132
|
-
const rtlSign = layoutDir === 'rtl' ? -1 : 1;
|
|
133
|
-
const run = initial => {
|
|
134
|
-
translateX.setValue(initial ? 0 : rtlSign * containerWidth);
|
|
135
|
-
Animated.sequence([Animated.delay(resolvedDelay * 1000), Animated.timing(translateX, {
|
|
136
|
-
toValue: -rtlSign * contentWidth,
|
|
137
|
-
duration,
|
|
138
|
-
easing: Easing.linear,
|
|
139
|
-
useNativeDriver: nativeDriverEnabled,
|
|
140
|
-
isInteraction: false
|
|
141
|
-
})]).start(({
|
|
142
|
-
finished
|
|
143
|
-
}) => {
|
|
144
|
-
if (finished && !cancelled) {
|
|
145
|
-
onReplayRef.current?.();
|
|
146
|
-
run(false);
|
|
147
|
-
}
|
|
148
|
-
});
|
|
149
|
-
};
|
|
150
|
-
run(true);
|
|
151
|
-
return () => {
|
|
152
|
-
cancelled = true;
|
|
153
|
-
translateX.stopAnimation();
|
|
154
|
-
};
|
|
155
|
-
}, [shouldScroll, translateX, visible, resolvedDelay, resolvedSpeed, contentWidth, containerWidth, isVertical, layoutDir]);
|
|
156
|
-
useEffect(() => {
|
|
157
|
-
if (!visible) {
|
|
158
|
-
verticalTranslateY.stopAnimation();
|
|
159
|
-
return;
|
|
160
|
-
}
|
|
161
|
-
if (!hasVerticalLoop || itemHeight === 0) {
|
|
162
|
-
verticalTranslateY.setValue(0);
|
|
163
|
-
return;
|
|
164
|
-
}
|
|
165
|
-
const steps = [];
|
|
166
|
-
for (let i = 1; i <= verticalItems.length; i += 1) {
|
|
167
|
-
steps.push(Animated.delay(resolvedVerticalInterval), Animated.timing(verticalTranslateY, {
|
|
168
|
-
toValue: -itemHeight * i,
|
|
169
|
-
duration: resolvedVerticalDuration,
|
|
170
|
-
easing: Easing.linear,
|
|
171
|
-
useNativeDriver: nativeDriverEnabled,
|
|
172
|
-
isInteraction: false
|
|
173
|
-
}));
|
|
174
|
-
}
|
|
175
|
-
steps.push(Animated.timing(verticalTranslateY, {
|
|
176
|
-
toValue: 0,
|
|
177
|
-
duration: 0,
|
|
178
|
-
useNativeDriver: nativeDriverEnabled,
|
|
179
|
-
isInteraction: false
|
|
180
|
-
}));
|
|
181
|
-
const loopAnimation = Animated.loop(Animated.sequence(steps));
|
|
182
|
-
loopAnimation.start();
|
|
183
|
-
return () => {
|
|
184
|
-
loopAnimation.stop();
|
|
185
|
-
verticalTranslateY.stopAnimation();
|
|
186
|
-
};
|
|
187
|
-
}, [visible, hasVerticalLoop, itemHeight, resolvedVerticalDuration, resolvedVerticalInterval, verticalItems, verticalTranslateY]);
|
|
188
|
-
const handleItemLayout = useCallback(event => {
|
|
189
|
-
const height = event?.nativeEvent?.layout?.height;
|
|
190
|
-
if (!height) return;
|
|
191
|
-
setItemHeight(prev => prev === 0 || Math.abs(prev - height) >= 0.5 ? height : prev);
|
|
192
|
-
}, []);
|
|
193
|
-
const verticalContentNode = useMemo(() => {
|
|
194
|
-
if (!isVertical || verticalTrackItems.length === 0) return null;
|
|
195
|
-
if (!hasVerticalLoop) return renderTextOrNode(verticalTrackItems[0], [S.text, {
|
|
196
|
-
color: resolvedColor,
|
|
197
|
-
fontFamily: tokens.typography.fontFamily,
|
|
198
|
-
fontSize: tokens.typography.fontSize
|
|
199
|
-
}], {
|
|
200
|
-
numberOfLines: 1,
|
|
201
|
-
...restTextProps
|
|
202
|
-
});
|
|
203
|
-
return /*#__PURE__*/React.createElement(View, {
|
|
204
|
-
style: [S.vViewport, itemHeight ? {
|
|
205
|
-
height: itemHeight
|
|
206
|
-
} : undefined],
|
|
207
|
-
pointerEvents: "none"
|
|
208
|
-
}, /*#__PURE__*/React.createElement(Animated.View, {
|
|
209
|
-
renderToHardwareTextureAndroid: true,
|
|
210
|
-
shouldRasterizeIOS: true,
|
|
211
|
-
style: [S.vTrack, {
|
|
212
|
-
transform: [{
|
|
213
|
-
translateY: verticalTranslateY
|
|
214
|
-
}]
|
|
215
|
-
}]
|
|
216
|
-
}, verticalTrackItems.map((item, index) => /*#__PURE__*/React.createElement(View, {
|
|
217
|
-
key: index,
|
|
218
|
-
onLayout: index === 0 ? handleItemLayout : undefined,
|
|
219
|
-
style: S.vItem
|
|
220
|
-
}, renderTextOrNode(item, [S.text, {
|
|
221
|
-
color: resolvedColor,
|
|
222
|
-
fontFamily: tokens.typography.fontFamily,
|
|
223
|
-
fontSize: tokens.typography.fontSize
|
|
224
|
-
}], {
|
|
225
|
-
numberOfLines: 1,
|
|
226
|
-
...restTextProps
|
|
227
|
-
})))));
|
|
228
|
-
}, [handleItemLayout, hasVerticalLoop, isVertical, itemHeight, resolvedColor, restTextProps, textOnLayout, tokens.typography.fontFamily, tokens.typography.fontSize, verticalTrackItems, verticalTranslateY]);
|
|
229
|
-
const handleContainerLayout = useCallback(event => {
|
|
230
|
-
setContainerWidthSafe(event.nativeEvent.layout.width);
|
|
231
|
-
}, [setContainerWidthSafe]);
|
|
232
|
-
const handleTextLayout = useCallback(event => {
|
|
233
|
-
setContentWidthSafe(event.nativeEvent.layout.width);
|
|
234
|
-
textOnLayout?.(event);
|
|
235
|
-
}, [setContentWidthSafe, textOnLayout]);
|
|
236
|
-
const handleNodeLayout = useCallback(event => setContentWidthSafe(event.nativeEvent.layout.width), [setContentWidthSafe]);
|
|
237
|
-
if (!visible) return null;
|
|
238
|
-
return /*#__PURE__*/React.createElement(Pressable, _extends({
|
|
239
|
-
style: [S.ctr, {
|
|
240
|
-
backgroundColor: resolvedBackground,
|
|
241
|
-
paddingHorizontal: tokens.spacing.paddingHorizontal,
|
|
242
|
-
paddingVertical: wrapable ? tokens.spacing.wrapPaddingVertical : tokens.spacing.paddingVertical,
|
|
243
|
-
minHeight: tokens.layout.minHeight,
|
|
244
|
-
borderRadius: tokens.layout.radius
|
|
245
|
-
}, style],
|
|
246
|
-
disabled: barPress.states.disabled
|
|
247
|
-
}, barPress.interactionProps, rest), hasLeft && /*#__PURE__*/React.createElement(View, {
|
|
248
|
-
style: [S.side, {
|
|
249
|
-
minWidth: tokens.layout.sideMinWidth
|
|
250
|
-
}]
|
|
251
|
-
}, leftIcon), /*#__PURE__*/React.createElement(View, {
|
|
252
|
-
onLayout: handleContainerLayout,
|
|
253
|
-
style: [S.content, wrapable && S.contentWrap, hasLeft && {
|
|
254
|
-
paddingLeft: tokens.spacing.sidePadding
|
|
255
|
-
}, hasRight && {
|
|
256
|
-
paddingRight: tokens.spacing.sidePadding
|
|
257
|
-
}],
|
|
258
|
-
pointerEvents: "none"
|
|
259
|
-
}, isVertical ? verticalContentNode : shouldScroll ? isTextContent ? /*#__PURE__*/React.createElement(AnimatedText, _extends({
|
|
260
|
-
onLayout: handleTextLayout,
|
|
261
|
-
style: [S.text, S.scrollText, {
|
|
262
|
-
color: resolvedColor,
|
|
263
|
-
fontFamily: tokens.typography.fontFamily,
|
|
264
|
-
fontSize: tokens.typography.fontSize,
|
|
265
|
-
transform: [{
|
|
266
|
-
translateX
|
|
267
|
-
}]
|
|
268
|
-
}]
|
|
269
|
-
}, IS_WEB ? {} : {
|
|
270
|
-
numberOfLines: 1,
|
|
271
|
-
ellipsizeMode: 'clip'
|
|
272
|
-
}, restTextProps), content) : /*#__PURE__*/React.createElement(Animated.View, {
|
|
273
|
-
onLayout: handleNodeLayout,
|
|
274
|
-
renderToHardwareTextureAndroid: true,
|
|
275
|
-
shouldRasterizeIOS: true,
|
|
276
|
-
style: [S.text, {
|
|
277
|
-
transform: [{
|
|
278
|
-
translateX
|
|
279
|
-
}]
|
|
280
|
-
}]
|
|
281
|
-
}, content) : isTextContent ? /*#__PURE__*/React.createElement(Text, _extends({
|
|
282
|
-
onLayout: handleTextLayout,
|
|
283
|
-
style: [S.text, {
|
|
284
|
-
color: resolvedColor,
|
|
285
|
-
fontFamily: tokens.typography.fontFamily,
|
|
286
|
-
fontSize: tokens.typography.fontSize
|
|
287
|
-
}, wrapable && S.wrapText],
|
|
288
|
-
numberOfLines: wrapable ? undefined : 1,
|
|
289
|
-
ellipsizeMode: wrapable ? 'tail' : 'clip'
|
|
290
|
-
}, restTextProps), content) : /*#__PURE__*/React.createElement(View, {
|
|
291
|
-
onLayout: handleNodeLayout,
|
|
292
|
-
style: [S.text, wrapable && S.wrapText]
|
|
293
|
-
}, content)), rightNode && /*#__PURE__*/React.createElement(View, {
|
|
294
|
-
style: [S.side, {
|
|
295
|
-
minWidth: tokens.layout.sideMinWidth
|
|
296
|
-
}]
|
|
297
|
-
}, rightNode));
|
|
298
|
-
};
|
|
299
|
-
const S = StyleSheet.create({
|
|
300
|
-
ctr: {
|
|
301
|
-
flexDirection: 'row',
|
|
302
|
-
alignItems: 'center'
|
|
303
|
-
},
|
|
304
|
-
side: {
|
|
305
|
-
alignItems: 'center',
|
|
306
|
-
justifyContent: 'center'
|
|
307
|
-
},
|
|
308
|
-
content: {
|
|
309
|
-
flex: 1,
|
|
310
|
-
flexDirection: 'row',
|
|
311
|
-
overflow: 'hidden'
|
|
312
|
-
},
|
|
313
|
-
text: {
|
|
314
|
-
flexShrink: 0
|
|
315
|
-
},
|
|
316
|
-
scrollText: Platform.select({
|
|
317
|
-
web: {
|
|
318
|
-
whiteSpace: 'nowrap',
|
|
319
|
-
textOverflow: 'clip'
|
|
320
|
-
},
|
|
321
|
-
default: {}
|
|
322
|
-
}),
|
|
323
|
-
wrapText: {
|
|
324
|
-
flexWrap: 'wrap',
|
|
325
|
-
flexShrink: 1
|
|
326
|
-
},
|
|
327
|
-
contentWrap: {
|
|
328
|
-
flexDirection: 'column'
|
|
329
|
-
},
|
|
330
|
-
vViewport: {
|
|
331
|
-
width: '100%',
|
|
332
|
-
overflow: 'hidden'
|
|
333
|
-
},
|
|
334
|
-
vTrack: {
|
|
335
|
-
flexDirection: 'column',
|
|
336
|
-
width: '100%'
|
|
337
|
-
},
|
|
338
|
-
vItem: {
|
|
339
|
-
width: '100%',
|
|
340
|
-
justifyContent: 'center'
|
|
341
|
-
}
|
|
342
|
-
});
|
|
343
|
-
export const NoticeBar = /*#__PURE__*/React.memo(NoticeBarImpl);
|
|
344
|
-
NoticeBar.displayName = 'NoticeBar';
|
|
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 i in a)({}).hasOwnProperty.call(a,i)&&(e[i]=a[i])}return e},_extends.apply(null,arguments)}import React,{useCallback,useEffect,useMemo,useRef,useState}from"react";import{Animated,Easing,Pressable,StyleSheet,Text,View,Platform}from"react-native";import{Arrow,Close}from"react-native-system-icon";import{useAriaPress}from"../../hooks";import{useLocale}from"../config-provider/useLocale";import{useDirection}from"../config-provider/useDirection";import{parseNumber}from"../../utils/number";import{isRenderable,isText}from"../../utils/validate";import{renderTextOrNode}from"../../utils";import{nativeDriverEnabled}from"../../platform";import{useReducedMotion}from"../../hooks/animation";import{useNoticeBarTokens}from"./tokens";const AnimatedText=Animated.createAnimatedComponent(Text),IS_WEB="web"===Platform.OS;if(IS_WEB){const e="undefined"!=typeof globalThis?globalThis:window;void 0===e.global&&(e.global=e)}const NoticeBarImpl=e=>{const{text:t,children:a,color:i,background:n,leftIcon:r,rightIcon:o,mode:s,tokensOverride:l,delay:c=1,speed:d=60,scrollable:u,wrapable:m=!1,direction:p="horizontal",items:f,verticalInterval:y=3e3,verticalDuration:h=300,onPress:g,onClose:b,onReplay:v,textProps:x,style:w,...E}=e,R=useLocale(),A=useDirection(),T=useReducedMotion(),k=useNoticeBarTokens(l),P=i??k.colors.text,V=n??k.colors.background,N=t??a,z=isText(N),C="vertical"===p,[I,M]=useState(!0),{onLayout:L,...D}=x??{},[O,B]=useState(0),[F,W]=useState(0),_=useRef(new Animated.Value(0)).current,H=Math.max(0,parseNumber(c,1)),j=parseNumber(d,60),q=Math.max(0,parseNumber(y,3e3)),X=Math.max(0,parseNumber(h,300)),Y=useMemo(()=>{if(!C)return[];if(f&&f.length)return f;const e=React.Children.toArray(a);return e.length?e:void 0!==t?[t]:[]},[a,C,f,t]),G=!T&&C&&Y.length>1,J=useMemo(()=>G?[...Y,Y[0]]:Y,[G,Y]),K=useRef(new Animated.Value(0)).current,[Q,U]=useState(0),Z=useCallback(e=>{B(t=>Math.abs(t-e)<.5?t:e)},[]),$=useCallback(e=>{W(t=>Math.abs(t-e)<.5?t:e)},[]),ee=useRef(b);ee.current=b;const te=useRef(v);te.current=v;const ae=useCallback(()=>{M(!1),ee.current?.()},[]),ie=useAriaPress({disabled:"closeable"!==s||!I,onPress:ae,extraProps:{accessibilityRole:"button",accessibilityLabel:R?.vanNoticeBar?.close??"Close"}}),ne=useAriaPress({disabled:!g||!I,onPress:g,extraProps:g?{accessibilityRole:"button"}:void 0}),re="closeable"===s?React.createElement(Pressable,_extends({hitSlop:8},ie.interactionProps),React.createElement(Close,{size:16,fill:P,color:P})):"link"===s?React.createElement(Arrow,{size:16,fill:P,color:P}):o||null,oe=isRenderable(r),se=Boolean(re),le=Math.max(0,F-(oe?k.spacing.sidePadding:0)-(se?k.spacing.sidePadding:0)),ce=!T&&!C&&!m&&(u??O>le);useEffect(()=>{if(!I||C)return void _.stopAnimation();if(!ce||0===O||0===F||j<=0||!Number.isFinite(j))return void _.setValue(0);let e=!1;const t=(O+F)/j*1e3,a="rtl"===A?-1:1,i=n=>{_.setValue(n?0:a*F),Animated.sequence([Animated.delay(1e3*H),Animated.timing(_,{toValue:-a*O,duration:t,easing:Easing.linear,useNativeDriver:nativeDriverEnabled,isInteraction:!1})]).start(({finished:t})=>{t&&!e&&(te.current?.(),i(!1))})};return i(!0),()=>{e=!0,_.stopAnimation()}},[ce,_,I,H,j,O,F,C,A]),useEffect(()=>{if(!I)return void K.stopAnimation();if(!G||0===Q)return void K.setValue(0);const e=[];for(let t=1;t<=Y.length;t+=1)e.push(Animated.delay(q),Animated.timing(K,{toValue:-Q*t,duration:X,easing:Easing.linear,useNativeDriver:nativeDriverEnabled,isInteraction:!1}));e.push(Animated.timing(K,{toValue:0,duration:0,useNativeDriver:nativeDriverEnabled,isInteraction:!1}));const t=Animated.loop(Animated.sequence(e));return t.start(),()=>{t.stop(),K.stopAnimation()}},[I,G,Q,X,q,Y,K]);const de=useCallback(e=>{const t=e?.nativeEvent?.layout?.height;t&&U(e=>0===e||Math.abs(e-t)>=.5?t:e)},[]),ue=useMemo(()=>C&&0!==J.length?G?React.createElement(View,{style:[S.vViewport,Q?{height:Q}:void 0],pointerEvents:"none"},React.createElement(Animated.View,{renderToHardwareTextureAndroid:!0,shouldRasterizeIOS:!0,style:[S.vTrack,{transform:[{translateY:K}]}]},J.map((e,t)=>React.createElement(View,{key:t,onLayout:0===t?de:void 0,style:S.vItem},renderTextOrNode(e,[S.text,{color:P,fontFamily:k.typography.fontFamily,fontSize:k.typography.fontSize}],{numberOfLines:1,...D}))))):renderTextOrNode(J[0],[S.text,{color:P,fontFamily:k.typography.fontFamily,fontSize:k.typography.fontSize}],{numberOfLines:1,...D}):null,[de,G,C,Q,P,D,L,k.typography.fontFamily,k.typography.fontSize,J,K]),me=useCallback(e=>{$(e.nativeEvent.layout.width)},[$]),pe=useCallback(e=>{Z(e.nativeEvent.layout.width),L?.(e)},[Z,L]),fe=useCallback(e=>Z(e.nativeEvent.layout.width),[Z]);return I?React.createElement(Pressable,_extends({style:[S.ctr,{backgroundColor:V,paddingHorizontal:k.spacing.paddingHorizontal,paddingVertical:m?k.spacing.wrapPaddingVertical:k.spacing.paddingVertical,minHeight:k.layout.minHeight,borderRadius:k.layout.radius},w],disabled:ne.states.disabled},ne.interactionProps,E),oe&&React.createElement(View,{style:[S.side,{minWidth:k.layout.sideMinWidth}]},r),React.createElement(View,{onLayout:me,style:[S.content,m&&S.contentWrap,oe&&{paddingLeft:k.spacing.sidePadding},se&&{paddingRight:k.spacing.sidePadding}],pointerEvents:"none"},C?ue:ce?z?React.createElement(AnimatedText,_extends({onLayout:pe,style:[S.text,S.scrollText,{color:P,fontFamily:k.typography.fontFamily,fontSize:k.typography.fontSize,transform:[{translateX:_}]}]},IS_WEB?{}:{numberOfLines:1,ellipsizeMode:"clip"},D),N):React.createElement(Animated.View,{onLayout:fe,renderToHardwareTextureAndroid:!0,shouldRasterizeIOS:!0,style:[S.text,{transform:[{translateX:_}]}]},N):z?React.createElement(Text,_extends({onLayout:pe,style:[S.text,{color:P,fontFamily:k.typography.fontFamily,fontSize:k.typography.fontSize},m&&S.wrapText],numberOfLines:m?void 0:1,ellipsizeMode:m?"tail":"clip"},D),N):React.createElement(View,{onLayout:fe,style:[S.text,m&&S.wrapText]},N)),re&&React.createElement(View,{style:[S.side,{minWidth:k.layout.sideMinWidth}]},re)):null},S=StyleSheet.create({ctr:{flexDirection:"row",alignItems:"center"},side:{alignItems:"center",justifyContent:"center"},content:{flex:1,flexDirection:"row",overflow:"hidden"},text:{flexShrink:0},scrollText:Platform.select({web:{whiteSpace:"nowrap",textOverflow:"clip"},default:{}}),wrapText:{flexWrap:"wrap",flexShrink:1},contentWrap:{flexDirection:"column"},vViewport:{width:"100%",overflow:"hidden"},vTrack:{flexDirection:"column",width:"100%"},vItem:{width:"100%",justifyContent:"center"}});export const NoticeBar=React.memo(NoticeBarImpl);NoticeBar.displayName="NoticeBar";
|
|
@@ -1,2 +1 @@
|
|
|
1
|
-
import
|
|
2
|
-
export default NoticeBar;
|
|
1
|
+
import{NoticeBar}from"./NoticeBar";export default NoticeBar;
|
|
@@ -1,32 +1 @@
|
|
|
1
|
-
import
|
|
2
|
-
export const createNoticeBarTokens = foundations => {
|
|
3
|
-
const {
|
|
4
|
-
palette,
|
|
5
|
-
fontSize,
|
|
6
|
-
spacing,
|
|
7
|
-
radii,
|
|
8
|
-
typography
|
|
9
|
-
} = foundations;
|
|
10
|
-
return {
|
|
11
|
-
colors: {
|
|
12
|
-
text: palette.warning[600],
|
|
13
|
-
background: palette.warning[50]
|
|
14
|
-
},
|
|
15
|
-
typography: {
|
|
16
|
-
fontFamily: typography.fontFamily,
|
|
17
|
-
fontSize: fontSize.sm
|
|
18
|
-
},
|
|
19
|
-
layout: {
|
|
20
|
-
minHeight: 40,
|
|
21
|
-
radius: radii.lg,
|
|
22
|
-
sideMinWidth: 24
|
|
23
|
-
},
|
|
24
|
-
spacing: {
|
|
25
|
-
paddingHorizontal: spacing.lg,
|
|
26
|
-
paddingVertical: spacing.sm,
|
|
27
|
-
wrapPaddingVertical: spacing.md,
|
|
28
|
-
sidePadding: spacing.sm
|
|
29
|
-
}
|
|
30
|
-
};
|
|
31
|
-
};
|
|
32
|
-
export const useNoticeBarTokens = createComponentTokensHook('noticeBar', createNoticeBarTokens);
|
|
1
|
+
import{createComponentTokensHook}from"../../design-system";export const createNoticeBarTokens=o=>{const{palette:e,fontSize:t,spacing:n,radii:i,typography:a}=o;return{colors:{text:e.warning[600],background:e.warning[50]},typography:{fontFamily:a.fontFamily,fontSize:t.sm},layout:{minHeight:40,radius:i.lg,sideMinWidth:24},spacing:{paddingHorizontal:n.lg,paddingVertical:n.sm,wrapPaddingVertical:n.md,sidePadding:n.sm}}};export const useNoticeBarTokens=createComponentTokensHook("noticeBar",createNoticeBarTokens);
|
|
@@ -1,242 +1 @@
|
|
|
1
|
-
function _extends()
|
|
2
|
-
import React, { useCallback, useEffect, useMemo, useRef, useState } from 'react';
|
|
3
|
-
import { Animated, Easing, Platform, Pressable, View } from 'react-native';
|
|
4
|
-
import { isFunction, isText, renderTextOrNode } from '../../utils';
|
|
5
|
-
import { isRenderable } from '../../utils/validate';
|
|
6
|
-
import { useAriaPress, useSafeAreaPadding, useOverlayStack } from '../../hooks';
|
|
7
|
-
import Portal from '../portal/Portal';
|
|
8
|
-
import { nativeDriverEnabled } from '../../platform';
|
|
9
|
-
import { useReducedMotion } from '../../hooks/animation';
|
|
10
|
-
import { useNotifyTokens } from './tokens';
|
|
11
|
-
const NotifyContentImpl = props => {
|
|
12
|
-
const {
|
|
13
|
-
visible,
|
|
14
|
-
message,
|
|
15
|
-
type: typeProp,
|
|
16
|
-
duration: durationProp,
|
|
17
|
-
position: positionProp,
|
|
18
|
-
offset: offsetProp,
|
|
19
|
-
color,
|
|
20
|
-
background,
|
|
21
|
-
zIndex,
|
|
22
|
-
closeOnClick: closeOnClickProp,
|
|
23
|
-
style,
|
|
24
|
-
textStyle,
|
|
25
|
-
tokensOverride,
|
|
26
|
-
onClick,
|
|
27
|
-
onClose,
|
|
28
|
-
onOpen,
|
|
29
|
-
onOpened,
|
|
30
|
-
onClosed
|
|
31
|
-
} = props;
|
|
32
|
-
const tokens = useNotifyTokens(tokensOverride);
|
|
33
|
-
const reducedMotion = useReducedMotion();
|
|
34
|
-
const safeAreaPadding = useSafeAreaPadding({
|
|
35
|
-
top: 0,
|
|
36
|
-
bottom: 0
|
|
37
|
-
});
|
|
38
|
-
const type = typeProp ?? tokens.defaults.type;
|
|
39
|
-
const position = positionProp ?? tokens.defaults.position;
|
|
40
|
-
const closeOnClick = closeOnClickProp ?? tokens.defaults.closeOnClick;
|
|
41
|
-
const safeAreaInsetTop = props.safeAreaInsetTop ?? (position === 'top' ? tokens.defaults.safeAreaInsetTop : false);
|
|
42
|
-
const safeAreaInsetBottom = props.safeAreaInsetBottom ?? (position === 'bottom' ? tokens.defaults.safeAreaInsetBottom : false);
|
|
43
|
-
const safeAreaTopValue = safeAreaInsetTop && position === 'top' ? safeAreaPadding.paddingTop : 0;
|
|
44
|
-
const safeAreaBottomValue = safeAreaInsetBottom && position === 'bottom' ? safeAreaPadding.paddingBottom : 0;
|
|
45
|
-
const offset = typeof offsetProp === 'number' && Number.isFinite(offsetProp) ? Math.max(0, offsetProp) : 0;
|
|
46
|
-
const addOffset = (value, delta) => typeof value === 'string' ? `calc(${value} + ${delta}px)` : value + delta;
|
|
47
|
-
const safeAreaBottomInset = safeAreaInsetBottom && position === 'bottom' && typeof safeAreaBottomValue === 'number' ? safeAreaBottomValue + offset : offset;
|
|
48
|
-
const webTopPadding = Platform.OS === 'web' && position === 'top' ? addOffset(safeAreaTopValue, offset) : undefined;
|
|
49
|
-
const webBottomPadding = Platform.OS === 'web' && safeAreaInsetBottom && position === 'bottom' ? addOffset(safeAreaBottomValue, offset) : undefined;
|
|
50
|
-
const variant = tokens.colors.variants[type];
|
|
51
|
-
const resolvedBackground = background ?? variant.background;
|
|
52
|
-
const resolvedTextColor = color ?? variant.text;
|
|
53
|
-
const resolvedDuration = durationProp ?? tokens.defaults.duration;
|
|
54
|
-
const onCloseRef = useRef(onClose);
|
|
55
|
-
onCloseRef.current = onClose;
|
|
56
|
-
const onOpenRef = useRef(onOpen);
|
|
57
|
-
onOpenRef.current = onOpen;
|
|
58
|
-
const onOpenedRef = useRef(onOpened);
|
|
59
|
-
onOpenedRef.current = onOpened;
|
|
60
|
-
const onClosedRef = useRef(onClosed);
|
|
61
|
-
onClosedRef.current = onClosed;
|
|
62
|
-
const onClickRef = useRef(onClick);
|
|
63
|
-
onClickRef.current = onClick;
|
|
64
|
-
const [barHeight, setBarHeight] = useState(0);
|
|
65
|
-
const handleLayout = useCallback(e => {
|
|
66
|
-
const height = e.nativeEvent.layout.height;
|
|
67
|
-
if (!height) return;
|
|
68
|
-
setBarHeight(prev => prev === height ? prev : height);
|
|
69
|
-
}, []);
|
|
70
|
-
const canAnimate = barHeight > 0;
|
|
71
|
-
const [mounted, setMounted] = useState(visible);
|
|
72
|
-
const animatedValue = useRef(new Animated.Value(0)).current;
|
|
73
|
-
const animationRef = useRef(null);
|
|
74
|
-
const animationIdRef = useRef(0);
|
|
75
|
-
const {
|
|
76
|
-
zIndex: stackZIndex
|
|
77
|
-
} = useOverlayStack({
|
|
78
|
-
visible: mounted,
|
|
79
|
-
type: 'notify',
|
|
80
|
-
zIndex
|
|
81
|
-
});
|
|
82
|
-
const resolvedZIndex = stackZIndex ?? zIndex;
|
|
83
|
-
const previousVisibleRef = useRef(visible);
|
|
84
|
-
const closingRef = useRef(false);
|
|
85
|
-
useEffect(() => {
|
|
86
|
-
animationIdRef.current += 1;
|
|
87
|
-
const animationId = animationIdRef.current;
|
|
88
|
-
animationRef.current?.stop();
|
|
89
|
-
const d = reducedMotion ? 0 : tokens.defaults.animationDuration;
|
|
90
|
-
if (visible) {
|
|
91
|
-
setMounted(true);
|
|
92
|
-
if (!canAnimate) {
|
|
93
|
-
animatedValue.setValue(0);
|
|
94
|
-
return;
|
|
95
|
-
}
|
|
96
|
-
animationRef.current = Animated.timing(animatedValue, {
|
|
97
|
-
toValue: 1,
|
|
98
|
-
duration: d,
|
|
99
|
-
easing: Easing.out(Easing.cubic),
|
|
100
|
-
useNativeDriver: nativeDriverEnabled,
|
|
101
|
-
isInteraction: false
|
|
102
|
-
});
|
|
103
|
-
animationRef.current.start();
|
|
104
|
-
} else {
|
|
105
|
-
if (!canAnimate) {
|
|
106
|
-
animatedValue.setValue(0);
|
|
107
|
-
setMounted(false);
|
|
108
|
-
return;
|
|
109
|
-
}
|
|
110
|
-
animationRef.current = Animated.timing(animatedValue, {
|
|
111
|
-
toValue: 0,
|
|
112
|
-
duration: d,
|
|
113
|
-
easing: Easing.out(Easing.cubic),
|
|
114
|
-
useNativeDriver: nativeDriverEnabled,
|
|
115
|
-
isInteraction: false
|
|
116
|
-
});
|
|
117
|
-
animationRef.current.start(({
|
|
118
|
-
finished
|
|
119
|
-
}) => {
|
|
120
|
-
if (!finished || animationId !== animationIdRef.current) return;
|
|
121
|
-
setMounted(false);
|
|
122
|
-
});
|
|
123
|
-
}
|
|
124
|
-
}, [animatedValue, canAnimate, reducedMotion, tokens.defaults.animationDuration, visible]);
|
|
125
|
-
useEffect(() => () => {
|
|
126
|
-
animationRef.current?.stop();
|
|
127
|
-
}, []);
|
|
128
|
-
const resolvedAnimDuration = reducedMotion ? 0 : tokens.defaults.animationDuration;
|
|
129
|
-
useEffect(() => {
|
|
130
|
-
if (visible) {
|
|
131
|
-
closingRef.current = false;
|
|
132
|
-
if (!previousVisibleRef.current) {
|
|
133
|
-
onOpenRef.current?.();
|
|
134
|
-
if (onOpenedRef.current) {
|
|
135
|
-
const cb = onOpenedRef.current;
|
|
136
|
-
const t = setTimeout(cb, resolvedAnimDuration);
|
|
137
|
-
previousVisibleRef.current = visible;
|
|
138
|
-
return () => clearTimeout(t);
|
|
139
|
-
}
|
|
140
|
-
}
|
|
141
|
-
} else if (previousVisibleRef.current) closingRef.current = true;
|
|
142
|
-
previousVisibleRef.current = visible;
|
|
143
|
-
}, [resolvedAnimDuration, visible]);
|
|
144
|
-
useEffect(() => {
|
|
145
|
-
if (!mounted && closingRef.current) {
|
|
146
|
-
closingRef.current = false;
|
|
147
|
-
onClosedRef.current?.();
|
|
148
|
-
}
|
|
149
|
-
}, [mounted]);
|
|
150
|
-
useEffect(() => {
|
|
151
|
-
if (!visible || resolvedDuration <= 0) return;
|
|
152
|
-
const timeout = setTimeout(() => {
|
|
153
|
-
onCloseRef.current?.();
|
|
154
|
-
}, resolvedDuration);
|
|
155
|
-
return () => clearTimeout(timeout);
|
|
156
|
-
}, [resolvedDuration, visible]);
|
|
157
|
-
const contentHeight = barHeight > 0 ? barHeight : tokens.sizing.minHeight;
|
|
158
|
-
const interactive = closeOnClick || isFunction(onClick);
|
|
159
|
-
const handlePress = useCallback(() => {
|
|
160
|
-
onClickRef.current?.();
|
|
161
|
-
if (closeOnClick) onCloseRef.current?.();
|
|
162
|
-
}, [closeOnClick]);
|
|
163
|
-
const accessibilityRole = interactive ? 'button' : 'alert';
|
|
164
|
-
const pressProps = useAriaPress({
|
|
165
|
-
disabled: !interactive,
|
|
166
|
-
onPress: handlePress,
|
|
167
|
-
extraProps: {
|
|
168
|
-
accessibilityRole,
|
|
169
|
-
accessibilityLiveRegion: 'assertive'
|
|
170
|
-
}
|
|
171
|
-
});
|
|
172
|
-
const translateY = useMemo(() => position === 'bottom' ? animatedValue.interpolate({
|
|
173
|
-
inputRange: [0, 1],
|
|
174
|
-
outputRange: [contentHeight, 0]
|
|
175
|
-
}) : animatedValue.interpolate({
|
|
176
|
-
inputRange: [0, 1],
|
|
177
|
-
outputRange: [-contentHeight, 0]
|
|
178
|
-
}), [animatedValue, contentHeight, position]);
|
|
179
|
-
const hasMessage = isRenderable(message) && (typeof message !== 'string' || message !== '');
|
|
180
|
-
const barRender = useMemo(() => /*#__PURE__*/React.createElement(View, {
|
|
181
|
-
style: [tokens.layout.container, position === 'top' ? {
|
|
182
|
-
paddingTop: webTopPadding ?? addOffset(safeAreaTopValue, offset)
|
|
183
|
-
} : null, webBottomPadding !== undefined ? {
|
|
184
|
-
paddingBottom: webBottomPadding
|
|
185
|
-
} : null]
|
|
186
|
-
}, /*#__PURE__*/React.createElement(View, {
|
|
187
|
-
style: {
|
|
188
|
-
height: contentHeight,
|
|
189
|
-
overflow: 'hidden'
|
|
190
|
-
}
|
|
191
|
-
}, /*#__PURE__*/React.createElement(Animated.View, {
|
|
192
|
-
testID: "rv-notify-bar",
|
|
193
|
-
accessibilityRole: !interactive ? accessibilityRole : undefined,
|
|
194
|
-
accessibilityLiveRegion: !interactive ? 'assertive' : undefined,
|
|
195
|
-
renderToHardwareTextureAndroid: true,
|
|
196
|
-
shouldRasterizeIOS: true,
|
|
197
|
-
onLayout: handleLayout,
|
|
198
|
-
style: [tokens.layout.container, {
|
|
199
|
-
opacity: animatedValue,
|
|
200
|
-
transform: [{
|
|
201
|
-
translateY
|
|
202
|
-
}]
|
|
203
|
-
}, style]
|
|
204
|
-
}, /*#__PURE__*/React.createElement(View, {
|
|
205
|
-
style: {
|
|
206
|
-
backgroundColor: resolvedBackground
|
|
207
|
-
}
|
|
208
|
-
}, /*#__PURE__*/React.createElement(View, {
|
|
209
|
-
style: [tokens.layout.content, {
|
|
210
|
-
paddingHorizontal: tokens.spacing.paddingHorizontal,
|
|
211
|
-
paddingVertical: tokens.spacing.paddingVertical,
|
|
212
|
-
minHeight: tokens.sizing.minHeight
|
|
213
|
-
}]
|
|
214
|
-
}, hasMessage && (isText(message) ? renderTextOrNode(message, [tokens.layout.text, {
|
|
215
|
-
color: resolvedTextColor,
|
|
216
|
-
fontFamily: tokens.typography.fontFamily,
|
|
217
|
-
fontSize: tokens.typography.fontSize,
|
|
218
|
-
lineHeight: tokens.typography.lineHeight
|
|
219
|
-
}, textStyle]) : message))))), position === 'bottom' && /*#__PURE__*/React.createElement(View, {
|
|
220
|
-
style: {
|
|
221
|
-
height: safeAreaBottomInset
|
|
222
|
-
}
|
|
223
|
-
})), [accessibilityRole, animatedValue, contentHeight, handleLayout, hasMessage, interactive, message, offset, resolvedBackground, resolvedTextColor, safeAreaBottomInset, safeAreaTopValue, style, textStyle, tokens.layout.container, tokens.layout.content, tokens.layout.text, tokens.sizing.minHeight, tokens.spacing.paddingHorizontal, tokens.spacing.paddingVertical, tokens.typography.fontFamily, tokens.typography.fontSize, tokens.typography.lineHeight, translateY, webBottomPadding, webTopPadding, position]);
|
|
224
|
-
if (!mounted) return null;
|
|
225
|
-
return /*#__PURE__*/React.createElement(View, {
|
|
226
|
-
testID: "rv-notify",
|
|
227
|
-
pointerEvents: interactive ? 'box-none' : 'none',
|
|
228
|
-
style: [tokens.layout.portal, position === 'bottom' ? {
|
|
229
|
-
bottom: 0
|
|
230
|
-
} : {
|
|
231
|
-
top: 0
|
|
232
|
-
}, resolvedZIndex != null ? {
|
|
233
|
-
zIndex: resolvedZIndex
|
|
234
|
-
} : null]
|
|
235
|
-
}, interactive ? /*#__PURE__*/React.createElement(Pressable, _extends({}, pressProps.interactionProps, {
|
|
236
|
-
disabled: !interactive
|
|
237
|
-
}), barRender) : barRender);
|
|
238
|
-
};
|
|
239
|
-
export const NotifyContent = /*#__PURE__*/React.memo(NotifyContentImpl);
|
|
240
|
-
const NotifyImpl = props => /*#__PURE__*/React.createElement(Portal, null, /*#__PURE__*/React.createElement(NotifyContent, props));
|
|
241
|
-
export const Notify = /*#__PURE__*/React.memo(NotifyImpl);
|
|
242
|
-
export default Notify;
|
|
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 o in n)({}).hasOwnProperty.call(n,o)&&(e[o]=n[o])}return e},_extends.apply(null,arguments)}import React,{useCallback,useEffect,useMemo,useRef,useState}from"react";import{Animated,Easing,Platform,Pressable,View}from"react-native";import{isFunction,isText,renderTextOrNode}from"../../utils";import{isRenderable}from"../../utils/validate";import{useAriaPress,useSafeAreaPadding,useOverlayStack}from"../../hooks";import Portal from"../portal/Portal";import{nativeDriverEnabled}from"../../platform";import{useReducedMotion}from"../../hooks/animation";import{useNotifyTokens}from"./tokens";const NotifyContentImpl=e=>{const{visible:t,message:n,type:o,duration:r,position:i,offset:a,color:s,background:u,zIndex:l,closeOnClick:c,style:d,textStyle:f,tokensOverride:m,onClick:p,onClose:y,onOpen:g,onOpened:b,onClosed:v}=e,R=useNotifyTokens(m),h=useReducedMotion(),E=useSafeAreaPadding({top:0,bottom:0}),x=o??R.defaults.type,k=i??R.defaults.position,I=c??R.defaults.closeOnClick,P=e.safeAreaInsetTop??("top"===k&&R.defaults.safeAreaInsetTop),T=e.safeAreaInsetBottom??("bottom"===k&&R.defaults.safeAreaInsetBottom),V=P&&"top"===k?E.paddingTop:0,N=T&&"bottom"===k?E.paddingBottom:0,O="number"==typeof a&&Number.isFinite(a)?Math.max(0,a):0,w=(e,t)=>"string"==typeof e?`calc(${e} + ${t}px)`:e+t,z=T&&"bottom"===k&&"number"==typeof N?N+O:O,A="web"===Platform.OS&&"top"===k?w(V,O):void 0,S="web"===Platform.OS&&T&&"bottom"===k?w(N,O):void 0,C=R.colors.variants[x],H=u??C.background,D=s??C.text,F=r??R.defaults.duration,M=useRef(y);M.current=y;const B=useRef(g);B.current=g;const _=useRef(b);_.current=b;const L=useRef(v);L.current=v;const j=useRef(p);j.current=p;const[$,Y]=useState(0),q=useCallback(e=>{const t=e.nativeEvent.layout.height;t&&Y(e=>e===t?e:t)},[]),G=$>0,[J,K]=useState(t),Q=useRef(new Animated.Value(0)).current,U=useRef(null),W=useRef(0),{zIndex:X}=useOverlayStack({visible:J,type:"notify",zIndex:l}),Z=X??l,ee=useRef(t),te=useRef(!1);useEffect(()=>{W.current+=1;const e=W.current;U.current?.stop();const n=h?0:R.defaults.animationDuration;if(t){if(K(!0),!G)return void Q.setValue(0);U.current=Animated.timing(Q,{toValue:1,duration:n,easing:Easing.out(Easing.cubic),useNativeDriver:nativeDriverEnabled,isInteraction:!1}),U.current.start()}else{if(!G)return Q.setValue(0),void K(!1);U.current=Animated.timing(Q,{toValue:0,duration:n,easing:Easing.out(Easing.cubic),useNativeDriver:nativeDriverEnabled,isInteraction:!1}),U.current.start(({finished:t})=>{t&&e===W.current&&K(!1)})}},[Q,G,h,R.defaults.animationDuration,t]),useEffect(()=>()=>{U.current?.stop()},[]);const ne=h?0:R.defaults.animationDuration;useEffect(()=>{if(t){if(te.current=!1,!ee.current&&(B.current?.(),_.current)){const e=_.current,n=setTimeout(e,ne);return ee.current=t,()=>clearTimeout(n)}}else ee.current&&(te.current=!0);ee.current=t},[ne,t]),useEffect(()=>{!J&&te.current&&(te.current=!1,L.current?.())},[J]),useEffect(()=>{if(!t||F<=0)return;const e=setTimeout(()=>{M.current?.()},F);return()=>clearTimeout(e)},[F,t]);const oe=$>0?$:R.sizing.minHeight,re=I||isFunction(p),ie=useCallback(()=>{j.current?.(),I&&M.current?.()},[I]),ae=re?"button":"alert",se=useAriaPress({disabled:!re,onPress:ie,extraProps:{accessibilityRole:ae,accessibilityLiveRegion:"assertive"}}),ue=useMemo(()=>"bottom"===k?Q.interpolate({inputRange:[0,1],outputRange:[oe,0]}):Q.interpolate({inputRange:[0,1],outputRange:[-oe,0]}),[Q,oe,k]),le=isRenderable(n)&&("string"!=typeof n||""!==n),ce=useMemo(()=>React.createElement(View,{style:[R.layout.container,"top"===k?{paddingTop:A??w(V,O)}:null,void 0!==S?{paddingBottom:S}:null]},React.createElement(View,{style:{height:oe,overflow:"hidden"}},React.createElement(Animated.View,{testID:"rv-notify-bar",accessibilityRole:re?void 0:ae,accessibilityLiveRegion:re?void 0:"assertive",renderToHardwareTextureAndroid:!0,shouldRasterizeIOS:!0,onLayout:q,style:[R.layout.container,{opacity:Q,transform:[{translateY:ue}]},d]},React.createElement(View,{style:{backgroundColor:H}},React.createElement(View,{style:[R.layout.content,{paddingHorizontal:R.spacing.paddingHorizontal,paddingVertical:R.spacing.paddingVertical,minHeight:R.sizing.minHeight}]},le&&(isText(n)?renderTextOrNode(n,[R.layout.text,{color:D,fontFamily:R.typography.fontFamily,fontSize:R.typography.fontSize,lineHeight:R.typography.lineHeight},f]):n))))),"bottom"===k&&React.createElement(View,{style:{height:z}})),[ae,Q,oe,q,le,re,n,O,H,D,z,V,d,f,R.layout.container,R.layout.content,R.layout.text,R.sizing.minHeight,R.spacing.paddingHorizontal,R.spacing.paddingVertical,R.typography.fontFamily,R.typography.fontSize,R.typography.lineHeight,ue,S,A,k]);return J?React.createElement(View,{testID:"rv-notify",pointerEvents:re?"box-none":"none",style:[R.layout.portal,"bottom"===k?{bottom:0}:{top:0},null!=Z?{zIndex:Z}:null]},re?React.createElement(Pressable,_extends({},se.interactionProps,{disabled:!re}),ce):ce):null};export const NotifyContent=React.memo(NotifyContentImpl);const NotifyImpl=e=>React.createElement(Portal,null,React.createElement(NotifyContent,e));export const Notify=React.memo(NotifyImpl);export default Notify;
|