@razorpay/blade 12.110.0 → 12.111.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 (129) hide show
  1. package/build/lib/native/components/AnimateInteractions/AnimateInteractions.native.js +5 -5
  2. package/build/lib/native/components/AnimateInteractions/AnimateInteractions.native.js.map +1 -1
  3. package/build/lib/native/components/AnimateInteractions/AnimateInteractionsProvider.js +6 -0
  4. package/build/lib/native/components/AnimateInteractions/AnimateInteractionsProvider.js.map +1 -0
  5. package/build/lib/native/components/BaseMotion/BaseMotion.native.js +22 -0
  6. package/build/lib/native/components/BaseMotion/BaseMotion.native.js.map +1 -0
  7. package/build/lib/native/components/BaseMotion/baseMotionInterpreter.native.js +11 -0
  8. package/build/lib/native/components/BaseMotion/baseMotionInterpreter.native.js.map +1 -0
  9. package/build/lib/native/components/BaseMotion/baseMotionUtils.js +4 -0
  10. package/build/lib/native/components/BaseMotion/baseMotionUtils.js.map +1 -0
  11. package/build/lib/native/components/BaseMotion/index.js +3 -0
  12. package/build/lib/native/components/BaseMotion/index.js.map +1 -0
  13. package/build/lib/native/components/BaseMotion/types.js +2 -0
  14. package/build/lib/native/components/BaseMotion/types.js.map +1 -0
  15. package/build/lib/native/components/Dropdown/FilterChipSelectInput.native.js +2 -1
  16. package/build/lib/native/components/Dropdown/FilterChipSelectInput.native.js.map +1 -1
  17. package/build/lib/native/components/Dropdown/filterChipSelectInputUtils.js +4 -0
  18. package/build/lib/native/components/Dropdown/filterChipSelectInputUtils.js.map +1 -0
  19. package/build/lib/native/components/Fade/Fade.native.js +7 -5
  20. package/build/lib/native/components/Fade/Fade.native.js.map +1 -1
  21. package/build/lib/native/components/FilterChip/BaseFilterChip.native.js +2 -2
  22. package/build/lib/native/components/FilterChip/BaseFilterChip.native.js.map +1 -1
  23. package/build/lib/native/components/Morph/Morph.native.js +9 -5
  24. package/build/lib/native/components/Morph/Morph.native.js.map +1 -1
  25. package/build/lib/native/components/Move/Move.native.js +8 -5
  26. package/build/lib/native/components/Move/Move.native.js.map +1 -1
  27. package/build/lib/native/components/Scale/Scale.native.js +7 -5
  28. package/build/lib/native/components/Scale/Scale.native.js.map +1 -1
  29. package/build/lib/native/components/SegmentedControl/SegmentedControl.native.js +27 -0
  30. package/build/lib/native/components/SegmentedControl/SegmentedControl.native.js.map +1 -0
  31. package/build/lib/native/components/SegmentedControl/SegmentedControlContext.js +8 -0
  32. package/build/lib/native/components/SegmentedControl/SegmentedControlContext.js.map +1 -0
  33. package/build/lib/native/components/SegmentedControl/SegmentedControlItem.native.js +18 -0
  34. package/build/lib/native/components/SegmentedControl/SegmentedControlItem.native.js.map +1 -0
  35. package/build/lib/native/components/SegmentedControl/index.js +3 -0
  36. package/build/lib/native/components/SegmentedControl/index.js.map +1 -0
  37. package/build/lib/native/components/SegmentedControl/segmentedControlTokens.js +4 -0
  38. package/build/lib/native/components/SegmentedControl/segmentedControlTokens.js.map +1 -0
  39. package/build/lib/native/components/Slide/Slide.native.js +7 -5
  40. package/build/lib/native/components/Slide/Slide.native.js.map +1 -1
  41. package/build/lib/native/components/Stagger/Stagger.native.js +10 -5
  42. package/build/lib/native/components/Stagger/Stagger.native.js.map +1 -1
  43. package/build/lib/native/components/Stagger/StaggerProvider.js +6 -0
  44. package/build/lib/native/components/Stagger/StaggerProvider.js.map +1 -0
  45. package/build/lib/native/components/index.js +3 -0
  46. package/build/lib/native/components/index.js.map +1 -1
  47. package/build/lib/native/utils/metaAttribute/metaConstants.js +1 -1
  48. package/build/lib/native/utils/metaAttribute/metaConstants.js.map +1 -1
  49. package/build/lib/native/utils/msToSeconds.js +4 -0
  50. package/build/lib/native/utils/msToSeconds.js.map +1 -0
  51. package/build/lib/web/development/_virtual/flatten.js +1 -1
  52. package/build/lib/web/development/_virtual/flatten3.js +1 -1
  53. package/build/lib/web/development/components/AnimateInteractions/AnimateInteractions.web.js +1 -1
  54. package/build/lib/web/development/components/AnimateInteractions/AnimateInteractionsProvider.js +2 -1
  55. package/build/lib/web/development/components/AnimateInteractions/AnimateInteractionsProvider.js.map +1 -1
  56. package/build/lib/web/development/components/AnimateInteractions/{useFocusWithin.js → useFocusWithin.web.js} +1 -1
  57. package/build/lib/web/development/components/AnimateInteractions/useFocusWithin.web.js.map +1 -0
  58. package/build/lib/web/development/components/DatePicker/BaseDatePicker.web.js +8 -1
  59. package/build/lib/web/development/components/DatePicker/BaseDatePicker.web.js.map +1 -1
  60. package/build/lib/web/development/components/DatePicker/FilterChipDatePicker/DatePickerFilterChip.web.js +4 -1
  61. package/build/lib/web/development/components/DatePicker/FilterChipDatePicker/DatePickerFilterChip.web.js.map +1 -1
  62. package/build/lib/web/development/components/Dropdown/FilterChipGroup.web.js +40 -5
  63. package/build/lib/web/development/components/Dropdown/FilterChipGroup.web.js.map +1 -1
  64. package/build/lib/web/development/components/Dropdown/FilterChipSelectInput.web.js +11 -21
  65. package/build/lib/web/development/components/Dropdown/FilterChipSelectInput.web.js.map +1 -1
  66. package/build/lib/web/development/components/Dropdown/filterChipSelectInputUtils.js +46 -0
  67. package/build/lib/web/development/components/Dropdown/filterChipSelectInputUtils.js.map +1 -0
  68. package/build/lib/web/development/components/FilterChip/BaseFilterChip.web.js +35 -11
  69. package/build/lib/web/development/components/FilterChip/BaseFilterChip.web.js.map +1 -1
  70. package/build/lib/web/development/components/SegmentedControl/SegmentedControl.web.js +196 -0
  71. package/build/lib/web/development/components/SegmentedControl/SegmentedControl.web.js.map +1 -0
  72. package/build/lib/web/development/components/SegmentedControl/SegmentedControlContext.js +18 -0
  73. package/build/lib/web/development/components/SegmentedControl/SegmentedControlContext.js.map +1 -0
  74. package/build/lib/web/development/components/SegmentedControl/SegmentedControlIndicator.web.js +109 -0
  75. package/build/lib/web/development/components/SegmentedControl/SegmentedControlIndicator.web.js.map +1 -0
  76. package/build/lib/web/development/components/SegmentedControl/SegmentedControlItem.web.js +170 -0
  77. package/build/lib/web/development/components/SegmentedControl/SegmentedControlItem.web.js.map +1 -0
  78. package/build/lib/web/development/components/SegmentedControl/index.js +3 -0
  79. package/build/lib/web/development/components/SegmentedControl/index.js.map +1 -0
  80. package/build/lib/web/development/components/SegmentedControl/segmentedControlTokens.js +53 -0
  81. package/build/lib/web/development/components/SegmentedControl/segmentedControlTokens.js.map +1 -0
  82. package/build/lib/web/development/components/Stagger/StaggerProvider.js.map +1 -1
  83. package/build/lib/web/development/components/index.js +3 -0
  84. package/build/lib/web/development/components/index.js.map +1 -1
  85. package/build/lib/web/development/node_modules/es-toolkit/dist/array/flatten.js +1 -1
  86. package/build/lib/web/development/node_modules/es-toolkit/dist/compat/array/flatten.js +1 -1
  87. package/build/lib/web/development/node_modules/es-toolkit/dist/compat/array/sortBy.js +2 -2
  88. package/build/lib/web/development/node_modules/es-toolkit/dist/compat/object/omit.js +2 -2
  89. package/build/lib/web/development/utils/metaAttribute/metaConstants.js +3 -1
  90. package/build/lib/web/development/utils/metaAttribute/metaConstants.js.map +1 -1
  91. package/build/lib/web/production/components/AnimateInteractions/AnimateInteractions.web.js +1 -1
  92. package/build/lib/web/production/components/AnimateInteractions/AnimateInteractionsProvider.js +2 -1
  93. package/build/lib/web/production/components/AnimateInteractions/AnimateInteractionsProvider.js.map +1 -1
  94. package/build/lib/web/production/components/AnimateInteractions/{useFocusWithin.js → useFocusWithin.web.js} +1 -1
  95. package/build/lib/web/production/components/AnimateInteractions/useFocusWithin.web.js.map +1 -0
  96. package/build/lib/web/production/components/DatePicker/BaseDatePicker.web.js +8 -1
  97. package/build/lib/web/production/components/DatePicker/BaseDatePicker.web.js.map +1 -1
  98. package/build/lib/web/production/components/DatePicker/FilterChipDatePicker/DatePickerFilterChip.web.js +4 -1
  99. package/build/lib/web/production/components/DatePicker/FilterChipDatePicker/DatePickerFilterChip.web.js.map +1 -1
  100. package/build/lib/web/production/components/Dropdown/FilterChipGroup.web.js +40 -5
  101. package/build/lib/web/production/components/Dropdown/FilterChipGroup.web.js.map +1 -1
  102. package/build/lib/web/production/components/Dropdown/FilterChipSelectInput.web.js +11 -21
  103. package/build/lib/web/production/components/Dropdown/FilterChipSelectInput.web.js.map +1 -1
  104. package/build/lib/web/production/components/Dropdown/filterChipSelectInputUtils.js +46 -0
  105. package/build/lib/web/production/components/Dropdown/filterChipSelectInputUtils.js.map +1 -0
  106. package/build/lib/web/production/components/FilterChip/BaseFilterChip.web.js +35 -11
  107. package/build/lib/web/production/components/FilterChip/BaseFilterChip.web.js.map +1 -1
  108. package/build/lib/web/production/components/SegmentedControl/SegmentedControl.web.js +196 -0
  109. package/build/lib/web/production/components/SegmentedControl/SegmentedControl.web.js.map +1 -0
  110. package/build/lib/web/production/components/SegmentedControl/SegmentedControlContext.js +18 -0
  111. package/build/lib/web/production/components/SegmentedControl/SegmentedControlContext.js.map +1 -0
  112. package/build/lib/web/production/components/SegmentedControl/SegmentedControlIndicator.web.js +109 -0
  113. package/build/lib/web/production/components/SegmentedControl/SegmentedControlIndicator.web.js.map +1 -0
  114. package/build/lib/web/production/components/SegmentedControl/SegmentedControlItem.web.js +170 -0
  115. package/build/lib/web/production/components/SegmentedControl/SegmentedControlItem.web.js.map +1 -0
  116. package/build/lib/web/production/components/SegmentedControl/index.js +3 -0
  117. package/build/lib/web/production/components/SegmentedControl/index.js.map +1 -0
  118. package/build/lib/web/production/components/SegmentedControl/segmentedControlTokens.js +53 -0
  119. package/build/lib/web/production/components/SegmentedControl/segmentedControlTokens.js.map +1 -0
  120. package/build/lib/web/production/components/Stagger/StaggerProvider.js.map +1 -1
  121. package/build/lib/web/production/components/index.js +3 -0
  122. package/build/lib/web/production/components/index.js.map +1 -1
  123. package/build/lib/web/production/utils/metaAttribute/metaConstants.js +3 -1
  124. package/build/lib/web/production/utils/metaAttribute/metaConstants.js.map +1 -1
  125. package/build/types/components/index.d.ts +238 -8
  126. package/build/types/components/index.native.d.ts +410 -14
  127. package/package.json +1 -1
  128. package/build/lib/web/development/components/AnimateInteractions/useFocusWithin.js.map +0 -1
  129. package/build/lib/web/production/components/AnimateInteractions/useFocusWithin.js.map +0 -1
@@ -1,10 +1,10 @@
1
- import '../Typography/index.js';
2
- import '../../utils/logger/index.js';
1
+ import _slicedToArray from '@babel/runtime/helpers/slicedToArray';
2
+ import React__default from 'react';
3
+ import { Pressable } from 'react-native';
4
+ import { AnimateInteractionsContext } from './AnimateInteractionsProvider.js';
3
5
  import { jsx } from 'react/jsx-runtime';
4
- import { throwBladeError } from '../../utils/logger/logger.js';
5
- import { Text } from '../Typography/Text/Text.js';
6
6
 
7
- var _this=undefined,_jsxFileName="/home/runner/work/blade/blade/packages/blade/src/components/AnimateInteractions/AnimateInteractions.native.tsx";var AnimateInteractions=function AnimateInteractions(_props){throwBladeError({message:'AnimateInteractions is not yet implemented for native',moduleName:'AnimateInteractions'});return jsx(Text,{children:"AnimateInteractions Component is not available for Native mobile apps."});};
7
+ var _this=undefined,_jsxFileName="/home/runner/work/blade/blade/packages/blade/src/components/AnimateInteractions/AnimateInteractions.native.tsx";var AnimateInteractions=function AnimateInteractions(_ref){var children=_ref.children,_ref$motionTriggers=_ref.motionTriggers,motionTriggers=_ref$motionTriggers===void 0?['hover']:_ref$motionTriggers;var _React$useState=React__default.useState(false),_React$useState2=_slicedToArray(_React$useState,2),isInteracting=_React$useState2[0],setIsInteracting=_React$useState2[1];return jsx(AnimateInteractionsContext.Provider,{value:{isInsideAnimateInteractionsContainer:true,isInteracting:isInteracting},children:jsx(Pressable,{onPressIn:function onPressIn(){return setIsInteracting(true);},onPressOut:function onPressOut(){return setIsInteracting(false);},children:children})});};
8
8
 
9
9
  export { AnimateInteractions };
10
10
  //# sourceMappingURL=AnimateInteractions.native.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"AnimateInteractions.native.js","sources":["../../../../../src/components/AnimateInteractions/AnimateInteractions.native.tsx"],"sourcesContent":["import type { AnimateInteractionsProps } from './types';\nimport { Text } from '~components/Typography';\nimport { throwBladeError } from '~utils/logger';\n\nconst AnimateInteractions = (_props: AnimateInteractionsProps): React.ReactElement => {\n throwBladeError({\n message: 'AnimateInteractions is not yet implemented for native',\n moduleName: 'AnimateInteractions',\n });\n\n return <Text>AnimateInteractions Component is not available for Native mobile apps.</Text>;\n};\n\nexport { AnimateInteractions };\n"],"names":["AnimateInteractions","_props","throwBladeError","message","moduleName","_jsx","Text","children"],"mappings":";;;;;;kJAIM,IAAAA,mBAAmB,CAAG,SAAtBA,mBAAmBA,CAAIC,MAAgC,CAAyB,CACpFC,eAAe,CAAC,CACdC,OAAO,CAAE,uDAAuD,CAChEC,UAAU,CAAE,qBACd,CAAC,CAAC,CAEF,OAAOC,GAAA,CAACC,IAAI,CAAA,CAAAC,QAAA,CAAC,wEAAsE,CAAM,CAAC,CAC5F;;;;"}
