{"version":3,"file":"b0e867ca616f549db73d10150db7c77841fd07b4-0e572a47613b4629a0bb.js","mappings":"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","sources":["webpack://bc-parks-gatsby/./node_modules/@fortawesome/fontawesome-svg-core/index.mjs","webpack://bc-parks-gatsby/./node_modules/@fortawesome/react-fontawesome/index.es.js","webpack://bc-parks-gatsby/../src/image-utils.ts","webpack://bc-parks-gatsby/../src/components/hooks.ts","webpack://bc-parks-gatsby/../src/components/layout-wrapper.tsx","webpack://bc-parks-gatsby/../src/components/picture.tsx","webpack://bc-parks-gatsby/../src/components/placeholder.tsx","webpack://bc-parks-gatsby/../src/components/main-image.tsx","webpack://bc-parks-gatsby/../src/components/gatsby-image.server.tsx","webpack://bc-parks-gatsby/../src/components/gatsby-image.browser.tsx","webpack://bc-parks-gatsby/../src/components/static-image.server.tsx","webpack://bc-parks-gatsby/../src/components/static-image.tsx","webpack://bc-parks-gatsby/./node_modules/gatsby-plugin-image/node_modules/camelcase/index.js","webpack://bc-parks-gatsby/./src/components/fontAwesome.js","webpack://bc-parks-gatsby/./src/components/footer.js","webpack://bc-parks-gatsby/./src/components/skipToContent.js","webpack://bc-parks-gatsby/./src/components/emergencyAlert.js","webpack://bc-parks-gatsby/./src/components/header.js","webpack://bc-parks-gatsby/./src/images/logo/BCParks_Primary_Reversed-cropped.svg","webpack://bc-parks-gatsby/./src/images/logo/BCParks_Primary_Reversed_Vertical.svg","webpack://bc-parks-gatsby/./src/components/megaMenu.js","webpack://bc-parks-gatsby/./src/components/seo.js","webpack://bc-parks-gatsby/./src/utils/helpers.js","webpack://bc-parks-gatsby/./src/utils/snowplowHelper.js","webpack://bc-parks-gatsby/./src/images/park-card.png"],"sourcesContent":["const noop = () => {};\n\nlet _WINDOW = {};\nlet _DOCUMENT = {};\nlet _MUTATION_OBSERVER = null;\nlet _PERFORMANCE = {\n mark: noop,\n measure: noop\n};\n\ntry {\n if (typeof window !== 'undefined') _WINDOW = window;\n if (typeof document !== 'undefined') _DOCUMENT = document;\n if (typeof MutationObserver !== 'undefined') _MUTATION_OBSERVER = MutationObserver;\n if (typeof performance !== 'undefined') _PERFORMANCE = performance;\n} catch (e) {}\n\nconst {\n userAgent = ''\n} = _WINDOW.navigator || {};\nconst WINDOW = _WINDOW;\nconst DOCUMENT = _DOCUMENT;\nconst MUTATION_OBSERVER = _MUTATION_OBSERVER;\nconst PERFORMANCE = _PERFORMANCE;\nconst IS_BROWSER = !!WINDOW.document;\nconst IS_DOM = !!DOCUMENT.documentElement && !!DOCUMENT.head && typeof DOCUMENT.addEventListener === 'function' && typeof DOCUMENT.createElement === 'function';\nconst IS_IE = ~userAgent.indexOf('MSIE') || ~userAgent.indexOf('Trident/');\n\nvar a = \"classic\",\n t = \"duotone\",\n r = \"sharp\",\n o = \"sharp-duotone\",\n c = [a, t, r, o];\n\nvar et$1 = {\n classic: {\n 900: \"fas\",\n 400: \"far\",\n normal: \"far\",\n 300: \"fal\",\n 100: \"fat\"\n },\n sharp: {\n 900: \"fass\",\n 400: \"fasr\",\n 300: \"fasl\",\n 100: \"fast\"\n },\n \"sharp-duotone\": {\n 900: \"fasds\"\n }\n};\nvar bt = {\n kit: {\n fak: \"kit\",\n \"fa-kit\": \"kit\"\n },\n \"kit-duotone\": {\n fakd: \"kit-duotone\",\n \"fa-kit-duotone\": \"kit-duotone\"\n }\n},\n Ct = [\"kit\"];\nvar Dt = /fa(s|r|l|t|d|b|k|kd|ss|sr|sl|st|sds)?[\\-\\ ]/,\n Kt = /Font ?Awesome ?([56 ]*)(Solid|Regular|Light|Thin|Duotone|Brands|Free|Pro|Sharp Duotone|Sharp|Kit)?.*/i;\nvar ao = {\n \"Font Awesome 5 Free\": {\n 900: \"fas\",\n 400: \"far\"\n },\n \"Font Awesome 5 Pro\": {\n 900: \"fas\",\n 400: \"far\",\n normal: \"far\",\n 300: \"fal\"\n },\n \"Font Awesome 5 Brands\": {\n 400: \"fab\",\n normal: \"fab\"\n },\n \"Font Awesome 5 Duotone\": {\n 900: \"fad\"\n }\n};\nvar eo = {\n \"Font Awesome 6 Free\": {\n 900: \"fas\",\n 400: \"far\"\n },\n \"Font Awesome 6 Pro\": {\n 900: \"fas\",\n 400: \"far\",\n normal: \"far\",\n 300: \"fal\",\n 100: \"fat\"\n },\n \"Font Awesome 6 Brands\": {\n 400: \"fab\",\n normal: \"fab\"\n },\n \"Font Awesome 6 Duotone\": {\n 900: \"fad\"\n },\n \"Font Awesome 6 Sharp\": {\n 900: \"fass\",\n 400: \"fasr\",\n normal: \"fasr\",\n 300: \"fasl\",\n 100: \"fast\"\n },\n \"Font Awesome 6 Sharp Duotone\": {\n 900: \"fasds\"\n }\n},\n lo = {\n classic: {\n \"fa-brands\": \"fab\",\n \"fa-duotone\": \"fad\",\n \"fa-light\": \"fal\",\n \"fa-regular\": \"far\",\n \"fa-solid\": \"fas\",\n \"fa-thin\": \"fat\"\n },\n sharp: {\n \"fa-solid\": \"fass\",\n \"fa-regular\": \"fasr\",\n \"fa-light\": \"fasl\",\n \"fa-thin\": \"fast\"\n },\n \"sharp-duotone\": {\n \"fa-solid\": \"fasds\"\n }\n},\n y = {\n classic: [\"fas\", \"far\", \"fal\", \"fat\"],\n sharp: [\"fass\", \"fasr\", \"fasl\", \"fast\"],\n \"sharp-duotone\": [\"fasds\"]\n},\n no = {\n classic: {\n fab: \"fa-brands\",\n fad: \"fa-duotone\",\n fal: \"fa-light\",\n far: \"fa-regular\",\n fas: \"fa-solid\",\n fat: \"fa-thin\"\n },\n sharp: {\n fass: \"fa-solid\",\n fasr: \"fa-regular\",\n fasl: \"fa-light\",\n fast: \"fa-thin\"\n },\n \"sharp-duotone\": {\n fasds: \"fa-solid\"\n }\n},\n fo = {\n classic: {\n solid: \"fas\",\n regular: \"far\",\n light: \"fal\",\n thin: \"fat\",\n duotone: \"fad\",\n brands: \"fab\"\n },\n sharp: {\n solid: \"fass\",\n regular: \"fasr\",\n light: \"fasl\",\n thin: \"fast\"\n },\n \"sharp-duotone\": {\n solid: \"fasds\"\n }\n},\n ho = {\n classic: {\n fa: \"solid\",\n fas: \"solid\",\n \"fa-solid\": \"solid\",\n far: \"regular\",\n \"fa-regular\": \"regular\",\n fal: \"light\",\n \"fa-light\": \"light\",\n fat: \"thin\",\n \"fa-thin\": \"thin\",\n fad: \"duotone\",\n \"fa-duotone\": \"duotone\",\n fab: \"brands\",\n \"fa-brands\": \"brands\"\n },\n sharp: {\n fa: \"solid\",\n fass: \"solid\",\n \"fa-solid\": \"solid\",\n fasr: \"regular\",\n \"fa-regular\": \"regular\",\n fasl: \"light\",\n \"fa-light\": \"light\",\n fast: \"thin\",\n \"fa-thin\": \"thin\"\n },\n \"sharp-duotone\": {\n fa: \"solid\",\n fasds: \"solid\",\n \"fa-solid\": \"solid\"\n }\n},\n x$1 = [\"solid\", \"regular\", \"light\", \"thin\", \"duotone\", \"brands\"],\n u$1 = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10],\n m$1 = u$1.concat([11, 12, 13, 14, 15, 16, 17, 18, 19, 20]),\n t$1 = {\n GROUP: \"duotone-group\",\n SWAP_OPACITY: \"swap-opacity\",\n PRIMARY: \"primary\",\n SECONDARY: \"secondary\"\n},\n yo = [...Object.keys(y), ...x$1, \"2xs\", \"xs\", \"sm\", \"lg\", \"xl\", \"2xl\", \"beat\", \"border\", \"fade\", \"beat-fade\", \"bounce\", \"flip-both\", \"flip-horizontal\", \"flip-vertical\", \"flip\", \"fw\", \"inverse\", \"layers-counter\", \"layers-text\", \"layers\", \"li\", \"pull-left\", \"pull-right\", \"pulse\", \"rotate-180\", \"rotate-270\", \"rotate-90\", \"rotate-by\", \"shake\", \"spin-pulse\", \"spin-reverse\", \"spin\", \"stack-1x\", \"stack-2x\", \"stack\", \"ul\", t$1.GROUP, t$1.SWAP_OPACITY, t$1.PRIMARY, t$1.SECONDARY].concat(u$1.map(o => \"\".concat(o, \"x\"))).concat(m$1.map(o => \"w-\".concat(o)));\nvar mo = {\n \"Font Awesome Kit\": {\n 400: \"fak\",\n normal: \"fak\"\n },\n \"Font Awesome Kit Duotone\": {\n 400: \"fakd\",\n normal: \"fakd\"\n }\n},\n Io = {\n kit: {\n \"fa-kit\": \"fak\"\n },\n \"kit-duotone\": {\n \"fa-kit-duotone\": \"fakd\"\n }\n},\n Fo = {\n kit: {\n fak: \"fa-kit\"\n },\n \"kit-duotone\": {\n fakd: \"fa-kit-duotone\"\n }\n},\n So = {\n kit: {\n kit: \"fak\"\n },\n \"kit-duotone\": {\n \"kit-duotone\": \"fakd\"\n }\n};\n\nconst NAMESPACE_IDENTIFIER = '___FONT_AWESOME___';\nconst UNITS_IN_GRID = 16;\nconst DEFAULT_CSS_PREFIX = 'fa';\nconst DEFAULT_REPLACEMENT_CLASS = 'svg-inline--fa';\nconst DATA_FA_I2SVG = 'data-fa-i2svg';\nconst DATA_FA_PSEUDO_ELEMENT = 'data-fa-pseudo-element';\nconst DATA_FA_PSEUDO_ELEMENT_PENDING = 'data-fa-pseudo-element-pending';\nconst DATA_PREFIX = 'data-prefix';\nconst DATA_ICON = 'data-icon';\nconst HTML_CLASS_I2SVG_BASE_CLASS = 'fontawesome-i2svg';\nconst MUTATION_APPROACH_ASYNC = 'async';\nconst TAGNAMES_TO_SKIP_FOR_PSEUDOELEMENTS = ['HTML', 'HEAD', 'STYLE', 'SCRIPT'];\nconst PRODUCTION = (() => {\n try {\n return process.env.NODE_ENV === 'production';\n } catch (e$$1) {\n return false;\n }\n})();\nconst FAMILIES = [a, r, o];\n\nfunction familyProxy(obj) {\n // Defaults to the classic family if family is not available\n return new Proxy(obj, {\n get(target, prop) {\n return prop in target ? target[prop] : target[a];\n }\n\n });\n}\n\nconst _PREFIX_TO_STYLE = { ...ho\n};\n_PREFIX_TO_STYLE[a] = { ...ho[a],\n ...bt['kit'],\n ...bt['kit-duotone']\n};\nconst PREFIX_TO_STYLE = familyProxy(_PREFIX_TO_STYLE);\nconst _STYLE_TO_PREFIX = { ...fo\n};\n_STYLE_TO_PREFIX[a] = { ..._STYLE_TO_PREFIX[a],\n ...So['kit'],\n ...So['kit-duotone']\n};\nconst STYLE_TO_PREFIX = familyProxy(_STYLE_TO_PREFIX);\nconst _PREFIX_TO_LONG_STYLE = { ...no\n};\n_PREFIX_TO_LONG_STYLE[a] = { ..._PREFIX_TO_LONG_STYLE[a],\n ...Fo['kit']\n};\nconst PREFIX_TO_LONG_STYLE = familyProxy(_PREFIX_TO_LONG_STYLE);\nconst _LONG_STYLE_TO_PREFIX = { ...lo\n};\n_LONG_STYLE_TO_PREFIX[a] = { ..._LONG_STYLE_TO_PREFIX[a],\n ...Io['kit']\n};\nconst LONG_STYLE_TO_PREFIX = familyProxy(_LONG_STYLE_TO_PREFIX);\nconst ICON_SELECTION_SYNTAX_PATTERN = Dt; // eslint-disable-line no-useless-escape\n\nconst LAYERS_TEXT_CLASSNAME = 'fa-layers-text';\nconst FONT_FAMILY_PATTERN = Kt;\nconst _FONT_WEIGHT_TO_PREFIX = { ...et$1\n};\nconst FONT_WEIGHT_TO_PREFIX = familyProxy(_FONT_WEIGHT_TO_PREFIX);\nconst ATTRIBUTES_WATCHED_FOR_MUTATION = ['class', 'data-prefix', 'data-icon', 'data-fa-transform', 'data-fa-mask'];\nconst DUOTONE_CLASSES = t$1;\nconst prefixes = new Set();\nObject.keys(STYLE_TO_PREFIX[a]).map(prefixes.add.bind(prefixes));\nObject.keys(STYLE_TO_PREFIX[r]).map(prefixes.add.bind(prefixes));\nObject.keys(STYLE_TO_PREFIX[o]).map(prefixes.add.bind(prefixes));\nconst RESERVED_CLASSES = [...Ct, ...yo];\n\nconst initial = WINDOW.FontAwesomeConfig || {};\n\nfunction getAttrConfig(attr) {\n var element = DOCUMENT.querySelector('script[' + attr + ']');\n\n if (element) {\n return element.getAttribute(attr);\n }\n}\n\nfunction coerce(val) {\n // Getting an empty string will occur if the attribute is set on the HTML tag but without a value\n // We'll assume that this is an indication that it should be toggled to true\n if (val === '') return true;\n if (val === 'false') return false;\n if (val === 'true') return true;\n return val;\n}\n\nif (DOCUMENT && typeof DOCUMENT.querySelector === 'function') {\n const attrs = [['data-family-prefix', 'familyPrefix'], ['data-css-prefix', 'cssPrefix'], ['data-family-default', 'familyDefault'], ['data-style-default', 'styleDefault'], ['data-replacement-class', 'replacementClass'], ['data-auto-replace-svg', 'autoReplaceSvg'], ['data-auto-add-css', 'autoAddCss'], ['data-auto-a11y', 'autoA11y'], ['data-search-pseudo-elements', 'searchPseudoElements'], ['data-observe-mutations', 'observeMutations'], ['data-mutate-approach', 'mutateApproach'], ['data-keep-original-source', 'keepOriginalSource'], ['data-measure-performance', 'measurePerformance'], ['data-show-missing-icons', 'showMissingIcons']];\n attrs.forEach(_ref => {\n let [attr, key] = _ref;\n const val = coerce(getAttrConfig(attr));\n\n if (val !== undefined && val !== null) {\n initial[key] = val;\n }\n });\n}\n\nconst _default = {\n styleDefault: 'solid',\n familyDefault: 'classic',\n cssPrefix: DEFAULT_CSS_PREFIX,\n replacementClass: DEFAULT_REPLACEMENT_CLASS,\n autoReplaceSvg: true,\n autoAddCss: true,\n autoA11y: true,\n searchPseudoElements: false,\n observeMutations: true,\n mutateApproach: 'async',\n keepOriginalSource: true,\n measurePerformance: false,\n showMissingIcons: true\n}; // familyPrefix is deprecated but we must still support it if present\n\nif (initial.familyPrefix) {\n initial.cssPrefix = initial.familyPrefix;\n}\n\nconst _config = { ..._default,\n ...initial\n};\nif (!_config.autoReplaceSvg) _config.observeMutations = false;\nconst config = {};\nObject.keys(_default).forEach(key => {\n Object.defineProperty(config, key, {\n enumerable: true,\n set: function (val) {\n _config[key] = val;\n\n _onChangeCb.forEach(cb => cb(config));\n },\n get: function () {\n return _config[key];\n }\n });\n}); // familyPrefix is deprecated as of 6.2.0 and should be removed in 7.0.0\n\nObject.defineProperty(config, 'familyPrefix', {\n enumerable: true,\n set: function (val) {\n _config.cssPrefix = val;\n\n _onChangeCb.forEach(cb => cb(config));\n },\n get: function () {\n return _config.cssPrefix;\n }\n});\nWINDOW.FontAwesomeConfig = config;\nconst _onChangeCb = [];\nfunction onChange(cb) {\n _onChangeCb.push(cb);\n\n return () => {\n _onChangeCb.splice(_onChangeCb.indexOf(cb), 1);\n };\n}\n\nconst d$2 = UNITS_IN_GRID;\nconst meaninglessTransform = {\n size: 16,\n x: 0,\n y: 0,\n rotate: 0,\n flipX: false,\n flipY: false\n};\nfunction insertCss(css) {\n if (!css || !IS_DOM) {\n return;\n }\n\n const style = DOCUMENT.createElement('style');\n style.setAttribute('type', 'text/css');\n style.innerHTML = css;\n const headChildren = DOCUMENT.head.childNodes;\n let beforeChild = null;\n\n for (let i = headChildren.length - 1; i > -1; i--) {\n const child = headChildren[i];\n const tagName = (child.tagName || '').toUpperCase();\n\n if (['STYLE', 'LINK'].indexOf(tagName) > -1) {\n beforeChild = child;\n }\n }\n\n DOCUMENT.head.insertBefore(style, beforeChild);\n return css;\n}\nconst idPool = '0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ';\nfunction nextUniqueId() {\n let size = 12;\n let id = '';\n\n while (size-- > 0) {\n id += idPool[Math.random() * 62 | 0];\n }\n\n return id;\n}\nfunction toArray(obj) {\n const array = [];\n\n for (let i = (obj || []).length >>> 0; i--;) {\n array[i] = obj[i];\n }\n\n return array;\n}\nfunction classArray(node) {\n if (node.classList) {\n return toArray(node.classList);\n } else {\n return (node.getAttribute('class') || '').split(' ').filter(i => i);\n }\n}\nfunction htmlEscape(str) {\n return \"\".concat(str).replace(/&/g, '&').replace(/\"/g, '"').replace(/'/g, ''').replace(//g, '>');\n}\nfunction joinAttributes(attributes) {\n return Object.keys(attributes || {}).reduce((acc, attributeName) => {\n return acc + \"\".concat(attributeName, \"=\\\"\").concat(htmlEscape(attributes[attributeName]), \"\\\" \");\n }, '').trim();\n}\nfunction joinStyles(styles) {\n return Object.keys(styles || {}).reduce((acc, styleName) => {\n return acc + \"\".concat(styleName, \": \").concat(styles[styleName].trim(), \";\");\n }, '');\n}\nfunction transformIsMeaningful(transform) {\n return transform.size !== meaninglessTransform.size || transform.x !== meaninglessTransform.x || transform.y !== meaninglessTransform.y || transform.rotate !== meaninglessTransform.rotate || transform.flipX || transform.flipY;\n}\nfunction transformForSvg(_ref) {\n let {\n transform,\n containerWidth,\n iconWidth\n } = _ref;\n const outer = {\n transform: \"translate(\".concat(containerWidth / 2, \" 256)\")\n };\n const innerTranslate = \"translate(\".concat(transform.x * 32, \", \").concat(transform.y * 32, \") \");\n const innerScale = \"scale(\".concat(transform.size / 16 * (transform.flipX ? -1 : 1), \", \").concat(transform.size / 16 * (transform.flipY ? -1 : 1), \") \");\n const innerRotate = \"rotate(\".concat(transform.rotate, \" 0 0)\");\n const inner = {\n transform: \"\".concat(innerTranslate, \" \").concat(innerScale, \" \").concat(innerRotate)\n };\n const path = {\n transform: \"translate(\".concat(iconWidth / 2 * -1, \" -256)\")\n };\n return {\n outer,\n inner,\n path\n };\n}\nfunction transformForCss(_ref2) {\n let {\n transform,\n width = UNITS_IN_GRID,\n height = UNITS_IN_GRID,\n startCentered = false\n } = _ref2;\n let val = '';\n\n if (startCentered && IS_IE) {\n val += \"translate(\".concat(transform.x / d$2 - width / 2, \"em, \").concat(transform.y / d$2 - height / 2, \"em) \");\n } else if (startCentered) {\n val += \"translate(calc(-50% + \".concat(transform.x / d$2, \"em), calc(-50% + \").concat(transform.y / d$2, \"em)) \");\n } else {\n val += \"translate(\".concat(transform.x / d$2, \"em, \").concat(transform.y / d$2, \"em) \");\n }\n\n val += \"scale(\".concat(transform.size / d$2 * (transform.flipX ? -1 : 1), \", \").concat(transform.size / d$2 * (transform.flipY ? -1 : 1), \") \");\n val += \"rotate(\".concat(transform.rotate, \"deg) \");\n return val;\n}\n\nvar baseStyles = \":root, :host {\\n --fa-font-solid: normal 900 1em/1 \\\"Font Awesome 6 Free\\\";\\n --fa-font-regular: normal 400 1em/1 \\\"Font Awesome 6 Free\\\";\\n --fa-font-light: normal 300 1em/1 \\\"Font Awesome 6 Pro\\\";\\n --fa-font-thin: normal 100 1em/1 \\\"Font Awesome 6 Pro\\\";\\n --fa-font-duotone: normal 900 1em/1 \\\"Font Awesome 6 Duotone\\\";\\n --fa-font-brands: normal 400 1em/1 \\\"Font Awesome 6 Brands\\\";\\n --fa-font-sharp-solid: normal 900 1em/1 \\\"Font Awesome 6 Sharp\\\";\\n --fa-font-sharp-regular: normal 400 1em/1 \\\"Font Awesome 6 Sharp\\\";\\n --fa-font-sharp-light: normal 300 1em/1 \\\"Font Awesome 6 Sharp\\\";\\n --fa-font-sharp-thin: normal 100 1em/1 \\\"Font Awesome 6 Sharp\\\";\\n --fa-font-sharp-duotone-solid: normal 900 1em/1 \\\"Font Awesome 6 Sharp Duotone\\\";\\n}\\n\\nsvg:not(:root).svg-inline--fa, svg:not(:host).svg-inline--fa {\\n overflow: visible;\\n box-sizing: content-box;\\n}\\n\\n.svg-inline--fa {\\n display: var(--fa-display, inline-block);\\n height: 1em;\\n overflow: visible;\\n vertical-align: -0.125em;\\n}\\n.svg-inline--fa.fa-2xs {\\n vertical-align: 0.1em;\\n}\\n.svg-inline--fa.fa-xs {\\n vertical-align: 0em;\\n}\\n.svg-inline--fa.fa-sm {\\n vertical-align: -0.0714285705em;\\n}\\n.svg-inline--fa.fa-lg {\\n vertical-align: -0.2em;\\n}\\n.svg-inline--fa.fa-xl {\\n vertical-align: -0.25em;\\n}\\n.svg-inline--fa.fa-2xl {\\n vertical-align: -0.3125em;\\n}\\n.svg-inline--fa.fa-pull-left {\\n margin-right: var(--fa-pull-margin, 0.3em);\\n width: auto;\\n}\\n.svg-inline--fa.fa-pull-right {\\n margin-left: var(--fa-pull-margin, 0.3em);\\n width: auto;\\n}\\n.svg-inline--fa.fa-li {\\n width: var(--fa-li-width, 2em);\\n top: 0.25em;\\n}\\n.svg-inline--fa.fa-fw {\\n width: var(--fa-fw-width, 1.25em);\\n}\\n\\n.fa-layers svg.svg-inline--fa {\\n bottom: 0;\\n left: 0;\\n margin: auto;\\n position: absolute;\\n right: 0;\\n top: 0;\\n}\\n\\n.fa-layers-counter, .fa-layers-text {\\n display: inline-block;\\n position: absolute;\\n text-align: center;\\n}\\n\\n.fa-layers {\\n display: inline-block;\\n height: 1em;\\n position: relative;\\n text-align: center;\\n vertical-align: -0.125em;\\n width: 1em;\\n}\\n.fa-layers svg.svg-inline--fa {\\n transform-origin: center center;\\n}\\n\\n.fa-layers-text {\\n left: 50%;\\n top: 50%;\\n transform: translate(-50%, -50%);\\n transform-origin: center center;\\n}\\n\\n.fa-layers-counter {\\n background-color: var(--fa-counter-background-color, #ff253a);\\n border-radius: var(--fa-counter-border-radius, 1em);\\n box-sizing: border-box;\\n color: var(--fa-inverse, #fff);\\n line-height: var(--fa-counter-line-height, 1);\\n max-width: var(--fa-counter-max-width, 5em);\\n min-width: var(--fa-counter-min-width, 1.5em);\\n overflow: hidden;\\n padding: var(--fa-counter-padding, 0.25em 0.5em);\\n right: var(--fa-right, 0);\\n text-overflow: ellipsis;\\n top: var(--fa-top, 0);\\n transform: scale(var(--fa-counter-scale, 0.25));\\n transform-origin: top right;\\n}\\n\\n.fa-layers-bottom-right {\\n bottom: var(--fa-bottom, 0);\\n right: var(--fa-right, 0);\\n top: auto;\\n transform: scale(var(--fa-layers-scale, 0.25));\\n transform-origin: bottom right;\\n}\\n\\n.fa-layers-bottom-left {\\n bottom: var(--fa-bottom, 0);\\n left: var(--fa-left, 0);\\n right: auto;\\n top: auto;\\n transform: scale(var(--fa-layers-scale, 0.25));\\n transform-origin: bottom left;\\n}\\n\\n.fa-layers-top-right {\\n top: var(--fa-top, 0);\\n right: var(--fa-right, 0);\\n transform: scale(var(--fa-layers-scale, 0.25));\\n transform-origin: top right;\\n}\\n\\n.fa-layers-top-left {\\n left: var(--fa-left, 0);\\n right: auto;\\n top: var(--fa-top, 0);\\n transform: scale(var(--fa-layers-scale, 0.25));\\n transform-origin: top left;\\n}\\n\\n.fa-1x {\\n font-size: 1em;\\n}\\n\\n.fa-2x {\\n font-size: 2em;\\n}\\n\\n.fa-3x {\\n font-size: 3em;\\n}\\n\\n.fa-4x {\\n font-size: 4em;\\n}\\n\\n.fa-5x {\\n font-size: 5em;\\n}\\n\\n.fa-6x {\\n font-size: 6em;\\n}\\n\\n.fa-7x {\\n font-size: 7em;\\n}\\n\\n.fa-8x {\\n font-size: 8em;\\n}\\n\\n.fa-9x {\\n font-size: 9em;\\n}\\n\\n.fa-10x {\\n font-size: 10em;\\n}\\n\\n.fa-2xs {\\n font-size: 0.625em;\\n line-height: 0.1em;\\n vertical-align: 0.225em;\\n}\\n\\n.fa-xs {\\n font-size: 0.75em;\\n line-height: 0.0833333337em;\\n vertical-align: 0.125em;\\n}\\n\\n.fa-sm {\\n font-size: 0.875em;\\n line-height: 0.0714285718em;\\n vertical-align: 0.0535714295em;\\n}\\n\\n.fa-lg {\\n font-size: 1.25em;\\n line-height: 0.05em;\\n vertical-align: -0.075em;\\n}\\n\\n.fa-xl {\\n font-size: 1.5em;\\n line-height: 0.0416666682em;\\n vertical-align: -0.125em;\\n}\\n\\n.fa-2xl {\\n font-size: 2em;\\n line-height: 0.03125em;\\n vertical-align: -0.1875em;\\n}\\n\\n.fa-fw {\\n text-align: center;\\n width: 1.25em;\\n}\\n\\n.fa-ul {\\n list-style-type: none;\\n margin-left: var(--fa-li-margin, 2.5em);\\n padding-left: 0;\\n}\\n.fa-ul > li {\\n position: relative;\\n}\\n\\n.fa-li {\\n left: calc(-1 * var(--fa-li-width, 2em));\\n position: absolute;\\n text-align: center;\\n width: var(--fa-li-width, 2em);\\n line-height: inherit;\\n}\\n\\n.fa-border {\\n border-color: var(--fa-border-color, #eee);\\n border-radius: var(--fa-border-radius, 0.1em);\\n border-style: var(--fa-border-style, solid);\\n border-width: var(--fa-border-width, 0.08em);\\n padding: var(--fa-border-padding, 0.2em 0.25em 0.15em);\\n}\\n\\n.fa-pull-left {\\n float: left;\\n margin-right: var(--fa-pull-margin, 0.3em);\\n}\\n\\n.fa-pull-right {\\n float: right;\\n margin-left: var(--fa-pull-margin, 0.3em);\\n}\\n\\n.fa-beat {\\n animation-name: fa-beat;\\n animation-delay: var(--fa-animation-delay, 0s);\\n animation-direction: var(--fa-animation-direction, normal);\\n animation-duration: var(--fa-animation-duration, 1s);\\n animation-iteration-count: var(--fa-animation-iteration-count, infinite);\\n animation-timing-function: var(--fa-animation-timing, ease-in-out);\\n}\\n\\n.fa-bounce {\\n animation-name: fa-bounce;\\n animation-delay: var(--fa-animation-delay, 0s);\\n animation-direction: var(--fa-animation-direction, normal);\\n animation-duration: var(--fa-animation-duration, 1s);\\n animation-iteration-count: var(--fa-animation-iteration-count, infinite);\\n animation-timing-function: var(--fa-animation-timing, cubic-bezier(0.28, 0.84, 0.42, 1));\\n}\\n\\n.fa-fade {\\n animation-name: fa-fade;\\n animation-delay: var(--fa-animation-delay, 0s);\\n animation-direction: var(--fa-animation-direction, normal);\\n animation-duration: var(--fa-animation-duration, 1s);\\n animation-iteration-count: var(--fa-animation-iteration-count, infinite);\\n animation-timing-function: var(--fa-animation-timing, cubic-bezier(0.4, 0, 0.6, 1));\\n}\\n\\n.fa-beat-fade {\\n animation-name: fa-beat-fade;\\n animation-delay: var(--fa-animation-delay, 0s);\\n animation-direction: var(--fa-animation-direction, normal);\\n animation-duration: var(--fa-animation-duration, 1s);\\n animation-iteration-count: var(--fa-animation-iteration-count, infinite);\\n animation-timing-function: var(--fa-animation-timing, cubic-bezier(0.4, 0, 0.6, 1));\\n}\\n\\n.fa-flip {\\n animation-name: fa-flip;\\n animation-delay: var(--fa-animation-delay, 0s);\\n animation-direction: var(--fa-animation-direction, normal);\\n animation-duration: var(--fa-animation-duration, 1s);\\n animation-iteration-count: var(--fa-animation-iteration-count, infinite);\\n animation-timing-function: var(--fa-animation-timing, ease-in-out);\\n}\\n\\n.fa-shake {\\n animation-name: fa-shake;\\n animation-delay: var(--fa-animation-delay, 0s);\\n animation-direction: var(--fa-animation-direction, normal);\\n animation-duration: var(--fa-animation-duration, 1s);\\n animation-iteration-count: var(--fa-animation-iteration-count, infinite);\\n animation-timing-function: var(--fa-animation-timing, linear);\\n}\\n\\n.fa-spin {\\n animation-name: fa-spin;\\n animation-delay: var(--fa-animation-delay, 0s);\\n animation-direction: var(--fa-animation-direction, normal);\\n animation-duration: var(--fa-animation-duration, 2s);\\n animation-iteration-count: var(--fa-animation-iteration-count, infinite);\\n animation-timing-function: var(--fa-animation-timing, linear);\\n}\\n\\n.fa-spin-reverse {\\n --fa-animation-direction: reverse;\\n}\\n\\n.fa-pulse,\\n.fa-spin-pulse {\\n animation-name: fa-spin;\\n animation-direction: var(--fa-animation-direction, normal);\\n animation-duration: var(--fa-animation-duration, 1s);\\n animation-iteration-count: var(--fa-animation-iteration-count, infinite);\\n animation-timing-function: var(--fa-animation-timing, steps(8));\\n}\\n\\n@media (prefers-reduced-motion: reduce) {\\n .fa-beat,\\n.fa-bounce,\\n.fa-fade,\\n.fa-beat-fade,\\n.fa-flip,\\n.fa-pulse,\\n.fa-shake,\\n.fa-spin,\\n.fa-spin-pulse {\\n animation-delay: -1ms;\\n animation-duration: 1ms;\\n animation-iteration-count: 1;\\n transition-delay: 0s;\\n transition-duration: 0s;\\n }\\n}\\n@keyframes fa-beat {\\n 0%, 90% {\\n transform: scale(1);\\n }\\n 45% {\\n transform: scale(var(--fa-beat-scale, 1.25));\\n }\\n}\\n@keyframes fa-bounce {\\n 0% {\\n transform: scale(1, 1) translateY(0);\\n }\\n 10% {\\n transform: scale(var(--fa-bounce-start-scale-x, 1.1), var(--fa-bounce-start-scale-y, 0.9)) translateY(0);\\n }\\n 30% {\\n transform: scale(var(--fa-bounce-jump-scale-x, 0.9), var(--fa-bounce-jump-scale-y, 1.1)) translateY(var(--fa-bounce-height, -0.5em));\\n }\\n 50% {\\n transform: scale(var(--fa-bounce-land-scale-x, 1.05), var(--fa-bounce-land-scale-y, 0.95)) translateY(0);\\n }\\n 57% {\\n transform: scale(1, 1) translateY(var(--fa-bounce-rebound, -0.125em));\\n }\\n 64% {\\n transform: scale(1, 1) translateY(0);\\n }\\n 100% {\\n transform: scale(1, 1) translateY(0);\\n }\\n}\\n@keyframes fa-fade {\\n 50% {\\n opacity: var(--fa-fade-opacity, 0.4);\\n }\\n}\\n@keyframes fa-beat-fade {\\n 0%, 100% {\\n opacity: var(--fa-beat-fade-opacity, 0.4);\\n transform: scale(1);\\n }\\n 50% {\\n opacity: 1;\\n transform: scale(var(--fa-beat-fade-scale, 1.125));\\n }\\n}\\n@keyframes fa-flip {\\n 50% {\\n transform: rotate3d(var(--fa-flip-x, 0), var(--fa-flip-y, 1), var(--fa-flip-z, 0), var(--fa-flip-angle, -180deg));\\n }\\n}\\n@keyframes fa-shake {\\n 0% {\\n transform: rotate(-15deg);\\n }\\n 4% {\\n transform: rotate(15deg);\\n }\\n 8%, 24% {\\n transform: rotate(-18deg);\\n }\\n 12%, 28% {\\n transform: rotate(18deg);\\n }\\n 16% {\\n transform: rotate(-22deg);\\n }\\n 20% {\\n transform: rotate(22deg);\\n }\\n 32% {\\n transform: rotate(-12deg);\\n }\\n 36% {\\n transform: rotate(12deg);\\n }\\n 40%, 100% {\\n transform: rotate(0deg);\\n }\\n}\\n@keyframes fa-spin {\\n 0% {\\n transform: rotate(0deg);\\n }\\n 100% {\\n transform: rotate(360deg);\\n }\\n}\\n.fa-rotate-90 {\\n transform: rotate(90deg);\\n}\\n\\n.fa-rotate-180 {\\n transform: rotate(180deg);\\n}\\n\\n.fa-rotate-270 {\\n transform: rotate(270deg);\\n}\\n\\n.fa-flip-horizontal {\\n transform: scale(-1, 1);\\n}\\n\\n.fa-flip-vertical {\\n transform: scale(1, -1);\\n}\\n\\n.fa-flip-both,\\n.fa-flip-horizontal.fa-flip-vertical {\\n transform: scale(-1, -1);\\n}\\n\\n.fa-rotate-by {\\n transform: rotate(var(--fa-rotate-angle, 0));\\n}\\n\\n.fa-stack {\\n display: inline-block;\\n vertical-align: middle;\\n height: 2em;\\n position: relative;\\n width: 2.5em;\\n}\\n\\n.fa-stack-1x,\\n.fa-stack-2x {\\n bottom: 0;\\n left: 0;\\n margin: auto;\\n position: absolute;\\n right: 0;\\n top: 0;\\n z-index: var(--fa-stack-z-index, auto);\\n}\\n\\n.svg-inline--fa.fa-stack-1x {\\n height: 1em;\\n width: 1.25em;\\n}\\n.svg-inline--fa.fa-stack-2x {\\n height: 2em;\\n width: 2.5em;\\n}\\n\\n.fa-inverse {\\n color: var(--fa-inverse, #fff);\\n}\\n\\n.sr-only,\\n.fa-sr-only {\\n position: absolute;\\n width: 1px;\\n height: 1px;\\n padding: 0;\\n margin: -1px;\\n overflow: hidden;\\n clip: rect(0, 0, 0, 0);\\n white-space: nowrap;\\n border-width: 0;\\n}\\n\\n.sr-only-focusable:not(:focus),\\n.fa-sr-only-focusable:not(:focus) {\\n position: absolute;\\n width: 1px;\\n height: 1px;\\n padding: 0;\\n margin: -1px;\\n overflow: hidden;\\n clip: rect(0, 0, 0, 0);\\n white-space: nowrap;\\n border-width: 0;\\n}\\n\\n.svg-inline--fa .fa-primary {\\n fill: var(--fa-primary-color, currentColor);\\n opacity: var(--fa-primary-opacity, 1);\\n}\\n\\n.svg-inline--fa .fa-secondary {\\n fill: var(--fa-secondary-color, currentColor);\\n opacity: var(--fa-secondary-opacity, 0.4);\\n}\\n\\n.svg-inline--fa.fa-swap-opacity .fa-primary {\\n opacity: var(--fa-secondary-opacity, 0.4);\\n}\\n\\n.svg-inline--fa.fa-swap-opacity .fa-secondary {\\n opacity: var(--fa-primary-opacity, 1);\\n}\\n\\n.svg-inline--fa mask .fa-primary,\\n.svg-inline--fa mask .fa-secondary {\\n fill: black;\\n}\\n\\n.fad.fa-inverse,\\n.fa-duotone.fa-inverse {\\n color: var(--fa-inverse, #fff);\\n}\";\n\nfunction css() {\n const dcp = DEFAULT_CSS_PREFIX;\n const drc = DEFAULT_REPLACEMENT_CLASS;\n const fp = config.cssPrefix;\n const rc = config.replacementClass;\n let s = baseStyles;\n\n if (fp !== dcp || rc !== drc) {\n const dPatt = new RegExp(\"\\\\.\".concat(dcp, \"\\\\-\"), 'g');\n const customPropPatt = new RegExp(\"\\\\--\".concat(dcp, \"\\\\-\"), 'g');\n const rPatt = new RegExp(\"\\\\.\".concat(drc), 'g');\n s = s.replace(dPatt, \".\".concat(fp, \"-\")).replace(customPropPatt, \"--\".concat(fp, \"-\")).replace(rPatt, \".\".concat(rc));\n }\n\n return s;\n}\n\nlet _cssInserted = false;\n\nfunction ensureCss() {\n if (config.autoAddCss && !_cssInserted) {\n insertCss(css());\n _cssInserted = true;\n }\n}\n\nvar InjectCSS = {\n mixout() {\n return {\n dom: {\n css,\n insertCss: ensureCss\n }\n };\n },\n\n hooks() {\n return {\n beforeDOMElementCreation() {\n ensureCss();\n },\n\n beforeI2svg() {\n ensureCss();\n }\n\n };\n }\n\n};\n\nconst w$1 = WINDOW || {};\nif (!w$1[NAMESPACE_IDENTIFIER]) w$1[NAMESPACE_IDENTIFIER] = {};\nif (!w$1[NAMESPACE_IDENTIFIER].styles) w$1[NAMESPACE_IDENTIFIER].styles = {};\nif (!w$1[NAMESPACE_IDENTIFIER].hooks) w$1[NAMESPACE_IDENTIFIER].hooks = {};\nif (!w$1[NAMESPACE_IDENTIFIER].shims) w$1[NAMESPACE_IDENTIFIER].shims = [];\nvar namespace = w$1[NAMESPACE_IDENTIFIER];\n\nconst functions = [];\n\nconst listener = function () {\n DOCUMENT.removeEventListener('DOMContentLoaded', listener);\n loaded = 1;\n functions.map(fn => fn());\n};\n\nlet loaded = false;\n\nif (IS_DOM) {\n loaded = (DOCUMENT.documentElement.doScroll ? /^loaded|^c/ : /^loaded|^i|^c/).test(DOCUMENT.readyState);\n if (!loaded) DOCUMENT.addEventListener('DOMContentLoaded', listener);\n}\n\nfunction domready (fn) {\n if (!IS_DOM) return;\n loaded ? setTimeout(fn, 0) : functions.push(fn);\n}\n\nfunction toHtml(abstractNodes) {\n const {\n tag,\n attributes = {},\n children = []\n } = abstractNodes;\n\n if (typeof abstractNodes === 'string') {\n return htmlEscape(abstractNodes);\n } else {\n return \"<\".concat(tag, \" \").concat(joinAttributes(attributes), \">\").concat(children.map(toHtml).join(''), \"\");\n }\n}\n\nfunction iconFromMapping(mapping, prefix, iconName) {\n if (mapping && mapping[prefix] && mapping[prefix][iconName]) {\n return {\n prefix,\n iconName,\n icon: mapping[prefix][iconName]\n };\n }\n}\n\n/**\n * Internal helper to bind a function known to have 4 arguments\n * to a given context.\n */\n\nvar bindInternal4 = function bindInternal4(func, thisContext) {\n return function (a, b, c, d) {\n return func.call(thisContext, a, b, c, d);\n };\n};\n\n/**\n * # Reduce\n *\n * A fast object `.reduce()` implementation.\n *\n * @param {Object} subject The object to reduce over.\n * @param {Function} fn The reducer function.\n * @param {mixed} initialValue The initial value for the reducer, defaults to subject[0].\n * @param {Object} thisContext The context for the reducer.\n * @return {mixed} The final result.\n */\n\n\nvar reduce = function fastReduceObject(subject, fn, initialValue, thisContext) {\n var keys = Object.keys(subject),\n length = keys.length,\n iterator = thisContext !== undefined ? bindInternal4(fn, thisContext) : fn,\n i,\n key,\n result;\n\n if (initialValue === undefined) {\n i = 1;\n result = subject[keys[0]];\n } else {\n i = 0;\n result = initialValue;\n }\n\n for (; i < length; i++) {\n key = keys[i];\n result = iterator(result, subject[key], key, subject);\n }\n\n return result;\n};\n\n/**\n * ucs2decode() and codePointAt() are both works of Mathias Bynens and licensed under MIT\n *\n * Copyright Mathias Bynens \n\n * Permission is hereby granted, free of charge, to any person obtaining\n * a copy of this software and associated documentation files (the\n * \"Software\"), to deal in the Software without restriction, including\n * without limitation the rights to use, copy, modify, merge, publish,\n * distribute, sublicense, and/or sell copies of the Software, and to\n * permit persons to whom the Software is furnished to do so, subject to\n * the following conditions:\n\n * The above copyright notice and this permission notice shall be\n * included in all copies or substantial portions of the Software.\n\n * THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND,\n * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF\n * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND\n * NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE\n * LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION\n * OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION\n * WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.\n */\nfunction ucs2decode(string) {\n const output = [];\n let counter = 0;\n const length = string.length;\n\n while (counter < length) {\n const value = string.charCodeAt(counter++);\n\n if (value >= 0xD800 && value <= 0xDBFF && counter < length) {\n const extra = string.charCodeAt(counter++);\n\n if ((extra & 0xFC00) == 0xDC00) {\n // eslint-disable-line eqeqeq\n output.push(((value & 0x3FF) << 10) + (extra & 0x3FF) + 0x10000);\n } else {\n output.push(value);\n counter--;\n }\n } else {\n output.push(value);\n }\n }\n\n return output;\n}\n\nfunction toHex(unicode) {\n const decoded = ucs2decode(unicode);\n return decoded.length === 1 ? decoded[0].toString(16) : null;\n}\nfunction codePointAt(string, index) {\n const size = string.length;\n let first = string.charCodeAt(index);\n let second;\n\n if (first >= 0xD800 && first <= 0xDBFF && size > index + 1) {\n second = string.charCodeAt(index + 1);\n\n if (second >= 0xDC00 && second <= 0xDFFF) {\n return (first - 0xD800) * 0x400 + second - 0xDC00 + 0x10000;\n }\n }\n\n return first;\n}\n\nfunction normalizeIcons(icons) {\n return Object.keys(icons).reduce((acc, iconName) => {\n const icon = icons[iconName];\n const expanded = !!icon.icon;\n\n if (expanded) {\n acc[icon.iconName] = icon.icon;\n } else {\n acc[iconName] = icon;\n }\n\n return acc;\n }, {});\n}\n\nfunction defineIcons(prefix, icons) {\n let params = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : {};\n const {\n skipHooks = false\n } = params;\n const normalized = normalizeIcons(icons);\n\n if (typeof namespace.hooks.addPack === 'function' && !skipHooks) {\n namespace.hooks.addPack(prefix, normalizeIcons(icons));\n } else {\n namespace.styles[prefix] = { ...(namespace.styles[prefix] || {}),\n ...normalized\n };\n }\n /**\n * Font Awesome 4 used the prefix of `fa` for all icons. With the introduction\n * of new styles we needed to differentiate between them. Prefix `fa` is now an alias\n * for `fas` so we'll ease the upgrade process for our users by automatically defining\n * this as well.\n */\n\n\n if (prefix === 'fas') {\n defineIcons('fa', icons);\n }\n}\n\nconst {\n styles,\n shims\n} = namespace;\nconst LONG_STYLE = {\n [a]: Object.values(PREFIX_TO_LONG_STYLE[a]),\n [r]: Object.values(PREFIX_TO_LONG_STYLE[r]),\n [o]: Object.values(PREFIX_TO_LONG_STYLE[o])\n};\nlet _defaultUsablePrefix = null;\nlet _byUnicode = {};\nlet _byLigature = {};\nlet _byOldName = {};\nlet _byOldUnicode = {};\nlet _byAlias = {};\nconst PREFIXES = {\n [a]: Object.keys(PREFIX_TO_STYLE[a]),\n [r]: Object.keys(PREFIX_TO_STYLE[r]),\n [o]: Object.keys(PREFIX_TO_STYLE[o])\n};\n\nfunction isReserved(name) {\n return ~RESERVED_CLASSES.indexOf(name);\n}\n\nfunction getIconName(cssPrefix, cls) {\n const parts = cls.split('-');\n const prefix = parts[0];\n const iconName = parts.slice(1).join('-');\n\n if (prefix === cssPrefix && iconName !== '' && !isReserved(iconName)) {\n return iconName;\n } else {\n return null;\n }\n}\nconst build = () => {\n const lookup = reducer => {\n return reduce(styles, (o$$1, style, prefix) => {\n o$$1[prefix] = reduce(style, reducer, {});\n return o$$1;\n }, {});\n };\n\n _byUnicode = lookup((acc, icon, iconName) => {\n if (icon[3]) {\n acc[icon[3]] = iconName;\n }\n\n if (icon[2]) {\n const aliases = icon[2].filter(a$$1 => {\n return typeof a$$1 === 'number';\n });\n aliases.forEach(alias => {\n acc[alias.toString(16)] = iconName;\n });\n }\n\n return acc;\n });\n _byLigature = lookup((acc, icon, iconName) => {\n acc[iconName] = iconName;\n\n if (icon[2]) {\n const aliases = icon[2].filter(a$$1 => {\n return typeof a$$1 === 'string';\n });\n aliases.forEach(alias => {\n acc[alias] = iconName;\n });\n }\n\n return acc;\n });\n _byAlias = lookup((acc, icon, iconName) => {\n const aliases = icon[2];\n acc[iconName] = iconName;\n aliases.forEach(alias => {\n acc[alias] = iconName;\n });\n return acc;\n }); // If we have a Kit, we can't determine if regular is available since we\n // could be auto-fetching it. We'll have to assume that it is available.\n\n const hasRegular = 'far' in styles || config.autoFetchSvg;\n const shimLookups = reduce(shims, (acc, shim) => {\n const maybeNameMaybeUnicode = shim[0];\n let prefix = shim[1];\n const iconName = shim[2];\n\n if (prefix === 'far' && !hasRegular) {\n prefix = 'fas';\n }\n\n if (typeof maybeNameMaybeUnicode === 'string') {\n acc.names[maybeNameMaybeUnicode] = {\n prefix,\n iconName\n };\n }\n\n if (typeof maybeNameMaybeUnicode === 'number') {\n acc.unicodes[maybeNameMaybeUnicode.toString(16)] = {\n prefix,\n iconName\n };\n }\n\n return acc;\n }, {\n names: {},\n unicodes: {}\n });\n _byOldName = shimLookups.names;\n _byOldUnicode = shimLookups.unicodes;\n _defaultUsablePrefix = getCanonicalPrefix(config.styleDefault, {\n family: config.familyDefault\n });\n};\nonChange(c$$1 => {\n _defaultUsablePrefix = getCanonicalPrefix(c$$1.styleDefault, {\n family: config.familyDefault\n });\n});\nbuild();\nfunction byUnicode(prefix, unicode) {\n return (_byUnicode[prefix] || {})[unicode];\n}\nfunction byLigature(prefix, ligature) {\n return (_byLigature[prefix] || {})[ligature];\n}\nfunction byAlias(prefix, alias) {\n return (_byAlias[prefix] || {})[alias];\n}\nfunction byOldName(name) {\n return _byOldName[name] || {\n prefix: null,\n iconName: null\n };\n}\nfunction byOldUnicode(unicode) {\n const oldUnicode = _byOldUnicode[unicode];\n const newUnicode = byUnicode('fas', unicode);\n return oldUnicode || (newUnicode ? {\n prefix: 'fas',\n iconName: newUnicode\n } : null) || {\n prefix: null,\n iconName: null\n };\n}\nfunction getDefaultUsablePrefix() {\n return _defaultUsablePrefix;\n}\nconst emptyCanonicalIcon = () => {\n return {\n prefix: null,\n iconName: null,\n rest: []\n };\n};\nfunction getCanonicalPrefix(styleOrPrefix) {\n let params = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n const {\n family = a\n } = params;\n const style = PREFIX_TO_STYLE[family][styleOrPrefix];\n const prefix = STYLE_TO_PREFIX[family][styleOrPrefix] || STYLE_TO_PREFIX[family][style];\n const defined = styleOrPrefix in namespace.styles ? styleOrPrefix : null;\n const result = prefix || defined || null;\n return result;\n}\nconst PREFIXES_FOR_FAMILY = {\n [a]: Object.keys(PREFIX_TO_LONG_STYLE[a]),\n [r]: Object.keys(PREFIX_TO_LONG_STYLE[r]),\n [o]: Object.keys(PREFIX_TO_LONG_STYLE[o])\n};\nfunction getCanonicalIcon(values) {\n let params = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n const {\n skipLookups = false\n } = params;\n const famProps = {\n [a]: \"\".concat(config.cssPrefix, \"-\").concat(a),\n [r]: \"\".concat(config.cssPrefix, \"-\").concat(r),\n [o]: \"\".concat(config.cssPrefix, \"-\").concat(o)\n };\n let givenPrefix = null;\n let family = a;\n const nonDuotoneFamilyIds = c.filter(familyId => familyId !== t);\n nonDuotoneFamilyIds.forEach(familyId => {\n if (values.includes(famProps[familyId]) || values.some(v$$1 => PREFIXES_FOR_FAMILY[familyId].includes(v$$1))) {\n family = familyId;\n }\n });\n const canonical = values.reduce((acc, cls) => {\n const iconName = getIconName(config.cssPrefix, cls);\n\n if (styles[cls]) {\n cls = LONG_STYLE[family].includes(cls) ? LONG_STYLE_TO_PREFIX[family][cls] : cls;\n givenPrefix = cls;\n acc.prefix = cls;\n } else if (PREFIXES[family].indexOf(cls) > -1) {\n givenPrefix = cls;\n acc.prefix = getCanonicalPrefix(cls, {\n family\n });\n } else if (iconName) {\n acc.iconName = iconName;\n } else if (cls !== config.replacementClass && !nonDuotoneFamilyIds.some(familyName => cls === famProps[familyName])) {\n acc.rest.push(cls);\n }\n\n if (!skipLookups && acc.prefix && acc.iconName) {\n const shim = givenPrefix === 'fa' ? byOldName(acc.iconName) : {};\n const aliasIconName = byAlias(acc.prefix, acc.iconName);\n\n if (shim.prefix) {\n givenPrefix = null;\n }\n\n acc.iconName = shim.iconName || aliasIconName || acc.iconName;\n acc.prefix = shim.prefix || acc.prefix;\n\n if (acc.prefix === 'far' && !styles['far'] && styles['fas'] && !config.autoFetchSvg) {\n // Allow a fallback from the regular style to solid if regular is not available\n // but only if we aren't auto-fetching SVGs\n acc.prefix = 'fas';\n }\n }\n\n return acc;\n }, emptyCanonicalIcon());\n\n if (values.includes('fa-brands') || values.includes('fab')) {\n canonical.prefix = 'fab';\n }\n\n if (values.includes('fa-duotone') || values.includes('fad')) {\n canonical.prefix = 'fad';\n }\n\n if (!canonical.prefix && family === r && (styles['fass'] || config.autoFetchSvg)) {\n canonical.prefix = 'fass';\n canonical.iconName = byAlias(canonical.prefix, canonical.iconName) || canonical.iconName;\n }\n\n if (!canonical.prefix && family === o && (styles['fasds'] || config.autoFetchSvg)) {\n canonical.prefix = 'fasds';\n canonical.iconName = byAlias(canonical.prefix, canonical.iconName) || canonical.iconName;\n }\n\n if (canonical.prefix === 'fa' || givenPrefix === 'fa') {\n // The fa prefix is not canonical. So if it has made it through until this point\n // we will shift it to the correct prefix.\n canonical.prefix = getDefaultUsablePrefix() || 'fas';\n }\n\n return canonical;\n}\n\nclass Library {\n constructor() {\n this.definitions = {};\n }\n\n add() {\n for (var _len = arguments.length, definitions = new Array(_len), _key = 0; _key < _len; _key++) {\n definitions[_key] = arguments[_key];\n }\n\n const additions = definitions.reduce(this._pullDefinitions, {});\n Object.keys(additions).forEach(key => {\n this.definitions[key] = { ...(this.definitions[key] || {}),\n ...additions[key]\n };\n defineIcons(key, additions[key]); // TODO can we stop doing this? We can't get the icons by 'fa-solid' any longer so this probably needs to change\n\n const longPrefix = PREFIX_TO_LONG_STYLE[a][key];\n if (longPrefix) defineIcons(longPrefix, additions[key]);\n build();\n });\n }\n\n reset() {\n this.definitions = {};\n }\n\n _pullDefinitions(additions, definition) {\n const normalized = definition.prefix && definition.iconName && definition.icon ? {\n 0: definition\n } : definition;\n Object.keys(normalized).map(key => {\n const {\n prefix,\n iconName,\n icon\n } = normalized[key];\n const aliases = icon[2];\n if (!additions[prefix]) additions[prefix] = {};\n\n if (aliases.length > 0) {\n aliases.forEach(alias => {\n if (typeof alias === 'string') {\n additions[prefix][alias] = icon;\n }\n });\n }\n\n additions[prefix][iconName] = icon;\n });\n return additions;\n }\n\n}\n\nlet _plugins = [];\nlet _hooks = {};\nconst providers = {};\nconst defaultProviderKeys = Object.keys(providers);\nfunction registerPlugins(nextPlugins, _ref) {\n let {\n mixoutsTo: obj\n } = _ref;\n _plugins = nextPlugins;\n _hooks = {};\n Object.keys(providers).forEach(k => {\n if (defaultProviderKeys.indexOf(k) === -1) {\n delete providers[k];\n }\n });\n\n _plugins.forEach(plugin => {\n const mixout = plugin.mixout ? plugin.mixout() : {};\n Object.keys(mixout).forEach(tk => {\n if (typeof mixout[tk] === 'function') {\n obj[tk] = mixout[tk];\n }\n\n if (typeof mixout[tk] === 'object') {\n Object.keys(mixout[tk]).forEach(sk => {\n if (!obj[tk]) {\n obj[tk] = {};\n }\n\n obj[tk][sk] = mixout[tk][sk];\n });\n }\n });\n\n if (plugin.hooks) {\n const hooks = plugin.hooks();\n Object.keys(hooks).forEach(hook => {\n if (!_hooks[hook]) {\n _hooks[hook] = [];\n }\n\n _hooks[hook].push(hooks[hook]);\n });\n }\n\n if (plugin.provides) {\n plugin.provides(providers);\n }\n });\n\n return obj;\n}\nfunction chainHooks(hook, accumulator) {\n for (var _len = arguments.length, args = new Array(_len > 2 ? _len - 2 : 0), _key = 2; _key < _len; _key++) {\n args[_key - 2] = arguments[_key];\n }\n\n const hookFns = _hooks[hook] || [];\n hookFns.forEach(hookFn => {\n accumulator = hookFn.apply(null, [accumulator, ...args]); // eslint-disable-line no-useless-call\n });\n return accumulator;\n}\nfunction callHooks(hook) {\n for (var _len2 = arguments.length, args = new Array(_len2 > 1 ? _len2 - 1 : 0), _key2 = 1; _key2 < _len2; _key2++) {\n args[_key2 - 1] = arguments[_key2];\n }\n\n const hookFns = _hooks[hook] || [];\n hookFns.forEach(hookFn => {\n hookFn.apply(null, args);\n });\n return undefined;\n}\nfunction callProvided() {\n const hook = arguments[0];\n const args = Array.prototype.slice.call(arguments, 1);\n return providers[hook] ? providers[hook].apply(null, args) : undefined;\n}\n\nfunction findIconDefinition(iconLookup) {\n if (iconLookup.prefix === 'fa') {\n iconLookup.prefix = 'fas';\n }\n\n let {\n iconName\n } = iconLookup;\n const prefix = iconLookup.prefix || getDefaultUsablePrefix();\n if (!iconName) return;\n iconName = byAlias(prefix, iconName) || iconName;\n return iconFromMapping(library.definitions, prefix, iconName) || iconFromMapping(namespace.styles, prefix, iconName);\n}\nconst library = new Library();\nconst noAuto = () => {\n config.autoReplaceSvg = false;\n config.observeMutations = false;\n callHooks('noAuto');\n};\nconst dom = {\n i2svg: function () {\n let params = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};\n\n if (IS_DOM) {\n callHooks('beforeI2svg', params);\n callProvided('pseudoElements2svg', params);\n return callProvided('i2svg', params);\n } else {\n return Promise.reject(new Error('Operation requires a DOM of some kind.'));\n }\n },\n watch: function () {\n let params = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};\n const {\n autoReplaceSvgRoot\n } = params;\n\n if (config.autoReplaceSvg === false) {\n config.autoReplaceSvg = true;\n }\n\n config.observeMutations = true;\n domready(() => {\n autoReplace({\n autoReplaceSvgRoot\n });\n callHooks('watch', params);\n });\n }\n};\nconst parse = {\n icon: icon => {\n if (icon === null) {\n return null;\n }\n\n if (typeof icon === 'object' && icon.prefix && icon.iconName) {\n return {\n prefix: icon.prefix,\n iconName: byAlias(icon.prefix, icon.iconName) || icon.iconName\n };\n }\n\n if (Array.isArray(icon) && icon.length === 2) {\n const iconName = icon[1].indexOf('fa-') === 0 ? icon[1].slice(3) : icon[1];\n const prefix = getCanonicalPrefix(icon[0]);\n return {\n prefix,\n iconName: byAlias(prefix, iconName) || iconName\n };\n }\n\n if (typeof icon === 'string' && (icon.indexOf(\"\".concat(config.cssPrefix, \"-\")) > -1 || icon.match(ICON_SELECTION_SYNTAX_PATTERN))) {\n const canonicalIcon = getCanonicalIcon(icon.split(' '), {\n skipLookups: true\n });\n return {\n prefix: canonicalIcon.prefix || getDefaultUsablePrefix(),\n iconName: byAlias(canonicalIcon.prefix, canonicalIcon.iconName) || canonicalIcon.iconName\n };\n }\n\n if (typeof icon === 'string') {\n const prefix = getDefaultUsablePrefix();\n return {\n prefix,\n iconName: byAlias(prefix, icon) || icon\n };\n }\n }\n};\nconst api = {\n noAuto,\n config,\n dom,\n parse,\n library,\n findIconDefinition,\n toHtml\n};\n\nconst autoReplace = function () {\n let params = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};\n const {\n autoReplaceSvgRoot = DOCUMENT\n } = params;\n if ((Object.keys(namespace.styles).length > 0 || config.autoFetchSvg) && IS_DOM && config.autoReplaceSvg) api.dom.i2svg({\n node: autoReplaceSvgRoot\n });\n};\n\nfunction domVariants(val, abstractCreator) {\n Object.defineProperty(val, 'abstract', {\n get: abstractCreator\n });\n Object.defineProperty(val, 'html', {\n get: function () {\n return val.abstract.map(a => toHtml(a));\n }\n });\n Object.defineProperty(val, 'node', {\n get: function () {\n if (!IS_DOM) return;\n const container = DOCUMENT.createElement('div');\n container.innerHTML = val.html;\n return container.children;\n }\n });\n return val;\n}\n\nfunction asIcon (_ref) {\n let {\n children,\n main,\n mask,\n attributes,\n styles,\n transform\n } = _ref;\n\n if (transformIsMeaningful(transform) && main.found && !mask.found) {\n const {\n width,\n height\n } = main;\n const offset = {\n x: width / height / 2,\n y: 0.5\n };\n attributes['style'] = joinStyles({ ...styles,\n 'transform-origin': \"\".concat(offset.x + transform.x / 16, \"em \").concat(offset.y + transform.y / 16, \"em\")\n });\n }\n\n return [{\n tag: 'svg',\n attributes,\n children\n }];\n}\n\nfunction asSymbol (_ref) {\n let {\n prefix,\n iconName,\n children,\n attributes,\n symbol\n } = _ref;\n const id = symbol === true ? \"\".concat(prefix, \"-\").concat(config.cssPrefix, \"-\").concat(iconName) : symbol;\n return [{\n tag: 'svg',\n attributes: {\n style: 'display: none;'\n },\n children: [{\n tag: 'symbol',\n attributes: { ...attributes,\n id\n },\n children\n }]\n }];\n}\n\nfunction makeInlineSvgAbstract(params) {\n const {\n icons: {\n main,\n mask\n },\n prefix,\n iconName,\n transform,\n symbol,\n title,\n maskId,\n titleId,\n extra,\n watchable = false\n } = params;\n const {\n width,\n height\n } = mask.found ? mask : main;\n const isUploadedIcon = prefix === 'fak';\n const attrClass = [config.replacementClass, iconName ? \"\".concat(config.cssPrefix, \"-\").concat(iconName) : ''].filter(c => extra.classes.indexOf(c) === -1).filter(c => c !== '' || !!c).concat(extra.classes).join(' ');\n let content = {\n children: [],\n attributes: { ...extra.attributes,\n 'data-prefix': prefix,\n 'data-icon': iconName,\n 'class': attrClass,\n 'role': extra.attributes.role || 'img',\n 'xmlns': 'http://www.w3.org/2000/svg',\n 'viewBox': \"0 0 \".concat(width, \" \").concat(height)\n }\n };\n const uploadedIconWidthStyle = isUploadedIcon && !~extra.classes.indexOf('fa-fw') ? {\n width: \"\".concat(width / height * 16 * 0.0625, \"em\")\n } : {};\n\n if (watchable) {\n content.attributes[DATA_FA_I2SVG] = '';\n }\n\n if (title) {\n content.children.push({\n tag: 'title',\n attributes: {\n id: content.attributes['aria-labelledby'] || \"title-\".concat(titleId || nextUniqueId())\n },\n children: [title]\n });\n delete content.attributes.title;\n }\n\n const args = { ...content,\n prefix,\n iconName,\n main,\n mask,\n maskId,\n transform,\n symbol,\n styles: { ...uploadedIconWidthStyle,\n ...extra.styles\n }\n };\n const {\n children,\n attributes\n } = mask.found && main.found ? callProvided('generateAbstractMask', args) || {\n children: [],\n attributes: {}\n } : callProvided('generateAbstractIcon', args) || {\n children: [],\n attributes: {}\n };\n args.children = children;\n args.attributes = attributes;\n\n if (symbol) {\n return asSymbol(args);\n } else {\n return asIcon(args);\n }\n}\nfunction makeLayersTextAbstract(params) {\n const {\n content,\n width,\n height,\n transform,\n title,\n extra,\n watchable = false\n } = params;\n const attributes = { ...extra.attributes,\n ...(title ? {\n 'title': title\n } : {}),\n 'class': extra.classes.join(' ')\n };\n\n if (watchable) {\n attributes[DATA_FA_I2SVG] = '';\n }\n\n const styles = { ...extra.styles\n };\n\n if (transformIsMeaningful(transform)) {\n styles['transform'] = transformForCss({\n transform,\n startCentered: true,\n width,\n height\n });\n styles['-webkit-transform'] = styles['transform'];\n }\n\n const styleString = joinStyles(styles);\n\n if (styleString.length > 0) {\n attributes['style'] = styleString;\n }\n\n const val = [];\n val.push({\n tag: 'span',\n attributes,\n children: [content]\n });\n\n if (title) {\n val.push({\n tag: 'span',\n attributes: {\n class: 'sr-only'\n },\n children: [title]\n });\n }\n\n return val;\n}\nfunction makeLayersCounterAbstract(params) {\n const {\n content,\n title,\n extra\n } = params;\n const attributes = { ...extra.attributes,\n ...(title ? {\n 'title': title\n } : {}),\n 'class': extra.classes.join(' ')\n };\n const styleString = joinStyles(extra.styles);\n\n if (styleString.length > 0) {\n attributes['style'] = styleString;\n }\n\n const val = [];\n val.push({\n tag: 'span',\n attributes,\n children: [content]\n });\n\n if (title) {\n val.push({\n tag: 'span',\n attributes: {\n class: 'sr-only'\n },\n children: [title]\n });\n }\n\n return val;\n}\n\nconst {\n styles: styles$1\n} = namespace;\nfunction asFoundIcon(icon) {\n const width = icon[0];\n const height = icon[1];\n const [vectorData] = icon.slice(4);\n let element = null;\n\n if (Array.isArray(vectorData)) {\n element = {\n tag: 'g',\n attributes: {\n class: \"\".concat(config.cssPrefix, \"-\").concat(DUOTONE_CLASSES.GROUP)\n },\n children: [{\n tag: 'path',\n attributes: {\n class: \"\".concat(config.cssPrefix, \"-\").concat(DUOTONE_CLASSES.SECONDARY),\n fill: 'currentColor',\n d: vectorData[0]\n }\n }, {\n tag: 'path',\n attributes: {\n class: \"\".concat(config.cssPrefix, \"-\").concat(DUOTONE_CLASSES.PRIMARY),\n fill: 'currentColor',\n d: vectorData[1]\n }\n }]\n };\n } else {\n element = {\n tag: 'path',\n attributes: {\n fill: 'currentColor',\n d: vectorData\n }\n };\n }\n\n return {\n found: true,\n width,\n height,\n icon: element\n };\n}\nconst missingIconResolutionMixin = {\n found: false,\n width: 512,\n height: 512\n};\n\nfunction maybeNotifyMissing(iconName, prefix) {\n if (!PRODUCTION && !config.showMissingIcons && iconName) {\n console.error(\"Icon with name \\\"\".concat(iconName, \"\\\" and prefix \\\"\").concat(prefix, \"\\\" is missing.\"));\n }\n}\n\nfunction findIcon(iconName, prefix) {\n let givenPrefix = prefix;\n\n if (prefix === 'fa' && config.styleDefault !== null) {\n prefix = getDefaultUsablePrefix();\n }\n\n return new Promise((resolve, reject) => {\n if (givenPrefix === 'fa') {\n const shim = byOldName(iconName) || {};\n iconName = shim.iconName || iconName;\n prefix = shim.prefix || prefix;\n }\n\n if (iconName && prefix && styles$1[prefix] && styles$1[prefix][iconName]) {\n const icon = styles$1[prefix][iconName];\n return resolve(asFoundIcon(icon));\n }\n\n maybeNotifyMissing(iconName, prefix);\n resolve({ ...missingIconResolutionMixin,\n icon: config.showMissingIcons && iconName ? callProvided('missingIconAbstract') || {} : {}\n });\n });\n}\n\nconst noop$1 = () => {};\n\nconst p$2 = config.measurePerformance && PERFORMANCE && PERFORMANCE.mark && PERFORMANCE.measure ? PERFORMANCE : {\n mark: noop$1,\n measure: noop$1\n};\nconst preamble = \"FA \\\"6.6.0\\\"\";\n\nconst begin = name => {\n p$2.mark(\"\".concat(preamble, \" \").concat(name, \" begins\"));\n return () => end(name);\n};\n\nconst end = name => {\n p$2.mark(\"\".concat(preamble, \" \").concat(name, \" ends\"));\n p$2.measure(\"\".concat(preamble, \" \").concat(name), \"\".concat(preamble, \" \").concat(name, \" begins\"), \"\".concat(preamble, \" \").concat(name, \" ends\"));\n};\n\nvar perf = {\n begin,\n end\n};\n\nconst noop$2 = () => {};\n\nfunction isWatched(node) {\n const i2svg = node.getAttribute ? node.getAttribute(DATA_FA_I2SVG) : null;\n return typeof i2svg === 'string';\n}\n\nfunction hasPrefixAndIcon(node) {\n const prefix = node.getAttribute ? node.getAttribute(DATA_PREFIX) : null;\n const icon = node.getAttribute ? node.getAttribute(DATA_ICON) : null;\n return prefix && icon;\n}\n\nfunction hasBeenReplaced(node) {\n return node && node.classList && node.classList.contains && node.classList.contains(config.replacementClass);\n}\n\nfunction getMutator() {\n if (config.autoReplaceSvg === true) {\n return mutators.replace;\n }\n\n const mutator = mutators[config.autoReplaceSvg];\n return mutator || mutators.replace;\n}\n\nfunction createElementNS(tag) {\n return DOCUMENT.createElementNS('http://www.w3.org/2000/svg', tag);\n}\n\nfunction createElement(tag) {\n return DOCUMENT.createElement(tag);\n}\n\nfunction convertSVG(abstractObj) {\n let params = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n const {\n ceFn = abstractObj.tag === 'svg' ? createElementNS : createElement\n } = params;\n\n if (typeof abstractObj === 'string') {\n return DOCUMENT.createTextNode(abstractObj);\n }\n\n const tag = ceFn(abstractObj.tag);\n Object.keys(abstractObj.attributes || []).forEach(function (key) {\n tag.setAttribute(key, abstractObj.attributes[key]);\n });\n const children = abstractObj.children || [];\n children.forEach(function (child) {\n tag.appendChild(convertSVG(child, {\n ceFn\n }));\n });\n return tag;\n}\n\nfunction nodeAsComment(node) {\n let comment = \" \".concat(node.outerHTML, \" \");\n /* BEGIN.ATTRIBUTION */\n\n comment = \"\".concat(comment, \"Font Awesome fontawesome.com \");\n /* END.ATTRIBUTION */\n\n return comment;\n}\n\nconst mutators = {\n replace: function (mutation) {\n const node = mutation[0];\n\n if (node.parentNode) {\n mutation[1].forEach(abstract => {\n node.parentNode.insertBefore(convertSVG(abstract), node);\n });\n\n if (node.getAttribute(DATA_FA_I2SVG) === null && config.keepOriginalSource) {\n let comment = DOCUMENT.createComment(nodeAsComment(node));\n node.parentNode.replaceChild(comment, node);\n } else {\n node.remove();\n }\n }\n },\n nest: function (mutation) {\n const node = mutation[0];\n const abstract = mutation[1]; // If we already have a replaced node we do not want to continue nesting within it.\n // Short-circuit to the standard replacement\n\n if (~classArray(node).indexOf(config.replacementClass)) {\n return mutators.replace(mutation);\n }\n\n const forSvg = new RegExp(\"\".concat(config.cssPrefix, \"-.*\"));\n delete abstract[0].attributes.id;\n\n if (abstract[0].attributes.class) {\n const splitClasses = abstract[0].attributes.class.split(' ').reduce((acc, cls) => {\n if (cls === config.replacementClass || cls.match(forSvg)) {\n acc.toSvg.push(cls);\n } else {\n acc.toNode.push(cls);\n }\n\n return acc;\n }, {\n toNode: [],\n toSvg: []\n });\n abstract[0].attributes.class = splitClasses.toSvg.join(' ');\n\n if (splitClasses.toNode.length === 0) {\n node.removeAttribute('class');\n } else {\n node.setAttribute('class', splitClasses.toNode.join(' '));\n }\n }\n\n const newInnerHTML = abstract.map(a => toHtml(a)).join('\\n');\n node.setAttribute(DATA_FA_I2SVG, '');\n node.innerHTML = newInnerHTML;\n }\n};\n\nfunction performOperationSync(op) {\n op();\n}\n\nfunction perform(mutations, callback) {\n const callbackFunction = typeof callback === 'function' ? callback : noop$2;\n\n if (mutations.length === 0) {\n callbackFunction();\n } else {\n let frame = performOperationSync;\n\n if (config.mutateApproach === MUTATION_APPROACH_ASYNC) {\n frame = WINDOW.requestAnimationFrame || performOperationSync;\n }\n\n frame(() => {\n const mutator = getMutator();\n const mark = perf.begin('mutate');\n mutations.map(mutator);\n mark();\n callbackFunction();\n });\n }\n}\nlet disabled = false;\nfunction disableObservation() {\n disabled = true;\n}\nfunction enableObservation() {\n disabled = false;\n}\nlet mo$1 = null;\nfunction observe(options) {\n if (!MUTATION_OBSERVER) {\n return;\n }\n\n if (!config.observeMutations) {\n return;\n }\n\n const {\n treeCallback = noop$2,\n nodeCallback = noop$2,\n pseudoElementsCallback = noop$2,\n observeMutationsRoot = DOCUMENT\n } = options;\n mo$1 = new MUTATION_OBSERVER(objects => {\n if (disabled) return;\n const defaultPrefix = getDefaultUsablePrefix();\n toArray(objects).forEach(mutationRecord => {\n if (mutationRecord.type === 'childList' && mutationRecord.addedNodes.length > 0 && !isWatched(mutationRecord.addedNodes[0])) {\n if (config.searchPseudoElements) {\n pseudoElementsCallback(mutationRecord.target);\n }\n\n treeCallback(mutationRecord.target);\n }\n\n if (mutationRecord.type === 'attributes' && mutationRecord.target.parentNode && config.searchPseudoElements) {\n pseudoElementsCallback(mutationRecord.target.parentNode);\n }\n\n if (mutationRecord.type === 'attributes' && isWatched(mutationRecord.target) && ~ATTRIBUTES_WATCHED_FOR_MUTATION.indexOf(mutationRecord.attributeName)) {\n if (mutationRecord.attributeName === 'class' && hasPrefixAndIcon(mutationRecord.target)) {\n const {\n prefix,\n iconName\n } = getCanonicalIcon(classArray(mutationRecord.target));\n mutationRecord.target.setAttribute(DATA_PREFIX, prefix || defaultPrefix);\n if (iconName) mutationRecord.target.setAttribute(DATA_ICON, iconName);\n } else if (hasBeenReplaced(mutationRecord.target)) {\n nodeCallback(mutationRecord.target);\n }\n }\n });\n });\n if (!IS_DOM) return;\n mo$1.observe(observeMutationsRoot, {\n childList: true,\n attributes: true,\n characterData: true,\n subtree: true\n });\n}\nfunction disconnect() {\n if (!mo$1) return;\n mo$1.disconnect();\n}\n\nfunction styleParser (node) {\n const style = node.getAttribute('style');\n let val = [];\n\n if (style) {\n val = style.split(';').reduce((acc, style) => {\n const styles = style.split(':');\n const prop = styles[0];\n const value = styles.slice(1);\n\n if (prop && value.length > 0) {\n acc[prop] = value.join(':').trim();\n }\n\n return acc;\n }, {});\n }\n\n return val;\n}\n\nfunction classParser (node) {\n const existingPrefix = node.getAttribute('data-prefix');\n const existingIconName = node.getAttribute('data-icon');\n const innerText = node.innerText !== undefined ? node.innerText.trim() : '';\n let val = getCanonicalIcon(classArray(node));\n\n if (!val.prefix) {\n val.prefix = getDefaultUsablePrefix();\n }\n\n if (existingPrefix && existingIconName) {\n val.prefix = existingPrefix;\n val.iconName = existingIconName;\n }\n\n if (val.iconName && val.prefix) {\n return val;\n }\n\n if (val.prefix && innerText.length > 0) {\n val.iconName = byLigature(val.prefix, node.innerText) || byUnicode(val.prefix, toHex(node.innerText));\n }\n\n if (!val.iconName && config.autoFetchSvg && node.firstChild && node.firstChild.nodeType === Node.TEXT_NODE) {\n val.iconName = node.firstChild.data;\n }\n\n return val;\n}\n\nfunction attributesParser (node) {\n const extraAttributes = toArray(node.attributes).reduce((acc, attr) => {\n if (acc.name !== 'class' && acc.name !== 'style') {\n acc[attr.name] = attr.value;\n }\n\n return acc;\n }, {});\n const title = node.getAttribute('title');\n const titleId = node.getAttribute('data-fa-title-id');\n\n if (config.autoA11y) {\n if (title) {\n extraAttributes['aria-labelledby'] = \"\".concat(config.replacementClass, \"-title-\").concat(titleId || nextUniqueId());\n } else {\n extraAttributes['aria-hidden'] = 'true';\n extraAttributes['focusable'] = 'false';\n }\n }\n\n return extraAttributes;\n}\n\nfunction blankMeta() {\n return {\n iconName: null,\n title: null,\n titleId: null,\n prefix: null,\n transform: meaninglessTransform,\n symbol: false,\n mask: {\n iconName: null,\n prefix: null,\n rest: []\n },\n maskId: null,\n extra: {\n classes: [],\n styles: {},\n attributes: {}\n }\n };\n}\nfunction parseMeta(node) {\n let parser = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {\n styleParser: true\n };\n const {\n iconName,\n prefix,\n rest: extraClasses\n } = classParser(node);\n const extraAttributes = attributesParser(node);\n const pluginMeta = chainHooks('parseNodeAttributes', {}, node);\n let extraStyles = parser.styleParser ? styleParser(node) : [];\n return {\n iconName,\n title: node.getAttribute('title'),\n titleId: node.getAttribute('data-fa-title-id'),\n prefix,\n transform: meaninglessTransform,\n mask: {\n iconName: null,\n prefix: null,\n rest: []\n },\n maskId: null,\n symbol: false,\n extra: {\n classes: extraClasses,\n styles: extraStyles,\n attributes: extraAttributes\n },\n ...pluginMeta\n };\n}\n\nconst {\n styles: styles$2\n} = namespace;\n\nfunction generateMutation(node) {\n const nodeMeta = config.autoReplaceSvg === 'nest' ? parseMeta(node, {\n styleParser: false\n }) : parseMeta(node);\n\n if (~nodeMeta.extra.classes.indexOf(LAYERS_TEXT_CLASSNAME)) {\n return callProvided('generateLayersText', node, nodeMeta);\n } else {\n return callProvided('generateSvgReplacementMutation', node, nodeMeta);\n }\n}\n\nlet knownPrefixes = new Set();\nFAMILIES.map(family => {\n knownPrefixes.add(\"fa-\".concat(family));\n});\nObject.keys(PREFIX_TO_STYLE[a]).map(knownPrefixes.add.bind(knownPrefixes));\nObject.keys(PREFIX_TO_STYLE[r]).map(knownPrefixes.add.bind(knownPrefixes));\nObject.keys(PREFIX_TO_STYLE[o]).map(knownPrefixes.add.bind(knownPrefixes));\nknownPrefixes = [...knownPrefixes];\n\nfunction onTree(root) {\n let callback = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : null;\n if (!IS_DOM) return Promise.resolve();\n const htmlClassList = DOCUMENT.documentElement.classList;\n\n const hclAdd = suffix => htmlClassList.add(\"\".concat(HTML_CLASS_I2SVG_BASE_CLASS, \"-\").concat(suffix));\n\n const hclRemove = suffix => htmlClassList.remove(\"\".concat(HTML_CLASS_I2SVG_BASE_CLASS, \"-\").concat(suffix));\n\n const prefixes = config.autoFetchSvg ? knownPrefixes : FAMILIES.map(f$$1 => \"fa-\".concat(f$$1)).concat(Object.keys(styles$2));\n\n if (!prefixes.includes('fa')) {\n prefixes.push('fa');\n }\n\n const prefixesDomQuery = [\".\".concat(LAYERS_TEXT_CLASSNAME, \":not([\").concat(DATA_FA_I2SVG, \"])\")].concat(prefixes.map(p$$1 => \".\".concat(p$$1, \":not([\").concat(DATA_FA_I2SVG, \"])\"))).join(', ');\n\n if (prefixesDomQuery.length === 0) {\n return Promise.resolve();\n }\n\n let candidates = [];\n\n try {\n candidates = toArray(root.querySelectorAll(prefixesDomQuery));\n } catch (e$$1) {// noop\n }\n\n if (candidates.length > 0) {\n hclAdd('pending');\n hclRemove('complete');\n } else {\n return Promise.resolve();\n }\n\n const mark = perf.begin('onTree');\n const mutations = candidates.reduce((acc, node) => {\n try {\n const mutation = generateMutation(node);\n\n if (mutation) {\n acc.push(mutation);\n }\n } catch (e$$1) {\n if (!PRODUCTION) {\n if (e$$1.name === 'MissingIcon') {\n console.error(e$$1);\n }\n }\n }\n\n return acc;\n }, []);\n return new Promise((resolve, reject) => {\n Promise.all(mutations).then(resolvedMutations => {\n perform(resolvedMutations, () => {\n hclAdd('active');\n hclAdd('complete');\n hclRemove('pending');\n if (typeof callback === 'function') callback();\n mark();\n resolve();\n });\n }).catch(e$$1 => {\n mark();\n reject(e$$1);\n });\n });\n}\n\nfunction onNode(node) {\n let callback = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : null;\n generateMutation(node).then(mutation => {\n if (mutation) {\n perform([mutation], callback);\n }\n });\n}\n\nfunction resolveIcons(next) {\n return function (maybeIconDefinition) {\n let params = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n const iconDefinition = (maybeIconDefinition || {}).icon ? maybeIconDefinition : findIconDefinition(maybeIconDefinition || {});\n let {\n mask\n } = params;\n\n if (mask) {\n mask = (mask || {}).icon ? mask : findIconDefinition(mask || {});\n }\n\n return next(iconDefinition, { ...params,\n mask\n });\n };\n}\n\nconst render = function (iconDefinition) {\n let params = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n const {\n transform = meaninglessTransform,\n symbol = false,\n mask = null,\n maskId = null,\n title = null,\n titleId = null,\n classes = [],\n attributes = {},\n styles = {}\n } = params;\n if (!iconDefinition) return;\n const {\n prefix,\n iconName,\n icon\n } = iconDefinition;\n return domVariants({\n type: 'icon',\n ...iconDefinition\n }, () => {\n callHooks('beforeDOMElementCreation', {\n iconDefinition,\n params\n });\n\n if (config.autoA11y) {\n if (title) {\n attributes['aria-labelledby'] = \"\".concat(config.replacementClass, \"-title-\").concat(titleId || nextUniqueId());\n } else {\n attributes['aria-hidden'] = 'true';\n attributes['focusable'] = 'false';\n }\n }\n\n return makeInlineSvgAbstract({\n icons: {\n main: asFoundIcon(icon),\n mask: mask ? asFoundIcon(mask.icon) : {\n found: false,\n width: null,\n height: null,\n icon: {}\n }\n },\n prefix,\n iconName,\n transform: { ...meaninglessTransform,\n ...transform\n },\n symbol,\n title,\n maskId,\n titleId,\n extra: {\n attributes,\n styles,\n classes\n }\n });\n });\n};\nvar ReplaceElements = {\n mixout() {\n return {\n icon: resolveIcons(render)\n };\n },\n\n hooks() {\n return {\n mutationObserverCallbacks(accumulator) {\n accumulator.treeCallback = onTree;\n accumulator.nodeCallback = onNode;\n return accumulator;\n }\n\n };\n },\n\n provides(providers$$1) {\n providers$$1.i2svg = function (params) {\n const {\n node = DOCUMENT,\n callback = () => {}\n } = params;\n return onTree(node, callback);\n };\n\n providers$$1.generateSvgReplacementMutation = function (node, nodeMeta) {\n const {\n iconName,\n title,\n titleId,\n prefix,\n transform,\n symbol,\n mask,\n maskId,\n extra\n } = nodeMeta;\n return new Promise((resolve, reject) => {\n Promise.all([findIcon(iconName, prefix), mask.iconName ? findIcon(mask.iconName, mask.prefix) : Promise.resolve({\n found: false,\n width: 512,\n height: 512,\n icon: {}\n })]).then(_ref => {\n let [main, mask] = _ref;\n resolve([node, makeInlineSvgAbstract({\n icons: {\n main,\n mask\n },\n prefix,\n iconName,\n transform,\n symbol,\n maskId,\n title,\n titleId,\n extra,\n watchable: true\n })]);\n }).catch(reject);\n });\n };\n\n providers$$1.generateAbstractIcon = function (_ref2) {\n let {\n children,\n attributes,\n main,\n transform,\n styles\n } = _ref2;\n const styleString = joinStyles(styles);\n\n if (styleString.length > 0) {\n attributes['style'] = styleString;\n }\n\n let nextChild;\n\n if (transformIsMeaningful(transform)) {\n nextChild = callProvided('generateAbstractTransformGrouping', {\n main,\n transform,\n containerWidth: main.width,\n iconWidth: main.width\n });\n }\n\n children.push(nextChild || main.icon);\n return {\n children,\n attributes\n };\n };\n }\n\n};\n\nvar Layers = {\n mixout() {\n return {\n layer(assembler) {\n let params = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n const {\n classes = []\n } = params;\n return domVariants({\n type: 'layer'\n }, () => {\n callHooks('beforeDOMElementCreation', {\n assembler,\n params\n });\n let children = [];\n assembler(args => {\n Array.isArray(args) ? args.map(a => {\n children = children.concat(a.abstract);\n }) : children = children.concat(args.abstract);\n });\n return [{\n tag: 'span',\n attributes: {\n class: [\"\".concat(config.cssPrefix, \"-layers\"), ...classes].join(' ')\n },\n children\n }];\n });\n }\n\n };\n }\n\n};\n\nvar LayersCounter = {\n mixout() {\n return {\n counter(content) {\n let params = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n const {\n title = null,\n classes = [],\n attributes = {},\n styles = {}\n } = params;\n return domVariants({\n type: 'counter',\n content\n }, () => {\n callHooks('beforeDOMElementCreation', {\n content,\n params\n });\n return makeLayersCounterAbstract({\n content: content.toString(),\n title,\n extra: {\n attributes,\n styles,\n classes: [\"\".concat(config.cssPrefix, \"-layers-counter\"), ...classes]\n }\n });\n });\n }\n\n };\n }\n\n};\n\nvar LayersText = {\n mixout() {\n return {\n text(content) {\n let params = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n const {\n transform = meaninglessTransform,\n title = null,\n classes = [],\n attributes = {},\n styles = {}\n } = params;\n return domVariants({\n type: 'text',\n content\n }, () => {\n callHooks('beforeDOMElementCreation', {\n content,\n params\n });\n return makeLayersTextAbstract({\n content,\n transform: { ...meaninglessTransform,\n ...transform\n },\n title,\n extra: {\n attributes,\n styles,\n classes: [\"\".concat(config.cssPrefix, \"-layers-text\"), ...classes]\n }\n });\n });\n }\n\n };\n },\n\n provides(providers$$1) {\n providers$$1.generateLayersText = function (node, nodeMeta) {\n const {\n title,\n transform,\n extra\n } = nodeMeta;\n let width = null;\n let height = null;\n\n if (IS_IE) {\n const computedFontSize = parseInt(getComputedStyle(node).fontSize, 10);\n const boundingClientRect = node.getBoundingClientRect();\n width = boundingClientRect.width / computedFontSize;\n height = boundingClientRect.height / computedFontSize;\n }\n\n if (config.autoA11y && !title) {\n extra.attributes['aria-hidden'] = 'true';\n }\n\n return Promise.resolve([node, makeLayersTextAbstract({\n content: node.innerHTML,\n width,\n height,\n transform,\n title,\n extra,\n watchable: true\n })]);\n };\n }\n\n};\n\nconst CLEAN_CONTENT_PATTERN = new RegExp('\\u{22}', 'ug');\nconst SECONDARY_UNICODE_RANGE = [1105920, 1112319];\nconst _FONT_FAMILY_WEIGHT_TO_PREFIX = { ...{\n FontAwesome: {\n normal: 'fas',\n 400: 'fas'\n }\n },\n ...eo,\n ...ao,\n ...mo\n};\nconst FONT_FAMILY_WEIGHT_TO_PREFIX = Object.keys(_FONT_FAMILY_WEIGHT_TO_PREFIX).reduce((acc, key) => {\n acc[key.toLowerCase()] = _FONT_FAMILY_WEIGHT_TO_PREFIX[key];\n return acc;\n}, {});\nconst FONT_FAMILY_WEIGHT_FALLBACK = Object.keys(FONT_FAMILY_WEIGHT_TO_PREFIX).reduce((acc, fontFamily) => {\n const weights = FONT_FAMILY_WEIGHT_TO_PREFIX[fontFamily];\n acc[fontFamily] = weights[900] || [...Object.entries(weights)][0][1];\n return acc;\n}, {});\nfunction hexValueFromContent(content) {\n const cleaned = content.replace(CLEAN_CONTENT_PATTERN, '');\n const codePoint = codePointAt(cleaned, 0);\n const isPrependTen = codePoint >= SECONDARY_UNICODE_RANGE[0] && codePoint <= SECONDARY_UNICODE_RANGE[1];\n const isDoubled = cleaned.length === 2 ? cleaned[0] === cleaned[1] : false;\n return {\n value: isDoubled ? toHex(cleaned[0]) : toHex(cleaned),\n isSecondary: isPrependTen || isDoubled\n };\n}\nfunction getPrefix(fontFamily, fontWeight) {\n const fontFamilySanitized = fontFamily.replace(/^['\"]|['\"]$/g, '').toLowerCase();\n const fontWeightInteger = parseInt(fontWeight);\n const fontWeightSanitized = isNaN(fontWeightInteger) ? 'normal' : fontWeightInteger;\n return (FONT_FAMILY_WEIGHT_TO_PREFIX[fontFamilySanitized] || {})[fontWeightSanitized] || FONT_FAMILY_WEIGHT_FALLBACK[fontFamilySanitized];\n}\n\nfunction replaceForPosition(node, position) {\n const pendingAttribute = \"\".concat(DATA_FA_PSEUDO_ELEMENT_PENDING).concat(position.replace(':', '-'));\n return new Promise((resolve, reject) => {\n if (node.getAttribute(pendingAttribute) !== null) {\n // This node is already being processed\n return resolve();\n }\n\n const children = toArray(node.children);\n const alreadyProcessedPseudoElement = children.filter(c => c.getAttribute(DATA_FA_PSEUDO_ELEMENT) === position)[0];\n const styles = WINDOW.getComputedStyle(node, position);\n const fontFamily = styles.getPropertyValue('font-family');\n const fontFamilyMatch = fontFamily.match(FONT_FAMILY_PATTERN);\n const fontWeight = styles.getPropertyValue('font-weight');\n const content = styles.getPropertyValue('content');\n\n if (alreadyProcessedPseudoElement && !fontFamilyMatch) {\n // If we've already processed it but the current computed style does not result in a font-family,\n // that probably means that a class name that was previously present to make the icon has been\n // removed. So we now should delete the icon.\n node.removeChild(alreadyProcessedPseudoElement);\n return resolve();\n } else if (fontFamilyMatch && content !== 'none' && content !== '') {\n const content = styles.getPropertyValue('content');\n let prefix = getPrefix(fontFamily, fontWeight);\n const {\n value: hexValue,\n isSecondary\n } = hexValueFromContent(content);\n const isV4 = fontFamilyMatch[0].startsWith('FontAwesome');\n let iconName = byUnicode(prefix, hexValue);\n let iconIdentifier = iconName;\n\n if (isV4) {\n const iconName4 = byOldUnicode(hexValue);\n\n if (iconName4.iconName && iconName4.prefix) {\n iconName = iconName4.iconName;\n prefix = iconName4.prefix;\n }\n } // Only convert the pseudo element in this ::before/::after position into an icon if we haven't\n // already done so with the same prefix and iconName\n\n\n if (iconName && !isSecondary && (!alreadyProcessedPseudoElement || alreadyProcessedPseudoElement.getAttribute(DATA_PREFIX) !== prefix || alreadyProcessedPseudoElement.getAttribute(DATA_ICON) !== iconIdentifier)) {\n node.setAttribute(pendingAttribute, iconIdentifier);\n\n if (alreadyProcessedPseudoElement) {\n // Delete the old one, since we're replacing it with a new one\n node.removeChild(alreadyProcessedPseudoElement);\n }\n\n const meta = blankMeta();\n const {\n extra\n } = meta;\n extra.attributes[DATA_FA_PSEUDO_ELEMENT] = position;\n findIcon(iconName, prefix).then(main => {\n const abstract = makeInlineSvgAbstract({ ...meta,\n icons: {\n main,\n mask: emptyCanonicalIcon()\n },\n prefix,\n iconName: iconIdentifier,\n extra,\n watchable: true\n });\n const element = DOCUMENT.createElementNS('http://www.w3.org/2000/svg', 'svg');\n\n if (position === '::before') {\n node.insertBefore(element, node.firstChild);\n } else {\n node.appendChild(element);\n }\n\n element.outerHTML = abstract.map(a => toHtml(a)).join('\\n');\n node.removeAttribute(pendingAttribute);\n resolve();\n }).catch(reject);\n } else {\n resolve();\n }\n } else {\n resolve();\n }\n });\n}\n\nfunction replace(node) {\n return Promise.all([replaceForPosition(node, '::before'), replaceForPosition(node, '::after')]);\n}\n\nfunction processable(node) {\n return node.parentNode !== document.head && !~TAGNAMES_TO_SKIP_FOR_PSEUDOELEMENTS.indexOf(node.tagName.toUpperCase()) && !node.getAttribute(DATA_FA_PSEUDO_ELEMENT) && (!node.parentNode || node.parentNode.tagName !== 'svg');\n}\n\nfunction searchPseudoElements(root) {\n if (!IS_DOM) return;\n return new Promise((resolve, reject) => {\n const operations = toArray(root.querySelectorAll('*')).filter(processable).map(replace);\n const end = perf.begin('searchPseudoElements');\n disableObservation();\n Promise.all(operations).then(() => {\n end();\n enableObservation();\n resolve();\n }).catch(() => {\n end();\n enableObservation();\n reject();\n });\n });\n}\n\nvar PseudoElements = {\n hooks() {\n return {\n mutationObserverCallbacks(accumulator) {\n accumulator.pseudoElementsCallback = searchPseudoElements;\n return accumulator;\n }\n\n };\n },\n\n provides(providers) {\n providers.pseudoElements2svg = function (params) {\n const {\n node = DOCUMENT\n } = params;\n\n if (config.searchPseudoElements) {\n searchPseudoElements(node);\n }\n };\n }\n\n};\n\nlet _unwatched = false;\nvar MutationObserver$1 = {\n mixout() {\n return {\n dom: {\n unwatch() {\n disableObservation();\n _unwatched = true;\n }\n\n }\n };\n },\n\n hooks() {\n return {\n bootstrap() {\n observe(chainHooks('mutationObserverCallbacks', {}));\n },\n\n noAuto() {\n disconnect();\n },\n\n watch(params) {\n const {\n observeMutationsRoot\n } = params;\n\n if (_unwatched) {\n enableObservation();\n } else {\n observe(chainHooks('mutationObserverCallbacks', {\n observeMutationsRoot\n }));\n }\n }\n\n };\n }\n\n};\n\nconst parseTransformString = transformString => {\n let transform = {\n size: 16,\n x: 0,\n y: 0,\n flipX: false,\n flipY: false,\n rotate: 0\n };\n return transformString.toLowerCase().split(' ').reduce((acc, n) => {\n const parts = n.toLowerCase().split('-');\n const first = parts[0];\n let rest = parts.slice(1).join('-');\n\n if (first && rest === 'h') {\n acc.flipX = true;\n return acc;\n }\n\n if (first && rest === 'v') {\n acc.flipY = true;\n return acc;\n }\n\n rest = parseFloat(rest);\n\n if (isNaN(rest)) {\n return acc;\n }\n\n switch (first) {\n case 'grow':\n acc.size = acc.size + rest;\n break;\n\n case 'shrink':\n acc.size = acc.size - rest;\n break;\n\n case 'left':\n acc.x = acc.x - rest;\n break;\n\n case 'right':\n acc.x = acc.x + rest;\n break;\n\n case 'up':\n acc.y = acc.y - rest;\n break;\n\n case 'down':\n acc.y = acc.y + rest;\n break;\n\n case 'rotate':\n acc.rotate = acc.rotate + rest;\n break;\n }\n\n return acc;\n }, transform);\n};\nvar PowerTransforms = {\n mixout() {\n return {\n parse: {\n transform: transformString => {\n return parseTransformString(transformString);\n }\n }\n };\n },\n\n hooks() {\n return {\n parseNodeAttributes(accumulator, node) {\n const transformString = node.getAttribute('data-fa-transform');\n\n if (transformString) {\n accumulator.transform = parseTransformString(transformString);\n }\n\n return accumulator;\n }\n\n };\n },\n\n provides(providers) {\n providers.generateAbstractTransformGrouping = function (_ref) {\n let {\n main,\n transform,\n containerWidth,\n iconWidth\n } = _ref;\n const outer = {\n transform: \"translate(\".concat(containerWidth / 2, \" 256)\")\n };\n const innerTranslate = \"translate(\".concat(transform.x * 32, \", \").concat(transform.y * 32, \") \");\n const innerScale = \"scale(\".concat(transform.size / 16 * (transform.flipX ? -1 : 1), \", \").concat(transform.size / 16 * (transform.flipY ? -1 : 1), \") \");\n const innerRotate = \"rotate(\".concat(transform.rotate, \" 0 0)\");\n const inner = {\n transform: \"\".concat(innerTranslate, \" \").concat(innerScale, \" \").concat(innerRotate)\n };\n const path = {\n transform: \"translate(\".concat(iconWidth / 2 * -1, \" -256)\")\n };\n const operations = {\n outer,\n inner,\n path\n };\n return {\n tag: 'g',\n attributes: { ...operations.outer\n },\n children: [{\n tag: 'g',\n attributes: { ...operations.inner\n },\n children: [{\n tag: main.icon.tag,\n children: main.icon.children,\n attributes: { ...main.icon.attributes,\n ...operations.path\n }\n }]\n }]\n };\n };\n }\n\n};\n\nconst ALL_SPACE = {\n x: 0,\n y: 0,\n width: '100%',\n height: '100%'\n};\n\nfunction fillBlack(abstract) {\n let force = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : true;\n\n if (abstract.attributes && (abstract.attributes.fill || force)) {\n abstract.attributes.fill = 'black';\n }\n\n return abstract;\n}\n\nfunction deGroup(abstract) {\n if (abstract.tag === 'g') {\n return abstract.children;\n } else {\n return [abstract];\n }\n}\n\nvar Masks = {\n hooks() {\n return {\n parseNodeAttributes(accumulator, node) {\n const maskData = node.getAttribute('data-fa-mask');\n const mask = !maskData ? emptyCanonicalIcon() : getCanonicalIcon(maskData.split(' ').map(i => i.trim()));\n\n if (!mask.prefix) {\n mask.prefix = getDefaultUsablePrefix();\n }\n\n accumulator.mask = mask;\n accumulator.maskId = node.getAttribute('data-fa-mask-id');\n return accumulator;\n }\n\n };\n },\n\n provides(providers) {\n providers.generateAbstractMask = function (_ref) {\n let {\n children,\n attributes,\n main,\n mask,\n maskId: explicitMaskId,\n transform\n } = _ref;\n const {\n width: mainWidth,\n icon: mainPath\n } = main;\n const {\n width: maskWidth,\n icon: maskPath\n } = mask;\n const trans = transformForSvg({\n transform,\n containerWidth: maskWidth,\n iconWidth: mainWidth\n });\n const maskRect = {\n tag: 'rect',\n attributes: { ...ALL_SPACE,\n fill: 'white'\n }\n };\n const maskInnerGroupChildrenMixin = mainPath.children ? {\n children: mainPath.children.map(fillBlack)\n } : {};\n const maskInnerGroup = {\n tag: 'g',\n attributes: { ...trans.inner\n },\n children: [fillBlack({\n tag: mainPath.tag,\n attributes: { ...mainPath.attributes,\n ...trans.path\n },\n ...maskInnerGroupChildrenMixin\n })]\n };\n const maskOuterGroup = {\n tag: 'g',\n attributes: { ...trans.outer\n },\n children: [maskInnerGroup]\n };\n const maskId = \"mask-\".concat(explicitMaskId || nextUniqueId());\n const clipId = \"clip-\".concat(explicitMaskId || nextUniqueId());\n const maskTag = {\n tag: 'mask',\n attributes: { ...ALL_SPACE,\n id: maskId,\n maskUnits: 'userSpaceOnUse',\n maskContentUnits: 'userSpaceOnUse'\n },\n children: [maskRect, maskOuterGroup]\n };\n const defs = {\n tag: 'defs',\n children: [{\n tag: 'clipPath',\n attributes: {\n id: clipId\n },\n children: deGroup(maskPath)\n }, maskTag]\n };\n children.push(defs, {\n tag: 'rect',\n attributes: {\n fill: 'currentColor',\n 'clip-path': \"url(#\".concat(clipId, \")\"),\n mask: \"url(#\".concat(maskId, \")\"),\n ...ALL_SPACE\n }\n });\n return {\n children,\n attributes\n };\n };\n }\n\n};\n\nvar MissingIconIndicator = {\n provides(providers) {\n let reduceMotion = false;\n\n if (WINDOW.matchMedia) {\n reduceMotion = WINDOW.matchMedia('(prefers-reduced-motion: reduce)').matches;\n }\n\n providers.missingIconAbstract = function () {\n const gChildren = [];\n const FILL = {\n fill: 'currentColor'\n };\n const ANIMATION_BASE = {\n attributeType: 'XML',\n repeatCount: 'indefinite',\n dur: '2s'\n }; // Ring\n\n gChildren.push({\n tag: 'path',\n attributes: { ...FILL,\n d: 'M156.5,447.7l-12.6,29.5c-18.7-9.5-35.9-21.2-51.5-34.9l22.7-22.7C127.6,430.5,141.5,440,156.5,447.7z M40.6,272H8.5 c1.4,21.2,5.4,41.7,11.7,61.1L50,321.2C45.1,305.5,41.8,289,40.6,272z M40.6,240c1.4-18.8,5.2-37,11.1-54.1l-29.5-12.6 C14.7,194.3,10,216.7,8.5,240H40.6z M64.3,156.5c7.8-14.9,17.2-28.8,28.1-41.5L69.7,92.3c-13.7,15.6-25.5,32.8-34.9,51.5 L64.3,156.5z M397,419.6c-13.9,12-29.4,22.3-46.1,30.4l11.9,29.8c20.7-9.9,39.8-22.6,56.9-37.6L397,419.6z M115,92.4 c13.9-12,29.4-22.3,46.1-30.4l-11.9-29.8c-20.7,9.9-39.8,22.6-56.8,37.6L115,92.4z M447.7,355.5c-7.8,14.9-17.2,28.8-28.1,41.5 l22.7,22.7c13.7-15.6,25.5-32.9,34.9-51.5L447.7,355.5z M471.4,272c-1.4,18.8-5.2,37-11.1,54.1l29.5,12.6 c7.5-21.1,12.2-43.5,13.6-66.8H471.4z M321.2,462c-15.7,5-32.2,8.2-49.2,9.4v32.1c21.2-1.4,41.7-5.4,61.1-11.7L321.2,462z M240,471.4c-18.8-1.4-37-5.2-54.1-11.1l-12.6,29.5c21.1,7.5,43.5,12.2,66.8,13.6V471.4z M462,190.8c5,15.7,8.2,32.2,9.4,49.2h32.1 c-1.4-21.2-5.4-41.7-11.7-61.1L462,190.8z M92.4,397c-12-13.9-22.3-29.4-30.4-46.1l-29.8,11.9c9.9,20.7,22.6,39.8,37.6,56.9 L92.4,397z M272,40.6c18.8,1.4,36.9,5.2,54.1,11.1l12.6-29.5C317.7,14.7,295.3,10,272,8.5V40.6z M190.8,50 c15.7-5,32.2-8.2,49.2-9.4V8.5c-21.2,1.4-41.7,5.4-61.1,11.7L190.8,50z M442.3,92.3L419.6,115c12,13.9,22.3,29.4,30.5,46.1 l29.8-11.9C470,128.5,457.3,109.4,442.3,92.3z M397,92.4l22.7-22.7c-15.6-13.7-32.8-25.5-51.5-34.9l-12.6,29.5 C370.4,72.1,384.4,81.5,397,92.4z'\n }\n });\n const OPACITY_ANIMATE = { ...ANIMATION_BASE,\n attributeName: 'opacity'\n };\n const dot = {\n tag: 'circle',\n attributes: { ...FILL,\n cx: '256',\n cy: '364',\n r: '28'\n },\n children: []\n };\n\n if (!reduceMotion) {\n dot.children.push({\n tag: 'animate',\n attributes: { ...ANIMATION_BASE,\n attributeName: 'r',\n values: '28;14;28;28;14;28;'\n }\n }, {\n tag: 'animate',\n attributes: { ...OPACITY_ANIMATE,\n values: '1;0;1;1;0;1;'\n }\n });\n }\n\n gChildren.push(dot);\n gChildren.push({\n tag: 'path',\n attributes: { ...FILL,\n opacity: '1',\n d: 'M263.7,312h-16c-6.6,0-12-5.4-12-12c0-71,77.4-63.9,77.4-107.8c0-20-17.8-40.2-57.4-40.2c-29.1,0-44.3,9.6-59.2,28.7 c-3.9,5-11.1,6-16.2,2.4l-13.1-9.2c-5.6-3.9-6.9-11.8-2.6-17.2c21.2-27.2,46.4-44.7,91.2-44.7c52.3,0,97.4,29.8,97.4,80.2 c0,67.6-77.4,63.5-77.4,107.8C275.7,306.6,270.3,312,263.7,312z'\n },\n children: reduceMotion ? [] : [{\n tag: 'animate',\n attributes: { ...OPACITY_ANIMATE,\n values: '1;0;0;0;0;1;'\n }\n }]\n });\n\n if (!reduceMotion) {\n // Exclamation\n gChildren.push({\n tag: 'path',\n attributes: { ...FILL,\n opacity: '0',\n d: 'M232.5,134.5l7,168c0.3,6.4,5.6,11.5,12,11.5h9c6.4,0,11.7-5.1,12-11.5l7-168c0.3-6.8-5.2-12.5-12-12.5h-23 C237.7,122,232.2,127.7,232.5,134.5z'\n },\n children: [{\n tag: 'animate',\n attributes: { ...OPACITY_ANIMATE,\n values: '0;0;1;1;0;0;'\n }\n }]\n });\n }\n\n return {\n tag: 'g',\n attributes: {\n 'class': 'missing'\n },\n children: gChildren\n };\n };\n }\n\n};\n\nvar SvgSymbols = {\n hooks() {\n return {\n parseNodeAttributes(accumulator, node) {\n const symbolData = node.getAttribute('data-fa-symbol');\n const symbol = symbolData === null ? false : symbolData === '' ? true : symbolData;\n accumulator['symbol'] = symbol;\n return accumulator;\n }\n\n };\n }\n\n};\n\nvar plugins = [InjectCSS, ReplaceElements, Layers, LayersCounter, LayersText, PseudoElements, MutationObserver$1, PowerTransforms, Masks, MissingIconIndicator, SvgSymbols];\n\nregisterPlugins(plugins, {\n mixoutsTo: api\n});\nconst noAuto$1 = api.noAuto;\nconst config$1 = api.config;\nconst library$1 = api.library;\nconst dom$1 = api.dom;\nconst parse$1 = api.parse;\nconst findIconDefinition$1 = api.findIconDefinition;\nconst toHtml$1 = api.toHtml;\nconst icon = api.icon;\nconst layer = api.layer;\nconst text = api.text;\nconst counter = api.counter;\n\nexport { noAuto$1 as noAuto, config$1 as config, library$1 as library, dom$1 as dom, parse$1 as parse, findIconDefinition$1 as findIconDefinition, toHtml$1 as toHtml, icon, layer, text, counter, api };\n","import { parse, icon } from '@fortawesome/fontawesome-svg-core';\nimport PropTypes from 'prop-types';\nimport React from 'react';\n\nfunction ownKeys(object, enumerableOnly) {\n var keys = Object.keys(object);\n\n if (Object.getOwnPropertySymbols) {\n var symbols = Object.getOwnPropertySymbols(object);\n enumerableOnly && (symbols = symbols.filter(function (sym) {\n return Object.getOwnPropertyDescriptor(object, sym).enumerable;\n })), keys.push.apply(keys, symbols);\n }\n\n return keys;\n}\n\nfunction _objectSpread2(target) {\n for (var i = 1; i < arguments.length; i++) {\n var source = null != arguments[i] ? arguments[i] : {};\n i % 2 ? ownKeys(Object(source), !0).forEach(function (key) {\n _defineProperty(target, key, source[key]);\n }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys(Object(source)).forEach(function (key) {\n Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key));\n });\n }\n\n return target;\n}\n\nfunction _typeof(obj) {\n \"@babel/helpers - typeof\";\n\n return _typeof = \"function\" == typeof Symbol && \"symbol\" == typeof Symbol.iterator ? function (obj) {\n return typeof obj;\n } : function (obj) {\n return obj && \"function\" == typeof Symbol && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj;\n }, _typeof(obj);\n}\n\nfunction _defineProperty(obj, key, value) {\n if (key in obj) {\n Object.defineProperty(obj, key, {\n value: value,\n enumerable: true,\n configurable: true,\n writable: true\n });\n } else {\n obj[key] = value;\n }\n\n return obj;\n}\n\nfunction _objectWithoutPropertiesLoose(source, excluded) {\n if (source == null) return {};\n var target = {};\n var sourceKeys = Object.keys(source);\n var key, i;\n\n for (i = 0; i < sourceKeys.length; i++) {\n key = sourceKeys[i];\n if (excluded.indexOf(key) >= 0) continue;\n target[key] = source[key];\n }\n\n return target;\n}\n\nfunction _objectWithoutProperties(source, excluded) {\n if (source == null) return {};\n\n var target = _objectWithoutPropertiesLoose(source, excluded);\n\n var key, i;\n\n if (Object.getOwnPropertySymbols) {\n var sourceSymbolKeys = Object.getOwnPropertySymbols(source);\n\n for (i = 0; i < sourceSymbolKeys.length; i++) {\n key = sourceSymbolKeys[i];\n if (excluded.indexOf(key) >= 0) continue;\n if (!Object.prototype.propertyIsEnumerable.call(source, key)) continue;\n target[key] = source[key];\n }\n }\n\n return target;\n}\n\nfunction _toConsumableArray(arr) {\n return _arrayWithoutHoles(arr) || _iterableToArray(arr) || _unsupportedIterableToArray(arr) || _nonIterableSpread();\n}\n\nfunction _arrayWithoutHoles(arr) {\n if (Array.isArray(arr)) return _arrayLikeToArray(arr);\n}\n\nfunction _iterableToArray(iter) {\n if (typeof Symbol !== \"undefined\" && iter[Symbol.iterator] != null || iter[\"@@iterator\"] != null) return Array.from(iter);\n}\n\nfunction _unsupportedIterableToArray(o, minLen) {\n if (!o) return;\n if (typeof o === \"string\") return _arrayLikeToArray(o, minLen);\n var n = Object.prototype.toString.call(o).slice(8, -1);\n if (n === \"Object\" && o.constructor) n = o.constructor.name;\n if (n === \"Map\" || n === \"Set\") return Array.from(o);\n if (n === \"Arguments\" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen);\n}\n\nfunction _arrayLikeToArray(arr, len) {\n if (len == null || len > arr.length) len = arr.length;\n\n for (var i = 0, arr2 = new Array(len); i < len; i++) arr2[i] = arr[i];\n\n return arr2;\n}\n\nfunction _nonIterableSpread() {\n throw new TypeError(\"Invalid attempt to spread non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\");\n}\n\n// Get CSS class list from a props object\nfunction classList(props) {\n var _classes;\n\n var beat = props.beat,\n fade = props.fade,\n beatFade = props.beatFade,\n bounce = props.bounce,\n shake = props.shake,\n flash = props.flash,\n spin = props.spin,\n spinPulse = props.spinPulse,\n spinReverse = props.spinReverse,\n pulse = props.pulse,\n fixedWidth = props.fixedWidth,\n inverse = props.inverse,\n border = props.border,\n listItem = props.listItem,\n flip = props.flip,\n size = props.size,\n rotation = props.rotation,\n pull = props.pull; // map of CSS class names to properties\n\n var classes = (_classes = {\n 'fa-beat': beat,\n 'fa-fade': fade,\n 'fa-beat-fade': beatFade,\n 'fa-bounce': bounce,\n 'fa-shake': shake,\n 'fa-flash': flash,\n 'fa-spin': spin,\n 'fa-spin-reverse': spinReverse,\n 'fa-spin-pulse': spinPulse,\n 'fa-pulse': pulse,\n 'fa-fw': fixedWidth,\n 'fa-inverse': inverse,\n 'fa-border': border,\n 'fa-li': listItem,\n 'fa-flip': flip === true,\n 'fa-flip-horizontal': flip === 'horizontal' || flip === 'both',\n 'fa-flip-vertical': flip === 'vertical' || flip === 'both'\n }, _defineProperty(_classes, \"fa-\".concat(size), typeof size !== 'undefined' && size !== null), _defineProperty(_classes, \"fa-rotate-\".concat(rotation), typeof rotation !== 'undefined' && rotation !== null && rotation !== 0), _defineProperty(_classes, \"fa-pull-\".concat(pull), typeof pull !== 'undefined' && pull !== null), _defineProperty(_classes, 'fa-swap-opacity', props.swapOpacity), _classes); // map over all the keys in the classes object\n // return an array of the keys where the value for the key is not null\n\n return Object.keys(classes).map(function (key) {\n return classes[key] ? key : null;\n }).filter(function (key) {\n return key;\n });\n}\n\n// Camelize taken from humps\n// humps is copyright © 2012+ Dom Christie\n// Released under the MIT license.\n// Performant way to determine if object coerces to a number\nfunction _isNumerical(obj) {\n obj = obj - 0; // eslint-disable-next-line no-self-compare\n\n return obj === obj;\n}\n\nfunction camelize(string) {\n if (_isNumerical(string)) {\n return string;\n } // eslint-disable-next-line no-useless-escape\n\n\n string = string.replace(/[\\-_\\s]+(.)?/g, function (match, chr) {\n return chr ? chr.toUpperCase() : '';\n }); // Ensure 1st char is always lowercase\n\n return string.substr(0, 1).toLowerCase() + string.substr(1);\n}\n\nvar _excluded = [\"style\"];\n\nfunction capitalize(val) {\n return val.charAt(0).toUpperCase() + val.slice(1);\n}\n\nfunction styleToObject(style) {\n return style.split(';').map(function (s) {\n return s.trim();\n }).filter(function (s) {\n return s;\n }).reduce(function (acc, pair) {\n var i = pair.indexOf(':');\n var prop = camelize(pair.slice(0, i));\n var value = pair.slice(i + 1).trim();\n prop.startsWith('webkit') ? acc[capitalize(prop)] = value : acc[prop] = value;\n return acc;\n }, {});\n}\n\nfunction convert(createElement, element) {\n var extraProps = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : {};\n\n if (typeof element === 'string') {\n return element;\n }\n\n var children = (element.children || []).map(function (child) {\n return convert(createElement, child);\n });\n /* eslint-disable dot-notation */\n\n var mixins = Object.keys(element.attributes || {}).reduce(function (acc, key) {\n var val = element.attributes[key];\n\n switch (key) {\n case 'class':\n acc.attrs['className'] = val;\n delete element.attributes['class'];\n break;\n\n case 'style':\n acc.attrs['style'] = styleToObject(val);\n break;\n\n default:\n if (key.indexOf('aria-') === 0 || key.indexOf('data-') === 0) {\n acc.attrs[key.toLowerCase()] = val;\n } else {\n acc.attrs[camelize(key)] = val;\n }\n\n }\n\n return acc;\n }, {\n attrs: {}\n });\n\n var _extraProps$style = extraProps.style,\n existingStyle = _extraProps$style === void 0 ? {} : _extraProps$style,\n remaining = _objectWithoutProperties(extraProps, _excluded);\n\n mixins.attrs['style'] = _objectSpread2(_objectSpread2({}, mixins.attrs['style']), existingStyle);\n /* eslint-enable */\n\n return createElement.apply(void 0, [element.tag, _objectSpread2(_objectSpread2({}, mixins.attrs), remaining)].concat(_toConsumableArray(children)));\n}\n\nvar PRODUCTION = false;\n\ntry {\n PRODUCTION = process.env.NODE_ENV === 'production';\n} catch (e) {}\n\nfunction log () {\n if (!PRODUCTION && console && typeof console.error === 'function') {\n var _console;\n\n (_console = console).error.apply(_console, arguments);\n }\n}\n\nfunction normalizeIconArgs(icon) {\n // this has everything that it needs to be rendered which means it was probably imported\n // directly from an icon svg package\n if (icon && _typeof(icon) === 'object' && icon.prefix && icon.iconName && icon.icon) {\n return icon;\n }\n\n if (parse.icon) {\n return parse.icon(icon);\n } // if the icon is null, there's nothing to do\n\n\n if (icon === null) {\n return null;\n } // if the icon is an object and has a prefix and an icon name, return it\n\n\n if (icon && _typeof(icon) === 'object' && icon.prefix && icon.iconName) {\n return icon;\n } // if it's an array with length of two\n\n\n if (Array.isArray(icon) && icon.length === 2) {\n // use the first item as prefix, second as icon name\n return {\n prefix: icon[0],\n iconName: icon[1]\n };\n } // if it's a string, use it as the icon name\n\n\n if (typeof icon === 'string') {\n return {\n prefix: 'fas',\n iconName: icon\n };\n }\n}\n\n// creates an object with a key of key\n// and a value of value\n// if certain conditions are met\nfunction objectWithKey(key, value) {\n // if the value is a non-empty array\n // or it's not an array but it is truthy\n // then create the object with the key and the value\n // if not, return an empty array\n return Array.isArray(value) && value.length > 0 || !Array.isArray(value) && value ? _defineProperty({}, key, value) : {};\n}\n\nvar defaultProps = {\n border: false,\n className: '',\n mask: null,\n maskId: null,\n fixedWidth: false,\n inverse: false,\n flip: false,\n icon: null,\n listItem: false,\n pull: null,\n pulse: false,\n rotation: null,\n size: null,\n spin: false,\n spinPulse: false,\n spinReverse: false,\n beat: false,\n fade: false,\n beatFade: false,\n bounce: false,\n shake: false,\n symbol: false,\n title: '',\n titleId: null,\n transform: null,\n swapOpacity: false\n};\nvar FontAwesomeIcon = /*#__PURE__*/React.forwardRef(function (props, ref) {\n var allProps = _objectSpread2(_objectSpread2({}, defaultProps), props);\n\n var iconArgs = allProps.icon,\n maskArgs = allProps.mask,\n symbol = allProps.symbol,\n className = allProps.className,\n title = allProps.title,\n titleId = allProps.titleId,\n maskId = allProps.maskId;\n var iconLookup = normalizeIconArgs(iconArgs);\n var classes = objectWithKey('classes', [].concat(_toConsumableArray(classList(allProps)), _toConsumableArray((className || '').split(' '))));\n var transform = objectWithKey('transform', typeof allProps.transform === 'string' ? parse.transform(allProps.transform) : allProps.transform);\n var mask = objectWithKey('mask', normalizeIconArgs(maskArgs));\n var renderedIcon = icon(iconLookup, _objectSpread2(_objectSpread2(_objectSpread2(_objectSpread2({}, classes), transform), mask), {}, {\n symbol: symbol,\n title: title,\n titleId: titleId,\n maskId: maskId\n }));\n\n if (!renderedIcon) {\n log('Could not find icon', iconLookup);\n return null;\n }\n\n var abstract = renderedIcon.abstract;\n var extraProps = {\n ref: ref\n };\n Object.keys(allProps).forEach(function (key) {\n // eslint-disable-next-line no-prototype-builtins\n if (!defaultProps.hasOwnProperty(key)) {\n extraProps[key] = allProps[key];\n }\n });\n return convertCurry(abstract[0], extraProps);\n});\nFontAwesomeIcon.displayName = 'FontAwesomeIcon';\nFontAwesomeIcon.propTypes = {\n beat: PropTypes.bool,\n border: PropTypes.bool,\n beatFade: PropTypes.bool,\n bounce: PropTypes.bool,\n className: PropTypes.string,\n fade: PropTypes.bool,\n flash: PropTypes.bool,\n mask: PropTypes.oneOfType([PropTypes.object, PropTypes.array, PropTypes.string]),\n maskId: PropTypes.string,\n fixedWidth: PropTypes.bool,\n inverse: PropTypes.bool,\n flip: PropTypes.oneOf([true, false, 'horizontal', 'vertical', 'both']),\n icon: PropTypes.oneOfType([PropTypes.object, PropTypes.array, PropTypes.string]),\n listItem: PropTypes.bool,\n pull: PropTypes.oneOf(['right', 'left']),\n pulse: PropTypes.bool,\n rotation: PropTypes.oneOf([0, 90, 180, 270]),\n shake: PropTypes.bool,\n size: PropTypes.oneOf(['2xs', 'xs', 'sm', 'lg', 'xl', '2xl', '1x', '2x', '3x', '4x', '5x', '6x', '7x', '8x', '9x', '10x']),\n spin: PropTypes.bool,\n spinPulse: PropTypes.bool,\n spinReverse: PropTypes.bool,\n symbol: PropTypes.oneOfType([PropTypes.bool, PropTypes.string]),\n title: PropTypes.string,\n titleId: PropTypes.string,\n transform: PropTypes.oneOfType([PropTypes.string, PropTypes.object]),\n swapOpacity: PropTypes.bool\n};\nvar convertCurry = convert.bind(null, React.createElement);\n\nexport { FontAwesomeIcon };\n","import camelCase from \"camelcase\"\nimport type { IGatsbyImageData } from \"./index\"\n\nconst DEFAULT_PIXEL_DENSITIES = [0.25, 0.5, 1, 2]\nexport const DEFAULT_BREAKPOINTS = [750, 1080, 1366, 1920]\nexport const EVERY_BREAKPOINT = [\n 320, 654, 768, 1024, 1366, 1600, 1920, 2048, 2560, 3440, 3840, 4096,\n]\nconst DEFAULT_FLUID_WIDTH = 800\nconst DEFAULT_FIXED_WIDTH = 800\nconst DEFAULT_ASPECT_RATIO = 4 / 3\n\nexport type Fit = \"cover\" | \"fill\" | \"inside\" | \"outside\" | \"contain\"\n\nexport type Layout = \"fixed\" | \"fullWidth\" | \"constrained\"\nexport type ImageFormat = \"jpg\" | \"png\" | \"webp\" | \"avif\" | \"auto\" | \"\"\n\n/**\n * The minimal required reporter, as we don't want to import it from gatsby-cli\n */\nexport interface IReporter {\n warn(message: string): void\n}\n\nexport interface ISharpGatsbyImageArgs {\n layout?: Layout\n formats?: Array\n placeholder?: \"tracedSVG\" | \"dominantColor\" | \"blurred\" | \"none\"\n tracedSVGOptions?: Record\n width?: number\n height?: number\n aspectRatio?: number\n sizes?: string\n quality?: number\n transformOptions?: {\n fit?: Fit\n cropFocus?: number | string\n duotone?: {\n highlight: string\n shadow: string\n opacity?: number\n }\n grayscale?: boolean\n rotate?: number\n trim?: number\n }\n jpgOptions?: Record\n pngOptions?: Record\n webpOptions?: Record\n avifOptions?: Record\n blurredOptions?: { width?: number; toFormat?: ImageFormat }\n breakpoints?: Array\n outputPixelDensities?: Array\n backgroundColor?: string\n}\n\nexport interface IImageSizeArgs {\n width?: number\n height?: number\n layout?: Layout\n filename: string\n outputPixelDensities?: Array\n breakpoints?: Array\n fit?: Fit\n reporter?: IReporter\n sourceMetadata: { width: number; height: number }\n}\n\nexport interface IImageSizes {\n sizes: Array\n presentationWidth: number\n presentationHeight: number\n aspectRatio: number\n unscaledWidth: number\n}\n\nexport interface IImage {\n src: string\n width: number\n height: number\n format: ImageFormat\n}\n\nexport interface IGatsbyImageHelperArgs {\n pluginName: string\n generateImageSource: (\n filename: string,\n width: number,\n height: number,\n format: ImageFormat,\n fit?: Fit,\n options?: Record\n ) => IImage\n layout?: Layout\n formats?: Array\n filename: string\n placeholderURL?: string\n width?: number\n height?: number\n sizes?: string\n reporter?: IReporter\n sourceMetadata?: { width: number; height: number; format: ImageFormat }\n fit?: Fit\n options?: Record\n breakpoints?: Array\n backgroundColor?: string\n aspectRatio?: number\n}\n\nconst warn = (message: string): void => console.warn(message)\n\nconst sortNumeric = (a: number, b: number): number => a - b\n\nexport const getSizes = (width: number, layout: Layout): string | undefined => {\n switch (layout) {\n // If screen is wider than the max size, image width is the max size,\n // otherwise it's the width of the screen\n case `constrained`:\n return `(min-width: ${width}px) ${width}px, 100vw`\n\n // Image is always the same width, whatever the size of the screen\n case `fixed`:\n return `${width}px`\n\n // Image is always the width of the screen\n case `fullWidth`:\n return `100vw`\n\n default:\n return undefined\n }\n}\n\nexport const getSrcSet = (images: Array): string =>\n images.map(image => `${image.src} ${image.width}w`).join(`,\\n`)\n\nexport function formatFromFilename(filename: string): ImageFormat | undefined {\n const dot = filename.lastIndexOf(`.`)\n if (dot !== -1) {\n const ext = filename.slice(dot + 1)\n if (ext === `jpeg`) {\n return `jpg`\n }\n if (ext.length === 3 || ext.length === 4) {\n return ext as ImageFormat\n }\n }\n return undefined\n}\n\nexport function setDefaultDimensions(\n args: IGatsbyImageHelperArgs\n): IGatsbyImageHelperArgs {\n let {\n layout = `constrained`,\n width,\n height,\n sourceMetadata,\n breakpoints,\n aspectRatio,\n formats = [`auto`, `webp`],\n } = args\n formats = formats.map(format => format.toLowerCase() as ImageFormat)\n layout = camelCase(layout) as Layout\n\n if (width && height) {\n return { ...args, formats, layout, aspectRatio: width / height }\n }\n if (sourceMetadata.width && sourceMetadata.height && !aspectRatio) {\n aspectRatio = sourceMetadata.width / sourceMetadata.height\n }\n\n if (layout === `fullWidth`) {\n width = width || sourceMetadata.width || breakpoints[breakpoints.length - 1]\n height = height || Math.round(width / (aspectRatio || DEFAULT_ASPECT_RATIO))\n } else {\n if (!width) {\n if (height && aspectRatio) {\n width = height * aspectRatio\n } else if (sourceMetadata.width) {\n width = sourceMetadata.width\n } else if (height) {\n width = Math.round(height / DEFAULT_ASPECT_RATIO)\n } else {\n width = DEFAULT_FIXED_WIDTH\n }\n }\n\n if (aspectRatio && !height) {\n height = Math.round(width / aspectRatio)\n } else if (!aspectRatio) {\n aspectRatio = width / height\n }\n }\n return { ...args, width, height, aspectRatio, layout, formats }\n}\n\n/**\n * Use this for getting an image for the blurred placeholder. This ensures the\n * aspect ratio and crop match the main image\n */\nexport function getLowResolutionImageURL(\n args: IGatsbyImageHelperArgs,\n width = 20\n): string {\n args = setDefaultDimensions(args)\n const { generateImageSource, filename, aspectRatio } = args\n return generateImageSource(\n filename,\n width,\n Math.round(width / aspectRatio),\n args.sourceMetadata.format || `jpg`,\n args.fit,\n args.options\n )?.src\n}\n\nexport function generateImageData(\n args: IGatsbyImageHelperArgs\n): IGatsbyImageData {\n args = setDefaultDimensions(args)\n\n let {\n pluginName,\n sourceMetadata,\n generateImageSource,\n layout,\n fit,\n options,\n width,\n height,\n filename,\n reporter = { warn },\n backgroundColor,\n placeholderURL,\n } = args\n\n if (!pluginName) {\n reporter.warn(\n `[gatsby-plugin-image] \"generateImageData\" was not passed a plugin name`\n )\n }\n\n if (typeof generateImageSource !== `function`) {\n throw new Error(`generateImageSource must be a function`)\n }\n\n if (!sourceMetadata || (!sourceMetadata.width && !sourceMetadata.height)) {\n // No metadata means we let the CDN handle max size etc, aspect ratio etc\n sourceMetadata = {\n width,\n height,\n format: sourceMetadata?.format || formatFromFilename(filename) || `auto`,\n }\n } else if (!sourceMetadata.format) {\n sourceMetadata.format = formatFromFilename(filename)\n }\n\n const formats = new Set(args.formats)\n\n if (formats.size === 0 || formats.has(`auto`) || formats.has(``)) {\n formats.delete(`auto`)\n formats.delete(``)\n formats.add(sourceMetadata.format)\n }\n\n if (formats.has(`jpg`) && formats.has(`png`)) {\n reporter.warn(\n `[${pluginName}] Specifying both 'jpg' and 'png' formats is not supported. Using 'auto' instead`\n )\n if (sourceMetadata.format === `jpg`) {\n formats.delete(`png`)\n } else {\n formats.delete(`jpg`)\n }\n }\n\n const imageSizes = calculateImageSizes({ ...args, sourceMetadata })\n\n const result: IGatsbyImageData[\"images\"] = {\n sources: [],\n }\n\n let sizes = args.sizes\n if (!sizes) {\n sizes = getSizes(imageSizes.presentationWidth, layout)\n }\n\n formats.forEach(format => {\n const images = imageSizes.sizes\n .map(size => {\n const imageSrc = generateImageSource(\n filename,\n size,\n Math.round(size / imageSizes.aspectRatio),\n format,\n fit,\n options\n )\n if (\n !imageSrc?.width ||\n !imageSrc.height ||\n !imageSrc.src ||\n !imageSrc.format\n ) {\n reporter.warn(\n `[${pluginName}] The resolver for image ${filename} returned an invalid value.`\n )\n return undefined\n }\n return imageSrc\n })\n .filter(Boolean)\n\n if (format === `jpg` || format === `png` || format === `auto`) {\n const unscaled =\n images.find(img => img.width === imageSizes.unscaledWidth) || images[0]\n\n if (unscaled) {\n result.fallback = {\n src: unscaled.src,\n srcSet: getSrcSet(images),\n sizes,\n }\n }\n } else {\n result.sources?.push({\n srcSet: getSrcSet(images),\n sizes,\n type: `image/${format}`,\n })\n }\n })\n\n const imageProps: Partial = {\n images: result,\n layout,\n backgroundColor,\n }\n\n if (placeholderURL) {\n imageProps.placeholder = { fallback: placeholderURL }\n }\n\n switch (layout) {\n case `fixed`:\n imageProps.width = imageSizes.presentationWidth\n imageProps.height = imageSizes.presentationHeight\n break\n\n case `fullWidth`:\n imageProps.width = 1\n imageProps.height = 1 / imageSizes.aspectRatio\n break\n\n case `constrained`:\n imageProps.width = args.width || imageSizes.presentationWidth || 1\n imageProps.height = (imageProps.width || 1) / imageSizes.aspectRatio\n }\n\n return imageProps as IGatsbyImageData\n}\n\nconst dedupeAndSortDensities = (values: Array): Array =>\n Array.from(new Set([1, ...values])).sort(sortNumeric)\n\nexport function calculateImageSizes(args: IImageSizeArgs): IImageSizes {\n const {\n width,\n height,\n filename,\n layout = `constrained`,\n sourceMetadata: imgDimensions,\n reporter = { warn },\n breakpoints = DEFAULT_BREAKPOINTS,\n } = args\n\n // check that all dimensions provided are positive\n const userDimensions = { width, height }\n const erroneousUserDimensions = Object.entries(userDimensions).filter(\n ([_, size]) => typeof size === `number` && size < 1\n )\n if (erroneousUserDimensions.length) {\n throw new Error(\n `Specified dimensions for images must be positive numbers (> 0). Problem dimensions you have are ${erroneousUserDimensions\n .map(dim => dim.join(`: `))\n .join(`, `)}`\n )\n }\n\n if (layout === `fixed`) {\n return fixedImageSizes(args)\n } else if (layout === `constrained`) {\n return responsiveImageSizes(args)\n } else if (layout === `fullWidth`) {\n return responsiveImageSizes({ breakpoints, ...args })\n } else {\n reporter.warn(\n `No valid layout was provided for the image at ${filename}. Valid image layouts are fixed, fullWidth, and constrained. Found ${layout}`\n )\n return {\n sizes: [imgDimensions.width],\n presentationWidth: imgDimensions.width,\n presentationHeight: imgDimensions.height,\n aspectRatio: imgDimensions.width / imgDimensions.height,\n unscaledWidth: imgDimensions.width,\n }\n }\n}\nexport function fixedImageSizes({\n filename,\n sourceMetadata: imgDimensions,\n width,\n height,\n fit = `cover`,\n outputPixelDensities = DEFAULT_PIXEL_DENSITIES,\n reporter = { warn },\n}: IImageSizeArgs): IImageSizes {\n let aspectRatio = imgDimensions.width / imgDimensions.height\n // Sort, dedupe and ensure there's a 1\n const densities = dedupeAndSortDensities(outputPixelDensities)\n\n // If both are provided then we need to check the fit\n if (width && height) {\n const calculated = getDimensionsAndAspectRatio(imgDimensions, {\n width,\n height,\n fit,\n })\n width = calculated.width\n height = calculated.height\n aspectRatio = calculated.aspectRatio\n }\n\n if (!width) {\n if (!height) {\n width = DEFAULT_FIXED_WIDTH\n } else {\n width = Math.round(height * aspectRatio)\n }\n } else if (!height) {\n height = Math.round(width / aspectRatio)\n }\n\n const originalWidth = width // will use this for presentationWidth, don't want to lose it\n const isTopSizeOverriden =\n imgDimensions.width < width || imgDimensions.height < (height as number)\n\n // If the image is smaller than requested, warn the user that it's being processed as such\n // print out this message with the necessary information before we overwrite it for sizing\n if (isTopSizeOverriden) {\n const fixedDimension = imgDimensions.width < width ? `width` : `height`\n reporter.warn(`\nThe requested ${fixedDimension} \"${\n fixedDimension === `width` ? width : height\n }px\" for the image ${filename} was larger than the actual image ${fixedDimension} of ${\n imgDimensions[fixedDimension]\n }px. If possible, replace the current image with a larger one.`)\n\n if (fixedDimension === `width`) {\n width = imgDimensions.width\n height = Math.round(width / aspectRatio)\n } else {\n height = imgDimensions.height\n width = height * aspectRatio\n }\n }\n\n const sizes = densities\n .filter(size => size >= 1) // remove smaller densities because fixed images don't need them\n .map(density => Math.round(density * (width as number)))\n .filter(size => size <= imgDimensions.width)\n\n return {\n sizes,\n aspectRatio,\n presentationWidth: originalWidth,\n presentationHeight: Math.round(originalWidth / aspectRatio),\n unscaledWidth: width,\n }\n}\n\nexport function responsiveImageSizes({\n sourceMetadata: imgDimensions,\n width,\n height,\n fit = `cover`,\n outputPixelDensities = DEFAULT_PIXEL_DENSITIES,\n breakpoints,\n layout,\n}: IImageSizeArgs): IImageSizes {\n let sizes\n let aspectRatio = imgDimensions.width / imgDimensions.height\n // Sort, dedupe and ensure there's a 1\n const densities = dedupeAndSortDensities(outputPixelDensities)\n\n // If both are provided then we need to check the fit\n if (width && height) {\n const calculated = getDimensionsAndAspectRatio(imgDimensions, {\n width,\n height,\n fit,\n })\n width = calculated.width\n height = calculated.height\n aspectRatio = calculated.aspectRatio\n }\n\n // Case 1: width of height were passed in, make sure it isn't larger than the actual image\n width = width && Math.min(width, imgDimensions.width)\n height = height && Math.min(height, imgDimensions.height)\n\n // Case 2: neither width or height were passed in, use default size\n if (!width && !height) {\n width = Math.min(DEFAULT_FLUID_WIDTH, imgDimensions.width)\n height = width / aspectRatio\n }\n\n // if it still hasn't been found, calculate width from the derived height.\n // TS isn't smart enough to realise the type for height has been narrowed here\n if (!width) {\n width = (height as number) * aspectRatio\n }\n\n const originalWidth = width\n const isTopSizeOverriden =\n imgDimensions.width < width || imgDimensions.height < (height as number)\n if (isTopSizeOverriden) {\n width = imgDimensions.width\n height = imgDimensions.height\n }\n\n width = Math.round(width)\n\n if (breakpoints?.length > 0) {\n sizes = breakpoints.filter(size => size <= imgDimensions.width)\n\n // If a larger breakpoint has been filtered-out, add the actual image width instead\n if (\n sizes.length < breakpoints.length &&\n !sizes.includes(imgDimensions.width)\n ) {\n sizes.push(imgDimensions.width)\n }\n } else {\n sizes = densities.map(density => Math.round(density * (width as number)))\n sizes = sizes.filter(size => size <= imgDimensions.width)\n }\n\n // ensure that the size passed in is included in the final output\n if (layout === `constrained` && !sizes.includes(width)) {\n sizes.push(width)\n }\n sizes = sizes.sort(sortNumeric)\n return {\n sizes,\n aspectRatio,\n presentationWidth: originalWidth,\n presentationHeight: Math.round(originalWidth / aspectRatio),\n unscaledWidth: width,\n }\n}\n\nexport function getDimensionsAndAspectRatio(\n dimensions,\n options\n): { width: number; height: number; aspectRatio: number } {\n // Calculate the eventual width/height of the image.\n const imageAspectRatio = dimensions.width / dimensions.height\n\n let width = options.width\n let height = options.height\n\n switch (options.fit) {\n case `fill`: {\n width = options.width ? options.width : dimensions.width\n height = options.height ? options.height : dimensions.height\n break\n }\n case `inside`: {\n const widthOption = options.width\n ? options.width\n : Number.MAX_SAFE_INTEGER\n const heightOption = options.height\n ? options.height\n : Number.MAX_SAFE_INTEGER\n\n width = Math.min(widthOption, Math.round(heightOption * imageAspectRatio))\n height = Math.min(\n heightOption,\n Math.round(widthOption / imageAspectRatio)\n )\n break\n }\n case `outside`: {\n const widthOption = options.width ? options.width : 0\n const heightOption = options.height ? options.height : 0\n\n width = Math.max(widthOption, Math.round(heightOption * imageAspectRatio))\n height = Math.max(\n heightOption,\n Math.round(widthOption / imageAspectRatio)\n )\n break\n }\n\n default: {\n if (options.width && !options.height) {\n width = options.width\n height = Math.round(options.width / imageAspectRatio)\n }\n\n if (options.height && !options.width) {\n width = Math.round(options.height * imageAspectRatio)\n height = options.height\n }\n }\n }\n\n return {\n width,\n height,\n aspectRatio: width / height,\n }\n}\n","/* global GATSBY___IMAGE */\nimport { generateImageData, EVERY_BREAKPOINT } from \"../image-utils\"\nimport type { CSSProperties, HTMLAttributes, ImgHTMLAttributes } from \"react\"\nimport type { Node } from \"gatsby\"\nimport type { PlaceholderProps } from \"./placeholder\"\nimport type { MainImageProps } from \"./main-image\"\nimport type { IGatsbyImageData } from \"./gatsby-image.browser\"\nimport type {\n IGatsbyImageHelperArgs,\n Layout,\n IImage,\n ImageFormat,\n} from \"../image-utils\"\n\n// Native lazy-loading support: https://addyosmani.com/blog/lazy-loading/\nexport const hasNativeLazyLoadSupport = (): boolean =>\n typeof HTMLImageElement !== `undefined` &&\n `loading` in HTMLImageElement.prototype\n\nexport function gatsbyImageIsInstalled(): boolean {\n return typeof GATSBY___IMAGE !== `undefined` && GATSBY___IMAGE\n}\n\nexport type IGatsbyImageDataParent = T & {\n gatsbyImageData: IGatsbyImageData\n}\nexport type IGatsbyImageParent = T & {\n gatsbyImage: IGatsbyImageData\n}\nexport type FileNode = Partial & {\n childImageSharp?: IGatsbyImageDataParent>\n}\n\nconst isGatsbyImageData = (\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n node: IGatsbyImageData | any\n): node is IGatsbyImageData =>\n // 🦆 check for a deep prop to be sure this is a valid gatsbyImageData object\n Boolean(node?.images?.fallback?.src)\n\nconst isGatsbyImageDataParent = (\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n node: IGatsbyImageDataParent | any\n): node is IGatsbyImageDataParent => Boolean(node?.gatsbyImageData)\n\nconst isGatsbyImageParent = (\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n node: IGatsbyImageParent | any\n): node is IGatsbyImageParent => Boolean(node?.gatsbyImage)\n\nexport type ImageDataLike =\n | FileNode\n | IGatsbyImageDataParent\n | IGatsbyImageParent\n | IGatsbyImageData\n\nexport const getImage = (\n node: ImageDataLike | null\n): IGatsbyImageData | undefined => {\n // This checks both for gatsbyImageData and gatsbyImage\n if (isGatsbyImageData(node)) {\n return node\n }\n // gatsbyImageData GraphQL field\n if (isGatsbyImageDataParent(node)) {\n return node.gatsbyImageData\n }\n // gatsbyImage GraphQL field for Gatsby's Image CDN service\n if (isGatsbyImageParent(node)) {\n return node.gatsbyImage\n }\n return node?.childImageSharp?.gatsbyImageData\n}\n\nexport const getSrc = (node: ImageDataLike): string | undefined =>\n getImage(node)?.images?.fallback?.src\n\nexport const getSrcSet = (node: ImageDataLike): string | undefined =>\n getImage(node)?.images?.fallback?.srcSet\n\nexport function getWrapperProps(\n width: number,\n height: number,\n layout: Layout\n): Pick, \"className\" | \"style\"> & {\n \"data-gatsby-image-wrapper\": string\n} {\n const wrapperStyle: CSSProperties = {}\n\n let className = `gatsby-image-wrapper`\n\n // If the plugin isn't installed we need to apply the styles inline\n if (!gatsbyImageIsInstalled()) {\n wrapperStyle.position = `relative`\n wrapperStyle.overflow = `hidden`\n }\n\n if (layout === `fixed`) {\n wrapperStyle.width = width\n wrapperStyle.height = height\n } else if (layout === `constrained`) {\n if (!gatsbyImageIsInstalled()) {\n wrapperStyle.display = `inline-block`\n wrapperStyle.verticalAlign = `top`\n }\n className = `gatsby-image-wrapper gatsby-image-wrapper-constrained`\n }\n\n return {\n className,\n \"data-gatsby-image-wrapper\": ``,\n style: wrapperStyle,\n }\n}\n\nexport interface IUrlBuilderArgs {\n width: number\n height: number\n baseUrl: string\n format: ImageFormat\n options: OptionsType\n}\nexport interface IGetImageDataArgs> {\n baseUrl: string\n /**\n * For constrained and fixed images, the size of the image element\n */\n width?: number\n height?: number\n /**\n * If available, pass the source image width and height\n */\n sourceWidth?: number\n sourceHeight?: number\n /**\n * If only one dimension is passed, then this will be used to calculate the other.\n */\n aspectRatio?: number\n layout?: Layout\n /**\n * Returns a URL based on the passed arguments. Should be a pure function\n */\n urlBuilder: (args: IUrlBuilderArgs) => string\n\n /**\n * Should be a data URI\n */\n placeholderURL?: string\n backgroundColor?: string\n /**\n * Used in error messages etc\n */\n pluginName?: string\n\n /**\n * If you do not support auto-format, pass an array of image types here\n */\n formats?: Array\n\n breakpoints?: Array\n\n /**\n * Passed to the urlBuilder function\n */\n options?: OptionsType\n}\n\n/**\n * Use this hook to generate gatsby-plugin-image data in the browser.\n */\nexport function getImageData({\n baseUrl,\n urlBuilder,\n sourceWidth,\n sourceHeight,\n pluginName = `getImageData`,\n formats = [`auto`],\n breakpoints,\n options,\n ...props\n}: IGetImageDataArgs): IGatsbyImageData {\n if (\n !breakpoints?.length &&\n (props.layout === `fullWidth` || (props.layout as string) === `FULL_WIDTH`)\n ) {\n breakpoints = EVERY_BREAKPOINT\n }\n const generateImageSource = (\n baseUrl: string,\n width: number,\n height?: number,\n format?: ImageFormat\n ): IImage => {\n return {\n width,\n height,\n format,\n src: urlBuilder({ baseUrl, width, height, options, format }),\n }\n }\n\n const sourceMetadata: IGatsbyImageHelperArgs[\"sourceMetadata\"] = {\n width: sourceWidth,\n height: sourceHeight,\n format: `auto`,\n }\n\n const args: IGatsbyImageHelperArgs = {\n ...props,\n pluginName,\n generateImageSource,\n filename: baseUrl,\n formats,\n breakpoints,\n sourceMetadata,\n }\n return generateImageData(args)\n}\n\nexport function getMainProps(\n isLoading: boolean,\n isLoaded: boolean,\n images: IGatsbyImageData[\"images\"],\n loading?: \"eager\" | \"lazy\",\n style: CSSProperties = {}\n): Partial {\n // fallback when it's not configured in gatsby-config.\n if (!gatsbyImageIsInstalled()) {\n style = {\n height: `100%`,\n left: 0,\n position: `absolute`,\n top: 0,\n transform: `translateZ(0)`,\n transition: `opacity 250ms linear`,\n width: `100%`,\n willChange: `opacity`,\n ...style,\n }\n }\n\n const result = {\n ...images,\n loading,\n shouldLoad: isLoading,\n \"data-main-image\": ``,\n style: {\n ...style,\n opacity: isLoaded ? 1 : 0,\n },\n }\n\n return result\n}\n\nexport type PlaceholderImageAttrs = ImgHTMLAttributes &\n Pick & {\n \"data-placeholder-image\"?: string\n }\n\nexport function getPlaceholderProps(\n placeholder: PlaceholderImageAttrs | undefined,\n isLoaded: boolean,\n layout: Layout,\n width?: number,\n height?: number,\n backgroundColor?: string,\n objectFit?: CSSProperties[\"objectFit\"],\n objectPosition?: CSSProperties[\"objectPosition\"]\n): PlaceholderImageAttrs {\n const wrapperStyle: CSSProperties = {}\n\n if (backgroundColor) {\n wrapperStyle.backgroundColor = backgroundColor\n\n if (layout === `fixed`) {\n wrapperStyle.width = width\n wrapperStyle.height = height\n wrapperStyle.backgroundColor = backgroundColor\n wrapperStyle.position = `relative`\n } else if (layout === `constrained`) {\n wrapperStyle.position = `absolute`\n wrapperStyle.top = 0\n wrapperStyle.left = 0\n wrapperStyle.bottom = 0\n wrapperStyle.right = 0\n } else if (layout === `fullWidth`) {\n wrapperStyle.position = `absolute`\n wrapperStyle.top = 0\n wrapperStyle.left = 0\n wrapperStyle.bottom = 0\n wrapperStyle.right = 0\n }\n }\n\n if (objectFit) {\n wrapperStyle.objectFit = objectFit\n }\n\n if (objectPosition) {\n wrapperStyle.objectPosition = objectPosition\n }\n const result: PlaceholderImageAttrs = {\n ...placeholder,\n \"aria-hidden\": true,\n \"data-placeholder-image\": ``,\n style: {\n opacity: isLoaded ? 0 : 1,\n transition: `opacity 500ms linear`,\n ...wrapperStyle,\n },\n }\n\n // fallback when it's not configured in gatsby-config.\n if (!gatsbyImageIsInstalled()) {\n result.style = {\n height: `100%`,\n left: 0,\n position: `absolute`,\n top: 0,\n width: `100%`,\n }\n }\n\n return result\n}\n\nexport interface IArtDirectedImage {\n media: string\n image: IGatsbyImageData\n}\n\n/**\n * Generate a Gatsby image data object with multiple, art-directed images that display at different\n * resolutions.\n *\n * @param defaultImage The image displayed when no media query matches.\n * It is also used for all other settings applied to the image, such as width, height and layout.\n * You should pass a className to the component with media queries to adjust the size of the container,\n * as this cannot be adjusted automatically.\n * @param artDirected Array of objects which each contains a `media` string which is a media query\n * such as `(min-width: 320px)`, and the image object to use when that query matches.\n */\nexport function withArtDirection(\n defaultImage: IGatsbyImageData,\n artDirected: Array\n): IGatsbyImageData {\n const { images, placeholder, ...props } = defaultImage\n const output: IGatsbyImageData = {\n ...props,\n images: {\n ...images,\n sources: [],\n },\n placeholder: placeholder && {\n ...placeholder,\n sources: [],\n },\n }\n\n artDirected.forEach(({ media, image }) => {\n if (!media) {\n if (process.env.NODE_ENV === `development`) {\n console.warn(\n \"[gatsby-plugin-image] All art-directed images passed to must have a value set for `media`. Skipping.\"\n )\n }\n return\n }\n\n if (\n image.layout !== defaultImage.layout &&\n process.env.NODE_ENV === `development`\n ) {\n console.warn(\n `[gatsby-plugin-image] Mismatched image layout: expected \"${defaultImage.layout}\" but received \"${image.layout}\". All art-directed images use the same layout as the default image`\n )\n }\n\n output.images.sources.push(\n ...image.images.sources.map(source => {\n return { ...source, media }\n }),\n {\n media,\n srcSet: image.images.fallback.srcSet,\n }\n )\n\n if (!output.placeholder) {\n return\n }\n\n output.placeholder.sources.push({\n media,\n srcSet: image.placeholder.fallback,\n })\n })\n output.images.sources.push(...images.sources)\n if (placeholder?.sources) {\n output.placeholder?.sources.push(...placeholder.sources)\n }\n return output\n}\n","import React, { Fragment, FunctionComponent, PropsWithChildren } from \"react\"\nimport terserMacro from \"../../macros/terser.macro\"\nimport { Layout } from \"../image-utils\"\n\nexport interface ILayoutWrapperProps {\n layout: Layout\n width: number\n height: number\n}\n\nconst NativeScriptLoading: FunctionComponent = () => (\n \n)\n\nexport function getSizer(\n layout: Layout,\n width: number,\n height: number\n): string {\n let sizer = ``\n if (layout === `fullWidth`) {\n sizer = `
`\n }\n\n if (layout === `constrained`) {\n sizer = `
\"\"
`\n }\n\n return sizer\n}\n\nconst Sizer: FunctionComponent = function Sizer({\n layout,\n width,\n height,\n}) {\n if (layout === `fullWidth`) {\n return (\n
\n )\n }\n\n if (layout === `constrained`) {\n return (\n
\n \n
\n )\n }\n\n return null\n}\n\nexport const LayoutWrapper: FunctionComponent<\n PropsWithChildren\n> = function LayoutWrapper({ children, ...props }) {\n return (\n \n \n {children}\n\n {SERVER ? : null}\n \n )\n}\n","import React, { FunctionComponent, ImgHTMLAttributes } from \"react\"\nimport * as PropTypes from \"prop-types\"\n\nexport interface IResponsiveImageProps {\n sizes?: string\n srcSet: string\n}\n\nexport type SourceProps = IResponsiveImageProps &\n (\n | {\n media: string\n type?: string\n }\n | {\n media?: string\n type: string\n }\n )\n\ntype FallbackProps = { src: string } & Partial\n\ntype ImageProps = ImgHTMLAttributes & {\n src: string\n alt: string\n shouldLoad: boolean\n}\n\nexport type PictureProps = ImgHTMLAttributes & {\n fallback?: FallbackProps\n sources?: Array\n alt: string\n shouldLoad?: boolean\n}\n\nconst Image: FunctionComponent = function Image({\n src,\n srcSet,\n loading,\n alt = ``,\n shouldLoad,\n ...props\n}) {\n return (\n \n )\n}\n\nexport const Picture: React.FC = function Picture({\n fallback,\n sources = [],\n shouldLoad = true,\n ...props\n}) {\n const sizes = props.sizes || fallback?.sizes\n const fallbackImage = (\n \n )\n\n if (!sources.length) {\n return fallbackImage\n }\n\n return (\n \n {sources.map(({ media, srcSet, type }) => (\n \n ))}\n {fallbackImage}\n \n )\n}\n\nImage.propTypes = {\n src: PropTypes.string.isRequired,\n alt: PropTypes.string.isRequired,\n sizes: PropTypes.string,\n srcSet: PropTypes.string,\n shouldLoad: PropTypes.bool,\n}\n\nPicture.displayName = `Picture`\nPicture.propTypes = {\n alt: PropTypes.string.isRequired,\n shouldLoad: PropTypes.bool,\n fallback: PropTypes.exact({\n src: PropTypes.string.isRequired,\n srcSet: PropTypes.string,\n sizes: PropTypes.string,\n }),\n sources: PropTypes.arrayOf(\n PropTypes.oneOfType([\n PropTypes.exact({\n media: PropTypes.string.isRequired,\n type: PropTypes.string,\n sizes: PropTypes.string,\n srcSet: PropTypes.string.isRequired,\n }),\n PropTypes.exact({\n media: PropTypes.string,\n type: PropTypes.string.isRequired,\n sizes: PropTypes.string,\n srcSet: PropTypes.string.isRequired,\n }),\n ])\n ),\n}\n","import React, { FunctionComponent, ImgHTMLAttributes } from \"react\"\nimport * as PropTypes from \"prop-types\"\nimport { Picture, SourceProps } from \"./picture\"\n\nexport type PlaceholderProps = ImgHTMLAttributes & {\n fallback?: string\n sources?: Array\n}\n\nexport const Placeholder: FunctionComponent =\n function Placeholder({ fallback, ...props }) {\n if (fallback) {\n return (\n \n )\n } else {\n return
\n }\n }\n\nPlaceholder.displayName = `Placeholder`\nPlaceholder.propTypes = {\n fallback: PropTypes.string,\n sources: Picture.propTypes?.sources,\n alt: function (props, propName, componentName): Error | null {\n if (!props[propName]) {\n return null\n }\n\n return new Error(\n `Invalid prop \\`${propName}\\` supplied to \\`${componentName}\\`. Validation failed.`\n )\n },\n}\n","import React from \"react\"\nimport { Picture, PictureProps } from \"./picture\"\n\nexport type MainImageProps = PictureProps\n\nexport const MainImage: React.FC = function MainImage(props) {\n return (\n <>\n \n \n \n )\n}\n\nMainImage.displayName = `MainImage`\nMainImage.propTypes = Picture.propTypes\n","import React from \"react\"\nimport { getWrapperProps, getMainProps, getPlaceholderProps } from \"./hooks\"\nimport { Placeholder } from \"./placeholder\"\nimport { MainImage, MainImageProps } from \"./main-image\"\nimport { LayoutWrapper } from \"./layout-wrapper\"\nimport PropTypes from \"prop-types\"\nimport type { FunctionComponent, WeakValidationMap } from \"react\"\nimport type { GatsbyImageProps, IGatsbyImageData } from \"./gatsby-image.browser\"\n\nconst removeNewLines = (str: string): string => str.replace(/\\n/g, ``)\n\nexport const GatsbyImage: FunctionComponent =\n function GatsbyImage({\n as = `div`,\n className,\n class: preactClass,\n style,\n image,\n loading = `lazy`,\n imgClassName,\n imgStyle,\n backgroundColor,\n objectFit,\n objectPosition,\n ...props\n }) {\n if (!image) {\n console.warn(`[gatsby-plugin-image] Missing image prop`)\n return null\n }\n\n if (preactClass) {\n className = preactClass\n }\n\n imgStyle = {\n objectFit,\n objectPosition,\n backgroundColor,\n ...imgStyle,\n }\n\n const {\n width,\n height,\n layout,\n images,\n placeholder,\n backgroundColor: placeholderBackgroundColor,\n } = image\n\n const {\n style: wStyle,\n className: wClass,\n ...wrapperProps\n } = getWrapperProps(width, height, layout)\n\n const cleanedImages: IGatsbyImageData[\"images\"] = {\n fallback: undefined,\n sources: [],\n }\n if (images.fallback) {\n cleanedImages.fallback = {\n ...images.fallback,\n srcSet: images.fallback.srcSet\n ? removeNewLines(images.fallback.srcSet)\n : undefined,\n }\n }\n\n if (images.sources) {\n cleanedImages.sources = images.sources.map(source => {\n return {\n ...source,\n srcSet: removeNewLines(source.srcSet),\n }\n })\n }\n\n return React.createElement(\n as,\n {\n ...wrapperProps,\n style: {\n ...wStyle,\n ...style,\n backgroundColor,\n },\n className: `${wClass}${className ? ` ${className}` : ``}`,\n },\n \n \n\n )}\n // When eager is set we want to start the isLoading state on true (we want to load the img without react)\n {...getMainProps(\n loading === `eager`,\n false,\n cleanedImages,\n loading,\n imgStyle\n )}\n />\n \n )\n }\n\nexport const altValidator: PropTypes.Validator = (\n props: GatsbyImageProps,\n propName,\n componentName,\n ...rest\n): Error | undefined => {\n if (!props.alt && props.alt !== ``) {\n return new Error(\n `The \"alt\" prop is required in ${componentName}. If the image is purely presentational then pass an empty string: e.g. alt=\"\". Learn more: https://a11y-style-guide.com/style-guide/section-media.html`\n )\n }\n\n return PropTypes.string(props, propName, componentName, ...rest)\n}\n\nexport const propTypes = {\n image: PropTypes.object.isRequired,\n alt: altValidator,\n} as WeakValidationMap\n","import {\n createElement,\n memo,\n useMemo,\n useEffect,\n useLayoutEffect,\n useRef,\n} from \"react\"\nimport {\n getWrapperProps,\n gatsbyImageIsInstalled,\n hasNativeLazyLoadSupport,\n} from \"./hooks\"\nimport { getSizer } from \"./layout-wrapper\"\nimport { propTypes } from \"./gatsby-image.server\"\nimport type {\n FC,\n ElementType,\n FunctionComponent,\n ImgHTMLAttributes,\n CSSProperties,\n ReactEventHandler,\n} from \"react\"\nimport type { renderImageToString } from \"./lazy-hydrate\"\nimport type { PlaceholderProps } from \"./placeholder\"\nimport type { MainImageProps } from \"./main-image\"\nimport type { Layout } from \"../image-utils\"\n\nconst imageCache = new Set()\nlet renderImageToStringPromise\nlet renderImage: typeof renderImageToString | undefined\n\n// eslint-disable-next-line @typescript-eslint/naming-convention\nexport interface GatsbyImageProps\n extends Omit<\n ImgHTMLAttributes,\n \"placeholder\" | \"onLoad\" | \"src\" | \"srcSet\" | \"width\" | \"height\"\n > {\n alt: string\n as?: ElementType\n className?: string\n class?: string\n imgClassName?: string\n image: IGatsbyImageData\n imgStyle?: CSSProperties\n backgroundColor?: string\n objectFit?: CSSProperties[\"objectFit\"]\n objectPosition?: CSSProperties[\"objectPosition\"]\n onLoad?: (props: { wasCached: boolean }) => void\n onError?: ReactEventHandler\n onStartLoad?: (props: { wasCached: boolean }) => void\n}\n\nexport interface IGatsbyImageData {\n layout: Layout\n width: number\n height: number\n backgroundColor?: string\n images: Pick\n placeholder?: Pick\n}\n\nconst GatsbyImageHydrator: FC = function GatsbyImageHydrator({\n as = `div`,\n image,\n style,\n backgroundColor,\n className,\n class: preactClass,\n onStartLoad,\n onLoad,\n onError,\n ...props\n}) {\n const { width, height, layout } = image\n const {\n style: wStyle,\n className: wClass,\n ...wrapperProps\n } = getWrapperProps(width, height, layout)\n const root = useRef()\n const cacheKey = useMemo(() => JSON.stringify(image.images), [image.images])\n\n // Preact uses class instead of className so we need to check for both\n if (preactClass) {\n className = preactClass\n }\n\n const sizer = getSizer(layout, width, height)\n\n useEffect(() => {\n if (!renderImageToStringPromise) {\n renderImageToStringPromise = import(`./lazy-hydrate`).then(\n ({ renderImageToString, swapPlaceholderImage }) => {\n renderImage = renderImageToString\n\n return {\n renderImageToString,\n swapPlaceholderImage,\n }\n }\n )\n }\n\n // The plugin image component is a bit special where if it's server-side rendered, we add extra script tags to support lazy-loading without\n // In this case we stop hydration but fire the correct events.\n const ssrImage = root.current.querySelector(\n `[data-gatsby-image-ssr]`\n ) as HTMLImageElement\n if (ssrImage && hasNativeLazyLoadSupport()) {\n if (ssrImage.complete) {\n // Trigger onStartload and onLoad events\n onStartLoad?.({\n wasCached: true,\n })\n onLoad?.({\n wasCached: true,\n })\n\n // remove ssr key for state updates but add delay to not fight with native code snippt of gatsby-ssr\n setTimeout(() => {\n ssrImage.removeAttribute(`data-gatsby-image-ssr`)\n }, 0)\n } else {\n onStartLoad?.({\n wasCached: true,\n })\n\n ssrImage.addEventListener(`load`, function onLoadListener() {\n ssrImage.removeEventListener(`load`, onLoadListener)\n\n onLoad?.({\n wasCached: true,\n })\n // remove ssr key for state updates but add delay to not fight with native code snippt of gatsby-ssr\n setTimeout(() => {\n ssrImage.removeAttribute(`data-gatsby-image-ssr`)\n }, 0)\n })\n }\n\n imageCache.add(cacheKey)\n\n return\n }\n\n if (renderImage && imageCache.has(cacheKey)) {\n return\n }\n\n let animationFrame\n let cleanupCallback\n renderImageToStringPromise.then(\n ({ renderImageToString, swapPlaceholderImage }) => {\n if (!root.current) {\n return\n }\n\n root.current.innerHTML = renderImageToString({\n isLoading: true,\n isLoaded: imageCache.has(cacheKey),\n image,\n ...props,\n })\n\n if (!imageCache.has(cacheKey)) {\n animationFrame = requestAnimationFrame(() => {\n if (root.current) {\n cleanupCallback = swapPlaceholderImage(\n root.current,\n cacheKey,\n imageCache,\n style,\n onStartLoad,\n onLoad,\n onError\n )\n }\n })\n }\n }\n )\n\n // eslint-disable-next-line consistent-return\n return (): void => {\n if (animationFrame) {\n cancelAnimationFrame(animationFrame)\n }\n if (cleanupCallback) {\n cleanupCallback()\n }\n }\n }, [image])\n\n // useLayoutEffect is ran before React commits to the DOM. This allows us to make sure our HTML is using our cached image version\n useLayoutEffect(() => {\n if (imageCache.has(cacheKey) && renderImage) {\n root.current.innerHTML = renderImage({\n isLoading: imageCache.has(cacheKey),\n isLoaded: imageCache.has(cacheKey),\n image,\n ...props,\n })\n\n // Trigger onStartload and onLoad events\n onStartLoad?.({\n wasCached: true,\n })\n onLoad?.({\n wasCached: true,\n })\n }\n }, [image])\n\n // By keeping all props equal React will keep the component in the DOM\n return createElement(as, {\n ...wrapperProps,\n style: {\n ...wStyle,\n ...style,\n backgroundColor,\n },\n className: `${wClass}${className ? ` ${className}` : ``}`,\n ref: root,\n dangerouslySetInnerHTML: {\n __html: sizer,\n },\n suppressHydrationWarning: true,\n })\n}\n\nexport const GatsbyImage: FunctionComponent = memo(\n function GatsbyImage(props) {\n if (!props.image) {\n if (process.env.NODE_ENV === `development`) {\n console.warn(`[gatsby-plugin-image] Missing image prop`)\n }\n\n return null\n }\n\n if (!gatsbyImageIsInstalled() && process.env.NODE_ENV === `development`) {\n console.warn(\n `[gatsby-plugin-image] You're missing out on some cool performance features. Please add \"gatsby-plugin-image\" to your gatsby-config.js`\n )\n }\n\n return createElement(GatsbyImageHydrator, props)\n }\n)\n\nGatsbyImage.propTypes = propTypes\nGatsbyImage.displayName = `GatsbyImage`\n","import React, { FunctionComponent, ReactElement } from \"react\"\nimport {\n altValidator,\n GatsbyImage as GatsbyImageServer,\n} from \"./gatsby-image.server\"\nimport { GatsbyImageProps, IGatsbyImageData } from \"./gatsby-image.browser\"\nimport PropTypes from \"prop-types\"\nimport { ISharpGatsbyImageArgs } from \"../image-utils\"\n\nexport interface IStaticImageProps\n extends Omit,\n Omit {\n src: string\n filename?: string\n}\n\n// These values are added by Babel. Do not add them manually\ninterface IPrivateProps {\n __imageData?: IGatsbyImageData\n __error?: string\n}\n\nexport function _getStaticImage(\n GatsbyImage: FunctionComponent\n): React.FC {\n return function StaticImage({\n src,\n __imageData: imageData,\n __error,\n // We extract these because they're not meant to be passed-down to GatsbyImage\n /* eslint-disable @typescript-eslint/no-unused-vars */\n width,\n height,\n aspectRatio,\n tracedSVGOptions,\n placeholder,\n formats,\n quality,\n transformOptions,\n jpgOptions,\n pngOptions,\n webpOptions,\n avifOptions,\n blurredOptions,\n breakpoints,\n outputPixelDensities,\n /* eslint-enable @typescript-eslint/no-unused-vars */\n ...props\n }): ReactElement {\n if (__error) {\n console.warn(__error)\n }\n\n if (imageData) {\n return \n }\n console.warn(`Image not loaded`, src)\n if (!__error && process.env.NODE_ENV === `development`) {\n console.warn(\n `Please ensure that \"gatsby-plugin-image\" is included in the plugins array in gatsby-config.js, and that your version of gatsby is at least 2.24.78`\n )\n }\n return null\n }\n}\n\nconst StaticImage: React.FC =\n _getStaticImage(GatsbyImageServer)\n\nconst checkDimensionProps: PropTypes.Validator = (\n props: IStaticImageProps & IPrivateProps,\n propName: keyof IStaticImageProps & IPrivateProps,\n ...rest\n) => {\n if (\n props.layout === `fullWidth` &&\n (propName === `width` || propName === `height`) &&\n props[propName]\n ) {\n return new Error(\n `\"${propName}\" ${props[propName]} may not be passed when layout is fullWidth.`\n )\n }\n return PropTypes.number(props, propName, ...rest)\n}\n\nconst validLayouts = new Set([`fixed`, `fullWidth`, `constrained`])\n\nexport const propTypes = {\n src: PropTypes.string.isRequired,\n alt: altValidator,\n width: checkDimensionProps,\n height: checkDimensionProps,\n sizes: PropTypes.string,\n layout: (props: IStaticImageProps & IPrivateProps): Error | undefined => {\n if (props.layout === undefined) {\n return undefined\n }\n if (validLayouts.has(props.layout)) {\n return undefined\n }\n\n return new Error(\n `Invalid value ${props.layout}\" provided for prop \"layout\". Defaulting to \"constrained\". Valid values are \"fixed\", \"fullWidth\" or \"constrained\".`\n )\n },\n}\n\nStaticImage.displayName = `StaticImage`\nStaticImage.propTypes = propTypes\n\nexport { StaticImage }\n","import {\n GatsbyImage as GatsbyImageBrowser,\n IGatsbyImageData,\n} from \"./gatsby-image.browser\"\nimport React from \"react\"\nimport {\n _getStaticImage,\n propTypes,\n IStaticImageProps,\n} from \"./static-image.server\"\n// These values are added by Babel. Do not add them manually\ninterface IPrivateProps {\n __imageData?: IGatsbyImageData\n __error?: string\n}\n\nconst StaticImage: React.FC =\n _getStaticImage(GatsbyImageBrowser)\n\nStaticImage.displayName = `StaticImage`\nStaticImage.propTypes = propTypes\n\nexport { StaticImage }\n","'use strict';\n\nconst UPPERCASE = /[\\p{Lu}]/u;\nconst LOWERCASE = /[\\p{Ll}]/u;\nconst LEADING_CAPITAL = /^[\\p{Lu}](?![\\p{Lu}])/gu;\nconst IDENTIFIER = /([\\p{Alpha}\\p{N}_]|$)/u;\nconst SEPARATORS = /[_.\\- ]+/;\n\nconst LEADING_SEPARATORS = new RegExp('^' + SEPARATORS.source);\nconst SEPARATORS_AND_IDENTIFIER = new RegExp(SEPARATORS.source + IDENTIFIER.source, 'gu');\nconst NUMBERS_AND_IDENTIFIER = new RegExp('\\\\d+' + IDENTIFIER.source, 'gu');\n\nconst preserveCamelCase = (string, toLowerCase, toUpperCase) => {\n\tlet isLastCharLower = false;\n\tlet isLastCharUpper = false;\n\tlet isLastLastCharUpper = false;\n\n\tfor (let i = 0; i < string.length; i++) {\n\t\tconst character = string[i];\n\n\t\tif (isLastCharLower && UPPERCASE.test(character)) {\n\t\t\tstring = string.slice(0, i) + '-' + string.slice(i);\n\t\t\tisLastCharLower = false;\n\t\t\tisLastLastCharUpper = isLastCharUpper;\n\t\t\tisLastCharUpper = true;\n\t\t\ti++;\n\t\t} else if (isLastCharUpper && isLastLastCharUpper && LOWERCASE.test(character)) {\n\t\t\tstring = string.slice(0, i - 1) + '-' + string.slice(i - 1);\n\t\t\tisLastLastCharUpper = isLastCharUpper;\n\t\t\tisLastCharUpper = false;\n\t\t\tisLastCharLower = true;\n\t\t} else {\n\t\t\tisLastCharLower = toLowerCase(character) === character && toUpperCase(character) !== character;\n\t\t\tisLastLastCharUpper = isLastCharUpper;\n\t\t\tisLastCharUpper = toUpperCase(character) === character && toLowerCase(character) !== character;\n\t\t}\n\t}\n\n\treturn string;\n};\n\nconst preserveConsecutiveUppercase = (input, toLowerCase) => {\n\tLEADING_CAPITAL.lastIndex = 0;\n\n\treturn input.replace(LEADING_CAPITAL, m1 => toLowerCase(m1));\n};\n\nconst postProcess = (input, toUpperCase) => {\n\tSEPARATORS_AND_IDENTIFIER.lastIndex = 0;\n\tNUMBERS_AND_IDENTIFIER.lastIndex = 0;\n\n\treturn input.replace(SEPARATORS_AND_IDENTIFIER, (_, identifier) => toUpperCase(identifier))\n\t\t.replace(NUMBERS_AND_IDENTIFIER, m => toUpperCase(m));\n};\n\nconst camelCase = (input, options) => {\n\tif (!(typeof input === 'string' || Array.isArray(input))) {\n\t\tthrow new TypeError('Expected the input to be `string | string[]`');\n\t}\n\n\toptions = {\n\t\tpascalCase: false,\n\t\tpreserveConsecutiveUppercase: false,\n\t\t...options\n\t};\n\n\tif (Array.isArray(input)) {\n\t\tinput = input.map(x => x.trim())\n\t\t\t.filter(x => x.length)\n\t\t\t.join('-');\n\t} else {\n\t\tinput = input.trim();\n\t}\n\n\tif (input.length === 0) {\n\t\treturn '';\n\t}\n\n\tconst toLowerCase = options.locale === false ?\n\t\tstring => string.toLowerCase() :\n\t\tstring => string.toLocaleLowerCase(options.locale);\n\tconst toUpperCase = options.locale === false ?\n\t\tstring => string.toUpperCase() :\n\t\tstring => string.toLocaleUpperCase(options.locale);\n\n\tif (input.length === 1) {\n\t\treturn options.pascalCase ? toUpperCase(input) : toLowerCase(input);\n\t}\n\n\tconst hasUpperCase = input !== toLowerCase(input);\n\n\tif (hasUpperCase) {\n\t\tinput = preserveCamelCase(input, toLowerCase, toUpperCase);\n\t}\n\n\tinput = input.replace(LEADING_SEPARATORS, '');\n\n\tif (options.preserveConsecutiveUppercase) {\n\t\tinput = preserveConsecutiveUppercase(input, toLowerCase);\n\t} else {\n\t\tinput = toLowerCase(input);\n\t}\n\n\tif (options.pascalCase) {\n\t\tinput = toUpperCase(input.charAt(0)) + input.slice(1);\n\t}\n\n\treturn postProcess(input, toUpperCase);\n};\n\nmodule.exports = camelCase;\n// TODO: Remove this for the next major release\nmodule.exports.default = camelCase;\n","import React from \"react\"\n\nconst FontAwesome = ({ icon, size, className }) => {\n\tlet iconSrc = null\n\tif (icon && icon.startsWith(\"https://\")) {\n\t\ticonSrc = icon\n\t} else if (icon && icon.indexOf(\".svg\") === -1) {\n\t\ticonSrc = `/fontAwesomeIcons/${icon}.svg`\n\t} else if (icon) {\n\t\ticonSrc = `/fontAwesomeIcons/${icon}`\n\t} else {\n\t\treturn null\n\t}\n\n\treturn (\n\t\t\"\"\n\t)\n}\n\nexport default FontAwesome","import React from \"react\"\nimport { Link, graphql, useStaticQuery } from \"gatsby\"\nimport { StaticImage } from \"gatsby-plugin-image\"\n\nimport { trackSnowplowEvent } from \"../utils/snowplowHelper\"\nimport \"../styles/footer.scss\"\n\nfunction FooterMenu({ item, handleClick }) {\n // Sort children by order\n const sortedChildren = item.strapi_children && item.strapi_children.length > 0\n ? [...item.strapi_children].sort((a, b) => a.order - b.order) : []\n\n // URL is considered external if it begins with \"http://\" or \"https://\"\n const isExternalUrl = (url) => {\n return /^https?:\\/\\//.test(url)\n }\n\n return (\n // Do not render menu items with order > 3\n item.strapi_children.length > 0 && item.order < 4 && (\n
\n \n
\n )\n )\n}\n\nexport default function Footer() {\n const data = useStaticQuery(graphql`{\n allStrapiFooterMenu(\n sort: {order: ASC}\n ) {\n nodes {\n title\n order\n strapi_children {\n title\n order\n url\n }\n }\n }\n }\n `)\n\n const footerMenu = data?.allStrapiFooterMenu?.nodes || []\n const utilityMenu = [\n { title: \"Site map\", url: \"/site-map/\" },\n { title: \"Disclaimer\", url: \"https://www2.gov.bc.ca/gov/content/home/disclaimer\" },\n { title: \"Privacy\", url: \"https://www2.gov.bc.ca/gov/content/home/privacy\" },\n { title: \"Accessibility\", url: \"https://www2.gov.bc.ca/gov/content/home/accessible-government\" },\n { title: \"Copyright\", url: \"https://www2.gov.bc.ca/gov/content/home/copyright\" },\n ]\n\n const handleClick = (url) => {\n trackSnowplowEvent(\n \"link_click\",\n null,\n null,\n null,\n url,\n {}\n )\n }\n\n return (\n
\n
\n
\n
\n
\n handleClick(\"/\")}>\n \n \n
\n
\n
\n
\n {footerMenu.map((item, index) => (\n \n ))}\n
\n
\n
\n
\n {utilityMenu.map((item, index) => (\n \n handleClick(item.url)}>\n {item.title}\n \n
\n ))}\n
\n
\n \n )\n}\n","import React from \"react\"\n\nexport default function SkipToContent() {\n return (\n Skip to main content\n )\n}\n","import React, { useState, useEffect } from \"react\"\nimport { useStaticQuery, graphql } from \"gatsby\"\nimport { FontAwesomeIcon } from \"@fortawesome/react-fontawesome\"\nimport { faCircleExclamation, faXmark } from \"@fortawesome/free-solid-svg-icons\"\nimport \"../styles/alert.scss\"\n\nconst EmergencyAlert = () => {\n const data = useStaticQuery(graphql`\n query {\n allStrapiEmergencyAlert(\n filter: {isActive: {eq: true}}\n ) {\n nodes {\n colour\n description\n links {\n linkText\n url\n }\n }\n }\n }\n `)\n const alerts = data?.allStrapiEmergencyAlert?.nodes || []\n // display only one alert even if there are multiple active alerts\n const alert = alerts[0]\n let characterCount = 0\n // count how many characters are in alert \n if (alert) {\n const descriptionCount = alert.description.length\n let linkTextCount = 0\n alert.links?.map(link =>\n linkTextCount += link.linkText.length\n )\n characterCount = descriptionCount + linkTextCount\n }\n const [show, setShow] = useState(false)\n\n const handleClick = () => {\n setShow(false)\n sessionStorage.setItem(\"alert\", \"false\")\n }\n const handleKeyDown = (e) => {\n if (e.key === \"Enter\" || e.key === \" \") {\n handleClick()\n }\n }\n\n useEffect(() => {\n if (typeof window !== \"undefined\" && window.sessionStorage) {\n const storedAlertValue = sessionStorage.getItem(\"alert\")\n setShow(storedAlertValue !== \"false\")\n } else {\n setShow(true)\n }\n }, [])\n\n return (\n alerts.length > 0 && show && (\n \n
110}`}>\n \n

\n {alert.description}\n {alert.links.map((l, index) => (\n \n |\n {l.linkText}\n \n ))}\n

\n \n \n \n
\n \n )\n )\n}\n\nexport default EmergencyAlert","import React from \"react\"\n\nimport SkipToContent from \"./skipToContent\"\nimport MegaMenu from \"./megaMenu.js\"\nimport EmergencyAlert from \"./emergencyAlert\"\n\nexport default function Header({ content = [] }) {\n\n return (\n <>\n \n \n \n \n ) \n}","export default __webpack_public_path__ + \"static/BCParks_Primary_Reversed-cropped-0080416cb5f347c8e7c33f32739f17ca.svg\";","export default __webpack_public_path__ + \"static/BCParks_Primary_Reversed_Vertical-9873b7442479cf33ebc73121675114fa.svg\";","import React, { useState, useEffect, useCallback } from \"react\"\nimport PropTypes from \"prop-types\"\nimport { Link, navigate } from \"gatsby\"\nimport Logo from \"../images/logo/BCParks_Primary_Reversed-cropped.svg\"\nimport LogoVertical from \"../images/logo/BCParks_Primary_Reversed_Vertical.svg\"\nimport FontAwesome from \"../components/fontAwesome\"\nimport { FontAwesomeIcon } from \"@fortawesome/react-fontawesome\"\nimport { faBars, faXmark, faChevronLeft, faChevronRight, faCircleChevronRight } from \"@fortawesome/free-solid-svg-icons\"\n\nimport { useScreenSize } from \"../utils/helpers\"\nimport { trackSnowplowEvent } from \"../utils/snowplowHelper\"\nimport \"../styles/megaMenu/megaMenu.scss\"\n\nconst MegaMenu = ({ content, menuMode }) => {\n const [menuContent, setMenuContent] = useState([])\n const [menuTree, setMenuTree] = useState([])\n const [menuRoot, setMenuRoot] = useState({})\n const [selectedItem, setSelectedItem] = useState([]) // most recent item user has interacted with\n const [selections, setSelections] = useState({}) // the selected item at each level, i.e. selection breadcrumbs\n const [isMenuOpen, setIsMenuOpen] = useState(false) // currently only used for mobile - menu closed at first\n const [hasClickedTwice, setHasClickedTwice] = useState(false)\n const [currentPath, setCurrentPath] = useState(\"\")\n const screenSize = useScreenSize()\n const ROOT_MENU_URL = '/'\n let sectionImages = {}\n let menuCollection\n let menuElements\n if (typeof window !== \"undefined\") {\n menuCollection = document.getElementsByClassName(\"menu-children-exist--true menu-level-0-children\")\n menuElements = Array.from(menuCollection)\n }\n\n const getSelectionObj = (item, obj) => {\n // this creates an object that indicates all the pages that\n // are \"selected\" based on the selectedItem and its parents\n // i.e. the breadcrumbs back to home\n // this allows us to highlight the selected parents and\n // keep the correct menus open\n if (item.url === ROOT_MENU_URL) {\n // have reached home,\n // add home at level 0 and return, ending he recursion\n obj[0] = item\n return obj\n } else {\n // add this item as the one that is \"selected\" at its level\n // then recurse to its parent to add the next highest level\n obj[item.treeLevel] = item\n obj = getSelectionObj(item.parent, obj) // recurse\n return obj\n }\n }\n\n const menuNavigate = item => {\n // either open the menu for the item's children (isPageNav=false)\n // or navigate to the associated url (isPageNav=true)\n if (item) {\n let isPageNav = false\n\n if (!item.hasChildren) {\n isPageNav = true\n }\n if (item === selectedItem) {\n // reselect\n isPageNav = true\n }\n\n if (isPageNav) {\n navigate(item.url)\n setIsMenuOpen(false)\n menuReset()\n } else {\n setSelectedItem(item)\n let selObj = getSelectionObj(item, {}) // track the selected item at this level and above\n setSelections(selObj)\n }\n }\n }\n\n const navigateBack = (e, item) => {\n e.preventDefault();\n // go \"up\" a level by navigating to this item's parent\n menuNavigate(item.parent)\n }\n\n const sectionClick = (e, section, menuMode) => {\n if (section.hasChildren) {\n e.preventDefault()\n } else {\n if (currentPath.includes(section.url)) {\n setIsMenuOpen(false)\n }\n handleClickSnowplowEvent(section.url)\n }\n\n if (menuMode !== \"sitemap\") {\n // otherwise hover triggered in mobile emulator\n if (section !== selectedItem) {\n // don't trigger nav through hovers\n setSelectedItem(section)\n let selObj = getSelectionObj(section, {}) // track the selected item at this level and above\n setSelections(selObj)\n if (selectedItem.treeLevel === 2) {\n setHasClickedTwice(false)\n }\n } else {\n if (selectedItem.treeLevel === 2) {\n setHasClickedTwice(!hasClickedTwice)\n } else {\n menuReset()\n }\n }\n }\n }\n\n const menuReset = () => {\n // reset menu to initial state, with root of menuTree selected\n if (selectedItem !== menuRoot) {\n menuNavigate(menuRoot)\n }\n }\n\n const menuFocus = e => {\n // doesn't do anything, needed to eliminate warning\n }\n\n const toggleMenu = e => {\n if (!isMenuOpen) {\n // menu is closed, will open now\n menuReset() // select the root\n }\n setIsMenuOpen(!isMenuOpen) // toggle open state\n }\n\n const sortedTree = useCallback(\n (arr, level) => {\n // sort the items at this level\n // then recurse on each item to sort the children, etc\n arr.sort((a, b) => {\n return a.order - b.order // sort the array by order\n })\n arr.forEach(item => {\n item.treeLevel = level\n item.orderCode =\n item.parent?.treeLevel > 0\n ? item.parent.orderCode + \".\" + item.order\n : item.order\n\n if (item.strapi_children === undefined) {\n // catch second level where children are not defined\n // get items whose parent is the current item\n let itemChildren = menuContent.filter(\n child => child.strapi_parent?.id === item.id\n )\n item.strapi_children = itemChildren || []\n }\n if (item.treeLevel < 3) {\n // Enforcing max 3 levels\n // process children\n item.strapi_children = sortedTree(item.strapi_children || [], level + 1) // recurse for each child\n item.hasChildren = item.strapi_children.length > 0\n\n // add parent\n item.strapi_children.map(i => {\n i.parent = item\n return i\n })\n } else {\n // prevent view from showing children\n // deeper than max level\n item.hasChildren = false\n }\n })\n\n return arr // return sorted children back to parent\n },\n [menuContent]\n )\n\n const handleClick = useCallback((e) => {\n if (!(menuElements.some((el) => el.parentElement.contains(e.target)))) {\n menuReset()\n }\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [menuElements])\n\n const handleClickSnowplowEvent = (url) => {\n trackSnowplowEvent(\n \"link_click\",\n null,\n null,\n null,\n url,\n {}\n )\n }\n\n const isExternalUrl = (url) => {\n // a URL is considered external if it begins with \"http://\" or \"https://\"\n return /^https?:\\/\\//.test(url)\n }\n\n useEffect(() => {\n // create sorted + structured menuTree from menuContent\n\n // pick the root of the tree\n let t = menuContent.filter(item => item.url === ROOT_MENU_URL)\n\n // sort all levels of the menu\n t = sortedTree(t, 0) // pass root at level 0\n\n // store in menuTree, ready to be passed to view\n setMenuTree(t)\n\n const root = t[0]\n setMenuRoot(root)\n }, [setMenuTree, sortedTree, menuContent])\n\n useEffect(() => {\n // make deep copy of content to process, will trigger useEffect above\n setMenuContent(JSON.parse(JSON.stringify(content)))\n }, [setMenuContent, content])\n\n useEffect(() => {\n if (menuElements.length === 0) { return }\n document.addEventListener(\"click\", handleClick)\n return () => {\n document.removeEventListener(\"click\", handleClick)\n }\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [menuElements])\n\n // get images for top level sections\n let sections = content.filter(item => item.strapi_parent?.url === ROOT_MENU_URL)\n sections.forEach(item => {\n sectionImages[item.order] = item.imgUrl || \"\"\n })\n\n // get current path\n useEffect(() => {\n if (window.location) {\n setCurrentPath(window.location.pathname)\n }\n }, [])\n\n useEffect(() => {\n setIsMenuOpen(screenSize.width > 992)\n }, [screenSize])\n\n // recursive menu generator which makes single version of DOM\n // that can be used for desktop, mobile and sitemap views of megamenu\n const generateMenus = (item, menuMode) => {\n return (\n <>\n {item.hasChildren && (\n \n
\n
\n {\n if (e.key === \"Enter\" || e.key === \" \") {\n navigateBack(e, item)\n }\n }}\n onClick={e => navigateBack(e, item)}\n >\n Back\n \n
\n {/* 1st level menu item that has child menu items e.g. Reservations */}\n
\n {isExternalUrl(item.url) ?\n {\n setIsMenuOpen(false) \n handleClickSnowplowEvent(item.url)\n }}\n >\n {item.title}\n \n \n :\n {\n setIsMenuOpen(false) \n handleClickSnowplowEvent(item.url)\n }}\n >\n {item.title}\n \n \n }\n
\n {/* 1st level menu item in the navbar and 2nd level menu items e.g. Reservations > Campig fees */}\n {item.strapi_children.filter((page) => page.show).map((page, index) => (\n \n
\n {isExternalUrl(page.url) ?\n handleClickSnowplowEvent(page.url)}\n >\n {page.title}\n \n \n :\n menuFocus(e, page)}\n onClick={e => sectionClick(e, page, menuMode)}\n >\n {page.title}\n {page.hasChildren && (\n \n )}\n \n }\n
\n
\n {generateMenus(page, menuMode)}\n
\n
\n ))}\n
\n \n )}\n {/* for site map page */}\n {!item.hasChildren && (\n
\n
\n {isExternalUrl(item.url) ?\n handleClickSnowplowEvent(item.url)}\n >\n {item.title}\n \n :\n handleClickSnowplowEvent(item.url)}\n >\n {item.title}\n \n }\n
\n
\n )}\n \n )\n }\n\n return (\n <>\n
\n
\n \n
\n {\n if (e.key === \"Enter\" || e.key === \" \") {\n toggleMenu(e)\n }\n }}\n onClick={e => toggleMenu(e)}\n >\n
\n \n
\n
\n \n
\n
\n \n
\n {menuTree.map((page, index) => (\n
{generateMenus(page, menuMode)}
\n ))}\n
\n \n \n \n )\n}\n\nMegaMenu.propTypes = {\n content: PropTypes.arrayOf(\n PropTypes.shape({\n order: PropTypes.number.isRequired,\n strapi_children: PropTypes.array,\n strapi_parent: PropTypes.shape({\n id: PropTypes.number.isRequired,\n title: PropTypes.string.isRequired,\n }),\n title: PropTypes.string.isRequired,\n url: PropTypes.string,\n })\n ),\n}\n\nexport default MegaMenu\n","/**\n * SEO component that queries for data with\n * Gatsby's useStaticQuery React hook\n *\n * See: https://www.gatsbyjs.com/docs/use-static-query/\n */\nimport * as React from \"react\"\nimport PropTypes from \"prop-types\"\nimport { useStaticQuery, graphql } from \"gatsby\"\n\nconst Seo = ({ description = '', title, keywords = '', image, children }) => {\n const { site } = useStaticQuery(\n graphql`\n query {\n site {\n siteMetadata {\n title\n description\n author\n image\n }\n }\n }\n `\n )\n\n const metaDescription = description || site.siteMetadata.description\n const metaKeywords = keywords\n const defaultTitle = site.siteMetadata?.title\n const metaImage = image || site.siteMetadata?.image\n\n return (\n <>\n {title + ' | ' + defaultTitle}\n \n \n \n \n \n \n \n \n \n \n \n {children}\n \n )\n}\n\nSeo.propTypes = {\n description: PropTypes.string,\n title: PropTypes.string.isRequired,\n keywords: PropTypes.string,\n image: PropTypes.string\n}\n\nexport default Seo\n","import React, { useState, useEffect } from \"react\"\nimport { Link } from \"gatsby\"\nimport parksLogo from \"../images/park-card.png\"\n\n// function to check if a string contains anything besides html tags and whitespace characters\nexport const isNullOrWhiteSpace = (str) => !str || !str.toString().replace(/(<([^>]+)>)|^\\s+|\\s+$|\\s+/g, \"\");\nexport const capitalizeFirstLetter = (str) => str.charAt(0).toUpperCase() + str.slice(1).toLowerCase();\nexport const renderHTML = (rawHTML) => React.createElement(\"span\", { dangerouslySetInnerHTML: { __html: rawHTML } });\nexport const renderBreadcrumbs = (menuContent, pageContext) => {\n // TODO this doesn't work if the page is not in the menu\n let current = menuContent.find(mc => mc.url === pageContext.Slug)\n const breadcrumbItems = [\n
\n {current?.title}\n
,\n ]\n\n let parent = menuContent.find(mc => mc.strapi_id === current?.strapi_parent?.id)\n return addItems(parent, menuContent, breadcrumbItems)\n\n function addItems(parent, menuContent, breadcrumbItems) {\n if (parent) {\n breadcrumbItems.push(\n \n {parent.title}\n \n )\n parent = menuContent.find(mc => mc.strapi_id === parent?.strapi_parent?.id)\n return addItems(parent, menuContent, breadcrumbItems)\n }\n return breadcrumbItems.reverse()\n }\n}\nexport const addSmallImagePrefix = (str) => {\n if (!str) {\n return parksLogo\n }\n let url = str\n // fallback in case imageUrl has already prefix\n // remove another prefix from str\n const prefixes = [\"large_\", \"medium_\", \"small_\"]\n for (let i = 0; i < prefixes.length; i++) {\n if (str.includes(prefixes[i])) {\n url = str.replace(prefixes[i], \"\")\n }\n }\n const i = url.lastIndexOf(\"/\")\n return url.substring(0, i + 1) + \"small_\" + url.substring(i + 1, url.length)\n}\nexport const handleImgError = (setErrorStates, index) => {\n setErrorStates(prevErrorStates => {\n const newErrorStates = [...prevErrorStates]\n newErrorStates[index] = true\n return newErrorStates\n })\n console.clear()\n}\nexport const useScreenSize = () => {\n const [screenSize, setScreenSize] = useState({\n width: typeof window !== 'undefined' ? window.innerWidth : 0,\n height: typeof window !== 'undefined' ? window.innerHeight : 0,\n })\n\n useEffect(() => {\n const handleResize = () => {\n setScreenSize({\n width: window.innerWidth,\n height: window.innerHeight,\n })\n }\n window.addEventListener('resize', handleResize);\n // clean up the event listener when the component unmounts\n return () => {\n window.removeEventListener('resize', handleResize)\n }\n }, [])\n return screenSize\n}","export const trackSnowplowEvent = (\n action,\n resultCount = null,\n parkName = null,\n cityName = null,\n label = null,\n filters = {}\n) => {\n if (typeof window.snowplow === \"function\") {\n window.snowplow(\"trackSelfDescribingEvent\", {\n schema: \"iglu:ca.bc.gov.bcparks/action/jsonschema/1-0-0\",\n data: {\n // Required field: the name of the action\n // Possible values: 'search', 'update_search', 'clear_filters', 'button_click', 'link_click', 'accordion_open', 'accordion_close'\n action: action,\n // Optional field: the number of search results\n result_count: resultCount,\n // Optional field: the park name, if entered\n park_name: parkName,\n // Optional field: the city name, if entered\n city_name: cityName,\n // Optional field: the label for the button or accordion\n label: label,\n // Optional field: filters for the search\n // Possible filters: 'popular', 'area', 'camping', 'activities', 'facilities'\n filters: filters,\n },\n })\n }\n}\n\n// convert filter array to object\nexport const transformFilters = filters => {\n return filters.reduce((acc, filter) => {\n if (!acc[filter.type]) {\n acc[filter.type] = []\n }\n acc[filter.type].push(filter.label)\n\n // check for \"Popular\" filters\n if (\n (filter.type === \"Camping\" && [1, 36].includes(filter.value)) ||\n (filter.type === \"Things to do\" && [1, 3, 8, 9].includes(filter.value)) ||\n (filter.type === \"Facilities\" && filter.value === 6)\n ) {\n if (!acc[\"Popular\"]) {\n acc[\"Popular\"] = []\n }\n acc[\"Popular\"].push(filter.label)\n }\n return acc\n }, {})\n}\n","export default __webpack_public_path__ + \"static/park-card-3522958383cc7b9802ae5bfbec1d5a36.png\";"],"names":["noop","_WINDOW","_DOCUMENT","_MUTATION_OBSERVER","_PERFORMANCE","mark","measure","window","document","MutationObserver","performance","e","userAgent","navigator","WINDOW","DOCUMENT","MUTATION_OBSERVER","PERFORMANCE","IS_DOM","documentElement","head","addEventListener","createElement","IS_IE","indexOf","a","t","r","o","c","bt","fak","fakd","ho","classic","fa","fas","far","fal","fat","fad","fab","sharp","fass","fasr","fasl","fast","fasds","u$1","m$1","concat","t$1","GROUP","SWAP_OPACITY","PRIMARY","SECONDARY","yo","Object","keys","map","So","kit","NAMESPACE_IDENTIFIER","UNITS_IN_GRID","DEFAULT_CSS_PREFIX","DEFAULT_REPLACEMENT_CLASS","DATA_FA_I2SVG","DATA_FA_PSEUDO_ELEMENT","DATA_FA_PSEUDO_ELEMENT_PENDING","DATA_PREFIX","DATA_ICON","HTML_CLASS_I2SVG_BASE_CLASS","MUTATION_APPROACH_ASYNC","TAGNAMES_TO_SKIP_FOR_PSEUDOELEMENTS","PRODUCTION","e$$1","FAMILIES","familyProxy","obj","Proxy","get","target","prop","_PREFIX_TO_STYLE","PREFIX_TO_STYLE","_STYLE_TO_PREFIX","solid","regular","light","thin","duotone","brands","STYLE_TO_PREFIX","_PREFIX_TO_LONG_STYLE","PREFIX_TO_LONG_STYLE","_LONG_STYLE_TO_PREFIX","LONG_STYLE_TO_PREFIX","ICON_SELECTION_SYNTAX_PATTERN","LAYERS_TEXT_CLASSNAME","FONT_FAMILY_PATTERN","ATTRIBUTES_WATCHED_FOR_MUTATION","normal","DUOTONE_CLASSES","prefixes","Set","add","bind","RESERVED_CLASSES","initial","FontAwesomeConfig","querySelector","forEach","_ref","attr","key","val","coerce","element","getAttribute","getAttrConfig","_default","styleDefault","familyDefault","cssPrefix","replacementClass","autoReplaceSvg","autoAddCss","autoA11y","searchPseudoElements","observeMutations","mutateApproach","keepOriginalSource","measurePerformance","showMissingIcons","familyPrefix","_config","config","defineProperty","enumerable","set","_onChangeCb","cb","d$2","meaninglessTransform","size","x","y","rotate","flipX","flipY","idPool","nextUniqueId","id","Math","random","toArray","array","i","length","classArray","node","classList","split","filter","htmlEscape","str","replace","joinStyles","styles","reduce","acc","styleName","trim","transformIsMeaningful","transform","baseStyles","css","dcp","drc","fp","rc","s","dPatt","RegExp","customPropPatt","rPatt","_cssInserted","ensureCss","style","setAttribute","innerHTML","headChildren","childNodes","beforeChild","child","tagName","toUpperCase","insertBefore","insertCss","InjectCSS","mixout","dom","hooks","beforeDOMElementCreation","beforeI2svg","w$1","shims","namespace","functions","listener","removeEventListener","loaded","fn","toHtml","abstractNodes","tag","attributes","children","attributeName","joinAttributes","join","iconFromMapping","mapping","prefix","iconName","icon","doScroll","test","readyState","subject","initialValue","thisContext","result","iterator","undefined","func","b","d","call","bindInternal4","toHex","unicode","decoded","string","output","counter","value","charCodeAt","extra","push","ucs2decode","toString","normalizeIcons","icons","defineIcons","params","arguments","skipHooks","normalized","addPack","LONG_STYLE","values","_defaultUsablePrefix","_byUnicode","_byLigature","_byOldName","_byOldUnicode","_byAlias","PREFIXES","getIconName","cls","parts","slice","name","build","lookup","reducer","o$$1","a$$1","alias","aliases","hasRegular","autoFetchSvg","shimLookups","shim","maybeNameMaybeUnicode","names","unicodes","getCanonicalPrefix","family","byUnicode","byAlias","byOldName","getDefaultUsablePrefix","c$$1","emptyCanonicalIcon","rest","styleOrPrefix","defined","PREFIXES_FOR_FAMILY","getCanonicalIcon","skipLookups","famProps","givenPrefix","nonDuotoneFamilyIds","familyId","includes","some","v$$1","canonical","familyName","aliasIconName","_plugins","_hooks","providers","defaultProviderKeys","chainHooks","hook","accumulator","_len","args","Array","_key","hookFn","apply","callHooks","_len2","_key2","callProvided","prototype","findIconDefinition","iconLookup","library","definitions","constructor","this","additions","_pullDefinitions","longPrefix","reset","definition","i2svg","Promise","reject","Error","watch","autoReplaceSvgRoot","autoReplace","setTimeout","parse","isArray","match","canonicalIcon","api","noAuto","domVariants","abstractCreator","abstract","container","html","makeInlineSvgAbstract","main","mask","symbol","title","maskId","titleId","watchable","width","height","found","isUploadedIcon","attrClass","classes","content","role","uploadedIconWidthStyle","asSymbol","offset","asIcon","makeLayersTextAbstract","_ref2","startCentered","transformForCss","styleString","class","styles$1","asFoundIcon","vectorData","fill","missingIconResolutionMixin","findIcon","resolve","console","error","maybeNotifyMissing","noop$1","p$2","preamble","end","perf","begin","noop$2","isWatched","createElementNS","convertSVG","abstractObj","ceFn","createTextNode","appendChild","mutators","mutation","parentNode","comment","createComment","outerHTML","nodeAsComment","replaceChild","remove","nest","forSvg","splitClasses","toSvg","toNode","removeAttribute","newInnerHTML","performOperationSync","op","perform","mutations","callback","callbackFunction","frame","requestAnimationFrame","mutator","disabled","disableObservation","enableObservation","mo$1","observe","options","treeCallback","nodeCallback","pseudoElementsCallback","observeMutationsRoot","objects","defaultPrefix","mutationRecord","type","addedNodes","hasPrefixAndIcon","contains","childList","characterData","subtree","classParser","existingPrefix","existingIconName","innerText","ligature","firstChild","nodeType","Node","TEXT_NODE","data","parseMeta","parser","styleParser","extraClasses","extraAttributes","attributesParser","pluginMeta","extraStyles","styles$2","generateMutation","nodeMeta","knownPrefixes","onTree","root","htmlClassList","hclAdd","suffix","hclRemove","f$$1","prefixesDomQuery","p$$1","candidates","querySelectorAll","all","then","resolvedMutations","catch","onNode","render","iconDefinition","ReplaceElements","next","maybeIconDefinition","mutationObserverCallbacks","provides","providers$$1","generateSvgReplacementMutation","generateAbstractIcon","nextChild","containerWidth","iconWidth","Layers","layer","assembler","LayersCounter","makeLayersCounterAbstract","LayersText","text","generateLayersText","computedFontSize","parseInt","getComputedStyle","fontSize","boundingClientRect","getBoundingClientRect","CLEAN_CONTENT_PATTERN","SECONDARY_UNICODE_RANGE","_FONT_FAMILY_WEIGHT_TO_PREFIX","FontAwesome","FONT_FAMILY_WEIGHT_TO_PREFIX","toLowerCase","FONT_FAMILY_WEIGHT_FALLBACK","fontFamily","weights","entries","replaceForPosition","position","pendingAttribute","alreadyProcessedPseudoElement","getPropertyValue","fontFamilyMatch","fontWeight","removeChild","fontFamilySanitized","fontWeightInteger","fontWeightSanitized","isNaN","getPrefix","hexValue","isSecondary","cleaned","codePoint","index","second","first","codePointAt","isPrependTen","isDoubled","hexValueFromContent","isV4","startsWith","iconIdentifier","iconName4","oldUnicode","newUnicode","byOldUnicode","meta","processable","operations","PseudoElements","pseudoElements2svg","_unwatched","parseTransformString","transformString","n","parseFloat","PowerTransforms","parseNodeAttributes","generateAbstractTransformGrouping","outer","innerTranslate","innerScale","innerRotate","inner","ALL_SPACE","fillBlack","force","Masks","maskData","generateAbstractMask","explicitMaskId","mainWidth","mainPath","maskWidth","maskPath","trans","path","transformForSvg","maskRect","maskInnerGroupChildrenMixin","maskInnerGroup","maskOuterGroup","clipId","maskTag","maskUnits","maskContentUnits","defs","MissingIconIndicator","reduceMotion","matchMedia","matches","missingIconAbstract","gChildren","FILL","ANIMATION_BASE","attributeType","repeatCount","dur","OPACITY_ANIMATE","dot","cx","cy","opacity","nextPlugins","mixoutsTo","k","plugin","tk","sk","registerPlugins","unwatch","bootstrap","disconnect","symbolData","parse$1","ownKeys","object","enumerableOnly","getOwnPropertySymbols","symbols","sym","getOwnPropertyDescriptor","_objectSpread2","source","_defineProperty","getOwnPropertyDescriptors","defineProperties","_typeof","Symbol","configurable","writable","_objectWithoutProperties","excluded","sourceKeys","_objectWithoutPropertiesLoose","sourceSymbolKeys","propertyIsEnumerable","_toConsumableArray","arr","_arrayLikeToArray","_arrayWithoutHoles","iter","from","_iterableToArray","minLen","_unsupportedIterableToArray","TypeError","_nonIterableSpread","len","arr2","camelize","chr","substr","_excluded","normalizeIconArgs","objectWithKey","defaultProps","border","className","fixedWidth","inverse","flip","listItem","pull","pulse","rotation","spin","spinPulse","spinReverse","beat","fade","beatFade","bounce","shake","swapOpacity","FontAwesomeIcon","props","ref","allProps","iconArgs","maskArgs","_classes","flash","renderedIcon","_console","log","extraProps","hasOwnProperty","convertCurry","displayName","propTypes","convert","mixins","attrs","pair","charAt","_extraProps$style","existingStyle","remaining","W","hasNativeLazyLoadSupport","HTMLImageElement","z","P","h","loading","shouldLoad","A","l","backgroundColor","top","left","bottom","right","objectFit","objectPosition","transition","H","F","_ref5","layout","paddingTop","maxWidth","display","alt","src","G","u","V","B","U","srcSet","decoding","Y","fallback","sources","sizes","_ref6","media","X","isRequired","J","Z","K","Q","ee","te","ae","ie","image","se","re","ne","oe","le","de","as","g","onStartLoad","p","onLoad","m","onError","f","w","v","E","S","M","N","$","JSON","stringify","images","I","_ref7","renderImageToString","swapPlaceholderImage","current","complete","wasCached","has","_ref8","isLoading","isLoaded","cancelAnimationFrame","dangerouslySetInnerHTML","__html","suppressHydrationWarning","ce","he","ue","__imageData","__error","warn","ge","imgClassName","imgStyle","placeholder","pe","me","fe","we","UPPERCASE","LOWERCASE","LEADING_CAPITAL","IDENTIFIER","SEPARATORS","LEADING_SEPARATORS","SEPARATORS_AND_IDENTIFIER","NUMBERS_AND_IDENTIFIER","camelCase","input","pascalCase","preserveConsecutiveUppercase","locale","toLocaleLowerCase","toLocaleUpperCase","preserveCamelCase","isLastCharLower","isLastCharUpper","isLastLastCharUpper","character","lastIndex","m1","postProcess","_","identifier","module","exports","iconSrc","React","FooterMenu","item","handleClick","sortedChildren","strapi_children","sort","order","url","href","onClick","Link","to","StaticImage","require","Footer","_data$allStrapiFooter","useStaticQuery","footerMenu","allStrapiFooterMenu","nodes","trackSnowplowEvent","SkipToContent","EmergencyAlert","_data$allStrapiEmerge","alerts","allStrapiEmergencyAlert","alert","characterCount","_alert$links","descriptionCount","description","linkTextCount","links","link","linkText","show","setShow","useState","sessionStorage","setItem","useEffect","storedAlertValue","getItem","colour","faCircleExclamation","tabIndex","onKeyDown","faXmark","Header","MegaMenu","menuMode","menuContent","setMenuContent","menuTree","setMenuTree","menuRoot","setMenuRoot","selectedItem","setSelectedItem","selections","setSelections","isMenuOpen","setIsMenuOpen","hasClickedTwice","setHasClickedTwice","currentPath","setCurrentPath","screenSize","useScreenSize","ROOT_MENU_URL","menuCollection","menuElements","sectionImages","getElementsByClassName","getSelectionObj","treeLevel","parent","menuNavigate","isPageNav","hasChildren","navigate","menuReset","selObj","navigateBack","preventDefault","toggleMenu","sortedTree","useCallback","level","_item$parent","orderCode","itemChildren","_child$strapi_parent","strapi_parent","el","parentElement","handleClickSnowplowEvent","isExternalUrl","_item$strapi_parent","imgUrl","location","pathname","generateMenus","faChevronLeft","faCircleChevronRight","page","onFocus","sectionClick","section","faChevronRight","Logo","LogoVertical","faBars","_site$siteMetadata","_site$siteMetadata2","keywords","site","metaDescription","siteMetadata","metaKeywords","defaultTitle","metaImage","property","isNullOrWhiteSpace","renderBreadcrumbs","pageContext","find","mc","Slug","breadcrumbItems","addItems","_parent$url","_parent","strapi_id","_parent2","_parent2$strapi_paren","reverse","_current$strapi_paren","addSmallImagePrefix","parksLogo","lastIndexOf","substring","handleImgError","setErrorStates","prevErrorStates","newErrorStates","clear","setScreenSize","innerWidth","innerHeight","handleResize","action","resultCount","parkName","cityName","label","filters","snowplow","schema","result_count","park_name","city_name","transformFilters"],"sourceRoot":""}