@yahoo/uds-mobile 2.8.0 → 2.9.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/dist/_virtual/_rolldown/runtime.cjs +12 -22
- package/dist/_virtual/_rolldown/runtime.js +6 -11
- package/dist/bin/fixtures/dist/index.mjs +17 -20
- package/dist/bin/fonts/dist/index.mjs +22 -13
- package/dist/bin/generateTheme.mjs +2 -5
- package/dist/bin/mobile/scripts/utils/configToRNMappings.mjs +1 -2
- package/dist/bin/modes/dist/index.mjs +1 -2
- package/dist/bin/palette/dist/index.mjs +15 -4
- package/dist/bin/uds-mobile.mjs +1 -3
- package/dist/components/AndroidBackHandler.cjs +3 -5
- package/dist/components/AndroidBackHandler.js +1 -2
- package/dist/components/AndroidBackHandler.js.map +1 -1
- package/dist/components/Avatar.cjs +6 -8
- package/dist/components/Avatar.d.cts +2 -2
- package/dist/components/Avatar.d.cts.map +1 -1
- package/dist/components/Avatar.d.ts +2 -2
- package/dist/components/Avatar.d.ts.map +1 -1
- package/dist/components/Avatar.js +1 -2
- package/dist/components/Avatar.js.map +1 -1
- package/dist/components/Badge.cjs +6 -8
- package/dist/components/Badge.d.cts +2 -2
- package/dist/components/Badge.d.cts.map +1 -1
- package/dist/components/Badge.d.ts +2 -2
- package/dist/components/Badge.d.ts.map +1 -1
- package/dist/components/Badge.js +1 -2
- package/dist/components/Badge.js.map +1 -1
- package/dist/components/Banner/Banner.cjs +7 -9
- package/dist/components/Banner/Banner.d.cts +2 -2
- package/dist/components/Banner/Banner.d.cts.map +1 -1
- package/dist/components/Banner/Banner.d.ts +2 -2
- package/dist/components/Banner/Banner.d.ts.map +1 -1
- package/dist/components/Banner/Banner.js +1 -2
- package/dist/components/Banner/Banner.js.map +1 -1
- package/dist/components/Banner/BannerContent.cjs +3 -5
- package/dist/components/Banner/BannerContent.d.cts +2 -2
- package/dist/components/Banner/BannerContent.d.cts.map +1 -1
- package/dist/components/Banner/BannerContent.d.ts +2 -2
- package/dist/components/Banner/BannerContent.d.ts.map +1 -1
- package/dist/components/Banner/BannerContent.js +1 -2
- package/dist/components/Banner/BannerContent.js.map +1 -1
- package/dist/components/Banner/BannerDescription.cjs +4 -6
- package/dist/components/Banner/BannerDescription.d.cts +2 -2
- package/dist/components/Banner/BannerDescription.d.cts.map +1 -1
- package/dist/components/Banner/BannerDescription.d.ts +2 -2
- package/dist/components/Banner/BannerDescription.d.ts.map +1 -1
- package/dist/components/Banner/BannerDescription.js +1 -2
- package/dist/components/Banner/BannerDescription.js.map +1 -1
- package/dist/components/Banner/BannerTitle.cjs +4 -6
- package/dist/components/Banner/BannerTitle.d.cts +2 -2
- package/dist/components/Banner/BannerTitle.d.cts.map +1 -1
- package/dist/components/Banner/BannerTitle.d.ts +2 -2
- package/dist/components/Banner/BannerTitle.d.ts.map +1 -1
- package/dist/components/Banner/BannerTitle.js +1 -2
- package/dist/components/Banner/BannerTitle.js.map +1 -1
- package/dist/components/Banner/index.cjs +6 -7
- package/dist/components/Banner/index.js +1 -2
- package/dist/components/Banner/utils.cjs +3 -5
- package/dist/components/Banner/utils.js +1 -2
- package/dist/components/Banner/utils.js.map +1 -1
- package/dist/components/BlurTarget.cjs +3 -5
- package/dist/components/BlurTarget.d.cts +2 -2
- package/dist/components/BlurTarget.d.cts.map +1 -1
- package/dist/components/BlurTarget.d.ts +2 -2
- package/dist/components/BlurTarget.d.ts.map +1 -1
- package/dist/components/BlurTarget.js +1 -2
- package/dist/components/BlurTarget.js.map +1 -1
- package/dist/components/BottomSheet/BottomSheet.cjs +16 -18
- package/dist/components/BottomSheet/BottomSheet.d.cts +2 -2
- package/dist/components/BottomSheet/BottomSheet.d.cts.map +1 -1
- package/dist/components/BottomSheet/BottomSheet.d.ts +2 -2
- package/dist/components/BottomSheet/BottomSheet.d.ts.map +1 -1
- package/dist/components/BottomSheet/BottomSheet.js +1 -2
- package/dist/components/BottomSheet/BottomSheet.js.map +1 -1
- package/dist/components/BottomSheet/BottomSheetContent.cjs +4 -6
- package/dist/components/BottomSheet/BottomSheetContent.d.cts +2 -2
- package/dist/components/BottomSheet/BottomSheetContent.d.cts.map +1 -1
- package/dist/components/BottomSheet/BottomSheetContent.d.ts +2 -2
- package/dist/components/BottomSheet/BottomSheetContent.d.ts.map +1 -1
- package/dist/components/BottomSheet/BottomSheetContent.js +1 -2
- package/dist/components/BottomSheet/BottomSheetContent.js.map +1 -1
- package/dist/components/BottomSheet/BottomSheetDismiss.cjs +4 -6
- package/dist/components/BottomSheet/BottomSheetDismiss.d.cts +2 -2
- package/dist/components/BottomSheet/BottomSheetDismiss.d.cts.map +1 -1
- package/dist/components/BottomSheet/BottomSheetDismiss.d.ts +2 -2
- package/dist/components/BottomSheet/BottomSheetDismiss.d.ts.map +1 -1
- package/dist/components/BottomSheet/BottomSheetDismiss.js +1 -2
- package/dist/components/BottomSheet/BottomSheetDismiss.js.map +1 -1
- package/dist/components/BottomSheet/BottomSheetHandle.cjs +5 -7
- package/dist/components/BottomSheet/BottomSheetHandle.d.cts +2 -2
- package/dist/components/BottomSheet/BottomSheetHandle.d.cts.map +1 -1
- package/dist/components/BottomSheet/BottomSheetHandle.d.ts +2 -2
- package/dist/components/BottomSheet/BottomSheetHandle.d.ts.map +1 -1
- package/dist/components/BottomSheet/BottomSheetHandle.js +1 -2
- package/dist/components/BottomSheet/BottomSheetHandle.js.map +1 -1
- package/dist/components/BottomSheet/BottomSheetHeader.cjs +4 -6
- package/dist/components/BottomSheet/BottomSheetHeader.d.cts +2 -2
- package/dist/components/BottomSheet/BottomSheetHeader.d.cts.map +1 -1
- package/dist/components/BottomSheet/BottomSheetHeader.d.ts +2 -2
- package/dist/components/BottomSheet/BottomSheetHeader.d.ts.map +1 -1
- package/dist/components/BottomSheet/BottomSheetHeader.js +1 -2
- package/dist/components/BottomSheet/BottomSheetHeader.js.map +1 -1
- package/dist/components/BottomSheet/BottomSheetInternalProvider.cjs +3 -5
- package/dist/components/BottomSheet/BottomSheetInternalProvider.d.cts +2 -2
- package/dist/components/BottomSheet/BottomSheetInternalProvider.d.cts.map +1 -1
- package/dist/components/BottomSheet/BottomSheetInternalProvider.d.ts +2 -2
- package/dist/components/BottomSheet/BottomSheetInternalProvider.d.ts.map +1 -1
- package/dist/components/BottomSheet/BottomSheetInternalProvider.js +1 -2
- package/dist/components/BottomSheet/BottomSheetInternalProvider.js.map +1 -1
- package/dist/components/BottomSheet/BottomSheetProvider.cjs +4 -6
- package/dist/components/BottomSheet/BottomSheetProvider.d.cts +2 -2
- package/dist/components/BottomSheet/BottomSheetProvider.d.cts.map +1 -1
- package/dist/components/BottomSheet/BottomSheetProvider.d.ts +2 -2
- package/dist/components/BottomSheet/BottomSheetProvider.d.ts.map +1 -1
- package/dist/components/BottomSheet/BottomSheetProvider.js +1 -2
- package/dist/components/BottomSheet/BottomSheetProvider.js.map +1 -1
- package/dist/components/BottomSheet/BottomSheetTrigger.cjs +4 -6
- package/dist/components/BottomSheet/BottomSheetTrigger.d.cts +2 -2
- package/dist/components/BottomSheet/BottomSheetTrigger.d.cts.map +1 -1
- package/dist/components/BottomSheet/BottomSheetTrigger.d.ts +2 -2
- package/dist/components/BottomSheet/BottomSheetTrigger.d.ts.map +1 -1
- package/dist/components/BottomSheet/BottomSheetTrigger.js +1 -2
- package/dist/components/BottomSheet/BottomSheetTrigger.js.map +1 -1
- package/dist/components/BottomSheet/index.cjs +10 -11
- package/dist/components/BottomSheet/index.js +1 -2
- package/dist/components/BottomSheet/useBottomSheetDrag.cjs +4 -6
- package/dist/components/BottomSheet/useBottomSheetDrag.js +1 -2
- package/dist/components/BottomSheet/useBottomSheetDrag.js.map +1 -1
- package/dist/components/BottomSheet/useBottomSheetScroll.cjs +4 -6
- package/dist/components/BottomSheet/useBottomSheetScroll.d.cts +5 -5
- package/dist/components/BottomSheet/useBottomSheetScroll.d.ts +5 -5
- package/dist/components/BottomSheet/useBottomSheetScroll.js +1 -2
- package/dist/components/BottomSheet/useBottomSheetScroll.js.map +1 -1
- package/dist/components/BottomSheet/useBottomSheetSnapModel.cjs +6 -8
- package/dist/components/BottomSheet/useBottomSheetSnapModel.js +3 -4
- package/dist/components/BottomSheet/useBottomSheetSnapModel.js.map +1 -1
- package/dist/components/BottomSheet/useBottomSheetStore.cjs +3 -5
- package/dist/components/BottomSheet/useBottomSheetStore.js +1 -2
- package/dist/components/BottomSheet/useBottomSheetStore.js.map +1 -1
- package/dist/components/BottomSheet/useExpansionMargins.cjs +4 -6
- package/dist/components/BottomSheet/useExpansionMargins.js +1 -2
- package/dist/components/BottomSheet/useExpansionMargins.js.map +1 -1
- package/dist/components/BottomSheet/useKeyboardAvoidance.cjs +3 -5
- package/dist/components/BottomSheet/useKeyboardAvoidance.js +1 -2
- package/dist/components/BottomSheet/useKeyboardAvoidance.js.map +1 -1
- package/dist/components/BottomSheet/utils.cjs +2 -4
- package/dist/components/BottomSheet/utils.js +1 -1
- package/dist/components/BottomSheet/utils.js.map +1 -1
- package/dist/components/Box.cjs +3 -5
- package/dist/components/Box.d.cts +2 -2
- package/dist/components/Box.d.cts.map +1 -1
- package/dist/components/Box.d.ts +2 -2
- package/dist/components/Box.d.ts.map +1 -1
- package/dist/components/Box.js +1 -2
- package/dist/components/Box.js.map +1 -1
- package/dist/components/Button.cjs +8 -10
- package/dist/components/Button.d.cts +2 -2
- package/dist/components/Button.d.cts.map +1 -1
- package/dist/components/Button.d.ts +2 -2
- package/dist/components/Button.d.ts.map +1 -1
- package/dist/components/Button.js +1 -2
- package/dist/components/Button.js.map +1 -1
- package/dist/components/Checkbox.cjs +9 -11
- package/dist/components/Checkbox.d.cts +2 -2
- package/dist/components/Checkbox.d.cts.map +1 -1
- package/dist/components/Checkbox.d.ts +2 -2
- package/dist/components/Checkbox.d.ts.map +1 -1
- package/dist/components/Checkbox.js +1 -2
- package/dist/components/Checkbox.js.map +1 -1
- package/dist/components/Chip.cjs +7 -9
- package/dist/components/Chip.d.cts +2 -2
- package/dist/components/Chip.d.cts.map +1 -1
- package/dist/components/Chip.d.ts +2 -2
- package/dist/components/Chip.d.ts.map +1 -1
- package/dist/components/Chip.js +1 -2
- package/dist/components/Chip.js.map +1 -1
- package/dist/components/HStack.cjs +4 -6
- package/dist/components/HStack.d.cts +2 -2
- package/dist/components/HStack.d.cts.map +1 -1
- package/dist/components/HStack.d.ts +2 -2
- package/dist/components/HStack.d.ts.map +1 -1
- package/dist/components/HStack.js +1 -2
- package/dist/components/HStack.js.map +1 -1
- package/dist/components/Icon.cjs +3 -5
- package/dist/components/Icon.d.cts +2 -2
- package/dist/components/Icon.d.cts.map +1 -1
- package/dist/components/Icon.d.ts +2 -2
- package/dist/components/Icon.d.ts.map +1 -1
- package/dist/components/Icon.js +1 -2
- package/dist/components/Icon.js.map +1 -1
- package/dist/components/IconButton.cjs +7 -9
- package/dist/components/IconButton.d.cts +2 -2
- package/dist/components/IconButton.d.cts.map +1 -1
- package/dist/components/IconButton.d.ts +2 -2
- package/dist/components/IconButton.d.ts.map +1 -1
- package/dist/components/IconButton.js +1 -2
- package/dist/components/IconButton.js.map +1 -1
- package/dist/components/IconSlot.cjs +4 -6
- package/dist/components/IconSlot.d.cts +2 -2
- package/dist/components/IconSlot.d.cts.map +1 -1
- package/dist/components/IconSlot.d.ts +2 -2
- package/dist/components/IconSlot.d.ts.map +1 -1
- package/dist/components/IconSlot.js +1 -2
- package/dist/components/IconSlot.js.map +1 -1
- package/dist/components/Image.cjs +3 -5
- package/dist/components/Image.d.cts +2 -2
- package/dist/components/Image.d.cts.map +1 -1
- package/dist/components/Image.d.ts +2 -2
- package/dist/components/Image.d.ts.map +1 -1
- package/dist/components/Image.js +1 -2
- package/dist/components/Image.js.map +1 -1
- package/dist/components/Input.cjs +7 -9
- package/dist/components/Input.d.cts +2 -2
- package/dist/components/Input.d.cts.map +1 -1
- package/dist/components/Input.d.ts +2 -2
- package/dist/components/Input.d.ts.map +1 -1
- package/dist/components/Input.js +1 -2
- package/dist/components/Input.js.map +1 -1
- package/dist/components/Link.cjs +4 -6
- package/dist/components/Link.d.cts +2 -2
- package/dist/components/Link.d.cts.map +1 -1
- package/dist/components/Link.d.ts +2 -2
- package/dist/components/Link.d.ts.map +1 -1
- package/dist/components/Link.js +1 -2
- package/dist/components/Link.js.map +1 -1
- package/dist/components/Pressable.cjs +3 -5
- package/dist/components/Pressable.d.cts +4 -4
- package/dist/components/Pressable.d.cts.map +1 -1
- package/dist/components/Pressable.d.ts +4 -4
- package/dist/components/Pressable.d.ts.map +1 -1
- package/dist/components/Pressable.js +1 -2
- package/dist/components/Pressable.js.map +1 -1
- package/dist/components/Radio.cjs +8 -10
- package/dist/components/Radio.d.cts +2 -2
- package/dist/components/Radio.d.cts.map +1 -1
- package/dist/components/Radio.d.ts +2 -2
- package/dist/components/Radio.d.ts.map +1 -1
- package/dist/components/Radio.js +1 -2
- package/dist/components/Radio.js.map +1 -1
- package/dist/components/Screen.cjs +5 -7
- package/dist/components/Screen.d.cts +2 -2
- package/dist/components/Screen.d.cts.map +1 -1
- package/dist/components/Screen.d.ts +2 -2
- package/dist/components/Screen.d.ts.map +1 -1
- package/dist/components/Screen.js +1 -2
- package/dist/components/Screen.js.map +1 -1
- package/dist/components/Scrim.cjs +4 -6
- package/dist/components/Scrim.d.cts +2 -2
- package/dist/components/Scrim.d.cts.map +1 -1
- package/dist/components/Scrim.d.ts +2 -2
- package/dist/components/Scrim.d.ts.map +1 -1
- package/dist/components/Scrim.js +1 -2
- package/dist/components/Scrim.js.map +1 -1
- package/dist/components/Switch.cjs +6 -8
- package/dist/components/Switch.d.cts +2 -2
- package/dist/components/Switch.d.cts.map +1 -1
- package/dist/components/Switch.d.ts +2 -2
- package/dist/components/Switch.d.ts.map +1 -1
- package/dist/components/Switch.js +1 -2
- package/dist/components/Switch.js.map +1 -1
- package/dist/components/Text.cjs +3 -5
- package/dist/components/Text.d.cts +2 -2
- package/dist/components/Text.d.cts.map +1 -1
- package/dist/components/Text.d.ts +2 -2
- package/dist/components/Text.d.ts.map +1 -1
- package/dist/components/Text.js +1 -2
- package/dist/components/Text.js.map +1 -1
- package/dist/components/UDSProvider.cjs +4 -6
- package/dist/components/UDSProvider.d.cts +2 -2
- package/dist/components/UDSProvider.d.cts.map +1 -1
- package/dist/components/UDSProvider.d.ts +2 -2
- package/dist/components/UDSProvider.d.ts.map +1 -1
- package/dist/components/UDSProvider.js +1 -2
- package/dist/components/UDSProvider.js.map +1 -1
- package/dist/components/VStack.cjs +4 -6
- package/dist/components/VStack.d.cts +2 -2
- package/dist/components/VStack.d.cts.map +1 -1
- package/dist/components/VStack.d.ts +2 -2
- package/dist/components/VStack.d.ts.map +1 -1
- package/dist/components/VStack.js +1 -2
- package/dist/components/VStack.js.map +1 -1
- package/dist/jest/index.cjs +8 -10
- package/dist/jest/index.js +1 -2
- package/dist/jest/index.js.map +1 -1
- package/dist/jest/mocks/icons.cjs +8 -11
- package/dist/jest/mocks/icons.js +1 -2
- package/dist/jest/mocks/icons.js.map +1 -1
- package/dist/jest/mocks/react-native.cjs +6 -5
- package/dist/jest/mocks/react-native.js +1 -2
- package/dist/jest/mocks/react-native.js.map +1 -1
- package/dist/jest/mocks/reanimated.cjs +11 -10
- package/dist/jest/mocks/reanimated.js +1 -2
- package/dist/jest/mocks/reanimated.js.map +1 -1
- package/dist/jest/mocks/styles.cjs +8 -11
- package/dist/jest/mocks/styles.js +1 -2
- package/dist/jest/mocks/styles.js.map +1 -1
- package/dist/jest/mocks/svg.cjs +11 -10
- package/dist/jest/mocks/svg.js +2 -3
- package/dist/jest/mocks/svg.js.map +1 -1
- package/dist/jest/mocks/unistyles.cjs +8 -11
- package/dist/jest/mocks/unistyles.js +1 -2
- package/dist/jest/mocks/unistyles.js.map +1 -1
- package/dist/jest/setup.cjs +6 -8
- package/dist/jest/setup.js +1 -2
- package/dist/jest/setup.js.map +1 -1
- package/dist/motion-tokens/dist/index.cjs +1 -3
- package/dist/motion-tokens/dist/index.js +1 -1
- package/dist/motion-tokens/dist/index.js.map +1 -1
- package/dist/motion.cjs +3 -5
- package/dist/motion.js +1 -2
- package/dist/motion.js.map +1 -1
- package/dist/native/UDSScreenCornerRadiusModule.cjs +2 -4
- package/dist/native/UDSScreenCornerRadiusModule.js +1 -1
- package/dist/portal.cjs +3 -5
- package/dist/portal.d.cts +2 -2
- package/dist/portal.d.cts.map +1 -1
- package/dist/portal.d.ts +2 -2
- package/dist/portal.d.ts.map +1 -1
- package/dist/portal.js +1 -2
- package/dist/portal.js.map +1 -1
- package/package.json +1 -1
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"BottomSheetHandle.js","names":["RNStyleSheet"],"sources":["../../../src/components/BottomSheet/BottomSheetHandle.tsx"],"sourcesContent":["import { memo, useCallback } from 'react';\nimport { StyleSheet as RNStyleSheet, View } from 'react-native';\n\nimport { bottomSheetStyles } from '../../../generated/styles';\nimport { useBottomSheetInternalContext } from './BottomSheetInternalProvider';\nimport { useBottomSheetContext } from './BottomSheetProvider';\n\n/**\n * Visual drag-affordance bar displayed at the top of the sheet.\n *\n * Accessible as `role=\"adjustable\"` with increment (expand) and decrement\n * (collapse / dismiss) actions that map to snap-point navigation.\n */\nconst BottomSheetHandle = memo(function BottomSheetHandle() {\n bottomSheetStyles.useVariants({});\n const handleTokens = RNStyleSheet.flatten(bottomSheetStyles.handleIndicator) as {\n backgroundColor?: string;\n };\n\n const internalCtx = useBottomSheetInternalContext();\n const controller = useBottomSheetContext();\n\n const handleAccessibilityAction = useCallback(\n (event: { nativeEvent: { actionName: string } }) => {\n if (!internalCtx || !controller) {\n return;\n }\n\n const { activeSnapIndex, snapCount } = internalCtx;\n const current = activeSnapIndex.value;\n\n if (event.nativeEvent.actionName === 'increment' && current < snapCount - 1) {\n // Expand to next snap.\n // We can't call animateToSnap directly from here — use controller-level API\n // or set activeSnapIndex. For now, this is a best-effort accessibility hook.\n activeSnapIndex.value = current + 1;\n } else if (event.nativeEvent.actionName === 'decrement') {\n if (current > 0) {\n activeSnapIndex.value = current - 1;\n } else {\n // At lowest snap — dismiss.\n controller.close();\n }\n }\n },\n [internalCtx, controller],\n );\n\n return (\n <View\n style={[internalStyles.handle, { backgroundColor: handleTokens.backgroundColor }]}\n accessible\n accessibilityRole=\"adjustable\"\n accessibilityLabel=\"Sheet handle\"\n accessibilityHint=\"Swipe up to expand, swipe down to collapse\"\n accessibilityActions={[\n { name: 'increment', label: 'Expand' },\n { name: 'decrement', label: 'Collapse' },\n ]}\n onAccessibilityAction={handleAccessibilityAction}\n />\n );\n});\n\nconst internalStyles = RNStyleSheet.create({\n handle: {\n alignSelf: 'center',\n width: 36,\n height: 4,\n borderRadius: 2,\n marginBottom: 8,\n },\n});\n\nexport { BottomSheetHandle };\n"],"mappings":"
|
|
1
|
+
{"version":3,"file":"BottomSheetHandle.js","names":["RNStyleSheet"],"sources":["../../../src/components/BottomSheet/BottomSheetHandle.tsx"],"sourcesContent":["import { memo, useCallback } from 'react';\nimport { StyleSheet as RNStyleSheet, View } from 'react-native';\n\nimport { bottomSheetStyles } from '../../../generated/styles';\nimport { useBottomSheetInternalContext } from './BottomSheetInternalProvider';\nimport { useBottomSheetContext } from './BottomSheetProvider';\n\n/**\n * Visual drag-affordance bar displayed at the top of the sheet.\n *\n * Accessible as `role=\"adjustable\"` with increment (expand) and decrement\n * (collapse / dismiss) actions that map to snap-point navigation.\n */\nconst BottomSheetHandle = memo(function BottomSheetHandle() {\n bottomSheetStyles.useVariants({});\n const handleTokens = RNStyleSheet.flatten(bottomSheetStyles.handleIndicator) as {\n backgroundColor?: string;\n };\n\n const internalCtx = useBottomSheetInternalContext();\n const controller = useBottomSheetContext();\n\n const handleAccessibilityAction = useCallback(\n (event: { nativeEvent: { actionName: string } }) => {\n if (!internalCtx || !controller) {\n return;\n }\n\n const { activeSnapIndex, snapCount } = internalCtx;\n const current = activeSnapIndex.value;\n\n if (event.nativeEvent.actionName === 'increment' && current < snapCount - 1) {\n // Expand to next snap.\n // We can't call animateToSnap directly from here — use controller-level API\n // or set activeSnapIndex. For now, this is a best-effort accessibility hook.\n activeSnapIndex.value = current + 1;\n } else if (event.nativeEvent.actionName === 'decrement') {\n if (current > 0) {\n activeSnapIndex.value = current - 1;\n } else {\n // At lowest snap — dismiss.\n controller.close();\n }\n }\n },\n [internalCtx, controller],\n );\n\n return (\n <View\n style={[internalStyles.handle, { backgroundColor: handleTokens.backgroundColor }]}\n accessible\n accessibilityRole=\"adjustable\"\n accessibilityLabel=\"Sheet handle\"\n accessibilityHint=\"Swipe up to expand, swipe down to collapse\"\n accessibilityActions={[\n { name: 'increment', label: 'Expand' },\n { name: 'decrement', label: 'Collapse' },\n ]}\n onAccessibilityAction={handleAccessibilityAction}\n />\n );\n});\n\nconst internalStyles = RNStyleSheet.create({\n handle: {\n alignSelf: 'center',\n width: 36,\n height: 4,\n borderRadius: 2,\n marginBottom: 8,\n },\n});\n\nexport { BottomSheetHandle };\n"],"mappings":";;;;;;;;;;;;;;AAaA,MAAM,oBAAoB,KAAK,SAAS,oBAAoB;AAC1D,mBAAkB,YAAY,EAAE,CAAC;CACjC,MAAM,eAAeA,WAAa,QAAQ,kBAAkB,gBAAgB;CAI5E,MAAM,cAAc,+BAA+B;CACnD,MAAM,aAAa,uBAAuB;CAE1C,MAAM,4BAA4B,aAC/B,UAAmD;AAClD,MAAI,CAAC,eAAe,CAAC,WACnB;EAGF,MAAM,EAAE,iBAAiB,cAAc;EACvC,MAAM,UAAU,gBAAgB;AAEhC,MAAI,MAAM,YAAY,eAAe,eAAe,UAAU,YAAY,EAIxE,iBAAgB,QAAQ,UAAU;WACzB,MAAM,YAAY,eAAe,YAC1C,KAAI,UAAU,EACZ,iBAAgB,QAAQ,UAAU;MAGlC,YAAW,OAAO;IAIxB,CAAC,aAAa,WAAW,CAC1B;AAED,QACE,oBAAC,MAAD;EACE,OAAO,CAAC,eAAe,QAAQ,EAAE,iBAAiB,aAAa,iBAAiB,CAAC;EACjF,YAAA;EACA,mBAAkB;EAClB,oBAAmB;EACnB,mBAAkB;EAClB,sBAAsB,CACpB;GAAE,MAAM;GAAa,OAAO;GAAU,EACtC;GAAE,MAAM;GAAa,OAAO;GAAY,CACzC;EACD,uBAAuB;EACvB,CAAA;EAEJ;AAEF,MAAM,iBAAiBA,WAAa,OAAO,EACzC,QAAQ;CACN,WAAW;CACX,OAAO;CACP,QAAQ;CACR,cAAc;CACd,cAAc;CACf,EACF,CAAC"}
|
|
@@ -1,12 +1,11 @@
|
|
|
1
1
|
/*! © 2026 Yahoo, Inc. UDS Mobile v0.0.0-development */
|
|
2
|
-
Object.defineProperty(exports, Symbol.toStringTag, { value:
|
|
3
|
-
|
|
4
|
-
const require_components_Text = require(
|
|
2
|
+
Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" });
|
|
3
|
+
require("../../_virtual/_rolldown/runtime.cjs");
|
|
4
|
+
const require_components_Text = require("../Text.cjs");
|
|
5
5
|
let react = require("react");
|
|
6
6
|
let react_native = require("react-native");
|
|
7
7
|
let react_jsx_runtime = require("react/jsx-runtime");
|
|
8
8
|
let generated_styles = require("../../../generated/styles");
|
|
9
|
-
|
|
10
9
|
//#region src/components/BottomSheet/BottomSheetHeader.tsx
|
|
11
10
|
/** Width of the leading/trailing action slots in pixels. */
|
|
12
11
|
const SLOT_WIDTH = 40;
|
|
@@ -64,6 +63,5 @@ const internalStyles = react_native.StyleSheet.create({
|
|
|
64
63
|
justifyContent: "center"
|
|
65
64
|
}
|
|
66
65
|
});
|
|
67
|
-
|
|
68
66
|
//#endregion
|
|
69
|
-
exports.BottomSheetHeader = BottomSheetHeader;
|
|
67
|
+
exports.BottomSheetHeader = BottomSheetHeader;
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
|
|
2
2
|
import { BottomSheetHeaderProps } from "./types.cjs";
|
|
3
|
-
import * as react from "react";
|
|
3
|
+
import * as _$react from "react";
|
|
4
4
|
|
|
5
5
|
//#region src/components/BottomSheet/BottomSheetHeader.d.ts
|
|
6
6
|
/**
|
|
@@ -10,7 +10,7 @@ import * as react from "react";
|
|
|
10
10
|
* Empty slots render as invisible spacers to keep the title centered.
|
|
11
11
|
* Typography is read from the configurator's `bottomSheetStyles.header` tokens.
|
|
12
12
|
*/
|
|
13
|
-
declare const BottomSheetHeader: react.NamedExoticComponent<BottomSheetHeaderProps>;
|
|
13
|
+
declare const BottomSheetHeader: _$react.NamedExoticComponent<BottomSheetHeaderProps>;
|
|
14
14
|
//#endregion
|
|
15
15
|
export { BottomSheetHeader };
|
|
16
16
|
//# sourceMappingURL=BottomSheetHeader.d.cts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"BottomSheetHeader.d.cts","names":[],"sources":["../../../src/components/BottomSheet/BottomSheetHeader.tsx"],"mappings":";;;;;;;;AAK+E;;;;cAYzE,iBAAA,EAAiB,
|
|
1
|
+
{"version":3,"file":"BottomSheetHeader.d.cts","names":[],"sources":["../../../src/components/BottomSheet/BottomSheetHeader.tsx"],"mappings":";;;;;;;;AAK+E;;;;cAYzE,iBAAA,EAAiB,OAAA,CAAA,oBAAA,CAAA,sBAAA"}
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
|
|
2
2
|
import { BottomSheetHeaderProps } from "./types.js";
|
|
3
|
-
import * as react from "react";
|
|
3
|
+
import * as _$react from "react";
|
|
4
4
|
|
|
5
5
|
//#region src/components/BottomSheet/BottomSheetHeader.d.ts
|
|
6
6
|
/**
|
|
@@ -10,7 +10,7 @@ import * as react from "react";
|
|
|
10
10
|
* Empty slots render as invisible spacers to keep the title centered.
|
|
11
11
|
* Typography is read from the configurator's `bottomSheetStyles.header` tokens.
|
|
12
12
|
*/
|
|
13
|
-
declare const BottomSheetHeader: react.NamedExoticComponent<BottomSheetHeaderProps>;
|
|
13
|
+
declare const BottomSheetHeader: _$react.NamedExoticComponent<BottomSheetHeaderProps>;
|
|
14
14
|
//#endregion
|
|
15
15
|
export { BottomSheetHeader };
|
|
16
16
|
//# sourceMappingURL=BottomSheetHeader.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"BottomSheetHeader.d.ts","names":[],"sources":["../../../src/components/BottomSheet/BottomSheetHeader.tsx"],"mappings":";;;;;;;;AAK+E;;;;cAYzE,iBAAA,EAAiB,
|
|
1
|
+
{"version":3,"file":"BottomSheetHeader.d.ts","names":[],"sources":["../../../src/components/BottomSheet/BottomSheetHeader.tsx"],"mappings":";;;;;;;;AAK+E;;;;cAYzE,iBAAA,EAAiB,OAAA,CAAA,oBAAA,CAAA,sBAAA"}
|
|
@@ -4,7 +4,6 @@ import { memo } from "react";
|
|
|
4
4
|
import { StyleSheet, View } from "react-native";
|
|
5
5
|
import { jsx, jsxs } from "react/jsx-runtime";
|
|
6
6
|
import { bottomSheetStyles } from "../../../generated/styles";
|
|
7
|
-
|
|
8
7
|
//#region src/components/BottomSheet/BottomSheetHeader.tsx
|
|
9
8
|
/** Width of the leading/trailing action slots in pixels. */
|
|
10
9
|
const SLOT_WIDTH = 40;
|
|
@@ -62,7 +61,7 @@ const internalStyles = StyleSheet.create({
|
|
|
62
61
|
justifyContent: "center"
|
|
63
62
|
}
|
|
64
63
|
});
|
|
65
|
-
|
|
66
64
|
//#endregion
|
|
67
65
|
export { BottomSheetHeader };
|
|
66
|
+
|
|
68
67
|
//# sourceMappingURL=BottomSheetHeader.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"BottomSheetHeader.js","names":["Text"],"sources":["../../../src/components/BottomSheet/BottomSheetHeader.tsx"],"sourcesContent":["import { memo } from 'react';\nimport { StyleSheet, View } from 'react-native';\n\nimport { bottomSheetStyles } from '../../../generated/styles';\nimport { Text } from '../Text';\nimport type { BottomSheetHeaderProps, BottomSheetHeaderTokens } from './types';\n\n/** Width of the leading/trailing action slots in pixels. */\nconst SLOT_WIDTH = 40;\n\n/**\n * Three-column header for the bottom sheet.\n *\n * Layout: `[40px start slot] [1fr center title] [40px end slot]`.\n * Empty slots render as invisible spacers to keep the title centered.\n * Typography is read from the configurator's `bottomSheetStyles.header` tokens.\n */\nconst BottomSheetHeader = memo(function BottomSheetHeader({\n children,\n start,\n end,\n}: BottomSheetHeaderProps) {\n const headerTokens = StyleSheet.flatten(bottomSheetStyles.header) as BottomSheetHeaderTokens;\n\n return (\n <View style={internalStyles.container}>\n <View style={internalStyles.slot}>{start}</View>\n <View style={internalStyles.title}>\n <Text\n style={{\n fontFamily: headerTokens.fontFamily,\n fontSize: headerTokens.fontSize,\n letterSpacing: headerTokens.letterSpacing,\n lineHeight: headerTokens.lineHeight,\n color: headerTokens.color,\n }}\n numberOfLines={1}\n >\n {children}\n </Text>\n </View>\n <View style={internalStyles.slot}>{end}</View>\n </View>\n );\n});\n\nconst internalStyles = StyleSheet.create({\n container: {\n flexDirection: 'row',\n alignItems: 'center',\n justifyContent: 'space-between',\n },\n slot: {\n width: SLOT_WIDTH,\n alignItems: 'center',\n justifyContent: 'center',\n },\n title: {\n flex: 1,\n alignItems: 'center',\n justifyContent: 'center',\n },\n});\n\nexport { BottomSheetHeader };\n"],"mappings":"
|
|
1
|
+
{"version":3,"file":"BottomSheetHeader.js","names":["Text"],"sources":["../../../src/components/BottomSheet/BottomSheetHeader.tsx"],"sourcesContent":["import { memo } from 'react';\nimport { StyleSheet, View } from 'react-native';\n\nimport { bottomSheetStyles } from '../../../generated/styles';\nimport { Text } from '../Text';\nimport type { BottomSheetHeaderProps, BottomSheetHeaderTokens } from './types';\n\n/** Width of the leading/trailing action slots in pixels. */\nconst SLOT_WIDTH = 40;\n\n/**\n * Three-column header for the bottom sheet.\n *\n * Layout: `[40px start slot] [1fr center title] [40px end slot]`.\n * Empty slots render as invisible spacers to keep the title centered.\n * Typography is read from the configurator's `bottomSheetStyles.header` tokens.\n */\nconst BottomSheetHeader = memo(function BottomSheetHeader({\n children,\n start,\n end,\n}: BottomSheetHeaderProps) {\n const headerTokens = StyleSheet.flatten(bottomSheetStyles.header) as BottomSheetHeaderTokens;\n\n return (\n <View style={internalStyles.container}>\n <View style={internalStyles.slot}>{start}</View>\n <View style={internalStyles.title}>\n <Text\n style={{\n fontFamily: headerTokens.fontFamily,\n fontSize: headerTokens.fontSize,\n letterSpacing: headerTokens.letterSpacing,\n lineHeight: headerTokens.lineHeight,\n color: headerTokens.color,\n }}\n numberOfLines={1}\n >\n {children}\n </Text>\n </View>\n <View style={internalStyles.slot}>{end}</View>\n </View>\n );\n});\n\nconst internalStyles = StyleSheet.create({\n container: {\n flexDirection: 'row',\n alignItems: 'center',\n justifyContent: 'space-between',\n },\n slot: {\n width: SLOT_WIDTH,\n alignItems: 'center',\n justifyContent: 'center',\n },\n title: {\n flex: 1,\n alignItems: 'center',\n justifyContent: 'center',\n },\n});\n\nexport { BottomSheetHeader };\n"],"mappings":";;;;;;;;AAQA,MAAM,aAAa;;;;;;;;AASnB,MAAM,oBAAoB,KAAK,SAAS,kBAAkB,EACxD,UACA,OACA,OACyB;CACzB,MAAM,eAAe,WAAW,QAAQ,kBAAkB,OAAO;AAEjE,QACE,qBAAC,MAAD;EAAM,OAAO,eAAe;YAA5B;GACE,oBAAC,MAAD;IAAM,OAAO,eAAe;cAAO;IAAa,CAAA;GAChD,oBAAC,MAAD;IAAM,OAAO,eAAe;cAC1B,oBAACA,QAAD;KACE,OAAO;MACL,YAAY,aAAa;MACzB,UAAU,aAAa;MACvB,eAAe,aAAa;MAC5B,YAAY,aAAa;MACzB,OAAO,aAAa;MACrB;KACD,eAAe;KAEd;KACI,CAAA;IACF,CAAA;GACP,oBAAC,MAAD;IAAM,OAAO,eAAe;cAAO;IAAW,CAAA;GACzC;;EAET;AAEF,MAAM,iBAAiB,WAAW,OAAO;CACvC,WAAW;EACT,eAAe;EACf,YAAY;EACZ,gBAAgB;EACjB;CACD,MAAM;EACJ,OAAO;EACP,YAAY;EACZ,gBAAgB;EACjB;CACD,OAAO;EACL,MAAM;EACN,YAAY;EACZ,gBAAgB;EACjB;CACF,CAAC"}
|
|
@@ -1,9 +1,8 @@
|
|
|
1
1
|
/*! © 2026 Yahoo, Inc. UDS Mobile v0.0.0-development */
|
|
2
|
-
Object.defineProperty(exports, Symbol.toStringTag, { value:
|
|
3
|
-
|
|
2
|
+
Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" });
|
|
3
|
+
require("../../_virtual/_rolldown/runtime.cjs");
|
|
4
4
|
let react = require("react");
|
|
5
5
|
let react_jsx_runtime = require("react/jsx-runtime");
|
|
6
|
-
|
|
7
6
|
//#region src/components/BottomSheet/BottomSheetInternalProvider.tsx
|
|
8
7
|
const BottomSheetInternalContext = (0, react.createContext)(null);
|
|
9
8
|
function BottomSheetInternalProvider({ children, value }) {
|
|
@@ -20,7 +19,6 @@ function BottomSheetInternalProvider({ children, value }) {
|
|
|
20
19
|
function useBottomSheetInternalContext() {
|
|
21
20
|
return (0, react.useContext)(BottomSheetInternalContext);
|
|
22
21
|
}
|
|
23
|
-
|
|
24
22
|
//#endregion
|
|
25
23
|
exports.BottomSheetInternalProvider = BottomSheetInternalProvider;
|
|
26
|
-
exports.useBottomSheetInternalContext = useBottomSheetInternalContext;
|
|
24
|
+
exports.useBottomSheetInternalContext = useBottomSheetInternalContext;
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
|
|
2
2
|
import { BottomSheetInternalContextValue } from "./types.cjs";
|
|
3
|
-
import * as react from "react";
|
|
3
|
+
import * as _$react from "react";
|
|
4
4
|
import { ReactNode } from "react";
|
|
5
5
|
|
|
6
6
|
//#region src/components/BottomSheet/BottomSheetInternalProvider.d.ts
|
|
@@ -11,7 +11,7 @@ interface Props {
|
|
|
11
11
|
declare function BottomSheetInternalProvider({
|
|
12
12
|
children,
|
|
13
13
|
value
|
|
14
|
-
}: Props): react.JSX.Element;
|
|
14
|
+
}: Props): _$react.JSX.Element;
|
|
15
15
|
/**
|
|
16
16
|
* Reads the internal scroll/gesture coordination context.
|
|
17
17
|
* Returns `null` when rendered outside a `<BottomSheet>`.
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"BottomSheetInternalProvider.d.cts","names":[],"sources":["../../../src/components/BottomSheet/BottomSheetInternalProvider.tsx"],"mappings":";;;;;;UAOU,KAAA;EACR,QAAA,EAAU,SAAA;EACV,KAAA,EAAO,+BAAA;AAAA;AAAA,iBAGA,2BAAA,CAAA;EAA8B,QAAA;EAAU;AAAA,GAAS,KAAA,GAAK,
|
|
1
|
+
{"version":3,"file":"BottomSheetInternalProvider.d.cts","names":[],"sources":["../../../src/components/BottomSheet/BottomSheetInternalProvider.tsx"],"mappings":";;;;;;UAOU,KAAA;EACR,QAAA,EAAU,SAAA;EACV,KAAA,EAAO,+BAAA;AAAA;AAAA,iBAGA,2BAAA,CAAA;EAA8B,QAAA;EAAU;AAAA,GAAS,KAAA,GAAK,OAAA,CAAA,GAAA,CAAA,OAAA;;;;;;iBAatD,6BAAA,CAAA,GAAiC,+BAAA"}
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
|
|
2
2
|
import { BottomSheetInternalContextValue } from "./types.js";
|
|
3
|
-
import * as react from "react";
|
|
3
|
+
import * as _$react from "react";
|
|
4
4
|
import { ReactNode } from "react";
|
|
5
5
|
|
|
6
6
|
//#region src/components/BottomSheet/BottomSheetInternalProvider.d.ts
|
|
@@ -11,7 +11,7 @@ interface Props {
|
|
|
11
11
|
declare function BottomSheetInternalProvider({
|
|
12
12
|
children,
|
|
13
13
|
value
|
|
14
|
-
}: Props): react.JSX.Element;
|
|
14
|
+
}: Props): _$react.JSX.Element;
|
|
15
15
|
/**
|
|
16
16
|
* Reads the internal scroll/gesture coordination context.
|
|
17
17
|
* Returns `null` when rendered outside a `<BottomSheet>`.
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"BottomSheetInternalProvider.d.ts","names":[],"sources":["../../../src/components/BottomSheet/BottomSheetInternalProvider.tsx"],"mappings":";;;;;;UAOU,KAAA;EACR,QAAA,EAAU,SAAA;EACV,KAAA,EAAO,+BAAA;AAAA;AAAA,iBAGA,2BAAA,CAAA;EAA8B,QAAA;EAAU;AAAA,GAAS,KAAA,GAAK,
|
|
1
|
+
{"version":3,"file":"BottomSheetInternalProvider.d.ts","names":[],"sources":["../../../src/components/BottomSheet/BottomSheetInternalProvider.tsx"],"mappings":";;;;;;UAOU,KAAA;EACR,QAAA,EAAU,SAAA;EACV,KAAA,EAAO,+BAAA;AAAA;AAAA,iBAGA,2BAAA,CAAA;EAA8B,QAAA;EAAU;AAAA,GAAS,KAAA,GAAK,OAAA,CAAA,GAAA,CAAA,OAAA;;;;;;iBAatD,6BAAA,CAAA,GAAiC,+BAAA"}
|
|
@@ -1,7 +1,6 @@
|
|
|
1
1
|
/*! © 2026 Yahoo, Inc. UDS Mobile v0.0.0-development */
|
|
2
2
|
import { createContext, useContext } from "react";
|
|
3
3
|
import { jsx } from "react/jsx-runtime";
|
|
4
|
-
|
|
5
4
|
//#region src/components/BottomSheet/BottomSheetInternalProvider.tsx
|
|
6
5
|
const BottomSheetInternalContext = createContext(null);
|
|
7
6
|
function BottomSheetInternalProvider({ children, value }) {
|
|
@@ -18,7 +17,7 @@ function BottomSheetInternalProvider({ children, value }) {
|
|
|
18
17
|
function useBottomSheetInternalContext() {
|
|
19
18
|
return useContext(BottomSheetInternalContext);
|
|
20
19
|
}
|
|
21
|
-
|
|
22
20
|
//#endregion
|
|
23
21
|
export { BottomSheetInternalProvider, useBottomSheetInternalContext };
|
|
22
|
+
|
|
24
23
|
//# sourceMappingURL=BottomSheetInternalProvider.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"BottomSheetInternalProvider.js","names":[],"sources":["../../../src/components/BottomSheet/BottomSheetInternalProvider.tsx"],"sourcesContent":["import type { ReactNode } from 'react';\nimport { createContext, useContext } from 'react';\n\nimport type { BottomSheetInternalContextValue } from './types';\n\nconst BottomSheetInternalContext = createContext<BottomSheetInternalContextValue | null>(null);\n\ninterface Props {\n children: ReactNode;\n value: BottomSheetInternalContextValue;\n}\n\nfunction BottomSheetInternalProvider({ children, value }: Props) {\n return (\n <BottomSheetInternalContext.Provider value={value}>\n {children}\n </BottomSheetInternalContext.Provider>\n );\n}\n\n/**\n * Reads the internal scroll/gesture coordination context.\n * Returns `null` when rendered outside a `<BottomSheet>`.\n * @internal\n */\nfunction useBottomSheetInternalContext(): BottomSheetInternalContextValue | null {\n return useContext(BottomSheetInternalContext);\n}\n\nexport { BottomSheetInternalProvider, useBottomSheetInternalContext };\n"],"mappings":"
|
|
1
|
+
{"version":3,"file":"BottomSheetInternalProvider.js","names":[],"sources":["../../../src/components/BottomSheet/BottomSheetInternalProvider.tsx"],"sourcesContent":["import type { ReactNode } from 'react';\nimport { createContext, useContext } from 'react';\n\nimport type { BottomSheetInternalContextValue } from './types';\n\nconst BottomSheetInternalContext = createContext<BottomSheetInternalContextValue | null>(null);\n\ninterface Props {\n children: ReactNode;\n value: BottomSheetInternalContextValue;\n}\n\nfunction BottomSheetInternalProvider({ children, value }: Props) {\n return (\n <BottomSheetInternalContext.Provider value={value}>\n {children}\n </BottomSheetInternalContext.Provider>\n );\n}\n\n/**\n * Reads the internal scroll/gesture coordination context.\n * Returns `null` when rendered outside a `<BottomSheet>`.\n * @internal\n */\nfunction useBottomSheetInternalContext(): BottomSheetInternalContextValue | null {\n return useContext(BottomSheetInternalContext);\n}\n\nexport { BottomSheetInternalProvider, useBottomSheetInternalContext };\n"],"mappings":";;;;AAKA,MAAM,6BAA6B,cAAsD,KAAK;AAO9F,SAAS,4BAA4B,EAAE,UAAU,SAAgB;AAC/D,QACE,oBAAC,2BAA2B,UAA5B;EAA4C;EACzC;EACmC,CAAA;;;;;;;AAS1C,SAAS,gCAAwE;AAC/E,QAAO,WAAW,2BAA2B"}
|
|
@@ -1,10 +1,9 @@
|
|
|
1
1
|
/*! © 2026 Yahoo, Inc. UDS Mobile v0.0.0-development */
|
|
2
|
-
Object.defineProperty(exports, Symbol.toStringTag, { value:
|
|
3
|
-
|
|
4
|
-
const require_components_BottomSheet_useBottomSheetStore = require(
|
|
2
|
+
Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" });
|
|
3
|
+
require("../../_virtual/_rolldown/runtime.cjs");
|
|
4
|
+
const require_components_BottomSheet_useBottomSheetStore = require("./useBottomSheetStore.cjs");
|
|
5
5
|
let react = require("react");
|
|
6
6
|
let react_jsx_runtime = require("react/jsx-runtime");
|
|
7
|
-
|
|
8
7
|
//#region src/components/BottomSheet/BottomSheetProvider.tsx
|
|
9
8
|
const BottomSheetContext = (0, react.createContext)(null);
|
|
10
9
|
/**
|
|
@@ -27,7 +26,6 @@ BottomSheetProvider.displayName = "BottomSheetProvider";
|
|
|
27
26
|
function useBottomSheetContext() {
|
|
28
27
|
return (0, react.useContext)(BottomSheetContext);
|
|
29
28
|
}
|
|
30
|
-
|
|
31
29
|
//#endregion
|
|
32
30
|
exports.BottomSheetProvider = BottomSheetProvider;
|
|
33
|
-
exports.useBottomSheetContext = useBottomSheetContext;
|
|
31
|
+
exports.useBottomSheetContext = useBottomSheetContext;
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
|
|
2
2
|
import { BottomSheetController, BottomSheetProviderProps } from "./types.cjs";
|
|
3
|
-
import * as react from "react";
|
|
3
|
+
import * as _$react from "react";
|
|
4
4
|
|
|
5
5
|
//#region src/components/BottomSheet/BottomSheetProvider.d.ts
|
|
6
6
|
/**
|
|
@@ -13,7 +13,7 @@ import * as react from "react";
|
|
|
13
13
|
declare function BottomSheetProvider({
|
|
14
14
|
children,
|
|
15
15
|
controller
|
|
16
|
-
}: BottomSheetProviderProps): react.JSX.Element;
|
|
16
|
+
}: BottomSheetProviderProps): _$react.JSX.Element;
|
|
17
17
|
declare namespace BottomSheetProvider {
|
|
18
18
|
var displayName: string;
|
|
19
19
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"BottomSheetProvider.d.cts","names":[],"sources":["../../../src/components/BottomSheet/BottomSheetProvider.tsx"],"mappings":";;;;;;;;AAE+E;;;;iBAYtE,mBAAA,CAAA;EAAsB,QAAA;EAAU;AAAA,GAAc,wBAAA,GAAwB,
|
|
1
|
+
{"version":3,"file":"BottomSheetProvider.d.cts","names":[],"sources":["../../../src/components/BottomSheet/BottomSheetProvider.tsx"],"mappings":";;;;;;;;AAE+E;;;;iBAYtE,mBAAA,CAAA;EAAsB,QAAA;EAAU;AAAA,GAAc,wBAAA,GAAwB,OAAA,CAAA,GAAA,CAAA,OAAA;AAAA,kBAAtE,mBAAA;EAAA,IAAmB,WAAA;AAAA;;iBAUnB,qBAAA,CAAA,GAAyB,qBAAA"}
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
|
|
2
2
|
import { BottomSheetController, BottomSheetProviderProps } from "./types.js";
|
|
3
|
-
import * as react from "react";
|
|
3
|
+
import * as _$react from "react";
|
|
4
4
|
|
|
5
5
|
//#region src/components/BottomSheet/BottomSheetProvider.d.ts
|
|
6
6
|
/**
|
|
@@ -13,7 +13,7 @@ import * as react from "react";
|
|
|
13
13
|
declare function BottomSheetProvider({
|
|
14
14
|
children,
|
|
15
15
|
controller
|
|
16
|
-
}: BottomSheetProviderProps): react.JSX.Element;
|
|
16
|
+
}: BottomSheetProviderProps): _$react.JSX.Element;
|
|
17
17
|
declare namespace BottomSheetProvider {
|
|
18
18
|
var displayName: string;
|
|
19
19
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"BottomSheetProvider.d.ts","names":[],"sources":["../../../src/components/BottomSheet/BottomSheetProvider.tsx"],"mappings":";;;;;;;;AAE+E;;;;iBAYtE,mBAAA,CAAA;EAAsB,QAAA;EAAU;AAAA,GAAc,wBAAA,GAAwB,
|
|
1
|
+
{"version":3,"file":"BottomSheetProvider.d.ts","names":[],"sources":["../../../src/components/BottomSheet/BottomSheetProvider.tsx"],"mappings":";;;;;;;;AAE+E;;;;iBAYtE,mBAAA,CAAA;EAAsB,QAAA;EAAU;AAAA,GAAc,wBAAA,GAAwB,OAAA,CAAA,GAAA,CAAA,OAAA;AAAA,kBAAtE,mBAAA;EAAA,IAAmB,WAAA;AAAA;;iBAUnB,qBAAA,CAAA,GAAyB,qBAAA"}
|
|
@@ -2,7 +2,6 @@
|
|
|
2
2
|
import { useBottomSheetStore } from "./useBottomSheetStore.js";
|
|
3
3
|
import { createContext, useContext } from "react";
|
|
4
4
|
import { jsx } from "react/jsx-runtime";
|
|
5
|
-
|
|
6
5
|
//#region src/components/BottomSheet/BottomSheetProvider.tsx
|
|
7
6
|
const BottomSheetContext = createContext(null);
|
|
8
7
|
/**
|
|
@@ -25,7 +24,7 @@ BottomSheetProvider.displayName = "BottomSheetProvider";
|
|
|
25
24
|
function useBottomSheetContext() {
|
|
26
25
|
return useContext(BottomSheetContext);
|
|
27
26
|
}
|
|
28
|
-
|
|
29
27
|
//#endregion
|
|
30
28
|
export { BottomSheetProvider, useBottomSheetContext };
|
|
29
|
+
|
|
31
30
|
//# sourceMappingURL=BottomSheetProvider.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"BottomSheetProvider.js","names":[],"sources":["../../../src/components/BottomSheet/BottomSheetProvider.tsx"],"sourcesContent":["import { createContext, useContext } from 'react';\n\nimport type { BottomSheetController, BottomSheetProviderProps } from './types';\nimport { useBottomSheetStore } from './useBottomSheetStore';\n\nconst BottomSheetContext = createContext<BottomSheetController | null>(null);\n\n/**\n * Provides a BottomSheetController to all descendants via React context.\n *\n * Accepts an optional `controller` prop. If omitted, creates an internal store.\n * All descendants (BottomSheet, BottomSheetTrigger, BottomSheetDismiss) resolve\n * the same store from this context.\n */\nfunction BottomSheetProvider({ children, controller }: BottomSheetProviderProps) {\n const fallbackStore = useBottomSheetStore();\n const store = controller ?? fallbackStore;\n\n return <BottomSheetContext.Provider value={store}>{children}</BottomSheetContext.Provider>;\n}\n\nBottomSheetProvider.displayName = 'BottomSheetProvider';\n\n/** @internal — read the controller from context. Returns null if no provider. */\nfunction useBottomSheetContext(): BottomSheetController | null {\n return useContext(BottomSheetContext);\n}\n\nexport { BottomSheetProvider, useBottomSheetContext };\n"],"mappings":"
|
|
1
|
+
{"version":3,"file":"BottomSheetProvider.js","names":[],"sources":["../../../src/components/BottomSheet/BottomSheetProvider.tsx"],"sourcesContent":["import { createContext, useContext } from 'react';\n\nimport type { BottomSheetController, BottomSheetProviderProps } from './types';\nimport { useBottomSheetStore } from './useBottomSheetStore';\n\nconst BottomSheetContext = createContext<BottomSheetController | null>(null);\n\n/**\n * Provides a BottomSheetController to all descendants via React context.\n *\n * Accepts an optional `controller` prop. If omitted, creates an internal store.\n * All descendants (BottomSheet, BottomSheetTrigger, BottomSheetDismiss) resolve\n * the same store from this context.\n */\nfunction BottomSheetProvider({ children, controller }: BottomSheetProviderProps) {\n const fallbackStore = useBottomSheetStore();\n const store = controller ?? fallbackStore;\n\n return <BottomSheetContext.Provider value={store}>{children}</BottomSheetContext.Provider>;\n}\n\nBottomSheetProvider.displayName = 'BottomSheetProvider';\n\n/** @internal — read the controller from context. Returns null if no provider. */\nfunction useBottomSheetContext(): BottomSheetController | null {\n return useContext(BottomSheetContext);\n}\n\nexport { BottomSheetProvider, useBottomSheetContext };\n"],"mappings":";;;;;AAKA,MAAM,qBAAqB,cAA4C,KAAK;;;;;;;;AAS5E,SAAS,oBAAoB,EAAE,UAAU,cAAwC;CAC/E,MAAM,gBAAgB,qBAAqB;CAC3C,MAAM,QAAQ,cAAc;AAE5B,QAAO,oBAAC,mBAAmB,UAApB;EAA6B,OAAO;EAAQ;EAAuC,CAAA;;AAG5F,oBAAoB,cAAc;;AAGlC,SAAS,wBAAsD;AAC7D,QAAO,WAAW,mBAAmB"}
|
|
@@ -1,9 +1,8 @@
|
|
|
1
1
|
/*! © 2026 Yahoo, Inc. UDS Mobile v0.0.0-development */
|
|
2
|
-
Object.defineProperty(exports, Symbol.toStringTag, { value:
|
|
3
|
-
|
|
4
|
-
const require_components_BottomSheet_BottomSheetProvider = require(
|
|
2
|
+
Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" });
|
|
3
|
+
require("../../_virtual/_rolldown/runtime.cjs");
|
|
4
|
+
const require_components_BottomSheet_BottomSheetProvider = require("./BottomSheetProvider.cjs");
|
|
5
5
|
let react = require("react");
|
|
6
|
-
|
|
7
6
|
//#region src/components/BottomSheet/BottomSheetTrigger.tsx
|
|
8
7
|
/**
|
|
9
8
|
* Clones the `render` element and injects an `onPress` handler that opens
|
|
@@ -23,6 +22,5 @@ const BottomSheetTrigger = (0, react.memo)(function BottomSheetTrigger({ render
|
|
|
23
22
|
controller.open();
|
|
24
23
|
}, [controller]) });
|
|
25
24
|
});
|
|
26
|
-
|
|
27
25
|
//#endregion
|
|
28
|
-
exports.BottomSheetTrigger = BottomSheetTrigger;
|
|
26
|
+
exports.BottomSheetTrigger = BottomSheetTrigger;
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
|
|
2
|
-
import * as react from "react";
|
|
2
|
+
import * as _$react from "react";
|
|
3
3
|
import { ReactElement } from "react";
|
|
4
4
|
|
|
5
5
|
//#region src/components/BottomSheet/BottomSheetTrigger.d.ts
|
|
@@ -19,7 +19,7 @@ interface Props {
|
|
|
19
19
|
* <BottomSheetTrigger render={<Button>Open Sheet</Button>} />
|
|
20
20
|
* ```
|
|
21
21
|
*/
|
|
22
|
-
declare const BottomSheetTrigger: react.NamedExoticComponent<Props>;
|
|
22
|
+
declare const BottomSheetTrigger: _$react.NamedExoticComponent<Props>;
|
|
23
23
|
//#endregion
|
|
24
24
|
export { BottomSheetTrigger };
|
|
25
25
|
//# sourceMappingURL=BottomSheetTrigger.d.cts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"BottomSheetTrigger.d.cts","names":[],"sources":["../../../src/components/BottomSheet/BottomSheetTrigger.tsx"],"mappings":";;;;;UAKU,KAAA;EACR,MAAA,EAAQ,YAAA;IAAe,OAAA;EAAA;AAAA;;;;;;;;AAAO;;;;cAe1B,kBAAA,EAAkB,
|
|
1
|
+
{"version":3,"file":"BottomSheetTrigger.d.cts","names":[],"sources":["../../../src/components/BottomSheet/BottomSheetTrigger.tsx"],"mappings":";;;;;UAKU,KAAA;EACR,MAAA,EAAQ,YAAA;IAAe,OAAA;EAAA;AAAA;;;;;;;;AAAO;;;;cAe1B,kBAAA,EAAkB,OAAA,CAAA,oBAAA,CAAA,KAAA"}
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
|
|
2
|
-
import * as react from "react";
|
|
2
|
+
import * as _$react from "react";
|
|
3
3
|
import { ReactElement } from "react";
|
|
4
4
|
|
|
5
5
|
//#region src/components/BottomSheet/BottomSheetTrigger.d.ts
|
|
@@ -19,7 +19,7 @@ interface Props {
|
|
|
19
19
|
* <BottomSheetTrigger render={<Button>Open Sheet</Button>} />
|
|
20
20
|
* ```
|
|
21
21
|
*/
|
|
22
|
-
declare const BottomSheetTrigger: react.NamedExoticComponent<Props>;
|
|
22
|
+
declare const BottomSheetTrigger: _$react.NamedExoticComponent<Props>;
|
|
23
23
|
//#endregion
|
|
24
24
|
export { BottomSheetTrigger };
|
|
25
25
|
//# sourceMappingURL=BottomSheetTrigger.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"BottomSheetTrigger.d.ts","names":[],"sources":["../../../src/components/BottomSheet/BottomSheetTrigger.tsx"],"mappings":";;;;;UAKU,KAAA;EACR,MAAA,EAAQ,YAAA;IAAe,OAAA;EAAA;AAAA;;;;;;;;AAAO;;;;cAe1B,kBAAA,EAAkB,
|
|
1
|
+
{"version":3,"file":"BottomSheetTrigger.d.ts","names":[],"sources":["../../../src/components/BottomSheet/BottomSheetTrigger.tsx"],"mappings":";;;;;UAKU,KAAA;EACR,MAAA,EAAQ,YAAA;IAAe,OAAA;EAAA;AAAA;;;;;;;;AAAO;;;;cAe1B,kBAAA,EAAkB,OAAA,CAAA,oBAAA,CAAA,KAAA"}
|
|
@@ -1,7 +1,6 @@
|
|
|
1
1
|
/*! © 2026 Yahoo, Inc. UDS Mobile v0.0.0-development */
|
|
2
2
|
import { useBottomSheetContext } from "./BottomSheetProvider.js";
|
|
3
3
|
import { cloneElement, memo, useCallback } from "react";
|
|
4
|
-
|
|
5
4
|
//#region src/components/BottomSheet/BottomSheetTrigger.tsx
|
|
6
5
|
/**
|
|
7
6
|
* Clones the `render` element and injects an `onPress` handler that opens
|
|
@@ -21,7 +20,7 @@ const BottomSheetTrigger = memo(function BottomSheetTrigger({ render }) {
|
|
|
21
20
|
controller.open();
|
|
22
21
|
}, [controller]) });
|
|
23
22
|
});
|
|
24
|
-
|
|
25
23
|
//#endregion
|
|
26
24
|
export { BottomSheetTrigger };
|
|
25
|
+
|
|
27
26
|
//# sourceMappingURL=BottomSheetTrigger.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"BottomSheetTrigger.js","names":[],"sources":["../../../src/components/BottomSheet/BottomSheetTrigger.tsx"],"sourcesContent":["import type { ReactElement } from 'react';\nimport { cloneElement, memo, useCallback } from 'react';\n\nimport { useBottomSheetContext } from './BottomSheetProvider';\n\ninterface Props {\n render: ReactElement<{ onPress?: () => void }>;\n}\n\n/**\n * Clones the `render` element and injects an `onPress` handler that opens\n * the nearest bottom sheet.\n *\n * Uses the `render` prop pattern to avoid nested pressable wrappers.\n *\n * @example\n * ```tsx\n * <BottomSheetTrigger render={<Button>Open Sheet</Button>} />\n * ```\n */\n// eslint-disable-next-line react/prop-types -- TypeScript validates props via Props interface\nconst BottomSheetTrigger = memo(function BottomSheetTrigger({ render }: Props) {\n const controller = useBottomSheetContext();\n\n if (!controller) {\n throw new Error('BottomSheetTrigger must be used inside a BottomSheetProvider.');\n }\n\n const handlePress = useCallback(() => {\n controller.open();\n }, [controller]);\n\n return cloneElement(render, {\n onPress: handlePress,\n });\n});\n\nexport { BottomSheetTrigger };\n"],"mappings":"
|
|
1
|
+
{"version":3,"file":"BottomSheetTrigger.js","names":[],"sources":["../../../src/components/BottomSheet/BottomSheetTrigger.tsx"],"sourcesContent":["import type { ReactElement } from 'react';\nimport { cloneElement, memo, useCallback } from 'react';\n\nimport { useBottomSheetContext } from './BottomSheetProvider';\n\ninterface Props {\n render: ReactElement<{ onPress?: () => void }>;\n}\n\n/**\n * Clones the `render` element and injects an `onPress` handler that opens\n * the nearest bottom sheet.\n *\n * Uses the `render` prop pattern to avoid nested pressable wrappers.\n *\n * @example\n * ```tsx\n * <BottomSheetTrigger render={<Button>Open Sheet</Button>} />\n * ```\n */\n// eslint-disable-next-line react/prop-types -- TypeScript validates props via Props interface\nconst BottomSheetTrigger = memo(function BottomSheetTrigger({ render }: Props) {\n const controller = useBottomSheetContext();\n\n if (!controller) {\n throw new Error('BottomSheetTrigger must be used inside a BottomSheetProvider.');\n }\n\n const handlePress = useCallback(() => {\n controller.open();\n }, [controller]);\n\n return cloneElement(render, {\n onPress: handlePress,\n });\n});\n\nexport { BottomSheetTrigger };\n"],"mappings":";;;;;;;;;;;;;;;AAqBA,MAAM,qBAAqB,KAAK,SAAS,mBAAmB,EAAE,UAAiB;CAC7E,MAAM,aAAa,uBAAuB;AAE1C,KAAI,CAAC,WACH,OAAM,IAAI,MAAM,gEAAgE;AAOlF,QAAO,aAAa,QAAQ,EAC1B,SALkB,kBAAkB;AACpC,aAAW,MAAM;IAChB,CAAC,WAAW,CAGO,EACrB,CAAC;EACF"}
|
|
@@ -1,14 +1,13 @@
|
|
|
1
1
|
/*! © 2026 Yahoo, Inc. UDS Mobile v0.0.0-development */
|
|
2
|
-
Object.defineProperty(exports, Symbol.toStringTag, { value:
|
|
3
|
-
const require_components_BottomSheet_useBottomSheetStore = require(
|
|
4
|
-
const require_components_BottomSheet_BottomSheetProvider = require(
|
|
5
|
-
const require_components_BottomSheet_BottomSheet = require(
|
|
6
|
-
const require_components_BottomSheet_BottomSheetContent = require(
|
|
7
|
-
const require_components_BottomSheet_BottomSheetDismiss = require(
|
|
8
|
-
const require_components_BottomSheet_BottomSheetHeader = require(
|
|
9
|
-
const require_components_BottomSheet_BottomSheetTrigger = require(
|
|
10
|
-
const require_components_BottomSheet_useBottomSheetScroll = require(
|
|
11
|
-
|
|
2
|
+
Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" });
|
|
3
|
+
const require_components_BottomSheet_useBottomSheetStore = require("./useBottomSheetStore.cjs");
|
|
4
|
+
const require_components_BottomSheet_BottomSheetProvider = require("./BottomSheetProvider.cjs");
|
|
5
|
+
const require_components_BottomSheet_BottomSheet = require("./BottomSheet.cjs");
|
|
6
|
+
const require_components_BottomSheet_BottomSheetContent = require("./BottomSheetContent.cjs");
|
|
7
|
+
const require_components_BottomSheet_BottomSheetDismiss = require("./BottomSheetDismiss.cjs");
|
|
8
|
+
const require_components_BottomSheet_BottomSheetHeader = require("./BottomSheetHeader.cjs");
|
|
9
|
+
const require_components_BottomSheet_BottomSheetTrigger = require("./BottomSheetTrigger.cjs");
|
|
10
|
+
const require_components_BottomSheet_useBottomSheetScroll = require("./useBottomSheetScroll.cjs");
|
|
12
11
|
exports.BottomSheet = require_components_BottomSheet_BottomSheet.BottomSheet;
|
|
13
12
|
exports.BottomSheetContent = require_components_BottomSheet_BottomSheetContent.BottomSheetContent;
|
|
14
13
|
exports.BottomSheetDismiss = require_components_BottomSheet_BottomSheetDismiss.BottomSheetDismiss;
|
|
@@ -16,4 +15,4 @@ exports.BottomSheetHeader = require_components_BottomSheet_BottomSheetHeader.Bot
|
|
|
16
15
|
exports.BottomSheetProvider = require_components_BottomSheet_BottomSheetProvider.BottomSheetProvider;
|
|
17
16
|
exports.BottomSheetTrigger = require_components_BottomSheet_BottomSheetTrigger.BottomSheetTrigger;
|
|
18
17
|
exports.useBottomSheetScroll = require_components_BottomSheet_useBottomSheetScroll.useBottomSheetScroll;
|
|
19
|
-
exports.useBottomSheetStore = require_components_BottomSheet_useBottomSheetStore.useBottomSheetStore;
|
|
18
|
+
exports.useBottomSheetStore = require_components_BottomSheet_useBottomSheetStore.useBottomSheetStore;
|
|
@@ -7,5 +7,4 @@ import { BottomSheetDismiss } from "./BottomSheetDismiss.js";
|
|
|
7
7
|
import { BottomSheetHeader } from "./BottomSheetHeader.js";
|
|
8
8
|
import { BottomSheetTrigger } from "./BottomSheetTrigger.js";
|
|
9
9
|
import { useBottomSheetScroll } from "./useBottomSheetScroll.js";
|
|
10
|
-
|
|
11
|
-
export { BottomSheet, BottomSheetContent, BottomSheetDismiss, BottomSheetHeader, BottomSheetProvider, BottomSheetTrigger, useBottomSheetScroll, useBottomSheetStore };
|
|
10
|
+
export { BottomSheet, BottomSheetContent, BottomSheetDismiss, BottomSheetHeader, BottomSheetProvider, BottomSheetTrigger, useBottomSheetScroll, useBottomSheetStore };
|
|
@@ -1,12 +1,11 @@
|
|
|
1
1
|
/*! © 2026 Yahoo, Inc. UDS Mobile v0.0.0-development */
|
|
2
|
-
Object.defineProperty(exports, Symbol.toStringTag, { value:
|
|
3
|
-
|
|
4
|
-
const require_components_BottomSheet_utils = require(
|
|
2
|
+
Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" });
|
|
3
|
+
require("../../_virtual/_rolldown/runtime.cjs");
|
|
4
|
+
const require_components_BottomSheet_utils = require("./utils.cjs");
|
|
5
5
|
let react = require("react");
|
|
6
6
|
let react_native = require("react-native");
|
|
7
7
|
let react_native_reanimated = require("react-native-reanimated");
|
|
8
8
|
let react_native_gesture_handler = require("react-native-gesture-handler");
|
|
9
|
-
|
|
10
9
|
//#region src/components/BottomSheet/useBottomSheetDrag.ts
|
|
11
10
|
/**
|
|
12
11
|
* Velocity threshold (px/s) above which a downward fling dismisses the sheet.
|
|
@@ -186,6 +185,5 @@ function useBottomSheetDrag({ enableDrag, dismissible, enableOverstretch, resolv
|
|
|
186
185
|
openTimeSV
|
|
187
186
|
};
|
|
188
187
|
}
|
|
189
|
-
|
|
190
188
|
//#endregion
|
|
191
|
-
exports.useBottomSheetDrag = useBottomSheetDrag;
|
|
189
|
+
exports.useBottomSheetDrag = useBottomSheetDrag;
|
|
@@ -4,7 +4,6 @@ import { useCallback, useRef } from "react";
|
|
|
4
4
|
import { Platform } from "react-native";
|
|
5
5
|
import { runOnJS, useSharedValue } from "react-native-reanimated";
|
|
6
6
|
import { Gesture } from "react-native-gesture-handler";
|
|
7
|
-
|
|
8
7
|
//#region src/components/BottomSheet/useBottomSheetDrag.ts
|
|
9
8
|
/**
|
|
10
9
|
* Velocity threshold (px/s) above which a downward fling dismisses the sheet.
|
|
@@ -184,7 +183,7 @@ function useBottomSheetDrag({ enableDrag, dismissible, enableOverstretch, resolv
|
|
|
184
183
|
openTimeSV
|
|
185
184
|
};
|
|
186
185
|
}
|
|
187
|
-
|
|
188
186
|
//#endregion
|
|
189
187
|
export { useBottomSheetDrag };
|
|
188
|
+
|
|
190
189
|
//# sourceMappingURL=useBottomSheetDrag.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"useBottomSheetDrag.js","names":[],"sources":["../../../src/components/BottomSheet/useBottomSheetDrag.ts"],"sourcesContent":["import { useCallback, useRef } from 'react';\nimport { Platform } from 'react-native';\nimport type { GestureType } from 'react-native-gesture-handler';\nimport { Gesture } from 'react-native-gesture-handler';\nimport type { SharedValue } from 'react-native-reanimated';\nimport { runOnJS, useSharedValue } from 'react-native-reanimated';\n\nimport type { BottomSheetHeight } from './types';\nimport { clamp, clampIndex, resolveHeightToPx } from './utils';\n\n/**\n * Velocity threshold (px/s) above which a downward fling dismisses the sheet.\n */\nconst DRAG_DISMISS_VELOCITY = 500;\n\n/**\n * Duration (ms) after opening during which drag is blocked to prevent\n * accidentally stealing scroll intent.\n */\nconst OPEN_LOCK_TIMEOUT_MS = 250;\n\n/**\n * Horizontal movement (px) that causes the pan gesture to fail,\n * handing control to horizontal scrolling or other gestures.\n */\nconst HORIZONTAL_FAIL_THRESHOLD = 20;\n\n/**\n * Minimum vertical movement (px) required before deciding whether to\n * activate the pan gesture or let the scroll view handle the touch.\n */\nconst VERTICAL_ACTIVATION_THRESHOLD = 10;\n\n/**\n * Approximate height (px) of the header area (paddingTop + handle + header row).\n * Touches above this threshold always activate the pan for sheet collapse.\n * Touches below it may defer to the scroll view on Android.\n */\nconst HEADER_AREA_HEIGHT = 64;\n\n/** How much drag past max snap is visible (0–1). Lower = more resistance. */\nconst RUBBER_BAND_FACTOR = 0.2;\n\n/** Max enableOverstretch distance (px) past the max snap point. */\nconst MAX_OVERSTRETCH_PX = 30;\n\ninterface UseBottomSheetDragParams {\n enableDrag: boolean;\n dismissible: boolean;\n enableOverstretch: boolean;\n resolvedSnapPoints: BottomSheetHeight[];\n containerHeight: SharedValue<number>;\n bottomInsetPx: number;\n translateY: SharedValue<number>;\n activeSnapIndex: SharedValue<number>;\n isAnimating: SharedValue<boolean>;\n animateToSnapWorklet: (index: number) => void;\n animateToCloseWorklet: () => void;\n onDismiss: () => void;\n /** Scroll lock — written here, read by BottomSheetContent. */\n scrollLocked: SharedValue<boolean>;\n /** Current content scroll offset (UI-thread shared value). */\n scrollOffsetY: SharedValue<number>;\n /** Compute translateY for a given snap index (worklet). Provided by the snap model. */\n getTranslateYForSnap: (index: number) => number;\n}\n\ninterface UseBottomSheetDragResult {\n /** The pan gesture to attach to GestureDetector. */\n panGesture: GestureType;\n /** Ref to the pan gesture — for simultaneousWithExternalGesture in scroll. */\n panGestureRef: React.RefObject<GestureType | undefined>;\n /** Shared value — set to Date.now() when sheet opens, for fresh-open lock. */\n openTimeSV: SharedValue<number>;\n}\n\n/**\n * Builds the pan gesture that drives sheet dragging.\n *\n * Handles:\n * - Drag-to-snap (nearest or velocity-based)\n * - Drag-to-dismiss (past lowest snap threshold or fast fling)\n * - Fresh-open lock (prevents accidental drag right after opening)\n * - Scroll coordination (gates between sheet drag and content scroll)\n *\n * Scroll is only unlocked at the max snap point. At non-max snaps, dragging\n * anywhere on the sheet expands or collapses it. At max snap, content is\n * scrollable; dragging down from scroll-top collapses the sheet.\n *\n * All gesture callbacks run on the UI thread via Reanimated worklets.\n */\nfunction useBottomSheetDrag({\n enableDrag,\n dismissible,\n enableOverstretch,\n resolvedSnapPoints,\n containerHeight,\n bottomInsetPx,\n translateY,\n activeSnapIndex,\n isAnimating,\n animateToSnapWorklet,\n animateToCloseWorklet,\n onDismiss,\n scrollLocked,\n scrollOffsetY,\n getTranslateYForSnap,\n}: UseBottomSheetDragParams): UseBottomSheetDragResult {\n // Shared values for drag state (UI thread).\n const isDragActive = useSharedValue(false);\n const touchStartX = useSharedValue(0);\n const touchStartY = useSharedValue(0);\n const dragStartTranslateY = useSharedValue(0);\n const dragStartIndex = useSharedValue(0);\n const openTimeSV = useSharedValue(0);\n\n // Ref for the pan gesture — passed to BottomSheetContent for gesture composition.\n const panGestureRef = useRef<GestureType | undefined>(undefined);\n\n const snapCount = resolvedSnapPoints.length;\n const maxSnapIndex = snapCount - 1;\n\n /** Compute all snap translateY positions — worklet. */\n const getSnapTranslateYs = useCallback((): number[] => {\n 'worklet';\n const result: number[] = [];\n for (let i = 0; i < snapCount; i++) {\n result.push(getTranslateYForSnap(i));\n }\n return result;\n }, [snapCount, getTranslateYForSnap]);\n\n /** Dismiss threshold: 25% of the lowest snap height. */\n const getDismissThreshold = useCallback((): number => {\n 'worklet';\n if (snapCount === 0) {\n return 50;\n }\n const lowestSnapHeight = resolveHeightToPx(resolvedSnapPoints[0]!, containerHeight.value);\n return lowestSnapHeight * 0.25;\n }, [resolvedSnapPoints, snapCount, containerHeight]);\n\n const handleDismissJS = useCallback(() => {\n onDismiss();\n }, [onDismiss]);\n\n const panGesture = Gesture.Pan()\n .withRef(panGestureRef)\n .manualActivation(true)\n .onTouchesDown((e, _stateManager) => {\n 'worklet';\n const touch = e.allTouches[0];\n if (touch) {\n touchStartX.value = touch.absoluteX;\n touchStartY.value = touch.absoluteY;\n }\n })\n .onTouchesMove((e, stateManager) => {\n 'worklet';\n const touch = e.allTouches[0];\n if (!touch) {\n return;\n }\n\n const dx = touch.absoluteX - touchStartX.value;\n const dy = touch.absoluteY - touchStartY.value;\n\n // Fail on horizontal movement (replaces failOffsetX).\n if (Math.abs(dx) > HORIZONTAL_FAIL_THRESHOLD) {\n stateManager.fail();\n return;\n }\n\n // Wait for sufficient vertical movement (replaces activeOffsetY).\n if (Math.abs(dy) < VERTICAL_ACTIVATION_THRESHOLD) {\n return;\n }\n\n // Fresh-open lock.\n const now = Date.now();\n if (openTimeSV.value > 0 && now - openTimeSV.value < OPEN_LOCK_TIMEOUT_MS) {\n stateManager.fail();\n return;\n }\n\n // Don't activate during animation.\n if (isAnimating.value) {\n stateManager.fail();\n return;\n }\n\n const isAtMaxSnap = activeSnapIndex.value === maxSnapIndex;\n\n if (isAtMaxSnap) {\n if (dy < 0) {\n if (!enableOverstretch) {\n // No enableOverstretch — let the scroll view handle all upward drags.\n stateManager.fail();\n return;\n }\n // Header/handle: allow rubber-band enableOverstretch.\n // Content area: defer to scroll view (always on Android,\n // only when scrolled on iOS).\n const localY = touchStartY.value - translateY.value;\n const isInContentArea = localY > HEADER_AREA_HEIGHT;\n if (isInContentArea && (Platform.OS === 'android' || scrollOffsetY.value > 1)) {\n stateManager.fail();\n return;\n }\n } else {\n // Dragging down on Android: defer to scroll view in content\n // area when scrolled. Header drags always collapse.\n if (Platform.OS === 'android' && scrollOffsetY.value > 1) {\n const localY = touchStartY.value - translateY.value;\n if (localY > HEADER_AREA_HEIGHT) {\n stateManager.fail();\n return;\n }\n }\n }\n }\n\n stateManager.activate();\n })\n .onStart(() => {\n 'worklet';\n isDragActive.value = true;\n dragStartTranslateY.value = translateY.value;\n dragStartIndex.value = activeSnapIndex.value;\n scrollLocked.value = true;\n })\n .onUpdate((event) => {\n 'worklet';\n if (!isDragActive.value) {\n return;\n }\n\n const maxSnapTranslateY = snapCount > 0 ? getTranslateYForSnap(snapCount - 1) : 0;\n const closedTranslateY = containerHeight.value + bottomInsetPx;\n\n const nextY = dragStartTranslateY.value + event.translationY;\n\n if (enableOverstretch && nextY < maxSnapTranslateY) {\n // Rubber-band enableOverstretch past max snap.\n const overflow = maxSnapTranslateY - nextY;\n const dampedOverflow = Math.min(overflow * RUBBER_BAND_FACTOR, MAX_OVERSTRETCH_PX);\n translateY.value = maxSnapTranslateY - dampedOverflow;\n } else {\n translateY.value = clamp(nextY, maxSnapTranslateY, closedTranslateY);\n }\n })\n .onEnd((event) => {\n 'worklet';\n if (!isDragActive.value) {\n return;\n }\n isDragActive.value = false;\n\n const currentY = translateY.value;\n const startIndex = dragStartIndex.value;\n const snapTranslateYs = getSnapTranslateYs();\n\n // Compute drag metrics.\n const startSnapY = snapTranslateYs[startIndex] ?? containerHeight.value;\n const draggedDistance = dragStartTranslateY.value - currentY;\n const draggedDown = draggedDistance < 0;\n const draggedUp = draggedDistance > 0;\n const velocityPxPerSec = Math.abs(event.velocityY);\n\n // 1. Dismiss check: at lowest snap, dragged down, meets threshold.\n const isAtLowestSnap = startIndex === 0;\n const dismissThreshold = getDismissThreshold();\n const draggedDownAmount = currentY - startSnapY;\n\n if (\n dismissible &&\n isAtLowestSnap &&\n draggedDown &&\n (velocityPxPerSec >= DRAG_DISMISS_VELOCITY || draggedDownAmount >= dismissThreshold)\n ) {\n scrollLocked.value = true;\n animateToCloseWorklet();\n runOnJS(handleDismissJS)();\n return;\n }\n\n // 2. Velocity snap: fast enough → move one snap in drag direction.\n if (velocityPxPerSec >= DRAG_DISMISS_VELOCITY && (draggedUp || draggedDown)) {\n const direction = draggedUp ? 1 : -1;\n const nextIndex = clampIndex(startIndex + direction, snapCount);\n scrollLocked.value = nextIndex !== maxSnapIndex;\n animateToSnapWorklet(nextIndex);\n return;\n }\n\n // 3. Direction-aware snap: if the user dragged past 25% of the distance\n // to the next snap in their drag direction, move to that snap.\n // Otherwise snap back to the starting snap.\n const nextIndexInDirection = draggedUp\n ? Math.min(startIndex + 1, maxSnapIndex)\n : Math.max(startIndex - 1, 0);\n const nextSnapY = snapTranslateYs[nextIndexInDirection] ?? startSnapY;\n const distBetweenSnaps = Math.abs(nextSnapY - startSnapY);\n const dragDist = Math.abs(currentY - startSnapY);\n\n const targetIndex =\n distBetweenSnaps > 0 && dragDist > distBetweenSnaps * 0.25\n ? nextIndexInDirection\n : startIndex;\n\n scrollLocked.value = targetIndex !== maxSnapIndex;\n animateToSnapWorklet(targetIndex);\n })\n .onFinalize(() => {\n 'worklet';\n if (isDragActive.value) {\n isDragActive.value = false;\n }\n })\n .enabled(enableDrag);\n\n return {\n panGesture,\n panGestureRef,\n openTimeSV,\n };\n}\n\nexport { useBottomSheetDrag };\n"],"mappings":";;;;;;;;;;;AAaA,MAAM,wBAAwB;;;;;AAM9B,MAAM,uBAAuB;;;;;AAM7B,MAAM,4BAA4B;;;;;AAMlC,MAAM,gCAAgC;;;;;;AAOtC,MAAM,qBAAqB;;AAG3B,MAAM,qBAAqB;;AAG3B,MAAM,qBAAqB;;;;;;;;;;;;;;;;AA+C3B,SAAS,mBAAmB,EAC1B,YACA,aACA,mBACA,oBACA,iBACA,eACA,YACA,iBACA,aACA,sBACA,uBACA,WACA,cACA,eACA,wBACqD;CAErD,MAAM,eAAe,eAAe,MAAM;CAC1C,MAAM,cAAc,eAAe,EAAE;CACrC,MAAM,cAAc,eAAe,EAAE;CACrC,MAAM,sBAAsB,eAAe,EAAE;CAC7C,MAAM,iBAAiB,eAAe,EAAE;CACxC,MAAM,aAAa,eAAe,EAAE;CAGpC,MAAM,gBAAgB,OAAgC,OAAU;CAEhE,MAAM,YAAY,mBAAmB;CACrC,MAAM,eAAe,YAAY;;CAGjC,MAAM,qBAAqB,kBAA4B;AACrD;EACA,MAAM,SAAmB,EAAE;AAC3B,OAAK,IAAI,IAAI,GAAG,IAAI,WAAW,IAC7B,QAAO,KAAK,qBAAqB,EAAE,CAAC;AAEtC,SAAO;IACN,CAAC,WAAW,qBAAqB,CAAC;;CAGrC,MAAM,sBAAsB,kBAA0B;AACpD;AACA,MAAI,cAAc,EAChB,QAAO;AAGT,SADyB,kBAAkB,mBAAmB,IAAK,gBAAgB,MAAM,GAC/D;IACzB;EAAC;EAAoB;EAAW;EAAgB,CAAC;CAEpD,MAAM,kBAAkB,kBAAkB;AACxC,aAAW;IACV,CAAC,UAAU,CAAC;AAiLf,QAAO;EACL,YAhLiB,QAAQ,KAAK,CAC7B,QAAQ,cAAc,CACtB,iBAAiB,KAAK,CACtB,eAAe,GAAG,kBAAkB;AACnC;GACA,MAAM,QAAQ,EAAE,WAAW;AAC3B,OAAI,OAAO;AACT,gBAAY,QAAQ,MAAM;AAC1B,gBAAY,QAAQ,MAAM;;IAE5B,CACD,eAAe,GAAG,iBAAiB;AAClC;GACA,MAAM,QAAQ,EAAE,WAAW;AAC3B,OAAI,CAAC,MACH;GAGF,MAAM,KAAK,MAAM,YAAY,YAAY;GACzC,MAAM,KAAK,MAAM,YAAY,YAAY;AAGzC,OAAI,KAAK,IAAI,GAAG,GAAG,2BAA2B;AAC5C,iBAAa,MAAM;AACnB;;AAIF,OAAI,KAAK,IAAI,GAAG,GAAG,8BACjB;GAIF,MAAM,MAAM,KAAK,KAAK;AACtB,OAAI,WAAW,QAAQ,KAAK,MAAM,WAAW,QAAQ,sBAAsB;AACzE,iBAAa,MAAM;AACnB;;AAIF,OAAI,YAAY,OAAO;AACrB,iBAAa,MAAM;AACnB;;AAKF,OAFoB,gBAAgB,UAAU,cAG5C;QAAI,KAAK,GAAG;AACV,SAAI,CAAC,mBAAmB;AAEtB,mBAAa,MAAM;AACnB;;AAOF,SAFe,YAAY,QAAQ,WAAW,QACb,uBACT,SAAS,OAAO,aAAa,cAAc,QAAQ,IAAI;AAC7E,mBAAa,MAAM;AACnB;;eAKE,SAAS,OAAO,aAAa,cAAc,QAAQ,GAErD;SADe,YAAY,QAAQ,WAAW,QACjC,oBAAoB;AAC/B,mBAAa,MAAM;AACnB;;;;AAMR,gBAAa,UAAU;IACvB,CACD,cAAc;AACb;AACA,gBAAa,QAAQ;AACrB,uBAAoB,QAAQ,WAAW;AACvC,kBAAe,QAAQ,gBAAgB;AACvC,gBAAa,QAAQ;IACrB,CACD,UAAU,UAAU;AACnB;AACA,OAAI,CAAC,aAAa,MAChB;GAGF,MAAM,oBAAoB,YAAY,IAAI,qBAAqB,YAAY,EAAE,GAAG;GAChF,MAAM,mBAAmB,gBAAgB,QAAQ;GAEjD,MAAM,QAAQ,oBAAoB,QAAQ,MAAM;AAEhD,OAAI,qBAAqB,QAAQ,mBAAmB;IAElD,MAAM,WAAW,oBAAoB;AAErC,eAAW,QAAQ,oBADI,KAAK,IAAI,WAAW,oBAAoB,mBAAmB;SAGlF,YAAW,QAAQ,MAAM,OAAO,mBAAmB,iBAAiB;IAEtE,CACD,OAAO,UAAU;AAChB;AACA,OAAI,CAAC,aAAa,MAChB;AAEF,gBAAa,QAAQ;GAErB,MAAM,WAAW,WAAW;GAC5B,MAAM,aAAa,eAAe;GAClC,MAAM,kBAAkB,oBAAoB;GAG5C,MAAM,aAAa,gBAAgB,eAAe,gBAAgB;GAClE,MAAM,kBAAkB,oBAAoB,QAAQ;GACpD,MAAM,cAAc,kBAAkB;GACtC,MAAM,YAAY,kBAAkB;GACpC,MAAM,mBAAmB,KAAK,IAAI,MAAM,UAAU;GAGlD,MAAM,iBAAiB,eAAe;GACtC,MAAM,mBAAmB,qBAAqB;GAC9C,MAAM,oBAAoB,WAAW;AAErC,OACE,eACA,kBACA,gBACC,oBAAoB,yBAAyB,qBAAqB,mBACnE;AACA,iBAAa,QAAQ;AACrB,2BAAuB;AACvB,YAAQ,gBAAgB,EAAE;AAC1B;;AAIF,OAAI,oBAAoB,0BAA0B,aAAa,cAAc;IAE3E,MAAM,YAAY,WAAW,cADX,YAAY,IAAI,KACmB,UAAU;AAC/D,iBAAa,QAAQ,cAAc;AACnC,yBAAqB,UAAU;AAC/B;;GAMF,MAAM,uBAAuB,YACzB,KAAK,IAAI,aAAa,GAAG,aAAa,GACtC,KAAK,IAAI,aAAa,GAAG,EAAE;GAC/B,MAAM,YAAY,gBAAgB,yBAAyB;GAC3D,MAAM,mBAAmB,KAAK,IAAI,YAAY,WAAW;GACzD,MAAM,WAAW,KAAK,IAAI,WAAW,WAAW;GAEhD,MAAM,cACJ,mBAAmB,KAAK,WAAW,mBAAmB,MAClD,uBACA;AAEN,gBAAa,QAAQ,gBAAgB;AACrC,wBAAqB,YAAY;IACjC,CACD,iBAAiB;AAChB;AACA,OAAI,aAAa,MACf,cAAa,QAAQ;IAEvB,CACD,QAAQ,WAAW;EAIpB;EACA;EACD"}
|
|
1
|
+
{"version":3,"file":"useBottomSheetDrag.js","names":[],"sources":["../../../src/components/BottomSheet/useBottomSheetDrag.ts"],"sourcesContent":["import { useCallback, useRef } from 'react';\nimport { Platform } from 'react-native';\nimport type { GestureType } from 'react-native-gesture-handler';\nimport { Gesture } from 'react-native-gesture-handler';\nimport type { SharedValue } from 'react-native-reanimated';\nimport { runOnJS, useSharedValue } from 'react-native-reanimated';\n\nimport type { BottomSheetHeight } from './types';\nimport { clamp, clampIndex, resolveHeightToPx } from './utils';\n\n/**\n * Velocity threshold (px/s) above which a downward fling dismisses the sheet.\n */\nconst DRAG_DISMISS_VELOCITY = 500;\n\n/**\n * Duration (ms) after opening during which drag is blocked to prevent\n * accidentally stealing scroll intent.\n */\nconst OPEN_LOCK_TIMEOUT_MS = 250;\n\n/**\n * Horizontal movement (px) that causes the pan gesture to fail,\n * handing control to horizontal scrolling or other gestures.\n */\nconst HORIZONTAL_FAIL_THRESHOLD = 20;\n\n/**\n * Minimum vertical movement (px) required before deciding whether to\n * activate the pan gesture or let the scroll view handle the touch.\n */\nconst VERTICAL_ACTIVATION_THRESHOLD = 10;\n\n/**\n * Approximate height (px) of the header area (paddingTop + handle + header row).\n * Touches above this threshold always activate the pan for sheet collapse.\n * Touches below it may defer to the scroll view on Android.\n */\nconst HEADER_AREA_HEIGHT = 64;\n\n/** How much drag past max snap is visible (0–1). Lower = more resistance. */\nconst RUBBER_BAND_FACTOR = 0.2;\n\n/** Max enableOverstretch distance (px) past the max snap point. */\nconst MAX_OVERSTRETCH_PX = 30;\n\ninterface UseBottomSheetDragParams {\n enableDrag: boolean;\n dismissible: boolean;\n enableOverstretch: boolean;\n resolvedSnapPoints: BottomSheetHeight[];\n containerHeight: SharedValue<number>;\n bottomInsetPx: number;\n translateY: SharedValue<number>;\n activeSnapIndex: SharedValue<number>;\n isAnimating: SharedValue<boolean>;\n animateToSnapWorklet: (index: number) => void;\n animateToCloseWorklet: () => void;\n onDismiss: () => void;\n /** Scroll lock — written here, read by BottomSheetContent. */\n scrollLocked: SharedValue<boolean>;\n /** Current content scroll offset (UI-thread shared value). */\n scrollOffsetY: SharedValue<number>;\n /** Compute translateY for a given snap index (worklet). Provided by the snap model. */\n getTranslateYForSnap: (index: number) => number;\n}\n\ninterface UseBottomSheetDragResult {\n /** The pan gesture to attach to GestureDetector. */\n panGesture: GestureType;\n /** Ref to the pan gesture — for simultaneousWithExternalGesture in scroll. */\n panGestureRef: React.RefObject<GestureType | undefined>;\n /** Shared value — set to Date.now() when sheet opens, for fresh-open lock. */\n openTimeSV: SharedValue<number>;\n}\n\n/**\n * Builds the pan gesture that drives sheet dragging.\n *\n * Handles:\n * - Drag-to-snap (nearest or velocity-based)\n * - Drag-to-dismiss (past lowest snap threshold or fast fling)\n * - Fresh-open lock (prevents accidental drag right after opening)\n * - Scroll coordination (gates between sheet drag and content scroll)\n *\n * Scroll is only unlocked at the max snap point. At non-max snaps, dragging\n * anywhere on the sheet expands or collapses it. At max snap, content is\n * scrollable; dragging down from scroll-top collapses the sheet.\n *\n * All gesture callbacks run on the UI thread via Reanimated worklets.\n */\nfunction useBottomSheetDrag({\n enableDrag,\n dismissible,\n enableOverstretch,\n resolvedSnapPoints,\n containerHeight,\n bottomInsetPx,\n translateY,\n activeSnapIndex,\n isAnimating,\n animateToSnapWorklet,\n animateToCloseWorklet,\n onDismiss,\n scrollLocked,\n scrollOffsetY,\n getTranslateYForSnap,\n}: UseBottomSheetDragParams): UseBottomSheetDragResult {\n // Shared values for drag state (UI thread).\n const isDragActive = useSharedValue(false);\n const touchStartX = useSharedValue(0);\n const touchStartY = useSharedValue(0);\n const dragStartTranslateY = useSharedValue(0);\n const dragStartIndex = useSharedValue(0);\n const openTimeSV = useSharedValue(0);\n\n // Ref for the pan gesture — passed to BottomSheetContent for gesture composition.\n const panGestureRef = useRef<GestureType | undefined>(undefined);\n\n const snapCount = resolvedSnapPoints.length;\n const maxSnapIndex = snapCount - 1;\n\n /** Compute all snap translateY positions — worklet. */\n const getSnapTranslateYs = useCallback((): number[] => {\n 'worklet';\n const result: number[] = [];\n for (let i = 0; i < snapCount; i++) {\n result.push(getTranslateYForSnap(i));\n }\n return result;\n }, [snapCount, getTranslateYForSnap]);\n\n /** Dismiss threshold: 25% of the lowest snap height. */\n const getDismissThreshold = useCallback((): number => {\n 'worklet';\n if (snapCount === 0) {\n return 50;\n }\n const lowestSnapHeight = resolveHeightToPx(resolvedSnapPoints[0]!, containerHeight.value);\n return lowestSnapHeight * 0.25;\n }, [resolvedSnapPoints, snapCount, containerHeight]);\n\n const handleDismissJS = useCallback(() => {\n onDismiss();\n }, [onDismiss]);\n\n const panGesture = Gesture.Pan()\n .withRef(panGestureRef)\n .manualActivation(true)\n .onTouchesDown((e, _stateManager) => {\n 'worklet';\n const touch = e.allTouches[0];\n if (touch) {\n touchStartX.value = touch.absoluteX;\n touchStartY.value = touch.absoluteY;\n }\n })\n .onTouchesMove((e, stateManager) => {\n 'worklet';\n const touch = e.allTouches[0];\n if (!touch) {\n return;\n }\n\n const dx = touch.absoluteX - touchStartX.value;\n const dy = touch.absoluteY - touchStartY.value;\n\n // Fail on horizontal movement (replaces failOffsetX).\n if (Math.abs(dx) > HORIZONTAL_FAIL_THRESHOLD) {\n stateManager.fail();\n return;\n }\n\n // Wait for sufficient vertical movement (replaces activeOffsetY).\n if (Math.abs(dy) < VERTICAL_ACTIVATION_THRESHOLD) {\n return;\n }\n\n // Fresh-open lock.\n const now = Date.now();\n if (openTimeSV.value > 0 && now - openTimeSV.value < OPEN_LOCK_TIMEOUT_MS) {\n stateManager.fail();\n return;\n }\n\n // Don't activate during animation.\n if (isAnimating.value) {\n stateManager.fail();\n return;\n }\n\n const isAtMaxSnap = activeSnapIndex.value === maxSnapIndex;\n\n if (isAtMaxSnap) {\n if (dy < 0) {\n if (!enableOverstretch) {\n // No enableOverstretch — let the scroll view handle all upward drags.\n stateManager.fail();\n return;\n }\n // Header/handle: allow rubber-band enableOverstretch.\n // Content area: defer to scroll view (always on Android,\n // only when scrolled on iOS).\n const localY = touchStartY.value - translateY.value;\n const isInContentArea = localY > HEADER_AREA_HEIGHT;\n if (isInContentArea && (Platform.OS === 'android' || scrollOffsetY.value > 1)) {\n stateManager.fail();\n return;\n }\n } else {\n // Dragging down on Android: defer to scroll view in content\n // area when scrolled. Header drags always collapse.\n if (Platform.OS === 'android' && scrollOffsetY.value > 1) {\n const localY = touchStartY.value - translateY.value;\n if (localY > HEADER_AREA_HEIGHT) {\n stateManager.fail();\n return;\n }\n }\n }\n }\n\n stateManager.activate();\n })\n .onStart(() => {\n 'worklet';\n isDragActive.value = true;\n dragStartTranslateY.value = translateY.value;\n dragStartIndex.value = activeSnapIndex.value;\n scrollLocked.value = true;\n })\n .onUpdate((event) => {\n 'worklet';\n if (!isDragActive.value) {\n return;\n }\n\n const maxSnapTranslateY = snapCount > 0 ? getTranslateYForSnap(snapCount - 1) : 0;\n const closedTranslateY = containerHeight.value + bottomInsetPx;\n\n const nextY = dragStartTranslateY.value + event.translationY;\n\n if (enableOverstretch && nextY < maxSnapTranslateY) {\n // Rubber-band enableOverstretch past max snap.\n const overflow = maxSnapTranslateY - nextY;\n const dampedOverflow = Math.min(overflow * RUBBER_BAND_FACTOR, MAX_OVERSTRETCH_PX);\n translateY.value = maxSnapTranslateY - dampedOverflow;\n } else {\n translateY.value = clamp(nextY, maxSnapTranslateY, closedTranslateY);\n }\n })\n .onEnd((event) => {\n 'worklet';\n if (!isDragActive.value) {\n return;\n }\n isDragActive.value = false;\n\n const currentY = translateY.value;\n const startIndex = dragStartIndex.value;\n const snapTranslateYs = getSnapTranslateYs();\n\n // Compute drag metrics.\n const startSnapY = snapTranslateYs[startIndex] ?? containerHeight.value;\n const draggedDistance = dragStartTranslateY.value - currentY;\n const draggedDown = draggedDistance < 0;\n const draggedUp = draggedDistance > 0;\n const velocityPxPerSec = Math.abs(event.velocityY);\n\n // 1. Dismiss check: at lowest snap, dragged down, meets threshold.\n const isAtLowestSnap = startIndex === 0;\n const dismissThreshold = getDismissThreshold();\n const draggedDownAmount = currentY - startSnapY;\n\n if (\n dismissible &&\n isAtLowestSnap &&\n draggedDown &&\n (velocityPxPerSec >= DRAG_DISMISS_VELOCITY || draggedDownAmount >= dismissThreshold)\n ) {\n scrollLocked.value = true;\n animateToCloseWorklet();\n runOnJS(handleDismissJS)();\n return;\n }\n\n // 2. Velocity snap: fast enough → move one snap in drag direction.\n if (velocityPxPerSec >= DRAG_DISMISS_VELOCITY && (draggedUp || draggedDown)) {\n const direction = draggedUp ? 1 : -1;\n const nextIndex = clampIndex(startIndex + direction, snapCount);\n scrollLocked.value = nextIndex !== maxSnapIndex;\n animateToSnapWorklet(nextIndex);\n return;\n }\n\n // 3. Direction-aware snap: if the user dragged past 25% of the distance\n // to the next snap in their drag direction, move to that snap.\n // Otherwise snap back to the starting snap.\n const nextIndexInDirection = draggedUp\n ? Math.min(startIndex + 1, maxSnapIndex)\n : Math.max(startIndex - 1, 0);\n const nextSnapY = snapTranslateYs[nextIndexInDirection] ?? startSnapY;\n const distBetweenSnaps = Math.abs(nextSnapY - startSnapY);\n const dragDist = Math.abs(currentY - startSnapY);\n\n const targetIndex =\n distBetweenSnaps > 0 && dragDist > distBetweenSnaps * 0.25\n ? nextIndexInDirection\n : startIndex;\n\n scrollLocked.value = targetIndex !== maxSnapIndex;\n animateToSnapWorklet(targetIndex);\n })\n .onFinalize(() => {\n 'worklet';\n if (isDragActive.value) {\n isDragActive.value = false;\n }\n })\n .enabled(enableDrag);\n\n return {\n panGesture,\n panGestureRef,\n openTimeSV,\n };\n}\n\nexport { useBottomSheetDrag };\n"],"mappings":"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"}
|
|
@@ -1,10 +1,9 @@
|
|
|
1
1
|
/*! © 2026 Yahoo, Inc. UDS Mobile v0.0.0-development */
|
|
2
|
-
Object.defineProperty(exports, Symbol.toStringTag, { value:
|
|
3
|
-
|
|
4
|
-
const require_components_BottomSheet_BottomSheetInternalProvider = require(
|
|
2
|
+
Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" });
|
|
3
|
+
require("../../_virtual/_rolldown/runtime.cjs");
|
|
4
|
+
const require_components_BottomSheet_BottomSheetInternalProvider = require("./BottomSheetInternalProvider.cjs");
|
|
5
5
|
let react_native_reanimated = require("react-native-reanimated");
|
|
6
6
|
let react_native_gesture_handler = require("react-native-gesture-handler");
|
|
7
|
-
|
|
8
7
|
//#region src/components/BottomSheet/useBottomSheetScroll.ts
|
|
9
8
|
/**
|
|
10
9
|
* Low-level hook for consumers who need a custom scrollable (e.g. `FlatList`,
|
|
@@ -56,6 +55,5 @@ function useBottomSheetScroll() {
|
|
|
56
55
|
animatedProps
|
|
57
56
|
};
|
|
58
57
|
}
|
|
59
|
-
|
|
60
58
|
//#endregion
|
|
61
|
-
exports.useBottomSheetScroll = useBottomSheetScroll;
|
|
59
|
+
exports.useBottomSheetScroll = useBottomSheetScroll;
|