plotly-icons
Version:
set of plotly icons
151 lines (114 loc) • 4.56 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", {
value: true
});
var _set = require('babel-runtime/core-js/set');
var _set2 = _interopRequireDefault(_set);
var _toConsumableArray2 = require('babel-runtime/helpers/toConsumableArray');
var _toConsumableArray3 = _interopRequireDefault(_toConsumableArray2);
var _getPrototypeOf = require('babel-runtime/core-js/object/get-prototype-of');
var _getPrototypeOf2 = _interopRequireDefault(_getPrototypeOf);
var _classCallCheck2 = require('babel-runtime/helpers/classCallCheck');
var _classCallCheck3 = _interopRequireDefault(_classCallCheck2);
var _createClass2 = require('babel-runtime/helpers/createClass');
var _createClass3 = _interopRequireDefault(_createClass2);
var _possibleConstructorReturn2 = require('babel-runtime/helpers/possibleConstructorReturn');
var _possibleConstructorReturn3 = _interopRequireDefault(_possibleConstructorReturn2);
var _inherits2 = require('babel-runtime/helpers/inherits');
var _inherits3 = _interopRequireDefault(_inherits2);
exports.defaultHead = defaultHead;
var _react = require('react');
var _react2 = _interopRequireDefault(_react);
var _propTypes = require('prop-types');
var _propTypes2 = _interopRequireDefault(_propTypes);
var _sideEffect = require('./side-effect');
var _sideEffect2 = _interopRequireDefault(_sideEffect);
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
var Head = function (_React$Component) {
(0, _inherits3.default)(Head, _React$Component);
function Head() {
(0, _classCallCheck3.default)(this, Head);
return (0, _possibleConstructorReturn3.default)(this, (Head.__proto__ || (0, _getPrototypeOf2.default)(Head)).apply(this, arguments));
}
(0, _createClass3.default)(Head, [{
key: 'render',
value: function render() {
return null;
}
}]);
return Head;
}(_react2.default.Component);
Head.contextTypes = {
headManager: _propTypes2.default.object
};
function defaultHead() {
return [_react2.default.createElement('meta', { charSet: 'utf-8', className: 'next-head' })];
}
function reduceComponents(components) {
var _components$map$map$r;
return (_components$map$map$r = components.map(function (c) {
return c.props.children;
}).map(function (children) {
return _react2.default.Children.toArray(children);
}).reduce(function (a, b) {
return a.concat(b);
}, []).reduce(function (a, b) {
if (_react2.default.Fragment && b.type === _react2.default.Fragment) {
return a.concat(_react2.default.Children.toArray(b.props.children));
}
return a.concat(b);
}, []).reverse()).concat.apply(_components$map$map$r, (0, _toConsumableArray3.default)(defaultHead())).filter(function (c) {
return !!c;
}).filter(unique()).reverse().map(function (c) {
var className = (c.props && c.props.className ? c.props.className + ' ' : '') + 'next-head';
return _react2.default.cloneElement(c, { className: className });
});
}
function mapOnServer(head) {
return head;
}
function onStateChange(head) {
if (this.context && this.context.headManager) {
this.context.headManager.updateHead(head);
}
}
var METATYPES = ['name', 'httpEquiv', 'charSet', 'itemProp', 'property'];
// returns a function for filtering head child elements
// which shouldn't be duplicated, like <title/>.
function unique() {
var keys = new _set2.default();
var tags = new _set2.default();
var metaTypes = new _set2.default();
var metaCategories = {};
return function (h) {
if (h.key && h.key.indexOf('.$') === 0) {
if (keys.has(h.key)) return false;
keys.add(h.key);
}
switch (h.type) {
case 'title':
case 'base':
if (tags.has(h.type)) return false;
tags.add(h.type);
break;
case 'meta':
for (var i = 0, len = METATYPES.length; i < len; i++) {
var metatype = METATYPES[i];
if (!h.props.hasOwnProperty(metatype)) continue;
if (metatype === 'charSet') {
if (metaTypes.has(metatype)) return false;
metaTypes.add(metatype);
} else {
var category = h.props[metatype];
var categories = metaCategories[metatype] || new _set2.default();
if (categories.has(category)) return false;
categories.add(category);
metaCategories[metatype] = categories;
}
}
break;
}
return true;
};
}
exports.default = (0, _sideEffect2.default)(reduceComponents, onStateChange, mapOnServer)(Head);