1
+ {"version":3,"file":"AnimateInteractions.native.js","sources":["../../../../../src/components/AnimateInteractions/AnimateInteractions.native.tsx"],"sourcesContent":["import React from 'react';\nimport { Pressable } from 'react-native';\nimport { AnimateInteractionsContext } from './AnimateInteractionsProvider';\nimport type { AnimateInteractionsProps } from './types';\n\n/**\n * ## AnimateInteractions (native)\n *\n * AnimateInteractions is the utility preset that animates children when the parent is interacted\n * with — the CSS `.parent:hover .child {}` analogue.\n *\n * On web this is driven by hover / focus-within (framer control propagation). Touch devices have\n * neither hover nor DOM focus-within, so the closest analogue is **press-and-hold**: children\n * animate while the parent is pressed (`onPressIn` → `'animate'`, `onPressOut` → `'exit'`), exactly\n * mirroring web `onFocusWithin`/`onBlurWithin`.\n *\n * The parent does not self-animate. It publishes the interaction state through\n * `AnimateInteractionsContext`; the shared `BaseMotion.native` engine reads `isInteracting` to\n * drive every `on-animate-interactions` descendant. `motionTriggers` (hover / focus) is accepted\n * for API parity but has no native meaning and is intentionally ignored.\n *\n * ### Known layout divergence from web\n *\n * On web, `AnimateInteractions` uses `BaseMotionEnhancerBox` which clones the child element and\n * applies interaction handlers in-place (no extra DOM node). On native, we wrap children in a\n * `<Pressable>` because React Native has no equivalent of DOM event delegation — `onPressIn` /\n * `onPressOut` must be attached to a host component. This adds an extra `View` node to the layout\n * tree, which may cause minor flex/layout differences versus web. Consumers porting layouts that\n * depend on the enhancer not adding a wrapper should account for this extra nesting.\n *\n * ### Usage\n *\n * ```jsx\n * <AnimateInteractions> // <-- press-and-hold this\n * <Box>\n * <Move motionTriggers={['on-animate-interactions']}> // <-- this animates in\n * <Box />\n * </Move>\n * </Box>\n * </AnimateInteractions>\n * ```\n */\nconst AnimateInteractions = ({\n children,\n // Accepted for cross-platform API parity; hover / focus don't exist on touch devices so this is\n // intentionally ignored on native.\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n motionTriggers = ['hover'],\n}: AnimateInteractionsProps): React.ReactElement => {\n const [isInteracting, setIsInteracting] = React.useState(false);\n\n return (\n <AnimateInteractionsContext.Provider\n value={{ isInsideAnimateInteractionsContainer: true, isInteracting }}\n >\n <Pressable\n onPressIn={() => setIsInteracting(true)}\n onPressOut={() => setIsInteracting(false)}\n >\n {children}\n </Pressable>\n </AnimateInteractionsContext.Provider>\n );\n};\n\nexport { AnimateInteractions };\n"],"names":["this","AnimateInteractions","_ref","children","_ref$motionTriggers","motionTriggers","_React$useState","React","useState","_React$useState2","_slicedToArray","isInteracting","setIsInteracting","_jsx","AnimateInteractionsContext","Provider","value","isInsideAnimateInteractionsContainer","Pressable","onPressIn","onPressOut"],"mappings":";;;;;;AAAA,IAAA,KAAA,CAAAA,SAAA,CAAA,YAAA,CAAA,gHAAA,CA0CM,IAAAC,mBAAmB,CAAG,SAAtBA,mBAAmBA,CAAAC,IAAA,CAM2B,CAAA,IALlDC,QAAQ,CAAAD,IAAA,CAARC,QAAQ,CAAAC,mBAAA,CAAAF,IAAA,CAIRG,cAAc,CAAdA,cAAc,CAAAD,mBAAA,GAAG,KAAA,CAAA,CAAA,CAAC,OAAO,CAAC,CAAAA,mBAAA,CAE1B,IAAAE,eAAA,CAA0CC,cAAK,CAACC,QAAQ,CAAC,KAAK,CAAC,CAAAC,gBAAA,CAAAC,cAAA,CAAAJ,eAAA,IAAxDK,aAAa,CAAAF,gBAAA,CAAA,CAAA,CAAA,CAAEG,gBAAgB,CAAAH,gBAAA,CAAA,CAAA,CAAA,CAEtC,OACEI,GAAA,CAACC,0BAA0B,CAACC,QAAQ,CAClCC,CAAAA,KAAK,CAAE,CAAEC,oCAAoC,CAAE,IAAI,CAAEN,aAAa,CAAbA,aAAc,CAAE,CAAAR,QAAA,CAErEU,GAAA,CAACK,SAAS,CACRC,CAAAA,SAAS,CAAE,SAAXA,SAASA,EAAQ,CAAA,OAAAP,gBAAgB,CAAC,IAAI,CAAC,CAAA,CAAC,CACxCQ,UAAU,CAAE,SAAZA,UAAUA,EAAQ,CAAA,OAAAR,gBAAgB,CAAC,KAAK,CAAC,CAAC,CAAA,CAAAT,QAAA,CAEzCA,QAAQ,CACA,CAAC,CACuB,CAAC,CAE1C;;;;"}
@@ -0,0 +1,6 @@
1
+ import React__default from 'react';
2
+
3
+ var AnimateInteractionsContext=React__default.createContext({isInsideAnimateInteractionsContainer:false,isInteracting:false});var useAnimateInteractions=function useAnimateInteractions(){var animateInteractionsContextValue=React__default.useContext(AnimateInteractionsContext);return animateInteractionsContextValue;};
4
+
5
+ export { AnimateInteractionsContext, useAnimateInteractions };
6
+ //# sourceMappingURL=AnimateInteractionsProvider.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"AnimateInteractionsProvider.js","sources":["../../../../../src/components/AnimateInteractions/AnimateInteractionsProvider.tsx"],"sourcesContent":["import React from 'react';\n\ntype AnimateInteractionsContextType = {\n isInsideAnimateInteractionsContainer: boolean;\n /**\n * Native-only: current interaction state of the parent `AnimateInteractions` container.\n *\n * On native there is no hover / DOM focus-within, so `AnimateInteractions.native` publishes a\n * press-and-hold flag here and the shared `BaseMotion.native` engine reads it to drive every\n * `on-animate-interactions` descendant towards `'animate'` (interacting) or `'exit'` (idle).\n *\n * Web ignores this field — framer control propagation handles descendant animation there.\n */\n isInteracting?: boolean;\n};\n\nconst AnimateInteractionsContext = React.createContext<AnimateInteractionsContextType>({\n isInsideAnimateInteractionsContainer: false,\n isInteracting: false,\n});\n\nconst useAnimateInteractions = (): AnimateInteractionsContextType => {\n const animateInteractionsContextValue = React.useContext(AnimateInteractionsContext);\n return animateInteractionsContextValue;\n};\n\nexport { useAnimateInteractions, AnimateInteractionsContext };\n"],"names":["AnimateInteractionsContext","React","createContext","isInsideAnimateInteractionsContainer","isInteracting","useAnimateInteractions","animateInteractionsContextValue","useContext"],"mappings":";;AAgBM,IAAAA,0BAA0B,CAAGC,cAAK,CAACC,aAAa,CAAiC,CACrFC,oCAAoC,CAAE,KAAK,CAC3CC,aAAa,CAAE,KACjB,CAAC,EAEK,IAAAC,sBAAsB,CAAG,SAAzBA,sBAAsBA,EAAyC,CACnE,IAAMC,+BAA+B,CAAGL,cAAK,CAACM,UAAU,CAACP,0BAA0B,CAAC,CACpF,OAAOM,+BAA+B,CACxC;;;;"}
@@ -0,0 +1,22 @@
1
+ import _slicedToArray from '@babel/runtime/helpers/slicedToArray';
2
+ import _objectWithoutProperties from '@babel/runtime/helpers/objectWithoutProperties';
3
+ import React__default from 'react';
4
+ import { Pressable, InteractionManager } from 'react-native';
5
+ import styled from 'styled-components/native';
6
+ import Animated from 'react-native-reanimated';
7
+ import { mergeRefs } from '@mantine/hooks';
8
+ import { useMotionVariants } from './baseMotionUtils.js';
9
+ import { useAnimatedVariant } from './baseMotionInterpreter.native.js';
10
+ import { useAnimateInteractions } from '../AnimateInteractions/AnimateInteractionsProvider.js';
11
+ import { useStagger } from '../Stagger/StaggerProvider.js';
12
+ import { useMemoizedStyles } from '../Box/BaseBox/useMemoizedStyles.native.js';
13
+ import '../../utils/index.js';
14
+ import '../../utils/logger/index.js';
15
+ import { jsx } from 'react/jsx-runtime';
16
+ import { logger } from '../../utils/logger/logger.js';
17
+ import { castNativeType } from '../../utils/platform/castUtils.js';
18
+
19
+ var _this=undefined,_jsxFileName="/home/runner/work/blade/blade/packages/blade/src/components/BaseMotion/BaseMotion.native.tsx";var _excluded=["boxShadow","transition","cursor","transform","outline"],_excluded2=["children","motionVariants","type","motionTriggers","animateVisibility","animate","as","_motionMeta","_onAnimationComplete"],_excluded3=["children"];var StyledDiv=styled(Animated.View)(function(props){var boxStyles=useMemoizedStyles(props);var _boxShadow=boxStyles.boxShadow,_transition=boxStyles.transition,_cursor=boxStyles.cursor,_transform=boxStyles.transform,_outline=boxStyles.outline,nativeStyles=_objectWithoutProperties(boxStyles,_excluded);return nativeStyles;});var MotionDiv=StyledDiv;var _BaseMotionBox=function _BaseMotionBox(_ref,ref){var children=_ref.children,userMotionVariants=_ref.motionVariants,_ref$type=_ref.type,type=_ref$type===void 0?'inout':_ref$type,_ref$motionTriggers=_ref.motionTriggers,motionTriggers=_ref$motionTriggers===void 0?['mount']:_ref$motionTriggers,animateVisibility=_ref.animateVisibility,animate=_ref.animate,_as=_ref.as,_motionMeta=_ref._motionMeta,_onAnimationComplete=_ref._onAnimationComplete,rest=_objectWithoutProperties(_ref,_excluded2);var _useAnimateInteractio=useAnimateInteractions(),isInsideAnimateInteractionsContainer=_useAnimateInteractio.isInsideAnimateInteractionsContainer,isInteracting=_useAnimateInteractio.isInteracting;var _useStagger=useStagger(),isInsideStaggerContainer=_useStagger.isInsideStaggerContainer,staggerType=_useStagger.staggerType,staggerDelay=_useStagger.staggerDelay,staggerVisibility=_useStagger.staggerVisibility,isLastStaggerChild=_useStagger.isLastStaggerChild,onStaggerComplete=_useStagger.onStaggerComplete;if(__DEV__&&_as){logger({type:'warn',moduleName:'BaseMotion',message:'The "as" prop is not supported on React Native (no arbitrary-tag semantics). '+'It is silently ignored — children are wrapped in an Animated.View instead.'});}if(__DEV__){var degradedTriggers=motionTriggers.filter(function(t){return t==='hover'||t==='in-view'||t==='focus';});if(degradedTriggers.length>0){logger({type:'warn',moduleName:'BaseMotion',message:`Trigger(s) [${degradedTriggers.join(', ')}] are not supported on React Native and `+'degrade to "mount" (animate-on-mount). Touch devices have no hover/focus/IntersectionObserver '+'equivalents.'});}}var resolvedMotionVariants=useMotionVariants(userMotionVariants,isInsideStaggerContainer?staggerType:type);var motionVariants=React__default.useMemo(function(){var _resolvedMotionVarian,_resolvedMotionVarian2,_resolvedMotionVarian3,_resolvedMotionVarian4,_resolvedMotionVarian5,_resolvedMotionVarian6,_resolvedMotionVarian7,_resolvedMotionVarian8;if(!isInsideStaggerContainer||!staggerDelay||!resolvedMotionVariants){return resolvedMotionVariants;}return {initial:resolvedMotionVariants.initial,animate:Object.assign({},resolvedMotionVariants.animate,{transition:Object.assign({},(_resolvedMotionVarian=resolvedMotionVariants.animate)==null?void 0:_resolvedMotionVarian.transition,{delay:((_resolvedMotionVarian2=(_resolvedMotionVarian3=resolvedMotionVariants.animate)==null?void 0:(_resolvedMotionVarian4=_resolvedMotionVarian3.transition)==null?void 0:_resolvedMotionVarian4.delay)!=null?_resolvedMotionVarian2:0)+staggerDelay.enter})}),exit:Object.assign({},resolvedMotionVariants.exit,{transition:Object.assign({},(_resolvedMotionVarian5=resolvedMotionVariants.exit)==null?void 0:_resolvedMotionVarian5.transition,{delay:((_resolvedMotionVarian6=(_resolvedMotionVarian7=resolvedMotionVariants.exit)==null?void 0:(_resolvedMotionVarian8=_resolvedMotionVarian7.transition)==null?void 0:_resolvedMotionVarian8.delay)!=null?_resolvedMotionVarian6:0)+staggerDelay.exit})})};},[isInsideStaggerContainer,staggerDelay,resolvedMotionVariants]);var hasTap=motionTriggers.includes('tap');var isAnimateInteractionsDriven=isInsideAnimateInteractionsContainer&&motionTriggers.includes('on-animate-interactions');var _React$useState=React__default.useState(false),_React$useState2=_slicedToArray(_React$useState,2),isMounted=_React$useState2[0],setIsMounted=_React$useState2[1];var _React$useState3=React__default.useState(false),_React$useState4=_slicedToArray(_React$useState3,2),isPressed=_React$useState4[0],setIsPressed=_React$useState4[1];React__default.useEffect(function(){setIsMounted(true);},[]);var nativeAnimate=castNativeType(animate);var targetName='initial';if(isInsideStaggerContainer&&staggerVisibility){targetName=staggerVisibility;}else if(isAnimateInteractionsDriven){var driven=typeof isInteracting==='boolean'?isInteracting:typeof nativeAnimate==='boolean'?nativeAnimate:false;targetName=driven?'animate':'exit';}else if(animateVisibility){targetName=animateVisibility;}else if(hasTap){targetName=isPressed?'animate':'initial';}else {targetName=isMounted?'animate':'initial';}var handleAnimationComplete=React__default.useCallback(function(completedTarget){_onAnimationComplete==null?void 0:_onAnimationComplete(completedTarget);if(isInsideStaggerContainer&&isLastStaggerChild){onStaggerComplete==null?void 0:onStaggerComplete(completedTarget);}},[_onAnimationComplete,isInsideStaggerContainer,isLastStaggerChild,onStaggerComplete]);var animatedStyle=useAnimatedVariant({variants:motionVariants,targetName:targetName,onAnimationComplete:handleAnimationComplete});var motionContent=jsx(MotionDiv,Object.assign({ref:ref,style:animatedStyle},rest,{children:children}));if(hasTap){return jsx(Pressable,{onPressIn:function onPressIn(){return setIsPressed(true);},onPressOut:function onPressOut(){return setIsPressed(false);},children:motionContent});}return motionContent;};var BaseMotionBox=React__default.forwardRef(_BaseMotionBox);var _BaseMotionEnhancerBox=function _BaseMotionEnhancerBox(_ref2,ref){var _ref3;var children=_ref2.children,motionBoxArgs=_objectWithoutProperties(_ref2,_excluded3);var childRef=(_ref3=children.props.ref)!=null?_ref3:null;return jsx(BaseMotionBox,Object.assign({ref:mergeRefs(childRef,ref!=null?ref:null)},motionBoxArgs,{children:children}));};var BaseMotionEnhancerBox=React__default.forwardRef(_BaseMotionEnhancerBox);var BaseMotionEntryExit=function BaseMotionEntryExit(_ref4){var children=_ref4.children,motionVariants=_ref4.motionVariants,_ref4$isVisible=_ref4.isVisible,isVisible=_ref4$isVisible===void 0?true:_ref4$isVisible,_ref4$type=_ref4.type,type=_ref4$type===void 0?'inout':_ref4$type,_ref4$motionTriggers=_ref4.motionTriggers,motionTriggers=_ref4$motionTriggers===void 0?['mount']:_ref4$motionTriggers,_ref4$shouldUnmountWh=_ref4.shouldUnmountWhenHidden,shouldUnmountWhenHidden=_ref4$shouldUnmountWh===void 0?false:_ref4$shouldUnmountWh;var _React$useState5=React__default.useState(shouldUnmountWhenHidden?isVisible:true),_React$useState6=_slicedToArray(_React$useState5,2),isMounted=_React$useState6[0],setIsMounted=_React$useState6[1];var isVisibleRef=React__default.useRef(isVisible);isVisibleRef.current=isVisible;var interactionHandleRef=React__default.useRef(null);React__default.useEffect(function(){if(isVisible){setIsMounted(true);}},[isVisible]);var handleAnimationComplete=React__default.useCallback(function(targetName){if(targetName!=='exit'||!shouldUnmountWhenHidden)return;interactionHandleRef.current=InteractionManager.runAfterInteractions(function(){if(!isVisibleRef.current){setIsMounted(false);}});},[shouldUnmountWhenHidden]);React__default.useEffect(function(){return function(){var _interactionHandleRef;(_interactionHandleRef=interactionHandleRef.current)==null?void 0:_interactionHandleRef.cancel==null?void 0:_interactionHandleRef.cancel();};},[]);var motionMeta=React__default.useMemo(function(){var _ref5;return {isEnhanced:true,innerRef:(_ref5=children.ref)!=null?_ref5:null};},[children.ref]);if(!isMounted){return null;}return jsx(BaseMotionBox,{motionVariants:motionVariants,motionTriggers:motionTriggers,type:type,animateVisibility:isVisible?'animate':'exit',_motionMeta:motionMeta,_onAnimationComplete:handleAnimationComplete,children:children});};
20
+
21
+ export { BaseMotionBox, BaseMotionEnhancerBox, BaseMotionEntryExit, MotionDiv };
22
+ //# sourceMappingURL=BaseMotion.native.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"BaseMotion.native.js","sources":["../../../../../src/components/BaseMotion/BaseMotion.native.tsx"],"sourcesContent":["import React from 'react';\nimport { Pressable, InteractionManager } from 'react-native';\nimport type { View } from 'react-native';\nimport styled from 'styled-components/native';\nimport Animated from 'react-native-reanimated';\nimport { mergeRefs } from '@mantine/hooks';\nimport type { CSSObject } from 'styled-components';\nimport type {\n BaseMotionBoxProps,\n BaseMotionEntryExitProps,\n MotionMeta,\n MotionVariantsType,\n} from './types';\nimport { useMotionVariants } from './baseMotionUtils';\nimport { useAnimatedVariant } from './baseMotionInterpreter.native';\nimport { useAnimateInteractions } from '~components/AnimateInteractions/AnimateInteractionsProvider';\nimport { useStagger } from '~components/Stagger/StaggerProvider';\nimport { useMemoizedStyles } from '~components/Box/BaseBox/useMemoizedStyles';\nimport type { BoxProps } from '~components/Box';\nimport type { Theme } from '~components/BladeProvider';\nimport { castNativeType } from '~utils';\nimport { logger } from '~utils/logger';\n\n/**\n * Internal-only props threaded through the native engine. `_onAnimationComplete` lets\n * `BaseMotionEntryExit` react to the exit transition completing (for manual unmount) since native\n * has no `AnimatePresence`.\n */\ntype BaseMotionBoxNativeProps = BaseMotionBoxProps & {\n _motionMeta?: MotionMeta;\n _onAnimationComplete?: (targetName: keyof MotionVariantsType) => void;\n};\n\n// `style` (animated) and `pointerEvents` come from `Animated.View` itself and conflict with the\n// web `BoxProps` shapes, so they're omitted from the styled generic.\ntype MotionDivProps = Omit<BoxProps, 'style' | 'pointerEvents' | 'as'>;\n\n/**\n * Empty styled component so box/layout style props are still honoured on native, mirroring the web\n * `StyledDiv`. Web-only CSS is stripped since `Animated.View` can't consume it.\n */\nconst StyledDiv = styled(Animated.View)<MotionDivProps>((props) => {\n const boxStyles = useMemoizedStyles((props as unknown) as BoxProps & { theme: Theme }) as Record<\n string,\n unknown\n >;\n const {\n boxShadow: _boxShadow,\n transition: _transition,\n cursor: _cursor,\n transform: _transform,\n outline: _outline,\n ...nativeStyles\n } = boxStyles;\n\n return nativeStyles as CSSObject;\n});\n\n/**\n * `MotionDiv` — native counterpart of `motion(StyledDiv)`.\n *\n * **API divergence from web:** On web, `MotionDiv` is `motion(StyledDiv)` and accepts\n * framer-motion props (`animate`, `initial`, `exit`, `variants`, etc.). On native, there is\n * no framer-motion runtime — `MotionDiv` is simply a styled `Animated.View` that accepts a\n * resolved animated `style` prop. Framer-style declarative props are NOT supported; animation\n * is driven by `useAnimatedVariant` inside `BaseMotionBox` instead. Used directly by `Morph`\n * (layout morph is degraded — see PR description for known limitations).\n */\nconst MotionDiv = StyledDiv;\n\nconst _BaseMotionBox = (\n {\n children,\n motionVariants: userMotionVariants,\n type = 'inout',\n motionTriggers = ['mount'],\n animateVisibility,\n animate,\n // `as` has no arbitrary-tag semantics on native; children are wrapped instead.\n as: _as,\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n _motionMeta,\n _onAnimationComplete,\n ...rest\n }: BaseMotionBoxNativeProps,\n ref: React.Ref<View>,\n): React.ReactElement => {\n const { isInsideAnimateInteractionsContainer, isInteracting } = useAnimateInteractions();\n const {\n isInsideStaggerContainer,\n staggerType,\n staggerDelay,\n staggerVisibility,\n isLastStaggerChild,\n onStaggerComplete,\n } = useStagger();\n\n if (__DEV__ && _as) {\n logger({\n type: 'warn',\n moduleName: 'BaseMotion',\n message:\n 'The \"as\" prop is not supported on React Native (no arbitrary-tag semantics). ' +\n 'It is silently ignored — children are wrapped in an Animated.View instead.',\n });\n }\n\n if (__DEV__) {\n const degradedTriggers = motionTriggers.filter(\n (t) => t === 'hover' || t === 'in-view' || t === 'focus',\n );\n if (degradedTriggers.length > 0) {\n logger({\n type: 'warn',\n moduleName: 'BaseMotion',\n message:\n `Trigger(s) [${degradedTriggers.join(', ')}] are not supported on React Native and ` +\n 'degrade to \"mount\" (animate-on-mount). Touch devices have no hover/focus/IntersectionObserver ' +\n 'equivalents.',\n });\n }\n }\n\n const resolvedMotionVariants = useMotionVariants(\n userMotionVariants,\n isInsideStaggerContainer ? staggerType : type,\n );\n\n // Inside a Stagger, the parent injects a per-child offset into the resolved variants (the\n // interpreter reads `transition.delay`). This is the single choke point where the delay is\n // applied, so child presets stay oblivious. Guarded behind `isInsideStaggerContainer` so\n // standalone usage is byte-for-byte unchanged.\n const motionVariants = React.useMemo<MotionVariantsType | undefined>(() => {\n if (!isInsideStaggerContainer || !staggerDelay || !resolvedMotionVariants) {\n return resolvedMotionVariants;\n }\n return {\n initial: resolvedMotionVariants.initial,\n animate: {\n ...resolvedMotionVariants.animate,\n transition: {\n ...resolvedMotionVariants.animate?.transition,\n delay: (resolvedMotionVariants.animate?.transition?.delay ?? 0) + staggerDelay.enter,\n },\n },\n exit: {\n ...resolvedMotionVariants.exit,\n transition: {\n ...resolvedMotionVariants.exit?.transition,\n delay: (resolvedMotionVariants.exit?.transition?.delay ?? 0) + staggerDelay.exit,\n },\n },\n };\n }, [isInsideStaggerContainer, staggerDelay, resolvedMotionVariants]);\n\n const hasTap = motionTriggers.includes('tap');\n const isAnimateInteractionsDriven =\n isInsideAnimateInteractionsContainer && motionTriggers.includes('on-animate-interactions');\n\n const [isMounted, setIsMounted] = React.useState(false);\n const [isPressed, setIsPressed] = React.useState(false);\n\n React.useEffect(() => {\n setIsMounted(true);\n }, []);\n\n const nativeAnimate = castNativeType(animate);\n\n // Derive the current declarative target from the active triggers.\n // Priority: stagger visibility → AnimateInteractions control flag → explicit visibility → tap →\n // mount (+ degraded hover / focus / in-view which all fall back to animate-on-mount on touch\n // devices).\n //\n // `isAnimateInteractionsDriven` deliberately outranks `animateVisibility`: presets wrapped in\n // `AnimateInteractions` render through `BaseMotionEntryExit`, which always threads\n // `animateVisibility='animate'` (default `isVisible`). Letting that win would pin the child open\n // and swallow the interaction. This mirrors the web engine, where `shouldSkipAnimationVariables`\n // discards `animateVisibility` for `on-animate-interactions` children so framer's control\n // propagation drives them instead.\n let targetName: keyof MotionVariantsType = 'initial';\n if (isInsideStaggerContainer && staggerVisibility) {\n // Inside a Stagger the container owns visibility: every child animates towards the shared\n // target (offset by its own `staggerDelay`) rather than its local mount / trigger state.\n targetName = staggerVisibility;\n } else if (isAnimateInteractionsDriven) {\n // Prefer the context signal published by `AnimateInteractions.native` (press-and-hold);\n // fall back to the legacy `animate` boolean prop for any direct caller. `false` maps to\n // `'exit'` (the resting/hidden target) so descendants start idle before first interaction.\n const driven =\n typeof isInteracting === 'boolean'\n ? isInteracting\n : typeof nativeAnimate === 'boolean'\n ? nativeAnimate\n : false;\n targetName = driven ? 'animate' : 'exit';\n } else if (animateVisibility) {\n targetName = animateVisibility;\n } else if (hasTap) {\n targetName = isPressed ? 'animate' : 'initial';\n } else {\n targetName = isMounted ? 'animate' : 'initial';\n }\n\n // The last stagger child (largest total exit time) also notifies the container so it can defer\n // its unmount until the final child's exit completes. Additive: the child's own\n // `_onAnimationComplete` (if any) still fires.\n const handleAnimationComplete = React.useCallback(\n (completedTarget: keyof MotionVariantsType) => {\n _onAnimationComplete?.(completedTarget);\n if (isInsideStaggerContainer && isLastStaggerChild) {\n onStaggerComplete?.(completedTarget);\n }\n },\n [_onAnimationComplete, isInsideStaggerContainer, isLastStaggerChild, onStaggerComplete],\n );\n\n const animatedStyle = useAnimatedVariant({\n variants: motionVariants,\n targetName,\n onAnimationComplete: handleAnimationComplete,\n });\n\n const motionContent = (\n <MotionDiv ref={ref as never} style={animatedStyle} {...(rest as MotionDivProps)}>\n {children}\n </MotionDiv>\n );\n\n if (hasTap) {\n return (\n <Pressable onPressIn={() => setIsPressed(true)} onPressOut={() => setIsPressed(false)}>\n {motionContent}\n </Pressable>\n );\n }\n\n return motionContent;\n};\n\n/**\n * Base motion component that resolves the target variant from triggers and drives the reanimated\n * interpreter.\n */\nconst BaseMotionBox = React.forwardRef(_BaseMotionBox);\n\nconst _BaseMotionEnhancerBox: React.ForwardRefRenderFunction<View, BaseMotionBoxNativeProps> = (\n { children, ...motionBoxArgs },\n ref,\n) => {\n const childRef = (children.props as { ref?: React.Ref<View> }).ref ?? null;\n\n return (\n <BaseMotionBox\n // Preserve the child's own ref alongside the forwarded ref (used by AnimateInteractions).\n ref={mergeRefs(childRef, ref ?? null)}\n {...motionBoxArgs}\n >\n {children}\n </BaseMotionBox>\n );\n};\n\n/**\n * Used in AnimateInteractions, Scale, etc.\n *\n * On native there is no arbitrary-tag `as`, so instead of cloning the child element we wrap it in\n * the animated `Animated.View` rendered by `BaseMotionBox`.\n *\n * **Known layout divergence from web:** On web, `BaseMotionEnhancerBox` clones the child element\n * and applies animation styles directly to it (no extra DOM node). On native, we must wrap the\n * child in an extra `Animated.View` because React Native does not support arbitrary-tag `as`.\n * This introduces an additional view node in the hierarchy, which may cause minor layout\n * differences (e.g., extra nesting in flexbox). Consumers should be aware of this when porting\n * layouts that depend on the enhancer not adding a wrapper.\n */\nconst BaseMotionEnhancerBox = React.forwardRef(_BaseMotionEnhancerBox);\n\n/**\n * Base component for entry / exit animations.\n *\n * Native has no `AnimatePresence`, so mount/unmount is controlled manually (mirroring\n * `CollapsibleBodyContent.native.tsx`): on exit we keep the node mounted, run the exit variant, and\n * unmount only once the reanimated transition reports completion via `_onAnimationComplete`.\n */\nconst BaseMotionEntryExit = ({\n children,\n motionVariants,\n isVisible = true,\n type = 'inout',\n motionTriggers = ['mount'],\n shouldUnmountWhenHidden = false,\n}: BaseMotionEntryExitProps): React.ReactElement | null => {\n const [isMounted, setIsMounted] = React.useState(shouldUnmountWhenHidden ? isVisible : true);\n\n // Synchronous read of the latest visibility for the deferred unmount callback, guarding against\n // rapid toggles (visible → hidden → visible before the exit animation completes).\n const isVisibleRef = React.useRef(isVisible);\n isVisibleRef.current = isVisible;\n\n // Declared before handleAnimationComplete so the callback can store the handle for cleanup.\n const interactionHandleRef = React.useRef<{ cancel?: () => void } | null>(null);\n\n React.useEffect(() => {\n if (isVisible) {\n setIsMounted(true);\n }\n // When hiding with `shouldUnmountWhenHidden`, we stay mounted until the exit animation\n // completes (see `handleAnimationComplete`), so nothing to do here on the falsy branch.\n }, [isVisible]);\n\n const handleAnimationComplete = React.useCallback(\n (targetName: keyof MotionVariantsType) => {\n if (targetName !== 'exit' || !shouldUnmountWhenHidden) return;\n // Use InteractionManager.runAfterInteractions instead of requestAnimationFrame so the\n // callback fires even when the app is backgrounded (rAF may be paused by the OS).\n // The handle is stored for cleanup on unmount to prevent memory leaks.\n interactionHandleRef.current = InteractionManager.runAfterInteractions(() => {\n if (!isVisibleRef.current) {\n setIsMounted(false);\n }\n });\n },\n [shouldUnmountWhenHidden],\n );\n\n // Cleanup pending InteractionManager callback on unmount.\n React.useEffect(() => {\n return () => {\n interactionHandleRef.current?.cancel?.();\n };\n }, []);\n\n const motionMeta: MotionMeta = React.useMemo(() => {\n return {\n isEnhanced: true,\n innerRef: ((children as { ref?: React.Ref<View> }).ref ?? null) as MotionMeta['innerRef'],\n };\n // Depend on the child's ref identity rather than the entire children object, which changes\n // every render and would make the memo ineffective.\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [(children as { ref?: React.Ref<View> }).ref]);\n\n if (!isMounted) {\n return null;\n }\n\n return (\n <BaseMotionBox\n motionVariants={motionVariants}\n motionTriggers={motionTriggers}\n type={type}\n // Always drive visibility on native so the exit animation (and its completion callback) runs.\n animateVisibility={isVisible ? 'animate' : 'exit'}\n _motionMeta={motionMeta}\n _onAnimationComplete={handleAnimationComplete}\n >\n {children}\n </BaseMotionBox>\n );\n};\n\nexport { MotionDiv, BaseMotionBox, BaseMotionEnhancerBox, BaseMotionEntryExit };\n"],"names":["this","StyledDiv","styled","Animated","View","props","boxStyles","useMemoizedStyles","_boxShadow","boxShadow","_transition","transition","_cursor","cursor","_transform","transform","_outline","outline","nativeStyles","_objectWithoutProperties","_excluded","MotionDiv","_BaseMotionBox","_ref","ref","children","userMotionVariants","motionVariants","_ref$type","type","_ref$motionTriggers","motionTriggers","animateVisibility","animate","_as","as","_motionMeta","_onAnimationComplete","rest","_excluded2","_useAnimateInteractio","useAnimateInteractions","isInsideAnimateInteractionsContainer","isInteracting","_useStagger","useStagger","isInsideStaggerContainer","staggerType","staggerDelay","staggerVisibility","isLastStaggerChild","onStaggerComplete","__DEV__","logger","moduleName","message","degradedTriggers","filter","t","length","join","resolvedMotionVariants","useMotionVariants","React","useMemo","_resolvedMotionVarian","_resolvedMotionVarian2","_resolvedMotionVarian3","_resolvedMotionVarian4","_resolvedMotionVarian5","_resolvedMotionVarian6","_resolvedMotionVarian7","_resolvedMotionVarian8","initial","Object","assign","delay","enter","exit","hasTap","includes","isAnimateInteractionsDriven","_React$useState","useState","_React$useState2","_slicedToArray","isMounted","setIsMounted","_React$useState3","_React$useState4","isPressed","setIsPressed","useEffect","nativeAnimate","castNativeType","targetName","driven","handleAnimationComplete","useCallback","completedTarget","animatedStyle","useAnimatedVariant","variants","onAnimationComplete","motionContent","_jsx","style","Pressable","onPressIn","onPressOut","BaseMotionBox","forwardRef","_BaseMotionEnhancerBox","_ref2","_ref3","motionBoxArgs","_excluded3","childRef","mergeRefs","BaseMotionEnhancerBox","BaseMotionEntryExit","_ref4","_ref4$isVisible","isVisible","_ref4$type","_ref4$motionTriggers","_ref4$shouldUnmountWh","shouldUnmountWhenHidden","_React$useState5","_React$useState6","isVisibleRef","useRef","current","interactionHandleRef","InteractionManager","runAfterInteractions","_interactionHandleRef","cancel","motionMeta","_ref5","isEnhanced","innerRef"],"mappings":"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"}
@@ -0,0 +1,11 @@
1
+ import _slicedToArray from '@babel/runtime/helpers/slicedToArray';
2
+ import React__default from 'react';
3
+ import { Dimensions, useWindowDimensions } from 'react-native';
4
+ import { Easing, interpolateColor, useSharedValue, withDelay, withTiming, runOnJS, useAnimatedStyle } from 'react-native-reanimated';
5
+ import '../../utils/logger/index.js';
6
+ import { logger } from '../../utils/logger/logger.js';
7
+
8
+ var DEFAULT_DURATION_SEC=0.3;var SUPPORTED_VARIANT_KEYS=new Set(['opacity','scale','x','y','rotate','transform','backgroundColor','color','borderRadius','transition','transitionEnd']);var SUPPORTED_TRANSFORM_FUNCTIONS=new Set(['translateX','translateY','scale','rotate']);var getWindowDimensions=function getWindowDimensions(){return Dimensions.get('window');};var parseUnit=function parseUnit(raw,dimensions){var numeric=parseFloat(raw);if(Number.isNaN(numeric))return 0;var dims=dimensions!=null?dimensions:getWindowDimensions();if(raw.includes('vw'))return numeric/100*dims.width;if(raw.includes('vh'))return numeric/100*dims.height;if(raw.trim().endsWith('%')){if(__DEV__&&numeric!==0){logger({type:'warn',moduleName:'BaseMotion',message:`Percentage-based transform value "${raw}" is not supported on native (cannot resolve `+'to px without layout measurement). It degrades to 0. Use absolute units (px) or '+'vw/vh instead.'});}return 0;}return numeric;};var parseTransform=function parseTransform(transform,dimensions){var result={};if(transform===undefined||transform===null)return result;var value=Array.isArray(transform)?transform[transform.length-1]:transform;if(Array.isArray(transform)&&transform.length>1&&__DEV__){logger({type:'warn',moduleName:'BaseMotion',message:`Framer keyframe arrays (length ${transform.length}) are not supported on native — `+'multi-step keyframe animations will appear as a single-step transition to the last '+'keyframe value. This is a known Phase 1 limitation.'});}if(typeof value!=='string')return result;var transformRegex=/(\w+)\(([^)]+)\)/g;var match=transformRegex.exec(value);while(match!==null){var fn=match[1];var raw=match[2].trim();if(fn==='translateX'){result.translateX=parseUnit(raw,dimensions);}else if(fn==='translateY'){result.translateY=parseUnit(raw,dimensions);}else if(fn==='scale'){result.scale=parseFloat(raw);}else if(fn==='rotate'){result.rotate=parseFloat(raw);}else if(__DEV__&&!SUPPORTED_TRANSFORM_FUNCTIONS.has(fn)){logger({type:'warn',moduleName:'BaseMotion',message:`Transform function "${fn}" is not supported on native and will be silently dropped. `+'Supported functions: translateX, translateY, scale, rotate.'});}match=transformRegex.exec(value);}return result;};var resolveScalar=function resolveScalar(value){var resolved=Array.isArray(value)?value[value.length-1]:value;if(typeof resolved==='number')return resolved;if(typeof resolved==='string'){return parseUnit(resolved);}return undefined;};var resolveColor=function resolveColor(value){var resolved=Array.isArray(value)?value[value.length-1]:value;return typeof resolved==='string'?resolved:undefined;};var resolveVariantStyle=function resolveVariantStyle(variant,dimensions){var resolved={};if(!variant)return resolved;var variantRecord=variant;if(variantRecord.opacity!==undefined)resolved.opacity=resolveScalar(variantRecord.opacity);if(variantRecord.scale!==undefined)resolved.scale=resolveScalar(variantRecord.scale);if(variantRecord.x!==undefined)resolved.translateX=resolveScalar(variantRecord.x);if(variantRecord.y!==undefined)resolved.translateY=resolveScalar(variantRecord.y);if(variantRecord.rotate!==undefined)resolved.rotate=resolveScalar(variantRecord.rotate);if(variantRecord.borderRadius!==undefined){resolved.borderRadius=resolveScalar(variantRecord.borderRadius);}if(variantRecord.backgroundColor!==undefined){resolved.backgroundColor=resolveColor(variantRecord.backgroundColor);}if(variantRecord.color!==undefined){resolved.color=resolveColor(variantRecord.color);if(__DEV__){logger({type:'warn',moduleName:'BaseMotion',message:'Motion variant key "color" is not supported on native View components (it is a TextStyle-only property). '+'The color animation will be silently ignored. This is a known Phase 1 limitation — '+'color animation for text-bearing children will be addressed in the wrapper batch.'});}}if(variantRecord.transform!==undefined){Object.assign(resolved,parseTransform(variantRecord.transform,dimensions));}if(__DEV__){Object.keys(variantRecord).forEach(function(key){if(!SUPPORTED_VARIANT_KEYS.has(key)){logger({type:'warn',moduleName:'BaseMotion',message:`Motion variant key "${key}" is not supported on native and will be ignored.`});}});}return resolved;};var getTiming=function getTiming(transition){var durationSec=typeof(transition==null?void 0:transition.duration)==='number'?transition.duration:DEFAULT_DURATION_SEC;var ease=transition==null?void 0:transition.ease;var easing;if(Array.isArray(ease)&&ease.length===4&&ease.every(function(v){return typeof v==='number';})){var _ref=ease,_ref2=_slicedToArray(_ref,4),x1=_ref2[0],y1=_ref2[1],x2=_ref2[2],y2=_ref2[3];easing=Easing.bezier(x1,y1,x2,y2);}else {easing=Easing.ease;}var transitionDelay=transition==null?void 0:transition.delay;var delaySec=typeof transitionDelay==='number'?transitionDelay:0;return {duration:durationSec*1000,easing:easing,delay:delaySec*1000};};var lerp=function lerp(from,to,progress){'worklet';return from+(to-from)*progress;};var interpolateVariant=function interpolateVariant(from,to,progress){'worklet';var style={};var transform=[];if(from.opacity!==undefined||to.opacity!==undefined){var _from$opacity,_to$opacity;style.opacity=lerp((_from$opacity=from.opacity)!=null?_from$opacity:1,(_to$opacity=to.opacity)!=null?_to$opacity:1,progress);}if(from.scale!==undefined||to.scale!==undefined){var _from$scale,_to$scale;transform.push({scale:lerp((_from$scale=from.scale)!=null?_from$scale:1,(_to$scale=to.scale)!=null?_to$scale:1,progress)});}if(from.translateX!==undefined||to.translateX!==undefined){var _from$translateX,_to$translateX;transform.push({translateX:lerp((_from$translateX=from.translateX)!=null?_from$translateX:0,(_to$translateX=to.translateX)!=null?_to$translateX:0,progress)});}if(from.translateY!==undefined||to.translateY!==undefined){var _from$translateY,_to$translateY;transform.push({translateY:lerp((_from$translateY=from.translateY)!=null?_from$translateY:0,(_to$translateY=to.translateY)!=null?_to$translateY:0,progress)});}if(from.rotate!==undefined||to.rotate!==undefined){var _from$rotate,_to$rotate;transform.push({rotate:`${lerp((_from$rotate=from.rotate)!=null?_from$rotate:0,(_to$rotate=to.rotate)!=null?_to$rotate:0,progress)}deg`});}if(transform.length>0){style.transform=transform;}if(from.borderRadius!==undefined||to.borderRadius!==undefined){var _ref3,_from$borderRadius,_ref4,_to$borderRadius;var fromRadius=(_ref3=(_from$borderRadius=from.borderRadius)!=null?_from$borderRadius:to.borderRadius)!=null?_ref3:0;var toRadius=(_ref4=(_to$borderRadius=to.borderRadius)!=null?_to$borderRadius:from.borderRadius)!=null?_ref4:0;style.borderRadius=lerp(fromRadius,toRadius,progress);}if(to.backgroundColor!==undefined){style.backgroundColor=from.backgroundColor!==undefined?interpolateColor(progress,[0,1],[from.backgroundColor,to.backgroundColor]):to.backgroundColor;}if(to.color!==undefined){style.color=from.color!==undefined?interpolateColor(progress,[0,1],[from.color,to.color]):to.color;}return style;};var useAnimatedVariant=function useAnimatedVariant(_ref5){var variants=_ref5.variants,targetName=_ref5.targetName,onAnimationComplete=_ref5.onAnimationComplete;var dimensions=useWindowDimensions();var fromStyle=useSharedValue(resolveVariantStyle(variants==null?void 0:variants.initial,dimensions));var toStyle=useSharedValue(resolveVariantStyle(variants==null?void 0:variants[targetName],dimensions));var progress=useSharedValue(0);var previousTargetRef=React__default.useRef('initial');var variantsRef=React__default.useRef(variants);variantsRef.current=variants;var onAnimationCompleteRef=React__default.useRef(onAnimationComplete);onAnimationCompleteRef.current=onAnimationComplete;React__default.useEffect(function(){if(variants&&(!fromStyle.value||!toStyle.value)){fromStyle.value=resolveVariantStyle(variants==null?void 0:variants.initial,dimensions);toStyle.value=resolveVariantStyle(variants==null?void 0:variants[targetName],dimensions);}},[variants]);React__default.useEffect(function(){if(previousTargetRef.current===targetName)return;var currentVariants=variantsRef.current;var targetVariant=currentVariants==null?void 0:currentVariants[targetName];fromStyle.value=resolveVariantStyle(currentVariants==null?void 0:currentVariants[previousTargetRef.current],dimensions);toStyle.value=resolveVariantStyle(targetVariant,dimensions);previousTargetRef.current=targetName;var _getTiming=getTiming(targetVariant==null?void 0:targetVariant.transition),duration=_getTiming.duration,easing=_getTiming.easing,delay=_getTiming.delay;progress.value=0;progress.value=withDelay(delay,withTiming(1,{duration:duration,easing:easing},function(finished){if(finished&&onAnimationCompleteRef.current){runOnJS(onAnimationCompleteRef.current)(targetName);}}));},[targetName]);return useAnimatedStyle(function(){return interpolateVariant(fromStyle.value,toStyle.value,progress.value);});};
9
+
10
+ export { getTiming, parseTransform, parseUnit, resolveVariantStyle, useAnimatedVariant };
11
+ //# sourceMappingURL=baseMotionInterpreter.native.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"baseMotionInterpreter.native.js","sources":["../../../../../src/components/BaseMotion/baseMotionInterpreter.native.ts"],"sourcesContent":["/**\n * BaseMotion native interpreter\n *\n * framer-motion resolves declarative `variants={{ initial, animate, exit }}` + a target state\n * name into concrete styles for free. React Native has no such runtime, so this module\n * hand-rolls a *constrained subset* of that behaviour on top of `react-native-reanimated`:\n *\n * - `resolveVariantStyle` — reads the supported animatable keys off a variant object.\n * - `parseTransform` — turns CSS transform strings (`translateY(16px)`) into RN transform values.\n * - `useAnimatedVariant` — drives a single progress shared-value per transition and interpolates\n * from the previously resolved style to the next one.\n *\n * Only a subset of variant keys is supported (the union used by the 7 motion presets):\n * `opacity`, `scale`, `x`/`y`, `rotate`, `transform`, `backgroundColor`, `color`, `borderRadius`.\n * Unsupported keys are ignored with a dev warning so wrapper authors get feedback.\n */\nimport React from 'react';\nimport { Dimensions, useWindowDimensions } from 'react-native';\nimport type { ViewStyle } from 'react-native';\nimport {\n Easing,\n interpolateColor,\n runOnJS,\n useAnimatedStyle,\n useSharedValue,\n withDelay,\n withTiming,\n} from 'react-native-reanimated';\nimport type { EasingFunction, EasingFunctionFactory } from 'react-native-reanimated';\nimport type { Tween } from 'framer-motion';\nimport type { MotionVariantsType } from './types';\nimport { logger } from '~utils/logger';\n\ntype ResolvedVariantStyle = {\n opacity?: number;\n scale?: number;\n translateX?: number;\n translateY?: number;\n rotate?: number;\n borderRadius?: number;\n backgroundColor?: string;\n color?: string;\n};\n\ntype MotionVariant = MotionVariantsType[keyof MotionVariantsType];\n\nconst DEFAULT_DURATION_SEC = 0.3;\n\nconst SUPPORTED_VARIANT_KEYS = new Set([\n 'opacity',\n 'scale',\n 'x',\n 'y',\n 'rotate',\n 'transform',\n 'backgroundColor',\n 'color',\n 'borderRadius',\n // meta keys handled elsewhere / intentionally ignored\n 'transition',\n 'transitionEnd',\n]);\n\nconst SUPPORTED_TRANSFORM_FUNCTIONS = new Set(['translateX', 'translateY', 'scale', 'rotate']);\n\ntype WindowDimensions = { width: number; height: number };\n\nconst getWindowDimensions = (): WindowDimensions => Dimensions.get('window');\n\n/**\n * Parses a single CSS length token into a native numeric value.\n * - `px` / unitless → the raw number\n * - `vw` / `vh` → resolved against the current window dimensions\n * - `%` → cannot be resolved to px without layout measurement, degrades to 0\n *\n * Accepts an optional `dimensions` parameter so callers with fresh `useWindowDimensions`\n * values can avoid stale reads after orientation changes.\n */\nconst parseUnit = (raw: string, dimensions?: WindowDimensions): number => {\n const numeric = parseFloat(raw);\n if (Number.isNaN(numeric)) return 0;\n const dims = dimensions ?? getWindowDimensions();\n if (raw.includes('vw')) return (numeric / 100) * dims.width;\n if (raw.includes('vh')) return (numeric / 100) * dims.height;\n if (raw.trim().endsWith('%')) {\n // Percentage translate is relative to the element's own size which we can't measure here.\n // `0%` maps cleanly to 0; any other percentage degrades to 0 (documented limitation).\n if (__DEV__ && numeric !== 0) {\n logger({\n type: 'warn',\n moduleName: 'BaseMotion',\n message:\n `Percentage-based transform value \"${raw}\" is not supported on native (cannot resolve ` +\n 'to px without layout measurement). It degrades to 0. Use absolute units (px) or ' +\n 'vw/vh instead.',\n });\n }\n return 0;\n }\n return numeric;\n};\n\n/**\n * Parses a CSS transform string (or framer keyframe array) into resolved transform values.\n *\n * framer keyframe arrays (`['translateY(16px)', 'translateY(0%)']`) cannot be replayed by a\n * single-shot reanimated transition, so we use the LAST entry as the resolved target.\n */\nconst parseTransform = (\n transform: string | string[] | undefined,\n dimensions?: WindowDimensions,\n): Pick<ResolvedVariantStyle, 'translateX' | 'translateY' | 'scale' | 'rotate'> => {\n const result: Pick<ResolvedVariantStyle, 'translateX' | 'translateY' | 'scale' | 'rotate'> = {};\n if (transform === undefined || transform === null) return result;\n\n const value = Array.isArray(transform) ? transform[transform.length - 1] : transform;\n if (Array.isArray(transform) && transform.length > 1 && __DEV__) {\n logger({\n type: 'warn',\n moduleName: 'BaseMotion',\n message:\n `Framer keyframe arrays (length ${transform.length}) are not supported on native — ` +\n 'multi-step keyframe animations will appear as a single-step transition to the last ' +\n 'keyframe value. This is a known Phase 1 limitation.',\n });\n }\n if (typeof value !== 'string') return result;\n\n const transformRegex = /(\\w+)\\(([^)]+)\\)/g;\n let match: RegExpExecArray | null = transformRegex.exec(value);\n while (match !== null) {\n const fn = match[1];\n const raw = match[2].trim();\n if (fn === 'translateX') {\n result.translateX = parseUnit(raw, dimensions);\n } else if (fn === 'translateY') {\n result.translateY = parseUnit(raw, dimensions);\n } else if (fn === 'scale') {\n result.scale = parseFloat(raw);\n } else if (fn === 'rotate') {\n result.rotate = parseFloat(raw);\n } else if (__DEV__ && !SUPPORTED_TRANSFORM_FUNCTIONS.has(fn)) {\n logger({\n type: 'warn',\n moduleName: 'BaseMotion',\n message:\n `Transform function \"${fn}\" is not supported on native and will be silently dropped. ` +\n 'Supported functions: translateX, translateY, scale, rotate.',\n });\n }\n match = transformRegex.exec(value);\n }\n\n return result;\n};\n\nconst resolveScalar = (value: unknown): number | undefined => {\n const resolved = Array.isArray(value) ? value[value.length - 1] : value;\n if (typeof resolved === 'number') return resolved;\n if (typeof resolved === 'string') {\n return parseUnit(resolved);\n }\n return undefined;\n};\n\nconst resolveColor = (value: unknown): string | undefined => {\n const resolved = Array.isArray(value) ? value[value.length - 1] : value;\n return typeof resolved === 'string' ? resolved : undefined;\n};\n\n/**\n * Reads the supported animatable keys off a single variant object into a flat resolved style.\n * Unsupported keys are ignored with a dev warning.\n */\nconst resolveVariantStyle = (\n variant?: MotionVariant,\n dimensions?: WindowDimensions,\n): ResolvedVariantStyle => {\n const resolved: ResolvedVariantStyle = {};\n if (!variant) return resolved;\n\n const variantRecord = variant as Record<string, unknown>;\n\n if (variantRecord.opacity !== undefined) resolved.opacity = resolveScalar(variantRecord.opacity);\n if (variantRecord.scale !== undefined) resolved.scale = resolveScalar(variantRecord.scale);\n if (variantRecord.x !== undefined) resolved.translateX = resolveScalar(variantRecord.x);\n if (variantRecord.y !== undefined) resolved.translateY = resolveScalar(variantRecord.y);\n if (variantRecord.rotate !== undefined) resolved.rotate = resolveScalar(variantRecord.rotate);\n if (variantRecord.borderRadius !== undefined) {\n resolved.borderRadius = resolveScalar(variantRecord.borderRadius);\n }\n if (variantRecord.backgroundColor !== undefined) {\n resolved.backgroundColor = resolveColor(variantRecord.backgroundColor);\n }\n if (variantRecord.color !== undefined) {\n resolved.color = resolveColor(variantRecord.color);\n if (__DEV__) {\n logger({\n type: 'warn',\n moduleName: 'BaseMotion',\n message:\n 'Motion variant key \"color\" is not supported on native View components (it is a TextStyle-only property). ' +\n 'The color animation will be silently ignored. This is a known Phase 1 limitation — ' +\n 'color animation for text-bearing children will be addressed in the wrapper batch.',\n });\n }\n }\n if (variantRecord.transform !== undefined) {\n Object.assign(\n resolved,\n parseTransform(variantRecord.transform as string | string[], dimensions),\n );\n }\n\n if (__DEV__) {\n Object.keys(variantRecord).forEach((key) => {\n if (!SUPPORTED_VARIANT_KEYS.has(key)) {\n logger({\n type: 'warn',\n moduleName: 'BaseMotion',\n message: `Motion variant key \"${key}\" is not supported on native and will be ignored.`,\n });\n }\n });\n }\n\n return resolved;\n};\n\ntype ReanimatedEasing = EasingFunction | EasingFunctionFactory;\n\n/**\n * Converts a framer `transition` (seconds + bezier array) into reanimated `withTiming` config.\n *\n * `transition.delay` (framer, seconds) is surfaced as `delay` (ms) so callers can wrap the\n * `withTiming` in reanimated's `withDelay`. Presets that never set a delay resolve to `0`, which\n * makes `withDelay(0, …)` a no-op — keeping existing (non-delayed) behaviour intact while enabling\n * both standalone `<Fade delay />` and Stagger's per-child offset.\n */\nconst getTiming = (\n transition?: Tween,\n): { duration: number; easing: ReanimatedEasing; delay: number } => {\n const durationSec =\n typeof transition?.duration === 'number' ? transition.duration : DEFAULT_DURATION_SEC;\n const ease = transition?.ease;\n let easing: ReanimatedEasing;\n if (Array.isArray(ease) && ease.length === 4 && ease.every((v) => typeof v === 'number')) {\n const [x1, y1, x2, y2] = (ease as unknown) as number[];\n easing = Easing.bezier(x1, y1, x2, y2);\n } else {\n easing = Easing.ease;\n }\n\n // `delay` is a valid framer transition option but is not declared on the narrower `Tween` type,\n // so we read it through a cast.\n const transitionDelay = (transition as (Tween & { delay?: number }) | undefined)?.delay;\n const delaySec = typeof transitionDelay === 'number' ? transitionDelay : 0;\n\n return { duration: durationSec * 1000, easing, delay: delaySec * 1000 };\n};\n\nconst lerp = (from: number, to: number, progress: number): number => {\n 'worklet';\n return from + (to - from) * progress;\n};\n\n/**\n * Worklet that interpolates every supported property from the `from` resolved style to the `to`\n * resolved style by the given progress (0 → 1).\n */\nconst interpolateVariant = (\n from: ResolvedVariantStyle,\n to: ResolvedVariantStyle,\n progress: number,\n): ViewStyle => {\n 'worklet';\n const style: ViewStyle = {};\n const transform: ViewStyle['transform'] = [];\n\n if (from.opacity !== undefined || to.opacity !== undefined) {\n style.opacity = lerp(from.opacity ?? 1, to.opacity ?? 1, progress);\n }\n\n if (from.scale !== undefined || to.scale !== undefined) {\n transform.push({ scale: lerp(from.scale ?? 1, to.scale ?? 1, progress) });\n }\n\n if (from.translateX !== undefined || to.translateX !== undefined) {\n transform.push({ translateX: lerp(from.translateX ?? 0, to.translateX ?? 0, progress) });\n }\n\n if (from.translateY !== undefined || to.translateY !== undefined) {\n transform.push({ translateY: lerp(from.translateY ?? 0, to.translateY ?? 0, progress) });\n }\n\n if (from.rotate !== undefined || to.rotate !== undefined) {\n transform.push({ rotate: `${lerp(from.rotate ?? 0, to.rotate ?? 0, progress)}deg` });\n }\n\n if (transform.length > 0) {\n style.transform = transform;\n }\n\n if (from.borderRadius !== undefined || to.borderRadius !== undefined) {\n const fromRadius = from.borderRadius ?? to.borderRadius ?? 0;\n const toRadius = to.borderRadius ?? from.borderRadius ?? 0;\n style.borderRadius = lerp(fromRadius, toRadius, progress);\n }\n\n if (to.backgroundColor !== undefined) {\n style.backgroundColor =\n from.backgroundColor !== undefined\n ? interpolateColor(progress, [0, 1], [from.backgroundColor, to.backgroundColor])\n : to.backgroundColor;\n }\n\n if (to.color !== undefined) {\n // `color` is a TextStyle-only property in React Native — it is silently ignored by RN's\n // View component (unlike web CSS where `color` cascades to children). This value is\n // intentionally resolved and included here so that the wrapper batch can forward it to\n // child Text components (e.g., via context or a nested styled Text). A __DEV__ warning is\n // emitted in `resolveVariantStyle` when the `color` variant key is used.\n (style as ViewStyle & { color?: string }).color =\n from.color !== undefined\n ? interpolateColor(progress, [0, 1], [from.color, to.color])\n : to.color;\n }\n\n return style;\n};\n\ntype UseAnimatedVariantArgs = {\n variants?: MotionVariantsType;\n /** Current declarative target state: `'initial' | 'animate' | 'exit'`. */\n targetName: keyof MotionVariantsType;\n /** Fired (on the JS thread) when the transition to `targetName` completes uninterrupted. */\n onAnimationComplete?: (targetName: keyof MotionVariantsType) => void;\n};\n\n/**\n * Drives one progress shared-value per transition. On `targetName` change it interpolates from the\n * previously resolved style to the newly resolved one using the target variant's transition.\n *\n * Uses a ref to track the latest `variants` so that the animated-style worklet always reads\n * current values without adding `variants` to the effect dependency array (which would cause\n * unnecessary re-runs on every parent render).\n */\nconst useAnimatedVariant = ({\n variants,\n targetName,\n onAnimationComplete,\n}: UseAnimatedVariantArgs): ReturnType<typeof useAnimatedStyle> => {\n const dimensions = useWindowDimensions();\n const fromStyle = useSharedValue<ResolvedVariantStyle>(\n resolveVariantStyle(variants?.initial, dimensions),\n );\n const toStyle = useSharedValue<ResolvedVariantStyle>(\n resolveVariantStyle(variants?.[targetName], dimensions),\n );\n const progress = useSharedValue(0);\n const previousTargetRef = React.useRef<keyof MotionVariantsType>('initial');\n\n // Keep a ref to the latest variants so the effect closure always sees fresh values without\n // needing to add `variants` to the dependency array.\n const variantsRef = React.useRef(variants);\n variantsRef.current = variants;\n\n // Keep a ref to the latest onAnimationComplete so the worklet callback always invokes\n // the current function, not a stale closure captured at effect creation time.\n const onAnimationCompleteRef = React.useRef(onAnimationComplete);\n onAnimationCompleteRef.current = onAnimationComplete;\n\n // If variants were undefined on mount and become defined later, re-initialise shared values.\n React.useEffect(() => {\n if (variants && (!fromStyle.value || !toStyle.value)) {\n fromStyle.value = resolveVariantStyle(variants?.initial, dimensions);\n toStyle.value = resolveVariantStyle(variants?.[targetName], dimensions);\n }\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [variants]);\n\n React.useEffect(() => {\n if (previousTargetRef.current === targetName) return;\n\n const currentVariants = variantsRef.current;\n const targetVariant = currentVariants?.[targetName];\n fromStyle.value = resolveVariantStyle(currentVariants?.[previousTargetRef.current], dimensions);\n toStyle.value = resolveVariantStyle(targetVariant, dimensions);\n previousTargetRef.current = targetName;\n\n const { duration, easing, delay } = getTiming(targetVariant?.transition);\n progress.value = 0;\n // `withDelay(0, …)` is equivalent to the bare `withTiming`, so non-delayed presets are\n // unaffected; a positive delay holds the element at its `from` style before animating.\n progress.value = withDelay(\n delay,\n withTiming(1, { duration, easing }, (finished) => {\n if (finished && onAnimationCompleteRef.current) {\n runOnJS(onAnimationCompleteRef.current)(targetName);\n }\n }),\n );\n // Only re-run when the resolved target changes. Shared values are stable refs.\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [targetName]);\n\n return useAnimatedStyle(() => interpolateVariant(fromStyle.value, toStyle.value, progress.value));\n};\n\nexport { resolveVariantStyle, parseTransform, parseUnit, getTiming, useAnimatedVariant };\nexport type { ResolvedVariantStyle };\n"],"names":["DEFAULT_DURATION_SEC","SUPPORTED_VARIANT_KEYS","Set","SUPPORTED_TRANSFORM_FUNCTIONS","getWindowDimensions","Dimensions","get","parseUnit","raw","dimensions","numeric","parseFloat","Number","isNaN","dims","includes","width","height","trim","endsWith","__DEV__","logger","type","moduleName","message","parseTransform","transform","result","undefined","value","Array","isArray","length","transformRegex","match","exec","fn","translateX","translateY","scale","rotate","has","resolveScalar","resolved","resolveColor","resolveVariantStyle","variant","variantRecord","opacity","x","y","borderRadius","backgroundColor","color","Object","assign","keys","forEach","key","getTiming","transition","durationSec","duration","ease","easing","every","v","_ref","_ref2","_slicedToArray","x1","y1","x2","y2","Easing","bezier","transitionDelay","delay","delaySec","lerp","from","to","progress","interpolateVariant","style","_from$opacity","_to$opacity","_from$scale","_to$scale","push","_from$translateX","_to$translateX","_from$translateY","_to$translateY","_from$rotate","_to$rotate","_ref3","_from$borderRadius","_ref4","_to$borderRadius","fromRadius","toRadius","interpolateColor","useAnimatedVariant","_ref5","variants","targetName","onAnimationComplete","useWindowDimensions","fromStyle","useSharedValue","initial","toStyle","previousTargetRef","React","useRef","variantsRef","current","onAnimationCompleteRef","useEffect","currentVariants","targetVariant","_getTiming","withDelay","withTiming","finished","runOnJS","useAnimatedStyle"],"mappings":"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"}
@@ -0,0 +1,4 @@
1
+ var motionTriggersArrayToGesturePropsMap={mount:'animate',hover:'whileHover','in-view':'whileInView',tap:'whileTap',focus:'whileFocus'};var makeAnimationVariables=function makeAnimationVariables(motionTriggers,_ref){var animateVisibility=_ref.animateVisibility;var interactionVariables=motionTriggers.reduce(function(prevProps,currentTrigger){if(currentTrigger==='on-animate-interactions'){return prevProps;}if(currentTrigger==='mount'&&animateVisibility){prevProps.animate=animateVisibility;return prevProps;}prevProps[motionTriggersArrayToGesturePropsMap[currentTrigger]]='animate';return prevProps;},{});return Object.assign({initial:'initial',exit:'exit'},interactionVariables);};var useMotionVariants=function useMotionVariants(motionVariants,type){var _motionVariants$anima,_motionVariants$anima2,_motionVariants$anima3,_motionVariants$exit$;if(!motionVariants){return undefined;}var shouldSkipEntryAnimation=type==='out';var shouldSkipExitAnimation=type==='in';var newMotionVariants={initial:Object.assign({},motionVariants.initial),animate:Object.assign({},motionVariants.animate,{transition:Object.assign({},(_motionVariants$anima=motionVariants.animate)==null?void 0:_motionVariants$anima.transition,{duration:shouldSkipEntryAnimation?0.0001:(_motionVariants$anima2=motionVariants.animate)==null?void 0:(_motionVariants$anima3=_motionVariants$anima2.transition)==null?void 0:_motionVariants$anima3.duration})}),exit:Object.assign({},motionVariants.exit,{transition:Object.assign({},motionVariants.exit.transition,{duration:shouldSkipExitAnimation?0.0001:(_motionVariants$exit$=motionVariants.exit.transition)==null?void 0:_motionVariants$exit$.duration})})};return newMotionVariants;};
2
+
3
+ export { makeAnimationVariables, useMotionVariants };
4
+ //# sourceMappingURL=baseMotionUtils.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"baseMotionUtils.js","sources":["../../../../../src/components/BaseMotion/baseMotionUtils.ts"],"sourcesContent":["import type { BaseMotionBoxProps, MotionTriggersType, MotionVariantsType } from './types';\n\n// This type is exported in new framer-motion versions but does not exist in earlier versions so adding it manually here\ntype AnimationType = 'animate' | 'whileHover' | 'whileInView' | 'whileTap' | 'whileFocus';\n\nconst motionTriggersArrayToGesturePropsMap: Record<\n Exclude<MotionTriggersType, 'on-animate-interactions'>,\n AnimationType\n> = {\n mount: 'animate',\n hover: 'whileHover',\n 'in-view': 'whileInView',\n tap: 'whileTap',\n focus: 'whileFocus',\n};\n\ntype AnimationVariablesType = Partial<\n Record<Exclude<AnimationType, 'animate'>, keyof MotionVariantsType>\n> & {\n animate?: BaseMotionBoxProps['animateVisibility'] | BaseMotionBoxProps['animate'];\n};\n\nconst makeAnimationVariables = (\n motionTriggers: MotionTriggersType[],\n { animateVisibility }: { animateVisibility: BaseMotionBoxProps['animateVisibility'] },\n): AnimationVariablesType & {\n initial: string;\n exit: string;\n} => {\n const interactionVariables = motionTriggers.reduce<AnimationVariablesType>(\n (prevProps, currentTrigger) => {\n if (currentTrigger === 'on-animate-interactions') {\n return prevProps;\n }\n\n // Sometimes animations are conditional. In those cases we use those conditional values in animate\n if (currentTrigger === 'mount' && animateVisibility) {\n prevProps.animate = animateVisibility;\n return prevProps;\n }\n\n prevProps[motionTriggersArrayToGesturePropsMap[currentTrigger]] = 'animate';\n return prevProps;\n },\n {},\n );\n\n return { initial: 'initial', exit: 'exit', ...interactionVariables };\n};\n\nconst useMotionVariants = (\n motionVariants: BaseMotionBoxProps['motionVariants'],\n type: BaseMotionBoxProps['type'],\n): BaseMotionBoxProps['motionVariants'] => {\n if (!motionVariants) {\n return undefined;\n }\n\n const shouldSkipEntryAnimation = type === 'out';\n const shouldSkipExitAnimation = type === 'in';\n\n // We override durations to stop animations but still continue with the expected position changes\n const newMotionVariants: BaseMotionBoxProps['motionVariants'] = {\n initial: {\n ...motionVariants.initial,\n },\n animate: {\n ...motionVariants.animate,\n transition: {\n ...motionVariants.animate?.transition,\n duration: shouldSkipEntryAnimation ? 0.0001 : motionVariants.animate?.transition?.duration,\n },\n },\n exit: {\n ...motionVariants.exit,\n transition: {\n ...motionVariants.exit.transition,\n duration: shouldSkipExitAnimation ? 0.0001 : motionVariants.exit.transition?.duration,\n },\n },\n };\n\n return newMotionVariants;\n};\n\nexport { makeAnimationVariables, useMotionVariants };\n"],"names":["motionTriggersArrayToGesturePropsMap","mount","hover","tap","focus","makeAnimationVariables","motionTriggers","_ref","animateVisibility","interactionVariables","reduce","prevProps","currentTrigger","animate","Object","assign","initial","exit","useMotionVariants","motionVariants","type","_motionVariants$anima","_motionVariants$anima2","_motionVariants$anima3","_motionVariants$exit$","undefined","shouldSkipEntryAnimation","shouldSkipExitAnimation","newMotionVariants","transition","duration"],"mappings":"AAKA,IAAMA,oCAGL,CAAG,CACFC,KAAK,CAAE,SAAS,CAChBC,KAAK,CAAE,YAAY,CACnB,SAAS,CAAE,aAAa,CACxBC,GAAG,CAAE,UAAU,CACfC,KAAK,CAAE,YACT,CAAC,CAQK,IAAAC,sBAAsB,CAAG,SAAzBA,sBAAsBA,CAC1BC,cAAoC,CAAAC,IAAA,CAKjC,CAAA,IAJDC,iBAAiB,CAAAD,IAAA,CAAjBC,iBAAiB,CAKnB,IAAMC,oBAAoB,CAAGH,cAAc,CAACI,MAAM,CAChD,SAACC,SAAS,CAAEC,cAAc,CAAK,CAC7B,GAAIA,cAAc,GAAK,yBAAyB,CAAE,CAChD,OAAOD,SAAS,CAClB,CAGA,GAAIC,cAAc,GAAK,OAAO,EAAIJ,iBAAiB,CAAE,CACnDG,SAAS,CAACE,OAAO,CAAGL,iBAAiB,CACrC,OAAOG,SAAS,CAClB,CAEAA,SAAS,CAACX,oCAAoC,CAACY,cAAc,CAAC,CAAC,CAAG,SAAS,CAC3E,OAAOD,SAAS,CAClB,CAAC,CACD,EACF,CAAC,CAED,OAAAG,MAAA,CAAAC,MAAA,CAAA,CAASC,OAAO,CAAE,SAAS,CAAEC,IAAI,CAAE,MAAM,CAAKR,CAAAA,oBAAoB,EACpE,EAEM,IAAAS,iBAAiB,CAAG,SAApBA,iBAAiBA,CACrBC,cAAoD,CACpDC,IAAgC,CACS,CAAAC,IAAAA,qBAAA,CAAAC,sBAAA,CAAAC,sBAAA,CAAAC,qBAAA,CACzC,GAAI,CAACL,cAAc,CAAE,CACnB,OAAOM,SAAS,CAClB,CAEA,IAAMC,wBAAwB,CAAGN,IAAI,GAAK,KAAK,CAC/C,IAAMO,uBAAuB,CAAGP,IAAI,GAAK,IAAI,CAG7C,IAAMQ,iBAAuD,CAAG,CAC9DZ,OAAO,CAAAF,MAAA,CAAAC,MAAA,CAAA,EAAA,CACFI,cAAc,CAACH,OAAO,CAC1B,CACDH,OAAO,CAAAC,MAAA,CAAAC,MAAA,CAAA,EAAA,CACFI,cAAc,CAACN,OAAO,CACzBgB,CAAAA,UAAU,CAAAf,MAAA,CAAAC,MAAA,CAAAM,EAAAA,CAAAA,CAAAA,qBAAA,CACLF,cAAc,CAACN,OAAO,GAAA,IAAA,CAAA,KAAA,CAAA,CAAtBQ,qBAAA,CAAwBQ,UAAU,CACrCC,CAAAA,QAAQ,CAAEJ,wBAAwB,CAAG,MAAM,CAAA,CAAAJ,sBAAA,CAAGH,cAAc,CAACN,OAAO,GAAAU,IAAAA,CAAAA,KAAAA,CAAAA,CAAAA,CAAAA,sBAAA,CAAtBD,sBAAA,CAAwBO,UAAU,GAAlCN,IAAAA,CAAAA,KAAAA,CAAAA,CAAAA,sBAAA,CAAoCO,QAAQ,CAAA,CAC3F,CACF,CAAA,CACDb,IAAI,CAAAH,MAAA,CAAAC,MAAA,CACCI,EAAAA,CAAAA,cAAc,CAACF,IAAI,EACtBY,UAAU,CAAAf,MAAA,CAAAC,MAAA,CACLI,EAAAA,CAAAA,cAAc,CAACF,IAAI,CAACY,UAAU,CACjCC,CAAAA,QAAQ,CAAEH,uBAAuB,CAAG,MAAM,CAAA,CAAAH,qBAAA,CAAGL,cAAc,CAACF,IAAI,CAACY,UAAU,GAA9BL,IAAAA,CAAAA,KAAAA,CAAAA,CAAAA,qBAAA,CAAgCM,QAAQ,CACtF,CAAA,CAAA,CAEL,CAAC,CAED,OAAOF,iBAAiB,CAC1B;;;;"}
@@ -0,0 +1,3 @@
1
+ export { BaseMotionBox, BaseMotionEnhancerBox, BaseMotionEntryExit, MotionDiv } from './BaseMotion.native.js';
2
+ import './types.js';
3
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sources":[],"sourcesContent":[],"names":[],"mappings":";"}
@@ -0,0 +1,2 @@
1
+
2
+ //# sourceMappingURL=types.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.js","sources":[],"sourcesContent":[],"names":[],"mappings":""}
@@ -5,6 +5,7 @@ import _objectWithoutProperties from '@babel/runtime/helpers/objectWithoutProper
5
5
  import React__default, { useEffect } from 'react';
