UNPKG

react-ionicons

Version:

A React SVG ionicon component

57 lines (49 loc) 3.34 kB
'use strict'; var icons = require('./icons'); var fs = require('fs'); var toCamelCase = function toCamelCase(string) { var camelCased = string.replace(/-([a-z])/g, function (g) { return g[1].toUpperCase(); }); return camelCased.charAt(0).toUpperCase() + camelCased.slice(1); }; var createTemplate = function createTemplate(componentName, paths) { return 'import React, { Component } from \'react\'\nimport PropTypes from \'prop-types\'\n\nimport SVG from \'./SVG\'\n\nclass ' + componentName + ' extends Component {\n\n constructor(props) {\n super(props)\n this.state = {classNames: [], animationActive: false}\n this._getClasses = this._getClasses.bind(this)\n }\n\n render() {\n const style = {\n ...this.props.style,\n color: this.props.color,\n fontSize: this.props.fontSize,\n }\n\n return (\n <SVG\n style={this.props.style}\n className={this._getClasses()}\n fill={this.props.color}\n width={this.props.fontSize}\n height={this.props.fontSize}\n viewBox="0 0 1024 1024"\n onClick={this.props.onClick}\n rotate={this.props.rotate ? 1 : 0}\n shake={this.props.shake ? 1 : 0}\n beat={this.props.beat ? 1 : 0}\n >\n <path d="' + paths + '"></path>\n </SVG>\n )\n }\n\n _getClasses() {\n return [...this.state.classNames, this.props.className].join(\' \')\n }\n\n _getPathByIconName() {\n let icon = icons.find(icon => icon.tags[0] === this.props.icon)\n if (icon) return icon.paths.join(\' \')\n return \'\'\n }\n\n}\n\n\n' + componentName + '.defaultProps = {\n // style\n style: {},\n color: \'#000000\',\n fontSize: \'22px\',\n\n // animation\n shake: false,\n beat: false,\n rotate: false,\n}\n\n\n' + componentName + '.propTypes = {\n // style\n style: PropTypes.object,\n color: PropTypes.string,\n fontSize: PropTypes.string,\n\n // animation\n shake: PropTypes.bool,\n beat: PropTypes.bool,\n rotate: PropTypes.bool,\n\n // functions\n onClick: PropTypes.func\n}\n\n\nexport default ' + componentName + '\n'; }; var components = []; var _iteratorNormalCompletion = true; var _didIteratorError = false; var _iteratorError = undefined; try { var _loop = function _loop() { var icon = _step.value; var componentName = toCamelCase(icon.tags[0]); components.push('./src/' + componentName + '.js'); var paths = icon.paths.join(' '); var template = createTemplate(componentName, paths); fs.writeFile('./' + componentName + '.js', template, function (err) { if (err) return console.log('Error creating ' + componentName + ' component'); console.log(componentName + ' created'); }); }; for (var _iterator = icons[Symbol.iterator](), _step; !(_iteratorNormalCompletion = (_step = _iterator.next()).done); _iteratorNormalCompletion = true) { _loop(); } } catch (err) { _didIteratorError = true; _iteratorError = err; } finally { try { if (!_iteratorNormalCompletion && _iterator.return) { _iterator.return(); } } finally { if (_didIteratorError) { throw _iteratorError; } } } fs.writeFile('./components.js', 'module.exports = ["' + components.join('", "') + '"]', function (err) { if (err) console.log(err); }); //# sourceMappingURL=generateComponents.js.map