@webority/mobile-ui 0.9.0 → 0.10.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/lib/commonjs/components/BarChart/BarChart.js +1 -0
- package/lib/commonjs/components/BarChart/index.js +1 -0
- package/lib/commonjs/components/BarChart/scale.js +1 -0
- package/lib/commonjs/components/BottomNavigation/BottomNavigation.js +1 -1
- package/lib/commonjs/components/BottomNavigation/useScreenReaderEnabled.js +1 -0
- package/lib/commonjs/components/BottomSheet/BottomSheet.js +1 -1
- package/lib/commonjs/components/BottomSheet/index.js +1 -1
- package/lib/commonjs/components/BottomSheet/useSheetSwap.js +1 -0
- package/lib/commonjs/components/Card/Card.js +1 -1
- package/lib/commonjs/components/Composer/Composer.js +1 -0
- package/lib/commonjs/components/Composer/index.js +1 -0
- package/lib/commonjs/components/DateSeparator/DateSeparator.js +1 -0
- package/lib/commonjs/components/DateSeparator/index.js +1 -0
- package/lib/commonjs/components/FloatingActionButton/FloatingActionButton.js +1 -1
- package/lib/commonjs/components/Input/Input.js +1 -1
- package/lib/commonjs/components/ListItem/ListItem.js +1 -1
- package/lib/commonjs/components/Menu/Menu.js +1 -0
- package/lib/commonjs/components/Menu/MenuSurface.js +1 -0
- package/lib/commonjs/components/Menu/focusHost.js +1 -0
- package/lib/commonjs/components/Menu/index.js +1 -0
- package/lib/commonjs/components/Menu/menuModel.js +1 -0
- package/lib/commonjs/components/Menu/useContextMenu.js +1 -0
- package/lib/commonjs/components/Menu/webOnly.js +1 -0
- package/lib/commonjs/components/MessageBubble/MessageBubble.js +1 -0
- package/lib/commonjs/components/MessageBubble/index.js +1 -0
- package/lib/commonjs/components/MessageList/MessageList.js +1 -0
- package/lib/commonjs/components/MessageList/index.js +1 -0
- package/lib/commonjs/components/OnboardingPager/OnboardingPager.js +1 -0
- package/lib/commonjs/components/OnboardingPager/index.js +1 -0
- package/lib/commonjs/components/PaymentResult/PaymentResult.js +1 -0
- package/lib/commonjs/components/PaymentResult/index.js +1 -0
- package/lib/commonjs/components/ScannerOverlay/ScannerOverlay.js +1 -0
- package/lib/commonjs/components/ScannerOverlay/index.js +1 -0
- package/lib/commonjs/components/SearchBar/SearchBar.js +1 -1
- package/lib/commonjs/components/SearchBar/SearchPanel.js +1 -0
- package/lib/commonjs/components/SearchBar/highlight.js +1 -0
- package/lib/commonjs/components/SearchBar/index.js +1 -1
- package/lib/commonjs/components/SearchBar/useRecentSearches.js +1 -0
- package/lib/commonjs/components/Select/Select.js +1 -1
- package/lib/commonjs/components/SignaturePad/SignaturePad.js +1 -0
- package/lib/commonjs/components/SignaturePad/index.js +1 -0
- package/lib/commonjs/components/SignaturePad/signatureGeometry.js +1 -0
- package/lib/commonjs/components/SignaturePad/writePng.js +1 -0
- package/lib/commonjs/components/SignaturePad/writePng.web.js +1 -0
- package/lib/commonjs/components/Sparkline/Sparkline.js +1 -0
- package/lib/commonjs/components/Sparkline/geometry.js +1 -0
- package/lib/commonjs/components/Sparkline/index.js +1 -0
- package/lib/commonjs/components/Spinner/Spinner.js +1 -1
- package/lib/commonjs/components/StatTile/StatTile.js +1 -1
- package/lib/commonjs/components/TimePicker/TimePicker.js +1 -1
- package/lib/commonjs/components/Toast/Toast.js +1 -1
- package/lib/commonjs/components/Toast/ToastProvider.js +1 -1
- package/lib/commonjs/components/Tooltip/RichTooltipBody.js +1 -0
- package/lib/commonjs/components/Tooltip/Tooltip.js +1 -1
- package/lib/commonjs/components/Tooltip/tooltipPosition.js +1 -0
- package/lib/commonjs/components/TypingIndicator/TypingIndicator.js +1 -0
- package/lib/commonjs/components/TypingIndicator/index.js +1 -0
- package/lib/commonjs/components/WheelPicker/Wheel.js +1 -0
- package/lib/commonjs/components/WheelPicker/WheelPicker.js +1 -0
- package/lib/commonjs/components/WheelPicker/index.js +1 -0
- package/lib/commonjs/components/index.js +1 -1
- package/lib/commonjs/hooks/index.js +1 -1
- package/lib/commonjs/hooks/useRefreshControl.js +1 -0
- package/lib/commonjs/hooks/useScrollDirection.js +1 -0
- package/lib/commonjs/index.js +1 -1
- package/lib/commonjs/utils/announce.js +1 -0
- package/lib/commonjs/utils/hapticUtils.js +1 -1
- package/lib/commonjs/utils/index.js +1 -1
- package/lib/commonjs/utils/placement.js +1 -0
- package/lib/module/components/BarChart/BarChart.js +1 -0
- package/lib/module/components/BarChart/index.js +1 -0
- package/lib/module/components/BarChart/scale.js +1 -0
- package/lib/module/components/BottomNavigation/BottomNavigation.js +1 -1
- package/lib/module/components/BottomNavigation/useScreenReaderEnabled.js +1 -0
- package/lib/module/components/BottomSheet/BottomSheet.js +1 -1
- package/lib/module/components/BottomSheet/index.js +1 -1
- package/lib/module/components/BottomSheet/useSheetSwap.js +1 -0
- package/lib/module/components/Card/Card.js +1 -1
- package/lib/module/components/Composer/Composer.js +1 -0
- package/lib/module/components/Composer/index.js +1 -0
- package/lib/module/components/DateSeparator/DateSeparator.js +1 -0
- package/lib/module/components/DateSeparator/index.js +1 -0
- package/lib/module/components/FloatingActionButton/FloatingActionButton.js +1 -1
- package/lib/module/components/Input/Input.js +1 -1
- package/lib/module/components/ListItem/ListItem.js +1 -1
- package/lib/module/components/Menu/Menu.js +1 -0
- package/lib/module/components/Menu/MenuSurface.js +1 -0
- package/lib/module/components/Menu/focusHost.js +1 -0
- package/lib/module/components/Menu/index.js +1 -0
- package/lib/module/components/Menu/menuModel.js +1 -0
- package/lib/module/components/Menu/useContextMenu.js +1 -0
- package/lib/module/components/Menu/webOnly.js +1 -0
- package/lib/module/components/MessageBubble/MessageBubble.js +1 -0
- package/lib/module/components/MessageBubble/index.js +1 -0
- package/lib/module/components/MessageList/MessageList.js +1 -0
- package/lib/module/components/MessageList/index.js +1 -0
- package/lib/module/components/OnboardingPager/OnboardingPager.js +1 -0
- package/lib/module/components/OnboardingPager/index.js +1 -0
- package/lib/module/components/PaymentResult/PaymentResult.js +1 -0
- package/lib/module/components/PaymentResult/index.js +1 -0
- package/lib/module/components/ScannerOverlay/ScannerOverlay.js +1 -0
- package/lib/module/components/ScannerOverlay/index.js +1 -0
- package/lib/module/components/SearchBar/SearchBar.js +1 -1
- package/lib/module/components/SearchBar/SearchPanel.js +1 -0
- package/lib/module/components/SearchBar/highlight.js +1 -0
- package/lib/module/components/SearchBar/index.js +1 -1
- package/lib/module/components/SearchBar/useRecentSearches.js +1 -0
- package/lib/module/components/Select/Select.js +1 -1
- package/lib/module/components/SignaturePad/SignaturePad.js +1 -0
- package/lib/module/components/SignaturePad/index.js +1 -0
- package/lib/module/components/SignaturePad/signatureGeometry.js +1 -0
- package/lib/module/components/SignaturePad/writePng.js +1 -0
- package/lib/module/components/SignaturePad/writePng.web.js +1 -0
- package/lib/module/components/Sparkline/Sparkline.js +1 -0
- package/lib/module/components/Sparkline/geometry.js +1 -0
- package/lib/module/components/Sparkline/index.js +1 -0
- package/lib/module/components/Spinner/Spinner.js +1 -1
- package/lib/module/components/StatTile/StatTile.js +1 -1
- package/lib/module/components/TimePicker/TimePicker.js +1 -1
- package/lib/module/components/Toast/Toast.js +1 -1
- package/lib/module/components/Toast/ToastProvider.js +1 -1
- package/lib/module/components/Tooltip/RichTooltipBody.js +1 -0
- package/lib/module/components/Tooltip/Tooltip.js +1 -1
- package/lib/module/components/Tooltip/tooltipPosition.js +1 -0
- package/lib/module/components/TypingIndicator/TypingIndicator.js +1 -0
- package/lib/module/components/TypingIndicator/index.js +1 -0
- package/lib/module/components/WheelPicker/Wheel.js +1 -0
- package/lib/module/components/WheelPicker/WheelPicker.js +1 -0
- package/lib/module/components/WheelPicker/index.js +1 -0
- package/lib/module/components/index.js +1 -1
- package/lib/module/hooks/index.js +1 -1
- package/lib/module/hooks/useRefreshControl.js +1 -0
- package/lib/module/hooks/useScrollDirection.js +1 -0
- package/lib/module/index.js +1 -1
- package/lib/module/utils/announce.js +1 -0
- package/lib/module/utils/hapticUtils.js +1 -1
- package/lib/module/utils/index.js +1 -1
- package/lib/module/utils/placement.js +1 -0
- package/lib/typescript/commonjs/components/BarChart/BarChart.d.ts +62 -0
- package/lib/typescript/commonjs/components/BarChart/index.d.ts +3 -0
- package/lib/typescript/commonjs/components/BarChart/scale.d.ts +15 -0
- package/lib/typescript/commonjs/components/BottomNavigation/BottomNavigation.d.ts +32 -0
- package/lib/typescript/commonjs/components/BottomNavigation/index.d.ts +1 -1
- package/lib/typescript/commonjs/components/BottomNavigation/useScreenReaderEnabled.d.ts +8 -0
- package/lib/typescript/commonjs/components/BottomSheet/BottomSheet.d.ts +34 -3
- package/lib/typescript/commonjs/components/BottomSheet/index.d.ts +2 -0
- package/lib/typescript/commonjs/components/BottomSheet/useSheetSwap.d.ts +24 -0
- package/lib/typescript/commonjs/components/Card/Card.d.ts +9 -0
- package/lib/typescript/commonjs/components/Composer/Composer.d.ts +61 -0
- package/lib/typescript/commonjs/components/Composer/index.d.ts +3 -0
- package/lib/typescript/commonjs/components/DateSeparator/DateSeparator.d.ts +37 -0
- package/lib/typescript/commonjs/components/DateSeparator/index.d.ts +3 -0
- package/lib/typescript/commonjs/components/FloatingActionButton/FloatingActionButton.d.ts +3 -1
- package/lib/typescript/commonjs/components/Input/Input.d.ts +2 -2
- package/lib/typescript/commonjs/components/ListItem/ListItem.d.ts +9 -0
- package/lib/typescript/commonjs/components/Menu/Menu.d.ts +46 -0
- package/lib/typescript/commonjs/components/Menu/MenuSurface.d.ts +30 -0
- package/lib/typescript/commonjs/components/Menu/focusHost.d.ts +9 -0
- package/lib/typescript/commonjs/components/Menu/index.d.ts +5 -0
- package/lib/typescript/commonjs/components/Menu/menuModel.d.ts +68 -0
- package/lib/typescript/commonjs/components/Menu/useContextMenu.d.ts +58 -0
- package/lib/typescript/commonjs/components/Menu/webOnly.d.ts +7 -0
- package/lib/typescript/commonjs/components/MessageBubble/MessageBubble.d.ts +87 -0
- package/lib/typescript/commonjs/components/MessageBubble/index.d.ts +3 -0
- package/lib/typescript/commonjs/components/MessageList/MessageList.d.ts +68 -0
- package/lib/typescript/commonjs/components/MessageList/index.d.ts +3 -0
- package/lib/typescript/commonjs/components/OnboardingPager/OnboardingPager.d.ts +53 -0
- package/lib/typescript/commonjs/components/OnboardingPager/index.d.ts +3 -0
- package/lib/typescript/commonjs/components/PaymentResult/PaymentResult.d.ts +71 -0
- package/lib/typescript/commonjs/components/PaymentResult/index.d.ts +3 -0
- package/lib/typescript/commonjs/components/ScannerOverlay/ScannerOverlay.d.ts +74 -0
- package/lib/typescript/commonjs/components/ScannerOverlay/index.d.ts +3 -0
- package/lib/typescript/commonjs/components/SearchBar/SearchBar.d.ts +35 -0
- package/lib/typescript/commonjs/components/SearchBar/SearchPanel.d.ts +49 -0
- package/lib/typescript/commonjs/components/SearchBar/highlight.d.ts +14 -0
- package/lib/typescript/commonjs/components/SearchBar/index.d.ts +3 -0
- package/lib/typescript/commonjs/components/SearchBar/useRecentSearches.d.ts +24 -0
- package/lib/typescript/commonjs/components/Select/Select.d.ts +2 -1
- package/lib/typescript/commonjs/components/SignaturePad/SignaturePad.d.ts +94 -0
- package/lib/typescript/commonjs/components/SignaturePad/index.d.ts +4 -0
- package/lib/typescript/commonjs/components/SignaturePad/signatureGeometry.d.ts +36 -0
- package/lib/typescript/commonjs/components/SignaturePad/writePng.d.ts +7 -0
- package/lib/typescript/commonjs/components/SignaturePad/writePng.web.d.ts +3 -0
- package/lib/typescript/commonjs/components/Sparkline/Sparkline.d.ts +41 -0
- package/lib/typescript/commonjs/components/Sparkline/geometry.d.ts +20 -0
- package/lib/typescript/commonjs/components/Sparkline/index.d.ts +3 -0
- package/lib/typescript/commonjs/components/Spinner/Spinner.d.ts +7 -1
- package/lib/typescript/commonjs/components/StatTile/StatTile.d.ts +24 -1
- package/lib/typescript/commonjs/components/StatTile/index.d.ts +1 -1
- package/lib/typescript/commonjs/components/Toast/Toast.d.ts +21 -0
- package/lib/typescript/commonjs/components/Toast/ToastProvider.d.ts +21 -0
- package/lib/typescript/commonjs/components/Toast/index.d.ts +1 -1
- package/lib/typescript/commonjs/components/Tooltip/RichTooltipBody.d.ts +27 -0
- package/lib/typescript/commonjs/components/Tooltip/Tooltip.d.ts +24 -0
- package/lib/typescript/commonjs/components/Tooltip/index.d.ts +1 -1
- package/lib/typescript/commonjs/components/Tooltip/tooltipPosition.d.ts +35 -0
- package/lib/typescript/commonjs/components/TypingIndicator/TypingIndicator.d.ts +21 -0
- package/lib/typescript/commonjs/components/TypingIndicator/index.d.ts +3 -0
- package/lib/typescript/commonjs/components/WheelPicker/Wheel.d.ts +34 -0
- package/lib/typescript/commonjs/components/WheelPicker/WheelPicker.d.ts +73 -0
- package/lib/typescript/commonjs/components/WheelPicker/index.d.ts +3 -0
- package/lib/typescript/commonjs/components/index.d.ts +34 -8
- package/lib/typescript/commonjs/hooks/index.d.ts +4 -0
- package/lib/typescript/commonjs/hooks/useRefreshControl.d.ts +75 -0
- package/lib/typescript/commonjs/hooks/useScrollDirection.d.ts +21 -0
- package/lib/typescript/commonjs/index.d.ts +4 -4
- package/lib/typescript/commonjs/utils/announce.d.ts +14 -0
- package/lib/typescript/commonjs/utils/hapticUtils.d.ts +1 -1
- package/lib/typescript/commonjs/utils/index.d.ts +2 -0
- package/lib/typescript/commonjs/utils/placement.d.ts +55 -0
- package/lib/typescript/module/components/BarChart/BarChart.d.ts +62 -0
- package/lib/typescript/module/components/BarChart/index.d.ts +3 -0
- package/lib/typescript/module/components/BarChart/scale.d.ts +15 -0
- package/lib/typescript/module/components/BottomNavigation/BottomNavigation.d.ts +32 -0
- package/lib/typescript/module/components/BottomNavigation/index.d.ts +1 -1
- package/lib/typescript/module/components/BottomNavigation/useScreenReaderEnabled.d.ts +8 -0
- package/lib/typescript/module/components/BottomSheet/BottomSheet.d.ts +34 -3
- package/lib/typescript/module/components/BottomSheet/index.d.ts +2 -0
- package/lib/typescript/module/components/BottomSheet/useSheetSwap.d.ts +24 -0
- package/lib/typescript/module/components/Card/Card.d.ts +9 -0
- package/lib/typescript/module/components/Composer/Composer.d.ts +61 -0
- package/lib/typescript/module/components/Composer/index.d.ts +3 -0
- package/lib/typescript/module/components/DateSeparator/DateSeparator.d.ts +37 -0
- package/lib/typescript/module/components/DateSeparator/index.d.ts +3 -0
- package/lib/typescript/module/components/FloatingActionButton/FloatingActionButton.d.ts +3 -1
- package/lib/typescript/module/components/Input/Input.d.ts +2 -2
- package/lib/typescript/module/components/ListItem/ListItem.d.ts +9 -0
- package/lib/typescript/module/components/Menu/Menu.d.ts +46 -0
- package/lib/typescript/module/components/Menu/MenuSurface.d.ts +30 -0
- package/lib/typescript/module/components/Menu/focusHost.d.ts +9 -0
- package/lib/typescript/module/components/Menu/index.d.ts +5 -0
- package/lib/typescript/module/components/Menu/menuModel.d.ts +68 -0
- package/lib/typescript/module/components/Menu/useContextMenu.d.ts +58 -0
- package/lib/typescript/module/components/Menu/webOnly.d.ts +7 -0
- package/lib/typescript/module/components/MessageBubble/MessageBubble.d.ts +87 -0
- package/lib/typescript/module/components/MessageBubble/index.d.ts +3 -0
- package/lib/typescript/module/components/MessageList/MessageList.d.ts +68 -0
- package/lib/typescript/module/components/MessageList/index.d.ts +3 -0
- package/lib/typescript/module/components/OnboardingPager/OnboardingPager.d.ts +53 -0
- package/lib/typescript/module/components/OnboardingPager/index.d.ts +3 -0
- package/lib/typescript/module/components/PaymentResult/PaymentResult.d.ts +71 -0
- package/lib/typescript/module/components/PaymentResult/index.d.ts +3 -0
- package/lib/typescript/module/components/ScannerOverlay/ScannerOverlay.d.ts +74 -0
- package/lib/typescript/module/components/ScannerOverlay/index.d.ts +3 -0
- package/lib/typescript/module/components/SearchBar/SearchBar.d.ts +35 -0
- package/lib/typescript/module/components/SearchBar/SearchPanel.d.ts +49 -0
- package/lib/typescript/module/components/SearchBar/highlight.d.ts +14 -0
- package/lib/typescript/module/components/SearchBar/index.d.ts +3 -0
- package/lib/typescript/module/components/SearchBar/useRecentSearches.d.ts +24 -0
- package/lib/typescript/module/components/Select/Select.d.ts +2 -1
- package/lib/typescript/module/components/SignaturePad/SignaturePad.d.ts +94 -0
- package/lib/typescript/module/components/SignaturePad/index.d.ts +4 -0
- package/lib/typescript/module/components/SignaturePad/signatureGeometry.d.ts +36 -0
- package/lib/typescript/module/components/SignaturePad/writePng.d.ts +7 -0
- package/lib/typescript/module/components/SignaturePad/writePng.web.d.ts +3 -0
- package/lib/typescript/module/components/Sparkline/Sparkline.d.ts +41 -0
- package/lib/typescript/module/components/Sparkline/geometry.d.ts +20 -0
- package/lib/typescript/module/components/Sparkline/index.d.ts +3 -0
- package/lib/typescript/module/components/Spinner/Spinner.d.ts +7 -1
- package/lib/typescript/module/components/StatTile/StatTile.d.ts +24 -1
- package/lib/typescript/module/components/StatTile/index.d.ts +1 -1
- package/lib/typescript/module/components/Toast/Toast.d.ts +21 -0
- package/lib/typescript/module/components/Toast/ToastProvider.d.ts +21 -0
- package/lib/typescript/module/components/Toast/index.d.ts +1 -1
- package/lib/typescript/module/components/Tooltip/RichTooltipBody.d.ts +27 -0
- package/lib/typescript/module/components/Tooltip/Tooltip.d.ts +24 -0
- package/lib/typescript/module/components/Tooltip/index.d.ts +1 -1
- package/lib/typescript/module/components/Tooltip/tooltipPosition.d.ts +35 -0
- package/lib/typescript/module/components/TypingIndicator/TypingIndicator.d.ts +21 -0
- package/lib/typescript/module/components/TypingIndicator/index.d.ts +3 -0
- package/lib/typescript/module/components/WheelPicker/Wheel.d.ts +34 -0
- package/lib/typescript/module/components/WheelPicker/WheelPicker.d.ts +73 -0
- package/lib/typescript/module/components/WheelPicker/index.d.ts +3 -0
- package/lib/typescript/module/components/index.d.ts +34 -8
- package/lib/typescript/module/hooks/index.d.ts +4 -0
- package/lib/typescript/module/hooks/useRefreshControl.d.ts +75 -0
- package/lib/typescript/module/hooks/useScrollDirection.d.ts +21 -0
- package/lib/typescript/module/index.d.ts +4 -4
- package/lib/typescript/module/utils/announce.d.ts +14 -0
- package/lib/typescript/module/utils/hapticUtils.d.ts +1 -1
- package/lib/typescript/module/utils/index.d.ts +2 -0
- package/lib/typescript/module/utils/placement.d.ts +55 -0
- package/package.json +3 -3
|
@@ -0,0 +1 @@
|
|
|
1
|
+
"use strict";Object.defineProperty(exports,"__esModule",{value:!0}),exports.default=exports.BarChart=void 0;var _mobileCore=require("@webority/mobile-core"),_react=require("react"),_reactNative=require("react-native"),_reactNativeGestureHandler=require("react-native-gesture-handler"),_index=require("../../hooks/index.js"),_index2=require("../../theme/index.js"),_index3=require("../../utils/index.js"),_corners=require("../../utils/corners.js"),_index4=require("../Text/index.js"),_scale=require("./scale.js"),_jsxRuntime=require("react/jsx-runtime");const AUTO_VALUES_MAX_BARS=7,MAX_BAR_WIDTH=40,BAR_SHARE=.6,MIN_BAR_HEIGHT=2,VALUE_LABEL_ROOM=20,PLOT_PAD=6,HEADER_MIN_HEIGHT=48,AXIS_LABEL_MIN_WIDTH=44,CHAR_WIDTH=7,FONT_SCALE_CAP=1.2,toneColor=(e,t)=>"neutral"===t?e.colors.text.secondary:e.colors.toneText[t],safe=e=>Number.isFinite(e)?e:0,defaultFormatValue=e=>(0,_mobileCore.formatNumber)(e),defaultFormatTick=e=>(0,_mobileCore.formatCompactNumber)(e),BarChart=exports.BarChart=(0,_react.forwardRef)((e,t)=>{const{data:r,tone:i="primary",color:a,height:s=160,label:n,summary:l,formatValue:o=defaultFormatValue,formatTick:c=defaultFormatTick,showValues:u,selection:x,defaultSelection:d=null,onSelect:m,haptic:_,style:h,testID:b}=e,y=(0,_index2.useTheme)(),f=r.length,[j,p]=(0,_react.useState)(0),[v,R]=(0,_index.useControllableState)({value:x,defaultValue:d,onChange:m}),g=null!==v&&v>=0&&v<f?v:null,N=(0,_react.useRef)(g);N.current=g;const M=(0,_react.useRef)(-1),S=(0,_index3.resolveHaptic)(_,"tick"),w=(0,_react.useCallback)(()=>{S&&(0,_index3.triggerHaptic)(S)},[S]),C=u??(f>0&&f<=7),T=(0,_react.useMemo)(()=>r.map(e=>safe(e.value)),[r]),A=(0,_react.useMemo)(()=>(0,_scale.barScale)(T),[T]),V=C?20:6,L=C&&A.min<0?20:6,H=Math.max(1,s-V-L),I=(0,_react.useCallback)(e=>V+(A.max-e)/(A.max-A.min)*H,[V,A.max,A.min,H]),k=I(0),B=(0,_react.useMemo)(()=>A.ticks.map(e=>c(e)),[A.ticks,c]),D=Math.ceil(7*Math.max(...B.map(e=>e.length),1)*1.2),E=f>0?j/f:0,O=Math.max(1,Math.ceil(44/Math.max(1,E||44))),$=(0,_react.useCallback)(e=>{const t=r[e];return t.accessibilityLabel??`${t.label}, ${o(T[e])}`},[r,o,T]),q=(0,_react.useMemo)(()=>{let e=-1;return T.forEach((t,r)=>{(-1===e||t>T[e])&&(e=r)}),e},[T]),F=l??(q>=0?`Highest: ${r[q].label}, ${o(T[q])}`:""),G=(0,_react.useRef)({fire:w,setSelected:R,count:f,plotWidth:j});G.current={fire:w,setSelected:R,count:f,plotWidth:j};const W=(0,_react.useMemo)(()=>{const indexAt=e=>{const{count:t,plotWidth:r}=G.current;return 0===t||r<=0||!Number.isFinite(e)?-1:Math.min(t-1,Math.max(0,Math.floor(e/r*t)))},scrubTo=e=>{const t=indexAt(e);t<0||t===M.current||(M.current=t,G.current.fire(),G.current.setSelected(t))},e=_reactNativeGestureHandler.Gesture.Pan().runOnJS(!0).activeOffsetX([-8,8]).failOffsetY([-12,12]).onStart(e=>{M.current=N.current??-1,scrubTo(e.x)}).onUpdate(e=>scrubTo(e.x)).withTestId(b?`${b}-pan`:"bar-chart-pan"),t=_reactNativeGestureHandler.Gesture.Tap().runOnJS(!0).onEnd((e,t)=>{if(!t)return;const r=indexAt(e.x);r<0||(G.current.fire(),M.current=r,G.current.setSelected(r===N.current?null:r))}).withTestId(b?`${b}-tap`:"bar-chart-tap");return _reactNativeGestureHandler.Gesture.Race(e,t)},[b]),P=(0,_react.useCallback)(e=>{if(0===f)return;const t=N.current,r="increment"===e.nativeEvent.actionName?null===t?0:Math.min(f-1,t+1):null===t?f-1:Math.max(0,t-1);r!==t&&(w(),R(r))},[f,w,R]),U=(0,_react.useCallback)(e=>{const t=Math.round(e.nativeEvent.layout.width);p(e=>e===t?e:t)},[]),X=a??toneColor(y,i),z=y.radius.xs,J=n??"Bar chart",Y=0===f?`${J}, no data`:F?`${J}, ${F}`:J,K=null===g?F:$(g),Q=T.map((e,t)=>{const r=Math.min(40,Math.max(4,.6*E)),i=I(e),a=e>=0?i:k,n=0===e?0:Math.max(2,Math.abs(i-k)),l=null!==g&&g!==t;return(0,_jsxRuntime.jsxs)(_reactNative.View,{style:[styles.slot,{height:s}],children:[j>0&&n>0?(0,_jsxRuntime.jsx)(_reactNative.View,{testID:b?`${b}-bar-${t}`:void 0,style:{position:"absolute",left:(E-r)/2,top:a,width:r,height:n,backgroundColor:X,opacity:l?.4:1,..._corners.smoothCorners,...e>=0?{borderTopLeftRadius:z,borderTopRightRadius:z}:{borderBottomLeftRadius:z,borderBottomRightRadius:z}}}):null,C&&j>0?(0,_jsxRuntime.jsx)(_index4.Text,{variant:"caption",color:"secondary",align:"center",numberOfLines:1,maxFontSizeMultiplier:1.2,style:{position:"absolute",left:0,right:0,top:e>=0?i-20+2:i+2},children:c(e)}):null]},t)});return 0===f?(0,_jsxRuntime.jsx)(_reactNative.View,{ref:t,accessible:!0,accessibilityRole:"image",accessibilityLabel:Y,testID:b,style:[styles.root,h],children:(0,_jsxRuntime.jsx)(_index4.Text,{variant:"bodySmall",color:"secondary",children:"No data"})}):(0,_jsxRuntime.jsxs)(_reactNative.View,{ref:t,accessible:!0,accessibilityRole:"adjustable",accessibilityLabel:Y,accessibilityValue:{min:0,max:f-1,now:g??0,text:K},accessibilityActions:[{name:"increment"},{name:"decrement"}],onAccessibilityAction:P,testID:b,style:[styles.root,h],children:[(0,_jsxRuntime.jsx)(_reactNative.View,{style:[styles.header,{minHeight:48,marginBottom:y.spacing.sm}],children:null===g?F?(0,_jsxRuntime.jsx)(_index4.Text,{variant:"bodySmall",color:"secondary",children:F}):null:(0,_jsxRuntime.jsxs)(_jsxRuntime.Fragment,{children:[(0,_jsxRuntime.jsx)(_index4.Text,{variant:"caption",color:"secondary",numberOfLines:1,children:r[g].label}),(0,_jsxRuntime.jsx)(_index4.Text,{variant:"h3",numberOfLines:1,testID:b?`${b}-callout`:void 0,children:o(T[g])})]})}),(0,_jsxRuntime.jsxs)(_reactNative.View,{style:styles.body,children:[(0,_jsxRuntime.jsx)(_reactNative.View,{style:{width:D,height:s},children:A.ticks.map((e,t)=>(0,_jsxRuntime.jsx)(_index4.Text,{variant:"caption",color:"tertiary",align:"right",numberOfLines:1,maxFontSizeMultiplier:1.2,style:{position:"absolute",right:y.spacing.xs,left:0,top:I(e)-8},children:B[t]},e))}),(0,_jsxRuntime.jsxs)(_reactNative.View,{style:styles.plotColumn,children:[(0,_jsxRuntime.jsx)(_reactNativeGestureHandler.GestureDetector,{gesture:W,children:(0,_jsxRuntime.jsxs)(_reactNative.View,{style:{height:s},onLayout:U,testID:b?`${b}-plot`:void 0,children:[A.ticks.map(e=>(0,_jsxRuntime.jsx)(_reactNative.View,{pointerEvents:"none",style:{position:"absolute",left:0,right:0,top:I(e)-(0===e?.75:_reactNative.StyleSheet.hairlineWidth),height:0===e?1.5:2*_reactNative.StyleSheet.hairlineWidth,backgroundColor:0===e?y.colors.text.tertiary:y.colors.border.secondary}},e)),(0,_jsxRuntime.jsx)(_reactNative.View,{style:[styles.slots,{height:s}],children:Q})]})}),(0,_jsxRuntime.jsx)(_reactNative.View,{style:styles.axis,children:r.map((e,t)=>(0,_jsxRuntime.jsx)(_reactNative.View,{style:styles.axisSlot,children:t%O===0?(0,_jsxRuntime.jsx)(_index4.Text,{variant:"caption",color:g===t?"primary":"tertiary",weight:g===t?"semibold":void 0,align:"center",numberOfLines:1,maxFontSizeMultiplier:1.2,style:E>0?{width:E*O}:void 0,children:e.axisLabel??e.label}):null},t))})]})]})]})});BarChart.displayName="BarChart";const styles=_reactNative.StyleSheet.create({root:{alignSelf:"stretch"},header:{justifyContent:"center"},body:{flexDirection:"row"},plotColumn:{flex:1},slots:{flexDirection:"row"},slot:{flex:1},axis:{flexDirection:"row"},axisSlot:{flex:1,alignItems:"center",overflow:"visible"}});var _default=exports.default=BarChart;
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
"use strict";Object.defineProperty(exports,"__esModule",{value:!0}),Object.defineProperty(exports,"BarChart",{enumerable:!0,get:function(){return _BarChart.BarChart}}),Object.defineProperty(exports,"default",{enumerable:!0,get:function(){return _BarChart.default}});var _BarChart=_interopRequireWildcard(require("./BarChart.js"));function _interopRequireWildcard(e,r){if("function"==typeof WeakMap)var t=new WeakMap,n=new WeakMap;return(_interopRequireWildcard=function(e,r){if(!r&&e&&e.__esModule)return e;var a,o,u={__proto__:null,default:e};if(null===e||"object"!=typeof e&&"function"!=typeof e)return u;if(a=r?n:t){if(a.has(e))return a.get(e);a.set(e,u)}for(const r in e)"default"!==r&&{}.hasOwnProperty.call(e,r)&&((o=(a=Object.defineProperty)&&Object.getOwnPropertyDescriptor(e,r))&&(o.get||o.set)?a(u,r,o):u[r]=e[r]);return u})(e,r)}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
"use strict";Object.defineProperty(exports,"__esModule",{value:!0}),exports.barScale=void 0;const MAX_TICKS=9,niceStep=e=>{const t=10**Math.floor(Math.log10(e)),a=e/t;return(a<=1?1:a<=2?2:a<=5?5:10)*t},clean=e=>Number(e.toPrecision(12)),barScale=(e,t=4)=>{const a=e.filter(e=>Number.isFinite(e)),r=Math.min(0,...a);let c=Math.max(0,...a);c===r&&(c=r+1);const o=niceStep((c-r)/Math.max(1,t)),n=clean(Math.floor(r/o)*o),l=clean(Math.ceil(c/o)*o),i=[];for(let e=0;e<9;e+=1){const t=clean(n+e*o);if(t>l)break;i.push(t)}return{min:n,max:l,ticks:i}};exports.barScale=barScale;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
"use strict";Object.defineProperty(exports,"__esModule",{value:!0}),exports.default=exports.BottomNavigation=void 0;var _react=_interopRequireWildcard(require("react")),_reactNative=require("react-native"),_reactNativeSafeAreaContext=require("react-native-safe-area-context"),_index=require("../../theme/index.js"),_index2=require("../../utils/index.js"),_corners=require("../../utils/corners.js"),_shadows=require("../../utils/shadows.js"),_index3=require("../AppIcon/index.js"),_jsxRuntime=require("react/jsx-runtime");function _interopRequireWildcard(e,t){if("function"==typeof WeakMap)var i=new WeakMap,r=new WeakMap;return(_interopRequireWildcard=function(e,t){if(!t&&e&&e.__esModule)return e;var n,a,o={__proto__:null,default:e};if(null===e||"object"!=typeof e&&"function"!=typeof e)return o;if(n=t?r:i){if(n.has(e))return n.get(e);n.set(e,o)}for(const t in e)"default"!==t&&{}.hasOwnProperty.call(e,t)&&((a=(n=Object.defineProperty)&&Object.getOwnPropertyDescriptor(e,t))&&(a.get||a.set)?n(o,t,a):o[t]=e[t]);return o})(e,t)}const DEFAULT_ICON_SIZE=18,DEFAULT_LABEL_MAX_FONT_SCALE=1.2,ICON_WRAP_AIR=4,PILL_AIR=8,DEFAULT_PILL_MAX_WIDTH=64,TILE_MAX_WIDTH=96,DEFAULT_PILL_INSET=16,DEFAULT_UNDERLINE_HEIGHT=3,DEFAULT_FLOATING_MARGIN=16,DEFAULT_FLOATING_RADIUS=28,DEFAULT_BUBBLE_SIZE=48,DEFAULT_BUBBLE_LIFT=14,DEFAULT_CENTER_SIZE=48,DEFAULT_CENTER_ICON_SIZE=24,CENTER_KEY="__webority_center_action__",TAB_PADDING_VERTICAL=6,BAR_PADDING_HORIZONTAL=4,BAR_PADDING_TOP=6,BAR_PADDING_TOP_BUBBLE=8,FLOATING_BAR_PADDING_VERTICAL=6,FLOATING_BAR_PADDING_HORIZONTAL=8,EXPANDED_FLEX=1.5,SOLID_INACTIVE_OPACITY=.7,TILE_INSET=2,TILE_LABEL_GAP=2,formatBadge=e=>null==e||!1===e?null:!0===e||"·"===e?{text:"",isDot:!0}:"number"==typeof e?e<=0?null:{text:e>99?"99+":String(e),isDot:!1}:"string"==typeof e?0===e.length?null:{text:e,isDot:!1}:null,badgeAccessibilitySuffix=e=>null==e||!1===e?"":"number"==typeof e?e>0?`, ${e} unread`:"":!0===e||"·"===e?", new updates":"string"==typeof e&&e.length>0?`, ${e}`:"",BottomNavigation=exports.BottomNavigation=(0,_react.forwardRef)((e,t)=>{const{tabs:i,centerAction:r,activeTab:n,onChange:a,haptic:o="selection",showLabels:l=!0,variant:s="pill",indicatorPosition:d="bottom",radius:c,indicatorRadius:u="auto",elevation:h,iconSize:p,marginHorizontal:_,marginVertical:g,paddingHorizontal:m,paddingVertical:b,border:f,style:x,indicatorStyle:y,labelStyle:v,labelMaxFontScale:R,testID:A}=e,N=(0,_index.useTheme)(),I=(0,_reactNativeSafeAreaContext.useSafeAreaInsets)(),j=(0,_react.useMemo)(()=>buildStyles(N),[N]),E=N.components.bottomNavigation,w=p??E?.iconSize??18,T=E?.pillHeight??w+4+8,L=E?.pillMaxWidth??64,S=E?.pillInset??16,D=E?.floatingMargin??16,C=E?.floatingRadius??28,B=E?.bubbleSize??48,P=E?.bubbleLift??14,M="tile"===s,V="floating"===s||M,k="bubble"===s,H="expand"===s,F="solid"===s,W="pill"===s||V||F,z=Math.max(0,i.findIndex(e=>e.key===n)),[O,U]=_react.default.useState(0),[q,G]=_react.default.useState(0),X=r?Math.ceil(i.length/2):i.length,$=i.length+(r?1:0),[Z,Y]=_react.default.useState({width:0,height:0}),K=r?.size??48,J=void 0!==r?.gap,Q=Math.max(0,r?.gap??0),ee=J?(Z.width||K)+2*Q:0,te=J?i.length>0?Math.max(0,O-ee)/i.length:0:$>0?O/$:0,ie=J?ee:te,re=(0,_react.useRef)((0,_index.createAnimatedValue)(z)).current,ne=(0,_react.useRef)({}),ae=(0,_react.useRef)({});i.forEach(e=>{ne.current[e.key]||(ne.current[e.key]=new _reactNative.Animated.Value(1)),ae.current[e.key]||(ae.current[e.key]=(0,_index.createAnimatedValue)(e.key===n?1:0))});const oe=te>0?M?Math.min(te-4,96):Math.min(te-S,L):0,le=te>0?(te-oe)/2:0,se=te>0?(te-B)/2:0,hasLabel=e=>l&&!1!==e.showLabel&&e.label.trim().length>0,de=i[z],ce=de&&!hasLabel(de)&&q>0?q/2:6+(w+4)/2,ue=ce-P-B/2,he=Math.max(0,q-4),pe=M?2:ce-T/2,_e=(0,_react.useRef)(z);(0,_react.useEffect)(()=>{if(_e.current===z)return;_e.current=z;const e=_reactNative.Animated.spring(re,{toValue:z,tension:120,friction:14,useNativeDriver:!0});return e.start(),()=>e.stop()},[z,re]);const ge=Math.max(1,i.length-1),me=(0,_react.useMemo)(()=>{const e=[],t=[];for(let i=0;i<=ge;i++)e.push(i),t.push(i<X?i*te:i*te+ie);return re.interpolate({inputRange:e,outputRange:t})},[re,ge,X,te,ie]),be=i.map(e=>e.key).join(" "),fe=k||H;(0,_react.useEffect)(()=>{const e=be.split(" ").flatMap(e=>{const t=e===n?1:0,i=ae.current[e];return i?fe?[_reactNative.Animated.spring(i,{toValue:t,tension:140,friction:13,useNativeDriver:!1})]:(i.setValue(t),[]):[]});if(0===e.length)return;const t=_reactNative.Animated.parallel(e);return t.start(),()=>t.stop()},[n,be,fe]);const popIcon=e=>{_reactNative.Animated.sequence([_reactNative.Animated.timing(e,{toValue:1.15,duration:120,useNativeDriver:!0}),_reactNative.Animated.spring(e,{toValue:1,tension:200,friction:8,useNativeDriver:!0})]).start()},xe=(0,_react.useRef)(new _reactNative.Animated.Value(1)).current,{colors:ye}=N,ve=F?ye.primary:ye.background.elevated,Re=F?ye.onPrimary:ye.primary,Ae=F?ye.onPrimary:M?ye.text.primary:ye.text.tertiary,Ne=F?ye.onPrimary:ye.primaryMuted,Ie=F?ye.primary:k?ye.onPrimary:Re,je=_??D,Ee=g??(V?D:0),we=Ee>0,Te=b??(V?6:k?8:6),Le=m??(V?8:4),Se=we?Te:Math.max(Te,I.bottom),De=we?Math.max(Ee,I.bottom):0,Ce="full"===c,Be=V?q+2*Te+2*_reactNative.StyleSheet.hairlineWidth:q+Te+Se,Pe=Ce?q>0?Be/2:N.radius.full:c??E?.borderRadius??(M?N.radius.full:V?C:0),Me=void 0!==c||void 0!==E?.borderRadius,activeBgRadius=(e,t)=>"number"==typeof u?Math.max(0,Math.min(u,e/2)):"auto"===u&&Me?Math.min(Pe,e/2):t,Ve="underline"===s?Math.max(Le,Ce&&0===q?0:Pe):Le,ke=h??"none",He=N.shadows[ke],Fe="none"===ke?null:(0,_shadows.supportsBoxShadow)()?{boxShadow:(0,_shadows.toBoxShadow)(He)}:He,We=f?_reactNative.StyleSheet.hairlineWidth:0,ze=F?ye.primary:ye.border.primary,Oe=r?.lift??0,Ue=Te+We,qe=r&&q>0?Math.max(0,(Z.height||K)/2+Oe-q/2-Ue):0,Ge=r?(0,_jsxRuntime.jsx)(_reactNative.View,{style:[j.centerCell,J?{flex:0,marginHorizontal:Q}:null],pointerEvents:"box-none",children:(0,_jsxRuntime.jsx)(_reactNative.Pressable,{onPress:()=>{if(!r)return;const e=r.haptic??o;!1!==e&&(0,_index2.triggerHaptic)(e),popIcon(xe),r.onPress()},onLayout:e=>{const{width:t,height:i}=e.nativeEvent.layout;Y(e=>e.width===t&&e.height===i?e:{width:t,height:i})},accessibilityRole:"button",accessibilityLabel:r.label,hitSlop:{top:6,bottom:6,left:6,right:6},style:({pressed:e})=>[{top:-Oe},e?{opacity:.85}:null],testID:r.testID??(A?`${A}-center`:void 0),children:r.content?(0,_jsxRuntime.jsx)(_reactNative.Animated.View,{style:{transform:[{scale:xe}]},children:r.content}):(0,_jsxRuntime.jsx)(_reactNative.View,{style:[j.centerCircle,{width:K,height:K,borderRadius:K/2,..._corners.smoothCorners,backgroundColor:r.color??ye.primary}],children:(0,_jsxRuntime.jsx)(_reactNative.Animated.View,{style:{transform:[{scale:xe}]},children:(0,_index3.renderSlotIcon)(r.icon??"add",{color:r.iconColor??ye.onPrimary,size:r.iconSize??24,disabled:!1})})})})},CENTER_KEY):null,Xe=(0,_jsxRuntime.jsxs)(_reactNative.View,{style:j.tabRow,onLayout:e=>{const{width:t,height:i}=e.nativeEvent.layout;U(t),G(i)},children:[W&&oe>0&&(!M||he>0)?(0,_jsxRuntime.jsx)(_reactNative.Animated.View,{pointerEvents:"none",style:[j.pill,{width:oe,height:M?he:T,left:le,top:pe,backgroundColor:Ne,borderRadius:M?activeBgRadius(he,he/2):activeBgRadius(T,N.radius.full),..._corners.smoothCorners,transform:[{translateX:me}]},y]}):null,k&&te>0?(0,_jsxRuntime.jsx)(_reactNative.Animated.View,{pointerEvents:"none",style:[j.bubble,N.shadows.md,{width:B,height:B,borderRadius:B/2,..._corners.smoothCorners,left:se,top:ue,backgroundColor:ye.primary,borderColor:ye.background.elevated,transform:[{translateX:me}]},y]}):null,($e=i.map(e=>{const t=e.key===n,i=t?Re:Ae,r=t?Ie:Ae,l="string"==typeof e.icon?{name:e.icon,variant:"bold"}:e.icon,s=t?e.activeIcon??l:e.icon,d=ne.current[e.key],c=ae.current[e.key],u=formatBadge(e.badge??null),h=badgeAccessibilitySuffix(e.badge??null),p=F&&!t?.7:1,_=k&&t||F?ye.primary:ye.background.elevated,g=hasLabel(e),m=g&&(!H||t),b=(0,_jsxRuntime.jsxs)(_reactNative.Animated.View,{style:[j.iconWrap,{width:w+4,height:w+4,opacity:p,transform:[{scale:d}]}],children:[(0,_index3.renderSlotIcon)(s,{color:r,size:w,focused:t,disabled:!1}),u?(0,_jsxRuntime.jsx)(_reactNative.View,{style:[u.isDot?j.badgeDot:j.badgePill,{backgroundColor:ye.error,borderColor:_}],children:u.isDot?null:(0,_jsxRuntime.jsx)(_reactNative.Text,{style:[j.badgeText,{color:ye.onError}],numberOfLines:1,children:u.text})}):null]}),f=k?(0,_jsxRuntime.jsx)(_reactNative.Animated.View,{style:{top:c.interpolate({inputRange:[0,1],outputRange:[0,-P]})},children:b}):b,x=m?(0,_jsxRuntime.jsx)(_reactNative.Animated.Text,{numberOfLines:1,maxFontSizeMultiplier:R??N.maxFontSizeMultiplier??1.2,style:[j.label,H?j.labelInline:null,{color:i,opacity:H?c:p,fontWeight:t?N.typography.fontWeight.semibold:N.typography.fontWeight.normal},v],children:e.label}):null,I=(0,_jsxRuntime.jsx)(_reactNative.Pressable,{onPress:()=>(e=>{e.key!==n&&!1!==o&&(0,_index2.triggerHaptic)(o);const t=ne.current[e.key];t&&popIcon(t),a(e.key)})(e),accessibilityRole:"tab",accessibilityState:{selected:t},"aria-selected":t,accessibilityLabel:`${e.label}${h}`,accessibilityHint:`Switches to ${e.label}`,hitSlop:{top:6,bottom:6,left:6,right:6},style:({pressed:e})=>[j.tab,M?j.tabTile:null,e?{opacity:.85}:null],testID:A?`${A}-tab-${e.key}`:void 0,children:H?(0,_jsxRuntime.jsxs)(_reactNative.View,{style:[j.expandPill,{height:T,paddingHorizontal:t&&g?N.spacing.md:Math.max(0,(T-(w+4))/2)}],children:[(0,_jsxRuntime.jsx)(_reactNative.View,{pointerEvents:"none",style:[j.expandFill,{borderRadius:activeBgRadius(T,T/2),..._corners.smoothCorners,backgroundColor:t?ye.primaryMuted:"transparent"},t?y:null]}),f,x]}):(0,_jsxRuntime.jsxs)(_jsxRuntime.Fragment,{children:[f,x]})},e.key);return H?(0,_jsxRuntime.jsx)(_reactNative.Animated.View,{style:{flex:c.interpolate({inputRange:[0,1],outputRange:[1,g?1.5:1]})},children:I},e.key):I}),Ge?[...$e.slice(0,X),Ge,...$e.slice(X)]:$e),"underline"===s&&te>0?(0,_jsxRuntime.jsx)(_reactNative.Animated.View,{pointerEvents:"none",style:[j.underline,"top"===d?j.underlineTop:j.underlineBottom,"top"===d?{top:-Te}:{bottom:-Te},{width:te,height:E?.underlineHeight??3,backgroundColor:ye.primary,transform:[{translateX:me}]},y]}):null]});var $e;return(0,_jsxRuntime.jsx)(_reactNative.View,{ref:t,testID:A,accessibilityRole:"tablist",style:[j.outer,{paddingHorizontal:je,paddingTop:Math.max(Ee,qe),paddingBottom:De},x],children:(0,_jsxRuntime.jsx)(_reactNative.View,{style:[V?j.floatingBar:j.dockedBar,Fe,{backgroundColor:ve,borderColor:ze,borderRadius:Pe,..._corners.smoothCorners},V?{borderWidth:We,paddingHorizontal:Le,paddingVertical:Te}:{borderTopWidth:We,borderBottomWidth:We,borderLeftWidth:We,borderRightWidth:We,paddingHorizontal:Ve,paddingTop:Te,paddingBottom:Se}],children:Xe})})});BottomNavigation.displayName="BottomNavigation";const buildStyles=e=>_reactNative.StyleSheet.create({outer:{backgroundColor:"transparent"},dockedBar:{paddingHorizontal:4},floatingBar:{paddingVertical:6,paddingHorizontal:8},tabRow:{flexDirection:"row",alignItems:"stretch",position:"relative"},tab:{flex:1,minHeight:44,alignItems:"center",justifyContent:"center",paddingVertical:6,gap:4},tabTile:{paddingVertical:8,gap:2},centerCell:{flex:1,minHeight:44,alignItems:"center",justifyContent:"center"},centerCircle:{alignItems:"center",justifyContent:"center"},iconWrap:{alignItems:"center",justifyContent:"center",position:"relative"},label:{fontSize:e.typography.fontSize.xs,lineHeight:e.typography.fontSize.xs*e.typography.lineHeight.tight,textAlign:"center",includeFontPadding:!1},labelInline:{fontSize:e.typography.fontSize.sm,lineHeight:e.typography.fontSize.sm*e.typography.lineHeight.tight,flexShrink:1,includeFontPadding:!1},expandPill:{flexDirection:"row",alignItems:"center",justifyContent:"center",gap:e.spacing.xs},expandFill:{position:"absolute",top:0,right:0,bottom:0,left:0,overflow:"hidden"},pill:{position:"absolute",left:0},bubble:{position:"absolute",left:0,borderWidth:3},underline:{position:"absolute",left:0,height:3},underlineBottom:{borderTopLeftRadius:2,borderTopRightRadius:2,..._corners.smoothCorners},underlineTop:{borderBottomLeftRadius:2,borderBottomRightRadius:2,..._corners.smoothCorners},badgePill:{position:"absolute",top:-4,right:-8,minWidth:18,height:18,borderRadius:9,..._corners.smoothCorners,paddingHorizontal:4,paddingVertical:2,alignItems:"center",justifyContent:"center",borderWidth:1.5},badgeDot:{position:"absolute",top:-2,right:-2,width:10,height:10,borderRadius:5,..._corners.smoothCorners,borderWidth:1.5},badgeText:{fontSize:10,fontWeight:"700",lineHeight:12,textAlign:"center",includeFontPadding:!1}});var _default=exports.default=BottomNavigation;
|
|
1
|
+
"use strict";Object.defineProperty(exports,"__esModule",{value:!0}),exports.default=exports.BottomNavigation=void 0;var _react=_interopRequireWildcard(require("react")),_reactNative=require("react-native"),_reactNativeSafeAreaContext=require("react-native-safe-area-context"),_useReducedMotion=require("../../hooks/useReducedMotion.js"),_index=require("../../theme/index.js"),_index2=require("../../utils/index.js"),_corners=require("../../utils/corners.js"),_shadows=require("../../utils/shadows.js"),_index3=require("../AppIcon/index.js"),_useScreenReaderEnabled=require("./useScreenReaderEnabled.js"),_jsxRuntime=require("react/jsx-runtime");function _interopRequireWildcard(e,t){if("function"==typeof WeakMap)var i=new WeakMap,n=new WeakMap;return(_interopRequireWildcard=function(e,t){if(!t&&e&&e.__esModule)return e;var r,a,o={__proto__:null,default:e};if(null===e||"object"!=typeof e&&"function"!=typeof e)return o;if(r=t?n:i){if(r.has(e))return r.get(e);r.set(e,o)}for(const t in e)"default"!==t&&{}.hasOwnProperty.call(e,t)&&((a=(r=Object.defineProperty)&&Object.getOwnPropertyDescriptor(e,t))&&(a.get||a.set)?r(o,t,a):o[t]=e[t]);return o})(e,t)}const DEFAULT_ICON_SIZE=18,DEFAULT_LABEL_MAX_FONT_SCALE=1.2,ICON_WRAP_AIR=4,PILL_AIR=8,DEFAULT_PILL_MAX_WIDTH=64,TILE_MAX_WIDTH=96,DEFAULT_PILL_INSET=16,DEFAULT_UNDERLINE_HEIGHT=3,DEFAULT_FLOATING_MARGIN=16,DEFAULT_FLOATING_RADIUS=28,DEFAULT_BUBBLE_SIZE=48,DEFAULT_BUBBLE_LIFT=14,DEFAULT_CENTER_SIZE=48,DEFAULT_CENTER_ICON_SIZE=24,CENTER_KEY="__webority_center_action__",TAB_PADDING_VERTICAL=6,BAR_PADDING_HORIZONTAL=4,BAR_PADDING_TOP=6,BAR_PADDING_TOP_BUBBLE=8,FLOATING_BAR_PADDING_VERTICAL=6,FLOATING_BAR_PADDING_HORIZONTAL=8,EXPANDED_FLEX=1.5,SOLID_INACTIVE_OPACITY=.7,TILE_INSET=2,TILE_LABEL_GAP=2,formatBadge=e=>null==e||!1===e?null:!0===e||"·"===e?{text:"",isDot:!0}:"number"==typeof e?e<=0?null:{text:e>99?"99+":String(e),isDot:!1}:"string"==typeof e?0===e.length?null:{text:e,isDot:!1}:null,badgeAccessibilitySuffix=e=>null==e||!1===e?"":"number"==typeof e?e>0?`, ${e} unread`:"":!0===e||"·"===e?", new updates":"string"==typeof e&&e.length>0?`, ${e}`:"",BottomNavigation=exports.BottomNavigation=(0,_react.forwardRef)((e,t)=>{const{tabs:i,centerAction:n,activeTab:r,onChange:a,haptic:o="selection",showLabels:l=!0,variant:s="pill",indicatorPosition:c="bottom",radius:d,indicatorRadius:u="auto",elevation:_,iconSize:h,marginHorizontal:p,marginVertical:g,paddingHorizontal:m,paddingVertical:b,border:f,minimizeOnScroll:y=!1,scrollDirection:x="idle",accessory:R,style:v,indicatorStyle:N,labelStyle:A,labelMaxFontScale:I,testID:j}=e,E=(0,_index.useTheme)(),S=(0,_reactNativeSafeAreaContext.useSafeAreaInsets)(),w=(0,_react.useMemo)(()=>buildStyles(E),[E]),L=E.components.bottomNavigation,T=h??L?.iconSize??18,D=L?.pillHeight??T+4+8,C=L?.pillMaxWidth??64,M=L?.pillInset??16,B=L?.floatingMargin??16,P=L?.floatingRadius??28,k=L?.bubbleSize??48,V=L?.bubbleLift??14,z=(0,_useReducedMotion.useReducedMotion)(),H=(0,_useScreenReaderEnabled.useScreenReaderEnabled)(y),[F,W]=_react.default.useState(null);(0,_react.useEffect)(()=>{null!==F&&F!==x&&W(null)},[F,x]);const O=y&&!H&&"down"===x&&null===F,[U,q]=_react.default.useState(O);(0,_react.useEffect)(()=>{U!==O&&(z||"web"===_reactNative.Platform.OS||_reactNative.LayoutAnimation.configureNext(_reactNative.LayoutAnimation.Presets.easeInEaseOut),q(O))},[U,O,z]);const G="function"==typeof R?R({minimized:U}):R,$=null!=G&&!1!==G,X=U&&$,[Z,Y]=_react.default.useState(0),K=$&&!X?Z+E.spacing.xs:0,J="tile"===s,Q="floating"===s||J,ee="bubble"===s,te="expand"===s,ie="solid"===s,ne="pill"===s||Q||ie,re=Math.max(0,i.findIndex(e=>e.key===r)),[ae,oe]=_react.default.useState(0),[le,se]=_react.default.useState(0),ce=n?Math.ceil(i.length/2):i.length,de=i.length+(n?1:0),[ue,_e]=_react.default.useState({width:0,height:0}),he=n?.size??48,pe=void 0!==n?.gap,ge=Math.max(0,n?.gap??0),me=pe?(ue.width||he)+2*ge:0,be=pe?i.length>0?Math.max(0,ae-me)/i.length:0:de>0?ae/de:0,fe=pe?me:be,ye=(0,_react.useRef)((0,_index.createAnimatedValue)(re)).current,xe=(0,_react.useRef)({}),Re=(0,_react.useRef)({});i.forEach(e=>{xe.current[e.key]||(xe.current[e.key]=new _reactNative.Animated.Value(1)),Re.current[e.key]||(Re.current[e.key]=(0,_index.createAnimatedValue)(e.key===r?1:0))});const ve=be>0?J?Math.min(be-4,96):Math.min(be-M,C):0,Ne=be>0?(be-ve)/2:0,Ae=be>0?(be-k)/2:0,hasLabel=e=>l&&!U&&!1!==e.showLabel&&e.label.trim().length>0,Ie=i[re],je=Ie&&!hasLabel(Ie)&&le>0?le/2:6+(T+4)/2,Ee=je-V-k/2,Se=Math.max(0,le-4),we=J?2:je-D/2,Le=(0,_react.useRef)(re);(0,_react.useEffect)(()=>{if(Le.current===re)return;Le.current=re;const e=_reactNative.Animated.spring(ye,{toValue:re,tension:120,friction:14,useNativeDriver:!0});return e.start(),()=>e.stop()},[re,ye]);const Te=Math.max(1,i.length-1),De=(0,_react.useMemo)(()=>{const e=[],t=[];for(let i=0;i<=Te;i++)e.push(i),t.push(i<ce?i*be:i*be+fe);return ye.interpolate({inputRange:e,outputRange:t})},[ye,Te,ce,be,fe]),Ce=i.map(e=>e.key).join(" "),Me=ee||te;(0,_react.useEffect)(()=>{const e=Ce.split(" ").flatMap(e=>{const t=e===r?1:0,i=Re.current[e];return i?Me?[_reactNative.Animated.spring(i,{toValue:t,tension:140,friction:13,useNativeDriver:!1})]:(i.setValue(t),[]):[]});if(0===e.length)return;const t=_reactNative.Animated.parallel(e);return t.start(),()=>t.stop()},[r,Ce,Me]);const popIcon=e=>{_reactNative.Animated.sequence([_reactNative.Animated.timing(e,{toValue:1.15,duration:120,useNativeDriver:!0}),_reactNative.Animated.spring(e,{toValue:1,tension:200,friction:8,useNativeDriver:!0})]).start()},Be=(0,_react.useRef)(new _reactNative.Animated.Value(1)).current,{colors:Pe}=E,ke=ie?Pe.primary:Pe.background.elevated,Ve=ie?Pe.onPrimary:Pe.primary,ze=ie?Pe.onPrimary:J?Pe.text.primary:Pe.text.tertiary,He=ie?Pe.onPrimary:Pe.primaryMuted,Fe=ie?Pe.primary:ee?Pe.onPrimary:Ve,We=p??B,Oe=g??(Q?B:0),Ue=Oe>0,qe=b??(Q?6:ee?8:6),Ge=m??(Q?8:4),$e=Ue?qe:Math.max(qe,S.bottom),Xe=Ue?Math.max(Oe,S.bottom):0,Ze="full"===d,Ye=Q?le+K+2*qe+2*_reactNative.StyleSheet.hairlineWidth:le+K+qe+$e,Ke=Ze?le>0?Ye/2:E.radius.full:d??L?.borderRadius??(J?E.radius.full:Q?P:0),Je=void 0!==d||void 0!==L?.borderRadius,activeBgRadius=(e,t)=>"number"==typeof u?Math.max(0,Math.min(u,e/2)):"auto"===u&&Je?Math.min(Ke,e/2):t,Qe="underline"===s?Math.max(Ge,Ze&&0===le?0:Ke):Ge,et=_??"none",tt=E.shadows[et],it="none"===et?null:(0,_shadows.supportsBoxShadow)()?{boxShadow:(0,_shadows.toBoxShadow)(tt)}:tt,nt=f?_reactNative.StyleSheet.hairlineWidth:0,rt=ie?Pe.primary:Pe.border.primary,at=n?.lift??0,ot=qe+nt+K,lt=n&&le>0?Math.max(0,(ue.height||he)/2+at-le/2-ot):0,st=n?(0,_jsxRuntime.jsx)(_reactNative.View,{style:[w.centerCell,pe?{flex:0,marginHorizontal:ge}:null],pointerEvents:"box-none",children:(0,_jsxRuntime.jsx)(_reactNative.Pressable,{onPress:()=>{if(!n)return;const e=n.haptic??o;!1!==e&&(0,_index2.triggerHaptic)(e),popIcon(Be),n.onPress()},onLayout:e=>{const{width:t,height:i}=e.nativeEvent.layout;_e(e=>e.width===t&&e.height===i?e:{width:t,height:i})},accessibilityRole:"button",accessibilityLabel:n.label,hitSlop:{top:6,bottom:6,left:6,right:6},style:({pressed:e})=>[{top:-at},e?{opacity:.85}:null],testID:n.testID??(j?`${j}-center`:void 0),children:n.content?(0,_jsxRuntime.jsx)(_reactNative.Animated.View,{style:{transform:[{scale:Be}]},children:n.content}):(0,_jsxRuntime.jsx)(_reactNative.View,{style:[w.centerCircle,{width:he,height:he,borderRadius:he/2,..._corners.smoothCorners,backgroundColor:n.color??Pe.primary}],children:(0,_jsxRuntime.jsx)(_reactNative.Animated.View,{style:{transform:[{scale:Be}]},children:(0,_index3.renderSlotIcon)(n.icon??"add",{color:n.iconColor??Pe.onPrimary,size:n.iconSize??24,disabled:!1})})})})},CENTER_KEY):null,ct=$?(0,_jsxRuntime.jsx)(_reactNative.View,{style:X?w.accessoryInline:w.accessoryStacked,onLayout:e=>Y(e.nativeEvent.layout.height),testID:j?`${j}-accessory`:void 0,children:G}):null,dt=(0,_jsxRuntime.jsxs)(_reactNative.View,{style:X?[w.tabRow,w.tabRowInline]:w.tabRow,onLayout:e=>{const{width:t,height:i}=e.nativeEvent.layout;oe(t),se(i)},children:[ne&&ve>0&&(!J||Se>0)?(0,_jsxRuntime.jsx)(_reactNative.Animated.View,{pointerEvents:"none",style:[w.pill,{width:ve,height:J?Se:D,left:Ne,top:we,backgroundColor:He,borderRadius:J?activeBgRadius(Se,Se/2):activeBgRadius(D,E.radius.full),..._corners.smoothCorners,transform:[{translateX:De}]},N]}):null,ee&&be>0?(0,_jsxRuntime.jsx)(_reactNative.Animated.View,{pointerEvents:"none",style:[w.bubble,E.shadows.md,{width:k,height:k,borderRadius:k/2,..._corners.smoothCorners,left:Ae,top:Ee,backgroundColor:Pe.primary,borderColor:Pe.background.elevated,transform:[{translateX:De}]},N]}):null,(ut=i.map(e=>{const t=e.key===r,i=t?Ve:ze,n=t?Fe:ze,l="string"==typeof e.icon?{name:e.icon,variant:"bold"}:e.icon,s=t?e.activeIcon??l:e.icon,c=xe.current[e.key],d=Re.current[e.key],u=formatBadge(e.badge??null),_=badgeAccessibilitySuffix(e.badge??null),h=ie&&!t?.7:1,p=ee&&t||ie?Pe.primary:Pe.background.elevated,g=hasLabel(e),m=g&&(!te||t),b=(0,_jsxRuntime.jsxs)(_reactNative.Animated.View,{style:[w.iconWrap,{width:T+4,height:T+4,opacity:h,transform:[{scale:c}]}],children:[(0,_index3.renderSlotIcon)(s,{color:n,size:T,focused:t,disabled:!1}),u?(0,_jsxRuntime.jsx)(_reactNative.View,{style:[u.isDot?w.badgeDot:w.badgePill,{backgroundColor:Pe.error,borderColor:p}],children:u.isDot?null:(0,_jsxRuntime.jsx)(_reactNative.Text,{style:[w.badgeText,{color:Pe.onError}],numberOfLines:1,children:u.text})}):null]}),f=ee?(0,_jsxRuntime.jsx)(_reactNative.Animated.View,{style:{top:d.interpolate({inputRange:[0,1],outputRange:[0,-V]})},children:b}):b,y=m?(0,_jsxRuntime.jsx)(_reactNative.Animated.Text,{numberOfLines:1,maxFontSizeMultiplier:I??E.maxFontSizeMultiplier??1.2,style:[w.label,te?w.labelInline:null,{color:i,opacity:te?d:h,fontWeight:t?E.typography.fontWeight.semibold:E.typography.fontWeight.normal},A],children:e.label}):null,R=(0,_jsxRuntime.jsx)(_reactNative.Pressable,{onPress:()=>(e=>{U&&W(x),e.key!==r&&!1!==o&&(0,_index2.triggerHaptic)(o);const t=xe.current[e.key];t&&popIcon(t),a(e.key)})(e),accessibilityRole:"tab",accessibilityState:{selected:t},"aria-selected":t,accessibilityLabel:`${e.label}${_}`,accessibilityHint:`Switches to ${e.label}`,hitSlop:{top:6,bottom:6,left:6,right:6},style:({pressed:e})=>[w.tab,J?w.tabTile:null,e?{opacity:.85}:null],testID:j?`${j}-tab-${e.key}`:void 0,children:te?(0,_jsxRuntime.jsxs)(_reactNative.View,{style:[w.expandPill,{height:D,paddingHorizontal:t&&g?E.spacing.md:Math.max(0,(D-(T+4))/2)}],children:[(0,_jsxRuntime.jsx)(_reactNative.View,{pointerEvents:"none",style:[w.expandFill,{borderRadius:activeBgRadius(D,D/2),..._corners.smoothCorners,backgroundColor:t?Pe.primaryMuted:"transparent"},t?N:null]}),f,y]}):(0,_jsxRuntime.jsxs)(_jsxRuntime.Fragment,{children:[f,y]})},e.key);return te?(0,_jsxRuntime.jsx)(_reactNative.Animated.View,{style:{flex:d.interpolate({inputRange:[0,1],outputRange:[1,g?1.5:1]})},children:R},e.key):R}),st?[...ut.slice(0,ce),st,...ut.slice(ce)]:ut),"underline"===s&&be>0?(0,_jsxRuntime.jsx)(_reactNative.Animated.View,{pointerEvents:"none",style:[w.underline,"top"===c?w.underlineTop:w.underlineBottom,"top"===c?{top:-qe-K}:{bottom:-qe},{width:be,height:L?.underlineHeight??3,backgroundColor:Pe.primary,transform:[{translateX:De}]},N]}):null]});var ut;return(0,_jsxRuntime.jsx)(_reactNative.View,{ref:t,testID:j,accessibilityRole:"tablist",style:[w.outer,{paddingHorizontal:We,paddingTop:Math.max(Oe,lt),paddingBottom:Xe},v],children:(0,_jsxRuntime.jsxs)(_reactNative.View,{style:[Q?w.floatingBar:w.dockedBar,X?w.barInline:null,it,{backgroundColor:ke,borderColor:rt,borderRadius:Ke,..._corners.smoothCorners},Q?{borderWidth:nt,paddingHorizontal:Ge,paddingVertical:qe}:{borderTopWidth:nt,borderBottomWidth:nt,borderLeftWidth:nt,borderRightWidth:nt,paddingHorizontal:Qe,paddingTop:qe,paddingBottom:$e}],children:[ct,dt]})})});BottomNavigation.displayName="BottomNavigation";const buildStyles=e=>_reactNative.StyleSheet.create({outer:{backgroundColor:"transparent"},dockedBar:{paddingHorizontal:4},floatingBar:{paddingVertical:6,paddingHorizontal:8},tabRow:{flexDirection:"row",alignItems:"stretch",position:"relative"},tabRowInline:{flex:1},barInline:{flexDirection:"row",alignItems:"center"},accessoryStacked:{marginBottom:e.spacing.xs},accessoryInline:{flexShrink:0,marginRight:e.spacing.xs},tab:{flex:1,minHeight:44,alignItems:"center",justifyContent:"center",paddingVertical:6,gap:4},tabTile:{paddingVertical:8,gap:2},centerCell:{flex:1,minHeight:44,alignItems:"center",justifyContent:"center"},centerCircle:{alignItems:"center",justifyContent:"center"},iconWrap:{alignItems:"center",justifyContent:"center",position:"relative"},label:{fontSize:e.typography.fontSize.xs,lineHeight:e.typography.fontSize.xs*e.typography.lineHeight.tight,textAlign:"center",includeFontPadding:!1},labelInline:{fontSize:e.typography.fontSize.sm,lineHeight:e.typography.fontSize.sm*e.typography.lineHeight.tight,flexShrink:1,includeFontPadding:!1},expandPill:{flexDirection:"row",alignItems:"center",justifyContent:"center",gap:e.spacing.xs},expandFill:{position:"absolute",top:0,right:0,bottom:0,left:0,overflow:"hidden"},pill:{position:"absolute",left:0},bubble:{position:"absolute",left:0,borderWidth:3},underline:{position:"absolute",left:0,height:3},underlineBottom:{borderTopLeftRadius:2,borderTopRightRadius:2,..._corners.smoothCorners},underlineTop:{borderBottomLeftRadius:2,borderBottomRightRadius:2,..._corners.smoothCorners},badgePill:{position:"absolute",top:-4,right:-8,minWidth:18,height:18,borderRadius:9,..._corners.smoothCorners,paddingHorizontal:4,paddingVertical:2,alignItems:"center",justifyContent:"center",borderWidth:1.5},badgeDot:{position:"absolute",top:-2,right:-2,width:10,height:10,borderRadius:5,..._corners.smoothCorners,borderWidth:1.5},badgeText:{fontSize:10,fontWeight:"700",lineHeight:12,textAlign:"center",includeFontPadding:!1}});var _default=exports.default=BottomNavigation;
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
"use strict";Object.defineProperty(exports,"__esModule",{value:!0}),exports.useScreenReaderEnabled=void 0;var _react=require("react"),_reactNative=require("react-native");const useScreenReaderEnabled=e=>{const[r,t]=(0,_react.useState)(!1);return(0,_react.useEffect)(()=>{if(!e||"web"===_reactNative.Platform.OS)return;let r=!0;_reactNative.AccessibilityInfo.isScreenReaderEnabled().then(e=>{r&&t(e)});const a=_reactNative.AccessibilityInfo.addEventListener("screenReaderChanged",t);return()=>{r=!1,a.remove()}},[e]),e&&r};exports.useScreenReaderEnabled=useScreenReaderEnabled;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
"use strict";Object.defineProperty(exports,"__esModule",{value:!0}),exports.useBottomSheet=exports.default=exports.BottomSheet=void 0;var _react=require("react"),_reactNative=require("react-native"),_reactNativeGestureHandler=require("react-native-gesture-handler"),_reactNativeKeyboardController=require("react-native-keyboard-controller"),_reactNativeReanimated=_interopRequireWildcard(require("react-native-reanimated")),_reactNativeSafeAreaContext=require("react-native-safe-area-context"),_index=require("../../theme/index.js"),_index2=require("../../utils/index.js"),_corners=require("../../utils/corners.js"),_ToastProvider=require("../Toast/ToastProvider.js"),_jsxRuntime=require("react/jsx-runtime");function _interopRequireWildcard(e,t){if("function"==typeof WeakMap)var a=new WeakMap,r=new WeakMap;return(_interopRequireWildcard=function(e,t){if(!t&&e&&e.__esModule)return e;var o,n,i={__proto__:null,default:e};if(null===e||"object"!=typeof e&&"function"!=typeof e)return i;if(o=t?r:a){if(o.has(e))return o.get(e);o.set(e,i)}for(const t in e)"default"!==t&&{}.hasOwnProperty.call(e,t)&&((n=(o=Object.defineProperty)&&Object.getOwnPropertyDescriptor(e,t))&&(n.get||n.set)?o(i,t,n):i[t]=e[t]);return i})(e,t)}const TABLET_MIN_SHORT_SIDE=600,DIALOG_MAX_WIDTH=560,BottomSheetContext=(0,_react.createContext)(null),useBottomSheet=()=>{const e=(0,_react.useContext)(BottomSheetContext);if(!e)throw new Error("useBottomSheet must be used inside a <BottomSheet>.");return e};exports.useBottomSheet=useBottomSheet;const SPRING_CONFIG={damping:20,stiffness:240,mass:1},CLOSE_VELOCITY_THRESHOLD=1e3,DRAG_ACTIVATION_OFFSET=10,BottomSheet=exports.BottomSheet=(0,_react.forwardRef)((e,t)=>{const{snapPoints:a,index:r,onChange:o,onAnimate:n,onAfterClose:i,enablePanDownToClose:s=!0,enableBackdropPress:l=!0,scrollable:c=!1,scrollRef:u,onScroll:d,onContentSizeChange:_,onScrollLayout:m,scrollEventThrottle:h,keyboardBehavior:v="shift",mode:f="modal",presentation:b="sheet",handleIndicatorStyle:p,containerStyle:S,header:x,footer:g,headerStyle:R,footerStyle:y,children:N,accessibilityLabel:w,accessibilityViewIsModal:j,testID:C}=e,k=(0,_index.useTheme)(),I=(0,_reactNativeSafeAreaContext.useSafeAreaInsets)(),[M,O]=(0,_react.useState)(()=>_reactNative.Dimensions.get("window").height),[T,H]=(0,_react.useState)(()=>_reactNative.Dimensions.get("window").width),B=(0,_react.useCallback)(e=>{const{height:t,width:a}=e.nativeEvent.layout;t>0&&O(e=>e===t?e:t),a>0&&H(e=>e===a?e:a)},[]),P=(0,_reactNative.useWindowDimensions)(),G="dialog"===b||"auto"===b&&Math.min(P.width,P.height)>=600,D=Math.min(560,T-2*k.spacing.xl),[V,A]=(0,_react.useState)({top:I.top,bottom:I.bottom}),E="modal"===f?V.top:I.top,L="modal"===f?V.bottom:I.bottom,q=a.includes("content"),[F,J]=useMeasuredHeight(),[W,z]=useMeasuredHeight(),[Y,$,K]=useMeasuredHeight(),[X,U]=useMeasuredHeight(),Q=G?k.spacing.md:F,Z=q?Math.min(Q+(null!=x?W:0)+Y+(null!=g?X:0)+L,M-E):0,ee=(0,_react.useCallback)((e,t)=>{q&&K(t),_?.(e,t)},[q,_,K]),te=(0,_react.useMemo)(()=>resolveSnapPoints(a,M,Z),[a,M,Z]),ae=M,re=te[te.length-1]??0,oe=(0,_reactNativeReanimated.useSharedValue)(ae),ne=(0,_reactNativeReanimated.useSharedValue)(ae),ie=(0,_reactNativeReanimated.useSharedValue)(-1),[se,le]=(0,_react.useState)(-1),ce=(0,_react.useRef)(!1),[ue,de]=(0,_react.useState)(!1),[_e,me]=(0,_react.useState)(!1),he=(0,_react.useRef)(!1),ve=(0,_react.useRef)(i);ve.current=i;const[fe,be]=(0,_react.useState)(!1),pe=(0,_react.useCallback)(e=>{if(e<0||e>=te.length)return ae;const t=te[e];return G?(M-t)/2:M-t},[te,M,ae,G]),Se=(0,_react.useCallback)(e=>{se!==e&&(le(e),ie.value=e,o?.(e))},[se,ie,o]),xe=(0,_react.useCallback)(()=>{ce.current=!1,ie.value<0&&(he.current=!0,"modal"===f?(de(!1),"ios"!==_reactNative.Platform.OS&&me(!1)):be(!1))},[f,ie]),ge=(0,_react.useCallback)(()=>{he.current&&me(!1)},[]);(0,_react.useEffect)(()=>{("modal"===f?!_e:!fe)&&he.current&&(he.current=!1,ve.current?.())},[f,_e,fe]);const Re=(0,_react.useCallback)((e,t,a)=>{ce.current=!0,n?.(t,a),oe.value=(0,_reactNativeReanimated.withSpring)(e,SPRING_CONFIG,e=>{"worklet";e&&(0,_reactNativeReanimated.runOnJS)(xe)()})},[n,oe,xe]),ye=(0,_react.useCallback)(e=>{const t="number"==typeof e?clamp(e,0,te.length-1):se>=0?se:0,a=ie.value,r=pe(t);he.current=!1,"modal"===f?(me(!0),de(!0)):be(!0),a<0&&(oe.value=ae),Se(t),Re(r,a,t)},[Re,ae,se,ie,f,te.length,Se,oe,pe]),Ne=(0,_react.useCallback)(()=>{if(0===te.length)return;const e=ie.value,t=pe(0);Se(0),Re(t,e,0)},[Re,ie,te.length,Se,pe]),we=(0,_react.useCallback)(()=>{const e=ie.value;Se(-1),ce.current=!0,n?.(e,-1),oe.value=(0,_reactNativeReanimated.withTiming)(ae,{duration:k.motion.duration.fast,easing:_reactNativeReanimated.Easing.bezier(...k.motion.easing.accelerate)},e=>{"worklet";e&&(0,_reactNativeReanimated.runOnJS)(xe)()})},[ae,ie,xe,n,Se,oe,k.motion.duration.fast,k.motion.easing.accelerate]);(0,_react.useImperativeHandle)(t,()=>({expand:ye,collapse:Ne,close:we}),[ye,Ne,we]),(0,_react.useEffect)(()=>{"number"==typeof r&&r!==se&&(-1===r?we():ye(r))},[r]);const je=(0,_react.useRef)({hostHeight:M,contentSnap:Z});(0,_react.useEffect)(()=>{const e=je.current;e.hostHeight===M&&e.contentSnap===Z||(je.current={hostHeight:M,contentSnap:Z},e.hostHeight===M&&ie.value<0||(oe.value=(0,_reactNativeReanimated.withSpring)(pe(ie.value),SPRING_CONFIG)))},[M,Z]);const Ce=M-re,ke=(0,_react.useMemo)(()=>te.map(e=>M-e),[te,M]),Ie=(0,_react.useCallback)((e,t)=>{const a=ie.value;if(-1===e)return(0,_index2.triggerHaptic)("selection"),Se(-1),ce.current=!0,n?.(a,-1),void(oe.value=(0,_reactNativeReanimated.withTiming)(ae,{duration:k.motion.duration.fast,easing:_reactNativeReanimated.Easing.bezier(...k.motion.easing.accelerate)},e=>{"worklet";e&&(0,_reactNativeReanimated.runOnJS)(xe)()}));Se(e),Re(t,a,e)},[Re,ae,ie,xe,n,Se,oe,k.motion.duration.fast,k.motion.easing.accelerate]),Me=(0,_react.useMemo)(()=>_reactNativeGestureHandler.Gesture.Native().withTestId(C?`${C}-content-gesture`:"bottom-sheet-content-gesture"),[C]),Oe=(0,_react.useMemo)(()=>{const e=ke,t=ae,a=Ce,r=s;return _reactNativeGestureHandler.Gesture.Pan().withTestId(C?`${C}-pan-gesture`:"bottom-sheet-pan-gesture").activeOffsetY([-10,10]).failOffsetX([-15,15]).onStart(()=>{"worklet";ne.value=oe.value}).onUpdate(e=>{"worklet";const t=ne.value+e.translationY;oe.value=t<a?a+.25*(t-a):t}).onEnd(a=>{"worklet";const o=oe.value;if(a.velocityY>1e3)return r?void(0,_reactNativeReanimated.runOnJS)(Ie)(-1,t):void(0,_reactNativeReanimated.runOnJS)(Ie)(0,e[0]);let n=0,i=Math.abs(o-e[0]);for(let t=1;t<e.length;t++){const a=Math.abs(o-e[t]);a<i&&(i=a,n=t)}const s=e[0];r&&o-s>80?(0,_reactNativeReanimated.runOnJS)(Ie)(-1,t):(0,_reactNativeReanimated.runOnJS)(Ie)(n,e[n])})},[ae,ne,s,Ie,Ce,ke,C,oe]),{height:Te}=(0,_reactNativeKeyboardController.useReanimatedKeyboardAnimation)(),He="shift"===v,Be=(0,_reactNativeReanimated.useDerivedValue)(()=>He?Te.value:0),Pe=te[se>=0?se:0]??re,Ge=k.spacing.md,De=(0,_reactNativeReanimated.useAnimatedStyle)(()=>{if(G){const e=Be.value,t=M+e-Pe-Ge,a=e<0&&oe.value>t?t:oe.value;return{top:a<E?E:a}}const e=oe.value+Be.value,t=Be.value<0?E:Ce;return{top:e<t?t:e}}),Ve=(0,_reactNativeReanimated.useAnimatedStyle)(()=>{const e=Be.value;if(G){const t=M+e-Pe-Ge,a=e<0&&oe.value>t?t:oe.value,r=M+e-Ge-(a<E?E:a);return{height:r<0?0:r>Pe?Pe:r}}const t=e<0?E:Ce,a=oe.value+e,r=M+e-(a<t?t:a);return{height:r<0?0:r>re?re:r}}),Ae=se>=0,Ee=(0,_react.useMemo)(()=>buildStyles(k),[k]),Le=(0,_react.useCallback)(()=>{l&&((0,_index2.triggerHaptic)("selection"),we())},[l,we]),qe=(0,_react.useMemo)(()=>_reactNativeGestureHandler.Gesture.Tap().withTestId(C?`${C}-backdrop-gesture`:"bottom-sheet-backdrop-gesture").maxDuration(250).onEnd((e,t)=>{"worklet";t&&(0,_reactNativeReanimated.runOnJS)(Le)()}),[Le,C]),Fe=(0,_react.useMemo)(()=>({snapIndex:se,snapPoints:te,expand:ye,collapse:Ne,close:we}),[se,te,ye,Ne,we]);if("inline"===f&&!fe)return null;if("modal"===f&&!_e)return null;const Je=(0,_jsxRuntime.jsxs)(_reactNative.View,{collapsable:!1,style:["modal"===f?Ee.backdropModal:Ee.backdropInline,{backgroundColor:k.colors.background.overlay}],onLayout:B,testID:C,accessibilityViewIsModal:j??Ae,children:[(0,_jsxRuntime.jsx)(_reactNativeGestureHandler.GestureDetector,{gesture:qe,children:(0,_jsxRuntime.jsx)(_reactNativeReanimated.default.View,{style:_reactNative.StyleSheet.absoluteFill,accessibilityRole:"button",accessibilityLabel:"Close bottom sheet"})}),(0,_jsxRuntime.jsx)(_reactNativeReanimated.default.View,{accessibilityRole:"alert",accessibilityLabel:w,accessibilityViewIsModal:j??Ae,style:[Ee.sheet,{height:re,backgroundColor:k.colors.background.elevated,borderTopLeftRadius:k.radius["2xl"],borderTopRightRadius:k.radius["2xl"],..._corners.smoothCorners,...k.shadows.xl},G?{height:Pe,left:(T-D)/2,right:void 0,width:D,borderBottomLeftRadius:k.radius["2xl"],borderBottomRightRadius:k.radius["2xl"]}:null,S,De],children:(0,_jsxRuntime.jsxs)(SheetBody,{style:[Ee.body,Ve],keyboardOffset:Be,children:[G?(0,_jsxRuntime.jsx)(_reactNative.View,{style:{height:k.spacing.md}}):(0,_jsxRuntime.jsx)(_reactNativeGestureHandler.GestureDetector,{gesture:Oe,children:(0,_jsxRuntime.jsx)(_reactNative.View,{style:Ee.handleRow,onLayout:q?J:void 0,accessible:!0,accessibilityLabel:"Drag handle",accessibilityHint:"Drag up or down to resize the sheet, or swipe down to close it",testID:C?`${C}-handle`:"bottom-sheet-handle",children:(0,_jsxRuntime.jsx)(_reactNative.View,{style:[Ee.handle,{backgroundColor:k.components.bottomSheet?.handleColor??k.colors.border.primary},p]})})}),null!=x&&(0,_jsxRuntime.jsx)(_reactNative.View,{style:[Ee.header,R],onLayout:q?z:void 0,children:x}),c?(0,_jsxRuntime.jsx)(_reactNativeGestureHandler.GestureDetector,{gesture:Me,children:(0,_jsxRuntime.jsx)(_reactNative.ScrollView,{ref:u,style:Ee.scrollContent,onScroll:d,onContentSizeChange:ee,onLayout:m,scrollEventThrottle:h,keyboardShouldPersistTaps:"always",keyboardDismissMode:"none",children:N})}):(0,_jsxRuntime.jsx)(_reactNative.View,{style:Ee.content,children:q?(0,_jsxRuntime.jsx)(_reactNative.View,{onLayout:$,children:N}):N}),null!=g&&(0,_jsxRuntime.jsx)(_reactNative.View,{style:[Ee.footer,y],onLayout:q?U:void 0,children:g})]})})]}),We=(0,_jsxRuntime.jsx)(BottomSheetContext.Provider,{value:Fe,children:Je});return"modal"===f?(0,_jsxRuntime.jsx)(_reactNative.Modal,{transparent:!0,visible:ue,onRequestClose:we,onDismiss:"ios"===_reactNative.Platform.OS?ge:void 0,statusBarTranslucent:!0,navigationBarTranslucent:!0,animationType:"none",supportedOrientations:["portrait","landscape"],children:(0,_jsxRuntime.jsxs)(_reactNativeSafeAreaContext.SafeAreaProvider,{style:Ee.modalRoot,children:[(0,_jsxRuntime.jsx)(InsetsProbe,{onChange:A}),"android"===_reactNative.Platform.OS?(0,_jsxRuntime.jsx)(_reactNativeGestureHandler.GestureHandlerRootView,{style:Ee.modalRoot,children:We}):We,(0,_jsxRuntime.jsx)(_ToastProvider.ToastHost,{})]})}):We}),InsetsProbe=({onChange:e})=>{const{top:t,bottom:a}=(0,_reactNativeSafeAreaContext.useSafeAreaInsets)();return(0,_react.useEffect)(()=>{e(e=>e.top===t&&e.bottom===a?e:{top:t,bottom:a})},[t,a,e]),null},SheetBody=({style:e,keyboardOffset:t,children:a})=>{const r=(0,_reactNativeSafeAreaContext.useSafeAreaInsets)().bottom,o=(0,_reactNativeReanimated.useAnimatedStyle)(()=>{const e=r+t.value;return{paddingBottom:e>0?e:0}});return(0,_jsxRuntime.jsx)(_reactNativeReanimated.default.View,{style:[e,o],children:a})};BottomSheet.displayName="BottomSheet";const useMeasuredHeight=()=>{const[e,t]=(0,_react.useState)(0),a=(0,_react.useCallback)(e=>{t(t=>t===e?t:e)},[]);return[e,(0,_react.useCallback)(e=>a(e.nativeEvent.layout.height),[a]),a]},resolveSnapPoints=(e,t,a)=>[...e.map(e=>{if("number"==typeof e)return e;if("content"===e)return a;const r=parseFloat(e);return Number.isNaN(r)?0:r/100*t})].sort((e,t)=>e-t),clamp=(e,t,a)=>Math.min(Math.max(e,t),a),buildStyles=e=>_reactNative.StyleSheet.create({backdropModal:{flex:1},backdropInline:{..._reactNative.StyleSheet.absoluteFill},sheet:{position:"absolute",left:0,right:0,overflow:"hidden"},body:{overflow:"hidden"},handleRow:{alignItems:"center",justifyContent:"center",alignSelf:"stretch",paddingTop:12,paddingBottom:24},header:{},footer:{},handle:{width:36,height:4,borderRadius:2,..._corners.smoothCorners},content:{flex:1,overflow:"hidden"},scrollContent:{flex:1},modalRoot:{flex:1}});var _default=exports.default=BottomSheet;
|
|
1
|
+
"use strict";Object.defineProperty(exports,"__esModule",{value:!0}),exports.useBottomSheet=exports.default=exports.BottomSheet=void 0;var _react=require("react"),_reactNative=require("react-native"),_reactNativeGestureHandler=require("react-native-gesture-handler"),_reactNativeKeyboardController=require("react-native-keyboard-controller"),_reactNativeReanimated=_interopRequireWildcard(require("react-native-reanimated")),_reactNativeSafeAreaContext=require("react-native-safe-area-context"),_index=require("../../theme/index.js"),_index2=require("../../utils/index.js"),_corners=require("../../utils/corners.js"),_ToastProvider=require("../Toast/ToastProvider.js"),_jsxRuntime=require("react/jsx-runtime");function _interopRequireWildcard(e,t){if("function"==typeof WeakMap)var a=new WeakMap,r=new WeakMap;return(_interopRequireWildcard=function(e,t){if(!t&&e&&e.__esModule)return e;var n,o,s={__proto__:null,default:e};if(null===e||"object"!=typeof e&&"function"!=typeof e)return s;if(n=t?r:a){if(n.has(e))return n.get(e);n.set(e,s)}for(const t in e)"default"!==t&&{}.hasOwnProperty.call(e,t)&&((o=(n=Object.defineProperty)&&Object.getOwnPropertyDescriptor(e,t))&&(o.get||o.set)?n(s,t,o):s[t]=e[t]);return s})(e,t)}const TABLET_MIN_SHORT_SIDE=600,DIALOG_MAX_WIDTH=560,BottomSheetContext=(0,_react.createContext)(null),useBottomSheet=()=>{const e=(0,_react.useContext)(BottomSheetContext);if(!e)throw new Error("useBottomSheet must be used inside a <BottomSheet>.");return e};exports.useBottomSheet=useBottomSheet;const SPRING_CONFIG={damping:20,stiffness:240,mass:1},CLOSE_VELOCITY_THRESHOLD=1e3,DRAG_ACTIVATION_OFFSET=10,BottomSheet=exports.BottomSheet=(0,_react.forwardRef)((e,t)=>{const{snapPoints:a,index:r,onChange:n,onAnimate:o,onAfterClose:s,enablePanDownToClose:i=!0,enableBackdropPress:c=!0,confirmDismiss:l,scrollable:u=!1,scrollRef:d,onScroll:_,onContentSizeChange:h,onScrollLayout:m,scrollEventThrottle:v,keyboardBehavior:f="shift",mode:b="modal",presentation:p="sheet",handleIndicatorStyle:x,containerStyle:S,header:R,footer:g,headerStyle:y,footerStyle:N,children:w,accessibilityLabel:C,accessibilityViewIsModal:j,testID:k}=e,I=(0,_index.useTheme)(),M=(0,_reactNativeSafeAreaContext.useSafeAreaInsets)(),[O,T]=(0,_react.useState)(()=>_reactNative.Dimensions.get("window").height),[H,P]=(0,_react.useState)(()=>_reactNative.Dimensions.get("window").width),B=(0,_react.useCallback)(e=>{const{height:t,width:a}=e.nativeEvent.layout;t>0&&T(e=>e===t?e:t),a>0&&P(e=>e===a?e:a)},[]),D=(0,_reactNative.useWindowDimensions)(),G="dialog"===p||"auto"===p&&Math.min(D.width,D.height)>=600,V=Math.min(560,H-2*I.spacing.xl),[A,E]=(0,_react.useState)({top:M.top,bottom:M.bottom}),L="modal"===b?A.top:M.top,q="modal"===b?A.bottom:M.bottom,F=a.includes("content"),[W,J]=useMeasuredHeight(),[z,Y]=useMeasuredHeight(),[$,K,X]=useMeasuredHeight(),[U,Q]=useMeasuredHeight(),Z=G?I.spacing.md:W,ee=F?Math.min(Z+(null!=R?z:0)+$+(null!=g?U:0)+q,O-L):0,te=(0,_react.useCallback)((e,t)=>{F&&X(t),h?.(e,t)},[F,h,X]),ae=(0,_react.useMemo)(()=>resolveSnapPoints(a,O,ee),[a,O,ee]),re=O,ne=ae[ae.length-1]??0,oe=(0,_reactNativeReanimated.useSharedValue)(re),se=(0,_reactNativeReanimated.useSharedValue)(re),ie=(0,_reactNativeReanimated.useSharedValue)(-1),[ce,le]=(0,_react.useState)(-1),ue=(0,_react.useRef)(!1),[de,_e]=(0,_react.useState)(!1),[he,me]=(0,_react.useState)(!1),ve=(0,_react.useRef)(!1),fe=(0,_react.useRef)(s);fe.current=s;const[be,pe]=(0,_react.useState)(!1),xe=(0,_react.useRef)(-1),Se=(0,_react.useRef)(!1);Se.current="modal"===b?he:be;const Re=(0,_react.useRef)(l);Re.current=l;const ge=(0,_react.useRef)(!1),ye=(0,_react.useRef)(!0),Ne=(0,_react.useRef)([]),we=(0,_react.useCallback)(e=>{const t=Ne.current;Ne.current=[];for(const a of t)a(e)},[]);(0,_react.useEffect)(()=>(ye.current=!0,()=>{ye.current=!1,we(!1)}),[we]);const Ce=(0,_react.useCallback)(e=>{if(e<0||e>=ae.length)return re;const t=ae[e];return G?(O-t)/2:O-t},[ae,O,re,G]),je=(0,_react.useCallback)(e=>{xe.current=e;ce!==e&&(le(e),ie.value=e,n?.(e))},[ce,ie,n]),ke=(0,_react.useCallback)(()=>{ue.current=!1,ie.value<0&&(ve.current=!0,"modal"===b?(_e(!1),"ios"!==_reactNative.Platform.OS&&me(!1)):pe(!1))},[b,ie]),Ie=(0,_react.useCallback)(()=>{ve.current&&me(!1)},[]);(0,_react.useEffect)(()=>{("modal"===b?!he:!be)&&ve.current&&(ve.current=!1,fe.current?.(),we(!0))},[b,he,be,we]);const Me=(0,_react.useCallback)((e,t,a)=>{ue.current=!0,o?.(t,a),oe.value=(0,_reactNativeReanimated.withSpring)(e,SPRING_CONFIG,e=>{"worklet";e&&(0,_reactNativeReanimated.runOnJS)(ke)()})},[o,oe,ke]),Oe=(0,_react.useCallback)(e=>{const t="number"==typeof e?clamp(e,0,ae.length-1):ce>=0?ce:0,a=ie.value,r=Ce(t);ve.current=!1,we(!1),"modal"===b?(me(!0),_e(!0)):pe(!0),a<0&&(oe.value=re),je(t),Me(r,a,t)},[Me,re,ce,ie,b,ae.length,je,we,oe,Ce]),Te=(0,_react.useCallback)(()=>{if(0===ae.length)return;const e=ie.value,t=Ce(0);je(0),Me(t,e,0)},[Me,ie,ae.length,je,Ce]),He=(0,_react.useCallback)(()=>new Promise(e=>{if(xe.current<0)return void(Se.current?Ne.current.push(e):e(!0));Ne.current.push(e);const t=ie.value;je(-1),ue.current=!0,o?.(t,-1),oe.value=(0,_reactNativeReanimated.withTiming)(re,{duration:I.motion.duration.fast,easing:_reactNativeReanimated.Easing.bezier(...I.motion.easing.accelerate)},e=>{"worklet";e&&(0,_reactNativeReanimated.runOnJS)(ke)()})}),[re,ie,ke,o,je,oe,I.motion.duration.fast,I.motion.easing.accelerate]),Pe=(0,_react.useCallback)(async()=>{await He()},[He]),Be=(0,_react.useCallback)((e,t,a)=>{const r=Re.current;if(!r)return void e();if(ge.current)return void t?.();const n=r();"boolean"!=typeof n?(ge.current=!0,a?.(),n.then(a=>{ge.current=!1,a&&ye.current&&xe.current>=0?e():t?.()},e=>{throw ge.current=!1,e})):(n?e:t)?.()},[]),De=(0,_react.useCallback)(()=>new Promise(e=>{xe.current<0?He().then(e):Be(()=>{He().then(e)},()=>e(!1))}),[He,Be]),Ge=(0,_react.useCallback)(()=>{Be(()=>{Pe()})},[Pe,Be]);(0,_react.useImperativeHandle)(t,()=>({expand:Oe,collapse:Te,close:Pe,requestClose:De}),[Oe,Te,Pe,De]),(0,_react.useEffect)(()=>{"number"==typeof r&&r!==ce&&(-1===r?Pe():Oe(r))},[r]);const Ve=(0,_react.useRef)({hostHeight:O,contentSnap:ee});(0,_react.useEffect)(()=>{const e=Ve.current;e.hostHeight===O&&e.contentSnap===ee||(Ve.current={hostHeight:O,contentSnap:ee},e.hostHeight===O&&ie.value<0||(oe.value=(0,_reactNativeReanimated.withSpring)(Ce(ie.value),SPRING_CONFIG)))},[O,ee]);const Ae=O-ne,Ee=(0,_react.useMemo)(()=>ae.map(e=>O-e),[ae,O]),Le=(0,_react.useCallback)(()=>{const e=xe.current;e<0||Me(Ce(e),e,e)},[Me,Ce]),qe=(0,_react.useCallback)((e,t)=>{const a=ie.value;-1!==e?(je(e),Me(t,a,e)):Be(()=>{(0,_index2.triggerHaptic)("selection"),Pe()},Le,Le)},[Me,Pe,ie,Be,je,Le]),Fe=(0,_react.useMemo)(()=>_reactNativeGestureHandler.Gesture.Native().withTestId(k?`${k}-content-gesture`:"bottom-sheet-content-gesture"),[k]),We=(0,_react.useMemo)(()=>{const e=Ee,t=re,a=Ae,r=i;return _reactNativeGestureHandler.Gesture.Pan().withTestId(k?`${k}-pan-gesture`:"bottom-sheet-pan-gesture").activeOffsetY([-10,10]).failOffsetX([-15,15]).onStart(()=>{"worklet";se.value=oe.value}).onUpdate(e=>{"worklet";const t=se.value+e.translationY;oe.value=t<a?a+.25*(t-a):t}).onEnd(a=>{"worklet";const n=oe.value;if(a.velocityY>1e3)return r?void(0,_reactNativeReanimated.runOnJS)(qe)(-1,t):void(0,_reactNativeReanimated.runOnJS)(qe)(0,e[0]);let o=0,s=Math.abs(n-e[0]);for(let t=1;t<e.length;t++){const a=Math.abs(n-e[t]);a<s&&(s=a,o=t)}const i=e[0];r&&n-i>80?(0,_reactNativeReanimated.runOnJS)(qe)(-1,t):(0,_reactNativeReanimated.runOnJS)(qe)(o,e[o])})},[re,se,i,qe,Ae,Ee,k,oe]),{height:Je}=(0,_reactNativeKeyboardController.useReanimatedKeyboardAnimation)(),ze="shift"===f,Ye=(0,_reactNativeReanimated.useDerivedValue)(()=>ze?Je.value:0),$e=ae[ce>=0?ce:0]??ne,Ke=I.spacing.md,Xe=(0,_reactNativeReanimated.useAnimatedStyle)(()=>{if(G){const e=Ye.value,t=O+e-$e-Ke,a=e<0&&oe.value>t?t:oe.value;return{top:a<L?L:a}}const e=oe.value+Ye.value,t=Ye.value<0?L:Ae;return{top:e<t?t:e}}),Ue=(0,_reactNativeReanimated.useAnimatedStyle)(()=>{const e=Ye.value;if(G){const t=O+e-$e-Ke,a=e<0&&oe.value>t?t:oe.value,r=O+e-Ke-(a<L?L:a);return{height:r<0?0:r>$e?$e:r}}const t=e<0?L:Ae,a=oe.value+e,r=O+e-(a<t?t:a);return{height:r<0?0:r>ne?ne:r}}),Qe=ce>=0,Ze=(0,_react.useMemo)(()=>buildStyles(I),[I]),et=(0,_react.useCallback)(()=>{c&&Be(()=>{(0,_index2.triggerHaptic)("selection"),Pe()})},[c,Pe,Be]),tt=(0,_react.useMemo)(()=>_reactNativeGestureHandler.Gesture.Tap().withTestId(k?`${k}-backdrop-gesture`:"bottom-sheet-backdrop-gesture").maxDuration(250).onEnd((e,t)=>{"worklet";t&&(0,_reactNativeReanimated.runOnJS)(et)()}),[et,k]),at=(0,_react.useMemo)(()=>({snapIndex:ce,snapPoints:ae,expand:Oe,collapse:Te,close:Pe,requestClose:De}),[ce,ae,Oe,Te,Pe,De]);if("inline"===b&&!be)return null;if("modal"===b&&!he)return null;const rt=(0,_jsxRuntime.jsxs)(_reactNative.View,{collapsable:!1,style:["modal"===b?Ze.backdropModal:Ze.backdropInline,{backgroundColor:I.colors.background.overlay}],onLayout:B,testID:k,accessibilityViewIsModal:j??Qe,children:[(0,_jsxRuntime.jsx)(_reactNativeGestureHandler.GestureDetector,{gesture:tt,children:(0,_jsxRuntime.jsx)(_reactNativeReanimated.default.View,{style:_reactNative.StyleSheet.absoluteFill,accessibilityRole:"button",accessibilityLabel:"Close bottom sheet"})}),(0,_jsxRuntime.jsx)(_reactNativeReanimated.default.View,{accessibilityRole:"alert",accessibilityLabel:C,accessibilityViewIsModal:j??Qe,style:[Ze.sheet,{height:ne,backgroundColor:I.colors.background.elevated,borderTopLeftRadius:I.radius["2xl"],borderTopRightRadius:I.radius["2xl"],..._corners.smoothCorners,...I.shadows.xl},G?{height:$e,left:(H-V)/2,right:void 0,width:V,borderBottomLeftRadius:I.radius["2xl"],borderBottomRightRadius:I.radius["2xl"]}:null,S,Xe],children:(0,_jsxRuntime.jsxs)(SheetBody,{style:[Ze.body,Ue],keyboardOffset:Ye,children:[G?(0,_jsxRuntime.jsx)(_reactNative.View,{style:{height:I.spacing.md}}):(0,_jsxRuntime.jsx)(_reactNativeGestureHandler.GestureDetector,{gesture:We,children:(0,_jsxRuntime.jsx)(_reactNative.View,{style:Ze.handleRow,onLayout:F?J:void 0,accessible:!0,accessibilityLabel:"Drag handle",accessibilityHint:"Drag up or down to resize the sheet, or swipe down to close it",testID:k?`${k}-handle`:"bottom-sheet-handle",children:(0,_jsxRuntime.jsx)(_reactNative.View,{style:[Ze.handle,{backgroundColor:I.components.bottomSheet?.handleColor??I.colors.border.primary},x]})})}),null!=R&&(0,_jsxRuntime.jsx)(_reactNative.View,{style:[Ze.header,y],onLayout:F?Y:void 0,children:R}),u?(0,_jsxRuntime.jsx)(_reactNativeGestureHandler.GestureDetector,{gesture:Fe,children:(0,_jsxRuntime.jsx)(_reactNative.ScrollView,{ref:d,style:Ze.scrollContent,onScroll:_,onContentSizeChange:te,onLayout:m,scrollEventThrottle:v,keyboardShouldPersistTaps:"always",keyboardDismissMode:"none",children:w})}):(0,_jsxRuntime.jsx)(_reactNative.View,{style:Ze.content,children:F?(0,_jsxRuntime.jsx)(_reactNative.View,{onLayout:K,children:w}):w}),null!=g&&(0,_jsxRuntime.jsx)(_reactNative.View,{style:[Ze.footer,N],onLayout:F?Q:void 0,children:g})]})})]}),nt=(0,_jsxRuntime.jsx)(BottomSheetContext.Provider,{value:at,children:rt});return"modal"===b?(0,_jsxRuntime.jsx)(_reactNative.Modal,{transparent:!0,visible:de,onRequestClose:Ge,onDismiss:"ios"===_reactNative.Platform.OS?Ie:void 0,statusBarTranslucent:!0,navigationBarTranslucent:!0,animationType:"none",supportedOrientations:["portrait","landscape"],children:(0,_jsxRuntime.jsxs)(_reactNativeSafeAreaContext.SafeAreaProvider,{style:Ze.modalRoot,children:[(0,_jsxRuntime.jsx)(InsetsProbe,{onChange:E}),"android"===_reactNative.Platform.OS?(0,_jsxRuntime.jsx)(_reactNativeGestureHandler.GestureHandlerRootView,{style:Ze.modalRoot,children:nt}):nt,(0,_jsxRuntime.jsx)(_ToastProvider.ToastHost,{})]})}):nt}),InsetsProbe=({onChange:e})=>{const{top:t,bottom:a}=(0,_reactNativeSafeAreaContext.useSafeAreaInsets)();return(0,_react.useEffect)(()=>{e(e=>e.top===t&&e.bottom===a?e:{top:t,bottom:a})},[t,a,e]),null},SheetBody=({style:e,keyboardOffset:t,children:a})=>{const r=(0,_reactNativeSafeAreaContext.useSafeAreaInsets)().bottom,n=(0,_reactNativeReanimated.useAnimatedStyle)(()=>{const e=r+t.value;return{paddingBottom:e>0?e:0}});return(0,_jsxRuntime.jsx)(_reactNativeReanimated.default.View,{style:[e,n],children:a})};BottomSheet.displayName="BottomSheet";const useMeasuredHeight=()=>{const[e,t]=(0,_react.useState)(0),a=(0,_react.useCallback)(e=>{t(t=>t===e?t:e)},[]);return[e,(0,_react.useCallback)(e=>a(e.nativeEvent.layout.height),[a]),a]},resolveSnapPoints=(e,t,a)=>[...e.map(e=>{if("number"==typeof e)return e;if("content"===e)return a;const r=parseFloat(e);return Number.isNaN(r)?0:r/100*t})].sort((e,t)=>e-t),clamp=(e,t,a)=>Math.min(Math.max(e,t),a),buildStyles=e=>_reactNative.StyleSheet.create({backdropModal:{flex:1},backdropInline:{..._reactNative.StyleSheet.absoluteFill},sheet:{position:"absolute",left:0,right:0,overflow:"hidden"},body:{overflow:"hidden"},handleRow:{alignItems:"center",justifyContent:"center",alignSelf:"stretch",paddingTop:12,paddingBottom:24},header:{},footer:{},handle:{width:36,height:4,borderRadius:2,..._corners.smoothCorners},content:{flex:1,overflow:"hidden"},scrollContent:{flex:1},modalRoot:{flex:1}});var _default=exports.default=BottomSheet;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
"use strict";Object.defineProperty(exports,"__esModule",{value:!0}),Object.defineProperty(exports,"BottomSheet",{enumerable:!0,get:function(){return _BottomSheet.BottomSheet}}),Object.defineProperty(exports,"default",{enumerable:!0,get:function(){return _BottomSheet.default}}),Object.defineProperty(exports,"useBottomSheet",{enumerable:!0,get:function(){return _BottomSheet.useBottomSheet}});var _BottomSheet=_interopRequireWildcard(require("./BottomSheet.js"));function _interopRequireWildcard(e,t){if("function"==typeof WeakMap)var r=new WeakMap,o=new WeakMap;return(_interopRequireWildcard=function(e,t){if(!t&&e&&e.__esModule)return e;var n,u,i={__proto__:null,default:e};if(null===e||"object"!=typeof e&&"function"!=typeof e)return i;if(n=t?o:r){if(n.has(e))return n.get(e);n.set(e,i)}for(const t in e)"default"!==t&&{}.hasOwnProperty.call(e,t)&&((u=(n=Object.defineProperty)&&Object.getOwnPropertyDescriptor(e,t))&&(u.get||u.set)?n(i,t,u):i[t]=e[t]);return i})(e,t)}
|
|
1
|
+
"use strict";Object.defineProperty(exports,"__esModule",{value:!0}),Object.defineProperty(exports,"BottomSheet",{enumerable:!0,get:function(){return _BottomSheet.BottomSheet}}),Object.defineProperty(exports,"default",{enumerable:!0,get:function(){return _BottomSheet.default}}),Object.defineProperty(exports,"useBottomSheet",{enumerable:!0,get:function(){return _BottomSheet.useBottomSheet}}),Object.defineProperty(exports,"useSheetSwap",{enumerable:!0,get:function(){return _useSheetSwap.useSheetSwap}});var _BottomSheet=_interopRequireWildcard(require("./BottomSheet.js")),_useSheetSwap=require("./useSheetSwap.js");function _interopRequireWildcard(e,t){if("function"==typeof WeakMap)var r=new WeakMap,o=new WeakMap;return(_interopRequireWildcard=function(e,t){if(!t&&e&&e.__esModule)return e;var n,u,i={__proto__:null,default:e};if(null===e||"object"!=typeof e&&"function"!=typeof e)return i;if(n=t?o:r){if(n.has(e))return n.get(e);n.set(e,i)}for(const t in e)"default"!==t&&{}.hasOwnProperty.call(e,t)&&((u=(n=Object.defineProperty)&&Object.getOwnPropertyDescriptor(e,t))&&(u.get||u.set)?n(i,t,u):i[t]=e[t]);return i})(e,t)}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
"use strict";Object.defineProperty(exports,"__esModule",{value:!0}),exports.useSheetSwap=void 0;var _react=require("react");const useSheetSwap=()=>{const e=(0,_react.useRef)(!0),r=(0,_react.useRef)(!1);return(0,_react.useEffect)(()=>(e.current=!0,()=>{e.current=!1}),[]),(0,_react.useCallback)(async(t,c,u)=>{if(r.current)return!1;r.current=!0;try{const r=t.current;if(r)if(u?.confirm){if(!await r.requestClose())return!1}else await r.close();const s=c.current;return!(!e.current||!s)&&(s.expand(u?.index),!0)}finally{r.current=!1}},[])};exports.useSheetSwap=useSheetSwap;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
"use strict";Object.defineProperty(exports,"__esModule",{value:!0}),exports.default=exports.Card=void 0;var _react=_interopRequireWildcard(require("react")),_reactNative=require("react-native"),_useControllableState=require("../../hooks/useControllableState.js"),_usePressAnimation=require("../../hooks/usePressAnimation.js"),_index=require("../../theme/index.js"),_corners=require("../../utils/corners.js"),_hapticUtils=require("../../utils/hapticUtils.js"),_shadows=require("../../utils/shadows.js"),_squircle=require("../../utils/squircle.js"),_AppIcon=require("../AppIcon/AppIcon.js"),_index2=require("../Skeleton/index.js"),_SquircleFill=require("../SquircleFill/SquircleFill.js"),_index3=require("../Text/index.js"),_jsxRuntime=require("react/jsx-runtime");function _interopRequireWildcard(e,t){if("function"==typeof WeakMap)var i=new WeakMap,r=new WeakMap;return(_interopRequireWildcard=function(e,t){if(!t&&e&&e.__esModule)return e;var s,a,o={__proto__:null,default:e};if(null===e||"object"!=typeof e&&"function"!=typeof e)return o;if(s=t?r:i){if(s.has(e))return s.get(e);s.set(e,o)}for(const t in e)"default"!==t&&{}.hasOwnProperty.call(e,t)&&((a=(s=Object.defineProperty)&&Object.getOwnPropertyDescriptor(e,t))&&(a.get||a.set)?s(o,t,a):o[t]=e[t]);return o})(e,t)}const paddingMap={none:"none",sm:"sm",md:"lg",lg:"xl",xl:"2xl"},Card=exports.Card=(0,_react.forwardRef)((e,t)=>{const{children:i,variant:r="elevated",elevation:s="sm",radius:a="lg",padding:o="md",interactive:n=!1,bg:l,header:d,title:c,lead:u,action:h,headerActions:x,collapsible:p=!1,collapsed:_,defaultCollapsed:m=!1,onCollapsedChange:b,collapsedSummary:g,onRemove:y,removeLabel:j="Remove",separatorHeight:v=_reactNative.StyleSheet.hairlineWidth,footer:R,imageSource:f,imageHeight:S=160,imageAspectRatio:w,imageOverlay:C,loading:k=!1,gradient:q,onPress:N,haptic:A,accessibilityLabel:T,accessibilityHint:P,accessibilityRole:I,style:B,containerStyle:H,headerStyle:L,bodyStyle:V,footerStyle:F,borderRadius:W,testID:M,onLayout:z,...O}=e,U=(0,_index.useTheme)(),D=n||"function"==typeof N,{scale:E,pressIn:G,pressOut:$}=(0,_usePressAnimation.usePressAnimation)({enabled:D}),J=(0,_react.useMemo)(()=>buildStyles(U),[U]),K=Boolean(f),Q=U.spacing[paddingMap[o]],X=(0,_react.useMemo)(()=>q?"string"==typeof q?U.gradients[q]??null:q:null,[q,U.gradients]),Y="flat"===r,Z=Y?0:W??U.radius[a],ee=resolveBackground(U,l),[te,ie]=(0,_useControllableState.useControllableState)({value:_,defaultValue:m,onChange:b}),re=p&&te,se=hasBuiltInHeaderContent(e),ae=Boolean(d)||se,oe=(0,_SquircleFill.useSquircle)(!K&&!X&&!Y,Z,z),ne=_reactNative.StyleSheet.flatten([B,H])??{},le=ne.backgroundColor,de=ne.borderColor,ce=le??ee??("filled"===r?U.colors.background.secondary:U.colors.background.elevated),ue="outlined"===r?U.colors.border.width:0,he=de??U.colors.border.primary,xe="elevated"===r&&(0,_shadows.supportsBoxShadow)()?(0,_shadows.toBoxShadow)(U.shadows[s]):void 0,pe=oe.active&&"elevated"===r&&!xe,_e=oe.active&&!pe?{backgroundColor:"transparent",borderColor:"transparent"}:null,me=(0,_react.useMemo)(()=>{const e={borderRadius:pe&&oe.size?(0,_squircle.squircleHostRadius)(oe.size.width,oe.size.height,Z):Z,..._corners.smoothCorners,padding:K?0:Q,overflow:oe.active?"visible":"hidden"};switch(r){case"flat":return{...e,backgroundColor:ee??U.colors.background.elevated,borderBottomWidth:v,borderBottomColor:U.colors.border.primary};case"outlined":return{...e,backgroundColor:oe.active?"transparent":ee??U.colors.background.elevated,borderWidth:U.colors.border.width,borderColor:oe.active?"transparent":U.colors.border.primary};case"filled":return{...e,backgroundColor:oe.active?"transparent":ee??U.colors.background.secondary};default:return{...e,backgroundColor:ee??U.colors.background.elevated,...xe?{boxShadow:xe}:U.shadows[s]}}},[U,r,s,Z,K,Q,oe.active,oe.size,xe,pe,ee,v]),be=(0,_react.useMemo)(()=>({..."number"==typeof w?{width:"100%",aspectRatio:w}:{width:"100%",height:S},borderTopLeftRadius:Z,borderTopRightRadius:Z,borderBottomLeftRadius:0,borderBottomRightRadius:0,..._corners.smoothCorners}),[Z,w,S]),ge="string"==typeof c?c:"",ye=(0,_jsxRuntime.jsxs)(_jsxRuntime.Fragment,{children:[(0,_jsxRuntime.jsxs)(_reactNative.View,{style:J.titleColumn,children:["string"==typeof c?(0,_jsxRuntime.jsx)(_index3.Text,{variant:"title",accessibilityRole:"header",children:c}):c,u?(0,_jsxRuntime.jsx)(_index3.Text,{variant:"bodySmall",style:J.lead,children:u}):null,re&&g?(0,_jsxRuntime.jsx)(_index3.Text,{variant:"caption",style:J.lead,children:g}):null]}),isCardTextAction(h)?(0,_jsxRuntime.jsx)(CardTextActionButton,{action:h,haptic:A}):h?(0,_jsxRuntime.jsx)(_reactNative.View,{style:J.actionNode,children:h}):null,x,p?(0,_jsxRuntime.jsx)(CardIconAction,{icon:re?"chevron-down":"chevron-up",label:`${re?"Show":"Hide"} ${ge}`.trim(),expanded:!re,onPress:()=>ie(!re),haptic:A}):null,y?(0,_jsxRuntime.jsx)(CardIconAction,{icon:"trash",label:j,onPress:y,color:U.colors.toneText.error,haptic:A}):null]}),je=(0,_jsxRuntime.jsxs)(_jsxRuntime.Fragment,{children:[ae?(0,_jsxRuntime.jsx)(_reactNative.View,{style:[J.header,!d&&J.headerRow,re&&J.headerFolded,L],children:d??ye}):null,re?null:(0,_jsxRuntime.jsx)(_reactNative.View,{style:[ae||R?J.body:null,V],children:i}),R&&!re?(0,_jsxRuntime.jsx)(_reactNative.View,{style:[J.footer,F],children:R}):null]}),ve=K?(0,_jsxRuntime.jsxs)(_jsxRuntime.Fragment,{children:[(0,_jsxRuntime.jsxs)(_reactNative.View,{style:J.imageWrapper,children:[(0,_jsxRuntime.jsx)(_reactNative.Image,{source:f,resizeMode:"cover",style:be,accessibilityLabel:"",accessible:!1}),C?(0,_jsxRuntime.jsx)(_reactNative.View,{pointerEvents:"box-none",style:J.imageOverlay,children:C}):null]}),(0,_jsxRuntime.jsx)(_reactNative.View,{style:{padding:Q},children:je})]}):je,Re=X?(0,_jsxRuntime.jsxs)(_jsxRuntime.Fragment,{children:[(0,_jsxRuntime.jsx)(_index.Gradient,{gradient:X,style:_reactNative.StyleSheet.absoluteFill}),ve]}):oe.active&&oe.size?(0,_jsxRuntime.jsxs)(_jsxRuntime.Fragment,{children:[(0,_jsxRuntime.jsx)(_SquircleFill.SquircleFill,{width:oe.size.width,height:oe.size.height,radius:Z,fill:ce,stroke:ue?he:void 0,strokeWidth:ue,outset:ue}),ve]}):ve;let fe;if(D){const handlePress=e=>{const t=(0,_hapticUtils.resolveHaptic)(A,"selection");t&&(0,_hapticUtils.triggerHaptic)(t),N?.(e)};fe=(0,_jsxRuntime.jsx)(_reactNative.Animated.View,{style:[{transform:[{scale:E}]}],children:(0,_jsxRuntime.jsx)(_reactNative.Pressable,{ref:t,onPress:handlePress,onPressIn:G,onPressOut:$,android_ripple:{color:U.colors.surface.pressed,borderless:!1},accessibilityRole:I??"button",accessibilityLabel:T,accessibilityHint:P,testID:M,onLayout:oe.onLayout,style:[me,B,H,_e],...O,children:Re})})}else fe=(0,_jsxRuntime.jsx)(_reactNative.View,{ref:t,accessibilityLabel:T,accessibilityHint:P,accessibilityRole:I,testID:M,onLayout:oe.onLayout,style:[me,B,H,_e],...O,children:Re});return k?(0,_jsxRuntime.jsx)(CardSkeleton,{...e}):fe});Card.displayName="Card";const CardSkeleton=({variant:e="elevated",elevation:t,radius:i="lg",padding:r="md",bg:s,header:a,footer:o,imageSource:n,imageHeight:l=160,imageAspectRatio:d,borderRadius:c,containerStyle:u,headerStyle:h,bodyStyle:x,footerStyle:p,style:_,...m})=>{const b=(0,_index.useTheme)(),g=paddingMap[r],y=b.spacing[g],j="flat"===e?0:c??b.radius[i],v=void 0!==a||hasBuiltInHeaderContent(m),R=resolveBackground(b,s)??b.colors.background.elevated,f="outlined"===e?1:0,S="outlined"===e?b.colors.border.primary:void 0;return(0,_jsxRuntime.jsxs)(_reactNative.View,{style:[{backgroundColor:R,borderRadius:j,..._corners.smoothCorners,borderWidth:f,borderColor:S,overflow:"hidden"},u,_],accessibilityRole:"progressbar",accessibilityLabel:"Loading",accessibilityState:{busy:!0},"aria-busy":!0,children:[void 0!==n?(0,_jsxRuntime.jsx)(_index2.Skeleton,{width:"100%",height:d?void 0:l,style:d?{aspectRatio:d,width:"100%"}:void 0}):null,v?(0,_jsxRuntime.jsx)(_reactNative.View,{style:[{padding:y,paddingBottom:b.spacing.sm},h],children:(0,_jsxRuntime.jsx)(_index2.Skeleton,{shape:"text",width:"60%",height:18})}):null,(0,_jsxRuntime.jsx)(_reactNative.View,{style:[{padding:y},x],children:(0,_jsxRuntime.jsx)(_index2.SkeletonText,{lines:3,fontSize:14,lastLineWidth:"55%"})}),void 0!==o?(0,_jsxRuntime.jsx)(_reactNative.View,{style:[{padding:y,paddingTop:b.spacing.sm,flexDirection:"row"},p],children:(0,_jsxRuntime.jsx)(_index2.Skeleton,{width:88,height:32,shape:"rounded"})}):null]})};CardSkeleton.displayName="CardSkeleton",Card.Skeleton=CardSkeleton;const hasBuiltInHeaderContent=e=>Boolean(e.title||e.lead||e.action||e.headerActions||e.collapsible||e.onRemove),isCardTextAction=e=>"object"==typeof e&&null!==e&&!_react.default.isValidElement(e)&&"label"in e&&"onPress"in e,HIT_TARGET=44,CardIconAction=({icon:e,label:t,onPress:i,expanded:r,color:s,haptic:a})=>{const o=(0,_index.useTheme)();return(0,_jsxRuntime.jsx)(_reactNative.Pressable,{accessibilityRole:"button",accessibilityLabel:t,accessibilityState:void 0===r?void 0:{expanded:r},"aria-expanded":r,onPress:()=>{const e=(0,_hapticUtils.resolveHaptic)(a,"selection");e&&(0,_hapticUtils.triggerHaptic)(e),i()},style:iconActionStyle,children:(0,_jsxRuntime.jsx)(_AppIcon.AppIcon,{name:e,size:20,color:s??o.colors.text.primary})})},CardTextActionButton=({action:e,haptic:t})=>{const i=(0,_index.useTheme)();return(0,_jsxRuntime.jsx)(_reactNative.Pressable,{accessibilityRole:"button",accessibilityLabel:e.accessibilityLabel??e.label,onPress:()=>{const i=(0,_hapticUtils.resolveHaptic)(t,"selection");i&&(0,_hapticUtils.triggerHaptic)(i),e.onPress()},style:textActionStyle,children:(0,_jsxRuntime.jsx)(_index3.Text,{variant:"label",weight:"semibold",color:i.colors.primary,children:e.label})})},iconActionStyle={width:44,height:44,alignItems:"center",justifyContent:"center"},textActionStyle={minWidth:44,minHeight:44,alignItems:"center",justifyContent:"center"},resolveBackground=(e,t)=>{if(null==t)return;return e.colors.background[t]??t},buildStyles=e=>_reactNative.StyleSheet.create({header:{marginBottom:e.spacing.md},headerRow:{flexDirection:"row",alignItems:"center",gap:e.spacing.sm},headerFolded:{marginBottom:0},titleColumn:{flex:1},lead:{marginTop:e.spacing.xs},actionNode:{flexShrink:0},body:{flexShrink:1},footer:{marginTop:e.spacing.md},imageWrapper:{position:"relative"},imageOverlay:{..._reactNative.StyleSheet.absoluteFill}});var _default=exports.default=Card;
|
|
1
|
+
"use strict";Object.defineProperty(exports,"__esModule",{value:!0}),exports.default=exports.Card=void 0;var _react=_interopRequireWildcard(require("react")),_reactNative=require("react-native"),_useControllableState=require("../../hooks/useControllableState.js"),_usePressAnimation=require("../../hooks/usePressAnimation.js"),_index=require("../../theme/index.js"),_corners=require("../../utils/corners.js"),_hapticUtils=require("../../utils/hapticUtils.js"),_mergeRefs=require("../../utils/mergeRefs.js"),_shadows=require("../../utils/shadows.js"),_squircle=require("../../utils/squircle.js"),_AppIcon=require("../AppIcon/AppIcon.js"),_useContextMenu=require("../Menu/useContextMenu.js"),_index2=require("../Skeleton/index.js"),_SquircleFill=require("../SquircleFill/SquircleFill.js"),_index3=require("../Text/index.js"),_jsxRuntime=require("react/jsx-runtime");function _interopRequireWildcard(e,t){if("function"==typeof WeakMap)var i=new WeakMap,r=new WeakMap;return(_interopRequireWildcard=function(e,t){if(!t&&e&&e.__esModule)return e;var s,o,a={__proto__:null,default:e};if(null===e||"object"!=typeof e&&"function"!=typeof e)return a;if(s=t?r:i){if(s.has(e))return s.get(e);s.set(e,a)}for(const t in e)"default"!==t&&{}.hasOwnProperty.call(e,t)&&((o=(s=Object.defineProperty)&&Object.getOwnPropertyDescriptor(e,t))&&(o.get||o.set)?s(a,t,o):a[t]=e[t]);return a})(e,t)}const paddingMap={none:"none",sm:"sm",md:"lg",lg:"xl",xl:"2xl"},Card=exports.Card=(0,_react.forwardRef)((e,t)=>{const{children:i,variant:r="elevated",elevation:s="sm",radius:o="lg",padding:a="md",interactive:n=!1,bg:l,header:c,title:d,lead:u,action:h,headerActions:x,collapsible:m=!1,collapsed:_,defaultCollapsed:p=!1,onCollapsedChange:g,collapsedSummary:b,onRemove:y,removeLabel:j="Remove",separatorHeight:v=_reactNative.StyleSheet.hairlineWidth,footer:R,imageSource:f,imageHeight:S=160,imageAspectRatio:w,imageOverlay:C,loading:k=!1,gradient:A,onPress:q,haptic:N,contextMenu:T,accessibilityLabel:P,accessibilityHint:I,accessibilityRole:B,style:H,containerStyle:M,headerStyle:L,bodyStyle:V,footerStyle:F,borderRadius:W,testID:z,onLayout:O,...U}=e,D=(0,_index.useTheme)(),E=n||"function"==typeof q,G=(0,_useContextMenu.useContextMenu)(T,{haptic:N,testID:z,accessibilityActions:U.accessibilityActions,onAccessibilityAction:U.onAccessibilityAction}),$=(0,_react.useMemo)(()=>(0,_mergeRefs.mergeRefs)(t,G.hostRef),[t,G.hostRef]),J=E||G.enabled,{scale:K,pressIn:Q,pressOut:X}=(0,_usePressAnimation.usePressAnimation)({enabled:J}),Y=(0,_react.useMemo)(()=>buildStyles(D),[D]),Z=Boolean(f),ee=D.spacing[paddingMap[a]],te=(0,_react.useMemo)(()=>A?"string"==typeof A?D.gradients[A]??null:A:null,[A,D.gradients]),ie="flat"===r,re=ie?0:W??D.radius[o],se=resolveBackground(D,l),[oe,ae]=(0,_useControllableState.useControllableState)({value:_,defaultValue:p,onChange:g}),ne=m&&oe,le=hasBuiltInHeaderContent(e),ce=Boolean(c)||le,de=(0,_SquircleFill.useSquircle)(!Z&&!te&&!ie,re,O),ue=_reactNative.StyleSheet.flatten([H,M])??{},he=ue.backgroundColor,xe=ue.borderColor,me=he??se??("filled"===r?D.colors.background.secondary:D.colors.background.elevated),_e="outlined"===r?D.colors.border.width:0,pe=xe??D.colors.border.primary,ge="elevated"===r&&(0,_shadows.supportsBoxShadow)()?(0,_shadows.toBoxShadow)(D.shadows[s]):void 0,be=de.active&&"elevated"===r&&!ge,ye=de.active&&!be?{backgroundColor:"transparent",borderColor:"transparent"}:null,je=(0,_react.useMemo)(()=>{const e={borderRadius:be&&de.size?(0,_squircle.squircleHostRadius)(de.size.width,de.size.height,re):re,..._corners.smoothCorners,padding:Z?0:ee,overflow:de.active?"visible":"hidden"};switch(r){case"flat":return{...e,backgroundColor:se??D.colors.background.elevated,borderBottomWidth:v,borderBottomColor:D.colors.border.primary};case"outlined":return{...e,backgroundColor:de.active?"transparent":se??D.colors.background.elevated,borderWidth:D.colors.border.width,borderColor:de.active?"transparent":D.colors.border.primary};case"filled":return{...e,backgroundColor:de.active?"transparent":se??D.colors.background.secondary};default:return{...e,backgroundColor:se??D.colors.background.elevated,...ge?{boxShadow:ge}:D.shadows[s]}}},[D,r,s,re,Z,ee,de.active,de.size,ge,be,se,v]),ve=(0,_react.useMemo)(()=>({..."number"==typeof w?{width:"100%",aspectRatio:w}:{width:"100%",height:S},borderTopLeftRadius:re,borderTopRightRadius:re,borderBottomLeftRadius:0,borderBottomRightRadius:0,..._corners.smoothCorners}),[re,w,S]),Re="string"==typeof d?d:"",fe=(0,_jsxRuntime.jsxs)(_jsxRuntime.Fragment,{children:[(0,_jsxRuntime.jsxs)(_reactNative.View,{style:Y.titleColumn,children:["string"==typeof d?(0,_jsxRuntime.jsx)(_index3.Text,{variant:"title",accessibilityRole:"header",children:d}):d,u?(0,_jsxRuntime.jsx)(_index3.Text,{variant:"bodySmall",style:Y.lead,children:u}):null,ne&&b?(0,_jsxRuntime.jsx)(_index3.Text,{variant:"caption",style:Y.lead,children:b}):null]}),isCardTextAction(h)?(0,_jsxRuntime.jsx)(CardTextActionButton,{action:h,haptic:N}):h?(0,_jsxRuntime.jsx)(_reactNative.View,{style:Y.actionNode,children:h}):null,x,m?(0,_jsxRuntime.jsx)(CardIconAction,{icon:ne?"chevron-down":"chevron-up",label:`${ne?"Show":"Hide"} ${Re}`.trim(),expanded:!ne,onPress:()=>ae(!ne),haptic:N}):null,y?(0,_jsxRuntime.jsx)(CardIconAction,{icon:"trash",label:j,onPress:y,color:D.colors.toneText.error,haptic:N}):null]}),Se=(0,_jsxRuntime.jsxs)(_jsxRuntime.Fragment,{children:[ce?(0,_jsxRuntime.jsx)(_reactNative.View,{style:[Y.header,!c&&Y.headerRow,ne&&Y.headerFolded,L],children:c??fe}):null,ne?null:(0,_jsxRuntime.jsx)(_reactNative.View,{style:[ce||R?Y.body:null,V],children:i}),R&&!ne?(0,_jsxRuntime.jsx)(_reactNative.View,{style:[Y.footer,F],children:R}):null]}),we=Z?(0,_jsxRuntime.jsxs)(_jsxRuntime.Fragment,{children:[(0,_jsxRuntime.jsxs)(_reactNative.View,{style:Y.imageWrapper,children:[(0,_jsxRuntime.jsx)(_reactNative.Image,{source:f,resizeMode:"cover",style:ve,accessibilityLabel:"",accessible:!1}),C?(0,_jsxRuntime.jsx)(_reactNative.View,{pointerEvents:"box-none",style:Y.imageOverlay,children:C}):null]}),(0,_jsxRuntime.jsx)(_reactNative.View,{style:{padding:ee},children:Se})]}):Se,Ce=te?(0,_jsxRuntime.jsxs)(_jsxRuntime.Fragment,{children:[(0,_jsxRuntime.jsx)(_index.Gradient,{gradient:te,style:_reactNative.StyleSheet.absoluteFill}),we]}):de.active&&de.size?(0,_jsxRuntime.jsxs)(_jsxRuntime.Fragment,{children:[(0,_jsxRuntime.jsx)(_SquircleFill.SquircleFill,{width:de.size.width,height:de.size.height,radius:re,fill:me,stroke:_e?pe:void 0,strokeWidth:_e,outset:_e}),we]}):we;let ke;if(J){const handlePress=e=>{if(!E)return;const t=(0,_hapticUtils.resolveHaptic)(N,"selection");t&&(0,_hapticUtils.triggerHaptic)(t),q?.(e)};ke=(0,_jsxRuntime.jsx)(_reactNative.Animated.View,{style:[{transform:[{scale:K}]}],children:(0,_jsxRuntime.jsx)(_reactNative.Pressable,{ref:$,onPress:handlePress,onPressIn:Q,onPressOut:X,android_ripple:{color:D.colors.surface.pressed,borderless:!1},accessibilityRole:B??(E?"button":void 0),accessibilityLabel:P,accessibilityHint:I,testID:z,onLayout:de.onLayout,style:[je,H,M,ye],...U,...G.hostProps,children:Ce})})}else ke=(0,_jsxRuntime.jsx)(_reactNative.View,{ref:t,accessibilityLabel:P,accessibilityHint:I,accessibilityRole:B,testID:z,onLayout:de.onLayout,style:[je,H,M,ye],...U,children:Ce});return k?(0,_jsxRuntime.jsx)(CardSkeleton,{...e}):G.enabled?(0,_jsxRuntime.jsxs)(_jsxRuntime.Fragment,{children:[ke,G.renderSurface((0,_jsxRuntime.jsx)(_reactNative.View,{style:[je,H,M,ye,Y.preview],children:Ce}))]}):ke});Card.displayName="Card";const CardSkeleton=({variant:e="elevated",elevation:t,radius:i="lg",padding:r="md",bg:s,header:o,footer:a,imageSource:n,imageHeight:l=160,imageAspectRatio:c,borderRadius:d,containerStyle:u,headerStyle:h,bodyStyle:x,footerStyle:m,style:_,...p})=>{const g=(0,_index.useTheme)(),b=paddingMap[r],y=g.spacing[b],j="flat"===e?0:d??g.radius[i],v=void 0!==o||hasBuiltInHeaderContent(p),R=resolveBackground(g,s)??g.colors.background.elevated,f="outlined"===e?1:0,S="outlined"===e?g.colors.border.primary:void 0;return(0,_jsxRuntime.jsxs)(_reactNative.View,{style:[{backgroundColor:R,borderRadius:j,..._corners.smoothCorners,borderWidth:f,borderColor:S,overflow:"hidden"},u,_],accessibilityRole:"progressbar",accessibilityLabel:"Loading",accessibilityState:{busy:!0},"aria-busy":!0,children:[void 0!==n?(0,_jsxRuntime.jsx)(_index2.Skeleton,{width:"100%",height:c?void 0:l,style:c?{aspectRatio:c,width:"100%"}:void 0}):null,v?(0,_jsxRuntime.jsx)(_reactNative.View,{style:[{padding:y,paddingBottom:g.spacing.sm},h],children:(0,_jsxRuntime.jsx)(_index2.Skeleton,{shape:"text",width:"60%",height:18})}):null,(0,_jsxRuntime.jsx)(_reactNative.View,{style:[{padding:y},x],children:(0,_jsxRuntime.jsx)(_index2.SkeletonText,{lines:3,fontSize:14,lastLineWidth:"55%"})}),void 0!==a?(0,_jsxRuntime.jsx)(_reactNative.View,{style:[{padding:y,paddingTop:g.spacing.sm,flexDirection:"row"},m],children:(0,_jsxRuntime.jsx)(_index2.Skeleton,{width:88,height:32,shape:"rounded"})}):null]})};CardSkeleton.displayName="CardSkeleton",Card.Skeleton=CardSkeleton;const hasBuiltInHeaderContent=e=>Boolean(e.title||e.lead||e.action||e.headerActions||e.collapsible||e.onRemove),isCardTextAction=e=>"object"==typeof e&&null!==e&&!_react.default.isValidElement(e)&&"label"in e&&"onPress"in e,HIT_TARGET=44,CardIconAction=({icon:e,label:t,onPress:i,expanded:r,color:s,haptic:o})=>{const a=(0,_index.useTheme)();return(0,_jsxRuntime.jsx)(_reactNative.Pressable,{accessibilityRole:"button",accessibilityLabel:t,accessibilityState:void 0===r?void 0:{expanded:r},"aria-expanded":r,onPress:()=>{const e=(0,_hapticUtils.resolveHaptic)(o,"selection");e&&(0,_hapticUtils.triggerHaptic)(e),i()},style:iconActionStyle,children:(0,_jsxRuntime.jsx)(_AppIcon.AppIcon,{name:e,size:20,color:s??a.colors.text.primary})})},CardTextActionButton=({action:e,haptic:t})=>{const i=(0,_index.useTheme)();return(0,_jsxRuntime.jsx)(_reactNative.Pressable,{accessibilityRole:"button",accessibilityLabel:e.accessibilityLabel??e.label,onPress:()=>{const i=(0,_hapticUtils.resolveHaptic)(t,"selection");i&&(0,_hapticUtils.triggerHaptic)(i),e.onPress()},style:textActionStyle,children:(0,_jsxRuntime.jsx)(_index3.Text,{variant:"label",weight:"semibold",color:i.colors.primary,children:e.label})})},iconActionStyle={width:44,height:44,alignItems:"center",justifyContent:"center"},textActionStyle={minWidth:44,minHeight:44,alignItems:"center",justifyContent:"center"},resolveBackground=(e,t)=>{if(null==t)return;return e.colors.background[t]??t},buildStyles=e=>_reactNative.StyleSheet.create({header:{marginBottom:e.spacing.md},headerRow:{flexDirection:"row",alignItems:"center",gap:e.spacing.sm},headerFolded:{marginBottom:0},titleColumn:{flex:1},lead:{marginTop:e.spacing.xs},actionNode:{flexShrink:0},body:{flexShrink:1},footer:{marginTop:e.spacing.md},imageWrapper:{position:"relative"},imageOverlay:{..._reactNative.StyleSheet.absoluteFill},preview:{margin:0,marginTop:0,marginBottom:0,marginLeft:0,marginRight:0,marginStart:0,marginEnd:0,marginHorizontal:0,marginVertical:0,position:"relative",top:0,left:0,width:"100%",height:"100%"}});var _default=exports.default=Card;
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
"use strict";Object.defineProperty(exports,"__esModule",{value:!0}),exports.default=exports.Composer=void 0;var _react=require("react"),_reactNative=require("react-native"),_reactNativeKeyboardController=require("react-native-keyboard-controller"),_reactNativeSafeAreaContext=require("react-native-safe-area-context"),_useControllableState=require("../../hooks/useControllableState.js"),_index=require("../../theme/index.js"),_corners=require("../../utils/corners.js"),_FieldBase=require("../FieldBase/FieldBase.js"),_index2=require("../IconButton/index.js"),_jsxRuntime=require("react/jsx-runtime");const MIN_BOX=44,Composer=exports.Composer=(0,_react.forwardRef)(({onSend:e,value:t,onChangeText:a,placeholder:r="Message",accessibilityLabel:o,sendLabel:i="Send",busy:s=!1,disabled:l=!1,maxLength:n,maxLines:d=5,leading:c,trailing:u,above:b,below:p,keyboardAware:x=!0,keyboardOffset:g,safeArea:m=!0,autoFocus:_,haptic:h,style:v,testID:y},C)=>{const f=(0,_index.useTheme)(),S=(0,_reactNativeSafeAreaContext.useSafeAreaInsets)(),j=(0,_react.useMemo)(()=>buildStyles(f),[f]),[N,k]=(0,_useControllableState.useControllableState)({value:t,defaultValue:"",onChange:a}),w=N.trim(),q=s||l||""===w,I=m?S.bottom:0,R=g??I,T=(0,_FieldBase.resolveFieldTextStyle)(f,{disabled:l}),B=f.typography.fontSize.base,D=Math.round(B*f.typography.lineHeight.normal),F=(44-D)/2,z=D*d+2*F,[H,L]=(0,_react.useState)(void 0),M=(0,_react.useCallback)(e=>{const t=e.nativeEvent.contentSize.height+2*F;L(Math.min(Math.max(t,44),z))},[F,z]),V=(0,_react.useCallback)(()=>{q||(k(""),e(w))},[q,k,e,w]),A=(0,_jsxRuntime.jsxs)(_reactNative.View,{style:[j.bar,{paddingBottom:f.spacing.sm+I},v],testID:y,children:[b,(0,_jsxRuntime.jsxs)(_reactNative.View,{style:j.row,children:[c,(0,_jsxRuntime.jsx)(_reactNative.View,{style:[j.box,l?j.boxDisabled:null],children:(0,_jsxRuntime.jsx)(_reactNative.TextInput,{ref:C,value:N,onChangeText:k,multiline:!0,maxLength:n,editable:!l,autoFocus:_,placeholder:r,placeholderTextColor:T.placeholderColor,selectionColor:f.colors.field.caret,accessibilityLabel:o??r,accessibilityState:{disabled:l},"aria-disabled":l,onContentSizeChange:"web"===_reactNative.Platform.OS?M:void 0,style:[j.input,{color:T.color,...T.weightStyle,fontSize:B,lineHeight:D,paddingVertical:F,maxHeight:z,height:"web"===_reactNative.Platform.OS?H:void 0}],testID:y?`${y}-input`:void 0})}),u,(0,_jsxRuntime.jsx)(_index2.IconButton,{icon:"send",accessibilityLabel:i,variant:"solid",tone:"primary",disabled:q,loading:s,haptic:h,onPress:V,testID:y?`${y}-send`:void 0})]}),p]});return x?(0,_jsxRuntime.jsx)(_reactNativeKeyboardController.KeyboardStickyView,{offset:{closed:0,opened:R},children:A}):A});Composer.displayName="Composer";const buildStyles=e=>_reactNative.StyleSheet.create({bar:{gap:e.spacing.xs,paddingHorizontal:e.spacing.md,paddingTop:e.spacing.sm,backgroundColor:e.colors.background.primary,borderTopWidth:_reactNative.StyleSheet.hairlineWidth,borderTopColor:e.colors.border.secondary},row:{flexDirection:"row",alignItems:"flex-end",gap:e.spacing.sm},box:{flex:1,minHeight:44,justifyContent:"center",backgroundColor:e.colors.field.background,borderRadius:22,..._corners.smoothCorners,paddingHorizontal:e.spacing.md},boxDisabled:{backgroundColor:e.colors.field.backgroundDisabled},input:{margin:0,paddingHorizontal:0,includeFontPadding:!1,textAlignVertical:"top"}});var _default=exports.default=Composer;
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
"use strict";Object.defineProperty(exports,"__esModule",{value:!0}),Object.defineProperty(exports,"Composer",{enumerable:!0,get:function(){return _Composer.Composer}}),Object.defineProperty(exports,"default",{enumerable:!0,get:function(){return _Composer.default}});var _Composer=_interopRequireWildcard(require("./Composer.js"));function _interopRequireWildcard(e,r){if("function"==typeof WeakMap)var t=new WeakMap,o=new WeakMap;return(_interopRequireWildcard=function(e,r){if(!r&&e&&e.__esModule)return e;var n,u,i={__proto__:null,default:e};if(null===e||"object"!=typeof e&&"function"!=typeof e)return i;if(n=r?o:t){if(n.has(e))return n.get(e);n.set(e,i)}for(const r in e)"default"!==r&&{}.hasOwnProperty.call(e,r)&&((u=(n=Object.defineProperty)&&Object.getOwnPropertyDescriptor(e,r))&&(u.get||u.set)?n(i,r,u):i[r]=e[r]);return i})(e,r)}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
"use strict";Object.defineProperty(exports,"__esModule",{value:!0}),exports.default=exports.dayLabel=exports.DateSeparator=exports.DEFAULT_DATE_SEPARATOR_LABELS=void 0;var _mobileCore=require("@webority/mobile-core"),_react=require("react"),_reactNative=require("react-native"),_index=require("../../theme/index.js"),_index2=require("../Text/index.js"),_jsxRuntime=require("react/jsx-runtime");const DEFAULT_DATE_SEPARATOR_LABELS=exports.DEFAULT_DATE_SEPARATOR_LABELS=Object.freeze({today:"Today",yesterday:"Yesterday"}),DAY_MS=864e5,dayLabel=(e,t={})=>{const r=(0,_mobileCore.formatDate)(e,{empty:""});if(!r)return"";const a={...DEFAULT_DATE_SEPARATOR_LABELS,...t.labels},o=t.now??new Date;return r===(0,_mobileCore.formatDate)(o)?a.today:r===(0,_mobileCore.formatDate)(new Date(o.getTime()-DAY_MS))?a.yesterday:r};exports.dayLabel=dayLabel;const DateSeparator=({date:e,label:t,emphasis:r=!1,labels:a,now:o,style:i,testID:s})=>{const l=(0,_index.useTheme)(),n=(0,_react.useMemo)(()=>buildStyles(l),[l]),c=t??(void 0===e?"":dayLabel(e,{now:o,labels:a})),d=r?l.colors.primary:l.colors.border.secondary;return(0,_jsxRuntime.jsxs)(_reactNative.View,{style:[n.row,i],testID:s,children:[(0,_jsxRuntime.jsx)(_reactNative.View,{style:[n.rule,{backgroundColor:d}]}),(0,_jsxRuntime.jsx)(_index2.Text,{variant:"caption",weight:r?"semibold":"medium",color:r?l.colors.toneText.primary:"secondary",accessibilityRole:"header",children:c}),(0,_jsxRuntime.jsx)(_reactNative.View,{style:[n.rule,{backgroundColor:d}]})]})};exports.DateSeparator=DateSeparator;const buildStyles=e=>_reactNative.StyleSheet.create({row:{flexDirection:"row",alignItems:"center",gap:e.spacing.sm,paddingVertical:e.spacing.sm},rule:{flex:1,height:_reactNative.StyleSheet.hairlineWidth}});var _default=exports.default=DateSeparator;
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
"use strict";Object.defineProperty(exports,"__esModule",{value:!0}),Object.defineProperty(exports,"DEFAULT_DATE_SEPARATOR_LABELS",{enumerable:!0,get:function(){return _DateSeparator.DEFAULT_DATE_SEPARATOR_LABELS}}),Object.defineProperty(exports,"DateSeparator",{enumerable:!0,get:function(){return _DateSeparator.DateSeparator}}),Object.defineProperty(exports,"dayLabel",{enumerable:!0,get:function(){return _DateSeparator.dayLabel}}),Object.defineProperty(exports,"default",{enumerable:!0,get:function(){return _DateSeparator.default}});var _DateSeparator=_interopRequireWildcard(require("./DateSeparator.js"));function _interopRequireWildcard(e,r){if("function"==typeof WeakMap)var t=new WeakMap,a=new WeakMap;return(_interopRequireWildcard=function(e,r){if(!r&&e&&e.__esModule)return e;var n,o,u={__proto__:null,default:e};if(null===e||"object"!=typeof e&&"function"!=typeof e)return u;if(n=r?a:t){if(n.has(e))return n.get(e);n.set(e,u)}for(const r in e)"default"!==r&&{}.hasOwnProperty.call(e,r)&&((o=(n=Object.defineProperty)&&Object.getOwnPropertyDescriptor(e,r))&&(o.get||o.set)?n(u,r,o):u[r]=e[r]);return u})(e,r)}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
"use strict";Object.defineProperty(exports,"__esModule",{value:!0}),exports.default=exports.FloatingActionButtonGroup=exports.FloatingActionButton=void 0;var _react=_interopRequireWildcard(require("react")),_reactNative=require("react-native"),_reactNativeSafeAreaContext=require("react-native-safe-area-context"),_usePressAnimation=require("../../hooks/usePressAnimation.js"),_index=require("../../theme/index.js"),_color=require("../../utils/color.js"),_corners=require("../../utils/corners.js"),_hapticUtils=require("../../utils/hapticUtils.js"),_jsxRuntime=require("react/jsx-runtime");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 i,o,a={__proto__:null,default:e};if(null===e||"object"!=typeof e&&"function"!=typeof e)return a;if(i=t?n:r){if(i.has(e))return i.get(e);i.set(e,a)}for(const t in e)"default"!==t&&{}.hasOwnProperty.call(e,t)&&((o=(i=Object.defineProperty)&&Object.getOwnPropertyDescriptor(e,t))&&(o.get||o.set)?i(a,t,o):a[t]=e[t]);return a})(e,t)}const sizeMap={sm:{diameter:40,iconSize:18,fontSize:13,labelPaddingHorizontal:14},md:{diameter:56,iconSize:22,fontSize:15,labelPaddingHorizontal:18},lg:{diameter:72,iconSize:28,fontSize:16,labelPaddingHorizontal:22}},toneBackground=(e,t)=>{switch(t){case"success":return e.colors.success;case"warning":return e.colors.warning;case"error":return e.colors.error;case"neutral":return e.colors.background.tertiary;default:return e.colors.primary}},pressedTintFor=(e,t)=>"neutral"===t?e.colors.surface.pressed:_color.ACCENT_PRESSED_TINT,toneForeground=(e,t)=>{if("neutral"===t)return e.colors.text.primary;switch(t){case"success":return e.colors.onSuccess;case"warning":return e.colors.onWarning;case"error":return e.colors.onError;default:return e.colors.onPrimary}},FloatingActionButton=exports.FloatingActionButton=(0,_react.forwardRef)((e,t)=>{const{icon:r,onPress:n,label:i,size:o="md",tone:a="primary",position:s,bottomOffset:l,disabled:c=!1,hideOnScroll:u=!1,isScrolling:d=!1,accessibilityLabel:m,accessibilityHint:p,haptic:g,style:b,containerStyle:f,labelStyle:_,testID:h}=e,y=(0,_index.useTheme)(),x=(0,_reactNativeSafeAreaContext.useSafeAreaInsets)(),v=sizeMap[o],R=(0,_react.useMemo)(()=>buildStyles(y),[y]),{scale:j,pressIn:S,pressOut:N}=(0,_usePressAnimation.usePressAnimation)({enabled:!c}),A=y.components.floatingActionButton,w=A?.edgeOffset??24,C=A?.bottomOffset??24,P=(0,_react.useRef)((0,_index.createAnimatedValue)(0)).current;(0,_react.useEffect)(()=>{if(!u)return void(0,_index.setNativeValue)(P,0);const e=_reactNative.Animated.timing(P,{toValue:d?1:0,duration:y.motion.duration.normal,easing:_reactNative.Easing.bezier(...y.motion.easing.standard),useNativeDriver:!0});return e.start(),()=>e.stop()},[u,d,P,y.motion.duration.normal,y.motion.easing.standard]);const I=P.interpolate({inputRange:[0,1],outputRange:[0,v.diameter+(l??C)+x.bottom+w]}),k=P.interpolate({inputRange:[0,1],outputRange:[1,0]}),E=r,z="string"==typeof i&&i.length>0,F=c?y.colors.surface.disabled:toneBackground(y,a),V=c?y.colors.text.disabled:toneForeground(y,a),D=(0,_react.useMemo)(()=>{if(!s)return null;const e=(l??C)+x.bottom;switch(s){case"bottomLeft":return{position:"absolute",bottom:e,left:w};case"bottomCenter":return{position:"absolute",bottom:e,alignSelf:"center"};default:return{position:"absolute",bottom:e,right:w}}},[s,l,x.bottom,C,w]);return(0,_jsxRuntime.jsx)(_reactNative.Animated.View,{style:[D,{transform:[{translateY:I},{scale:j}],opacity:k},f,b],pointerEvents:u&&d?"none":"auto",children:(0,_jsxRuntime.jsx)(_reactNative.Pressable,{ref:t,onPress:e=>{if(c)return;const t=(0,_hapticUtils.resolveHaptic)(g,"impactLight");t&&(0,_hapticUtils.triggerHaptic)(t),n()},onPressIn:S,onPressOut:N,disabled:c,accessibilityRole:"button",accessibilityLabel:m,accessibilityHint:p,accessibilityState:{disabled:c},"aria-disabled":c,testID:h,style:[R.base,z?{height:v.diameter,paddingHorizontal:v.labelPaddingHorizontal,borderRadius:v.diameter/2,..._corners.smoothCorners}:{width:v.diameter,height:v.diameter,borderRadius:v.diameter/2,..._corners.smoothCorners},y.shadows.lg,{backgroundColor:F,opacity:c?.55:1}],children:({pressed:e})=>(0,_jsxRuntime.jsxs)(_jsxRuntime.Fragment,{children:[e&&!c?(0,_jsxRuntime.jsx)(_reactNative.View,{pointerEvents:"none",testID:"fab-pressed",style:[R.pressedTint,{backgroundColor:pressedTintFor(y,a),borderRadius:v.diameter/2,..._corners.smoothCorners}]}):null,E,z?(0,_jsxRuntime.jsx)(_reactNative.Text,{style:[R.label,{color:V,fontSize:v.fontSize,fontWeight:y.typography.fontWeight.semibold,marginLeft:y.spacing.sm},_],numberOfLines:1,children:i}):null]})})})});FloatingActionButton.displayName="FloatingActionButton";const buildStyles=e=>_reactNative.StyleSheet.create({base:{flexDirection:"row",alignItems:"center",justifyContent:"center",overflow:"hidden"},pressedTint:{position:"absolute",top:0,right:0,bottom:0,left:0},label:{includeFontPadding:!1}}),FloatingActionButtonGroup=e=>{const{primaryIcon:t,primaryActiveIcon:r,actions:n,open:i,defaultOpen:o=!1,onOpenChange:a,position:s="bottomRight",bottomOffset:l,size:c="md",accessibilityLabel:u="Quick actions",haptic:d,hideOnScroll:m=!1,isScrolling:p=!1,containerStyle:g,secondaryActionStyle:b,labelPillStyle:f,labelStyle:_,testID:h}=e,y=(0,_index.useTheme)(),x=(0,_reactNativeSafeAreaContext.useSafeAreaInsets)(),v=sizeMap[c],R=(0,_react.useMemo)(()=>buildGroupStyles(y),[y]),j=y.components.floatingActionButton,S=j?.edgeOffset??24,N=j?.bottomOffset??24,A=j?.secondaryGap??16,w=j?.staggerMs??50,C="boolean"==typeof i,[P,I]=(0,_react.useState)(o),k=C?i:P,E=(0,_react.useRef)((0,_index.createAnimatedValue)(0)).current;(0,_react.useEffect)(()=>{if(!m)return void(0,_index.setNativeValue)(E,0);const e=_reactNative.Animated.timing(E,{toValue:p?1:0,duration:y.motion.duration.normal,easing:_reactNative.Easing.bezier(...y.motion.easing.standard),useNativeDriver:!0});return e.start(),()=>e.stop()},[m,p,E,y.motion.duration.normal,y.motion.easing.standard]);const z=m&&p;(0,_react.useEffect)(()=>{z&&k&&(C||I(!1),a?.(!1))},[z,k,C,a]);const F=E.interpolate({inputRange:[0,1],outputRange:[0,v.diameter+(l??N)+x.bottom+S]}),V=E.interpolate({inputRange:[0,1],outputRange:[1,0]}),D=(0,_react.useRef)((0,_index.createAnimatedValue)(k?1:0)).current,O=(0,_react.useRef)([]),[T,B]=(0,_react.useState)(0);(0,_react.useEffect)(()=>{const e=O.current;if(e.length!==n.length){if(e.length<n.length){const t=e.slice();for(let r=e.length;r<n.length;r+=1)t.push(new _reactNative.Animated.Value(k?1:0));O.current=t}else O.current=e.slice(0,n.length);B(e=>e+1)}},[n.length]),(0,_react.useEffect)(()=>{const e=_reactNative.Animated.timing(D,{toValue:k?1:0,duration:y.motion.duration.normal,easing:_reactNative.Easing.bezier(...y.motion.easing.standard),useNativeDriver:!0});e.start();const t=O.current.map(e=>_reactNative.Animated.timing(e,{toValue:k?1:0,duration:y.motion.duration.normal,easing:_reactNative.Easing.bezier(...y.motion.easing.standard),useNativeDriver:!0})),r=k?t:[...t].reverse(),n=_reactNative.Animated.stagger(w,r);return n.start(),()=>{e.stop(),n.stop()}},[k,D,y.motion.duration.normal,y.motion.easing.standard,n.length,T,w]);const L=(0,_react.useCallback)(e=>{const t=(0,_hapticUtils.resolveHaptic)(d,"impactLight");t&&(0,_hapticUtils.triggerHaptic)(t),C||I(e),a?.(e)},[C,a,d]),M=(0,_react.useCallback)(()=>{L(!k)},[k,L]),H=(0,_react.useCallback)(e=>{!1!==d&&(0,_hapticUtils.triggerHaptic)("selection"),e.onPress(),C||I(!1),a?.(!1)},[C,a,d]),q=(0,_react.useCallback)(()=>{k&&L(!1)},[k,L]),W=(0,_react.useMemo)(()=>{const e=(l??N)+x.bottom;switch(s){case"bottomLeft":return{position:"absolute",bottom:e,left:S,alignItems:"flex-start"};case"bottomCenter":return{position:"absolute",bottom:e,alignSelf:"center",alignItems:"center"};default:return{position:"absolute",bottom:e,right:S,alignItems:"flex-end"}}},[s,l,x.bottom,N,S]),slotOffset=e=>-(v.diameter+A)*(e+1),G=(0,_react.useMemo)(()=>{switch(s){case"bottomLeft":return{left:0,right:0,justifyContent:"flex-start"};case"bottomCenter":return{left:0,right:0,justifyContent:"center"};default:return{left:0,right:0,justifyContent:"flex-end"}}},[s]),U=.78*v.diameter,$=(0,_react.useMemo)(()=>{const e=U+y.spacing.sm;switch(s){case"bottomLeft":return{left:e,alignItems:"flex-start"};case"bottomCenter":return{right:v.diameter/2+U/2+y.spacing.sm,alignItems:"flex-end"};default:return{right:e,alignItems:"flex-end"}}},[s,U,v.diameter,y.spacing.sm]),Y=D.interpolate({inputRange:[0,1],outputRange:[0,.4]}),Q=D.interpolate({inputRange:[0,1],outputRange:["0deg","45deg"]});return(0,_jsxRuntime.jsxs)(_jsxRuntime.Fragment,{children:[k?(0,_jsxRuntime.jsx)(_reactNative.Animated.View,{pointerEvents:k?"auto":"none",style:[_reactNative.StyleSheet.absoluteFill,{backgroundColor:y.colors.background.overlay,opacity:Y}],children:(0,_jsxRuntime.jsx)(_reactNative.Pressable,{style:_reactNative.StyleSheet.absoluteFill,onPress:q,accessibilityElementsHidden:!0,importantForAccessibility:"no",testID:h?`${h}-backdrop`:void 0})}):null,(0,_jsxRuntime.jsxs)(_reactNative.Animated.View,{pointerEvents:z?"none":"box-none",style:[W,{transform:[{translateY:F}],opacity:V},g],accessibilityRole:"menu",testID:h,children:[n.map((e,t)=>{const r=O.current[t];if(!r)return null;const n=r.interpolate({inputRange:[0,1],outputRange:[0,slotOffset(t)]}),i=r.interpolate({inputRange:[0,1],outputRange:[.6,1]}),o=toneBackground(y,e.tone??"primary"),a=toneForeground(y,e.tone??"primary"),s=e.label?(0,_jsxRuntime.jsx)(_reactNative.View,{pointerEvents:"none",style:[R.labelSlot,$],testID:h?`${h}-label-${e.key}`:void 0,children:(0,_jsxRuntime.jsx)(_reactNative.View,{style:[R.labelPill,y.shadows.sm,{backgroundColor:y.colors.background.elevated,paddingHorizontal:y.spacing.sm,paddingVertical:y.spacing.xs,borderRadius:y.radius.sm,..._corners.smoothCorners},f],children:(0,_jsxRuntime.jsx)(_reactNative.Text,{style:[{color:y.colors.text.primary,fontSize:y.typography.fontSize.sm,fontWeight:y.typography.fontWeight.medium},_],numberOfLines:1,children:e.label})})}):null;return(0,_jsxRuntime.jsxs)(_reactNative.Animated.View,{pointerEvents:k?"auto":"none",style:[R.secondaryRow,G,{position:"absolute",bottom:0,opacity:r,transform:[{translateY:n},{scale:i}]}],children:[(0,_jsxRuntime.jsx)(_reactNative.Pressable,{onPress:()=>H(e),accessibilityRole:"menuitem",accessibilityLabel:e.accessibilityLabel,style:[R.fabBase,y.shadows.md,{width:U,height:U,borderRadius:U/2,..._corners.smoothCorners,backgroundColor:o},b],testID:h?`${h}-action-${e.key}`:void 0,children:({pressed:t})=>(0,_jsxRuntime.jsxs)(_jsxRuntime.Fragment,{children:[t?(0,_jsxRuntime.jsx)(_reactNative.View,{pointerEvents:"none",testID:"fab-pressed",style:[R.pressedTint,{backgroundColor:pressedTintFor(y,e.tone??"primary"),borderRadius:U/2,..._corners.smoothCorners}]}):null,_react.default.isValidElement(e.icon)?e.icon:(0,_jsxRuntime.jsx)(_reactNative.Text,{style:{color:a},children:String(e.icon??"")})]})}),s]},e.key)}),(0,_jsxRuntime.jsx)(_reactNative.Pressable,{onPress:M,accessibilityRole:"button",accessibilityLabel:u,accessibilityState:{expanded:k},"aria-expanded":k,style:[R.fabBase,y.shadows.lg,{width:v.diameter,height:v.diameter,borderRadius:v.diameter/2,..._corners.smoothCorners,backgroundColor:y.colors.primary}],testID:h?`${h}-primary`:void 0,children:({pressed:e})=>(0,_jsxRuntime.jsxs)(_jsxRuntime.Fragment,{children:[e?(0,_jsxRuntime.jsx)(_reactNative.View,{pointerEvents:"none",testID:"fab-pressed",style:[R.pressedTint,{backgroundColor:_color.ACCENT_PRESSED_TINT,borderRadius:v.diameter/2,..._corners.smoothCorners}]}):null,(0,_jsxRuntime.jsx)(_reactNative.Animated.View,{style:r?void 0:{transform:[{rotate:Q}]},children:k&&r?r:t})]})})]})]})};exports.FloatingActionButtonGroup=FloatingActionButtonGroup;const buildGroupStyles=e=>_reactNative.StyleSheet.create({fabBase:{flexDirection:"row",alignItems:"center",justifyContent:"center",overflow:"hidden"},pressedTint:{position:"absolute",top:0,right:0,bottom:0,left:0},secondaryRow:{flexDirection:"row",alignItems:"center"},labelSlot:{position:"absolute",top:0,bottom:0,justifyContent:"center"},labelPill:{alignSelf:"auto"}});var _default=exports.default=FloatingActionButton;
|
|
1
|
+
"use strict";Object.defineProperty(exports,"__esModule",{value:!0}),exports.default=exports.FloatingActionButtonGroup=exports.FloatingActionButton=void 0;var _react=_interopRequireWildcard(require("react")),_reactNative=require("react-native"),_reactNativeSafeAreaContext=require("react-native-safe-area-context"),_usePressAnimation=require("../../hooks/usePressAnimation.js"),_index=require("../../theme/index.js"),_announce=require("../../utils/announce.js"),_color=require("../../utils/color.js"),_corners=require("../../utils/corners.js"),_hapticUtils=require("../../utils/hapticUtils.js"),_jsxRuntime=require("react/jsx-runtime");function _interopRequireWildcard(e,t){if("function"==typeof WeakMap)var n=new WeakMap,r=new WeakMap;return(_interopRequireWildcard=function(e,t){if(!t&&e&&e.__esModule)return e;var i,o,a={__proto__:null,default:e};if(null===e||"object"!=typeof e&&"function"!=typeof e)return a;if(i=t?r:n){if(i.has(e))return i.get(e);i.set(e,a)}for(const t in e)"default"!==t&&{}.hasOwnProperty.call(e,t)&&((o=(i=Object.defineProperty)&&Object.getOwnPropertyDescriptor(e,t))&&(o.get||o.set)?i(a,t,o):a[t]=e[t]);return a})(e,t)}const sizeMap={sm:{diameter:40,iconSize:18,fontSize:13,labelPaddingHorizontal:14},md:{diameter:56,iconSize:22,fontSize:15,labelPaddingHorizontal:18},lg:{diameter:72,iconSize:28,fontSize:16,labelPaddingHorizontal:22}},toneBackground=(e,t)=>{switch(t){case"success":return e.colors.success;case"warning":return e.colors.warning;case"error":return e.colors.error;case"neutral":return e.colors.background.tertiary;default:return e.colors.primary}},pressedTintFor=(e,t)=>"neutral"===t?e.colors.surface.pressed:_color.ACCENT_PRESSED_TINT,toneForeground=(e,t)=>{if("neutral"===t)return e.colors.text.primary;switch(t){case"success":return e.colors.onSuccess;case"warning":return e.colors.onWarning;case"error":return e.colors.onError;default:return e.colors.onPrimary}},FloatingActionButton=exports.FloatingActionButton=(0,_react.forwardRef)((e,t)=>{const{icon:n,onPress:r,label:i,size:o="md",tone:a="primary",position:s,bottomOffset:c,disabled:l=!1,hideOnScroll:u=!1,isScrolling:d=!1,accessibilityLabel:m,accessibilityHint:p,haptic:g,style:b,containerStyle:_,labelStyle:f,testID:h}=e,y=(0,_index.useTheme)(),x=(0,_reactNativeSafeAreaContext.useSafeAreaInsets)(),v=sizeMap[o],R=(0,_react.useMemo)(()=>buildStyles(y),[y]),{scale:j,pressIn:S,pressOut:A}=(0,_usePressAnimation.usePressAnimation)({enabled:!l}),N=y.components.floatingActionButton,w=N?.edgeOffset??24,C=N?.bottomOffset??24,P=(0,_react.useRef)((0,_index.createAnimatedValue)(0)).current;(0,_react.useEffect)(()=>{if(!u)return void(0,_index.setNativeValue)(P,0);const e=_reactNative.Animated.timing(P,{toValue:d?1:0,duration:y.motion.duration.normal,easing:_reactNative.Easing.bezier(...y.motion.easing.standard),useNativeDriver:!0});return e.start(),()=>e.stop()},[u,d,P,y.motion.duration.normal,y.motion.easing.standard]);const E=P.interpolate({inputRange:[0,1],outputRange:[0,v.diameter+(c??C)+x.bottom+w]}),I=P.interpolate({inputRange:[0,1],outputRange:[1,0]}),F=n,k="string"==typeof i&&i.length>0,z=l?y.colors.surface.disabled:toneBackground(y,a),O=l?y.colors.text.disabled:toneForeground(y,a),V=(0,_react.useMemo)(()=>{if(!s)return null;const e=(c??C)+x.bottom;switch(s){case"bottomLeft":return{position:"absolute",bottom:e,left:w};case"bottomCenter":return{position:"absolute",bottom:e,alignSelf:"center"};default:return{position:"absolute",bottom:e,right:w}}},[s,c,x.bottom,C,w]);return(0,_jsxRuntime.jsx)(_reactNative.Animated.View,{style:[V,{transform:[{translateY:E},{scale:j}],opacity:I},_,b],pointerEvents:u&&d?"none":"auto",children:(0,_jsxRuntime.jsx)(_reactNative.Pressable,{ref:t,onPress:e=>{if(l)return;const t=(0,_hapticUtils.resolveHaptic)(g,"impactLight");t&&(0,_hapticUtils.triggerHaptic)(t),r()},onPressIn:S,onPressOut:A,disabled:l,accessibilityRole:"button",accessibilityLabel:m,accessibilityHint:p,accessibilityState:{disabled:l},"aria-disabled":l,testID:h,style:[R.base,k?{height:v.diameter,paddingHorizontal:v.labelPaddingHorizontal,borderRadius:v.diameter/2,..._corners.smoothCorners}:{width:v.diameter,height:v.diameter,borderRadius:v.diameter/2,..._corners.smoothCorners},y.shadows.lg,{backgroundColor:z,opacity:l?.55:1}],children:({pressed:e})=>(0,_jsxRuntime.jsxs)(_jsxRuntime.Fragment,{children:[e&&!l?(0,_jsxRuntime.jsx)(_reactNative.View,{pointerEvents:"none",testID:"fab-pressed",style:[R.pressedTint,{backgroundColor:pressedTintFor(y,a),borderRadius:v.diameter/2,..._corners.smoothCorners}]}):null,F,k?(0,_jsxRuntime.jsx)(_reactNative.Text,{style:[R.label,{color:O,fontSize:v.fontSize,fontWeight:y.typography.fontWeight.semibold,marginLeft:y.spacing.sm},f],numberOfLines:1,children:i}):null]})})})});FloatingActionButton.displayName="FloatingActionButton";const buildStyles=e=>_reactNative.StyleSheet.create({base:{flexDirection:"row",alignItems:"center",justifyContent:"center",overflow:"hidden"},pressedTint:{position:"absolute",top:0,right:0,bottom:0,left:0},label:{includeFontPadding:!1}}),FAB_GROUP_MIN_ACTIONS=2,FAB_GROUP_MAX_ACTIONS=6,FAB_GROUP_RANGE="2 to 6",describeActionProblem=e=>e.length<2?`was given ${e.length} action(s); a menu holds 2 to 6.`:e.length>6?`was given ${e.length} actions; a menu holds 2 to 6, so only the first 6 are drawn.`:e.some(e=>"string"!=typeof e.label||""===e.label.trim())?"has an action without a visible `label`; every menu action needs one.":"",FloatingActionButtonGroup=e=>{const{primaryIcon:t,primaryActiveIcon:n,actions:r,open:i,defaultOpen:o=!1,onOpenChange:a,position:s="bottomRight",bottomOffset:c,size:l="md",accessibilityLabel:u="Quick actions",haptic:d,hideOnScroll:m=!1,isScrolling:p=!1,containerStyle:g,secondaryActionStyle:b,labelPillStyle:_,labelStyle:f,testID:h}=e,y=(0,_index.useTheme)(),x=(0,_reactNativeSafeAreaContext.useSafeAreaInsets)(),v=sizeMap[l],R=(0,_react.useMemo)(()=>buildGroupStyles(y),[y]),j=y.components.floatingActionButton,S=j?.edgeOffset??24,A=j?.bottomOffset??24,N=j?.secondaryGap??16,w=j?.staggerMs??50,C=(0,_react.useMemo)(()=>r.slice(0,6),[r]),P=C.length,E=(0,_react.useMemo)(()=>C.map((e,t)=>({action:e,index:t})).reverse(),[C]),I=__DEV__?describeActionProblem(r):"";(0,_react.useEffect)(()=>{__DEV__&&I&&console.warn(`[@webority/mobile-ui] FloatingActionButtonGroup ${I}`)},[I]);const F="boolean"==typeof i,[k,z]=(0,_react.useState)(o),O=F?i:k,V=(0,_react.useRef)((0,_index.createAnimatedValue)(0)).current;(0,_react.useEffect)(()=>{if(!m)return void(0,_index.setNativeValue)(V,0);const e=_reactNative.Animated.timing(V,{toValue:p?1:0,duration:y.motion.duration.normal,easing:_reactNative.Easing.bezier(...y.motion.easing.standard),useNativeDriver:!0});return e.start(),()=>e.stop()},[m,p,V,y.motion.duration.normal,y.motion.easing.standard]);const D=m&&p;(0,_react.useEffect)(()=>{D&&O&&(F||z(!1),a?.(!1))},[D,O,F,a]);const B=V.interpolate({inputRange:[0,1],outputRange:[0,v.diameter+(c??A)+x.bottom+S]}),T=V.interpolate({inputRange:[0,1],outputRange:[1,0]}),M=(0,_react.useRef)((0,_index.createAnimatedValue)(O?1:0)).current,H=(0,_react.useRef)([]),[L,q]=(0,_react.useState)(0);(0,_react.useEffect)(()=>{const e=H.current;if(e.length!==P){if(e.length<P){const t=e.slice();for(let n=e.length;n<P;n+=1)t.push(new _reactNative.Animated.Value(O?1:0));H.current=t}else H.current=e.slice(0,P);q(e=>e+1)}},[P]),(0,_react.useEffect)(()=>{const e=_reactNative.Animated.timing(M,{toValue:O?1:0,duration:y.motion.duration.normal,easing:_reactNative.Easing.bezier(...y.motion.easing.standard),useNativeDriver:!0});e.start();const t=H.current.map(e=>_reactNative.Animated.timing(e,{toValue:O?1:0,duration:y.motion.duration.normal,easing:_reactNative.Easing.bezier(...y.motion.easing.standard),useNativeDriver:!0})),n=O?t:[...t].reverse(),r=_reactNative.Animated.stagger(w,n);return r.start(),()=>{e.stop(),r.stop()}},[O,M,y.motion.duration.normal,y.motion.easing.standard,P,L,w]);const $=(0,_react.useCallback)(e=>{const t=(0,_hapticUtils.resolveHaptic)(d,"impactLight");t&&(0,_hapticUtils.triggerHaptic)(t),F||z(e),a?.(e)},[F,a,d]),G=(0,_react.useRef)(null),W=(0,_react.useRef)(O),U=(0,_react.useRef)(!1);(0,_react.useEffect)(()=>{if(W.current===O)return;W.current=O;const e=U.current;if(U.current=!1,D||e)return;const t=G.current;t&&("web"===_reactNative.Platform.OS?t.focus?.():_reactNative.AccessibilityInfo.sendAccessibilityEvent(t,"focus"));const n=1===P?"action":"actions";(0,_announce.announce)(O?`${u}, expanded, ${P} ${n}`:`${u}, collapsed`)},[O,D,u,P]);const Y=(0,_react.useCallback)(()=>{$(!O)},[O,$]),Q=(0,_react.useCallback)(e=>{!1!==d&&(0,_hapticUtils.triggerHaptic)("selection"),U.current=!0,e.onPress(),F||z(!1),a?.(!1)},[F,a,d]),X=(0,_react.useCallback)(()=>{O&&$(!1)},[O,$]),J=(0,_react.useMemo)(()=>{const e=(c??A)+x.bottom;switch(s){case"bottomLeft":return{position:"absolute",bottom:e,left:S,alignItems:"flex-start"};case"bottomCenter":return{position:"absolute",bottom:e,alignSelf:"center",alignItems:"center"};default:return{position:"absolute",bottom:e,right:S,alignItems:"flex-end"}}},[s,c,x.bottom,A,S]),slotOffset=e=>-(v.diameter+N)*(e+1),K=(0,_react.useMemo)(()=>{switch(s){case"bottomLeft":return{left:0,right:0,justifyContent:"flex-start"};case"bottomCenter":return{left:0,right:0,justifyContent:"center"};default:return{left:0,right:0,justifyContent:"flex-end"}}},[s]),Z=.78*v.diameter,ee=(0,_react.useMemo)(()=>{const e=Z+y.spacing.sm;switch(s){case"bottomLeft":return{left:e,alignItems:"flex-start"};case"bottomCenter":return{right:v.diameter/2+Z/2+y.spacing.sm,alignItems:"flex-end"};default:return{right:e,alignItems:"flex-end"}}},[s,Z,v.diameter,y.spacing.sm]),te=M.interpolate({inputRange:[0,1],outputRange:[0,.4]}),ne=M.interpolate({inputRange:[0,1],outputRange:["0deg","45deg"]});return(0,_jsxRuntime.jsxs)(_jsxRuntime.Fragment,{children:[O?(0,_jsxRuntime.jsx)(_reactNative.Animated.View,{pointerEvents:O?"auto":"none",style:[_reactNative.StyleSheet.absoluteFill,{backgroundColor:y.colors.background.overlay,opacity:te}],children:(0,_jsxRuntime.jsx)(_reactNative.Pressable,{style:_reactNative.StyleSheet.absoluteFill,onPress:X,accessibilityElementsHidden:!0,importantForAccessibility:"no",testID:h?`${h}-backdrop`:void 0})}):null,(0,_jsxRuntime.jsxs)(_reactNative.Animated.View,{pointerEvents:D?"none":"box-none",style:[J,{transform:[{translateY:B}],opacity:T},g],accessibilityRole:"menu",testID:h,children:[E.map(({action:e,index:t})=>{const n=H.current[t];if(!n)return null;const r=n.interpolate({inputRange:[0,1],outputRange:[0,slotOffset(t)]}),i=n.interpolate({inputRange:[0,1],outputRange:[.6,1]}),o=toneBackground(y,e.tone??"primary"),a=toneForeground(y,e.tone??"primary"),s=e.label?(0,_jsxRuntime.jsx)(_reactNative.View,{pointerEvents:"none",style:[R.labelSlot,ee],testID:h?`${h}-label-${e.key}`:void 0,children:(0,_jsxRuntime.jsx)(_reactNative.View,{style:[R.labelPill,y.shadows.sm,{backgroundColor:y.colors.background.elevated,paddingHorizontal:y.spacing.sm,paddingVertical:y.spacing.xs,borderRadius:y.radius.sm,..._corners.smoothCorners},_],children:(0,_jsxRuntime.jsx)(_reactNative.Text,{style:[{color:y.colors.text.primary,fontSize:y.typography.fontSize.sm,fontWeight:y.typography.fontWeight.medium},f],numberOfLines:1,children:e.label})})}):null;return(0,_jsxRuntime.jsxs)(_reactNative.Animated.View,{pointerEvents:O?"auto":"none",accessibilityElementsHidden:!O,importantForAccessibility:O?"auto":"no-hide-descendants","aria-hidden":!O,style:[R.secondaryRow,K,{position:"absolute",bottom:0,opacity:n,transform:[{translateY:r},{scale:i}]}],children:[(0,_jsxRuntime.jsx)(_reactNative.Pressable,{onPress:()=>Q(e),focusable:O,accessibilityRole:"menuitem",accessibilityLabel:e.accessibilityLabel,style:[R.fabBase,y.shadows.md,{width:Z,height:Z,borderRadius:Z/2,..._corners.smoothCorners,backgroundColor:o},b],testID:h?`${h}-action-${e.key}`:void 0,children:({pressed:t})=>(0,_jsxRuntime.jsxs)(_jsxRuntime.Fragment,{children:[t?(0,_jsxRuntime.jsx)(_reactNative.View,{pointerEvents:"none",testID:"fab-pressed",style:[R.pressedTint,{backgroundColor:pressedTintFor(y,e.tone??"primary"),borderRadius:Z/2,..._corners.smoothCorners}]}):null,_react.default.isValidElement(e.icon)?e.icon:(0,_jsxRuntime.jsx)(_reactNative.Text,{style:{color:a},children:String(e.icon??"")})]})}),s]},e.key)}),(0,_jsxRuntime.jsx)(_reactNative.Pressable,{ref:G,onPress:Y,accessibilityRole:"button",accessibilityLabel:u,accessibilityState:{expanded:O},"aria-expanded":O,style:[R.fabBase,y.shadows.lg,{width:v.diameter,height:v.diameter,borderRadius:v.diameter/2,..._corners.smoothCorners,backgroundColor:y.colors.primary}],testID:h?`${h}-primary`:void 0,children:({pressed:e})=>(0,_jsxRuntime.jsxs)(_jsxRuntime.Fragment,{children:[e?(0,_jsxRuntime.jsx)(_reactNative.View,{pointerEvents:"none",testID:"fab-pressed",style:[R.pressedTint,{backgroundColor:_color.ACCENT_PRESSED_TINT,borderRadius:v.diameter/2,..._corners.smoothCorners}]}):null,(0,_jsxRuntime.jsx)(_reactNative.Animated.View,{style:n?void 0:{transform:[{rotate:ne}]},children:O&&n?n:t})]})})]})]})};exports.FloatingActionButtonGroup=FloatingActionButtonGroup;const buildGroupStyles=e=>_reactNative.StyleSheet.create({fabBase:{flexDirection:"row",alignItems:"center",justifyContent:"center",overflow:"hidden"},pressedTint:{position:"absolute",top:0,right:0,bottom:0,left:0},secondaryRow:{flexDirection:"row",alignItems:"center"},labelSlot:{position:"absolute",top:0,bottom:0,justifyContent:"center"},labelPill:{alignSelf:"auto"}});var _default=exports.default=FloatingActionButton;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
"use strict";Object.defineProperty(exports,"__esModule",{value:!0}),exports.default=exports.Input=void 0;var _react=require("react"),_reactNative=require("react-native"),_index=require("../../hooks/index.js"),_index2=require("../../theme/index.js"),_index3=require("../../utils/index.js"),_defaultIcons=require("../AppIcon/defaultIcons.js"),_slotIcon=require("../AppIcon/slotIcon.js"),_index4=require("../Button/index.js"),_FieldBase=require("../FieldBase/FieldBase.js"),_useFloatingLabel=require("../FieldBase/useFloatingLabel.js"),_jsxRuntime=require("react/jsx-runtime");const multilineMinHeightMap={sm:72,md:92,lg:110},Input=exports.Input=(0,_react.forwardRef)((e,t)=>{const{label:i,help:n,placeholder:a,value:r,onChangeText:o,error:l,helperText:s,type:d="input",secureTextEntry:c=!1,showPasswordToggle:u=!1,disabled:p=!1,multiline:x=!1,leftIcon:f,rightIcon:g,unit:m,unitStyle:_,prefix:v,prefixStyle:h,readOnly:y=!1,action:b,actionStyle:j,size:S="md",variant:F,labelMode:R,required:N=!1,maxLength:w,showCounter:I=!0,textAlign:z,format:T,parse:V,style:B,containerStyle:A,inputStyle:k,labelStyle:C,messageStyle:D,borderRadius:L,onFocus:q,onBlur:H,accessibilityLabel:M,testID:P,editable:E,...O}=e,G=(0,_index2.useTheme)(),W=(0,_react.useMemo)(()=>buildStyles(G),[G]),$=(0,_FieldBase.resolveFieldSize)(G,S),X=multilineMinHeightMap[S],J=Math.round(1.4*$.fontSize),K=F??G.components.input?.defaultVariant??G.components.field?.defaultVariant??"outlined",Q=R??G.components.input?.defaultLabelMode??"top",[U,Y]=(0,_react.useState)(!1),[Z,ee]=(0,_react.useState)(!1),te="password"===d||u||c,ie="password"===d||u,ne="textarea"===d||x,ae=ne?Math.round(.1*$.fontSize):0,re="string"==typeof r&&r.length>0,oe=(0,_FieldBase.hasFieldText)(l),le=!0===l||oe,se=(0,_FieldBase.hasFieldText)(s),de=oe||!le&&se,ce=(0,_FieldBase.hasFieldText)(i),ue=(0,_FieldBase.hasFieldText)(v),pe=!p&&!1!==E,xe=U||re||ue,fe=(0,_react.useRef)(null),ge=(0,_react.useMemo)(()=>(0,_index3.mergeRefs)(fe,t),[t]),me=(0,_react.useCallback)(()=>{pe&&fe.current?.focus()},[pe]),_e=ce&&"float"===Q,ve=(0,_react.useRef)((0,_index2.createAnimatedValue)(0)).current,he=(0,_react.useRef)((0,_index2.createAnimatedValue)(de?1:0)).current;(0,_react.useEffect)(()=>{const e=_reactNative.Animated.timing(he,{toValue:de?1:0,duration:G.motion.duration.fast,easing:_reactNative.Easing.bezier(...G.motion.easing.standard),useNativeDriver:!0});return e.start(),()=>e.stop()},[de,he,G.motion.duration.fast,G.motion.easing.standard]);const ye=(0,_index.useReducedMotion)(),be=G.components.input?.shakeOnError??!1,je=(0,_react.useRef)(le);(0,_react.useEffect)(()=>{if(!be)return void(je.current=le);let e;return le&&!je.current&&(ye||((0,_index2.setNativeValue)(ve,0),e=_reactNative.Animated.sequence([_reactNative.Animated.timing(ve,{toValue:1,duration:50,useNativeDriver:!0}),_reactNative.Animated.timing(ve,{toValue:-1,duration:50,useNativeDriver:!0}),_reactNative.Animated.timing(ve,{toValue:1,duration:50,useNativeDriver:!0}),_reactNative.Animated.timing(ve,{toValue:-1,duration:50,useNativeDriver:!0}),_reactNative.Animated.timing(ve,{toValue:0,duration:100,useNativeDriver:!0})]),e.start()),(0,_index3.triggerHaptic)("notificationError")),je.current=le,()=>e?.stop()},[le,ve,be,ye]);const Se=(0,_react.useCallback)(e=>{Y(!0),q?.(e)},[q]),Fe=(0,_react.useCallback)(e=>{Y(!1),H?.(e)},[H]),Re=(0,_react.useCallback)(()=>{(0,_index3.triggerHaptic)("selection"),ee(e=>!e)},[]),Ne=(0,_react.useMemo)(()=>{const e=G.components.input?.fillColors?.[K];if(!e)return;const t={};return void 0!==e.idleEmpty&&(t.backgroundIdleEmpty=e.idleEmpty),void 0!==e.idleFilled&&(t.backgroundIdleFilled=e.idleFilled),void 0!==e.focus&&(t.backgroundFocused=e.focus),void 0!==e.error&&(t.backgroundError=e.error),void 0!==e.disabled&&(t.backgroundDisabled=e.disabled),Object.keys(t).length>0?t:void 0},[G.components.input?.fillColors,K]),we=G.colors.field.caret,Ie=L??G.components.input?.borderRadius,ze=G.components.input?.tintLabelOnFocus??!1,Te=U&&ze?G.colors.field.borderFocused:G.colors.field.label,Ve=ve.interpolate({inputRange:[-1,0,1],outputRange:[-6,0,6]}),Be=Boolean(g)||Boolean(m)||ie,Ae="underline"===K,ke=f?$.iconSize+G.spacing.md+1+G.spacing.md:0,Ce=(0,_useFloatingLabel.useFloatingLabel)({label:i,enabled:_e,floated:xe,required:N,variant:K,sizeTokens:$,leadingOffset:ke,trailingOffset:Be?$.iconSize+G.spacing.sm:0,textAlign:z,paddingLeft:Ae?0:$.paddingHorizontal,lineHeight:ne?J:void 0,restNudge:ae,floatTrim:ne?2:0,color:Te,style:C}),De=(0,_FieldBase.resolveFieldTextStyle)(G,{disabled:p}),Le=De.color,qe=De.placeholderColor,He=N&&!ce&&!re&&"string"==typeof a&&a.length>0,Me=le?l:s,Pe=I&&"number"==typeof w&&"string"==typeof r?`${r.length} / ${w}`:null,Ee=le?G.colors.field.message:G.colors.text.secondary,Oe=M??(0,_FieldBase.fieldTextAsString)(i)??a,Ge=G.colors.field,We=p?Ge.iconDisabled:U?Ge.iconFocused:Ge.icon,$e={focused:U,disabled:p,error:le,color:We,size:$.iconSize},renderSlot=e=>(0,_slotIcon.renderSlotIcon)(e,$e),Xe=(()=>{if(ie){const e=(Z?G.icons?.eyeOff:G.icons?.eye)??(Z?_defaultIcons.defaultIcons.eyeOff:_defaultIcons.defaultIcons.eye);return(0,_jsxRuntime.jsx)(_reactNative.Pressable,{onPress:Re,disabled:!pe,hitSlop:8,accessibilityRole:"button",accessibilityLabel:Z?"Hide password":"Show password",children:e({size:$.iconSize,color:We})})}const e=m?(0,_jsxRuntime.jsx)(_reactNative.Text,{style:[W.unit,{fontSize:$.fontSize,color:qe},_],children:m}):null,t=g?(0,_jsxRuntime.jsx)(_reactNative.View,{children:renderSlot(g)}):null;return e&&t?(0,_jsxRuntime.jsxs)(_reactNative.View,{style:W.trailingRow,children:[e,t]}):e??t})(),Je=f?(0,_jsxRuntime.jsx)(_reactNative.View,{children:renderSlot(f)}):null,Ke=ue?"string"==typeof v||"number"==typeof v?(0,_jsxRuntime.jsx)(_reactNative.Text,{style:[W.prefix,{fontSize:$.fontSize,color:qe,marginRight:G.spacing.xs,lineHeight:ne?J:void 0,paddingTop:ne?ae:void 0},h],children:v}):(0,_jsxRuntime.jsx)(_reactNative.View,{style:[W.prefixNode,{marginRight:G.spacing.xs,minHeight:ne?J:void 0,justifyContent:"center",paddingTop:ne?ae:void 0}],children:v}):null,Qe=b?(0,_jsxRuntime.jsx)(_index4.Button,{variant:b.variant??"outline",tone:b.tone??"primary",size:S,title:b.label,leftIcon:b.icon,loading:b.loading,disabled:p||b.disabled,onPress:b.onPress,pressAnimation:!1,testID:b.testID,style:[W.action,{minHeight:$.minHeight,alignSelf:ne?"flex-start":"stretch"},j]}):null;return(0,_jsxRuntime.jsxs)(_reactNative.Animated.View,{style:[W.container,{transform:[{translateX:Ve}]},B],children:[ce&&!_e?(0,_jsxRuntime.jsx)(_FieldBase.FieldLabel,{size:S,required:N,help:n,color:Te,style:C,children:i}):null,(0,_jsxRuntime.jsxs)(_reactNative.View,{style:[W.fieldRow,{columnGap:G.spacing.sm,alignItems:ne?"flex-start":"stretch"}],children:[(0,_jsxRuntime.jsxs)(_reactNative.View,{style:W.fieldWrapper,children:[(0,_jsxRuntime.jsxs)(_FieldBase.FieldBase,{size:S,variant:K,focused:U,disabled:p,error:le,filled:re,minHeight:ne?X:void 0,borderRadius:Ie,fillOverrides:Ne,leading:Je,leadingDivider:null!=f,paddingLeft:Ae?0:void 0,trailing:Xe,slotAlign:ne?"top":"center",slotLineHeight:ne?J:void 0,topNotch:Ce.topNotch,onPress:me,pressFeedback:!1,style:A,children:[Ke,(0,_jsxRuntime.jsxs)(_reactNative.View,{style:W.inputWrap,children:[(0,_jsxRuntime.jsx)(_reactNative.TextInput,{ref:ge,style:[W.input,{color:Le,fontSize:$.fontSize,...De.weightStyle,paddingLeft:Ae?0:void 0,minHeight:ne?X-2*$.paddingVertical:void 0,lineHeight:ne?J:void 0,paddingTop:ne?ae:void 0,textAlignVertical:ne?"top":"center"},k],textAlign:z,placeholder:_e&&!xe||He?void 0:a,placeholderTextColor:qe,value:T&&null!=r?T(r):r,onChangeText:e=>{o&&o(V?V(e):e)},onFocus:Se,onBlur:Fe,editable:pe,readOnly:y,secureTextEntry:te&&!Z,multiline:ne,autoCapitalize:te?"none":void 0,autoCorrect:!te&&void 0,maxLength:w,selectionColor:we,accessibilityLabel:Oe,accessibilityState:{disabled:p},"aria-disabled":p,testID:P,...O}),He?(0,_jsxRuntime.jsx)(_FieldBase.RequiredPlaceholder,{text:a,color:qe,fontSize:$.fontSize,weightStyle:De.weightStyle,align:ne?"top":"center",paddingTop:ne?ae:void 0,textAlign:z}):null]})]}),Ce.node]}),Qe]}),de||Pe?(0,_jsxRuntime.jsxs)(_reactNative.View,{style:[W.footerRow,{marginTop:$.messageGap}],children:[de?(0,_jsxRuntime.jsxs)(_reactNative.Animated.View,{style:[W.messageRow,{columnGap:G.spacing.xs+2,opacity:he}],accessibilityLiveRegion:le?"polite":"none",children:[le?(0,_jsxRuntime.jsx)(_FieldBase.FieldErrorGlyph,{size:$.messageFontSize,color:Ee}):null,(0,_jsxRuntime.jsx)(_reactNative.Text,{style:[W.messageText,{color:Ee,fontSize:$.messageFontSize,...(0,_index2.fontFor)(G,"normal")},D],children:Me})]}):(0,_jsxRuntime.jsx)(_reactNative.View,{style:W.footerSpacer}),Pe?(0,_jsxRuntime.jsx)(_reactNative.Text,{style:[W.counterText,{color:G.colors.text.tertiary,fontSize:$.messageFontSize,...(0,_index2.fontFor)(G,"normal")}],children:Pe}):null]}):null]})});Input.displayName="Input";const buildStyles=e=>_reactNative.StyleSheet.create({container:{width:"100%"},fieldRow:{flexDirection:"row"},fieldWrapper:{position:"relative",overflow:"visible",flex:1},action:{flexShrink:0},input:{padding:0,margin:0,includeFontPadding:!1},prefix:{flexShrink:0,includeFontPadding:!1},prefixNode:{flexShrink:0},inputWrap:{flex:1,alignSelf:"stretch",justifyContent:"center"},unit:{includeFontPadding:!1},trailingRow:{flexDirection:"row",alignItems:"center",columnGap:8},footerRow:{flexDirection:"row",alignItems:"center",justifyContent:"space-between",columnGap:8},footerSpacer:{flex:1},messageRow:{flex:1,flexDirection:"row",alignItems:"center"},messageText:{flexShrink:1,includeFontPadding:!1},counterText:{flexShrink:0,includeFontPadding:!1}});var _default=exports.default=Input;
|
|
1
|
+
"use strict";Object.defineProperty(exports,"__esModule",{value:!0}),exports.default=exports.Input=void 0;var _react=require("react"),_reactNative=require("react-native"),_index=require("../../hooks/index.js"),_index2=require("../../theme/index.js"),_index3=require("../../utils/index.js"),_defaultIcons=require("../AppIcon/defaultIcons.js"),_slotIcon=require("../AppIcon/slotIcon.js"),_index4=require("../Button/index.js"),_FieldBase=require("../FieldBase/FieldBase.js"),_useFloatingLabel=require("../FieldBase/useFloatingLabel.js"),_Notation=require("../Notation/Notation.js"),_jsxRuntime=require("react/jsx-runtime");const multilineMinHeightMap={sm:72,md:92,lg:110},Input=exports.Input=(0,_react.forwardRef)((e,t)=>{const{label:i,help:n,placeholder:o,value:a,onChangeText:r,error:l,helperText:s,type:d="input",secureTextEntry:c=!1,showPasswordToggle:u=!1,disabled:x=!1,multiline:p=!1,leftIcon:f,rightIcon:g,unit:m,unitStyle:_,prefix:v,prefixStyle:h,readOnly:y=!1,action:j,actionStyle:b,size:S="md",variant:R,labelMode:F,required:N=!1,maxLength:w,showCounter:z=!0,textAlign:I,format:T,parse:V,style:B,containerStyle:A,inputStyle:k,labelStyle:C,messageStyle:q,borderRadius:D,onFocus:L,onBlur:H,accessibilityLabel:M,testID:P,editable:E,...O}=e,G=(0,_index2.useTheme)(),W=(0,_react.useMemo)(()=>buildStyles(G),[G]),$=(0,_FieldBase.resolveFieldSize)(G,S),X=multilineMinHeightMap[S],J=Math.round(1.4*$.fontSize),K=R??G.components.input?.defaultVariant??G.components.field?.defaultVariant??"outlined",Q=F??G.components.input?.defaultLabelMode??"top",[U,Y]=(0,_react.useState)(!1),[Z,ee]=(0,_react.useState)(!1),te="password"===d||u||c,ie="password"===d||u,ne="textarea"===d||p,oe=ne?Math.round(.1*$.fontSize):0,ae="string"==typeof a&&a.length>0,re=(0,_FieldBase.hasFieldText)(l),le=!0===l||re,se=(0,_FieldBase.hasFieldText)(s),de=re||!le&&se,ce=(0,_FieldBase.hasFieldText)(i),ue=(0,_FieldBase.hasFieldText)(v),xe=!x&&!1!==E,pe=U||ae||ue,fe=(0,_react.useRef)(null),ge=(0,_react.useMemo)(()=>(0,_index3.mergeRefs)(fe,t),[t]),me=(0,_react.useCallback)(()=>{xe&&fe.current?.focus()},[xe]),_e=ce&&"float"===Q,ve=(0,_react.useRef)((0,_index2.createAnimatedValue)(0)).current,he=(0,_react.useRef)((0,_index2.createAnimatedValue)(de?1:0)).current;(0,_react.useEffect)(()=>{const e=_reactNative.Animated.timing(he,{toValue:de?1:0,duration:G.motion.duration.fast,easing:_reactNative.Easing.bezier(...G.motion.easing.standard),useNativeDriver:!0});return e.start(),()=>e.stop()},[de,he,G.motion.duration.fast,G.motion.easing.standard]);const ye=(0,_index.useReducedMotion)(),je=G.components.input?.shakeOnError??!1,be=(0,_react.useRef)(le);(0,_react.useEffect)(()=>{if(!je)return void(be.current=le);let e;return le&&!be.current&&(ye||((0,_index2.setNativeValue)(ve,0),e=_reactNative.Animated.sequence([_reactNative.Animated.timing(ve,{toValue:1,duration:50,useNativeDriver:!0}),_reactNative.Animated.timing(ve,{toValue:-1,duration:50,useNativeDriver:!0}),_reactNative.Animated.timing(ve,{toValue:1,duration:50,useNativeDriver:!0}),_reactNative.Animated.timing(ve,{toValue:-1,duration:50,useNativeDriver:!0}),_reactNative.Animated.timing(ve,{toValue:0,duration:100,useNativeDriver:!0})]),e.start()),(0,_index3.triggerHaptic)("notificationError")),be.current=le,()=>e?.stop()},[le,ve,je,ye]);const Se=(0,_react.useCallback)(e=>{Y(!0),L?.(e)},[L]),Re=(0,_react.useCallback)(e=>{Y(!1),H?.(e)},[H]),Fe=(0,_react.useCallback)(()=>{(0,_index3.triggerHaptic)("selection"),ee(e=>!e)},[]),Ne=(0,_react.useMemo)(()=>{const e=G.components.input?.fillColors?.[K];if(!e)return;const t={};return void 0!==e.idleEmpty&&(t.backgroundIdleEmpty=e.idleEmpty),void 0!==e.idleFilled&&(t.backgroundIdleFilled=e.idleFilled),void 0!==e.focus&&(t.backgroundFocused=e.focus),void 0!==e.error&&(t.backgroundError=e.error),void 0!==e.disabled&&(t.backgroundDisabled=e.disabled),Object.keys(t).length>0?t:void 0},[G.components.input?.fillColors,K]),we=G.colors.field.caret,ze=D??G.components.input?.borderRadius,Ie=G.components.input?.tintLabelOnFocus??!1,Te=U&&Ie?G.colors.field.borderFocused:G.colors.field.label,Ve=ve.interpolate({inputRange:[-1,0,1],outputRange:[-6,0,6]}),Be=Boolean(g)||Boolean(m)||ie,Ae="underline"===K,ke=f?$.iconSize+G.spacing.md+1+G.spacing.md:0,Ce=(0,_useFloatingLabel.useFloatingLabel)({label:i,enabled:_e,floated:pe,required:N,variant:K,sizeTokens:$,leadingOffset:ke,trailingOffset:Be?$.iconSize+G.spacing.sm:0,textAlign:I,paddingLeft:Ae?0:$.paddingHorizontal,lineHeight:ne?J:void 0,restNudge:oe,floatTrim:ne?2:0,color:Te,style:C}),qe=(0,_FieldBase.resolveFieldTextStyle)(G,{disabled:x}),De=qe.color,Le=qe.placeholderColor,He=N&&!ce&&!ae&&"string"==typeof o&&o.length>0,Me=le?l:s,Pe=z&&"number"==typeof w&&"string"==typeof a?`${a.length} / ${w}`:null,Ee=le?G.colors.field.message:G.colors.text.secondary,Oe=M??(0,_FieldBase.fieldTextAsString)(i)??o,Ge=G.colors.field,We=x?Ge.iconDisabled:U?Ge.iconFocused:Ge.icon,$e={focused:U,disabled:x,error:le,color:We,size:$.iconSize},renderSlot=e=>(0,_slotIcon.renderSlotIcon)(e,$e),Xe=(()=>{if(ie){const e=(Z?G.icons?.eyeOff:G.icons?.eye)??(Z?_defaultIcons.defaultIcons.eyeOff:_defaultIcons.defaultIcons.eye);return(0,_jsxRuntime.jsx)(_reactNative.Pressable,{onPress:Fe,disabled:!xe,hitSlop:8,accessibilityRole:"button",accessibilityLabel:Z?"Hide password":"Show password",children:e({size:$.iconSize,color:We})})}const e=m?(0,_jsxRuntime.jsx)(_reactNative.Text,{style:[W.unit,{fontSize:$.fontSize,color:Le},_],children:m}):null,t=g?(0,_jsxRuntime.jsx)(_reactNative.View,{children:renderSlot(g)}):null;return e&&t?(0,_jsxRuntime.jsxs)(_reactNative.View,{style:W.trailingRow,children:[e,t]}):e??t})(),Je=f?(0,_jsxRuntime.jsx)(_reactNative.View,{children:renderSlot(f)}):null,Ke=_reactNative.StyleSheet.flatten(h),Qe=Ke?.fontSize??$.fontSize,Ue=Ke?.color??Le,Ye=(0,_react.useMemo)(()=>({fontSize:Qe,color:Ue}),[Qe,Ue]),Ze=ue?"string"==typeof v||"number"==typeof v?(0,_jsxRuntime.jsx)(_reactNative.Text,{style:[W.prefix,{fontSize:$.fontSize,color:Le,marginRight:G.spacing.xs,lineHeight:ne?J:void 0,paddingTop:ne?oe:void 0},h],children:v}):(0,_jsxRuntime.jsx)(_reactNative.View,{style:[W.prefixNode,{marginRight:G.spacing.xs,minHeight:ne?J:void 0,justifyContent:"center",paddingTop:ne?oe:void 0}],children:(0,_jsxRuntime.jsx)(_reactNative.Text,{style:[W.prefix,{fontSize:$.fontSize,color:Le,lineHeight:ne?J:void 0},h],children:(0,_jsxRuntime.jsx)(_Notation.NotationInkContext.Provider,{value:Ye,children:v})})}):null,et=j?(0,_jsxRuntime.jsx)(_index4.Button,{variant:j.variant??"outline",tone:j.tone??"primary",size:S,title:j.label,leftIcon:j.icon,loading:j.loading,disabled:x||j.disabled,onPress:j.onPress,pressAnimation:!1,testID:j.testID,style:[W.action,{minHeight:$.minHeight,alignSelf:ne?"flex-start":"stretch"},b]}):null;return(0,_jsxRuntime.jsxs)(_reactNative.Animated.View,{style:[W.container,{transform:[{translateX:Ve}]},B],children:[ce&&!_e?(0,_jsxRuntime.jsx)(_FieldBase.FieldLabel,{size:S,required:N,help:n,color:Te,style:C,children:i}):null,(0,_jsxRuntime.jsxs)(_reactNative.View,{style:[W.fieldRow,{columnGap:G.spacing.sm,alignItems:ne?"flex-start":"stretch"}],children:[(0,_jsxRuntime.jsxs)(_reactNative.View,{style:W.fieldWrapper,children:[(0,_jsxRuntime.jsxs)(_FieldBase.FieldBase,{size:S,variant:K,focused:U,disabled:x,error:le,filled:ae,minHeight:ne?X:void 0,borderRadius:ze,fillOverrides:Ne,leading:Je,leadingDivider:null!=f,paddingLeft:Ae?0:void 0,trailing:Xe,slotAlign:ne?"top":"center",slotLineHeight:ne?J:void 0,topNotch:Ce.topNotch,onPress:me,pressFeedback:!1,style:A,children:[Ze,(0,_jsxRuntime.jsxs)(_reactNative.View,{style:W.inputWrap,children:[(0,_jsxRuntime.jsx)(_reactNative.TextInput,{ref:ge,style:[W.input,{color:De,fontSize:$.fontSize,...qe.weightStyle,paddingLeft:Ae?0:void 0,minHeight:ne?X-2*$.paddingVertical:void 0,lineHeight:ne?J:void 0,paddingTop:ne?oe:void 0,textAlignVertical:ne?"top":"center"},k],textAlign:I,placeholder:_e&&!pe||He?void 0:o,placeholderTextColor:Le,value:T&&null!=a?T(a):a,onChangeText:e=>{r&&r(V?V(e):e)},onFocus:Se,onBlur:Re,editable:xe,readOnly:y,secureTextEntry:te&&!Z,multiline:ne,autoCapitalize:te?"none":void 0,autoCorrect:!te&&void 0,maxLength:w,selectionColor:we,accessibilityLabel:Oe,accessibilityState:{disabled:x},"aria-disabled":x,testID:P,...O}),He?(0,_jsxRuntime.jsx)(_FieldBase.RequiredPlaceholder,{text:o,color:Le,fontSize:$.fontSize,weightStyle:qe.weightStyle,align:ne?"top":"center",paddingTop:ne?oe:void 0,textAlign:I}):null]})]}),Ce.node]}),et]}),de||Pe?(0,_jsxRuntime.jsxs)(_reactNative.View,{style:[W.footerRow,{marginTop:$.messageGap}],children:[de?(0,_jsxRuntime.jsxs)(_reactNative.Animated.View,{style:[W.messageRow,{columnGap:G.spacing.xs+2,opacity:he}],accessibilityLiveRegion:le?"polite":"none",children:[le?(0,_jsxRuntime.jsx)(_FieldBase.FieldErrorGlyph,{size:$.messageFontSize,color:Ee}):null,(0,_jsxRuntime.jsx)(_reactNative.Text,{style:[W.messageText,{color:Ee,fontSize:$.messageFontSize,...(0,_index2.fontFor)(G,"normal")},q],children:Me})]}):(0,_jsxRuntime.jsx)(_reactNative.View,{style:W.footerSpacer}),Pe?(0,_jsxRuntime.jsx)(_reactNative.Text,{style:[W.counterText,{color:G.colors.text.tertiary,fontSize:$.messageFontSize,...(0,_index2.fontFor)(G,"normal")}],children:Pe}):null]}):null]})});Input.displayName="Input";const buildStyles=e=>_reactNative.StyleSheet.create({container:{width:"100%"},fieldRow:{flexDirection:"row"},fieldWrapper:{position:"relative",overflow:"visible",flex:1},action:{flexShrink:0},input:{padding:0,margin:0,includeFontPadding:!1},prefix:{flexShrink:0,includeFontPadding:!1},prefixNode:{flexShrink:0},inputWrap:{flex:1,alignSelf:"stretch",justifyContent:"center"},unit:{includeFontPadding:!1},trailingRow:{flexDirection:"row",alignItems:"center",columnGap:8},footerRow:{flexDirection:"row",alignItems:"center",justifyContent:"space-between",columnGap:8},footerSpacer:{flex:1},messageRow:{flex:1,flexDirection:"row",alignItems:"center"},messageText:{flexShrink:1,includeFontPadding:!1},counterText:{flexShrink:0,includeFontPadding:!1}});var _default=exports.default=Input;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
"use strict";Object.defineProperty(exports,"__esModule",{value:!0}),exports.default=exports.ListItem=void 0;var _react=_interopRequireWildcard(require("react")),_reactNative=require("react-native"),_reactNativeSvg=_interopRequireWildcard(require("react-native-svg")),_useFlickGuard=require("../../hooks/useFlickGuard.js"),_usePressAnimation=require("../../hooks/usePressAnimation.js"),_index=require("../../theme/index.js"),_corners=require("../../utils/corners.js"),_hapticUtils=require("../../utils/hapticUtils.js"),_defaultIcons=require("../AppIcon/defaultIcons.js"),_index2=require("../Button/index.js"),_index3=require("../IconBadge/index.js"),_index4=require("../Skeleton/index.js"),_index5=require("../Swipeable/index.js"),_jsxRuntime=require("react/jsx-runtime");function _interopRequireWildcard(e,t){if("function"==typeof WeakMap)var i=new WeakMap,s=new WeakMap;return(_interopRequireWildcard=function(e,t){if(!t&&e&&e.__esModule)return e;var n,r,l={__proto__:null,default:e};if(null===e||"object"!=typeof e&&"function"!=typeof e)return l;if(n=t?s:i){if(n.has(e))return n.get(e);n.set(e,l)}for(const t in e)"default"!==t&&{}.hasOwnProperty.call(e,t)&&((r=(n=Object.defineProperty)&&Object.getOwnPropertyDescriptor(e,t))&&(r.get||r.set)?n(l,t,r):l[t]=e[t]);return l})(e,t)}const SIZE_FALLBACK={sm:{paddingVertical:"sm",titleFontSize:"sm",subtitleFontSize:"xs",minHeight:44},md:{paddingVertical:"md",titleFontSize:"base",subtitleFontSize:"sm",minHeight:56},lg:{paddingVertical:"lg",titleFontSize:"lg",subtitleFontSize:"sm",minHeight:72}},sizeFor=(e,t)=>{const i={...SIZE_FALLBACK[t],...e.components.listItem?.[t]??{}};return{paddingVertical:e.spacing[i.paddingVertical],titleSize:e.typography.fontSize[i.titleFontSize],subtitleSize:e.typography.fontSize[i.subtitleFontSize],minHeight:i.minHeight}},Chevron=({color:e})=>{const t=(0,_index.useTheme)();return(0,_jsxRuntime.jsx)(_jsxRuntime.Fragment,{children:(t.icons?.chevronRight??_defaultIcons.defaultIcons.chevronRight)({size:20,color:e})})},BADGE_SIZE={sm:"sm",md:"md",lg:"lg"},RIGHT_BELOW_FONT_SCALE=1.2,DEFAULT_BOX_SIZE=20,SelectionBox=({checked:e,disabled:t})=>{const i=(0,_index.useTheme)(),s=i.components.checkbox?.md?.boxSize??20,n=Math.round(.72*s);return(0,_jsxRuntime.jsx)(_reactNative.View,{accessibilityElementsHidden:!0,importantForAccessibility:"no-hide-descendants",pointerEvents:"none",style:{width:s,height:s,alignItems:"center",justifyContent:"center",borderWidth:i.colors.border.width,borderRadius:i.radius.xs,..._corners.smoothCorners,borderColor:e?i.colors.primary:i.colors.border.primary,backgroundColor:e?i.colors.primary:t?i.colors.surface.disabled:"transparent"},children:e?(0,_jsxRuntime.jsx)(_reactNativeSvg.default,{width:n,height:n,viewBox:"0 0 24 24",children:(0,_jsxRuntime.jsx)(_reactNativeSvg.Path,{d:"M5 12.5l4.5 4.5L19 7.5",stroke:i.colors.onPrimary,strokeWidth:3,strokeLinecap:"round",strokeLinejoin:"round",fill:"none"})}):null})},isActionList=e=>Array.isArray(e)&&e.length>0&&e.every(e=>null!=e&&"object"==typeof e&&!_react.default.isValidElement(e)&&"label"in e),renderActions=e=>isActionList(e)?e.map(e=>(0,_jsxRuntime.jsx)(_index2.Button,{size:"sm",variant:e.variant??"outline",tone:e.tone,leftIcon:e.icon,disabled:e.disabled,testID:e.testID,title:e.label,onPress:e.onPress},e.label)):e,ListItem=exports.ListItem=(0,_react.forwardRef)((e,t)=>{const{title:i,loading:s=!1,subtitle:n,description:r,titleLines:l=1,subtitleLines:o=1,left:a,icon:c,iconTone:d="primary",right:u,rightPlacement:m="auto",selectable:x=!1,checked:h=!1,onCheckedChange:_,actions:g,onPress:p,haptic:j,selected:y=!1,disabled:b=!1,size:f="md",divider:S=!1,chevron:v=!1,leftActions:R,rightActions:w,accessibilityLabel:I,accessibilityHint:L,style:k,containerStyle:z,titleStyle:N,subtitleStyle:A,descriptionStyle:V,leftSlotStyle:F,rightSlotStyle:B,testID:C}=e,H=(0,_index.useTheme)(),P=(0,_react.useMemo)(()=>sizeFor(H,f),[H,f]),q=(0,_react.useMemo)(()=>buildStyles(H),[H]),{fontScale:D}=(0,_reactNative.useWindowDimensions)(),W=!!u&&("below"===m||"auto"===m&&D>1.2),T=x||!!p,E=T&&!b,{scale:O,pressIn:M,pressOut:G}=(0,_usePressAnimation.usePressAnimation)({enabled:E}),U=(0,_useFlickGuard.useFlickGuard)(),Z=I??("string"==typeof i?i:void 0),isText=e=>"string"==typeof e||"number"==typeof e,K=a??(void 0===c?null:(0,_jsxRuntime.jsx)(_index3.IconBadge,{icon:c,tone:d,size:BADGE_SIZE[f]})),X=x?(0,_jsxRuntime.jsxs)(_reactNative.View,{style:q.selectionLead,children:[(0,_jsxRuntime.jsx)(SelectionBox,{checked:h,disabled:b}),K?(0,_jsxRuntime.jsx)(_reactNative.View,{style:q.selectionLeadContent,children:K}):null]}):K,J=null!=g&&!1!==g&&!(Array.isArray(g)&&0===g.length),Q=S&&!J,Y=(0,_jsxRuntime.jsxs)(_reactNative.View,{style:[q.row,{paddingVertical:P.paddingVertical,minHeight:P.minHeight,backgroundColor:y?H.colors.surface.selected:"transparent"},Q?q.divider:null,b?q.disabled:null,z],children:[X?(0,_jsxRuntime.jsx)(_reactNative.View,{style:[q.leftSlot,F],children:X}):null,(0,_jsxRuntime.jsxs)(_reactNative.View,{style:q.middle,children:[null==i||isText(i)?(0,_jsxRuntime.jsx)(_reactNative.Text,{style:[q.title,{fontSize:P.titleSize,...(0,_index.fontFor)(H,"medium"),color:b?H.colors.text.disabled:H.colors.text.primary},N],numberOfLines:l,children:i??" "}):i,null==n||""===n?null:isText(n)?(0,_jsxRuntime.jsx)(_reactNative.Text,{style:[q.subtitle,{fontSize:P.subtitleSize,color:b?H.colors.text.disabled:H.colors.text.secondary},A],numberOfLines:o,children:n}):n,r?(0,_jsxRuntime.jsx)(_reactNative.Text,{style:[q.description,{fontSize:P.subtitleSize,color:b?H.colors.text.disabled:H.colors.text.tertiary},V],numberOfLines:2,children:r}):null,W?(0,_jsxRuntime.jsx)(_reactNative.View,{style:[q.rightBelow,B],children:u}):null]}),u&&!W||v?(0,_jsxRuntime.jsxs)(_reactNative.View,{style:[q.rightSlot,W?null:B],children:[W?null:u,v?(0,_jsxRuntime.jsx)(_reactNative.View,{style:u&&!W?q.chevronWithRight:null,children:(0,_jsxRuntime.jsx)(Chevron,{color:b?H.colors.text.disabled:H.colors.text.tertiary})}):null]}):null]}),$=T?(0,_jsxRuntime.jsx)(_reactNative.Animated.View,{style:[{transform:[{scale:O}]},k],children:(0,_jsxRuntime.jsx)(_reactNative.Pressable,{ref:t,onPress:e=>{if(!E||U.isFlick(e))return;const t=(0,_hapticUtils.resolveHaptic)(j,"selection");t&&(0,_hapticUtils.triggerHaptic)(t),x?_?.(!h):p?.(e)},onPressIn:e=>{U.onPressIn(e),M()},onPressOut:G,disabled:!E,accessibilityRole:x?"checkbox":"button",accessibilityLabel:Z,accessibilityHint:L,accessibilityState:x?{checked:h,disabled:!E}:{selected:y,disabled:!E},"aria-disabled":!E,...x?{"aria-checked":h}:{"aria-selected":y},testID:C,android_ripple:{color:H.colors.surface.pressed,borderless:!1},style:({pressed:e})=>e?q.pressed:null,children:Y})}):(0,_jsxRuntime.jsx)(_reactNative.View,{ref:t,accessibilityRole:"none",accessibilityLabel:Z,accessibilityHint:L,accessibilityState:{selected:y,disabled:b},"aria-selected":y,"aria-disabled":b,testID:C,style:k,children:Y}),ee=R&&R.length>0||w&&w.length>0,te=J?(0,_jsxRuntime.jsxs)(_reactNative.View,{style:[y?{backgroundColor:H.colors.surface.selected}:null,S?q.divider:null],children:[$,(0,_jsxRuntime.jsx)(_reactNative.View,{style:q.actions,children:renderActions(g)})]}):$,ie=ee?(0,_jsxRuntime.jsx)(_index5.Swipeable,{leftActions:R,rightActions:w,accessibilityLabel:Z,children:te}):te;return s?(0,_jsxRuntime.jsx)(ListItemSkeleton,{...e}):ie});ListItem.displayName="ListItem";const ListItemSkeleton=({subtitle:e,description:t,left:i,icon:s,right:n,chevron:r,size:l="md",containerStyle:o,style:a})=>{const c=(0,_index.useTheme)(),d=sizeFor(c,l),u=Math.round(1.15*d.titleSize),m=Math.round(1.15*d.subtitleSize);return(0,_jsxRuntime.jsxs)(_reactNative.View,{style:[{flexDirection:"row",alignItems:"center",paddingHorizontal:c.spacing.md,paddingVertical:d.paddingVertical,minHeight:d.minHeight},o,a],children:[void 0!==i||void 0!==s?(0,_jsxRuntime.jsx)(_reactNative.View,{style:{marginRight:c.spacing.sm},children:(0,_jsxRuntime.jsx)(_index4.Skeleton,{shape:"circle",width:40,height:40})}):null,(0,_jsxRuntime.jsxs)(_reactNative.View,{style:{flex:1},children:[(0,_jsxRuntime.jsx)(_index4.Skeleton,{shape:"text",width:"70%",height:u,style:{marginBottom:c.spacing.xs}}),void 0!==e?(0,_jsxRuntime.jsx)(_index4.Skeleton,{shape:"text",width:"50%",height:m,style:void 0!==t?{marginBottom:c.spacing.xs}:void 0}):null,void 0!==t?(0,_jsxRuntime.jsx)(_index4.Skeleton,{shape:"text",width:"85%",height:m}):null]}),void 0!==n||r?(0,_jsxRuntime.jsx)(_reactNative.View,{style:{marginLeft:c.spacing.sm},children:(0,_jsxRuntime.jsx)(_index4.Skeleton,{width:20,height:20,radius:"sm"})}):null]})};ListItemSkeleton.displayName="ListItemSkeleton",ListItem.Skeleton=ListItemSkeleton;const buildStyles=e=>_reactNative.StyleSheet.create({row:{flexDirection:"row",alignItems:"center",paddingHorizontal:e.spacing.md},divider:{borderBottomWidth:_reactNative.StyleSheet.hairlineWidth,borderBottomColor:e.colors.border.primary},pressed:{backgroundColor:e.colors.surface.pressed},disabled:{opacity:.55},leftSlot:{marginRight:e.spacing.md,alignItems:"center",justifyContent:"center"},middle:{flex:1,flexDirection:"column",justifyContent:"center"},selectionLead:{flexDirection:"row",alignItems:"center"},selectionLeadContent:{marginLeft:e.spacing.sm},rightBelow:{alignSelf:"flex-start",flexDirection:"row",alignItems:"center",marginTop:e.spacing.xs},rightSlot:{marginLeft:e.spacing.md,alignItems:"center",justifyContent:"center",flexDirection:"row"},actions:{flexDirection:"row",flexWrap:"wrap",gap:e.spacing.sm,paddingHorizontal:e.spacing.md,paddingBottom:e.spacing.md},chevronWithRight:{marginLeft:e.spacing.xs},title:{letterSpacing:e.typography.letterSpacing.normal},subtitle:{marginTop:2,...(0,_index.fontFor)(e,"normal")},description:{marginTop:2,...(0,_index.fontFor)(e,"normal")}});var _default=exports.default=ListItem;
|
|
1
|
+
"use strict";Object.defineProperty(exports,"__esModule",{value:!0}),exports.default=exports.ListItem=void 0;var _react=_interopRequireWildcard(require("react")),_reactNative=require("react-native"),_reactNativeSvg=_interopRequireWildcard(require("react-native-svg")),_useFlickGuard=require("../../hooks/useFlickGuard.js"),_usePressAnimation=require("../../hooks/usePressAnimation.js"),_index=require("../../theme/index.js"),_corners=require("../../utils/corners.js"),_hapticUtils=require("../../utils/hapticUtils.js"),_mergeRefs=require("../../utils/mergeRefs.js"),_defaultIcons=require("../AppIcon/defaultIcons.js"),_index2=require("../Button/index.js"),_index3=require("../IconBadge/index.js"),_useContextMenu=require("../Menu/useContextMenu.js"),_index4=require("../Skeleton/index.js"),_index5=require("../Swipeable/index.js"),_jsxRuntime=require("react/jsx-runtime");function _interopRequireWildcard(e,t){if("function"==typeof WeakMap)var i=new WeakMap,s=new WeakMap;return(_interopRequireWildcard=function(e,t){if(!t&&e&&e.__esModule)return e;var n,r,l={__proto__:null,default:e};if(null===e||"object"!=typeof e&&"function"!=typeof e)return l;if(n=t?s:i){if(n.has(e))return n.get(e);n.set(e,l)}for(const t in e)"default"!==t&&{}.hasOwnProperty.call(e,t)&&((r=(n=Object.defineProperty)&&Object.getOwnPropertyDescriptor(e,t))&&(r.get||r.set)?n(l,t,r):l[t]=e[t]);return l})(e,t)}const SIZE_FALLBACK={sm:{paddingVertical:"sm",titleFontSize:"sm",subtitleFontSize:"xs",minHeight:44},md:{paddingVertical:"md",titleFontSize:"base",subtitleFontSize:"sm",minHeight:56},lg:{paddingVertical:"lg",titleFontSize:"lg",subtitleFontSize:"sm",minHeight:72}},sizeFor=(e,t)=>{const i={...SIZE_FALLBACK[t],...e.components.listItem?.[t]??{}};return{paddingVertical:e.spacing[i.paddingVertical],titleSize:e.typography.fontSize[i.titleFontSize],subtitleSize:e.typography.fontSize[i.subtitleFontSize],minHeight:i.minHeight}},Chevron=({color:e})=>{const t=(0,_index.useTheme)();return(0,_jsxRuntime.jsx)(_jsxRuntime.Fragment,{children:(t.icons?.chevronRight??_defaultIcons.defaultIcons.chevronRight)({size:20,color:e})})},BADGE_SIZE={sm:"sm",md:"md",lg:"lg"},RIGHT_BELOW_FONT_SCALE=1.2,DEFAULT_BOX_SIZE=20,SelectionBox=({checked:e,disabled:t})=>{const i=(0,_index.useTheme)(),s=i.components.checkbox?.md?.boxSize??20,n=Math.round(.72*s);return(0,_jsxRuntime.jsx)(_reactNative.View,{accessibilityElementsHidden:!0,importantForAccessibility:"no-hide-descendants",pointerEvents:"none",style:{width:s,height:s,alignItems:"center",justifyContent:"center",borderWidth:i.colors.border.width,borderRadius:i.radius.xs,..._corners.smoothCorners,borderColor:e?i.colors.primary:i.colors.border.primary,backgroundColor:e?i.colors.primary:t?i.colors.surface.disabled:"transparent"},children:e?(0,_jsxRuntime.jsx)(_reactNativeSvg.default,{width:n,height:n,viewBox:"0 0 24 24",children:(0,_jsxRuntime.jsx)(_reactNativeSvg.Path,{d:"M5 12.5l4.5 4.5L19 7.5",stroke:i.colors.onPrimary,strokeWidth:3,strokeLinecap:"round",strokeLinejoin:"round",fill:"none"})}):null})},isActionList=e=>Array.isArray(e)&&e.length>0&&e.every(e=>null!=e&&"object"==typeof e&&!_react.default.isValidElement(e)&&"label"in e),renderActions=e=>isActionList(e)?e.map(e=>(0,_jsxRuntime.jsx)(_index2.Button,{size:"sm",variant:e.variant??"outline",tone:e.tone,leftIcon:e.icon,disabled:e.disabled,testID:e.testID,title:e.label,onPress:e.onPress},e.label)):e,ListItem=exports.ListItem=(0,_react.forwardRef)((e,t)=>{const{title:i,loading:s=!1,subtitle:n,description:r,titleLines:l=1,subtitleLines:o=1,left:a,icon:c,iconTone:d="primary",right:u,rightPlacement:m="auto",selectable:x=!1,checked:h=!1,onCheckedChange:_,actions:g,onPress:p,haptic:j,selected:b=!1,disabled:f=!1,size:y="md",divider:v=!1,chevron:S=!1,leftActions:R,rightActions:w,contextMenu:I,accessibilityLabel:L,accessibilityHint:k,style:z,containerStyle:N,titleStyle:V,subtitleStyle:A,descriptionStyle:C,leftSlotStyle:F,rightSlotStyle:q,testID:B}=e,P=(0,_index.useTheme)(),H=(0,_react.useMemo)(()=>sizeFor(P,y),[P,y]),D=(0,_react.useMemo)(()=>buildStyles(P),[P]),{fontScale:M}=(0,_reactNative.useWindowDimensions)(),W=!!u&&("below"===m||"auto"===m&&M>1.2),T=(0,_useContextMenu.useContextMenu)(f?void 0:I,{haptic:j,testID:B}),E=(0,_react.useMemo)(()=>(0,_mergeRefs.mergeRefs)(t,T.hostRef),[t,T.hostRef]),O=x||!!p,G=O||T.enabled,U=G&&!f,{scale:Z,pressIn:K,pressOut:X}=(0,_usePressAnimation.usePressAnimation)({enabled:U}),J=(0,_useFlickGuard.useFlickGuard)(),Q=L??("string"==typeof i?i:void 0),isText=e=>"string"==typeof e||"number"==typeof e,Y=a??(void 0===c?null:(0,_jsxRuntime.jsx)(_index3.IconBadge,{icon:c,tone:d,size:BADGE_SIZE[y]})),$=x?(0,_jsxRuntime.jsxs)(_reactNative.View,{style:D.selectionLead,children:[(0,_jsxRuntime.jsx)(SelectionBox,{checked:h,disabled:f}),Y?(0,_jsxRuntime.jsx)(_reactNative.View,{style:D.selectionLeadContent,children:Y}):null]}):Y,ee=null!=g&&!1!==g&&!(Array.isArray(g)&&0===g.length),te=v&&!ee,ie=(0,_jsxRuntime.jsxs)(_reactNative.View,{style:[D.row,{paddingVertical:H.paddingVertical,minHeight:H.minHeight,backgroundColor:b?P.colors.surface.selected:"transparent"},te?D.divider:null,f?D.disabled:null,N],children:[$?(0,_jsxRuntime.jsx)(_reactNative.View,{style:[D.leftSlot,F],children:$}):null,(0,_jsxRuntime.jsxs)(_reactNative.View,{style:D.middle,children:[null==i||isText(i)?(0,_jsxRuntime.jsx)(_reactNative.Text,{style:[D.title,{fontSize:H.titleSize,...(0,_index.fontFor)(P,"medium"),color:f?P.colors.text.disabled:P.colors.text.primary},V],numberOfLines:l,children:i??" "}):i,null==n||""===n?null:isText(n)?(0,_jsxRuntime.jsx)(_reactNative.Text,{style:[D.subtitle,{fontSize:H.subtitleSize,color:f?P.colors.text.disabled:P.colors.text.secondary},A],numberOfLines:o,children:n}):n,r?(0,_jsxRuntime.jsx)(_reactNative.Text,{style:[D.description,{fontSize:H.subtitleSize,color:f?P.colors.text.disabled:P.colors.text.tertiary},C],numberOfLines:2,children:r}):null,W?(0,_jsxRuntime.jsx)(_reactNative.View,{style:[D.rightBelow,q],children:u}):null]}),u&&!W||S?(0,_jsxRuntime.jsxs)(_reactNative.View,{style:[D.rightSlot,W?null:q],children:[W?null:u,S?(0,_jsxRuntime.jsx)(_reactNative.View,{style:u&&!W?D.chevronWithRight:null,children:(0,_jsxRuntime.jsx)(Chevron,{color:f?P.colors.text.disabled:P.colors.text.tertiary})}):null]}):null]}),se=G?(0,_jsxRuntime.jsx)(_reactNative.Animated.View,{style:[{transform:[{scale:Z}]},z],children:(0,_jsxRuntime.jsx)(_reactNative.Pressable,{ref:E,onPress:e=>{if(!U||!O||J.isFlick(e))return;const t=(0,_hapticUtils.resolveHaptic)(j,"selection");t&&(0,_hapticUtils.triggerHaptic)(t),x?_?.(!h):p?.(e)},onPressIn:e=>{J.onPressIn(e),K()},onPressOut:X,disabled:!U,accessibilityRole:x?"checkbox":p?"button":void 0,accessibilityLabel:Q,accessibilityHint:k,accessibilityState:x?{checked:h,disabled:!U}:{selected:b,disabled:!U},"aria-disabled":!U,...x?{"aria-checked":h}:{"aria-selected":b},testID:B,android_ripple:{color:P.colors.surface.pressed,borderless:!1},style:({pressed:e})=>e?D.pressed:null,...T.hostProps,children:ie})}):(0,_jsxRuntime.jsx)(_reactNative.View,{ref:t,accessibilityRole:"none",accessibilityLabel:Q,accessibilityHint:k,accessibilityState:{selected:b,disabled:f},"aria-selected":b,"aria-disabled":f,testID:B,style:z,children:ie}),ne=R&&R.length>0||w&&w.length>0,re=ee?(0,_jsxRuntime.jsxs)(_reactNative.View,{style:[b?{backgroundColor:P.colors.surface.selected}:null,v?D.divider:null],children:[se,(0,_jsxRuntime.jsx)(_reactNative.View,{style:D.actions,children:renderActions(g)})]}):se,le=ne?(0,_jsxRuntime.jsx)(_index5.Swipeable,{leftActions:R,rightActions:w,accessibilityLabel:Q,children:re}):re;return s?(0,_jsxRuntime.jsx)(ListItemSkeleton,{...e}):T.enabled?(0,_jsxRuntime.jsxs)(_jsxRuntime.Fragment,{children:[le,T.renderSurface((0,_jsxRuntime.jsx)(_reactNative.View,{style:D.preview,children:ie}))]}):le});ListItem.displayName="ListItem";const ListItemSkeleton=({subtitle:e,description:t,left:i,icon:s,right:n,chevron:r,size:l="md",containerStyle:o,style:a})=>{const c=(0,_index.useTheme)(),d=sizeFor(c,l),u=Math.round(1.15*d.titleSize),m=Math.round(1.15*d.subtitleSize);return(0,_jsxRuntime.jsxs)(_reactNative.View,{style:[{flexDirection:"row",alignItems:"center",paddingHorizontal:c.spacing.md,paddingVertical:d.paddingVertical,minHeight:d.minHeight},o,a],children:[void 0!==i||void 0!==s?(0,_jsxRuntime.jsx)(_reactNative.View,{style:{marginRight:c.spacing.sm},children:(0,_jsxRuntime.jsx)(_index4.Skeleton,{shape:"circle",width:40,height:40})}):null,(0,_jsxRuntime.jsxs)(_reactNative.View,{style:{flex:1},children:[(0,_jsxRuntime.jsx)(_index4.Skeleton,{shape:"text",width:"70%",height:u,style:{marginBottom:c.spacing.xs}}),void 0!==e?(0,_jsxRuntime.jsx)(_index4.Skeleton,{shape:"text",width:"50%",height:m,style:void 0!==t?{marginBottom:c.spacing.xs}:void 0}):null,void 0!==t?(0,_jsxRuntime.jsx)(_index4.Skeleton,{shape:"text",width:"85%",height:m}):null]}),void 0!==n||r?(0,_jsxRuntime.jsx)(_reactNative.View,{style:{marginLeft:c.spacing.sm},children:(0,_jsxRuntime.jsx)(_index4.Skeleton,{width:20,height:20,radius:"sm"})}):null]})};ListItemSkeleton.displayName="ListItemSkeleton",ListItem.Skeleton=ListItemSkeleton;const buildStyles=e=>_reactNative.StyleSheet.create({row:{flexDirection:"row",alignItems:"center",paddingHorizontal:e.spacing.md},divider:{borderBottomWidth:_reactNative.StyleSheet.hairlineWidth,borderBottomColor:e.colors.border.primary},pressed:{backgroundColor:e.colors.surface.pressed},disabled:{opacity:.55},leftSlot:{marginRight:e.spacing.md,alignItems:"center",justifyContent:"center"},middle:{flex:1,flexDirection:"column",justifyContent:"center"},selectionLead:{flexDirection:"row",alignItems:"center"},selectionLeadContent:{marginLeft:e.spacing.sm},rightBelow:{alignSelf:"flex-start",flexDirection:"row",alignItems:"center",marginTop:e.spacing.xs},rightSlot:{marginLeft:e.spacing.md,alignItems:"center",justifyContent:"center",flexDirection:"row"},actions:{flexDirection:"row",flexWrap:"wrap",gap:e.spacing.sm,paddingHorizontal:e.spacing.md,paddingBottom:e.spacing.md},chevronWithRight:{marginLeft:e.spacing.xs},preview:{flex:1,backgroundColor:e.colors.background.elevated,borderRadius:e.radius.md,..._corners.smoothCorners,overflow:"hidden"},title:{letterSpacing:e.typography.letterSpacing.normal},subtitle:{marginTop:2,...(0,_index.fontFor)(e,"normal")},description:{marginTop:2,...(0,_index.fontFor)(e,"normal")}});var _default=exports.default=ListItem;
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
"use strict";Object.defineProperty(exports,"__esModule",{value:!0}),exports.default=exports.Menu=void 0;var _react=_interopRequireWildcard(require("react")),_reactNative=require("react-native"),_useControllableState=require("../../hooks/useControllableState.js"),_mergeRefs=require("../../utils/mergeRefs.js"),_MenuSurface=require("./MenuSurface.js"),_jsxRuntime=require("react/jsx-runtime");function _interopRequireWildcard(e,t){if("function"==typeof WeakMap)var r=new WeakMap,a=new WeakMap;return(_interopRequireWildcard=function(e,t){if(!t&&e&&e.__esModule)return e;var n,u,l={__proto__:null,default:e};if(null===e||"object"!=typeof e&&"function"!=typeof e)return l;if(n=t?a:r){if(n.has(e))return n.get(e);n.set(e,l)}for(const t in e)"default"!==t&&{}.hasOwnProperty.call(e,t)&&((u=(n=Object.defineProperty)&&Object.getOwnPropertyDescriptor(e,t))&&(u.get||u.set)?n(l,t,u):l[t]=e[t]);return l})(e,t)}const Menu=e=>{const{items:t,trigger:r,title:a,topActions:n,placement:u="bottom",presentation:l="auto",unavailable:s="disable",open:o,onOpenChange:i,haptic:c,accessibilityLabel:f,closeLabel:p="Close menu",backLabel:_="Back",testID:b}=e,[d,m]=(0,_useControllableState.useControllableState)({value:o,defaultValue:!1,onChange:i}),[j,x]=(0,_react.useState)(null),[M,R]=(0,_react.useState)(d),g=(0,_react.useRef)(null),h=(0,_react.useRef)(null);(0,_react.useEffect)(()=>{d?(R(!0),g.current?.measureInWindow((e,t,r,a)=>{x({x:e,y:t,width:r,height:a})})):x(null)},[d]);const v=(0,_react.useCallback)(()=>m(!1),[m]),y=(0,_react.useCallback)(()=>h.current??g.current,[]),C=r.props,S=C.ref,k={ref:(0,_react.useMemo)(()=>(0,_mergeRefs.mergeRefs)(S,h),[S]),"aria-expanded":d,onPress:e=>{C.onPress?.(e),m(!0)}},q=_react.default.cloneElement(r,k);return(0,_jsxRuntime.jsxs)(_jsxRuntime.Fragment,{children:[(0,_jsxRuntime.jsx)(_reactNative.View,{ref:g,collapsable:!1,testID:b,children:q}),M?(0,_jsxRuntime.jsx)(_MenuSurface.MenuSurface,{open:d,anchor:j,items:t,title:a,topActions:n,placement:u,presentation:l,unavailable:s,onClose:v,restoreFocusTo:y,haptic:c,accessibilityLabel:f,closeLabel:p,backLabel:_,testID:b}):null]})};exports.Menu=Menu;var _default=exports.default=Menu;
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
"use strict";Object.defineProperty(exports,"__esModule",{value:!0}),exports.MenuSurface=void 0;var _react=require("react"),_reactNative=require("react-native"),_reactNativeSafeAreaContext=require("react-native-safe-area-context"),_useReducedMotion=require("../../hooks/useReducedMotion.js"),_index=require("../../theme/index.js"),_corners=require("../../utils/corners.js"),_hapticUtils=require("../../utils/hapticUtils.js"),_placement=require("../../utils/placement.js"),_responsive=require("../../utils/responsive.js"),_AppIcon=require("../AppIcon/AppIcon.js"),_slotIcon=require("../AppIcon/slotIcon.js"),_index2=require("../Divider/index.js"),_index3=require("../OptionSheet/index.js"),_index4=require("../Text/index.js"),_ToastProvider=require("../Toast/ToastProvider.js"),_focusHost=require("./focusHost.js"),_menuModel=require("./menuModel.js"),_webOnly=require("./webOnly.js"),_jsxRuntime=require("react/jsx-runtime");const MENU_MIN_WIDTH=180,MENU_MAX_WIDTH=280,ROW_MIN_HEIGHT=48,TOP_ACTION_MIN_HEIGHT=64,ICON_SIZE=20,PREVIEW_LIFT=1.02,BACK_KEY="__menu-back",TOP_PREFIX="__menu-top:",WEB_CHECKABLE_ROLE=(0,_webOnly.webOnly)({role:"menuitemcheckbox"}),MenuSurface=e=>{const{open:t,anchor:s,items:i,title:n,topActions:r,placement:o,presentation:a,unavailable:l,context:c=!1,preview:u,onClose:d,restoreFocusTo:_,haptic:m,accessibilityLabel:p,closeLabel:x,backLabel:b,testID:h}=e,f=(0,_index.useTheme)(),v=(0,_react.useMemo)(()=>buildStyles(f),[f]),y=(0,_reactNativeSafeAreaContext.useSafeAreaInsets)(),j=(0,_reactNative.useWindowDimensions)(),R=(0,_useReducedMotion.useReducedMotion)(),g=(0,_react.useMemo)(()=>(0,_menuModel.visibleGroups)(i,l),[i,l]),w=(0,_react.useMemo)(()=>(0,_menuModel.visibleTopActions)(r,l),[r,l]),I="sheet"===a||"auto"===a&&j.width<_responsive.Breakpoints.lg&&(0,_menuModel.wantsSheet)(g,w),[A,k]=(0,_react.useState)(null),[N,E]=(0,_react.useState)(null),S=(0,_react.useRef)(d);S.current=d;const T=(0,_react.useRef)(_);T.current=_;const C=(0,_react.useRef)(null),M=(0,_react.useRef)(!1),O=(0,_react.useRef)(!1),L=(0,_react.useRef)(new Map),H=(0,_react.useRef)(null),D=(0,_react.useCallback)(()=>{if(!M.current)return;M.current=!1;const e=C.current;C.current=null,e?e():(0,_focusHost.focusHost)(T.current?.())},[]);(0,_react.useEffect)(()=>{if(t)return O.current=!0,M.current=!1,C.current=null,(0,_placement.claimAnchoredSurface)(()=>S.current());O.current&&(O.current=!1,M.current=!0,k(null),E(null),I||"ios"===_reactNative.Platform.OS||D())},[t]);const P=(0,_react.useCallback)(e=>{if(e.disabled)return;const t=(0,_hapticUtils.resolveHaptic)(m,"selection");t&&(0,_hapticUtils.triggerHaptic)(t),e.key!==BACK_KEY?e.submenu?k(e):(C.current=e.onPress??null,S.current()):k(null)},[m]),q=(0,_react.useMemo)(()=>({width:j.width,height:j.height,insets:y}),[j.width,j.height,y]),B=(0,_react.useMemo)(()=>{if(!s||!N)return null;const e=s.x+s.width/2>q.width/2?"end":"start";return(0,_placement.computePlacement)(s,N,q,o,{align:e})},[s,N,q,o]);let V=q.height-y.top-y.bottom-2*_placement.PLACEMENT_MARGIN;if(s&&B){const e=(0,_placement.placementRoom)(s,q);V="top"===B.placement?e.above:e.below}const F=Math.min(280,q.width-y.left-y.right-2*_placement.PLACEMENT_MARGIN),K=t&&null!==B,W=(0,_react.useRef)((0,_index.createAnimatedValue)(0)).current,z=(0,_react.useRef)((0,_index.createAnimatedValue)(1)).current;(0,_react.useEffect)(()=>{if(!K)return(0,_index.setNativeValue)(W,0),void(0,_index.setNativeValue)(z,1);const e=[_reactNative.Animated.timing(W,{toValue:1,duration:f.motion.duration.fast,easing:_reactNative.Easing.bezier(...f.motion.easing.decelerate),useNativeDriver:!0})];c&&!R&&e.push(_reactNative.Animated.spring(z,{toValue:1.02,damping:f.motion.spring.snappy.damping,stiffness:f.motion.spring.snappy.stiffness,mass:f.motion.spring.snappy.mass,useNativeDriver:!0}));const t=_reactNative.Animated.parallel(e);return t.start(),()=>t.stop()},[K,c,R,W,z,f.motion]);const $=(0,_react.useCallback)(e=>{const{width:t,height:s}=e.nativeEvent.layout;E(e=>e&&e.width===t&&e.height===s?e:{width:t,height:s})},[]),G=c&&"top"===B?.placement,U=A?.submenu?[A.submenu]:g,Y=G?[...U].reverse().map(e=>[...e].reverse()):U,X=[];if(A)X.push({key:BACK_KEY,label:A.label});else for(const e of w)X.push({key:`${TOP_PREFIX}${e.key}`,label:e.label,item:e});for(const e of Y)for(const t of e)X.push({key:t.key,label:t.label,item:t});const Z=X[0]?.key;(0,_react.useEffect)(()=>{if(!K||I||!Z)return;const e=setTimeout(()=>(0,_focusHost.focusHost)(L.current.get(Z)),_focusHost.FOCUS_DELAY_MS);return()=>clearTimeout(e)},[K,I,Z]);const setItemRef=e=>t=>{t?L.current.set(e,t):L.current.delete(e)},J=(0,_webOnly.webOnly)({onKeyDown:e=>{const t=e.key??e.nativeEvent?.key??"",s=X.length,i=X.findIndex(e=>e.key===H.current);let n=-1;if("ArrowDown"===t)n=(i+1)%s;else if("ArrowUp"===t)n=i<=0?s-1:i-1;else if("Home"===t)n=0;else if("End"===t)n=s-1;else{if("ArrowLeft"===t&&A)return e.preventDefault?.(),void k(null);if("ArrowRight"===t&&X[i]?.item?.submenu)return e.preventDefault?.(),void P(X[i].item);if(1===t.length&&""!==t.trim()){const e=t.toLowerCase();for(let t=1;t<=s;t+=1){const r=(i+t)%s;if(X[r].label.toLowerCase().startsWith(e)){n=r;break}}}}n>=0&&(e.preventDefault?.(),(e=>{const t=X[e];t&&(0,_focusHost.focusHost)(L.current.get(t.key))})(n))}});if(I){const e=A?.submenu?[{key:BACK_KEY,label:b,icon:"chevron-left"},...A.submenu]:[...w,...g.flat()],s=new Set(e.filter(e=>e.checked).map(e=>e.key));return(0,_jsxRuntime.jsx)(_index3.OptionSheet,{open:t,onClose:d,onAfterClose:D,title:A?.label??n,options:e,labelOf:e=>e.label,getValue:e=>e.key,disabledOf:e=>Boolean(e.disabled),destructiveOf:e=>Boolean(e.destructive),descriptionOf:e=>e.description,iconOf:e=>{const t=e;return(0,_slotIcon.renderSlotIcon)(t.icon,{color:t.destructive?f.colors.toneText.error:f.colors.text.secondary,size:20,disabled:Boolean(t.disabled)})},isSelected:e=>s.has(String(e)),onSelect:e=>P(e),accessibilityLabel:p??n,testID:h?`${h}-sheet`:void 0})}const inkFor=e=>e.disabled?f.colors.text.disabled:e.destructive?f.colors.toneText.error:f.colors.text.primary,Q=A?(0,_jsxRuntime.jsxs)(_jsxRuntime.Fragment,{children:[(0,_jsxRuntime.jsxs)(_reactNative.Pressable,{ref:setItemRef(BACK_KEY),onPress:()=>k(null),onFocus:()=>{H.current=BACK_KEY},accessibilityRole:"menuitem",accessibilityLabel:`${b}, ${A.label}`,android_ripple:{color:f.colors.surface.pressed,borderless:!1},style:({pressed:e})=>[v.row,e?v.pressed:null],children:[(0,_jsxRuntime.jsx)(_reactNative.View,{style:v.icon,children:(0,_jsxRuntime.jsx)(_AppIcon.AppIcon,{name:"chevron-left",size:20,color:f.colors.text.secondary})}),(0,_jsxRuntime.jsx)(_index4.Text,{variant:"body",weight:"semibold",numberOfLines:1,style:v.labels,children:A.label})]}),(0,_jsxRuntime.jsx)(_index2.Divider,{spacing:"none"})]}):(0,_jsxRuntime.jsxs)(_jsxRuntime.Fragment,{children:[n?(0,_jsxRuntime.jsx)(_index4.Text,{variant:"caption",color:"secondary",accessibilityRole:"header",numberOfLines:2,style:v.title,children:n}):null,w.length>0?(0,_jsxRuntime.jsxs)(_jsxRuntime.Fragment,{children:[(0,_jsxRuntime.jsx)(_reactNative.View,{style:v.topRow,children:w.map(e=>{const t=`${TOP_PREFIX}${e.key}`,s=Boolean(e.disabled),i=inkFor(e);return(0,_jsxRuntime.jsxs)(_reactNative.Pressable,{ref:setItemRef(t),onPress:()=>P(e),onFocus:()=>{H.current=t},disabled:s,accessibilityRole:"menuitem",accessibilityLabel:e.accessibilityLabel??e.label,accessibilityState:{disabled:s},"aria-disabled":s,testID:e.testID,style:({pressed:e})=>[v.topAction,e?v.pressed:null],children:[(0,_slotIcon.renderSlotIcon)(e.icon,{color:i,size:20,disabled:s}),(0,_jsxRuntime.jsx)(_index4.Text,{variant:"caption",color:i,numberOfLines:1,children:e.label})]},t)})}),(0,_jsxRuntime.jsx)(_index2.Divider,{spacing:"none"})]}):null]});return(0,_jsxRuntime.jsxs)(_reactNative.Modal,{visible:t,transparent:!0,statusBarTranslucent:!0,presentationStyle:"overFullScreen",animationType:"none",onRequestClose:d,onDismiss:D,children:[(0,_jsxRuntime.jsx)(_reactNative.Pressable,{style:[_reactNative.StyleSheet.absoluteFill,c?v.scrim:null],onPress:d,accessibilityRole:"button",accessibilityLabel:x,testID:h?`${h}-scrim`:void 0}),c&&u&&s?(0,_jsxRuntime.jsx)(_reactNative.Animated.View,{pointerEvents:"none",accessibilityElementsHidden:!0,importantForAccessibility:"no-hide-descendants",style:[v.preview,{left:s.x,top:s.y,width:s.width,height:s.height,transform:[{scale:z}]}],children:u}):null,(0,_jsxRuntime.jsx)(_reactNative.Animated.View,{accessibilityRole:"menu",accessibilityLabel:A?.label??p??n,onLayout:$,testID:h?`${h}-menu`:void 0,...J,style:[v.anchored,{left:B?.x??0,top:B?.y??0,maxWidth:F,opacity:K?W:0}],children:(0,_jsxRuntime.jsx)(_reactNative.View,{style:v.surface,children:(0,_jsxRuntime.jsxs)(_reactNative.View,{style:[v.clip,{maxHeight:V}],children:[Q,(0,_jsxRuntime.jsx)(_reactNative.ScrollView,{style:v.scroll,bounces:!1,keyboardShouldPersistTaps:"handled",children:Y.map((e,t)=>{const s=e.some(e=>null!=e.icon);return(0,_jsxRuntime.jsxs)(_reactNative.View,{children:[t>0?(0,_jsxRuntime.jsx)(_index2.Divider,{spacing:"none"}):null,e.map(e=>((e,t)=>{const s=Boolean(e.disabled),i=inkFor(e);return(0,_jsxRuntime.jsxs)(_reactNative.Pressable,{ref:setItemRef(e.key),onPress:()=>P(e),onFocus:()=>{H.current=e.key},disabled:s,accessibilityRole:"menuitem",accessibilityLabel:e.accessibilityLabel??e.label,accessibilityState:{disabled:s,checked:e.checked},"aria-disabled":s,"aria-checked":e.checked,...void 0!==e.checked?WEB_CHECKABLE_ROLE:null,android_ripple:{color:f.colors.surface.pressed,borderless:!1},testID:e.testID,style:({pressed:e})=>[v.row,e?v.pressed:null],children:[t?(0,_jsxRuntime.jsx)(_reactNative.View,{style:v.icon,children:(0,_slotIcon.renderSlotIcon)(e.icon,{color:i,size:20,disabled:s})}):null,(0,_jsxRuntime.jsxs)(_reactNative.View,{style:v.labels,children:[(0,_jsxRuntime.jsx)(_index4.Text,{variant:"body",color:i,numberOfLines:2,children:e.label}),e.description?(0,_jsxRuntime.jsx)(_index4.Text,{variant:"caption",color:"secondary",numberOfLines:2,children:e.description}):null]}),e.detail?(0,_jsxRuntime.jsx)(_index4.Text,{variant:"caption",color:"tertiary",children:e.detail}):null,e.checked?(0,_jsxRuntime.jsx)(_AppIcon.AppIcon,{name:"check",size:20,color:f.colors.primary}):null,e.submenu?(0,_jsxRuntime.jsx)(_AppIcon.AppIcon,{name:"chevron-right",size:20,color:f.colors.text.tertiary}):null]},e.key)})(e,s))]},e[0].key)})})]})})}),(0,_jsxRuntime.jsx)(_ToastProvider.ToastHost,{})]})};exports.MenuSurface=MenuSurface;const buildStyles=e=>_reactNative.StyleSheet.create({scrim:{backgroundColor:e.colors.background.overlay},preview:{position:"absolute"},anchored:{position:"absolute",minWidth:180},surface:{backgroundColor:e.colors.background.elevated,borderRadius:e.radius.md,..._corners.smoothCorners,...e.shadows.lg},clip:{borderRadius:e.radius.md,..._corners.smoothCorners,overflow:"hidden"},scroll:{flexGrow:0,flexShrink:1},title:{paddingHorizontal:e.spacing.md,paddingTop:e.spacing.sm,paddingBottom:e.spacing.xs},row:{flexDirection:"row",alignItems:"center",gap:e.spacing.md,minHeight:48,paddingHorizontal:e.spacing.md,paddingVertical:e.spacing.sm},pressed:{backgroundColor:e.colors.surface.pressed},icon:{width:20,alignItems:"center"},labels:{flexGrow:1,flexShrink:1},topRow:{flexDirection:"row",padding:e.spacing.xs,gap:e.spacing.xs},topAction:{flexGrow:1,flexBasis:0,alignItems:"center",justifyContent:"center",gap:e.spacing.xs,minHeight:64,borderRadius:e.radius.sm,..._corners.smoothCorners}});
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
"use strict";Object.defineProperty(exports,"__esModule",{value:!0}),exports.focusHost=exports.FOCUS_DELAY_MS=void 0;var _reactNative=require("react-native");const FOCUS_DELAY_MS=exports.FOCUS_DELAY_MS=150,isHost=e=>null!=e&&"function"==typeof e.measureInWindow,focusHost=e=>{"web"!==_reactNative.Platform.OS?isHost(e)&&_reactNative.AccessibilityInfo.sendAccessibilityEvent(e,"focus"):e?.focus?.()};exports.focusHost=focusHost;
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
"use strict";Object.defineProperty(exports,"__esModule",{value:!0}),Object.defineProperty(exports,"Menu",{enumerable:!0,get:function(){return _Menu.Menu}}),Object.defineProperty(exports,"default",{enumerable:!0,get:function(){return _Menu.default}});var _Menu=_interopRequireWildcard(require("./Menu.js"));function _interopRequireWildcard(e,r){if("function"==typeof WeakMap)var t=new WeakMap,n=new WeakMap;return(_interopRequireWildcard=function(e,r){if(!r&&e&&e.__esModule)return e;var u,o,i={__proto__:null,default:e};if(null===e||"object"!=typeof e&&"function"!=typeof e)return i;if(u=r?n:t){if(u.has(e))return u.get(e);u.set(e,i)}for(const r in e)"default"!==r&&{}.hasOwnProperty.call(e,r)&&((o=(u=Object.defineProperty)&&Object.getOwnPropertyDescriptor(e,r))&&(o.get||o.set)?u(i,r,o):i[r]=e[r]);return i})(e,r)}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
"use strict";Object.defineProperty(exports,"__esModule",{value:!0}),exports.wantsSheet=exports.visibleTopActions=exports.visibleGroups=exports.menuActions=exports.SHEET_ITEM_THRESHOLD=exports.MAX_TOP_ACTIONS=exports.MAX_GROUPS=exports.ACTION_PREFIX=void 0;var _mobileCore=require("@webority/mobile-core");const MAX_GROUPS=exports.MAX_GROUPS=3,MAX_TOP_ACTIONS=exports.MAX_TOP_ACTIONS=3,SHEET_ITEM_THRESHOLD=exports.SHEET_ITEM_THRESHOLD=7,ACTION_PREFIX=exports.ACTION_PREFIX="menu:",isGrouped=e=>e.length>0&&Array.isArray(e[0]),isShown=(e,o)=>!(e.hidden||"hide"===o&&e.disabled),visibleItem=(e,o)=>{if(!isShown(e,o))return null;if(!e.submenu)return e;const s=e.submenu.filter(e=>isShown(e,o));return s.length>0?{...e,submenu:s}:null},visibleGroups=(e,o)=>{const s=isGrouped(e)?e:[e];__DEV__&&s.length>MAX_GROUPS&&_mobileCore.Logger.warn(`[Menu] ${s.length} groups given; a menu keeps to ${MAX_GROUPS}.`);const t=[];for(const e of s){const s=[];for(const t of e){const e=visibleItem(t,o);e&&s.push(e)}s.length>0&&t.push(s)}return t};exports.visibleGroups=visibleGroups;const visibleTopActions=(e,o)=>{if(!e)return[];__DEV__&&e.length>MAX_TOP_ACTIONS&&_mobileCore.Logger.warn(`[Menu] topActions takes at most ${MAX_TOP_ACTIONS}; the rest are not shown.`);return e.slice(0,MAX_TOP_ACTIONS).filter(e=>isShown(e,o)&&!e.submenu)};exports.visibleTopActions=visibleTopActions;const wantsSheet=(e,o)=>{let s=o.length;for(const o of e)for(const e of o)if(s+=1,e.description)return!0;return s>SHEET_ITEM_THRESHOLD};exports.wantsSheet=wantsSheet;const menuActions=(e,o)=>{const s=[],add=(e,o)=>{if(e.disabled)return;if(e.submenu){for(const o of e.submenu)add(o,e);return}const t=e.accessibilityLabel??e.label;s.push({name:`${ACTION_PREFIX}${o?`${o.key}/`:""}${e.key}`,label:o?`${o.label}, ${t}`:t,item:e})};for(const e of o)add(e);for(const o of e)for(const e of o)add(e);return s};exports.menuActions=menuActions;
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
"use strict";Object.defineProperty(exports,"__esModule",{value:!0}),exports.useContextMenu=void 0;var _react=require("react"),_hapticUtils=require("../../utils/hapticUtils.js"),_MenuSurface=require("./MenuSurface.js"),_menuModel=require("./menuModel.js"),_webOnly=require("./webOnly.js"),_jsxRuntime=require("react/jsx-runtime");const useContextMenu=(e,t={})=>{const c=(0,_react.useRef)(null),[s,n]=(0,_react.useState)(!1),[a,r]=(0,_react.useState)(!1),[i,o]=(0,_react.useState)(null),u=e?.unavailable??"hide",l=e?.items,_=e?.topActions,p=(0,_react.useMemo)(()=>l?(0,_menuModel.visibleGroups)(l,u):[],[l,u]),b=(0,_react.useMemo)(()=>(0,_menuModel.visibleTopActions)(_,u),[_,u]),m=(0,_react.useMemo)(()=>(0,_menuModel.menuActions)(p,b),[p,b]),h=p.length>0||b.length>0,M=(0,_react.useRef)(e);M.current=e;const v=(0,_react.useRef)(t);v.current=t;const d=(0,_react.useRef)(m);d.current=m;const f=(0,_react.useCallback)(e=>{e&&r(!0),n(e),M.current?.onOpenChange?.(e)},[]);(0,_react.useEffect)(()=>{!h&&s&&f(!1)},[h,s,f]);const x=(0,_react.useCallback)(()=>{c.current?.measureInWindow((e,t,c,s)=>{o({x:e,y:t,width:c,height:s}),f(!0)})},[f]),C=(0,_react.useCallback)(()=>{const e=(0,_hapticUtils.resolveHaptic)(v.current.haptic,"longPress");e&&(0,_hapticUtils.triggerHaptic)(e),x()},[x]),y=(0,_react.useCallback)(e=>{const t=d.current.find(t=>t.name===e.nativeEvent.actionName);if(!t)return void v.current.onAccessibilityAction?.(e);const c=(0,_hapticUtils.resolveHaptic)(v.current.haptic,"selection");c&&(0,_hapticUtils.triggerHaptic)(c),t.item.onPress?.()},[]),A=t.accessibilityActions,g=(0,_react.useMemo)(()=>[...A??[],...m.map(e=>({name:e.name,label:e.label}))],[A,m]),j=(0,_react.useMemo)(()=>h?{onLongPress:C,accessibilityActions:g,onAccessibilityAction:y,...(0,_webOnly.webOnly)({onContextMenu:e=>{e.preventDefault?.(),x()}})}:{},[h,C,g,y,x]),k=(0,_react.useCallback)(()=>f(!1),[f]),w=(0,_react.useCallback)(()=>c.current,[]);return{enabled:h,hostRef:c,hostProps:j,renderSurface:c=>e&&h&&a?(0,_jsxRuntime.jsx)(_MenuSurface.MenuSurface,{open:s,anchor:i,items:e.items,title:e.title,topActions:e.topActions,placement:e.placement??"bottom",presentation:e.presentation??"auto",unavailable:u,context:!0,preview:!1===e.preview?void 0:e.preview??c,onClose:k,restoreFocusTo:w,haptic:t.haptic,accessibilityLabel:e.accessibilityLabel,closeLabel:e.closeLabel??"Close menu",backLabel:e.backLabel??"Back",testID:t.testID?`${t.testID}-context`:void 0}):null}};exports.useContextMenu=useContextMenu;
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
"use strict";Object.defineProperty(exports,"__esModule",{value:!0}),exports.webOnly=void 0;var _reactNative=require("react-native");const webOnly=e=>"web"===_reactNative.Platform.OS?e:null;exports.webOnly=webOnly;
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
"use strict";Object.defineProperty(exports,"__esModule",{value:!0}),exports.default=exports.MessageBubble=exports.DEFAULT_MESSAGE_BUBBLE_LABELS=void 0;var _mobileCore=require("@webority/mobile-core"),_react=require("react"),_reactNative=require("react-native"),_index=require("../../theme/index.js"),_announce=require("../../utils/announce.js"),_corners=require("../../utils/corners.js"),_hapticUtils=require("../../utils/hapticUtils.js"),_index2=require("../AppIcon/index.js"),_index3=require("../Button/index.js"),_index4=require("../Markdown/index.js"),_index5=require("../Text/index.js"),_jsxRuntime=require("react/jsx-runtime");const DEFAULT_MESSAGE_BUBBLE_LABELS=exports.DEFAULT_MESSAGE_BUBBLE_LABELS=Object.freeze({you:"You",sending:"Sending",sent:"Sent",delivered:"Delivered",read:"Read",failed:"Not sent",retry:"Try again",replyTo:e=>e?`Reply to ${e}`:"Reply"}),RUN_GAP=2,MAX_WIDTH="85%",STATUS_ICON=14,statusIcon=e=>{switch(e){case"sending":return"clock";case"sent":return"check";case"failed":return"alert-circle";default:return"check-check"}},statusColour=(e,t)=>{switch(t){case"read":return e.colors.toneText.info;case"failed":return e.colors.toneText.error;default:return e.colors.text.tertiary}},MessageBubble=({side:e,text:t,children:s,markdown:r=!1,groupPosition:i="single",author:n,time:a,status:o,replyTo:l,streaming:c=!1,error:u,onRetry:d,actions:x,onLongPress:_,footer:b,labels:m,haptic:p,style:g,testID:y})=>{const h=(0,_index.useTheme)(),f=(0,_react.useMemo)(()=>buildStyles(h),[h]),j=m?{...DEFAULT_MESSAGE_BUBBLE_LABELS,...m}:DEFAULT_MESSAGE_BUBBLE_LABELS,L="mine"===e,B="single"===i||"first"===i,T="single"===i||"last"===i,R=null==a?"":(0,_mobileCore.formatTime)(a),E=("failed"===o||Boolean(u))&&Boolean(d),v=L?j.you:n??"",S=(0,_react.useMemo)(()=>{const e=x?[...x]:[];return l?.onPress&&e.push({name:"openReply",label:j.replyTo(l.author),onPress:l.onPress}),E&&d&&e.push({name:"retry",label:j.retry,onPress:d}),e},[x,l,E,d,j]),A=!s||(x?.length??0)>0,M=o&&L?j[o]:"",P=[v,R,t,l?`${j.replyTo(l.author)}: ${l.text}`:"",M].filter(Boolean).join(", "),I=(0,_react.useRef)(c);(0,_react.useEffect)(()=>{I.current&&!c&&!u&&t&&(0,_announce.announce)(v?`${v}, ${t}`:t),I.current=c},[c,u,t,v]);const U=(0,_react.useRef)(u);(0,_react.useEffect)(()=>{u&&u!==U.current&&(0,_announce.announce)(u,{polite:!1}),U.current=u},[u]);const k=(0,_react.useCallback)(()=>{const e=(0,_hapticUtils.resolveHaptic)(p,"longPress");e&&(0,_hapticUtils.triggerHaptic)(e),_?.()},[p,_]),q=(0,_react.useCallback)(e=>{S.find(t=>t.name===e.nativeEvent.actionName)?.onPress()},[S]),D=h.radius.xl,w=h.radius.xs,C=L?{borderTopRightRadius:B?D:w,borderBottomRightRadius:T?D:w}:{borderTopLeftRadius:B?D:w,borderBottomLeftRadius:T?D:w},$=s??(r?(0,_jsxRuntime.jsx)(_index4.Markdown,{children:t}):(0,_jsxRuntime.jsx)(_index5.Text,{variant:"body",children:t})),N=l?(0,_jsxRuntime.jsxs)(_reactNative.Pressable,{onPress:l.onPress,disabled:!l.onPress,accessibilityRole:l.onPress?"button":void 0,accessibilityLabel:`${j.replyTo(l.author)}: ${l.text}`,style:f.quote,children:[l.author?(0,_jsxRuntime.jsx)(_index5.Text,{variant:"caption",weight:"semibold",color:"link",numberOfLines:1,children:l.author}):null,(0,_jsxRuntime.jsx)(_index5.Text,{variant:"bodySmall",color:"secondary",numberOfLines:2,children:l.text})]}):null,H=[f.bubble,L?f.mine:f.theirs,C],F=A?{accessible:!0,accessibilityLabel:P,accessibilityState:{busy:c},"aria-busy":c,accessibilityActions:S.map(({name:e,label:t})=>({name:e,label:t})),onAccessibilityAction:q}:{accessible:!1},z=(x?.length??0)>0?(0,_jsxRuntime.jsxs)(_reactNative.Pressable,{onLongPress:k,delayLongPress:350,style:H,testID:y?`${y}-bubble`:void 0,...F,children:[N,$]}):(0,_jsxRuntime.jsxs)(_reactNative.View,{style:H,testID:y?`${y}-bubble`:void 0,...F,children:[N,$]}),G=T&&(""!==R||L&&o);return(0,_jsxRuntime.jsxs)(_reactNative.View,{style:[f.root,L?f.rootMine:f.rootTheirs,{marginTop:B?h.spacing.sm:2},g],testID:y,children:[!L&&B&&n?(0,_jsxRuntime.jsx)(_index5.Text,{variant:"caption",color:"secondary",style:f.author,numberOfLines:1,importantForAccessibility:A?"no-hide-descendants":"auto",accessibilityElementsHidden:A,children:n}):null,z,G?(0,_jsxRuntime.jsxs)(_reactNative.View,{style:[f.meta,L?f.metaMine:null],importantForAccessibility:A?"no-hide-descendants":"auto",accessibilityElementsHidden:A,children:[R?(0,_jsxRuntime.jsx)(_index5.Text,{variant:"caption",color:"tertiary",children:R}):null,L&&o?(0,_jsxRuntime.jsx)(_index2.AppIcon,{name:statusIcon(o),size:14,color:statusColour(h,o),accessibilityLabel:j[o],testID:y?`${y}-status-${o}`:void 0}):null]}):null,u?(0,_jsxRuntime.jsx)(_index5.Text,{variant:"bodySmall",color:"error",style:L?f.endText:null,children:u}):null,E?(0,_jsxRuntime.jsx)(_index3.Button,{title:j.retry,variant:"link",size:"sm",leftIcon:"refresh-cw",onPress:d,testID:y?`${y}-retry`:void 0}):null,b]})};exports.MessageBubble=MessageBubble;const buildStyles=e=>_reactNative.StyleSheet.create({root:{maxWidth:"85%",gap:e.spacing.xs},rootMine:{alignSelf:"flex-end",alignItems:"flex-end"},rootTheirs:{alignSelf:"flex-start",alignItems:"flex-start"},author:{paddingHorizontal:e.spacing.md},bubble:{borderRadius:e.radius.xl,..._corners.smoothCorners,paddingHorizontal:e.spacing.md,paddingVertical:e.spacing.sm,gap:e.spacing.xs},mine:{backgroundColor:e.colors.primaryMuted},theirs:{backgroundColor:e.colors.background.secondary},quote:{borderLeftWidth:3,borderLeftColor:e.colors.primary,paddingLeft:e.spacing.sm,paddingVertical:e.spacing.xs},meta:{flexDirection:"row",alignItems:"center",gap:e.spacing.xs,paddingHorizontal:e.spacing.xs},metaMine:{justifyContent:"flex-end"},endText:{textAlign:"right"}});var _default=exports.default=MessageBubble;
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
"use strict";Object.defineProperty(exports,"__esModule",{value:!0}),Object.defineProperty(exports,"DEFAULT_MESSAGE_BUBBLE_LABELS",{enumerable:!0,get:function(){return _MessageBubble.DEFAULT_MESSAGE_BUBBLE_LABELS}}),Object.defineProperty(exports,"MessageBubble",{enumerable:!0,get:function(){return _MessageBubble.MessageBubble}}),Object.defineProperty(exports,"default",{enumerable:!0,get:function(){return _MessageBubble.default}});var _MessageBubble=_interopRequireWildcard(require("./MessageBubble.js"));function _interopRequireWildcard(e,r){if("function"==typeof WeakMap)var t=new WeakMap,n=new WeakMap;return(_interopRequireWildcard=function(e,r){if(!r&&e&&e.__esModule)return e;var u,o,a={__proto__:null,default:e};if(null===e||"object"!=typeof e&&"function"!=typeof e)return a;if(u=r?n:t){if(u.has(e))return u.get(e);u.set(e,a)}for(const r in e)"default"!==r&&{}.hasOwnProperty.call(e,r)&&((o=(u=Object.defineProperty)&&Object.getOwnPropertyDescriptor(e,r))&&(o.get||o.set)?u(a,r,o):a[r]=e[r]);return a})(e,r)}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
"use strict";Object.defineProperty(exports,"__esModule",{value:!0}),exports.DEFAULT_MESSAGE_LIST_LABELS=void 0,exports.MessageList=MessageList,exports.default=void 0;var _mobileCore=require("@webority/mobile-core"),_react=require("react"),_reactNative=require("react-native"),_reactNativeKeyboardController=require("react-native-keyboard-controller"),_reactNativeSafeAreaContext=require("react-native-safe-area-context"),_useReducedMotion=require("../../hooks/useReducedMotion.js"),_index=require("../../theme/index.js"),_announce=require("../../utils/announce.js"),_corners=require("../../utils/corners.js"),_index2=require("../Badge/index.js"),_index3=require("../DateSeparator/index.js"),_index4=require("../IconButton/index.js"),_index5=require("../Spinner/index.js"),_jsxRuntime=require("react/jsx-runtime");const DEFAULT_MESSAGE_LIST_LABELS=exports.DEFAULT_MESSAGE_LIST_LABELS=Object.freeze({today:"Today",yesterday:"Yesterday",jumpToLatest:"Jump to the latest message",newMessages:e=>1===e?"1 new message":`${e} new messages`,unread:"New messages",loadingOlder:"Loading earlier messages"}),JUMP_AT=160,KEEP_POSITION={minIndexForVisible:0,autoscrollToTopThreshold:JUMP_AT},positionOf=(e,t)=>e?t?"middle":"last":t?"first":"single";function MessageList({messages:e,keyExtractor:t,renderMessage:n,getAuthorKey:s,getDate:r,firstUnreadKey:a,onLoadOlder:o,loadingOlder:i=!1,hasOlder:l=!0,typing:u,empty:c,getAnnouncement:d,followNew:_,keyboardAware:m=!0,keyboardOffset:x,labels:p,now:g,onScroll:j,contentContainerStyle:f,style:y,testID:b,...S}){const v=(0,_index.useTheme)(),L=(0,_reactNativeSafeAreaContext.useSafeAreaInsets)(),h=(0,_useReducedMotion.useReducedMotion)(),E=(0,_react.useMemo)(()=>buildStyles(v),[v]),R=(0,_react.useMemo)(()=>({...DEFAULT_MESSAGE_LIST_LABELS,...p}),[p]),w=x??L.bottom,T=(0,_react.useRef)(null),A=(0,_react.useRef)(!1),[C,M]=(0,_react.useState)(!1),[I,N]=(0,_react.useState)(0),O=(0,_react.useMemo)(()=>{const n=r?e.map(e=>(0,_mobileCore.formatDate)(r(e))):null,o=s?e.map(s):null,i=void 0===a?-1:e.findIndex(e=>t(e)===a);return e.map((t,s)=>{const a=s===e.length-1,l=null!==n&&(a||n[s]!==n[s+1]),u=null!==o&&!a&&o[s+1]===o[s]&&!l&&s!==i,c=null!==o&&s>0&&o[s-1]===o[s]&&(null===n||n[s-1]===n[s])&&s-1!==i;return{groupPosition:positionOf(u,c),day:l&&r?(0,_index3.dayLabel)(r(t),{now:g,labels:R}):null,unread:s===i}})},[e,r,s,a,t,g,R]),k=(0,_react.useCallback)(()=>{T.current?.scrollToOffset({offset:0,animated:!h}),N(0)},[h]),q=e.length>0?t(e[0]):null,D=(0,_react.useRef)(q);(0,_react.useEffect)(()=>{const n=D.current;if(D.current=q,null===n||null===q||n===q)return;const s=e.findIndex(e=>t(e)===n);if(-1===s)return void N(0);const r=e.slice(0,s).reverse();for(const e of r){const t=d?.(e);t&&(0,_announce.announce)(t)}_&&r.some(_)?k():A.current&&N(e=>e+r.length)},[q]);const P=(0,_react.useCallback)(e=>{const t=e.nativeEvent.contentOffset.y>JUMP_AT;t!==A.current&&(A.current=t,M(t),t||N(0)),j?.(e)},[j]),F=(0,_react.useCallback)(()=>{l&&!i&&o?.()},[l,i,o]),V=(0,_react.useCallback)(({item:e,index:t})=>{const s=O[t];return(0,_jsxRuntime.jsxs)(_jsxRuntime.Fragment,{children:[s?.day?(0,_jsxRuntime.jsx)(_index3.DateSeparator,{label:s.day}):null,s?.unread?(0,_jsxRuntime.jsx)(_index3.DateSeparator,{label:R.unread,emphasis:!0}):null,n({item:e,index:t,groupPosition:s?.groupPosition??"single"})]})},[O,R.unread,n]),B=(0,_react.useCallback)(e=>t(e),[t]),U=(0,_react.useCallback)(e=>(0,_jsxRuntime.jsx)(_reactNativeKeyboardController.KeyboardChatScrollView,{...e,inverted:!0,offset:w}),[w]),K=I>0?`${R.newMessages(I)}. ${R.jumpToLatest}`:R.jumpToLatest;return(0,_jsxRuntime.jsxs)(_reactNative.View,{style:[E.root,y],children:[(0,_jsxRuntime.jsx)(_reactNative.FlatList,{keyboardShouldPersistTaps:"handled",maintainVisibleContentPosition:KEEP_POSITION,...S,ref:T,data:e,renderItem:V,keyExtractor:B,inverted:!0,onScroll:P,onEndReached:o?F:void 0,ListHeaderComponent:u?(0,_jsxRuntime.jsx)(_jsxRuntime.Fragment,{children:u}):null,ListFooterComponent:i?(0,_jsxRuntime.jsx)(_index5.Spinner,{size:"sm",accessibilityLabel:R.loadingOlder,style:E.older}):null,ListEmptyComponent:c?(0,_jsxRuntime.jsx)(_reactNative.View,{style:E.fill,children:c}):null,renderScrollComponent:m?U:void 0,contentContainerStyle:[E.content,0===e.length?E.grow:null,f],testID:b}),C?(0,_jsxRuntime.jsxs)(_reactNative.View,{style:E.jump,pointerEvents:"box-none",children:[(0,_jsxRuntime.jsx)(_reactNative.View,{style:E.jumpDisc,children:(0,_jsxRuntime.jsx)(_index4.IconButton,{icon:"arrow-down",accessibilityLabel:K,variant:"ghost",tone:"neutral",onPress:k,testID:b?`${b}-jump`:void 0})}),I>0?(0,_jsxRuntime.jsx)(_reactNative.View,{style:E.count,pointerEvents:"none",importantForAccessibility:"no-hide-descendants",accessibilityElementsHidden:!0,children:(0,_jsxRuntime.jsx)(_index2.Badge,{value:I,max:99,tone:"primary",size:"sm"})}):null]}):null]})}const buildStyles=e=>_reactNative.StyleSheet.create({root:{flex:1},content:{paddingHorizontal:e.spacing.md,paddingVertical:e.spacing.sm},grow:{flexGrow:1},fill:{flex:1},older:{paddingVertical:e.spacing.md},jump:{position:"absolute",right:e.spacing.md,bottom:e.spacing.md},jumpDisc:{borderRadius:e.radius.full,..._corners.smoothCorners,backgroundColor:e.colors.background.elevated,...e.shadows.md},count:{position:"absolute",top:-e.spacing.xs,right:-e.spacing.xs}});var _default=exports.default=MessageList;
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
"use strict";Object.defineProperty(exports,"__esModule",{value:!0}),Object.defineProperty(exports,"DEFAULT_MESSAGE_LIST_LABELS",{enumerable:!0,get:function(){return _MessageList.DEFAULT_MESSAGE_LIST_LABELS}}),Object.defineProperty(exports,"MessageList",{enumerable:!0,get:function(){return _MessageList.MessageList}}),Object.defineProperty(exports,"default",{enumerable:!0,get:function(){return _MessageList.default}});var _MessageList=_interopRequireWildcard(require("./MessageList.js"));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 i,s,o={__proto__:null,default:e};if(null===e||"object"!=typeof e&&"function"!=typeof e)return o;if(i=t?n:r){if(i.has(e))return i.get(e);i.set(e,o)}for(const t in e)"default"!==t&&{}.hasOwnProperty.call(e,t)&&((s=(i=Object.defineProperty)&&Object.getOwnPropertyDescriptor(e,t))&&(s.get||s.set)?i(o,t,s):o[t]=e[t]);return o})(e,t)}
|