{"ast":null,"code":"import _objectWithoutPropertiesLoose from \"@babel/runtime/helpers/objectWithoutPropertiesLoose\";\nconst _excluded = [\"icon\", \"label\", \"background\", \"accessibilityLabel\", \"accessibilityState\", \"color\", \"rippleColor\", \"disabled\", \"onPress\", \"onLongPress\", \"delayLongPress\", \"theme\", \"style\", \"visible\", \"uppercase\", \"testID\", \"animateFrom\", \"extended\", \"iconMode\", \"variant\", \"labelMaxFontSizeMultiplier\", \"hitSlop\"],\n  _excluded2 = [\"backgroundColor\"];\nfunction _extends() {\n  return _extends = Object.assign ? Object.assign.bind() : function (n) {\n    for (var e = 1; e < arguments.length; e++) {\n      var t = arguments[e];\n      for (var r in t) ({}).hasOwnProperty.call(t, r) && (n[r] = t[r]);\n    }\n    return n;\n  }, _extends.apply(null, arguments);\n}\nimport * as React from 'react';\nimport Animated from \"react-native-web/dist/exports/Animated\";\nimport Easing from \"react-native-web/dist/exports/Easing\";\nimport I18nManager from \"react-native-web/dist/exports/I18nManager\";\nimport Platform from \"react-native-web/dist/exports/Platform\";\nimport ScrollView from \"react-native-web/dist/exports/ScrollView\";\nimport StyleSheet from \"react-native-web/dist/exports/StyleSheet\";\nimport View from \"react-native-web/dist/exports/View\";\nimport color from 'color';\nimport { getCombinedStyles, getFABColors, getLabelSizeWeb } from \"./utils\";\nimport { useInternalTheme } from \"../../core/theming\";\nimport Icon from \"../Icon\";\nimport Surface from \"../Surface\";\nimport TouchableRipple from \"../TouchableRipple/TouchableRipple\";\nimport AnimatedText from \"../Typography/AnimatedText\";\nconst SIZE = 56;\nconst SCALE = 0.9;\nconst AnimatedFAB = _ref => {\n  let {\n      icon,\n      label,\n      background,\n      accessibilityLabel = label,\n      accessibilityState,\n      color: customColor,\n      rippleColor: customRippleColor,\n      disabled,\n      onPress,\n      onLongPress,\n      delayLongPress,\n      theme: themeOverrides,\n      style,\n      visible = true,\n      uppercase: uppercaseProp,\n      testID = 'animated-fab',\n      animateFrom = 'right',\n      extended = false,\n      iconMode = 'dynamic',\n      variant = 'primary',\n      labelMaxFontSizeMultiplier,\n      hitSlop\n    } = _ref,\n    rest = _objectWithoutPropertiesLoose(_ref, _excluded);\n  const theme = useInternalTheme(themeOverrides);\n  const uppercase = uppercaseProp ?? !theme.isV3;\n  const isIOS = Platform.OS === 'ios';\n  const isWeb = Platform.OS === 'web';\n  const isAnimatedFromRight = animateFrom === 'right';\n  const isIconStatic = iconMode === 'static';\n  const {\n    isRTL\n  } = I18nManager;\n  const labelRef = React.useRef(null);\n  const {\n    current: visibility\n  } = React.useRef(new Animated.Value(visible ? 1 : 0));\n  const {\n    current: animFAB\n  } = React.useRef(new Animated.Value(0));\n  const {\n    isV3,\n    animation\n  } = theme;\n  const {\n    scale\n  } = animation;\n  const labelSize = isWeb ? getLabelSizeWeb(labelRef) : null;\n  const [textWidth, setTextWidth] = React.useState((labelSize === null || labelSize === void 0 ? void 0 : labelSize.width) ?? 0);\n  const [textHeight, setTextHeight] = React.useState((labelSize === null || labelSize === void 0 ? void 0 : labelSize.height) ?? 0);\n  const borderRadius = SIZE / (isV3 ? 3.5 : 2);\n  React.useEffect(() => {\n    if (!isWeb) {\n      return;\n    }\n    const updateTextSize = () => {\n      if (labelRef.current) {\n        const labelSize = getLabelSizeWeb(labelRef);\n        if (labelSize) {\n          setTextHeight(labelSize.height ?? 0);\n          setTextWidth(labelSize.width ?? 0);\n        }\n      }\n    };\n    updateTextSize();\n    window.addEventListener('resize', updateTextSize);\n    return () => {\n      if (!isWeb) {\n        return;\n      }\n      window.removeEventListener('resize', updateTextSize);\n    };\n  }, [isWeb]);\n  React.useEffect(() => {\n    if (visible) {\n      Animated.timing(visibility, {\n        toValue: 1,\n        duration: 200 * scale,\n        useNativeDriver: true\n      }).start();\n    } else {\n      Animated.timing(visibility, {\n        toValue: 0,\n        duration: 150 * scale,\n        useNativeDriver: true\n      }).start();\n    }\n  }, [visible, scale, visibility]);\n  const _ref2 = StyleSheet.flatten(style) || {},\n    {\n      backgroundColor: customBackgroundColor\n    } = _ref2,\n    restStyle = _objectWithoutPropertiesLoose(_ref2, _excluded2);\n  const {\n    backgroundColor,\n    foregroundColor\n  } = getFABColors({\n    theme,\n    variant,\n    disabled,\n    customColor,\n    customBackgroundColor\n  });\n  const rippleColor = customRippleColor || color(foregroundColor).alpha(0.12).rgb().string();\n  const extendedWidth = textWidth + SIZE + borderRadius;\n  const distance = isAnimatedFromRight ? -textWidth - borderRadius : textWidth + borderRadius;\n  React.useEffect(() => {\n    Animated.timing(animFAB, {\n      toValue: !extended ? 0 : distance,\n      duration: 150 * scale,\n      useNativeDriver: true,\n      easing: Easing.linear\n    }).start();\n  }, [animFAB, scale, distance, extended]);\n  const onTextLayout = ({\n    nativeEvent\n  }) => {\n    var _nativeEvent$lines$, _nativeEvent$lines$2;\n    const currentWidth = Math.ceil(((_nativeEvent$lines$ = nativeEvent.lines[0]) === null || _nativeEvent$lines$ === void 0 ? void 0 : _nativeEvent$lines$.width) ?? 0);\n    const currentHeight = Math.ceil(((_nativeEvent$lines$2 = nativeEvent.lines[0]) === null || _nativeEvent$lines$2 === void 0 ? void 0 : _nativeEvent$lines$2.height) ?? 0);\n    if (currentWidth !== textWidth || currentHeight !== textHeight) {\n      setTextHeight(currentHeight);\n      if (isIOS) {\n        return setTextWidth(currentWidth - 12);\n      }\n      setTextWidth(currentWidth);\n    }\n  };\n  const propForDirection = right => {\n    if (isAnimatedFromRight) {\n      return right;\n    }\n    return right.reverse();\n  };\n  const combinedStyles = getCombinedStyles({\n    isAnimatedFromRight,\n    isIconStatic,\n    distance,\n    animFAB\n  });\n  const font = isV3 ? theme.fonts.labelLarge : theme.fonts.medium;\n  const textStyle = Object.assign({\n    color: foregroundColor\n  }, font);\n  const md2Elevation = disabled || !isIOS ? 0 : 6;\n  const md3Elevation = disabled || !isIOS ? 0 : 3;\n  const shadowStyle = isV3 ? styles.v3Shadow : styles.shadow;\n  const baseStyle = [StyleSheet.absoluteFill, disabled ? styles.disabled : shadowStyle];\n  const newAccessibilityState = Object.assign({}, accessibilityState, {\n    disabled\n  });\n  return React.createElement(Surface, _extends({}, rest, {\n    testID: `${testID}-container`,\n    style: [{\n      opacity: visibility,\n      transform: [{\n        scale: visibility\n      }],\n      borderRadius\n    }, !isV3 && {\n      elevation: md2Elevation\n    }, styles.container, restStyle]\n  }, isV3 && {\n    elevation: md3Elevation\n  }, {\n    theme: theme,\n    container: true\n  }), React.createElement(Animated.View, {\n    style: [!isV3 && {\n      transform: [{\n        scaleY: animFAB.interpolate({\n          inputRange: propForDirection([distance, 0]),\n          outputRange: propForDirection([SCALE, 1])\n        })\n      }]\n    }, styles.standard, {\n      borderRadius\n    }]\n  }, React.createElement(View, {\n    style: [StyleSheet.absoluteFill, styles.shadowWrapper]\n  }, React.createElement(Animated.View, {\n    pointerEvents: \"none\",\n    style: [baseStyle, {\n      width: extendedWidth,\n      opacity: animFAB.interpolate({\n        inputRange: propForDirection([distance, 0.9 * distance, 0]),\n        outputRange: propForDirection([1, 0.15, 0])\n      }),\n      borderRadius\n    }],\n    testID: `${testID}-extended-shadow`\n  }), React.createElement(Animated.View, {\n    pointerEvents: \"none\",\n    style: [baseStyle, {\n      opacity: animFAB.interpolate({\n        inputRange: propForDirection([distance, 0.9 * distance, 0]),\n        outputRange: propForDirection([0, 0.85, 1])\n      }),\n      width: SIZE,\n      borderRadius: animFAB.interpolate({\n        inputRange: propForDirection([distance, 0]),\n        outputRange: propForDirection([SIZE / (extendedWidth / SIZE), borderRadius])\n      })\n    }, combinedStyles.absoluteFill],\n    testID: `${testID}-shadow`\n  })), React.createElement(Animated.View, {\n    pointerEvents: \"box-none\",\n    style: [styles.innerWrapper, {\n      borderRadius\n    }]\n  }, React.createElement(Animated.View, {\n    style: [styles.standard, {\n      width: extendedWidth,\n      backgroundColor,\n      borderRadius\n    }, combinedStyles.innerWrapper]\n  }, React.createElement(TouchableRipple, {\n    borderless: true,\n    background: background,\n    onPress: onPress,\n    onLongPress: onLongPress,\n    delayLongPress: delayLongPress,\n    rippleColor: rippleColor,\n    disabled: disabled,\n    accessibilityLabel: accessibilityLabel,\n    accessibilityRole: \"button\",\n    accessibilityState: newAccessibilityState,\n    testID: testID,\n    style: {\n      borderRadius\n    },\n    theme: theme,\n    hitSlop: hitSlop\n  }, React.createElement(View, {\n    style: [styles.standard, {\n      width: extendedWidth,\n      borderRadius\n    }]\n  }))))), React.createElement(Animated.View, {\n    style: [styles.iconWrapper, combinedStyles.iconWrapper],\n    pointerEvents: \"none\"\n  }, React.createElement(Icon, {\n    source: icon,\n    size: 24,\n    color: foregroundColor,\n    theme: theme\n  })), React.createElement(View, {\n    pointerEvents: \"none\"\n  }, React.createElement(AnimatedText, {\n    ref: isWeb ? labelRef : null,\n    variant: \"labelLarge\",\n    numberOfLines: 1,\n    onTextLayout: isIOS ? onTextLayout : undefined,\n    ellipsizeMode: 'tail',\n    style: [{\n      [isAnimatedFromRight || isRTL ? 'right' : 'left']: isIconStatic ? textWidth - SIZE + borderRadius / (isV3 ? 1 : 2) : borderRadius\n    }, {\n      minWidth: textWidth,\n      top: -SIZE / 2 - textHeight / 2,\n      opacity: animFAB.interpolate({\n        inputRange: propForDirection([distance, 0.7 * distance, 0]),\n        outputRange: propForDirection([1, 0, 0])\n      }),\n      transform: [{\n        translateX: animFAB.interpolate({\n          inputRange: propForDirection([distance, 0]),\n          outputRange: propForDirection([0, SIZE])\n        })\n      }]\n    }, styles.label, uppercase && styles.uppercaseLabel, textStyle],\n    theme: theme,\n    testID: `${testID}-text`,\n    maxFontSizeMultiplier: labelMaxFontSizeMultiplier\n  }, label)), !isIOS && React.createElement(ScrollView, {\n    style: styles.textPlaceholderContainer\n  }, React.createElement(AnimatedText, {\n    variant: \"labelLarge\",\n    numberOfLines: 1,\n    onTextLayout: onTextLayout,\n    ellipsizeMode: 'tail',\n    style: [styles.label, uppercase && styles.uppercaseLabel, textStyle],\n    theme: theme\n  }, label)));\n};\nconst styles = StyleSheet.create({\n  standard: {\n    height: SIZE\n  },\n  disabled: {\n    elevation: 0\n  },\n  container: {\n    position: 'absolute',\n    backgroundColor: 'transparent'\n  },\n  innerWrapper: {\n    flexDirection: 'row',\n    overflow: 'hidden'\n  },\n  shadowWrapper: {\n    elevation: 0\n  },\n  shadow: {\n    elevation: 6\n  },\n  v3Shadow: {\n    elevation: 3\n  },\n  iconWrapper: {\n    alignItems: 'center',\n    justifyContent: 'center',\n    position: 'absolute',\n    height: SIZE,\n    width: SIZE\n  },\n  label: {\n    position: 'absolute'\n  },\n  uppercaseLabel: {\n    textTransform: 'uppercase'\n  },\n  textPlaceholderContainer: {\n    height: 0,\n    position: 'absolute'\n  }\n});\nexport default AnimatedFAB;","map":{"version":3,"names":["React","Animated","Easing","I18nManager","Platform","ScrollView","StyleSheet","View","color","getCombinedStyles","getFABColors","getLabelSizeWeb","useInternalTheme","Icon","Surface","TouchableRipple","AnimatedText","SIZE","SCALE","AnimatedFAB","_ref","icon","label","background","accessibilityLabel","accessibilityState","customColor","rippleColor","customRippleColor","disabled","onPress","onLongPress","delayLongPress","theme","themeOverrides","style","visible","uppercase","uppercaseProp","testID","animateFrom","extended","iconMode","variant","labelMaxFontSizeMultiplier","hitSlop","rest","_objectWithoutPropertiesLoose","_excluded","isV3","isIOS","OS","isWeb","isAnimatedFromRight","isIconStatic","isRTL","labelRef","useRef","current","visibility","Value","animFAB","animation","scale","labelSize","textWidth","setTextWidth","useState","width","textHeight","setTextHeight","height","borderRadius","useEffect","updateTextSize","window","addEventListener","removeEventListener","timing","toValue","duration","useNativeDriver","start","_ref2","flatten","backgroundColor","customBackgroundColor","restStyle","_excluded2","foregroundColor","alpha","rgb","string","extendedWidth","distance","easing","linear","onTextLayout","nativeEvent","_nativeEvent$lines$","_nativeEvent$lines$2","currentWidth","Math","ceil","lines","currentHeight","propForDirection","right","reverse","combinedStyles","font","fonts","labelLarge","medium","textStyle","Object","assign","md2Elevation","md3Elevation","shadowStyle","styles","v3Shadow","shadow","baseStyle","absoluteFill","newAccessibilityState","createElement","_extends","opacity","transform","elevation","container","scaleY","interpolate","inputRange","outputRange","standard","shadowWrapper","pointerEvents","innerWrapper","borderless","accessibilityRole","iconWrapper","source","size","ref","numberOfLines","undefined","ellipsizeMode","minWidth","top","translateX","uppercaseLabel","maxFontSizeMultiplier","textPlaceholderContainer","create","position","flexDirection","overflow","alignItems","justifyContent","textTransform"],"sources":["/Users/pmouli/Documents/GitHub.nosync/boots-strapper/mobile/node_modules/react-native-paper/src/components/FAB/AnimatedFAB.tsx"],"sourcesContent":["import * as React from 'react';\nimport type {\n  AccessibilityState,\n  ColorValue,\n  NativeSyntheticEvent,\n  PressableAndroidRippleConfig,\n  TextLayoutEventData,\n} from 'react-native';\nimport {\n  Animated,\n  Easing,\n  GestureResponderEvent,\n  I18nManager,\n  Platform,\n  ScrollView,\n  StyleProp,\n  StyleSheet,\n  View,\n  ViewStyle,\n  Text,\n} from 'react-native';\n\nimport color from 'color';\n\nimport { getCombinedStyles, getFABColors, getLabelSizeWeb } from './utils';\nimport { useInternalTheme } from '../../core/theming';\nimport type { $Omit, $RemoveChildren, ThemeProp } from '../../types';\nimport type { IconSource } from '../Icon';\nimport Icon from '../Icon';\nimport Surface from '../Surface';\nimport TouchableRipple, {\n  Props as TouchableRippleProps,\n} from '../TouchableRipple/TouchableRipple';\nimport AnimatedText from '../Typography/AnimatedText';\n\nexport type AnimatedFABIconMode = 'static' | 'dynamic';\nexport type AnimatedFABAnimateFrom = 'left' | 'right';\n\nexport type Props = $Omit<$RemoveChildren<typeof Surface>, 'mode'> & {\n  /**\n   * Icon to display for the `FAB`.\n   */\n  icon: IconSource;\n  /**\n   * Label for extended `FAB`.\n   */\n  label: string;\n  /**\n   * Make the label text uppercased.\n   */\n  uppercase?: boolean;\n  /**\n   * Type of background drawabale to display the feedback (Android).\n   * https://reactnative.dev/docs/pressable#rippleconfig\n   */\n  background?: PressableAndroidRippleConfig;\n  /**\n   * Accessibility label for the FAB. This is read by the screen reader when the user taps the FAB.\n   * Uses `label` by default if specified.\n   */\n  accessibilityLabel?: string;\n  /**\n   * Accessibility state for the FAB. This is read by the screen reader when the user taps the FAB.\n   */\n  accessibilityState?: AccessibilityState;\n  /**\n   * Custom color for the icon and label of the `FAB`.\n   */\n  color?: string;\n  /**\n   * Color of the ripple effect.\n   */\n  rippleColor?: ColorValue;\n  /**\n   * Whether `FAB` is disabled. A disabled button is greyed out and `onPress` is not called on touch.\n   */\n  disabled?: boolean;\n  /**\n   * Whether `FAB` is currently visible.\n   */\n  visible?: boolean;\n  /**\n   * Function to execute on press.\n   */\n  onPress?: (e: GestureResponderEvent) => void;\n  /**\n   * Function to execute on long press.\n   */\n  onLongPress?: (e: GestureResponderEvent) => void;\n  /**\n   * The number of milliseconds a user must touch the element before executing `onLongPress`.\n   */\n  delayLongPress?: number;\n  /**\n   * Whether icon should be translated to the end of extended `FAB` or be static and stay in the same place. The default value is `dynamic`.\n   */\n  iconMode?: AnimatedFABIconMode;\n  /**\n   * Indicates from which direction animation should be performed. The default value is `right`.\n   */\n  animateFrom?: AnimatedFABAnimateFrom;\n  /**\n   * Whether `FAB` should start animation to extend.\n   */\n  extended: boolean;\n  /**\n   * Specifies the largest possible scale a label font can reach.\n   */\n  labelMaxFontSizeMultiplier?: number;\n  /**\n   * @supported Available in v5.x with theme version 3\n   *\n   * Color mappings variant for combinations of container and icon colors.\n   */\n  variant?: 'primary' | 'secondary' | 'tertiary' | 'surface';\n  style?: Animated.WithAnimatedValue<StyleProp<ViewStyle>>;\n  /**\n   * Sets additional distance outside of element in which a press can be detected.\n   */\n  hitSlop?: TouchableRippleProps['hitSlop'];\n  /**\n   * @optional\n   */\n  theme?: ThemeProp;\n  /**\n   * TestID used for testing purposes\n   */\n  testID?: string;\n};\n\nconst SIZE = 56;\nconst SCALE = 0.9;\n\n/**\n * An animated, extending horizontally floating action button represents the primary action in an application.\n *\n * ## Usage\n * ```js\n * import React from 'react';\n * import {\n *   StyleProp,\n *   ViewStyle,\n *   Animated,\n *   StyleSheet,\n *   Platform,\n *   ScrollView,\n *   Text,\n *   SafeAreaView,\n *   I18nManager,\n * } from 'react-native';\n * import { AnimatedFAB } from 'react-native-paper';\n *\n * const MyComponent = ({\n *   animatedValue,\n *   visible,\n *   extended,\n *   label,\n *   animateFrom,\n *   style,\n *   iconMode,\n * }) => {\n *   const [isExtended, setIsExtended] = React.useState(true);\n *\n *   const isIOS = Platform.OS === 'ios';\n *\n *   const onScroll = ({ nativeEvent }) => {\n *     const currentScrollPosition =\n *       Math.floor(nativeEvent?.contentOffset?.y) ?? 0;\n *\n *     setIsExtended(currentScrollPosition <= 0);\n *   };\n *\n *   const fabStyle = { [animateFrom]: 16 };\n *\n *   return (\n *     <SafeAreaView style={styles.container}>\n *       <ScrollView onScroll={onScroll}>\n *         {[...new Array(100).keys()].map((_, i) => (\n *           <Text>{i}</Text>\n *         ))}\n *       </ScrollView>\n *       <AnimatedFAB\n *         icon={'plus'}\n *         label={'Label'}\n *         extended={isExtended}\n *         onPress={() => console.log('Pressed')}\n *         visible={visible}\n *         animateFrom={'right'}\n *         iconMode={'static'}\n *         style={[styles.fabStyle, style, fabStyle]}\n *       />\n *     </SafeAreaView>\n *   );\n * };\n *\n * export default MyComponent;\n *\n * const styles = StyleSheet.create({\n *   container: {\n *     flexGrow: 1,\n *   },\n *   fabStyle: {\n *     bottom: 16,\n *     right: 16,\n *     position: 'absolute',\n *   },\n * });\n * ```\n */\nconst AnimatedFAB = ({\n  icon,\n  label,\n  background,\n  accessibilityLabel = label,\n  accessibilityState,\n  color: customColor,\n  rippleColor: customRippleColor,\n  disabled,\n  onPress,\n  onLongPress,\n  delayLongPress,\n  theme: themeOverrides,\n  style,\n  visible = true,\n  uppercase: uppercaseProp,\n  testID = 'animated-fab',\n  animateFrom = 'right',\n  extended = false,\n  iconMode = 'dynamic',\n  variant = 'primary',\n  labelMaxFontSizeMultiplier,\n  hitSlop,\n  ...rest\n}: Props) => {\n  const theme = useInternalTheme(themeOverrides);\n  const uppercase: boolean = uppercaseProp ?? !theme.isV3;\n  const isIOS = Platform.OS === 'ios';\n  const isWeb = Platform.OS === 'web';\n  const isAnimatedFromRight = animateFrom === 'right';\n  const isIconStatic = iconMode === 'static';\n  const { isRTL } = I18nManager;\n  const labelRef = React.useRef<Text & HTMLElement>(null);\n  const { current: visibility } = React.useRef<Animated.Value>(\n    new Animated.Value(visible ? 1 : 0)\n  );\n  const { current: animFAB } = React.useRef<Animated.Value>(\n    new Animated.Value(0)\n  );\n  const { isV3, animation } = theme;\n  const { scale } = animation;\n\n  const labelSize = isWeb ? getLabelSizeWeb(labelRef) : null;\n  const [textWidth, setTextWidth] = React.useState<number>(\n    labelSize?.width ?? 0\n  );\n  const [textHeight, setTextHeight] = React.useState<number>(\n    labelSize?.height ?? 0\n  );\n\n  const borderRadius = SIZE / (isV3 ? 3.5 : 2);\n\n  React.useEffect(() => {\n    if (!isWeb) {\n      return;\n    }\n\n    const updateTextSize = () => {\n      if (labelRef.current) {\n        const labelSize = getLabelSizeWeb(labelRef);\n\n        if (labelSize) {\n          setTextHeight(labelSize.height ?? 0);\n          setTextWidth(labelSize.width ?? 0);\n        }\n      }\n    };\n\n    updateTextSize();\n    window.addEventListener('resize', updateTextSize);\n\n    return () => {\n      if (!isWeb) {\n        return;\n      }\n\n      window.removeEventListener('resize', updateTextSize);\n    };\n  }, [isWeb]);\n\n  React.useEffect(() => {\n    if (visible) {\n      Animated.timing(visibility, {\n        toValue: 1,\n        duration: 200 * scale,\n        useNativeDriver: true,\n      }).start();\n    } else {\n      Animated.timing(visibility, {\n        toValue: 0,\n        duration: 150 * scale,\n        useNativeDriver: true,\n      }).start();\n    }\n  }, [visible, scale, visibility]);\n\n  const { backgroundColor: customBackgroundColor, ...restStyle } =\n    (StyleSheet.flatten(style) || {}) as ViewStyle;\n\n  const { backgroundColor, foregroundColor } = getFABColors({\n    theme,\n    variant,\n    disabled,\n    customColor,\n    customBackgroundColor,\n  });\n\n  const rippleColor =\n    customRippleColor || color(foregroundColor).alpha(0.12).rgb().string();\n\n  const extendedWidth = textWidth + SIZE + borderRadius;\n\n  const distance = isAnimatedFromRight\n    ? -textWidth - borderRadius\n    : textWidth + borderRadius;\n\n  React.useEffect(() => {\n    Animated.timing(animFAB, {\n      toValue: !extended ? 0 : distance,\n      duration: 150 * scale,\n      useNativeDriver: true,\n      easing: Easing.linear,\n    }).start();\n  }, [animFAB, scale, distance, extended]);\n\n  const onTextLayout = ({\n    nativeEvent,\n  }: NativeSyntheticEvent<TextLayoutEventData>) => {\n    const currentWidth = Math.ceil(nativeEvent.lines[0]?.width ?? 0);\n    const currentHeight = Math.ceil(nativeEvent.lines[0]?.height ?? 0);\n\n    if (currentWidth !== textWidth || currentHeight !== textHeight) {\n      setTextHeight(currentHeight);\n\n      if (isIOS) {\n        return setTextWidth(currentWidth - 12);\n      }\n\n      setTextWidth(currentWidth);\n    }\n  };\n\n  const propForDirection = <T,>(right: T[]): T[] => {\n    if (isAnimatedFromRight) {\n      return right;\n    }\n\n    return right.reverse();\n  };\n\n  const combinedStyles = getCombinedStyles({\n    isAnimatedFromRight,\n    isIconStatic,\n    distance,\n    animFAB,\n  });\n\n  const font = isV3 ? theme.fonts.labelLarge : theme.fonts.medium;\n\n  const textStyle = {\n    color: foregroundColor,\n    ...font,\n  };\n\n  const md2Elevation = disabled || !isIOS ? 0 : 6;\n  const md3Elevation = disabled || !isIOS ? 0 : 3;\n\n  const shadowStyle = isV3 ? styles.v3Shadow : styles.shadow;\n  const baseStyle = [\n    StyleSheet.absoluteFill,\n    disabled ? styles.disabled : shadowStyle,\n  ];\n\n  const newAccessibilityState = { ...accessibilityState, disabled };\n\n  return (\n    <Surface\n      {...rest}\n      testID={`${testID}-container`}\n      style={[\n        {\n          opacity: visibility,\n          transform: [\n            {\n              scale: visibility,\n            },\n          ],\n          borderRadius,\n        },\n        !isV3 && {\n          elevation: md2Elevation,\n        },\n        styles.container,\n        restStyle,\n      ]}\n      {...(isV3 && { elevation: md3Elevation })}\n      theme={theme}\n      container\n    >\n      <Animated.View\n        style={[\n          !isV3 && {\n            transform: [\n              {\n                scaleY: animFAB.interpolate({\n                  inputRange: propForDirection([distance, 0]),\n                  outputRange: propForDirection([SCALE, 1]),\n                }),\n              },\n            ],\n          },\n          styles.standard,\n          { borderRadius },\n        ]}\n      >\n        <View style={[StyleSheet.absoluteFill, styles.shadowWrapper]}>\n          <Animated.View\n            pointerEvents=\"none\"\n            style={[\n              baseStyle,\n              {\n                width: extendedWidth,\n                opacity: animFAB.interpolate({\n                  inputRange: propForDirection([distance, 0.9 * distance, 0]),\n                  outputRange: propForDirection([1, 0.15, 0]),\n                }),\n                borderRadius,\n              },\n            ]}\n            testID={`${testID}-extended-shadow`}\n          />\n          <Animated.View\n            pointerEvents=\"none\"\n            style={[\n              baseStyle,\n              {\n                opacity: animFAB.interpolate({\n                  inputRange: propForDirection([distance, 0.9 * distance, 0]),\n                  outputRange: propForDirection([0, 0.85, 1]),\n                }),\n                width: SIZE,\n                borderRadius: animFAB.interpolate({\n                  inputRange: propForDirection([distance, 0]),\n                  outputRange: propForDirection([\n                    SIZE / (extendedWidth / SIZE),\n                    borderRadius,\n                  ]),\n                }),\n              },\n              combinedStyles.absoluteFill,\n            ]}\n            testID={`${testID}-shadow`}\n          />\n        </View>\n        <Animated.View\n          pointerEvents=\"box-none\"\n          style={[styles.innerWrapper, { borderRadius }]}\n        >\n          <Animated.View\n            style={[\n              styles.standard,\n              {\n                width: extendedWidth,\n                backgroundColor,\n                borderRadius,\n              },\n              combinedStyles.innerWrapper,\n            ]}\n          >\n            <TouchableRipple\n              borderless\n              background={background}\n              onPress={onPress}\n              onLongPress={onLongPress}\n              delayLongPress={delayLongPress}\n              rippleColor={rippleColor}\n              disabled={disabled}\n              accessibilityLabel={accessibilityLabel}\n              accessibilityRole=\"button\"\n              accessibilityState={newAccessibilityState}\n              testID={testID}\n              style={{ borderRadius }}\n              theme={theme}\n              hitSlop={hitSlop}\n            >\n              <View\n                style={[\n                  styles.standard,\n                  {\n                    width: extendedWidth,\n                    borderRadius,\n                  },\n                ]}\n              />\n            </TouchableRipple>\n          </Animated.View>\n        </Animated.View>\n      </Animated.View>\n\n      <Animated.View\n        style={[styles.iconWrapper, combinedStyles.iconWrapper]}\n        pointerEvents=\"none\"\n      >\n        <Icon source={icon} size={24} color={foregroundColor} theme={theme} />\n      </Animated.View>\n\n      <View pointerEvents=\"none\">\n        <AnimatedText\n          ref={isWeb ? labelRef : null}\n          variant=\"labelLarge\"\n          numberOfLines={1}\n          onTextLayout={isIOS ? onTextLayout : undefined}\n          ellipsizeMode={'tail'}\n          style={[\n            {\n              [isAnimatedFromRight || isRTL ? 'right' : 'left']: isIconStatic\n                ? textWidth - SIZE + borderRadius / (isV3 ? 1 : 2)\n                : borderRadius,\n            },\n            {\n              minWidth: textWidth,\n              top: -SIZE / 2 - textHeight / 2,\n              opacity: animFAB.interpolate({\n                inputRange: propForDirection([distance, 0.7 * distance, 0]),\n                outputRange: propForDirection([1, 0, 0]),\n              }) as unknown as number,\n              // TODO: check\n              transform: [\n                {\n                  translateX: animFAB.interpolate({\n                    inputRange: propForDirection([distance, 0]),\n                    outputRange: propForDirection([0, SIZE]),\n                  }),\n                },\n              ],\n            },\n            styles.label,\n            uppercase && styles.uppercaseLabel,\n            textStyle,\n          ]}\n          theme={theme}\n          testID={`${testID}-text`}\n          maxFontSizeMultiplier={labelMaxFontSizeMultiplier}\n        >\n          {label}\n        </AnimatedText>\n      </View>\n\n      {!isIOS && (\n        // Method `onTextLayout` on Android returns sizes of text visible on the screen,\n        // however during render the text in `FAB` isn't fully visible. In order to get\n        // proper text measurements there is a need to additionaly render that text, but\n        // wrapped in absolutely positioned `ScrollView` which height is 0.\n        <ScrollView style={styles.textPlaceholderContainer}>\n          <AnimatedText\n            variant=\"labelLarge\"\n            numberOfLines={1}\n            onTextLayout={onTextLayout}\n            ellipsizeMode={'tail'}\n            style={[\n              styles.label,\n              uppercase && styles.uppercaseLabel,\n              textStyle,\n            ]}\n            theme={theme}\n          >\n            {label}\n          </AnimatedText>\n        </ScrollView>\n      )}\n    </Surface>\n  );\n};\n\nconst styles = StyleSheet.create({\n  standard: {\n    height: SIZE,\n  },\n  disabled: {\n    elevation: 0,\n  },\n  // eslint-disable-next-line react-native/no-color-literals\n  container: {\n    position: 'absolute',\n    backgroundColor: 'transparent',\n  },\n  innerWrapper: {\n    flexDirection: 'row',\n    overflow: 'hidden',\n  },\n  shadowWrapper: {\n    elevation: 0,\n  },\n  shadow: {\n    elevation: 6,\n  },\n  v3Shadow: {\n    elevation: 3,\n  },\n  iconWrapper: {\n    alignItems: 'center',\n    justifyContent: 'center',\n    position: 'absolute',\n    height: SIZE,\n    width: SIZE,\n  },\n  label: {\n    position: 'absolute',\n  },\n  uppercaseLabel: {\n    textTransform: 'uppercase',\n  },\n  textPlaceholderContainer: {\n    height: 0,\n    position: 'absolute',\n  },\n});\n\nexport default AnimatedFAB;\n"],"mappings":"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","ignoreList":[]},"metadata":{"hasCjsExports":false},"sourceType":"module","externalDependencies":[]}