react-native-system-ui 1.0.8 → 1.1.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.
Files changed (59) hide show
  1. package/README.md +7 -5
  2. package/dist/cjs/components/action-sheet/ActionSheet.js +1 -1
  3. package/dist/cjs/components/cascader/Cascader.js +1 -1
  4. package/dist/cjs/components/cell/Cell.js +1 -1
  5. package/dist/cjs/components/circle/Circle.js +1 -1
  6. package/dist/cjs/components/collapse/Collapse.js +1 -1
  7. package/dist/cjs/components/dialog/Dialog.js +1 -1
  8. package/dist/cjs/components/empty/Empty.js +1 -1
  9. package/dist/cjs/components/field/Field.js +1 -1
  10. package/dist/cjs/components/image/Image.js +1 -1
  11. package/dist/cjs/components/input/Input.js +1 -1
  12. package/dist/cjs/components/nav-bar/NavBar.js +1 -1
  13. package/dist/cjs/components/notice-bar/NoticeBar.js +1 -1
  14. package/dist/cjs/components/picker/Picker.js +1 -1
  15. package/dist/cjs/components/popup/Popup.js +1 -1
  16. package/dist/cjs/components/portal/PortalHost.js +1 -1
  17. package/dist/cjs/components/search/Search.js +1 -1
  18. package/dist/cjs/components/share-sheet/ShareSheet.js +1 -1
  19. package/dist/cjs/components/tag/Tag.js +1 -1
  20. package/dist/cjs/components/toast/Toast.js +1 -1
  21. package/dist/cjs/components/toast/tokens.js +1 -1
  22. package/dist/cjs/design-system/ThemeProvider.js +1 -1
  23. package/dist/cjs/design-system/createComponentTokensHook.js +1 -1
  24. package/dist/cjs/hooks/field/renderers.js +1 -1
  25. package/dist/cjs/hooks/useControllableValue.js +1 -1
  26. package/dist/cjs/hooks/useSafeAreaPadding.js +1 -1
  27. package/dist/cjs/internal/icons.js +1 -0
  28. package/dist/cjs/internal/svg.js +1 -0
  29. package/dist/es/components/action-sheet/ActionSheet.js +1 -1
  30. package/dist/es/components/cascader/Cascader.js +1 -1
  31. package/dist/es/components/cell/Cell.js +1 -1
  32. package/dist/es/components/circle/Circle.js +1 -1
  33. package/dist/es/components/collapse/Collapse.js +1 -1
  34. package/dist/es/components/dialog/Dialog.js +1 -1
  35. package/dist/es/components/empty/Empty.js +1 -1
  36. package/dist/es/components/field/Field.js +1 -1
  37. package/dist/es/components/image/Image.js +1 -1
  38. package/dist/es/components/input/Input.js +1 -1
  39. package/dist/es/components/nav-bar/NavBar.js +1 -1
  40. package/dist/es/components/notice-bar/NoticeBar.js +1 -1
  41. package/dist/es/components/picker/Picker.js +1 -1
  42. package/dist/es/components/popup/Popup.js +1 -1
  43. package/dist/es/components/portal/PortalHost.js +1 -1
  44. package/dist/es/components/search/Search.js +1 -1
  45. package/dist/es/components/share-sheet/ShareSheet.js +1 -1
  46. package/dist/es/components/tag/Tag.js +1 -1
  47. package/dist/es/components/toast/Toast.js +1 -1
  48. package/dist/es/components/toast/tokens.js +1 -1
  49. package/dist/es/design-system/ThemeProvider.js +1 -1
  50. package/dist/es/design-system/createComponentTokensHook.js +1 -1
  51. package/dist/es/hooks/field/renderers.js +1 -1
  52. package/dist/es/hooks/useControllableValue.js +1 -1
  53. package/dist/es/hooks/useSafeAreaPadding.js +1 -1
  54. package/dist/es/internal/icons.js +1 -0
  55. package/dist/es/internal/svg.js +1 -0
  56. package/dist/types/design-system/createComponentTokensHook.d.ts +1 -1
  57. package/dist/types/internal/icons.d.ts +1 -0
  58. package/dist/types/internal/svg.d.ts +1 -0
  59. package/package.json +20 -18
