Add files
This commit is contained in:
commit
bb80829159
18195 changed files with 2122994 additions and 0 deletions
286
509bba0_unpacked_with_node_modules/~/react-helmet/lib/Helmet.js
generated
vendored
Executable file
286
509bba0_unpacked_with_node_modules/~/react-helmet/lib/Helmet.js
generated
vendored
Executable file
|
@ -0,0 +1,286 @@
|
|||
exports.__esModule = true;
|
||||
exports.Helmet = undefined;
|
||||
|
||||
var _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; };
|
||||
|
||||
var _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();
|
||||
|
||||
var _react = require("react");
|
||||
|
||||
var _react2 = _interopRequireDefault(_react);
|
||||
|
||||
var _reactSideEffect = require("react-side-effect");
|
||||
|
||||
var _reactSideEffect2 = _interopRequireDefault(_reactSideEffect);
|
||||
|
||||
var _deepEqual = require("deep-equal");
|
||||
|
||||
var _deepEqual2 = _interopRequireDefault(_deepEqual);
|
||||
|
||||
var _HelmetUtils = require("./HelmetUtils.js");
|
||||
|
||||
var _HelmetConstants = require("./HelmetConstants.js");
|
||||
|
||||
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
|
||||
|
||||
function _objectWithoutProperties(obj, keys) { var target = {}; for (var i in obj) { if (keys.indexOf(i) >= 0) continue; if (!Object.prototype.hasOwnProperty.call(obj, i)) continue; target[i] = obj[i]; } return target; }
|
||||
|
||||
function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } }
|
||||
|
||||
function _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError("this hasn't been initialised - super() hasn't been called"); } return call && (typeof call === "object" || typeof call === "function") ? call : self; }
|
||||
|
||||
function _inherits(subClass, superClass) { if (typeof superClass !== "function" && superClass !== null) { throw new TypeError("Super expression must either be null or a function, not " + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }
|
||||
|
||||
var Helmet = function Helmet(Component) {
|
||||
var _class, _temp;
|
||||
|
||||
return _temp = _class = function (_React$Component) {
|
||||
_inherits(HelmetWrapper, _React$Component);
|
||||
|
||||
function HelmetWrapper() {
|
||||
_classCallCheck(this, HelmetWrapper);
|
||||
|
||||
return _possibleConstructorReturn(this, _React$Component.apply(this, arguments));
|
||||
}
|
||||
|
||||
HelmetWrapper.prototype.shouldComponentUpdate = function shouldComponentUpdate(nextProps) {
|
||||
return !(0, _deepEqual2.default)(this.props, nextProps);
|
||||
};
|
||||
|
||||
HelmetWrapper.prototype.mapNestedChildrenToProps = function mapNestedChildrenToProps(child, nestedChildren) {
|
||||
if (!nestedChildren) {
|
||||
return null;
|
||||
}
|
||||
|
||||
switch (child.type) {
|
||||
case _HelmetConstants.TAG_NAMES.SCRIPT:
|
||||
case _HelmetConstants.TAG_NAMES.NOSCRIPT:
|
||||
return {
|
||||
innerHTML: nestedChildren
|
||||
};
|
||||
|
||||
case _HelmetConstants.TAG_NAMES.STYLE:
|
||||
return {
|
||||
cssText: nestedChildren
|
||||
};
|
||||
}
|
||||
|
||||
throw new Error("<" + child.type + " /> elements are self-closing and can not contain children. Refer to our API for more information.");
|
||||
};
|
||||
|
||||
HelmetWrapper.prototype.flattenArrayTypeChildren = function flattenArrayTypeChildren(_ref) {
|
||||
var _extends2;
|
||||
|
||||
var child = _ref.child,
|
||||
arrayTypeChildren = _ref.arrayTypeChildren,
|
||||
newChildProps = _ref.newChildProps,
|
||||
nestedChildren = _ref.nestedChildren;
|
||||
|
||||
return _extends({}, arrayTypeChildren, (_extends2 = {}, _extends2[child.type] = [].concat(arrayTypeChildren[child.type] || [], [_extends({}, newChildProps, this.mapNestedChildrenToProps(child, nestedChildren))]), _extends2));
|
||||
};
|
||||
|
||||
HelmetWrapper.prototype.mapObjectTypeChildren = function mapObjectTypeChildren(_ref2) {
|
||||
var _extends3, _extends4;
|
||||
|
||||
var child = _ref2.child,
|
||||
newProps = _ref2.newProps,
|
||||
newChildProps = _ref2.newChildProps,
|
||||
nestedChildren = _ref2.nestedChildren;
|
||||
|
||||
switch (child.type) {
|
||||
case _HelmetConstants.TAG_NAMES.TITLE:
|
||||
return _extends({}, newProps, (_extends3 = {}, _extends3[child.type] = nestedChildren, _extends3.titleAttributes = _extends({}, newChildProps), _extends3));
|
||||
|
||||
case _HelmetConstants.TAG_NAMES.BODY:
|
||||
return _extends({}, newProps, {
|
||||
bodyAttributes: _extends({}, newChildProps)
|
||||
});
|
||||
|
||||
case _HelmetConstants.TAG_NAMES.HTML:
|
||||
return _extends({}, newProps, {
|
||||
htmlAttributes: _extends({}, newChildProps)
|
||||
});
|
||||
}
|
||||
|
||||
return _extends({}, newProps, (_extends4 = {}, _extends4[child.type] = _extends({}, newChildProps), _extends4));
|
||||
};
|
||||
|
||||
HelmetWrapper.prototype.mapArrayTypeChildrenToProps = function mapArrayTypeChildrenToProps(arrayTypeChildren, newProps) {
|
||||
var newFlattenedProps = _extends({}, newProps);
|
||||
|
||||
Object.keys(arrayTypeChildren).forEach(function (arrayChildName) {
|
||||
var _extends5;
|
||||
|
||||
newFlattenedProps = _extends({}, newFlattenedProps, (_extends5 = {}, _extends5[arrayChildName] = arrayTypeChildren[arrayChildName], _extends5));
|
||||
});
|
||||
|
||||
return newFlattenedProps;
|
||||
};
|
||||
|
||||
HelmetWrapper.prototype.warnOnInvalidChildren = function warnOnInvalidChildren(child, nestedChildren) {
|
||||
if (process.env.NODE_ENV !== "production") {
|
||||
if (!_HelmetConstants.VALID_TAG_NAMES.some(function (name) {
|
||||
return child.type === name;
|
||||
})) {
|
||||
if (typeof child.type === "function") {
|
||||
return (0, _HelmetUtils.warn)("You may be attempting to nest <Helmet> components within each other, which is not allowed. Refer to our API for more information.");
|
||||
}
|
||||
|
||||
return (0, _HelmetUtils.warn)("Only elements types " + _HelmetConstants.VALID_TAG_NAMES.join(", ") + " are allowed. Helmet does not support rendering <" + child.type + "> elements. Refer to our API for more information.");
|
||||
}
|
||||
|
||||
if (nestedChildren && typeof nestedChildren !== "string") {
|
||||
throw new Error("Helmet expects a string as a child of <" + child.type + ">. Did you forget to wrap your children in braces? ( <" + child.type + ">{``}</" + child.type + "> ) Refer to our API for more information.");
|
||||
}
|
||||
}
|
||||
|
||||
return true;
|
||||
};
|
||||
|
||||
HelmetWrapper.prototype.mapChildrenToProps = function mapChildrenToProps(children, newProps) {
|
||||
var _this2 = this;
|
||||
|
||||
var arrayTypeChildren = {};
|
||||
|
||||
_react2.default.Children.forEach(children, function (child) {
|
||||
var _child$props = child.props,
|
||||
nestedChildren = _child$props.children,
|
||||
childProps = _objectWithoutProperties(_child$props, ["children"]);
|
||||
|
||||
var newChildProps = (0, _HelmetUtils.convertReactPropstoHtmlAttributes)(childProps);
|
||||
|
||||
_this2.warnOnInvalidChildren(child, nestedChildren);
|
||||
|
||||
switch (child.type) {
|
||||
case _HelmetConstants.TAG_NAMES.LINK:
|
||||
case _HelmetConstants.TAG_NAMES.META:
|
||||
case _HelmetConstants.TAG_NAMES.NOSCRIPT:
|
||||
case _HelmetConstants.TAG_NAMES.SCRIPT:
|
||||
case _HelmetConstants.TAG_NAMES.STYLE:
|
||||
arrayTypeChildren = _this2.flattenArrayTypeChildren({
|
||||
child: child,
|
||||
arrayTypeChildren: arrayTypeChildren,
|
||||
newChildProps: newChildProps,
|
||||
nestedChildren: nestedChildren
|
||||
});
|
||||
break;
|
||||
|
||||
default:
|
||||
newProps = _this2.mapObjectTypeChildren({
|
||||
child: child,
|
||||
newProps: newProps,
|
||||
newChildProps: newChildProps,
|
||||
nestedChildren: nestedChildren
|
||||
});
|
||||
break;
|
||||
}
|
||||
});
|
||||
|
||||
newProps = this.mapArrayTypeChildrenToProps(arrayTypeChildren, newProps);
|
||||
return newProps;
|
||||
};
|
||||
|
||||
HelmetWrapper.prototype.render = function render() {
|
||||
var _props = this.props,
|
||||
children = _props.children,
|
||||
props = _objectWithoutProperties(_props, ["children"]);
|
||||
|
||||
var newProps = _extends({}, props);
|
||||
|
||||
if (children) {
|
||||
newProps = this.mapChildrenToProps(children, newProps);
|
||||
}
|
||||
|
||||
return _react2.default.createElement(Component, newProps);
|
||||
};
|
||||
|
||||
_createClass(HelmetWrapper, null, [{
|
||||
key: "canUseDOM",
|
||||
|
||||
|
||||
// Component.peek comes from react-side-effect:
|
||||
// For testing, you may use a static peek() method available on the returned component.
|
||||
// It lets you get the current state without resetting the mounted instance stack.
|
||||
// Don’t use it for anything other than testing.
|
||||
|
||||
/**
|
||||
* @param {Object} base: {"target": "_blank", "href": "http://mysite.com/"}
|
||||
* @param {Object} bodyAttributes: {"className": "root"}
|
||||
* @param {String} defaultTitle: "Default Title"
|
||||
* @param {Boolean} encodeSpecialCharacters: true
|
||||
* @param {Object} htmlAttributes: {"lang": "en", "amp": undefined}
|
||||
* @param {Array} link: [{"rel": "canonical", "href": "http://mysite.com/example"}]
|
||||
* @param {Array} meta: [{"name": "description", "content": "Test description"}]
|
||||
* @param {Array} noscript: [{"innerHTML": "<img src='http://mysite.com/js/test.js'"}]
|
||||
* @param {Function} onChangeClientState: "(newState) => console.log(newState)"
|
||||
* @param {Array} script: [{"type": "text/javascript", "src": "http://mysite.com/js/test.js"}]
|
||||
* @param {Array} style: [{"type": "text/css", "cssText": "div { display: block; color: blue; }"}]
|
||||
* @param {String} title: "Title"
|
||||
* @param {Object} titleAttributes: {"itemprop": "name"}
|
||||
* @param {String} titleTemplate: "MySite.com - %s"
|
||||
*/
|
||||
set: function set(canUseDOM) {
|
||||
Component.canUseDOM = canUseDOM;
|
||||
}
|
||||
}]);
|
||||
|
||||
return HelmetWrapper;
|
||||
}(_react2.default.Component), _class.propTypes = {
|
||||
base: _react2.default.PropTypes.object,
|
||||
bodyAttributes: _react2.default.PropTypes.object,
|
||||
children: _react2.default.PropTypes.oneOfType([_react2.default.PropTypes.arrayOf(_react2.default.PropTypes.node), _react2.default.PropTypes.node]),
|
||||
defaultTitle: _react2.default.PropTypes.string,
|
||||
encodeSpecialCharacters: _react2.default.PropTypes.bool,
|
||||
htmlAttributes: _react2.default.PropTypes.object,
|
||||
link: _react2.default.PropTypes.arrayOf(_react2.default.PropTypes.object),
|
||||
meta: _react2.default.PropTypes.arrayOf(_react2.default.PropTypes.object),
|
||||
noscript: _react2.default.PropTypes.arrayOf(_react2.default.PropTypes.object),
|
||||
onChangeClientState: _react2.default.PropTypes.func,
|
||||
script: _react2.default.PropTypes.arrayOf(_react2.default.PropTypes.object),
|
||||
style: _react2.default.PropTypes.arrayOf(_react2.default.PropTypes.object),
|
||||
title: _react2.default.PropTypes.string,
|
||||
titleAttributes: _react2.default.PropTypes.object,
|
||||
titleTemplate: _react2.default.PropTypes.string
|
||||
}, _class.defaultProps = {
|
||||
encodeSpecialCharacters: true
|
||||
}, _class.peek = Component.peek, _class.rewind = function () {
|
||||
var mappedState = Component.rewind();
|
||||
if (!mappedState) {
|
||||
// provide fallback if mappedState is undefined
|
||||
mappedState = (0, _HelmetUtils.mapStateOnServer)({
|
||||
baseTag: [],
|
||||
bodyAttributes: {},
|
||||
encodeSpecialCharacters: true,
|
||||
htmlAttributes: {},
|
||||
linkTags: [],
|
||||
metaTags: [],
|
||||
noscriptTags: [],
|
||||
scriptTags: [],
|
||||
styleTags: [],
|
||||
title: "",
|
||||
titleAttributes: {}
|
||||
});
|
||||
}
|
||||
|
||||
return mappedState;
|
||||
}, _temp;
|
||||
};
|
||||
|
||||
var NullComponent = function NullComponent() {
|
||||
return null;
|
||||
};
|
||||
|
||||
var HelmetSideEffects = (0, _reactSideEffect2.default)(_HelmetUtils.reducePropsToState, _HelmetUtils.handleClientStateChange, _HelmetUtils.mapStateOnServer)(NullComponent);
|
||||
|
||||
var HelmetExport = Helmet(HelmetSideEffects);
|
||||
HelmetExport.renderStatic = HelmetExport.rewind;
|
||||
|
||||
exports.Helmet = HelmetExport;
|
||||
exports.default = HelmetExport;
|
||||
|
||||
|
||||
//////////////////
|
||||
// WEBPACK FOOTER
|
||||
// ./~/react-helmet/lib/Helmet.js
|
||||
// module id = 291
|
||||
// module chunks = 4
|
70
509bba0_unpacked_with_node_modules/~/react-helmet/lib/HelmetConstants.js
generated
vendored
Executable file
70
509bba0_unpacked_with_node_modules/~/react-helmet/lib/HelmetConstants.js
generated
vendored
Executable file
|
@ -0,0 +1,70 @@
|
|||
exports.__esModule = true;
|
||||
var ATTRIBUTE_NAMES = exports.ATTRIBUTE_NAMES = {
|
||||
BODY: "bodyAttributes",
|
||||
HTML: "htmlAttributes",
|
||||
TITLE: "titleAttributes"
|
||||
};
|
||||
|
||||
var TAG_NAMES = exports.TAG_NAMES = {
|
||||
BASE: "base",
|
||||
BODY: "body",
|
||||
HEAD: "head",
|
||||
HTML: "html",
|
||||
LINK: "link",
|
||||
META: "meta",
|
||||
NOSCRIPT: "noscript",
|
||||
SCRIPT: "script",
|
||||
STYLE: "style",
|
||||
TITLE: "title"
|
||||
};
|
||||
|
||||
var VALID_TAG_NAMES = exports.VALID_TAG_NAMES = Object.keys(TAG_NAMES).map(function (name) {
|
||||
return TAG_NAMES[name];
|
||||
});
|
||||
|
||||
var TAG_PROPERTIES = exports.TAG_PROPERTIES = {
|
||||
CHARSET: "charset",
|
||||
CSS_TEXT: "cssText",
|
||||
HREF: "href",
|
||||
HTTPEQUIV: "http-equiv",
|
||||
INNER_HTML: "innerHTML",
|
||||
ITEM_PROP: "itemprop",
|
||||
NAME: "name",
|
||||
PROPERTY: "property",
|
||||
REL: "rel",
|
||||
SRC: "src"
|
||||
};
|
||||
|
||||
var REACT_TAG_MAP = exports.REACT_TAG_MAP = {
|
||||
"accesskey": "accessKey",
|
||||
"charset": "charSet",
|
||||
"class": "className",
|
||||
"contenteditable": "contentEditable",
|
||||
"contextmenu": "contextMenu",
|
||||
"http-equiv": "httpEquiv",
|
||||
"itemprop": "itemProp",
|
||||
"tabindex": "tabIndex"
|
||||
};
|
||||
|
||||
var HELMET_PROPS = exports.HELMET_PROPS = {
|
||||
DEFAULT_TITLE: "defaultTitle",
|
||||
ENCODE_SPECIAL_CHARACTERS: "encodeSpecialCharacters",
|
||||
ON_CHANGE_CLIENT_STATE: "onChangeClientState",
|
||||
TITLE_TEMPLATE: "titleTemplate"
|
||||
};
|
||||
|
||||
var HTML_TAG_MAP = exports.HTML_TAG_MAP = Object.keys(REACT_TAG_MAP).reduce(function (obj, key) {
|
||||
obj[REACT_TAG_MAP[key]] = key;
|
||||
return obj;
|
||||
}, {});
|
||||
|
||||
var SELF_CLOSING_TAGS = exports.SELF_CLOSING_TAGS = [TAG_NAMES.NOSCRIPT, TAG_NAMES.SCRIPT, TAG_NAMES.STYLE];
|
||||
|
||||
var HELMET_ATTRIBUTE = exports.HELMET_ATTRIBUTE = "data-react-helmet";
|
||||
|
||||
|
||||
//////////////////
|
||||
// WEBPACK FOOTER
|
||||
// ./~/react-helmet/lib/HelmetConstants.js
|
||||
// module id = 1124
|
||||
// module chunks = 4
|
528
509bba0_unpacked_with_node_modules/~/react-helmet/lib/HelmetUtils.js
generated
vendored
Executable file
528
509bba0_unpacked_with_node_modules/~/react-helmet/lib/HelmetUtils.js
generated
vendored
Executable file
|
@ -0,0 +1,528 @@
|
|||
exports.__esModule = true;
|
||||
exports.warn = exports.requestIdleCallback = exports.reducePropsToState = exports.mapStateOnServer = exports.handleClientStateChange = exports.convertReactPropstoHtmlAttributes = undefined;
|
||||
|
||||
var _typeof = typeof Symbol === "function" && typeof Symbol.iterator === "symbol" ? function (obj) { return typeof obj; } : function (obj) { return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; };
|
||||
|
||||
var _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; };
|
||||
|
||||
var _react = require("react");
|
||||
|
||||
var _react2 = _interopRequireDefault(_react);
|
||||
|
||||
var _objectAssign = require("object-assign");
|
||||
|
||||
var _objectAssign2 = _interopRequireDefault(_objectAssign);
|
||||
|
||||
var _HelmetConstants = require("./HelmetConstants.js");
|
||||
|
||||
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
|
||||
|
||||
var encodeSpecialCharacters = function encodeSpecialCharacters(str) {
|
||||
var encode = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : true;
|
||||
|
||||
if (encode === false) {
|
||||
return String(str);
|
||||
}
|
||||
|
||||
return String(str).replace(/&/g, "&").replace(/</g, "<").replace(/>/g, ">").replace(/"/g, """).replace(/'/g, "'");
|
||||
};
|
||||
|
||||
var getTitleFromPropsList = function getTitleFromPropsList(propsList) {
|
||||
var innermostTitle = getInnermostProperty(propsList, _HelmetConstants.TAG_NAMES.TITLE);
|
||||
var innermostTemplate = getInnermostProperty(propsList, _HelmetConstants.HELMET_PROPS.TITLE_TEMPLATE);
|
||||
|
||||
if (innermostTemplate && innermostTitle) {
|
||||
// use function arg to avoid need to escape $ characters
|
||||
return innermostTemplate.replace(/%s/g, function () {
|
||||
return innermostTitle;
|
||||
});
|
||||
}
|
||||
|
||||
var innermostDefaultTitle = getInnermostProperty(propsList, _HelmetConstants.HELMET_PROPS.DEFAULT_TITLE);
|
||||
|
||||
return innermostTitle || innermostDefaultTitle || "";
|
||||
};
|
||||
|
||||
var getOnChangeClientState = function getOnChangeClientState(propsList) {
|
||||
return getInnermostProperty(propsList, _HelmetConstants.HELMET_PROPS.ON_CHANGE_CLIENT_STATE) || function () {};
|
||||
};
|
||||
|
||||
var getAttributesFromPropsList = function getAttributesFromPropsList(tagType, propsList) {
|
||||
return propsList.filter(function (props) {
|
||||
return typeof props[tagType] !== "undefined";
|
||||
}).map(function (props) {
|
||||
return props[tagType];
|
||||
}).reduce(function (tagAttrs, current) {
|
||||
return _extends({}, tagAttrs, current);
|
||||
}, {});
|
||||
};
|
||||
|
||||
var getBaseTagFromPropsList = function getBaseTagFromPropsList(primaryAttributes, propsList) {
|
||||
return propsList.filter(function (props) {
|
||||
return typeof props[_HelmetConstants.TAG_NAMES.BASE] !== "undefined";
|
||||
}).map(function (props) {
|
||||
return props[_HelmetConstants.TAG_NAMES.BASE];
|
||||
}).reverse().reduce(function (innermostBaseTag, tag) {
|
||||
if (!innermostBaseTag.length) {
|
||||
var keys = Object.keys(tag);
|
||||
|
||||
for (var i = 0; i < keys.length; i++) {
|
||||
var attributeKey = keys[i];
|
||||
var lowerCaseAttributeKey = attributeKey.toLowerCase();
|
||||
|
||||
if (primaryAttributes.indexOf(lowerCaseAttributeKey) !== -1 && tag[lowerCaseAttributeKey]) {
|
||||
return innermostBaseTag.concat(tag);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
return innermostBaseTag;
|
||||
}, []);
|
||||
};
|
||||
|
||||
var getTagsFromPropsList = function getTagsFromPropsList(tagName, primaryAttributes, propsList) {
|
||||
// Calculate list of tags, giving priority innermost component (end of the propslist)
|
||||
var approvedSeenTags = {};
|
||||
|
||||
return propsList.filter(function (props) {
|
||||
if (Array.isArray(props[tagName])) {
|
||||
return true;
|
||||
}
|
||||
if (typeof props[tagName] !== "undefined") {
|
||||
warn("Helmet: " + tagName + " should be of type \"Array\". Instead found type \"" + _typeof(props[tagName]) + "\"");
|
||||
}
|
||||
return false;
|
||||
}).map(function (props) {
|
||||
return props[tagName];
|
||||
}).reverse().reduce(function (approvedTags, instanceTags) {
|
||||
var instanceSeenTags = {};
|
||||
|
||||
instanceTags.filter(function (tag) {
|
||||
var primaryAttributeKey = void 0;
|
||||
var keys = Object.keys(tag);
|
||||
for (var i = 0; i < keys.length; i++) {
|
||||
var attributeKey = keys[i];
|
||||
var lowerCaseAttributeKey = attributeKey.toLowerCase();
|
||||
|
||||
// Special rule with link tags, since rel and href are both primary tags, rel takes priority
|
||||
if (primaryAttributes.indexOf(lowerCaseAttributeKey) !== -1 && !(primaryAttributeKey === _HelmetConstants.TAG_PROPERTIES.REL && tag[primaryAttributeKey].toLowerCase() === "canonical") && !(lowerCaseAttributeKey === _HelmetConstants.TAG_PROPERTIES.REL && tag[lowerCaseAttributeKey].toLowerCase() === "stylesheet")) {
|
||||
primaryAttributeKey = lowerCaseAttributeKey;
|
||||
}
|
||||
// Special case for innerHTML which doesn't work lowercased
|
||||
if (primaryAttributes.indexOf(attributeKey) !== -1 && (attributeKey === _HelmetConstants.TAG_PROPERTIES.INNER_HTML || attributeKey === _HelmetConstants.TAG_PROPERTIES.CSS_TEXT || attributeKey === _HelmetConstants.TAG_PROPERTIES.ITEM_PROP)) {
|
||||
primaryAttributeKey = attributeKey;
|
||||
}
|
||||
}
|
||||
|
||||
if (!primaryAttributeKey || !tag[primaryAttributeKey]) {
|
||||
return false;
|
||||
}
|
||||
|
||||
var value = tag[primaryAttributeKey].toLowerCase();
|
||||
|
||||
if (!approvedSeenTags[primaryAttributeKey]) {
|
||||
approvedSeenTags[primaryAttributeKey] = {};
|
||||
}
|
||||
|
||||
if (!instanceSeenTags[primaryAttributeKey]) {
|
||||
instanceSeenTags[primaryAttributeKey] = {};
|
||||
}
|
||||
|
||||
if (!approvedSeenTags[primaryAttributeKey][value]) {
|
||||
instanceSeenTags[primaryAttributeKey][value] = true;
|
||||
return true;
|
||||
}
|
||||
|
||||
return false;
|
||||
}).reverse().forEach(function (tag) {
|
||||
return approvedTags.push(tag);
|
||||
});
|
||||
|
||||
// Update seen tags with tags from this instance
|
||||
var keys = Object.keys(instanceSeenTags);
|
||||
for (var i = 0; i < keys.length; i++) {
|
||||
var attributeKey = keys[i];
|
||||
var tagUnion = (0, _objectAssign2.default)({}, approvedSeenTags[attributeKey], instanceSeenTags[attributeKey]);
|
||||
|
||||
approvedSeenTags[attributeKey] = tagUnion;
|
||||
}
|
||||
|
||||
return approvedTags;
|
||||
}, []).reverse();
|
||||
};
|
||||
|
||||
var getInnermostProperty = function getInnermostProperty(propsList, property) {
|
||||
for (var i = propsList.length - 1; i >= 0; i--) {
|
||||
var props = propsList[i];
|
||||
|
||||
if (props.hasOwnProperty(property)) {
|
||||
return props[property];
|
||||
}
|
||||
}
|
||||
|
||||
return null;
|
||||
};
|
||||
|
||||
var reducePropsToState = function reducePropsToState(propsList) {
|
||||
return {
|
||||
baseTag: getBaseTagFromPropsList([_HelmetConstants.TAG_PROPERTIES.HREF], propsList),
|
||||
bodyAttributes: getAttributesFromPropsList(_HelmetConstants.ATTRIBUTE_NAMES.BODY, propsList),
|
||||
encode: getInnermostProperty(propsList, _HelmetConstants.HELMET_PROPS.ENCODE_SPECIAL_CHARACTERS),
|
||||
htmlAttributes: getAttributesFromPropsList(_HelmetConstants.ATTRIBUTE_NAMES.HTML, propsList),
|
||||
linkTags: getTagsFromPropsList(_HelmetConstants.TAG_NAMES.LINK, [_HelmetConstants.TAG_PROPERTIES.REL, _HelmetConstants.TAG_PROPERTIES.HREF], propsList),
|
||||
metaTags: getTagsFromPropsList(_HelmetConstants.TAG_NAMES.META, [_HelmetConstants.TAG_PROPERTIES.NAME, _HelmetConstants.TAG_PROPERTIES.CHARSET, _HelmetConstants.TAG_PROPERTIES.HTTPEQUIV, _HelmetConstants.TAG_PROPERTIES.PROPERTY, _HelmetConstants.TAG_PROPERTIES.ITEM_PROP], propsList),
|
||||
noscriptTags: getTagsFromPropsList(_HelmetConstants.TAG_NAMES.NOSCRIPT, [_HelmetConstants.TAG_PROPERTIES.INNER_HTML], propsList),
|
||||
onChangeClientState: getOnChangeClientState(propsList),
|
||||
scriptTags: getTagsFromPropsList(_HelmetConstants.TAG_NAMES.SCRIPT, [_HelmetConstants.TAG_PROPERTIES.SRC, _HelmetConstants.TAG_PROPERTIES.INNER_HTML], propsList),
|
||||
styleTags: getTagsFromPropsList(_HelmetConstants.TAG_NAMES.STYLE, [_HelmetConstants.TAG_PROPERTIES.CSS_TEXT], propsList),
|
||||
title: getTitleFromPropsList(propsList),
|
||||
titleAttributes: getAttributesFromPropsList(_HelmetConstants.ATTRIBUTE_NAMES.TITLE, propsList)
|
||||
};
|
||||
};
|
||||
|
||||
var requestIdleCallback = function () {
|
||||
if (typeof window !== "undefined" && typeof window.requestIdleCallback !== "undefined") {
|
||||
return window.requestIdleCallback;
|
||||
}
|
||||
|
||||
return function (cb) {
|
||||
var start = Date.now();
|
||||
return setTimeout(function () {
|
||||
cb({
|
||||
didTimeout: false,
|
||||
timeRemaining: function timeRemaining() {
|
||||
return Math.max(0, 50 - (Date.now() - start));
|
||||
}
|
||||
});
|
||||
}, 1);
|
||||
};
|
||||
}();
|
||||
|
||||
var cancelIdleCallback = function () {
|
||||
if (typeof window !== "undefined" && typeof window.cancelIdleCallback !== "undefined") {
|
||||
return window.cancelIdleCallback;
|
||||
}
|
||||
|
||||
return function (id) {
|
||||
return clearTimeout(id);
|
||||
};
|
||||
}();
|
||||
|
||||
var warn = function warn(msg) {
|
||||
return console && typeof console.warn === "function" && console.warn(msg);
|
||||
};
|
||||
|
||||
var _helmetIdleCallback = null;
|
||||
|
||||
var handleClientStateChange = function handleClientStateChange(newState) {
|
||||
var baseTag = newState.baseTag,
|
||||
bodyAttributes = newState.bodyAttributes,
|
||||
htmlAttributes = newState.htmlAttributes,
|
||||
linkTags = newState.linkTags,
|
||||
metaTags = newState.metaTags,
|
||||
noscriptTags = newState.noscriptTags,
|
||||
onChangeClientState = newState.onChangeClientState,
|
||||
scriptTags = newState.scriptTags,
|
||||
styleTags = newState.styleTags,
|
||||
title = newState.title,
|
||||
titleAttributes = newState.titleAttributes;
|
||||
|
||||
|
||||
if (_helmetIdleCallback) {
|
||||
cancelIdleCallback(_helmetIdleCallback);
|
||||
}
|
||||
|
||||
_helmetIdleCallback = requestIdleCallback(function () {
|
||||
updateAttributes(_HelmetConstants.TAG_NAMES.BODY, bodyAttributes);
|
||||
updateAttributes(_HelmetConstants.TAG_NAMES.HTML, htmlAttributes);
|
||||
|
||||
updateTitle(title, titleAttributes);
|
||||
|
||||
var tagUpdates = {
|
||||
baseTag: updateTags(_HelmetConstants.TAG_NAMES.BASE, baseTag),
|
||||
linkTags: updateTags(_HelmetConstants.TAG_NAMES.LINK, linkTags),
|
||||
metaTags: updateTags(_HelmetConstants.TAG_NAMES.META, metaTags),
|
||||
noscriptTags: updateTags(_HelmetConstants.TAG_NAMES.NOSCRIPT, noscriptTags),
|
||||
scriptTags: updateTags(_HelmetConstants.TAG_NAMES.SCRIPT, scriptTags),
|
||||
styleTags: updateTags(_HelmetConstants.TAG_NAMES.STYLE, styleTags)
|
||||
};
|
||||
|
||||
var addedTags = {};
|
||||
var removedTags = {};
|
||||
|
||||
Object.keys(tagUpdates).forEach(function (tagType) {
|
||||
var _tagUpdates$tagType = tagUpdates[tagType],
|
||||
newTags = _tagUpdates$tagType.newTags,
|
||||
oldTags = _tagUpdates$tagType.oldTags;
|
||||
|
||||
|
||||
if (newTags.length) {
|
||||
addedTags[tagType] = newTags;
|
||||
}
|
||||
if (oldTags.length) {
|
||||
removedTags[tagType] = tagUpdates[tagType].oldTags;
|
||||
}
|
||||
});
|
||||
|
||||
_helmetIdleCallback = null;
|
||||
onChangeClientState(newState, addedTags, removedTags);
|
||||
});
|
||||
};
|
||||
|
||||
var updateTitle = function updateTitle(title, attributes) {
|
||||
if (document.title !== title) {
|
||||
document.title = title;
|
||||
}
|
||||
|
||||
updateAttributes(_HelmetConstants.TAG_NAMES.TITLE, attributes);
|
||||
};
|
||||
|
||||
var updateAttributes = function updateAttributes(tagName, attributes) {
|
||||
var elementTag = document.getElementsByTagName(tagName)[0];
|
||||
|
||||
if (!elementTag) {
|
||||
return;
|
||||
}
|
||||
|
||||
var helmetAttributeString = elementTag.getAttribute(_HelmetConstants.HELMET_ATTRIBUTE);
|
||||
var helmetAttributes = helmetAttributeString ? helmetAttributeString.split(",") : [];
|
||||
var attributesToRemove = [].concat(helmetAttributes);
|
||||
var attributeKeys = Object.keys(attributes);
|
||||
|
||||
for (var i = 0; i < attributeKeys.length; i++) {
|
||||
var attribute = attributeKeys[i];
|
||||
var value = attributes[attribute] || "";
|
||||
|
||||
if (elementTag.getAttribute(attribute) !== value) {
|
||||
elementTag.setAttribute(attribute, value);
|
||||
}
|
||||
|
||||
if (helmetAttributes.indexOf(attribute) === -1) {
|
||||
helmetAttributes.push(attribute);
|
||||
}
|
||||
|
||||
var indexToSave = attributesToRemove.indexOf(attribute);
|
||||
if (indexToSave !== -1) {
|
||||
attributesToRemove.splice(indexToSave, 1);
|
||||
}
|
||||
}
|
||||
|
||||
for (var _i = attributesToRemove.length - 1; _i >= 0; _i--) {
|
||||
elementTag.removeAttribute(attributesToRemove[_i]);
|
||||
}
|
||||
|
||||
if (helmetAttributes.length === attributesToRemove.length) {
|
||||
elementTag.removeAttribute(_HelmetConstants.HELMET_ATTRIBUTE);
|
||||
} else if (elementTag.getAttribute(_HelmetConstants.HELMET_ATTRIBUTE) !== attributeKeys.join(",")) {
|
||||
elementTag.setAttribute(_HelmetConstants.HELMET_ATTRIBUTE, attributeKeys.join(","));
|
||||
}
|
||||
};
|
||||
|
||||
var updateTags = function updateTags(type, tags) {
|
||||
var headElement = document.head || document.querySelector(_HelmetConstants.TAG_NAMES.HEAD);
|
||||
var tagNodes = headElement.querySelectorAll(type + "[" + _HelmetConstants.HELMET_ATTRIBUTE + "]");
|
||||
var oldTags = Array.prototype.slice.call(tagNodes);
|
||||
var newTags = [];
|
||||
var indexToDelete = void 0;
|
||||
|
||||
if (tags && tags.length) {
|
||||
tags.forEach(function (tag) {
|
||||
var newElement = document.createElement(type);
|
||||
|
||||
for (var attribute in tag) {
|
||||
if (tag.hasOwnProperty(attribute)) {
|
||||
if (attribute === _HelmetConstants.TAG_PROPERTIES.INNER_HTML) {
|
||||
newElement.innerHTML = tag.innerHTML;
|
||||
} else if (attribute === _HelmetConstants.TAG_PROPERTIES.CSS_TEXT) {
|
||||
if (newElement.styleSheet) {
|
||||
newElement.styleSheet.cssText = tag.cssText;
|
||||
} else {
|
||||
newElement.appendChild(document.createTextNode(tag.cssText));
|
||||
}
|
||||
} else {
|
||||
var value = typeof tag[attribute] === "undefined" ? "" : tag[attribute];
|
||||
newElement.setAttribute(attribute, value);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
newElement.setAttribute(_HelmetConstants.HELMET_ATTRIBUTE, "true");
|
||||
|
||||
// Remove a duplicate tag from domTagstoRemove, so it isn't cleared.
|
||||
if (oldTags.some(function (existingTag, index) {
|
||||
indexToDelete = index;
|
||||
return newElement.isEqualNode(existingTag);
|
||||
})) {
|
||||
oldTags.splice(indexToDelete, 1);
|
||||
} else {
|
||||
newTags.push(newElement);
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
oldTags.forEach(function (tag) {
|
||||
return tag.parentNode.removeChild(tag);
|
||||
});
|
||||
newTags.forEach(function (tag) {
|
||||
return headElement.appendChild(tag);
|
||||
});
|
||||
|
||||
return {
|
||||
oldTags: oldTags,
|
||||
newTags: newTags
|
||||
};
|
||||
};
|
||||
|
||||
var generateElementAttributesAsString = function generateElementAttributesAsString(attributes) {
|
||||
return Object.keys(attributes).reduce(function (str, key) {
|
||||
var attr = typeof attributes[key] !== "undefined" ? key + "=\"" + attributes[key] + "\"" : "" + key;
|
||||
return str ? str + " " + attr : attr;
|
||||
}, "");
|
||||
};
|
||||
|
||||
var generateTitleAsString = function generateTitleAsString(type, title, attributes, encode) {
|
||||
var attributeString = generateElementAttributesAsString(attributes);
|
||||
return attributeString ? "<" + type + " " + _HelmetConstants.HELMET_ATTRIBUTE + "=\"true\" " + attributeString + ">" + encodeSpecialCharacters(title, encode) + "</" + type + ">" : "<" + type + " " + _HelmetConstants.HELMET_ATTRIBUTE + "=\"true\">" + encodeSpecialCharacters(title, encode) + "</" + type + ">";
|
||||
};
|
||||
|
||||
var generateTagsAsString = function generateTagsAsString(type, tags, encode) {
|
||||
return tags.reduce(function (str, tag) {
|
||||
var attributeHtml = Object.keys(tag).filter(function (attribute) {
|
||||
return !(attribute === _HelmetConstants.TAG_PROPERTIES.INNER_HTML || attribute === _HelmetConstants.TAG_PROPERTIES.CSS_TEXT);
|
||||
}).reduce(function (string, attribute) {
|
||||
var attr = typeof tag[attribute] === "undefined" ? attribute : attribute + "=\"" + encodeSpecialCharacters(tag[attribute], encode) + "\"";
|
||||
return string ? string + " " + attr : attr;
|
||||
}, "");
|
||||
|
||||
var tagContent = tag.innerHTML || tag.cssText || "";
|
||||
|
||||
var isSelfClosing = _HelmetConstants.SELF_CLOSING_TAGS.indexOf(type) === -1;
|
||||
|
||||
return str + "<" + type + " " + _HelmetConstants.HELMET_ATTRIBUTE + "=\"true\" " + attributeHtml + (isSelfClosing ? "/>" : ">" + tagContent + "</" + type + ">");
|
||||
}, "");
|
||||
};
|
||||
|
||||
var convertElementAttributestoReactProps = function convertElementAttributestoReactProps(attributes) {
|
||||
var initProps = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};
|
||||
|
||||
return Object.keys(attributes).reduce(function (obj, key) {
|
||||
obj[_HelmetConstants.REACT_TAG_MAP[key] || key] = attributes[key];
|
||||
return obj;
|
||||
}, initProps);
|
||||
};
|
||||
|
||||
var convertReactPropstoHtmlAttributes = function convertReactPropstoHtmlAttributes(props) {
|
||||
var initAttributes = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};
|
||||
|
||||
return Object.keys(props).reduce(function (obj, key) {
|
||||
obj[_HelmetConstants.HTML_TAG_MAP[key] || key] = props[key];
|
||||
return obj;
|
||||
}, initAttributes);
|
||||
};
|
||||
|
||||
var generateTitleAsReactComponent = function generateTitleAsReactComponent(type, title, attributes) {
|
||||
var _initProps;
|
||||
|
||||
// assigning into an array to define toString function on it
|
||||
var initProps = (_initProps = {
|
||||
key: title
|
||||
}, _initProps[_HelmetConstants.HELMET_ATTRIBUTE] = true, _initProps);
|
||||
var props = convertElementAttributestoReactProps(attributes, initProps);
|
||||
|
||||
return [_react2.default.createElement(_HelmetConstants.TAG_NAMES.TITLE, props, title)];
|
||||
};
|
||||
|
||||
var generateTagsAsReactComponent = function generateTagsAsReactComponent(type, tags) {
|
||||
return tags.map(function (tag, i) {
|
||||
var _mappedTag;
|
||||
|
||||
var mappedTag = (_mappedTag = {
|
||||
key: i
|
||||
}, _mappedTag[_HelmetConstants.HELMET_ATTRIBUTE] = true, _mappedTag);
|
||||
|
||||
Object.keys(tag).forEach(function (attribute) {
|
||||
var mappedAttribute = _HelmetConstants.REACT_TAG_MAP[attribute] || attribute;
|
||||
|
||||
if (mappedAttribute === _HelmetConstants.TAG_PROPERTIES.INNER_HTML || mappedAttribute === _HelmetConstants.TAG_PROPERTIES.CSS_TEXT) {
|
||||
var content = tag.innerHTML || tag.cssText;
|
||||
mappedTag.dangerouslySetInnerHTML = { __html: content };
|
||||
} else {
|
||||
mappedTag[mappedAttribute] = tag[attribute];
|
||||
}
|
||||
});
|
||||
|
||||
return _react2.default.createElement(type, mappedTag);
|
||||
});
|
||||
};
|
||||
|
||||
var getMethodsForTag = function getMethodsForTag(type, tags, encode) {
|
||||
switch (type) {
|
||||
case _HelmetConstants.TAG_NAMES.TITLE:
|
||||
return {
|
||||
toComponent: function toComponent() {
|
||||
return generateTitleAsReactComponent(type, tags.title, tags.titleAttributes, encode);
|
||||
},
|
||||
toString: function toString() {
|
||||
return generateTitleAsString(type, tags.title, tags.titleAttributes, encode);
|
||||
}
|
||||
};
|
||||
case _HelmetConstants.ATTRIBUTE_NAMES.BODY:
|
||||
case _HelmetConstants.ATTRIBUTE_NAMES.HTML:
|
||||
return {
|
||||
toComponent: function toComponent() {
|
||||
return convertElementAttributestoReactProps(tags);
|
||||
},
|
||||
toString: function toString() {
|
||||
return generateElementAttributesAsString(tags);
|
||||
}
|
||||
};
|
||||
default:
|
||||
return {
|
||||
toComponent: function toComponent() {
|
||||
return generateTagsAsReactComponent(type, tags);
|
||||
},
|
||||
toString: function toString() {
|
||||
return generateTagsAsString(type, tags, encode);
|
||||
}
|
||||
};
|
||||
}
|
||||
};
|
||||
|
||||
var mapStateOnServer = function mapStateOnServer(_ref) {
|
||||
var baseTag = _ref.baseTag,
|
||||
bodyAttributes = _ref.bodyAttributes,
|
||||
encode = _ref.encode,
|
||||
htmlAttributes = _ref.htmlAttributes,
|
||||
linkTags = _ref.linkTags,
|
||||
metaTags = _ref.metaTags,
|
||||
noscriptTags = _ref.noscriptTags,
|
||||
scriptTags = _ref.scriptTags,
|
||||
styleTags = _ref.styleTags,
|
||||
title = _ref.title,
|
||||
titleAttributes = _ref.titleAttributes;
|
||||
return {
|
||||
base: getMethodsForTag(_HelmetConstants.TAG_NAMES.BASE, baseTag, encode),
|
||||
bodyAttributes: getMethodsForTag(_HelmetConstants.ATTRIBUTE_NAMES.BODY, bodyAttributes, encode),
|
||||
htmlAttributes: getMethodsForTag(_HelmetConstants.ATTRIBUTE_NAMES.HTML, htmlAttributes, encode),
|
||||
link: getMethodsForTag(_HelmetConstants.TAG_NAMES.LINK, linkTags, encode),
|
||||
meta: getMethodsForTag(_HelmetConstants.TAG_NAMES.META, metaTags, encode),
|
||||
noscript: getMethodsForTag(_HelmetConstants.TAG_NAMES.NOSCRIPT, noscriptTags, encode),
|
||||
script: getMethodsForTag(_HelmetConstants.TAG_NAMES.SCRIPT, scriptTags, encode),
|
||||
style: getMethodsForTag(_HelmetConstants.TAG_NAMES.STYLE, styleTags, encode),
|
||||
title: getMethodsForTag(_HelmetConstants.TAG_NAMES.TITLE, { title: title, titleAttributes: titleAttributes }, encode)
|
||||
};
|
||||
};
|
||||
|
||||
exports.convertReactPropstoHtmlAttributes = convertReactPropstoHtmlAttributes;
|
||||
exports.handleClientStateChange = handleClientStateChange;
|
||||
exports.mapStateOnServer = mapStateOnServer;
|
||||
exports.reducePropsToState = reducePropsToState;
|
||||
exports.requestIdleCallback = requestIdleCallback;
|
||||
exports.warn = warn;
|
||||
|
||||
|
||||
//////////////////
|
||||
// WEBPACK FOOTER
|
||||
// ./~/react-helmet/lib/HelmetUtils.js
|
||||
// module id = 2764
|
||||
// module chunks = 4
|
Loading…
Add table
Add a link
Reference in a new issue