UNPKG

5.89 kBSource Map (JSON)View Raw
1{"version":3,"sources":["Icon.tsx"],"names":["isImageSource","source","Object","prototype","hasOwnProperty","call","uri","Platform","OS","startsWith","test","getIconId","isValidIcon","isEqualIcon","a","b","Icon","color","size","theme","rest","direction","I18nManager","isRTL","s","iconColor","colors","text","transform","scaleX","width","height","tintColor","resizeMode","accessibilityProps","icon","name"],"mappings":"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","sourcesContent":["import * as React from 'react';\nimport {\n Image,\n I18nManager,\n Platform,\n ImageSourcePropType,\n} from 'react-native';\nimport { Consumer as SettingsConsumer } from '../core/settings';\nimport { accessibilityProps } from './MaterialCommunityIcon';\nimport { withTheme } from '../core/theming';\n\ntype IconSourceBase = string | ImageSourcePropType;\n\nexport type IconSource =\n | IconSourceBase\n | Readonly<{ source: IconSourceBase; direction: 'rtl' | 'ltr' | 'auto' }>\n | ((props: IconProps & { color: string }) => React.ReactNode);\n\ntype IconProps = {\n size: number;\n allowFontScaling?: boolean;\n};\n\ntype Props = IconProps & {\n color?: string;\n source: any;\n /**\n * @optional\n */\n theme: ReactNativePaper.Theme;\n};\n\nconst isImageSource = (source: any) =>\n // source is an object with uri\n (typeof source === 'object' &&\n source !== null &&\n Object.prototype.hasOwnProperty.call(source, 'uri') &&\n typeof source.uri === 'string') ||\n // source is a module, e.g. - require('image')\n typeof source === 'number' ||\n // image url on web\n (Platform.OS === 'web' &&\n typeof source === 'string' &&\n (source.startsWith('data:image') ||\n /\\.(bmp|jpg|jpeg|png|gif|svg)$/.test(source)));\n\nconst getIconId = (source: any) => {\n if (\n typeof source === 'object' &&\n source !== null &&\n Object.prototype.hasOwnProperty.call(source, 'uri') &&\n typeof source.uri === 'string'\n ) {\n return source.uri;\n }\n\n return source;\n};\n\nexport const isValidIcon = (source: any) =>\n typeof source === 'string' ||\n typeof source === 'function' ||\n isImageSource(source);\n\nexport const isEqualIcon = (a: any, b: any) =>\n a === b || getIconId(a) === getIconId(b);\n\nconst Icon = ({ source, color, size, theme, ...rest }: Props) => {\n const direction =\n typeof source === 'object' && source.direction && source.source\n ? source.direction === 'auto'\n ? I18nManager.isRTL\n ? 'rtl'\n : 'ltr'\n : source.direction\n : null;\n const s =\n typeof source === 'object' && source.direction && source.source\n ? source.source\n : source;\n const iconColor = color || theme.colors.text;\n\n if (isImageSource(s)) {\n return (\n <Image\n {...rest}\n source={s}\n style={[\n {\n transform: [{ scaleX: direction === 'rtl' ? -1 : 1 }],\n },\n // eslint-disable-next-line react-native/no-inline-styles\n {\n width: size,\n height: size,\n tintColor: color,\n resizeMode: 'contain',\n },\n ]}\n {...accessibilityProps}\n />\n );\n } else if (typeof s === 'string') {\n return (\n <SettingsConsumer>\n {({ icon }) => {\n return icon({\n name: s,\n color: iconColor,\n size,\n direction,\n });\n }}\n </SettingsConsumer>\n );\n } else if (typeof s === 'function') {\n return s({ color: iconColor, size, direction });\n }\n\n return null;\n};\n\nexport default withTheme(Icon);\n"]}
\No newline at end of file