6
6
  import { useDropdown } from './useDropdown.js';
7
7
  import { dropdownComponentIds } from './dropdownComponentIds.js';
8
+ import { getFilterChipDisplayValue } from './filterChipSelectInputUtils.js';
8
9
  import { useFilterChipGroupContext } from './FilterChipGroupContext.native.js';
9
10
  import '../../utils/assignWithoutSideEffects/index.js';
10
11
  import { BaseFilterChip } from '../FilterChip/BaseFilterChip.native.js';
@@ -15,7 +16,7 @@ import { useFirstRender } from '../../utils/useFirstRender.js';
15
16
  import { jsx } from 'react/jsx-runtime';
16
17
  import { assignWithoutSideEffects } from '../../utils/assignWithoutSideEffects/assignWithoutSideEffects.js';
17
18
 
18
- var _excluded=["onClick","onBlur","onKeyDown","accessibilityLabel","testID","value","onClearButtonClick","label","onChange","name","isDisabled"];var _this=undefined,_jsxFileName="/home/runner/work/blade/blade/packages/blade/src/components/Dropdown/FilterChipSelectInput.native.tsx";function _toPropertyKey(t){var i=_toPrimitive(t,"string");return "symbol"==typeof i?i:i+"";}function _toPrimitive(t,r){if("object"!=typeof t||!t)return t;var e=t[Symbol.toPrimitive];if(void 0!==e){var i=e.call(t,r||"default");if("object"!=typeof i)return i;throw new TypeError("@@toPrimitive must return a primitive value.");}return ("string"===r?String:Number)(t);}var _FilterChipSelectInput=function _FilterChipSelectInput(props){var _options$find$title,_options$find;var idBase=useId('filter-chip-select-input');var _onClick=props.onClick,_onBlur=props.onBlur,onKeyDown=props.onKeyDown,accessibilityLabel=props.accessibilityLabel,testID=props.testID,value=props.value,onClearButtonClick=props.onClearButtonClick,label=props.label,onChange=props.onChange,name=props.name,isDisabled=props.isDisabled,rest=_objectWithoutProperties(props,_excluded);var _React$useState=React__default.useState([]),_React$useState2=_slicedToArray(_React$useState,2),uncontrolledInputValue=_React$useState2[0],setUncontrolledInputValue=_React$useState2[1];var isFirstRender=useFirstRender();var _useDropdown=useDropdown(),options=_useDropdown.options,selectedIndices=_useDropdown.selectedIndices,onTriggerClick=_useDropdown.onTriggerClick,onTriggerKeydown=_useDropdown.onTriggerKeydown,dropdownBaseId=_useDropdown.dropdownBaseId,isOpen=_useDropdown.isOpen,activeIndex=_useDropdown.activeIndex,hasFooterAction=_useDropdown.hasFooterAction,triggererRef=_useDropdown.triggererRef,selectionType=_useDropdown.selectionType,isControlled=_useDropdown.isControlled,setSelectedIndices=_useDropdown.setSelectedIndices,controlledValueIndices=_useDropdown.controlledValueIndices,changeCallbackTriggerer=_useDropdown.changeCallbackTriggerer;var valueTitle=(_options$find$title=(_options$find=options.find(function(option){return option.value===value;}))==null?void 0:_options$find.title)!=null?_options$find$title:value;var isUnControlled=options.length>0&&props.value===undefined;var _useListViewFilterCon=useListViewFilterContext(),listViewSelectedFilters=_useListViewFilterCon.listViewSelectedFilters,setListViewSelectedFilters=_useListViewFilterCon.setListViewSelectedFilters;var _useFilterChipGroupCo=useFilterChipGroupContext(),clearFilterCallbackTriggerer=_useFilterChipGroupCo.clearFilterCallbackTriggerer,setFilterChipGroupSelectedFilters=_useFilterChipGroupCo.setFilterChipGroupSelectedFilters;var getValuesArrayFromIndices=function getValuesArrayFromIndices(){var indices=[];if(isControlled){indices=controlledValueIndices;}else {indices=selectedIndices;}return indices.map(function(i){var _options$i;return (_options$i=options[i])==null?void 0:_options$i.value;}).filter(function(v){return v!==undefined;});};useEffect(function(){var valueNotEmpty=typeof value==='string'&&value.trim()!==''||Array.isArray(value)&&value.length>0;var currentSelectedValues=selectedIndices.map(function(i){var _options$i2;return (_options$i2=options[i])==null?void 0:_options$i2.value;});var isSingleValueSynced=typeof value==='string'&&currentSelectedValues.length===1&&currentSelectedValues[0]===value;var isMultiValueSynced=Array.isArray(value)&&value.length===currentSelectedValues.length&&value.every(function(v){return currentSelectedValues.includes(v);});var isValueAndSelectedIndicesSynced=isSingleValueSynced||isMultiValueSynced;if(isUnControlled){if(listViewSelectedFilters[label]){var savedIndices=listViewSelectedFilters[label];setSelectedIndices(savedIndices);var inputValue=savedIndices.map(function(i){var _options$i3;return (_options$i3=options[i])==null?void 0:_options$i3.value;}).filter(function(v){return v!==undefined;});setUncontrolledInputValue(inputValue);setFilterChipGroupSelectedFilters(function(prev){return prev.includes(label)?prev:[].concat(_toConsumableArray(prev),[label]);});}else {setSelectedIndices([]);}}else if(listViewSelectedFilters[label]){var _savedIndices=listViewSelectedFilters[label];setSelectedIndices(_savedIndices);}else if(valueNotEmpty&&!isValueAndSelectedIndicesSynced&&options.length>0){var newSelectedIndices=typeof value==='string'?[options.findIndex(function(option){return option.value===value;})]:options.map(function(option,index){return value.includes(option.value)?index:-1;}).filter(function(index){return index!==-1;});setSelectedIndices(newSelectedIndices);}},[isUnControlled,options,value]);var getTitleFromValue=function getTitleFromValue(value){var option=options.find(function(option){return option.value===value;});return option?option.title:'';};var getUnControlledFilterChipValue=function getUnControlledFilterChipValue(){if(selectionType==='single'){if(uncontrolledInputValue.length>0){return getTitleFromValue(uncontrolledInputValue[0]);}return '';}return uncontrolledInputValue;};var handleClearButtonClick=function handleClearButtonClick(){var currentValues=getValuesArrayFromIndices();onClearButtonClick==null?void 0:onClearButtonClick({name:name!=null?name:idBase,values:currentValues});onChange==null?void 0:onChange({name:name!=null?name:idBase,values:[]});setFilterChipGroupSelectedFilters(function(prev){return prev.filter(function(filter){return filter!==label;});});setListViewSelectedFilters(function(prev){var _=prev[label],updatedFilters=_objectWithoutProperties(prev,[label].map(_toPropertyKey));return updatedFilters;});setUncontrolledInputValue([]);setSelectedIndices([]);};useEffect(function(){if(clearFilterCallbackTriggerer){handleClearButtonClick();}},[clearFilterCallbackTriggerer]);useEffect(function(){if(!isFirstRender){props.onChange==null?void 0:props.onChange({name:props.name||idBase,values:getValuesArrayFromIndices()});if(isUnControlled){setUncontrolledInputValue(getValuesArrayFromIndices());}}},[changeCallbackTriggerer]);useEffect(function(){var isValueEmpty=selectedIndices.length===0;if(!isFirstRender&&!isValueEmpty){setFilterChipGroupSelectedFilters(function(prev){return prev.includes(label)?prev:[].concat(_toConsumableArray(prev),[label]);});setListViewSelectedFilters(function(prev){return Object.assign({},prev,_defineProperty({},label,selectedIndices));});}else if(!isFirstRender&&isValueEmpty){setFilterChipGroupSelectedFilters(function(prev){return prev.filter(function(filter){return filter!==label;});});setListViewSelectedFilters(function(prev){var _=prev[label],updatedFilters=_objectWithoutProperties(prev,[label].map(_toPropertyKey));return updatedFilters;});}},[changeCallbackTriggerer]);var handleKeyDown=function handleKeyDown(e){onKeyDown==null?void 0:onKeyDown(e);onTriggerKeydown==null?void 0:onTriggerKeydown({event:e});if(e.key==='Escape'){e.preventDefault();e.stopPropagation();}if((e.key==='Enter'||e.key===' ')&&!isOpen){e.preventDefault();e.stopPropagation();onTriggerClick();}};return jsx(BaseFilterChip,Object.assign({label:label,value:valueTitle!=null?valueTitle:getUnControlledFilterChipValue(),onClearButtonClick:handleClearButtonClick,selectionType:selectionType},rest,{testID:testID,ref:triggererRef,onKeyDown:handleKeyDown,accessibilityProps:{label:accessibilityLabel!=null?accessibilityLabel:label,hasPopup:getActionListContainerRole(hasFooterAction,'FilterChipSelectInput'),expanded:isOpen,controls:`${dropdownBaseId}-actionlist`,activeDescendant:activeIndex>=0?`${dropdownBaseId}-${activeIndex}`:undefined},onClick:function onClick(e){onTriggerClick();_onClick==null?void 0:_onClick(e);},onBlur:function onBlur(e){_onBlur==null?void 0:_onBlur(e);},isDisabled:isDisabled}));};var FilterChipSelectInput=assignWithoutSideEffects(_FilterChipSelectInput,{componentId:dropdownComponentIds.triggers.FilterChipSelectInput});
19
+ var _excluded=["onClick","onBlur","onKeyDown","accessibilityLabel","testID","value","onClearButtonClick","label","onChange","name","isDisabled","showClearButton"];var _this=undefined,_jsxFileName="/home/runner/work/blade/blade/packages/blade/src/components/Dropdown/FilterChipSelectInput.native.tsx";function _toPropertyKey(t){var i=_toPrimitive(t,"string");return "symbol"==typeof i?i:i+"";}function _toPrimitive(t,r){if("object"!=typeof t||!t)return t;var e=t[Symbol.toPrimitive];if(void 0!==e){var i=e.call(t,r||"default");if("object"!=typeof i)return i;throw new TypeError("@@toPrimitive must return a primitive value.");}return ("string"===r?String:Number)(t);}var _FilterChipSelectInput=function _FilterChipSelectInput(props){var idBase=useId('filter-chip-select-input');var _onClick=props.onClick,_onBlur=props.onBlur,onKeyDown=props.onKeyDown,accessibilityLabel=props.accessibilityLabel,testID=props.testID,value=props.value,onClearButtonClick=props.onClearButtonClick,label=props.label,onChange=props.onChange,name=props.name,isDisabled=props.isDisabled,_props$showClearButto=props.showClearButton,showClearButton=_props$showClearButto===void 0?true:_props$showClearButto,rest=_objectWithoutProperties(props,_excluded);var _React$useState=React__default.useState([]),_React$useState2=_slicedToArray(_React$useState,2),uncontrolledInputValue=_React$useState2[0],setUncontrolledInputValue=_React$useState2[1];var isFirstRender=useFirstRender();var _useDropdown=useDropdown(),options=_useDropdown.options,selectedIndices=_useDropdown.selectedIndices,onTriggerClick=_useDropdown.onTriggerClick,onTriggerKeydown=_useDropdown.onTriggerKeydown,dropdownBaseId=_useDropdown.dropdownBaseId,isOpen=_useDropdown.isOpen,activeIndex=_useDropdown.activeIndex,hasFooterAction=_useDropdown.hasFooterAction,triggererRef=_useDropdown.triggererRef,selectionType=_useDropdown.selectionType,isControlled=_useDropdown.isControlled,setSelectedIndices=_useDropdown.setSelectedIndices,controlledValueIndices=_useDropdown.controlledValueIndices,changeCallbackTriggerer=_useDropdown.changeCallbackTriggerer;var isUnControlled=options.length>0&&props.value===undefined;var _useListViewFilterCon=useListViewFilterContext(),listViewSelectedFilters=_useListViewFilterCon.listViewSelectedFilters,setListViewSelectedFilters=_useListViewFilterCon.setListViewSelectedFilters;var _useFilterChipGroupCo=useFilterChipGroupContext(),clearFilterCallbackTriggerer=_useFilterChipGroupCo.clearFilterCallbackTriggerer,setFilterChipGroupSelectedFilters=_useFilterChipGroupCo.setFilterChipGroupSelectedFilters;var getValuesArrayFromIndices=function getValuesArrayFromIndices(){var indices=[];if(isControlled){indices=controlledValueIndices;}else {indices=selectedIndices;}return indices.map(function(i){var _options$i;return (_options$i=options[i])==null?void 0:_options$i.value;}).filter(function(v){return v!==undefined;});};useEffect(function(){var valueNotEmpty=typeof value==='string'&&value.trim()!==''||Array.isArray(value)&&value.length>0;var currentSelectedValues=selectedIndices.map(function(i){var _options$i2;return (_options$i2=options[i])==null?void 0:_options$i2.value;});var isSingleValueSynced=typeof value==='string'&&currentSelectedValues.length===1&&currentSelectedValues[0]===value;var isMultiValueSynced=Array.isArray(value)&&value.length===currentSelectedValues.length&&value.every(function(v){return currentSelectedValues.includes(v);});var isValueAndSelectedIndicesSynced=isSingleValueSynced||isMultiValueSynced;if(isUnControlled){if(listViewSelectedFilters[label]){var savedIndices=listViewSelectedFilters[label];setSelectedIndices(savedIndices);var inputValue=savedIndices.map(function(i){var _options$i3;return (_options$i3=options[i])==null?void 0:_options$i3.value;}).filter(function(v){return v!==undefined;});setUncontrolledInputValue(inputValue);setFilterChipGroupSelectedFilters(function(prev){return prev.includes(label)?prev:[].concat(_toConsumableArray(prev),[label]);});}else {setSelectedIndices([]);}}else if(listViewSelectedFilters[label]){var _savedIndices=listViewSelectedFilters[label];setSelectedIndices(_savedIndices);}else if(valueNotEmpty&&!isValueAndSelectedIndicesSynced&&options.length>0){var newSelectedIndices=typeof value==='string'?[options.findIndex(function(option){return option.value===value;})]:options.map(function(option,index){return value.includes(option.value)?index:-1;}).filter(function(index){return index!==-1;});setSelectedIndices(newSelectedIndices);}},[isUnControlled,options,value]);var handleClearButtonClick=function handleClearButtonClick(){var currentValues=getValuesArrayFromIndices();onClearButtonClick==null?void 0:onClearButtonClick({name:name!=null?name:idBase,values:currentValues});onChange==null?void 0:onChange({name:name!=null?name:idBase,values:[]});setFilterChipGroupSelectedFilters(function(prev){return prev.filter(function(filter){return filter!==label;});});setListViewSelectedFilters(function(prev){var _=prev[label],updatedFilters=_objectWithoutProperties(prev,[label].map(_toPropertyKey));return updatedFilters;});setUncontrolledInputValue([]);setSelectedIndices([]);};useEffect(function(){if(clearFilterCallbackTriggerer){handleClearButtonClick();}},[clearFilterCallbackTriggerer]);useEffect(function(){if(!isFirstRender){props.onChange==null?void 0:props.onChange({name:props.name||idBase,values:getValuesArrayFromIndices()});if(isUnControlled){setUncontrolledInputValue(getValuesArrayFromIndices());}}},[changeCallbackTriggerer]);useEffect(function(){var isValueEmpty=selectedIndices.length===0;if(!isFirstRender&&!isValueEmpty){setFilterChipGroupSelectedFilters(function(prev){return prev.includes(label)?prev:[].concat(_toConsumableArray(prev),[label]);});setListViewSelectedFilters(function(prev){return Object.assign({},prev,_defineProperty({},label,selectedIndices));});}else if(!isFirstRender&&isValueEmpty){setFilterChipGroupSelectedFilters(function(prev){return prev.filter(function(filter){return filter!==label;});});setListViewSelectedFilters(function(prev){var _=prev[label],updatedFilters=_objectWithoutProperties(prev,[label].map(_toPropertyKey));return updatedFilters;});}},[changeCallbackTriggerer]);var handleKeyDown=function handleKeyDown(e){onKeyDown==null?void 0:onKeyDown(e);onTriggerKeydown==null?void 0:onTriggerKeydown({event:e});if(e.key==='Escape'){e.preventDefault();e.stopPropagation();}if((e.key==='Enter'||e.key===' ')&&!isOpen){e.preventDefault();e.stopPropagation();onTriggerClick();}};return jsx(BaseFilterChip,Object.assign({label:label,value:getFilterChipDisplayValue({value:props.value,options:options,selectionType:selectionType,uncontrolledInputValue:uncontrolledInputValue}),onClearButtonClick:handleClearButtonClick,showClearButton:showClearButton,selectionType:selectionType},rest,{testID:testID,ref:triggererRef,onKeyDown:handleKeyDown,accessibilityProps:{label:accessibilityLabel!=null?accessibilityLabel:label,hasPopup:getActionListContainerRole(hasFooterAction,'FilterChipSelectInput'),expanded:isOpen,controls:`${dropdownBaseId}-actionlist`,activeDescendant:activeIndex>=0?`${dropdownBaseId}-${activeIndex}`:undefined},onClick:function onClick(e){onTriggerClick();_onClick==null?void 0:_onClick(e);},onBlur:function onBlur(e){_onBlur==null?void 0:_onBlur(e);},isDisabled:isDisabled}));};var FilterChipSelectInput=assignWithoutSideEffects(_FilterChipSelectInput,{componentId:dropdownComponentIds.triggers.FilterChipSelectInput});
19
20
 
