{"ast":null,"code":"import _objectWithoutPropertiesLoose from \"@babel/runtime/helpers/objectWithoutPropertiesLoose\";\nconst _excluded = [\"icon\", \"onPress\", \"forceTextInputFocus\", \"color\", \"theme\", \"rippleColor\"];\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 React from 'react';\nimport StyleSheet from \"react-native-web/dist/exports/StyleSheet\";\nimport View from \"react-native-web/dist/exports/View\";\nimport { getIconColor } from \"./utils\";\nimport { useInternalTheme } from \"../../../core/theming\";\nimport IconButton from \"../../IconButton/IconButton\";\nimport { ICON_SIZE } from \"../constants\";\nimport { getConstants } from \"../helpers\";\nconst StyleContext = React.createContext({\n  style: {},\n  isTextInputFocused: false,\n  forceFocus: () => {},\n  testID: ''\n});\nconst IconAdornment = ({\n  icon,\n  topPosition,\n  side,\n  isTextInputFocused,\n  forceFocus,\n  testID,\n  theme: themeOverrides,\n  disabled\n}) => {\n  const {\n    isV3\n  } = useInternalTheme(themeOverrides);\n  const {\n    ICON_OFFSET\n  } = getConstants(isV3);\n  const style = {\n    top: topPosition,\n    [side]: ICON_OFFSET\n  };\n  const contextState = {\n    style,\n    isTextInputFocused,\n    forceFocus,\n    testID,\n    disabled\n  };\n  return React.createElement(StyleContext.Provider, {\n    value: contextState\n  }, icon);\n};\nconst TextInputIcon = _ref => {\n  let {\n      icon,\n      onPress,\n      forceTextInputFocus = true,\n      color: customColor,\n      theme: themeOverrides,\n      rippleColor\n    } = _ref,\n    rest = _objectWithoutPropertiesLoose(_ref, _excluded);\n  const {\n    style,\n    isTextInputFocused,\n    forceFocus,\n    testID,\n    disabled\n  } = React.useContext(StyleContext);\n  const onPressWithFocusControl = React.useCallback(e => {\n    if (forceTextInputFocus && !isTextInputFocused) {\n      forceFocus();\n    }\n    onPress === null || onPress === void 0 || onPress(e);\n  }, [forceTextInputFocus, forceFocus, isTextInputFocused, onPress]);\n  const theme = useInternalTheme(themeOverrides);\n  const iconColor = getIconColor({\n    theme,\n    disabled,\n    isTextInputFocused,\n    customColor\n  });\n  return React.createElement(View, {\n    style: [styles.container, style]\n  }, React.createElement(IconButton, _extends({\n    icon: icon,\n    style: styles.iconButton,\n    size: ICON_SIZE,\n    onPress: onPressWithFocusControl,\n    iconColor: iconColor,\n    testID: testID,\n    theme: themeOverrides,\n    rippleColor: rippleColor\n  }, rest)));\n};\nTextInputIcon.displayName = 'TextInput.Icon';\nconst styles = StyleSheet.create({\n  container: {\n    position: 'absolute',\n    width: ICON_SIZE,\n    height: ICON_SIZE,\n    justifyContent: 'center',\n    alignItems: 'center'\n  },\n  iconButton: {\n    margin: 0\n  }\n});\nexport default TextInputIcon;\nexport { IconAdornment };","map":{"version":3,"names":["React","StyleSheet","View","getIconColor","useInternalTheme","IconButton","ICON_SIZE","getConstants","StyleContext","createContext","style","isTextInputFocused","forceFocus","testID","IconAdornment","icon","topPosition","side","theme","themeOverrides","disabled","isV3","ICON_OFFSET","top","contextState","createElement","Provider","value","TextInputIcon","_ref","onPress","forceTextInputFocus","color","customColor","rippleColor","rest","_objectWithoutPropertiesLoose","_excluded","useContext","onPressWithFocusControl","useCallback","e","iconColor","styles","container","_extends","iconButton","size","displayName","create","position","width","height","justifyContent","alignItems","margin"],"sources":["/Users/pmouli/Documents/GitHub.nosync/boots-strapper/mobile/node_modules/react-native-paper/src/components/TextInput/Adornment/TextInputIcon.tsx"],"sourcesContent":["import React from 'react';\nimport {\n  ColorValue,\n  GestureResponderEvent,\n  StyleProp,\n  StyleSheet,\n  View,\n  ViewStyle,\n} from 'react-native';\n\nimport { getIconColor } from './utils';\nimport { useInternalTheme } from '../../../core/theming';\nimport type { $Omit, ThemeProp } from '../../../types';\nimport type { IconSource } from '../../Icon';\nimport IconButton from '../../IconButton/IconButton';\nimport { ICON_SIZE } from '../constants';\nimport { getConstants } from '../helpers';\n\nexport type Props = $Omit<\n  React.ComponentProps<typeof IconButton>,\n  'icon' | 'theme' | 'color' | 'iconColor'\n> & {\n  /**\n   * @renamed Renamed from 'name' to 'icon` in v5.x\n   * Icon to show.\n   */\n  icon: IconSource;\n  /**\n   * Function to execute on press.\n   */\n  onPress?: (e: GestureResponderEvent) => void;\n  /**\n   * Whether the TextInput will focus after onPress.\n   */\n  forceTextInputFocus?: boolean;\n  /**\n   * Color of the icon or a function receiving a boolean indicating whether the TextInput is focused and returning the color.\n   */\n  color?: ((isTextInputFocused: boolean) => string | undefined) | string;\n  /**\n   * Color of the ripple effect.\n   */\n  rippleColor?: ColorValue;\n  style?: StyleProp<ViewStyle>;\n  /**\n   * @optional\n   */\n  theme?: ThemeProp;\n};\n\ntype StyleContextType = {\n  style: StyleProp<ViewStyle>;\n  isTextInputFocused: boolean;\n  forceFocus: () => void;\n  testID: string;\n  disabled?: boolean;\n};\n\nconst StyleContext = React.createContext<StyleContextType>({\n  style: {},\n  isTextInputFocused: false,\n  forceFocus: () => {},\n  testID: '',\n});\n\nconst IconAdornment: React.FunctionComponent<\n  {\n    testID: string;\n    icon: React.ReactNode;\n    topPosition: number;\n    side: 'left' | 'right';\n    theme?: ThemeProp;\n    disabled?: boolean;\n  } & Omit<StyleContextType, 'style'>\n> = ({\n  icon,\n  topPosition,\n  side,\n  isTextInputFocused,\n  forceFocus,\n  testID,\n  theme: themeOverrides,\n  disabled,\n}) => {\n  const { isV3 } = useInternalTheme(themeOverrides);\n  const { ICON_OFFSET } = getConstants(isV3);\n\n  const style = {\n    top: topPosition,\n    [side]: ICON_OFFSET,\n  };\n  const contextState = {\n    style,\n    isTextInputFocused,\n    forceFocus,\n    testID,\n    disabled,\n  };\n\n  return (\n    <StyleContext.Provider value={contextState}>{icon}</StyleContext.Provider>\n  );\n};\n\n/**\n * A component to render a leading / trailing icon in the TextInput\n *\n * ## Usage\n * ```js\n * import * as React from 'react';\n * import { TextInput } from 'react-native-paper';\n *\n * const MyComponent = () => {\n *   const [text, setText] = React.useState('');\n *\n *   return (\n *     <TextInput\n *       label=\"Password\"\n *       secureTextEntry\n *       right={<TextInput.Icon icon=\"eye\" />}\n *     />\n *   );\n * };\n *\n * export default MyComponent;\n * ```\n */\n\nconst TextInputIcon = ({\n  icon,\n  onPress,\n  forceTextInputFocus = true,\n  color: customColor,\n  theme: themeOverrides,\n  rippleColor,\n  ...rest\n}: Props) => {\n  const { style, isTextInputFocused, forceFocus, testID, disabled } =\n    React.useContext(StyleContext);\n\n  const onPressWithFocusControl = React.useCallback(\n    (e: GestureResponderEvent) => {\n      if (forceTextInputFocus && !isTextInputFocused) {\n        forceFocus();\n      }\n\n      onPress?.(e);\n    },\n    [forceTextInputFocus, forceFocus, isTextInputFocused, onPress]\n  );\n\n  const theme = useInternalTheme(themeOverrides);\n\n  const iconColor = getIconColor({\n    theme,\n    disabled,\n    isTextInputFocused,\n    customColor,\n  });\n\n  return (\n    <View style={[styles.container, style]}>\n      <IconButton\n        icon={icon}\n        style={styles.iconButton}\n        size={ICON_SIZE}\n        onPress={onPressWithFocusControl}\n        iconColor={iconColor}\n        testID={testID}\n        theme={themeOverrides}\n        rippleColor={rippleColor}\n        {...rest}\n      />\n    </View>\n  );\n};\nTextInputIcon.displayName = 'TextInput.Icon';\n\nconst styles = StyleSheet.create({\n  container: {\n    position: 'absolute',\n    width: ICON_SIZE,\n    height: ICON_SIZE,\n    justifyContent: 'center',\n    alignItems: 'center',\n  },\n  iconButton: {\n    margin: 0,\n  },\n});\n\nexport default TextInputIcon;\n\n// @component-docs ignore-next-line\nexport { IconAdornment };\n"],"mappings":"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","ignoreList":[]},"metadata":{"hasCjsExports":false},"sourceType":"module","externalDependencies":[]}