@@ -1 +1 @@
1
- function _extends(){return _extends=Object.assign?Object.assign.bind():function(e){for(var o=1;o<arguments.length;o++){var t=arguments[o];for(var n in t)({}).hasOwnProperty.call(t,n)&&(e[n]=t[n])}return e},_extends.apply(null,arguments)}import React,{useCallback,useEffect,useMemo,useRef}from"react";import{Animated,Easing,Platform,Pressable,StyleSheet,View}from"react-native";import{useLocale}from"../config-provider/useLocale";import{nativeDriverEnabled}from"../../platform";import{useReducedMotion}from"../../hooks/animation";import{createHairlineView}from"../../utils/hairline";import{isPromiseLike}from"../../utils/promise";import{isNumber,isValidNode}from"../../utils/validate";import{renderTextOrNode}from"../../utils";import{Close}from"react-native-system-icon";import Button from"../button";import Popup from"../popup";import{useDialogTokens}from"./tokens";import{ActionButton}from"../../hooks/dialog/ActionButton";const DialogImpl=e=>{const o=useLocale(),{visible:t,title:n,message:i,messageAlign:r="center",theme:a="default",width:l,closeable:s=!1,closeIcon:c,overlay:d=!0,overlayStyle:g,overlayTestID:p="dialog-overlay",closeOnBackPress:m=!1,closeOnPopstate:u=!0,closeOnOverlayPress:f=!1,closeOnClickOverlay:y=!1,onClickOverlay:b,onClickCloseIcon:h,beforeClose:C,showCancelButton:v=!1,showConfirmButton:P=!0,cancelButtonText:k,cancelButtonColor:x,cancelProps:w,confirmButtonText:B,confirmButtonColor:R,confirmProps:E,footer:O,contentStyle:z,titleStyle:I,messageStyle:H,tokensOverride:V,style:T,children:D,onCancel:L,onConfirm:A,onClose:F,onClosed:N,...W}=e,M=useDialogTokens(V),q=useReducedMotion(),G=isValidNode(n),_=isValidNode(D),j=isValidNode(i)||_,J=v||P,K="round-button"===a,Q=w?.loading,U=E?.loading,X=k??o.cancel,Y=B??o.confirm,Z=useRef({seq:0,beforeClose:C,onClose:F,onCancel:L,onConfirm:A,onClickCloseIcon:h,cancelLoad:Q,confirmLoad:U});Object.assign(Z.current,{beforeClose:C,onClose:F,onCancel:L,onConfirm:A,onClickCloseIcon:h,cancelLoad:Q,confirmLoad:U});const $=useCallback((e,o)=>{const t=Z.current;t.seq+=1;const n=t.seq,i=t.beforeClose;if(!i)return void o?.();let r;try{r=i(e)}catch{return}!1!==r&&(isPromiseLike(r)?r.then(e=>{!1!==e&&Z.current.seq===n&&o?.()}).catch(()=>{}):o?.())},[]),ee=useCallback(()=>{Z.current.onClickCloseIcon?.(),$("close",()=>Z.current.onClose?.())},[$]),oe=useCallback(()=>{Z.current.cancelLoad||$("cancel",()=>Z.current.onCancel?.())},[$]),te=useCallback(()=>{Z.current.confirmLoad||$("confirm",()=>Z.current.onConfirm?.())},[$]),ne=useRef(new Animated.Value(.7)).current,ie=useRef(null);useEffect(()=>{ie.current?.stop(),ne.setValue(t?.7:1);const e=Animated.timing(ne,{toValue:t?1:.9,duration:q?0:300,easing:t?Easing.out(Easing.cubic):Easing.in(Easing.cubic),useNativeDriver:nativeDriverEnabled,isInteraction:!1});ie.current=e,e.start()},[ne,t,q]),useEffect(()=>()=>{ie.current?.stop()},[]);const re={transform:[{scale:ne}]},ae=useMemo(()=>G?{wrap:[S.titleWrap,{paddingTop:j?M.spacing.titlePaddingTop:M.spacing.titleIsolatedPadding,paddingBottom:j?0:M.spacing.titleIsolatedPadding,paddingHorizontal:j?M.spacing.paddingHorizontal:0,marginBottom:j?M.spacing.titleGap:0}],text:[S.title,{color:M.colors.title,fontFamily:M.typography.fontFamily,fontSize:M.typography.titleSize,lineHeight:M.typography.titleLineHeight,fontWeight:M.typography.titleWeight},I]}:null,[G,j,I,M]),le=useMemo(()=>({text:[S.msg,{color:K?M.colors.title:M.colors.message,fontFamily:M.typography.fontFamily,fontSize:M.typography.messageSize,lineHeight:M.typography.messageLineHeight,textAlign:r},H],content:_?null:{alignItems:"center"===r?"center":"left"===r?"flex-start":"flex-end"},wrap:[S.msgWrap,{paddingTop:G?M.spacing.messagePaddingTop:M.spacing.messagePadding,paddingBottom:K?M.spacing.roundFooterPadding:M.spacing.messagePadding,paddingHorizontal:M.spacing.messagePaddingHorizontal}]}),[K,r,H,_,G,M]),se=useMemo(()=>({border:[S.footerBorder,createHairlineView({position:"top",color:M.colors.divider,left:0,right:0,top:0})],round:[S.roundFooter,{paddingTop:M.spacing.messagePaddingTop,paddingHorizontal:M.spacing.messagePaddingHorizontal,paddingBottom:M.spacing.roundFooterPadding}]}),[M]),ce=useMemo(()=>{const e=l?isNumber(l)?{width:l}:{width:String(l)}:{width:"90%",maxWidth:M.sizes.maxWidth};return[{backgroundColor:M.colors.background,borderRadius:M.sizes.borderRadius,padding:0},e,T]},[l,T,M]),de=useCallback(()=>{const e=Z.current.beforeClose;if(!e)return!0;try{return e("close")}catch{return!1}},[]),ge=useMemo(()=>J&&React.createElement(View,{style:se.round},v&&React.createElement(View,{style:[S.roundBtnWrap,P&&{marginRight:M.spacing.roundFooterGap}]},React.createElement(Button,{block:!0,round:!0,type:"warning",text:X,color:x,loading:Q,disabled:w?.disabled,onPress:oe,style:{minHeight:M.sizes.roundButtonHeight}})),P&&React.createElement(View,{style:[S.roundBtnWrap,v&&{marginLeft:M.spacing.roundFooterGap}]},React.createElement(Button,{block:!0,round:!0,type:"danger",text:Y,color:R,loading:U,disabled:E?.disabled,onPress:te,style:{minHeight:M.sizes.roundButtonHeight}}))),[x,Q,w?.disabled,X,R,U,E?.disabled,Y,oe,te,J,se.round,v,P,M.sizes.roundButtonHeight,M.spacing.roundFooterGap]),pe=useMemo(()=>J&&React.createElement(View,{style:S.footer},React.createElement(View,{style:se.border,pointerEvents:"none"}),v&&React.createElement(ActionButton,{tokens:M,text:X,color:x??M.colors.cancel,dividerPosition:"none",loading:Q,disabled:w?.disabled,onPress:oe}),P&&React.createElement(ActionButton,{tokens:M,text:Y,color:R??M.colors.confirm,dividerPosition:v?"left":"none",loading:U,disabled:E?.disabled,onPress:te})),[x,Q,w?.disabled,X,R,U,E?.disabled,Y,se.border,oe,te,J,v,P,M]),me=O??(K?ge:pe);return React.createElement(Popup,_extends({visible:t,placement:"center",round:!0,overlay:d,overlayStyle:g,overlayTestID:p,closeOnBackPress:m,closeOnPopstate:u,closeOnClickOverlay:f||y,onClickOverlay:b,beforeClose:de,onClose:F,onClosed:N,contentAnimationStyle:re,style:ce,accessibilityRole:"android"===Platform.OS?"alert":"alertdialog",accessibilityLabel:"string"==typeof n?n:void 0},W),s&&React.createElement(Pressable,{style:[S.closeIcon,{top:M.spacing.paddingTop/2,right:M.spacing.paddingHorizontal/2,padding:M.spacing.closeIconPadding}],hitSlop:{top:8,bottom:8,left:8,right:8},onPress:ee},c??React.createElement(Close,{size:M.sizes.closeSize,fill:M.colors.closeIcon,color:M.colors.closeIcon})),ae&&React.createElement(View,{style:ae.wrap},renderTextOrNode(n,ae.text)),j&&React.createElement(View,{style:[S.content,le.content,z]},_?D:React.createElement(View,{style:le.wrap},renderTextOrNode(i,le.text))),me)},S=StyleSheet.create({titleWrap:{alignItems:"center"},title:{textAlign:"center"},content:{width:"100%"},msg:{textAlign:"center"},footer:{flexDirection:"row",position:"relative"},footerBorder:{position:"absolute",top:0,left:0,right:0,height:0},msgWrap:{width:"100%"},roundFooter:{width:"100%",flexDirection:"row"},roundBtnWrap:{flex:1},closeIcon:{position:"absolute",zIndex:1}});export const Dialog=React.memo(DialogImpl);Dialog.displayName="Dialog";export default Dialog;
1
+ function _extends(){return _extends=Object.assign?Object.assign.bind():function(e){for(var o=1;o<arguments.length;o++){var t=arguments[o];for(var n in t)({}).hasOwnProperty.call(t,n)&&(e[n]=t[n])}return e},_extends.apply(null,arguments)}import React,{useCallback,useEffect,useMemo,useRef}from"react";import{Animated,Easing,Platform,Pressable,StyleSheet,View}from"react-native";import{useLocale}from"../config-provider/useLocale";import{nativeDriverEnabled}from"../../platform";import{useReducedMotion}from"../../hooks/animation";import{createHairlineView}from"../../utils/hairline";import{isPromiseLike}from"../../utils/promise";import{isNumber,isValidNode}from"../../utils/validate";import{renderTextOrNode}from"../../utils";import{Close}from"../../internal/icons";import Button from"../button";import Popup from"../popup";import{useDialogTokens}from"./tokens";import{ActionButton}from"../../hooks/dialog/ActionButton";const DialogImpl=e=>{const o=useLocale(),{visible:t,title:n,message:i,messageAlign:r="center",theme:a="default",width:l,closeable:s=!1,closeIcon:c,overlay:d=!0,overlayStyle:g,overlayTestID:p="dialog-overlay",closeOnBackPress:u=!1,closeOnPopstate:m=!0,closeOnOverlayPress:f=!1,closeOnClickOverlay:y=!1,onClickOverlay:b,onClickCloseIcon:h,beforeClose:C,showCancelButton:P=!1,showConfirmButton:v=!0,cancelButtonText:k,cancelButtonColor:x,cancelProps:w,confirmButtonText:B,confirmButtonColor:R,confirmProps:E,footer:O,contentStyle:z,titleStyle:I,messageStyle:H,tokensOverride:V,style:T,children:D,onCancel:L,onConfirm:A,onClose:F,onClosed:N,...W}=e,M=useDialogTokens(V),q=useReducedMotion(),G=isValidNode(n),_=isValidNode(D),j=isValidNode(i)||_,J=P||v,K="round-button"===a,Q=w?.loading,U=E?.loading,X=k??o.cancel,Y=B??o.confirm,Z=useRef({seq:0,beforeClose:C,onClose:F,onCancel:L,onConfirm:A,onClickCloseIcon:h,cancelLoad:Q,confirmLoad:U});Object.assign(Z.current,{beforeClose:C,onClose:F,onCancel:L,onConfirm:A,onClickCloseIcon:h,cancelLoad:Q,confirmLoad:U});const $=useCallback((e,o)=>{const t=Z.current;t.seq+=1;const n=t.seq,i=t.beforeClose;if(!i)return void o?.();let r;try{r=i(e)}catch{return}!1!==r&&(isPromiseLike(r)?r.then(e=>{!1!==e&&Z.current.seq===n&&o?.()}).catch(()=>{}):o?.())},[]),ee=useCallback(()=>{Z.current.onClickCloseIcon?.(),$("close",()=>Z.current.onClose?.())},[$]),oe=useCallback(()=>{Z.current.cancelLoad||$("cancel",()=>Z.current.onCancel?.())},[$]),te=useCallback(()=>{Z.current.confirmLoad||$("confirm",()=>Z.current.onConfirm?.())},[$]),ne=useRef(new Animated.Value(.7)).current,ie=useRef(null);useEffect(()=>{ie.current?.stop(),ne.setValue(t?.7:1);const e=Animated.timing(ne,{toValue:t?1:.9,duration:q?0:300,easing:t?Easing.out(Easing.cubic):Easing.in(Easing.cubic),useNativeDriver:nativeDriverEnabled,isInteraction:!1});ie.current=e,e.start()},[ne,t,q]),useEffect(()=>()=>{ie.current?.stop()},[]);const re={transform:[{scale:ne}]},ae=useMemo(()=>G?{wrap:[S.titleWrap,{paddingTop:j?M.spacing.titlePaddingTop:M.spacing.titleIsolatedPadding,paddingBottom:j?0:M.spacing.titleIsolatedPadding,paddingHorizontal:j?M.spacing.paddingHorizontal:0,marginBottom:j?M.spacing.titleGap:0}],text:[S.title,{color:M.colors.title,fontFamily:M.typography.fontFamily,fontSize:M.typography.titleSize,lineHeight:M.typography.titleLineHeight,fontWeight:M.typography.titleWeight},I]}:null,[G,j,I,M]),le=useMemo(()=>({text:[S.msg,{color:K?M.colors.title:M.colors.message,fontFamily:M.typography.fontFamily,fontSize:M.typography.messageSize,lineHeight:M.typography.messageLineHeight,textAlign:r},H],content:_?null:{alignItems:"center"===r?"center":"left"===r?"flex-start":"flex-end"},wrap:[S.msgWrap,{paddingTop:G?M.spacing.messagePaddingTop:M.spacing.messagePadding,paddingBottom:K?M.spacing.roundFooterPadding:M.spacing.messagePadding,paddingHorizontal:M.spacing.messagePaddingHorizontal}]}),[K,r,H,_,G,M]),se=useMemo(()=>({border:[S.footerBorder,createHairlineView({position:"top",color:M.colors.divider,left:0,right:0,top:0})],round:[S.roundFooter,{paddingTop:M.spacing.messagePaddingTop,paddingHorizontal:M.spacing.messagePaddingHorizontal,paddingBottom:M.spacing.roundFooterPadding}]}),[M]),ce=useMemo(()=>{const e=l?isNumber(l)?{width:l}:{width:String(l)}:{width:"90%",maxWidth:M.sizes.maxWidth};return[{backgroundColor:M.colors.background,borderRadius:M.sizes.borderRadius,padding:0},e,T]},[l,T,M]),de=useCallback(()=>{const e=Z.current.beforeClose;if(!e)return!0;try{return e("close")}catch{return!1}},[]),ge=useMemo(()=>J&&React.createElement(View,{style:se.round},P&&React.createElement(View,{style:[S.roundBtnWrap,v&&{marginRight:M.spacing.roundFooterGap}]},React.createElement(Button,{block:!0,round:!0,type:"warning",text:X,color:x,loading:Q,disabled:w?.disabled,onPress:oe,style:{minHeight:M.sizes.roundButtonHeight}})),v&&React.createElement(View,{style:[S.roundBtnWrap,P&&{marginLeft:M.spacing.roundFooterGap}]},React.createElement(Button,{block:!0,round:!0,type:"danger",text:Y,color:R,loading:U,disabled:E?.disabled,onPress:te,style:{minHeight:M.sizes.roundButtonHeight}}))),[x,Q,w?.disabled,X,R,U,E?.disabled,Y,oe,te,J,se.round,P,v,M.sizes.roundButtonHeight,M.spacing.roundFooterGap]),pe=useMemo(()=>J&&React.createElement(View,{style:S.footer},React.createElement(View,{style:se.border,pointerEvents:"none"}),P&&React.createElement(ActionButton,{tokens:M,text:X,color:x??M.colors.cancel,dividerPosition:"none",loading:Q,disabled:w?.disabled,onPress:oe}),v&&React.createElement(ActionButton,{tokens:M,text:Y,color:R??M.colors.confirm,dividerPosition:P?"left":"none",loading:U,disabled:E?.disabled,onPress:te})),[x,Q,w?.disabled,X,R,U,E?.disabled,Y,se.border,oe,te,J,P,v,M]),ue=O??(K?ge:pe);return React.createElement(Popup,_extends({visible:t,placement:"center",round:!0,overlay:d,overlayStyle:g,overlayTestID:p,closeOnBackPress:u,closeOnPopstate:m,closeOnClickOverlay:f||y,onClickOverlay:b,beforeClose:de,onClose:F,onClosed:N,contentAnimationStyle:re,style:ce,accessibilityRole:"android"===Platform.OS?"alert":"alertdialog",accessibilityLabel:"string"==typeof n?n:void 0},W),s&&React.createElement(Pressable,{style:[S.closeIcon,{top:M.spacing.paddingTop/2,right:M.spacing.paddingHorizontal/2,padding:M.spacing.closeIconPadding}],hitSlop:{top:8,bottom:8,left:8,right:8},onPress:ee},c??React.createElement(Close,{size:M.sizes.closeSize,fill:M.colors.closeIcon,color:M.colors.closeIcon})),ae&&React.createElement(View,{style:ae.wrap},renderTextOrNode(n,ae.text)),j&&React.createElement(View,{style:[S.content,le.content,z]},_?D:React.createElement(View,{style:le.wrap},renderTextOrNode(i,le.text))),ue)},S=StyleSheet.create({titleWrap:{alignItems:"center"},title:{textAlign:"center"},content:{width:"100%"},msg:{textAlign:"center"},footer:{flexDirection:"row",position:"relative"},footerBorder:{position:"absolute",top:0,left:0,right:0,height:0},msgWrap:{width:"100%"},roundFooter:{width:"100%",flexDirection:"row"},roundBtnWrap:{flex:1},closeIcon:{position:"absolute",zIndex:1}});export const Dialog=React.memo(DialogImpl);Dialog.displayName="Dialog";export default Dialog;
@@ -1 +1 @@
1
- function _extends(){return _extends=Object.assign?Object.assign.bind():function(e){for(var t=1;t<arguments.length;t++){var i=arguments[t];for(var r in i)({}).hasOwnProperty.call(i,r)&&(e[r]=i[r])}return e},_extends.apply(null,arguments)}import React from"react";import{Text,View}from"react-native";import{Description,Fail,Search}from"react-native-system-icon";import{isRenderable,isString,isText,renderTextOrNode}from"../../utils";import Image from"../image";import{useEmptyTokens}from"./tokens";const PRESET_ICONS={default:Description,error:Fail,network:Fail,search:Search},EmptyImpl=e=>{const{tokensOverride:t,image:i,imageSize:r,imageStyle:n,description:o,descriptionStyle:a,children:s,style:c,gap:l,...p}=e,m=useEmptyTokens(t),g=i??m.defaults.image,d=l??m.defaults.gap,y=r??m.sizing.image,h={fontFamily:m.typography.descriptionFontFamily,fontSize:m.typography.descriptionSize,fontWeight:m.typography.descriptionFontWeight};return React.createElement(View,_extends({accessibilityRole:"summary",accessibilityLabel:isText(o)?String(o):void 0,style:[m.layout.container,c]},p),(()=>{if(React.isValidElement(g))return React.createElement(View,{style:[m.layout.imageWrapper,{width:y,height:y},n]},g);if(isString(g)){if(/^https?:/.test(g))return React.createElement(Image,{src:g,width:y,height:y,fit:"contain",showLoading:!1,showError:!1,containerStyle:[{backgroundColor:m.colors.imageBackground},n]});const e=PRESET_ICONS[g]||PRESET_ICONS.default;return React.createElement(View,{style:[m.layout.imageWrapper,{width:y,height:y},n]},React.createElement(e,{size:y*m.sizing.iconScale,color:m.colors.icon}))}return null})(),isRenderable(o)?isText(o)?React.createElement(Text,{style:[m.layout.descriptionText,{marginTop:d,paddingHorizontal:m.spacing.descriptionPaddingHorizontal,color:m.colors.description,fontSize:m.typography.descriptionSize,lineHeight:m.typography.descriptionLineHeight,fontFamily:m.typography.descriptionFontFamily,fontWeight:m.typography.descriptionFontWeight},a]},o):React.createElement(View,{style:{marginTop:d,paddingHorizontal:m.spacing.descriptionPaddingHorizontal}},o):null,isRenderable(s)&&React.createElement(View,{style:{marginTop:m.spacing.footerMarginTop}},renderTextOrNode(s,h)))};export const Empty=React.memo(EmptyImpl);Empty.displayName="Empty";
1
+ function _extends(){return _extends=Object.assign?Object.assign.bind():function(e){for(var t=1;t<arguments.length;t++){var i=arguments[t];for(var r in i)({}).hasOwnProperty.call(i,r)&&(e[r]=i[r])}return e},_extends.apply(null,arguments)}import React from"react";import{Text,View}from"react-native";import{Description,Fail,Search}from"../../internal/icons";import{isRenderable,isString,isText,renderTextOrNode}from"../../utils";import Image from"../image";import{useEmptyTokens}from"./tokens";const PRESET_ICONS={default:Description,error:Fail,network:Fail,search:Search},EmptyImpl=e=>{const{tokensOverride:t,image:i,imageSize:r,imageStyle:n,description:o,descriptionStyle:a,children:s,style:c,gap:l,...p}=e,m=useEmptyTokens(t),g=i??m.defaults.image,d=l??m.defaults.gap,y=r??m.sizing.image,h={fontFamily:m.typography.descriptionFontFamily,fontSize:m.typography.descriptionSize,fontWeight:m.typography.descriptionFontWeight};return React.createElement(View,_extends({accessibilityRole:"summary",accessibilityLabel:isText(o)?String(o):void 0,style:[m.layout.container,c]},p),(()=>{if(React.isValidElement(g))return React.createElement(View,{style:[m.layout.imageWrapper,{width:y,height:y},n]},g);if(isString(g)){if(/^https?:/.test(g))return React.createElement(Image,{src:g,width:y,height:y,fit:"contain",showLoading:!1,showError:!1,containerStyle:[{backgroundColor:m.colors.imageBackground},n]});const e=PRESET_ICONS[g]||PRESET_ICONS.default;return React.createElement(View,{style:[m.layout.imageWrapper,{width:y,height:y},n]},React.createElement(e,{size:y*m.sizing.iconScale,color:m.colors.icon}))}return null})(),isRenderable(o)?isText(o)?React.createElement(Text,{style:[m.layout.descriptionText,{marginTop:d,paddingHorizontal:m.spacing.descriptionPaddingHorizontal,color:m.colors.description,fontSize:m.typography.descriptionSize,lineHeight:m.typography.descriptionLineHeight,fontFamily:m.typography.descriptionFontFamily,fontWeight:m.typography.descriptionFontWeight},a]},o):React.createElement(View,{style:{marginTop:d,paddingHorizontal:m.spacing.descriptionPaddingHorizontal}},o):null,isRenderable(s)&&React.createElement(View,{style:{marginTop:m.spacing.footerMarginTop}},renderTextOrNode(s,h)))};export const Empty=React.memo(EmptyImpl);Empty.displayName="Empty";
@@ -1 +1 @@
1
- import React,{useCallback,useId,useImperativeHandle,useMemo,useRef,useState}from"react";import{Platform,Pressable,Text,View}from"react-native";import{QuestionO}from"react-native-system-icon";import Cell from"../cell";import Dialog from"../dialog";import{formatNumberInput}from"../../utils/string";import{isDef,isFiniteNumber,isFunction,isObject,isRenderable,isText}from"../../utils/validate";import{useFieldTokens}from"./tokens";import{alignMap,FieldClearButton,FieldControlRow,FieldInput,FieldSlot,mapKeyboardType,resolveTooltipDialog}from"../../hooks/field/renderers";const FieldImpl=(e,t)=>{const{tokensOverride:r,label:l,labelWidth:i,labelAlign:o,inputAlign:n,controlAlign:a,required:s=!1,colon:c=!1,intro:u,description:d,tooltip:g,error:m=!1,errorMessage:p,errorMessageAlign:f="left",errorMessagePosition:b="inner",disabled:y=!1,readOnly:R=!1,clearable:h=!1,clearTrigger:x,clearIcon:T,leftIcon:w,rightIcon:S,prefix:v,suffix:C,button:I,extra:k,value:F,defaultValue:M="",type:z="text",rows:E,autoSize:P=!1,formatter:L,formatTrigger:O,showWordLimit:D=!1,onOverlimit:H,onClear:A,onClick:N,onClickInput:B,onClickLeftIcon:V,onClickRightIcon:G,border:W,center:j,clickable:q,isLink:K,arrowDirection:Q,size:$,titleStyle:_,contentStyle:J,inputStyle:U,labelStyle:X,introStyle:Y,errorMessageStyle:Z,style:ee,androidRipple:te,children:re,placeholderTextColor:le,onFocus:ie,onBlur:oe,onPressIn:ne,onChangeText:ae,maxLength:se,...ce}=e,ue=useFieldTokens(r),de=i??ue.defaults.labelWidth,ge=o??ue.defaults.labelAlign,me=n??ue.defaults.inputAlign,pe=a??ue.defaults.controlAlign,fe=x??ue.defaults.clearTrigger,be=E??ue.defaults.rows,ye=O??ue.defaults.formatTrigger,Re=[{width:de,minWidth:de,maxWidth:de,flexBasis:de,marginRight:ue.spacing.labelGap,flexShrink:0,flexGrow:0},_],he=C??I,xe=u??d,Te=le??(y?ue.colors.disabled:ue.colors.placeholder),we="textarea"===z,Se=void 0!==F,[ve,Ce]=useState(M),Ie=Se?F??"":ve,[ke,Fe]=useState(!1),[Me,ze]=useState(!1),Ee=useRef(!1),Pe=useRef(null),Le=useId(),Oe=useId(),De=useMemo(()=>{const e=[isRenderable(p)?Oe:null,isRenderable(xe)?Le:null].filter(Boolean);return e.length?e:void 0},[Oe,p,Le,xe]),He=ue.defaults.textareaLineHeight,Ae=P&&isObject(P)?P:void 0,Ne=we?Ae&&isDef(Ae.minRows)?Math.max(1,Ae.minRows):Math.max(1,be):1,Be=we&&Ae&&isDef(Ae.maxRows)?Math.max(1,Ae.maxRows):void 0,Ve=useMemo(()=>we?Math.max(ue.sizes.textareaMinHeight,Ne*He):void 0,[we,He,Ne,ue.sizes.textareaMinHeight]),Ge=useMemo(()=>we&&Be?Math.max(ue.sizes.textareaMinHeight,Be*He):void 0,[we,He,Be,ue.sizes.textareaMinHeight]),[We,je]=useState(Ve),qe=useRef(ae);qe.current=ae;const Ke=useRef(H);Ke.current=H;const Qe=useRef(ie);Qe.current=ie;const $e=useRef(oe);$e.current=oe;const _e=useRef(ne);_e.current=ne;const Je=useRef(B);Je.current=B;const Ue=useRef(A);Ue.current=A;const Xe=useCallback((e,t="onChange")=>L&&t===ye?L(e):e,[ye,L]),Ye=useCallback((e,t="onChange")=>{const r=Xe(e,t);Se||Ce(r),qe.current?.(r)},[Xe,Se]);useImperativeHandle(t,()=>({focus:()=>Pe.current?.focus(),blur:()=>Pe.current?.blur(),clear:()=>Ye(""),get nativeElement(){return Pe.current}}));const Ze="left"!==pe?pe:me,et=h&&!R&&""!==(Ie??"")&&("always"===fe||"focus"===fe&&(ke||Me)),tt=useCallback(e=>{let t=e??"";if("number"===z||"digit"===z){const e="number"===z;t=formatNumberInput(t,e,e)}isFiniteNumber(se)&&se>=0&&t.length>se&&(Ke.current?.(t),t=t.slice(0,se)),Ye(t,"onChange")},[se,z,Ye]),rt=useCallback(e=>{Fe(!0),Qe.current?.(e),R&&Pe.current?.blur()},[R]),lt=useCallback(e=>{if("web"!==Platform.OS&&Ee.current)return Ee.current=!1,Fe(!1),void $e.current?.(e);Ye(Ie??"","onBlur"),Fe(!1),$e.current?.(e)},[Ye,Ie]),it=useCallback(e=>{_e.current?.(e),Je.current?.()},[]),ot=useCallback(e=>{if(!we)return;const t=e.nativeEvent.contentSize?.height??0;if(!t)return;let r=t;P?(r=Math.max(Ve??t,t),Ge&&(r=Math.min(r,Ge))):Ve&&(r=Math.max(Ve,t)),je(r)},[P,we,Ge,Ve]),nt=useCallback(()=>{"web"!==Platform.OS&&(Ee.current=!0),Ye(""),Pe.current?.clear?.(),Pe.current?.focus?.(),Ue.current?.()},[Ye]),at=useCallback(()=>{ze(!0),"web"!==Platform.OS&&nt()},[nt]),st=useCallback(()=>{ze(!1),Ee.current=!1},[]),ct=isRenderable(re)?React.createElement(View,{style:[ue.layout.children,{minHeight:ue.sizes.controlMinHeight}]},re):React.createElement(FieldInput,{inputRef:Pe,tokens:ue,isTextarea:we,disabled:y,error:m,finalTextAlign:Ze,lineHeight:He,textareaHeight:We,minHeight:Ve,inputStyle:U,value:Ie??"",onChangeText:tt,onFocus:rt,onBlur:lt,onPressIn:it,rows:be,keyboardType:ce.keyboardType??mapKeyboardType(z),placeholderTextColor:Te,onContentSizeChange:ot,describedBy:De,secureTextEntry:"password"===z,editable:!y&&!R,restInputProps:ce}),ut=[{width:"100%",justifyContent:alignMap[pe]},J],dt=e=>isText(e)?React.createElement(Text,{style:[ue.layout.affixText,{color:ue.colors.input,fontSize:ue.typography.inputSize}],numberOfLines:1},e):e,gt=isRenderable(g)?(()=>{const e=React.createElement(QuestionO,{size:ue.sizes.icon,fill:ue.colors.tooltip,color:ue.colors.tooltip}),{icon:t,dialogProps:r}=resolveTooltipDialog(g,e);return React.createElement(Pressable,{style:[ue.layout.tooltip,{marginLeft:ue.spacing.rightIconGap}],onPress:()=>Dialog.show(r),accessibilityRole:"button"},t)})():null,mt=isRenderable(l)?(()=>{const e=isText(l)?React.createElement(Text,{style:[{color:y?ue.colors.disabled:ue.colors.label,fontSize:ue.typography.labelSize,textAlign:ge},X],numberOfLines:1},l,c?":":""):l;return React.createElement(View,{style:ue.layout.labelRow},e,gt)})():null,pt=D&&null!=se?(()=>{const e=(Ie??"").length,t=isFunction(D)?D({currentCount:e,maxLength:se}):`${e}/${se}`;return isRenderable(t)?isText(t)?React.createElement(Text,{style:[ue.layout.wordLimit,{color:ue.colors.wordLimit,fontSize:ue.typography.wordLimitSize??12,textAlign:"right",alignSelf:"flex-end",marginTop:ue.spacing.wordLimitMarginTop}]},t):t:null})():null,ft=isRenderable(p)?isText(p)?React.createElement(Text,{nativeID:Oe,style:[ue.layout.message,{color:ue.colors.error,fontSize:ue.typography.messageSize,textAlign:f,marginTop:ue.spacing.messageMarginTop},Z],accessibilityLiveRegion:"polite"},p):React.createElement(View,{nativeID:Oe,style:[ue.layout.message,{alignSelf:alignMap[f],marginTop:ue.spacing.messageMarginTop}],accessibilityLiveRegion:"polite"},p):null,bt=isRenderable(xe)?isText(xe)?React.createElement(Text,{nativeID:Le,style:[ue.layout.message,{color:ue.colors.intro,fontSize:ue.typography.introSize,textAlign:pe,marginTop:ue.spacing.introMarginTop},Y]},xe):React.createElement(View,{nativeID:Le,style:{marginTop:ue.spacing.introMarginTop}},xe):null,yt=v?React.createElement(View,{style:[ue.layout.prefix,{paddingRight:ue.spacing.prefixGap}]},dt(v)):null,Rt=he?React.createElement(View,{style:[ue.layout.suffix,{paddingLeft:ue.spacing.suffixGap}]},dt(he)):null,ht=w?React.createElement(FieldSlot,{onPress:V,style:[ue.layout.leftIcon,{marginRight:ue.spacing.leftIconGap,minWidth:ue.sizes.icon}]},w):null,xt=S?React.createElement(FieldSlot,{onPress:G,style:[ue.layout.rightIcon,{paddingHorizontal:ue.spacing.rightIconGap}]},S):null,Tt=et?React.createElement(FieldClearButton,{show:et,tokens:ue,clearIcon:T,onPressIn:at,onPressOut:"web"===Platform.OS?st:void 0,onPress:"web"===Platform.OS?nt:void 0}):null,wt="outer"===b,St=React.createElement(Cell,{title:mt,icon:void 0,required:s,border:W,center:j,size:$,clickable:q,isLink:K,arrowDirection:Q,extra:k,titleStyle:Re,style:[ee,wt&&(m||isRenderable(p))?{borderColor:ue.colors.error}:void 0],contentStyle:ut,accessibilityState:m?{invalid:!0}:void 0,accessibilityLabel:isText(l)?String(l):void 0,onPress:N,android_ripple:te},React.createElement(FieldControlRow,{tokens:ue,prefixNode:yt,leftIconNode:ht,controlNode:ct,clearNode:Tt,rightIconNode:xt,suffixNode:Rt}),pt,wt?null:ft,bt);return wt&&ft?React.createElement(React.Fragment,null,St,ft):St},FieldForwardRef=React.forwardRef(FieldImpl);FieldForwardRef.displayName="Field";export const Field=React.memo(FieldForwardRef);export default Field;
1
+ import React,{useCallback,useId,useImperativeHandle,useMemo,useRef,useState}from"react";import{Platform,Pressable,Text,View}from"react-native";import{QuestionO}from"../../internal/icons";import Cell from"../cell";import Dialog from"../dialog";import{formatNumberInput}from"../../utils/string";import{isDef,isFiniteNumber,isFunction,isObject,isRenderable,isText}from"../../utils/validate";import{useFieldTokens}from"./tokens";import{alignMap,FieldClearButton,FieldControlRow,FieldInput,FieldSlot,mapKeyboardType,resolveTooltipDialog}from"../../hooks/field/renderers";const FieldImpl=(e,t)=>{const{tokensOverride:r,label:l,labelWidth:i,labelAlign:o,inputAlign:n,controlAlign:a,required:s=!1,colon:c=!1,intro:u,description:d,tooltip:g,error:m=!1,errorMessage:p,errorMessageAlign:f="left",errorMessagePosition:b="inner",disabled:y=!1,readOnly:R=!1,clearable:h=!1,clearTrigger:x,clearIcon:T,leftIcon:w,rightIcon:S,prefix:C,suffix:v,button:I,extra:k,value:F,defaultValue:M="",type:z="text",rows:E,autoSize:P=!1,formatter:L,formatTrigger:O,showWordLimit:D=!1,onOverlimit:H,onClear:A,onClick:N,onClickInput:B,onClickLeftIcon:V,onClickRightIcon:G,border:W,center:j,clickable:q,isLink:K,arrowDirection:Q,size:$,titleStyle:_,contentStyle:J,inputStyle:U,labelStyle:X,introStyle:Y,errorMessageStyle:Z,style:ee,androidRipple:te,children:re,placeholderTextColor:le,onFocus:ie,onBlur:oe,onPressIn:ne,onChangeText:ae,maxLength:se,...ce}=e,ue=useFieldTokens(r),de=i??ue.defaults.labelWidth,ge=o??ue.defaults.labelAlign,me=n??ue.defaults.inputAlign,pe=a??ue.defaults.controlAlign,fe=x??ue.defaults.clearTrigger,be=E??ue.defaults.rows,ye=O??ue.defaults.formatTrigger,Re=[{width:de,minWidth:de,maxWidth:de,flexBasis:de,marginRight:ue.spacing.labelGap,flexShrink:0,flexGrow:0},_],he=v??I,xe=u??d,Te=le??(y?ue.colors.disabled:ue.colors.placeholder),we="textarea"===z,Se=void 0!==F,[Ce,ve]=useState(M),Ie=Se?F??"":Ce,[ke,Fe]=useState(!1),[Me,ze]=useState(!1),Ee=useRef(!1),Pe=useRef(null),Le=useId(),Oe=useId(),De=useMemo(()=>{const e=[isRenderable(p)?Oe:null,isRenderable(xe)?Le:null].filter(Boolean);return e.length?e:void 0},[Oe,p,Le,xe]),He=ue.defaults.textareaLineHeight,Ae=P&&isObject(P)?P:void 0,Ne=we?Ae&&isDef(Ae.minRows)?Math.max(1,Ae.minRows):Math.max(1,be):1,Be=we&&Ae&&isDef(Ae.maxRows)?Math.max(1,Ae.maxRows):void 0,Ve=useMemo(()=>we?Math.max(ue.sizes.textareaMinHeight,Ne*He):void 0,[we,He,Ne,ue.sizes.textareaMinHeight]),Ge=useMemo(()=>we&&Be?Math.max(ue.sizes.textareaMinHeight,Be*He):void 0,[we,He,Be,ue.sizes.textareaMinHeight]),[We,je]=useState(Ve),qe=useRef(ae);qe.current=ae;const Ke=useRef(H);Ke.current=H;const Qe=useRef(ie);Qe.current=ie;const $e=useRef(oe);$e.current=oe;const _e=useRef(ne);_e.current=ne;const Je=useRef(B);Je.current=B;const Ue=useRef(A);Ue.current=A;const Xe=useCallback((e,t="onChange")=>L&&t===ye?L(e):e,[ye,L]),Ye=useCallback((e,t="onChange")=>{const r=Xe(e,t);Se||ve(r),qe.current?.(r)},[Xe,Se]);useImperativeHandle(t,()=>({focus:()=>Pe.current?.focus(),blur:()=>Pe.current?.blur(),clear:()=>Ye(""),get nativeElement(){return Pe.current}}));const Ze="left"!==pe?pe:me,et=h&&!R&&""!==(Ie??"")&&("always"===fe||"focus"===fe&&(ke||Me)),tt=useCallback(e=>{let t=e??"";if("number"===z||"digit"===z){const e="number"===z;t=formatNumberInput(t,e,e)}isFiniteNumber(se)&&se>=0&&t.length>se&&(Ke.current?.(t),t=t.slice(0,se)),Ye(t,"onChange")},[se,z,Ye]),rt=useCallback(e=>{Fe(!0),Qe.current?.(e),R&&Pe.current?.blur()},[R]),lt=useCallback(e=>{if("web"!==Platform.OS&&Ee.current)return Ee.current=!1,Fe(!1),void $e.current?.(e);Ye(Ie??"","onBlur"),Fe(!1),$e.current?.(e)},[Ye,Ie]),it=useCallback(e=>{_e.current?.(e),Je.current?.()},[]),ot=useCallback(e=>{if(!we)return;const t=e.nativeEvent.contentSize?.height??0;if(!t)return;let r=t;P?(r=Math.max(Ve??t,t),Ge&&(r=Math.min(r,Ge))):Ve&&(r=Math.max(Ve,t)),je(r)},[P,we,Ge,Ve]),nt=useCallback(()=>{"web"!==Platform.OS&&(Ee.current=!0),Ye(""),Pe.current?.clear?.(),Pe.current?.focus?.(),Ue.current?.()},[Ye]),at=useCallback(()=>{ze(!0),"web"!==Platform.OS&&nt()},[nt]),st=useCallback(()=>{ze(!1),Ee.current=!1},[]),ct=isRenderable(re)?React.createElement(View,{style:[ue.layout.children,{minHeight:ue.sizes.controlMinHeight}]},re):React.createElement(FieldInput,{inputRef:Pe,tokens:ue,isTextarea:we,disabled:y,error:m,finalTextAlign:Ze,lineHeight:He,textareaHeight:We,minHeight:Ve,inputStyle:U,value:Ie??"",onChangeText:tt,onFocus:rt,onBlur:lt,onPressIn:it,rows:be,keyboardType:ce.keyboardType??mapKeyboardType(z),placeholderTextColor:Te,onContentSizeChange:ot,describedBy:De,secureTextEntry:"password"===z,editable:!y&&!R,restInputProps:ce}),ut=[{width:"100%",justifyContent:alignMap[pe]},J],dt=e=>isText(e)?React.createElement(Text,{style:[ue.layout.affixText,{color:ue.colors.input,fontSize:ue.typography.inputSize}],numberOfLines:1},e):e,gt=isRenderable(g)?(()=>{const e=React.createElement(QuestionO,{size:ue.sizes.icon,fill:ue.colors.tooltip,color:ue.colors.tooltip}),{icon:t,dialogProps:r}=resolveTooltipDialog(g,e);return React.createElement(Pressable,{style:[ue.layout.tooltip,{marginLeft:ue.spacing.rightIconGap}],onPress:()=>Dialog.show(r),accessibilityRole:"button"},t)})():null,mt=isRenderable(l)?(()=>{const e=isText(l)?React.createElement(Text,{style:[{color:y?ue.colors.disabled:ue.colors.label,fontSize:ue.typography.labelSize,textAlign:ge},X],numberOfLines:1},l,c?":":""):l;return React.createElement(View,{style:ue.layout.labelRow},e,gt)})():null,pt=D&&null!=se?(()=>{const e=(Ie??"").length,t=isFunction(D)?D({currentCount:e,maxLength:se}):`${e}/${se}`;return isRenderable(t)?isText(t)?React.createElement(Text,{style:[ue.layout.wordLimit,{color:ue.colors.wordLimit,fontSize:ue.typography.wordLimitSize??12,textAlign:"right",alignSelf:"flex-end",marginTop:ue.spacing.wordLimitMarginTop}]},t):t:null})():null,ft=isRenderable(p)?isText(p)?React.createElement(Text,{nativeID:Oe,style:[ue.layout.message,{color:ue.colors.error,fontSize:ue.typography.messageSize,textAlign:f,marginTop:ue.spacing.messageMarginTop},Z],accessibilityLiveRegion:"polite"},p):React.createElement(View,{nativeID:Oe,style:[ue.layout.message,{alignSelf:alignMap[f],marginTop:ue.spacing.messageMarginTop}],accessibilityLiveRegion:"polite"},p):null,bt=isRenderable(xe)?isText(xe)?React.createElement(Text,{nativeID:Le,style:[ue.layout.message,{color:ue.colors.intro,fontSize:ue.typography.introSize,textAlign:pe,marginTop:ue.spacing.introMarginTop},Y]},xe):React.createElement(View,{nativeID:Le,style:{marginTop:ue.spacing.introMarginTop}},xe):null,yt=C?React.createElement(View,{style:[ue.layout.prefix,{paddingRight:ue.spacing.prefixGap}]},dt(C)):null,Rt=he?React.createElement(View,{style:[ue.layout.suffix,{paddingLeft:ue.spacing.suffixGap}]},dt(he)):null,ht=w?React.createElement(FieldSlot,{onPress:V,style:[ue.layout.leftIcon,{marginRight:ue.spacing.leftIconGap,minWidth:ue.sizes.icon}]},w):null,xt=S?React.createElement(FieldSlot,{onPress:G,style:[ue.layout.rightIcon,{paddingHorizontal:ue.spacing.rightIconGap}]},S):null,Tt=et?React.createElement(FieldClearButton,{show:et,tokens:ue,clearIcon:T,onPressIn:at,onPressOut:"web"===Platform.OS?st:void 0,onPress:"web"===Platform.OS?nt:void 0}):null,wt="outer"===b,St=React.createElement(Cell,{title:mt,icon:void 0,required:s,border:W,center:j,size:$,clickable:q,isLink:K,arrowDirection:Q,extra:k,titleStyle:Re,style:[ee,wt&&(m||isRenderable(p))?{borderColor:ue.colors.error}:void 0],contentStyle:ut,accessibilityState:m?{invalid:!0}:void 0,accessibilityLabel:isText(l)?String(l):void 0,onPress:N,android_ripple:te},React.createElement(FieldControlRow,{tokens:ue,prefixNode:yt,leftIconNode:ht,controlNode:ct,clearNode:Tt,rightIconNode:xt,suffixNode:Rt}),pt,wt?null:ft,bt);return wt&&ft?React.createElement(React.Fragment,null,St,ft):St},FieldForwardRef=React.forwardRef(FieldImpl);FieldForwardRef.displayName="Field";export const Field=React.memo(FieldForwardRef);export default Field;
@@ -1 +1 @@
1
- function _extends(){return _extends=Object.assign?Object.assign.bind():function(e){for(var t=1;t<arguments.length;t++){var r=arguments[t];for(var o in r)({}).hasOwnProperty.call(r,o)&&(e[o]=r[o])}return e},_extends.apply(null,arguments)}import React,{useCallback,useEffect,useMemo,useRef,useState}from"react";import{ActivityIndicator,Image as RNImage,Platform,Pressable,StyleSheet,View}from"react-native";import{SvgUri}from"react-native-svg";import{isNumber,isString,renderTextOrNode}from"../../utils";import{isRenderable,isText}from"../../utils/validate";import{useLocale}from"../config-provider/useLocale";import{useImageTokens}from"./tokens";const resolveFitMode=e=>{switch(e){case"fill":return"stretch";case"scale-down":return"contain";case"none":return"center";default:return e}},LAYOUT_STYLE_KEYS=new Set(["width","height","minWidth","minHeight","maxWidth","maxHeight","flex","flexGrow","flexShrink","flexBasis","alignSelf","aspectRatio","position","top","right","bottom","left","start","end","opacity","borderRadius"]),isLayoutStyleKey=e=>LAYOUT_STYLE_KEYS.has(e)||"backgroundColor"===e||e.startsWith("margin")||e.startsWith("padding")||e.startsWith("border")||e.endsWith("Radius"),splitImageStyle=e=>{if(!e)return{container:void 0,image:void 0};const t=StyleSheet.flatten(e)??{},r={},o={};for(const e of Object.keys(t)){const i=t[e];void 0!==i&&(isLayoutStyleKey(e)?r[e]=i:o[e]=i)}return{container:Object.keys(r).length?r:void 0,image:Object.keys(o).length?o:void 0}},PRESERVE_ASPECT_RATIO_MAP={contain:"xMidYMid meet","scale-down":"xMidYMid meet",stretch:"none",fill:"none",none:"xMidYMid meet",center:"xMidYMid meet"},resolvePreserveAspectRatio=e=>PRESERVE_ASPECT_RATIO_MAP[e]||"xMidYMid slice",WEB_IMAGE_STYLE="web"===Platform.OS?{height:"revert-layer",width:"revert-layer"}:void 0,resolveSourceUri=e=>{if(e&&"number"!=typeof e){if(!Array.isArray(e))return"object"==typeof e&&"uri"in e&&"string"==typeof e.uri?e.uri:void 0;for(const t of e)if(t&&"object"==typeof t&&"uri"in t&&"string"==typeof t.uri)return t.uri}},ImageImpl=(e,t)=>{const{src:r,source:o,width:i,height:a,radius:s,round:n,fit:l,showLoading:c,showError:d,loadingText:u,loadingIcon:m,errorIcon:f,iconSize:g,loadingSize:v,errorText:y,fallback:b,onPress:h,alt:R,accessibilityLabel:E,"aria-label":S,containerStyle:p,style:w,children:I,tokensOverride:x,onLoad:M,onError:L,...T}=e,_=useLocale(),k=useImageTokens(x),A=l??k.defaults.fit,P=c??k.defaults.showLoading,O=d??k.defaults.showError,Y=void 0!==u?u:_?.vanImage?.loading??k.defaults.loadingText,C=void 0!==y?y:_?.vanImage?.error??k.defaults.errorText,{container:W,image:V}=useMemo(()=>splitImageStyle(w),[w]),j=useMemo(()=>o||(r?{uri:r}:void 0),[o,r]),z=useMemo(()=>{if(o){if("number"==typeof o)return`res:${o}`;const e=resolveSourceUri(o);return e?`uri:${e}`:"source:unknown"}return r?`src:${r}`:"none"},[o,r]),F=R??E??S,[N,U]=useState(()=>j?"loading":"idle");useEffect(()=>{U(j?"loading":"idle")},[z]);const B=useRef(M);B.current=M;const K=useRef(L);K.current=L;const G=useCallback(e=>{U("loaded"),B.current?.(e)},[]),$=useCallback(e=>{U("error"),K.current?.(e)},[]),D=useCallback(()=>{G({nativeEvent:{}})},[G]),H=useCallback(e=>{$({nativeEvent:{error:e}})},[$]),q=useMemo(()=>resolveSourceUri(j),[j]),J=isString(q)?q.toLowerCase():void 0,Q=!!J&&(J.endsWith(".svg")||J.includes(".svg?")||J.includes("/svg?")),X=isNumber(v)?v:k.defaults.loadingIndicatorBaseSize,Z=g??k.defaults.iconSize,ee=h?"button":void 0,te=h?{onPress:h}:null,re=(e,t,r)=>{if(!isRenderable(e))return null;const o=renderTextOrNode(e,[k.layout.label,{color:t},r?{marginTop:r}:void 0].filter(Boolean));return r&&!isText(e)?React.createElement(View,{style:{marginTop:r}},o):o},oe=useMemo(()=>[k.layout.container,{width:i,height:a,backgroundColor:k.colors.background},n?{borderRadius:k.defaults.roundRadius}:isNumber(s)?{borderRadius:s}:void 0,p,W],[W,p,a,s,n,k.colors.background,k.defaults.roundRadius,k.layout.container,i]),ie=h?void 0:F,ae=j?Q&&"web"!==Platform.OS&&q?React.createElement(SvgUri,_extends({width:"100%",height:"100%",uri:q,preserveAspectRatio:resolvePreserveAspectRatio(A),accessible:!h,accessibilityLabel:ie},T,{style:[k.layout.absoluteFill,V],onLoad:D,onError:H})):React.createElement(RNImage,_extends({ref:t,accessible:!h,accessibilityLabel:ie},T,{source:j,style:[k.layout.absoluteFill,V,WEB_IMAGE_STYLE],resizeMode:resolveFitMode(A),onLoad:G,onError:$})):null,se=React.createElement(React.Fragment,null,"loading"===N&&P&&React.createElement(View,{style:k.layout.overlay,pointerEvents:"none",testID:"rv-image-loading"},m||React.createElement(ActivityIndicator,{color:k.colors.text,size:isString(v)?v:"small",style:{transform:[{scale:X/k.defaults.loadingIndicatorBaseSize}]}}),re(Y,k.colors.text,k.defaults.loadingLabelMarginTop)),ae,"error"===N&&O&&React.createElement(View,{style:k.layout.overlay,pointerEvents:"none",testID:"rv-image-error"},f&&React.createElement(View,{style:[k.layout.iconContainer,{width:Z,height:Z}]},f),isRenderable(b)?re(b,k.colors.error):re(C,k.colors.error)),I);return te?React.createElement(Pressable,_extends({},te,{accessibilityRole:ee,accessibilityLabel:F,style:oe}),se):React.createElement(View,{accessibilityLabel:F,style:oe},se)},ImageForwardRef=React.forwardRef(ImageImpl),Image=React.memo(ImageForwardRef);export default Image;
1
+ function _extends(){return _extends=Object.assign?Object.assign.bind():function(e){for(var t=1;t<arguments.length;t++){var r=arguments[t];for(var o in r)({}).hasOwnProperty.call(r,o)&&(e[o]=r[o])}return e},_extends.apply(null,arguments)}import React,{useCallback,useEffect,useMemo,useRef,useState}from"react";import{ActivityIndicator,Image as RNImage,Platform,Pressable,StyleSheet,View}from"react-native";import{getSvgRuntime}from"../../internal/svg";import{isNumber,isString,renderTextOrNode}from"../../utils";import{isRenderable,isText}from"../../utils/validate";import{useLocale}from"../config-provider/useLocale";import{useImageTokens}from"./tokens";const resolveFitMode=e=>{switch(e){case"fill":return"stretch";case"scale-down":return"contain";case"none":return"center";default:return e}},LAYOUT_STYLE_KEYS=new Set(["width","height","minWidth","minHeight","maxWidth","maxHeight","flex","flexGrow","flexShrink","flexBasis","alignSelf","aspectRatio","position","top","right","bottom","left","start","end","opacity","borderRadius"]),isLayoutStyleKey=e=>LAYOUT_STYLE_KEYS.has(e)||"backgroundColor"===e||e.startsWith("margin")||e.startsWith("padding")||e.startsWith("border")||e.endsWith("Radius"),splitImageStyle=e=>{if(!e)return{container:void 0,image:void 0};const t=StyleSheet.flatten(e)??{},r={},o={};for(const e of Object.keys(t)){const i=t[e];void 0!==i&&(isLayoutStyleKey(e)?r[e]=i:o[e]=i)}return{container:Object.keys(r).length?r:void 0,image:Object.keys(o).length?o:void 0}},PRESERVE_ASPECT_RATIO_MAP={contain:"xMidYMid meet","scale-down":"xMidYMid meet",stretch:"none",fill:"none",none:"xMidYMid meet",center:"xMidYMid meet"},resolvePreserveAspectRatio=e=>PRESERVE_ASPECT_RATIO_MAP[e]||"xMidYMid slice",WEB_IMAGE_STYLE="web"===Platform.OS?{height:"revert-layer",width:"revert-layer"}:void 0,resolveSourceUri=e=>{if(e&&"number"!=typeof e){if(!Array.isArray(e))return"object"==typeof e&&"uri"in e&&"string"==typeof e.uri?e.uri:void 0;for(const t of e)if(t&&"object"==typeof t&&"uri"in t&&"string"==typeof t.uri)return t.uri}},ImageImpl=(e,t)=>{const{src:r,source:o,width:i,height:a,radius:n,round:s,fit:l,showLoading:c,showError:d,loadingText:u,loadingIcon:m,errorIcon:f,iconSize:g,loadingSize:b,errorText:v,fallback:y,onPress:h,alt:R,accessibilityLabel:S,"aria-label":E,containerStyle:p,style:w,children:I,tokensOverride:x,onLoad:M,onError:L,...T}=e,_=useLocale(),k=useImageTokens(x),P=l??k.defaults.fit,A=c??k.defaults.showLoading,O=d??k.defaults.showError,Y=void 0!==u?u:_?.vanImage?.loading??k.defaults.loadingText,C=void 0!==v?v:_?.vanImage?.error??k.defaults.errorText,{container:W,image:V}=useMemo(()=>splitImageStyle(w),[w]),j=useMemo(()=>o||(r?{uri:r}:void 0),[o,r]),z=useMemo(()=>{if(o){if("number"==typeof o)return`res:${o}`;const e=resolveSourceUri(o);return e?`uri:${e}`:"source:unknown"}return r?`src:${r}`:"none"},[o,r]),F=R??S??E,[N,B]=useState(()=>j?"loading":"idle");useEffect(()=>{B(j?"loading":"idle")},[z]);const U=useRef(M);U.current=M;const K=useRef(L);K.current=L;const G=useCallback(e=>{B("loaded"),U.current?.(e)},[]),$=useCallback(e=>{B("error"),K.current?.(e)},[]),D=useCallback(()=>{G({nativeEvent:{}})},[G]),H=useCallback(e=>{$({nativeEvent:{error:e}})},[$]),q=useMemo(()=>resolveSourceUri(j),[j]),J=isString(q)?q.toLowerCase():void 0,Q=!!J&&(J.endsWith(".svg")||J.includes(".svg?")||J.includes("/svg?")),X=isNumber(b)?b:k.defaults.loadingIndicatorBaseSize,Z=g??k.defaults.iconSize,ee=h?"button":void 0,te=h?{onPress:h}:null,re=(e,t,r)=>{if(!isRenderable(e))return null;const o=renderTextOrNode(e,[k.layout.label,{color:t},r?{marginTop:r}:void 0].filter(Boolean));return r&&!isText(e)?React.createElement(View,{style:{marginTop:r}},o):o},oe=useMemo(()=>[k.layout.container,{width:i,height:a,backgroundColor:k.colors.background},s?{borderRadius:k.defaults.roundRadius}:isNumber(n)?{borderRadius:n}:void 0,p,W],[W,p,a,n,s,k.colors.background,k.defaults.roundRadius,k.layout.container,i]),ie=h?void 0:F,ae=Q&&"web"!==Platform.OS?getSvgRuntime()?.SvgUri:null;useEffect(()=>{j&&Q&&"web"!==Platform.OS&&q&&!ae&&B("error")},[ae,j,Q,q]);const ne=j?Q&&"web"!==Platform.OS&&q?ae?React.createElement(ae,_extends({width:"100%",height:"100%",uri:q,preserveAspectRatio:resolvePreserveAspectRatio(P),accessible:!h,accessibilityLabel:ie},T,{style:[k.layout.absoluteFill,V],onLoad:D,onError:H})):null:React.createElement(RNImage,_extends({ref:t,accessible:!h,accessibilityLabel:ie},T,{source:j,style:[k.layout.absoluteFill,V,WEB_IMAGE_STYLE],resizeMode:resolveFitMode(P),onLoad:G,onError:$})):null,se=React.createElement(React.Fragment,null,"loading"===N&&A&&React.createElement(View,{style:k.layout.overlay,pointerEvents:"none",testID:"rv-image-loading"},m||React.createElement(ActivityIndicator,{color:k.colors.text,size:isString(b)?b:"small",style:{transform:[{scale:X/k.defaults.loadingIndicatorBaseSize}]}}),re(Y,k.colors.text,k.defaults.loadingLabelMarginTop)),ne,"error"===N&&O&&React.createElement(View,{style:k.layout.overlay,pointerEvents:"none",testID:"rv-image-error"},f&&React.createElement(View,{style:[k.layout.iconContainer,{width:Z,height:Z}]},f),isRenderable(y)?re(y,k.colors.error):re(C,k.colors.error)),I);return te?React.createElement(Pressable,_extends({},te,{accessibilityRole:ee,accessibilityLabel:F,style:oe}),se):React.createElement(View,{accessibilityLabel:F,style:oe},se)},ImageForwardRef=React.forwardRef(ImageImpl),Image=React.memo(ImageForwardRef);export default Image;
@@ -1 +1 @@
1
- function _extends(){return _extends=Object.assign?Object.assign.bind():function(e){for(var t=1;t<arguments.length;t++){var r=arguments[t];for(var n in r)({}).hasOwnProperty.call(r,n)&&(e[n]=r[n])}return e},_extends.apply(null,arguments)}import React,{useCallback,useImperativeHandle,useMemo,useRef}from"react";import{isBoolean,isFiniteNumber}from"../../utils/validate";import Field from"../field";import{useFieldTokens}from"../field/tokens";import{useInputTokens}from"./tokens";const mapKeyboardType=e=>{switch(e){case"number":return"decimal-pad";case"digit":return"number-pad";case"tel":return"phone-pad";default:return}},InputImpl=(e,t)=>{const{type:r,keyboardType:n,align:a,inputAlign:o,clearTrigger:i,onChange:u,onChangeText:s,showWordLimit:l,style:d,inputStyle:p,fieldTokensOverride:c,tokensOverride:m,...f}=e,g=useInputTokens(m),T=useRef(null),x=useRef(u),b=useRef(s);x.current=u,b.current=s;const R=useCallback(e=>{x.current?.(e),b.current?.(e)},[]);useImperativeHandle(t,()=>({focus:()=>T.current?.focus?.(),blur:()=>T.current?.blur?.(),clear:()=>T.current?.clear?.(),get nativeElement(){return T.current?.nativeElement??null}}),[]);const I=a??o??g.defaults.inputAlign,y=i??g.defaults.clearTrigger,k=n??mapKeyboardType(r),h=[{paddingHorizontal:g.spacing.paddingHorizontal,paddingVertical:g.spacing.paddingVertical,backgroundColor:g.colors.background},d];return React.createElement(Field,_extends({ref:T},f,{type:r,keyboardType:k,tokensOverride:c,border:g.defaults.border,inputAlign:I,clearTrigger:y,style:h,inputStyle:p,showWordLimit:l,onChangeText:R}))},InputForwardRef=React.forwardRef(InputImpl);InputForwardRef.displayName="Input";const InputComponent=React.memo(InputForwardRef),TextAreaImpl=(e,t)=>{const{autoSize:r,...n}=e,a=useFieldTokens(n.fieldTokensOverride).defaults.textareaLineHeight,o=useCallback(e=>!isFiniteNumber(e)||e<=0?void 0:Math.max(1,Math.round(e/a)),[a]),i=useMemo(()=>!r||isBoolean(r)?r:(()=>{const e=o(r.minHeight),t=o(r.maxHeight);return e||t?{minRows:e,maxRows:t}:void 0})(),[r,o]);return React.createElement(InputComponent,_extends({ref:t},n,{type:"textarea",autoSize:i}))},TextAreaForwardRef=React.forwardRef(TextAreaImpl);TextAreaForwardRef.displayName="Input.TextArea";const TextArea=React.memo(TextAreaForwardRef),Input=Object.assign(InputComponent,{TextArea:TextArea});export default Input;export{TextArea};
1
+ function _extends(){return _extends=Object.assign?Object.assign.bind():function(e){for(var t=1;t<arguments.length;t++){var r=arguments[t];for(var n in r)({}).hasOwnProperty.call(r,n)&&(e[n]=r[n])}return e},_extends.apply(null,arguments)}import React,{useCallback,useImperativeHandle,useMemo,useRef}from"react";import{isBoolean,isFiniteNumber}from"../../utils/validate";import Field from"../field";import{useFieldTokens}from"../field/tokens";import{useInputTokens}from"./tokens";const mapKeyboardType=e=>{switch(e){case"number":return"decimal-pad";case"digit":return"number-pad";case"tel":return"phone-pad";default:return}},InputImpl=(e,t)=>{const{type:r,keyboardType:n,align:a,inputAlign:o,clearTrigger:i,onChange:u,onChangeText:s,showWordLimit:l,style:d,inputStyle:p,fieldTokensOverride:c,tokensOverride:m,...f}=e,g=useInputTokens(m),T=useRef(null),x=useRef(u),b=useRef(s);x.current=u,b.current=s;const R=useCallback(e=>{x.current?.(e),b.current?.(e)},[]);useImperativeHandle(t,()=>({focus:()=>T.current?.focus?.(),blur:()=>T.current?.blur?.(),clear:()=>T.current?.clear?.(),get nativeElement(){return T.current?.nativeElement??null}}),[]);const I=a??o??g.defaults.inputAlign,y=i??g.defaults.clearTrigger,k=n??mapKeyboardType(r),h=useMemo(()=>[{paddingHorizontal:g.spacing.paddingHorizontal,paddingVertical:g.spacing.paddingVertical,backgroundColor:g.colors.background},d],[d,g.colors.background,g.spacing.paddingHorizontal,g.spacing.paddingVertical]);return React.createElement(Field,_extends({ref:T},f,{type:r,keyboardType:k,tokensOverride:c,border:g.defaults.border,inputAlign:I,clearTrigger:y,style:h,inputStyle:p,showWordLimit:l,onChangeText:R}))},InputForwardRef=React.forwardRef(InputImpl);InputForwardRef.displayName="Input";const InputComponent=React.memo(InputForwardRef),TextAreaImpl=(e,t)=>{const{autoSize:r,...n}=e,a=useFieldTokens(n.fieldTokensOverride).defaults.textareaLineHeight,o=useCallback(e=>!isFiniteNumber(e)||e<=0?void 0:Math.max(1,Math.round(e/a)),[a]),i=useMemo(()=>!r||isBoolean(r)?r:(()=>{const e=o(r.minHeight),t=o(r.maxHeight);return e||t?{minRows:e,maxRows:t}:void 0})(),[r,o]);return React.createElement(InputComponent,_extends({ref:t},n,{type:"textarea",autoSize:i}))},TextAreaForwardRef=React.forwardRef(TextAreaImpl);TextAreaForwardRef.displayName="Input.TextArea";const TextArea=React.memo(TextAreaForwardRef),Input=Object.assign(InputComponent,{TextArea:TextArea});export default Input;export{TextArea};
@@ -1 +1 @@
1
- function _extends(){return _extends=Object.assign?Object.assign.bind():function(e){for(var t=1;t<arguments.length;t++){var r=arguments[t];for(var a in r)({}).hasOwnProperty.call(r,a)&&(e[a]=r[a])}return e},_extends.apply(null,arguments)}import React,{useCallback,useState}from"react";import{Platform,Pressable,Text,View}from"react-native";import{ArrowLeft}from"react-native-system-icon";import{useAriaPress}from"../../hooks";import{useLocale}from"../config-provider/useLocale";import{useDirection}from"../config-provider/useDirection";import{createHairlineView}from"../../utils/hairline";import{isRenderable,isText,renderTextOrNode}from"../../utils";import{SafeAreaView}from"../safe-area-view";import{useNavBarTokens}from"./tokens";const NavBarBaseImpl=e=>{const{tokensOverride:t,title:r,description:a,children:o,leftText:i,rightText:l,leftIcon:s,rightIcon:n,leftArrow:c,fixed:d,placeholder:u,zIndex:f,border:y,safeAreaInsetTop:m,background:p,tintColor:b,titleStyle:g,descriptionStyle:h,sideStyle:v,onPressLeft:R,onClickLeft:x,onPressRight:w,onClickRight:B,style:P,...k}=e,E=useLocale(),T=useDirection(),L=useNavBarTokens(t),N=c??L.defaults.leftArrow,S=d??L.defaults.fixed,V=u??L.defaults.placeholder,A=f??L.defaults.zIndex,I=y??L.defaults.border,O=m??S,z=p??L.colors.background,F=R??x,C=w??B,[D,_]=useState(L.sizing.height),$=S&&V,W=useCallback(e=>{if(!$)return;const t=e.nativeEvent.layout.height;_(e=>Math.abs(e-t)<.5?e:t)},[$]),j=b??L.colors.text,H=b??L.colors.icon,M=useAriaPress({disabled:!F,onPress:F,extraProps:{accessibilityRole:"button",accessibilityLabel:isText(i)?`${i}`:E?.vanNavBar?.back??"Back"}}),X=useAriaPress({disabled:!C,onPress:C,extraProps:{accessibilityRole:"button",accessibilityLabel:isText(l)?`${l}`:E?.vanNavBar?.action??"Actions"}}),q=e=>{const t="left"===e,r=t?i:l,a=t?s:n,o=t?M:X,c=t?F:C,d=t?!0===N?React.createElement(ArrowLeft,{size:18,fill:H,color:H,style:"rtl"===T?{transform:[{scaleX:-1}]}:void 0}):isRenderable(N)&&N:null;if(!(!!c||isRenderable(d)||isRenderable(r)||isRenderable(a)))return React.createElement(View,{style:L.layout.sidePlaceholder});const u=React.createElement(React.Fragment,null,d,isRenderable(a)?a:null,isRenderable(r)?isText(r)?React.createElement(Text,{numberOfLines:1,style:[L.layout.sideText,{color:H,fontFamily:L.typography.fontFamily}]},r):r:null),f=[L.layout.side,!t&&L.layout.rightAlign,v];return c?React.createElement(Pressable,_extends({hitSlop:{top:8,right:8,bottom:8,left:8},testID:`rv-navbar-${e}`,style:f},o.interactionProps),u):React.createElement(View,{testID:`rv-navbar-${e}`,style:f},u)},G=isRenderable(o)?o:React.createElement(View,{style:L.layout.titleWrapper},isRenderable(r)&&renderTextOrNode(r,[L.layout.title,{color:j,fontFamily:L.typography.fontFamily,fontSize:L.typography.titleSize,fontWeight:L.typography.titleWeight},g],{numberOfLines:1}),isRenderable(a)&&renderTextOrNode(a,[L.layout.description,{color:b??L.colors.description,fontFamily:L.typography.fontFamily,fontSize:L.typography.descriptionSize},h],{numberOfLines:1})),J=React.createElement(View,{style:[L.layout.bar,{backgroundColor:z}],onLayout:O?void 0:W},q("left"),React.createElement(View,{style:L.layout.center},G),q("right"),I&&React.createElement(View,{style:createHairlineView({position:"bottom",color:L.colors.border,left:0,right:0})})),K=O?React.createElement(SafeAreaView,{onLayout:W,style:{backgroundColor:z}},J):J;return React.createElement(React.Fragment,null,$&&React.createElement(View,{testID:"rv-navbar-placeholder",style:{height:D}}),React.createElement(View,_extends({},k,{accessibilityRole:"web"===Platform.OS?"navigation":void 0,style:[L.layout.container,S&&[L.layout.fixed,{zIndex:A}],P]}),K))},NavBarBase=React.memo(NavBarBaseImpl);NavBarBase.displayName="NavBar";export default NavBarBase;
1
+ function _extends(){return _extends=Object.assign?Object.assign.bind():function(e){for(var t=1;t<arguments.length;t++){var r=arguments[t];for(var a in r)({}).hasOwnProperty.call(r,a)&&(e[a]=r[a])}return e},_extends.apply(null,arguments)}import React,{useCallback,useState}from"react";import{Platform,Pressable,Text,View}from"react-native";import{ArrowLeft}from"../../internal/icons";import{useAriaPress}from"../../hooks";import{useLocale}from"../config-provider/useLocale";import{useDirection}from"../config-provider/useDirection";import{createHairlineView}from"../../utils/hairline";import{isRenderable,isText,renderTextOrNode}from"../../utils";import{SafeAreaView}from"../safe-area-view";import{useNavBarTokens}from"./tokens";const NavBarBaseImpl=e=>{const{tokensOverride:t,title:r,description:a,children:o,leftText:i,rightText:l,leftIcon:n,rightIcon:s,leftArrow:c,fixed:d,placeholder:u,zIndex:f,border:y,safeAreaInsetTop:m,background:p,tintColor:b,titleStyle:g,descriptionStyle:h,sideStyle:R,onPressLeft:v,onClickLeft:x,onPressRight:w,onClickRight:B,style:P,...k}=e,E=useLocale(),T=useDirection(),L=useNavBarTokens(t),N=c??L.defaults.leftArrow,S=d??L.defaults.fixed,V=u??L.defaults.placeholder,A=f??L.defaults.zIndex,I=y??L.defaults.border,O=m??S,z=p??L.colors.background,F=v??x,C=w??B,[D,_]=useState(L.sizing.height),$=S&&V,W=useCallback(e=>{if(!$)return;const t=e.nativeEvent.layout.height;_(e=>Math.abs(e-t)<.5?e:t)},[$]),j=b??L.colors.text,H=b??L.colors.icon,M=useAriaPress({disabled:!F,onPress:F,extraProps:{accessibilityRole:"button",accessibilityLabel:isText(i)?`${i}`:E?.vanNavBar?.back??"Back"}}),X=useAriaPress({disabled:!C,onPress:C,extraProps:{accessibilityRole:"button",accessibilityLabel:isText(l)?`${l}`:E?.vanNavBar?.action??"Actions"}}),q=e=>{const t="left"===e,r=t?i:l,a=t?n:s,o=t?M:X,c=t?F:C,d=t?!0===N?React.createElement(ArrowLeft,{size:18,fill:H,color:H,style:"rtl"===T?{transform:[{scaleX:-1}]}:void 0}):isRenderable(N)&&N:null;if(!(!!c||isRenderable(d)||isRenderable(r)||isRenderable(a)))return React.createElement(View,{style:L.layout.sidePlaceholder});const u=React.createElement(React.Fragment,null,d,isRenderable(a)?a:null,isRenderable(r)?isText(r)?React.createElement(Text,{numberOfLines:1,style:[L.layout.sideText,{color:H,fontFamily:L.typography.fontFamily}]},r):r:null),f=[L.layout.side,!t&&L.layout.rightAlign,R];return c?React.createElement(Pressable,_extends({hitSlop:{top:8,right:8,bottom:8,left:8},testID:`rv-navbar-${e}`,style:f},o.interactionProps),u):React.createElement(View,{testID:`rv-navbar-${e}`,style:f},u)},G=isRenderable(o)?o:React.createElement(View,{style:L.layout.titleWrapper},isRenderable(r)&&renderTextOrNode(r,[L.layout.title,{color:j,fontFamily:L.typography.fontFamily,fontSize:L.typography.titleSize,fontWeight:L.typography.titleWeight},g],{numberOfLines:1}),isRenderable(a)&&renderTextOrNode(a,[L.layout.description,{color:b??L.colors.description,fontFamily:L.typography.fontFamily,fontSize:L.typography.descriptionSize},h],{numberOfLines:1})),J=React.createElement(View,{style:[L.layout.bar,{backgroundColor:z}],onLayout:O?void 0:W},q("left"),React.createElement(View,{style:L.layout.center},G),q("right"),I&&React.createElement(View,{style:createHairlineView({position:"bottom",color:L.colors.border,left:0,right:0})})),K=O?React.createElement(SafeAreaView,{onLayout:W,style:{backgroundColor:z}},J):J;return React.createElement(React.Fragment,null,$&&React.createElement(View,{testID:"rv-navbar-placeholder",style:{height:D}}),React.createElement(View,_extends({},k,{accessibilityRole:"web"===Platform.OS?"navigation":void 0,style:[L.layout.container,S&&[L.layout.fixed,{zIndex:A}],P]}),K))},NavBarBase=React.memo(NavBarBaseImpl);NavBarBase.displayName="NavBar";export default NavBarBase;
@@ -1 +1 @@
1
- function _extends(){return _extends=Object.assign?Object.assign.bind():function(e){for(var t=1;t<arguments.length;t++){var a=arguments[t];for(var i in a)({}).hasOwnProperty.call(a,i)&&(e[i]=a[i])}return e},_extends.apply(null,arguments)}import React,{useCallback,useEffect,useMemo,useRef,useState}from"react";import{Animated,Easing,Pressable,StyleSheet,Text,View,Platform}from"react-native";import{Arrow,Close}from"react-native-system-icon";import{useAriaPress}from"../../hooks";import{useLocale}from"../config-provider/useLocale";import{useDirection}from"../config-provider/useDirection";import{parseNumber}from"../../utils/number";import{isRenderable,isText}from"../../utils/validate";import{renderTextOrNode}from"../../utils";import{nativeDriverEnabled}from"../../platform";import{useReducedMotion}from"../../hooks/animation";import{useNoticeBarTokens}from"./tokens";const AnimatedText=Animated.createAnimatedComponent(Text),IS_WEB="web"===Platform.OS;if(IS_WEB){const e="undefined"!=typeof globalThis?globalThis:window;void 0===e.global&&(e.global=e)}const NoticeBarImpl=e=>{const{text:t,children:a,color:i,background:n,leftIcon:r,rightIcon:o,mode:s,tokensOverride:l,delay:c=1,speed:d=60,scrollable:u,wrapable:m=!1,direction:p="horizontal",items:f,verticalInterval:y=3e3,verticalDuration:h=300,onPress:g,onClose:b,onReplay:v,textProps:x,style:w,...E}=e,R=useLocale(),A=useDirection(),T=useReducedMotion(),k=useNoticeBarTokens(l),P=i??k.colors.text,V=n??k.colors.background,N=t??a,z=isText(N),C="vertical"===p,[I,M]=useState(!0),{onLayout:L,...D}=x??{},[O,B]=useState(0),[F,W]=useState(0),_=useRef(new Animated.Value(0)).current,H=Math.max(0,parseNumber(c,1)),j=parseNumber(d,60),q=Math.max(0,parseNumber(y,3e3)),X=Math.max(0,parseNumber(h,300)),Y=useMemo(()=>C?f&&f.length?f:(()=>{const e=React.Children.toArray(a);return e.length?e:void 0!==t?[t]:[]})():[],[a,C,f,t]),G=!T&&C&&Y.length>1,J=useMemo(()=>G?[...Y,Y[0]]:Y,[G,Y]),K=useRef(new Animated.Value(0)).current,[Q,U]=useState(0),Z=useCallback(e=>{B(t=>Math.abs(t-e)<.5?t:e)},[]),$=useCallback(e=>{W(t=>Math.abs(t-e)<.5?t:e)},[]),ee=useRef(b);ee.current=b;const te=useRef(v);te.current=v;const ae=useCallback(()=>{M(!1),ee.current?.()},[]),ie=useAriaPress({disabled:"closeable"!==s||!I,onPress:ae,extraProps:{accessibilityRole:"button",accessibilityLabel:R?.vanNoticeBar?.close??"Close"}}),ne=useAriaPress({disabled:!g||!I,onPress:g,extraProps:g?{accessibilityRole:"button"}:void 0}),re="closeable"===s?React.createElement(Pressable,_extends({hitSlop:8},ie.interactionProps),React.createElement(Close,{size:16,fill:P,color:P})):"link"===s?React.createElement(Arrow,{size:16,fill:P,color:P}):o||null,oe=isRenderable(r),se=Boolean(re),le=Math.max(0,F-(oe?k.spacing.sidePadding:0)-(se?k.spacing.sidePadding:0)),ce=!T&&!C&&!m&&(u??O>le);useEffect(()=>{if(!I||C)return void _.stopAnimation();if(!ce||0===O||0===F||j<=0||!Number.isFinite(j))return void _.setValue(0);let e=!1;const t=(O+F)/j*1e3,a="rtl"===A?-1:1,i=n=>{_.setValue(n?0:a*F),Animated.sequence([Animated.delay(1e3*H),Animated.timing(_,{toValue:-a*O,duration:t,easing:Easing.linear,useNativeDriver:nativeDriverEnabled,isInteraction:!1})]).start(({finished:t})=>{t&&!e&&(te.current?.(),i(!1))})};return i(!0),()=>{e=!0,_.stopAnimation()}},[ce,_,I,H,j,O,F,C,A]),useEffect(()=>{if(!I)return void K.stopAnimation();if(!G||0===Q)return void K.setValue(0);const e=[];for(let t=1;t<=Y.length;t+=1)e.push(Animated.delay(q),Animated.timing(K,{toValue:-Q*t,duration:X,easing:Easing.linear,useNativeDriver:nativeDriverEnabled,isInteraction:!1}));e.push(Animated.timing(K,{toValue:0,duration:0,useNativeDriver:nativeDriverEnabled,isInteraction:!1}));const t=Animated.loop(Animated.sequence(e));return t.start(),()=>{t.stop(),K.stopAnimation()}},[I,G,Q,X,q,Y,K]);const de=useCallback(e=>{const t=e?.nativeEvent?.layout?.height;t&&U(e=>0===e||Math.abs(e-t)>=.5?t:e)},[]),ue=useMemo(()=>C&&0!==J.length?G?React.createElement(View,{style:[S.vViewport,Q?{height:Q}:void 0],pointerEvents:"none"},React.createElement(Animated.View,{renderToHardwareTextureAndroid:!0,shouldRasterizeIOS:!0,style:[S.vTrack,{transform:[{translateY:K}]}]},J.map((e,t)=>React.createElement(View,{key:t,onLayout:0===t?de:void 0,style:S.vItem},renderTextOrNode(e,[S.text,{color:P,fontFamily:k.typography.fontFamily,fontSize:k.typography.fontSize}],{numberOfLines:1,...D}))))):renderTextOrNode(J[0],[S.text,{color:P,fontFamily:k.typography.fontFamily,fontSize:k.typography.fontSize}],{numberOfLines:1,...D}):null,[de,G,C,Q,P,D,L,k.typography.fontFamily,k.typography.fontSize,J,K]),me=useCallback(e=>{$(e.nativeEvent.layout.width)},[$]),pe=useCallback(e=>{Z(e.nativeEvent.layout.width),L?.(e)},[Z,L]),fe=useCallback(e=>Z(e.nativeEvent.layout.width),[Z]);return I?React.createElement(Pressable,_extends({style:[S.ctr,{backgroundColor:V,paddingHorizontal:k.spacing.paddingHorizontal,paddingVertical:m?k.spacing.wrapPaddingVertical:k.spacing.paddingVertical,minHeight:k.layout.minHeight,borderRadius:k.layout.radius},w],disabled:ne.states.disabled},ne.interactionProps,E),oe&&React.createElement(View,{style:[S.side,{minWidth:k.layout.sideMinWidth}]},r),React.createElement(View,{onLayout:me,style:[S.content,m&&S.contentWrap,oe&&{paddingLeft:k.spacing.sidePadding},se&&{paddingRight:k.spacing.sidePadding}],pointerEvents:"none"},C?ue:ce?z?React.createElement(AnimatedText,_extends({onLayout:pe,style:[S.text,S.scrollText,{color:P,fontFamily:k.typography.fontFamily,fontSize:k.typography.fontSize,transform:[{translateX:_}]}]},IS_WEB?{}:{numberOfLines:1,ellipsizeMode:"clip"},D),N):React.createElement(Animated.View,{onLayout:fe,renderToHardwareTextureAndroid:!0,shouldRasterizeIOS:!0,style:[S.text,{transform:[{translateX:_}]}]},N):z?React.createElement(Text,_extends({onLayout:pe,style:[S.text,{color:P,fontFamily:k.typography.fontFamily,fontSize:k.typography.fontSize},m&&S.wrapText],numberOfLines:m?void 0:1,ellipsizeMode:m?"tail":"clip"},D),N):React.createElement(View,{onLayout:fe,style:[S.text,m&&S.wrapText]},N)),re&&React.createElement(View,{style:[S.side,{minWidth:k.layout.sideMinWidth}]},re)):null},S=StyleSheet.create({ctr:{flexDirection:"row",alignItems:"center"},side:{alignItems:"center",justifyContent:"center"},content:{flex:1,flexDirection:"row",overflow:"hidden"},text:{flexShrink:0},scrollText:Platform.select({web:{whiteSpace:"nowrap",textOverflow:"clip"},default:{}}),wrapText:{flexWrap:"wrap",flexShrink:1},contentWrap:{flexDirection:"column"},vViewport:{width:"100%",overflow:"hidden"},vTrack:{flexDirection:"column",width:"100%"},vItem:{width:"100%",justifyContent:"center"}});export const NoticeBar=React.memo(NoticeBarImpl);NoticeBar.displayName="NoticeBar";
1
+ function _extends(){return _extends=Object.assign?Object.assign.bind():function(e){for(var t=1;t<arguments.length;t++){var a=arguments[t];for(var i in a)({}).hasOwnProperty.call(a,i)&&(e[i]=a[i])}return e},_extends.apply(null,arguments)}import React,{useCallback,useEffect,useMemo,useRef,useState}from"react";import{Animated,Easing,Pressable,StyleSheet,Text,View,Platform}from"react-native";import{Arrow,Close}from"../../internal/icons";import{useAriaPress}from"../../hooks";import{useLocale}from"../config-provider/useLocale";import{useDirection}from"../config-provider/useDirection";import{parseNumber}from"../../utils/number";import{isRenderable,isText}from"../../utils/validate";import{renderTextOrNode}from"../../utils";import{nativeDriverEnabled}from"../../platform";import{useReducedMotion}from"../../hooks/animation";import{useNoticeBarTokens}from"./tokens";const AnimatedText=Animated.createAnimatedComponent(Text),IS_WEB="web"===Platform.OS;if(IS_WEB){const e="undefined"!=typeof globalThis?globalThis:window;void 0===e.global&&(e.global=e)}const NoticeBarImpl=e=>{const{text:t,children:a,color:i,background:n,leftIcon:r,rightIcon:o,mode:s,tokensOverride:l,delay:c=1,speed:d=60,scrollable:u,wrapable:m=!1,direction:p="horizontal",items:f,verticalInterval:y=3e3,verticalDuration:h=300,onPress:g,onClose:b,onReplay:v,textProps:x,style:w,...E}=e,R=useLocale(),A=useDirection(),T=useReducedMotion(),k=useNoticeBarTokens(l),P=i??k.colors.text,V=n??k.colors.background,N=t??a,z=isText(N),C="vertical"===p,[I,M]=useState(!0),{onLayout:L,...D}=x??{},[O,B]=useState(0),[F,W]=useState(0),_=useRef(new Animated.Value(0)).current,H=Math.max(0,parseNumber(c,1)),j=parseNumber(d,60),q=Math.max(0,parseNumber(y,3e3)),X=Math.max(0,parseNumber(h,300)),Y=useMemo(()=>C?f&&f.length?f:(()=>{const e=React.Children.toArray(a);return e.length?e:void 0!==t?[t]:[]})():[],[a,C,f,t]),G=!T&&C&&Y.length>1,J=useMemo(()=>G?[...Y,Y[0]]:Y,[G,Y]),K=useRef(new Animated.Value(0)).current,[Q,U]=useState(0),Z=useCallback(e=>{B(t=>Math.abs(t-e)<.5?t:e)},[]),$=useCallback(e=>{W(t=>Math.abs(t-e)<.5?t:e)},[]),ee=useRef(b);ee.current=b;const te=useRef(v);te.current=v;const ae=useCallback(()=>{M(!1),ee.current?.()},[]),ie=useAriaPress({disabled:"closeable"!==s||!I,onPress:ae,extraProps:{accessibilityRole:"button",accessibilityLabel:R?.vanNoticeBar?.close??"Close"}}),ne=useAriaPress({disabled:!g||!I,onPress:g,extraProps:g?{accessibilityRole:"button"}:void 0}),re="closeable"===s?React.createElement(Pressable,_extends({hitSlop:8},ie.interactionProps),React.createElement(Close,{size:16,fill:P,color:P})):"link"===s?React.createElement(Arrow,{size:16,fill:P,color:P}):o||null,oe=isRenderable(r),se=Boolean(re),le=Math.max(0,F-(oe?k.spacing.sidePadding:0)-(se?k.spacing.sidePadding:0)),ce=!T&&!C&&!m&&(u??O>le);useEffect(()=>{if(!I||C)return void _.stopAnimation();if(!ce||0===O||0===F||j<=0||!Number.isFinite(j))return void _.setValue(0);let e=!1;const t=(O+F)/j*1e3,a="rtl"===A?-1:1,i=n=>{_.setValue(n?0:a*F),Animated.sequence([Animated.delay(1e3*H),Animated.timing(_,{toValue:-a*O,duration:t,easing:Easing.linear,useNativeDriver:nativeDriverEnabled,isInteraction:!1})]).start(({finished:t})=>{t&&!e&&(te.current?.(),i(!1))})};return i(!0),()=>{e=!0,_.stopAnimation()}},[ce,_,I,H,j,O,F,C,A]),useEffect(()=>{if(!I)return void K.stopAnimation();if(!G||0===Q)return void K.setValue(0);const e=[];for(let t=1;t<=Y.length;t+=1)e.push(Animated.delay(q),Animated.timing(K,{toValue:-Q*t,duration:X,easing:Easing.linear,useNativeDriver:nativeDriverEnabled,isInteraction:!1}));e.push(Animated.timing(K,{toValue:0,duration:0,useNativeDriver:nativeDriverEnabled,isInteraction:!1}));const t=Animated.loop(Animated.sequence(e));return t.start(),()=>{t.stop(),K.stopAnimation()}},[I,G,Q,X,q,Y,K]);const de=useCallback(e=>{const t=e?.nativeEvent?.layout?.height;t&&U(e=>0===e||Math.abs(e-t)>=.5?t:e)},[]),ue=useMemo(()=>C&&0!==J.length?G?React.createElement(View,{style:[S.vViewport,Q?{height:Q}:void 0],pointerEvents:"none"},React.createElement(Animated.View,{renderToHardwareTextureAndroid:!0,shouldRasterizeIOS:!0,style:[S.vTrack,{transform:[{translateY:K}]}]},J.map((e,t)=>React.createElement(View,{key:t,onLayout:0===t?de:void 0,style:S.vItem},renderTextOrNode(e,[S.text,{color:P,fontFamily:k.typography.fontFamily,fontSize:k.typography.fontSize}],{numberOfLines:1,...D}))))):renderTextOrNode(J[0],[S.text,{color:P,fontFamily:k.typography.fontFamily,fontSize:k.typography.fontSize}],{numberOfLines:1,...D}):null,[de,G,C,Q,P,D,L,k.typography.fontFamily,k.typography.fontSize,J,K]),me=useCallback(e=>{$(e.nativeEvent.layout.width)},[$]),pe=useCallback(e=>{Z(e.nativeEvent.layout.width),L?.(e)},[Z,L]),fe=useCallback(e=>Z(e.nativeEvent.layout.width),[Z]);return I?React.createElement(Pressable,_extends({style:[S.ctr,{backgroundColor:V,paddingHorizontal:k.spacing.paddingHorizontal,paddingVertical:m?k.spacing.wrapPaddingVertical:k.spacing.paddingVertical,minHeight:k.layout.minHeight,borderRadius:k.layout.radius},w],disabled:ne.states.disabled},ne.interactionProps,E),oe&&React.createElement(View,{style:[S.side,{minWidth:k.layout.sideMinWidth}]},r),React.createElement(View,{onLayout:me,style:[S.content,m&&S.contentWrap,oe&&{paddingLeft:k.spacing.sidePadding},se&&{paddingRight:k.spacing.sidePadding}],pointerEvents:"none"},C?ue:ce?z?React.createElement(AnimatedText,_extends({onLayout:pe,style:[S.text,S.scrollText,{color:P,fontFamily:k.typography.fontFamily,fontSize:k.typography.fontSize,transform:[{translateX:_}]}]},IS_WEB?{}:{numberOfLines:1,ellipsizeMode:"clip"},D),N):React.createElement(Animated.View,{onLayout:fe,renderToHardwareTextureAndroid:!0,shouldRasterizeIOS:!0,style:[S.text,{transform:[{translateX:_}]}]},N):z?React.createElement(Text,_extends({onLayout:pe,style:[S.text,{color:P,fontFamily:k.typography.fontFamily,fontSize:k.typography.fontSize},m&&S.wrapText],numberOfLines:m?void 0:1,ellipsizeMode:m?"tail":"clip"},D),N):React.createElement(View,{onLayout:fe,style:[S.text,m&&S.wrapText]},N)),re&&React.createElement(View,{style:[S.side,{minWidth:k.layout.sideMinWidth}]},re)):null},S=StyleSheet.create({ctr:{flexDirection:"row",alignItems:"center"},side:{alignItems:"center",justifyContent:"center"},content:{flex:1,flexDirection:"row",overflow:"hidden"},text:{flexShrink:0},scrollText:Platform.select({web:{whiteSpace:"nowrap",textOverflow:"clip"},default:{}}),wrapText:{flexWrap:"wrap",flexShrink:1},contentWrap:{flexDirection:"column"},vViewport:{width:"100%",overflow:"hidden"},vTrack:{flexDirection:"column",width:"100%"},vItem:{width:"100%",justifyContent:"center"}});export const NoticeBar=React.memo(NoticeBarImpl);NoticeBar.displayName="NoticeBar";
@@ -1 +1 @@
1
- function _extends(){return _extends=Object.assign?Object.assign.bind():function(e){for(var t=1;t<arguments.length;t++){var n=arguments[t];for(var r in n)({}).hasOwnProperty.call(n,r)&&(e[r]=n[r])}return e},_extends.apply(null,arguments)}import React,{useCallback,useEffect,useMemo,useRef,useState}from"react";import{Pressable,Text,View,Platform,StyleSheet,ScrollView,PanResponder}from"react-native";import Loading from"../loading";import{useLocale}from"../config-provider/useLocale";import{isText}from"../../utils/validate";import{clamp}from"../../utils";import{usePickerTokens}from"./tokens";import{createHairlineView}from"../../utils/hairline";import{findEnabledIndex}from"../../hooks/picker/normalize";import{getVisibleCount,GradientMask,usePickerValue}from"../../hooks/picker/value";export{toArrayValue,findEnabledIndex,prepareColumns,normalizePicker}from"../../hooks/picker/normalize";export{usePickerValue}from"../../hooks/picker/value";const W=StyleSheet.create({column:{flex:1},option:{justifyContent:"center",alignItems:"center"},grab:{cursor:"pointer",userSelect:"none",touchAction:"none"}}),WheelPickerItemInner=({item:e,index:t,itemHeight:n,active:r,disabled:o,renderItem:l})=>{const a=l(e,t,{active:r,disabled:o});return React.createElement(View,{style:[W.option,{height:n}]},a)},WheelPickerItem=React.memo(WheelPickerItemInner),getVelocityBucket=e=>{const t=Math.abs(e);return t>1.2?2:t>.6?1:0},adjustIndex=(e,t)=>{const n=t.length;if(!n)return 0;const r=clamp(e,0,n-1),o=findEnabledIndex(t,r);return o>=0?o:r},indexToOffset=(e,t)=>-e*t,offsetToIndex=(e,t,n,r)=>{const o=-Math.max(0,n-1)*t,l=clamp(e,o,0);let a=Math.round(-l/t);a=adjustIndex(a,r);return{index:a,snapOffset:indexToOffset(a,t)}},shouldMomentum=(e,t)=>t<500&&Math.abs(e)>8,momentumTarget=(e,t,n,r,o)=>{const l=Math.abs(e/t),a=clamp(n+l/.0025*(e<0?-1:1),o,0),i=Math.round(-a/r);return indexToOffset(i,r)},WheelPickerInner=({data:e,selectedIndex:t,onChange:n,onInteractStart:r,onInteractEnd:o,renderItem:l,itemHeight:a,visibleRest:i,readOnly:c,indicatorColor:s,decelerationRate:u=Platform.select({ios:.9985,android:.995,default:.995})??"normal",scrollEventThrottle:m=16,swipeDuration:d=300})=>{const f="web"===Platform.OS,p=useRef(null),h=useRef(null),b=i*a,g=e.length,y=Math.max(0,g-1),R=-y*a,E=a*(2*i+1),k=clamp(t,0,y),x=findEnabledIndex(e,k),v=x>=0?x:k,w=2*i+1,C=g>20*w?32:m,I=g>4*w,T=useCallback(()=>React.createElement(View,{style:{height:b}}),[b]),V=useMemo(()=>[S.indicator,{height:a,top:a*i}],[a,i]),P=useRef(null),M=useRef(!1),O=useRef(0),D=useCallback(()=>{P.current&&(clearTimeout(P.current),P.current=null)},[]),H=useCallback((t,r)=>{if(c)return;const{index:o,snapOffset:l}=offsetToIndex(-t,a,g,e),i=-l;Math.abs(i-t)>.5&&p.current?.scrollToOffset({offset:i,animated:r}),n(o)},[e,a,n,c,g]);useEffect(()=>{const e=v*a;f||h.current?.scrollTo({y:e,animated:!1})},[f,a,v]);const[A,F]=useState(()=>indexToOffset(v,a)),L=useRef(A),z=useRef(0),j=useRef(0),[B,$]=useState(0),[q,_]=useState(0),G=useRef(0),N=useRef(null),Y=useRef(0),J=useRef(null),K=useRef(null),Q=useRef(null),U=useRef(null),X=useRef(!1),Z=useRef(r);Z.current=r;const ee=useRef(o);ee.current=o;const te=useCallback(()=>{c||X.current||(X.current=!0,Z.current?.())},[c]),ne=useCallback(()=>{X.current&&(X.current=!1,ee.current?.())},[]),re=useCallback(()=>{null!=U.current&&"undefined"!=typeof cancelAnimationFrame&&(cancelAnimationFrame(U.current),U.current=null),null!=J.current&&"undefined"!=typeof cancelAnimationFrame&&(cancelAnimationFrame(J.current),J.current=null)},[]),oe=useCallback(()=>{Q.current&&(clearTimeout(Q.current),Q.current=null)},[]);useEffect(()=>()=>{D(),oe(),re()},[D,oe,re]);const le=useCallback(e=>{const t=getVelocityBucket(e);t!==G.current&&(G.current=t,_(t))},[]),ae=useCallback(e=>{const t=Date.now(),n=N.current;if(null!=n){const r=Math.max(1,t-n);le(e/r)}N.current=t},[le]);useEffect(()=>{if(!f)return;oe(),K.current=null,$(0);const e=indexToOffset(v,a);L.current=e,F(e)},[oe,f,a,v,$]);const ie=useCallback(()=>{if(c)return;const e=K.current;null!=e&&(K.current=null,oe(),$(0),ne(),n(e))},[oe,n,c,$]),ce=useCallback(e=>{if(c)return;te();const t=clamp(e,0,y),n=indexToOffset(t,a);oe(),K.current=t,L.current=n,$(d),F(n),d<=0?ie():Q.current=setTimeout(ie,d+80)},[oe,ie,a,y,c,d]),se=useCallback(t=>{if(c)return;const n=t.nativeEvent?.deltaY??0;n&&(Y.current+=n,null==J.current&&"undefined"!=typeof requestAnimationFrame&&(J.current=requestAnimationFrame(()=>{J.current=null;const t=Y.current;if(Y.current=0,!t)return;ae(t);const n=t>0?1:-1,{index:r}=offsetToIndex(L.current,a,g,e),o=clamp(r+n,0,y);ce(o)})))},[e,a,y,c,ce,g,ae]),ue=clamp(Math.round(-A/a),0,y),me=useMemo(()=>{if(!f||g<=0)return{items:null,topSpacer:null,bottomSpacer:null};let t=0,n=y;if(I){const e=Math.max(2*w,8),r=2===q?4*w:1===q?2*w:0,o=Math.min(e+r,Math.max(6*w,24));t=clamp(ue-o,0,y),n=clamp(ue+o,0,y)}const r=[];for(let o=t;o<=n;o+=1){const t=e[o];t&&r.push(React.createElement(WheelPickerItem,{key:`${o}-${String(t.value??"")}`,item:t,index:o,itemHeight:a,active:o===v,disabled:!!t.disabled,renderItem:l}))}const o=t*a,i=(y-n)*a;return{items:r,topSpacer:o>0&&React.createElement(View,{style:{height:o}}),bottomSpacer:i>0&&React.createElement(View,{style:{height:i}})}},[e,f,a,y,l,v,g,w,ue,q,I]),de=useMemo(()=>({transform:[{translateY:A}]}),[A]),fe=useMemo(()=>B?{transitionProperty:"transform",transitionDuration:B+"ms",transitionTimingFunction:"cubic-bezier(0.23, 1, 0.68, 1)",willChange:"transform"}:void 0,[B]),pe=useCallback(e=>{const t=e.nativeEvent?.propertyName??e.propertyName;t&&"transform"!==t&&"webkitTransform"!==t||ie()},[ie]),he=useMemo(()=>PanResponder.create({onStartShouldSetPanResponder:()=>!c,onMoveShouldSetPanResponder:()=>!c,onPanResponderGrant:()=>{re(),K.current=null,te(),$(0),z.current=L.current,j.current=Date.now()},onPanResponderMove:(e,t)=>{if(c)return;le(t.vy);const n=clamp(z.current+t.dy,R,0);L.current=n,"undefined"==typeof requestAnimationFrame?F(n):null!=U.current||(U.current=requestAnimationFrame(()=>{U.current=null,F(L.current)}))},onPanResponderRelease:(t,n)=>{if(c)return;le(0);const r=Date.now()-j.current,o=n.dy;let l=clamp(z.current+o,R,0);shouldMomentum(o,r)&&(l=momentumTarget(o,r,z.current,a,R));const{index:i}=offsetToIndex(l,a,g,e);ce(i)},onPanResponderTerminationRequest:()=>!1,onPanResponderTerminate:()=>{ne(),$(0)}}),[e,a,R,ne,te,c,le,ce,re,g]),be=!c,ge=useCallback(()=>be,[be]),ye=useMemo(()=>({paddingVertical:b}),[b]),Re=useCallback(e=>{O.current=e.nativeEvent.contentOffset.y},[]),Ee=useCallback(()=>{M.current=!1,D(),te()},[D,te]),ke=useCallback(e=>{if(c)return;const t=e.nativeEvent.contentOffset.y;O.current=t,D(),P.current=setTimeout(()=>{M.current||(H(O.current,!0),ne())},80)},[D,H,ne,c]),xe=useCallback(()=>{M.current=!0,D(),te()},[D,te]),Se=useCallback(e=>{M.current=!1,D();const t=e.nativeEvent.contentOffset.y;O.current=t,H(t,!1),ne()},[D,H,ne]);return f?React.createElement(View,_extends({style:[W.column,{height:E},W.grab],onWheel:se},he.panHandlers),React.createElement(View,{style:V,pointerEvents:"none"},React.createElement(View,{style:createHairlineView({position:"top",color:s,left:0,right:0})}),React.createElement(View,{style:createHairlineView({position:"bottom",color:s,left:0,right:0})})),React.createElement(View,{style:[de,fe],onTransitionEnd:pe},React.createElement(T,null),me.topSpacer,me.items,me.bottomSpacer,React.createElement(T,null))):React.createElement(View,{style:[W.column,{height:E}],collapsable:!1},React.createElement(View,{style:V,pointerEvents:"none"},React.createElement(View,{style:createHairlineView({position:"top",color:s,left:0,right:0})}),React.createElement(View,{style:createHairlineView({position:"bottom",color:s,left:0,right:0})})),React.createElement(ScrollView,{ref:h,showsVerticalScrollIndicator:!1,scrollEventThrottle:C,decelerationRate:u,snapToInterval:a,snapToAlignment:"start",bounces:!1,overScrollMode:"never",nestedScrollEnabled:!0,contentContainerStyle:ye,onStartShouldSetResponderCapture:ge,onMoveShouldSetResponderCapture:ge,onScroll:Re,onScrollBeginDrag:Ee,onScrollEndDrag:ke,onMomentumScrollBegin:xe,onMomentumScrollEnd:Se,scrollEnabled:!c},e.map((e,t)=>React.createElement(WheelPickerItem,{key:`${t}-${String(e.value??"")}`,item:e,index:t,itemHeight:a,active:t===v,disabled:!!e.disabled,renderItem:l}))))},WheelPicker=React.memo(WheelPickerInner),PickerColumn=React.memo(e=>{const{columnIndex:t,options:n,value:r,itemHeight:o,visibleItemCount:l,optionRender:a,getOptionTestID:i,getOptionA11yLabel:c,onSelect:s,tokens:u,readOnly:m,decelerationRate:d,scrollEventThrottle:f,swipeDuration:p}=e,h=Math.max(1,Math.floor((l-1)/2)),b=useMemo(()=>new Map(n.map((e,t)=>[e.value,t])),[n]),g=useMemo(()=>{if(!n.length)return 0;const e=b.get(r);return findEnabledIndex(n,"number"==typeof e&&e>=0?e:0)},[n,r,b]),y=useCallback(e=>{const r=findEnabledIndex(n,e),o=n[r];o&&!o.disabled&&s(o,t,r)},[t,s,n]),{text:R,textDisabled:E,textMuted:k}=u.colors,x={fontSize:u.typography.optionSize,fontFamily:u.typography.fontFamily,fontWeight:u.typography.optionWeight},v=useCallback((e,n,r)=>{const{active:l=!1,disabled:s=!1}=r??{},u=s?E:l?R:k,m=a?a(e,{columnIndex:t,active:l}):e.label??e.value,d=i?.(e,{columnIndex:t,active:l}),f=c?.(e,{columnIndex:t,active:l});return React.createElement(View,{style:[W.option,{opacity:s?.5:1,minHeight:o}],testID:d,accessible:!!f,accessibilityLabel:f},isText(m)?React.createElement(Text,{numberOfLines:1,style:[S.optTxt,x,{color:u}]},m):m)},[R,E,k,t,c,i,o,x,a]);return React.createElement(View,{style:[W.column,{height:o*l}]},React.createElement(WheelPicker,{data:n,itemHeight:o,visibleRest:h,selectedIndex:Math.max(0,g),onChange:y,readOnly:m,indicatorColor:u.colors.indicator,decelerationRate:d,scrollEventThrottle:f,swipeDuration:p,renderItem:v}))}),PickerImpl=e=>{const{tokensOverride:t}=e,n=useLocale(),r=usePickerTokens(t),{columns:o=[],value:l,defaultValue:a,title:i,showToolbar:c=r.defaults.showToolbar,toolbarPosition:s=r.defaults.toolbarPosition,confirmButtonText:u=n?.confirm??"Confirm",cancelButtonText:m=n?.cancel??"Cancel",itemHeight:d=r.defaults.itemHeight,visibleItemCount:f=r.defaults.visibleItemCount,loading:p=!1,readOnly:h=!1,decelerationRate:b=Platform.select({ios:.999,android:.997,default:.989})??"normal",swipeDuration:g=r.defaults.swipeDuration,scrollEventThrottle:y=16,columnsTop:R,columnsBottom:E,optionRender:k,getOptionTestID:x,getOptionA11yLabel:v,emitConfirmOnAutoSelect:w=!0,maskColor:C,maskType:I=r.defaults.maskType,onChange:T,onConfirm:V,onCancel:P,style:M,testID:O,...W}=e,D=getVisibleCount(f??r.defaults.visibleItemCount),{normalized:H,handleSelect:A,handleConfirm:F,preparedColumns:L}=usePickerValue({columns:o,valueProp:l,defaultValue:a,emitConfirmOnAutoSelect:w,onChange:T,onConfirm:V}),z="cascade"===L.type,j={fontSize:r.typography.toolbarSize,fontFamily:r.typography.fontFamily,fontWeight:r.typography.toolbarWeight},B=(e,t)=>React.isValidElement(e)?React.createElement(View,{style:S.actW},e):isText(e)?React.createElement(Text,{numberOfLines:1,style:[S.actTxt,j,{color:t}]},e):React.createElement(View,{style:S.actW}),$=c?React.createElement(View,{style:[S.toolbar,{height:r.spacing.toolbarHeight,paddingHorizontal:r.spacing.actionPadding}]},React.createElement(Pressable,{onPress:P,accessibilityRole:"button"},B(m,r.colors.cancel)),null==(q=i)?React.createElement(View,null):React.isValidElement(q)?React.createElement(View,{style:S.ttlW},q):React.createElement(Text,{style:[S.title,j,{color:r.colors.text}],numberOfLines:1},q),React.createElement(Pressable,{onPress:F,accessibilityRole:"button"},B(u,r.colors.confirm)),React.createElement(View,{style:createHairlineView({position:"bottom",color:r.colors.indicator,left:0,right:0})})):null;var q;const _=d*D,G=Math.max(1,Math.floor((D-1)/2)),N=d*G,Y=N,J=H.columns.length>0,K=C??r.colors.mask,Q=J?H.columns.map((e,t)=>{const n=z?`${t}-${H.values.slice(0,t).map(String).join("|")}`:String(t);return React.createElement(PickerColumn,{key:n,columnIndex:t,options:e,value:H.values[t],itemHeight:d,visibleItemCount:D,decelerationRate:b,scrollEventThrottle:y,optionRender:k,getOptionTestID:x,getOptionA11yLabel:v,readOnly:h,swipeDuration:g,onSelect:A,tokens:r})}):null;return React.createElement(View,_extends({},W,{style:[{backgroundColor:r.colors.background,borderRadius:r.radius.container},M],testID:O}),"top"===s&&$,React.createElement(View,{style:[S.body,{height:_}]},React.createElement(View,{style:S.columns,pointerEvents:p?"none":"auto"},R,Q,E,J&&React.createElement(React.Fragment,null,React.createElement(View,{pointerEvents:"none",style:[S.indicator,{top:N,height:d}]},React.createElement(View,{style:createHairlineView({position:"top",color:r.colors.indicator,left:0,right:0})}),React.createElement(View,{style:createHairlineView({position:"bottom",color:r.colors.indicator,left:0,right:0})})),React.createElement(GradientMask,{position:"top",height:Y,color:K,maskType:I}),React.createElement(GradientMask,{position:"bottom",height:Y,color:K,maskType:I}))),p&&React.createElement(View,{style:[S.loading,{backgroundColor:r.colors.loadingMask}]},React.createElement(Loading,null))),"bottom"===s&&$)},S=StyleSheet.create({body:{position:"relative",overflow:"hidden"},columns:{flex:1,flexDirection:"row"},optTxt:{includeFontPadding:!1},indicator:{position:"absolute",left:0,right:0,zIndex:3},toolbar:{flexDirection:"row",alignItems:"center",justifyContent:"space-between"},title:{flex:1,textAlign:"center"},ttlW:{flex:1,alignItems:"center",justifyContent:"center"},actTxt:{minWidth:44,textAlign:"center"},actW:{minWidth:44,alignItems:"center",justifyContent:"center"},loading:{position:"absolute",top:0,left:0,right:0,bottom:0,alignItems:"center",justifyContent:"center"}}),Picker=React.memo(PickerImpl);export default Picker;
1
+ function _extends(){return _extends=Object.assign?Object.assign.bind():function(e){for(var t=1;t<arguments.length;t++){var n=arguments[t];for(var r in n)({}).hasOwnProperty.call(n,r)&&(e[r]=n[r])}return e},_extends.apply(null,arguments)}import React,{useCallback,useEffect,useMemo,useRef,useState}from"react";import{Pressable,Text,View,Platform,StyleSheet,ScrollView,PanResponder}from"react-native";import Loading from"../loading";import{useLocale}from"../config-provider/useLocale";import{isText}from"../../utils/validate";import{clamp}from"../../utils";import{usePickerTokens}from"./tokens";import{createHairlineView}from"../../utils/hairline";import{findEnabledIndex}from"../../hooks/picker/normalize";import{getVisibleCount,GradientMask,usePickerValue}from"../../hooks/picker/value";export{toArrayValue,findEnabledIndex,prepareColumns,normalizePicker}from"../../hooks/picker/normalize";export{usePickerValue}from"../../hooks/picker/value";const W=StyleSheet.create({column:{flex:1},option:{justifyContent:"center",alignItems:"center"},grab:{cursor:"pointer",userSelect:"none",touchAction:"none"}}),WheelPickerItemInner=({item:e,index:t,itemHeight:n,active:r,disabled:o,renderItem:a})=>{const l=a(e,t,{active:r,disabled:o});return React.createElement(View,{style:[W.option,{height:n}]},l)},WheelPickerItem=React.memo(WheelPickerItemInner),getVelocityBucket=e=>{const t=Math.abs(e);return t>1.2?2:t>.6?1:0},adjustIndex=(e,t)=>{const n=t.length;if(!n)return 0;const r=clamp(e,0,n-1),o=findEnabledIndex(t,r);return o>=0?o:r},indexToOffset=(e,t)=>-e*t,offsetToIndex=(e,t,n,r)=>{const o=-Math.max(0,n-1)*t,a=clamp(e,o,0);let l=Math.round(-a/t);l=adjustIndex(l,r);return{index:l,snapOffset:indexToOffset(l,t)}},shouldMomentum=(e,t)=>t<500&&Math.abs(e)>8,momentumTarget=(e,t,n,r,o)=>{const a=Math.abs(e/t),l=clamp(n+a/.0025*(e<0?-1:1),o,0),i=Math.round(-l/r);return indexToOffset(i,r)},WheelPickerInner=({data:e,selectedIndex:t,onChange:n,onInteractStart:r,onInteractEnd:o,renderItem:a,itemHeight:l,visibleRest:i,readOnly:c,indicatorColor:s,decelerationRate:u=Platform.select({ios:.9985,android:.995,default:.995})??"normal",scrollEventThrottle:m=16,swipeDuration:d=300})=>{const f="web"===Platform.OS,p=useRef(null),h=useRef(null),b=i*l,g=e.length,y=Math.max(0,g-1),R=-y*l,E=l*(2*i+1),k=clamp(t,0,y),x=findEnabledIndex(e,k),v=x>=0?x:k,w=2*i+1,C=g>20*w?32:m,I=g>4*w,T=useCallback(()=>React.createElement(View,{style:{height:b}}),[b]),V=useMemo(()=>[S.indicator,{height:l,top:l*i}],[l,i]),P=useRef(null),M=useRef(!1),O=useRef(0),D=useCallback(()=>{P.current&&(clearTimeout(P.current),P.current=null)},[]),H=useCallback((t,r)=>{if(c)return;const{index:o,snapOffset:a}=offsetToIndex(-t,l,g,e),i=-a;Math.abs(i-t)>.5&&p.current?.scrollToOffset({offset:i,animated:r}),n(o)},[e,l,n,c,g]);useEffect(()=>{const e=v*l;f||h.current?.scrollTo({y:e,animated:!1})},[f,l,v]);const[A,F]=useState(()=>indexToOffset(v,l)),z=useRef(A),L=useRef(0),j=useRef(0),[B,$]=useState(0),[q,_]=useState(0),G=useRef(0),N=useRef(null),Y=useRef(0),J=useRef(null),K=useRef(null),Q=useRef(null),U=useRef(null),X=useRef(!1),Z=useRef(r);Z.current=r;const ee=useRef(o);ee.current=o;const te=useCallback(()=>{c||X.current||(X.current=!0,Z.current?.())},[c]),ne=useCallback(()=>{X.current&&(X.current=!1,ee.current?.())},[]),re=useCallback(()=>{null!=U.current&&"undefined"!=typeof cancelAnimationFrame&&(cancelAnimationFrame(U.current),U.current=null),null!=J.current&&"undefined"!=typeof cancelAnimationFrame&&(cancelAnimationFrame(J.current),J.current=null)},[]),oe=useCallback(()=>{Q.current&&(clearTimeout(Q.current),Q.current=null)},[]);useEffect(()=>()=>{D(),oe(),re()},[D,oe,re]);const ae=useCallback(e=>{const t=getVelocityBucket(e);t!==G.current&&(G.current=t,_(t))},[]),le=useCallback(e=>{const t=Date.now(),n=N.current;if(null!=n){const r=Math.max(1,t-n);ae(e/r)}N.current=t},[ae]);useEffect(()=>{if(!f)return;oe(),K.current=null,$(0);const e=indexToOffset(v,l);z.current=e,F(e)},[oe,f,l,v,$]);const ie=useCallback(()=>{if(c)return;const e=K.current;null!=e&&(K.current=null,oe(),$(0),ne(),n(e))},[oe,n,c,$]),ce=useCallback(e=>{if(c)return;te();const t=clamp(e,0,y),n=indexToOffset(t,l);oe(),K.current=t,z.current=n,$(d),F(n),d<=0?ie():Q.current=setTimeout(ie,d+80)},[oe,ie,l,y,c,d]),se=useCallback(t=>{if(c)return;const n=t.nativeEvent?.deltaY??0;n&&(Y.current+=n,null==J.current&&"undefined"!=typeof requestAnimationFrame&&(J.current=requestAnimationFrame(()=>{J.current=null;const t=Y.current;if(Y.current=0,!t)return;le(t);const n=t>0?1:-1,{index:r}=offsetToIndex(z.current,l,g,e),o=clamp(r+n,0,y);ce(o)})))},[e,l,y,c,ce,g,le]),ue=clamp(Math.round(-A/l),0,y),me=useMemo(()=>{if(!f||g<=0)return{items:null,topSpacer:null,bottomSpacer:null};let t=0,n=y;if(I){const e=Math.max(2*w,8),r=2===q?4*w:1===q?2*w:0,o=Math.min(e+r,Math.max(6*w,24));t=clamp(ue-o,0,y),n=clamp(ue+o,0,y)}const r=[];for(let o=t;o<=n;o+=1){const t=e[o];t&&r.push(React.createElement(WheelPickerItem,{key:`${o}-${String(t.value??"")}`,item:t,index:o,itemHeight:l,active:o===v,disabled:!!t.disabled,renderItem:a}))}const o=t*l,i=(y-n)*l;return{items:r,topSpacer:o>0&&React.createElement(View,{style:{height:o}}),bottomSpacer:i>0&&React.createElement(View,{style:{height:i}})}},[e,f,l,y,a,v,g,w,ue,q,I]),de=useMemo(()=>({transform:[{translateY:A}]}),[A]),fe=useMemo(()=>B?{transitionProperty:"transform",transitionDuration:B+"ms",transitionTimingFunction:"cubic-bezier(0.23, 1, 0.68, 1)",willChange:"transform"}:void 0,[B]),pe=useCallback(e=>{const t=e.nativeEvent?.propertyName??e.propertyName;t&&"transform"!==t&&"webkitTransform"!==t||ie()},[ie]),he=useMemo(()=>PanResponder.create({onStartShouldSetPanResponder:()=>!c,onMoveShouldSetPanResponder:()=>!c,onPanResponderGrant:()=>{re(),K.current=null,te(),$(0),L.current=z.current,j.current=Date.now()},onPanResponderMove:(e,t)=>{if(c)return;ae(t.vy);const n=clamp(L.current+t.dy,R,0);z.current=n,"undefined"==typeof requestAnimationFrame?F(n):null!=U.current||(U.current=requestAnimationFrame(()=>{U.current=null,F(z.current)}))},onPanResponderRelease:(t,n)=>{if(c)return;ae(0);const r=Date.now()-j.current,o=n.dy;let a=clamp(L.current+o,R,0);shouldMomentum(o,r)&&(a=momentumTarget(o,r,L.current,l,R));const{index:i}=offsetToIndex(a,l,g,e);ce(i)},onPanResponderTerminationRequest:()=>!1,onPanResponderTerminate:()=>{ne(),$(0)}}),[e,l,R,ne,te,c,ae,ce,re,g]),be=!c,ge=useCallback(()=>be,[be]),ye=useMemo(()=>({paddingVertical:b}),[b]),Re=useCallback(e=>{O.current=e.nativeEvent.contentOffset.y},[]),Ee=useCallback(()=>{M.current=!1,D(),te()},[D,te]),ke=useCallback(e=>{if(c)return;const t=e.nativeEvent.contentOffset.y;O.current=t,D(),P.current=setTimeout(()=>{M.current||(H(O.current,!0),ne())},80)},[D,H,ne,c]),xe=useCallback(()=>{M.current=!0,D(),te()},[D,te]),Se=useCallback(e=>{M.current=!1,D();const t=e.nativeEvent.contentOffset.y;O.current=t,H(t,!1),ne()},[D,H,ne]);return f?React.createElement(View,_extends({style:[W.column,{height:E},W.grab],onWheel:se},he.panHandlers),React.createElement(View,{style:V,pointerEvents:"none"},React.createElement(View,{style:createHairlineView({position:"top",color:s,left:0,right:0})}),React.createElement(View,{style:createHairlineView({position:"bottom",color:s,left:0,right:0})})),React.createElement(View,{style:[de,fe],onTransitionEnd:pe},React.createElement(T,null),me.topSpacer,me.items,me.bottomSpacer,React.createElement(T,null))):React.createElement(View,{style:[W.column,{height:E}],collapsable:!1},React.createElement(View,{style:V,pointerEvents:"none"},React.createElement(View,{style:createHairlineView({position:"top",color:s,left:0,right:0})}),React.createElement(View,{style:createHairlineView({position:"bottom",color:s,left:0,right:0})})),React.createElement(ScrollView,{ref:h,showsVerticalScrollIndicator:!1,scrollEventThrottle:C,decelerationRate:u,snapToInterval:l,snapToAlignment:"start",bounces:!1,overScrollMode:"never",nestedScrollEnabled:!0,contentContainerStyle:ye,onStartShouldSetResponderCapture:ge,onMoveShouldSetResponderCapture:ge,onScroll:Re,onScrollBeginDrag:Ee,onScrollEndDrag:ke,onMomentumScrollBegin:xe,onMomentumScrollEnd:Se,scrollEnabled:!c},e.map((e,t)=>React.createElement(WheelPickerItem,{key:`${t}-${String(e.value??"")}`,item:e,index:t,itemHeight:l,active:t===v,disabled:!!e.disabled,renderItem:a}))))},WheelPicker=React.memo(WheelPickerInner),PickerColumn=React.memo(e=>{const{columnIndex:t,options:n,value:r,itemHeight:o,visibleItemCount:a,optionRender:l,getOptionTestID:i,getOptionA11yLabel:c,onSelect:s,tokens:u,readOnly:m,decelerationRate:d,scrollEventThrottle:f,swipeDuration:p}=e,h=Math.max(1,Math.floor((a-1)/2)),b=useMemo(()=>new Map(n.map((e,t)=>[e.value,t])),[n]),g=useMemo(()=>{if(!n.length)return 0;const e=b.get(r);return findEnabledIndex(n,"number"==typeof e&&e>=0?e:0)},[n,r,b]),y=useCallback(e=>{const r=findEnabledIndex(n,e),o=n[r];o&&!o.disabled&&s(o,t,r)},[t,s,n]),{text:R,textDisabled:E,textMuted:k}=u.colors,x=useMemo(()=>({fontSize:u.typography.optionSize,fontFamily:u.typography.fontFamily,fontWeight:u.typography.optionWeight}),[u.typography.fontFamily,u.typography.optionSize,u.typography.optionWeight]),v=useCallback((e,n,r)=>{const{active:a=!1,disabled:s=!1}=r??{},u=s?E:a?R:k,m=l?l(e,{columnIndex:t,active:a}):e.label??e.value,d=i?.(e,{columnIndex:t,active:a}),f=c?.(e,{columnIndex:t,active:a});return React.createElement(View,{style:[W.option,{opacity:s?.5:1,minHeight:o}],testID:d,accessible:!!f,accessibilityLabel:f},isText(m)?React.createElement(Text,{numberOfLines:1,style:[S.optTxt,x,{color:u}]},m):m)},[R,E,k,t,c,i,o,x,l]);return React.createElement(View,{style:[W.column,{height:o*a}]},React.createElement(WheelPicker,{data:n,itemHeight:o,visibleRest:h,selectedIndex:Math.max(0,g),onChange:y,readOnly:m,indicatorColor:u.colors.indicator,decelerationRate:d,scrollEventThrottle:f,swipeDuration:p,renderItem:v}))}),PickerImpl=e=>{const{tokensOverride:t}=e,n=useLocale(),r=usePickerTokens(t),{columns:o=[],value:a,defaultValue:l,title:i,showToolbar:c=r.defaults.showToolbar,toolbarPosition:s=r.defaults.toolbarPosition,confirmButtonText:u=n?.confirm??"Confirm",cancelButtonText:m=n?.cancel??"Cancel",itemHeight:d=r.defaults.itemHeight,visibleItemCount:f=r.defaults.visibleItemCount,loading:p=!1,readOnly:h=!1,decelerationRate:b=Platform.select({ios:.999,android:.997,default:.989})??"normal",swipeDuration:g=r.defaults.swipeDuration,scrollEventThrottle:y=16,columnsTop:R,columnsBottom:E,optionRender:k,getOptionTestID:x,getOptionA11yLabel:v,emitConfirmOnAutoSelect:w=!0,maskColor:C,maskType:I=r.defaults.maskType,onChange:T,onConfirm:V,onCancel:P,style:M,testID:O,...W}=e,D=getVisibleCount(f??r.defaults.visibleItemCount),{normalized:H,handleSelect:A,handleConfirm:F,preparedColumns:z}=usePickerValue({columns:o,valueProp:a,defaultValue:l,emitConfirmOnAutoSelect:w,onChange:T,onConfirm:V}),L="cascade"===z.type,j={fontSize:r.typography.toolbarSize,fontFamily:r.typography.fontFamily,fontWeight:r.typography.toolbarWeight},B=(e,t)=>React.isValidElement(e)?React.createElement(View,{style:S.actW},e):isText(e)?React.createElement(Text,{numberOfLines:1,style:[S.actTxt,j,{color:t}]},e):React.createElement(View,{style:S.actW}),$=c?React.createElement(View,{style:[S.toolbar,{height:r.spacing.toolbarHeight,paddingHorizontal:r.spacing.actionPadding}]},React.createElement(Pressable,{onPress:P,accessibilityRole:"button"},B(m,r.colors.cancel)),null==(q=i)?React.createElement(View,null):React.isValidElement(q)?React.createElement(View,{style:S.ttlW},q):React.createElement(Text,{style:[S.title,j,{color:r.colors.text}],numberOfLines:1},q),React.createElement(Pressable,{onPress:F,accessibilityRole:"button"},B(u,r.colors.confirm)),React.createElement(View,{style:createHairlineView({position:"bottom",color:r.colors.indicator,left:0,right:0})})):null;var q;const _=d*D,G=Math.max(1,Math.floor((D-1)/2)),N=d*G,Y=N,J=H.columns.length>0,K=C??r.colors.mask,Q=J?H.columns.map((e,t)=>{const n=L?`${t}-${H.values.slice(0,t).map(String).join("|")}`:String(t);return React.createElement(PickerColumn,{key:n,columnIndex:t,options:e,value:H.values[t],itemHeight:d,visibleItemCount:D,decelerationRate:b,scrollEventThrottle:y,optionRender:k,getOptionTestID:x,getOptionA11yLabel:v,readOnly:h,swipeDuration:g,onSelect:A,tokens:r})}):null;return React.createElement(View,_extends({},W,{style:[{backgroundColor:r.colors.background,borderRadius:r.radius.container},M],testID:O}),"top"===s&&$,React.createElement(View,{style:[S.body,{height:_}]},React.createElement(View,{style:S.columns,pointerEvents:p?"none":"auto"},R,Q,E,J&&React.createElement(React.Fragment,null,React.createElement(View,{pointerEvents:"none",style:[S.indicator,{top:N,height:d}]},React.createElement(View,{style:createHairlineView({position:"top",color:r.colors.indicator,left:0,right:0})}),React.createElement(View,{style:createHairlineView({position:"bottom",color:r.colors.indicator,left:0,right:0})})),React.createElement(GradientMask,{position:"top",height:Y,color:K,maskType:I}),React.createElement(GradientMask,{position:"bottom",height:Y,color:K,maskType:I}))),p&&React.createElement(View,{style:[S.loading,{backgroundColor:r.colors.loadingMask}]},React.createElement(Loading,null))),"bottom"===s&&$)},S=StyleSheet.create({body:{position:"relative",overflow:"hidden"},columns:{flex:1,flexDirection:"row"},optTxt:{includeFontPadding:!1},indicator:{position:"absolute",left:0,right:0,zIndex:3},toolbar:{flexDirection:"row",alignItems:"center",justifyContent:"space-between"},title:{flex:1,textAlign:"center"},ttlW:{flex:1,alignItems:"center",justifyContent:"center"},actTxt:{minWidth:44,textAlign:"center"},actW:{minWidth:44,alignItems:"center",justifyContent:"center"},loading:{position:"absolute",top:0,left:0,right:0,bottom:0,alignItems:"center",justifyContent:"center"}}),Picker=React.memo(PickerImpl);export default Picker;
@@ -1 +1 @@
1
- function _extends(){return _extends=Object.assign?Object.assign.bind():function(e){for(var t=1;t<arguments.length;t++){var o=arguments[t];for(var n in o)({}).hasOwnProperty.call(o,n)&&(e[n]=o[n])}return e},_extends.apply(null,arguments)}import React,{useCallback,useEffect,useMemo,useRef,useState}from"react";import{Animated,Platform,Pressable,StyleSheet,Text,View,useWindowDimensions}from"react-native";import{SafeAreaView}from"../safe-area-view";import{addPopStateListener,nativeDriverEnabled}from"../../platform";import{useReducedMotion}from"../../hooks/animation";import{createPlatformShadow}from"../../utils/createPlatformShadow";import{isRenderable,isText}from"../../utils/validate";import{Cross}from"react-native-system-icon";import Portal from"../portal/Portal";import{useAriaOverlay,useOverlayStack}from"../../hooks";import{useLocale}from"../config-provider/useLocale";import{useDirection}from"../config-provider/useDirection";import{usePopupTokens}from"./tokens";import{buildRadius,CAPTURE,CONTENT_SELF,EASE_IN,EASE_OUT,hiddenStyle,placementConfig}from"../../hooks/popup/utils";const AnimatedPressable=Animated.createAnimatedComponent(Pressable),PopupImpl=e=>{const t=useLocale(),o=useDirection(),{visible:n,placement:i,position:r,title:l,description:s,tokensOverride:a,overlay:c=!0,overlayStyle:u,overlayAccessibilityLabel:p=t?.vanPopup?.closeOverlay??"Close overlay",closeOnOverlayPress:d,closeOnClickOverlay:m,overlayTestID:f="popup-overlay",closeable:y=!1,closeIcon:g,closeIconPosition:h="top-right",round:b,safeArea:R=!1,safeAreaInsetTop:v=!1,safeAreaInsetBottom:E,lockScroll:C=!0,destroyOnClose:O=!1,duration:P=300,zIndex:I,closeOnBackPress:A=!1,closeOnPopstate:k=!1,children:w,beforeClose:x,onClickOverlay:T,onClose:z,onOpen:W,onOpened:L,onClosed:V,stopPropagation:D=!0,style:F,contentAnimationStyle:H,...M}=e,B=i??r??"center",_=m??d??!0,j="center"===B,N=E??!1,U=usePopupTokens(a),X=useReducedMotion(),Y=useRef({onOpened:L,onClosed:V,onOpen:W,onClose:z,beforeClose:x,onClickOverlay:T});Y.current={onOpened:L,onClosed:V,onOpen:W,onClose:z,beforeClose:x,onClickOverlay:T};const q=useMemo(()=>{const e=createPlatformShadow(U.shadow),{colors:t,spacing:o,typography:n,layout:i}=U;return{popup:{backgroundColor:t.background,padding:o.padding,...e},title:{color:t.title,fontFamily:n.fontFamily,fontSize:n.titleSize,fontWeight:n.titleWeight,marginHorizontal:o.descriptionHorizontal,textAlign:"center"},titleWrap:{marginTop:o.titleTop,marginBottom:o.titleBottom,marginHorizontal:o.descriptionHorizontal,alignItems:"center"},desc:{color:t.description,fontFamily:n.fontFamily,fontSize:n.descriptionSize,lineHeight:n.descriptionLineHeight},descWrap:{marginHorizontal:o.descriptionHorizontal,marginBottom:o.descriptionBottom},closeBase:{minWidth:o.closeIconSize,minHeight:o.closeIconSize,padding:o.closeIconPadding},closeDef:{width:o.closeIconSize,height:o.closeIconSize},side:{width:i.sideWidth,maxWidth:i.maxWidth},center:{minWidth:i.minWidth,maxWidth:i.centerMaxWidth}}},[U]),[G,J]=useState(n),[K,Q]=useState(n),Z=n||K,$=_&&(z||x),ee=useRef(new Animated.Value(0)).current,te=useRef(null),oe=useRef(0),ne=useRef(n),ie=useRef(!1),re="top"===B||"bottom"===B,le="left"===B||"right"===B,se="top"===B||"left"===B?-1:1,ae=useCallback((e,t)=>{oe.current+=1;const o=oe.current;te.current?.stop();const n=t?0:P,i=Animated.timing(ee,{toValue:e?1:0,duration:n,easing:e?EASE_OUT:EASE_IN,useNativeDriver:nativeDriverEnabled,isInteraction:!1});te.current=i,i.start(({finished:t})=>{t&&o===oe.current&&(e?Y.current.onOpened?.():(Q(!1),O&&J(!1),Y.current.onClosed?.()))})},[O,P,ee]);useEffect(()=>{n?(J(!0),Q(!0),ae(!0,X)):ne.current&&ae(!1,X)},[ae,n,X]),useEffect(()=>{n&&!ne.current&&Y.current.onOpen?.(),ne.current=n},[n]),useEffect(()=>()=>{te.current?.stop()},[]);const ce=useCallback(async e=>{if(!ie.current){ie.current=!0;try{if(Y.current.beforeClose){if(!1===await Y.current.beforeClose(e))return}Y.current.onClose?.()}finally{ie.current=!1}}},[]);useEffect(()=>{if(k)return addPopStateListener(()=>{n&&ce("close")})},[k,ce,n]);const ue=useCallback(()=>{Y.current.onClickOverlay?.(),_&&ce("overlay")},[ce,_]),pe=useCallback(()=>ce("close-icon"),[ce]),de=useCallback(()=>ce("close"),[ce]),{zIndex:me}=useOverlayStack({visible:Z,onClose:de,closeOnBack:A,lockScroll:C,zIndex:I,type:"popup"}),{overlayRef:fe,overlayProps:ye}=useAriaOverlay({isOpen:Z,onClose:()=>ce("overlay"),isDismissable:_,overlayProps:{..."android"===Platform.OS?{}:{accessibilityRole:"dialog"},accessibilityLiveRegion:"polite"}}),{onLayout:ge,...Se}=ye,he=useMemo(()=>D?{...Se,onStartShouldSetResponder:CAPTURE}:Se,[Se,D]),be=placementConfig[B],Re=buildRadius(b,B,U.radius.round),{width:ve,height:Ee}=useWindowDimensions(),Ce=le?ve:re?Ee:0,Oe=useMemo(()=>{if(j)return null;const e=[Ce*se,0];return"y"===be.axis?{translateY:ee.interpolate({inputRange:[0,1],outputRange:e})}:{translateX:ee.interpolate({inputRange:[0,1],outputRange:e})}},[be.axis,se,Ce,j,ee]),Pe=useMemo(()=>Oe?[Oe]:[],[Oe]),Ie=useMemo(()=>{const e=H?.transform,t=Array.isArray(e)?[...Pe,...e]:Pe,o={...H,transform:t};return j?{...o,opacity:ee}:null==H?.opacity?{...o,opacity:1}:o},[Pe,H,j,ee]),[Ae,ke]=useState(0),we=useCallback(e=>ke(e.nativeEvent.layout.height),[]),xe=G||n,Te=!Z,ze=isRenderable(l)||isRenderable(s),We=useMemo(()=>{if(!ze)return null;const e=U.spacing.closeIconRight+U.spacing.closeIconSize,t=y&&h.startsWith("top-")?h.endsWith("right")?{paddingRight:e}:{paddingLeft:e}:void 0,o=(e,t,o)=>isRenderable(e)?isText(e)?React.createElement(Text,{style:t},e):React.createElement(View,{style:o},e):null;return React.createElement(View,{style:[S.header,t]},o(l,[S.title,q.title],q.titleWrap),o(s,[S.desc,q.desc],q.descWrap))},[y,h,s,q,ze,l,U.spacing.closeIconRight,U.spacing.closeIconSize]),Le=useMemo(()=>{if(!y)return null;const e=null!=g,t=h.includes("bottom")?{bottom:U.spacing.closeIconTop}:{top:U.spacing.closeIconTop+Ae},n="rtl"===o,i=h.endsWith("left")?n?{right:U.spacing.closeIconRight}:{left:U.spacing.closeIconRight}:n?{left:U.spacing.closeIconRight}:{right:U.spacing.closeIconRight};return React.createElement(Pressable,{style:[S.closeBase,q.closeBase,t,i,!e&&q.closeDef],hitSlop:8,onPress:pe},e?g:React.createElement(Cross,{size:22,fill:U.colors.closeIcon,color:U.colors.closeIcon}))},[g,h,y,q,pe,Ae,U.colors.closeIcon,U.spacing.closeIconRight,U.spacing.closeIconTop]),Ve=ze?React.createElement(React.Fragment,null,We,w):w;if(!xe)return null;const De=me??I,Fe=R?React.createElement(SafeAreaView,null,Ve):React.createElement(React.Fragment,null,v&&React.createElement(SafeAreaView,{edge:"top",onLayout:we,pointerEvents:"none"}),Ve,N&&React.createElement(SafeAreaView,{edge:"bottom",pointerEvents:"none"}));return React.createElement(Portal,null,React.createElement(View,{style:[S.root,De?{zIndex:De}:void 0],pointerEvents:"box-none"},React.createElement(View,{style:[S.ctr,be.container],pointerEvents:Z?"auto":"none",accessibilityViewIsModal:Z,accessibilityLiveRegion:"polite",onAccessibilityEscape:de},c&&Z?React.createElement(AnimatedPressable,_extends({testID:f,style:[S.ovl,{backgroundColor:U.colors.overlay,opacity:ee},u],renderToHardwareTextureAndroid:"android"===Platform.OS,shouldRasterizeIOS:"ios"===Platform.OS,pointerEvents:Z?"auto":"none"},$?{accessibilityRole:"button",accessibilityLabel:p,accessibilityHint:t?.vanPopup?.closeHint??"Double-tap to close"}:{accessible:!1},{onPress:ue})):null,!c&&C&&Z?React.createElement(View,{style:S.lock,pointerEvents:"auto",onStartShouldSetResponder:CAPTURE,onMoveShouldSetResponder:CAPTURE}):null,React.createElement(Animated.View,_extends({ref:fe},he,{onLayout:ge,renderToHardwareTextureAndroid:"android"===Platform.OS,shouldRasterizeIOS:"ios"===Platform.OS,style:[q.popup,j&&q.center,re&&S.popV,le&&q.side,CONTENT_SELF[B],Re,Ie,F,Te&&hiddenStyle]},M),Le,Fe))))},S=StyleSheet.create({root:{...StyleSheet.absoluteFillObject,justifyContent:"center"},ctr:{flex:1},ovl:{...StyleSheet.absoluteFillObject,opacity:0},header:{width:"100%"},title:{includeFontPadding:!1},desc:{includeFontPadding:!1},popV:{alignSelf:"stretch"},closeBase:{position:"absolute",zIndex:999,alignItems:"center",justifyContent:"center"},lock:{...StyleSheet.absoluteFillObject}});export const Popup=React.memo(PopupImpl);export default Popup;
1
+ function _extends(){return _extends=Object.assign?Object.assign.bind():function(e){for(var t=1;t<arguments.length;t++){var o=arguments[t];for(var n in o)({}).hasOwnProperty.call(o,n)&&(e[n]=o[n])}return e},_extends.apply(null,arguments)}import React,{useCallback,useEffect,useMemo,useRef,useState}from"react";import{Animated,Platform,Pressable,StyleSheet,Text,View,useWindowDimensions}from"react-native";import{SafeAreaView}from"../safe-area-view";import{addPopStateListener,nativeDriverEnabled}from"../../platform";import{useReducedMotion}from"../../hooks/animation";import{createPlatformShadow}from"../../utils/createPlatformShadow";import{isRenderable,isText}from"../../utils/validate";import{Cross}from"../../internal/icons";import Portal from"../portal/Portal";import{useAriaOverlay,useOverlayStack}from"../../hooks";import{useLocale}from"../config-provider/useLocale";import{useDirection}from"../config-provider/useDirection";import{usePopupTokens}from"./tokens";import{buildRadius,CAPTURE,CONTENT_SELF,EASE_IN,EASE_OUT,hiddenStyle,placementConfig}from"../../hooks/popup/utils";const AnimatedPressable=Animated.createAnimatedComponent(Pressable),PopupImpl=e=>{const t=useLocale(),o=useDirection(),{visible:n,placement:i,position:r,title:l,description:s,tokensOverride:a,overlay:c=!0,overlayStyle:u,overlayAccessibilityLabel:p=t?.vanPopup?.closeOverlay??"Close overlay",closeOnOverlayPress:d,closeOnClickOverlay:m,overlayTestID:f="popup-overlay",closeable:y=!1,closeIcon:g,closeIconPosition:h="top-right",round:b,safeArea:R=!1,safeAreaInsetTop:v=!1,safeAreaInsetBottom:E,lockScroll:C=!0,destroyOnClose:O=!1,duration:P=300,zIndex:I,closeOnBackPress:A=!1,closeOnPopstate:k=!1,children:w,beforeClose:x,onClickOverlay:T,onClose:z,onOpen:W,onOpened:L,onClosed:V,stopPropagation:D=!0,style:F,contentAnimationStyle:H,...M}=e,B=i??r??"center",_=m??d??!0,j="center"===B,N=E??!1,U=usePopupTokens(a),X=useReducedMotion(),Y=useRef({onOpened:L,onClosed:V,onOpen:W,onClose:z,beforeClose:x,onClickOverlay:T});Y.current={onOpened:L,onClosed:V,onOpen:W,onClose:z,beforeClose:x,onClickOverlay:T};const q=useMemo(()=>{const e=createPlatformShadow(U.shadow),{colors:t,spacing:o,typography:n,layout:i}=U;return{popup:{backgroundColor:t.background,padding:o.padding,...e},title:{color:t.title,fontFamily:n.fontFamily,fontSize:n.titleSize,fontWeight:n.titleWeight,marginHorizontal:o.descriptionHorizontal,textAlign:"center"},titleWrap:{marginTop:o.titleTop,marginBottom:o.titleBottom,marginHorizontal:o.descriptionHorizontal,alignItems:"center"},desc:{color:t.description,fontFamily:n.fontFamily,fontSize:n.descriptionSize,lineHeight:n.descriptionLineHeight},descWrap:{marginHorizontal:o.descriptionHorizontal,marginBottom:o.descriptionBottom},closeBase:{minWidth:o.closeIconSize,minHeight:o.closeIconSize,padding:o.closeIconPadding},closeDef:{width:o.closeIconSize,height:o.closeIconSize},side:{width:i.sideWidth,maxWidth:i.maxWidth},center:{minWidth:i.minWidth,maxWidth:i.centerMaxWidth}}},[U]),[G,J]=useState(n),[K,Q]=useState(n),Z=n||K,$=_&&(z||x),ee=useRef(new Animated.Value(0)).current,te=useRef(null),oe=useRef(0),ne=useRef(n),ie=useRef(!1),re="top"===B||"bottom"===B,le="left"===B||"right"===B,se="top"===B||"left"===B?-1:1,ae=useCallback((e,t)=>{oe.current+=1;const o=oe.current;te.current?.stop();const n=t?0:P,i=Animated.timing(ee,{toValue:e?1:0,duration:n,easing:e?EASE_OUT:EASE_IN,useNativeDriver:nativeDriverEnabled,isInteraction:!1});te.current=i,i.start(({finished:t})=>{t&&o===oe.current&&(e?Y.current.onOpened?.():(Q(!1),O&&J(!1),Y.current.onClosed?.()))})},[O,P,ee]);useEffect(()=>{n?(J(!0),Q(!0),ae(!0,X)):ne.current&&ae(!1,X)},[ae,n,X]),useEffect(()=>{n&&!ne.current&&Y.current.onOpen?.(),ne.current=n},[n]),useEffect(()=>()=>{te.current?.stop()},[]);const ce=useCallback(async e=>{if(!ie.current){ie.current=!0;try{if(Y.current.beforeClose){if(!1===await Y.current.beforeClose(e))return}Y.current.onClose?.()}finally{ie.current=!1}}},[]);useEffect(()=>{if(k)return addPopStateListener(()=>{n&&ce("close")})},[k,ce,n]);const ue=useCallback(()=>{Y.current.onClickOverlay?.(),_&&ce("overlay")},[ce,_]),pe=useCallback(()=>ce("close-icon"),[ce]),de=useCallback(()=>ce("close"),[ce]),{zIndex:me}=useOverlayStack({visible:Z,onClose:de,closeOnBack:A,lockScroll:C,zIndex:I,type:"popup"}),{overlayRef:fe,overlayProps:ye}=useAriaOverlay({isOpen:Z,onClose:()=>ce("overlay"),isDismissable:_,overlayProps:{..."android"===Platform.OS?{}:{accessibilityRole:"dialog"},accessibilityLiveRegion:"polite"}}),{onLayout:ge,...Se}=ye,he=useMemo(()=>D?{...Se,onStartShouldSetResponder:CAPTURE}:Se,[Se,D]),be=placementConfig[B],Re=buildRadius(b,B,U.radius.round),{width:ve,height:Ee}=useWindowDimensions(),Ce=le?ve:re?Ee:0,Oe=useMemo(()=>{if(j)return null;const e=[Ce*se,0];return"y"===be.axis?{translateY:ee.interpolate({inputRange:[0,1],outputRange:e})}:{translateX:ee.interpolate({inputRange:[0,1],outputRange:e})}},[be.axis,se,Ce,j,ee]),Pe=useMemo(()=>Oe?[Oe]:[],[Oe]),Ie=useMemo(()=>{const e=H?.transform,t=Array.isArray(e)?[...Pe,...e]:Pe,o={...H,transform:t};return j?{...o,opacity:ee}:null==H?.opacity?{...o,opacity:1}:o},[Pe,H,j,ee]),[Ae,ke]=useState(0),we=useCallback(e=>ke(e.nativeEvent.layout.height),[]),xe=G||n,Te=!Z,ze=isRenderable(l)||isRenderable(s),We=useMemo(()=>{if(!ze)return null;const e=U.spacing.closeIconRight+U.spacing.closeIconSize,t=y&&h.startsWith("top-")?h.endsWith("right")?{paddingRight:e}:{paddingLeft:e}:void 0,o=(e,t,o)=>isRenderable(e)?isText(e)?React.createElement(Text,{style:t},e):React.createElement(View,{style:o},e):null;return React.createElement(View,{style:[S.header,t]},o(l,[S.title,q.title],q.titleWrap),o(s,[S.desc,q.desc],q.descWrap))},[y,h,s,q,ze,l,U.spacing.closeIconRight,U.spacing.closeIconSize]),Le=useMemo(()=>{if(!y)return null;const e=null!=g,t=h.includes("bottom")?{bottom:U.spacing.closeIconTop}:{top:U.spacing.closeIconTop+Ae},n="rtl"===o,i=h.endsWith("left")?n?{right:U.spacing.closeIconRight}:{left:U.spacing.closeIconRight}:n?{left:U.spacing.closeIconRight}:{right:U.spacing.closeIconRight};return React.createElement(Pressable,{style:[S.closeBase,q.closeBase,t,i,!e&&q.closeDef],hitSlop:8,onPress:pe},e?g:React.createElement(Cross,{size:22,fill:U.colors.closeIcon,color:U.colors.closeIcon}))},[g,h,y,q,pe,Ae,U.colors.closeIcon,U.spacing.closeIconRight,U.spacing.closeIconTop]),Ve=ze?React.createElement(React.Fragment,null,We,w):w;if(!xe)return null;const De=me??I,Fe=R?React.createElement(SafeAreaView,null,Ve):React.createElement(React.Fragment,null,v&&React.createElement(SafeAreaView,{edge:"top",onLayout:we,pointerEvents:"none"}),Ve,N&&React.createElement(SafeAreaView,{edge:"bottom",pointerEvents:"none"}));return React.createElement(Portal,null,React.createElement(View,{style:[S.root,De?{zIndex:De}:void 0],pointerEvents:"box-none"},React.createElement(View,{style:[S.ctr,be.container],pointerEvents:Z?"auto":"none",accessibilityViewIsModal:Z,accessibilityLiveRegion:"polite",onAccessibilityEscape:de},c&&Z?React.createElement(AnimatedPressable,_extends({testID:f,style:[S.ovl,{backgroundColor:U.colors.overlay,opacity:ee},u],renderToHardwareTextureAndroid:"android"===Platform.OS,shouldRasterizeIOS:"ios"===Platform.OS,pointerEvents:Z?"auto":"none"},$?{accessibilityRole:"button",accessibilityLabel:p,accessibilityHint:t?.vanPopup?.closeHint??"Double-tap to close"}:{accessible:!1},{onPress:ue})):null,!c&&C&&Z?React.createElement(View,{style:S.lock,pointerEvents:"auto",onStartShouldSetResponder:CAPTURE,onMoveShouldSetResponder:CAPTURE}):null,React.createElement(Animated.View,_extends({ref:fe},he,{onLayout:ge,renderToHardwareTextureAndroid:"android"===Platform.OS,shouldRasterizeIOS:"ios"===Platform.OS,style:[q.popup,j&&q.center,re&&S.popV,le&&q.side,CONTENT_SELF[B],Re,Ie,F,Te&&hiddenStyle]},M),Le,Fe))))},S=StyleSheet.create({root:{...StyleSheet.absoluteFillObject,justifyContent:"center"},ctr:{flex:1},ovl:{...StyleSheet.absoluteFillObject,opacity:0},header:{width:"100%"},title:{includeFontPadding:!1},desc:{includeFontPadding:!1},popV:{alignSelf:"stretch"},closeBase:{position:"absolute",zIndex:999,alignItems:"center",justifyContent:"center"},lock:{...StyleSheet.absoluteFillObject}});export const Popup=React.memo(PopupImpl);export default Popup;
@@ -1 +1 @@
1
- import React,{useCallback,useEffect,useMemo,useRef,useState}from"react";import{DeviceEventEmitter,NativeEventEmitter,Platform,StyleSheet,View}from"react-native";import{isNumber}from"../../utils";import{PortalContext}from"./PortalContext";const AE="RNSU_PORTAL_ADD",UE="RNSU_PORTAL_UPDATE",RE="RNSU_PORTAL_REMOVE",CE="RNSU_PORTAL_CLEAR",TVE=DeviceEventEmitter||new NativeEventEmitter,IW="web"===Platform.OS,ao=(e,t)=>{"mount"===t.type?e.mount(t.children,t.key):"update"===t.type?e.update(t.key,t.children):"clear"===t.type?e.clear():e.unmount(t.key)},PortalManagerView=React.forwardRef((e,t)=>{const[r,n]=useState([]),a=useRef(0),o=useCallback(e=>{n(t=>{const r=t.findIndex(t=>t.key===e.key);return-1===r?[...t,e]:[...t.slice(0,r),e,...t.slice(r+1)]})},[]),l=useCallback((e,t)=>{const r=t??++a.current;return isNumber(t)&&t>=a.current&&(a.current=t+1),o({key:r,children:e}),r},[o]),c=useCallback((e,t)=>{o({key:e,children:t})},[o]),u=useCallback(e=>{n(t=>t.filter(t=>t.key!==e))},[]),s=useCallback(()=>{n([])},[]);return React.useImperativeHandle(t,()=>({mount:l,update:c,unmount:u,clear:s}),[l,c,u,s]),0===r.length?null:React.createElement(View,{pointerEvents:"box-none",style:S.pl,collapsable:!1},r.map(e=>React.createElement(View,{key:e.key,pointerEvents:"box-none",collapsable:!1,style:S.pe},e.children)))});let ah=0,nh=1,ngk=1e4;const hr=new Set,pickActiveHost=()=>{const e=hr.values().next();return e.done?0:e.value},gm={mount:(e,t)=>{"undefined"!=typeof __DEV__&&__DEV__&&0===ah&&console.warn("[Portal] Please mount <PortalHost> or <ConfigProvider> at the root to enable imperative APIs.");const r=t??ngk++;return isNumber(t)&&t>=ngk&&(ngk=t+1),TVE.emit(AE,{key:r,children:e}),r},update:(e,t)=>{TVE.emit(UE,{key:e,children:t})},unmount:e=>{TVE.emit(RE,{key:e})}},PortalHostImpl=({children:e})=>{const t=useRef(nh++),r=useRef(null),n=useRef([]),a=useRef(1),o=useCallback(e=>{const t=r.current;t?ao(t,e):n.current.push(e)},[]),l=useMemo(()=>({mount:(e,t)=>{const r=t??a.current++;return isNumber(t)&&t>=a.current&&(a.current=t+1),o({type:"mount",key:r,children:e}),r},update:(e,t)=>{o({type:"update",key:e,children:t})},unmount:e=>{o({type:"unmount",key:e})}}),[o]),c=useCallback(e=>{if(r.current=e,e){if(n.current.length>0){n.current.splice(0,n.current.length).forEach(t=>ao(e,t))}0===ah||ah===t.current?ah=t.current:"undefined"!=typeof __DEV__&&__DEV__&&console.warn("[PortalHost] Multiple PortalHost instances detected. Imperative APIs will only use the first mounted host.")}},[]);return useEffect(()=>(hr.add(t.current),0===ah&&(ah=t.current),()=>{hr.delete(t.current),ah===t.current&&(ah=pickActiveHost(),n.current=[],0===ah&&portalStore.clear())}),[]),useEffect(()=>{const e=TVE.addListener(AE,({key:e,children:r})=>{ah===t.current&&o({type:"mount",key:e,children:r})}),r=TVE.addListener(UE,({key:e,children:r})=>{ah===t.current&&o({type:"update",key:e,children:r})}),a=TVE.addListener(RE,({key:e})=>{ah===t.current&&o({type:"unmount",key:e})}),l=TVE.addListener(CE,()=>{ah===t.current&&(n.current=[],o({type:"clear"}))});return()=>{e.remove(),r.remove(),a.remove(),l.remove()}},[o]),React.createElement(PortalContext.Provider,{value:l},React.createElement(View,{style:S.h,collapsable:!1},React.createElement(View,{style:S.r,collapsable:!1,pointerEvents:"box-none"},e),React.createElement(PortalManagerView,{ref:c})))};export const PortalHost=React.memo(PortalHostImpl);PortalHost.displayName="PortalHost";const S=StyleSheet.create({h:{position:"relative",flex:1},r:{flex:1},pl:IW?{position:"fixed",top:0,left:0,right:0,bottom:0}:{...StyleSheet.absoluteFillObject},pe:{...StyleSheet.absoluteFillObject}});export const portalManager=gm;export const portalStore={clear:()=>{TVE.emit(CE)},hasHosts:()=>0!==ah};
1
+ import React,{useCallback,useEffect,useMemo,useRef,useState}from"react";import{Platform,StyleSheet,View}from"react-native";import{isNumber}from"../../utils";import{PortalContext}from"./PortalContext";const IW="web"===Platform.OS,createPortalEmitter=()=>{const e=new Map;return{emit(t,r){e.get(t)?.forEach(e=>e(r))},addListener(t,r){const n=e.get(t);return n?n.add(r):e.set(t,new Set([r])),{remove:()=>{const n=e.get(t);n&&(n.delete(r),n.size||e.delete(t))}}}}},portalEmitter=createPortalEmitter(),ao=(e,t)=>{"mount"===t.type?e.mount(t.children,t.key):"update"===t.type?e.update(t.key,t.children):"clear"===t.type?e.clear():e.unmount(t.key)},PortalManagerView=React.forwardRef((e,t)=>{const[r,n]=useState([]),a=useRef(0),o=useCallback(e=>{n(t=>{const r=t.findIndex(t=>t.key===e.key);return-1===r?[...t,e]:[...t.slice(0,r),e,...t.slice(r+1)]})},[]),l=useCallback((e,t)=>{const r=t??++a.current;return isNumber(t)&&t>=a.current&&(a.current=t+1),o({key:r,children:e}),r},[o]),c=useCallback((e,t)=>{o({key:e,children:t})},[o]),u=useCallback(e=>{n(t=>t.filter(t=>t.key!==e))},[]),s=useCallback(()=>{n([])},[]);return React.useImperativeHandle(t,()=>({mount:l,update:c,unmount:u,clear:s}),[l,c,u,s]),0===r.length?null:React.createElement(View,{pointerEvents:"box-none",style:S.pl,collapsable:!1},r.map(e=>React.createElement(View,{key:e.key,pointerEvents:"box-none",collapsable:!1,style:S.pe},e.children)))});let ah=0,nh=1,ngk=1e4;const hr=new Set,pickActiveHost=()=>{const e=hr.values().next();return e.done?0:e.value},gm={mount:(e,t)=>{"undefined"!=typeof __DEV__&&__DEV__&&0===ah&&console.warn("[Portal] Please mount <PortalHost> or <ConfigProvider> at the root to enable imperative APIs.");const r=t??ngk++;return isNumber(t)&&t>=ngk&&(ngk=t+1),portalEmitter.emit("mount",{key:r,children:e}),r},update:(e,t)=>{portalEmitter.emit("update",{key:e,children:t})},unmount:e=>{portalEmitter.emit("unmount",{key:e})}},PortalHostImpl=({children:e})=>{const t=useRef(nh++),r=useRef(null),n=useRef([]),a=useRef(1),o=useCallback(e=>{const t=r.current;t?ao(t,e):n.current.push(e)},[]),l=useMemo(()=>({mount:(e,t)=>{const r=t??a.current++;return isNumber(t)&&t>=a.current&&(a.current=t+1),o({type:"mount",key:r,children:e}),r},update:(e,t)=>{o({type:"update",key:e,children:t})},unmount:e=>{o({type:"unmount",key:e})}}),[o]),c=useCallback(e=>{if(r.current=e,e){if(n.current.length>0){n.current.splice(0,n.current.length).forEach(t=>ao(e,t))}0===ah||ah===t.current?ah=t.current:"undefined"!=typeof __DEV__&&__DEV__&&console.warn("[PortalHost] Multiple PortalHost instances detected. Imperative APIs will only use the first mounted host.")}},[]);return useEffect(()=>(hr.add(t.current),0===ah&&(ah=t.current),()=>{hr.delete(t.current),ah===t.current&&(ah=pickActiveHost(),n.current=[],0===ah&&portalStore.clear())}),[]),useEffect(()=>{const e=portalEmitter.addListener("mount",({key:e,children:r})=>{ah===t.current&&o({type:"mount",key:e,children:r})}),r=portalEmitter.addListener("update",({key:e,children:r})=>{ah===t.current&&o({type:"update",key:e,children:r})}),a=portalEmitter.addListener("unmount",({key:e})=>{ah===t.current&&o({type:"unmount",key:e})}),l=portalEmitter.addListener("clear",()=>{ah===t.current&&(n.current=[],o({type:"clear"}))});return()=>{e.remove(),r.remove(),a.remove(),l.remove()}},[o]),React.createElement(PortalContext.Provider,{value:l},React.createElement(View,{style:S.h,collapsable:!1},React.createElement(View,{style:S.r,collapsable:!1,pointerEvents:"box-none"},e),React.createElement(PortalManagerView,{ref:c})))};export const PortalHost=React.memo(PortalHostImpl);PortalHost.displayName="PortalHost";const S=StyleSheet.create({h:{position:"relative",flex:1},r:{flex:1},pl:IW?{position:"fixed",top:0,left:0,right:0,bottom:0}:{...StyleSheet.absoluteFillObject},pe:{...StyleSheet.absoluteFillObject}});export const portalManager=gm;export const portalStore={clear:()=>{portalEmitter.emit("clear",void 0)},hasHosts:()=>0!==ah};
@@ -1 +1 @@
1
- function _extends(){return _extends=Object.assign?Object.assign.bind():function(e){for(var t=1;t<arguments.length;t++){var a=arguments[t];for(var r in a)({}).hasOwnProperty.call(a,r)&&(e[r]=a[r])}return e},_extends.apply(null,arguments)}import React,{useCallback,useImperativeHandle,useRef}from"react";import{Pressable,StyleSheet,Text,View}from"react-native";import{Search as SearchIcon}from"react-native-system-icon";import{useAriaPress,useControllableValue}from"../../hooks";import{isText}from"../../utils/validate";import{useLocale}from"../config-provider/useLocale";import Field from"../field";import{useSearchTokens}from"./tokens";const SearchComponent=(e,t)=>{const a=useLocale(),{tokensOverride:r,label:n,action:c,actionText:o,showAction:i=!1,shape:l,background:s,style:u,fieldStyle:d,fieldContentStyle:p,clearTrigger:g,clearable:f=!0,leftIcon:m,rightIcon:h,errorMessage:y,onSearch:b,onCancel:R,onChangeText:x,onSubmitEditing:V,returnKeyType:w,inputStyle:C,align:T,inputAlign:k,...E}=e,v=useSearchTokens(r),I=l??v.defaults.shape,[P,z]=useControllableValue(e,{defaultValue:""}),H=P??"",L=T??k,A=useRef(x),F=useRef(R),G=useRef(b),_=useRef(V),O=useRef(H);A.current=x,F.current=R,G.current=b,_.current=V,O.current=H;const W=useCallback(e=>{z(e),A.current?.(e)},[z]),j=useCallback(()=>{W(""),F.current?.()},[W]),D=useCallback(e=>{G.current?.(O.current),_.current?.(e)},[]),K=s??v.colors.background,M=m??React.createElement(SearchIcon,{size:v.icon.size,fill:v.colors.icon,color:v.colors.icon}),q=g??v.defaults.clearTrigger,B=w??"search",N=!!c||i,J=React.isValidElement(o),Q=N&&!c&&!J,U="round"===I?v.radius.round:v.radius.square,X=useRef(null);useImperativeHandle(t,()=>({focus:()=>X.current?.focus(),blur:()=>X.current?.blur(),clear:()=>W("")}),[W]);const Y=useAriaPress({disabled:!Q,onPress:j,extraProps:{accessibilityRole:"button",testID:"rnsu-search-action"}}),Z=[S.ctr,{paddingHorizontal:v.spacing.paddingHorizontal,paddingVertical:v.spacing.paddingVertical,backgroundColor:K},u],$=[S.cnt,{borderRadius:U,paddingHorizontal:v.spacing.contentPaddingHorizontal,paddingVertical:v.spacing.contentPaddingVertical,backgroundColor:v.colors.contentBackground}],ee=n?isText(n)?React.createElement(Text,{style:{marginRight:v.spacing.labelGap,color:v.colors.label,fontSize:v.typography.label,fontWeight:v.typography.labelWeight}},n):React.createElement(View,{style:{marginRight:v.spacing.labelGap}},n):null,te=c?React.createElement(View,{style:[S.act,{marginLeft:v.spacing.actionGap}]},c):N?J?React.createElement(View,{style:[S.act,{marginLeft:v.spacing.actionGap}]},o):React.createElement(Pressable,_extends({style:[S.act,{marginLeft:v.spacing.actionGap,opacity:Y.states.pressed?v.opacity.actionPressed:1}]},Y.interactionProps),React.createElement(Text,{style:{color:v.colors.action,fontSize:v.typography.action,fontWeight:v.typography.actionWeight}},o??a.cancel)):null;return React.createElement(View,{style:Z},React.createElement(View,{style:$},ee,React.createElement(View,{style:S.field},React.createElement(Field,_extends({ref:X,type:"search",value:H,onChangeText:W,clearable:f,clearTrigger:q,leftIcon:M,rightIcon:h,center:!y,errorMessage:y,inputAlign:L,border:!1,style:[{paddingHorizontal:v.spacing.none,paddingVertical:v.spacing.none},d],contentStyle:[{paddingVertical:v.spacing.none},p],inputStyle:[{paddingVertical:v.spacing.none},C],onSubmitEditing:D,returnKeyType:B},E)))),te)},SearchForwardRef=React.forwardRef(SearchComponent);SearchForwardRef.displayName="Search";export const Search=React.memo(SearchForwardRef);const S=StyleSheet.create({ctr:{flexDirection:"row",alignItems:"center"},cnt:{flex:1,flexDirection:"row",alignItems:"center"},field:{flex:1},act:{justifyContent:"center"}});export default Search;
1
+ function _extends(){return _extends=Object.assign?Object.assign.bind():function(e){for(var t=1;t<arguments.length;t++){var n=arguments[t];for(var a in n)({}).hasOwnProperty.call(n,a)&&(e[a]=n[a])}return e},_extends.apply(null,arguments)}import React,{useCallback,useImperativeHandle,useMemo,useRef}from"react";import{Pressable,StyleSheet,Text,View}from"react-native";import{Search as SearchIcon}from"../../internal/icons";import{useAriaPress,useControllableValue}from"../../hooks";import{isText}from"../../utils/validate";import{useLocale}from"../config-provider/useLocale";import Field from"../field";import{useSearchTokens}from"./tokens";const SearchComponent=(e,t)=>{const n=useLocale(),{tokensOverride:a,label:r,action:c,actionText:o,showAction:i=!1,shape:l,background:s,style:u,fieldStyle:g,fieldContentStyle:d,clearTrigger:p,clearable:f=!0,leftIcon:m,rightIcon:h,errorMessage:y,onSearch:b,onCancel:R,onChangeText:x,onSubmitEditing:V,returnKeyType:k,inputStyle:w,align:C,inputAlign:T,...E}=e,P=useSearchTokens(a),z=l??P.defaults.shape,[I,v]=useControllableValue(e,{defaultValue:""}),M=I??"",H=C??T,L=useRef(x),A=useRef(R),F=useRef(b),G=useRef(V),_=useRef(M);L.current=x,A.current=R,F.current=b,G.current=V,_.current=M;const O=useCallback(e=>{v(e),L.current?.(e)},[v]),W=useCallback(()=>{O(""),A.current?.()},[O]),j=useCallback(e=>{F.current?.(_.current),G.current?.(e)},[]),D=s??P.colors.background,B=useMemo(()=>m??React.createElement(SearchIcon,{size:P.icon.size,fill:P.colors.icon,color:P.colors.icon}),[m,P.colors.icon,P.icon.size]),K=p??P.defaults.clearTrigger,q=k??"search",N=!!c||i,J=React.isValidElement(o),Q=N&&!c&&!J,U="round"===z?P.radius.round:P.radius.square,X=useRef(null);useImperativeHandle(t,()=>({focus:()=>X.current?.focus(),blur:()=>X.current?.blur(),clear:()=>O("")}),[O]);const Y=useMemo(()=>({accessibilityRole:"button",testID:"rnsu-search-action"}),[]),Z=useAriaPress({disabled:!Q,onPress:W,extraProps:Y}),$=useMemo(()=>[S.ctr,{paddingHorizontal:P.spacing.paddingHorizontal,paddingVertical:P.spacing.paddingVertical,backgroundColor:D},u],[u,D,P.spacing.paddingHorizontal,P.spacing.paddingVertical]),ee=useMemo(()=>[S.cnt,{borderRadius:U,paddingHorizontal:P.spacing.contentPaddingHorizontal,paddingVertical:P.spacing.contentPaddingVertical,backgroundColor:P.colors.contentBackground}],[U,P.colors.contentBackground,P.spacing.contentPaddingHorizontal,P.spacing.contentPaddingVertical]),te=useMemo(()=>[{paddingHorizontal:P.spacing.none,paddingVertical:P.spacing.none},g],[g,P.spacing.none]),ne=useMemo(()=>[{paddingVertical:P.spacing.none},d],[d,P.spacing.none]),ae=useMemo(()=>[{paddingVertical:P.spacing.none},w],[w,P.spacing.none]),re=r?isText(r)?React.createElement(Text,{style:{marginRight:P.spacing.labelGap,color:P.colors.label,fontSize:P.typography.label,fontWeight:P.typography.labelWeight}},r):React.createElement(View,{style:{marginRight:P.spacing.labelGap}},r):null,ce=c?React.createElement(View,{style:[S.act,{marginLeft:P.spacing.actionGap}]},c):N?J?React.createElement(View,{style:[S.act,{marginLeft:P.spacing.actionGap}]},o):React.createElement(Pressable,_extends({style:[S.act,{marginLeft:P.spacing.actionGap,opacity:Z.states.pressed?P.opacity.actionPressed:1}]},Z.interactionProps),React.createElement(Text,{style:{color:P.colors.action,fontSize:P.typography.action,fontWeight:P.typography.actionWeight}},o??n.cancel)):null;return React.createElement(View,{style:$},React.createElement(View,{style:ee},re,React.createElement(View,{style:S.field},React.createElement(Field,_extends({ref:X,type:"search",value:M,onChangeText:O,clearable:f,clearTrigger:K,leftIcon:B,rightIcon:h,center:!y,errorMessage:y,inputAlign:H,border:!1,style:te,contentStyle:ne,inputStyle:ae,onSubmitEditing:j,returnKeyType:q},E)))),ce)},SearchForwardRef=React.forwardRef(SearchComponent);SearchForwardRef.displayName="Search";export const Search=React.memo(SearchForwardRef);const S=StyleSheet.create({ctr:{flexDirection:"row",alignItems:"center"},cnt:{flex:1,flexDirection:"row",alignItems:"center"},field:{flex:1},act:{justifyContent:"center"}});export default Search;
@@ -1 +1 @@
1
- function _extends(){return _extends=Object.assign?Object.assign.bind():function(e){for(var t=1;t<arguments.length;t++){var o=arguments[t];for(var n in o)({}).hasOwnProperty.call(o,n)&&(e[n]=o[n])}return e},_extends.apply(null,arguments)}import React,{useCallback,useMemo,useRef}from"react";import{Platform,Pressable,StyleSheet,View}from"react-native";import{useAriaPress}from"../../hooks";import{createHairlineView}from"../../utils/hairline";import{isFiniteNumber,isText,isValidNode}from"../../utils/validate";import{renderTextOrNode}from"../../utils";import Popup from"../popup";import{useLocale}from"../config-provider/useLocale";import{useShareSheetTokens}from"./tokens";const no=e=>e&&0!==e.length?Array.isArray(e[0])?e:[e]:[],ShareSheetOptionItem=React.memo(({option:e,index:t,columns:o,tokens:n,onSelect:i})=>{const r={width:100/o+"%"},a={width:n.sizing.icon,height:n.sizing.icon},c=useAriaPress({onPress:()=>i(e,t),extraProps:{accessibilityRole:"web"===Platform.OS?"menuitem":"button",accessibilityLabel:isText(e.name)?String(e.name):void 0,testID:`rv-share-sheet-item-${t}`}}),s=isText(e.icon)?renderTextOrNode(e.icon,[]):e.icon;return React.createElement(Pressable,_extends({style:[S.o,r]},c.interactionProps),React.createElement(View,{style:[S.ic,a,{marginHorizontal:n.spacing.iconMarginHorizontal}]},s),isValidNode(e.name)&&renderTextOrNode(e.name,[S.ot,{color:n.colors.option,fontFamily:n.typography.fontFamily,fontSize:n.typography.option,paddingHorizontal:n.spacing.optionTextPaddingHorizontal}]),isValidNode(e.description)&&(isText(e.description)?renderTextOrNode(e.description,[S.od,{color:n.colors.optionDesc,fontFamily:n.typography.fontFamily,marginTop:n.spacing.gap,fontSize:n.typography.optionDesc,paddingHorizontal:n.spacing.optionDescPaddingHorizontal}]):React.createElement(View,{style:[S.odn,{marginTop:n.spacing.gap,paddingHorizontal:n.spacing.optionDescPaddingHorizontal}]},e.description)))}),ShareSheetCancel=React.memo(({cancelText:e,tokens:t,onPress:o})=>{const n=useAriaPress({onPress:o,extraProps:{testID:"rv-share-sheet-cancel",accessibilityRole:"button"}});return React.createElement(View,{style:{backgroundColor:t.colors.divider}},React.createElement(Pressable,_extends({style:[S.c,{backgroundColor:t.colors.background,paddingVertical:t.spacing.cancelPaddingVertical,marginTop:t.spacing.cancelMarginTop}]},n.interactionProps),renderTextOrNode(e,[S.ct,{color:t.colors.option,fontFamily:t.typography.fontFamily,fontSize:t.typography.cancel}])))}),ShareSheetImpl=e=>{const t=useLocale(),{visible:o,title:n,description:i,cancelText:r=t?.vanShareSheet?.cancel??t?.cancel??"Cancel",options:a,columns:c=4,closeOnSelect:s=!0,safeAreaInsetBottom:l=!0,children:p,tokensOverride:d,onSelect:g,onCancel:m,onClose:h,lockScroll:y=!0,overlay:u=!0,round:f=!0,style:T,placement:x,position:P,...b}=e,R=useShareSheetTokens(d),k=no(a),w=isFiniteNumber(c)?Math.max(1,Math.floor(c)):4,V=isValidNode(n),z=isValidNode(i),v=isValidNode(r),N=useRef(m),C=useRef(h),E=useRef(g);N.current=m,C.current=h,E.current=g;const O=useCallback(e=>{e&&N.current?.(),C.current?.()},[]),I=useCallback((e,t)=>{E.current?.(e,t),e.onPress?.(e),s&&O()},[O,s]),M=useCallback(()=>O(!0),[O]),F=[S.w,{backgroundColor:R.colors.background}],H=[S.or,{paddingLeft:R.spacing.gap,paddingVertical:12}],A=useMemo(()=>{if(!k.length)return null;let e=0;return k.map((t,o)=>React.createElement(View,{key:o},o>0&&React.createElement(View,{style:createHairlineView({position:"top",color:R.colors.border,left:R.spacing.horizontal,right:R.spacing.horizontal})}),React.createElement(View,{style:H},t.map(t=>{const o=e++;return React.createElement(ShareSheetOptionItem,{key:t.key??o,option:t,index:o,columns:w,tokens:R,onSelect:I})}))))},[k,H,I,w,R]),D=useMemo(()=>V||z?React.createElement(View,{style:[S.h,{paddingTop:R.spacing.headerPaddingTop,paddingHorizontal:R.spacing.headerPaddingHorizontal,paddingBottom:R.spacing.headerPaddingBottom}]},V&&(isText(n)?renderTextOrNode(n,[S.t,{color:R.colors.title,fontFamily:R.typography.fontFamily,fontSize:R.typography.title,marginTop:R.spacing.titleMarginTop}]):React.createElement(View,{style:[S.n,{marginTop:R.spacing.nodeMarginTop}]},n)),z&&(isText(i)?renderTextOrNode(i,[S.d,{color:R.colors.description,fontFamily:R.typography.fontFamily,fontSize:R.typography.description,marginTop:R.spacing.descriptionMarginTop}]):React.createElement(View,{style:[S.n,{marginTop:R.spacing.nodeMarginTop}]},i))):null,[i,z,V,n,R.colors.description,R.colors.title,R.spacing.descriptionMarginTop,R.spacing.headerPaddingBottom,R.spacing.headerPaddingHorizontal,R.spacing.headerPaddingTop,R.spacing.nodeMarginTop,R.spacing.titleMarginTop,R.typography.description,R.typography.fontFamily,R.typography.title]),_=[{padding:R.spacing.popupPadding},T];return React.createElement(Popup,_extends({},b,{visible:o,placement:"bottom",round:f,safeAreaInsetBottom:l,overlay:u,lockScroll:y,onClose:M,style:_}),React.createElement(View,{accessibilityRole:"menu",style:F},D,A,p,v&&React.createElement(ShareSheetCancel,{cancelText:r,tokens:R,onPress:M})))},S=StyleSheet.create({w:{width:"100%"},h:{alignItems:"center"},t:{fontWeight:"normal",textAlign:"center"},d:{textAlign:"center"},n:{alignItems:"center"},or:{flexDirection:"row",flexWrap:"wrap"},o:{alignItems:"center",justifyContent:"center"},ic:{alignItems:"center",justifyContent:"center"},ot:{fontWeight:"500",textAlign:"center"},od:{textAlign:"center"},odn:{alignItems:"center"},c:{alignItems:"center"},ct:{fontWeight:"500"}}),ShareSheet=React.memo(ShareSheetImpl);ShareSheet.displayName="ShareSheet";export default ShareSheet;
1
+ function _extends(){return _extends=Object.assign?Object.assign.bind():function(e){for(var t=1;t<arguments.length;t++){var o=arguments[t];for(var n in o)({}).hasOwnProperty.call(o,n)&&(e[n]=o[n])}return e},_extends.apply(null,arguments)}import React,{useCallback,useMemo,useRef}from"react";import{Platform,Pressable,StyleSheet,View}from"react-native";import{useAriaPress}from"../../hooks";import{createHairlineView}from"../../utils/hairline";import{isFiniteNumber,isText,isValidNode}from"../../utils/validate";import{renderTextOrNode}from"../../utils";import Popup from"../popup";import{useLocale}from"../config-provider/useLocale";import{useShareSheetTokens}from"./tokens";const no=e=>e&&0!==e.length?Array.isArray(e[0])?e:[e]:[],ShareSheetOptionItem=React.memo(({option:e,index:t,columns:o,tokens:n,onSelect:i})=>{const r={width:100/o+"%"},a={width:n.sizing.icon,height:n.sizing.icon},c=useAriaPress({onPress:()=>i(e,t),extraProps:{accessibilityRole:"web"===Platform.OS?"menuitem":"button",accessibilityLabel:isText(e.name)?String(e.name):void 0,testID:`rv-share-sheet-item-${t}`}}),s=isText(e.icon)?renderTextOrNode(e.icon,[]):e.icon;return React.createElement(Pressable,_extends({style:[S.o,r]},c.interactionProps),React.createElement(View,{style:[S.ic,a,{marginHorizontal:n.spacing.iconMarginHorizontal}]},s),isValidNode(e.name)&&renderTextOrNode(e.name,[S.ot,{color:n.colors.option,fontFamily:n.typography.fontFamily,fontSize:n.typography.option,paddingHorizontal:n.spacing.optionTextPaddingHorizontal}]),isValidNode(e.description)&&(isText(e.description)?renderTextOrNode(e.description,[S.od,{color:n.colors.optionDesc,fontFamily:n.typography.fontFamily,marginTop:n.spacing.gap,fontSize:n.typography.optionDesc,paddingHorizontal:n.spacing.optionDescPaddingHorizontal}]):React.createElement(View,{style:[S.odn,{marginTop:n.spacing.gap,paddingHorizontal:n.spacing.optionDescPaddingHorizontal}]},e.description)))}),ShareSheetCancel=React.memo(({cancelText:e,tokens:t,onPress:o})=>{const n=useAriaPress({onPress:o,extraProps:{testID:"rv-share-sheet-cancel",accessibilityRole:"button"}});return React.createElement(View,{style:{backgroundColor:t.colors.divider}},React.createElement(Pressable,_extends({style:[S.c,{backgroundColor:t.colors.background,paddingVertical:t.spacing.cancelPaddingVertical,marginTop:t.spacing.cancelMarginTop}]},n.interactionProps),renderTextOrNode(e,[S.ct,{color:t.colors.option,fontFamily:t.typography.fontFamily,fontSize:t.typography.cancel}])))}),ShareSheetImpl=e=>{const t=useLocale(),{visible:o,title:n,description:i,cancelText:r=t?.vanShareSheet?.cancel??t?.cancel??"Cancel",options:a,columns:c=4,closeOnSelect:s=!0,safeAreaInsetBottom:l=!0,children:p,tokensOverride:d,onSelect:g,onCancel:m,onClose:h,lockScroll:u=!0,overlay:y=!0,round:f=!0,style:T,placement:x,position:P,...b}=e,R=useShareSheetTokens(d),k=no(a),w=isFiniteNumber(c)?Math.max(1,Math.floor(c)):4,V=isValidNode(n),z=isValidNode(i),M=isValidNode(r),v=useRef(m),N=useRef(h),C=useRef(g);v.current=m,N.current=h,C.current=g;const E=useCallback(e=>{e&&v.current?.(),N.current?.()},[]),O=useCallback((e,t)=>{C.current?.(e,t),e.onPress?.(e),s&&E()},[E,s]),I=useCallback(()=>E(!0),[E]),F=useMemo(()=>[S.w,{backgroundColor:R.colors.background}],[R.colors.background]),H=useMemo(()=>[S.or,{paddingLeft:R.spacing.gap,paddingVertical:12}],[R.spacing.gap]),A=useMemo(()=>{if(!k.length)return null;let e=0;return k.map((t,o)=>React.createElement(View,{key:o},o>0&&React.createElement(View,{style:createHairlineView({position:"top",color:R.colors.border,left:R.spacing.horizontal,right:R.spacing.horizontal})}),React.createElement(View,{style:H},t.map(t=>{const o=e++;return React.createElement(ShareSheetOptionItem,{key:t.key??o,option:t,index:o,columns:w,tokens:R,onSelect:O})}))))},[k,H,O,w,R]),D=useMemo(()=>V||z?React.createElement(View,{style:[S.h,{paddingTop:R.spacing.headerPaddingTop,paddingHorizontal:R.spacing.headerPaddingHorizontal,paddingBottom:R.spacing.headerPaddingBottom}]},V&&(isText(n)?renderTextOrNode(n,[S.t,{color:R.colors.title,fontFamily:R.typography.fontFamily,fontSize:R.typography.title,marginTop:R.spacing.titleMarginTop}]):React.createElement(View,{style:[S.n,{marginTop:R.spacing.nodeMarginTop}]},n)),z&&(isText(i)?renderTextOrNode(i,[S.d,{color:R.colors.description,fontFamily:R.typography.fontFamily,fontSize:R.typography.description,marginTop:R.spacing.descriptionMarginTop}]):React.createElement(View,{style:[S.n,{marginTop:R.spacing.nodeMarginTop}]},i))):null,[i,z,V,n,R.colors.description,R.colors.title,R.spacing.descriptionMarginTop,R.spacing.headerPaddingBottom,R.spacing.headerPaddingHorizontal,R.spacing.headerPaddingTop,R.spacing.nodeMarginTop,R.spacing.titleMarginTop,R.typography.description,R.typography.fontFamily,R.typography.title]),_=useMemo(()=>[{padding:R.spacing.popupPadding},T],[T,R.spacing.popupPadding]);return React.createElement(Popup,_extends({},b,{visible:o,placement:"bottom",round:f,safeAreaInsetBottom:l,overlay:y,lockScroll:u,onClose:I,style:_}),React.createElement(View,{accessibilityRole:"menu",style:F},D,A,p,M&&React.createElement(ShareSheetCancel,{cancelText:r,tokens:R,onPress:I})))},S=StyleSheet.create({w:{width:"100%"},h:{alignItems:"center"},t:{fontWeight:"normal",textAlign:"center"},d:{textAlign:"center"},n:{alignItems:"center"},or:{flexDirection:"row",flexWrap:"wrap"},o:{alignItems:"center",justifyContent:"center"},ic:{alignItems:"center",justifyContent:"center"},ot:{fontWeight:"500",textAlign:"center"},od:{textAlign:"center"},odn:{alignItems:"center"},c:{alignItems:"center"},ct:{fontWeight:"500"}}),ShareSheet=React.memo(ShareSheetImpl);ShareSheet.displayName="ShareSheet";export default ShareSheet;
@@ -1 +1 @@
1
- function _extends(){return _extends=Object.assign?Object.assign.bind():function(e){for(var t=1;t<arguments.length;t++){var o=arguments[t];for(var r in o)({}).hasOwnProperty.call(o,r)&&(e[r]=o[r])}return e},_extends.apply(null,arguments)}import React from"react";import{Pressable,View}from"react-native";import{Close}from"react-native-system-icon";import{createHairlineView,isFunction,renderTextOrNode}from"../../utils";import{isRenderable}from"../../utils/validate";import{useDirection}from"../config-provider/useDirection";import{useTagTokens}from"./tokens";const TagImpl=e=>{const{tokensOverride:t,children:o,type:r,size:i,plain:a,round:n,mark:s,color:l,textColor:d,show:c,closeable:u,closeIcon:p,onClose:g,onPress:m,textStyle:f,style:b,...R}=e,y=useTagTokens(t),h=useDirection(),k=r??y.defaults.type,T=i??y.defaults.size,z=a??y.defaults.plain,x=n??y.defaults.round,L=s??y.defaults.mark;if(!(c??y.defaults.show))return null;const v=y.colors.toneMap[k]??y.colors.toneMap.default,w=y.sizing.sizes[T],P=z?y.colors.plainBackground:l??v.background,H=d??(z?l??v.background:v.text),O=z?l??v.background:"transparent",S=x?y.radii.round:w.borderRadius,V=L?"rtl"===h?{borderTopRightRadius:y.radii.markLeading,borderBottomRightRadius:y.radii.markLeading,borderTopLeftRadius:y.radii.round,borderBottomLeftRadius:y.radii.round}:{borderTopLeftRadius:y.radii.markLeading,borderBottomLeftRadius:y.radii.markLeading,borderTopRightRadius:y.radii.round,borderBottomRightRadius:y.radii.round}:null,B=L?y.radii.round:S,E=[y.layout.container,{backgroundColor:P,paddingHorizontal:w.paddingHorizontal,paddingVertical:w.paddingVertical,borderRadius:S},V,b],C=isRenderable(o)?renderTextOrNode(o,[{color:H,fontSize:w.fontSize,lineHeight:w.lineHeight,fontFamily:y.typography.fontFamily,fontWeight:y.typography.fontWeight},f].filter(Boolean)):null,F=u&&React.createElement(Pressable,{accessibilityRole:"button",hitSlop:y.spacing.closeHitSlop,style:[y.layout.close,{marginLeft:y.spacing.closeGap}],onPress:e=>{e.stopPropagation?.(),g?.()}},isFunction(p)?p(H,y.sizing.closeIconSize):p??React.createElement(Close,{color:H,size:y.sizing.closeIconSize})),I=z?React.createElement(View,{style:createHairlineView({position:"all",color:O,borderRadius:B})}):null,_=React.createElement(React.Fragment,null,C,F,I);return m?React.createElement(Pressable,_extends({accessibilityRole:"button",onPress:m,style:({pressed:e})=>[E,e&&{opacity:y.defaults.pressedOpacity}]},R),_):React.createElement(View,_extends({style:E},R),_)};export const Tag=React.memo(TagImpl);Tag.displayName="Tag";
1
+ function _extends(){return _extends=Object.assign?Object.assign.bind():function(e){for(var t=1;t<arguments.length;t++){var o=arguments[t];for(var r in o)({}).hasOwnProperty.call(o,r)&&(e[r]=o[r])}return e},_extends.apply(null,arguments)}import React from"react";import{Pressable,View}from"react-native";import{Close}from"../../internal/icons";import{createHairlineView,isFunction,renderTextOrNode}from"../../utils";import{isRenderable}from"../../utils/validate";import{useDirection}from"../config-provider/useDirection";import{useTagTokens}from"./tokens";const TagImpl=e=>{const{tokensOverride:t,children:o,type:r,size:i,plain:a,round:n,mark:s,color:l,textColor:d,show:c,closeable:u,closeIcon:p,onClose:g,onPress:m,textStyle:f,style:b,...R}=e,y=useTagTokens(t),h=useDirection(),k=r??y.defaults.type,T=i??y.defaults.size,z=a??y.defaults.plain,x=n??y.defaults.round,L=s??y.defaults.mark;if(!(c??y.defaults.show))return null;const w=y.colors.toneMap[k]??y.colors.toneMap.default,P=y.sizing.sizes[T],v=z?y.colors.plainBackground:l??w.background,H=d??(z?l??w.background:w.text),O=z?l??w.background:"transparent",S=x?y.radii.round:P.borderRadius,V=L?"rtl"===h?{borderTopRightRadius:y.radii.markLeading,borderBottomRightRadius:y.radii.markLeading,borderTopLeftRadius:y.radii.round,borderBottomLeftRadius:y.radii.round}:{borderTopLeftRadius:y.radii.markLeading,borderBottomLeftRadius:y.radii.markLeading,borderTopRightRadius:y.radii.round,borderBottomRightRadius:y.radii.round}:null,B=L?y.radii.round:S,E=[y.layout.container,{backgroundColor:v,paddingHorizontal:P.paddingHorizontal,paddingVertical:P.paddingVertical,borderRadius:S},V,b],C=isRenderable(o)?renderTextOrNode(o,[{color:H,fontSize:P.fontSize,lineHeight:P.lineHeight,fontFamily:y.typography.fontFamily,fontWeight:y.typography.fontWeight},f].filter(Boolean)):null,F=u&&React.createElement(Pressable,{accessibilityRole:"button",hitSlop:y.spacing.closeHitSlop,style:[y.layout.close,{marginLeft:y.spacing.closeGap}],onPress:e=>{e.stopPropagation?.(),g?.()}},isFunction(p)?p(H,y.sizing.closeIconSize):p??React.createElement(Close,{color:H,size:y.sizing.closeIconSize})),I=z?React.createElement(View,{style:createHairlineView({position:"all",color:O,borderRadius:B})}):null,_=React.createElement(React.Fragment,null,C,F,I);return m?React.createElement(Pressable,_extends({accessibilityRole:"button",onPress:m,style:({pressed:e})=>[E,e&&{opacity:y.defaults.pressedOpacity}]},R),_):React.createElement(View,_extends({style:E},R),_)};export const Tag=React.memo(TagImpl);Tag.displayName="Tag";
@@ -1 +1 @@
1
- function _extends(){return _extends=Object.assign?Object.assign.bind():function(e){for(var t=1;t<arguments.length;t++){var n=arguments[t];for(var o in n)({}).hasOwnProperty.call(n,o)&&(e[o]=n[o])}return e},_extends.apply(null,arguments)}import React,{useEffect,useMemo,useRef,useState}from"react";import{AccessibilityInfo,Animated,Easing,Pressable,StyleSheet,View,useWindowDimensions}from"react-native";import Portal from"../portal/Portal";import{SafeAreaView}from"../safe-area-view";import{useAriaPress,useOverlayStack}from"../../hooks";import Loading from"../loading";import{Checked,Close}from"react-native-system-icon";import{isFiniteNumber,isText,isRenderable}from"../../utils/validate";import{renderTextOrNode}from"../../utils";import{nativeDriverEnabled}from"../../platform";import{useReducedMotion}from"../../hooks/animation";import{useLocale}from"../config-provider/useLocale";import{useToastTokens}from"./tokens";const RT=()=>!0,ToastContentImpl=e=>{const{visible:t,message:n,icon:o,type:r="info",iconSize:i,duration:s=2e3,position:a="middle",forbidClick:c=!1,overlay:l=!1,overlayStyle:u,closeOnClickOverlay:d=!1,closeOnClick:m=!1,loadingIndicator:f,safeAreaInsetTop:p,safeAreaInsetBottom:g,tokensOverride:v,style:x,textStyle:b,onClose:R,onOpen:y,onOpened:h,onClosed:E}=e,T=useLocale(),C=useToastTokens(v),O=useReducedMotion(),{colors:w}=C,{height:I}=useWindowDimensions(),P=isFiniteNumber(s)?Math.max(0,s):0,[k,z]=useState(t),A=useRef(new Animated.Value(t?1:0)).current,M=useRef(null),V=useRef(0),H=useRef(R);H.current=R;const D=useRef(y);D.current=y;const W=useRef(h);W.current=h;const j=useRef(E);j.current=E;const{zIndex:F}=useOverlayStack({visible:k,type:"toast"}),N=useRef(t),L=useRef(!1),_=I>0?Math.round(I*C.positionOffsetRatio):C.positionOffsetMin,B=void 0!==p?p:"top"===a,q=void 0!==g?g:"bottom"===a,G=useMemo(()=>"top"===a?{justifyContent:"flex-start",paddingTop:_}:"bottom"===a?{justifyContent:"flex-end",paddingBottom:_}:{justifyContent:"center"},[a,_]);useEffect(()=>{V.current+=1;const e=V.current;M.current?.stop();const n=O?0:C.animationDuration;t?(z(!0),M.current=Animated.timing(A,{toValue:1,duration:n,easing:Easing.out(Easing.cubic),useNativeDriver:nativeDriverEnabled,isInteraction:!1}),M.current.start()):(M.current=Animated.timing(A,{toValue:0,duration:n,easing:Easing.out(Easing.cubic),useNativeDriver:nativeDriverEnabled,isInteraction:!1}),M.current.start(({finished:t})=>{t&&e===V.current&&z(!1)}))},[A,O,C.animationDuration,t]),useEffect(()=>()=>{M.current?.stop()},[]),useEffect(()=>{if(!t||P<=0)return;const e=setTimeout(()=>{H.current?.()},P);return()=>clearTimeout(e)},[P,t]),useEffect(()=>{if(!t||!isText(n))return;const e=String(n);e&&AccessibilityInfo.announceForAccessibility?.(e)},[n,t]);const J=O?0:C.animationDuration;useEffect(()=>{let e=null;return t?(L.current=!1,!N.current&&(D.current?.(),W.current&&(e=setTimeout(W.current,J)))):N.current&&(L.current=!0),N.current=t,()=>{e&&clearTimeout(e)}},[J,t]),useEffect(()=>{!k&&L.current&&(L.current=!1,j.current?.())},[k]);const K=useRef(()=>H.current?.()).current,Q=useAriaPress({disabled:!m,onPress:K,extraProps:{accessibilityRole:m?"button":"alert",accessibilityHint:m?T?.vanToast?.closeHint??"Double-tap to dismiss":void 0,accessibilityLiveRegion:"assertive"}}),U=useMemo(()=>{if(o)return o;const e=i??C.iconSize;switch(r){case"success":return React.createElement(Checked,{size:e,fill:w.text,color:w.text});case"fail":return React.createElement(Close,{size:e,fill:w.text,color:w.text});case"loading":return f??React.createElement(Loading,{color:w.text,size:e});default:return null}},[w.text,o,i,f,C.iconSize,r]),X=useMemo(()=>({marginBottom:C.gap}),[C.gap]),Y=useMemo(()=>({color:w.text,fontSize:C.fontSize,lineHeight:C.lineHeight,fontFamily:C.fontFamily}),[w.text,C.fontSize,C.fontFamily,C.lineHeight]),Z="info"===r&&!U,$=useMemo(()=>Z?{minWidth:C.textMinWidth,minHeight:0,paddingVertical:C.textPaddingVertical,paddingHorizontal:C.textPaddingHorizontal}:{minWidth:C.defaultWidth,minHeight:C.defaultMinHeight,padding:C.defaultPadding},[Z,C.defaultMinHeight,C.defaultPadding,C.defaultWidth,C.textMinWidth,C.textPaddingHorizontal,C.textPaddingVertical]),ee=useMemo(()=>({borderRadius:C.radius,opacity:m&&Q.states.pressed?C.pressedOpacity:A,backgroundColor:C.colors.variants[r],maxWidth:C.maxWidth,...$}),[A,$,m,Q.states.pressed,C.colors.variants,C.maxWidth,C.pressedOpacity,C.radius,r]);if(!k)return null;const te=isRenderable(n)&&("string"!=typeof n||""!==n);return React.createElement(View,{style:[S.b,{backgroundColor:C.colors.transparent},G,F?{zIndex:F}:void 0],pointerEvents:c||l||m?"auto":"none"},(l||c)&&React.createElement(Pressable,{testID:"rv-toast-overlay",style:[S.o,{backgroundColor:C.colors.transparent},l&&{backgroundColor:w.backdrop},u],pointerEvents:"auto",onPress:l&&d?K:void 0,onStartShouldSetResponder:RT,onMoveShouldSetResponder:RT}),B&&React.createElement(SafeAreaView,{edge:"top",pointerEvents:"none"}),React.createElement(Pressable,_extends({disabled:!m},Q.interactionProps,{style:S.pw}),React.createElement(Animated.View,{renderToHardwareTextureAndroid:!0,shouldRasterizeIOS:!0,style:[S.t,ee,x]},U&&React.createElement(View,{style:X},isText(U)?renderTextOrNode(U,[{color:w.text,fontSize:C.iconSize}]):U),te&&(isText(n)?renderTextOrNode(n,[S.m,Y,b]):React.createElement(View,{style:S.mw},n)))),q&&React.createElement(SafeAreaView,{edge:"bottom",pointerEvents:"none"}))};export const ToastContent=React.memo(ToastContentImpl);const ToastImpl=e=>React.createElement(Portal,null,React.createElement(ToastContent,e));export const Toast=React.memo(ToastImpl);const S=StyleSheet.create({b:{flex:1,alignItems:"center"},o:{...StyleSheet.absoluteFillObject},pw:{alignItems:"center"},t:{alignItems:"center",justifyContent:"center"},m:{textAlign:"center"},mw:{alignItems:"center"}});export default Toast;
1
+ function _extends(){return _extends=Object.assign?Object.assign.bind():function(e){for(var t=1;t<arguments.length;t++){var n=arguments[t];for(var o in n)({}).hasOwnProperty.call(n,o)&&(e[o]=n[o])}return e},_extends.apply(null,arguments)}import React,{useEffect,useMemo,useRef,useState}from"react";import{AccessibilityInfo,Animated,Easing,Pressable,StyleSheet,View,useWindowDimensions}from"react-native";import Portal from"../portal/Portal";import{SafeAreaView}from"../safe-area-view";import{useAriaPress,useOverlayStack}from"../../hooks";import Loading from"../loading";import{Checked,Close}from"../../internal/icons";import{isFiniteNumber,isText,isRenderable}from"../../utils/validate";import{renderTextOrNode}from"../../utils";import{nativeDriverEnabled}from"../../platform";import{useReducedMotion}from"../../hooks/animation";import{useLocale}from"../config-provider/useLocale";import{useToastTokens}from"./tokens";const RT=()=>!0,ToastContentImpl=e=>{const{visible:t,message:n,icon:o,type:r="info",iconSize:i,duration:s=2e3,position:a="middle",forbidClick:c=!1,overlay:l=!1,overlayStyle:u,closeOnClickOverlay:d=!1,closeOnClick:m=!1,loadingIndicator:f,safeAreaInsetTop:p,safeAreaInsetBottom:g,tokensOverride:v,style:x,textStyle:b,onClose:R,onOpen:y,onOpened:h,onClosed:E}=e,T=useLocale(),C=useToastTokens(v),O=useReducedMotion(),{colors:w}=C,{height:I}=useWindowDimensions(),P=isFiniteNumber(s)?Math.max(0,s):0,[k,z]=useState(t),A=useRef(new Animated.Value(t?1:0)).current,M=useRef(null),V=useRef(0),H=useRef(R);H.current=R;const D=useRef(y);D.current=y;const W=useRef(h);W.current=h;const j=useRef(E);j.current=E;const{zIndex:F}=useOverlayStack({visible:k,type:"toast"}),N=useRef(t),L=useRef(!1),_=I>0?Math.round(I*C.positionOffsetRatio):C.positionOffsetMin,B=void 0!==p?p:"top"===a,q=void 0!==g?g:"bottom"===a,G=useMemo(()=>"top"===a?{justifyContent:"flex-start",paddingTop:_}:"bottom"===a?{justifyContent:"flex-end",paddingBottom:_}:{justifyContent:"center"},[a,_]);useEffect(()=>{V.current+=1;const e=V.current;M.current?.stop();const n=O?0:C.animationDuration;t?(z(!0),M.current=Animated.timing(A,{toValue:1,duration:n,easing:Easing.out(Easing.cubic),useNativeDriver:nativeDriverEnabled,isInteraction:!1}),M.current.start()):(M.current=Animated.timing(A,{toValue:0,duration:n,easing:Easing.out(Easing.cubic),useNativeDriver:nativeDriverEnabled,isInteraction:!1}),M.current.start(({finished:t})=>{t&&e===V.current&&z(!1)}))},[A,O,C.animationDuration,t]),useEffect(()=>()=>{M.current?.stop()},[]),useEffect(()=>{if(!t||P<=0)return;const e=setTimeout(()=>{H.current?.()},P);return()=>clearTimeout(e)},[P,t]),useEffect(()=>{if(!t||!isText(n))return;const e=String(n);e&&AccessibilityInfo.announceForAccessibility?.(e)},[n,t]);const J=O?0:C.animationDuration;useEffect(()=>{let e=null;return t?(L.current=!1,!N.current&&(D.current?.(),W.current&&(e=setTimeout(W.current,J)))):N.current&&(L.current=!0),N.current=t,()=>{e&&clearTimeout(e)}},[J,t]),useEffect(()=>{!k&&L.current&&(L.current=!1,j.current?.())},[k]);const K=useRef(()=>H.current?.()).current,Q=useAriaPress({disabled:!m,onPress:K,extraProps:{accessibilityRole:m?"button":"alert",accessibilityHint:m?T?.vanToast?.closeHint??"Double-tap to dismiss":void 0,accessibilityLiveRegion:"assertive"}}),U=useMemo(()=>{if(o)return o;const e=i??C.iconSize;switch(r){case"success":return React.createElement(Checked,{size:e,fill:w.text,color:w.text});case"fail":return React.createElement(Close,{size:e,fill:w.text,color:w.text});case"loading":return f??React.createElement(Loading,{color:w.text,size:e});default:return null}},[w.text,o,i,f,C.iconSize,r]),X=useMemo(()=>({marginBottom:C.gap}),[C.gap]),Y=useMemo(()=>({color:w.text,fontSize:C.fontSize,lineHeight:C.lineHeight,fontFamily:C.fontFamily}),[w.text,C.fontSize,C.fontFamily,C.lineHeight]),Z="info"===r&&!U,$=useMemo(()=>Z?{minWidth:C.textMinWidth,minHeight:0,paddingVertical:C.textPaddingVertical,paddingHorizontal:C.textPaddingHorizontal}:{minWidth:C.defaultWidth,minHeight:C.defaultMinHeight,padding:C.defaultPadding},[Z,C.defaultMinHeight,C.defaultPadding,C.defaultWidth,C.textMinWidth,C.textPaddingHorizontal,C.textPaddingVertical]),ee=useMemo(()=>({borderRadius:C.radius,opacity:m&&Q.states.pressed?C.pressedOpacity:A,backgroundColor:C.colors.variants[r],maxWidth:C.maxWidth,...$}),[A,$,m,Q.states.pressed,C.colors.variants,C.maxWidth,C.pressedOpacity,C.radius,r]);if(!k)return null;const te=isRenderable(n)&&("string"!=typeof n||""!==n);return React.createElement(View,{style:[S.b,{backgroundColor:C.colors.transparent},G,F?{zIndex:F}:void 0],pointerEvents:c||l||m?"auto":"none"},(l||c)&&React.createElement(Pressable,{testID:"rv-toast-overlay",style:[S.o,{backgroundColor:C.colors.transparent},l&&{backgroundColor:w.backdrop},u],pointerEvents:"auto",onPress:l&&d?K:void 0,onStartShouldSetResponder:RT,onMoveShouldSetResponder:RT}),B&&React.createElement(SafeAreaView,{edge:"top",pointerEvents:"none"}),React.createElement(Pressable,_extends({disabled:!m},Q.interactionProps,{style:S.pw}),React.createElement(Animated.View,{renderToHardwareTextureAndroid:!0,shouldRasterizeIOS:!0,style:[S.t,ee,x]},U&&React.createElement(View,{style:X},isText(U)?renderTextOrNode(U,[{color:w.text,fontSize:C.iconSize}]):U),te&&(isText(n)?renderTextOrNode(n,[S.m,Y,b]):React.createElement(View,{style:S.mw},n)))),q&&React.createElement(SafeAreaView,{edge:"bottom",pointerEvents:"none"}))};export const ToastContent=React.memo(ToastContentImpl);const ToastImpl=e=>React.createElement(Portal,null,React.createElement(ToastContent,e));export const Toast=React.memo(ToastImpl);const S=StyleSheet.create({b:{flex:1,alignItems:"center"},o:{...StyleSheet.absoluteFillObject},pw:{alignItems:"center"},t:{alignItems:"center",justifyContent:"center"},m:{textAlign:"center"},mw:{alignItems:"center"}});export default Toast;
@@ -1 +1 @@
1
- import{createComponentTokensHook}from"../../design-system";export const createToastTokens=t=>{const e="rgba(0,0,0,0.7)";return{colors:{text:t.palette.primary.foreground??"#ffffff",backdrop:e,variants:{info:e,success:e,fail:e,loading:e},transparent:"transparent"},fontSize:t.fontSize.sm,lineHeight:Math.round(t.fontSize.sm*t.typography.lineHeightMultiplier),fontFamily:t.typography.fontFamily,radius:t.radii.md,gap:t.spacing.sm,iconSize:36,maxWidth:"70%",textMinWidth:96,textPaddingVertical:t.spacing.sm,textPaddingHorizontal:t.spacing.md,defaultPadding:t.spacing.lg,defaultWidth:88,defaultMinHeight:88,pressedOpacity:.85,positionOffsetRatio:.2,positionOffsetMin:60,animationDuration:160}};export const useToastTokens=createComponentTokensHook("toast",createToastTokens);
1
+ import{createComponentTokensHook}from"../../design-system";export const createToastTokens=t=>{const e="rgba(0,0,0,0.7)";return{colors:{text:t.palette.primary.foreground??"#ffffff",backdrop:e,variants:{info:e,success:e,fail:e,loading:e},transparent:"transparent"},fontSize:t.fontSize.sm,lineHeight:Math.round(t.fontSize.sm*t.typography.lineHeightMultiplier),fontFamily:t.typography.fontFamily,radius:t.radii.md,gap:t.spacing.sm,iconSize:38,maxWidth:"70%",textMinWidth:96,textPaddingVertical:t.spacing.sm,textPaddingHorizontal:t.spacing.md,defaultPadding:t.spacing.lg,defaultWidth:88,defaultMinHeight:88,pressedOpacity:.85,positionOffsetRatio:.2,positionOffsetMin:60,animationDuration:160}};export const useToastTokens=createComponentTokensHook("toast",createToastTokens);
@@ -1 +1 @@
1
- import React,{useMemo}from"react";import{ThemeContext}from"./ThemeContext";import{createTokens}from"./tokens";import{isObject}from"../utils/validate";const isTokens=e=>Boolean(isObject(e)&&"palette"in e&&"spacing"in e);export const ThemeProvider=({value:e,children:o})=>{const t=useMemo(()=>({foundations:isTokens(e)?e:createTokens(e?.foundations),components:isTokens(e)?void 0:e?.components}),[e]);return React.createElement(ThemeContext.Provider,{value:t},o)};
1
+ import React,{useMemo}from"react";import{ThemeContext}from"./ThemeContext";import{createTokens,defaultTokens}from"./tokens";import{isObject}from"../utils/validate";const isTokens=e=>Boolean(isObject(e)&&"palette"in e&&"spacing"in e),DEFAULT_THEME_CONTEXT={foundations:defaultTokens,components:void 0},TOKENS_CONTEXT_CACHE=new WeakMap,CONFIG_CONTEXT_CACHE=new WeakMap,FOUNDATIONS_CACHE=new WeakMap,getCachedFoundations=e=>{if(!e)return defaultTokens;const t=FOUNDATIONS_CACHE.get(e);if(t)return t;const o=createTokens(e);return FOUNDATIONS_CACHE.set(e,o),o},resolveThemeContext=e=>{if(!e)return DEFAULT_THEME_CONTEXT;if(isTokens(e)){const t=TOKENS_CONTEXT_CACHE.get(e);if(t)return t;const o={foundations:e,components:void 0};return TOKENS_CONTEXT_CACHE.set(e,o),o}const t=CONFIG_CONTEXT_CACHE.get(e);if(t)return t;const o={foundations:getCachedFoundations(e.foundations),components:e.components};return CONFIG_CONTEXT_CACHE.set(e,o),o};export const ThemeProvider=({value:e,children:t})=>{const o=useMemo(()=>resolveThemeContext(e),[e]);return React.createElement(ThemeContext.Provider,{value:o},t)};
@@ -1 +1 @@
1
- import{useMemo}from"react";import{deepMerge}from"../utils/deepMerge";import{useTheme}from"./useTheme";export const createComponentTokensHook=(e,o)=>r=>{const{foundations:t,components:m}=useTheme(),n=m?.[e];return useMemo(()=>{const e=o(t),m=n&&r?deepMerge(n,r):n??r;return m?deepMerge(e,m):e},[n,t,r])};
1
+ import{useMemo}from"react";import{deepMerge}from"../utils/deepMerge";import{useTheme}from"./useTheme";const isObjectLike=e=>"object"==typeof e&&null!==e;export const createComponentTokensHook=(e,t)=>{const r=new WeakMap,n=new WeakMap,o=new WeakMap;return s=>{const{foundations:c,components:i}=useTheme(),a=i?.[e];return useMemo(()=>{const e=c;let i=r.get(e);if(i||(i=t(c),r.set(e,i)),!a&&!s)return i;const g=a&&s?getCachedPairMerge(o,a,s):a??s;return g?getCachedMerge(n,i,g):i},[a,c,s])}};const getCachedMerge=(e,t,r)=>{if(!isObjectLike(r))return deepMerge(t,r);let n=e.get(t);n||(n=new WeakMap,e.set(t,n));const o=n.get(r);if(o)return o;const s=deepMerge(t,r);return n.set(r,s),s},getCachedPairMerge=(e,t,r)=>{if(!isObjectLike(t)||!isObjectLike(r))return deepMerge(t,r);let n=e.get(t);n||(n=new WeakMap,e.set(t,n));const o=n.get(r);if(o)return o;const s=deepMerge(t,r);return n.set(r,s),s};
@@ -1 +1 @@
1
- function _extends(){return _extends=Object.assign?Object.assign.bind():function(e){for(var t=1;t<arguments.length;t++){var o=arguments[t];for(var n in o)({}).hasOwnProperty.call(o,n)&&(e[n]=o[n])}return e},_extends.apply(null,arguments)}import React from"react";import{Platform,Pressable,TextInput,View}from"react-native";import{Clear}from"react-native-system-icon";import{isText}from"../../utils/validate";export const alignMap={left:"flex-start",center:"center",right:"flex-end"};export const mapKeyboardType=e=>{switch(e){case"number":return"decimal-pad";case"digit":return"number-pad";case"tel":return"phone-pad";default:return}};export const FieldSlot=({onPress:e,style:t,children:o,accessibilityRole:n="button"})=>o?e?React.createElement(Pressable,{onPress:e,accessibilityRole:n,style:t},o):React.createElement(View,{style:t},o):null;export const FieldClearButton=({show:e,tokens:t,clearIcon:o,onPressIn:n,onPressOut:r,onPress:l})=>{if(!e)return null;const i="web"===Platform.OS?{onMouseDown:e=>{e.preventDefault?.(),e.stopPropagation?.()}}:void 0;return React.createElement(Pressable,_extends({style:[t.layout.clearIcon,{paddingHorizontal:t.spacing.rightIconGap}]},i,{onPressIn:n,onPressOut:r,onPress:l,accessibilityRole:"button"}),React.isValidElement(o)?o:React.createElement(Clear,{size:t.sizes.clearIcon,fill:t.colors.clear,color:t.colors.clear}))};export const FieldInput=({inputRef:e,tokens:t,isTextarea:o,disabled:n,error:r,finalTextAlign:l,lineHeight:i,textareaHeight:s,minHeight:a,inputStyle:c,value:u,onChangeText:d,onFocus:p,onBlur:y,onPressIn:g,rows:m,placeholderTextColor:x,keyboardType:f,onContentSizeChange:h,describedBy:b,secureTextEntry:P,editable:T,restInputProps:R})=>{const v=[o?t.layout.textarea:t.layout.input,{color:n?t.colors.disabled:r?t.colors.error:t.colors.input,fontSize:t.typography.inputSize,textAlign:l,...o?{lineHeight:i,height:s,minHeight:a}:{minHeight:t.sizes.controlMinHeight}},c];return React.createElement(TextInput,_extends({ref:e,style:v,value:u,onChangeText:d,onFocus:p,onBlur:y,onPressIn:g,editable:T,secureTextEntry:P,multiline:o,numberOfLines:o?m:void 0,keyboardType:f,placeholderTextColor:x,onContentSizeChange:o?h:void 0},b?{accessibilityDescribedBy:b}:null,{clearButtonMode:"never"},R))};export const FieldControlRow=({tokens:e,prefixNode:t,leftIconNode:o,controlNode:n,clearNode:r,rightIconNode:l,suffixNode:i})=>React.createElement(View,{style:e.layout.body},t,o,React.createElement(View,{style:[e.layout.controlWrapper,{minHeight:e.sizes.controlMinHeight}]},n,r),l,i);export const resolveTooltipDialog=(e,t)=>{if(!React.isValidElement(e)&&!isText(e)){const{icon:o,...n}=e;return{icon:o??t,dialogProps:n}}return{icon:t,dialogProps:{message:e}}};
1
+ function _extends(){return _extends=Object.assign?Object.assign.bind():function(e){for(var t=1;t<arguments.length;t++){var o=arguments[t];for(var n in o)({}).hasOwnProperty.call(o,n)&&(e[n]=o[n])}return e},_extends.apply(null,arguments)}import React from"react";import{Platform,Pressable,TextInput,View}from"react-native";import{Clear}from"../../internal/icons";import{isText}from"../../utils/validate";export const alignMap={left:"flex-start",center:"center",right:"flex-end"};export const mapKeyboardType=e=>{switch(e){case"number":return"decimal-pad";case"digit":return"number-pad";case"tel":return"phone-pad";default:return}};export const FieldSlot=({onPress:e,style:t,children:o,accessibilityRole:n="button"})=>o?e?React.createElement(Pressable,{onPress:e,accessibilityRole:n,style:t},o):React.createElement(View,{style:t},o):null;export const FieldClearButton=({show:e,tokens:t,clearIcon:o,onPressIn:n,onPressOut:r,onPress:l})=>{if(!e)return null;const i="web"===Platform.OS?{onMouseDown:e=>{e.preventDefault?.(),e.stopPropagation?.()}}:void 0;return React.createElement(Pressable,_extends({style:[t.layout.clearIcon,{paddingHorizontal:t.spacing.rightIconGap}]},i,{onPressIn:n,onPressOut:r,onPress:l,accessibilityRole:"button"}),React.isValidElement(o)?o:React.createElement(Clear,{size:t.sizes.clearIcon,fill:t.colors.clear,color:t.colors.clear}))};export const FieldInput=({inputRef:e,tokens:t,isTextarea:o,disabled:n,error:r,finalTextAlign:l,lineHeight:i,textareaHeight:s,minHeight:a,inputStyle:c,value:u,onChangeText:d,onFocus:p,onBlur:g,onPressIn:y,rows:x,placeholderTextColor:m,keyboardType:f,onContentSizeChange:h,describedBy:b,secureTextEntry:P,editable:T,restInputProps:R})=>{const I=[o?t.layout.textarea:t.layout.input,{color:n?t.colors.disabled:r?t.colors.error:t.colors.input,fontSize:t.typography.inputSize,textAlign:l,...o?{lineHeight:i,height:s,minHeight:a}:{minHeight:t.sizes.controlMinHeight}},c];return React.createElement(TextInput,_extends({ref:e,style:I,value:u,onChangeText:d,onFocus:p,onBlur:g,onPressIn:y,editable:T,secureTextEntry:P,multiline:o,numberOfLines:o?x:void 0,keyboardType:f,placeholderTextColor:m,onContentSizeChange:o?h:void 0},b?{accessibilityDescribedBy:b}:null,{clearButtonMode:"never"},R))};export const FieldControlRow=({tokens:e,prefixNode:t,leftIconNode:o,controlNode:n,clearNode:r,rightIconNode:l,suffixNode:i})=>React.createElement(View,{style:e.layout.body},t,o,React.createElement(View,{style:[e.layout.controlWrapper,{minHeight:e.sizes.controlMinHeight}]},n,r),l,i);export const resolveTooltipDialog=(e,t)=>{if(!React.isValidElement(e)&&!isText(e)){const{icon:o,...n}=e;return{icon:o??t,dialogProps:n}}return{icon:t,dialogProps:{message:e}}};
@@ -1 +1 @@
1
- import{useCallback,useEffect,useRef,useState}from"react";import{isFunction}from"../utils/validate";const hasProp=(e,t)=>Object.prototype.hasOwnProperty.call(e,t);function useControllableValue(e={},t={}){const{defaultValue:a,defaultValuePropName:u="defaultValue",valuePropName:r="value",trigger:l="onChange"}=t,o=e,s=hasProp(e,r),n=o[r],[c,f]=useState(()=>s?n:hasProp(e,u)?o[u]:a),p=useRef(o[l]);useEffect(()=>{p.current=o[l]},[e,l]);const i=useCallback((e,...t)=>{s||f(e),isFunction(p.current)&&p.current(e,...t)},[s]);return[s?n:c,i]}export default useControllableValue;
1
+ import{useCallback,useEffect,useRef,useState}from"react";import{isFunction}from"../utils/validate";const hasProp=(e,t)=>Object.prototype.hasOwnProperty.call(e,t);function useControllableValue(e={},t={}){const{defaultValue:a,defaultValuePropName:u="defaultValue",valuePropName:r="value",trigger:l="onChange"}=t,o=e,s=hasProp(e,r),n=o[r],[c,f]=useState(()=>s?n:hasProp(e,u)?o[u]:a),p=useRef(o[l]),i=o[l];useEffect(()=>{p.current=i},[i]);const m=useCallback((e,...t)=>{s||f(e),isFunction(p.current)&&p.current(e,...t)},[s]);return[s?n:c,m]}export default useControllableValue;
@@ -1 +1 @@
1
- import{Platform}from"react-native";import{useSafeAreaInsets}from"react-native-safe-area-context";export function useSafeAreaPadding(t){const a=useSafeAreaInsets();if("web"===Platform.OS){const[a,e,o,n]=[t?.top??0,t?.bottom??0,t?.left??0,t?.right??0];return{paddingTop:`max(env(safe-area-inset-top, 0px), ${a}px)`,paddingBottom:`max(env(safe-area-inset-bottom, 0px), ${e}px)`,paddingLeft:`max(env(safe-area-inset-left, 0px), ${o}px)`,paddingRight:`max(env(safe-area-inset-right, 0px), ${n}px)`}}return{paddingTop:Math.max(a.top,t?.top??0),paddingBottom:Math.max(a.bottom,t?.bottom??0),paddingLeft:Math.max(a.left,t?.left??0),paddingRight:Math.max(a.right,t?.right??0)}}
1
+ import{useMemo}from"react";import{Platform}from"react-native";import{useSafeAreaInsets}from"react-native-safe-area-context";export function useSafeAreaPadding(t){const a=useSafeAreaInsets(),[e,o,n,p]=[t?.top??0,t?.bottom??0,t?.left??0,t?.right??0];return useMemo(()=>"web"===Platform.OS?{paddingTop:`max(env(safe-area-inset-top, 0px), ${e}px)`,paddingBottom:`max(env(safe-area-inset-bottom, 0px), ${o}px)`,paddingLeft:`max(env(safe-area-inset-left, 0px), ${n}px)`,paddingRight:`max(env(safe-area-inset-right, 0px), ${p}px)`}:{paddingTop:Math.max(a.top,e),paddingBottom:Math.max(a.bottom,o),paddingLeft:Math.max(a.left,n),paddingRight:Math.max(a.right,p)},[o,a.bottom,a.left,a.right,a.top,n,p,e])}
@@ -0,0 +1 @@
1
+ function _extends(){return _extends=Object.assign?Object.assign.bind():function(e){for(var t=1;t<arguments.length;t++){var o=arguments[t];for(var r in o)({}).hasOwnProperty.call(o,r)&&(e[r]=o[r])}return e},_extends.apply(null,arguments)}import React from"react";import{StyleSheet,Text,View}from"react-native";const resolveColor=e=>e.color??e.fill??"#333333",lineStyle=(e,t,o=.45,r=2)=>({position:"absolute",width:Math.max(1,e*o),height:Math.max(1.5,r),borderRadius:Math.max(1,r/2),backgroundColor:t}),IconBox=({size:e=16,style:t,children:o})=>React.createElement(View,{style:[S.box,{width:e,height:e},t]},o);export const Arrow=e=>{const t=e.size??16,o=resolveColor(e);return React.createElement(IconBox,_extends({},e,{size:t}),React.createElement(View,{style:[lineStyle(t,o,.42),{transform:[{rotate:"45deg"}],top:.26*t,left:.3*t}]}),React.createElement(View,{style:[lineStyle(t,o,.42),{transform:[{rotate:"-45deg"}],top:.52*t,left:.3*t}]}))};export const ArrowLeft=e=>{const t=e.size??16,o=resolveColor(e);return React.createElement(IconBox,_extends({},e,{size:t,style:[e.style,{transform:[{scaleX:-1}]}]}),React.createElement(View,{style:[lineStyle(t,o,.42),{transform:[{rotate:"45deg"}],top:.26*t,left:.3*t}]}),React.createElement(View,{style:[lineStyle(t,o,.42),{transform:[{rotate:"-45deg"}],top:.52*t,left:.3*t}]}))};const CloseBase=e=>{const t=e.size??16,o=resolveColor(e),r=Math.max(1.75,.078*t);return React.createElement(IconBox,_extends({},e,{size:t}),React.createElement(View,{style:[lineStyle(t,o,.68,r),{transform:[{rotate:"45deg"}],top:.44*t,left:.16*t}]}),React.createElement(View,{style:[lineStyle(t,o,.68,r),{transform:[{rotate:"-45deg"}],top:.44*t,left:.16*t}]}))};export const Close=CloseBase;export const Cross=CloseBase;export const Clear=CloseBase;export const Fail=CloseBase;export const Checked=e=>{const t=e.size??16,o=resolveColor(e),r=Math.max(1.6,.086*t),l=.32*t,n=.54*t;return React.createElement(IconBox,_extends({},e,{size:t}),React.createElement(View,{style:{width:l,height:n,borderRightWidth:r,borderBottomWidth:r,borderColor:o,transform:[{rotate:"45deg"}],marginTop:.08*-t}}))};export const Search=e=>{const t=e.size??16,o=resolveColor(e),r=Math.max(1.5,.1*t);return React.createElement(IconBox,_extends({},e,{size:t}),React.createElement(View,{style:{position:"absolute",width:.56*t,height:.56*t,borderWidth:r,borderColor:o,borderRadius:t}}),React.createElement(View,{style:[lineStyle(t,o,.34,r),{transform:[{rotate:"45deg"}],left:.48*t,top:.64*t}]}))};export const QuestionO=e=>{const t=e.size??16,o=resolveColor(e),r=Math.max(1.5,.1*t);return React.createElement(IconBox,_extends({},e,{size:t}),React.createElement(View,{style:{position:"absolute",width:t,height:t,borderWidth:r,borderColor:o,borderRadius:t/2}}),React.createElement(Text,{style:{color:o,fontSize:.7*t,lineHeight:t,fontWeight:"700"}},"?"))};export const Description=e=>{const t=e.size??16,o=resolveColor(e),r=Math.max(1.5,.09*t);return React.createElement(IconBox,_extends({},e,{size:t}),React.createElement(View,{style:{position:"absolute",width:.78*t,height:.94*t,borderWidth:r,borderColor:o,borderRadius:.08*t,left:.11*t,top:.03*t}}),React.createElement(View,{style:{position:"absolute",width:.22*t,height:.22*t,right:.12*t,top:.04*t,backgroundColor:"#ffffff",transform:[{rotate:"45deg"}],borderTopWidth:r,borderLeftWidth:r,borderColor:o}}),React.createElement(View,{style:[lineStyle(t,o,.34,r),{top:.42*t,left:.22*t}]}),React.createElement(View,{style:[lineStyle(t,o,.3,r),{top:.6*t,left:.22*t}]}))};const S=StyleSheet.create({box:{alignItems:"center",justifyContent:"center",overflow:"visible"}});
@@ -0,0 +1 @@
1
+ let runtimeCache,warned=!1;const warnMissing=()=>{!warned&&"undefined"!=typeof __DEV__&&__DEV__&&(warned=!0,console.warn("[react-native-system-ui] SVG support is optional. Install `react-native-svg` to use `Image` SVG rendering or `Circle` on native."))};export const getSvgRuntime=()=>{if(void 0!==runtimeCache)return runtimeCache;try{const e=require("react-native-svg");return runtimeCache={Svg:e.default??e.Svg??e,Circle:e.Circle,SvgUri:e.SvgUri},runtimeCache}catch{return warnMissing(),runtimeCache=null,runtimeCache}};
@@ -1 +1 @@
1
- import type{DeepPartial}from'../types';import type{ThemeComponentKey,ThemeComponentTokensMap}from'./ThemeContext';import type{Foundations}from'./tokens';export declare const createComponentTokensHook:<K extends ThemeComponentKey>(key:K,createBaseTokens:(foundations:Foundations)=>ThemeComponentTokensMap[K])=>(overrides?:DeepPartial<ThemeComponentTokensMap[K]>)=>ThemeComponentTokensMap[K];
1
+ import type{DeepPartial}from'../types';import type{ThemeComponentKey,ThemeComponentTokensMap}from'./ThemeContext';import type{Foundations}from'./tokens';export declare const createComponentTokensHook:<K extends ThemeComponentKey>(key:K,createBaseTokens:(foundations:Foundations)=>ThemeComponentTokensMap[K])=>((overrides?:DeepPartial<ThemeComponentTokensMap[K]>)=>ThemeComponentTokensMap[K]);
@@ -0,0 +1 @@
1
+ import React from'react';import{type StyleProp,type ViewStyle}from'react-native';export interface IconProps{size?:number;color?:string;fill?:string;style?:StyleProp<ViewStyle>;}export declare const Arrow:React.FC<IconProps>;export declare const ArrowLeft:React.FC<IconProps>;export declare const Close:React.FC<IconProps>;export declare const Cross:React.FC<IconProps>;export declare const Clear:React.FC<IconProps>;export declare const Fail:React.FC<IconProps>;export declare const Checked:React.FC<IconProps>;export declare const Search:React.FC<IconProps>;export declare const QuestionO:React.FC<IconProps>;export declare const Description:React.FC<IconProps>;
@@ -0,0 +1 @@
1
+ import type React from'react';type SvgRuntime={Svg?:React.ComponentType<any>;Circle?:React.ComponentType<any>;SvgUri?:React.ComponentType<any>;};export declare const getSvgRuntime:()=>SvgRuntime|null;export{};