20
21
  export { FilterChipSelectInput };
21
22
  //# sourceMappingURL=FilterChipSelectInput.native.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"FilterChipSelectInput.native.js","sources":["../../../../../src/components/Dropdown/FilterChipSelectInput.native.tsx"],"sourcesContent":["/* eslint-disable @typescript-eslint/no-explicit-any */\n/* eslint-disable @typescript-eslint/no-unnecessary-type-assertion */\n\nimport React, { useEffect } from 'react';\nimport { useDropdown } from './useDropdown';\nimport { dropdownComponentIds } from './dropdownComponentIds';\nimport { useFilterChipGroupContext } from './FilterChipGroupContext';\nimport type { DataAnalyticsAttribute } from '~utils/types';\nimport { assignWithoutSideEffects } from '~utils/assignWithoutSideEffects';\nimport { BaseFilterChip } from '~components/FilterChip/BaseFilterChip';\nimport { getActionListContainerRole } from '~components/ActionList/getA11yRoles';\nimport type { BaseFilterChipProps } from '~components/FilterChip/types';\nimport { useId } from '~utils/useId';\nimport { useListViewFilterContext } from '~components/ListView/ListViewFiltersContext';\nimport { useFirstRender } from '~utils/useFirstRender';\n\ntype FilterChipSelectInputProps = Pick<\n BaseFilterChipProps,\n 'onKeyDown' | 'value' | 'label' | 'testID' | 'onClick' | 'selectionType' | 'onBlur'\n> & {\n accessibilityLabel?: string;\n onChange?: (props: { name: string; values: string[] }) => void;\n name?: string;\n onClearButtonClick?: (props: { name: string; values: string[] }) => void;\n isDisabled?: boolean;\n} & DataAnalyticsAttribute;\n\nconst _FilterChipSelectInput = (props: FilterChipSelectInputProps): React.ReactElement => {\n const idBase = useId('filter-chip-select-input');\n const {\n onClick,\n onBlur,\n onKeyDown,\n accessibilityLabel,\n testID,\n value,\n onClearButtonClick,\n label,\n onChange,\n name,\n isDisabled,\n ...rest\n } = props;\n const [uncontrolledInputValue, setUncontrolledInputValue] = React.useState<string[]>([]);\n const isFirstRender = useFirstRender();\n\n const {\n options,\n selectedIndices,\n onTriggerClick,\n onTriggerKeydown,\n dropdownBaseId,\n isOpen,\n activeIndex,\n hasFooterAction,\n triggererRef,\n selectionType,\n isControlled,\n setSelectedIndices,\n controlledValueIndices,\n changeCallbackTriggerer,\n } = useDropdown();\n const valueTitle = options.find((option) => option.value === value)?.title ?? value;\n\n const isUnControlled = options.length > 0 && props.value === undefined;\n const { listViewSelectedFilters, setListViewSelectedFilters } = useListViewFilterContext();\n const {\n clearFilterCallbackTriggerer,\n setFilterChipGroupSelectedFilters,\n } = useFilterChipGroupContext();\n\n const getValuesArrayFromIndices = (): string[] => {\n let indices: number[] = [];\n if (isControlled) {\n indices = controlledValueIndices;\n } else {\n indices = selectedIndices;\n }\n\n return indices.map((i) => options[i]?.value).filter((v): v is string => v !== undefined);\n };\n\n useEffect(() => {\n const valueNotEmpty =\n (typeof value === 'string' && value.trim() !== '') ||\n (Array.isArray(value) && value.length > 0);\n\n const currentSelectedValues = selectedIndices.map((i) => options[i]?.value);\n const isSingleValueSynced =\n typeof value === 'string' &&\n currentSelectedValues.length === 1 &&\n currentSelectedValues[0] === value;\n\n const isMultiValueSynced =\n Array.isArray(value) &&\n value.length === currentSelectedValues.length &&\n value.every((v) => currentSelectedValues.includes(v));\n\n const isValueAndSelectedIndicesSynced = isSingleValueSynced || isMultiValueSynced;\n\n if (isUnControlled) {\n if (listViewSelectedFilters[label]) {\n const savedIndices = (listViewSelectedFilters[label] as unknown) as number[];\n setSelectedIndices(savedIndices);\n const inputValue = savedIndices\n .map((i) => options[i]?.value)\n .filter((v): v is string => v !== undefined);\n setUncontrolledInputValue(inputValue);\n setFilterChipGroupSelectedFilters((prev) =>\n prev.includes(label) ? prev : [...prev, label],\n );\n } else {\n setSelectedIndices([]);\n }\n } else if (listViewSelectedFilters[label]) {\n const savedIndices = (listViewSelectedFilters[label] as unknown) as number[];\n setSelectedIndices(savedIndices);\n } else if (valueNotEmpty && !isValueAndSelectedIndicesSynced && options.length > 0) {\n const newSelectedIndices =\n typeof value === 'string'\n ? [options.findIndex((option) => option.value === value)]\n : options\n .map((option, index) => (value.includes(option.value) ? index : -1))\n .filter((index) => index !== -1);\n setSelectedIndices(newSelectedIndices);\n }\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [isUnControlled, options, value]);\n\n const getTitleFromValue = (value: string): string => {\n const option = options.find((option) => option.value === value);\n return option ? option.title : '';\n };\n\n const getUnControlledFilterChipValue = (): string | string[] => {\n if (selectionType === 'single') {\n if (uncontrolledInputValue.length > 0) {\n return getTitleFromValue(uncontrolledInputValue[0]);\n }\n return '';\n }\n return uncontrolledInputValue;\n };\n\n const handleClearButtonClick = (): void => {\n const currentValues = getValuesArrayFromIndices();\n onClearButtonClick?.({ name: name ?? idBase, values: currentValues });\n onChange?.({ name: name ?? idBase, values: [] });\n setFilterChipGroupSelectedFilters((prev) => prev.filter((filter) => filter !== label));\n setListViewSelectedFilters((prev) => {\n const { [label]: _, ...updatedFilters } = prev;\n return updatedFilters;\n });\n setUncontrolledInputValue([]);\n setSelectedIndices([]);\n };\n\n useEffect(() => {\n if (clearFilterCallbackTriggerer) {\n handleClearButtonClick();\n }\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [clearFilterCallbackTriggerer]);\n\n useEffect(() => {\n if (!isFirstRender) {\n props.onChange?.({\n name: props.name || idBase,\n values: getValuesArrayFromIndices(),\n });\n if (isUnControlled) {\n setUncontrolledInputValue(getValuesArrayFromIndices());\n }\n }\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [changeCallbackTriggerer]);\n\n useEffect(() => {\n const isValueEmpty = selectedIndices.length === 0;\n if (!isFirstRender && !isValueEmpty) {\n setFilterChipGroupSelectedFilters((prev) => (prev.includes(label) ? prev : [...prev, label]));\n setListViewSelectedFilters((prev) => ({\n ...prev,\n [label]: selectedIndices as number[],\n }));\n } else if (!isFirstRender && isValueEmpty) {\n setFilterChipGroupSelectedFilters((prev) => prev.filter((filter) => filter !== label));\n setListViewSelectedFilters((prev) => {\n const { [label]: _, ...updatedFilters } = prev;\n return updatedFilters;\n });\n }\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [changeCallbackTriggerer]);\n\n const handleKeyDown = (e: React.KeyboardEvent<Element>): void => {\n onKeyDown?.(e);\n onTriggerKeydown?.({ event: e as React.KeyboardEvent<HTMLInputElement> });\n\n if (e.key === 'Escape') {\n e.preventDefault();\n e.stopPropagation();\n }\n\n if ((e.key === 'Enter' || e.key === ' ') && !isOpen) {\n e.preventDefault();\n e.stopPropagation();\n onTriggerClick();\n }\n };\n\n return (\n <BaseFilterChip\n label={label}\n value={valueTitle ?? getUnControlledFilterChipValue()}\n onClearButtonClick={handleClearButtonClick}\n selectionType={selectionType}\n {...rest}\n testID={testID}\n ref={triggererRef as any}\n onKeyDown={handleKeyDown}\n accessibilityProps={{\n label: accessibilityLabel ?? label,\n hasPopup: getActionListContainerRole(hasFooterAction, 'FilterChipSelectInput'),\n expanded: isOpen,\n controls: `${dropdownBaseId}-actionlist`,\n activeDescendant: activeIndex >= 0 ? `${dropdownBaseId}-${activeIndex}` : undefined,\n }}\n onClick={(e) => {\n onTriggerClick();\n onClick?.(e);\n }}\n onBlur={(e) => {\n onBlur?.(e);\n }}\n isDisabled={isDisabled}\n />\n );\n};\n\nconst FilterChipSelectInput = assignWithoutSideEffects(_FilterChipSelectInput, {\n componentId: dropdownComponentIds.triggers.FilterChipSelectInput,\n});\n\nexport { FilterChipSelectInput };\n"],"names":["this","_FilterChipSelectInput","props","_options$find$title","_options$find","idBase","useId","onClick","onBlur","onKeyDown","accessibilityLabel","testID","value","onClearButtonClick","label","onChange","name","isDisabled","rest","_objectWithoutProperties","_excluded","_React$useState","React","useState","_React$useState2","_slicedToArray","uncontrolledInputValue","setUncontrolledInputValue","isFirstRender","useFirstRender","_useDropdown","useDropdown","options","selectedIndices","onTriggerClick","onTriggerKeydown","dropdownBaseId","isOpen","activeIndex","hasFooterAction","triggererRef","selectionType","isControlled","setSelectedIndices","controlledValueIndices","changeCallbackTriggerer","valueTitle","find","option","title","isUnControlled","length","undefined","_useListViewFilterCon","useListViewFilterContext","listViewSelectedFilters","setListViewSelectedFilters","_useFilterChipGroupCo","useFilterChipGroupContext","clearFilterCallbackTriggerer","setFilterChipGroupSelectedFilters","getValuesArrayFromIndices","indices","map","i","_options$i","filter","v","useEffect","valueNotEmpty","trim","Array","isArray","currentSelectedValues","_options$i2","isSingleValueSynced","isMultiValueSynced","every","includes","isValueAndSelectedIndicesSynced","savedIndices","inputValue","_options$i3","prev","concat","_toConsumableArray","newSelectedIndices","findIndex","index","getTitleFromValue","getUnControlledFilterChipValue","handleClearButtonClick","currentValues","values","_","updatedFilters","_toPropertyKey","isValueEmpty","Object","assign","_defineProperty","handleKeyDown","e","event","key","preventDefault","stopPropagation","_jsx","BaseFilterChip","ref","accessibilityProps","hasPopup","getActionListContainerRole","expanded","controls","activeDescendant","FilterChipSelectInput","assignWithoutSideEffects","componentId","dropdownComponentIds","triggers"],"mappings":"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"}
