{"version":3,"sources":["./node_modules/@ionic/core/dist/esm/framework-delegate-d1eb6504.js","./node_modules/@ionic/core/dist/esm/haptic-ccbda579.js","./node_modules/@ionic/core/dist/esm/index-729ec402.js","./node_modules/@ionic/core/dist/esm/spinner-configs-c78e170e.js","./node_modules/@ionic/core/dist/esm/theme-c2dc54d9.js"],"names":[],"mappings":";;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEsD;;;;;;;;;;;;;ACjCtD;AAAA;AAAA;AAAA;AAAA;AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEiH;;;;;;;;;;;;;AC3CjH;AAAA;AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,mEAAmE,mBAAmB;AACtF;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,wCAAwC,mCAAmC;AAC3E;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,gCAAgC,gCAAgC;AAChE;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,+CAA+C,QAAQ;AACvD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,mBAAmB,0BAA0B;AAC7C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEkC;;;;;;;;;;;;;AC/GlC;AAAA;AAAA;AACA;AACA;AACA;AACA;AACA,sCAAsC,4BAA4B;AAClE;AACA;AACA;AACA;AACA,8BAA8B,oBAAoB;AAClD,+BAA+B,oBAAoB;AACnD;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA,sCAAsC,mBAAmB;AACzD;AACA;AACA;AACA;AACA,8BAA8B,oBAAoB;AAClD,+BAA+B,oBAAoB;AACnD;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,+BAA+B,gBAAgB;AAC/C;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA,wCAAwC,sCAAsC;AAC9E,sCAAsC,4BAA4B;AAClE;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA,wCAAwC,sCAAsC;AAC9E,sCAAsC,4BAA4B;AAClE;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEyB;;;;;;;;;;;;;AC7GzB;AAAA;AAAA;AAAA;AAAA;AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,sBAAsB,MAAM;AAC5B,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEqF","file":"common-es2015.js","sourcesContent":["const attachComponent = async (delegate, container, component, cssClasses, componentProps) => {\n if (delegate) {\n return delegate.attachViewToDom(container, component, componentProps, cssClasses);\n }\n if (typeof component !== 'string' && !(component instanceof HTMLElement)) {\n throw new Error('framework delegate is missing');\n }\n const el = (typeof component === 'string')\n ? container.ownerDocument && container.ownerDocument.createElement(component)\n : component;\n if (cssClasses) {\n cssClasses.forEach(c => el.classList.add(c));\n }\n if (componentProps) {\n Object.assign(el, componentProps);\n }\n container.appendChild(el);\n if (el.componentOnReady) {\n await el.componentOnReady();\n }\n return el;\n};\nconst detachComponent = (delegate, element) => {\n if (element) {\n if (delegate) {\n const container = element.parentElement;\n return delegate.removeViewFromDom(container, element);\n }\n element.remove();\n }\n return Promise.resolve();\n};\n\nexport { attachComponent as a, detachComponent as d };\n","/**\n * Check to see if the Haptic Plugin is available\n * @return Returns `true` or false if the plugin is available\n */\n/**\n * Trigger a selection changed haptic event. Good for one-time events\n * (not for gestures)\n */\nconst hapticSelection = () => {\n const engine = window.TapticEngine;\n if (engine) {\n engine.selection();\n }\n};\n/**\n * Tell the haptic engine that a gesture for a selection change is starting.\n */\nconst hapticSelectionStart = () => {\n const engine = window.TapticEngine;\n if (engine) {\n engine.gestureSelectionStart();\n }\n};\n/**\n * Tell the haptic engine that a selection changed during a gesture.\n */\nconst hapticSelectionChanged = () => {\n const engine = window.TapticEngine;\n if (engine) {\n engine.gestureSelectionChanged();\n }\n};\n/**\n * Tell the haptic engine we are done with a gesture. This needs to be\n * called lest resources are not properly recycled.\n */\nconst hapticSelectionEnd = () => {\n const engine = window.TapticEngine;\n if (engine) {\n engine.gestureSelectionEnd();\n }\n};\n\nexport { hapticSelectionStart as a, hapticSelectionChanged as b, hapticSelectionEnd as c, hapticSelection as h };\n","/**\n * Does a simple sanitization of all elements\n * in an untrusted string\n */\nconst sanitizeDOMString = (untrustedString) => {\n try {\n if (typeof untrustedString !== 'string' || untrustedString === '') {\n return untrustedString;\n }\n /**\n * Create a document fragment\n * separate from the main DOM,\n * create a div to do our work in\n */\n const documentFragment = document.createDocumentFragment();\n const workingDiv = document.createElement('div');\n documentFragment.appendChild(workingDiv);\n workingDiv.innerHTML = untrustedString;\n /**\n * Remove any elements\n * that are blocked\n */\n blockedTags.forEach(blockedTag => {\n const getElementsToRemove = documentFragment.querySelectorAll(blockedTag);\n for (let elementIndex = getElementsToRemove.length - 1; elementIndex >= 0; elementIndex--) {\n const element = getElementsToRemove[elementIndex];\n if (element.parentNode) {\n element.parentNode.removeChild(element);\n }\n else {\n documentFragment.removeChild(element);\n }\n /**\n * We still need to sanitize\n * the children of this element\n * as they are left behind\n */\n const childElements = getElementChildren(element);\n /* tslint:disable-next-line */\n for (let childIndex = 0; childIndex < childElements.length; childIndex++) {\n sanitizeElement(childElements[childIndex]);\n }\n }\n });\n /**\n * Go through remaining elements and remove\n * non-allowed attribs\n */\n // IE does not support .children on document fragments, only .childNodes\n const dfChildren = getElementChildren(documentFragment);\n /* tslint:disable-next-line */\n for (let childIndex = 0; childIndex < dfChildren.length; childIndex++) {\n sanitizeElement(dfChildren[childIndex]);\n }\n // Append document fragment to div\n const fragmentDiv = document.createElement('div');\n fragmentDiv.appendChild(documentFragment);\n // First child is always the div we did our work in\n const getInnerDiv = fragmentDiv.querySelector('div');\n return (getInnerDiv !== null) ? getInnerDiv.innerHTML : fragmentDiv.innerHTML;\n }\n catch (err) {\n console.error(err);\n return '';\n }\n};\n/**\n * Clean up current element based on allowed attributes\n * and then recursively dig down into any child elements to\n * clean those up as well\n */\nconst sanitizeElement = (element) => {\n // IE uses childNodes, so ignore nodes that are not elements\n if (element.nodeType && element.nodeType !== 1) {\n return;\n }\n for (let i = element.attributes.length - 1; i >= 0; i--) {\n const attribute = element.attributes.item(i);\n const attributeName = attribute.name;\n // remove non-allowed attribs\n if (!allowedAttributes.includes(attributeName.toLowerCase())) {\n element.removeAttribute(attributeName);\n continue;\n }\n // clean up any allowed attribs\n // that attempt to do any JS funny-business\n const attributeValue = attribute.value;\n /* tslint:disable-next-line */\n if (attributeValue != null && attributeValue.toLowerCase().includes('javascript:')) {\n element.removeAttribute(attributeName);\n }\n }\n /**\n * Sanitize any nested children\n */\n const childElements = getElementChildren(element);\n /* tslint:disable-next-line */\n for (let i = 0; i < childElements.length; i++) {\n sanitizeElement(childElements[i]);\n }\n};\n/**\n * IE doesn't always support .children\n * so we revert to .childNodes instead\n */\nconst getElementChildren = (el) => {\n return (el.children != null) ? el.children : el.childNodes;\n};\nconst allowedAttributes = ['class', 'id', 'href', 'src', 'name', 'slot'];\nconst blockedTags = ['script', 'style', 'iframe', 'meta', 'link', 'object', 'embed'];\n\nexport { sanitizeDOMString as s };\n","const spinners = {\n 'bubbles': {\n dur: 1000,\n circles: 9,\n fn: (dur, index, total) => {\n const animationDelay = `${(dur * index / total) - dur}ms`;\n const angle = 2 * Math.PI * index / total;\n return {\n r: 5,\n style: {\n 'top': `${9 * Math.sin(angle)}px`,\n 'left': `${9 * Math.cos(angle)}px`,\n 'animation-delay': animationDelay,\n }\n };\n }\n },\n 'circles': {\n dur: 1000,\n circles: 8,\n fn: (dur, index, total) => {\n const step = index / total;\n const animationDelay = `${(dur * step) - dur}ms`;\n const angle = 2 * Math.PI * step;\n return {\n r: 5,\n style: {\n 'top': `${9 * Math.sin(angle)}px`,\n 'left': `${9 * Math.cos(angle)}px`,\n 'animation-delay': animationDelay,\n }\n };\n }\n },\n 'circular': {\n dur: 1400,\n elmDuration: true,\n circles: 1,\n fn: () => {\n return {\n r: 20,\n cx: 48,\n cy: 48,\n fill: 'none',\n viewBox: '24 24 48 48',\n transform: 'translate(0,0)',\n style: {}\n };\n }\n },\n 'crescent': {\n dur: 750,\n circles: 1,\n fn: () => {\n return {\n r: 26,\n style: {}\n };\n }\n },\n 'dots': {\n dur: 750,\n circles: 3,\n fn: (_, index) => {\n const animationDelay = -(110 * index) + 'ms';\n return {\n r: 6,\n style: {\n 'left': `${9 - (9 * index)}px`,\n 'animation-delay': animationDelay,\n }\n };\n }\n },\n 'lines': {\n dur: 1000,\n lines: 12,\n fn: (dur, index, total) => {\n const transform = `rotate(${30 * index + (index < 6 ? 180 : -180)}deg)`;\n const animationDelay = `${(dur * index / total) - dur}ms`;\n return {\n y1: 17,\n y2: 29,\n style: {\n 'transform': transform,\n 'animation-delay': animationDelay,\n }\n };\n }\n },\n 'lines-small': {\n dur: 1000,\n lines: 12,\n fn: (dur, index, total) => {\n const transform = `rotate(${30 * index + (index < 6 ? 180 : -180)}deg)`;\n const animationDelay = `${(dur * index / total) - dur}ms`;\n return {\n y1: 12,\n y2: 20,\n style: {\n 'transform': transform,\n 'animation-delay': animationDelay,\n }\n };\n }\n }\n};\nconst SPINNERS = spinners;\n\nexport { SPINNERS as S };\n","const hostContext = (selector, el) => {\n return el.closest(selector) !== null;\n};\n/**\n * Create the mode and color classes for the component based on the classes passed in\n */\nconst createColorClasses = (color) => {\n return (typeof color === 'string' && color.length > 0) ? {\n 'ion-color': true,\n [`ion-color-${color}`]: true\n } : undefined;\n};\nconst getClassList = (classes) => {\n if (classes !== undefined) {\n const array = Array.isArray(classes) ? classes : classes.split(' ');\n return array\n .filter(c => c != null)\n .map(c => c.trim())\n .filter(c => c !== '');\n }\n return [];\n};\nconst getClassMap = (classes) => {\n const map = {};\n getClassList(classes).forEach(c => map[c] = true);\n return map;\n};\nconst SCHEME = /^[a-z][a-z0-9+\\-.]*:/;\nconst openURL = async (url, ev, direction) => {\n if (url != null && url[0] !== '#' && !SCHEME.test(url)) {\n const router = document.querySelector('ion-router');\n if (router) {\n if (ev != null) {\n ev.preventDefault();\n }\n return router.push(url, direction);\n }\n }\n return false;\n};\n\nexport { createColorClasses as c, getClassMap as g, hostContext as h, openURL as o };\n"],"sourceRoot":"webpack:///"}