UNPKG

5.05 kBSource Map (JSON)View Raw
1{"version":3,"file":"createIconSet.js","sourceRoot":"","sources":["../src/createIconSet.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,IAAI,MAAM,WAAW,CAAC;AAClC,OAAO,KAAyB,MAAM,OAAO,CAAC;AAC9C,OAAO,EAAE,IAAI,EAAiD,MAAM,cAAc,CAAC;AAEnF,OAAO,aAAa,MAAM,wDAAwD,CAAC;AACnF,OAAO,yBAAyB,MAAM,oDAAoD,CAAC;AAE3F,OAAO,EACL,kBAAkB,EAClB,iBAAiB,EAClB,MAAM,wDAAwD,CAAC;AA8DhE,MAAM,CAAC,OAAO,WACZ,QAAqB,EACrB,QAAY,EACZ,WAAW,EACX,SAAe;;IAEf,MAAM,IAAI,GAAG,EAAE,CAAC,QAAQ,CAAC,EAAE,WAAW,EAAE,CAAC;IACzC,MAAM,gBAAgB,GAAG,aAAa,CAAC,QAAQ,EAAE,QAAQ,EAAE,IAAI,EAAE,SAAS,CAAC,CAAC;IAE5E,YAAO,MAAM,IAAK,SAAQ,KAAK,CAAC,SAAuB;YAAhD;;gBAUL,aAAQ,GAAG,KAAK,CAAC;gBAGjB,UAAK,GAAG;oBACN,YAAY,EAAE,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC;iBACtC,CAAC;YAkCJ,CAAC;YAhCC,KAAK,CAAC,iBAAiB;gBACrB,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC;gBACrB,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,YAAY,EAAE;oBAC5B,MAAM,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC;oBAC3B,IAAI,CAAC,QAAQ,IAAI,IAAI,CAAC,QAAQ,CAAC,EAAE,YAAY,EAAE,IAAI,EAAE,CAAC,CAAC;iBACxD;YACH,CAAC;YAED,oBAAoB;gBAClB,IAAI,CAAC,QAAQ,GAAG,KAAK,CAAC;YACxB,CAAC;YAED,cAAc,CAAC,KAAK;gBAClB,IAAI,IAAI,CAAC,KAAK,EAAE;oBACd,IAAI,CAAC,KAAK,CAAC,cAAc,CAAC,KAAK,CAAC,CAAC;iBAClC;YACH,CAAC;YAED,MAAM;gBACJ,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,YAAY,EAAE;oBAC5B,OAAO,CAAC,IAAI,CAAC,AAAD,EAAG,CAAC;iBACjB;gBAED,OAAO,CACL,CAAC,gBAAgB,CACf,GAAG,CAAC,CAAC,IAAI,CAAC,EAAE;oBACV,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC;gBACpB,CAAC,CAAC,CACF,IAAI,IAAI,CAAC,KAAK,CAAC,EACf,CACH,CAAC;YACJ,CAAC;SACF;QAhDQ,YAAS,GAAG,gBAAgB,CAAC,SAAU;QACvC,eAAY,GAAG,gBAAgB,CAAC,YAAa;QAC7C,SAAM,GAAG,yBAAyB,CAAC,EAAI,CAAE;QACzC,WAAQ,GAAG,QAAS;QACpB,iBAAc,GAAG,GAAG,EAAE,CAAC,QAAS;QAChC,gBAAa,GAAG,GAAG,EAAE,CAAC,QAAS;QAC/B,WAAQ,GAAG,GAAG,EAAE,CAAC,IAAI,CAAC,SAAS,CAAC,IAAI,CAAE;QACtC,OAAI,GAAG,IAAK;WAyCnB;AACJ,CAAC","sourcesContent":["import * as Font from \"expo-font\";\nimport React, { ComponentClass } from \"react\";\nimport { Text, TextProps, TouchableHighlightProps, ViewProps } from \"react-native\";\n\nimport createIconSet from \"./vendor/react-native-vector-icons/lib/create-icon-set\";\nimport createIconButtonComponent from \"./vendor/react-native-vector-icons/lib/icon-button\";\n\nexport {\n DEFAULT_ICON_COLOR,\n DEFAULT_ICON_SIZE\n} from \"./vendor/react-native-vector-icons/lib/create-icon-set\";\n\nexport interface IconButtonProps<GLYPHS extends string> extends ViewProps, TouchableHighlightProps {\n /**\n * Size of the icon, can also be passed as fontSize in the style object.\n *\n * @default 12\n */\n size?: number;\n\n /**\n * Name of the icon to show\n *\n * See Icon Explorer app\n * {@link https://expo.github.io/vector-icons/}\n */\n name: GLYPHS;\n\n /**\n * Color of the icon\n *\n */\n color?: string;\n}\n\nexport interface IconProps<GLYPHS extends string> extends TextProps {\n /**\n * Size of the icon, can also be passed as fontSize in the style object.\n *\n * @default 12\n */\n size?: number;\n\n /**\n * Name of the icon to show\n *\n * See Icon Explorer app\n * {@link https://expo.github.io/vector-icons/}\n */\n name: GLYPHS;\n\n /**\n * Color of the icon\n *\n */\n color?: string;\n}\n\nexport type GlyphMap<G extends string> = { [K in G]: number }\n\nexport interface Icon<G extends string, FN extends string> {\n propTypes: any;\n defaultProps: any;\n Button: ComponentClass<IconButtonProps<G>>;\n glyphMap: GlyphMap<G>;\n getRawGlyphMap: () => GlyphMap<G>;\n getFontFamily: () => FN;\n loadFont: () => Promise<void>;\n font: { [x: string]: any };\n new (props: IconProps<G>): React.Component<IconProps<G>>;\n}\n\nexport default function<G extends string, FN extends string>(\n glyphMap: GlyphMap<G>,\n fontName: FN,\n expoAssetId,\n fontStyle?: any\n): Icon<G, FN> {\n const font = { [fontName]: expoAssetId };\n const RNVIconComponent = createIconSet(glyphMap, fontName, null, fontStyle);\n\n return class Icon extends React.Component<IconProps<G>> {\n static propTypes = RNVIconComponent.propTypes;\n static defaultProps = RNVIconComponent.defaultProps;\n static Button = createIconButtonComponent(Icon);\n static glyphMap = glyphMap;\n static getRawGlyphMap = () => glyphMap;\n static getFontFamily = () => fontName;\n static loadFont = () => Font.loadAsync(font);\n static font = font;\n\n _mounted = false;\n _icon?: any;\n\n state = {\n fontIsLoaded: Font.isLoaded(fontName)\n };\n\n async componentDidMount() {\n this._mounted = true;\n if (!this.state.fontIsLoaded) {\n await Font.loadAsync(font);\n this._mounted && this.setState({ fontIsLoaded: true });\n }\n }\n\n componentWillUnmount() {\n this._mounted = false;\n }\n\n setNativeProps(props) {\n if (this._icon) {\n this._icon.setNativeProps(props);\n }\n }\n\n render() {\n if (!this.state.fontIsLoaded) {\n return <Text />;\n }\n\n return (\n <RNVIconComponent\n ref={view => {\n this._icon = view;\n }}\n {...this.props}\n />\n );\n }\n };\n}\n"]}
\No newline at end of file