{"version":3,"file":"localize.dea4189a.js","sources":["node_modules/hybrids/src/global.js","node_modules/hybrids/src/emitter.js","node_modules/hybrids/src/cache.js","node_modules/hybrids/src/utils.js","node_modules/hybrids/src/define.js","node_modules/hybrids/src/store.js","node_modules/hybrids/src/template/utils.js","node_modules/hybrids/src/template/layout.js","node_modules/hybrids/src/template/resolvers/array.js","node_modules/hybrids/src/template/resolvers/value.js","node_modules/hybrids/src/template/resolvers/node.js","node_modules/hybrids/src/template/resolvers/event.js","node_modules/hybrids/src/template/resolvers/class.js","node_modules/hybrids/src/template/resolvers/style.js","node_modules/hybrids/src/template/resolvers/property.js","node_modules/hybrids/src/template/core.js","node_modules/hybrids/src/localize.js","node_modules/hybrids/src/template/helpers.js","node_modules/hybrids/src/template/index.js"],"sourcesContent":["/* eslint-disable no-undef */\n\nexport function polyfill(global) {\n global = Object.create(global);\n\n if (!(\"requestAnimationFrame\" in global)) {\n Object.defineProperty(global, \"requestAnimationFrame\", {\n value: function requestAnimationFrame(callback) {\n return setTimeout(callback, 0);\n },\n });\n }\n\n if (!(\"HTMLElement\" in global)) {\n Object.defineProperty(global, \"HTMLElement\", {\n value: class HTMLElement {\n constructor() {\n throw Error(\n \"Current context does not support defining custom elements\",\n );\n }\n },\n });\n }\n\n if (!(\"document\" in global)) {\n Object.defineProperty(global, \"document\", {\n value: {\n importNode: () => {\n throw Error(\"Current context does not support importing nodes\");\n },\n },\n });\n }\n\n return global;\n}\n\n/* istanbul ignore next */\nexport default typeof window === \"object\" ? window : polyfill(globalThis);\n","import global from \"./global.js\";\n\nconst callbacks = new WeakMap();\nconst queue = new Set();\n\nfunction execute() {\n try {\n queue.forEach((target) => {\n try {\n callbacks.get(target)();\n queue.delete(target);\n } catch (e) {\n queue.delete(target);\n throw e;\n }\n });\n } catch (e) {\n if (queue.size) execute();\n throw e;\n }\n}\n\nexport function dispatch(target) {\n if (callbacks.has(target)) {\n if (!queue.size) {\n global.requestAnimationFrame(execute);\n }\n queue.add(target);\n }\n}\n\nexport function subscribe(target, cb) {\n callbacks.set(target, cb);\n dispatch(target);\n\n return function unsubscribe() {\n queue.delete(target);\n callbacks.delete(target);\n };\n}\n","import global from \"./global.js\";\nimport * as emitter from \"./emitter.js\";\n\nconst entries = new WeakMap();\nconst suspense = new WeakSet();\n\nexport function getEntry(target, key) {\n let targetMap = entries.get(target);\n if (!targetMap) {\n targetMap = new Map();\n entries.set(target, targetMap);\n }\n\n let entry = targetMap.get(key);\n\n if (!entry) {\n entry = {\n target,\n key,\n value: undefined,\n lastValue: undefined,\n contexts: new Set(),\n deps: new Set(),\n state: 0,\n depState: 0,\n resolved: false,\n };\n targetMap.set(key, entry);\n }\n\n return entry;\n}\n\nexport function getEntries(target) {\n const result = [];\n const targetMap = entries.get(target);\n if (targetMap) {\n targetMap.forEach((entry) => {\n result.push(entry);\n });\n }\n return result;\n}\n\nfunction cleanContexts(entry) {\n entry.contexts.forEach((contextEntry) => {\n if (suspense.has(contextEntry.target)) {\n Object.assign(contextEntry, {\n depState: 0,\n resolved: false,\n });\n\n entry.contexts.delete(contextEntry);\n\n cleanContexts(contextEntry);\n }\n });\n}\n\nfunction dispatchDeep(entry) {\n entry.resolved = false;\n\n if (!suspense.has(entry.target)) {\n emitter.dispatch(entry);\n }\n\n cleanContexts(entry);\n entry.contexts.forEach(dispatchDeep);\n}\n\nlet context = null;\nconst contexts = new Set();\nexport function get(target, key, getter) {\n const entry = getEntry(target, key);\n\n if (context && !suspense.has(context.target)) {\n context.deps.add(entry);\n entry.contexts.add(context);\n }\n\n if (!suspense.has(target)) {\n cleanContexts(entry);\n\n if (entry.resolved) {\n return entry.value;\n }\n\n if (entry.depState > entry.state) {\n let depState = entry.state;\n\n for (const depEntry of entry.deps) {\n // eslint-disable-next-line no-unused-expressions\n depEntry.target[depEntry.key];\n\n if (!depEntry.resolved) {\n depState = false;\n break;\n }\n\n depState += depEntry.state;\n }\n\n if (depState && depState === entry.depState) {\n entry.resolved = true;\n return entry.value;\n }\n }\n }\n\n const lastContext = context;\n\n try {\n if (contexts.has(entry)) {\n throw Error(`Circular get invocation is forbidden: '${key}'`);\n }\n\n entry.deps.forEach((depEntry) => {\n depEntry.contexts.delete(entry);\n });\n\n entry.deps.clear();\n context = entry;\n contexts.add(entry);\n\n const nextValue = getter(target, entry.value);\n\n context = lastContext;\n\n if (nextValue !== entry.value) {\n entry.value = nextValue;\n entry.state += 1;\n }\n\n let depState = entry.state;\n entry.deps.forEach((depEntry) => {\n depState += depEntry.state;\n });\n\n entry.depState = depState;\n entry.resolved = !suspense.has(target);\n\n contexts.delete(entry);\n } catch (e) {\n context = lastContext;\n contexts.delete(entry);\n\n entry.resolved = false;\n\n if (context && !suspense.has(context)) {\n context.deps.delete(entry);\n entry.contexts.delete(context);\n }\n\n throw e;\n }\n\n return entry.value;\n}\n\nexport function set(target, key, setter, value) {\n const entry = getEntry(target, key);\n const newValue = setter(target, value, entry.value);\n\n if (newValue !== entry.value) {\n entry.value = newValue;\n entry.state += 1;\n entry.depState = 0;\n\n dispatchDeep(entry);\n }\n}\n\nconst gcList = new Set();\nfunction deleteEntry(entry) {\n if (!gcList.size) {\n global.requestAnimationFrame(() => {\n gcList.forEach((e) => {\n if (e.contexts.size === 0) {\n e.deps.forEach((depEntry) => {\n depEntry.contexts.delete(e);\n });\n\n const targetMap = entries.get(e.target);\n targetMap.delete(e.key);\n }\n });\n gcList.clear();\n });\n }\n\n gcList.add(entry);\n}\n\nfunction invalidateEntry(entry, options) {\n entry.depState = 0;\n dispatchDeep(entry);\n\n if (options.clearValue) {\n entry.value = undefined;\n entry.lastValue = undefined;\n }\n\n if (options.deleteEntry) {\n deleteEntry(entry);\n }\n\n if (options.force) {\n entry.state += 1;\n }\n}\n\nexport function invalidate(target, key, options = {}) {\n if (contexts.size) {\n throw Error(\n `Invalidating property in chain of get calls is forbidden: '${key}'`,\n );\n }\n\n const entry = getEntry(target, key);\n invalidateEntry(entry, options);\n}\n\nexport function invalidateAll(target, options = {}) {\n if (contexts.size) {\n throw Error(\n \"Invalidating all properties in chain of get calls is forbidden\",\n );\n }\n\n const targetMap = entries.get(target);\n if (targetMap) {\n targetMap.forEach((entry) => {\n invalidateEntry(entry, options);\n });\n }\n}\n\nexport function observe(target, key, getter, fn) {\n const entry = getEntry(target, key);\n\n return emitter.subscribe(entry, () => {\n const value = get(target, key, getter);\n\n if (value !== entry.lastValue) {\n fn(target, value, entry.lastValue);\n entry.lastValue = value;\n }\n });\n}\n\nexport function suspend(target) {\n suspense.add(target);\n}\n\nexport function unsuspend(target) {\n suspense.delete(target);\n}\n","import global from \"./global.js\";\n\nconst camelToDashMap = new Map();\nexport function camelToDash(str) {\n let result = camelToDashMap.get(str);\n if (result === undefined) {\n result = str.replace(/([a-z])([A-Z])/g, \"$1-$2\").toLowerCase();\n camelToDashMap.set(str, result);\n }\n return result;\n}\n\nexport function dispatch(host, eventType, options = {}) {\n return host.dispatchEvent(\n new global.CustomEvent(eventType, { bubbles: false, ...options }),\n );\n}\n\nexport function stringifyElement(target) {\n return `<${String(target.tagName).toLowerCase()}>`;\n}\n\nexport function walkInShadow(target, cb) {\n if (target.nodeType === global.Node.ELEMENT_NODE) {\n cb(target);\n\n if (target.shadowRoot) {\n walkInShadow(target.shadowRoot, cb);\n }\n }\n\n const walker = global.document.createTreeWalker(\n target,\n global.NodeFilter.SHOW_ELEMENT,\n null,\n false,\n );\n\n while (walker.nextNode()) {\n const el = walker.currentNode;\n cb(el);\n if (el.shadowRoot) {\n walkInShadow(el.shadowRoot, cb);\n }\n }\n}\n\nexport const deferred = Promise.resolve();\nexport const storePointer = new WeakMap();\nexport const probablyDevMode = walkInShadow.name === \"walkInShadow\";\n","import global from \"./global.js\";\nimport * as cache from \"./cache.js\";\nimport { deferred, camelToDash, walkInShadow } from \"./utils.js\";\n\nconst propsMap = new WeakMap();\nconst disconnects = new WeakMap();\n\nexport const callbacksMap = new WeakMap();\n\nclass HybridsRootElement extends global.HTMLElement {\n constructor() {\n super();\n\n const props = propsMap.get(this.constructor);\n\n for (let index = 0; index < props.length; index += 1) {\n const key = props[index];\n if (hasOwnProperty.call(this, key)) {\n const value = this[key];\n delete this[key];\n this[key] = value;\n }\n }\n\n cache.suspend(this);\n }\n\n connectedCallback() {\n cache.unsuspend(this);\n\n const callbacks = callbacksMap.get(this.constructor);\n const list = [];\n\n for (let index = 0; index < callbacks.length; index += 1) {\n const cb = callbacks[index](this);\n if (cb) list.push(cb);\n }\n\n disconnects.set(this, list);\n }\n\n disconnectedCallback() {\n cache.suspend(this);\n\n const list = disconnects.get(this);\n for (let index = 0; index < list.length; index += 1) {\n list[index]();\n }\n }\n}\n\nfunction render(fn, useShadow) {\n return {\n get: useShadow\n ? (host) => {\n const updateDOM = fn(host);\n const target =\n host.shadowRoot ||\n host.attachShadow({\n mode: \"open\",\n delegatesFocus: fn.delegatesFocus || false,\n });\n return () => {\n updateDOM(host, target);\n return target;\n };\n }\n : (host) => {\n const updateDOM = fn(host);\n return () => {\n updateDOM(host, host);\n return host;\n };\n },\n observe(host, flush) { flush(); }, // prettier-ignore\n };\n}\n\nconst transforms = {\n string: String,\n number: Number,\n boolean: Boolean,\n undefined: (v) => v,\n};\n\nfunction property(key, desc) {\n const type = typeof desc.value;\n const transform = transforms[type];\n\n if (!transform) {\n throw TypeError(\n `Invalid default value for '${key}' property - it must be a string, number, boolean or undefined: ${type}`,\n );\n }\n\n const defaultValue = desc.value;\n const attrName = camelToDash(key);\n\n const setAttr = (host, value) => {\n if (\n (!value && value !== 0) ||\n (typeof value === \"object\" && value.toString() === undefined)\n ) {\n host.removeAttribute(attrName);\n } else {\n host.setAttribute(attrName, type === \"boolean\" ? \"\" : value);\n }\n return value;\n };\n\n return {\n get: (host, value) => {\n if (value === undefined) {\n if (host.hasAttribute(attrName)) {\n value = transform(type === \"boolean\" || host.getAttribute(attrName));\n } else {\n return defaultValue;\n }\n }\n return value;\n },\n set:\n type !== \"undefined\"\n ? (host, value) => setAttr(host, transform(value))\n : (host, value) => value,\n connect:\n type !== \"undefined\"\n ? (host, _, invalidate) => {\n if (!host.hasAttribute(attrName) && host[key] === defaultValue) {\n setAttr(host, defaultValue);\n }\n\n return desc.connect && desc.connect(host, _, invalidate);\n }\n : desc.connect,\n observe: desc.observe,\n };\n}\n\nfunction compile(hybrids, HybridsElement) {\n if (HybridsElement) {\n if (hybrids === HybridsElement.hybrids) return HybridsElement;\n propsMap.get(HybridsElement).forEach((key) => {\n delete HybridsElement.prototype[key];\n });\n } else {\n HybridsElement = class extends HybridsRootElement {};\n }\n\n HybridsElement.hybrids = hybrids;\n\n const callbacks = [];\n const props = Object.keys(hybrids);\n\n callbacksMap.set(HybridsElement, callbacks);\n propsMap.set(HybridsElement, props);\n\n props.forEach((key) => {\n if (key === \"tag\") return;\n\n let desc = hybrids[key];\n const type = typeof desc;\n\n if (type === \"function\") {\n if (key === \"render\") {\n desc = render(desc, true);\n } else if (key === \"content\") {\n desc = render(desc);\n } else {\n desc = { get: desc };\n }\n } else if (type !== \"object\" || desc === null) {\n desc = { value: desc };\n } else if (desc.set) {\n const attrName = camelToDash(key);\n const get = desc.get || ((host, value) => value);\n desc.get = (host, value) => {\n if (value === undefined) {\n value = desc.set(host, host.getAttribute(attrName) || value);\n }\n return get(host, value);\n };\n }\n\n if (hasOwnProperty.call(desc, \"value\")) {\n desc = property(key, desc);\n } else if (!desc.get) {\n throw TypeError(\n `Invalid descriptor for '${key}' property - it must contain 'value' or 'get' option`,\n );\n }\n\n Object.defineProperty(HybridsElement.prototype, key, {\n get: function get() {\n return cache.get(this, key, desc.get);\n },\n set:\n desc.set &&\n function set(newValue) {\n cache.set(this, key, desc.set, newValue);\n },\n enumerable: true,\n configurable: true,\n });\n\n if (desc.observe) {\n callbacks.unshift((host) =>\n cache.observe(host, key, desc.get, desc.observe),\n );\n }\n\n if (desc.connect) {\n callbacks.push((host) => {\n function invalidate(options) {\n cache.invalidate(host, key, {\n force: typeof options === \"object\" && options.force === true,\n });\n }\n return desc.connect(host, key, invalidate);\n });\n }\n });\n\n return HybridsElement;\n}\n\nconst updateQueue = new Map();\nfunction update(HybridsElement) {\n if (!updateQueue.size) {\n deferred.then(() => {\n walkInShadow(global.document.body, (node) => {\n if (updateQueue.has(node.constructor)) {\n const prevHybrids = updateQueue.get(node.constructor);\n const hybrids = node.constructor.hybrids;\n node.disconnectedCallback();\n\n Object.keys(hybrids).forEach((key) => {\n const type = typeof hybrids[key];\n const clearValue =\n type !== \"object\" &&\n type !== \"function\" &&\n hybrids[key] !== prevHybrids[key];\n cache.invalidate(node, key, { clearValue });\n });\n\n node.connectedCallback();\n }\n });\n updateQueue.clear();\n });\n }\n updateQueue.set(HybridsElement, HybridsElement.hybrids);\n}\n\nfunction define(hybrids) {\n if (!hybrids.tag) {\n throw TypeError(\n \"Error while defining hybrids: 'tag' property with dashed tag name is required\",\n );\n }\n\n const HybridsElement = global.customElements.get(hybrids.tag);\n\n if (HybridsElement) {\n if (HybridsElement.hybrids) {\n update(HybridsElement);\n compile(hybrids, HybridsElement);\n\n return Object.freeze(hybrids);\n }\n\n throw TypeError(\n `Custom element with '${hybrids.tag}' tag name already defined outside of the hybrids context`,\n );\n }\n\n global.customElements.define(hybrids.tag, compile(hybrids));\n return Object.freeze(hybrids);\n}\n\nexport default Object.freeze(\n Object.assign(define, { compile: (hybrids) => compile(hybrids) }),\n);\n","/* eslint-disable no-use-before-define */\nimport global from \"./global.js\";\nimport * as cache from \"./cache.js\";\nimport { storePointer } from \"./utils.js\";\n\nconst connect = Symbol(\"store.connect\");\n\nconst definitions = new WeakMap();\nconst stales = new WeakMap();\nconst refs = new WeakSet();\n\nfunction resolve(config, model, lastModel) {\n if (lastModel) {\n definitions.set(lastModel, null);\n stales.set(lastModel, model);\n }\n\n definitions.set(model, config);\n\n if (config.storage.observe) {\n const modelValue = model && config.isInstance(model) ? model : null;\n\n const lastModelValue =\n lastModel && config.isInstance(lastModel) ? lastModel : null;\n\n if (modelValue !== lastModelValue) {\n config.storage.observe(modelValue, lastModelValue);\n }\n }\n\n return model;\n}\n\nfunction shallowEqual(target, compare) {\n return Object.keys(target).every((key) => target[key] === compare[key]);\n}\n\nfunction resolveWithInvalidate(config, model, lastModel) {\n resolve(config, model, lastModel);\n\n if (\n config.invalidate &&\n (!lastModel ||\n error(model) ||\n !config.isInstance(lastModel) ||\n !shallowEqual(model, lastModel))\n ) {\n config.invalidate();\n }\n\n return model;\n}\n\nfunction syncCache(config, id, model, invalidate = true) {\n cache.set(config, id, invalidate ? resolveWithInvalidate : resolve, model);\n return model;\n}\n\nlet currentTimestamp;\nfunction getCurrentTimestamp() {\n if (!currentTimestamp) {\n currentTimestamp = Date.now();\n global.requestAnimationFrame(() => {\n currentTimestamp = undefined;\n });\n }\n return currentTimestamp;\n}\n\nconst timestamps = new WeakMap();\n\nfunction getTimestamp(model) {\n let timestamp = timestamps.get(model);\n\n if (!timestamp) {\n timestamp = getCurrentTimestamp();\n timestamps.set(model, timestamp);\n }\n\n return timestamp;\n}\n\nfunction setTimestamp(model) {\n timestamps.set(model, getCurrentTimestamp());\n return model;\n}\n\nfunction invalidateTimestamp(model) {\n timestamps.set(model, 1);\n return model;\n}\n\nfunction hashCode(str) {\n return global.btoa(\n Array.from(str).reduce(\n // eslint-disable-next-line no-bitwise\n (s, c) => (Math.imul(31, s) + c.charCodeAt(0)) | 0,\n 0,\n ),\n );\n}\n\nconst offlinePrefix = \"hybrids:store:cache\";\nconst offlineKeys = {};\n\nlet clearPromise;\nfunction setupOfflineKey(config, threshold) {\n const key = `${offlinePrefix}:${hashCode(JSON.stringify(config.model))}`;\n\n offlineKeys[key] = getCurrentTimestamp() + threshold;\n\n if (!clearPromise) {\n clearPromise = Promise.resolve().then(() => {\n const previousKeys =\n JSON.parse(global.localStorage.getItem(offlinePrefix)) || {};\n const timestamp = getCurrentTimestamp();\n\n Object.keys(previousKeys).forEach((k) => {\n /* istanbul ignore next */\n if (!offlineKeys[k] && previousKeys[k] < timestamp) {\n global.localStorage.removeItem(k);\n delete previousKeys[k];\n }\n });\n\n global.localStorage.setItem(\n offlinePrefix,\n JSON.stringify({ ...previousKeys, ...offlineKeys }),\n );\n clearPromise = null;\n });\n }\n\n return key;\n}\n\nconst JSON_LIKE_REGEX = /^\\{.+\\}$/;\nfunction setupStorage(config, options) {\n if (typeof options === \"function\") options = { get: options };\n\n const result = {\n cache: true,\n loose: false,\n ...options,\n };\n\n if (result.observe) {\n const fn = result.observe;\n if (typeof fn !== \"function\") {\n throw TypeError(\n `Storage 'observe' property must be a function: ${typeof result.observe}`,\n );\n }\n result.observe = (model, lastModel) => {\n try {\n let id = lastModel ? lastModel.id : model.id;\n if (JSON_LIKE_REGEX.test(id)) {\n try {\n id = JSON.parse(id);\n // istanbul ignore next\n } catch (e) {} // eslint-disable-line no-empty\n }\n\n fn(id, model, lastModel);\n } catch (e) {\n console.error(e);\n }\n };\n }\n\n if (result.cache === false || result.cache === 0) {\n result.validate = (cachedModel) =>\n !cachedModel || getTimestamp(cachedModel) === getCurrentTimestamp();\n } else if (typeof result.cache === \"number\") {\n result.validate = (cachedModel) =>\n !cachedModel ||\n getTimestamp(cachedModel) + result.cache > getCurrentTimestamp();\n } else {\n if (result.cache !== true) {\n throw TypeError(\n `Storage 'cache' property must be a boolean or number: ${typeof result.cache}`,\n );\n }\n result.validate = (cachedModel) => getTimestamp(cachedModel) !== 1;\n }\n\n if (!result.get) {\n result.get = (id) => {\n throw notFoundError(stringifyId(id));\n };\n }\n\n if (result.offline) {\n const isBool = result.offline === true;\n const threshold = isBool\n ? 1000 * 60 * 60 * 24 * 30 /* 30 days */\n : result.offline;\n const offlineKey = setupOfflineKey(config, threshold);\n\n try {\n const items = JSON.parse(global.localStorage.getItem(offlineKey)) || {};\n\n let flush;\n\n result.offline = Object.freeze({\n key: offlineKey,\n threshold,\n get: isBool\n ? (id) => {\n if (hasOwnProperty.call(items, id)) {\n return JSON.parse(items[id][1]);\n }\n return null;\n }\n : (id) => {\n if (hasOwnProperty.call(items, id)) {\n const item = items[id];\n if (item[0] + threshold < getCurrentTimestamp()) {\n delete items[id];\n return null;\n }\n return JSON.parse(item[1]);\n }\n return null;\n },\n set(id, values) {\n if (values) {\n items[id] = [\n getCurrentTimestamp(),\n JSON.stringify(values, function replacer(key, value) {\n if (value === this[\"\"]) return value;\n\n if (value && typeof value === \"object\") {\n const valueConfig = definitions.get(value);\n if (valueConfig === config && value.id === id) {\n return String(value);\n }\n\n const offline = valueConfig && valueConfig.storage.offline;\n if (offline) {\n if (valueConfig.list) {\n return value.map((model) => {\n configs\n .get(valueConfig.model)\n .storage.offline.set(model.id, model);\n return `${model}`;\n });\n }\n\n valueConfig.storage.offline.set(value.id, value);\n return `${value}`;\n }\n }\n\n return value;\n }),\n ];\n } else {\n delete items[id];\n }\n\n if (!flush) {\n flush = Promise.resolve().then(() => {\n const timestamp = getCurrentTimestamp();\n\n Object.keys(items).forEach((key) => {\n if (items[key][0] + threshold < timestamp) {\n delete items[key];\n }\n });\n\n global.localStorage.setItem(offlineKey, JSON.stringify(items));\n flush = null;\n });\n }\n\n return values;\n },\n });\n } catch (e) /* istanbul ignore next */ {\n console.error(e);\n result.offline = false;\n }\n }\n\n return Object.freeze(result);\n}\n\nfunction memoryStorage(config) {\n return {\n get: config.enumerable ? () => {} : () => config.create({}),\n set: config.enumerable\n ? (id, values) => values\n : (id, values) => (values === null ? { id } : values),\n list:\n config.enumerable &&\n function list(id) {\n if (id) {\n throw TypeError(`Memory-based model definition does not support id`);\n }\n\n return cache.getEntries(config).reduce((acc, { key, value }) => {\n if (key === config) return acc;\n if (value && !error(value)) acc.push(key);\n return acc;\n }, []);\n },\n loose: true,\n };\n}\n\nfunction bootstrap(Model, nested) {\n if (Array.isArray(Model)) {\n return setupListModel(Model[0], nested);\n }\n return setupModel(Model, nested);\n}\n\nfunction getTypeConstructor(type, key) {\n switch (type) {\n case \"string\":\n return (v) => (v !== undefined && v !== null ? String(v) : \"\");\n case \"number\":\n return Number;\n case \"boolean\":\n return Boolean;\n default:\n throw TypeError(\n `The value of the '${key}' must be a string, number or boolean: ${type}`,\n );\n }\n}\n\nconst stateSetter = (_, value, lastValue) => {\n if (value.state === \"error\") {\n return { state: \"error\", error: value.value };\n }\n\n value.error = !!lastValue && lastValue.error;\n\n return value;\n};\nfunction setModelState(model, state, value = model) {\n cache.set(model, \"state\", stateSetter, { state, value });\n return model;\n}\n\nconst stateGetter = (\n model,\n v = { state: \"ready\", value: model, error: false },\n) => v;\nfunction getModelState(model) {\n return cache.get(model, \"state\", stateGetter);\n}\n\n// UUID v4 generator thanks to https://gist.github.com/jed/982883\nfunction uuid(temp) {\n return temp\n ? // eslint-disable-next-line no-bitwise, no-mixed-operators\n (temp ^ ((Math.random() * 16) >> (temp / 4))).toString(16)\n : ([1e7] + -1e3 + -4e3 + -8e3 + -1e11).replace(/[018]/g, uuid);\n}\n\nfunction ref(fn) {\n if (typeof fn !== \"function\") {\n throw TypeError(`The first argument must be a function: ${typeof fn}`);\n }\n\n refs.add(fn);\n return fn;\n}\n\nconst validationMap = new WeakMap();\nfunction resolveKey(Model, key, config) {\n let defaultValue = config.model[key];\n if (refs.has(defaultValue)) defaultValue = defaultValue();\n let type = typeof defaultValue;\n\n if (\n defaultValue instanceof String ||\n defaultValue instanceof Number ||\n defaultValue instanceof Boolean\n ) {\n const check = validationMap.get(defaultValue);\n if (!check) {\n throw TypeError(\n stringifyModel(\n Model,\n `You must use primitive ${typeof defaultValue.valueOf()} value for '${key}' property of the provided model definition`,\n ),\n );\n }\n\n defaultValue = defaultValue.valueOf();\n type = typeof defaultValue;\n\n config.checks.set(key, check);\n }\n\n return { defaultValue, type };\n}\n\nfunction stringifyModel(Model, msg) {\n return `${msg}\\n\\nModel = ${JSON.stringify(Model, null, 2)}\\n`;\n}\n\nconst resolvedPromise = Promise.resolve();\nexport const configs = new WeakMap();\nfunction setupModel(Model, nested) {\n if (typeof Model !== \"object\" || Model === null) {\n throw TypeError(`Model definition must be an object: ${typeof Model}`);\n }\n\n let config = configs.get(Model);\n\n if (config && !config.enumerable) {\n if (nested && !config.nested) {\n throw TypeError(\n stringifyModel(\n Model,\n \"Provided model definition for nested object already used as a root definition\",\n ),\n );\n }\n\n if (!nested && config.nested) {\n throw TypeError(\n stringifyModel(\n Model,\n \"Nested model definition cannot be used outside of the parent definition\",\n ),\n );\n }\n }\n\n if (!config) {\n const storage = Model[connect];\n if (typeof storage === \"object\") Object.freeze(storage);\n\n let invalidatePromise;\n const enumerable = hasOwnProperty.call(Model, \"id\");\n const external = !!storage;\n\n const checks = new Map();\n\n const proto = {\n toString() {\n return this.id || undefined;\n },\n };\n const placeholder = Object.create(proto);\n\n config = {\n model: Model,\n external,\n enumerable,\n nested: !enumerable && !external && nested,\n placeholder: (id) => {\n const model = Object.create(placeholder);\n definitions.set(model, config);\n\n if (enumerable) model.id = id;\n\n return Object.freeze(model);\n },\n isInstance: (model) => Object.getPrototypeOf(model) !== placeholder,\n invalidate: () => {\n if (!invalidatePromise) {\n invalidatePromise = resolvedPromise.then(() => {\n cache.invalidate(config, config, { clearValue: true });\n invalidatePromise = null;\n });\n }\n },\n checks,\n };\n\n configs.set(Model, config);\n\n config.storage = setupStorage(config, storage || memoryStorage(config));\n\n const transform = Object.keys(Object.freeze(Model)).map((key) => {\n if (key !== \"id\") {\n Object.defineProperty(placeholder, key, {\n get() {\n throw Error(\n `Model instance in ${\n getModelState(this).state\n } state - use store.pending(), store.error(), or store.ready() guards`,\n );\n },\n enumerable: true,\n });\n }\n\n if (key === \"id\") {\n if (Model[key] !== true) {\n throw TypeError(\n \"The 'id' property in the model definition must be set to 'true' or not defined\",\n );\n }\n return (model, data, lastModel) => {\n let id;\n if (hasOwnProperty.call(data, \"id\")) {\n id = stringifyId(data.id);\n } else if (lastModel) {\n id = lastModel.id;\n } else {\n id = uuid();\n }\n\n Object.defineProperty(model, \"id\", { value: id, enumerable: true });\n };\n }\n\n const { defaultValue, type } = resolveKey(Model, key, config);\n\n switch (type) {\n case \"function\":\n return (model) => {\n Object.defineProperty(model, key, {\n get() {\n return cache.get(this, key, () => defaultValue(this));\n },\n });\n };\n case \"object\": {\n if (defaultValue === null) {\n throw TypeError(\n `The value for the '${key}' must be an object instance: ${defaultValue}`,\n );\n }\n\n const isArray = Array.isArray(defaultValue);\n\n if (isArray) {\n const nestedType = typeof defaultValue[0];\n\n if (nestedType !== \"object\") {\n if (\n nestedType === \"function\" &&\n ![String, Number, Boolean].includes(defaultValue[0])\n ) {\n throw TypeError(\n `The array item for the '${key}' must be one of the primitive types constructor: String, Number, or Boolean`,\n );\n }\n\n const Constructor =\n nestedType === \"function\"\n ? defaultValue[0]\n : getTypeConstructor(nestedType, key);\n\n const defaultArray =\n nestedType === \"function\"\n ? []\n : Object.freeze(defaultValue.map(Constructor));\n\n return (model, data, lastModel) => {\n if (hasOwnProperty.call(data, key)) {\n if (!Array.isArray(data[key])) {\n throw TypeError(\n `The value for '${key}' property must be an array: ${typeof data[\n key\n ]}`,\n );\n }\n model[key] = Object.freeze(data[key].map(Constructor));\n } else if (lastModel && hasOwnProperty.call(lastModel, key)) {\n model[key] = lastModel[key];\n } else {\n model[key] = defaultArray;\n }\n };\n }\n\n const localConfig = bootstrap(defaultValue, true);\n\n if (\n localConfig.external &&\n config.storage.offline &&\n localConfig.storage.offline &&\n localConfig.storage.offline.threshold <\n config.storage.offline.threshold\n ) {\n throw Error(\n `External nested model for '${key}' property has lower offline threshold (${localConfig.storage.offline.threshold} ms) than the parent definition (${config.storage.offline.threshold} ms)`,\n );\n }\n\n if (localConfig.enumerable && defaultValue[1]) {\n const nestedOptions = defaultValue[1];\n if (typeof nestedOptions !== \"object\") {\n throw TypeError(\n `Options for '${key}' array property must be an object instance: ${typeof nestedOptions}`,\n );\n }\n if (nestedOptions.loose) {\n config.contexts = config.contexts || new Set();\n config.contexts.add(bootstrap(defaultValue[0]));\n }\n }\n return (model, data, lastModel) => {\n if (hasOwnProperty.call(data, key)) {\n if (!Array.isArray(data[key])) {\n throw TypeError(\n `The value for '${key}' property must be an array: ${typeof data[\n key\n ]}`,\n );\n }\n model[key] = localConfig.create(data[key], true);\n } else {\n model[key] =\n (lastModel && lastModel[key]) ||\n (!localConfig.enumerable &&\n localConfig.create(defaultValue)) ||\n [];\n }\n };\n }\n\n const nestedConfig = bootstrap(defaultValue, true);\n if (nestedConfig.enumerable || nestedConfig.external) {\n if (\n config.storage.offline &&\n nestedConfig.storage.offline &&\n nestedConfig.storage.offline.threshold <\n config.storage.offline.threshold\n ) {\n throw Error(\n `External nested model for '${key}' property has lower offline threshold (${nestedConfig.storage.offline.threshold} ms) than the parent definition (${config.storage.offline.threshold} ms)`,\n );\n }\n return (model, data, lastModel) => {\n let resultModel;\n\n if (hasOwnProperty.call(data, key)) {\n const nestedData = data[key];\n\n if (typeof nestedData !== \"object\" || nestedData === null) {\n if (nestedData !== undefined && nestedData !== null) {\n resultModel = { id: nestedData };\n }\n } else {\n const dataConfig = definitions.get(nestedData);\n if (dataConfig) {\n if (dataConfig.model !== defaultValue) {\n throw TypeError(\n \"Model instance must match the definition\",\n );\n }\n resultModel = nestedData;\n } else {\n const lastNestedModel = cache.getEntry(\n nestedConfig,\n data[key].id,\n ).value;\n resultModel = nestedConfig.create(\n nestedData,\n lastNestedModel &&\n nestedConfig.isInstance(lastNestedModel)\n ? lastNestedModel\n : undefined,\n );\n syncCache(nestedConfig, resultModel.id, resultModel);\n }\n }\n } else {\n resultModel = lastModel && lastModel[key];\n }\n\n if (resultModel) {\n const id = resultModel.id;\n Object.defineProperty(model, key, {\n get() {\n return cache.get(this, key, () => get(defaultValue, id));\n },\n enumerable: true,\n });\n } else {\n model[key] = undefined;\n }\n };\n }\n\n return (model, data, lastModel) => {\n if (hasOwnProperty.call(data, key)) {\n model[key] =\n data[key] === null\n ? nestedConfig.create({})\n : nestedConfig.create(data[key], lastModel && lastModel[key]);\n } else {\n model[key] = lastModel ? lastModel[key] : nestedConfig.create({});\n }\n };\n }\n // eslint-disable-next-line no-fallthrough\n default: {\n const Constructor = getTypeConstructor(type, key);\n return (model, data, lastModel) => {\n if (hasOwnProperty.call(data, key)) {\n model[key] = Constructor(data[key]);\n } else if (lastModel && hasOwnProperty.call(lastModel, key)) {\n model[key] = lastModel[key];\n } else {\n model[key] = defaultValue;\n }\n };\n }\n }\n });\n\n config.create = function create(data, lastModel) {\n if (data === null) return null;\n\n if (typeof data !== \"object\") {\n throw TypeError(`Model values must be an object instance: ${data}`);\n }\n\n const model = transform.reduce((acc, fn) => {\n fn(acc, data, lastModel);\n return acc;\n }, Object.create(proto));\n\n definitions.set(model, config);\n storePointer.set(model, store);\n\n return Object.freeze(model);\n };\n\n Object.freeze(placeholder);\n Object.freeze(config);\n }\n\n return config;\n}\n\nconst listPlaceholderPrototype = Object.getOwnPropertyNames(\n Array.prototype,\n).reduce((acc, key) => {\n if (key === \"length\" || key === \"constructor\") return acc;\n\n Object.defineProperty(acc, key, {\n get() {\n throw Error(\n `Model list instance in ${\n getModelState(this).state\n } state - use store.pending(), store.error(), or store.ready() guards`,\n );\n },\n });\n return acc;\n}, []);\n\nexport const lists = new WeakMap();\nfunction setupListModel(Model, nested) {\n let config = lists.get(Model);\n\n if (config && !config.enumerable) {\n if (!nested && config.nested) {\n throw TypeError(\n stringifyModel(\n Model,\n \"Nested model definition cannot be used outside of the parent definition\",\n ),\n );\n }\n }\n\n if (!config) {\n const modelConfig = setupModel(Model);\n\n const contexts = new Set();\n if (modelConfig.storage.loose) contexts.add(modelConfig);\n\n if (!nested) {\n if (!modelConfig.enumerable) {\n throw TypeError(\n stringifyModel(\n Model,\n \"Provided model definition does not support listing (it must be enumerable - set `id` property to `true`)\",\n ),\n );\n }\n if (!modelConfig.storage.list) {\n throw TypeError(\n stringifyModel(\n Model,\n \"Provided model definition storage does not support `list` action\",\n ),\n );\n }\n }\n\n nested = !modelConfig.enumerable && !modelConfig.external && nested;\n\n config = {\n list: true,\n nested,\n model: Model,\n contexts,\n enumerable: modelConfig.enumerable,\n external: modelConfig.external,\n placeholder: () => {\n const model = Object.create(listPlaceholderPrototype);\n definitions.set(model, config);\n\n return Object.freeze(model);\n },\n isInstance: (model) =>\n Object.getPrototypeOf(model) !== listPlaceholderPrototype,\n create(items, invalidate = false) {\n if (items === null) return null;\n\n const result = items.reduce((acc, data) => {\n let id = data;\n if (typeof data === \"object\" && data !== null) {\n id = data.id;\n const dataConfig = definitions.get(data);\n let model = data;\n if (dataConfig) {\n if (dataConfig.model !== Model) {\n throw TypeError(\"Model instance must match the definition\");\n }\n } else {\n const lastModel =\n modelConfig.enumerable &&\n cache.getEntry(modelConfig, data.id).value;\n model = modelConfig.create(\n data,\n lastModel && modelConfig.isInstance(lastModel)\n ? lastModel\n : undefined,\n );\n if (modelConfig.enumerable) {\n id = model.id;\n syncCache(modelConfig, id, model, invalidate);\n }\n }\n if (!modelConfig.enumerable) {\n acc.push(model);\n }\n } else if (!modelConfig.enumerable) {\n throw TypeError(`Model instance must be an object: ${typeof data}`);\n }\n if (modelConfig.enumerable) {\n const key = acc.length;\n Object.defineProperty(acc, key, {\n get() {\n return cache.get(this, key, () => get(Model, id));\n },\n enumerable: true,\n });\n }\n return acc;\n }, []);\n\n Object.defineProperty(result, \"id\", { value: items.id });\n\n definitions.set(result, config);\n storePointer.set(result, store);\n\n return Object.freeze(result);\n },\n };\n\n config.storage = Object.freeze({\n ...setupStorage(config, {\n cache: modelConfig.storage.cache,\n get: !nested && ((id) => modelConfig.storage.list(id)),\n }),\n offline: modelConfig.storage.offline && {\n threshold: modelConfig.storage.offline.threshold,\n get: (id) => {\n const result = modelConfig.storage.offline.get(\n hashCode(String(stringifyId(id))),\n );\n return result\n ? result.map((item) => modelConfig.storage.offline.get(item))\n : null;\n },\n set: (id, values) => {\n modelConfig.storage.offline.set(\n hashCode(String(stringifyId(id))),\n values.map((item) => {\n modelConfig.storage.offline.set(item.id, item);\n return item.id;\n }),\n );\n },\n },\n });\n\n lists.set(Model, Object.freeze(config));\n }\n\n return config;\n}\n\nfunction resolveTimestamp(h, v) {\n return v || getCurrentTimestamp();\n}\n\nfunction stringifyId(id) {\n switch (typeof id) {\n case \"object\":\n return JSON.stringify(\n Object.keys(id)\n .sort()\n .reduce((acc, key) => {\n if (typeof id[key] === \"object\" && id[key] !== null) {\n throw TypeError(\n `You must use primitive value for '${key}' key: ${typeof id[\n key\n ]}`,\n );\n }\n acc[key] = id[key];\n return acc;\n }, {}),\n );\n case \"undefined\":\n return undefined;\n default:\n return String(id);\n }\n}\n\nconst notFoundErrors = new WeakSet();\nfunction notFoundError(Model, stringId) {\n const err = Error(\n stringifyModel(\n Model,\n `Model instance ${\n stringId !== undefined ? `with '${stringId}' id ` : \"\"\n }does not exist`,\n ),\n );\n\n notFoundErrors.add(err);\n return err;\n}\n\nfunction mapError(model, err, suppressLog) {\n if (suppressLog !== false && !notFoundErrors.has(err)) {\n // eslint-disable-next-line no-console\n console.error(err);\n }\n\n return setModelState(model, \"error\", err);\n}\n\nfunction get(Model, id) {\n const config = bootstrap(Model);\n let stringId;\n\n if (config.enumerable) {\n stringId = stringifyId(id);\n\n if (!stringId && !config.list && !draftMap.get(config)) {\n throw TypeError(\n stringifyModel(\n Model,\n `Provided model definition requires non-empty id: \"${stringId}\"`,\n ),\n );\n }\n } else if (id !== undefined) {\n throw TypeError(\n stringifyModel(Model, \"Provided model definition does not support id\"),\n );\n }\n\n const offline = config.storage.offline;\n const validate = config.storage.validate;\n const entry = cache.getEntry(config, stringId);\n\n if (entry.value && !validate(entry.value)) {\n entry.resolved = false;\n entry.depState = 0;\n }\n\n return cache.get(config, stringId, (h, cachedModel) => {\n if (cachedModel && pending(cachedModel)) return cachedModel;\n\n let validContexts = true;\n if (config.contexts) {\n config.contexts.forEach((context) => {\n if (\n cache.get(context, context, resolveTimestamp) ===\n getCurrentTimestamp()\n ) {\n validContexts = false;\n }\n });\n }\n\n if (validContexts && cachedModel && validate(cachedModel)) {\n return cachedModel;\n }\n\n const fallback = () =>\n cachedModel ||\n (offline && config.create(offline.get(stringId))) ||\n config.placeholder(stringId);\n\n try {\n let result = config.storage.get(id);\n\n if (typeof result !== \"object\" || result === null) {\n if (offline) offline.set(stringId, null);\n throw notFoundError(Model, stringId);\n }\n\n if (result instanceof Promise) {\n result = result\n .then((data) => {\n if (typeof data !== \"object\" || data === null) {\n if (offline) offline.set(stringId, null);\n throw notFoundError(Model, stringId);\n }\n\n if (data.id !== stringId) data.id = stringId;\n const model = config.create(data);\n\n if (offline) offline.set(stringId, model);\n\n return syncCache(config, stringId, setTimestamp(model));\n })\n .catch((e) => syncCache(config, stringId, mapError(fallback(), e)));\n\n return setModelState(fallback(), \"pending\", result);\n }\n\n if (result.id !== stringId) result.id = stringId;\n const model = config.create(result);\n\n if (offline) {\n Promise.resolve().then(() => {\n offline.set(stringId, model);\n });\n }\n\n return resolve(config, setTimestamp(model), cachedModel);\n } catch (e) {\n return setTimestamp(mapError(fallback(), e));\n }\n });\n}\n\nconst draftMap = new WeakMap();\n\nfunction getValidationError(errors) {\n const keys = Object.keys(errors);\n const e = Error(\n `Model validation failed (${keys.join(\n \", \",\n )}) - read the details from 'errors' property`,\n );\n\n e.errors = errors;\n\n return e;\n}\n\nfunction set(model, values = {}) {\n let config = definitions.get(model);\n\n if (config === null) {\n model = stales.get(model);\n config = definitions.get(model);\n }\n\n if (config === null) {\n throw Error(\n \"Provided model instance has expired. Haven't you used stale value?\",\n );\n }\n\n let isInstance = !!config;\n if (!config) config = bootstrap(model);\n\n if (config.nested) {\n throw stringifyModel(\n config.model,\n TypeError(\n \"Setting provided nested model instance is not supported, use the root model instance\",\n ),\n );\n }\n\n if (config.list) {\n throw TypeError(\"Listing model definition does not support 'set' method\");\n }\n\n if (!config.storage.set) {\n throw stringifyModel(\n config.model,\n TypeError(\n \"Provided model definition storage does not support 'set' method\",\n ),\n );\n }\n\n if (!isInstance && !config.enumerable) {\n isInstance = true;\n model = get(model);\n }\n\n if (isInstance) {\n const promise = pending(model);\n if (promise) {\n return promise.then((m) => set(m, values));\n }\n }\n\n const isDraft = draftMap.get(config);\n let id;\n\n try {\n if (\n config.enumerable &&\n !isInstance &&\n (!values || typeof values !== \"object\")\n ) {\n throw TypeError(`Values must be an object instance: ${values}`);\n }\n\n if (!isDraft && values && hasOwnProperty.call(values, \"id\")) {\n throw TypeError(`Values must not contain 'id' property: ${values.id}`);\n }\n\n const localModel = config.create(values, isInstance ? model : undefined);\n const keys = values ? Object.keys(values) : [];\n\n const errors = {};\n const lastError = isInstance && isDraft && error(model);\n\n let hasErrors = false;\n\n if (localModel) {\n config.checks.forEach((fn, key) => {\n if (keys.indexOf(key) === -1) {\n if (lastError && lastError.errors && lastError.errors[key]) {\n hasErrors = true;\n errors[key] = lastError.errors[key];\n }\n\n // eslint-disable-next-line eqeqeq\n if (isDraft && localModel[key] == config.model[key]) {\n return;\n }\n }\n\n let checkResult;\n try {\n checkResult = fn(localModel[key], key, localModel);\n } catch (e) {\n checkResult = e;\n }\n\n if (checkResult !== true && checkResult !== undefined) {\n hasErrors = true;\n errors[key] = checkResult || true;\n }\n });\n\n if (hasErrors && !isDraft) {\n throw getValidationError(errors);\n }\n }\n\n id = localModel ? localModel.id : model.id;\n\n const result = Promise.resolve(\n config.storage.set(isInstance ? id : undefined, localModel, keys),\n )\n .then((data) => {\n const resultModel =\n data === localModel ? localModel : config.create(data);\n\n if (isInstance && resultModel && id !== resultModel.id) {\n throw TypeError(\n `Local and storage data must have the same id: '${id}', '${resultModel.id}'`,\n );\n }\n\n let resultId = resultModel ? resultModel.id : id;\n\n if (hasErrors && isDraft) {\n setModelState(resultModel, \"error\", getValidationError(errors));\n }\n\n if (\n isDraft &&\n isInstance &&\n hasOwnProperty.call(data, \"id\") &&\n (!localModel || localModel.id !== model.id)\n ) {\n resultId = model.id;\n } else if (config.storage.offline) {\n config.storage.offline.set(resultId, resultModel);\n }\n\n return syncCache(\n config,\n resultId,\n resultModel ||\n mapError(\n config.placeholder(resultId),\n notFoundError(config.model, id),\n false,\n ),\n true,\n );\n })\n .catch((err) => {\n err = err !== undefined ? err : Error(\"Undefined error\");\n if (isInstance) setModelState(model, \"error\", err);\n throw err;\n });\n\n if (isInstance) setModelState(model, \"pending\", result);\n\n return result;\n } catch (e) {\n if (isInstance) setModelState(model, \"error\", e);\n return Promise.reject(e);\n }\n}\n\nfunction sync(model, values) {\n if (typeof values !== \"object\") {\n throw TypeError(`Values must be an object instance: ${values}`);\n }\n\n let config = definitions.get(model);\n\n if (config === null) {\n model = stales.get(model);\n config = definitions.get(model);\n }\n\n if (config === null) {\n throw Error(\n \"Provided model instance has expired. Haven't you used stale value?\",\n );\n }\n\n if (config === undefined) {\n if (!values) {\n throw TypeError(\"Values must be defined for usage with model definition\");\n }\n config = bootstrap(model);\n model = undefined;\n } else if (values && hasOwnProperty.call(values, \"id\")) {\n throw TypeError(`Values must not contain 'id' property: ${values.id}`);\n }\n\n if (config.list) {\n throw TypeError(\"Listing model definition is not supported in sync method\");\n }\n\n const resultModel = config.create(values, model);\n const id = values ? resultModel.id : model.id;\n\n return syncCache(\n config,\n id,\n resultModel ||\n mapError(config.placeholder(id), notFoundError(config.model, id), false),\n );\n}\n\nfunction clear(model, clearValue = true) {\n if (typeof model !== \"object\" || model === null) {\n throw TypeError(\n `The first argument must be a model instance or a model definition: ${model}`,\n );\n }\n\n let config = definitions.get(model);\n\n if (config === null) {\n throw Error(\n \"Provided model instance has expired. Haven't you used stale value from the outer scope?\",\n );\n }\n\n if (config) {\n const offline = clearValue && config.storage.offline;\n if (offline) offline.set(model.id, null);\n\n invalidateTimestamp(model);\n cache.invalidate(config, model.id, { clearValue, deleteEntry: true });\n } else {\n if (!configs.get(model) && !lists.get(model[0])) {\n throw Error(\n \"Model definition must be used before - passed argument is probably not a model definition\",\n );\n }\n config = bootstrap(model);\n const offline = clearValue && config.storage.offline;\n\n cache.getEntries(config).forEach((entry) => {\n if (offline) offline.set(entry.key, null);\n if (entry.value) invalidateTimestamp(entry.value);\n });\n cache.invalidateAll(config, { clearValue, deleteEntry: true });\n }\n}\n\nfunction pending(...models) {\n let isPending = false;\n const result = models.map((model) => {\n try {\n const { state, value } = getModelState(model);\n if (state === \"pending\") {\n isPending = true;\n return value;\n }\n } catch (e) {} // eslint-disable-line no-empty\n\n return Promise.resolve(model);\n });\n\n return isPending && (models.length > 1 ? Promise.all(result) : result[0]);\n}\n\nfunction resolveToLatest(model, id) {\n model = stales.get(model) || model;\n if (!definitions.get(model)) model = get(model, id);\n\n const promise = pending(model);\n\n if (!promise) {\n const e = error(model);\n return e ? Promise.reject(e) : Promise.resolve(model);\n }\n\n return promise.then((m) => resolveToLatest(m));\n}\n\nfunction error(model, property) {\n if (model === null || typeof model !== \"object\") return false;\n const state = getModelState(model);\n\n if (property !== undefined) {\n const errors =\n typeof state.error === \"object\" && state.error && state.error.errors;\n\n return property === null ? !errors && state.error : errors[property];\n }\n\n return state.error;\n}\n\nfunction ready(...models) {\n return (\n models.length > 0 &&\n models.every((model) => {\n const config = definitions.get(model);\n return !!(config && config.isInstance(model));\n })\n );\n}\n\nfunction getValuesFromModel(model, values) {\n model = { ...model, ...values };\n delete model.id;\n return model;\n}\n\nfunction submit(draft, values = {}) {\n const config = definitions.get(draft);\n if (!config || !draftMap.has(config)) {\n throw TypeError(`Provided model instance is not a draft: ${draft}`);\n }\n\n if (pending(draft)) {\n throw Error(\"Model draft in pending state\");\n }\n\n const modelConfig = draftMap.get(config);\n let result;\n\n if (cache.getEntry(modelConfig, draft.id).value) {\n const model = get(modelConfig.model, draft.id);\n result = Promise.resolve(pending(model) || model).then((resolvedModel) =>\n set(resolvedModel, getValuesFromModel(draft, values)),\n );\n } else {\n result = set(modelConfig.model, getValuesFromModel(draft, values));\n }\n\n result = result\n .then((resultModel) => {\n setModelState(draft, \"ready\");\n return set(draft, resultModel).then(() => resultModel);\n })\n .catch((e) => {\n setModelState(draft, \"error\", e);\n return Promise.reject(e);\n });\n\n setModelState(draft, \"pending\", result);\n\n return result;\n}\n\nfunction required(value, key) {\n return !!value || `${key} is required`;\n}\n\nfunction valueWithValidation(\n defaultValue,\n validate = required,\n errorMessage = \"\",\n) {\n switch (typeof defaultValue) {\n case \"string\":\n // eslint-disable-next-line no-new-wrappers\n defaultValue = new String(defaultValue);\n break;\n case \"number\":\n // eslint-disable-next-line no-new-wrappers\n defaultValue = new Number(defaultValue);\n break;\n case \"boolean\":\n // eslint-disable-next-line no-new-wrappers\n defaultValue = new Boolean(defaultValue);\n break;\n default:\n throw TypeError(\n `Default value must be a string, number or boolean: ${typeof defaultValue}`,\n );\n }\n\n let fn;\n if (validate instanceof RegExp) {\n fn = (value) => validate.test(value) || errorMessage;\n } else if (typeof validate === \"function\") {\n fn = (...args) => {\n const result = validate(...args);\n return result !== true && result !== undefined\n ? errorMessage || result\n : result;\n };\n } else {\n throw TypeError(\n `The second argument must be a RegExp instance or a function: ${typeof validate}`,\n );\n }\n\n validationMap.set(defaultValue, fn);\n return defaultValue;\n}\n\nfunction cloneModel(model) {\n const config = definitions.get(model);\n const clone = Object.freeze(Object.create(model));\n\n definitions.set(clone, config);\n\n return clone;\n}\n\nfunction store(Model, options = {}) {\n const config = bootstrap(Model);\n\n if (options.id !== undefined && typeof options.id !== \"function\") {\n const id = options.id;\n options.id = (host) => host[id];\n }\n\n if (options.id && !config.enumerable) {\n throw TypeError(\n \"Store factory for singleton model definition does not support 'id' option\",\n );\n }\n\n let draft;\n if (options.draft) {\n if (config.list) {\n throw TypeError(\n \"Draft mode is not supported for listing model definition\",\n );\n }\n\n draft = bootstrap({\n ...Model,\n [connect]: {\n get(id) {\n const model = get(config.model, id);\n return pending(model) || model;\n },\n set(id, values) {\n return values === null ? { id } : values;\n },\n },\n });\n\n draftMap.set(draft, config);\n Model = draft.model;\n }\n\n if (!options.id && config.enumerable && !config.list) {\n return {\n get(host, value) {\n const valueConfig = definitions.get(value);\n const id = valueConfig !== undefined ? value.id : value;\n\n if (draft && (value === undefined || value === null)) {\n const draftModel = draft.create({}, { id: undefined });\n syncCache(draft, undefined, draftModel, false);\n return get(Model, undefined);\n }\n\n return value ? get(Model, id) : undefined;\n },\n set: (_, v) => v,\n connect: draft\n ? (host, key) => () => {\n const model = host[key];\n if (model && model.id) clear(model, true);\n }\n : undefined,\n };\n }\n\n return {\n get: (host, value) => {\n const valueConfig = definitions.get(value);\n const id =\n (options.id && options.id(host)) ||\n (valueConfig !== undefined ? value.id : value);\n\n if (draft && !id && (value === undefined || value === null)) {\n const draftModel = draft.create({});\n syncCache(draft, undefined, draftModel, false);\n return get(Model, undefined);\n }\n\n if (!config.list && config.enumerable && id === undefined)\n return undefined;\n\n const nextValue = get(Model, id);\n\n if (nextValue !== value && ready(value) && !ready(nextValue)) {\n const tempValue = cloneModel(value);\n cache.set(tempValue, \"state\", () => getModelState(nextValue));\n return tempValue;\n }\n\n return nextValue;\n },\n set:\n (!options.id && config.list) || (draft && !config.enumerable)\n ? (_, v) => v\n : undefined,\n connect:\n draft && config.enumerable\n ? (host, key) => () => {\n const model = host[key];\n if (model && model.id) clear(model, true);\n }\n : undefined,\n };\n}\n\nexport default Object.freeze(\n Object.assign(store, {\n // storage\n connect,\n\n // actions\n get,\n set,\n sync,\n clear,\n\n // guards\n pending,\n error,\n ready,\n\n // helpers\n submit,\n value: valueWithValidation,\n resolve: resolveToLatest,\n ref,\n }),\n);\n","import global from \"../global.js\";\n\nconst metaMap = new WeakMap();\nexport function getMeta(key) {\n let value = metaMap.get(key);\n if (value) return value;\n\n metaMap.set(key, (value = {}));\n return value;\n}\n\nexport function getTemplateEnd(node) {\n let meta;\n\n while (node && (meta = getMeta(node)) && meta.endNode) {\n node = meta.endNode;\n }\n\n return node;\n}\n\nexport function removeTemplate(target) {\n const data = getMeta(target);\n\n if (data.styles) data.styles();\n\n if (target.nodeType === global.Node.TEXT_NODE) {\n if (data.startNode) {\n const endNode = getTemplateEnd(data.endNode);\n\n let node = data.startNode;\n const lastNextSibling = endNode.nextSibling;\n\n while (node) {\n const nextSibling = node.nextSibling;\n node.parentNode.removeChild(node);\n node = nextSibling !== lastNextSibling && nextSibling;\n }\n }\n } else {\n let child = target.childNodes[0];\n while (child) {\n target.removeChild(child);\n child = target.childNodes[0];\n }\n }\n\n metaMap.delete(target);\n}\n\nconst TIMESTAMP = Date.now();\nexport const getPlaceholder = (id = 0) => `H-${TIMESTAMP}-${id}`;\n","import global from \"../global.js\";\n\nconst hasAdoptedStylesheets = !!global.document.adoptedStyleSheets;\nconst NUMBER_REGEXP = /^\\d+$/;\nconst rules = {\n // base\n block: (props, align) => ({ display: \"block\", \"text-align\": align }),\n inline: ({ display }) => ({\n display: `inline${display ? `-${display}` : \"\"}`,\n }),\n hidden: { display: \"none\" },\n\n // flexbox\n ...[\"row\", \"row-reverse\", \"column\", \"column-reverse\"].reduce((acc, type) => {\n acc[type] = (props, wrap = \"nowrap\") => ({\n display: \"flex\",\n \"flex-flow\": `${type} ${wrap}`,\n });\n return acc;\n }, {}),\n grow: (props, value = 1) => ({ \"flex-grow\": value }),\n shrink: (props, value = 1) => ({ \"flex-shrink\": value }),\n basis: (props, value) => ({ \"flex-basis\": dimension(value) }),\n order: (props, value = 0) => ({ order: value }),\n\n // grid\n grid: (props, columns = \"1\", rows = \"\", autoFlow = \"\", dense = \"\") => ({\n display: \"grid\",\n ...[\"columns\", \"rows\"].reduce((acc, type) => {\n const value = type === \"columns\" ? columns : rows;\n acc[`grid-template-${type}`] =\n value &&\n value\n .split(\"|\")\n .map((v) =>\n v.match(NUMBER_REGEXP)\n ? `repeat(${v}, minmax(0, 1fr))`\n : dimension(v),\n )\n .join(\" \");\n return acc;\n }, {}),\n \"grid-auto-flow\": `${autoFlow} ${dense && \"dense\"}`,\n }),\n area: (props, column = \"\", row = \"\") => ({\n \"grid-column\": column.match(NUMBER_REGEXP) ? `span ${column}` : column,\n \"grid-row\": row.match(NUMBER_REGEXP) ? `span ${row}` : row,\n }),\n gap: (props, column = 1, row = \"\") => ({\n \"column-gap\": dimension(column),\n \"row-gap\": dimension(row || column),\n }),\n\n // alignment\n items: (props, v1 = \"start\", v2 = \"\") => ({\n \"place-items\": `${v1} ${v2}`,\n }),\n content: (props, v1 = \"start\", v2 = \"\") => ({\n \"place-content\": `${v1} ${v2}`,\n }),\n self: (props, v1 = \"start\", v2 = \"\") => ({\n \"place-self\": `${v1} ${v2}`,\n }),\n center: { \"place-items\": \"center\", \"place-content\": \"center\" },\n\n // size\n size: (props, width, height = width) => ({\n width: dimension(width),\n height: dimension(height),\n }),\n width: (props, base, min, max) => ({\n width: dimension(base),\n \"min-width\": dimension(min),\n \"max-width\": dimension(max),\n }),\n height: (props, base, min, max) => ({\n height: dimension(base),\n \"min-height\": dimension(min),\n \"max-height\": dimension(max),\n }),\n ratio: (props, v1) => ({ \"aspect-ratio\": v1 }),\n overflow: (props, v1 = \"hidden\", v2 = \"\") => {\n const type = v2 ? `-${v1}` : \"\";\n const value = v2 ? v2 : v1;\n\n return {\n [`overflow${type}`]: value,\n ...(value === \"scroll\"\n ? {\n \"flex-basis\": 0,\n \"overscroll-behavior\": \"contain\",\n \"--webkit-overflow-scrolling\": \"touch\",\n }\n : {}),\n };\n },\n margin: (props, v1 = \"1\", v2, v3, v4) => {\n if (v1.match(/top|bottom|left|right/)) {\n return {\n [`margin-${v1}`]: dimension(v2 || \"1\"),\n };\n }\n\n return {\n margin: `${dimension(v1)} ${dimension(v2)} ${dimension(v3)} ${dimension(\n v4,\n )}`,\n };\n },\n\n // position types\n absolute: { position: \"absolute\" },\n relative: { position: \"relative\" },\n fixed: { position: \"fixed\" },\n sticky: { position: \"sticky\" },\n static: { position: \"static\" },\n\n // position values\n inset: { top: 0, right: 0, bottom: 0, left: 0 },\n top: (props, value = 0) => ({ top: dimension(value) }),\n bottom: (props, value = 0) => ({ bottom: dimension(value) }),\n left: (props, value = 0) => ({ left: dimension(value) }),\n right: (props, value = 0) => ({ right: dimension(value) }),\n\n layer: (props, value = 1) => ({ \"z-index\": value }),\n};\n\nconst dimensions = {\n min: \"min-content\",\n max: \"max-content\",\n fit: \"fit-content\",\n full: \"100%\",\n};\n\nconst queries = {\n portrait: \"orientation: portrait\",\n landscape: \"orientation: landscape\",\n};\n\nfunction dimension(value) {\n value = dimensions[value] || value;\n\n if (/^\\d+(\\.\\d+)*$/.test(String(value))) {\n return `${value * 8}px`;\n }\n\n return value || \"\";\n}\n\nlet globalSheet;\nfunction getCSSStyleSheet() {\n if (globalSheet) return globalSheet;\n\n /* istanbul ignore else */\n if (hasAdoptedStylesheets) {\n globalSheet = new global.CSSStyleSheet();\n } else {\n const el = global.document.createElement(\"style\");\n el.appendChild(global.document.createTextNode(\"\"));\n global.document.head.appendChild(el);\n\n globalSheet = el.sheet;\n }\n\n globalSheet.insertRule(\":host([hidden]) { display: none; }\");\n\n return globalSheet;\n}\n\nconst styleElements = new WeakMap();\nlet injectedTargets = new WeakSet();\n\nexport function inject(target) {\n const root = target.getRootNode();\n if (injectedTargets.has(root)) return;\n\n const sheet = getCSSStyleSheet();\n\n /* istanbul ignore else */\n if (hasAdoptedStylesheets) {\n root.adoptedStyleSheets = [...root.adoptedStyleSheets, sheet];\n } else {\n if (root === global.document) return;\n\n let el = styleElements.get(root);\n if (!el) {\n el = global.document.createElement(\"style\");\n el.appendChild(global.document.createTextNode(\"\"));\n root.appendChild(el);\n\n styleElements.set(root, el);\n }\n\n const elSheet = el.sheet;\n const cssRules = sheet.cssRules;\n\n for (var i = 0; i < cssRules.length; i++) {\n if (elSheet.cssRules[i]) {\n if (elSheet.cssRules[i].cssText === cssRules[i].cssText) {\n continue;\n }\n elSheet.removeRule(i);\n }\n\n elSheet.insertRule(cssRules[i].cssText, i);\n }\n\n for (; i < elSheet.cssRules.length; i++) {\n elSheet.removeRule(i);\n }\n }\n\n injectedTargets.add(root);\n}\n\nconst classNames = new Map();\nexport function insertRule(node, query, tokens, hostMode) {\n let className = classNames.get(node);\n if (!className) {\n className = `l-${Math.random().toString(36).substr(2, 5)}`;\n classNames.set(node, className);\n }\n\n /* istanbul ignore next */\n if (!hasAdoptedStylesheets) injectedTargets = new WeakSet();\n\n const sheet = getCSSStyleSheet();\n const [selectors, mediaQueries = \"\"] = query.split(\"@\");\n\n const cssRules = Object.entries(\n tokens.split(\" \").reduce((acc, token) => {\n const [id, ...args] = token.split(\":\");\n const rule = rules[id];\n\n if (!rule) {\n throw TypeError(`Unsupported layout rule: '${id}'`);\n }\n\n return Object.assign(\n acc,\n typeof rule === \"function\"\n ? rule(acc, ...args.map((v) => (v.match(/--.*/) ? `var(${v})` : v)))\n : rule,\n );\n }, {}),\n ).reduce(\n (acc, [key, value]) =>\n value !== undefined && value !== \"\" ? acc + `${key}: ${value};` : acc,\n \"\",\n );\n\n const mediaSelector = mediaQueries.split(\":\").reduce((acc, query) => {\n if (query === \"\") return acc;\n return acc + ` and (${queries[query] || `min-width: ${query}`})`;\n }, \"@media screen\");\n\n if (hostMode) {\n const shadowSelector = `.${className}-s${selectors}`;\n const contentSelector = `.${className}-c${selectors}`;\n\n sheet.insertRule(\n mediaQueries\n ? `${mediaSelector} { :host(${shadowSelector}) { ${cssRules} } }`\n : `:host(${shadowSelector}) { ${cssRules} }`,\n sheet.cssRules.length,\n );\n\n sheet.insertRule(\n mediaQueries\n ? `${mediaSelector} { ${contentSelector} { ${cssRules} } }`\n : `${contentSelector} { ${cssRules} }`,\n sheet.cssRules.length,\n );\n } else {\n const selector = `.${className}${selectors}`;\n\n sheet.insertRule(\n mediaQueries\n ? `${mediaSelector} { ${selector} { ${cssRules} } }`\n : `${selector} { ${cssRules} }`,\n sheet.cssRules.length,\n );\n }\n\n return className;\n}\n","import global from \"../../global.js\";\nimport { getMeta, removeTemplate, getTemplateEnd } from \"../utils.js\";\n\nexport const arrayMap = new WeakMap();\n\nfunction movePlaceholder(target, previousSibling) {\n const meta = getMeta(target);\n const startNode = meta.startNode;\n const endNode = getTemplateEnd(meta.endNode);\n\n previousSibling.parentNode.insertBefore(target, previousSibling.nextSibling);\n\n let prevNode = target;\n let node = startNode;\n while (node) {\n const nextNode = node.nextSibling;\n prevNode.parentNode.insertBefore(node, prevNode.nextSibling);\n prevNode = node;\n node = nextNode !== endNode.nextSibling && nextNode;\n }\n}\n\nexport default function resolveArray(\n host,\n target,\n value,\n resolveValue,\n isLayout,\n) {\n let lastEntries = arrayMap.get(target);\n const entries = value.map((item, index) => ({\n id: hasOwnProperty.call(item, \"id\") ? item.id : index,\n value: item,\n placeholder: null,\n available: true,\n }));\n\n arrayMap.set(target, entries);\n\n if (lastEntries) {\n const ids = new Set();\n entries.forEach((entry) => ids.add(entry.id));\n\n lastEntries = lastEntries.filter((entry) => {\n if (!ids.has(entry.id)) {\n removeTemplate(entry.placeholder);\n entry.placeholder.parentNode.removeChild(entry.placeholder);\n return false;\n }\n\n return true;\n });\n }\n\n let previousSibling = target;\n const lastIndex = value.length - 1;\n const meta = getMeta(target);\n\n for (let index = 0; index < entries.length; index += 1) {\n const entry = entries[index];\n let matchedEntry;\n if (lastEntries) {\n for (let i = 0; i < lastEntries.length; i += 1) {\n if (lastEntries[i].available && lastEntries[i].id === entry.id) {\n matchedEntry = lastEntries[i];\n break;\n }\n }\n }\n\n if (matchedEntry) {\n matchedEntry.available = false;\n entry.placeholder = matchedEntry.placeholder;\n\n if (entry.placeholder.previousSibling !== previousSibling) {\n movePlaceholder(entry.placeholder, previousSibling);\n }\n if (matchedEntry.value !== entry.value) {\n resolveValue(\n host,\n entry.placeholder,\n entry.value,\n matchedEntry.value,\n isLayout,\n );\n }\n } else {\n entry.placeholder = global.document.createTextNode(\"\");\n previousSibling.parentNode.insertBefore(\n entry.placeholder,\n previousSibling.nextSibling,\n );\n resolveValue(host, entry.placeholder, entry.value, undefined, isLayout);\n }\n\n previousSibling = getTemplateEnd(\n getMeta(entry.placeholder, {}).endNode || entry.placeholder,\n );\n\n if (index === 0) meta.startNode = entry.placeholder;\n if (index === lastIndex) meta.endNode = previousSibling;\n }\n\n if (lastEntries) {\n lastEntries.forEach((entry) => {\n if (entry.available) {\n removeTemplate(entry.placeholder);\n entry.placeholder.parentNode.removeChild(entry.placeholder);\n }\n });\n }\n}\n","import global from \"../../global.js\";\nimport { removeTemplate } from \"../utils.js\";\nimport resolveArray, { arrayMap } from \"./array.js\";\nimport resolveNode from \"./node.js\";\n\nfunction typeOf(value) {\n const type = typeof value;\n\n if (type === \"object\") {\n if (Array.isArray(value)) return \"array\";\n if (value instanceof global.Node) return \"node\";\n }\n\n return type;\n}\n\nexport default function resolveValue(\n host,\n target,\n value,\n lastValue,\n useLayout,\n) {\n const type = typeOf(value);\n const lastType = typeOf(lastValue);\n\n if (lastType !== \"undefined\" && type !== lastType) {\n if (type !== \"function\") removeTemplate(target);\n\n if (lastType === \"array\") {\n arrayMap.delete(target);\n } else if (lastType !== \"node\" && lastType !== \"function\") {\n target.textContent = \"\";\n }\n }\n\n switch (type) {\n case \"array\":\n resolveArray(host, target, value, resolveValue);\n break;\n case \"node\":\n resolveNode(host, target, value);\n break;\n case \"function\":\n if (useLayout) value.useLayout = true;\n value(host, target);\n break;\n default:\n target.textContent = type === \"number\" || value ? value : \"\";\n }\n}\n","import { removeTemplate, getMeta } from \"../utils.js\";\n\nexport default function resolveNode(host, target, value) {\n removeTemplate(target);\n\n const meta = getMeta(target);\n meta.startNode = meta.endNode = value;\n\n target.parentNode.insertBefore(value, target.nextSibling);\n}\n","const targets = new WeakMap();\n\nexport default function resolveEventListener(eventType) {\n return (host, target, value, lastValue) => {\n if (lastValue) {\n const eventMap = targets.get(target);\n if (eventMap) {\n target.removeEventListener(\n eventType,\n eventMap.get(lastValue),\n lastValue.options !== undefined ? lastValue.options : false,\n );\n }\n }\n\n if (value) {\n if (typeof value !== \"function\") {\n throw Error(`Event listener must be a function: ${typeof value}`);\n }\n\n let eventMap = targets.get(target);\n if (!eventMap) {\n eventMap = new WeakMap();\n targets.set(target, eventMap);\n }\n\n const callback = value.bind(null, host);\n eventMap.set(value, callback);\n\n target.addEventListener(\n eventType,\n callback,\n value.options !== undefined ? value.options : false,\n );\n }\n };\n}\n","function normalizeValue(value, set = new Set()) {\n if (Array.isArray(value)) {\n value.forEach((className) => set.add(className));\n } else if (value !== null && typeof value === \"object\") {\n Object.keys(value).forEach((key) => value[key] && set.add(key));\n } else {\n set.add(value);\n }\n\n return set;\n}\n\nconst classMap = new WeakMap();\n\nexport default function resolveClassList(host, target, value) {\n const previousList = classMap.get(target) || new Set();\n const list = normalizeValue(value);\n\n classMap.set(target, list);\n\n list.forEach((className) => {\n target.classList.add(className);\n previousList.delete(className);\n });\n\n previousList.forEach((className) => {\n target.classList.remove(className);\n });\n}\n","import { camelToDash, stringifyElement } from \"../../utils.js\";\n\nconst styleMap = new WeakMap();\n\nexport default function resolveStyle(host, target, value) {\n if (value === null || typeof value !== \"object\") {\n throw TypeError(\n `Style value must be an object in ${stringifyElement(target)}:`,\n value,\n );\n }\n\n const previousMap = styleMap.get(target) || new Map();\n\n const nextMap = Object.keys(value).reduce((map, key) => {\n const dashKey = camelToDash(key);\n const styleValue = value[key];\n\n if (!styleValue && styleValue !== 0) {\n target.style.removeProperty(dashKey);\n } else {\n target.style.setProperty(dashKey, styleValue);\n }\n\n map.set(dashKey, styleValue);\n previousMap.delete(dashKey);\n\n return map;\n }, new Map());\n\n previousMap.forEach((styleValue, key) => {\n target.style[key] = \"\";\n });\n\n styleMap.set(target, nextMap);\n}\n","import global from \"../../global.js\";\nimport resolveEventListener from \"./event.js\";\nimport resolveClassList from \"./class.js\";\nimport resolveStyleList from \"./style.js\";\n\nexport default function resolveProperty(attrName, propertyName, isSVG) {\n if (propertyName.substr(0, 2) === \"on\") {\n const eventType = propertyName.substr(2);\n return resolveEventListener(eventType);\n }\n\n switch (attrName) {\n case \"class\":\n return resolveClassList;\n case \"style\":\n return resolveStyleList;\n default: {\n let isProp = false;\n return (host, target, value) => {\n isProp =\n isProp ||\n (!isSVG &&\n !(target instanceof global.SVGElement) &&\n propertyName in target);\n if (isProp) {\n target[propertyName] = value;\n } else if (value === false || value === undefined || value === null) {\n target.removeAttribute(attrName);\n } else {\n const attrValue = value === true ? \"\" : String(value);\n target.setAttribute(attrName, attrValue);\n }\n };\n }\n }\n}\n","import global from \"../global.js\";\nimport { stringifyElement, probablyDevMode } from \"../utils.js\";\nimport { get as getMessage, isLocalizeEnabled } from \"../localize.js\";\n\nimport * as layout from \"./layout.js\";\nimport {\n getMeta,\n getPlaceholder,\n getTemplateEnd,\n removeTemplate,\n} from \"./utils.js\";\n\nimport resolveValue from \"./resolvers/value.js\";\nimport resolveProperty from \"./resolvers/property.js\";\n\nconst PLACEHOLDER_REGEXP_TEXT = getPlaceholder(\"(\\\\d+)\");\nconst PLACEHOLDER_REGEXP_EQUAL = new RegExp(`^${PLACEHOLDER_REGEXP_TEXT}$`);\nconst PLACEHOLDER_REGEXP_ALL = new RegExp(PLACEHOLDER_REGEXP_TEXT, \"g\");\nconst PLACEHOLDER_REGEXP_ONLY = /^[^A-Za-z]+$/;\n\nfunction createSignature(parts) {\n let signature = parts.reduce((acc, part, index) => {\n if (index === 0) {\n return part;\n }\n\n if (\n parts\n .slice(index)\n .join(\"\")\n .match(/^\\s*<\\/\\s*(table|tr|thead|tbody|tfoot|colgroup)>/)\n ) {\n return `${acc}${part}`;\n }\n\n return acc + getPlaceholder(index - 1) + part;\n }, \"\");\n\n return signature;\n}\n\nfunction getPropertyName(string) {\n return string\n .replace(/\\s*=\\s*['\"]*$/g, \"\")\n .split(/\\s+/)\n .pop();\n}\n\nfunction createWalker(context) {\n return global.document.createTreeWalker(\n context,\n // eslint-disable-next-line no-bitwise\n global.NodeFilter.SHOW_ELEMENT |\n global.NodeFilter.SHOW_TEXT |\n global.NodeFilter.SHOW_COMMENT,\n null,\n false,\n );\n}\n\nfunction normalizeWhitespace(input, startIndent = 0) {\n input = input.replace(/(^[\\n\\s\\t ]+)|([\\n\\s\\t ]+$)+/g, \"\");\n\n let i = input.indexOf(\"\\n\");\n if (i > -1) {\n let indent = 0 - startIndent - 2;\n for (i += 1; input[i] === \" \" && i < input.length; i += 1) {\n indent += 1;\n }\n return input.replace(/\\n +/g, (t) =>\n t.substr(0, Math.max(t.length - indent, 1)),\n );\n }\n\n return input;\n}\n\nfunction beautifyTemplateLog(input, index) {\n const placeholder = getPlaceholder(index);\n\n const output = normalizeWhitespace(input)\n .split(\"\\n\")\n .filter((i) => i)\n .map((line) => {\n const startIndex = line.indexOf(placeholder);\n\n if (startIndex > -1) {\n return `| ${line}\\n--${\"-\".repeat(startIndex)}${\"^\".repeat(6)}`;\n }\n\n return `| ${line}`;\n })\n .join(\"\\n\")\n // eslint-disable-next-line no-template-curly-in-string\n .replace(PLACEHOLDER_REGEXP_ALL, \"${...}\");\n\n return `${output}`;\n}\n\nconst styleSheetsMap = new Map();\nfunction setupStyleUpdater(target) {\n if (target.adoptedStyleSheets) {\n let prevStyleSheets;\n return (styleSheets) => {\n const adoptedStyleSheets = target.adoptedStyleSheets;\n\n if (styleSheets) {\n styleSheets = styleSheets.map((style) => {\n let styleSheet = style;\n if (!(styleSheet instanceof global.CSSStyleSheet)) {\n styleSheet = styleSheetsMap.get(style);\n if (!styleSheet) {\n styleSheet = new global.CSSStyleSheet();\n styleSheet.replaceSync(style);\n styleSheetsMap.set(style, styleSheet);\n }\n }\n\n return styleSheet;\n });\n\n if (\n !prevStyleSheets ||\n prevStyleSheets.some((styleSheet, i) => styleSheet !== styleSheets[i])\n ) {\n // TODO: this might change order of already applied styles\n target.adoptedStyleSheets = (\n prevStyleSheets\n ? adoptedStyleSheets.filter(\n (styleSheet) => !prevStyleSheets.includes(styleSheet),\n )\n : adoptedStyleSheets\n ).concat(styleSheets);\n }\n } else if (prevStyleSheets) {\n target.adoptedStyleSheets = adoptedStyleSheets.filter(\n (styleSheet) => !prevStyleSheets.includes(styleSheet),\n );\n }\n\n prevStyleSheets = styleSheets;\n };\n }\n\n let styleEl;\n return (styleSheets) => {\n if (styleSheets) {\n if (!styleEl) {\n styleEl = global.document.createElement(\"style\");\n target = getTemplateEnd(target);\n if (target.nodeType === global.Node.TEXT_NODE) {\n target.parentNode.insertBefore(styleEl, target.nextSibling);\n } else {\n target.appendChild(styleEl);\n }\n }\n const result = [...styleSheets].join(\"\\n/*------*/\\n\");\n\n if (styleEl.textContent !== result) {\n styleEl.textContent = result;\n }\n } else if (styleEl) {\n styleEl.parentNode.removeChild(styleEl);\n styleEl = null;\n }\n };\n}\n\nexport function compileTemplate(rawParts, isSVG, isMsg, useLayout) {\n let template = global.document.createElement(\"template\");\n const parts = {};\n\n const signature = isMsg ? rawParts : createSignature(rawParts);\n\n template.innerHTML = isSVG ? `` : signature;\n\n if (isSVG) {\n const svgRoot = template.content.firstChild;\n template.content.removeChild(svgRoot);\n Array.from(svgRoot.childNodes).forEach((node) =>\n template.content.appendChild(node),\n );\n }\n\n let hostLayout;\n const layoutTemplate = template.content.children[0];\n if (layoutTemplate instanceof global.HTMLTemplateElement) {\n Array.from(layoutTemplate.attributes).forEach((attr) => {\n const value = attr.value.trim();\n if (attr.name.startsWith(\"layout\") && value) {\n if (value.match(PLACEHOLDER_REGEXP_ALL)) {\n throw Error(\"Layout attribute cannot contain expressions\");\n }\n\n hostLayout = layout.insertRule(\n layoutTemplate,\n attr.name.substr(6),\n value,\n true,\n );\n }\n });\n\n if (hostLayout !== undefined && template.content.children.length > 1) {\n throw Error(\n \"Template, which uses layout system must have only the '' root element\",\n );\n }\n\n useLayout = true;\n template = layoutTemplate;\n }\n\n const compileWalker = createWalker(template.content);\n const notDefinedElements = [];\n let compileIndex = 0;\n let noTranslate = null;\n\n while (compileWalker.nextNode()) {\n let node = compileWalker.currentNode;\n\n if (noTranslate && !noTranslate.contains(node)) {\n noTranslate = null;\n }\n\n if (node.nodeType === global.Node.COMMENT_NODE) {\n if (PLACEHOLDER_REGEXP_EQUAL.test(node.textContent)) {\n node.parentNode.insertBefore(\n global.document.createTextNode(node.textContent),\n node.nextSibling,\n );\n\n compileWalker.nextNode();\n node.parentNode.removeChild(node);\n node = compileWalker.currentNode;\n }\n }\n\n if (node.nodeType === global.Node.TEXT_NODE) {\n let text = node.textContent;\n const equal = text.match(PLACEHOLDER_REGEXP_EQUAL);\n\n if (equal) {\n node.textContent = \"\";\n parts[equal[1]] = [compileIndex, resolveValue];\n } else {\n if (\n isLocalizeEnabled() &&\n !isMsg &&\n !noTranslate &&\n !text.match(/^\\s*$/)\n ) {\n let offset;\n const key = text.trim();\n const localizedKey = key\n .replace(/\\s+/g, \" \")\n .replace(PLACEHOLDER_REGEXP_ALL, (_, index) => {\n index = Number(index);\n if (offset === undefined) offset = index;\n return `\\${${index - offset}}`;\n });\n\n if (!localizedKey.match(PLACEHOLDER_REGEXP_ONLY)) {\n let context =\n node.previousSibling &&\n node.previousSibling.nodeType === global.Node.COMMENT_NODE\n ? node.previousSibling\n : \"\";\n if (context) {\n context.parentNode.removeChild(context);\n compileIndex -= 1;\n context = (context.textContent.split(\"|\")[1] || \"\")\n .trim()\n .replace(/\\s+/g, \" \");\n }\n\n const resultKey = getMessage(localizedKey, context).replace(\n /\\${(\\d+)}/g,\n (_, index) => getPlaceholder(Number(index) + offset),\n );\n\n text = text.replace(key, resultKey);\n node.textContent = text;\n }\n }\n\n const results = text.match(PLACEHOLDER_REGEXP_ALL);\n if (results) {\n let currentNode = node;\n results\n .reduce(\n (acc, placeholder) => {\n const [before, next] = acc.pop().split(placeholder);\n if (before) acc.push(before);\n acc.push(placeholder);\n if (next) acc.push(next);\n return acc;\n },\n [text],\n )\n .forEach((part, index) => {\n if (index === 0) {\n currentNode.textContent = part;\n } else {\n currentNode = currentNode.parentNode.insertBefore(\n global.document.createTextNode(part),\n currentNode.nextSibling,\n );\n\n compileWalker.currentNode = currentNode;\n compileIndex += 1;\n }\n\n const equal = currentNode.textContent.match(\n PLACEHOLDER_REGEXP_EQUAL,\n );\n if (equal) {\n currentNode.textContent = \"\";\n parts[equal[1]] = [compileIndex, resolveValue];\n }\n });\n }\n }\n } else {\n /* istanbul ignore else */ // eslint-disable-next-line no-lonely-if\n if (node.nodeType === global.Node.ELEMENT_NODE) {\n if (\n !noTranslate &&\n (node.getAttribute(\"translate\") === \"no\" ||\n node.tagName.toLowerCase() === \"script\" ||\n node.tagName.toLowerCase() === \"style\")\n ) {\n noTranslate = node;\n }\n\n /* istanbul ignore else */ // eslint-disable-next-line no-lonely-if\n if (probablyDevMode) {\n const tagName = node.tagName.toLowerCase();\n if (\n tagName.match(/.+-.+/) &&\n !global.customElements.get(tagName) &&\n !notDefinedElements.includes(tagName)\n ) {\n notDefinedElements.push(tagName);\n }\n }\n\n Array.from(node.attributes).forEach((attr) => {\n const value = attr.value.trim();\n /* istanbul ignore next */\n const name = attr.name;\n\n if (useLayout && name.startsWith(\"layout\") && value) {\n if (value.match(PLACEHOLDER_REGEXP_ALL)) {\n throw Error(\"Layout attribute cannot contain expressions\");\n }\n\n const className = layout.insertRule(node, name.substr(6), value);\n node.removeAttribute(name);\n node.classList.add(className);\n\n return;\n }\n\n const equal = value.match(PLACEHOLDER_REGEXP_EQUAL);\n if (equal) {\n const propertyName = getPropertyName(rawParts[equal[1]]);\n parts[equal[1]] = [\n compileIndex,\n resolveProperty(name, propertyName, isSVG),\n ];\n node.removeAttribute(attr.name);\n } else {\n const results = value.match(PLACEHOLDER_REGEXP_ALL);\n if (results) {\n const partialName = `attr__${name}`;\n\n results.forEach((placeholder, index) => {\n const [, id] = placeholder.match(PLACEHOLDER_REGEXP_EQUAL);\n let isProp = false;\n parts[id] = [\n compileIndex,\n (host, target, attrValue) => {\n const meta = getMeta(target);\n meta[partialName] = (meta[partialName] || value).replace(\n placeholder,\n attrValue == null ? \"\" : attrValue,\n );\n\n if (results.length === 1 || index + 1 === results.length) {\n isProp =\n isProp ||\n (!isSVG &&\n !(target instanceof global.SVGElement) &&\n name in target);\n if (isProp) {\n target[name] = meta[partialName];\n } else {\n target.setAttribute(name, meta[partialName]);\n }\n meta[partialName] = undefined;\n }\n },\n ];\n });\n\n attr.value = \"\";\n }\n }\n });\n }\n }\n\n compileIndex += 1;\n }\n\n if (probablyDevMode && notDefinedElements.length) {\n console.warn(\n `Not defined ${notDefinedElements\n .map((e) => `<${e}>`)\n .join(\", \")} element${\n notDefinedElements.length > 1 ? \"s\" : \"\"\n } found in the template:\\n${beautifyTemplateLog(signature, -1)}`,\n );\n }\n\n const partsKeys = Object.keys(parts);\n return function updateTemplateInstance(host, target, args, styles) {\n let meta = getMeta(target);\n\n if (template !== meta.template) {\n const fragment = global.document.importNode(template.content, true);\n const renderWalker = createWalker(fragment);\n const markers = [];\n\n let renderIndex = 0;\n let keyIndex = 0;\n let currentPart = parts[partsKeys[keyIndex]];\n\n while (renderWalker.nextNode()) {\n const node = renderWalker.currentNode;\n\n while (currentPart && currentPart[0] === renderIndex) {\n markers.push({\n index: partsKeys[keyIndex],\n node,\n fn: currentPart[1],\n });\n keyIndex += 1;\n currentPart = parts[partsKeys[keyIndex]];\n }\n\n renderIndex += 1;\n }\n\n if (meta.hostLayout) {\n host.classList.remove(meta.hostLayout);\n }\n\n removeTemplate(target);\n\n meta = getMeta(target);\n\n meta.template = template;\n meta.markers = markers;\n meta.styles = setupStyleUpdater(target);\n\n if (target.nodeType === global.Node.TEXT_NODE) {\n meta.startNode = fragment.childNodes[0];\n meta.endNode = fragment.childNodes[fragment.childNodes.length - 1];\n\n let previousChild = target;\n\n let child = fragment.childNodes[0];\n while (child) {\n target.parentNode.insertBefore(child, previousChild.nextSibling);\n previousChild = child;\n child = fragment.childNodes[0];\n }\n } else {\n if (useLayout) {\n const className = `${hostLayout}-${host === target ? \"c\" : \"s\"}`;\n host.classList.add(className);\n meta.hostLayout = className;\n }\n\n target.appendChild(fragment);\n }\n\n if (useLayout) layout.inject(target);\n }\n\n meta.styles(styles);\n\n meta.markers.forEach((marker) => {\n const value = args[marker.index];\n const prevValue = meta.prevArgs && meta.prevArgs[marker.index];\n\n // eslint-disable-next-line no-continue\n if (meta.prevArgs && value === prevValue) return;\n\n try {\n marker.fn(host, marker.node, value, prevValue, useLayout);\n } catch (error) {\n // eslint-disable-next-line no-console\n console.error(\n `Following error was thrown when updating a template expression in ${stringifyElement(\n host,\n )}\\n${beautifyTemplateLog(signature, marker.index)}`,\n );\n\n throw error;\n }\n });\n\n meta.prevArgs = args;\n };\n}\n","import { getPlaceholder } from \"./template/utils.js\";\n\nimport global from \"./global.js\";\nimport { probablyDevMode } from \"./utils.js\";\nimport { compile } from \"./template/index.js\";\n\nconst dictionary = new Map();\nconst cache = new Map();\nlet translate = null;\n\nconst languages = (() => {\n let list;\n\n // istanbul ignore next\n try {\n list = global.navigator.languages || [global.navigator.language];\n } catch (e) {\n list = [];\n }\n\n return list.reduce((set, code) => {\n const codeWithoutRegion = code.split(\"-\")[0];\n set.add(code);\n if (code !== codeWithoutRegion) set.add(codeWithoutRegion);\n return set;\n }, new Set());\n})();\n\nexport function isLocalizeEnabled() {\n return translate !== null || dictionary.size;\n}\n\nexport function clear() {\n languages.delete(\"default\");\n dictionary.clear();\n cache.clear();\n\n translate = null;\n}\n\nconst pluralRules = new Map();\nexport function get(key, context, args = []) {\n key = key.trim();\n context = context.trim();\n\n const cacheKey = `${key} | ${context}`;\n let msg = cache.get(cacheKey);\n\n if (!msg) {\n if (dictionary.size) {\n for (const lang of languages) {\n const msgs = dictionary.get(lang);\n if (msgs) {\n msg = msgs[cacheKey] || msgs[key];\n\n if (msg) {\n msg = msg.message;\n\n if (typeof msg === \"object\") {\n let rules = pluralRules.get(lang);\n if (!rules) {\n rules = new Intl.PluralRules(lang);\n pluralRules.set(lang, rules);\n }\n\n const pluralForms = msg;\n msg = (number) =>\n (number === 0 && pluralForms.zero) ||\n pluralForms[rules.select(number)] ||\n pluralForms.other ||\n \"\";\n }\n break;\n }\n }\n }\n }\n\n if (!msg) {\n if (translate) {\n msg = translate(key, context);\n }\n if (!msg) {\n msg = key;\n if ((dictionary.size || translate) && probablyDevMode) {\n console.warn(\n `Missing translation: \"${key}\"${context ? ` [${context}]` : \"\"}`,\n );\n }\n }\n }\n\n cache.set(cacheKey, msg);\n }\n\n return typeof msg === \"function\" ? msg(args[0]) : msg;\n}\n\nfunction getKeyInChromeI18nFormat(key) {\n return key\n .replace(\"$\", \"@\")\n .replace(/[^a-zA-Z0-9_@]/g, \"_\")\n .toLowerCase();\n}\n\nexport function localize(lang, messages) {\n switch (typeof lang) {\n case \"function\": {\n const options = messages || {};\n\n if (options.format === \"chrome.i18n\") {\n const cachedKeys = new Map();\n translate = (key, context) => {\n key = context ? `${key} | ${context}` : key;\n\n let cachedKey = cachedKeys.get(key);\n if (!cachedKey) {\n cachedKey = getKeyInChromeI18nFormat(key);\n cachedKeys.set(key, cachedKey);\n }\n\n return lang(cachedKey, context);\n };\n } else {\n translate = lang;\n }\n\n break;\n }\n case \"string\": {\n if (!messages || typeof messages !== \"object\") {\n throw TypeError(\"Messages must be an object\");\n }\n\n if (lang === \"default\") {\n languages.add(\"default\");\n }\n\n const current = dictionary.get(lang) || {};\n dictionary.set(lang, { ...current, ...messages });\n break;\n }\n default:\n throw TypeError(\"The first argument must be a string or a function\");\n }\n}\n\nObject.defineProperty(localize, \"languages\", {\n get: () => Array.from(languages),\n});\n\nfunction getString(parts, args) {\n const string = parts.reduce(\n (acc, part, index) => `${acc}\\${${index - 1}}${part}`,\n );\n const [key, , context = \"\"] = string.split(\"|\");\n\n return get(key, context, args);\n}\n\nconst EXP_REGEX = /\\$\\{(\\d+)\\}/g;\n\nexport function msg(parts, ...args) {\n return getString(parts, args).replace(EXP_REGEX, (_, index) => args[index]);\n}\n\nmsg.html = function html(parts, ...args) {\n const input = getString(parts, args);\n\n return compile(\n input.replace(EXP_REGEX, (_, index) => getPlaceholder(index)),\n args,\n false,\n true,\n );\n};\n\nmsg.svg = function svg(parts, ...args) {\n const input = getString(parts, args);\n\n return compile(\n input.replace(EXP_REGEX, (_, index) => getPlaceholder(index)),\n args,\n true,\n true,\n );\n};\n","import global from \"../global.js\";\nimport { storePointer } from \"../utils.js\";\nimport resolveTemplateValue from \"./resolvers/value.js\";\n\nfunction resolveValue({ target, detail }, setter) {\n let value;\n\n switch (target.type) {\n case \"radio\":\n case \"checkbox\":\n value = target.checked && target.value;\n break;\n case \"file\":\n value = target.files;\n break;\n default:\n value =\n detail && hasOwnProperty.call(detail, \"value\")\n ? detail.value\n : target.value;\n }\n\n setter(value);\n}\n\nfunction getPartialObject(name, value) {\n return name\n .split(\".\")\n .reverse()\n .reduce((acc, key) => {\n if (!acc) return { [key]: value };\n return { [key]: acc };\n }, null);\n}\n\nconst stringCache = new Map();\nconst storeValues = new WeakMap();\n\nexport function set(property, valueOrPath) {\n if (!property) {\n throw Error(\n `The first argument must be a property name or an object instance: ${property}`,\n );\n }\n\n if (typeof property === \"object\") {\n if (valueOrPath === undefined) {\n throw Error(\n \"For model instance property the second argument must be defined\",\n );\n }\n\n const store = storePointer.get(property);\n\n if (!store) {\n throw Error(\"Provided object must be a model instance of the store\");\n }\n\n if (valueOrPath === null) {\n return () => {\n store.set(property, null);\n };\n }\n\n return (host, event) => {\n resolveValue(event, (value) => {\n const values = storeValues.get(property);\n\n if (!values) {\n global.requestAnimationFrame(() => {\n const result = storeValues.get(property);\n storeValues.delete(property);\n\n store\n .set(property, result)\n .catch(/* istanbul ignore next */ () => {});\n });\n }\n\n storeValues.set(property, {\n ...values,\n ...getPartialObject(valueOrPath, value),\n });\n });\n };\n }\n\n if (arguments.length === 2) {\n return (host) => {\n host[property] = valueOrPath;\n };\n }\n\n let fn = stringCache.get(property);\n\n if (!fn) {\n fn = (host, event) => {\n resolveValue(event, (value) => {\n host[property] = value;\n });\n };\n\n stringCache.set(property, fn);\n }\n\n return fn;\n}\n\nconst promiseMap = new WeakMap();\nexport function resolve(promise, placeholder, delay = 200) {\n return (host, target) => {\n let timeout;\n\n if (placeholder) {\n timeout = setTimeout(() => {\n timeout = undefined;\n\n global.requestAnimationFrame(() => {\n placeholder(host, target);\n });\n }, delay);\n }\n\n promiseMap.set(target, promise);\n\n promise.then((value) => {\n if (timeout) clearTimeout(timeout);\n\n if (promiseMap.get(target) === promise) {\n resolveTemplateValue(host, target, value);\n promiseMap.set(target, null);\n }\n });\n };\n}\n","import { compileTemplate } from \"./core.js\";\nimport { getPlaceholder } from \"./utils.js\";\nimport * as helpers from \"./helpers.js\";\n\nconst PLACEHOLDER = getPlaceholder();\nconst PLACEHOLDER_SVG = getPlaceholder(\"svg\");\nconst PLACEHOLDER_MSG = getPlaceholder(\"msg\");\nconst PLACEHOLDER_LAYOUT = getPlaceholder(\"layout\");\n\nconst methods = {\n key(id) {\n this.id = id;\n return this;\n },\n style(...styles) {\n this.styleSheets = this.styleSheets || [];\n this.styleSheets.push(...styles);\n\n return this;\n },\n css(parts, ...args) {\n this.styleSheets = this.styleSheets || [];\n\n this.styleSheets.push(\n parts.reduce(\n (acc, part, index) =>\n `${acc}${part}${args[index] !== undefined ? args[index] : \"\"}`,\n \"\",\n ),\n );\n\n return this;\n },\n};\n\nconst templates = new Map();\nexport function compile(parts, args, isSVG, isMsg) {\n function template(host, target = host) {\n let id = isMsg ? parts + PLACEHOLDER_MSG : parts.join(PLACEHOLDER);\n if (isSVG) id += PLACEHOLDER_SVG;\n const useLayout = template.useLayout;\n if (useLayout) id += PLACEHOLDER_LAYOUT;\n\n let render = templates.get(id);\n if (!render) {\n render = compileTemplate(parts, isSVG, isMsg, useLayout);\n templates.set(id, render);\n }\n\n render(host, target, args, template.styleSheets);\n }\n\n return Object.assign(template, methods);\n}\n\nexport function html(parts, ...args) {\n return compile(parts, args, false, false);\n}\n\nexport function svg(parts, ...args) {\n return compile(parts, args, true, false);\n}\n\nObject.freeze(Object.assign(html, helpers));\nObject.freeze(Object.assign(svg, helpers));\n"],"names":["global","window","globalThis","Object","create","defineProperty","value","callback","setTimeout","constructor","Error","importNode","callbacks","WeakMap","queue","Set","execute","forEach","target","get","delete","e","size","dispatch","has","requestAnimationFrame","add","entries","suspense","WeakSet","getEntry","key","targetMap","Map","set","entry","lastValue","contexts","deps","state","depState","resolved","getEntries","result","push","cleanContexts","contextEntry","assign","dispatchDeep","emitter.dispatch","context","getter","depEntry","lastContext","clear","nextValue","setter","newValue","gcList","invalidateEntry","options","clearValue","deleteEntry","force","invalidate","observe","fn","emitter.subscribe","cb","suspend","unsuspend","camelToDashMap","camelToDash","str","replace","toLowerCase","host","eventType","dispatchEvent","CustomEvent","bubbles","stringifyElement","String","tagName","walkInShadow","nodeType","Node","ELEMENT_NODE","shadowRoot","walker","document","createTreeWalker","NodeFilter","SHOW_ELEMENT","nextNode","el","currentNode","deferred","Promise","resolve","storePointer","probablyDevMode","name","propsMap","disconnects","callbacksMap","HybridsRootElement","HTMLElement","props","this","index","length","hasOwnProperty","call","cache.suspend","connectedCallback","cache.unsuspend","list","disconnectedCallback","render","useShadow","updateDOM","attachShadow","mode","delegatesFocus","flush","transforms","string","number","Number","boolean","Boolean","undefined","v","compile","hybrids","HybridsElement","prototype","keys","desc","type","attrName","getAttribute","transform","TypeError","defaultValue","setAttr","toString","removeAttribute","setAttribute","hasAttribute","connect","_","property","cache.get","cache.set","enumerable","configurable","unshift","cache.observe","cache.invalidate","updateQueue","define$1","freeze","tag","customElements","then","body","node","prevHybrids","update","define","Symbol","definitions","stales","refs","config","model","lastModel","storage","modelValue","isInstance","lastModelValue","resolveWithInvalidate","compare","resolve$1","error","every","syncCache","id","currentTimestamp","getCurrentTimestamp","Date","now","timestamps","getTimestamp","timestamp","setTimestamp","invalidateTimestamp","hashCode","btoa","Array","from","reduce","s","c","Math","imul","charCodeAt","offlineKeys","clearPromise","JSON_LIKE_REGEX","setupStorage","cache","loose","test","JSON","parse","console","validate","cachedModel","notFoundError","stringifyId","offline","isBool","threshold","offlineKey","stringify","previousKeys","localStorage","getItem","k","removeItem","setItem","setupOfflineKey","items","item","values","valueConfig","map","configs","bootstrap","Model","nested","isArray","lists","stringifyModel","modelConfig","setupModel","external","placeholder","listPlaceholderPrototype","getPrototypeOf","acc","data","dataConfig","cache.getEntry","store","setupListModel","getTypeConstructor","stateSetter","setModelState","stateGetter","getModelState","uuid","temp","random","validationMap","msg","resolvedPromise","invalidatePromise","checks","proto","cache.getEntries","memoryStorage","check","valueOf","resolveKey","nestedType","includes","Constructor","defaultArray","localConfig","nestedOptions","nestedConfig","resultModel","nestedData","lastNestedModel","getOwnPropertyNames","resolveTimestamp","h","sort","notFoundErrors","stringId","err","mapError","suppressLog","draftMap","pending","validContexts","fallback","catch","getValidationError","errors","join","promise","m","isDraft","localModel","lastError","hasErrors","indexOf","checkResult","resultId","reject","cache.invalidateAll","models","isPending","all","ready","getValuesFromModel","required","draft","draftModel","tempValue","clone","cloneModel","store$1","sync","submit","resolvedModel","errorMessage","RegExp","args","resolveToLatest","ref","metaMap","getMeta","getTemplateEnd","meta","endNode","removeTemplate","styles","TEXT_NODE","startNode","lastNextSibling","nextSibling","parentNode","removeChild","child","childNodes","TIMESTAMP","getPlaceholder","hasAdoptedStylesheets","adoptedStyleSheets","NUMBER_REGEXP","rules","block","align","display","inline","hidden","wrap","grow","shrink","basis","dimension","order","grid","columns","rows","autoFlow","dense","split","match","area","column","row","gap","v1","v2","content","self","center","width","height","base","min","max","ratio","overflow","margin","v3","v4","absolute","position","relative","fixed","sticky","static","inset","top","right","bottom","left","layer","dimensions","fit","full","queries","portrait","landscape","globalSheet","getCSSStyleSheet","CSSStyleSheet","createElement","appendChild","createTextNode","head","sheet","insertRule","styleElements","injectedTargets","classNames","query","tokens","hostMode","className","substr","selectors","mediaQueries","cssRules","token","rule","mediaSelector","shadowSelector","contentSelector","selector","arrayMap","movePlaceholder","previousSibling","insertBefore","prevNode","typeOf","resolveValue","useLayout","lastType","textContent","isLayout","lastEntries","available","ids","filter","lastIndex","matchedEntry","i","resolveArray","resolveNode","targets","classMap","resolveClassList","previousList","normalizeValue","classList","remove","styleMap","resolveStyle","previousMap","nextMap","dashKey","styleValue","style","setProperty","removeProperty","resolveProperty","propertyName","isSVG","eventMap","removeEventListener","bind","addEventListener","resolveEventListener","resolveStyleList","isProp","SVGElement","attrValue","PLACEHOLDER_REGEXP_TEXT","PLACEHOLDER_REGEXP_EQUAL","PLACEHOLDER_REGEXP_ALL","PLACEHOLDER_REGEXP_ONLY","createWalker","SHOW_TEXT","SHOW_COMMENT","beautifyTemplateLog","input","output","startIndent","indent","t","normalizeWhitespace","line","startIndex","repeat","styleSheetsMap","compileTemplate","rawParts","isMsg","template","parts","signature","part","slice","createSignature","innerHTML","svgRoot","firstChild","hostLayout","layoutTemplate","children","HTMLTemplateElement","attributes","attr","trim","startsWith","layout.insertRule","compileWalker","notDefinedElements","compileIndex","noTranslate","contains","COMMENT_NODE","text","equal","dictionary","offset","localizedKey","resultKey","getMessage","results","before","next","pop","partialName","warn","partsKeys","fragment","renderWalker","markers","renderIndex","keyIndex","currentPart","prevStyleSheets","styleSheets","styleSheet","replaceSync","some","concat","styleEl","setupStyleUpdater","previousChild","root","getRootNode","elSheet","cssText","removeRule","layout.inject","marker","prevValue","prevArgs","detail","checked","files","getPartialObject","reverse","stringCache","storeValues","promiseMap","valueOrPath","event","arguments","delay","timeout","clearTimeout","resolveValue$1","PLACEHOLDER","PLACEHOLDER_SVG","PLACEHOLDER_MSG","PLACEHOLDER_LAYOUT","methods","css","templates","html","helpers","languages","navigator","language","code","codeWithoutRegion","pluralRules","cacheKey","lang","msgs","message","Intl","PluralRules","pluralForms","zero","select","other"],"mappings":"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"}