{"version":3,"file":"static/js/490.b463f391.chunk.js","mappings":"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","sources":["../node_modules/react-helmet-async/src/constants.js","../node_modules/react-helmet-async/src/utils.js","../node_modules/react-helmet-async/src/server.js","../node_modules/react-helmet-async/src/HelmetData.js","../node_modules/react-helmet-async/src/Provider.js","../node_modules/react-helmet-async/src/client.js","../node_modules/react-helmet-async/src/Dispatcher.js","../node_modules/react-helmet-async/src/index.js","../node_modules/shallowequal/index.js"],"sourcesContent":["export const TAG_PROPERTIES = {\n CHARSET: 'charset',\n CSS_TEXT: 'cssText',\n HREF: 'href',\n HTTPEQUIV: 'http-equiv',\n INNER_HTML: 'innerHTML',\n ITEM_PROP: 'itemprop',\n NAME: 'name',\n PROPERTY: 'property',\n REL: 'rel',\n SRC: 'src',\n};\n\nexport const ATTRIBUTE_NAMES = {\n BODY: 'bodyAttributes',\n HTML: 'htmlAttributes',\n TITLE: 'titleAttributes',\n};\n\nexport const TAG_NAMES = {\n BASE: 'base',\n BODY: 'body',\n HEAD: 'head',\n HTML: 'html',\n LINK: 'link',\n META: 'meta',\n NOSCRIPT: 'noscript',\n SCRIPT: 'script',\n STYLE: 'style',\n TITLE: 'title',\n FRAGMENT: 'Symbol(react.fragment)',\n};\n\nexport const SEO_PRIORITY_TAGS = {\n link: { rel: ['amphtml', 'canonical', 'alternate'] },\n script: { type: ['application/ld+json'] },\n meta: {\n charset: '',\n name: ['robots', 'description'],\n property: [\n 'og:type',\n 'og:title',\n 'og:url',\n 'og:image',\n 'og:image:alt',\n 'og:description',\n 'twitter:url',\n 'twitter:title',\n 'twitter:description',\n 'twitter:image',\n 'twitter:image:alt',\n 'twitter:card',\n 'twitter:site',\n ],\n },\n};\n\nexport const VALID_TAG_NAMES = Object.keys(TAG_NAMES).map(name => TAG_NAMES[name]);\n\nexport const REACT_TAG_MAP = {\n accesskey: 'accessKey',\n charset: 'charSet',\n class: 'className',\n contenteditable: 'contentEditable',\n contextmenu: 'contextMenu',\n 'http-equiv': 'httpEquiv',\n itemprop: 'itemProp',\n tabindex: 'tabIndex',\n};\n\nexport const HTML_TAG_MAP = Object.keys(REACT_TAG_MAP).reduce((obj, key) => {\n obj[REACT_TAG_MAP[key]] = key;\n return obj;\n}, {});\n\nexport const HELMET_ATTRIBUTE = 'data-rh';\n","import { TAG_NAMES, TAG_PROPERTIES, ATTRIBUTE_NAMES } from './constants';\n\nconst HELMET_PROPS = {\n DEFAULT_TITLE: 'defaultTitle',\n DEFER: 'defer',\n ENCODE_SPECIAL_CHARACTERS: 'encodeSpecialCharacters',\n ON_CHANGE_CLIENT_STATE: 'onChangeClientState',\n TITLE_TEMPLATE: 'titleTemplate',\n PRIORITIZE_SEO_TAGS: 'prioritizeSeoTags',\n};\n\nconst getInnermostProperty = (propsList, property) => {\n for (let i = propsList.length - 1; i >= 0; i -= 1) {\n const props = propsList[i];\n\n if (Object.prototype.hasOwnProperty.call(props, property)) {\n return props[property];\n }\n }\n\n return null;\n};\n\nconst getTitleFromPropsList = propsList => {\n let innermostTitle = getInnermostProperty(propsList, TAG_NAMES.TITLE);\n const innermostTemplate = getInnermostProperty(propsList, HELMET_PROPS.TITLE_TEMPLATE);\n if (Array.isArray(innermostTitle)) {\n innermostTitle = innermostTitle.join('');\n }\n if (innermostTemplate && innermostTitle) {\n // use function arg to avoid need to escape $ characters\n return innermostTemplate.replace(/%s/g, () => innermostTitle);\n }\n\n const innermostDefaultTitle = getInnermostProperty(propsList, HELMET_PROPS.DEFAULT_TITLE);\n\n return innermostTitle || innermostDefaultTitle || undefined;\n};\n\nconst getOnChangeClientState = propsList =>\n getInnermostProperty(propsList, HELMET_PROPS.ON_CHANGE_CLIENT_STATE) || (() => {});\n\nconst getAttributesFromPropsList = (tagType, propsList) =>\n propsList\n .filter(props => typeof props[tagType] !== 'undefined')\n .map(props => props[tagType])\n .reduce((tagAttrs, current) => ({ ...tagAttrs, ...current }), {});\n\nconst getBaseTagFromPropsList = (primaryAttributes, propsList) =>\n propsList\n .filter(props => typeof props[TAG_NAMES.BASE] !== 'undefined')\n .map(props => props[TAG_NAMES.BASE])\n .reverse()\n .reduce((innermostBaseTag, tag) => {\n if (!innermostBaseTag.length) {\n const keys = Object.keys(tag);\n\n for (let i = 0; i < keys.length; i += 1) {\n const attributeKey = keys[i];\n const lowerCaseAttributeKey = attributeKey.toLowerCase();\n\n if (\n primaryAttributes.indexOf(lowerCaseAttributeKey) !== -1 &&\n tag[lowerCaseAttributeKey]\n ) {\n return innermostBaseTag.concat(tag);\n }\n }\n }\n\n return innermostBaseTag;\n }, []);\n\n// eslint-disable-next-line no-console\nconst warn = msg => console && typeof console.warn === 'function' && console.warn(msg);\n\nconst getTagsFromPropsList = (tagName, primaryAttributes, propsList) => {\n // Calculate list of tags, giving priority innermost component (end of the propslist)\n const approvedSeenTags = {};\n\n return propsList\n .filter(props => {\n if (Array.isArray(props[tagName])) {\n return true;\n }\n if (typeof props[tagName] !== 'undefined') {\n warn(\n `Helmet: ${tagName} should be of type \"Array\". Instead found type \"${typeof props[\n tagName\n ]}\"`\n );\n }\n return false;\n })\n .map(props => props[tagName])\n .reverse()\n .reduce((approvedTags, instanceTags) => {\n const instanceSeenTags = {};\n\n instanceTags\n .filter(tag => {\n let primaryAttributeKey;\n const keys = Object.keys(tag);\n for (let i = 0; i < keys.length; i += 1) {\n const attributeKey = keys[i];\n const lowerCaseAttributeKey = attributeKey.toLowerCase();\n\n // Special rule with link tags, since rel and href are both primary tags, rel takes priority\n if (\n primaryAttributes.indexOf(lowerCaseAttributeKey) !== -1 &&\n !(\n primaryAttributeKey === TAG_PROPERTIES.REL &&\n tag[primaryAttributeKey].toLowerCase() === 'canonical'\n ) &&\n !(\n lowerCaseAttributeKey === TAG_PROPERTIES.REL &&\n tag[lowerCaseAttributeKey].toLowerCase() === 'stylesheet'\n )\n ) {\n primaryAttributeKey = lowerCaseAttributeKey;\n }\n // Special case for innerHTML which doesn't work lowercased\n if (\n primaryAttributes.indexOf(attributeKey) !== -1 &&\n (attributeKey === TAG_PROPERTIES.INNER_HTML ||\n attributeKey === TAG_PROPERTIES.CSS_TEXT ||\n attributeKey === TAG_PROPERTIES.ITEM_PROP)\n ) {\n primaryAttributeKey = attributeKey;\n }\n }\n\n if (!primaryAttributeKey || !tag[primaryAttributeKey]) {\n return false;\n }\n\n const value = tag[primaryAttributeKey].toLowerCase();\n\n if (!approvedSeenTags[primaryAttributeKey]) {\n approvedSeenTags[primaryAttributeKey] = {};\n }\n\n if (!instanceSeenTags[primaryAttributeKey]) {\n instanceSeenTags[primaryAttributeKey] = {};\n }\n\n if (!approvedSeenTags[primaryAttributeKey][value]) {\n instanceSeenTags[primaryAttributeKey][value] = true;\n return true;\n }\n\n return false;\n })\n .reverse()\n .forEach(tag => approvedTags.push(tag));\n\n // Update seen tags with tags from this instance\n const keys = Object.keys(instanceSeenTags);\n for (let i = 0; i < keys.length; i += 1) {\n const attributeKey = keys[i];\n const tagUnion = {\n ...approvedSeenTags[attributeKey],\n ...instanceSeenTags[attributeKey],\n };\n\n approvedSeenTags[attributeKey] = tagUnion;\n }\n\n return approvedTags;\n }, [])\n .reverse();\n};\n\nconst getAnyTrueFromPropsList = (propsList, checkedTag) => {\n if (Array.isArray(propsList) && propsList.length) {\n for (let index = 0; index < propsList.length; index += 1) {\n const prop = propsList[index];\n if (prop[checkedTag]) {\n return true;\n }\n }\n }\n return false;\n};\n\nconst reducePropsToState = propsList => ({\n baseTag: getBaseTagFromPropsList([TAG_PROPERTIES.HREF], propsList),\n bodyAttributes: getAttributesFromPropsList(ATTRIBUTE_NAMES.BODY, propsList),\n defer: getInnermostProperty(propsList, HELMET_PROPS.DEFER),\n encode: getInnermostProperty(propsList, HELMET_PROPS.ENCODE_SPECIAL_CHARACTERS),\n htmlAttributes: getAttributesFromPropsList(ATTRIBUTE_NAMES.HTML, propsList),\n linkTags: getTagsFromPropsList(\n TAG_NAMES.LINK,\n [TAG_PROPERTIES.REL, TAG_PROPERTIES.HREF],\n propsList\n ),\n metaTags: getTagsFromPropsList(\n TAG_NAMES.META,\n [\n TAG_PROPERTIES.NAME,\n TAG_PROPERTIES.CHARSET,\n TAG_PROPERTIES.HTTPEQUIV,\n TAG_PROPERTIES.PROPERTY,\n TAG_PROPERTIES.ITEM_PROP,\n ],\n propsList\n ),\n noscriptTags: getTagsFromPropsList(TAG_NAMES.NOSCRIPT, [TAG_PROPERTIES.INNER_HTML], propsList),\n onChangeClientState: getOnChangeClientState(propsList),\n scriptTags: getTagsFromPropsList(\n TAG_NAMES.SCRIPT,\n [TAG_PROPERTIES.SRC, TAG_PROPERTIES.INNER_HTML],\n propsList\n ),\n styleTags: getTagsFromPropsList(TAG_NAMES.STYLE, [TAG_PROPERTIES.CSS_TEXT], propsList),\n title: getTitleFromPropsList(propsList),\n titleAttributes: getAttributesFromPropsList(ATTRIBUTE_NAMES.TITLE, propsList),\n prioritizeSeoTags: getAnyTrueFromPropsList(propsList, HELMET_PROPS.PRIORITIZE_SEO_TAGS),\n});\n\nexport const flattenArray = possibleArray =>\n Array.isArray(possibleArray) ? possibleArray.join('') : possibleArray;\n\nexport { reducePropsToState };\n\nconst checkIfPropsMatch = (props, toMatch) => {\n const keys = Object.keys(props);\n for (let i = 0; i < keys.length; i += 1) {\n // e.g. if rel exists in the list of allowed props [amphtml, alternate, etc]\n if (toMatch[keys[i]] && toMatch[keys[i]].includes(props[keys[i]])) {\n return true;\n }\n }\n return false;\n};\n\nexport const prioritizer = (elementsList, propsToMatch) => {\n if (Array.isArray(elementsList)) {\n return elementsList.reduce(\n (acc, elementAttrs) => {\n if (checkIfPropsMatch(elementAttrs, propsToMatch)) {\n acc.priority.push(elementAttrs);\n } else {\n acc.default.push(elementAttrs);\n }\n return acc;\n },\n { priority: [], default: [] }\n );\n }\n return { default: elementsList };\n};\n\nexport const without = (obj, key) => {\n return {\n ...obj,\n [key]: undefined,\n };\n};\n","import React from 'react';\nimport {\n HELMET_ATTRIBUTE,\n TAG_NAMES,\n REACT_TAG_MAP,\n TAG_PROPERTIES,\n ATTRIBUTE_NAMES,\n SEO_PRIORITY_TAGS,\n} from './constants';\nimport { flattenArray, prioritizer } from './utils';\n\nconst SELF_CLOSING_TAGS = [TAG_NAMES.NOSCRIPT, TAG_NAMES.SCRIPT, TAG_NAMES.STYLE];\n\nconst encodeSpecialCharacters = (str, encode = true) => {\n if (encode === false) {\n return String(str);\n }\n\n return String(str)\n .replace(/&/g, '&')\n .replace(//g, '>')\n .replace(/\"/g, '"')\n .replace(/'/g, ''');\n};\n\nconst generateElementAttributesAsString = attributes =>\n Object.keys(attributes).reduce((str, key) => {\n const attr = typeof attributes[key] !== 'undefined' ? `${key}=\"${attributes[key]}\"` : `${key}`;\n return str ? `${str} ${attr}` : attr;\n }, '');\n\nconst generateTitleAsString = (type, title, attributes, encode) => {\n const attributeString = generateElementAttributesAsString(attributes);\n const flattenedTitle = flattenArray(title);\n return attributeString\n ? `<${type} ${HELMET_ATTRIBUTE}=\"true\" ${attributeString}>${encodeSpecialCharacters(\n flattenedTitle,\n encode\n )}${type}>`\n : `<${type} ${HELMET_ATTRIBUTE}=\"true\">${encodeSpecialCharacters(\n flattenedTitle,\n encode\n )}${type}>`;\n};\n\nconst generateTagsAsString = (type, tags, encode) =>\n tags.reduce((str, tag) => {\n const attributeHtml = Object.keys(tag)\n .filter(\n attribute =>\n !(attribute === TAG_PROPERTIES.INNER_HTML || attribute === TAG_PROPERTIES.CSS_TEXT)\n )\n .reduce((string, attribute) => {\n const attr =\n typeof tag[attribute] === 'undefined'\n ? attribute\n : `${attribute}=\"${encodeSpecialCharacters(tag[attribute], encode)}\"`;\n return string ? `${string} ${attr}` : attr;\n }, '');\n\n const tagContent = tag.innerHTML || tag.cssText || '';\n\n const isSelfClosing = SELF_CLOSING_TAGS.indexOf(type) === -1;\n\n return `${str}<${type} ${HELMET_ATTRIBUTE}=\"true\" ${attributeHtml}${\n isSelfClosing ? `/>` : `>${tagContent}${type}>`\n }`;\n }, '');\n\nconst convertElementAttributesToReactProps = (attributes, initProps = {}) =>\n Object.keys(attributes).reduce((obj, key) => {\n obj[REACT_TAG_MAP[key] || key] = attributes[key];\n return obj;\n }, initProps);\n\nconst generateTitleAsReactComponent = (type, title, attributes) => {\n // assigning into an array to define toString function on it\n const initProps = {\n key: title,\n [HELMET_ATTRIBUTE]: true,\n };\n const props = convertElementAttributesToReactProps(attributes, initProps);\n\n return [React.createElement(TAG_NAMES.TITLE, props, title)];\n};\n\nconst generateTagsAsReactComponent = (type, tags) =>\n tags.map((tag, i) => {\n const mappedTag = {\n key: i,\n [HELMET_ATTRIBUTE]: true,\n };\n\n Object.keys(tag).forEach(attribute => {\n const mappedAttribute = REACT_TAG_MAP[attribute] || attribute;\n\n if (\n mappedAttribute === TAG_PROPERTIES.INNER_HTML ||\n mappedAttribute === TAG_PROPERTIES.CSS_TEXT\n ) {\n const content = tag.innerHTML || tag.cssText;\n mappedTag.dangerouslySetInnerHTML = { __html: content };\n } else {\n mappedTag[mappedAttribute] = tag[attribute];\n }\n });\n\n return React.createElement(type, mappedTag);\n });\n\nconst getMethodsForTag = (type, tags, encode) => {\n switch (type) {\n case TAG_NAMES.TITLE:\n return {\n toComponent: () =>\n generateTitleAsReactComponent(type, tags.title, tags.titleAttributes, encode),\n toString: () => generateTitleAsString(type, tags.title, tags.titleAttributes, encode),\n };\n case ATTRIBUTE_NAMES.BODY:\n case ATTRIBUTE_NAMES.HTML:\n return {\n toComponent: () => convertElementAttributesToReactProps(tags),\n toString: () => generateElementAttributesAsString(tags),\n };\n default:\n return {\n toComponent: () => generateTagsAsReactComponent(type, tags),\n toString: () => generateTagsAsString(type, tags, encode),\n };\n }\n};\n\nconst getPriorityMethods = ({ metaTags, linkTags, scriptTags, encode }) => {\n const meta = prioritizer(metaTags, SEO_PRIORITY_TAGS.meta);\n const link = prioritizer(linkTags, SEO_PRIORITY_TAGS.link);\n const script = prioritizer(scriptTags, SEO_PRIORITY_TAGS.script);\n\n // need to have toComponent() and toString()\n const priorityMethods = {\n toComponent: () => [\n ...generateTagsAsReactComponent(TAG_NAMES.META, meta.priority),\n ...generateTagsAsReactComponent(TAG_NAMES.LINK, link.priority),\n ...generateTagsAsReactComponent(TAG_NAMES.SCRIPT, script.priority),\n ],\n toString: () =>\n // generate all the tags as strings and concatenate them\n `${getMethodsForTag(TAG_NAMES.META, meta.priority, encode)} ${getMethodsForTag(\n TAG_NAMES.LINK,\n link.priority,\n encode\n )} ${getMethodsForTag(TAG_NAMES.SCRIPT, script.priority, encode)}`,\n };\n\n return {\n priorityMethods,\n metaTags: meta.default,\n linkTags: link.default,\n scriptTags: script.default,\n };\n};\n\nconst mapStateOnServer = props => {\n const {\n baseTag,\n bodyAttributes,\n encode,\n htmlAttributes,\n noscriptTags,\n styleTags,\n title = '',\n titleAttributes,\n prioritizeSeoTags,\n } = props;\n let { linkTags, metaTags, scriptTags } = props;\n let priorityMethods = {\n toComponent: () => {},\n toString: () => '',\n };\n if (prioritizeSeoTags) {\n ({ priorityMethods, linkTags, metaTags, scriptTags } = getPriorityMethods(props));\n }\n return {\n priority: priorityMethods,\n base: getMethodsForTag(TAG_NAMES.BASE, baseTag, encode),\n bodyAttributes: getMethodsForTag(ATTRIBUTE_NAMES.BODY, bodyAttributes, encode),\n htmlAttributes: getMethodsForTag(ATTRIBUTE_NAMES.HTML, htmlAttributes, encode),\n link: getMethodsForTag(TAG_NAMES.LINK, linkTags, encode),\n meta: getMethodsForTag(TAG_NAMES.META, metaTags, encode),\n noscript: getMethodsForTag(TAG_NAMES.NOSCRIPT, noscriptTags, encode),\n script: getMethodsForTag(TAG_NAMES.SCRIPT, scriptTags, encode),\n style: getMethodsForTag(TAG_NAMES.STYLE, styleTags, encode),\n title: getMethodsForTag(TAG_NAMES.TITLE, { title, titleAttributes }, encode),\n };\n};\n\nexport default mapStateOnServer;\n","import mapStateOnServer from './server';\n\nconst instances = [];\n\nexport function clearInstances() {\n instances.length = 0;\n}\n\nexport default class HelmetData {\n instances = [];\n\n value = {\n setHelmet: serverState => {\n this.context.helmet = serverState;\n },\n helmetInstances: {\n get: () => (this.canUseDOM ? instances : this.instances),\n add: instance => {\n (this.canUseDOM ? instances : this.instances).push(instance);\n },\n remove: instance => {\n const index = (this.canUseDOM ? instances : this.instances).indexOf(instance);\n (this.canUseDOM ? instances : this.instances).splice(index, 1);\n },\n },\n };\n\n constructor(context, canUseDOM = typeof document !== 'undefined') {\n this.context = context;\n this.canUseDOM = canUseDOM;\n\n if (!canUseDOM) {\n context.helmet = mapStateOnServer({\n baseTag: [],\n bodyAttributes: {},\n encodeSpecialCharacters: true,\n htmlAttributes: {},\n linkTags: [],\n metaTags: [],\n noscriptTags: [],\n scriptTags: [],\n styleTags: [],\n title: '',\n titleAttributes: {},\n });\n }\n }\n}\n","import React, { Component } from 'react';\nimport PropTypes from 'prop-types';\nimport HelmetData from './HelmetData';\n\nconst defaultValue = {};\n\nexport const Context = React.createContext(defaultValue);\n\nexport const providerShape = PropTypes.shape({\n setHelmet: PropTypes.func,\n helmetInstances: PropTypes.shape({\n get: PropTypes.func,\n add: PropTypes.func,\n remove: PropTypes.func,\n }),\n});\n\nconst canUseDOM = typeof document !== 'undefined';\n\nexport default class Provider extends Component {\n static canUseDOM = canUseDOM;\n\n static propTypes = {\n context: PropTypes.shape({\n helmet: PropTypes.shape(),\n }),\n children: PropTypes.node.isRequired,\n };\n\n static defaultProps = {\n context: {},\n };\n\n static displayName = 'HelmetProvider';\n\n constructor(props) {\n super(props);\n\n this.helmetData = new HelmetData(this.props.context, Provider.canUseDOM);\n }\n\n render() {\n return {this.props.children};\n }\n}\n","import { HELMET_ATTRIBUTE, TAG_NAMES, TAG_PROPERTIES } from './constants';\nimport { flattenArray } from './utils';\n\nconst updateTags = (type, tags) => {\n const headElement = document.head || document.querySelector(TAG_NAMES.HEAD);\n const tagNodes = headElement.querySelectorAll(`${type}[${HELMET_ATTRIBUTE}]`);\n const oldTags = [].slice.call(tagNodes);\n const newTags = [];\n let indexToDelete;\n\n if (tags && tags.length) {\n tags.forEach(tag => {\n const newElement = document.createElement(type);\n\n // eslint-disable-next-line\n for (const attribute in tag) {\n if (Object.prototype.hasOwnProperty.call(tag, attribute)) {\n if (attribute === TAG_PROPERTIES.INNER_HTML) {\n newElement.innerHTML = tag.innerHTML;\n } else if (attribute === TAG_PROPERTIES.CSS_TEXT) {\n if (newElement.styleSheet) {\n newElement.styleSheet.cssText = tag.cssText;\n } else {\n newElement.appendChild(document.createTextNode(tag.cssText));\n }\n } else {\n const value = typeof tag[attribute] === 'undefined' ? '' : tag[attribute];\n newElement.setAttribute(attribute, value);\n }\n }\n }\n\n newElement.setAttribute(HELMET_ATTRIBUTE, 'true');\n\n // Remove a duplicate tag from domTagstoRemove, so it isn't cleared.\n if (\n oldTags.some((existingTag, index) => {\n indexToDelete = index;\n return newElement.isEqualNode(existingTag);\n })\n ) {\n oldTags.splice(indexToDelete, 1);\n } else {\n newTags.push(newElement);\n }\n });\n }\n\n oldTags.forEach(tag => tag.parentNode.removeChild(tag));\n newTags.forEach(tag => headElement.appendChild(tag));\n\n return {\n oldTags,\n newTags,\n };\n};\n\nconst updateAttributes = (tagName, attributes) => {\n const elementTag = document.getElementsByTagName(tagName)[0];\n\n if (!elementTag) {\n return;\n }\n\n const helmetAttributeString = elementTag.getAttribute(HELMET_ATTRIBUTE);\n const helmetAttributes = helmetAttributeString ? helmetAttributeString.split(',') : [];\n const attributesToRemove = [].concat(helmetAttributes);\n const attributeKeys = Object.keys(attributes);\n\n for (let i = 0; i < attributeKeys.length; i += 1) {\n const attribute = attributeKeys[i];\n const value = attributes[attribute] || '';\n\n if (elementTag.getAttribute(attribute) !== value) {\n elementTag.setAttribute(attribute, value);\n }\n\n if (helmetAttributes.indexOf(attribute) === -1) {\n helmetAttributes.push(attribute);\n }\n\n const indexToSave = attributesToRemove.indexOf(attribute);\n if (indexToSave !== -1) {\n attributesToRemove.splice(indexToSave, 1);\n }\n }\n\n for (let i = attributesToRemove.length - 1; i >= 0; i -= 1) {\n elementTag.removeAttribute(attributesToRemove[i]);\n }\n\n if (helmetAttributes.length === attributesToRemove.length) {\n elementTag.removeAttribute(HELMET_ATTRIBUTE);\n } else if (elementTag.getAttribute(HELMET_ATTRIBUTE) !== attributeKeys.join(',')) {\n elementTag.setAttribute(HELMET_ATTRIBUTE, attributeKeys.join(','));\n }\n};\n\nconst updateTitle = (title, attributes) => {\n if (typeof title !== 'undefined' && document.title !== title) {\n document.title = flattenArray(title);\n }\n\n updateAttributes(TAG_NAMES.TITLE, attributes);\n};\n\nconst commitTagChanges = (newState, cb) => {\n const {\n baseTag,\n bodyAttributes,\n htmlAttributes,\n linkTags,\n metaTags,\n noscriptTags,\n onChangeClientState,\n scriptTags,\n styleTags,\n title,\n titleAttributes,\n } = newState;\n updateAttributes(TAG_NAMES.BODY, bodyAttributes);\n updateAttributes(TAG_NAMES.HTML, htmlAttributes);\n\n updateTitle(title, titleAttributes);\n\n const tagUpdates = {\n baseTag: updateTags(TAG_NAMES.BASE, baseTag),\n linkTags: updateTags(TAG_NAMES.LINK, linkTags),\n metaTags: updateTags(TAG_NAMES.META, metaTags),\n noscriptTags: updateTags(TAG_NAMES.NOSCRIPT, noscriptTags),\n scriptTags: updateTags(TAG_NAMES.SCRIPT, scriptTags),\n styleTags: updateTags(TAG_NAMES.STYLE, styleTags),\n };\n\n const addedTags = {};\n const removedTags = {};\n\n Object.keys(tagUpdates).forEach(tagType => {\n const { newTags, oldTags } = tagUpdates[tagType];\n\n if (newTags.length) {\n addedTags[tagType] = newTags;\n }\n if (oldTags.length) {\n removedTags[tagType] = tagUpdates[tagType].oldTags;\n }\n });\n\n if (cb) {\n cb();\n }\n\n onChangeClientState(newState, addedTags, removedTags);\n};\n\n// eslint-disable-next-line\nlet _helmetCallback = null;\n\nconst handleStateChangeOnClient = newState => {\n if (_helmetCallback) {\n cancelAnimationFrame(_helmetCallback);\n }\n\n if (newState.defer) {\n _helmetCallback = requestAnimationFrame(() => {\n commitTagChanges(newState, () => {\n _helmetCallback = null;\n });\n });\n } else {\n commitTagChanges(newState);\n _helmetCallback = null;\n }\n};\n\nexport default handleStateChangeOnClient;\n","import { Component } from 'react';\nimport shallowEqual from 'shallowequal';\nimport handleStateChangeOnClient from './client';\nimport mapStateOnServer from './server';\nimport { reducePropsToState } from './utils';\nimport Provider, { providerShape } from './Provider';\n\nexport default class Dispatcher extends Component {\n static propTypes = {\n context: providerShape.isRequired,\n };\n\n static displayName = 'HelmetDispatcher';\n\n rendered = false;\n\n shouldComponentUpdate(nextProps) {\n return !shallowEqual(nextProps, this.props);\n }\n\n componentDidUpdate() {\n this.emitChange();\n }\n\n componentWillUnmount() {\n const { helmetInstances } = this.props.context;\n helmetInstances.remove(this);\n this.emitChange();\n }\n\n emitChange() {\n const { helmetInstances, setHelmet } = this.props.context;\n let serverState = null;\n const state = reducePropsToState(\n helmetInstances.get().map(instance => {\n const props = { ...instance.props };\n delete props.context;\n return props;\n })\n );\n if (Provider.canUseDOM) {\n handleStateChangeOnClient(state);\n } else if (mapStateOnServer) {\n serverState = mapStateOnServer(state);\n }\n setHelmet(serverState);\n }\n\n // componentWillMount will be deprecated\n // for SSR, initialize on first render\n // constructor is also unsafe in StrictMode\n init() {\n if (this.rendered) {\n return;\n }\n\n this.rendered = true;\n\n const { helmetInstances } = this.props.context;\n helmetInstances.add(this);\n this.emitChange();\n }\n\n render() {\n this.init();\n\n return null;\n }\n}\n","import React, { Component } from 'react';\nimport PropTypes from 'prop-types';\nimport fastCompare from 'react-fast-compare';\nimport invariant from 'invariant';\nimport { Context } from './Provider';\nimport HelmetData from './HelmetData';\nimport Dispatcher from './Dispatcher';\nimport { without } from './utils';\nimport { TAG_NAMES, VALID_TAG_NAMES, HTML_TAG_MAP } from './constants';\n\nexport { default as HelmetData } from './HelmetData';\nexport { default as HelmetProvider } from './Provider';\n\n/* eslint-disable class-methods-use-this */\nexport class Helmet extends Component {\n /**\n * @param {Object} base: {\"target\": \"_blank\", \"href\": \"http://mysite.com/\"}\n * @param {Object} bodyAttributes: {\"className\": \"root\"}\n * @param {String} defaultTitle: \"Default Title\"\n * @param {Boolean} defer: true\n * @param {Boolean} encodeSpecialCharacters: true\n * @param {Object} htmlAttributes: {\"lang\": \"en\", \"amp\": undefined}\n * @param {Array} link: [{\"rel\": \"canonical\", \"href\": \"http://mysite.com/example\"}]\n * @param {Array} meta: [{\"name\": \"description\", \"content\": \"Test description\"}]\n * @param {Array} noscript: [{\"innerHTML\": \"
console.log(newState)\"\n * @param {Array} script: [{\"type\": \"text/javascript\", \"src\": \"http://mysite.com/js/test.js\"}]\n * @param {Array} style: [{\"type\": \"text/css\", \"cssText\": \"div { display: block; color: blue; }\"}]\n * @param {String} title: \"Title\"\n * @param {Object} titleAttributes: {\"itemprop\": \"name\"}\n * @param {String} titleTemplate: \"MySite.com - %s\"\n * @param {Boolean} prioritizeSeoTags: false\n */\n /* eslint-disable react/forbid-prop-types, react/require-default-props */\n static propTypes = {\n base: PropTypes.object,\n bodyAttributes: PropTypes.object,\n children: PropTypes.oneOfType([PropTypes.arrayOf(PropTypes.node), PropTypes.node]),\n defaultTitle: PropTypes.string,\n defer: PropTypes.bool,\n encodeSpecialCharacters: PropTypes.bool,\n htmlAttributes: PropTypes.object,\n link: PropTypes.arrayOf(PropTypes.object),\n meta: PropTypes.arrayOf(PropTypes.object),\n noscript: PropTypes.arrayOf(PropTypes.object),\n onChangeClientState: PropTypes.func,\n script: PropTypes.arrayOf(PropTypes.object),\n style: PropTypes.arrayOf(PropTypes.object),\n title: PropTypes.string,\n titleAttributes: PropTypes.object,\n titleTemplate: PropTypes.string,\n prioritizeSeoTags: PropTypes.bool,\n helmetData: PropTypes.object,\n };\n /* eslint-enable react/prop-types, react/forbid-prop-types, react/require-default-props */\n\n static defaultProps = {\n defer: true,\n encodeSpecialCharacters: true,\n prioritizeSeoTags: false,\n };\n\n static displayName = 'Helmet';\n\n shouldComponentUpdate(nextProps) {\n return !fastCompare(without(this.props, 'helmetData'), without(nextProps, 'helmetData'));\n }\n\n mapNestedChildrenToProps(child, nestedChildren) {\n if (!nestedChildren) {\n return null;\n }\n\n switch (child.type) {\n case TAG_NAMES.SCRIPT:\n case TAG_NAMES.NOSCRIPT:\n return {\n innerHTML: nestedChildren,\n };\n\n case TAG_NAMES.STYLE:\n return {\n cssText: nestedChildren,\n };\n default:\n throw new Error(\n `<${child.type} /> elements are self-closing and can not contain children. Refer to our API for more information.`\n );\n }\n }\n\n flattenArrayTypeChildren({ child, arrayTypeChildren, newChildProps, nestedChildren }) {\n return {\n ...arrayTypeChildren,\n [child.type]: [\n ...(arrayTypeChildren[child.type] || []),\n {\n ...newChildProps,\n ...this.mapNestedChildrenToProps(child, nestedChildren),\n },\n ],\n };\n }\n\n mapObjectTypeChildren({ child, newProps, newChildProps, nestedChildren }) {\n switch (child.type) {\n case TAG_NAMES.TITLE:\n return {\n ...newProps,\n [child.type]: nestedChildren,\n titleAttributes: { ...newChildProps },\n };\n\n case TAG_NAMES.BODY:\n return {\n ...newProps,\n bodyAttributes: { ...newChildProps },\n };\n\n case TAG_NAMES.HTML:\n return {\n ...newProps,\n htmlAttributes: { ...newChildProps },\n };\n default:\n return {\n ...newProps,\n [child.type]: { ...newChildProps },\n };\n }\n }\n\n mapArrayTypeChildrenToProps(arrayTypeChildren, newProps) {\n let newFlattenedProps = { ...newProps };\n\n Object.keys(arrayTypeChildren).forEach(arrayChildName => {\n newFlattenedProps = {\n ...newFlattenedProps,\n [arrayChildName]: arrayTypeChildren[arrayChildName],\n };\n });\n\n return newFlattenedProps;\n }\n\n warnOnInvalidChildren(child, nestedChildren) {\n invariant(\n VALID_TAG_NAMES.some(name => child.type === name),\n typeof child.type === 'function'\n ? `You may be attempting to nest components within each other, which is not allowed. Refer to our API for more information.`\n : `Only elements types ${VALID_TAG_NAMES.join(\n ', '\n )} are allowed. Helmet does not support rendering <${\n child.type\n }> elements. Refer to our API for more information.`\n );\n\n invariant(\n !nestedChildren ||\n typeof nestedChildren === 'string' ||\n (Array.isArray(nestedChildren) &&\n !nestedChildren.some(nestedChild => typeof nestedChild !== 'string')),\n `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.`\n );\n\n return true;\n }\n\n mapChildrenToProps(children, newProps) {\n let arrayTypeChildren = {};\n\n React.Children.forEach(children, child => {\n if (!child || !child.props) {\n return;\n }\n\n const { children: nestedChildren, ...childProps } = child.props;\n // convert React props to HTML attributes\n const newChildProps = Object.keys(childProps).reduce((obj, key) => {\n obj[HTML_TAG_MAP[key] || key] = childProps[key];\n return obj;\n }, {});\n\n let { type } = child;\n if (typeof type === 'symbol') {\n type = type.toString();\n } else {\n this.warnOnInvalidChildren(child, nestedChildren);\n }\n\n switch (type) {\n case TAG_NAMES.FRAGMENT:\n newProps = this.mapChildrenToProps(nestedChildren, newProps);\n break;\n\n case TAG_NAMES.LINK:\n case TAG_NAMES.META:\n case TAG_NAMES.NOSCRIPT:\n case TAG_NAMES.SCRIPT:\n case TAG_NAMES.STYLE:\n arrayTypeChildren = this.flattenArrayTypeChildren({\n child,\n arrayTypeChildren,\n newChildProps,\n nestedChildren,\n });\n break;\n\n default:\n newProps = this.mapObjectTypeChildren({\n child,\n newProps,\n newChildProps,\n nestedChildren,\n });\n break;\n }\n });\n\n return this.mapArrayTypeChildrenToProps(arrayTypeChildren, newProps);\n }\n\n render() {\n const { children, ...props } = this.props;\n let newProps = { ...props };\n let { helmetData } = props;\n\n if (children) {\n newProps = this.mapChildrenToProps(children, newProps);\n }\n\n if (helmetData && !(helmetData instanceof HelmetData)) {\n helmetData = new HelmetData(helmetData.context, helmetData.instances);\n }\n\n return helmetData ? (\n // eslint-disable-next-line react/jsx-props-no-spreading\n \n ) : (\n \n {(\n context // eslint-disable-next-line react/jsx-props-no-spreading\n ) => }\n \n );\n }\n}\n","//\n\nmodule.exports = function shallowEqual(objA, objB, compare, compareContext) {\n var ret = compare ? compare.call(compareContext, objA, objB) : void 0;\n\n if (ret !== void 0) {\n return !!ret;\n }\n\n if (objA === objB) {\n return true;\n }\n\n if (typeof objA !== \"object\" || !objA || typeof objB !== \"object\" || !objB) {\n return false;\n }\n\n var keysA = Object.keys(objA);\n var keysB = Object.keys(objB);\n\n if (keysA.length !== keysB.length) {\n return false;\n }\n\n var bHasOwnProperty = Object.prototype.hasOwnProperty.bind(objB);\n\n // Test for A's keys different from B.\n for (var idx = 0; idx < keysA.length; idx++) {\n var key = keysA[idx];\n\n if (!bHasOwnProperty(key)) {\n return false;\n }\n\n var valueA = objA[key];\n var valueB = objB[key];\n\n ret = compare ? compare.call(compareContext, valueA, valueB, key) : void 0;\n\n if (ret === false || (ret === void 0 && valueA !== valueB)) {\n return false;\n }\n }\n\n return true;\n};\n"],"names":["l","BASE","BODY","HEAD","HTML","LINK","META","NOSCRIPT","SCRIPT","STYLE","TITLE","FRAGMENT","p","rel","f","type","d","charset","name","property","h","Object","keys","map","t","m","accesskey","class","contenteditable","contextmenu","itemprop","tabindex","y","reduce","e","T","r","length","n","prototype","hasOwnProperty","call","g","Array","isArray","join","replace","b","v","filter","a","A","reverse","i","o","toLowerCase","indexOf","concat","C","console","warn","s","c","u","forEach","push","O","S","E","includes","priority","default","I","P","w","String","x","L","j","key","dangerouslySetInnerHTML","__html","innerHTML","cssText","M","toComponent","titleAttributes","title","toString","k","baseTag","bodyAttributes","encode","htmlAttributes","noscriptTags","styleTags","linkTags","metaTags","scriptTags","prioritizeSeoTags","priorityMethods","base","link","meta","noscript","script","style","H","N","document","instances","value","setHelmet","context","helmet","helmetInstances","get","canUseDOM","add","remove","splice","this","encodeSpecialCharacters","R","D","U","q","helmetData","props","render","Provider","children","propTypes","isRequired","defaultProps","displayName","Y","head","querySelector","querySelectorAll","slice","createElement","styleSheet","appendChild","createTextNode","setAttribute","some","isEqualNode","parentNode","removeChild","oldTags","newTags","B","getElementsByTagName","getAttribute","split","removeAttribute","K","onChangeClientState","_","z","arguments","apply","rendered","shouldComponentUpdate","componentDidUpdate","emitChange","componentWillUnmount","defer","cancelAnimationFrame","requestAnimationFrame","init","F","G","W","mapNestedChildrenToProps","Error","flattenArrayTypeChildren","child","arrayTypeChildren","newChildProps","nestedChildren","mapObjectTypeChildren","newProps","mapArrayTypeChildrenToProps","warnOnInvalidChildren","mapChildrenToProps","Consumer","defaultTitle","titleTemplate","module","exports","objA","objB","compare","compareContext","ret","keysA","keysB","bHasOwnProperty","bind","idx","valueA","valueB"],"sourceRoot":""}