UNPKG

6.13 kBSource Map (JSON)View Raw
1{"version":3,"sources":["Icon.tsx"],"names":["React","Image","I18nManager","Platform","Consumer","SettingsConsumer","accessibilityProps","withTheme","isImageSource","source","Object","prototype","hasOwnProperty","call","uri","OS","startsWith","test","getIconId","isValidIcon","isEqualIcon","a","b","Icon","color","size","theme","rest","direction","isRTL","s","iconColor","colors","text","transform","scaleX","width","height","tintColor","resizeMode","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