1
+ {"version":3,"file":"FilterChipSelectInput.native.js","sources":["../../../../../src/components/Dropdown/FilterChipSelectInput.native.tsx"],"sourcesContent":["/* eslint-disable @typescript-eslint/no-explicit-any */\n/* eslint-disable @typescript-eslint/no-unnecessary-type-assertion */\n\nimport React, { useEffect } from 'react';\nimport { useDropdown } from './useDropdown';\nimport { dropdownComponentIds } from './dropdownComponentIds';\nimport { getFilterChipDisplayValue } from './filterChipSelectInputUtils';\nimport { useFilterChipGroupContext } from './FilterChipGroupContext';\nimport type { DataAnalyticsAttribute } from '~utils/types';\nimport { assignWithoutSideEffects } from '~utils/assignWithoutSideEffects';\nimport { BaseFilterChip } from '~components/FilterChip/BaseFilterChip';\nimport { getActionListContainerRole } from '~components/ActionList/getA11yRoles';\nimport type { BaseFilterChipProps } from '~components/FilterChip/types';\nimport { useId } from '~utils/useId';\nimport { useListViewFilterContext } from '~components/ListView/ListViewFiltersContext';\nimport { useFirstRender } from '~utils/useFirstRender';\n\ntype FilterChipSelectInputProps = Pick<\n BaseFilterChipProps,\n | 'onKeyDown'\n | 'value'\n | 'label'\n | 'testID'\n | 'onClick'\n | 'selectionType'\n | 'onBlur'\n | 'showClearButton'\n> & {\n accessibilityLabel?: string;\n onChange?: (props: { name: string; values: string[] }) => void;\n name?: string;\n onClearButtonClick?: (props: { name: string; values: string[] }) => void;\n isDisabled?: boolean;\n} & DataAnalyticsAttribute;\n\nconst _FilterChipSelectInput = (props: FilterChipSelectInputProps): React.ReactElement => {\n const idBase = useId('filter-chip-select-input');\n const {\n onClick,\n onBlur,\n onKeyDown,\n accessibilityLabel,\n testID,\n value,\n onClearButtonClick,\n label,\n onChange,\n name,\n isDisabled,\n showClearButton = true,\n ...rest\n } = props;\n const [uncontrolledInputValue, setUncontrolledInputValue] = React.useState<string[]>([]);\n const isFirstRender = useFirstRender();\n\n const {\n options,\n selectedIndices,\n onTriggerClick,\n onTriggerKeydown,\n dropdownBaseId,\n isOpen,\n activeIndex,\n hasFooterAction,\n triggererRef,\n selectionType,\n isControlled,\n setSelectedIndices,\n controlledValueIndices,\n changeCallbackTriggerer,\n } = useDropdown();\n const isUnControlled = options.length > 0 && props.value === undefined;\n const { listViewSelectedFilters, setListViewSelectedFilters } = useListViewFilterContext();\n const {\n clearFilterCallbackTriggerer,\n setFilterChipGroupSelectedFilters,\n } = useFilterChipGroupContext();\n\n const getValuesArrayFromIndices = (): string[] => {\n let indices: number[] = [];\n if (isControlled) {\n indices = controlledValueIndices;\n } else {\n indices = selectedIndices;\n }\n\n return indices.map((i) => options[i]?.value).filter((v): v is string => v !== undefined);\n };\n\n useEffect(() => {\n const valueNotEmpty =\n (typeof value === 'string' && value.trim() !== '') ||\n (Array.isArray(value) && value.length > 0);\n\n const currentSelectedValues = selectedIndices.map((i) => options[i]?.value);\n const isSingleValueSynced =\n typeof value === 'string' &&\n currentSelectedValues.length === 1 &&\n currentSelectedValues[0] === value;\n\n const isMultiValueSynced =\n Array.isArray(value) &&\n value.length === currentSelectedValues.length &&\n value.every((v) => currentSelectedValues.includes(v));\n\n const isValueAndSelectedIndicesSynced = isSingleValueSynced || isMultiValueSynced;\n\n if (isUnControlled) {\n if (listViewSelectedFilters[label]) {\n const savedIndices = (listViewSelectedFilters[label] as unknown) as number[];\n setSelectedIndices(savedIndices);\n const inputValue = savedIndices\n .map((i) => options[i]?.value)\n .filter((v): v is string => v !== undefined);\n setUncontrolledInputValue(inputValue);\n setFilterChipGroupSelectedFilters((prev) =>\n prev.includes(label) ? prev : [...prev, label],\n );\n } else {\n setSelectedIndices([]);\n }\n } else if (listViewSelectedFilters[label]) {\n const savedIndices = (listViewSelectedFilters[label] as unknown) as number[];\n setSelectedIndices(savedIndices);\n } else if (valueNotEmpty && !isValueAndSelectedIndicesSynced && options.length > 0) {\n const newSelectedIndices =\n typeof value === 'string'\n ? [options.findIndex((option) => option.value === value)]\n : options\n .map((option, index) => (value.includes(option.value) ? index : -1))\n .filter((index) => index !== -1);\n setSelectedIndices(newSelectedIndices);\n }\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [isUnControlled, options, value]);\n\n const handleClearButtonClick = (): void => {\n const currentValues = getValuesArrayFromIndices();\n onClearButtonClick?.({ name: name ?? idBase, values: currentValues });\n onChange?.({ name: name ?? idBase, values: [] });\n setFilterChipGroupSelectedFilters((prev) => prev.filter((filter) => filter !== label));\n setListViewSelectedFilters((prev) => {\n const { [label]: _, ...updatedFilters } = prev;\n return updatedFilters;\n });\n setUncontrolledInputValue([]);\n setSelectedIndices([]);\n };\n\n useEffect(() => {\n if (clearFilterCallbackTriggerer) {\n handleClearButtonClick();\n }\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [clearFilterCallbackTriggerer]);\n\n useEffect(() => {\n if (!isFirstRender) {\n props.onChange?.({\n name: props.name || idBase,\n values: getValuesArrayFromIndices(),\n });\n if (isUnControlled) {\n setUncontrolledInputValue(getValuesArrayFromIndices());\n }\n }\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [changeCallbackTriggerer]);\n\n useEffect(() => {\n const isValueEmpty = selectedIndices.length === 0;\n if (!isFirstRender && !isValueEmpty) {\n setFilterChipGroupSelectedFilters((prev) => (prev.includes(label) ? prev : [...prev, label]));\n setListViewSelectedFilters((prev) => ({\n ...prev,\n [label]: selectedIndices as number[],\n }));\n } else if (!isFirstRender && isValueEmpty) {\n setFilterChipGroupSelectedFilters((prev) => prev.filter((filter) => filter !== label));\n setListViewSelectedFilters((prev) => {\n const { [label]: _, ...updatedFilters } = prev;\n return updatedFilters;\n });\n }\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [changeCallbackTriggerer]);\n\n const handleKeyDown = (e: React.KeyboardEvent<Element>): void => {\n onKeyDown?.(e);\n onTriggerKeydown?.({ event: e as React.KeyboardEvent<HTMLInputElement> });\n\n if (e.key === 'Escape') {\n e.preventDefault();\n e.stopPropagation();\n }\n\n if ((e.key === 'Enter' || e.key === ' ') && !isOpen) {\n e.preventDefault();\n e.stopPropagation();\n onTriggerClick();\n }\n };\n\n return (\n <BaseFilterChip\n label={label}\n value={getFilterChipDisplayValue({\n value: props.value,\n options,\n selectionType,\n uncontrolledInputValue,\n })}\n onClearButtonClick={handleClearButtonClick}\n showClearButton={showClearButton}\n selectionType={selectionType}\n {...rest}\n testID={testID}\n ref={triggererRef as any}\n onKeyDown={handleKeyDown}\n accessibilityProps={{\n label: accessibilityLabel ?? label,\n hasPopup: getActionListContainerRole(hasFooterAction, 'FilterChipSelectInput'),\n expanded: isOpen,\n controls: `${dropdownBaseId}-actionlist`,\n activeDescendant: activeIndex >= 0 ? `${dropdownBaseId}-${activeIndex}` : undefined,\n }}\n onClick={(e) => {\n onTriggerClick();\n onClick?.(e);\n }}\n onBlur={(e) => {\n onBlur?.(e);\n }}\n isDisabled={isDisabled}\n />\n );\n};\n\nconst FilterChipSelectInput = assignWithoutSideEffects(_FilterChipSelectInput, {\n componentId: dropdownComponentIds.triggers.FilterChipSelectInput,\n});\n\nexport { FilterChipSelectInput };\n"],"names":["this","_FilterChipSelectInput","props","idBase","useId","onClick","onBlur","onKeyDown","accessibilityLabel","testID","value","onClearButtonClick","label","onChange","name","isDisabled","_props$showClearButto","showClearButton","rest","_objectWithoutProperties","_excluded","_React$useState","React","useState","_React$useState2","_slicedToArray","uncontrolledInputValue","setUncontrolledInputValue","isFirstRender","useFirstRender","_useDropdown","useDropdown","options","selectedIndices","onTriggerClick","onTriggerKeydown","dropdownBaseId","isOpen","activeIndex","hasFooterAction","triggererRef","selectionType","isControlled","setSelectedIndices","controlledValueIndices","changeCallbackTriggerer","isUnControlled","length","undefined","_useListViewFilterCon","useListViewFilterContext","listViewSelectedFilters","setListViewSelectedFilters","_useFilterChipGroupCo","useFilterChipGroupContext","clearFilterCallbackTriggerer","setFilterChipGroupSelectedFilters","getValuesArrayFromIndices","indices","map","i","_options$i","filter","v","useEffect","valueNotEmpty","trim","Array","isArray","currentSelectedValues","_options$i2","isSingleValueSynced","isMultiValueSynced","every","includes","isValueAndSelectedIndicesSynced","savedIndices","inputValue","_options$i3","prev","concat","_toConsumableArray","newSelectedIndices","findIndex","option","index","handleClearButtonClick","currentValues","values","_","updatedFilters","_toPropertyKey","isValueEmpty","Object","assign","_defineProperty","handleKeyDown","e","event","key","preventDefault","stopPropagation","_jsx","BaseFilterChip","getFilterChipDisplayValue","ref","accessibilityProps","hasPopup","getActionListContainerRole","expanded","controls","activeDescendant","FilterChipSelectInput","assignWithoutSideEffects","componentId","dropdownComponentIds","triggers"],"mappings":"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"}
@@ -0,0 +1,4 @@
1
+ var getTitleFromValue=function getTitleFromValue(options,value){var option=options.find(function(currentOption){return currentOption.value===value;});return option?option.title:'';};var getFilterChipDisplayValue=function getFilterChipDisplayValue(_ref){var value=_ref.value,options=_ref.options,selectionType=_ref.selectionType,uncontrolledInputValue=_ref.uncontrolledInputValue;var titleForValue=function titleForValue(selectionValue){return getTitleFromValue(options,selectionValue)||selectionValue;};if(value===undefined){if(selectionType==='single'){return uncontrolledInputValue.length>0?titleForValue(uncontrolledInputValue[0]):'';}return uncontrolledInputValue.map(titleForValue);}if(Array.isArray(value)){return value.map(titleForValue);}return titleForValue(value);};
2
+
3
+ export { getFilterChipDisplayValue };
4
+ //# sourceMappingURL=filterChipSelectInputUtils.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"filterChipSelectInputUtils.js","sources":["../../../../../src/components/Dropdown/filterChipSelectInputUtils.ts"],"sourcesContent":["import type { OptionsType } from './useDropdown';\nimport type { BaseFilterChipProps } from '~components/FilterChip/types';\n\n/**\n * Resolves an option's human-readable title from its value. Returns an empty string when the\n * option isn't found so callers can decide on a fallback.\n */\nconst getTitleFromValue = (options: OptionsType, value: string): string => {\n const option = options.find((currentOption) => currentOption.value === value);\n return option ? option.title : '';\n};\n\ntype GetFilterChipDisplayValueParams = {\n /** Controlled value from props (option value or values). `undefined` when uncontrolled. */\n value: BaseFilterChipProps['value'];\n /** All options currently registered in the dropdown. */\n options: OptionsType;\n selectionType: BaseFilterChipProps['selectionType'];\n /** Internally tracked selection used in the uncontrolled case. */\n uncontrolledInputValue: string[];\n};\n\n/**\n * Resolves the value shown inside the filter chip as option title(s).\n *\n * Shared by the web and native `FilterChipSelectInput` implementations to keep the (non-trivial)\n * controlled-vs-uncontrolled / string-vs-array branching in a single source of truth. In every\n * branch we fall back to the raw value when the title can't be resolved (e.g. options loaded or\n * changed after a selection) so the chip never renders an empty string.\n */\nconst getFilterChipDisplayValue = ({\n value,\n options,\n selectionType,\n uncontrolledInputValue,\n}: GetFilterChipDisplayValueParams): string | string[] => {\n const titleForValue = (selectionValue: string): string =>\n getTitleFromValue(options, selectionValue) || selectionValue;\n\n // Uncontrolled: derive display value from the internally tracked selection.\n if (value === undefined) {\n if (selectionType === 'single') {\n return uncontrolledInputValue.length > 0 ? titleForValue(uncontrolledInputValue[0]) : '';\n }\n // For multiple selection, hand the chip the option titles (not the raw values) so it can\n // render the selected option name(s) instead of a bare count.\n return uncontrolledInputValue.map(titleForValue);\n }\n\n // Controlled: consumer passes option value(s); map them to titles for display.\n if (Array.isArray(value)) {\n return value.map(titleForValue);\n }\n return titleForValue(value);\n};\n\nexport { getFilterChipDisplayValue };\n"],"names":["getTitleFromValue","options","value","option","find","currentOption","title","getFilterChipDisplayValue","_ref","selectionType","uncontrolledInputValue","titleForValue","selectionValue","undefined","length","map","Array","isArray"],"mappings":"AAOA,IAAMA,iBAAiB,CAAG,SAApBA,iBAAiBA,CAAIC,OAAoB,CAAEC,KAAa,CAAa,CACzE,IAAMC,MAAM,CAAGF,OAAO,CAACG,IAAI,CAAC,SAACC,aAAa,CAAK,CAAA,OAAAA,aAAa,CAACH,KAAK,GAAKA,KAAK,CAAA,CAAA,CAAC,CAC7E,OAAOC,MAAM,CAAGA,MAAM,CAACG,KAAK,CAAG,EAAE,CACnC,CAAC,CAoBK,IAAAC,yBAAyB,CAAG,SAA5BA,yBAAyBA,CAAAC,IAAA,CAK2B,KAJxDN,KAAK,CAAAM,IAAA,CAALN,KAAK,CACLD,OAAO,CAAAO,IAAA,CAAPP,OAAO,CACPQ,aAAa,CAAAD,IAAA,CAAbC,aAAa,CACbC,sBAAsB,CAAAF,IAAA,CAAtBE,sBAAsB,CAEtB,IAAMC,aAAa,CAAG,SAAhBA,aAAaA,CAAIC,cAAsB,CAAA,CAAA,OAC3CZ,iBAAiB,CAACC,OAAO,CAAEW,cAAc,CAAC,EAAIA,cAAc,CAAA,CAAA,CAG9D,GAAIV,KAAK,GAAKW,SAAS,CAAE,CACvB,GAAIJ,aAAa,GAAK,QAAQ,CAAE,CAC9B,OAAOC,sBAAsB,CAACI,MAAM,CAAG,CAAC,CAAGH,aAAa,CAACD,sBAAsB,CAAC,CAAC,CAAC,CAAC,CAAG,EAAE,CAC1F,CAGA,OAAOA,sBAAsB,CAACK,GAAG,CAACJ,aAAa,CAAC,CAClD,CAGA,GAAIK,KAAK,CAACC,OAAO,CAACf,KAAK,CAAC,CAAE,CACxB,OAAOA,KAAK,CAACa,GAAG,CAACJ,aAAa,CAAC,CACjC,CACA,OAAOA,aAAa,CAACT,KAAK,CAAC,CAC7B;;;;"}
@@ -1,10 +1,12 @@
1
- import '../Typography/index.js';
2
- import '../../utils/logger/index.js';
1
+ import 'react';
2
+ import '../BaseMotion/index.js';
3
+ import '../../utils/index.js';
4
+ import { msToSeconds } from '../../utils/msToSeconds.js';
3
5
  import { jsx } from 'react/jsx-runtime';
