orn-ui 0.2.10 → 0.3.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/AGENTS.md +66 -51
- package/README.md +3 -7
- package/lib/commonjs/atoms/Avatar.js +77 -5
- package/lib/commonjs/atoms/Avatar.js.map +1 -1
- package/lib/commonjs/atoms/Badge.js +17 -8
- package/lib/commonjs/atoms/Badge.js.map +1 -1
- package/lib/commonjs/atoms/Button.js +108 -39
- package/lib/commonjs/atoms/Button.js.map +1 -1
- package/lib/commonjs/atoms/Card.js +24 -2
- package/lib/commonjs/atoms/Card.js.map +1 -1
- package/lib/commonjs/atoms/Checkbox.js +41 -10
- package/lib/commonjs/atoms/Checkbox.js.map +1 -1
- package/lib/commonjs/atoms/Divider.js +30 -5
- package/lib/commonjs/atoms/Divider.js.map +1 -1
- package/lib/commonjs/atoms/EmptyState.js +58 -20
- package/lib/commonjs/atoms/EmptyState.js.map +1 -1
- package/lib/commonjs/atoms/Fab.js +32 -12
- package/lib/commonjs/atoms/Fab.js.map +1 -1
- package/lib/commonjs/atoms/Gradient.js +102 -36
- package/lib/commonjs/atoms/Gradient.js.map +1 -1
- package/lib/commonjs/atoms/IconButton.js +25 -4
- package/lib/commonjs/atoms/IconButton.js.map +1 -1
- package/lib/commonjs/atoms/Image.js +61 -25
- package/lib/commonjs/atoms/Image.js.map +1 -1
- package/lib/commonjs/atoms/Input.js +105 -17
- package/lib/commonjs/atoms/Input.js.map +1 -1
- package/lib/commonjs/atoms/KeyValueRow.js +37 -9
- package/lib/commonjs/atoms/KeyValueRow.js.map +1 -1
- package/lib/commonjs/atoms/PressableScale.js +25 -5
- package/lib/commonjs/atoms/PressableScale.js.map +1 -1
- package/lib/commonjs/atoms/ShinyText.js +29 -29
- package/lib/commonjs/atoms/Skeleton.js +28 -13
- package/lib/commonjs/atoms/Skeleton.js.map +1 -1
- package/lib/commonjs/atoms/Spinner.js +81 -22
- package/lib/commonjs/atoms/Spinner.js.map +1 -1
- package/lib/commonjs/atoms/Text.js +56 -5
- package/lib/commonjs/atoms/Text.js.map +1 -1
- package/lib/commonjs/atoms/Transition.js +46 -43
- package/lib/commonjs/atoms/Transition.js.map +1 -1
- package/lib/commonjs/atoms/index.js +6 -0
- package/lib/commonjs/atoms/index.js.map +1 -1
- package/lib/commonjs/atoms/inputValidation.js +56 -0
- package/lib/commonjs/atoms/inputValidation.js.map +1 -0
- package/lib/commonjs/icons/Icon.js +4 -4
- package/lib/commonjs/icons/defaultIcons.js +576 -24
- package/lib/commonjs/icons/defaultIcons.js.map +1 -1
- package/lib/commonjs/icons/index.js +6 -0
- package/lib/commonjs/icons/index.js.map +1 -1
- package/lib/commonjs/molecules/AvatarHeader.js +47 -14
- package/lib/commonjs/molecules/AvatarHeader.js.map +1 -1
- package/lib/commonjs/molecules/FormActions.js +25 -9
- package/lib/commonjs/molecules/FormActions.js.map +1 -1
- package/lib/commonjs/molecules/InfoRow.js +30 -14
- package/lib/commonjs/molecules/InfoRow.js.map +1 -1
- package/lib/commonjs/molecules/OptionCard.js +37 -22
- package/lib/commonjs/molecules/OptionCard.js.map +1 -1
- package/lib/commonjs/molecules/SegmentedControl.js +103 -14
- package/lib/commonjs/molecules/SegmentedControl.js.map +1 -1
- package/lib/commonjs/molecules/Stepper.js +61 -16
- package/lib/commonjs/molecules/Stepper.js.map +1 -1
- package/lib/commonjs/molecules/Steps.js +105 -41
- package/lib/commonjs/molecules/Steps.js.map +1 -1
- package/lib/commonjs/molecules/SymmetricGrid.js +26 -18
- package/lib/commonjs/molecules/SymmetricGrid.js.map +1 -1
- package/lib/commonjs/organisms/Alert.js +49 -35
- package/lib/commonjs/organisms/Alert.js.map +1 -1
- package/lib/commonjs/organisms/AlertProvider.js +10 -10
- package/lib/commonjs/organisms/BottomSheet.js +137 -85
- package/lib/commonjs/organisms/BottomSheet.js.map +1 -1
- package/lib/commonjs/organisms/Chart.js +174 -154
- package/lib/commonjs/organisms/Chart.js.map +1 -1
- package/lib/commonjs/organisms/DateField.js +36 -20
- package/lib/commonjs/organisms/DateField.js.map +1 -1
- package/lib/commonjs/organisms/DatePicker.js +56 -33
- package/lib/commonjs/organisms/DatePicker.js.map +1 -1
- package/lib/commonjs/organisms/List.js +62 -34
- package/lib/commonjs/organisms/List.js.map +1 -1
- package/lib/commonjs/organisms/Modal.js +120 -82
- package/lib/commonjs/organisms/Modal.js.map +1 -1
- package/lib/commonjs/organisms/NavigationBar.js +63 -24
- package/lib/commonjs/organisms/NavigationBar.js.map +1 -1
- package/lib/commonjs/organisms/OptionWheel.js +64 -64
- package/lib/commonjs/organisms/OptionWheel.js.map +1 -1
- package/lib/commonjs/organisms/ReorderableList.js +48 -27
- package/lib/commonjs/organisms/ReorderableList.js.map +1 -1
- package/lib/commonjs/organisms/Screen.js +68 -35
- package/lib/commonjs/organisms/Screen.js.map +1 -1
- package/lib/commonjs/organisms/SearchList.js +56 -26
- package/lib/commonjs/organisms/SearchList.js.map +1 -1
- package/lib/commonjs/organisms/Select.js +45 -24
- package/lib/commonjs/organisms/Select.js.map +1 -1
- package/lib/commonjs/organisms/Slides.js +36 -23
- package/lib/commonjs/organisms/Slides.js.map +1 -1
- package/lib/commonjs/organisms/ThemeToggle.js +10 -9
- package/lib/commonjs/organisms/ThemeToggle.js.map +1 -1
- package/lib/commonjs/organisms/Timeline.js +73 -56
- package/lib/commonjs/organisms/Timeline.js.map +1 -1
- package/lib/commonjs/organisms/Toast.js +46 -15
- package/lib/commonjs/organisms/Toast.js.map +1 -1
- package/lib/commonjs/organisms/ToastProvider.js +14 -10
- package/lib/commonjs/organisms/ToastProvider.js.map +1 -1
- package/lib/commonjs/organisms/Wizard.js +40 -15
- package/lib/commonjs/organisms/Wizard.js.map +1 -1
- package/lib/commonjs/organisms/chart/frame.js +25 -25
- package/lib/commonjs/organisms/chart/frame.js.map +1 -1
- package/lib/commonjs/organisms/chart/marks.js +42 -42
- package/lib/commonjs/organisms/chart/math.js +84 -85
- package/lib/commonjs/organisms/chart/math.js.map +1 -1
- package/lib/commonjs/organisms/chart/palette.js +28 -28
- package/lib/commonjs/organisms/imperativeBridge.js +5 -5
- package/lib/commonjs/organisms/imperativeBridge.js.map +1 -1
- package/lib/commonjs/organisms/useSlides.js +53 -21
- package/lib/commonjs/organisms/useSlides.js.map +1 -1
- package/lib/commonjs/safe-area/SafeAreaUIProvider.js +9 -66
- package/lib/commonjs/safe-area/SafeAreaUIProvider.js.map +1 -1
- package/lib/commonjs/safe-area/index.js.map +1 -1
- package/lib/commonjs/theme/KeyboardAvoidance.js +206 -0
- package/lib/commonjs/theme/KeyboardAvoidance.js.map +1 -0
- package/lib/commonjs/theme/NativeOverlay.js +263 -0
- package/lib/commonjs/theme/NativeOverlay.js.map +1 -0
- package/lib/commonjs/theme/UIProvider.js +86 -33
- package/lib/commonjs/theme/UIProvider.js.map +1 -1
- package/lib/commonjs/theme/colors.js +17 -17
- package/lib/commonjs/theme/colors.js.map +1 -1
- package/lib/commonjs/theme/createStyles.js +19 -16
- package/lib/commonjs/theme/createStyles.js.map +1 -1
- package/lib/commonjs/theme/createTheme.js +6 -6
- package/lib/commonjs/theme/index.js +6 -0
- package/lib/commonjs/theme/index.js.map +1 -1
- package/lib/commonjs/theme/insets.js +1 -1
- package/lib/commonjs/theme/labels.js +29 -1
- package/lib/commonjs/theme/labels.js.map +1 -1
- package/lib/commonjs/theme/palettes.js +25 -23
- package/lib/commonjs/theme/palettes.js.map +1 -1
- package/lib/commonjs/theme/tokens.js +28 -14
- package/lib/commonjs/theme/tokens.js.map +1 -1
- package/lib/commonjs/theme/useKeyboardField.js +36 -0
- package/lib/commonjs/theme/useKeyboardField.js.map +1 -0
- package/lib/commonjs/theme/useReduceMotion.js +31 -0
- package/lib/commonjs/theme/useReduceMotion.js.map +1 -0
- package/lib/module/atoms/Avatar.js +79 -8
- package/lib/module/atoms/Avatar.js.map +1 -1
- package/lib/module/atoms/Badge.js +17 -8
- package/lib/module/atoms/Badge.js.map +1 -1
- package/lib/module/atoms/Button.js +110 -41
- package/lib/module/atoms/Button.js.map +1 -1
- package/lib/module/atoms/Card.js +24 -2
- package/lib/module/atoms/Card.js.map +1 -1
- package/lib/module/atoms/Checkbox.js +42 -11
- package/lib/module/atoms/Checkbox.js.map +1 -1
- package/lib/module/atoms/Divider.js +31 -6
- package/lib/module/atoms/Divider.js.map +1 -1
- package/lib/module/atoms/EmptyState.js +58 -20
- package/lib/module/atoms/EmptyState.js.map +1 -1
- package/lib/module/atoms/Fab.js +33 -13
- package/lib/module/atoms/Fab.js.map +1 -1
- package/lib/module/atoms/Gradient.js +103 -37
- package/lib/module/atoms/Gradient.js.map +1 -1
- package/lib/module/atoms/IconButton.js +25 -4
- package/lib/module/atoms/IconButton.js.map +1 -1
- package/lib/module/atoms/Image.js +61 -25
- package/lib/module/atoms/Image.js.map +1 -1
- package/lib/module/atoms/Input.js +108 -20
- package/lib/module/atoms/Input.js.map +1 -1
- package/lib/module/atoms/KeyValueRow.js +37 -9
- package/lib/module/atoms/KeyValueRow.js.map +1 -1
- package/lib/module/atoms/PressableScale.js +25 -5
- package/lib/module/atoms/PressableScale.js.map +1 -1
- package/lib/module/atoms/ShinyText.js +29 -29
- package/lib/module/atoms/Skeleton.js +30 -13
- package/lib/module/atoms/Skeleton.js.map +1 -1
- package/lib/module/atoms/Spinner.js +82 -23
- package/lib/module/atoms/Spinner.js.map +1 -1
- package/lib/module/atoms/Text.js +56 -5
- package/lib/module/atoms/Text.js.map +1 -1
- package/lib/module/atoms/Transition.js +41 -42
- package/lib/module/atoms/Transition.js.map +1 -1
- package/lib/module/atoms/index.js +1 -1
- package/lib/module/atoms/index.js.map +1 -1
- package/lib/module/atoms/inputValidation.js +52 -0
- package/lib/module/atoms/inputValidation.js.map +1 -0
- package/lib/module/icons/Icon.js +4 -4
- package/lib/module/icons/defaultIcons.js +574 -24
- package/lib/module/icons/defaultIcons.js.map +1 -1
- package/lib/module/icons/index.js +1 -1
- package/lib/module/icons/index.js.map +1 -1
- package/lib/module/molecules/AvatarHeader.js +47 -14
- package/lib/module/molecules/AvatarHeader.js.map +1 -1
- package/lib/module/molecules/FormActions.js +25 -9
- package/lib/module/molecules/FormActions.js.map +1 -1
- package/lib/module/molecules/InfoRow.js +30 -14
- package/lib/module/molecules/InfoRow.js.map +1 -1
- package/lib/module/molecules/OptionCard.js +37 -22
- package/lib/module/molecules/OptionCard.js.map +1 -1
- package/lib/module/molecules/SegmentedControl.js +107 -18
- package/lib/module/molecules/SegmentedControl.js.map +1 -1
- package/lib/module/molecules/Stepper.js +63 -18
- package/lib/module/molecules/Stepper.js.map +1 -1
- package/lib/module/molecules/Steps.js +107 -43
- package/lib/module/molecules/Steps.js.map +1 -1
- package/lib/module/molecules/SymmetricGrid.js +26 -18
- package/lib/module/molecules/SymmetricGrid.js.map +1 -1
- package/lib/module/organisms/Alert.js +51 -37
- package/lib/module/organisms/Alert.js.map +1 -1
- package/lib/module/organisms/AlertProvider.js +10 -10
- package/lib/module/organisms/BottomSheet.js +142 -88
- package/lib/module/organisms/BottomSheet.js.map +1 -1
- package/lib/module/organisms/Chart.js +176 -156
- package/lib/module/organisms/Chart.js.map +1 -1
- package/lib/module/organisms/DateField.js +36 -20
- package/lib/module/organisms/DateField.js.map +1 -1
- package/lib/module/organisms/DatePicker.js +56 -33
- package/lib/module/organisms/DatePicker.js.map +1 -1
- package/lib/module/organisms/List.js +62 -34
- package/lib/module/organisms/List.js.map +1 -1
- package/lib/module/organisms/Modal.js +122 -84
- package/lib/module/organisms/Modal.js.map +1 -1
- package/lib/module/organisms/NavigationBar.js +64 -25
- package/lib/module/organisms/NavigationBar.js.map +1 -1
- package/lib/module/organisms/OptionWheel.js +64 -64
- package/lib/module/organisms/OptionWheel.js.map +1 -1
- package/lib/module/organisms/ReorderableList.js +48 -27
- package/lib/module/organisms/ReorderableList.js.map +1 -1
- package/lib/module/organisms/Screen.js +70 -37
- package/lib/module/organisms/Screen.js.map +1 -1
- package/lib/module/organisms/SearchList.js +56 -26
- package/lib/module/organisms/SearchList.js.map +1 -1
- package/lib/module/organisms/Select.js +46 -25
- package/lib/module/organisms/Select.js.map +1 -1
- package/lib/module/organisms/Slides.js +37 -24
- package/lib/module/organisms/Slides.js.map +1 -1
- package/lib/module/organisms/ThemeToggle.js +11 -10
- package/lib/module/organisms/ThemeToggle.js.map +1 -1
- package/lib/module/organisms/Timeline.js +73 -56
- package/lib/module/organisms/Timeline.js.map +1 -1
- package/lib/module/organisms/Toast.js +47 -16
- package/lib/module/organisms/Toast.js.map +1 -1
- package/lib/module/organisms/ToastProvider.js +15 -11
- package/lib/module/organisms/ToastProvider.js.map +1 -1
- package/lib/module/organisms/Wizard.js +41 -16
- package/lib/module/organisms/Wizard.js.map +1 -1
- package/lib/module/organisms/chart/frame.js +25 -25
- package/lib/module/organisms/chart/frame.js.map +1 -1
- package/lib/module/organisms/chart/marks.js +42 -42
- package/lib/module/organisms/chart/math.js +84 -85
- package/lib/module/organisms/chart/math.js.map +1 -1
- package/lib/module/organisms/chart/palette.js +28 -28
- package/lib/module/organisms/imperativeBridge.js +5 -5
- package/lib/module/organisms/imperativeBridge.js.map +1 -1
- package/lib/module/organisms/useSlides.js +53 -21
- package/lib/module/organisms/useSlides.js.map +1 -1
- package/lib/module/safe-area/SafeAreaUIProvider.js +10 -65
- package/lib/module/safe-area/SafeAreaUIProvider.js.map +1 -1
- package/lib/module/safe-area/index.js +1 -0
- package/lib/module/safe-area/index.js.map +1 -1
- package/lib/module/theme/KeyboardAvoidance.js +198 -0
- package/lib/module/theme/KeyboardAvoidance.js.map +1 -0
- package/lib/module/theme/NativeOverlay.js +257 -0
- package/lib/module/theme/NativeOverlay.js.map +1 -0
- package/lib/module/theme/UIProvider.js +88 -35
- package/lib/module/theme/UIProvider.js.map +1 -1
- package/lib/module/theme/colors.js +17 -17
- package/lib/module/theme/colors.js.map +1 -1
- package/lib/module/theme/createStyles.js +20 -16
- package/lib/module/theme/createStyles.js.map +1 -1
- package/lib/module/theme/createTheme.js +6 -6
- package/lib/module/theme/index.js +1 -1
- package/lib/module/theme/index.js.map +1 -1
- package/lib/module/theme/insets.js +1 -1
- package/lib/module/theme/labels.js +29 -1
- package/lib/module/theme/labels.js.map +1 -1
- package/lib/module/theme/palettes.js +25 -23
- package/lib/module/theme/palettes.js.map +1 -1
- package/lib/module/theme/tokens.js +27 -13
- package/lib/module/theme/tokens.js.map +1 -1
- package/lib/module/theme/useKeyboardField.js +33 -0
- package/lib/module/theme/useKeyboardField.js.map +1 -0
- package/lib/module/theme/useReduceMotion.js +28 -0
- package/lib/module/theme/useReduceMotion.js.map +1 -0
- package/lib/typescript/atoms/Avatar.d.ts +35 -5
- package/lib/typescript/atoms/Avatar.d.ts.map +1 -1
- package/lib/typescript/atoms/Badge.d.ts +14 -3
- package/lib/typescript/atoms/Badge.d.ts.map +1 -1
- package/lib/typescript/atoms/Button.d.ts +34 -3
- package/lib/typescript/atoms/Button.d.ts.map +1 -1
- package/lib/typescript/atoms/Card.d.ts +13 -2
- package/lib/typescript/atoms/Card.d.ts.map +1 -1
- package/lib/typescript/atoms/Checkbox.d.ts +26 -1
- package/lib/typescript/atoms/Checkbox.d.ts.map +1 -1
- package/lib/typescript/atoms/Divider.d.ts +18 -1
- package/lib/typescript/atoms/Divider.d.ts.map +1 -1
- package/lib/typescript/atoms/EmptyState.d.ts +30 -3
- package/lib/typescript/atoms/EmptyState.d.ts.map +1 -1
- package/lib/typescript/atoms/Fab.d.ts +24 -4
- package/lib/typescript/atoms/Fab.d.ts.map +1 -1
- package/lib/typescript/atoms/Gradient.d.ts +21 -15
- package/lib/typescript/atoms/Gradient.d.ts.map +1 -1
- package/lib/typescript/atoms/IconButton.d.ts +18 -4
- package/lib/typescript/atoms/IconButton.d.ts.map +1 -1
- package/lib/typescript/atoms/Image.d.ts +39 -17
- package/lib/typescript/atoms/Image.d.ts.map +1 -1
- package/lib/typescript/atoms/Input.d.ts +57 -7
- package/lib/typescript/atoms/Input.d.ts.map +1 -1
- package/lib/typescript/atoms/KeyValueRow.d.ts +16 -4
- package/lib/typescript/atoms/KeyValueRow.d.ts.map +1 -1
- package/lib/typescript/atoms/PressableScale.d.ts +12 -5
- package/lib/typescript/atoms/PressableScale.d.ts.map +1 -1
- package/lib/typescript/atoms/ShinyText.d.ts +17 -17
- package/lib/typescript/atoms/ShinyText.d.ts.map +1 -1
- package/lib/typescript/atoms/Skeleton.d.ts +12 -7
- package/lib/typescript/atoms/Skeleton.d.ts.map +1 -1
- package/lib/typescript/atoms/Spinner.d.ts +29 -1
- package/lib/typescript/atoms/Spinner.d.ts.map +1 -1
- package/lib/typescript/atoms/Text.d.ts +46 -0
- package/lib/typescript/atoms/Text.d.ts.map +1 -1
- package/lib/typescript/atoms/Transition.d.ts +19 -15
- package/lib/typescript/atoms/Transition.d.ts.map +1 -1
- package/lib/typescript/atoms/index.d.ts +3 -3
- package/lib/typescript/atoms/index.d.ts.map +1 -1
- package/lib/typescript/atoms/inputValidation.d.ts +29 -0
- package/lib/typescript/atoms/inputValidation.d.ts.map +1 -0
- package/lib/typescript/icons/Icon.d.ts +4 -4
- package/lib/typescript/icons/defaultIcons.d.ts +19 -2
- package/lib/typescript/icons/defaultIcons.d.ts.map +1 -1
- package/lib/typescript/icons/index.d.ts +2 -2
- package/lib/typescript/icons/index.d.ts.map +1 -1
- package/lib/typescript/icons/types.d.ts +13 -3
- package/lib/typescript/icons/types.d.ts.map +1 -1
- package/lib/typescript/molecules/AvatarHeader.d.ts +23 -4
- package/lib/typescript/molecules/AvatarHeader.d.ts.map +1 -1
- package/lib/typescript/molecules/FormActions.d.ts +21 -4
- package/lib/typescript/molecules/FormActions.d.ts.map +1 -1
- package/lib/typescript/molecules/InfoRow.d.ts +17 -3
- package/lib/typescript/molecules/InfoRow.d.ts.map +1 -1
- package/lib/typescript/molecules/OptionCard.d.ts +20 -5
- package/lib/typescript/molecules/OptionCard.d.ts.map +1 -1
- package/lib/typescript/molecules/SegmentedControl.d.ts +18 -2
- package/lib/typescript/molecules/SegmentedControl.d.ts.map +1 -1
- package/lib/typescript/molecules/Stepper.d.ts +23 -7
- package/lib/typescript/molecules/Stepper.d.ts.map +1 -1
- package/lib/typescript/molecules/Steps.d.ts +18 -4
- package/lib/typescript/molecules/Steps.d.ts.map +1 -1
- package/lib/typescript/molecules/SymmetricGrid.d.ts +15 -5
- package/lib/typescript/molecules/SymmetricGrid.d.ts.map +1 -1
- package/lib/typescript/organisms/Alert.d.ts +28 -2
- package/lib/typescript/organisms/Alert.d.ts.map +1 -1
- package/lib/typescript/organisms/AlertProvider.d.ts +10 -10
- package/lib/typescript/organisms/AlertProvider.d.ts.map +1 -1
- package/lib/typescript/organisms/BottomSheet.d.ts +20 -5
- package/lib/typescript/organisms/BottomSheet.d.ts.map +1 -1
- package/lib/typescript/organisms/Chart.d.ts +86 -75
- package/lib/typescript/organisms/Chart.d.ts.map +1 -1
- package/lib/typescript/organisms/DateField.d.ts +17 -3
- package/lib/typescript/organisms/DateField.d.ts.map +1 -1
- package/lib/typescript/organisms/DatePicker.d.ts +7 -11
- package/lib/typescript/organisms/DatePicker.d.ts.map +1 -1
- package/lib/typescript/organisms/List.d.ts +30 -3
- package/lib/typescript/organisms/List.d.ts.map +1 -1
- package/lib/typescript/organisms/Modal.d.ts +30 -3
- package/lib/typescript/organisms/Modal.d.ts.map +1 -1
- package/lib/typescript/organisms/NavigationBar.d.ts +26 -7
- package/lib/typescript/organisms/NavigationBar.d.ts.map +1 -1
- package/lib/typescript/organisms/OptionWheel.d.ts +20 -16
- package/lib/typescript/organisms/OptionWheel.d.ts.map +1 -1
- package/lib/typescript/organisms/ReorderableList.d.ts +20 -11
- package/lib/typescript/organisms/ReorderableList.d.ts.map +1 -1
- package/lib/typescript/organisms/Screen.d.ts +27 -8
- package/lib/typescript/organisms/Screen.d.ts.map +1 -1
- package/lib/typescript/organisms/SearchList.d.ts +46 -3
- package/lib/typescript/organisms/SearchList.d.ts.map +1 -1
- package/lib/typescript/organisms/Select.d.ts +26 -6
- package/lib/typescript/organisms/Select.d.ts.map +1 -1
- package/lib/typescript/organisms/Slides.d.ts +44 -26
- package/lib/typescript/organisms/Slides.d.ts.map +1 -1
- package/lib/typescript/organisms/ThemeToggle.d.ts +6 -2
- package/lib/typescript/organisms/ThemeToggle.d.ts.map +1 -1
- package/lib/typescript/organisms/Timeline.d.ts +26 -9
- package/lib/typescript/organisms/Timeline.d.ts.map +1 -1
- package/lib/typescript/organisms/Toast.d.ts +19 -4
- package/lib/typescript/organisms/Toast.d.ts.map +1 -1
- package/lib/typescript/organisms/ToastProvider.d.ts +8 -8
- package/lib/typescript/organisms/ToastProvider.d.ts.map +1 -1
- package/lib/typescript/organisms/Wizard.d.ts +24 -6
- package/lib/typescript/organisms/Wizard.d.ts.map +1 -1
- package/lib/typescript/organisms/chart/frame.d.ts +21 -21
- package/lib/typescript/organisms/chart/frame.d.ts.map +1 -1
- package/lib/typescript/organisms/chart/marks.d.ts +28 -28
- package/lib/typescript/organisms/chart/marks.d.ts.map +1 -1
- package/lib/typescript/organisms/chart/math.d.ts +69 -70
- package/lib/typescript/organisms/chart/math.d.ts.map +1 -1
- package/lib/typescript/organisms/chart/palette.d.ts +2 -2
- package/lib/typescript/organisms/chart/palette.d.ts.map +1 -1
- package/lib/typescript/organisms/imperativeBridge.d.ts +4 -4
- package/lib/typescript/organisms/useSlides.d.ts +8 -16
- package/lib/typescript/organisms/useSlides.d.ts.map +1 -1
- package/lib/typescript/safe-area/SafeAreaUIProvider.d.ts +9 -7
- package/lib/typescript/safe-area/SafeAreaUIProvider.d.ts.map +1 -1
- package/lib/typescript/safe-area/index.d.ts.map +1 -1
- package/lib/typescript/theme/KeyboardAvoidance.d.ts +62 -0
- package/lib/typescript/theme/KeyboardAvoidance.d.ts.map +1 -0
- package/lib/typescript/theme/NativeOverlay.d.ts +43 -0
- package/lib/typescript/theme/NativeOverlay.d.ts.map +1 -0
- package/lib/typescript/theme/UIProvider.d.ts +38 -20
- package/lib/typescript/theme/UIProvider.d.ts.map +1 -1
- package/lib/typescript/theme/colors.d.ts +13 -13
- package/lib/typescript/theme/colors.d.ts.map +1 -1
- package/lib/typescript/theme/createStyles.d.ts +20 -14
- package/lib/typescript/theme/createStyles.d.ts.map +1 -1
- package/lib/typescript/theme/createTheme.d.ts +5 -5
- package/lib/typescript/theme/index.d.ts +1 -1
- package/lib/typescript/theme/index.d.ts.map +1 -1
- package/lib/typescript/theme/insets.d.ts +1 -1
- package/lib/typescript/theme/insets.d.ts.map +1 -1
- package/lib/typescript/theme/labels.d.ts +57 -2
- package/lib/typescript/theme/labels.d.ts.map +1 -1
- package/lib/typescript/theme/palettes.d.ts +25 -19
- package/lib/typescript/theme/palettes.d.ts.map +1 -1
- package/lib/typescript/theme/tokens.d.ts +15 -8
- package/lib/typescript/theme/tokens.d.ts.map +1 -1
- package/lib/typescript/theme/types.d.ts +7 -7
- package/lib/typescript/theme/types.d.ts.map +1 -1
- package/lib/typescript/theme/useKeyboardField.d.ts +17 -0
- package/lib/typescript/theme/useKeyboardField.d.ts.map +1 -0
- package/lib/typescript/theme/useReduceMotion.d.ts +7 -0
- package/lib/typescript/theme/useReduceMotion.d.ts.map +1 -0
- package/llms.txt +4 -4
- package/package.json +15 -14
- package/registry/alert-provider.json +4 -3
- package/registry/alert.json +3 -2
- package/registry/avatar-header.json +1 -1
- package/registry/avatar.json +3 -2
- package/registry/badge.json +1 -1
- package/registry/bottom-sheet.json +1 -1
- package/registry/button.json +3 -2
- package/registry/card.json +1 -1
- package/registry/chart.json +5 -5
- package/registry/checkbox.json +3 -2
- package/registry/core.json +31 -15
- package/registry/date-field.json +1 -1
- package/registry/date-picker.json +3 -2
- package/registry/divider.json +1 -1
- package/registry/empty-state.json +4 -2
- package/registry/fab.json +3 -2
- package/registry/form-actions.json +3 -2
- package/registry/gradient.json +1 -1
- package/registry/icon-button.json +3 -2
- package/registry/image.json +1 -1
- package/registry/index.json +79 -61
- package/registry/info-row.json +1 -1
- package/registry/input.json +5 -1
- package/registry/key-value-row.json +1 -1
- package/registry/list.json +3 -1
- package/registry/manifest.json +3 -1
- package/registry/modal.json +1 -1
- package/registry/navigation-bar.json +1 -1
- package/registry/option-card.json +3 -2
- package/registry/option-wheel.json +1 -1
- package/registry/pressable-scale.json +3 -2
- package/registry/reorderable-list.json +1 -1
- package/registry/screen.json +1 -1
- package/registry/search-list.json +7 -1
- package/registry/segmented-control.json +1 -1
- package/registry/select.json +1 -1
- package/registry/shiny-text.json +1 -1
- package/registry/skeleton.json +3 -2
- package/registry/slides.json +2 -2
- package/registry/spinner.json +1 -1
- package/registry/stepper.json +1 -1
- package/registry/steps.json +1 -1
- package/registry/symmetric-grid.json +1 -1
- package/registry/theme-toggle.json +1 -1
- package/registry/timeline.json +1 -1
- package/registry/title.json +1 -1
- package/registry/toast-provider.json +2 -2
- package/registry/toast.json +1 -1
- package/registry/transition.json +1 -1
- package/registry/wizard.json +1 -1
- package/src/atoms/Avatar.tsx +117 -26
- package/src/atoms/Badge.tsx +20 -9
- package/src/atoms/Button.tsx +102 -30
- package/src/atoms/Card.tsx +23 -3
- package/src/atoms/Checkbox.tsx +49 -12
- package/src/atoms/Divider.tsx +34 -4
- package/src/atoms/EmptyState.tsx +63 -16
- package/src/atoms/Fab.tsx +56 -9
- package/src/atoms/Gradient.tsx +92 -41
- package/src/atoms/IconButton.tsx +27 -4
- package/src/atoms/Image.tsx +74 -28
- package/src/atoms/Input.tsx +129 -19
- package/src/atoms/KeyValueRow.tsx +72 -28
- package/src/atoms/PressableScale.tsx +31 -7
- package/src/atoms/ShinyText.tsx +31 -31
- package/src/atoms/Skeleton.tsx +37 -17
- package/src/atoms/Spinner.tsx +87 -24
- package/src/atoms/Text.tsx +66 -6
- package/src/atoms/Transition.tsx +40 -44
- package/src/atoms/index.ts +3 -3
- package/src/atoms/inputValidation.ts +59 -0
- package/src/icons/Icon.tsx +4 -4
- package/src/icons/defaultIcons.tsx +445 -22
- package/src/icons/index.ts +2 -2
- package/src/icons/types.ts +26 -4
- package/src/molecules/AvatarHeader.tsx +88 -34
- package/src/molecules/FormActions.tsx +36 -6
- package/src/molecules/InfoRow.tsx +39 -12
- package/src/molecules/OptionCard.tsx +55 -20
- package/src/molecules/SegmentedControl.tsx +135 -15
- package/src/molecules/Stepper.tsx +73 -19
- package/src/molecules/Steps.tsx +121 -39
- package/src/molecules/SymmetricGrid.tsx +28 -12
- package/src/organisms/Alert.tsx +97 -26
- package/src/organisms/AlertProvider.tsx +13 -13
- package/src/organisms/BottomSheet.tsx +115 -43
- package/src/organisms/Chart.tsx +193 -164
- package/src/organisms/DateField.tsx +40 -15
- package/src/organisms/DatePicker.tsx +53 -32
- package/src/organisms/List.tsx +64 -15
- package/src/organisms/Modal.tsx +122 -63
- package/src/organisms/NavigationBar.tsx +73 -23
- package/src/organisms/OptionWheel.tsx +70 -66
- package/src/organisms/ReorderableList.tsx +49 -27
- package/src/organisms/Screen.tsx +79 -42
- package/src/organisms/SearchList.tsx +84 -20
- package/src/organisms/Select.tsx +63 -29
- package/src/organisms/Slides.tsx +63 -44
- package/src/organisms/ThemeToggle.tsx +15 -6
- package/src/organisms/Timeline.tsx +79 -62
- package/src/organisms/Toast.tsx +50 -15
- package/src/organisms/ToastProvider.tsx +17 -13
- package/src/organisms/Wizard.tsx +58 -21
- package/src/organisms/chart/frame.tsx +35 -35
- package/src/organisms/chart/marks.tsx +53 -53
- package/src/organisms/chart/math.ts +93 -94
- package/src/organisms/chart/palette.ts +28 -28
- package/src/organisms/imperativeBridge.ts +5 -5
- package/src/organisms/useSlides.ts +66 -31
- package/src/safe-area/SafeAreaUIProvider.tsx +9 -70
- package/src/safe-area/index.ts +1 -0
- package/src/theme/KeyboardAvoidance.tsx +216 -0
- package/src/theme/NativeOverlay.tsx +269 -0
- package/src/theme/UIProvider.tsx +109 -46
- package/src/theme/colors.ts +21 -21
- package/src/theme/createStyles.ts +23 -19
- package/src/theme/createTheme.ts +6 -6
- package/src/theme/index.ts +1 -1
- package/src/theme/insets.ts +1 -1
- package/src/theme/labels.ts +85 -2
- package/src/theme/palettes.ts +33 -25
- package/src/theme/tokens.ts +27 -13
- package/src/theme/types.ts +7 -7
- package/src/theme/useKeyboardField.ts +33 -0
- package/src/theme/useReduceMotion.ts +27 -0
|
@@ -7,7 +7,7 @@ exports.clampIndex = clampIndex;
|
|
|
7
7
|
exports.useSlides = useSlides;
|
|
8
8
|
var _react = require("react");
|
|
9
9
|
var _Transition = require("../atoms/Transition");
|
|
10
|
-
/**
|
|
10
|
+
/** A page of the scroll. The infinite mode's clones repeat a neighbor's `real`. */
|
|
11
11
|
|
|
12
12
|
function clampIndex(value, total) {
|
|
13
13
|
if (total === 0) return 0;
|
|
@@ -18,13 +18,15 @@ function clampIndex(value, total) {
|
|
|
18
18
|
|
|
19
19
|
/**
|
|
20
20
|
* useSlides
|
|
21
|
-
*
|
|
22
|
-
* scroll,
|
|
23
|
-
*
|
|
21
|
+
* Everything in `Slides` that isn't visible: which page is framed, when to
|
|
22
|
+
* move the scroll, how the infinite mode's clones map to real indexes, and the
|
|
23
|
+
* autoplay clock.
|
|
24
24
|
*
|
|
25
|
-
*
|
|
26
|
-
* `T
|
|
25
|
+
* It works only with indexes, never with the items: that way it doesn't need
|
|
26
|
+
* the component's generic `T`, and the UI resolves `pages[i].real` against its own `data`.
|
|
27
27
|
*/
|
|
28
|
+
/** Points a finger has to move the slides for the drag to count as a swipe. */
|
|
29
|
+
const DRAG_SLOP = 10;
|
|
28
30
|
function useSlides({
|
|
29
31
|
total,
|
|
30
32
|
orientation,
|
|
@@ -37,8 +39,8 @@ function useSlides({
|
|
|
37
39
|
}) {
|
|
38
40
|
const motionReduced = (0, _Transition.useReduceMotion)();
|
|
39
41
|
const isHorizontal = orientation === 'horizontal';
|
|
40
|
-
//
|
|
41
|
-
//
|
|
42
|
+
// A single element has nowhere to cycle to: it would be swipeable between
|
|
43
|
+
// three copies of the same thing.
|
|
42
44
|
const isLoop = loop && total > 1;
|
|
43
45
|
const [uncontrolled, setUncontrolled] = (0, _react.useState)(() => clampIndex(defaultIndex, total));
|
|
44
46
|
const active = clampIndex(index ?? uncontrolled, total);
|
|
@@ -51,11 +53,18 @@ function useSlides({
|
|
|
51
53
|
});
|
|
52
54
|
const pageSize = isHorizontal ? size.width : size.height;
|
|
53
55
|
const scrollRef = (0, _react.useRef)(null);
|
|
54
|
-
/**
|
|
56
|
+
/** The page actually visible (index within `pages`, clones included). */
|
|
55
57
|
const offsetPageRef = (0, _react.useRef)(isLoop ? 1 : 0);
|
|
56
58
|
const didInitRef = (0, _react.useRef)(false);
|
|
57
59
|
const lastPageSizeRef = (0, _react.useRef)(0);
|
|
58
60
|
const draggingRef = (0, _react.useRef)(false);
|
|
61
|
+
/**
|
|
62
|
+
* Page an animated `scrollTo` was sent to and hasn't reached yet. On iOS a
|
|
63
|
+
* touch (tapping another indicator) stops that animation midway: the
|
|
64
|
+
* scroll then ends on the wrong page, and committing it undid the tap.
|
|
65
|
+
*/
|
|
66
|
+
const pendingPageRef = (0, _react.useRef)(null);
|
|
67
|
+
const dragStartRef = (0, _react.useRef)(0);
|
|
59
68
|
const pages = (0, _react.useMemo)(() => {
|
|
60
69
|
const real = Array.from({
|
|
61
70
|
length: total
|
|
@@ -87,19 +96,20 @@ function useSlides({
|
|
|
87
96
|
onIndexChange?.(next);
|
|
88
97
|
}, [index, onIndexChange]);
|
|
89
98
|
|
|
90
|
-
//
|
|
91
|
-
//
|
|
99
|
+
// Only acts when the index and the visible page disagree: a change that
|
|
100
|
+
// came from the gesture itself doesn't fire a second scroll on top of the one that stopped.
|
|
92
101
|
(0, _react.useEffect)(() => {
|
|
93
102
|
if (pageSize === 0 || total === 0) return;
|
|
94
103
|
const target = isLoop ? active + 1 : active;
|
|
95
104
|
const resized = lastPageSizeRef.current !== pageSize;
|
|
96
105
|
if (offsetPageRef.current === target && didInitRef.current && !resized) return;
|
|
97
|
-
//
|
|
98
|
-
//
|
|
106
|
+
// Neither the first positioning nor the rearrangement on rotation is a
|
|
107
|
+
// slide change: animating them would be a slide nobody asked for.
|
|
99
108
|
const animated = didInitRef.current && !resized;
|
|
100
109
|
didInitRef.current = true;
|
|
101
110
|
lastPageSizeRef.current = pageSize;
|
|
102
111
|
offsetPageRef.current = target;
|
|
112
|
+
pendingPageRef.current = animated ? target : null;
|
|
103
113
|
scrollToPage(target, animated);
|
|
104
114
|
}, [active, isLoop, pageSize, scrollToPage, total]);
|
|
105
115
|
const onLayout = (0, _react.useCallback)(event => {
|
|
@@ -119,6 +129,16 @@ function useSlides({
|
|
|
119
129
|
contentOffset
|
|
120
130
|
} = event.nativeEvent;
|
|
121
131
|
const page = Math.round((isHorizontal ? contentOffset.x : contentOffset.y) / pageSize);
|
|
132
|
+
// A scrollTo still on its way: if it stopped short (a touch interrupted
|
|
133
|
+
// it), finish the trip instead of committing where it stopped.
|
|
134
|
+
const pending = pendingPageRef.current;
|
|
135
|
+
if (pending !== null) {
|
|
136
|
+
if (page !== pending) {
|
|
137
|
+
scrollToPage(pending, true);
|
|
138
|
+
return;
|
|
139
|
+
}
|
|
140
|
+
pendingPageRef.current = null;
|
|
141
|
+
}
|
|
122
142
|
if (isLoop) {
|
|
123
143
|
if (page === 0) {
|
|
124
144
|
offsetPageRef.current = total;
|
|
@@ -139,14 +159,25 @@ function useSlides({
|
|
|
139
159
|
offsetPageRef.current = page;
|
|
140
160
|
goTo(clampIndex(page, total));
|
|
141
161
|
}, [goTo, isHorizontal, isLoop, pageSize, scrollToPage, total]);
|
|
142
|
-
const onScrollBeginDrag = (0, _react.useCallback)(
|
|
162
|
+
const onScrollBeginDrag = (0, _react.useCallback)(event => {
|
|
143
163
|
draggingRef.current = true;
|
|
144
|
-
|
|
145
|
-
|
|
146
|
-
|
|
147
|
-
|
|
164
|
+
const {
|
|
165
|
+
contentOffset
|
|
166
|
+
} = event.nativeEvent;
|
|
167
|
+
dragStartRef.current = isHorizontal ? contentOffset.x : contentOffset.y;
|
|
168
|
+
}, [isHorizontal]);
|
|
169
|
+
const onScrollEndDrag = (0, _react.useCallback)(event => {
|
|
170
|
+
// A short drag can be released without momentum and not emit
|
|
171
|
+
// momentumScrollEnd: without this autoPlay would stay paused forever.
|
|
148
172
|
draggingRef.current = false;
|
|
149
|
-
|
|
173
|
+
// A finger that really moved the slides takes over from a pending
|
|
174
|
+
// scrollTo; a tap (no movement) doesn't.
|
|
175
|
+
const {
|
|
176
|
+
contentOffset
|
|
177
|
+
} = event.nativeEvent;
|
|
178
|
+
const moved = Math.abs((isHorizontal ? contentOffset.x : contentOffset.y) - dragStartRef.current);
|
|
179
|
+
if (moved > DRAG_SLOP) pendingPageRef.current = null;
|
|
180
|
+
}, [isHorizontal]);
|
|
150
181
|
const toggleAutoPlay = (0, _react.useCallback)(() => setAutoPlayPaused(paused => !paused), []);
|
|
151
182
|
(0, _react.useEffect)(() => {
|
|
152
183
|
if (!autoPlay || autoPlayPaused || motionReduced || total < 2 || pageSize === 0) return;
|
|
@@ -158,9 +189,10 @@ function useSlides({
|
|
|
158
189
|
return;
|
|
159
190
|
}
|
|
160
191
|
if (!isLoop) return;
|
|
161
|
-
//
|
|
162
|
-
//
|
|
192
|
+
// Last one in infinite mode: advances to the clone of the first instead
|
|
193
|
+
// of rewinding; momentumScrollEnd completes the jump to the original.
|
|
163
194
|
offsetPageRef.current = total + 1;
|
|
195
|
+
pendingPageRef.current = total + 1;
|
|
164
196
|
scrollToPage(total + 1, true);
|
|
165
197
|
}, interval);
|
|
166
198
|
return () => clearInterval(timer);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["_react","require","_Transition","clampIndex","value","total","useSlides","orientation","loop","autoPlay","interval","index","defaultIndex","onIndexChange","motionReduced","useReduceMotion","isHorizontal","isLoop","uncontrolled","setUncontrolled","useState","active","activeRef","useRef","current","autoPlayPaused","setAutoPlayPaused","size","setSize","width","height","pageSize","scrollRef","offsetPageRef","didInitRef","lastPageSizeRef","draggingRef","pages","useMemo","real","Array","from","length","_","i","clone","scrollToPage","useCallback","page","animated","offset","scrollTo","x","y","goTo","next","useEffect","target","resized","onLayout","event","nativeEvent","layout","prev","onMomentumScrollEnd","contentOffset","Math","round","onScrollBeginDrag","onScrollEndDrag","toggleAutoPlay","paused","timer","setInterval","clearInterval"],"sourceRoot":"../../../src","sources":["organisms/useSlides.ts"],"mappings":";;;;;;;AAAA,IAAAA,MAAA,GAAAC,OAAA;AAEA,IAAAC,WAAA,GAAAD,OAAA;AAgBA;;AA0BO,SAASE,UAAUA,CAACC,KAAa,EAAEC,KAAa,EAAU;EAC/D,IAAIA,KAAK,KAAK,CAAC,EAAE,OAAO,CAAC;EACzB,IAAID,KAAK,GAAG,CAAC,EAAE,OAAO,CAAC;EACvB,IAAIA,KAAK,GAAGC,KAAK,GAAG,CAAC,EAAE,OAAOA,KAAK,GAAG,CAAC;EACvC,OAAOD,KAAK;AACd;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;
|
|
1
|
+
{"version":3,"names":["_react","require","_Transition","clampIndex","value","total","DRAG_SLOP","useSlides","orientation","loop","autoPlay","interval","index","defaultIndex","onIndexChange","motionReduced","useReduceMotion","isHorizontal","isLoop","uncontrolled","setUncontrolled","useState","active","activeRef","useRef","current","autoPlayPaused","setAutoPlayPaused","size","setSize","width","height","pageSize","scrollRef","offsetPageRef","didInitRef","lastPageSizeRef","draggingRef","pendingPageRef","dragStartRef","pages","useMemo","real","Array","from","length","_","i","clone","scrollToPage","useCallback","page","animated","offset","scrollTo","x","y","goTo","next","useEffect","target","resized","onLayout","event","nativeEvent","layout","prev","onMomentumScrollEnd","contentOffset","Math","round","pending","onScrollBeginDrag","onScrollEndDrag","moved","abs","toggleAutoPlay","paused","timer","setInterval","clearInterval"],"sourceRoot":"../../../src","sources":["organisms/useSlides.ts"],"mappings":";;;;;;;AAAA,IAAAA,MAAA,GAAAC,OAAA;AAEA,IAAAC,WAAA,GAAAD,OAAA;AAgBA;;AA0BO,SAASE,UAAUA,CAACC,KAAa,EAAEC,KAAa,EAAU;EAC/D,IAAIA,KAAK,KAAK,CAAC,EAAE,OAAO,CAAC;EACzB,IAAID,KAAK,GAAG,CAAC,EAAE,OAAO,CAAC;EACvB,IAAIA,KAAK,GAAGC,KAAK,GAAG,CAAC,EAAE,OAAOA,KAAK,GAAG,CAAC;EACvC,OAAOD,KAAK;AACd;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,MAAME,SAAS,GAAG,EAAE;AAEb,SAASC,SAASA,CAAC;EACxBF,KAAK;EACLG,WAAW;EACXC,IAAI;EACJC,QAAQ;EACRC,QAAQ;EACRC,KAAK;EACLC,YAAY;EACZC;AACgB,CAAC,EAAmB;EACpC,MAAMC,aAAa,GAAG,IAAAC,2BAAe,EAAC,CAAC;EACvC,MAAMC,YAAY,GAAGT,WAAW,KAAK,YAAY;EACjD;EACA;EACA,MAAMU,MAAM,GAAGT,IAAI,IAAIJ,KAAK,GAAG,CAAC;EAEhC,MAAM,CAACc,YAAY,EAAEC,eAAe,CAAC,GAAG,IAAAC,eAAQ,EAAC,MAAMlB,UAAU,CAACU,YAAY,EAAER,KAAK,CAAC,CAAC;EACvF,MAAMiB,MAAM,GAAGnB,UAAU,CAACS,KAAK,IAAIO,YAAY,EAAEd,KAAK,CAAC;EACvD,MAAMkB,SAAS,GAAG,IAAAC,aAAM,EAACF,MAAM,CAAC;EAChCC,SAAS,CAACE,OAAO,GAAGH,MAAM;EAE1B,MAAM,CAACI,cAAc,EAAEC,iBAAiB,CAAC,GAAG,IAAAN,eAAQ,EAAC,KAAK,CAAC;EAC3D,MAAM,CAACO,IAAI,EAAEC,OAAO,CAAC,GAAG,IAAAR,eAAQ,EAAC;IAAES,KAAK,EAAE,CAAC;IAAEC,MAAM,EAAE;EAAE,CAAC,CAAC;EACzD,MAAMC,QAAQ,GAAGf,YAAY,GAAGW,IAAI,CAACE,KAAK,GAAGF,IAAI,CAACG,MAAM;EAExD,MAAME,SAAS,GAAG,IAAAT,aAAM,EAAkC,IAAI,CAAC;EAC/D;EACA,MAAMU,aAAa,GAAG,IAAAV,aAAM,EAACN,MAAM,GAAG,CAAC,GAAG,CAAC,CAAC;EAC5C,MAAMiB,UAAU,GAAG,IAAAX,aAAM,EAAC,KAAK,CAAC;EAChC,MAAMY,eAAe,GAAG,IAAAZ,aAAM,EAAC,CAAC,CAAC;EACjC,MAAMa,WAAW,GAAG,IAAAb,aAAM,EAAC,KAAK,CAAC;EACjC;AACF;AACA;AACA;AACA;EACE,MAAMc,cAAc,GAAG,IAAAd,aAAM,EAAgB,IAAI,CAAC;EAClD,MAAMe,YAAY,GAAG,IAAAf,aAAM,EAAC,CAAC,CAAC;EAE9B,MAAMgB,KAAK,GAAG,IAAAC,cAAO,EAAe,MAAM;IACxC,MAAMC,IAAI,GAAGC,KAAK,CAACC,IAAI,CAAC;MAAEC,MAAM,EAAExC;IAAM,CAAC,EAAE,CAACyC,CAAC,EAAEC,CAAC,MAAM;MAAEL,IAAI,EAAEK,CAAC;MAAEC,KAAK,EAAE;IAAK,CAAC,CAAC,CAAC;IAChF,IAAI,CAAC9B,MAAM,EAAE,OAAOwB,IAAI;IACxB,OAAO,CAAC;MAAEA,IAAI,EAAErC,KAAK,GAAG,CAAC;MAAE2C,KAAK,EAAE;IAAO,CAAC,EAAE,GAAGN,IAAI,EAAE;MAAEA,IAAI,EAAE,CAAC;MAAEM,KAAK,EAAE;IAAO,CAAC,CAAC;EAClF,CAAC,EAAE,CAAC9B,MAAM,EAAEb,KAAK,CAAC,CAAC;EAEnB,MAAM4C,YAAY,GAAG,IAAAC,kBAAW,EAC9B,CAACC,IAAY,EAAEC,QAAiB,KAAK;IACnC,MAAMC,MAAM,GAAGF,IAAI,GAAGnB,QAAQ;IAC9BC,SAAS,CAACR,OAAO,EAAE6B,QAAQ,CAAC;MAC1BC,CAAC,EAAEtC,YAAY,GAAGoC,MAAM,GAAG,CAAC;MAC5BG,CAAC,EAAEvC,YAAY,GAAG,CAAC,GAAGoC,MAAM;MAC5BD;IACF,CAAC,CAAC;EACJ,CAAC,EACD,CAACnC,YAAY,EAAEe,QAAQ,CACzB,CAAC;EAED,MAAMyB,IAAI,GAAG,IAAAP,kBAAW,EACrBQ,IAAY,IAAK;IAChB,IAAIA,IAAI,KAAKnC,SAAS,CAACE,OAAO,EAAE;IAChCF,SAAS,CAACE,OAAO,GAAGiC,IAAI;IACxB,IAAI9C,KAAK,IAAI,IAAI,EAAEQ,eAAe,CAACsC,IAAI,CAAC;IACxC5C,aAAa,GAAG4C,IAAI,CAAC;EACvB,CAAC,EACD,CAAC9C,KAAK,EAAEE,aAAa,CACvB,CAAC;;EAED;EACA;EACA,IAAA6C,gBAAS,EAAC,MAAM;IACd,IAAI3B,QAAQ,KAAK,CAAC,IAAI3B,KAAK,KAAK,CAAC,EAAE;IACnC,MAAMuD,MAAM,GAAG1C,MAAM,GAAGI,MAAM,GAAG,CAAC,GAAGA,MAAM;IAC3C,MAAMuC,OAAO,GAAGzB,eAAe,CAACX,OAAO,KAAKO,QAAQ;IACpD,IAAIE,aAAa,CAACT,OAAO,KAAKmC,MAAM,IAAIzB,UAAU,CAACV,OAAO,IAAI,CAACoC,OAAO,EAAE;IACxE;IACA;IACA,MAAMT,QAAQ,GAAGjB,UAAU,CAACV,OAAO,IAAI,CAACoC,OAAO;IAC/C1B,UAAU,CAACV,OAAO,GAAG,IAAI;IACzBW,eAAe,CAACX,OAAO,GAAGO,QAAQ;IAClCE,aAAa,CAACT,OAAO,GAAGmC,MAAM;IAC9BtB,cAAc,CAACb,OAAO,GAAG2B,QAAQ,GAAGQ,MAAM,GAAG,IAAI;IACjDX,YAAY,CAACW,MAAM,EAAER,QAAQ,CAAC;EAChC,CAAC,EAAE,CAAC9B,MAAM,EAAEJ,MAAM,EAAEc,QAAQ,EAAEiB,YAAY,EAAE5C,KAAK,CAAC,CAAC;EAEnD,MAAMyD,QAAQ,GAAG,IAAAZ,kBAAW,EAAEa,KAAwB,IAAK;IACzD,MAAM;MAAEjC,KAAK;MAAEC;IAAO,CAAC,GAAGgC,KAAK,CAACC,WAAW,CAACC,MAAM;IAClDpC,OAAO,CAAEqC,IAAI,IAAMA,IAAI,CAACpC,KAAK,KAAKA,KAAK,IAAIoC,IAAI,CAACnC,MAAM,KAAKA,MAAM,GAAGmC,IAAI,GAAG;MAAEpC,KAAK;MAAEC;IAAO,CAAE,CAAC;EAChG,CAAC,EAAE,EAAE,CAAC;EAEN,MAAMoC,mBAAmB,GAAG,IAAAjB,kBAAW,EACpCa,KAA8C,IAAK;IAClD1B,WAAW,CAACZ,OAAO,GAAG,KAAK;IAC3B,IAAIO,QAAQ,KAAK,CAAC,EAAE;IACpB,MAAM;MAAEoC;IAAc,CAAC,GAAGL,KAAK,CAACC,WAAW;IAC3C,MAAMb,IAAI,GAAGkB,IAAI,CAACC,KAAK,CAAC,CAACrD,YAAY,GAAGmD,aAAa,CAACb,CAAC,GAAGa,aAAa,CAACZ,CAAC,IAAIxB,QAAQ,CAAC;IACtF;IACA;IACA,MAAMuC,OAAO,GAAGjC,cAAc,CAACb,OAAO;IACtC,IAAI8C,OAAO,KAAK,IAAI,EAAE;MACpB,IAAIpB,IAAI,KAAKoB,OAAO,EAAE;QACpBtB,YAAY,CAACsB,OAAO,EAAE,IAAI,CAAC;QAC3B;MACF;MACAjC,cAAc,CAACb,OAAO,GAAG,IAAI;IAC/B;IAEA,IAAIP,MAAM,EAAE;MACV,IAAIiC,IAAI,KAAK,CAAC,EAAE;QACdjB,aAAa,CAACT,OAAO,GAAGpB,KAAK;QAC7B4C,YAAY,CAAC5C,KAAK,EAAE,KAAK,CAAC;QAC1BoD,IAAI,CAACpD,KAAK,GAAG,CAAC,CAAC;QACf;MACF;MACA,IAAI8C,IAAI,KAAK9C,KAAK,GAAG,CAAC,EAAE;QACtB6B,aAAa,CAACT,OAAO,GAAG,CAAC;QACzBwB,YAAY,CAAC,CAAC,EAAE,KAAK,CAAC;QACtBQ,IAAI,CAAC,CAAC,CAAC;QACP;MACF;MACAvB,aAAa,CAACT,OAAO,GAAG0B,IAAI;MAC5BM,IAAI,CAACN,IAAI,GAAG,CAAC,CAAC;MACd;IACF;IAEAjB,aAAa,CAACT,OAAO,GAAG0B,IAAI;IAC5BM,IAAI,CAACtD,UAAU,CAACgD,IAAI,EAAE9C,KAAK,CAAC,CAAC;EAC/B,CAAC,EACD,CAACoD,IAAI,EAAExC,YAAY,EAAEC,MAAM,EAAEc,QAAQ,EAAEiB,YAAY,EAAE5C,KAAK,CAC5D,CAAC;EAED,MAAMmE,iBAAiB,GAAG,IAAAtB,kBAAW,EAClCa,KAA8C,IAAK;IAClD1B,WAAW,CAACZ,OAAO,GAAG,IAAI;IAC1B,MAAM;MAAE2C;IAAc,CAAC,GAAGL,KAAK,CAACC,WAAW;IAC3CzB,YAAY,CAACd,OAAO,GAAGR,YAAY,GAAGmD,aAAa,CAACb,CAAC,GAAGa,aAAa,CAACZ,CAAC;EACzE,CAAC,EACD,CAACvC,YAAY,CACf,CAAC;EAED,MAAMwD,eAAe,GAAG,IAAAvB,kBAAW,EAChCa,KAA8C,IAAK;IAClD;IACA;IACA1B,WAAW,CAACZ,OAAO,GAAG,KAAK;IAC3B;IACA;IACA,MAAM;MAAE2C;IAAc,CAAC,GAAGL,KAAK,CAACC,WAAW;IAC3C,MAAMU,KAAK,GAAGL,IAAI,CAACM,GAAG,CAAC,CAAC1D,YAAY,GAAGmD,aAAa,CAACb,CAAC,GAAGa,aAAa,CAACZ,CAAC,IAAIjB,YAAY,CAACd,OAAO,CAAC;IACjG,IAAIiD,KAAK,GAAGpE,SAAS,EAAEgC,cAAc,CAACb,OAAO,GAAG,IAAI;EACtD,CAAC,EACD,CAACR,YAAY,CACf,CAAC;EAED,MAAM2D,cAAc,GAAG,IAAA1B,kBAAW,EAAC,MAAMvB,iBAAiB,CAAEkD,MAAM,IAAK,CAACA,MAAM,CAAC,EAAE,EAAE,CAAC;EAEpF,IAAAlB,gBAAS,EAAC,MAAM;IACd,IAAI,CAACjD,QAAQ,IAAIgB,cAAc,IAAIX,aAAa,IAAIV,KAAK,GAAG,CAAC,IAAI2B,QAAQ,KAAK,CAAC,EAAE;IACjF,MAAM8C,KAAK,GAAGC,WAAW,CAAC,MAAM;MAC9B,IAAI1C,WAAW,CAACZ,OAAO,EAAE;MACzB,MAAMmB,IAAI,GAAGrB,SAAS,CAACE,OAAO;MAC9B,IAAImB,IAAI,GAAGvC,KAAK,GAAG,CAAC,EAAE;QACpBoD,IAAI,CAACb,IAAI,GAAG,CAAC,CAAC;QACd;MACF;MACA,IAAI,CAAC1B,MAAM,EAAE;MACb;MACA;MACAgB,aAAa,CAACT,OAAO,GAAGpB,KAAK,GAAG,CAAC;MACjCiC,cAAc,CAACb,OAAO,GAAGpB,KAAK,GAAG,CAAC;MAClC4C,YAAY,CAAC5C,KAAK,GAAG,CAAC,EAAE,IAAI,CAAC;IAC/B,CAAC,EAAEM,QAAQ,CAAC;IACZ,OAAO,MAAMqE,aAAa,CAACF,KAAK,CAAC;EACnC,CAAC,EAAE,CAACpE,QAAQ,EAAEgB,cAAc,EAAE+B,IAAI,EAAE9C,QAAQ,EAAEO,MAAM,EAAEH,aAAa,EAAEiB,QAAQ,EAAEiB,YAAY,EAAE5C,KAAK,CAAC,CAAC;EAEpG,OAAO;IACLiB,MAAM;IACNkB,KAAK;IACLvB,YAAY;IACZC,MAAM;IACNU,IAAI;IACJI,QAAQ;IACRC,SAAS;IACTP,cAAc;IACdX,aAAa;IACb0C,IAAI;IACJmB,cAAc;IACdd,QAAQ;IACRK,mBAAmB;IACnBK,iBAAiB;IACjBC;EACF,CAAC;AACH","ignoreList":[]}
|
|
@@ -3,71 +3,14 @@
|
|
|
3
3
|
Object.defineProperty(exports, "__esModule", {
|
|
4
4
|
value: true
|
|
5
5
|
});
|
|
6
|
-
exports.SafeAreaUIProvider =
|
|
7
|
-
var _react = _interopRequireWildcard(require("react"));
|
|
8
|
-
var _reactNativeSafeAreaContext = require("react-native-safe-area-context");
|
|
6
|
+
exports.SafeAreaUIProvider = void 0;
|
|
9
7
|
var _UIProvider = require("../theme/UIProvider");
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
};
|
|
19
|
-
function sameInsets(a, b) {
|
|
20
|
-
return a.top === b.top && a.right === b.right && a.bottom === b.bottom && a.left === b.left;
|
|
21
|
-
}
|
|
22
|
-
function InsetsProbe({
|
|
23
|
-
onMeasure
|
|
24
|
-
}) {
|
|
25
|
-
const insets = (0, _reactNativeSafeAreaContext.useSafeAreaInsets)();
|
|
26
|
-
(0, _react.useEffect)(() => {
|
|
27
|
-
onMeasure(insets);
|
|
28
|
-
}, [insets, onMeasure]);
|
|
29
|
-
return null;
|
|
30
|
-
}
|
|
31
|
-
function RemeasuringModalSafeAreaBoundary({
|
|
32
|
-
children
|
|
33
|
-
}) {
|
|
34
|
-
const ambient = (0, _UIProvider.useInsets)();
|
|
35
|
-
const [measured, setMeasured] = (0, _react.useState)(null);
|
|
36
|
-
const onMeasure = _react.default.useCallback(next => setMeasured(prev => prev && sameInsets(prev, next) ? prev : next), []);
|
|
37
|
-
return /*#__PURE__*/(0, _jsxRuntime.jsxs)(_jsxRuntime.Fragment, {
|
|
38
|
-
children: [/*#__PURE__*/(0, _jsxRuntime.jsx)(_reactNativeSafeAreaContext.SafeAreaProvider, {
|
|
39
|
-
style: probeStyle,
|
|
40
|
-
pointerEvents: "none",
|
|
41
|
-
children: /*#__PURE__*/(0, _jsxRuntime.jsx)(InsetsProbe, {
|
|
42
|
-
onMeasure: onMeasure
|
|
43
|
-
})
|
|
44
|
-
}), children(measured ?? ambient)]
|
|
45
|
-
});
|
|
46
|
-
}
|
|
47
|
-
function Measured({
|
|
48
|
-
insets: override,
|
|
49
|
-
children,
|
|
50
|
-
...rest
|
|
51
|
-
}) {
|
|
52
|
-
const measured = (0, _reactNativeSafeAreaContext.useSafeAreaInsets)();
|
|
53
|
-
return /*#__PURE__*/(0, _jsxRuntime.jsx)(_UIProvider.UIProvider, {
|
|
54
|
-
insets: override ?? measured,
|
|
55
|
-
ModalSafeAreaBoundary: RemeasuringModalSafeAreaBoundary,
|
|
56
|
-
...rest,
|
|
57
|
-
children: children
|
|
58
|
-
});
|
|
59
|
-
}
|
|
60
|
-
function SafeAreaUIProvider({
|
|
61
|
-
mountSafeAreaProvider = true,
|
|
62
|
-
...props
|
|
63
|
-
}) {
|
|
64
|
-
if (!mountSafeAreaProvider) return /*#__PURE__*/(0, _jsxRuntime.jsx)(Measured, {
|
|
65
|
-
...props
|
|
66
|
-
});
|
|
67
|
-
return /*#__PURE__*/(0, _jsxRuntime.jsx)(_reactNativeSafeAreaContext.SafeAreaProvider, {
|
|
68
|
-
children: /*#__PURE__*/(0, _jsxRuntime.jsx)(Measured, {
|
|
69
|
-
...props
|
|
70
|
-
})
|
|
71
|
-
});
|
|
72
|
-
}
|
|
8
|
+
/**
|
|
9
|
+
* @deprecated Use `UIProvider` from 'orn-ui': it now measures the safe area
|
|
10
|
+
* insets itself (react-native-safe-area-context is a required peer). This
|
|
11
|
+
* alias stays for one minor version so existing imports keep working.
|
|
12
|
+
*/
|
|
13
|
+
|
|
14
|
+
/** @deprecated Use `UIProvider` from 'orn-ui' — same component. */
|
|
15
|
+
const SafeAreaUIProvider = exports.SafeAreaUIProvider = _UIProvider.UIProvider;
|
|
73
16
|
//# sourceMappingURL=SafeAreaUIProvider.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["
|
|
1
|
+
{"version":3,"names":["_UIProvider","require","SafeAreaUIProvider","exports","UIProvider"],"sourceRoot":"../../../src","sources":["safe-area/SafeAreaUIProvider.tsx"],"mappings":";;;;;;AAAA,IAAAA,WAAA,GAAAC,OAAA;AAEA;AACA;AACA;AACA;AACA;;AAGA;AACO,MAAMC,kBAAkB,GAAAC,OAAA,CAAAD,kBAAA,GAAGE,sBAAU","ignoreList":[]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["_SafeAreaUIProvider","require"],"sourceRoot":"../../../src","sources":["safe-area/index.ts"],"mappings":";;;;;;;;;;;
|
|
1
|
+
{"version":3,"names":["_SafeAreaUIProvider","require"],"sourceRoot":"../../../src","sources":["safe-area/index.ts"],"mappings":";;;;;;;;;;;AACA,IAAAA,mBAAA,GAAAC,OAAA","ignoreList":[]}
|
|
@@ -0,0 +1,206 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
Object.defineProperty(exports, "__esModule", {
|
|
4
|
+
value: true
|
|
5
|
+
});
|
|
6
|
+
exports.KeyboardHandled = KeyboardHandled;
|
|
7
|
+
exports.KeyboardPanArea = KeyboardPanArea;
|
|
8
|
+
exports.computeKeyboardOffset = computeKeyboardOffset;
|
|
9
|
+
exports.useKeyboardHost = useKeyboardHost;
|
|
10
|
+
var _react = _interopRequireWildcard(require("react"));
|
|
11
|
+
var _reactNative = require("react-native");
|
|
12
|
+
var _useReduceMotion = require("./useReduceMotion");
|
|
13
|
+
var _jsxRuntime = require("react/jsx-runtime");
|
|
14
|
+
function _interopRequireWildcard(e, t) { if ("function" == typeof WeakMap) var r = new WeakMap(), n = new WeakMap(); return (_interopRequireWildcard = function (e, t) { if (!t && e && e.__esModule) return e; var o, i, f = { __proto__: null, default: e }; if (null === e || "object" != typeof e && "function" != typeof e) return f; if (o = t ? n : r) { if (o.has(e)) return o.get(e); o.set(e, f); } for (const t in e) "default" !== t && {}.hasOwnProperty.call(e, t) && ((i = (o = Object.defineProperty) && Object.getOwnPropertyDescriptor(e, t)) && (i.get || i.set) ? o(f, t, i) : f[t] = e[t]); return f; })(e, t); }
|
|
15
|
+
/** A focused field the host has to keep in view. */
|
|
16
|
+
|
|
17
|
+
const KeyboardHostContext = /*#__PURE__*/(0, _react.createContext)(null);
|
|
18
|
+
|
|
19
|
+
/** The active host, or null if a container already handles the keyboard (or it is off). */
|
|
20
|
+
function useKeyboardHost() {
|
|
21
|
+
return (0, _react.useContext)(KeyboardHostContext);
|
|
22
|
+
}
|
|
23
|
+
|
|
24
|
+
/**
|
|
25
|
+
* For containers that already keep the focused field visible on their own:
|
|
26
|
+
* a Modal or BottomSheet (its own native window, which the root's shift
|
|
27
|
+
* doesn't move) or a ScrollView with `automaticallyAdjustKeyboardInsets`.
|
|
28
|
+
* Inside, Inputs ask nothing of the host and the keyboard isn't compensated
|
|
29
|
+
* twice.
|
|
30
|
+
*/
|
|
31
|
+
function KeyboardHandled({
|
|
32
|
+
children
|
|
33
|
+
}) {
|
|
34
|
+
return /*#__PURE__*/(0, _jsxRuntime.jsx)(KeyboardHostContext.Provider, {
|
|
35
|
+
value: null,
|
|
36
|
+
children: children
|
|
37
|
+
});
|
|
38
|
+
}
|
|
39
|
+
|
|
40
|
+
/** Duration when the keyboard event doesn't carry one (Android). */
|
|
41
|
+
const FALLBACK_DURATION = 250;
|
|
42
|
+
|
|
43
|
+
/**
|
|
44
|
+
* Vertical shift (≤ 0) so the whole field sits above the keyboard, with
|
|
45
|
+
* `margin` of room, without its top edge going past `topLimit`.
|
|
46
|
+
* `fieldY` is the position measured with the `current` shift applied.
|
|
47
|
+
* If the field is already visible, it moves back toward 0: it never rises more than needed.
|
|
48
|
+
*/
|
|
49
|
+
function computeKeyboardOffset({
|
|
50
|
+
fieldY,
|
|
51
|
+
fieldHeight,
|
|
52
|
+
keyboardTop,
|
|
53
|
+
current,
|
|
54
|
+
margin,
|
|
55
|
+
topLimit
|
|
56
|
+
}) {
|
|
57
|
+
const base = fieldY - current;
|
|
58
|
+
let target = Math.min(0, keyboardTop - margin - (base + fieldHeight));
|
|
59
|
+
// A field taller than the available gap: seeing where you type (its top
|
|
60
|
+
// part) takes priority over its error.
|
|
61
|
+
target = Math.max(target, topLimit - base);
|
|
62
|
+
return Math.min(0, target);
|
|
63
|
+
}
|
|
64
|
+
|
|
65
|
+
/**
|
|
66
|
+
* An area that shifts so the focused Input inside it sits above the
|
|
67
|
+
* keyboard (transform on the native thread; it returns to 0 on close). It is
|
|
68
|
+
* Android's `adjustPan`, the same on both platforms.
|
|
69
|
+
*
|
|
70
|
+
* - The root UIProvider mounts one around the whole app: the fallback, so
|
|
71
|
+
* an Input is visible even when it isn't inside a Screen.
|
|
72
|
+
* - Screen mounts another around its content, with `clip`: only the content
|
|
73
|
+
* moves and the header (`header` prop) and the tab bar stay still, as in a
|
|
74
|
+
* native app. The Input registers with the nearest area, so inside a
|
|
75
|
+
* Screen the root doesn't move.
|
|
76
|
+
*
|
|
77
|
+
* With `clip`, whatever rises is clipped at the area's top edge and the field
|
|
78
|
+
* never goes above that edge (it stays under the header).
|
|
79
|
+
*/
|
|
80
|
+
function KeyboardPanArea({
|
|
81
|
+
margin,
|
|
82
|
+
topLimit,
|
|
83
|
+
clip = false,
|
|
84
|
+
children
|
|
85
|
+
}) {
|
|
86
|
+
const areaRef = (0, _react.useRef)(null);
|
|
87
|
+
const pan = (0, _react.useRef)(new _reactNative.Animated.Value(0)).current;
|
|
88
|
+
const offset = (0, _react.useRef)(0);
|
|
89
|
+
const field = (0, _react.useRef)(null);
|
|
90
|
+
const keyboardTop = (0, _react.useRef)(null);
|
|
91
|
+
const reduceMotion = (0, _useReduceMotion.useReduceMotion)();
|
|
92
|
+
const config = (0, _react.useRef)({
|
|
93
|
+
margin,
|
|
94
|
+
topLimit,
|
|
95
|
+
reduceMotion,
|
|
96
|
+
clip
|
|
97
|
+
});
|
|
98
|
+
config.current = {
|
|
99
|
+
margin,
|
|
100
|
+
topLimit,
|
|
101
|
+
reduceMotion,
|
|
102
|
+
clip
|
|
103
|
+
};
|
|
104
|
+
const host = (0, _react.useMemo)(() => {
|
|
105
|
+
const animateTo = (to, duration) => {
|
|
106
|
+
if (to === offset.current) return;
|
|
107
|
+
offset.current = to;
|
|
108
|
+
_reactNative.Animated.timing(pan, {
|
|
109
|
+
toValue: to,
|
|
110
|
+
duration: config.current.reduceMotion ? 0 : duration,
|
|
111
|
+
easing: _reactNative.Easing.out(_reactNative.Easing.cubic),
|
|
112
|
+
useNativeDriver: true
|
|
113
|
+
}).start();
|
|
114
|
+
};
|
|
115
|
+
const adjust = async duration => {
|
|
116
|
+
const current = field.current;
|
|
117
|
+
const top = keyboardTop.current;
|
|
118
|
+
if (!current || top === null) return;
|
|
119
|
+
const box = await current.measure();
|
|
120
|
+
// While measuring, focus may have moved to another field or the keyboard closed.
|
|
121
|
+
if (!box || field.current !== current || keyboardTop.current === null) return;
|
|
122
|
+
let limit = config.current.topLimit;
|
|
123
|
+
if (config.current.clip) {
|
|
124
|
+
const areaTop = await measureTop(areaRef.current);
|
|
125
|
+
if (areaTop !== null) limit = Math.max(limit, areaTop);
|
|
126
|
+
}
|
|
127
|
+
animateTo(computeKeyboardOffset({
|
|
128
|
+
fieldY: box.y,
|
|
129
|
+
fieldHeight: box.height,
|
|
130
|
+
keyboardTop: keyboardTop.current,
|
|
131
|
+
current: offset.current,
|
|
132
|
+
margin: config.current.margin,
|
|
133
|
+
topLimit: limit
|
|
134
|
+
}), duration);
|
|
135
|
+
};
|
|
136
|
+
return {
|
|
137
|
+
focus(next) {
|
|
138
|
+
field.current = next;
|
|
139
|
+
// With the keyboard already open (moving from one field to another) it readjusts right away.
|
|
140
|
+
if (keyboardTop.current !== null) void adjust(FALLBACK_DURATION);
|
|
141
|
+
},
|
|
142
|
+
blur(prev) {
|
|
143
|
+
if (field.current === prev) field.current = null;
|
|
144
|
+
},
|
|
145
|
+
// Internal use by the listeners below.
|
|
146
|
+
_show(e) {
|
|
147
|
+
if (!e?.endCoordinates) return;
|
|
148
|
+
keyboardTop.current = e.endCoordinates.screenY;
|
|
149
|
+
const duration = e.duration || FALLBACK_DURATION;
|
|
150
|
+
// Android emits didShow after resizing the window: measure on the
|
|
151
|
+
// next frame, with the layout already settled.
|
|
152
|
+
if (_reactNative.Platform.OS === 'android') requestAnimationFrame(() => void adjust(duration));else void adjust(duration);
|
|
153
|
+
},
|
|
154
|
+
_hide(e) {
|
|
155
|
+
keyboardTop.current = null;
|
|
156
|
+
animateTo(0, e?.duration || FALLBACK_DURATION);
|
|
157
|
+
}
|
|
158
|
+
};
|
|
159
|
+
}, [pan]);
|
|
160
|
+
(0, _react.useEffect)(() => {
|
|
161
|
+
const h = host;
|
|
162
|
+
// iOS notifies before animating (will*): the shift follows the keyboard.
|
|
163
|
+
// Android only has did*.
|
|
164
|
+
const subs = _reactNative.Platform.OS === 'ios' ? [_reactNative.Keyboard.addListener('keyboardWillShow', h._show), _reactNative.Keyboard.addListener('keyboardWillChangeFrame', h._show), _reactNative.Keyboard.addListener('keyboardWillHide', h._hide)] : [_reactNative.Keyboard.addListener('keyboardDidShow', h._show), _reactNative.Keyboard.addListener('keyboardDidHide', h._hide)];
|
|
165
|
+
return () => subs.forEach(s => s.remove());
|
|
166
|
+
}, [host]);
|
|
167
|
+
const moving = /*#__PURE__*/(0, _jsxRuntime.jsx)(_reactNative.Animated.View, {
|
|
168
|
+
style: [styles.fill, {
|
|
169
|
+
transform: [{
|
|
170
|
+
translateY: pan
|
|
171
|
+
}]
|
|
172
|
+
}],
|
|
173
|
+
children: children
|
|
174
|
+
});
|
|
175
|
+
return /*#__PURE__*/(0, _jsxRuntime.jsx)(KeyboardHostContext.Provider, {
|
|
176
|
+
value: host,
|
|
177
|
+
children: clip ? /*#__PURE__*/(0, _jsxRuntime.jsx)(_reactNative.View, {
|
|
178
|
+
ref: areaRef,
|
|
179
|
+
style: [styles.fill, styles.clip],
|
|
180
|
+
collapsable: false,
|
|
181
|
+
children: moving
|
|
182
|
+
}) : moving
|
|
183
|
+
});
|
|
184
|
+
}
|
|
185
|
+
|
|
186
|
+
/** If the measurement never comes back (node unmounted), carry on without that limit. */
|
|
187
|
+
const MEASURE_TIMEOUT_MS = 100;
|
|
188
|
+
function measureTop(node) {
|
|
189
|
+
return new Promise(resolve => {
|
|
190
|
+
if (!node) return resolve(null);
|
|
191
|
+
const timer = setTimeout(() => resolve(null), MEASURE_TIMEOUT_MS);
|
|
192
|
+
node.measureInWindow((_x, y) => {
|
|
193
|
+
clearTimeout(timer);
|
|
194
|
+
resolve(y);
|
|
195
|
+
});
|
|
196
|
+
});
|
|
197
|
+
}
|
|
198
|
+
const styles = _reactNative.StyleSheet.create({
|
|
199
|
+
fill: {
|
|
200
|
+
flex: 1
|
|
201
|
+
},
|
|
202
|
+
clip: {
|
|
203
|
+
overflow: 'hidden'
|
|
204
|
+
}
|
|
205
|
+
});
|
|
206
|
+
//# sourceMappingURL=KeyboardAvoidance.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"names":["_react","_interopRequireWildcard","require","_reactNative","_useReduceMotion","_jsxRuntime","e","t","WeakMap","r","n","__esModule","o","i","f","__proto__","default","has","get","set","hasOwnProperty","call","Object","defineProperty","getOwnPropertyDescriptor","KeyboardHostContext","createContext","useKeyboardHost","useContext","KeyboardHandled","children","jsx","Provider","value","FALLBACK_DURATION","computeKeyboardOffset","fieldY","fieldHeight","keyboardTop","current","margin","topLimit","base","target","Math","min","max","KeyboardPanArea","clip","areaRef","useRef","pan","Animated","Value","offset","field","reduceMotion","useReduceMotion","config","host","useMemo","animateTo","to","duration","timing","toValue","easing","Easing","out","cubic","useNativeDriver","start","adjust","top","box","measure","limit","areaTop","measureTop","y","height","focus","next","blur","prev","_show","endCoordinates","screenY","Platform","OS","requestAnimationFrame","_hide","useEffect","h","subs","Keyboard","addListener","forEach","s","remove","moving","View","style","styles","fill","transform","translateY","ref","collapsable","MEASURE_TIMEOUT_MS","node","Promise","resolve","timer","setTimeout","measureInWindow","_x","clearTimeout","StyleSheet","create","flex","overflow"],"sourceRoot":"../../../src","sources":["theme/KeyboardAvoidance.tsx"],"mappings":"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","ignoreList":[]}
|