diff --git a/app/dist/js/chunk-vendors.js b/app/dist/js/chunk-vendors.js index 23d864e..7b368d6 100644 --- a/app/dist/js/chunk-vendors.js +++ b/app/dist/js/chunk-vendors.js @@ -8,6 +8,28 @@ */ (self["webpackChunkjandl"] = self["webpackChunkjandl"] || []).push([["chunk-vendors"],{ +/***/ "./node_modules/@babel/runtime/helpers/esm/classPrivateFieldLooseBase.js": +/*!*******************************************************************************!*\ + !*** ./node_modules/@babel/runtime/helpers/esm/classPrivateFieldLooseBase.js ***! + \*******************************************************************************/ +/***/ (function(__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) { + +"use strict"; +eval("{__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"default\": function() { return /* binding */ _classPrivateFieldBase; }\n/* harmony export */ });\nfunction _classPrivateFieldBase(e, t) {\n if (!{}.hasOwnProperty.call(e, t)) throw new TypeError(\"attempted to use private field on non-instance\");\n return e;\n}\n\n\n//# sourceURL=webpack://jandl/./node_modules/@babel/runtime/helpers/esm/classPrivateFieldLooseBase.js?\n}"); + +/***/ }), + +/***/ "./node_modules/@babel/runtime/helpers/esm/classPrivateFieldLooseKey.js": +/*!******************************************************************************!*\ + !*** ./node_modules/@babel/runtime/helpers/esm/classPrivateFieldLooseKey.js ***! + \******************************************************************************/ +/***/ (function(__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) { + +"use strict"; +eval("{__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"default\": function() { return /* binding */ _classPrivateFieldKey; }\n/* harmony export */ });\nvar id = 0;\nfunction _classPrivateFieldKey(e) {\n return \"__private_\" + id++ + \"_\" + e;\n}\n\n\n//# sourceURL=webpack://jandl/./node_modules/@babel/runtime/helpers/esm/classPrivateFieldLooseKey.js?\n}"); + +/***/ }), + /***/ "./node_modules/@capacitor/core/dist/index.js": /*!****************************************************!*\ !*** ./node_modules/@capacitor/core/dist/index.js ***! @@ -15,7 +37,7 @@ /***/ (function(__unused_webpack_module, __webpack_exports__, __webpack_require__) { "use strict"; -eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"Capacitor\": function() { return /* binding */ Capacitor; },\n/* harmony export */ \"CapacitorCookies\": function() { return /* binding */ CapacitorCookies; },\n/* harmony export */ \"CapacitorException\": function() { return /* binding */ CapacitorException; },\n/* harmony export */ \"CapacitorHttp\": function() { return /* binding */ CapacitorHttp; },\n/* harmony export */ \"CapacitorPlatforms\": function() { return /* binding */ CapacitorPlatforms; },\n/* harmony export */ \"ExceptionCode\": function() { return /* binding */ ExceptionCode; },\n/* harmony export */ \"Plugins\": function() { return /* binding */ Plugins; },\n/* harmony export */ \"WebPlugin\": function() { return /* binding */ WebPlugin; },\n/* harmony export */ \"WebView\": function() { return /* binding */ WebView; },\n/* harmony export */ \"addPlatform\": function() { return /* binding */ addPlatform; },\n/* harmony export */ \"registerPlugin\": function() { return /* binding */ registerPlugin; },\n/* harmony export */ \"registerWebPlugin\": function() { return /* binding */ registerWebPlugin; },\n/* harmony export */ \"setPlatform\": function() { return /* binding */ setPlatform; }\n/* harmony export */ });\n/* harmony import */ var core_js_modules_es_array_push_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! core-js/modules/es.array.push.js */ \"./node_modules/core-js/modules/es.array.push.js\");\n/* harmony import */ var core_js_modules_es_array_push_js__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_array_push_js__WEBPACK_IMPORTED_MODULE_0__);\n/* provided dependency */ var console = __webpack_require__(/*! ./node_modules/console-browserify/index.js */ \"./node_modules/console-browserify/index.js\");\n\n/*! Capacitor: https://capacitorjs.com/ - MIT License */\nconst createCapacitorPlatforms = win => {\n const defaultPlatformMap = new Map();\n defaultPlatformMap.set('web', {\n name: 'web'\n });\n const capPlatforms = win.CapacitorPlatforms || {\n currentPlatform: {\n name: 'web'\n },\n platforms: defaultPlatformMap\n };\n const addPlatform = (name, platform) => {\n capPlatforms.platforms.set(name, platform);\n };\n const setPlatform = name => {\n if (capPlatforms.platforms.has(name)) {\n capPlatforms.currentPlatform = capPlatforms.platforms.get(name);\n }\n };\n capPlatforms.addPlatform = addPlatform;\n capPlatforms.setPlatform = setPlatform;\n return capPlatforms;\n};\nconst initPlatforms = win => win.CapacitorPlatforms = createCapacitorPlatforms(win);\n/**\n * @deprecated Set `CapacitorCustomPlatform` on the window object prior to runtime executing in the web app instead\n */\nconst CapacitorPlatforms = /*#__PURE__*/initPlatforms(typeof globalThis !== 'undefined' ? globalThis : typeof self !== 'undefined' ? self : typeof window !== 'undefined' ? window : typeof __webpack_require__.g !== 'undefined' ? __webpack_require__.g : {});\n/**\n * @deprecated Set `CapacitorCustomPlatform` on the window object prior to runtime executing in the web app instead\n */\nconst addPlatform = CapacitorPlatforms.addPlatform;\n/**\n * @deprecated Set `CapacitorCustomPlatform` on the window object prior to runtime executing in the web app instead\n */\nconst setPlatform = CapacitorPlatforms.setPlatform;\nconst legacyRegisterWebPlugin = (cap, webPlugin) => {\n var _a;\n const config = webPlugin.config;\n const Plugins = cap.Plugins;\n if (!config || !config.name) {\n // TODO: add link to upgrade guide\n throw new Error(`Capacitor WebPlugin is using the deprecated \"registerWebPlugin()\" function, but without the config. Please use \"registerPlugin()\" instead to register this web plugin.\"`);\n }\n // TODO: add link to upgrade guide\n console.warn(`Capacitor plugin \"${config.name}\" is using the deprecated \"registerWebPlugin()\" function`);\n if (!Plugins[config.name] || ((_a = config === null || config === void 0 ? void 0 : config.platforms) === null || _a === void 0 ? void 0 : _a.includes(cap.getPlatform()))) {\n // Add the web plugin into the plugins registry if there already isn't\n // an existing one. If it doesn't already exist, that means\n // there's no existing native implementation for it.\n // - OR -\n // If we already have a plugin registered (meaning it was defined in the native layer),\n // then we should only overwrite it if the corresponding web plugin activates on\n // a certain platform. For example: Geolocation uses the WebPlugin on Android but not iOS\n Plugins[config.name] = webPlugin;\n }\n};\nvar ExceptionCode;\n(function (ExceptionCode) {\n /**\n * API is not implemented.\n *\n * This usually means the API can't be used because it is not implemented for\n * the current platform.\n */\n ExceptionCode[\"Unimplemented\"] = \"UNIMPLEMENTED\";\n /**\n * API is not available.\n *\n * This means the API can't be used right now because:\n * - it is currently missing a prerequisite, such as network connectivity\n * - it requires a particular platform or browser version\n */\n ExceptionCode[\"Unavailable\"] = \"UNAVAILABLE\";\n})(ExceptionCode || (ExceptionCode = {}));\nclass CapacitorException extends Error {\n constructor(message, code, data) {\n super(message);\n this.message = message;\n this.code = code;\n this.data = data;\n }\n}\nconst getPlatformId = win => {\n var _a, _b;\n if (win === null || win === void 0 ? void 0 : win.androidBridge) {\n return 'android';\n } else if ((_b = (_a = win === null || win === void 0 ? void 0 : win.webkit) === null || _a === void 0 ? void 0 : _a.messageHandlers) === null || _b === void 0 ? void 0 : _b.bridge) {\n return 'ios';\n } else {\n return 'web';\n }\n};\nconst createCapacitor = win => {\n var _a, _b, _c, _d, _e;\n const capCustomPlatform = win.CapacitorCustomPlatform || null;\n const cap = win.Capacitor || {};\n const Plugins = cap.Plugins = cap.Plugins || {};\n /**\n * @deprecated Use `capCustomPlatform` instead, default functions like registerPlugin will function with the new object.\n */\n const capPlatforms = win.CapacitorPlatforms;\n const defaultGetPlatform = () => {\n return capCustomPlatform !== null ? capCustomPlatform.name : getPlatformId(win);\n };\n const getPlatform = ((_a = capPlatforms === null || capPlatforms === void 0 ? void 0 : capPlatforms.currentPlatform) === null || _a === void 0 ? void 0 : _a.getPlatform) || defaultGetPlatform;\n const defaultIsNativePlatform = () => getPlatform() !== 'web';\n const isNativePlatform = ((_b = capPlatforms === null || capPlatforms === void 0 ? void 0 : capPlatforms.currentPlatform) === null || _b === void 0 ? void 0 : _b.isNativePlatform) || defaultIsNativePlatform;\n const defaultIsPluginAvailable = pluginName => {\n const plugin = registeredPlugins.get(pluginName);\n if (plugin === null || plugin === void 0 ? void 0 : plugin.platforms.has(getPlatform())) {\n // JS implementation available for the current platform.\n return true;\n }\n if (getPluginHeader(pluginName)) {\n // Native implementation available.\n return true;\n }\n return false;\n };\n const isPluginAvailable = ((_c = capPlatforms === null || capPlatforms === void 0 ? void 0 : capPlatforms.currentPlatform) === null || _c === void 0 ? void 0 : _c.isPluginAvailable) || defaultIsPluginAvailable;\n const defaultGetPluginHeader = pluginName => {\n var _a;\n return (_a = cap.PluginHeaders) === null || _a === void 0 ? void 0 : _a.find(h => h.name === pluginName);\n };\n const getPluginHeader = ((_d = capPlatforms === null || capPlatforms === void 0 ? void 0 : capPlatforms.currentPlatform) === null || _d === void 0 ? void 0 : _d.getPluginHeader) || defaultGetPluginHeader;\n const handleError = err => win.console.error(err);\n const pluginMethodNoop = (_target, prop, pluginName) => {\n return Promise.reject(`${pluginName} does not have an implementation of \"${prop}\".`);\n };\n const registeredPlugins = new Map();\n const defaultRegisterPlugin = (pluginName, jsImplementations = {}) => {\n const registeredPlugin = registeredPlugins.get(pluginName);\n if (registeredPlugin) {\n console.warn(`Capacitor plugin \"${pluginName}\" already registered. Cannot register plugins twice.`);\n return registeredPlugin.proxy;\n }\n const platform = getPlatform();\n const pluginHeader = getPluginHeader(pluginName);\n let jsImplementation;\n const loadPluginImplementation = async () => {\n if (!jsImplementation && platform in jsImplementations) {\n jsImplementation = typeof jsImplementations[platform] === 'function' ? jsImplementation = await jsImplementations[platform]() : jsImplementation = jsImplementations[platform];\n } else if (capCustomPlatform !== null && !jsImplementation && 'web' in jsImplementations) {\n jsImplementation = typeof jsImplementations['web'] === 'function' ? jsImplementation = await jsImplementations['web']() : jsImplementation = jsImplementations['web'];\n }\n return jsImplementation;\n };\n const createPluginMethod = (impl, prop) => {\n var _a, _b;\n if (pluginHeader) {\n const methodHeader = pluginHeader === null || pluginHeader === void 0 ? void 0 : pluginHeader.methods.find(m => prop === m.name);\n if (methodHeader) {\n if (methodHeader.rtype === 'promise') {\n return options => cap.nativePromise(pluginName, prop.toString(), options);\n } else {\n return (options, callback) => cap.nativeCallback(pluginName, prop.toString(), options, callback);\n }\n } else if (impl) {\n return (_a = impl[prop]) === null || _a === void 0 ? void 0 : _a.bind(impl);\n }\n } else if (impl) {\n return (_b = impl[prop]) === null || _b === void 0 ? void 0 : _b.bind(impl);\n } else {\n throw new CapacitorException(`\"${pluginName}\" plugin is not implemented on ${platform}`, ExceptionCode.Unimplemented);\n }\n };\n const createPluginMethodWrapper = prop => {\n let remove;\n const wrapper = (...args) => {\n const p = loadPluginImplementation().then(impl => {\n const fn = createPluginMethod(impl, prop);\n if (fn) {\n const p = fn(...args);\n remove = p === null || p === void 0 ? void 0 : p.remove;\n return p;\n } else {\n throw new CapacitorException(`\"${pluginName}.${prop}()\" is not implemented on ${platform}`, ExceptionCode.Unimplemented);\n }\n });\n if (prop === 'addListener') {\n p.remove = async () => remove();\n }\n return p;\n };\n // Some flair ✨\n wrapper.toString = () => `${prop.toString()}() { [capacitor code] }`;\n Object.defineProperty(wrapper, 'name', {\n value: prop,\n writable: false,\n configurable: false\n });\n return wrapper;\n };\n const addListener = createPluginMethodWrapper('addListener');\n const removeListener = createPluginMethodWrapper('removeListener');\n const addListenerNative = (eventName, callback) => {\n const call = addListener({\n eventName\n }, callback);\n const remove = async () => {\n const callbackId = await call;\n removeListener({\n eventName,\n callbackId\n }, callback);\n };\n const p = new Promise(resolve => call.then(() => resolve({\n remove\n })));\n p.remove = async () => {\n console.warn(`Using addListener() without 'await' is deprecated.`);\n await remove();\n };\n return p;\n };\n const proxy = new Proxy({}, {\n get(_, prop) {\n switch (prop) {\n // https://github.com/facebook/react/issues/20030\n case '$$typeof':\n return undefined;\n case 'toJSON':\n return () => ({});\n case 'addListener':\n return pluginHeader ? addListenerNative : addListener;\n case 'removeListener':\n return removeListener;\n default:\n return createPluginMethodWrapper(prop);\n }\n }\n });\n Plugins[pluginName] = proxy;\n registeredPlugins.set(pluginName, {\n name: pluginName,\n proxy,\n platforms: new Set([...Object.keys(jsImplementations), ...(pluginHeader ? [platform] : [])])\n });\n return proxy;\n };\n const registerPlugin = ((_e = capPlatforms === null || capPlatforms === void 0 ? void 0 : capPlatforms.currentPlatform) === null || _e === void 0 ? void 0 : _e.registerPlugin) || defaultRegisterPlugin;\n // Add in convertFileSrc for web, it will already be available in native context\n if (!cap.convertFileSrc) {\n cap.convertFileSrc = filePath => filePath;\n }\n cap.getPlatform = getPlatform;\n cap.handleError = handleError;\n cap.isNativePlatform = isNativePlatform;\n cap.isPluginAvailable = isPluginAvailable;\n cap.pluginMethodNoop = pluginMethodNoop;\n cap.registerPlugin = registerPlugin;\n cap.Exception = CapacitorException;\n cap.DEBUG = !!cap.DEBUG;\n cap.isLoggingEnabled = !!cap.isLoggingEnabled;\n // Deprecated props\n cap.platform = cap.getPlatform();\n cap.isNative = cap.isNativePlatform();\n return cap;\n};\nconst initCapacitorGlobal = win => win.Capacitor = createCapacitor(win);\nconst Capacitor = /*#__PURE__*/initCapacitorGlobal(typeof globalThis !== 'undefined' ? globalThis : typeof self !== 'undefined' ? self : typeof window !== 'undefined' ? window : typeof __webpack_require__.g !== 'undefined' ? __webpack_require__.g : {});\nconst registerPlugin = Capacitor.registerPlugin;\n/**\n * @deprecated Provided for backwards compatibility for Capacitor v2 plugins.\n * Capacitor v3 plugins should import the plugin directly. This \"Plugins\"\n * export is deprecated in v3, and will be removed in v4.\n */\nconst Plugins = Capacitor.Plugins;\n/**\n * Provided for backwards compatibility. Use the registerPlugin() API\n * instead, and provide the web plugin as the \"web\" implmenetation.\n * For example\n *\n * export const Example = registerPlugin('Example', {\n * web: () => import('./web').then(m => new m.Example())\n * })\n *\n * @deprecated Deprecated in v3, will be removed from v4.\n */\nconst registerWebPlugin = plugin => legacyRegisterWebPlugin(Capacitor, plugin);\n\n/**\n * Base class web plugins should extend.\n */\nclass WebPlugin {\n constructor(config) {\n this.listeners = {};\n this.windowListeners = {};\n if (config) {\n // TODO: add link to upgrade guide\n console.warn(`Capacitor WebPlugin \"${config.name}\" config object was deprecated in v3 and will be removed in v4.`);\n this.config = config;\n }\n }\n addListener(eventName, listenerFunc) {\n const listeners = this.listeners[eventName];\n if (!listeners) {\n this.listeners[eventName] = [];\n }\n this.listeners[eventName].push(listenerFunc);\n // If we haven't added a window listener for this event and it requires one,\n // go ahead and add it\n const windowListener = this.windowListeners[eventName];\n if (windowListener && !windowListener.registered) {\n this.addWindowListener(windowListener);\n }\n const remove = async () => this.removeListener(eventName, listenerFunc);\n const p = Promise.resolve({\n remove\n });\n Object.defineProperty(p, 'remove', {\n value: async () => {\n console.warn(`Using addListener() without 'await' is deprecated.`);\n await remove();\n }\n });\n return p;\n }\n async removeAllListeners() {\n this.listeners = {};\n for (const listener in this.windowListeners) {\n this.removeWindowListener(this.windowListeners[listener]);\n }\n this.windowListeners = {};\n }\n notifyListeners(eventName, data) {\n const listeners = this.listeners[eventName];\n if (listeners) {\n listeners.forEach(listener => listener(data));\n }\n }\n hasListeners(eventName) {\n return !!this.listeners[eventName].length;\n }\n registerWindowListener(windowEventName, pluginEventName) {\n this.windowListeners[pluginEventName] = {\n registered: false,\n windowEventName,\n pluginEventName,\n handler: event => {\n this.notifyListeners(pluginEventName, event);\n }\n };\n }\n unimplemented(msg = 'not implemented') {\n return new Capacitor.Exception(msg, ExceptionCode.Unimplemented);\n }\n unavailable(msg = 'not available') {\n return new Capacitor.Exception(msg, ExceptionCode.Unavailable);\n }\n async removeListener(eventName, listenerFunc) {\n const listeners = this.listeners[eventName];\n if (!listeners) {\n return;\n }\n const index = listeners.indexOf(listenerFunc);\n this.listeners[eventName].splice(index, 1);\n // If there are no more listeners for this type of event,\n // remove the window listener\n if (!this.listeners[eventName].length) {\n this.removeWindowListener(this.windowListeners[eventName]);\n }\n }\n addWindowListener(handle) {\n window.addEventListener(handle.windowEventName, handle.handler);\n handle.registered = true;\n }\n removeWindowListener(handle) {\n if (!handle) {\n return;\n }\n window.removeEventListener(handle.windowEventName, handle.handler);\n handle.registered = false;\n }\n}\nconst WebView = /*#__PURE__*/registerPlugin('WebView');\n/******** END WEB VIEW PLUGIN ********/\n/******** COOKIES PLUGIN ********/\n/**\n * Safely web encode a string value (inspired by js-cookie)\n * @param str The string value to encode\n */\nconst encode = str => encodeURIComponent(str).replace(/%(2[346B]|5E|60|7C)/g, decodeURIComponent).replace(/[()]/g, escape);\n/**\n * Safely web decode a string value (inspired by js-cookie)\n * @param str The string value to decode\n */\nconst decode = str => str.replace(/(%[\\dA-F]{2})+/gi, decodeURIComponent);\nclass CapacitorCookiesPluginWeb extends WebPlugin {\n async getCookies() {\n const cookies = document.cookie;\n const cookieMap = {};\n cookies.split(';').forEach(cookie => {\n if (cookie.length <= 0) return;\n // Replace first \"=\" with CAP_COOKIE to prevent splitting on additional \"=\"\n let [key, value] = cookie.replace(/=/, 'CAP_COOKIE').split('CAP_COOKIE');\n key = decode(key).trim();\n value = decode(value).trim();\n cookieMap[key] = value;\n });\n return cookieMap;\n }\n async setCookie(options) {\n try {\n // Safely Encoded Key/Value\n const encodedKey = encode(options.key);\n const encodedValue = encode(options.value);\n // Clean & sanitize options\n const expires = `; expires=${(options.expires || '').replace('expires=', '')}`; // Default is \"; expires=\"\n const path = (options.path || '/').replace('path=', ''); // Default is \"path=/\"\n document.cookie = `${encodedKey}=${encodedValue || ''}${expires}; path=${path}`;\n } catch (error) {\n return Promise.reject(error);\n }\n }\n async deleteCookie(options) {\n try {\n document.cookie = `${options.key}=; Max-Age=0`;\n } catch (error) {\n return Promise.reject(error);\n }\n }\n async clearCookies() {\n try {\n const cookies = document.cookie.split(';') || [];\n for (const cookie of cookies) {\n document.cookie = cookie.replace(/^ +/, '').replace(/=.*/, `=;expires=${new Date().toUTCString()};path=/`);\n }\n } catch (error) {\n return Promise.reject(error);\n }\n }\n async clearAllCookies() {\n try {\n await this.clearCookies();\n } catch (error) {\n return Promise.reject(error);\n }\n }\n}\nconst CapacitorCookies = registerPlugin('CapacitorCookies', {\n web: () => new CapacitorCookiesPluginWeb()\n});\n// UTILITY FUNCTIONS\n/**\n * Read in a Blob value and return it as a base64 string\n * @param blob The blob value to convert to a base64 string\n */\nconst readBlobAsBase64 = async blob => new Promise((resolve, reject) => {\n const reader = new FileReader();\n reader.onload = () => {\n const base64String = reader.result;\n // remove prefix \"data:application/pdf;base64,\"\n resolve(base64String.indexOf(',') >= 0 ? base64String.split(',')[1] : base64String);\n };\n reader.onerror = error => reject(error);\n reader.readAsDataURL(blob);\n});\n/**\n * Normalize an HttpHeaders map by lowercasing all of the values\n * @param headers The HttpHeaders object to normalize\n */\nconst normalizeHttpHeaders = (headers = {}) => {\n const originalKeys = Object.keys(headers);\n const loweredKeys = Object.keys(headers).map(k => k.toLocaleLowerCase());\n const normalized = loweredKeys.reduce((acc, key, index) => {\n acc[key] = headers[originalKeys[index]];\n return acc;\n }, {});\n return normalized;\n};\n/**\n * Builds a string of url parameters that\n * @param params A map of url parameters\n * @param shouldEncode true if you should encodeURIComponent() the values (true by default)\n */\nconst buildUrlParams = (params, shouldEncode = true) => {\n if (!params) return null;\n const output = Object.entries(params).reduce((accumulator, entry) => {\n const [key, value] = entry;\n let encodedValue;\n let item;\n if (Array.isArray(value)) {\n item = '';\n value.forEach(str => {\n encodedValue = shouldEncode ? encodeURIComponent(str) : str;\n item += `${key}=${encodedValue}&`;\n });\n // last character will always be \"&\" so slice it off\n item.slice(0, -1);\n } else {\n encodedValue = shouldEncode ? encodeURIComponent(value) : value;\n item = `${key}=${encodedValue}`;\n }\n return `${accumulator}&${item}`;\n }, '');\n // Remove initial \"&\" from the reduce\n return output.substr(1);\n};\n/**\n * Build the RequestInit object based on the options passed into the initial request\n * @param options The Http plugin options\n * @param extra Any extra RequestInit values\n */\nconst buildRequestInit = (options, extra = {}) => {\n const output = Object.assign({\n method: options.method || 'GET',\n headers: options.headers\n }, extra);\n // Get the content-type\n const headers = normalizeHttpHeaders(options.headers);\n const type = headers['content-type'] || '';\n // If body is already a string, then pass it through as-is.\n if (typeof options.data === 'string') {\n output.body = options.data;\n }\n // Build request initializers based off of content-type\n else if (type.includes('application/x-www-form-urlencoded')) {\n const params = new URLSearchParams();\n for (const [key, value] of Object.entries(options.data || {})) {\n params.set(key, value);\n }\n output.body = params.toString();\n } else if (type.includes('multipart/form-data')) {\n const form = new FormData();\n if (options.data instanceof FormData) {\n options.data.forEach((value, key) => {\n form.append(key, value);\n });\n } else {\n for (const key of Object.keys(options.data)) {\n form.append(key, options.data[key]);\n }\n }\n output.body = form;\n const headers = new Headers(output.headers);\n headers.delete('content-type'); // content-type will be set by `window.fetch` to includy boundary\n output.headers = headers;\n } else if (type.includes('application/json') || typeof options.data === 'object') {\n output.body = JSON.stringify(options.data);\n }\n return output;\n};\n// WEB IMPLEMENTATION\nclass CapacitorHttpPluginWeb extends WebPlugin {\n /**\n * Perform an Http request given a set of options\n * @param options Options to build the HTTP request\n */\n async request(options) {\n const requestInit = buildRequestInit(options, options.webFetchExtra);\n const urlParams = buildUrlParams(options.params, options.shouldEncodeUrlParams);\n const url = urlParams ? `${options.url}?${urlParams}` : options.url;\n const response = await fetch(url, requestInit);\n const contentType = response.headers.get('content-type') || '';\n // Default to 'text' responseType so no parsing happens\n let {\n responseType = 'text'\n } = response.ok ? options : {};\n // If the response content-type is json, force the response to be json\n if (contentType.includes('application/json')) {\n responseType = 'json';\n }\n let data;\n let blob;\n switch (responseType) {\n case 'arraybuffer':\n case 'blob':\n blob = await response.blob();\n data = await readBlobAsBase64(blob);\n break;\n case 'json':\n data = await response.json();\n break;\n case 'document':\n case 'text':\n default:\n data = await response.text();\n }\n // Convert fetch headers to Capacitor HttpHeaders\n const headers = {};\n response.headers.forEach((value, key) => {\n headers[key] = value;\n });\n return {\n data,\n headers,\n status: response.status,\n url: response.url\n };\n }\n /**\n * Perform an Http GET request given a set of options\n * @param options Options to build the HTTP request\n */\n async get(options) {\n return this.request(Object.assign(Object.assign({}, options), {\n method: 'GET'\n }));\n }\n /**\n * Perform an Http POST request given a set of options\n * @param options Options to build the HTTP request\n */\n async post(options) {\n return this.request(Object.assign(Object.assign({}, options), {\n method: 'POST'\n }));\n }\n /**\n * Perform an Http PUT request given a set of options\n * @param options Options to build the HTTP request\n */\n async put(options) {\n return this.request(Object.assign(Object.assign({}, options), {\n method: 'PUT'\n }));\n }\n /**\n * Perform an Http PATCH request given a set of options\n * @param options Options to build the HTTP request\n */\n async patch(options) {\n return this.request(Object.assign(Object.assign({}, options), {\n method: 'PATCH'\n }));\n }\n /**\n * Perform an Http DELETE request given a set of options\n * @param options Options to build the HTTP request\n */\n async delete(options) {\n return this.request(Object.assign(Object.assign({}, options), {\n method: 'DELETE'\n }));\n }\n}\nconst CapacitorHttp = registerPlugin('CapacitorHttp', {\n web: () => new CapacitorHttpPluginWeb()\n});\n/******** END HTTP PLUGIN ********/\n\n\n\n//# sourceURL=webpack://jandl/./node_modules/@capacitor/core/dist/index.js?"); +eval("{__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ Capacitor: function() { return /* binding */ Capacitor; },\n/* harmony export */ CapacitorCookies: function() { return /* binding */ CapacitorCookies; },\n/* harmony export */ CapacitorException: function() { return /* binding */ CapacitorException; },\n/* harmony export */ CapacitorHttp: function() { return /* binding */ CapacitorHttp; },\n/* harmony export */ CapacitorPlatforms: function() { return /* binding */ CapacitorPlatforms; },\n/* harmony export */ ExceptionCode: function() { return /* binding */ ExceptionCode; },\n/* harmony export */ Plugins: function() { return /* binding */ Plugins; },\n/* harmony export */ WebPlugin: function() { return /* binding */ WebPlugin; },\n/* harmony export */ WebView: function() { return /* binding */ WebView; },\n/* harmony export */ addPlatform: function() { return /* binding */ addPlatform; },\n/* harmony export */ registerPlugin: function() { return /* binding */ registerPlugin; },\n/* harmony export */ registerWebPlugin: function() { return /* binding */ registerWebPlugin; },\n/* harmony export */ setPlatform: function() { return /* binding */ setPlatform; }\n/* harmony export */ });\n/* harmony import */ var core_js_modules_es_array_push_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! core-js/modules/es.array.push.js */ \"./node_modules/core-js/modules/es.array.push.js\");\n/* harmony import */ var core_js_modules_es_array_push_js__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_array_push_js__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var core_js_modules_es_json_stringify_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! core-js/modules/es.json.stringify.js */ \"./node_modules/core-js/modules/es.json.stringify.js\");\n/* harmony import */ var core_js_modules_es_json_stringify_js__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_json_stringify_js__WEBPACK_IMPORTED_MODULE_1__);\n/* harmony import */ var core_js_modules_esnext_iterator_constructor_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! core-js/modules/esnext.iterator.constructor.js */ \"./node_modules/core-js/modules/esnext.iterator.constructor.js\");\n/* harmony import */ var core_js_modules_esnext_iterator_constructor_js__WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_esnext_iterator_constructor_js__WEBPACK_IMPORTED_MODULE_2__);\n/* harmony import */ var core_js_modules_esnext_iterator_find_js__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! core-js/modules/esnext.iterator.find.js */ \"./node_modules/core-js/modules/esnext.iterator.find.js\");\n/* harmony import */ var core_js_modules_esnext_iterator_find_js__WEBPACK_IMPORTED_MODULE_3___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_esnext_iterator_find_js__WEBPACK_IMPORTED_MODULE_3__);\n/* harmony import */ var core_js_modules_esnext_iterator_for_each_js__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! core-js/modules/esnext.iterator.for-each.js */ \"./node_modules/core-js/modules/esnext.iterator.for-each.js\");\n/* harmony import */ var core_js_modules_esnext_iterator_for_each_js__WEBPACK_IMPORTED_MODULE_4___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_esnext_iterator_for_each_js__WEBPACK_IMPORTED_MODULE_4__);\n/* harmony import */ var core_js_modules_esnext_iterator_map_js__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! core-js/modules/esnext.iterator.map.js */ \"./node_modules/core-js/modules/esnext.iterator.map.js\");\n/* harmony import */ var core_js_modules_esnext_iterator_map_js__WEBPACK_IMPORTED_MODULE_5___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_esnext_iterator_map_js__WEBPACK_IMPORTED_MODULE_5__);\n/* harmony import */ var core_js_modules_esnext_iterator_reduce_js__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! core-js/modules/esnext.iterator.reduce.js */ \"./node_modules/core-js/modules/esnext.iterator.reduce.js\");\n/* harmony import */ var core_js_modules_esnext_iterator_reduce_js__WEBPACK_IMPORTED_MODULE_6___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_esnext_iterator_reduce_js__WEBPACK_IMPORTED_MODULE_6__);\n/* provided dependency */ var console = __webpack_require__(/*! ./node_modules/console-browserify/index.js */ \"./node_modules/console-browserify/index.js\");\n\n\n\n\n\n\n\n/*! Capacitor: https://capacitorjs.com/ - MIT License */\nconst createCapacitorPlatforms = win => {\n const defaultPlatformMap = new Map();\n defaultPlatformMap.set('web', {\n name: 'web'\n });\n const capPlatforms = win.CapacitorPlatforms || {\n currentPlatform: {\n name: 'web'\n },\n platforms: defaultPlatformMap\n };\n const addPlatform = (name, platform) => {\n capPlatforms.platforms.set(name, platform);\n };\n const setPlatform = name => {\n if (capPlatforms.platforms.has(name)) {\n capPlatforms.currentPlatform = capPlatforms.platforms.get(name);\n }\n };\n capPlatforms.addPlatform = addPlatform;\n capPlatforms.setPlatform = setPlatform;\n return capPlatforms;\n};\nconst initPlatforms = win => win.CapacitorPlatforms = createCapacitorPlatforms(win);\n/**\n * @deprecated Set `CapacitorCustomPlatform` on the window object prior to runtime executing in the web app instead\n */\nconst CapacitorPlatforms = /*#__PURE__*/initPlatforms(typeof globalThis !== 'undefined' ? globalThis : typeof self !== 'undefined' ? self : typeof window !== 'undefined' ? window : typeof __webpack_require__.g !== 'undefined' ? __webpack_require__.g : {});\n/**\n * @deprecated Set `CapacitorCustomPlatform` on the window object prior to runtime executing in the web app instead\n */\nconst addPlatform = CapacitorPlatforms.addPlatform;\n/**\n * @deprecated Set `CapacitorCustomPlatform` on the window object prior to runtime executing in the web app instead\n */\nconst setPlatform = CapacitorPlatforms.setPlatform;\nconst legacyRegisterWebPlugin = (cap, webPlugin) => {\n var _a;\n const config = webPlugin.config;\n const Plugins = cap.Plugins;\n if (!config || !config.name) {\n // TODO: add link to upgrade guide\n throw new Error(`Capacitor WebPlugin is using the deprecated \"registerWebPlugin()\" function, but without the config. Please use \"registerPlugin()\" instead to register this web plugin.\"`);\n }\n // TODO: add link to upgrade guide\n console.warn(`Capacitor plugin \"${config.name}\" is using the deprecated \"registerWebPlugin()\" function`);\n if (!Plugins[config.name] || ((_a = config === null || config === void 0 ? void 0 : config.platforms) === null || _a === void 0 ? void 0 : _a.includes(cap.getPlatform()))) {\n // Add the web plugin into the plugins registry if there already isn't\n // an existing one. If it doesn't already exist, that means\n // there's no existing native implementation for it.\n // - OR -\n // If we already have a plugin registered (meaning it was defined in the native layer),\n // then we should only overwrite it if the corresponding web plugin activates on\n // a certain platform. For example: Geolocation uses the WebPlugin on Android but not iOS\n Plugins[config.name] = webPlugin;\n }\n};\nvar ExceptionCode;\n(function (ExceptionCode) {\n /**\n * API is not implemented.\n *\n * This usually means the API can't be used because it is not implemented for\n * the current platform.\n */\n ExceptionCode[\"Unimplemented\"] = \"UNIMPLEMENTED\";\n /**\n * API is not available.\n *\n * This means the API can't be used right now because:\n * - it is currently missing a prerequisite, such as network connectivity\n * - it requires a particular platform or browser version\n */\n ExceptionCode[\"Unavailable\"] = \"UNAVAILABLE\";\n})(ExceptionCode || (ExceptionCode = {}));\nclass CapacitorException extends Error {\n constructor(message, code, data) {\n super(message);\n this.message = message;\n this.code = code;\n this.data = data;\n }\n}\nconst getPlatformId = win => {\n var _a, _b;\n if (win === null || win === void 0 ? void 0 : win.androidBridge) {\n return 'android';\n } else if ((_b = (_a = win === null || win === void 0 ? void 0 : win.webkit) === null || _a === void 0 ? void 0 : _a.messageHandlers) === null || _b === void 0 ? void 0 : _b.bridge) {\n return 'ios';\n } else {\n return 'web';\n }\n};\nconst createCapacitor = win => {\n var _a, _b, _c, _d, _e;\n const capCustomPlatform = win.CapacitorCustomPlatform || null;\n const cap = win.Capacitor || {};\n const Plugins = cap.Plugins = cap.Plugins || {};\n /**\n * @deprecated Use `capCustomPlatform` instead, default functions like registerPlugin will function with the new object.\n */\n const capPlatforms = win.CapacitorPlatforms;\n const defaultGetPlatform = () => {\n return capCustomPlatform !== null ? capCustomPlatform.name : getPlatformId(win);\n };\n const getPlatform = ((_a = capPlatforms === null || capPlatforms === void 0 ? void 0 : capPlatforms.currentPlatform) === null || _a === void 0 ? void 0 : _a.getPlatform) || defaultGetPlatform;\n const defaultIsNativePlatform = () => getPlatform() !== 'web';\n const isNativePlatform = ((_b = capPlatforms === null || capPlatforms === void 0 ? void 0 : capPlatforms.currentPlatform) === null || _b === void 0 ? void 0 : _b.isNativePlatform) || defaultIsNativePlatform;\n const defaultIsPluginAvailable = pluginName => {\n const plugin = registeredPlugins.get(pluginName);\n if (plugin === null || plugin === void 0 ? void 0 : plugin.platforms.has(getPlatform())) {\n // JS implementation available for the current platform.\n return true;\n }\n if (getPluginHeader(pluginName)) {\n // Native implementation available.\n return true;\n }\n return false;\n };\n const isPluginAvailable = ((_c = capPlatforms === null || capPlatforms === void 0 ? void 0 : capPlatforms.currentPlatform) === null || _c === void 0 ? void 0 : _c.isPluginAvailable) || defaultIsPluginAvailable;\n const defaultGetPluginHeader = pluginName => {\n var _a;\n return (_a = cap.PluginHeaders) === null || _a === void 0 ? void 0 : _a.find(h => h.name === pluginName);\n };\n const getPluginHeader = ((_d = capPlatforms === null || capPlatforms === void 0 ? void 0 : capPlatforms.currentPlatform) === null || _d === void 0 ? void 0 : _d.getPluginHeader) || defaultGetPluginHeader;\n const handleError = err => win.console.error(err);\n const pluginMethodNoop = (_target, prop, pluginName) => {\n return Promise.reject(`${pluginName} does not have an implementation of \"${prop}\".`);\n };\n const registeredPlugins = new Map();\n const defaultRegisterPlugin = (pluginName, jsImplementations = {}) => {\n const registeredPlugin = registeredPlugins.get(pluginName);\n if (registeredPlugin) {\n console.warn(`Capacitor plugin \"${pluginName}\" already registered. Cannot register plugins twice.`);\n return registeredPlugin.proxy;\n }\n const platform = getPlatform();\n const pluginHeader = getPluginHeader(pluginName);\n let jsImplementation;\n const loadPluginImplementation = async () => {\n if (!jsImplementation && platform in jsImplementations) {\n jsImplementation = typeof jsImplementations[platform] === 'function' ? jsImplementation = await jsImplementations[platform]() : jsImplementation = jsImplementations[platform];\n } else if (capCustomPlatform !== null && !jsImplementation && 'web' in jsImplementations) {\n jsImplementation = typeof jsImplementations['web'] === 'function' ? jsImplementation = await jsImplementations['web']() : jsImplementation = jsImplementations['web'];\n }\n return jsImplementation;\n };\n const createPluginMethod = (impl, prop) => {\n var _a, _b;\n if (pluginHeader) {\n const methodHeader = pluginHeader === null || pluginHeader === void 0 ? void 0 : pluginHeader.methods.find(m => prop === m.name);\n if (methodHeader) {\n if (methodHeader.rtype === 'promise') {\n return options => cap.nativePromise(pluginName, prop.toString(), options);\n } else {\n return (options, callback) => cap.nativeCallback(pluginName, prop.toString(), options, callback);\n }\n } else if (impl) {\n return (_a = impl[prop]) === null || _a === void 0 ? void 0 : _a.bind(impl);\n }\n } else if (impl) {\n return (_b = impl[prop]) === null || _b === void 0 ? void 0 : _b.bind(impl);\n } else {\n throw new CapacitorException(`\"${pluginName}\" plugin is not implemented on ${platform}`, ExceptionCode.Unimplemented);\n }\n };\n const createPluginMethodWrapper = prop => {\n let remove;\n const wrapper = (...args) => {\n const p = loadPluginImplementation().then(impl => {\n const fn = createPluginMethod(impl, prop);\n if (fn) {\n const p = fn(...args);\n remove = p === null || p === void 0 ? void 0 : p.remove;\n return p;\n } else {\n throw new CapacitorException(`\"${pluginName}.${prop}()\" is not implemented on ${platform}`, ExceptionCode.Unimplemented);\n }\n });\n if (prop === 'addListener') {\n p.remove = async () => remove();\n }\n return p;\n };\n // Some flair ✨\n wrapper.toString = () => `${prop.toString()}() { [capacitor code] }`;\n Object.defineProperty(wrapper, 'name', {\n value: prop,\n writable: false,\n configurable: false\n });\n return wrapper;\n };\n const addListener = createPluginMethodWrapper('addListener');\n const removeListener = createPluginMethodWrapper('removeListener');\n const addListenerNative = (eventName, callback) => {\n const call = addListener({\n eventName\n }, callback);\n const remove = async () => {\n const callbackId = await call;\n removeListener({\n eventName,\n callbackId\n }, callback);\n };\n const p = new Promise(resolve => call.then(() => resolve({\n remove\n })));\n p.remove = async () => {\n console.warn(`Using addListener() without 'await' is deprecated.`);\n await remove();\n };\n return p;\n };\n const proxy = new Proxy({}, {\n get(_, prop) {\n switch (prop) {\n // https://github.com/facebook/react/issues/20030\n case '$$typeof':\n return undefined;\n case 'toJSON':\n return () => ({});\n case 'addListener':\n return pluginHeader ? addListenerNative : addListener;\n case 'removeListener':\n return removeListener;\n default:\n return createPluginMethodWrapper(prop);\n }\n }\n });\n Plugins[pluginName] = proxy;\n registeredPlugins.set(pluginName, {\n name: pluginName,\n proxy,\n platforms: new Set([...Object.keys(jsImplementations), ...(pluginHeader ? [platform] : [])])\n });\n return proxy;\n };\n const registerPlugin = ((_e = capPlatforms === null || capPlatforms === void 0 ? void 0 : capPlatforms.currentPlatform) === null || _e === void 0 ? void 0 : _e.registerPlugin) || defaultRegisterPlugin;\n // Add in convertFileSrc for web, it will already be available in native context\n if (!cap.convertFileSrc) {\n cap.convertFileSrc = filePath => filePath;\n }\n cap.getPlatform = getPlatform;\n cap.handleError = handleError;\n cap.isNativePlatform = isNativePlatform;\n cap.isPluginAvailable = isPluginAvailable;\n cap.pluginMethodNoop = pluginMethodNoop;\n cap.registerPlugin = registerPlugin;\n cap.Exception = CapacitorException;\n cap.DEBUG = !!cap.DEBUG;\n cap.isLoggingEnabled = !!cap.isLoggingEnabled;\n // Deprecated props\n cap.platform = cap.getPlatform();\n cap.isNative = cap.isNativePlatform();\n return cap;\n};\nconst initCapacitorGlobal = win => win.Capacitor = createCapacitor(win);\nconst Capacitor = /*#__PURE__*/initCapacitorGlobal(typeof globalThis !== 'undefined' ? globalThis : typeof self !== 'undefined' ? self : typeof window !== 'undefined' ? window : typeof __webpack_require__.g !== 'undefined' ? __webpack_require__.g : {});\nconst registerPlugin = Capacitor.registerPlugin;\n/**\n * @deprecated Provided for backwards compatibility for Capacitor v2 plugins.\n * Capacitor v3 plugins should import the plugin directly. This \"Plugins\"\n * export is deprecated in v3, and will be removed in v4.\n */\nconst Plugins = Capacitor.Plugins;\n/**\n * Provided for backwards compatibility. Use the registerPlugin() API\n * instead, and provide the web plugin as the \"web\" implmenetation.\n * For example\n *\n * export const Example = registerPlugin('Example', {\n * web: () => import('./web').then(m => new m.Example())\n * })\n *\n * @deprecated Deprecated in v3, will be removed from v4.\n */\nconst registerWebPlugin = plugin => legacyRegisterWebPlugin(Capacitor, plugin);\n\n/**\n * Base class web plugins should extend.\n */\nclass WebPlugin {\n constructor(config) {\n this.listeners = {};\n this.windowListeners = {};\n if (config) {\n // TODO: add link to upgrade guide\n console.warn(`Capacitor WebPlugin \"${config.name}\" config object was deprecated in v3 and will be removed in v4.`);\n this.config = config;\n }\n }\n addListener(eventName, listenerFunc) {\n const listeners = this.listeners[eventName];\n if (!listeners) {\n this.listeners[eventName] = [];\n }\n this.listeners[eventName].push(listenerFunc);\n // If we haven't added a window listener for this event and it requires one,\n // go ahead and add it\n const windowListener = this.windowListeners[eventName];\n if (windowListener && !windowListener.registered) {\n this.addWindowListener(windowListener);\n }\n const remove = async () => this.removeListener(eventName, listenerFunc);\n const p = Promise.resolve({\n remove\n });\n Object.defineProperty(p, 'remove', {\n value: async () => {\n console.warn(`Using addListener() without 'await' is deprecated.`);\n await remove();\n }\n });\n return p;\n }\n async removeAllListeners() {\n this.listeners = {};\n for (const listener in this.windowListeners) {\n this.removeWindowListener(this.windowListeners[listener]);\n }\n this.windowListeners = {};\n }\n notifyListeners(eventName, data) {\n const listeners = this.listeners[eventName];\n if (listeners) {\n listeners.forEach(listener => listener(data));\n }\n }\n hasListeners(eventName) {\n return !!this.listeners[eventName].length;\n }\n registerWindowListener(windowEventName, pluginEventName) {\n this.windowListeners[pluginEventName] = {\n registered: false,\n windowEventName,\n pluginEventName,\n handler: event => {\n this.notifyListeners(pluginEventName, event);\n }\n };\n }\n unimplemented(msg = 'not implemented') {\n return new Capacitor.Exception(msg, ExceptionCode.Unimplemented);\n }\n unavailable(msg = 'not available') {\n return new Capacitor.Exception(msg, ExceptionCode.Unavailable);\n }\n async removeListener(eventName, listenerFunc) {\n const listeners = this.listeners[eventName];\n if (!listeners) {\n return;\n }\n const index = listeners.indexOf(listenerFunc);\n this.listeners[eventName].splice(index, 1);\n // If there are no more listeners for this type of event,\n // remove the window listener\n if (!this.listeners[eventName].length) {\n this.removeWindowListener(this.windowListeners[eventName]);\n }\n }\n addWindowListener(handle) {\n window.addEventListener(handle.windowEventName, handle.handler);\n handle.registered = true;\n }\n removeWindowListener(handle) {\n if (!handle) {\n return;\n }\n window.removeEventListener(handle.windowEventName, handle.handler);\n handle.registered = false;\n }\n}\nconst WebView = /*#__PURE__*/registerPlugin('WebView');\n/******** END WEB VIEW PLUGIN ********/\n/******** COOKIES PLUGIN ********/\n/**\n * Safely web encode a string value (inspired by js-cookie)\n * @param str The string value to encode\n */\nconst encode = str => encodeURIComponent(str).replace(/%(2[346B]|5E|60|7C)/g, decodeURIComponent).replace(/[()]/g, escape);\n/**\n * Safely web decode a string value (inspired by js-cookie)\n * @param str The string value to decode\n */\nconst decode = str => str.replace(/(%[\\dA-F]{2})+/gi, decodeURIComponent);\nclass CapacitorCookiesPluginWeb extends WebPlugin {\n async getCookies() {\n const cookies = document.cookie;\n const cookieMap = {};\n cookies.split(';').forEach(cookie => {\n if (cookie.length <= 0) return;\n // Replace first \"=\" with CAP_COOKIE to prevent splitting on additional \"=\"\n let [key, value] = cookie.replace(/=/, 'CAP_COOKIE').split('CAP_COOKIE');\n key = decode(key).trim();\n value = decode(value).trim();\n cookieMap[key] = value;\n });\n return cookieMap;\n }\n async setCookie(options) {\n try {\n // Safely Encoded Key/Value\n const encodedKey = encode(options.key);\n const encodedValue = encode(options.value);\n // Clean & sanitize options\n const expires = `; expires=${(options.expires || '').replace('expires=', '')}`; // Default is \"; expires=\"\n const path = (options.path || '/').replace('path=', ''); // Default is \"path=/\"\n document.cookie = `${encodedKey}=${encodedValue || ''}${expires}; path=${path}`;\n } catch (error) {\n return Promise.reject(error);\n }\n }\n async deleteCookie(options) {\n try {\n document.cookie = `${options.key}=; Max-Age=0`;\n } catch (error) {\n return Promise.reject(error);\n }\n }\n async clearCookies() {\n try {\n const cookies = document.cookie.split(';') || [];\n for (const cookie of cookies) {\n document.cookie = cookie.replace(/^ +/, '').replace(/=.*/, `=;expires=${new Date().toUTCString()};path=/`);\n }\n } catch (error) {\n return Promise.reject(error);\n }\n }\n async clearAllCookies() {\n try {\n await this.clearCookies();\n } catch (error) {\n return Promise.reject(error);\n }\n }\n}\nconst CapacitorCookies = registerPlugin('CapacitorCookies', {\n web: () => new CapacitorCookiesPluginWeb()\n});\n// UTILITY FUNCTIONS\n/**\n * Read in a Blob value and return it as a base64 string\n * @param blob The blob value to convert to a base64 string\n */\nconst readBlobAsBase64 = async blob => new Promise((resolve, reject) => {\n const reader = new FileReader();\n reader.onload = () => {\n const base64String = reader.result;\n // remove prefix \"data:application/pdf;base64,\"\n resolve(base64String.indexOf(',') >= 0 ? base64String.split(',')[1] : base64String);\n };\n reader.onerror = error => reject(error);\n reader.readAsDataURL(blob);\n});\n/**\n * Normalize an HttpHeaders map by lowercasing all of the values\n * @param headers The HttpHeaders object to normalize\n */\nconst normalizeHttpHeaders = (headers = {}) => {\n const originalKeys = Object.keys(headers);\n const loweredKeys = Object.keys(headers).map(k => k.toLocaleLowerCase());\n const normalized = loweredKeys.reduce((acc, key, index) => {\n acc[key] = headers[originalKeys[index]];\n return acc;\n }, {});\n return normalized;\n};\n/**\n * Builds a string of url parameters that\n * @param params A map of url parameters\n * @param shouldEncode true if you should encodeURIComponent() the values (true by default)\n */\nconst buildUrlParams = (params, shouldEncode = true) => {\n if (!params) return null;\n const output = Object.entries(params).reduce((accumulator, entry) => {\n const [key, value] = entry;\n let encodedValue;\n let item;\n if (Array.isArray(value)) {\n item = '';\n value.forEach(str => {\n encodedValue = shouldEncode ? encodeURIComponent(str) : str;\n item += `${key}=${encodedValue}&`;\n });\n // last character will always be \"&\" so slice it off\n item.slice(0, -1);\n } else {\n encodedValue = shouldEncode ? encodeURIComponent(value) : value;\n item = `${key}=${encodedValue}`;\n }\n return `${accumulator}&${item}`;\n }, '');\n // Remove initial \"&\" from the reduce\n return output.substr(1);\n};\n/**\n * Build the RequestInit object based on the options passed into the initial request\n * @param options The Http plugin options\n * @param extra Any extra RequestInit values\n */\nconst buildRequestInit = (options, extra = {}) => {\n const output = Object.assign({\n method: options.method || 'GET',\n headers: options.headers\n }, extra);\n // Get the content-type\n const headers = normalizeHttpHeaders(options.headers);\n const type = headers['content-type'] || '';\n // If body is already a string, then pass it through as-is.\n if (typeof options.data === 'string') {\n output.body = options.data;\n }\n // Build request initializers based off of content-type\n else if (type.includes('application/x-www-form-urlencoded')) {\n const params = new URLSearchParams();\n for (const [key, value] of Object.entries(options.data || {})) {\n params.set(key, value);\n }\n output.body = params.toString();\n } else if (type.includes('multipart/form-data')) {\n const form = new FormData();\n if (options.data instanceof FormData) {\n options.data.forEach((value, key) => {\n form.append(key, value);\n });\n } else {\n for (const key of Object.keys(options.data)) {\n form.append(key, options.data[key]);\n }\n }\n output.body = form;\n const headers = new Headers(output.headers);\n headers.delete('content-type'); // content-type will be set by `window.fetch` to includy boundary\n output.headers = headers;\n } else if (type.includes('application/json') || typeof options.data === 'object') {\n output.body = JSON.stringify(options.data);\n }\n return output;\n};\n// WEB IMPLEMENTATION\nclass CapacitorHttpPluginWeb extends WebPlugin {\n /**\n * Perform an Http request given a set of options\n * @param options Options to build the HTTP request\n */\n async request(options) {\n const requestInit = buildRequestInit(options, options.webFetchExtra);\n const urlParams = buildUrlParams(options.params, options.shouldEncodeUrlParams);\n const url = urlParams ? `${options.url}?${urlParams}` : options.url;\n const response = await fetch(url, requestInit);\n const contentType = response.headers.get('content-type') || '';\n // Default to 'text' responseType so no parsing happens\n let {\n responseType = 'text'\n } = response.ok ? options : {};\n // If the response content-type is json, force the response to be json\n if (contentType.includes('application/json')) {\n responseType = 'json';\n }\n let data;\n let blob;\n switch (responseType) {\n case 'arraybuffer':\n case 'blob':\n blob = await response.blob();\n data = await readBlobAsBase64(blob);\n break;\n case 'json':\n data = await response.json();\n break;\n case 'document':\n case 'text':\n default:\n data = await response.text();\n }\n // Convert fetch headers to Capacitor HttpHeaders\n const headers = {};\n response.headers.forEach((value, key) => {\n headers[key] = value;\n });\n return {\n data,\n headers,\n status: response.status,\n url: response.url\n };\n }\n /**\n * Perform an Http GET request given a set of options\n * @param options Options to build the HTTP request\n */\n async get(options) {\n return this.request(Object.assign(Object.assign({}, options), {\n method: 'GET'\n }));\n }\n /**\n * Perform an Http POST request given a set of options\n * @param options Options to build the HTTP request\n */\n async post(options) {\n return this.request(Object.assign(Object.assign({}, options), {\n method: 'POST'\n }));\n }\n /**\n * Perform an Http PUT request given a set of options\n * @param options Options to build the HTTP request\n */\n async put(options) {\n return this.request(Object.assign(Object.assign({}, options), {\n method: 'PUT'\n }));\n }\n /**\n * Perform an Http PATCH request given a set of options\n * @param options Options to build the HTTP request\n */\n async patch(options) {\n return this.request(Object.assign(Object.assign({}, options), {\n method: 'PATCH'\n }));\n }\n /**\n * Perform an Http DELETE request given a set of options\n * @param options Options to build the HTTP request\n */\n async delete(options) {\n return this.request(Object.assign(Object.assign({}, options), {\n method: 'DELETE'\n }));\n }\n}\nconst CapacitorHttp = registerPlugin('CapacitorHttp', {\n web: () => new CapacitorHttpPluginWeb()\n});\n/******** END HTTP PLUGIN ********/\n\n\n\n//# sourceURL=webpack://jandl/./node_modules/@capacitor/core/dist/index.js?\n}"); /***/ }), @@ -26,7 +48,7 @@ eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpac /***/ (function(__unused_webpack_module, __webpack_exports__, __webpack_require__) { "use strict"; -eval("__webpack_require__.r(__webpack_exports__);\n\n\n//# sourceURL=webpack://jandl/./node_modules/@capacitor/preferences/dist/esm/definitions.js?"); +eval("{__webpack_require__.r(__webpack_exports__);\n\n\n//# sourceURL=webpack://jandl/./node_modules/@capacitor/preferences/dist/esm/definitions.js?\n}"); /***/ }), @@ -37,62 +59,40 @@ eval("__webpack_require__.r(__webpack_exports__);\n\n\n//# sourceURL=webpack://j /***/ (function(__unused_webpack_module, __webpack_exports__, __webpack_require__) { "use strict"; -eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"Preferences\": function() { return /* binding */ Preferences; }\n/* harmony export */ });\n/* harmony import */ var _capacitor_core__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @capacitor/core */ \"./node_modules/@capacitor/core/dist/index.js\");\n/* harmony import */ var _definitions__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./definitions */ \"./node_modules/@capacitor/preferences/dist/esm/definitions.js\");\n\nconst Preferences = (0,_capacitor_core__WEBPACK_IMPORTED_MODULE_0__.registerPlugin)('Preferences', {\n web: () => __webpack_require__.e(/*! import() */ \"node_modules_capacitor_preferences_dist_esm_web_js\").then(__webpack_require__.bind(__webpack_require__, /*! ./web */ \"./node_modules/@capacitor/preferences/dist/esm/web.js\")).then(m => new m.PreferencesWeb())\n});\n\n\n\n//# sourceURL=webpack://jandl/./node_modules/@capacitor/preferences/dist/esm/index.js?"); +eval("{__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ Preferences: function() { return /* binding */ Preferences; }\n/* harmony export */ });\n/* harmony import */ var _capacitor_core__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @capacitor/core */ \"./node_modules/@capacitor/core/dist/index.js\");\n/* harmony import */ var _definitions__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./definitions */ \"./node_modules/@capacitor/preferences/dist/esm/definitions.js\");\n\nconst Preferences = (0,_capacitor_core__WEBPACK_IMPORTED_MODULE_0__.registerPlugin)('Preferences', {\n web: () => __webpack_require__.e(/*! import() */ \"node_modules_capacitor_preferences_dist_esm_web_js\").then(__webpack_require__.bind(__webpack_require__, /*! ./web */ \"./node_modules/@capacitor/preferences/dist/esm/web.js\")).then(m => new m.PreferencesWeb())\n});\n\n\n\n//# sourceURL=webpack://jandl/./node_modules/@capacitor/preferences/dist/esm/index.js?\n}"); /***/ }), -/***/ "./node_modules/@intlify/core-base/dist/core-base.esm-bundler.js": -/*!***********************************************************************!*\ - !*** ./node_modules/@intlify/core-base/dist/core-base.esm-bundler.js ***! - \***********************************************************************/ -/***/ (function(__unused_webpack_module, __webpack_exports__, __webpack_require__) { +/***/ "./node_modules/@intlify/core-base/dist/core-base.mjs": +/*!************************************************************!*\ + !*** ./node_modules/@intlify/core-base/dist/core-base.mjs ***! + \************************************************************/ +/***/ (function(__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) { "use strict"; -eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"CompileErrorCodes\": function() { return /* reexport safe */ _intlify_message_compiler__WEBPACK_IMPORTED_MODULE_1__.CompileErrorCodes; },\n/* harmony export */ \"CoreErrorCodes\": function() { return /* binding */ CoreErrorCodes; },\n/* harmony export */ \"CoreWarnCodes\": function() { return /* binding */ CoreWarnCodes; },\n/* harmony export */ \"DATETIME_FORMAT_OPTIONS_KEYS\": function() { return /* binding */ DATETIME_FORMAT_OPTIONS_KEYS; },\n/* harmony export */ \"DEFAULT_LOCALE\": function() { return /* binding */ DEFAULT_LOCALE; },\n/* harmony export */ \"DEFAULT_MESSAGE_DATA_TYPE\": function() { return /* binding */ DEFAULT_MESSAGE_DATA_TYPE; },\n/* harmony export */ \"MISSING_RESOLVE_VALUE\": function() { return /* binding */ MISSING_RESOLVE_VALUE; },\n/* harmony export */ \"NOT_REOSLVED\": function() { return /* binding */ NOT_REOSLVED; },\n/* harmony export */ \"NUMBER_FORMAT_OPTIONS_KEYS\": function() { return /* binding */ NUMBER_FORMAT_OPTIONS_KEYS; },\n/* harmony export */ \"VERSION\": function() { return /* binding */ VERSION; },\n/* harmony export */ \"clearCompileCache\": function() { return /* binding */ clearCompileCache; },\n/* harmony export */ \"clearDateTimeFormat\": function() { return /* binding */ clearDateTimeFormat; },\n/* harmony export */ \"clearNumberFormat\": function() { return /* binding */ clearNumberFormat; },\n/* harmony export */ \"compileToFunction\": function() { return /* binding */ compileToFunction; },\n/* harmony export */ \"createCompileError\": function() { return /* reexport safe */ _intlify_message_compiler__WEBPACK_IMPORTED_MODULE_1__.createCompileError; },\n/* harmony export */ \"createCoreContext\": function() { return /* binding */ createCoreContext; },\n/* harmony export */ \"createCoreError\": function() { return /* binding */ createCoreError; },\n/* harmony export */ \"createMessageContext\": function() { return /* binding */ createMessageContext; },\n/* harmony export */ \"datetime\": function() { return /* binding */ datetime; },\n/* harmony export */ \"fallbackWithLocaleChain\": function() { return /* binding */ fallbackWithLocaleChain; },\n/* harmony export */ \"fallbackWithSimple\": function() { return /* binding */ fallbackWithSimple; },\n/* harmony export */ \"getAdditionalMeta\": function() { return /* binding */ getAdditionalMeta; },\n/* harmony export */ \"getDevToolsHook\": function() { return /* binding */ getDevToolsHook; },\n/* harmony export */ \"getFallbackContext\": function() { return /* binding */ getFallbackContext; },\n/* harmony export */ \"getWarnMessage\": function() { return /* binding */ getWarnMessage; },\n/* harmony export */ \"handleMissing\": function() { return /* binding */ handleMissing; },\n/* harmony export */ \"initI18nDevTools\": function() { return /* binding */ initI18nDevTools; },\n/* harmony export */ \"isMessageFunction\": function() { return /* binding */ isMessageFunction; },\n/* harmony export */ \"isTranslateFallbackWarn\": function() { return /* binding */ isTranslateFallbackWarn; },\n/* harmony export */ \"isTranslateMissingWarn\": function() { return /* binding */ isTranslateMissingWarn; },\n/* harmony export */ \"number\": function() { return /* binding */ number; },\n/* harmony export */ \"parse\": function() { return /* binding */ parse; },\n/* harmony export */ \"parseDateTimeArgs\": function() { return /* binding */ parseDateTimeArgs; },\n/* harmony export */ \"parseNumberArgs\": function() { return /* binding */ parseNumberArgs; },\n/* harmony export */ \"parseTranslateArgs\": function() { return /* binding */ parseTranslateArgs; },\n/* harmony export */ \"registerLocaleFallbacker\": function() { return /* binding */ registerLocaleFallbacker; },\n/* harmony export */ \"registerMessageCompiler\": function() { return /* binding */ registerMessageCompiler; },\n/* harmony export */ \"registerMessageResolver\": function() { return /* binding */ registerMessageResolver; },\n/* harmony export */ \"resolveValue\": function() { return /* binding */ resolveValue; },\n/* harmony export */ \"resolveWithKeyValue\": function() { return /* binding */ resolveWithKeyValue; },\n/* harmony export */ \"setAdditionalMeta\": function() { return /* binding */ setAdditionalMeta; },\n/* harmony export */ \"setDevToolsHook\": function() { return /* binding */ setDevToolsHook; },\n/* harmony export */ \"setFallbackContext\": function() { return /* binding */ setFallbackContext; },\n/* harmony export */ \"translate\": function() { return /* binding */ translate; },\n/* harmony export */ \"translateDevTools\": function() { return /* binding */ translateDevTools; },\n/* harmony export */ \"updateFallbackLocale\": function() { return /* binding */ updateFallbackLocale; }\n/* harmony export */ });\n/* harmony import */ var core_js_modules_es_array_push_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! core-js/modules/es.array.push.js */ \"./node_modules/core-js/modules/es.array.push.js\");\n/* harmony import */ var core_js_modules_es_array_push_js__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_array_push_js__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var _intlify_shared__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! @intlify/shared */ \"./node_modules/@intlify/shared/dist/shared.esm-bundler.js\");\n/* harmony import */ var _intlify_message_compiler__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! @intlify/message-compiler */ \"./node_modules/@intlify/message-compiler/dist/message-compiler.esm-bundler.js\");\n/* harmony import */ var _intlify_devtools_if__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! @intlify/devtools-if */ \"./node_modules/@intlify/devtools-if/dist/devtools-if.esm-bundler.js\");\n/* provided dependency */ var console = __webpack_require__(/*! ./node_modules/console-browserify/index.js */ \"./node_modules/console-browserify/index.js\");\n\n/*!\n * core-base v9.2.2\n * (c) 2022 kazuya kawaguchi\n * Released under the MIT License.\n */\n\n\n\n\nconst pathStateMachine = [];\npathStateMachine[0 /* BEFORE_PATH */] = {\n [\"w\" /* WORKSPACE */]: [0 /* BEFORE_PATH */],\n [\"i\" /* IDENT */]: [3 /* IN_IDENT */, 0 /* APPEND */],\n [\"[\" /* LEFT_BRACKET */]: [4 /* IN_SUB_PATH */],\n [\"o\" /* END_OF_FAIL */]: [7 /* AFTER_PATH */]\n};\n\npathStateMachine[1 /* IN_PATH */] = {\n [\"w\" /* WORKSPACE */]: [1 /* IN_PATH */],\n [\".\" /* DOT */]: [2 /* BEFORE_IDENT */],\n [\"[\" /* LEFT_BRACKET */]: [4 /* IN_SUB_PATH */],\n [\"o\" /* END_OF_FAIL */]: [7 /* AFTER_PATH */]\n};\n\npathStateMachine[2 /* BEFORE_IDENT */] = {\n [\"w\" /* WORKSPACE */]: [2 /* BEFORE_IDENT */],\n [\"i\" /* IDENT */]: [3 /* IN_IDENT */, 0 /* APPEND */],\n [\"0\" /* ZERO */]: [3 /* IN_IDENT */, 0 /* APPEND */]\n};\n\npathStateMachine[3 /* IN_IDENT */] = {\n [\"i\" /* IDENT */]: [3 /* IN_IDENT */, 0 /* APPEND */],\n [\"0\" /* ZERO */]: [3 /* IN_IDENT */, 0 /* APPEND */],\n [\"w\" /* WORKSPACE */]: [1 /* IN_PATH */, 1 /* PUSH */],\n [\".\" /* DOT */]: [2 /* BEFORE_IDENT */, 1 /* PUSH */],\n [\"[\" /* LEFT_BRACKET */]: [4 /* IN_SUB_PATH */, 1 /* PUSH */],\n [\"o\" /* END_OF_FAIL */]: [7 /* AFTER_PATH */, 1 /* PUSH */]\n};\n\npathStateMachine[4 /* IN_SUB_PATH */] = {\n [\"'\" /* SINGLE_QUOTE */]: [5 /* IN_SINGLE_QUOTE */, 0 /* APPEND */],\n [\"\\\"\" /* DOUBLE_QUOTE */]: [6 /* IN_DOUBLE_QUOTE */, 0 /* APPEND */],\n [\"[\" /* LEFT_BRACKET */]: [4 /* IN_SUB_PATH */, 2 /* INC_SUB_PATH_DEPTH */],\n\n [\"]\" /* RIGHT_BRACKET */]: [1 /* IN_PATH */, 3 /* PUSH_SUB_PATH */],\n [\"o\" /* END_OF_FAIL */]: 8 /* ERROR */,\n [\"l\" /* ELSE */]: [4 /* IN_SUB_PATH */, 0 /* APPEND */]\n};\n\npathStateMachine[5 /* IN_SINGLE_QUOTE */] = {\n [\"'\" /* SINGLE_QUOTE */]: [4 /* IN_SUB_PATH */, 0 /* APPEND */],\n [\"o\" /* END_OF_FAIL */]: 8 /* ERROR */,\n [\"l\" /* ELSE */]: [5 /* IN_SINGLE_QUOTE */, 0 /* APPEND */]\n};\n\npathStateMachine[6 /* IN_DOUBLE_QUOTE */] = {\n [\"\\\"\" /* DOUBLE_QUOTE */]: [4 /* IN_SUB_PATH */, 0 /* APPEND */],\n [\"o\" /* END_OF_FAIL */]: 8 /* ERROR */,\n [\"l\" /* ELSE */]: [6 /* IN_DOUBLE_QUOTE */, 0 /* APPEND */]\n};\n/**\r\n * Check if an expression is a literal value.\r\n */\nconst literalValueRE = /^\\s?(?:true|false|-?[\\d.]+|'[^']*'|\"[^\"]*\")\\s?$/;\nfunction isLiteral(exp) {\n return literalValueRE.test(exp);\n}\n/**\r\n * Strip quotes from a string\r\n */\nfunction stripQuotes(str) {\n const a = str.charCodeAt(0);\n const b = str.charCodeAt(str.length - 1);\n return a === b && (a === 0x22 || a === 0x27) ? str.slice(1, -1) : str;\n}\n/**\r\n * Determine the type of a character in a keypath.\r\n */\nfunction getPathCharType(ch) {\n if (ch === undefined || ch === null) {\n return \"o\" /* END_OF_FAIL */;\n }\n\n const code = ch.charCodeAt(0);\n switch (code) {\n case 0x5b: // [\n case 0x5d: // ]\n case 0x2e: // .\n case 0x22: // \"\n case 0x27:\n // '\n return ch;\n case 0x5f: // _\n case 0x24: // $\n case 0x2d:\n // -\n return \"i\" /* IDENT */;\n case 0x09: // Tab (HT)\n case 0x0a: // Newline (LF)\n case 0x0d: // Return (CR)\n case 0xa0: // No-break space (NBSP)\n case 0xfeff: // Byte Order Mark (BOM)\n case 0x2028: // Line Separator (LS)\n case 0x2029:\n // Paragraph Separator (PS)\n return \"w\" /* WORKSPACE */;\n }\n\n return \"i\" /* IDENT */;\n}\n/**\r\n * Format a subPath, return its plain form if it is\r\n * a literal string or number. Otherwise prepend the\r\n * dynamic indicator (*).\r\n */\nfunction formatSubPath(path) {\n const trimmed = path.trim();\n // invalid leading 0\n if (path.charAt(0) === '0' && isNaN(parseInt(path))) {\n return false;\n }\n return isLiteral(trimmed) ? stripQuotes(trimmed) : \"*\" /* ASTARISK */ + trimmed;\n}\n/**\r\n * Parse a string path into an array of segments\r\n */\nfunction parse(path) {\n const keys = [];\n let index = -1;\n let mode = 0 /* BEFORE_PATH */;\n let subPathDepth = 0;\n let c;\n let key; // eslint-disable-line\n let newChar;\n let type;\n let transition;\n let action;\n let typeMap;\n const actions = [];\n actions[0 /* APPEND */] = () => {\n if (key === undefined) {\n key = newChar;\n } else {\n key += newChar;\n }\n };\n actions[1 /* PUSH */] = () => {\n if (key !== undefined) {\n keys.push(key);\n key = undefined;\n }\n };\n actions[2 /* INC_SUB_PATH_DEPTH */] = () => {\n actions[0 /* APPEND */]();\n subPathDepth++;\n };\n actions[3 /* PUSH_SUB_PATH */] = () => {\n if (subPathDepth > 0) {\n subPathDepth--;\n mode = 4 /* IN_SUB_PATH */;\n actions[0 /* APPEND */]();\n } else {\n subPathDepth = 0;\n if (key === undefined) {\n return false;\n }\n key = formatSubPath(key);\n if (key === false) {\n return false;\n } else {\n actions[1 /* PUSH */]();\n }\n }\n };\n\n function maybeUnescapeQuote() {\n const nextChar = path[index + 1];\n if (mode === 5 /* IN_SINGLE_QUOTE */ && nextChar === \"'\" /* SINGLE_QUOTE */ || mode === 6 /* IN_DOUBLE_QUOTE */ && nextChar === \"\\\"\" /* DOUBLE_QUOTE */) {\n index++;\n newChar = '\\\\' + nextChar;\n actions[0 /* APPEND */]();\n return true;\n }\n }\n while (mode !== null) {\n index++;\n c = path[index];\n if (c === '\\\\' && maybeUnescapeQuote()) {\n continue;\n }\n type = getPathCharType(c);\n typeMap = pathStateMachine[mode];\n transition = typeMap[type] || typeMap[\"l\" /* ELSE */] || 8 /* ERROR */;\n // check parse error\n if (transition === 8 /* ERROR */) {\n return;\n }\n mode = transition[0];\n if (transition[1] !== undefined) {\n action = actions[transition[1]];\n if (action) {\n newChar = c;\n if (action() === false) {\n return;\n }\n }\n }\n // check parse finish\n if (mode === 7 /* AFTER_PATH */) {\n return keys;\n }\n }\n}\n// path token cache\nconst cache = new Map();\n/**\r\n * key-value message resolver\r\n *\r\n * @remarks\r\n * Resolves messages with the key-value structure. Note that messages with a hierarchical structure such as objects cannot be resolved\r\n *\r\n * @param obj - A target object to be resolved with path\r\n * @param path - A {@link Path | path} to resolve the value of message\r\n *\r\n * @returns A resolved {@link PathValue | path value}\r\n *\r\n * @VueI18nGeneral\r\n */\nfunction resolveWithKeyValue(obj, path) {\n return (0,_intlify_shared__WEBPACK_IMPORTED_MODULE_2__.isObject)(obj) ? obj[path] : null;\n}\n/**\r\n * message resolver\r\n *\r\n * @remarks\r\n * Resolves messages. messages with a hierarchical structure such as objects can be resolved. This resolver is used in VueI18n as default.\r\n *\r\n * @param obj - A target object to be resolved with path\r\n * @param path - A {@link Path | path} to resolve the value of message\r\n *\r\n * @returns A resolved {@link PathValue | path value}\r\n *\r\n * @VueI18nGeneral\r\n */\nfunction resolveValue(obj, path) {\n // check object\n if (!(0,_intlify_shared__WEBPACK_IMPORTED_MODULE_2__.isObject)(obj)) {\n return null;\n }\n // parse path\n let hit = cache.get(path);\n if (!hit) {\n hit = parse(path);\n if (hit) {\n cache.set(path, hit);\n }\n }\n // check hit\n if (!hit) {\n return null;\n }\n // resolve path value\n const len = hit.length;\n let last = obj;\n let i = 0;\n while (i < len) {\n const val = last[hit[i]];\n if (val === undefined) {\n return null;\n }\n last = val;\n i++;\n }\n return last;\n}\nconst DEFAULT_MODIFIER = str => str;\nconst DEFAULT_MESSAGE = ctx => ''; // eslint-disable-line\nconst DEFAULT_MESSAGE_DATA_TYPE = 'text';\nconst DEFAULT_NORMALIZE = values => values.length === 0 ? '' : values.join('');\nconst DEFAULT_INTERPOLATE = _intlify_shared__WEBPACK_IMPORTED_MODULE_2__.toDisplayString;\nfunction pluralDefault(choice, choicesLength) {\n choice = Math.abs(choice);\n if (choicesLength === 2) {\n // prettier-ignore\n return choice ? choice > 1 ? 1 : 0 : 1;\n }\n return choice ? Math.min(choice, 2) : 0;\n}\nfunction getPluralIndex(options) {\n // prettier-ignore\n const index = (0,_intlify_shared__WEBPACK_IMPORTED_MODULE_2__.isNumber)(options.pluralIndex) ? options.pluralIndex : -1;\n // prettier-ignore\n return options.named && ((0,_intlify_shared__WEBPACK_IMPORTED_MODULE_2__.isNumber)(options.named.count) || (0,_intlify_shared__WEBPACK_IMPORTED_MODULE_2__.isNumber)(options.named.n)) ? (0,_intlify_shared__WEBPACK_IMPORTED_MODULE_2__.isNumber)(options.named.count) ? options.named.count : (0,_intlify_shared__WEBPACK_IMPORTED_MODULE_2__.isNumber)(options.named.n) ? options.named.n : index : index;\n}\nfunction normalizeNamed(pluralIndex, props) {\n if (!props.count) {\n props.count = pluralIndex;\n }\n if (!props.n) {\n props.n = pluralIndex;\n }\n}\nfunction createMessageContext(options = {}) {\n const locale = options.locale;\n const pluralIndex = getPluralIndex(options);\n const pluralRule = (0,_intlify_shared__WEBPACK_IMPORTED_MODULE_2__.isObject)(options.pluralRules) && (0,_intlify_shared__WEBPACK_IMPORTED_MODULE_2__.isString)(locale) && (0,_intlify_shared__WEBPACK_IMPORTED_MODULE_2__.isFunction)(options.pluralRules[locale]) ? options.pluralRules[locale] : pluralDefault;\n const orgPluralRule = (0,_intlify_shared__WEBPACK_IMPORTED_MODULE_2__.isObject)(options.pluralRules) && (0,_intlify_shared__WEBPACK_IMPORTED_MODULE_2__.isString)(locale) && (0,_intlify_shared__WEBPACK_IMPORTED_MODULE_2__.isFunction)(options.pluralRules[locale]) ? pluralDefault : undefined;\n const plural = messages => {\n return messages[pluralRule(pluralIndex, messages.length, orgPluralRule)];\n };\n const _list = options.list || [];\n const list = index => _list[index];\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n const _named = options.named || {};\n (0,_intlify_shared__WEBPACK_IMPORTED_MODULE_2__.isNumber)(options.pluralIndex) && normalizeNamed(pluralIndex, _named);\n const named = key => _named[key];\n function message(key) {\n // prettier-ignore\n const msg = (0,_intlify_shared__WEBPACK_IMPORTED_MODULE_2__.isFunction)(options.messages) ? options.messages(key) : (0,_intlify_shared__WEBPACK_IMPORTED_MODULE_2__.isObject)(options.messages) ? options.messages[key] : false;\n return !msg ? options.parent ? options.parent.message(key) // resolve from parent messages\n : DEFAULT_MESSAGE : msg;\n }\n const _modifier = name => options.modifiers ? options.modifiers[name] : DEFAULT_MODIFIER;\n const normalize = (0,_intlify_shared__WEBPACK_IMPORTED_MODULE_2__.isPlainObject)(options.processor) && (0,_intlify_shared__WEBPACK_IMPORTED_MODULE_2__.isFunction)(options.processor.normalize) ? options.processor.normalize : DEFAULT_NORMALIZE;\n const interpolate = (0,_intlify_shared__WEBPACK_IMPORTED_MODULE_2__.isPlainObject)(options.processor) && (0,_intlify_shared__WEBPACK_IMPORTED_MODULE_2__.isFunction)(options.processor.interpolate) ? options.processor.interpolate : DEFAULT_INTERPOLATE;\n const type = (0,_intlify_shared__WEBPACK_IMPORTED_MODULE_2__.isPlainObject)(options.processor) && (0,_intlify_shared__WEBPACK_IMPORTED_MODULE_2__.isString)(options.processor.type) ? options.processor.type : DEFAULT_MESSAGE_DATA_TYPE;\n const linked = (key, ...args) => {\n const [arg1, arg2] = args;\n let type = 'text';\n let modifier = '';\n if (args.length === 1) {\n if ((0,_intlify_shared__WEBPACK_IMPORTED_MODULE_2__.isObject)(arg1)) {\n modifier = arg1.modifier || modifier;\n type = arg1.type || type;\n } else if ((0,_intlify_shared__WEBPACK_IMPORTED_MODULE_2__.isString)(arg1)) {\n modifier = arg1 || modifier;\n }\n } else if (args.length === 2) {\n if ((0,_intlify_shared__WEBPACK_IMPORTED_MODULE_2__.isString)(arg1)) {\n modifier = arg1 || modifier;\n }\n if ((0,_intlify_shared__WEBPACK_IMPORTED_MODULE_2__.isString)(arg2)) {\n type = arg2 || type;\n }\n }\n let msg = message(key)(ctx);\n // The message in vnode resolved with linked are returned as an array by processor.nomalize\n if (type === 'vnode' && (0,_intlify_shared__WEBPACK_IMPORTED_MODULE_2__.isArray)(msg) && modifier) {\n msg = msg[0];\n }\n return modifier ? _modifier(modifier)(msg, type) : msg;\n };\n const ctx = {\n [\"list\" /* LIST */]: list,\n [\"named\" /* NAMED */]: named,\n [\"plural\" /* PLURAL */]: plural,\n [\"linked\" /* LINKED */]: linked,\n [\"message\" /* MESSAGE */]: message,\n [\"type\" /* TYPE */]: type,\n [\"interpolate\" /* INTERPOLATE */]: interpolate,\n [\"normalize\" /* NORMALIZE */]: normalize\n };\n return ctx;\n}\nlet devtools = null;\nfunction setDevToolsHook(hook) {\n devtools = hook;\n}\nfunction getDevToolsHook() {\n return devtools;\n}\nfunction initI18nDevTools(i18n, version, meta) {\n // TODO: queue if devtools is undefined\n devtools && devtools.emit(_intlify_devtools_if__WEBPACK_IMPORTED_MODULE_3__.IntlifyDevToolsHooks.I18nInit, {\n timestamp: Date.now(),\n i18n,\n version,\n meta\n });\n}\nconst translateDevTools = /* #__PURE__*/createDevToolsHook(_intlify_devtools_if__WEBPACK_IMPORTED_MODULE_3__.IntlifyDevToolsHooks.FunctionTranslate);\nfunction createDevToolsHook(hook) {\n return payloads => devtools && devtools.emit(hook, payloads);\n}\nconst CoreWarnCodes = {\n NOT_FOUND_KEY: 1,\n FALLBACK_TO_TRANSLATE: 2,\n CANNOT_FORMAT_NUMBER: 3,\n FALLBACK_TO_NUMBER_FORMAT: 4,\n CANNOT_FORMAT_DATE: 5,\n FALLBACK_TO_DATE_FORMAT: 6,\n __EXTEND_POINT__: 7\n};\n/** @internal */\nconst warnMessages = {\n [CoreWarnCodes.NOT_FOUND_KEY]: `Not found '{key}' key in '{locale}' locale messages.`,\n [CoreWarnCodes.FALLBACK_TO_TRANSLATE]: `Fall back to translate '{key}' key with '{target}' locale.`,\n [CoreWarnCodes.CANNOT_FORMAT_NUMBER]: `Cannot format a number value due to not supported Intl.NumberFormat.`,\n [CoreWarnCodes.FALLBACK_TO_NUMBER_FORMAT]: `Fall back to number format '{key}' key with '{target}' locale.`,\n [CoreWarnCodes.CANNOT_FORMAT_DATE]: `Cannot format a date value due to not supported Intl.DateTimeFormat.`,\n [CoreWarnCodes.FALLBACK_TO_DATE_FORMAT]: `Fall back to datetime format '{key}' key with '{target}' locale.`\n};\nfunction getWarnMessage(code, ...args) {\n return (0,_intlify_shared__WEBPACK_IMPORTED_MODULE_2__.format)(warnMessages[code], ...args);\n}\n\n/**\r\n * Fallback with simple implemenation\r\n *\r\n * @remarks\r\n * A fallback locale function implemented with a simple fallback algorithm.\r\n *\r\n * Basically, it returns the value as specified in the `fallbackLocale` props, and is processed with the fallback inside intlify.\r\n *\r\n * @param ctx - A {@link CoreContext | context}\r\n * @param fallback - A {@link FallbackLocale | fallback locale}\r\n * @param start - A starting {@link Locale | locale}\r\n *\r\n * @returns Fallback locales\r\n *\r\n * @VueI18nGeneral\r\n */\nfunction fallbackWithSimple(ctx, fallback, start // eslint-disable-line @typescript-eslint/no-unused-vars\n) {\n // prettier-ignore\n return [...new Set([start, ...((0,_intlify_shared__WEBPACK_IMPORTED_MODULE_2__.isArray)(fallback) ? fallback : (0,_intlify_shared__WEBPACK_IMPORTED_MODULE_2__.isObject)(fallback) ? Object.keys(fallback) : (0,_intlify_shared__WEBPACK_IMPORTED_MODULE_2__.isString)(fallback) ? [fallback] : [start])])];\n}\n/**\r\n * Fallback with locale chain\r\n *\r\n * @remarks\r\n * A fallback locale function implemented with a fallback chain algorithm. It's used in VueI18n as default.\r\n *\r\n * @param ctx - A {@link CoreContext | context}\r\n * @param fallback - A {@link FallbackLocale | fallback locale}\r\n * @param start - A starting {@link Locale | locale}\r\n *\r\n * @returns Fallback locales\r\n *\r\n * @VueI18nSee [Fallbacking](../guide/essentials/fallback)\r\n *\r\n * @VueI18nGeneral\r\n */\nfunction fallbackWithLocaleChain(ctx, fallback, start) {\n const startLocale = (0,_intlify_shared__WEBPACK_IMPORTED_MODULE_2__.isString)(start) ? start : DEFAULT_LOCALE;\n const context = ctx;\n if (!context.__localeChainCache) {\n context.__localeChainCache = new Map();\n }\n let chain = context.__localeChainCache.get(startLocale);\n if (!chain) {\n chain = [];\n // first block defined by start\n let block = [start];\n // while any intervening block found\n while ((0,_intlify_shared__WEBPACK_IMPORTED_MODULE_2__.isArray)(block)) {\n block = appendBlockToChain(chain, block, fallback);\n }\n // prettier-ignore\n // last block defined by default\n const defaults = (0,_intlify_shared__WEBPACK_IMPORTED_MODULE_2__.isArray)(fallback) || !(0,_intlify_shared__WEBPACK_IMPORTED_MODULE_2__.isPlainObject)(fallback) ? fallback : fallback['default'] ? fallback['default'] : null;\n // convert defaults to array\n block = (0,_intlify_shared__WEBPACK_IMPORTED_MODULE_2__.isString)(defaults) ? [defaults] : defaults;\n if ((0,_intlify_shared__WEBPACK_IMPORTED_MODULE_2__.isArray)(block)) {\n appendBlockToChain(chain, block, false);\n }\n context.__localeChainCache.set(startLocale, chain);\n }\n return chain;\n}\nfunction appendBlockToChain(chain, block, blocks) {\n let follow = true;\n for (let i = 0; i < block.length && (0,_intlify_shared__WEBPACK_IMPORTED_MODULE_2__.isBoolean)(follow); i++) {\n const locale = block[i];\n if ((0,_intlify_shared__WEBPACK_IMPORTED_MODULE_2__.isString)(locale)) {\n follow = appendLocaleToChain(chain, block[i], blocks);\n }\n }\n return follow;\n}\nfunction appendLocaleToChain(chain, locale, blocks) {\n let follow;\n const tokens = locale.split('-');\n do {\n const target = tokens.join('-');\n follow = appendItemToChain(chain, target, blocks);\n tokens.splice(-1, 1);\n } while (tokens.length && follow === true);\n return follow;\n}\nfunction appendItemToChain(chain, target, blocks) {\n let follow = false;\n if (!chain.includes(target)) {\n follow = true;\n if (target) {\n follow = target[target.length - 1] !== '!';\n const locale = target.replace(/!/g, '');\n chain.push(locale);\n if (((0,_intlify_shared__WEBPACK_IMPORTED_MODULE_2__.isArray)(blocks) || (0,_intlify_shared__WEBPACK_IMPORTED_MODULE_2__.isPlainObject)(blocks)) && blocks[locale] // eslint-disable-line @typescript-eslint/no-explicit-any\n ) {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n follow = blocks[locale];\n }\n }\n }\n return follow;\n}\n\n/* eslint-disable @typescript-eslint/no-explicit-any */\n/**\r\n * Intlify core-base version\r\n * @internal\r\n */\nconst VERSION = '9.2.2';\nconst NOT_REOSLVED = -1;\nconst DEFAULT_LOCALE = 'en-US';\nconst MISSING_RESOLVE_VALUE = '';\nconst capitalize = str => `${str.charAt(0).toLocaleUpperCase()}${str.substr(1)}`;\nfunction getDefaultLinkedModifiers() {\n return {\n upper: (val, type) => {\n // prettier-ignore\n return type === 'text' && (0,_intlify_shared__WEBPACK_IMPORTED_MODULE_2__.isString)(val) ? val.toUpperCase() : type === 'vnode' && (0,_intlify_shared__WEBPACK_IMPORTED_MODULE_2__.isObject)(val) && '__v_isVNode' in val ? val.children.toUpperCase() : val;\n },\n lower: (val, type) => {\n // prettier-ignore\n return type === 'text' && (0,_intlify_shared__WEBPACK_IMPORTED_MODULE_2__.isString)(val) ? val.toLowerCase() : type === 'vnode' && (0,_intlify_shared__WEBPACK_IMPORTED_MODULE_2__.isObject)(val) && '__v_isVNode' in val ? val.children.toLowerCase() : val;\n },\n capitalize: (val, type) => {\n // prettier-ignore\n return type === 'text' && (0,_intlify_shared__WEBPACK_IMPORTED_MODULE_2__.isString)(val) ? capitalize(val) : type === 'vnode' && (0,_intlify_shared__WEBPACK_IMPORTED_MODULE_2__.isObject)(val) && '__v_isVNode' in val ? capitalize(val.children) : val;\n }\n };\n}\nlet _compiler;\nfunction registerMessageCompiler(compiler) {\n _compiler = compiler;\n}\nlet _resolver;\n/**\r\n * Register the message resolver\r\n *\r\n * @param resolver - A {@link MessageResolver} function\r\n *\r\n * @VueI18nGeneral\r\n */\nfunction registerMessageResolver(resolver) {\n _resolver = resolver;\n}\nlet _fallbacker;\n/**\r\n * Register the locale fallbacker\r\n *\r\n * @param fallbacker - A {@link LocaleFallbacker} function\r\n *\r\n * @VueI18nGeneral\r\n */\nfunction registerLocaleFallbacker(fallbacker) {\n _fallbacker = fallbacker;\n}\n// Additional Meta for Intlify DevTools\nlet _additionalMeta = null;\nconst setAdditionalMeta = meta => {\n _additionalMeta = meta;\n};\nconst getAdditionalMeta = () => _additionalMeta;\nlet _fallbackContext = null;\nconst setFallbackContext = context => {\n _fallbackContext = context;\n};\nconst getFallbackContext = () => _fallbackContext;\n// ID for CoreContext\nlet _cid = 0;\nfunction createCoreContext(options = {}) {\n // setup options\n const version = (0,_intlify_shared__WEBPACK_IMPORTED_MODULE_2__.isString)(options.version) ? options.version : VERSION;\n const locale = (0,_intlify_shared__WEBPACK_IMPORTED_MODULE_2__.isString)(options.locale) ? options.locale : DEFAULT_LOCALE;\n const fallbackLocale = (0,_intlify_shared__WEBPACK_IMPORTED_MODULE_2__.isArray)(options.fallbackLocale) || (0,_intlify_shared__WEBPACK_IMPORTED_MODULE_2__.isPlainObject)(options.fallbackLocale) || (0,_intlify_shared__WEBPACK_IMPORTED_MODULE_2__.isString)(options.fallbackLocale) || options.fallbackLocale === false ? options.fallbackLocale : locale;\n const messages = (0,_intlify_shared__WEBPACK_IMPORTED_MODULE_2__.isPlainObject)(options.messages) ? options.messages : {\n [locale]: {}\n };\n const datetimeFormats = (0,_intlify_shared__WEBPACK_IMPORTED_MODULE_2__.isPlainObject)(options.datetimeFormats) ? options.datetimeFormats : {\n [locale]: {}\n };\n const numberFormats = (0,_intlify_shared__WEBPACK_IMPORTED_MODULE_2__.isPlainObject)(options.numberFormats) ? options.numberFormats : {\n [locale]: {}\n };\n const modifiers = (0,_intlify_shared__WEBPACK_IMPORTED_MODULE_2__.assign)({}, options.modifiers || {}, getDefaultLinkedModifiers());\n const pluralRules = options.pluralRules || {};\n const missing = (0,_intlify_shared__WEBPACK_IMPORTED_MODULE_2__.isFunction)(options.missing) ? options.missing : null;\n const missingWarn = (0,_intlify_shared__WEBPACK_IMPORTED_MODULE_2__.isBoolean)(options.missingWarn) || (0,_intlify_shared__WEBPACK_IMPORTED_MODULE_2__.isRegExp)(options.missingWarn) ? options.missingWarn : true;\n const fallbackWarn = (0,_intlify_shared__WEBPACK_IMPORTED_MODULE_2__.isBoolean)(options.fallbackWarn) || (0,_intlify_shared__WEBPACK_IMPORTED_MODULE_2__.isRegExp)(options.fallbackWarn) ? options.fallbackWarn : true;\n const fallbackFormat = !!options.fallbackFormat;\n const unresolving = !!options.unresolving;\n const postTranslation = (0,_intlify_shared__WEBPACK_IMPORTED_MODULE_2__.isFunction)(options.postTranslation) ? options.postTranslation : null;\n const processor = (0,_intlify_shared__WEBPACK_IMPORTED_MODULE_2__.isPlainObject)(options.processor) ? options.processor : null;\n const warnHtmlMessage = (0,_intlify_shared__WEBPACK_IMPORTED_MODULE_2__.isBoolean)(options.warnHtmlMessage) ? options.warnHtmlMessage : true;\n const escapeParameter = !!options.escapeParameter;\n const messageCompiler = (0,_intlify_shared__WEBPACK_IMPORTED_MODULE_2__.isFunction)(options.messageCompiler) ? options.messageCompiler : _compiler;\n const messageResolver = (0,_intlify_shared__WEBPACK_IMPORTED_MODULE_2__.isFunction)(options.messageResolver) ? options.messageResolver : _resolver || resolveWithKeyValue;\n const localeFallbacker = (0,_intlify_shared__WEBPACK_IMPORTED_MODULE_2__.isFunction)(options.localeFallbacker) ? options.localeFallbacker : _fallbacker || fallbackWithSimple;\n const fallbackContext = (0,_intlify_shared__WEBPACK_IMPORTED_MODULE_2__.isObject)(options.fallbackContext) ? options.fallbackContext : undefined;\n const onWarn = (0,_intlify_shared__WEBPACK_IMPORTED_MODULE_2__.isFunction)(options.onWarn) ? options.onWarn : _intlify_shared__WEBPACK_IMPORTED_MODULE_2__.warn;\n // setup internal options\n const internalOptions = options;\n const __datetimeFormatters = (0,_intlify_shared__WEBPACK_IMPORTED_MODULE_2__.isObject)(internalOptions.__datetimeFormatters) ? internalOptions.__datetimeFormatters : new Map();\n const __numberFormatters = (0,_intlify_shared__WEBPACK_IMPORTED_MODULE_2__.isObject)(internalOptions.__numberFormatters) ? internalOptions.__numberFormatters : new Map();\n const __meta = (0,_intlify_shared__WEBPACK_IMPORTED_MODULE_2__.isObject)(internalOptions.__meta) ? internalOptions.__meta : {};\n _cid++;\n const context = {\n version,\n cid: _cid,\n locale,\n fallbackLocale,\n messages,\n modifiers,\n pluralRules,\n missing,\n missingWarn,\n fallbackWarn,\n fallbackFormat,\n unresolving,\n postTranslation,\n processor,\n warnHtmlMessage,\n escapeParameter,\n messageCompiler,\n messageResolver,\n localeFallbacker,\n fallbackContext,\n onWarn,\n __meta\n };\n {\n context.datetimeFormats = datetimeFormats;\n context.numberFormats = numberFormats;\n context.__datetimeFormatters = __datetimeFormatters;\n context.__numberFormatters = __numberFormatters;\n }\n // for vue-devtools timeline event\n if (true) {\n context.__v_emitter = internalOptions.__v_emitter != null ? internalOptions.__v_emitter : undefined;\n }\n // NOTE: experimental !!\n if (true) {\n initI18nDevTools(context, version, __meta);\n }\n return context;\n}\n/** @internal */\nfunction isTranslateFallbackWarn(fallback, key) {\n return fallback instanceof RegExp ? fallback.test(key) : fallback;\n}\n/** @internal */\nfunction isTranslateMissingWarn(missing, key) {\n return missing instanceof RegExp ? missing.test(key) : missing;\n}\n/** @internal */\nfunction handleMissing(context, key, locale, missingWarn, type) {\n const {\n missing,\n onWarn\n } = context;\n // for vue-devtools timeline event\n if (true) {\n const emitter = context.__v_emitter;\n if (emitter) {\n emitter.emit(\"missing\" /* MISSING */, {\n locale,\n key,\n type,\n groupId: `${type}:${key}`\n });\n }\n }\n if (missing !== null) {\n const ret = missing(context, locale, key, type);\n return (0,_intlify_shared__WEBPACK_IMPORTED_MODULE_2__.isString)(ret) ? ret : key;\n } else {\n if ( true && isTranslateMissingWarn(missingWarn, key)) {\n onWarn(getWarnMessage(CoreWarnCodes.NOT_FOUND_KEY, {\n key,\n locale\n }));\n }\n return key;\n }\n}\n/** @internal */\nfunction updateFallbackLocale(ctx, locale, fallback) {\n const context = ctx;\n context.__localeChainCache = new Map();\n ctx.localeFallbacker(ctx, fallback, locale);\n}\n/* eslint-enable @typescript-eslint/no-explicit-any */\n\nconst RE_HTML_TAG = /<\\/?[\\w\\s=\"/.':;#-\\/]+>/;\nconst WARN_MESSAGE = `Detected HTML in '{source}' message. Recommend not using HTML messages to avoid XSS.`;\nfunction checkHtmlMessage(source, options) {\n const warnHtmlMessage = (0,_intlify_shared__WEBPACK_IMPORTED_MODULE_2__.isBoolean)(options.warnHtmlMessage) ? options.warnHtmlMessage : true;\n if (warnHtmlMessage && RE_HTML_TAG.test(source)) {\n (0,_intlify_shared__WEBPACK_IMPORTED_MODULE_2__.warn)((0,_intlify_shared__WEBPACK_IMPORTED_MODULE_2__.format)(WARN_MESSAGE, {\n source\n }));\n }\n}\nconst defaultOnCacheKey = source => source;\nlet compileCache = Object.create(null);\nfunction clearCompileCache() {\n compileCache = Object.create(null);\n}\nfunction compileToFunction(source, options = {}) {\n {\n // check HTML message\n true && checkHtmlMessage(source, options);\n // check caches\n const onCacheKey = options.onCacheKey || defaultOnCacheKey;\n const key = onCacheKey(source);\n const cached = compileCache[key];\n if (cached) {\n return cached;\n }\n // compile error detecting\n let occurred = false;\n const onError = options.onError || _intlify_message_compiler__WEBPACK_IMPORTED_MODULE_1__.defaultOnError;\n options.onError = err => {\n occurred = true;\n onError(err);\n };\n // compile\n const {\n code\n } = (0,_intlify_message_compiler__WEBPACK_IMPORTED_MODULE_1__.baseCompile)(source, options);\n // evaluate function\n const msg = new Function(`return ${code}`)();\n // if occurred compile error, don't cache\n return !occurred ? compileCache[key] = msg : msg;\n }\n}\nlet code = _intlify_message_compiler__WEBPACK_IMPORTED_MODULE_1__.CompileErrorCodes.__EXTEND_POINT__;\nconst inc = () => ++code;\nconst CoreErrorCodes = {\n INVALID_ARGUMENT: code,\n INVALID_DATE_ARGUMENT: inc(),\n INVALID_ISO_DATE_ARGUMENT: inc(),\n __EXTEND_POINT__: inc() // 18\n};\n\nfunction createCoreError(code) {\n return (0,_intlify_message_compiler__WEBPACK_IMPORTED_MODULE_1__.createCompileError)(code, null, true ? {\n messages: errorMessages\n } : 0);\n}\n/** @internal */\nconst errorMessages = {\n [CoreErrorCodes.INVALID_ARGUMENT]: 'Invalid arguments',\n [CoreErrorCodes.INVALID_DATE_ARGUMENT]: 'The date provided is an invalid Date object.' + 'Make sure your Date represents a valid date.',\n [CoreErrorCodes.INVALID_ISO_DATE_ARGUMENT]: 'The argument provided is not a valid ISO date string'\n};\nconst NOOP_MESSAGE_FUNCTION = () => '';\nconst isMessageFunction = val => (0,_intlify_shared__WEBPACK_IMPORTED_MODULE_2__.isFunction)(val);\n// implementation of `translate` function\nfunction translate(context, ...args) {\n const {\n fallbackFormat,\n postTranslation,\n unresolving,\n messageCompiler,\n fallbackLocale,\n messages\n } = context;\n const [key, options] = parseTranslateArgs(...args);\n const missingWarn = (0,_intlify_shared__WEBPACK_IMPORTED_MODULE_2__.isBoolean)(options.missingWarn) ? options.missingWarn : context.missingWarn;\n const fallbackWarn = (0,_intlify_shared__WEBPACK_IMPORTED_MODULE_2__.isBoolean)(options.fallbackWarn) ? options.fallbackWarn : context.fallbackWarn;\n const escapeParameter = (0,_intlify_shared__WEBPACK_IMPORTED_MODULE_2__.isBoolean)(options.escapeParameter) ? options.escapeParameter : context.escapeParameter;\n const resolvedMessage = !!options.resolvedMessage;\n // prettier-ignore\n const defaultMsgOrKey = (0,_intlify_shared__WEBPACK_IMPORTED_MODULE_2__.isString)(options.default) || (0,_intlify_shared__WEBPACK_IMPORTED_MODULE_2__.isBoolean)(options.default) // default by function option\n ? !(0,_intlify_shared__WEBPACK_IMPORTED_MODULE_2__.isBoolean)(options.default) ? options.default : !messageCompiler ? () => key : key : fallbackFormat // default by `fallbackFormat` option\n ? !messageCompiler ? () => key : key : '';\n const enableDefaultMsg = fallbackFormat || defaultMsgOrKey !== '';\n const locale = (0,_intlify_shared__WEBPACK_IMPORTED_MODULE_2__.isString)(options.locale) ? options.locale : context.locale;\n // escape params\n escapeParameter && escapeParams(options);\n // resolve message format\n // eslint-disable-next-line prefer-const\n let [formatScope, targetLocale, message] = !resolvedMessage ? resolveMessageFormat(context, key, locale, fallbackLocale, fallbackWarn, missingWarn) : [key, locale, messages[locale] || {}];\n // NOTE:\n // Fix to work around `ssrTransfrom` bug in Vite.\n // https://github.com/vitejs/vite/issues/4306\n // To get around this, use temporary variables.\n // https://github.com/nuxt/framework/issues/1461#issuecomment-954606243\n let format = formatScope;\n // if you use default message, set it as message format!\n let cacheBaseKey = key;\n if (!resolvedMessage && !((0,_intlify_shared__WEBPACK_IMPORTED_MODULE_2__.isString)(format) || isMessageFunction(format))) {\n if (enableDefaultMsg) {\n format = defaultMsgOrKey;\n cacheBaseKey = format;\n }\n }\n // checking message format and target locale\n if (!resolvedMessage && (!((0,_intlify_shared__WEBPACK_IMPORTED_MODULE_2__.isString)(format) || isMessageFunction(format)) || !(0,_intlify_shared__WEBPACK_IMPORTED_MODULE_2__.isString)(targetLocale))) {\n return unresolving ? NOT_REOSLVED : key;\n }\n if ( true && (0,_intlify_shared__WEBPACK_IMPORTED_MODULE_2__.isString)(format) && context.messageCompiler == null) {\n (0,_intlify_shared__WEBPACK_IMPORTED_MODULE_2__.warn)(`The message format compilation is not supported in this build. ` + `Because message compiler isn't included. ` + `You need to pre-compilation all message format. ` + `So translate function return '${key}'.`);\n return key;\n }\n // setup compile error detecting\n let occurred = false;\n const errorDetector = () => {\n occurred = true;\n };\n // compile message format\n const msg = !isMessageFunction(format) ? compileMessageFormat(context, key, targetLocale, format, cacheBaseKey, errorDetector) : format;\n // if occurred compile error, return the message format\n if (occurred) {\n return format;\n }\n // evaluate message with context\n const ctxOptions = getMessageContextOptions(context, targetLocale, message, options);\n const msgContext = createMessageContext(ctxOptions);\n const messaged = evaluateMessage(context, msg, msgContext);\n // if use post translation option, proceed it with handler\n const ret = postTranslation ? postTranslation(messaged, key) : messaged;\n // NOTE: experimental !!\n if (true) {\n // prettier-ignore\n const payloads = {\n timestamp: Date.now(),\n key: (0,_intlify_shared__WEBPACK_IMPORTED_MODULE_2__.isString)(key) ? key : isMessageFunction(format) ? format.key : '',\n locale: targetLocale || (isMessageFunction(format) ? format.locale : ''),\n format: (0,_intlify_shared__WEBPACK_IMPORTED_MODULE_2__.isString)(format) ? format : isMessageFunction(format) ? format.source : '',\n message: ret\n };\n payloads.meta = (0,_intlify_shared__WEBPACK_IMPORTED_MODULE_2__.assign)({}, context.__meta, getAdditionalMeta() || {});\n translateDevTools(payloads);\n }\n return ret;\n}\nfunction escapeParams(options) {\n if ((0,_intlify_shared__WEBPACK_IMPORTED_MODULE_2__.isArray)(options.list)) {\n options.list = options.list.map(item => (0,_intlify_shared__WEBPACK_IMPORTED_MODULE_2__.isString)(item) ? (0,_intlify_shared__WEBPACK_IMPORTED_MODULE_2__.escapeHtml)(item) : item);\n } else if ((0,_intlify_shared__WEBPACK_IMPORTED_MODULE_2__.isObject)(options.named)) {\n Object.keys(options.named).forEach(key => {\n if ((0,_intlify_shared__WEBPACK_IMPORTED_MODULE_2__.isString)(options.named[key])) {\n options.named[key] = (0,_intlify_shared__WEBPACK_IMPORTED_MODULE_2__.escapeHtml)(options.named[key]);\n }\n });\n }\n}\nfunction resolveMessageFormat(context, key, locale, fallbackLocale, fallbackWarn, missingWarn) {\n const {\n messages,\n onWarn,\n messageResolver: resolveValue,\n localeFallbacker\n } = context;\n const locales = localeFallbacker(context, fallbackLocale, locale); // eslint-disable-line @typescript-eslint/no-explicit-any\n let message = {};\n let targetLocale;\n let format = null;\n let from = locale;\n let to = null;\n const type = 'translate';\n for (let i = 0; i < locales.length; i++) {\n targetLocale = to = locales[i];\n if ( true && locale !== targetLocale && isTranslateFallbackWarn(fallbackWarn, key)) {\n onWarn(getWarnMessage(CoreWarnCodes.FALLBACK_TO_TRANSLATE, {\n key,\n target: targetLocale\n }));\n }\n // for vue-devtools timeline event\n if ( true && locale !== targetLocale) {\n const emitter = context.__v_emitter;\n if (emitter) {\n emitter.emit(\"fallback\" /* FALBACK */, {\n type,\n key,\n from,\n to,\n groupId: `${type}:${key}`\n });\n }\n }\n message = messages[targetLocale] || {};\n // for vue-devtools timeline event\n let start = null;\n let startTag;\n let endTag;\n if ( true && _intlify_shared__WEBPACK_IMPORTED_MODULE_2__.inBrowser) {\n start = window.performance.now();\n startTag = 'intlify-message-resolve-start';\n endTag = 'intlify-message-resolve-end';\n _intlify_shared__WEBPACK_IMPORTED_MODULE_2__.mark && (0,_intlify_shared__WEBPACK_IMPORTED_MODULE_2__.mark)(startTag);\n }\n if ((format = resolveValue(message, key)) === null) {\n // if null, resolve with object key path\n format = message[key]; // eslint-disable-line @typescript-eslint/no-explicit-any\n }\n // for vue-devtools timeline event\n if ( true && _intlify_shared__WEBPACK_IMPORTED_MODULE_2__.inBrowser) {\n const end = window.performance.now();\n const emitter = context.__v_emitter;\n if (emitter && start && format) {\n emitter.emit(\"message-resolve\" /* MESSAGE_RESOLVE */, {\n type: \"message-resolve\" /* MESSAGE_RESOLVE */,\n key,\n message: format,\n time: end - start,\n groupId: `${type}:${key}`\n });\n }\n if (startTag && endTag && _intlify_shared__WEBPACK_IMPORTED_MODULE_2__.mark && _intlify_shared__WEBPACK_IMPORTED_MODULE_2__.measure) {\n (0,_intlify_shared__WEBPACK_IMPORTED_MODULE_2__.mark)(endTag);\n (0,_intlify_shared__WEBPACK_IMPORTED_MODULE_2__.measure)('intlify message resolve', startTag, endTag);\n }\n }\n if ((0,_intlify_shared__WEBPACK_IMPORTED_MODULE_2__.isString)(format) || (0,_intlify_shared__WEBPACK_IMPORTED_MODULE_2__.isFunction)(format)) break;\n const missingRet = handleMissing(context,\n // eslint-disable-line @typescript-eslint/no-explicit-any\n key, targetLocale, missingWarn, type);\n if (missingRet !== key) {\n format = missingRet;\n }\n from = to;\n }\n return [format, targetLocale, message];\n}\nfunction compileMessageFormat(context, key, targetLocale, format, cacheBaseKey, errorDetector) {\n const {\n messageCompiler,\n warnHtmlMessage\n } = context;\n if (isMessageFunction(format)) {\n const msg = format;\n msg.locale = msg.locale || targetLocale;\n msg.key = msg.key || key;\n return msg;\n }\n if (messageCompiler == null) {\n const msg = () => format;\n msg.locale = targetLocale;\n msg.key = key;\n return msg;\n }\n // for vue-devtools timeline event\n let start = null;\n let startTag;\n let endTag;\n if ( true && _intlify_shared__WEBPACK_IMPORTED_MODULE_2__.inBrowser) {\n start = window.performance.now();\n startTag = 'intlify-message-compilation-start';\n endTag = 'intlify-message-compilation-end';\n _intlify_shared__WEBPACK_IMPORTED_MODULE_2__.mark && (0,_intlify_shared__WEBPACK_IMPORTED_MODULE_2__.mark)(startTag);\n }\n const msg = messageCompiler(format, getCompileOptions(context, targetLocale, cacheBaseKey, format, warnHtmlMessage, errorDetector));\n // for vue-devtools timeline event\n if ( true && _intlify_shared__WEBPACK_IMPORTED_MODULE_2__.inBrowser) {\n const end = window.performance.now();\n const emitter = context.__v_emitter;\n if (emitter && start) {\n emitter.emit(\"message-compilation\" /* MESSAGE_COMPILATION */, {\n type: \"message-compilation\" /* MESSAGE_COMPILATION */,\n message: format,\n time: end - start,\n groupId: `${'translate'}:${key}`\n });\n }\n if (startTag && endTag && _intlify_shared__WEBPACK_IMPORTED_MODULE_2__.mark && _intlify_shared__WEBPACK_IMPORTED_MODULE_2__.measure) {\n (0,_intlify_shared__WEBPACK_IMPORTED_MODULE_2__.mark)(endTag);\n (0,_intlify_shared__WEBPACK_IMPORTED_MODULE_2__.measure)('intlify message compilation', startTag, endTag);\n }\n }\n msg.locale = targetLocale;\n msg.key = key;\n msg.source = format;\n return msg;\n}\nfunction evaluateMessage(context, msg, msgCtx) {\n // for vue-devtools timeline event\n let start = null;\n let startTag;\n let endTag;\n if ( true && _intlify_shared__WEBPACK_IMPORTED_MODULE_2__.inBrowser) {\n start = window.performance.now();\n startTag = 'intlify-message-evaluation-start';\n endTag = 'intlify-message-evaluation-end';\n _intlify_shared__WEBPACK_IMPORTED_MODULE_2__.mark && (0,_intlify_shared__WEBPACK_IMPORTED_MODULE_2__.mark)(startTag);\n }\n const messaged = msg(msgCtx);\n // for vue-devtools timeline event\n if ( true && _intlify_shared__WEBPACK_IMPORTED_MODULE_2__.inBrowser) {\n const end = window.performance.now();\n const emitter = context.__v_emitter;\n if (emitter && start) {\n emitter.emit(\"message-evaluation\" /* MESSAGE_EVALUATION */, {\n type: \"message-evaluation\" /* MESSAGE_EVALUATION */,\n value: messaged,\n time: end - start,\n groupId: `${'translate'}:${msg.key}`\n });\n }\n if (startTag && endTag && _intlify_shared__WEBPACK_IMPORTED_MODULE_2__.mark && _intlify_shared__WEBPACK_IMPORTED_MODULE_2__.measure) {\n (0,_intlify_shared__WEBPACK_IMPORTED_MODULE_2__.mark)(endTag);\n (0,_intlify_shared__WEBPACK_IMPORTED_MODULE_2__.measure)('intlify message evaluation', startTag, endTag);\n }\n }\n return messaged;\n}\n/** @internal */\nfunction parseTranslateArgs(...args) {\n const [arg1, arg2, arg3] = args;\n const options = {};\n if (!(0,_intlify_shared__WEBPACK_IMPORTED_MODULE_2__.isString)(arg1) && !(0,_intlify_shared__WEBPACK_IMPORTED_MODULE_2__.isNumber)(arg1) && !isMessageFunction(arg1)) {\n throw createCoreError(CoreErrorCodes.INVALID_ARGUMENT);\n }\n // prettier-ignore\n const key = (0,_intlify_shared__WEBPACK_IMPORTED_MODULE_2__.isNumber)(arg1) ? String(arg1) : isMessageFunction(arg1) ? arg1 : arg1;\n if ((0,_intlify_shared__WEBPACK_IMPORTED_MODULE_2__.isNumber)(arg2)) {\n options.plural = arg2;\n } else if ((0,_intlify_shared__WEBPACK_IMPORTED_MODULE_2__.isString)(arg2)) {\n options.default = arg2;\n } else if ((0,_intlify_shared__WEBPACK_IMPORTED_MODULE_2__.isPlainObject)(arg2) && !(0,_intlify_shared__WEBPACK_IMPORTED_MODULE_2__.isEmptyObject)(arg2)) {\n options.named = arg2;\n } else if ((0,_intlify_shared__WEBPACK_IMPORTED_MODULE_2__.isArray)(arg2)) {\n options.list = arg2;\n }\n if ((0,_intlify_shared__WEBPACK_IMPORTED_MODULE_2__.isNumber)(arg3)) {\n options.plural = arg3;\n } else if ((0,_intlify_shared__WEBPACK_IMPORTED_MODULE_2__.isString)(arg3)) {\n options.default = arg3;\n } else if ((0,_intlify_shared__WEBPACK_IMPORTED_MODULE_2__.isPlainObject)(arg3)) {\n (0,_intlify_shared__WEBPACK_IMPORTED_MODULE_2__.assign)(options, arg3);\n }\n return [key, options];\n}\nfunction getCompileOptions(context, locale, key, source, warnHtmlMessage, errorDetector) {\n return {\n warnHtmlMessage,\n onError: err => {\n errorDetector && errorDetector(err);\n if (true) {\n const message = `Message compilation error: ${err.message}`;\n const codeFrame = err.location && (0,_intlify_shared__WEBPACK_IMPORTED_MODULE_2__.generateCodeFrame)(source, err.location.start.offset, err.location.end.offset);\n const emitter = context.__v_emitter;\n if (emitter) {\n emitter.emit(\"compile-error\" /* COMPILE_ERROR */, {\n message: source,\n error: err.message,\n start: err.location && err.location.start.offset,\n end: err.location && err.location.end.offset,\n groupId: `${'translate'}:${key}`\n });\n }\n console.error(codeFrame ? `${message}\\n${codeFrame}` : message);\n } else {}\n },\n onCacheKey: source => (0,_intlify_shared__WEBPACK_IMPORTED_MODULE_2__.generateFormatCacheKey)(locale, key, source)\n };\n}\nfunction getMessageContextOptions(context, locale, message, options) {\n const {\n modifiers,\n pluralRules,\n messageResolver: resolveValue,\n fallbackLocale,\n fallbackWarn,\n missingWarn,\n fallbackContext\n } = context;\n const resolveMessage = key => {\n let val = resolveValue(message, key);\n // fallback to root context\n if (val == null && fallbackContext) {\n const [,, message] = resolveMessageFormat(fallbackContext, key, locale, fallbackLocale, fallbackWarn, missingWarn);\n val = resolveValue(message, key);\n }\n if ((0,_intlify_shared__WEBPACK_IMPORTED_MODULE_2__.isString)(val)) {\n let occurred = false;\n const errorDetector = () => {\n occurred = true;\n };\n const msg = compileMessageFormat(context, key, locale, val, key, errorDetector);\n return !occurred ? msg : NOOP_MESSAGE_FUNCTION;\n } else if (isMessageFunction(val)) {\n return val;\n } else {\n // TODO: should be implemented warning message\n return NOOP_MESSAGE_FUNCTION;\n }\n };\n const ctxOptions = {\n locale,\n modifiers,\n pluralRules,\n messages: resolveMessage\n };\n if (context.processor) {\n ctxOptions.processor = context.processor;\n }\n if (options.list) {\n ctxOptions.list = options.list;\n }\n if (options.named) {\n ctxOptions.named = options.named;\n }\n if ((0,_intlify_shared__WEBPACK_IMPORTED_MODULE_2__.isNumber)(options.plural)) {\n ctxOptions.pluralIndex = options.plural;\n }\n return ctxOptions;\n}\nconst intlDefined = typeof Intl !== 'undefined';\nconst Availabilities = {\n dateTimeFormat: intlDefined && typeof Intl.DateTimeFormat !== 'undefined',\n numberFormat: intlDefined && typeof Intl.NumberFormat !== 'undefined'\n};\n\n// implementation of `datetime` function\nfunction datetime(context, ...args) {\n const {\n datetimeFormats,\n unresolving,\n fallbackLocale,\n onWarn,\n localeFallbacker\n } = context;\n const {\n __datetimeFormatters\n } = context;\n if ( true && !Availabilities.dateTimeFormat) {\n onWarn(getWarnMessage(CoreWarnCodes.CANNOT_FORMAT_DATE));\n return MISSING_RESOLVE_VALUE;\n }\n const [key, value, options, overrides] = parseDateTimeArgs(...args);\n const missingWarn = (0,_intlify_shared__WEBPACK_IMPORTED_MODULE_2__.isBoolean)(options.missingWarn) ? options.missingWarn : context.missingWarn;\n const fallbackWarn = (0,_intlify_shared__WEBPACK_IMPORTED_MODULE_2__.isBoolean)(options.fallbackWarn) ? options.fallbackWarn : context.fallbackWarn;\n const part = !!options.part;\n const locale = (0,_intlify_shared__WEBPACK_IMPORTED_MODULE_2__.isString)(options.locale) ? options.locale : context.locale;\n const locales = localeFallbacker(context,\n // eslint-disable-line @typescript-eslint/no-explicit-any\n fallbackLocale, locale);\n if (!(0,_intlify_shared__WEBPACK_IMPORTED_MODULE_2__.isString)(key) || key === '') {\n return new Intl.DateTimeFormat(locale, overrides).format(value);\n }\n // resolve format\n let datetimeFormat = {};\n let targetLocale;\n let format = null;\n let from = locale;\n let to = null;\n const type = 'datetime format';\n for (let i = 0; i < locales.length; i++) {\n targetLocale = to = locales[i];\n if ( true && locale !== targetLocale && isTranslateFallbackWarn(fallbackWarn, key)) {\n onWarn(getWarnMessage(CoreWarnCodes.FALLBACK_TO_DATE_FORMAT, {\n key,\n target: targetLocale\n }));\n }\n // for vue-devtools timeline event\n if ( true && locale !== targetLocale) {\n const emitter = context.__v_emitter;\n if (emitter) {\n emitter.emit(\"fallback\" /* FALBACK */, {\n type,\n key,\n from,\n to,\n groupId: `${type}:${key}`\n });\n }\n }\n datetimeFormat = datetimeFormats[targetLocale] || {};\n format = datetimeFormat[key];\n if ((0,_intlify_shared__WEBPACK_IMPORTED_MODULE_2__.isPlainObject)(format)) break;\n handleMissing(context, key, targetLocale, missingWarn, type); // eslint-disable-line @typescript-eslint/no-explicit-any\n from = to;\n }\n // checking format and target locale\n if (!(0,_intlify_shared__WEBPACK_IMPORTED_MODULE_2__.isPlainObject)(format) || !(0,_intlify_shared__WEBPACK_IMPORTED_MODULE_2__.isString)(targetLocale)) {\n return unresolving ? NOT_REOSLVED : key;\n }\n let id = `${targetLocale}__${key}`;\n if (!(0,_intlify_shared__WEBPACK_IMPORTED_MODULE_2__.isEmptyObject)(overrides)) {\n id = `${id}__${JSON.stringify(overrides)}`;\n }\n let formatter = __datetimeFormatters.get(id);\n if (!formatter) {\n formatter = new Intl.DateTimeFormat(targetLocale, (0,_intlify_shared__WEBPACK_IMPORTED_MODULE_2__.assign)({}, format, overrides));\n __datetimeFormatters.set(id, formatter);\n }\n return !part ? formatter.format(value) : formatter.formatToParts(value);\n}\n/** @internal */\nconst DATETIME_FORMAT_OPTIONS_KEYS = ['localeMatcher', 'weekday', 'era', 'year', 'month', 'day', 'hour', 'minute', 'second', 'timeZoneName', 'formatMatcher', 'hour12', 'timeZone', 'dateStyle', 'timeStyle', 'calendar', 'dayPeriod', 'numberingSystem', 'hourCycle', 'fractionalSecondDigits'];\n/** @internal */\nfunction parseDateTimeArgs(...args) {\n const [arg1, arg2, arg3, arg4] = args;\n const options = {};\n let overrides = {};\n let value;\n if ((0,_intlify_shared__WEBPACK_IMPORTED_MODULE_2__.isString)(arg1)) {\n // Only allow ISO strings - other date formats are often supported,\n // but may cause different results in different browsers.\n const matches = arg1.match(/(\\d{4}-\\d{2}-\\d{2})(T|\\s)?(.*)/);\n if (!matches) {\n throw createCoreError(CoreErrorCodes.INVALID_ISO_DATE_ARGUMENT);\n }\n // Some browsers can not parse the iso datetime separated by space,\n // this is a compromise solution by replace the 'T'/' ' with 'T'\n const dateTime = matches[3] ? matches[3].trim().startsWith('T') ? `${matches[1].trim()}${matches[3].trim()}` : `${matches[1].trim()}T${matches[3].trim()}` : matches[1].trim();\n value = new Date(dateTime);\n try {\n // This will fail if the date is not valid\n value.toISOString();\n } catch (e) {\n throw createCoreError(CoreErrorCodes.INVALID_ISO_DATE_ARGUMENT);\n }\n } else if ((0,_intlify_shared__WEBPACK_IMPORTED_MODULE_2__.isDate)(arg1)) {\n if (isNaN(arg1.getTime())) {\n throw createCoreError(CoreErrorCodes.INVALID_DATE_ARGUMENT);\n }\n value = arg1;\n } else if ((0,_intlify_shared__WEBPACK_IMPORTED_MODULE_2__.isNumber)(arg1)) {\n value = arg1;\n } else {\n throw createCoreError(CoreErrorCodes.INVALID_ARGUMENT);\n }\n if ((0,_intlify_shared__WEBPACK_IMPORTED_MODULE_2__.isString)(arg2)) {\n options.key = arg2;\n } else if ((0,_intlify_shared__WEBPACK_IMPORTED_MODULE_2__.isPlainObject)(arg2)) {\n Object.keys(arg2).forEach(key => {\n if (DATETIME_FORMAT_OPTIONS_KEYS.includes(key)) {\n overrides[key] = arg2[key];\n } else {\n options[key] = arg2[key];\n }\n });\n }\n if ((0,_intlify_shared__WEBPACK_IMPORTED_MODULE_2__.isString)(arg3)) {\n options.locale = arg3;\n } else if ((0,_intlify_shared__WEBPACK_IMPORTED_MODULE_2__.isPlainObject)(arg3)) {\n overrides = arg3;\n }\n if ((0,_intlify_shared__WEBPACK_IMPORTED_MODULE_2__.isPlainObject)(arg4)) {\n overrides = arg4;\n }\n return [options.key || '', value, options, overrides];\n}\n/** @internal */\nfunction clearDateTimeFormat(ctx, locale, format) {\n const context = ctx;\n for (const key in format) {\n const id = `${locale}__${key}`;\n if (!context.__datetimeFormatters.has(id)) {\n continue;\n }\n context.__datetimeFormatters.delete(id);\n }\n}\n\n// implementation of `number` function\nfunction number(context, ...args) {\n const {\n numberFormats,\n unresolving,\n fallbackLocale,\n onWarn,\n localeFallbacker\n } = context;\n const {\n __numberFormatters\n } = context;\n if ( true && !Availabilities.numberFormat) {\n onWarn(getWarnMessage(CoreWarnCodes.CANNOT_FORMAT_NUMBER));\n return MISSING_RESOLVE_VALUE;\n }\n const [key, value, options, overrides] = parseNumberArgs(...args);\n const missingWarn = (0,_intlify_shared__WEBPACK_IMPORTED_MODULE_2__.isBoolean)(options.missingWarn) ? options.missingWarn : context.missingWarn;\n const fallbackWarn = (0,_intlify_shared__WEBPACK_IMPORTED_MODULE_2__.isBoolean)(options.fallbackWarn) ? options.fallbackWarn : context.fallbackWarn;\n const part = !!options.part;\n const locale = (0,_intlify_shared__WEBPACK_IMPORTED_MODULE_2__.isString)(options.locale) ? options.locale : context.locale;\n const locales = localeFallbacker(context,\n // eslint-disable-line @typescript-eslint/no-explicit-any\n fallbackLocale, locale);\n if (!(0,_intlify_shared__WEBPACK_IMPORTED_MODULE_2__.isString)(key) || key === '') {\n return new Intl.NumberFormat(locale, overrides).format(value);\n }\n // resolve format\n let numberFormat = {};\n let targetLocale;\n let format = null;\n let from = locale;\n let to = null;\n const type = 'number format';\n for (let i = 0; i < locales.length; i++) {\n targetLocale = to = locales[i];\n if ( true && locale !== targetLocale && isTranslateFallbackWarn(fallbackWarn, key)) {\n onWarn(getWarnMessage(CoreWarnCodes.FALLBACK_TO_NUMBER_FORMAT, {\n key,\n target: targetLocale\n }));\n }\n // for vue-devtools timeline event\n if ( true && locale !== targetLocale) {\n const emitter = context.__v_emitter;\n if (emitter) {\n emitter.emit(\"fallback\" /* FALBACK */, {\n type,\n key,\n from,\n to,\n groupId: `${type}:${key}`\n });\n }\n }\n numberFormat = numberFormats[targetLocale] || {};\n format = numberFormat[key];\n if ((0,_intlify_shared__WEBPACK_IMPORTED_MODULE_2__.isPlainObject)(format)) break;\n handleMissing(context, key, targetLocale, missingWarn, type); // eslint-disable-line @typescript-eslint/no-explicit-any\n from = to;\n }\n // checking format and target locale\n if (!(0,_intlify_shared__WEBPACK_IMPORTED_MODULE_2__.isPlainObject)(format) || !(0,_intlify_shared__WEBPACK_IMPORTED_MODULE_2__.isString)(targetLocale)) {\n return unresolving ? NOT_REOSLVED : key;\n }\n let id = `${targetLocale}__${key}`;\n if (!(0,_intlify_shared__WEBPACK_IMPORTED_MODULE_2__.isEmptyObject)(overrides)) {\n id = `${id}__${JSON.stringify(overrides)}`;\n }\n let formatter = __numberFormatters.get(id);\n if (!formatter) {\n formatter = new Intl.NumberFormat(targetLocale, (0,_intlify_shared__WEBPACK_IMPORTED_MODULE_2__.assign)({}, format, overrides));\n __numberFormatters.set(id, formatter);\n }\n return !part ? formatter.format(value) : formatter.formatToParts(value);\n}\n/** @internal */\nconst NUMBER_FORMAT_OPTIONS_KEYS = ['localeMatcher', 'style', 'currency', 'currencyDisplay', 'currencySign', 'useGrouping', 'minimumIntegerDigits', 'minimumFractionDigits', 'maximumFractionDigits', 'minimumSignificantDigits', 'maximumSignificantDigits', 'compactDisplay', 'notation', 'signDisplay', 'unit', 'unitDisplay', 'roundingMode', 'roundingPriority', 'roundingIncrement', 'trailingZeroDisplay'];\n/** @internal */\nfunction parseNumberArgs(...args) {\n const [arg1, arg2, arg3, arg4] = args;\n const options = {};\n let overrides = {};\n if (!(0,_intlify_shared__WEBPACK_IMPORTED_MODULE_2__.isNumber)(arg1)) {\n throw createCoreError(CoreErrorCodes.INVALID_ARGUMENT);\n }\n const value = arg1;\n if ((0,_intlify_shared__WEBPACK_IMPORTED_MODULE_2__.isString)(arg2)) {\n options.key = arg2;\n } else if ((0,_intlify_shared__WEBPACK_IMPORTED_MODULE_2__.isPlainObject)(arg2)) {\n Object.keys(arg2).forEach(key => {\n if (NUMBER_FORMAT_OPTIONS_KEYS.includes(key)) {\n overrides[key] = arg2[key];\n } else {\n options[key] = arg2[key];\n }\n });\n }\n if ((0,_intlify_shared__WEBPACK_IMPORTED_MODULE_2__.isString)(arg3)) {\n options.locale = arg3;\n } else if ((0,_intlify_shared__WEBPACK_IMPORTED_MODULE_2__.isPlainObject)(arg3)) {\n overrides = arg3;\n }\n if ((0,_intlify_shared__WEBPACK_IMPORTED_MODULE_2__.isPlainObject)(arg4)) {\n overrides = arg4;\n }\n return [options.key || '', value, options, overrides];\n}\n/** @internal */\nfunction clearNumberFormat(ctx, locale, format) {\n const context = ctx;\n for (const key in format) {\n const id = `${locale}__${key}`;\n if (!context.__numberFormatters.has(id)) {\n continue;\n }\n context.__numberFormatters.delete(id);\n }\n}\n\n// TODO: we could not exports for Node native ES Moudles yet...\n{\n if (typeof __INTLIFY_PROD_DEVTOOLS__ !== 'boolean') {\n (0,_intlify_shared__WEBPACK_IMPORTED_MODULE_2__.getGlobalThis)().__INTLIFY_PROD_DEVTOOLS__ = false;\n }\n}\n\n\n//# sourceURL=webpack://jandl/./node_modules/@intlify/core-base/dist/core-base.esm-bundler.js?"); +eval("{__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ AST_NODE_PROPS_KEYS: function() { return /* binding */ AST_NODE_PROPS_KEYS; },\n/* harmony export */ CompileErrorCodes: function() { return /* reexport safe */ _intlify_message_compiler__WEBPACK_IMPORTED_MODULE_7__.CompileErrorCodes; },\n/* harmony export */ CoreErrorCodes: function() { return /* binding */ CoreErrorCodes; },\n/* harmony export */ CoreWarnCodes: function() { return /* binding */ CoreWarnCodes; },\n/* harmony export */ DATETIME_FORMAT_OPTIONS_KEYS: function() { return /* binding */ DATETIME_FORMAT_OPTIONS_KEYS; },\n/* harmony export */ DEFAULT_LOCALE: function() { return /* binding */ DEFAULT_LOCALE; },\n/* harmony export */ DEFAULT_MESSAGE_DATA_TYPE: function() { return /* binding */ DEFAULT_MESSAGE_DATA_TYPE; },\n/* harmony export */ MISSING_RESOLVE_VALUE: function() { return /* binding */ MISSING_RESOLVE_VALUE; },\n/* harmony export */ NOT_REOSLVED: function() { return /* binding */ NOT_REOSLVED; },\n/* harmony export */ NUMBER_FORMAT_OPTIONS_KEYS: function() { return /* binding */ NUMBER_FORMAT_OPTIONS_KEYS; },\n/* harmony export */ VERSION: function() { return /* binding */ VERSION; },\n/* harmony export */ clearCompileCache: function() { return /* binding */ clearCompileCache; },\n/* harmony export */ clearDateTimeFormat: function() { return /* binding */ clearDateTimeFormat; },\n/* harmony export */ clearNumberFormat: function() { return /* binding */ clearNumberFormat; },\n/* harmony export */ compile: function() { return /* binding */ compile; },\n/* harmony export */ compileToFunction: function() { return /* binding */ compileToFunction; },\n/* harmony export */ createCompileError: function() { return /* reexport safe */ _intlify_message_compiler__WEBPACK_IMPORTED_MODULE_7__.createCompileError; },\n/* harmony export */ createCoreContext: function() { return /* binding */ createCoreContext; },\n/* harmony export */ createCoreError: function() { return /* binding */ createCoreError; },\n/* harmony export */ createMessageContext: function() { return /* binding */ createMessageContext; },\n/* harmony export */ datetime: function() { return /* binding */ datetime; },\n/* harmony export */ fallbackWithLocaleChain: function() { return /* binding */ fallbackWithLocaleChain; },\n/* harmony export */ fallbackWithSimple: function() { return /* binding */ fallbackWithSimple; },\n/* harmony export */ getAdditionalMeta: function() { return /* binding */ getAdditionalMeta; },\n/* harmony export */ getDevToolsHook: function() { return /* binding */ getDevToolsHook; },\n/* harmony export */ getFallbackContext: function() { return /* binding */ getFallbackContext; },\n/* harmony export */ getLocale: function() { return /* binding */ getLocale; },\n/* harmony export */ getWarnMessage: function() { return /* binding */ getWarnMessage; },\n/* harmony export */ handleMissing: function() { return /* binding */ handleMissing; },\n/* harmony export */ initI18nDevTools: function() { return /* binding */ initI18nDevTools; },\n/* harmony export */ isAlmostSameLocale: function() { return /* binding */ isAlmostSameLocale; },\n/* harmony export */ isImplicitFallback: function() { return /* binding */ isImplicitFallback; },\n/* harmony export */ isMessageAST: function() { return /* binding */ isMessageAST; },\n/* harmony export */ isMessageFunction: function() { return /* binding */ isMessageFunction; },\n/* harmony export */ isTranslateFallbackWarn: function() { return /* binding */ isTranslateFallbackWarn; },\n/* harmony export */ isTranslateMissingWarn: function() { return /* binding */ isTranslateMissingWarn; },\n/* harmony export */ number: function() { return /* binding */ number; },\n/* harmony export */ parse: function() { return /* binding */ parse; },\n/* harmony export */ parseDateTimeArgs: function() { return /* binding */ parseDateTimeArgs; },\n/* harmony export */ parseNumberArgs: function() { return /* binding */ parseNumberArgs; },\n/* harmony export */ parseTranslateArgs: function() { return /* binding */ parseTranslateArgs; },\n/* harmony export */ registerLocaleFallbacker: function() { return /* binding */ registerLocaleFallbacker; },\n/* harmony export */ registerMessageCompiler: function() { return /* binding */ registerMessageCompiler; },\n/* harmony export */ registerMessageResolver: function() { return /* binding */ registerMessageResolver; },\n/* harmony export */ resolveLocale: function() { return /* binding */ resolveLocale; },\n/* harmony export */ resolveValue: function() { return /* binding */ resolveValue; },\n/* harmony export */ resolveWithKeyValue: function() { return /* binding */ resolveWithKeyValue; },\n/* harmony export */ setAdditionalMeta: function() { return /* binding */ setAdditionalMeta; },\n/* harmony export */ setDevToolsHook: function() { return /* binding */ setDevToolsHook; },\n/* harmony export */ setFallbackContext: function() { return /* binding */ setFallbackContext; },\n/* harmony export */ translate: function() { return /* binding */ translate; },\n/* harmony export */ translateDevTools: function() { return /* binding */ translateDevTools; },\n/* harmony export */ updateFallbackLocale: function() { return /* binding */ updateFallbackLocale; }\n/* harmony export */ });\n/* harmony import */ var core_js_modules_es_array_push_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! core-js/modules/es.array.push.js */ \"./node_modules/core-js/modules/es.array.push.js\");\n/* harmony import */ var core_js_modules_es_json_stringify_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! core-js/modules/es.json.stringify.js */ \"./node_modules/core-js/modules/es.json.stringify.js\");\n/* harmony import */ var core_js_modules_esnext_iterator_constructor_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! core-js/modules/esnext.iterator.constructor.js */ \"./node_modules/core-js/modules/esnext.iterator.constructor.js\");\n/* harmony import */ var core_js_modules_esnext_iterator_for_each_js__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! core-js/modules/esnext.iterator.for-each.js */ \"./node_modules/core-js/modules/esnext.iterator.for-each.js\");\n/* harmony import */ var core_js_modules_esnext_iterator_map_js__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! core-js/modules/esnext.iterator.map.js */ \"./node_modules/core-js/modules/esnext.iterator.map.js\");\n/* harmony import */ var core_js_modules_esnext_iterator_reduce_js__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! core-js/modules/esnext.iterator.reduce.js */ \"./node_modules/core-js/modules/esnext.iterator.reduce.js\");\n/* harmony import */ var _intlify_shared__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! @intlify/shared */ \"./node_modules/@intlify/shared/dist/shared.mjs\");\n/* harmony import */ var _intlify_message_compiler__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! @intlify/message-compiler */ \"./node_modules/@intlify/message-compiler/dist/message-compiler.esm-browser.js\");\n/* provided dependency */ var console = __webpack_require__(/*! ./node_modules/console-browserify/index.js */ \"./node_modules/console-browserify/index.js\");\n\n\n\n\n\n\n/*!\n * core-base v9.14.5\n * (c) 2025 kazuya kawaguchi\n * Released under the MIT License.\n */\n\n\n\n\n/**\n * This is only called in esm-bundler builds.\n * istanbul-ignore-next\n */\nfunction initFeatureFlags() {\n if (typeof __INTLIFY_PROD_DEVTOOLS__ !== 'boolean') {\n (0,_intlify_shared__WEBPACK_IMPORTED_MODULE_6__.getGlobalThis)().__INTLIFY_PROD_DEVTOOLS__ = false;\n }\n if (typeof __INTLIFY_JIT_COMPILATION__ !== 'boolean') {\n (0,_intlify_shared__WEBPACK_IMPORTED_MODULE_6__.getGlobalThis)().__INTLIFY_JIT_COMPILATION__ = false;\n }\n if (typeof __INTLIFY_DROP_MESSAGE_COMPILER__ !== 'boolean') {\n (0,_intlify_shared__WEBPACK_IMPORTED_MODULE_6__.getGlobalThis)().__INTLIFY_DROP_MESSAGE_COMPILER__ = false;\n }\n}\nfunction isMessageAST(val) {\n return (0,_intlify_shared__WEBPACK_IMPORTED_MODULE_6__.isObject)(val) && resolveType(val) === 0 && ((0,_intlify_shared__WEBPACK_IMPORTED_MODULE_6__.hasOwn)(val, 'b') || (0,_intlify_shared__WEBPACK_IMPORTED_MODULE_6__.hasOwn)(val, 'body'));\n}\nconst PROPS_BODY = ['b', 'body'];\nfunction resolveBody(node) {\n return resolveProps(node, PROPS_BODY);\n}\nconst PROPS_CASES = ['c', 'cases'];\nfunction resolveCases(node) {\n return resolveProps(node, PROPS_CASES, []);\n}\nconst PROPS_STATIC = ['s', 'static'];\nfunction resolveStatic(node) {\n return resolveProps(node, PROPS_STATIC);\n}\nconst PROPS_ITEMS = ['i', 'items'];\nfunction resolveItems(node) {\n return resolveProps(node, PROPS_ITEMS, []);\n}\nconst PROPS_TYPE = ['t', 'type'];\nfunction resolveType(node) {\n return resolveProps(node, PROPS_TYPE);\n}\nconst PROPS_VALUE = ['v', 'value'];\nfunction resolveValue$1(node, type) {\n const resolved = resolveProps(node, PROPS_VALUE);\n if (resolved != null) {\n return resolved;\n } else {\n throw createUnhandleNodeError(type);\n }\n}\nconst PROPS_MODIFIER = ['m', 'modifier'];\nfunction resolveLinkedModifier(node) {\n return resolveProps(node, PROPS_MODIFIER);\n}\nconst PROPS_KEY = ['k', 'key'];\nfunction resolveLinkedKey(node) {\n const resolved = resolveProps(node, PROPS_KEY);\n if (resolved) {\n return resolved;\n } else {\n throw createUnhandleNodeError(6 /* NodeTypes.Linked */);\n }\n}\nfunction resolveProps(node, props, defaultValue) {\n for (let i = 0; i < props.length; i++) {\n const prop = props[i];\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n if ((0,_intlify_shared__WEBPACK_IMPORTED_MODULE_6__.hasOwn)(node, prop) && node[prop] != null) {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n return node[prop];\n }\n }\n return defaultValue;\n}\nconst AST_NODE_PROPS_KEYS = [...PROPS_BODY, ...PROPS_CASES, ...PROPS_STATIC, ...PROPS_ITEMS, ...PROPS_KEY, ...PROPS_MODIFIER, ...PROPS_VALUE, ...PROPS_TYPE];\nfunction createUnhandleNodeError(type) {\n return new Error(`unhandled node type: ${type}`);\n}\nconst pathStateMachine = [];\npathStateMachine[0 /* States.BEFORE_PATH */] = {\n [\"w\" /* PathCharTypes.WORKSPACE */]: [0 /* States.BEFORE_PATH */],\n [\"i\" /* PathCharTypes.IDENT */]: [3 /* States.IN_IDENT */, 0 /* Actions.APPEND */],\n [\"[\" /* PathCharTypes.LEFT_BRACKET */]: [4 /* States.IN_SUB_PATH */],\n [\"o\" /* PathCharTypes.END_OF_FAIL */]: [7 /* States.AFTER_PATH */]\n};\npathStateMachine[1 /* States.IN_PATH */] = {\n [\"w\" /* PathCharTypes.WORKSPACE */]: [1 /* States.IN_PATH */],\n [\".\" /* PathCharTypes.DOT */]: [2 /* States.BEFORE_IDENT */],\n [\"[\" /* PathCharTypes.LEFT_BRACKET */]: [4 /* States.IN_SUB_PATH */],\n [\"o\" /* PathCharTypes.END_OF_FAIL */]: [7 /* States.AFTER_PATH */]\n};\npathStateMachine[2 /* States.BEFORE_IDENT */] = {\n [\"w\" /* PathCharTypes.WORKSPACE */]: [2 /* States.BEFORE_IDENT */],\n [\"i\" /* PathCharTypes.IDENT */]: [3 /* States.IN_IDENT */, 0 /* Actions.APPEND */],\n [\"0\" /* PathCharTypes.ZERO */]: [3 /* States.IN_IDENT */, 0 /* Actions.APPEND */]\n};\npathStateMachine[3 /* States.IN_IDENT */] = {\n [\"i\" /* PathCharTypes.IDENT */]: [3 /* States.IN_IDENT */, 0 /* Actions.APPEND */],\n [\"0\" /* PathCharTypes.ZERO */]: [3 /* States.IN_IDENT */, 0 /* Actions.APPEND */],\n [\"w\" /* PathCharTypes.WORKSPACE */]: [1 /* States.IN_PATH */, 1 /* Actions.PUSH */],\n [\".\" /* PathCharTypes.DOT */]: [2 /* States.BEFORE_IDENT */, 1 /* Actions.PUSH */],\n [\"[\" /* PathCharTypes.LEFT_BRACKET */]: [4 /* States.IN_SUB_PATH */, 1 /* Actions.PUSH */],\n [\"o\" /* PathCharTypes.END_OF_FAIL */]: [7 /* States.AFTER_PATH */, 1 /* Actions.PUSH */]\n};\npathStateMachine[4 /* States.IN_SUB_PATH */] = {\n [\"'\" /* PathCharTypes.SINGLE_QUOTE */]: [5 /* States.IN_SINGLE_QUOTE */, 0 /* Actions.APPEND */],\n [\"\\\"\" /* PathCharTypes.DOUBLE_QUOTE */]: [6 /* States.IN_DOUBLE_QUOTE */, 0 /* Actions.APPEND */],\n [\"[\" /* PathCharTypes.LEFT_BRACKET */]: [4 /* States.IN_SUB_PATH */, 2 /* Actions.INC_SUB_PATH_DEPTH */],\n [\"]\" /* PathCharTypes.RIGHT_BRACKET */]: [1 /* States.IN_PATH */, 3 /* Actions.PUSH_SUB_PATH */],\n [\"o\" /* PathCharTypes.END_OF_FAIL */]: 8 /* States.ERROR */,\n [\"l\" /* PathCharTypes.ELSE */]: [4 /* States.IN_SUB_PATH */, 0 /* Actions.APPEND */]\n};\npathStateMachine[5 /* States.IN_SINGLE_QUOTE */] = {\n [\"'\" /* PathCharTypes.SINGLE_QUOTE */]: [4 /* States.IN_SUB_PATH */, 0 /* Actions.APPEND */],\n [\"o\" /* PathCharTypes.END_OF_FAIL */]: 8 /* States.ERROR */,\n [\"l\" /* PathCharTypes.ELSE */]: [5 /* States.IN_SINGLE_QUOTE */, 0 /* Actions.APPEND */]\n};\npathStateMachine[6 /* States.IN_DOUBLE_QUOTE */] = {\n [\"\\\"\" /* PathCharTypes.DOUBLE_QUOTE */]: [4 /* States.IN_SUB_PATH */, 0 /* Actions.APPEND */],\n [\"o\" /* PathCharTypes.END_OF_FAIL */]: 8 /* States.ERROR */,\n [\"l\" /* PathCharTypes.ELSE */]: [6 /* States.IN_DOUBLE_QUOTE */, 0 /* Actions.APPEND */]\n};\n/**\n * Check if an expression is a literal value.\n */\nconst literalValueRE = /^\\s?(?:true|false|-?[\\d.]+|'[^']*'|\"[^\"]*\")\\s?$/;\nfunction isLiteral(exp) {\n return literalValueRE.test(exp);\n}\n/**\n * Strip quotes from a string\n */\nfunction stripQuotes(str) {\n const a = str.charCodeAt(0);\n const b = str.charCodeAt(str.length - 1);\n return a === b && (a === 0x22 || a === 0x27) ? str.slice(1, -1) : str;\n}\n/**\n * Determine the type of a character in a keypath.\n */\nfunction getPathCharType(ch) {\n if (ch === undefined || ch === null) {\n return \"o\" /* PathCharTypes.END_OF_FAIL */;\n }\n const code = ch.charCodeAt(0);\n switch (code) {\n case 0x5b: // [\n case 0x5d: // ]\n case 0x2e: // .\n case 0x22: // \"\n case 0x27:\n // '\n return ch;\n case 0x5f: // _\n case 0x24: // $\n case 0x2d:\n // -\n return \"i\" /* PathCharTypes.IDENT */;\n case 0x09: // Tab (HT)\n case 0x0a: // Newline (LF)\n case 0x0d: // Return (CR)\n case 0xa0: // No-break space (NBSP)\n case 0xfeff: // Byte Order Mark (BOM)\n case 0x2028: // Line Separator (LS)\n case 0x2029:\n // Paragraph Separator (PS)\n return \"w\" /* PathCharTypes.WORKSPACE */;\n }\n return \"i\" /* PathCharTypes.IDENT */;\n}\n/**\n * Format a subPath, return its plain form if it is\n * a literal string or number. Otherwise prepend the\n * dynamic indicator (*).\n */\nfunction formatSubPath(path) {\n const trimmed = path.trim();\n // invalid leading 0\n if (path.charAt(0) === '0' && isNaN(parseInt(path))) {\n return false;\n }\n return isLiteral(trimmed) ? stripQuotes(trimmed) : \"*\" /* PathCharTypes.ASTARISK */ + trimmed;\n}\n/**\n * Parse a string path into an array of segments\n */\nfunction parse(path) {\n const keys = [];\n let index = -1;\n let mode = 0 /* States.BEFORE_PATH */;\n let subPathDepth = 0;\n let c;\n let key; // eslint-disable-line\n let newChar;\n let type;\n let transition;\n let action;\n let typeMap;\n const actions = [];\n actions[0 /* Actions.APPEND */] = () => {\n if (key === undefined) {\n key = newChar;\n } else {\n key += newChar;\n }\n };\n actions[1 /* Actions.PUSH */] = () => {\n if (key !== undefined) {\n keys.push(key);\n key = undefined;\n }\n };\n actions[2 /* Actions.INC_SUB_PATH_DEPTH */] = () => {\n actions[0 /* Actions.APPEND */]();\n subPathDepth++;\n };\n actions[3 /* Actions.PUSH_SUB_PATH */] = () => {\n if (subPathDepth > 0) {\n subPathDepth--;\n mode = 4 /* States.IN_SUB_PATH */;\n actions[0 /* Actions.APPEND */]();\n } else {\n subPathDepth = 0;\n if (key === undefined) {\n return false;\n }\n key = formatSubPath(key);\n if (key === false) {\n return false;\n } else {\n actions[1 /* Actions.PUSH */]();\n }\n }\n };\n function maybeUnescapeQuote() {\n const nextChar = path[index + 1];\n if (mode === 5 /* States.IN_SINGLE_QUOTE */ && nextChar === \"'\" /* PathCharTypes.SINGLE_QUOTE */ || mode === 6 /* States.IN_DOUBLE_QUOTE */ && nextChar === \"\\\"\" /* PathCharTypes.DOUBLE_QUOTE */) {\n index++;\n newChar = '\\\\' + nextChar;\n actions[0 /* Actions.APPEND */]();\n return true;\n }\n }\n while (mode !== null) {\n index++;\n c = path[index];\n if (c === '\\\\' && maybeUnescapeQuote()) {\n continue;\n }\n type = getPathCharType(c);\n typeMap = pathStateMachine[mode];\n transition = typeMap[type] || typeMap[\"l\" /* PathCharTypes.ELSE */] || 8 /* States.ERROR */;\n // check parse error\n if (transition === 8 /* States.ERROR */) {\n return;\n }\n mode = transition[0];\n if (transition[1] !== undefined) {\n action = actions[transition[1]];\n if (action) {\n newChar = c;\n if (action() === false) {\n return;\n }\n }\n }\n // check parse finish\n if (mode === 7 /* States.AFTER_PATH */) {\n return keys;\n }\n }\n}\n// path token cache\nconst cache = new Map();\n/**\n * key-value message resolver\n *\n * @remarks\n * Resolves messages with the key-value structure. Note that messages with a hierarchical structure such as objects cannot be resolved\n *\n * @param obj - A target object to be resolved with path\n * @param path - A {@link Path | path} to resolve the value of message\n *\n * @returns A resolved {@link PathValue | path value}\n *\n * @VueI18nGeneral\n */\nfunction resolveWithKeyValue(obj, path) {\n return (0,_intlify_shared__WEBPACK_IMPORTED_MODULE_6__.isObject)(obj) ? obj[path] : null;\n}\n/**\n * message resolver\n *\n * @remarks\n * Resolves messages. messages with a hierarchical structure such as objects can be resolved. This resolver is used in VueI18n as default.\n *\n * @param obj - A target object to be resolved with path\n * @param path - A {@link Path | path} to resolve the value of message\n *\n * @returns A resolved {@link PathValue | path value}\n *\n * @VueI18nGeneral\n */\nfunction resolveValue(obj, path) {\n // check object\n if (!(0,_intlify_shared__WEBPACK_IMPORTED_MODULE_6__.isObject)(obj)) {\n return null;\n }\n // parse path\n let hit = cache.get(path);\n if (!hit) {\n hit = parse(path);\n if (hit) {\n cache.set(path, hit);\n }\n }\n // check hit\n if (!hit) {\n return null;\n }\n // resolve path value\n const len = hit.length;\n let last = obj;\n let i = 0;\n while (i < len) {\n const key = hit[i];\n /**\n * NOTE:\n * if `key` is intlify message format AST node key and `last` is intlify message format AST, skip it.\n * because the AST node is not a key-value structure.\n */\n if (AST_NODE_PROPS_KEYS.includes(key) && isMessageAST(last)) {\n return null;\n }\n const val = last[key];\n if (val === undefined) {\n return null;\n }\n if ((0,_intlify_shared__WEBPACK_IMPORTED_MODULE_6__.isFunction)(last)) {\n return null;\n }\n last = val;\n i++;\n }\n return last;\n}\nconst DEFAULT_MODIFIER = str => str;\nconst DEFAULT_MESSAGE = ctx => ''; // eslint-disable-line\nconst DEFAULT_MESSAGE_DATA_TYPE = 'text';\nconst DEFAULT_NORMALIZE = values => values.length === 0 ? '' : (0,_intlify_shared__WEBPACK_IMPORTED_MODULE_6__.join)(values);\nconst DEFAULT_INTERPOLATE = _intlify_shared__WEBPACK_IMPORTED_MODULE_6__.toDisplayString;\nfunction pluralDefault(choice, choicesLength) {\n choice = Math.abs(choice);\n if (choicesLength === 2) {\n // prettier-ignore\n return choice ? choice > 1 ? 1 : 0 : 1;\n }\n return choice ? Math.min(choice, 2) : 0;\n}\nfunction getPluralIndex(options) {\n // prettier-ignore\n const index = (0,_intlify_shared__WEBPACK_IMPORTED_MODULE_6__.isNumber)(options.pluralIndex) ? options.pluralIndex : -1;\n // prettier-ignore\n return options.named && ((0,_intlify_shared__WEBPACK_IMPORTED_MODULE_6__.isNumber)(options.named.count) || (0,_intlify_shared__WEBPACK_IMPORTED_MODULE_6__.isNumber)(options.named.n)) ? (0,_intlify_shared__WEBPACK_IMPORTED_MODULE_6__.isNumber)(options.named.count) ? options.named.count : (0,_intlify_shared__WEBPACK_IMPORTED_MODULE_6__.isNumber)(options.named.n) ? options.named.n : index : index;\n}\nfunction normalizeNamed(pluralIndex, props) {\n if (!props.count) {\n props.count = pluralIndex;\n }\n if (!props.n) {\n props.n = pluralIndex;\n }\n}\nfunction createMessageContext(options = {}) {\n const locale = options.locale;\n const pluralIndex = getPluralIndex(options);\n const pluralRule = (0,_intlify_shared__WEBPACK_IMPORTED_MODULE_6__.isObject)(options.pluralRules) && (0,_intlify_shared__WEBPACK_IMPORTED_MODULE_6__.isString)(locale) && (0,_intlify_shared__WEBPACK_IMPORTED_MODULE_6__.isFunction)(options.pluralRules[locale]) ? options.pluralRules[locale] : pluralDefault;\n const orgPluralRule = (0,_intlify_shared__WEBPACK_IMPORTED_MODULE_6__.isObject)(options.pluralRules) && (0,_intlify_shared__WEBPACK_IMPORTED_MODULE_6__.isString)(locale) && (0,_intlify_shared__WEBPACK_IMPORTED_MODULE_6__.isFunction)(options.pluralRules[locale]) ? pluralDefault : undefined;\n const plural = messages => {\n return messages[pluralRule(pluralIndex, messages.length, orgPluralRule)];\n };\n const _list = options.list || [];\n const list = index => _list[index];\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n const _named = options.named || (0,_intlify_shared__WEBPACK_IMPORTED_MODULE_6__.create)();\n (0,_intlify_shared__WEBPACK_IMPORTED_MODULE_6__.isNumber)(options.pluralIndex) && normalizeNamed(pluralIndex, _named);\n const named = key => _named[key];\n function message(key) {\n // prettier-ignore\n const msg = (0,_intlify_shared__WEBPACK_IMPORTED_MODULE_6__.isFunction)(options.messages) ? options.messages(key) : (0,_intlify_shared__WEBPACK_IMPORTED_MODULE_6__.isObject)(options.messages) ? options.messages[key] : false;\n return !msg ? options.parent ? options.parent.message(key) // resolve from parent messages\n : DEFAULT_MESSAGE : msg;\n }\n const _modifier = name => options.modifiers ? options.modifiers[name] : DEFAULT_MODIFIER;\n const normalize = (0,_intlify_shared__WEBPACK_IMPORTED_MODULE_6__.isPlainObject)(options.processor) && (0,_intlify_shared__WEBPACK_IMPORTED_MODULE_6__.isFunction)(options.processor.normalize) ? options.processor.normalize : DEFAULT_NORMALIZE;\n const interpolate = (0,_intlify_shared__WEBPACK_IMPORTED_MODULE_6__.isPlainObject)(options.processor) && (0,_intlify_shared__WEBPACK_IMPORTED_MODULE_6__.isFunction)(options.processor.interpolate) ? options.processor.interpolate : DEFAULT_INTERPOLATE;\n const type = (0,_intlify_shared__WEBPACK_IMPORTED_MODULE_6__.isPlainObject)(options.processor) && (0,_intlify_shared__WEBPACK_IMPORTED_MODULE_6__.isString)(options.processor.type) ? options.processor.type : DEFAULT_MESSAGE_DATA_TYPE;\n const linked = (key, ...args) => {\n const [arg1, arg2] = args;\n let type = 'text';\n let modifier = '';\n if (args.length === 1) {\n if ((0,_intlify_shared__WEBPACK_IMPORTED_MODULE_6__.isObject)(arg1)) {\n modifier = arg1.modifier || modifier;\n type = arg1.type || type;\n } else if ((0,_intlify_shared__WEBPACK_IMPORTED_MODULE_6__.isString)(arg1)) {\n modifier = arg1 || modifier;\n }\n } else if (args.length === 2) {\n if ((0,_intlify_shared__WEBPACK_IMPORTED_MODULE_6__.isString)(arg1)) {\n modifier = arg1 || modifier;\n }\n if ((0,_intlify_shared__WEBPACK_IMPORTED_MODULE_6__.isString)(arg2)) {\n type = arg2 || type;\n }\n }\n const ret = message(key)(ctx);\n const msg =\n // The message in vnode resolved with linked are returned as an array by processor.nomalize\n type === 'vnode' && (0,_intlify_shared__WEBPACK_IMPORTED_MODULE_6__.isArray)(ret) && modifier ? ret[0] : ret;\n return modifier ? _modifier(modifier)(msg, type) : msg;\n };\n const ctx = {\n [\"list\" /* HelperNameMap.LIST */]: list,\n [\"named\" /* HelperNameMap.NAMED */]: named,\n [\"plural\" /* HelperNameMap.PLURAL */]: plural,\n [\"linked\" /* HelperNameMap.LINKED */]: linked,\n [\"message\" /* HelperNameMap.MESSAGE */]: message,\n [\"type\" /* HelperNameMap.TYPE */]: type,\n [\"interpolate\" /* HelperNameMap.INTERPOLATE */]: interpolate,\n [\"normalize\" /* HelperNameMap.NORMALIZE */]: normalize,\n [\"values\" /* HelperNameMap.VALUES */]: (0,_intlify_shared__WEBPACK_IMPORTED_MODULE_6__.assign)((0,_intlify_shared__WEBPACK_IMPORTED_MODULE_6__.create)(), _list, _named)\n };\n return ctx;\n}\nlet devtools = null;\nfunction setDevToolsHook(hook) {\n devtools = hook;\n}\nfunction getDevToolsHook() {\n return devtools;\n}\nfunction initI18nDevTools(i18n, version, meta) {\n // TODO: queue if devtools is undefined\n devtools && devtools.emit(\"i18n:init\" /* IntlifyDevToolsHooks.I18nInit */, {\n timestamp: Date.now(),\n i18n,\n version,\n meta\n });\n}\nconst translateDevTools = /* #__PURE__*/createDevToolsHook(\"function:translate\" /* IntlifyDevToolsHooks.FunctionTranslate */);\nfunction createDevToolsHook(hook) {\n return payloads => devtools && devtools.emit(hook, payloads);\n}\nconst code$1 = _intlify_message_compiler__WEBPACK_IMPORTED_MODULE_7__.CompileWarnCodes.__EXTEND_POINT__;\nconst inc$1 = (0,_intlify_shared__WEBPACK_IMPORTED_MODULE_6__.incrementer)(code$1);\nconst CoreWarnCodes = {\n NOT_FOUND_KEY: code$1,\n // 2\n FALLBACK_TO_TRANSLATE: inc$1(),\n // 3\n CANNOT_FORMAT_NUMBER: inc$1(),\n // 4\n FALLBACK_TO_NUMBER_FORMAT: inc$1(),\n // 5\n CANNOT_FORMAT_DATE: inc$1(),\n // 6\n FALLBACK_TO_DATE_FORMAT: inc$1(),\n // 7\n EXPERIMENTAL_CUSTOM_MESSAGE_COMPILER: inc$1(),\n // 8\n __EXTEND_POINT__: inc$1() // 9\n};\n/** @internal */\nconst warnMessages = {\n [CoreWarnCodes.NOT_FOUND_KEY]: `Not found '{key}' key in '{locale}' locale messages.`,\n [CoreWarnCodes.FALLBACK_TO_TRANSLATE]: `Fall back to translate '{key}' key with '{target}' locale.`,\n [CoreWarnCodes.CANNOT_FORMAT_NUMBER]: `Cannot format a number value due to not supported Intl.NumberFormat.`,\n [CoreWarnCodes.FALLBACK_TO_NUMBER_FORMAT]: `Fall back to number format '{key}' key with '{target}' locale.`,\n [CoreWarnCodes.CANNOT_FORMAT_DATE]: `Cannot format a date value due to not supported Intl.DateTimeFormat.`,\n [CoreWarnCodes.FALLBACK_TO_DATE_FORMAT]: `Fall back to datetime format '{key}' key with '{target}' locale.`,\n [CoreWarnCodes.EXPERIMENTAL_CUSTOM_MESSAGE_COMPILER]: `This project is using Custom Message Compiler, which is an experimental feature. It may receive breaking changes or be removed in the future.`\n};\nfunction getWarnMessage(code, ...args) {\n return (0,_intlify_shared__WEBPACK_IMPORTED_MODULE_6__.format)(warnMessages[code], ...args);\n}\nconst code = _intlify_message_compiler__WEBPACK_IMPORTED_MODULE_7__.CompileErrorCodes.__EXTEND_POINT__;\nconst inc = (0,_intlify_shared__WEBPACK_IMPORTED_MODULE_6__.incrementer)(code);\nconst CoreErrorCodes = {\n INVALID_ARGUMENT: code,\n // 17\n INVALID_DATE_ARGUMENT: inc(),\n // 18\n INVALID_ISO_DATE_ARGUMENT: inc(),\n // 19\n NOT_SUPPORT_NON_STRING_MESSAGE: inc(),\n // 20\n NOT_SUPPORT_LOCALE_PROMISE_VALUE: inc(),\n // 21\n NOT_SUPPORT_LOCALE_ASYNC_FUNCTION: inc(),\n // 22\n NOT_SUPPORT_LOCALE_TYPE: inc(),\n // 23\n __EXTEND_POINT__: inc() // 24\n};\nfunction createCoreError(code) {\n return (0,_intlify_message_compiler__WEBPACK_IMPORTED_MODULE_7__.createCompileError)(code, null, true ? {\n messages: errorMessages\n } : 0);\n}\n/** @internal */\nconst errorMessages = {\n [CoreErrorCodes.INVALID_ARGUMENT]: 'Invalid arguments',\n [CoreErrorCodes.INVALID_DATE_ARGUMENT]: 'The date provided is an invalid Date object.' + 'Make sure your Date represents a valid date.',\n [CoreErrorCodes.INVALID_ISO_DATE_ARGUMENT]: 'The argument provided is not a valid ISO date string',\n [CoreErrorCodes.NOT_SUPPORT_NON_STRING_MESSAGE]: 'Not support non-string message',\n [CoreErrorCodes.NOT_SUPPORT_LOCALE_PROMISE_VALUE]: 'cannot support promise value',\n [CoreErrorCodes.NOT_SUPPORT_LOCALE_ASYNC_FUNCTION]: 'cannot support async function',\n [CoreErrorCodes.NOT_SUPPORT_LOCALE_TYPE]: 'cannot support locale type'\n};\n\n/** @internal */\nfunction getLocale(context, options) {\n return options.locale != null ? resolveLocale(options.locale) : resolveLocale(context.locale);\n}\nlet _resolveLocale;\n/** @internal */\nfunction resolveLocale(locale) {\n if ((0,_intlify_shared__WEBPACK_IMPORTED_MODULE_6__.isString)(locale)) {\n return locale;\n } else {\n if ((0,_intlify_shared__WEBPACK_IMPORTED_MODULE_6__.isFunction)(locale)) {\n if (locale.resolvedOnce && _resolveLocale != null) {\n return _resolveLocale;\n } else if (locale.constructor.name === 'Function') {\n const resolve = locale();\n if ((0,_intlify_shared__WEBPACK_IMPORTED_MODULE_6__.isPromise)(resolve)) {\n throw createCoreError(CoreErrorCodes.NOT_SUPPORT_LOCALE_PROMISE_VALUE);\n }\n return _resolveLocale = resolve;\n } else {\n throw createCoreError(CoreErrorCodes.NOT_SUPPORT_LOCALE_ASYNC_FUNCTION);\n }\n } else {\n throw createCoreError(CoreErrorCodes.NOT_SUPPORT_LOCALE_TYPE);\n }\n }\n}\n/**\n * Fallback with simple implemenation\n *\n * @remarks\n * A fallback locale function implemented with a simple fallback algorithm.\n *\n * Basically, it returns the value as specified in the `fallbackLocale` props, and is processed with the fallback inside intlify.\n *\n * @param ctx - A {@link CoreContext | context}\n * @param fallback - A {@link FallbackLocale | fallback locale}\n * @param start - A starting {@link Locale | locale}\n *\n * @returns Fallback locales\n *\n * @VueI18nGeneral\n */\nfunction fallbackWithSimple(ctx, fallback, start // eslint-disable-line @typescript-eslint/no-unused-vars\n) {\n // prettier-ignore\n return [...new Set([start, ...((0,_intlify_shared__WEBPACK_IMPORTED_MODULE_6__.isArray)(fallback) ? fallback : (0,_intlify_shared__WEBPACK_IMPORTED_MODULE_6__.isObject)(fallback) ? Object.keys(fallback) : (0,_intlify_shared__WEBPACK_IMPORTED_MODULE_6__.isString)(fallback) ? [fallback] : [start])])];\n}\n/**\n * Fallback with locale chain\n *\n * @remarks\n * A fallback locale function implemented with a fallback chain algorithm. It's used in VueI18n as default.\n *\n * @param ctx - A {@link CoreContext | context}\n * @param fallback - A {@link FallbackLocale | fallback locale}\n * @param start - A starting {@link Locale | locale}\n *\n * @returns Fallback locales\n *\n * @VueI18nSee [Fallbacking](../guide/essentials/fallback)\n *\n * @VueI18nGeneral\n */\nfunction fallbackWithLocaleChain(ctx, fallback, start) {\n const startLocale = (0,_intlify_shared__WEBPACK_IMPORTED_MODULE_6__.isString)(start) ? start : DEFAULT_LOCALE;\n const context = ctx;\n if (!context.__localeChainCache) {\n context.__localeChainCache = new Map();\n }\n let chain = context.__localeChainCache.get(startLocale);\n if (!chain) {\n chain = [];\n // first block defined by start\n let block = [start];\n // while any intervening block found\n while ((0,_intlify_shared__WEBPACK_IMPORTED_MODULE_6__.isArray)(block)) {\n block = appendBlockToChain(chain, block, fallback);\n }\n // prettier-ignore\n // last block defined by default\n const defaults = (0,_intlify_shared__WEBPACK_IMPORTED_MODULE_6__.isArray)(fallback) || !(0,_intlify_shared__WEBPACK_IMPORTED_MODULE_6__.isPlainObject)(fallback) ? fallback : fallback['default'] ? fallback['default'] : null;\n // convert defaults to array\n block = (0,_intlify_shared__WEBPACK_IMPORTED_MODULE_6__.isString)(defaults) ? [defaults] : defaults;\n if ((0,_intlify_shared__WEBPACK_IMPORTED_MODULE_6__.isArray)(block)) {\n appendBlockToChain(chain, block, false);\n }\n context.__localeChainCache.set(startLocale, chain);\n }\n return chain;\n}\nfunction appendBlockToChain(chain, block, blocks) {\n let follow = true;\n for (let i = 0; i < block.length && (0,_intlify_shared__WEBPACK_IMPORTED_MODULE_6__.isBoolean)(follow); i++) {\n const locale = block[i];\n if ((0,_intlify_shared__WEBPACK_IMPORTED_MODULE_6__.isString)(locale)) {\n follow = appendLocaleToChain(chain, block[i], blocks);\n }\n }\n return follow;\n}\nfunction appendLocaleToChain(chain, locale, blocks) {\n let follow;\n const tokens = locale.split('-');\n do {\n const target = tokens.join('-');\n follow = appendItemToChain(chain, target, blocks);\n tokens.splice(-1, 1);\n } while (tokens.length && follow === true);\n return follow;\n}\nfunction appendItemToChain(chain, target, blocks) {\n let follow = false;\n if (!chain.includes(target)) {\n follow = true;\n if (target) {\n follow = target[target.length - 1] !== '!';\n const locale = target.replace(/!/g, '');\n chain.push(locale);\n if (((0,_intlify_shared__WEBPACK_IMPORTED_MODULE_6__.isArray)(blocks) || (0,_intlify_shared__WEBPACK_IMPORTED_MODULE_6__.isPlainObject)(blocks)) && blocks[locale] // eslint-disable-line @typescript-eslint/no-explicit-any\n ) {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n follow = blocks[locale];\n }\n }\n }\n return follow;\n}\n\n/* eslint-disable @typescript-eslint/no-explicit-any */\n/**\n * Intlify core-base version\n * @internal\n */\nconst VERSION = '9.14.5';\nconst NOT_REOSLVED = -1;\nconst DEFAULT_LOCALE = 'en-US';\nconst MISSING_RESOLVE_VALUE = '';\nconst capitalize = str => `${str.charAt(0).toLocaleUpperCase()}${str.substr(1)}`;\nfunction getDefaultLinkedModifiers() {\n return {\n upper: (val, type) => {\n // prettier-ignore\n return type === 'text' && (0,_intlify_shared__WEBPACK_IMPORTED_MODULE_6__.isString)(val) ? val.toUpperCase() : type === 'vnode' && (0,_intlify_shared__WEBPACK_IMPORTED_MODULE_6__.isObject)(val) && '__v_isVNode' in val ? val.children.toUpperCase() : val;\n },\n lower: (val, type) => {\n // prettier-ignore\n return type === 'text' && (0,_intlify_shared__WEBPACK_IMPORTED_MODULE_6__.isString)(val) ? val.toLowerCase() : type === 'vnode' && (0,_intlify_shared__WEBPACK_IMPORTED_MODULE_6__.isObject)(val) && '__v_isVNode' in val ? val.children.toLowerCase() : val;\n },\n capitalize: (val, type) => {\n // prettier-ignore\n return type === 'text' && (0,_intlify_shared__WEBPACK_IMPORTED_MODULE_6__.isString)(val) ? capitalize(val) : type === 'vnode' && (0,_intlify_shared__WEBPACK_IMPORTED_MODULE_6__.isObject)(val) && '__v_isVNode' in val ? capitalize(val.children) : val;\n }\n };\n}\nlet _compiler;\nfunction registerMessageCompiler(compiler) {\n _compiler = compiler;\n}\nlet _resolver;\n/**\n * Register the message resolver\n *\n * @param resolver - A {@link MessageResolver} function\n *\n * @VueI18nGeneral\n */\nfunction registerMessageResolver(resolver) {\n _resolver = resolver;\n}\nlet _fallbacker;\n/**\n * Register the locale fallbacker\n *\n * @param fallbacker - A {@link LocaleFallbacker} function\n *\n * @VueI18nGeneral\n */\nfunction registerLocaleFallbacker(fallbacker) {\n _fallbacker = fallbacker;\n}\n// Additional Meta for Intlify DevTools\nlet _additionalMeta = null;\n/* #__NO_SIDE_EFFECTS__ */\nconst setAdditionalMeta = meta => {\n _additionalMeta = meta;\n};\n/* #__NO_SIDE_EFFECTS__ */\nconst getAdditionalMeta = () => _additionalMeta;\nlet _fallbackContext = null;\nconst setFallbackContext = context => {\n _fallbackContext = context;\n};\nconst getFallbackContext = () => _fallbackContext;\n// ID for CoreContext\nlet _cid = 0;\nfunction createCoreContext(options = {}) {\n // setup options\n const onWarn = (0,_intlify_shared__WEBPACK_IMPORTED_MODULE_6__.isFunction)(options.onWarn) ? options.onWarn : _intlify_shared__WEBPACK_IMPORTED_MODULE_6__.warn;\n const version = (0,_intlify_shared__WEBPACK_IMPORTED_MODULE_6__.isString)(options.version) ? options.version : VERSION;\n const locale = (0,_intlify_shared__WEBPACK_IMPORTED_MODULE_6__.isString)(options.locale) || (0,_intlify_shared__WEBPACK_IMPORTED_MODULE_6__.isFunction)(options.locale) ? options.locale : DEFAULT_LOCALE;\n const _locale = (0,_intlify_shared__WEBPACK_IMPORTED_MODULE_6__.isFunction)(locale) ? DEFAULT_LOCALE : locale;\n const fallbackLocale = (0,_intlify_shared__WEBPACK_IMPORTED_MODULE_6__.isArray)(options.fallbackLocale) || (0,_intlify_shared__WEBPACK_IMPORTED_MODULE_6__.isPlainObject)(options.fallbackLocale) || (0,_intlify_shared__WEBPACK_IMPORTED_MODULE_6__.isString)(options.fallbackLocale) || options.fallbackLocale === false ? options.fallbackLocale : _locale;\n const messages = (0,_intlify_shared__WEBPACK_IMPORTED_MODULE_6__.isPlainObject)(options.messages) ? options.messages : createResources(_locale);\n const datetimeFormats = (0,_intlify_shared__WEBPACK_IMPORTED_MODULE_6__.isPlainObject)(options.datetimeFormats) ? options.datetimeFormats : createResources(_locale);\n const numberFormats = (0,_intlify_shared__WEBPACK_IMPORTED_MODULE_6__.isPlainObject)(options.numberFormats) ? options.numberFormats : createResources(_locale);\n const modifiers = (0,_intlify_shared__WEBPACK_IMPORTED_MODULE_6__.assign)((0,_intlify_shared__WEBPACK_IMPORTED_MODULE_6__.create)(), options.modifiers, getDefaultLinkedModifiers());\n const pluralRules = options.pluralRules || (0,_intlify_shared__WEBPACK_IMPORTED_MODULE_6__.create)();\n const missing = (0,_intlify_shared__WEBPACK_IMPORTED_MODULE_6__.isFunction)(options.missing) ? options.missing : null;\n const missingWarn = (0,_intlify_shared__WEBPACK_IMPORTED_MODULE_6__.isBoolean)(options.missingWarn) || (0,_intlify_shared__WEBPACK_IMPORTED_MODULE_6__.isRegExp)(options.missingWarn) ? options.missingWarn : true;\n const fallbackWarn = (0,_intlify_shared__WEBPACK_IMPORTED_MODULE_6__.isBoolean)(options.fallbackWarn) || (0,_intlify_shared__WEBPACK_IMPORTED_MODULE_6__.isRegExp)(options.fallbackWarn) ? options.fallbackWarn : true;\n const fallbackFormat = !!options.fallbackFormat;\n const unresolving = !!options.unresolving;\n const postTranslation = (0,_intlify_shared__WEBPACK_IMPORTED_MODULE_6__.isFunction)(options.postTranslation) ? options.postTranslation : null;\n const processor = (0,_intlify_shared__WEBPACK_IMPORTED_MODULE_6__.isPlainObject)(options.processor) ? options.processor : null;\n const warnHtmlMessage = (0,_intlify_shared__WEBPACK_IMPORTED_MODULE_6__.isBoolean)(options.warnHtmlMessage) ? options.warnHtmlMessage : true;\n const escapeParameter = !!options.escapeParameter;\n const messageCompiler = (0,_intlify_shared__WEBPACK_IMPORTED_MODULE_6__.isFunction)(options.messageCompiler) ? options.messageCompiler : _compiler;\n if ( true && (0,_intlify_shared__WEBPACK_IMPORTED_MODULE_6__.isFunction)(options.messageCompiler)) {\n (0,_intlify_shared__WEBPACK_IMPORTED_MODULE_6__.warnOnce)(getWarnMessage(CoreWarnCodes.EXPERIMENTAL_CUSTOM_MESSAGE_COMPILER));\n }\n const messageResolver = (0,_intlify_shared__WEBPACK_IMPORTED_MODULE_6__.isFunction)(options.messageResolver) ? options.messageResolver : _resolver || resolveWithKeyValue;\n const localeFallbacker = (0,_intlify_shared__WEBPACK_IMPORTED_MODULE_6__.isFunction)(options.localeFallbacker) ? options.localeFallbacker : _fallbacker || fallbackWithSimple;\n const fallbackContext = (0,_intlify_shared__WEBPACK_IMPORTED_MODULE_6__.isObject)(options.fallbackContext) ? options.fallbackContext : undefined;\n // setup internal options\n const internalOptions = options;\n const __datetimeFormatters = (0,_intlify_shared__WEBPACK_IMPORTED_MODULE_6__.isObject)(internalOptions.__datetimeFormatters) ? internalOptions.__datetimeFormatters : new Map();\n const __numberFormatters = (0,_intlify_shared__WEBPACK_IMPORTED_MODULE_6__.isObject)(internalOptions.__numberFormatters) ? internalOptions.__numberFormatters : new Map();\n const __meta = (0,_intlify_shared__WEBPACK_IMPORTED_MODULE_6__.isObject)(internalOptions.__meta) ? internalOptions.__meta : {};\n _cid++;\n const context = {\n version,\n cid: _cid,\n locale,\n fallbackLocale,\n messages,\n modifiers,\n pluralRules,\n missing,\n missingWarn,\n fallbackWarn,\n fallbackFormat,\n unresolving,\n postTranslation,\n processor,\n warnHtmlMessage,\n escapeParameter,\n messageCompiler,\n messageResolver,\n localeFallbacker,\n fallbackContext,\n onWarn,\n __meta\n };\n {\n context.datetimeFormats = datetimeFormats;\n context.numberFormats = numberFormats;\n context.__datetimeFormatters = __datetimeFormatters;\n context.__numberFormatters = __numberFormatters;\n }\n // for vue-devtools timeline event\n if (true) {\n context.__v_emitter = internalOptions.__v_emitter != null ? internalOptions.__v_emitter : undefined;\n }\n // NOTE: experimental !!\n if (true) {\n initI18nDevTools(context, version, __meta);\n }\n return context;\n}\nconst createResources = locale => ({\n [locale]: (0,_intlify_shared__WEBPACK_IMPORTED_MODULE_6__.create)()\n});\n/** @internal */\nfunction isTranslateFallbackWarn(fallback, key) {\n return fallback instanceof RegExp ? fallback.test(key) : fallback;\n}\n/** @internal */\nfunction isTranslateMissingWarn(missing, key) {\n return missing instanceof RegExp ? missing.test(key) : missing;\n}\n/** @internal */\nfunction handleMissing(context, key, locale, missingWarn, type) {\n const {\n missing,\n onWarn\n } = context;\n // for vue-devtools timeline event\n if (true) {\n const emitter = context.__v_emitter;\n if (emitter) {\n emitter.emit(\"missing\" /* VueDevToolsTimelineEvents.MISSING */, {\n locale,\n key,\n type,\n groupId: `${type}:${key}`\n });\n }\n }\n if (missing !== null) {\n const ret = missing(context, locale, key, type);\n return (0,_intlify_shared__WEBPACK_IMPORTED_MODULE_6__.isString)(ret) ? ret : key;\n } else {\n if ( true && isTranslateMissingWarn(missingWarn, key)) {\n onWarn(getWarnMessage(CoreWarnCodes.NOT_FOUND_KEY, {\n key,\n locale\n }));\n }\n return key;\n }\n}\n/** @internal */\nfunction updateFallbackLocale(ctx, locale, fallback) {\n const context = ctx;\n context.__localeChainCache = new Map();\n ctx.localeFallbacker(ctx, fallback, locale);\n}\n/** @internal */\nfunction isAlmostSameLocale(locale, compareLocale) {\n if (locale === compareLocale) return false;\n return locale.split('-')[0] === compareLocale.split('-')[0];\n}\n/** @internal */\nfunction isImplicitFallback(targetLocale, locales) {\n const index = locales.indexOf(targetLocale);\n if (index === -1) {\n return false;\n }\n for (let i = index + 1; i < locales.length; i++) {\n if (isAlmostSameLocale(targetLocale, locales[i])) {\n return true;\n }\n }\n return false;\n}\n/* eslint-enable @typescript-eslint/no-explicit-any */\n\nfunction format(ast) {\n const msg = ctx => formatParts(ctx, ast);\n return msg;\n}\nfunction formatParts(ctx, ast) {\n const body = resolveBody(ast);\n if (body == null) {\n throw createUnhandleNodeError(0 /* NodeTypes.Resource */);\n }\n const type = resolveType(body);\n if (type === 1 /* NodeTypes.Plural */) {\n const plural = body;\n const cases = resolveCases(plural);\n return ctx.plural(cases.reduce((messages, c) => [...messages, formatMessageParts(ctx, c)], []));\n } else {\n return formatMessageParts(ctx, body);\n }\n}\nfunction formatMessageParts(ctx, node) {\n const static_ = resolveStatic(node);\n if (static_ != null) {\n return ctx.type === 'text' ? static_ : ctx.normalize([static_]);\n } else {\n const messages = resolveItems(node).reduce((acm, c) => [...acm, formatMessagePart(ctx, c)], []);\n return ctx.normalize(messages);\n }\n}\nfunction formatMessagePart(ctx, node) {\n const type = resolveType(node);\n switch (type) {\n case 3 /* NodeTypes.Text */:\n {\n return resolveValue$1(node, type);\n }\n case 9 /* NodeTypes.Literal */:\n {\n return resolveValue$1(node, type);\n }\n case 4 /* NodeTypes.Named */:\n {\n const named = node;\n if ((0,_intlify_shared__WEBPACK_IMPORTED_MODULE_6__.hasOwn)(named, 'k') && named.k) {\n return ctx.interpolate(ctx.named(named.k));\n }\n if ((0,_intlify_shared__WEBPACK_IMPORTED_MODULE_6__.hasOwn)(named, 'key') && named.key) {\n return ctx.interpolate(ctx.named(named.key));\n }\n throw createUnhandleNodeError(type);\n }\n case 5 /* NodeTypes.List */:\n {\n const list = node;\n if ((0,_intlify_shared__WEBPACK_IMPORTED_MODULE_6__.hasOwn)(list, 'i') && (0,_intlify_shared__WEBPACK_IMPORTED_MODULE_6__.isNumber)(list.i)) {\n return ctx.interpolate(ctx.list(list.i));\n }\n if ((0,_intlify_shared__WEBPACK_IMPORTED_MODULE_6__.hasOwn)(list, 'index') && (0,_intlify_shared__WEBPACK_IMPORTED_MODULE_6__.isNumber)(list.index)) {\n return ctx.interpolate(ctx.list(list.index));\n }\n throw createUnhandleNodeError(type);\n }\n case 6 /* NodeTypes.Linked */:\n {\n const linked = node;\n const modifier = resolveLinkedModifier(linked);\n const key = resolveLinkedKey(linked);\n return ctx.linked(formatMessagePart(ctx, key), modifier ? formatMessagePart(ctx, modifier) : undefined, ctx.type);\n }\n case 7 /* NodeTypes.LinkedKey */:\n {\n return resolveValue$1(node, type);\n }\n case 8 /* NodeTypes.LinkedModifier */:\n {\n return resolveValue$1(node, type);\n }\n default:\n throw new Error(`unhandled node on format message part: ${type}`);\n }\n}\nconst WARN_MESSAGE = `Detected HTML in '{source}' message. Recommend not using HTML messages to avoid XSS.`;\nfunction checkHtmlMessage(source, warnHtmlMessage) {\n if (warnHtmlMessage && (0,_intlify_message_compiler__WEBPACK_IMPORTED_MODULE_7__.detectHtmlTag)(source)) {\n (0,_intlify_shared__WEBPACK_IMPORTED_MODULE_6__.warn)((0,_intlify_shared__WEBPACK_IMPORTED_MODULE_6__.format)(WARN_MESSAGE, {\n source\n }));\n }\n}\nconst defaultOnCacheKey = message => message;\nlet compileCache = (0,_intlify_shared__WEBPACK_IMPORTED_MODULE_6__.create)();\nfunction onCompileWarn(_warn) {\n if (_warn.code === _intlify_message_compiler__WEBPACK_IMPORTED_MODULE_7__.CompileWarnCodes.USE_MODULO_SYNTAX) {\n (0,_intlify_shared__WEBPACK_IMPORTED_MODULE_6__.warn)(`The use of named interpolation with modulo syntax is deprecated. ` + `It will be removed in v10.\\n` + `reference: https://vue-i18n.intlify.dev/guide/essentials/syntax#rails-i18n-format \\n` + `(message compiler warning message: ${_warn.message})`);\n }\n}\nfunction clearCompileCache() {\n compileCache = (0,_intlify_shared__WEBPACK_IMPORTED_MODULE_6__.create)();\n}\nfunction baseCompile(message, options = {}) {\n // error detecting on compile\n let detectError = false;\n const onError = options.onError || _intlify_message_compiler__WEBPACK_IMPORTED_MODULE_7__.defaultOnError;\n options.onError = err => {\n detectError = true;\n onError(err);\n };\n // compile with mesasge-compiler\n return {\n ...(0,_intlify_message_compiler__WEBPACK_IMPORTED_MODULE_7__.baseCompile)(message, options),\n detectError\n };\n}\n/* #__NO_SIDE_EFFECTS__ */\nconst compileToFunction = (message, context) => {\n if (!(0,_intlify_shared__WEBPACK_IMPORTED_MODULE_6__.isString)(message)) {\n throw createCoreError(CoreErrorCodes.NOT_SUPPORT_NON_STRING_MESSAGE);\n }\n // set onWarn\n if (true) {\n context.onWarn = onCompileWarn;\n }\n {\n // check HTML message\n const warnHtmlMessage = (0,_intlify_shared__WEBPACK_IMPORTED_MODULE_6__.isBoolean)(context.warnHtmlMessage) ? context.warnHtmlMessage : true;\n true && checkHtmlMessage(message, warnHtmlMessage);\n // check caches\n const onCacheKey = context.onCacheKey || defaultOnCacheKey;\n const cacheKey = onCacheKey(message);\n const cached = compileCache[cacheKey];\n if (cached) {\n return cached;\n }\n // compile\n const {\n code,\n detectError\n } = baseCompile(message, context);\n // evaluate function\n const msg = new Function(`return ${code}`)();\n // if occurred compile error, don't cache\n return !detectError ? compileCache[cacheKey] = msg : msg;\n }\n};\nfunction compile(message, context) {\n // set onWarn\n if (true) {\n context.onWarn = onCompileWarn;\n }\n if (__INTLIFY_JIT_COMPILATION__ && !__INTLIFY_DROP_MESSAGE_COMPILER__ && (0,_intlify_shared__WEBPACK_IMPORTED_MODULE_6__.isString)(message)) {\n // check HTML message\n const warnHtmlMessage = (0,_intlify_shared__WEBPACK_IMPORTED_MODULE_6__.isBoolean)(context.warnHtmlMessage) ? context.warnHtmlMessage : true;\n true && checkHtmlMessage(message, warnHtmlMessage);\n // check caches\n const onCacheKey = context.onCacheKey || defaultOnCacheKey;\n const cacheKey = onCacheKey(message);\n const cached = compileCache[cacheKey];\n if (cached) {\n return cached;\n }\n // compile with JIT mode\n const {\n ast,\n detectError\n } = baseCompile(message, {\n ...context,\n location: \"development\" !== 'production',\n jit: true\n });\n // compose message function from AST\n const msg = format(ast);\n // if occurred compile error, don't cache\n return !detectError ? compileCache[cacheKey] = msg : msg;\n } else {\n if ( true && !isMessageAST(message)) {\n (0,_intlify_shared__WEBPACK_IMPORTED_MODULE_6__.warn)(`the message that is resolve with key '${context.key}' is not supported for jit compilation`);\n return () => message;\n }\n // AST case (passed from bundler)\n const cacheKey = message.cacheKey;\n if (cacheKey) {\n const cached = compileCache[cacheKey];\n if (cached) {\n return cached;\n }\n // compose message function from message (AST)\n return compileCache[cacheKey] = format(message);\n } else {\n return format(message);\n }\n }\n}\nconst NOOP_MESSAGE_FUNCTION = () => '';\nconst isMessageFunction = val => (0,_intlify_shared__WEBPACK_IMPORTED_MODULE_6__.isFunction)(val);\n// implementation of `translate` function\nfunction translate(context, ...args) {\n const {\n fallbackFormat,\n postTranslation,\n unresolving,\n messageCompiler,\n fallbackLocale,\n messages\n } = context;\n const [key, options] = parseTranslateArgs(...args);\n const missingWarn = (0,_intlify_shared__WEBPACK_IMPORTED_MODULE_6__.isBoolean)(options.missingWarn) ? options.missingWarn : context.missingWarn;\n const fallbackWarn = (0,_intlify_shared__WEBPACK_IMPORTED_MODULE_6__.isBoolean)(options.fallbackWarn) ? options.fallbackWarn : context.fallbackWarn;\n const escapeParameter = (0,_intlify_shared__WEBPACK_IMPORTED_MODULE_6__.isBoolean)(options.escapeParameter) ? options.escapeParameter : context.escapeParameter;\n const resolvedMessage = !!options.resolvedMessage;\n // prettier-ignore\n const defaultMsgOrKey = (0,_intlify_shared__WEBPACK_IMPORTED_MODULE_6__.isString)(options.default) || (0,_intlify_shared__WEBPACK_IMPORTED_MODULE_6__.isBoolean)(options.default) // default by function option\n ? !(0,_intlify_shared__WEBPACK_IMPORTED_MODULE_6__.isBoolean)(options.default) ? options.default : !messageCompiler ? () => key : key : fallbackFormat // default by `fallbackFormat` option\n ? !messageCompiler ? () => key : key : '';\n const enableDefaultMsg = fallbackFormat || defaultMsgOrKey !== '';\n const locale = getLocale(context, options);\n // escape params\n escapeParameter && escapeParams(options);\n // resolve message format\n // eslint-disable-next-line prefer-const\n let [formatScope, targetLocale, message] = !resolvedMessage ? resolveMessageFormat(context, key, locale, fallbackLocale, fallbackWarn, missingWarn) : [key, locale, messages[locale] || (0,_intlify_shared__WEBPACK_IMPORTED_MODULE_6__.create)()];\n // NOTE:\n // Fix to work around `ssrTransfrom` bug in Vite.\n // https://github.com/vitejs/vite/issues/4306\n // To get around this, use temporary variables.\n // https://github.com/nuxt/framework/issues/1461#issuecomment-954606243\n let format = formatScope;\n // if you use default message, set it as message format!\n let cacheBaseKey = key;\n if (!resolvedMessage && !((0,_intlify_shared__WEBPACK_IMPORTED_MODULE_6__.isString)(format) || isMessageAST(format) || isMessageFunction(format))) {\n if (enableDefaultMsg) {\n format = defaultMsgOrKey;\n cacheBaseKey = format;\n }\n }\n // checking message format and target locale\n if (!resolvedMessage && (!((0,_intlify_shared__WEBPACK_IMPORTED_MODULE_6__.isString)(format) || isMessageAST(format) || isMessageFunction(format)) || !(0,_intlify_shared__WEBPACK_IMPORTED_MODULE_6__.isString)(targetLocale))) {\n return unresolving ? NOT_REOSLVED : key;\n }\n // TODO: refactor\n if ( true && (0,_intlify_shared__WEBPACK_IMPORTED_MODULE_6__.isString)(format) && context.messageCompiler == null) {\n (0,_intlify_shared__WEBPACK_IMPORTED_MODULE_6__.warn)(`The message format compilation is not supported in this build. ` + `Because message compiler isn't included. ` + `You need to pre-compilation all message format. ` + `So translate function return '${key}'.`);\n return key;\n }\n // setup compile error detecting\n let occurred = false;\n const onError = () => {\n occurred = true;\n };\n // compile message format\n const msg = !isMessageFunction(format) ? compileMessageFormat(context, key, targetLocale, format, cacheBaseKey, onError) : format;\n // if occurred compile error, return the message format\n if (occurred) {\n return format;\n }\n // evaluate message with context\n const ctxOptions = getMessageContextOptions(context, targetLocale, message, options);\n const msgContext = createMessageContext(ctxOptions);\n const messaged = evaluateMessage(context, msg, msgContext);\n // if use post translation option, proceed it with handler\n let ret = postTranslation ? postTranslation(messaged, key) : messaged;\n // apply HTML sanitization for security\n if (escapeParameter && (0,_intlify_shared__WEBPACK_IMPORTED_MODULE_6__.isString)(ret)) {\n ret = (0,_intlify_shared__WEBPACK_IMPORTED_MODULE_6__.sanitizeTranslatedHtml)(ret);\n }\n // NOTE: experimental !!\n if (true) {\n // prettier-ignore\n const payloads = {\n timestamp: Date.now(),\n key: (0,_intlify_shared__WEBPACK_IMPORTED_MODULE_6__.isString)(key) ? key : isMessageFunction(format) ? format.key : '',\n locale: targetLocale || (isMessageFunction(format) ? format.locale : ''),\n format: (0,_intlify_shared__WEBPACK_IMPORTED_MODULE_6__.isString)(format) ? format : isMessageFunction(format) ? format.source : '',\n message: ret\n };\n payloads.meta = (0,_intlify_shared__WEBPACK_IMPORTED_MODULE_6__.assign)({}, context.__meta, getAdditionalMeta() || {});\n translateDevTools(payloads);\n }\n return ret;\n}\nfunction escapeParams(options) {\n if ((0,_intlify_shared__WEBPACK_IMPORTED_MODULE_6__.isArray)(options.list)) {\n options.list = options.list.map(item => (0,_intlify_shared__WEBPACK_IMPORTED_MODULE_6__.isString)(item) ? (0,_intlify_shared__WEBPACK_IMPORTED_MODULE_6__.escapeHtml)(item) : item);\n } else if ((0,_intlify_shared__WEBPACK_IMPORTED_MODULE_6__.isObject)(options.named)) {\n Object.keys(options.named).forEach(key => {\n if ((0,_intlify_shared__WEBPACK_IMPORTED_MODULE_6__.isString)(options.named[key])) {\n options.named[key] = (0,_intlify_shared__WEBPACK_IMPORTED_MODULE_6__.escapeHtml)(options.named[key]);\n }\n });\n }\n}\nfunction resolveMessageFormat(context, key, locale, fallbackLocale, fallbackWarn, missingWarn) {\n const {\n messages,\n onWarn,\n messageResolver: resolveValue,\n localeFallbacker\n } = context;\n const locales = localeFallbacker(context, fallbackLocale, locale); // eslint-disable-line @typescript-eslint/no-explicit-any\n let message = (0,_intlify_shared__WEBPACK_IMPORTED_MODULE_6__.create)();\n let targetLocale;\n let format = null;\n let from = locale;\n let to = null;\n const type = 'translate';\n for (let i = 0; i < locales.length; i++) {\n targetLocale = to = locales[i];\n if ( true && locale !== targetLocale && !isAlmostSameLocale(locale, targetLocale) && isTranslateFallbackWarn(fallbackWarn, key)) {\n onWarn(getWarnMessage(CoreWarnCodes.FALLBACK_TO_TRANSLATE, {\n key,\n target: targetLocale\n }));\n }\n // for vue-devtools timeline event\n if ( true && locale !== targetLocale) {\n const emitter = context.__v_emitter;\n if (emitter) {\n emitter.emit(\"fallback\" /* VueDevToolsTimelineEvents.FALBACK */, {\n type,\n key,\n from,\n to,\n groupId: `${type}:${key}`\n });\n }\n }\n message = messages[targetLocale] || (0,_intlify_shared__WEBPACK_IMPORTED_MODULE_6__.create)();\n // for vue-devtools timeline event\n let start = null;\n let startTag;\n let endTag;\n if ( true && _intlify_shared__WEBPACK_IMPORTED_MODULE_6__.inBrowser) {\n start = window.performance.now();\n startTag = 'intlify-message-resolve-start';\n endTag = 'intlify-message-resolve-end';\n _intlify_shared__WEBPACK_IMPORTED_MODULE_6__.mark && (0,_intlify_shared__WEBPACK_IMPORTED_MODULE_6__.mark)(startTag);\n }\n if ((format = resolveValue(message, key)) === null) {\n // if null, resolve with object key path\n format = message[key]; // eslint-disable-line @typescript-eslint/no-explicit-any\n }\n // for vue-devtools timeline event\n if ( true && _intlify_shared__WEBPACK_IMPORTED_MODULE_6__.inBrowser) {\n const end = window.performance.now();\n const emitter = context.__v_emitter;\n if (emitter && start && format) {\n emitter.emit(\"message-resolve\" /* VueDevToolsTimelineEvents.MESSAGE_RESOLVE */, {\n type: \"message-resolve\" /* VueDevToolsTimelineEvents.MESSAGE_RESOLVE */,\n key,\n message: format,\n time: end - start,\n groupId: `${type}:${key}`\n });\n }\n if (startTag && endTag && _intlify_shared__WEBPACK_IMPORTED_MODULE_6__.mark && _intlify_shared__WEBPACK_IMPORTED_MODULE_6__.measure) {\n (0,_intlify_shared__WEBPACK_IMPORTED_MODULE_6__.mark)(endTag);\n (0,_intlify_shared__WEBPACK_IMPORTED_MODULE_6__.measure)('intlify message resolve', startTag, endTag);\n }\n }\n if ((0,_intlify_shared__WEBPACK_IMPORTED_MODULE_6__.isString)(format) || isMessageAST(format) || isMessageFunction(format)) {\n break;\n }\n if (!isImplicitFallback(targetLocale, locales)) {\n const missingRet = handleMissing(context,\n // eslint-disable-line @typescript-eslint/no-explicit-any\n key, targetLocale, missingWarn, type);\n if (missingRet !== key) {\n format = missingRet;\n }\n }\n from = to;\n }\n return [format, targetLocale, message];\n}\nfunction compileMessageFormat(context, key, targetLocale, format, cacheBaseKey, onError) {\n const {\n messageCompiler,\n warnHtmlMessage\n } = context;\n if (isMessageFunction(format)) {\n const msg = format;\n msg.locale = msg.locale || targetLocale;\n msg.key = msg.key || key;\n return msg;\n }\n if (messageCompiler == null) {\n const msg = () => format;\n msg.locale = targetLocale;\n msg.key = key;\n return msg;\n }\n // for vue-devtools timeline event\n let start = null;\n let startTag;\n let endTag;\n if ( true && _intlify_shared__WEBPACK_IMPORTED_MODULE_6__.inBrowser) {\n start = window.performance.now();\n startTag = 'intlify-message-compilation-start';\n endTag = 'intlify-message-compilation-end';\n _intlify_shared__WEBPACK_IMPORTED_MODULE_6__.mark && (0,_intlify_shared__WEBPACK_IMPORTED_MODULE_6__.mark)(startTag);\n }\n const msg = messageCompiler(format, getCompileContext(context, targetLocale, cacheBaseKey, format, warnHtmlMessage, onError));\n // for vue-devtools timeline event\n if ( true && _intlify_shared__WEBPACK_IMPORTED_MODULE_6__.inBrowser) {\n const end = window.performance.now();\n const emitter = context.__v_emitter;\n if (emitter && start) {\n emitter.emit(\"message-compilation\" /* VueDevToolsTimelineEvents.MESSAGE_COMPILATION */, {\n type: \"message-compilation\" /* VueDevToolsTimelineEvents.MESSAGE_COMPILATION */,\n message: format,\n time: end - start,\n groupId: `${'translate'}:${key}`\n });\n }\n if (startTag && endTag && _intlify_shared__WEBPACK_IMPORTED_MODULE_6__.mark && _intlify_shared__WEBPACK_IMPORTED_MODULE_6__.measure) {\n (0,_intlify_shared__WEBPACK_IMPORTED_MODULE_6__.mark)(endTag);\n (0,_intlify_shared__WEBPACK_IMPORTED_MODULE_6__.measure)('intlify message compilation', startTag, endTag);\n }\n }\n msg.locale = targetLocale;\n msg.key = key;\n msg.source = format;\n return msg;\n}\nfunction evaluateMessage(context, msg, msgCtx) {\n // for vue-devtools timeline event\n let start = null;\n let startTag;\n let endTag;\n if ( true && _intlify_shared__WEBPACK_IMPORTED_MODULE_6__.inBrowser) {\n start = window.performance.now();\n startTag = 'intlify-message-evaluation-start';\n endTag = 'intlify-message-evaluation-end';\n _intlify_shared__WEBPACK_IMPORTED_MODULE_6__.mark && (0,_intlify_shared__WEBPACK_IMPORTED_MODULE_6__.mark)(startTag);\n }\n const messaged = msg(msgCtx);\n // for vue-devtools timeline event\n if ( true && _intlify_shared__WEBPACK_IMPORTED_MODULE_6__.inBrowser) {\n const end = window.performance.now();\n const emitter = context.__v_emitter;\n if (emitter && start) {\n emitter.emit(\"message-evaluation\" /* VueDevToolsTimelineEvents.MESSAGE_EVALUATION */, {\n type: \"message-evaluation\" /* VueDevToolsTimelineEvents.MESSAGE_EVALUATION */,\n value: messaged,\n time: end - start,\n groupId: `${'translate'}:${msg.key}`\n });\n }\n if (startTag && endTag && _intlify_shared__WEBPACK_IMPORTED_MODULE_6__.mark && _intlify_shared__WEBPACK_IMPORTED_MODULE_6__.measure) {\n (0,_intlify_shared__WEBPACK_IMPORTED_MODULE_6__.mark)(endTag);\n (0,_intlify_shared__WEBPACK_IMPORTED_MODULE_6__.measure)('intlify message evaluation', startTag, endTag);\n }\n }\n return messaged;\n}\n/** @internal */\nfunction parseTranslateArgs(...args) {\n const [arg1, arg2, arg3] = args;\n const options = (0,_intlify_shared__WEBPACK_IMPORTED_MODULE_6__.create)();\n if (!(0,_intlify_shared__WEBPACK_IMPORTED_MODULE_6__.isString)(arg1) && !(0,_intlify_shared__WEBPACK_IMPORTED_MODULE_6__.isNumber)(arg1) && !isMessageFunction(arg1) && !isMessageAST(arg1)) {\n throw createCoreError(CoreErrorCodes.INVALID_ARGUMENT);\n }\n // prettier-ignore\n const key = (0,_intlify_shared__WEBPACK_IMPORTED_MODULE_6__.isNumber)(arg1) ? String(arg1) : isMessageFunction(arg1) ? arg1 : arg1;\n if ((0,_intlify_shared__WEBPACK_IMPORTED_MODULE_6__.isNumber)(arg2)) {\n options.plural = arg2;\n } else if ((0,_intlify_shared__WEBPACK_IMPORTED_MODULE_6__.isString)(arg2)) {\n options.default = arg2;\n } else if ((0,_intlify_shared__WEBPACK_IMPORTED_MODULE_6__.isPlainObject)(arg2) && !(0,_intlify_shared__WEBPACK_IMPORTED_MODULE_6__.isEmptyObject)(arg2)) {\n options.named = arg2;\n } else if ((0,_intlify_shared__WEBPACK_IMPORTED_MODULE_6__.isArray)(arg2)) {\n options.list = arg2;\n }\n if ((0,_intlify_shared__WEBPACK_IMPORTED_MODULE_6__.isNumber)(arg3)) {\n options.plural = arg3;\n } else if ((0,_intlify_shared__WEBPACK_IMPORTED_MODULE_6__.isString)(arg3)) {\n options.default = arg3;\n } else if ((0,_intlify_shared__WEBPACK_IMPORTED_MODULE_6__.isPlainObject)(arg3)) {\n (0,_intlify_shared__WEBPACK_IMPORTED_MODULE_6__.assign)(options, arg3);\n }\n return [key, options];\n}\nfunction getCompileContext(context, locale, key, source, warnHtmlMessage, onError) {\n return {\n locale,\n key,\n warnHtmlMessage,\n onError: err => {\n onError && onError(err);\n if (true) {\n const _source = getSourceForCodeFrame(source);\n const message = `Message compilation error: ${err.message}`;\n const codeFrame = err.location && _source && (0,_intlify_shared__WEBPACK_IMPORTED_MODULE_6__.generateCodeFrame)(_source, err.location.start.offset, err.location.end.offset);\n const emitter = context.__v_emitter;\n if (emitter && _source) {\n emitter.emit(\"compile-error\" /* VueDevToolsTimelineEvents.COMPILE_ERROR */, {\n message: _source,\n error: err.message,\n start: err.location && err.location.start.offset,\n end: err.location && err.location.end.offset,\n groupId: `${'translate'}:${key}`\n });\n }\n console.error(codeFrame ? `${message}\\n${codeFrame}` : message);\n } else // removed by dead control flow\n{}\n },\n onCacheKey: source => (0,_intlify_shared__WEBPACK_IMPORTED_MODULE_6__.generateFormatCacheKey)(locale, key, source)\n };\n}\nfunction getSourceForCodeFrame(source) {\n if ((0,_intlify_shared__WEBPACK_IMPORTED_MODULE_6__.isString)(source)) {\n return source;\n } else {\n if (source.loc && source.loc.source) {\n return source.loc.source;\n }\n }\n}\nfunction getMessageContextOptions(context, locale, message, options) {\n const {\n modifiers,\n pluralRules,\n messageResolver: resolveValue,\n fallbackLocale,\n fallbackWarn,\n missingWarn,\n fallbackContext\n } = context;\n const resolveMessage = key => {\n let val = resolveValue(message, key);\n // fallback to root context\n if (val == null && fallbackContext) {\n const [,, message] = resolveMessageFormat(fallbackContext, key, locale, fallbackLocale, fallbackWarn, missingWarn);\n val = resolveValue(message, key);\n }\n if ((0,_intlify_shared__WEBPACK_IMPORTED_MODULE_6__.isString)(val) || isMessageAST(val)) {\n let occurred = false;\n const onError = () => {\n occurred = true;\n };\n const msg = compileMessageFormat(context, key, locale, val, key, onError);\n return !occurred ? msg : NOOP_MESSAGE_FUNCTION;\n } else if (isMessageFunction(val)) {\n return val;\n } else {\n // TODO: should be implemented warning message\n return NOOP_MESSAGE_FUNCTION;\n }\n };\n const ctxOptions = {\n locale,\n modifiers,\n pluralRules,\n messages: resolveMessage\n };\n if (context.processor) {\n ctxOptions.processor = context.processor;\n }\n if (options.list) {\n ctxOptions.list = options.list;\n }\n if (options.named) {\n ctxOptions.named = options.named;\n }\n if ((0,_intlify_shared__WEBPACK_IMPORTED_MODULE_6__.isNumber)(options.plural)) {\n ctxOptions.pluralIndex = options.plural;\n }\n return ctxOptions;\n}\nconst intlDefined = typeof Intl !== 'undefined';\nconst Availabilities = {\n dateTimeFormat: intlDefined && typeof Intl.DateTimeFormat !== 'undefined',\n numberFormat: intlDefined && typeof Intl.NumberFormat !== 'undefined'\n};\n\n// implementation of `datetime` function\nfunction datetime(context, ...args) {\n const {\n datetimeFormats,\n unresolving,\n fallbackLocale,\n onWarn,\n localeFallbacker\n } = context;\n const {\n __datetimeFormatters\n } = context;\n if ( true && !Availabilities.dateTimeFormat) {\n onWarn(getWarnMessage(CoreWarnCodes.CANNOT_FORMAT_DATE));\n return MISSING_RESOLVE_VALUE;\n }\n const [key, value, options, overrides] = parseDateTimeArgs(...args);\n const missingWarn = (0,_intlify_shared__WEBPACK_IMPORTED_MODULE_6__.isBoolean)(options.missingWarn) ? options.missingWarn : context.missingWarn;\n const fallbackWarn = (0,_intlify_shared__WEBPACK_IMPORTED_MODULE_6__.isBoolean)(options.fallbackWarn) ? options.fallbackWarn : context.fallbackWarn;\n const part = !!options.part;\n const locale = getLocale(context, options);\n const locales = localeFallbacker(context,\n // eslint-disable-line @typescript-eslint/no-explicit-any\n fallbackLocale, locale);\n if (!(0,_intlify_shared__WEBPACK_IMPORTED_MODULE_6__.isString)(key) || key === '') {\n return new Intl.DateTimeFormat(locale, overrides).format(value);\n }\n // resolve format\n let datetimeFormat = {};\n let targetLocale;\n let format = null;\n let from = locale;\n let to = null;\n const type = 'datetime format';\n for (let i = 0; i < locales.length; i++) {\n targetLocale = to = locales[i];\n if ( true && locale !== targetLocale && isTranslateFallbackWarn(fallbackWarn, key)) {\n onWarn(getWarnMessage(CoreWarnCodes.FALLBACK_TO_DATE_FORMAT, {\n key,\n target: targetLocale\n }));\n }\n // for vue-devtools timeline event\n if ( true && locale !== targetLocale) {\n const emitter = context.__v_emitter;\n if (emitter) {\n emitter.emit(\"fallback\" /* VueDevToolsTimelineEvents.FALBACK */, {\n type,\n key,\n from,\n to,\n groupId: `${type}:${key}`\n });\n }\n }\n datetimeFormat = datetimeFormats[targetLocale] || {};\n format = datetimeFormat[key];\n if ((0,_intlify_shared__WEBPACK_IMPORTED_MODULE_6__.isPlainObject)(format)) break;\n handleMissing(context, key, targetLocale, missingWarn, type); // eslint-disable-line @typescript-eslint/no-explicit-any\n from = to;\n }\n // checking format and target locale\n if (!(0,_intlify_shared__WEBPACK_IMPORTED_MODULE_6__.isPlainObject)(format) || !(0,_intlify_shared__WEBPACK_IMPORTED_MODULE_6__.isString)(targetLocale)) {\n return unresolving ? NOT_REOSLVED : key;\n }\n let id = `${targetLocale}__${key}`;\n if (!(0,_intlify_shared__WEBPACK_IMPORTED_MODULE_6__.isEmptyObject)(overrides)) {\n id = `${id}__${JSON.stringify(overrides)}`;\n }\n let formatter = __datetimeFormatters.get(id);\n if (!formatter) {\n formatter = new Intl.DateTimeFormat(targetLocale, (0,_intlify_shared__WEBPACK_IMPORTED_MODULE_6__.assign)({}, format, overrides));\n __datetimeFormatters.set(id, formatter);\n }\n return !part ? formatter.format(value) : formatter.formatToParts(value);\n}\n/** @internal */\nconst DATETIME_FORMAT_OPTIONS_KEYS = ['localeMatcher', 'weekday', 'era', 'year', 'month', 'day', 'hour', 'minute', 'second', 'timeZoneName', 'formatMatcher', 'hour12', 'timeZone', 'dateStyle', 'timeStyle', 'calendar', 'dayPeriod', 'numberingSystem', 'hourCycle', 'fractionalSecondDigits'];\n/** @internal */\nfunction parseDateTimeArgs(...args) {\n const [arg1, arg2, arg3, arg4] = args;\n const options = (0,_intlify_shared__WEBPACK_IMPORTED_MODULE_6__.create)();\n let overrides = (0,_intlify_shared__WEBPACK_IMPORTED_MODULE_6__.create)();\n let value;\n if ((0,_intlify_shared__WEBPACK_IMPORTED_MODULE_6__.isString)(arg1)) {\n // Only allow ISO strings - other date formats are often supported,\n // but may cause different results in different browsers.\n const matches = arg1.match(/(\\d{4}-\\d{2}-\\d{2})(T|\\s)?(.*)/);\n if (!matches) {\n throw createCoreError(CoreErrorCodes.INVALID_ISO_DATE_ARGUMENT);\n }\n // Some browsers can not parse the iso datetime separated by space,\n // this is a compromise solution by replace the 'T'/' ' with 'T'\n const dateTime = matches[3] ? matches[3].trim().startsWith('T') ? `${matches[1].trim()}${matches[3].trim()}` : `${matches[1].trim()}T${matches[3].trim()}` : matches[1].trim();\n value = new Date(dateTime);\n try {\n // This will fail if the date is not valid\n value.toISOString();\n } catch (e) {\n throw createCoreError(CoreErrorCodes.INVALID_ISO_DATE_ARGUMENT);\n }\n } else if ((0,_intlify_shared__WEBPACK_IMPORTED_MODULE_6__.isDate)(arg1)) {\n if (isNaN(arg1.getTime())) {\n throw createCoreError(CoreErrorCodes.INVALID_DATE_ARGUMENT);\n }\n value = arg1;\n } else if ((0,_intlify_shared__WEBPACK_IMPORTED_MODULE_6__.isNumber)(arg1)) {\n value = arg1;\n } else {\n throw createCoreError(CoreErrorCodes.INVALID_ARGUMENT);\n }\n if ((0,_intlify_shared__WEBPACK_IMPORTED_MODULE_6__.isString)(arg2)) {\n options.key = arg2;\n } else if ((0,_intlify_shared__WEBPACK_IMPORTED_MODULE_6__.isPlainObject)(arg2)) {\n Object.keys(arg2).forEach(key => {\n if (DATETIME_FORMAT_OPTIONS_KEYS.includes(key)) {\n overrides[key] = arg2[key];\n } else {\n options[key] = arg2[key];\n }\n });\n }\n if ((0,_intlify_shared__WEBPACK_IMPORTED_MODULE_6__.isString)(arg3)) {\n options.locale = arg3;\n } else if ((0,_intlify_shared__WEBPACK_IMPORTED_MODULE_6__.isPlainObject)(arg3)) {\n overrides = arg3;\n }\n if ((0,_intlify_shared__WEBPACK_IMPORTED_MODULE_6__.isPlainObject)(arg4)) {\n overrides = arg4;\n }\n return [options.key || '', value, options, overrides];\n}\n/** @internal */\nfunction clearDateTimeFormat(ctx, locale, format) {\n const context = ctx;\n for (const key in format) {\n const id = `${locale}__${key}`;\n if (!context.__datetimeFormatters.has(id)) {\n continue;\n }\n context.__datetimeFormatters.delete(id);\n }\n}\n\n// implementation of `number` function\nfunction number(context, ...args) {\n const {\n numberFormats,\n unresolving,\n fallbackLocale,\n onWarn,\n localeFallbacker\n } = context;\n const {\n __numberFormatters\n } = context;\n if ( true && !Availabilities.numberFormat) {\n onWarn(getWarnMessage(CoreWarnCodes.CANNOT_FORMAT_NUMBER));\n return MISSING_RESOLVE_VALUE;\n }\n const [key, value, options, overrides] = parseNumberArgs(...args);\n const missingWarn = (0,_intlify_shared__WEBPACK_IMPORTED_MODULE_6__.isBoolean)(options.missingWarn) ? options.missingWarn : context.missingWarn;\n const fallbackWarn = (0,_intlify_shared__WEBPACK_IMPORTED_MODULE_6__.isBoolean)(options.fallbackWarn) ? options.fallbackWarn : context.fallbackWarn;\n const part = !!options.part;\n const locale = getLocale(context, options);\n const locales = localeFallbacker(context,\n // eslint-disable-line @typescript-eslint/no-explicit-any\n fallbackLocale, locale);\n if (!(0,_intlify_shared__WEBPACK_IMPORTED_MODULE_6__.isString)(key) || key === '') {\n return new Intl.NumberFormat(locale, overrides).format(value);\n }\n // resolve format\n let numberFormat = {};\n let targetLocale;\n let format = null;\n let from = locale;\n let to = null;\n const type = 'number format';\n for (let i = 0; i < locales.length; i++) {\n targetLocale = to = locales[i];\n if ( true && locale !== targetLocale && isTranslateFallbackWarn(fallbackWarn, key)) {\n onWarn(getWarnMessage(CoreWarnCodes.FALLBACK_TO_NUMBER_FORMAT, {\n key,\n target: targetLocale\n }));\n }\n // for vue-devtools timeline event\n if ( true && locale !== targetLocale) {\n const emitter = context.__v_emitter;\n if (emitter) {\n emitter.emit(\"fallback\" /* VueDevToolsTimelineEvents.FALBACK */, {\n type,\n key,\n from,\n to,\n groupId: `${type}:${key}`\n });\n }\n }\n numberFormat = numberFormats[targetLocale] || {};\n format = numberFormat[key];\n if ((0,_intlify_shared__WEBPACK_IMPORTED_MODULE_6__.isPlainObject)(format)) break;\n handleMissing(context, key, targetLocale, missingWarn, type); // eslint-disable-line @typescript-eslint/no-explicit-any\n from = to;\n }\n // checking format and target locale\n if (!(0,_intlify_shared__WEBPACK_IMPORTED_MODULE_6__.isPlainObject)(format) || !(0,_intlify_shared__WEBPACK_IMPORTED_MODULE_6__.isString)(targetLocale)) {\n return unresolving ? NOT_REOSLVED : key;\n }\n let id = `${targetLocale}__${key}`;\n if (!(0,_intlify_shared__WEBPACK_IMPORTED_MODULE_6__.isEmptyObject)(overrides)) {\n id = `${id}__${JSON.stringify(overrides)}`;\n }\n let formatter = __numberFormatters.get(id);\n if (!formatter) {\n formatter = new Intl.NumberFormat(targetLocale, (0,_intlify_shared__WEBPACK_IMPORTED_MODULE_6__.assign)({}, format, overrides));\n __numberFormatters.set(id, formatter);\n }\n return !part ? formatter.format(value) : formatter.formatToParts(value);\n}\n/** @internal */\nconst NUMBER_FORMAT_OPTIONS_KEYS = ['localeMatcher', 'style', 'currency', 'currencyDisplay', 'currencySign', 'useGrouping', 'minimumIntegerDigits', 'minimumFractionDigits', 'maximumFractionDigits', 'minimumSignificantDigits', 'maximumSignificantDigits', 'compactDisplay', 'notation', 'signDisplay', 'unit', 'unitDisplay', 'roundingMode', 'roundingPriority', 'roundingIncrement', 'trailingZeroDisplay'];\n/** @internal */\nfunction parseNumberArgs(...args) {\n const [arg1, arg2, arg3, arg4] = args;\n const options = (0,_intlify_shared__WEBPACK_IMPORTED_MODULE_6__.create)();\n let overrides = (0,_intlify_shared__WEBPACK_IMPORTED_MODULE_6__.create)();\n if (!(0,_intlify_shared__WEBPACK_IMPORTED_MODULE_6__.isNumber)(arg1)) {\n throw createCoreError(CoreErrorCodes.INVALID_ARGUMENT);\n }\n const value = arg1;\n if ((0,_intlify_shared__WEBPACK_IMPORTED_MODULE_6__.isString)(arg2)) {\n options.key = arg2;\n } else if ((0,_intlify_shared__WEBPACK_IMPORTED_MODULE_6__.isPlainObject)(arg2)) {\n Object.keys(arg2).forEach(key => {\n if (NUMBER_FORMAT_OPTIONS_KEYS.includes(key)) {\n overrides[key] = arg2[key];\n } else {\n options[key] = arg2[key];\n }\n });\n }\n if ((0,_intlify_shared__WEBPACK_IMPORTED_MODULE_6__.isString)(arg3)) {\n options.locale = arg3;\n } else if ((0,_intlify_shared__WEBPACK_IMPORTED_MODULE_6__.isPlainObject)(arg3)) {\n overrides = arg3;\n }\n if ((0,_intlify_shared__WEBPACK_IMPORTED_MODULE_6__.isPlainObject)(arg4)) {\n overrides = arg4;\n }\n return [options.key || '', value, options, overrides];\n}\n/** @internal */\nfunction clearNumberFormat(ctx, locale, format) {\n const context = ctx;\n for (const key in format) {\n const id = `${locale}__${key}`;\n if (!context.__numberFormatters.has(id)) {\n continue;\n }\n context.__numberFormatters.delete(id);\n }\n}\n{\n initFeatureFlags();\n}\n\n\n//# sourceURL=webpack://jandl/./node_modules/@intlify/core-base/dist/core-base.mjs?\n}"); /***/ }), -/***/ "./node_modules/@intlify/devtools-if/dist/devtools-if.esm-bundler.js": -/*!***************************************************************************!*\ - !*** ./node_modules/@intlify/devtools-if/dist/devtools-if.esm-bundler.js ***! - \***************************************************************************/ -/***/ (function(__unused_webpack_module, __webpack_exports__, __webpack_require__) { - -"use strict"; -eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"IntlifyDevToolsHooks\": function() { return /* binding */ IntlifyDevToolsHooks; }\n/* harmony export */ });\n/*!\n * devtools-if v9.2.2\n * (c) 2022 kazuya kawaguchi\n * Released under the MIT License.\n */\nconst IntlifyDevToolsHooks = {\n I18nInit: 'i18n:init',\n FunctionTranslate: 'function:translate'\n};\n\n\n//# sourceURL=webpack://jandl/./node_modules/@intlify/devtools-if/dist/devtools-if.esm-bundler.js?"); - -/***/ }), - -/***/ "./node_modules/@intlify/message-compiler/dist/message-compiler.esm-bundler.js": +/***/ "./node_modules/@intlify/message-compiler/dist/message-compiler.esm-browser.js": /*!*************************************************************************************!*\ - !*** ./node_modules/@intlify/message-compiler/dist/message-compiler.esm-bundler.js ***! + !*** ./node_modules/@intlify/message-compiler/dist/message-compiler.esm-browser.js ***! \*************************************************************************************/ /***/ (function(__unused_webpack_module, __webpack_exports__, __webpack_require__) { "use strict"; -eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"CompileErrorCodes\": function() { return /* binding */ CompileErrorCodes; },\n/* harmony export */ \"ERROR_DOMAIN\": function() { return /* binding */ ERROR_DOMAIN; },\n/* harmony export */ \"LocationStub\": function() { return /* binding */ LocationStub; },\n/* harmony export */ \"baseCompile\": function() { return /* binding */ baseCompile; },\n/* harmony export */ \"createCompileError\": function() { return /* binding */ createCompileError; },\n/* harmony export */ \"createLocation\": function() { return /* binding */ createLocation; },\n/* harmony export */ \"createParser\": function() { return /* binding */ createParser; },\n/* harmony export */ \"createPosition\": function() { return /* binding */ createPosition; },\n/* harmony export */ \"defaultOnError\": function() { return /* binding */ defaultOnError; },\n/* harmony export */ \"errorMessages\": function() { return /* binding */ errorMessages; }\n/* harmony export */ });\n/* harmony import */ var core_js_modules_es_array_push_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! core-js/modules/es.array.push.js */ \"./node_modules/core-js/modules/es.array.push.js\");\n/* harmony import */ var core_js_modules_es_array_push_js__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_array_push_js__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var _intlify_shared__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! @intlify/shared */ \"./node_modules/@intlify/shared/dist/shared.esm-bundler.js\");\n\n/*!\n * message-compiler v9.2.2\n * (c) 2022 kazuya kawaguchi\n * Released under the MIT License.\n */\n\nconst CompileErrorCodes = {\n // tokenizer error codes\n EXPECTED_TOKEN: 1,\n INVALID_TOKEN_IN_PLACEHOLDER: 2,\n UNTERMINATED_SINGLE_QUOTE_IN_PLACEHOLDER: 3,\n UNKNOWN_ESCAPE_SEQUENCE: 4,\n INVALID_UNICODE_ESCAPE_SEQUENCE: 5,\n UNBALANCED_CLOSING_BRACE: 6,\n UNTERMINATED_CLOSING_BRACE: 7,\n EMPTY_PLACEHOLDER: 8,\n NOT_ALLOW_NEST_PLACEHOLDER: 9,\n INVALID_LINKED_FORMAT: 10,\n // parser error codes\n MUST_HAVE_MESSAGES_IN_PLURAL: 11,\n UNEXPECTED_EMPTY_LINKED_MODIFIER: 12,\n UNEXPECTED_EMPTY_LINKED_KEY: 13,\n UNEXPECTED_LEXICAL_ANALYSIS: 14,\n // Special value for higher-order compilers to pick up the last code\n // to avoid collision of error codes. This should always be kept as the last\n // item.\n __EXTEND_POINT__: 15\n};\n/** @internal */\nconst errorMessages = {\n // tokenizer error messages\n [CompileErrorCodes.EXPECTED_TOKEN]: `Expected token: '{0}'`,\n [CompileErrorCodes.INVALID_TOKEN_IN_PLACEHOLDER]: `Invalid token in placeholder: '{0}'`,\n [CompileErrorCodes.UNTERMINATED_SINGLE_QUOTE_IN_PLACEHOLDER]: `Unterminated single quote in placeholder`,\n [CompileErrorCodes.UNKNOWN_ESCAPE_SEQUENCE]: `Unknown escape sequence: \\\\{0}`,\n [CompileErrorCodes.INVALID_UNICODE_ESCAPE_SEQUENCE]: `Invalid unicode escape sequence: {0}`,\n [CompileErrorCodes.UNBALANCED_CLOSING_BRACE]: `Unbalanced closing brace`,\n [CompileErrorCodes.UNTERMINATED_CLOSING_BRACE]: `Unterminated closing brace`,\n [CompileErrorCodes.EMPTY_PLACEHOLDER]: `Empty placeholder`,\n [CompileErrorCodes.NOT_ALLOW_NEST_PLACEHOLDER]: `Not allowed nest placeholder`,\n [CompileErrorCodes.INVALID_LINKED_FORMAT]: `Invalid linked format`,\n // parser error messages\n [CompileErrorCodes.MUST_HAVE_MESSAGES_IN_PLURAL]: `Plural must have messages`,\n [CompileErrorCodes.UNEXPECTED_EMPTY_LINKED_MODIFIER]: `Unexpected empty linked modifier`,\n [CompileErrorCodes.UNEXPECTED_EMPTY_LINKED_KEY]: `Unexpected empty linked key`,\n [CompileErrorCodes.UNEXPECTED_LEXICAL_ANALYSIS]: `Unexpected lexical analysis in token: '{0}'`\n};\nfunction createCompileError(code, loc, options = {}) {\n const {\n domain,\n messages,\n args\n } = options;\n const msg = true ? (0,_intlify_shared__WEBPACK_IMPORTED_MODULE_1__.format)((messages || errorMessages)[code] || '', ...(args || [])) : 0;\n const error = new SyntaxError(String(msg));\n error.code = code;\n if (loc) {\n error.location = loc;\n }\n error.domain = domain;\n return error;\n}\n/** @internal */\nfunction defaultOnError(error) {\n throw error;\n}\nconst LocationStub = {\n start: {\n line: 1,\n column: 1,\n offset: 0\n },\n end: {\n line: 1,\n column: 1,\n offset: 0\n }\n};\nfunction createPosition(line, column, offset) {\n return {\n line,\n column,\n offset\n };\n}\nfunction createLocation(start, end, source) {\n const loc = {\n start,\n end\n };\n if (source != null) {\n loc.source = source;\n }\n return loc;\n}\nconst CHAR_SP = ' ';\nconst CHAR_CR = '\\r';\nconst CHAR_LF = '\\n';\nconst CHAR_LS = String.fromCharCode(0x2028);\nconst CHAR_PS = String.fromCharCode(0x2029);\nfunction createScanner(str) {\n const _buf = str;\n let _index = 0;\n let _line = 1;\n let _column = 1;\n let _peekOffset = 0;\n const isCRLF = index => _buf[index] === CHAR_CR && _buf[index + 1] === CHAR_LF;\n const isLF = index => _buf[index] === CHAR_LF;\n const isPS = index => _buf[index] === CHAR_PS;\n const isLS = index => _buf[index] === CHAR_LS;\n const isLineEnd = index => isCRLF(index) || isLF(index) || isPS(index) || isLS(index);\n const index = () => _index;\n const line = () => _line;\n const column = () => _column;\n const peekOffset = () => _peekOffset;\n const charAt = offset => isCRLF(offset) || isPS(offset) || isLS(offset) ? CHAR_LF : _buf[offset];\n const currentChar = () => charAt(_index);\n const currentPeek = () => charAt(_index + _peekOffset);\n function next() {\n _peekOffset = 0;\n if (isLineEnd(_index)) {\n _line++;\n _column = 0;\n }\n if (isCRLF(_index)) {\n _index++;\n }\n _index++;\n _column++;\n return _buf[_index];\n }\n function peek() {\n if (isCRLF(_index + _peekOffset)) {\n _peekOffset++;\n }\n _peekOffset++;\n return _buf[_index + _peekOffset];\n }\n function reset() {\n _index = 0;\n _line = 1;\n _column = 1;\n _peekOffset = 0;\n }\n function resetPeek(offset = 0) {\n _peekOffset = offset;\n }\n function skipToPeek() {\n const target = _index + _peekOffset;\n // eslint-disable-next-line no-unmodified-loop-condition\n while (target !== _index) {\n next();\n }\n _peekOffset = 0;\n }\n return {\n index,\n line,\n column,\n peekOffset,\n charAt,\n currentChar,\n currentPeek,\n next,\n peek,\n reset,\n resetPeek,\n skipToPeek\n };\n}\nconst EOF = undefined;\nconst LITERAL_DELIMITER = \"'\";\nconst ERROR_DOMAIN$1 = 'tokenizer';\nfunction createTokenizer(source, options = {}) {\n const location = options.location !== false;\n const _scnr = createScanner(source);\n const currentOffset = () => _scnr.index();\n const currentPosition = () => createPosition(_scnr.line(), _scnr.column(), _scnr.index());\n const _initLoc = currentPosition();\n const _initOffset = currentOffset();\n const _context = {\n currentType: 14 /* EOF */,\n offset: _initOffset,\n startLoc: _initLoc,\n endLoc: _initLoc,\n lastType: 14 /* EOF */,\n lastOffset: _initOffset,\n lastStartLoc: _initLoc,\n lastEndLoc: _initLoc,\n braceNest: 0,\n inLinked: false,\n text: ''\n };\n const context = () => _context;\n const {\n onError\n } = options;\n function emitError(code, pos, offset, ...args) {\n const ctx = context();\n pos.column += offset;\n pos.offset += offset;\n if (onError) {\n const loc = createLocation(ctx.startLoc, pos);\n const err = createCompileError(code, loc, {\n domain: ERROR_DOMAIN$1,\n args\n });\n onError(err);\n }\n }\n function getToken(context, type, value) {\n context.endLoc = currentPosition();\n context.currentType = type;\n const token = {\n type\n };\n if (location) {\n token.loc = createLocation(context.startLoc, context.endLoc);\n }\n if (value != null) {\n token.value = value;\n }\n return token;\n }\n const getEndToken = context => getToken(context, 14 /* EOF */);\n function eat(scnr, ch) {\n if (scnr.currentChar() === ch) {\n scnr.next();\n return ch;\n } else {\n emitError(CompileErrorCodes.EXPECTED_TOKEN, currentPosition(), 0, ch);\n return '';\n }\n }\n function peekSpaces(scnr) {\n let buf = '';\n while (scnr.currentPeek() === CHAR_SP || scnr.currentPeek() === CHAR_LF) {\n buf += scnr.currentPeek();\n scnr.peek();\n }\n return buf;\n }\n function skipSpaces(scnr) {\n const buf = peekSpaces(scnr);\n scnr.skipToPeek();\n return buf;\n }\n function isIdentifierStart(ch) {\n if (ch === EOF) {\n return false;\n }\n const cc = ch.charCodeAt(0);\n return cc >= 97 && cc <= 122 ||\n // a-z\n cc >= 65 && cc <= 90 ||\n // A-Z\n cc === 95 // _\n ;\n }\n\n function isNumberStart(ch) {\n if (ch === EOF) {\n return false;\n }\n const cc = ch.charCodeAt(0);\n return cc >= 48 && cc <= 57; // 0-9\n }\n\n function isNamedIdentifierStart(scnr, context) {\n const {\n currentType\n } = context;\n if (currentType !== 2 /* BraceLeft */) {\n return false;\n }\n peekSpaces(scnr);\n const ret = isIdentifierStart(scnr.currentPeek());\n scnr.resetPeek();\n return ret;\n }\n function isListIdentifierStart(scnr, context) {\n const {\n currentType\n } = context;\n if (currentType !== 2 /* BraceLeft */) {\n return false;\n }\n peekSpaces(scnr);\n const ch = scnr.currentPeek() === '-' ? scnr.peek() : scnr.currentPeek();\n const ret = isNumberStart(ch);\n scnr.resetPeek();\n return ret;\n }\n function isLiteralStart(scnr, context) {\n const {\n currentType\n } = context;\n if (currentType !== 2 /* BraceLeft */) {\n return false;\n }\n peekSpaces(scnr);\n const ret = scnr.currentPeek() === LITERAL_DELIMITER;\n scnr.resetPeek();\n return ret;\n }\n function isLinkedDotStart(scnr, context) {\n const {\n currentType\n } = context;\n if (currentType !== 8 /* LinkedAlias */) {\n return false;\n }\n peekSpaces(scnr);\n const ret = scnr.currentPeek() === \".\" /* LinkedDot */;\n scnr.resetPeek();\n return ret;\n }\n function isLinkedModifierStart(scnr, context) {\n const {\n currentType\n } = context;\n if (currentType !== 9 /* LinkedDot */) {\n return false;\n }\n peekSpaces(scnr);\n const ret = isIdentifierStart(scnr.currentPeek());\n scnr.resetPeek();\n return ret;\n }\n function isLinkedDelimiterStart(scnr, context) {\n const {\n currentType\n } = context;\n if (!(currentType === 8 /* LinkedAlias */ || currentType === 12 /* LinkedModifier */)) {\n return false;\n }\n peekSpaces(scnr);\n const ret = scnr.currentPeek() === \":\" /* LinkedDelimiter */;\n scnr.resetPeek();\n return ret;\n }\n function isLinkedReferStart(scnr, context) {\n const {\n currentType\n } = context;\n if (currentType !== 10 /* LinkedDelimiter */) {\n return false;\n }\n const fn = () => {\n const ch = scnr.currentPeek();\n if (ch === \"{\" /* BraceLeft */) {\n return isIdentifierStart(scnr.peek());\n } else if (ch === \"@\" /* LinkedAlias */ || ch === \"%\" /* Modulo */ || ch === \"|\" /* Pipe */ || ch === \":\" /* LinkedDelimiter */ || ch === \".\" /* LinkedDot */ || ch === CHAR_SP || !ch) {\n return false;\n } else if (ch === CHAR_LF) {\n scnr.peek();\n return fn();\n } else {\n // other characters\n return isIdentifierStart(ch);\n }\n };\n const ret = fn();\n scnr.resetPeek();\n return ret;\n }\n function isPluralStart(scnr) {\n peekSpaces(scnr);\n const ret = scnr.currentPeek() === \"|\" /* Pipe */;\n scnr.resetPeek();\n return ret;\n }\n function detectModuloStart(scnr) {\n const spaces = peekSpaces(scnr);\n const ret = scnr.currentPeek() === \"%\" /* Modulo */ && scnr.peek() === \"{\" /* BraceLeft */;\n scnr.resetPeek();\n return {\n isModulo: ret,\n hasSpace: spaces.length > 0\n };\n }\n function isTextStart(scnr, reset = true) {\n const fn = (hasSpace = false, prev = '', detectModulo = false) => {\n const ch = scnr.currentPeek();\n if (ch === \"{\" /* BraceLeft */) {\n return prev === \"%\" /* Modulo */ ? false : hasSpace;\n } else if (ch === \"@\" /* LinkedAlias */ || !ch) {\n return prev === \"%\" /* Modulo */ ? true : hasSpace;\n } else if (ch === \"%\" /* Modulo */) {\n scnr.peek();\n return fn(hasSpace, \"%\" /* Modulo */, true);\n } else if (ch === \"|\" /* Pipe */) {\n return prev === \"%\" /* Modulo */ || detectModulo ? true : !(prev === CHAR_SP || prev === CHAR_LF);\n } else if (ch === CHAR_SP) {\n scnr.peek();\n return fn(true, CHAR_SP, detectModulo);\n } else if (ch === CHAR_LF) {\n scnr.peek();\n return fn(true, CHAR_LF, detectModulo);\n } else {\n return true;\n }\n };\n const ret = fn();\n reset && scnr.resetPeek();\n return ret;\n }\n function takeChar(scnr, fn) {\n const ch = scnr.currentChar();\n if (ch === EOF) {\n return EOF;\n }\n if (fn(ch)) {\n scnr.next();\n return ch;\n }\n return null;\n }\n function takeIdentifierChar(scnr) {\n const closure = ch => {\n const cc = ch.charCodeAt(0);\n return cc >= 97 && cc <= 122 ||\n // a-z\n cc >= 65 && cc <= 90 ||\n // A-Z\n cc >= 48 && cc <= 57 ||\n // 0-9\n cc === 95 ||\n // _\n cc === 36 // $\n ;\n };\n\n return takeChar(scnr, closure);\n }\n function takeDigit(scnr) {\n const closure = ch => {\n const cc = ch.charCodeAt(0);\n return cc >= 48 && cc <= 57; // 0-9\n };\n\n return takeChar(scnr, closure);\n }\n function takeHexDigit(scnr) {\n const closure = ch => {\n const cc = ch.charCodeAt(0);\n return cc >= 48 && cc <= 57 ||\n // 0-9\n cc >= 65 && cc <= 70 ||\n // A-F\n cc >= 97 && cc <= 102; // a-f\n };\n\n return takeChar(scnr, closure);\n }\n function getDigits(scnr) {\n let ch = '';\n let num = '';\n while (ch = takeDigit(scnr)) {\n num += ch;\n }\n return num;\n }\n function readModulo(scnr) {\n skipSpaces(scnr);\n const ch = scnr.currentChar();\n if (ch !== \"%\" /* Modulo */) {\n emitError(CompileErrorCodes.EXPECTED_TOKEN, currentPosition(), 0, ch);\n }\n scnr.next();\n return \"%\" /* Modulo */;\n }\n\n function readText(scnr) {\n let buf = '';\n while (true) {\n const ch = scnr.currentChar();\n if (ch === \"{\" /* BraceLeft */ || ch === \"}\" /* BraceRight */ || ch === \"@\" /* LinkedAlias */ || ch === \"|\" /* Pipe */ || !ch) {\n break;\n } else if (ch === \"%\" /* Modulo */) {\n if (isTextStart(scnr)) {\n buf += ch;\n scnr.next();\n } else {\n break;\n }\n } else if (ch === CHAR_SP || ch === CHAR_LF) {\n if (isTextStart(scnr)) {\n buf += ch;\n scnr.next();\n } else if (isPluralStart(scnr)) {\n break;\n } else {\n buf += ch;\n scnr.next();\n }\n } else {\n buf += ch;\n scnr.next();\n }\n }\n return buf;\n }\n function readNamedIdentifier(scnr) {\n skipSpaces(scnr);\n let ch = '';\n let name = '';\n while (ch = takeIdentifierChar(scnr)) {\n name += ch;\n }\n if (scnr.currentChar() === EOF) {\n emitError(CompileErrorCodes.UNTERMINATED_CLOSING_BRACE, currentPosition(), 0);\n }\n return name;\n }\n function readListIdentifier(scnr) {\n skipSpaces(scnr);\n let value = '';\n if (scnr.currentChar() === '-') {\n scnr.next();\n value += `-${getDigits(scnr)}`;\n } else {\n value += getDigits(scnr);\n }\n if (scnr.currentChar() === EOF) {\n emitError(CompileErrorCodes.UNTERMINATED_CLOSING_BRACE, currentPosition(), 0);\n }\n return value;\n }\n function readLiteral(scnr) {\n skipSpaces(scnr);\n eat(scnr, `\\'`);\n let ch = '';\n let literal = '';\n const fn = x => x !== LITERAL_DELIMITER && x !== CHAR_LF;\n while (ch = takeChar(scnr, fn)) {\n if (ch === '\\\\') {\n literal += readEscapeSequence(scnr);\n } else {\n literal += ch;\n }\n }\n const current = scnr.currentChar();\n if (current === CHAR_LF || current === EOF) {\n emitError(CompileErrorCodes.UNTERMINATED_SINGLE_QUOTE_IN_PLACEHOLDER, currentPosition(), 0);\n // TODO: Is it correct really?\n if (current === CHAR_LF) {\n scnr.next();\n eat(scnr, `\\'`);\n }\n return literal;\n }\n eat(scnr, `\\'`);\n return literal;\n }\n function readEscapeSequence(scnr) {\n const ch = scnr.currentChar();\n switch (ch) {\n case '\\\\':\n case `\\'`:\n scnr.next();\n return `\\\\${ch}`;\n case 'u':\n return readUnicodeEscapeSequence(scnr, ch, 4);\n case 'U':\n return readUnicodeEscapeSequence(scnr, ch, 6);\n default:\n emitError(CompileErrorCodes.UNKNOWN_ESCAPE_SEQUENCE, currentPosition(), 0, ch);\n return '';\n }\n }\n function readUnicodeEscapeSequence(scnr, unicode, digits) {\n eat(scnr, unicode);\n let sequence = '';\n for (let i = 0; i < digits; i++) {\n const ch = takeHexDigit(scnr);\n if (!ch) {\n emitError(CompileErrorCodes.INVALID_UNICODE_ESCAPE_SEQUENCE, currentPosition(), 0, `\\\\${unicode}${sequence}${scnr.currentChar()}`);\n break;\n }\n sequence += ch;\n }\n return `\\\\${unicode}${sequence}`;\n }\n function readInvalidIdentifier(scnr) {\n skipSpaces(scnr);\n let ch = '';\n let identifiers = '';\n const closure = ch => ch !== \"{\" /* BraceLeft */ && ch !== \"}\" /* BraceRight */ && ch !== CHAR_SP && ch !== CHAR_LF;\n while (ch = takeChar(scnr, closure)) {\n identifiers += ch;\n }\n return identifiers;\n }\n function readLinkedModifier(scnr) {\n let ch = '';\n let name = '';\n while (ch = takeIdentifierChar(scnr)) {\n name += ch;\n }\n return name;\n }\n function readLinkedRefer(scnr) {\n const fn = (detect = false, buf) => {\n const ch = scnr.currentChar();\n if (ch === \"{\" /* BraceLeft */ || ch === \"%\" /* Modulo */ || ch === \"@\" /* LinkedAlias */ || ch === \"|\" /* Pipe */ || !ch) {\n return buf;\n } else if (ch === CHAR_SP) {\n return buf;\n } else if (ch === CHAR_LF) {\n buf += ch;\n scnr.next();\n return fn(detect, buf);\n } else {\n buf += ch;\n scnr.next();\n return fn(true, buf);\n }\n };\n return fn(false, '');\n }\n function readPlural(scnr) {\n skipSpaces(scnr);\n const plural = eat(scnr, \"|\" /* Pipe */);\n skipSpaces(scnr);\n return plural;\n }\n // TODO: We need refactoring of token parsing ...\n function readTokenInPlaceholder(scnr, context) {\n let token = null;\n const ch = scnr.currentChar();\n switch (ch) {\n case \"{\" /* BraceLeft */:\n if (context.braceNest >= 1) {\n emitError(CompileErrorCodes.NOT_ALLOW_NEST_PLACEHOLDER, currentPosition(), 0);\n }\n scnr.next();\n token = getToken(context, 2 /* BraceLeft */, \"{\" /* BraceLeft */);\n skipSpaces(scnr);\n context.braceNest++;\n return token;\n case \"}\" /* BraceRight */:\n if (context.braceNest > 0 && context.currentType === 2 /* BraceLeft */) {\n emitError(CompileErrorCodes.EMPTY_PLACEHOLDER, currentPosition(), 0);\n }\n scnr.next();\n token = getToken(context, 3 /* BraceRight */, \"}\" /* BraceRight */);\n context.braceNest--;\n context.braceNest > 0 && skipSpaces(scnr);\n if (context.inLinked && context.braceNest === 0) {\n context.inLinked = false;\n }\n return token;\n case \"@\" /* LinkedAlias */:\n if (context.braceNest > 0) {\n emitError(CompileErrorCodes.UNTERMINATED_CLOSING_BRACE, currentPosition(), 0);\n }\n token = readTokenInLinked(scnr, context) || getEndToken(context);\n context.braceNest = 0;\n return token;\n default:\n let validNamedIdentifier = true;\n let validListIdentifier = true;\n let validLiteral = true;\n if (isPluralStart(scnr)) {\n if (context.braceNest > 0) {\n emitError(CompileErrorCodes.UNTERMINATED_CLOSING_BRACE, currentPosition(), 0);\n }\n token = getToken(context, 1 /* Pipe */, readPlural(scnr));\n // reset\n context.braceNest = 0;\n context.inLinked = false;\n return token;\n }\n if (context.braceNest > 0 && (context.currentType === 5 /* Named */ || context.currentType === 6 /* List */ || context.currentType === 7 /* Literal */)) {\n emitError(CompileErrorCodes.UNTERMINATED_CLOSING_BRACE, currentPosition(), 0);\n context.braceNest = 0;\n return readToken(scnr, context);\n }\n if (validNamedIdentifier = isNamedIdentifierStart(scnr, context)) {\n token = getToken(context, 5 /* Named */, readNamedIdentifier(scnr));\n skipSpaces(scnr);\n return token;\n }\n if (validListIdentifier = isListIdentifierStart(scnr, context)) {\n token = getToken(context, 6 /* List */, readListIdentifier(scnr));\n skipSpaces(scnr);\n return token;\n }\n if (validLiteral = isLiteralStart(scnr, context)) {\n token = getToken(context, 7 /* Literal */, readLiteral(scnr));\n skipSpaces(scnr);\n return token;\n }\n if (!validNamedIdentifier && !validListIdentifier && !validLiteral) {\n // TODO: we should be re-designed invalid cases, when we will extend message syntax near the future ...\n token = getToken(context, 13 /* InvalidPlace */, readInvalidIdentifier(scnr));\n emitError(CompileErrorCodes.INVALID_TOKEN_IN_PLACEHOLDER, currentPosition(), 0, token.value);\n skipSpaces(scnr);\n return token;\n }\n break;\n }\n return token;\n }\n // TODO: We need refactoring of token parsing ...\n function readTokenInLinked(scnr, context) {\n const {\n currentType\n } = context;\n let token = null;\n const ch = scnr.currentChar();\n if ((currentType === 8 /* LinkedAlias */ || currentType === 9 /* LinkedDot */ || currentType === 12 /* LinkedModifier */ || currentType === 10 /* LinkedDelimiter */) && (ch === CHAR_LF || ch === CHAR_SP)) {\n emitError(CompileErrorCodes.INVALID_LINKED_FORMAT, currentPosition(), 0);\n }\n switch (ch) {\n case \"@\" /* LinkedAlias */:\n scnr.next();\n token = getToken(context, 8 /* LinkedAlias */, \"@\" /* LinkedAlias */);\n context.inLinked = true;\n return token;\n case \".\" /* LinkedDot */:\n skipSpaces(scnr);\n scnr.next();\n return getToken(context, 9 /* LinkedDot */, \".\" /* LinkedDot */);\n case \":\" /* LinkedDelimiter */:\n skipSpaces(scnr);\n scnr.next();\n return getToken(context, 10 /* LinkedDelimiter */, \":\" /* LinkedDelimiter */);\n default:\n if (isPluralStart(scnr)) {\n token = getToken(context, 1 /* Pipe */, readPlural(scnr));\n // reset\n context.braceNest = 0;\n context.inLinked = false;\n return token;\n }\n if (isLinkedDotStart(scnr, context) || isLinkedDelimiterStart(scnr, context)) {\n skipSpaces(scnr);\n return readTokenInLinked(scnr, context);\n }\n if (isLinkedModifierStart(scnr, context)) {\n skipSpaces(scnr);\n return getToken(context, 12 /* LinkedModifier */, readLinkedModifier(scnr));\n }\n if (isLinkedReferStart(scnr, context)) {\n skipSpaces(scnr);\n if (ch === \"{\" /* BraceLeft */) {\n // scan the placeholder\n return readTokenInPlaceholder(scnr, context) || token;\n } else {\n return getToken(context, 11 /* LinkedKey */, readLinkedRefer(scnr));\n }\n }\n if (currentType === 8 /* LinkedAlias */) {\n emitError(CompileErrorCodes.INVALID_LINKED_FORMAT, currentPosition(), 0);\n }\n context.braceNest = 0;\n context.inLinked = false;\n return readToken(scnr, context);\n }\n }\n // TODO: We need refactoring of token parsing ...\n function readToken(scnr, context) {\n let token = {\n type: 14 /* EOF */\n };\n if (context.braceNest > 0) {\n return readTokenInPlaceholder(scnr, context) || getEndToken(context);\n }\n if (context.inLinked) {\n return readTokenInLinked(scnr, context) || getEndToken(context);\n }\n const ch = scnr.currentChar();\n switch (ch) {\n case \"{\" /* BraceLeft */:\n return readTokenInPlaceholder(scnr, context) || getEndToken(context);\n case \"}\" /* BraceRight */:\n emitError(CompileErrorCodes.UNBALANCED_CLOSING_BRACE, currentPosition(), 0);\n scnr.next();\n return getToken(context, 3 /* BraceRight */, \"}\" /* BraceRight */);\n case \"@\" /* LinkedAlias */:\n return readTokenInLinked(scnr, context) || getEndToken(context);\n default:\n if (isPluralStart(scnr)) {\n token = getToken(context, 1 /* Pipe */, readPlural(scnr));\n // reset\n context.braceNest = 0;\n context.inLinked = false;\n return token;\n }\n const {\n isModulo,\n hasSpace\n } = detectModuloStart(scnr);\n if (isModulo) {\n return hasSpace ? getToken(context, 0 /* Text */, readText(scnr)) : getToken(context, 4 /* Modulo */, readModulo(scnr));\n }\n if (isTextStart(scnr)) {\n return getToken(context, 0 /* Text */, readText(scnr));\n }\n break;\n }\n return token;\n }\n function nextToken() {\n const {\n currentType,\n offset,\n startLoc,\n endLoc\n } = _context;\n _context.lastType = currentType;\n _context.lastOffset = offset;\n _context.lastStartLoc = startLoc;\n _context.lastEndLoc = endLoc;\n _context.offset = currentOffset();\n _context.startLoc = currentPosition();\n if (_scnr.currentChar() === EOF) {\n return getToken(_context, 14 /* EOF */);\n }\n\n return readToken(_scnr, _context);\n }\n return {\n nextToken,\n currentOffset,\n currentPosition,\n context\n };\n}\nconst ERROR_DOMAIN = 'parser';\n// Backslash backslash, backslash quote, uHHHH, UHHHHHH.\nconst KNOWN_ESCAPES = /(?:\\\\\\\\|\\\\'|\\\\u([0-9a-fA-F]{4})|\\\\U([0-9a-fA-F]{6}))/g;\nfunction fromEscapeSequence(match, codePoint4, codePoint6) {\n switch (match) {\n case `\\\\\\\\`:\n return `\\\\`;\n case `\\\\\\'`:\n return `\\'`;\n default:\n {\n const codePoint = parseInt(codePoint4 || codePoint6, 16);\n if (codePoint <= 0xd7ff || codePoint >= 0xe000) {\n return String.fromCodePoint(codePoint);\n }\n // invalid ...\n // Replace them with U+FFFD REPLACEMENT CHARACTER.\n return '�';\n }\n }\n}\nfunction createParser(options = {}) {\n const location = options.location !== false;\n const {\n onError\n } = options;\n function emitError(tokenzer, code, start, offset, ...args) {\n const end = tokenzer.currentPosition();\n end.offset += offset;\n end.column += offset;\n if (onError) {\n const loc = createLocation(start, end);\n const err = createCompileError(code, loc, {\n domain: ERROR_DOMAIN,\n args\n });\n onError(err);\n }\n }\n function startNode(type, offset, loc) {\n const node = {\n type,\n start: offset,\n end: offset\n };\n if (location) {\n node.loc = {\n start: loc,\n end: loc\n };\n }\n return node;\n }\n function endNode(node, offset, pos, type) {\n node.end = offset;\n if (type) {\n node.type = type;\n }\n if (location && node.loc) {\n node.loc.end = pos;\n }\n }\n function parseText(tokenizer, value) {\n const context = tokenizer.context();\n const node = startNode(3 /* Text */, context.offset, context.startLoc);\n node.value = value;\n endNode(node, tokenizer.currentOffset(), tokenizer.currentPosition());\n return node;\n }\n function parseList(tokenizer, index) {\n const context = tokenizer.context();\n const {\n lastOffset: offset,\n lastStartLoc: loc\n } = context; // get brace left loc\n const node = startNode(5 /* List */, offset, loc);\n node.index = parseInt(index, 10);\n tokenizer.nextToken(); // skip brach right\n endNode(node, tokenizer.currentOffset(), tokenizer.currentPosition());\n return node;\n }\n function parseNamed(tokenizer, key) {\n const context = tokenizer.context();\n const {\n lastOffset: offset,\n lastStartLoc: loc\n } = context; // get brace left loc\n const node = startNode(4 /* Named */, offset, loc);\n node.key = key;\n tokenizer.nextToken(); // skip brach right\n endNode(node, tokenizer.currentOffset(), tokenizer.currentPosition());\n return node;\n }\n function parseLiteral(tokenizer, value) {\n const context = tokenizer.context();\n const {\n lastOffset: offset,\n lastStartLoc: loc\n } = context; // get brace left loc\n const node = startNode(9 /* Literal */, offset, loc);\n node.value = value.replace(KNOWN_ESCAPES, fromEscapeSequence);\n tokenizer.nextToken(); // skip brach right\n endNode(node, tokenizer.currentOffset(), tokenizer.currentPosition());\n return node;\n }\n function parseLinkedModifier(tokenizer) {\n const token = tokenizer.nextToken();\n const context = tokenizer.context();\n const {\n lastOffset: offset,\n lastStartLoc: loc\n } = context; // get linked dot loc\n const node = startNode(8 /* LinkedModifier */, offset, loc);\n if (token.type !== 12 /* LinkedModifier */) {\n // empty modifier\n emitError(tokenizer, CompileErrorCodes.UNEXPECTED_EMPTY_LINKED_MODIFIER, context.lastStartLoc, 0);\n node.value = '';\n endNode(node, offset, loc);\n return {\n nextConsumeToken: token,\n node\n };\n }\n // check token\n if (token.value == null) {\n emitError(tokenizer, CompileErrorCodes.UNEXPECTED_LEXICAL_ANALYSIS, context.lastStartLoc, 0, getTokenCaption(token));\n }\n node.value = token.value || '';\n endNode(node, tokenizer.currentOffset(), tokenizer.currentPosition());\n return {\n node\n };\n }\n function parseLinkedKey(tokenizer, value) {\n const context = tokenizer.context();\n const node = startNode(7 /* LinkedKey */, context.offset, context.startLoc);\n node.value = value;\n endNode(node, tokenizer.currentOffset(), tokenizer.currentPosition());\n return node;\n }\n function parseLinked(tokenizer) {\n const context = tokenizer.context();\n const linkedNode = startNode(6 /* Linked */, context.offset, context.startLoc);\n let token = tokenizer.nextToken();\n if (token.type === 9 /* LinkedDot */) {\n const parsed = parseLinkedModifier(tokenizer);\n linkedNode.modifier = parsed.node;\n token = parsed.nextConsumeToken || tokenizer.nextToken();\n }\n // asset check token\n if (token.type !== 10 /* LinkedDelimiter */) {\n emitError(tokenizer, CompileErrorCodes.UNEXPECTED_LEXICAL_ANALYSIS, context.lastStartLoc, 0, getTokenCaption(token));\n }\n token = tokenizer.nextToken();\n // skip brace left\n if (token.type === 2 /* BraceLeft */) {\n token = tokenizer.nextToken();\n }\n switch (token.type) {\n case 11 /* LinkedKey */:\n if (token.value == null) {\n emitError(tokenizer, CompileErrorCodes.UNEXPECTED_LEXICAL_ANALYSIS, context.lastStartLoc, 0, getTokenCaption(token));\n }\n linkedNode.key = parseLinkedKey(tokenizer, token.value || '');\n break;\n case 5 /* Named */:\n if (token.value == null) {\n emitError(tokenizer, CompileErrorCodes.UNEXPECTED_LEXICAL_ANALYSIS, context.lastStartLoc, 0, getTokenCaption(token));\n }\n linkedNode.key = parseNamed(tokenizer, token.value || '');\n break;\n case 6 /* List */:\n if (token.value == null) {\n emitError(tokenizer, CompileErrorCodes.UNEXPECTED_LEXICAL_ANALYSIS, context.lastStartLoc, 0, getTokenCaption(token));\n }\n linkedNode.key = parseList(tokenizer, token.value || '');\n break;\n case 7 /* Literal */:\n if (token.value == null) {\n emitError(tokenizer, CompileErrorCodes.UNEXPECTED_LEXICAL_ANALYSIS, context.lastStartLoc, 0, getTokenCaption(token));\n }\n linkedNode.key = parseLiteral(tokenizer, token.value || '');\n break;\n default:\n // empty key\n emitError(tokenizer, CompileErrorCodes.UNEXPECTED_EMPTY_LINKED_KEY, context.lastStartLoc, 0);\n const nextContext = tokenizer.context();\n const emptyLinkedKeyNode = startNode(7 /* LinkedKey */, nextContext.offset, nextContext.startLoc);\n emptyLinkedKeyNode.value = '';\n endNode(emptyLinkedKeyNode, nextContext.offset, nextContext.startLoc);\n linkedNode.key = emptyLinkedKeyNode;\n endNode(linkedNode, nextContext.offset, nextContext.startLoc);\n return {\n nextConsumeToken: token,\n node: linkedNode\n };\n }\n endNode(linkedNode, tokenizer.currentOffset(), tokenizer.currentPosition());\n return {\n node: linkedNode\n };\n }\n function parseMessage(tokenizer) {\n const context = tokenizer.context();\n const startOffset = context.currentType === 1 /* Pipe */ ? tokenizer.currentOffset() : context.offset;\n const startLoc = context.currentType === 1 /* Pipe */ ? context.endLoc : context.startLoc;\n const node = startNode(2 /* Message */, startOffset, startLoc);\n node.items = [];\n let nextToken = null;\n do {\n const token = nextToken || tokenizer.nextToken();\n nextToken = null;\n switch (token.type) {\n case 0 /* Text */:\n if (token.value == null) {\n emitError(tokenizer, CompileErrorCodes.UNEXPECTED_LEXICAL_ANALYSIS, context.lastStartLoc, 0, getTokenCaption(token));\n }\n node.items.push(parseText(tokenizer, token.value || ''));\n break;\n case 6 /* List */:\n if (token.value == null) {\n emitError(tokenizer, CompileErrorCodes.UNEXPECTED_LEXICAL_ANALYSIS, context.lastStartLoc, 0, getTokenCaption(token));\n }\n node.items.push(parseList(tokenizer, token.value || ''));\n break;\n case 5 /* Named */:\n if (token.value == null) {\n emitError(tokenizer, CompileErrorCodes.UNEXPECTED_LEXICAL_ANALYSIS, context.lastStartLoc, 0, getTokenCaption(token));\n }\n node.items.push(parseNamed(tokenizer, token.value || ''));\n break;\n case 7 /* Literal */:\n if (token.value == null) {\n emitError(tokenizer, CompileErrorCodes.UNEXPECTED_LEXICAL_ANALYSIS, context.lastStartLoc, 0, getTokenCaption(token));\n }\n node.items.push(parseLiteral(tokenizer, token.value || ''));\n break;\n case 8 /* LinkedAlias */:\n const parsed = parseLinked(tokenizer);\n node.items.push(parsed.node);\n nextToken = parsed.nextConsumeToken || null;\n break;\n }\n } while (context.currentType !== 14 /* EOF */ && context.currentType !== 1 /* Pipe */);\n // adjust message node loc\n const endOffset = context.currentType === 1 /* Pipe */ ? context.lastOffset : tokenizer.currentOffset();\n const endLoc = context.currentType === 1 /* Pipe */ ? context.lastEndLoc : tokenizer.currentPosition();\n endNode(node, endOffset, endLoc);\n return node;\n }\n function parsePlural(tokenizer, offset, loc, msgNode) {\n const context = tokenizer.context();\n let hasEmptyMessage = msgNode.items.length === 0;\n const node = startNode(1 /* Plural */, offset, loc);\n node.cases = [];\n node.cases.push(msgNode);\n do {\n const msg = parseMessage(tokenizer);\n if (!hasEmptyMessage) {\n hasEmptyMessage = msg.items.length === 0;\n }\n node.cases.push(msg);\n } while (context.currentType !== 14 /* EOF */);\n if (hasEmptyMessage) {\n emitError(tokenizer, CompileErrorCodes.MUST_HAVE_MESSAGES_IN_PLURAL, loc, 0);\n }\n endNode(node, tokenizer.currentOffset(), tokenizer.currentPosition());\n return node;\n }\n function parseResource(tokenizer) {\n const context = tokenizer.context();\n const {\n offset,\n startLoc\n } = context;\n const msgNode = parseMessage(tokenizer);\n if (context.currentType === 14 /* EOF */) {\n return msgNode;\n } else {\n return parsePlural(tokenizer, offset, startLoc, msgNode);\n }\n }\n function parse(source) {\n const tokenizer = createTokenizer(source, (0,_intlify_shared__WEBPACK_IMPORTED_MODULE_1__.assign)({}, options));\n const context = tokenizer.context();\n const node = startNode(0 /* Resource */, context.offset, context.startLoc);\n if (location && node.loc) {\n node.loc.source = source;\n }\n node.body = parseResource(tokenizer);\n // assert whether achieved to EOF\n if (context.currentType !== 14 /* EOF */) {\n emitError(tokenizer, CompileErrorCodes.UNEXPECTED_LEXICAL_ANALYSIS, context.lastStartLoc, 0, source[context.offset] || '');\n }\n endNode(node, tokenizer.currentOffset(), tokenizer.currentPosition());\n return node;\n }\n return {\n parse\n };\n}\nfunction getTokenCaption(token) {\n if (token.type === 14 /* EOF */) {\n return 'EOF';\n }\n const name = (token.value || '').replace(/\\r?\\n/gu, '\\\\n');\n return name.length > 10 ? name.slice(0, 9) + '…' : name;\n}\nfunction createTransformer(ast, options = {} // eslint-disable-line\n) {\n const _context = {\n ast,\n helpers: new Set()\n };\n const context = () => _context;\n const helper = name => {\n _context.helpers.add(name);\n return name;\n };\n return {\n context,\n helper\n };\n}\nfunction traverseNodes(nodes, transformer) {\n for (let i = 0; i < nodes.length; i++) {\n traverseNode(nodes[i], transformer);\n }\n}\nfunction traverseNode(node, transformer) {\n // TODO: if we need pre-hook of transform, should be implemented to here\n switch (node.type) {\n case 1 /* Plural */:\n traverseNodes(node.cases, transformer);\n transformer.helper(\"plural\" /* PLURAL */);\n break;\n case 2 /* Message */:\n traverseNodes(node.items, transformer);\n break;\n case 6 /* Linked */:\n const linked = node;\n traverseNode(linked.key, transformer);\n transformer.helper(\"linked\" /* LINKED */);\n transformer.helper(\"type\" /* TYPE */);\n break;\n case 5 /* List */:\n transformer.helper(\"interpolate\" /* INTERPOLATE */);\n transformer.helper(\"list\" /* LIST */);\n break;\n case 4 /* Named */:\n transformer.helper(\"interpolate\" /* INTERPOLATE */);\n transformer.helper(\"named\" /* NAMED */);\n break;\n }\n // TODO: if we need post-hook of transform, should be implemented to here\n}\n// transform AST\nfunction transform(ast, options = {} // eslint-disable-line\n) {\n const transformer = createTransformer(ast);\n transformer.helper(\"normalize\" /* NORMALIZE */);\n // traverse\n ast.body && traverseNode(ast.body, transformer);\n // set meta information\n const context = transformer.context();\n ast.helpers = Array.from(context.helpers);\n}\nfunction createCodeGenerator(ast, options) {\n const {\n sourceMap,\n filename,\n breakLineCode,\n needIndent: _needIndent\n } = options;\n const _context = {\n source: ast.loc.source,\n filename,\n code: '',\n column: 1,\n line: 1,\n offset: 0,\n map: undefined,\n breakLineCode,\n needIndent: _needIndent,\n indentLevel: 0\n };\n const context = () => _context;\n function push(code, node) {\n _context.code += code;\n }\n function _newline(n, withBreakLine = true) {\n const _breakLineCode = withBreakLine ? breakLineCode : '';\n push(_needIndent ? _breakLineCode + ` `.repeat(n) : _breakLineCode);\n }\n function indent(withNewLine = true) {\n const level = ++_context.indentLevel;\n withNewLine && _newline(level);\n }\n function deindent(withNewLine = true) {\n const level = --_context.indentLevel;\n withNewLine && _newline(level);\n }\n function newline() {\n _newline(_context.indentLevel);\n }\n const helper = key => `_${key}`;\n const needIndent = () => _context.needIndent;\n return {\n context,\n push,\n indent,\n deindent,\n newline,\n helper,\n needIndent\n };\n}\nfunction generateLinkedNode(generator, node) {\n const {\n helper\n } = generator;\n generator.push(`${helper(\"linked\" /* LINKED */)}(`);\n generateNode(generator, node.key);\n if (node.modifier) {\n generator.push(`, `);\n generateNode(generator, node.modifier);\n generator.push(`, _type`);\n } else {\n generator.push(`, undefined, _type`);\n }\n generator.push(`)`);\n}\nfunction generateMessageNode(generator, node) {\n const {\n helper,\n needIndent\n } = generator;\n generator.push(`${helper(\"normalize\" /* NORMALIZE */)}([`);\n generator.indent(needIndent());\n const length = node.items.length;\n for (let i = 0; i < length; i++) {\n generateNode(generator, node.items[i]);\n if (i === length - 1) {\n break;\n }\n generator.push(', ');\n }\n generator.deindent(needIndent());\n generator.push('])');\n}\nfunction generatePluralNode(generator, node) {\n const {\n helper,\n needIndent\n } = generator;\n if (node.cases.length > 1) {\n generator.push(`${helper(\"plural\" /* PLURAL */)}([`);\n generator.indent(needIndent());\n const length = node.cases.length;\n for (let i = 0; i < length; i++) {\n generateNode(generator, node.cases[i]);\n if (i === length - 1) {\n break;\n }\n generator.push(', ');\n }\n generator.deindent(needIndent());\n generator.push(`])`);\n }\n}\nfunction generateResource(generator, node) {\n if (node.body) {\n generateNode(generator, node.body);\n } else {\n generator.push('null');\n }\n}\nfunction generateNode(generator, node) {\n const {\n helper\n } = generator;\n switch (node.type) {\n case 0 /* Resource */:\n generateResource(generator, node);\n break;\n case 1 /* Plural */:\n generatePluralNode(generator, node);\n break;\n case 2 /* Message */:\n generateMessageNode(generator, node);\n break;\n case 6 /* Linked */:\n generateLinkedNode(generator, node);\n break;\n case 8 /* LinkedModifier */:\n generator.push(JSON.stringify(node.value), node);\n break;\n case 7 /* LinkedKey */:\n generator.push(JSON.stringify(node.value), node);\n break;\n case 5 /* List */:\n generator.push(`${helper(\"interpolate\" /* INTERPOLATE */)}(${helper(\"list\" /* LIST */)}(${node.index}))`, node);\n break;\n case 4 /* Named */:\n generator.push(`${helper(\"interpolate\" /* INTERPOLATE */)}(${helper(\"named\" /* NAMED */)}(${JSON.stringify(node.key)}))`, node);\n break;\n case 9 /* Literal */:\n generator.push(JSON.stringify(node.value), node);\n break;\n case 3 /* Text */:\n generator.push(JSON.stringify(node.value), node);\n break;\n default:\n if (true) {\n throw new Error(`unhandled codegen node type: ${node.type}`);\n }\n }\n}\n// generate code from AST\nconst generate = (ast, options = {} // eslint-disable-line\n) => {\n const mode = (0,_intlify_shared__WEBPACK_IMPORTED_MODULE_1__.isString)(options.mode) ? options.mode : 'normal';\n const filename = (0,_intlify_shared__WEBPACK_IMPORTED_MODULE_1__.isString)(options.filename) ? options.filename : 'message.intl';\n const sourceMap = !!options.sourceMap;\n // prettier-ignore\n const breakLineCode = options.breakLineCode != null ? options.breakLineCode : mode === 'arrow' ? ';' : '\\n';\n const needIndent = options.needIndent ? options.needIndent : mode !== 'arrow';\n const helpers = ast.helpers || [];\n const generator = createCodeGenerator(ast, {\n mode,\n filename,\n sourceMap,\n breakLineCode,\n needIndent\n });\n generator.push(mode === 'normal' ? `function __msg__ (ctx) {` : `(ctx) => {`);\n generator.indent(needIndent);\n if (helpers.length > 0) {\n generator.push(`const { ${helpers.map(s => `${s}: _${s}`).join(', ')} } = ctx`);\n generator.newline();\n }\n generator.push(`return `);\n generateNode(generator, ast);\n generator.deindent(needIndent);\n generator.push(`}`);\n const {\n code,\n map\n } = generator.context();\n return {\n ast,\n code,\n map: map ? map.toJSON() : undefined // eslint-disable-line @typescript-eslint/no-explicit-any\n };\n};\n\nfunction baseCompile(source, options = {}) {\n const assignedOptions = (0,_intlify_shared__WEBPACK_IMPORTED_MODULE_1__.assign)({}, options);\n // parse source codes\n const parser = createParser(assignedOptions);\n const ast = parser.parse(source);\n // transform ASTs\n transform(ast, assignedOptions);\n // generate javascript codes\n return generate(ast, assignedOptions);\n}\n\n\n//# sourceURL=webpack://jandl/./node_modules/@intlify/message-compiler/dist/message-compiler.esm-bundler.js?"); +eval("{__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ CompileErrorCodes: function() { return /* binding */ CompileErrorCodes; },\n/* harmony export */ CompileWarnCodes: function() { return /* binding */ CompileWarnCodes; },\n/* harmony export */ ERROR_DOMAIN: function() { return /* binding */ ERROR_DOMAIN$2; },\n/* harmony export */ LOCATION_STUB: function() { return /* binding */ LOCATION_STUB; },\n/* harmony export */ baseCompile: function() { return /* binding */ baseCompile; },\n/* harmony export */ createCompileError: function() { return /* binding */ createCompileError; },\n/* harmony export */ createCompileWarn: function() { return /* binding */ createCompileWarn; },\n/* harmony export */ createLocation: function() { return /* binding */ createLocation; },\n/* harmony export */ createParser: function() { return /* binding */ createParser; },\n/* harmony export */ createPosition: function() { return /* binding */ createPosition; },\n/* harmony export */ defaultOnError: function() { return /* binding */ defaultOnError; },\n/* harmony export */ detectHtmlTag: function() { return /* binding */ detectHtmlTag; },\n/* harmony export */ errorMessages: function() { return /* binding */ errorMessages; },\n/* harmony export */ warnMessages: function() { return /* binding */ warnMessages; }\n/* harmony export */ });\n/* harmony import */ var core_js_modules_es_array_push_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! core-js/modules/es.array.push.js */ \"./node_modules/core-js/modules/es.array.push.js\");\n/* harmony import */ var core_js_modules_es_array_push_js__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_array_push_js__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var core_js_modules_es_json_stringify_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! core-js/modules/es.json.stringify.js */ \"./node_modules/core-js/modules/es.json.stringify.js\");\n/* harmony import */ var core_js_modules_es_json_stringify_js__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_json_stringify_js__WEBPACK_IMPORTED_MODULE_1__);\n/* harmony import */ var core_js_modules_esnext_iterator_constructor_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! core-js/modules/esnext.iterator.constructor.js */ \"./node_modules/core-js/modules/esnext.iterator.constructor.js\");\n/* harmony import */ var core_js_modules_esnext_iterator_constructor_js__WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_esnext_iterator_constructor_js__WEBPACK_IMPORTED_MODULE_2__);\n/* harmony import */ var core_js_modules_esnext_iterator_for_each_js__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! core-js/modules/esnext.iterator.for-each.js */ \"./node_modules/core-js/modules/esnext.iterator.for-each.js\");\n/* harmony import */ var core_js_modules_esnext_iterator_for_each_js__WEBPACK_IMPORTED_MODULE_3___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_esnext_iterator_for_each_js__WEBPACK_IMPORTED_MODULE_3__);\n/* harmony import */ var core_js_modules_esnext_iterator_map_js__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! core-js/modules/esnext.iterator.map.js */ \"./node_modules/core-js/modules/esnext.iterator.map.js\");\n/* harmony import */ var core_js_modules_esnext_iterator_map_js__WEBPACK_IMPORTED_MODULE_4___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_esnext_iterator_map_js__WEBPACK_IMPORTED_MODULE_4__);\n/* harmony import */ var core_js_modules_esnext_iterator_reduce_js__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! core-js/modules/esnext.iterator.reduce.js */ \"./node_modules/core-js/modules/esnext.iterator.reduce.js\");\n/* harmony import */ var core_js_modules_esnext_iterator_reduce_js__WEBPACK_IMPORTED_MODULE_5___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_esnext_iterator_reduce_js__WEBPACK_IMPORTED_MODULE_5__);\n\n\n\n\n\n\n/*!\n * message-compiler v9.14.5\n * (c) 2025 kazuya kawaguchi\n * Released under the MIT License.\n */\nconst LOCATION_STUB = {\n start: {\n line: 1,\n column: 1,\n offset: 0\n },\n end: {\n line: 1,\n column: 1,\n offset: 0\n }\n};\nfunction createPosition(line, column, offset) {\n return {\n line,\n column,\n offset\n };\n}\nfunction createLocation(start, end, source) {\n const loc = {\n start,\n end\n };\n if (source != null) {\n loc.source = source;\n }\n return loc;\n}\n\n/**\n * Original Utilities\n * written by kazuya kawaguchi\n */\nconst RE_ARGS = /\\{([0-9a-zA-Z]+)\\}/g;\n/* eslint-disable */\nfunction format(message, ...args) {\n if (args.length === 1 && isObject(args[0])) {\n args = args[0];\n }\n if (!args || !args.hasOwnProperty) {\n args = {};\n }\n return message.replace(RE_ARGS, (match, identifier) => {\n return args.hasOwnProperty(identifier) ? args[identifier] : '';\n });\n}\nconst assign = Object.assign;\nconst isString = val => typeof val === 'string';\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\nconst isObject = val => val !== null && typeof val === 'object';\nfunction join(items, separator = '') {\n return items.reduce((str, item, index) => index === 0 ? str + item : str + separator + item, '');\n}\nconst CompileWarnCodes = {\n USE_MODULO_SYNTAX: 1,\n __EXTEND_POINT__: 2\n};\n/** @internal */\nconst warnMessages = {\n [CompileWarnCodes.USE_MODULO_SYNTAX]: `Use modulo before '{{0}}'.`\n};\nfunction createCompileWarn(code, loc, ...args) {\n const msg = format(warnMessages[code] || '', ...(args || []));\n const message = {\n message: String(msg),\n code\n };\n if (loc) {\n message.location = loc;\n }\n return message;\n}\nconst CompileErrorCodes = {\n // tokenizer error codes\n EXPECTED_TOKEN: 1,\n INVALID_TOKEN_IN_PLACEHOLDER: 2,\n UNTERMINATED_SINGLE_QUOTE_IN_PLACEHOLDER: 3,\n UNKNOWN_ESCAPE_SEQUENCE: 4,\n INVALID_UNICODE_ESCAPE_SEQUENCE: 5,\n UNBALANCED_CLOSING_BRACE: 6,\n UNTERMINATED_CLOSING_BRACE: 7,\n EMPTY_PLACEHOLDER: 8,\n NOT_ALLOW_NEST_PLACEHOLDER: 9,\n INVALID_LINKED_FORMAT: 10,\n // parser error codes\n MUST_HAVE_MESSAGES_IN_PLURAL: 11,\n UNEXPECTED_EMPTY_LINKED_MODIFIER: 12,\n UNEXPECTED_EMPTY_LINKED_KEY: 13,\n UNEXPECTED_LEXICAL_ANALYSIS: 14,\n // generator error codes\n UNHANDLED_CODEGEN_NODE_TYPE: 15,\n // minifier error codes\n UNHANDLED_MINIFIER_NODE_TYPE: 16,\n // Special value for higher-order compilers to pick up the last code\n // to avoid collision of error codes. This should always be kept as the last\n // item.\n __EXTEND_POINT__: 17\n};\n/** @internal */\nconst errorMessages = {\n // tokenizer error messages\n [CompileErrorCodes.EXPECTED_TOKEN]: `Expected token: '{0}'`,\n [CompileErrorCodes.INVALID_TOKEN_IN_PLACEHOLDER]: `Invalid token in placeholder: '{0}'`,\n [CompileErrorCodes.UNTERMINATED_SINGLE_QUOTE_IN_PLACEHOLDER]: `Unterminated single quote in placeholder`,\n [CompileErrorCodes.UNKNOWN_ESCAPE_SEQUENCE]: `Unknown escape sequence: \\\\{0}`,\n [CompileErrorCodes.INVALID_UNICODE_ESCAPE_SEQUENCE]: `Invalid unicode escape sequence: {0}`,\n [CompileErrorCodes.UNBALANCED_CLOSING_BRACE]: `Unbalanced closing brace`,\n [CompileErrorCodes.UNTERMINATED_CLOSING_BRACE]: `Unterminated closing brace`,\n [CompileErrorCodes.EMPTY_PLACEHOLDER]: `Empty placeholder`,\n [CompileErrorCodes.NOT_ALLOW_NEST_PLACEHOLDER]: `Not allowed nest placeholder`,\n [CompileErrorCodes.INVALID_LINKED_FORMAT]: `Invalid linked format`,\n // parser error messages\n [CompileErrorCodes.MUST_HAVE_MESSAGES_IN_PLURAL]: `Plural must have messages`,\n [CompileErrorCodes.UNEXPECTED_EMPTY_LINKED_MODIFIER]: `Unexpected empty linked modifier`,\n [CompileErrorCodes.UNEXPECTED_EMPTY_LINKED_KEY]: `Unexpected empty linked key`,\n [CompileErrorCodes.UNEXPECTED_LEXICAL_ANALYSIS]: `Unexpected lexical analysis in token: '{0}'`,\n // generator error messages\n [CompileErrorCodes.UNHANDLED_CODEGEN_NODE_TYPE]: `unhandled codegen node type: '{0}'`,\n // minimizer error messages\n [CompileErrorCodes.UNHANDLED_MINIFIER_NODE_TYPE]: `unhandled mimifier node type: '{0}'`\n};\nfunction createCompileError(code, loc, options = {}) {\n const {\n domain,\n messages,\n args\n } = options;\n const msg = format((messages || errorMessages)[code] || '', ...(args || []));\n const error = new SyntaxError(String(msg));\n error.code = code;\n if (loc) {\n error.location = loc;\n }\n error.domain = domain;\n return error;\n}\n/** @internal */\nfunction defaultOnError(error) {\n throw error;\n}\n\n// eslint-disable-next-line no-useless-escape\nconst RE_HTML_TAG = /<\\/?[\\w\\s=\"/.':;#-\\/]+>/;\nconst detectHtmlTag = source => RE_HTML_TAG.test(source);\nconst CHAR_SP = ' ';\nconst CHAR_CR = '\\r';\nconst CHAR_LF = '\\n';\nconst CHAR_LS = String.fromCharCode(0x2028);\nconst CHAR_PS = String.fromCharCode(0x2029);\nfunction createScanner(str) {\n const _buf = str;\n let _index = 0;\n let _line = 1;\n let _column = 1;\n let _peekOffset = 0;\n const isCRLF = index => _buf[index] === CHAR_CR && _buf[index + 1] === CHAR_LF;\n const isLF = index => _buf[index] === CHAR_LF;\n const isPS = index => _buf[index] === CHAR_PS;\n const isLS = index => _buf[index] === CHAR_LS;\n const isLineEnd = index => isCRLF(index) || isLF(index) || isPS(index) || isLS(index);\n const index = () => _index;\n const line = () => _line;\n const column = () => _column;\n const peekOffset = () => _peekOffset;\n const charAt = offset => isCRLF(offset) || isPS(offset) || isLS(offset) ? CHAR_LF : _buf[offset];\n const currentChar = () => charAt(_index);\n const currentPeek = () => charAt(_index + _peekOffset);\n function next() {\n _peekOffset = 0;\n if (isLineEnd(_index)) {\n _line++;\n _column = 0;\n }\n if (isCRLF(_index)) {\n _index++;\n }\n _index++;\n _column++;\n return _buf[_index];\n }\n function peek() {\n if (isCRLF(_index + _peekOffset)) {\n _peekOffset++;\n }\n _peekOffset++;\n return _buf[_index + _peekOffset];\n }\n function reset() {\n _index = 0;\n _line = 1;\n _column = 1;\n _peekOffset = 0;\n }\n function resetPeek(offset = 0) {\n _peekOffset = offset;\n }\n function skipToPeek() {\n const target = _index + _peekOffset;\n // eslint-disable-next-line no-unmodified-loop-condition\n while (target !== _index) {\n next();\n }\n _peekOffset = 0;\n }\n return {\n index,\n line,\n column,\n peekOffset,\n charAt,\n currentChar,\n currentPeek,\n next,\n peek,\n reset,\n resetPeek,\n skipToPeek\n };\n}\nconst EOF = undefined;\nconst DOT = '.';\nconst LITERAL_DELIMITER = \"'\";\nconst ERROR_DOMAIN$3 = 'tokenizer';\nfunction createTokenizer(source, options = {}) {\n const location = options.location !== false;\n const _scnr = createScanner(source);\n const currentOffset = () => _scnr.index();\n const currentPosition = () => createPosition(_scnr.line(), _scnr.column(), _scnr.index());\n const _initLoc = currentPosition();\n const _initOffset = currentOffset();\n const _context = {\n currentType: 14 /* TokenTypes.EOF */,\n offset: _initOffset,\n startLoc: _initLoc,\n endLoc: _initLoc,\n lastType: 14 /* TokenTypes.EOF */,\n lastOffset: _initOffset,\n lastStartLoc: _initLoc,\n lastEndLoc: _initLoc,\n braceNest: 0,\n inLinked: false,\n text: ''\n };\n const context = () => _context;\n const {\n onError\n } = options;\n function emitError(code, pos, offset, ...args) {\n const ctx = context();\n pos.column += offset;\n pos.offset += offset;\n if (onError) {\n const loc = location ? createLocation(ctx.startLoc, pos) : null;\n const err = createCompileError(code, loc, {\n domain: ERROR_DOMAIN$3,\n args\n });\n onError(err);\n }\n }\n function getToken(context, type, value) {\n context.endLoc = currentPosition();\n context.currentType = type;\n const token = {\n type\n };\n if (location) {\n token.loc = createLocation(context.startLoc, context.endLoc);\n }\n if (value != null) {\n token.value = value;\n }\n return token;\n }\n const getEndToken = context => getToken(context, 14 /* TokenTypes.EOF */);\n function eat(scnr, ch) {\n if (scnr.currentChar() === ch) {\n scnr.next();\n return ch;\n } else {\n emitError(CompileErrorCodes.EXPECTED_TOKEN, currentPosition(), 0, ch);\n return '';\n }\n }\n function peekSpaces(scnr) {\n let buf = '';\n while (scnr.currentPeek() === CHAR_SP || scnr.currentPeek() === CHAR_LF) {\n buf += scnr.currentPeek();\n scnr.peek();\n }\n return buf;\n }\n function skipSpaces(scnr) {\n const buf = peekSpaces(scnr);\n scnr.skipToPeek();\n return buf;\n }\n function isIdentifierStart(ch) {\n if (ch === EOF) {\n return false;\n }\n const cc = ch.charCodeAt(0);\n return cc >= 97 && cc <= 122 ||\n // a-z\n cc >= 65 && cc <= 90 ||\n // A-Z\n cc === 95 // _\n ;\n }\n function isNumberStart(ch) {\n if (ch === EOF) {\n return false;\n }\n const cc = ch.charCodeAt(0);\n return cc >= 48 && cc <= 57; // 0-9\n }\n function isNamedIdentifierStart(scnr, context) {\n const {\n currentType\n } = context;\n if (currentType !== 2 /* TokenTypes.BraceLeft */) {\n return false;\n }\n peekSpaces(scnr);\n const ret = isIdentifierStart(scnr.currentPeek());\n scnr.resetPeek();\n return ret;\n }\n function isListIdentifierStart(scnr, context) {\n const {\n currentType\n } = context;\n if (currentType !== 2 /* TokenTypes.BraceLeft */) {\n return false;\n }\n peekSpaces(scnr);\n const ch = scnr.currentPeek() === '-' ? scnr.peek() : scnr.currentPeek();\n const ret = isNumberStart(ch);\n scnr.resetPeek();\n return ret;\n }\n function isLiteralStart(scnr, context) {\n const {\n currentType\n } = context;\n if (currentType !== 2 /* TokenTypes.BraceLeft */) {\n return false;\n }\n peekSpaces(scnr);\n const ret = scnr.currentPeek() === LITERAL_DELIMITER;\n scnr.resetPeek();\n return ret;\n }\n function isLinkedDotStart(scnr, context) {\n const {\n currentType\n } = context;\n if (currentType !== 8 /* TokenTypes.LinkedAlias */) {\n return false;\n }\n peekSpaces(scnr);\n const ret = scnr.currentPeek() === \".\" /* TokenChars.LinkedDot */;\n scnr.resetPeek();\n return ret;\n }\n function isLinkedModifierStart(scnr, context) {\n const {\n currentType\n } = context;\n if (currentType !== 9 /* TokenTypes.LinkedDot */) {\n return false;\n }\n peekSpaces(scnr);\n const ret = isIdentifierStart(scnr.currentPeek());\n scnr.resetPeek();\n return ret;\n }\n function isLinkedDelimiterStart(scnr, context) {\n const {\n currentType\n } = context;\n if (!(currentType === 8 /* TokenTypes.LinkedAlias */ || currentType === 12 /* TokenTypes.LinkedModifier */)) {\n return false;\n }\n peekSpaces(scnr);\n const ret = scnr.currentPeek() === \":\" /* TokenChars.LinkedDelimiter */;\n scnr.resetPeek();\n return ret;\n }\n function isLinkedReferStart(scnr, context) {\n const {\n currentType\n } = context;\n if (currentType !== 10 /* TokenTypes.LinkedDelimiter */) {\n return false;\n }\n const fn = () => {\n const ch = scnr.currentPeek();\n if (ch === \"{\" /* TokenChars.BraceLeft */) {\n return isIdentifierStart(scnr.peek());\n } else if (ch === \"@\" /* TokenChars.LinkedAlias */ || ch === \"%\" /* TokenChars.Modulo */ || ch === \"|\" /* TokenChars.Pipe */ || ch === \":\" /* TokenChars.LinkedDelimiter */ || ch === \".\" /* TokenChars.LinkedDot */ || ch === CHAR_SP || !ch) {\n return false;\n } else if (ch === CHAR_LF) {\n scnr.peek();\n return fn();\n } else {\n // other characters\n return isTextStart(scnr, false);\n }\n };\n const ret = fn();\n scnr.resetPeek();\n return ret;\n }\n function isPluralStart(scnr) {\n peekSpaces(scnr);\n const ret = scnr.currentPeek() === \"|\" /* TokenChars.Pipe */;\n scnr.resetPeek();\n return ret;\n }\n function detectModuloStart(scnr) {\n const spaces = peekSpaces(scnr);\n const ret = scnr.currentPeek() === \"%\" /* TokenChars.Modulo */ && scnr.peek() === \"{\" /* TokenChars.BraceLeft */;\n scnr.resetPeek();\n return {\n isModulo: ret,\n hasSpace: spaces.length > 0\n };\n }\n function isTextStart(scnr, reset = true) {\n const fn = (hasSpace = false, prev = '', detectModulo = false) => {\n const ch = scnr.currentPeek();\n if (ch === \"{\" /* TokenChars.BraceLeft */) {\n return prev === \"%\" /* TokenChars.Modulo */ ? false : hasSpace;\n } else if (ch === \"@\" /* TokenChars.LinkedAlias */ || !ch) {\n return prev === \"%\" /* TokenChars.Modulo */ ? true : hasSpace;\n } else if (ch === \"%\" /* TokenChars.Modulo */) {\n scnr.peek();\n return fn(hasSpace, \"%\" /* TokenChars.Modulo */, true);\n } else if (ch === \"|\" /* TokenChars.Pipe */) {\n return prev === \"%\" /* TokenChars.Modulo */ || detectModulo ? true : !(prev === CHAR_SP || prev === CHAR_LF);\n } else if (ch === CHAR_SP) {\n scnr.peek();\n return fn(true, CHAR_SP, detectModulo);\n } else if (ch === CHAR_LF) {\n scnr.peek();\n return fn(true, CHAR_LF, detectModulo);\n } else {\n return true;\n }\n };\n const ret = fn();\n reset && scnr.resetPeek();\n return ret;\n }\n function takeChar(scnr, fn) {\n const ch = scnr.currentChar();\n if (ch === EOF) {\n return EOF;\n }\n if (fn(ch)) {\n scnr.next();\n return ch;\n }\n return null;\n }\n function isIdentifier(ch) {\n const cc = ch.charCodeAt(0);\n return cc >= 97 && cc <= 122 ||\n // a-z\n cc >= 65 && cc <= 90 ||\n // A-Z\n cc >= 48 && cc <= 57 ||\n // 0-9\n cc === 95 ||\n // _\n cc === 36 // $\n ;\n }\n function takeIdentifierChar(scnr) {\n return takeChar(scnr, isIdentifier);\n }\n function isNamedIdentifier(ch) {\n const cc = ch.charCodeAt(0);\n return cc >= 97 && cc <= 122 ||\n // a-z\n cc >= 65 && cc <= 90 ||\n // A-Z\n cc >= 48 && cc <= 57 ||\n // 0-9\n cc === 95 ||\n // _\n cc === 36 ||\n // $\n cc === 45 // -\n ;\n }\n function takeNamedIdentifierChar(scnr) {\n return takeChar(scnr, isNamedIdentifier);\n }\n function isDigit(ch) {\n const cc = ch.charCodeAt(0);\n return cc >= 48 && cc <= 57; // 0-9\n }\n function takeDigit(scnr) {\n return takeChar(scnr, isDigit);\n }\n function isHexDigit(ch) {\n const cc = ch.charCodeAt(0);\n return cc >= 48 && cc <= 57 ||\n // 0-9\n cc >= 65 && cc <= 70 ||\n // A-F\n cc >= 97 && cc <= 102; // a-f\n }\n function takeHexDigit(scnr) {\n return takeChar(scnr, isHexDigit);\n }\n function getDigits(scnr) {\n let ch = '';\n let num = '';\n while (ch = takeDigit(scnr)) {\n num += ch;\n }\n return num;\n }\n function readModulo(scnr) {\n skipSpaces(scnr);\n const ch = scnr.currentChar();\n if (ch !== \"%\" /* TokenChars.Modulo */) {\n emitError(CompileErrorCodes.EXPECTED_TOKEN, currentPosition(), 0, ch);\n }\n scnr.next();\n return \"%\" /* TokenChars.Modulo */;\n }\n function readText(scnr) {\n let buf = '';\n // eslint-disable-next-line no-constant-condition\n while (true) {\n const ch = scnr.currentChar();\n if (ch === \"{\" /* TokenChars.BraceLeft */ || ch === \"}\" /* TokenChars.BraceRight */ || ch === \"@\" /* TokenChars.LinkedAlias */ || ch === \"|\" /* TokenChars.Pipe */ || !ch) {\n break;\n } else if (ch === \"%\" /* TokenChars.Modulo */) {\n if (isTextStart(scnr)) {\n buf += ch;\n scnr.next();\n } else {\n break;\n }\n } else if (ch === CHAR_SP || ch === CHAR_LF) {\n if (isTextStart(scnr)) {\n buf += ch;\n scnr.next();\n } else if (isPluralStart(scnr)) {\n break;\n } else {\n buf += ch;\n scnr.next();\n }\n } else {\n buf += ch;\n scnr.next();\n }\n }\n return buf;\n }\n function readNamedIdentifier(scnr) {\n skipSpaces(scnr);\n let ch = '';\n let name = '';\n while (ch = takeNamedIdentifierChar(scnr)) {\n name += ch;\n }\n if (scnr.currentChar() === EOF) {\n emitError(CompileErrorCodes.UNTERMINATED_CLOSING_BRACE, currentPosition(), 0);\n }\n return name;\n }\n function readListIdentifier(scnr) {\n skipSpaces(scnr);\n let value = '';\n if (scnr.currentChar() === '-') {\n scnr.next();\n value += `-${getDigits(scnr)}`;\n } else {\n value += getDigits(scnr);\n }\n if (scnr.currentChar() === EOF) {\n emitError(CompileErrorCodes.UNTERMINATED_CLOSING_BRACE, currentPosition(), 0);\n }\n return value;\n }\n function isLiteral(ch) {\n return ch !== LITERAL_DELIMITER && ch !== CHAR_LF;\n }\n function readLiteral(scnr) {\n skipSpaces(scnr);\n // eslint-disable-next-line no-useless-escape\n eat(scnr, `\\'`);\n let ch = '';\n let literal = '';\n while (ch = takeChar(scnr, isLiteral)) {\n if (ch === '\\\\') {\n literal += readEscapeSequence(scnr);\n } else {\n literal += ch;\n }\n }\n const current = scnr.currentChar();\n if (current === CHAR_LF || current === EOF) {\n emitError(CompileErrorCodes.UNTERMINATED_SINGLE_QUOTE_IN_PLACEHOLDER, currentPosition(), 0);\n // TODO: Is it correct really?\n if (current === CHAR_LF) {\n scnr.next();\n // eslint-disable-next-line no-useless-escape\n eat(scnr, `\\'`);\n }\n return literal;\n }\n // eslint-disable-next-line no-useless-escape\n eat(scnr, `\\'`);\n return literal;\n }\n function readEscapeSequence(scnr) {\n const ch = scnr.currentChar();\n switch (ch) {\n case '\\\\':\n case `\\'`:\n // eslint-disable-line no-useless-escape\n scnr.next();\n return `\\\\${ch}`;\n case 'u':\n return readUnicodeEscapeSequence(scnr, ch, 4);\n case 'U':\n return readUnicodeEscapeSequence(scnr, ch, 6);\n default:\n emitError(CompileErrorCodes.UNKNOWN_ESCAPE_SEQUENCE, currentPosition(), 0, ch);\n return '';\n }\n }\n function readUnicodeEscapeSequence(scnr, unicode, digits) {\n eat(scnr, unicode);\n let sequence = '';\n for (let i = 0; i < digits; i++) {\n const ch = takeHexDigit(scnr);\n if (!ch) {\n emitError(CompileErrorCodes.INVALID_UNICODE_ESCAPE_SEQUENCE, currentPosition(), 0, `\\\\${unicode}${sequence}${scnr.currentChar()}`);\n break;\n }\n sequence += ch;\n }\n return `\\\\${unicode}${sequence}`;\n }\n function isInvalidIdentifier(ch) {\n return ch !== \"{\" /* TokenChars.BraceLeft */ && ch !== \"}\" /* TokenChars.BraceRight */ && ch !== CHAR_SP && ch !== CHAR_LF;\n }\n function readInvalidIdentifier(scnr) {\n skipSpaces(scnr);\n let ch = '';\n let identifiers = '';\n while (ch = takeChar(scnr, isInvalidIdentifier)) {\n identifiers += ch;\n }\n return identifiers;\n }\n function readLinkedModifier(scnr) {\n let ch = '';\n let name = '';\n while (ch = takeIdentifierChar(scnr)) {\n name += ch;\n }\n return name;\n }\n function readLinkedRefer(scnr) {\n const fn = buf => {\n const ch = scnr.currentChar();\n if (ch === \"{\" /* TokenChars.BraceLeft */ || ch === \"%\" /* TokenChars.Modulo */ || ch === \"@\" /* TokenChars.LinkedAlias */ || ch === \"|\" /* TokenChars.Pipe */ || ch === \"(\" /* TokenChars.ParenLeft */ || ch === \")\" /* TokenChars.ParenRight */ || !ch) {\n return buf;\n } else if (ch === CHAR_SP) {\n return buf;\n } else if (ch === CHAR_LF || ch === DOT) {\n buf += ch;\n scnr.next();\n return fn(buf);\n } else {\n buf += ch;\n scnr.next();\n return fn(buf);\n }\n };\n return fn('');\n }\n function readPlural(scnr) {\n skipSpaces(scnr);\n const plural = eat(scnr, \"|\" /* TokenChars.Pipe */);\n skipSpaces(scnr);\n return plural;\n }\n // TODO: We need refactoring of token parsing ...\n function readTokenInPlaceholder(scnr, context) {\n let token = null;\n const ch = scnr.currentChar();\n switch (ch) {\n case \"{\" /* TokenChars.BraceLeft */:\n if (context.braceNest >= 1) {\n emitError(CompileErrorCodes.NOT_ALLOW_NEST_PLACEHOLDER, currentPosition(), 0);\n }\n scnr.next();\n token = getToken(context, 2 /* TokenTypes.BraceLeft */, \"{\" /* TokenChars.BraceLeft */);\n skipSpaces(scnr);\n context.braceNest++;\n return token;\n case \"}\" /* TokenChars.BraceRight */:\n if (context.braceNest > 0 && context.currentType === 2 /* TokenTypes.BraceLeft */) {\n emitError(CompileErrorCodes.EMPTY_PLACEHOLDER, currentPosition(), 0);\n }\n scnr.next();\n token = getToken(context, 3 /* TokenTypes.BraceRight */, \"}\" /* TokenChars.BraceRight */);\n context.braceNest--;\n context.braceNest > 0 && skipSpaces(scnr);\n if (context.inLinked && context.braceNest === 0) {\n context.inLinked = false;\n }\n return token;\n case \"@\" /* TokenChars.LinkedAlias */:\n if (context.braceNest > 0) {\n emitError(CompileErrorCodes.UNTERMINATED_CLOSING_BRACE, currentPosition(), 0);\n }\n token = readTokenInLinked(scnr, context) || getEndToken(context);\n context.braceNest = 0;\n return token;\n default:\n {\n let validNamedIdentifier = true;\n let validListIdentifier = true;\n let validLiteral = true;\n if (isPluralStart(scnr)) {\n if (context.braceNest > 0) {\n emitError(CompileErrorCodes.UNTERMINATED_CLOSING_BRACE, currentPosition(), 0);\n }\n token = getToken(context, 1 /* TokenTypes.Pipe */, readPlural(scnr));\n // reset\n context.braceNest = 0;\n context.inLinked = false;\n return token;\n }\n if (context.braceNest > 0 && (context.currentType === 5 /* TokenTypes.Named */ || context.currentType === 6 /* TokenTypes.List */ || context.currentType === 7 /* TokenTypes.Literal */)) {\n emitError(CompileErrorCodes.UNTERMINATED_CLOSING_BRACE, currentPosition(), 0);\n context.braceNest = 0;\n return readToken(scnr, context);\n }\n if (validNamedIdentifier = isNamedIdentifierStart(scnr, context)) {\n token = getToken(context, 5 /* TokenTypes.Named */, readNamedIdentifier(scnr));\n skipSpaces(scnr);\n return token;\n }\n if (validListIdentifier = isListIdentifierStart(scnr, context)) {\n token = getToken(context, 6 /* TokenTypes.List */, readListIdentifier(scnr));\n skipSpaces(scnr);\n return token;\n }\n if (validLiteral = isLiteralStart(scnr, context)) {\n token = getToken(context, 7 /* TokenTypes.Literal */, readLiteral(scnr));\n skipSpaces(scnr);\n return token;\n }\n if (!validNamedIdentifier && !validListIdentifier && !validLiteral) {\n // TODO: we should be re-designed invalid cases, when we will extend message syntax near the future ...\n token = getToken(context, 13 /* TokenTypes.InvalidPlace */, readInvalidIdentifier(scnr));\n emitError(CompileErrorCodes.INVALID_TOKEN_IN_PLACEHOLDER, currentPosition(), 0, token.value);\n skipSpaces(scnr);\n return token;\n }\n break;\n }\n }\n return token;\n }\n // TODO: We need refactoring of token parsing ...\n function readTokenInLinked(scnr, context) {\n const {\n currentType\n } = context;\n let token = null;\n const ch = scnr.currentChar();\n if ((currentType === 8 /* TokenTypes.LinkedAlias */ || currentType === 9 /* TokenTypes.LinkedDot */ || currentType === 12 /* TokenTypes.LinkedModifier */ || currentType === 10 /* TokenTypes.LinkedDelimiter */) && (ch === CHAR_LF || ch === CHAR_SP)) {\n emitError(CompileErrorCodes.INVALID_LINKED_FORMAT, currentPosition(), 0);\n }\n switch (ch) {\n case \"@\" /* TokenChars.LinkedAlias */:\n scnr.next();\n token = getToken(context, 8 /* TokenTypes.LinkedAlias */, \"@\" /* TokenChars.LinkedAlias */);\n context.inLinked = true;\n return token;\n case \".\" /* TokenChars.LinkedDot */:\n skipSpaces(scnr);\n scnr.next();\n return getToken(context, 9 /* TokenTypes.LinkedDot */, \".\" /* TokenChars.LinkedDot */);\n case \":\" /* TokenChars.LinkedDelimiter */:\n skipSpaces(scnr);\n scnr.next();\n return getToken(context, 10 /* TokenTypes.LinkedDelimiter */, \":\" /* TokenChars.LinkedDelimiter */);\n default:\n if (isPluralStart(scnr)) {\n token = getToken(context, 1 /* TokenTypes.Pipe */, readPlural(scnr));\n // reset\n context.braceNest = 0;\n context.inLinked = false;\n return token;\n }\n if (isLinkedDotStart(scnr, context) || isLinkedDelimiterStart(scnr, context)) {\n skipSpaces(scnr);\n return readTokenInLinked(scnr, context);\n }\n if (isLinkedModifierStart(scnr, context)) {\n skipSpaces(scnr);\n return getToken(context, 12 /* TokenTypes.LinkedModifier */, readLinkedModifier(scnr));\n }\n if (isLinkedReferStart(scnr, context)) {\n skipSpaces(scnr);\n if (ch === \"{\" /* TokenChars.BraceLeft */) {\n // scan the placeholder\n return readTokenInPlaceholder(scnr, context) || token;\n } else {\n return getToken(context, 11 /* TokenTypes.LinkedKey */, readLinkedRefer(scnr));\n }\n }\n if (currentType === 8 /* TokenTypes.LinkedAlias */) {\n emitError(CompileErrorCodes.INVALID_LINKED_FORMAT, currentPosition(), 0);\n }\n context.braceNest = 0;\n context.inLinked = false;\n return readToken(scnr, context);\n }\n }\n // TODO: We need refactoring of token parsing ...\n function readToken(scnr, context) {\n let token = {\n type: 14 /* TokenTypes.EOF */\n };\n if (context.braceNest > 0) {\n return readTokenInPlaceholder(scnr, context) || getEndToken(context);\n }\n if (context.inLinked) {\n return readTokenInLinked(scnr, context) || getEndToken(context);\n }\n const ch = scnr.currentChar();\n switch (ch) {\n case \"{\" /* TokenChars.BraceLeft */:\n return readTokenInPlaceholder(scnr, context) || getEndToken(context);\n case \"}\" /* TokenChars.BraceRight */:\n emitError(CompileErrorCodes.UNBALANCED_CLOSING_BRACE, currentPosition(), 0);\n scnr.next();\n return getToken(context, 3 /* TokenTypes.BraceRight */, \"}\" /* TokenChars.BraceRight */);\n case \"@\" /* TokenChars.LinkedAlias */:\n return readTokenInLinked(scnr, context) || getEndToken(context);\n default:\n {\n if (isPluralStart(scnr)) {\n token = getToken(context, 1 /* TokenTypes.Pipe */, readPlural(scnr));\n // reset\n context.braceNest = 0;\n context.inLinked = false;\n return token;\n }\n const {\n isModulo,\n hasSpace\n } = detectModuloStart(scnr);\n if (isModulo) {\n return hasSpace ? getToken(context, 0 /* TokenTypes.Text */, readText(scnr)) : getToken(context, 4 /* TokenTypes.Modulo */, readModulo(scnr));\n }\n if (isTextStart(scnr)) {\n return getToken(context, 0 /* TokenTypes.Text */, readText(scnr));\n }\n break;\n }\n }\n return token;\n }\n function nextToken() {\n const {\n currentType,\n offset,\n startLoc,\n endLoc\n } = _context;\n _context.lastType = currentType;\n _context.lastOffset = offset;\n _context.lastStartLoc = startLoc;\n _context.lastEndLoc = endLoc;\n _context.offset = currentOffset();\n _context.startLoc = currentPosition();\n if (_scnr.currentChar() === EOF) {\n return getToken(_context, 14 /* TokenTypes.EOF */);\n }\n return readToken(_scnr, _context);\n }\n return {\n nextToken,\n currentOffset,\n currentPosition,\n context\n };\n}\nconst ERROR_DOMAIN$2 = 'parser';\n// Backslash backslash, backslash quote, uHHHH, UHHHHHH.\nconst KNOWN_ESCAPES = /(?:\\\\\\\\|\\\\'|\\\\u([0-9a-fA-F]{4})|\\\\U([0-9a-fA-F]{6}))/g;\nfunction fromEscapeSequence(match, codePoint4, codePoint6) {\n switch (match) {\n case `\\\\\\\\`:\n return `\\\\`;\n // eslint-disable-next-line no-useless-escape\n case `\\\\\\'`:\n // eslint-disable-next-line no-useless-escape\n return `\\'`;\n default:\n {\n const codePoint = parseInt(codePoint4 || codePoint6, 16);\n if (codePoint <= 0xd7ff || codePoint >= 0xe000) {\n return String.fromCodePoint(codePoint);\n }\n // invalid ...\n // Replace them with U+FFFD REPLACEMENT CHARACTER.\n return '�';\n }\n }\n}\nfunction createParser(options = {}) {\n const location = options.location !== false;\n const {\n onError,\n onWarn\n } = options;\n function emitError(tokenzer, code, start, offset, ...args) {\n const end = tokenzer.currentPosition();\n end.offset += offset;\n end.column += offset;\n if (onError) {\n const loc = location ? createLocation(start, end) : null;\n const err = createCompileError(code, loc, {\n domain: ERROR_DOMAIN$2,\n args\n });\n onError(err);\n }\n }\n function emitWarn(tokenzer, code, start, offset, ...args) {\n const end = tokenzer.currentPosition();\n end.offset += offset;\n end.column += offset;\n if (onWarn) {\n const loc = location ? createLocation(start, end) : null;\n onWarn(createCompileWarn(code, loc, args));\n }\n }\n function startNode(type, offset, loc) {\n const node = {\n type\n };\n if (location) {\n node.start = offset;\n node.end = offset;\n node.loc = {\n start: loc,\n end: loc\n };\n }\n return node;\n }\n function endNode(node, offset, pos, type) {\n if (type) {\n node.type = type;\n }\n if (location) {\n node.end = offset;\n if (node.loc) {\n node.loc.end = pos;\n }\n }\n }\n function parseText(tokenizer, value) {\n const context = tokenizer.context();\n const node = startNode(3 /* NodeTypes.Text */, context.offset, context.startLoc);\n node.value = value;\n endNode(node, tokenizer.currentOffset(), tokenizer.currentPosition());\n return node;\n }\n function parseList(tokenizer, index) {\n const context = tokenizer.context();\n const {\n lastOffset: offset,\n lastStartLoc: loc\n } = context; // get brace left loc\n const node = startNode(5 /* NodeTypes.List */, offset, loc);\n node.index = parseInt(index, 10);\n tokenizer.nextToken(); // skip brach right\n endNode(node, tokenizer.currentOffset(), tokenizer.currentPosition());\n return node;\n }\n function parseNamed(tokenizer, key, modulo) {\n const context = tokenizer.context();\n const {\n lastOffset: offset,\n lastStartLoc: loc\n } = context; // get brace left loc\n const node = startNode(4 /* NodeTypes.Named */, offset, loc);\n node.key = key;\n if (modulo === true) {\n node.modulo = true;\n }\n tokenizer.nextToken(); // skip brach right\n endNode(node, tokenizer.currentOffset(), tokenizer.currentPosition());\n return node;\n }\n function parseLiteral(tokenizer, value) {\n const context = tokenizer.context();\n const {\n lastOffset: offset,\n lastStartLoc: loc\n } = context; // get brace left loc\n const node = startNode(9 /* NodeTypes.Literal */, offset, loc);\n node.value = value.replace(KNOWN_ESCAPES, fromEscapeSequence);\n tokenizer.nextToken(); // skip brach right\n endNode(node, tokenizer.currentOffset(), tokenizer.currentPosition());\n return node;\n }\n function parseLinkedModifier(tokenizer) {\n const token = tokenizer.nextToken();\n const context = tokenizer.context();\n const {\n lastOffset: offset,\n lastStartLoc: loc\n } = context; // get linked dot loc\n const node = startNode(8 /* NodeTypes.LinkedModifier */, offset, loc);\n if (token.type !== 12 /* TokenTypes.LinkedModifier */) {\n // empty modifier\n emitError(tokenizer, CompileErrorCodes.UNEXPECTED_EMPTY_LINKED_MODIFIER, context.lastStartLoc, 0);\n node.value = '';\n endNode(node, offset, loc);\n return {\n nextConsumeToken: token,\n node\n };\n }\n // check token\n if (token.value == null) {\n emitError(tokenizer, CompileErrorCodes.UNEXPECTED_LEXICAL_ANALYSIS, context.lastStartLoc, 0, getTokenCaption(token));\n }\n node.value = token.value || '';\n endNode(node, tokenizer.currentOffset(), tokenizer.currentPosition());\n return {\n node\n };\n }\n function parseLinkedKey(tokenizer, value) {\n const context = tokenizer.context();\n const node = startNode(7 /* NodeTypes.LinkedKey */, context.offset, context.startLoc);\n node.value = value;\n endNode(node, tokenizer.currentOffset(), tokenizer.currentPosition());\n return node;\n }\n function parseLinked(tokenizer) {\n const context = tokenizer.context();\n const linkedNode = startNode(6 /* NodeTypes.Linked */, context.offset, context.startLoc);\n let token = tokenizer.nextToken();\n if (token.type === 9 /* TokenTypes.LinkedDot */) {\n const parsed = parseLinkedModifier(tokenizer);\n linkedNode.modifier = parsed.node;\n token = parsed.nextConsumeToken || tokenizer.nextToken();\n }\n // asset check token\n if (token.type !== 10 /* TokenTypes.LinkedDelimiter */) {\n emitError(tokenizer, CompileErrorCodes.UNEXPECTED_LEXICAL_ANALYSIS, context.lastStartLoc, 0, getTokenCaption(token));\n }\n token = tokenizer.nextToken();\n // skip brace left\n if (token.type === 2 /* TokenTypes.BraceLeft */) {\n token = tokenizer.nextToken();\n }\n switch (token.type) {\n case 11 /* TokenTypes.LinkedKey */:\n if (token.value == null) {\n emitError(tokenizer, CompileErrorCodes.UNEXPECTED_LEXICAL_ANALYSIS, context.lastStartLoc, 0, getTokenCaption(token));\n }\n linkedNode.key = parseLinkedKey(tokenizer, token.value || '');\n break;\n case 5 /* TokenTypes.Named */:\n if (token.value == null) {\n emitError(tokenizer, CompileErrorCodes.UNEXPECTED_LEXICAL_ANALYSIS, context.lastStartLoc, 0, getTokenCaption(token));\n }\n linkedNode.key = parseNamed(tokenizer, token.value || '');\n break;\n case 6 /* TokenTypes.List */:\n if (token.value == null) {\n emitError(tokenizer, CompileErrorCodes.UNEXPECTED_LEXICAL_ANALYSIS, context.lastStartLoc, 0, getTokenCaption(token));\n }\n linkedNode.key = parseList(tokenizer, token.value || '');\n break;\n case 7 /* TokenTypes.Literal */:\n if (token.value == null) {\n emitError(tokenizer, CompileErrorCodes.UNEXPECTED_LEXICAL_ANALYSIS, context.lastStartLoc, 0, getTokenCaption(token));\n }\n linkedNode.key = parseLiteral(tokenizer, token.value || '');\n break;\n default:\n {\n // empty key\n emitError(tokenizer, CompileErrorCodes.UNEXPECTED_EMPTY_LINKED_KEY, context.lastStartLoc, 0);\n const nextContext = tokenizer.context();\n const emptyLinkedKeyNode = startNode(7 /* NodeTypes.LinkedKey */, nextContext.offset, nextContext.startLoc);\n emptyLinkedKeyNode.value = '';\n endNode(emptyLinkedKeyNode, nextContext.offset, nextContext.startLoc);\n linkedNode.key = emptyLinkedKeyNode;\n endNode(linkedNode, nextContext.offset, nextContext.startLoc);\n return {\n nextConsumeToken: token,\n node: linkedNode\n };\n }\n }\n endNode(linkedNode, tokenizer.currentOffset(), tokenizer.currentPosition());\n return {\n node: linkedNode\n };\n }\n function parseMessage(tokenizer) {\n const context = tokenizer.context();\n const startOffset = context.currentType === 1 /* TokenTypes.Pipe */ ? tokenizer.currentOffset() : context.offset;\n const startLoc = context.currentType === 1 /* TokenTypes.Pipe */ ? context.endLoc : context.startLoc;\n const node = startNode(2 /* NodeTypes.Message */, startOffset, startLoc);\n node.items = [];\n let nextToken = null;\n let modulo = null;\n do {\n const token = nextToken || tokenizer.nextToken();\n nextToken = null;\n switch (token.type) {\n case 0 /* TokenTypes.Text */:\n if (token.value == null) {\n emitError(tokenizer, CompileErrorCodes.UNEXPECTED_LEXICAL_ANALYSIS, context.lastStartLoc, 0, getTokenCaption(token));\n }\n node.items.push(parseText(tokenizer, token.value || ''));\n break;\n case 6 /* TokenTypes.List */:\n if (token.value == null) {\n emitError(tokenizer, CompileErrorCodes.UNEXPECTED_LEXICAL_ANALYSIS, context.lastStartLoc, 0, getTokenCaption(token));\n }\n node.items.push(parseList(tokenizer, token.value || ''));\n break;\n case 4 /* TokenTypes.Modulo */:\n modulo = true;\n break;\n case 5 /* TokenTypes.Named */:\n if (token.value == null) {\n emitError(tokenizer, CompileErrorCodes.UNEXPECTED_LEXICAL_ANALYSIS, context.lastStartLoc, 0, getTokenCaption(token));\n }\n node.items.push(parseNamed(tokenizer, token.value || '', !!modulo));\n if (modulo) {\n emitWarn(tokenizer, CompileWarnCodes.USE_MODULO_SYNTAX, context.lastStartLoc, 0, getTokenCaption(token));\n modulo = null;\n }\n break;\n case 7 /* TokenTypes.Literal */:\n if (token.value == null) {\n emitError(tokenizer, CompileErrorCodes.UNEXPECTED_LEXICAL_ANALYSIS, context.lastStartLoc, 0, getTokenCaption(token));\n }\n node.items.push(parseLiteral(tokenizer, token.value || ''));\n break;\n case 8 /* TokenTypes.LinkedAlias */:\n {\n const parsed = parseLinked(tokenizer);\n node.items.push(parsed.node);\n nextToken = parsed.nextConsumeToken || null;\n break;\n }\n }\n } while (context.currentType !== 14 /* TokenTypes.EOF */ && context.currentType !== 1 /* TokenTypes.Pipe */);\n // adjust message node loc\n const endOffset = context.currentType === 1 /* TokenTypes.Pipe */ ? context.lastOffset : tokenizer.currentOffset();\n const endLoc = context.currentType === 1 /* TokenTypes.Pipe */ ? context.lastEndLoc : tokenizer.currentPosition();\n endNode(node, endOffset, endLoc);\n return node;\n }\n function parsePlural(tokenizer, offset, loc, msgNode) {\n const context = tokenizer.context();\n let hasEmptyMessage = msgNode.items.length === 0;\n const node = startNode(1 /* NodeTypes.Plural */, offset, loc);\n node.cases = [];\n node.cases.push(msgNode);\n do {\n const msg = parseMessage(tokenizer);\n if (!hasEmptyMessage) {\n hasEmptyMessage = msg.items.length === 0;\n }\n node.cases.push(msg);\n } while (context.currentType !== 14 /* TokenTypes.EOF */);\n if (hasEmptyMessage) {\n emitError(tokenizer, CompileErrorCodes.MUST_HAVE_MESSAGES_IN_PLURAL, loc, 0);\n }\n endNode(node, tokenizer.currentOffset(), tokenizer.currentPosition());\n return node;\n }\n function parseResource(tokenizer) {\n const context = tokenizer.context();\n const {\n offset,\n startLoc\n } = context;\n const msgNode = parseMessage(tokenizer);\n if (context.currentType === 14 /* TokenTypes.EOF */) {\n return msgNode;\n } else {\n return parsePlural(tokenizer, offset, startLoc, msgNode);\n }\n }\n function parse(source) {\n const tokenizer = createTokenizer(source, assign({}, options));\n const context = tokenizer.context();\n const node = startNode(0 /* NodeTypes.Resource */, context.offset, context.startLoc);\n if (location && node.loc) {\n node.loc.source = source;\n }\n node.body = parseResource(tokenizer);\n if (options.onCacheKey) {\n node.cacheKey = options.onCacheKey(source);\n }\n // assert whether achieved to EOF\n if (context.currentType !== 14 /* TokenTypes.EOF */) {\n emitError(tokenizer, CompileErrorCodes.UNEXPECTED_LEXICAL_ANALYSIS, context.lastStartLoc, 0, source[context.offset] || '');\n }\n endNode(node, tokenizer.currentOffset(), tokenizer.currentPosition());\n return node;\n }\n return {\n parse\n };\n}\nfunction getTokenCaption(token) {\n if (token.type === 14 /* TokenTypes.EOF */) {\n return 'EOF';\n }\n const name = (token.value || '').replace(/\\r?\\n/gu, '\\\\n');\n return name.length > 10 ? name.slice(0, 9) + '…' : name;\n}\nfunction createTransformer(ast, options = {} // eslint-disable-line\n) {\n const _context = {\n ast,\n helpers: new Set()\n };\n const context = () => _context;\n const helper = name => {\n _context.helpers.add(name);\n return name;\n };\n return {\n context,\n helper\n };\n}\nfunction traverseNodes(nodes, transformer) {\n for (let i = 0; i < nodes.length; i++) {\n traverseNode(nodes[i], transformer);\n }\n}\nfunction traverseNode(node, transformer) {\n // TODO: if we need pre-hook of transform, should be implemented to here\n switch (node.type) {\n case 1 /* NodeTypes.Plural */:\n traverseNodes(node.cases, transformer);\n transformer.helper(\"plural\" /* HelperNameMap.PLURAL */);\n break;\n case 2 /* NodeTypes.Message */:\n traverseNodes(node.items, transformer);\n break;\n case 6 /* NodeTypes.Linked */:\n {\n const linked = node;\n traverseNode(linked.key, transformer);\n transformer.helper(\"linked\" /* HelperNameMap.LINKED */);\n transformer.helper(\"type\" /* HelperNameMap.TYPE */);\n break;\n }\n case 5 /* NodeTypes.List */:\n transformer.helper(\"interpolate\" /* HelperNameMap.INTERPOLATE */);\n transformer.helper(\"list\" /* HelperNameMap.LIST */);\n break;\n case 4 /* NodeTypes.Named */:\n transformer.helper(\"interpolate\" /* HelperNameMap.INTERPOLATE */);\n transformer.helper(\"named\" /* HelperNameMap.NAMED */);\n break;\n }\n // TODO: if we need post-hook of transform, should be implemented to here\n}\n// transform AST\nfunction transform(ast, options = {} // eslint-disable-line\n) {\n const transformer = createTransformer(ast);\n transformer.helper(\"normalize\" /* HelperNameMap.NORMALIZE */);\n // traverse\n ast.body && traverseNode(ast.body, transformer);\n // set meta information\n const context = transformer.context();\n ast.helpers = Array.from(context.helpers);\n}\nfunction optimize(ast) {\n const body = ast.body;\n if (body.type === 2 /* NodeTypes.Message */) {\n optimizeMessageNode(body);\n } else {\n body.cases.forEach(c => optimizeMessageNode(c));\n }\n return ast;\n}\nfunction optimizeMessageNode(message) {\n if (message.items.length === 1) {\n const item = message.items[0];\n if (item.type === 3 /* NodeTypes.Text */ || item.type === 9 /* NodeTypes.Literal */) {\n message.static = item.value;\n delete item.value; // optimization for size\n }\n } else {\n const values = [];\n for (let i = 0; i < message.items.length; i++) {\n const item = message.items[i];\n if (!(item.type === 3 /* NodeTypes.Text */ || item.type === 9 /* NodeTypes.Literal */)) {\n break;\n }\n if (item.value == null) {\n break;\n }\n values.push(item.value);\n }\n if (values.length === message.items.length) {\n message.static = join(values);\n for (let i = 0; i < message.items.length; i++) {\n const item = message.items[i];\n if (item.type === 3 /* NodeTypes.Text */ || item.type === 9 /* NodeTypes.Literal */) {\n delete item.value; // optimization for size\n }\n }\n }\n }\n}\nconst ERROR_DOMAIN$1 = 'minifier';\n/* eslint-disable @typescript-eslint/no-explicit-any */\nfunction minify(node) {\n node.t = node.type;\n switch (node.type) {\n case 0 /* NodeTypes.Resource */:\n {\n const resource = node;\n minify(resource.body);\n resource.b = resource.body;\n delete resource.body;\n break;\n }\n case 1 /* NodeTypes.Plural */:\n {\n const plural = node;\n const cases = plural.cases;\n for (let i = 0; i < cases.length; i++) {\n minify(cases[i]);\n }\n plural.c = cases;\n delete plural.cases;\n break;\n }\n case 2 /* NodeTypes.Message */:\n {\n const message = node;\n const items = message.items;\n for (let i = 0; i < items.length; i++) {\n minify(items[i]);\n }\n message.i = items;\n delete message.items;\n if (message.static) {\n message.s = message.static;\n delete message.static;\n }\n break;\n }\n case 3 /* NodeTypes.Text */:\n case 9 /* NodeTypes.Literal */:\n case 8 /* NodeTypes.LinkedModifier */:\n case 7 /* NodeTypes.LinkedKey */:\n {\n const valueNode = node;\n if (valueNode.value) {\n valueNode.v = valueNode.value;\n delete valueNode.value;\n }\n break;\n }\n case 6 /* NodeTypes.Linked */:\n {\n const linked = node;\n minify(linked.key);\n linked.k = linked.key;\n delete linked.key;\n if (linked.modifier) {\n minify(linked.modifier);\n linked.m = linked.modifier;\n delete linked.modifier;\n }\n break;\n }\n case 5 /* NodeTypes.List */:\n {\n const list = node;\n list.i = list.index;\n delete list.index;\n break;\n }\n case 4 /* NodeTypes.Named */:\n {\n const named = node;\n named.k = named.key;\n delete named.key;\n break;\n }\n default:\n {\n throw createCompileError(CompileErrorCodes.UNHANDLED_MINIFIER_NODE_TYPE, null, {\n domain: ERROR_DOMAIN$1,\n args: [node.type]\n });\n }\n }\n delete node.type;\n}\n/* eslint-enable @typescript-eslint/no-explicit-any */\n\n// eslint-disable-next-line @typescript-eslint/triple-slash-reference\n/// \nconst ERROR_DOMAIN = 'parser';\nfunction createCodeGenerator(ast, options) {\n const {\n sourceMap,\n filename,\n breakLineCode,\n needIndent: _needIndent\n } = options;\n const location = options.location !== false;\n const _context = {\n filename,\n code: '',\n column: 1,\n line: 1,\n offset: 0,\n map: undefined,\n breakLineCode,\n needIndent: _needIndent,\n indentLevel: 0\n };\n if (location && ast.loc) {\n _context.source = ast.loc.source;\n }\n const context = () => _context;\n function push(code, node) {\n _context.code += code;\n }\n function _newline(n, withBreakLine = true) {\n const _breakLineCode = withBreakLine ? breakLineCode : '';\n push(_needIndent ? _breakLineCode + ` `.repeat(n) : _breakLineCode);\n }\n function indent(withNewLine = true) {\n const level = ++_context.indentLevel;\n withNewLine && _newline(level);\n }\n function deindent(withNewLine = true) {\n const level = --_context.indentLevel;\n withNewLine && _newline(level);\n }\n function newline() {\n _newline(_context.indentLevel);\n }\n const helper = key => `_${key}`;\n const needIndent = () => _context.needIndent;\n return {\n context,\n push,\n indent,\n deindent,\n newline,\n helper,\n needIndent\n };\n}\nfunction generateLinkedNode(generator, node) {\n const {\n helper\n } = generator;\n generator.push(`${helper(\"linked\" /* HelperNameMap.LINKED */)}(`);\n generateNode(generator, node.key);\n if (node.modifier) {\n generator.push(`, `);\n generateNode(generator, node.modifier);\n generator.push(`, _type`);\n } else {\n generator.push(`, undefined, _type`);\n }\n generator.push(`)`);\n}\nfunction generateMessageNode(generator, node) {\n const {\n helper,\n needIndent\n } = generator;\n generator.push(`${helper(\"normalize\" /* HelperNameMap.NORMALIZE */)}([`);\n generator.indent(needIndent());\n const length = node.items.length;\n for (let i = 0; i < length; i++) {\n generateNode(generator, node.items[i]);\n if (i === length - 1) {\n break;\n }\n generator.push(', ');\n }\n generator.deindent(needIndent());\n generator.push('])');\n}\nfunction generatePluralNode(generator, node) {\n const {\n helper,\n needIndent\n } = generator;\n if (node.cases.length > 1) {\n generator.push(`${helper(\"plural\" /* HelperNameMap.PLURAL */)}([`);\n generator.indent(needIndent());\n const length = node.cases.length;\n for (let i = 0; i < length; i++) {\n generateNode(generator, node.cases[i]);\n if (i === length - 1) {\n break;\n }\n generator.push(', ');\n }\n generator.deindent(needIndent());\n generator.push(`])`);\n }\n}\nfunction generateResource(generator, node) {\n if (node.body) {\n generateNode(generator, node.body);\n } else {\n generator.push('null');\n }\n}\nfunction generateNode(generator, node) {\n const {\n helper\n } = generator;\n switch (node.type) {\n case 0 /* NodeTypes.Resource */:\n generateResource(generator, node);\n break;\n case 1 /* NodeTypes.Plural */:\n generatePluralNode(generator, node);\n break;\n case 2 /* NodeTypes.Message */:\n generateMessageNode(generator, node);\n break;\n case 6 /* NodeTypes.Linked */:\n generateLinkedNode(generator, node);\n break;\n case 8 /* NodeTypes.LinkedModifier */:\n generator.push(JSON.stringify(node.value), node);\n break;\n case 7 /* NodeTypes.LinkedKey */:\n generator.push(JSON.stringify(node.value), node);\n break;\n case 5 /* NodeTypes.List */:\n generator.push(`${helper(\"interpolate\" /* HelperNameMap.INTERPOLATE */)}(${helper(\"list\" /* HelperNameMap.LIST */)}(${node.index}))`, node);\n break;\n case 4 /* NodeTypes.Named */:\n generator.push(`${helper(\"interpolate\" /* HelperNameMap.INTERPOLATE */)}(${helper(\"named\" /* HelperNameMap.NAMED */)}(${JSON.stringify(node.key)}))`, node);\n break;\n case 9 /* NodeTypes.Literal */:\n generator.push(JSON.stringify(node.value), node);\n break;\n case 3 /* NodeTypes.Text */:\n generator.push(JSON.stringify(node.value), node);\n break;\n default:\n {\n throw createCompileError(CompileErrorCodes.UNHANDLED_CODEGEN_NODE_TYPE, null, {\n domain: ERROR_DOMAIN,\n args: [node.type]\n });\n }\n }\n}\n// generate code from AST\nconst generate = (ast, options = {} // eslint-disable-line\n) => {\n const mode = isString(options.mode) ? options.mode : 'normal';\n const filename = isString(options.filename) ? options.filename : 'message.intl';\n const sourceMap = !!options.sourceMap;\n // prettier-ignore\n const breakLineCode = options.breakLineCode != null ? options.breakLineCode : mode === 'arrow' ? ';' : '\\n';\n const needIndent = options.needIndent ? options.needIndent : mode !== 'arrow';\n const helpers = ast.helpers || [];\n const generator = createCodeGenerator(ast, {\n mode,\n filename,\n sourceMap,\n breakLineCode,\n needIndent\n });\n generator.push(mode === 'normal' ? `function __msg__ (ctx) {` : `(ctx) => {`);\n generator.indent(needIndent);\n if (helpers.length > 0) {\n generator.push(`const { ${join(helpers.map(s => `${s}: _${s}`), ', ')} } = ctx`);\n generator.newline();\n }\n generator.push(`return `);\n generateNode(generator, ast);\n generator.deindent(needIndent);\n generator.push(`}`);\n delete ast.helpers;\n const {\n code,\n map\n } = generator.context();\n return {\n ast,\n code,\n map: map ? map.toJSON() : undefined // eslint-disable-line @typescript-eslint/no-explicit-any\n };\n};\nfunction baseCompile(source, options = {}) {\n const assignedOptions = assign({}, options);\n const jit = !!assignedOptions.jit;\n const enalbeMinify = !!assignedOptions.minify;\n const enambeOptimize = assignedOptions.optimize == null ? true : assignedOptions.optimize;\n // parse source codes\n const parser = createParser(assignedOptions);\n const ast = parser.parse(source);\n if (!jit) {\n // transform ASTs\n transform(ast, assignedOptions);\n // generate javascript codes\n return generate(ast, assignedOptions);\n } else {\n // optimize ASTs\n enambeOptimize && optimize(ast);\n // minimize ASTs\n enalbeMinify && minify(ast);\n // In JIT mode, no ast transform, no code generation.\n return {\n ast,\n code: ''\n };\n }\n}\n\n\n//# sourceURL=webpack://jandl/./node_modules/@intlify/message-compiler/dist/message-compiler.esm-browser.js?\n}"); /***/ }), -/***/ "./node_modules/@intlify/shared/dist/shared.esm-bundler.js": -/*!*****************************************************************!*\ - !*** ./node_modules/@intlify/shared/dist/shared.esm-bundler.js ***! - \*****************************************************************/ -/***/ (function(__unused_webpack_module, __webpack_exports__, __webpack_require__) { +/***/ "./node_modules/@intlify/shared/dist/shared.mjs": +/*!******************************************************!*\ + !*** ./node_modules/@intlify/shared/dist/shared.mjs ***! + \******************************************************/ +/***/ (function(__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) { "use strict"; -eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"assign\": function() { return /* binding */ assign; },\n/* harmony export */ \"createEmitter\": function() { return /* binding */ createEmitter; },\n/* harmony export */ \"escapeHtml\": function() { return /* binding */ escapeHtml; },\n/* harmony export */ \"format\": function() { return /* binding */ format; },\n/* harmony export */ \"friendlyJSONstringify\": function() { return /* binding */ friendlyJSONstringify; },\n/* harmony export */ \"generateCodeFrame\": function() { return /* binding */ generateCodeFrame; },\n/* harmony export */ \"generateFormatCacheKey\": function() { return /* binding */ generateFormatCacheKey; },\n/* harmony export */ \"getGlobalThis\": function() { return /* binding */ getGlobalThis; },\n/* harmony export */ \"hasOwn\": function() { return /* binding */ hasOwn; },\n/* harmony export */ \"inBrowser\": function() { return /* binding */ inBrowser; },\n/* harmony export */ \"isArray\": function() { return /* binding */ isArray; },\n/* harmony export */ \"isBoolean\": function() { return /* binding */ isBoolean; },\n/* harmony export */ \"isDate\": function() { return /* binding */ isDate; },\n/* harmony export */ \"isEmptyObject\": function() { return /* binding */ isEmptyObject; },\n/* harmony export */ \"isFunction\": function() { return /* binding */ isFunction; },\n/* harmony export */ \"isNumber\": function() { return /* binding */ isNumber; },\n/* harmony export */ \"isObject\": function() { return /* binding */ isObject; },\n/* harmony export */ \"isPlainObject\": function() { return /* binding */ isPlainObject; },\n/* harmony export */ \"isPromise\": function() { return /* binding */ isPromise; },\n/* harmony export */ \"isRegExp\": function() { return /* binding */ isRegExp; },\n/* harmony export */ \"isString\": function() { return /* binding */ isString; },\n/* harmony export */ \"isSymbol\": function() { return /* binding */ isSymbol; },\n/* harmony export */ \"makeSymbol\": function() { return /* binding */ makeSymbol; },\n/* harmony export */ \"mark\": function() { return /* binding */ mark; },\n/* harmony export */ \"measure\": function() { return /* binding */ measure; },\n/* harmony export */ \"objectToString\": function() { return /* binding */ objectToString; },\n/* harmony export */ \"toDisplayString\": function() { return /* binding */ toDisplayString; },\n/* harmony export */ \"toTypeString\": function() { return /* binding */ toTypeString; },\n/* harmony export */ \"warn\": function() { return /* binding */ warn; }\n/* harmony export */ });\n/* harmony import */ var core_js_modules_es_array_push_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! core-js/modules/es.array.push.js */ \"./node_modules/core-js/modules/es.array.push.js\");\n/* harmony import */ var core_js_modules_es_array_push_js__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_array_push_js__WEBPACK_IMPORTED_MODULE_0__);\n/* provided dependency */ var console = __webpack_require__(/*! ./node_modules/console-browserify/index.js */ \"./node_modules/console-browserify/index.js\");\n\n/*!\n * shared v9.2.2\n * (c) 2022 kazuya kawaguchi\n * Released under the MIT License.\n */\n/**\r\n * Original Utilities\r\n * written by kazuya kawaguchi\r\n */\nconst inBrowser = typeof window !== 'undefined';\nlet mark;\nlet measure;\nif (true) {\n const perf = inBrowser && window.performance;\n if (perf && perf.mark && perf.measure && perf.clearMarks && perf.clearMeasures) {\n mark = tag => perf.mark(tag);\n measure = (name, startTag, endTag) => {\n perf.measure(name, startTag, endTag);\n perf.clearMarks(startTag);\n perf.clearMarks(endTag);\n };\n }\n}\nconst RE_ARGS = /\\{([0-9a-zA-Z]+)\\}/g;\n/* eslint-disable */\nfunction format(message, ...args) {\n if (args.length === 1 && isObject(args[0])) {\n args = args[0];\n }\n if (!args || !args.hasOwnProperty) {\n args = {};\n }\n return message.replace(RE_ARGS, (match, identifier) => {\n return args.hasOwnProperty(identifier) ? args[identifier] : '';\n });\n}\nconst hasSymbol = typeof Symbol === 'function' && typeof Symbol.toStringTag === 'symbol';\nconst makeSymbol = name => hasSymbol ? Symbol(name) : name;\nconst generateFormatCacheKey = (locale, key, source) => friendlyJSONstringify({\n l: locale,\n k: key,\n s: source\n});\nconst friendlyJSONstringify = json => JSON.stringify(json).replace(/\\u2028/g, '\\\\u2028').replace(/\\u2029/g, '\\\\u2029').replace(/\\u0027/g, '\\\\u0027');\nconst isNumber = val => typeof val === 'number' && isFinite(val);\nconst isDate = val => toTypeString(val) === '[object Date]';\nconst isRegExp = val => toTypeString(val) === '[object RegExp]';\nconst isEmptyObject = val => isPlainObject(val) && Object.keys(val).length === 0;\nfunction warn(msg, err) {\n if (typeof console !== 'undefined') {\n console.warn(`[intlify] ` + msg);\n /* istanbul ignore if */\n if (err) {\n console.warn(err.stack);\n }\n }\n}\nconst assign = Object.assign;\nlet _globalThis;\nconst getGlobalThis = () => {\n // prettier-ignore\n return _globalThis || (_globalThis = typeof globalThis !== 'undefined' ? globalThis : typeof self !== 'undefined' ? self : typeof window !== 'undefined' ? window : typeof __webpack_require__.g !== 'undefined' ? __webpack_require__.g : {});\n};\nfunction escapeHtml(rawText) {\n return rawText.replace(//g, '>').replace(/\"/g, '"').replace(/'/g, ''');\n}\nconst hasOwnProperty = Object.prototype.hasOwnProperty;\nfunction hasOwn(obj, key) {\n return hasOwnProperty.call(obj, key);\n}\n/* eslint-enable */\n/**\r\n * Useful Utilities By Evan you\r\n * Modified by kazuya kawaguchi\r\n * MIT License\r\n * https://github.com/vuejs/vue-next/blob/master/packages/shared/src/index.ts\r\n * https://github.com/vuejs/vue-next/blob/master/packages/shared/src/codeframe.ts\r\n */\nconst isArray = Array.isArray;\nconst isFunction = val => typeof val === 'function';\nconst isString = val => typeof val === 'string';\nconst isBoolean = val => typeof val === 'boolean';\nconst isSymbol = val => typeof val === 'symbol';\nconst isObject = val =>\n// eslint-disable-line\nval !== null && typeof val === 'object';\nconst isPromise = val => {\n return isObject(val) && isFunction(val.then) && isFunction(val.catch);\n};\nconst objectToString = Object.prototype.toString;\nconst toTypeString = value => objectToString.call(value);\nconst isPlainObject = val => toTypeString(val) === '[object Object]';\n// for converting list and named values to displayed strings.\nconst toDisplayString = val => {\n return val == null ? '' : isArray(val) || isPlainObject(val) && val.toString === objectToString ? JSON.stringify(val, null, 2) : String(val);\n};\nconst RANGE = 2;\nfunction generateCodeFrame(source, start = 0, end = source.length) {\n const lines = source.split(/\\r?\\n/);\n let count = 0;\n const res = [];\n for (let i = 0; i < lines.length; i++) {\n count += lines[i].length + 1;\n if (count >= start) {\n for (let j = i - RANGE; j <= i + RANGE || end > count; j++) {\n if (j < 0 || j >= lines.length) continue;\n const line = j + 1;\n res.push(`${line}${' '.repeat(3 - String(line).length)}| ${lines[j]}`);\n const lineLength = lines[j].length;\n if (j === i) {\n // push underline\n const pad = start - (count - lineLength) + 1;\n const length = Math.max(1, end > count ? lineLength - pad : end - start);\n res.push(` | ` + ' '.repeat(pad) + '^'.repeat(length));\n } else if (j > i) {\n if (end > count) {\n const length = Math.max(Math.min(end - count, lineLength), 1);\n res.push(` | ` + '^'.repeat(length));\n }\n count += lineLength + 1;\n }\n }\n break;\n }\n }\n return res.join('\\n');\n}\n\n/**\r\n * Event emitter, forked from the below:\r\n * - original repository url: https://github.com/developit/mitt\r\n * - code url: https://github.com/developit/mitt/blob/master/src/index.ts\r\n * - author: Jason Miller (https://github.com/developit)\r\n * - license: MIT\r\n */\n/**\r\n * Create a event emitter\r\n *\r\n * @returns An event emitter\r\n */\nfunction createEmitter() {\n const events = new Map();\n const emitter = {\n events,\n on(event, handler) {\n const handlers = events.get(event);\n const added = handlers && handlers.push(handler);\n if (!added) {\n events.set(event, [handler]);\n }\n },\n off(event, handler) {\n const handlers = events.get(event);\n if (handlers) {\n handlers.splice(handlers.indexOf(handler) >>> 0, 1);\n }\n },\n emit(event, payload) {\n (events.get(event) || []).slice().map(handler => handler(payload));\n (events.get('*') || []).slice().map(handler => handler(event, payload));\n }\n };\n return emitter;\n}\n\n\n//# sourceURL=webpack://jandl/./node_modules/@intlify/shared/dist/shared.esm-bundler.js?"); - -/***/ }), - -/***/ "./node_modules/@intlify/vue-devtools/dist/vue-devtools.esm-bundler.js": -/*!*****************************************************************************!*\ - !*** ./node_modules/@intlify/vue-devtools/dist/vue-devtools.esm-bundler.js ***! - \*****************************************************************************/ -/***/ (function(__unused_webpack_module, __webpack_exports__, __webpack_require__) { - -"use strict"; -eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"VueDevToolsLabels\": function() { return /* binding */ VueDevToolsLabels; },\n/* harmony export */ \"VueDevToolsPlaceholders\": function() { return /* binding */ VueDevToolsPlaceholders; },\n/* harmony export */ \"VueDevToolsTimelineColors\": function() { return /* binding */ VueDevToolsTimelineColors; }\n/* harmony export */ });\n/*!\n * vue-devtools v9.2.2\n * (c) 2022 kazuya kawaguchi\n * Released under the MIT License.\n */\nconst VueDevToolsLabels = {\n [\"vue-devtools-plugin-vue-i18n\" /* PLUGIN */]: 'Vue I18n devtools',\n [\"vue-i18n-resource-inspector\" /* CUSTOM_INSPECTOR */]: 'I18n Resources',\n [\"vue-i18n-timeline\" /* TIMELINE */]: 'Vue I18n'\n};\nconst VueDevToolsPlaceholders = {\n [\"vue-i18n-resource-inspector\" /* CUSTOM_INSPECTOR */]: 'Search for scopes ...'\n};\nconst VueDevToolsTimelineColors = {\n [\"vue-i18n-timeline\" /* TIMELINE */]: 0xffcd19\n};\n\n\n//# sourceURL=webpack://jandl/./node_modules/@intlify/vue-devtools/dist/vue-devtools.esm-bundler.js?"); +eval("{__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ assign: function() { return /* binding */ assign; },\n/* harmony export */ create: function() { return /* binding */ create; },\n/* harmony export */ createEmitter: function() { return /* binding */ createEmitter; },\n/* harmony export */ deepCopy: function() { return /* binding */ deepCopy; },\n/* harmony export */ escapeHtml: function() { return /* binding */ escapeHtml; },\n/* harmony export */ format: function() { return /* binding */ format; },\n/* harmony export */ friendlyJSONstringify: function() { return /* binding */ friendlyJSONstringify; },\n/* harmony export */ generateCodeFrame: function() { return /* binding */ generateCodeFrame; },\n/* harmony export */ generateFormatCacheKey: function() { return /* binding */ generateFormatCacheKey; },\n/* harmony export */ getGlobalThis: function() { return /* binding */ getGlobalThis; },\n/* harmony export */ hasOwn: function() { return /* binding */ hasOwn; },\n/* harmony export */ inBrowser: function() { return /* binding */ inBrowser; },\n/* harmony export */ incrementer: function() { return /* binding */ incrementer; },\n/* harmony export */ isArray: function() { return /* binding */ isArray; },\n/* harmony export */ isBoolean: function() { return /* binding */ isBoolean; },\n/* harmony export */ isDate: function() { return /* binding */ isDate; },\n/* harmony export */ isEmptyObject: function() { return /* binding */ isEmptyObject; },\n/* harmony export */ isFunction: function() { return /* binding */ isFunction; },\n/* harmony export */ isNumber: function() { return /* binding */ isNumber; },\n/* harmony export */ isObject: function() { return /* binding */ isObject; },\n/* harmony export */ isPlainObject: function() { return /* binding */ isPlainObject; },\n/* harmony export */ isPromise: function() { return /* binding */ isPromise; },\n/* harmony export */ isRegExp: function() { return /* binding */ isRegExp; },\n/* harmony export */ isString: function() { return /* binding */ isString; },\n/* harmony export */ isSymbol: function() { return /* binding */ isSymbol; },\n/* harmony export */ join: function() { return /* binding */ join; },\n/* harmony export */ makeSymbol: function() { return /* binding */ makeSymbol; },\n/* harmony export */ mark: function() { return /* binding */ mark; },\n/* harmony export */ measure: function() { return /* binding */ measure; },\n/* harmony export */ objectToString: function() { return /* binding */ objectToString; },\n/* harmony export */ sanitizeTranslatedHtml: function() { return /* binding */ sanitizeTranslatedHtml; },\n/* harmony export */ toDisplayString: function() { return /* binding */ toDisplayString; },\n/* harmony export */ toTypeString: function() { return /* binding */ toTypeString; },\n/* harmony export */ warn: function() { return /* binding */ warn; },\n/* harmony export */ warnOnce: function() { return /* binding */ warnOnce; }\n/* harmony export */ });\n/* harmony import */ var core_js_modules_es_array_push_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! core-js/modules/es.array.push.js */ \"./node_modules/core-js/modules/es.array.push.js\");\n/* harmony import */ var core_js_modules_es_json_stringify_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! core-js/modules/es.json.stringify.js */ \"./node_modules/core-js/modules/es.json.stringify.js\");\n/* harmony import */ var core_js_modules_esnext_iterator_constructor_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! core-js/modules/esnext.iterator.constructor.js */ \"./node_modules/core-js/modules/esnext.iterator.constructor.js\");\n/* harmony import */ var core_js_modules_esnext_iterator_for_each_js__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! core-js/modules/esnext.iterator.for-each.js */ \"./node_modules/core-js/modules/esnext.iterator.for-each.js\");\n/* harmony import */ var core_js_modules_esnext_iterator_map_js__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! core-js/modules/esnext.iterator.map.js */ \"./node_modules/core-js/modules/esnext.iterator.map.js\");\n/* harmony import */ var core_js_modules_esnext_iterator_reduce_js__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! core-js/modules/esnext.iterator.reduce.js */ \"./node_modules/core-js/modules/esnext.iterator.reduce.js\");\n/* provided dependency */ var console = __webpack_require__(/*! ./node_modules/console-browserify/index.js */ \"./node_modules/console-browserify/index.js\");\n\n\n\n\n\n\n/*!\n * shared v9.14.5\n * (c) 2025 kazuya kawaguchi\n * Released under the MIT License.\n */\nfunction warn(msg, err) {\n if (typeof console !== 'undefined') {\n console.warn(`[intlify] ` + msg);\n /* istanbul ignore if */\n if (err) {\n console.warn(err.stack);\n }\n }\n}\nconst hasWarned = {};\nfunction warnOnce(msg) {\n if (!hasWarned[msg]) {\n hasWarned[msg] = true;\n warn(msg);\n }\n}\n\n/**\n * Original Utilities\n * written by kazuya kawaguchi\n */\nconst inBrowser = typeof window !== 'undefined';\nlet mark;\nlet measure;\nif (true) {\n const perf = inBrowser && window.performance;\n if (perf && perf.mark && perf.measure && perf.clearMarks &&\n // @ts-ignore browser compat\n perf.clearMeasures) {\n mark = tag => {\n perf.mark(tag);\n };\n measure = (name, startTag, endTag) => {\n perf.measure(name, startTag, endTag);\n perf.clearMarks(startTag);\n perf.clearMarks(endTag);\n };\n }\n}\nconst RE_ARGS = /\\{([0-9a-zA-Z]+)\\}/g;\n/* eslint-disable */\nfunction format(message, ...args) {\n if (args.length === 1 && isObject(args[0])) {\n args = args[0];\n }\n if (!args || !args.hasOwnProperty) {\n args = {};\n }\n return message.replace(RE_ARGS, (match, identifier) => {\n return args.hasOwnProperty(identifier) ? args[identifier] : '';\n });\n}\nconst makeSymbol = (name, shareable = false) => !shareable ? Symbol(name) : Symbol.for(name);\nconst generateFormatCacheKey = (locale, key, source) => friendlyJSONstringify({\n l: locale,\n k: key,\n s: source\n});\nconst friendlyJSONstringify = json => JSON.stringify(json).replace(/\\u2028/g, '\\\\u2028').replace(/\\u2029/g, '\\\\u2029').replace(/\\u0027/g, '\\\\u0027');\nconst isNumber = val => typeof val === 'number' && isFinite(val);\nconst isDate = val => toTypeString(val) === '[object Date]';\nconst isRegExp = val => toTypeString(val) === '[object RegExp]';\nconst isEmptyObject = val => isPlainObject(val) && Object.keys(val).length === 0;\nconst assign = Object.assign;\nconst _create = Object.create;\nconst create = (obj = null) => _create(obj);\nlet _globalThis;\nconst getGlobalThis = () => {\n // prettier-ignore\n return _globalThis || (_globalThis = typeof globalThis !== 'undefined' ? globalThis : typeof self !== 'undefined' ? self : typeof window !== 'undefined' ? window : typeof __webpack_require__.g !== 'undefined' ? __webpack_require__.g : create());\n};\nfunction escapeHtml(rawText) {\n return rawText.replace(/&/g, '&') // escape `&` first to avoid double escaping\n .replace(//g, '>').replace(/\"/g, '"').replace(/'/g, ''').replace(/\\//g, '/') // escape `/` to prevent closing tags or JavaScript URLs\n .replace(/=/g, '='); // escape `=` to prevent attribute injection\n}\nfunction escapeAttributeValue(value) {\n return value.replace(/&(?![a-zA-Z0-9#]{2,6};)/g, '&') // escape unescaped `&`\n .replace(/\"/g, '"').replace(/'/g, ''').replace(//g, '>');\n}\nfunction sanitizeTranslatedHtml(html) {\n // Escape dangerous characters in attribute values\n // Process attributes with double quotes\n html = html.replace(/(\\w+)\\s*=\\s*\"([^\"]*)\"/g, (_, attrName, attrValue) => `${attrName}=\"${escapeAttributeValue(attrValue)}\"`);\n // Process attributes with single quotes\n html = html.replace(/(\\w+)\\s*=\\s*'([^']*)'/g, (_, attrName, attrValue) => `${attrName}='${escapeAttributeValue(attrValue)}'`);\n // Detect and neutralize event handler attributes\n const eventHandlerPattern = /\\s*on\\w+\\s*=\\s*[\"']?[^\"'>]+[\"']?/gi;\n if (eventHandlerPattern.test(html)) {\n if (true) {\n warn('Potentially dangerous event handlers detected in translation. ' + 'Consider removing onclick, onerror, etc. from your translation messages.');\n }\n // Neutralize event handler attributes by escaping 'on'\n html = html.replace(/(\\s+)(on)(\\w+\\s*=)/gi, '$1on$3');\n }\n // Disable javascript: URLs in various contexts\n const javascriptUrlPattern = [\n // In href, src, action, formaction attributes\n /(\\s+(?:href|src|action|formaction)\\s*=\\s*[\"']?)\\s*javascript:/gi,\n // In style attributes within url()\n /(style\\s*=\\s*[\"'][^\"']*url\\s*\\(\\s*)javascript:/gi];\n javascriptUrlPattern.forEach(pattern => {\n html = html.replace(pattern, '$1javascript:');\n });\n return html;\n}\nconst hasOwnProperty = Object.prototype.hasOwnProperty;\nfunction hasOwn(obj, key) {\n return hasOwnProperty.call(obj, key);\n}\n/* eslint-enable */\n/**\n * Useful Utilities By Evan you\n * Modified by kazuya kawaguchi\n * MIT License\n * https://github.com/vuejs/vue-next/blob/master/packages/shared/src/index.ts\n * https://github.com/vuejs/vue-next/blob/master/packages/shared/src/codeframe.ts\n */\nconst isArray = Array.isArray;\nconst isFunction = val => typeof val === 'function';\nconst isString = val => typeof val === 'string';\nconst isBoolean = val => typeof val === 'boolean';\nconst isSymbol = val => typeof val === 'symbol';\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\nconst isObject = val => val !== null && typeof val === 'object';\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\nconst isPromise = val => {\n return isObject(val) && isFunction(val.then) && isFunction(val.catch);\n};\nconst objectToString = Object.prototype.toString;\nconst toTypeString = value => objectToString.call(value);\nconst isPlainObject = val => {\n if (!isObject(val)) return false;\n const proto = Object.getPrototypeOf(val);\n return proto === null || proto.constructor === Object;\n};\n// for converting list and named values to displayed strings.\nconst toDisplayString = val => {\n return val == null ? '' : isArray(val) || isPlainObject(val) && val.toString === objectToString ? JSON.stringify(val, null, 2) : String(val);\n};\nfunction join(items, separator = '') {\n return items.reduce((str, item, index) => index === 0 ? str + item : str + separator + item, '');\n}\nconst RANGE = 2;\nfunction generateCodeFrame(source, start = 0, end = source.length) {\n const lines = source.split(/\\r?\\n/);\n let count = 0;\n const res = [];\n for (let i = 0; i < lines.length; i++) {\n count += lines[i].length + 1;\n if (count >= start) {\n for (let j = i - RANGE; j <= i + RANGE || end > count; j++) {\n if (j < 0 || j >= lines.length) continue;\n const line = j + 1;\n res.push(`${line}${' '.repeat(3 - String(line).length)}| ${lines[j]}`);\n const lineLength = lines[j].length;\n if (j === i) {\n // push underline\n const pad = start - (count - lineLength) + 1;\n const length = Math.max(1, end > count ? lineLength - pad : end - start);\n res.push(` | ` + ' '.repeat(pad) + '^'.repeat(length));\n } else if (j > i) {\n if (end > count) {\n const length = Math.max(Math.min(end - count, lineLength), 1);\n res.push(` | ` + '^'.repeat(length));\n }\n count += lineLength + 1;\n }\n }\n break;\n }\n }\n return res.join('\\n');\n}\nfunction incrementer(code) {\n let current = code;\n return () => ++current;\n}\n\n/**\n * Event emitter, forked from the below:\n * - original repository url: https://github.com/developit/mitt\n * - code url: https://github.com/developit/mitt/blob/master/src/index.ts\n * - author: Jason Miller (https://github.com/developit)\n * - license: MIT\n */\n/**\n * Create a event emitter\n *\n * @returns An event emitter\n */\nfunction createEmitter() {\n const events = new Map();\n const emitter = {\n events,\n on(event, handler) {\n const handlers = events.get(event);\n const added = handlers && handlers.push(handler);\n if (!added) {\n events.set(event, [handler]);\n }\n },\n off(event, handler) {\n const handlers = events.get(event);\n if (handlers) {\n handlers.splice(handlers.indexOf(handler) >>> 0, 1);\n }\n },\n emit(event, payload) {\n (events.get(event) || []).slice().map(handler => handler(payload));\n (events.get('*') || []).slice().map(handler => handler(event, payload));\n }\n };\n return emitter;\n}\nconst isNotObjectOrIsArray = val => !isObject(val) || isArray(val);\n// eslint-disable-next-line @typescript-eslint/no-explicit-any, @typescript-eslint/explicit-module-boundary-types\nfunction deepCopy(src, des) {\n // src and des should both be objects, and none of them can be a array\n if (isNotObjectOrIsArray(src) || isNotObjectOrIsArray(des)) {\n throw new Error('Invalid value');\n }\n const stack = [{\n src,\n des\n }];\n while (stack.length) {\n const {\n src,\n des\n } = stack.pop();\n // using `Object.keys` which skips prototype properties\n Object.keys(src).forEach(key => {\n if (key === '__proto__') {\n return;\n }\n // if src[key] is an object/array, set des[key]\n // to empty object/array to prevent setting by reference\n if (isObject(src[key]) && !isObject(des[key])) {\n des[key] = Array.isArray(src[key]) ? [] : create();\n }\n if (isNotObjectOrIsArray(des[key]) || isNotObjectOrIsArray(src[key])) {\n // replace with src[key] when:\n // src[key] or des[key] is not an object, or\n // src[key] or des[key] is an array\n des[key] = src[key];\n } else {\n // src[key] and des[key] are both objects, merge them\n stack.push({\n src: src[key],\n des: des[key]\n });\n }\n });\n }\n}\n\n\n//# sourceURL=webpack://jandl/./node_modules/@intlify/shared/dist/shared.mjs?\n}"); /***/ }), @@ -103,7 +103,7 @@ eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpac /***/ (function(__unused_webpack_module, __webpack_exports__, __webpack_require__) { "use strict"; -eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"A\": function() { return /* binding */ ActionSheet; },\n/* harmony export */ \"d\": function() { return /* binding */ defineCustomElement; }\n/* harmony export */ });\n/* harmony import */ var _stencil_core_internal_client__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! @stencil/core/internal/client */ \"./node_modules/@stencil/core/internal/client/index.js\");\n/* harmony import */ var _ionic_global_js__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./ionic-global.js */ \"./node_modules/@ionic/core/components/ionic-global.js\");\n/* harmony import */ var _button_active_js__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ./button-active.js */ \"./node_modules/@ionic/core/components/button-active.js\");\n/* harmony import */ var _overlays_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./overlays.js */ \"./node_modules/@ionic/core/components/overlays.js\");\n/* harmony import */ var _theme_js__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ./theme.js */ \"./node_modules/@ionic/core/components/theme.js\");\n/* harmony import */ var _animation_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./animation.js */ \"./node_modules/@ionic/core/components/animation.js\");\n/* harmony import */ var _backdrop_js__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ./backdrop.js */ \"./node_modules/@ionic/core/components/backdrop.js\");\n/* harmony import */ var _icon_js__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! ./icon.js */ \"./node_modules/@ionic/core/components/icon.js\");\n/* harmony import */ var _ripple_effect_js__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! ./ripple-effect.js */ \"./node_modules/@ionic/core/components/ripple-effect.js\");\n/*!\n * (C) Ionic http://ionicframework.com - MIT License\n */\n\n\n\n\n\n\n\n\n\n\n/**\n * iOS Action Sheet Enter Animation\n */\nconst iosEnterAnimation = baseEl => {\n const baseAnimation = (0,_animation_js__WEBPACK_IMPORTED_MODULE_0__.c)();\n const backdropAnimation = (0,_animation_js__WEBPACK_IMPORTED_MODULE_0__.c)();\n const wrapperAnimation = (0,_animation_js__WEBPACK_IMPORTED_MODULE_0__.c)();\n backdropAnimation.addElement(baseEl.querySelector('ion-backdrop')).fromTo('opacity', 0.01, 'var(--backdrop-opacity)').beforeStyles({\n 'pointer-events': 'none'\n }).afterClearStyles(['pointer-events']);\n wrapperAnimation.addElement(baseEl.querySelector('.action-sheet-wrapper')).fromTo('transform', 'translateY(100%)', 'translateY(0%)');\n return baseAnimation.addElement(baseEl).easing('cubic-bezier(.36,.66,.04,1)').duration(400).addAnimation([backdropAnimation, wrapperAnimation]);\n};\n\n/**\n * iOS Action Sheet Leave Animation\n */\nconst iosLeaveAnimation = baseEl => {\n const baseAnimation = (0,_animation_js__WEBPACK_IMPORTED_MODULE_0__.c)();\n const backdropAnimation = (0,_animation_js__WEBPACK_IMPORTED_MODULE_0__.c)();\n const wrapperAnimation = (0,_animation_js__WEBPACK_IMPORTED_MODULE_0__.c)();\n backdropAnimation.addElement(baseEl.querySelector('ion-backdrop')).fromTo('opacity', 'var(--backdrop-opacity)', 0);\n wrapperAnimation.addElement(baseEl.querySelector('.action-sheet-wrapper')).fromTo('transform', 'translateY(0%)', 'translateY(100%)');\n return baseAnimation.addElement(baseEl).easing('cubic-bezier(.36,.66,.04,1)').duration(450).addAnimation([backdropAnimation, wrapperAnimation]);\n};\n\n/**\n * MD Action Sheet Enter Animation\n */\nconst mdEnterAnimation = baseEl => {\n const baseAnimation = (0,_animation_js__WEBPACK_IMPORTED_MODULE_0__.c)();\n const backdropAnimation = (0,_animation_js__WEBPACK_IMPORTED_MODULE_0__.c)();\n const wrapperAnimation = (0,_animation_js__WEBPACK_IMPORTED_MODULE_0__.c)();\n backdropAnimation.addElement(baseEl.querySelector('ion-backdrop')).fromTo('opacity', 0.01, 'var(--backdrop-opacity)').beforeStyles({\n 'pointer-events': 'none'\n }).afterClearStyles(['pointer-events']);\n wrapperAnimation.addElement(baseEl.querySelector('.action-sheet-wrapper')).fromTo('transform', 'translateY(100%)', 'translateY(0%)');\n return baseAnimation.addElement(baseEl).easing('cubic-bezier(.36,.66,.04,1)').duration(400).addAnimation([backdropAnimation, wrapperAnimation]);\n};\n\n/**\n * MD Action Sheet Leave Animation\n */\nconst mdLeaveAnimation = baseEl => {\n const baseAnimation = (0,_animation_js__WEBPACK_IMPORTED_MODULE_0__.c)();\n const backdropAnimation = (0,_animation_js__WEBPACK_IMPORTED_MODULE_0__.c)();\n const wrapperAnimation = (0,_animation_js__WEBPACK_IMPORTED_MODULE_0__.c)();\n backdropAnimation.addElement(baseEl.querySelector('ion-backdrop')).fromTo('opacity', 'var(--backdrop-opacity)', 0);\n wrapperAnimation.addElement(baseEl.querySelector('.action-sheet-wrapper')).fromTo('transform', 'translateY(0%)', 'translateY(100%)');\n return baseAnimation.addElement(baseEl).easing('cubic-bezier(.36,.66,.04,1)').duration(450).addAnimation([backdropAnimation, wrapperAnimation]);\n};\nconst actionSheetIosCss = \".sc-ion-action-sheet-ios-h{--color:initial;--button-color-activated:var(--button-color);--button-color-focused:var(--button-color);--button-color-hover:var(--button-color);--button-color-selected:var(--button-color);--min-width:auto;--width:100%;--max-width:500px;--min-height:auto;--height:100%;--max-height:calc(100% - (var(--ion-safe-area-top) + var(--ion-safe-area-bottom)));-moz-osx-font-smoothing:grayscale;-webkit-font-smoothing:antialiased;left:0;right:0;top:0;bottom:0;display:block;position:fixed;outline:none;font-family:var(--ion-font-family, inherit);-ms-touch-action:none;touch-action:none;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;z-index:1001}.overlay-hidden.sc-ion-action-sheet-ios-h{display:none}.action-sheet-wrapper.sc-ion-action-sheet-ios{left:0;right:0;bottom:0;-webkit-transform:translate3d(0, 100%, 0);transform:translate3d(0, 100%, 0);display:block;position:absolute;width:var(--width);min-width:var(--min-width);max-width:var(--max-width);height:var(--height);min-height:var(--min-height);max-height:var(--max-height);z-index:10;pointer-events:none}.action-sheet-button.sc-ion-action-sheet-ios{display:block;position:relative;width:100%;border:0;outline:none;background:var(--button-background);color:var(--button-color);font-family:inherit;overflow:hidden}.action-sheet-button-inner.sc-ion-action-sheet-ios{display:-ms-flexbox;display:flex;position:relative;-ms-flex-flow:row nowrap;flex-flow:row nowrap;-ms-flex-negative:0;flex-shrink:0;-ms-flex-align:center;align-items:center;-ms-flex-pack:center;justify-content:center;pointer-events:none;width:100%;height:100%;z-index:1}.action-sheet-container.sc-ion-action-sheet-ios{display:-ms-flexbox;display:flex;-ms-flex-flow:column;flex-flow:column;-ms-flex-pack:end;justify-content:flex-end;height:100%;max-height:100%}.action-sheet-group.sc-ion-action-sheet-ios{-ms-flex-negative:2;flex-shrink:2;overscroll-behavior-y:contain;overflow-y:auto;-webkit-overflow-scrolling:touch;pointer-events:all;background:var(--background)}.action-sheet-group.sc-ion-action-sheet-ios::-webkit-scrollbar{display:none}.action-sheet-group-cancel.sc-ion-action-sheet-ios{-ms-flex-negative:0;flex-shrink:0;overflow:hidden}.action-sheet-button.sc-ion-action-sheet-ios::after{left:0;right:0;top:0;bottom:0;position:absolute;content:\\\"\\\";opacity:0}.action-sheet-selected.sc-ion-action-sheet-ios{color:var(--button-color-selected)}.action-sheet-selected.sc-ion-action-sheet-ios::after{background:var(--button-background-selected);opacity:var(--button-background-selected-opacity)}.action-sheet-button.ion-activated.sc-ion-action-sheet-ios{color:var(--button-color-activated)}.action-sheet-button.ion-activated.sc-ion-action-sheet-ios::after{background:var(--button-background-activated);opacity:var(--button-background-activated-opacity)}.action-sheet-button.ion-focused.sc-ion-action-sheet-ios{color:var(--button-color-focused)}.action-sheet-button.ion-focused.sc-ion-action-sheet-ios::after{background:var(--button-background-focused);opacity:var(--button-background-focused-opacity)}@media (any-hover: hover){.action-sheet-button.sc-ion-action-sheet-ios:hover{color:var(--button-color-hover)}.action-sheet-button.sc-ion-action-sheet-ios:hover::after{background:var(--button-background-hover);opacity:var(--button-background-hover-opacity)}}.sc-ion-action-sheet-ios-h{--background:var(--ion-overlay-background-color, var(--ion-color-step-100, #f9f9f9));--backdrop-opacity:var(--ion-backdrop-opacity, 0.4);--button-background:linear-gradient(0deg, rgba(var(--ion-text-color-rgb, 0, 0, 0), 0.08), rgba(var(--ion-text-color-rgb, 0, 0, 0), 0.08) 50%, transparent 50%) bottom/100% 1px no-repeat transparent;--button-background-activated:var(--ion-text-color, #000);--button-background-activated-opacity:.08;--button-background-hover:currentColor;--button-background-hover-opacity:.04;--button-background-focused:currentColor;--button-background-focused-opacity:.12;--button-background-selected:var(--ion-color-step-150, var(--ion-background-color, #fff));--button-background-selected-opacity:1;--button-color:var(--ion-color-primary, #3880ff);--color:var(--ion-color-step-400, #999999);text-align:center}.action-sheet-wrapper.sc-ion-action-sheet-ios{margin-left:auto;margin-right:auto;margin-top:var(--ion-safe-area-top, 0);margin-bottom:var(--ion-safe-area-bottom, 0)}@supports ((-webkit-margin-start: 0) or (margin-inline-start: 0)) or (-webkit-margin-start: 0){.action-sheet-wrapper.sc-ion-action-sheet-ios{margin-left:unset;margin-right:unset;-webkit-margin-start:auto;margin-inline-start:auto;-webkit-margin-end:auto;margin-inline-end:auto}}.action-sheet-container.sc-ion-action-sheet-ios{padding-left:8px;padding-right:8px;padding-top:0;padding-bottom:0}@supports ((-webkit-margin-start: 0) or (margin-inline-start: 0)) or (-webkit-margin-start: 0){.action-sheet-container.sc-ion-action-sheet-ios{padding-left:unset;padding-right:unset;-webkit-padding-start:8px;padding-inline-start:8px;-webkit-padding-end:8px;padding-inline-end:8px}}.action-sheet-group.sc-ion-action-sheet-ios{border-radius:13px;margin-bottom:8px}.action-sheet-group.sc-ion-action-sheet-ios:first-child{margin-top:10px}.action-sheet-group.sc-ion-action-sheet-ios:last-child{margin-bottom:10px}@supports ((-webkit-backdrop-filter: blur(0)) or (backdrop-filter: blur(0))){.action-sheet-translucent.sc-ion-action-sheet-ios-h .action-sheet-group.sc-ion-action-sheet-ios{background-color:transparent;-webkit-backdrop-filter:saturate(280%) blur(20px);backdrop-filter:saturate(280%) blur(20px)}.action-sheet-translucent.sc-ion-action-sheet-ios-h .action-sheet-title.sc-ion-action-sheet-ios,.action-sheet-translucent.sc-ion-action-sheet-ios-h .action-sheet-button.sc-ion-action-sheet-ios{background-color:transparent;background-image:-webkit-gradient(linear, left bottom, left top, from(rgba(var(--ion-background-color-rgb, 255, 255, 255), 0.8)), to(rgba(var(--ion-background-color-rgb, 255, 255, 255), 0.8))), -webkit-gradient(linear, left bottom, left top, from(rgba(var(--ion-background-color-rgb, 255, 255, 255), 0.4)), color-stop(50%, rgba(var(--ion-background-color-rgb, 255, 255, 255), 0.4)), color-stop(50%, rgba(var(--ion-background-color-rgb, 255, 255, 255), 0.8)));background-image:linear-gradient(0deg, rgba(var(--ion-background-color-rgb, 255, 255, 255), 0.8), rgba(var(--ion-background-color-rgb, 255, 255, 255), 0.8) 100%), linear-gradient(0deg, rgba(var(--ion-background-color-rgb, 255, 255, 255), 0.4), rgba(var(--ion-background-color-rgb, 255, 255, 255), 0.4) 50%, rgba(var(--ion-background-color-rgb, 255, 255, 255), 0.8) 50%);background-repeat:no-repeat;background-position:top, bottom;background-size:100% calc(100% - 1px), 100% 1px;-webkit-backdrop-filter:saturate(120%);backdrop-filter:saturate(120%)}.action-sheet-translucent.sc-ion-action-sheet-ios-h .action-sheet-button.ion-activated.sc-ion-action-sheet-ios{background-color:rgba(var(--ion-background-color-rgb, 255, 255, 255), 0.7);background-image:none}.action-sheet-translucent.sc-ion-action-sheet-ios-h .action-sheet-cancel.sc-ion-action-sheet-ios{background:var(--button-background-selected)}}.action-sheet-title.sc-ion-action-sheet-ios{background:-webkit-gradient(linear, left bottom, left top, from(rgba(var(--ion-text-color-rgb, 0, 0, 0), 0.08)), color-stop(50%, rgba(var(--ion-text-color-rgb, 0, 0, 0), 0.08)), color-stop(50%, transparent)) bottom/100% 1px no-repeat transparent;background:linear-gradient(0deg, rgba(var(--ion-text-color-rgb, 0, 0, 0), 0.08), rgba(var(--ion-text-color-rgb, 0, 0, 0), 0.08) 50%, transparent 50%) bottom/100% 1px no-repeat transparent}.action-sheet-title.sc-ion-action-sheet-ios{padding-left:10px;padding-right:10px;padding-top:14px;padding-bottom:13px;color:var(--color, var(--ion-color-step-400, #999999));font-size:13px;font-weight:400;text-align:center}@supports ((-webkit-margin-start: 0) or (margin-inline-start: 0)) or (-webkit-margin-start: 0){.action-sheet-title.sc-ion-action-sheet-ios{padding-left:unset;padding-right:unset;-webkit-padding-start:10px;padding-inline-start:10px;-webkit-padding-end:10px;padding-inline-end:10px}}.action-sheet-title.action-sheet-has-sub-title.sc-ion-action-sheet-ios{font-weight:600}.action-sheet-sub-title.sc-ion-action-sheet-ios{padding-left:0;padding-right:0;padding-top:6px;padding-bottom:0;font-size:13px;font-weight:400}.action-sheet-button.sc-ion-action-sheet-ios{padding-left:18px;padding-right:18px;padding-top:18px;padding-bottom:18px;height:56px;font-size:20px;contain:strict}@supports ((-webkit-margin-start: 0) or (margin-inline-start: 0)) or (-webkit-margin-start: 0){.action-sheet-button.sc-ion-action-sheet-ios{padding-left:unset;padding-right:unset;-webkit-padding-start:18px;padding-inline-start:18px;-webkit-padding-end:18px;padding-inline-end:18px}}.action-sheet-button.sc-ion-action-sheet-ios .action-sheet-icon.sc-ion-action-sheet-ios{margin-right:0.3em;font-size:28px;pointer-events:none}@supports ((-webkit-margin-start: 0) or (margin-inline-start: 0)) or (-webkit-margin-start: 0){.action-sheet-button.sc-ion-action-sheet-ios .action-sheet-icon.sc-ion-action-sheet-ios{margin-right:unset;-webkit-margin-end:0.3em;margin-inline-end:0.3em}}.action-sheet-button.sc-ion-action-sheet-ios:last-child{background-image:none}.action-sheet-selected.sc-ion-action-sheet-ios{font-weight:bold}.action-sheet-cancel.sc-ion-action-sheet-ios{font-weight:600}.action-sheet-cancel.sc-ion-action-sheet-ios::after{background:var(--button-background-selected);opacity:var(--button-background-selected-opacity)}.action-sheet-destructive.sc-ion-action-sheet-ios,.action-sheet-destructive.ion-activated.sc-ion-action-sheet-ios,.action-sheet-destructive.ion-focused.sc-ion-action-sheet-ios{color:var(--ion-color-danger, #eb445a)}@media (any-hover: hover){.action-sheet-destructive.sc-ion-action-sheet-ios:hover{color:var(--ion-color-danger, #eb445a)}}\";\nconst actionSheetMdCss = \".sc-ion-action-sheet-md-h{--color:initial;--button-color-activated:var(--button-color);--button-color-focused:var(--button-color);--button-color-hover:var(--button-color);--button-color-selected:var(--button-color);--min-width:auto;--width:100%;--max-width:500px;--min-height:auto;--height:100%;--max-height:calc(100% - (var(--ion-safe-area-top) + var(--ion-safe-area-bottom)));-moz-osx-font-smoothing:grayscale;-webkit-font-smoothing:antialiased;left:0;right:0;top:0;bottom:0;display:block;position:fixed;outline:none;font-family:var(--ion-font-family, inherit);-ms-touch-action:none;touch-action:none;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;z-index:1001}.overlay-hidden.sc-ion-action-sheet-md-h{display:none}.action-sheet-wrapper.sc-ion-action-sheet-md{left:0;right:0;bottom:0;-webkit-transform:translate3d(0, 100%, 0);transform:translate3d(0, 100%, 0);display:block;position:absolute;width:var(--width);min-width:var(--min-width);max-width:var(--max-width);height:var(--height);min-height:var(--min-height);max-height:var(--max-height);z-index:10;pointer-events:none}.action-sheet-button.sc-ion-action-sheet-md{display:block;position:relative;width:100%;border:0;outline:none;background:var(--button-background);color:var(--button-color);font-family:inherit;overflow:hidden}.action-sheet-button-inner.sc-ion-action-sheet-md{display:-ms-flexbox;display:flex;position:relative;-ms-flex-flow:row nowrap;flex-flow:row nowrap;-ms-flex-negative:0;flex-shrink:0;-ms-flex-align:center;align-items:center;-ms-flex-pack:center;justify-content:center;pointer-events:none;width:100%;height:100%;z-index:1}.action-sheet-container.sc-ion-action-sheet-md{display:-ms-flexbox;display:flex;-ms-flex-flow:column;flex-flow:column;-ms-flex-pack:end;justify-content:flex-end;height:100%;max-height:100%}.action-sheet-group.sc-ion-action-sheet-md{-ms-flex-negative:2;flex-shrink:2;overscroll-behavior-y:contain;overflow-y:auto;-webkit-overflow-scrolling:touch;pointer-events:all;background:var(--background)}.action-sheet-group.sc-ion-action-sheet-md::-webkit-scrollbar{display:none}.action-sheet-group-cancel.sc-ion-action-sheet-md{-ms-flex-negative:0;flex-shrink:0;overflow:hidden}.action-sheet-button.sc-ion-action-sheet-md::after{left:0;right:0;top:0;bottom:0;position:absolute;content:\\\"\\\";opacity:0}.action-sheet-selected.sc-ion-action-sheet-md{color:var(--button-color-selected)}.action-sheet-selected.sc-ion-action-sheet-md::after{background:var(--button-background-selected);opacity:var(--button-background-selected-opacity)}.action-sheet-button.ion-activated.sc-ion-action-sheet-md{color:var(--button-color-activated)}.action-sheet-button.ion-activated.sc-ion-action-sheet-md::after{background:var(--button-background-activated);opacity:var(--button-background-activated-opacity)}.action-sheet-button.ion-focused.sc-ion-action-sheet-md{color:var(--button-color-focused)}.action-sheet-button.ion-focused.sc-ion-action-sheet-md::after{background:var(--button-background-focused);opacity:var(--button-background-focused-opacity)}@media (any-hover: hover){.action-sheet-button.sc-ion-action-sheet-md:hover{color:var(--button-color-hover)}.action-sheet-button.sc-ion-action-sheet-md:hover::after{background:var(--button-background-hover);opacity:var(--button-background-hover-opacity)}}.sc-ion-action-sheet-md-h{--background:var(--ion-overlay-background-color, var(--ion-background-color, #fff));--backdrop-opacity:var(--ion-backdrop-opacity, 0.32);--button-background:transparent;--button-background-selected:currentColor;--button-background-selected-opacity:0;--button-background-activated:transparent;--button-background-activated-opacity:0;--button-background-hover:currentColor;--button-background-hover-opacity:.04;--button-background-focused:currentColor;--button-background-focused-opacity:.12;--button-color:var(--ion-color-step-850, #262626);--color:rgba(var(--ion-text-color-rgb, 0, 0, 0), 0.54)}.action-sheet-wrapper.sc-ion-action-sheet-md{margin-left:auto;margin-right:auto;margin-top:var(--ion-safe-area-top, 0);margin-bottom:0}@supports ((-webkit-margin-start: 0) or (margin-inline-start: 0)) or (-webkit-margin-start: 0){.action-sheet-wrapper.sc-ion-action-sheet-md{margin-left:unset;margin-right:unset;-webkit-margin-start:auto;margin-inline-start:auto;-webkit-margin-end:auto;margin-inline-end:auto}}.action-sheet-title.sc-ion-action-sheet-md{padding-left:16px;padding-right:16px;padding-top:20px;padding-bottom:17px;min-height:60px;color:var(--color, rgba(var(--ion-text-color-rgb, 0, 0, 0), 0.54));font-size:16px;text-align:start}@supports ((-webkit-margin-start: 0) or (margin-inline-start: 0)) or (-webkit-margin-start: 0){.action-sheet-title.sc-ion-action-sheet-md{padding-left:unset;padding-right:unset;-webkit-padding-start:16px;padding-inline-start:16px;-webkit-padding-end:16px;padding-inline-end:16px}}.action-sheet-sub-title.sc-ion-action-sheet-md{padding-left:0;padding-right:0;padding-top:16px;padding-bottom:0;font-size:14px}.action-sheet-group.sc-ion-action-sheet-md:first-child{padding-top:0}.action-sheet-group.sc-ion-action-sheet-md:last-child{padding-bottom:var(--ion-safe-area-bottom)}.action-sheet-button.sc-ion-action-sheet-md{padding-left:16px;padding-right:16px;padding-top:0;padding-bottom:0;position:relative;height:52px;font-size:16px;text-align:start;contain:strict;overflow:hidden}@supports ((-webkit-margin-start: 0) or (margin-inline-start: 0)) or (-webkit-margin-start: 0){.action-sheet-button.sc-ion-action-sheet-md{padding-left:unset;padding-right:unset;-webkit-padding-start:16px;padding-inline-start:16px;-webkit-padding-end:16px;padding-inline-end:16px}}.action-sheet-icon.sc-ion-action-sheet-md{margin-left:0;margin-right:32px;margin-top:0;margin-bottom:0;color:var(--color);font-size:24px}@supports ((-webkit-margin-start: 0) or (margin-inline-start: 0)) or (-webkit-margin-start: 0){.action-sheet-icon.sc-ion-action-sheet-md{margin-left:unset;margin-right:unset;-webkit-margin-start:0;margin-inline-start:0;-webkit-margin-end:32px;margin-inline-end:32px}}.action-sheet-button-inner.sc-ion-action-sheet-md{-ms-flex-pack:start;justify-content:flex-start}.action-sheet-selected.sc-ion-action-sheet-md{font-weight:bold}\";\nconst ActionSheet = /*@__PURE__*/(0,_stencil_core_internal_client__WEBPACK_IMPORTED_MODULE_1__.proxyCustomElement)(class extends _stencil_core_internal_client__WEBPACK_IMPORTED_MODULE_1__.HTMLElement {\n constructor() {\n super();\n this.__registerHost();\n this.didPresent = (0,_stencil_core_internal_client__WEBPACK_IMPORTED_MODULE_1__.createEvent)(this, \"ionActionSheetDidPresent\", 7);\n this.willPresent = (0,_stencil_core_internal_client__WEBPACK_IMPORTED_MODULE_1__.createEvent)(this, \"ionActionSheetWillPresent\", 7);\n this.willDismiss = (0,_stencil_core_internal_client__WEBPACK_IMPORTED_MODULE_1__.createEvent)(this, \"ionActionSheetWillDismiss\", 7);\n this.didDismiss = (0,_stencil_core_internal_client__WEBPACK_IMPORTED_MODULE_1__.createEvent)(this, \"ionActionSheetDidDismiss\", 7);\n this.presented = false;\n /**\n * If `true`, the keyboard will be automatically dismissed when the overlay is presented.\n */\n this.keyboardClose = true;\n /**\n * An array of buttons for the action sheet.\n */\n this.buttons = [];\n /**\n * If `true`, the action sheet will be dismissed when the backdrop is clicked.\n */\n this.backdropDismiss = true;\n /**\n * If `true`, the action sheet will be translucent.\n * Only applies when the mode is `\"ios\"` and the device supports\n * [`backdrop-filter`](https://developer.mozilla.org/en-US/docs/Web/CSS/backdrop-filter#Browser_compatibility).\n */\n this.translucent = false;\n /**\n * If `true`, the action sheet will animate.\n */\n this.animated = true;\n this.onBackdropTap = () => {\n this.dismiss(undefined, _overlays_js__WEBPACK_IMPORTED_MODULE_2__.B);\n };\n this.dispatchCancelHandler = ev => {\n const role = ev.detail.role;\n if ((0,_overlays_js__WEBPACK_IMPORTED_MODULE_2__.j)(role)) {\n const cancelButton = this.getButtons().find(b => b.role === 'cancel');\n this.callButtonHandler(cancelButton);\n }\n };\n }\n /**\n * Present the action sheet overlay after it has been created.\n */\n present() {\n return (0,_overlays_js__WEBPACK_IMPORTED_MODULE_2__.e)(this, 'actionSheetEnter', iosEnterAnimation, mdEnterAnimation);\n }\n connectedCallback() {\n (0,_overlays_js__WEBPACK_IMPORTED_MODULE_2__.d)(this.el);\n }\n /**\n * Dismiss the action sheet overlay after it has been presented.\n *\n * @param data Any data to emit in the dismiss events.\n * @param role The role of the element that is dismissing the action sheet.\n * This can be useful in a button handler for determining which button was\n * clicked to dismiss the action sheet.\n * Some examples include: ``\"cancel\"`, `\"destructive\"`, \"selected\"`, and `\"backdrop\"`.\n */\n dismiss(data, role) {\n return (0,_overlays_js__WEBPACK_IMPORTED_MODULE_2__.f)(this, data, role, 'actionSheetLeave', iosLeaveAnimation, mdLeaveAnimation);\n }\n /**\n * Returns a promise that resolves when the action sheet did dismiss.\n */\n onDidDismiss() {\n return (0,_overlays_js__WEBPACK_IMPORTED_MODULE_2__.g)(this.el, 'ionActionSheetDidDismiss');\n }\n /**\n * Returns a promise that resolves when the action sheet will dismiss.\n *\n */\n onWillDismiss() {\n return (0,_overlays_js__WEBPACK_IMPORTED_MODULE_2__.g)(this.el, 'ionActionSheetWillDismiss');\n }\n async buttonClick(button) {\n const role = button.role;\n if ((0,_overlays_js__WEBPACK_IMPORTED_MODULE_2__.j)(role)) {\n return this.dismiss(button.data, role);\n }\n const shouldDismiss = await this.callButtonHandler(button);\n if (shouldDismiss) {\n return this.dismiss(button.data, button.role);\n }\n return Promise.resolve();\n }\n async callButtonHandler(button) {\n if (button) {\n // a handler has been provided, execute it\n // pass the handler the values from the inputs\n const rtn = await (0,_overlays_js__WEBPACK_IMPORTED_MODULE_2__.s)(button.handler);\n if (rtn === false) {\n // if the return value of the handler is false then do not dismiss\n return false;\n }\n }\n return true;\n }\n getButtons() {\n return this.buttons.map(b => {\n return typeof b === 'string' ? {\n text: b\n } : b;\n });\n }\n disconnectedCallback() {\n if (this.gesture) {\n this.gesture.destroy();\n this.gesture = undefined;\n }\n }\n componentDidLoad() {\n /**\n * Do not create gesture if:\n * 1. A gesture already exists\n * 2. App is running in MD mode\n * 3. A wrapper ref does not exist\n */\n const {\n groupEl,\n wrapperEl\n } = this;\n if (this.gesture || (0,_ionic_global_js__WEBPACK_IMPORTED_MODULE_3__.b)(this) === 'md' || !wrapperEl || !groupEl) {\n return;\n }\n (0,_stencil_core_internal_client__WEBPACK_IMPORTED_MODULE_1__.readTask)(() => {\n const isScrollable = groupEl.scrollHeight > groupEl.clientHeight;\n if (!isScrollable) {\n this.gesture = (0,_button_active_js__WEBPACK_IMPORTED_MODULE_4__.c)(wrapperEl, refEl => refEl.classList.contains('action-sheet-button'));\n this.gesture.enable(true);\n }\n });\n }\n render() {\n const {\n header,\n htmlAttributes,\n overlayIndex\n } = this;\n const mode = (0,_ionic_global_js__WEBPACK_IMPORTED_MODULE_3__.b)(this);\n const allButtons = this.getButtons();\n const cancelButton = allButtons.find(b => b.role === 'cancel');\n const buttons = allButtons.filter(b => b.role !== 'cancel');\n const headerID = `action-sheet-${overlayIndex}-header`;\n return (0,_stencil_core_internal_client__WEBPACK_IMPORTED_MODULE_1__.h)(_stencil_core_internal_client__WEBPACK_IMPORTED_MODULE_1__.Host, Object.assign({\n role: \"dialog\",\n \"aria-modal\": \"true\",\n \"aria-labelledby\": header !== undefined ? headerID : null,\n tabindex: \"-1\"\n }, htmlAttributes, {\n style: {\n zIndex: `${20000 + this.overlayIndex}`\n },\n class: Object.assign(Object.assign({\n [mode]: true\n }, (0,_theme_js__WEBPACK_IMPORTED_MODULE_5__.g)(this.cssClass)), {\n 'overlay-hidden': true,\n 'action-sheet-translucent': this.translucent\n }),\n onIonActionSheetWillDismiss: this.dispatchCancelHandler,\n onIonBackdropTap: this.onBackdropTap\n }), (0,_stencil_core_internal_client__WEBPACK_IMPORTED_MODULE_1__.h)(\"ion-backdrop\", {\n tappable: this.backdropDismiss\n }), (0,_stencil_core_internal_client__WEBPACK_IMPORTED_MODULE_1__.h)(\"div\", {\n tabindex: \"0\"\n }), (0,_stencil_core_internal_client__WEBPACK_IMPORTED_MODULE_1__.h)(\"div\", {\n class: \"action-sheet-wrapper ion-overlay-wrapper\",\n ref: el => this.wrapperEl = el\n }, (0,_stencil_core_internal_client__WEBPACK_IMPORTED_MODULE_1__.h)(\"div\", {\n class: \"action-sheet-container\"\n }, (0,_stencil_core_internal_client__WEBPACK_IMPORTED_MODULE_1__.h)(\"div\", {\n class: \"action-sheet-group\",\n ref: el => this.groupEl = el\n }, header !== undefined && (0,_stencil_core_internal_client__WEBPACK_IMPORTED_MODULE_1__.h)(\"div\", {\n id: headerID,\n class: {\n 'action-sheet-title': true,\n 'action-sheet-has-sub-title': this.subHeader !== undefined\n }\n }, header, this.subHeader && (0,_stencil_core_internal_client__WEBPACK_IMPORTED_MODULE_1__.h)(\"div\", {\n class: \"action-sheet-sub-title\"\n }, this.subHeader)), buttons.map(b => (0,_stencil_core_internal_client__WEBPACK_IMPORTED_MODULE_1__.h)(\"button\", {\n type: \"button\",\n id: b.id,\n class: buttonClass(b),\n onClick: () => this.buttonClick(b)\n }, (0,_stencil_core_internal_client__WEBPACK_IMPORTED_MODULE_1__.h)(\"span\", {\n class: \"action-sheet-button-inner\"\n }, b.icon && (0,_stencil_core_internal_client__WEBPACK_IMPORTED_MODULE_1__.h)(\"ion-icon\", {\n icon: b.icon,\n lazy: false,\n class: \"action-sheet-icon\"\n }), b.text), mode === 'md' && (0,_stencil_core_internal_client__WEBPACK_IMPORTED_MODULE_1__.h)(\"ion-ripple-effect\", null)))), cancelButton && (0,_stencil_core_internal_client__WEBPACK_IMPORTED_MODULE_1__.h)(\"div\", {\n class: \"action-sheet-group action-sheet-group-cancel\"\n }, (0,_stencil_core_internal_client__WEBPACK_IMPORTED_MODULE_1__.h)(\"button\", {\n type: \"button\",\n class: buttonClass(cancelButton),\n onClick: () => this.buttonClick(cancelButton)\n }, (0,_stencil_core_internal_client__WEBPACK_IMPORTED_MODULE_1__.h)(\"span\", {\n class: \"action-sheet-button-inner\"\n }, cancelButton.icon && (0,_stencil_core_internal_client__WEBPACK_IMPORTED_MODULE_1__.h)(\"ion-icon\", {\n icon: cancelButton.icon,\n lazy: false,\n class: \"action-sheet-icon\"\n }), cancelButton.text), mode === 'md' && (0,_stencil_core_internal_client__WEBPACK_IMPORTED_MODULE_1__.h)(\"ion-ripple-effect\", null))))), (0,_stencil_core_internal_client__WEBPACK_IMPORTED_MODULE_1__.h)(\"div\", {\n tabindex: \"0\"\n }));\n }\n get el() {\n return this;\n }\n static get style() {\n return {\n ios: actionSheetIosCss,\n md: actionSheetMdCss\n };\n }\n}, [34, \"ion-action-sheet\", {\n \"overlayIndex\": [2, \"overlay-index\"],\n \"keyboardClose\": [4, \"keyboard-close\"],\n \"enterAnimation\": [16],\n \"leaveAnimation\": [16],\n \"buttons\": [16],\n \"cssClass\": [1, \"css-class\"],\n \"backdropDismiss\": [4, \"backdrop-dismiss\"],\n \"header\": [1],\n \"subHeader\": [1, \"sub-header\"],\n \"translucent\": [4],\n \"animated\": [4],\n \"htmlAttributes\": [16],\n \"present\": [64],\n \"dismiss\": [64],\n \"onDidDismiss\": [64],\n \"onWillDismiss\": [64]\n}]);\nconst buttonClass = button => {\n return Object.assign({\n 'action-sheet-button': true,\n 'ion-activatable': true,\n 'ion-focusable': true,\n [`action-sheet-${button.role}`]: button.role !== undefined\n }, (0,_theme_js__WEBPACK_IMPORTED_MODULE_5__.g)(button.cssClass));\n};\nfunction defineCustomElement() {\n if (typeof customElements === \"undefined\") {\n return;\n }\n const components = [\"ion-action-sheet\", \"ion-backdrop\", \"ion-icon\", \"ion-ripple-effect\"];\n components.forEach(tagName => {\n switch (tagName) {\n case \"ion-action-sheet\":\n if (!customElements.get(tagName)) {\n customElements.define(tagName, ActionSheet);\n }\n break;\n case \"ion-backdrop\":\n if (!customElements.get(tagName)) {\n (0,_backdrop_js__WEBPACK_IMPORTED_MODULE_6__.d)();\n }\n break;\n case \"ion-icon\":\n if (!customElements.get(tagName)) {\n (0,_icon_js__WEBPACK_IMPORTED_MODULE_7__.d)();\n }\n break;\n case \"ion-ripple-effect\":\n if (!customElements.get(tagName)) {\n (0,_ripple_effect_js__WEBPACK_IMPORTED_MODULE_8__.d)();\n }\n break;\n }\n });\n}\n\n\n//# sourceURL=webpack://jandl/./node_modules/@ionic/core/components/action-sheet.js?"); +eval("{__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ A: function() { return /* binding */ ActionSheet; },\n/* harmony export */ d: function() { return /* binding */ defineCustomElement; }\n/* harmony export */ });\n/* harmony import */ var core_js_modules_esnext_iterator_constructor_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! core-js/modules/esnext.iterator.constructor.js */ \"./node_modules/core-js/modules/esnext.iterator.constructor.js\");\n/* harmony import */ var core_js_modules_esnext_iterator_constructor_js__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_esnext_iterator_constructor_js__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var core_js_modules_esnext_iterator_filter_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! core-js/modules/esnext.iterator.filter.js */ \"./node_modules/core-js/modules/esnext.iterator.filter.js\");\n/* harmony import */ var core_js_modules_esnext_iterator_filter_js__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_esnext_iterator_filter_js__WEBPACK_IMPORTED_MODULE_1__);\n/* harmony import */ var core_js_modules_esnext_iterator_find_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! core-js/modules/esnext.iterator.find.js */ \"./node_modules/core-js/modules/esnext.iterator.find.js\");\n/* harmony import */ var core_js_modules_esnext_iterator_find_js__WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_esnext_iterator_find_js__WEBPACK_IMPORTED_MODULE_2__);\n/* harmony import */ var core_js_modules_esnext_iterator_map_js__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! core-js/modules/esnext.iterator.map.js */ \"./node_modules/core-js/modules/esnext.iterator.map.js\");\n/* harmony import */ var core_js_modules_esnext_iterator_map_js__WEBPACK_IMPORTED_MODULE_3___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_esnext_iterator_map_js__WEBPACK_IMPORTED_MODULE_3__);\n/* harmony import */ var _stencil_core_internal_client__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! @stencil/core/internal/client */ \"./node_modules/@stencil/core/internal/client/index.js\");\n/* harmony import */ var _ionic_global_js__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ./ionic-global.js */ \"./node_modules/@ionic/core/components/ionic-global.js\");\n/* harmony import */ var _button_active_js__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ./button-active.js */ \"./node_modules/@ionic/core/components/button-active.js\");\n/* harmony import */ var _overlays_js__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! ./overlays.js */ \"./node_modules/@ionic/core/components/overlays.js\");\n/* harmony import */ var _theme_js__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! ./theme.js */ \"./node_modules/@ionic/core/components/theme.js\");\n/* harmony import */ var _animation_js__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(/*! ./animation.js */ \"./node_modules/@ionic/core/components/animation.js\");\n/* harmony import */ var _backdrop_js__WEBPACK_IMPORTED_MODULE_10__ = __webpack_require__(/*! ./backdrop.js */ \"./node_modules/@ionic/core/components/backdrop.js\");\n/* harmony import */ var _icon_js__WEBPACK_IMPORTED_MODULE_11__ = __webpack_require__(/*! ./icon.js */ \"./node_modules/@ionic/core/components/icon.js\");\n/* harmony import */ var _ripple_effect_js__WEBPACK_IMPORTED_MODULE_12__ = __webpack_require__(/*! ./ripple-effect.js */ \"./node_modules/@ionic/core/components/ripple-effect.js\");\n\n\n\n\n/*!\n * (C) Ionic http://ionicframework.com - MIT License\n */\n\n\n\n\n\n\n\n\n\n\n/**\n * iOS Action Sheet Enter Animation\n */\nconst iosEnterAnimation = baseEl => {\n const baseAnimation = (0,_animation_js__WEBPACK_IMPORTED_MODULE_9__.c)();\n const backdropAnimation = (0,_animation_js__WEBPACK_IMPORTED_MODULE_9__.c)();\n const wrapperAnimation = (0,_animation_js__WEBPACK_IMPORTED_MODULE_9__.c)();\n backdropAnimation.addElement(baseEl.querySelector('ion-backdrop')).fromTo('opacity', 0.01, 'var(--backdrop-opacity)').beforeStyles({\n 'pointer-events': 'none'\n }).afterClearStyles(['pointer-events']);\n wrapperAnimation.addElement(baseEl.querySelector('.action-sheet-wrapper')).fromTo('transform', 'translateY(100%)', 'translateY(0%)');\n return baseAnimation.addElement(baseEl).easing('cubic-bezier(.36,.66,.04,1)').duration(400).addAnimation([backdropAnimation, wrapperAnimation]);\n};\n\n/**\n * iOS Action Sheet Leave Animation\n */\nconst iosLeaveAnimation = baseEl => {\n const baseAnimation = (0,_animation_js__WEBPACK_IMPORTED_MODULE_9__.c)();\n const backdropAnimation = (0,_animation_js__WEBPACK_IMPORTED_MODULE_9__.c)();\n const wrapperAnimation = (0,_animation_js__WEBPACK_IMPORTED_MODULE_9__.c)();\n backdropAnimation.addElement(baseEl.querySelector('ion-backdrop')).fromTo('opacity', 'var(--backdrop-opacity)', 0);\n wrapperAnimation.addElement(baseEl.querySelector('.action-sheet-wrapper')).fromTo('transform', 'translateY(0%)', 'translateY(100%)');\n return baseAnimation.addElement(baseEl).easing('cubic-bezier(.36,.66,.04,1)').duration(450).addAnimation([backdropAnimation, wrapperAnimation]);\n};\n\n/**\n * MD Action Sheet Enter Animation\n */\nconst mdEnterAnimation = baseEl => {\n const baseAnimation = (0,_animation_js__WEBPACK_IMPORTED_MODULE_9__.c)();\n const backdropAnimation = (0,_animation_js__WEBPACK_IMPORTED_MODULE_9__.c)();\n const wrapperAnimation = (0,_animation_js__WEBPACK_IMPORTED_MODULE_9__.c)();\n backdropAnimation.addElement(baseEl.querySelector('ion-backdrop')).fromTo('opacity', 0.01, 'var(--backdrop-opacity)').beforeStyles({\n 'pointer-events': 'none'\n }).afterClearStyles(['pointer-events']);\n wrapperAnimation.addElement(baseEl.querySelector('.action-sheet-wrapper')).fromTo('transform', 'translateY(100%)', 'translateY(0%)');\n return baseAnimation.addElement(baseEl).easing('cubic-bezier(.36,.66,.04,1)').duration(400).addAnimation([backdropAnimation, wrapperAnimation]);\n};\n\n/**\n * MD Action Sheet Leave Animation\n */\nconst mdLeaveAnimation = baseEl => {\n const baseAnimation = (0,_animation_js__WEBPACK_IMPORTED_MODULE_9__.c)();\n const backdropAnimation = (0,_animation_js__WEBPACK_IMPORTED_MODULE_9__.c)();\n const wrapperAnimation = (0,_animation_js__WEBPACK_IMPORTED_MODULE_9__.c)();\n backdropAnimation.addElement(baseEl.querySelector('ion-backdrop')).fromTo('opacity', 'var(--backdrop-opacity)', 0);\n wrapperAnimation.addElement(baseEl.querySelector('.action-sheet-wrapper')).fromTo('transform', 'translateY(0%)', 'translateY(100%)');\n return baseAnimation.addElement(baseEl).easing('cubic-bezier(.36,.66,.04,1)').duration(450).addAnimation([backdropAnimation, wrapperAnimation]);\n};\nconst actionSheetIosCss = \".sc-ion-action-sheet-ios-h{--color:initial;--button-color-activated:var(--button-color);--button-color-focused:var(--button-color);--button-color-hover:var(--button-color);--button-color-selected:var(--button-color);--min-width:auto;--width:100%;--max-width:500px;--min-height:auto;--height:100%;--max-height:calc(100% - (var(--ion-safe-area-top) + var(--ion-safe-area-bottom)));-moz-osx-font-smoothing:grayscale;-webkit-font-smoothing:antialiased;left:0;right:0;top:0;bottom:0;display:block;position:fixed;outline:none;font-family:var(--ion-font-family, inherit);-ms-touch-action:none;touch-action:none;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;z-index:1001}.overlay-hidden.sc-ion-action-sheet-ios-h{display:none}.action-sheet-wrapper.sc-ion-action-sheet-ios{left:0;right:0;bottom:0;-webkit-transform:translate3d(0, 100%, 0);transform:translate3d(0, 100%, 0);display:block;position:absolute;width:var(--width);min-width:var(--min-width);max-width:var(--max-width);height:var(--height);min-height:var(--min-height);max-height:var(--max-height);z-index:10;pointer-events:none}.action-sheet-button.sc-ion-action-sheet-ios{display:block;position:relative;width:100%;border:0;outline:none;background:var(--button-background);color:var(--button-color);font-family:inherit;overflow:hidden}.action-sheet-button-inner.sc-ion-action-sheet-ios{display:-ms-flexbox;display:flex;position:relative;-ms-flex-flow:row nowrap;flex-flow:row nowrap;-ms-flex-negative:0;flex-shrink:0;-ms-flex-align:center;align-items:center;-ms-flex-pack:center;justify-content:center;pointer-events:none;width:100%;height:100%;z-index:1}.action-sheet-container.sc-ion-action-sheet-ios{display:-ms-flexbox;display:flex;-ms-flex-flow:column;flex-flow:column;-ms-flex-pack:end;justify-content:flex-end;height:100%;max-height:100%}.action-sheet-group.sc-ion-action-sheet-ios{-ms-flex-negative:2;flex-shrink:2;overscroll-behavior-y:contain;overflow-y:auto;-webkit-overflow-scrolling:touch;pointer-events:all;background:var(--background)}.action-sheet-group.sc-ion-action-sheet-ios::-webkit-scrollbar{display:none}.action-sheet-group-cancel.sc-ion-action-sheet-ios{-ms-flex-negative:0;flex-shrink:0;overflow:hidden}.action-sheet-button.sc-ion-action-sheet-ios::after{left:0;right:0;top:0;bottom:0;position:absolute;content:\\\"\\\";opacity:0}.action-sheet-selected.sc-ion-action-sheet-ios{color:var(--button-color-selected)}.action-sheet-selected.sc-ion-action-sheet-ios::after{background:var(--button-background-selected);opacity:var(--button-background-selected-opacity)}.action-sheet-button.ion-activated.sc-ion-action-sheet-ios{color:var(--button-color-activated)}.action-sheet-button.ion-activated.sc-ion-action-sheet-ios::after{background:var(--button-background-activated);opacity:var(--button-background-activated-opacity)}.action-sheet-button.ion-focused.sc-ion-action-sheet-ios{color:var(--button-color-focused)}.action-sheet-button.ion-focused.sc-ion-action-sheet-ios::after{background:var(--button-background-focused);opacity:var(--button-background-focused-opacity)}@media (any-hover: hover){.action-sheet-button.sc-ion-action-sheet-ios:hover{color:var(--button-color-hover)}.action-sheet-button.sc-ion-action-sheet-ios:hover::after{background:var(--button-background-hover);opacity:var(--button-background-hover-opacity)}}.sc-ion-action-sheet-ios-h{--background:var(--ion-overlay-background-color, var(--ion-color-step-100, #f9f9f9));--backdrop-opacity:var(--ion-backdrop-opacity, 0.4);--button-background:linear-gradient(0deg, rgba(var(--ion-text-color-rgb, 0, 0, 0), 0.08), rgba(var(--ion-text-color-rgb, 0, 0, 0), 0.08) 50%, transparent 50%) bottom/100% 1px no-repeat transparent;--button-background-activated:var(--ion-text-color, #000);--button-background-activated-opacity:.08;--button-background-hover:currentColor;--button-background-hover-opacity:.04;--button-background-focused:currentColor;--button-background-focused-opacity:.12;--button-background-selected:var(--ion-color-step-150, var(--ion-background-color, #fff));--button-background-selected-opacity:1;--button-color:var(--ion-color-primary, #3880ff);--color:var(--ion-color-step-400, #999999);text-align:center}.action-sheet-wrapper.sc-ion-action-sheet-ios{margin-left:auto;margin-right:auto;margin-top:var(--ion-safe-area-top, 0);margin-bottom:var(--ion-safe-area-bottom, 0)}@supports ((-webkit-margin-start: 0) or (margin-inline-start: 0)) or (-webkit-margin-start: 0){.action-sheet-wrapper.sc-ion-action-sheet-ios{margin-left:unset;margin-right:unset;-webkit-margin-start:auto;margin-inline-start:auto;-webkit-margin-end:auto;margin-inline-end:auto}}.action-sheet-container.sc-ion-action-sheet-ios{padding-left:8px;padding-right:8px;padding-top:0;padding-bottom:0}@supports ((-webkit-margin-start: 0) or (margin-inline-start: 0)) or (-webkit-margin-start: 0){.action-sheet-container.sc-ion-action-sheet-ios{padding-left:unset;padding-right:unset;-webkit-padding-start:8px;padding-inline-start:8px;-webkit-padding-end:8px;padding-inline-end:8px}}.action-sheet-group.sc-ion-action-sheet-ios{border-radius:13px;margin-bottom:8px}.action-sheet-group.sc-ion-action-sheet-ios:first-child{margin-top:10px}.action-sheet-group.sc-ion-action-sheet-ios:last-child{margin-bottom:10px}@supports ((-webkit-backdrop-filter: blur(0)) or (backdrop-filter: blur(0))){.action-sheet-translucent.sc-ion-action-sheet-ios-h .action-sheet-group.sc-ion-action-sheet-ios{background-color:transparent;-webkit-backdrop-filter:saturate(280%) blur(20px);backdrop-filter:saturate(280%) blur(20px)}.action-sheet-translucent.sc-ion-action-sheet-ios-h .action-sheet-title.sc-ion-action-sheet-ios,.action-sheet-translucent.sc-ion-action-sheet-ios-h .action-sheet-button.sc-ion-action-sheet-ios{background-color:transparent;background-image:-webkit-gradient(linear, left bottom, left top, from(rgba(var(--ion-background-color-rgb, 255, 255, 255), 0.8)), to(rgba(var(--ion-background-color-rgb, 255, 255, 255), 0.8))), -webkit-gradient(linear, left bottom, left top, from(rgba(var(--ion-background-color-rgb, 255, 255, 255), 0.4)), color-stop(50%, rgba(var(--ion-background-color-rgb, 255, 255, 255), 0.4)), color-stop(50%, rgba(var(--ion-background-color-rgb, 255, 255, 255), 0.8)));background-image:linear-gradient(0deg, rgba(var(--ion-background-color-rgb, 255, 255, 255), 0.8), rgba(var(--ion-background-color-rgb, 255, 255, 255), 0.8) 100%), linear-gradient(0deg, rgba(var(--ion-background-color-rgb, 255, 255, 255), 0.4), rgba(var(--ion-background-color-rgb, 255, 255, 255), 0.4) 50%, rgba(var(--ion-background-color-rgb, 255, 255, 255), 0.8) 50%);background-repeat:no-repeat;background-position:top, bottom;background-size:100% calc(100% - 1px), 100% 1px;-webkit-backdrop-filter:saturate(120%);backdrop-filter:saturate(120%)}.action-sheet-translucent.sc-ion-action-sheet-ios-h .action-sheet-button.ion-activated.sc-ion-action-sheet-ios{background-color:rgba(var(--ion-background-color-rgb, 255, 255, 255), 0.7);background-image:none}.action-sheet-translucent.sc-ion-action-sheet-ios-h .action-sheet-cancel.sc-ion-action-sheet-ios{background:var(--button-background-selected)}}.action-sheet-title.sc-ion-action-sheet-ios{background:-webkit-gradient(linear, left bottom, left top, from(rgba(var(--ion-text-color-rgb, 0, 0, 0), 0.08)), color-stop(50%, rgba(var(--ion-text-color-rgb, 0, 0, 0), 0.08)), color-stop(50%, transparent)) bottom/100% 1px no-repeat transparent;background:linear-gradient(0deg, rgba(var(--ion-text-color-rgb, 0, 0, 0), 0.08), rgba(var(--ion-text-color-rgb, 0, 0, 0), 0.08) 50%, transparent 50%) bottom/100% 1px no-repeat transparent}.action-sheet-title.sc-ion-action-sheet-ios{padding-left:10px;padding-right:10px;padding-top:14px;padding-bottom:13px;color:var(--color, var(--ion-color-step-400, #999999));font-size:13px;font-weight:400;text-align:center}@supports ((-webkit-margin-start: 0) or (margin-inline-start: 0)) or (-webkit-margin-start: 0){.action-sheet-title.sc-ion-action-sheet-ios{padding-left:unset;padding-right:unset;-webkit-padding-start:10px;padding-inline-start:10px;-webkit-padding-end:10px;padding-inline-end:10px}}.action-sheet-title.action-sheet-has-sub-title.sc-ion-action-sheet-ios{font-weight:600}.action-sheet-sub-title.sc-ion-action-sheet-ios{padding-left:0;padding-right:0;padding-top:6px;padding-bottom:0;font-size:13px;font-weight:400}.action-sheet-button.sc-ion-action-sheet-ios{padding-left:18px;padding-right:18px;padding-top:18px;padding-bottom:18px;height:56px;font-size:20px;contain:strict}@supports ((-webkit-margin-start: 0) or (margin-inline-start: 0)) or (-webkit-margin-start: 0){.action-sheet-button.sc-ion-action-sheet-ios{padding-left:unset;padding-right:unset;-webkit-padding-start:18px;padding-inline-start:18px;-webkit-padding-end:18px;padding-inline-end:18px}}.action-sheet-button.sc-ion-action-sheet-ios .action-sheet-icon.sc-ion-action-sheet-ios{margin-right:0.3em;font-size:28px;pointer-events:none}@supports ((-webkit-margin-start: 0) or (margin-inline-start: 0)) or (-webkit-margin-start: 0){.action-sheet-button.sc-ion-action-sheet-ios .action-sheet-icon.sc-ion-action-sheet-ios{margin-right:unset;-webkit-margin-end:0.3em;margin-inline-end:0.3em}}.action-sheet-button.sc-ion-action-sheet-ios:last-child{background-image:none}.action-sheet-selected.sc-ion-action-sheet-ios{font-weight:bold}.action-sheet-cancel.sc-ion-action-sheet-ios{font-weight:600}.action-sheet-cancel.sc-ion-action-sheet-ios::after{background:var(--button-background-selected);opacity:var(--button-background-selected-opacity)}.action-sheet-destructive.sc-ion-action-sheet-ios,.action-sheet-destructive.ion-activated.sc-ion-action-sheet-ios,.action-sheet-destructive.ion-focused.sc-ion-action-sheet-ios{color:var(--ion-color-danger, #eb445a)}@media (any-hover: hover){.action-sheet-destructive.sc-ion-action-sheet-ios:hover{color:var(--ion-color-danger, #eb445a)}}\";\nconst actionSheetMdCss = \".sc-ion-action-sheet-md-h{--color:initial;--button-color-activated:var(--button-color);--button-color-focused:var(--button-color);--button-color-hover:var(--button-color);--button-color-selected:var(--button-color);--min-width:auto;--width:100%;--max-width:500px;--min-height:auto;--height:100%;--max-height:calc(100% - (var(--ion-safe-area-top) + var(--ion-safe-area-bottom)));-moz-osx-font-smoothing:grayscale;-webkit-font-smoothing:antialiased;left:0;right:0;top:0;bottom:0;display:block;position:fixed;outline:none;font-family:var(--ion-font-family, inherit);-ms-touch-action:none;touch-action:none;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;z-index:1001}.overlay-hidden.sc-ion-action-sheet-md-h{display:none}.action-sheet-wrapper.sc-ion-action-sheet-md{left:0;right:0;bottom:0;-webkit-transform:translate3d(0, 100%, 0);transform:translate3d(0, 100%, 0);display:block;position:absolute;width:var(--width);min-width:var(--min-width);max-width:var(--max-width);height:var(--height);min-height:var(--min-height);max-height:var(--max-height);z-index:10;pointer-events:none}.action-sheet-button.sc-ion-action-sheet-md{display:block;position:relative;width:100%;border:0;outline:none;background:var(--button-background);color:var(--button-color);font-family:inherit;overflow:hidden}.action-sheet-button-inner.sc-ion-action-sheet-md{display:-ms-flexbox;display:flex;position:relative;-ms-flex-flow:row nowrap;flex-flow:row nowrap;-ms-flex-negative:0;flex-shrink:0;-ms-flex-align:center;align-items:center;-ms-flex-pack:center;justify-content:center;pointer-events:none;width:100%;height:100%;z-index:1}.action-sheet-container.sc-ion-action-sheet-md{display:-ms-flexbox;display:flex;-ms-flex-flow:column;flex-flow:column;-ms-flex-pack:end;justify-content:flex-end;height:100%;max-height:100%}.action-sheet-group.sc-ion-action-sheet-md{-ms-flex-negative:2;flex-shrink:2;overscroll-behavior-y:contain;overflow-y:auto;-webkit-overflow-scrolling:touch;pointer-events:all;background:var(--background)}.action-sheet-group.sc-ion-action-sheet-md::-webkit-scrollbar{display:none}.action-sheet-group-cancel.sc-ion-action-sheet-md{-ms-flex-negative:0;flex-shrink:0;overflow:hidden}.action-sheet-button.sc-ion-action-sheet-md::after{left:0;right:0;top:0;bottom:0;position:absolute;content:\\\"\\\";opacity:0}.action-sheet-selected.sc-ion-action-sheet-md{color:var(--button-color-selected)}.action-sheet-selected.sc-ion-action-sheet-md::after{background:var(--button-background-selected);opacity:var(--button-background-selected-opacity)}.action-sheet-button.ion-activated.sc-ion-action-sheet-md{color:var(--button-color-activated)}.action-sheet-button.ion-activated.sc-ion-action-sheet-md::after{background:var(--button-background-activated);opacity:var(--button-background-activated-opacity)}.action-sheet-button.ion-focused.sc-ion-action-sheet-md{color:var(--button-color-focused)}.action-sheet-button.ion-focused.sc-ion-action-sheet-md::after{background:var(--button-background-focused);opacity:var(--button-background-focused-opacity)}@media (any-hover: hover){.action-sheet-button.sc-ion-action-sheet-md:hover{color:var(--button-color-hover)}.action-sheet-button.sc-ion-action-sheet-md:hover::after{background:var(--button-background-hover);opacity:var(--button-background-hover-opacity)}}.sc-ion-action-sheet-md-h{--background:var(--ion-overlay-background-color, var(--ion-background-color, #fff));--backdrop-opacity:var(--ion-backdrop-opacity, 0.32);--button-background:transparent;--button-background-selected:currentColor;--button-background-selected-opacity:0;--button-background-activated:transparent;--button-background-activated-opacity:0;--button-background-hover:currentColor;--button-background-hover-opacity:.04;--button-background-focused:currentColor;--button-background-focused-opacity:.12;--button-color:var(--ion-color-step-850, #262626);--color:rgba(var(--ion-text-color-rgb, 0, 0, 0), 0.54)}.action-sheet-wrapper.sc-ion-action-sheet-md{margin-left:auto;margin-right:auto;margin-top:var(--ion-safe-area-top, 0);margin-bottom:0}@supports ((-webkit-margin-start: 0) or (margin-inline-start: 0)) or (-webkit-margin-start: 0){.action-sheet-wrapper.sc-ion-action-sheet-md{margin-left:unset;margin-right:unset;-webkit-margin-start:auto;margin-inline-start:auto;-webkit-margin-end:auto;margin-inline-end:auto}}.action-sheet-title.sc-ion-action-sheet-md{padding-left:16px;padding-right:16px;padding-top:20px;padding-bottom:17px;min-height:60px;color:var(--color, rgba(var(--ion-text-color-rgb, 0, 0, 0), 0.54));font-size:16px;text-align:start}@supports ((-webkit-margin-start: 0) or (margin-inline-start: 0)) or (-webkit-margin-start: 0){.action-sheet-title.sc-ion-action-sheet-md{padding-left:unset;padding-right:unset;-webkit-padding-start:16px;padding-inline-start:16px;-webkit-padding-end:16px;padding-inline-end:16px}}.action-sheet-sub-title.sc-ion-action-sheet-md{padding-left:0;padding-right:0;padding-top:16px;padding-bottom:0;font-size:14px}.action-sheet-group.sc-ion-action-sheet-md:first-child{padding-top:0}.action-sheet-group.sc-ion-action-sheet-md:last-child{padding-bottom:var(--ion-safe-area-bottom)}.action-sheet-button.sc-ion-action-sheet-md{padding-left:16px;padding-right:16px;padding-top:0;padding-bottom:0;position:relative;height:52px;font-size:16px;text-align:start;contain:strict;overflow:hidden}@supports ((-webkit-margin-start: 0) or (margin-inline-start: 0)) or (-webkit-margin-start: 0){.action-sheet-button.sc-ion-action-sheet-md{padding-left:unset;padding-right:unset;-webkit-padding-start:16px;padding-inline-start:16px;-webkit-padding-end:16px;padding-inline-end:16px}}.action-sheet-icon.sc-ion-action-sheet-md{margin-left:0;margin-right:32px;margin-top:0;margin-bottom:0;color:var(--color);font-size:24px}@supports ((-webkit-margin-start: 0) or (margin-inline-start: 0)) or (-webkit-margin-start: 0){.action-sheet-icon.sc-ion-action-sheet-md{margin-left:unset;margin-right:unset;-webkit-margin-start:0;margin-inline-start:0;-webkit-margin-end:32px;margin-inline-end:32px}}.action-sheet-button-inner.sc-ion-action-sheet-md{-ms-flex-pack:start;justify-content:flex-start}.action-sheet-selected.sc-ion-action-sheet-md{font-weight:bold}\";\nconst ActionSheet = /*@__PURE__*/(0,_stencil_core_internal_client__WEBPACK_IMPORTED_MODULE_4__.proxyCustomElement)(class extends _stencil_core_internal_client__WEBPACK_IMPORTED_MODULE_4__.HTMLElement {\n constructor() {\n super();\n this.__registerHost();\n this.didPresent = (0,_stencil_core_internal_client__WEBPACK_IMPORTED_MODULE_4__.createEvent)(this, \"ionActionSheetDidPresent\", 7);\n this.willPresent = (0,_stencil_core_internal_client__WEBPACK_IMPORTED_MODULE_4__.createEvent)(this, \"ionActionSheetWillPresent\", 7);\n this.willDismiss = (0,_stencil_core_internal_client__WEBPACK_IMPORTED_MODULE_4__.createEvent)(this, \"ionActionSheetWillDismiss\", 7);\n this.didDismiss = (0,_stencil_core_internal_client__WEBPACK_IMPORTED_MODULE_4__.createEvent)(this, \"ionActionSheetDidDismiss\", 7);\n this.presented = false;\n /**\n * If `true`, the keyboard will be automatically dismissed when the overlay is presented.\n */\n this.keyboardClose = true;\n /**\n * An array of buttons for the action sheet.\n */\n this.buttons = [];\n /**\n * If `true`, the action sheet will be dismissed when the backdrop is clicked.\n */\n this.backdropDismiss = true;\n /**\n * If `true`, the action sheet will be translucent.\n * Only applies when the mode is `\"ios\"` and the device supports\n * [`backdrop-filter`](https://developer.mozilla.org/en-US/docs/Web/CSS/backdrop-filter#Browser_compatibility).\n */\n this.translucent = false;\n /**\n * If `true`, the action sheet will animate.\n */\n this.animated = true;\n this.onBackdropTap = () => {\n this.dismiss(undefined, _overlays_js__WEBPACK_IMPORTED_MODULE_7__.B);\n };\n this.dispatchCancelHandler = ev => {\n const role = ev.detail.role;\n if ((0,_overlays_js__WEBPACK_IMPORTED_MODULE_7__.j)(role)) {\n const cancelButton = this.getButtons().find(b => b.role === 'cancel');\n this.callButtonHandler(cancelButton);\n }\n };\n }\n /**\n * Present the action sheet overlay after it has been created.\n */\n present() {\n return (0,_overlays_js__WEBPACK_IMPORTED_MODULE_7__.e)(this, 'actionSheetEnter', iosEnterAnimation, mdEnterAnimation);\n }\n connectedCallback() {\n (0,_overlays_js__WEBPACK_IMPORTED_MODULE_7__.d)(this.el);\n }\n /**\n * Dismiss the action sheet overlay after it has been presented.\n *\n * @param data Any data to emit in the dismiss events.\n * @param role The role of the element that is dismissing the action sheet.\n * This can be useful in a button handler for determining which button was\n * clicked to dismiss the action sheet.\n * Some examples include: ``\"cancel\"`, `\"destructive\"`, \"selected\"`, and `\"backdrop\"`.\n */\n dismiss(data, role) {\n return (0,_overlays_js__WEBPACK_IMPORTED_MODULE_7__.f)(this, data, role, 'actionSheetLeave', iosLeaveAnimation, mdLeaveAnimation);\n }\n /**\n * Returns a promise that resolves when the action sheet did dismiss.\n */\n onDidDismiss() {\n return (0,_overlays_js__WEBPACK_IMPORTED_MODULE_7__.g)(this.el, 'ionActionSheetDidDismiss');\n }\n /**\n * Returns a promise that resolves when the action sheet will dismiss.\n *\n */\n onWillDismiss() {\n return (0,_overlays_js__WEBPACK_IMPORTED_MODULE_7__.g)(this.el, 'ionActionSheetWillDismiss');\n }\n async buttonClick(button) {\n const role = button.role;\n if ((0,_overlays_js__WEBPACK_IMPORTED_MODULE_7__.j)(role)) {\n return this.dismiss(button.data, role);\n }\n const shouldDismiss = await this.callButtonHandler(button);\n if (shouldDismiss) {\n return this.dismiss(button.data, button.role);\n }\n return Promise.resolve();\n }\n async callButtonHandler(button) {\n if (button) {\n // a handler has been provided, execute it\n // pass the handler the values from the inputs\n const rtn = await (0,_overlays_js__WEBPACK_IMPORTED_MODULE_7__.s)(button.handler);\n if (rtn === false) {\n // if the return value of the handler is false then do not dismiss\n return false;\n }\n }\n return true;\n }\n getButtons() {\n return this.buttons.map(b => {\n return typeof b === 'string' ? {\n text: b\n } : b;\n });\n }\n disconnectedCallback() {\n if (this.gesture) {\n this.gesture.destroy();\n this.gesture = undefined;\n }\n }\n componentDidLoad() {\n /**\n * Do not create gesture if:\n * 1. A gesture already exists\n * 2. App is running in MD mode\n * 3. A wrapper ref does not exist\n */\n const {\n groupEl,\n wrapperEl\n } = this;\n if (this.gesture || (0,_ionic_global_js__WEBPACK_IMPORTED_MODULE_5__.b)(this) === 'md' || !wrapperEl || !groupEl) {\n return;\n }\n (0,_stencil_core_internal_client__WEBPACK_IMPORTED_MODULE_4__.readTask)(() => {\n const isScrollable = groupEl.scrollHeight > groupEl.clientHeight;\n if (!isScrollable) {\n this.gesture = (0,_button_active_js__WEBPACK_IMPORTED_MODULE_6__.c)(wrapperEl, refEl => refEl.classList.contains('action-sheet-button'));\n this.gesture.enable(true);\n }\n });\n }\n render() {\n const {\n header,\n htmlAttributes,\n overlayIndex\n } = this;\n const mode = (0,_ionic_global_js__WEBPACK_IMPORTED_MODULE_5__.b)(this);\n const allButtons = this.getButtons();\n const cancelButton = allButtons.find(b => b.role === 'cancel');\n const buttons = allButtons.filter(b => b.role !== 'cancel');\n const headerID = `action-sheet-${overlayIndex}-header`;\n return (0,_stencil_core_internal_client__WEBPACK_IMPORTED_MODULE_4__.h)(_stencil_core_internal_client__WEBPACK_IMPORTED_MODULE_4__.Host, Object.assign({\n role: \"dialog\",\n \"aria-modal\": \"true\",\n \"aria-labelledby\": header !== undefined ? headerID : null,\n tabindex: \"-1\"\n }, htmlAttributes, {\n style: {\n zIndex: `${20000 + this.overlayIndex}`\n },\n class: Object.assign(Object.assign({\n [mode]: true\n }, (0,_theme_js__WEBPACK_IMPORTED_MODULE_8__.g)(this.cssClass)), {\n 'overlay-hidden': true,\n 'action-sheet-translucent': this.translucent\n }),\n onIonActionSheetWillDismiss: this.dispatchCancelHandler,\n onIonBackdropTap: this.onBackdropTap\n }), (0,_stencil_core_internal_client__WEBPACK_IMPORTED_MODULE_4__.h)(\"ion-backdrop\", {\n tappable: this.backdropDismiss\n }), (0,_stencil_core_internal_client__WEBPACK_IMPORTED_MODULE_4__.h)(\"div\", {\n tabindex: \"0\"\n }), (0,_stencil_core_internal_client__WEBPACK_IMPORTED_MODULE_4__.h)(\"div\", {\n class: \"action-sheet-wrapper ion-overlay-wrapper\",\n ref: el => this.wrapperEl = el\n }, (0,_stencil_core_internal_client__WEBPACK_IMPORTED_MODULE_4__.h)(\"div\", {\n class: \"action-sheet-container\"\n }, (0,_stencil_core_internal_client__WEBPACK_IMPORTED_MODULE_4__.h)(\"div\", {\n class: \"action-sheet-group\",\n ref: el => this.groupEl = el\n }, header !== undefined && (0,_stencil_core_internal_client__WEBPACK_IMPORTED_MODULE_4__.h)(\"div\", {\n id: headerID,\n class: {\n 'action-sheet-title': true,\n 'action-sheet-has-sub-title': this.subHeader !== undefined\n }\n }, header, this.subHeader && (0,_stencil_core_internal_client__WEBPACK_IMPORTED_MODULE_4__.h)(\"div\", {\n class: \"action-sheet-sub-title\"\n }, this.subHeader)), buttons.map(b => (0,_stencil_core_internal_client__WEBPACK_IMPORTED_MODULE_4__.h)(\"button\", {\n type: \"button\",\n id: b.id,\n class: buttonClass(b),\n onClick: () => this.buttonClick(b)\n }, (0,_stencil_core_internal_client__WEBPACK_IMPORTED_MODULE_4__.h)(\"span\", {\n class: \"action-sheet-button-inner\"\n }, b.icon && (0,_stencil_core_internal_client__WEBPACK_IMPORTED_MODULE_4__.h)(\"ion-icon\", {\n icon: b.icon,\n lazy: false,\n class: \"action-sheet-icon\"\n }), b.text), mode === 'md' && (0,_stencil_core_internal_client__WEBPACK_IMPORTED_MODULE_4__.h)(\"ion-ripple-effect\", null)))), cancelButton && (0,_stencil_core_internal_client__WEBPACK_IMPORTED_MODULE_4__.h)(\"div\", {\n class: \"action-sheet-group action-sheet-group-cancel\"\n }, (0,_stencil_core_internal_client__WEBPACK_IMPORTED_MODULE_4__.h)(\"button\", {\n type: \"button\",\n class: buttonClass(cancelButton),\n onClick: () => this.buttonClick(cancelButton)\n }, (0,_stencil_core_internal_client__WEBPACK_IMPORTED_MODULE_4__.h)(\"span\", {\n class: \"action-sheet-button-inner\"\n }, cancelButton.icon && (0,_stencil_core_internal_client__WEBPACK_IMPORTED_MODULE_4__.h)(\"ion-icon\", {\n icon: cancelButton.icon,\n lazy: false,\n class: \"action-sheet-icon\"\n }), cancelButton.text), mode === 'md' && (0,_stencil_core_internal_client__WEBPACK_IMPORTED_MODULE_4__.h)(\"ion-ripple-effect\", null))))), (0,_stencil_core_internal_client__WEBPACK_IMPORTED_MODULE_4__.h)(\"div\", {\n tabindex: \"0\"\n }));\n }\n get el() {\n return this;\n }\n static get style() {\n return {\n ios: actionSheetIosCss,\n md: actionSheetMdCss\n };\n }\n}, [34, \"ion-action-sheet\", {\n \"overlayIndex\": [2, \"overlay-index\"],\n \"keyboardClose\": [4, \"keyboard-close\"],\n \"enterAnimation\": [16],\n \"leaveAnimation\": [16],\n \"buttons\": [16],\n \"cssClass\": [1, \"css-class\"],\n \"backdropDismiss\": [4, \"backdrop-dismiss\"],\n \"header\": [1],\n \"subHeader\": [1, \"sub-header\"],\n \"translucent\": [4],\n \"animated\": [4],\n \"htmlAttributes\": [16],\n \"present\": [64],\n \"dismiss\": [64],\n \"onDidDismiss\": [64],\n \"onWillDismiss\": [64]\n}]);\nconst buttonClass = button => {\n return Object.assign({\n 'action-sheet-button': true,\n 'ion-activatable': true,\n 'ion-focusable': true,\n [`action-sheet-${button.role}`]: button.role !== undefined\n }, (0,_theme_js__WEBPACK_IMPORTED_MODULE_8__.g)(button.cssClass));\n};\nfunction defineCustomElement() {\n if (typeof customElements === \"undefined\") {\n return;\n }\n const components = [\"ion-action-sheet\", \"ion-backdrop\", \"ion-icon\", \"ion-ripple-effect\"];\n components.forEach(tagName => {\n switch (tagName) {\n case \"ion-action-sheet\":\n if (!customElements.get(tagName)) {\n customElements.define(tagName, ActionSheet);\n }\n break;\n case \"ion-backdrop\":\n if (!customElements.get(tagName)) {\n (0,_backdrop_js__WEBPACK_IMPORTED_MODULE_10__.d)();\n }\n break;\n case \"ion-icon\":\n if (!customElements.get(tagName)) {\n (0,_icon_js__WEBPACK_IMPORTED_MODULE_11__.d)();\n }\n break;\n case \"ion-ripple-effect\":\n if (!customElements.get(tagName)) {\n (0,_ripple_effect_js__WEBPACK_IMPORTED_MODULE_12__.d)();\n }\n break;\n }\n });\n}\n\n\n//# sourceURL=webpack://jandl/./node_modules/@ionic/core/components/action-sheet.js?\n}"); /***/ }), @@ -114,7 +114,7 @@ eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpac /***/ (function(__unused_webpack_module, __webpack_exports__, __webpack_require__) { "use strict"; -eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"A\": function() { return /* binding */ Alert; },\n/* harmony export */ \"d\": function() { return /* binding */ defineCustomElement; }\n/* harmony export */ });\n/* harmony import */ var _stencil_core_internal_client__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! @stencil/core/internal/client */ \"./node_modules/@stencil/core/internal/client/index.js\");\n/* harmony import */ var _ionic_global_js__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./ionic-global.js */ \"./node_modules/@ionic/core/components/ionic-global.js\");\n/* harmony import */ var _button_active_js__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ./button-active.js */ \"./node_modules/@ionic/core/components/button-active.js\");\n/* harmony import */ var _overlays_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./overlays.js */ \"./node_modules/@ionic/core/components/overlays.js\");\n/* harmony import */ var _index3_js__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ./index3.js */ \"./node_modules/@ionic/core/components/index3.js\");\n/* harmony import */ var _theme_js__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ./theme.js */ \"./node_modules/@ionic/core/components/theme.js\");\n/* harmony import */ var _animation_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./animation.js */ \"./node_modules/@ionic/core/components/animation.js\");\n/* harmony import */ var _backdrop_js__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! ./backdrop.js */ \"./node_modules/@ionic/core/components/backdrop.js\");\n/* harmony import */ var _ripple_effect_js__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! ./ripple-effect.js */ \"./node_modules/@ionic/core/components/ripple-effect.js\");\n/* provided dependency */ var console = __webpack_require__(/*! ./node_modules/console-browserify/index.js */ \"./node_modules/console-browserify/index.js\");\n/*!\n * (C) Ionic http://ionicframework.com - MIT License\n */\n\n\n\n\n\n\n\n\n\n\n/**\n * iOS Alert Enter Animation\n */\nconst iosEnterAnimation = baseEl => {\n const baseAnimation = (0,_animation_js__WEBPACK_IMPORTED_MODULE_0__.c)();\n const backdropAnimation = (0,_animation_js__WEBPACK_IMPORTED_MODULE_0__.c)();\n const wrapperAnimation = (0,_animation_js__WEBPACK_IMPORTED_MODULE_0__.c)();\n backdropAnimation.addElement(baseEl.querySelector('ion-backdrop')).fromTo('opacity', 0.01, 'var(--backdrop-opacity)').beforeStyles({\n 'pointer-events': 'none'\n }).afterClearStyles(['pointer-events']);\n wrapperAnimation.addElement(baseEl.querySelector('.alert-wrapper')).keyframes([{\n offset: 0,\n opacity: '0.01',\n transform: 'scale(1.1)'\n }, {\n offset: 1,\n opacity: '1',\n transform: 'scale(1)'\n }]);\n return baseAnimation.addElement(baseEl).easing('ease-in-out').duration(200).addAnimation([backdropAnimation, wrapperAnimation]);\n};\n\n/**\n * iOS Alert Leave Animation\n */\nconst iosLeaveAnimation = baseEl => {\n const baseAnimation = (0,_animation_js__WEBPACK_IMPORTED_MODULE_0__.c)();\n const backdropAnimation = (0,_animation_js__WEBPACK_IMPORTED_MODULE_0__.c)();\n const wrapperAnimation = (0,_animation_js__WEBPACK_IMPORTED_MODULE_0__.c)();\n backdropAnimation.addElement(baseEl.querySelector('ion-backdrop')).fromTo('opacity', 'var(--backdrop-opacity)', 0);\n wrapperAnimation.addElement(baseEl.querySelector('.alert-wrapper')).keyframes([{\n offset: 0,\n opacity: 0.99,\n transform: 'scale(1)'\n }, {\n offset: 1,\n opacity: 0,\n transform: 'scale(0.9)'\n }]);\n return baseAnimation.addElement(baseEl).easing('ease-in-out').duration(200).addAnimation([backdropAnimation, wrapperAnimation]);\n};\n\n/**\n * Md Alert Enter Animation\n */\nconst mdEnterAnimation = baseEl => {\n const baseAnimation = (0,_animation_js__WEBPACK_IMPORTED_MODULE_0__.c)();\n const backdropAnimation = (0,_animation_js__WEBPACK_IMPORTED_MODULE_0__.c)();\n const wrapperAnimation = (0,_animation_js__WEBPACK_IMPORTED_MODULE_0__.c)();\n backdropAnimation.addElement(baseEl.querySelector('ion-backdrop')).fromTo('opacity', 0.01, 'var(--backdrop-opacity)').beforeStyles({\n 'pointer-events': 'none'\n }).afterClearStyles(['pointer-events']);\n wrapperAnimation.addElement(baseEl.querySelector('.alert-wrapper')).keyframes([{\n offset: 0,\n opacity: '0.01',\n transform: 'scale(0.9)'\n }, {\n offset: 1,\n opacity: '1',\n transform: 'scale(1)'\n }]);\n return baseAnimation.addElement(baseEl).easing('ease-in-out').duration(150).addAnimation([backdropAnimation, wrapperAnimation]);\n};\n\n/**\n * Md Alert Leave Animation\n */\nconst mdLeaveAnimation = baseEl => {\n const baseAnimation = (0,_animation_js__WEBPACK_IMPORTED_MODULE_0__.c)();\n const backdropAnimation = (0,_animation_js__WEBPACK_IMPORTED_MODULE_0__.c)();\n const wrapperAnimation = (0,_animation_js__WEBPACK_IMPORTED_MODULE_0__.c)();\n backdropAnimation.addElement(baseEl.querySelector('ion-backdrop')).fromTo('opacity', 'var(--backdrop-opacity)', 0);\n wrapperAnimation.addElement(baseEl.querySelector('.alert-wrapper')).fromTo('opacity', 0.99, 0);\n return baseAnimation.addElement(baseEl).easing('ease-in-out').duration(150).addAnimation([backdropAnimation, wrapperAnimation]);\n};\nconst alertIosCss = \".sc-ion-alert-ios-h{--min-width:250px;--width:auto;--min-height:auto;--height:auto;--max-height:90%;-moz-osx-font-smoothing:grayscale;-webkit-font-smoothing:antialiased;left:0;right:0;top:0;bottom:0;display:-ms-flexbox;display:flex;position:absolute;-ms-flex-align:center;align-items:center;-ms-flex-pack:center;justify-content:center;outline:none;font-family:var(--ion-font-family, inherit);contain:strict;-ms-touch-action:none;touch-action:none;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;z-index:1001}.overlay-hidden.sc-ion-alert-ios-h{display:none}.alert-top.sc-ion-alert-ios-h{padding-top:50px;-ms-flex-align:start;align-items:flex-start}.alert-wrapper.sc-ion-alert-ios{display:-ms-flexbox;display:flex;-ms-flex-direction:column;flex-direction:column;width:var(--width);min-width:var(--min-width);max-width:var(--max-width);height:var(--height);min-height:var(--min-height);max-height:var(--max-height);background:var(--background);contain:content;opacity:0;z-index:10}.alert-title.sc-ion-alert-ios{margin-left:0;margin-right:0;margin-top:0;margin-bottom:0;padding-left:0;padding-right:0;padding-top:0;padding-bottom:0}.alert-sub-title.sc-ion-alert-ios{margin-left:0;margin-right:0;margin-top:5px;margin-bottom:0;padding-left:0;padding-right:0;padding-top:0;padding-bottom:0;font-weight:normal}.alert-message.sc-ion-alert-ios{-webkit-box-sizing:border-box;box-sizing:border-box;-webkit-overflow-scrolling:touch;overflow-y:auto;overscroll-behavior-y:contain}.alert-checkbox-group.sc-ion-alert-ios::-webkit-scrollbar,.alert-radio-group.sc-ion-alert-ios::-webkit-scrollbar,.alert-message.sc-ion-alert-ios::-webkit-scrollbar{display:none}.alert-input.sc-ion-alert-ios{padding-left:0;padding-right:0;padding-top:10px;padding-bottom:10px;width:100%;border:0;background:inherit;font:inherit;-webkit-box-sizing:border-box;box-sizing:border-box}.alert-button-group.sc-ion-alert-ios{display:-ms-flexbox;display:flex;-ms-flex-direction:row;flex-direction:row;width:100%}.alert-button-group-vertical.sc-ion-alert-ios{-ms-flex-direction:column;flex-direction:column;-ms-flex-wrap:nowrap;flex-wrap:nowrap}.alert-button.sc-ion-alert-ios{margin-left:0;margin-right:0;margin-top:0;margin-bottom:0;display:block;border:0;font-size:14px;line-height:20px;z-index:0}.alert-button.ion-focused.sc-ion-alert-ios,.alert-tappable.ion-focused.sc-ion-alert-ios{background:var(--ion-color-step-100, #e6e6e6)}.alert-button-inner.sc-ion-alert-ios{display:-ms-flexbox;display:flex;-ms-flex-flow:row nowrap;flex-flow:row nowrap;-ms-flex-negative:0;flex-shrink:0;-ms-flex-align:center;align-items:center;-ms-flex-pack:center;justify-content:center;width:100%;height:100%}.alert-input-disabled.sc-ion-alert-ios,.alert-checkbox-button-disabled.sc-ion-alert-ios .alert-button-inner.sc-ion-alert-ios,.alert-radio-button-disabled.sc-ion-alert-ios .alert-button-inner.sc-ion-alert-ios{cursor:default;opacity:0.5;pointer-events:none}.alert-tappable.sc-ion-alert-ios{margin-left:0;margin-right:0;margin-top:0;margin-bottom:0;padding-left:0;padding-right:0;padding-top:0;padding-bottom:0;display:-ms-flexbox;display:flex;width:100%;border:0;background:transparent;font-size:inherit;line-height:initial;text-align:start;-webkit-appearance:none;-moz-appearance:none;appearance:none;contain:strict}.alert-button.sc-ion-alert-ios,.alert-checkbox.sc-ion-alert-ios,.alert-input.sc-ion-alert-ios,.alert-radio.sc-ion-alert-ios{outline:none}.alert-radio-icon.sc-ion-alert-ios,.alert-checkbox-icon.sc-ion-alert-ios,.alert-checkbox-inner.sc-ion-alert-ios{-webkit-box-sizing:border-box;box-sizing:border-box}textarea.alert-input.sc-ion-alert-ios{min-height:37px;resize:none}.sc-ion-alert-ios-h{--background:var(--ion-overlay-background-color, var(--ion-color-step-100, #f9f9f9));--max-width:270px;--backdrop-opacity:var(--ion-backdrop-opacity, 0.3);font-size:14px}.alert-wrapper.sc-ion-alert-ios{border-radius:13px;-webkit-box-shadow:none;box-shadow:none;overflow:hidden}.alert-button.sc-ion-alert-ios .alert-button-inner.sc-ion-alert-ios{pointer-events:none}@supports ((-webkit-backdrop-filter: blur(0)) or (backdrop-filter: blur(0))){.alert-translucent.sc-ion-alert-ios-h .alert-wrapper.sc-ion-alert-ios{background:rgba(var(--ion-background-color-rgb, 255, 255, 255), 0.9);-webkit-backdrop-filter:saturate(180%) blur(20px);backdrop-filter:saturate(180%) blur(20px)}}.alert-head.sc-ion-alert-ios{padding-left:16px;padding-right:16px;padding-top:12px;padding-bottom:7px;text-align:center}@supports ((-webkit-margin-start: 0) or (margin-inline-start: 0)) or (-webkit-margin-start: 0){.alert-head.sc-ion-alert-ios{padding-left:unset;padding-right:unset;-webkit-padding-start:16px;padding-inline-start:16px;-webkit-padding-end:16px;padding-inline-end:16px}}.alert-title.sc-ion-alert-ios{margin-top:8px;color:var(--ion-text-color, #000);font-size:17px;font-weight:600}.alert-sub-title.sc-ion-alert-ios{color:var(--ion-color-step-600, #666666);font-size:14px}.alert-message.sc-ion-alert-ios,.alert-input-group.sc-ion-alert-ios{padding-left:16px;padding-right:16px;padding-top:0;padding-bottom:21px;color:var(--ion-text-color, #000);font-size:13px;text-align:center}@supports ((-webkit-margin-start: 0) or (margin-inline-start: 0)) or (-webkit-margin-start: 0){.alert-message.sc-ion-alert-ios,.alert-input-group.sc-ion-alert-ios{padding-left:unset;padding-right:unset;-webkit-padding-start:16px;padding-inline-start:16px;-webkit-padding-end:16px;padding-inline-end:16px}}.alert-message.sc-ion-alert-ios{max-height:240px}.alert-message.sc-ion-alert-ios:empty{padding-left:0;padding-right:0;padding-top:0;padding-bottom:12px}.alert-input.sc-ion-alert-ios{border-radius:4px;margin-top:10px;padding-left:6px;padding-right:6px;padding-top:6px;padding-bottom:6px;border:0.55px solid var(--ion-color-step-250, #bfbfbf);background-color:var(--ion-background-color, #fff);-webkit-appearance:none;-moz-appearance:none;appearance:none}@supports ((-webkit-margin-start: 0) or (margin-inline-start: 0)) or (-webkit-margin-start: 0){.alert-input.sc-ion-alert-ios{padding-left:unset;padding-right:unset;-webkit-padding-start:6px;padding-inline-start:6px;-webkit-padding-end:6px;padding-inline-end:6px}}.alert-input.sc-ion-alert-ios::-webkit-input-placeholder{color:var(--ion-placeholder-color, var(--ion-color-step-400, #999999));font-family:inherit;font-weight:inherit}.alert-input.sc-ion-alert-ios::-moz-placeholder{color:var(--ion-placeholder-color, var(--ion-color-step-400, #999999));font-family:inherit;font-weight:inherit}.alert-input.sc-ion-alert-ios:-ms-input-placeholder{color:var(--ion-placeholder-color, var(--ion-color-step-400, #999999));font-family:inherit;font-weight:inherit}.alert-input.sc-ion-alert-ios::-ms-input-placeholder{color:var(--ion-placeholder-color, var(--ion-color-step-400, #999999));font-family:inherit;font-weight:inherit}.alert-input.sc-ion-alert-ios::placeholder{color:var(--ion-placeholder-color, var(--ion-color-step-400, #999999));font-family:inherit;font-weight:inherit}.alert-input.sc-ion-alert-ios::-ms-clear{display:none}.alert-radio-group.sc-ion-alert-ios,.alert-checkbox-group.sc-ion-alert-ios{-ms-scroll-chaining:none;overscroll-behavior:contain;max-height:240px;border-top:0.55px solid rgba(var(--ion-text-color-rgb, 0, 0, 0), 0.2);overflow-y:auto;-webkit-overflow-scrolling:touch}.alert-tappable.sc-ion-alert-ios{height:44px}.alert-radio-label.sc-ion-alert-ios{padding-left:13px;padding-right:13px;padding-top:13px;padding-bottom:13px;-ms-flex:1;flex:1;-ms-flex-order:0;order:0;color:var(--ion-text-color, #000);text-overflow:ellipsis;white-space:nowrap;overflow:hidden}@supports ((-webkit-margin-start: 0) or (margin-inline-start: 0)) or (-webkit-margin-start: 0){.alert-radio-label.sc-ion-alert-ios{padding-left:unset;padding-right:unset;-webkit-padding-start:13px;padding-inline-start:13px;-webkit-padding-end:13px;padding-inline-end:13px}}[aria-checked=true].sc-ion-alert-ios .alert-radio-label.sc-ion-alert-ios{color:var(--ion-color-primary, #3880ff)}.alert-radio-icon.sc-ion-alert-ios{position:relative;-ms-flex-order:1;order:1;min-width:30px}[aria-checked=true].sc-ion-alert-ios .alert-radio-inner.sc-ion-alert-ios{left:7px;top:-7px;position:absolute;width:6px;height:12px;-webkit-transform:rotate(45deg);transform:rotate(45deg);border-width:2px;border-top-width:0;border-left-width:0;border-style:solid;border-color:var(--ion-color-primary, #3880ff)}[dir=rtl].sc-ion-alert-ios [aria-checked=true].sc-ion-alert-ios .alert-radio-inner.sc-ion-alert-ios,[dir=rtl].sc-ion-alert-ios-h [aria-checked=true].sc-ion-alert-ios .alert-radio-inner.sc-ion-alert-ios,[dir=rtl] .sc-ion-alert-ios-h [aria-checked=true].sc-ion-alert-ios .alert-radio-inner.sc-ion-alert-ios{left:unset;right:unset;right:7px}.alert-checkbox-label.sc-ion-alert-ios{padding-left:13px;padding-right:13px;padding-top:13px;padding-bottom:13px;-ms-flex:1;flex:1;color:var(--ion-text-color, #000);text-overflow:ellipsis;white-space:nowrap;overflow:hidden}@supports ((-webkit-margin-start: 0) or (margin-inline-start: 0)) or (-webkit-margin-start: 0){.alert-checkbox-label.sc-ion-alert-ios{padding-left:unset;padding-right:unset;-webkit-padding-start:13px;padding-inline-start:13px;-webkit-padding-end:13px;padding-inline-end:13px}}.alert-checkbox-icon.sc-ion-alert-ios{border-radius:50%;margin-left:16px;margin-right:6px;margin-top:10px;margin-bottom:10px;position:relative;width:24px;height:24px;border-width:1px;border-style:solid;border-color:var(--ion-item-border-color, var(--ion-border-color, var(--ion-color-step-250, #c8c7cc)));background-color:var(--ion-item-background, var(--ion-background-color, #fff));contain:strict}@supports ((-webkit-margin-start: 0) or (margin-inline-start: 0)) or (-webkit-margin-start: 0){.alert-checkbox-icon.sc-ion-alert-ios{margin-left:unset;margin-right:unset;-webkit-margin-start:16px;margin-inline-start:16px;-webkit-margin-end:6px;margin-inline-end:6px}}[aria-checked=true].sc-ion-alert-ios .alert-checkbox-icon.sc-ion-alert-ios{border-color:var(--ion-color-primary, #3880ff);background-color:var(--ion-color-primary, #3880ff)}[aria-checked=true].sc-ion-alert-ios .alert-checkbox-inner.sc-ion-alert-ios{left:9px;top:4px;position:absolute;width:5px;height:12px;-webkit-transform:rotate(45deg);transform:rotate(45deg);border-width:1px;border-top-width:0;border-left-width:0;border-style:solid;border-color:var(--ion-background-color, #fff)}[dir=rtl].sc-ion-alert-ios [aria-checked=true].sc-ion-alert-ios .alert-checkbox-inner.sc-ion-alert-ios,[dir=rtl].sc-ion-alert-ios-h [aria-checked=true].sc-ion-alert-ios .alert-checkbox-inner.sc-ion-alert-ios,[dir=rtl] .sc-ion-alert-ios-h [aria-checked=true].sc-ion-alert-ios .alert-checkbox-inner.sc-ion-alert-ios{left:unset;right:unset;right:9px}.alert-button-group.sc-ion-alert-ios{margin-right:-0.55px;-ms-flex-wrap:wrap;flex-wrap:wrap}@supports ((-webkit-margin-start: 0) or (margin-inline-start: 0)) or (-webkit-margin-start: 0){.alert-button-group.sc-ion-alert-ios{margin-right:unset;-webkit-margin-end:-0.55px;margin-inline-end:-0.55px}}.alert-button.sc-ion-alert-ios{margin-left:0;margin-right:0;margin-top:0;margin-bottom:0;border-radius:0;-ms-flex:1 1 auto;flex:1 1 auto;min-width:50%;height:44px;border-top:0.55px solid rgba(var(--ion-text-color-rgb, 0, 0, 0), 0.2);border-right:0.55px solid rgba(var(--ion-text-color-rgb, 0, 0, 0), 0.2);background-color:transparent;color:var(--ion-color-primary, #3880ff);font-size:17px;overflow:hidden}[dir=rtl].sc-ion-alert-ios .alert-button.sc-ion-alert-ios:first-child,[dir=rtl].sc-ion-alert-ios-h .alert-button.sc-ion-alert-ios:first-child,[dir=rtl] .sc-ion-alert-ios-h .alert-button.sc-ion-alert-ios:first-child{border-right:0}.alert-button.sc-ion-alert-ios:last-child{border-right:0;font-weight:bold}[dir=rtl].sc-ion-alert-ios .alert-button.sc-ion-alert-ios:last-child,[dir=rtl].sc-ion-alert-ios-h .alert-button.sc-ion-alert-ios:last-child,[dir=rtl] .sc-ion-alert-ios-h .alert-button.sc-ion-alert-ios:last-child{border-right:0.55px solid rgba(var(--ion-text-color-rgb, 0, 0, 0), 0.2)}.alert-button.ion-activated.sc-ion-alert-ios{background-color:rgba(var(--ion-text-color-rgb, 0, 0, 0), 0.1)}.alert-button-role-destructive.sc-ion-alert-ios,.alert-button-role-destructive.ion-activated.sc-ion-alert-ios,.alert-button-role-destructive.ion-focused.sc-ion-alert-ios{color:var(--ion-color-danger, #eb445a)}\";\nconst alertMdCss = \".sc-ion-alert-md-h{--min-width:250px;--width:auto;--min-height:auto;--height:auto;--max-height:90%;-moz-osx-font-smoothing:grayscale;-webkit-font-smoothing:antialiased;left:0;right:0;top:0;bottom:0;display:-ms-flexbox;display:flex;position:absolute;-ms-flex-align:center;align-items:center;-ms-flex-pack:center;justify-content:center;outline:none;font-family:var(--ion-font-family, inherit);contain:strict;-ms-touch-action:none;touch-action:none;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;z-index:1001}.overlay-hidden.sc-ion-alert-md-h{display:none}.alert-top.sc-ion-alert-md-h{padding-top:50px;-ms-flex-align:start;align-items:flex-start}.alert-wrapper.sc-ion-alert-md{display:-ms-flexbox;display:flex;-ms-flex-direction:column;flex-direction:column;width:var(--width);min-width:var(--min-width);max-width:var(--max-width);height:var(--height);min-height:var(--min-height);max-height:var(--max-height);background:var(--background);contain:content;opacity:0;z-index:10}.alert-title.sc-ion-alert-md{margin-left:0;margin-right:0;margin-top:0;margin-bottom:0;padding-left:0;padding-right:0;padding-top:0;padding-bottom:0}.alert-sub-title.sc-ion-alert-md{margin-left:0;margin-right:0;margin-top:5px;margin-bottom:0;padding-left:0;padding-right:0;padding-top:0;padding-bottom:0;font-weight:normal}.alert-message.sc-ion-alert-md{-webkit-box-sizing:border-box;box-sizing:border-box;-webkit-overflow-scrolling:touch;overflow-y:auto;overscroll-behavior-y:contain}.alert-checkbox-group.sc-ion-alert-md::-webkit-scrollbar,.alert-radio-group.sc-ion-alert-md::-webkit-scrollbar,.alert-message.sc-ion-alert-md::-webkit-scrollbar{display:none}.alert-input.sc-ion-alert-md{padding-left:0;padding-right:0;padding-top:10px;padding-bottom:10px;width:100%;border:0;background:inherit;font:inherit;-webkit-box-sizing:border-box;box-sizing:border-box}.alert-button-group.sc-ion-alert-md{display:-ms-flexbox;display:flex;-ms-flex-direction:row;flex-direction:row;width:100%}.alert-button-group-vertical.sc-ion-alert-md{-ms-flex-direction:column;flex-direction:column;-ms-flex-wrap:nowrap;flex-wrap:nowrap}.alert-button.sc-ion-alert-md{margin-left:0;margin-right:0;margin-top:0;margin-bottom:0;display:block;border:0;font-size:14px;line-height:20px;z-index:0}.alert-button.ion-focused.sc-ion-alert-md,.alert-tappable.ion-focused.sc-ion-alert-md{background:var(--ion-color-step-100, #e6e6e6)}.alert-button-inner.sc-ion-alert-md{display:-ms-flexbox;display:flex;-ms-flex-flow:row nowrap;flex-flow:row nowrap;-ms-flex-negative:0;flex-shrink:0;-ms-flex-align:center;align-items:center;-ms-flex-pack:center;justify-content:center;width:100%;height:100%}.alert-input-disabled.sc-ion-alert-md,.alert-checkbox-button-disabled.sc-ion-alert-md .alert-button-inner.sc-ion-alert-md,.alert-radio-button-disabled.sc-ion-alert-md .alert-button-inner.sc-ion-alert-md{cursor:default;opacity:0.5;pointer-events:none}.alert-tappable.sc-ion-alert-md{margin-left:0;margin-right:0;margin-top:0;margin-bottom:0;padding-left:0;padding-right:0;padding-top:0;padding-bottom:0;display:-ms-flexbox;display:flex;width:100%;border:0;background:transparent;font-size:inherit;line-height:initial;text-align:start;-webkit-appearance:none;-moz-appearance:none;appearance:none;contain:strict}.alert-button.sc-ion-alert-md,.alert-checkbox.sc-ion-alert-md,.alert-input.sc-ion-alert-md,.alert-radio.sc-ion-alert-md{outline:none}.alert-radio-icon.sc-ion-alert-md,.alert-checkbox-icon.sc-ion-alert-md,.alert-checkbox-inner.sc-ion-alert-md{-webkit-box-sizing:border-box;box-sizing:border-box}textarea.alert-input.sc-ion-alert-md{min-height:37px;resize:none}.sc-ion-alert-md-h{--background:var(--ion-overlay-background-color, var(--ion-background-color, #fff));--max-width:280px;--backdrop-opacity:var(--ion-backdrop-opacity, 0.32);font-size:14px}.alert-wrapper.sc-ion-alert-md{border-radius:4px;-webkit-box-shadow:0 11px 15px -7px rgba(0, 0, 0, 0.2), 0 24px 38px 3px rgba(0, 0, 0, 0.14), 0 9px 46px 8px rgba(0, 0, 0, 0.12);box-shadow:0 11px 15px -7px rgba(0, 0, 0, 0.2), 0 24px 38px 3px rgba(0, 0, 0, 0.14), 0 9px 46px 8px rgba(0, 0, 0, 0.12)}.alert-head.sc-ion-alert-md{padding-left:23px;padding-right:23px;padding-top:20px;padding-bottom:15px;text-align:start}@supports ((-webkit-margin-start: 0) or (margin-inline-start: 0)) or (-webkit-margin-start: 0){.alert-head.sc-ion-alert-md{padding-left:unset;padding-right:unset;-webkit-padding-start:23px;padding-inline-start:23px;-webkit-padding-end:23px;padding-inline-end:23px}}.alert-title.sc-ion-alert-md{color:var(--ion-text-color, #000);font-size:20px;font-weight:500}.alert-sub-title.sc-ion-alert-md{color:var(--ion-text-color, #000);font-size:16px}.alert-message.sc-ion-alert-md,.alert-input-group.sc-ion-alert-md{padding-left:24px;padding-right:24px;padding-top:20px;padding-bottom:20px;color:var(--ion-color-step-550, #737373)}@supports ((-webkit-margin-start: 0) or (margin-inline-start: 0)) or (-webkit-margin-start: 0){.alert-message.sc-ion-alert-md,.alert-input-group.sc-ion-alert-md{padding-left:unset;padding-right:unset;-webkit-padding-start:24px;padding-inline-start:24px;-webkit-padding-end:24px;padding-inline-end:24px}}.alert-message.sc-ion-alert-md{max-height:266px;font-size:16px}.alert-message.sc-ion-alert-md:empty{padding-left:0;padding-right:0;padding-top:0;padding-bottom:0}.alert-head.sc-ion-alert-md+.alert-message.sc-ion-alert-md{padding-top:0}.alert-input.sc-ion-alert-md{margin-left:0;margin-right:0;margin-top:5px;margin-bottom:5px;border-bottom:1px solid var(--ion-color-step-150, #d9d9d9);color:var(--ion-text-color, #000)}.alert-input.sc-ion-alert-md::-webkit-input-placeholder{color:var(--ion-placeholder-color, var(--ion-color-step-400, #999999));font-family:inherit;font-weight:inherit}.alert-input.sc-ion-alert-md::-moz-placeholder{color:var(--ion-placeholder-color, var(--ion-color-step-400, #999999));font-family:inherit;font-weight:inherit}.alert-input.sc-ion-alert-md:-ms-input-placeholder{color:var(--ion-placeholder-color, var(--ion-color-step-400, #999999));font-family:inherit;font-weight:inherit}.alert-input.sc-ion-alert-md::-ms-input-placeholder{color:var(--ion-placeholder-color, var(--ion-color-step-400, #999999));font-family:inherit;font-weight:inherit}.alert-input.sc-ion-alert-md::placeholder{color:var(--ion-placeholder-color, var(--ion-color-step-400, #999999));font-family:inherit;font-weight:inherit}.alert-input.sc-ion-alert-md::-ms-clear{display:none}.alert-input.sc-ion-alert-md:focus{margin-bottom:4px;border-bottom:2px solid var(--ion-color-primary, #3880ff)}.alert-radio-group.sc-ion-alert-md,.alert-checkbox-group.sc-ion-alert-md{position:relative;max-height:266px;border-top:1px solid var(--ion-color-step-150, #d9d9d9);border-bottom:1px solid var(--ion-color-step-150, #d9d9d9);overflow:auto}.alert-tappable.sc-ion-alert-md{position:relative;height:48px;overflow:hidden}.alert-radio-label.sc-ion-alert-md{padding-left:52px;padding-right:26px;padding-top:13px;padding-bottom:13px;-ms-flex:1;flex:1;color:var(--ion-color-step-850, #262626);font-size:16px;text-overflow:ellipsis;white-space:nowrap;overflow:hidden}@supports ((-webkit-margin-start: 0) or (margin-inline-start: 0)) or (-webkit-margin-start: 0){.alert-radio-label.sc-ion-alert-md{padding-left:unset;padding-right:unset;-webkit-padding-start:52px;padding-inline-start:52px;-webkit-padding-end:26px;padding-inline-end:26px}}.alert-radio-icon.sc-ion-alert-md{left:26px;top:0;border-radius:50%;display:block;position:relative;width:20px;height:20px;border-width:2px;border-style:solid;border-color:var(--ion-color-step-550, #737373)}[dir=rtl].sc-ion-alert-md .alert-radio-icon.sc-ion-alert-md,[dir=rtl].sc-ion-alert-md-h .alert-radio-icon.sc-ion-alert-md,[dir=rtl] .sc-ion-alert-md-h .alert-radio-icon.sc-ion-alert-md{left:unset;right:unset;right:26px}.alert-radio-inner.sc-ion-alert-md{left:3px;top:3px;border-radius:50%;position:absolute;width:10px;height:10px;-webkit-transform:scale3d(0, 0, 0);transform:scale3d(0, 0, 0);-webkit-transition:-webkit-transform 280ms cubic-bezier(0.4, 0, 0.2, 1);transition:-webkit-transform 280ms cubic-bezier(0.4, 0, 0.2, 1);transition:transform 280ms cubic-bezier(0.4, 0, 0.2, 1);transition:transform 280ms cubic-bezier(0.4, 0, 0.2, 1), -webkit-transform 280ms cubic-bezier(0.4, 0, 0.2, 1);background-color:var(--ion-color-primary, #3880ff)}[dir=rtl].sc-ion-alert-md .alert-radio-inner.sc-ion-alert-md,[dir=rtl].sc-ion-alert-md-h .alert-radio-inner.sc-ion-alert-md,[dir=rtl] .sc-ion-alert-md-h .alert-radio-inner.sc-ion-alert-md{left:unset;right:unset;right:3px}[aria-checked=true].sc-ion-alert-md .alert-radio-label.sc-ion-alert-md{color:var(--ion-color-step-850, #262626)}[aria-checked=true].sc-ion-alert-md .alert-radio-icon.sc-ion-alert-md{border-color:var(--ion-color-primary, #3880ff)}[aria-checked=true].sc-ion-alert-md .alert-radio-inner.sc-ion-alert-md{-webkit-transform:scale3d(1, 1, 1);transform:scale3d(1, 1, 1)}.alert-checkbox-label.sc-ion-alert-md{padding-left:53px;padding-right:26px;padding-top:13px;padding-bottom:13px;-ms-flex:1;flex:1;color:var(--ion-color-step-850, #262626);font-size:16px;text-overflow:ellipsis;white-space:nowrap;overflow:hidden}@supports ((-webkit-margin-start: 0) or (margin-inline-start: 0)) or (-webkit-margin-start: 0){.alert-checkbox-label.sc-ion-alert-md{padding-left:unset;padding-right:unset;-webkit-padding-start:53px;padding-inline-start:53px;-webkit-padding-end:26px;padding-inline-end:26px}}.alert-checkbox-icon.sc-ion-alert-md{left:26px;top:0;border-radius:2px;position:relative;width:16px;height:16px;border-width:2px;border-style:solid;border-color:var(--ion-color-step-550, #737373);contain:strict}[dir=rtl].sc-ion-alert-md .alert-checkbox-icon.sc-ion-alert-md,[dir=rtl].sc-ion-alert-md-h .alert-checkbox-icon.sc-ion-alert-md,[dir=rtl] .sc-ion-alert-md-h .alert-checkbox-icon.sc-ion-alert-md{left:unset;right:unset;right:26px}[aria-checked=true].sc-ion-alert-md .alert-checkbox-icon.sc-ion-alert-md{border-color:var(--ion-color-primary, #3880ff);background-color:var(--ion-color-primary, #3880ff)}[aria-checked=true].sc-ion-alert-md .alert-checkbox-inner.sc-ion-alert-md{left:3px;top:0;position:absolute;width:6px;height:10px;-webkit-transform:rotate(45deg);transform:rotate(45deg);border-width:2px;border-top-width:0;border-left-width:0;border-style:solid;border-color:var(--ion-color-primary-contrast, #fff)}[dir=rtl].sc-ion-alert-md [aria-checked=true].sc-ion-alert-md .alert-checkbox-inner.sc-ion-alert-md,[dir=rtl].sc-ion-alert-md-h [aria-checked=true].sc-ion-alert-md .alert-checkbox-inner.sc-ion-alert-md,[dir=rtl] .sc-ion-alert-md-h [aria-checked=true].sc-ion-alert-md .alert-checkbox-inner.sc-ion-alert-md{left:unset;right:unset;right:3px}.alert-button-group.sc-ion-alert-md{padding-left:8px;padding-right:8px;padding-top:8px;padding-bottom:8px;-webkit-box-sizing:border-box;box-sizing:border-box;-ms-flex-wrap:wrap-reverse;flex-wrap:wrap-reverse;-ms-flex-pack:end;justify-content:flex-end}@supports ((-webkit-margin-start: 0) or (margin-inline-start: 0)) or (-webkit-margin-start: 0){.alert-button-group.sc-ion-alert-md{padding-left:unset;padding-right:unset;-webkit-padding-start:8px;padding-inline-start:8px;-webkit-padding-end:8px;padding-inline-end:8px}}.alert-button.sc-ion-alert-md{border-radius:2px;margin-left:0;margin-right:8px;margin-top:0;margin-bottom:0;padding-left:10px;padding-right:10px;padding-top:10px;padding-bottom:10px;position:relative;background-color:transparent;color:var(--ion-color-primary, #3880ff);font-weight:500;text-align:end;text-transform:uppercase;overflow:hidden}@supports ((-webkit-margin-start: 0) or (margin-inline-start: 0)) or (-webkit-margin-start: 0){.alert-button.sc-ion-alert-md{margin-left:unset;margin-right:unset;-webkit-margin-start:0;margin-inline-start:0;-webkit-margin-end:8px;margin-inline-end:8px}}@supports ((-webkit-margin-start: 0) or (margin-inline-start: 0)) or (-webkit-margin-start: 0){.alert-button.sc-ion-alert-md{padding-left:unset;padding-right:unset;-webkit-padding-start:10px;padding-inline-start:10px;-webkit-padding-end:10px;padding-inline-end:10px}}.alert-button-inner.sc-ion-alert-md{-ms-flex-pack:end;justify-content:flex-end}\";\nconst Alert = /*@__PURE__*/(0,_stencil_core_internal_client__WEBPACK_IMPORTED_MODULE_1__.proxyCustomElement)(class extends _stencil_core_internal_client__WEBPACK_IMPORTED_MODULE_1__.HTMLElement {\n constructor() {\n super();\n this.__registerHost();\n this.didPresent = (0,_stencil_core_internal_client__WEBPACK_IMPORTED_MODULE_1__.createEvent)(this, \"ionAlertDidPresent\", 7);\n this.willPresent = (0,_stencil_core_internal_client__WEBPACK_IMPORTED_MODULE_1__.createEvent)(this, \"ionAlertWillPresent\", 7);\n this.willDismiss = (0,_stencil_core_internal_client__WEBPACK_IMPORTED_MODULE_1__.createEvent)(this, \"ionAlertWillDismiss\", 7);\n this.didDismiss = (0,_stencil_core_internal_client__WEBPACK_IMPORTED_MODULE_1__.createEvent)(this, \"ionAlertDidDismiss\", 7);\n this.processedInputs = [];\n this.processedButtons = [];\n this.presented = false;\n /**\n * If `true`, the keyboard will be automatically dismissed when the overlay is presented.\n */\n this.keyboardClose = true;\n /**\n * Array of buttons to be added to the alert.\n */\n this.buttons = [];\n /**\n * Array of input to show in the alert.\n */\n this.inputs = [];\n /**\n * If `true`, the alert will be dismissed when the backdrop is clicked.\n */\n this.backdropDismiss = true;\n /**\n * If `true`, the alert will be translucent.\n * Only applies when the mode is `\"ios\"` and the device supports\n * [`backdrop-filter`](https://developer.mozilla.org/en-US/docs/Web/CSS/backdrop-filter#Browser_compatibility).\n */\n this.translucent = false;\n /**\n * If `true`, the alert will animate.\n */\n this.animated = true;\n this.onBackdropTap = () => {\n this.dismiss(undefined, _overlays_js__WEBPACK_IMPORTED_MODULE_2__.B);\n };\n this.dispatchCancelHandler = ev => {\n const role = ev.detail.role;\n if ((0,_overlays_js__WEBPACK_IMPORTED_MODULE_2__.j)(role)) {\n const cancelButton = this.processedButtons.find(b => b.role === 'cancel');\n this.callButtonHandler(cancelButton);\n }\n };\n }\n onKeydown(ev) {\n const inputTypes = new Set(this.processedInputs.map(i => i.type));\n // The only inputs we want to navigate between using arrow keys are the radios\n // ignore the keydown event if it is not on a radio button\n if (!inputTypes.has('radio') || ev.target && !this.el.contains(ev.target) || ev.target.classList.contains('alert-button')) {\n return;\n }\n // Get all radios inside of the radio group and then\n // filter out disabled radios since we need to skip those\n const query = this.el.querySelectorAll('.alert-radio');\n const radios = Array.from(query).filter(radio => !radio.disabled);\n // The focused radio is the one that shares the same id as\n // the event target\n const index = radios.findIndex(radio => radio.id === ev.target.id);\n // We need to know what the next radio element should\n // be in order to change the focus\n let nextEl;\n // If hitting arrow down or arrow right, move to the next radio\n // If we're on the last radio, move to the first radio\n if (['ArrowDown', 'ArrowRight'].includes(ev.code)) {\n nextEl = index === radios.length - 1 ? radios[0] : radios[index + 1];\n }\n // If hitting arrow up or arrow left, move to the previous radio\n // If we're on the first radio, move to the last radio\n if (['ArrowUp', 'ArrowLeft'].includes(ev.code)) {\n nextEl = index === 0 ? radios[radios.length - 1] : radios[index - 1];\n }\n if (nextEl && radios.includes(nextEl)) {\n const nextProcessed = this.processedInputs.find(input => input.id === (nextEl === null || nextEl === void 0 ? void 0 : nextEl.id));\n if (nextProcessed) {\n this.rbClick(nextProcessed);\n nextEl.focus();\n }\n }\n }\n buttonsChanged() {\n const buttons = this.buttons;\n this.processedButtons = buttons.map(btn => {\n return typeof btn === 'string' ? {\n text: btn,\n role: btn.toLowerCase() === 'cancel' ? 'cancel' : undefined\n } : btn;\n });\n }\n inputsChanged() {\n const inputs = this.inputs;\n // Get the first input that is not disabled and the checked one\n // If an enabled checked input exists, set it to be the focusable input\n // otherwise we default to focus the first input\n // This will only be used when the input is type radio\n const first = inputs.find(input => !input.disabled);\n const checked = inputs.find(input => input.checked && !input.disabled);\n const focusable = checked || first;\n // An alert can be created with several different inputs. Radios,\n // checkboxes and inputs are all accepted, but they cannot be mixed.\n const inputTypes = new Set(inputs.map(i => i.type));\n if (inputTypes.has('checkbox') && inputTypes.has('radio')) {\n console.warn(`Alert cannot mix input types: ${Array.from(inputTypes.values()).join('/')}. Please see alert docs for more info.`);\n }\n this.inputType = inputTypes.values().next().value;\n this.processedInputs = inputs.map((i, index) => {\n var _a;\n return {\n type: i.type || 'text',\n name: i.name || `${index}`,\n placeholder: i.placeholder || '',\n value: i.value,\n label: i.label,\n checked: !!i.checked,\n disabled: !!i.disabled,\n id: i.id || `alert-input-${this.overlayIndex}-${index}`,\n handler: i.handler,\n min: i.min,\n max: i.max,\n cssClass: (_a = i.cssClass) !== null && _a !== void 0 ? _a : '',\n attributes: i.attributes || {},\n tabindex: i.type === 'radio' && i !== focusable ? -1 : 0\n };\n });\n }\n connectedCallback() {\n (0,_overlays_js__WEBPACK_IMPORTED_MODULE_2__.d)(this.el);\n }\n componentWillLoad() {\n this.inputsChanged();\n this.buttonsChanged();\n }\n disconnectedCallback() {\n if (this.gesture) {\n this.gesture.destroy();\n this.gesture = undefined;\n }\n }\n componentDidLoad() {\n /**\n * Do not create gesture if:\n * 1. A gesture already exists\n * 2. App is running in MD mode\n * 3. A wrapper ref does not exist\n */\n if (this.gesture || (0,_ionic_global_js__WEBPACK_IMPORTED_MODULE_3__.b)(this) === 'md' || !this.wrapperEl) {\n return;\n }\n this.gesture = (0,_button_active_js__WEBPACK_IMPORTED_MODULE_4__.c)(this.wrapperEl, refEl => refEl.classList.contains('alert-button'));\n this.gesture.enable(true);\n }\n /**\n * Present the alert overlay after it has been created.\n */\n present() {\n return (0,_overlays_js__WEBPACK_IMPORTED_MODULE_2__.e)(this, 'alertEnter', iosEnterAnimation, mdEnterAnimation);\n }\n /**\n * Dismiss the alert overlay after it has been presented.\n *\n * @param data Any data to emit in the dismiss events.\n * @param role The role of the element that is dismissing the alert.\n * This can be useful in a button handler for determining which button was\n * clicked to dismiss the alert.\n * Some examples include: ``\"cancel\"`, `\"destructive\"`, \"selected\"`, and `\"backdrop\"`.\n */\n dismiss(data, role) {\n return (0,_overlays_js__WEBPACK_IMPORTED_MODULE_2__.f)(this, data, role, 'alertLeave', iosLeaveAnimation, mdLeaveAnimation);\n }\n /**\n * Returns a promise that resolves when the alert did dismiss.\n */\n onDidDismiss() {\n return (0,_overlays_js__WEBPACK_IMPORTED_MODULE_2__.g)(this.el, 'ionAlertDidDismiss');\n }\n /**\n * Returns a promise that resolves when the alert will dismiss.\n */\n onWillDismiss() {\n return (0,_overlays_js__WEBPACK_IMPORTED_MODULE_2__.g)(this.el, 'ionAlertWillDismiss');\n }\n rbClick(selectedInput) {\n for (const input of this.processedInputs) {\n input.checked = input === selectedInput;\n input.tabindex = input === selectedInput ? 0 : -1;\n }\n this.activeId = selectedInput.id;\n (0,_overlays_js__WEBPACK_IMPORTED_MODULE_2__.s)(selectedInput.handler, selectedInput);\n (0,_stencil_core_internal_client__WEBPACK_IMPORTED_MODULE_1__.forceUpdate)(this);\n }\n cbClick(selectedInput) {\n selectedInput.checked = !selectedInput.checked;\n (0,_overlays_js__WEBPACK_IMPORTED_MODULE_2__.s)(selectedInput.handler, selectedInput);\n (0,_stencil_core_internal_client__WEBPACK_IMPORTED_MODULE_1__.forceUpdate)(this);\n }\n async buttonClick(button) {\n const role = button.role;\n const values = this.getValues();\n if ((0,_overlays_js__WEBPACK_IMPORTED_MODULE_2__.j)(role)) {\n return this.dismiss({\n values\n }, role);\n }\n const returnData = await this.callButtonHandler(button, values);\n if (returnData !== false) {\n return this.dismiss(Object.assign({\n values\n }, returnData), button.role);\n }\n return false;\n }\n async callButtonHandler(button, data) {\n if (button === null || button === void 0 ? void 0 : button.handler) {\n // a handler has been provided, execute it\n // pass the handler the values from the inputs\n const returnData = await (0,_overlays_js__WEBPACK_IMPORTED_MODULE_2__.s)(button.handler, data);\n if (returnData === false) {\n // if the return value of the handler is false then do not dismiss\n return false;\n }\n if (typeof returnData === 'object') {\n return returnData;\n }\n }\n return {};\n }\n getValues() {\n if (this.processedInputs.length === 0) {\n // this is an alert without any options/inputs at all\n return undefined;\n }\n if (this.inputType === 'radio') {\n // this is an alert with radio buttons (single value select)\n // return the one value which is checked, otherwise undefined\n const checkedInput = this.processedInputs.find(i => !!i.checked);\n return checkedInput ? checkedInput.value : undefined;\n }\n if (this.inputType === 'checkbox') {\n // this is an alert with checkboxes (multiple value select)\n // return an array of all the checked values\n return this.processedInputs.filter(i => i.checked).map(i => i.value);\n }\n // this is an alert with text inputs\n // return an object of all the values with the input name as the key\n const values = {};\n this.processedInputs.forEach(i => {\n values[i.name] = i.value || '';\n });\n return values;\n }\n renderAlertInputs() {\n switch (this.inputType) {\n case 'checkbox':\n return this.renderCheckbox();\n case 'radio':\n return this.renderRadio();\n default:\n return this.renderInput();\n }\n }\n renderCheckbox() {\n const inputs = this.processedInputs;\n const mode = (0,_ionic_global_js__WEBPACK_IMPORTED_MODULE_3__.b)(this);\n if (inputs.length === 0) {\n return null;\n }\n return (0,_stencil_core_internal_client__WEBPACK_IMPORTED_MODULE_1__.h)(\"div\", {\n class: \"alert-checkbox-group\"\n }, inputs.map(i => (0,_stencil_core_internal_client__WEBPACK_IMPORTED_MODULE_1__.h)(\"button\", {\n type: \"button\",\n onClick: () => this.cbClick(i),\n \"aria-checked\": `${i.checked}`,\n id: i.id,\n disabled: i.disabled,\n tabIndex: i.tabindex,\n role: \"checkbox\",\n class: Object.assign(Object.assign({}, (0,_theme_js__WEBPACK_IMPORTED_MODULE_5__.g)(i.cssClass)), {\n 'alert-tappable': true,\n 'alert-checkbox': true,\n 'alert-checkbox-button': true,\n 'ion-focusable': true,\n 'alert-checkbox-button-disabled': i.disabled || false\n })\n }, (0,_stencil_core_internal_client__WEBPACK_IMPORTED_MODULE_1__.h)(\"div\", {\n class: \"alert-button-inner\"\n }, (0,_stencil_core_internal_client__WEBPACK_IMPORTED_MODULE_1__.h)(\"div\", {\n class: \"alert-checkbox-icon\"\n }, (0,_stencil_core_internal_client__WEBPACK_IMPORTED_MODULE_1__.h)(\"div\", {\n class: \"alert-checkbox-inner\"\n })), (0,_stencil_core_internal_client__WEBPACK_IMPORTED_MODULE_1__.h)(\"div\", {\n class: \"alert-checkbox-label\"\n }, i.label)), mode === 'md' && (0,_stencil_core_internal_client__WEBPACK_IMPORTED_MODULE_1__.h)(\"ion-ripple-effect\", null))));\n }\n renderRadio() {\n const inputs = this.processedInputs;\n if (inputs.length === 0) {\n return null;\n }\n return (0,_stencil_core_internal_client__WEBPACK_IMPORTED_MODULE_1__.h)(\"div\", {\n class: \"alert-radio-group\",\n role: \"radiogroup\",\n \"aria-activedescendant\": this.activeId\n }, inputs.map(i => (0,_stencil_core_internal_client__WEBPACK_IMPORTED_MODULE_1__.h)(\"button\", {\n type: \"button\",\n onClick: () => this.rbClick(i),\n \"aria-checked\": `${i.checked}`,\n disabled: i.disabled,\n id: i.id,\n tabIndex: i.tabindex,\n class: Object.assign(Object.assign({}, (0,_theme_js__WEBPACK_IMPORTED_MODULE_5__.g)(i.cssClass)), {\n 'alert-radio-button': true,\n 'alert-tappable': true,\n 'alert-radio': true,\n 'ion-focusable': true,\n 'alert-radio-button-disabled': i.disabled || false\n }),\n role: \"radio\"\n }, (0,_stencil_core_internal_client__WEBPACK_IMPORTED_MODULE_1__.h)(\"div\", {\n class: \"alert-button-inner\"\n }, (0,_stencil_core_internal_client__WEBPACK_IMPORTED_MODULE_1__.h)(\"div\", {\n class: \"alert-radio-icon\"\n }, (0,_stencil_core_internal_client__WEBPACK_IMPORTED_MODULE_1__.h)(\"div\", {\n class: \"alert-radio-inner\"\n })), (0,_stencil_core_internal_client__WEBPACK_IMPORTED_MODULE_1__.h)(\"div\", {\n class: \"alert-radio-label\"\n }, i.label)))));\n }\n renderInput() {\n const inputs = this.processedInputs;\n if (inputs.length === 0) {\n return null;\n }\n return (0,_stencil_core_internal_client__WEBPACK_IMPORTED_MODULE_1__.h)(\"div\", {\n class: \"alert-input-group\"\n }, inputs.map(i => {\n var _a, _b, _c, _d;\n if (i.type === 'textarea') {\n return (0,_stencil_core_internal_client__WEBPACK_IMPORTED_MODULE_1__.h)(\"div\", {\n class: \"alert-input-wrapper\"\n }, (0,_stencil_core_internal_client__WEBPACK_IMPORTED_MODULE_1__.h)(\"textarea\", Object.assign({\n placeholder: i.placeholder,\n value: i.value,\n id: i.id,\n tabIndex: i.tabindex\n }, i.attributes, {\n disabled: (_b = (_a = i.attributes) === null || _a === void 0 ? void 0 : _a.disabled) !== null && _b !== void 0 ? _b : i.disabled,\n class: inputClass(i),\n onInput: e => {\n var _a;\n i.value = e.target.value;\n if ((_a = i.attributes) === null || _a === void 0 ? void 0 : _a.onInput) {\n i.attributes.onInput(e);\n }\n }\n })));\n } else {\n return (0,_stencil_core_internal_client__WEBPACK_IMPORTED_MODULE_1__.h)(\"div\", {\n class: \"alert-input-wrapper\"\n }, (0,_stencil_core_internal_client__WEBPACK_IMPORTED_MODULE_1__.h)(\"input\", Object.assign({\n placeholder: i.placeholder,\n type: i.type,\n min: i.min,\n max: i.max,\n value: i.value,\n id: i.id,\n tabIndex: i.tabindex\n }, i.attributes, {\n disabled: (_d = (_c = i.attributes) === null || _c === void 0 ? void 0 : _c.disabled) !== null && _d !== void 0 ? _d : i.disabled,\n class: inputClass(i),\n onInput: e => {\n var _a;\n i.value = e.target.value;\n if ((_a = i.attributes) === null || _a === void 0 ? void 0 : _a.onInput) {\n i.attributes.onInput(e);\n }\n }\n })));\n }\n }));\n }\n renderAlertButtons() {\n const buttons = this.processedButtons;\n const mode = (0,_ionic_global_js__WEBPACK_IMPORTED_MODULE_3__.b)(this);\n const alertButtonGroupClass = {\n 'alert-button-group': true,\n 'alert-button-group-vertical': buttons.length > 2\n };\n return (0,_stencil_core_internal_client__WEBPACK_IMPORTED_MODULE_1__.h)(\"div\", {\n class: alertButtonGroupClass\n }, buttons.map(button => (0,_stencil_core_internal_client__WEBPACK_IMPORTED_MODULE_1__.h)(\"button\", {\n type: \"button\",\n id: button.id,\n class: buttonClass(button),\n tabIndex: 0,\n onClick: () => this.buttonClick(button)\n }, (0,_stencil_core_internal_client__WEBPACK_IMPORTED_MODULE_1__.h)(\"span\", {\n class: \"alert-button-inner\"\n }, button.text), mode === 'md' && (0,_stencil_core_internal_client__WEBPACK_IMPORTED_MODULE_1__.h)(\"ion-ripple-effect\", null))));\n }\n render() {\n const {\n overlayIndex,\n header,\n subHeader,\n message,\n htmlAttributes\n } = this;\n const mode = (0,_ionic_global_js__WEBPACK_IMPORTED_MODULE_3__.b)(this);\n const hdrId = `alert-${overlayIndex}-hdr`;\n const subHdrId = `alert-${overlayIndex}-sub-hdr`;\n const msgId = `alert-${overlayIndex}-msg`;\n const role = this.inputs.length > 0 || this.buttons.length > 0 ? 'alertdialog' : 'alert';\n /**\n * If the header is defined, use that. Otherwise, fall back to the subHeader.\n * If neither is defined, don't set aria-labelledby.\n */\n const ariaLabelledBy = header ? hdrId : subHeader ? subHdrId : null;\n return (0,_stencil_core_internal_client__WEBPACK_IMPORTED_MODULE_1__.h)(_stencil_core_internal_client__WEBPACK_IMPORTED_MODULE_1__.Host, Object.assign({\n role: role,\n \"aria-modal\": \"true\",\n \"aria-labelledby\": ariaLabelledBy,\n \"aria-describedby\": message !== undefined ? msgId : null,\n tabindex: \"-1\"\n }, htmlAttributes, {\n style: {\n zIndex: `${20000 + overlayIndex}`\n },\n class: Object.assign(Object.assign({}, (0,_theme_js__WEBPACK_IMPORTED_MODULE_5__.g)(this.cssClass)), {\n [mode]: true,\n 'overlay-hidden': true,\n 'alert-translucent': this.translucent\n }),\n onIonAlertWillDismiss: this.dispatchCancelHandler,\n onIonBackdropTap: this.onBackdropTap\n }), (0,_stencil_core_internal_client__WEBPACK_IMPORTED_MODULE_1__.h)(\"ion-backdrop\", {\n tappable: this.backdropDismiss\n }), (0,_stencil_core_internal_client__WEBPACK_IMPORTED_MODULE_1__.h)(\"div\", {\n tabindex: \"0\"\n }), (0,_stencil_core_internal_client__WEBPACK_IMPORTED_MODULE_1__.h)(\"div\", {\n class: \"alert-wrapper ion-overlay-wrapper\",\n ref: el => this.wrapperEl = el\n }, (0,_stencil_core_internal_client__WEBPACK_IMPORTED_MODULE_1__.h)(\"div\", {\n class: \"alert-head\"\n }, header && (0,_stencil_core_internal_client__WEBPACK_IMPORTED_MODULE_1__.h)(\"h2\", {\n id: hdrId,\n class: \"alert-title\"\n }, header), subHeader && (0,_stencil_core_internal_client__WEBPACK_IMPORTED_MODULE_1__.h)(\"h2\", {\n id: subHdrId,\n class: \"alert-sub-title\"\n }, subHeader)), (0,_stencil_core_internal_client__WEBPACK_IMPORTED_MODULE_1__.h)(\"div\", {\n id: msgId,\n class: \"alert-message\",\n innerHTML: (0,_index3_js__WEBPACK_IMPORTED_MODULE_6__.s)(message)\n }), this.renderAlertInputs(), this.renderAlertButtons()), (0,_stencil_core_internal_client__WEBPACK_IMPORTED_MODULE_1__.h)(\"div\", {\n tabindex: \"0\"\n }));\n }\n get el() {\n return this;\n }\n static get watchers() {\n return {\n \"buttons\": [\"buttonsChanged\"],\n \"inputs\": [\"inputsChanged\"]\n };\n }\n static get style() {\n return {\n ios: alertIosCss,\n md: alertMdCss\n };\n }\n}, [34, \"ion-alert\", {\n \"overlayIndex\": [2, \"overlay-index\"],\n \"keyboardClose\": [4, \"keyboard-close\"],\n \"enterAnimation\": [16],\n \"leaveAnimation\": [16],\n \"cssClass\": [1, \"css-class\"],\n \"header\": [1],\n \"subHeader\": [1, \"sub-header\"],\n \"message\": [1],\n \"buttons\": [16],\n \"inputs\": [1040],\n \"backdropDismiss\": [4, \"backdrop-dismiss\"],\n \"translucent\": [4],\n \"animated\": [4],\n \"htmlAttributes\": [16],\n \"present\": [64],\n \"dismiss\": [64],\n \"onDidDismiss\": [64],\n \"onWillDismiss\": [64]\n}, [[4, \"keydown\", \"onKeydown\"]]]);\nconst inputClass = input => {\n var _a, _b, _c;\n return Object.assign(Object.assign({\n 'alert-input': true,\n 'alert-input-disabled': ((_b = (_a = input.attributes) === null || _a === void 0 ? void 0 : _a.disabled) !== null && _b !== void 0 ? _b : input.disabled) || false\n }, (0,_theme_js__WEBPACK_IMPORTED_MODULE_5__.g)(input.cssClass)), (0,_theme_js__WEBPACK_IMPORTED_MODULE_5__.g)(input.attributes ? (_c = input.attributes.class) === null || _c === void 0 ? void 0 : _c.toString() : ''));\n};\nconst buttonClass = button => {\n return Object.assign({\n 'alert-button': true,\n 'ion-focusable': true,\n 'ion-activatable': true,\n [`alert-button-role-${button.role}`]: button.role !== undefined\n }, (0,_theme_js__WEBPACK_IMPORTED_MODULE_5__.g)(button.cssClass));\n};\nfunction defineCustomElement() {\n if (typeof customElements === \"undefined\") {\n return;\n }\n const components = [\"ion-alert\", \"ion-backdrop\", \"ion-ripple-effect\"];\n components.forEach(tagName => {\n switch (tagName) {\n case \"ion-alert\":\n if (!customElements.get(tagName)) {\n customElements.define(tagName, Alert);\n }\n break;\n case \"ion-backdrop\":\n if (!customElements.get(tagName)) {\n (0,_backdrop_js__WEBPACK_IMPORTED_MODULE_7__.d)();\n }\n break;\n case \"ion-ripple-effect\":\n if (!customElements.get(tagName)) {\n (0,_ripple_effect_js__WEBPACK_IMPORTED_MODULE_8__.d)();\n }\n break;\n }\n });\n}\n\n\n//# sourceURL=webpack://jandl/./node_modules/@ionic/core/components/alert.js?"); +eval("{__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ A: function() { return /* binding */ Alert; },\n/* harmony export */ d: function() { return /* binding */ defineCustomElement; }\n/* harmony export */ });\n/* harmony import */ var core_js_modules_esnext_iterator_constructor_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! core-js/modules/esnext.iterator.constructor.js */ \"./node_modules/core-js/modules/esnext.iterator.constructor.js\");\n/* harmony import */ var core_js_modules_esnext_iterator_constructor_js__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_esnext_iterator_constructor_js__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var core_js_modules_esnext_iterator_filter_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! core-js/modules/esnext.iterator.filter.js */ \"./node_modules/core-js/modules/esnext.iterator.filter.js\");\n/* harmony import */ var core_js_modules_esnext_iterator_filter_js__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_esnext_iterator_filter_js__WEBPACK_IMPORTED_MODULE_1__);\n/* harmony import */ var core_js_modules_esnext_iterator_find_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! core-js/modules/esnext.iterator.find.js */ \"./node_modules/core-js/modules/esnext.iterator.find.js\");\n/* harmony import */ var core_js_modules_esnext_iterator_find_js__WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_esnext_iterator_find_js__WEBPACK_IMPORTED_MODULE_2__);\n/* harmony import */ var core_js_modules_esnext_iterator_for_each_js__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! core-js/modules/esnext.iterator.for-each.js */ \"./node_modules/core-js/modules/esnext.iterator.for-each.js\");\n/* harmony import */ var core_js_modules_esnext_iterator_for_each_js__WEBPACK_IMPORTED_MODULE_3___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_esnext_iterator_for_each_js__WEBPACK_IMPORTED_MODULE_3__);\n/* harmony import */ var core_js_modules_esnext_iterator_map_js__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! core-js/modules/esnext.iterator.map.js */ \"./node_modules/core-js/modules/esnext.iterator.map.js\");\n/* harmony import */ var core_js_modules_esnext_iterator_map_js__WEBPACK_IMPORTED_MODULE_4___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_esnext_iterator_map_js__WEBPACK_IMPORTED_MODULE_4__);\n/* harmony import */ var _stencil_core_internal_client__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! @stencil/core/internal/client */ \"./node_modules/@stencil/core/internal/client/index.js\");\n/* harmony import */ var _ionic_global_js__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ./ionic-global.js */ \"./node_modules/@ionic/core/components/ionic-global.js\");\n/* harmony import */ var _button_active_js__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! ./button-active.js */ \"./node_modules/@ionic/core/components/button-active.js\");\n/* harmony import */ var _overlays_js__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! ./overlays.js */ \"./node_modules/@ionic/core/components/overlays.js\");\n/* harmony import */ var _index3_js__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(/*! ./index3.js */ \"./node_modules/@ionic/core/components/index3.js\");\n/* harmony import */ var _theme_js__WEBPACK_IMPORTED_MODULE_10__ = __webpack_require__(/*! ./theme.js */ \"./node_modules/@ionic/core/components/theme.js\");\n/* harmony import */ var _animation_js__WEBPACK_IMPORTED_MODULE_11__ = __webpack_require__(/*! ./animation.js */ \"./node_modules/@ionic/core/components/animation.js\");\n/* harmony import */ var _backdrop_js__WEBPACK_IMPORTED_MODULE_12__ = __webpack_require__(/*! ./backdrop.js */ \"./node_modules/@ionic/core/components/backdrop.js\");\n/* harmony import */ var _ripple_effect_js__WEBPACK_IMPORTED_MODULE_13__ = __webpack_require__(/*! ./ripple-effect.js */ \"./node_modules/@ionic/core/components/ripple-effect.js\");\n/* provided dependency */ var console = __webpack_require__(/*! ./node_modules/console-browserify/index.js */ \"./node_modules/console-browserify/index.js\");\n\n\n\n\n\n/*!\n * (C) Ionic http://ionicframework.com - MIT License\n */\n\n\n\n\n\n\n\n\n\n\n/**\n * iOS Alert Enter Animation\n */\nconst iosEnterAnimation = baseEl => {\n const baseAnimation = (0,_animation_js__WEBPACK_IMPORTED_MODULE_11__.c)();\n const backdropAnimation = (0,_animation_js__WEBPACK_IMPORTED_MODULE_11__.c)();\n const wrapperAnimation = (0,_animation_js__WEBPACK_IMPORTED_MODULE_11__.c)();\n backdropAnimation.addElement(baseEl.querySelector('ion-backdrop')).fromTo('opacity', 0.01, 'var(--backdrop-opacity)').beforeStyles({\n 'pointer-events': 'none'\n }).afterClearStyles(['pointer-events']);\n wrapperAnimation.addElement(baseEl.querySelector('.alert-wrapper')).keyframes([{\n offset: 0,\n opacity: '0.01',\n transform: 'scale(1.1)'\n }, {\n offset: 1,\n opacity: '1',\n transform: 'scale(1)'\n }]);\n return baseAnimation.addElement(baseEl).easing('ease-in-out').duration(200).addAnimation([backdropAnimation, wrapperAnimation]);\n};\n\n/**\n * iOS Alert Leave Animation\n */\nconst iosLeaveAnimation = baseEl => {\n const baseAnimation = (0,_animation_js__WEBPACK_IMPORTED_MODULE_11__.c)();\n const backdropAnimation = (0,_animation_js__WEBPACK_IMPORTED_MODULE_11__.c)();\n const wrapperAnimation = (0,_animation_js__WEBPACK_IMPORTED_MODULE_11__.c)();\n backdropAnimation.addElement(baseEl.querySelector('ion-backdrop')).fromTo('opacity', 'var(--backdrop-opacity)', 0);\n wrapperAnimation.addElement(baseEl.querySelector('.alert-wrapper')).keyframes([{\n offset: 0,\n opacity: 0.99,\n transform: 'scale(1)'\n }, {\n offset: 1,\n opacity: 0,\n transform: 'scale(0.9)'\n }]);\n return baseAnimation.addElement(baseEl).easing('ease-in-out').duration(200).addAnimation([backdropAnimation, wrapperAnimation]);\n};\n\n/**\n * Md Alert Enter Animation\n */\nconst mdEnterAnimation = baseEl => {\n const baseAnimation = (0,_animation_js__WEBPACK_IMPORTED_MODULE_11__.c)();\n const backdropAnimation = (0,_animation_js__WEBPACK_IMPORTED_MODULE_11__.c)();\n const wrapperAnimation = (0,_animation_js__WEBPACK_IMPORTED_MODULE_11__.c)();\n backdropAnimation.addElement(baseEl.querySelector('ion-backdrop')).fromTo('opacity', 0.01, 'var(--backdrop-opacity)').beforeStyles({\n 'pointer-events': 'none'\n }).afterClearStyles(['pointer-events']);\n wrapperAnimation.addElement(baseEl.querySelector('.alert-wrapper')).keyframes([{\n offset: 0,\n opacity: '0.01',\n transform: 'scale(0.9)'\n }, {\n offset: 1,\n opacity: '1',\n transform: 'scale(1)'\n }]);\n return baseAnimation.addElement(baseEl).easing('ease-in-out').duration(150).addAnimation([backdropAnimation, wrapperAnimation]);\n};\n\n/**\n * Md Alert Leave Animation\n */\nconst mdLeaveAnimation = baseEl => {\n const baseAnimation = (0,_animation_js__WEBPACK_IMPORTED_MODULE_11__.c)();\n const backdropAnimation = (0,_animation_js__WEBPACK_IMPORTED_MODULE_11__.c)();\n const wrapperAnimation = (0,_animation_js__WEBPACK_IMPORTED_MODULE_11__.c)();\n backdropAnimation.addElement(baseEl.querySelector('ion-backdrop')).fromTo('opacity', 'var(--backdrop-opacity)', 0);\n wrapperAnimation.addElement(baseEl.querySelector('.alert-wrapper')).fromTo('opacity', 0.99, 0);\n return baseAnimation.addElement(baseEl).easing('ease-in-out').duration(150).addAnimation([backdropAnimation, wrapperAnimation]);\n};\nconst alertIosCss = \".sc-ion-alert-ios-h{--min-width:250px;--width:auto;--min-height:auto;--height:auto;--max-height:90%;-moz-osx-font-smoothing:grayscale;-webkit-font-smoothing:antialiased;left:0;right:0;top:0;bottom:0;display:-ms-flexbox;display:flex;position:absolute;-ms-flex-align:center;align-items:center;-ms-flex-pack:center;justify-content:center;outline:none;font-family:var(--ion-font-family, inherit);contain:strict;-ms-touch-action:none;touch-action:none;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;z-index:1001}.overlay-hidden.sc-ion-alert-ios-h{display:none}.alert-top.sc-ion-alert-ios-h{padding-top:50px;-ms-flex-align:start;align-items:flex-start}.alert-wrapper.sc-ion-alert-ios{display:-ms-flexbox;display:flex;-ms-flex-direction:column;flex-direction:column;width:var(--width);min-width:var(--min-width);max-width:var(--max-width);height:var(--height);min-height:var(--min-height);max-height:var(--max-height);background:var(--background);contain:content;opacity:0;z-index:10}.alert-title.sc-ion-alert-ios{margin-left:0;margin-right:0;margin-top:0;margin-bottom:0;padding-left:0;padding-right:0;padding-top:0;padding-bottom:0}.alert-sub-title.sc-ion-alert-ios{margin-left:0;margin-right:0;margin-top:5px;margin-bottom:0;padding-left:0;padding-right:0;padding-top:0;padding-bottom:0;font-weight:normal}.alert-message.sc-ion-alert-ios{-webkit-box-sizing:border-box;box-sizing:border-box;-webkit-overflow-scrolling:touch;overflow-y:auto;overscroll-behavior-y:contain}.alert-checkbox-group.sc-ion-alert-ios::-webkit-scrollbar,.alert-radio-group.sc-ion-alert-ios::-webkit-scrollbar,.alert-message.sc-ion-alert-ios::-webkit-scrollbar{display:none}.alert-input.sc-ion-alert-ios{padding-left:0;padding-right:0;padding-top:10px;padding-bottom:10px;width:100%;border:0;background:inherit;font:inherit;-webkit-box-sizing:border-box;box-sizing:border-box}.alert-button-group.sc-ion-alert-ios{display:-ms-flexbox;display:flex;-ms-flex-direction:row;flex-direction:row;width:100%}.alert-button-group-vertical.sc-ion-alert-ios{-ms-flex-direction:column;flex-direction:column;-ms-flex-wrap:nowrap;flex-wrap:nowrap}.alert-button.sc-ion-alert-ios{margin-left:0;margin-right:0;margin-top:0;margin-bottom:0;display:block;border:0;font-size:14px;line-height:20px;z-index:0}.alert-button.ion-focused.sc-ion-alert-ios,.alert-tappable.ion-focused.sc-ion-alert-ios{background:var(--ion-color-step-100, #e6e6e6)}.alert-button-inner.sc-ion-alert-ios{display:-ms-flexbox;display:flex;-ms-flex-flow:row nowrap;flex-flow:row nowrap;-ms-flex-negative:0;flex-shrink:0;-ms-flex-align:center;align-items:center;-ms-flex-pack:center;justify-content:center;width:100%;height:100%}.alert-input-disabled.sc-ion-alert-ios,.alert-checkbox-button-disabled.sc-ion-alert-ios .alert-button-inner.sc-ion-alert-ios,.alert-radio-button-disabled.sc-ion-alert-ios .alert-button-inner.sc-ion-alert-ios{cursor:default;opacity:0.5;pointer-events:none}.alert-tappable.sc-ion-alert-ios{margin-left:0;margin-right:0;margin-top:0;margin-bottom:0;padding-left:0;padding-right:0;padding-top:0;padding-bottom:0;display:-ms-flexbox;display:flex;width:100%;border:0;background:transparent;font-size:inherit;line-height:initial;text-align:start;-webkit-appearance:none;-moz-appearance:none;appearance:none;contain:strict}.alert-button.sc-ion-alert-ios,.alert-checkbox.sc-ion-alert-ios,.alert-input.sc-ion-alert-ios,.alert-radio.sc-ion-alert-ios{outline:none}.alert-radio-icon.sc-ion-alert-ios,.alert-checkbox-icon.sc-ion-alert-ios,.alert-checkbox-inner.sc-ion-alert-ios{-webkit-box-sizing:border-box;box-sizing:border-box}textarea.alert-input.sc-ion-alert-ios{min-height:37px;resize:none}.sc-ion-alert-ios-h{--background:var(--ion-overlay-background-color, var(--ion-color-step-100, #f9f9f9));--max-width:270px;--backdrop-opacity:var(--ion-backdrop-opacity, 0.3);font-size:14px}.alert-wrapper.sc-ion-alert-ios{border-radius:13px;-webkit-box-shadow:none;box-shadow:none;overflow:hidden}.alert-button.sc-ion-alert-ios .alert-button-inner.sc-ion-alert-ios{pointer-events:none}@supports ((-webkit-backdrop-filter: blur(0)) or (backdrop-filter: blur(0))){.alert-translucent.sc-ion-alert-ios-h .alert-wrapper.sc-ion-alert-ios{background:rgba(var(--ion-background-color-rgb, 255, 255, 255), 0.9);-webkit-backdrop-filter:saturate(180%) blur(20px);backdrop-filter:saturate(180%) blur(20px)}}.alert-head.sc-ion-alert-ios{padding-left:16px;padding-right:16px;padding-top:12px;padding-bottom:7px;text-align:center}@supports ((-webkit-margin-start: 0) or (margin-inline-start: 0)) or (-webkit-margin-start: 0){.alert-head.sc-ion-alert-ios{padding-left:unset;padding-right:unset;-webkit-padding-start:16px;padding-inline-start:16px;-webkit-padding-end:16px;padding-inline-end:16px}}.alert-title.sc-ion-alert-ios{margin-top:8px;color:var(--ion-text-color, #000);font-size:17px;font-weight:600}.alert-sub-title.sc-ion-alert-ios{color:var(--ion-color-step-600, #666666);font-size:14px}.alert-message.sc-ion-alert-ios,.alert-input-group.sc-ion-alert-ios{padding-left:16px;padding-right:16px;padding-top:0;padding-bottom:21px;color:var(--ion-text-color, #000);font-size:13px;text-align:center}@supports ((-webkit-margin-start: 0) or (margin-inline-start: 0)) or (-webkit-margin-start: 0){.alert-message.sc-ion-alert-ios,.alert-input-group.sc-ion-alert-ios{padding-left:unset;padding-right:unset;-webkit-padding-start:16px;padding-inline-start:16px;-webkit-padding-end:16px;padding-inline-end:16px}}.alert-message.sc-ion-alert-ios{max-height:240px}.alert-message.sc-ion-alert-ios:empty{padding-left:0;padding-right:0;padding-top:0;padding-bottom:12px}.alert-input.sc-ion-alert-ios{border-radius:4px;margin-top:10px;padding-left:6px;padding-right:6px;padding-top:6px;padding-bottom:6px;border:0.55px solid var(--ion-color-step-250, #bfbfbf);background-color:var(--ion-background-color, #fff);-webkit-appearance:none;-moz-appearance:none;appearance:none}@supports ((-webkit-margin-start: 0) or (margin-inline-start: 0)) or (-webkit-margin-start: 0){.alert-input.sc-ion-alert-ios{padding-left:unset;padding-right:unset;-webkit-padding-start:6px;padding-inline-start:6px;-webkit-padding-end:6px;padding-inline-end:6px}}.alert-input.sc-ion-alert-ios::-webkit-input-placeholder{color:var(--ion-placeholder-color, var(--ion-color-step-400, #999999));font-family:inherit;font-weight:inherit}.alert-input.sc-ion-alert-ios::-moz-placeholder{color:var(--ion-placeholder-color, var(--ion-color-step-400, #999999));font-family:inherit;font-weight:inherit}.alert-input.sc-ion-alert-ios:-ms-input-placeholder{color:var(--ion-placeholder-color, var(--ion-color-step-400, #999999));font-family:inherit;font-weight:inherit}.alert-input.sc-ion-alert-ios::-ms-input-placeholder{color:var(--ion-placeholder-color, var(--ion-color-step-400, #999999));font-family:inherit;font-weight:inherit}.alert-input.sc-ion-alert-ios::placeholder{color:var(--ion-placeholder-color, var(--ion-color-step-400, #999999));font-family:inherit;font-weight:inherit}.alert-input.sc-ion-alert-ios::-ms-clear{display:none}.alert-radio-group.sc-ion-alert-ios,.alert-checkbox-group.sc-ion-alert-ios{-ms-scroll-chaining:none;overscroll-behavior:contain;max-height:240px;border-top:0.55px solid rgba(var(--ion-text-color-rgb, 0, 0, 0), 0.2);overflow-y:auto;-webkit-overflow-scrolling:touch}.alert-tappable.sc-ion-alert-ios{height:44px}.alert-radio-label.sc-ion-alert-ios{padding-left:13px;padding-right:13px;padding-top:13px;padding-bottom:13px;-ms-flex:1;flex:1;-ms-flex-order:0;order:0;color:var(--ion-text-color, #000);text-overflow:ellipsis;white-space:nowrap;overflow:hidden}@supports ((-webkit-margin-start: 0) or (margin-inline-start: 0)) or (-webkit-margin-start: 0){.alert-radio-label.sc-ion-alert-ios{padding-left:unset;padding-right:unset;-webkit-padding-start:13px;padding-inline-start:13px;-webkit-padding-end:13px;padding-inline-end:13px}}[aria-checked=true].sc-ion-alert-ios .alert-radio-label.sc-ion-alert-ios{color:var(--ion-color-primary, #3880ff)}.alert-radio-icon.sc-ion-alert-ios{position:relative;-ms-flex-order:1;order:1;min-width:30px}[aria-checked=true].sc-ion-alert-ios .alert-radio-inner.sc-ion-alert-ios{left:7px;top:-7px;position:absolute;width:6px;height:12px;-webkit-transform:rotate(45deg);transform:rotate(45deg);border-width:2px;border-top-width:0;border-left-width:0;border-style:solid;border-color:var(--ion-color-primary, #3880ff)}[dir=rtl].sc-ion-alert-ios [aria-checked=true].sc-ion-alert-ios .alert-radio-inner.sc-ion-alert-ios,[dir=rtl].sc-ion-alert-ios-h [aria-checked=true].sc-ion-alert-ios .alert-radio-inner.sc-ion-alert-ios,[dir=rtl] .sc-ion-alert-ios-h [aria-checked=true].sc-ion-alert-ios .alert-radio-inner.sc-ion-alert-ios{left:unset;right:unset;right:7px}.alert-checkbox-label.sc-ion-alert-ios{padding-left:13px;padding-right:13px;padding-top:13px;padding-bottom:13px;-ms-flex:1;flex:1;color:var(--ion-text-color, #000);text-overflow:ellipsis;white-space:nowrap;overflow:hidden}@supports ((-webkit-margin-start: 0) or (margin-inline-start: 0)) or (-webkit-margin-start: 0){.alert-checkbox-label.sc-ion-alert-ios{padding-left:unset;padding-right:unset;-webkit-padding-start:13px;padding-inline-start:13px;-webkit-padding-end:13px;padding-inline-end:13px}}.alert-checkbox-icon.sc-ion-alert-ios{border-radius:50%;margin-left:16px;margin-right:6px;margin-top:10px;margin-bottom:10px;position:relative;width:24px;height:24px;border-width:1px;border-style:solid;border-color:var(--ion-item-border-color, var(--ion-border-color, var(--ion-color-step-250, #c8c7cc)));background-color:var(--ion-item-background, var(--ion-background-color, #fff));contain:strict}@supports ((-webkit-margin-start: 0) or (margin-inline-start: 0)) or (-webkit-margin-start: 0){.alert-checkbox-icon.sc-ion-alert-ios{margin-left:unset;margin-right:unset;-webkit-margin-start:16px;margin-inline-start:16px;-webkit-margin-end:6px;margin-inline-end:6px}}[aria-checked=true].sc-ion-alert-ios .alert-checkbox-icon.sc-ion-alert-ios{border-color:var(--ion-color-primary, #3880ff);background-color:var(--ion-color-primary, #3880ff)}[aria-checked=true].sc-ion-alert-ios .alert-checkbox-inner.sc-ion-alert-ios{left:9px;top:4px;position:absolute;width:5px;height:12px;-webkit-transform:rotate(45deg);transform:rotate(45deg);border-width:1px;border-top-width:0;border-left-width:0;border-style:solid;border-color:var(--ion-background-color, #fff)}[dir=rtl].sc-ion-alert-ios [aria-checked=true].sc-ion-alert-ios .alert-checkbox-inner.sc-ion-alert-ios,[dir=rtl].sc-ion-alert-ios-h [aria-checked=true].sc-ion-alert-ios .alert-checkbox-inner.sc-ion-alert-ios,[dir=rtl] .sc-ion-alert-ios-h [aria-checked=true].sc-ion-alert-ios .alert-checkbox-inner.sc-ion-alert-ios{left:unset;right:unset;right:9px}.alert-button-group.sc-ion-alert-ios{margin-right:-0.55px;-ms-flex-wrap:wrap;flex-wrap:wrap}@supports ((-webkit-margin-start: 0) or (margin-inline-start: 0)) or (-webkit-margin-start: 0){.alert-button-group.sc-ion-alert-ios{margin-right:unset;-webkit-margin-end:-0.55px;margin-inline-end:-0.55px}}.alert-button.sc-ion-alert-ios{margin-left:0;margin-right:0;margin-top:0;margin-bottom:0;border-radius:0;-ms-flex:1 1 auto;flex:1 1 auto;min-width:50%;height:44px;border-top:0.55px solid rgba(var(--ion-text-color-rgb, 0, 0, 0), 0.2);border-right:0.55px solid rgba(var(--ion-text-color-rgb, 0, 0, 0), 0.2);background-color:transparent;color:var(--ion-color-primary, #3880ff);font-size:17px;overflow:hidden}[dir=rtl].sc-ion-alert-ios .alert-button.sc-ion-alert-ios:first-child,[dir=rtl].sc-ion-alert-ios-h .alert-button.sc-ion-alert-ios:first-child,[dir=rtl] .sc-ion-alert-ios-h .alert-button.sc-ion-alert-ios:first-child{border-right:0}.alert-button.sc-ion-alert-ios:last-child{border-right:0;font-weight:bold}[dir=rtl].sc-ion-alert-ios .alert-button.sc-ion-alert-ios:last-child,[dir=rtl].sc-ion-alert-ios-h .alert-button.sc-ion-alert-ios:last-child,[dir=rtl] .sc-ion-alert-ios-h .alert-button.sc-ion-alert-ios:last-child{border-right:0.55px solid rgba(var(--ion-text-color-rgb, 0, 0, 0), 0.2)}.alert-button.ion-activated.sc-ion-alert-ios{background-color:rgba(var(--ion-text-color-rgb, 0, 0, 0), 0.1)}.alert-button-role-destructive.sc-ion-alert-ios,.alert-button-role-destructive.ion-activated.sc-ion-alert-ios,.alert-button-role-destructive.ion-focused.sc-ion-alert-ios{color:var(--ion-color-danger, #eb445a)}\";\nconst alertMdCss = \".sc-ion-alert-md-h{--min-width:250px;--width:auto;--min-height:auto;--height:auto;--max-height:90%;-moz-osx-font-smoothing:grayscale;-webkit-font-smoothing:antialiased;left:0;right:0;top:0;bottom:0;display:-ms-flexbox;display:flex;position:absolute;-ms-flex-align:center;align-items:center;-ms-flex-pack:center;justify-content:center;outline:none;font-family:var(--ion-font-family, inherit);contain:strict;-ms-touch-action:none;touch-action:none;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;z-index:1001}.overlay-hidden.sc-ion-alert-md-h{display:none}.alert-top.sc-ion-alert-md-h{padding-top:50px;-ms-flex-align:start;align-items:flex-start}.alert-wrapper.sc-ion-alert-md{display:-ms-flexbox;display:flex;-ms-flex-direction:column;flex-direction:column;width:var(--width);min-width:var(--min-width);max-width:var(--max-width);height:var(--height);min-height:var(--min-height);max-height:var(--max-height);background:var(--background);contain:content;opacity:0;z-index:10}.alert-title.sc-ion-alert-md{margin-left:0;margin-right:0;margin-top:0;margin-bottom:0;padding-left:0;padding-right:0;padding-top:0;padding-bottom:0}.alert-sub-title.sc-ion-alert-md{margin-left:0;margin-right:0;margin-top:5px;margin-bottom:0;padding-left:0;padding-right:0;padding-top:0;padding-bottom:0;font-weight:normal}.alert-message.sc-ion-alert-md{-webkit-box-sizing:border-box;box-sizing:border-box;-webkit-overflow-scrolling:touch;overflow-y:auto;overscroll-behavior-y:contain}.alert-checkbox-group.sc-ion-alert-md::-webkit-scrollbar,.alert-radio-group.sc-ion-alert-md::-webkit-scrollbar,.alert-message.sc-ion-alert-md::-webkit-scrollbar{display:none}.alert-input.sc-ion-alert-md{padding-left:0;padding-right:0;padding-top:10px;padding-bottom:10px;width:100%;border:0;background:inherit;font:inherit;-webkit-box-sizing:border-box;box-sizing:border-box}.alert-button-group.sc-ion-alert-md{display:-ms-flexbox;display:flex;-ms-flex-direction:row;flex-direction:row;width:100%}.alert-button-group-vertical.sc-ion-alert-md{-ms-flex-direction:column;flex-direction:column;-ms-flex-wrap:nowrap;flex-wrap:nowrap}.alert-button.sc-ion-alert-md{margin-left:0;margin-right:0;margin-top:0;margin-bottom:0;display:block;border:0;font-size:14px;line-height:20px;z-index:0}.alert-button.ion-focused.sc-ion-alert-md,.alert-tappable.ion-focused.sc-ion-alert-md{background:var(--ion-color-step-100, #e6e6e6)}.alert-button-inner.sc-ion-alert-md{display:-ms-flexbox;display:flex;-ms-flex-flow:row nowrap;flex-flow:row nowrap;-ms-flex-negative:0;flex-shrink:0;-ms-flex-align:center;align-items:center;-ms-flex-pack:center;justify-content:center;width:100%;height:100%}.alert-input-disabled.sc-ion-alert-md,.alert-checkbox-button-disabled.sc-ion-alert-md .alert-button-inner.sc-ion-alert-md,.alert-radio-button-disabled.sc-ion-alert-md .alert-button-inner.sc-ion-alert-md{cursor:default;opacity:0.5;pointer-events:none}.alert-tappable.sc-ion-alert-md{margin-left:0;margin-right:0;margin-top:0;margin-bottom:0;padding-left:0;padding-right:0;padding-top:0;padding-bottom:0;display:-ms-flexbox;display:flex;width:100%;border:0;background:transparent;font-size:inherit;line-height:initial;text-align:start;-webkit-appearance:none;-moz-appearance:none;appearance:none;contain:strict}.alert-button.sc-ion-alert-md,.alert-checkbox.sc-ion-alert-md,.alert-input.sc-ion-alert-md,.alert-radio.sc-ion-alert-md{outline:none}.alert-radio-icon.sc-ion-alert-md,.alert-checkbox-icon.sc-ion-alert-md,.alert-checkbox-inner.sc-ion-alert-md{-webkit-box-sizing:border-box;box-sizing:border-box}textarea.alert-input.sc-ion-alert-md{min-height:37px;resize:none}.sc-ion-alert-md-h{--background:var(--ion-overlay-background-color, var(--ion-background-color, #fff));--max-width:280px;--backdrop-opacity:var(--ion-backdrop-opacity, 0.32);font-size:14px}.alert-wrapper.sc-ion-alert-md{border-radius:4px;-webkit-box-shadow:0 11px 15px -7px rgba(0, 0, 0, 0.2), 0 24px 38px 3px rgba(0, 0, 0, 0.14), 0 9px 46px 8px rgba(0, 0, 0, 0.12);box-shadow:0 11px 15px -7px rgba(0, 0, 0, 0.2), 0 24px 38px 3px rgba(0, 0, 0, 0.14), 0 9px 46px 8px rgba(0, 0, 0, 0.12)}.alert-head.sc-ion-alert-md{padding-left:23px;padding-right:23px;padding-top:20px;padding-bottom:15px;text-align:start}@supports ((-webkit-margin-start: 0) or (margin-inline-start: 0)) or (-webkit-margin-start: 0){.alert-head.sc-ion-alert-md{padding-left:unset;padding-right:unset;-webkit-padding-start:23px;padding-inline-start:23px;-webkit-padding-end:23px;padding-inline-end:23px}}.alert-title.sc-ion-alert-md{color:var(--ion-text-color, #000);font-size:20px;font-weight:500}.alert-sub-title.sc-ion-alert-md{color:var(--ion-text-color, #000);font-size:16px}.alert-message.sc-ion-alert-md,.alert-input-group.sc-ion-alert-md{padding-left:24px;padding-right:24px;padding-top:20px;padding-bottom:20px;color:var(--ion-color-step-550, #737373)}@supports ((-webkit-margin-start: 0) or (margin-inline-start: 0)) or (-webkit-margin-start: 0){.alert-message.sc-ion-alert-md,.alert-input-group.sc-ion-alert-md{padding-left:unset;padding-right:unset;-webkit-padding-start:24px;padding-inline-start:24px;-webkit-padding-end:24px;padding-inline-end:24px}}.alert-message.sc-ion-alert-md{max-height:266px;font-size:16px}.alert-message.sc-ion-alert-md:empty{padding-left:0;padding-right:0;padding-top:0;padding-bottom:0}.alert-head.sc-ion-alert-md+.alert-message.sc-ion-alert-md{padding-top:0}.alert-input.sc-ion-alert-md{margin-left:0;margin-right:0;margin-top:5px;margin-bottom:5px;border-bottom:1px solid var(--ion-color-step-150, #d9d9d9);color:var(--ion-text-color, #000)}.alert-input.sc-ion-alert-md::-webkit-input-placeholder{color:var(--ion-placeholder-color, var(--ion-color-step-400, #999999));font-family:inherit;font-weight:inherit}.alert-input.sc-ion-alert-md::-moz-placeholder{color:var(--ion-placeholder-color, var(--ion-color-step-400, #999999));font-family:inherit;font-weight:inherit}.alert-input.sc-ion-alert-md:-ms-input-placeholder{color:var(--ion-placeholder-color, var(--ion-color-step-400, #999999));font-family:inherit;font-weight:inherit}.alert-input.sc-ion-alert-md::-ms-input-placeholder{color:var(--ion-placeholder-color, var(--ion-color-step-400, #999999));font-family:inherit;font-weight:inherit}.alert-input.sc-ion-alert-md::placeholder{color:var(--ion-placeholder-color, var(--ion-color-step-400, #999999));font-family:inherit;font-weight:inherit}.alert-input.sc-ion-alert-md::-ms-clear{display:none}.alert-input.sc-ion-alert-md:focus{margin-bottom:4px;border-bottom:2px solid var(--ion-color-primary, #3880ff)}.alert-radio-group.sc-ion-alert-md,.alert-checkbox-group.sc-ion-alert-md{position:relative;max-height:266px;border-top:1px solid var(--ion-color-step-150, #d9d9d9);border-bottom:1px solid var(--ion-color-step-150, #d9d9d9);overflow:auto}.alert-tappable.sc-ion-alert-md{position:relative;height:48px;overflow:hidden}.alert-radio-label.sc-ion-alert-md{padding-left:52px;padding-right:26px;padding-top:13px;padding-bottom:13px;-ms-flex:1;flex:1;color:var(--ion-color-step-850, #262626);font-size:16px;text-overflow:ellipsis;white-space:nowrap;overflow:hidden}@supports ((-webkit-margin-start: 0) or (margin-inline-start: 0)) or (-webkit-margin-start: 0){.alert-radio-label.sc-ion-alert-md{padding-left:unset;padding-right:unset;-webkit-padding-start:52px;padding-inline-start:52px;-webkit-padding-end:26px;padding-inline-end:26px}}.alert-radio-icon.sc-ion-alert-md{left:26px;top:0;border-radius:50%;display:block;position:relative;width:20px;height:20px;border-width:2px;border-style:solid;border-color:var(--ion-color-step-550, #737373)}[dir=rtl].sc-ion-alert-md .alert-radio-icon.sc-ion-alert-md,[dir=rtl].sc-ion-alert-md-h .alert-radio-icon.sc-ion-alert-md,[dir=rtl] .sc-ion-alert-md-h .alert-radio-icon.sc-ion-alert-md{left:unset;right:unset;right:26px}.alert-radio-inner.sc-ion-alert-md{left:3px;top:3px;border-radius:50%;position:absolute;width:10px;height:10px;-webkit-transform:scale3d(0, 0, 0);transform:scale3d(0, 0, 0);-webkit-transition:-webkit-transform 280ms cubic-bezier(0.4, 0, 0.2, 1);transition:-webkit-transform 280ms cubic-bezier(0.4, 0, 0.2, 1);transition:transform 280ms cubic-bezier(0.4, 0, 0.2, 1);transition:transform 280ms cubic-bezier(0.4, 0, 0.2, 1), -webkit-transform 280ms cubic-bezier(0.4, 0, 0.2, 1);background-color:var(--ion-color-primary, #3880ff)}[dir=rtl].sc-ion-alert-md .alert-radio-inner.sc-ion-alert-md,[dir=rtl].sc-ion-alert-md-h .alert-radio-inner.sc-ion-alert-md,[dir=rtl] .sc-ion-alert-md-h .alert-radio-inner.sc-ion-alert-md{left:unset;right:unset;right:3px}[aria-checked=true].sc-ion-alert-md .alert-radio-label.sc-ion-alert-md{color:var(--ion-color-step-850, #262626)}[aria-checked=true].sc-ion-alert-md .alert-radio-icon.sc-ion-alert-md{border-color:var(--ion-color-primary, #3880ff)}[aria-checked=true].sc-ion-alert-md .alert-radio-inner.sc-ion-alert-md{-webkit-transform:scale3d(1, 1, 1);transform:scale3d(1, 1, 1)}.alert-checkbox-label.sc-ion-alert-md{padding-left:53px;padding-right:26px;padding-top:13px;padding-bottom:13px;-ms-flex:1;flex:1;color:var(--ion-color-step-850, #262626);font-size:16px;text-overflow:ellipsis;white-space:nowrap;overflow:hidden}@supports ((-webkit-margin-start: 0) or (margin-inline-start: 0)) or (-webkit-margin-start: 0){.alert-checkbox-label.sc-ion-alert-md{padding-left:unset;padding-right:unset;-webkit-padding-start:53px;padding-inline-start:53px;-webkit-padding-end:26px;padding-inline-end:26px}}.alert-checkbox-icon.sc-ion-alert-md{left:26px;top:0;border-radius:2px;position:relative;width:16px;height:16px;border-width:2px;border-style:solid;border-color:var(--ion-color-step-550, #737373);contain:strict}[dir=rtl].sc-ion-alert-md .alert-checkbox-icon.sc-ion-alert-md,[dir=rtl].sc-ion-alert-md-h .alert-checkbox-icon.sc-ion-alert-md,[dir=rtl] .sc-ion-alert-md-h .alert-checkbox-icon.sc-ion-alert-md{left:unset;right:unset;right:26px}[aria-checked=true].sc-ion-alert-md .alert-checkbox-icon.sc-ion-alert-md{border-color:var(--ion-color-primary, #3880ff);background-color:var(--ion-color-primary, #3880ff)}[aria-checked=true].sc-ion-alert-md .alert-checkbox-inner.sc-ion-alert-md{left:3px;top:0;position:absolute;width:6px;height:10px;-webkit-transform:rotate(45deg);transform:rotate(45deg);border-width:2px;border-top-width:0;border-left-width:0;border-style:solid;border-color:var(--ion-color-primary-contrast, #fff)}[dir=rtl].sc-ion-alert-md [aria-checked=true].sc-ion-alert-md .alert-checkbox-inner.sc-ion-alert-md,[dir=rtl].sc-ion-alert-md-h [aria-checked=true].sc-ion-alert-md .alert-checkbox-inner.sc-ion-alert-md,[dir=rtl] .sc-ion-alert-md-h [aria-checked=true].sc-ion-alert-md .alert-checkbox-inner.sc-ion-alert-md{left:unset;right:unset;right:3px}.alert-button-group.sc-ion-alert-md{padding-left:8px;padding-right:8px;padding-top:8px;padding-bottom:8px;-webkit-box-sizing:border-box;box-sizing:border-box;-ms-flex-wrap:wrap-reverse;flex-wrap:wrap-reverse;-ms-flex-pack:end;justify-content:flex-end}@supports ((-webkit-margin-start: 0) or (margin-inline-start: 0)) or (-webkit-margin-start: 0){.alert-button-group.sc-ion-alert-md{padding-left:unset;padding-right:unset;-webkit-padding-start:8px;padding-inline-start:8px;-webkit-padding-end:8px;padding-inline-end:8px}}.alert-button.sc-ion-alert-md{border-radius:2px;margin-left:0;margin-right:8px;margin-top:0;margin-bottom:0;padding-left:10px;padding-right:10px;padding-top:10px;padding-bottom:10px;position:relative;background-color:transparent;color:var(--ion-color-primary, #3880ff);font-weight:500;text-align:end;text-transform:uppercase;overflow:hidden}@supports ((-webkit-margin-start: 0) or (margin-inline-start: 0)) or (-webkit-margin-start: 0){.alert-button.sc-ion-alert-md{margin-left:unset;margin-right:unset;-webkit-margin-start:0;margin-inline-start:0;-webkit-margin-end:8px;margin-inline-end:8px}}@supports ((-webkit-margin-start: 0) or (margin-inline-start: 0)) or (-webkit-margin-start: 0){.alert-button.sc-ion-alert-md{padding-left:unset;padding-right:unset;-webkit-padding-start:10px;padding-inline-start:10px;-webkit-padding-end:10px;padding-inline-end:10px}}.alert-button-inner.sc-ion-alert-md{-ms-flex-pack:end;justify-content:flex-end}\";\nconst Alert = /*@__PURE__*/(0,_stencil_core_internal_client__WEBPACK_IMPORTED_MODULE_5__.proxyCustomElement)(class extends _stencil_core_internal_client__WEBPACK_IMPORTED_MODULE_5__.HTMLElement {\n constructor() {\n super();\n this.__registerHost();\n this.didPresent = (0,_stencil_core_internal_client__WEBPACK_IMPORTED_MODULE_5__.createEvent)(this, \"ionAlertDidPresent\", 7);\n this.willPresent = (0,_stencil_core_internal_client__WEBPACK_IMPORTED_MODULE_5__.createEvent)(this, \"ionAlertWillPresent\", 7);\n this.willDismiss = (0,_stencil_core_internal_client__WEBPACK_IMPORTED_MODULE_5__.createEvent)(this, \"ionAlertWillDismiss\", 7);\n this.didDismiss = (0,_stencil_core_internal_client__WEBPACK_IMPORTED_MODULE_5__.createEvent)(this, \"ionAlertDidDismiss\", 7);\n this.processedInputs = [];\n this.processedButtons = [];\n this.presented = false;\n /**\n * If `true`, the keyboard will be automatically dismissed when the overlay is presented.\n */\n this.keyboardClose = true;\n /**\n * Array of buttons to be added to the alert.\n */\n this.buttons = [];\n /**\n * Array of input to show in the alert.\n */\n this.inputs = [];\n /**\n * If `true`, the alert will be dismissed when the backdrop is clicked.\n */\n this.backdropDismiss = true;\n /**\n * If `true`, the alert will be translucent.\n * Only applies when the mode is `\"ios\"` and the device supports\n * [`backdrop-filter`](https://developer.mozilla.org/en-US/docs/Web/CSS/backdrop-filter#Browser_compatibility).\n */\n this.translucent = false;\n /**\n * If `true`, the alert will animate.\n */\n this.animated = true;\n this.onBackdropTap = () => {\n this.dismiss(undefined, _overlays_js__WEBPACK_IMPORTED_MODULE_8__.B);\n };\n this.dispatchCancelHandler = ev => {\n const role = ev.detail.role;\n if ((0,_overlays_js__WEBPACK_IMPORTED_MODULE_8__.j)(role)) {\n const cancelButton = this.processedButtons.find(b => b.role === 'cancel');\n this.callButtonHandler(cancelButton);\n }\n };\n }\n onKeydown(ev) {\n const inputTypes = new Set(this.processedInputs.map(i => i.type));\n // The only inputs we want to navigate between using arrow keys are the radios\n // ignore the keydown event if it is not on a radio button\n if (!inputTypes.has('radio') || ev.target && !this.el.contains(ev.target) || ev.target.classList.contains('alert-button')) {\n return;\n }\n // Get all radios inside of the radio group and then\n // filter out disabled radios since we need to skip those\n const query = this.el.querySelectorAll('.alert-radio');\n const radios = Array.from(query).filter(radio => !radio.disabled);\n // The focused radio is the one that shares the same id as\n // the event target\n const index = radios.findIndex(radio => radio.id === ev.target.id);\n // We need to know what the next radio element should\n // be in order to change the focus\n let nextEl;\n // If hitting arrow down or arrow right, move to the next radio\n // If we're on the last radio, move to the first radio\n if (['ArrowDown', 'ArrowRight'].includes(ev.code)) {\n nextEl = index === radios.length - 1 ? radios[0] : radios[index + 1];\n }\n // If hitting arrow up or arrow left, move to the previous radio\n // If we're on the first radio, move to the last radio\n if (['ArrowUp', 'ArrowLeft'].includes(ev.code)) {\n nextEl = index === 0 ? radios[radios.length - 1] : radios[index - 1];\n }\n if (nextEl && radios.includes(nextEl)) {\n const nextProcessed = this.processedInputs.find(input => input.id === (nextEl === null || nextEl === void 0 ? void 0 : nextEl.id));\n if (nextProcessed) {\n this.rbClick(nextProcessed);\n nextEl.focus();\n }\n }\n }\n buttonsChanged() {\n const buttons = this.buttons;\n this.processedButtons = buttons.map(btn => {\n return typeof btn === 'string' ? {\n text: btn,\n role: btn.toLowerCase() === 'cancel' ? 'cancel' : undefined\n } : btn;\n });\n }\n inputsChanged() {\n const inputs = this.inputs;\n // Get the first input that is not disabled and the checked one\n // If an enabled checked input exists, set it to be the focusable input\n // otherwise we default to focus the first input\n // This will only be used when the input is type radio\n const first = inputs.find(input => !input.disabled);\n const checked = inputs.find(input => input.checked && !input.disabled);\n const focusable = checked || first;\n // An alert can be created with several different inputs. Radios,\n // checkboxes and inputs are all accepted, but they cannot be mixed.\n const inputTypes = new Set(inputs.map(i => i.type));\n if (inputTypes.has('checkbox') && inputTypes.has('radio')) {\n console.warn(`Alert cannot mix input types: ${Array.from(inputTypes.values()).join('/')}. Please see alert docs for more info.`);\n }\n this.inputType = inputTypes.values().next().value;\n this.processedInputs = inputs.map((i, index) => {\n var _a;\n return {\n type: i.type || 'text',\n name: i.name || `${index}`,\n placeholder: i.placeholder || '',\n value: i.value,\n label: i.label,\n checked: !!i.checked,\n disabled: !!i.disabled,\n id: i.id || `alert-input-${this.overlayIndex}-${index}`,\n handler: i.handler,\n min: i.min,\n max: i.max,\n cssClass: (_a = i.cssClass) !== null && _a !== void 0 ? _a : '',\n attributes: i.attributes || {},\n tabindex: i.type === 'radio' && i !== focusable ? -1 : 0\n };\n });\n }\n connectedCallback() {\n (0,_overlays_js__WEBPACK_IMPORTED_MODULE_8__.d)(this.el);\n }\n componentWillLoad() {\n this.inputsChanged();\n this.buttonsChanged();\n }\n disconnectedCallback() {\n if (this.gesture) {\n this.gesture.destroy();\n this.gesture = undefined;\n }\n }\n componentDidLoad() {\n /**\n * Do not create gesture if:\n * 1. A gesture already exists\n * 2. App is running in MD mode\n * 3. A wrapper ref does not exist\n */\n if (this.gesture || (0,_ionic_global_js__WEBPACK_IMPORTED_MODULE_6__.b)(this) === 'md' || !this.wrapperEl) {\n return;\n }\n this.gesture = (0,_button_active_js__WEBPACK_IMPORTED_MODULE_7__.c)(this.wrapperEl, refEl => refEl.classList.contains('alert-button'));\n this.gesture.enable(true);\n }\n /**\n * Present the alert overlay after it has been created.\n */\n present() {\n return (0,_overlays_js__WEBPACK_IMPORTED_MODULE_8__.e)(this, 'alertEnter', iosEnterAnimation, mdEnterAnimation);\n }\n /**\n * Dismiss the alert overlay after it has been presented.\n *\n * @param data Any data to emit in the dismiss events.\n * @param role The role of the element that is dismissing the alert.\n * This can be useful in a button handler for determining which button was\n * clicked to dismiss the alert.\n * Some examples include: ``\"cancel\"`, `\"destructive\"`, \"selected\"`, and `\"backdrop\"`.\n */\n dismiss(data, role) {\n return (0,_overlays_js__WEBPACK_IMPORTED_MODULE_8__.f)(this, data, role, 'alertLeave', iosLeaveAnimation, mdLeaveAnimation);\n }\n /**\n * Returns a promise that resolves when the alert did dismiss.\n */\n onDidDismiss() {\n return (0,_overlays_js__WEBPACK_IMPORTED_MODULE_8__.g)(this.el, 'ionAlertDidDismiss');\n }\n /**\n * Returns a promise that resolves when the alert will dismiss.\n */\n onWillDismiss() {\n return (0,_overlays_js__WEBPACK_IMPORTED_MODULE_8__.g)(this.el, 'ionAlertWillDismiss');\n }\n rbClick(selectedInput) {\n for (const input of this.processedInputs) {\n input.checked = input === selectedInput;\n input.tabindex = input === selectedInput ? 0 : -1;\n }\n this.activeId = selectedInput.id;\n (0,_overlays_js__WEBPACK_IMPORTED_MODULE_8__.s)(selectedInput.handler, selectedInput);\n (0,_stencil_core_internal_client__WEBPACK_IMPORTED_MODULE_5__.forceUpdate)(this);\n }\n cbClick(selectedInput) {\n selectedInput.checked = !selectedInput.checked;\n (0,_overlays_js__WEBPACK_IMPORTED_MODULE_8__.s)(selectedInput.handler, selectedInput);\n (0,_stencil_core_internal_client__WEBPACK_IMPORTED_MODULE_5__.forceUpdate)(this);\n }\n async buttonClick(button) {\n const role = button.role;\n const values = this.getValues();\n if ((0,_overlays_js__WEBPACK_IMPORTED_MODULE_8__.j)(role)) {\n return this.dismiss({\n values\n }, role);\n }\n const returnData = await this.callButtonHandler(button, values);\n if (returnData !== false) {\n return this.dismiss(Object.assign({\n values\n }, returnData), button.role);\n }\n return false;\n }\n async callButtonHandler(button, data) {\n if (button === null || button === void 0 ? void 0 : button.handler) {\n // a handler has been provided, execute it\n // pass the handler the values from the inputs\n const returnData = await (0,_overlays_js__WEBPACK_IMPORTED_MODULE_8__.s)(button.handler, data);\n if (returnData === false) {\n // if the return value of the handler is false then do not dismiss\n return false;\n }\n if (typeof returnData === 'object') {\n return returnData;\n }\n }\n return {};\n }\n getValues() {\n if (this.processedInputs.length === 0) {\n // this is an alert without any options/inputs at all\n return undefined;\n }\n if (this.inputType === 'radio') {\n // this is an alert with radio buttons (single value select)\n // return the one value which is checked, otherwise undefined\n const checkedInput = this.processedInputs.find(i => !!i.checked);\n return checkedInput ? checkedInput.value : undefined;\n }\n if (this.inputType === 'checkbox') {\n // this is an alert with checkboxes (multiple value select)\n // return an array of all the checked values\n return this.processedInputs.filter(i => i.checked).map(i => i.value);\n }\n // this is an alert with text inputs\n // return an object of all the values with the input name as the key\n const values = {};\n this.processedInputs.forEach(i => {\n values[i.name] = i.value || '';\n });\n return values;\n }\n renderAlertInputs() {\n switch (this.inputType) {\n case 'checkbox':\n return this.renderCheckbox();\n case 'radio':\n return this.renderRadio();\n default:\n return this.renderInput();\n }\n }\n renderCheckbox() {\n const inputs = this.processedInputs;\n const mode = (0,_ionic_global_js__WEBPACK_IMPORTED_MODULE_6__.b)(this);\n if (inputs.length === 0) {\n return null;\n }\n return (0,_stencil_core_internal_client__WEBPACK_IMPORTED_MODULE_5__.h)(\"div\", {\n class: \"alert-checkbox-group\"\n }, inputs.map(i => (0,_stencil_core_internal_client__WEBPACK_IMPORTED_MODULE_5__.h)(\"button\", {\n type: \"button\",\n onClick: () => this.cbClick(i),\n \"aria-checked\": `${i.checked}`,\n id: i.id,\n disabled: i.disabled,\n tabIndex: i.tabindex,\n role: \"checkbox\",\n class: Object.assign(Object.assign({}, (0,_theme_js__WEBPACK_IMPORTED_MODULE_10__.g)(i.cssClass)), {\n 'alert-tappable': true,\n 'alert-checkbox': true,\n 'alert-checkbox-button': true,\n 'ion-focusable': true,\n 'alert-checkbox-button-disabled': i.disabled || false\n })\n }, (0,_stencil_core_internal_client__WEBPACK_IMPORTED_MODULE_5__.h)(\"div\", {\n class: \"alert-button-inner\"\n }, (0,_stencil_core_internal_client__WEBPACK_IMPORTED_MODULE_5__.h)(\"div\", {\n class: \"alert-checkbox-icon\"\n }, (0,_stencil_core_internal_client__WEBPACK_IMPORTED_MODULE_5__.h)(\"div\", {\n class: \"alert-checkbox-inner\"\n })), (0,_stencil_core_internal_client__WEBPACK_IMPORTED_MODULE_5__.h)(\"div\", {\n class: \"alert-checkbox-label\"\n }, i.label)), mode === 'md' && (0,_stencil_core_internal_client__WEBPACK_IMPORTED_MODULE_5__.h)(\"ion-ripple-effect\", null))));\n }\n renderRadio() {\n const inputs = this.processedInputs;\n if (inputs.length === 0) {\n return null;\n }\n return (0,_stencil_core_internal_client__WEBPACK_IMPORTED_MODULE_5__.h)(\"div\", {\n class: \"alert-radio-group\",\n role: \"radiogroup\",\n \"aria-activedescendant\": this.activeId\n }, inputs.map(i => (0,_stencil_core_internal_client__WEBPACK_IMPORTED_MODULE_5__.h)(\"button\", {\n type: \"button\",\n onClick: () => this.rbClick(i),\n \"aria-checked\": `${i.checked}`,\n disabled: i.disabled,\n id: i.id,\n tabIndex: i.tabindex,\n class: Object.assign(Object.assign({}, (0,_theme_js__WEBPACK_IMPORTED_MODULE_10__.g)(i.cssClass)), {\n 'alert-radio-button': true,\n 'alert-tappable': true,\n 'alert-radio': true,\n 'ion-focusable': true,\n 'alert-radio-button-disabled': i.disabled || false\n }),\n role: \"radio\"\n }, (0,_stencil_core_internal_client__WEBPACK_IMPORTED_MODULE_5__.h)(\"div\", {\n class: \"alert-button-inner\"\n }, (0,_stencil_core_internal_client__WEBPACK_IMPORTED_MODULE_5__.h)(\"div\", {\n class: \"alert-radio-icon\"\n }, (0,_stencil_core_internal_client__WEBPACK_IMPORTED_MODULE_5__.h)(\"div\", {\n class: \"alert-radio-inner\"\n })), (0,_stencil_core_internal_client__WEBPACK_IMPORTED_MODULE_5__.h)(\"div\", {\n class: \"alert-radio-label\"\n }, i.label)))));\n }\n renderInput() {\n const inputs = this.processedInputs;\n if (inputs.length === 0) {\n return null;\n }\n return (0,_stencil_core_internal_client__WEBPACK_IMPORTED_MODULE_5__.h)(\"div\", {\n class: \"alert-input-group\"\n }, inputs.map(i => {\n var _a, _b, _c, _d;\n if (i.type === 'textarea') {\n return (0,_stencil_core_internal_client__WEBPACK_IMPORTED_MODULE_5__.h)(\"div\", {\n class: \"alert-input-wrapper\"\n }, (0,_stencil_core_internal_client__WEBPACK_IMPORTED_MODULE_5__.h)(\"textarea\", Object.assign({\n placeholder: i.placeholder,\n value: i.value,\n id: i.id,\n tabIndex: i.tabindex\n }, i.attributes, {\n disabled: (_b = (_a = i.attributes) === null || _a === void 0 ? void 0 : _a.disabled) !== null && _b !== void 0 ? _b : i.disabled,\n class: inputClass(i),\n onInput: e => {\n var _a;\n i.value = e.target.value;\n if ((_a = i.attributes) === null || _a === void 0 ? void 0 : _a.onInput) {\n i.attributes.onInput(e);\n }\n }\n })));\n } else {\n return (0,_stencil_core_internal_client__WEBPACK_IMPORTED_MODULE_5__.h)(\"div\", {\n class: \"alert-input-wrapper\"\n }, (0,_stencil_core_internal_client__WEBPACK_IMPORTED_MODULE_5__.h)(\"input\", Object.assign({\n placeholder: i.placeholder,\n type: i.type,\n min: i.min,\n max: i.max,\n value: i.value,\n id: i.id,\n tabIndex: i.tabindex\n }, i.attributes, {\n disabled: (_d = (_c = i.attributes) === null || _c === void 0 ? void 0 : _c.disabled) !== null && _d !== void 0 ? _d : i.disabled,\n class: inputClass(i),\n onInput: e => {\n var _a;\n i.value = e.target.value;\n if ((_a = i.attributes) === null || _a === void 0 ? void 0 : _a.onInput) {\n i.attributes.onInput(e);\n }\n }\n })));\n }\n }));\n }\n renderAlertButtons() {\n const buttons = this.processedButtons;\n const mode = (0,_ionic_global_js__WEBPACK_IMPORTED_MODULE_6__.b)(this);\n const alertButtonGroupClass = {\n 'alert-button-group': true,\n 'alert-button-group-vertical': buttons.length > 2\n };\n return (0,_stencil_core_internal_client__WEBPACK_IMPORTED_MODULE_5__.h)(\"div\", {\n class: alertButtonGroupClass\n }, buttons.map(button => (0,_stencil_core_internal_client__WEBPACK_IMPORTED_MODULE_5__.h)(\"button\", {\n type: \"button\",\n id: button.id,\n class: buttonClass(button),\n tabIndex: 0,\n onClick: () => this.buttonClick(button)\n }, (0,_stencil_core_internal_client__WEBPACK_IMPORTED_MODULE_5__.h)(\"span\", {\n class: \"alert-button-inner\"\n }, button.text), mode === 'md' && (0,_stencil_core_internal_client__WEBPACK_IMPORTED_MODULE_5__.h)(\"ion-ripple-effect\", null))));\n }\n render() {\n const {\n overlayIndex,\n header,\n subHeader,\n message,\n htmlAttributes\n } = this;\n const mode = (0,_ionic_global_js__WEBPACK_IMPORTED_MODULE_6__.b)(this);\n const hdrId = `alert-${overlayIndex}-hdr`;\n const subHdrId = `alert-${overlayIndex}-sub-hdr`;\n const msgId = `alert-${overlayIndex}-msg`;\n const role = this.inputs.length > 0 || this.buttons.length > 0 ? 'alertdialog' : 'alert';\n /**\n * If the header is defined, use that. Otherwise, fall back to the subHeader.\n * If neither is defined, don't set aria-labelledby.\n */\n const ariaLabelledBy = header ? hdrId : subHeader ? subHdrId : null;\n return (0,_stencil_core_internal_client__WEBPACK_IMPORTED_MODULE_5__.h)(_stencil_core_internal_client__WEBPACK_IMPORTED_MODULE_5__.Host, Object.assign({\n role: role,\n \"aria-modal\": \"true\",\n \"aria-labelledby\": ariaLabelledBy,\n \"aria-describedby\": message !== undefined ? msgId : null,\n tabindex: \"-1\"\n }, htmlAttributes, {\n style: {\n zIndex: `${20000 + overlayIndex}`\n },\n class: Object.assign(Object.assign({}, (0,_theme_js__WEBPACK_IMPORTED_MODULE_10__.g)(this.cssClass)), {\n [mode]: true,\n 'overlay-hidden': true,\n 'alert-translucent': this.translucent\n }),\n onIonAlertWillDismiss: this.dispatchCancelHandler,\n onIonBackdropTap: this.onBackdropTap\n }), (0,_stencil_core_internal_client__WEBPACK_IMPORTED_MODULE_5__.h)(\"ion-backdrop\", {\n tappable: this.backdropDismiss\n }), (0,_stencil_core_internal_client__WEBPACK_IMPORTED_MODULE_5__.h)(\"div\", {\n tabindex: \"0\"\n }), (0,_stencil_core_internal_client__WEBPACK_IMPORTED_MODULE_5__.h)(\"div\", {\n class: \"alert-wrapper ion-overlay-wrapper\",\n ref: el => this.wrapperEl = el\n }, (0,_stencil_core_internal_client__WEBPACK_IMPORTED_MODULE_5__.h)(\"div\", {\n class: \"alert-head\"\n }, header && (0,_stencil_core_internal_client__WEBPACK_IMPORTED_MODULE_5__.h)(\"h2\", {\n id: hdrId,\n class: \"alert-title\"\n }, header), subHeader && (0,_stencil_core_internal_client__WEBPACK_IMPORTED_MODULE_5__.h)(\"h2\", {\n id: subHdrId,\n class: \"alert-sub-title\"\n }, subHeader)), (0,_stencil_core_internal_client__WEBPACK_IMPORTED_MODULE_5__.h)(\"div\", {\n id: msgId,\n class: \"alert-message\",\n innerHTML: (0,_index3_js__WEBPACK_IMPORTED_MODULE_9__.s)(message)\n }), this.renderAlertInputs(), this.renderAlertButtons()), (0,_stencil_core_internal_client__WEBPACK_IMPORTED_MODULE_5__.h)(\"div\", {\n tabindex: \"0\"\n }));\n }\n get el() {\n return this;\n }\n static get watchers() {\n return {\n \"buttons\": [\"buttonsChanged\"],\n \"inputs\": [\"inputsChanged\"]\n };\n }\n static get style() {\n return {\n ios: alertIosCss,\n md: alertMdCss\n };\n }\n}, [34, \"ion-alert\", {\n \"overlayIndex\": [2, \"overlay-index\"],\n \"keyboardClose\": [4, \"keyboard-close\"],\n \"enterAnimation\": [16],\n \"leaveAnimation\": [16],\n \"cssClass\": [1, \"css-class\"],\n \"header\": [1],\n \"subHeader\": [1, \"sub-header\"],\n \"message\": [1],\n \"buttons\": [16],\n \"inputs\": [1040],\n \"backdropDismiss\": [4, \"backdrop-dismiss\"],\n \"translucent\": [4],\n \"animated\": [4],\n \"htmlAttributes\": [16],\n \"present\": [64],\n \"dismiss\": [64],\n \"onDidDismiss\": [64],\n \"onWillDismiss\": [64]\n}, [[4, \"keydown\", \"onKeydown\"]]]);\nconst inputClass = input => {\n var _a, _b, _c;\n return Object.assign(Object.assign({\n 'alert-input': true,\n 'alert-input-disabled': ((_b = (_a = input.attributes) === null || _a === void 0 ? void 0 : _a.disabled) !== null && _b !== void 0 ? _b : input.disabled) || false\n }, (0,_theme_js__WEBPACK_IMPORTED_MODULE_10__.g)(input.cssClass)), (0,_theme_js__WEBPACK_IMPORTED_MODULE_10__.g)(input.attributes ? (_c = input.attributes.class) === null || _c === void 0 ? void 0 : _c.toString() : ''));\n};\nconst buttonClass = button => {\n return Object.assign({\n 'alert-button': true,\n 'ion-focusable': true,\n 'ion-activatable': true,\n [`alert-button-role-${button.role}`]: button.role !== undefined\n }, (0,_theme_js__WEBPACK_IMPORTED_MODULE_10__.g)(button.cssClass));\n};\nfunction defineCustomElement() {\n if (typeof customElements === \"undefined\") {\n return;\n }\n const components = [\"ion-alert\", \"ion-backdrop\", \"ion-ripple-effect\"];\n components.forEach(tagName => {\n switch (tagName) {\n case \"ion-alert\":\n if (!customElements.get(tagName)) {\n customElements.define(tagName, Alert);\n }\n break;\n case \"ion-backdrop\":\n if (!customElements.get(tagName)) {\n (0,_backdrop_js__WEBPACK_IMPORTED_MODULE_12__.d)();\n }\n break;\n case \"ion-ripple-effect\":\n if (!customElements.get(tagName)) {\n (0,_ripple_effect_js__WEBPACK_IMPORTED_MODULE_13__.d)();\n }\n break;\n }\n });\n}\n\n\n//# sourceURL=webpack://jandl/./node_modules/@ionic/core/components/alert.js?\n}"); /***/ }), @@ -125,7 +125,7 @@ eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpac /***/ (function(__unused_webpack_module, __webpack_exports__, __webpack_require__) { "use strict"; -eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"c\": function() { return /* binding */ createAnimation; }\n/* harmony export */ });\n/* harmony import */ var core_js_modules_es_array_push_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! core-js/modules/es.array.push.js */ \"./node_modules/core-js/modules/es.array.push.js\");\n/* harmony import */ var core_js_modules_es_array_push_js__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_array_push_js__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var _helpers_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./helpers.js */ \"./node_modules/@ionic/core/components/helpers.js\");\n/* harmony import */ var _index6_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./index6.js */ \"./node_modules/@ionic/core/components/index6.js\");\n/* provided dependency */ var console = __webpack_require__(/*! ./node_modules/console-browserify/index.js */ \"./node_modules/console-browserify/index.js\");\n\n/*!\n * (C) Ionic http://ionicframework.com - MIT License\n */\n\n\nlet animationPrefix;\n/**\n * Web Animations requires hyphenated CSS properties\n * to be written in camelCase when animating\n */\nconst processKeyframes = keyframes => {\n keyframes.forEach(keyframe => {\n for (const key in keyframe) {\n // eslint-disable-next-line no-prototype-builtins\n if (keyframe.hasOwnProperty(key)) {\n const value = keyframe[key];\n if (key === 'easing') {\n const newKey = 'animation-timing-function';\n keyframe[newKey] = value;\n delete keyframe[key];\n } else {\n const newKey = convertCamelCaseToHypen(key);\n if (newKey !== key) {\n keyframe[newKey] = value;\n delete keyframe[key];\n }\n }\n }\n }\n });\n return keyframes;\n};\nconst convertCamelCaseToHypen = str => {\n return str.replace(/([a-z0-9])([A-Z])/g, '$1-$2').toLowerCase();\n};\nconst getAnimationPrefix = el => {\n if (animationPrefix === undefined) {\n const supportsUnprefixed = el.style.animationName !== undefined;\n const supportsWebkitPrefix = el.style.webkitAnimationName !== undefined;\n animationPrefix = !supportsUnprefixed && supportsWebkitPrefix ? '-webkit-' : '';\n }\n return animationPrefix;\n};\nconst setStyleProperty = (element, propertyName, value) => {\n const prefix = propertyName.startsWith('animation') ? getAnimationPrefix(element) : '';\n element.style.setProperty(prefix + propertyName, value);\n};\nconst removeStyleProperty = (element, propertyName) => {\n const prefix = propertyName.startsWith('animation') ? getAnimationPrefix(element) : '';\n element.style.removeProperty(prefix + propertyName);\n};\nconst animationEnd = (el, callback) => {\n let unRegTrans;\n const opts = {\n passive: true\n };\n const unregister = () => {\n if (unRegTrans) {\n unRegTrans();\n }\n };\n const onTransitionEnd = ev => {\n if (el === ev.target) {\n unregister();\n callback(ev);\n }\n };\n if (el) {\n el.addEventListener('webkitAnimationEnd', onTransitionEnd, opts);\n el.addEventListener('animationend', onTransitionEnd, opts);\n unRegTrans = () => {\n el.removeEventListener('webkitAnimationEnd', onTransitionEnd, opts);\n el.removeEventListener('animationend', onTransitionEnd, opts);\n };\n }\n return unregister;\n};\nconst generateKeyframeRules = (keyframes = []) => {\n return keyframes.map(keyframe => {\n const offset = keyframe.offset;\n const frameString = [];\n for (const property in keyframe) {\n // eslint-disable-next-line no-prototype-builtins\n if (keyframe.hasOwnProperty(property) && property !== 'offset') {\n frameString.push(`${property}: ${keyframe[property]};`);\n }\n }\n return `${offset * 100}% { ${frameString.join(' ')} }`;\n }).join(' ');\n};\nconst keyframeIds = [];\nconst generateKeyframeName = keyframeRules => {\n let index = keyframeIds.indexOf(keyframeRules);\n if (index < 0) {\n index = keyframeIds.push(keyframeRules) - 1;\n }\n return `ion-animation-${index}`;\n};\nconst getStyleContainer = element => {\n // getRootNode is not always available in SSR environments.\n const rootNode = element.getRootNode !== undefined ? element.getRootNode() : element;\n return rootNode.head || rootNode;\n};\nconst createKeyframeStylesheet = (keyframeName, keyframeRules, element) => {\n var _a;\n const styleContainer = getStyleContainer(element);\n const keyframePrefix = getAnimationPrefix(element);\n const existingStylesheet = styleContainer.querySelector('#' + keyframeName);\n if (existingStylesheet) {\n return existingStylesheet;\n }\n const stylesheet = ((_a = element.ownerDocument) !== null && _a !== void 0 ? _a : document).createElement('style');\n stylesheet.id = keyframeName;\n stylesheet.textContent = `@${keyframePrefix}keyframes ${keyframeName} { ${keyframeRules} } @${keyframePrefix}keyframes ${keyframeName}-alt { ${keyframeRules} }`;\n styleContainer.appendChild(stylesheet);\n return stylesheet;\n};\nconst addClassToArray = (classes = [], className) => {\n if (className !== undefined) {\n const classNameToAppend = Array.isArray(className) ? className : [className];\n return [...classes, ...classNameToAppend];\n }\n return classes;\n};\nconst createAnimation = animationId => {\n let _delay;\n let _duration;\n let _easing;\n let _iterations;\n let _fill;\n let _direction;\n let _keyframes = [];\n let beforeAddClasses = [];\n let beforeRemoveClasses = [];\n let initialized = false;\n let parentAnimation;\n let beforeStylesValue = {};\n let afterAddClasses = [];\n let afterRemoveClasses = [];\n let afterStylesValue = {};\n let numAnimationsRunning = 0;\n let shouldForceLinearEasing = false;\n let shouldForceSyncPlayback = false;\n let cssAnimationsTimerFallback;\n let forceDirectionValue;\n let forceDurationValue;\n let forceDelayValue;\n let willComplete = true;\n let finished = false;\n let shouldCalculateNumAnimations = true;\n let keyframeName;\n let ani;\n let paused = false;\n const id = animationId;\n const onFinishCallbacks = [];\n const onFinishOneTimeCallbacks = [];\n const elements = [];\n const childAnimations = [];\n const stylesheets = [];\n const _beforeAddReadFunctions = [];\n const _beforeAddWriteFunctions = [];\n const _afterAddReadFunctions = [];\n const _afterAddWriteFunctions = [];\n const webAnimations = [];\n const supportsAnimationEffect = typeof AnimationEffect === 'function' || _index6_js__WEBPACK_IMPORTED_MODULE_1__.w !== undefined && typeof _index6_js__WEBPACK_IMPORTED_MODULE_1__.w.AnimationEffect === 'function';\n const supportsWebAnimations = typeof Element === 'function' && typeof Element.prototype.animate === 'function' && supportsAnimationEffect;\n const ANIMATION_END_FALLBACK_PADDING_MS = 100;\n const getWebAnimations = () => {\n return webAnimations;\n };\n const destroy = clearStyleSheets => {\n childAnimations.forEach(childAnimation => {\n childAnimation.destroy(clearStyleSheets);\n });\n cleanUp(clearStyleSheets);\n elements.length = 0;\n childAnimations.length = 0;\n _keyframes.length = 0;\n clearOnFinish();\n initialized = false;\n shouldCalculateNumAnimations = true;\n return ani;\n };\n /**\n * Cancels any Web Animations, removes\n * any animation properties from the\n * animation's elements, and removes the\n * animation's stylesheets from the DOM.\n */\n const cleanUp = clearStyleSheets => {\n cleanUpElements();\n if (clearStyleSheets) {\n cleanUpStyleSheets();\n }\n };\n const resetFlags = () => {\n shouldForceLinearEasing = false;\n shouldForceSyncPlayback = false;\n shouldCalculateNumAnimations = true;\n forceDirectionValue = undefined;\n forceDurationValue = undefined;\n forceDelayValue = undefined;\n numAnimationsRunning = 0;\n finished = false;\n willComplete = true;\n paused = false;\n };\n const isRunning = () => {\n return numAnimationsRunning !== 0 && !paused;\n };\n const onFinish = (callback, opts) => {\n const callbacks = (opts === null || opts === void 0 ? void 0 : opts.oneTimeCallback) ? onFinishOneTimeCallbacks : onFinishCallbacks;\n callbacks.push({\n c: callback,\n o: opts\n });\n return ani;\n };\n const clearOnFinish = () => {\n onFinishCallbacks.length = 0;\n onFinishOneTimeCallbacks.length = 0;\n return ani;\n };\n /**\n * Cancels any Web Animations and removes\n * any animation properties from the\n * the animation's elements.\n */\n const cleanUpElements = () => {\n if (supportsWebAnimations) {\n webAnimations.forEach(animation => {\n animation.cancel();\n });\n webAnimations.length = 0;\n } else {\n const elementsArray = elements.slice();\n (0,_helpers_js__WEBPACK_IMPORTED_MODULE_2__.r)(() => {\n elementsArray.forEach(element => {\n removeStyleProperty(element, 'animation-name');\n removeStyleProperty(element, 'animation-duration');\n removeStyleProperty(element, 'animation-timing-function');\n removeStyleProperty(element, 'animation-iteration-count');\n removeStyleProperty(element, 'animation-delay');\n removeStyleProperty(element, 'animation-play-state');\n removeStyleProperty(element, 'animation-fill-mode');\n removeStyleProperty(element, 'animation-direction');\n });\n });\n }\n };\n /**\n * Removes the animation's stylesheets\n * from the DOM.\n */\n const cleanUpStyleSheets = () => {\n stylesheets.forEach(stylesheet => {\n /**\n * When sharing stylesheets, it's possible\n * for another animation to have already\n * cleaned up a particular stylesheet\n */\n if (stylesheet === null || stylesheet === void 0 ? void 0 : stylesheet.parentNode) {\n stylesheet.parentNode.removeChild(stylesheet);\n }\n });\n stylesheets.length = 0;\n };\n const beforeAddRead = readFn => {\n _beforeAddReadFunctions.push(readFn);\n return ani;\n };\n const beforeAddWrite = writeFn => {\n _beforeAddWriteFunctions.push(writeFn);\n return ani;\n };\n const afterAddRead = readFn => {\n _afterAddReadFunctions.push(readFn);\n return ani;\n };\n const afterAddWrite = writeFn => {\n _afterAddWriteFunctions.push(writeFn);\n return ani;\n };\n const beforeAddClass = className => {\n beforeAddClasses = addClassToArray(beforeAddClasses, className);\n return ani;\n };\n const beforeRemoveClass = className => {\n beforeRemoveClasses = addClassToArray(beforeRemoveClasses, className);\n return ani;\n };\n /**\n * Set CSS inline styles to the animation's\n * elements before the animation begins.\n */\n const beforeStyles = (styles = {}) => {\n beforeStylesValue = styles;\n return ani;\n };\n /**\n * Clear CSS inline styles from the animation's\n * elements before the animation begins.\n */\n const beforeClearStyles = (propertyNames = []) => {\n for (const property of propertyNames) {\n beforeStylesValue[property] = '';\n }\n return ani;\n };\n const afterAddClass = className => {\n afterAddClasses = addClassToArray(afterAddClasses, className);\n return ani;\n };\n const afterRemoveClass = className => {\n afterRemoveClasses = addClassToArray(afterRemoveClasses, className);\n return ani;\n };\n const afterStyles = (styles = {}) => {\n afterStylesValue = styles;\n return ani;\n };\n const afterClearStyles = (propertyNames = []) => {\n for (const property of propertyNames) {\n afterStylesValue[property] = '';\n }\n return ani;\n };\n const getFill = () => {\n if (_fill !== undefined) {\n return _fill;\n }\n if (parentAnimation) {\n return parentAnimation.getFill();\n }\n return 'both';\n };\n const getDirection = () => {\n if (forceDirectionValue !== undefined) {\n return forceDirectionValue;\n }\n if (_direction !== undefined) {\n return _direction;\n }\n if (parentAnimation) {\n return parentAnimation.getDirection();\n }\n return 'normal';\n };\n const getEasing = () => {\n if (shouldForceLinearEasing) {\n return 'linear';\n }\n if (_easing !== undefined) {\n return _easing;\n }\n if (parentAnimation) {\n return parentAnimation.getEasing();\n }\n return 'linear';\n };\n const getDuration = () => {\n if (shouldForceSyncPlayback) {\n return 0;\n }\n if (forceDurationValue !== undefined) {\n return forceDurationValue;\n }\n if (_duration !== undefined) {\n return _duration;\n }\n if (parentAnimation) {\n return parentAnimation.getDuration();\n }\n return 0;\n };\n const getIterations = () => {\n if (_iterations !== undefined) {\n return _iterations;\n }\n if (parentAnimation) {\n return parentAnimation.getIterations();\n }\n return 1;\n };\n const getDelay = () => {\n if (forceDelayValue !== undefined) {\n return forceDelayValue;\n }\n if (_delay !== undefined) {\n return _delay;\n }\n if (parentAnimation) {\n return parentAnimation.getDelay();\n }\n return 0;\n };\n const getKeyframes = () => {\n return _keyframes;\n };\n const direction = animationDirection => {\n _direction = animationDirection;\n update(true);\n return ani;\n };\n const fill = animationFill => {\n _fill = animationFill;\n update(true);\n return ani;\n };\n const delay = animationDelay => {\n _delay = animationDelay;\n update(true);\n return ani;\n };\n const easing = animationEasing => {\n _easing = animationEasing;\n update(true);\n return ani;\n };\n const duration = animationDuration => {\n /**\n * CSS Animation Durations of 0ms work fine on Chrome\n * but do not run on Safari, so force it to 1ms to\n * get it to run on both platforms.\n */\n if (!supportsWebAnimations && animationDuration === 0) {\n animationDuration = 1;\n }\n _duration = animationDuration;\n update(true);\n return ani;\n };\n const iterations = animationIterations => {\n _iterations = animationIterations;\n update(true);\n return ani;\n };\n const parent = animation => {\n parentAnimation = animation;\n return ani;\n };\n const addElement = el => {\n if (el != null) {\n if (el.nodeType === 1) {\n elements.push(el);\n } else if (el.length >= 0) {\n for (let i = 0; i < el.length; i++) {\n elements.push(el[i]);\n }\n } else {\n console.error('Invalid addElement value');\n }\n }\n return ani;\n };\n const addAnimation = animationToAdd => {\n if (animationToAdd != null) {\n if (Array.isArray(animationToAdd)) {\n for (const animation of animationToAdd) {\n animation.parent(ani);\n childAnimations.push(animation);\n }\n } else {\n animationToAdd.parent(ani);\n childAnimations.push(animationToAdd);\n }\n }\n return ani;\n };\n const keyframes = keyframeValues => {\n const different = _keyframes !== keyframeValues;\n _keyframes = keyframeValues;\n if (different) {\n updateKeyframes(_keyframes);\n }\n return ani;\n };\n const updateKeyframes = keyframeValues => {\n if (supportsWebAnimations) {\n getWebAnimations().forEach(animation => {\n if (animation.effect.setKeyframes) {\n animation.effect.setKeyframes(keyframeValues);\n } else {\n const newEffect = new KeyframeEffect(animation.effect.target, keyframeValues, animation.effect.getTiming());\n animation.effect = newEffect;\n }\n });\n } else {\n initializeCSSAnimation();\n }\n };\n /**\n * Run all \"before\" animation hooks.\n */\n const beforeAnimation = () => {\n // Runs all before read callbacks\n _beforeAddReadFunctions.forEach(callback => callback());\n // Runs all before write callbacks\n _beforeAddWriteFunctions.forEach(callback => callback());\n // Updates styles and classes before animation runs\n const addClasses = beforeAddClasses;\n const removeClasses = beforeRemoveClasses;\n const styles = beforeStylesValue;\n elements.forEach(el => {\n const elementClassList = el.classList;\n addClasses.forEach(c => elementClassList.add(c));\n removeClasses.forEach(c => elementClassList.remove(c));\n for (const property in styles) {\n // eslint-disable-next-line no-prototype-builtins\n if (styles.hasOwnProperty(property)) {\n setStyleProperty(el, property, styles[property]);\n }\n }\n });\n };\n /**\n * Run all \"after\" animation hooks.\n */\n const afterAnimation = () => {\n clearCSSAnimationsTimeout();\n // Runs all after read callbacks\n _afterAddReadFunctions.forEach(callback => callback());\n // Runs all after write callbacks\n _afterAddWriteFunctions.forEach(callback => callback());\n // Updates styles and classes before animation ends\n const currentStep = willComplete ? 1 : 0;\n const addClasses = afterAddClasses;\n const removeClasses = afterRemoveClasses;\n const styles = afterStylesValue;\n elements.forEach(el => {\n const elementClassList = el.classList;\n addClasses.forEach(c => elementClassList.add(c));\n removeClasses.forEach(c => elementClassList.remove(c));\n for (const property in styles) {\n // eslint-disable-next-line no-prototype-builtins\n if (styles.hasOwnProperty(property)) {\n setStyleProperty(el, property, styles[property]);\n }\n }\n });\n onFinishCallbacks.forEach(onFinishCallback => {\n return onFinishCallback.c(currentStep, ani);\n });\n onFinishOneTimeCallbacks.forEach(onFinishCallback => {\n return onFinishCallback.c(currentStep, ani);\n });\n onFinishOneTimeCallbacks.length = 0;\n shouldCalculateNumAnimations = true;\n if (willComplete) {\n finished = true;\n }\n willComplete = true;\n };\n const animationFinish = () => {\n if (numAnimationsRunning === 0) {\n return;\n }\n numAnimationsRunning--;\n if (numAnimationsRunning === 0) {\n afterAnimation();\n if (parentAnimation) {\n parentAnimation.animationFinish();\n }\n }\n };\n const initializeCSSAnimation = (toggleAnimationName = true) => {\n cleanUpStyleSheets();\n const processedKeyframes = processKeyframes(_keyframes);\n elements.forEach(element => {\n if (processedKeyframes.length > 0) {\n const keyframeRules = generateKeyframeRules(processedKeyframes);\n keyframeName = animationId !== undefined ? animationId : generateKeyframeName(keyframeRules);\n const stylesheet = createKeyframeStylesheet(keyframeName, keyframeRules, element);\n stylesheets.push(stylesheet);\n setStyleProperty(element, 'animation-duration', `${getDuration()}ms`);\n setStyleProperty(element, 'animation-timing-function', getEasing());\n setStyleProperty(element, 'animation-delay', `${getDelay()}ms`);\n setStyleProperty(element, 'animation-fill-mode', getFill());\n setStyleProperty(element, 'animation-direction', getDirection());\n const iterationsCount = getIterations() === Infinity ? 'infinite' : getIterations().toString();\n setStyleProperty(element, 'animation-iteration-count', iterationsCount);\n setStyleProperty(element, 'animation-play-state', 'paused');\n if (toggleAnimationName) {\n setStyleProperty(element, 'animation-name', `${stylesheet.id}-alt`);\n }\n (0,_helpers_js__WEBPACK_IMPORTED_MODULE_2__.r)(() => {\n setStyleProperty(element, 'animation-name', stylesheet.id || null);\n });\n }\n });\n };\n const initializeWebAnimation = () => {\n elements.forEach(element => {\n const animation = element.animate(_keyframes, {\n id,\n delay: getDelay(),\n duration: getDuration(),\n easing: getEasing(),\n iterations: getIterations(),\n fill: getFill(),\n direction: getDirection()\n });\n animation.pause();\n webAnimations.push(animation);\n });\n if (webAnimations.length > 0) {\n webAnimations[0].onfinish = () => {\n animationFinish();\n };\n }\n };\n const initializeAnimation = (toggleAnimationName = true) => {\n beforeAnimation();\n if (_keyframes.length > 0) {\n if (supportsWebAnimations) {\n initializeWebAnimation();\n } else {\n initializeCSSAnimation(toggleAnimationName);\n }\n }\n initialized = true;\n };\n const setAnimationStep = step => {\n step = Math.min(Math.max(step, 0), 0.9999);\n if (supportsWebAnimations) {\n webAnimations.forEach(animation => {\n animation.currentTime = animation.effect.getComputedTiming().delay + getDuration() * step;\n animation.pause();\n });\n } else {\n const animationDuration = `-${getDuration() * step}ms`;\n elements.forEach(element => {\n if (_keyframes.length > 0) {\n setStyleProperty(element, 'animation-delay', animationDuration);\n setStyleProperty(element, 'animation-play-state', 'paused');\n }\n });\n }\n };\n const updateWebAnimation = step => {\n webAnimations.forEach(animation => {\n animation.effect.updateTiming({\n delay: getDelay(),\n duration: getDuration(),\n easing: getEasing(),\n iterations: getIterations(),\n fill: getFill(),\n direction: getDirection()\n });\n });\n if (step !== undefined) {\n setAnimationStep(step);\n }\n };\n const updateCSSAnimation = (toggleAnimationName = true, step) => {\n (0,_helpers_js__WEBPACK_IMPORTED_MODULE_2__.r)(() => {\n elements.forEach(element => {\n setStyleProperty(element, 'animation-name', keyframeName || null);\n setStyleProperty(element, 'animation-duration', `${getDuration()}ms`);\n setStyleProperty(element, 'animation-timing-function', getEasing());\n setStyleProperty(element, 'animation-delay', step !== undefined ? `-${step * getDuration()}ms` : `${getDelay()}ms`);\n setStyleProperty(element, 'animation-fill-mode', getFill() || null);\n setStyleProperty(element, 'animation-direction', getDirection() || null);\n const iterationsCount = getIterations() === Infinity ? 'infinite' : getIterations().toString();\n setStyleProperty(element, 'animation-iteration-count', iterationsCount);\n if (toggleAnimationName) {\n setStyleProperty(element, 'animation-name', `${keyframeName}-alt`);\n }\n (0,_helpers_js__WEBPACK_IMPORTED_MODULE_2__.r)(() => {\n setStyleProperty(element, 'animation-name', keyframeName || null);\n });\n });\n });\n };\n const update = (deep = false, toggleAnimationName = true, step) => {\n if (deep) {\n childAnimations.forEach(animation => {\n animation.update(deep, toggleAnimationName, step);\n });\n }\n if (supportsWebAnimations) {\n updateWebAnimation(step);\n } else {\n updateCSSAnimation(toggleAnimationName, step);\n }\n return ani;\n };\n const progressStart = (forceLinearEasing = false, step) => {\n childAnimations.forEach(animation => {\n animation.progressStart(forceLinearEasing, step);\n });\n pauseAnimation();\n shouldForceLinearEasing = forceLinearEasing;\n if (!initialized) {\n initializeAnimation();\n }\n update(false, true, step);\n return ani;\n };\n const progressStep = step => {\n childAnimations.forEach(animation => {\n animation.progressStep(step);\n });\n setAnimationStep(step);\n return ani;\n };\n const progressEnd = (playTo, step, dur) => {\n shouldForceLinearEasing = false;\n childAnimations.forEach(animation => {\n animation.progressEnd(playTo, step, dur);\n });\n if (dur !== undefined) {\n forceDurationValue = dur;\n }\n finished = false;\n willComplete = true;\n if (playTo === 0) {\n forceDirectionValue = getDirection() === 'reverse' ? 'normal' : 'reverse';\n if (forceDirectionValue === 'reverse') {\n willComplete = false;\n }\n if (supportsWebAnimations) {\n update();\n setAnimationStep(1 - step);\n } else {\n forceDelayValue = (1 - step) * getDuration() * -1;\n update(false, false);\n }\n } else if (playTo === 1) {\n if (supportsWebAnimations) {\n update();\n setAnimationStep(step);\n } else {\n forceDelayValue = step * getDuration() * -1;\n update(false, false);\n }\n }\n if (playTo !== undefined) {\n onFinish(() => {\n forceDurationValue = undefined;\n forceDirectionValue = undefined;\n forceDelayValue = undefined;\n }, {\n oneTimeCallback: true\n });\n if (!parentAnimation) {\n play();\n }\n }\n return ani;\n };\n const pauseAnimation = () => {\n if (initialized) {\n if (supportsWebAnimations) {\n webAnimations.forEach(animation => {\n animation.pause();\n });\n } else {\n elements.forEach(element => {\n setStyleProperty(element, 'animation-play-state', 'paused');\n });\n }\n paused = true;\n }\n };\n const pause = () => {\n childAnimations.forEach(animation => {\n animation.pause();\n });\n pauseAnimation();\n return ani;\n };\n const onAnimationEndFallback = () => {\n cssAnimationsTimerFallback = undefined;\n animationFinish();\n };\n const clearCSSAnimationsTimeout = () => {\n if (cssAnimationsTimerFallback) {\n clearTimeout(cssAnimationsTimerFallback);\n }\n };\n const playCSSAnimations = () => {\n clearCSSAnimationsTimeout();\n (0,_helpers_js__WEBPACK_IMPORTED_MODULE_2__.r)(() => {\n elements.forEach(element => {\n if (_keyframes.length > 0) {\n setStyleProperty(element, 'animation-play-state', 'running');\n }\n });\n });\n if (_keyframes.length === 0 || elements.length === 0) {\n animationFinish();\n } else {\n /**\n * This is a catchall in the event that a CSS Animation did not finish.\n * The Web Animations API has mechanisms in place for preventing this.\n * CSS Animations will not fire an `animationend` event\n * for elements with `display: none`. The Web Animations API\n * accounts for this, but using raw CSS Animations requires\n * this workaround.\n */\n const animationDelay = getDelay() || 0;\n const animationDuration = getDuration() || 0;\n const animationIterations = getIterations() || 1;\n // No need to set a timeout when animation has infinite iterations\n if (isFinite(animationIterations)) {\n cssAnimationsTimerFallback = setTimeout(onAnimationEndFallback, animationDelay + animationDuration * animationIterations + ANIMATION_END_FALLBACK_PADDING_MS);\n }\n animationEnd(elements[0], () => {\n clearCSSAnimationsTimeout();\n /**\n * Ensure that clean up\n * is always done a frame\n * before the onFinish handlers\n * are fired. Otherwise, there\n * may be flickering if a new\n * animation is started on the same\n * element too quickly\n */\n (0,_helpers_js__WEBPACK_IMPORTED_MODULE_2__.r)(() => {\n clearCSSAnimationPlayState();\n (0,_helpers_js__WEBPACK_IMPORTED_MODULE_2__.r)(animationFinish);\n });\n });\n }\n };\n const clearCSSAnimationPlayState = () => {\n elements.forEach(element => {\n removeStyleProperty(element, 'animation-duration');\n removeStyleProperty(element, 'animation-delay');\n removeStyleProperty(element, 'animation-play-state');\n });\n };\n const playWebAnimations = () => {\n webAnimations.forEach(animation => {\n animation.play();\n });\n if (_keyframes.length === 0 || elements.length === 0) {\n animationFinish();\n }\n };\n const resetAnimation = () => {\n if (supportsWebAnimations) {\n setAnimationStep(0);\n updateWebAnimation();\n } else {\n updateCSSAnimation();\n }\n };\n const play = opts => {\n return new Promise(resolve => {\n if (opts === null || opts === void 0 ? void 0 : opts.sync) {\n shouldForceSyncPlayback = true;\n onFinish(() => shouldForceSyncPlayback = false, {\n oneTimeCallback: true\n });\n }\n if (!initialized) {\n initializeAnimation();\n }\n if (finished) {\n resetAnimation();\n finished = false;\n }\n if (shouldCalculateNumAnimations) {\n numAnimationsRunning = childAnimations.length + 1;\n shouldCalculateNumAnimations = false;\n }\n onFinish(() => resolve(), {\n oneTimeCallback: true\n });\n childAnimations.forEach(animation => {\n animation.play();\n });\n if (supportsWebAnimations) {\n playWebAnimations();\n } else {\n playCSSAnimations();\n }\n paused = false;\n });\n };\n const stop = () => {\n childAnimations.forEach(animation => {\n animation.stop();\n });\n if (initialized) {\n cleanUpElements();\n initialized = false;\n }\n resetFlags();\n };\n const from = (property, value) => {\n const firstFrame = _keyframes[0];\n if (firstFrame !== undefined && (firstFrame.offset === undefined || firstFrame.offset === 0)) {\n firstFrame[property] = value;\n } else {\n _keyframes = [{\n offset: 0,\n [property]: value\n }, ..._keyframes];\n }\n return ani;\n };\n const to = (property, value) => {\n const lastFrame = _keyframes[_keyframes.length - 1];\n if (lastFrame !== undefined && (lastFrame.offset === undefined || lastFrame.offset === 1)) {\n lastFrame[property] = value;\n } else {\n _keyframes = [..._keyframes, {\n offset: 1,\n [property]: value\n }];\n }\n return ani;\n };\n const fromTo = (property, fromValue, toValue) => {\n return from(property, fromValue).to(property, toValue);\n };\n return ani = {\n parentAnimation,\n elements,\n childAnimations,\n id,\n animationFinish,\n from,\n to,\n fromTo,\n parent,\n play,\n pause,\n stop,\n destroy,\n keyframes,\n addAnimation,\n addElement,\n update,\n fill,\n direction,\n iterations,\n duration,\n easing,\n delay,\n getWebAnimations,\n getKeyframes,\n getFill,\n getDirection,\n getDelay,\n getIterations,\n getEasing,\n getDuration,\n afterAddRead,\n afterAddWrite,\n afterClearStyles,\n afterStyles,\n afterRemoveClass,\n afterAddClass,\n beforeAddRead,\n beforeAddWrite,\n beforeClearStyles,\n beforeStyles,\n beforeRemoveClass,\n beforeAddClass,\n onFinish,\n isRunning,\n progressStart,\n progressStep,\n progressEnd\n };\n};\n\n\n//# sourceURL=webpack://jandl/./node_modules/@ionic/core/components/animation.js?"); +eval("{__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ c: function() { return /* binding */ createAnimation; }\n/* harmony export */ });\n/* harmony import */ var core_js_modules_es_array_push_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! core-js/modules/es.array.push.js */ \"./node_modules/core-js/modules/es.array.push.js\");\n/* harmony import */ var core_js_modules_es_array_push_js__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_array_push_js__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var core_js_modules_esnext_iterator_constructor_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! core-js/modules/esnext.iterator.constructor.js */ \"./node_modules/core-js/modules/esnext.iterator.constructor.js\");\n/* harmony import */ var core_js_modules_esnext_iterator_constructor_js__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_esnext_iterator_constructor_js__WEBPACK_IMPORTED_MODULE_1__);\n/* harmony import */ var core_js_modules_esnext_iterator_for_each_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! core-js/modules/esnext.iterator.for-each.js */ \"./node_modules/core-js/modules/esnext.iterator.for-each.js\");\n/* harmony import */ var core_js_modules_esnext_iterator_for_each_js__WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_esnext_iterator_for_each_js__WEBPACK_IMPORTED_MODULE_2__);\n/* harmony import */ var core_js_modules_esnext_iterator_map_js__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! core-js/modules/esnext.iterator.map.js */ \"./node_modules/core-js/modules/esnext.iterator.map.js\");\n/* harmony import */ var core_js_modules_esnext_iterator_map_js__WEBPACK_IMPORTED_MODULE_3___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_esnext_iterator_map_js__WEBPACK_IMPORTED_MODULE_3__);\n/* harmony import */ var _helpers_js__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ./helpers.js */ \"./node_modules/@ionic/core/components/helpers.js\");\n/* harmony import */ var _index6_js__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ./index6.js */ \"./node_modules/@ionic/core/components/index6.js\");\n/* provided dependency */ var console = __webpack_require__(/*! ./node_modules/console-browserify/index.js */ \"./node_modules/console-browserify/index.js\");\n\n\n\n\n/*!\n * (C) Ionic http://ionicframework.com - MIT License\n */\n\n\nlet animationPrefix;\n/**\n * Web Animations requires hyphenated CSS properties\n * to be written in camelCase when animating\n */\nconst processKeyframes = keyframes => {\n keyframes.forEach(keyframe => {\n for (const key in keyframe) {\n // eslint-disable-next-line no-prototype-builtins\n if (keyframe.hasOwnProperty(key)) {\n const value = keyframe[key];\n if (key === 'easing') {\n const newKey = 'animation-timing-function';\n keyframe[newKey] = value;\n delete keyframe[key];\n } else {\n const newKey = convertCamelCaseToHypen(key);\n if (newKey !== key) {\n keyframe[newKey] = value;\n delete keyframe[key];\n }\n }\n }\n }\n });\n return keyframes;\n};\nconst convertCamelCaseToHypen = str => {\n return str.replace(/([a-z0-9])([A-Z])/g, '$1-$2').toLowerCase();\n};\nconst getAnimationPrefix = el => {\n if (animationPrefix === undefined) {\n const supportsUnprefixed = el.style.animationName !== undefined;\n const supportsWebkitPrefix = el.style.webkitAnimationName !== undefined;\n animationPrefix = !supportsUnprefixed && supportsWebkitPrefix ? '-webkit-' : '';\n }\n return animationPrefix;\n};\nconst setStyleProperty = (element, propertyName, value) => {\n const prefix = propertyName.startsWith('animation') ? getAnimationPrefix(element) : '';\n element.style.setProperty(prefix + propertyName, value);\n};\nconst removeStyleProperty = (element, propertyName) => {\n const prefix = propertyName.startsWith('animation') ? getAnimationPrefix(element) : '';\n element.style.removeProperty(prefix + propertyName);\n};\nconst animationEnd = (el, callback) => {\n let unRegTrans;\n const opts = {\n passive: true\n };\n const unregister = () => {\n if (unRegTrans) {\n unRegTrans();\n }\n };\n const onTransitionEnd = ev => {\n if (el === ev.target) {\n unregister();\n callback(ev);\n }\n };\n if (el) {\n el.addEventListener('webkitAnimationEnd', onTransitionEnd, opts);\n el.addEventListener('animationend', onTransitionEnd, opts);\n unRegTrans = () => {\n el.removeEventListener('webkitAnimationEnd', onTransitionEnd, opts);\n el.removeEventListener('animationend', onTransitionEnd, opts);\n };\n }\n return unregister;\n};\nconst generateKeyframeRules = (keyframes = []) => {\n return keyframes.map(keyframe => {\n const offset = keyframe.offset;\n const frameString = [];\n for (const property in keyframe) {\n // eslint-disable-next-line no-prototype-builtins\n if (keyframe.hasOwnProperty(property) && property !== 'offset') {\n frameString.push(`${property}: ${keyframe[property]};`);\n }\n }\n return `${offset * 100}% { ${frameString.join(' ')} }`;\n }).join(' ');\n};\nconst keyframeIds = [];\nconst generateKeyframeName = keyframeRules => {\n let index = keyframeIds.indexOf(keyframeRules);\n if (index < 0) {\n index = keyframeIds.push(keyframeRules) - 1;\n }\n return `ion-animation-${index}`;\n};\nconst getStyleContainer = element => {\n // getRootNode is not always available in SSR environments.\n const rootNode = element.getRootNode !== undefined ? element.getRootNode() : element;\n return rootNode.head || rootNode;\n};\nconst createKeyframeStylesheet = (keyframeName, keyframeRules, element) => {\n var _a;\n const styleContainer = getStyleContainer(element);\n const keyframePrefix = getAnimationPrefix(element);\n const existingStylesheet = styleContainer.querySelector('#' + keyframeName);\n if (existingStylesheet) {\n return existingStylesheet;\n }\n const stylesheet = ((_a = element.ownerDocument) !== null && _a !== void 0 ? _a : document).createElement('style');\n stylesheet.id = keyframeName;\n stylesheet.textContent = `@${keyframePrefix}keyframes ${keyframeName} { ${keyframeRules} } @${keyframePrefix}keyframes ${keyframeName}-alt { ${keyframeRules} }`;\n styleContainer.appendChild(stylesheet);\n return stylesheet;\n};\nconst addClassToArray = (classes = [], className) => {\n if (className !== undefined) {\n const classNameToAppend = Array.isArray(className) ? className : [className];\n return [...classes, ...classNameToAppend];\n }\n return classes;\n};\nconst createAnimation = animationId => {\n let _delay;\n let _duration;\n let _easing;\n let _iterations;\n let _fill;\n let _direction;\n let _keyframes = [];\n let beforeAddClasses = [];\n let beforeRemoveClasses = [];\n let initialized = false;\n let parentAnimation;\n let beforeStylesValue = {};\n let afterAddClasses = [];\n let afterRemoveClasses = [];\n let afterStylesValue = {};\n let numAnimationsRunning = 0;\n let shouldForceLinearEasing = false;\n let shouldForceSyncPlayback = false;\n let cssAnimationsTimerFallback;\n let forceDirectionValue;\n let forceDurationValue;\n let forceDelayValue;\n let willComplete = true;\n let finished = false;\n let shouldCalculateNumAnimations = true;\n let keyframeName;\n let ani;\n let paused = false;\n const id = animationId;\n const onFinishCallbacks = [];\n const onFinishOneTimeCallbacks = [];\n const elements = [];\n const childAnimations = [];\n const stylesheets = [];\n const _beforeAddReadFunctions = [];\n const _beforeAddWriteFunctions = [];\n const _afterAddReadFunctions = [];\n const _afterAddWriteFunctions = [];\n const webAnimations = [];\n const supportsAnimationEffect = typeof AnimationEffect === 'function' || _index6_js__WEBPACK_IMPORTED_MODULE_5__.w !== undefined && typeof _index6_js__WEBPACK_IMPORTED_MODULE_5__.w.AnimationEffect === 'function';\n const supportsWebAnimations = typeof Element === 'function' && typeof Element.prototype.animate === 'function' && supportsAnimationEffect;\n const ANIMATION_END_FALLBACK_PADDING_MS = 100;\n const getWebAnimations = () => {\n return webAnimations;\n };\n const destroy = clearStyleSheets => {\n childAnimations.forEach(childAnimation => {\n childAnimation.destroy(clearStyleSheets);\n });\n cleanUp(clearStyleSheets);\n elements.length = 0;\n childAnimations.length = 0;\n _keyframes.length = 0;\n clearOnFinish();\n initialized = false;\n shouldCalculateNumAnimations = true;\n return ani;\n };\n /**\n * Cancels any Web Animations, removes\n * any animation properties from the\n * animation's elements, and removes the\n * animation's stylesheets from the DOM.\n */\n const cleanUp = clearStyleSheets => {\n cleanUpElements();\n if (clearStyleSheets) {\n cleanUpStyleSheets();\n }\n };\n const resetFlags = () => {\n shouldForceLinearEasing = false;\n shouldForceSyncPlayback = false;\n shouldCalculateNumAnimations = true;\n forceDirectionValue = undefined;\n forceDurationValue = undefined;\n forceDelayValue = undefined;\n numAnimationsRunning = 0;\n finished = false;\n willComplete = true;\n paused = false;\n };\n const isRunning = () => {\n return numAnimationsRunning !== 0 && !paused;\n };\n const onFinish = (callback, opts) => {\n const callbacks = (opts === null || opts === void 0 ? void 0 : opts.oneTimeCallback) ? onFinishOneTimeCallbacks : onFinishCallbacks;\n callbacks.push({\n c: callback,\n o: opts\n });\n return ani;\n };\n const clearOnFinish = () => {\n onFinishCallbacks.length = 0;\n onFinishOneTimeCallbacks.length = 0;\n return ani;\n };\n /**\n * Cancels any Web Animations and removes\n * any animation properties from the\n * the animation's elements.\n */\n const cleanUpElements = () => {\n if (supportsWebAnimations) {\n webAnimations.forEach(animation => {\n animation.cancel();\n });\n webAnimations.length = 0;\n } else {\n const elementsArray = elements.slice();\n (0,_helpers_js__WEBPACK_IMPORTED_MODULE_4__.r)(() => {\n elementsArray.forEach(element => {\n removeStyleProperty(element, 'animation-name');\n removeStyleProperty(element, 'animation-duration');\n removeStyleProperty(element, 'animation-timing-function');\n removeStyleProperty(element, 'animation-iteration-count');\n removeStyleProperty(element, 'animation-delay');\n removeStyleProperty(element, 'animation-play-state');\n removeStyleProperty(element, 'animation-fill-mode');\n removeStyleProperty(element, 'animation-direction');\n });\n });\n }\n };\n /**\n * Removes the animation's stylesheets\n * from the DOM.\n */\n const cleanUpStyleSheets = () => {\n stylesheets.forEach(stylesheet => {\n /**\n * When sharing stylesheets, it's possible\n * for another animation to have already\n * cleaned up a particular stylesheet\n */\n if (stylesheet === null || stylesheet === void 0 ? void 0 : stylesheet.parentNode) {\n stylesheet.parentNode.removeChild(stylesheet);\n }\n });\n stylesheets.length = 0;\n };\n const beforeAddRead = readFn => {\n _beforeAddReadFunctions.push(readFn);\n return ani;\n };\n const beforeAddWrite = writeFn => {\n _beforeAddWriteFunctions.push(writeFn);\n return ani;\n };\n const afterAddRead = readFn => {\n _afterAddReadFunctions.push(readFn);\n return ani;\n };\n const afterAddWrite = writeFn => {\n _afterAddWriteFunctions.push(writeFn);\n return ani;\n };\n const beforeAddClass = className => {\n beforeAddClasses = addClassToArray(beforeAddClasses, className);\n return ani;\n };\n const beforeRemoveClass = className => {\n beforeRemoveClasses = addClassToArray(beforeRemoveClasses, className);\n return ani;\n };\n /**\n * Set CSS inline styles to the animation's\n * elements before the animation begins.\n */\n const beforeStyles = (styles = {}) => {\n beforeStylesValue = styles;\n return ani;\n };\n /**\n * Clear CSS inline styles from the animation's\n * elements before the animation begins.\n */\n const beforeClearStyles = (propertyNames = []) => {\n for (const property of propertyNames) {\n beforeStylesValue[property] = '';\n }\n return ani;\n };\n const afterAddClass = className => {\n afterAddClasses = addClassToArray(afterAddClasses, className);\n return ani;\n };\n const afterRemoveClass = className => {\n afterRemoveClasses = addClassToArray(afterRemoveClasses, className);\n return ani;\n };\n const afterStyles = (styles = {}) => {\n afterStylesValue = styles;\n return ani;\n };\n const afterClearStyles = (propertyNames = []) => {\n for (const property of propertyNames) {\n afterStylesValue[property] = '';\n }\n return ani;\n };\n const getFill = () => {\n if (_fill !== undefined) {\n return _fill;\n }\n if (parentAnimation) {\n return parentAnimation.getFill();\n }\n return 'both';\n };\n const getDirection = () => {\n if (forceDirectionValue !== undefined) {\n return forceDirectionValue;\n }\n if (_direction !== undefined) {\n return _direction;\n }\n if (parentAnimation) {\n return parentAnimation.getDirection();\n }\n return 'normal';\n };\n const getEasing = () => {\n if (shouldForceLinearEasing) {\n return 'linear';\n }\n if (_easing !== undefined) {\n return _easing;\n }\n if (parentAnimation) {\n return parentAnimation.getEasing();\n }\n return 'linear';\n };\n const getDuration = () => {\n if (shouldForceSyncPlayback) {\n return 0;\n }\n if (forceDurationValue !== undefined) {\n return forceDurationValue;\n }\n if (_duration !== undefined) {\n return _duration;\n }\n if (parentAnimation) {\n return parentAnimation.getDuration();\n }\n return 0;\n };\n const getIterations = () => {\n if (_iterations !== undefined) {\n return _iterations;\n }\n if (parentAnimation) {\n return parentAnimation.getIterations();\n }\n return 1;\n };\n const getDelay = () => {\n if (forceDelayValue !== undefined) {\n return forceDelayValue;\n }\n if (_delay !== undefined) {\n return _delay;\n }\n if (parentAnimation) {\n return parentAnimation.getDelay();\n }\n return 0;\n };\n const getKeyframes = () => {\n return _keyframes;\n };\n const direction = animationDirection => {\n _direction = animationDirection;\n update(true);\n return ani;\n };\n const fill = animationFill => {\n _fill = animationFill;\n update(true);\n return ani;\n };\n const delay = animationDelay => {\n _delay = animationDelay;\n update(true);\n return ani;\n };\n const easing = animationEasing => {\n _easing = animationEasing;\n update(true);\n return ani;\n };\n const duration = animationDuration => {\n /**\n * CSS Animation Durations of 0ms work fine on Chrome\n * but do not run on Safari, so force it to 1ms to\n * get it to run on both platforms.\n */\n if (!supportsWebAnimations && animationDuration === 0) {\n animationDuration = 1;\n }\n _duration = animationDuration;\n update(true);\n return ani;\n };\n const iterations = animationIterations => {\n _iterations = animationIterations;\n update(true);\n return ani;\n };\n const parent = animation => {\n parentAnimation = animation;\n return ani;\n };\n const addElement = el => {\n if (el != null) {\n if (el.nodeType === 1) {\n elements.push(el);\n } else if (el.length >= 0) {\n for (let i = 0; i < el.length; i++) {\n elements.push(el[i]);\n }\n } else {\n console.error('Invalid addElement value');\n }\n }\n return ani;\n };\n const addAnimation = animationToAdd => {\n if (animationToAdd != null) {\n if (Array.isArray(animationToAdd)) {\n for (const animation of animationToAdd) {\n animation.parent(ani);\n childAnimations.push(animation);\n }\n } else {\n animationToAdd.parent(ani);\n childAnimations.push(animationToAdd);\n }\n }\n return ani;\n };\n const keyframes = keyframeValues => {\n const different = _keyframes !== keyframeValues;\n _keyframes = keyframeValues;\n if (different) {\n updateKeyframes(_keyframes);\n }\n return ani;\n };\n const updateKeyframes = keyframeValues => {\n if (supportsWebAnimations) {\n getWebAnimations().forEach(animation => {\n if (animation.effect.setKeyframes) {\n animation.effect.setKeyframes(keyframeValues);\n } else {\n const newEffect = new KeyframeEffect(animation.effect.target, keyframeValues, animation.effect.getTiming());\n animation.effect = newEffect;\n }\n });\n } else {\n initializeCSSAnimation();\n }\n };\n /**\n * Run all \"before\" animation hooks.\n */\n const beforeAnimation = () => {\n // Runs all before read callbacks\n _beforeAddReadFunctions.forEach(callback => callback());\n // Runs all before write callbacks\n _beforeAddWriteFunctions.forEach(callback => callback());\n // Updates styles and classes before animation runs\n const addClasses = beforeAddClasses;\n const removeClasses = beforeRemoveClasses;\n const styles = beforeStylesValue;\n elements.forEach(el => {\n const elementClassList = el.classList;\n addClasses.forEach(c => elementClassList.add(c));\n removeClasses.forEach(c => elementClassList.remove(c));\n for (const property in styles) {\n // eslint-disable-next-line no-prototype-builtins\n if (styles.hasOwnProperty(property)) {\n setStyleProperty(el, property, styles[property]);\n }\n }\n });\n };\n /**\n * Run all \"after\" animation hooks.\n */\n const afterAnimation = () => {\n clearCSSAnimationsTimeout();\n // Runs all after read callbacks\n _afterAddReadFunctions.forEach(callback => callback());\n // Runs all after write callbacks\n _afterAddWriteFunctions.forEach(callback => callback());\n // Updates styles and classes before animation ends\n const currentStep = willComplete ? 1 : 0;\n const addClasses = afterAddClasses;\n const removeClasses = afterRemoveClasses;\n const styles = afterStylesValue;\n elements.forEach(el => {\n const elementClassList = el.classList;\n addClasses.forEach(c => elementClassList.add(c));\n removeClasses.forEach(c => elementClassList.remove(c));\n for (const property in styles) {\n // eslint-disable-next-line no-prototype-builtins\n if (styles.hasOwnProperty(property)) {\n setStyleProperty(el, property, styles[property]);\n }\n }\n });\n onFinishCallbacks.forEach(onFinishCallback => {\n return onFinishCallback.c(currentStep, ani);\n });\n onFinishOneTimeCallbacks.forEach(onFinishCallback => {\n return onFinishCallback.c(currentStep, ani);\n });\n onFinishOneTimeCallbacks.length = 0;\n shouldCalculateNumAnimations = true;\n if (willComplete) {\n finished = true;\n }\n willComplete = true;\n };\n const animationFinish = () => {\n if (numAnimationsRunning === 0) {\n return;\n }\n numAnimationsRunning--;\n if (numAnimationsRunning === 0) {\n afterAnimation();\n if (parentAnimation) {\n parentAnimation.animationFinish();\n }\n }\n };\n const initializeCSSAnimation = (toggleAnimationName = true) => {\n cleanUpStyleSheets();\n const processedKeyframes = processKeyframes(_keyframes);\n elements.forEach(element => {\n if (processedKeyframes.length > 0) {\n const keyframeRules = generateKeyframeRules(processedKeyframes);\n keyframeName = animationId !== undefined ? animationId : generateKeyframeName(keyframeRules);\n const stylesheet = createKeyframeStylesheet(keyframeName, keyframeRules, element);\n stylesheets.push(stylesheet);\n setStyleProperty(element, 'animation-duration', `${getDuration()}ms`);\n setStyleProperty(element, 'animation-timing-function', getEasing());\n setStyleProperty(element, 'animation-delay', `${getDelay()}ms`);\n setStyleProperty(element, 'animation-fill-mode', getFill());\n setStyleProperty(element, 'animation-direction', getDirection());\n const iterationsCount = getIterations() === Infinity ? 'infinite' : getIterations().toString();\n setStyleProperty(element, 'animation-iteration-count', iterationsCount);\n setStyleProperty(element, 'animation-play-state', 'paused');\n if (toggleAnimationName) {\n setStyleProperty(element, 'animation-name', `${stylesheet.id}-alt`);\n }\n (0,_helpers_js__WEBPACK_IMPORTED_MODULE_4__.r)(() => {\n setStyleProperty(element, 'animation-name', stylesheet.id || null);\n });\n }\n });\n };\n const initializeWebAnimation = () => {\n elements.forEach(element => {\n const animation = element.animate(_keyframes, {\n id,\n delay: getDelay(),\n duration: getDuration(),\n easing: getEasing(),\n iterations: getIterations(),\n fill: getFill(),\n direction: getDirection()\n });\n animation.pause();\n webAnimations.push(animation);\n });\n if (webAnimations.length > 0) {\n webAnimations[0].onfinish = () => {\n animationFinish();\n };\n }\n };\n const initializeAnimation = (toggleAnimationName = true) => {\n beforeAnimation();\n if (_keyframes.length > 0) {\n if (supportsWebAnimations) {\n initializeWebAnimation();\n } else {\n initializeCSSAnimation(toggleAnimationName);\n }\n }\n initialized = true;\n };\n const setAnimationStep = step => {\n step = Math.min(Math.max(step, 0), 0.9999);\n if (supportsWebAnimations) {\n webAnimations.forEach(animation => {\n animation.currentTime = animation.effect.getComputedTiming().delay + getDuration() * step;\n animation.pause();\n });\n } else {\n const animationDuration = `-${getDuration() * step}ms`;\n elements.forEach(element => {\n if (_keyframes.length > 0) {\n setStyleProperty(element, 'animation-delay', animationDuration);\n setStyleProperty(element, 'animation-play-state', 'paused');\n }\n });\n }\n };\n const updateWebAnimation = step => {\n webAnimations.forEach(animation => {\n animation.effect.updateTiming({\n delay: getDelay(),\n duration: getDuration(),\n easing: getEasing(),\n iterations: getIterations(),\n fill: getFill(),\n direction: getDirection()\n });\n });\n if (step !== undefined) {\n setAnimationStep(step);\n }\n };\n const updateCSSAnimation = (toggleAnimationName = true, step) => {\n (0,_helpers_js__WEBPACK_IMPORTED_MODULE_4__.r)(() => {\n elements.forEach(element => {\n setStyleProperty(element, 'animation-name', keyframeName || null);\n setStyleProperty(element, 'animation-duration', `${getDuration()}ms`);\n setStyleProperty(element, 'animation-timing-function', getEasing());\n setStyleProperty(element, 'animation-delay', step !== undefined ? `-${step * getDuration()}ms` : `${getDelay()}ms`);\n setStyleProperty(element, 'animation-fill-mode', getFill() || null);\n setStyleProperty(element, 'animation-direction', getDirection() || null);\n const iterationsCount = getIterations() === Infinity ? 'infinite' : getIterations().toString();\n setStyleProperty(element, 'animation-iteration-count', iterationsCount);\n if (toggleAnimationName) {\n setStyleProperty(element, 'animation-name', `${keyframeName}-alt`);\n }\n (0,_helpers_js__WEBPACK_IMPORTED_MODULE_4__.r)(() => {\n setStyleProperty(element, 'animation-name', keyframeName || null);\n });\n });\n });\n };\n const update = (deep = false, toggleAnimationName = true, step) => {\n if (deep) {\n childAnimations.forEach(animation => {\n animation.update(deep, toggleAnimationName, step);\n });\n }\n if (supportsWebAnimations) {\n updateWebAnimation(step);\n } else {\n updateCSSAnimation(toggleAnimationName, step);\n }\n return ani;\n };\n const progressStart = (forceLinearEasing = false, step) => {\n childAnimations.forEach(animation => {\n animation.progressStart(forceLinearEasing, step);\n });\n pauseAnimation();\n shouldForceLinearEasing = forceLinearEasing;\n if (!initialized) {\n initializeAnimation();\n }\n update(false, true, step);\n return ani;\n };\n const progressStep = step => {\n childAnimations.forEach(animation => {\n animation.progressStep(step);\n });\n setAnimationStep(step);\n return ani;\n };\n const progressEnd = (playTo, step, dur) => {\n shouldForceLinearEasing = false;\n childAnimations.forEach(animation => {\n animation.progressEnd(playTo, step, dur);\n });\n if (dur !== undefined) {\n forceDurationValue = dur;\n }\n finished = false;\n willComplete = true;\n if (playTo === 0) {\n forceDirectionValue = getDirection() === 'reverse' ? 'normal' : 'reverse';\n if (forceDirectionValue === 'reverse') {\n willComplete = false;\n }\n if (supportsWebAnimations) {\n update();\n setAnimationStep(1 - step);\n } else {\n forceDelayValue = (1 - step) * getDuration() * -1;\n update(false, false);\n }\n } else if (playTo === 1) {\n if (supportsWebAnimations) {\n update();\n setAnimationStep(step);\n } else {\n forceDelayValue = step * getDuration() * -1;\n update(false, false);\n }\n }\n if (playTo !== undefined) {\n onFinish(() => {\n forceDurationValue = undefined;\n forceDirectionValue = undefined;\n forceDelayValue = undefined;\n }, {\n oneTimeCallback: true\n });\n if (!parentAnimation) {\n play();\n }\n }\n return ani;\n };\n const pauseAnimation = () => {\n if (initialized) {\n if (supportsWebAnimations) {\n webAnimations.forEach(animation => {\n animation.pause();\n });\n } else {\n elements.forEach(element => {\n setStyleProperty(element, 'animation-play-state', 'paused');\n });\n }\n paused = true;\n }\n };\n const pause = () => {\n childAnimations.forEach(animation => {\n animation.pause();\n });\n pauseAnimation();\n return ani;\n };\n const onAnimationEndFallback = () => {\n cssAnimationsTimerFallback = undefined;\n animationFinish();\n };\n const clearCSSAnimationsTimeout = () => {\n if (cssAnimationsTimerFallback) {\n clearTimeout(cssAnimationsTimerFallback);\n }\n };\n const playCSSAnimations = () => {\n clearCSSAnimationsTimeout();\n (0,_helpers_js__WEBPACK_IMPORTED_MODULE_4__.r)(() => {\n elements.forEach(element => {\n if (_keyframes.length > 0) {\n setStyleProperty(element, 'animation-play-state', 'running');\n }\n });\n });\n if (_keyframes.length === 0 || elements.length === 0) {\n animationFinish();\n } else {\n /**\n * This is a catchall in the event that a CSS Animation did not finish.\n * The Web Animations API has mechanisms in place for preventing this.\n * CSS Animations will not fire an `animationend` event\n * for elements with `display: none`. The Web Animations API\n * accounts for this, but using raw CSS Animations requires\n * this workaround.\n */\n const animationDelay = getDelay() || 0;\n const animationDuration = getDuration() || 0;\n const animationIterations = getIterations() || 1;\n // No need to set a timeout when animation has infinite iterations\n if (isFinite(animationIterations)) {\n cssAnimationsTimerFallback = setTimeout(onAnimationEndFallback, animationDelay + animationDuration * animationIterations + ANIMATION_END_FALLBACK_PADDING_MS);\n }\n animationEnd(elements[0], () => {\n clearCSSAnimationsTimeout();\n /**\n * Ensure that clean up\n * is always done a frame\n * before the onFinish handlers\n * are fired. Otherwise, there\n * may be flickering if a new\n * animation is started on the same\n * element too quickly\n */\n (0,_helpers_js__WEBPACK_IMPORTED_MODULE_4__.r)(() => {\n clearCSSAnimationPlayState();\n (0,_helpers_js__WEBPACK_IMPORTED_MODULE_4__.r)(animationFinish);\n });\n });\n }\n };\n const clearCSSAnimationPlayState = () => {\n elements.forEach(element => {\n removeStyleProperty(element, 'animation-duration');\n removeStyleProperty(element, 'animation-delay');\n removeStyleProperty(element, 'animation-play-state');\n });\n };\n const playWebAnimations = () => {\n webAnimations.forEach(animation => {\n animation.play();\n });\n if (_keyframes.length === 0 || elements.length === 0) {\n animationFinish();\n }\n };\n const resetAnimation = () => {\n if (supportsWebAnimations) {\n setAnimationStep(0);\n updateWebAnimation();\n } else {\n updateCSSAnimation();\n }\n };\n const play = opts => {\n return new Promise(resolve => {\n if (opts === null || opts === void 0 ? void 0 : opts.sync) {\n shouldForceSyncPlayback = true;\n onFinish(() => shouldForceSyncPlayback = false, {\n oneTimeCallback: true\n });\n }\n if (!initialized) {\n initializeAnimation();\n }\n if (finished) {\n resetAnimation();\n finished = false;\n }\n if (shouldCalculateNumAnimations) {\n numAnimationsRunning = childAnimations.length + 1;\n shouldCalculateNumAnimations = false;\n }\n onFinish(() => resolve(), {\n oneTimeCallback: true\n });\n childAnimations.forEach(animation => {\n animation.play();\n });\n if (supportsWebAnimations) {\n playWebAnimations();\n } else {\n playCSSAnimations();\n }\n paused = false;\n });\n };\n const stop = () => {\n childAnimations.forEach(animation => {\n animation.stop();\n });\n if (initialized) {\n cleanUpElements();\n initialized = false;\n }\n resetFlags();\n };\n const from = (property, value) => {\n const firstFrame = _keyframes[0];\n if (firstFrame !== undefined && (firstFrame.offset === undefined || firstFrame.offset === 0)) {\n firstFrame[property] = value;\n } else {\n _keyframes = [{\n offset: 0,\n [property]: value\n }, ..._keyframes];\n }\n return ani;\n };\n const to = (property, value) => {\n const lastFrame = _keyframes[_keyframes.length - 1];\n if (lastFrame !== undefined && (lastFrame.offset === undefined || lastFrame.offset === 1)) {\n lastFrame[property] = value;\n } else {\n _keyframes = [..._keyframes, {\n offset: 1,\n [property]: value\n }];\n }\n return ani;\n };\n const fromTo = (property, fromValue, toValue) => {\n return from(property, fromValue).to(property, toValue);\n };\n return ani = {\n parentAnimation,\n elements,\n childAnimations,\n id,\n animationFinish,\n from,\n to,\n fromTo,\n parent,\n play,\n pause,\n stop,\n destroy,\n keyframes,\n addAnimation,\n addElement,\n update,\n fill,\n direction,\n iterations,\n duration,\n easing,\n delay,\n getWebAnimations,\n getKeyframes,\n getFill,\n getDirection,\n getDelay,\n getIterations,\n getEasing,\n getDuration,\n afterAddRead,\n afterAddWrite,\n afterClearStyles,\n afterStyles,\n afterRemoveClass,\n afterAddClass,\n beforeAddRead,\n beforeAddWrite,\n beforeClearStyles,\n beforeStyles,\n beforeRemoveClass,\n beforeAddClass,\n onFinish,\n isRunning,\n progressStart,\n progressStep,\n progressEnd\n };\n};\n\n\n//# sourceURL=webpack://jandl/./node_modules/@ionic/core/components/animation.js?\n}"); /***/ }), @@ -136,7 +136,7 @@ eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpac /***/ (function(__unused_webpack_module, __webpack_exports__, __webpack_require__) { "use strict"; -eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"B\": function() { return /* binding */ Backdrop; },\n/* harmony export */ \"d\": function() { return /* binding */ defineCustomElement; }\n/* harmony export */ });\n/* harmony import */ var _stencil_core_internal_client__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @stencil/core/internal/client */ \"./node_modules/@stencil/core/internal/client/index.js\");\n/* harmony import */ var _ionic_global_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./ionic-global.js */ \"./node_modules/@ionic/core/components/ionic-global.js\");\n/* harmony import */ var _gesture_controller_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./gesture-controller.js */ \"./node_modules/@ionic/core/components/gesture-controller.js\");\n/*!\n * (C) Ionic http://ionicframework.com - MIT License\n */\n\n\n\nconst backdropIosCss = \":host{left:0;right:0;top:0;bottom:0;display:block;position:absolute;-webkit-transform:translateZ(0);transform:translateZ(0);contain:strict;cursor:pointer;opacity:0.01;-ms-touch-action:none;touch-action:none;z-index:2}:host(.backdrop-hide){background:transparent}:host(.backdrop-no-tappable){cursor:auto}:host{background-color:var(--ion-backdrop-color, #000)}\";\nconst backdropMdCss = \":host{left:0;right:0;top:0;bottom:0;display:block;position:absolute;-webkit-transform:translateZ(0);transform:translateZ(0);contain:strict;cursor:pointer;opacity:0.01;-ms-touch-action:none;touch-action:none;z-index:2}:host(.backdrop-hide){background:transparent}:host(.backdrop-no-tappable){cursor:auto}:host{background-color:var(--ion-backdrop-color, #000)}\";\nconst Backdrop = /*@__PURE__*/(0,_stencil_core_internal_client__WEBPACK_IMPORTED_MODULE_0__.proxyCustomElement)(class extends _stencil_core_internal_client__WEBPACK_IMPORTED_MODULE_0__.HTMLElement {\n constructor() {\n super();\n this.__registerHost();\n this.__attachShadow();\n this.ionBackdropTap = (0,_stencil_core_internal_client__WEBPACK_IMPORTED_MODULE_0__.createEvent)(this, \"ionBackdropTap\", 7);\n this.blocker = _gesture_controller_js__WEBPACK_IMPORTED_MODULE_1__.G.createBlocker({\n disableScroll: true\n });\n /**\n * If `true`, the backdrop will be visible.\n */\n this.visible = true;\n /**\n * If `true`, the backdrop will can be clicked and will emit the `ionBackdropTap` event.\n */\n this.tappable = true;\n /**\n * If `true`, the backdrop will stop propagation on tap.\n */\n this.stopPropagation = true;\n }\n connectedCallback() {\n if (this.stopPropagation) {\n this.blocker.block();\n }\n }\n disconnectedCallback() {\n this.blocker.unblock();\n }\n onMouseDown(ev) {\n this.emitTap(ev);\n }\n emitTap(ev) {\n if (this.stopPropagation) {\n ev.preventDefault();\n ev.stopPropagation();\n }\n if (this.tappable) {\n this.ionBackdropTap.emit();\n }\n }\n render() {\n const mode = (0,_ionic_global_js__WEBPACK_IMPORTED_MODULE_2__.b)(this);\n return (0,_stencil_core_internal_client__WEBPACK_IMPORTED_MODULE_0__.h)(_stencil_core_internal_client__WEBPACK_IMPORTED_MODULE_0__.Host, {\n tabindex: \"-1\",\n \"aria-hidden\": \"true\",\n class: {\n [mode]: true,\n 'backdrop-hide': !this.visible,\n 'backdrop-no-tappable': !this.tappable\n }\n });\n }\n static get style() {\n return {\n ios: backdropIosCss,\n md: backdropMdCss\n };\n }\n}, [33, \"ion-backdrop\", {\n \"visible\": [4],\n \"tappable\": [4],\n \"stopPropagation\": [4, \"stop-propagation\"]\n}, [[2, \"click\", \"onMouseDown\"]]]);\nfunction defineCustomElement() {\n if (typeof customElements === \"undefined\") {\n return;\n }\n const components = [\"ion-backdrop\"];\n components.forEach(tagName => {\n switch (tagName) {\n case \"ion-backdrop\":\n if (!customElements.get(tagName)) {\n customElements.define(tagName, Backdrop);\n }\n break;\n }\n });\n}\n\n\n//# sourceURL=webpack://jandl/./node_modules/@ionic/core/components/backdrop.js?"); +eval("{__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ B: function() { return /* binding */ Backdrop; },\n/* harmony export */ d: function() { return /* binding */ defineCustomElement; }\n/* harmony export */ });\n/* harmony import */ var _stencil_core_internal_client__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @stencil/core/internal/client */ \"./node_modules/@stencil/core/internal/client/index.js\");\n/* harmony import */ var _ionic_global_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./ionic-global.js */ \"./node_modules/@ionic/core/components/ionic-global.js\");\n/* harmony import */ var _gesture_controller_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./gesture-controller.js */ \"./node_modules/@ionic/core/components/gesture-controller.js\");\n/*!\n * (C) Ionic http://ionicframework.com - MIT License\n */\n\n\n\nconst backdropIosCss = \":host{left:0;right:0;top:0;bottom:0;display:block;position:absolute;-webkit-transform:translateZ(0);transform:translateZ(0);contain:strict;cursor:pointer;opacity:0.01;-ms-touch-action:none;touch-action:none;z-index:2}:host(.backdrop-hide){background:transparent}:host(.backdrop-no-tappable){cursor:auto}:host{background-color:var(--ion-backdrop-color, #000)}\";\nconst backdropMdCss = \":host{left:0;right:0;top:0;bottom:0;display:block;position:absolute;-webkit-transform:translateZ(0);transform:translateZ(0);contain:strict;cursor:pointer;opacity:0.01;-ms-touch-action:none;touch-action:none;z-index:2}:host(.backdrop-hide){background:transparent}:host(.backdrop-no-tappable){cursor:auto}:host{background-color:var(--ion-backdrop-color, #000)}\";\nconst Backdrop = /*@__PURE__*/(0,_stencil_core_internal_client__WEBPACK_IMPORTED_MODULE_0__.proxyCustomElement)(class extends _stencil_core_internal_client__WEBPACK_IMPORTED_MODULE_0__.HTMLElement {\n constructor() {\n super();\n this.__registerHost();\n this.__attachShadow();\n this.ionBackdropTap = (0,_stencil_core_internal_client__WEBPACK_IMPORTED_MODULE_0__.createEvent)(this, \"ionBackdropTap\", 7);\n this.blocker = _gesture_controller_js__WEBPACK_IMPORTED_MODULE_2__.G.createBlocker({\n disableScroll: true\n });\n /**\n * If `true`, the backdrop will be visible.\n */\n this.visible = true;\n /**\n * If `true`, the backdrop will can be clicked and will emit the `ionBackdropTap` event.\n */\n this.tappable = true;\n /**\n * If `true`, the backdrop will stop propagation on tap.\n */\n this.stopPropagation = true;\n }\n connectedCallback() {\n if (this.stopPropagation) {\n this.blocker.block();\n }\n }\n disconnectedCallback() {\n this.blocker.unblock();\n }\n onMouseDown(ev) {\n this.emitTap(ev);\n }\n emitTap(ev) {\n if (this.stopPropagation) {\n ev.preventDefault();\n ev.stopPropagation();\n }\n if (this.tappable) {\n this.ionBackdropTap.emit();\n }\n }\n render() {\n const mode = (0,_ionic_global_js__WEBPACK_IMPORTED_MODULE_1__.b)(this);\n return (0,_stencil_core_internal_client__WEBPACK_IMPORTED_MODULE_0__.h)(_stencil_core_internal_client__WEBPACK_IMPORTED_MODULE_0__.Host, {\n tabindex: \"-1\",\n \"aria-hidden\": \"true\",\n class: {\n [mode]: true,\n 'backdrop-hide': !this.visible,\n 'backdrop-no-tappable': !this.tappable\n }\n });\n }\n static get style() {\n return {\n ios: backdropIosCss,\n md: backdropMdCss\n };\n }\n}, [33, \"ion-backdrop\", {\n \"visible\": [4],\n \"tappable\": [4],\n \"stopPropagation\": [4, \"stop-propagation\"]\n}, [[2, \"click\", \"onMouseDown\"]]]);\nfunction defineCustomElement() {\n if (typeof customElements === \"undefined\") {\n return;\n }\n const components = [\"ion-backdrop\"];\n components.forEach(tagName => {\n switch (tagName) {\n case \"ion-backdrop\":\n if (!customElements.get(tagName)) {\n customElements.define(tagName, Backdrop);\n }\n break;\n }\n });\n}\n\n\n//# sourceURL=webpack://jandl/./node_modules/@ionic/core/components/backdrop.js?\n}"); /***/ }), @@ -147,7 +147,7 @@ eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpac /***/ (function(__unused_webpack_module, __webpack_exports__, __webpack_require__) { "use strict"; -eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"c\": function() { return /* binding */ createButtonActiveGesture; }\n/* harmony export */ });\n/* harmony import */ var _stencil_core_internal_client__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @stencil/core/internal/client */ \"./node_modules/@stencil/core/internal/client/index.js\");\n/* harmony import */ var _haptic_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./haptic.js */ \"./node_modules/@ionic/core/components/haptic.js\");\n/* harmony import */ var _index2_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./index2.js */ \"./node_modules/@ionic/core/components/index2.js\");\n/*!\n * (C) Ionic http://ionicframework.com - MIT License\n */\n\n\n\nconst createButtonActiveGesture = (el, isButton) => {\n let currentTouchedButton;\n let initialTouchedButton;\n const activateButtonAtPoint = (x, y, hapticFeedbackFn) => {\n if (typeof document === 'undefined') {\n return;\n }\n const target = document.elementFromPoint(x, y);\n if (!target || !isButton(target)) {\n clearActiveButton();\n return;\n }\n if (target !== currentTouchedButton) {\n clearActiveButton();\n setActiveButton(target, hapticFeedbackFn);\n }\n };\n const setActiveButton = (button, hapticFeedbackFn) => {\n currentTouchedButton = button;\n if (!initialTouchedButton) {\n initialTouchedButton = currentTouchedButton;\n }\n const buttonToModify = currentTouchedButton;\n (0,_stencil_core_internal_client__WEBPACK_IMPORTED_MODULE_0__.writeTask)(() => buttonToModify.classList.add('ion-activated'));\n hapticFeedbackFn();\n };\n const clearActiveButton = (dispatchClick = false) => {\n if (!currentTouchedButton) {\n return;\n }\n const buttonToModify = currentTouchedButton;\n (0,_stencil_core_internal_client__WEBPACK_IMPORTED_MODULE_0__.writeTask)(() => buttonToModify.classList.remove('ion-activated'));\n /**\n * Clicking on one button, but releasing on another button\n * does not dispatch a click event in browsers, so we\n * need to do it manually here. Some browsers will\n * dispatch a click if clicking on one button, dragging over\n * another button, and releasing on the original button. In that\n * case, we need to make sure we do not cause a double click there.\n */\n if (dispatchClick && initialTouchedButton !== currentTouchedButton) {\n currentTouchedButton.click();\n }\n currentTouchedButton = undefined;\n };\n return (0,_index2_js__WEBPACK_IMPORTED_MODULE_1__.createGesture)({\n el,\n gestureName: 'buttonActiveDrag',\n threshold: 0,\n onStart: ev => activateButtonAtPoint(ev.currentX, ev.currentY, _haptic_js__WEBPACK_IMPORTED_MODULE_2__.a),\n onMove: ev => activateButtonAtPoint(ev.currentX, ev.currentY, _haptic_js__WEBPACK_IMPORTED_MODULE_2__.b),\n onEnd: () => {\n clearActiveButton(true);\n (0,_haptic_js__WEBPACK_IMPORTED_MODULE_2__.c)();\n initialTouchedButton = undefined;\n }\n });\n};\n\n\n//# sourceURL=webpack://jandl/./node_modules/@ionic/core/components/button-active.js?"); +eval("{__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ c: function() { return /* binding */ createButtonActiveGesture; }\n/* harmony export */ });\n/* harmony import */ var _stencil_core_internal_client__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @stencil/core/internal/client */ \"./node_modules/@stencil/core/internal/client/index.js\");\n/* harmony import */ var _haptic_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./haptic.js */ \"./node_modules/@ionic/core/components/haptic.js\");\n/* harmony import */ var _index2_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./index2.js */ \"./node_modules/@ionic/core/components/index2.js\");\n/*!\n * (C) Ionic http://ionicframework.com - MIT License\n */\n\n\n\nconst createButtonActiveGesture = (el, isButton) => {\n let currentTouchedButton;\n let initialTouchedButton;\n const activateButtonAtPoint = (x, y, hapticFeedbackFn) => {\n if (typeof document === 'undefined') {\n return;\n }\n const target = document.elementFromPoint(x, y);\n if (!target || !isButton(target)) {\n clearActiveButton();\n return;\n }\n if (target !== currentTouchedButton) {\n clearActiveButton();\n setActiveButton(target, hapticFeedbackFn);\n }\n };\n const setActiveButton = (button, hapticFeedbackFn) => {\n currentTouchedButton = button;\n if (!initialTouchedButton) {\n initialTouchedButton = currentTouchedButton;\n }\n const buttonToModify = currentTouchedButton;\n (0,_stencil_core_internal_client__WEBPACK_IMPORTED_MODULE_0__.writeTask)(() => buttonToModify.classList.add('ion-activated'));\n hapticFeedbackFn();\n };\n const clearActiveButton = (dispatchClick = false) => {\n if (!currentTouchedButton) {\n return;\n }\n const buttonToModify = currentTouchedButton;\n (0,_stencil_core_internal_client__WEBPACK_IMPORTED_MODULE_0__.writeTask)(() => buttonToModify.classList.remove('ion-activated'));\n /**\n * Clicking on one button, but releasing on another button\n * does not dispatch a click event in browsers, so we\n * need to do it manually here. Some browsers will\n * dispatch a click if clicking on one button, dragging over\n * another button, and releasing on the original button. In that\n * case, we need to make sure we do not cause a double click there.\n */\n if (dispatchClick && initialTouchedButton !== currentTouchedButton) {\n currentTouchedButton.click();\n }\n currentTouchedButton = undefined;\n };\n return (0,_index2_js__WEBPACK_IMPORTED_MODULE_2__.createGesture)({\n el,\n gestureName: 'buttonActiveDrag',\n threshold: 0,\n onStart: ev => activateButtonAtPoint(ev.currentX, ev.currentY, _haptic_js__WEBPACK_IMPORTED_MODULE_1__.a),\n onMove: ev => activateButtonAtPoint(ev.currentX, ev.currentY, _haptic_js__WEBPACK_IMPORTED_MODULE_1__.b),\n onEnd: () => {\n clearActiveButton(true);\n (0,_haptic_js__WEBPACK_IMPORTED_MODULE_1__.c)();\n initialTouchedButton = undefined;\n }\n });\n};\n\n\n//# sourceURL=webpack://jandl/./node_modules/@ionic/core/components/button-active.js?\n}"); /***/ }), @@ -158,7 +158,7 @@ eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpac /***/ (function(__unused_webpack_module, __webpack_exports__, __webpack_require__) { "use strict"; -eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"B\": function() { return /* binding */ Button; },\n/* harmony export */ \"d\": function() { return /* binding */ defineCustomElement; }\n/* harmony export */ });\n/* harmony import */ var _stencil_core_internal_client__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @stencil/core/internal/client */ \"./node_modules/@stencil/core/internal/client/index.js\");\n/* harmony import */ var _ionic_global_js__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ./ionic-global.js */ \"./node_modules/@ionic/core/components/ionic-global.js\");\n/* harmony import */ var _helpers_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./helpers.js */ \"./node_modules/@ionic/core/components/helpers.js\");\n/* harmony import */ var _index8_js__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./index8.js */ \"./node_modules/@ionic/core/components/index8.js\");\n/* harmony import */ var _theme_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./theme.js */ \"./node_modules/@ionic/core/components/theme.js\");\n/* harmony import */ var _ripple_effect_js__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ./ripple-effect.js */ \"./node_modules/@ionic/core/components/ripple-effect.js\");\n/*!\n * (C) Ionic http://ionicframework.com - MIT License\n */\n\n\n\n\n\n\nconst buttonIosCss = \":host{--overflow:hidden;--ripple-color:currentColor;--border-width:initial;--border-color:initial;--border-style:initial;--color-activated:var(--color);--color-focused:var(--color);--color-hover:var(--color);--box-shadow:none;display:inline-block;width:auto;color:var(--color);font-family:var(--ion-font-family, inherit);text-align:center;text-decoration:none;text-overflow:ellipsis;white-space:nowrap;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;vertical-align:top;vertical-align:-webkit-baseline-middle;-webkit-font-kerning:none;font-kerning:none}:host(.button-disabled){cursor:default;opacity:0.5;pointer-events:none}:host(.button-solid){--background:var(--ion-color-primary, #3880ff);--color:var(--ion-color-primary-contrast, #fff)}:host(.button-outline){--border-color:var(--ion-color-primary, #3880ff);--background:transparent;--color:var(--ion-color-primary, #3880ff)}:host(.button-clear){--border-width:0;--background:transparent;--color:var(--ion-color-primary, #3880ff)}:host(.button-block){display:block}:host(.button-block) .button-native{margin-left:0;margin-right:0;display:block;width:100%;clear:both;contain:content}:host(.button-block) .button-native::after{clear:both}:host(.button-full){display:block}:host(.button-full) .button-native{margin-left:0;margin-right:0;display:block;width:100%;contain:content}:host(.button-full:not(.button-round)) .button-native{border-radius:0;border-right-width:0;border-left-width:0}.button-native{border-radius:var(--border-radius);-moz-osx-font-smoothing:grayscale;-webkit-font-smoothing:antialiased;margin-left:0;margin-right:0;margin-top:0;margin-bottom:0;padding-left:var(--padding-start);padding-right:var(--padding-end);padding-top:var(--padding-top);padding-bottom:var(--padding-bottom);font-family:inherit;font-size:inherit;font-style:inherit;font-weight:inherit;letter-spacing:inherit;text-decoration:inherit;text-indent:inherit;text-overflow:inherit;text-transform:inherit;text-align:inherit;white-space:inherit;color:inherit;display:block;position:relative;width:100%;height:100%;-webkit-transition:var(--transition);transition:var(--transition);border-width:var(--border-width);border-style:var(--border-style);border-color:var(--border-color);outline:none;background:var(--background);line-height:1;-webkit-box-shadow:var(--box-shadow);box-shadow:var(--box-shadow);contain:layout style;cursor:pointer;opacity:var(--opacity);overflow:var(--overflow);z-index:0;-webkit-box-sizing:border-box;box-sizing:border-box;-webkit-appearance:none;-moz-appearance:none;appearance:none}@supports ((-webkit-margin-start: 0) or (margin-inline-start: 0)) or (-webkit-margin-start: 0){.button-native{padding-left:unset;padding-right:unset;-webkit-padding-start:var(--padding-start);padding-inline-start:var(--padding-start);-webkit-padding-end:var(--padding-end);padding-inline-end:var(--padding-end)}}.button-native::-moz-focus-inner{border:0}.button-inner{display:-ms-flexbox;display:flex;position:relative;-ms-flex-flow:row nowrap;flex-flow:row nowrap;-ms-flex-negative:0;flex-shrink:0;-ms-flex-align:center;align-items:center;-ms-flex-pack:center;justify-content:center;width:100%;height:100%;z-index:1}::slotted(ion-icon){font-size:1.4em;pointer-events:none}::slotted(ion-icon[slot=start]){margin-left:-0.3em;margin-right:0.3em;margin-top:0;margin-bottom:0}@supports ((-webkit-margin-start: 0) or (margin-inline-start: 0)) or (-webkit-margin-start: 0){::slotted(ion-icon[slot=start]){margin-left:unset;margin-right:unset;-webkit-margin-start:-0.3em;margin-inline-start:-0.3em;-webkit-margin-end:0.3em;margin-inline-end:0.3em}}::slotted(ion-icon[slot=end]){margin-left:0.3em;margin-right:-0.2em;margin-top:0;margin-bottom:0}@supports ((-webkit-margin-start: 0) or (margin-inline-start: 0)) or (-webkit-margin-start: 0){::slotted(ion-icon[slot=end]){margin-left:unset;margin-right:unset;-webkit-margin-start:0.3em;margin-inline-start:0.3em;-webkit-margin-end:-0.2em;margin-inline-end:-0.2em}}::slotted(ion-icon[slot=icon-only]){font-size:1.8em}ion-ripple-effect{color:var(--ripple-color)}.button-native::after{left:0;right:0;top:0;bottom:0;position:absolute;content:\\\"\\\";opacity:0}:host(.ion-activated){color:var(--color-activated)}:host(.ion-activated) .button-native::after{background:var(--background-activated);opacity:var(--background-activated-opacity)}:host(.ion-focused){color:var(--color-focused)}:host(.ion-focused) .button-native::after{background:var(--background-focused);opacity:var(--background-focused-opacity)}@media (any-hover: hover){:host(:hover){color:var(--color-hover)}:host(:hover) .button-native::after{background:var(--background-hover);opacity:var(--background-hover-opacity)}}:host(.button-solid.ion-color) .button-native{background:var(--ion-color-base);color:var(--ion-color-contrast)}:host(.button-outline.ion-color) .button-native{border-color:var(--ion-color-base);background:transparent;color:var(--ion-color-base)}:host(.button-clear.ion-color) .button-native{background:transparent;color:var(--ion-color-base)}:host(.in-toolbar:not(.ion-color):not(.in-toolbar-color)) .button-native{color:var(--ion-toolbar-color, var(--color))}:host(.button-outline.in-toolbar:not(.ion-color):not(.in-toolbar-color)) .button-native{border-color:var(--ion-toolbar-color, var(--color, var(--border-color)))}:host(.button-solid.in-toolbar:not(.ion-color):not(.in-toolbar-color)) .button-native{background:var(--ion-toolbar-color, var(--background));color:var(--ion-toolbar-background, var(--color))}:host{--border-radius:10px;--padding-top:0;--padding-bottom:0;--padding-start:1em;--padding-end:1em;--transition:background-color, opacity 100ms linear;margin-left:2px;margin-right:2px;margin-top:4px;margin-bottom:4px;height:2.8em;font-size:16px;font-weight:500;letter-spacing:-0.03em}@supports ((-webkit-margin-start: 0) or (margin-inline-start: 0)) or (-webkit-margin-start: 0){:host{margin-left:unset;margin-right:unset;-webkit-margin-start:2px;margin-inline-start:2px;-webkit-margin-end:2px;margin-inline-end:2px}}:host(.button-solid){--background-activated:var(--ion-color-primary-shade, #3171e0);--background-focused:var(--ion-color-primary-shade, #3171e0);--background-hover:var(--ion-color-primary-tint, #4c8dff);--background-activated-opacity:1;--background-focused-opacity:1;--background-hover-opacity:1}:host(.button-outline){--border-radius:10px;--border-width:1px;--border-style:solid;--background-activated:var(--ion-color-primary, #3880ff);--background-focused:var(--ion-color-primary, #3880ff);--background-hover:transparent;--background-focused-opacity:.1;--color-activated:var(--ion-color-primary-contrast, #fff)}:host(.button-clear){--background-activated:transparent;--background-focused:var(--ion-color-primary, #3880ff);--background-hover:transparent;--background-focused-opacity:.1;font-size:17px;font-weight:normal;letter-spacing:0}:host(.button-large){--border-radius:12px;--padding-top:0;--padding-start:1em;--padding-end:1em;--padding-bottom:0;height:2.8em;font-size:20px}:host(.button-small){--border-radius:6px;--padding-top:0;--padding-start:0.9em;--padding-end:0.9em;--padding-bottom:0;height:2.1em;font-size:13px}:host(.button-round){--border-radius:64px;--padding-top:0;--padding-start:26px;--padding-end:26px;--padding-bottom:0}:host(.button-strong){font-weight:600}:host(.button-clear.ion-activated){opacity:0.4}:host(.button-outline.ion-activated.ion-color) .button-native{color:var(--ion-color-contrast)}:host(.button-outline.ion-activated.ion-color) .button-native::after{background:var(--ion-color-base)}:host(.button-solid.ion-color.ion-activated) .button-native::after{background:var(--ion-color-shade)}:host(.button-outline.ion-focused.ion-color) .button-native,:host(.button-clear.ion-focused.ion-color) .button-native{color:var(--ion-color-base)}:host(.button-outline.ion-focused.ion-color) .button-native::after,:host(.button-clear.ion-focused.ion-color) .button-native::after{background:var(--ion-color-base)}:host(.button-solid.ion-color.ion-focused) .button-native::after{background:var(--ion-color-shade)}@media (any-hover: hover){:host(.button-clear:hover),:host(.button-outline:hover){opacity:0.6}:host(.button-clear.ion-color:hover) .button-native,:host(.button-outline.ion-color:hover) .button-native{color:var(--ion-color-base)}:host(.button-clear.ion-color:hover) .button-native::after,:host(.button-outline.ion-color:hover) .button-native::after{background:transparent}:host(.button-solid.ion-color:hover) .button-native::after{background:var(--ion-color-tint)}:host(:hover.button-solid.in-toolbar:not(.ion-color):not(.in-toolbar-color)) .button-native::after{background:#fff;opacity:0.1}}\";\nconst buttonMdCss = \":host{--overflow:hidden;--ripple-color:currentColor;--border-width:initial;--border-color:initial;--border-style:initial;--color-activated:var(--color);--color-focused:var(--color);--color-hover:var(--color);--box-shadow:none;display:inline-block;width:auto;color:var(--color);font-family:var(--ion-font-family, inherit);text-align:center;text-decoration:none;text-overflow:ellipsis;white-space:nowrap;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;vertical-align:top;vertical-align:-webkit-baseline-middle;-webkit-font-kerning:none;font-kerning:none}:host(.button-disabled){cursor:default;opacity:0.5;pointer-events:none}:host(.button-solid){--background:var(--ion-color-primary, #3880ff);--color:var(--ion-color-primary-contrast, #fff)}:host(.button-outline){--border-color:var(--ion-color-primary, #3880ff);--background:transparent;--color:var(--ion-color-primary, #3880ff)}:host(.button-clear){--border-width:0;--background:transparent;--color:var(--ion-color-primary, #3880ff)}:host(.button-block){display:block}:host(.button-block) .button-native{margin-left:0;margin-right:0;display:block;width:100%;clear:both;contain:content}:host(.button-block) .button-native::after{clear:both}:host(.button-full){display:block}:host(.button-full) .button-native{margin-left:0;margin-right:0;display:block;width:100%;contain:content}:host(.button-full:not(.button-round)) .button-native{border-radius:0;border-right-width:0;border-left-width:0}.button-native{border-radius:var(--border-radius);-moz-osx-font-smoothing:grayscale;-webkit-font-smoothing:antialiased;margin-left:0;margin-right:0;margin-top:0;margin-bottom:0;padding-left:var(--padding-start);padding-right:var(--padding-end);padding-top:var(--padding-top);padding-bottom:var(--padding-bottom);font-family:inherit;font-size:inherit;font-style:inherit;font-weight:inherit;letter-spacing:inherit;text-decoration:inherit;text-indent:inherit;text-overflow:inherit;text-transform:inherit;text-align:inherit;white-space:inherit;color:inherit;display:block;position:relative;width:100%;height:100%;-webkit-transition:var(--transition);transition:var(--transition);border-width:var(--border-width);border-style:var(--border-style);border-color:var(--border-color);outline:none;background:var(--background);line-height:1;-webkit-box-shadow:var(--box-shadow);box-shadow:var(--box-shadow);contain:layout style;cursor:pointer;opacity:var(--opacity);overflow:var(--overflow);z-index:0;-webkit-box-sizing:border-box;box-sizing:border-box;-webkit-appearance:none;-moz-appearance:none;appearance:none}@supports ((-webkit-margin-start: 0) or (margin-inline-start: 0)) or (-webkit-margin-start: 0){.button-native{padding-left:unset;padding-right:unset;-webkit-padding-start:var(--padding-start);padding-inline-start:var(--padding-start);-webkit-padding-end:var(--padding-end);padding-inline-end:var(--padding-end)}}.button-native::-moz-focus-inner{border:0}.button-inner{display:-ms-flexbox;display:flex;position:relative;-ms-flex-flow:row nowrap;flex-flow:row nowrap;-ms-flex-negative:0;flex-shrink:0;-ms-flex-align:center;align-items:center;-ms-flex-pack:center;justify-content:center;width:100%;height:100%;z-index:1}::slotted(ion-icon){font-size:1.4em;pointer-events:none}::slotted(ion-icon[slot=start]){margin-left:-0.3em;margin-right:0.3em;margin-top:0;margin-bottom:0}@supports ((-webkit-margin-start: 0) or (margin-inline-start: 0)) or (-webkit-margin-start: 0){::slotted(ion-icon[slot=start]){margin-left:unset;margin-right:unset;-webkit-margin-start:-0.3em;margin-inline-start:-0.3em;-webkit-margin-end:0.3em;margin-inline-end:0.3em}}::slotted(ion-icon[slot=end]){margin-left:0.3em;margin-right:-0.2em;margin-top:0;margin-bottom:0}@supports ((-webkit-margin-start: 0) or (margin-inline-start: 0)) or (-webkit-margin-start: 0){::slotted(ion-icon[slot=end]){margin-left:unset;margin-right:unset;-webkit-margin-start:0.3em;margin-inline-start:0.3em;-webkit-margin-end:-0.2em;margin-inline-end:-0.2em}}::slotted(ion-icon[slot=icon-only]){font-size:1.8em}ion-ripple-effect{color:var(--ripple-color)}.button-native::after{left:0;right:0;top:0;bottom:0;position:absolute;content:\\\"\\\";opacity:0}:host(.ion-activated){color:var(--color-activated)}:host(.ion-activated) .button-native::after{background:var(--background-activated);opacity:var(--background-activated-opacity)}:host(.ion-focused){color:var(--color-focused)}:host(.ion-focused) .button-native::after{background:var(--background-focused);opacity:var(--background-focused-opacity)}@media (any-hover: hover){:host(:hover){color:var(--color-hover)}:host(:hover) .button-native::after{background:var(--background-hover);opacity:var(--background-hover-opacity)}}:host(.button-solid.ion-color) .button-native{background:var(--ion-color-base);color:var(--ion-color-contrast)}:host(.button-outline.ion-color) .button-native{border-color:var(--ion-color-base);background:transparent;color:var(--ion-color-base)}:host(.button-clear.ion-color) .button-native{background:transparent;color:var(--ion-color-base)}:host(.in-toolbar:not(.ion-color):not(.in-toolbar-color)) .button-native{color:var(--ion-toolbar-color, var(--color))}:host(.button-outline.in-toolbar:not(.ion-color):not(.in-toolbar-color)) .button-native{border-color:var(--ion-toolbar-color, var(--color, var(--border-color)))}:host(.button-solid.in-toolbar:not(.ion-color):not(.in-toolbar-color)) .button-native{background:var(--ion-toolbar-color, var(--background));color:var(--ion-toolbar-background, var(--color))}:host{--border-radius:4px;--padding-top:0;--padding-bottom:0;--padding-start:1.1em;--padding-end:1.1em;--transition:box-shadow 280ms cubic-bezier(.4, 0, .2, 1),\\n background-color 15ms linear,\\n color 15ms linear;margin-left:2px;margin-right:2px;margin-top:4px;margin-bottom:4px;height:36px;font-size:14px;font-weight:500;letter-spacing:0.06em;text-transform:uppercase}@supports ((-webkit-margin-start: 0) or (margin-inline-start: 0)) or (-webkit-margin-start: 0){:host{margin-left:unset;margin-right:unset;-webkit-margin-start:2px;margin-inline-start:2px;-webkit-margin-end:2px;margin-inline-end:2px}}:host(.button-solid){--background-activated:transparent;--background-hover:var(--ion-color-primary-contrast, #fff);--background-focused:var(--ion-color-primary-contrast, #fff);--background-activated-opacity:0;--background-focused-opacity:.24;--background-hover-opacity:.08;--box-shadow:0 3px 1px -2px rgba(0, 0, 0, 0.2), 0 2px 2px 0 rgba(0, 0, 0, 0.14), 0 1px 5px 0 rgba(0, 0, 0, 0.12)}:host(.button-solid.ion-activated){--box-shadow:0 5px 5px -3px rgba(0, 0, 0, 0.2), 0 8px 10px 1px rgba(0, 0, 0, 0.14), 0 3px 14px 2px rgba(0, 0, 0, 0.12)}:host(.button-outline){--border-width:2px;--border-style:solid;--box-shadow:none;--background-activated:transparent;--background-focused:var(--ion-color-primary, #3880ff);--background-hover:var(--ion-color-primary, #3880ff);--background-activated-opacity:0;--background-focused-opacity:.12;--background-hover-opacity:.04}:host(.button-outline.ion-activated.ion-color) .button-native{background:transparent}:host(.button-clear){--background-activated:transparent;--background-focused:var(--ion-color-primary, #3880ff);--background-hover:var(--ion-color-primary, #3880ff);--background-activated-opacity:0;--background-focused-opacity:.12;--background-hover-opacity:.04}:host(.button-round){--border-radius:64px;--padding-top:0;--padding-start:26px;--padding-end:26px;--padding-bottom:0}:host(.button-large){--padding-top:0;--padding-start:1em;--padding-end:1em;--padding-bottom:0;height:2.8em;font-size:20px}:host(.button-small){--padding-top:0;--padding-start:0.9em;--padding-end:0.9em;--padding-bottom:0;height:2.1em;font-size:13px}:host(.button-strong){font-weight:bold}::slotted(ion-icon[slot=icon-only]){padding-left:0;padding-right:0;padding-top:0;padding-bottom:0}:host(.button-solid.ion-color.ion-focused) .button-native::after{background:var(--ion-color-contrast)}:host(.button-clear.ion-color.ion-focused) .button-native::after,:host(.button-outline.ion-color.ion-focused) .button-native::after{background:var(--ion-color-base)}@media (any-hover: hover){:host(.button-solid.ion-color:hover) .button-native::after{background:var(--ion-color-contrast)}:host(.button-clear.ion-color:hover) .button-native::after,:host(.button-outline.ion-color:hover) .button-native::after{background:var(--ion-color-base)}}\";\nconst Button = /*@__PURE__*/(0,_stencil_core_internal_client__WEBPACK_IMPORTED_MODULE_0__.proxyCustomElement)(class extends _stencil_core_internal_client__WEBPACK_IMPORTED_MODULE_0__.HTMLElement {\n constructor() {\n super();\n this.__registerHost();\n this.__attachShadow();\n this.ionFocus = (0,_stencil_core_internal_client__WEBPACK_IMPORTED_MODULE_0__.createEvent)(this, \"ionFocus\", 7);\n this.ionBlur = (0,_stencil_core_internal_client__WEBPACK_IMPORTED_MODULE_0__.createEvent)(this, \"ionBlur\", 7);\n this.inItem = false;\n this.inListHeader = false;\n this.inToolbar = false;\n this.inheritedAttributes = {};\n /**\n * The type of button.\n */\n this.buttonType = 'button';\n /**\n * If `true`, the user cannot interact with the button.\n */\n this.disabled = false;\n /**\n * When using a router, it specifies the transition direction when navigating to\n * another page using `href`.\n */\n this.routerDirection = 'forward';\n /**\n * If `true`, activates a button with a heavier font weight.\n */\n this.strong = false;\n /**\n * The type of the button.\n */\n this.type = 'button';\n this.handleClick = ev => {\n const {\n el\n } = this;\n if (this.type === 'button') {\n (0,_theme_js__WEBPACK_IMPORTED_MODULE_1__.o)(this.href, ev, this.routerDirection, this.routerAnimation);\n } else if ((0,_helpers_js__WEBPACK_IMPORTED_MODULE_2__.q)(el)) {\n // this button wants to specifically submit a form\n // climb up the dom to see if we're in a
\n // and if so, then use JS to submit it\n let formEl = this.findForm();\n const {\n form\n } = this;\n if (!formEl && form !== undefined) {\n /**\n * The developer specified a form selector for\n * the button to submit, but it was not found.\n */\n if (typeof form === 'string') {\n (0,_index8_js__WEBPACK_IMPORTED_MODULE_3__.p)(`Form with selector: \"#${form}\" could not be found. Verify that the id is correct and the form is rendered in the DOM.`, el);\n } else {\n (0,_index8_js__WEBPACK_IMPORTED_MODULE_3__.p)(`The provided \"form\" element is invalid. Verify that the form is a HTMLFormElement and rendered in the DOM.`, el);\n }\n return;\n }\n if (!formEl) {\n /**\n * If the form element is not set, the button may be inside\n * of a form element. Query the closest form element to the button.\n */\n formEl = el.closest('form');\n }\n if (formEl) {\n ev.preventDefault();\n const fakeButton = document.createElement('button');\n fakeButton.type = this.type;\n fakeButton.style.display = 'none';\n formEl.appendChild(fakeButton);\n fakeButton.click();\n fakeButton.remove();\n }\n }\n };\n this.onFocus = () => {\n this.ionFocus.emit();\n };\n this.onBlur = () => {\n this.ionBlur.emit();\n };\n }\n componentWillLoad() {\n this.inToolbar = !!this.el.closest('ion-buttons');\n this.inListHeader = !!this.el.closest('ion-list-header');\n this.inItem = !!this.el.closest('ion-item') || !!this.el.closest('ion-item-divider');\n this.inheritedAttributes = (0,_helpers_js__WEBPACK_IMPORTED_MODULE_2__.i)(this.el);\n }\n get hasIconOnly() {\n return !!this.el.querySelector('[slot=\"icon-only\"]');\n }\n get rippleType() {\n const hasClearFill = this.fill === undefined || this.fill === 'clear';\n // If the button is in a toolbar, has a clear fill (which is the default)\n // and only has an icon we use the unbounded \"circular\" ripple effect\n if (hasClearFill && this.hasIconOnly && this.inToolbar) {\n return 'unbounded';\n }\n return 'bounded';\n }\n /**\n * Finds the form element based on the provided `form` selector\n * or element reference provided.\n */\n findForm() {\n const {\n form\n } = this;\n if (form instanceof HTMLFormElement) {\n return form;\n }\n if (typeof form === 'string') {\n const el = document.getElementById(form);\n if (el instanceof HTMLFormElement) {\n return el;\n }\n }\n return null;\n }\n render() {\n const mode = (0,_ionic_global_js__WEBPACK_IMPORTED_MODULE_4__.b)(this);\n const {\n buttonType,\n type,\n disabled,\n rel,\n target,\n size,\n href,\n color,\n expand,\n hasIconOnly,\n shape,\n strong,\n inheritedAttributes\n } = this;\n const finalSize = size === undefined && this.inItem ? 'small' : size;\n const TagType = href === undefined ? 'button' : 'a';\n const attrs = TagType === 'button' ? {\n type\n } : {\n download: this.download,\n href,\n rel,\n target\n };\n let fill = this.fill;\n if (fill === undefined) {\n fill = this.inToolbar || this.inListHeader ? 'clear' : 'solid';\n }\n return (0,_stencil_core_internal_client__WEBPACK_IMPORTED_MODULE_0__.h)(_stencil_core_internal_client__WEBPACK_IMPORTED_MODULE_0__.Host, {\n onClick: this.handleClick,\n \"aria-disabled\": disabled ? 'true' : null,\n class: (0,_theme_js__WEBPACK_IMPORTED_MODULE_1__.c)(color, {\n [mode]: true,\n [buttonType]: true,\n [`${buttonType}-${expand}`]: expand !== undefined,\n [`${buttonType}-${finalSize}`]: finalSize !== undefined,\n [`${buttonType}-${shape}`]: shape !== undefined,\n [`${buttonType}-${fill}`]: true,\n [`${buttonType}-strong`]: strong,\n 'in-toolbar': (0,_theme_js__WEBPACK_IMPORTED_MODULE_1__.h)('ion-toolbar', this.el),\n 'in-toolbar-color': (0,_theme_js__WEBPACK_IMPORTED_MODULE_1__.h)('ion-toolbar[color]', this.el),\n 'button-has-icon-only': hasIconOnly,\n 'button-disabled': disabled,\n 'ion-activatable': true,\n 'ion-focusable': true\n })\n }, (0,_stencil_core_internal_client__WEBPACK_IMPORTED_MODULE_0__.h)(TagType, Object.assign({}, attrs, {\n class: \"button-native\",\n part: \"native\",\n disabled: disabled,\n onFocus: this.onFocus,\n onBlur: this.onBlur\n }, inheritedAttributes), (0,_stencil_core_internal_client__WEBPACK_IMPORTED_MODULE_0__.h)(\"span\", {\n class: \"button-inner\"\n }, (0,_stencil_core_internal_client__WEBPACK_IMPORTED_MODULE_0__.h)(\"slot\", {\n name: \"icon-only\"\n }), (0,_stencil_core_internal_client__WEBPACK_IMPORTED_MODULE_0__.h)(\"slot\", {\n name: \"start\"\n }), (0,_stencil_core_internal_client__WEBPACK_IMPORTED_MODULE_0__.h)(\"slot\", null), (0,_stencil_core_internal_client__WEBPACK_IMPORTED_MODULE_0__.h)(\"slot\", {\n name: \"end\"\n })), mode === 'md' && (0,_stencil_core_internal_client__WEBPACK_IMPORTED_MODULE_0__.h)(\"ion-ripple-effect\", {\n type: this.rippleType\n })));\n }\n get el() {\n return this;\n }\n static get style() {\n return {\n ios: buttonIosCss,\n md: buttonMdCss\n };\n }\n}, [33, \"ion-button\", {\n \"color\": [513],\n \"buttonType\": [1025, \"button-type\"],\n \"disabled\": [516],\n \"expand\": [513],\n \"fill\": [1537],\n \"routerDirection\": [1, \"router-direction\"],\n \"routerAnimation\": [16],\n \"download\": [1],\n \"href\": [1],\n \"rel\": [1],\n \"shape\": [513],\n \"size\": [513],\n \"strong\": [4],\n \"target\": [1],\n \"type\": [1],\n \"form\": [1]\n}]);\nfunction defineCustomElement() {\n if (typeof customElements === \"undefined\") {\n return;\n }\n const components = [\"ion-button\", \"ion-ripple-effect\"];\n components.forEach(tagName => {\n switch (tagName) {\n case \"ion-button\":\n if (!customElements.get(tagName)) {\n customElements.define(tagName, Button);\n }\n break;\n case \"ion-ripple-effect\":\n if (!customElements.get(tagName)) {\n (0,_ripple_effect_js__WEBPACK_IMPORTED_MODULE_5__.d)();\n }\n break;\n }\n });\n}\n\n\n//# sourceURL=webpack://jandl/./node_modules/@ionic/core/components/button.js?"); +eval("{__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ B: function() { return /* binding */ Button; },\n/* harmony export */ d: function() { return /* binding */ defineCustomElement; }\n/* harmony export */ });\n/* harmony import */ var _stencil_core_internal_client__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @stencil/core/internal/client */ \"./node_modules/@stencil/core/internal/client/index.js\");\n/* harmony import */ var _ionic_global_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./ionic-global.js */ \"./node_modules/@ionic/core/components/ionic-global.js\");\n/* harmony import */ var _helpers_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./helpers.js */ \"./node_modules/@ionic/core/components/helpers.js\");\n/* harmony import */ var _index8_js__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./index8.js */ \"./node_modules/@ionic/core/components/index8.js\");\n/* harmony import */ var _theme_js__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ./theme.js */ \"./node_modules/@ionic/core/components/theme.js\");\n/* harmony import */ var _ripple_effect_js__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ./ripple-effect.js */ \"./node_modules/@ionic/core/components/ripple-effect.js\");\n/*!\n * (C) Ionic http://ionicframework.com - MIT License\n */\n\n\n\n\n\n\nconst buttonIosCss = \":host{--overflow:hidden;--ripple-color:currentColor;--border-width:initial;--border-color:initial;--border-style:initial;--color-activated:var(--color);--color-focused:var(--color);--color-hover:var(--color);--box-shadow:none;display:inline-block;width:auto;color:var(--color);font-family:var(--ion-font-family, inherit);text-align:center;text-decoration:none;text-overflow:ellipsis;white-space:nowrap;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;vertical-align:top;vertical-align:-webkit-baseline-middle;-webkit-font-kerning:none;font-kerning:none}:host(.button-disabled){cursor:default;opacity:0.5;pointer-events:none}:host(.button-solid){--background:var(--ion-color-primary, #3880ff);--color:var(--ion-color-primary-contrast, #fff)}:host(.button-outline){--border-color:var(--ion-color-primary, #3880ff);--background:transparent;--color:var(--ion-color-primary, #3880ff)}:host(.button-clear){--border-width:0;--background:transparent;--color:var(--ion-color-primary, #3880ff)}:host(.button-block){display:block}:host(.button-block) .button-native{margin-left:0;margin-right:0;display:block;width:100%;clear:both;contain:content}:host(.button-block) .button-native::after{clear:both}:host(.button-full){display:block}:host(.button-full) .button-native{margin-left:0;margin-right:0;display:block;width:100%;contain:content}:host(.button-full:not(.button-round)) .button-native{border-radius:0;border-right-width:0;border-left-width:0}.button-native{border-radius:var(--border-radius);-moz-osx-font-smoothing:grayscale;-webkit-font-smoothing:antialiased;margin-left:0;margin-right:0;margin-top:0;margin-bottom:0;padding-left:var(--padding-start);padding-right:var(--padding-end);padding-top:var(--padding-top);padding-bottom:var(--padding-bottom);font-family:inherit;font-size:inherit;font-style:inherit;font-weight:inherit;letter-spacing:inherit;text-decoration:inherit;text-indent:inherit;text-overflow:inherit;text-transform:inherit;text-align:inherit;white-space:inherit;color:inherit;display:block;position:relative;width:100%;height:100%;-webkit-transition:var(--transition);transition:var(--transition);border-width:var(--border-width);border-style:var(--border-style);border-color:var(--border-color);outline:none;background:var(--background);line-height:1;-webkit-box-shadow:var(--box-shadow);box-shadow:var(--box-shadow);contain:layout style;cursor:pointer;opacity:var(--opacity);overflow:var(--overflow);z-index:0;-webkit-box-sizing:border-box;box-sizing:border-box;-webkit-appearance:none;-moz-appearance:none;appearance:none}@supports ((-webkit-margin-start: 0) or (margin-inline-start: 0)) or (-webkit-margin-start: 0){.button-native{padding-left:unset;padding-right:unset;-webkit-padding-start:var(--padding-start);padding-inline-start:var(--padding-start);-webkit-padding-end:var(--padding-end);padding-inline-end:var(--padding-end)}}.button-native::-moz-focus-inner{border:0}.button-inner{display:-ms-flexbox;display:flex;position:relative;-ms-flex-flow:row nowrap;flex-flow:row nowrap;-ms-flex-negative:0;flex-shrink:0;-ms-flex-align:center;align-items:center;-ms-flex-pack:center;justify-content:center;width:100%;height:100%;z-index:1}::slotted(ion-icon){font-size:1.4em;pointer-events:none}::slotted(ion-icon[slot=start]){margin-left:-0.3em;margin-right:0.3em;margin-top:0;margin-bottom:0}@supports ((-webkit-margin-start: 0) or (margin-inline-start: 0)) or (-webkit-margin-start: 0){::slotted(ion-icon[slot=start]){margin-left:unset;margin-right:unset;-webkit-margin-start:-0.3em;margin-inline-start:-0.3em;-webkit-margin-end:0.3em;margin-inline-end:0.3em}}::slotted(ion-icon[slot=end]){margin-left:0.3em;margin-right:-0.2em;margin-top:0;margin-bottom:0}@supports ((-webkit-margin-start: 0) or (margin-inline-start: 0)) or (-webkit-margin-start: 0){::slotted(ion-icon[slot=end]){margin-left:unset;margin-right:unset;-webkit-margin-start:0.3em;margin-inline-start:0.3em;-webkit-margin-end:-0.2em;margin-inline-end:-0.2em}}::slotted(ion-icon[slot=icon-only]){font-size:1.8em}ion-ripple-effect{color:var(--ripple-color)}.button-native::after{left:0;right:0;top:0;bottom:0;position:absolute;content:\\\"\\\";opacity:0}:host(.ion-activated){color:var(--color-activated)}:host(.ion-activated) .button-native::after{background:var(--background-activated);opacity:var(--background-activated-opacity)}:host(.ion-focused){color:var(--color-focused)}:host(.ion-focused) .button-native::after{background:var(--background-focused);opacity:var(--background-focused-opacity)}@media (any-hover: hover){:host(:hover){color:var(--color-hover)}:host(:hover) .button-native::after{background:var(--background-hover);opacity:var(--background-hover-opacity)}}:host(.button-solid.ion-color) .button-native{background:var(--ion-color-base);color:var(--ion-color-contrast)}:host(.button-outline.ion-color) .button-native{border-color:var(--ion-color-base);background:transparent;color:var(--ion-color-base)}:host(.button-clear.ion-color) .button-native{background:transparent;color:var(--ion-color-base)}:host(.in-toolbar:not(.ion-color):not(.in-toolbar-color)) .button-native{color:var(--ion-toolbar-color, var(--color))}:host(.button-outline.in-toolbar:not(.ion-color):not(.in-toolbar-color)) .button-native{border-color:var(--ion-toolbar-color, var(--color, var(--border-color)))}:host(.button-solid.in-toolbar:not(.ion-color):not(.in-toolbar-color)) .button-native{background:var(--ion-toolbar-color, var(--background));color:var(--ion-toolbar-background, var(--color))}:host{--border-radius:10px;--padding-top:0;--padding-bottom:0;--padding-start:1em;--padding-end:1em;--transition:background-color, opacity 100ms linear;margin-left:2px;margin-right:2px;margin-top:4px;margin-bottom:4px;height:2.8em;font-size:16px;font-weight:500;letter-spacing:-0.03em}@supports ((-webkit-margin-start: 0) or (margin-inline-start: 0)) or (-webkit-margin-start: 0){:host{margin-left:unset;margin-right:unset;-webkit-margin-start:2px;margin-inline-start:2px;-webkit-margin-end:2px;margin-inline-end:2px}}:host(.button-solid){--background-activated:var(--ion-color-primary-shade, #3171e0);--background-focused:var(--ion-color-primary-shade, #3171e0);--background-hover:var(--ion-color-primary-tint, #4c8dff);--background-activated-opacity:1;--background-focused-opacity:1;--background-hover-opacity:1}:host(.button-outline){--border-radius:10px;--border-width:1px;--border-style:solid;--background-activated:var(--ion-color-primary, #3880ff);--background-focused:var(--ion-color-primary, #3880ff);--background-hover:transparent;--background-focused-opacity:.1;--color-activated:var(--ion-color-primary-contrast, #fff)}:host(.button-clear){--background-activated:transparent;--background-focused:var(--ion-color-primary, #3880ff);--background-hover:transparent;--background-focused-opacity:.1;font-size:17px;font-weight:normal;letter-spacing:0}:host(.button-large){--border-radius:12px;--padding-top:0;--padding-start:1em;--padding-end:1em;--padding-bottom:0;height:2.8em;font-size:20px}:host(.button-small){--border-radius:6px;--padding-top:0;--padding-start:0.9em;--padding-end:0.9em;--padding-bottom:0;height:2.1em;font-size:13px}:host(.button-round){--border-radius:64px;--padding-top:0;--padding-start:26px;--padding-end:26px;--padding-bottom:0}:host(.button-strong){font-weight:600}:host(.button-clear.ion-activated){opacity:0.4}:host(.button-outline.ion-activated.ion-color) .button-native{color:var(--ion-color-contrast)}:host(.button-outline.ion-activated.ion-color) .button-native::after{background:var(--ion-color-base)}:host(.button-solid.ion-color.ion-activated) .button-native::after{background:var(--ion-color-shade)}:host(.button-outline.ion-focused.ion-color) .button-native,:host(.button-clear.ion-focused.ion-color) .button-native{color:var(--ion-color-base)}:host(.button-outline.ion-focused.ion-color) .button-native::after,:host(.button-clear.ion-focused.ion-color) .button-native::after{background:var(--ion-color-base)}:host(.button-solid.ion-color.ion-focused) .button-native::after{background:var(--ion-color-shade)}@media (any-hover: hover){:host(.button-clear:hover),:host(.button-outline:hover){opacity:0.6}:host(.button-clear.ion-color:hover) .button-native,:host(.button-outline.ion-color:hover) .button-native{color:var(--ion-color-base)}:host(.button-clear.ion-color:hover) .button-native::after,:host(.button-outline.ion-color:hover) .button-native::after{background:transparent}:host(.button-solid.ion-color:hover) .button-native::after{background:var(--ion-color-tint)}:host(:hover.button-solid.in-toolbar:not(.ion-color):not(.in-toolbar-color)) .button-native::after{background:#fff;opacity:0.1}}\";\nconst buttonMdCss = \":host{--overflow:hidden;--ripple-color:currentColor;--border-width:initial;--border-color:initial;--border-style:initial;--color-activated:var(--color);--color-focused:var(--color);--color-hover:var(--color);--box-shadow:none;display:inline-block;width:auto;color:var(--color);font-family:var(--ion-font-family, inherit);text-align:center;text-decoration:none;text-overflow:ellipsis;white-space:nowrap;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;vertical-align:top;vertical-align:-webkit-baseline-middle;-webkit-font-kerning:none;font-kerning:none}:host(.button-disabled){cursor:default;opacity:0.5;pointer-events:none}:host(.button-solid){--background:var(--ion-color-primary, #3880ff);--color:var(--ion-color-primary-contrast, #fff)}:host(.button-outline){--border-color:var(--ion-color-primary, #3880ff);--background:transparent;--color:var(--ion-color-primary, #3880ff)}:host(.button-clear){--border-width:0;--background:transparent;--color:var(--ion-color-primary, #3880ff)}:host(.button-block){display:block}:host(.button-block) .button-native{margin-left:0;margin-right:0;display:block;width:100%;clear:both;contain:content}:host(.button-block) .button-native::after{clear:both}:host(.button-full){display:block}:host(.button-full) .button-native{margin-left:0;margin-right:0;display:block;width:100%;contain:content}:host(.button-full:not(.button-round)) .button-native{border-radius:0;border-right-width:0;border-left-width:0}.button-native{border-radius:var(--border-radius);-moz-osx-font-smoothing:grayscale;-webkit-font-smoothing:antialiased;margin-left:0;margin-right:0;margin-top:0;margin-bottom:0;padding-left:var(--padding-start);padding-right:var(--padding-end);padding-top:var(--padding-top);padding-bottom:var(--padding-bottom);font-family:inherit;font-size:inherit;font-style:inherit;font-weight:inherit;letter-spacing:inherit;text-decoration:inherit;text-indent:inherit;text-overflow:inherit;text-transform:inherit;text-align:inherit;white-space:inherit;color:inherit;display:block;position:relative;width:100%;height:100%;-webkit-transition:var(--transition);transition:var(--transition);border-width:var(--border-width);border-style:var(--border-style);border-color:var(--border-color);outline:none;background:var(--background);line-height:1;-webkit-box-shadow:var(--box-shadow);box-shadow:var(--box-shadow);contain:layout style;cursor:pointer;opacity:var(--opacity);overflow:var(--overflow);z-index:0;-webkit-box-sizing:border-box;box-sizing:border-box;-webkit-appearance:none;-moz-appearance:none;appearance:none}@supports ((-webkit-margin-start: 0) or (margin-inline-start: 0)) or (-webkit-margin-start: 0){.button-native{padding-left:unset;padding-right:unset;-webkit-padding-start:var(--padding-start);padding-inline-start:var(--padding-start);-webkit-padding-end:var(--padding-end);padding-inline-end:var(--padding-end)}}.button-native::-moz-focus-inner{border:0}.button-inner{display:-ms-flexbox;display:flex;position:relative;-ms-flex-flow:row nowrap;flex-flow:row nowrap;-ms-flex-negative:0;flex-shrink:0;-ms-flex-align:center;align-items:center;-ms-flex-pack:center;justify-content:center;width:100%;height:100%;z-index:1}::slotted(ion-icon){font-size:1.4em;pointer-events:none}::slotted(ion-icon[slot=start]){margin-left:-0.3em;margin-right:0.3em;margin-top:0;margin-bottom:0}@supports ((-webkit-margin-start: 0) or (margin-inline-start: 0)) or (-webkit-margin-start: 0){::slotted(ion-icon[slot=start]){margin-left:unset;margin-right:unset;-webkit-margin-start:-0.3em;margin-inline-start:-0.3em;-webkit-margin-end:0.3em;margin-inline-end:0.3em}}::slotted(ion-icon[slot=end]){margin-left:0.3em;margin-right:-0.2em;margin-top:0;margin-bottom:0}@supports ((-webkit-margin-start: 0) or (margin-inline-start: 0)) or (-webkit-margin-start: 0){::slotted(ion-icon[slot=end]){margin-left:unset;margin-right:unset;-webkit-margin-start:0.3em;margin-inline-start:0.3em;-webkit-margin-end:-0.2em;margin-inline-end:-0.2em}}::slotted(ion-icon[slot=icon-only]){font-size:1.8em}ion-ripple-effect{color:var(--ripple-color)}.button-native::after{left:0;right:0;top:0;bottom:0;position:absolute;content:\\\"\\\";opacity:0}:host(.ion-activated){color:var(--color-activated)}:host(.ion-activated) .button-native::after{background:var(--background-activated);opacity:var(--background-activated-opacity)}:host(.ion-focused){color:var(--color-focused)}:host(.ion-focused) .button-native::after{background:var(--background-focused);opacity:var(--background-focused-opacity)}@media (any-hover: hover){:host(:hover){color:var(--color-hover)}:host(:hover) .button-native::after{background:var(--background-hover);opacity:var(--background-hover-opacity)}}:host(.button-solid.ion-color) .button-native{background:var(--ion-color-base);color:var(--ion-color-contrast)}:host(.button-outline.ion-color) .button-native{border-color:var(--ion-color-base);background:transparent;color:var(--ion-color-base)}:host(.button-clear.ion-color) .button-native{background:transparent;color:var(--ion-color-base)}:host(.in-toolbar:not(.ion-color):not(.in-toolbar-color)) .button-native{color:var(--ion-toolbar-color, var(--color))}:host(.button-outline.in-toolbar:not(.ion-color):not(.in-toolbar-color)) .button-native{border-color:var(--ion-toolbar-color, var(--color, var(--border-color)))}:host(.button-solid.in-toolbar:not(.ion-color):not(.in-toolbar-color)) .button-native{background:var(--ion-toolbar-color, var(--background));color:var(--ion-toolbar-background, var(--color))}:host{--border-radius:4px;--padding-top:0;--padding-bottom:0;--padding-start:1.1em;--padding-end:1.1em;--transition:box-shadow 280ms cubic-bezier(.4, 0, .2, 1),\\n background-color 15ms linear,\\n color 15ms linear;margin-left:2px;margin-right:2px;margin-top:4px;margin-bottom:4px;height:36px;font-size:14px;font-weight:500;letter-spacing:0.06em;text-transform:uppercase}@supports ((-webkit-margin-start: 0) or (margin-inline-start: 0)) or (-webkit-margin-start: 0){:host{margin-left:unset;margin-right:unset;-webkit-margin-start:2px;margin-inline-start:2px;-webkit-margin-end:2px;margin-inline-end:2px}}:host(.button-solid){--background-activated:transparent;--background-hover:var(--ion-color-primary-contrast, #fff);--background-focused:var(--ion-color-primary-contrast, #fff);--background-activated-opacity:0;--background-focused-opacity:.24;--background-hover-opacity:.08;--box-shadow:0 3px 1px -2px rgba(0, 0, 0, 0.2), 0 2px 2px 0 rgba(0, 0, 0, 0.14), 0 1px 5px 0 rgba(0, 0, 0, 0.12)}:host(.button-solid.ion-activated){--box-shadow:0 5px 5px -3px rgba(0, 0, 0, 0.2), 0 8px 10px 1px rgba(0, 0, 0, 0.14), 0 3px 14px 2px rgba(0, 0, 0, 0.12)}:host(.button-outline){--border-width:2px;--border-style:solid;--box-shadow:none;--background-activated:transparent;--background-focused:var(--ion-color-primary, #3880ff);--background-hover:var(--ion-color-primary, #3880ff);--background-activated-opacity:0;--background-focused-opacity:.12;--background-hover-opacity:.04}:host(.button-outline.ion-activated.ion-color) .button-native{background:transparent}:host(.button-clear){--background-activated:transparent;--background-focused:var(--ion-color-primary, #3880ff);--background-hover:var(--ion-color-primary, #3880ff);--background-activated-opacity:0;--background-focused-opacity:.12;--background-hover-opacity:.04}:host(.button-round){--border-radius:64px;--padding-top:0;--padding-start:26px;--padding-end:26px;--padding-bottom:0}:host(.button-large){--padding-top:0;--padding-start:1em;--padding-end:1em;--padding-bottom:0;height:2.8em;font-size:20px}:host(.button-small){--padding-top:0;--padding-start:0.9em;--padding-end:0.9em;--padding-bottom:0;height:2.1em;font-size:13px}:host(.button-strong){font-weight:bold}::slotted(ion-icon[slot=icon-only]){padding-left:0;padding-right:0;padding-top:0;padding-bottom:0}:host(.button-solid.ion-color.ion-focused) .button-native::after{background:var(--ion-color-contrast)}:host(.button-clear.ion-color.ion-focused) .button-native::after,:host(.button-outline.ion-color.ion-focused) .button-native::after{background:var(--ion-color-base)}@media (any-hover: hover){:host(.button-solid.ion-color:hover) .button-native::after{background:var(--ion-color-contrast)}:host(.button-clear.ion-color:hover) .button-native::after,:host(.button-outline.ion-color:hover) .button-native::after{background:var(--ion-color-base)}}\";\nconst Button = /*@__PURE__*/(0,_stencil_core_internal_client__WEBPACK_IMPORTED_MODULE_0__.proxyCustomElement)(class extends _stencil_core_internal_client__WEBPACK_IMPORTED_MODULE_0__.HTMLElement {\n constructor() {\n super();\n this.__registerHost();\n this.__attachShadow();\n this.ionFocus = (0,_stencil_core_internal_client__WEBPACK_IMPORTED_MODULE_0__.createEvent)(this, \"ionFocus\", 7);\n this.ionBlur = (0,_stencil_core_internal_client__WEBPACK_IMPORTED_MODULE_0__.createEvent)(this, \"ionBlur\", 7);\n this.inItem = false;\n this.inListHeader = false;\n this.inToolbar = false;\n this.inheritedAttributes = {};\n /**\n * The type of button.\n */\n this.buttonType = 'button';\n /**\n * If `true`, the user cannot interact with the button.\n */\n this.disabled = false;\n /**\n * When using a router, it specifies the transition direction when navigating to\n * another page using `href`.\n */\n this.routerDirection = 'forward';\n /**\n * If `true`, activates a button with a heavier font weight.\n */\n this.strong = false;\n /**\n * The type of the button.\n */\n this.type = 'button';\n this.handleClick = ev => {\n const {\n el\n } = this;\n if (this.type === 'button') {\n (0,_theme_js__WEBPACK_IMPORTED_MODULE_4__.o)(this.href, ev, this.routerDirection, this.routerAnimation);\n } else if ((0,_helpers_js__WEBPACK_IMPORTED_MODULE_2__.q)(el)) {\n // this button wants to specifically submit a form\n // climb up the dom to see if we're in a \n // and if so, then use JS to submit it\n let formEl = this.findForm();\n const {\n form\n } = this;\n if (!formEl && form !== undefined) {\n /**\n * The developer specified a form selector for\n * the button to submit, but it was not found.\n */\n if (typeof form === 'string') {\n (0,_index8_js__WEBPACK_IMPORTED_MODULE_3__.p)(`Form with selector: \"#${form}\" could not be found. Verify that the id is correct and the form is rendered in the DOM.`, el);\n } else {\n (0,_index8_js__WEBPACK_IMPORTED_MODULE_3__.p)(`The provided \"form\" element is invalid. Verify that the form is a HTMLFormElement and rendered in the DOM.`, el);\n }\n return;\n }\n if (!formEl) {\n /**\n * If the form element is not set, the button may be inside\n * of a form element. Query the closest form element to the button.\n */\n formEl = el.closest('form');\n }\n if (formEl) {\n ev.preventDefault();\n const fakeButton = document.createElement('button');\n fakeButton.type = this.type;\n fakeButton.style.display = 'none';\n formEl.appendChild(fakeButton);\n fakeButton.click();\n fakeButton.remove();\n }\n }\n };\n this.onFocus = () => {\n this.ionFocus.emit();\n };\n this.onBlur = () => {\n this.ionBlur.emit();\n };\n }\n componentWillLoad() {\n this.inToolbar = !!this.el.closest('ion-buttons');\n this.inListHeader = !!this.el.closest('ion-list-header');\n this.inItem = !!this.el.closest('ion-item') || !!this.el.closest('ion-item-divider');\n this.inheritedAttributes = (0,_helpers_js__WEBPACK_IMPORTED_MODULE_2__.i)(this.el);\n }\n get hasIconOnly() {\n return !!this.el.querySelector('[slot=\"icon-only\"]');\n }\n get rippleType() {\n const hasClearFill = this.fill === undefined || this.fill === 'clear';\n // If the button is in a toolbar, has a clear fill (which is the default)\n // and only has an icon we use the unbounded \"circular\" ripple effect\n if (hasClearFill && this.hasIconOnly && this.inToolbar) {\n return 'unbounded';\n }\n return 'bounded';\n }\n /**\n * Finds the form element based on the provided `form` selector\n * or element reference provided.\n */\n findForm() {\n const {\n form\n } = this;\n if (form instanceof HTMLFormElement) {\n return form;\n }\n if (typeof form === 'string') {\n const el = document.getElementById(form);\n if (el instanceof HTMLFormElement) {\n return el;\n }\n }\n return null;\n }\n render() {\n const mode = (0,_ionic_global_js__WEBPACK_IMPORTED_MODULE_1__.b)(this);\n const {\n buttonType,\n type,\n disabled,\n rel,\n target,\n size,\n href,\n color,\n expand,\n hasIconOnly,\n shape,\n strong,\n inheritedAttributes\n } = this;\n const finalSize = size === undefined && this.inItem ? 'small' : size;\n const TagType = href === undefined ? 'button' : 'a';\n const attrs = TagType === 'button' ? {\n type\n } : {\n download: this.download,\n href,\n rel,\n target\n };\n let fill = this.fill;\n if (fill === undefined) {\n fill = this.inToolbar || this.inListHeader ? 'clear' : 'solid';\n }\n return (0,_stencil_core_internal_client__WEBPACK_IMPORTED_MODULE_0__.h)(_stencil_core_internal_client__WEBPACK_IMPORTED_MODULE_0__.Host, {\n onClick: this.handleClick,\n \"aria-disabled\": disabled ? 'true' : null,\n class: (0,_theme_js__WEBPACK_IMPORTED_MODULE_4__.c)(color, {\n [mode]: true,\n [buttonType]: true,\n [`${buttonType}-${expand}`]: expand !== undefined,\n [`${buttonType}-${finalSize}`]: finalSize !== undefined,\n [`${buttonType}-${shape}`]: shape !== undefined,\n [`${buttonType}-${fill}`]: true,\n [`${buttonType}-strong`]: strong,\n 'in-toolbar': (0,_theme_js__WEBPACK_IMPORTED_MODULE_4__.h)('ion-toolbar', this.el),\n 'in-toolbar-color': (0,_theme_js__WEBPACK_IMPORTED_MODULE_4__.h)('ion-toolbar[color]', this.el),\n 'button-has-icon-only': hasIconOnly,\n 'button-disabled': disabled,\n 'ion-activatable': true,\n 'ion-focusable': true\n })\n }, (0,_stencil_core_internal_client__WEBPACK_IMPORTED_MODULE_0__.h)(TagType, Object.assign({}, attrs, {\n class: \"button-native\",\n part: \"native\",\n disabled: disabled,\n onFocus: this.onFocus,\n onBlur: this.onBlur\n }, inheritedAttributes), (0,_stencil_core_internal_client__WEBPACK_IMPORTED_MODULE_0__.h)(\"span\", {\n class: \"button-inner\"\n }, (0,_stencil_core_internal_client__WEBPACK_IMPORTED_MODULE_0__.h)(\"slot\", {\n name: \"icon-only\"\n }), (0,_stencil_core_internal_client__WEBPACK_IMPORTED_MODULE_0__.h)(\"slot\", {\n name: \"start\"\n }), (0,_stencil_core_internal_client__WEBPACK_IMPORTED_MODULE_0__.h)(\"slot\", null), (0,_stencil_core_internal_client__WEBPACK_IMPORTED_MODULE_0__.h)(\"slot\", {\n name: \"end\"\n })), mode === 'md' && (0,_stencil_core_internal_client__WEBPACK_IMPORTED_MODULE_0__.h)(\"ion-ripple-effect\", {\n type: this.rippleType\n })));\n }\n get el() {\n return this;\n }\n static get style() {\n return {\n ios: buttonIosCss,\n md: buttonMdCss\n };\n }\n}, [33, \"ion-button\", {\n \"color\": [513],\n \"buttonType\": [1025, \"button-type\"],\n \"disabled\": [516],\n \"expand\": [513],\n \"fill\": [1537],\n \"routerDirection\": [1, \"router-direction\"],\n \"routerAnimation\": [16],\n \"download\": [1],\n \"href\": [1],\n \"rel\": [1],\n \"shape\": [513],\n \"size\": [513],\n \"strong\": [4],\n \"target\": [1],\n \"type\": [1],\n \"form\": [1]\n}]);\nfunction defineCustomElement() {\n if (typeof customElements === \"undefined\") {\n return;\n }\n const components = [\"ion-button\", \"ion-ripple-effect\"];\n components.forEach(tagName => {\n switch (tagName) {\n case \"ion-button\":\n if (!customElements.get(tagName)) {\n customElements.define(tagName, Button);\n }\n break;\n case \"ion-ripple-effect\":\n if (!customElements.get(tagName)) {\n (0,_ripple_effect_js__WEBPACK_IMPORTED_MODULE_5__.d)();\n }\n break;\n }\n });\n}\n\n\n//# sourceURL=webpack://jandl/./node_modules/@ionic/core/components/button.js?\n}"); /***/ }), @@ -169,7 +169,7 @@ eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpac /***/ (function(__unused_webpack_module, __webpack_exports__, __webpack_require__) { "use strict"; -eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"B\": function() { return /* binding */ Buttons; },\n/* harmony export */ \"d\": function() { return /* binding */ defineCustomElement; }\n/* harmony export */ });\n/* harmony import */ var _stencil_core_internal_client__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @stencil/core/internal/client */ \"./node_modules/@stencil/core/internal/client/index.js\");\n/* harmony import */ var _ionic_global_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./ionic-global.js */ \"./node_modules/@ionic/core/components/ionic-global.js\");\n/*!\n * (C) Ionic http://ionicframework.com - MIT License\n */\n\n\nconst buttonsIosCss = \".sc-ion-buttons-ios-h{display:-ms-flexbox;display:flex;-ms-flex-align:center;align-items:center;-webkit-transform:translateZ(0);transform:translateZ(0);z-index:99}.sc-ion-buttons-ios-s ion-button{--padding-top:0;--padding-bottom:0;margin-left:0;margin-right:0;margin-top:0;margin-bottom:0}.sc-ion-buttons-ios-s ion-button{--padding-start:5px;--padding-end:5px;margin-left:2px;margin-right:2px;height:32px;font-size:17px;font-weight:400}@supports ((-webkit-margin-start: 0) or (margin-inline-start: 0)) or (-webkit-margin-start: 0){.sc-ion-buttons-ios-s ion-button{margin-left:unset;margin-right:unset;-webkit-margin-start:2px;margin-inline-start:2px;-webkit-margin-end:2px;margin-inline-end:2px}}.sc-ion-buttons-ios-s ion-button:not(.button-round){--border-radius:4px}.sc-ion-buttons-ios-h.ion-color.sc-ion-buttons-ios-s .button,.ion-color .sc-ion-buttons-ios-h.sc-ion-buttons-ios-s .button{--color:initial;--border-color:initial;--background-focused:var(--ion-color-contrast)}.sc-ion-buttons-ios-h.ion-color.sc-ion-buttons-ios-s .button-solid,.ion-color .sc-ion-buttons-ios-h.sc-ion-buttons-ios-s .button-solid{--background:var(--ion-color-contrast);--background-focused:#000;--background-focused-opacity:.12;--background-activated:#000;--background-activated-opacity:.12;--background-hover:var(--ion-color-base);--background-hover-opacity:0.45;--color:var(--ion-color-base);--color-focused:var(--ion-color-base)}.sc-ion-buttons-ios-h.ion-color.sc-ion-buttons-ios-s .button-clear,.ion-color .sc-ion-buttons-ios-h.sc-ion-buttons-ios-s .button-clear{--color-activated:var(--ion-color-contrast);--color-focused:var(--ion-color-contrast)}.sc-ion-buttons-ios-h.ion-color.sc-ion-buttons-ios-s .button-outline,.ion-color .sc-ion-buttons-ios-h.sc-ion-buttons-ios-s .button-outline{--color-activated:var(--ion-color-base);--color-focused:var(--ion-color-contrast)}.sc-ion-buttons-ios-s .button-clear,.sc-ion-buttons-ios-s .button-outline{--background-activated:transparent;--background-focused:currentColor;--background-hover:transparent}.sc-ion-buttons-ios-s .button-solid:not(.ion-color){--background-focused:#000;--background-focused-opacity:.12;--background-activated:#000;--background-activated-opacity:.12}.sc-ion-buttons-ios-s ion-icon[slot=start]{margin-left:0;margin-right:0;margin-top:0;margin-bottom:0;margin-right:0.3em;font-size:24px;line-height:0.67}@supports ((-webkit-margin-start: 0) or (margin-inline-start: 0)) or (-webkit-margin-start: 0){.sc-ion-buttons-ios-s ion-icon[slot=start]{margin-right:unset;-webkit-margin-end:0.3em;margin-inline-end:0.3em}}.sc-ion-buttons-ios-s ion-icon[slot=end]{margin-left:0;margin-right:0;margin-top:0;margin-bottom:0;margin-left:0.4em;font-size:24px;line-height:0.67}@supports ((-webkit-margin-start: 0) or (margin-inline-start: 0)) or (-webkit-margin-start: 0){.sc-ion-buttons-ios-s ion-icon[slot=end]{margin-left:unset;-webkit-margin-start:0.4em;margin-inline-start:0.4em}}.sc-ion-buttons-ios-s ion-icon[slot=icon-only]{padding-left:0;padding-right:0;padding-top:0;padding-bottom:0;margin-left:0;margin-right:0;margin-top:0;margin-bottom:0;font-size:28px;line-height:0.67}\";\nconst buttonsMdCss = \".sc-ion-buttons-md-h{display:-ms-flexbox;display:flex;-ms-flex-align:center;align-items:center;-webkit-transform:translateZ(0);transform:translateZ(0);z-index:99}.sc-ion-buttons-md-s ion-button{--padding-top:0;--padding-bottom:0;margin-left:0;margin-right:0;margin-top:0;margin-bottom:0}.sc-ion-buttons-md-s ion-button{--padding-top:0;--padding-bottom:0;--padding-start:8px;--padding-end:8px;--box-shadow:none;margin-left:2px;margin-right:2px;height:32px;font-size:14px;font-weight:500}@supports ((-webkit-margin-start: 0) or (margin-inline-start: 0)) or (-webkit-margin-start: 0){.sc-ion-buttons-md-s ion-button{margin-left:unset;margin-right:unset;-webkit-margin-start:2px;margin-inline-start:2px;-webkit-margin-end:2px;margin-inline-end:2px}}.sc-ion-buttons-md-s ion-button:not(.button-round){--border-radius:2px}.sc-ion-buttons-md-h.ion-color.sc-ion-buttons-md-s .button,.ion-color .sc-ion-buttons-md-h.sc-ion-buttons-md-s .button{--color:initial;--color-focused:var(--ion-color-contrast);--color-hover:var(--ion-color-contrast);--background-activated:transparent;--background-focused:var(--ion-color-contrast);--background-hover:var(--ion-color-contrast)}.sc-ion-buttons-md-h.ion-color.sc-ion-buttons-md-s .button-solid,.ion-color .sc-ion-buttons-md-h.sc-ion-buttons-md-s .button-solid{--background:var(--ion-color-contrast);--background-activated:transparent;--background-focused:var(--ion-color-shade);--background-hover:var(--ion-color-base);--color:var(--ion-color-base);--color-focused:var(--ion-color-base);--color-hover:var(--ion-color-base)}.sc-ion-buttons-md-h.ion-color.sc-ion-buttons-md-s .button-outline,.ion-color .sc-ion-buttons-md-h.sc-ion-buttons-md-s .button-outline{--border-color:var(--ion-color-contrast)}.sc-ion-buttons-md-s .button-has-icon-only.button-clear{--padding-top:12px;--padding-end:12px;--padding-bottom:12px;--padding-start:12px;--border-radius:50%;margin-left:0;margin-right:0;margin-top:0;margin-bottom:0;width:48px;height:48px}.sc-ion-buttons-md-s .button{--background-hover:currentColor}.sc-ion-buttons-md-s .button-solid{--color:var(--ion-toolbar-background, var(--ion-background-color, #fff));--background:var(--ion-toolbar-color, var(--ion-text-color, #424242));--background-activated:transparent;--background-focused:currentColor}.sc-ion-buttons-md-s .button-outline{--color:initial;--background:transparent;--background-activated:transparent;--background-focused:currentColor;--background-hover:currentColor;--border-color:currentColor}.sc-ion-buttons-md-s .button-clear{--color:initial;--background:transparent;--background-activated:transparent;--background-focused:currentColor;--background-hover:currentColor}.sc-ion-buttons-md-s ion-icon[slot=start]{margin-left:0;margin-right:0;margin-top:0;margin-bottom:0;margin-right:0.3em;font-size:1.4em}@supports ((-webkit-margin-start: 0) or (margin-inline-start: 0)) or (-webkit-margin-start: 0){.sc-ion-buttons-md-s ion-icon[slot=start]{margin-right:unset;-webkit-margin-end:0.3em;margin-inline-end:0.3em}}.sc-ion-buttons-md-s ion-icon[slot=end]{margin-left:0;margin-right:0;margin-top:0;margin-bottom:0;margin-left:0.4em;font-size:1.4em}@supports ((-webkit-margin-start: 0) or (margin-inline-start: 0)) or (-webkit-margin-start: 0){.sc-ion-buttons-md-s ion-icon[slot=end]{margin-left:unset;-webkit-margin-start:0.4em;margin-inline-start:0.4em}}.sc-ion-buttons-md-s ion-icon[slot=icon-only]{padding-left:0;padding-right:0;padding-top:0;padding-bottom:0;margin-left:0;margin-right:0;margin-top:0;margin-bottom:0;font-size:1.8em}\";\nconst Buttons = /*@__PURE__*/(0,_stencil_core_internal_client__WEBPACK_IMPORTED_MODULE_0__.proxyCustomElement)(class extends _stencil_core_internal_client__WEBPACK_IMPORTED_MODULE_0__.HTMLElement {\n constructor() {\n super();\n this.__registerHost();\n /**\n * If true, buttons will disappear when its\n * parent toolbar has fully collapsed if the toolbar\n * is not the first toolbar. If the toolbar is the\n * first toolbar, the buttons will be hidden and will\n * only be shown once all toolbars have fully collapsed.\n *\n * Only applies in `ios` mode with `collapse` set to\n * `true` on `ion-header`.\n *\n * Typically used for [Collapsible Large Titles](https://ionicframework.com/docs/api/title#collapsible-large-titles)\n */\n this.collapse = false;\n }\n render() {\n const mode = (0,_ionic_global_js__WEBPACK_IMPORTED_MODULE_1__.b)(this);\n return (0,_stencil_core_internal_client__WEBPACK_IMPORTED_MODULE_0__.h)(_stencil_core_internal_client__WEBPACK_IMPORTED_MODULE_0__.Host, {\n class: {\n [mode]: true,\n ['buttons-collapse']: this.collapse\n }\n });\n }\n static get style() {\n return {\n ios: buttonsIosCss,\n md: buttonsMdCss\n };\n }\n}, [34, \"ion-buttons\", {\n \"collapse\": [4]\n}]);\nfunction defineCustomElement() {\n if (typeof customElements === \"undefined\") {\n return;\n }\n const components = [\"ion-buttons\"];\n components.forEach(tagName => {\n switch (tagName) {\n case \"ion-buttons\":\n if (!customElements.get(tagName)) {\n customElements.define(tagName, Buttons);\n }\n break;\n }\n });\n}\n\n\n//# sourceURL=webpack://jandl/./node_modules/@ionic/core/components/buttons.js?"); +eval("{__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ B: function() { return /* binding */ Buttons; },\n/* harmony export */ d: function() { return /* binding */ defineCustomElement; }\n/* harmony export */ });\n/* harmony import */ var _stencil_core_internal_client__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @stencil/core/internal/client */ \"./node_modules/@stencil/core/internal/client/index.js\");\n/* harmony import */ var _ionic_global_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./ionic-global.js */ \"./node_modules/@ionic/core/components/ionic-global.js\");\n/*!\n * (C) Ionic http://ionicframework.com - MIT License\n */\n\n\nconst buttonsIosCss = \".sc-ion-buttons-ios-h{display:-ms-flexbox;display:flex;-ms-flex-align:center;align-items:center;-webkit-transform:translateZ(0);transform:translateZ(0);z-index:99}.sc-ion-buttons-ios-s ion-button{--padding-top:0;--padding-bottom:0;margin-left:0;margin-right:0;margin-top:0;margin-bottom:0}.sc-ion-buttons-ios-s ion-button{--padding-start:5px;--padding-end:5px;margin-left:2px;margin-right:2px;height:32px;font-size:17px;font-weight:400}@supports ((-webkit-margin-start: 0) or (margin-inline-start: 0)) or (-webkit-margin-start: 0){.sc-ion-buttons-ios-s ion-button{margin-left:unset;margin-right:unset;-webkit-margin-start:2px;margin-inline-start:2px;-webkit-margin-end:2px;margin-inline-end:2px}}.sc-ion-buttons-ios-s ion-button:not(.button-round){--border-radius:4px}.sc-ion-buttons-ios-h.ion-color.sc-ion-buttons-ios-s .button,.ion-color .sc-ion-buttons-ios-h.sc-ion-buttons-ios-s .button{--color:initial;--border-color:initial;--background-focused:var(--ion-color-contrast)}.sc-ion-buttons-ios-h.ion-color.sc-ion-buttons-ios-s .button-solid,.ion-color .sc-ion-buttons-ios-h.sc-ion-buttons-ios-s .button-solid{--background:var(--ion-color-contrast);--background-focused:#000;--background-focused-opacity:.12;--background-activated:#000;--background-activated-opacity:.12;--background-hover:var(--ion-color-base);--background-hover-opacity:0.45;--color:var(--ion-color-base);--color-focused:var(--ion-color-base)}.sc-ion-buttons-ios-h.ion-color.sc-ion-buttons-ios-s .button-clear,.ion-color .sc-ion-buttons-ios-h.sc-ion-buttons-ios-s .button-clear{--color-activated:var(--ion-color-contrast);--color-focused:var(--ion-color-contrast)}.sc-ion-buttons-ios-h.ion-color.sc-ion-buttons-ios-s .button-outline,.ion-color .sc-ion-buttons-ios-h.sc-ion-buttons-ios-s .button-outline{--color-activated:var(--ion-color-base);--color-focused:var(--ion-color-contrast)}.sc-ion-buttons-ios-s .button-clear,.sc-ion-buttons-ios-s .button-outline{--background-activated:transparent;--background-focused:currentColor;--background-hover:transparent}.sc-ion-buttons-ios-s .button-solid:not(.ion-color){--background-focused:#000;--background-focused-opacity:.12;--background-activated:#000;--background-activated-opacity:.12}.sc-ion-buttons-ios-s ion-icon[slot=start]{margin-left:0;margin-right:0;margin-top:0;margin-bottom:0;margin-right:0.3em;font-size:24px;line-height:0.67}@supports ((-webkit-margin-start: 0) or (margin-inline-start: 0)) or (-webkit-margin-start: 0){.sc-ion-buttons-ios-s ion-icon[slot=start]{margin-right:unset;-webkit-margin-end:0.3em;margin-inline-end:0.3em}}.sc-ion-buttons-ios-s ion-icon[slot=end]{margin-left:0;margin-right:0;margin-top:0;margin-bottom:0;margin-left:0.4em;font-size:24px;line-height:0.67}@supports ((-webkit-margin-start: 0) or (margin-inline-start: 0)) or (-webkit-margin-start: 0){.sc-ion-buttons-ios-s ion-icon[slot=end]{margin-left:unset;-webkit-margin-start:0.4em;margin-inline-start:0.4em}}.sc-ion-buttons-ios-s ion-icon[slot=icon-only]{padding-left:0;padding-right:0;padding-top:0;padding-bottom:0;margin-left:0;margin-right:0;margin-top:0;margin-bottom:0;font-size:28px;line-height:0.67}\";\nconst buttonsMdCss = \".sc-ion-buttons-md-h{display:-ms-flexbox;display:flex;-ms-flex-align:center;align-items:center;-webkit-transform:translateZ(0);transform:translateZ(0);z-index:99}.sc-ion-buttons-md-s ion-button{--padding-top:0;--padding-bottom:0;margin-left:0;margin-right:0;margin-top:0;margin-bottom:0}.sc-ion-buttons-md-s ion-button{--padding-top:0;--padding-bottom:0;--padding-start:8px;--padding-end:8px;--box-shadow:none;margin-left:2px;margin-right:2px;height:32px;font-size:14px;font-weight:500}@supports ((-webkit-margin-start: 0) or (margin-inline-start: 0)) or (-webkit-margin-start: 0){.sc-ion-buttons-md-s ion-button{margin-left:unset;margin-right:unset;-webkit-margin-start:2px;margin-inline-start:2px;-webkit-margin-end:2px;margin-inline-end:2px}}.sc-ion-buttons-md-s ion-button:not(.button-round){--border-radius:2px}.sc-ion-buttons-md-h.ion-color.sc-ion-buttons-md-s .button,.ion-color .sc-ion-buttons-md-h.sc-ion-buttons-md-s .button{--color:initial;--color-focused:var(--ion-color-contrast);--color-hover:var(--ion-color-contrast);--background-activated:transparent;--background-focused:var(--ion-color-contrast);--background-hover:var(--ion-color-contrast)}.sc-ion-buttons-md-h.ion-color.sc-ion-buttons-md-s .button-solid,.ion-color .sc-ion-buttons-md-h.sc-ion-buttons-md-s .button-solid{--background:var(--ion-color-contrast);--background-activated:transparent;--background-focused:var(--ion-color-shade);--background-hover:var(--ion-color-base);--color:var(--ion-color-base);--color-focused:var(--ion-color-base);--color-hover:var(--ion-color-base)}.sc-ion-buttons-md-h.ion-color.sc-ion-buttons-md-s .button-outline,.ion-color .sc-ion-buttons-md-h.sc-ion-buttons-md-s .button-outline{--border-color:var(--ion-color-contrast)}.sc-ion-buttons-md-s .button-has-icon-only.button-clear{--padding-top:12px;--padding-end:12px;--padding-bottom:12px;--padding-start:12px;--border-radius:50%;margin-left:0;margin-right:0;margin-top:0;margin-bottom:0;width:48px;height:48px}.sc-ion-buttons-md-s .button{--background-hover:currentColor}.sc-ion-buttons-md-s .button-solid{--color:var(--ion-toolbar-background, var(--ion-background-color, #fff));--background:var(--ion-toolbar-color, var(--ion-text-color, #424242));--background-activated:transparent;--background-focused:currentColor}.sc-ion-buttons-md-s .button-outline{--color:initial;--background:transparent;--background-activated:transparent;--background-focused:currentColor;--background-hover:currentColor;--border-color:currentColor}.sc-ion-buttons-md-s .button-clear{--color:initial;--background:transparent;--background-activated:transparent;--background-focused:currentColor;--background-hover:currentColor}.sc-ion-buttons-md-s ion-icon[slot=start]{margin-left:0;margin-right:0;margin-top:0;margin-bottom:0;margin-right:0.3em;font-size:1.4em}@supports ((-webkit-margin-start: 0) or (margin-inline-start: 0)) or (-webkit-margin-start: 0){.sc-ion-buttons-md-s ion-icon[slot=start]{margin-right:unset;-webkit-margin-end:0.3em;margin-inline-end:0.3em}}.sc-ion-buttons-md-s ion-icon[slot=end]{margin-left:0;margin-right:0;margin-top:0;margin-bottom:0;margin-left:0.4em;font-size:1.4em}@supports ((-webkit-margin-start: 0) or (margin-inline-start: 0)) or (-webkit-margin-start: 0){.sc-ion-buttons-md-s ion-icon[slot=end]{margin-left:unset;-webkit-margin-start:0.4em;margin-inline-start:0.4em}}.sc-ion-buttons-md-s ion-icon[slot=icon-only]{padding-left:0;padding-right:0;padding-top:0;padding-bottom:0;margin-left:0;margin-right:0;margin-top:0;margin-bottom:0;font-size:1.8em}\";\nconst Buttons = /*@__PURE__*/(0,_stencil_core_internal_client__WEBPACK_IMPORTED_MODULE_0__.proxyCustomElement)(class extends _stencil_core_internal_client__WEBPACK_IMPORTED_MODULE_0__.HTMLElement {\n constructor() {\n super();\n this.__registerHost();\n /**\n * If true, buttons will disappear when its\n * parent toolbar has fully collapsed if the toolbar\n * is not the first toolbar. If the toolbar is the\n * first toolbar, the buttons will be hidden and will\n * only be shown once all toolbars have fully collapsed.\n *\n * Only applies in `ios` mode with `collapse` set to\n * `true` on `ion-header`.\n *\n * Typically used for [Collapsible Large Titles](https://ionicframework.com/docs/api/title#collapsible-large-titles)\n */\n this.collapse = false;\n }\n render() {\n const mode = (0,_ionic_global_js__WEBPACK_IMPORTED_MODULE_1__.b)(this);\n return (0,_stencil_core_internal_client__WEBPACK_IMPORTED_MODULE_0__.h)(_stencil_core_internal_client__WEBPACK_IMPORTED_MODULE_0__.Host, {\n class: {\n [mode]: true,\n ['buttons-collapse']: this.collapse\n }\n });\n }\n static get style() {\n return {\n ios: buttonsIosCss,\n md: buttonsMdCss\n };\n }\n}, [34, \"ion-buttons\", {\n \"collapse\": [4]\n}]);\nfunction defineCustomElement() {\n if (typeof customElements === \"undefined\") {\n return;\n }\n const components = [\"ion-buttons\"];\n components.forEach(tagName => {\n switch (tagName) {\n case \"ion-buttons\":\n if (!customElements.get(tagName)) {\n customElements.define(tagName, Buttons);\n }\n break;\n }\n });\n}\n\n\n//# sourceURL=webpack://jandl/./node_modules/@ionic/core/components/buttons.js?\n}"); /***/ }), @@ -180,7 +180,7 @@ eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpac /***/ (function(__unused_webpack_module, __webpack_exports__, __webpack_require__) { "use strict"; -eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"C\": function() { return /* binding */ Checkbox; },\n/* harmony export */ \"d\": function() { return /* binding */ defineCustomElement; }\n/* harmony export */ });\n/* harmony import */ var _stencil_core_internal_client__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @stencil/core/internal/client */ \"./node_modules/@stencil/core/internal/client/index.js\");\n/* harmony import */ var _ionic_global_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./ionic-global.js */ \"./node_modules/@ionic/core/components/ionic-global.js\");\n/* harmony import */ var _helpers_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./helpers.js */ \"./node_modules/@ionic/core/components/helpers.js\");\n/* harmony import */ var _theme_js__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./theme.js */ \"./node_modules/@ionic/core/components/theme.js\");\n/*!\n * (C) Ionic http://ionicframework.com - MIT License\n */\n\n\n\n\nconst checkboxIosCss = \":host{--background-checked:var(--ion-color-primary, #3880ff);--border-color-checked:var(--ion-color-primary, #3880ff);--checkmark-color:var(--ion-color-primary-contrast, #fff);--checkmark-width:1;--transition:none;display:inline-block;position:relative;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;z-index:2}:host(.ion-color){--background-checked:var(--ion-color-base);--border-color-checked:var(--ion-color-base);--checkmark-color:var(--ion-color-contrast)}label{left:0;top:0;margin-left:0;margin-right:0;margin-top:0;margin-bottom:0;position:absolute;width:100%;height:100%;border:0;background:transparent;cursor:pointer;-webkit-appearance:none;-moz-appearance:none;appearance:none;outline:none;display:-ms-flexbox;display:flex;-ms-flex-align:center;align-items:center;opacity:0}[dir=rtl] label,:host-context([dir=rtl]) label{left:unset;right:unset;right:0}label::-moz-focus-inner{border:0}input{position:absolute;top:0;left:0;right:0;bottom:0;width:100%;height:100%;margin:0;padding:0;border:0;outline:0;clip:rect(0 0 0 0);opacity:0;overflow:hidden;-webkit-appearance:none;-moz-appearance:none}.checkbox-icon{border-radius:var(--border-radius);display:block;position:relative;width:100%;height:100%;-webkit-transition:var(--transition);transition:var(--transition);border-width:var(--border-width);border-style:var(--border-style);border-color:var(--border-color);background:var(--background);-webkit-box-sizing:border-box;box-sizing:border-box}.checkbox-icon path{fill:none;stroke:var(--checkmark-color);stroke-width:var(--checkmark-width);opacity:0}:host(.checkbox-checked) .checkbox-icon,:host(.checkbox-indeterminate) .checkbox-icon{border-color:var(--border-color-checked);background:var(--background-checked)}:host(.checkbox-checked) .checkbox-icon path,:host(.checkbox-indeterminate) .checkbox-icon path{opacity:1}:host(.checkbox-disabled){pointer-events:none}:host{--border-radius:50%;--border-width:1px;--border-style:solid;--border-color:rgba(var(--ion-text-color-rgb, 0, 0, 0), 0.23);--background:var(--ion-item-background, var(--ion-background-color, #fff));--size:26px;width:var(--size);height:var(--size)}:host(.checkbox-disabled){opacity:0.3}:host(.in-item){margin-left:0;margin-right:8px;margin-top:10px;margin-bottom:9px;display:block;position:static}@supports ((-webkit-margin-start: 0) or (margin-inline-start: 0)) or (-webkit-margin-start: 0){:host(.in-item){margin-left:unset;margin-right:unset;-webkit-margin-start:0;margin-inline-start:0;-webkit-margin-end:8px;margin-inline-end:8px}}:host(.in-item[slot=start]){margin-left:2px;margin-right:20px;margin-top:8px;margin-bottom:8px}@supports ((-webkit-margin-start: 0) or (margin-inline-start: 0)) or (-webkit-margin-start: 0){:host(.in-item[slot=start]){margin-left:unset;margin-right:unset;-webkit-margin-start:2px;margin-inline-start:2px;-webkit-margin-end:20px;margin-inline-end:20px}}\";\nconst checkboxMdCss = \":host{--background-checked:var(--ion-color-primary, #3880ff);--border-color-checked:var(--ion-color-primary, #3880ff);--checkmark-color:var(--ion-color-primary-contrast, #fff);--checkmark-width:1;--transition:none;display:inline-block;position:relative;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;z-index:2}:host(.ion-color){--background-checked:var(--ion-color-base);--border-color-checked:var(--ion-color-base);--checkmark-color:var(--ion-color-contrast)}label{left:0;top:0;margin-left:0;margin-right:0;margin-top:0;margin-bottom:0;position:absolute;width:100%;height:100%;border:0;background:transparent;cursor:pointer;-webkit-appearance:none;-moz-appearance:none;appearance:none;outline:none;display:-ms-flexbox;display:flex;-ms-flex-align:center;align-items:center;opacity:0}[dir=rtl] label,:host-context([dir=rtl]) label{left:unset;right:unset;right:0}label::-moz-focus-inner{border:0}input{position:absolute;top:0;left:0;right:0;bottom:0;width:100%;height:100%;margin:0;padding:0;border:0;outline:0;clip:rect(0 0 0 0);opacity:0;overflow:hidden;-webkit-appearance:none;-moz-appearance:none}.checkbox-icon{border-radius:var(--border-radius);display:block;position:relative;width:100%;height:100%;-webkit-transition:var(--transition);transition:var(--transition);border-width:var(--border-width);border-style:var(--border-style);border-color:var(--border-color);background:var(--background);-webkit-box-sizing:border-box;box-sizing:border-box}.checkbox-icon path{fill:none;stroke:var(--checkmark-color);stroke-width:var(--checkmark-width);opacity:0}:host(.checkbox-checked) .checkbox-icon,:host(.checkbox-indeterminate) .checkbox-icon{border-color:var(--border-color-checked);background:var(--background-checked)}:host(.checkbox-checked) .checkbox-icon path,:host(.checkbox-indeterminate) .checkbox-icon path{opacity:1}:host(.checkbox-disabled){pointer-events:none}:host{--border-radius:calc(var(--size) * .125);--border-width:2px;--border-style:solid;--border-color:rgba(var(--ion-text-color-rgb, 0, 0, 0), 0.51);--checkmark-width:3;--background:var(--ion-item-background, var(--ion-background-color, #fff));--transition:background 180ms cubic-bezier(0.4, 0, 0.2, 1);--size:18px;width:var(--size);height:var(--size)}.checkbox-icon path{stroke-dasharray:30;stroke-dashoffset:30}:host(.checkbox-checked) .checkbox-icon path,:host(.checkbox-indeterminate) .checkbox-icon path{stroke-dashoffset:0;-webkit-transition:stroke-dashoffset 90ms linear 90ms;transition:stroke-dashoffset 90ms linear 90ms}:host(.checkbox-disabled){opacity:0.3}:host(.in-item){margin-left:0;margin-right:0;margin-top:18px;margin-bottom:18px;display:block;position:static}:host(.in-item[slot=start]){margin-left:4px;margin-right:36px;margin-top:18px;margin-bottom:18px}@supports ((-webkit-margin-start: 0) or (margin-inline-start: 0)) or (-webkit-margin-start: 0){:host(.in-item[slot=start]){margin-left:unset;margin-right:unset;-webkit-margin-start:4px;margin-inline-start:4px;-webkit-margin-end:36px;margin-inline-end:36px}}\";\nconst Checkbox = /*@__PURE__*/(0,_stencil_core_internal_client__WEBPACK_IMPORTED_MODULE_0__.proxyCustomElement)(class extends _stencil_core_internal_client__WEBPACK_IMPORTED_MODULE_0__.HTMLElement {\n constructor() {\n super();\n this.__registerHost();\n this.__attachShadow();\n this.ionChange = (0,_stencil_core_internal_client__WEBPACK_IMPORTED_MODULE_0__.createEvent)(this, \"ionChange\", 7);\n this.ionFocus = (0,_stencil_core_internal_client__WEBPACK_IMPORTED_MODULE_0__.createEvent)(this, \"ionFocus\", 7);\n this.ionBlur = (0,_stencil_core_internal_client__WEBPACK_IMPORTED_MODULE_0__.createEvent)(this, \"ionBlur\", 7);\n this.ionStyle = (0,_stencil_core_internal_client__WEBPACK_IMPORTED_MODULE_0__.createEvent)(this, \"ionStyle\", 7);\n this.inputId = `ion-cb-${checkboxIds++}`;\n /**\n * The name of the control, which is submitted with the form data.\n */\n this.name = this.inputId;\n /**\n * If `true`, the checkbox is selected.\n */\n this.checked = false;\n /**\n * If `true`, the checkbox will visually appear as indeterminate.\n */\n this.indeterminate = false;\n /**\n * If `true`, the user cannot interact with the checkbox.\n */\n this.disabled = false;\n /**\n * The value of the checkbox does not mean if it's checked or not, use the `checked`\n * property for that.\n *\n * The value of a checkbox is analogous to the value of an ``,\n * it's only used when the checkbox participates in a native ``.\n */\n this.value = 'on';\n this.onClick = ev => {\n ev.preventDefault();\n this.setFocus();\n this.checked = !this.checked;\n this.indeterminate = false;\n };\n this.onFocus = () => {\n this.ionFocus.emit();\n };\n this.onBlur = () => {\n this.ionBlur.emit();\n };\n }\n componentWillLoad() {\n this.emitStyle();\n }\n checkedChanged(isChecked) {\n this.ionChange.emit({\n checked: isChecked,\n value: this.value\n });\n this.emitStyle();\n }\n disabledChanged() {\n this.emitStyle();\n }\n emitStyle() {\n this.ionStyle.emit({\n 'checkbox-checked': this.checked,\n 'interactive-disabled': this.disabled\n });\n }\n setFocus() {\n if (this.focusEl) {\n this.focusEl.focus();\n }\n }\n render() {\n const {\n color,\n checked,\n disabled,\n el,\n indeterminate,\n inputId,\n name,\n value\n } = this;\n const mode = (0,_ionic_global_js__WEBPACK_IMPORTED_MODULE_1__.b)(this);\n const {\n label,\n labelId,\n labelText\n } = (0,_helpers_js__WEBPACK_IMPORTED_MODULE_2__.n)(el, inputId);\n (0,_helpers_js__WEBPACK_IMPORTED_MODULE_2__.e)(true, el, name, checked ? value : '', disabled);\n let path = indeterminate ? (0,_stencil_core_internal_client__WEBPACK_IMPORTED_MODULE_0__.h)(\"path\", {\n d: \"M6 12L18 12\",\n part: \"mark\"\n }) : (0,_stencil_core_internal_client__WEBPACK_IMPORTED_MODULE_0__.h)(\"path\", {\n d: \"M5.9,12.5l3.8,3.8l8.8-8.8\",\n part: \"mark\"\n });\n if (mode === 'md') {\n path = indeterminate ? (0,_stencil_core_internal_client__WEBPACK_IMPORTED_MODULE_0__.h)(\"path\", {\n d: \"M2 12H22\",\n part: \"mark\"\n }) : (0,_stencil_core_internal_client__WEBPACK_IMPORTED_MODULE_0__.h)(\"path\", {\n d: \"M1.73,12.91 8.1,19.28 22.79,4.59\",\n part: \"mark\"\n });\n }\n return (0,_stencil_core_internal_client__WEBPACK_IMPORTED_MODULE_0__.h)(_stencil_core_internal_client__WEBPACK_IMPORTED_MODULE_0__.Host, {\n onClick: this.onClick,\n \"aria-labelledby\": label ? labelId : null,\n \"aria-checked\": `${checked}`,\n \"aria-hidden\": disabled ? 'true' : null,\n role: \"checkbox\",\n class: (0,_theme_js__WEBPACK_IMPORTED_MODULE_3__.c)(color, {\n [mode]: true,\n 'in-item': (0,_theme_js__WEBPACK_IMPORTED_MODULE_3__.h)('ion-item', el),\n 'checkbox-checked': checked,\n 'checkbox-disabled': disabled,\n 'checkbox-indeterminate': indeterminate,\n interactive: true\n })\n }, (0,_stencil_core_internal_client__WEBPACK_IMPORTED_MODULE_0__.h)(\"svg\", {\n class: \"checkbox-icon\",\n viewBox: \"0 0 24 24\",\n part: \"container\"\n }, path), (0,_stencil_core_internal_client__WEBPACK_IMPORTED_MODULE_0__.h)(\"label\", {\n htmlFor: inputId\n }, labelText), (0,_stencil_core_internal_client__WEBPACK_IMPORTED_MODULE_0__.h)(\"input\", {\n type: \"checkbox\",\n \"aria-checked\": `${checked}`,\n disabled: disabled,\n id: inputId,\n onFocus: () => this.onFocus(),\n onBlur: () => this.onBlur(),\n ref: focusEl => this.focusEl = focusEl\n }));\n }\n get el() {\n return this;\n }\n static get watchers() {\n return {\n \"checked\": [\"checkedChanged\"],\n \"disabled\": [\"disabledChanged\"]\n };\n }\n static get style() {\n return {\n ios: checkboxIosCss,\n md: checkboxMdCss\n };\n }\n}, [33, \"ion-checkbox\", {\n \"color\": [513],\n \"name\": [1],\n \"checked\": [1028],\n \"indeterminate\": [1028],\n \"disabled\": [4],\n \"value\": [8]\n}]);\nlet checkboxIds = 0;\nfunction defineCustomElement() {\n if (typeof customElements === \"undefined\") {\n return;\n }\n const components = [\"ion-checkbox\"];\n components.forEach(tagName => {\n switch (tagName) {\n case \"ion-checkbox\":\n if (!customElements.get(tagName)) {\n customElements.define(tagName, Checkbox);\n }\n break;\n }\n });\n}\n\n\n//# sourceURL=webpack://jandl/./node_modules/@ionic/core/components/checkbox.js?"); +eval("{__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ C: function() { return /* binding */ Checkbox; },\n/* harmony export */ d: function() { return /* binding */ defineCustomElement; }\n/* harmony export */ });\n/* harmony import */ var _stencil_core_internal_client__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @stencil/core/internal/client */ \"./node_modules/@stencil/core/internal/client/index.js\");\n/* harmony import */ var _ionic_global_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./ionic-global.js */ \"./node_modules/@ionic/core/components/ionic-global.js\");\n/* harmony import */ var _helpers_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./helpers.js */ \"./node_modules/@ionic/core/components/helpers.js\");\n/* harmony import */ var _theme_js__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./theme.js */ \"./node_modules/@ionic/core/components/theme.js\");\n/*!\n * (C) Ionic http://ionicframework.com - MIT License\n */\n\n\n\n\nconst checkboxIosCss = \":host{--background-checked:var(--ion-color-primary, #3880ff);--border-color-checked:var(--ion-color-primary, #3880ff);--checkmark-color:var(--ion-color-primary-contrast, #fff);--checkmark-width:1;--transition:none;display:inline-block;position:relative;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;z-index:2}:host(.ion-color){--background-checked:var(--ion-color-base);--border-color-checked:var(--ion-color-base);--checkmark-color:var(--ion-color-contrast)}label{left:0;top:0;margin-left:0;margin-right:0;margin-top:0;margin-bottom:0;position:absolute;width:100%;height:100%;border:0;background:transparent;cursor:pointer;-webkit-appearance:none;-moz-appearance:none;appearance:none;outline:none;display:-ms-flexbox;display:flex;-ms-flex-align:center;align-items:center;opacity:0}[dir=rtl] label,:host-context([dir=rtl]) label{left:unset;right:unset;right:0}label::-moz-focus-inner{border:0}input{position:absolute;top:0;left:0;right:0;bottom:0;width:100%;height:100%;margin:0;padding:0;border:0;outline:0;clip:rect(0 0 0 0);opacity:0;overflow:hidden;-webkit-appearance:none;-moz-appearance:none}.checkbox-icon{border-radius:var(--border-radius);display:block;position:relative;width:100%;height:100%;-webkit-transition:var(--transition);transition:var(--transition);border-width:var(--border-width);border-style:var(--border-style);border-color:var(--border-color);background:var(--background);-webkit-box-sizing:border-box;box-sizing:border-box}.checkbox-icon path{fill:none;stroke:var(--checkmark-color);stroke-width:var(--checkmark-width);opacity:0}:host(.checkbox-checked) .checkbox-icon,:host(.checkbox-indeterminate) .checkbox-icon{border-color:var(--border-color-checked);background:var(--background-checked)}:host(.checkbox-checked) .checkbox-icon path,:host(.checkbox-indeterminate) .checkbox-icon path{opacity:1}:host(.checkbox-disabled){pointer-events:none}:host{--border-radius:50%;--border-width:1px;--border-style:solid;--border-color:rgba(var(--ion-text-color-rgb, 0, 0, 0), 0.23);--background:var(--ion-item-background, var(--ion-background-color, #fff));--size:26px;width:var(--size);height:var(--size)}:host(.checkbox-disabled){opacity:0.3}:host(.in-item){margin-left:0;margin-right:8px;margin-top:10px;margin-bottom:9px;display:block;position:static}@supports ((-webkit-margin-start: 0) or (margin-inline-start: 0)) or (-webkit-margin-start: 0){:host(.in-item){margin-left:unset;margin-right:unset;-webkit-margin-start:0;margin-inline-start:0;-webkit-margin-end:8px;margin-inline-end:8px}}:host(.in-item[slot=start]){margin-left:2px;margin-right:20px;margin-top:8px;margin-bottom:8px}@supports ((-webkit-margin-start: 0) or (margin-inline-start: 0)) or (-webkit-margin-start: 0){:host(.in-item[slot=start]){margin-left:unset;margin-right:unset;-webkit-margin-start:2px;margin-inline-start:2px;-webkit-margin-end:20px;margin-inline-end:20px}}\";\nconst checkboxMdCss = \":host{--background-checked:var(--ion-color-primary, #3880ff);--border-color-checked:var(--ion-color-primary, #3880ff);--checkmark-color:var(--ion-color-primary-contrast, #fff);--checkmark-width:1;--transition:none;display:inline-block;position:relative;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;z-index:2}:host(.ion-color){--background-checked:var(--ion-color-base);--border-color-checked:var(--ion-color-base);--checkmark-color:var(--ion-color-contrast)}label{left:0;top:0;margin-left:0;margin-right:0;margin-top:0;margin-bottom:0;position:absolute;width:100%;height:100%;border:0;background:transparent;cursor:pointer;-webkit-appearance:none;-moz-appearance:none;appearance:none;outline:none;display:-ms-flexbox;display:flex;-ms-flex-align:center;align-items:center;opacity:0}[dir=rtl] label,:host-context([dir=rtl]) label{left:unset;right:unset;right:0}label::-moz-focus-inner{border:0}input{position:absolute;top:0;left:0;right:0;bottom:0;width:100%;height:100%;margin:0;padding:0;border:0;outline:0;clip:rect(0 0 0 0);opacity:0;overflow:hidden;-webkit-appearance:none;-moz-appearance:none}.checkbox-icon{border-radius:var(--border-radius);display:block;position:relative;width:100%;height:100%;-webkit-transition:var(--transition);transition:var(--transition);border-width:var(--border-width);border-style:var(--border-style);border-color:var(--border-color);background:var(--background);-webkit-box-sizing:border-box;box-sizing:border-box}.checkbox-icon path{fill:none;stroke:var(--checkmark-color);stroke-width:var(--checkmark-width);opacity:0}:host(.checkbox-checked) .checkbox-icon,:host(.checkbox-indeterminate) .checkbox-icon{border-color:var(--border-color-checked);background:var(--background-checked)}:host(.checkbox-checked) .checkbox-icon path,:host(.checkbox-indeterminate) .checkbox-icon path{opacity:1}:host(.checkbox-disabled){pointer-events:none}:host{--border-radius:calc(var(--size) * .125);--border-width:2px;--border-style:solid;--border-color:rgba(var(--ion-text-color-rgb, 0, 0, 0), 0.51);--checkmark-width:3;--background:var(--ion-item-background, var(--ion-background-color, #fff));--transition:background 180ms cubic-bezier(0.4, 0, 0.2, 1);--size:18px;width:var(--size);height:var(--size)}.checkbox-icon path{stroke-dasharray:30;stroke-dashoffset:30}:host(.checkbox-checked) .checkbox-icon path,:host(.checkbox-indeterminate) .checkbox-icon path{stroke-dashoffset:0;-webkit-transition:stroke-dashoffset 90ms linear 90ms;transition:stroke-dashoffset 90ms linear 90ms}:host(.checkbox-disabled){opacity:0.3}:host(.in-item){margin-left:0;margin-right:0;margin-top:18px;margin-bottom:18px;display:block;position:static}:host(.in-item[slot=start]){margin-left:4px;margin-right:36px;margin-top:18px;margin-bottom:18px}@supports ((-webkit-margin-start: 0) or (margin-inline-start: 0)) or (-webkit-margin-start: 0){:host(.in-item[slot=start]){margin-left:unset;margin-right:unset;-webkit-margin-start:4px;margin-inline-start:4px;-webkit-margin-end:36px;margin-inline-end:36px}}\";\nconst Checkbox = /*@__PURE__*/(0,_stencil_core_internal_client__WEBPACK_IMPORTED_MODULE_0__.proxyCustomElement)(class extends _stencil_core_internal_client__WEBPACK_IMPORTED_MODULE_0__.HTMLElement {\n constructor() {\n super();\n this.__registerHost();\n this.__attachShadow();\n this.ionChange = (0,_stencil_core_internal_client__WEBPACK_IMPORTED_MODULE_0__.createEvent)(this, \"ionChange\", 7);\n this.ionFocus = (0,_stencil_core_internal_client__WEBPACK_IMPORTED_MODULE_0__.createEvent)(this, \"ionFocus\", 7);\n this.ionBlur = (0,_stencil_core_internal_client__WEBPACK_IMPORTED_MODULE_0__.createEvent)(this, \"ionBlur\", 7);\n this.ionStyle = (0,_stencil_core_internal_client__WEBPACK_IMPORTED_MODULE_0__.createEvent)(this, \"ionStyle\", 7);\n this.inputId = `ion-cb-${checkboxIds++}`;\n /**\n * The name of the control, which is submitted with the form data.\n */\n this.name = this.inputId;\n /**\n * If `true`, the checkbox is selected.\n */\n this.checked = false;\n /**\n * If `true`, the checkbox will visually appear as indeterminate.\n */\n this.indeterminate = false;\n /**\n * If `true`, the user cannot interact with the checkbox.\n */\n this.disabled = false;\n /**\n * The value of the checkbox does not mean if it's checked or not, use the `checked`\n * property for that.\n *\n * The value of a checkbox is analogous to the value of an ``,\n * it's only used when the checkbox participates in a native ``.\n */\n this.value = 'on';\n this.onClick = ev => {\n ev.preventDefault();\n this.setFocus();\n this.checked = !this.checked;\n this.indeterminate = false;\n };\n this.onFocus = () => {\n this.ionFocus.emit();\n };\n this.onBlur = () => {\n this.ionBlur.emit();\n };\n }\n componentWillLoad() {\n this.emitStyle();\n }\n checkedChanged(isChecked) {\n this.ionChange.emit({\n checked: isChecked,\n value: this.value\n });\n this.emitStyle();\n }\n disabledChanged() {\n this.emitStyle();\n }\n emitStyle() {\n this.ionStyle.emit({\n 'checkbox-checked': this.checked,\n 'interactive-disabled': this.disabled\n });\n }\n setFocus() {\n if (this.focusEl) {\n this.focusEl.focus();\n }\n }\n render() {\n const {\n color,\n checked,\n disabled,\n el,\n indeterminate,\n inputId,\n name,\n value\n } = this;\n const mode = (0,_ionic_global_js__WEBPACK_IMPORTED_MODULE_1__.b)(this);\n const {\n label,\n labelId,\n labelText\n } = (0,_helpers_js__WEBPACK_IMPORTED_MODULE_2__.n)(el, inputId);\n (0,_helpers_js__WEBPACK_IMPORTED_MODULE_2__.e)(true, el, name, checked ? value : '', disabled);\n let path = indeterminate ? (0,_stencil_core_internal_client__WEBPACK_IMPORTED_MODULE_0__.h)(\"path\", {\n d: \"M6 12L18 12\",\n part: \"mark\"\n }) : (0,_stencil_core_internal_client__WEBPACK_IMPORTED_MODULE_0__.h)(\"path\", {\n d: \"M5.9,12.5l3.8,3.8l8.8-8.8\",\n part: \"mark\"\n });\n if (mode === 'md') {\n path = indeterminate ? (0,_stencil_core_internal_client__WEBPACK_IMPORTED_MODULE_0__.h)(\"path\", {\n d: \"M2 12H22\",\n part: \"mark\"\n }) : (0,_stencil_core_internal_client__WEBPACK_IMPORTED_MODULE_0__.h)(\"path\", {\n d: \"M1.73,12.91 8.1,19.28 22.79,4.59\",\n part: \"mark\"\n });\n }\n return (0,_stencil_core_internal_client__WEBPACK_IMPORTED_MODULE_0__.h)(_stencil_core_internal_client__WEBPACK_IMPORTED_MODULE_0__.Host, {\n onClick: this.onClick,\n \"aria-labelledby\": label ? labelId : null,\n \"aria-checked\": `${checked}`,\n \"aria-hidden\": disabled ? 'true' : null,\n role: \"checkbox\",\n class: (0,_theme_js__WEBPACK_IMPORTED_MODULE_3__.c)(color, {\n [mode]: true,\n 'in-item': (0,_theme_js__WEBPACK_IMPORTED_MODULE_3__.h)('ion-item', el),\n 'checkbox-checked': checked,\n 'checkbox-disabled': disabled,\n 'checkbox-indeterminate': indeterminate,\n interactive: true\n })\n }, (0,_stencil_core_internal_client__WEBPACK_IMPORTED_MODULE_0__.h)(\"svg\", {\n class: \"checkbox-icon\",\n viewBox: \"0 0 24 24\",\n part: \"container\"\n }, path), (0,_stencil_core_internal_client__WEBPACK_IMPORTED_MODULE_0__.h)(\"label\", {\n htmlFor: inputId\n }, labelText), (0,_stencil_core_internal_client__WEBPACK_IMPORTED_MODULE_0__.h)(\"input\", {\n type: \"checkbox\",\n \"aria-checked\": `${checked}`,\n disabled: disabled,\n id: inputId,\n onFocus: () => this.onFocus(),\n onBlur: () => this.onBlur(),\n ref: focusEl => this.focusEl = focusEl\n }));\n }\n get el() {\n return this;\n }\n static get watchers() {\n return {\n \"checked\": [\"checkedChanged\"],\n \"disabled\": [\"disabledChanged\"]\n };\n }\n static get style() {\n return {\n ios: checkboxIosCss,\n md: checkboxMdCss\n };\n }\n}, [33, \"ion-checkbox\", {\n \"color\": [513],\n \"name\": [1],\n \"checked\": [1028],\n \"indeterminate\": [1028],\n \"disabled\": [4],\n \"value\": [8]\n}]);\nlet checkboxIds = 0;\nfunction defineCustomElement() {\n if (typeof customElements === \"undefined\") {\n return;\n }\n const components = [\"ion-checkbox\"];\n components.forEach(tagName => {\n switch (tagName) {\n case \"ion-checkbox\":\n if (!customElements.get(tagName)) {\n customElements.define(tagName, Checkbox);\n }\n break;\n }\n });\n}\n\n\n//# sourceURL=webpack://jandl/./node_modules/@ionic/core/components/checkbox.js?\n}"); /***/ }), @@ -191,7 +191,7 @@ eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpac /***/ (function(__unused_webpack_module, __webpack_exports__, __webpack_require__) { "use strict"; -eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"g\": function() { return /* binding */ getTimeGivenProgression; }\n/* harmony export */ });\n/*!\n * (C) Ionic http://ionicframework.com - MIT License\n */\n/**\n * Based on:\n * https://stackoverflow.com/questions/7348009/y-coordinate-for-a-given-x-cubic-bezier\n * https://math.stackexchange.com/questions/26846/is-there-an-explicit-form-for-cubic-b%C3%A9zier-curves\n */\n/**\n * EXPERIMENTAL\n * Given a cubic-bezier curve, get the x value (time) given\n * the y value (progression).\n * Ex: cubic-bezier(0.32, 0.72, 0, 1);\n * P0: (0, 0)\n * P1: (0.32, 0.72)\n * P2: (0, 1)\n * P3: (1, 1)\n *\n * If you give a cubic bezier curve that never reaches the\n * provided progression, this function will return an empty array.\n */\nconst getTimeGivenProgression = (p0, p1, p2, p3, progression) => {\n return solveCubicBezier(p0[1], p1[1], p2[1], p3[1], progression).map(tValue => {\n return solveCubicParametricEquation(p0[0], p1[0], p2[0], p3[0], tValue);\n });\n};\n/**\n * Solve a cubic equation in one dimension (time)\n */\nconst solveCubicParametricEquation = (p0, p1, p2, p3, t) => {\n const partA = 3 * p1 * Math.pow(t - 1, 2);\n const partB = -3 * p2 * t + 3 * p2 + p3 * t;\n const partC = p0 * Math.pow(t - 1, 3);\n return t * (partA + t * partB) - partC;\n};\n/**\n * Find the `t` value for a cubic bezier using Cardano's formula\n */\nconst solveCubicBezier = (p0, p1, p2, p3, refPoint) => {\n p0 -= refPoint;\n p1 -= refPoint;\n p2 -= refPoint;\n p3 -= refPoint;\n const roots = solveCubicEquation(p3 - 3 * p2 + 3 * p1 - p0, 3 * p2 - 6 * p1 + 3 * p0, 3 * p1 - 3 * p0, p0);\n return roots.filter(root => root >= 0 && root <= 1);\n};\nconst solveQuadraticEquation = (a, b, c) => {\n const discriminant = b * b - 4 * a * c;\n if (discriminant < 0) {\n return [];\n } else {\n return [(-b + Math.sqrt(discriminant)) / (2 * a), (-b - Math.sqrt(discriminant)) / (2 * a)];\n }\n};\nconst solveCubicEquation = (a, b, c, d) => {\n if (a === 0) {\n return solveQuadraticEquation(b, c, d);\n }\n b /= a;\n c /= a;\n d /= a;\n const p = (3 * c - b * b) / 3;\n const q = (2 * b * b * b - 9 * b * c + 27 * d) / 27;\n if (p === 0) {\n return [Math.pow(-q, 1 / 3)];\n } else if (q === 0) {\n return [Math.sqrt(-p), -Math.sqrt(-p)];\n }\n const discriminant = Math.pow(q / 2, 2) + Math.pow(p / 3, 3);\n if (discriminant === 0) {\n return [Math.pow(q / 2, 1 / 2) - b / 3];\n } else if (discriminant > 0) {\n return [Math.pow(-(q / 2) + Math.sqrt(discriminant), 1 / 3) - Math.pow(q / 2 + Math.sqrt(discriminant), 1 / 3) - b / 3];\n }\n const r = Math.sqrt(Math.pow(-(p / 3), 3));\n const phi = Math.acos(-(q / (2 * Math.sqrt(Math.pow(-(p / 3), 3)))));\n const s = 2 * Math.pow(r, 1 / 3);\n return [s * Math.cos(phi / 3) - b / 3, s * Math.cos((phi + 2 * Math.PI) / 3) - b / 3, s * Math.cos((phi + 4 * Math.PI) / 3) - b / 3];\n};\n\n\n//# sourceURL=webpack://jandl/./node_modules/@ionic/core/components/cubic-bezier.js?"); +eval("{__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ g: function() { return /* binding */ getTimeGivenProgression; }\n/* harmony export */ });\n/* harmony import */ var core_js_modules_esnext_iterator_constructor_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! core-js/modules/esnext.iterator.constructor.js */ \"./node_modules/core-js/modules/esnext.iterator.constructor.js\");\n/* harmony import */ var core_js_modules_esnext_iterator_constructor_js__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_esnext_iterator_constructor_js__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var core_js_modules_esnext_iterator_filter_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! core-js/modules/esnext.iterator.filter.js */ \"./node_modules/core-js/modules/esnext.iterator.filter.js\");\n/* harmony import */ var core_js_modules_esnext_iterator_filter_js__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_esnext_iterator_filter_js__WEBPACK_IMPORTED_MODULE_1__);\n/* harmony import */ var core_js_modules_esnext_iterator_map_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! core-js/modules/esnext.iterator.map.js */ \"./node_modules/core-js/modules/esnext.iterator.map.js\");\n/* harmony import */ var core_js_modules_esnext_iterator_map_js__WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_esnext_iterator_map_js__WEBPACK_IMPORTED_MODULE_2__);\n\n\n\n/*!\n * (C) Ionic http://ionicframework.com - MIT License\n */\n/**\n * Based on:\n * https://stackoverflow.com/questions/7348009/y-coordinate-for-a-given-x-cubic-bezier\n * https://math.stackexchange.com/questions/26846/is-there-an-explicit-form-for-cubic-b%C3%A9zier-curves\n */\n/**\n * EXPERIMENTAL\n * Given a cubic-bezier curve, get the x value (time) given\n * the y value (progression).\n * Ex: cubic-bezier(0.32, 0.72, 0, 1);\n * P0: (0, 0)\n * P1: (0.32, 0.72)\n * P2: (0, 1)\n * P3: (1, 1)\n *\n * If you give a cubic bezier curve that never reaches the\n * provided progression, this function will return an empty array.\n */\nconst getTimeGivenProgression = (p0, p1, p2, p3, progression) => {\n return solveCubicBezier(p0[1], p1[1], p2[1], p3[1], progression).map(tValue => {\n return solveCubicParametricEquation(p0[0], p1[0], p2[0], p3[0], tValue);\n });\n};\n/**\n * Solve a cubic equation in one dimension (time)\n */\nconst solveCubicParametricEquation = (p0, p1, p2, p3, t) => {\n const partA = 3 * p1 * Math.pow(t - 1, 2);\n const partB = -3 * p2 * t + 3 * p2 + p3 * t;\n const partC = p0 * Math.pow(t - 1, 3);\n return t * (partA + t * partB) - partC;\n};\n/**\n * Find the `t` value for a cubic bezier using Cardano's formula\n */\nconst solveCubicBezier = (p0, p1, p2, p3, refPoint) => {\n p0 -= refPoint;\n p1 -= refPoint;\n p2 -= refPoint;\n p3 -= refPoint;\n const roots = solveCubicEquation(p3 - 3 * p2 + 3 * p1 - p0, 3 * p2 - 6 * p1 + 3 * p0, 3 * p1 - 3 * p0, p0);\n return roots.filter(root => root >= 0 && root <= 1);\n};\nconst solveQuadraticEquation = (a, b, c) => {\n const discriminant = b * b - 4 * a * c;\n if (discriminant < 0) {\n return [];\n } else {\n return [(-b + Math.sqrt(discriminant)) / (2 * a), (-b - Math.sqrt(discriminant)) / (2 * a)];\n }\n};\nconst solveCubicEquation = (a, b, c, d) => {\n if (a === 0) {\n return solveQuadraticEquation(b, c, d);\n }\n b /= a;\n c /= a;\n d /= a;\n const p = (3 * c - b * b) / 3;\n const q = (2 * b * b * b - 9 * b * c + 27 * d) / 27;\n if (p === 0) {\n return [Math.pow(-q, 1 / 3)];\n } else if (q === 0) {\n return [Math.sqrt(-p), -Math.sqrt(-p)];\n }\n const discriminant = Math.pow(q / 2, 2) + Math.pow(p / 3, 3);\n if (discriminant === 0) {\n return [Math.pow(q / 2, 1 / 2) - b / 3];\n } else if (discriminant > 0) {\n return [Math.pow(-(q / 2) + Math.sqrt(discriminant), 1 / 3) - Math.pow(q / 2 + Math.sqrt(discriminant), 1 / 3) - b / 3];\n }\n const r = Math.sqrt(Math.pow(-(p / 3), 3));\n const phi = Math.acos(-(q / (2 * Math.sqrt(Math.pow(-(p / 3), 3)))));\n const s = 2 * Math.pow(r, 1 / 3);\n return [s * Math.cos(phi / 3) - b / 3, s * Math.cos((phi + 2 * Math.PI) / 3) - b / 3, s * Math.cos((phi + 4 * Math.PI) / 3) - b / 3];\n};\n\n\n//# sourceURL=webpack://jandl/./node_modules/@ionic/core/components/cubic-bezier.js?\n}"); /***/ }), @@ -202,7 +202,7 @@ eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpac /***/ (function(__unused_webpack_module, __webpack_exports__, __webpack_require__) { "use strict"; -eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"A\": function() { return /* binding */ getDayColumnData; },\n/* harmony export */ \"B\": function() { return /* binding */ getYearColumnData; },\n/* harmony export */ \"C\": function() { return /* binding */ isMonthFirstLocale; },\n/* harmony export */ \"D\": function() { return /* binding */ getTimeColumnsData; },\n/* harmony export */ \"E\": function() { return /* binding */ isLocaleDayPeriodRTL; },\n/* harmony export */ \"F\": function() { return /* binding */ getMonthAndYear; },\n/* harmony export */ \"G\": function() { return /* binding */ getDaysOfWeek; },\n/* harmony export */ \"H\": function() { return /* binding */ getDaysOfMonth; },\n/* harmony export */ \"I\": function() { return /* binding */ generateMonths; },\n/* harmony export */ \"J\": function() { return /* binding */ is24Hour; },\n/* harmony export */ \"K\": function() { return /* binding */ getLocalizedTime; },\n/* harmony export */ \"L\": function() { return /* binding */ getMonthAndDay; },\n/* harmony export */ \"M\": function() { return /* binding */ formatValue; },\n/* harmony export */ \"N\": function() { return /* binding */ getNextYear; },\n/* harmony export */ \"O\": function() { return /* binding */ getPreviousYear; },\n/* harmony export */ \"P\": function() { return /* binding */ clampDate; },\n/* harmony export */ \"Q\": function() { return /* binding */ parseAmPm; },\n/* harmony export */ \"R\": function() { return /* binding */ calculateHourFromAMPM; },\n/* harmony export */ \"S\": function() { return /* binding */ getLocalizedDateTime; },\n/* harmony export */ \"T\": function() { return /* binding */ getMonthDayAndYear; },\n/* harmony export */ \"a\": function() { return /* binding */ getDay; },\n/* harmony export */ \"b\": function() { return /* binding */ isAfter; },\n/* harmony export */ \"c\": function() { return /* binding */ isSameDay; },\n/* harmony export */ \"d\": function() { return /* binding */ getPreviousMonth; },\n/* harmony export */ \"e\": function() { return /* binding */ getNextMonth; },\n/* harmony export */ \"f\": function() { return /* binding */ getPartsFromCalendarDay; },\n/* harmony export */ \"g\": function() { return /* binding */ generateDayAriaLabel; },\n/* harmony export */ \"h\": function() { return /* binding */ getEndOfWeek; },\n/* harmony export */ \"i\": function() { return /* binding */ isBefore; },\n/* harmony export */ \"j\": function() { return /* binding */ getStartOfWeek; },\n/* harmony export */ \"k\": function() { return /* binding */ getPreviousDay; },\n/* harmony export */ \"l\": function() { return /* binding */ getNextDay; },\n/* harmony export */ \"m\": function() { return /* binding */ getPreviousWeek; },\n/* harmony export */ \"n\": function() { return /* binding */ getNextWeek; },\n/* harmony export */ \"o\": function() { return /* binding */ parseMaxParts; },\n/* harmony export */ \"p\": function() { return /* binding */ parseMinParts; },\n/* harmony export */ \"q\": function() { return /* binding */ parseDate; },\n/* harmony export */ \"r\": function() { return /* binding */ convertToArrayOfNumbers; },\n/* harmony export */ \"s\": function() { return /* binding */ convertDataToISO; },\n/* harmony export */ \"t\": function() { return /* binding */ getToday; },\n/* harmony export */ \"u\": function() { return /* binding */ getClosestValidDate; },\n/* harmony export */ \"v\": function() { return /* binding */ validateParts; },\n/* harmony export */ \"w\": function() { return /* binding */ warnIfValueOutOfBounds; },\n/* harmony export */ \"x\": function() { return /* binding */ getNumDaysInMonth; },\n/* harmony export */ \"y\": function() { return /* binding */ getCombinedDateColumnData; },\n/* harmony export */ \"z\": function() { return /* binding */ getMonthColumnData; }\n/* harmony export */ });\n/* harmony import */ var core_js_modules_es_array_unshift_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! core-js/modules/es.array.unshift.js */ \"./node_modules/core-js/modules/es.array.unshift.js\");\n/* harmony import */ var core_js_modules_es_array_unshift_js__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_array_unshift_js__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var core_js_modules_es_array_push_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! core-js/modules/es.array.push.js */ \"./node_modules/core-js/modules/es.array.push.js\");\n/* harmony import */ var core_js_modules_es_array_push_js__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_array_push_js__WEBPACK_IMPORTED_MODULE_1__);\n/* harmony import */ var _index8_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./index8.js */ \"./node_modules/@ionic/core/components/index8.js\");\n\n\n/*!\n * (C) Ionic http://ionicframework.com - MIT License\n */\n\n\n/**\n * Returns true if the selected day is equal to the reference day\n */\nconst isSameDay = (baseParts, compareParts) => {\n return baseParts.month === compareParts.month && baseParts.day === compareParts.day && baseParts.year === compareParts.year;\n};\n/**\n * Returns true is the selected day is before the reference day.\n */\nconst isBefore = (baseParts, compareParts) => {\n return !!(baseParts.year < compareParts.year || baseParts.year === compareParts.year && baseParts.month < compareParts.month || baseParts.year === compareParts.year && baseParts.month === compareParts.month && baseParts.day !== null && baseParts.day < compareParts.day);\n};\n/**\n * Returns true is the selected day is after the reference day.\n */\nconst isAfter = (baseParts, compareParts) => {\n return !!(baseParts.year > compareParts.year || baseParts.year === compareParts.year && baseParts.month > compareParts.month || baseParts.year === compareParts.year && baseParts.month === compareParts.month && baseParts.day !== null && baseParts.day > compareParts.day);\n};\nconst warnIfValueOutOfBounds = (value, min, max) => {\n const valueArray = Array.isArray(value) ? value : [value];\n for (const val of valueArray) {\n if (min !== undefined && isBefore(val, min) || max !== undefined && isAfter(val, max)) {\n (0,_index8_js__WEBPACK_IMPORTED_MODULE_2__.p)('The value provided to ion-datetime is out of bounds.\\n\\n' + `Min: ${JSON.stringify(min)}\\n` + `Max: ${JSON.stringify(max)}\\n` + `Value: ${JSON.stringify(value)}`);\n break;\n }\n }\n};\n\n/**\n * Determines if given year is a\n * leap year. Returns `true` if year\n * is a leap year. Returns `false`\n * otherwise.\n */\nconst isLeapYear = year => {\n return year % 4 === 0 && year % 100 !== 0 || year % 400 === 0;\n};\nconst is24Hour = (locale, hourCycle) => {\n /**\n * If developer has explicitly enabled h23 time\n * then return early and do not look at the system default.\n */\n if (hourCycle !== undefined) {\n return hourCycle === 'h23';\n }\n /**\n * If hourCycle was not specified, check the locale\n * that is set on the user's device. We first check the\n * Intl.DateTimeFormat hourCycle option as developers can encode this\n * option into the locale string. Example: `en-US-u-hc-h23`\n */\n const formatted = new Intl.DateTimeFormat(locale, {\n hour: 'numeric'\n });\n const options = formatted.resolvedOptions();\n if (options.hourCycle !== undefined) {\n return options.hourCycle === 'h23';\n }\n /**\n * If hourCycle is not specified (either through lack\n * of browser support or locale information) then fall\n * back to this slower hourCycle check.\n */\n const date = new Date('5/18/2021 00:00');\n const parts = formatted.formatToParts(date);\n const hour = parts.find(p => p.type === 'hour');\n if (!hour) {\n throw new Error('Hour value not found from DateTimeFormat');\n }\n return hour.value === '00';\n};\n/**\n * Given a date object, returns the number\n * of days in that month.\n * Month value begin at 1, not 0.\n * i.e. January = month 1.\n */\nconst getNumDaysInMonth = (month, year) => {\n return month === 4 || month === 6 || month === 9 || month === 11 ? 30 : month === 2 ? isLeapYear(year) ? 29 : 28 : 31;\n};\n/**\n * Certain locales display month then year while\n * others display year then month.\n * We can use Intl.DateTimeFormat to determine\n * the ordering for each locale.\n * The formatOptions param can be used to customize\n * which pieces of a date to compare against the month\n * with. For example, some locales render dd/mm/yyyy\n * while others render mm/dd/yyyy. This function can be\n * used for variations of the same \"month first\" check.\n */\nconst isMonthFirstLocale = (locale, formatOptions = {\n month: 'numeric',\n year: 'numeric'\n}) => {\n /**\n * By setting month and year we guarantee that only\n * month, year, and literal (slashes '/', for example)\n * values are included in the formatToParts results.\n *\n * The ordering of the parts will be determined by\n * the locale. So if the month is the first value,\n * then we know month should be shown first. If the\n * year is the first value, then we know year should be shown first.\n *\n * This ordering can be controlled by customizing the locale property.\n */\n const parts = new Intl.DateTimeFormat(locale, formatOptions).formatToParts(new Date());\n return parts[0].type === 'month';\n};\n/**\n * Determines if the given locale formats the day period (am/pm) to the\n * left or right of the hour.\n * @param locale The locale to check.\n * @returns `true` if the locale formats the day period to the left of the hour.\n */\nconst isLocaleDayPeriodRTL = locale => {\n const parts = new Intl.DateTimeFormat(locale, {\n hour: 'numeric'\n }).formatToParts(new Date());\n return parts[0].type === 'dayPeriod';\n};\nconst ISO_8601_REGEXP =\n// eslint-disable-next-line no-useless-escape\n/^(\\d{4}|[+\\-]\\d{6})(?:-(\\d{2})(?:-(\\d{2}))?)?(?:T(\\d{2}):(\\d{2})(?::(\\d{2})(?:\\.(\\d{3}))?)?(?:(Z)|([+\\-])(\\d{2})(?::(\\d{2}))?)?)?$/;\n// eslint-disable-next-line no-useless-escape\nconst TIME_REGEXP = /^((\\d{2}):(\\d{2})(?::(\\d{2})(?:\\.(\\d{3}))?)?(?:(Z)|([+\\-])(\\d{2})(?::(\\d{2}))?)?)?$/;\n/**\n * Use to convert a string of comma separated numbers or\n * an array of numbers, and clean up any user input\n */\nconst convertToArrayOfNumbers = input => {\n if (input === undefined) {\n return;\n }\n let processedInput = input;\n if (typeof input === 'string') {\n // convert the string to an array of strings\n // auto remove any whitespace and [] characters\n processedInput = input.replace(/\\[|\\]|\\s/g, '').split(',');\n }\n let values;\n if (Array.isArray(processedInput)) {\n // ensure each value is an actual number in the returned array\n values = processedInput.map(num => parseInt(num, 10)).filter(isFinite);\n } else {\n values = [processedInput];\n }\n return values;\n};\n/**\n * Extracts date information\n * from a .calendar-day element\n * into DatetimeParts.\n */\nconst getPartsFromCalendarDay = el => {\n return {\n month: parseInt(el.getAttribute('data-month'), 10),\n day: parseInt(el.getAttribute('data-day'), 10),\n year: parseInt(el.getAttribute('data-year'), 10),\n dayOfWeek: parseInt(el.getAttribute('data-day-of-week'), 10)\n };\n};\nfunction parseDate(val) {\n if (Array.isArray(val)) {\n return val.map(valStr => parseDate(valStr));\n }\n // manually parse IS0 cuz Date.parse cannot be trusted\n // ISO 8601 format: 1994-12-15T13:47:20Z\n let parse = null;\n if (val != null && val !== '') {\n // try parsing for just time first, HH:MM\n parse = TIME_REGEXP.exec(val);\n if (parse) {\n // adjust the array so it fits nicely with the datetime parse\n parse.unshift(undefined, undefined);\n parse[2] = parse[3] = undefined;\n } else {\n // try parsing for full ISO datetime\n parse = ISO_8601_REGEXP.exec(val);\n }\n }\n if (parse === null) {\n // wasn't able to parse the ISO datetime\n return undefined;\n }\n // ensure all the parse values exist with at least 0\n for (let i = 1; i < 8; i++) {\n parse[i] = parse[i] !== undefined ? parseInt(parse[i], 10) : undefined;\n }\n let tzOffset = 0;\n if (parse[9] && parse[10]) {\n // hours\n tzOffset = parseInt(parse[10], 10) * 60;\n if (parse[11]) {\n // minutes\n tzOffset += parseInt(parse[11], 10);\n }\n if (parse[9] === '-') {\n // + or -\n tzOffset *= -1;\n }\n }\n // can also get second and millisecond from parse[6] and parse[7] if needed\n return {\n year: parse[1],\n month: parse[2],\n day: parse[3],\n hour: parse[4],\n minute: parse[5],\n tzOffset,\n ampm: parse[4] < 12 ? 'am' : 'pm'\n };\n}\nconst clampDate = (dateParts, minParts, maxParts) => {\n if (minParts && isBefore(dateParts, minParts)) {\n return minParts;\n } else if (maxParts && isAfter(dateParts, maxParts)) {\n return maxParts;\n }\n return dateParts;\n};\n/**\n * Parses an hour and returns if the value is in the morning (am) or afternoon (pm).\n * @param hour The hour to format, should be 0-23\n * @returns `pm` if the hour is greater than or equal to 12, `am` if less than 12.\n */\nconst parseAmPm = hour => {\n return hour >= 12 ? 'pm' : 'am';\n};\n/**\n * Takes a max date string and creates a DatetimeParts\n * object, filling in any missing information.\n * For example, max=\"2012\" would fill in the missing\n * month, day, hour, and minute information.\n */\nconst parseMaxParts = (max, todayParts) => {\n const {\n month,\n day,\n year,\n hour,\n minute\n } = parseDate(max);\n /**\n * When passing in `max` or `min`, developers\n * can pass in any ISO-8601 string. This means\n * that not all of the date/time fields are defined.\n * For example, passing max=\"2012\" is valid even though\n * there is no month, day, hour, or minute data.\n * However, all of this data is required when clamping the date\n * so that the correct initial value can be selected. As a result,\n * we need to fill in any omitted data with the min or max values.\n */\n const yearValue = year !== null && year !== void 0 ? year : todayParts.year;\n const monthValue = month !== null && month !== void 0 ? month : 12;\n return {\n month: monthValue,\n day: day !== null && day !== void 0 ? day : getNumDaysInMonth(monthValue, yearValue),\n /**\n * Passing in \"HH:mm\" is a valid ISO-8601\n * string, so we just default to the current year\n * in this case.\n */\n year: yearValue,\n hour: hour !== null && hour !== void 0 ? hour : 23,\n minute: minute !== null && minute !== void 0 ? minute : 59\n };\n};\n/**\n * Takes a min date string and creates a DatetimeParts\n * object, filling in any missing information.\n * For example, min=\"2012\" would fill in the missing\n * month, day, hour, and minute information.\n */\nconst parseMinParts = (min, todayParts) => {\n const {\n month,\n day,\n year,\n hour,\n minute\n } = parseDate(min);\n /**\n * When passing in `max` or `min`, developers\n * can pass in any ISO-8601 string. This means\n * that not all of the date/time fields are defined.\n * For example, passing max=\"2012\" is valid even though\n * there is no month, day, hour, or minute data.\n * However, all of this data is required when clamping the date\n * so that the correct initial value can be selected. As a result,\n * we need to fill in any omitted data with the min or max values.\n */\n return {\n month: month !== null && month !== void 0 ? month : 1,\n day: day !== null && day !== void 0 ? day : 1,\n /**\n * Passing in \"HH:mm\" is a valid ISO-8601\n * string, so we just default to the current year\n * in this case.\n */\n year: year !== null && year !== void 0 ? year : todayParts.year,\n hour: hour !== null && hour !== void 0 ? hour : 0,\n minute: minute !== null && minute !== void 0 ? minute : 0\n };\n};\nconst twoDigit = val => {\n return ('0' + (val !== undefined ? Math.abs(val) : '0')).slice(-2);\n};\nconst fourDigit = val => {\n return ('000' + (val !== undefined ? Math.abs(val) : '0')).slice(-4);\n};\nfunction convertDataToISO(data) {\n if (Array.isArray(data)) {\n return data.map(parts => convertDataToISO(parts));\n }\n // https://www.w3.org/TR/NOTE-datetime\n let rtn = '';\n if (data.year !== undefined) {\n // YYYY\n rtn = fourDigit(data.year);\n if (data.month !== undefined) {\n // YYYY-MM\n rtn += '-' + twoDigit(data.month);\n if (data.day !== undefined) {\n // YYYY-MM-DD\n rtn += '-' + twoDigit(data.day);\n if (data.hour !== undefined) {\n // YYYY-MM-DDTHH:mm:SS\n rtn += `T${twoDigit(data.hour)}:${twoDigit(data.minute)}:00`;\n if (data.tzOffset === undefined) {\n // YYYY-MM-DDTHH:mm:SSZ\n rtn += 'Z';\n } else {\n // YYYY-MM-DDTHH:mm:SS+/-HH:mm\n rtn += (data.tzOffset > 0 ? '+' : '-') + twoDigit(Math.floor(Math.abs(data.tzOffset / 60))) + ':' + twoDigit(data.tzOffset % 60);\n }\n }\n }\n }\n } else if (data.hour !== undefined) {\n // HH:mm\n rtn = twoDigit(data.hour) + ':' + twoDigit(data.minute);\n }\n return rtn;\n}\n/**\n * Converts an 12 hour value to 24 hours.\n */\nconst convert12HourTo24Hour = (hour, ampm) => {\n if (ampm === undefined) {\n return hour;\n }\n /**\n * If AM and 12am\n * then return 00:00.\n * Otherwise just return\n * the hour since it is\n * already in 24 hour format.\n */\n if (ampm === 'am') {\n if (hour === 12) {\n return 0;\n }\n return hour;\n }\n /**\n * If PM and 12pm\n * just return 12:00\n * since it is already\n * in 24 hour format.\n * Otherwise add 12 hours\n * to the time.\n */\n if (hour === 12) {\n return 12;\n }\n return hour + 12;\n};\nconst getStartOfWeek = refParts => {\n const {\n dayOfWeek\n } = refParts;\n if (dayOfWeek === null || dayOfWeek === undefined) {\n throw new Error('No day of week provided');\n }\n return subtractDays(refParts, dayOfWeek);\n};\nconst getEndOfWeek = refParts => {\n const {\n dayOfWeek\n } = refParts;\n if (dayOfWeek === null || dayOfWeek === undefined) {\n throw new Error('No day of week provided');\n }\n return addDays(refParts, 6 - dayOfWeek);\n};\nconst getNextDay = refParts => {\n return addDays(refParts, 1);\n};\nconst getPreviousDay = refParts => {\n return subtractDays(refParts, 1);\n};\nconst getPreviousWeek = refParts => {\n return subtractDays(refParts, 7);\n};\nconst getNextWeek = refParts => {\n return addDays(refParts, 7);\n};\n/**\n * Given datetime parts, subtract\n * numDays from the date.\n * Returns a new DatetimeParts object\n * Currently can only go backward at most 1 month.\n */\nconst subtractDays = (refParts, numDays) => {\n const {\n month,\n day,\n year\n } = refParts;\n if (day === null) {\n throw new Error('No day provided');\n }\n const workingParts = {\n month,\n day,\n year\n };\n workingParts.day = day - numDays;\n /**\n * If wrapping to previous month\n * update days and decrement month\n */\n if (workingParts.day < 1) {\n workingParts.month -= 1;\n }\n /**\n * If moving to previous year, reset\n * month to December and decrement year\n */\n if (workingParts.month < 1) {\n workingParts.month = 12;\n workingParts.year -= 1;\n }\n /**\n * Determine how many days are in the current\n * month\n */\n if (workingParts.day < 1) {\n const daysInMonth = getNumDaysInMonth(workingParts.month, workingParts.year);\n /**\n * Take num days in month and add the\n * number of underflow days. This number will\n * be negative.\n * Example: 1 week before Jan 2, 2021 is\n * December 26, 2021 so:\n * 2 - 7 = -5\n * 31 + (-5) = 26\n */\n workingParts.day = daysInMonth + workingParts.day;\n }\n return workingParts;\n};\n/**\n * Given datetime parts, add\n * numDays to the date.\n * Returns a new DatetimeParts object\n * Currently can only go forward at most 1 month.\n */\nconst addDays = (refParts, numDays) => {\n const {\n month,\n day,\n year\n } = refParts;\n if (day === null) {\n throw new Error('No day provided');\n }\n const workingParts = {\n month,\n day,\n year\n };\n const daysInMonth = getNumDaysInMonth(month, year);\n workingParts.day = day + numDays;\n /**\n * If wrapping to next month\n * update days and increment month\n */\n if (workingParts.day > daysInMonth) {\n workingParts.day -= daysInMonth;\n workingParts.month += 1;\n }\n /**\n * If moving to next year, reset\n * month to January and increment year\n */\n if (workingParts.month > 12) {\n workingParts.month = 1;\n workingParts.year += 1;\n }\n return workingParts;\n};\n/**\n * Given DatetimeParts, generate the previous month.\n */\nconst getPreviousMonth = refParts => {\n /**\n * If current month is January, wrap backwards\n * to December of the previous year.\n */\n const month = refParts.month === 1 ? 12 : refParts.month - 1;\n const year = refParts.month === 1 ? refParts.year - 1 : refParts.year;\n const numDaysInMonth = getNumDaysInMonth(month, year);\n const day = numDaysInMonth < refParts.day ? numDaysInMonth : refParts.day;\n return {\n month,\n year,\n day\n };\n};\n/**\n * Given DatetimeParts, generate the next month.\n */\nconst getNextMonth = refParts => {\n /**\n * If current month is December, wrap forwards\n * to January of the next year.\n */\n const month = refParts.month === 12 ? 1 : refParts.month + 1;\n const year = refParts.month === 12 ? refParts.year + 1 : refParts.year;\n const numDaysInMonth = getNumDaysInMonth(month, year);\n const day = numDaysInMonth < refParts.day ? numDaysInMonth : refParts.day;\n return {\n month,\n year,\n day\n };\n};\nconst changeYear = (refParts, yearDelta) => {\n const month = refParts.month;\n const year = refParts.year + yearDelta;\n const numDaysInMonth = getNumDaysInMonth(month, year);\n const day = numDaysInMonth < refParts.day ? numDaysInMonth : refParts.day;\n return {\n month,\n year,\n day\n };\n};\n/**\n * Given DatetimeParts, generate the previous year.\n */\nconst getPreviousYear = refParts => {\n return changeYear(refParts, -1);\n};\n/**\n * Given DatetimeParts, generate the next year.\n */\nconst getNextYear = refParts => {\n return changeYear(refParts, 1);\n};\n/**\n * If PM, then internal value should\n * be converted to 24-hr time.\n * Does not apply when public\n * values are already 24-hr time.\n */\nconst getInternalHourValue = (hour, use24Hour, ampm) => {\n if (use24Hour) {\n return hour;\n }\n return convert12HourTo24Hour(hour, ampm);\n};\n/**\n * Unless otherwise stated, all month values are\n * 1 indexed instead of the typical 0 index in JS Date.\n * Example:\n * January = Month 0 when using JS Date\n * January = Month 1 when using this datetime util\n */\n/**\n * Given the current datetime parts and a new AM/PM value\n * calculate what the hour should be in 24-hour time format.\n * Used when toggling the AM/PM segment since we store our hours\n * in 24-hour time format internally.\n */\nconst calculateHourFromAMPM = (currentParts, newAMPM) => {\n const {\n ampm: currentAMPM,\n hour\n } = currentParts;\n let newHour = hour;\n /**\n * If going from AM --> PM, need to update the\n *\n */\n if (currentAMPM === 'am' && newAMPM === 'pm') {\n newHour = convert12HourTo24Hour(newHour, 'pm');\n /**\n * If going from PM --> AM\n */\n } else if (currentAMPM === 'pm' && newAMPM === 'am') {\n newHour = Math.abs(newHour - 12);\n }\n return newHour;\n};\n/**\n * Updates parts to ensure that month and day\n * values are valid. For days that do not exist,\n * the closest valid day is used.\n */\nconst validateParts = (parts, minParts, maxParts) => {\n const {\n month,\n day,\n year\n } = parts;\n const partsCopy = Object.assign({}, parts);\n const numDays = getNumDaysInMonth(month, year);\n /**\n * If the max number of days\n * is greater than the day we want\n * to set, update the DatetimeParts\n * day field to be the max days.\n */\n if (day !== null && numDays < day) {\n partsCopy.day = numDays;\n }\n /**\n * If value is same day as min day,\n * make sure the time value is in bounds.\n */\n if (minParts !== undefined && isSameDay(partsCopy, minParts)) {\n /**\n * If the hour is out of bounds,\n * update both the hour and minute.\n * This is done so that the new time\n * is closest to what the user selected.\n */\n if (partsCopy.hour !== undefined && minParts.hour !== undefined) {\n if (partsCopy.hour < minParts.hour) {\n partsCopy.hour = minParts.hour;\n partsCopy.minute = minParts.minute;\n /**\n * If only the minute is out of bounds,\n * set it to the min minute.\n */\n } else if (partsCopy.hour === minParts.hour && partsCopy.minute !== undefined && minParts.minute !== undefined && partsCopy.minute < minParts.minute) {\n partsCopy.minute = minParts.minute;\n }\n }\n }\n /**\n * If value is same day as max day,\n * make sure the time value is in bounds.\n */\n if (maxParts !== undefined && isSameDay(parts, maxParts)) {\n /**\n * If the hour is out of bounds,\n * update both the hour and minute.\n * This is done so that the new time\n * is closest to what the user selected.\n */\n if (partsCopy.hour !== undefined && maxParts.hour !== undefined) {\n if (partsCopy.hour > maxParts.hour) {\n partsCopy.hour = maxParts.hour;\n partsCopy.minute = maxParts.minute;\n /**\n * If only the minute is out of bounds,\n * set it to the max minute.\n */\n } else if (partsCopy.hour === maxParts.hour && partsCopy.minute !== undefined && maxParts.minute !== undefined && partsCopy.minute > maxParts.minute) {\n partsCopy.minute = maxParts.minute;\n }\n }\n }\n return partsCopy;\n};\n/**\n * Returns the closest date to refParts\n * that also meets the constraints of\n * the *Values params.\n * @param refParts The reference date\n * @param monthValues The allowed month values\n * @param dayValues The allowed day (of the month) values\n * @param yearValues The allowed year values\n * @param hourValues The allowed hour values\n * @param minuteValues The allowed minute values\n */\nconst getClosestValidDate = (refParts, monthValues, dayValues, yearValues, hourValues, minuteValues) => {\n const {\n hour,\n minute,\n day,\n month,\n year\n } = refParts;\n const copyParts = Object.assign(Object.assign({}, refParts), {\n dayOfWeek: undefined\n });\n if (monthValues !== undefined) {\n copyParts.month = findClosestValue(month, monthValues);\n }\n // Day is nullable but cannot be undefined\n if (day !== null && dayValues !== undefined) {\n copyParts.day = findClosestValue(day, dayValues);\n }\n if (yearValues !== undefined) {\n copyParts.year = findClosestValue(year, yearValues);\n }\n if (hour !== undefined && hourValues !== undefined) {\n copyParts.hour = findClosestValue(hour, hourValues);\n copyParts.ampm = parseAmPm(copyParts.hour);\n }\n if (minute !== undefined && minuteValues !== undefined) {\n copyParts.minute = findClosestValue(minute, minuteValues);\n }\n return copyParts;\n};\n/**\n * Finds the value in \"values\" that is\n * numerically closest to \"reference\".\n * This function assumes that \"values\" is\n * already sorted in ascending order.\n * @param reference The reference number to use\n * when finding the closest value\n * @param values The allowed values that will be\n * searched to find the closest value to \"reference\"\n */\nconst findClosestValue = (reference, values) => {\n let closestValue = values[0];\n let rank = Math.abs(closestValue - reference);\n for (let i = 1; i < values.length; i++) {\n const value = values[i];\n /**\n * This code prioritizes the first\n * closest result. Given two values\n * with the same distance from reference,\n * this code will prioritize the smaller of\n * the two values.\n */\n const valueRank = Math.abs(value - reference);\n if (valueRank < rank) {\n closestValue = value;\n rank = valueRank;\n }\n }\n return closestValue;\n};\nconst getFormattedDayPeriod = dayPeriod => {\n if (dayPeriod === undefined) {\n return '';\n }\n return dayPeriod.toUpperCase();\n};\nconst getLocalizedTime = (locale, refParts, use24Hour) => {\n if (refParts.hour === undefined || refParts.minute === undefined) {\n return 'Invalid Time';\n }\n return new Intl.DateTimeFormat(locale, {\n hour: 'numeric',\n minute: 'numeric',\n timeZone: 'UTC',\n /**\n * We use hourCycle here instead of hour12 due to:\n * https://bugs.chromium.org/p/chromium/issues/detail?id=1347316&q=hour12&can=2\n */\n hourCycle: use24Hour ? 'h23' : 'h12'\n }).format(new Date(convertDataToISO(Object.assign(Object.assign({}, refParts), {\n // TODO: FW-1831 will remove the need to manually set the tzOffset to undefined\n tzOffset: undefined\n }))));\n};\n/**\n * Adds padding to a time value so\n * that it is always 2 digits.\n */\nconst addTimePadding = value => {\n const valueToString = value.toString();\n if (valueToString.length > 1) {\n return valueToString;\n }\n return `0${valueToString}`;\n};\n/**\n * Formats 24 hour times so that\n * it always has 2 digits. For\n * 12 hour times it ensures that\n * hour 0 is formatted as '12'.\n */\nconst getFormattedHour = (hour, use24Hour) => {\n if (use24Hour) {\n return addTimePadding(hour);\n }\n /**\n * If using 12 hour\n * format, make sure hour\n * 0 is formatted as '12'.\n */\n if (hour === 0) {\n return '12';\n }\n return hour.toString();\n};\n/**\n * Generates an aria-label to be read by screen readers\n * given a local, a date, and whether or not that date is\n * today's date.\n */\nconst generateDayAriaLabel = (locale, today, refParts) => {\n if (refParts.day === null) {\n return null;\n }\n /**\n * MM/DD/YYYY will return midnight in the user's timezone.\n */\n const date = new Date(`${refParts.month}/${refParts.day}/${refParts.year} GMT+0000`);\n const labelString = new Intl.DateTimeFormat(locale, {\n weekday: 'long',\n month: 'long',\n day: 'numeric',\n timeZone: 'UTC'\n }).format(date);\n /**\n * If date is today, prepend \"Today\" so screen readers indicate\n * that the date is today.\n */\n return today ? `Today, ${labelString}` : labelString;\n};\n/**\n * Gets the day of the week, month, and day\n * Used for the header in MD mode.\n */\nconst getMonthAndDay = (locale, refParts) => {\n const date = new Date(`${refParts.month}/${refParts.day}/${refParts.year} GMT+0000`);\n return new Intl.DateTimeFormat(locale, {\n weekday: 'short',\n month: 'short',\n day: 'numeric',\n timeZone: 'UTC'\n }).format(date);\n};\n/**\n * Given a locale and a date object,\n * return a formatted string that includes\n * the month name and full year.\n * Example: May 2021\n */\nconst getMonthAndYear = (locale, refParts) => {\n const date = new Date(`${refParts.month}/${refParts.day}/${refParts.year} GMT+0000`);\n return new Intl.DateTimeFormat(locale, {\n month: 'long',\n year: 'numeric',\n timeZone: 'UTC'\n }).format(date);\n};\n/**\n * Given a locale and a date object,\n * return a formatted string that includes\n * the short month, numeric day, and full year.\n * Example: Apr 22, 2021\n */\nconst getMonthDayAndYear = (locale, refParts) => {\n return getLocalizedDateTime(locale, refParts, {\n month: 'short',\n day: 'numeric',\n year: 'numeric'\n });\n};\n/**\n * Given a locale and a date object,\n * return a formatted string that includes\n * the numeric day.\n * Note: Some languages will add literal characters\n * to the end. This function removes those literals.\n * Example: 29\n */\nconst getDay = (locale, refParts) => {\n return getLocalizedDateTimeParts(locale, refParts, {\n day: 'numeric'\n }).find(obj => obj.type === 'day').value;\n};\n/**\n * Given a locale and a date object,\n * return a formatted string that includes\n * the numeric year.\n * Example: 2022\n */\nconst getYear = (locale, refParts) => {\n return getLocalizedDateTime(locale, refParts, {\n year: 'numeric'\n });\n};\nconst getNormalizedDate = refParts => {\n const timeString = refParts.hour !== undefined && refParts.minute !== undefined ? ` ${refParts.hour}:${refParts.minute}` : '';\n return new Date(`${refParts.month}/${refParts.day}/${refParts.year}${timeString} GMT+0000`);\n};\n/**\n * Given a locale, DatetimeParts, and options\n * format the DatetimeParts according to the options\n * and locale combination. This returns a string. If\n * you want an array of the individual pieces\n * that make up the localized date string, use\n * getLocalizedDateTimeParts.\n */\nconst getLocalizedDateTime = (locale, refParts, options) => {\n const date = getNormalizedDate(refParts);\n return getDateTimeFormat(locale, options).format(date);\n};\n/**\n * Given a locale, DatetimeParts, and options\n * format the DatetimeParts according to the options\n * and locale combination. This returns an array of\n * each piece of the date.\n */\nconst getLocalizedDateTimeParts = (locale, refParts, options) => {\n const date = getNormalizedDate(refParts);\n return getDateTimeFormat(locale, options).formatToParts(date);\n};\n/**\n * Wrapper function for Intl.DateTimeFormat.\n * Allows developers to apply an allowed format to DatetimeParts.\n * This function also has built in safeguards for older browser bugs\n * with Intl.DateTimeFormat.\n */\nconst getDateTimeFormat = (locale, options) => {\n return new Intl.DateTimeFormat(locale, Object.assign(Object.assign({}, options), {\n timeZone: 'UTC'\n }));\n};\n/**\n * Gets a localized version of \"Today\"\n * Falls back to \"Today\" in English for\n * browsers that do not support RelativeTimeFormat.\n */\nconst getTodayLabel = locale => {\n if ('RelativeTimeFormat' in Intl) {\n const label = new Intl.RelativeTimeFormat(locale, {\n numeric: 'auto'\n }).format(0, 'day');\n return label.charAt(0).toUpperCase() + label.slice(1);\n } else {\n return 'Today';\n }\n};\n/**\n * When calling toISOString(), the browser\n * will convert the date to UTC time by either adding\n * or subtracting the time zone offset.\n * To work around this, we need to either add\n * or subtract the time zone offset to the Date\n * object prior to calling toISOString().\n * This allows us to get an ISO string\n * that is in the user's time zone.\n *\n * Example:\n * Time zone offset is 240\n * Meaning: The browser needs to add 240 minutes\n * to the Date object to get UTC time.\n * What Ionic does: We subtract 240 minutes\n * from the Date object. The browser then adds\n * 240 minutes in toISOString(). The result\n * is a time that is in the user's time zone\n * and not UTC.\n *\n * Note: Some timezones include minute adjustments\n * such as 30 or 45 minutes. This is why we use setMinutes\n * instead of setHours.\n * Example: India Standard Time\n * Timezone offset: -330 = -5.5 hours.\n *\n * List of timezones with 30 and 45 minute timezones:\n * https://www.timeanddate.com/time/time-zones-interesting.html\n */\nconst removeDateTzOffset = date => {\n const tzOffset = date.getTimezoneOffset();\n date.setMinutes(date.getMinutes() - tzOffset);\n return date;\n};\nconst DATE_AM = removeDateTzOffset(new Date('2022T01:00'));\nconst DATE_PM = removeDateTzOffset(new Date('2022T13:00'));\n/**\n * Formats the locale's string representation of the day period (am/pm) for a given\n * ref parts day period.\n *\n * @param locale The locale to format the day period in.\n * @param value The date string, in ISO format.\n * @returns The localized day period (am/pm) representation of the given value.\n */\nconst getLocalizedDayPeriod = (locale, dayPeriod) => {\n const date = dayPeriod === 'am' ? DATE_AM : DATE_PM;\n const localizedDayPeriod = new Intl.DateTimeFormat(locale, {\n hour: 'numeric',\n timeZone: 'UTC'\n }).formatToParts(date).find(part => part.type === 'dayPeriod');\n if (localizedDayPeriod) {\n return localizedDayPeriod.value;\n }\n return getFormattedDayPeriod(dayPeriod);\n};\n/**\n * Formats the datetime's value to a string, for use in the native input.\n *\n * @param value The value to format, either an ISO string or an array thereof.\n */\nconst formatValue = value => {\n return Array.isArray(value) ? value.join(',') : value;\n};\n\n/**\n * Returns the current date as\n * an ISO string in the user's\n * time zone.\n */\nconst getToday = () => {\n /**\n * ion-datetime intentionally does not\n * parse time zones/do automatic time zone\n * conversion when accepting user input.\n * However when we get today's date string,\n * we want it formatted relative to the user's\n * time zone.\n *\n * When calling toISOString(), the browser\n * will convert the date to UTC time by either adding\n * or subtracting the time zone offset.\n * To work around this, we need to either add\n * or subtract the time zone offset to the Date\n * object prior to calling toISOString().\n * This allows us to get an ISO string\n * that is in the user's time zone.\n */\n return removeDateTzOffset(new Date()).toISOString();\n};\nconst minutes = [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59];\nconst hour12 = [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11];\nconst hour23 = [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23];\n/**\n * Given a locale and a mode,\n * return an array with formatted days\n * of the week. iOS should display days\n * such as \"Mon\" or \"Tue\".\n * MD should display days such as \"M\"\n * or \"T\".\n */\nconst getDaysOfWeek = (locale, mode, firstDayOfWeek = 0) => {\n /**\n * Nov 1st, 2020 starts on a Sunday.\n * ion-datetime assumes weeks start on Sunday,\n * but is configurable via `firstDayOfWeek`.\n */\n const weekdayFormat = mode === 'ios' ? 'short' : 'narrow';\n const intl = new Intl.DateTimeFormat(locale, {\n weekday: weekdayFormat\n });\n const startDate = new Date('11/01/2020');\n const daysOfWeek = [];\n /**\n * For each day of the week,\n * get the day name.\n */\n for (let i = firstDayOfWeek; i < firstDayOfWeek + 7; i++) {\n const currentDate = new Date(startDate);\n currentDate.setDate(currentDate.getDate() + i);\n daysOfWeek.push(intl.format(currentDate));\n }\n return daysOfWeek;\n};\n/**\n * Returns an array containing all of the\n * days in a month for a given year. Values are\n * aligned with a week calendar starting on\n * the firstDayOfWeek value (Sunday by default)\n * using null values.\n */\nconst getDaysOfMonth = (month, year, firstDayOfWeek) => {\n const numDays = getNumDaysInMonth(month, year);\n const firstOfMonth = new Date(`${month}/1/${year}`).getDay();\n /**\n * To get the first day of the month aligned on the correct\n * day of the week, we need to determine how many \"filler\" days\n * to generate. These filler days as empty/disabled buttons\n * that fill the space of the days of the week before the first\n * of the month.\n *\n * There are two cases here:\n *\n * 1. If firstOfMonth = 4, firstDayOfWeek = 0 then the offset\n * is (4 - (0 + 1)) = 3. Since the offset loop goes from 0 to 3 inclusive,\n * this will generate 4 filler days (0, 1, 2, 3), and then day of week 4 will have\n * the first day of the month.\n *\n * 2. If firstOfMonth = 2, firstDayOfWeek = 4 then the offset\n * is (6 - (4 - 2)) = 4. Since the offset loop goes from 0 to 4 inclusive,\n * this will generate 5 filler days (0, 1, 2, 3, 4), and then day of week 5 will have\n * the first day of the month.\n */\n const offset = firstOfMonth >= firstDayOfWeek ? firstOfMonth - (firstDayOfWeek + 1) : 6 - (firstDayOfWeek - firstOfMonth);\n let days = [];\n for (let i = 1; i <= numDays; i++) {\n days.push({\n day: i,\n dayOfWeek: (offset + i) % 7\n });\n }\n for (let i = 0; i <= offset; i++) {\n days = [{\n day: null,\n dayOfWeek: null\n }, ...days];\n }\n return days;\n};\n/**\n * Given a local, reference datetime parts and option\n * max/min bound datetime parts, calculate the acceptable\n * hour and minute values according to the bounds and locale.\n */\nconst generateTime = (refParts, hourCycle = 'h12', minParts, maxParts, hourValues, minuteValues) => {\n const use24Hour = hourCycle === 'h23';\n let processedHours = use24Hour ? hour23 : hour12;\n let processedMinutes = minutes;\n let isAMAllowed = true;\n let isPMAllowed = true;\n if (hourValues) {\n processedHours = processedHours.filter(hour => hourValues.includes(hour));\n }\n if (minuteValues) {\n processedMinutes = processedMinutes.filter(minute => minuteValues.includes(minute));\n }\n if (minParts) {\n /**\n * If ref day is the same as the\n * minimum allowed day, filter hour/minute\n * values according to min hour and minute.\n */\n if (isSameDay(refParts, minParts)) {\n /**\n * Users may not always set the hour/minute for\n * min value (i.e. 2021-06-02) so we should allow\n * all hours/minutes in that case.\n */\n if (minParts.hour !== undefined) {\n processedHours = processedHours.filter(hour => {\n const convertedHour = refParts.ampm === 'pm' ? (hour + 12) % 24 : hour;\n return (use24Hour ? hour : convertedHour) >= minParts.hour;\n });\n isAMAllowed = minParts.hour < 13;\n }\n if (minParts.minute !== undefined) {\n /**\n * The minimum minute range should not be enforced when\n * the hour is greater than the min hour.\n *\n * For example with a minimum range of 09:30, users\n * should be able to select 10:00-10:29 and beyond.\n */\n let isPastMinHour = false;\n if (minParts.hour !== undefined && refParts.hour !== undefined) {\n if (refParts.hour > minParts.hour) {\n isPastMinHour = true;\n }\n }\n processedMinutes = processedMinutes.filter(minute => {\n if (isPastMinHour) {\n return true;\n }\n return minute >= minParts.minute;\n });\n }\n /**\n * If ref day is before minimum\n * day do not render any hours/minute values\n */\n } else if (isBefore(refParts, minParts)) {\n processedHours = [];\n processedMinutes = [];\n isAMAllowed = isPMAllowed = false;\n }\n }\n if (maxParts) {\n /**\n * If ref day is the same as the\n * maximum allowed day, filter hour/minute\n * values according to max hour and minute.\n */\n if (isSameDay(refParts, maxParts)) {\n /**\n * Users may not always set the hour/minute for\n * max value (i.e. 2021-06-02) so we should allow\n * all hours/minutes in that case.\n */\n if (maxParts.hour !== undefined) {\n processedHours = processedHours.filter(hour => {\n const convertedHour = refParts.ampm === 'pm' ? (hour + 12) % 24 : hour;\n return (use24Hour ? hour : convertedHour) <= maxParts.hour;\n });\n isPMAllowed = maxParts.hour >= 12;\n }\n if (maxParts.minute !== undefined && refParts.hour === maxParts.hour) {\n // The available minutes should only be filtered when the hour is the same as the max hour.\n // For example if the max hour is 10:30 and the current hour is 10:00,\n // users should be able to select 00-30 minutes.\n // If the current hour is 09:00, users should be able to select 00-60 minutes.\n processedMinutes = processedMinutes.filter(minute => minute <= maxParts.minute);\n }\n /**\n * If ref day is after minimum\n * day do not render any hours/minute values\n */\n } else if (isAfter(refParts, maxParts)) {\n processedHours = [];\n processedMinutes = [];\n isAMAllowed = isPMAllowed = false;\n }\n }\n return {\n hours: processedHours,\n minutes: processedMinutes,\n am: isAMAllowed,\n pm: isPMAllowed\n };\n};\n/**\n * Given DatetimeParts, generate the previous,\n * current, and and next months.\n */\nconst generateMonths = refParts => {\n return [getPreviousMonth(refParts), {\n month: refParts.month,\n year: refParts.year,\n day: refParts.day\n }, getNextMonth(refParts)];\n};\nconst getMonthColumnData = (locale, refParts, minParts, maxParts, monthValues, formatOptions = {\n month: 'long'\n}) => {\n const {\n year\n } = refParts;\n const months = [];\n if (monthValues !== undefined) {\n let processedMonths = monthValues;\n if ((maxParts === null || maxParts === void 0 ? void 0 : maxParts.month) !== undefined) {\n processedMonths = processedMonths.filter(month => month <= maxParts.month);\n }\n if ((minParts === null || minParts === void 0 ? void 0 : minParts.month) !== undefined) {\n processedMonths = processedMonths.filter(month => month >= minParts.month);\n }\n processedMonths.forEach(processedMonth => {\n const date = new Date(`${processedMonth}/1/${year} GMT+0000`);\n const monthString = new Intl.DateTimeFormat(locale, Object.assign(Object.assign({}, formatOptions), {\n timeZone: 'UTC'\n })).format(date);\n months.push({\n text: monthString,\n value: processedMonth\n });\n });\n } else {\n const maxMonth = maxParts && maxParts.year === year ? maxParts.month : 12;\n const minMonth = minParts && minParts.year === year ? minParts.month : 1;\n for (let i = minMonth; i <= maxMonth; i++) {\n /**\n *\n * There is a bug on iOS 14 where\n * Intl.DateTimeFormat takes into account\n * the local timezone offset when formatting dates.\n *\n * Forcing the timezone to 'UTC' fixes the issue. However,\n * we should keep this workaround as it is safer. In the event\n * this breaks in another browser, we will not be impacted\n * because all dates will be interpreted in UTC.\n *\n * Example:\n * new Intl.DateTimeFormat('en-US', { month: 'long' }).format(new Date('Sat Apr 01 2006 00:00:00 GMT-0400 (EDT)')) // \"March\"\n * new Intl.DateTimeFormat('en-US', { month: 'long', timeZone: 'UTC' }).format(new Date('Sat Apr 01 2006 00:00:00 GMT-0400 (EDT)')) // \"April\"\n *\n * In certain timezones, iOS 14 shows the wrong\n * date for .toUTCString(). To combat this, we\n * force all of the timezones to GMT+0000 (UTC).\n *\n * Example:\n * Time Zone: Central European Standard Time\n * new Date('1/1/1992').toUTCString() // \"Tue, 31 Dec 1991 23:00:00 GMT\"\n * new Date('1/1/1992 GMT+0000').toUTCString() // \"Wed, 01 Jan 1992 00:00:00 GMT\"\n */\n const date = new Date(`${i}/1/${year} GMT+0000`);\n const monthString = new Intl.DateTimeFormat(locale, Object.assign(Object.assign({}, formatOptions), {\n timeZone: 'UTC'\n })).format(date);\n months.push({\n text: monthString,\n value: i\n });\n }\n }\n return months;\n};\n/**\n * Returns information regarding\n * selectable dates (i.e 1st, 2nd, 3rd, etc)\n * within a reference month.\n * @param locale The locale to format the date with\n * @param refParts The reference month/year to generate dates for\n * @param minParts The minimum bound on the date that can be returned\n * @param maxParts The maximum bound on the date that can be returned\n * @param dayValues The allowed date values\n * @returns Date data to be used in ion-picker-column-internal\n */\nconst getDayColumnData = (locale, refParts, minParts, maxParts, dayValues, formatOptions = {\n day: 'numeric'\n}) => {\n const {\n month,\n year\n } = refParts;\n const days = [];\n /**\n * If we have max/min bounds that in the same\n * month/year as the refParts, we should\n * use the define day as the max/min day.\n * Otherwise, fallback to the max/min days in a month.\n */\n const numDaysInMonth = getNumDaysInMonth(month, year);\n const maxDay = (maxParts === null || maxParts === void 0 ? void 0 : maxParts.day) !== null && (maxParts === null || maxParts === void 0 ? void 0 : maxParts.day) !== undefined && maxParts.year === year && maxParts.month === month ? maxParts.day : numDaysInMonth;\n const minDay = (minParts === null || minParts === void 0 ? void 0 : minParts.day) !== null && (minParts === null || minParts === void 0 ? void 0 : minParts.day) !== undefined && minParts.year === year && minParts.month === month ? minParts.day : 1;\n if (dayValues !== undefined) {\n let processedDays = dayValues;\n processedDays = processedDays.filter(day => day >= minDay && day <= maxDay);\n processedDays.forEach(processedDay => {\n const date = new Date(`${month}/${processedDay}/${year} GMT+0000`);\n const dayString = new Intl.DateTimeFormat(locale, Object.assign(Object.assign({}, formatOptions), {\n timeZone: 'UTC'\n })).format(date);\n days.push({\n text: dayString,\n value: processedDay\n });\n });\n } else {\n for (let i = minDay; i <= maxDay; i++) {\n const date = new Date(`${month}/${i}/${year} GMT+0000`);\n const dayString = new Intl.DateTimeFormat(locale, Object.assign(Object.assign({}, formatOptions), {\n timeZone: 'UTC'\n })).format(date);\n days.push({\n text: dayString,\n value: i\n });\n }\n }\n return days;\n};\nconst getYearColumnData = (locale, refParts, minParts, maxParts, yearValues) => {\n var _a, _b;\n let processedYears = [];\n if (yearValues !== undefined) {\n processedYears = yearValues;\n if ((maxParts === null || maxParts === void 0 ? void 0 : maxParts.year) !== undefined) {\n processedYears = processedYears.filter(year => year <= maxParts.year);\n }\n if ((minParts === null || minParts === void 0 ? void 0 : minParts.year) !== undefined) {\n processedYears = processedYears.filter(year => year >= minParts.year);\n }\n } else {\n const {\n year\n } = refParts;\n const maxYear = (_a = maxParts === null || maxParts === void 0 ? void 0 : maxParts.year) !== null && _a !== void 0 ? _a : year;\n const minYear = (_b = minParts === null || minParts === void 0 ? void 0 : minParts.year) !== null && _b !== void 0 ? _b : year - 100;\n for (let i = maxYear; i >= minYear; i--) {\n processedYears.push(i);\n }\n }\n return processedYears.map(year => ({\n text: getYear(locale, {\n year,\n month: refParts.month,\n day: refParts.day\n }),\n value: year\n }));\n};\n/**\n * Given a starting date and an upper bound,\n * this functions returns an array of all\n * month objects in that range.\n */\nconst getAllMonthsInRange = (currentParts, maxParts) => {\n if (currentParts.month === maxParts.month && currentParts.year === maxParts.year) {\n return [currentParts];\n }\n return [currentParts, ...getAllMonthsInRange(getNextMonth(currentParts), maxParts)];\n};\n/**\n * Creates and returns picker items\n * that represent the days in a month.\n * Example: \"Thu, Jun 2\"\n */\nconst getCombinedDateColumnData = (locale, todayParts, minParts, maxParts, dayValues, monthValues) => {\n let items = [];\n let parts = [];\n /**\n * Get all month objects from the min date\n * to the max date. Note: Do not use getMonthColumnData\n * as that function only generates dates within a\n * single year.\n */\n let months = getAllMonthsInRange(minParts, maxParts);\n /**\n * Filter out any disallowed month values.\n */\n if (monthValues) {\n months = months.filter(({\n month\n }) => monthValues.includes(month));\n }\n /**\n * Get all of the days in the month.\n * From there, generate an array where\n * each item has the month, date, and day\n * of work as the text.\n */\n months.forEach(monthObject => {\n const referenceMonth = {\n month: monthObject.month,\n day: null,\n year: monthObject.year\n };\n const monthDays = getDayColumnData(locale, referenceMonth, minParts, maxParts, dayValues, {\n month: 'short',\n day: 'numeric',\n weekday: 'short'\n });\n const dateParts = [];\n const dateColumnItems = [];\n monthDays.forEach(dayObject => {\n const isToday = isSameDay(Object.assign(Object.assign({}, referenceMonth), {\n day: dayObject.value\n }), todayParts);\n /**\n * Today's date should read as \"Today\" (localized)\n * not the actual date string\n */\n dateColumnItems.push({\n text: isToday ? getTodayLabel(locale) : dayObject.text,\n value: `${referenceMonth.year}-${referenceMonth.month}-${dayObject.value}`\n });\n /**\n * When selecting a date in the wheel picker\n * we need access to the raw datetime parts data.\n * The picker column only accepts values of\n * type string or number, so we need to return\n * two sets of data: A data set to be passed\n * to the picker column, and a data set to\n * be used to reference the raw data when\n * updating the picker column value.\n */\n dateParts.push({\n month: referenceMonth.month,\n year: referenceMonth.year,\n day: dayObject.value\n });\n });\n parts = [...parts, ...dateParts];\n items = [...items, ...dateColumnItems];\n });\n return {\n parts,\n items\n };\n};\nconst getTimeColumnsData = (locale, refParts, hourCycle, minParts, maxParts, allowedHourValues, allowedMinuteValues) => {\n const use24Hour = is24Hour(locale, hourCycle);\n const {\n hours,\n minutes,\n am,\n pm\n } = generateTime(refParts, use24Hour ? 'h23' : 'h12', minParts, maxParts, allowedHourValues, allowedMinuteValues);\n const hoursItems = hours.map(hour => {\n return {\n text: getFormattedHour(hour, use24Hour),\n value: getInternalHourValue(hour, use24Hour, refParts.ampm)\n };\n });\n const minutesItems = minutes.map(minute => {\n return {\n text: addTimePadding(minute),\n value: minute\n };\n });\n const dayPeriodItems = [];\n if (am && !use24Hour) {\n dayPeriodItems.push({\n text: getLocalizedDayPeriod(locale, 'am'),\n value: 'am'\n });\n }\n if (pm && !use24Hour) {\n dayPeriodItems.push({\n text: getLocalizedDayPeriod(locale, 'pm'),\n value: 'pm'\n });\n }\n return {\n minutesData: minutesItems,\n hoursData: hoursItems,\n dayPeriodData: dayPeriodItems\n };\n};\n\n\n//# sourceURL=webpack://jandl/./node_modules/@ionic/core/components/data.js?"); +eval("{__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ A: function() { return /* binding */ getDayColumnData; },\n/* harmony export */ B: function() { return /* binding */ getYearColumnData; },\n/* harmony export */ C: function() { return /* binding */ isMonthFirstLocale; },\n/* harmony export */ D: function() { return /* binding */ getTimeColumnsData; },\n/* harmony export */ E: function() { return /* binding */ isLocaleDayPeriodRTL; },\n/* harmony export */ F: function() { return /* binding */ getMonthAndYear; },\n/* harmony export */ G: function() { return /* binding */ getDaysOfWeek; },\n/* harmony export */ H: function() { return /* binding */ getDaysOfMonth; },\n/* harmony export */ I: function() { return /* binding */ generateMonths; },\n/* harmony export */ J: function() { return /* binding */ is24Hour; },\n/* harmony export */ K: function() { return /* binding */ getLocalizedTime; },\n/* harmony export */ L: function() { return /* binding */ getMonthAndDay; },\n/* harmony export */ M: function() { return /* binding */ formatValue; },\n/* harmony export */ N: function() { return /* binding */ getNextYear; },\n/* harmony export */ O: function() { return /* binding */ getPreviousYear; },\n/* harmony export */ P: function() { return /* binding */ clampDate; },\n/* harmony export */ Q: function() { return /* binding */ parseAmPm; },\n/* harmony export */ R: function() { return /* binding */ calculateHourFromAMPM; },\n/* harmony export */ S: function() { return /* binding */ getLocalizedDateTime; },\n/* harmony export */ T: function() { return /* binding */ getMonthDayAndYear; },\n/* harmony export */ a: function() { return /* binding */ getDay; },\n/* harmony export */ b: function() { return /* binding */ isAfter; },\n/* harmony export */ c: function() { return /* binding */ isSameDay; },\n/* harmony export */ d: function() { return /* binding */ getPreviousMonth; },\n/* harmony export */ e: function() { return /* binding */ getNextMonth; },\n/* harmony export */ f: function() { return /* binding */ getPartsFromCalendarDay; },\n/* harmony export */ g: function() { return /* binding */ generateDayAriaLabel; },\n/* harmony export */ h: function() { return /* binding */ getEndOfWeek; },\n/* harmony export */ i: function() { return /* binding */ isBefore; },\n/* harmony export */ j: function() { return /* binding */ getStartOfWeek; },\n/* harmony export */ k: function() { return /* binding */ getPreviousDay; },\n/* harmony export */ l: function() { return /* binding */ getNextDay; },\n/* harmony export */ m: function() { return /* binding */ getPreviousWeek; },\n/* harmony export */ n: function() { return /* binding */ getNextWeek; },\n/* harmony export */ o: function() { return /* binding */ parseMaxParts; },\n/* harmony export */ p: function() { return /* binding */ parseMinParts; },\n/* harmony export */ q: function() { return /* binding */ parseDate; },\n/* harmony export */ r: function() { return /* binding */ convertToArrayOfNumbers; },\n/* harmony export */ s: function() { return /* binding */ convertDataToISO; },\n/* harmony export */ t: function() { return /* binding */ getToday; },\n/* harmony export */ u: function() { return /* binding */ getClosestValidDate; },\n/* harmony export */ v: function() { return /* binding */ validateParts; },\n/* harmony export */ w: function() { return /* binding */ warnIfValueOutOfBounds; },\n/* harmony export */ x: function() { return /* binding */ getNumDaysInMonth; },\n/* harmony export */ y: function() { return /* binding */ getCombinedDateColumnData; },\n/* harmony export */ z: function() { return /* binding */ getMonthColumnData; }\n/* harmony export */ });\n/* harmony import */ var core_js_modules_es_array_push_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! core-js/modules/es.array.push.js */ \"./node_modules/core-js/modules/es.array.push.js\");\n/* harmony import */ var core_js_modules_es_array_push_js__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_array_push_js__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var core_js_modules_es_json_stringify_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! core-js/modules/es.json.stringify.js */ \"./node_modules/core-js/modules/es.json.stringify.js\");\n/* harmony import */ var core_js_modules_es_json_stringify_js__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_json_stringify_js__WEBPACK_IMPORTED_MODULE_1__);\n/* harmony import */ var core_js_modules_esnext_iterator_constructor_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! core-js/modules/esnext.iterator.constructor.js */ \"./node_modules/core-js/modules/esnext.iterator.constructor.js\");\n/* harmony import */ var core_js_modules_esnext_iterator_constructor_js__WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_esnext_iterator_constructor_js__WEBPACK_IMPORTED_MODULE_2__);\n/* harmony import */ var core_js_modules_esnext_iterator_filter_js__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! core-js/modules/esnext.iterator.filter.js */ \"./node_modules/core-js/modules/esnext.iterator.filter.js\");\n/* harmony import */ var core_js_modules_esnext_iterator_filter_js__WEBPACK_IMPORTED_MODULE_3___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_esnext_iterator_filter_js__WEBPACK_IMPORTED_MODULE_3__);\n/* harmony import */ var core_js_modules_esnext_iterator_find_js__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! core-js/modules/esnext.iterator.find.js */ \"./node_modules/core-js/modules/esnext.iterator.find.js\");\n/* harmony import */ var core_js_modules_esnext_iterator_find_js__WEBPACK_IMPORTED_MODULE_4___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_esnext_iterator_find_js__WEBPACK_IMPORTED_MODULE_4__);\n/* harmony import */ var core_js_modules_esnext_iterator_for_each_js__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! core-js/modules/esnext.iterator.for-each.js */ \"./node_modules/core-js/modules/esnext.iterator.for-each.js\");\n/* harmony import */ var core_js_modules_esnext_iterator_for_each_js__WEBPACK_IMPORTED_MODULE_5___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_esnext_iterator_for_each_js__WEBPACK_IMPORTED_MODULE_5__);\n/* harmony import */ var core_js_modules_esnext_iterator_map_js__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! core-js/modules/esnext.iterator.map.js */ \"./node_modules/core-js/modules/esnext.iterator.map.js\");\n/* harmony import */ var core_js_modules_esnext_iterator_map_js__WEBPACK_IMPORTED_MODULE_6___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_esnext_iterator_map_js__WEBPACK_IMPORTED_MODULE_6__);\n/* harmony import */ var _index8_js__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! ./index8.js */ \"./node_modules/@ionic/core/components/index8.js\");\n\n\n\n\n\n\n\n/*!\n * (C) Ionic http://ionicframework.com - MIT License\n */\n\n\n/**\n * Returns true if the selected day is equal to the reference day\n */\nconst isSameDay = (baseParts, compareParts) => {\n return baseParts.month === compareParts.month && baseParts.day === compareParts.day && baseParts.year === compareParts.year;\n};\n/**\n * Returns true is the selected day is before the reference day.\n */\nconst isBefore = (baseParts, compareParts) => {\n return !!(baseParts.year < compareParts.year || baseParts.year === compareParts.year && baseParts.month < compareParts.month || baseParts.year === compareParts.year && baseParts.month === compareParts.month && baseParts.day !== null && baseParts.day < compareParts.day);\n};\n/**\n * Returns true is the selected day is after the reference day.\n */\nconst isAfter = (baseParts, compareParts) => {\n return !!(baseParts.year > compareParts.year || baseParts.year === compareParts.year && baseParts.month > compareParts.month || baseParts.year === compareParts.year && baseParts.month === compareParts.month && baseParts.day !== null && baseParts.day > compareParts.day);\n};\nconst warnIfValueOutOfBounds = (value, min, max) => {\n const valueArray = Array.isArray(value) ? value : [value];\n for (const val of valueArray) {\n if (min !== undefined && isBefore(val, min) || max !== undefined && isAfter(val, max)) {\n (0,_index8_js__WEBPACK_IMPORTED_MODULE_7__.p)('The value provided to ion-datetime is out of bounds.\\n\\n' + `Min: ${JSON.stringify(min)}\\n` + `Max: ${JSON.stringify(max)}\\n` + `Value: ${JSON.stringify(value)}`);\n break;\n }\n }\n};\n\n/**\n * Determines if given year is a\n * leap year. Returns `true` if year\n * is a leap year. Returns `false`\n * otherwise.\n */\nconst isLeapYear = year => {\n return year % 4 === 0 && year % 100 !== 0 || year % 400 === 0;\n};\nconst is24Hour = (locale, hourCycle) => {\n /**\n * If developer has explicitly enabled h23 time\n * then return early and do not look at the system default.\n */\n if (hourCycle !== undefined) {\n return hourCycle === 'h23';\n }\n /**\n * If hourCycle was not specified, check the locale\n * that is set on the user's device. We first check the\n * Intl.DateTimeFormat hourCycle option as developers can encode this\n * option into the locale string. Example: `en-US-u-hc-h23`\n */\n const formatted = new Intl.DateTimeFormat(locale, {\n hour: 'numeric'\n });\n const options = formatted.resolvedOptions();\n if (options.hourCycle !== undefined) {\n return options.hourCycle === 'h23';\n }\n /**\n * If hourCycle is not specified (either through lack\n * of browser support or locale information) then fall\n * back to this slower hourCycle check.\n */\n const date = new Date('5/18/2021 00:00');\n const parts = formatted.formatToParts(date);\n const hour = parts.find(p => p.type === 'hour');\n if (!hour) {\n throw new Error('Hour value not found from DateTimeFormat');\n }\n return hour.value === '00';\n};\n/**\n * Given a date object, returns the number\n * of days in that month.\n * Month value begin at 1, not 0.\n * i.e. January = month 1.\n */\nconst getNumDaysInMonth = (month, year) => {\n return month === 4 || month === 6 || month === 9 || month === 11 ? 30 : month === 2 ? isLeapYear(year) ? 29 : 28 : 31;\n};\n/**\n * Certain locales display month then year while\n * others display year then month.\n * We can use Intl.DateTimeFormat to determine\n * the ordering for each locale.\n * The formatOptions param can be used to customize\n * which pieces of a date to compare against the month\n * with. For example, some locales render dd/mm/yyyy\n * while others render mm/dd/yyyy. This function can be\n * used for variations of the same \"month first\" check.\n */\nconst isMonthFirstLocale = (locale, formatOptions = {\n month: 'numeric',\n year: 'numeric'\n}) => {\n /**\n * By setting month and year we guarantee that only\n * month, year, and literal (slashes '/', for example)\n * values are included in the formatToParts results.\n *\n * The ordering of the parts will be determined by\n * the locale. So if the month is the first value,\n * then we know month should be shown first. If the\n * year is the first value, then we know year should be shown first.\n *\n * This ordering can be controlled by customizing the locale property.\n */\n const parts = new Intl.DateTimeFormat(locale, formatOptions).formatToParts(new Date());\n return parts[0].type === 'month';\n};\n/**\n * Determines if the given locale formats the day period (am/pm) to the\n * left or right of the hour.\n * @param locale The locale to check.\n * @returns `true` if the locale formats the day period to the left of the hour.\n */\nconst isLocaleDayPeriodRTL = locale => {\n const parts = new Intl.DateTimeFormat(locale, {\n hour: 'numeric'\n }).formatToParts(new Date());\n return parts[0].type === 'dayPeriod';\n};\nconst ISO_8601_REGEXP =\n// eslint-disable-next-line no-useless-escape\n/^(\\d{4}|[+\\-]\\d{6})(?:-(\\d{2})(?:-(\\d{2}))?)?(?:T(\\d{2}):(\\d{2})(?::(\\d{2})(?:\\.(\\d{3}))?)?(?:(Z)|([+\\-])(\\d{2})(?::(\\d{2}))?)?)?$/;\n// eslint-disable-next-line no-useless-escape\nconst TIME_REGEXP = /^((\\d{2}):(\\d{2})(?::(\\d{2})(?:\\.(\\d{3}))?)?(?:(Z)|([+\\-])(\\d{2})(?::(\\d{2}))?)?)?$/;\n/**\n * Use to convert a string of comma separated numbers or\n * an array of numbers, and clean up any user input\n */\nconst convertToArrayOfNumbers = input => {\n if (input === undefined) {\n return;\n }\n let processedInput = input;\n if (typeof input === 'string') {\n // convert the string to an array of strings\n // auto remove any whitespace and [] characters\n processedInput = input.replace(/\\[|\\]|\\s/g, '').split(',');\n }\n let values;\n if (Array.isArray(processedInput)) {\n // ensure each value is an actual number in the returned array\n values = processedInput.map(num => parseInt(num, 10)).filter(isFinite);\n } else {\n values = [processedInput];\n }\n return values;\n};\n/**\n * Extracts date information\n * from a .calendar-day element\n * into DatetimeParts.\n */\nconst getPartsFromCalendarDay = el => {\n return {\n month: parseInt(el.getAttribute('data-month'), 10),\n day: parseInt(el.getAttribute('data-day'), 10),\n year: parseInt(el.getAttribute('data-year'), 10),\n dayOfWeek: parseInt(el.getAttribute('data-day-of-week'), 10)\n };\n};\nfunction parseDate(val) {\n if (Array.isArray(val)) {\n return val.map(valStr => parseDate(valStr));\n }\n // manually parse IS0 cuz Date.parse cannot be trusted\n // ISO 8601 format: 1994-12-15T13:47:20Z\n let parse = null;\n if (val != null && val !== '') {\n // try parsing for just time first, HH:MM\n parse = TIME_REGEXP.exec(val);\n if (parse) {\n // adjust the array so it fits nicely with the datetime parse\n parse.unshift(undefined, undefined);\n parse[2] = parse[3] = undefined;\n } else {\n // try parsing for full ISO datetime\n parse = ISO_8601_REGEXP.exec(val);\n }\n }\n if (parse === null) {\n // wasn't able to parse the ISO datetime\n return undefined;\n }\n // ensure all the parse values exist with at least 0\n for (let i = 1; i < 8; i++) {\n parse[i] = parse[i] !== undefined ? parseInt(parse[i], 10) : undefined;\n }\n let tzOffset = 0;\n if (parse[9] && parse[10]) {\n // hours\n tzOffset = parseInt(parse[10], 10) * 60;\n if (parse[11]) {\n // minutes\n tzOffset += parseInt(parse[11], 10);\n }\n if (parse[9] === '-') {\n // + or -\n tzOffset *= -1;\n }\n }\n // can also get second and millisecond from parse[6] and parse[7] if needed\n return {\n year: parse[1],\n month: parse[2],\n day: parse[3],\n hour: parse[4],\n minute: parse[5],\n tzOffset,\n ampm: parse[4] < 12 ? 'am' : 'pm'\n };\n}\nconst clampDate = (dateParts, minParts, maxParts) => {\n if (minParts && isBefore(dateParts, minParts)) {\n return minParts;\n } else if (maxParts && isAfter(dateParts, maxParts)) {\n return maxParts;\n }\n return dateParts;\n};\n/**\n * Parses an hour and returns if the value is in the morning (am) or afternoon (pm).\n * @param hour The hour to format, should be 0-23\n * @returns `pm` if the hour is greater than or equal to 12, `am` if less than 12.\n */\nconst parseAmPm = hour => {\n return hour >= 12 ? 'pm' : 'am';\n};\n/**\n * Takes a max date string and creates a DatetimeParts\n * object, filling in any missing information.\n * For example, max=\"2012\" would fill in the missing\n * month, day, hour, and minute information.\n */\nconst parseMaxParts = (max, todayParts) => {\n const {\n month,\n day,\n year,\n hour,\n minute\n } = parseDate(max);\n /**\n * When passing in `max` or `min`, developers\n * can pass in any ISO-8601 string. This means\n * that not all of the date/time fields are defined.\n * For example, passing max=\"2012\" is valid even though\n * there is no month, day, hour, or minute data.\n * However, all of this data is required when clamping the date\n * so that the correct initial value can be selected. As a result,\n * we need to fill in any omitted data with the min or max values.\n */\n const yearValue = year !== null && year !== void 0 ? year : todayParts.year;\n const monthValue = month !== null && month !== void 0 ? month : 12;\n return {\n month: monthValue,\n day: day !== null && day !== void 0 ? day : getNumDaysInMonth(monthValue, yearValue),\n /**\n * Passing in \"HH:mm\" is a valid ISO-8601\n * string, so we just default to the current year\n * in this case.\n */\n year: yearValue,\n hour: hour !== null && hour !== void 0 ? hour : 23,\n minute: minute !== null && minute !== void 0 ? minute : 59\n };\n};\n/**\n * Takes a min date string and creates a DatetimeParts\n * object, filling in any missing information.\n * For example, min=\"2012\" would fill in the missing\n * month, day, hour, and minute information.\n */\nconst parseMinParts = (min, todayParts) => {\n const {\n month,\n day,\n year,\n hour,\n minute\n } = parseDate(min);\n /**\n * When passing in `max` or `min`, developers\n * can pass in any ISO-8601 string. This means\n * that not all of the date/time fields are defined.\n * For example, passing max=\"2012\" is valid even though\n * there is no month, day, hour, or minute data.\n * However, all of this data is required when clamping the date\n * so that the correct initial value can be selected. As a result,\n * we need to fill in any omitted data with the min or max values.\n */\n return {\n month: month !== null && month !== void 0 ? month : 1,\n day: day !== null && day !== void 0 ? day : 1,\n /**\n * Passing in \"HH:mm\" is a valid ISO-8601\n * string, so we just default to the current year\n * in this case.\n */\n year: year !== null && year !== void 0 ? year : todayParts.year,\n hour: hour !== null && hour !== void 0 ? hour : 0,\n minute: minute !== null && minute !== void 0 ? minute : 0\n };\n};\nconst twoDigit = val => {\n return ('0' + (val !== undefined ? Math.abs(val) : '0')).slice(-2);\n};\nconst fourDigit = val => {\n return ('000' + (val !== undefined ? Math.abs(val) : '0')).slice(-4);\n};\nfunction convertDataToISO(data) {\n if (Array.isArray(data)) {\n return data.map(parts => convertDataToISO(parts));\n }\n // https://www.w3.org/TR/NOTE-datetime\n let rtn = '';\n if (data.year !== undefined) {\n // YYYY\n rtn = fourDigit(data.year);\n if (data.month !== undefined) {\n // YYYY-MM\n rtn += '-' + twoDigit(data.month);\n if (data.day !== undefined) {\n // YYYY-MM-DD\n rtn += '-' + twoDigit(data.day);\n if (data.hour !== undefined) {\n // YYYY-MM-DDTHH:mm:SS\n rtn += `T${twoDigit(data.hour)}:${twoDigit(data.minute)}:00`;\n if (data.tzOffset === undefined) {\n // YYYY-MM-DDTHH:mm:SSZ\n rtn += 'Z';\n } else {\n // YYYY-MM-DDTHH:mm:SS+/-HH:mm\n rtn += (data.tzOffset > 0 ? '+' : '-') + twoDigit(Math.floor(Math.abs(data.tzOffset / 60))) + ':' + twoDigit(data.tzOffset % 60);\n }\n }\n }\n }\n } else if (data.hour !== undefined) {\n // HH:mm\n rtn = twoDigit(data.hour) + ':' + twoDigit(data.minute);\n }\n return rtn;\n}\n/**\n * Converts an 12 hour value to 24 hours.\n */\nconst convert12HourTo24Hour = (hour, ampm) => {\n if (ampm === undefined) {\n return hour;\n }\n /**\n * If AM and 12am\n * then return 00:00.\n * Otherwise just return\n * the hour since it is\n * already in 24 hour format.\n */\n if (ampm === 'am') {\n if (hour === 12) {\n return 0;\n }\n return hour;\n }\n /**\n * If PM and 12pm\n * just return 12:00\n * since it is already\n * in 24 hour format.\n * Otherwise add 12 hours\n * to the time.\n */\n if (hour === 12) {\n return 12;\n }\n return hour + 12;\n};\nconst getStartOfWeek = refParts => {\n const {\n dayOfWeek\n } = refParts;\n if (dayOfWeek === null || dayOfWeek === undefined) {\n throw new Error('No day of week provided');\n }\n return subtractDays(refParts, dayOfWeek);\n};\nconst getEndOfWeek = refParts => {\n const {\n dayOfWeek\n } = refParts;\n if (dayOfWeek === null || dayOfWeek === undefined) {\n throw new Error('No day of week provided');\n }\n return addDays(refParts, 6 - dayOfWeek);\n};\nconst getNextDay = refParts => {\n return addDays(refParts, 1);\n};\nconst getPreviousDay = refParts => {\n return subtractDays(refParts, 1);\n};\nconst getPreviousWeek = refParts => {\n return subtractDays(refParts, 7);\n};\nconst getNextWeek = refParts => {\n return addDays(refParts, 7);\n};\n/**\n * Given datetime parts, subtract\n * numDays from the date.\n * Returns a new DatetimeParts object\n * Currently can only go backward at most 1 month.\n */\nconst subtractDays = (refParts, numDays) => {\n const {\n month,\n day,\n year\n } = refParts;\n if (day === null) {\n throw new Error('No day provided');\n }\n const workingParts = {\n month,\n day,\n year\n };\n workingParts.day = day - numDays;\n /**\n * If wrapping to previous month\n * update days and decrement month\n */\n if (workingParts.day < 1) {\n workingParts.month -= 1;\n }\n /**\n * If moving to previous year, reset\n * month to December and decrement year\n */\n if (workingParts.month < 1) {\n workingParts.month = 12;\n workingParts.year -= 1;\n }\n /**\n * Determine how many days are in the current\n * month\n */\n if (workingParts.day < 1) {\n const daysInMonth = getNumDaysInMonth(workingParts.month, workingParts.year);\n /**\n * Take num days in month and add the\n * number of underflow days. This number will\n * be negative.\n * Example: 1 week before Jan 2, 2021 is\n * December 26, 2021 so:\n * 2 - 7 = -5\n * 31 + (-5) = 26\n */\n workingParts.day = daysInMonth + workingParts.day;\n }\n return workingParts;\n};\n/**\n * Given datetime parts, add\n * numDays to the date.\n * Returns a new DatetimeParts object\n * Currently can only go forward at most 1 month.\n */\nconst addDays = (refParts, numDays) => {\n const {\n month,\n day,\n year\n } = refParts;\n if (day === null) {\n throw new Error('No day provided');\n }\n const workingParts = {\n month,\n day,\n year\n };\n const daysInMonth = getNumDaysInMonth(month, year);\n workingParts.day = day + numDays;\n /**\n * If wrapping to next month\n * update days and increment month\n */\n if (workingParts.day > daysInMonth) {\n workingParts.day -= daysInMonth;\n workingParts.month += 1;\n }\n /**\n * If moving to next year, reset\n * month to January and increment year\n */\n if (workingParts.month > 12) {\n workingParts.month = 1;\n workingParts.year += 1;\n }\n return workingParts;\n};\n/**\n * Given DatetimeParts, generate the previous month.\n */\nconst getPreviousMonth = refParts => {\n /**\n * If current month is January, wrap backwards\n * to December of the previous year.\n */\n const month = refParts.month === 1 ? 12 : refParts.month - 1;\n const year = refParts.month === 1 ? refParts.year - 1 : refParts.year;\n const numDaysInMonth = getNumDaysInMonth(month, year);\n const day = numDaysInMonth < refParts.day ? numDaysInMonth : refParts.day;\n return {\n month,\n year,\n day\n };\n};\n/**\n * Given DatetimeParts, generate the next month.\n */\nconst getNextMonth = refParts => {\n /**\n * If current month is December, wrap forwards\n * to January of the next year.\n */\n const month = refParts.month === 12 ? 1 : refParts.month + 1;\n const year = refParts.month === 12 ? refParts.year + 1 : refParts.year;\n const numDaysInMonth = getNumDaysInMonth(month, year);\n const day = numDaysInMonth < refParts.day ? numDaysInMonth : refParts.day;\n return {\n month,\n year,\n day\n };\n};\nconst changeYear = (refParts, yearDelta) => {\n const month = refParts.month;\n const year = refParts.year + yearDelta;\n const numDaysInMonth = getNumDaysInMonth(month, year);\n const day = numDaysInMonth < refParts.day ? numDaysInMonth : refParts.day;\n return {\n month,\n year,\n day\n };\n};\n/**\n * Given DatetimeParts, generate the previous year.\n */\nconst getPreviousYear = refParts => {\n return changeYear(refParts, -1);\n};\n/**\n * Given DatetimeParts, generate the next year.\n */\nconst getNextYear = refParts => {\n return changeYear(refParts, 1);\n};\n/**\n * If PM, then internal value should\n * be converted to 24-hr time.\n * Does not apply when public\n * values are already 24-hr time.\n */\nconst getInternalHourValue = (hour, use24Hour, ampm) => {\n if (use24Hour) {\n return hour;\n }\n return convert12HourTo24Hour(hour, ampm);\n};\n/**\n * Unless otherwise stated, all month values are\n * 1 indexed instead of the typical 0 index in JS Date.\n * Example:\n * January = Month 0 when using JS Date\n * January = Month 1 when using this datetime util\n */\n/**\n * Given the current datetime parts and a new AM/PM value\n * calculate what the hour should be in 24-hour time format.\n * Used when toggling the AM/PM segment since we store our hours\n * in 24-hour time format internally.\n */\nconst calculateHourFromAMPM = (currentParts, newAMPM) => {\n const {\n ampm: currentAMPM,\n hour\n } = currentParts;\n let newHour = hour;\n /**\n * If going from AM --> PM, need to update the\n *\n */\n if (currentAMPM === 'am' && newAMPM === 'pm') {\n newHour = convert12HourTo24Hour(newHour, 'pm');\n /**\n * If going from PM --> AM\n */\n } else if (currentAMPM === 'pm' && newAMPM === 'am') {\n newHour = Math.abs(newHour - 12);\n }\n return newHour;\n};\n/**\n * Updates parts to ensure that month and day\n * values are valid. For days that do not exist,\n * the closest valid day is used.\n */\nconst validateParts = (parts, minParts, maxParts) => {\n const {\n month,\n day,\n year\n } = parts;\n const partsCopy = Object.assign({}, parts);\n const numDays = getNumDaysInMonth(month, year);\n /**\n * If the max number of days\n * is greater than the day we want\n * to set, update the DatetimeParts\n * day field to be the max days.\n */\n if (day !== null && numDays < day) {\n partsCopy.day = numDays;\n }\n /**\n * If value is same day as min day,\n * make sure the time value is in bounds.\n */\n if (minParts !== undefined && isSameDay(partsCopy, minParts)) {\n /**\n * If the hour is out of bounds,\n * update both the hour and minute.\n * This is done so that the new time\n * is closest to what the user selected.\n */\n if (partsCopy.hour !== undefined && minParts.hour !== undefined) {\n if (partsCopy.hour < minParts.hour) {\n partsCopy.hour = minParts.hour;\n partsCopy.minute = minParts.minute;\n /**\n * If only the minute is out of bounds,\n * set it to the min minute.\n */\n } else if (partsCopy.hour === minParts.hour && partsCopy.minute !== undefined && minParts.minute !== undefined && partsCopy.minute < minParts.minute) {\n partsCopy.minute = minParts.minute;\n }\n }\n }\n /**\n * If value is same day as max day,\n * make sure the time value is in bounds.\n */\n if (maxParts !== undefined && isSameDay(parts, maxParts)) {\n /**\n * If the hour is out of bounds,\n * update both the hour and minute.\n * This is done so that the new time\n * is closest to what the user selected.\n */\n if (partsCopy.hour !== undefined && maxParts.hour !== undefined) {\n if (partsCopy.hour > maxParts.hour) {\n partsCopy.hour = maxParts.hour;\n partsCopy.minute = maxParts.minute;\n /**\n * If only the minute is out of bounds,\n * set it to the max minute.\n */\n } else if (partsCopy.hour === maxParts.hour && partsCopy.minute !== undefined && maxParts.minute !== undefined && partsCopy.minute > maxParts.minute) {\n partsCopy.minute = maxParts.minute;\n }\n }\n }\n return partsCopy;\n};\n/**\n * Returns the closest date to refParts\n * that also meets the constraints of\n * the *Values params.\n * @param refParts The reference date\n * @param monthValues The allowed month values\n * @param dayValues The allowed day (of the month) values\n * @param yearValues The allowed year values\n * @param hourValues The allowed hour values\n * @param minuteValues The allowed minute values\n */\nconst getClosestValidDate = (refParts, monthValues, dayValues, yearValues, hourValues, minuteValues) => {\n const {\n hour,\n minute,\n day,\n month,\n year\n } = refParts;\n const copyParts = Object.assign(Object.assign({}, refParts), {\n dayOfWeek: undefined\n });\n if (monthValues !== undefined) {\n copyParts.month = findClosestValue(month, monthValues);\n }\n // Day is nullable but cannot be undefined\n if (day !== null && dayValues !== undefined) {\n copyParts.day = findClosestValue(day, dayValues);\n }\n if (yearValues !== undefined) {\n copyParts.year = findClosestValue(year, yearValues);\n }\n if (hour !== undefined && hourValues !== undefined) {\n copyParts.hour = findClosestValue(hour, hourValues);\n copyParts.ampm = parseAmPm(copyParts.hour);\n }\n if (minute !== undefined && minuteValues !== undefined) {\n copyParts.minute = findClosestValue(minute, minuteValues);\n }\n return copyParts;\n};\n/**\n * Finds the value in \"values\" that is\n * numerically closest to \"reference\".\n * This function assumes that \"values\" is\n * already sorted in ascending order.\n * @param reference The reference number to use\n * when finding the closest value\n * @param values The allowed values that will be\n * searched to find the closest value to \"reference\"\n */\nconst findClosestValue = (reference, values) => {\n let closestValue = values[0];\n let rank = Math.abs(closestValue - reference);\n for (let i = 1; i < values.length; i++) {\n const value = values[i];\n /**\n * This code prioritizes the first\n * closest result. Given two values\n * with the same distance from reference,\n * this code will prioritize the smaller of\n * the two values.\n */\n const valueRank = Math.abs(value - reference);\n if (valueRank < rank) {\n closestValue = value;\n rank = valueRank;\n }\n }\n return closestValue;\n};\nconst getFormattedDayPeriod = dayPeriod => {\n if (dayPeriod === undefined) {\n return '';\n }\n return dayPeriod.toUpperCase();\n};\nconst getLocalizedTime = (locale, refParts, use24Hour) => {\n if (refParts.hour === undefined || refParts.minute === undefined) {\n return 'Invalid Time';\n }\n return new Intl.DateTimeFormat(locale, {\n hour: 'numeric',\n minute: 'numeric',\n timeZone: 'UTC',\n /**\n * We use hourCycle here instead of hour12 due to:\n * https://bugs.chromium.org/p/chromium/issues/detail?id=1347316&q=hour12&can=2\n */\n hourCycle: use24Hour ? 'h23' : 'h12'\n }).format(new Date(convertDataToISO(Object.assign(Object.assign({}, refParts), {\n // TODO: FW-1831 will remove the need to manually set the tzOffset to undefined\n tzOffset: undefined\n }))));\n};\n/**\n * Adds padding to a time value so\n * that it is always 2 digits.\n */\nconst addTimePadding = value => {\n const valueToString = value.toString();\n if (valueToString.length > 1) {\n return valueToString;\n }\n return `0${valueToString}`;\n};\n/**\n * Formats 24 hour times so that\n * it always has 2 digits. For\n * 12 hour times it ensures that\n * hour 0 is formatted as '12'.\n */\nconst getFormattedHour = (hour, use24Hour) => {\n if (use24Hour) {\n return addTimePadding(hour);\n }\n /**\n * If using 12 hour\n * format, make sure hour\n * 0 is formatted as '12'.\n */\n if (hour === 0) {\n return '12';\n }\n return hour.toString();\n};\n/**\n * Generates an aria-label to be read by screen readers\n * given a local, a date, and whether or not that date is\n * today's date.\n */\nconst generateDayAriaLabel = (locale, today, refParts) => {\n if (refParts.day === null) {\n return null;\n }\n /**\n * MM/DD/YYYY will return midnight in the user's timezone.\n */\n const date = new Date(`${refParts.month}/${refParts.day}/${refParts.year} GMT+0000`);\n const labelString = new Intl.DateTimeFormat(locale, {\n weekday: 'long',\n month: 'long',\n day: 'numeric',\n timeZone: 'UTC'\n }).format(date);\n /**\n * If date is today, prepend \"Today\" so screen readers indicate\n * that the date is today.\n */\n return today ? `Today, ${labelString}` : labelString;\n};\n/**\n * Gets the day of the week, month, and day\n * Used for the header in MD mode.\n */\nconst getMonthAndDay = (locale, refParts) => {\n const date = new Date(`${refParts.month}/${refParts.day}/${refParts.year} GMT+0000`);\n return new Intl.DateTimeFormat(locale, {\n weekday: 'short',\n month: 'short',\n day: 'numeric',\n timeZone: 'UTC'\n }).format(date);\n};\n/**\n * Given a locale and a date object,\n * return a formatted string that includes\n * the month name and full year.\n * Example: May 2021\n */\nconst getMonthAndYear = (locale, refParts) => {\n const date = new Date(`${refParts.month}/${refParts.day}/${refParts.year} GMT+0000`);\n return new Intl.DateTimeFormat(locale, {\n month: 'long',\n year: 'numeric',\n timeZone: 'UTC'\n }).format(date);\n};\n/**\n * Given a locale and a date object,\n * return a formatted string that includes\n * the short month, numeric day, and full year.\n * Example: Apr 22, 2021\n */\nconst getMonthDayAndYear = (locale, refParts) => {\n return getLocalizedDateTime(locale, refParts, {\n month: 'short',\n day: 'numeric',\n year: 'numeric'\n });\n};\n/**\n * Given a locale and a date object,\n * return a formatted string that includes\n * the numeric day.\n * Note: Some languages will add literal characters\n * to the end. This function removes those literals.\n * Example: 29\n */\nconst getDay = (locale, refParts) => {\n return getLocalizedDateTimeParts(locale, refParts, {\n day: 'numeric'\n }).find(obj => obj.type === 'day').value;\n};\n/**\n * Given a locale and a date object,\n * return a formatted string that includes\n * the numeric year.\n * Example: 2022\n */\nconst getYear = (locale, refParts) => {\n return getLocalizedDateTime(locale, refParts, {\n year: 'numeric'\n });\n};\nconst getNormalizedDate = refParts => {\n const timeString = refParts.hour !== undefined && refParts.minute !== undefined ? ` ${refParts.hour}:${refParts.minute}` : '';\n return new Date(`${refParts.month}/${refParts.day}/${refParts.year}${timeString} GMT+0000`);\n};\n/**\n * Given a locale, DatetimeParts, and options\n * format the DatetimeParts according to the options\n * and locale combination. This returns a string. If\n * you want an array of the individual pieces\n * that make up the localized date string, use\n * getLocalizedDateTimeParts.\n */\nconst getLocalizedDateTime = (locale, refParts, options) => {\n const date = getNormalizedDate(refParts);\n return getDateTimeFormat(locale, options).format(date);\n};\n/**\n * Given a locale, DatetimeParts, and options\n * format the DatetimeParts according to the options\n * and locale combination. This returns an array of\n * each piece of the date.\n */\nconst getLocalizedDateTimeParts = (locale, refParts, options) => {\n const date = getNormalizedDate(refParts);\n return getDateTimeFormat(locale, options).formatToParts(date);\n};\n/**\n * Wrapper function for Intl.DateTimeFormat.\n * Allows developers to apply an allowed format to DatetimeParts.\n * This function also has built in safeguards for older browser bugs\n * with Intl.DateTimeFormat.\n */\nconst getDateTimeFormat = (locale, options) => {\n return new Intl.DateTimeFormat(locale, Object.assign(Object.assign({}, options), {\n timeZone: 'UTC'\n }));\n};\n/**\n * Gets a localized version of \"Today\"\n * Falls back to \"Today\" in English for\n * browsers that do not support RelativeTimeFormat.\n */\nconst getTodayLabel = locale => {\n if ('RelativeTimeFormat' in Intl) {\n const label = new Intl.RelativeTimeFormat(locale, {\n numeric: 'auto'\n }).format(0, 'day');\n return label.charAt(0).toUpperCase() + label.slice(1);\n } else {\n return 'Today';\n }\n};\n/**\n * When calling toISOString(), the browser\n * will convert the date to UTC time by either adding\n * or subtracting the time zone offset.\n * To work around this, we need to either add\n * or subtract the time zone offset to the Date\n * object prior to calling toISOString().\n * This allows us to get an ISO string\n * that is in the user's time zone.\n *\n * Example:\n * Time zone offset is 240\n * Meaning: The browser needs to add 240 minutes\n * to the Date object to get UTC time.\n * What Ionic does: We subtract 240 minutes\n * from the Date object. The browser then adds\n * 240 minutes in toISOString(). The result\n * is a time that is in the user's time zone\n * and not UTC.\n *\n * Note: Some timezones include minute adjustments\n * such as 30 or 45 minutes. This is why we use setMinutes\n * instead of setHours.\n * Example: India Standard Time\n * Timezone offset: -330 = -5.5 hours.\n *\n * List of timezones with 30 and 45 minute timezones:\n * https://www.timeanddate.com/time/time-zones-interesting.html\n */\nconst removeDateTzOffset = date => {\n const tzOffset = date.getTimezoneOffset();\n date.setMinutes(date.getMinutes() - tzOffset);\n return date;\n};\nconst DATE_AM = removeDateTzOffset(new Date('2022T01:00'));\nconst DATE_PM = removeDateTzOffset(new Date('2022T13:00'));\n/**\n * Formats the locale's string representation of the day period (am/pm) for a given\n * ref parts day period.\n *\n * @param locale The locale to format the day period in.\n * @param value The date string, in ISO format.\n * @returns The localized day period (am/pm) representation of the given value.\n */\nconst getLocalizedDayPeriod = (locale, dayPeriod) => {\n const date = dayPeriod === 'am' ? DATE_AM : DATE_PM;\n const localizedDayPeriod = new Intl.DateTimeFormat(locale, {\n hour: 'numeric',\n timeZone: 'UTC'\n }).formatToParts(date).find(part => part.type === 'dayPeriod');\n if (localizedDayPeriod) {\n return localizedDayPeriod.value;\n }\n return getFormattedDayPeriod(dayPeriod);\n};\n/**\n * Formats the datetime's value to a string, for use in the native input.\n *\n * @param value The value to format, either an ISO string or an array thereof.\n */\nconst formatValue = value => {\n return Array.isArray(value) ? value.join(',') : value;\n};\n\n/**\n * Returns the current date as\n * an ISO string in the user's\n * time zone.\n */\nconst getToday = () => {\n /**\n * ion-datetime intentionally does not\n * parse time zones/do automatic time zone\n * conversion when accepting user input.\n * However when we get today's date string,\n * we want it formatted relative to the user's\n * time zone.\n *\n * When calling toISOString(), the browser\n * will convert the date to UTC time by either adding\n * or subtracting the time zone offset.\n * To work around this, we need to either add\n * or subtract the time zone offset to the Date\n * object prior to calling toISOString().\n * This allows us to get an ISO string\n * that is in the user's time zone.\n */\n return removeDateTzOffset(new Date()).toISOString();\n};\nconst minutes = [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59];\nconst hour12 = [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11];\nconst hour23 = [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23];\n/**\n * Given a locale and a mode,\n * return an array with formatted days\n * of the week. iOS should display days\n * such as \"Mon\" or \"Tue\".\n * MD should display days such as \"M\"\n * or \"T\".\n */\nconst getDaysOfWeek = (locale, mode, firstDayOfWeek = 0) => {\n /**\n * Nov 1st, 2020 starts on a Sunday.\n * ion-datetime assumes weeks start on Sunday,\n * but is configurable via `firstDayOfWeek`.\n */\n const weekdayFormat = mode === 'ios' ? 'short' : 'narrow';\n const intl = new Intl.DateTimeFormat(locale, {\n weekday: weekdayFormat\n });\n const startDate = new Date('11/01/2020');\n const daysOfWeek = [];\n /**\n * For each day of the week,\n * get the day name.\n */\n for (let i = firstDayOfWeek; i < firstDayOfWeek + 7; i++) {\n const currentDate = new Date(startDate);\n currentDate.setDate(currentDate.getDate() + i);\n daysOfWeek.push(intl.format(currentDate));\n }\n return daysOfWeek;\n};\n/**\n * Returns an array containing all of the\n * days in a month for a given year. Values are\n * aligned with a week calendar starting on\n * the firstDayOfWeek value (Sunday by default)\n * using null values.\n */\nconst getDaysOfMonth = (month, year, firstDayOfWeek) => {\n const numDays = getNumDaysInMonth(month, year);\n const firstOfMonth = new Date(`${month}/1/${year}`).getDay();\n /**\n * To get the first day of the month aligned on the correct\n * day of the week, we need to determine how many \"filler\" days\n * to generate. These filler days as empty/disabled buttons\n * that fill the space of the days of the week before the first\n * of the month.\n *\n * There are two cases here:\n *\n * 1. If firstOfMonth = 4, firstDayOfWeek = 0 then the offset\n * is (4 - (0 + 1)) = 3. Since the offset loop goes from 0 to 3 inclusive,\n * this will generate 4 filler days (0, 1, 2, 3), and then day of week 4 will have\n * the first day of the month.\n *\n * 2. If firstOfMonth = 2, firstDayOfWeek = 4 then the offset\n * is (6 - (4 - 2)) = 4. Since the offset loop goes from 0 to 4 inclusive,\n * this will generate 5 filler days (0, 1, 2, 3, 4), and then day of week 5 will have\n * the first day of the month.\n */\n const offset = firstOfMonth >= firstDayOfWeek ? firstOfMonth - (firstDayOfWeek + 1) : 6 - (firstDayOfWeek - firstOfMonth);\n let days = [];\n for (let i = 1; i <= numDays; i++) {\n days.push({\n day: i,\n dayOfWeek: (offset + i) % 7\n });\n }\n for (let i = 0; i <= offset; i++) {\n days = [{\n day: null,\n dayOfWeek: null\n }, ...days];\n }\n return days;\n};\n/**\n * Given a local, reference datetime parts and option\n * max/min bound datetime parts, calculate the acceptable\n * hour and minute values according to the bounds and locale.\n */\nconst generateTime = (refParts, hourCycle = 'h12', minParts, maxParts, hourValues, minuteValues) => {\n const use24Hour = hourCycle === 'h23';\n let processedHours = use24Hour ? hour23 : hour12;\n let processedMinutes = minutes;\n let isAMAllowed = true;\n let isPMAllowed = true;\n if (hourValues) {\n processedHours = processedHours.filter(hour => hourValues.includes(hour));\n }\n if (minuteValues) {\n processedMinutes = processedMinutes.filter(minute => minuteValues.includes(minute));\n }\n if (minParts) {\n /**\n * If ref day is the same as the\n * minimum allowed day, filter hour/minute\n * values according to min hour and minute.\n */\n if (isSameDay(refParts, minParts)) {\n /**\n * Users may not always set the hour/minute for\n * min value (i.e. 2021-06-02) so we should allow\n * all hours/minutes in that case.\n */\n if (minParts.hour !== undefined) {\n processedHours = processedHours.filter(hour => {\n const convertedHour = refParts.ampm === 'pm' ? (hour + 12) % 24 : hour;\n return (use24Hour ? hour : convertedHour) >= minParts.hour;\n });\n isAMAllowed = minParts.hour < 13;\n }\n if (minParts.minute !== undefined) {\n /**\n * The minimum minute range should not be enforced when\n * the hour is greater than the min hour.\n *\n * For example with a minimum range of 09:30, users\n * should be able to select 10:00-10:29 and beyond.\n */\n let isPastMinHour = false;\n if (minParts.hour !== undefined && refParts.hour !== undefined) {\n if (refParts.hour > minParts.hour) {\n isPastMinHour = true;\n }\n }\n processedMinutes = processedMinutes.filter(minute => {\n if (isPastMinHour) {\n return true;\n }\n return minute >= minParts.minute;\n });\n }\n /**\n * If ref day is before minimum\n * day do not render any hours/minute values\n */\n } else if (isBefore(refParts, minParts)) {\n processedHours = [];\n processedMinutes = [];\n isAMAllowed = isPMAllowed = false;\n }\n }\n if (maxParts) {\n /**\n * If ref day is the same as the\n * maximum allowed day, filter hour/minute\n * values according to max hour and minute.\n */\n if (isSameDay(refParts, maxParts)) {\n /**\n * Users may not always set the hour/minute for\n * max value (i.e. 2021-06-02) so we should allow\n * all hours/minutes in that case.\n */\n if (maxParts.hour !== undefined) {\n processedHours = processedHours.filter(hour => {\n const convertedHour = refParts.ampm === 'pm' ? (hour + 12) % 24 : hour;\n return (use24Hour ? hour : convertedHour) <= maxParts.hour;\n });\n isPMAllowed = maxParts.hour >= 12;\n }\n if (maxParts.minute !== undefined && refParts.hour === maxParts.hour) {\n // The available minutes should only be filtered when the hour is the same as the max hour.\n // For example if the max hour is 10:30 and the current hour is 10:00,\n // users should be able to select 00-30 minutes.\n // If the current hour is 09:00, users should be able to select 00-60 minutes.\n processedMinutes = processedMinutes.filter(minute => minute <= maxParts.minute);\n }\n /**\n * If ref day is after minimum\n * day do not render any hours/minute values\n */\n } else if (isAfter(refParts, maxParts)) {\n processedHours = [];\n processedMinutes = [];\n isAMAllowed = isPMAllowed = false;\n }\n }\n return {\n hours: processedHours,\n minutes: processedMinutes,\n am: isAMAllowed,\n pm: isPMAllowed\n };\n};\n/**\n * Given DatetimeParts, generate the previous,\n * current, and and next months.\n */\nconst generateMonths = refParts => {\n return [getPreviousMonth(refParts), {\n month: refParts.month,\n year: refParts.year,\n day: refParts.day\n }, getNextMonth(refParts)];\n};\nconst getMonthColumnData = (locale, refParts, minParts, maxParts, monthValues, formatOptions = {\n month: 'long'\n}) => {\n const {\n year\n } = refParts;\n const months = [];\n if (monthValues !== undefined) {\n let processedMonths = monthValues;\n if ((maxParts === null || maxParts === void 0 ? void 0 : maxParts.month) !== undefined) {\n processedMonths = processedMonths.filter(month => month <= maxParts.month);\n }\n if ((minParts === null || minParts === void 0 ? void 0 : minParts.month) !== undefined) {\n processedMonths = processedMonths.filter(month => month >= minParts.month);\n }\n processedMonths.forEach(processedMonth => {\n const date = new Date(`${processedMonth}/1/${year} GMT+0000`);\n const monthString = new Intl.DateTimeFormat(locale, Object.assign(Object.assign({}, formatOptions), {\n timeZone: 'UTC'\n })).format(date);\n months.push({\n text: monthString,\n value: processedMonth\n });\n });\n } else {\n const maxMonth = maxParts && maxParts.year === year ? maxParts.month : 12;\n const minMonth = minParts && minParts.year === year ? minParts.month : 1;\n for (let i = minMonth; i <= maxMonth; i++) {\n /**\n *\n * There is a bug on iOS 14 where\n * Intl.DateTimeFormat takes into account\n * the local timezone offset when formatting dates.\n *\n * Forcing the timezone to 'UTC' fixes the issue. However,\n * we should keep this workaround as it is safer. In the event\n * this breaks in another browser, we will not be impacted\n * because all dates will be interpreted in UTC.\n *\n * Example:\n * new Intl.DateTimeFormat('en-US', { month: 'long' }).format(new Date('Sat Apr 01 2006 00:00:00 GMT-0400 (EDT)')) // \"March\"\n * new Intl.DateTimeFormat('en-US', { month: 'long', timeZone: 'UTC' }).format(new Date('Sat Apr 01 2006 00:00:00 GMT-0400 (EDT)')) // \"April\"\n *\n * In certain timezones, iOS 14 shows the wrong\n * date for .toUTCString(). To combat this, we\n * force all of the timezones to GMT+0000 (UTC).\n *\n * Example:\n * Time Zone: Central European Standard Time\n * new Date('1/1/1992').toUTCString() // \"Tue, 31 Dec 1991 23:00:00 GMT\"\n * new Date('1/1/1992 GMT+0000').toUTCString() // \"Wed, 01 Jan 1992 00:00:00 GMT\"\n */\n const date = new Date(`${i}/1/${year} GMT+0000`);\n const monthString = new Intl.DateTimeFormat(locale, Object.assign(Object.assign({}, formatOptions), {\n timeZone: 'UTC'\n })).format(date);\n months.push({\n text: monthString,\n value: i\n });\n }\n }\n return months;\n};\n/**\n * Returns information regarding\n * selectable dates (i.e 1st, 2nd, 3rd, etc)\n * within a reference month.\n * @param locale The locale to format the date with\n * @param refParts The reference month/year to generate dates for\n * @param minParts The minimum bound on the date that can be returned\n * @param maxParts The maximum bound on the date that can be returned\n * @param dayValues The allowed date values\n * @returns Date data to be used in ion-picker-column-internal\n */\nconst getDayColumnData = (locale, refParts, minParts, maxParts, dayValues, formatOptions = {\n day: 'numeric'\n}) => {\n const {\n month,\n year\n } = refParts;\n const days = [];\n /**\n * If we have max/min bounds that in the same\n * month/year as the refParts, we should\n * use the define day as the max/min day.\n * Otherwise, fallback to the max/min days in a month.\n */\n const numDaysInMonth = getNumDaysInMonth(month, year);\n const maxDay = (maxParts === null || maxParts === void 0 ? void 0 : maxParts.day) !== null && (maxParts === null || maxParts === void 0 ? void 0 : maxParts.day) !== undefined && maxParts.year === year && maxParts.month === month ? maxParts.day : numDaysInMonth;\n const minDay = (minParts === null || minParts === void 0 ? void 0 : minParts.day) !== null && (minParts === null || minParts === void 0 ? void 0 : minParts.day) !== undefined && minParts.year === year && minParts.month === month ? minParts.day : 1;\n if (dayValues !== undefined) {\n let processedDays = dayValues;\n processedDays = processedDays.filter(day => day >= minDay && day <= maxDay);\n processedDays.forEach(processedDay => {\n const date = new Date(`${month}/${processedDay}/${year} GMT+0000`);\n const dayString = new Intl.DateTimeFormat(locale, Object.assign(Object.assign({}, formatOptions), {\n timeZone: 'UTC'\n })).format(date);\n days.push({\n text: dayString,\n value: processedDay\n });\n });\n } else {\n for (let i = minDay; i <= maxDay; i++) {\n const date = new Date(`${month}/${i}/${year} GMT+0000`);\n const dayString = new Intl.DateTimeFormat(locale, Object.assign(Object.assign({}, formatOptions), {\n timeZone: 'UTC'\n })).format(date);\n days.push({\n text: dayString,\n value: i\n });\n }\n }\n return days;\n};\nconst getYearColumnData = (locale, refParts, minParts, maxParts, yearValues) => {\n var _a, _b;\n let processedYears = [];\n if (yearValues !== undefined) {\n processedYears = yearValues;\n if ((maxParts === null || maxParts === void 0 ? void 0 : maxParts.year) !== undefined) {\n processedYears = processedYears.filter(year => year <= maxParts.year);\n }\n if ((minParts === null || minParts === void 0 ? void 0 : minParts.year) !== undefined) {\n processedYears = processedYears.filter(year => year >= minParts.year);\n }\n } else {\n const {\n year\n } = refParts;\n const maxYear = (_a = maxParts === null || maxParts === void 0 ? void 0 : maxParts.year) !== null && _a !== void 0 ? _a : year;\n const minYear = (_b = minParts === null || minParts === void 0 ? void 0 : minParts.year) !== null && _b !== void 0 ? _b : year - 100;\n for (let i = maxYear; i >= minYear; i--) {\n processedYears.push(i);\n }\n }\n return processedYears.map(year => ({\n text: getYear(locale, {\n year,\n month: refParts.month,\n day: refParts.day\n }),\n value: year\n }));\n};\n/**\n * Given a starting date and an upper bound,\n * this functions returns an array of all\n * month objects in that range.\n */\nconst getAllMonthsInRange = (currentParts, maxParts) => {\n if (currentParts.month === maxParts.month && currentParts.year === maxParts.year) {\n return [currentParts];\n }\n return [currentParts, ...getAllMonthsInRange(getNextMonth(currentParts), maxParts)];\n};\n/**\n * Creates and returns picker items\n * that represent the days in a month.\n * Example: \"Thu, Jun 2\"\n */\nconst getCombinedDateColumnData = (locale, todayParts, minParts, maxParts, dayValues, monthValues) => {\n let items = [];\n let parts = [];\n /**\n * Get all month objects from the min date\n * to the max date. Note: Do not use getMonthColumnData\n * as that function only generates dates within a\n * single year.\n */\n let months = getAllMonthsInRange(minParts, maxParts);\n /**\n * Filter out any disallowed month values.\n */\n if (monthValues) {\n months = months.filter(({\n month\n }) => monthValues.includes(month));\n }\n /**\n * Get all of the days in the month.\n * From there, generate an array where\n * each item has the month, date, and day\n * of work as the text.\n */\n months.forEach(monthObject => {\n const referenceMonth = {\n month: monthObject.month,\n day: null,\n year: monthObject.year\n };\n const monthDays = getDayColumnData(locale, referenceMonth, minParts, maxParts, dayValues, {\n month: 'short',\n day: 'numeric',\n weekday: 'short'\n });\n const dateParts = [];\n const dateColumnItems = [];\n monthDays.forEach(dayObject => {\n const isToday = isSameDay(Object.assign(Object.assign({}, referenceMonth), {\n day: dayObject.value\n }), todayParts);\n /**\n * Today's date should read as \"Today\" (localized)\n * not the actual date string\n */\n dateColumnItems.push({\n text: isToday ? getTodayLabel(locale) : dayObject.text,\n value: `${referenceMonth.year}-${referenceMonth.month}-${dayObject.value}`\n });\n /**\n * When selecting a date in the wheel picker\n * we need access to the raw datetime parts data.\n * The picker column only accepts values of\n * type string or number, so we need to return\n * two sets of data: A data set to be passed\n * to the picker column, and a data set to\n * be used to reference the raw data when\n * updating the picker column value.\n */\n dateParts.push({\n month: referenceMonth.month,\n year: referenceMonth.year,\n day: dayObject.value\n });\n });\n parts = [...parts, ...dateParts];\n items = [...items, ...dateColumnItems];\n });\n return {\n parts,\n items\n };\n};\nconst getTimeColumnsData = (locale, refParts, hourCycle, minParts, maxParts, allowedHourValues, allowedMinuteValues) => {\n const use24Hour = is24Hour(locale, hourCycle);\n const {\n hours,\n minutes,\n am,\n pm\n } = generateTime(refParts, use24Hour ? 'h23' : 'h12', minParts, maxParts, allowedHourValues, allowedMinuteValues);\n const hoursItems = hours.map(hour => {\n return {\n text: getFormattedHour(hour, use24Hour),\n value: getInternalHourValue(hour, use24Hour, refParts.ampm)\n };\n });\n const minutesItems = minutes.map(minute => {\n return {\n text: addTimePadding(minute),\n value: minute\n };\n });\n const dayPeriodItems = [];\n if (am && !use24Hour) {\n dayPeriodItems.push({\n text: getLocalizedDayPeriod(locale, 'am'),\n value: 'am'\n });\n }\n if (pm && !use24Hour) {\n dayPeriodItems.push({\n text: getLocalizedDayPeriod(locale, 'pm'),\n value: 'pm'\n });\n }\n return {\n minutesData: minutesItems,\n hoursData: hoursItems,\n dayPeriodData: dayPeriodItems\n };\n};\n\n\n//# sourceURL=webpack://jandl/./node_modules/@ionic/core/components/data.js?\n}"); /***/ }), @@ -213,7 +213,7 @@ eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpac /***/ (function(__unused_webpack_module, __webpack_exports__, __webpack_require__) { "use strict"; -eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"i\": function() { return /* binding */ isRTL; }\n/* harmony export */ });\n/*!\n * (C) Ionic http://ionicframework.com - MIT License\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\n\n//# sourceURL=webpack://jandl/./node_modules/@ionic/core/components/dir.js?"); +eval("{__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ i: function() { return /* binding */ isRTL; }\n/* harmony export */ });\n/*!\n * (C) Ionic http://ionicframework.com - MIT License\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\n\n//# sourceURL=webpack://jandl/./node_modules/@ionic/core/components/dir.js?\n}"); /***/ }), @@ -224,7 +224,7 @@ eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpac /***/ (function(__unused_webpack_module, __webpack_exports__, __webpack_require__) { "use strict"; -eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"startFocusVisible\": function() { return /* binding */ startFocusVisible; }\n/* harmony export */ });\n/*!\n * (C) Ionic http://ionicframework.com - MIT License\n */\nconst ION_FOCUSED = 'ion-focused';\nconst ION_FOCUSABLE = 'ion-focusable';\nconst FOCUS_KEYS = ['Tab', 'ArrowDown', 'Space', 'Escape', ' ', 'Shift', 'Enter', 'ArrowLeft', 'ArrowRight', 'ArrowUp', 'Home', 'End'];\nconst startFocusVisible = rootEl => {\n let currentFocus = [];\n let keyboardMode = true;\n const ref = rootEl ? rootEl.shadowRoot : document;\n const root = rootEl ? rootEl : document.body;\n const setFocus = elements => {\n currentFocus.forEach(el => el.classList.remove(ION_FOCUSED));\n elements.forEach(el => el.classList.add(ION_FOCUSED));\n currentFocus = elements;\n };\n const pointerDown = () => {\n keyboardMode = false;\n setFocus([]);\n };\n const onKeydown = ev => {\n keyboardMode = FOCUS_KEYS.includes(ev.key);\n if (!keyboardMode) {\n setFocus([]);\n }\n };\n const onFocusin = ev => {\n if (keyboardMode && ev.composedPath !== undefined) {\n const toFocus = ev.composedPath().filter(el => {\n if (el.classList) {\n return el.classList.contains(ION_FOCUSABLE);\n }\n return false;\n });\n setFocus(toFocus);\n }\n };\n const onFocusout = () => {\n if (ref.activeElement === root) {\n setFocus([]);\n }\n };\n ref.addEventListener('keydown', onKeydown);\n ref.addEventListener('focusin', onFocusin);\n ref.addEventListener('focusout', onFocusout);\n ref.addEventListener('touchstart', pointerDown);\n ref.addEventListener('mousedown', pointerDown);\n const destroy = () => {\n ref.removeEventListener('keydown', onKeydown);\n ref.removeEventListener('focusin', onFocusin);\n ref.removeEventListener('focusout', onFocusout);\n ref.removeEventListener('touchstart', pointerDown);\n ref.removeEventListener('mousedown', pointerDown);\n };\n return {\n destroy,\n setFocus\n };\n};\n\n\n//# sourceURL=webpack://jandl/./node_modules/@ionic/core/components/focus-visible.js?"); +eval("{__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ startFocusVisible: function() { return /* binding */ startFocusVisible; }\n/* harmony export */ });\n/* harmony import */ var core_js_modules_esnext_iterator_constructor_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! core-js/modules/esnext.iterator.constructor.js */ \"./node_modules/core-js/modules/esnext.iterator.constructor.js\");\n/* harmony import */ var core_js_modules_esnext_iterator_constructor_js__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_esnext_iterator_constructor_js__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var core_js_modules_esnext_iterator_filter_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! core-js/modules/esnext.iterator.filter.js */ \"./node_modules/core-js/modules/esnext.iterator.filter.js\");\n/* harmony import */ var core_js_modules_esnext_iterator_filter_js__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_esnext_iterator_filter_js__WEBPACK_IMPORTED_MODULE_1__);\n/* harmony import */ var core_js_modules_esnext_iterator_for_each_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! core-js/modules/esnext.iterator.for-each.js */ \"./node_modules/core-js/modules/esnext.iterator.for-each.js\");\n/* harmony import */ var core_js_modules_esnext_iterator_for_each_js__WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_esnext_iterator_for_each_js__WEBPACK_IMPORTED_MODULE_2__);\n\n\n\n/*!\n * (C) Ionic http://ionicframework.com - MIT License\n */\nconst ION_FOCUSED = 'ion-focused';\nconst ION_FOCUSABLE = 'ion-focusable';\nconst FOCUS_KEYS = ['Tab', 'ArrowDown', 'Space', 'Escape', ' ', 'Shift', 'Enter', 'ArrowLeft', 'ArrowRight', 'ArrowUp', 'Home', 'End'];\nconst startFocusVisible = rootEl => {\n let currentFocus = [];\n let keyboardMode = true;\n const ref = rootEl ? rootEl.shadowRoot : document;\n const root = rootEl ? rootEl : document.body;\n const setFocus = elements => {\n currentFocus.forEach(el => el.classList.remove(ION_FOCUSED));\n elements.forEach(el => el.classList.add(ION_FOCUSED));\n currentFocus = elements;\n };\n const pointerDown = () => {\n keyboardMode = false;\n setFocus([]);\n };\n const onKeydown = ev => {\n keyboardMode = FOCUS_KEYS.includes(ev.key);\n if (!keyboardMode) {\n setFocus([]);\n }\n };\n const onFocusin = ev => {\n if (keyboardMode && ev.composedPath !== undefined) {\n const toFocus = ev.composedPath().filter(el => {\n if (el.classList) {\n return el.classList.contains(ION_FOCUSABLE);\n }\n return false;\n });\n setFocus(toFocus);\n }\n };\n const onFocusout = () => {\n if (ref.activeElement === root) {\n setFocus([]);\n }\n };\n ref.addEventListener('keydown', onKeydown);\n ref.addEventListener('focusin', onFocusin);\n ref.addEventListener('focusout', onFocusout);\n ref.addEventListener('touchstart', pointerDown);\n ref.addEventListener('mousedown', pointerDown);\n const destroy = () => {\n ref.removeEventListener('keydown', onKeydown);\n ref.removeEventListener('focusin', onFocusin);\n ref.removeEventListener('focusout', onFocusout);\n ref.removeEventListener('touchstart', pointerDown);\n ref.removeEventListener('mousedown', pointerDown);\n };\n return {\n destroy,\n setFocus\n };\n};\n\n\n//# sourceURL=webpack://jandl/./node_modules/@ionic/core/components/focus-visible.js?\n}"); /***/ }), @@ -235,7 +235,7 @@ eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpac /***/ (function(__unused_webpack_module, __webpack_exports__, __webpack_require__) { "use strict"; -eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"C\": function() { return /* binding */ CoreDelegate; },\n/* harmony export */ \"a\": function() { return /* binding */ attachComponent; },\n/* harmony export */ \"d\": function() { return /* binding */ detachComponent; }\n/* harmony export */ });\n/* harmony import */ var _helpers_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./helpers.js */ \"./node_modules/@ionic/core/components/helpers.js\");\n/*!\n * (C) Ionic http://ionicframework.com - MIT License\n */\n\nconst attachComponent = async (delegate, container, component, cssClasses, componentProps, inline) => {\n var _a;\n if (delegate) {\n return delegate.attachViewToDom(container, component, componentProps, cssClasses);\n }\n if (!inline && typeof component !== 'string' && !(component instanceof HTMLElement)) {\n throw new Error('framework delegate is missing');\n }\n const el = typeof component === 'string' ? (_a = container.ownerDocument) === null || _a === void 0 ? void 0 : _a.createElement(component) : 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 await new Promise(resolve => (0,_helpers_js__WEBPACK_IMPORTED_MODULE_0__.c)(el, resolve));\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};\nconst CoreDelegate = () => {\n let BaseComponent;\n let Reference;\n const attachViewToDom = async (parentElement, userComponent, userComponentProps = {}, cssClasses = []) => {\n var _a, _b;\n BaseComponent = parentElement;\n /**\n * If passing in a component via the `component` props\n * we need to append it inside of our overlay component.\n */\n if (userComponent) {\n /**\n * If passing in the tag name, create\n * the element otherwise just get a reference\n * to the component.\n */\n const el = typeof userComponent === 'string' ? (_a = BaseComponent.ownerDocument) === null || _a === void 0 ? void 0 : _a.createElement(userComponent) : userComponent;\n /**\n * Add any css classes passed in\n * via the cssClasses prop on the overlay.\n */\n cssClasses.forEach(c => el.classList.add(c));\n /**\n * Add any props passed in\n * via the componentProps prop on the overlay.\n */\n Object.assign(el, userComponentProps);\n /**\n * Finally, append the component\n * inside of the overlay component.\n */\n BaseComponent.appendChild(el);\n await new Promise(resolve => (0,_helpers_js__WEBPACK_IMPORTED_MODULE_0__.c)(el, resolve));\n } else if (BaseComponent.children.length > 0) {\n const root = BaseComponent.children[0];\n if (!root.classList.contains('ion-delegate-host')) {\n /**\n * If the root element is not a delegate host, it means\n * that the overlay has not been presented yet and we need\n * to create the containing element with the specified classes.\n */\n const el = (_b = BaseComponent.ownerDocument) === null || _b === void 0 ? void 0 : _b.createElement('div');\n // Add a class to track if the root element was created by the delegate.\n el.classList.add('ion-delegate-host');\n cssClasses.forEach(c => el.classList.add(c));\n // Move each child from the original template to the new parent element.\n el.append(...BaseComponent.children);\n // Append the new parent element to the original parent element.\n BaseComponent.appendChild(el);\n }\n }\n /**\n * Get the root of the app and\n * add the overlay there.\n */\n const app = document.querySelector('ion-app') || document.body;\n /**\n * Create a placeholder comment so that\n * we can return this component to where\n * it was previously.\n */\n Reference = document.createComment('ionic teleport');\n BaseComponent.parentNode.insertBefore(Reference, BaseComponent);\n app.appendChild(BaseComponent);\n return BaseComponent;\n };\n const removeViewFromDom = () => {\n /**\n * Return component to where it was previously in the DOM.\n */\n if (BaseComponent && Reference) {\n Reference.parentNode.insertBefore(BaseComponent, Reference);\n Reference.remove();\n }\n return Promise.resolve();\n };\n return {\n attachViewToDom,\n removeViewFromDom\n };\n};\n\n\n//# sourceURL=webpack://jandl/./node_modules/@ionic/core/components/framework-delegate.js?"); +eval("{__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ C: function() { return /* binding */ CoreDelegate; },\n/* harmony export */ a: function() { return /* binding */ attachComponent; },\n/* harmony export */ d: function() { return /* binding */ detachComponent; }\n/* harmony export */ });\n/* harmony import */ var core_js_modules_esnext_iterator_constructor_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! core-js/modules/esnext.iterator.constructor.js */ \"./node_modules/core-js/modules/esnext.iterator.constructor.js\");\n/* harmony import */ var core_js_modules_esnext_iterator_constructor_js__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_esnext_iterator_constructor_js__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var core_js_modules_esnext_iterator_for_each_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! core-js/modules/esnext.iterator.for-each.js */ \"./node_modules/core-js/modules/esnext.iterator.for-each.js\");\n/* harmony import */ var core_js_modules_esnext_iterator_for_each_js__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_esnext_iterator_for_each_js__WEBPACK_IMPORTED_MODULE_1__);\n/* harmony import */ var _helpers_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./helpers.js */ \"./node_modules/@ionic/core/components/helpers.js\");\n\n\n/*!\n * (C) Ionic http://ionicframework.com - MIT License\n */\n\nconst attachComponent = async (delegate, container, component, cssClasses, componentProps, inline) => {\n var _a;\n if (delegate) {\n return delegate.attachViewToDom(container, component, componentProps, cssClasses);\n }\n if (!inline && typeof component !== 'string' && !(component instanceof HTMLElement)) {\n throw new Error('framework delegate is missing');\n }\n const el = typeof component === 'string' ? (_a = container.ownerDocument) === null || _a === void 0 ? void 0 : _a.createElement(component) : 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 await new Promise(resolve => (0,_helpers_js__WEBPACK_IMPORTED_MODULE_2__.c)(el, resolve));\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};\nconst CoreDelegate = () => {\n let BaseComponent;\n let Reference;\n const attachViewToDom = async (parentElement, userComponent, userComponentProps = {}, cssClasses = []) => {\n var _a, _b;\n BaseComponent = parentElement;\n /**\n * If passing in a component via the `component` props\n * we need to append it inside of our overlay component.\n */\n if (userComponent) {\n /**\n * If passing in the tag name, create\n * the element otherwise just get a reference\n * to the component.\n */\n const el = typeof userComponent === 'string' ? (_a = BaseComponent.ownerDocument) === null || _a === void 0 ? void 0 : _a.createElement(userComponent) : userComponent;\n /**\n * Add any css classes passed in\n * via the cssClasses prop on the overlay.\n */\n cssClasses.forEach(c => el.classList.add(c));\n /**\n * Add any props passed in\n * via the componentProps prop on the overlay.\n */\n Object.assign(el, userComponentProps);\n /**\n * Finally, append the component\n * inside of the overlay component.\n */\n BaseComponent.appendChild(el);\n await new Promise(resolve => (0,_helpers_js__WEBPACK_IMPORTED_MODULE_2__.c)(el, resolve));\n } else if (BaseComponent.children.length > 0) {\n const root = BaseComponent.children[0];\n if (!root.classList.contains('ion-delegate-host')) {\n /**\n * If the root element is not a delegate host, it means\n * that the overlay has not been presented yet and we need\n * to create the containing element with the specified classes.\n */\n const el = (_b = BaseComponent.ownerDocument) === null || _b === void 0 ? void 0 : _b.createElement('div');\n // Add a class to track if the root element was created by the delegate.\n el.classList.add('ion-delegate-host');\n cssClasses.forEach(c => el.classList.add(c));\n // Move each child from the original template to the new parent element.\n el.append(...BaseComponent.children);\n // Append the new parent element to the original parent element.\n BaseComponent.appendChild(el);\n }\n }\n /**\n * Get the root of the app and\n * add the overlay there.\n */\n const app = document.querySelector('ion-app') || document.body;\n /**\n * Create a placeholder comment so that\n * we can return this component to where\n * it was previously.\n */\n Reference = document.createComment('ionic teleport');\n BaseComponent.parentNode.insertBefore(Reference, BaseComponent);\n app.appendChild(BaseComponent);\n return BaseComponent;\n };\n const removeViewFromDom = () => {\n /**\n * Return component to where it was previously in the DOM.\n */\n if (BaseComponent && Reference) {\n Reference.parentNode.insertBefore(BaseComponent, Reference);\n Reference.remove();\n }\n return Promise.resolve();\n };\n return {\n attachViewToDom,\n removeViewFromDom\n };\n};\n\n\n//# sourceURL=webpack://jandl/./node_modules/@ionic/core/components/framework-delegate.js?\n}"); /***/ }), @@ -246,7 +246,7 @@ eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpac /***/ (function(__unused_webpack_module, __webpack_exports__, __webpack_require__) { "use strict"; -eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"G\": function() { return /* binding */ GESTURE_CONTROLLER; }\n/* harmony export */ });\n/*!\n * (C) Ionic http://ionicframework.com - MIT License\n */\nclass GestureController {\n constructor() {\n this.gestureId = 0;\n this.requestedStart = new Map();\n this.disabledGestures = new Map();\n this.disabledScroll = new Set();\n }\n /**\n * Creates a gesture delegate based on the GestureConfig passed\n */\n createGesture(config) {\n var _a;\n return new GestureDelegate(this, this.newID(), config.name, (_a = config.priority) !== null && _a !== void 0 ? _a : 0, !!config.disableScroll);\n }\n /**\n * Creates a blocker that will block any other gesture events from firing. Set in the ion-gesture component.\n */\n createBlocker(opts = {}) {\n return new BlockerDelegate(this, this.newID(), opts.disable, !!opts.disableScroll);\n }\n start(gestureName, id, priority) {\n if (!this.canStart(gestureName)) {\n this.requestedStart.delete(id);\n return false;\n }\n this.requestedStart.set(id, priority);\n return true;\n }\n capture(gestureName, id, priority) {\n if (!this.start(gestureName, id, priority)) {\n return false;\n }\n const requestedStart = this.requestedStart;\n let maxPriority = -10000;\n requestedStart.forEach(value => {\n maxPriority = Math.max(maxPriority, value);\n });\n if (maxPriority === priority) {\n this.capturedId = id;\n requestedStart.clear();\n const event = new CustomEvent('ionGestureCaptured', {\n detail: {\n gestureName\n }\n });\n document.dispatchEvent(event);\n return true;\n }\n requestedStart.delete(id);\n return false;\n }\n release(id) {\n this.requestedStart.delete(id);\n if (this.capturedId === id) {\n this.capturedId = undefined;\n }\n }\n disableGesture(gestureName, id) {\n let set = this.disabledGestures.get(gestureName);\n if (set === undefined) {\n set = new Set();\n this.disabledGestures.set(gestureName, set);\n }\n set.add(id);\n }\n enableGesture(gestureName, id) {\n const set = this.disabledGestures.get(gestureName);\n if (set !== undefined) {\n set.delete(id);\n }\n }\n disableScroll(id) {\n this.disabledScroll.add(id);\n if (this.disabledScroll.size === 1) {\n document.body.classList.add(BACKDROP_NO_SCROLL);\n }\n }\n enableScroll(id) {\n this.disabledScroll.delete(id);\n if (this.disabledScroll.size === 0) {\n document.body.classList.remove(BACKDROP_NO_SCROLL);\n }\n }\n canStart(gestureName) {\n if (this.capturedId !== undefined) {\n // a gesture already captured\n return false;\n }\n if (this.isDisabled(gestureName)) {\n return false;\n }\n return true;\n }\n isCaptured() {\n return this.capturedId !== undefined;\n }\n isScrollDisabled() {\n return this.disabledScroll.size > 0;\n }\n isDisabled(gestureName) {\n const disabled = this.disabledGestures.get(gestureName);\n if (disabled && disabled.size > 0) {\n return true;\n }\n return false;\n }\n newID() {\n this.gestureId++;\n return this.gestureId;\n }\n}\nclass GestureDelegate {\n constructor(ctrl, id, name, priority, disableScroll) {\n this.id = id;\n this.name = name;\n this.disableScroll = disableScroll;\n this.priority = priority * 1000000 + id;\n this.ctrl = ctrl;\n }\n canStart() {\n if (!this.ctrl) {\n return false;\n }\n return this.ctrl.canStart(this.name);\n }\n start() {\n if (!this.ctrl) {\n return false;\n }\n return this.ctrl.start(this.name, this.id, this.priority);\n }\n capture() {\n if (!this.ctrl) {\n return false;\n }\n const captured = this.ctrl.capture(this.name, this.id, this.priority);\n if (captured && this.disableScroll) {\n this.ctrl.disableScroll(this.id);\n }\n return captured;\n }\n release() {\n if (this.ctrl) {\n this.ctrl.release(this.id);\n if (this.disableScroll) {\n this.ctrl.enableScroll(this.id);\n }\n }\n }\n destroy() {\n this.release();\n this.ctrl = undefined;\n }\n}\nclass BlockerDelegate {\n constructor(ctrl, id, disable, disableScroll) {\n this.id = id;\n this.disable = disable;\n this.disableScroll = disableScroll;\n this.ctrl = ctrl;\n }\n block() {\n if (!this.ctrl) {\n return;\n }\n if (this.disable) {\n for (const gesture of this.disable) {\n this.ctrl.disableGesture(gesture, this.id);\n }\n }\n if (this.disableScroll) {\n this.ctrl.disableScroll(this.id);\n }\n }\n unblock() {\n if (!this.ctrl) {\n return;\n }\n if (this.disable) {\n for (const gesture of this.disable) {\n this.ctrl.enableGesture(gesture, this.id);\n }\n }\n if (this.disableScroll) {\n this.ctrl.enableScroll(this.id);\n }\n }\n destroy() {\n this.unblock();\n this.ctrl = undefined;\n }\n}\nconst BACKDROP_NO_SCROLL = 'backdrop-no-scroll';\nconst GESTURE_CONTROLLER = new GestureController();\n\n\n//# sourceURL=webpack://jandl/./node_modules/@ionic/core/components/gesture-controller.js?"); +eval("{__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ G: function() { return /* binding */ GESTURE_CONTROLLER; }\n/* harmony export */ });\n/* harmony import */ var core_js_modules_esnext_iterator_constructor_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! core-js/modules/esnext.iterator.constructor.js */ \"./node_modules/core-js/modules/esnext.iterator.constructor.js\");\n/* harmony import */ var core_js_modules_esnext_iterator_constructor_js__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_esnext_iterator_constructor_js__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var core_js_modules_esnext_iterator_for_each_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! core-js/modules/esnext.iterator.for-each.js */ \"./node_modules/core-js/modules/esnext.iterator.for-each.js\");\n/* harmony import */ var core_js_modules_esnext_iterator_for_each_js__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_esnext_iterator_for_each_js__WEBPACK_IMPORTED_MODULE_1__);\n\n\n/*!\n * (C) Ionic http://ionicframework.com - MIT License\n */\nclass GestureController {\n constructor() {\n this.gestureId = 0;\n this.requestedStart = new Map();\n this.disabledGestures = new Map();\n this.disabledScroll = new Set();\n }\n /**\n * Creates a gesture delegate based on the GestureConfig passed\n */\n createGesture(config) {\n var _a;\n return new GestureDelegate(this, this.newID(), config.name, (_a = config.priority) !== null && _a !== void 0 ? _a : 0, !!config.disableScroll);\n }\n /**\n * Creates a blocker that will block any other gesture events from firing. Set in the ion-gesture component.\n */\n createBlocker(opts = {}) {\n return new BlockerDelegate(this, this.newID(), opts.disable, !!opts.disableScroll);\n }\n start(gestureName, id, priority) {\n if (!this.canStart(gestureName)) {\n this.requestedStart.delete(id);\n return false;\n }\n this.requestedStart.set(id, priority);\n return true;\n }\n capture(gestureName, id, priority) {\n if (!this.start(gestureName, id, priority)) {\n return false;\n }\n const requestedStart = this.requestedStart;\n let maxPriority = -10000;\n requestedStart.forEach(value => {\n maxPriority = Math.max(maxPriority, value);\n });\n if (maxPriority === priority) {\n this.capturedId = id;\n requestedStart.clear();\n const event = new CustomEvent('ionGestureCaptured', {\n detail: {\n gestureName\n }\n });\n document.dispatchEvent(event);\n return true;\n }\n requestedStart.delete(id);\n return false;\n }\n release(id) {\n this.requestedStart.delete(id);\n if (this.capturedId === id) {\n this.capturedId = undefined;\n }\n }\n disableGesture(gestureName, id) {\n let set = this.disabledGestures.get(gestureName);\n if (set === undefined) {\n set = new Set();\n this.disabledGestures.set(gestureName, set);\n }\n set.add(id);\n }\n enableGesture(gestureName, id) {\n const set = this.disabledGestures.get(gestureName);\n if (set !== undefined) {\n set.delete(id);\n }\n }\n disableScroll(id) {\n this.disabledScroll.add(id);\n if (this.disabledScroll.size === 1) {\n document.body.classList.add(BACKDROP_NO_SCROLL);\n }\n }\n enableScroll(id) {\n this.disabledScroll.delete(id);\n if (this.disabledScroll.size === 0) {\n document.body.classList.remove(BACKDROP_NO_SCROLL);\n }\n }\n canStart(gestureName) {\n if (this.capturedId !== undefined) {\n // a gesture already captured\n return false;\n }\n if (this.isDisabled(gestureName)) {\n return false;\n }\n return true;\n }\n isCaptured() {\n return this.capturedId !== undefined;\n }\n isScrollDisabled() {\n return this.disabledScroll.size > 0;\n }\n isDisabled(gestureName) {\n const disabled = this.disabledGestures.get(gestureName);\n if (disabled && disabled.size > 0) {\n return true;\n }\n return false;\n }\n newID() {\n this.gestureId++;\n return this.gestureId;\n }\n}\nclass GestureDelegate {\n constructor(ctrl, id, name, priority, disableScroll) {\n this.id = id;\n this.name = name;\n this.disableScroll = disableScroll;\n this.priority = priority * 1000000 + id;\n this.ctrl = ctrl;\n }\n canStart() {\n if (!this.ctrl) {\n return false;\n }\n return this.ctrl.canStart(this.name);\n }\n start() {\n if (!this.ctrl) {\n return false;\n }\n return this.ctrl.start(this.name, this.id, this.priority);\n }\n capture() {\n if (!this.ctrl) {\n return false;\n }\n const captured = this.ctrl.capture(this.name, this.id, this.priority);\n if (captured && this.disableScroll) {\n this.ctrl.disableScroll(this.id);\n }\n return captured;\n }\n release() {\n if (this.ctrl) {\n this.ctrl.release(this.id);\n if (this.disableScroll) {\n this.ctrl.enableScroll(this.id);\n }\n }\n }\n destroy() {\n this.release();\n this.ctrl = undefined;\n }\n}\nclass BlockerDelegate {\n constructor(ctrl, id, disable, disableScroll) {\n this.id = id;\n this.disable = disable;\n this.disableScroll = disableScroll;\n this.ctrl = ctrl;\n }\n block() {\n if (!this.ctrl) {\n return;\n }\n if (this.disable) {\n for (const gesture of this.disable) {\n this.ctrl.disableGesture(gesture, this.id);\n }\n }\n if (this.disableScroll) {\n this.ctrl.disableScroll(this.id);\n }\n }\n unblock() {\n if (!this.ctrl) {\n return;\n }\n if (this.disable) {\n for (const gesture of this.disable) {\n this.ctrl.enableGesture(gesture, this.id);\n }\n }\n if (this.disableScroll) {\n this.ctrl.enableScroll(this.id);\n }\n }\n destroy() {\n this.unblock();\n this.ctrl = undefined;\n }\n}\nconst BACKDROP_NO_SCROLL = 'backdrop-no-scroll';\nconst GESTURE_CONTROLLER = new GestureController();\n\n\n//# sourceURL=webpack://jandl/./node_modules/@ionic/core/components/gesture-controller.js?\n}"); /***/ }), @@ -257,7 +257,7 @@ eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpac /***/ (function(__unused_webpack_module, __webpack_exports__, __webpack_require__) { "use strict"; -eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"a\": function() { return /* binding */ hapticSelectionStart; },\n/* harmony export */ \"b\": function() { return /* binding */ hapticSelectionChanged; },\n/* harmony export */ \"c\": function() { return /* binding */ hapticSelectionEnd; },\n/* harmony export */ \"d\": function() { return /* binding */ hapticSelection; },\n/* harmony export */ \"h\": function() { return /* binding */ hapticImpact; }\n/* harmony export */ });\n/*!\n * (C) Ionic http://ionicframework.com - MIT License\n */\nconst HapticEngine = {\n getEngine() {\n var _a;\n const win = window;\n return win.TapticEngine || ((_a = win.Capacitor) === null || _a === void 0 ? void 0 : _a.isPluginAvailable('Haptics')) && win.Capacitor.Plugins.Haptics;\n },\n available() {\n var _a;\n const win = window;\n const engine = this.getEngine();\n if (!engine) {\n return false;\n }\n /**\n * Developers can manually import the\n * Haptics plugin in their app which will cause\n * getEngine to return the Haptics engine. However,\n * the Haptics engine will throw an error if\n * used in a web browser that does not support\n * the Vibrate API. This check avoids that error\n * if the browser does not support the Vibrate API.\n */\n if (((_a = win.Capacitor) === null || _a === void 0 ? void 0 : _a.getPlatform()) === 'web') {\n return typeof navigator !== 'undefined' && navigator.vibrate !== undefined;\n }\n return true;\n },\n isCordova() {\n return !!window.TapticEngine;\n },\n isCapacitor() {\n const win = window;\n return !!win.Capacitor;\n },\n impact(options) {\n const engine = this.getEngine();\n if (!engine) {\n return;\n }\n const style = this.isCapacitor() ? options.style.toUpperCase() : options.style;\n engine.impact({\n style\n });\n },\n notification(options) {\n const engine = this.getEngine();\n if (!engine) {\n return;\n }\n const style = this.isCapacitor() ? options.style.toUpperCase() : options.style;\n engine.notification({\n style\n });\n },\n selection() {\n this.impact({\n style: 'light'\n });\n },\n selectionStart() {\n const engine = this.getEngine();\n if (!engine) {\n return;\n }\n if (this.isCapacitor()) {\n engine.selectionStart();\n } else {\n engine.gestureSelectionStart();\n }\n },\n selectionChanged() {\n const engine = this.getEngine();\n if (!engine) {\n return;\n }\n if (this.isCapacitor()) {\n engine.selectionChanged();\n } else {\n engine.gestureSelectionChanged();\n }\n },\n selectionEnd() {\n const engine = this.getEngine();\n if (!engine) {\n return;\n }\n if (this.isCapacitor()) {\n engine.selectionEnd();\n } else {\n engine.gestureSelectionEnd();\n }\n }\n};\n/**\n * Check to see if the Haptic Plugin is available\n * @return Returns `true` or false if the plugin is available\n */\nconst hapticAvailable = () => {\n return HapticEngine.available();\n};\n/**\n * Trigger a selection changed haptic event. Good for one-time events\n * (not for gestures)\n */\nconst hapticSelection = () => {\n hapticAvailable() && HapticEngine.selection();\n};\n/**\n * Tell the haptic engine that a gesture for a selection change is starting.\n */\nconst hapticSelectionStart = () => {\n hapticAvailable() && HapticEngine.selectionStart();\n};\n/**\n * Tell the haptic engine that a selection changed during a gesture.\n */\nconst hapticSelectionChanged = () => {\n hapticAvailable() && HapticEngine.selectionChanged();\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 hapticAvailable() && HapticEngine.selectionEnd();\n};\n/**\n * Use this to indicate success/failure/warning to the user.\n * options should be of the type `{ style: 'light' }` (or `medium`/`heavy`)\n */\nconst hapticImpact = options => {\n hapticAvailable() && HapticEngine.impact(options);\n};\n\n\n//# sourceURL=webpack://jandl/./node_modules/@ionic/core/components/haptic.js?"); +eval("{__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ a: function() { return /* binding */ hapticSelectionStart; },\n/* harmony export */ b: function() { return /* binding */ hapticSelectionChanged; },\n/* harmony export */ c: function() { return /* binding */ hapticSelectionEnd; },\n/* harmony export */ d: function() { return /* binding */ hapticSelection; },\n/* harmony export */ h: function() { return /* binding */ hapticImpact; }\n/* harmony export */ });\n/*!\n * (C) Ionic http://ionicframework.com - MIT License\n */\nconst HapticEngine = {\n getEngine() {\n var _a;\n const win = window;\n return win.TapticEngine || ((_a = win.Capacitor) === null || _a === void 0 ? void 0 : _a.isPluginAvailable('Haptics')) && win.Capacitor.Plugins.Haptics;\n },\n available() {\n var _a;\n const win = window;\n const engine = this.getEngine();\n if (!engine) {\n return false;\n }\n /**\n * Developers can manually import the\n * Haptics plugin in their app which will cause\n * getEngine to return the Haptics engine. However,\n * the Haptics engine will throw an error if\n * used in a web browser that does not support\n * the Vibrate API. This check avoids that error\n * if the browser does not support the Vibrate API.\n */\n if (((_a = win.Capacitor) === null || _a === void 0 ? void 0 : _a.getPlatform()) === 'web') {\n return typeof navigator !== 'undefined' && navigator.vibrate !== undefined;\n }\n return true;\n },\n isCordova() {\n return !!window.TapticEngine;\n },\n isCapacitor() {\n const win = window;\n return !!win.Capacitor;\n },\n impact(options) {\n const engine = this.getEngine();\n if (!engine) {\n return;\n }\n const style = this.isCapacitor() ? options.style.toUpperCase() : options.style;\n engine.impact({\n style\n });\n },\n notification(options) {\n const engine = this.getEngine();\n if (!engine) {\n return;\n }\n const style = this.isCapacitor() ? options.style.toUpperCase() : options.style;\n engine.notification({\n style\n });\n },\n selection() {\n this.impact({\n style: 'light'\n });\n },\n selectionStart() {\n const engine = this.getEngine();\n if (!engine) {\n return;\n }\n if (this.isCapacitor()) {\n engine.selectionStart();\n } else {\n engine.gestureSelectionStart();\n }\n },\n selectionChanged() {\n const engine = this.getEngine();\n if (!engine) {\n return;\n }\n if (this.isCapacitor()) {\n engine.selectionChanged();\n } else {\n engine.gestureSelectionChanged();\n }\n },\n selectionEnd() {\n const engine = this.getEngine();\n if (!engine) {\n return;\n }\n if (this.isCapacitor()) {\n engine.selectionEnd();\n } else {\n engine.gestureSelectionEnd();\n }\n }\n};\n/**\n * Check to see if the Haptic Plugin is available\n * @return Returns `true` or false if the plugin is available\n */\nconst hapticAvailable = () => {\n return HapticEngine.available();\n};\n/**\n * Trigger a selection changed haptic event. Good for one-time events\n * (not for gestures)\n */\nconst hapticSelection = () => {\n hapticAvailable() && HapticEngine.selection();\n};\n/**\n * Tell the haptic engine that a gesture for a selection change is starting.\n */\nconst hapticSelectionStart = () => {\n hapticAvailable() && HapticEngine.selectionStart();\n};\n/**\n * Tell the haptic engine that a selection changed during a gesture.\n */\nconst hapticSelectionChanged = () => {\n hapticAvailable() && HapticEngine.selectionChanged();\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 hapticAvailable() && HapticEngine.selectionEnd();\n};\n/**\n * Use this to indicate success/failure/warning to the user.\n * options should be of the type `{ style: 'light' }` (or `medium`/`heavy`)\n */\nconst hapticImpact = options => {\n hapticAvailable() && HapticEngine.impact(options);\n};\n\n\n//# sourceURL=webpack://jandl/./node_modules/@ionic/core/components/haptic.js?\n}"); /***/ }), @@ -268,7 +268,7 @@ eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpac /***/ (function(__unused_webpack_module, __webpack_exports__, __webpack_require__) { "use strict"; -eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"MENU_BACK_BUTTON_PRIORITY\": function() { return /* binding */ MENU_BACK_BUTTON_PRIORITY; },\n/* harmony export */ \"OVERLAY_BACK_BUTTON_PRIORITY\": function() { return /* binding */ OVERLAY_BACK_BUTTON_PRIORITY; },\n/* harmony export */ \"blockHardwareBackButton\": function() { return /* binding */ blockHardwareBackButton; },\n/* harmony export */ \"startHardwareBackButton\": function() { return /* binding */ startHardwareBackButton; }\n/* harmony export */ });\n/* harmony import */ var core_js_modules_es_array_push_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! core-js/modules/es.array.push.js */ \"./node_modules/core-js/modules/es.array.push.js\");\n/* harmony import */ var core_js_modules_es_array_push_js__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_array_push_js__WEBPACK_IMPORTED_MODULE_0__);\n/* provided dependency */ var console = __webpack_require__(/*! ./node_modules/console-browserify/index.js */ \"./node_modules/console-browserify/index.js\");\n\n/*!\n * (C) Ionic http://ionicframework.com - MIT License\n */\n/**\n * When hardwareBackButton: false in config,\n * we need to make sure we also block the default\n * webview behavior. If we don't then it will be\n * possible for users to navigate backward while\n * an overlay is still open. Additionally, it will\n * give the appearance that the hardwareBackButton\n * config is not working as the page transition\n * will still happen.\n */\nconst blockHardwareBackButton = () => {\n document.addEventListener('backbutton', () => {}); // eslint-disable-line\n};\n\nconst startHardwareBackButton = () => {\n const doc = document;\n let busy = false;\n doc.addEventListener('backbutton', () => {\n if (busy) {\n return;\n }\n let index = 0;\n let handlers = [];\n const ev = new CustomEvent('ionBackButton', {\n bubbles: false,\n detail: {\n register(priority, handler) {\n handlers.push({\n priority,\n handler,\n id: index++\n });\n }\n }\n });\n doc.dispatchEvent(ev);\n const executeAction = async handlerRegister => {\n try {\n if (handlerRegister === null || handlerRegister === void 0 ? void 0 : handlerRegister.handler) {\n const result = handlerRegister.handler(processHandlers);\n if (result != null) {\n await result;\n }\n }\n } catch (e) {\n console.error(e);\n }\n };\n const processHandlers = () => {\n if (handlers.length > 0) {\n let selectedHandler = {\n priority: Number.MIN_SAFE_INTEGER,\n handler: () => undefined,\n id: -1\n };\n handlers.forEach(handler => {\n if (handler.priority >= selectedHandler.priority) {\n selectedHandler = handler;\n }\n });\n busy = true;\n handlers = handlers.filter(handler => handler.id !== selectedHandler.id);\n executeAction(selectedHandler).then(() => busy = false);\n }\n };\n processHandlers();\n });\n};\nconst OVERLAY_BACK_BUTTON_PRIORITY = 100;\nconst MENU_BACK_BUTTON_PRIORITY = 99; // 1 less than overlay priority since menu is displayed behind overlays\n\n\n\n//# sourceURL=webpack://jandl/./node_modules/@ionic/core/components/hardware-back-button.js?"); +eval("{__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ MENU_BACK_BUTTON_PRIORITY: function() { return /* binding */ MENU_BACK_BUTTON_PRIORITY; },\n/* harmony export */ OVERLAY_BACK_BUTTON_PRIORITY: function() { return /* binding */ OVERLAY_BACK_BUTTON_PRIORITY; },\n/* harmony export */ blockHardwareBackButton: function() { return /* binding */ blockHardwareBackButton; },\n/* harmony export */ startHardwareBackButton: function() { return /* binding */ startHardwareBackButton; }\n/* harmony export */ });\n/* harmony import */ var core_js_modules_es_array_push_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! core-js/modules/es.array.push.js */ \"./node_modules/core-js/modules/es.array.push.js\");\n/* harmony import */ var core_js_modules_es_array_push_js__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_array_push_js__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var core_js_modules_esnext_iterator_constructor_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! core-js/modules/esnext.iterator.constructor.js */ \"./node_modules/core-js/modules/esnext.iterator.constructor.js\");\n/* harmony import */ var core_js_modules_esnext_iterator_constructor_js__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_esnext_iterator_constructor_js__WEBPACK_IMPORTED_MODULE_1__);\n/* harmony import */ var core_js_modules_esnext_iterator_filter_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! core-js/modules/esnext.iterator.filter.js */ \"./node_modules/core-js/modules/esnext.iterator.filter.js\");\n/* harmony import */ var core_js_modules_esnext_iterator_filter_js__WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_esnext_iterator_filter_js__WEBPACK_IMPORTED_MODULE_2__);\n/* harmony import */ var core_js_modules_esnext_iterator_for_each_js__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! core-js/modules/esnext.iterator.for-each.js */ \"./node_modules/core-js/modules/esnext.iterator.for-each.js\");\n/* harmony import */ var core_js_modules_esnext_iterator_for_each_js__WEBPACK_IMPORTED_MODULE_3___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_esnext_iterator_for_each_js__WEBPACK_IMPORTED_MODULE_3__);\n/* provided dependency */ var console = __webpack_require__(/*! ./node_modules/console-browserify/index.js */ \"./node_modules/console-browserify/index.js\");\n\n\n\n\n/*!\n * (C) Ionic http://ionicframework.com - MIT License\n */\n/**\n * When hardwareBackButton: false in config,\n * we need to make sure we also block the default\n * webview behavior. If we don't then it will be\n * possible for users to navigate backward while\n * an overlay is still open. Additionally, it will\n * give the appearance that the hardwareBackButton\n * config is not working as the page transition\n * will still happen.\n */\nconst blockHardwareBackButton = () => {\n document.addEventListener('backbutton', () => {}); // eslint-disable-line\n};\nconst startHardwareBackButton = () => {\n const doc = document;\n let busy = false;\n doc.addEventListener('backbutton', () => {\n if (busy) {\n return;\n }\n let index = 0;\n let handlers = [];\n const ev = new CustomEvent('ionBackButton', {\n bubbles: false,\n detail: {\n register(priority, handler) {\n handlers.push({\n priority,\n handler,\n id: index++\n });\n }\n }\n });\n doc.dispatchEvent(ev);\n const executeAction = async handlerRegister => {\n try {\n if (handlerRegister === null || handlerRegister === void 0 ? void 0 : handlerRegister.handler) {\n const result = handlerRegister.handler(processHandlers);\n if (result != null) {\n await result;\n }\n }\n } catch (e) {\n console.error(e);\n }\n };\n const processHandlers = () => {\n if (handlers.length > 0) {\n let selectedHandler = {\n priority: Number.MIN_SAFE_INTEGER,\n handler: () => undefined,\n id: -1\n };\n handlers.forEach(handler => {\n if (handler.priority >= selectedHandler.priority) {\n selectedHandler = handler;\n }\n });\n busy = true;\n handlers = handlers.filter(handler => handler.id !== selectedHandler.id);\n executeAction(selectedHandler).then(() => busy = false);\n }\n };\n processHandlers();\n });\n};\nconst OVERLAY_BACK_BUTTON_PRIORITY = 100;\nconst MENU_BACK_BUTTON_PRIORITY = 99; // 1 less than overlay priority since menu is displayed behind overlays\n\n\n\n//# sourceURL=webpack://jandl/./node_modules/@ionic/core/components/hardware-back-button.js?\n}"); /***/ }), @@ -279,7 +279,7 @@ eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpac /***/ (function(__unused_webpack_module, __webpack_exports__, __webpack_require__) { "use strict"; -eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"a\": function() { return /* binding */ addEventListener; },\n/* harmony export */ \"b\": function() { return /* binding */ removeEventListener; },\n/* harmony export */ \"c\": function() { return /* binding */ componentOnReady; },\n/* harmony export */ \"d\": function() { return /* binding */ inheritAttributes; },\n/* harmony export */ \"e\": function() { return /* binding */ renderHiddenInput; },\n/* harmony export */ \"f\": function() { return /* binding */ focusElement; },\n/* harmony export */ \"g\": function() { return /* binding */ getElementRoot; },\n/* harmony export */ \"h\": function() { return /* binding */ clamp; },\n/* harmony export */ \"i\": function() { return /* binding */ inheritAriaAttributes; },\n/* harmony export */ \"j\": function() { return /* binding */ debounceEvent; },\n/* harmony export */ \"k\": function() { return /* binding */ findItemLabel; },\n/* harmony export */ \"l\": function() { return /* binding */ isEndSide; },\n/* harmony export */ \"m\": function() { return /* binding */ assert; },\n/* harmony export */ \"n\": function() { return /* binding */ getAriaLabel; },\n/* harmony export */ \"o\": function() { return /* binding */ debounce; },\n/* harmony export */ \"p\": function() { return /* binding */ pointerCoord; },\n/* harmony export */ \"q\": function() { return /* binding */ hasShadowDom; },\n/* harmony export */ \"r\": function() { return /* binding */ raf; },\n/* harmony export */ \"s\": function() { return /* binding */ shallowEqualStringMap; },\n/* harmony export */ \"t\": function() { return /* binding */ transitionEndAsync; },\n/* harmony export */ \"u\": function() { return /* binding */ now; }\n/* harmony export */ });\n/* provided dependency */ var console = __webpack_require__(/*! ./node_modules/console-browserify/index.js */ \"./node_modules/console-browserify/index.js\");\n/*!\n * (C) Ionic http://ionicframework.com - MIT License\n */\nconst transitionEndAsync = (el, expectedDuration = 0) => {\n return new Promise(resolve => {\n transitionEnd(el, expectedDuration, resolve);\n });\n};\n/**\n * Allows developer to wait for a transition\n * to finish and fallback to a timer if the\n * transition is cancelled or otherwise\n * never finishes. Also see transitionEndAsync\n * which is an await-able version of this.\n */\nconst transitionEnd = (el, expectedDuration = 0, callback) => {\n let unRegTrans;\n let animationTimeout;\n const opts = {\n passive: true\n };\n const ANIMATION_FALLBACK_TIMEOUT = 500;\n const unregister = () => {\n if (unRegTrans) {\n unRegTrans();\n }\n };\n const onTransitionEnd = ev => {\n if (ev === undefined || el === ev.target) {\n unregister();\n callback(ev);\n }\n };\n if (el) {\n el.addEventListener('webkitTransitionEnd', onTransitionEnd, opts);\n el.addEventListener('transitionend', onTransitionEnd, opts);\n animationTimeout = setTimeout(onTransitionEnd, expectedDuration + ANIMATION_FALLBACK_TIMEOUT);\n unRegTrans = () => {\n if (animationTimeout) {\n clearTimeout(animationTimeout);\n animationTimeout = undefined;\n }\n el.removeEventListener('webkitTransitionEnd', onTransitionEnd, opts);\n el.removeEventListener('transitionend', onTransitionEnd, opts);\n };\n }\n return unregister;\n};\n/**\n * Waits for a component to be ready for\n * both custom element and non-custom element builds.\n * If non-custom element build, el.componentOnReady\n * will be used.\n * For custom element builds, we wait a frame\n * so that the inner contents of the component\n * have a chance to render.\n *\n * Use this utility rather than calling\n * el.componentOnReady yourself.\n */\nconst componentOnReady = (el, callback) => {\n if (el.componentOnReady) {\n // eslint-disable-next-line custom-rules/no-component-on-ready-method\n el.componentOnReady().then(resolvedEl => callback(resolvedEl));\n } else {\n raf(() => callback(el));\n }\n};\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 * List of available ARIA attributes + `role`.\n * Removed deprecated attributes.\n * https://developer.mozilla.org/en-US/docs/Web/Accessibility/ARIA/Attributes\n */\nconst ariaAttributes = ['role', 'aria-activedescendant', 'aria-atomic', 'aria-autocomplete', 'aria-braillelabel', 'aria-brailleroledescription', 'aria-busy', 'aria-checked', 'aria-colcount', 'aria-colindex', 'aria-colindextext', 'aria-colspan', 'aria-controls', 'aria-current', 'aria-describedby', 'aria-description', 'aria-details', 'aria-disabled', 'aria-errormessage', 'aria-expanded', 'aria-flowto', 'aria-haspopup', 'aria-hidden', 'aria-invalid', 'aria-keyshortcuts', 'aria-label', 'aria-labelledby', 'aria-level', 'aria-live', 'aria-multiline', 'aria-multiselectable', 'aria-orientation', 'aria-owns', 'aria-placeholder', 'aria-posinset', 'aria-pressed', 'aria-readonly', 'aria-relevant', 'aria-required', 'aria-roledescription', 'aria-rowcount', 'aria-rowindex', 'aria-rowindextext', 'aria-rowspan', 'aria-selected', 'aria-setsize', 'aria-sort', 'aria-valuemax', 'aria-valuemin', 'aria-valuenow', 'aria-valuetext'];\n/**\n * Returns an array of aria attributes that should be copied from\n * the shadow host element to a target within the light DOM.\n * @param el The element that the attributes should be copied from.\n * @param ignoreList The list of aria-attributes to ignore reflecting and removing from the host.\n * Use this in instances where we manually specify aria attributes on the `` element.\n */\nconst inheritAriaAttributes = (el, ignoreList) => {\n let attributesToInherit = ariaAttributes;\n if (ignoreList && ignoreList.length > 0) {\n attributesToInherit = attributesToInherit.filter(attr => !ignoreList.includes(attr));\n }\n return inheritAttributes(el, attributesToInherit);\n};\nconst addEventListener = (el, eventName, callback, opts) => {\n var _a;\n if (typeof window !== 'undefined') {\n const win = window;\n const config = (_a = win === null || win === void 0 ? void 0 : win.Ionic) === null || _a === void 0 ? void 0 : _a.config;\n if (config) {\n const ael = config.get('_ael');\n if (ael) {\n return ael(el, eventName, callback, opts);\n } else if (config._ael) {\n return config._ael(el, eventName, callback, opts);\n }\n }\n }\n return el.addEventListener(eventName, callback, opts);\n};\nconst removeEventListener = (el, eventName, callback, opts) => {\n var _a;\n if (typeof window !== 'undefined') {\n const win = window;\n const config = (_a = win === null || win === void 0 ? void 0 : win.Ionic) === null || _a === void 0 ? void 0 : _a.config;\n if (config) {\n const rel = config.get('_rel');\n if (rel) {\n return rel(el, eventName, callback, opts);\n } else if (config._rel) {\n return config._rel(el, eventName, callback, opts);\n }\n }\n }\n return el.removeEventListener(eventName, callback, opts);\n};\n/**\n * Gets the root context of a shadow dom element\n * On newer browsers this will be the shadowRoot,\n * but for older browser this may just be the\n * element itself.\n *\n * Useful for whenever you need to explicitly\n * do \"myElement.shadowRoot!.querySelector(...)\".\n */\nconst getElementRoot = (el, fallback = el) => {\n return el.shadowRoot || fallback;\n};\n/**\n * Patched version of requestAnimationFrame that avoids ngzone\n * Use only when you know ngzone should not run\n */\nconst raf = h => {\n if (typeof __zone_symbol__requestAnimationFrame === 'function') {\n return __zone_symbol__requestAnimationFrame(h);\n }\n if (typeof requestAnimationFrame === 'function') {\n return requestAnimationFrame(h);\n }\n return setTimeout(h);\n};\nconst hasShadowDom = el => {\n return !!el.shadowRoot && !!el.attachShadow;\n};\nconst findItemLabel = componentEl => {\n const itemEl = componentEl.closest('ion-item');\n if (itemEl) {\n return itemEl.querySelector('ion-label');\n }\n return null;\n};\nconst focusElement = el => {\n el.focus();\n /**\n * When programmatically focusing an element,\n * the focus-visible utility will not run because\n * it is expecting a keyboard event to have triggered this;\n * however, there are times when we need to manually control\n * this behavior so we call the `setFocus` method on ion-app\n * which will let us explicitly set the elements to focus.\n */\n if (el.classList.contains('ion-focusable')) {\n const app = el.closest('ion-app');\n if (app) {\n app.setFocus([el]);\n }\n }\n};\n/**\n * This method is used for Ionic's input components that use Shadow DOM. In\n * order to properly label the inputs to work with screen readers, we need\n * to get the text content of the label outside of the shadow root and pass\n * it to the input inside of the shadow root.\n *\n * Referencing label elements by id from outside of the component is\n * impossible due to the shadow boundary, read more here:\n * https://developer.salesforce.com/blogs/2020/01/accessibility-for-web-components.html\n *\n * @param componentEl The shadow element that needs the aria label\n * @param inputId The unique identifier for the input\n */\nconst getAriaLabel = (componentEl, inputId) => {\n let labelText;\n // If the user provides their own label via the aria-labelledby attr\n // we should use that instead of looking for an ion-label\n const labelledBy = componentEl.getAttribute('aria-labelledby');\n // Grab the id off of the component in case they are using\n // a custom label using the label element\n const componentId = componentEl.id;\n let labelId = labelledBy !== null && labelledBy.trim() !== '' ? labelledBy : inputId + '-lbl';\n let label = labelledBy !== null && labelledBy.trim() !== '' ? document.getElementById(labelledBy) : findItemLabel(componentEl);\n if (label) {\n if (labelledBy === null) {\n label.id = labelId;\n }\n labelText = label.textContent;\n label.setAttribute('aria-hidden', 'true');\n // if there is no label, check to see if the user has provided\n // one by setting an id on the component and using the label element\n } else if (componentId.trim() !== '') {\n label = document.querySelector(`label[for=\"${componentId}\"]`);\n if (label) {\n if (label.id !== '') {\n labelId = label.id;\n } else {\n label.id = labelId = `${componentId}-lbl`;\n }\n labelText = label.textContent;\n }\n }\n return {\n label,\n labelId,\n labelText\n };\n};\n/**\n * This method is used to add a hidden input to a host element that contains\n * a Shadow DOM. It does not add the input inside of the Shadow root which\n * allows it to be picked up inside of forms. It should contain the same\n * values as the host element.\n *\n * @param always Add a hidden input even if the container does not use Shadow\n * @param container The element where the input will be added\n * @param name The name of the input\n * @param value The value of the input\n * @param disabled If true, the input is disabled\n */\nconst renderHiddenInput = (always, container, name, value, disabled) => {\n if (always || hasShadowDom(container)) {\n let input = container.querySelector('input.aux-input');\n if (!input) {\n input = container.ownerDocument.createElement('input');\n input.type = 'hidden';\n input.classList.add('aux-input');\n container.appendChild(input);\n }\n input.disabled = disabled;\n input.name = name;\n input.value = value || '';\n }\n};\nconst clamp = (min, n, max) => {\n return Math.max(min, Math.min(n, max));\n};\nconst assert = (actual, reason) => {\n if (!actual) {\n const message = 'ASSERT: ' + reason;\n console.error(message);\n debugger; // eslint-disable-line\n throw new Error(message);\n }\n};\nconst now = ev => {\n return ev.timeStamp || Date.now();\n};\nconst pointerCoord = ev => {\n // get X coordinates for either a mouse click\n // or a touch depending on the given event\n if (ev) {\n const changedTouches = ev.changedTouches;\n if (changedTouches && changedTouches.length > 0) {\n const touch = changedTouches[0];\n return {\n x: touch.clientX,\n y: touch.clientY\n };\n }\n if (ev.pageX !== undefined) {\n return {\n x: ev.pageX,\n y: ev.pageY\n };\n }\n }\n return {\n x: 0,\n y: 0\n };\n};\n/**\n * @hidden\n * Given a side, return if it should be on the end\n * based on the value of dir\n * @param side the side\n * @param isRTL whether the application dir is rtl\n */\nconst isEndSide = side => {\n const isRTL = document.dir === 'rtl';\n switch (side) {\n case 'start':\n return isRTL;\n case 'end':\n return !isRTL;\n default:\n throw new Error(`\"${side}\" is not a valid value for [side]. Use \"start\" or \"end\" instead.`);\n }\n};\nconst debounceEvent = (event, wait) => {\n const original = event._original || event;\n return {\n _original: event,\n emit: debounce(original.emit.bind(original), wait)\n };\n};\nconst debounce = (func, wait = 0) => {\n let timer;\n return (...args) => {\n clearTimeout(timer);\n timer = setTimeout(func, wait, ...args);\n };\n};\n/**\n * Check whether the two string maps are shallow equal.\n *\n * undefined is treated as an empty map.\n *\n * @returns whether the keys are the same and the values are shallow equal.\n */\nconst shallowEqualStringMap = (map1, map2) => {\n map1 !== null && map1 !== void 0 ? map1 : map1 = {};\n map2 !== null && map2 !== void 0 ? map2 : map2 = {};\n if (map1 === map2) {\n return true;\n }\n const keys1 = Object.keys(map1);\n if (keys1.length !== Object.keys(map2).length) {\n return false;\n }\n for (const k1 of keys1) {\n if (!(k1 in map2)) {\n return false;\n }\n if (map1[k1] !== map2[k1]) {\n return false;\n }\n }\n return true;\n};\n\n\n//# sourceURL=webpack://jandl/./node_modules/@ionic/core/components/helpers.js?"); +eval("{__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ a: function() { return /* binding */ addEventListener; },\n/* harmony export */ b: function() { return /* binding */ removeEventListener; },\n/* harmony export */ c: function() { return /* binding */ componentOnReady; },\n/* harmony export */ d: function() { return /* binding */ inheritAttributes; },\n/* harmony export */ e: function() { return /* binding */ renderHiddenInput; },\n/* harmony export */ f: function() { return /* binding */ focusElement; },\n/* harmony export */ g: function() { return /* binding */ getElementRoot; },\n/* harmony export */ h: function() { return /* binding */ clamp; },\n/* harmony export */ i: function() { return /* binding */ inheritAriaAttributes; },\n/* harmony export */ j: function() { return /* binding */ debounceEvent; },\n/* harmony export */ k: function() { return /* binding */ findItemLabel; },\n/* harmony export */ l: function() { return /* binding */ isEndSide; },\n/* harmony export */ m: function() { return /* binding */ assert; },\n/* harmony export */ n: function() { return /* binding */ getAriaLabel; },\n/* harmony export */ o: function() { return /* binding */ debounce; },\n/* harmony export */ p: function() { return /* binding */ pointerCoord; },\n/* harmony export */ q: function() { return /* binding */ hasShadowDom; },\n/* harmony export */ r: function() { return /* binding */ raf; },\n/* harmony export */ s: function() { return /* binding */ shallowEqualStringMap; },\n/* harmony export */ t: function() { return /* binding */ transitionEndAsync; },\n/* harmony export */ u: function() { return /* binding */ now; }\n/* harmony export */ });\n/* harmony import */ var core_js_modules_esnext_iterator_constructor_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! core-js/modules/esnext.iterator.constructor.js */ \"./node_modules/core-js/modules/esnext.iterator.constructor.js\");\n/* harmony import */ var core_js_modules_esnext_iterator_constructor_js__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_esnext_iterator_constructor_js__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var core_js_modules_esnext_iterator_filter_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! core-js/modules/esnext.iterator.filter.js */ \"./node_modules/core-js/modules/esnext.iterator.filter.js\");\n/* harmony import */ var core_js_modules_esnext_iterator_filter_js__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_esnext_iterator_filter_js__WEBPACK_IMPORTED_MODULE_1__);\n/* harmony import */ var core_js_modules_esnext_iterator_for_each_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! core-js/modules/esnext.iterator.for-each.js */ \"./node_modules/core-js/modules/esnext.iterator.for-each.js\");\n/* harmony import */ var core_js_modules_esnext_iterator_for_each_js__WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_esnext_iterator_for_each_js__WEBPACK_IMPORTED_MODULE_2__);\n/* provided dependency */ var console = __webpack_require__(/*! ./node_modules/console-browserify/index.js */ \"./node_modules/console-browserify/index.js\");\n\n\n\n/*!\n * (C) Ionic http://ionicframework.com - MIT License\n */\nconst transitionEndAsync = (el, expectedDuration = 0) => {\n return new Promise(resolve => {\n transitionEnd(el, expectedDuration, resolve);\n });\n};\n/**\n * Allows developer to wait for a transition\n * to finish and fallback to a timer if the\n * transition is cancelled or otherwise\n * never finishes. Also see transitionEndAsync\n * which is an await-able version of this.\n */\nconst transitionEnd = (el, expectedDuration = 0, callback) => {\n let unRegTrans;\n let animationTimeout;\n const opts = {\n passive: true\n };\n const ANIMATION_FALLBACK_TIMEOUT = 500;\n const unregister = () => {\n if (unRegTrans) {\n unRegTrans();\n }\n };\n const onTransitionEnd = ev => {\n if (ev === undefined || el === ev.target) {\n unregister();\n callback(ev);\n }\n };\n if (el) {\n el.addEventListener('webkitTransitionEnd', onTransitionEnd, opts);\n el.addEventListener('transitionend', onTransitionEnd, opts);\n animationTimeout = setTimeout(onTransitionEnd, expectedDuration + ANIMATION_FALLBACK_TIMEOUT);\n unRegTrans = () => {\n if (animationTimeout) {\n clearTimeout(animationTimeout);\n animationTimeout = undefined;\n }\n el.removeEventListener('webkitTransitionEnd', onTransitionEnd, opts);\n el.removeEventListener('transitionend', onTransitionEnd, opts);\n };\n }\n return unregister;\n};\n/**\n * Waits for a component to be ready for\n * both custom element and non-custom element builds.\n * If non-custom element build, el.componentOnReady\n * will be used.\n * For custom element builds, we wait a frame\n * so that the inner contents of the component\n * have a chance to render.\n *\n * Use this utility rather than calling\n * el.componentOnReady yourself.\n */\nconst componentOnReady = (el, callback) => {\n if (el.componentOnReady) {\n // eslint-disable-next-line custom-rules/no-component-on-ready-method\n el.componentOnReady().then(resolvedEl => callback(resolvedEl));\n } else {\n raf(() => callback(el));\n }\n};\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 * List of available ARIA attributes + `role`.\n * Removed deprecated attributes.\n * https://developer.mozilla.org/en-US/docs/Web/Accessibility/ARIA/Attributes\n */\nconst ariaAttributes = ['role', 'aria-activedescendant', 'aria-atomic', 'aria-autocomplete', 'aria-braillelabel', 'aria-brailleroledescription', 'aria-busy', 'aria-checked', 'aria-colcount', 'aria-colindex', 'aria-colindextext', 'aria-colspan', 'aria-controls', 'aria-current', 'aria-describedby', 'aria-description', 'aria-details', 'aria-disabled', 'aria-errormessage', 'aria-expanded', 'aria-flowto', 'aria-haspopup', 'aria-hidden', 'aria-invalid', 'aria-keyshortcuts', 'aria-label', 'aria-labelledby', 'aria-level', 'aria-live', 'aria-multiline', 'aria-multiselectable', 'aria-orientation', 'aria-owns', 'aria-placeholder', 'aria-posinset', 'aria-pressed', 'aria-readonly', 'aria-relevant', 'aria-required', 'aria-roledescription', 'aria-rowcount', 'aria-rowindex', 'aria-rowindextext', 'aria-rowspan', 'aria-selected', 'aria-setsize', 'aria-sort', 'aria-valuemax', 'aria-valuemin', 'aria-valuenow', 'aria-valuetext'];\n/**\n * Returns an array of aria attributes that should be copied from\n * the shadow host element to a target within the light DOM.\n * @param el The element that the attributes should be copied from.\n * @param ignoreList The list of aria-attributes to ignore reflecting and removing from the host.\n * Use this in instances where we manually specify aria attributes on the `` element.\n */\nconst inheritAriaAttributes = (el, ignoreList) => {\n let attributesToInherit = ariaAttributes;\n if (ignoreList && ignoreList.length > 0) {\n attributesToInherit = attributesToInherit.filter(attr => !ignoreList.includes(attr));\n }\n return inheritAttributes(el, attributesToInherit);\n};\nconst addEventListener = (el, eventName, callback, opts) => {\n var _a;\n if (typeof window !== 'undefined') {\n const win = window;\n const config = (_a = win === null || win === void 0 ? void 0 : win.Ionic) === null || _a === void 0 ? void 0 : _a.config;\n if (config) {\n const ael = config.get('_ael');\n if (ael) {\n return ael(el, eventName, callback, opts);\n } else if (config._ael) {\n return config._ael(el, eventName, callback, opts);\n }\n }\n }\n return el.addEventListener(eventName, callback, opts);\n};\nconst removeEventListener = (el, eventName, callback, opts) => {\n var _a;\n if (typeof window !== 'undefined') {\n const win = window;\n const config = (_a = win === null || win === void 0 ? void 0 : win.Ionic) === null || _a === void 0 ? void 0 : _a.config;\n if (config) {\n const rel = config.get('_rel');\n if (rel) {\n return rel(el, eventName, callback, opts);\n } else if (config._rel) {\n return config._rel(el, eventName, callback, opts);\n }\n }\n }\n return el.removeEventListener(eventName, callback, opts);\n};\n/**\n * Gets the root context of a shadow dom element\n * On newer browsers this will be the shadowRoot,\n * but for older browser this may just be the\n * element itself.\n *\n * Useful for whenever you need to explicitly\n * do \"myElement.shadowRoot!.querySelector(...)\".\n */\nconst getElementRoot = (el, fallback = el) => {\n return el.shadowRoot || fallback;\n};\n/**\n * Patched version of requestAnimationFrame that avoids ngzone\n * Use only when you know ngzone should not run\n */\nconst raf = h => {\n if (typeof __zone_symbol__requestAnimationFrame === 'function') {\n return __zone_symbol__requestAnimationFrame(h);\n }\n if (typeof requestAnimationFrame === 'function') {\n return requestAnimationFrame(h);\n }\n return setTimeout(h);\n};\nconst hasShadowDom = el => {\n return !!el.shadowRoot && !!el.attachShadow;\n};\nconst findItemLabel = componentEl => {\n const itemEl = componentEl.closest('ion-item');\n if (itemEl) {\n return itemEl.querySelector('ion-label');\n }\n return null;\n};\nconst focusElement = el => {\n el.focus();\n /**\n * When programmatically focusing an element,\n * the focus-visible utility will not run because\n * it is expecting a keyboard event to have triggered this;\n * however, there are times when we need to manually control\n * this behavior so we call the `setFocus` method on ion-app\n * which will let us explicitly set the elements to focus.\n */\n if (el.classList.contains('ion-focusable')) {\n const app = el.closest('ion-app');\n if (app) {\n app.setFocus([el]);\n }\n }\n};\n/**\n * This method is used for Ionic's input components that use Shadow DOM. In\n * order to properly label the inputs to work with screen readers, we need\n * to get the text content of the label outside of the shadow root and pass\n * it to the input inside of the shadow root.\n *\n * Referencing label elements by id from outside of the component is\n * impossible due to the shadow boundary, read more here:\n * https://developer.salesforce.com/blogs/2020/01/accessibility-for-web-components.html\n *\n * @param componentEl The shadow element that needs the aria label\n * @param inputId The unique identifier for the input\n */\nconst getAriaLabel = (componentEl, inputId) => {\n let labelText;\n // If the user provides their own label via the aria-labelledby attr\n // we should use that instead of looking for an ion-label\n const labelledBy = componentEl.getAttribute('aria-labelledby');\n // Grab the id off of the component in case they are using\n // a custom label using the label element\n const componentId = componentEl.id;\n let labelId = labelledBy !== null && labelledBy.trim() !== '' ? labelledBy : inputId + '-lbl';\n let label = labelledBy !== null && labelledBy.trim() !== '' ? document.getElementById(labelledBy) : findItemLabel(componentEl);\n if (label) {\n if (labelledBy === null) {\n label.id = labelId;\n }\n labelText = label.textContent;\n label.setAttribute('aria-hidden', 'true');\n // if there is no label, check to see if the user has provided\n // one by setting an id on the component and using the label element\n } else if (componentId.trim() !== '') {\n label = document.querySelector(`label[for=\"${componentId}\"]`);\n if (label) {\n if (label.id !== '') {\n labelId = label.id;\n } else {\n label.id = labelId = `${componentId}-lbl`;\n }\n labelText = label.textContent;\n }\n }\n return {\n label,\n labelId,\n labelText\n };\n};\n/**\n * This method is used to add a hidden input to a host element that contains\n * a Shadow DOM. It does not add the input inside of the Shadow root which\n * allows it to be picked up inside of forms. It should contain the same\n * values as the host element.\n *\n * @param always Add a hidden input even if the container does not use Shadow\n * @param container The element where the input will be added\n * @param name The name of the input\n * @param value The value of the input\n * @param disabled If true, the input is disabled\n */\nconst renderHiddenInput = (always, container, name, value, disabled) => {\n if (always || hasShadowDom(container)) {\n let input = container.querySelector('input.aux-input');\n if (!input) {\n input = container.ownerDocument.createElement('input');\n input.type = 'hidden';\n input.classList.add('aux-input');\n container.appendChild(input);\n }\n input.disabled = disabled;\n input.name = name;\n input.value = value || '';\n }\n};\nconst clamp = (min, n, max) => {\n return Math.max(min, Math.min(n, max));\n};\nconst assert = (actual, reason) => {\n if (!actual) {\n const message = 'ASSERT: ' + reason;\n console.error(message);\n debugger; // eslint-disable-line\n throw new Error(message);\n }\n};\nconst now = ev => {\n return ev.timeStamp || Date.now();\n};\nconst pointerCoord = ev => {\n // get X coordinates for either a mouse click\n // or a touch depending on the given event\n if (ev) {\n const changedTouches = ev.changedTouches;\n if (changedTouches && changedTouches.length > 0) {\n const touch = changedTouches[0];\n return {\n x: touch.clientX,\n y: touch.clientY\n };\n }\n if (ev.pageX !== undefined) {\n return {\n x: ev.pageX,\n y: ev.pageY\n };\n }\n }\n return {\n x: 0,\n y: 0\n };\n};\n/**\n * @hidden\n * Given a side, return if it should be on the end\n * based on the value of dir\n * @param side the side\n * @param isRTL whether the application dir is rtl\n */\nconst isEndSide = side => {\n const isRTL = document.dir === 'rtl';\n switch (side) {\n case 'start':\n return isRTL;\n case 'end':\n return !isRTL;\n default:\n throw new Error(`\"${side}\" is not a valid value for [side]. Use \"start\" or \"end\" instead.`);\n }\n};\nconst debounceEvent = (event, wait) => {\n const original = event._original || event;\n return {\n _original: event,\n emit: debounce(original.emit.bind(original), wait)\n };\n};\nconst debounce = (func, wait = 0) => {\n let timer;\n return (...args) => {\n clearTimeout(timer);\n timer = setTimeout(func, wait, ...args);\n };\n};\n/**\n * Check whether the two string maps are shallow equal.\n *\n * undefined is treated as an empty map.\n *\n * @returns whether the keys are the same and the values are shallow equal.\n */\nconst shallowEqualStringMap = (map1, map2) => {\n map1 !== null && map1 !== void 0 ? map1 : map1 = {};\n map2 !== null && map2 !== void 0 ? map2 : map2 = {};\n if (map1 === map2) {\n return true;\n }\n const keys1 = Object.keys(map1);\n if (keys1.length !== Object.keys(map2).length) {\n return false;\n }\n for (const k1 of keys1) {\n if (!(k1 in map2)) {\n return false;\n }\n if (map1[k1] !== map2[k1]) {\n return false;\n }\n }\n return true;\n};\n\n\n//# sourceURL=webpack://jandl/./node_modules/@ionic/core/components/helpers.js?\n}"); /***/ }), @@ -290,7 +290,7 @@ eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpac /***/ (function(__unused_webpack_module, __webpack_exports__, __webpack_require__) { "use strict"; -eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"I\": function() { return /* binding */ Icon; },\n/* harmony export */ \"d\": function() { return /* binding */ defineCustomElement; }\n/* harmony export */ });\n/* harmony import */ var _stencil_core_internal_client__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @stencil/core/internal/client */ \"./node_modules/@stencil/core/internal/client/index.js\");\n/*!\n * (C) Ionic http://ionicframework.com - MIT License\n */\n\nlet CACHED_MAP;\nconst getIconMap = () => {\n if (typeof window === 'undefined') {\n return new Map();\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 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);\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 => {\n const url = getIconMap().get(iconName);\n if (url) {\n return url;\n }\n return (0,_stencil_core_internal_client__WEBPACK_IMPORTED_MODULE_0__.getAssetPath)(`svg/${iconName}.svg`);\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 } else if (md && mode === 'md') {\n iconName = toLower(md);\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};\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 ioniconContent = new Map();\nconst requests = new Map();\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 // 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 } 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};\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%}:host(.flip-rtl) .icon-inner{-webkit-transform:scaleX(-1);transform:scaleX(-1)}:host(.icon-small){font-size:18px !important}:host(.icon-large){font-size:32px !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)}\";\nlet parser;\nconst Icon = /*@__PURE__*/(0,_stencil_core_internal_client__WEBPACK_IMPORTED_MODULE_0__.proxyCustomElement)(class extends _stencil_core_internal_client__WEBPACK_IMPORTED_MODULE_0__.HTMLElement {\n constructor() {\n super();\n this.__registerHost();\n this.__attachShadow();\n this.iconName = null;\n this.inheritedAttributes = {};\n this.isVisible = false;\n /**\n * The mode determines which platform styles to use.\n */\n this.mode = getIonMode();\n /**\n * If enabled, ion-icon will be loaded lazily when it's visible in the viewport.\n * Default, `false`.\n */\n this.lazy = false;\n /**\n * When set to `false`, SVG content that is HTTP fetched will not be checked\n * if the response SVG content has any `\n // ```\n // In this case if we do not unshadow here and use the value of the shadowing property, attributeChangedCallback\n // will be called with `newValue = \"some-value\"` and will set the shadowed property (this.someAttribute = \"another-value\")\n // to the value that was set inline i.e. \"some-value\" from above example. When\n // the connectedCallback attempts to unshadow it will use \"some-value\" as the initial value rather than \"another-value\"\n //\n // The case where the attribute was NOT set inline but was not set programmatically shall be handled/unshadowed\n // by connectedCallback as this attributeChangedCallback will not fire.\n //\n // https://developers.google.com/web/fundamentals/web-components/best-practices#lazy-properties\n //\n // TODO(STENCIL-16) we should think about whether or not we actually want to be reflecting the attributes to\n // properties here given that this goes against best practices outlined here\n // https://developers.google.com/web/fundamentals/web-components/best-practices#avoid-reentrancy\n if (this.hasOwnProperty(propName)) {\n newValue = this[propName];\n delete this[propName];\n } else if (prototype.hasOwnProperty(propName) && typeof this[propName] === 'number' && this[propName] == newValue) {\n // if the propName exists on the prototype of `Cstr`, this update may be a result of Stencil using native\n // APIs to reflect props as attributes. Calls to `setAttribute(someElement, propName)` will result in\n // `propName` to be converted to a `DOMString`, which may not be what we want for other primitive props.\n return;\n }\n this[propName] = newValue === null && typeof this[propName] === 'boolean' ? false : newValue;\n });\n };\n // create an array of attributes to observe\n // and also create a map of html attribute name to js property name\n Cstr.observedAttributes = members.filter(([_, m]) => m[0] & 15 /* MEMBER_FLAGS.HasAttribute */) // filter to only keep props that should match attributes\n .map(([propName, m]) => {\n const attrName = m[1] || propName;\n attrNameToPropName.set(attrName, propName);\n if (_stencil_core_internal_app_data__WEBPACK_IMPORTED_MODULE_1__.BUILD.reflect && m[0] & 512 /* MEMBER_FLAGS.ReflectAttr */) {\n cmpMeta.$attrsToReflect$.push([propName, attrName]);\n }\n return attrName;\n });\n }\n }\n return Cstr;\n};\nconst initializeComponent = async (elm, hostRef, cmpMeta, hmrVersionId, Cstr) => {\n // initializeComponent\n if ((_stencil_core_internal_app_data__WEBPACK_IMPORTED_MODULE_1__.BUILD.lazyLoad || _stencil_core_internal_app_data__WEBPACK_IMPORTED_MODULE_1__.BUILD.hydrateServerSide || _stencil_core_internal_app_data__WEBPACK_IMPORTED_MODULE_1__.BUILD.style) && (hostRef.$flags$ & 32 /* HOST_FLAGS.hasInitializedComponent */) === 0) {\n if (_stencil_core_internal_app_data__WEBPACK_IMPORTED_MODULE_1__.BUILD.lazyLoad || _stencil_core_internal_app_data__WEBPACK_IMPORTED_MODULE_1__.BUILD.hydrateClientSide) {\n // we haven't initialized this element yet\n hostRef.$flags$ |= 32 /* HOST_FLAGS.hasInitializedComponent */;\n // lazy loaded components\n // request the component's implementation to be\n // wired up with the host element\n Cstr = loadModule(cmpMeta, hostRef, hmrVersionId);\n if (Cstr.then) {\n // Await creates a micro-task avoid if possible\n const endLoad = uniqueTime(`st:load:${cmpMeta.$tagName$}:${hostRef.$modeName$}`, `[Stencil] Load module for <${cmpMeta.$tagName$}>`);\n Cstr = await Cstr;\n endLoad();\n }\n if ((_stencil_core_internal_app_data__WEBPACK_IMPORTED_MODULE_1__.BUILD.isDev || _stencil_core_internal_app_data__WEBPACK_IMPORTED_MODULE_1__.BUILD.isDebug) && !Cstr) {\n throw new Error(`Constructor for \"${cmpMeta.$tagName$}#${hostRef.$modeName$}\" was not found`);\n }\n if (_stencil_core_internal_app_data__WEBPACK_IMPORTED_MODULE_1__.BUILD.member && !Cstr.isProxied) {\n // we've never proxied this Constructor before\n // let's add the getters/setters to its prototype before\n // the first time we create an instance of the implementation\n if (_stencil_core_internal_app_data__WEBPACK_IMPORTED_MODULE_1__.BUILD.watchCallback) {\n cmpMeta.$watchers$ = Cstr.watchers;\n }\n proxyComponent(Cstr, cmpMeta, 2 /* PROXY_FLAGS.proxyState */);\n Cstr.isProxied = true;\n }\n const endNewInstance = createTime('createInstance', cmpMeta.$tagName$);\n // ok, time to construct the instance\n // but let's keep track of when we start and stop\n // so that the getters/setters don't incorrectly step on data\n if (_stencil_core_internal_app_data__WEBPACK_IMPORTED_MODULE_1__.BUILD.member) {\n hostRef.$flags$ |= 8 /* HOST_FLAGS.isConstructingInstance */;\n }\n // construct the lazy-loaded component implementation\n // passing the hostRef is very important during\n // construction in order to directly wire together the\n // host element and the lazy-loaded instance\n try {\n new Cstr(hostRef);\n } catch (e) {\n consoleError(e);\n }\n if (_stencil_core_internal_app_data__WEBPACK_IMPORTED_MODULE_1__.BUILD.member) {\n hostRef.$flags$ &= ~8 /* HOST_FLAGS.isConstructingInstance */;\n }\n\n if (_stencil_core_internal_app_data__WEBPACK_IMPORTED_MODULE_1__.BUILD.watchCallback) {\n hostRef.$flags$ |= 128 /* HOST_FLAGS.isWatchReady */;\n }\n\n endNewInstance();\n fireConnectedCallback(hostRef.$lazyInstance$);\n } else {\n // sync constructor component\n Cstr = elm.constructor;\n hostRef.$flags$ |= 32 /* HOST_FLAGS.hasInitializedComponent */;\n // wait for the CustomElementRegistry to mark the component as ready before setting `isWatchReady`. Otherwise,\n // watchers may fire prematurely if `customElements.get()`/`customElements.whenDefined()` resolves _before_\n // Stencil has completed instantiating the component.\n customElements.whenDefined(cmpMeta.$tagName$).then(() => hostRef.$flags$ |= 128 /* HOST_FLAGS.isWatchReady */);\n }\n\n if (_stencil_core_internal_app_data__WEBPACK_IMPORTED_MODULE_1__.BUILD.style && Cstr.style) {\n // this component has styles but we haven't registered them yet\n let style = Cstr.style;\n if (_stencil_core_internal_app_data__WEBPACK_IMPORTED_MODULE_1__.BUILD.mode && typeof style !== 'string') {\n style = style[hostRef.$modeName$ = computeMode(elm)];\n if (_stencil_core_internal_app_data__WEBPACK_IMPORTED_MODULE_1__.BUILD.hydrateServerSide && hostRef.$modeName$) {\n elm.setAttribute('s-mode', hostRef.$modeName$);\n }\n }\n const scopeId = getScopeId(cmpMeta, hostRef.$modeName$);\n if (!styles.has(scopeId)) {\n const endRegisterStyles = createTime('registerStyles', cmpMeta.$tagName$);\n if (!_stencil_core_internal_app_data__WEBPACK_IMPORTED_MODULE_1__.BUILD.hydrateServerSide && _stencil_core_internal_app_data__WEBPACK_IMPORTED_MODULE_1__.BUILD.shadowDom && _stencil_core_internal_app_data__WEBPACK_IMPORTED_MODULE_1__.BUILD.shadowDomShim && cmpMeta.$flags$ & 8 /* CMP_FLAGS.needsShadowDomShim */) {\n style = await __webpack_require__.e(/*! import() */ \"node_modules_stencil_core_internal_client_shadow-css_js\").then(__webpack_require__.bind(__webpack_require__, /*! ./shadow-css.js */ \"./node_modules/@stencil/core/internal/client/shadow-css.js\")).then(m => m.scopeCss(style, scopeId, false));\n }\n registerStyle(scopeId, style, !!(cmpMeta.$flags$ & 1 /* CMP_FLAGS.shadowDomEncapsulation */));\n endRegisterStyles();\n }\n }\n }\n // we've successfully created a lazy instance\n const ancestorComponent = hostRef.$ancestorComponent$;\n const schedule = () => scheduleUpdate(hostRef, true);\n if (_stencil_core_internal_app_data__WEBPACK_IMPORTED_MODULE_1__.BUILD.asyncLoading && ancestorComponent && ancestorComponent['s-rc']) {\n // this is the initial load and this component it has an ancestor component\n // but the ancestor component has NOT fired its will update lifecycle yet\n // so let's just cool our jets and wait for the ancestor to continue first\n // this will get fired off when the ancestor component\n // finally gets around to rendering its lazy self\n // fire off the initial update\n ancestorComponent['s-rc'].push(schedule);\n } else {\n schedule();\n }\n};\nconst fireConnectedCallback = instance => {\n if (_stencil_core_internal_app_data__WEBPACK_IMPORTED_MODULE_1__.BUILD.lazyLoad && _stencil_core_internal_app_data__WEBPACK_IMPORTED_MODULE_1__.BUILD.connectedCallback) {\n safeCall(instance, 'connectedCallback');\n }\n};\nconst connectedCallback = elm => {\n if ((plt.$flags$ & 1 /* PLATFORM_FLAGS.isTmpDisconnected */) === 0) {\n const hostRef = getHostRef(elm);\n const cmpMeta = hostRef.$cmpMeta$;\n const endConnected = createTime('connectedCallback', cmpMeta.$tagName$);\n if (_stencil_core_internal_app_data__WEBPACK_IMPORTED_MODULE_1__.BUILD.hostListenerTargetParent) {\n // only run if we have listeners being attached to a parent\n addHostEventListeners(elm, hostRef, cmpMeta.$listeners$, true);\n }\n if (!(hostRef.$flags$ & 1 /* HOST_FLAGS.hasConnected */)) {\n // first time this component has connected\n hostRef.$flags$ |= 1 /* HOST_FLAGS.hasConnected */;\n let hostId;\n if (_stencil_core_internal_app_data__WEBPACK_IMPORTED_MODULE_1__.BUILD.hydrateClientSide) {\n hostId = elm.getAttribute(HYDRATE_ID);\n if (hostId) {\n if (_stencil_core_internal_app_data__WEBPACK_IMPORTED_MODULE_1__.BUILD.shadowDom && supportsShadow && cmpMeta.$flags$ & 1 /* CMP_FLAGS.shadowDomEncapsulation */) {\n const scopeId = _stencil_core_internal_app_data__WEBPACK_IMPORTED_MODULE_1__.BUILD.mode ? addStyle(elm.shadowRoot, cmpMeta, elm.getAttribute('s-mode')) : addStyle(elm.shadowRoot, cmpMeta);\n elm.classList.remove(scopeId + '-h', scopeId + '-s');\n }\n initializeClientHydrate(elm, cmpMeta.$tagName$, hostId, hostRef);\n }\n }\n if (_stencil_core_internal_app_data__WEBPACK_IMPORTED_MODULE_1__.BUILD.slotRelocation && !hostId) {\n // initUpdate\n // if the slot polyfill is required we'll need to put some nodes\n // in here to act as original content anchors as we move nodes around\n // host element has been connected to the DOM\n if (_stencil_core_internal_app_data__WEBPACK_IMPORTED_MODULE_1__.BUILD.hydrateServerSide || (_stencil_core_internal_app_data__WEBPACK_IMPORTED_MODULE_1__.BUILD.slot || _stencil_core_internal_app_data__WEBPACK_IMPORTED_MODULE_1__.BUILD.shadowDom) && cmpMeta.$flags$ & (4 /* CMP_FLAGS.hasSlotRelocation */ | 8 /* CMP_FLAGS.needsShadowDomShim */)) {\n setContentReference(elm);\n }\n }\n if (_stencil_core_internal_app_data__WEBPACK_IMPORTED_MODULE_1__.BUILD.asyncLoading) {\n // find the first ancestor component (if there is one) and register\n // this component as one of the actively loading child components for its ancestor\n let ancestorComponent = elm;\n while (ancestorComponent = ancestorComponent.parentNode || ancestorComponent.host) {\n // climb up the ancestors looking for the first\n // component that hasn't finished its lifecycle update yet\n if (_stencil_core_internal_app_data__WEBPACK_IMPORTED_MODULE_1__.BUILD.hydrateClientSide && ancestorComponent.nodeType === 1 /* NODE_TYPE.ElementNode */ && ancestorComponent.hasAttribute('s-id') && ancestorComponent['s-p'] || ancestorComponent['s-p']) {\n // we found this components first ancestor component\n // keep a reference to this component's ancestor component\n attachToAncestor(hostRef, hostRef.$ancestorComponent$ = ancestorComponent);\n break;\n }\n }\n }\n // Lazy properties\n // https://developers.google.com/web/fundamentals/web-components/best-practices#lazy-properties\n if (_stencil_core_internal_app_data__WEBPACK_IMPORTED_MODULE_1__.BUILD.prop && !_stencil_core_internal_app_data__WEBPACK_IMPORTED_MODULE_1__.BUILD.hydrateServerSide && cmpMeta.$members$) {\n Object.entries(cmpMeta.$members$).map(([memberName, [memberFlags]]) => {\n if (memberFlags & 31 /* MEMBER_FLAGS.Prop */ && elm.hasOwnProperty(memberName)) {\n const value = elm[memberName];\n delete elm[memberName];\n elm[memberName] = value;\n }\n });\n }\n if (_stencil_core_internal_app_data__WEBPACK_IMPORTED_MODULE_1__.BUILD.initializeNextTick) {\n // connectedCallback, taskQueue, initialLoad\n // angular sets attribute AFTER connectCallback\n // https://github.com/angular/angular/issues/18909\n // https://github.com/angular/angular/issues/19940\n nextTick(() => initializeComponent(elm, hostRef, cmpMeta));\n } else {\n initializeComponent(elm, hostRef, cmpMeta);\n }\n } else {\n // not the first time this has connected\n // reattach any event listeners to the host\n // since they would have been removed when disconnected\n addHostEventListeners(elm, hostRef, cmpMeta.$listeners$, false);\n // fire off connectedCallback() on component instance\n fireConnectedCallback(hostRef.$lazyInstance$);\n }\n endConnected();\n }\n};\nconst setContentReference = elm => {\n // only required when we're NOT using native shadow dom (slot)\n // or this browser doesn't support native shadow dom\n // and this host element was NOT created with SSR\n // let's pick out the inner content for slot projection\n // create a node to represent where the original\n // content was first placed, which is useful later on\n const contentRefElm = elm['s-cr'] = doc.createComment(_stencil_core_internal_app_data__WEBPACK_IMPORTED_MODULE_1__.BUILD.isDebug ? `content-ref (host=${elm.localName})` : '');\n contentRefElm['s-cn'] = true;\n elm.insertBefore(contentRefElm, elm.firstChild);\n};\nconst disconnectedCallback = elm => {\n if ((plt.$flags$ & 1 /* PLATFORM_FLAGS.isTmpDisconnected */) === 0) {\n const hostRef = getHostRef(elm);\n const instance = _stencil_core_internal_app_data__WEBPACK_IMPORTED_MODULE_1__.BUILD.lazyLoad ? hostRef.$lazyInstance$ : elm;\n if (_stencil_core_internal_app_data__WEBPACK_IMPORTED_MODULE_1__.BUILD.hostListener) {\n if (hostRef.$rmListeners$) {\n hostRef.$rmListeners$.map(rmListener => rmListener());\n hostRef.$rmListeners$ = undefined;\n }\n }\n // clear CSS var-shim tracking\n if (_stencil_core_internal_app_data__WEBPACK_IMPORTED_MODULE_1__.BUILD.cssVarShim && plt.$cssShim$) {\n plt.$cssShim$.removeHost(elm);\n }\n if (_stencil_core_internal_app_data__WEBPACK_IMPORTED_MODULE_1__.BUILD.lazyLoad && _stencil_core_internal_app_data__WEBPACK_IMPORTED_MODULE_1__.BUILD.disconnectedCallback) {\n safeCall(instance, 'disconnectedCallback');\n }\n if (_stencil_core_internal_app_data__WEBPACK_IMPORTED_MODULE_1__.BUILD.cmpDidUnload) {\n safeCall(instance, 'componentDidUnload');\n }\n }\n};\nconst defineCustomElement = (Cstr, compactMeta) => {\n customElements.define(compactMeta[1], proxyCustomElement(Cstr, compactMeta));\n};\nconst proxyCustomElement = (Cstr, compactMeta) => {\n const cmpMeta = {\n $flags$: compactMeta[0],\n $tagName$: compactMeta[1]\n };\n if (_stencil_core_internal_app_data__WEBPACK_IMPORTED_MODULE_1__.BUILD.member) {\n cmpMeta.$members$ = compactMeta[2];\n }\n if (_stencil_core_internal_app_data__WEBPACK_IMPORTED_MODULE_1__.BUILD.hostListener) {\n cmpMeta.$listeners$ = compactMeta[3];\n }\n if (_stencil_core_internal_app_data__WEBPACK_IMPORTED_MODULE_1__.BUILD.watchCallback) {\n cmpMeta.$watchers$ = Cstr.$watchers$;\n }\n if (_stencil_core_internal_app_data__WEBPACK_IMPORTED_MODULE_1__.BUILD.reflect) {\n cmpMeta.$attrsToReflect$ = [];\n }\n if (_stencil_core_internal_app_data__WEBPACK_IMPORTED_MODULE_1__.BUILD.shadowDom && !supportsShadow && cmpMeta.$flags$ & 1 /* CMP_FLAGS.shadowDomEncapsulation */) {\n cmpMeta.$flags$ |= 8 /* CMP_FLAGS.needsShadowDomShim */;\n }\n\n const originalConnectedCallback = Cstr.prototype.connectedCallback;\n const originalDisconnectedCallback = Cstr.prototype.disconnectedCallback;\n Object.assign(Cstr.prototype, {\n __registerHost() {\n registerHost(this, cmpMeta);\n },\n connectedCallback() {\n connectedCallback(this);\n if (_stencil_core_internal_app_data__WEBPACK_IMPORTED_MODULE_1__.BUILD.connectedCallback && originalConnectedCallback) {\n originalConnectedCallback.call(this);\n }\n },\n disconnectedCallback() {\n disconnectedCallback(this);\n if (_stencil_core_internal_app_data__WEBPACK_IMPORTED_MODULE_1__.BUILD.disconnectedCallback && originalDisconnectedCallback) {\n originalDisconnectedCallback.call(this);\n }\n },\n __attachShadow() {\n if (supportsShadow) {\n if (_stencil_core_internal_app_data__WEBPACK_IMPORTED_MODULE_1__.BUILD.shadowDelegatesFocus) {\n this.attachShadow({\n mode: 'open',\n delegatesFocus: !!(cmpMeta.$flags$ & 16 /* CMP_FLAGS.shadowDelegatesFocus */)\n });\n } else {\n this.attachShadow({\n mode: 'open'\n });\n }\n } else {\n this.shadowRoot = this;\n }\n }\n });\n Cstr.is = cmpMeta.$tagName$;\n return proxyComponent(Cstr, cmpMeta, 1 /* PROXY_FLAGS.isElementConstructor */ | 2 /* PROXY_FLAGS.proxyState */);\n};\n\nconst forceModeUpdate = elm => {\n if (_stencil_core_internal_app_data__WEBPACK_IMPORTED_MODULE_1__.BUILD.style && _stencil_core_internal_app_data__WEBPACK_IMPORTED_MODULE_1__.BUILD.mode && !_stencil_core_internal_app_data__WEBPACK_IMPORTED_MODULE_1__.BUILD.lazyLoad) {\n const mode = computeMode(elm);\n const hostRef = getHostRef(elm);\n if (hostRef.$modeName$ !== mode) {\n const cmpMeta = hostRef.$cmpMeta$;\n const oldScopeId = elm['s-sc'];\n const scopeId = getScopeId(cmpMeta, mode);\n const style = elm.constructor.style[mode];\n const flags = cmpMeta.$flags$;\n if (style) {\n if (!styles.has(scopeId)) {\n registerStyle(scopeId, style, !!(flags & 1 /* CMP_FLAGS.shadowDomEncapsulation */));\n }\n\n hostRef.$modeName$ = mode;\n elm.classList.remove(oldScopeId + '-h', oldScopeId + '-s');\n attachStyles(hostRef);\n forceUpdate(elm);\n }\n }\n }\n};\nconst patchCloneNode = HostElementPrototype => {\n const orgCloneNode = HostElementPrototype.cloneNode;\n HostElementPrototype.cloneNode = function (deep) {\n const srcNode = this;\n const isShadowDom = _stencil_core_internal_app_data__WEBPACK_IMPORTED_MODULE_1__.BUILD.shadowDom ? srcNode.shadowRoot && supportsShadow : false;\n const clonedNode = orgCloneNode.call(srcNode, isShadowDom ? deep : false);\n if (_stencil_core_internal_app_data__WEBPACK_IMPORTED_MODULE_1__.BUILD.slot && !isShadowDom && deep) {\n let i = 0;\n let slotted, nonStencilNode;\n const stencilPrivates = ['s-id', 's-cr', 's-lr', 's-rc', 's-sc', 's-p', 's-cn', 's-sr', 's-sn', 's-hn', 's-ol', 's-nr', 's-si'];\n for (; i < srcNode.childNodes.length; i++) {\n slotted = srcNode.childNodes[i]['s-nr'];\n nonStencilNode = stencilPrivates.every(privateField => !srcNode.childNodes[i][privateField]);\n if (slotted) {\n if (_stencil_core_internal_app_data__WEBPACK_IMPORTED_MODULE_1__.BUILD.appendChildSlotFix && clonedNode.__appendChild) {\n clonedNode.__appendChild(slotted.cloneNode(true));\n } else {\n clonedNode.appendChild(slotted.cloneNode(true));\n }\n }\n if (nonStencilNode) {\n clonedNode.appendChild(srcNode.childNodes[i].cloneNode(true));\n }\n }\n }\n return clonedNode;\n };\n};\nconst patchSlotAppendChild = HostElementPrototype => {\n HostElementPrototype.__appendChild = HostElementPrototype.appendChild;\n HostElementPrototype.appendChild = function (newChild) {\n const slotName = newChild['s-sn'] = getSlotName(newChild);\n const slotNode = getHostSlotNode(this.childNodes, slotName);\n if (slotNode) {\n const slotChildNodes = getHostSlotChildNodes(slotNode, slotName);\n const appendAfter = slotChildNodes[slotChildNodes.length - 1];\n return appendAfter.parentNode.insertBefore(newChild, appendAfter.nextSibling);\n }\n return this.__appendChild(newChild);\n };\n};\n/**\n * Patches the text content of an unnamed slotted node inside a scoped component\n * @param hostElementPrototype the `Element` to be patched\n * @param cmpMeta component runtime metadata used to determine if the component should be patched or not\n */\nconst patchTextContent = (hostElementPrototype, cmpMeta) => {\n if (_stencil_core_internal_app_data__WEBPACK_IMPORTED_MODULE_1__.BUILD.scoped && cmpMeta.$flags$ & 2 /* CMP_FLAGS.scopedCssEncapsulation */) {\n const descriptor = Object.getOwnPropertyDescriptor(Node.prototype, 'textContent');\n Object.defineProperty(hostElementPrototype, '__textContent', descriptor);\n Object.defineProperty(hostElementPrototype, 'textContent', {\n get() {\n var _a;\n // get the 'default slot', which would be the first slot in a shadow tree (if we were using one), whose name is\n // the empty string\n const slotNode = getHostSlotNode(this.childNodes, '');\n // when a slot node is found, the textContent _may_ be found in the next sibling (text) node, depending on how\n // nodes were reordered during the vdom render. first try to get the text content from the sibling.\n if (((_a = slotNode === null || slotNode === void 0 ? void 0 : slotNode.nextSibling) === null || _a === void 0 ? void 0 : _a.nodeType) === 3 /* NODE_TYPES.TEXT_NODE */) {\n return slotNode.nextSibling.textContent;\n } else if (slotNode) {\n return slotNode.textContent;\n } else {\n // fallback to the original implementation\n return this.__textContent;\n }\n },\n set(value) {\n var _a;\n // get the 'default slot', which would be the first slot in a shadow tree (if we were using one), whose name is\n // the empty string\n const slotNode = getHostSlotNode(this.childNodes, '');\n // when a slot node is found, the textContent _may_ need to be placed in the next sibling (text) node,\n // depending on how nodes were reordered during the vdom render. first try to set the text content on the\n // sibling.\n if (((_a = slotNode === null || slotNode === void 0 ? void 0 : slotNode.nextSibling) === null || _a === void 0 ? void 0 : _a.nodeType) === 3 /* NODE_TYPES.TEXT_NODE */) {\n slotNode.nextSibling.textContent = value;\n } else if (slotNode) {\n slotNode.textContent = value;\n } else {\n // we couldn't find a slot, but that doesn't mean that there isn't one. if this check ran before the DOM\n // loaded, we could have missed it. check for a content reference element on the scoped component and insert\n // it there\n this.__textContent = value;\n const contentRefElm = this['s-cr'];\n if (contentRefElm) {\n this.insertBefore(contentRefElm, this.firstChild);\n }\n }\n }\n });\n }\n};\nconst patchChildSlotNodes = (elm, cmpMeta) => {\n class FakeNodeList extends Array {\n item(n) {\n return this[n];\n }\n }\n if (cmpMeta.$flags$ & 8 /* CMP_FLAGS.needsShadowDomShim */) {\n const childNodesFn = elm.__lookupGetter__('childNodes');\n Object.defineProperty(elm, 'children', {\n get() {\n return this.childNodes.map(n => n.nodeType === 1);\n }\n });\n Object.defineProperty(elm, 'childElementCount', {\n get() {\n return elm.children.length;\n }\n });\n Object.defineProperty(elm, 'childNodes', {\n get() {\n const childNodes = childNodesFn.call(this);\n if ((plt.$flags$ & 1 /* PLATFORM_FLAGS.isTmpDisconnected */) === 0 && getHostRef(this).$flags$ & 2 /* HOST_FLAGS.hasRendered */) {\n const result = new FakeNodeList();\n for (let i = 0; i < childNodes.length; i++) {\n const slot = childNodes[i]['s-nr'];\n if (slot) {\n result.push(slot);\n }\n }\n return result;\n }\n return FakeNodeList.from(childNodes);\n }\n });\n }\n};\nconst getSlotName = node => node['s-sn'] || node.nodeType === 1 && node.getAttribute('slot') || '';\n/**\n * Recursively searches a series of child nodes for a slot with the provided name.\n * @param childNodes the nodes to search for a slot with a specific name.\n * @param slotName the name of the slot to match on.\n * @returns a reference to the slot node that matches the provided name, `null` otherwise\n */\nconst getHostSlotNode = (childNodes, slotName) => {\n let i = 0;\n let childNode;\n for (; i < childNodes.length; i++) {\n childNode = childNodes[i];\n if (childNode['s-sr'] && childNode['s-sn'] === slotName) {\n return childNode;\n }\n childNode = getHostSlotNode(childNode.childNodes, slotName);\n if (childNode) {\n return childNode;\n }\n }\n return null;\n};\nconst getHostSlotChildNodes = (n, slotName) => {\n const childNodes = [n];\n while ((n = n.nextSibling) && n['s-sn'] === slotName) {\n childNodes.push(n);\n }\n return childNodes;\n};\nconst hmrStart = (elm, cmpMeta, hmrVersionId) => {\n // ¯\\_(ツ)_/¯\n const hostRef = getHostRef(elm);\n // reset state flags to only have been connected\n hostRef.$flags$ = 1 /* HOST_FLAGS.hasConnected */;\n // TODO\n // detatch any event listeners that may have been added\n // because we're not passing an exact event name it'll\n // remove all of this element's event, which is good\n // create a callback for when this component finishes hmr\n elm['s-hmr-load'] = () => {\n // finished hmr for this element\n delete elm['s-hmr-load'];\n };\n // re-initialize the component\n initializeComponent(elm, hostRef, cmpMeta, hmrVersionId);\n};\nconst bootstrapLazy = (lazyBundles, options = {}) => {\n if (_stencil_core_internal_app_data__WEBPACK_IMPORTED_MODULE_1__.BUILD.profile && performance.mark) {\n performance.mark('st:app:start');\n }\n installDevTools();\n const endBootstrap = createTime('bootstrapLazy');\n const cmpTags = [];\n const exclude = options.exclude || [];\n const customElements = win.customElements;\n const head = doc.head;\n const metaCharset = /*@__PURE__*/head.querySelector('meta[charset]');\n const visibilityStyle = /*@__PURE__*/doc.createElement('style');\n const deferredConnectedCallbacks = [];\n const styles = /*@__PURE__*/doc.querySelectorAll(`[${HYDRATED_STYLE_ID}]`);\n let appLoadFallback;\n let isBootstrapping = true;\n let i = 0;\n Object.assign(plt, options);\n plt.$resourcesUrl$ = new URL(options.resourcesUrl || './', doc.baseURI).href;\n if (_stencil_core_internal_app_data__WEBPACK_IMPORTED_MODULE_1__.BUILD.asyncQueue) {\n if (options.syncQueue) {\n plt.$flags$ |= 4 /* PLATFORM_FLAGS.queueSync */;\n }\n }\n\n if (_stencil_core_internal_app_data__WEBPACK_IMPORTED_MODULE_1__.BUILD.hydrateClientSide) {\n // If the app is already hydrated there is not point to disable the\n // async queue. This will improve the first input delay\n plt.$flags$ |= 2 /* PLATFORM_FLAGS.appLoaded */;\n }\n\n if (_stencil_core_internal_app_data__WEBPACK_IMPORTED_MODULE_1__.BUILD.hydrateClientSide && _stencil_core_internal_app_data__WEBPACK_IMPORTED_MODULE_1__.BUILD.shadowDom) {\n for (; i < styles.length; i++) {\n registerStyle(styles[i].getAttribute(HYDRATED_STYLE_ID), convertScopedToShadow(styles[i].innerHTML), true);\n }\n }\n lazyBundles.map(lazyBundle => {\n lazyBundle[1].map(compactMeta => {\n const cmpMeta = {\n $flags$: compactMeta[0],\n $tagName$: compactMeta[1],\n $members$: compactMeta[2],\n $listeners$: compactMeta[3]\n };\n if (_stencil_core_internal_app_data__WEBPACK_IMPORTED_MODULE_1__.BUILD.member) {\n cmpMeta.$members$ = compactMeta[2];\n }\n if (_stencil_core_internal_app_data__WEBPACK_IMPORTED_MODULE_1__.BUILD.hostListener) {\n cmpMeta.$listeners$ = compactMeta[3];\n }\n if (_stencil_core_internal_app_data__WEBPACK_IMPORTED_MODULE_1__.BUILD.reflect) {\n cmpMeta.$attrsToReflect$ = [];\n }\n if (_stencil_core_internal_app_data__WEBPACK_IMPORTED_MODULE_1__.BUILD.watchCallback) {\n cmpMeta.$watchers$ = {};\n }\n if (_stencil_core_internal_app_data__WEBPACK_IMPORTED_MODULE_1__.BUILD.shadowDom && !supportsShadow && cmpMeta.$flags$ & 1 /* CMP_FLAGS.shadowDomEncapsulation */) {\n cmpMeta.$flags$ |= 8 /* CMP_FLAGS.needsShadowDomShim */;\n }\n\n const tagName = _stencil_core_internal_app_data__WEBPACK_IMPORTED_MODULE_1__.BUILD.transformTagName && options.transformTagName ? options.transformTagName(cmpMeta.$tagName$) : cmpMeta.$tagName$;\n const HostElement = class extends HTMLElement {\n // StencilLazyHost\n constructor(self) {\n // @ts-ignore\n super(self);\n self = this;\n registerHost(self, cmpMeta);\n if (_stencil_core_internal_app_data__WEBPACK_IMPORTED_MODULE_1__.BUILD.shadowDom && cmpMeta.$flags$ & 1 /* CMP_FLAGS.shadowDomEncapsulation */) {\n // this component is using shadow dom\n // and this browser supports shadow dom\n // add the read-only property \"shadowRoot\" to the host element\n // adding the shadow root build conditionals to minimize runtime\n if (supportsShadow) {\n if (_stencil_core_internal_app_data__WEBPACK_IMPORTED_MODULE_1__.BUILD.shadowDelegatesFocus) {\n self.attachShadow({\n mode: 'open',\n delegatesFocus: !!(cmpMeta.$flags$ & 16 /* CMP_FLAGS.shadowDelegatesFocus */)\n });\n } else {\n self.attachShadow({\n mode: 'open'\n });\n }\n } else if (!_stencil_core_internal_app_data__WEBPACK_IMPORTED_MODULE_1__.BUILD.hydrateServerSide && !('shadowRoot' in self)) {\n self.shadowRoot = self;\n }\n }\n if (_stencil_core_internal_app_data__WEBPACK_IMPORTED_MODULE_1__.BUILD.slotChildNodesFix) {\n patchChildSlotNodes(self, cmpMeta);\n }\n }\n connectedCallback() {\n if (appLoadFallback) {\n clearTimeout(appLoadFallback);\n appLoadFallback = null;\n }\n if (isBootstrapping) {\n // connectedCallback will be processed once all components have been registered\n deferredConnectedCallbacks.push(this);\n } else {\n plt.jmp(() => connectedCallback(this));\n }\n }\n disconnectedCallback() {\n plt.jmp(() => disconnectedCallback(this));\n }\n componentOnReady() {\n return getHostRef(this).$onReadyPromise$;\n }\n };\n if (_stencil_core_internal_app_data__WEBPACK_IMPORTED_MODULE_1__.BUILD.cloneNodeFix) {\n patchCloneNode(HostElement.prototype);\n }\n if (_stencil_core_internal_app_data__WEBPACK_IMPORTED_MODULE_1__.BUILD.appendChildSlotFix) {\n patchSlotAppendChild(HostElement.prototype);\n }\n if (_stencil_core_internal_app_data__WEBPACK_IMPORTED_MODULE_1__.BUILD.hotModuleReplacement) {\n HostElement.prototype['s-hmr'] = function (hmrVersionId) {\n hmrStart(this, cmpMeta, hmrVersionId);\n };\n }\n if (_stencil_core_internal_app_data__WEBPACK_IMPORTED_MODULE_1__.BUILD.scopedSlotTextContentFix) {\n patchTextContent(HostElement.prototype, cmpMeta);\n }\n cmpMeta.$lazyBundleId$ = lazyBundle[0];\n if (!exclude.includes(tagName) && !customElements.get(tagName)) {\n cmpTags.push(tagName);\n customElements.define(tagName, proxyComponent(HostElement, cmpMeta, 1 /* PROXY_FLAGS.isElementConstructor */));\n }\n });\n });\n\n if (_stencil_core_internal_app_data__WEBPACK_IMPORTED_MODULE_1__.BUILD.invisiblePrehydration && (_stencil_core_internal_app_data__WEBPACK_IMPORTED_MODULE_1__.BUILD.hydratedClass || _stencil_core_internal_app_data__WEBPACK_IMPORTED_MODULE_1__.BUILD.hydratedAttribute)) {\n visibilityStyle.innerHTML = cmpTags + HYDRATED_CSS;\n visibilityStyle.setAttribute('data-styles', '');\n head.insertBefore(visibilityStyle, metaCharset ? metaCharset.nextSibling : head.firstChild);\n }\n // Process deferred connectedCallbacks now all components have been registered\n isBootstrapping = false;\n if (deferredConnectedCallbacks.length) {\n deferredConnectedCallbacks.map(host => host.connectedCallback());\n } else {\n if (_stencil_core_internal_app_data__WEBPACK_IMPORTED_MODULE_1__.BUILD.profile) {\n plt.jmp(() => appLoadFallback = setTimeout(appDidLoad, 30, 'timeout'));\n } else {\n plt.jmp(() => appLoadFallback = setTimeout(appDidLoad, 30));\n }\n }\n // Fallback appLoad event\n endBootstrap();\n};\nconst getConnect = (_ref, tagName) => {\n const componentOnReady = () => {\n let elm = doc.querySelector(tagName);\n if (!elm) {\n elm = doc.createElement(tagName);\n doc.body.appendChild(elm);\n }\n return typeof elm.componentOnReady === 'function' ? elm.componentOnReady() : Promise.resolve(elm);\n };\n const create = (...args) => {\n return componentOnReady().then(el => el.create(...args));\n };\n return {\n create,\n componentOnReady\n };\n};\nconst getContext = (_elm, context) => {\n if (context in Context) {\n return Context[context];\n } else if (context === 'window') {\n return win;\n } else if (context === 'document') {\n return doc;\n } else if (context === 'isServer' || context === 'isPrerender') {\n return _stencil_core_internal_app_data__WEBPACK_IMPORTED_MODULE_1__.BUILD.hydrateServerSide ? true : false;\n } else if (context === 'isClient') {\n return _stencil_core_internal_app_data__WEBPACK_IMPORTED_MODULE_1__.BUILD.hydrateServerSide ? false : true;\n } else if (context === 'resourcesUrl' || context === 'publicPath') {\n return getAssetPath('.');\n } else if (context === 'queue') {\n return {\n write: writeTask,\n read: readTask,\n tick: {\n then(cb) {\n return nextTick(cb);\n }\n }\n };\n }\n return undefined;\n};\nconst Fragment = (_, children) => children;\nconst addHostEventListeners = (elm, hostRef, listeners, attachParentListeners) => {\n if (_stencil_core_internal_app_data__WEBPACK_IMPORTED_MODULE_1__.BUILD.hostListener && listeners) {\n // this is called immediately within the element's constructor\n // initialize our event listeners on the host element\n // we do this now so that we can listen to events that may\n // have fired even before the instance is ready\n if (_stencil_core_internal_app_data__WEBPACK_IMPORTED_MODULE_1__.BUILD.hostListenerTargetParent) {\n // this component may have event listeners that should be attached to the parent\n if (attachParentListeners) {\n // this is being ran from within the connectedCallback\n // which is important so that we know the host element actually has a parent element\n // filter out the listeners to only have the ones that ARE being attached to the parent\n listeners = listeners.filter(([flags]) => flags & 32 /* LISTENER_FLAGS.TargetParent */);\n } else {\n // this is being ran from within the component constructor\n // everything BUT the parent element listeners should be attached at this time\n // filter out the listeners that are NOT being attached to the parent\n listeners = listeners.filter(([flags]) => !(flags & 32 /* LISTENER_FLAGS.TargetParent */));\n }\n }\n\n listeners.map(([flags, name, method]) => {\n const target = _stencil_core_internal_app_data__WEBPACK_IMPORTED_MODULE_1__.BUILD.hostListenerTarget ? getHostListenerTarget(elm, flags) : elm;\n const handler = hostListenerProxy(hostRef, method);\n const opts = hostListenerOpts(flags);\n plt.ael(target, name, handler, opts);\n (hostRef.$rmListeners$ = hostRef.$rmListeners$ || []).push(() => plt.rel(target, name, handler, opts));\n });\n }\n};\nconst hostListenerProxy = (hostRef, methodName) => ev => {\n try {\n if (_stencil_core_internal_app_data__WEBPACK_IMPORTED_MODULE_1__.BUILD.lazyLoad) {\n if (hostRef.$flags$ & 256 /* HOST_FLAGS.isListenReady */) {\n // instance is ready, let's call it's member method for this event\n hostRef.$lazyInstance$[methodName](ev);\n } else {\n (hostRef.$queuedListeners$ = hostRef.$queuedListeners$ || []).push([methodName, ev]);\n }\n } else {\n hostRef.$hostElement$[methodName](ev);\n }\n } catch (e) {\n consoleError(e);\n }\n};\nconst getHostListenerTarget = (elm, flags) => {\n if (_stencil_core_internal_app_data__WEBPACK_IMPORTED_MODULE_1__.BUILD.hostListenerTargetDocument && flags & 4 /* LISTENER_FLAGS.TargetDocument */) return doc;\n if (_stencil_core_internal_app_data__WEBPACK_IMPORTED_MODULE_1__.BUILD.hostListenerTargetWindow && flags & 8 /* LISTENER_FLAGS.TargetWindow */) return win;\n if (_stencil_core_internal_app_data__WEBPACK_IMPORTED_MODULE_1__.BUILD.hostListenerTargetBody && flags & 16 /* LISTENER_FLAGS.TargetBody */) return doc.body;\n if (_stencil_core_internal_app_data__WEBPACK_IMPORTED_MODULE_1__.BUILD.hostListenerTargetParent && flags & 32 /* LISTENER_FLAGS.TargetParent */) return elm.parentElement;\n return elm;\n};\n// prettier-ignore\nconst hostListenerOpts = flags => supportsListenerOptions ? {\n passive: (flags & 1 /* LISTENER_FLAGS.Passive */) !== 0,\n capture: (flags & 2 /* LISTENER_FLAGS.Capture */) !== 0\n} : (flags & 2 /* LISTENER_FLAGS.Capture */) !== 0;\nconst setPlatformOptions = opts => Object.assign(plt, opts);\nconst insertVdomAnnotations = (doc, staticComponents) => {\n if (doc != null) {\n const docData = {\n hostIds: 0,\n rootLevelIds: 0,\n staticComponents: new Set(staticComponents)\n };\n const orgLocationNodes = [];\n parseVNodeAnnotations(doc, doc.body, docData, orgLocationNodes);\n orgLocationNodes.forEach(orgLocationNode => {\n if (orgLocationNode != null) {\n const nodeRef = orgLocationNode['s-nr'];\n let hostId = nodeRef['s-host-id'];\n let nodeId = nodeRef['s-node-id'];\n let childId = `${hostId}.${nodeId}`;\n if (hostId == null) {\n hostId = 0;\n docData.rootLevelIds++;\n nodeId = docData.rootLevelIds;\n childId = `${hostId}.${nodeId}`;\n if (nodeRef.nodeType === 1 /* NODE_TYPE.ElementNode */) {\n nodeRef.setAttribute(HYDRATE_CHILD_ID, childId);\n } else if (nodeRef.nodeType === 3 /* NODE_TYPE.TextNode */) {\n if (hostId === 0) {\n const textContent = nodeRef.nodeValue.trim();\n if (textContent === '') {\n // useless whitespace node at the document root\n orgLocationNode.remove();\n return;\n }\n }\n const commentBeforeTextNode = doc.createComment(childId);\n commentBeforeTextNode.nodeValue = `${TEXT_NODE_ID}.${childId}`;\n nodeRef.parentNode.insertBefore(commentBeforeTextNode, nodeRef);\n }\n }\n let orgLocationNodeId = `${ORG_LOCATION_ID}.${childId}`;\n const orgLocationParentNode = orgLocationNode.parentElement;\n if (orgLocationParentNode) {\n if (orgLocationParentNode['s-en'] === '') {\n // ending with a \".\" means that the parent element\n // of this node's original location is a SHADOW dom element\n // and this node is apart of the root level light dom\n orgLocationNodeId += `.`;\n } else if (orgLocationParentNode['s-en'] === 'c') {\n // ending with a \".c\" means that the parent element\n // of this node's original location is a SCOPED element\n // and this node is apart of the root level light dom\n orgLocationNodeId += `.c`;\n }\n }\n orgLocationNode.nodeValue = orgLocationNodeId;\n }\n });\n }\n};\nconst parseVNodeAnnotations = (doc, node, docData, orgLocationNodes) => {\n if (node == null) {\n return;\n }\n if (node['s-nr'] != null) {\n orgLocationNodes.push(node);\n }\n if (node.nodeType === 1 /* NODE_TYPE.ElementNode */) {\n node.childNodes.forEach(childNode => {\n const hostRef = getHostRef(childNode);\n if (hostRef != null && !docData.staticComponents.has(childNode.nodeName.toLowerCase())) {\n const cmpData = {\n nodeIds: 0\n };\n insertVNodeAnnotations(doc, childNode, hostRef.$vnode$, docData, cmpData);\n }\n parseVNodeAnnotations(doc, childNode, docData, orgLocationNodes);\n });\n }\n};\nconst insertVNodeAnnotations = (doc, hostElm, vnode, docData, cmpData) => {\n if (vnode != null) {\n const hostId = ++docData.hostIds;\n hostElm.setAttribute(HYDRATE_ID, hostId);\n if (hostElm['s-cr'] != null) {\n hostElm['s-cr'].nodeValue = `${CONTENT_REF_ID}.${hostId}`;\n }\n if (vnode.$children$ != null) {\n const depth = 0;\n vnode.$children$.forEach((vnodeChild, index) => {\n insertChildVNodeAnnotations(doc, vnodeChild, cmpData, hostId, depth, index);\n });\n }\n if (hostElm && vnode && vnode.$elm$ && !hostElm.hasAttribute('c-id')) {\n const parent = hostElm.parentElement;\n if (parent && parent.childNodes) {\n const parentChildNodes = Array.from(parent.childNodes);\n const comment = parentChildNodes.find(node => node.nodeType === 8 /* NODE_TYPE.CommentNode */ && node['s-sr']);\n if (comment) {\n const index = parentChildNodes.indexOf(hostElm) - 1;\n vnode.$elm$.setAttribute(HYDRATE_CHILD_ID, `${comment['s-host-id']}.${comment['s-node-id']}.0.${index}`);\n }\n }\n }\n }\n};\nconst insertChildVNodeAnnotations = (doc, vnodeChild, cmpData, hostId, depth, index) => {\n const childElm = vnodeChild.$elm$;\n if (childElm == null) {\n return;\n }\n const nodeId = cmpData.nodeIds++;\n const childId = `${hostId}.${nodeId}.${depth}.${index}`;\n childElm['s-host-id'] = hostId;\n childElm['s-node-id'] = nodeId;\n if (childElm.nodeType === 1 /* NODE_TYPE.ElementNode */) {\n childElm.setAttribute(HYDRATE_CHILD_ID, childId);\n } else if (childElm.nodeType === 3 /* NODE_TYPE.TextNode */) {\n const parentNode = childElm.parentNode;\n const nodeName = parentNode.nodeName;\n if (nodeName !== 'STYLE' && nodeName !== 'SCRIPT') {\n const textNodeId = `${TEXT_NODE_ID}.${childId}`;\n const commentBeforeTextNode = doc.createComment(textNodeId);\n parentNode.insertBefore(commentBeforeTextNode, childElm);\n }\n } else if (childElm.nodeType === 8 /* NODE_TYPE.CommentNode */) {\n if (childElm['s-sr']) {\n const slotName = childElm['s-sn'] || '';\n const slotNodeId = `${SLOT_NODE_ID}.${childId}.${slotName}`;\n childElm.nodeValue = slotNodeId;\n }\n }\n if (vnodeChild.$children$ != null) {\n const childDepth = depth + 1;\n vnodeChild.$children$.forEach((vnode, index) => {\n insertChildVNodeAnnotations(doc, vnode, cmpData, hostId, childDepth, index);\n });\n }\n};\nconst hostRefs = /*@__PURE__*/new WeakMap();\nconst getHostRef = ref => hostRefs.get(ref);\nconst registerInstance = (lazyInstance, hostRef) => hostRefs.set(hostRef.$lazyInstance$ = lazyInstance, hostRef);\nconst registerHost = (elm, cmpMeta) => {\n const hostRef = {\n $flags$: 0,\n $hostElement$: elm,\n $cmpMeta$: cmpMeta,\n $instanceValues$: new Map()\n };\n if (_stencil_core_internal_app_data__WEBPACK_IMPORTED_MODULE_1__.BUILD.isDev) {\n hostRef.$renderCount$ = 0;\n }\n if (_stencil_core_internal_app_data__WEBPACK_IMPORTED_MODULE_1__.BUILD.method && _stencil_core_internal_app_data__WEBPACK_IMPORTED_MODULE_1__.BUILD.lazyLoad) {\n hostRef.$onInstancePromise$ = new Promise(r => hostRef.$onInstanceResolve$ = r);\n }\n if (_stencil_core_internal_app_data__WEBPACK_IMPORTED_MODULE_1__.BUILD.asyncLoading) {\n hostRef.$onReadyPromise$ = new Promise(r => hostRef.$onReadyResolve$ = r);\n elm['s-p'] = [];\n elm['s-rc'] = [];\n }\n addHostEventListeners(elm, hostRef, cmpMeta.$listeners$, false);\n return hostRefs.set(elm, hostRef);\n};\nconst isMemberInElement = (elm, memberName) => memberName in elm;\nconst consoleError = (e, el) => (customError || console.error)(e, el);\nconst STENCIL_DEV_MODE = _stencil_core_internal_app_data__WEBPACK_IMPORTED_MODULE_1__.BUILD.isTesting ? ['STENCIL:'] // E2E testing\n: ['%cstencil', 'color: white;background:#4c47ff;font-weight: bold; font-size:10px; padding:2px 6px; border-radius: 5px'];\nconst consoleDevError = (...m) => console.error(...STENCIL_DEV_MODE, ...m);\nconst consoleDevWarn = (...m) => console.warn(...STENCIL_DEV_MODE, ...m);\nconst consoleDevInfo = (...m) => console.info(...STENCIL_DEV_MODE, ...m);\nconst setErrorHandler = handler => customError = handler;\nconst cmpModules = /*@__PURE__*/new Map();\nconst loadModule = (cmpMeta, hostRef, hmrVersionId) => {\n // loadModuleImport\n const exportName = cmpMeta.$tagName$.replace(/-/g, '_');\n const bundleId = cmpMeta.$lazyBundleId$;\n if (_stencil_core_internal_app_data__WEBPACK_IMPORTED_MODULE_1__.BUILD.isDev && typeof bundleId !== 'string') {\n consoleDevError(`Trying to lazily load component <${cmpMeta.$tagName$}> with style mode \"${hostRef.$modeName$}\", but it does not exist.`);\n return undefined;\n }\n const module = !_stencil_core_internal_app_data__WEBPACK_IMPORTED_MODULE_1__.BUILD.hotModuleReplacement ? cmpModules.get(bundleId) : false;\n if (module) {\n return module[exportName];\n }\n /*!__STENCIL_STATIC_IMPORT_SWITCH__*/\n return __webpack_require__(\"./node_modules/@stencil/core/internal/client lazy recursive ^\\\\.\\\\/.*\\\\.entry\\\\.js.*$ include: \\\\.entry\\\\.js$ exclude: \\\\.system\\\\.entry\\\\.js$\")(`./${bundleId}.entry.js${_stencil_core_internal_app_data__WEBPACK_IMPORTED_MODULE_1__.BUILD.hotModuleReplacement && hmrVersionId ? '?s-hmr=' + hmrVersionId : ''}`).then(importedModule => {\n if (!_stencil_core_internal_app_data__WEBPACK_IMPORTED_MODULE_1__.BUILD.hotModuleReplacement) {\n cmpModules.set(bundleId, importedModule);\n }\n return importedModule[exportName];\n }, consoleError);\n};\nconst styles = /*@__PURE__*/new Map();\nconst modeResolutionChain = [];\nconst win = typeof window !== 'undefined' ? window : {};\nconst CSS = _stencil_core_internal_app_data__WEBPACK_IMPORTED_MODULE_1__.BUILD.cssVarShim ? win.CSS : null;\nconst doc = win.document || {\n head: {}\n};\nconst H = win.HTMLElement || class {};\nconst plt = {\n $flags$: 0,\n $resourcesUrl$: '',\n jmp: h => h(),\n raf: h => requestAnimationFrame(h),\n ael: (el, eventName, listener, opts) => el.addEventListener(eventName, listener, opts),\n rel: (el, eventName, listener, opts) => el.removeEventListener(eventName, listener, opts),\n ce: (eventName, opts) => new CustomEvent(eventName, opts)\n};\nconst setPlatformHelpers = helpers => {\n Object.assign(plt, helpers);\n};\nconst supportsShadow = _stencil_core_internal_app_data__WEBPACK_IMPORTED_MODULE_1__.BUILD.shadowDomShim && _stencil_core_internal_app_data__WEBPACK_IMPORTED_MODULE_1__.BUILD.shadowDom ? /*@__PURE__*/(() => (doc.head.attachShadow + '').indexOf('[native') > -1)() : true;\nconst supportsListenerOptions = /*@__PURE__*/(() => {\n let supportsListenerOptions = false;\n try {\n doc.addEventListener('e', null, Object.defineProperty({}, 'passive', {\n get() {\n supportsListenerOptions = true;\n }\n }));\n } catch (e) {}\n return supportsListenerOptions;\n})();\nconst promiseResolve = v => Promise.resolve(v);\nconst supportsConstructableStylesheets = _stencil_core_internal_app_data__WEBPACK_IMPORTED_MODULE_1__.BUILD.constructableCSS ? /*@__PURE__*/(() => {\n try {\n new CSSStyleSheet();\n return typeof new CSSStyleSheet().replaceSync === 'function';\n } catch (e) {}\n return false;\n})() : false;\nconst queueDomReads = [];\nconst queueDomWrites = [];\nconst queueDomWritesLow = [];\nconst queueTask = (queue, write) => cb => {\n queue.push(cb);\n if (!queuePending) {\n queuePending = true;\n if (write && plt.$flags$ & 4 /* PLATFORM_FLAGS.queueSync */) {\n nextTick(flush);\n } else {\n plt.raf(flush);\n }\n }\n};\nconst consume = queue => {\n for (let i = 0; i < queue.length; i++) {\n try {\n queue[i](performance.now());\n } catch (e) {\n consoleError(e);\n }\n }\n queue.length = 0;\n};\nconst consumeTimeout = (queue, timeout) => {\n let i = 0;\n let ts = 0;\n while (i < queue.length && (ts = performance.now()) < timeout) {\n try {\n queue[i++](ts);\n } catch (e) {\n consoleError(e);\n }\n }\n if (i === queue.length) {\n queue.length = 0;\n } else if (i !== 0) {\n queue.splice(0, i);\n }\n};\nconst flush = () => {\n if (_stencil_core_internal_app_data__WEBPACK_IMPORTED_MODULE_1__.BUILD.asyncQueue) {\n queueCongestion++;\n }\n // always force a bunch of medium callbacks to run, but still have\n // a throttle on how many can run in a certain time\n // DOM READS!!!\n consume(queueDomReads);\n // DOM WRITES!!!\n if (_stencil_core_internal_app_data__WEBPACK_IMPORTED_MODULE_1__.BUILD.asyncQueue) {\n const timeout = (plt.$flags$ & 6 /* PLATFORM_FLAGS.queueMask */) === 2 /* PLATFORM_FLAGS.appLoaded */ ? performance.now() + 14 * Math.ceil(queueCongestion * (1.0 / 10.0)) : Infinity;\n consumeTimeout(queueDomWrites, timeout);\n consumeTimeout(queueDomWritesLow, timeout);\n if (queueDomWrites.length > 0) {\n queueDomWritesLow.push(...queueDomWrites);\n queueDomWrites.length = 0;\n }\n if (queuePending = queueDomReads.length + queueDomWrites.length + queueDomWritesLow.length > 0) {\n // still more to do yet, but we've run out of time\n // let's let this thing cool off and try again in the next tick\n plt.raf(flush);\n } else {\n queueCongestion = 0;\n }\n } else {\n consume(queueDomWrites);\n if (queuePending = queueDomReads.length > 0) {\n // still more to do yet, but we've run out of time\n // let's let this thing cool off and try again in the next tick\n plt.raf(flush);\n }\n }\n};\nconst nextTick = /*@__PURE__*/cb => promiseResolve().then(cb);\nconst readTask = /*@__PURE__*/queueTask(queueDomReads, false);\nconst writeTask = /*@__PURE__*/queueTask(queueDomWrites, true);\n\n\n\n//# sourceURL=webpack://jandl/./node_modules/@stencil/core/internal/client/index.js?"); - -/***/ }), - -/***/ "./node_modules/@vue/devtools-api/lib/esm/const.js": -/*!*********************************************************!*\ - !*** ./node_modules/@vue/devtools-api/lib/esm/const.js ***! - \*********************************************************/ -/***/ (function(__unused_webpack_module, __webpack_exports__, __webpack_require__) { - -"use strict"; -eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"HOOK_PLUGIN_SETTINGS_SET\": function() { return /* binding */ HOOK_PLUGIN_SETTINGS_SET; },\n/* harmony export */ \"HOOK_SETUP\": function() { return /* binding */ HOOK_SETUP; }\n/* harmony export */ });\nconst HOOK_SETUP = 'devtools-plugin:setup';\nconst HOOK_PLUGIN_SETTINGS_SET = 'plugin:settings:set';\n\n//# sourceURL=webpack://jandl/./node_modules/@vue/devtools-api/lib/esm/const.js?"); - -/***/ }), - -/***/ "./node_modules/@vue/devtools-api/lib/esm/env.js": -/*!*******************************************************!*\ - !*** ./node_modules/@vue/devtools-api/lib/esm/env.js ***! - \*******************************************************/ -/***/ (function(__unused_webpack_module, __webpack_exports__, __webpack_require__) { - -"use strict"; -eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"getDevtoolsGlobalHook\": function() { return /* binding */ getDevtoolsGlobalHook; },\n/* harmony export */ \"getTarget\": function() { return /* binding */ getTarget; },\n/* harmony export */ \"isProxyAvailable\": function() { return /* binding */ isProxyAvailable; }\n/* harmony export */ });\nfunction getDevtoolsGlobalHook() {\n return getTarget().__VUE_DEVTOOLS_GLOBAL_HOOK__;\n}\nfunction getTarget() {\n // @ts-ignore\n return typeof navigator !== 'undefined' && typeof window !== 'undefined' ? window : typeof __webpack_require__.g !== 'undefined' ? __webpack_require__.g : {};\n}\nconst isProxyAvailable = typeof Proxy === 'function';\n\n//# sourceURL=webpack://jandl/./node_modules/@vue/devtools-api/lib/esm/env.js?"); - -/***/ }), - -/***/ "./node_modules/@vue/devtools-api/lib/esm/index.js": -/*!*********************************************************!*\ - !*** ./node_modules/@vue/devtools-api/lib/esm/index.js ***! - \*********************************************************/ -/***/ (function(__unused_webpack_module, __webpack_exports__, __webpack_require__) { - -"use strict"; -eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"isPerformanceSupported\": function() { return /* reexport safe */ _time_js__WEBPACK_IMPORTED_MODULE_1__.isPerformanceSupported; },\n/* harmony export */ \"now\": function() { return /* reexport safe */ _time_js__WEBPACK_IMPORTED_MODULE_1__.now; },\n/* harmony export */ \"setupDevtoolsPlugin\": function() { return /* binding */ setupDevtoolsPlugin; }\n/* harmony export */ });\n/* harmony import */ var core_js_modules_es_array_push_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! core-js/modules/es.array.push.js */ \"./node_modules/core-js/modules/es.array.push.js\");\n/* harmony import */ var core_js_modules_es_array_push_js__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_array_push_js__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var _env_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./env.js */ \"./node_modules/@vue/devtools-api/lib/esm/env.js\");\n/* harmony import */ var _const_js__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./const.js */ \"./node_modules/@vue/devtools-api/lib/esm/const.js\");\n/* harmony import */ var _proxy_js__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ./proxy.js */ \"./node_modules/@vue/devtools-api/lib/esm/proxy.js\");\n/* harmony import */ var _time_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./time.js */ \"./node_modules/@vue/devtools-api/lib/esm/time.js\");\n\n\n\n\n\n\n\nfunction setupDevtoolsPlugin(pluginDescriptor, setupFn) {\n const descriptor = pluginDescriptor;\n const target = (0,_env_js__WEBPACK_IMPORTED_MODULE_2__.getTarget)();\n const hook = (0,_env_js__WEBPACK_IMPORTED_MODULE_2__.getDevtoolsGlobalHook)();\n const enableProxy = _env_js__WEBPACK_IMPORTED_MODULE_2__.isProxyAvailable && descriptor.enableEarlyProxy;\n if (hook && (target.__VUE_DEVTOOLS_PLUGIN_API_AVAILABLE__ || !enableProxy)) {\n hook.emit(_const_js__WEBPACK_IMPORTED_MODULE_3__.HOOK_SETUP, pluginDescriptor, setupFn);\n } else {\n const proxy = enableProxy ? new _proxy_js__WEBPACK_IMPORTED_MODULE_4__.ApiProxy(descriptor, hook) : null;\n const list = target.__VUE_DEVTOOLS_PLUGINS__ = target.__VUE_DEVTOOLS_PLUGINS__ || [];\n list.push({\n pluginDescriptor: descriptor,\n setupFn,\n proxy\n });\n if (proxy) setupFn(proxy.proxiedTarget);\n }\n}\n\n//# sourceURL=webpack://jandl/./node_modules/@vue/devtools-api/lib/esm/index.js?"); - -/***/ }), - -/***/ "./node_modules/@vue/devtools-api/lib/esm/proxy.js": -/*!*********************************************************!*\ - !*** ./node_modules/@vue/devtools-api/lib/esm/proxy.js ***! - \*********************************************************/ -/***/ (function(__unused_webpack_module, __webpack_exports__, __webpack_require__) { - -"use strict"; -eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"ApiProxy\": function() { return /* binding */ ApiProxy; }\n/* harmony export */ });\n/* harmony import */ var core_js_modules_es_array_push_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! core-js/modules/es.array.push.js */ \"./node_modules/core-js/modules/es.array.push.js\");\n/* harmony import */ var core_js_modules_es_array_push_js__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_array_push_js__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var _const_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./const.js */ \"./node_modules/@vue/devtools-api/lib/esm/const.js\");\n/* harmony import */ var _time_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./time.js */ \"./node_modules/@vue/devtools-api/lib/esm/time.js\");\n\n\n\nclass ApiProxy {\n constructor(plugin, hook) {\n this.target = null;\n this.targetQueue = [];\n this.onQueue = [];\n this.plugin = plugin;\n this.hook = hook;\n const defaultSettings = {};\n if (plugin.settings) {\n for (const id in plugin.settings) {\n const item = plugin.settings[id];\n defaultSettings[id] = item.defaultValue;\n }\n }\n const localSettingsSaveId = `__vue-devtools-plugin-settings__${plugin.id}`;\n let currentSettings = Object.assign({}, defaultSettings);\n try {\n const raw = localStorage.getItem(localSettingsSaveId);\n const data = JSON.parse(raw);\n Object.assign(currentSettings, data);\n } catch (e) {\n // noop\n }\n this.fallbacks = {\n getSettings() {\n return currentSettings;\n },\n setSettings(value) {\n try {\n localStorage.setItem(localSettingsSaveId, JSON.stringify(value));\n } catch (e) {\n // noop\n }\n currentSettings = value;\n },\n now() {\n return (0,_time_js__WEBPACK_IMPORTED_MODULE_1__.now)();\n }\n };\n if (hook) {\n hook.on(_const_js__WEBPACK_IMPORTED_MODULE_2__.HOOK_PLUGIN_SETTINGS_SET, (pluginId, value) => {\n if (pluginId === this.plugin.id) {\n this.fallbacks.setSettings(value);\n }\n });\n }\n this.proxiedOn = new Proxy({}, {\n get: (_target, prop) => {\n if (this.target) {\n return this.target.on[prop];\n } else {\n return (...args) => {\n this.onQueue.push({\n method: prop,\n args\n });\n };\n }\n }\n });\n this.proxiedTarget = new Proxy({}, {\n get: (_target, prop) => {\n if (this.target) {\n return this.target[prop];\n } else if (prop === 'on') {\n return this.proxiedOn;\n } else if (Object.keys(this.fallbacks).includes(prop)) {\n return (...args) => {\n this.targetQueue.push({\n method: prop,\n args,\n resolve: () => {}\n });\n return this.fallbacks[prop](...args);\n };\n } else {\n return (...args) => {\n return new Promise(resolve => {\n this.targetQueue.push({\n method: prop,\n args,\n resolve\n });\n });\n };\n }\n }\n });\n }\n async setRealTarget(target) {\n this.target = target;\n for (const item of this.onQueue) {\n this.target.on[item.method](...item.args);\n }\n for (const item of this.targetQueue) {\n item.resolve(await this.target[item.method](...item.args));\n }\n }\n}\n\n//# sourceURL=webpack://jandl/./node_modules/@vue/devtools-api/lib/esm/proxy.js?"); - -/***/ }), - -/***/ "./node_modules/@vue/devtools-api/lib/esm/time.js": -/*!********************************************************!*\ - !*** ./node_modules/@vue/devtools-api/lib/esm/time.js ***! - \********************************************************/ -/***/ (function(__unused_webpack_module, __webpack_exports__, __webpack_require__) { - -"use strict"; -eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"isPerformanceSupported\": function() { return /* binding */ isPerformanceSupported; },\n/* harmony export */ \"now\": function() { return /* binding */ now; }\n/* harmony export */ });\nlet supported;\nlet perf;\nfunction isPerformanceSupported() {\n var _a;\n if (supported !== undefined) {\n return supported;\n }\n if (typeof window !== 'undefined' && window.performance) {\n supported = true;\n perf = window.performance;\n } else if (typeof __webpack_require__.g !== 'undefined' && ((_a = __webpack_require__.g.perf_hooks) === null || _a === void 0 ? void 0 : _a.performance)) {\n supported = true;\n perf = __webpack_require__.g.perf_hooks.performance;\n } else {\n supported = false;\n }\n return supported;\n}\nfunction now() {\n return isPerformanceSupported() ? perf.now() : Date.now();\n}\n\n//# sourceURL=webpack://jandl/./node_modules/@vue/devtools-api/lib/esm/time.js?"); - -/***/ }), - -/***/ "./node_modules/@vue/reactivity/dist/reactivity.esm-bundler.js": -/*!*********************************************************************!*\ - !*** ./node_modules/@vue/reactivity/dist/reactivity.esm-bundler.js ***! - \*********************************************************************/ -/***/ (function(__unused_webpack_module, __webpack_exports__, __webpack_require__) { - -"use strict"; -eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"EffectScope\": function() { return /* binding */ EffectScope; },\n/* harmony export */ \"ITERATE_KEY\": function() { return /* binding */ ITERATE_KEY; },\n/* harmony export */ \"ReactiveEffect\": function() { return /* binding */ ReactiveEffect; },\n/* harmony export */ \"computed\": function() { return /* binding */ computed; },\n/* harmony export */ \"customRef\": function() { return /* binding */ customRef; },\n/* harmony export */ \"deferredComputed\": function() { return /* binding */ deferredComputed; },\n/* harmony export */ \"effect\": function() { return /* binding */ effect; },\n/* harmony export */ \"effectScope\": function() { return /* binding */ effectScope; },\n/* harmony export */ \"enableTracking\": function() { return /* binding */ enableTracking; },\n/* harmony export */ \"getCurrentScope\": function() { return /* binding */ getCurrentScope; },\n/* harmony export */ \"isProxy\": function() { return /* binding */ isProxy; },\n/* harmony export */ \"isReactive\": function() { return /* binding */ isReactive; },\n/* harmony export */ \"isReadonly\": function() { return /* binding */ isReadonly; },\n/* harmony export */ \"isRef\": function() { return /* binding */ isRef; },\n/* harmony export */ \"isShallow\": function() { return /* binding */ isShallow; },\n/* harmony export */ \"markRaw\": function() { return /* binding */ markRaw; },\n/* harmony export */ \"onScopeDispose\": function() { return /* binding */ onScopeDispose; },\n/* harmony export */ \"pauseTracking\": function() { return /* binding */ pauseTracking; },\n/* harmony export */ \"proxyRefs\": function() { return /* binding */ proxyRefs; },\n/* harmony export */ \"reactive\": function() { return /* binding */ reactive; },\n/* harmony export */ \"readonly\": function() { return /* binding */ readonly; },\n/* harmony export */ \"ref\": function() { return /* binding */ ref; },\n/* harmony export */ \"resetTracking\": function() { return /* binding */ resetTracking; },\n/* harmony export */ \"shallowReactive\": function() { return /* binding */ shallowReactive; },\n/* harmony export */ \"shallowReadonly\": function() { return /* binding */ shallowReadonly; },\n/* harmony export */ \"shallowRef\": function() { return /* binding */ shallowRef; },\n/* harmony export */ \"stop\": function() { return /* binding */ stop; },\n/* harmony export */ \"toRaw\": function() { return /* binding */ toRaw; },\n/* harmony export */ \"toRef\": function() { return /* binding */ toRef; },\n/* harmony export */ \"toRefs\": function() { return /* binding */ toRefs; },\n/* harmony export */ \"track\": function() { return /* binding */ track; },\n/* harmony export */ \"trigger\": function() { return /* binding */ trigger; },\n/* harmony export */ \"triggerRef\": function() { return /* binding */ triggerRef; },\n/* harmony export */ \"unref\": function() { return /* binding */ unref; }\n/* harmony export */ });\n/* harmony import */ var core_js_modules_es_array_push_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! core-js/modules/es.array.push.js */ \"./node_modules/core-js/modules/es.array.push.js\");\n/* harmony import */ var core_js_modules_es_array_push_js__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_array_push_js__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var _vue_shared__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! @vue/shared */ \"./node_modules/@vue/shared/dist/shared.esm-bundler.js\");\n/* provided dependency */ var console = __webpack_require__(/*! ./node_modules/console-browserify/index.js */ \"./node_modules/console-browserify/index.js\");\n\n\nfunction warn(msg, ...args) {\n console.warn(`[Vue warn] ${msg}`, ...args);\n}\nlet activeEffectScope;\nclass EffectScope {\n constructor(detached = false) {\n this.detached = detached;\n /**\n * @internal\n */\n this.active = true;\n /**\n * @internal\n */\n this.effects = [];\n /**\n * @internal\n */\n this.cleanups = [];\n this.parent = activeEffectScope;\n if (!detached && activeEffectScope) {\n this.index = (activeEffectScope.scopes || (activeEffectScope.scopes = [])).push(this) - 1;\n }\n }\n run(fn) {\n if (this.active) {\n const currentEffectScope = activeEffectScope;\n try {\n activeEffectScope = this;\n return fn();\n } finally {\n activeEffectScope = currentEffectScope;\n }\n } else if (true) {\n warn(`cannot run an inactive effect scope.`);\n }\n }\n /**\n * This should only be called on non-detached scopes\n * @internal\n */\n on() {\n activeEffectScope = this;\n }\n /**\n * This should only be called on non-detached scopes\n * @internal\n */\n off() {\n activeEffectScope = this.parent;\n }\n stop(fromParent) {\n if (this.active) {\n let i, l;\n for (i = 0, l = this.effects.length; i < l; i++) {\n this.effects[i].stop();\n }\n for (i = 0, l = this.cleanups.length; i < l; i++) {\n this.cleanups[i]();\n }\n if (this.scopes) {\n for (i = 0, l = this.scopes.length; i < l; i++) {\n this.scopes[i].stop(true);\n }\n }\n // nested scope, dereference from parent to avoid memory leaks\n if (!this.detached && this.parent && !fromParent) {\n // optimized O(1) removal\n const last = this.parent.scopes.pop();\n if (last && last !== this) {\n this.parent.scopes[this.index] = last;\n last.index = this.index;\n }\n }\n this.parent = undefined;\n this.active = false;\n }\n }\n}\nfunction effectScope(detached) {\n return new EffectScope(detached);\n}\nfunction recordEffectScope(effect, scope = activeEffectScope) {\n if (scope && scope.active) {\n scope.effects.push(effect);\n }\n}\nfunction getCurrentScope() {\n return activeEffectScope;\n}\nfunction onScopeDispose(fn) {\n if (activeEffectScope) {\n activeEffectScope.cleanups.push(fn);\n } else if (true) {\n warn(`onScopeDispose() is called when there is no active effect scope` + ` to be associated with.`);\n }\n}\nconst createDep = effects => {\n const dep = new Set(effects);\n dep.w = 0;\n dep.n = 0;\n return dep;\n};\nconst wasTracked = dep => (dep.w & trackOpBit) > 0;\nconst newTracked = dep => (dep.n & trackOpBit) > 0;\nconst initDepMarkers = ({\n deps\n}) => {\n if (deps.length) {\n for (let i = 0; i < deps.length; i++) {\n deps[i].w |= trackOpBit; // set was tracked\n }\n }\n};\n\nconst finalizeDepMarkers = effect => {\n const {\n deps\n } = effect;\n if (deps.length) {\n let ptr = 0;\n for (let i = 0; i < deps.length; i++) {\n const dep = deps[i];\n if (wasTracked(dep) && !newTracked(dep)) {\n dep.delete(effect);\n } else {\n deps[ptr++] = dep;\n }\n // clear bits\n dep.w &= ~trackOpBit;\n dep.n &= ~trackOpBit;\n }\n deps.length = ptr;\n }\n};\nconst targetMap = new WeakMap();\n// The number of effects currently being tracked recursively.\nlet effectTrackDepth = 0;\nlet trackOpBit = 1;\n/**\n * The bitwise track markers support at most 30 levels of recursion.\n * This value is chosen to enable modern JS engines to use a SMI on all platforms.\n * When recursion depth is greater, fall back to using a full cleanup.\n */\nconst maxMarkerBits = 30;\nlet activeEffect;\nconst ITERATE_KEY = Symbol( true ? 'iterate' : 0);\nconst MAP_KEY_ITERATE_KEY = Symbol( true ? 'Map key iterate' : 0);\nclass ReactiveEffect {\n constructor(fn, scheduler = null, scope) {\n this.fn = fn;\n this.scheduler = scheduler;\n this.active = true;\n this.deps = [];\n this.parent = undefined;\n recordEffectScope(this, scope);\n }\n run() {\n if (!this.active) {\n return this.fn();\n }\n let parent = activeEffect;\n let lastShouldTrack = shouldTrack;\n while (parent) {\n if (parent === this) {\n return;\n }\n parent = parent.parent;\n }\n try {\n this.parent = activeEffect;\n activeEffect = this;\n shouldTrack = true;\n trackOpBit = 1 << ++effectTrackDepth;\n if (effectTrackDepth <= maxMarkerBits) {\n initDepMarkers(this);\n } else {\n cleanupEffect(this);\n }\n return this.fn();\n } finally {\n if (effectTrackDepth <= maxMarkerBits) {\n finalizeDepMarkers(this);\n }\n trackOpBit = 1 << --effectTrackDepth;\n activeEffect = this.parent;\n shouldTrack = lastShouldTrack;\n this.parent = undefined;\n if (this.deferStop) {\n this.stop();\n }\n }\n }\n stop() {\n // stopped while running itself - defer the cleanup\n if (activeEffect === this) {\n this.deferStop = true;\n } else if (this.active) {\n cleanupEffect(this);\n if (this.onStop) {\n this.onStop();\n }\n this.active = false;\n }\n }\n}\nfunction cleanupEffect(effect) {\n const {\n deps\n } = effect;\n if (deps.length) {\n for (let i = 0; i < deps.length; i++) {\n deps[i].delete(effect);\n }\n deps.length = 0;\n }\n}\nfunction effect(fn, options) {\n if (fn.effect) {\n fn = fn.effect.fn;\n }\n const _effect = new ReactiveEffect(fn);\n if (options) {\n (0,_vue_shared__WEBPACK_IMPORTED_MODULE_1__.extend)(_effect, options);\n if (options.scope) recordEffectScope(_effect, options.scope);\n }\n if (!options || !options.lazy) {\n _effect.run();\n }\n const runner = _effect.run.bind(_effect);\n runner.effect = _effect;\n return runner;\n}\nfunction stop(runner) {\n runner.effect.stop();\n}\nlet shouldTrack = true;\nconst trackStack = [];\nfunction pauseTracking() {\n trackStack.push(shouldTrack);\n shouldTrack = false;\n}\nfunction enableTracking() {\n trackStack.push(shouldTrack);\n shouldTrack = true;\n}\nfunction resetTracking() {\n const last = trackStack.pop();\n shouldTrack = last === undefined ? true : last;\n}\nfunction track(target, type, key) {\n if (shouldTrack && activeEffect) {\n let depsMap = targetMap.get(target);\n if (!depsMap) {\n targetMap.set(target, depsMap = new Map());\n }\n let dep = depsMap.get(key);\n if (!dep) {\n depsMap.set(key, dep = createDep());\n }\n const eventInfo = true ? {\n effect: activeEffect,\n target,\n type,\n key\n } : 0;\n trackEffects(dep, eventInfo);\n }\n}\nfunction trackEffects(dep, debuggerEventExtraInfo) {\n let shouldTrack = false;\n if (effectTrackDepth <= maxMarkerBits) {\n if (!newTracked(dep)) {\n dep.n |= trackOpBit; // set newly tracked\n shouldTrack = !wasTracked(dep);\n }\n } else {\n // Full cleanup mode.\n shouldTrack = !dep.has(activeEffect);\n }\n if (shouldTrack) {\n dep.add(activeEffect);\n activeEffect.deps.push(dep);\n if ( true && activeEffect.onTrack) {\n activeEffect.onTrack(Object.assign({\n effect: activeEffect\n }, debuggerEventExtraInfo));\n }\n }\n}\nfunction trigger(target, type, key, newValue, oldValue, oldTarget) {\n const depsMap = targetMap.get(target);\n if (!depsMap) {\n // never been tracked\n return;\n }\n let deps = [];\n if (type === \"clear\" /* TriggerOpTypes.CLEAR */) {\n // collection being cleared\n // trigger all effects for target\n deps = [...depsMap.values()];\n } else if (key === 'length' && (0,_vue_shared__WEBPACK_IMPORTED_MODULE_1__.isArray)(target)) {\n const newLength = (0,_vue_shared__WEBPACK_IMPORTED_MODULE_1__.toNumber)(newValue);\n depsMap.forEach((dep, key) => {\n if (key === 'length' || key >= newLength) {\n deps.push(dep);\n }\n });\n } else {\n // schedule runs for SET | ADD | DELETE\n if (key !== void 0) {\n deps.push(depsMap.get(key));\n }\n // also run for iteration key on ADD | DELETE | Map.SET\n switch (type) {\n case \"add\" /* TriggerOpTypes.ADD */:\n if (!(0,_vue_shared__WEBPACK_IMPORTED_MODULE_1__.isArray)(target)) {\n deps.push(depsMap.get(ITERATE_KEY));\n if ((0,_vue_shared__WEBPACK_IMPORTED_MODULE_1__.isMap)(target)) {\n deps.push(depsMap.get(MAP_KEY_ITERATE_KEY));\n }\n } else if ((0,_vue_shared__WEBPACK_IMPORTED_MODULE_1__.isIntegerKey)(key)) {\n // new index added to array -> length changes\n deps.push(depsMap.get('length'));\n }\n break;\n case \"delete\" /* TriggerOpTypes.DELETE */:\n if (!(0,_vue_shared__WEBPACK_IMPORTED_MODULE_1__.isArray)(target)) {\n deps.push(depsMap.get(ITERATE_KEY));\n if ((0,_vue_shared__WEBPACK_IMPORTED_MODULE_1__.isMap)(target)) {\n deps.push(depsMap.get(MAP_KEY_ITERATE_KEY));\n }\n }\n break;\n case \"set\" /* TriggerOpTypes.SET */:\n if ((0,_vue_shared__WEBPACK_IMPORTED_MODULE_1__.isMap)(target)) {\n deps.push(depsMap.get(ITERATE_KEY));\n }\n break;\n }\n }\n const eventInfo = true ? {\n target,\n type,\n key,\n newValue,\n oldValue,\n oldTarget\n } : 0;\n if (deps.length === 1) {\n if (deps[0]) {\n if (true) {\n triggerEffects(deps[0], eventInfo);\n } else {}\n }\n } else {\n const effects = [];\n for (const dep of deps) {\n if (dep) {\n effects.push(...dep);\n }\n }\n if (true) {\n triggerEffects(createDep(effects), eventInfo);\n } else {}\n }\n}\nfunction triggerEffects(dep, debuggerEventExtraInfo) {\n // spread into array for stabilization\n const effects = (0,_vue_shared__WEBPACK_IMPORTED_MODULE_1__.isArray)(dep) ? dep : [...dep];\n for (const effect of effects) {\n if (effect.computed) {\n triggerEffect(effect, debuggerEventExtraInfo);\n }\n }\n for (const effect of effects) {\n if (!effect.computed) {\n triggerEffect(effect, debuggerEventExtraInfo);\n }\n }\n}\nfunction triggerEffect(effect, debuggerEventExtraInfo) {\n if (effect !== activeEffect || effect.allowRecurse) {\n if ( true && effect.onTrigger) {\n effect.onTrigger((0,_vue_shared__WEBPACK_IMPORTED_MODULE_1__.extend)({\n effect\n }, debuggerEventExtraInfo));\n }\n if (effect.scheduler) {\n effect.scheduler();\n } else {\n effect.run();\n }\n }\n}\nconst isNonTrackableKeys = /*#__PURE__*/(0,_vue_shared__WEBPACK_IMPORTED_MODULE_1__.makeMap)(`__proto__,__v_isRef,__isVue`);\nconst builtInSymbols = new Set( /*#__PURE__*/\nObject.getOwnPropertyNames(Symbol)\n// ios10.x Object.getOwnPropertyNames(Symbol) can enumerate 'arguments' and 'caller'\n// but accessing them on Symbol leads to TypeError because Symbol is a strict mode\n// function\n.filter(key => key !== 'arguments' && key !== 'caller').map(key => Symbol[key]).filter(_vue_shared__WEBPACK_IMPORTED_MODULE_1__.isSymbol));\nconst get = /*#__PURE__*/createGetter();\nconst shallowGet = /*#__PURE__*/createGetter(false, true);\nconst readonlyGet = /*#__PURE__*/createGetter(true);\nconst shallowReadonlyGet = /*#__PURE__*/createGetter(true, true);\nconst arrayInstrumentations = /*#__PURE__*/createArrayInstrumentations();\nfunction createArrayInstrumentations() {\n const instrumentations = {};\n ['includes', 'indexOf', 'lastIndexOf'].forEach(key => {\n instrumentations[key] = function (...args) {\n const arr = toRaw(this);\n for (let i = 0, l = this.length; i < l; i++) {\n track(arr, \"get\" /* TrackOpTypes.GET */, i + '');\n }\n // we run the method using the original args first (which may be reactive)\n const res = arr[key](...args);\n if (res === -1 || res === false) {\n // if that didn't work, run it again using raw values.\n return arr[key](...args.map(toRaw));\n } else {\n return res;\n }\n };\n });\n ['push', 'pop', 'shift', 'unshift', 'splice'].forEach(key => {\n instrumentations[key] = function (...args) {\n pauseTracking();\n const res = toRaw(this)[key].apply(this, args);\n resetTracking();\n return res;\n };\n });\n return instrumentations;\n}\nfunction createGetter(isReadonly = false, shallow = false) {\n return function get(target, key, receiver) {\n if (key === \"__v_isReactive\" /* ReactiveFlags.IS_REACTIVE */) {\n return !isReadonly;\n } else if (key === \"__v_isReadonly\" /* ReactiveFlags.IS_READONLY */) {\n return isReadonly;\n } else if (key === \"__v_isShallow\" /* ReactiveFlags.IS_SHALLOW */) {\n return shallow;\n } else if (key === \"__v_raw\" /* ReactiveFlags.RAW */ && receiver === (isReadonly ? shallow ? shallowReadonlyMap : readonlyMap : shallow ? shallowReactiveMap : reactiveMap).get(target)) {\n return target;\n }\n const targetIsArray = (0,_vue_shared__WEBPACK_IMPORTED_MODULE_1__.isArray)(target);\n if (!isReadonly && targetIsArray && (0,_vue_shared__WEBPACK_IMPORTED_MODULE_1__.hasOwn)(arrayInstrumentations, key)) {\n return Reflect.get(arrayInstrumentations, key, receiver);\n }\n const res = Reflect.get(target, key, receiver);\n if ((0,_vue_shared__WEBPACK_IMPORTED_MODULE_1__.isSymbol)(key) ? builtInSymbols.has(key) : isNonTrackableKeys(key)) {\n return res;\n }\n if (!isReadonly) {\n track(target, \"get\" /* TrackOpTypes.GET */, key);\n }\n if (shallow) {\n return res;\n }\n if (isRef(res)) {\n // ref unwrapping - skip unwrap for Array + integer key.\n return targetIsArray && (0,_vue_shared__WEBPACK_IMPORTED_MODULE_1__.isIntegerKey)(key) ? res : res.value;\n }\n if ((0,_vue_shared__WEBPACK_IMPORTED_MODULE_1__.isObject)(res)) {\n // Convert returned value into a proxy as well. we do the isObject check\n // here to avoid invalid value warning. Also need to lazy access readonly\n // and reactive here to avoid circular dependency.\n return isReadonly ? readonly(res) : reactive(res);\n }\n return res;\n };\n}\nconst set = /*#__PURE__*/createSetter();\nconst shallowSet = /*#__PURE__*/createSetter(true);\nfunction createSetter(shallow = false) {\n return function set(target, key, value, receiver) {\n let oldValue = target[key];\n if (isReadonly(oldValue) && isRef(oldValue) && !isRef(value)) {\n return false;\n }\n if (!shallow) {\n if (!isShallow(value) && !isReadonly(value)) {\n oldValue = toRaw(oldValue);\n value = toRaw(value);\n }\n if (!(0,_vue_shared__WEBPACK_IMPORTED_MODULE_1__.isArray)(target) && isRef(oldValue) && !isRef(value)) {\n oldValue.value = value;\n return true;\n }\n }\n const hadKey = (0,_vue_shared__WEBPACK_IMPORTED_MODULE_1__.isArray)(target) && (0,_vue_shared__WEBPACK_IMPORTED_MODULE_1__.isIntegerKey)(key) ? Number(key) < target.length : (0,_vue_shared__WEBPACK_IMPORTED_MODULE_1__.hasOwn)(target, key);\n const result = Reflect.set(target, key, value, receiver);\n // don't trigger if target is something up in the prototype chain of original\n if (target === toRaw(receiver)) {\n if (!hadKey) {\n trigger(target, \"add\" /* TriggerOpTypes.ADD */, key, value);\n } else if ((0,_vue_shared__WEBPACK_IMPORTED_MODULE_1__.hasChanged)(value, oldValue)) {\n trigger(target, \"set\" /* TriggerOpTypes.SET */, key, value, oldValue);\n }\n }\n return result;\n };\n}\nfunction deleteProperty(target, key) {\n const hadKey = (0,_vue_shared__WEBPACK_IMPORTED_MODULE_1__.hasOwn)(target, key);\n const oldValue = target[key];\n const result = Reflect.deleteProperty(target, key);\n if (result && hadKey) {\n trigger(target, \"delete\" /* TriggerOpTypes.DELETE */, key, undefined, oldValue);\n }\n return result;\n}\nfunction has(target, key) {\n const result = Reflect.has(target, key);\n if (!(0,_vue_shared__WEBPACK_IMPORTED_MODULE_1__.isSymbol)(key) || !builtInSymbols.has(key)) {\n track(target, \"has\" /* TrackOpTypes.HAS */, key);\n }\n return result;\n}\nfunction ownKeys(target) {\n track(target, \"iterate\" /* TrackOpTypes.ITERATE */, (0,_vue_shared__WEBPACK_IMPORTED_MODULE_1__.isArray)(target) ? 'length' : ITERATE_KEY);\n return Reflect.ownKeys(target);\n}\nconst mutableHandlers = {\n get,\n set,\n deleteProperty,\n has,\n ownKeys\n};\nconst readonlyHandlers = {\n get: readonlyGet,\n set(target, key) {\n if (true) {\n warn(`Set operation on key \"${String(key)}\" failed: target is readonly.`, target);\n }\n return true;\n },\n deleteProperty(target, key) {\n if (true) {\n warn(`Delete operation on key \"${String(key)}\" failed: target is readonly.`, target);\n }\n return true;\n }\n};\nconst shallowReactiveHandlers = /*#__PURE__*/(0,_vue_shared__WEBPACK_IMPORTED_MODULE_1__.extend)({}, mutableHandlers, {\n get: shallowGet,\n set: shallowSet\n});\n// Props handlers are special in the sense that it should not unwrap top-level\n// refs (in order to allow refs to be explicitly passed down), but should\n// retain the reactivity of the normal readonly object.\nconst shallowReadonlyHandlers = /*#__PURE__*/(0,_vue_shared__WEBPACK_IMPORTED_MODULE_1__.extend)({}, readonlyHandlers, {\n get: shallowReadonlyGet\n});\nconst toShallow = value => value;\nconst getProto = v => Reflect.getPrototypeOf(v);\nfunction get$1(target, key, isReadonly = false, isShallow = false) {\n // #1772: readonly(reactive(Map)) should return readonly + reactive version\n // of the value\n target = target[\"__v_raw\" /* ReactiveFlags.RAW */];\n const rawTarget = toRaw(target);\n const rawKey = toRaw(key);\n if (!isReadonly) {\n if (key !== rawKey) {\n track(rawTarget, \"get\" /* TrackOpTypes.GET */, key);\n }\n track(rawTarget, \"get\" /* TrackOpTypes.GET */, rawKey);\n }\n const {\n has\n } = getProto(rawTarget);\n const wrap = isShallow ? toShallow : isReadonly ? toReadonly : toReactive;\n if (has.call(rawTarget, key)) {\n return wrap(target.get(key));\n } else if (has.call(rawTarget, rawKey)) {\n return wrap(target.get(rawKey));\n } else if (target !== rawTarget) {\n // #3602 readonly(reactive(Map))\n // ensure that the nested reactive `Map` can do tracking for itself\n target.get(key);\n }\n}\nfunction has$1(key, isReadonly = false) {\n const target = this[\"__v_raw\" /* ReactiveFlags.RAW */];\n const rawTarget = toRaw(target);\n const rawKey = toRaw(key);\n if (!isReadonly) {\n if (key !== rawKey) {\n track(rawTarget, \"has\" /* TrackOpTypes.HAS */, key);\n }\n track(rawTarget, \"has\" /* TrackOpTypes.HAS */, rawKey);\n }\n return key === rawKey ? target.has(key) : target.has(key) || target.has(rawKey);\n}\nfunction size(target, isReadonly = false) {\n target = target[\"__v_raw\" /* ReactiveFlags.RAW */];\n !isReadonly && track(toRaw(target), \"iterate\" /* TrackOpTypes.ITERATE */, ITERATE_KEY);\n return Reflect.get(target, 'size', target);\n}\nfunction add(value) {\n value = toRaw(value);\n const target = toRaw(this);\n const proto = getProto(target);\n const hadKey = proto.has.call(target, value);\n if (!hadKey) {\n target.add(value);\n trigger(target, \"add\" /* TriggerOpTypes.ADD */, value, value);\n }\n return this;\n}\nfunction set$1(key, value) {\n value = toRaw(value);\n const target = toRaw(this);\n const {\n has,\n get\n } = getProto(target);\n let hadKey = has.call(target, key);\n if (!hadKey) {\n key = toRaw(key);\n hadKey = has.call(target, key);\n } else if (true) {\n checkIdentityKeys(target, has, key);\n }\n const oldValue = get.call(target, key);\n target.set(key, value);\n if (!hadKey) {\n trigger(target, \"add\" /* TriggerOpTypes.ADD */, key, value);\n } else if ((0,_vue_shared__WEBPACK_IMPORTED_MODULE_1__.hasChanged)(value, oldValue)) {\n trigger(target, \"set\" /* TriggerOpTypes.SET */, key, value, oldValue);\n }\n return this;\n}\nfunction deleteEntry(key) {\n const target = toRaw(this);\n const {\n has,\n get\n } = getProto(target);\n let hadKey = has.call(target, key);\n if (!hadKey) {\n key = toRaw(key);\n hadKey = has.call(target, key);\n } else if (true) {\n checkIdentityKeys(target, has, key);\n }\n const oldValue = get ? get.call(target, key) : undefined;\n // forward the operation before queueing reactions\n const result = target.delete(key);\n if (hadKey) {\n trigger(target, \"delete\" /* TriggerOpTypes.DELETE */, key, undefined, oldValue);\n }\n return result;\n}\nfunction clear() {\n const target = toRaw(this);\n const hadItems = target.size !== 0;\n const oldTarget = true ? (0,_vue_shared__WEBPACK_IMPORTED_MODULE_1__.isMap)(target) ? new Map(target) : new Set(target) : 0;\n // forward the operation before queueing reactions\n const result = target.clear();\n if (hadItems) {\n trigger(target, \"clear\" /* TriggerOpTypes.CLEAR */, undefined, undefined, oldTarget);\n }\n return result;\n}\nfunction createForEach(isReadonly, isShallow) {\n return function forEach(callback, thisArg) {\n const observed = this;\n const target = observed[\"__v_raw\" /* ReactiveFlags.RAW */];\n const rawTarget = toRaw(target);\n const wrap = isShallow ? toShallow : isReadonly ? toReadonly : toReactive;\n !isReadonly && track(rawTarget, \"iterate\" /* TrackOpTypes.ITERATE */, ITERATE_KEY);\n return target.forEach((value, key) => {\n // important: make sure the callback is\n // 1. invoked with the reactive map as `this` and 3rd arg\n // 2. the value received should be a corresponding reactive/readonly.\n return callback.call(thisArg, wrap(value), wrap(key), observed);\n });\n };\n}\nfunction createIterableMethod(method, isReadonly, isShallow) {\n return function (...args) {\n const target = this[\"__v_raw\" /* ReactiveFlags.RAW */];\n const rawTarget = toRaw(target);\n const targetIsMap = (0,_vue_shared__WEBPACK_IMPORTED_MODULE_1__.isMap)(rawTarget);\n const isPair = method === 'entries' || method === Symbol.iterator && targetIsMap;\n const isKeyOnly = method === 'keys' && targetIsMap;\n const innerIterator = target[method](...args);\n const wrap = isShallow ? toShallow : isReadonly ? toReadonly : toReactive;\n !isReadonly && track(rawTarget, \"iterate\" /* TrackOpTypes.ITERATE */, isKeyOnly ? MAP_KEY_ITERATE_KEY : ITERATE_KEY);\n // return a wrapped iterator which returns observed versions of the\n // values emitted from the real iterator\n return {\n // iterator protocol\n next() {\n const {\n value,\n done\n } = innerIterator.next();\n return done ? {\n value,\n done\n } : {\n value: isPair ? [wrap(value[0]), wrap(value[1])] : wrap(value),\n done\n };\n },\n // iterable protocol\n [Symbol.iterator]() {\n return this;\n }\n };\n };\n}\nfunction createReadonlyMethod(type) {\n return function (...args) {\n if (true) {\n const key = args[0] ? `on key \"${args[0]}\" ` : ``;\n console.warn(`${(0,_vue_shared__WEBPACK_IMPORTED_MODULE_1__.capitalize)(type)} operation ${key}failed: target is readonly.`, toRaw(this));\n }\n return type === \"delete\" /* TriggerOpTypes.DELETE */ ? false : this;\n };\n}\nfunction createInstrumentations() {\n const mutableInstrumentations = {\n get(key) {\n return get$1(this, key);\n },\n get size() {\n return size(this);\n },\n has: has$1,\n add,\n set: set$1,\n delete: deleteEntry,\n clear,\n forEach: createForEach(false, false)\n };\n const shallowInstrumentations = {\n get(key) {\n return get$1(this, key, false, true);\n },\n get size() {\n return size(this);\n },\n has: has$1,\n add,\n set: set$1,\n delete: deleteEntry,\n clear,\n forEach: createForEach(false, true)\n };\n const readonlyInstrumentations = {\n get(key) {\n return get$1(this, key, true);\n },\n get size() {\n return size(this, true);\n },\n has(key) {\n return has$1.call(this, key, true);\n },\n add: createReadonlyMethod(\"add\" /* TriggerOpTypes.ADD */),\n set: createReadonlyMethod(\"set\" /* TriggerOpTypes.SET */),\n delete: createReadonlyMethod(\"delete\" /* TriggerOpTypes.DELETE */),\n clear: createReadonlyMethod(\"clear\" /* TriggerOpTypes.CLEAR */),\n forEach: createForEach(true, false)\n };\n const shallowReadonlyInstrumentations = {\n get(key) {\n return get$1(this, key, true, true);\n },\n get size() {\n return size(this, true);\n },\n has(key) {\n return has$1.call(this, key, true);\n },\n add: createReadonlyMethod(\"add\" /* TriggerOpTypes.ADD */),\n set: createReadonlyMethod(\"set\" /* TriggerOpTypes.SET */),\n delete: createReadonlyMethod(\"delete\" /* TriggerOpTypes.DELETE */),\n clear: createReadonlyMethod(\"clear\" /* TriggerOpTypes.CLEAR */),\n forEach: createForEach(true, true)\n };\n const iteratorMethods = ['keys', 'values', 'entries', Symbol.iterator];\n iteratorMethods.forEach(method => {\n mutableInstrumentations[method] = createIterableMethod(method, false, false);\n readonlyInstrumentations[method] = createIterableMethod(method, true, false);\n shallowInstrumentations[method] = createIterableMethod(method, false, true);\n shallowReadonlyInstrumentations[method] = createIterableMethod(method, true, true);\n });\n return [mutableInstrumentations, readonlyInstrumentations, shallowInstrumentations, shallowReadonlyInstrumentations];\n}\nconst [mutableInstrumentations, readonlyInstrumentations, shallowInstrumentations, shallowReadonlyInstrumentations] = /* #__PURE__*/createInstrumentations();\nfunction createInstrumentationGetter(isReadonly, shallow) {\n const instrumentations = shallow ? isReadonly ? shallowReadonlyInstrumentations : shallowInstrumentations : isReadonly ? readonlyInstrumentations : mutableInstrumentations;\n return (target, key, receiver) => {\n if (key === \"__v_isReactive\" /* ReactiveFlags.IS_REACTIVE */) {\n return !isReadonly;\n } else if (key === \"__v_isReadonly\" /* ReactiveFlags.IS_READONLY */) {\n return isReadonly;\n } else if (key === \"__v_raw\" /* ReactiveFlags.RAW */) {\n return target;\n }\n return Reflect.get((0,_vue_shared__WEBPACK_IMPORTED_MODULE_1__.hasOwn)(instrumentations, key) && key in target ? instrumentations : target, key, receiver);\n };\n}\nconst mutableCollectionHandlers = {\n get: /*#__PURE__*/createInstrumentationGetter(false, false)\n};\nconst shallowCollectionHandlers = {\n get: /*#__PURE__*/createInstrumentationGetter(false, true)\n};\nconst readonlyCollectionHandlers = {\n get: /*#__PURE__*/createInstrumentationGetter(true, false)\n};\nconst shallowReadonlyCollectionHandlers = {\n get: /*#__PURE__*/createInstrumentationGetter(true, true)\n};\nfunction checkIdentityKeys(target, has, key) {\n const rawKey = toRaw(key);\n if (rawKey !== key && has.call(target, rawKey)) {\n const type = (0,_vue_shared__WEBPACK_IMPORTED_MODULE_1__.toRawType)(target);\n console.warn(`Reactive ${type} contains both the raw and reactive ` + `versions of the same object${type === `Map` ? ` as keys` : ``}, ` + `which can lead to inconsistencies. ` + `Avoid differentiating between the raw and reactive versions ` + `of an object and only use the reactive version if possible.`);\n }\n}\nconst reactiveMap = new WeakMap();\nconst shallowReactiveMap = new WeakMap();\nconst readonlyMap = new WeakMap();\nconst shallowReadonlyMap = new WeakMap();\nfunction targetTypeMap(rawType) {\n switch (rawType) {\n case 'Object':\n case 'Array':\n return 1 /* TargetType.COMMON */;\n case 'Map':\n case 'Set':\n case 'WeakMap':\n case 'WeakSet':\n return 2 /* TargetType.COLLECTION */;\n default:\n return 0 /* TargetType.INVALID */;\n }\n}\n\nfunction getTargetType(value) {\n return value[\"__v_skip\" /* ReactiveFlags.SKIP */] || !Object.isExtensible(value) ? 0 /* TargetType.INVALID */ : targetTypeMap((0,_vue_shared__WEBPACK_IMPORTED_MODULE_1__.toRawType)(value));\n}\nfunction reactive(target) {\n // if trying to observe a readonly proxy, return the readonly version.\n if (isReadonly(target)) {\n return target;\n }\n return createReactiveObject(target, false, mutableHandlers, mutableCollectionHandlers, reactiveMap);\n}\n/**\n * Return a shallowly-reactive copy of the original object, where only the root\n * level properties are reactive. It also does not auto-unwrap refs (even at the\n * root level).\n */\nfunction shallowReactive(target) {\n return createReactiveObject(target, false, shallowReactiveHandlers, shallowCollectionHandlers, shallowReactiveMap);\n}\n/**\n * Creates a readonly copy of the original object. Note the returned copy is not\n * made reactive, but `readonly` can be called on an already reactive object.\n */\nfunction readonly(target) {\n return createReactiveObject(target, true, readonlyHandlers, readonlyCollectionHandlers, readonlyMap);\n}\n/**\n * Returns a reactive-copy of the original object, where only the root level\n * properties are readonly, and does NOT unwrap refs nor recursively convert\n * returned properties.\n * This is used for creating the props proxy object for stateful components.\n */\nfunction shallowReadonly(target) {\n return createReactiveObject(target, true, shallowReadonlyHandlers, shallowReadonlyCollectionHandlers, shallowReadonlyMap);\n}\nfunction createReactiveObject(target, isReadonly, baseHandlers, collectionHandlers, proxyMap) {\n if (!(0,_vue_shared__WEBPACK_IMPORTED_MODULE_1__.isObject)(target)) {\n if (true) {\n console.warn(`value cannot be made reactive: ${String(target)}`);\n }\n return target;\n }\n // target is already a Proxy, return it.\n // exception: calling readonly() on a reactive object\n if (target[\"__v_raw\" /* ReactiveFlags.RAW */] && !(isReadonly && target[\"__v_isReactive\" /* ReactiveFlags.IS_REACTIVE */])) {\n return target;\n }\n // target already has corresponding Proxy\n const existingProxy = proxyMap.get(target);\n if (existingProxy) {\n return existingProxy;\n }\n // only specific value types can be observed.\n const targetType = getTargetType(target);\n if (targetType === 0 /* TargetType.INVALID */) {\n return target;\n }\n const proxy = new Proxy(target, targetType === 2 /* TargetType.COLLECTION */ ? collectionHandlers : baseHandlers);\n proxyMap.set(target, proxy);\n return proxy;\n}\nfunction isReactive(value) {\n if (isReadonly(value)) {\n return isReactive(value[\"__v_raw\" /* ReactiveFlags.RAW */]);\n }\n\n return !!(value && value[\"__v_isReactive\" /* ReactiveFlags.IS_REACTIVE */]);\n}\n\nfunction isReadonly(value) {\n return !!(value && value[\"__v_isReadonly\" /* ReactiveFlags.IS_READONLY */]);\n}\n\nfunction isShallow(value) {\n return !!(value && value[\"__v_isShallow\" /* ReactiveFlags.IS_SHALLOW */]);\n}\n\nfunction isProxy(value) {\n return isReactive(value) || isReadonly(value);\n}\nfunction toRaw(observed) {\n const raw = observed && observed[\"__v_raw\" /* ReactiveFlags.RAW */];\n return raw ? toRaw(raw) : observed;\n}\nfunction markRaw(value) {\n (0,_vue_shared__WEBPACK_IMPORTED_MODULE_1__.def)(value, \"__v_skip\" /* ReactiveFlags.SKIP */, true);\n return value;\n}\nconst toReactive = value => (0,_vue_shared__WEBPACK_IMPORTED_MODULE_1__.isObject)(value) ? reactive(value) : value;\nconst toReadonly = value => (0,_vue_shared__WEBPACK_IMPORTED_MODULE_1__.isObject)(value) ? readonly(value) : value;\nfunction trackRefValue(ref) {\n if (shouldTrack && activeEffect) {\n ref = toRaw(ref);\n if (true) {\n trackEffects(ref.dep || (ref.dep = createDep()), {\n target: ref,\n type: \"get\" /* TrackOpTypes.GET */,\n key: 'value'\n });\n } else {}\n }\n}\nfunction triggerRefValue(ref, newVal) {\n ref = toRaw(ref);\n if (ref.dep) {\n if (true) {\n triggerEffects(ref.dep, {\n target: ref,\n type: \"set\" /* TriggerOpTypes.SET */,\n key: 'value',\n newValue: newVal\n });\n } else {}\n }\n}\nfunction isRef(r) {\n return !!(r && r.__v_isRef === true);\n}\nfunction ref(value) {\n return createRef(value, false);\n}\nfunction shallowRef(value) {\n return createRef(value, true);\n}\nfunction createRef(rawValue, shallow) {\n if (isRef(rawValue)) {\n return rawValue;\n }\n return new RefImpl(rawValue, shallow);\n}\nclass RefImpl {\n constructor(value, __v_isShallow) {\n this.__v_isShallow = __v_isShallow;\n this.dep = undefined;\n this.__v_isRef = true;\n this._rawValue = __v_isShallow ? value : toRaw(value);\n this._value = __v_isShallow ? value : toReactive(value);\n }\n get value() {\n trackRefValue(this);\n return this._value;\n }\n set value(newVal) {\n const useDirectValue = this.__v_isShallow || isShallow(newVal) || isReadonly(newVal);\n newVal = useDirectValue ? newVal : toRaw(newVal);\n if ((0,_vue_shared__WEBPACK_IMPORTED_MODULE_1__.hasChanged)(newVal, this._rawValue)) {\n this._rawValue = newVal;\n this._value = useDirectValue ? newVal : toReactive(newVal);\n triggerRefValue(this, newVal);\n }\n }\n}\nfunction triggerRef(ref) {\n triggerRefValue(ref, true ? ref.value : 0);\n}\nfunction unref(ref) {\n return isRef(ref) ? ref.value : ref;\n}\nconst shallowUnwrapHandlers = {\n get: (target, key, receiver) => unref(Reflect.get(target, key, receiver)),\n set: (target, key, value, receiver) => {\n const oldValue = target[key];\n if (isRef(oldValue) && !isRef(value)) {\n oldValue.value = value;\n return true;\n } else {\n return Reflect.set(target, key, value, receiver);\n }\n }\n};\nfunction proxyRefs(objectWithRefs) {\n return isReactive(objectWithRefs) ? objectWithRefs : new Proxy(objectWithRefs, shallowUnwrapHandlers);\n}\nclass CustomRefImpl {\n constructor(factory) {\n this.dep = undefined;\n this.__v_isRef = true;\n const {\n get,\n set\n } = factory(() => trackRefValue(this), () => triggerRefValue(this));\n this._get = get;\n this._set = set;\n }\n get value() {\n return this._get();\n }\n set value(newVal) {\n this._set(newVal);\n }\n}\nfunction customRef(factory) {\n return new CustomRefImpl(factory);\n}\nfunction toRefs(object) {\n if ( true && !isProxy(object)) {\n console.warn(`toRefs() expects a reactive object but received a plain one.`);\n }\n const ret = (0,_vue_shared__WEBPACK_IMPORTED_MODULE_1__.isArray)(object) ? new Array(object.length) : {};\n for (const key in object) {\n ret[key] = toRef(object, key);\n }\n return ret;\n}\nclass ObjectRefImpl {\n constructor(_object, _key, _defaultValue) {\n this._object = _object;\n this._key = _key;\n this._defaultValue = _defaultValue;\n this.__v_isRef = true;\n }\n get value() {\n const val = this._object[this._key];\n return val === undefined ? this._defaultValue : val;\n }\n set value(newVal) {\n this._object[this._key] = newVal;\n }\n}\nfunction toRef(object, key, defaultValue) {\n const val = object[key];\n return isRef(val) ? val : new ObjectRefImpl(object, key, defaultValue);\n}\nvar _a;\nclass ComputedRefImpl {\n constructor(getter, _setter, isReadonly, isSSR) {\n this._setter = _setter;\n this.dep = undefined;\n this.__v_isRef = true;\n this[_a] = false;\n this._dirty = true;\n this.effect = new ReactiveEffect(getter, () => {\n if (!this._dirty) {\n this._dirty = true;\n triggerRefValue(this);\n }\n });\n this.effect.computed = this;\n this.effect.active = this._cacheable = !isSSR;\n this[\"__v_isReadonly\" /* ReactiveFlags.IS_READONLY */] = isReadonly;\n }\n get value() {\n // the computed ref may get wrapped by other proxies e.g. readonly() #3376\n const self = toRaw(this);\n trackRefValue(self);\n if (self._dirty || !self._cacheable) {\n self._dirty = false;\n self._value = self.effect.run();\n }\n return self._value;\n }\n set value(newValue) {\n this._setter(newValue);\n }\n}\n_a = \"__v_isReadonly\" /* ReactiveFlags.IS_READONLY */;\nfunction computed(getterOrOptions, debugOptions, isSSR = false) {\n let getter;\n let setter;\n const onlyGetter = (0,_vue_shared__WEBPACK_IMPORTED_MODULE_1__.isFunction)(getterOrOptions);\n if (onlyGetter) {\n getter = getterOrOptions;\n setter = true ? () => {\n console.warn('Write operation failed: computed value is readonly');\n } : 0;\n } else {\n getter = getterOrOptions.get;\n setter = getterOrOptions.set;\n }\n const cRef = new ComputedRefImpl(getter, setter, onlyGetter || !setter, isSSR);\n if ( true && debugOptions && !isSSR) {\n cRef.effect.onTrack = debugOptions.onTrack;\n cRef.effect.onTrigger = debugOptions.onTrigger;\n }\n return cRef;\n}\nvar _a$1;\nconst tick = /*#__PURE__*/Promise.resolve();\nconst queue = [];\nlet queued = false;\nconst scheduler = fn => {\n queue.push(fn);\n if (!queued) {\n queued = true;\n tick.then(flush);\n }\n};\nconst flush = () => {\n for (let i = 0; i < queue.length; i++) {\n queue[i]();\n }\n queue.length = 0;\n queued = false;\n};\nclass DeferredComputedRefImpl {\n constructor(getter) {\n this.dep = undefined;\n this._dirty = true;\n this.__v_isRef = true;\n this[_a$1] = true;\n let compareTarget;\n let hasCompareTarget = false;\n let scheduled = false;\n this.effect = new ReactiveEffect(getter, computedTrigger => {\n if (this.dep) {\n if (computedTrigger) {\n compareTarget = this._value;\n hasCompareTarget = true;\n } else if (!scheduled) {\n const valueToCompare = hasCompareTarget ? compareTarget : this._value;\n scheduled = true;\n hasCompareTarget = false;\n scheduler(() => {\n if (this.effect.active && this._get() !== valueToCompare) {\n triggerRefValue(this);\n }\n scheduled = false;\n });\n }\n // chained upstream computeds are notified synchronously to ensure\n // value invalidation in case of sync access; normal effects are\n // deferred to be triggered in scheduler.\n for (const e of this.dep) {\n if (e.computed instanceof DeferredComputedRefImpl) {\n e.scheduler(true /* computedTrigger */);\n }\n }\n }\n\n this._dirty = true;\n });\n this.effect.computed = this;\n }\n _get() {\n if (this._dirty) {\n this._dirty = false;\n return this._value = this.effect.run();\n }\n return this._value;\n }\n get value() {\n trackRefValue(this);\n // the computed ref may get wrapped by other proxies e.g. readonly() #3376\n return toRaw(this)._get();\n }\n}\n_a$1 = \"__v_isReadonly\" /* ReactiveFlags.IS_READONLY */;\nfunction deferredComputed(getter) {\n return new DeferredComputedRefImpl(getter);\n}\n\n\n//# sourceURL=webpack://jandl/./node_modules/@vue/reactivity/dist/reactivity.esm-bundler.js?"); - -/***/ }), - -/***/ "./node_modules/@vue/runtime-core/dist/runtime-core.esm-bundler.js": -/*!*************************************************************************!*\ - !*** ./node_modules/@vue/runtime-core/dist/runtime-core.esm-bundler.js ***! - \*************************************************************************/ -/***/ (function(__unused_webpack_module, __webpack_exports__, __webpack_require__) { - -"use strict"; -eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"BaseTransition\": function() { return /* binding */ BaseTransition; },\n/* harmony export */ \"Comment\": function() { return /* binding */ Comment; },\n/* harmony export */ \"EffectScope\": function() { return /* reexport safe */ _vue_reactivity__WEBPACK_IMPORTED_MODULE_2__.EffectScope; },\n/* harmony export */ \"Fragment\": function() { return /* binding */ Fragment; },\n/* harmony export */ \"KeepAlive\": function() { return /* binding */ KeepAlive; },\n/* harmony export */ \"ReactiveEffect\": function() { return /* reexport safe */ _vue_reactivity__WEBPACK_IMPORTED_MODULE_2__.ReactiveEffect; },\n/* harmony export */ \"Static\": function() { return /* binding */ Static; },\n/* harmony export */ \"Suspense\": function() { return /* binding */ Suspense; },\n/* harmony export */ \"Teleport\": function() { return /* binding */ Teleport; },\n/* harmony export */ \"Text\": function() { return /* binding */ Text; },\n/* harmony export */ \"callWithAsyncErrorHandling\": function() { return /* binding */ callWithAsyncErrorHandling; },\n/* harmony export */ \"callWithErrorHandling\": function() { return /* binding */ callWithErrorHandling; },\n/* harmony export */ \"camelize\": function() { return /* reexport safe */ _vue_shared__WEBPACK_IMPORTED_MODULE_3__.camelize; },\n/* harmony export */ \"capitalize\": function() { return /* reexport safe */ _vue_shared__WEBPACK_IMPORTED_MODULE_3__.capitalize; },\n/* harmony export */ \"cloneVNode\": function() { return /* binding */ cloneVNode; },\n/* harmony export */ \"compatUtils\": function() { return /* binding */ compatUtils; },\n/* harmony export */ \"computed\": function() { return /* binding */ computed; },\n/* harmony export */ \"createBlock\": function() { return /* binding */ createBlock; },\n/* harmony export */ \"createCommentVNode\": function() { return /* binding */ createCommentVNode; },\n/* harmony export */ \"createElementBlock\": function() { return /* binding */ createElementBlock; },\n/* harmony export */ \"createElementVNode\": function() { return /* binding */ createBaseVNode; },\n/* harmony export */ \"createHydrationRenderer\": function() { return /* binding */ createHydrationRenderer; },\n/* harmony export */ \"createPropsRestProxy\": function() { return /* binding */ createPropsRestProxy; },\n/* harmony export */ \"createRenderer\": function() { return /* binding */ createRenderer; },\n/* harmony export */ \"createSlots\": function() { return /* binding */ createSlots; },\n/* harmony export */ \"createStaticVNode\": function() { return /* binding */ createStaticVNode; },\n/* harmony export */ \"createTextVNode\": function() { return /* binding */ createTextVNode; },\n/* harmony export */ \"createVNode\": function() { return /* binding */ createVNode; },\n/* harmony export */ \"customRef\": function() { return /* reexport safe */ _vue_reactivity__WEBPACK_IMPORTED_MODULE_2__.customRef; },\n/* harmony export */ \"defineAsyncComponent\": function() { return /* binding */ defineAsyncComponent; },\n/* harmony export */ \"defineComponent\": function() { return /* binding */ defineComponent; },\n/* harmony export */ \"defineEmits\": function() { return /* binding */ defineEmits; },\n/* harmony export */ \"defineExpose\": function() { return /* binding */ defineExpose; },\n/* harmony export */ \"defineProps\": function() { return /* binding */ defineProps; },\n/* harmony export */ \"devtools\": function() { return /* binding */ devtools; },\n/* harmony export */ \"effect\": function() { return /* reexport safe */ _vue_reactivity__WEBPACK_IMPORTED_MODULE_2__.effect; },\n/* harmony export */ \"effectScope\": function() { return /* reexport safe */ _vue_reactivity__WEBPACK_IMPORTED_MODULE_2__.effectScope; },\n/* harmony export */ \"getCurrentInstance\": function() { return /* binding */ getCurrentInstance; },\n/* harmony export */ \"getCurrentScope\": function() { return /* reexport safe */ _vue_reactivity__WEBPACK_IMPORTED_MODULE_2__.getCurrentScope; },\n/* harmony export */ \"getTransitionRawChildren\": function() { return /* binding */ getTransitionRawChildren; },\n/* harmony export */ \"guardReactiveProps\": function() { return /* binding */ guardReactiveProps; },\n/* harmony export */ \"h\": function() { return /* binding */ h; },\n/* harmony export */ \"handleError\": function() { return /* binding */ handleError; },\n/* harmony export */ \"initCustomFormatter\": function() { return /* binding */ initCustomFormatter; },\n/* harmony export */ \"inject\": function() { return /* binding */ inject; },\n/* harmony export */ \"isMemoSame\": function() { return /* binding */ isMemoSame; },\n/* harmony export */ \"isProxy\": function() { return /* reexport safe */ _vue_reactivity__WEBPACK_IMPORTED_MODULE_2__.isProxy; },\n/* harmony export */ \"isReactive\": function() { return /* reexport safe */ _vue_reactivity__WEBPACK_IMPORTED_MODULE_2__.isReactive; },\n/* harmony export */ \"isReadonly\": function() { return /* reexport safe */ _vue_reactivity__WEBPACK_IMPORTED_MODULE_2__.isReadonly; },\n/* harmony export */ \"isRef\": function() { return /* reexport safe */ _vue_reactivity__WEBPACK_IMPORTED_MODULE_2__.isRef; },\n/* harmony export */ \"isRuntimeOnly\": function() { return /* binding */ isRuntimeOnly; },\n/* harmony export */ \"isShallow\": function() { return /* reexport safe */ _vue_reactivity__WEBPACK_IMPORTED_MODULE_2__.isShallow; },\n/* harmony export */ \"isVNode\": function() { return /* binding */ isVNode; },\n/* harmony export */ \"markRaw\": function() { return /* reexport safe */ _vue_reactivity__WEBPACK_IMPORTED_MODULE_2__.markRaw; },\n/* harmony export */ \"mergeDefaults\": function() { return /* binding */ mergeDefaults; },\n/* harmony export */ \"mergeProps\": function() { return /* binding */ mergeProps; },\n/* harmony export */ \"nextTick\": function() { return /* binding */ nextTick; },\n/* harmony export */ \"normalizeClass\": function() { return /* reexport safe */ _vue_shared__WEBPACK_IMPORTED_MODULE_3__.normalizeClass; },\n/* harmony export */ \"normalizeProps\": function() { return /* reexport safe */ _vue_shared__WEBPACK_IMPORTED_MODULE_3__.normalizeProps; },\n/* harmony export */ \"normalizeStyle\": function() { return /* reexport safe */ _vue_shared__WEBPACK_IMPORTED_MODULE_3__.normalizeStyle; },\n/* harmony export */ \"onActivated\": function() { return /* binding */ onActivated; },\n/* harmony export */ \"onBeforeMount\": function() { return /* binding */ onBeforeMount; },\n/* harmony export */ \"onBeforeUnmount\": function() { return /* binding */ onBeforeUnmount; },\n/* harmony export */ \"onBeforeUpdate\": function() { return /* binding */ onBeforeUpdate; },\n/* harmony export */ \"onDeactivated\": function() { return /* binding */ onDeactivated; },\n/* harmony export */ \"onErrorCaptured\": function() { return /* binding */ onErrorCaptured; },\n/* harmony export */ \"onMounted\": function() { return /* binding */ onMounted; },\n/* harmony export */ \"onRenderTracked\": function() { return /* binding */ onRenderTracked; },\n/* harmony export */ \"onRenderTriggered\": function() { return /* binding */ onRenderTriggered; },\n/* harmony export */ \"onScopeDispose\": function() { return /* reexport safe */ _vue_reactivity__WEBPACK_IMPORTED_MODULE_2__.onScopeDispose; },\n/* harmony export */ \"onServerPrefetch\": function() { return /* binding */ onServerPrefetch; },\n/* harmony export */ \"onUnmounted\": function() { return /* binding */ onUnmounted; },\n/* harmony export */ \"onUpdated\": function() { return /* binding */ onUpdated; },\n/* harmony export */ \"openBlock\": function() { return /* binding */ openBlock; },\n/* harmony export */ \"popScopeId\": function() { return /* binding */ popScopeId; },\n/* harmony export */ \"provide\": function() { return /* binding */ provide; },\n/* harmony export */ \"proxyRefs\": function() { return /* reexport safe */ _vue_reactivity__WEBPACK_IMPORTED_MODULE_2__.proxyRefs; },\n/* harmony export */ \"pushScopeId\": function() { return /* binding */ pushScopeId; },\n/* harmony export */ \"queuePostFlushCb\": function() { return /* binding */ queuePostFlushCb; },\n/* harmony export */ \"reactive\": function() { return /* reexport safe */ _vue_reactivity__WEBPACK_IMPORTED_MODULE_2__.reactive; },\n/* harmony export */ \"readonly\": function() { return /* reexport safe */ _vue_reactivity__WEBPACK_IMPORTED_MODULE_2__.readonly; },\n/* harmony export */ \"ref\": function() { return /* reexport safe */ _vue_reactivity__WEBPACK_IMPORTED_MODULE_2__.ref; },\n/* harmony export */ \"registerRuntimeCompiler\": function() { return /* binding */ registerRuntimeCompiler; },\n/* harmony export */ \"renderList\": function() { return /* binding */ renderList; },\n/* harmony export */ \"renderSlot\": function() { return /* binding */ renderSlot; },\n/* harmony export */ \"resolveComponent\": function() { return /* binding */ resolveComponent; },\n/* harmony export */ \"resolveDirective\": function() { return /* binding */ resolveDirective; },\n/* harmony export */ \"resolveDynamicComponent\": function() { return /* binding */ resolveDynamicComponent; },\n/* harmony export */ \"resolveFilter\": function() { return /* binding */ resolveFilter; },\n/* harmony export */ \"resolveTransitionHooks\": function() { return /* binding */ resolveTransitionHooks; },\n/* harmony export */ \"setBlockTracking\": function() { return /* binding */ setBlockTracking; },\n/* harmony export */ \"setDevtoolsHook\": function() { return /* binding */ setDevtoolsHook; },\n/* harmony export */ \"setTransitionHooks\": function() { return /* binding */ setTransitionHooks; },\n/* harmony export */ \"shallowReactive\": function() { return /* reexport safe */ _vue_reactivity__WEBPACK_IMPORTED_MODULE_2__.shallowReactive; },\n/* harmony export */ \"shallowReadonly\": function() { return /* reexport safe */ _vue_reactivity__WEBPACK_IMPORTED_MODULE_2__.shallowReadonly; },\n/* harmony export */ \"shallowRef\": function() { return /* reexport safe */ _vue_reactivity__WEBPACK_IMPORTED_MODULE_2__.shallowRef; },\n/* harmony export */ \"ssrContextKey\": function() { return /* binding */ ssrContextKey; },\n/* harmony export */ \"ssrUtils\": function() { return /* binding */ ssrUtils; },\n/* harmony export */ \"stop\": function() { return /* reexport safe */ _vue_reactivity__WEBPACK_IMPORTED_MODULE_2__.stop; },\n/* harmony export */ \"toDisplayString\": function() { return /* reexport safe */ _vue_shared__WEBPACK_IMPORTED_MODULE_3__.toDisplayString; },\n/* harmony export */ \"toHandlerKey\": function() { return /* reexport safe */ _vue_shared__WEBPACK_IMPORTED_MODULE_3__.toHandlerKey; },\n/* harmony export */ \"toHandlers\": function() { return /* binding */ toHandlers; },\n/* harmony export */ \"toRaw\": function() { return /* reexport safe */ _vue_reactivity__WEBPACK_IMPORTED_MODULE_2__.toRaw; },\n/* harmony export */ \"toRef\": function() { return /* reexport safe */ _vue_reactivity__WEBPACK_IMPORTED_MODULE_2__.toRef; },\n/* harmony export */ \"toRefs\": function() { return /* reexport safe */ _vue_reactivity__WEBPACK_IMPORTED_MODULE_2__.toRefs; },\n/* harmony export */ \"transformVNodeArgs\": function() { return /* binding */ transformVNodeArgs; },\n/* harmony export */ \"triggerRef\": function() { return /* reexport safe */ _vue_reactivity__WEBPACK_IMPORTED_MODULE_2__.triggerRef; },\n/* harmony export */ \"unref\": function() { return /* reexport safe */ _vue_reactivity__WEBPACK_IMPORTED_MODULE_2__.unref; },\n/* harmony export */ \"useAttrs\": function() { return /* binding */ useAttrs; },\n/* harmony export */ \"useSSRContext\": function() { return /* binding */ useSSRContext; },\n/* harmony export */ \"useSlots\": function() { return /* binding */ useSlots; },\n/* harmony export */ \"useTransitionState\": function() { return /* binding */ useTransitionState; },\n/* harmony export */ \"version\": function() { return /* binding */ version; },\n/* harmony export */ \"warn\": function() { return /* binding */ warn; },\n/* harmony export */ \"watch\": function() { return /* binding */ watch; },\n/* harmony export */ \"watchEffect\": function() { return /* binding */ watchEffect; },\n/* harmony export */ \"watchPostEffect\": function() { return /* binding */ watchPostEffect; },\n/* harmony export */ \"watchSyncEffect\": function() { return /* binding */ watchSyncEffect; },\n/* harmony export */ \"withAsyncContext\": function() { return /* binding */ withAsyncContext; },\n/* harmony export */ \"withCtx\": function() { return /* binding */ withCtx; },\n/* harmony export */ \"withDefaults\": function() { return /* binding */ withDefaults; },\n/* harmony export */ \"withDirectives\": function() { return /* binding */ withDirectives; },\n/* harmony export */ \"withMemo\": function() { return /* binding */ withMemo; },\n/* harmony export */ \"withScopeId\": function() { return /* binding */ withScopeId; }\n/* harmony export */ });\n/* harmony import */ var core_js_modules_es_array_push_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! core-js/modules/es.array.push.js */ \"./node_modules/core-js/modules/es.array.push.js\");\n/* harmony import */ var core_js_modules_es_array_push_js__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_array_push_js__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var core_js_modules_es_array_unshift_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! core-js/modules/es.array.unshift.js */ \"./node_modules/core-js/modules/es.array.unshift.js\");\n/* harmony import */ var core_js_modules_es_array_unshift_js__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_array_unshift_js__WEBPACK_IMPORTED_MODULE_1__);\n/* harmony import */ var _vue_reactivity__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! @vue/reactivity */ \"./node_modules/@vue/reactivity/dist/reactivity.esm-bundler.js\");\n/* harmony import */ var _vue_shared__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! @vue/shared */ \"./node_modules/@vue/shared/dist/shared.esm-bundler.js\");\n/* provided dependency */ var console = __webpack_require__(/*! ./node_modules/console-browserify/index.js */ \"./node_modules/console-browserify/index.js\");\n\n\n\n\n\n\nconst stack = [];\nfunction pushWarningContext(vnode) {\n stack.push(vnode);\n}\nfunction popWarningContext() {\n stack.pop();\n}\nfunction warn(msg, ...args) {\n if (false) {}\n // avoid props formatting or warn handler tracking deps that might be mutated\n // during patch, leading to infinite recursion.\n (0,_vue_reactivity__WEBPACK_IMPORTED_MODULE_2__.pauseTracking)();\n const instance = stack.length ? stack[stack.length - 1].component : null;\n const appWarnHandler = instance && instance.appContext.config.warnHandler;\n const trace = getComponentTrace();\n if (appWarnHandler) {\n callWithErrorHandling(appWarnHandler, instance, 11 /* ErrorCodes.APP_WARN_HANDLER */, [msg + args.join(''), instance && instance.proxy, trace.map(({\n vnode\n }) => `at <${formatComponentName(instance, vnode.type)}>`).join('\\n'), trace]);\n } else {\n const warnArgs = [`[Vue warn]: ${msg}`, ...args];\n /* istanbul ignore if */\n if (trace.length &&\n // avoid spamming console during tests\n !false) {\n warnArgs.push(`\\n`, ...formatTrace(trace));\n }\n console.warn(...warnArgs);\n }\n (0,_vue_reactivity__WEBPACK_IMPORTED_MODULE_2__.resetTracking)();\n}\nfunction getComponentTrace() {\n let currentVNode = stack[stack.length - 1];\n if (!currentVNode) {\n return [];\n }\n // we can't just use the stack because it will be incomplete during updates\n // that did not start from the root. Re-construct the parent chain using\n // instance parent pointers.\n const normalizedStack = [];\n while (currentVNode) {\n const last = normalizedStack[0];\n if (last && last.vnode === currentVNode) {\n last.recurseCount++;\n } else {\n normalizedStack.push({\n vnode: currentVNode,\n recurseCount: 0\n });\n }\n const parentInstance = currentVNode.component && currentVNode.component.parent;\n currentVNode = parentInstance && parentInstance.vnode;\n }\n return normalizedStack;\n}\n/* istanbul ignore next */\nfunction formatTrace(trace) {\n const logs = [];\n trace.forEach((entry, i) => {\n logs.push(...(i === 0 ? [] : [`\\n`]), ...formatTraceEntry(entry));\n });\n return logs;\n}\nfunction formatTraceEntry({\n vnode,\n recurseCount\n}) {\n const postfix = recurseCount > 0 ? `... (${recurseCount} recursive calls)` : ``;\n const isRoot = vnode.component ? vnode.component.parent == null : false;\n const open = ` at <${formatComponentName(vnode.component, vnode.type, isRoot)}`;\n const close = `>` + postfix;\n return vnode.props ? [open, ...formatProps(vnode.props), close] : [open + close];\n}\n/* istanbul ignore next */\nfunction formatProps(props) {\n const res = [];\n const keys = Object.keys(props);\n keys.slice(0, 3).forEach(key => {\n res.push(...formatProp(key, props[key]));\n });\n if (keys.length > 3) {\n res.push(` ...`);\n }\n return res;\n}\n/* istanbul ignore next */\nfunction formatProp(key, value, raw) {\n if ((0,_vue_shared__WEBPACK_IMPORTED_MODULE_3__.isString)(value)) {\n value = JSON.stringify(value);\n return raw ? value : [`${key}=${value}`];\n } else if (typeof value === 'number' || typeof value === 'boolean' || value == null) {\n return raw ? value : [`${key}=${value}`];\n } else if ((0,_vue_reactivity__WEBPACK_IMPORTED_MODULE_2__.isRef)(value)) {\n value = formatProp(key, (0,_vue_reactivity__WEBPACK_IMPORTED_MODULE_2__.toRaw)(value.value), true);\n return raw ? value : [`${key}=Ref<`, value, `>`];\n } else if ((0,_vue_shared__WEBPACK_IMPORTED_MODULE_3__.isFunction)(value)) {\n return [`${key}=fn${value.name ? `<${value.name}>` : ``}`];\n } else {\n value = (0,_vue_reactivity__WEBPACK_IMPORTED_MODULE_2__.toRaw)(value);\n return raw ? value : [`${key}=`, value];\n }\n}\nconst ErrorTypeStrings = {\n [\"sp\" /* LifecycleHooks.SERVER_PREFETCH */]: 'serverPrefetch hook',\n [\"bc\" /* LifecycleHooks.BEFORE_CREATE */]: 'beforeCreate hook',\n [\"c\" /* LifecycleHooks.CREATED */]: 'created hook',\n [\"bm\" /* LifecycleHooks.BEFORE_MOUNT */]: 'beforeMount hook',\n [\"m\" /* LifecycleHooks.MOUNTED */]: 'mounted hook',\n [\"bu\" /* LifecycleHooks.BEFORE_UPDATE */]: 'beforeUpdate hook',\n [\"u\" /* LifecycleHooks.UPDATED */]: 'updated',\n [\"bum\" /* LifecycleHooks.BEFORE_UNMOUNT */]: 'beforeUnmount hook',\n [\"um\" /* LifecycleHooks.UNMOUNTED */]: 'unmounted hook',\n [\"a\" /* LifecycleHooks.ACTIVATED */]: 'activated hook',\n [\"da\" /* LifecycleHooks.DEACTIVATED */]: 'deactivated hook',\n [\"ec\" /* LifecycleHooks.ERROR_CAPTURED */]: 'errorCaptured hook',\n [\"rtc\" /* LifecycleHooks.RENDER_TRACKED */]: 'renderTracked hook',\n [\"rtg\" /* LifecycleHooks.RENDER_TRIGGERED */]: 'renderTriggered hook',\n [0 /* ErrorCodes.SETUP_FUNCTION */]: 'setup function',\n [1 /* ErrorCodes.RENDER_FUNCTION */]: 'render function',\n [2 /* ErrorCodes.WATCH_GETTER */]: 'watcher getter',\n [3 /* ErrorCodes.WATCH_CALLBACK */]: 'watcher callback',\n [4 /* ErrorCodes.WATCH_CLEANUP */]: 'watcher cleanup function',\n [5 /* ErrorCodes.NATIVE_EVENT_HANDLER */]: 'native event handler',\n [6 /* ErrorCodes.COMPONENT_EVENT_HANDLER */]: 'component event handler',\n [7 /* ErrorCodes.VNODE_HOOK */]: 'vnode hook',\n [8 /* ErrorCodes.DIRECTIVE_HOOK */]: 'directive hook',\n [9 /* ErrorCodes.TRANSITION_HOOK */]: 'transition hook',\n [10 /* ErrorCodes.APP_ERROR_HANDLER */]: 'app errorHandler',\n [11 /* ErrorCodes.APP_WARN_HANDLER */]: 'app warnHandler',\n [12 /* ErrorCodes.FUNCTION_REF */]: 'ref function',\n [13 /* ErrorCodes.ASYNC_COMPONENT_LOADER */]: 'async component loader',\n [14 /* ErrorCodes.SCHEDULER */]: 'scheduler flush. This is likely a Vue internals bug. ' + 'Please open an issue at https://new-issue.vuejs.org/?repo=vuejs/core'\n};\nfunction callWithErrorHandling(fn, instance, type, args) {\n let res;\n try {\n res = args ? fn(...args) : fn();\n } catch (err) {\n handleError(err, instance, type);\n }\n return res;\n}\nfunction callWithAsyncErrorHandling(fn, instance, type, args) {\n if ((0,_vue_shared__WEBPACK_IMPORTED_MODULE_3__.isFunction)(fn)) {\n const res = callWithErrorHandling(fn, instance, type, args);\n if (res && (0,_vue_shared__WEBPACK_IMPORTED_MODULE_3__.isPromise)(res)) {\n res.catch(err => {\n handleError(err, instance, type);\n });\n }\n return res;\n }\n const values = [];\n for (let i = 0; i < fn.length; i++) {\n values.push(callWithAsyncErrorHandling(fn[i], instance, type, args));\n }\n return values;\n}\nfunction handleError(err, instance, type, throwInDev = true) {\n const contextVNode = instance ? instance.vnode : null;\n if (instance) {\n let cur = instance.parent;\n // the exposed instance is the render proxy to keep it consistent with 2.x\n const exposedInstance = instance.proxy;\n // in production the hook receives only the error code\n const errorInfo = true ? ErrorTypeStrings[type] : 0;\n while (cur) {\n const errorCapturedHooks = cur.ec;\n if (errorCapturedHooks) {\n for (let i = 0; i < errorCapturedHooks.length; i++) {\n if (errorCapturedHooks[i](err, exposedInstance, errorInfo) === false) {\n return;\n }\n }\n }\n cur = cur.parent;\n }\n // app-level handling\n const appErrorHandler = instance.appContext.config.errorHandler;\n if (appErrorHandler) {\n callWithErrorHandling(appErrorHandler, null, 10 /* ErrorCodes.APP_ERROR_HANDLER */, [err, exposedInstance, errorInfo]);\n return;\n }\n }\n logError(err, type, contextVNode, throwInDev);\n}\nfunction logError(err, type, contextVNode, throwInDev = true) {\n if (true) {\n const info = ErrorTypeStrings[type];\n if (contextVNode) {\n pushWarningContext(contextVNode);\n }\n warn(`Unhandled error${info ? ` during execution of ${info}` : ``}`);\n if (contextVNode) {\n popWarningContext();\n }\n // crash in dev by default so it's more noticeable\n if (throwInDev) {\n throw err;\n } else {\n console.error(err);\n }\n } else {}\n}\nlet isFlushing = false;\nlet isFlushPending = false;\nconst queue = [];\nlet flushIndex = 0;\nconst pendingPostFlushCbs = [];\nlet activePostFlushCbs = null;\nlet postFlushIndex = 0;\nconst resolvedPromise = /*#__PURE__*/Promise.resolve();\nlet currentFlushPromise = null;\nconst RECURSION_LIMIT = 100;\nfunction nextTick(fn) {\n const p = currentFlushPromise || resolvedPromise;\n return fn ? p.then(this ? fn.bind(this) : fn) : p;\n}\n// #2768\n// Use binary-search to find a suitable position in the queue,\n// so that the queue maintains the increasing order of job's id,\n// which can prevent the job from being skipped and also can avoid repeated patching.\nfunction findInsertionIndex(id) {\n // the start index should be `flushIndex + 1`\n let start = flushIndex + 1;\n let end = queue.length;\n while (start < end) {\n const middle = start + end >>> 1;\n const middleJobId = getId(queue[middle]);\n middleJobId < id ? start = middle + 1 : end = middle;\n }\n return start;\n}\nfunction queueJob(job) {\n // the dedupe search uses the startIndex argument of Array.includes()\n // by default the search index includes the current job that is being run\n // so it cannot recursively trigger itself again.\n // if the job is a watch() callback, the search will start with a +1 index to\n // allow it recursively trigger itself - it is the user's responsibility to\n // ensure it doesn't end up in an infinite loop.\n if (!queue.length || !queue.includes(job, isFlushing && job.allowRecurse ? flushIndex + 1 : flushIndex)) {\n if (job.id == null) {\n queue.push(job);\n } else {\n queue.splice(findInsertionIndex(job.id), 0, job);\n }\n queueFlush();\n }\n}\nfunction queueFlush() {\n if (!isFlushing && !isFlushPending) {\n isFlushPending = true;\n currentFlushPromise = resolvedPromise.then(flushJobs);\n }\n}\nfunction invalidateJob(job) {\n const i = queue.indexOf(job);\n if (i > flushIndex) {\n queue.splice(i, 1);\n }\n}\nfunction queuePostFlushCb(cb) {\n if (!(0,_vue_shared__WEBPACK_IMPORTED_MODULE_3__.isArray)(cb)) {\n if (!activePostFlushCbs || !activePostFlushCbs.includes(cb, cb.allowRecurse ? postFlushIndex + 1 : postFlushIndex)) {\n pendingPostFlushCbs.push(cb);\n }\n } else {\n // if cb is an array, it is a component lifecycle hook which can only be\n // triggered by a job, which is already deduped in the main queue, so\n // we can skip duplicate check here to improve perf\n pendingPostFlushCbs.push(...cb);\n }\n queueFlush();\n}\nfunction flushPreFlushCbs(seen,\n// if currently flushing, skip the current job itself\ni = isFlushing ? flushIndex + 1 : 0) {\n if (true) {\n seen = seen || new Map();\n }\n for (; i < queue.length; i++) {\n const cb = queue[i];\n if (cb && cb.pre) {\n if ( true && checkRecursiveUpdates(seen, cb)) {\n continue;\n }\n queue.splice(i, 1);\n i--;\n cb();\n }\n }\n}\nfunction flushPostFlushCbs(seen) {\n if (pendingPostFlushCbs.length) {\n const deduped = [...new Set(pendingPostFlushCbs)];\n pendingPostFlushCbs.length = 0;\n // #1947 already has active queue, nested flushPostFlushCbs call\n if (activePostFlushCbs) {\n activePostFlushCbs.push(...deduped);\n return;\n }\n activePostFlushCbs = deduped;\n if (true) {\n seen = seen || new Map();\n }\n activePostFlushCbs.sort((a, b) => getId(a) - getId(b));\n for (postFlushIndex = 0; postFlushIndex < activePostFlushCbs.length; postFlushIndex++) {\n if ( true && checkRecursiveUpdates(seen, activePostFlushCbs[postFlushIndex])) {\n continue;\n }\n activePostFlushCbs[postFlushIndex]();\n }\n activePostFlushCbs = null;\n postFlushIndex = 0;\n }\n}\nconst getId = job => job.id == null ? Infinity : job.id;\nconst comparator = (a, b) => {\n const diff = getId(a) - getId(b);\n if (diff === 0) {\n if (a.pre && !b.pre) return -1;\n if (b.pre && !a.pre) return 1;\n }\n return diff;\n};\nfunction flushJobs(seen) {\n isFlushPending = false;\n isFlushing = true;\n if (true) {\n seen = seen || new Map();\n }\n // Sort queue before flush.\n // This ensures that:\n // 1. Components are updated from parent to child. (because parent is always\n // created before the child so its render effect will have smaller\n // priority number)\n // 2. If a component is unmounted during a parent component's update,\n // its update can be skipped.\n queue.sort(comparator);\n // conditional usage of checkRecursiveUpdate must be determined out of\n // try ... catch block since Rollup by default de-optimizes treeshaking\n // inside try-catch. This can leave all warning code unshaked. Although\n // they would get eventually shaken by a minifier like terser, some minifiers\n // would fail to do that (e.g. https://github.com/evanw/esbuild/issues/1610)\n const check = true ? job => checkRecursiveUpdates(seen, job) : 0;\n try {\n for (flushIndex = 0; flushIndex < queue.length; flushIndex++) {\n const job = queue[flushIndex];\n if (job && job.active !== false) {\n if ( true && check(job)) {\n continue;\n }\n // console.log(`running:`, job.id)\n callWithErrorHandling(job, null, 14 /* ErrorCodes.SCHEDULER */);\n }\n }\n } finally {\n flushIndex = 0;\n queue.length = 0;\n flushPostFlushCbs(seen);\n isFlushing = false;\n currentFlushPromise = null;\n // some postFlushCb queued jobs!\n // keep flushing until it drains.\n if (queue.length || pendingPostFlushCbs.length) {\n flushJobs(seen);\n }\n }\n}\nfunction checkRecursiveUpdates(seen, fn) {\n if (!seen.has(fn)) {\n seen.set(fn, 1);\n } else {\n const count = seen.get(fn);\n if (count > RECURSION_LIMIT) {\n const instance = fn.ownerInstance;\n const componentName = instance && getComponentName(instance.type);\n warn(`Maximum recursive updates exceeded${componentName ? ` in component <${componentName}>` : ``}. ` + `This means you have a reactive effect that is mutating its own ` + `dependencies and thus recursively triggering itself. Possible sources ` + `include component template, render function, updated hook or ` + `watcher source function.`);\n return true;\n } else {\n seen.set(fn, count + 1);\n }\n }\n}\n\n/* eslint-disable no-restricted-globals */\nlet isHmrUpdating = false;\nconst hmrDirtyComponents = new Set();\n// Expose the HMR runtime on the global object\n// This makes it entirely tree-shakable without polluting the exports and makes\n// it easier to be used in toolings like vue-loader\n// Note: for a component to be eligible for HMR it also needs the __hmrId option\n// to be set so that its instances can be registered / removed.\nif (true) {\n (0,_vue_shared__WEBPACK_IMPORTED_MODULE_3__.getGlobalThis)().__VUE_HMR_RUNTIME__ = {\n createRecord: tryWrap(createRecord),\n rerender: tryWrap(rerender),\n reload: tryWrap(reload)\n };\n}\nconst map = new Map();\nfunction registerHMR(instance) {\n const id = instance.type.__hmrId;\n let record = map.get(id);\n if (!record) {\n createRecord(id, instance.type);\n record = map.get(id);\n }\n record.instances.add(instance);\n}\nfunction unregisterHMR(instance) {\n map.get(instance.type.__hmrId).instances.delete(instance);\n}\nfunction createRecord(id, initialDef) {\n if (map.has(id)) {\n return false;\n }\n map.set(id, {\n initialDef: normalizeClassComponent(initialDef),\n instances: new Set()\n });\n return true;\n}\nfunction normalizeClassComponent(component) {\n return isClassComponent(component) ? component.__vccOpts : component;\n}\nfunction rerender(id, newRender) {\n const record = map.get(id);\n if (!record) {\n return;\n }\n // update initial record (for not-yet-rendered component)\n record.initialDef.render = newRender;\n [...record.instances].forEach(instance => {\n if (newRender) {\n instance.render = newRender;\n normalizeClassComponent(instance.type).render = newRender;\n }\n instance.renderCache = [];\n // this flag forces child components with slot content to update\n isHmrUpdating = true;\n instance.update();\n isHmrUpdating = false;\n });\n}\nfunction reload(id, newComp) {\n const record = map.get(id);\n if (!record) return;\n newComp = normalizeClassComponent(newComp);\n // update initial def (for not-yet-rendered components)\n updateComponentDef(record.initialDef, newComp);\n // create a snapshot which avoids the set being mutated during updates\n const instances = [...record.instances];\n for (const instance of instances) {\n const oldComp = normalizeClassComponent(instance.type);\n if (!hmrDirtyComponents.has(oldComp)) {\n // 1. Update existing comp definition to match new one\n if (oldComp !== record.initialDef) {\n updateComponentDef(oldComp, newComp);\n }\n // 2. mark definition dirty. This forces the renderer to replace the\n // component on patch.\n hmrDirtyComponents.add(oldComp);\n }\n // 3. invalidate options resolution cache\n instance.appContext.optionsCache.delete(instance.type);\n // 4. actually update\n if (instance.ceReload) {\n // custom element\n hmrDirtyComponents.add(oldComp);\n instance.ceReload(newComp.styles);\n hmrDirtyComponents.delete(oldComp);\n } else if (instance.parent) {\n // 4. Force the parent instance to re-render. This will cause all updated\n // components to be unmounted and re-mounted. Queue the update so that we\n // don't end up forcing the same parent to re-render multiple times.\n queueJob(instance.parent.update);\n } else if (instance.appContext.reload) {\n // root instance mounted via createApp() has a reload method\n instance.appContext.reload();\n } else if (typeof window !== 'undefined') {\n // root instance inside tree created via raw render(). Force reload.\n window.location.reload();\n } else {\n console.warn('[HMR] Root or manually mounted instance modified. Full reload required.');\n }\n }\n // 5. make sure to cleanup dirty hmr components after update\n queuePostFlushCb(() => {\n for (const instance of instances) {\n hmrDirtyComponents.delete(normalizeClassComponent(instance.type));\n }\n });\n}\nfunction updateComponentDef(oldComp, newComp) {\n (0,_vue_shared__WEBPACK_IMPORTED_MODULE_3__.extend)(oldComp, newComp);\n for (const key in oldComp) {\n if (key !== '__file' && !(key in newComp)) {\n delete oldComp[key];\n }\n }\n}\nfunction tryWrap(fn) {\n return (id, arg) => {\n try {\n return fn(id, arg);\n } catch (e) {\n console.error(e);\n console.warn(`[HMR] Something went wrong during Vue component hot-reload. ` + `Full reload required.`);\n }\n };\n}\nlet devtools;\nlet buffer = [];\nlet devtoolsNotInstalled = false;\nfunction emit(event, ...args) {\n if (devtools) {\n devtools.emit(event, ...args);\n } else if (!devtoolsNotInstalled) {\n buffer.push({\n event,\n args\n });\n }\n}\nfunction setDevtoolsHook(hook, target) {\n var _a, _b;\n devtools = hook;\n if (devtools) {\n devtools.enabled = true;\n buffer.forEach(({\n event,\n args\n }) => devtools.emit(event, ...args));\n buffer = [];\n } else if (\n // handle late devtools injection - only do this if we are in an actual\n // browser environment to avoid the timer handle stalling test runner exit\n // (#4815)\n typeof window !== 'undefined' &&\n // some envs mock window but not fully\n window.HTMLElement &&\n // also exclude jsdom\n !((_b = (_a = window.navigator) === null || _a === void 0 ? void 0 : _a.userAgent) === null || _b === void 0 ? void 0 : _b.includes('jsdom'))) {\n const replay = target.__VUE_DEVTOOLS_HOOK_REPLAY__ = target.__VUE_DEVTOOLS_HOOK_REPLAY__ || [];\n replay.push(newHook => {\n setDevtoolsHook(newHook, target);\n });\n // clear buffer after 3s - the user probably doesn't have devtools installed\n // at all, and keeping the buffer will cause memory leaks (#4738)\n setTimeout(() => {\n if (!devtools) {\n target.__VUE_DEVTOOLS_HOOK_REPLAY__ = null;\n devtoolsNotInstalled = true;\n buffer = [];\n }\n }, 3000);\n } else {\n // non-browser env, assume not installed\n devtoolsNotInstalled = true;\n buffer = [];\n }\n}\nfunction devtoolsInitApp(app, version) {\n emit(\"app:init\" /* DevtoolsHooks.APP_INIT */, app, version, {\n Fragment,\n Text,\n Comment,\n Static\n });\n}\nfunction devtoolsUnmountApp(app) {\n emit(\"app:unmount\" /* DevtoolsHooks.APP_UNMOUNT */, app);\n}\nconst devtoolsComponentAdded = /*#__PURE__*/createDevtoolsComponentHook(\"component:added\" /* DevtoolsHooks.COMPONENT_ADDED */);\nconst devtoolsComponentUpdated = /*#__PURE__*/createDevtoolsComponentHook(\"component:updated\" /* DevtoolsHooks.COMPONENT_UPDATED */);\nconst _devtoolsComponentRemoved = /*#__PURE__*/createDevtoolsComponentHook(\"component:removed\" /* DevtoolsHooks.COMPONENT_REMOVED */);\nconst devtoolsComponentRemoved = component => {\n if (devtools && typeof devtools.cleanupBuffer === 'function' &&\n // remove the component if it wasn't buffered\n !devtools.cleanupBuffer(component)) {\n _devtoolsComponentRemoved(component);\n }\n};\nfunction createDevtoolsComponentHook(hook) {\n return component => {\n emit(hook, component.appContext.app, component.uid, component.parent ? component.parent.uid : undefined, component);\n };\n}\nconst devtoolsPerfStart = /*#__PURE__*/createDevtoolsPerformanceHook(\"perf:start\" /* DevtoolsHooks.PERFORMANCE_START */);\nconst devtoolsPerfEnd = /*#__PURE__*/createDevtoolsPerformanceHook(\"perf:end\" /* DevtoolsHooks.PERFORMANCE_END */);\nfunction createDevtoolsPerformanceHook(hook) {\n return (component, type, time) => {\n emit(hook, component.appContext.app, component.uid, component, type, time);\n };\n}\nfunction devtoolsComponentEmit(component, event, params) {\n emit(\"component:emit\" /* DevtoolsHooks.COMPONENT_EMIT */, component.appContext.app, component, event, params);\n}\nfunction emit$1(instance, event, ...rawArgs) {\n if (instance.isUnmounted) return;\n const props = instance.vnode.props || _vue_shared__WEBPACK_IMPORTED_MODULE_3__.EMPTY_OBJ;\n if (true) {\n const {\n emitsOptions,\n propsOptions: [propsOptions]\n } = instance;\n if (emitsOptions) {\n if (!(event in emitsOptions) && !false) {\n if (!propsOptions || !((0,_vue_shared__WEBPACK_IMPORTED_MODULE_3__.toHandlerKey)(event) in propsOptions)) {\n warn(`Component emitted event \"${event}\" but it is neither declared in ` + `the emits option nor as an \"${(0,_vue_shared__WEBPACK_IMPORTED_MODULE_3__.toHandlerKey)(event)}\" prop.`);\n }\n } else {\n const validator = emitsOptions[event];\n if ((0,_vue_shared__WEBPACK_IMPORTED_MODULE_3__.isFunction)(validator)) {\n const isValid = validator(...rawArgs);\n if (!isValid) {\n warn(`Invalid event arguments: event validation failed for event \"${event}\".`);\n }\n }\n }\n }\n }\n let args = rawArgs;\n const isModelListener = event.startsWith('update:');\n // for v-model update:xxx events, apply modifiers on args\n const modelArg = isModelListener && event.slice(7);\n if (modelArg && modelArg in props) {\n const modifiersKey = `${modelArg === 'modelValue' ? 'model' : modelArg}Modifiers`;\n const {\n number,\n trim\n } = props[modifiersKey] || _vue_shared__WEBPACK_IMPORTED_MODULE_3__.EMPTY_OBJ;\n if (trim) {\n args = rawArgs.map(a => (0,_vue_shared__WEBPACK_IMPORTED_MODULE_3__.isString)(a) ? a.trim() : a);\n }\n if (number) {\n args = rawArgs.map(_vue_shared__WEBPACK_IMPORTED_MODULE_3__.toNumber);\n }\n }\n if (true) {\n devtoolsComponentEmit(instance, event, args);\n }\n if (true) {\n const lowerCaseEvent = event.toLowerCase();\n if (lowerCaseEvent !== event && props[(0,_vue_shared__WEBPACK_IMPORTED_MODULE_3__.toHandlerKey)(lowerCaseEvent)]) {\n warn(`Event \"${lowerCaseEvent}\" is emitted in component ` + `${formatComponentName(instance, instance.type)} but the handler is registered for \"${event}\". ` + `Note that HTML attributes are case-insensitive and you cannot use ` + `v-on to listen to camelCase events when using in-DOM templates. ` + `You should probably use \"${(0,_vue_shared__WEBPACK_IMPORTED_MODULE_3__.hyphenate)(event)}\" instead of \"${event}\".`);\n }\n }\n let handlerName;\n let handler = props[handlerName = (0,_vue_shared__WEBPACK_IMPORTED_MODULE_3__.toHandlerKey)(event)] ||\n // also try camelCase event handler (#2249)\n props[handlerName = (0,_vue_shared__WEBPACK_IMPORTED_MODULE_3__.toHandlerKey)((0,_vue_shared__WEBPACK_IMPORTED_MODULE_3__.camelize)(event))];\n // for v-model update:xxx events, also trigger kebab-case equivalent\n // for props passed via kebab-case\n if (!handler && isModelListener) {\n handler = props[handlerName = (0,_vue_shared__WEBPACK_IMPORTED_MODULE_3__.toHandlerKey)((0,_vue_shared__WEBPACK_IMPORTED_MODULE_3__.hyphenate)(event))];\n }\n if (handler) {\n callWithAsyncErrorHandling(handler, instance, 6 /* ErrorCodes.COMPONENT_EVENT_HANDLER */, args);\n }\n const onceHandler = props[handlerName + `Once`];\n if (onceHandler) {\n if (!instance.emitted) {\n instance.emitted = {};\n } else if (instance.emitted[handlerName]) {\n return;\n }\n instance.emitted[handlerName] = true;\n callWithAsyncErrorHandling(onceHandler, instance, 6 /* ErrorCodes.COMPONENT_EVENT_HANDLER */, args);\n }\n}\nfunction normalizeEmitsOptions(comp, appContext, asMixin = false) {\n const cache = appContext.emitsCache;\n const cached = cache.get(comp);\n if (cached !== undefined) {\n return cached;\n }\n const raw = comp.emits;\n let normalized = {};\n // apply mixin/extends props\n let hasExtends = false;\n if ( true && !(0,_vue_shared__WEBPACK_IMPORTED_MODULE_3__.isFunction)(comp)) {\n const extendEmits = raw => {\n const normalizedFromExtend = normalizeEmitsOptions(raw, appContext, true);\n if (normalizedFromExtend) {\n hasExtends = true;\n (0,_vue_shared__WEBPACK_IMPORTED_MODULE_3__.extend)(normalized, normalizedFromExtend);\n }\n };\n if (!asMixin && appContext.mixins.length) {\n appContext.mixins.forEach(extendEmits);\n }\n if (comp.extends) {\n extendEmits(comp.extends);\n }\n if (comp.mixins) {\n comp.mixins.forEach(extendEmits);\n }\n }\n if (!raw && !hasExtends) {\n if ((0,_vue_shared__WEBPACK_IMPORTED_MODULE_3__.isObject)(comp)) {\n cache.set(comp, null);\n }\n return null;\n }\n if ((0,_vue_shared__WEBPACK_IMPORTED_MODULE_3__.isArray)(raw)) {\n raw.forEach(key => normalized[key] = null);\n } else {\n (0,_vue_shared__WEBPACK_IMPORTED_MODULE_3__.extend)(normalized, raw);\n }\n if ((0,_vue_shared__WEBPACK_IMPORTED_MODULE_3__.isObject)(comp)) {\n cache.set(comp, normalized);\n }\n return normalized;\n}\n// Check if an incoming prop key is a declared emit event listener.\n// e.g. With `emits: { click: null }`, props named `onClick` and `onclick` are\n// both considered matched listeners.\nfunction isEmitListener(options, key) {\n if (!options || !(0,_vue_shared__WEBPACK_IMPORTED_MODULE_3__.isOn)(key)) {\n return false;\n }\n key = key.slice(2).replace(/Once$/, '');\n return (0,_vue_shared__WEBPACK_IMPORTED_MODULE_3__.hasOwn)(options, key[0].toLowerCase() + key.slice(1)) || (0,_vue_shared__WEBPACK_IMPORTED_MODULE_3__.hasOwn)(options, (0,_vue_shared__WEBPACK_IMPORTED_MODULE_3__.hyphenate)(key)) || (0,_vue_shared__WEBPACK_IMPORTED_MODULE_3__.hasOwn)(options, key);\n}\n\n/**\n * mark the current rendering instance for asset resolution (e.g.\n * resolveComponent, resolveDirective) during render\n */\nlet currentRenderingInstance = null;\nlet currentScopeId = null;\n/**\n * Note: rendering calls maybe nested. The function returns the parent rendering\n * instance if present, which should be restored after the render is done:\n *\n * ```js\n * const prev = setCurrentRenderingInstance(i)\n * // ...render\n * setCurrentRenderingInstance(prev)\n * ```\n */\nfunction setCurrentRenderingInstance(instance) {\n const prev = currentRenderingInstance;\n currentRenderingInstance = instance;\n currentScopeId = instance && instance.type.__scopeId || null;\n return prev;\n}\n/**\n * Set scope id when creating hoisted vnodes.\n * @private compiler helper\n */\nfunction pushScopeId(id) {\n currentScopeId = id;\n}\n/**\n * Technically we no longer need this after 3.0.8 but we need to keep the same\n * API for backwards compat w/ code generated by compilers.\n * @private\n */\nfunction popScopeId() {\n currentScopeId = null;\n}\n/**\n * Only for backwards compat\n * @private\n */\nconst withScopeId = _id => withCtx;\n/**\n * Wrap a slot function to memoize current rendering instance\n * @private compiler helper\n */\nfunction withCtx(fn, ctx = currentRenderingInstance, isNonScopedSlot // false only\n) {\n if (!ctx) return fn;\n // already normalized\n if (fn._n) {\n return fn;\n }\n const renderFnWithContext = (...args) => {\n // If a user calls a compiled slot inside a template expression (#1745), it\n // can mess up block tracking, so by default we disable block tracking and\n // force bail out when invoking a compiled slot (indicated by the ._d flag).\n // This isn't necessary if rendering a compiled ``, so we flip the\n // ._d flag off when invoking the wrapped fn inside `renderSlot`.\n if (renderFnWithContext._d) {\n setBlockTracking(-1);\n }\n const prevInstance = setCurrentRenderingInstance(ctx);\n let res;\n try {\n res = fn(...args);\n } finally {\n setCurrentRenderingInstance(prevInstance);\n if (renderFnWithContext._d) {\n setBlockTracking(1);\n }\n }\n if (true) {\n devtoolsComponentUpdated(ctx);\n }\n return res;\n };\n // mark normalized to avoid duplicated wrapping\n renderFnWithContext._n = true;\n // mark this as compiled by default\n // this is used in vnode.ts -> normalizeChildren() to set the slot\n // rendering flag.\n renderFnWithContext._c = true;\n // disable block tracking by default\n renderFnWithContext._d = true;\n return renderFnWithContext;\n}\n\n/**\n * dev only flag to track whether $attrs was used during render.\n * If $attrs was used during render then the warning for failed attrs\n * fallthrough can be suppressed.\n */\nlet accessedAttrs = false;\nfunction markAttrsAccessed() {\n accessedAttrs = true;\n}\nfunction renderComponentRoot(instance) {\n const {\n type: Component,\n vnode,\n proxy,\n withProxy,\n props,\n propsOptions: [propsOptions],\n slots,\n attrs,\n emit,\n render,\n renderCache,\n data,\n setupState,\n ctx,\n inheritAttrs\n } = instance;\n let result;\n let fallthroughAttrs;\n const prev = setCurrentRenderingInstance(instance);\n if (true) {\n accessedAttrs = false;\n }\n try {\n if (vnode.shapeFlag & 4 /* ShapeFlags.STATEFUL_COMPONENT */) {\n // withProxy is a proxy with a different `has` trap only for\n // runtime-compiled render functions using `with` block.\n const proxyToUse = withProxy || proxy;\n result = normalizeVNode(render.call(proxyToUse, proxyToUse, renderCache, props, setupState, data, ctx));\n fallthroughAttrs = attrs;\n } else {\n // functional\n const render = Component;\n // in dev, mark attrs accessed if optional props (attrs === props)\n if ( true && attrs === props) {\n markAttrsAccessed();\n }\n result = normalizeVNode(render.length > 1 ? render(props, true ? {\n get attrs() {\n markAttrsAccessed();\n return attrs;\n },\n slots,\n emit\n } : 0) : render(props, null /* we know it doesn't need it */));\n fallthroughAttrs = Component.props ? attrs : getFunctionalFallthrough(attrs);\n }\n } catch (err) {\n blockStack.length = 0;\n handleError(err, instance, 1 /* ErrorCodes.RENDER_FUNCTION */);\n result = createVNode(Comment);\n }\n // attr merging\n // in dev mode, comments are preserved, and it's possible for a template\n // to have comments along side the root element which makes it a fragment\n let root = result;\n let setRoot = undefined;\n if ( true && result.patchFlag > 0 && result.patchFlag & 2048 /* PatchFlags.DEV_ROOT_FRAGMENT */) {\n [root, setRoot] = getChildRoot(result);\n }\n if (fallthroughAttrs && inheritAttrs !== false) {\n const keys = Object.keys(fallthroughAttrs);\n const {\n shapeFlag\n } = root;\n if (keys.length) {\n if (shapeFlag & (1 /* ShapeFlags.ELEMENT */ | 6 /* ShapeFlags.COMPONENT */)) {\n if (propsOptions && keys.some(_vue_shared__WEBPACK_IMPORTED_MODULE_3__.isModelListener)) {\n // If a v-model listener (onUpdate:xxx) has a corresponding declared\n // prop, it indicates this component expects to handle v-model and\n // it should not fallthrough.\n // related: #1543, #1643, #1989\n fallthroughAttrs = filterModelListeners(fallthroughAttrs, propsOptions);\n }\n root = cloneVNode(root, fallthroughAttrs);\n } else if ( true && !accessedAttrs && root.type !== Comment) {\n const allAttrs = Object.keys(attrs);\n const eventAttrs = [];\n const extraAttrs = [];\n for (let i = 0, l = allAttrs.length; i < l; i++) {\n const key = allAttrs[i];\n if ((0,_vue_shared__WEBPACK_IMPORTED_MODULE_3__.isOn)(key)) {\n // ignore v-model handlers when they fail to fallthrough\n if (!(0,_vue_shared__WEBPACK_IMPORTED_MODULE_3__.isModelListener)(key)) {\n // remove `on`, lowercase first letter to reflect event casing\n // accurately\n eventAttrs.push(key[2].toLowerCase() + key.slice(3));\n }\n } else {\n extraAttrs.push(key);\n }\n }\n if (extraAttrs.length) {\n warn(`Extraneous non-props attributes (` + `${extraAttrs.join(', ')}) ` + `were passed to component but could not be automatically inherited ` + `because component renders fragment or text root nodes.`);\n }\n if (eventAttrs.length) {\n warn(`Extraneous non-emits event listeners (` + `${eventAttrs.join(', ')}) ` + `were passed to component but could not be automatically inherited ` + `because component renders fragment or text root nodes. ` + `If the listener is intended to be a component custom event listener only, ` + `declare it using the \"emits\" option.`);\n }\n }\n }\n }\n // inherit directives\n if (vnode.dirs) {\n if ( true && !isElementRoot(root)) {\n warn(`Runtime directive used on component with non-element root node. ` + `The directives will not function as intended.`);\n }\n // clone before mutating since the root may be a hoisted vnode\n root = cloneVNode(root);\n root.dirs = root.dirs ? root.dirs.concat(vnode.dirs) : vnode.dirs;\n }\n // inherit transition data\n if (vnode.transition) {\n if ( true && !isElementRoot(root)) {\n warn(`Component inside renders non-element root node ` + `that cannot be animated.`);\n }\n root.transition = vnode.transition;\n }\n if ( true && setRoot) {\n setRoot(root);\n } else {\n result = root;\n }\n setCurrentRenderingInstance(prev);\n return result;\n}\n/**\n * dev only\n * In dev mode, template root level comments are rendered, which turns the\n * template into a fragment root, but we need to locate the single element\n * root for attrs and scope id processing.\n */\nconst getChildRoot = vnode => {\n const rawChildren = vnode.children;\n const dynamicChildren = vnode.dynamicChildren;\n const childRoot = filterSingleRoot(rawChildren);\n if (!childRoot) {\n return [vnode, undefined];\n }\n const index = rawChildren.indexOf(childRoot);\n const dynamicIndex = dynamicChildren ? dynamicChildren.indexOf(childRoot) : -1;\n const setRoot = updatedRoot => {\n rawChildren[index] = updatedRoot;\n if (dynamicChildren) {\n if (dynamicIndex > -1) {\n dynamicChildren[dynamicIndex] = updatedRoot;\n } else if (updatedRoot.patchFlag > 0) {\n vnode.dynamicChildren = [...dynamicChildren, updatedRoot];\n }\n }\n };\n return [normalizeVNode(childRoot), setRoot];\n};\nfunction filterSingleRoot(children) {\n let singleRoot;\n for (let i = 0; i < children.length; i++) {\n const child = children[i];\n if (isVNode(child)) {\n // ignore user comment\n if (child.type !== Comment || child.children === 'v-if') {\n if (singleRoot) {\n // has more than 1 non-comment child, return now\n return;\n } else {\n singleRoot = child;\n }\n }\n } else {\n return;\n }\n }\n return singleRoot;\n}\nconst getFunctionalFallthrough = attrs => {\n let res;\n for (const key in attrs) {\n if (key === 'class' || key === 'style' || (0,_vue_shared__WEBPACK_IMPORTED_MODULE_3__.isOn)(key)) {\n (res || (res = {}))[key] = attrs[key];\n }\n }\n return res;\n};\nconst filterModelListeners = (attrs, props) => {\n const res = {};\n for (const key in attrs) {\n if (!(0,_vue_shared__WEBPACK_IMPORTED_MODULE_3__.isModelListener)(key) || !(key.slice(9) in props)) {\n res[key] = attrs[key];\n }\n }\n return res;\n};\nconst isElementRoot = vnode => {\n return vnode.shapeFlag & (6 /* ShapeFlags.COMPONENT */ | 1 /* ShapeFlags.ELEMENT */) || vnode.type === Comment // potential v-if branch switch\n ;\n};\n\nfunction shouldUpdateComponent(prevVNode, nextVNode, optimized) {\n const {\n props: prevProps,\n children: prevChildren,\n component\n } = prevVNode;\n const {\n props: nextProps,\n children: nextChildren,\n patchFlag\n } = nextVNode;\n const emits = component.emitsOptions;\n // Parent component's render function was hot-updated. Since this may have\n // caused the child component's slots content to have changed, we need to\n // force the child to update as well.\n if ( true && (prevChildren || nextChildren) && isHmrUpdating) {\n return true;\n }\n // force child update for runtime directive or transition on component vnode.\n if (nextVNode.dirs || nextVNode.transition) {\n return true;\n }\n if (optimized && patchFlag >= 0) {\n if (patchFlag & 1024 /* PatchFlags.DYNAMIC_SLOTS */) {\n // slot content that references values that might have changed,\n // e.g. in a v-for\n return true;\n }\n if (patchFlag & 16 /* PatchFlags.FULL_PROPS */) {\n if (!prevProps) {\n return !!nextProps;\n }\n // presence of this flag indicates props are always non-null\n return hasPropsChanged(prevProps, nextProps, emits);\n } else if (patchFlag & 8 /* PatchFlags.PROPS */) {\n const dynamicProps = nextVNode.dynamicProps;\n for (let i = 0; i < dynamicProps.length; i++) {\n const key = dynamicProps[i];\n if (nextProps[key] !== prevProps[key] && !isEmitListener(emits, key)) {\n return true;\n }\n }\n }\n } else {\n // this path is only taken by manually written render functions\n // so presence of any children leads to a forced update\n if (prevChildren || nextChildren) {\n if (!nextChildren || !nextChildren.$stable) {\n return true;\n }\n }\n if (prevProps === nextProps) {\n return false;\n }\n if (!prevProps) {\n return !!nextProps;\n }\n if (!nextProps) {\n return true;\n }\n return hasPropsChanged(prevProps, nextProps, emits);\n }\n return false;\n}\nfunction hasPropsChanged(prevProps, nextProps, emitsOptions) {\n const nextKeys = Object.keys(nextProps);\n if (nextKeys.length !== Object.keys(prevProps).length) {\n return true;\n }\n for (let i = 0; i < nextKeys.length; i++) {\n const key = nextKeys[i];\n if (nextProps[key] !== prevProps[key] && !isEmitListener(emitsOptions, key)) {\n return true;\n }\n }\n return false;\n}\nfunction updateHOCHostEl({\n vnode,\n parent\n}, el // HostNode\n) {\n while (parent && parent.subTree === vnode) {\n (vnode = parent.vnode).el = el;\n parent = parent.parent;\n }\n}\nconst isSuspense = type => type.__isSuspense;\n// Suspense exposes a component-like API, and is treated like a component\n// in the compiler, but internally it's a special built-in type that hooks\n// directly into the renderer.\nconst SuspenseImpl = {\n name: 'Suspense',\n // In order to make Suspense tree-shakable, we need to avoid importing it\n // directly in the renderer. The renderer checks for the __isSuspense flag\n // on a vnode's type and calls the `process` method, passing in renderer\n // internals.\n __isSuspense: true,\n process(n1, n2, container, anchor, parentComponent, parentSuspense, isSVG, slotScopeIds, optimized,\n // platform-specific impl passed from renderer\n rendererInternals) {\n if (n1 == null) {\n mountSuspense(n2, container, anchor, parentComponent, parentSuspense, isSVG, slotScopeIds, optimized, rendererInternals);\n } else {\n patchSuspense(n1, n2, container, anchor, parentComponent, isSVG, slotScopeIds, optimized, rendererInternals);\n }\n },\n hydrate: hydrateSuspense,\n create: createSuspenseBoundary,\n normalize: normalizeSuspenseChildren\n};\n// Force-casted public typing for h and TSX props inference\nconst Suspense = SuspenseImpl;\nfunction triggerEvent(vnode, name) {\n const eventListener = vnode.props && vnode.props[name];\n if ((0,_vue_shared__WEBPACK_IMPORTED_MODULE_3__.isFunction)(eventListener)) {\n eventListener();\n }\n}\nfunction mountSuspense(vnode, container, anchor, parentComponent, parentSuspense, isSVG, slotScopeIds, optimized, rendererInternals) {\n const {\n p: patch,\n o: {\n createElement\n }\n } = rendererInternals;\n const hiddenContainer = createElement('div');\n const suspense = vnode.suspense = createSuspenseBoundary(vnode, parentSuspense, parentComponent, container, hiddenContainer, anchor, isSVG, slotScopeIds, optimized, rendererInternals);\n // start mounting the content subtree in an off-dom container\n patch(null, suspense.pendingBranch = vnode.ssContent, hiddenContainer, null, parentComponent, suspense, isSVG, slotScopeIds);\n // now check if we have encountered any async deps\n if (suspense.deps > 0) {\n // has async\n // invoke @fallback event\n triggerEvent(vnode, 'onPending');\n triggerEvent(vnode, 'onFallback');\n // mount the fallback tree\n patch(null, vnode.ssFallback, container, anchor, parentComponent, null,\n // fallback tree will not have suspense context\n isSVG, slotScopeIds);\n setActiveBranch(suspense, vnode.ssFallback);\n } else {\n // Suspense has no async deps. Just resolve.\n suspense.resolve();\n }\n}\nfunction patchSuspense(n1, n2, container, anchor, parentComponent, isSVG, slotScopeIds, optimized, {\n p: patch,\n um: unmount,\n o: {\n createElement\n }\n}) {\n const suspense = n2.suspense = n1.suspense;\n suspense.vnode = n2;\n n2.el = n1.el;\n const newBranch = n2.ssContent;\n const newFallback = n2.ssFallback;\n const {\n activeBranch,\n pendingBranch,\n isInFallback,\n isHydrating\n } = suspense;\n if (pendingBranch) {\n suspense.pendingBranch = newBranch;\n if (isSameVNodeType(newBranch, pendingBranch)) {\n // same root type but content may have changed.\n patch(pendingBranch, newBranch, suspense.hiddenContainer, null, parentComponent, suspense, isSVG, slotScopeIds, optimized);\n if (suspense.deps <= 0) {\n suspense.resolve();\n } else if (isInFallback) {\n patch(activeBranch, newFallback, container, anchor, parentComponent, null,\n // fallback tree will not have suspense context\n isSVG, slotScopeIds, optimized);\n setActiveBranch(suspense, newFallback);\n }\n } else {\n // toggled before pending tree is resolved\n suspense.pendingId++;\n if (isHydrating) {\n // if toggled before hydration is finished, the current DOM tree is\n // no longer valid. set it as the active branch so it will be unmounted\n // when resolved\n suspense.isHydrating = false;\n suspense.activeBranch = pendingBranch;\n } else {\n unmount(pendingBranch, parentComponent, suspense);\n }\n // increment pending ID. this is used to invalidate async callbacks\n // reset suspense state\n suspense.deps = 0;\n // discard effects from pending branch\n suspense.effects.length = 0;\n // discard previous container\n suspense.hiddenContainer = createElement('div');\n if (isInFallback) {\n // already in fallback state\n patch(null, newBranch, suspense.hiddenContainer, null, parentComponent, suspense, isSVG, slotScopeIds, optimized);\n if (suspense.deps <= 0) {\n suspense.resolve();\n } else {\n patch(activeBranch, newFallback, container, anchor, parentComponent, null,\n // fallback tree will not have suspense context\n isSVG, slotScopeIds, optimized);\n setActiveBranch(suspense, newFallback);\n }\n } else if (activeBranch && isSameVNodeType(newBranch, activeBranch)) {\n // toggled \"back\" to current active branch\n patch(activeBranch, newBranch, container, anchor, parentComponent, suspense, isSVG, slotScopeIds, optimized);\n // force resolve\n suspense.resolve(true);\n } else {\n // switched to a 3rd branch\n patch(null, newBranch, suspense.hiddenContainer, null, parentComponent, suspense, isSVG, slotScopeIds, optimized);\n if (suspense.deps <= 0) {\n suspense.resolve();\n }\n }\n }\n } else {\n if (activeBranch && isSameVNodeType(newBranch, activeBranch)) {\n // root did not change, just normal patch\n patch(activeBranch, newBranch, container, anchor, parentComponent, suspense, isSVG, slotScopeIds, optimized);\n setActiveBranch(suspense, newBranch);\n } else {\n // root node toggled\n // invoke @pending event\n triggerEvent(n2, 'onPending');\n // mount pending branch in off-dom container\n suspense.pendingBranch = newBranch;\n suspense.pendingId++;\n patch(null, newBranch, suspense.hiddenContainer, null, parentComponent, suspense, isSVG, slotScopeIds, optimized);\n if (suspense.deps <= 0) {\n // incoming branch has no async deps, resolve now.\n suspense.resolve();\n } else {\n const {\n timeout,\n pendingId\n } = suspense;\n if (timeout > 0) {\n setTimeout(() => {\n if (suspense.pendingId === pendingId) {\n suspense.fallback(newFallback);\n }\n }, timeout);\n } else if (timeout === 0) {\n suspense.fallback(newFallback);\n }\n }\n }\n }\n}\nlet hasWarned = false;\nfunction createSuspenseBoundary(vnode, parent, parentComponent, container, hiddenContainer, anchor, isSVG, slotScopeIds, optimized, rendererInternals, isHydrating = false) {\n /* istanbul ignore if */\n if ( true && !hasWarned) {\n hasWarned = true;\n // @ts-ignore `console.info` cannot be null error\n console[console.info ? 'info' : 'log'](` is an experimental feature and its API will likely change.`);\n }\n const {\n p: patch,\n m: move,\n um: unmount,\n n: next,\n o: {\n parentNode,\n remove\n }\n } = rendererInternals;\n const timeout = (0,_vue_shared__WEBPACK_IMPORTED_MODULE_3__.toNumber)(vnode.props && vnode.props.timeout);\n const suspense = {\n vnode,\n parent,\n parentComponent,\n isSVG,\n container,\n hiddenContainer,\n anchor,\n deps: 0,\n pendingId: 0,\n timeout: typeof timeout === 'number' ? timeout : -1,\n activeBranch: null,\n pendingBranch: null,\n isInFallback: true,\n isHydrating,\n isUnmounted: false,\n effects: [],\n resolve(resume = false) {\n if (true) {\n if (!resume && !suspense.pendingBranch) {\n throw new Error(`suspense.resolve() is called without a pending branch.`);\n }\n if (suspense.isUnmounted) {\n throw new Error(`suspense.resolve() is called on an already unmounted suspense boundary.`);\n }\n }\n const {\n vnode,\n activeBranch,\n pendingBranch,\n pendingId,\n effects,\n parentComponent,\n container\n } = suspense;\n if (suspense.isHydrating) {\n suspense.isHydrating = false;\n } else if (!resume) {\n const delayEnter = activeBranch && pendingBranch.transition && pendingBranch.transition.mode === 'out-in';\n if (delayEnter) {\n activeBranch.transition.afterLeave = () => {\n if (pendingId === suspense.pendingId) {\n move(pendingBranch, container, anchor, 0 /* MoveType.ENTER */);\n }\n };\n }\n // this is initial anchor on mount\n let {\n anchor\n } = suspense;\n // unmount current active tree\n if (activeBranch) {\n // if the fallback tree was mounted, it may have been moved\n // as part of a parent suspense. get the latest anchor for insertion\n anchor = next(activeBranch);\n unmount(activeBranch, parentComponent, suspense, true);\n }\n if (!delayEnter) {\n // move content from off-dom container to actual container\n move(pendingBranch, container, anchor, 0 /* MoveType.ENTER */);\n }\n }\n\n setActiveBranch(suspense, pendingBranch);\n suspense.pendingBranch = null;\n suspense.isInFallback = false;\n // flush buffered effects\n // check if there is a pending parent suspense\n let parent = suspense.parent;\n let hasUnresolvedAncestor = false;\n while (parent) {\n if (parent.pendingBranch) {\n // found a pending parent suspense, merge buffered post jobs\n // into that parent\n parent.effects.push(...effects);\n hasUnresolvedAncestor = true;\n break;\n }\n parent = parent.parent;\n }\n // no pending parent suspense, flush all jobs\n if (!hasUnresolvedAncestor) {\n queuePostFlushCb(effects);\n }\n suspense.effects = [];\n // invoke @resolve event\n triggerEvent(vnode, 'onResolve');\n },\n fallback(fallbackVNode) {\n if (!suspense.pendingBranch) {\n return;\n }\n const {\n vnode,\n activeBranch,\n parentComponent,\n container,\n isSVG\n } = suspense;\n // invoke @fallback event\n triggerEvent(vnode, 'onFallback');\n const anchor = next(activeBranch);\n const mountFallback = () => {\n if (!suspense.isInFallback) {\n return;\n }\n // mount the fallback tree\n patch(null, fallbackVNode, container, anchor, parentComponent, null,\n // fallback tree will not have suspense context\n isSVG, slotScopeIds, optimized);\n setActiveBranch(suspense, fallbackVNode);\n };\n const delayEnter = fallbackVNode.transition && fallbackVNode.transition.mode === 'out-in';\n if (delayEnter) {\n activeBranch.transition.afterLeave = mountFallback;\n }\n suspense.isInFallback = true;\n // unmount current active branch\n unmount(activeBranch, parentComponent, null,\n // no suspense so unmount hooks fire now\n true // shouldRemove\n );\n\n if (!delayEnter) {\n mountFallback();\n }\n },\n move(container, anchor, type) {\n suspense.activeBranch && move(suspense.activeBranch, container, anchor, type);\n suspense.container = container;\n },\n next() {\n return suspense.activeBranch && next(suspense.activeBranch);\n },\n registerDep(instance, setupRenderEffect) {\n const isInPendingSuspense = !!suspense.pendingBranch;\n if (isInPendingSuspense) {\n suspense.deps++;\n }\n const hydratedEl = instance.vnode.el;\n instance.asyncDep.catch(err => {\n handleError(err, instance, 0 /* ErrorCodes.SETUP_FUNCTION */);\n }).then(asyncSetupResult => {\n // retry when the setup() promise resolves.\n // component may have been unmounted before resolve.\n if (instance.isUnmounted || suspense.isUnmounted || suspense.pendingId !== instance.suspenseId) {\n return;\n }\n // retry from this component\n instance.asyncResolved = true;\n const {\n vnode\n } = instance;\n if (true) {\n pushWarningContext(vnode);\n }\n handleSetupResult(instance, asyncSetupResult, false);\n if (hydratedEl) {\n // vnode may have been replaced if an update happened before the\n // async dep is resolved.\n vnode.el = hydratedEl;\n }\n const placeholder = !hydratedEl && instance.subTree.el;\n setupRenderEffect(instance, vnode,\n // component may have been moved before resolve.\n // if this is not a hydration, instance.subTree will be the comment\n // placeholder.\n parentNode(hydratedEl || instance.subTree.el),\n // anchor will not be used if this is hydration, so only need to\n // consider the comment placeholder case.\n hydratedEl ? null : next(instance.subTree), suspense, isSVG, optimized);\n if (placeholder) {\n remove(placeholder);\n }\n updateHOCHostEl(instance, vnode.el);\n if (true) {\n popWarningContext();\n }\n // only decrease deps count if suspense is not already resolved\n if (isInPendingSuspense && --suspense.deps === 0) {\n suspense.resolve();\n }\n });\n },\n unmount(parentSuspense, doRemove) {\n suspense.isUnmounted = true;\n if (suspense.activeBranch) {\n unmount(suspense.activeBranch, parentComponent, parentSuspense, doRemove);\n }\n if (suspense.pendingBranch) {\n unmount(suspense.pendingBranch, parentComponent, parentSuspense, doRemove);\n }\n }\n };\n return suspense;\n}\nfunction hydrateSuspense(node, vnode, parentComponent, parentSuspense, isSVG, slotScopeIds, optimized, rendererInternals, hydrateNode) {\n /* eslint-disable no-restricted-globals */\n const suspense = vnode.suspense = createSuspenseBoundary(vnode, parentSuspense, parentComponent, node.parentNode, document.createElement('div'), null, isSVG, slotScopeIds, optimized, rendererInternals, true /* hydrating */);\n // there are two possible scenarios for server-rendered suspense:\n // - success: ssr content should be fully resolved\n // - failure: ssr content should be the fallback branch.\n // however, on the client we don't really know if it has failed or not\n // attempt to hydrate the DOM assuming it has succeeded, but we still\n // need to construct a suspense boundary first\n const result = hydrateNode(node, suspense.pendingBranch = vnode.ssContent, parentComponent, suspense, slotScopeIds, optimized);\n if (suspense.deps === 0) {\n suspense.resolve();\n }\n return result;\n /* eslint-enable no-restricted-globals */\n}\n\nfunction normalizeSuspenseChildren(vnode) {\n const {\n shapeFlag,\n children\n } = vnode;\n const isSlotChildren = shapeFlag & 32 /* ShapeFlags.SLOTS_CHILDREN */;\n vnode.ssContent = normalizeSuspenseSlot(isSlotChildren ? children.default : children);\n vnode.ssFallback = isSlotChildren ? normalizeSuspenseSlot(children.fallback) : createVNode(Comment);\n}\nfunction normalizeSuspenseSlot(s) {\n let block;\n if ((0,_vue_shared__WEBPACK_IMPORTED_MODULE_3__.isFunction)(s)) {\n const trackBlock = isBlockTreeEnabled && s._c;\n if (trackBlock) {\n // disableTracking: false\n // allow block tracking for compiled slots\n // (see ./componentRenderContext.ts)\n s._d = false;\n openBlock();\n }\n s = s();\n if (trackBlock) {\n s._d = true;\n block = currentBlock;\n closeBlock();\n }\n }\n if ((0,_vue_shared__WEBPACK_IMPORTED_MODULE_3__.isArray)(s)) {\n const singleChild = filterSingleRoot(s);\n if ( true && !singleChild) {\n warn(` slots expect a single root node.`);\n }\n s = singleChild;\n }\n s = normalizeVNode(s);\n if (block && !s.dynamicChildren) {\n s.dynamicChildren = block.filter(c => c !== s);\n }\n return s;\n}\nfunction queueEffectWithSuspense(fn, suspense) {\n if (suspense && suspense.pendingBranch) {\n if ((0,_vue_shared__WEBPACK_IMPORTED_MODULE_3__.isArray)(fn)) {\n suspense.effects.push(...fn);\n } else {\n suspense.effects.push(fn);\n }\n } else {\n queuePostFlushCb(fn);\n }\n}\nfunction setActiveBranch(suspense, branch) {\n suspense.activeBranch = branch;\n const {\n vnode,\n parentComponent\n } = suspense;\n const el = vnode.el = branch.el;\n // in case suspense is the root node of a component,\n // recursively update the HOC el\n if (parentComponent && parentComponent.subTree === vnode) {\n parentComponent.vnode.el = el;\n updateHOCHostEl(parentComponent, el);\n }\n}\nfunction provide(key, value) {\n if (!currentInstance) {\n if (true) {\n warn(`provide() can only be used inside setup().`);\n }\n } else {\n let provides = currentInstance.provides;\n // by default an instance inherits its parent's provides object\n // but when it needs to provide values of its own, it creates its\n // own provides object using parent provides object as prototype.\n // this way in `inject` we can simply look up injections from direct\n // parent and let the prototype chain do the work.\n const parentProvides = currentInstance.parent && currentInstance.parent.provides;\n if (parentProvides === provides) {\n provides = currentInstance.provides = Object.create(parentProvides);\n }\n // TS doesn't allow symbol as index type\n provides[key] = value;\n }\n}\nfunction inject(key, defaultValue, treatDefaultAsFactory = false) {\n // fallback to `currentRenderingInstance` so that this can be called in\n // a functional component\n const instance = currentInstance || currentRenderingInstance;\n if (instance) {\n // #2400\n // to support `app.use` plugins,\n // fallback to appContext's `provides` if the instance is at root\n const provides = instance.parent == null ? instance.vnode.appContext && instance.vnode.appContext.provides : instance.parent.provides;\n if (provides && key in provides) {\n // TS doesn't allow symbol as index type\n return provides[key];\n } else if (arguments.length > 1) {\n return treatDefaultAsFactory && (0,_vue_shared__WEBPACK_IMPORTED_MODULE_3__.isFunction)(defaultValue) ? defaultValue.call(instance.proxy) : defaultValue;\n } else if (true) {\n warn(`injection \"${String(key)}\" not found.`);\n }\n } else if (true) {\n warn(`inject() can only be used inside setup() or functional components.`);\n }\n}\n\n// Simple effect.\nfunction watchEffect(effect, options) {\n return doWatch(effect, null, options);\n}\nfunction watchPostEffect(effect, options) {\n return doWatch(effect, null, true ? Object.assign(Object.assign({}, options), {\n flush: 'post'\n }) : 0);\n}\nfunction watchSyncEffect(effect, options) {\n return doWatch(effect, null, true ? Object.assign(Object.assign({}, options), {\n flush: 'sync'\n }) : 0);\n}\n// initial value for watchers to trigger on undefined initial values\nconst INITIAL_WATCHER_VALUE = {};\n// implementation\nfunction watch(source, cb, options) {\n if ( true && !(0,_vue_shared__WEBPACK_IMPORTED_MODULE_3__.isFunction)(cb)) {\n warn(`\\`watch(fn, options?)\\` signature has been moved to a separate API. ` + `Use \\`watchEffect(fn, options?)\\` instead. \\`watch\\` now only ` + `supports \\`watch(source, cb, options?) signature.`);\n }\n return doWatch(source, cb, options);\n}\nfunction doWatch(source, cb, {\n immediate,\n deep,\n flush,\n onTrack,\n onTrigger\n} = _vue_shared__WEBPACK_IMPORTED_MODULE_3__.EMPTY_OBJ) {\n if ( true && !cb) {\n if (immediate !== undefined) {\n warn(`watch() \"immediate\" option is only respected when using the ` + `watch(source, callback, options?) signature.`);\n }\n if (deep !== undefined) {\n warn(`watch() \"deep\" option is only respected when using the ` + `watch(source, callback, options?) signature.`);\n }\n }\n const warnInvalidSource = s => {\n warn(`Invalid watch source: `, s, `A watch source can only be a getter/effect function, a ref, ` + `a reactive object, or an array of these types.`);\n };\n const instance = currentInstance;\n let getter;\n let forceTrigger = false;\n let isMultiSource = false;\n if ((0,_vue_reactivity__WEBPACK_IMPORTED_MODULE_2__.isRef)(source)) {\n getter = () => source.value;\n forceTrigger = (0,_vue_reactivity__WEBPACK_IMPORTED_MODULE_2__.isShallow)(source);\n } else if ((0,_vue_reactivity__WEBPACK_IMPORTED_MODULE_2__.isReactive)(source)) {\n getter = () => source;\n deep = true;\n } else if ((0,_vue_shared__WEBPACK_IMPORTED_MODULE_3__.isArray)(source)) {\n isMultiSource = true;\n forceTrigger = source.some(s => (0,_vue_reactivity__WEBPACK_IMPORTED_MODULE_2__.isReactive)(s) || (0,_vue_reactivity__WEBPACK_IMPORTED_MODULE_2__.isShallow)(s));\n getter = () => source.map(s => {\n if ((0,_vue_reactivity__WEBPACK_IMPORTED_MODULE_2__.isRef)(s)) {\n return s.value;\n } else if ((0,_vue_reactivity__WEBPACK_IMPORTED_MODULE_2__.isReactive)(s)) {\n return traverse(s);\n } else if ((0,_vue_shared__WEBPACK_IMPORTED_MODULE_3__.isFunction)(s)) {\n return callWithErrorHandling(s, instance, 2 /* ErrorCodes.WATCH_GETTER */);\n } else {\n true && warnInvalidSource(s);\n }\n });\n } else if ((0,_vue_shared__WEBPACK_IMPORTED_MODULE_3__.isFunction)(source)) {\n if (cb) {\n // getter with cb\n getter = () => callWithErrorHandling(source, instance, 2 /* ErrorCodes.WATCH_GETTER */);\n } else {\n // no cb -> simple effect\n getter = () => {\n if (instance && instance.isUnmounted) {\n return;\n }\n if (cleanup) {\n cleanup();\n }\n return callWithAsyncErrorHandling(source, instance, 3 /* ErrorCodes.WATCH_CALLBACK */, [onCleanup]);\n };\n }\n } else {\n getter = _vue_shared__WEBPACK_IMPORTED_MODULE_3__.NOOP;\n true && warnInvalidSource(source);\n }\n if (cb && deep) {\n const baseGetter = getter;\n getter = () => traverse(baseGetter());\n }\n let cleanup;\n let onCleanup = fn => {\n cleanup = effect.onStop = () => {\n callWithErrorHandling(fn, instance, 4 /* ErrorCodes.WATCH_CLEANUP */);\n };\n };\n // in SSR there is no need to setup an actual effect, and it should be noop\n // unless it's eager or sync flush\n let ssrCleanup;\n if (isInSSRComponentSetup) {\n // we will also not call the invalidate callback (+ runner is not set up)\n onCleanup = _vue_shared__WEBPACK_IMPORTED_MODULE_3__.NOOP;\n if (!cb) {\n getter();\n } else if (immediate) {\n callWithAsyncErrorHandling(cb, instance, 3 /* ErrorCodes.WATCH_CALLBACK */, [getter(), isMultiSource ? [] : undefined, onCleanup]);\n }\n if (flush === 'sync') {\n const ctx = useSSRContext();\n ssrCleanup = ctx.__watcherHandles || (ctx.__watcherHandles = []);\n } else {\n return _vue_shared__WEBPACK_IMPORTED_MODULE_3__.NOOP;\n }\n }\n let oldValue = isMultiSource ? new Array(source.length).fill(INITIAL_WATCHER_VALUE) : INITIAL_WATCHER_VALUE;\n const job = () => {\n if (!effect.active) {\n return;\n }\n if (cb) {\n // watch(source, cb)\n const newValue = effect.run();\n if (deep || forceTrigger || (isMultiSource ? newValue.some((v, i) => (0,_vue_shared__WEBPACK_IMPORTED_MODULE_3__.hasChanged)(v, oldValue[i])) : (0,_vue_shared__WEBPACK_IMPORTED_MODULE_3__.hasChanged)(newValue, oldValue)) || false) {\n // cleanup before running cb again\n if (cleanup) {\n cleanup();\n }\n callWithAsyncErrorHandling(cb, instance, 3 /* ErrorCodes.WATCH_CALLBACK */, [newValue,\n // pass undefined as the old value when it's changed for the first time\n oldValue === INITIAL_WATCHER_VALUE ? undefined : isMultiSource && oldValue[0] === INITIAL_WATCHER_VALUE ? [] : oldValue, onCleanup]);\n oldValue = newValue;\n }\n } else {\n // watchEffect\n effect.run();\n }\n };\n // important: mark the job as a watcher callback so that scheduler knows\n // it is allowed to self-trigger (#1727)\n job.allowRecurse = !!cb;\n let scheduler;\n if (flush === 'sync') {\n scheduler = job; // the scheduler function gets called directly\n } else if (flush === 'post') {\n scheduler = () => queuePostRenderEffect(job, instance && instance.suspense);\n } else {\n // default: 'pre'\n job.pre = true;\n if (instance) job.id = instance.uid;\n scheduler = () => queueJob(job);\n }\n const effect = new _vue_reactivity__WEBPACK_IMPORTED_MODULE_2__.ReactiveEffect(getter, scheduler);\n if (true) {\n effect.onTrack = onTrack;\n effect.onTrigger = onTrigger;\n }\n // initial run\n if (cb) {\n if (immediate) {\n job();\n } else {\n oldValue = effect.run();\n }\n } else if (flush === 'post') {\n queuePostRenderEffect(effect.run.bind(effect), instance && instance.suspense);\n } else {\n effect.run();\n }\n const unwatch = () => {\n effect.stop();\n if (instance && instance.scope) {\n (0,_vue_shared__WEBPACK_IMPORTED_MODULE_3__.remove)(instance.scope.effects, effect);\n }\n };\n if (ssrCleanup) ssrCleanup.push(unwatch);\n return unwatch;\n}\n// this.$watch\nfunction instanceWatch(source, value, options) {\n const publicThis = this.proxy;\n const getter = (0,_vue_shared__WEBPACK_IMPORTED_MODULE_3__.isString)(source) ? source.includes('.') ? createPathGetter(publicThis, source) : () => publicThis[source] : source.bind(publicThis, publicThis);\n let cb;\n if ((0,_vue_shared__WEBPACK_IMPORTED_MODULE_3__.isFunction)(value)) {\n cb = value;\n } else {\n cb = value.handler;\n options = value;\n }\n const cur = currentInstance;\n setCurrentInstance(this);\n const res = doWatch(getter, cb.bind(publicThis), options);\n if (cur) {\n setCurrentInstance(cur);\n } else {\n unsetCurrentInstance();\n }\n return res;\n}\nfunction createPathGetter(ctx, path) {\n const segments = path.split('.');\n return () => {\n let cur = ctx;\n for (let i = 0; i < segments.length && cur; i++) {\n cur = cur[segments[i]];\n }\n return cur;\n };\n}\nfunction traverse(value, seen) {\n if (!(0,_vue_shared__WEBPACK_IMPORTED_MODULE_3__.isObject)(value) || value[\"__v_skip\" /* ReactiveFlags.SKIP */]) {\n return value;\n }\n seen = seen || new Set();\n if (seen.has(value)) {\n return value;\n }\n seen.add(value);\n if ((0,_vue_reactivity__WEBPACK_IMPORTED_MODULE_2__.isRef)(value)) {\n traverse(value.value, seen);\n } else if ((0,_vue_shared__WEBPACK_IMPORTED_MODULE_3__.isArray)(value)) {\n for (let i = 0; i < value.length; i++) {\n traverse(value[i], seen);\n }\n } else if ((0,_vue_shared__WEBPACK_IMPORTED_MODULE_3__.isSet)(value) || (0,_vue_shared__WEBPACK_IMPORTED_MODULE_3__.isMap)(value)) {\n value.forEach(v => {\n traverse(v, seen);\n });\n } else if ((0,_vue_shared__WEBPACK_IMPORTED_MODULE_3__.isPlainObject)(value)) {\n for (const key in value) {\n traverse(value[key], seen);\n }\n }\n return value;\n}\nfunction useTransitionState() {\n const state = {\n isMounted: false,\n isLeaving: false,\n isUnmounting: false,\n leavingVNodes: new Map()\n };\n onMounted(() => {\n state.isMounted = true;\n });\n onBeforeUnmount(() => {\n state.isUnmounting = true;\n });\n return state;\n}\nconst TransitionHookValidator = [Function, Array];\nconst BaseTransitionImpl = {\n name: `BaseTransition`,\n props: {\n mode: String,\n appear: Boolean,\n persisted: Boolean,\n // enter\n onBeforeEnter: TransitionHookValidator,\n onEnter: TransitionHookValidator,\n onAfterEnter: TransitionHookValidator,\n onEnterCancelled: TransitionHookValidator,\n // leave\n onBeforeLeave: TransitionHookValidator,\n onLeave: TransitionHookValidator,\n onAfterLeave: TransitionHookValidator,\n onLeaveCancelled: TransitionHookValidator,\n // appear\n onBeforeAppear: TransitionHookValidator,\n onAppear: TransitionHookValidator,\n onAfterAppear: TransitionHookValidator,\n onAppearCancelled: TransitionHookValidator\n },\n setup(props, {\n slots\n }) {\n const instance = getCurrentInstance();\n const state = useTransitionState();\n let prevTransitionKey;\n return () => {\n const children = slots.default && getTransitionRawChildren(slots.default(), true);\n if (!children || !children.length) {\n return;\n }\n let child = children[0];\n if (children.length > 1) {\n let hasFound = false;\n // locate first non-comment child\n for (const c of children) {\n if (c.type !== Comment) {\n if ( true && hasFound) {\n // warn more than one non-comment child\n warn(' can only be used on a single element or component. ' + 'Use for lists.');\n break;\n }\n child = c;\n hasFound = true;\n if (false) {}\n }\n }\n }\n // there's no need to track reactivity for these props so use the raw\n // props for a bit better perf\n const rawProps = (0,_vue_reactivity__WEBPACK_IMPORTED_MODULE_2__.toRaw)(props);\n const {\n mode\n } = rawProps;\n // check mode\n if ( true && mode && mode !== 'in-out' && mode !== 'out-in' && mode !== 'default') {\n warn(`invalid mode: ${mode}`);\n }\n if (state.isLeaving) {\n return emptyPlaceholder(child);\n }\n // in the case of , we need to\n // compare the type of the kept-alive children.\n const innerChild = getKeepAliveChild(child);\n if (!innerChild) {\n return emptyPlaceholder(child);\n }\n const enterHooks = resolveTransitionHooks(innerChild, rawProps, state, instance);\n setTransitionHooks(innerChild, enterHooks);\n const oldChild = instance.subTree;\n const oldInnerChild = oldChild && getKeepAliveChild(oldChild);\n let transitionKeyChanged = false;\n const {\n getTransitionKey\n } = innerChild.type;\n if (getTransitionKey) {\n const key = getTransitionKey();\n if (prevTransitionKey === undefined) {\n prevTransitionKey = key;\n } else if (key !== prevTransitionKey) {\n prevTransitionKey = key;\n transitionKeyChanged = true;\n }\n }\n // handle mode\n if (oldInnerChild && oldInnerChild.type !== Comment && (!isSameVNodeType(innerChild, oldInnerChild) || transitionKeyChanged)) {\n const leavingHooks = resolveTransitionHooks(oldInnerChild, rawProps, state, instance);\n // update old tree's hooks in case of dynamic transition\n setTransitionHooks(oldInnerChild, leavingHooks);\n // switching between different views\n if (mode === 'out-in') {\n state.isLeaving = true;\n // return placeholder node and queue update when leave finishes\n leavingHooks.afterLeave = () => {\n state.isLeaving = false;\n // #6835\n // it also needs to be updated when active is undefined\n if (instance.update.active !== false) {\n instance.update();\n }\n };\n return emptyPlaceholder(child);\n } else if (mode === 'in-out' && innerChild.type !== Comment) {\n leavingHooks.delayLeave = (el, earlyRemove, delayedLeave) => {\n const leavingVNodesCache = getLeavingNodesForType(state, oldInnerChild);\n leavingVNodesCache[String(oldInnerChild.key)] = oldInnerChild;\n // early removal callback\n el._leaveCb = () => {\n earlyRemove();\n el._leaveCb = undefined;\n delete enterHooks.delayedLeave;\n };\n enterHooks.delayedLeave = delayedLeave;\n };\n }\n }\n return child;\n };\n }\n};\n// export the public type for h/tsx inference\n// also to avoid inline import() in generated d.ts files\nconst BaseTransition = BaseTransitionImpl;\nfunction getLeavingNodesForType(state, vnode) {\n const {\n leavingVNodes\n } = state;\n let leavingVNodesCache = leavingVNodes.get(vnode.type);\n if (!leavingVNodesCache) {\n leavingVNodesCache = Object.create(null);\n leavingVNodes.set(vnode.type, leavingVNodesCache);\n }\n return leavingVNodesCache;\n}\n// The transition hooks are attached to the vnode as vnode.transition\n// and will be called at appropriate timing in the renderer.\nfunction resolveTransitionHooks(vnode, props, state, instance) {\n const {\n appear,\n mode,\n persisted = false,\n onBeforeEnter,\n onEnter,\n onAfterEnter,\n onEnterCancelled,\n onBeforeLeave,\n onLeave,\n onAfterLeave,\n onLeaveCancelled,\n onBeforeAppear,\n onAppear,\n onAfterAppear,\n onAppearCancelled\n } = props;\n const key = String(vnode.key);\n const leavingVNodesCache = getLeavingNodesForType(state, vnode);\n const callHook = (hook, args) => {\n hook && callWithAsyncErrorHandling(hook, instance, 9 /* ErrorCodes.TRANSITION_HOOK */, args);\n };\n const callAsyncHook = (hook, args) => {\n const done = args[1];\n callHook(hook, args);\n if ((0,_vue_shared__WEBPACK_IMPORTED_MODULE_3__.isArray)(hook)) {\n if (hook.every(hook => hook.length <= 1)) done();\n } else if (hook.length <= 1) {\n done();\n }\n };\n const hooks = {\n mode,\n persisted,\n beforeEnter(el) {\n let hook = onBeforeEnter;\n if (!state.isMounted) {\n if (appear) {\n hook = onBeforeAppear || onBeforeEnter;\n } else {\n return;\n }\n }\n // for same element (v-show)\n if (el._leaveCb) {\n el._leaveCb(true /* cancelled */);\n }\n // for toggled element with same key (v-if)\n const leavingVNode = leavingVNodesCache[key];\n if (leavingVNode && isSameVNodeType(vnode, leavingVNode) && leavingVNode.el._leaveCb) {\n // force early removal (not cancelled)\n leavingVNode.el._leaveCb();\n }\n callHook(hook, [el]);\n },\n enter(el) {\n let hook = onEnter;\n let afterHook = onAfterEnter;\n let cancelHook = onEnterCancelled;\n if (!state.isMounted) {\n if (appear) {\n hook = onAppear || onEnter;\n afterHook = onAfterAppear || onAfterEnter;\n cancelHook = onAppearCancelled || onEnterCancelled;\n } else {\n return;\n }\n }\n let called = false;\n const done = el._enterCb = cancelled => {\n if (called) return;\n called = true;\n if (cancelled) {\n callHook(cancelHook, [el]);\n } else {\n callHook(afterHook, [el]);\n }\n if (hooks.delayedLeave) {\n hooks.delayedLeave();\n }\n el._enterCb = undefined;\n };\n if (hook) {\n callAsyncHook(hook, [el, done]);\n } else {\n done();\n }\n },\n leave(el, remove) {\n const key = String(vnode.key);\n if (el._enterCb) {\n el._enterCb(true /* cancelled */);\n }\n\n if (state.isUnmounting) {\n return remove();\n }\n callHook(onBeforeLeave, [el]);\n let called = false;\n const done = el._leaveCb = cancelled => {\n if (called) return;\n called = true;\n remove();\n if (cancelled) {\n callHook(onLeaveCancelled, [el]);\n } else {\n callHook(onAfterLeave, [el]);\n }\n el._leaveCb = undefined;\n if (leavingVNodesCache[key] === vnode) {\n delete leavingVNodesCache[key];\n }\n };\n leavingVNodesCache[key] = vnode;\n if (onLeave) {\n callAsyncHook(onLeave, [el, done]);\n } else {\n done();\n }\n },\n clone(vnode) {\n return resolveTransitionHooks(vnode, props, state, instance);\n }\n };\n return hooks;\n}\n// the placeholder really only handles one special case: KeepAlive\n// in the case of a KeepAlive in a leave phase we need to return a KeepAlive\n// placeholder with empty content to avoid the KeepAlive instance from being\n// unmounted.\nfunction emptyPlaceholder(vnode) {\n if (isKeepAlive(vnode)) {\n vnode = cloneVNode(vnode);\n vnode.children = null;\n return vnode;\n }\n}\nfunction getKeepAliveChild(vnode) {\n return isKeepAlive(vnode) ? vnode.children ? vnode.children[0] : undefined : vnode;\n}\nfunction setTransitionHooks(vnode, hooks) {\n if (vnode.shapeFlag & 6 /* ShapeFlags.COMPONENT */ && vnode.component) {\n setTransitionHooks(vnode.component.subTree, hooks);\n } else if (vnode.shapeFlag & 128 /* ShapeFlags.SUSPENSE */) {\n vnode.ssContent.transition = hooks.clone(vnode.ssContent);\n vnode.ssFallback.transition = hooks.clone(vnode.ssFallback);\n } else {\n vnode.transition = hooks;\n }\n}\nfunction getTransitionRawChildren(children, keepComment = false, parentKey) {\n let ret = [];\n let keyedFragmentCount = 0;\n for (let i = 0; i < children.length; i++) {\n let child = children[i];\n // #5360 inherit parent key in case of