4
- import { throwBladeError } from '../../utils/logger/logger.js';
5
- import { Text } from '../Typography/Text/Text.js';
6
+ import useTheme from '../BladeProvider/useTheme.js';
7
+ import { BaseMotionEntryExit } from '../BaseMotion/BaseMotion.native.js';
6
8
 
7
- var _this=undefined,_jsxFileName="/home/runner/work/blade/blade/packages/blade/src/components/Fade/Fade.native.tsx";var Fade=function Fade(_props){throwBladeError({message:'Fade is not yet implemented for native',moduleName:'Fade'});return jsx(Text,{children:"Fade Component is not available for Native mobile apps."});};
9
+ var _this=undefined,_jsxFileName="/home/runner/work/blade/blade/packages/blade/src/components/Fade/Fade.native.tsx";var ENTRANCE_EASING=[0,0,0.2,1];var EXIT_EASING=[0.17,0,1,1];var Fade=function Fade(_ref){var children=_ref.children,isVisible=_ref.isVisible,_ref$type=_ref.type,type=_ref$type===void 0?'inout':_ref$type,_ref$motionTriggers=_ref.motionTriggers,motionTriggers=_ref$motionTriggers===void 0?['mount']:_ref$motionTriggers,shouldUnmountWhenHidden=_ref.shouldUnmountWhenHidden,delay=_ref.delay;var _useTheme=useTheme(),theme=_useTheme.theme;var enterDelay=typeof delay==='object'?delay.enter:delay;var exitDelay=typeof delay==='object'?delay.exit:delay;var fadeVariants={initial:{opacity:0},animate:{opacity:1,transition:Object.assign({},enterDelay?{delay:msToSeconds(theme.motion.delay[enterDelay])}:{},{duration:msToSeconds(theme.motion.duration.xquick),ease:ENTRANCE_EASING})},exit:{opacity:0,transition:Object.assign({},exitDelay?{delay:msToSeconds(theme.motion.delay[exitDelay])}:{},{duration:msToSeconds(theme.motion.duration.xquick),ease:EXIT_EASING})}};return jsx(BaseMotionEntryExit,{motionVariants:fadeVariants,type:type,isVisible:isVisible,motionTriggers:motionTriggers,shouldUnmountWhenHidden:shouldUnmountWhenHidden,children:children});};
8
10
 
