{"ast":null,"code":"import * as React from 'react';\nimport Animated from \"react-native-web/dist/exports/Animated\";\nimport Pressable from \"react-native-web/dist/exports/Pressable\";\nimport StyleSheet from \"react-native-web/dist/exports/StyleSheet\";\nimport View from \"react-native-web/dist/exports/View\";\nimport { useSafeAreaInsets } from 'react-native-safe-area-context';\nimport FAB from \"./FAB\";\nimport { getFABGroupColors } from \"./utils\";\nimport { useInternalTheme } from \"../../core/theming\";\nimport Card from \"../Card/Card\";\nimport Text from \"../Typography/Text\";\nconst AnimatedPressable = Animated.createAnimatedComponent(Pressable);\nconst FABGroup = ({\n  actions,\n  icon,\n  open,\n  onPress,\n  onLongPress,\n  toggleStackOnLongPress,\n  accessibilityLabel,\n  theme: themeOverrides,\n  style,\n  fabStyle,\n  visible,\n  label,\n  testID,\n  onStateChange,\n  color: colorProp,\n  delayLongPress = 200,\n  variant = 'primary',\n  enableLongPressWhenStackOpened = false,\n  backdropColor: customBackdropColor,\n  rippleColor\n}) => {\n  const theme = useInternalTheme(themeOverrides);\n  const {\n    top,\n    bottom,\n    right,\n    left\n  } = useSafeAreaInsets();\n  const {\n    current: backdrop\n  } = React.useRef(new Animated.Value(0));\n  const animations = React.useRef(actions.map(() => new Animated.Value(open ? 1 : 0)));\n  const [isClosingAnimationFinished, setIsClosingAnimationFinished] = React.useState(false);\n  const [prevActions, setPrevActions] = React.useState(null);\n  const {\n    scale\n  } = theme.animation;\n  const {\n    isV3\n  } = theme;\n  React.useEffect(() => {\n    if (open) {\n      setIsClosingAnimationFinished(false);\n      Animated.parallel([Animated.timing(backdrop, {\n        toValue: 1,\n        duration: 250 * scale,\n        useNativeDriver: true\n      }), Animated.stagger(isV3 ? 15 : 50 * scale, animations.current.map(animation => Animated.timing(animation, {\n        toValue: 1,\n        duration: 150 * scale,\n        useNativeDriver: true\n      })).reverse())]).start();\n    } else {\n      Animated.parallel([Animated.timing(backdrop, {\n        toValue: 0,\n        duration: 200 * scale,\n        useNativeDriver: true\n      }), ...animations.current.map(animation => Animated.timing(animation, {\n        toValue: 0,\n        duration: 150 * scale,\n        useNativeDriver: true\n      }))]).start(({\n        finished\n      }) => {\n        if (finished) {\n          setIsClosingAnimationFinished(true);\n        }\n      });\n    }\n  }, [open, actions, backdrop, scale, isV3]);\n  const close = () => onStateChange({\n    open: false\n  });\n  const toggle = () => onStateChange({\n    open: !open\n  });\n  const handlePress = e => {\n    onPress === null || onPress === void 0 || onPress(e);\n    if (!toggleStackOnLongPress || open) {\n      toggle();\n    }\n  };\n  const handleLongPress = e => {\n    if (!open || enableLongPressWhenStackOpened) {\n      onLongPress === null || onLongPress === void 0 || onLongPress(e);\n      if (toggleStackOnLongPress) {\n        toggle();\n      }\n    }\n  };\n  const {\n    labelColor,\n    backdropColor,\n    stackedFABBackgroundColor\n  } = getFABGroupColors({\n    theme,\n    customBackdropColor\n  });\n  const backdropOpacity = open ? backdrop.interpolate({\n    inputRange: [0, 0.5, 1],\n    outputRange: [0, 1, 1]\n  }) : backdrop;\n  const opacities = animations.current;\n  const scales = opacities.map(opacity => open ? opacity.interpolate({\n    inputRange: [0, 1],\n    outputRange: [0.5, 1]\n  }) : 1);\n  const translations = opacities.map(opacity => open ? opacity.interpolate({\n    inputRange: [0, 1],\n    outputRange: [24, -8]\n  }) : -8);\n  const labelTranslations = opacities.map(opacity => open ? opacity.interpolate({\n    inputRange: [0, 1],\n    outputRange: [8, -8]\n  }) : -8);\n  const containerPaddings = {\n    paddingBottom: bottom,\n    paddingRight: right,\n    paddingLeft: left,\n    paddingTop: top\n  };\n  const actionsContainerVisibility = {\n    display: isClosingAnimationFinished ? 'none' : 'flex'\n  };\n  if (actions.length !== (prevActions === null || prevActions === void 0 ? void 0 : prevActions.length)) {\n    animations.current = actions.map((_, i) => animations.current[i] || new Animated.Value(open ? 1 : 0));\n    setPrevActions(actions);\n  }\n  return React.createElement(View, {\n    pointerEvents: \"box-none\",\n    style: [styles.container, containerPaddings, style]\n  }, React.createElement(AnimatedPressable, {\n    accessibilityRole: \"button\",\n    onPress: close,\n    pointerEvents: open ? 'auto' : 'none',\n    style: [styles.backdrop, {\n      opacity: backdropOpacity,\n      backgroundColor: backdropColor\n    }]\n  }), React.createElement(View, {\n    pointerEvents: \"box-none\",\n    style: styles.safeArea\n  }, React.createElement(View, {\n    pointerEvents: open ? 'box-none' : 'none',\n    style: actionsContainerVisibility\n  }, actions.map((it, i) => {\n    const labelTextStyle = Object.assign({\n      color: it.labelTextColor ?? labelColor\n    }, isV3 ? theme.fonts.titleMedium : {});\n    const marginHorizontal = typeof it.size === 'undefined' || it.size === 'small' ? 24 : 16;\n    const accessibilityLabel = typeof it.accessibilityLabel !== 'undefined' ? it.accessibilityLabel : it.label;\n    const size = typeof it.size !== 'undefined' ? it.size : 'small';\n    const handleActionPress = e => {\n      it.onPress(e);\n      close();\n    };\n    return React.createElement(View, {\n      key: i,\n      style: [styles.item, {\n        marginHorizontal\n      }, it.wrapperStyle],\n      pointerEvents: open ? 'box-none' : 'none',\n      accessibilityRole: \"button\",\n      importantForAccessibility: open ? 'yes' : 'no-hide-descendants',\n      accessibilityElementsHidden: !open,\n      accessible: open,\n      accessibilityLabel: accessibilityLabel\n    }, it.label && React.createElement(View, null, React.createElement(Card, {\n      mode: isV3 ? 'contained' : 'elevated',\n      onPress: handleActionPress,\n      accessibilityHint: it.accessibilityHint,\n      importantForAccessibility: \"no-hide-descendants\",\n      accessibilityElementsHidden: true,\n      style: [styles.containerStyle, {\n        transform: [isV3 ? {\n          translateY: labelTranslations[i]\n        } : {\n          scale: scales[i]\n        }],\n        opacity: opacities[i]\n      }, isV3 && styles.v3ContainerStyle, it.containerStyle]\n    }, React.createElement(Text, {\n      variant: \"titleMedium\",\n      importantForAccessibility: \"no-hide-descendants\",\n      accessibilityElementsHidden: true,\n      style: [labelTextStyle, it.labelStyle],\n      maxFontSizeMultiplier: it.labelMaxFontSizeMultiplier\n    }, it.label))), React.createElement(FAB, {\n      size: size,\n      icon: it.icon,\n      color: it.color,\n      style: [{\n        transform: [{\n          scale: scales[i]\n        }],\n        opacity: opacities[i],\n        backgroundColor: stackedFABBackgroundColor\n      }, isV3 && {\n        transform: [{\n          translateY: translations[i]\n        }]\n      }, it.style],\n      accessibilityElementsHidden: true,\n      theme: theme,\n      onPress: handleActionPress,\n      importantForAccessibility: \"no-hide-descendants\",\n      testID: it.testID,\n      visible: open,\n      rippleColor: it.rippleColor\n    }));\n  })), React.createElement(FAB, {\n    onPress: handlePress,\n    onLongPress: handleLongPress,\n    delayLongPress: delayLongPress,\n    icon: icon,\n    color: colorProp,\n    accessibilityLabel: accessibilityLabel,\n    accessibilityRole: \"button\",\n    accessibilityState: {\n      expanded: open\n    },\n    style: [styles.fab, fabStyle],\n    theme: theme,\n    visible: visible,\n    label: label,\n    testID: testID,\n    variant: variant,\n    rippleColor: rippleColor\n  })));\n};\nFABGroup.displayName = 'FAB.Group';\nexport default FABGroup;\nexport { FABGroup };\nconst styles = StyleSheet.create({\n  safeArea: {\n    alignItems: 'flex-end'\n  },\n  container: Object.assign({}, StyleSheet.absoluteFillObject, {\n    justifyContent: 'flex-end'\n  }),\n  fab: {\n    marginHorizontal: 16,\n    marginBottom: 16,\n    marginTop: 0\n  },\n  backdrop: Object.assign({}, StyleSheet.absoluteFillObject),\n  containerStyle: {\n    borderRadius: 5,\n    paddingHorizontal: 12,\n    paddingVertical: 6,\n    marginVertical: 8,\n    marginHorizontal: 16,\n    elevation: 2\n  },\n  item: {\n    marginBottom: 16,\n    flexDirection: 'row',\n    justifyContent: 'flex-end',\n    alignItems: 'center'\n  },\n  v3ContainerStyle: {\n    backgroundColor: 'transparent',\n    elevation: 0\n  }\n});","map":{"version":3,"names":["React","Animated","Pressable","StyleSheet","View","useSafeAreaInsets","FAB","getFABGroupColors","useInternalTheme","Card","Text","AnimatedPressable","createAnimatedComponent","FABGroup","actions","icon","open","onPress","onLongPress","toggleStackOnLongPress","accessibilityLabel","theme","themeOverrides","style","fabStyle","visible","label","testID","onStateChange","color","colorProp","delayLongPress","variant","enableLongPressWhenStackOpened","backdropColor","customBackdropColor","rippleColor","top","bottom","right","left","current","backdrop","useRef","Value","animations","map","isClosingAnimationFinished","setIsClosingAnimationFinished","useState","prevActions","setPrevActions","scale","animation","isV3","useEffect","parallel","timing","toValue","duration","useNativeDriver","stagger","reverse","start","finished","close","toggle","handlePress","e","handleLongPress","labelColor","stackedFABBackgroundColor","backdropOpacity","interpolate","inputRange","outputRange","opacities","scales","opacity","translations","labelTranslations","containerPaddings","paddingBottom","paddingRight","paddingLeft","paddingTop","actionsContainerVisibility","display","length","_","i","createElement","pointerEvents","styles","container","accessibilityRole","backgroundColor","safeArea","it","labelTextStyle","Object","assign","labelTextColor","fonts","titleMedium","marginHorizontal","size","handleActionPress","key","item","wrapperStyle","importantForAccessibility","accessibilityElementsHidden","accessible","mode","accessibilityHint","containerStyle","transform","translateY","v3ContainerStyle","labelStyle","maxFontSizeMultiplier","labelMaxFontSizeMultiplier","accessibilityState","expanded","fab","displayName","create","alignItems","absoluteFillObject","justifyContent","marginBottom","marginTop","borderRadius","paddingHorizontal","paddingVertical","marginVertical","elevation","flexDirection"],"sources":["/Users/pmouli/Documents/GitHub.nosync/boots-strapper/mobile/node_modules/react-native-paper/src/components/FAB/FABGroup.tsx"],"sourcesContent":["import * as React from 'react';\nimport {\n  Animated,\n  ColorValue,\n  GestureResponderEvent,\n  Pressable,\n  StyleProp,\n  StyleSheet,\n  TextStyle,\n  View,\n  ViewStyle,\n} from 'react-native';\n\nimport { useSafeAreaInsets } from 'react-native-safe-area-context';\n\nimport FAB from './FAB';\nimport { getFABGroupColors } from './utils';\nimport { useInternalTheme } from '../../core/theming';\nimport type { ThemeProp } from '../../types';\nimport Card from '../Card/Card';\nimport type { IconSource } from '../Icon';\nimport Text from '../Typography/Text';\n\nconst AnimatedPressable = Animated.createAnimatedComponent(Pressable);\n\nexport type Props = {\n  /**\n   * Action items to display in the form of a speed dial.\n   * An action item should contain the following properties:\n   * - `icon`: icon to display (required)\n   * - `label`: optional label text\n   * - `color`: custom icon color of the action item\n   * - `labelTextColor`: custom label text color of the action item\n   * - `accessibilityLabel`: accessibility label for the action, uses label by default if specified\n   * - `accessibilityHint`: accessibility hint for the action\n   * - `style`: pass additional styles for the fab item, for example, `backgroundColor`\n   * - `containerStyle`: pass additional styles for the fab item label container, for example, `backgroundColor` @supported Available in 5.x\n   * - `wrapperStyle`: pass additional styles for the wrapper of the action item.\n   * - `labelStyle`: pass additional styles for the fab item label, for example, `fontSize`\n   * - `labelMaxFontSizeMultiplier`: specifies the largest possible scale a title font can reach.\n   * - `onPress`: callback that is called when `FAB` is pressed (required)\n   * - `onLongPress`: callback that is called when `FAB` is long pressed\n   * - `toggleStackOnLongPress`: callback that is called when `FAB` is long pressed\n   * - `size`: size of action item. Defaults to `small`. @supported Available in v5.x\n   * - `testID`: testID to be used on tests\n   * - `rippleColor`: color of the ripple effect.\n   */\n  actions: Array<{\n    icon: IconSource;\n    label?: string;\n    color?: string;\n    labelTextColor?: string;\n    accessibilityLabel?: string;\n    accessibilityHint?: string;\n    style?: Animated.WithAnimatedValue<StyleProp<ViewStyle>>;\n    containerStyle?: Animated.WithAnimatedValue<StyleProp<ViewStyle>>;\n    wrapperStyle?: StyleProp<ViewStyle>;\n    labelStyle?: StyleProp<TextStyle>;\n    labelMaxFontSizeMultiplier?: number;\n    onPress: (e: GestureResponderEvent) => void;\n    size?: 'small' | 'medium';\n    testID?: string;\n    rippleColor?: ColorValue;\n  }>;\n  /**\n   * Icon to display for the `FAB`.\n   * You can toggle it based on whether the speed dial is open to display a different icon.\n   */\n  icon: IconSource;\n  /**\n   * Accessibility label for the FAB. This is read by the screen reader when the user taps the FAB.\n   */\n  accessibilityLabel?: string;\n  /**\n   * Custom color for the `FAB`.\n   */\n  color?: string;\n  /**\n   * Custom backdrop color for opened speed dial background.\n   */\n  backdropColor?: string;\n  /**\n   * Color of the ripple effect.\n   */\n  rippleColor?: ColorValue;\n  /**\n   * Function to execute on pressing the `FAB`.\n   */\n  onPress?: (e: GestureResponderEvent) => void;\n  /**\n   * Function to execute on long pressing the `FAB`.\n   */\n  onLongPress?: (e: GestureResponderEvent) => void;\n  /**\n   * Makes actions stack appear on long press instead of on press.\n   */\n  toggleStackOnLongPress?: boolean;\n  /**\n   * Changes the delay for long press reaction.\n   */\n  delayLongPress?: number;\n  /**\n   * Allows for onLongPress when stack is opened.\n   */\n  enableLongPressWhenStackOpened?: boolean;\n  /**\n   * Whether the speed dial is open.\n   */\n  open: boolean;\n  /**\n   * Callback which is called on opening and closing the speed dial.\n   * The open state needs to be updated when it's called, otherwise the change is dropped.\n   */\n  onStateChange: (state: { open: boolean }) => void;\n  /**\n   * Whether `FAB` is currently visible.\n   */\n  visible: boolean;\n  /**\n   * Style for the group. You can use it to pass additional styles if you need.\n   * For example, you can set an additional padding if you have a tab bar at the bottom.\n   */\n  style?: StyleProp<ViewStyle>;\n  /**\n   * Style for the FAB. It allows to pass the FAB button styles, such as backgroundColor.\n   */\n  fabStyle?: Animated.WithAnimatedValue<StyleProp<ViewStyle>>;\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  /**\n   * @optional\n   */\n  theme?: ThemeProp;\n  /**\n   * Optional label for `FAB`.\n   */\n  label?: string;\n  /**\n   * Pass down testID from Group props to FAB.\n   */\n  testID?: string;\n};\n\n/**\n * A component to display a stack of FABs with related actions in a speed dial.\n * To render the group above other components, you'll need to wrap it with the [`Portal`](../Portal) component.\n *\n * ## Usage\n * ```js\n * import * as React from 'react';\n * import { FAB, Portal, PaperProvider } from 'react-native-paper';\n *\n * const MyComponent = () => {\n *   const [state, setState] = React.useState({ open: false });\n *\n *   const onStateChange = ({ open }) => setState({ open });\n *\n *   const { open } = state;\n *\n *   return (\n *     <PaperProvider>\n *       <Portal>\n *         <FAB.Group\n *           open={open}\n *           visible\n *           icon={open ? 'calendar-today' : 'plus'}\n *           actions={[\n *             { icon: 'plus', onPress: () => console.log('Pressed add') },\n *             {\n *               icon: 'star',\n *               label: 'Star',\n *               onPress: () => console.log('Pressed star'),\n *             },\n *             {\n *               icon: 'email',\n *               label: 'Email',\n *               onPress: () => console.log('Pressed email'),\n *             },\n *             {\n *               icon: 'bell',\n *               label: 'Remind',\n *               onPress: () => console.log('Pressed notifications'),\n *             },\n *           ]}\n *           onStateChange={onStateChange}\n *           onPress={() => {\n *             if (open) {\n *               // do something if the speed dial is open\n *             }\n *           }}\n *         />\n *       </Portal>\n *     </PaperProvider>\n *   );\n * };\n *\n * export default MyComponent;\n * ```\n */\nconst FABGroup = ({\n  actions,\n  icon,\n  open,\n  onPress,\n  onLongPress,\n  toggleStackOnLongPress,\n  accessibilityLabel,\n  theme: themeOverrides,\n  style,\n  fabStyle,\n  visible,\n  label,\n  testID,\n  onStateChange,\n  color: colorProp,\n  delayLongPress = 200,\n  variant = 'primary',\n  enableLongPressWhenStackOpened = false,\n  backdropColor: customBackdropColor,\n  rippleColor,\n}: Props) => {\n  const theme = useInternalTheme(themeOverrides);\n  const { top, bottom, right, left } = useSafeAreaInsets();\n\n  const { current: backdrop } = React.useRef<Animated.Value>(\n    new Animated.Value(0)\n  );\n  const animations = React.useRef<Animated.Value[]>(\n    actions.map(() => new Animated.Value(open ? 1 : 0))\n  );\n\n  const [isClosingAnimationFinished, setIsClosingAnimationFinished] =\n    React.useState(false);\n\n  const [prevActions, setPrevActions] = React.useState<\n    | {\n        icon: IconSource;\n        label?: string;\n        color?: string;\n        accessibilityLabel?: string;\n        style?: Animated.WithAnimatedValue<StyleProp<ViewStyle>>;\n        onPress: (e: GestureResponderEvent) => void;\n        testID?: string;\n      }[]\n    | null\n  >(null);\n\n  const { scale } = theme.animation;\n  const { isV3 } = theme;\n\n  React.useEffect(() => {\n    if (open) {\n      setIsClosingAnimationFinished(false);\n      Animated.parallel([\n        Animated.timing(backdrop, {\n          toValue: 1,\n          duration: 250 * scale,\n          useNativeDriver: true,\n        }),\n        Animated.stagger(\n          isV3 ? 15 : 50 * scale,\n          animations.current\n            .map((animation) =>\n              Animated.timing(animation, {\n                toValue: 1,\n                duration: 150 * scale,\n                useNativeDriver: true,\n              })\n            )\n            .reverse()\n        ),\n      ]).start();\n    } else {\n      Animated.parallel([\n        Animated.timing(backdrop, {\n          toValue: 0,\n          duration: 200 * scale,\n          useNativeDriver: true,\n        }),\n        ...animations.current.map((animation) =>\n          Animated.timing(animation, {\n            toValue: 0,\n            duration: 150 * scale,\n            useNativeDriver: true,\n          })\n        ),\n      ]).start(({ finished }) => {\n        if (finished) {\n          setIsClosingAnimationFinished(true);\n        }\n      });\n    }\n  }, [open, actions, backdrop, scale, isV3]);\n\n  const close = () => onStateChange({ open: false });\n  const toggle = () => onStateChange({ open: !open });\n\n  const handlePress = (e: GestureResponderEvent) => {\n    onPress?.(e);\n    if (!toggleStackOnLongPress || open) {\n      toggle();\n    }\n  };\n\n  const handleLongPress = (e: GestureResponderEvent) => {\n    if (!open || enableLongPressWhenStackOpened) {\n      onLongPress?.(e);\n      if (toggleStackOnLongPress) {\n        toggle();\n      }\n    }\n  };\n\n  const { labelColor, backdropColor, stackedFABBackgroundColor } =\n    getFABGroupColors({ theme, customBackdropColor });\n\n  const backdropOpacity = open\n    ? backdrop.interpolate({\n        inputRange: [0, 0.5, 1],\n        outputRange: [0, 1, 1],\n      })\n    : backdrop;\n\n  const opacities = animations.current;\n  const scales = opacities.map((opacity) =>\n    open\n      ? opacity.interpolate({\n          inputRange: [0, 1],\n          outputRange: [0.5, 1],\n        })\n      : 1\n  );\n\n  const translations = opacities.map((opacity) =>\n    open\n      ? opacity.interpolate({\n          inputRange: [0, 1],\n          outputRange: [24, -8],\n        })\n      : -8\n  );\n  const labelTranslations = opacities.map((opacity) =>\n    open\n      ? opacity.interpolate({\n          inputRange: [0, 1],\n          outputRange: [8, -8],\n        })\n      : -8\n  );\n\n  const containerPaddings = {\n    paddingBottom: bottom,\n    paddingRight: right,\n    paddingLeft: left,\n    paddingTop: top,\n  };\n\n  const actionsContainerVisibility: ViewStyle = {\n    display: isClosingAnimationFinished ? 'none' : 'flex',\n  };\n\n  if (actions.length !== prevActions?.length) {\n    animations.current = actions.map(\n      (_, i) => animations.current[i] || new Animated.Value(open ? 1 : 0)\n    );\n    setPrevActions(actions);\n  }\n\n  return (\n    <View\n      pointerEvents=\"box-none\"\n      style={[styles.container, containerPaddings, style]}\n    >\n      <AnimatedPressable\n        accessibilityRole=\"button\"\n        onPress={close}\n        pointerEvents={open ? 'auto' : 'none'}\n        style={[\n          styles.backdrop,\n          {\n            opacity: backdropOpacity,\n            backgroundColor: backdropColor,\n          },\n        ]}\n      />\n      <View pointerEvents=\"box-none\" style={styles.safeArea}>\n        <View\n          pointerEvents={open ? 'box-none' : 'none'}\n          style={actionsContainerVisibility}\n        >\n          {actions.map((it, i) => {\n            const labelTextStyle = {\n              color: it.labelTextColor ?? labelColor,\n              ...(isV3 ? theme.fonts.titleMedium : {}),\n            };\n            const marginHorizontal =\n              typeof it.size === 'undefined' || it.size === 'small' ? 24 : 16;\n            const accessibilityLabel =\n              typeof it.accessibilityLabel !== 'undefined'\n                ? it.accessibilityLabel\n                : it.label;\n            const size = typeof it.size !== 'undefined' ? it.size : 'small';\n\n            const handleActionPress = (e: GestureResponderEvent) => {\n              it.onPress(e);\n              close();\n            };\n\n            return (\n              <View\n                key={i} // eslint-disable-line react/no-array-index-key\n                style={[\n                  styles.item,\n                  {\n                    marginHorizontal,\n                  },\n                  it.wrapperStyle,\n                ]}\n                pointerEvents={open ? 'box-none' : 'none'}\n                accessibilityRole=\"button\"\n                importantForAccessibility={open ? 'yes' : 'no-hide-descendants'}\n                accessibilityElementsHidden={!open}\n                accessible={open}\n                accessibilityLabel={accessibilityLabel}\n              >\n                {it.label && (\n                  <View>\n                    <Card\n                      mode={isV3 ? 'contained' : 'elevated'}\n                      onPress={handleActionPress}\n                      accessibilityHint={it.accessibilityHint}\n                      importantForAccessibility=\"no-hide-descendants\"\n                      accessibilityElementsHidden={true}\n                      style={[\n                        styles.containerStyle,\n                        {\n                          transform: [\n                            isV3\n                              ? { translateY: labelTranslations[i] }\n                              : { scale: scales[i] },\n                          ],\n                          opacity: opacities[i],\n                        },\n                        isV3 && styles.v3ContainerStyle,\n                        it.containerStyle,\n                      ]}\n                    >\n                      <Text\n                        variant=\"titleMedium\"\n                        importantForAccessibility=\"no-hide-descendants\"\n                        accessibilityElementsHidden={true}\n                        style={[labelTextStyle, it.labelStyle]}\n                        maxFontSizeMultiplier={it.labelMaxFontSizeMultiplier}\n                      >\n                        {it.label}\n                      </Text>\n                    </Card>\n                  </View>\n                )}\n                <FAB\n                  size={size}\n                  icon={it.icon}\n                  color={it.color}\n                  style={[\n                    {\n                      transform: [{ scale: scales[i] }],\n                      opacity: opacities[i],\n                      backgroundColor: stackedFABBackgroundColor,\n                    },\n                    isV3 && { transform: [{ translateY: translations[i] }] },\n                    it.style,\n                  ]}\n                  accessibilityElementsHidden={true}\n                  theme={theme}\n                  onPress={handleActionPress}\n                  importantForAccessibility=\"no-hide-descendants\"\n                  testID={it.testID}\n                  visible={open}\n                  rippleColor={it.rippleColor}\n                />\n              </View>\n            );\n          })}\n        </View>\n        <FAB\n          onPress={handlePress}\n          onLongPress={handleLongPress}\n          delayLongPress={delayLongPress}\n          icon={icon}\n          color={colorProp}\n          accessibilityLabel={accessibilityLabel}\n          accessibilityRole=\"button\"\n          accessibilityState={{ expanded: open }}\n          style={[styles.fab, fabStyle]}\n          theme={theme}\n          visible={visible}\n          label={label}\n          testID={testID}\n          variant={variant}\n          rippleColor={rippleColor}\n        />\n      </View>\n    </View>\n  );\n};\n\nFABGroup.displayName = 'FAB.Group';\n\nexport default FABGroup;\n\n// @component-docs ignore-next-line\nexport { FABGroup };\n\nconst styles = StyleSheet.create({\n  safeArea: {\n    alignItems: 'flex-end',\n  },\n  container: {\n    ...StyleSheet.absoluteFillObject,\n    justifyContent: 'flex-end',\n  },\n  fab: {\n    marginHorizontal: 16,\n    marginBottom: 16,\n    marginTop: 0,\n  },\n  backdrop: {\n    ...StyleSheet.absoluteFillObject,\n  },\n  containerStyle: {\n    borderRadius: 5,\n    paddingHorizontal: 12,\n    paddingVertical: 6,\n    marginVertical: 8,\n    marginHorizontal: 16,\n    elevation: 2,\n  },\n  item: {\n    marginBottom: 16,\n    flexDirection: 'row',\n    justifyContent: 'flex-end',\n    alignItems: 'center',\n  },\n  // eslint-disable-next-line react-native/no-color-literals\n  v3ContainerStyle: {\n    backgroundColor: 'transparent',\n    elevation: 0,\n  },\n});\n"],"mappings":"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","ignoreList":[]},"metadata":{"hasCjsExports":false},"sourceType":"module","externalDependencies":[]}