react-native-system-ui 0.0.2 → 0.0.4
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 +22 -6
- package/dist/cjs/{area → components/area}/Area.js +4 -10
- package/dist/cjs/{avatar → components/avatar}/Avatar.js +3 -3
- package/dist/cjs/{avatar → components/avatar}/tokens.js +2 -1
- package/dist/cjs/{badge → components/badge}/Badge.js +30 -38
- package/dist/cjs/{button → components/button}/Button.js +13 -13
- package/dist/cjs/{button → components/button}/ButtonGroup.js +8 -8
- package/dist/cjs/{calendar → components/calendar}/Calendar.js +10 -10
- package/dist/cjs/{cascader → components/cascader}/Cascader.js +4 -4
- package/dist/cjs/{cascader → components/cascader}/useCascaderExtend.js +5 -15
- package/dist/cjs/{checkbox → components/checkbox}/CheckboxGroup.js +2 -2
- package/dist/cjs/{circle → components/circle}/Circle.js +2 -2
- package/dist/cjs/{collapse → components/collapse}/Collapse.js +13 -16
- package/dist/cjs/{config-provider → components/config-provider}/ConfigProvider.js +1 -1
- package/dist/cjs/{datetime-picker → components/datetime-picker}/DatetimePicker.js +7 -7
- package/dist/cjs/{dialog → components/dialog}/Dialog.js +4 -6
- package/dist/cjs/{dialog → components/dialog}/tokens.js +2 -1
- package/dist/cjs/{dropdown-menu → components/dropdown-menu}/DropdownItem.js +53 -52
- package/dist/cjs/{dropdown-menu → components/dropdown-menu}/DropdownMenu.js +19 -23
- package/dist/cjs/{dropdown-menu → components/dropdown-menu}/tokens.js +20 -3
- package/dist/cjs/{field → components/field}/Field.js +6 -6
- package/dist/cjs/{form → components/form}/Form.js +5 -9
- package/dist/cjs/{grid → components/grid}/Grid.js +4 -4
- package/dist/cjs/{image → components/image}/Image.js +19 -15
- package/dist/cjs/{image-preview → components/image-preview}/ImagePreview.js +62 -60
- package/dist/cjs/{image-preview → components/image-preview}/tokens.js +21 -2
- package/dist/cjs/{index-bar → components/index-bar}/IndexAnchor.js +7 -6
- package/dist/cjs/{index-bar → components/index-bar}/IndexBar.js +40 -45
- package/dist/cjs/components/index-bar/tokens.js +45 -0
- package/dist/cjs/components/index.js +854 -0
- package/dist/cjs/{input → components/input}/Input.js +7 -10
- package/dist/cjs/{nav-bar → components/nav-bar}/NavBar.js +2 -1
- package/dist/cjs/{notice-bar → components/notice-bar}/NoticeBar.js +69 -95
- package/dist/cjs/{notify → components/notify}/Notify.js +65 -49
- package/dist/cjs/{notify → components/notify}/defaults.js +2 -2
- package/dist/cjs/{notify → components/notify}/imperative.js +2 -2
- package/dist/cjs/{notify → components/notify}/tokens.js +5 -4
- package/dist/cjs/{number-keyboard → components/number-keyboard}/NumberKeyboard.js +15 -16
- package/dist/cjs/{number-keyboard → components/number-keyboard}/tokens.js +4 -2
- package/dist/cjs/{overlay → components/overlay}/useOverlayStack.js +5 -1
- package/dist/cjs/{pagination → components/pagination}/Pagination.js +2 -2
- package/dist/cjs/{password-input → components/password-input}/PasswordInput.js +35 -27
- package/dist/cjs/{picker → components/picker}/Picker.js +11 -12
- package/dist/cjs/{picker → components/picker}/WheelPicker.js +9 -9
- package/dist/cjs/{picker → components/picker}/tokens.js +4 -2
- package/dist/cjs/{popup → components/popup}/Popup.js +48 -75
- package/dist/cjs/{popup → components/popup}/tokens.js +2 -1
- package/dist/cjs/{portal → components/portal}/Portal.js +5 -0
- package/dist/cjs/{portal → components/portal}/PortalHost.js +1 -13
- package/dist/cjs/{pull-refresh → components/pull-refresh}/PullRefresh.js +46 -27
- package/dist/cjs/{radio → components/radio}/RadioGroup.js +2 -2
- package/dist/cjs/components/safe-area-view/SafeAreaView.js +63 -0
- package/dist/cjs/components/safe-area-view/index.js +12 -0
- package/dist/cjs/{search → components/search}/Search.js +52 -67
- package/dist/cjs/{search → components/search}/tokens.js +2 -1
- package/dist/cjs/{selector → components/selector}/Selector.js +3 -3
- package/dist/cjs/{share-sheet → components/share-sheet}/ShareSheet.js +64 -62
- package/dist/cjs/{share-sheet → components/share-sheet}/tokens.js +15 -2
- package/dist/cjs/{sidebar → components/sidebar}/Sidebar.js +15 -19
- package/dist/cjs/{sidebar → components/sidebar}/SidebarItem.js +0 -3
- package/dist/cjs/{skeleton → components/skeleton}/Skeleton.js +44 -56
- package/dist/cjs/{slider → components/slider}/Slider.js +55 -61
- package/dist/cjs/{stepper → components/stepper}/Stepper.js +13 -16
- package/dist/cjs/{stepper → components/stepper}/tokens.js +4 -2
- package/dist/cjs/{swiper → components/swiper}/Swiper.js +21 -42
- package/dist/cjs/{swiper → components/swiper}/useSwiperWeb.js +15 -18
- package/dist/cjs/{tabbar → components/tabbar}/Tabbar.js +10 -12
- package/dist/cjs/{tabbar → components/tabbar}/TabbarItem.js +0 -3
- package/dist/cjs/{tabs → components/tabs}/Tabs.js +33 -54
- package/dist/cjs/{tabs → components/tabs}/tokens.js +9 -1
- package/dist/cjs/{tabs → components/tabs}/useTabsScroll.js +4 -0
- package/dist/cjs/{toast → components/toast}/Toast.js +15 -16
- package/dist/cjs/{toast → components/toast}/tokens.js +5 -1
- package/dist/cjs/components/types.js +1 -0
- package/dist/cjs/{typography → components/typography}/Typography.js +17 -30
- package/dist/cjs/{uploader → components/uploader}/Uploader.js +49 -46
- package/dist/cjs/{uploader → components/uploader}/tokens.js +27 -1
- package/dist/cjs/{water-mark → components/water-mark}/WaterMark.js +16 -16
- package/dist/cjs/design-system/ThemeContext.js +19 -0
- package/dist/cjs/design-system/ThemeProvider.js +37 -0
- package/dist/cjs/design-system/createComponentTokensHook.js +30 -0
- package/dist/cjs/design-system/index.js +59 -0
- package/dist/cjs/design-system/mergeTokensOverride.js +12 -0
- package/dist/cjs/design-system/presets.js +147 -0
- package/dist/cjs/design-system/tokens.js +144 -0
- package/dist/cjs/design-system/useTheme.js +16 -0
- package/dist/cjs/hooks/aria/index.js +49 -0
- package/dist/cjs/hooks/aria/useAriaListBox.js +58 -0
- package/dist/cjs/hooks/aria/useAriaOverlay.js +50 -0
- package/dist/cjs/hooks/aria/useAriaPress.js +107 -0
- package/dist/cjs/hooks/aria/useAriaToggle.js +41 -0
- package/dist/cjs/hooks/gesture/index.js +16 -0
- package/dist/cjs/hooks/gesture/useGestureScroll.js +131 -0
- package/dist/cjs/hooks/index.js +84 -0
- package/dist/cjs/hooks/useControllableValue.js +52 -0
- package/dist/cjs/hooks/useCountDown.js +107 -0
- package/dist/cjs/hooks/useHairline.js +62 -0
- package/dist/cjs/hooks/usePresenceAnimation.js +70 -0
- package/dist/cjs/hooks/useSafeAreaPadding.js +41 -0
- package/dist/cjs/index.js +33 -499
- package/dist/cjs/platform/animation.js +14 -0
- package/dist/cjs/platform/history.js +14 -0
- package/dist/cjs/platform/index.js +60 -0
- package/dist/cjs/platform/measure.js +55 -0
- package/dist/cjs/platform/runtime.js +19 -0
- package/dist/cjs/platform/scrollLock.js +24 -0
- package/dist/cjs/utils/array.js +12 -0
- package/dist/cjs/utils/color.js +52 -0
- package/dist/cjs/utils/createPlatformShadow.js +63 -0
- package/dist/cjs/utils/date.js +75 -0
- package/dist/cjs/utils/deepMerge.js +37 -0
- package/dist/cjs/utils/hairline.js +103 -0
- package/dist/cjs/utils/index.js +115 -0
- package/dist/cjs/utils/number.js +73 -0
- package/dist/cjs/utils/promise.js +9 -0
- package/dist/cjs/utils/string.js +39 -0
- package/dist/cjs/utils/validate.js +41 -0
- package/dist/es/{area → components/area}/Area.js +5 -11
- package/dist/es/{avatar → components/avatar}/Avatar.js +3 -3
- package/dist/es/{avatar → components/avatar}/tokens.js +2 -1
- package/dist/es/{badge → components/badge}/Badge.js +31 -39
- package/dist/es/{button → components/button}/Button.js +14 -14
- package/dist/es/{button → components/button}/ButtonGroup.js +7 -7
- package/dist/es/{calendar → components/calendar}/Calendar.js +11 -11
- package/dist/es/{cascader → components/cascader}/Cascader.js +5 -5
- package/dist/es/{cascader → components/cascader}/useCascaderExtend.js +5 -9
- package/dist/es/{checkbox → components/checkbox}/CheckboxGroup.js +3 -3
- package/dist/es/{circle → components/circle}/Circle.js +3 -3
- package/dist/es/{collapse → components/collapse}/Collapse.js +14 -17
- package/dist/es/{config-provider → components/config-provider}/ConfigProvider.js +2 -2
- package/dist/es/{datetime-picker → components/datetime-picker}/DatetimePicker.js +8 -8
- package/dist/es/{dialog → components/dialog}/Dialog.js +4 -6
- package/dist/es/{dialog → components/dialog}/tokens.js +2 -1
- package/dist/es/{dropdown-menu → components/dropdown-menu}/DropdownItem.js +53 -52
- package/dist/es/{dropdown-menu → components/dropdown-menu}/DropdownMenu.js +20 -24
- package/dist/es/{dropdown-menu → components/dropdown-menu}/tokens.js +20 -3
- package/dist/es/{field → components/field}/Field.js +7 -7
- package/dist/es/{field → components/field}/index.js +1 -1
- package/dist/es/{form → components/form}/Form.js +6 -10
- package/dist/es/{grid → components/grid}/Grid.js +3 -3
- package/dist/es/{image → components/image}/Image.js +20 -16
- package/dist/es/{image-preview → components/image-preview}/ImagePreview.js +63 -61
- package/dist/es/components/image-preview/tokens.js +35 -0
- package/dist/es/{index-bar → components/index-bar}/IndexAnchor.js +7 -6
- package/dist/es/{index-bar → components/index-bar}/IndexBar.js +41 -46
- package/dist/es/components/index-bar/tokens.js +39 -0
- package/dist/es/components/index.js +123 -0
- package/dist/es/{input → components/input}/Input.js +8 -11
- package/dist/es/{nav-bar → components/nav-bar}/NavBar.js +2 -1
- package/dist/es/{notice-bar → components/notice-bar}/NoticeBar.js +70 -96
- package/dist/es/{notify → components/notify}/Notify.js +68 -52
- package/dist/es/{notify → components/notify}/defaults.js +2 -2
- package/dist/es/{notify → components/notify}/imperative.js +2 -2
- package/dist/es/{notify → components/notify}/tokens.js +5 -4
- package/dist/es/{number-keyboard → components/number-keyboard}/NumberKeyboard.js +16 -17
- package/dist/es/{number-keyboard → components/number-keyboard}/tokens.js +4 -2
- package/dist/es/{overlay → components/overlay}/useOverlayStack.js +6 -2
- package/dist/es/{pagination → components/pagination}/Pagination.js +3 -3
- package/dist/es/{password-input → components/password-input}/PasswordInput.js +36 -28
- package/dist/es/{picker → components/picker}/Picker.js +12 -13
- package/dist/es/{picker → components/picker}/WheelPicker.js +10 -10
- package/dist/es/{picker → components/picker}/tokens.js +4 -2
- package/dist/es/{popup → components/popup}/Popup.js +48 -75
- package/dist/es/{popup → components/popup}/tokens.js +2 -1
- package/dist/es/{portal → components/portal}/Portal.js +5 -0
- package/dist/es/{portal → components/portal}/PortalHost.js +1 -13
- package/dist/es/{pull-refresh → components/pull-refresh}/PullRefresh.js +47 -28
- package/dist/es/{radio → components/radio}/RadioGroup.js +3 -3
- package/dist/es/components/safe-area-view/SafeAreaView.js +43 -0
- package/dist/es/components/safe-area-view/index.js +1 -0
- package/dist/es/{search → components/search}/Search.js +53 -68
- package/dist/es/{search → components/search}/tokens.js +2 -1
- package/dist/es/{selector → components/selector}/Selector.js +4 -4
- package/dist/es/{share-sheet → components/share-sheet}/ShareSheet.js +65 -63
- package/dist/es/{share-sheet → components/share-sheet}/tokens.js +15 -2
- package/dist/es/{sidebar → components/sidebar}/Sidebar.js +14 -18
- package/dist/es/{sidebar → components/sidebar}/SidebarItem.js +0 -3
- package/dist/es/{skeleton → components/skeleton}/Skeleton.js +45 -57
- package/dist/es/{slider → components/slider}/Slider.js +56 -62
- package/dist/es/{stepper → components/stepper}/Stepper.js +14 -17
- package/dist/es/{stepper → components/stepper}/tokens.js +4 -2
- package/dist/es/{swiper → components/swiper}/Swiper.js +22 -43
- package/dist/es/{swiper → components/swiper}/useSwiperWeb.js +16 -19
- package/dist/es/{tabbar → components/tabbar}/Tabbar.js +11 -13
- package/dist/es/{tabbar → components/tabbar}/TabbarItem.js +0 -3
- package/dist/es/{tabs → components/tabs}/Tabs.js +34 -55
- package/dist/es/{tabs → components/tabs}/tokens.js +9 -1
- package/dist/es/{tabs → components/tabs}/useTabsScroll.js +4 -0
- package/dist/es/{toast → components/toast}/Toast.js +14 -15
- package/dist/es/{toast → components/toast}/tokens.js +5 -1
- package/dist/es/components/types.js +1 -0
- package/dist/es/{typography → components/typography}/Typography.js +18 -31
- package/dist/es/{uploader → components/uploader}/Uploader.js +49 -46
- package/dist/es/{uploader → components/uploader}/tokens.js +27 -1
- package/dist/es/{water-mark → components/water-mark}/WaterMark.js +17 -17
- package/dist/es/design-system/ThemeContext.js +6 -0
- package/dist/es/design-system/ThemeProvider.js +23 -0
- package/dist/es/design-system/createComponentTokensHook.js +17 -0
- package/dist/es/design-system/index.js +6 -0
- package/dist/es/design-system/mergeTokensOverride.js +5 -0
- package/dist/es/design-system/presets.js +140 -0
- package/dist/es/design-system/tokens.js +136 -0
- package/dist/es/design-system/useTheme.js +3 -0
- package/dist/es/hooks/aria/index.js +5 -0
- package/dist/es/hooks/aria/useAriaListBox.js +33 -0
- package/dist/es/hooks/aria/useAriaOverlay.js +25 -0
- package/dist/es/hooks/aria/useAriaPress.js +70 -0
- package/dist/es/hooks/aria/useAriaToggle.js +16 -0
- package/dist/es/hooks/gesture/index.js +2 -0
- package/dist/es/hooks/gesture/useGestureScroll.js +112 -0
- package/dist/es/hooks/index.js +7 -0
- package/dist/es/hooks/useControllableValue.js +40 -0
- package/dist/es/hooks/useCountDown.js +95 -0
- package/dist/es/hooks/useHairline.js +42 -0
- package/dist/es/hooks/usePresenceAnimation.js +51 -0
- package/dist/es/hooks/useSafeAreaPadding.js +23 -0
- package/dist/es/index.js +4 -73
- package/dist/es/platform/animation.js +2 -0
- package/dist/es/platform/history.js +7 -0
- package/dist/es/platform/index.js +6 -0
- package/dist/es/platform/measure.js +48 -0
- package/dist/es/platform/runtime.js +4 -0
- package/dist/es/platform/scrollLock.js +16 -0
- package/dist/es/utils/array.js +5 -0
- package/dist/es/utils/color.js +42 -0
- package/dist/es/utils/createPlatformShadow.js +50 -0
- package/dist/es/utils/date.js +63 -0
- package/dist/es/utils/deepMerge.js +31 -0
- package/dist/es/utils/hairline.js +84 -0
- package/dist/es/utils/index.js +12 -0
- package/dist/es/utils/number.js +56 -0
- package/dist/es/utils/promise.js +2 -0
- package/dist/es/utils/string.js +30 -0
- package/dist/es/utils/validate.js +15 -0
- package/dist/types/components/dialog/tokens.d.ts +1 -0
- package/dist/types/components/dropdown-menu/tokens.d.ts +17 -0
- package/dist/types/components/field/index.d.ts +1 -1
- package/dist/types/components/image-preview/tokens.d.ts +16 -0
- package/dist/types/components/index-bar/tokens.d.ts +13 -4
- package/dist/types/components/index.d.ts +104 -0
- package/dist/types/components/notify/defaults.d.ts +2 -2
- package/dist/types/components/number-keyboard/tokens.d.ts +1 -0
- package/dist/types/components/password-input/PasswordInput.d.ts +4 -0
- package/dist/types/components/picker/tokens.d.ts +2 -0
- package/dist/types/components/popup/tokens.d.ts +1 -0
- package/dist/types/components/safe-area-view/SafeAreaView.d.ts +10 -0
- package/dist/types/components/safe-area-view/index.d.ts +2 -0
- package/dist/types/components/search/tokens.d.ts +1 -0
- package/dist/types/components/share-sheet/tokens.d.ts +13 -0
- package/dist/types/components/stepper/tokens.d.ts +2 -0
- package/dist/types/components/tabs/tokens.d.ts +8 -0
- package/dist/types/components/toast/tokens.d.ts +4 -0
- package/dist/types/components/uploader/tokens.d.ts +25 -0
- package/dist/types/hooks/index.d.ts +1 -0
- package/dist/types/hooks/usePresenceAnimation.d.ts +6 -1
- package/dist/types/hooks/useSafeAreaPadding.d.ts +13 -0
- package/package.json +290 -274
- package/dist/cjs/index-bar/tokens.js +0 -36
- package/dist/cjs/safe-area/SafeAreaClipper.js +0 -114
- package/dist/cjs/safe-area/index.js +0 -63
- package/dist/es/image-preview/tokens.js +0 -16
- package/dist/es/index-bar/tokens.js +0 -30
- package/dist/es/safe-area/SafeAreaClipper.js +0 -86
- package/dist/es/safe-area/index.js +0 -25
- package/dist/types/components/safe-area/SafeAreaClipper.d.ts +0 -47
- package/dist/types/components/safe-area/index.d.ts +0 -9
- /package/dist/cjs/{action-sheet → components/action-sheet}/ActionSheet.js +0 -0
- /package/dist/cjs/{action-sheet → components/action-sheet}/index.js +0 -0
- /package/dist/cjs/{action-sheet → components/action-sheet}/tokens.js +0 -0
- /package/dist/cjs/{area → components/area}/index.js +0 -0
- /package/dist/cjs/{area → components/area}/utils.js +0 -0
- /package/dist/cjs/{avatar → components/avatar}/index.js +0 -0
- /package/dist/cjs/{badge → components/badge}/index.js +0 -0
- /package/dist/cjs/{badge → components/badge}/tokens.js +0 -0
- /package/dist/cjs/{button → components/button}/ButtonContext.js +0 -0
- /package/dist/cjs/{button → components/button}/index.js +0 -0
- /package/dist/cjs/{button → components/button}/tokens.js +0 -0
- /package/dist/cjs/{calendar → components/calendar}/index.js +0 -0
- /package/dist/cjs/{calendar → components/calendar}/tokens.js +0 -0
- /package/dist/cjs/{cascader → components/cascader}/index.js +0 -0
- /package/dist/cjs/{cascader → components/cascader}/tokens.js +0 -0
- /package/dist/cjs/{cascader → components/cascader}/utils.js +0 -0
- /package/dist/cjs/{cell → components/cell}/Cell.js +0 -0
- /package/dist/cjs/{cell → components/cell}/CellContext.js +0 -0
- /package/dist/cjs/{cell → components/cell}/CellGroup.js +0 -0
- /package/dist/cjs/{cell → components/cell}/index.js +0 -0
- /package/dist/cjs/{cell → components/cell}/tokens.js +0 -0
- /package/dist/cjs/{checkbox → components/checkbox}/Checkbox.js +0 -0
- /package/dist/cjs/{checkbox → components/checkbox}/CheckboxContext.js +0 -0
- /package/dist/cjs/{checkbox → components/checkbox}/index.js +0 -0
- /package/dist/cjs/{checkbox → components/checkbox}/tokens.js +0 -0
- /package/dist/cjs/{circle → components/circle}/index.js +0 -0
- /package/dist/cjs/{circle → components/circle}/tokens.js +0 -0
- /package/dist/cjs/{collapse → components/collapse}/index.js +0 -0
- /package/dist/cjs/{collapse → components/collapse}/tokens.js +0 -0
- /package/dist/cjs/{config-provider → components/config-provider}/LocaleContext.js +0 -0
- /package/dist/cjs/{config-provider → components/config-provider}/index.js +0 -0
- /package/dist/cjs/{config-provider → components/config-provider}/locale/base.js +0 -0
- /package/dist/cjs/{config-provider → components/config-provider}/locale/en-US.js +0 -0
- /package/dist/cjs/{config-provider → components/config-provider}/locale/zh-CN.js +0 -0
- /package/dist/cjs/{config-provider → components/config-provider}/useLocale.js +0 -0
- /package/dist/cjs/{count-down → components/count-down}/CountDown.js +0 -0
- /package/dist/cjs/{count-down → components/count-down}/index.js +0 -0
- /package/dist/cjs/{count-down → components/count-down}/tokens.js +0 -0
- /package/dist/cjs/{datetime-picker → components/datetime-picker}/index.js +0 -0
- /package/dist/cjs/{dialog → components/dialog}/imperative.js +0 -0
- /package/dist/cjs/{dialog → components/dialog}/index.js +0 -0
- /package/dist/cjs/{divider → components/divider}/Divider.js +0 -0
- /package/dist/cjs/{divider → components/divider}/index.js +0 -0
- /package/dist/cjs/{divider → components/divider}/tokens.js +0 -0
- /package/dist/cjs/{dropdown-menu → components/dropdown-menu}/DropdownMenuContext.js +0 -0
- /package/dist/cjs/{dropdown-menu → components/dropdown-menu}/index.js +0 -0
- /package/dist/cjs/{empty → components/empty}/Empty.js +0 -0
- /package/dist/cjs/{empty → components/empty}/index.js +0 -0
- /package/dist/cjs/{empty → components/empty}/tokens.js +0 -0
- /package/dist/cjs/{field → components/field}/index.js +0 -0
- /package/dist/cjs/{field → components/field}/tokens.js +0 -0
- /package/dist/cjs/{field → components/field}/utils.js +0 -0
- /package/dist/cjs/{flex → components/flex}/Flex.js +0 -0
- /package/dist/cjs/{flex → components/flex}/FlexContext.js +0 -0
- /package/dist/cjs/{flex → components/flex}/FlexItem.js +0 -0
- /package/dist/cjs/{flex → components/flex}/index.js +0 -0
- /package/dist/cjs/{flex → components/flex}/tokens.js +0 -0
- /package/dist/cjs/{form → components/form}/FormContext.js +0 -0
- /package/dist/cjs/{form → components/form}/FormItem.js +0 -0
- /package/dist/cjs/{form → components/form}/FormList.js +0 -0
- /package/dist/cjs/{form → components/form}/index.js +0 -0
- /package/dist/cjs/{form → components/form}/utils.js +0 -0
- /package/dist/cjs/{grid → components/grid}/GridContext.js +0 -0
- /package/dist/cjs/{grid → components/grid}/GridItem.js +0 -0
- /package/dist/cjs/{grid → components/grid}/index.js +0 -0
- /package/dist/cjs/{grid → components/grid}/tokens.js +0 -0
- /package/dist/cjs/{image → components/image}/index.js +0 -0
- /package/dist/cjs/{image → components/image}/tokens.js +0 -0
- /package/dist/cjs/{image-preview → components/image-preview}/imperative.js +0 -0
- /package/dist/cjs/{image-preview → components/image-preview}/index.js +0 -0
- /package/dist/cjs/{index-bar → components/index-bar}/index.js +0 -0
- /package/dist/cjs/{input → components/input}/index.js +0 -0
- /package/dist/cjs/{input → components/input}/tokens.js +0 -0
- /package/dist/cjs/{list → components/list}/List.js +0 -0
- /package/dist/cjs/{list → components/list}/index.js +0 -0
- /package/dist/cjs/{list → components/list}/tokens.js +0 -0
- /package/dist/cjs/{loading → components/loading}/Loading.js +0 -0
- /package/dist/cjs/{loading → components/loading}/index.js +0 -0
- /package/dist/cjs/{loading → components/loading}/tokens.js +0 -0
- /package/dist/cjs/{nav-bar → components/nav-bar}/index.js +0 -0
- /package/dist/cjs/{nav-bar → components/nav-bar}/tokens.js +0 -0
- /package/dist/cjs/{notice-bar → components/notice-bar}/index.js +0 -0
- /package/dist/cjs/{notice-bar → components/notice-bar}/tokens.js +0 -0
- /package/dist/cjs/{notify → components/notify}/index.js +0 -0
- /package/dist/cjs/{number-keyboard → components/number-keyboard}/index.js +0 -0
- /package/dist/cjs/{overlay → components/overlay}/Overlay.js +0 -0
- /package/dist/cjs/{overlay → components/overlay}/OverlayStackStore.js +0 -0
- /package/dist/cjs/{overlay → components/overlay}/index.js +0 -0
- /package/dist/cjs/{overlay → components/overlay}/tokens.js +0 -0
- /package/dist/cjs/{pagination → components/pagination}/index.js +0 -0
- /package/dist/cjs/{pagination → components/pagination}/tokens.js +0 -0
- /package/dist/cjs/{password-input → components/password-input}/index.js +0 -0
- /package/dist/cjs/{picker → components/picker}/index.js +0 -0
- /package/dist/cjs/{picker → components/picker}/utils.js +0 -0
- /package/dist/cjs/{popup → components/popup}/index.js +0 -0
- /package/dist/cjs/{portal → components/portal}/PortalContext.js +0 -0
- /package/dist/cjs/{portal → components/portal}/index.js +0 -0
- /package/dist/cjs/{progress → components/progress}/Progress.js +0 -0
- /package/dist/cjs/{progress → components/progress}/index.js +0 -0
- /package/dist/cjs/{progress → components/progress}/tokens.js +0 -0
- /package/dist/cjs/{pull-refresh → components/pull-refresh}/index.js +0 -0
- /package/dist/cjs/{pull-refresh → components/pull-refresh}/tokens.js +0 -0
- /package/dist/cjs/{radio → components/radio}/Radio.js +0 -0
- /package/dist/cjs/{radio → components/radio}/RadioContext.js +0 -0
- /package/dist/cjs/{radio → components/radio}/index.js +0 -0
- /package/dist/cjs/{radio → components/radio}/tokens.js +0 -0
- /package/dist/cjs/{rate → components/rate}/Rate.js +0 -0
- /package/dist/cjs/{rate → components/rate}/index.js +0 -0
- /package/dist/cjs/{rate → components/rate}/tokens.js +0 -0
- /package/dist/cjs/{search → components/search}/index.js +0 -0
- /package/dist/cjs/{selector → components/selector}/index.js +0 -0
- /package/dist/cjs/{selector → components/selector}/tokens.js +0 -0
- /package/dist/cjs/{share-sheet → components/share-sheet}/index.js +0 -0
- /package/dist/cjs/{sidebar → components/sidebar}/SidebarContext.js +0 -0
- /package/dist/cjs/{sidebar → components/sidebar}/index.js +0 -0
- /package/dist/cjs/{sidebar → components/sidebar}/tokens.js +0 -0
- /package/dist/cjs/{skeleton → components/skeleton}/index.js +0 -0
- /package/dist/cjs/{skeleton → components/skeleton}/tokens.js +0 -0
- /package/dist/cjs/{slider → components/slider}/index.js +0 -0
- /package/dist/cjs/{slider → components/slider}/tokens.js +0 -0
- /package/dist/cjs/{slider → components/slider}/utils.js +0 -0
- /package/dist/cjs/{space → components/space}/Space.js +0 -0
- /package/dist/cjs/{space → components/space}/index.js +0 -0
- /package/dist/cjs/{space → components/space}/tokens.js +0 -0
- /package/dist/cjs/{stepper → components/stepper}/index.js +0 -0
- /package/dist/cjs/{swiper → components/swiper}/SwiperItem.js +0 -0
- /package/dist/cjs/{swiper → components/swiper}/SwiperPagIndicator.js +0 -0
- /package/dist/cjs/{swiper → components/swiper}/index.js +0 -0
- /package/dist/cjs/{swiper → components/swiper}/utils.js +0 -0
- /package/dist/cjs/{switch → components/switch}/Switch.js +0 -0
- /package/dist/cjs/{switch → components/switch}/index.js +0 -0
- /package/dist/cjs/{switch → components/switch}/tokens.js +0 -0
- /package/dist/cjs/{tabbar → components/tabbar}/TabbarContext.js +0 -0
- /package/dist/cjs/{tabbar → components/tabbar}/index.js +0 -0
- /package/dist/cjs/{tabbar → components/tabbar}/tokens.js +0 -0
- /package/dist/cjs/{tabs → components/tabs}/TabPane.js +0 -0
- /package/dist/cjs/{tabs → components/tabs}/index.js +0 -0
- /package/dist/cjs/{tabs → components/tabs}/useTabsAnimation.js +0 -0
- /package/dist/cjs/{tabs → components/tabs}/utils.js +0 -0
- /package/dist/cjs/{tag → components/tag}/Tag.js +0 -0
- /package/dist/cjs/{tag → components/tag}/index.js +0 -0
- /package/dist/cjs/{tag → components/tag}/tokens.js +0 -0
- /package/dist/cjs/{toast → components/toast}/imperative.js +0 -0
- /package/dist/cjs/{toast → components/toast}/index.js +0 -0
- /package/dist/cjs/{typography → components/typography}/index.js +0 -0
- /package/dist/cjs/{typography → components/typography}/tokens.js +0 -0
- /package/dist/cjs/{uploader → components/uploader}/index.js +0 -0
- /package/dist/cjs/{uploader → components/uploader}/utils.js +0 -0
- /package/dist/cjs/{water-mark → components/water-mark}/index.js +0 -0
- /package/dist/cjs/{water-mark → components/water-mark}/tokens.js +0 -0
- /package/dist/es/{action-sheet → components/action-sheet}/ActionSheet.js +0 -0
- /package/dist/es/{action-sheet → components/action-sheet}/index.js +0 -0
- /package/dist/es/{action-sheet → components/action-sheet}/tokens.js +0 -0
- /package/dist/es/{area → components/area}/index.js +0 -0
- /package/dist/es/{area → components/area}/utils.js +0 -0
- /package/dist/es/{avatar → components/avatar}/index.js +0 -0
- /package/dist/es/{badge → components/badge}/index.js +0 -0
- /package/dist/es/{badge → components/badge}/tokens.js +0 -0
- /package/dist/es/{button → components/button}/ButtonContext.js +0 -0
- /package/dist/es/{button → components/button}/index.js +0 -0
- /package/dist/es/{button → components/button}/tokens.js +0 -0
- /package/dist/es/{calendar → components/calendar}/index.js +0 -0
- /package/dist/es/{calendar → components/calendar}/tokens.js +0 -0
- /package/dist/es/{cascader → components/cascader}/index.js +0 -0
- /package/dist/es/{cascader → components/cascader}/tokens.js +0 -0
- /package/dist/es/{cascader → components/cascader}/utils.js +0 -0
- /package/dist/es/{cell → components/cell}/Cell.js +0 -0
- /package/dist/es/{cell → components/cell}/CellContext.js +0 -0
- /package/dist/es/{cell → components/cell}/CellGroup.js +0 -0
- /package/dist/es/{cell → components/cell}/index.js +0 -0
- /package/dist/es/{cell → components/cell}/tokens.js +0 -0
- /package/dist/es/{checkbox → components/checkbox}/Checkbox.js +0 -0
- /package/dist/es/{checkbox → components/checkbox}/CheckboxContext.js +0 -0
- /package/dist/es/{checkbox → components/checkbox}/index.js +0 -0
- /package/dist/es/{checkbox → components/checkbox}/tokens.js +0 -0
- /package/dist/es/{circle → components/circle}/index.js +0 -0
- /package/dist/es/{circle → components/circle}/tokens.js +0 -0
- /package/dist/es/{collapse → components/collapse}/index.js +0 -0
- /package/dist/es/{collapse → components/collapse}/tokens.js +0 -0
- /package/dist/es/{config-provider → components/config-provider}/LocaleContext.js +0 -0
- /package/dist/es/{config-provider → components/config-provider}/index.js +0 -0
- /package/dist/es/{config-provider → components/config-provider}/locale/base.js +0 -0
- /package/dist/es/{config-provider → components/config-provider}/locale/en-US.js +0 -0
- /package/dist/es/{config-provider → components/config-provider}/locale/zh-CN.js +0 -0
- /package/dist/es/{config-provider → components/config-provider}/useLocale.js +0 -0
- /package/dist/es/{count-down → components/count-down}/CountDown.js +0 -0
- /package/dist/es/{count-down → components/count-down}/index.js +0 -0
- /package/dist/es/{count-down → components/count-down}/tokens.js +0 -0
- /package/dist/es/{datetime-picker → components/datetime-picker}/index.js +0 -0
- /package/dist/es/{dialog → components/dialog}/imperative.js +0 -0
- /package/dist/es/{dialog → components/dialog}/index.js +0 -0
- /package/dist/es/{divider → components/divider}/Divider.js +0 -0
- /package/dist/es/{divider → components/divider}/index.js +0 -0
- /package/dist/es/{divider → components/divider}/tokens.js +0 -0
- /package/dist/es/{dropdown-menu → components/dropdown-menu}/DropdownMenuContext.js +0 -0
- /package/dist/es/{dropdown-menu → components/dropdown-menu}/index.js +0 -0
- /package/dist/es/{empty → components/empty}/Empty.js +0 -0
- /package/dist/es/{empty → components/empty}/index.js +0 -0
- /package/dist/es/{empty → components/empty}/tokens.js +0 -0
- /package/dist/es/{field → components/field}/tokens.js +0 -0
- /package/dist/es/{field → components/field}/utils.js +0 -0
- /package/dist/es/{flex → components/flex}/Flex.js +0 -0
- /package/dist/es/{flex → components/flex}/FlexContext.js +0 -0
- /package/dist/es/{flex → components/flex}/FlexItem.js +0 -0
- /package/dist/es/{flex → components/flex}/index.js +0 -0
- /package/dist/es/{flex → components/flex}/tokens.js +0 -0
- /package/dist/es/{form → components/form}/FormContext.js +0 -0
- /package/dist/es/{form → components/form}/FormItem.js +0 -0
- /package/dist/es/{form → components/form}/FormList.js +0 -0
- /package/dist/es/{form → components/form}/index.js +0 -0
- /package/dist/es/{form → components/form}/utils.js +0 -0
- /package/dist/es/{grid → components/grid}/GridContext.js +0 -0
- /package/dist/es/{grid → components/grid}/GridItem.js +0 -0
- /package/dist/es/{grid → components/grid}/index.js +0 -0
- /package/dist/es/{grid → components/grid}/tokens.js +0 -0
- /package/dist/es/{image → components/image}/index.js +0 -0
- /package/dist/es/{image → components/image}/tokens.js +0 -0
- /package/dist/es/{image-preview → components/image-preview}/imperative.js +0 -0
- /package/dist/es/{image-preview → components/image-preview}/index.js +0 -0
- /package/dist/es/{index-bar → components/index-bar}/index.js +0 -0
- /package/dist/es/{input → components/input}/index.js +0 -0
- /package/dist/es/{input → components/input}/tokens.js +0 -0
- /package/dist/es/{list → components/list}/List.js +0 -0
- /package/dist/es/{list → components/list}/index.js +0 -0
- /package/dist/es/{list → components/list}/tokens.js +0 -0
- /package/dist/es/{loading → components/loading}/Loading.js +0 -0
- /package/dist/es/{loading → components/loading}/index.js +0 -0
- /package/dist/es/{loading → components/loading}/tokens.js +0 -0
- /package/dist/es/{nav-bar → components/nav-bar}/index.js +0 -0
- /package/dist/es/{nav-bar → components/nav-bar}/tokens.js +0 -0
- /package/dist/es/{notice-bar → components/notice-bar}/index.js +0 -0
- /package/dist/es/{notice-bar → components/notice-bar}/tokens.js +0 -0
- /package/dist/es/{notify → components/notify}/index.js +0 -0
- /package/dist/es/{number-keyboard → components/number-keyboard}/index.js +0 -0
- /package/dist/es/{overlay → components/overlay}/Overlay.js +0 -0
- /package/dist/es/{overlay → components/overlay}/OverlayStackStore.js +0 -0
- /package/dist/es/{overlay → components/overlay}/index.js +0 -0
- /package/dist/es/{overlay → components/overlay}/tokens.js +0 -0
- /package/dist/es/{pagination → components/pagination}/index.js +0 -0
- /package/dist/es/{pagination → components/pagination}/tokens.js +0 -0
- /package/dist/es/{password-input → components/password-input}/index.js +0 -0
- /package/dist/es/{picker → components/picker}/index.js +0 -0
- /package/dist/es/{picker → components/picker}/utils.js +0 -0
- /package/dist/es/{popup → components/popup}/index.js +0 -0
- /package/dist/es/{portal → components/portal}/PortalContext.js +0 -0
- /package/dist/es/{portal → components/portal}/index.js +0 -0
- /package/dist/es/{progress → components/progress}/Progress.js +0 -0
- /package/dist/es/{progress → components/progress}/index.js +0 -0
- /package/dist/es/{progress → components/progress}/tokens.js +0 -0
- /package/dist/es/{pull-refresh → components/pull-refresh}/index.js +0 -0
- /package/dist/es/{pull-refresh → components/pull-refresh}/tokens.js +0 -0
- /package/dist/es/{radio → components/radio}/Radio.js +0 -0
- /package/dist/es/{radio → components/radio}/RadioContext.js +0 -0
- /package/dist/es/{radio → components/radio}/index.js +0 -0
- /package/dist/es/{radio → components/radio}/tokens.js +0 -0
- /package/dist/es/{rate → components/rate}/Rate.js +0 -0
- /package/dist/es/{rate → components/rate}/index.js +0 -0
- /package/dist/es/{rate → components/rate}/tokens.js +0 -0
- /package/dist/es/{search → components/search}/index.js +0 -0
- /package/dist/es/{selector → components/selector}/index.js +0 -0
- /package/dist/es/{selector → components/selector}/tokens.js +0 -0
- /package/dist/es/{share-sheet → components/share-sheet}/index.js +0 -0
- /package/dist/es/{sidebar → components/sidebar}/SidebarContext.js +0 -0
- /package/dist/es/{sidebar → components/sidebar}/index.js +0 -0
- /package/dist/es/{sidebar → components/sidebar}/tokens.js +0 -0
- /package/dist/es/{skeleton → components/skeleton}/index.js +0 -0
- /package/dist/es/{skeleton → components/skeleton}/tokens.js +0 -0
- /package/dist/es/{slider → components/slider}/index.js +0 -0
- /package/dist/es/{slider → components/slider}/tokens.js +0 -0
- /package/dist/es/{slider → components/slider}/utils.js +0 -0
- /package/dist/es/{space → components/space}/Space.js +0 -0
- /package/dist/es/{space → components/space}/index.js +0 -0
- /package/dist/es/{space → components/space}/tokens.js +0 -0
- /package/dist/es/{stepper → components/stepper}/index.js +0 -0
- /package/dist/es/{swiper → components/swiper}/SwiperItem.js +0 -0
- /package/dist/es/{swiper → components/swiper}/SwiperPagIndicator.js +0 -0
- /package/dist/es/{swiper → components/swiper}/index.js +0 -0
- /package/dist/es/{swiper → components/swiper}/utils.js +0 -0
- /package/dist/es/{switch → components/switch}/Switch.js +0 -0
- /package/dist/es/{switch → components/switch}/index.js +0 -0
- /package/dist/es/{switch → components/switch}/tokens.js +0 -0
- /package/dist/es/{tabbar → components/tabbar}/TabbarContext.js +0 -0
- /package/dist/es/{tabbar → components/tabbar}/index.js +0 -0
- /package/dist/es/{tabbar → components/tabbar}/tokens.js +0 -0
- /package/dist/es/{tabs → components/tabs}/TabPane.js +0 -0
- /package/dist/es/{tabs → components/tabs}/index.js +0 -0
- /package/dist/es/{tabs → components/tabs}/useTabsAnimation.js +0 -0
- /package/dist/es/{tabs → components/tabs}/utils.js +0 -0
- /package/dist/es/{tag → components/tag}/Tag.js +0 -0
- /package/dist/es/{tag → components/tag}/index.js +0 -0
- /package/dist/es/{tag → components/tag}/tokens.js +0 -0
- /package/dist/es/{toast → components/toast}/imperative.js +0 -0
- /package/dist/es/{toast → components/toast}/index.js +0 -0
- /package/dist/es/{typography → components/typography}/index.js +0 -0
- /package/dist/es/{typography → components/typography}/tokens.js +0 -0
- /package/dist/es/{uploader → components/uploader}/index.js +0 -0
- /package/dist/es/{uploader → components/uploader}/utils.js +0 -0
- /package/dist/es/{water-mark → components/water-mark}/index.js +0 -0
- /package/dist/es/{water-mark → components/water-mark}/tokens.js +0 -0
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
import { useMemo, useRef } from 'react';
|
|
2
|
+
import { useOverlay } from '@react-native-aria/overlays';
|
|
3
|
+
import { mergeProps } from '@react-native-aria/utils';
|
|
4
|
+
export const useAriaOverlay = ({
|
|
5
|
+
isOpen,
|
|
6
|
+
onClose,
|
|
7
|
+
isDismissable = true,
|
|
8
|
+
shouldCloseOnInteractOutside,
|
|
9
|
+
overlayProps: overlayPropOverrides
|
|
10
|
+
}) => {
|
|
11
|
+
const overlayRef = useRef(null);
|
|
12
|
+
const {
|
|
13
|
+
overlayProps
|
|
14
|
+
} = useOverlay({
|
|
15
|
+
isOpen,
|
|
16
|
+
onClose,
|
|
17
|
+
isDismissable,
|
|
18
|
+
shouldCloseOnInteractOutside
|
|
19
|
+
}, overlayRef);
|
|
20
|
+
const resolvedOverlayProps = useMemo(() => mergeProps(overlayProps ?? {}, overlayPropOverrides ?? {}), [overlayPropOverrides, overlayProps]);
|
|
21
|
+
return {
|
|
22
|
+
overlayRef,
|
|
23
|
+
overlayProps: resolvedOverlayProps
|
|
24
|
+
};
|
|
25
|
+
};
|
|
@@ -0,0 +1,70 @@
|
|
|
1
|
+
import { useMemo } from 'react';
|
|
2
|
+
import { Platform } from 'react-native';
|
|
3
|
+
import { useFocus, useFocusRing } from '@react-native-aria/focus';
|
|
4
|
+
import { useHover, usePress } from '@react-native-aria/interactions';
|
|
5
|
+
import { mergeProps } from '@react-native-aria/utils';
|
|
6
|
+
const mergePropsCompat = (...args) => {
|
|
7
|
+
if (typeof mergeProps === 'function') {
|
|
8
|
+
return mergeProps(...args);
|
|
9
|
+
}
|
|
10
|
+
return Object.assign({}, ...args);
|
|
11
|
+
};
|
|
12
|
+
export const useAriaPress = ({
|
|
13
|
+
disabled = false,
|
|
14
|
+
allowHover = Platform.OS === 'web',
|
|
15
|
+
allowFocus = Platform.OS === 'web',
|
|
16
|
+
extraProps,
|
|
17
|
+
...pressEvents
|
|
18
|
+
} = {}) => {
|
|
19
|
+
const {
|
|
20
|
+
pressProps,
|
|
21
|
+
isPressed
|
|
22
|
+
} = usePress({
|
|
23
|
+
...pressEvents,
|
|
24
|
+
isDisabled: disabled
|
|
25
|
+
});
|
|
26
|
+
const {
|
|
27
|
+
isHovered,
|
|
28
|
+
hoverProps
|
|
29
|
+
} = useHover({
|
|
30
|
+
isDisabled: disabled || !allowHover
|
|
31
|
+
});
|
|
32
|
+
const useFocusCompat = useFocus;
|
|
33
|
+
const {
|
|
34
|
+
isFocused,
|
|
35
|
+
focusProps
|
|
36
|
+
} = useFocusCompat({
|
|
37
|
+
isDisabled: disabled
|
|
38
|
+
});
|
|
39
|
+
const useFocusRingCompat = useFocusRing;
|
|
40
|
+
const {
|
|
41
|
+
focusProps: focusRingProps,
|
|
42
|
+
isFocusVisible
|
|
43
|
+
} = useFocusRingCompat({
|
|
44
|
+
isDisabled: disabled
|
|
45
|
+
});
|
|
46
|
+
const interactionProps = useMemo(() => {
|
|
47
|
+
let merged = pressProps;
|
|
48
|
+
if (allowHover) {
|
|
49
|
+
merged = mergePropsCompat(merged, hoverProps);
|
|
50
|
+
}
|
|
51
|
+
if (allowFocus && !disabled) {
|
|
52
|
+
merged = mergePropsCompat(merged, focusProps, focusRingProps);
|
|
53
|
+
}
|
|
54
|
+
if (extraProps) {
|
|
55
|
+
merged = mergePropsCompat(merged, extraProps);
|
|
56
|
+
}
|
|
57
|
+
return merged;
|
|
58
|
+
}, [allowFocus, allowHover, disabled, extraProps, focusProps, focusRingProps, hoverProps, pressProps]);
|
|
59
|
+
const states = useMemo(() => ({
|
|
60
|
+
hovered: !!isHovered,
|
|
61
|
+
pressed: !!isPressed,
|
|
62
|
+
focused: !!isFocused,
|
|
63
|
+
focusVisible: !!isFocusVisible,
|
|
64
|
+
disabled: !!disabled
|
|
65
|
+
}), [disabled, isFocusVisible, isFocused, isHovered, isPressed]);
|
|
66
|
+
return {
|
|
67
|
+
interactionProps,
|
|
68
|
+
states
|
|
69
|
+
};
|
|
70
|
+
};
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
import { useMemo, useRef } from 'react';
|
|
2
|
+
import { useToggle } from '@react-native-aria/toggle';
|
|
3
|
+
import { useToggleState } from '@react-stately/toggle';
|
|
4
|
+
export const useAriaToggle = props => {
|
|
5
|
+
const inputRef = props.inputRef ?? useRef(null);
|
|
6
|
+
const state = useToggleState(props);
|
|
7
|
+
const {
|
|
8
|
+
inputProps
|
|
9
|
+
} = useToggle(props, state, inputRef);
|
|
10
|
+
const resolvedInputProps = useMemo(() => inputProps, [inputProps]);
|
|
11
|
+
return {
|
|
12
|
+
state,
|
|
13
|
+
inputProps: resolvedInputProps,
|
|
14
|
+
inputRef
|
|
15
|
+
};
|
|
16
|
+
};
|
|
@@ -0,0 +1,112 @@
|
|
|
1
|
+
import { useCallback, useMemo, useRef, useState } from 'react';
|
|
2
|
+
import { Animated } from 'react-native';
|
|
3
|
+
const DEFAULT_THROTTLE = 16;
|
|
4
|
+
const VELOCITY_NORMALIZER = 1000; // convert delta/ms to px per second
|
|
5
|
+
|
|
6
|
+
export const useGestureScroll = (options = {}) => {
|
|
7
|
+
const {
|
|
8
|
+
axis = 'y',
|
|
9
|
+
scrollEventThrottle = DEFAULT_THROTTLE,
|
|
10
|
+
onScroll,
|
|
11
|
+
onScrollBeginDrag,
|
|
12
|
+
onScrollEndDrag,
|
|
13
|
+
onMomentumScrollBegin,
|
|
14
|
+
onMomentumScrollEnd
|
|
15
|
+
} = options;
|
|
16
|
+
const scrollValue = useRef(new Animated.Value(0)).current;
|
|
17
|
+
const lastOffsetRef = useRef(0);
|
|
18
|
+
const lastTimestampRef = useRef(null);
|
|
19
|
+
const velocityRef = useRef(0);
|
|
20
|
+
const directionRef = useRef(null);
|
|
21
|
+
const [direction, setDirection] = useState(null);
|
|
22
|
+
const [isDragging, setIsDragging] = useState(false);
|
|
23
|
+
const [isMomentum, setIsMomentum] = useState(false);
|
|
24
|
+
const updateDirection = useCallback(next => {
|
|
25
|
+
if (directionRef.current !== next) {
|
|
26
|
+
directionRef.current = next;
|
|
27
|
+
setDirection(next);
|
|
28
|
+
}
|
|
29
|
+
}, []);
|
|
30
|
+
const handleScroll = useCallback(event => {
|
|
31
|
+
onScroll?.(event);
|
|
32
|
+
const contentOffset = event.nativeEvent.contentOffset;
|
|
33
|
+
const current = axis === 'x' ? contentOffset.x ?? 0 : contentOffset.y ?? 0;
|
|
34
|
+
const delta = current - lastOffsetRef.current;
|
|
35
|
+
const timestamp = event.timeStamp ?? Date.now();
|
|
36
|
+
if (delta > 0) {
|
|
37
|
+
updateDirection('forward');
|
|
38
|
+
} else if (delta < 0) {
|
|
39
|
+
updateDirection('backward');
|
|
40
|
+
}
|
|
41
|
+
if (lastTimestampRef.current != null) {
|
|
42
|
+
const elapsed = Math.max(timestamp - lastTimestampRef.current, 1);
|
|
43
|
+
velocityRef.current = delta / elapsed * VELOCITY_NORMALIZER;
|
|
44
|
+
}
|
|
45
|
+
lastTimestampRef.current = timestamp;
|
|
46
|
+
lastOffsetRef.current = current;
|
|
47
|
+
}, [axis, onScroll, updateDirection]);
|
|
48
|
+
const animatedScrollHandler = useMemo(() => {
|
|
49
|
+
const mapping = axis === 'x' ? [{
|
|
50
|
+
nativeEvent: {
|
|
51
|
+
contentOffset: {
|
|
52
|
+
x: scrollValue
|
|
53
|
+
}
|
|
54
|
+
}
|
|
55
|
+
}] : [{
|
|
56
|
+
nativeEvent: {
|
|
57
|
+
contentOffset: {
|
|
58
|
+
y: scrollValue
|
|
59
|
+
}
|
|
60
|
+
}
|
|
61
|
+
}];
|
|
62
|
+
return Animated.event(mapping, {
|
|
63
|
+
useNativeDriver: false,
|
|
64
|
+
listener: handleScroll
|
|
65
|
+
});
|
|
66
|
+
}, [axis, handleScroll, scrollValue]);
|
|
67
|
+
const handleScrollBeginDrag = useCallback(event => {
|
|
68
|
+
setIsDragging(true);
|
|
69
|
+
onScrollBeginDrag?.(event);
|
|
70
|
+
}, [onScrollBeginDrag]);
|
|
71
|
+
const handleScrollEndDrag = useCallback(event => {
|
|
72
|
+
setIsDragging(false);
|
|
73
|
+
onScrollEndDrag?.(event);
|
|
74
|
+
}, [onScrollEndDrag]);
|
|
75
|
+
const handleMomentumBegin = useCallback(event => {
|
|
76
|
+
setIsMomentum(true);
|
|
77
|
+
onMomentumScrollBegin?.(event);
|
|
78
|
+
}, [onMomentumScrollBegin]);
|
|
79
|
+
const handleMomentumEnd = useCallback(event => {
|
|
80
|
+
setIsMomentum(false);
|
|
81
|
+
onMomentumScrollEnd?.(event);
|
|
82
|
+
}, [onMomentumScrollEnd]);
|
|
83
|
+
const resetOffset = useCallback((value = 0) => {
|
|
84
|
+
scrollValue.stopAnimation();
|
|
85
|
+
scrollValue.setValue(value);
|
|
86
|
+
lastOffsetRef.current = value;
|
|
87
|
+
lastTimestampRef.current = null;
|
|
88
|
+
velocityRef.current = 0;
|
|
89
|
+
updateDirection(null);
|
|
90
|
+
}, [scrollValue, updateDirection]);
|
|
91
|
+
const getVelocity = useCallback(() => velocityRef.current, []);
|
|
92
|
+
const getCurrentOffset = useCallback(() => lastOffsetRef.current, []);
|
|
93
|
+
const scrollProps = useMemo(() => ({
|
|
94
|
+
onScroll: animatedScrollHandler,
|
|
95
|
+
scrollEventThrottle,
|
|
96
|
+
onScrollBeginDrag: handleScrollBeginDrag,
|
|
97
|
+
onScrollEndDrag: handleScrollEndDrag,
|
|
98
|
+
onMomentumScrollBegin: handleMomentumBegin,
|
|
99
|
+
onMomentumScrollEnd: handleMomentumEnd
|
|
100
|
+
}), [animatedScrollHandler, handleMomentumBegin, handleMomentumEnd, handleScrollBeginDrag, handleScrollEndDrag, scrollEventThrottle]);
|
|
101
|
+
return {
|
|
102
|
+
scrollValue,
|
|
103
|
+
scrollProps,
|
|
104
|
+
direction,
|
|
105
|
+
isDragging,
|
|
106
|
+
isMomentum,
|
|
107
|
+
getVelocity,
|
|
108
|
+
getCurrentOffset,
|
|
109
|
+
resetOffset
|
|
110
|
+
};
|
|
111
|
+
};
|
|
112
|
+
export default useGestureScroll;
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
export * from './usePresenceAnimation';
|
|
2
|
+
export * from './useSafeAreaPadding';
|
|
3
|
+
export * from './aria';
|
|
4
|
+
export * from './gesture';
|
|
5
|
+
export { default as useControllableValue } from './useControllableValue';
|
|
6
|
+
export { default as useCountDown } from './useCountDown';
|
|
7
|
+
export * from './useHairline';
|
|
@@ -0,0 +1,40 @@
|
|
|
1
|
+
import { useCallback, useEffect, useRef, useState } from 'react';
|
|
2
|
+
import { isFunction } from '../utils/validate';
|
|
3
|
+
const hasProp = (obj, prop) => Object.prototype.hasOwnProperty.call(obj, prop);
|
|
4
|
+
function useControllableValue(props = {}, options = {}) {
|
|
5
|
+
const {
|
|
6
|
+
defaultValue,
|
|
7
|
+
defaultValuePropName = 'defaultValue',
|
|
8
|
+
valuePropName = 'value',
|
|
9
|
+
trigger = 'onChange'
|
|
10
|
+
} = options;
|
|
11
|
+
const propsRecord = props;
|
|
12
|
+
const isControlled = hasProp(props, valuePropName);
|
|
13
|
+
const value = propsRecord[valuePropName];
|
|
14
|
+
const [internalValue, setInternalValue] = useState(() => {
|
|
15
|
+
if (isControlled) {
|
|
16
|
+
return value;
|
|
17
|
+
}
|
|
18
|
+
if (hasProp(props, defaultValuePropName)) {
|
|
19
|
+
return propsRecord[defaultValuePropName];
|
|
20
|
+
}
|
|
21
|
+
return defaultValue;
|
|
22
|
+
});
|
|
23
|
+
const mergedValue = isControlled ? value : internalValue;
|
|
24
|
+
const handlerRef = useRef(propsRecord[trigger]);
|
|
25
|
+
useEffect(() => {
|
|
26
|
+
handlerRef.current = propsRecord[trigger];
|
|
27
|
+
}, [props, trigger]);
|
|
28
|
+
const triggerChange = useCallback((nextValue, ...args) => {
|
|
29
|
+
if (!isControlled) {
|
|
30
|
+
setInternalValue(nextValue);
|
|
31
|
+
}
|
|
32
|
+
const handler = handlerRef.current;
|
|
33
|
+
if (isFunction(handler)) {
|
|
34
|
+
;
|
|
35
|
+
handler(nextValue, ...args);
|
|
36
|
+
}
|
|
37
|
+
}, [isControlled]);
|
|
38
|
+
return [mergedValue, triggerChange];
|
|
39
|
+
}
|
|
40
|
+
export default useControllableValue;
|
|
@@ -0,0 +1,95 @@
|
|
|
1
|
+
import { useCallback, useEffect, useRef, useState } from 'react';
|
|
2
|
+
import { isNumber } from '../utils/validate';
|
|
3
|
+
const parseTime = time => {
|
|
4
|
+
const total = Math.max(time, 0);
|
|
5
|
+
const days = Math.floor(total / (24 * 60 * 60 * 1000));
|
|
6
|
+
const hours = Math.floor(total % (24 * 60 * 60 * 1000) / (60 * 60 * 1000));
|
|
7
|
+
const minutes = Math.floor(total % (60 * 60 * 1000) / (60 * 1000));
|
|
8
|
+
const seconds = Math.floor(total % (60 * 1000) / 1000);
|
|
9
|
+
const milliseconds = total % 1000;
|
|
10
|
+
return {
|
|
11
|
+
total,
|
|
12
|
+
days,
|
|
13
|
+
hours,
|
|
14
|
+
minutes,
|
|
15
|
+
seconds,
|
|
16
|
+
milliseconds
|
|
17
|
+
};
|
|
18
|
+
};
|
|
19
|
+
const useCountDown = options => {
|
|
20
|
+
const {
|
|
21
|
+
time,
|
|
22
|
+
millisecond = false,
|
|
23
|
+
onChange,
|
|
24
|
+
onFinish
|
|
25
|
+
} = options;
|
|
26
|
+
const timeRef = useRef(time);
|
|
27
|
+
const millisecondRef = useRef(millisecond);
|
|
28
|
+
const onChangeRef = useRef(onChange);
|
|
29
|
+
const onFinishRef = useRef(onFinish);
|
|
30
|
+
timeRef.current = time;
|
|
31
|
+
millisecondRef.current = millisecond;
|
|
32
|
+
onChangeRef.current = onChange;
|
|
33
|
+
onFinishRef.current = onFinish;
|
|
34
|
+
const remainRef = useRef(Math.max(0, time));
|
|
35
|
+
const endTimeRef = useRef(Date.now() + remainRef.current);
|
|
36
|
+
const timerRef = useRef(null);
|
|
37
|
+
const countingRef = useRef(false);
|
|
38
|
+
const [current, setCurrent] = useState(() => parseTime(remainRef.current));
|
|
39
|
+
const clearTimer = useCallback(() => {
|
|
40
|
+
if (timerRef.current) {
|
|
41
|
+
clearTimeout(timerRef.current);
|
|
42
|
+
timerRef.current = null;
|
|
43
|
+
}
|
|
44
|
+
}, []);
|
|
45
|
+
const update = useCallback(remain => {
|
|
46
|
+
remainRef.current = remain;
|
|
47
|
+
const next = parseTime(remain);
|
|
48
|
+
setCurrent(next);
|
|
49
|
+
onChangeRef.current?.(next);
|
|
50
|
+
if (remain === 0) {
|
|
51
|
+
countingRef.current = false;
|
|
52
|
+
clearTimer();
|
|
53
|
+
onFinishRef.current?.();
|
|
54
|
+
}
|
|
55
|
+
}, [clearTimer]);
|
|
56
|
+
const tick = useCallback(() => {
|
|
57
|
+
if (!countingRef.current) return;
|
|
58
|
+
clearTimer();
|
|
59
|
+
const remain = Math.max(endTimeRef.current - Date.now(), 0);
|
|
60
|
+
update(remain);
|
|
61
|
+
if (remain <= 0) return;
|
|
62
|
+
const delay = millisecondRef.current ? Math.max(1, Math.min(30, remain)) : Math.max(1, Math.min(remain, remain % 1000 + 1));
|
|
63
|
+
timerRef.current = setTimeout(() => {
|
|
64
|
+
tick();
|
|
65
|
+
}, delay);
|
|
66
|
+
}, [clearTimer, update]);
|
|
67
|
+
const start = useCallback(() => {
|
|
68
|
+
if (countingRef.current || remainRef.current <= 0) return;
|
|
69
|
+
countingRef.current = true;
|
|
70
|
+
endTimeRef.current = Date.now() + remainRef.current;
|
|
71
|
+
tick();
|
|
72
|
+
}, [tick]);
|
|
73
|
+
const pause = useCallback(() => {
|
|
74
|
+
if (!countingRef.current) return;
|
|
75
|
+
countingRef.current = false;
|
|
76
|
+
remainRef.current = Math.max(endTimeRef.current - Date.now(), 0);
|
|
77
|
+
clearTimer();
|
|
78
|
+
}, [clearTimer]);
|
|
79
|
+
const reset = useCallback(newTime => {
|
|
80
|
+
pause();
|
|
81
|
+
const next = Math.max(0, isNumber(newTime) ? newTime : timeRef.current);
|
|
82
|
+
remainRef.current = next;
|
|
83
|
+
endTimeRef.current = Date.now() + next;
|
|
84
|
+
setCurrent(parseTime(next));
|
|
85
|
+
}, [pause]);
|
|
86
|
+
useEffect(() => () => clearTimer(), [clearTimer]);
|
|
87
|
+
return {
|
|
88
|
+
start,
|
|
89
|
+
pause,
|
|
90
|
+
reset,
|
|
91
|
+
current
|
|
92
|
+
};
|
|
93
|
+
};
|
|
94
|
+
export { parseTime };
|
|
95
|
+
export default useCountDown;
|
|
@@ -0,0 +1,42 @@
|
|
|
1
|
+
import React, { useMemo } from 'react';
|
|
2
|
+
import { StyleSheet, View } from 'react-native';
|
|
3
|
+
import { createHairlineView } from '../utils/hairline';
|
|
4
|
+
import { isNumber } from '../utils/validate';
|
|
5
|
+
/**
|
|
6
|
+
* A hook to generate a hairline (separator) view that respects the container's padding.
|
|
7
|
+
* Useful for list items, cells, etc.
|
|
8
|
+
*/
|
|
9
|
+
export const useHairline = ({
|
|
10
|
+
show = true,
|
|
11
|
+
containerStyle,
|
|
12
|
+
color,
|
|
13
|
+
width,
|
|
14
|
+
defaultPaddingHorizontal = 0
|
|
15
|
+
}) => {
|
|
16
|
+
return useMemo(() => {
|
|
17
|
+
if (!show) return null;
|
|
18
|
+
const flattened = StyleSheet.flatten(containerStyle);
|
|
19
|
+
const paddingHorizontal = isNumber(flattened?.paddingHorizontal) ? flattened.paddingHorizontal : undefined;
|
|
20
|
+
const resolveInset = (primary, secondary) => isNumber(primary) ? primary : isNumber(secondary) ? secondary : isNumber(paddingHorizontal) ? paddingHorizontal : defaultPaddingHorizontal;
|
|
21
|
+
const resolvedPadding = {
|
|
22
|
+
left: resolveInset(flattened?.paddingLeft, flattened?.paddingStart),
|
|
23
|
+
right: resolveInset(flattened?.paddingRight, flattened?.paddingEnd)
|
|
24
|
+
};
|
|
25
|
+
return /*#__PURE__*/React.createElement(View, {
|
|
26
|
+
style: [styles.hairline, createHairlineView({
|
|
27
|
+
position: 'bottom',
|
|
28
|
+
color,
|
|
29
|
+
left: resolvedPadding.left,
|
|
30
|
+
right: resolvedPadding.right,
|
|
31
|
+
enabled: width > 0,
|
|
32
|
+
width
|
|
33
|
+
})]
|
|
34
|
+
});
|
|
35
|
+
}, [show, containerStyle, color, width, defaultPaddingHorizontal]);
|
|
36
|
+
};
|
|
37
|
+
const styles = StyleSheet.create({
|
|
38
|
+
hairline: {
|
|
39
|
+
position: 'absolute',
|
|
40
|
+
bottom: 0
|
|
41
|
+
}
|
|
42
|
+
});
|
|
@@ -0,0 +1,51 @@
|
|
|
1
|
+
import { useEffect, useRef, useState } from 'react';
|
|
2
|
+
import { Animated, Easing } from 'react-native';
|
|
3
|
+
import { nativeDriverEnabled } from '../platform';
|
|
4
|
+
export const usePresenceAnimation = (visible, {
|
|
5
|
+
duration = 180,
|
|
6
|
+
easing = Easing.out(Easing.cubic),
|
|
7
|
+
appear = false,
|
|
8
|
+
canAnimate = true
|
|
9
|
+
} = {}) => {
|
|
10
|
+
const [mounted, setMounted] = useState(visible);
|
|
11
|
+
const animated = useRef(new Animated.Value(visible && !appear ? 1 : 0)).current;
|
|
12
|
+
const useNativeDriver = nativeDriverEnabled;
|
|
13
|
+
const animationIdRef = useRef(0);
|
|
14
|
+
useEffect(() => {
|
|
15
|
+
animationIdRef.current += 1;
|
|
16
|
+
const animationId = animationIdRef.current;
|
|
17
|
+
animated.stopAnimation();
|
|
18
|
+
if (visible) {
|
|
19
|
+
setMounted(true);
|
|
20
|
+
if (!canAnimate) {
|
|
21
|
+
animated.setValue(0);
|
|
22
|
+
return;
|
|
23
|
+
}
|
|
24
|
+
Animated.timing(animated, {
|
|
25
|
+
toValue: 1,
|
|
26
|
+
duration,
|
|
27
|
+
easing,
|
|
28
|
+
useNativeDriver
|
|
29
|
+
}).start();
|
|
30
|
+
} else {
|
|
31
|
+
if (!canAnimate) {
|
|
32
|
+
animated.setValue(0);
|
|
33
|
+
setMounted(false);
|
|
34
|
+
return;
|
|
35
|
+
}
|
|
36
|
+
Animated.timing(animated, {
|
|
37
|
+
toValue: 0,
|
|
38
|
+
duration,
|
|
39
|
+
easing,
|
|
40
|
+
useNativeDriver
|
|
41
|
+
}).start(() => {
|
|
42
|
+
if (animationId !== animationIdRef.current) return;
|
|
43
|
+
setMounted(false);
|
|
44
|
+
});
|
|
45
|
+
}
|
|
46
|
+
}, [animated, canAnimate, duration, easing, useNativeDriver, visible]);
|
|
47
|
+
return {
|
|
48
|
+
mounted,
|
|
49
|
+
animated
|
|
50
|
+
};
|
|
51
|
+
};
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
import { Platform } from 'react-native';
|
|
2
|
+
import { useSafeAreaInsets } from 'react-native-safe-area-context';
|
|
3
|
+
export function useSafeAreaPadding(min) {
|
|
4
|
+
const insets = useSafeAreaInsets();
|
|
5
|
+
if (Platform.OS === 'web') {
|
|
6
|
+
const t = min?.top ?? 0,
|
|
7
|
+
b = min?.bottom ?? 0,
|
|
8
|
+
l = min?.left ?? 0,
|
|
9
|
+
r = min?.right ?? 0;
|
|
10
|
+
return {
|
|
11
|
+
paddingTop: `max(env(safe-area-inset-top, 0px), ${t}px)`,
|
|
12
|
+
paddingBottom: `max(env(safe-area-inset-bottom, 0px), ${b}px)`,
|
|
13
|
+
paddingLeft: `max(env(safe-area-inset-left, 0px), ${l}px)`,
|
|
14
|
+
paddingRight: `max(env(safe-area-inset-right, 0px), ${r}px)`
|
|
15
|
+
};
|
|
16
|
+
}
|
|
17
|
+
return {
|
|
18
|
+
paddingTop: Math.max(insets.top, min?.top ?? 0),
|
|
19
|
+
paddingBottom: Math.max(insets.bottom, min?.bottom ?? 0),
|
|
20
|
+
paddingLeft: Math.max(insets.left, min?.left ?? 0),
|
|
21
|
+
paddingRight: Math.max(insets.right, min?.right ?? 0)
|
|
22
|
+
};
|
|
23
|
+
}
|
package/dist/es/index.js
CHANGED
|
@@ -1,73 +1,4 @@
|
|
|
1
|
-
export
|
|
2
|
-
export
|
|
3
|
-
export
|
|
4
|
-
export {
|
|
5
|
-
export { default as Space } from './space';
|
|
6
|
-
export { default as Divider } from './divider';
|
|
7
|
-
export { default as Tag } from './tag';
|
|
8
|
-
export { Checkbox } from './checkbox';
|
|
9
|
-
export { CheckboxGroup } from './checkbox';
|
|
10
|
-
export { Radio } from './radio';
|
|
11
|
-
export { RadioGroup } from './radio';
|
|
12
|
-
export { default as Field } from './field';
|
|
13
|
-
export { FieldGroup } from './field';
|
|
14
|
-
export { default as Input } from './input';
|
|
15
|
-
export { default as Form } from './form';
|
|
16
|
-
export { default as Switch } from './switch';
|
|
17
|
-
export { default as Badge } from './badge';
|
|
18
|
-
export { default as Avatar } from './avatar';
|
|
19
|
-
export { default as Grid } from './grid';
|
|
20
|
-
export { default as Typography } from './typography';
|
|
21
|
-
export { default as Loading } from './loading';
|
|
22
|
-
export { default as Empty } from './empty';
|
|
23
|
-
export { default as Image } from './image';
|
|
24
|
-
export { useImageTokens } from './image';
|
|
25
|
-
export { default as Progress } from './progress';
|
|
26
|
-
export { default as Circle } from './circle';
|
|
27
|
-
export { default as NoticeBar } from './notice-bar';
|
|
28
|
-
export { default as Slider } from './slider';
|
|
29
|
-
export { default as Stepper } from './stepper';
|
|
30
|
-
export { default as Rate } from './rate';
|
|
31
|
-
export { default as Selector } from './selector';
|
|
32
|
-
export { default as Search } from './search';
|
|
33
|
-
export { default as PasswordInput } from './password-input';
|
|
34
|
-
export { default as Picker } from './picker';
|
|
35
|
-
export { default as NumberKeyboard } from './number-keyboard';
|
|
36
|
-
export { default as Collapse } from './collapse';
|
|
37
|
-
export { default as Popup } from './popup';
|
|
38
|
-
export { default as Overlay } from './overlay';
|
|
39
|
-
export { default as Dialog } from './dialog';
|
|
40
|
-
export { default as Toast } from './toast';
|
|
41
|
-
export { default as Notify } from './notify';
|
|
42
|
-
export { Portal } from './portal';
|
|
43
|
-
export { PortalHost } from './portal';
|
|
44
|
-
export { ConfigProvider } from './config-provider';
|
|
45
|
-
export { useLocale } from './config-provider';
|
|
46
|
-
export { zhCN } from './config-provider';
|
|
47
|
-
export { enUS } from './config-provider';
|
|
48
|
-
export { default as DatetimePicker } from './datetime-picker';
|
|
49
|
-
export { default as Calendar } from './calendar';
|
|
50
|
-
export { default as Cascader } from './cascader';
|
|
51
|
-
export { default as Tabs } from './tabs';
|
|
52
|
-
export { default as Tabbar } from './tabbar';
|
|
53
|
-
export { default as NavBar } from './nav-bar';
|
|
54
|
-
export { default as Sidebar } from './sidebar';
|
|
55
|
-
export { default as IndexBar } from './index-bar';
|
|
56
|
-
export { default as ActionSheet } from './action-sheet';
|
|
57
|
-
export { default as ShareSheet } from './share-sheet';
|
|
58
|
-
export { default as DropdownMenu } from './dropdown-menu';
|
|
59
|
-
export { default as Area } from './area';
|
|
60
|
-
export { default as List } from './list';
|
|
61
|
-
export { default as PullRefresh } from './pull-refresh';
|
|
62
|
-
export { default as ImagePreview } from './image-preview';
|
|
63
|
-
export { default as Swiper } from './swiper';
|
|
64
|
-
export { SwiperItem } from './swiper';
|
|
65
|
-
export { SwiperPagIndicator } from './swiper';
|
|
66
|
-
export { useSwiperPagIndicatorTokens } from './swiper';
|
|
67
|
-
export { default as Uploader } from './uploader';
|
|
68
|
-
export { useUploaderTokens } from './uploader';
|
|
69
|
-
export { default as Skeleton } from './skeleton';
|
|
70
|
-
export { useSkeletonTokens } from './skeleton';
|
|
71
|
-
export { default as CountDown } from './count-down';
|
|
72
|
-
export { default as WaterMark } from './water-mark';
|
|
73
|
-
export { default as Pagination } from './pagination';
|
|
1
|
+
export * from './components';
|
|
2
|
+
export * from './design-system';
|
|
3
|
+
export * from './hooks';
|
|
4
|
+
export {};
|
|
@@ -0,0 +1,48 @@
|
|
|
1
|
+
import { isFunction } from '../utils/validate';
|
|
2
|
+
export const measureInWindow = (node, callback) => {
|
|
3
|
+
if (!node) {
|
|
4
|
+
callback(null);
|
|
5
|
+
return;
|
|
6
|
+
}
|
|
7
|
+
try {
|
|
8
|
+
const maybeMeasureNode = node;
|
|
9
|
+
if (isFunction(maybeMeasureNode.measureInWindow)) {
|
|
10
|
+
maybeMeasureNode.measureInWindow((x, y, width, height) => {
|
|
11
|
+
if (![x, y, width, height].every(Number.isFinite)) {
|
|
12
|
+
callback(null);
|
|
13
|
+
return;
|
|
14
|
+
}
|
|
15
|
+
callback({
|
|
16
|
+
x,
|
|
17
|
+
y,
|
|
18
|
+
width,
|
|
19
|
+
height
|
|
20
|
+
});
|
|
21
|
+
});
|
|
22
|
+
return;
|
|
23
|
+
}
|
|
24
|
+
const maybeDomNode = node;
|
|
25
|
+
if (isFunction(maybeDomNode.getBoundingClientRect)) {
|
|
26
|
+
const rect = maybeDomNode.getBoundingClientRect();
|
|
27
|
+
const x = rect?.left;
|
|
28
|
+
const y = rect?.top;
|
|
29
|
+
const width = rect?.width;
|
|
30
|
+
const height = rect?.height;
|
|
31
|
+
if (![x, y, width, height].every(Number.isFinite)) {
|
|
32
|
+
callback(null);
|
|
33
|
+
return;
|
|
34
|
+
}
|
|
35
|
+
callback({
|
|
36
|
+
x: x,
|
|
37
|
+
y: y,
|
|
38
|
+
width: width,
|
|
39
|
+
height: height
|
|
40
|
+
});
|
|
41
|
+
return;
|
|
42
|
+
}
|
|
43
|
+
} catch (_error) {
|
|
44
|
+
callback(null);
|
|
45
|
+
return;
|
|
46
|
+
}
|
|
47
|
+
callback(null);
|
|
48
|
+
};
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
let locked = false;
|
|
2
|
+
let previousOverflow = '';
|
|
3
|
+
export const setBodyScrollLocked = nextLocked => {
|
|
4
|
+
if (typeof document === 'undefined') return;
|
|
5
|
+
if (nextLocked && !locked) {
|
|
6
|
+
previousOverflow = document.body.style.overflow;
|
|
7
|
+
document.body.style.overflow = 'hidden';
|
|
8
|
+
locked = true;
|
|
9
|
+
return;
|
|
10
|
+
}
|
|
11
|
+
if (!nextLocked && locked) {
|
|
12
|
+
document.body.style.overflow = previousOverflow;
|
|
13
|
+
locked = false;
|
|
14
|
+
}
|
|
15
|
+
};
|
|
16
|
+
export const isBodyScrollLocked = () => locked;
|