9
11
  export { Fade };
10
12
  //# sourceMappingURL=Fade.native.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"Fade.native.js","sources":["../../../../../src/components/Fade/Fade.native.tsx"],"sourcesContent":["import type { FadeProps } from './types';\nimport { Text } from '~components/Typography';\nimport { throwBladeError } from '~utils/logger';\n\nconst Fade = (_props: FadeProps): React.ReactElement => {\n throwBladeError({\n message: 'Fade is not yet implemented for native',\n moduleName: 'Fade',\n });\n\n return <Text>Fade Component is not available for Native mobile apps.</Text>;\n};\n\nexport { Fade };\n"],"names":["Fade","_props","throwBladeError","message","moduleName","_jsx","Text","children"],"mappings":";;;;;;oHAIM,IAAAA,IAAI,CAAG,SAAPA,IAAIA,CAAIC,MAAiB,CAAyB,CACtDC,eAAe,CAAC,CACdC,OAAO,CAAE,wCAAwC,CACjDC,UAAU,CAAE,MACd,CAAC,CAAC,CAEF,OAAOC,GAAA,CAACC,IAAI,CAAA,CAAAC,QAAA,CAAC,yDAAuD,CAAM,CAAC,CAC7E;;;;"}
1
+ {"version":3,"file":"Fade.native.js","sources":["../../../../../src/components/Fade/Fade.native.tsx"],"sourcesContent":["import React from 'react';\nimport type { FadeProps } from './types';\nimport { BaseMotionEntryExit } from '~components/BaseMotion';\nimport type { MotionVariantsType } from '~components/BaseMotion';\nimport { useTheme } from '~utils';\nimport { msToSeconds } from '~utils/msToSeconds';\n\n/**\n * On native, `theme.motion.easing.*` resolves to a reanimated `EasingFactoryFn` (not a\n * `cubic-bezier(...)` string), so the web approach of `cssBezierToArray(castWebType(...))` would\n * crash. Instead we supply `ease` as the 4-number bezier control-point array that the native\n * interpreter's `getTiming` feeds into `Easing.bezier(...ease)`.\n *\n * These arrays mirror the exact control points of the `entrance` / `exit` easing tokens defined in\n * `~tokens/global/motion`:\n * - entrance → `cubic-bezier(0, 0, 0.2, 1)`\n * - exit → `cubic-bezier(0.17, 0, 1, 1)`\n *\n * **Sync risk:** These are hardcoded duplicates of the token values. If the token definitions\n * change, these arrays must be updated manually. The same pattern exists in `Move.native.tsx`\n * and `Scale.native.tsx`. There is currently no automated sync mechanism — a unit test should be\n * added to assert these arrays match the token definitions.\n */\nconst ENTRANCE_EASING: [number, number, number, number] = [0, 0, 0.2, 1];\nconst EXIT_EASING: [number, number, number, number] = [0.17, 0, 1, 1];\n\n/**\n * ## Fade\n *\n * Fade is one of the motion presets that we expose from blade to help you fade in / fade out components easily.\n *\n * ### Usage\n *\n * #### Fade in on mount\n *\n * ```jsx\n * <Fade>\n * <Card />\n * </Fade>\n * ```\n *\n * #### Conditionally fade based on state\n *\n * ```jsx\n * <Fade isVisible={isVisibleState}>\n * <Card />\n * </Fade>\n * ```\n */\nconst Fade = ({\n children,\n isVisible,\n type = 'inout',\n motionTriggers = ['mount'],\n shouldUnmountWhenHidden,\n delay,\n}: FadeProps): React.ReactElement => {\n const { theme } = useTheme();\n const enterDelay = typeof delay === 'object' ? delay.enter : delay;\n const exitDelay = typeof delay === 'object' ? delay.exit : delay;\n\n const fadeVariants: MotionVariantsType = {\n initial: {\n opacity: 0,\n },\n animate: {\n opacity: 1,\n transition: {\n // We have to make sure we don't add delay prop because if we define it, it takes precedence in stagger.\n // Even setting `undefined` would break the stagger\n ...(enterDelay ? { delay: msToSeconds(theme.motion.delay[enterDelay]) } : {}),\n duration: msToSeconds(theme.motion.duration.xquick),\n ease: ENTRANCE_EASING,\n },\n },\n exit: {\n opacity: 0,\n transition: {\n ...(exitDelay ? { delay: msToSeconds(theme.motion.delay[exitDelay]) } : {}),\n duration: msToSeconds(theme.motion.duration.xquick),\n ease: EXIT_EASING,\n },\n },\n };\n\n return (\n <BaseMotionEntryExit\n motionVariants={fadeVariants}\n type={type}\n isVisible={isVisible}\n motionTriggers={motionTriggers}\n shouldUnmountWhenHidden={shouldUnmountWhenHidden}\n children={children}\n />\n );\n};\n\nexport { Fade };\n"],"names":["this","ENTRANCE_EASING","EXIT_EASING","Fade","_ref","children","isVisible","_ref$type","type","_ref$motionTriggers","motionTriggers","shouldUnmountWhenHidden","delay","_useTheme","useTheme","theme","enterDelay","enter","exitDelay","exit","fadeVariants","initial","opacity","animate","transition","Object","assign","msToSeconds","motion","duration","xquick","ease","_jsx","BaseMotionEntryExit","motionVariants"],"mappings":";;;;;;;;AAAA,IAAA,KAAA,CAAAA,SAAA,CAAA,YAAA,CAAA,kFAAA,CAuBA,IAAMC,eAAiD,CAAG,CAAC,CAAC,CAAE,CAAC,CAAE,GAAG,CAAE,CAAC,CAAC,CACxE,IAAMC,WAA6C,CAAG,CAAC,IAAI,CAAE,CAAC,CAAE,CAAC,CAAE,CAAC,CAAC,CAyB/D,IAAAC,IAAI,CAAG,SAAPA,IAAIA,CAAAC,IAAA,CAO2B,CANnC,IAAAC,QAAQ,CAAAD,IAAA,CAARC,QAAQ,CACRC,SAAS,CAAAF,IAAA,CAATE,SAAS,CAAAC,SAAA,CAAAH,IAAA,CACTI,IAAI,CAAJA,IAAI,CAAAD,SAAA,GAAA,KAAA,CAAA,CAAG,OAAO,CAAAA,SAAA,CAAAE,mBAAA,CAAAL,IAAA,CACdM,cAAc,CAAdA,cAAc,CAAAD,mBAAA,GAAG,KAAA,CAAA,CAAA,CAAC,OAAO,CAAC,CAAAA,mBAAA,CAC1BE,uBAAuB,CAAAP,IAAA,CAAvBO,uBAAuB,CACvBC,KAAK,CAAAR,IAAA,CAALQ,KAAK,CAEL,IAAAC,SAAA,CAAkBC,QAAQ,EAAE,CAApBC,KAAK,CAAAF,SAAA,CAALE,KAAK,CACb,IAAMC,UAAU,CAAG,OAAOJ,KAAK,GAAK,QAAQ,CAAGA,KAAK,CAACK,KAAK,CAAGL,KAAK,CAClE,IAAMM,SAAS,CAAG,OAAON,KAAK,GAAK,QAAQ,CAAGA,KAAK,CAACO,IAAI,CAAGP,KAAK,CAEhE,IAAMQ,YAAgC,CAAG,CACvCC,OAAO,CAAE,CACPC,OAAO,CAAE,CACX,CAAC,CACDC,OAAO,CAAE,CACPD,OAAO,CAAE,CAAC,CACVE,UAAU,CAAAC,MAAA,CAAAC,MAAA,CAGJV,EAAAA,CAAAA,UAAU,CAAG,CAAEJ,KAAK,CAAEe,WAAW,CAACZ,KAAK,CAACa,MAAM,CAAChB,KAAK,CAACI,UAAU,CAAC,CAAE,CAAC,CAAG,EAAE,CAAA,CAC5Ea,QAAQ,CAAEF,WAAW,CAACZ,KAAK,CAACa,MAAM,CAACC,QAAQ,CAACC,MAAM,CAAC,CACnDC,IAAI,CAAE9B,eAAe,CAAA,CAEzB,CAAC,CACDkB,IAAI,CAAE,CACJG,OAAO,CAAE,CAAC,CACVE,UAAU,CAAAC,MAAA,CAAAC,MAAA,CAAA,EAAA,CACJR,SAAS,CAAG,CAAEN,KAAK,CAAEe,WAAW,CAACZ,KAAK,CAACa,MAAM,CAAChB,KAAK,CAACM,SAAS,CAAC,CAAE,CAAC,CAAG,EAAE,EAC1EW,QAAQ,CAAEF,WAAW,CAACZ,KAAK,CAACa,MAAM,CAACC,QAAQ,CAACC,MAAM,CAAC,CACnDC,IAAI,CAAE7B,WAAW,CAAA,CAErB,CACF,CAAC,CAED,OACE8B,GAAA,CAACC,mBAAmB,CAClBC,CAAAA,cAAc,CAAEd,YAAa,CAC7BZ,IAAI,CAAEA,IAAK,CACXF,SAAS,CAAEA,SAAU,CACrBI,cAAc,CAAEA,cAAe,CAC/BC,uBAAuB,CAAEA,uBAAwB,CACjDN,QAAQ,CAAEA,QAAS,CACpB,CAAC,CAEN;;;;"}