{"version":3,"file":"831.2876427627205373.js","mappings":"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","names":["CACHED_MAP","getNamedUrl","iconName","iconEl","url","window","Map","win","Ionicons","map","getIconMap","get","getAssetPath","console","warn","getName","icon","mode","ios","md","toLower","isSrc","isStr","trim","replace","getSrc","src","str","length","test","val","toLowerCase","isRTL","hostEl","dir","document","isValid","elm","nodeType","nodeName","i","attributes","name","indexOf","childNodes","ioniconContent","requests","parser","Icon","constructor","hostRef","registerInstance","this","inheritedAttributes","didLoadIcon","svgContent","undefined","isVisible","getIonMode","color","flipRtl","size","lazy","sanitize","componentWillLoad","el","attributeObject","forEach","attr","hasAttribute","getAttribute","removeAttribute","inheritAttributes","connectedCallback","waitUntilVisible","loadIcon","componentDidLoad","disconnectedCallback","io","disconnect","rootMargin","cb","IntersectionObserver","data","isIntersecting","observe","getUrl","has","req","fetch","set","Promise","resolve","startsWith","isSvgDataUrl","isEncodedDataUrl","DOMParser","svg","parseFromString","querySelector","outerHTML","then","rsp","ok","text","div","createElement","innerHTML","removeChild","svgElm","firstElementChild","svgClass","setAttribute","validateContent","getSvgContent","render","shouldAutoFlip","includes","shouldBeFlippable","h","Host","Object","assign","role","class","n","createColorClasses","assetsDirs","getElement","watchers","documentElement","style"],"sourceRoot":"webpack:///","sources":["./node_modules/ionicons/dist/esm/utils-2c56d1c8.js","./node_modules/ionicons/dist/esm/ion-icon.entry.js"],"sourcesContent":["import { g as getAssetPath } from './index-b72adede.js';\n\nlet CACHED_MAP;\nconst getIconMap = () => {\n if (typeof window === 'undefined') {\n return new Map();\n }\n else {\n if (!CACHED_MAP) {\n const win = window;\n win.Ionicons = win.Ionicons || {};\n CACHED_MAP = win.Ionicons.map = win.Ionicons.map || new Map();\n }\n return CACHED_MAP;\n }\n};\nconst addIcons = (icons) => {\n Object.keys(icons).forEach(name => {\n addToIconMap(name, icons[name]);\n /**\n * Developers can also pass in the SVG object directly\n * and Ionicons can map the object to a kebab case name.\n * Example: addIcons({ addCircleOutline });\n * This will create an \"addCircleOutline\" entry and\n * an \"add-circle-outline\" entry.\n * Usage: \n * Using name=\"addCircleOutline\" is valid too, but the\n * kebab case naming is preferred.\n */\n const toKebabCase = name.replace(/([a-z0-9]|(?=[A-Z]))([A-Z0-9])/g, \"$1-$2\").toLowerCase();\n if (name !== toKebabCase) {\n addToIconMap(toKebabCase, icons[name]);\n }\n });\n};\nconst addToIconMap = (name, data) => {\n const map = getIconMap();\n const existingIcon = map.get(name);\n if (existingIcon === undefined) {\n map.set(name, data);\n /**\n * Importing and defining the same icon reference\n * multiple times should not yield a warning.\n */\n }\n else if (existingIcon !== data) {\n console.warn(`[Ionicons Warning]: Multiple icons were mapped to name \"${name}\". Ensure that multiple icons are not mapped to the same icon name.`);\n }\n};\nconst getUrl = (i) => {\n let url = getSrc(i.src);\n if (url) {\n return url;\n }\n url = getName(i.name, i.icon, i.mode, i.ios, i.md);\n if (url) {\n return getNamedUrl(url, i);\n }\n if (i.icon) {\n url = getSrc(i.icon);\n if (url) {\n return url;\n }\n url = getSrc(i.icon[i.mode]);\n if (url) {\n return url;\n }\n }\n return null;\n};\nconst getNamedUrl = (iconName, iconEl) => {\n const url = getIconMap().get(iconName);\n if (url) {\n return url;\n }\n try {\n return getAssetPath(`svg/${iconName}.svg`);\n }\n catch (e) {\n /**\n * In the custom elements build version of ionicons, referencing an icon\n * by name will throw an invalid URL error because the asset path is not defined.\n * This catches that error and logs something that is more developer-friendly.\n * We also include a reference to the ion-icon element so developers can\n * figure out which instance of ion-icon needs to be updated.\n */\n console.warn(`[Ionicons Warning]: Could not load icon with name \"${iconName}\". Ensure that the icon is registered using addIcons or that the icon SVG data is passed directly to the icon component.`, iconEl);\n }\n};\nconst getName = (iconName, icon, mode, ios, md) => {\n // default to \"md\" if somehow the mode wasn't set\n mode = (mode && toLower(mode)) === 'ios' ? 'ios' : 'md';\n // if an icon was passed in using the ios or md attributes\n // set the iconName to whatever was passed in\n if (ios && mode === 'ios') {\n iconName = toLower(ios);\n }\n else if (md && mode === 'md') {\n iconName = toLower(md);\n }\n else {\n if (!iconName && icon && !isSrc(icon)) {\n iconName = icon;\n }\n if (isStr(iconName)) {\n iconName = toLower(iconName);\n }\n }\n if (!isStr(iconName) || iconName.trim() === '') {\n return null;\n }\n // only allow alpha characters and dash\n const invalidChars = iconName.replace(/[a-z]|-|\\d/gi, '');\n if (invalidChars !== '') {\n return null;\n }\n return iconName;\n};\nconst getSrc = (src) => {\n if (isStr(src)) {\n src = src.trim();\n if (isSrc(src)) {\n return src;\n }\n }\n return null;\n};\nconst isSrc = (str) => str.length > 0 && /(\\/|\\.)/.test(str);\nconst isStr = (val) => typeof val === 'string';\nconst toLower = (val) => val.toLowerCase();\n/**\n * Elements inside of web components sometimes need to inherit global attributes\n * set on the host. For example, the inner input in `ion-input` should inherit\n * the `title` attribute that developers set directly on `ion-input`. This\n * helper function should be called in componentWillLoad and assigned to a variable\n * that is later used in the render function.\n *\n * This does not need to be reactive as changing attributes on the host element\n * does not trigger a re-render.\n */\nconst inheritAttributes = (el, attributes = []) => {\n const attributeObject = {};\n attributes.forEach(attr => {\n if (el.hasAttribute(attr)) {\n const value = el.getAttribute(attr);\n if (value !== null) {\n attributeObject[attr] = el.getAttribute(attr);\n }\n el.removeAttribute(attr);\n }\n });\n return attributeObject;\n};\n/**\n * Returns `true` if the document or host element\n * has a `dir` set to `rtl`. The host value will always\n * take priority over the root document value.\n */\nconst isRTL = (hostEl) => {\n if (hostEl) {\n if (hostEl.dir !== '') {\n return hostEl.dir.toLowerCase() === 'rtl';\n }\n }\n return (document === null || document === void 0 ? void 0 : document.dir.toLowerCase()) === 'rtl';\n};\n\nexport { addIcons as a, inheritAttributes as b, getName as c, isRTL as d, getUrl as g, isStr as i };\n","import { r as registerInstance, h, H as Host, c as getElement } from './index-b72adede.js';\nimport { i as isStr, b as inheritAttributes, g as getUrl, c as getName, d as isRTL } from './utils-2c56d1c8.js';\n\nconst validateContent = (svgContent) => {\n const div = document.createElement('div');\n div.innerHTML = svgContent;\n // setup this way to ensure it works on our buddy IE\n for (let i = div.childNodes.length - 1; i >= 0; i--) {\n if (div.childNodes[i].nodeName.toLowerCase() !== 'svg') {\n div.removeChild(div.childNodes[i]);\n }\n }\n // must only have 1 root element\n const svgElm = div.firstElementChild;\n if (svgElm && svgElm.nodeName.toLowerCase() === 'svg') {\n const svgClass = svgElm.getAttribute('class') || '';\n svgElm.setAttribute('class', (svgClass + ' s-ion-icon').trim());\n // root element must be an svg\n // lets double check we've got valid elements\n // do not allow scripts\n if (isValid(svgElm)) {\n return div.innerHTML;\n }\n }\n return '';\n};\nconst isValid = (elm) => {\n if (elm.nodeType === 1) {\n if (elm.nodeName.toLowerCase() === 'script') {\n return false;\n }\n for (let i = 0; i < elm.attributes.length; i++) {\n const name = elm.attributes[i].name;\n if (isStr(name) && name.toLowerCase().indexOf('on') === 0) {\n return false;\n }\n }\n for (let i = 0; i < elm.childNodes.length; i++) {\n if (!isValid(elm.childNodes[i])) {\n return false;\n }\n }\n }\n return true;\n};\nconst isSvgDataUrl = (url) => url.startsWith('data:image/svg+xml');\nconst isEncodedDataUrl = (url) => url.indexOf(';utf8,') !== -1;\n\nconst ioniconContent = new Map();\nconst requests = new Map();\nlet parser;\nconst getSvgContent = (url, sanitize) => {\n // see if we already have a request for this url\n let req = requests.get(url);\n if (!req) {\n if (typeof fetch !== 'undefined' && typeof document !== 'undefined') {\n /**\n * If the url is a data url of an svg, then try to parse it\n * with the DOMParser. This works with content security policies enabled.\n */\n if (isSvgDataUrl(url) && isEncodedDataUrl(url)) {\n if (!parser) {\n /**\n * Create an instance of the DOM parser. This creates a single\n * parser instance for the entire app, which is more efficient.\n */\n parser = new DOMParser();\n }\n const doc = parser.parseFromString(url, 'text/html');\n const svg = doc.querySelector('svg');\n if (svg) {\n ioniconContent.set(url, svg.outerHTML);\n }\n return Promise.resolve();\n }\n else {\n // we don't already have a request\n req = fetch(url).then((rsp) => {\n if (rsp.ok) {\n return rsp.text().then((svgContent) => {\n if (svgContent && sanitize !== false) {\n svgContent = validateContent(svgContent);\n }\n ioniconContent.set(url, svgContent || '');\n });\n }\n ioniconContent.set(url, '');\n });\n // cache for the same requests\n requests.set(url, req);\n }\n }\n else {\n // set to empty for ssr scenarios and resolve promise\n ioniconContent.set(url, '');\n return Promise.resolve();\n }\n }\n return req;\n};\n\nconst iconCss = \":host{display:inline-block;width:1em;height:1em;contain:strict;fill:currentColor;-webkit-box-sizing:content-box !important;box-sizing:content-box !important}:host .ionicon{stroke:currentColor}.ionicon-fill-none{fill:none}.ionicon-stroke-width{stroke-width:32px;stroke-width:var(--ionicon-stroke-width, 32px)}.icon-inner,.ionicon,svg{display:block;height:100%;width:100%}@supports (background: -webkit-named-image(i)){:host(.icon-rtl) .icon-inner{-webkit-transform:scaleX(-1);transform:scaleX(-1)}}@supports not selector(:dir(rtl)) and selector(:host-context([dir='rtl'])){:host(.icon-rtl) .icon-inner{-webkit-transform:scaleX(-1);transform:scaleX(-1)}}:host(.flip-rtl):host-context([dir='rtl']) .icon-inner{-webkit-transform:scaleX(-1);transform:scaleX(-1)}@supports selector(:dir(rtl)){:host(.flip-rtl:dir(rtl)) .icon-inner{-webkit-transform:scaleX(-1);transform:scaleX(-1)}:host(.flip-rtl:dir(ltr)) .icon-inner{-webkit-transform:scaleX(1);transform:scaleX(1)}}:host(.icon-small){font-size:1.125rem !important}:host(.icon-large){font-size:2rem !important}:host(.ion-color){color:var(--ion-color-base) !important}:host(.ion-color-primary){--ion-color-base:var(--ion-color-primary, #3880ff)}:host(.ion-color-secondary){--ion-color-base:var(--ion-color-secondary, #0cd1e8)}:host(.ion-color-tertiary){--ion-color-base:var(--ion-color-tertiary, #f4a942)}:host(.ion-color-success){--ion-color-base:var(--ion-color-success, #10dc60)}:host(.ion-color-warning){--ion-color-base:var(--ion-color-warning, #ffce00)}:host(.ion-color-danger){--ion-color-base:var(--ion-color-danger, #f14141)}:host(.ion-color-light){--ion-color-base:var(--ion-color-light, #f4f5f8)}:host(.ion-color-medium){--ion-color-base:var(--ion-color-medium, #989aa2)}:host(.ion-color-dark){--ion-color-base:var(--ion-color-dark, #222428)}\";\n\nconst Icon = class {\n constructor(hostRef) {\n registerInstance(this, hostRef);\n this.iconName = null;\n this.inheritedAttributes = {};\n this.didLoadIcon = false;\n this.svgContent = undefined;\n this.isVisible = false;\n this.mode = getIonMode();\n this.color = undefined;\n this.ios = undefined;\n this.md = undefined;\n this.flipRtl = undefined;\n this.name = undefined;\n this.src = undefined;\n this.icon = undefined;\n this.size = undefined;\n this.lazy = false;\n this.sanitize = true;\n }\n componentWillLoad() {\n this.inheritedAttributes = inheritAttributes(this.el, ['aria-label']);\n }\n connectedCallback() {\n // purposely do not return the promise here because loading\n // the svg file should not hold up loading the app\n // only load the svg if it's visible\n this.waitUntilVisible(this.el, '50px', () => {\n this.isVisible = true;\n this.loadIcon();\n });\n }\n componentDidLoad() {\n /**\n * Addresses an Angular issue where property values are assigned after the 'connectedCallback' but prior to the registration of watchers.\n * This enhancement ensures the loading of an icon when the component has finished rendering and the icon has yet to apply the SVG data.\n * This modification pertains to the usage of Angular's binding syntax:\n * ``\n */\n if (!this.didLoadIcon) {\n this.loadIcon();\n }\n }\n disconnectedCallback() {\n if (this.io) {\n this.io.disconnect();\n this.io = undefined;\n }\n }\n waitUntilVisible(el, rootMargin, cb) {\n if (this.lazy && typeof window !== 'undefined' && window.IntersectionObserver) {\n const io = (this.io = new window.IntersectionObserver((data) => {\n if (data[0].isIntersecting) {\n io.disconnect();\n this.io = undefined;\n cb();\n }\n }, { rootMargin }));\n io.observe(el);\n }\n else {\n // browser doesn't support IntersectionObserver\n // so just fallback to always show it\n cb();\n }\n }\n loadIcon() {\n if (this.isVisible) {\n const url = getUrl(this);\n if (url) {\n if (ioniconContent.has(url)) {\n // sync if it's already loaded\n this.svgContent = ioniconContent.get(url);\n }\n else {\n // async if it hasn't been loaded\n getSvgContent(url, this.sanitize).then(() => (this.svgContent = ioniconContent.get(url)));\n }\n this.didLoadIcon = true;\n }\n }\n this.iconName = getName(this.name, this.icon, this.mode, this.ios, this.md);\n }\n render() {\n const { flipRtl, iconName, inheritedAttributes, el } = this;\n const mode = this.mode || 'md';\n // we have designated that arrows & chevrons should automatically flip (unless flip-rtl is set to false) because \"back\" is left in ltr and right in rtl, and \"forward\" is the opposite\n const shouldAutoFlip = iconName\n ? (iconName.includes('arrow') || iconName.includes('chevron')) && flipRtl !== false\n : false;\n // if shouldBeFlippable is true, the icon should change direction when `dir` changes\n const shouldBeFlippable = flipRtl || shouldAutoFlip;\n return (h(Host, Object.assign({ role: \"img\", class: Object.assign(Object.assign({ [mode]: true }, createColorClasses(this.color)), { [`icon-${this.size}`]: !!this.size, 'flip-rtl': shouldBeFlippable, 'icon-rtl': shouldBeFlippable && isRTL(el) }) }, inheritedAttributes), this.svgContent ? (h(\"div\", { class: \"icon-inner\", innerHTML: this.svgContent })) : (h(\"div\", { class: \"icon-inner\" }))));\n }\n static get assetsDirs() { return [\"svg\"]; }\n get el() { return getElement(this); }\n static get watchers() { return {\n \"name\": [\"loadIcon\"],\n \"src\": [\"loadIcon\"],\n \"icon\": [\"loadIcon\"],\n \"ios\": [\"loadIcon\"],\n \"md\": [\"loadIcon\"]\n }; }\n};\nconst getIonMode = () => (typeof document !== 'undefined' && document.documentElement.getAttribute('mode')) || 'md';\nconst createColorClasses = (color) => {\n return color\n ? {\n 'ion-color': true,\n [`ion-color-${color}`]: true,\n }\n : null;\n};\nIcon.style = iconCss;\n\nexport { Icon as ion_icon };\n"],"x_google_ignoreList":[0,1]}