UNPKG

apeman-react-icon

Version:
144 lines (114 loc) 10.1 kB
/** * apeman react package for icon components. * @class ApIcon */ 'use strict'; Object.defineProperty(exports, "__esModule", { value: true }); var _react = require('react'); var _react2 = _interopRequireDefault(_react); var _apemanReactMixins = require('apeman-react-mixins'); var _classnames = require('classnames'); var _classnames2 = _interopRequireDefault(_classnames); function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } var assertCache = {}; /** @lends ApIcon */ var ApIcon = _react2.default.createClass({ displayName: 'ApIcon', // -------------------- // Specs // -------------------- propTypes: {}, mixins: [_apemanReactMixins.ApPureMixin], statics: { /** * Check if has style. * @param className */ hasStyleWithClass: function hasStyleWithClass(className) { var styleSheets = document.styleSheets || []; for (var i = 0; i < styleSheets.length; i++) { var styleSheet = styleSheets[i]; var rules = styleSheet.rules || styleSheet.cssRules || []; for (var j = 0; j < rules.length; j++) { var rule = rules[j]; var selectorText = rule.selectorText; var hit = selectorText && new RegExp('.' + className).test(selectorText); if (hit) { return true; } } } return false; } }, getInitialState: function getInitialState() { return {}; }, getDefaultProps: function getDefaultProps() { return {}; }, render: function render() { var s = this; var props = s.props; return _react2.default.createElement('i', { className: (0, _classnames2.default)('ap-icon', props.className), style: Object.assign({}, props.style) }); }, // -------------------- // Lifecycle // -------------------- componentDidMount: function componentDidMount() { var s = this; var props = s.props; s.assertClassName(props.className); }, componentWillReceiveProps: function componentWillReceiveProps(nextProps) { var s = this; if (nextProps.hasOwnProperty('className')) { s.assertClassName(nextProps.className); } }, componentWillUnmount: function componentWillUnmount() { var s = this; clearTimeout(s._assertTimer); }, // ------------------ // Helper // ------------------ assertClassName: function assertClassName(className) { if (!className) { return; } var s = this; clearTimeout(s._assertTimer); s._assertTimer = setTimeout(function () { var isMounted = s.isMounted(); if (!isMounted) { return; } className.split(/\s/g).forEach(function (className) { if (!className) { return; } if (assertCache.hasOwnProperty(className)) { return; } if (/^ap/.test(className)) { return; } var valid = ApIcon.hasStyleWithClass(className); if (!valid) { console.warn('[ApIcon] No style found for class "' + className + '". You may misspell the name or miss some stylesheets.'); } assertCache[className] = valid; }); }, 100); }, // ------------------ // Private // ------------------ _assertTimer: -1 }); exports.default = ApIcon; //# sourceMappingURL=data:application/json;base64,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WUFBSSxRQUFRLE9BQU8saUJBQVAsQ0FBeUIsU0FBekIsQ0FBWjtBQUNBLFlBQUksQ0FBQyxLQUFMLEVBQVk7QUFDVixrQkFBUSxJQUFSLHlDQUFtRCxTQUFuRDtBQUNEO0FBQ0Qsb0JBQWEsU0FBYixJQUEyQixLQUEzQjtBQUNELE9BZkQ7QUFnQkQsS0FyQmdCLEVBcUJkLEdBckJjLENBQWpCO0FBc0JELEdBNUc4Qjs7Ozs7OztBQWtIL0IsZ0JBQWMsQ0FBQztBQWxIZ0IsQ0FBbEIsQ0FBZjs7a0JBcUhlLE0iLCJmaWxlIjoiYXBfaWNvbi5qcyIsInNvdXJjZVJvb3QiOiIvVXNlcnMvb2t1bmlzaGluaXNoaS9Qcm9qZWN0cy9hcGVtYW4tcHJvamVjdHMvYXBlbWFuLXJlYWN0LWljb24vbGliIiwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4gKiBhcGVtYW4gcmVhY3QgcGFja2FnZSBmb3IgaWNvbiBjb21wb25lbnRzLlxuICogQGNsYXNzIEFwSWNvblxuICovXG5cbid1c2Ugc3RyaWN0J1xuXG5pbXBvcnQgUmVhY3QsIHtQcm9wVHlwZXMgYXMgdHlwZXN9IGZyb20gJ3JlYWN0J1xuaW1wb3J0IHtBcFB1cmVNaXhpbn0gZnJvbSAnYXBlbWFuLXJlYWN0LW1peGlucydcbmltcG9ydCBjbGFzc25hbWVzIGZyb20gJ2NsYXNzbmFtZXMnXG5cbmxldCBhc3NlcnRDYWNoZSA9IHt9XG5cbi8qKiBAbGVuZHMgQXBJY29uICovXG5jb25zdCBBcEljb24gPSBSZWFjdC5jcmVhdGVDbGFzcyh7XG5cbiAgLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS1cbiAgLy8gU3BlY3NcbiAgLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS1cblxuICBwcm9wVHlwZXM6IHt9LFxuXG4gIG1peGluczogW1xuICAgIEFwUHVyZU1peGluXG4gIF0sXG5cbiAgc3RhdGljczoge1xuICAgIC8qKlxuICAgICAqIENoZWNrIGlmIGhhcyBzdHlsZS5cbiAgICAgKiBAcGFyYW0gY2xhc3NOYW1lXG4gICAgICovXG4gICAgaGFzU3R5bGVXaXRoQ2xhc3MgKGNsYXNzTmFtZSkge1xuICAgICAgbGV0IHN0eWxlU2hlZXRzID0gZG9jdW1lbnQuc3R5bGVTaGVldHMgfHwgW11cbiAgICAgIGZvciAobGV0IGkgPSAwOyBpIDwgc3R5bGVTaGVldHMubGVuZ3RoOyBpKyspIHtcbiAgICAgICAgbGV0IHN0eWxlU2hlZXQgPSBzdHlsZVNoZWV0c1sgaSBdXG4gICAgICAgIGxldCBydWxlcyA9IHN0eWxlU2hlZXQucnVsZXMgfHwgc3R5bGVTaGVldC5jc3NSdWxlcyB8fCBbXVxuICAgICAgICBmb3IgKGxldCBqID0gMDsgaiA8IHJ1bGVzLmxlbmd0aDsgaisrKSB7XG4gICAgICAgICAgbGV0IHJ1bGUgPSBydWxlc1sgaiBdXG4gICAgICAgICAgbGV0IHNlbGVjdG9yVGV4dCA9IHJ1bGUuc2VsZWN0b3JUZXh0XG4gICAgICAgICAgbGV0IGhpdCA9IHNlbGVjdG9yVGV4dCAmJiBuZXcgUmVnRXhwKGBcXC4ke2NsYXNzTmFtZX1gKS50ZXN0KHNlbGVjdG9yVGV4dClcbiAgICAgICAgICBpZiAoaGl0KSB7XG4gICAgICAgICAgICByZXR1cm4gdHJ1ZVxuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgfVxuICAgICAgcmV0dXJuIGZhbHNlXG4gICAgfVxuICB9LFxuXG4gIGdldEluaXRpYWxTdGF0ZSAoKSB7XG4gICAgcmV0dXJuIHt9XG4gIH0sXG5cbiAgZ2V0RGVmYXVsdFByb3BzICgpIHtcbiAgICByZXR1cm4ge31cbiAgfSxcblxuICByZW5kZXIgKCkge1xuICAgIGNvbnN0IHMgPSB0aGlzXG4gICAgbGV0IHsgcHJvcHMgfSA9IHNcblxuICAgIHJldHVybiAoXG4gICAgICA8aSBjbGFzc05hbWU9eyBjbGFzc25hbWVzKCdhcC1pY29uJywgcHJvcHMuY2xhc3NOYW1lKSB9XG4gICAgICAgICBzdHlsZT17T2JqZWN0LmFzc2lnbih7fSwgcHJvcHMuc3R5bGUpfT5cbiAgICAgIDwvaT5cbiAgICApXG4gIH0sXG5cbiAgLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS1cbiAgLy8gTGlmZWN5Y2xlXG4gIC8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tXG5cbiAgY29tcG9uZW50RGlkTW91bnQgKCkge1xuICAgIGNvbnN0IHMgPSB0aGlzXG4gICAgbGV0IHsgcHJvcHMgfSA9IHNcbiAgICBzLmFzc2VydENsYXNzTmFtZShwcm9wcy5jbGFzc05hbWUpXG4gIH0sXG5cbiAgY29tcG9uZW50V2lsbFJlY2VpdmVQcm9wcyAobmV4dFByb3BzKSB7XG4gICAgY29uc3QgcyA9IHRoaXNcbiAgICBpZiAobmV4dFByb3BzLmhhc093blByb3BlcnR5KCdjbGFzc05hbWUnKSkge1xuICAgICAgcy5hc3NlcnRDbGFzc05hbWUobmV4dFByb3BzLmNsYXNzTmFtZSlcbiAgICB9XG4gIH0sXG5cbiAgY29tcG9uZW50V2lsbFVubW91bnQgKCkge1xuICAgIGNvbnN0IHMgPSB0aGlzXG4gICAgY2xlYXJUaW1lb3V0KHMuX2Fzc2VydFRpbWVyKVxuICB9LFxuXG4gIC8vIC0tLS0tLS0tLS0tLS0tLS0tLVxuICAvLyBIZWxwZXJcbiAgLy8gLS0tLS0tLS0tLS0tLS0tLS0tXG5cbiAgYXNzZXJ0Q2xhc3NOYW1lIChjbGFzc05hbWUpIHtcbiAgICBpZiAoIWNsYXNzTmFtZSkge1xuICAgICAgcmV0dXJuXG4gICAgfVxuICAgIGNvbnN0IHMgPSB0aGlzXG4gICAgY2xlYXJUaW1lb3V0KHMuX2Fzc2VydFRpbWVyKVxuICAgIHMuX2Fzc2VydFRpbWVyID0gc2V0VGltZW91dCgoKSA9PiB7XG4gICAgICBsZXQgaXNNb3VudGVkID0gcy5pc01vdW50ZWQoKVxuICAgICAgaWYgKCFpc01vdW50ZWQpIHtcbiAgICAgICAgcmV0dXJuXG4gICAgICB9XG4gICAgICBjbGFzc05hbWUuc3BsaXQoL1xccy9nKS5mb3JFYWNoKChjbGFzc05hbWUpID0+IHtcbiAgICAgICAgaWYgKCFjbGFzc05hbWUpIHtcbiAgICAgICAgICByZXR1cm5cbiAgICAgICAgfVxuICAgICAgICBpZiAoYXNzZXJ0Q2FjaGUuaGFzT3duUHJvcGVydHkoY2xhc3NOYW1lKSkge1xuICAgICAgICAgIHJldHVyblxuICAgICAgICB9XG4gICAgICAgIGlmICgvXmFwLy50ZXN0KGNsYXNzTmFtZSkpIHtcbiAgICAgICAgICByZXR1cm5cbiAgICAgICAgfVxuICAgICAgICBsZXQgdmFsaWQgPSBBcEljb24uaGFzU3R5bGVXaXRoQ2xhc3MoY2xhc3NOYW1lKVxuICAgICAgICBpZiAoIXZhbGlkKSB7XG4gICAgICAgICAgY29uc29sZS53YXJuKGBbQXBJY29uXSBObyBzdHlsZSBmb3VuZCBmb3IgY2xhc3MgXCIke2NsYXNzTmFtZX1cIi4gWW91IG1heSBtaXNzcGVsbCB0aGUgbmFtZSBvciBtaXNzIHNvbWUgc3R5bGVzaGVldHMuYClcbiAgICAgICAgfVxuICAgICAgICBhc3NlcnRDYWNoZVsgY2xhc3NOYW1lIF0gPSB2YWxpZFxuICAgICAgfSlcbiAgICB9LCAxMDApXG4gIH0sXG5cbiAgLy8gLS0tLS0tLS0tLS0tLS0tLS0tXG4gIC8vIFByaXZhdGVcbiAgLy8gLS0tLS0tLS0tLS0tLS0tLS0tXG5cbiAgX2Fzc2VydFRpbWVyOiAtMVxufSlcblxuZXhwb3J0IGRlZmF1bHQgQXBJY29uXG4iXX0=