glass-easel 0.3.0 → 0.3.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -1 +1 @@
1
- {"version":3,"file":"glass_easel.all.js","sources":["../src/backend/shared.ts","../src/global_options.ts","../src/func_arr.ts","../src/type_symbol.ts","../src/node.ts","../src/warning.ts","../src/backend/current_window_backend_context.ts","../src/backend/empty_backend.ts","../src/backend/empty_composed_backend.ts","../src/class_list.ts","../src/component_params.ts","../src/trait_behaviors.ts","../src/component_space.ts","../src/data_path.ts","../src/data_utils.ts","../src/mutation_observer.ts","../src/data_proxy.ts","../src/event.ts","../src/selector.ts","../src/element.ts","../src/relation.ts","../src/native_node.ts","../src/text_node.ts","../src/virtual_node.ts","../src/shadow_root.ts","../src/tmpl/range_list_diff.ts","../src/tmpl/proc_gen_wrapper.ts","../src/tmpl/proc_gen_wrapper_dom.ts","../src/tmpl/native_rendering.ts","../src/tmpl/index.ts","../src/component.ts","../src/behavior.ts","../src/element_iterator.ts","../src/index.ts","../src/render.ts"],"sourcesContent":["export const BM = {\n DYNAMIC: true,\n SHADOW: false,\n COMPOSED: false,\n DOMLIKE: false,\n};\nexport var BackendMode;\n(function (BackendMode) {\n BackendMode[BackendMode[\"Shadow\"] = 1] = \"Shadow\";\n BackendMode[BackendMode[\"Composed\"] = 2] = \"Composed\";\n BackendMode[BackendMode[\"Domlike\"] = 3] = \"Domlike\";\n})(BackendMode || (BackendMode = {}));\n//# sourceMappingURL=shared.js.map","export const ENV = {\n DEV: !(typeof process && process.env.NODE_ENV === 'production'),\n};\n/**\n * The deep copy strategy\n *\n * Higher level indicates more accuracy but probably less performance.\n */\nexport var DeepCopyKind;\n(function (DeepCopyKind) {\n /**\n * Avoid deep copy\n *\n * This avoids any copy, and recursive objects can be handled without any failing.\n * However, changing non-copied data will sometimes break the logic.\n */\n DeepCopyKind[\"None\"] = \"none\";\n /**\n * Do a simple deep copy\n *\n * This simply clones each enumerable fields in an object to a new object.\n * It causes stack overflow in recursive objects.\n * Everything in prototypes is ignored.\n */\n DeepCopyKind[\"Simple\"] = \"simple\";\n /**\n * Do a deep copy with recursion detection\n *\n * This clones each enumerable fields in an object to a new object.\n * It can handle recursive objects by recursive detection.\n * Everything in prototypes is ignored.\n */\n DeepCopyKind[\"SimpleWithRecursion\"] = \"simple-recursion\";\n})(DeepCopyKind || (DeepCopyKind = {}));\n/**\n * The default options\n */\nexport const globalOptions = {\n defaultComponentSpace: null,\n externalComponent: false,\n templateEngine: null,\n styleScope: null,\n extraStyleScope: null,\n hostNodeTagName: 'wx-x',\n multipleSlots: false,\n dynamicSlots: false,\n directSlots: false,\n reflectToAttributes: false,\n writeFieldsToNode: true,\n writeIdToDOM: false,\n useMethodCallerListeners: false,\n idPrefixGenerator: null,\n pureDataPattern: null,\n dataDeepCopy: DeepCopyKind.Simple,\n propertyPassingDeepCopy: DeepCopyKind.Simple,\n listenerChangeLifetimes: false,\n virtualHost: false,\n propertyEarlyInit: false,\n throwGlobalError: false,\n writeExtraInfoToAttr: false,\n backendContext: null,\n devtool: null,\n};\nexport const normalizeComponentOptions = (componentOptions, baseComponentOptions) => {\n const b = baseComponentOptions === undefined ? globalOptions : baseComponentOptions;\n if (componentOptions === undefined && b !== globalOptions) {\n return b;\n }\n const p = componentOptions !== null && componentOptions !== void 0 ? componentOptions : {};\n return {\n externalComponent: p.externalComponent !== undefined ? p.externalComponent : b.externalComponent,\n templateEngine: p.templateEngine !== undefined ? p.templateEngine : b.templateEngine,\n styleScope: p.styleScope !== undefined ? p.styleScope : b.styleScope,\n hostNodeTagName: p.hostNodeTagName !== undefined ? p.hostNodeTagName : b.hostNodeTagName,\n extraStyleScope: p.extraStyleScope !== undefined ? p.extraStyleScope : b.extraStyleScope,\n multipleSlots: p.multipleSlots !== undefined ? p.multipleSlots : b.multipleSlots,\n dynamicSlots: p.dynamicSlots !== undefined ? p.dynamicSlots : b.dynamicSlots,\n directSlots: p.directSlots !== undefined ? p.directSlots : b.directSlots,\n reflectToAttributes: p.reflectToAttributes !== undefined ? p.reflectToAttributes : b.reflectToAttributes,\n writeFieldsToNode: p.writeFieldsToNode !== undefined ? p.writeFieldsToNode : b.writeFieldsToNode,\n writeIdToDOM: p.writeIdToDOM !== undefined ? p.writeIdToDOM : b.writeIdToDOM,\n useMethodCallerListeners: p.useMethodCallerListeners !== undefined\n ? p.useMethodCallerListeners\n : b.useMethodCallerListeners,\n idPrefixGenerator: p.idPrefixGenerator !== undefined ? p.idPrefixGenerator : b.idPrefixGenerator,\n pureDataPattern: p.pureDataPattern !== undefined ? p.pureDataPattern : b.pureDataPattern,\n dataDeepCopy: p.dataDeepCopy !== undefined ? p.dataDeepCopy : b.dataDeepCopy,\n propertyPassingDeepCopy: p.propertyPassingDeepCopy !== undefined\n ? p.propertyPassingDeepCopy\n : b.propertyPassingDeepCopy,\n listenerChangeLifetimes: p.listenerChangeLifetimes !== undefined\n ? p.listenerChangeLifetimes\n : b.listenerChangeLifetimes,\n virtualHost: p.virtualHost !== undefined ? p.virtualHost : b.virtualHost,\n propertyEarlyInit: p.propertyEarlyInit !== undefined ? p.propertyEarlyInit : b.propertyEarlyInit,\n };\n};\n//# sourceMappingURL=global_options.js.map","import { performanceMeasureEnd, performanceMeasureStart } from './devtool';\nimport { ENV } from './global_options';\nexport class FuncArr {\n constructor(type) {\n this.empty = true;\n this._$arr = null;\n this._$type = type;\n }\n add(func) {\n if (!this._$arr)\n this._$arr = [func];\n else\n this._$arr = this._$arr.concat(func);\n this.empty = false;\n }\n remove(func) {\n let ret = null;\n if (this._$arr) {\n const newArr = [];\n const oldArr = this._$arr;\n for (let i = 0; i < oldArr.length; i += 1) {\n if (oldArr[i] === func) {\n newArr.push(...oldArr.slice(i + 1));\n ret = func;\n break;\n }\n newArr.push(oldArr[i]);\n }\n this._$arr = newArr;\n this.empty = this._$arr.length === 0;\n }\n return ret;\n }\n call(caller, args, relatedComponent) {\n const arr = this._$arr;\n let ret = true;\n if (arr) {\n for (let i = 0; i < arr.length; i += 1) {\n const r = safeCallback(this._$type, arr[i], caller, args, relatedComponent);\n if (r === false)\n ret = false;\n }\n }\n return ret;\n }\n}\nexport class FuncArrWithMeta {\n constructor(type) {\n this.empty = true;\n this._$arr = null;\n this._$type = type;\n }\n add(func, data) {\n const item = { f: func, data };\n if (!this._$arr)\n this._$arr = [item];\n else\n this._$arr = this._$arr.concat(item);\n this.empty = false;\n }\n remove(func) {\n let ret = null;\n if (this._$arr) {\n const newArr = [];\n const oldArr = this._$arr;\n for (let i = 0; i < oldArr.length; i += 1) {\n const v = oldArr[i];\n if (v.f === func) {\n newArr.push(...oldArr.slice(i + 1));\n ret = v.data;\n break;\n }\n newArr.push(v);\n }\n this._$arr = newArr;\n this.empty = this._$arr.length === 0;\n }\n return ret;\n }\n call(caller, args, retainFn, relatedComponent, handleReturn) {\n const arr = this._$arr;\n let ret = true;\n if (arr) {\n for (let i = 0; i < arr.length; i += 1) {\n const { f, data } = arr[i];\n if (!retainFn(data))\n continue;\n const rawReturn = safeCallback(this._$type, f, caller, args, relatedComponent);\n const r = handleReturn ? handleReturn(rawReturn) : rawReturn;\n if (r === false)\n ret = false;\n }\n }\n return ret;\n }\n}\nlet dispatchError = () => { };\nexport function _setErrorDispatcher(dispatcher) {\n dispatchError = dispatcher;\n}\nexport function safeCallback(type, method, caller, args, relatedComponent) {\n try {\n if (ENV.DEV)\n performanceMeasureStart(`${type}.${method.name || '(anonymous)'}`, relatedComponent, { args });\n // eslint-disable-next-line @typescript-eslint/no-unsafe-return\n return method.apply(caller, args);\n }\n catch (e) {\n dispatchError(e, `${type || 'Listener'} ${method.name || '(anonymous)'}`, relatedComponent);\n return undefined;\n }\n finally {\n if (ENV.DEV)\n performanceMeasureEnd();\n }\n}\n//# sourceMappingURL=func_arr.js.map","export const TEXT_NODE_SYMBOL = Symbol('TextNode');\nexport const ELEMENT_SYMBOL = Symbol('Element');\nexport const NATIVE_NODE_SYMBOL = Symbol('NativeNode');\nexport const VIRTUAL_NODE_SYMBOL = Symbol('VirtualNode');\nexport const SHADOW_ROOT_SYMBOL = Symbol('ShadowRootSymbol');\nexport const COMPONENT_SYMBOL = Symbol('Component');\nexport const isTextNode = (e) => !!e && e[TEXT_NODE_SYMBOL];\nexport const isElement = (e) => !!e && e[ELEMENT_SYMBOL];\nexport const isNativeNode = (e) => !!e && e[NATIVE_NODE_SYMBOL];\nexport const isVirtualNode = (e) => !!e && e[VIRTUAL_NODE_SYMBOL];\nexport const isShadowRoot = (e) => !!e && e[SHADOW_ROOT_SYMBOL];\nexport const isComponent = (e) => !!e && e[COMPONENT_SYMBOL];\n//# sourceMappingURL=type_symbol.js.map","import { isComponent, isElement, isNativeNode, isTextNode, isVirtualNode } from './type_symbol';\nconst dumpAttributesToString = (elem) => {\n let ret = '';\n if (isElement(elem)) {\n if (elem._$slotName !== null)\n ret += ` (slot) name=\"${elem._$slotName}\"`;\n if (elem.id)\n ret += ` id=\"${elem.id}\"`;\n if (elem.slot)\n ret += ` slot=\"${elem.slot}\"`;\n const nodeClass = elem.class;\n if (nodeClass)\n ret += ` class=\"${nodeClass}\"`;\n const style = elem.style;\n if (style)\n ret += ` style=\"${elem.style}\"`;\n }\n if (isVirtualNode(elem)) {\n // empty\n }\n else if (isComponent(elem)) {\n Object.keys(elem._$behavior._$propertyMap).forEach((propName) => {\n ret += ` ${propName}=\"${String(elem.data[propName])}\"`;\n });\n }\n else {\n elem.attributes.forEach((attr) => {\n ret += ` ${attr.name}=\"${String(attr.value)}\"`;\n });\n }\n return ret;\n};\nexport const dumpSingleElementToString = (elem) => {\n if (isElement(elem)) {\n let tagName;\n if (isVirtualNode(elem)) {\n tagName = `(virtual):${elem.is}`;\n }\n else if (isComponent(elem)) {\n tagName = `${elem.tagName}:${elem.is}`;\n }\n else if (isNativeNode(elem)) {\n tagName = elem.is;\n }\n else {\n tagName = '(unknown)';\n }\n return `<${tagName}${dumpAttributesToString(elem)}>`;\n }\n if (isTextNode(elem)) {\n return elem.textContent.trim();\n }\n if (elem === null) {\n return '<(null)>';\n }\n if (elem === undefined) {\n return '<(undefined)>';\n }\n return '<(unknown)>';\n};\nexport const dumpElementToString = (elem, composed, tabDepth = 0) => {\n let linePrefix = '';\n for (let i = tabDepth; i; i -= 1) {\n linePrefix += ' ';\n }\n let ret = linePrefix + dumpSingleElementToString(elem);\n let isExternal = false;\n if (isElement(elem)) {\n if (isComponent(elem)) {\n isExternal = elem._$external;\n }\n if (composed) {\n if (isExternal) {\n ret += `\\n${linePrefix} <(external)>`;\n elem.forEachComposedChild((node) => {\n ret += `\\n${dumpElementToString(node, composed, tabDepth + 2)}`;\n });\n }\n else {\n elem.forEachComposedChild((node) => {\n ret += `\\n${dumpElementToString(node, composed, tabDepth + 1)}`;\n });\n }\n }\n else {\n elem.childNodes.forEach((node) => {\n ret += `\\n${dumpElementToString(node, composed, tabDepth + 1)}`;\n });\n }\n }\n return ret;\n};\nexport const dumpElement = (elem, composed) => {\n // eslint-disable-next-line no-console\n console.log(dumpElementToString(elem, composed));\n};\n//# sourceMappingURL=node.js.map","import { FuncArr, _setErrorDispatcher } from './func_arr';\nimport { globalOptions } from './global_options';\nimport { dumpSingleElementToString } from './node';\nimport { isComponent } from './type_symbol';\nlet insideErrorHandler = false;\nconst errorFuncArr = new FuncArr('error');\nconst warningFuncArr = new FuncArr('warning');\n_setErrorDispatcher(dispatchError);\nexport function dispatchError(err, method, relatedComponent, element) {\n if (!insideErrorHandler) {\n insideErrorHandler = true;\n if (isComponent(relatedComponent)) {\n relatedComponent.triggerLifetime('error', [err]);\n }\n const shouldBreak = errorFuncArr.call(err, [err, method, relatedComponent, element]) === false;\n insideErrorHandler = false;\n if (shouldBreak)\n return;\n }\n if (globalOptions.throwGlobalError) {\n throw err;\n }\n else {\n // eslint-disable-next-line no-console\n console.error([\n err instanceof Error ? `${err.message}` : String(err),\n element ? `\\t@${dumpSingleElementToString(element)}` : undefined,\n relatedComponent\n ? `\\t${method || ''}@${typeof relatedComponent === 'string'\n ? `<${relatedComponent}>`\n : dumpSingleElementToString(relatedComponent || false)}`\n : undefined,\n ]\n .filter(Boolean)\n .join('\\n'));\n }\n}\nexport function triggerWarning(msg, relatedComponent, element) {\n if (warningFuncArr.call(null, [msg, relatedComponent || '', element])) {\n // eslint-disable-next-line no-console\n console.warn(msg);\n }\n}\nexport class ThirdError extends Error {\n constructor(message, additionalStack, relatedComponent, element) {\n super(message);\n this.additionalStack = additionalStack;\n this.relatedComponent = relatedComponent;\n this.element = element;\n dispatchError(this, additionalStack, relatedComponent, element);\n }\n}\nexport function addGlobalErrorListener(func) {\n errorFuncArr.add(func);\n}\nexport function removeGlobalErrorListener(func) {\n errorFuncArr.remove(func);\n}\nexport function addGlobalWarningListener(func) {\n warningFuncArr.add(func);\n}\nexport function removeGlobalWarningListener(func) {\n warningFuncArr.remove(func);\n}\nexport function safeCallback(type, method, caller, args, relatedComponent) {\n try {\n // eslint-disable-next-line @typescript-eslint/no-unsafe-return\n return method.apply(caller, args);\n }\n catch (e) {\n dispatchError(e, `${type || 'Listener'} ${method.name || '(anonymous)'}`, relatedComponent);\n return undefined;\n }\n}\n//# sourceMappingURL=warning.js.map","/* eslint-disable class-methods-use-this */\n/* global window, document */\nimport { safeCallback } from '../func_arr';\nimport { triggerWarning } from '../warning';\nconst DELEGATE_EVENTS = [\n 'touchstart',\n 'touchmove',\n 'touchend',\n 'touchcancel',\n 'mousedown',\n 'mousemove',\n 'mouseout',\n 'mouseover',\n 'mouseup',\n 'click',\n];\nexport class CurrentWindowBackendContext {\n constructor() {\n this.mode = 3 /* BackendMode.Domlike */;\n this.document = document;\n /* @internal */\n this._$styleSheets = [];\n /* @internal */\n this._$styleSheetRegistry = Object.create(null);\n /* @internal */\n this._$delegatedEventListeners = Object.create(null);\n /* @internal */\n this._$elementEventListeners = new WeakMap();\n /* @internal */\n this._$elementCaptureEventListeners = new WeakMap();\n /* @internal */\n this._$triggedEvents = new WeakSet();\n }\n destroy() {\n /* empty */\n }\n getWindowWidth() {\n return document.documentElement.clientWidth;\n }\n getWindowHeight() {\n return document.documentElement.clientHeight;\n }\n getDevicePixelRatio() {\n return window.devicePixelRatio;\n }\n getTheme() {\n return 'light';\n }\n registerStyleSheetContent(path, content) {\n this._$styleSheetRegistry[path] = String(content);\n }\n appendStyleSheetPath(path, styleScope) {\n const styleText = this._$styleSheetRegistry[path];\n if (styleText === undefined)\n throw new Error(`No style sheet registry \"${path}\"`);\n const s = document.createElement('style');\n s.type = 'text/css';\n s.innerHTML = styleText;\n if (styleScope !== undefined)\n s.setAttribute('wx-style-scope', String(styleScope));\n document.head.appendChild(s);\n const id = this._$styleSheets.length;\n this._$styleSheets.push(s);\n return id;\n }\n disableStyleSheet(index) {\n const ss = this._$styleSheets[index];\n if (ss)\n document.head.removeChild(ss);\n }\n render(cb) {\n window.requestAnimationFrame(() => {\n safeCallback('Render Callback', cb, this, [null]);\n });\n }\n getRootNode() {\n return document.body;\n }\n associateValue(element, value) {\n element.__wxElement = value;\n }\n onEvent(listener) {\n if (!this._$eventListener) {\n this._$initEvent();\n }\n this._$eventListener = listener;\n }\n /* @internal */\n _$getEventDetail(ev) {\n const detail = {};\n let e = ev;\n while (Object.getPrototypeOf(e) !== Event.prototype) {\n const keys = Object.keys(e);\n for (let i = 0; i < keys.length; i += 1) {\n const key = keys[i];\n if (typeof ev[key] === 'function')\n continue;\n detail[key] = ev[key];\n }\n e = Object.getPrototypeOf(e);\n }\n return detail;\n }\n /* @internal */\n _$trigger(ev, type, detail, bubbles, composed) {\n if (!this._$eventListener || !ev.target)\n return;\n let t = ev.target;\n while (t && !t.__wxElement)\n t = t.parentNode;\n if (!t)\n return;\n const bubbleStatus = this._$eventListener(t.__wxElement, type, detail, {\n originalEvent: ev,\n bubbles,\n composed,\n capturePhase: true,\n });\n if (bubbleStatus === 1 /* EventBubbleStatus.NoDefault */) {\n ev.preventDefault();\n }\n }\n /* @internal */\n _$initEvent() {\n const TAP_DIST = 10;\n const possibleTaps = Object.create(null);\n const SIMULATED_MOUSE_ID = -1;\n let disableMouseEvents = false;\n const handleTapStart = (_ev, t) => {\n possibleTaps[t.identifier] = {\n x: t.clientX,\n y: t.clientY,\n };\n };\n const handleTapMove = (ev, t) => {\n const id = t.identifier;\n if (possibleTaps[id]) {\n const u = possibleTaps[id];\n if (Math.abs(u.x - t.clientX) > TAP_DIST || Math.abs(u.y - t.clientY) > TAP_DIST) {\n delete possibleTaps[id];\n this._$trigger(ev, 'canceltap', u, true, true);\n }\n }\n };\n const handleTapEnd = (ev, t) => {\n const id = t.identifier;\n if (possibleTaps[id]) {\n const u = possibleTaps[id];\n delete possibleTaps[id];\n if (Math.abs(u.x - t.clientX) > TAP_DIST || Math.abs(u.y - t.clientY) > TAP_DIST) {\n this._$trigger(ev, 'canceltap', u, true, true);\n }\n else {\n this._$trigger(ev, 'tap', u, true, true);\n }\n }\n };\n const handleTapCancel = (ev, t) => {\n const id = t.identifier;\n if (possibleTaps[id]) {\n const u = possibleTaps[id];\n delete possibleTaps[id];\n this._$trigger(ev, 'canceltap', u, true, true);\n }\n };\n const handleTouchStart = (ev) => {\n disableMouseEvents = true;\n const changedTouches = ev.changedTouches;\n for (let i = 0; i < changedTouches.length; i += 1) {\n handleTapStart(ev, changedTouches[i]);\n }\n const target = ev.target;\n if (!target.__touchCount) {\n target.__touchCount = 0;\n target.addEventListener('touchend', handleTouchEnd);\n target.addEventListener('touchcancel', handleTouchCancel);\n }\n target.__touchCount += changedTouches.length;\n };\n const handleTouchMove = (ev) => {\n const changedTouches = ev.changedTouches;\n for (let i = 0; i < changedTouches.length; i += 1) {\n handleTapMove(ev, changedTouches[i]);\n }\n };\n const handleTouchEnd = (ev) => {\n const changedTouches = ev.changedTouches;\n for (let i = 0; i < changedTouches.length; i += 1) {\n handleTapEnd(ev, changedTouches[i]);\n }\n const target = ev.target;\n target.__touchCount -= changedTouches.length;\n if (target.__touchCount <= 0) {\n target.__touchCount = 0;\n target.removeEventListener('touchend', handleTouchEnd);\n target.removeEventListener('touchcancel', handleTouchCancel);\n }\n };\n const handleTouchCancel = (ev) => {\n const changedTouches = ev.changedTouches;\n for (let i = 0; i < changedTouches.length; i += 1) {\n handleTapCancel(ev, changedTouches[i]);\n }\n const target = ev.target;\n target.__touchCount -= changedTouches.length;\n if (target.__touchCount <= 0) {\n target.__touchCount = 0;\n target.removeEventListener('touchend', handleTouchEnd);\n target.removeEventListener('touchcancel', handleTouchCancel);\n }\n };\n const handleMouseDown = (ev) => {\n if (disableMouseEvents)\n return;\n handleTapStart(ev, {\n identifier: SIMULATED_MOUSE_ID,\n clientX: ev.clientX,\n clientY: ev.clientY,\n });\n };\n const handleMouseOver = (ev) => {\n if (disableMouseEvents)\n return;\n handleTapMove(ev, {\n identifier: SIMULATED_MOUSE_ID,\n clientX: ev.clientX,\n clientY: ev.clientY,\n });\n };\n const handleMouseUp = (ev) => {\n if (disableMouseEvents)\n return;\n handleTapEnd(ev, {\n identifier: SIMULATED_MOUSE_ID,\n clientX: ev.clientX,\n clientY: ev.clientY,\n });\n };\n document.body.addEventListener('touchstart', handleTouchStart, { capture: true });\n document.body.addEventListener('touchmove', handleTouchMove, { capture: true });\n document.body.addEventListener('mousedown', handleMouseDown, { capture: true });\n document.body.addEventListener('mousemove', handleMouseOver, { capture: true });\n document.body.addEventListener('mouseup', handleMouseUp, { capture: true });\n }\n setListenerStats(element, type, capture, mutLevel) {\n // for non-passive events,\n // the default-prevented status can also be found in `EventBubbleStatus` ,\n // so there is nothing to do with non-passive events.\n if (!element)\n return;\n const shouldDelegate = DELEGATE_EVENTS.includes(type);\n const defaultPrevented = mutLevel === 2 /* MutLevel.Final */;\n if (shouldDelegate) {\n if (this._$delegatedEventListeners[type])\n return;\n this._$delegatedEventListeners[type] = true;\n document.body.addEventListener(type, (ev) => {\n if (defaultPrevented)\n ev.preventDefault();\n this._$trigger(ev, type, this._$getEventDetail(ev), ev.bubbles, ev.composed);\n }, { capture: true });\n return;\n }\n const elementEventListeners = capture\n ? this._$elementCaptureEventListeners\n : this._$elementEventListeners;\n if (!elementEventListeners.has(element))\n elementEventListeners.set(element, Object.create(null));\n const listeners = elementEventListeners.get(element);\n if (listeners[type])\n return;\n listeners[type] = true;\n element.addEventListener(type, (ev) => {\n if (this._$triggedEvents.has(ev))\n return;\n this._$triggedEvents.add(ev);\n if (defaultPrevented)\n ev.preventDefault();\n this._$trigger(ev, type, this._$getEventDetail(ev), ev.bubbles, ev.composed);\n });\n }\n setModelBindingStat(element, attributeName, listener) {\n const updateEventListener = (evName, valueFn) => {\n if (!element._$wxArgs) {\n element._$wxArgs = {\n modelListeners: Object.create(null),\n };\n }\n if (element._$wxArgs.modelListeners[attributeName] === undefined) {\n if (!listener)\n return;\n element._$wxArgs.modelListeners[attributeName] = listener;\n element.addEventListener(evName, () => {\n var _a;\n const listener = (_a = element._$wxArgs) === null || _a === void 0 ? void 0 : _a.modelListeners[attributeName];\n listener === null || listener === void 0 ? void 0 : listener(valueFn());\n });\n }\n element._$wxArgs.modelListeners[attributeName] = listener;\n };\n const tagName = element.tagName;\n let valid = false;\n if (tagName === 'INPUT') {\n const elem = element;\n const type = elem.type;\n if (type === 'checkbox') {\n if (attributeName === 'checked') {\n valid = true;\n updateEventListener('change', () => elem.checked);\n }\n }\n else if (type === 'radio') {\n if (attributeName === 'checked') {\n valid = true;\n updateEventListener('change', () => elem.checked);\n }\n }\n else {\n if (attributeName === 'value') {\n valid = true;\n updateEventListener('input', () => elem.value);\n }\n }\n }\n else if (tagName === 'TEXTAREA') {\n const elem = element;\n if (attributeName === 'value') {\n valid = true;\n updateEventListener('input', () => elem.value);\n }\n }\n else if (tagName === 'SELECT') {\n const elem = element;\n if (attributeName === 'value') {\n valid = true;\n updateEventListener('change', () => elem.value);\n }\n }\n if (!valid) {\n triggerWarning(`unsupported model binding on \"${attributeName}\" of \"${tagName.toLowerCase()}\" element.`);\n }\n }\n createIntersectionObserver(targetElement, relativeElement, relativeElementMargin, thresholds, listener) {\n const observer = new IntersectionObserver((info) => {\n info.forEach((entry) => {\n listener({\n intersectionRatio: entry.intersectionRatio,\n boundingClientRect: entry.boundingClientRect,\n intersectionRect: entry.intersectionRect,\n relativeRect: entry.rootBounds,\n time: entry.time,\n });\n });\n }, {\n root: relativeElement,\n rootMargin: relativeElementMargin,\n threshold: thresholds,\n });\n observer.observe(targetElement);\n return {\n disconnect() {\n observer.disconnect();\n },\n };\n }\n createMediaQueryObserver(status, listener) {\n const calcMatches = () => {\n const width = document.documentElement.clientWidth;\n const height = document.documentElement.clientHeight;\n if (status.width !== undefined && width !== status.width)\n return false;\n if (status.maxWidth !== undefined && width > status.maxWidth)\n return false;\n if (status.minWidth !== undefined && width < status.minWidth)\n return false;\n if (status.width !== undefined && height !== status.height)\n return false;\n if (status.maxHeight !== undefined && height > status.maxHeight)\n return false;\n if (status.minHeight !== undefined && height < status.minHeight)\n return false;\n const orientation = width > height ? 'landscape' : 'portrait';\n if (orientation !== status.orientation)\n return false;\n return true;\n };\n let curMatches = null;\n const listenerFunc = () => {\n const matches = calcMatches();\n if (curMatches === matches)\n return;\n curMatches = matches;\n listener({ matches });\n };\n setTimeout(listenerFunc, 0);\n window.addEventListener('resize', listenerFunc);\n return {\n disconnect() {\n window.removeEventListener('resize', listenerFunc);\n },\n };\n }\n getContext(element, cb) {\n cb(null);\n }\n}\n//# sourceMappingURL=current_window_backend_context.js.map","/* eslint-disable class-methods-use-this */\nimport { safeCallback } from '../func_arr';\nexport var EmptyBackendElementType;\n(function (EmptyBackendElementType) {\n EmptyBackendElementType[EmptyBackendElementType[\"Fragment\"] = 0] = \"Fragment\";\n EmptyBackendElementType[EmptyBackendElementType[\"Element\"] = 1] = \"Element\";\n EmptyBackendElementType[EmptyBackendElementType[\"TextNode\"] = 2] = \"TextNode\";\n EmptyBackendElementType[EmptyBackendElementType[\"Component\"] = 3] = \"Component\";\n EmptyBackendElementType[EmptyBackendElementType[\"VirtualNode\"] = 4] = \"VirtualNode\";\n})(EmptyBackendElementType || (EmptyBackendElementType = {}));\n/** An empty backend implementation */\nexport class EmptyBackendContext {\n constructor() {\n this.mode = 1 /* BackendMode.Shadow */;\n /* @internal */\n this._$styleSheetIdInc = 1;\n /* @internal */\n this._$renderCallbacks = null;\n /* @internal */\n this._$shadowRoot = new EmptyBackendShadowRootContext();\n }\n destroy() {\n // empty\n }\n getWindowWidth() {\n return 1;\n }\n getWindowHeight() {\n return 1;\n }\n getDevicePixelRatio() {\n return 1;\n }\n getTheme() {\n return 'light';\n }\n registerStyleSheetContent(_path, _content) {\n // empty\n }\n appendStyleSheetPath(_path, _styleScope) {\n const id = this._$styleSheetIdInc;\n this._$styleSheetIdInc += 1;\n return id;\n }\n disableStyleSheet(_index) {\n // empty\n }\n render(cb) {\n if (this._$renderCallbacks) {\n this._$renderCallbacks.push(cb);\n }\n else {\n const callbacks = (this._$renderCallbacks = [cb]);\n setTimeout(() => {\n this._$renderCallbacks = null;\n callbacks.forEach((cb) => {\n safeCallback('Render Callback', cb, this, [null]);\n });\n }, 16);\n }\n }\n getRootNode() {\n return this._$shadowRoot;\n }\n createFragment() {\n return new EmptyBackendElement(0 /* EmptyBackendElementType.Fragment */);\n }\n onEvent(_createEvent, _listener) {\n // empty\n }\n}\n/** An element for empty backend implementation */\nexport class EmptyBackendElement {\n constructor(type) {\n if (type === 3 /* EmptyBackendElementType.Component */) {\n this._$shadowRoot = new EmptyBackendShadowRootContext();\n }\n else {\n this._$shadowRoot = null;\n }\n }\n release() {\n // empty\n }\n associateValue(_v) {\n // empty\n }\n getShadowRoot() {\n return this._$shadowRoot || undefined;\n }\n appendChild(_child) {\n // empty\n }\n removeChild(_child, _index) {\n // empty\n }\n insertBefore(_child, _before, _index) {\n // empty\n }\n replaceChild(_child, _oldChild, _index) {\n // empty\n }\n spliceBefore(_before, _deleteCount, _list) {\n // empty\n }\n spliceAppend(_list) {\n // empty\n }\n spliceRemove(_before, _deleteCount) {\n // empty\n }\n setId(_id) {\n // empty\n }\n setSlotName(_name) {\n // empty\n }\n setContainingSlot(_slot) {\n // empty\n }\n reassignContainingSlot(_oldSlot, _newSlot) {\n // empty\n }\n spliceBeforeSlotNodes(_before, _deleteCount, _list) {\n // empty\n }\n spliceRemoveSlotNodes(_before, _deleteCount) {\n // empty\n }\n spliceAppendSlotNodes(_list) {\n // empty\n }\n setInheritSlots() {\n // empty\n }\n setStyle(_styleText) {\n // empty\n }\n addClass(_className) {\n // empty\n }\n removeClass(_className) {\n // empty\n }\n clearClasses() {\n // empty\n }\n setClassAlias(_className, _target) {\n // empty\n }\n setAttribute(_name, _value) {\n // empty\n }\n removeAttribute(_name) {\n // empty\n }\n setDataset(_name, _value) {\n // empty\n }\n setText(_content) {\n // empty\n }\n setListenerStats(_type, _capture, _mutLevel) {\n // empty\n }\n setModelBindingStat(_attributeName, _listener) {\n // empty\n }\n}\n/** A shadow root for empty backend implementation */\nexport class EmptyBackendShadowRootContext extends EmptyBackendElement {\n // eslint-disable-next-line no-useless-constructor\n constructor() {\n super(4 /* EmptyBackendElementType.VirtualNode */);\n }\n createElement(_tagName, _stylingName) {\n return new EmptyBackendElement(1 /* EmptyBackendElementType.Element */);\n }\n createTextNode(_content) {\n return new EmptyBackendElement(2 /* EmptyBackendElementType.TextNode */);\n }\n createComponent(_tagName, _external, _virtualHost, _styleScope, _extraStyleScope, _externalClasses) {\n return new EmptyBackendElement(3 /* EmptyBackendElementType.Component */);\n }\n createVirtualNode(_virtualName) {\n return new EmptyBackendElement(4 /* EmptyBackendElementType.VirtualNode */);\n }\n}\n//# sourceMappingURL=empty_backend.js.map","/* eslint-disable class-methods-use-this */\nimport { safeCallback } from '../func_arr';\n/** An empty backend implementation */\nexport class EmptyComposedBackendContext {\n constructor() {\n this.mode = 2 /* BackendMode.Composed */;\n this._$styleSheetIdInc = 1;\n this._$renderCallbacks = null;\n this._$rootNode = new EmptyComposedBackendElement();\n }\n destroy() {\n // empty\n }\n getWindowWidth() {\n return 1;\n }\n getWindowHeight() {\n return 1;\n }\n getDevicePixelRatio() {\n return 1;\n }\n getTheme() {\n return 'light';\n }\n registerStyleSheetContent(_path, _content) {\n // empty\n }\n appendStyleSheetPath(_path, _styleScope) {\n const id = this._$styleSheetIdInc;\n this._$styleSheetIdInc += 1;\n return id;\n }\n disableStyleSheet(_index) {\n // empty\n }\n render(cb) {\n if (this._$renderCallbacks) {\n this._$renderCallbacks.push(cb);\n }\n else {\n const callbacks = (this._$renderCallbacks = [cb]);\n setTimeout(() => {\n this._$renderCallbacks = null;\n callbacks.forEach((cb) => {\n safeCallback('Render Callback', cb, this, [null]);\n });\n }, 16);\n }\n }\n getRootNode() {\n return this._$rootNode;\n }\n createElement(_tagName, _stylingName) {\n return new EmptyComposedBackendElement();\n }\n createTextNode(_tagName) {\n return new EmptyComposedBackendElement();\n }\n createFragment() {\n return new EmptyComposedBackendElement();\n }\n onEvent(_listener) {\n // empty\n }\n createMediaQueryObserver(_status, _listener) {\n return {\n disconnect: () => {\n /* empty */\n },\n };\n }\n}\n/** An element for empty backend implementation */\nexport class EmptyComposedBackendElement {\n release() {\n // empty\n }\n associateValue(_v) {\n // empty\n }\n appendChild(_child) {\n // empty\n }\n removeChild(_child, _index) {\n // empty\n }\n insertBefore(_child, _before, _index) {\n // empty\n }\n replaceChild(_child, _oldChild, _index) {\n // empty\n }\n spliceBefore(_before, _deleteCount, _list) {\n // empty\n }\n spliceAppend(_list) {\n // empty\n }\n spliceRemove(_before, _deleteCount) {\n // empty\n }\n setId(_id) {\n // empty\n }\n setStyleScope(_styleScope, _extraStyleScope, _hostStyleScope) {\n // empty\n }\n setStyle(_styleText) {\n // empty\n }\n addClass(_elementClass, _styleScope) {\n // empty\n }\n removeClass(_elementClass, _styleScope) {\n // empty\n }\n clearClasses() {\n // empty\n }\n setAttribute(_name, _value) {\n // empty\n }\n removeAttribute(_name) {\n // empty\n }\n setText(_content) {\n // empty\n }\n getBoundingClientRect(cb) {\n setTimeout(() => {\n cb({\n left: 0,\n top: 0,\n width: 0,\n height: 0,\n });\n }, 0);\n }\n getScrollOffset(cb) {\n setTimeout(() => {\n cb({\n scrollLeft: 0,\n scrollTop: 0,\n scrollWidth: 0,\n scrollHeight: 0,\n });\n }, 0);\n }\n setListenerStats(_type, _capture, _mutLevel) {\n // empty\n }\n setModelBindingStat(_attributeName, _listener) {\n // empty\n }\n createIntersectionObserver(_relativeElement, _relativeElementMargin, _thresholds, _listener) {\n return {\n disconnect: () => {\n /* empty */\n },\n };\n }\n getContext(cb) {\n cb(null);\n }\n}\n//# sourceMappingURL=empty_composed_backend.js.map","import { BM, } from './backend';\nconst CLASS_NAME_REG_EXP = /\\s+/;\n/**\n * Style scope manager\n */\nexport class StyleScopeManager {\n constructor() {\n /** @internal */\n this._$names = [''];\n }\n static globalScope() {\n return 0;\n }\n register(name) {\n const ret = this._$names.length;\n this._$names.push(name);\n return ret;\n }\n queryName(id) {\n return this._$names[id];\n }\n}\n/**\n * Class manager for non-virtual `Element`\n */\nexport class ClassList {\n constructor(element, externalNames, owner, styleScope, extraStyleScope, styleScopeManager) {\n /** @internal */\n this._$externalNames = undefined;\n /** @internal */\n this._$externalRawAlias = null;\n /** @internal */\n this._$dirtyExternalNames = null;\n /** @internal */\n this._$rawNames = [];\n /** @internal */\n this._$backendNames = [];\n /** @internal */\n this._$backendNameScopes = [];\n /** @internal */\n this._$backendNamesCount = [];\n /** @internal */\n this._$hasAliasNames = false;\n this._$element = element;\n this._$owner = owner;\n this._$defaultScope = styleScope;\n this._$extraScope = extraStyleScope;\n // root owner got globalScope as it's styleScope, avoid the root owner\n this._$rootScope = (owner === null || owner === void 0 ? void 0 : owner._$owner) ? owner._$rootScope : styleScope;\n this._$prefixManager = styleScopeManager;\n if (externalNames) {\n this._$externalNames = externalNames;\n this._$externalRawAlias = [];\n }\n }\n /** @internal */\n _$resolvePrefixes(name, cb) {\n const owner = this._$owner;\n const externalNames = owner === null || owner === void 0 ? void 0 : owner._$externalNames;\n const externalIndex = externalNames ? externalNames.indexOf(name) : -1;\n if (owner && externalIndex !== -1) {\n this._$hasAliasNames = true;\n const rawAlias = owner._$externalRawAlias[externalIndex];\n if (rawAlias) {\n for (let i = 0; i < rawAlias.length; i += 1) {\n owner._$resolvePrefixes(rawAlias[i], cb);\n }\n }\n }\n else if (name[0] === '~') {\n cb(this._$rootScope, name.slice(1));\n }\n else if (name[0] === '^') {\n let n = name.slice(1);\n let owner = this._$owner;\n while (n[0] === '^') {\n n = n.slice(1);\n owner = owner === null || owner === void 0 ? void 0 : owner._$owner;\n }\n // root owner got globalScope as it's styleScope, avoid the root owner\n const scopeId = (owner === null || owner === void 0 ? void 0 : owner._$owner) ? owner._$defaultScope : this._$rootScope;\n cb(scopeId, n);\n }\n else {\n if (this._$extraScope !== undefined) {\n cb(this._$extraScope, name);\n }\n cb(this._$defaultScope, name);\n }\n }\n /** @internal */\n _$hasAlias(name) {\n return !!this._$externalNames && this._$externalNames.includes(name);\n }\n /** @internal */\n _$setAlias(name, target) {\n if (!this._$externalNames)\n return;\n let slices;\n if (target === undefined || target === null) {\n slices = [];\n }\n else if (Array.isArray(target)) {\n slices = Array(target.length);\n for (let i = 0, l = target.length; i < l; i += 1) {\n slices[i] = String(target[i]);\n }\n }\n else {\n slices = String(target)\n .split(CLASS_NAME_REG_EXP)\n .filter((s) => s !== ''); // split result could be [ '' ]\n }\n const externalIndex = this._$externalNames.indexOf(name);\n if (externalIndex === -1)\n return;\n this._$dirtyExternalNames = this._$dirtyExternalNames || [];\n this._$dirtyExternalNames.push(name);\n this._$externalRawAlias[externalIndex] = slices;\n }\n /** @internal */\n _$getAlias() {\n return this._$externalNames;\n }\n /** @internal */\n _$spreadExternalClassUpdate() {\n const owner = this._$owner;\n if (!(owner === null || owner === void 0 ? void 0 : owner._$dirtyExternalNames) || !this._$hasAliasNames)\n return false;\n const dirtyExternalNames = owner._$dirtyExternalNames;\n const externalNames = this._$externalNames;\n if (externalNames) {\n for (let externalIndex = 0; externalIndex < externalNames.length; externalIndex += 1) {\n const externalRawAlias = this._$externalRawAlias[externalIndex] || [];\n for (let i = 0; i < dirtyExternalNames.length; i += 1) {\n if (externalRawAlias.includes(dirtyExternalNames[i])) {\n this._$dirtyExternalNames = this._$dirtyExternalNames || [];\n this._$dirtyExternalNames.push(externalNames[externalIndex]);\n }\n }\n }\n }\n const shouldUpdate = this._$rawNames.some((names) => names.some((name) => dirtyExternalNames.includes(name)));\n if (shouldUpdate) {\n this._$updateResolvedNames();\n }\n return !!this._$dirtyExternalNames || shouldUpdate;\n }\n /** @internal */\n _$shouldUpdateExternalClass() {\n if (!this._$dirtyExternalNames)\n return false;\n if (BM.SHADOW || (BM.DYNAMIC && this._$element.getBackendMode() === 1 /* BackendMode.Shadow */)) {\n const dirtyExternalNames = this._$dirtyExternalNames;\n for (let i = 0; i < dirtyExternalNames.length; i += 1) {\n const name = dirtyExternalNames[i];\n const externalIndex = this._$externalNames.indexOf(name);\n const targets = this._$externalRawAlias[externalIndex] || [];\n this._$element._$backendElement.setClassAlias(name, targets);\n }\n this._$dirtyExternalNames = null;\n return false;\n }\n return true;\n }\n /** @internal */\n _$markExternalClassUpdated() {\n this._$dirtyExternalNames = null;\n }\n /** @internal */\n _$updateResolvedNames() {\n const backendElement = this._$element._$backendElement;\n if (!backendElement)\n return false;\n const rawNames = this._$rawNames;\n const oldBackendNames = this._$backendNames;\n const oldBackendNameScopes = this._$backendNameScopes;\n const oldBackendNamesCount = this._$backendNamesCount;\n const newBackendNames = [];\n const newBackendNameScopes = [];\n const newBackendNamesCount = [];\n this._$hasAliasNames = false;\n if (BM.SHADOW || (BM.DYNAMIC && this._$element.getBackendMode() === 1 /* BackendMode.Shadow */)) {\n for (let i = 0, l = rawNames.length; i < l; i += 1) {\n const names = rawNames[i];\n if (!names)\n continue;\n for (let j = 0, ll = names.length; j < ll; j += 1) {\n const rawName = names[j];\n let found = false;\n for (let i = 0; i < newBackendNames.length; i += 1) {\n if (rawName === newBackendNames[i]) {\n newBackendNamesCount[i] += 1;\n found = true;\n break;\n }\n }\n if (!found) {\n newBackendNames.push(rawName);\n newBackendNameScopes.push(undefined);\n newBackendNamesCount.push(1);\n }\n }\n }\n }\n else {\n for (let i = 0, l = rawNames.length; i < l; i += 1) {\n const names = rawNames[i];\n if (!names)\n continue;\n for (let j = 0, ll = names.length; j < ll; j += 1) {\n const rawName = names[j];\n this._$resolvePrefixes(rawName, (scopeId, className) => {\n for (let i = 0; i < newBackendNames.length; i += 1) {\n if (className === newBackendNames[i] && scopeId === newBackendNameScopes[i]) {\n newBackendNamesCount[i] += 1;\n return;\n }\n }\n newBackendNames.push(className);\n newBackendNameScopes.push(scopeId);\n newBackendNamesCount.push(1);\n });\n }\n }\n }\n let changed = false;\n for (let i = 0; i < newBackendNames.length; i += 1) {\n let found = false;\n for (let j = 0; j < oldBackendNames.length; j += 1) {\n if (newBackendNames[i] === oldBackendNames[j] &&\n newBackendNameScopes[i] === oldBackendNameScopes[j]) {\n found = true;\n oldBackendNamesCount[j] = 0; // mark as exists\n break;\n }\n }\n if (!found) {\n changed = true;\n this._$addClassToBackend(newBackendNames[i], newBackendNameScopes[i], backendElement);\n }\n }\n for (let j = 0; j < oldBackendNames.length; j += 1) {\n // 0 means old exists\n if (oldBackendNamesCount[j] !== 0) {\n changed = true;\n this._$removeClassFromBackend(oldBackendNames[j], oldBackendNameScopes[j], backendElement);\n }\n }\n this._$backendNames = newBackendNames;\n this._$backendNameScopes = newBackendNameScopes;\n this._$backendNamesCount = newBackendNamesCount;\n return changed;\n }\n /** @internal */\n _$addClassToBackend(name, scope, e) {\n var _a;\n if (BM.DOMLIKE || (BM.DYNAMIC && this._$element.getBackendMode() === 3 /* BackendMode.Domlike */)) {\n const prefix = scope === undefined ? '' : (_a = this._$prefixManager) === null || _a === void 0 ? void 0 : _a.queryName(scope);\n const val = prefix ? `${prefix}--${name}` : name;\n e.classList.add(val);\n }\n else if (BM.COMPOSED ||\n (BM.DYNAMIC && this._$element.getBackendMode() === 2 /* BackendMode.Composed */)) {\n ;\n e.addClass(name, scope);\n }\n else {\n ;\n e.addClass(name);\n }\n }\n /** @internal */\n _$removeClassFromBackend(name, scope, e) {\n var _a;\n if (BM.DOMLIKE || (BM.DYNAMIC && this._$element.getBackendMode() === 3 /* BackendMode.Domlike */)) {\n const prefix = scope && ((_a = this._$prefixManager) === null || _a === void 0 ? void 0 : _a.queryName(scope));\n const val = prefix ? `${prefix}--${name}` : name;\n e.classList.remove(val);\n }\n else if (BM.COMPOSED ||\n (BM.DYNAMIC && this._$element.getBackendMode() === 2 /* BackendMode.Composed */)) {\n ;\n e.removeClass(name, scope);\n }\n else {\n ;\n e.removeClass(name);\n }\n }\n /** @internal */\n _$addClass(name, scopeId, backendElement) {\n const oldClassNames = this._$backendNames;\n const oldScopeIds = this._$backendNameScopes;\n const classNamesCount = this._$backendNamesCount;\n let found = false;\n for (let j = 0; j < oldClassNames.length; j += 1) {\n if (name === oldClassNames[j] && scopeId === oldScopeIds[j]) {\n found = true;\n classNamesCount[j] += 1;\n break;\n }\n }\n if (!found) {\n oldClassNames.push(name);\n oldScopeIds.push(scopeId);\n classNamesCount.push(1);\n this._$addClassToBackend(name, scopeId, backendElement);\n }\n }\n /** @internal */\n _$removeClass(name, scopeId, backendElement) {\n const oldClassNames = this._$backendNames;\n const oldScopeIds = this._$backendNameScopes;\n const classNamesCount = this._$backendNamesCount;\n for (let j = 0; j < oldClassNames.length; j += 1) {\n if (name === oldClassNames[j] && scopeId === oldScopeIds[j]) {\n if (classNamesCount[j] <= 1) {\n oldClassNames.splice(j, 1);\n oldScopeIds.splice(j, 1);\n classNamesCount.splice(j, 1);\n this._$removeClassFromBackend(name, scopeId, backendElement);\n }\n else {\n classNamesCount[j] -= 1;\n }\n break;\n }\n }\n }\n toggle(name, force, segmentIndex = 0 /* StyleSegmentIndex.MAIN */) {\n /* istanbul ignore if */\n if (CLASS_NAME_REG_EXP.test(name))\n throw new Error('Class name contains space characters.');\n const backendElement = this._$element._$backendElement;\n const rawClassIndex = this._$rawNames[segmentIndex]\n ? this._$rawNames[segmentIndex].indexOf(name)\n : -1;\n const isAdd = force === undefined ? rawClassIndex === -1 : !!force;\n let changed = false;\n if (isAdd) {\n if (rawClassIndex === -1) {\n const rawNames = this._$rawNames;\n if (!rawNames[segmentIndex]) {\n rawNames[segmentIndex] = [];\n }\n const names = rawNames[segmentIndex];\n names.push(name);\n if (backendElement) {\n if (BM.SHADOW || (BM.DYNAMIC && this._$element.getBackendMode() === 1 /* BackendMode.Shadow */)) {\n this._$addClass(name, undefined, backendElement);\n }\n else {\n this._$resolvePrefixes(name, (scopeId, className) => {\n this._$addClass(className, scopeId, backendElement);\n });\n }\n }\n changed = true;\n }\n }\n else if (rawClassIndex !== -1) {\n const names = this._$rawNames[segmentIndex];\n if (names)\n names.splice(rawClassIndex, 1);\n if (backendElement) {\n if (BM.SHADOW || (BM.DYNAMIC && this._$element.getBackendMode() === 1 /* BackendMode.Shadow */)) {\n this._$removeClass(name, undefined, backendElement);\n }\n else {\n this._$resolvePrefixes(name, (scopeId, className) => {\n this._$removeClass(className, scopeId, backendElement);\n });\n }\n }\n changed = true;\n }\n return changed;\n }\n contains(name, segmentIndex = 0 /* StyleSegmentIndex.MAIN */) {\n const names = this._$rawNames[segmentIndex] || [];\n for (let i = 0; i < names.length; i += 1) {\n const rn = names[i];\n if (rn[0] === '~') {\n const n = rn.slice(1);\n if (n === name)\n return true;\n }\n else if (rn[0] === '^') {\n let n = rn.slice(1);\n while (n[0] === '^') {\n n = n.slice(1);\n }\n if (n === name)\n return true;\n }\n else {\n if (rn === name)\n return true;\n }\n }\n return false;\n }\n /** Set class string */\n setClassNames(names, segmentIndex = 0 /* StyleSegmentIndex.MAIN */) {\n let n;\n if (names === undefined || names === null) {\n n = [];\n }\n else if (Array.isArray(names)) {\n n = Array(names.length);\n for (let i = 0, l = names.length; i < l; i += 1) {\n n[i] = String(names[i]);\n }\n }\n else {\n n = String(names)\n .split(CLASS_NAME_REG_EXP)\n .filter((s) => s !== ''); // split result could be [ '' ]\n }\n this._$rawNames[segmentIndex] = n;\n return this._$updateResolvedNames();\n }\n /** Returns space separated class string */\n getClassNames(segmentIndex = 0 /* StyleSegmentIndex.MAIN */) {\n const names = this._$rawNames[segmentIndex] || [];\n return names ? names.join(' ') : '';\n }\n}\n//# sourceMappingURL=class_list.js.map","export const METHOD_TAG = Symbol('method');\n//# sourceMappingURL=component_params.js.map","/**\n * Interface that can be implement dynamically\n *\n * A `TraitBehavior` is like a TypeScript interface, but can be implemented dynamically.\n * It requires the implementors to implement `TIn` .\n * Also, it can provide do a transform from `TIn` to `TOut` as common logic of the trait.\n */\nexport class TraitBehavior {\n /** @internal */\n // eslint-disable-next-line no-useless-constructor\n constructor(ownerSpace, trans) {\n this.ownerSpace = ownerSpace;\n this._$trans = trans;\n }\n /** @internal */\n _$implement(impl) {\n var _a;\n return ((_a = this._$trans) === null || _a === void 0 ? void 0 : _a.call(this, impl)) || impl;\n }\n}\n/**\n * A manager that can implement multiple different trait behaviors\n */\nexport class TraitGroup {\n constructor() {\n this._$traits = new WeakMap();\n }\n implement(traitBehavior, impl) {\n const traitImpl = traitBehavior._$implement(impl);\n this._$traits.set(traitBehavior, traitImpl);\n }\n get(traitBehavior) {\n return this._$traits.get(traitBehavior);\n }\n}\n//# sourceMappingURL=trait_behaviors.js.map","import { BehaviorBuilder, } from './behavior';\nimport { StyleScopeManager } from './class_list';\nimport { Component, } from './component';\nimport { normalizeComponentOptions, } from './global_options';\nimport { TraitBehavior } from './trait_behaviors';\nimport { safeCallback } from './func_arr';\nconst normalizePath = (path, basePath) => {\n let slices;\n if (path[0] !== '/') {\n slices = basePath.split('/').slice(0, -1).concat(path.split('/'));\n }\n else {\n slices = path.split('/');\n }\n const finalSlices = [];\n for (let i = 0; i < slices.length; i += 1) {\n const slice = slices[i];\n if (slice === '' || slice === '.')\n continue;\n if (slice === '..') {\n finalSlices.pop();\n continue;\n }\n finalSlices.push(slice);\n }\n return finalSlices.join('/');\n};\nexport const normalizeUrl = (path, relPath) => {\n const protoSep = path.indexOf('://');\n if (protoSep > 0) {\n const domainSep = path.indexOf('/', protoSep + 3);\n if (domainSep > 0) {\n const domain = path.slice(0, domainSep);\n const absPath = normalizePath(path.slice(domainSep + 1), '');\n return {\n domain,\n absPath,\n };\n }\n // HACK for invalid URL like `a://the-comp` , provide some compatibility\n const domain = path.slice(0, protoSep + 3);\n const absPath = normalizePath(path.slice(protoSep + 3), '');\n return {\n domain,\n absPath,\n };\n }\n return {\n domain: null,\n absPath: normalizePath(path, relPath),\n };\n};\nexport class ComponentWaitingList {\n constructor(ownerSpace, isPub, alias) {\n /** @internal */\n this._$callbacks = [];\n this._$ownerSpace = ownerSpace;\n this._$isPub = isPub;\n this._$alias = alias;\n }\n add(callback) {\n this._$callbacks.push(callback);\n }\n hintUsed(owner) {\n var _a, _b;\n (_b = (_a = this._$ownerSpace)._$componentWaitingListener) === null || _b === void 0 ? void 0 : _b.call(_a, this._$isPub, this._$alias, owner);\n }\n remove(callback) {\n const index = this._$callbacks.indexOf(callback);\n // must guarantee order here (cannot swap-remove)\n this._$callbacks.splice(index, 1);\n }\n call(c) {\n const cbs = this._$callbacks;\n this._$callbacks = [];\n for (let i = 0; i < cbs.length; i += 1) {\n const f = cbs[i];\n f(c);\n }\n }\n}\n/** A group of components for cross-component using */\nexport class ComponentSpace {\n /**\n * Create a new component space\n *\n * The `defaultComponent` is the default component path.\n * It should be defined soon after creation.\n * A `baseSpace` can be provided as a \"base\" component space -\n * every component alias (and behavior alias) in the space will be imported when creation.\n * However, if any new component is added to the base space after the creation,\n * it will not be added to the created space.\n */\n constructor(defaultComponent, baseSpace, styleScopeManager, allowUnusedNativeNode = true) {\n /** @internal */\n this._$behaviorList = Object.create(null);\n /** @internal */\n this._$pubBehaviorList = Object.create(null);\n /** @internal */\n this._$list = Object.create(null);\n /** @internal */\n this._$pubList = Object.create(null);\n /** @internal */\n this._$using = Object.create(null);\n /** @internal */\n this._$importedSpaces = Object.create(null);\n /** @internal */\n this._$listWaiting = Object.create(null);\n /** @internal */\n this._$pubListWaiting = Object.create(null);\n /** @internal */\n this._$groupingListWaiting = null;\n /** @internal */\n this._$componentWaitingListener = null;\n /** @internal */\n this._$allowUnusedNativeNode = true;\n if (baseSpace) {\n Object.assign(this._$list, baseSpace._$pubList);\n Object.assign(this._$behaviorList, baseSpace._$pubBehaviorList);\n }\n this._$defaultComponent = defaultComponent !== null && defaultComponent !== void 0 ? defaultComponent : '';\n this._$componentOptions = normalizeComponentOptions({}, baseSpace === null || baseSpace === void 0 ? void 0 : baseSpace._$componentOptions);\n this.styleScopeManager = styleScopeManager || new StyleScopeManager();\n this._$allowUnusedNativeNode = allowUnusedNativeNode;\n }\n /**\n * Update the default component options for this space\n *\n * The new options will be merged with existing options.\n */\n updateComponentOptions(componentOptions) {\n this._$componentOptions = normalizeComponentOptions(componentOptions, this._$componentOptions);\n }\n getComponentOptions() {\n return this._$componentOptions;\n }\n /**\n * Set (or update) a global using component item\n *\n * This will allow all the components in this component space using this component automatically,\n * without declaring it with `using` or `usingComponents` again.\n * The target can also be a tag name of a native node.\n */\n setGlobalUsingComponent(key, target) {\n this._$using[key] = target;\n }\n /**\n * Import another component space\n *\n * The components in the imported space can be used by components in this space.\n * The `protoDomain` should be URL-like, i.e. `space://another-space` .\n * When using, the components in the imported space should be specified with `protoDomain` .\n * For example, if `protoDomain` is `space://another-space` and one imported component has alias `my-comp` ,\n * then it should be specified with `space://another-space/my-comp` .\n * If `privateUse` set to false, only component alias in the imported space can be used;\n * the original name of components is imported otherwise.\n */\n importSpace(protoDomain, space, privateUse) {\n this._$importedSpaces[protoDomain] = {\n space,\n privateUse,\n };\n }\n /**\n * Get a component by the `path`\n *\n * The component `is` is actually treated as the \"path\" of the component.\n * In other words, the component `is` field can be a string like `path/to/the/component` .\n * Other components can be used by the component with \"relative path\" specified.\n * In this method, if the `path` is given as a relative path (not started with `/` ),\n * it will be converted according to the `basePath` .\n * If the `path` is given as a URL-like format,\n * the component will be searched in imported component spaces ( `importSpace()` for details).\n */\n getComponentByUrl(path, basePath) {\n const { domain, absPath } = normalizeUrl(path, basePath);\n const comp = this.getComponent(absPath, true, domain);\n if (!comp) {\n throw new Error(`There is no component \"${absPath}\" in the space and no default component can be used`);\n }\n return comp;\n }\n /**\n * Get a component by the `path`\n *\n * Similar to `getComponentByUrl()` ,\n * but returns `null` instead of the default component if no component was found.\n */\n getComponentByUrlWithoutDefault(path, relPath) {\n const { domain, absPath } = normalizeUrl(path, relPath);\n const comp = this.getComponent(absPath, false, domain);\n return comp || null;\n }\n getComponent(absPath, withDefault = true, domain = null) {\n let list;\n if (domain) {\n const target = this._$importedSpaces[domain];\n if (target) {\n const { space, privateUse } = target;\n if (privateUse) {\n list = space._$list;\n }\n else {\n list = space._$pubList;\n }\n }\n }\n else {\n list = this._$list;\n }\n if (list) {\n const def = list[absPath];\n if (def)\n return def;\n }\n if (withDefault) {\n return this._$list[this._$defaultComponent];\n }\n return undefined;\n }\n getDefaultComponent() {\n return this._$list[this._$defaultComponent] || null;\n }\n isDefaultComponent(def) {\n return this._$list[this._$defaultComponent] === def;\n }\n getGlobalUsingComponent(key) {\n return this._$using[key] || null;\n }\n /**\n * Get a behavior by the `path`\n *\n * Similar to `getComponentByUrlWithoutDefault()` but for behaviors.\n */\n getBehaviorByUrl(path, relPath) {\n const { domain, absPath } = normalizeUrl(path, relPath);\n return this._$getBehavior(absPath, domain) || null;\n }\n /** @internal */\n _$getBehavior(absPath, domain = null) {\n let list;\n if (domain) {\n const target = this._$importedSpaces[domain];\n if (target) {\n const { space, privateUse } = target;\n if (privateUse) {\n list = space._$behaviorList;\n }\n else {\n list = space._$pubBehaviorList;\n }\n }\n }\n else {\n list = this._$behaviorList;\n }\n if (list) {\n const def = list[absPath];\n if (def)\n return def;\n }\n return undefined;\n }\n /** Register a component in this space */\n defineComponent(def) {\n const is = def.is;\n const ret = new BehaviorBuilder(is, this).definition(def).registerComponent();\n return ret;\n }\n /** Register a behavior in this space */\n defineBehavior(def) {\n const is = def.is;\n const ret = new BehaviorBuilder(is, this).definition(def).registerBehavior();\n return ret;\n }\n /** Register a component or a behavior with chaining API */\n define(is) {\n return new BehaviorBuilder(is, this);\n }\n /**\n * Register a component or a behavior with chaining API (with method caller type specified)\n *\n * This API is generally designed for adapters which require special method callers.\n */\n defineWithMethodCaller(is) {\n return new BehaviorBuilder(is, this);\n }\n /** @internal */\n _$registerComponent(is, comp) {\n this._$list[is] = comp;\n this._$behaviorList[is] = comp.behavior;\n const waiting = this._$listWaiting[is];\n if (waiting) {\n delete this._$listWaiting[is];\n if (this._$groupingListWaiting) {\n this._$groupingListWaiting.push({ waiting, comp });\n }\n else {\n waiting.call(comp);\n }\n }\n }\n /** @internal */\n _$registerBehavior(is, beh) {\n this._$behaviorList[is] = beh;\n }\n /**\n * Start a series of components and behaviors registration\n *\n * In most cases, `groupRegister` is prefered.\n */\n startGroupRegister() {\n this._$groupingListWaiting = [];\n }\n /**\n * End a series of components and behaviors registration\n *\n * In most cases, `groupRegister` is prefered.\n */\n endGroupRegister() {\n const arr = this._$groupingListWaiting;\n if (!arr)\n return;\n this._$groupingListWaiting = null;\n for (let i = 0; i < arr.length; i += 1) {\n const { waiting, comp } = arr[i];\n waiting.call(comp);\n }\n }\n /**\n * Group a series of components and behaviors registration\n *\n * If any placeholder should be replaced,\n * the replacement will happen after the whole series of registration.\n */\n groupRegister(cb) {\n this.startGroupRegister();\n const ret = safeCallback('group register', cb, this, []);\n this.endGroupRegister();\n return ret;\n }\n /**\n * Assign a public alias to a component\n *\n * The alias can be used in other component spaces which imported this component space.\n * One component may have multiple aliases.\n */\n exportComponent(alias, is) {\n const comp = this._$list[is];\n if (!comp) {\n throw new Error(`There is no component \"${is}\" for aliasing`);\n }\n this._$pubList[alias] = comp;\n const arr = this._$pubListWaiting[alias];\n if (arr) {\n delete this._$pubListWaiting[alias];\n arr.call(comp);\n }\n }\n /** Get a component by its exported alias */\n getExportedComponent(alias) {\n return this._$pubList[alias];\n }\n /** Get a behavior by its exported alias */\n getExportedBehavior(alias) {\n return this._$pubBehaviorList[alias];\n }\n /**\n * Assign a public alias to a behavior\n *\n * The alias can be used in other component spaces which imported this component space.\n * One behavior may have multiple aliases.\n */\n exportBehavior(alias, is) {\n const beh = this._$behaviorList[is];\n if (!beh) {\n throw new Error(`There is no behavior \"${is}\" for aliasing`);\n }\n this._$pubBehaviorList[alias] = beh;\n }\n /** @internal */\n _$componentWaitingList(path, relPath) {\n const { domain, absPath } = normalizeUrl(path, relPath);\n let waiting;\n let space;\n let isPub;\n if (domain) {\n const target = this._$importedSpaces[domain];\n if (target) {\n space = target.space;\n isPub = !target.privateUse;\n if (!isPub) {\n if (space._$list[absPath]) {\n return null;\n }\n waiting = space._$listWaiting;\n }\n else {\n if (space._$pubList[absPath]) {\n return null;\n }\n waiting = space._$pubListWaiting;\n }\n }\n else {\n return null;\n }\n }\n else {\n space = this;\n isPub = false;\n if (this._$list[absPath]) {\n return null;\n }\n waiting = this._$listWaiting;\n }\n let wl = waiting[absPath];\n if (wl)\n return wl;\n wl = waiting[absPath] = new ComponentWaitingList(space, isPub, absPath);\n return wl;\n }\n /**\n * Set a listener which will be called when a placeholded component is used.\n *\n * This can be used as a hint for a component that should be registered later.\n * If `isPub` is false, the `alias` is the path of the component, a.k.a. `is` .\n * Otherwise, it is the exported `alias` instead.\n */\n setComponentWaitingListener(listener) {\n this._$componentWaitingListener = listener;\n }\n /**\n * Create a component by URL\n *\n * This `url` can contain params (started with \"?\" character).\n * The params will try to be set to component properties (if matches the property name).\n */\n createComponentByUrl(tagName, url, genericTargets, backendContext) {\n let domainPath = url;\n let paramStr = null;\n // parse URL\n const hashSepIndex = domainPath.indexOf('#');\n if (hashSepIndex >= 0) {\n domainPath = domainPath.slice(0, hashSepIndex);\n }\n const paramSepIndex = domainPath.indexOf('?');\n if (paramSepIndex >= 0) {\n paramStr = domainPath.slice(paramSepIndex + 1);\n domainPath = domainPath.slice(0, paramSepIndex);\n }\n // find target components\n const compDef = this.getComponentByUrl(domainPath, '');\n let genericImpls = null;\n if (genericTargets) {\n genericImpls = Object.create(null);\n Object.keys(genericTargets).forEach((key) => {\n const url = genericTargets[key];\n const compDef = this.getComponentByUrl(url, '');\n genericImpls[key] = compDef;\n });\n }\n // create the component\n const comp = Component.createWithGenericsAndContext(tagName, compDef, genericImpls, backendContext, (comp) => {\n // set params if provided\n if (paramStr) {\n let needApplyUpdates = false;\n paramStr.split('&').forEach((kv) => {\n const kvSepIndex = kv.indexOf('=');\n if (kvSepIndex >= 0) {\n const key = decodeURIComponent(kv.slice(0, kvSepIndex));\n const value = decodeURIComponent(kv.slice(kvSepIndex + 1));\n if (comp._$dataGroup.replaceProperty(key, value)) {\n needApplyUpdates = true;\n }\n }\n });\n if (needApplyUpdates)\n comp.applyDataUpdates();\n }\n });\n return comp;\n }\n defineTraitBehavior(trans) {\n return new TraitBehavior(this, trans);\n }\n}\nlet defaultComponentSpace = null;\nexport const getDefaultComponentSpace = () => {\n if (defaultComponentSpace) {\n return defaultComponentSpace;\n }\n const cs = new ComponentSpace();\n defaultComponentSpace = cs;\n return cs;\n};\n//# sourceMappingURL=component_space.js.map","const skipWhiteSpace = (state) => {\n const str = state.str;\n while (state.cur < str.length) {\n const next = str[state.cur];\n if (next === ' ' || next === '\\n' || next === '\\r' || next === '\\t' || next === '\\f') {\n state.cur += 1;\n }\n else {\n break;\n }\n }\n return state.cur < str.length;\n};\nconst parseInteger = (state) => {\n const str = state.str;\n let ret = '';\n while (state.cur < str.length) {\n const next = str[state.cur];\n if (next >= '0' && next <= '9') {\n ret += next;\n }\n else {\n break;\n }\n state.cur += 1;\n }\n if (!ret) {\n throw new Error(`data path descriptor \"${str}\" is illegal at char ${state.cur} (illegal index)`);\n }\n return parseInt(ret, 10);\n};\nconst parseFieldName = (state) => {\n const str = state.str;\n let ret = '';\n while (state.cur < str.length) {\n const next = str[state.cur];\n if (next === '\\\\') {\n // in this mode, `\\\\` always translate the next char to field name\n if (state.cur + 1 === str.length) {\n // empty\n }\n else {\n const next2 = str[state.cur + 1];\n ret += next2;\n state.cur += 1;\n }\n }\n else if (/^[_a-zA-Z]$/.test(next)) {\n ret += next;\n }\n else if (next >= '0' && next <= '9') {\n if (ret === '') {\n throw new Error(`data path descriptor \"${str}\" is illegal at char ${state.cur} (field name cannot start with digits)`);\n }\n ret += next;\n }\n else {\n break;\n }\n state.cur += 1;\n }\n return ret;\n};\nconst parseFieldNameWithSpecialChars = (state) => {\n const str = state.str;\n let ret = '';\n while (state.cur < str.length) {\n const next = str[state.cur];\n if (next === '\\\\') {\n // in this mode, `\\\\` only escape recognized special chars. It is `\\\\` itself otherwise\n if (state.cur + 1 === str.length) {\n ret += '\\\\';\n state.cur += 1;\n }\n else {\n const next2 = str[state.cur + 1];\n if (next2 === '.' || next2 === '[' || next2 === ']' || next2 === '\\\\') {\n ret += next2;\n state.cur += 2;\n }\n else {\n ret += '\\\\';\n state.cur += 1;\n }\n }\n }\n else if (next === '.' || next === '[') {\n break;\n }\n else {\n ret += next;\n state.cur += 1;\n }\n }\n return ret;\n};\nconst parsePath = (state) => {\n const str = state.str;\n skipWhiteSpace(state);\n if (str[state.cur] === '*' && str[state.cur + 1] === '*') {\n state.cur += 2;\n return ['**'];\n }\n const seg = parseFieldName(state);\n if (!seg) {\n throw new Error(`data path descriptor \"${str}\" is illegal at char ${state.cur} (first field name illegal)`);\n }\n const ret = [seg];\n while (state.cur < str.length) {\n if (!skipWhiteSpace(state))\n break;\n const next = str[state.cur];\n if (next === '.') {\n state.cur += 1;\n skipWhiteSpace(state);\n if (str[state.cur] === '*' && str[state.cur + 1] === '*') {\n ret.push('**');\n state.cur += 2;\n break;\n }\n const seg = parseFieldName(state);\n if (!seg) {\n throw new Error(`data path descriptor \"${str}\" is illegal at char ${state.cur} (field name illegal)`);\n }\n ret.push(seg);\n }\n else if (next === '[') {\n state.cur += 1;\n skipWhiteSpace(state);\n const index = parseInteger(state);\n skipWhiteSpace(state);\n const next2 = str[state.cur];\n if (next2 !== ']') {\n throw new Error(`data path descriptor \"${str}\" is illegal at char ${state.cur} (illegal index)`);\n }\n state.cur += 1;\n ret.push(index);\n }\n else {\n break;\n }\n }\n return ret;\n};\nconst parsePathWithSpecialChars = (state) => {\n const str = state.str;\n const ret = [];\n while (state.cur < str.length) {\n const next = str[state.cur];\n if (next === '.') {\n state.cur += 1;\n const seg = parseFieldNameWithSpecialChars(state);\n if (seg !== '')\n ret.push(seg);\n }\n else if (next === '[') {\n state.cur += 1;\n const index = parseInteger(state);\n const next2 = str[state.cur];\n if (next2 !== ']' && state.cur < str.length) {\n throw new Error(`data path descriptor \"${str}\" is illegal at char ${state.cur} (illegal index)`);\n }\n state.cur += 1;\n ret.push(index);\n }\n else {\n const seg = parseFieldNameWithSpecialChars(state);\n ret.push(seg);\n }\n }\n if (ret.length === 0)\n ret.push('');\n return ret;\n};\nconst parseCommaSepPaths = (state) => {\n const ret = [];\n ret.push(parsePath(state));\n skipWhiteSpace(state);\n while (state.str[state.cur] === ',') {\n state.cur += 1;\n ret.push(parsePath(state));\n skipWhiteSpace(state);\n }\n return ret;\n};\nexport const parseSinglePath = (str) => {\n const parseState = {\n str,\n cur: 0,\n };\n const ret = parsePathWithSpecialChars(parseState);\n // NOTE currently the end check is not required here, because prev calls always eats all chars\n // if (parseState.cur !== str.length) {\n // throw new Error(`data path descriptor \"${str}\" is illegal at char ${parseState.cur}`)\n // }\n return ret;\n};\nexport const parseMultiPaths = (str) => {\n if (typeof str !== 'string') {\n return str.map((str) => parsePath({ str, cur: 0 }));\n }\n const parseState = {\n str,\n cur: 0,\n };\n const ret = parseCommaSepPaths(parseState);\n if (parseState.cur !== str.length) {\n throw new Error(`data path descriptor \"${str}\" is illegal at char ${parseState.cur}`);\n }\n return ret;\n};\n//# sourceMappingURL=data_path.js.map","const deepCopyWithRecursion = (src, visited) => {\n if (typeof src === 'object' && src !== null) {\n const v = visited.get(src);\n if (v !== undefined)\n return v;\n if (Array.isArray(src)) {\n const dest = [];\n visited.set(src, dest);\n for (let i = 0; i < src.length; i += 1) {\n dest[i] = deepCopyWithRecursion(src[i], visited);\n }\n return dest;\n }\n const dest = {};\n visited.set(src, dest);\n const keys = Object.keys(src);\n for (let i = 0; i < keys.length; i += 1) {\n const k = keys[i];\n dest[k] = deepCopyWithRecursion(src[k], visited);\n }\n return dest;\n }\n if (typeof src === 'symbol')\n return Symbol(src.description);\n return src;\n};\nexport const simpleDeepCopy = (src) => {\n if (typeof src === 'object' && src !== null) {\n if (Array.isArray(src)) {\n const dest = [];\n for (let i = 0; i < src.length; i += 1) {\n dest[i] = simpleDeepCopy(src[i]);\n }\n return dest;\n }\n const dest = {};\n const keys = Object.keys(src);\n for (let i = 0; i < keys.length; i += 1) {\n const k = keys[i];\n dest[k] = simpleDeepCopy(src[k]);\n }\n return dest;\n }\n if (typeof src === 'symbol')\n return Symbol(src.description);\n return src;\n};\nexport const deepCopy = (src, withRecursion) => {\n if (withRecursion)\n return deepCopyWithRecursion(src, new WeakMap());\n return simpleDeepCopy(src);\n};\n//# sourceMappingURL=data_utils.js.map","import { FuncArr } from './func_arr';\nimport { isElement } from './type_symbol';\nexport class MutationObserverTarget {\n constructor(boundElement) {\n this._$subtreeObserversCount = 0;\n this.attrObservers = null;\n this.textObservers = null;\n this.childObservers = null;\n this.attachObservers = null;\n this._$boundElement = boundElement;\n }\n attachChild(child) {\n if (!child._$mutationObserverTarget) {\n child._$mutationObserverTarget = new MutationObserverTarget(child);\n }\n if (this._$subtreeObserversCount > 0) {\n child._$mutationObserverTarget.updateSubtreeCount(this._$subtreeObserversCount);\n }\n }\n detachChild(child) {\n if (child._$mutationObserverTarget) {\n child._$mutationObserverTarget.updateSubtreeCount(-this._$subtreeObserversCount);\n }\n }\n updateSubtreeCount(diff) {\n this._$subtreeObserversCount += diff;\n const children = this._$boundElement.childNodes;\n children.forEach((child) => {\n if (isElement(child)) {\n if (!child._$mutationObserverTarget) {\n child._$mutationObserverTarget = new MutationObserverTarget(child);\n }\n child._$mutationObserverTarget.updateSubtreeCount(diff);\n }\n });\n }\n hasSubtreeListeners() {\n return this._$subtreeObserversCount > 0;\n }\n static callAttrObservers(node, eventObj) {\n var _a;\n let cur = node;\n do {\n const target = cur._$mutationObserverTarget;\n (_a = target === null || target === void 0 ? void 0 : target.attrObservers) === null || _a === void 0 ? void 0 : _a.call(cur, [eventObj]);\n const next = cur.parentNode;\n if (!next)\n break;\n cur = next;\n if (!cur._$mutationObserverTarget)\n break;\n } while (cur._$mutationObserverTarget._$subtreeObserversCount > 0);\n }\n static callTextObservers(textNode, eventObj) {\n var _a;\n let cur = textNode.parentNode;\n while (cur) {\n const target = cur._$mutationObserverTarget;\n if (!target || target._$subtreeObserversCount === 0)\n break;\n (_a = target.textObservers) === null || _a === void 0 ? void 0 : _a.call(cur, [eventObj]);\n cur = cur.parentNode;\n }\n }\n static callChildObservers(node, eventObj) {\n var _a;\n let cur = node;\n do {\n const target = cur._$mutationObserverTarget;\n (_a = target === null || target === void 0 ? void 0 : target.childObservers) === null || _a === void 0 ? void 0 : _a.call(cur, [eventObj]);\n const next = cur.parentNode;\n if (!next)\n break;\n cur = next;\n if (!cur._$mutationObserverTarget)\n break;\n } while (cur._$mutationObserverTarget._$subtreeObserversCount > 0);\n }\n static callAttachObservers(node, eventObj) {\n var _a;\n const target = node._$mutationObserverTarget;\n (_a = target === null || target === void 0 ? void 0 : target.attachObservers) === null || _a === void 0 ? void 0 : _a.call(node, [eventObj]);\n }\n}\n/**\n * An observer that can observe shadow tree changes\n *\n * Like DOM MutationObserver,\n * this observer can observe attributes, text content, and child nodes changes.\n * It can optionally observe changes in a subtree.\n * Further more, it can listen attached/detached events on an element.\n */\nexport class MutationObserver {\n constructor(listener) {\n this._$subtreeListenersCount = 0;\n this._$boundFuncArrs = [];\n this._$boundTarget = null;\n this._$listener = listener;\n this._$normalizedListener = null;\n }\n static create(listener) {\n return new MutationObserver(listener);\n }\n /** Start observation */\n observe(targetElement, options = {\n properties: false,\n childList: false,\n characterData: false,\n subtree: false,\n attachStatus: false,\n }) {\n const listener = this._$listener;\n if (!listener) {\n throw new Error('A MutationObserver can only observe once');\n }\n let target;\n if (targetElement._$mutationObserverTarget) {\n target = targetElement._$mutationObserverTarget;\n }\n else {\n target = new MutationObserverTarget(targetElement);\n targetElement._$mutationObserverTarget = target;\n }\n this._$listener = null;\n const cb = options.subtree\n ? listener\n : function noSubtreeListener(ev) {\n // this might be TextNode, but do the same as Element\n if (ev.target === this)\n listener.call(this, ev);\n };\n this._$normalizedListener = cb;\n this._$boundTarget = target;\n if (options.properties) {\n if (!target.attrObservers)\n target.attrObservers = new FuncArr('attributeObserver');\n target.attrObservers.add(cb);\n this._$boundFuncArrs.push(target.attrObservers);\n this._$subtreeListenersCount += 1;\n }\n if (options.childList) {\n if (!target.childObservers)\n target.childObservers = new FuncArr('childObserver');\n target.childObservers.add(cb);\n this._$boundFuncArrs.push(target.childObservers);\n this._$subtreeListenersCount += 1;\n }\n if (options.characterData) {\n if (!target.textObservers)\n target.textObservers = new FuncArr('textObserver');\n target.textObservers.add(cb);\n this._$boundFuncArrs.push(target.textObservers);\n this._$subtreeListenersCount += 1;\n }\n if (options.subtree) {\n target.updateSubtreeCount(this._$subtreeListenersCount);\n }\n if (options.attachStatus) {\n if (!target.attachObservers)\n target.attachObservers = new FuncArr('attachObserver');\n target.attachObservers.add(cb);\n this._$boundFuncArrs.push(target.attachObservers);\n }\n }\n /** End observation */\n disconnect() {\n var _a;\n (_a = this._$boundTarget) === null || _a === void 0 ? void 0 : _a.updateSubtreeCount(-this._$subtreeListenersCount);\n const arr = this._$boundFuncArrs;\n this._$boundFuncArrs = [];\n const nl = this._$normalizedListener;\n if (nl) {\n arr.forEach((funcArr) => {\n funcArr.remove(nl);\n });\n }\n }\n}\n//# sourceMappingURL=mutation_observer.js.map","import { deepCopy, simpleDeepCopy } from './data_utils';\nimport { safeCallback } from './func_arr';\nimport { DeepCopyKind } from './global_options';\nimport { MutationObserverTarget } from './mutation_observer';\nimport { triggerWarning } from './warning';\n// eslint-disable-next-line @typescript-eslint/unbound-method\nconst hasOwnProperty = Object.prototype.hasOwnProperty;\nexport var NormalizedPropertyType;\n(function (NormalizedPropertyType) {\n NormalizedPropertyType[\"Invalid\"] = \"invalid\";\n NormalizedPropertyType[\"Any\"] = \"any\";\n NormalizedPropertyType[\"String\"] = \"string\";\n NormalizedPropertyType[\"Number\"] = \"number\";\n NormalizedPropertyType[\"Boolean\"] = \"boolean\";\n NormalizedPropertyType[\"Object\"] = \"object\";\n NormalizedPropertyType[\"Array\"] = \"array\";\n NormalizedPropertyType[\"Function\"] = \"function\";\n})(NormalizedPropertyType || (NormalizedPropertyType = {}));\nexport const shallowMerge = (dest, src) => {\n const keys = Object.keys(src);\n for (let i = 0; i < keys.length; i += 1) {\n const key = keys[i];\n if (Object.prototype.hasOwnProperty.call(dest, key)) {\n if (key[0] === '_') {\n triggerWarning(`data field \"${key}\" from different behaviors is overriding or merging.`);\n }\n if (typeof dest[key] === 'object' &&\n typeof src[key] === 'object' &&\n src[key] !== null &&\n !Array.isArray(src[key])) {\n if (Array.isArray(dest[key])) {\n dest[key] = dest[key].slice();\n }\n else {\n const oldDest = dest[key];\n const newDest = {};\n const subKeys = Object.keys(oldDest);\n for (let i = 0; i < subKeys.length; i += 1) {\n const subKey = subKeys[i];\n newDest[subKey] = oldDest[subKey];\n }\n dest[key] = newDest;\n }\n shallowMerge(dest[key], src[key]);\n }\n else {\n dest[key] = src[key];\n }\n }\n else {\n dest[key] = src[key];\n }\n }\n};\nexport const normalizePropertyTypeShortHand = (propDef) => {\n if (propDef === \"string\" /* NormalizedPropertyType.String */ || propDef === String) {\n return {\n type: \"string\" /* NormalizedPropertyType.String */,\n optionalTypes: null,\n value: '',\n default: undefined,\n observer: null,\n comparer: null,\n reflectIdPrefix: false,\n };\n }\n if (propDef === \"number\" /* NormalizedPropertyType.Number */ || propDef === Number) {\n return {\n type: \"number\" /* NormalizedPropertyType.Number */,\n optionalTypes: null,\n value: 0,\n default: undefined,\n observer: null,\n comparer: null,\n reflectIdPrefix: false,\n };\n }\n if (propDef === \"boolean\" /* NormalizedPropertyType.Boolean */ || propDef === Boolean) {\n return {\n type: \"boolean\" /* NormalizedPropertyType.Boolean */,\n optionalTypes: null,\n value: false,\n default: undefined,\n observer: null,\n comparer: null,\n reflectIdPrefix: false,\n };\n }\n if (propDef === \"object\" /* NormalizedPropertyType.Object */ || propDef === Object) {\n return {\n type: \"object\" /* NormalizedPropertyType.Object */,\n optionalTypes: null,\n value: null,\n default: undefined,\n observer: null,\n comparer: null,\n reflectIdPrefix: false,\n };\n }\n if (propDef === \"array\" /* NormalizedPropertyType.Array */ || propDef === Array) {\n return {\n type: \"array\" /* NormalizedPropertyType.Array */,\n optionalTypes: null,\n value: [],\n default: undefined,\n observer: null,\n comparer: null,\n reflectIdPrefix: false,\n };\n }\n if (propDef === \"function\" /* NormalizedPropertyType.Function */ || propDef === Function) {\n return {\n type: \"function\" /* NormalizedPropertyType.Function */,\n optionalTypes: null,\n value() {\n /* empty */\n },\n default: undefined,\n observer: null,\n comparer: null,\n reflectIdPrefix: false,\n };\n }\n if (propDef === \"any\" /* NormalizedPropertyType.Any */ || propDef === null || propDef === undefined) {\n return {\n type: \"any\" /* NormalizedPropertyType.Any */,\n optionalTypes: null,\n value: null,\n default: undefined,\n observer: null,\n comparer: null,\n reflectIdPrefix: false,\n };\n }\n return null;\n};\nexport const normalizePropertyType = (t) => {\n if (t === \"string\" /* NormalizedPropertyType.String */ || t === String) {\n return \"string\" /* NormalizedPropertyType.String */;\n }\n if (t === \"number\" /* NormalizedPropertyType.Number */ || t === Number) {\n return \"number\" /* NormalizedPropertyType.Number */;\n }\n if (t === \"boolean\" /* NormalizedPropertyType.Boolean */ || t === Boolean) {\n return \"boolean\" /* NormalizedPropertyType.Boolean */;\n }\n if (t === \"object\" /* NormalizedPropertyType.Object */ || t === Object) {\n return \"object\" /* NormalizedPropertyType.Object */;\n }\n if (t === \"array\" /* NormalizedPropertyType.Array */ || t === Array) {\n return \"array\" /* NormalizedPropertyType.Array */;\n }\n if (t === \"function\" /* NormalizedPropertyType.Function */ || t === Function) {\n return \"function\" /* NormalizedPropertyType.Function */;\n }\n if (t === \"any\" /* NormalizedPropertyType.Any */ || t === null || t === undefined) {\n return \"any\" /* NormalizedPropertyType.Any */;\n }\n return \"invalid\" /* NormalizedPropertyType.Invalid */;\n};\nexport const convertValueToType = (value, propName, prop, component) => {\n const type = prop.type;\n const defaultFn = prop.default === undefined\n ? undefined\n : () => safeCallback(`Property \"${propName}\" Default`, prop.default, null, [], component || undefined);\n // try match optional types\n const optionalTypes = prop.optionalTypes;\n if (optionalTypes) {\n for (let i = 0; i < optionalTypes.length; i += 1) {\n if (matchTypeWithValue(optionalTypes[i], value)) {\n return value;\n }\n }\n }\n // for string\n if (type === \"string\" /* NormalizedPropertyType.String */) {\n if (value === null || value === undefined) {\n triggerWarning(`property \"${propName}\" received type-incompatible value: expected <String> but get null value. Used default value instead.`);\n return defaultFn === undefined ? '' : defaultFn();\n }\n if (typeof value === 'object') {\n triggerWarning(`property \"${propName}\" received type-incompatible value: expected <String> but got object-typed value. Force converted.`);\n }\n return String(value);\n }\n // for number\n if (type === \"number\" /* NormalizedPropertyType.Number */) {\n // eslint-disable-next-line no-restricted-globals\n if (isFinite(value))\n return Number(value);\n if (typeof value === 'number') {\n triggerWarning(`property \"${propName}\" received type-incompatible value: expected <Number> but got NaN or Infinity. Used default value instead.`);\n }\n else {\n triggerWarning(`property \"${propName}\" received type-incompatible value: expected <Number> but got non-number value. Used default value instead.`);\n }\n return defaultFn === undefined ? 0 : defaultFn();\n }\n // for boolean\n if (type === \"boolean\" /* NormalizedPropertyType.Boolean */) {\n return !!value;\n }\n // for array\n if (type === \"array\" /* NormalizedPropertyType.Array */) {\n if (Array.isArray(value))\n return value;\n triggerWarning(`property \"${propName}\" received type-incompatible value: expected <Array> but got non-array value. Used default value instead.`);\n return defaultFn === undefined ? [] : defaultFn();\n }\n // for object\n if (type === \"object\" /* NormalizedPropertyType.Object */) {\n if (typeof value === 'object')\n return value;\n triggerWarning(`property \"${propName}\" received type-incompatible value: expected <Object> but got non-object value. Used default value instead.`);\n return defaultFn === undefined ? null : defaultFn();\n }\n // for function\n if (type === \"function\" /* NormalizedPropertyType.Function */) {\n if (typeof value === 'function')\n return value;\n triggerWarning(`property \"${propName}\" received type-incompatible value: expected <Function> but got non-function value. Used default value instead.`);\n // eslint-disable-next-line func-names\n return defaultFn === undefined\n ? function () {\n /* empty */\n }\n : defaultFn();\n }\n // for any-typed, just return the value and avoid undefined\n if (value === undefined)\n return defaultFn === undefined ? null : defaultFn();\n return value;\n};\nexport const matchTypeWithValue = (type, value) => {\n if (type === \"string\" /* NormalizedPropertyType.String */) {\n if (typeof value !== 'string')\n return false;\n }\n else if (type === \"number\" /* NormalizedPropertyType.Number */) {\n if (!Number.isFinite(value))\n return false;\n }\n else if (type === \"boolean\" /* NormalizedPropertyType.Boolean */) {\n if (typeof value !== 'boolean')\n return false;\n }\n else if (type === \"object\" /* NormalizedPropertyType.Object */) {\n if (typeof value !== 'object' || Array.isArray(value))\n return false;\n }\n else if (type === \"array\" /* NormalizedPropertyType.Array */) {\n if (typeof value !== 'object' || !Array.isArray(value))\n return false;\n }\n else if (type === \"function\" /* NormalizedPropertyType.Function */) {\n if (typeof value !== 'function')\n return false;\n }\n else if (value === undefined) {\n return false;\n }\n return true;\n};\nexport var DeepCopyStrategy;\n(function (DeepCopyStrategy) {\n DeepCopyStrategy[DeepCopyStrategy[\"None\"] = 0] = \"None\";\n DeepCopyStrategy[DeepCopyStrategy[\"Simple\"] = 1] = \"Simple\";\n DeepCopyStrategy[DeepCopyStrategy[\"SimpleWithRecursion\"] = 2] = \"SimpleWithRecursion\";\n})(DeepCopyStrategy || (DeepCopyStrategy = {}));\nexport class DataGroupObserverTree {\n constructor(propFields) {\n this.observerTree = { sub: {} };\n this.observers = [];\n this.propFields = propFields;\n }\n cloneSub() {\n const ret = new DataGroupObserverTree(this.propFields);\n if (this.observers.length > 0) {\n ret.observerTree = simpleDeepCopy(this.observerTree);\n ret.observers = this.observers.slice();\n }\n return ret;\n }\n addObserver(func, dataPath) {\n const id = this.observers.length;\n this.observers.push({\n path: dataPath,\n f: func,\n });\n for (let i = 0; i < dataPath.length; i += 1) {\n const singlePath = dataPath[i];\n let cur = this.observerTree;\n let wildcard = false;\n for (let j = 0; j < singlePath.length; j += 1) {\n const pathSlice = singlePath[j];\n if (pathSlice === '**') {\n wildcard = true;\n break;\n }\n if (!cur.sub[pathSlice])\n cur.sub[pathSlice] = { sub: {} };\n cur = cur.sub[pathSlice];\n }\n if (wildcard) {\n if (!cur.wildcard)\n cur.wildcard = [id];\n else\n cur.wildcard.push(id);\n }\n else {\n if (!cur.listener)\n cur.listener = [id];\n else\n cur.listener.push(id);\n }\n }\n }\n}\nconst callObserver = (comp, data, path, f) => {\n const args = new Array(path.length);\n for (let i = 0; i < path.length; i += 1) {\n const singlePath = path[i];\n let cur = data;\n for (let j = 0; j < singlePath.length; j += 1) {\n const slice = singlePath[j];\n if (slice === '**')\n break;\n if (typeof cur === 'object' && cur !== null) {\n cur = cur[slice];\n }\n else {\n cur = undefined;\n break;\n }\n }\n args[i] = cur;\n }\n safeCallback('Data Observer', f, comp.getMethodCaller(), args, comp || undefined);\n};\nconst dfsMarkTriggerBitOnPath = (node, observerStatus) => {\n if (node.listener) {\n for (let i = 0; i < node.listener.length; i += 1) {\n const observerId = node.listener[i];\n observerStatus[observerId] = true;\n }\n }\n if (node.wildcard) {\n for (let i = 0; i < node.wildcard.length; i += 1) {\n const observerId = node.wildcard[i];\n observerStatus[observerId] = true;\n }\n }\n const keys = Object.keys(node.sub);\n for (let i = 0; i < keys.length; i += 1) {\n const k = keys[i];\n dfsMarkTriggerBitOnPath(node.sub[k], observerStatus);\n }\n};\nconst markTriggerBitOnPath = (root, observerStatus, singlePath) => {\n let cur = root;\n let found = true;\n for (let i = 0; i < singlePath.length; i += 1) {\n const slice = singlePath[i];\n if (cur.wildcard) {\n const arr = cur.wildcard;\n for (let i = 0; i < arr.length; i += 1) {\n const observerId = arr[i];\n observerStatus[observerId] = true;\n }\n }\n if (!hasOwnProperty.call(cur.sub, slice)) {\n found = false;\n break;\n }\n cur = cur.sub[slice];\n }\n if (found)\n dfsMarkTriggerBitOnPath(cur, observerStatus);\n};\nconst triggerAndCleanTriggerBit = (observers, observerStatus, comp, data) => {\n for (let i = 0; i < observers.length; i += 1) {\n const { path, f } = observers[i];\n const status = observerStatus[i];\n if (status) {\n observerStatus[i] = false;\n if (comp)\n callObserver(comp, data, path, f);\n }\n }\n};\nexport const getDeepCopyStrategy = (level) => {\n if (level === DeepCopyKind.Simple)\n return 1 /* DeepCopyStrategy.Simple */;\n if (level === DeepCopyKind.SimpleWithRecursion)\n return 2 /* DeepCopyStrategy.SimpleWithRecursion */;\n return 0 /* DeepCopyStrategy.None */;\n};\n/** A data wrapper for data operations such as `setData` */\nexport class DataGroup {\n _$generateInnerData(data) {\n const pureDataPattern = this._$pureDataPattern;\n const dataDeepCopy = this._$dataDeepCopy;\n if (pureDataPattern || dataDeepCopy !== 0 /* DeepCopyStrategy.None */) {\n const innerData = {};\n const keys = Object.keys(data);\n for (let i = 0; i < keys.length; i += 1) {\n const k = keys[i];\n const v = data[k];\n if (pureDataPattern && pureDataPattern.test(k))\n continue;\n if (dataDeepCopy === 0 /* DeepCopyStrategy.None */) {\n innerData[k] = v;\n }\n else if (dataDeepCopy === 2 /* DeepCopyStrategy.SimpleWithRecursion */) {\n innerData[k] = deepCopy(v, true);\n }\n else {\n innerData[k] = simpleDeepCopy(v);\n }\n }\n return innerData;\n }\n return null;\n }\n constructor(associatedComponent, data, pureDataPattern, dataDeepCopy, propertyPassingDeepCopy, reflectToAttributes, observerTree) {\n this._$modelBindingListener = null;\n this._$pendingChanges = [];\n this._$doingUpdates = null;\n this._$comp = associatedComponent;\n this.data = data;\n this._$pureDataPattern = pureDataPattern;\n this._$dataDeepCopy = dataDeepCopy;\n this._$propertyPassingDeepCopy = propertyPassingDeepCopy;\n this._$reflectToAttributes = reflectToAttributes && !!associatedComponent;\n this._$propFields = observerTree.propFields;\n this._$observerTree = observerTree.observerTree;\n this._$observers = observerTree.observers;\n this._$observerStatus = new Array(observerTree.observers.length);\n this.innerData = this._$generateInnerData(data);\n }\n /** Create a simple data group */\n static create(data) {\n return new DataGroup(null, data, null, 0 /* DeepCopyStrategy.None */, 0 /* DeepCopyStrategy.None */, false, new DataGroupObserverTree({}));\n }\n /** Set a callback for every grouped update */\n setUpdateListener(updateListener) {\n this._$updateListener = updateListener;\n }\n /** Replace the underlying data */\n replaceWholeData(data) {\n this.data = data;\n this.innerData = this._$generateInnerData(data);\n }\n /** Add a new common data change to queue */\n replaceDataOnPath(path, newData) {\n this._$pendingChanges.push([path, newData, undefined, undefined]);\n }\n /** Add a new array splice operation to queue */\n spliceArrayDataOnPath(path, index, del, inserts) {\n if (!Array.isArray(inserts)) {\n triggerWarning(`The splice insertion must be a string (on path \"${path.join('.')}\"). The change is ignored.`);\n return;\n }\n this._$pendingChanges.push([path, inserts, index !== null && index !== void 0 ? index : -1, del || 0]);\n }\n /**\n * Add a new property change to queue\n *\n * (Generally designed for template engines.)\n * If the `propName` is a property,\n * the `newData` will be deep-copied according to the `propertyPassingDeepCopy` configuration.\n * Otherwise, it returns false.\n */\n replaceProperty(propName, newData) {\n let data = newData;\n const prop = this._$propFields[propName];\n if (!prop)\n return false;\n if (this._$propertyPassingDeepCopy !== 0 /* DeepCopyStrategy.None */) {\n if (this._$propertyPassingDeepCopy === 2 /* DeepCopyStrategy.SimpleWithRecursion */) {\n data = deepCopy(newData, true);\n }\n else {\n data = simpleDeepCopy(newData);\n }\n }\n this._$pendingChanges.push([[propName], data, true, undefined]);\n return true;\n }\n /** Discard changes in queue and generate a new queue with specified changes */\n setChanges(changes) {\n this._$pendingChanges = changes;\n }\n /** Get the data change queue */\n getChanges() {\n return this._$pendingChanges;\n }\n /**\n * Set a callback when a specified property changes\n *\n * (Generally designed for template engines.)\n */\n setModelBindingListener(propName, listener) {\n if (this._$modelBindingListener) {\n this._$modelBindingListener[propName] = listener;\n }\n else {\n const map = (this._$modelBindingListener = Object.create(null));\n map[propName] = listener;\n }\n }\n /** Apply all changes in queue */\n applyDataUpdates(skipModelListener = false) {\n var _a;\n const propFields = this._$propFields;\n const comp = this._$comp;\n const pureDataPattern = this._$pureDataPattern;\n const dataDeepCopy = this._$dataDeepCopy;\n // handling chained updates if observers are used\n const isChainedUpdates = !!this._$doingUpdates;\n let combinedChanges;\n let propChanges;\n if (this._$observers.length > 0) {\n if (this._$doingUpdates) {\n combinedChanges = this._$doingUpdates.combined;\n propChanges = this._$doingUpdates.prop;\n }\n else {\n this._$doingUpdates = {\n prop: [],\n combined: [],\n count: 0,\n };\n combinedChanges = this._$doingUpdates.combined;\n propChanges = this._$doingUpdates.prop;\n }\n }\n else {\n combinedChanges = [];\n propChanges = [];\n }\n // find all changes\n const changes = this._$pendingChanges;\n this._$pendingChanges = [];\n // apply changes and collect changing information\n for (let i = 0; i < changes.length; i += 1) {\n const change = changes[i];\n const [path, newData, maybeSpliceIndex, maybeSpliceDel] = change;\n const isSplice = maybeSpliceDel !== undefined;\n const propName = String(path[0]);\n const excluded = pureDataPattern ? pureDataPattern.test(propName) : false;\n const prop = propFields[propName];\n let changed = true;\n if (prop && path.length === 1) {\n // do update for 1-level fields\n const oldData = this.data[propName];\n let normalizedSpliceIndex;\n let filteredData;\n if (isSplice) {\n if (Array.isArray(oldData)) {\n const c = change;\n const spliceIndex = maybeSpliceIndex;\n normalizedSpliceIndex =\n spliceIndex >= 0 && spliceIndex < oldData.length ? spliceIndex : oldData.length;\n c[2] = normalizedSpliceIndex;\n oldData.splice(normalizedSpliceIndex, maybeSpliceDel, ...newData);\n }\n else {\n triggerWarning(`An array splice change cannot be applied to a non-array value (on path \"${path.join('.')}\"). The change is ignored.`);\n }\n filteredData = oldData;\n }\n else {\n filteredData = convertValueToType(newData, propName, prop, this._$comp);\n }\n if (!excluded) {\n if (this.innerData) {\n let innerNewData;\n if (dataDeepCopy === 0 /* DeepCopyStrategy.None */) {\n change[1] = innerNewData = filteredData;\n }\n else if (normalizedSpliceIndex !== undefined) {\n innerNewData = this.innerData[propName];\n let inserts;\n if (dataDeepCopy === 2 /* DeepCopyStrategy.SimpleWithRecursion */) {\n change[1] = inserts = deepCopy(newData, true);\n }\n else {\n change[1] = inserts = simpleDeepCopy(newData);\n }\n ;\n innerNewData.splice(normalizedSpliceIndex, maybeSpliceDel, ...inserts);\n }\n else if (dataDeepCopy === 2 /* DeepCopyStrategy.SimpleWithRecursion */) {\n change[1] = innerNewData = deepCopy(filteredData, true);\n }\n else {\n change[1] = innerNewData = simpleDeepCopy(filteredData);\n }\n this.innerData[propName] = innerNewData;\n }\n }\n ;\n this.data[propName] = filteredData;\n if (this._$reflectToAttributes) {\n const be = comp.getBackendElement();\n if (be) {\n let attrValue = filteredData;\n if (prop.reflectIdPrefix) {\n const owner = comp.ownerShadowRoot;\n if (owner) {\n const idPrefix = owner.getHostNode()._$idPrefix;\n if (idPrefix) {\n attrValue = `${idPrefix}--${filteredData}`;\n }\n }\n }\n const attrName = propName.replace(/[A-Z]/g, (c) => `-${c.toLowerCase()}`);\n const type = typeof attrValue;\n if (type === 'boolean') {\n if (filteredData)\n be.setAttribute(attrName, '');\n else\n be.removeAttribute(attrName);\n }\n else if (type === 'object') {\n be.setAttribute(attrName, JSON.stringify(attrValue));\n }\n else {\n be.setAttribute(attrName, attrValue);\n }\n }\n }\n let comparerResult;\n if (!isSplice && maybeSpliceIndex === true) {\n if (prop.comparer) {\n change[2] = undefined;\n comparerResult = !!safeCallback('Property Comparer', prop.comparer, comp, [newData, oldData], comp === null || comp === void 0 ? void 0 : comp.general());\n }\n else {\n comparerResult = oldData !== filteredData;\n }\n changed = comparerResult;\n }\n else {\n comparerResult = oldData !== filteredData;\n }\n if (!excluded && comparerResult) {\n propChanges.push({\n propName,\n prop,\n oldValue: oldData,\n newValue: filteredData,\n skipModelListener,\n });\n }\n }\n else {\n // do update for multi-level fields\n let curData = this.data;\n let curSlice = propName;\n for (let i = 1; i < path.length; i += 1) {\n const nextSlice = path[i];\n if (Number.isFinite(nextSlice)) {\n if (!hasOwnProperty.call(curData, curSlice) ||\n !Array.isArray(curData[curSlice])) {\n ;\n curData[curSlice] = [];\n }\n }\n else {\n if (!hasOwnProperty.call(curData, curSlice) ||\n curData[curSlice] === null ||\n typeof curData[curSlice] !== 'object' ||\n Array.isArray(curData[curSlice])) {\n ;\n curData[curSlice] = {};\n }\n }\n curData = curData[curSlice];\n curSlice = nextSlice;\n }\n let normalizedSpliceIndex;\n if (isSplice) {\n const oldData = curData[curSlice];\n if (Array.isArray(oldData)) {\n const c = change;\n const spliceIndex = maybeSpliceIndex;\n normalizedSpliceIndex =\n spliceIndex >= 0 && spliceIndex < oldData.length ? spliceIndex : oldData.length;\n c[2] = normalizedSpliceIndex;\n oldData.splice(normalizedSpliceIndex, maybeSpliceDel, ...newData);\n }\n else {\n triggerWarning(`An array splice change cannot be applied to a non-array value (on path \"${path.join('.')}\"). The change is ignored.`);\n }\n }\n else {\n ;\n curData[curSlice] = newData;\n }\n if (!excluded && this.innerData) {\n curData = this.innerData;\n curSlice = propName;\n for (let i = 1; i < path.length; i += 1) {\n const nextSlice = path[i];\n if (Number.isFinite(nextSlice)) {\n if (!hasOwnProperty.call(curData, curSlice) ||\n !Array.isArray(curData[curSlice])) {\n ;\n curData[curSlice] = [];\n }\n }\n else {\n if (!hasOwnProperty.call(curData, curSlice) ||\n curData[curSlice] === null ||\n typeof curData[curSlice] !== 'object' ||\n Array.isArray(curData[curSlice])) {\n ;\n curData[curSlice] = {};\n }\n }\n curData = curData[curSlice];\n curSlice = nextSlice;\n }\n let innerNewData;\n if (dataDeepCopy === 0 /* DeepCopyStrategy.None */) {\n change[1] = innerNewData = newData;\n }\n else if (normalizedSpliceIndex !== undefined) {\n innerNewData = curData[curSlice];\n let inserts;\n if (dataDeepCopy === 2 /* DeepCopyStrategy.SimpleWithRecursion */) {\n change[1] = inserts = deepCopy(newData, true);\n }\n else {\n change[1] = inserts = simpleDeepCopy(newData);\n }\n ;\n innerNewData.splice(normalizedSpliceIndex, maybeSpliceDel, ...inserts);\n }\n else if (dataDeepCopy === 2 /* DeepCopyStrategy.SimpleWithRecursion */) {\n change[1] = innerNewData = deepCopy(newData, true);\n }\n else {\n change[1] = innerNewData = simpleDeepCopy(newData);\n }\n ;\n curData[curSlice] = innerNewData;\n }\n if (!excluded && prop) {\n // NOTE for prop observers, oldVal will be undefined when doing a sub-path update\n propChanges.push({\n propName,\n prop,\n oldValue: undefined,\n newValue: newData,\n skipModelListener: skipModelListener || false,\n });\n }\n }\n markTriggerBitOnPath(this._$observerTree, this._$observerStatus, path);\n if (!excluded && changed) {\n combinedChanges.push(change);\n }\n if (this._$doingUpdates) {\n this._$doingUpdates.count += 1;\n }\n }\n // trigger data observers\n if (isChainedUpdates)\n return;\n if (this._$doingUpdates) {\n let changesCount;\n do {\n changesCount = this._$doingUpdates.count;\n triggerAndCleanTriggerBit(this._$observers, this._$observerStatus, comp, this.data);\n } while (changesCount !== this._$doingUpdates.count);\n this._$doingUpdates = null;\n }\n // tell template engine what changed\n (_a = this._$updateListener) === null || _a === void 0 ? void 0 : _a.call(this, this.innerData || this.data, combinedChanges);\n // trigger prop observers (to simulating legacy behaviors)\n if (comp) {\n for (let i = 0; i < propChanges.length; i += 1) {\n const { propName, prop, oldValue, newValue, skipModelListener } = propChanges[i];\n if (!skipModelListener && this._$modelBindingListener) {\n const listener = this._$modelBindingListener[propName];\n if (listener)\n listener(newValue);\n }\n if (prop.observer) {\n safeCallback('Property Observer', prop.observer, comp.getMethodCaller(), [newValue, oldValue], comp);\n }\n if (comp._$mutationObserverTarget) {\n MutationObserverTarget.callAttrObservers(comp, {\n type: 'properties',\n target: comp,\n propertyName: propName,\n });\n }\n }\n }\n }\n}\n//# sourceMappingURL=data_proxy.js.map","import { addTimelineEvent, performanceMeasureEnd, performanceMeasureStart } from './devtool';\nimport { FuncArrWithMeta } from './func_arr';\nimport { ENV } from './global_options';\nimport { isComponent, isShadowRoot } from './type_symbol';\n/**\n * Event bubbling control\n */\nexport var EventBubbleStatus;\n(function (EventBubbleStatus) {\n EventBubbleStatus[EventBubbleStatus[\"Normal\"] = 0] = \"Normal\";\n EventBubbleStatus[EventBubbleStatus[\"NoDefault\"] = 1] = \"NoDefault\";\n})(EventBubbleStatus || (EventBubbleStatus = {}));\nlet relativeTimeStamp = Date.now();\nlet prevTimeStamp = relativeTimeStamp;\nconst getCurrentTimeStamp = () => {\n const ts = Date.now();\n if (ts < prevTimeStamp) {\n relativeTimeStamp += ts - prevTimeStamp;\n }\n prevTimeStamp = ts;\n return ts - relativeTimeStamp;\n};\nexport var MutLevel;\n(function (MutLevel) {\n MutLevel[MutLevel[\"None\"] = 0] = \"None\";\n MutLevel[MutLevel[\"Mut\"] = 1] = \"Mut\";\n MutLevel[MutLevel[\"Final\"] = 2] = \"Final\";\n})(MutLevel || (MutLevel = {}));\nexport var FinalChanged;\n(function (FinalChanged) {\n FinalChanged[FinalChanged[\"NotChanged\"] = 0] = \"NotChanged\";\n FinalChanged[FinalChanged[\"Failed\"] = 1] = \"Failed\";\n FinalChanged[FinalChanged[\"None\"] = 2] = \"None\";\n FinalChanged[FinalChanged[\"Final\"] = 3] = \"Final\";\n FinalChanged[FinalChanged[\"Mut\"] = 4] = \"Mut\";\n})(FinalChanged || (FinalChanged = {}));\n/** The target of an event */\nexport class EventTarget {\n constructor() {\n this.listeners = Object.create(null);\n this.captureListeners = null;\n }\n addListener(name, func, options = {}) {\n // eslint-disable-next-line no-nested-ternary\n const mutLevel = options.final ? 2 /* MutLevel.Final */ : options.mutated ? 1 /* MutLevel.Mut */ : 0 /* MutLevel.None */;\n let listeners;\n if (options.capture || options.useCapture) {\n if (this.captureListeners) {\n listeners = this.captureListeners;\n }\n else {\n listeners = Object.create(null);\n this.captureListeners = listeners;\n }\n }\n else {\n listeners = this.listeners;\n }\n let efa;\n let initialized;\n if (listeners[name]) {\n initialized = true;\n efa = listeners[name];\n }\n else {\n initialized = false;\n efa = listeners[name] = {\n mutCount: 0,\n finalCount: 0,\n funcArr: new FuncArrWithMeta('listener'),\n };\n }\n efa.funcArr.add(func, mutLevel);\n if (mutLevel === 2 /* MutLevel.Final */) {\n efa.finalCount += 1;\n return initialized && efa.finalCount !== 1 ? 0 /* FinalChanged.NotChanged */ : 3 /* FinalChanged.Final */;\n }\n if (mutLevel === 1 /* MutLevel.Mut */) {\n efa.mutCount += 1;\n return initialized && !(efa.mutCount === 1 && efa.finalCount === 0)\n ? 0 /* FinalChanged.NotChanged */\n : 4 /* FinalChanged.Mut */;\n }\n return initialized ? 0 /* FinalChanged.NotChanged */ : 2 /* FinalChanged.None */;\n }\n removeListener(name, func, options = {}) {\n const listeners = options.capture || options.useCapture ? this.captureListeners : this.listeners;\n if (!listeners)\n return 1 /* FinalChanged.Failed */;\n const efa = listeners[name];\n if (!efa)\n return 1 /* FinalChanged.Failed */;\n const mutLevel = efa.funcArr.remove(func);\n if (mutLevel === null)\n return 1 /* FinalChanged.Failed */;\n if (mutLevel === 2 /* MutLevel.Final */) {\n efa.finalCount -= 1;\n // eslint-disable-next-line no-nested-ternary\n return efa.finalCount !== 0\n ? 0 /* FinalChanged.NotChanged */\n : efa.mutCount > 0\n ? 4 /* FinalChanged.Mut */\n : 2 /* FinalChanged.None */;\n }\n if (mutLevel === 1 /* MutLevel.Mut */) {\n efa.mutCount -= 1;\n return efa.mutCount !== 0 || efa.finalCount !== 0\n ? 0 /* FinalChanged.NotChanged */\n : 2 /* FinalChanged.None */;\n }\n return 0 /* FinalChanged.NotChanged */;\n }\n}\nexport class Event {\n constructor(name, detail, options = {}) {\n const ts = getCurrentTimeStamp();\n this._$eventName = this.type = name;\n this.timeStamp = ts;\n this.detail = detail;\n this.bubbles = options.bubbles || false;\n this.composed = options.composed || false;\n this._$capturePhase = options.capturePhase || false;\n this._$eventBubblingControl = {\n stopped: false,\n mutated: false,\n noDefault: false,\n };\n this._$originalEvent = options.originalEvent;\n this._$dispatched = false;\n this._$handleListenerReturn = options.handleListenerReturn;\n if (options.extraFields) {\n Object.assign(this, options.extraFields);\n }\n }\n getEventBubbleStatus() {\n if (this._$eventBubblingControl.noDefault)\n return 1 /* EventBubbleStatus.NoDefault */;\n return 0 /* EventBubbleStatus.Normal */;\n }\n wrapShadowedEvent(targetCaller, mark, currentTargetCaller) {\n const ret = Object.create(this);\n ret.target = targetCaller;\n ret.mark = mark;\n ret.currentTarget = currentTargetCaller;\n return ret;\n }\n getEventName() {\n return this._$eventName;\n }\n getOriginalEvent() {\n return this._$originalEvent;\n }\n preventDefault() {\n this._$eventBubblingControl.noDefault = true;\n }\n defaultPrevented() {\n return this._$eventBubblingControl.noDefault;\n }\n stopPropagation() {\n this._$eventBubblingControl.stopped = true;\n }\n propagationStopped() {\n return this._$eventBubblingControl.stopped;\n }\n markMutated() {\n this._$eventBubblingControl.mutated = true;\n }\n mutatedMarked() {\n return this._$eventBubblingControl.mutated;\n }\n listenerReturnHandler() {\n return this._$handleListenerReturn;\n }\n callListener(currentTarget, mark, target, isCapture) {\n const evName = this._$eventName;\n const eventTarget = currentTarget._$eventTarget;\n if (!eventTarget)\n return;\n const listeners = isCapture ? eventTarget.captureListeners : eventTarget.listeners;\n if (!listeners)\n return;\n const efa = listeners[evName];\n if (!efa)\n return;\n const skipMut = this.mutatedMarked();\n // eslint-disable-next-line @typescript-eslint/no-unsafe-assignment\n const targetCaller = isComponent(target) ? target.getMethodCaller() || target : target;\n // eslint-disable-next-line @typescript-eslint/no-unsafe-assignment\n const currentTargetCaller = isComponent(currentTarget)\n ? currentTarget.getMethodCaller() || currentTarget\n : currentTarget;\n const ev = this.wrapShadowedEvent(targetCaller, mark, currentTargetCaller);\n const ret = efa.funcArr.call(currentTargetCaller, [ev], (mulLevel) => !skipMut || mulLevel !== 1 /* MutLevel.Mut */, isComponent(target) ? target : undefined, this._$handleListenerReturn);\n if (ret === false || efa.finalCount > 0) {\n ev.stopPropagation();\n ev.preventDefault();\n }\n else if (efa.mutCount > 0) {\n ev.markMutated();\n }\n }\n dispatch(target, externalTarget) {\n if (this._$dispatched) {\n throw new Error('Event cannot be dispatched twice');\n }\n if (ENV.DEV) {\n addTimelineEvent(this._$eventName, { event: this });\n performanceMeasureStart('event.dispatch');\n }\n this._$dispatched = true;\n const crossShadow = this.composed;\n const bubbles = this.bubbles;\n const inExternalOnly = externalTarget && !crossShadow;\n const eventBubblingControl = this._$eventBubblingControl;\n const forEachBubblePath = (target, f) => {\n const recShadow = (target) => {\n let currentTarget = target;\n const mark = target.collectMarks();\n for (;;) {\n if (f(currentTarget, target, mark) === false)\n return null;\n let next;\n if (crossShadow) {\n if (isShadowRoot(currentTarget))\n return currentTarget.getHostNode();\n if (currentTarget.containingSlot === null)\n return null;\n if (currentTarget.containingSlot) {\n next = recShadow(currentTarget.containingSlot);\n }\n else {\n next = currentTarget.parentNode;\n while (next === null || next === void 0 ? void 0 : next._$inheritSlots) {\n next = next.parentNode;\n }\n }\n }\n else {\n next = currentTarget.parentNode;\n }\n if (!next)\n return null;\n currentTarget = next;\n }\n };\n let cur = target;\n for (;;) {\n const next = recShadow(cur);\n if (!next)\n break;\n cur = next;\n }\n };\n // capture phase\n if (this._$capturePhase && !eventBubblingControl.stopped && !inExternalOnly) {\n const bubblingPath = [];\n forEachBubblePath(target, (currentTarget, target, mark) => {\n bubblingPath.push([currentTarget, target, mark]);\n });\n for (let i = bubblingPath.length - 1; i >= 0; i -= 1) {\n const [currentTarget, target, mark] = bubblingPath[i];\n if (currentTarget._$eventTarget) {\n this.callListener(currentTarget, mark, target, true);\n if (eventBubblingControl.stopped)\n break;\n }\n }\n }\n // bubble phase in external component\n if (!eventBubblingControl.stopped && externalTarget) {\n if (isComponent(target) && target._$external) {\n ;\n target.shadowRoot.handleEvent(externalTarget, this);\n }\n }\n // bubble phase\n if (!eventBubblingControl.stopped && !inExternalOnly) {\n let atTarget = true;\n forEachBubblePath(target, (currentTarget, target, mark) => {\n if (!atTarget && isComponent(currentTarget) && currentTarget._$external) {\n const sr = currentTarget.shadowRoot;\n sr.handleEvent(sr.slot, this);\n }\n atTarget = false;\n if (currentTarget._$eventTarget) {\n this.callListener(currentTarget, mark, target, false);\n }\n return bubbles && !eventBubblingControl.stopped;\n });\n }\n if (ENV.DEV)\n performanceMeasureEnd();\n }\n static dispatchEvent(target, event) {\n return event.dispatch(target);\n }\n static dispatchExternalEvent(component, target, event) {\n return event.dispatch(component, target);\n }\n static triggerEvent(target, name, detail, options) {\n const ev = new Event(name, detail, options);\n Event.dispatchEvent(target, ev);\n }\n static triggerExternalEvent(component, target, name, detail, options) {\n const ev = new Event(name, detail, options);\n Event.dispatchExternalEvent(component, target, ev);\n }\n}\n//# sourceMappingURL=event.js.map","import { isComponent, isElement, isShadowRoot, isVirtualNode } from './type_symbol';\nvar SegmentRelation;\n(function (SegmentRelation) {\n SegmentRelation[SegmentRelation[\"Child\"] = 0] = \"Child\";\n SegmentRelation[SegmentRelation[\"Descendant\"] = 1] = \"Descendant\";\n SegmentRelation[SegmentRelation[\"CrossShadowDescendant\"] = 2] = \"CrossShadowDescendant\";\n})(SegmentRelation || (SegmentRelation = {}));\n// eslint-disable-next-line arrow-body-style\nconst getOwnerSpace = (node) => {\n var _a;\n return (_a = node.ownerShadowRoot) === null || _a === void 0 ? void 0 : _a.getHostNode().getRootBehavior().ownerSpace;\n};\n/** A parsed selector that can be used in selector queries */\nexport class ParsedSelector {\n static _$parseSegment(str, relation) {\n const matches = /^(#[_a-zA-Z][-_a-zA-Z0-9:]*|)((?:\\.-?[_a-zA-Z][-_a-zA-Z0-9]*)+|)$/.exec(str);\n if (!matches)\n return null;\n const id = matches[1].slice(1);\n const classes = matches[2].split('.');\n classes.shift();\n if (!id && !classes.length)\n return null;\n return {\n id,\n classes,\n relation,\n };\n }\n constructor(str) {\n this.unions = [];\n const union = String(str || '').split(',');\n for (let i = 0; i < union.length; i += 1) {\n const segments = union[i].split(/( |\\t|>+)/g);\n const parsedSegs = [];\n let relation = 1 /* SegmentRelation.Descendant */;\n let j = 0;\n for (; j < segments.length; j += 1) {\n const seg = segments[j];\n if (!seg || seg === ' ' || seg === '\\t' || seg === '>>')\n continue;\n if (seg[0] === '>') {\n if (relation !== 1 /* SegmentRelation.Descendant */)\n break;\n if (seg.length === 3) {\n relation = 2 /* SegmentRelation.CrossShadowDescendant */;\n }\n else {\n relation = 0 /* SegmentRelation.Child */;\n }\n continue;\n }\n const parsedSeg = ParsedSelector._$parseSegment(seg, relation);\n relation = 1 /* SegmentRelation.Descendant */;\n if (!parsedSeg)\n break;\n parsedSegs.push(parsedSeg);\n }\n if (j !== segments.length)\n continue;\n if (parsedSegs.length)\n this.unions.push(parsedSegs);\n }\n }\n /** Whether the selector is empty */\n isEmpty() {\n return this.unions.length === 0;\n }\n static _$testSelectorSegment(root, ownerSpace, node, segments, offset, relation) {\n var _a;\n if (node === root)\n return false;\n const segment = segments[offset];\n // test whether current node matches\n let match = true;\n if (getOwnerSpace(node) !== ownerSpace)\n match = false;\n else if (segment.id && segment.id !== node.id)\n match = false;\n const classes = segment.classes;\n for (let i = 0; match && i < classes.length; i += 1) {\n if (!((_a = node.classList) === null || _a === void 0 ? void 0 : _a.contains(classes[i])))\n match = false;\n }\n if (!match && relation === 0 /* SegmentRelation.Child */)\n return false;\n let nextNode = node;\n if (match && offset === 0) {\n // if matches the first segment, check whether root is in the same shadow tree\n if (root === null)\n return true;\n for (nextNode = nextNode.parentNode; nextNode; nextNode = nextNode.parentNode) {\n if (nextNode === root)\n return true;\n }\n if (relation !== 2 /* SegmentRelation.CrossShadowDescendant */)\n return false;\n nextNode = node;\n match = false;\n }\n // check whether ancestors matches\n const nextRelation = match ? segment.relation : relation;\n do {\n if (!nextNode.parentNode) {\n if (nextRelation === 2 /* SegmentRelation.CrossShadowDescendant */) {\n nextNode = isShadowRoot(nextNode) ? nextNode.getHostNode() : null;\n }\n else if (relation === 2 /* SegmentRelation.CrossShadowDescendant */) {\n match = false;\n nextNode = isShadowRoot(nextNode) ? nextNode.getHostNode() : null;\n }\n else {\n nextNode = null;\n }\n }\n else {\n nextNode = nextNode.parentNode;\n }\n if (nextNode === root)\n nextNode = null;\n } while (isVirtualNode(nextNode));\n if (!nextNode)\n return false;\n if (match) {\n // if matches, try match ancestors\n const matchRes = ParsedSelector._$testSelectorSegment(root, ownerSpace, nextNode, segments, offset - 1, nextRelation);\n if (matchRes)\n return true;\n if (relation !== 2 /* SegmentRelation.CrossShadowDescendant */)\n return false;\n }\n return ParsedSelector._$testSelectorSegment(root, ownerSpace, nextNode, segments, offset, relation);\n }\n /**\n * Test whether the specified node matches the selector\n *\n * If `root` is specified, than the selector is match inside this subtree;\n * otherwise it match in the whole tree.\n */\n testSelector(root, node) {\n if (isVirtualNode(node))\n return false;\n const union = this.unions;\n let ownerSpace;\n if (root !== null) {\n ownerSpace = getOwnerSpace(root) || getOwnerSpace(node);\n }\n else {\n ownerSpace = getOwnerSpace(node);\n }\n if (ownerSpace === undefined)\n return false;\n for (let i = 0; i < union.length; i += 1) {\n const segments = union[i];\n const matched = ParsedSelector._$testSelectorSegment(root, ownerSpace, node, segments, segments.length - 1, 0 /* SegmentRelation.Child */);\n if (matched)\n return true;\n }\n return false;\n }\n /** Queries an element or elements that matches this selector */\n query(root, findOne) {\n const ret = [];\n const rec = (root, node, findOne) => {\n if (this.testSelector(root, node)) {\n if (findOne)\n return node;\n ret.push(node);\n }\n if (isComponent(node)) {\n const shadowRoot = node.getShadowRoot();\n if (shadowRoot) {\n const r = rec(root, shadowRoot, findOne);\n if (r && findOne) {\n return r;\n }\n }\n }\n const children = node.childNodes;\n for (let i = 0; i < children.length; i += 1) {\n const child = children[i];\n if (isElement(child)) {\n const r = rec(root, child, findOne);\n if (r && findOne) {\n return r;\n }\n }\n }\n return null;\n };\n const r = rec(root, root, findOne);\n if (findOne)\n return r;\n return ret;\n }\n}\n//# sourceMappingURL=selector.js.map","import { BM, } from './backend';\nimport { performanceMeasureEnd, performanceMeasureStart } from './devtool';\nimport { Event, EventTarget, } from './event';\nimport { ENV, globalOptions } from './global_options';\nimport { MutationObserverTarget } from './mutation_observer';\nimport { ParsedSelector } from './selector';\nimport { ELEMENT_SYMBOL, isComponent, isElement, isNativeNode, isShadowRoot, isVirtualNode, } from './type_symbol';\n/**\n * The \"style\" attribute and class list segments\n *\n * This allows different modules set the \"style\" attribute or the class list of an element\n * without overriding each other.\n * The final value is the concat of all segments.\n * When calling `setNodeStyle` or `setNodeClass` on an element,\n * a segment can be specified.\n */\nexport var StyleSegmentIndex;\n(function (StyleSegmentIndex) {\n /** The main style segment, generally managed by the template engine (or manually set) */\n StyleSegmentIndex[StyleSegmentIndex[\"MAIN\"] = 0] = \"MAIN\";\n /** The template style segment, preserved for template engine */\n StyleSegmentIndex[StyleSegmentIndex[\"TEMPLATE_EXTRA\"] = 1] = \"TEMPLATE_EXTRA\";\n /** The animation style segment, preserved for temporary transition */\n StyleSegmentIndex[StyleSegmentIndex[\"ANIMATION_EXTRA\"] = 2] = \"ANIMATION_EXTRA\";\n /** The temporary style segment, preserved for high priority styles */\n StyleSegmentIndex[StyleSegmentIndex[\"TEMP_EXTRA\"] = 3] = \"TEMP_EXTRA\";\n})(StyleSegmentIndex || (StyleSegmentIndex = {}));\nconst DESTROYED_SHADOW_BACKEND_CONTEXT = { mode: 1 /* BackendMode.Shadow */, destroyed: true };\nconst DESTROYED_COMPOSED_BACKEND_CONTEXT = { mode: 2 /* BackendMode.Composed */, destroyed: true };\nconst DESTROYED_DOMLIKE_BACKEND_CONTEXT = { mode: 3 /* BackendMode.Domlike */, destroyed: true };\n/**\n * A general element\n *\n * An element can be a `NativeNode` , a `Component` , or a `VirtualNode` .\n */\nexport class Element {\n /* istanbul ignore next */\n constructor() {\n throw new Error('Element cannot be constructed directly');\n }\n /* @internal */\n _$initialize(virtual, backendElement, owner, nodeTreeContext) {\n this._$backendElement = backendElement;\n this._$destroyOnDetach = false;\n this._$nodeTreeContext = nodeTreeContext;\n this._$nodeId = '';\n this._$nodeAttributes = null;\n this._$nodeSlot = '';\n this._$slotName = null;\n this._$slotElement = null;\n this._$slotValues = null;\n this._$subtreeSlotStart = null;\n this._$subtreeSlotEnd = null;\n this._$inheritSlots = false;\n this._$placeholderHandlerRemover = undefined;\n this._$virtual = virtual;\n this.dataset = {};\n this._$marks = null;\n this._$attached = false;\n this.classList = null;\n this._$styleSegments = [];\n this.parentNode = null;\n this.parentIndex = -1;\n this.childNodes = [];\n this.slotNodes = undefined;\n this.ownerShadowRoot = owner;\n this._$mutationObserverTarget = null;\n this._$eventTarget = new EventTarget();\n }\n get $$() {\n return this._$backendElement;\n }\n get id() {\n return this._$nodeId;\n }\n set id(x) {\n var _a;\n const newId = String(x);\n if (this._$nodeId === newId)\n return;\n this._$nodeId = newId;\n if (this.ownerShadowRoot) {\n const host = this.ownerShadowRoot.getHostNode();\n this.ownerShadowRoot._$markIdCacheDirty();\n if (host.getComponentOptions().writeIdToDOM) {\n const idPrefix = host._$idPrefix;\n const val = idPrefix ? `${idPrefix}--${newId}` : newId;\n const be = this._$backendElement;\n if (be) {\n if (ENV.DEV)\n performanceMeasureStart('backend.setId');\n if (BM.DOMLIKE || (BM.DYNAMIC && this.getBackendMode() === 3 /* BackendMode.Domlike */)) {\n ;\n be.id = val;\n }\n else {\n ;\n be.setId(val);\n }\n if (ENV.DEV)\n performanceMeasureEnd();\n }\n }\n }\n if (globalOptions.writeExtraInfoToAttr) {\n (_a = this._$backendElement) === null || _a === void 0 ? void 0 : _a.setAttribute('exparser:info-attr-id', newId);\n }\n if (this._$mutationObserverTarget) {\n MutationObserverTarget.callAttrObservers(this, {\n type: 'properties',\n target: this,\n attributeName: 'id',\n });\n }\n }\n get slot() {\n return this._$nodeSlot;\n }\n set slot(x) {\n const newSlot = String(x);\n const oldSlot = this._$nodeSlot;\n if (oldSlot === newSlot)\n return;\n /* istanbul ignore if */\n if (this._$inheritSlots) {\n throw new Error('slots-inherited nodes do not support \"slot\" attribute.');\n }\n this._$nodeSlot = newSlot;\n const slotParentShadowRoot = Element._$getParentHostShadowRoot(this.parentNode);\n if (slotParentShadowRoot) {\n const slotMode = slotParentShadowRoot.getSlotMode();\n /* istanbul ignore if */\n if (slotMode === 3 /* SlotMode.Dynamic */) {\n throw new Error('nodes inside dynamic slots should change binding slots through Element#setSlotElement.');\n }\n /* istanbul ignore if */\n if (slotMode === 0 /* SlotMode.Direct */) {\n throw new Error('nodes inside direct slots should not change slot name.');\n }\n const slotUpdater = Element._$updateSubtreeSlotNodes(this.parentNode, [this], slotParentShadowRoot, slotParentShadowRoot, this.parentIndex);\n slotUpdater === null || slotUpdater === void 0 ? void 0 : slotUpdater.removeSlotNodes();\n const oldSlot = this.containingSlot;\n slotUpdater === null || slotUpdater === void 0 ? void 0 : slotUpdater.updateContainingSlot();\n const newSlot = this.containingSlot;\n Element.insertChildReassign(this.parentNode, this, oldSlot, newSlot, this.parentIndex + 1);\n slotUpdater === null || slotUpdater === void 0 ? void 0 : slotUpdater.insertSlotNodes();\n }\n if (this._$mutationObserverTarget) {\n MutationObserverTarget.callAttrObservers(this, {\n type: 'properties',\n target: this,\n attributeName: 'slot',\n });\n }\n }\n get attributes() {\n const ret = [];\n if (this._$nodeAttributes) {\n Object.entries(this._$nodeAttributes).forEach(([name, value]) => {\n ret.push({\n name,\n value,\n });\n });\n }\n return ret;\n }\n get class() {\n if (this.classList) {\n return this.classList.getClassNames(0 /* StyleSegmentIndex.MAIN */);\n }\n return '';\n }\n set class(classNames) {\n this.setNodeClass(classNames, 0 /* StyleSegmentIndex.MAIN */);\n }\n get style() {\n return this._$styleSegments[0 /* StyleSegmentIndex.MAIN */] || '';\n }\n set style(styleText) {\n this.setNodeStyle(styleText, 0 /* StyleSegmentIndex.MAIN */);\n }\n // eslint-disable-next-line class-methods-use-this\n asTextNode() {\n return null;\n }\n asElement() {\n return this;\n }\n asNativeNode() {\n if (isNativeNode(this)) {\n return this;\n }\n return null;\n }\n asVirtualNode() {\n if (isVirtualNode(this)) {\n return this;\n }\n return null;\n }\n asInstanceOf(componentDefinition) {\n if (isComponent(this)) {\n return this.asInstanceOf(componentDefinition);\n }\n return null;\n }\n /** Get the backend context */\n getBackendContext() {\n const context = this._$nodeTreeContext;\n if (BM.SHADOW) {\n if (context === DESTROYED_SHADOW_BACKEND_CONTEXT)\n return null;\n }\n else if (BM.COMPOSED) {\n if (context === DESTROYED_COMPOSED_BACKEND_CONTEXT)\n return null;\n }\n else if (BM.DOMLIKE) {\n if (context === DESTROYED_DOMLIKE_BACKEND_CONTEXT)\n return null;\n }\n else {\n if (context === DESTROYED_SHADOW_BACKEND_CONTEXT)\n return null;\n if (context === DESTROYED_COMPOSED_BACKEND_CONTEXT)\n return null;\n if (context === DESTROYED_DOMLIKE_BACKEND_CONTEXT)\n return null;\n }\n return context;\n }\n /** Get the backend mode */\n getBackendMode() {\n return this._$nodeTreeContext.mode;\n }\n /** Get the backend element */\n getBackendElement() {\n return this._$backendElement;\n }\n /** Destroy the backend element */\n destroyBackendElement() {\n if (this._$backendElement) {\n if (!(BM.DOMLIKE || (BM.DYNAMIC && this.getBackendMode() === 3 /* BackendMode.Domlike */))) {\n if (ENV.DEV)\n performanceMeasureStart('backend.release');\n this._$backendElement.release();\n if (ENV.DEV)\n performanceMeasureEnd();\n }\n this._$backendElement = null;\n }\n if (BM.COMPOSED || (BM.DYNAMIC && this.getBackendMode() === 2 /* BackendMode.Composed */)) {\n this._$nodeTreeContext = DESTROYED_COMPOSED_BACKEND_CONTEXT;\n }\n else if (BM.DOMLIKE || (BM.DYNAMIC && this.getBackendMode() === 3 /* BackendMode.Domlike */)) {\n this._$nodeTreeContext = DESTROYED_DOMLIKE_BACKEND_CONTEXT;\n }\n else {\n this._$nodeTreeContext = DESTROYED_SHADOW_BACKEND_CONTEXT;\n }\n }\n /** Destroy the backend element on next detach */\n destroyBackendElementOnDetach() {\n this._$destroyOnDetach = true;\n }\n /** Cancel destroying backend element on detach */\n cancelDestroyBackendElementOnDetach() {\n this._$destroyOnDetach = false;\n }\n /** Get whether the node is virtual or not */\n isVirtual() {\n return this._$virtual;\n }\n /** Set the node class */\n setNodeClass(classNames, index = 0 /* StyleSegmentIndex.MAIN */) {\n var _a;\n if (ENV.DEV)\n performanceMeasureStart('backend.setClass');\n const changed = (_a = this.classList) === null || _a === void 0 ? void 0 : _a.setClassNames(classNames, index);\n if (ENV.DEV)\n performanceMeasureEnd();\n if (changed && this._$mutationObserverTarget) {\n MutationObserverTarget.callAttrObservers(this, {\n type: 'properties',\n target: this,\n attributeName: 'class',\n });\n }\n }\n /** Toggle the node class */\n toggleNodeClass(classNames, force, index = 0 /* StyleSegmentIndex.MAIN */) {\n var _a;\n if (ENV.DEV)\n performanceMeasureStart('backend.setClass');\n const changed = (_a = this.classList) === null || _a === void 0 ? void 0 : _a.toggle(classNames, force, index);\n if (ENV.DEV)\n performanceMeasureEnd();\n if (changed && this._$mutationObserverTarget) {\n MutationObserverTarget.callAttrObservers(this, {\n type: 'properties',\n target: this,\n attributeName: 'class',\n });\n }\n }\n /** Set the node style */\n setNodeStyle(styleSegment, index = 0) {\n if (this._$styleSegments[index] === styleSegment)\n return;\n this._$styleSegments[index] = styleSegment;\n const style = this._$styleSegments.join(';');\n if (ENV.DEV)\n performanceMeasureStart('backend.setStyle');\n if (this._$backendElement) {\n if (BM.DOMLIKE || (BM.DYNAMIC && this.getBackendMode() === 3 /* BackendMode.Domlike */)) {\n ;\n this._$backendElement.setAttribute('style', style);\n }\n else {\n ;\n this._$backendElement.setStyle(style);\n }\n }\n if (ENV.DEV)\n performanceMeasureEnd();\n if (this._$mutationObserverTarget) {\n MutationObserverTarget.callAttrObservers(this, {\n type: 'properties',\n target: this,\n attributeName: 'style',\n });\n }\n }\n static checkAndCallAttached(node) {\n const callFunc = function callFunc(node) {\n if (isElement(node) && !node._$attached) {\n node._$attached = true;\n if (isComponent(node)) {\n node.triggerLifetime('attached', []);\n if (node._$relation) {\n node._$relation.triggerLinkEvent(2 /* RelationType.ParentNonVirtualNode */, false);\n node._$relation.triggerLinkEvent(4 /* RelationType.ParentComponent */, false);\n node._$relation.triggerLinkEvent(0 /* RelationType.Ancestor */, false);\n }\n if (node._$mutationObserverTarget) {\n MutationObserverTarget.callAttachObservers(node, {\n type: 'attachStatus',\n target: node,\n status: 'attached',\n });\n }\n const shadowRoot = node.getShadowRoot();\n if (shadowRoot)\n callFunc(shadowRoot);\n }\n const childNodes = node.childNodes;\n for (let i = 0; i < childNodes.length; i += 1) {\n callFunc(childNodes[i]);\n }\n }\n };\n callFunc(node);\n }\n static checkAndCallDetached(node) {\n const destroyQueue = [];\n const callFunc = function callFunc(node) {\n if (node._$destroyOnDetach) {\n // Destroy later to avoid missing backend elements\n destroyQueue.push(node);\n }\n if (isElement(node) && node._$attached) {\n if (isComponent(node)) {\n node.triggerLifetime('beforeDetach', []);\n }\n node.childNodes.forEach(callFunc);\n if (isComponent(node)) {\n const f = node._$placeholderHandlerRemover;\n if (f)\n f();\n const shadowRoot = node.getShadowRoot();\n if (shadowRoot)\n callFunc(shadowRoot);\n node._$attached = false;\n node.triggerLifetime('detached', []);\n if (node._$relation) {\n node._$relation.triggerLinkEvent(2 /* RelationType.ParentNonVirtualNode */, true);\n node._$relation.triggerLinkEvent(4 /* RelationType.ParentComponent */, true);\n node._$relation.triggerLinkEvent(0 /* RelationType.Ancestor */, true);\n }\n if (node._$mutationObserverTarget) {\n MutationObserverTarget.callAttachObservers(node, {\n type: 'attachStatus',\n target: node,\n status: 'detached',\n });\n }\n }\n else {\n node._$attached = false;\n }\n }\n };\n callFunc(node);\n for (let i = 0; i < destroyQueue.length; i += 1) {\n destroyQueue[i].destroyBackendElement();\n }\n }\n static checkAndCallMoved(node) {\n const callFunc = function callFunc(node) {\n if (isElement(node) && node._$attached) {\n node.childNodes.forEach(callFunc);\n if (isComponent(node)) {\n const shadowRoot = node.getShadowRoot();\n if (shadowRoot)\n callFunc(shadowRoot);\n node.triggerLifetime('moved', []);\n if (node._$relation) {\n node._$relation.triggerLinkEvent(2 /* RelationType.ParentNonVirtualNode */, false);\n node._$relation.triggerLinkEvent(4 /* RelationType.ParentComponent */, false);\n node._$relation.triggerLinkEvent(0 /* RelationType.Ancestor */, false);\n }\n }\n }\n };\n callFunc(node);\n }\n static checkChildObservers(node, type, child) {\n var _a;\n const observer = node._$mutationObserverTarget;\n if (observer && (!((_a = observer.childObservers) === null || _a === void 0 ? void 0 : _a.empty) || observer.hasSubtreeListeners())) {\n const childList = [child];\n let childEventObj;\n if (type === 'add') {\n childEventObj = {\n type: 'childList',\n target: node,\n addedNodes: childList,\n };\n }\n else if (type === 'remove') {\n childEventObj = {\n type: 'childList',\n target: node,\n removedNodes: childList,\n };\n }\n else {\n childEventObj = {\n type: 'childList',\n target: node,\n addedNodes: childList,\n removedNodes: childList,\n };\n }\n MutationObserverTarget.callChildObservers(node, childEventObj);\n }\n }\n /**\n * Get whether a node has any subtree `MutationObserver` attached to it\n *\n * If there is, then tree update may have more performance impact.\n */\n static hasSubtreeMutationObservers(node) {\n var _a;\n return ((_a = node._$mutationObserverTarget) === null || _a === void 0 ? void 0 : _a.hasSubtreeListeners()) || false;\n }\n /** @internal */\n static _$insertChildReassignSlot(shadowRoot, name, oldSlot, newSlot) {\n if (!oldSlot) {\n const slotNodes = [];\n shadowRoot.forEachNodeInSpecifiedSlot(null, (node) => {\n if (name !== null) {\n const slotName = isElement(node) ? node._$nodeSlot : '';\n if (slotName !== name) {\n return;\n }\n }\n slotNodes.push(node);\n });\n for (let i = 0; i < slotNodes.length; i += 1) {\n const node = slotNodes[i];\n Element._$spliceSlotNodes(newSlot, -1, 0, [node]);\n Element._$updateContainingSlot(node, newSlot);\n if (!node._$inheritSlots)\n Element.insertChildReassign(node.parentNode, node, null, newSlot, node.parentIndex);\n }\n }\n else if (!newSlot) {\n const slotNodes = [...oldSlot.slotNodes];\n for (let i = 0; i < slotNodes.length; i += 1) {\n const node = slotNodes[i];\n Element._$spliceSlotNodes(oldSlot, 0, 1, undefined);\n Element._$updateContainingSlot(node, newSlot);\n if (!node._$inheritSlots)\n Element.insertChildReassign(node.parentNode, node, oldSlot, null, node.parentIndex);\n }\n }\n else {\n const slotNodes = [...oldSlot.slotNodes];\n for (let i = 0; i < slotNodes.length; i += 1) {\n const node = slotNodes[i];\n Element._$spliceSlotNodes(oldSlot, 0, 1, undefined);\n Element._$spliceSlotNodes(newSlot, -1, 0, [node]);\n Element._$updateContainingSlot(node, newSlot);\n if (!node._$inheritSlots)\n Element.insertChildReassign(node.parentNode, node, oldSlot, newSlot, node.parentIndex);\n }\n }\n }\n static insertChildReassign(shadowParent, child, oldSlot, newSlot, ideaPosIndex) {\n if (BM.SHADOW || (BM.DYNAMIC && shadowParent.getBackendMode() === 1 /* BackendMode.Shadow */)) {\n if (ENV.DEV)\n performanceMeasureStart('backend.reassignContainingSlot');\n child._$backendElement.reassignContainingSlot(oldSlot ? oldSlot._$backendElement : null, newSlot ? newSlot._$backendElement : null);\n if (ENV.DEV)\n performanceMeasureEnd();\n return;\n }\n if (oldSlot) {\n if (newSlot &&\n (BM.DOMLIKE || (BM.DYNAMIC && shadowParent.getBackendMode() === 3 /* BackendMode.Domlike */))) {\n // removal of in-tree elements are not needed for DOM backend\n // do nothing\n }\n else {\n const backendParent = Element.findNearestNonVirtual(oldSlot);\n if (backendParent) {\n const d = Element.countNonVirtual(child);\n if (d) {\n const [before, removeCount] = d;\n if (BM.DOMLIKE ||\n (BM.DYNAMIC && shadowParent.getBackendMode() === 3 /* BackendMode.Domlike */)) {\n const rel = before._$backendElement;\n for (let i = 1; i < removeCount; i += 1) {\n const next = rel.nextSibling;\n if (next) {\n if (ENV.DEV)\n performanceMeasureStart('backend.removeChild');\n backendParent.removeChild(next);\n if (ENV.DEV)\n performanceMeasureEnd();\n }\n }\n if (removeCount > 0) {\n if (ENV.DEV)\n performanceMeasureStart('backend.removeChild');\n backendParent.removeChild(rel);\n if (ENV.DEV)\n performanceMeasureEnd();\n }\n }\n else {\n if (ENV.DEV)\n performanceMeasureStart('backend.spliceRemove');\n backendParent.spliceRemove(before._$backendElement, removeCount);\n if (ENV.DEV)\n performanceMeasureEnd();\n }\n }\n }\n }\n }\n if (newSlot) {\n Element.insertChildComposed(shadowParent, child, undefined, false, ideaPosIndex);\n }\n }\n // a helper for searching the nearest non-virtual ancestor\n static findNearestNonVirtual(p) {\n let cur = p;\n for (; cur === null || cur === void 0 ? void 0 : cur._$virtual;) {\n if (isShadowRoot(cur)) {\n cur = cur.getHostNode();\n continue;\n }\n if (cur.containingSlot !== undefined) {\n cur = cur.containingSlot;\n continue;\n }\n cur = cur.parentNode;\n }\n return cur ? cur._$backendElement : null;\n }\n static countNonVirtual(target) {\n let firstNode = null;\n let removeCount = 0;\n const recNonVirtual = (c) => {\n if (removeCount === 0)\n firstNode = c;\n removeCount += 1;\n };\n const rec = (c) => {\n if (isElement(c) && c._$virtual) {\n c.forEachNonVirtualComposedChild(recNonVirtual);\n return;\n }\n recNonVirtual(c);\n };\n rec(target);\n return firstNode ? [firstNode, removeCount] : null;\n }\n /**\n * Iterate elements with their slots (slots-inherited nodes included)\n */\n static forEachNodeInSlot(node, f) {\n const rec = (child) => {\n if (f(child, child.containingSlot) === false)\n return false;\n if (child._$inheritSlots) {\n const childNodes = child.childNodes;\n for (let i = 0; i < childNodes.length; i += 1) {\n if (!rec(childNodes[i]))\n return false;\n }\n return true;\n }\n return true;\n };\n return rec(node);\n }\n /**\n * Iterate elements in specified slot (slots-inherited nodes included)\n */\n static forEachNodeInSpecificSlot(node, slot, f) {\n const rec = (child) => {\n if (child.containingSlot === slot) {\n if (f(child) === false)\n return false;\n }\n if (child._$inheritSlots) {\n const childNodes = child.childNodes;\n for (let i = 0; i < childNodes.length; i += 1) {\n if (!rec(childNodes[i]))\n return false;\n }\n return true;\n }\n return true;\n };\n return rec(node);\n }\n /**\n * Iterate elements with their slots (slots-inherited nodes NOT included)\n */\n static forEachSlotContentInSlot(node, f) {\n const rec = (child) => {\n if (child._$inheritSlots) {\n const childNodes = child.childNodes;\n for (let i = 0; i < childNodes.length; i += 1) {\n if (!rec(childNodes[i]))\n return false;\n }\n return true;\n }\n if (f(child, child.containingSlot) === false)\n return false;\n return true;\n };\n return rec(node);\n }\n /**\n * Iterate elements in specified slot (slots-inherited nodes NOT included)\n */\n static forEachSlotContentInSpecificSlot(node, slot, f) {\n const rec = (child) => {\n if (child._$inheritSlots) {\n const childNodes = child.childNodes;\n for (let i = 0; i < childNodes.length; i += 1) {\n if (!rec(childNodes[i]))\n return false;\n }\n return true;\n }\n if (child.containingSlot !== slot)\n return true;\n return f(child) !== false;\n };\n return rec(node);\n }\n /**\n * @internal\n * a helper for searching the first non-virtual node\n */\n static _$findFirstNonVirtualChild(parent, index) {\n const inSlot = parent._$slotName !== null;\n const children = inSlot ? parent.slotNodes : parent.childNodes;\n if (index >= 0 && index < children.length) {\n for (let i = index; i < children.length; i += 1) {\n let ret = null;\n const recNonVirtual = (c) => {\n ret = c;\n return false;\n };\n const rec = (c) => {\n if (!inSlot && c._$inheritSlots) {\n const childNodes = c.childNodes;\n for (let i = 0; i < childNodes.length; i += 1) {\n if (rec(childNodes[i]) === false)\n return false;\n }\n }\n if (c._$virtual) {\n return c.forEachNonVirtualComposedChild(recNonVirtual);\n }\n return recNonVirtual(c);\n };\n rec(children[i]);\n if (ret)\n return ret;\n }\n }\n const recvParent = (parent) => {\n if (!parent._$virtual)\n return null;\n const containingSlot = parent.containingSlot;\n if (containingSlot === null)\n return null;\n if (containingSlot !== undefined) {\n return Element._$findFirstNonVirtualChild(containingSlot, parent.slotIndex + 1);\n }\n if (isShadowRoot(parent)) {\n return recvParent(parent.getHostNode());\n }\n const p = parent.parentNode;\n if (p) {\n return Element._$findFirstNonVirtualChild(p, parent.parentIndex + 1);\n }\n return null;\n };\n return recvParent(parent);\n }\n /**\n * @internal\n * A helper to find first non-virtual next sibling node\n * return null if no next sibling exists\n */\n static _$findFirstNonVirtualSibling(element, newPosIndex) {\n const containingSlot = element.containingSlot;\n if (containingSlot === null)\n return null;\n if (containingSlot !== undefined) {\n if (!containingSlot._$virtual)\n return null;\n if (element.slotIndex !== undefined) {\n return Element._$findFirstNonVirtualChild(containingSlot, element.slotIndex + 1);\n }\n const insertPos = Element._$findSlotNodeInsertPosition(containingSlot, element, newPosIndex);\n return Element._$findFirstNonVirtualChild(containingSlot, insertPos);\n }\n let cur = element;\n if (isShadowRoot(element)) {\n cur = element.getHostNode();\n if (!cur._$virtual)\n return null;\n return Element._$findFirstNonVirtualChild(cur, cur.parentIndex + 1);\n }\n const p = cur.parentNode;\n if (p) {\n return Element._$findFirstNonVirtualChild(p, newPosIndex);\n }\n return null;\n }\n static insertChildComposed(shadowParent, newChild, relChild, removal, newPosIndex) {\n var _a, _b, _c;\n let parentConverted = false;\n let cur = shadowParent;\n while (cur === null || cur === void 0 ? void 0 : cur._$inheritSlots) {\n parentConverted = true;\n cur = cur.parentNode;\n }\n if (!cur)\n return;\n const slotParent = cur;\n const context = slotParent._$nodeTreeContext;\n if (!context)\n return;\n // detect whether it is in single-slot mode\n let sharedNonVirtualParent;\n if (isComponent(slotParent)) {\n if (slotParent._$external) {\n sharedNonVirtualParent = slotParent.shadowRoot\n .slot;\n }\n else {\n parentConverted = true;\n }\n }\n else {\n if (slotParent._$virtual)\n parentConverted = true;\n sharedNonVirtualParent = Element.findNearestNonVirtual(slotParent);\n }\n // a helper for grouping and slicing update\n let sharedFrag = null;\n const groupUpdate = (sharedBackendParent, slot) => {\n const backendParent = sharedBackendParent || (slot ? Element.findNearestNonVirtual(slot) : null);\n if (!(BM.DOMLIKE || (BM.DYNAMIC && shadowParent.getBackendMode() === 3 /* BackendMode.Domlike */))) {\n if (!backendParent) {\n return;\n }\n }\n let removeCount = 0;\n let before = null;\n // get the new child nodes of the backend\n let frag = null;\n let firstSlotNode = null;\n if (newChild) {\n const f = sharedFrag ||\n (BM.DOMLIKE || (BM.DYNAMIC && context.mode === 3 /* BackendMode.Domlike */)\n ? context.document.createDocumentFragment()\n : context.createFragment());\n sharedFrag = f;\n const recNonVirtual = (c) => {\n if (ENV.DEV)\n performanceMeasureStart('backend.appendChild');\n f.appendChild(c._$backendElement);\n if (ENV.DEV)\n performanceMeasureEnd();\n frag = f;\n };\n Element.forEachNodeInSpecificSlot(newChild, slot, (node) => {\n if (!firstSlotNode)\n firstSlotNode = node;\n if (!node._$virtual) {\n recNonVirtual(node);\n return;\n }\n node.forEachNonVirtualComposedChild(recNonVirtual);\n });\n }\n if (BM.DOMLIKE || (BM.DYNAMIC && shadowParent.getBackendMode() === 3 /* BackendMode.Domlike */)) {\n if (!backendParent) {\n sharedFrag = null;\n return;\n }\n }\n // get the proper relative node of the backend\n if (relChild || parentConverted) {\n if (removal && relChild) {\n Element.forEachSlotContentInSpecificSlot(relChild, slot, (c) => {\n if (isElement(c)) {\n const d = Element.countNonVirtual(c);\n if (d) {\n if (!before)\n before = d[0];\n removeCount += d[1];\n }\n }\n else {\n if (!before)\n before = c;\n removeCount += 1;\n }\n return true;\n });\n if (removeCount === 0 && frag && firstSlotNode) {\n before = Element._$findFirstNonVirtualSibling(slot === undefined ? newChild : firstSlotNode, newPosIndex + 1);\n }\n }\n else if (frag && firstSlotNode) {\n before = Element._$findFirstNonVirtualSibling(slot === undefined ? newChild : firstSlotNode, newPosIndex);\n }\n }\n // actually do the backend operation\n if (frag) {\n if (before) {\n if (BM.DOMLIKE || (BM.DYNAMIC && context.mode === 3 /* BackendMode.Domlike */)) {\n const rel = before._$backendElement;\n if (ENV.DEV)\n performanceMeasureStart('backend.insertBefore');\n backendParent.insertBefore(frag, rel);\n if (ENV.DEV)\n performanceMeasureEnd();\n for (let i = 1; i < removeCount; i += 1) {\n const next = rel.nextSibling;\n if (next) {\n if (ENV.DEV)\n performanceMeasureStart('backend.removeChild');\n backendParent.removeChild(next);\n if (ENV.DEV)\n performanceMeasureEnd();\n }\n }\n if (removeCount > 0) {\n if (ENV.DEV)\n performanceMeasureStart('backend.removeChild');\n backendParent.removeChild(rel);\n if (ENV.DEV)\n performanceMeasureEnd();\n }\n }\n else {\n if (ENV.DEV)\n performanceMeasureStart('backend.spliceBefore');\n backendParent.spliceBefore(before._$backendElement, removeCount, frag);\n if (ENV.DEV)\n performanceMeasureEnd();\n }\n }\n else {\n if (BM.DOMLIKE || (BM.DYNAMIC && context.mode === 3 /* BackendMode.Domlike */)) {\n if (ENV.DEV)\n performanceMeasureStart('backend.appendChild');\n backendParent.appendChild(frag);\n if (ENV.DEV)\n performanceMeasureEnd();\n }\n else {\n if (ENV.DEV)\n performanceMeasureStart('backend.spliceAppend');\n backendParent.spliceAppend(frag);\n if (ENV.DEV)\n performanceMeasureEnd();\n }\n }\n }\n else if (removeCount > 0) {\n if (BM.DOMLIKE || (BM.DYNAMIC && context.mode === 3 /* BackendMode.Domlike */)) {\n const rel = before._$backendElement;\n for (let i = 1; i < removeCount; i += 1) {\n const next = rel.nextSibling;\n if (next) {\n if (ENV.DEV)\n performanceMeasureStart('backend.removeChild');\n backendParent.removeChild(next);\n if (ENV.DEV)\n performanceMeasureEnd();\n }\n }\n if (removeCount > 0) {\n if (ENV.DEV)\n performanceMeasureStart('backend.removeChild');\n backendParent.removeChild(rel);\n if (ENV.DEV)\n performanceMeasureEnd();\n }\n }\n else {\n if (ENV.DEV)\n performanceMeasureStart('backend.spliceRemove');\n backendParent.spliceRemove(before._$backendElement, removeCount);\n if (ENV.DEV)\n performanceMeasureEnd();\n }\n }\n };\n // in single-slot mode, use a simpler update logic; otherwise use a slower one\n if (sharedNonVirtualParent !== undefined) {\n if (sharedNonVirtualParent === null) {\n // for nodes with no valid non-virtual parent, do nothing\n }\n else if (!parentConverted &&\n (!isElement(newChild) || !newChild._$virtual) &&\n (!isElement(relChild) || !relChild._$virtual)) {\n // for non-virtual children, use single child operation\n if (removal) {\n if (newChild) {\n if (ENV.DEV)\n performanceMeasureStart('backend.replaceChild');\n sharedNonVirtualParent.replaceChild(newChild._$backendElement, relChild._$backendElement);\n if (ENV.DEV)\n performanceMeasureEnd();\n }\n else {\n if (ENV.DEV)\n performanceMeasureStart('backend.removeChild');\n sharedNonVirtualParent.removeChild(relChild._$backendElement);\n if (ENV.DEV)\n performanceMeasureEnd();\n }\n }\n else if (relChild) {\n if (ENV.DEV)\n performanceMeasureStart('backend.insertBefore');\n sharedNonVirtualParent.insertBefore(newChild._$backendElement, relChild._$backendElement);\n if (ENV.DEV)\n performanceMeasureEnd();\n }\n else {\n if (ENV.DEV)\n performanceMeasureStart('backend.appendChild');\n sharedNonVirtualParent.appendChild(newChild._$backendElement);\n if (ENV.DEV)\n performanceMeasureEnd();\n }\n }\n else {\n // for node isn't a slot content, simply update\n groupUpdate(sharedNonVirtualParent, undefined);\n }\n }\n else if (!((newChild && newChild._$inheritSlots) || (removal && relChild && relChild._$inheritSlots))) {\n // faster update if none inherited slots\n if (newChild)\n groupUpdate(null, newChild.containingSlot);\n if (removal &&\n relChild &&\n (!newChild || relChild.containingSlot !== newChild.containingSlot)) {\n groupUpdate(null, relChild.containingSlot);\n }\n }\n else {\n // for multi-slots, find out each slot that needs update, and update them one by one\n const slotNodesSet = new Set();\n if (removal && relChild) {\n Element.forEachSlotContentInSlot(relChild, (node, slot) => {\n slotNodesSet.add(slot);\n });\n }\n if (newChild) {\n Element.forEachSlotContentInSlot(newChild, (node, slot) => {\n slotNodesSet.add(slot);\n });\n }\n slotNodesSet.forEach((slot) => groupUpdate(null, slot));\n }\n if (!(BM.DOMLIKE || (BM.DYNAMIC && context.mode === 3 /* BackendMode.Domlike */))) {\n if (sharedFrag) {\n if (ENV.DEV)\n performanceMeasureStart('backend.release');\n sharedFrag.release();\n if (ENV.DEV)\n performanceMeasureEnd();\n }\n }\n // write extra info if needed\n if (globalOptions.writeExtraInfoToAttr) {\n if (removal && isElement(relChild)) {\n (_a = relChild._$backendElement) === null || _a === void 0 ? void 0 : _a.removeAttribute('exparser:info-in-slot-of');\n }\n if (isElement(newChild)) {\n if (isComponent(shadowParent)) {\n (_b = newChild._$backendElement) === null || _b === void 0 ? void 0 : _b.setAttribute('exparser:info-in-slot-of', shadowParent._$componentInstanceId);\n }\n else {\n (_c = newChild._$backendElement) === null || _c === void 0 ? void 0 : _c.removeAttribute('exparser:info-in-slot-of');\n }\n }\n }\n }\n /**\n * @internal\n * @param move whether this insertion is a slot movement\n */\n static _$updateSubtreeSlotsInsertion(node, slotStart, slotEnd, posIndex, move) {\n if (!slotStart || !slotEnd)\n return;\n let parent = node;\n // find a correct position to insert slot into double-linked slot list\n let insertSlotPrev = null;\n let insertSlotNext = null;\n const findFirstSlot = (parent, posIndex) => {\n if (parent._$subtreeSlotStart) {\n const childNodes = parent.childNodes;\n let index = posIndex + 1;\n let nextSiblingWithSlot = childNodes[index];\n while (nextSiblingWithSlot && !nextSiblingWithSlot._$subtreeSlotStart) {\n index += 1;\n nextSiblingWithSlot = childNodes[index];\n }\n if (nextSiblingWithSlot) {\n insertSlotNext = nextSiblingWithSlot._$subtreeSlotStart;\n insertSlotPrev = insertSlotNext.prev;\n }\n else {\n insertSlotPrev = parent._$subtreeSlotEnd;\n if (insertSlotPrev)\n insertSlotNext = insertSlotPrev.next;\n }\n return;\n }\n let cur = parent;\n let parentWithSubtreeSlot = parent.parentNode;\n while (parentWithSubtreeSlot && !parentWithSubtreeSlot._$subtreeSlotStart) {\n cur = parentWithSubtreeSlot;\n parentWithSubtreeSlot = parentWithSubtreeSlot.parentNode;\n }\n if (parentWithSubtreeSlot) {\n findFirstSlot(parentWithSubtreeSlot, cur.parentIndex);\n }\n };\n findFirstSlot(parent, posIndex);\n // insert into double linked list\n if (insertSlotPrev) {\n insertSlotPrev.next = slotStart;\n slotStart.prev = insertSlotPrev;\n }\n if (insertSlotNext) {\n insertSlotNext.prev = slotEnd;\n slotEnd.next = insertSlotNext;\n }\n // update ancestor's subtree slot start/end\n while (parent) {\n let changed = false;\n if (!parent._$subtreeSlotStart) {\n parent._$subtreeSlotStart = slotStart;\n parent._$subtreeSlotEnd = slotEnd;\n changed = true;\n }\n else if (parent._$subtreeSlotStart === insertSlotNext) {\n parent._$subtreeSlotStart = slotStart;\n changed = true;\n }\n else if (parent._$subtreeSlotEnd === insertSlotPrev) {\n parent._$subtreeSlotEnd = slotEnd;\n changed = true;\n }\n if (!changed || !parent.parentNode)\n break;\n parent = parent.parentNode;\n }\n const ownerShadowRoot = parent.ownerShadowRoot;\n if (ownerShadowRoot === null || ownerShadowRoot === void 0 ? void 0 : ownerShadowRoot.isConnected(parent)) {\n ownerShadowRoot._$applySlotsInsertion(slotStart, slotEnd, move);\n }\n }\n /**\n * @internal\n * @param move whether this removal is a slot movement, will fire an insertion (with move=true) after\n */\n static _$updateSubtreeSlotsRemoval(node, slotStart, slotEnd, move) {\n if (!slotStart || !slotEnd)\n return;\n let parent = node;\n const removeSlotBefore = slotStart.prev;\n const removeSlotAfter = slotEnd.next;\n // remove from double linked list\n if (removeSlotBefore) {\n removeSlotBefore.next = removeSlotAfter;\n slotStart.prev = null;\n }\n if (removeSlotAfter) {\n removeSlotAfter.prev = removeSlotBefore;\n slotEnd.next = null;\n }\n // update parent subtree start/end\n while (parent) {\n let changed = false;\n if (parent._$subtreeSlotStart === slotStart && parent._$subtreeSlotEnd === slotEnd) {\n parent._$subtreeSlotStart = parent._$subtreeSlotEnd = null;\n changed = true;\n }\n if (parent._$subtreeSlotStart === slotStart) {\n parent._$subtreeSlotStart = removeSlotAfter;\n changed = true;\n }\n else if (parent._$subtreeSlotEnd === slotEnd) {\n parent._$subtreeSlotEnd = removeSlotBefore;\n changed = true;\n }\n if (!changed || !parent.parentNode)\n break;\n parent = parent.parentNode;\n }\n const ownerShadowRoot = parent.ownerShadowRoot;\n if (ownerShadowRoot === null || ownerShadowRoot === void 0 ? void 0 : ownerShadowRoot.isConnected(parent)) {\n ownerShadowRoot._$applySlotsRemoval(slotStart, slotEnd, move);\n }\n }\n /**\n * @internal\n * @param move whether this removal is a slot movement, will fire an insertion (with move=true) after\n */\n static _$updateSubtreeSlotsReplacement(node, slotStart, slotEnd, oldSlotStart, oldSlotEnd, posIndex, move) {\n if (!slotStart || !slotEnd) {\n Element._$updateSubtreeSlotsRemoval(node, oldSlotStart, oldSlotEnd, move);\n return;\n }\n if (!oldSlotStart || !oldSlotEnd) {\n Element._$updateSubtreeSlotsInsertion(node, slotStart, slotEnd, posIndex, move);\n return;\n }\n let parent = node;\n const removeSlotBefore = oldSlotStart.prev;\n const removeSlotAfter = oldSlotEnd.next;\n // replace in double linked list\n if (removeSlotBefore) {\n removeSlotBefore.next = slotStart;\n slotStart.prev = removeSlotBefore;\n oldSlotStart.prev = null;\n }\n if (removeSlotAfter) {\n removeSlotAfter.prev = slotEnd;\n slotEnd.next = removeSlotAfter;\n oldSlotEnd.next = null;\n }\n // update parent subtree start/end\n while (parent) {\n let changed = false;\n if (parent._$subtreeSlotStart === oldSlotStart) {\n parent._$subtreeSlotStart = slotStart;\n changed = true;\n }\n if (parent._$subtreeSlotEnd === oldSlotEnd) {\n parent._$subtreeSlotEnd = slotEnd;\n changed = true;\n }\n if (!changed || !parent.parentNode)\n break;\n parent = parent.parentNode;\n }\n const ownerShadowRoot = parent.ownerShadowRoot;\n if (ownerShadowRoot === null || ownerShadowRoot === void 0 ? void 0 : ownerShadowRoot.isConnected(parent)) {\n ownerShadowRoot._$applySlotsRemoval(oldSlotStart, oldSlotEnd, false);\n ownerShadowRoot._$applySlotsInsertion(slotStart, slotEnd, move);\n }\n }\n /** @internal */\n static _$updateSubtreeSlotNodes(parentNode, elements, shadowRoot, oldShadowRoot, posIndex) {\n if (!shadowRoot && !oldShadowRoot)\n return undefined;\n const slotMode = shadowRoot === null || shadowRoot === void 0 ? void 0 : shadowRoot.getSlotMode();\n const oldSlotMode = oldShadowRoot === null || oldShadowRoot === void 0 ? void 0 : oldShadowRoot.getSlotMode();\n if ((slotMode === undefined || slotMode === 0 /* SlotMode.Direct */) &&\n (oldSlotMode === undefined || oldSlotMode === 0 /* SlotMode.Direct */)) {\n return undefined;\n }\n if ((slotMode === undefined || slotMode === 1 /* SlotMode.Single */) &&\n (oldSlotMode === undefined || oldSlotMode === 1 /* SlotMode.Single */)) {\n let removeStart = -1;\n let removeCount = 0;\n let insertPos = -1;\n const slotNodesToUpdate = [];\n const oldContainingSlot = elements[0].containingSlot;\n const containingSlot = shadowRoot === null || shadowRoot === void 0 ? void 0 : shadowRoot.getContainingSlot(elements[0]);\n for (let i = 0; i < elements.length; i += 1) {\n const elem = elements[i];\n // eslint-disable-next-line no-loop-func\n Element.forEachNodeInSlot(elem, (node) => {\n if (oldContainingSlot) {\n if (removeCount) {\n removeCount += 1;\n }\n else {\n removeStart = node.slotIndex;\n removeCount = 1;\n }\n }\n slotNodesToUpdate.push(node);\n });\n }\n if (containingSlot && slotNodesToUpdate.length) {\n const firstSlotNode = slotNodesToUpdate[0];\n insertPos = Element._$findSlotNodeInsertPosition(containingSlot, firstSlotNode, posIndex);\n }\n return {\n updateContainingSlot: () => {\n for (let i = slotNodesToUpdate.length - 1; i >= 0; i -= 1) {\n const node = slotNodesToUpdate[i];\n Element._$updateContainingSlot(node, containingSlot);\n }\n },\n removeSlotNodes: () => {\n if (oldShadowRoot && oldContainingSlot && removeCount) {\n Element._$spliceSlotNodes(oldContainingSlot, removeStart, removeCount, undefined);\n }\n },\n insertSlotNodes: () => {\n if (shadowRoot && containingSlot && slotNodesToUpdate.length) {\n Element._$spliceSlotNodes(containingSlot, insertPos, 0, slotNodesToUpdate);\n }\n },\n };\n }\n const slotNodesToInsertMap = new Map();\n const slotNodesToRemoveMap = new Map();\n const slotNodesWithContainingSlot = [];\n for (let i = 0; i < elements.length; i += 1) {\n const elem = elements[i];\n Element.forEachNodeInSlot(elem, (node, oldContainingSlot) => {\n const containingSlot = slotMode !== 0 /* SlotMode.Direct */ ? shadowRoot === null || shadowRoot === void 0 ? void 0 : shadowRoot.getContainingSlot(node) : undefined;\n if (oldContainingSlot) {\n const slotNodesToRemove = slotNodesToRemoveMap.get(oldContainingSlot);\n if (slotNodesToRemove) {\n slotNodesToRemove.count += 1;\n }\n else {\n slotNodesToRemoveMap.set(oldContainingSlot, { start: node.slotIndex, count: 1 });\n }\n }\n if (containingSlot) {\n const slotNodesToInsert = slotNodesToInsertMap.get(containingSlot);\n if (slotNodesToInsert) {\n slotNodesToInsert.nodes.push(node);\n }\n else {\n slotNodesToInsertMap.set(containingSlot, { nodes: [node], insertPos: -1 });\n }\n }\n slotNodesWithContainingSlot.push([node, containingSlot]);\n });\n }\n if (shadowRoot && slotNodesToInsertMap.size) {\n const iter = slotNodesToInsertMap.entries();\n for (let it = iter.next(); !it.done; it = iter.next()) {\n const [slot, { nodes: slotNodesToInsert }] = it.value;\n const firstSlotNodeToInsert = slotNodesToInsert[0];\n it.value[1].insertPos = Element._$findSlotNodeInsertPosition(slot, firstSlotNodeToInsert, posIndex);\n }\n }\n return {\n updateContainingSlot: () => {\n for (let i = slotNodesWithContainingSlot.length - 1; i >= 0; i -= 1) {\n const [node, containingSlot] = slotNodesWithContainingSlot[i];\n Element._$updateContainingSlot(node, containingSlot);\n }\n },\n removeSlotNodes: () => {\n if (oldShadowRoot && slotNodesToRemoveMap.size) {\n const iter = slotNodesToRemoveMap.entries();\n for (let it = iter.next(); !it.done; it = iter.next()) {\n const [slot, { start, count }] = it.value;\n Element._$spliceSlotNodes(slot, start, count, undefined);\n }\n }\n },\n insertSlotNodes: () => {\n if (shadowRoot && slotNodesToInsertMap.size) {\n const iter = slotNodesToInsertMap.entries();\n for (let it = iter.next(); !it.done; it = iter.next()) {\n const [slot, { nodes: slotNodesToInsert, insertPos }] = it.value;\n Element._$spliceSlotNodes(slot, insertPos, 0, slotNodesToInsert);\n }\n }\n },\n };\n }\n static insertChildSingleOperation(parent, newChild, oriPosIndex, replace) {\n var _a, _b, _c, _d, _e;\n /* istanbul ignore if */\n if (newChild && parent.ownerShadowRoot !== newChild.ownerShadowRoot) {\n throw new Error('Cannot move the node from one shadow tree to another shadow tree.');\n }\n let posIndex = oriPosIndex;\n const relChild = posIndex >= 0 ? parent.childNodes[posIndex] : undefined;\n let removal;\n if (replace) {\n if (!relChild) {\n removal = false;\n }\n else if (newChild === relChild) {\n removal = false;\n }\n else {\n removal = true;\n }\n }\n else {\n removal = false;\n }\n if (!removal && !newChild)\n return;\n // change the parent of newChild\n let oldParent;\n if (newChild) {\n oldParent = newChild.parentNode;\n if (oldParent) {\n const childNodes = oldParent.childNodes;\n const oldPosIndex = newChild.parentIndex;\n childNodes.splice(oldPosIndex, 1);\n for (let i = oldPosIndex; i < childNodes.length; i += 1) {\n childNodes[i].parentIndex = i;\n }\n newChild.parentIndex = -1;\n if (oldParent === parent && oldPosIndex < posIndex)\n posIndex -= 1;\n const containingSlotUpdater = Element._$updateSubtreeSlotNodes(parent, [newChild], null, Element._$getParentHostShadowRoot(oldParent), posIndex);\n containingSlotUpdater === null || containingSlotUpdater === void 0 ? void 0 : containingSlotUpdater.removeSlotNodes();\n if (BM.DOMLIKE || (BM.DYNAMIC && parent.getBackendMode() === 3 /* BackendMode.Domlike */)) {\n // removal of in-tree elements are not needed for DOM backend\n // do nothing\n }\n else if (BM.SHADOW || (BM.DYNAMIC && parent.getBackendMode() === 1 /* BackendMode.Shadow */)) {\n if (ENV.DEV)\n performanceMeasureStart('backend.removeChild');\n (_a = oldParent._$backendElement) === null || _a === void 0 ? void 0 : _a.removeChild(newChild._$backendElement, oldPosIndex);\n if (ENV.DEV)\n performanceMeasureEnd();\n }\n else {\n Element.insertChildComposed(oldParent, null, newChild, true, oldPosIndex);\n }\n containingSlotUpdater === null || containingSlotUpdater === void 0 ? void 0 : containingSlotUpdater.updateContainingSlot();\n }\n newChild.parentNode = parent;\n if (isElement(newChild) && oldParent !== parent) {\n if (oldParent)\n (_b = oldParent._$mutationObserverTarget) === null || _b === void 0 ? void 0 : _b.detachChild(newChild);\n (_c = parent._$mutationObserverTarget) === null || _c === void 0 ? void 0 : _c.attachChild(newChild);\n }\n }\n else {\n oldParent = null;\n }\n // update containingSlot\n const parentComponentShadowRoot = Element._$getParentHostShadowRoot(parent);\n const newChildContainingSlotUpdater = newChild\n ? Element._$updateSubtreeSlotNodes(parent, [newChild], parentComponentShadowRoot, null, posIndex)\n : null;\n const relChildContainingSlotUpdater = relChild && removal\n ? Element._$updateSubtreeSlotNodes(parent, [relChild], null, parentComponentShadowRoot, posIndex)\n : null;\n newChildContainingSlotUpdater === null || newChildContainingSlotUpdater === void 0 ? void 0 : newChildContainingSlotUpdater.updateContainingSlot();\n relChildContainingSlotUpdater === null || relChildContainingSlotUpdater === void 0 ? void 0 : relChildContainingSlotUpdater.removeSlotNodes();\n // spread in composed tree\n if (BM.SHADOW || (BM.DYNAMIC && parent.getBackendMode() === 1 /* BackendMode.Shadow */)) {\n if (parent._$backendElement) {\n if (removal) {\n if (newChild) {\n if (ENV.DEV)\n performanceMeasureStart('backend.replaceChild');\n parent._$backendElement.replaceChild(newChild._$backendElement, relChild._$backendElement, posIndex);\n if (ENV.DEV)\n performanceMeasureEnd();\n }\n else {\n if (ENV.DEV)\n performanceMeasureStart('backend.removeChild');\n parent._$backendElement.removeChild(relChild._$backendElement, posIndex);\n if (ENV.DEV)\n performanceMeasureEnd();\n }\n }\n else {\n // relChild could equal to newChild and have been removed above\n const before = parent.childNodes[posIndex];\n if (before) {\n if (ENV.DEV)\n performanceMeasureStart('backend.insertBefore');\n parent._$backendElement.insertBefore(newChild._$backendElement, before._$backendElement, posIndex);\n if (ENV.DEV)\n performanceMeasureEnd();\n }\n else {\n if (ENV.DEV)\n performanceMeasureStart('backend.appendChild');\n parent._$backendElement.appendChild(newChild._$backendElement);\n if (ENV.DEV)\n performanceMeasureEnd();\n }\n }\n }\n }\n else {\n Element.insertChildComposed(parent, newChild, relChild, removal, posIndex);\n }\n newChildContainingSlotUpdater === null || newChildContainingSlotUpdater === void 0 ? void 0 : newChildContainingSlotUpdater.insertSlotNodes();\n relChildContainingSlotUpdater === null || relChildContainingSlotUpdater === void 0 ? void 0 : relChildContainingSlotUpdater.updateContainingSlot();\n // remove parent of relChild if needed\n if (removal && relChild) {\n if (isElement(relChild)) {\n (_d = parent._$mutationObserverTarget) === null || _d === void 0 ? void 0 : _d.detachChild(relChild);\n }\n relChild.parentNode = null;\n relChild.parentIndex = -1;\n }\n // handling child nodes list\n const childNodes = parent.childNodes;\n if (newChild) {\n if (posIndex < 0) {\n childNodes.push(newChild);\n newChild.parentIndex = childNodes.length - 1;\n }\n else if (removal) {\n childNodes[posIndex] = newChild;\n newChild.parentIndex = posIndex;\n }\n else {\n childNodes.splice(posIndex, 0, newChild);\n for (let i = posIndex; i < childNodes.length; i += 1) {\n childNodes[i].parentIndex = i;\n }\n }\n }\n else if (removal) {\n childNodes.splice(posIndex, 1);\n for (let i = posIndex; i < childNodes.length; i += 1) {\n childNodes[i].parentIndex = i;\n }\n }\n // update subtree slots\n const newChildSubtreeSlotStart = newChild ? newChild._$subtreeSlotStart : null;\n const newChildSubtreeSlotEnd = newChild ? newChild._$subtreeSlotEnd : null;\n const relChildSubtreeSlotStart = relChild ? relChild._$subtreeSlotStart : null;\n const relChildSubtreeSlotEnd = relChild ? relChild._$subtreeSlotEnd : null;\n if (newChild) {\n if (oldParent) {\n Element._$updateSubtreeSlotsRemoval(oldParent, newChildSubtreeSlotStart, newChildSubtreeSlotEnd, true);\n }\n if (removal) {\n Element._$updateSubtreeSlotsReplacement(parent, newChildSubtreeSlotStart, newChildSubtreeSlotEnd, relChildSubtreeSlotStart, relChildSubtreeSlotEnd, posIndex, !!oldParent);\n }\n else {\n Element._$updateSubtreeSlotsInsertion(parent, newChildSubtreeSlotStart, newChildSubtreeSlotEnd, posIndex, !!oldParent);\n }\n }\n else if (removal && relChild) {\n Element._$updateSubtreeSlotsRemoval(parent, relChildSubtreeSlotStart, relChildSubtreeSlotEnd, false);\n }\n // update id and slot cache if needed\n (_e = parent.ownerShadowRoot) === null || _e === void 0 ? void 0 : _e._$markIdCacheDirty();\n // call life-times\n if (removal) {\n Element.checkAndCallDetached(relChild);\n Element.checkChildObservers(parent, 'remove', relChild);\n }\n if (newChild) {\n if (oldParent === null || oldParent === void 0 ? void 0 : oldParent._$attached) {\n if (parent._$attached) {\n Element.checkAndCallMoved(newChild);\n }\n else {\n Element.checkAndCallDetached(newChild);\n }\n }\n else if (parent._$attached) {\n Element.checkAndCallAttached(newChild);\n }\n if (oldParent === parent) {\n Element.checkChildObservers(parent, 'move', newChild);\n }\n else {\n if (oldParent) {\n Element.checkChildObservers(oldParent, 'remove', newChild);\n }\n Element.checkChildObservers(parent, 'add', newChild);\n }\n }\n }\n static insertChildBatchRemoval(parent, posIndex, count) {\n var _a, _b;\n const relChild = parent.childNodes[posIndex];\n let parentComponent = parent;\n while (parentComponent === null || parentComponent === void 0 ? void 0 : parentComponent._$inheritSlots)\n parentComponent = parentComponent.parentNode;\n const parentComponentShadowRoot = isComponent(parentComponent) && !parentComponent._$external\n ? parentComponent.shadowRoot\n : null;\n // handling child nodes list\n const childNodes = parent.childNodes;\n const relChildren = childNodes.splice(posIndex, count);\n for (let i = posIndex; i < childNodes.length; i += 1) {\n childNodes[i].parentIndex = i;\n }\n const containingSlotUpdater = Element._$updateSubtreeSlotNodes(parent, relChildren, null, parentComponentShadowRoot, posIndex);\n containingSlotUpdater === null || containingSlotUpdater === void 0 ? void 0 : containingSlotUpdater.removeSlotNodes();\n // spread in composed tree\n if (BM.SHADOW || (BM.DYNAMIC && parent.getBackendMode() === 1 /* BackendMode.Shadow */)) {\n if (parent._$backendElement) {\n if (ENV.DEV)\n performanceMeasureStart('backend.spliceRemove');\n parent._$backendElement.spliceRemove(relChild._$backendElement, count);\n if (ENV.DEV)\n performanceMeasureEnd();\n }\n }\n else {\n for (let i = count - 1; i >= 0; i -= 1) {\n Element.insertChildComposed(parent, null, relChildren[i], true, i);\n }\n }\n // remove parent\n for (let i = 0; i < count; i += 1) {\n const relChild = relChildren[i];\n relChild.parentNode = null;\n relChild.parentIndex = -1;\n if (isElement(relChild)) {\n (_a = parent._$mutationObserverTarget) === null || _a === void 0 ? void 0 : _a.detachChild(relChild);\n }\n }\n containingSlotUpdater === null || containingSlotUpdater === void 0 ? void 0 : containingSlotUpdater.updateContainingSlot();\n // update subtree slot\n let subtreeSlotStart = null;\n let subtreeSlotEnd = null;\n for (let i = 0; i < count; i += 1) {\n const relChild = relChildren[i];\n if (!subtreeSlotStart)\n subtreeSlotStart = relChild._$subtreeSlotStart;\n if (relChild._$subtreeSlotEnd)\n subtreeSlotEnd = relChild._$subtreeSlotEnd;\n }\n Element._$updateSubtreeSlotsRemoval(parent, subtreeSlotStart, subtreeSlotEnd, false);\n // update id and slot cache if needed\n (_b = parent.ownerShadowRoot) === null || _b === void 0 ? void 0 : _b._$markIdCacheDirty();\n // call life-times\n for (let i = 0; i < count; i += 1) {\n const relChild = relChildren[i];\n Element.checkAndCallDetached(relChild);\n Element.checkChildObservers(parent, 'remove', relChild);\n }\n }\n static insertChildBatchInsertion(parent, newChildList, posIndex) {\n var _a, _b;\n const relChild = posIndex >= 0 ? parent.childNodes[posIndex] : undefined;\n // update containingSlot\n let parentComponent = parent;\n while (parentComponent === null || parentComponent === void 0 ? void 0 : parentComponent._$inheritSlots)\n parentComponent = parentComponent.parentNode;\n const parentComponentShadowRoot = isComponent(parentComponent) && !parentComponent._$external\n ? parentComponent.shadowRoot\n : null;\n // change the parent of newChild\n let frag;\n if ((BM.SHADOW || (BM.DYNAMIC && parent.getBackendMode() === 1 /* BackendMode.Shadow */)) &&\n newChildList.length >= 5) {\n const backendContext = parent.getBackendContext();\n frag = backendContext.createFragment();\n }\n else {\n frag = null;\n }\n for (let i = 0; i < newChildList.length; i += 1) {\n const newChild = newChildList[i];\n /* istanbul ignore if */\n if (parent.ownerShadowRoot !== newChild.ownerShadowRoot) {\n throw new Error('Cannot move the node from one shadow tree to another shadow tree.');\n }\n const oldParent = newChild.parentNode;\n /* istanbul ignore if */\n if (oldParent) {\n throw new Error('Cannot batch-insert the node which already has a parent.');\n }\n newChild.parentNode = parent;\n if (isElement(newChild)) {\n (_a = parent._$mutationObserverTarget) === null || _a === void 0 ? void 0 : _a.attachChild(newChild);\n }\n if ((BM.SHADOW || (BM.DYNAMIC && parent.getBackendMode() === 1 /* BackendMode.Shadow */)) && frag) {\n const be = newChild._$backendElement;\n if (ENV.DEV)\n performanceMeasureStart('backend.appendChild');\n frag.appendChild(be);\n if (ENV.DEV)\n performanceMeasureEnd();\n }\n }\n // update containingSlot\n const containingSlotUpdater = Element._$updateSubtreeSlotNodes(parent, newChildList, parentComponentShadowRoot, null, posIndex);\n containingSlotUpdater === null || containingSlotUpdater === void 0 ? void 0 : containingSlotUpdater.updateContainingSlot();\n // spread in composed tree\n if (BM.SHADOW || (BM.DYNAMIC && parent.getBackendMode() === 1 /* BackendMode.Shadow */)) {\n if (parent._$backendElement) {\n if (frag) {\n if (relChild) {\n if (ENV.DEV)\n performanceMeasureStart('backend.spliceBefore');\n parent._$backendElement.spliceBefore(relChild._$backendElement, 0, frag);\n if (ENV.DEV)\n performanceMeasureEnd();\n }\n else {\n if (ENV.DEV)\n performanceMeasureStart('backend.spliceAppend');\n parent._$backendElement.spliceAppend(frag);\n if (ENV.DEV)\n performanceMeasureEnd();\n }\n frag.release();\n }\n else {\n if (relChild) {\n for (let i = 0; i < newChildList.length; i += 1) {\n const newChild = newChildList[i];\n if (ENV.DEV)\n performanceMeasureStart('backend.insertBefore');\n parent._$backendElement.insertBefore(newChild._$backendElement, relChild._$backendElement);\n if (ENV.DEV)\n performanceMeasureEnd();\n }\n }\n else {\n for (let i = 0; i < newChildList.length; i += 1) {\n const newChild = newChildList[i];\n if (ENV.DEV)\n performanceMeasureStart('backend.appendChild');\n parent._$backendElement.appendChild(newChild._$backendElement);\n if (ENV.DEV)\n performanceMeasureEnd();\n }\n }\n }\n }\n }\n else {\n const pos = posIndex >= 0 ? posIndex : parent.childNodes.length;\n for (let i = 0; i < newChildList.length; i += 1) {\n const newChild = newChildList[i];\n Element.insertChildComposed(parent, newChild, relChild, false, pos);\n }\n }\n containingSlotUpdater === null || containingSlotUpdater === void 0 ? void 0 : containingSlotUpdater.insertSlotNodes();\n // handling child nodes list\n const childNodes = parent.childNodes;\n if (relChild) {\n childNodes.splice(posIndex, 0, ...newChildList);\n for (let i = posIndex; i < childNodes.length; i += 1) {\n childNodes[i].parentIndex = i;\n }\n }\n else {\n childNodes.push(...newChildList);\n for (let i = childNodes.length - newChildList.length; i < childNodes.length; i += 1) {\n childNodes[i].parentIndex = i;\n }\n }\n // update subtree slot\n let subtreeSlotStart = null;\n let subtreeSlotEnd = null;\n for (let i = 0; i < newChildList.length; i += 1) {\n const newChild = newChildList[i];\n const newChildSubtreeSlotStart = newChild._$subtreeSlotStart;\n const newChildSubtreeSlotEnd = newChild._$subtreeSlotEnd;\n if (newChildSubtreeSlotStart) {\n if (subtreeSlotEnd) {\n newChildSubtreeSlotStart.prev = subtreeSlotEnd;\n subtreeSlotEnd.next = newChildSubtreeSlotStart;\n subtreeSlotEnd = newChildSubtreeSlotEnd;\n }\n else {\n subtreeSlotStart = newChildSubtreeSlotStart;\n subtreeSlotEnd = newChildSubtreeSlotEnd;\n }\n }\n }\n Element._$updateSubtreeSlotsInsertion(parent, subtreeSlotStart, subtreeSlotEnd, posIndex + newChildList.length - 1, false);\n // update id and slot cache if needed\n (_b = parent.ownerShadowRoot) === null || _b === void 0 ? void 0 : _b._$markIdCacheDirty();\n // call life-times\n for (let i = 0; i < newChildList.length; i += 1) {\n const newChild = newChildList[i];\n if (parent._$attached) {\n Element.checkAndCallAttached(newChild);\n }\n Element.checkChildObservers(parent, 'add', newChild);\n }\n }\n static insertChildPlaceholderReplace(parent, posIndex, replacer) {\n var _a, _b, _c, _d, _e, _f;\n /* istanbul ignore if */\n if (replacer && parent.ownerShadowRoot !== replacer.ownerShadowRoot) {\n throw new Error('Cannot move the node from one shadow tree to another shadow tree.');\n }\n /* istanbul ignore if */\n if (replacer.parentNode) {\n throw new Error('Cannot replace with the node which already has a parent.');\n }\n const placeholder = parent.childNodes[posIndex];\n /* istanbul ignore if */\n if (!isElement(placeholder)) {\n throw new Error('Cannot replace on text nodes.');\n }\n /* istanbul ignore if */\n if (placeholder._$slotName !== null || replacer._$slotName !== null) {\n throw new Error('Cannot replace on slot nodes.');\n }\n if (placeholder === replacer)\n return;\n // change the parent of replacer's children\n let frag;\n if (BM.SHADOW || (BM.DYNAMIC && parent.getBackendMode() === 1 /* BackendMode.Shadow */)) {\n const backendContext = parent.getBackendContext();\n if (ENV.DEV)\n performanceMeasureStart('backend.createFragment');\n frag = backendContext.createFragment();\n if (ENV.DEV)\n performanceMeasureEnd();\n }\n else {\n frag = null;\n }\n const replacedChildren = placeholder.childNodes;\n if (BM.SHADOW || (BM.DYNAMIC && parent.getBackendMode() === 1 /* BackendMode.Shadow */)) {\n if (replacedChildren.length > 0) {\n const be = placeholder._$backendElement;\n if (be) {\n if (ENV.DEV)\n performanceMeasureStart('backend.spliceRemove');\n be.spliceRemove(replacedChildren[0]._$backendElement, replacedChildren.length);\n if (ENV.DEV)\n performanceMeasureEnd();\n }\n }\n }\n for (let i = 0; i < replacedChildren.length; i += 1) {\n const child = replacedChildren[i];\n if (BM.DOMLIKE || (BM.DYNAMIC && parent.getBackendMode() === 3 /* BackendMode.Domlike */)) {\n // removal of in-tree elements are not needed for DOM backend\n // do nothing\n }\n else if (BM.SHADOW || (BM.DYNAMIC && parent.getBackendMode() === 1 /* BackendMode.Shadow */)) {\n const be = child._$backendElement;\n if (ENV.DEV)\n performanceMeasureStart('backend.appendChild');\n frag.appendChild(be);\n if (ENV.DEV)\n performanceMeasureEnd();\n }\n else {\n Element.insertChildComposed(placeholder, null, child, true, i);\n }\n child.parentNode = replacer;\n if (isElement(child)) {\n (_a = placeholder._$mutationObserverTarget) === null || _a === void 0 ? void 0 : _a.detachChild(child);\n (_b = parent._$mutationObserverTarget) === null || _b === void 0 ? void 0 : _b.attachChild(child);\n }\n }\n // handling child nodes list for placeholder\n placeholder.childNodes = [];\n // change the parent\n placeholder.parentNode = null;\n placeholder.parentIndex = -1;\n replacer.parentNode = parent;\n // update containingSlot\n const placeholderContainingSlot = placeholder.containingSlot;\n const placeholderSlotIndex = placeholder.slotIndex;\n if (placeholderContainingSlot !== undefined) {\n Element._$updateContainingSlot(replacer, placeholderContainingSlot);\n if (placeholderContainingSlot) {\n Element._$spliceSlotNodes(placeholderContainingSlot, placeholderSlotIndex, 1, undefined);\n }\n }\n const containingSlotUpdater = replacedChildren.length\n ? Element._$updateSubtreeSlotNodes(replacer, replacedChildren, Element._$getParentHostShadowRoot(replacer), Element._$getParentHostShadowRoot(placeholder), 0)\n : null;\n containingSlotUpdater === null || containingSlotUpdater === void 0 ? void 0 : containingSlotUpdater.updateContainingSlot();\n containingSlotUpdater === null || containingSlotUpdater === void 0 ? void 0 : containingSlotUpdater.removeSlotNodes();\n // handling child nodes list for parent\n parent.childNodes[posIndex] = replacer;\n replacer.parentIndex = posIndex;\n // spread in composed tree\n if (BM.SHADOW || (BM.DYNAMIC && parent.getBackendMode() === 1 /* BackendMode.Shadow */)) {\n if (parent._$backendElement) {\n if (ENV.DEV)\n performanceMeasureStart('backend.replaceChild');\n parent._$backendElement.replaceChild(replacer._$backendElement, placeholder._$backendElement, posIndex);\n if (ENV.DEV)\n performanceMeasureEnd();\n if (ENV.DEV)\n performanceMeasureStart('backend.spliceAppend');\n (_c = replacer._$backendElement) === null || _c === void 0 ? void 0 : _c.spliceAppend(frag);\n if (ENV.DEV)\n performanceMeasureEnd();\n }\n if (ENV.DEV)\n performanceMeasureStart('backend.release');\n frag.release();\n if (ENV.DEV)\n performanceMeasureEnd();\n }\n else {\n Element.insertChildComposed(parent, replacer, placeholder, true, posIndex);\n for (let i = 0; i < replacedChildren.length; i += 1) {\n const child = replacedChildren[i];\n Element.insertChildComposed(replacer, child, undefined, false, i);\n }\n }\n containingSlotUpdater === null || containingSlotUpdater === void 0 ? void 0 : containingSlotUpdater.insertSlotNodes();\n if (placeholderContainingSlot !== undefined) {\n Element._$updateContainingSlot(placeholder, undefined);\n if (placeholderContainingSlot) {\n Element._$spliceSlotNodes(placeholderContainingSlot, placeholderSlotIndex, 0, [replacer]);\n }\n }\n // update subtree slots\n // (assume that placeholder and replacer will never be slot node)\n replacer._$subtreeSlotStart = placeholder._$subtreeSlotStart;\n replacer._$subtreeSlotEnd = placeholder._$subtreeSlotEnd;\n (_d = parent._$mutationObserverTarget) === null || _d === void 0 ? void 0 : _d.detachChild(placeholder);\n (_e = parent._$mutationObserverTarget) === null || _e === void 0 ? void 0 : _e.attachChild(replacer);\n // handling child nodes list for replacer\n replacer.childNodes.push(...replacedChildren);\n for (let i = replacer.childNodes.length - replacedChildren.length; i < replacer.childNodes.length; i += 1) {\n replacer.childNodes[i].parentIndex = i;\n }\n // update id and slot cache if needed\n (_f = parent.ownerShadowRoot) === null || _f === void 0 ? void 0 : _f._$markIdCacheDirty();\n // call life-times\n if (parent._$attached) {\n Element.checkAndCallDetached(placeholder);\n Element.checkChildObservers(parent, 'remove', placeholder);\n Element.checkAndCallAttached(replacer);\n Element.checkChildObservers(parent, 'add', replacer);\n for (let i = 0; i < replacedChildren.length; i += 1) {\n const child = replacedChildren[i];\n Element.checkAndCallMoved(child);\n Element.checkChildObservers(parent, 'move', child);\n }\n }\n }\n appendChild(child) {\n Element.insertChildSingleOperation(this, child, this.childNodes.length, false);\n }\n insertChildAt(child, index) {\n Element.insertChildSingleOperation(this, child, index, false);\n }\n insertBefore(child, before) {\n const index = before ? before.parentIndex : -1;\n Element.insertChildSingleOperation(this, child, index, false);\n }\n removeChildAt(index) {\n Element.insertChildSingleOperation(this, null, index, true);\n }\n removeChild(child) {\n const index = child.parentIndex;\n Element.insertChildSingleOperation(this, null, index, true);\n }\n replaceChildAt(child, index) {\n Element.insertChildSingleOperation(this, child, index, true);\n }\n replaceChild(child, relChild) {\n const index = relChild.parentIndex;\n Element.insertChildSingleOperation(this, child, index, true);\n }\n insertChildren(children, index) {\n Element.insertChildBatchInsertion(this, children, index);\n }\n removeChildren(index, count) {\n Element.insertChildBatchRemoval(this, index, count);\n }\n selfReplaceWith(replaceWith) {\n const parent = this.parentNode;\n if (parent) {\n Element.insertChildPlaceholderReplace(parent, this.parentIndex, replaceWith);\n }\n }\n /** @internal */\n static _$generateIdMap(node) {\n const idMap = Object.create(null);\n const dfs = function dfs(node) {\n if (isElement(node)) {\n const nodeId = node._$nodeId;\n if (nodeId) {\n if (!idMap[nodeId])\n idMap[nodeId] = node;\n }\n node.childNodes.forEach(dfs);\n }\n };\n dfs(node);\n return idMap;\n }\n /** Trigger an event on the element */\n triggerEvent(name, detail, options) {\n Event.triggerEvent(this, name, detail, options);\n }\n /** Trigger an event with specified event object on the element */\n dispatchEvent(ev) {\n Event.dispatchEvent(this, ev);\n }\n /* @internal */\n _$setListenerStats(name, finalChanged, options = {}) {\n if (!this._$backendElement)\n return;\n const capture = !!options.capture || !!options.useCapture;\n let mutLevel;\n switch (finalChanged) {\n case 2 /* FinalChanged.None */:\n mutLevel = 0 /* MutLevel.None */;\n break;\n case 4 /* FinalChanged.Mut */:\n mutLevel = 1 /* MutLevel.Mut */;\n break;\n case 3 /* FinalChanged.Final */:\n mutLevel = 2 /* MutLevel.Final */;\n break;\n default:\n return;\n }\n if (this._$nodeTreeContext) {\n if (ENV.DEV)\n performanceMeasureStart('backend.setListenerStats');\n if (BM.DOMLIKE || (BM.DYNAMIC && this.getBackendMode() === 3 /* BackendMode.Domlike */)) {\n ;\n this._$nodeTreeContext.setListenerStats(this._$backendElement, name, capture, mutLevel);\n }\n else {\n ;\n this._$backendElement.setListenerStats(name, capture, mutLevel);\n }\n if (ENV.DEV)\n performanceMeasureEnd();\n }\n }\n /** Add an event listener on the element */\n addListener(name, func, options) {\n const finalChanged = this._$eventTarget.addListener(name, func, options);\n this._$setListenerStats(name, finalChanged, options);\n if (isComponent(this) && this._$definition._$options.listenerChangeLifetimes) {\n this.triggerLifetime('listenerChange', [true, name, func, options]);\n }\n }\n /** Remove an event listener on the element */\n removeListener(name, func, options) {\n const finalChanged = this._$eventTarget.removeListener(name, func, options);\n if (finalChanged === 1 /* FinalChanged.Failed */)\n return;\n this._$setListenerStats(name, finalChanged, options);\n if (isComponent(this) && this._$definition._$options.listenerChangeLifetimes) {\n this.triggerLifetime('listenerChange', [false, name, func, options]);\n }\n }\n /** Get an attribute value ( `null` if not set or removed) */\n getAttribute(name) {\n if (!this._$nodeAttributes)\n return null;\n if (!Object.prototype.hasOwnProperty.call(this._$nodeAttributes, name))\n return null;\n return this._$nodeAttributes[name];\n }\n /** Update an attribute value */\n updateAttribute(name, value) {\n this.setAttribute(name, value);\n }\n /** Set an attribute value */\n setAttribute(name, value) {\n let attrs;\n if (this._$nodeAttributes) {\n attrs = this._$nodeAttributes;\n }\n else {\n attrs = Object.create(null);\n this._$nodeAttributes = attrs;\n }\n attrs[name] = value;\n const be = this._$backendElement;\n if (be) {\n if (ENV.DEV)\n performanceMeasureStart('backend.setAttribute');\n if (BM.DOMLIKE || (BM.DYNAMIC && this.getBackendMode() === 3 /* BackendMode.Domlike */)) {\n if (value === false) {\n be.removeAttribute(name);\n }\n else {\n be.setAttribute(name, value === true || value === undefined || value === null ? '' : String(value));\n }\n }\n else {\n be.setAttribute(name, value);\n }\n if (ENV.DEV)\n performanceMeasureEnd();\n }\n }\n /** Remove an attribute */\n removeAttribute(name) {\n if (this._$nodeAttributes) {\n delete this._$nodeAttributes[name];\n }\n const be = this._$backendElement;\n if (be) {\n if (ENV.DEV)\n performanceMeasureStart('backend.removeAttribute');\n be.removeAttribute(name);\n if (ENV.DEV)\n performanceMeasureEnd();\n }\n }\n /** Set a dataset on the element */\n setDataset(name, value) {\n this.dataset[name] = value;\n if (BM.SHADOW || (BM.DYNAMIC && this.getBackendMode() === 1 /* BackendMode.Shadow */)) {\n if (ENV.DEV)\n performanceMeasureStart('backend.setDataset');\n this._$backendElement.setDataset(name, value);\n if (ENV.DEV)\n performanceMeasureEnd();\n }\n }\n /** Set a mark on the element */\n setMark(name, value) {\n if (!this._$marks) {\n const marks = {};\n marks[name] = value;\n this._$marks = marks;\n }\n else {\n this._$marks[name] = value;\n }\n }\n /**\n * Collect the marks on the element\n *\n * The marks includes the marks on ancestors (in shadow tree) of the element.\n * If multiple marks on different elements shares the same name,\n * the mark value on the child-most element is accepted.\n */\n collectMarks() {\n const ret = {};\n let cur;\n for (cur = this; cur; cur = cur.parentNode) {\n const marks = cur._$marks;\n if (marks) {\n Object.keys(marks).forEach((name) => {\n if (!Object.prototype.hasOwnProperty.call(ret, name)) {\n ret[name] = marks[name];\n }\n });\n }\n }\n return ret;\n }\n /**\n * Attach the element into the backend, swapping out a placeholder element in the backend.\n *\n * The `element` must not be a child node of another element,\n * must not be attached before,\n * and must not have a `ownerShadowRoot` .\n * The `element` `targetParent` and `targetNode` must be in the same backend context.\n * The `element` replaces the `targetNode` in the `targetParent` .\n */\n static replaceDocumentElement(element, targetParent, targetNode) {\n /* istanbul ignore if */\n if (element._$attached) {\n throw new Error('An attached element cannot be attached again');\n }\n if (element._$backendElement) {\n if (ENV.DEV)\n performanceMeasureStart('backend.replaceChild');\n targetParent.replaceChild(element._$backendElement, targetNode);\n if (ENV.DEV)\n performanceMeasureEnd();\n }\n Element.checkAndCallAttached(element);\n }\n /**\n * Make the element looks like attached.\n *\n * If the element will never be attached to backend or it has no backend element at all,\n * this can be used to trigger `attached` life-time.\n */\n static pretendAttached(element) {\n if (!element._$attached) {\n Element.checkAndCallAttached(element);\n }\n }\n /**\n * Make the element looks like detached.\n *\n * This can be used to trigger `detached` life-time without remove the element in the backend.\n */\n static pretendDetached(element) {\n if (element._$attached) {\n Element.checkAndCallDetached(element);\n }\n }\n /** Check the element is attached or not */\n static isAttached(element) {\n return element._$attached;\n }\n /**\n * Set the slot name of the element\n *\n * Once this method is called for an `element` ,\n * it will be treated as a slot which can contain child nodes in composed tree.\n * This method should not be used in components,\n * otherwise the slot content will always be dangled.\n */\n static setSlotName(element, name) {\n var _a;\n /* istanbul ignore if */\n if (element._$inheritSlots) {\n throw new Error('Slot-inherit mode is not usable in slot element');\n }\n const slotName = name ? String(name) : '';\n const oldSlotName = element._$slotName;\n if (oldSlotName === slotName)\n return;\n const needInsertSlot = oldSlotName === null;\n element._$slotName = slotName;\n if (needInsertSlot) {\n element._$subtreeSlotStart = element._$subtreeSlotEnd = {\n value: element,\n prev: null,\n next: null,\n };\n }\n if (BM.SHADOW || (BM.DYNAMIC && element.getBackendMode() === 1 /* BackendMode.Shadow */)) {\n if (ENV.DEV)\n performanceMeasureStart('backend.setSlotName');\n (_a = element._$backendElement) === null || _a === void 0 ? void 0 : _a.setSlotName(slotName);\n if (ENV.DEV)\n performanceMeasureEnd();\n }\n const owner = element.ownerShadowRoot;\n if (owner) {\n if (needInsertSlot) {\n if (owner.getSlotMode() === 3 /* SlotMode.Dynamic */)\n element._$slotValues = Object.create(null);\n element.slotNodes = [];\n const parent = element.parentNode;\n if (parent) {\n Element._$updateSubtreeSlotsInsertion(parent, element._$subtreeSlotStart, element._$subtreeSlotEnd, element.parentIndex, false);\n }\n }\n else {\n if (owner.isConnected(element))\n owner._$applySlotRename(element, slotName, oldSlotName);\n }\n }\n }\n /**\n * Get the slot name of the element\n */\n static getSlotName(element) {\n const sn = element._$slotName;\n return sn === null ? undefined : sn;\n }\n /**\n * Set the virtual node to slot-inherit mode\n *\n * In slot-inherit mode of an element,\n * the child nodes of the element will be treated as siblings and can have different target slot.\n */\n static setInheritSlots(element) {\n /* istanbul ignore if */\n if (!element._$virtual) {\n throw new Error('Cannot set slot-inherit on non-virtual node');\n }\n /* istanbul ignore if */\n if (element._$slotName !== null || element.childNodes.length !== 0) {\n throw new Error('Slot-inherit mode cannot be set when the element has any child node');\n }\n if (BM.SHADOW || (BM.DYNAMIC && element.getBackendMode() === 1 /* BackendMode.Shadow */)) {\n const be = element._$backendElement;\n if (be) {\n if (ENV.DEV)\n performanceMeasureStart('backend.setInheritSlots');\n be.setInheritSlots();\n if (ENV.DEV)\n performanceMeasureEnd();\n }\n }\n element._$inheritSlots = true;\n }\n /** Get whether the slot-inherit mode is set or not */\n static getInheritSlots(element) {\n return element._$inheritSlots;\n }\n /** Get whether the slot-inherit mode is set or not */\n isInheritSlots() {\n return this._$inheritSlots;\n }\n /**\n * Set the binding slot of specific node\n *\n * Necessary if node belongs to a dynamic slot, which cannot be identified by slot name.\n */\n static setSlotElement(node, slot) {\n const oldSlotElement = node._$slotElement;\n if (oldSlotElement === slot)\n return;\n node._$slotElement = slot;\n const slotParentShadowRoot = Element._$getParentHostShadowRoot(node.parentNode);\n if (slotParentShadowRoot) {\n const containingSlotUpdater = Element._$updateSubtreeSlotNodes(node.parentNode, [node], slotParentShadowRoot, slotParentShadowRoot, node.parentIndex);\n const oldSlot = node.containingSlot;\n containingSlotUpdater === null || containingSlotUpdater === void 0 ? void 0 : containingSlotUpdater.updateContainingSlot();\n containingSlotUpdater === null || containingSlotUpdater === void 0 ? void 0 : containingSlotUpdater.removeSlotNodes();\n const newSlot = node.containingSlot;\n const recv = (node) => {\n if (isElement(node) && node._$inheritSlots) {\n for (let i = 0; i < node.childNodes.length; i += 1) {\n recv(node.childNodes[i]);\n }\n }\n else {\n Element.insertChildReassign(node.parentNode, node, oldSlot, newSlot, node.parentIndex);\n }\n };\n recv(node);\n containingSlotUpdater === null || containingSlotUpdater === void 0 ? void 0 : containingSlotUpdater.insertSlotNodes();\n }\n }\n static _$updateContainingSlot(node, containingSlot) {\n var _a;\n node.containingSlot = containingSlot;\n if (BM.SHADOW ||\n (BM.DYNAMIC && ((_a = node.ownerShadowRoot) === null || _a === void 0 ? void 0 : _a.getBackendMode()) === 1 /* BackendMode.Shadow */)) {\n if (ENV.DEV)\n performanceMeasureStart('backend.setContainingSlot');\n node._$backendElement.setContainingSlot(containingSlot ? containingSlot._$backendElement : containingSlot);\n if (ENV.DEV)\n performanceMeasureEnd();\n }\n }\n static _$spliceSlotNodes(slot, before, deleteCount, insertion) {\n const slotNodes = (slot.slotNodes = slot.slotNodes || []);\n const spliceBefore = before >= 0 && before < slotNodes.length;\n if (insertion === null || insertion === void 0 ? void 0 : insertion.length) {\n if (spliceBefore) {\n for (let i = before; i < before + deleteCount; i += 1) {\n slotNodes[i].slotIndex = undefined;\n }\n slotNodes.splice(before, deleteCount, ...insertion);\n for (let i = before; i < slotNodes.length; i += 1) {\n slotNodes[i].slotIndex = i;\n }\n }\n else {\n const start = slotNodes.length;\n slotNodes.push(...insertion);\n for (let i = start; i < slotNodes.length; i += 1) {\n slotNodes[i].slotIndex = i;\n }\n }\n }\n else if (deleteCount) {\n for (let i = before; i < before + deleteCount; i += 1) {\n slotNodes[i].slotIndex = undefined;\n }\n slotNodes.splice(before, deleteCount);\n for (let i = before; i < slotNodes.length; i += 1) {\n slotNodes[i].slotIndex = i;\n }\n }\n if (BM.SHADOW || (BM.DYNAMIC && slot.getBackendMode() === 1 /* BackendMode.Shadow */)) {\n if (insertion === null || insertion === void 0 ? void 0 : insertion.length) {\n if (ENV.DEV)\n performanceMeasureStart('backend.createFragment');\n const frag = slot._$nodeTreeContext.createFragment();\n if (ENV.DEV)\n performanceMeasureEnd();\n for (let i = 0; i < insertion.length; i += 1) {\n if (ENV.DEV)\n performanceMeasureStart('backend.appendChild');\n frag.appendChild(insertion[i]._$backendElement);\n if (ENV.DEV)\n performanceMeasureEnd();\n }\n if (spliceBefore) {\n if (ENV.DEV)\n performanceMeasureStart('backend.spliceBeforeSlotNodes');\n slot._$backendElement.spliceBeforeSlotNodes(before, deleteCount, frag);\n if (ENV.DEV)\n performanceMeasureEnd();\n }\n else {\n if (ENV.DEV)\n performanceMeasureStart('backend.spliceAppendSlotNodes');\n slot._$backendElement.spliceAppendSlotNodes(frag);\n if (ENV.DEV)\n performanceMeasureEnd();\n }\n frag.release();\n }\n else if (deleteCount) {\n if (ENV.DEV)\n performanceMeasureStart('backend.spliceRemoveSlotNodes');\n slot._$backendElement.spliceRemoveSlotNodes(before, deleteCount);\n if (ENV.DEV)\n performanceMeasureEnd();\n }\n }\n }\n /** @internal */\n static _$findSlotNodeInsertPosition(slot, target, newPosIndex) {\n const host = slot.ownerShadowRoot.getHostNode();\n const getNodeDepth = (node) => {\n let depth = 0;\n let cur = node;\n while (cur && cur !== host) {\n depth += 1;\n cur = cur.parentNode;\n }\n return depth;\n };\n const targetDepth = getNodeDepth(target);\n const comparePos = (slotNode1, parentIndex1, slotDepth1, slotNode2, parentIndex2, slotDepth2, posIndex) => {\n if (slotNode1 === slotNode2)\n return 0;\n if (slotNode1.parentNode === slotNode2.parentNode) {\n return parentIndex1 - (parentIndex2 === -1 ? posIndex : parentIndex2);\n }\n if (slotDepth2 < slotDepth1) {\n const nextSlotNode1 = slotNode1.parentNode;\n return comparePos(nextSlotNode1, nextSlotNode1.parentIndex, slotDepth1 - 1, slotNode2, parentIndex2, slotDepth2, posIndex);\n }\n const left = slotDepth1 < slotDepth2 ? slotNode1 : slotNode1.parentNode;\n const leftDepth = slotDepth1 < slotDepth2 ? slotDepth1 : slotDepth1 - 1;\n const right = slotNode2.parentNode;\n const rightDepth = slotDepth2 - 1;\n const rst = comparePos(left, left.parentIndex, leftDepth, right, right.parentIndex, rightDepth, posIndex);\n if (rst === 0)\n return -1;\n return rst;\n };\n const slotNodes = slot.slotNodes;\n let i = slotNodes.length - 1;\n for (; i >= 0; i -= 1) {\n const slotNode = slotNodes[i];\n if (comparePos(slotNode, slotNode.parentIndex, getNodeDepth(slotNode), target, target.parentIndex, targetDepth, newPosIndex >= 0\n ? newPosIndex - 0.5\n : // negative posIndex (such as -1) means to insert at the tail\n slotNodes.length) < 0)\n break;\n }\n const insertPos = i + 1;\n return insertPos;\n }\n /** Get composed parent (including virtual nodes) */\n getComposedParent() {\n if (isShadowRoot(this))\n return this.getHostNode();\n if (this.containingSlot !== undefined)\n return this.containingSlot;\n let parent = this.parentNode;\n while (parent === null || parent === void 0 ? void 0 : parent._$inheritSlots) {\n parent = parent.parentNode;\n }\n return parent;\n }\n /**\n * Get the composed children\n *\n * This method always returns a new array.\n * It is convenient but less performant.\n * For better performance, consider using `forEachComposedChild` .\n */\n getComposedChildren() {\n const ret = [];\n this.forEachComposedChild((child) => {\n ret.push(child);\n });\n return ret;\n }\n /**\n * Iterate composed child nodes (including virtual nodes)\n *\n * if `f` returns `false` then the iteration is interrupted.\n * Returns `true` if that happens.\n */\n forEachComposedChild(f) {\n if (this._$inheritSlots)\n return true;\n if (isComponent(this) && !this._$external) {\n return f(this.shadowRoot) !== false;\n }\n if (this._$slotName !== null) {\n const ownerShadowRoot = this.ownerShadowRoot;\n if (!ownerShadowRoot)\n return true;\n return ownerShadowRoot.forEachNodeInSpecifiedSlot(this, f);\n }\n const recInheritSlots = (children) => {\n for (let i = 0; i < children.length; i += 1) {\n const child = children[i];\n if (f(child) === false)\n return false;\n if (child._$inheritSlots) {\n if (!recInheritSlots(child.childNodes))\n return false;\n }\n }\n return true;\n };\n return recInheritSlots(this.childNodes);\n }\n /**\n * Iterate non-virtual composed child nodes\n *\n * if `f` returns `false` then the iteration is interrupted.\n * Returns `true` if that happens.\n */\n forEachNonVirtualComposedChild(f) {\n if (this._$inheritSlots)\n return true;\n const recNonVirtual = (child) => {\n if (child._$virtual) {\n return child.forEachNonVirtualComposedChild(f);\n }\n return f(child) !== false;\n };\n if (isComponent(this) && !this._$external) {\n return recNonVirtual(this.shadowRoot);\n }\n if (this._$slotName !== null) {\n const ownerShadowRoot = this.ownerShadowRoot;\n if (!ownerShadowRoot)\n return true;\n return ownerShadowRoot.forEachSlotContentInSpecifiedSlot(this, recNonVirtual);\n }\n const recInheritSlots = (children) => {\n for (let i = 0; i < children.length; i += 1) {\n const child = children[i];\n if (!recNonVirtual(child))\n return false;\n if (child._$inheritSlots) {\n if (!recInheritSlots(child.childNodes))\n return false;\n }\n }\n return true;\n };\n return recInheritSlots(this.childNodes);\n }\n /** Parse a selector string so that it can be used multiple queries */\n static parseSelector(str) {\n return new ParsedSelector(str);\n }\n /** Select the first descendant which matches the selector */\n querySelector(selectorStr) {\n const parsedSelector = selectorStr instanceof ParsedSelector ? selectorStr : new ParsedSelector(selectorStr);\n const ret = parsedSelector.query(this, true);\n return ret;\n }\n /** Select all descendants which matches the selector */\n querySelectorAll(selectorStr) {\n const parsedSelector = selectorStr instanceof ParsedSelector ? selectorStr : new ParsedSelector(selectorStr);\n const ret = parsedSelector.query(this, false);\n return ret;\n }\n /** Test whether the target matches the selector */\n static matchSelector(selectorStr, target) {\n const parsedSelector = selectorStr instanceof ParsedSelector ? selectorStr : new ParsedSelector(selectorStr);\n return parsedSelector.testSelector(null, target);\n }\n /** Test whether the target in this subtree matches the selector */\n matchSelector(selectorStr, target) {\n const parsedSelector = selectorStr instanceof ParsedSelector ? selectorStr : new ParsedSelector(selectorStr);\n return parsedSelector.testSelector(this, target);\n }\n /**\n * Get the bounding client rect\n *\n * Return zero values when the backend element is invalid or it does not have layout information.\n */\n getBoundingClientRect(cb) {\n var _a;\n const backendElement = this._$backendElement;\n if (!backendElement) {\n setTimeout(() => {\n cb({\n left: 0,\n top: 0,\n width: 0,\n height: 0,\n });\n }, 0);\n return;\n }\n if (BM.DOMLIKE || (BM.DYNAMIC && this.getBackendMode() === 3 /* BackendMode.Domlike */)) {\n const e = backendElement;\n const res = ((_a = e.getBoundingClientRect) === null || _a === void 0 ? void 0 : _a.call(e)) || { left: 0, top: 0, width: 0, height: 0 };\n setTimeout(() => {\n cb(res);\n }, 0);\n }\n else {\n const be = backendElement;\n if (be.getBoundingClientRect) {\n be.getBoundingClientRect(cb);\n }\n else {\n setTimeout(() => {\n cb({\n left: 0,\n top: 0,\n width: 0,\n height: 0,\n });\n }, 0);\n }\n }\n }\n /**\n * Get the bounding client rect\n *\n * Return zero values when the backend element is invalid or it does not have layout information.\n */\n getScrollOffset(cb) {\n const backendElement = this._$backendElement;\n if (!backendElement) {\n setTimeout(() => {\n cb({\n scrollLeft: 0,\n scrollTop: 0,\n scrollWidth: 0,\n scrollHeight: 0,\n });\n }, 0);\n return;\n }\n if (BM.DOMLIKE || (BM.DYNAMIC && this.getBackendMode() === 3 /* BackendMode.Domlike */)) {\n const e = backendElement;\n const res = {\n scrollLeft: e.scrollLeft || 0,\n scrollTop: e.scrollTop || 0,\n scrollWidth: e.scrollWidth || 0,\n scrollHeight: e.scrollHeight || 0,\n };\n setTimeout(() => {\n cb(res);\n }, 0);\n }\n else {\n const be = backendElement;\n if (be.getScrollOffset) {\n be.getScrollOffset(cb);\n }\n else {\n setTimeout(() => {\n cb({\n scrollLeft: 0,\n scrollTop: 0,\n scrollWidth: 0,\n scrollHeight: 0,\n });\n }, 0);\n }\n }\n }\n /**\n * Create an intersection observer\n *\n * The `relativeElement` is the element to calculate intersection with ( `null` for the viewport).\n * The `relativeElementMargin` is the margins of the `relativeElement` .\n * The `thresholds` is a list of intersection ratios to trigger the `listener` .\n * The listener always triggers once immediately after this call.\n */\n createIntersectionObserver(relativeElement, relativeElementMargin, thresholds, listener) {\n const backendElement = this._$backendElement;\n if (backendElement) {\n if (relativeElement && !relativeElement._$backendElement) {\n return null;\n }\n if (BM.DOMLIKE || (BM.DYNAMIC && this.getBackendMode() === 3 /* BackendMode.Domlike */)) {\n const context = this._$nodeTreeContext;\n if (!context || !context.createIntersectionObserver)\n return null;\n return context.createIntersectionObserver(backendElement, (relativeElement === null || relativeElement === void 0 ? void 0 : relativeElement._$backendElement) || null, relativeElementMargin, thresholds, listener);\n }\n const be = backendElement;\n if (!be.createIntersectionObserver)\n return null;\n return be.createIntersectionObserver((relativeElement === null || relativeElement === void 0 ? void 0 : relativeElement._$backendElement) || null, relativeElementMargin, thresholds, listener);\n }\n return null;\n }\n /**\n * Get an interactive context\n */\n getContext(cb) {\n const backendElement = this._$backendElement;\n if (!backendElement)\n return;\n if (BM.DOMLIKE || (BM.DYNAMIC && this.getBackendMode() === 3 /* BackendMode.Domlike */)) {\n const context = this._$nodeTreeContext;\n if (context === null || context === void 0 ? void 0 : context.getContext) {\n context.getContext(backendElement, cb);\n }\n else {\n cb(null);\n }\n }\n else {\n const be = backendElement;\n if (be.getContext) {\n be.getContext(cb);\n }\n else {\n cb(null);\n }\n }\n }\n}\nElement.isElement = isElement;\n/** @internal */\nElement._$getParentHostShadowRoot = (parent) => {\n let parentSlotHost = parent;\n while (parentSlotHost === null || parentSlotHost === void 0 ? void 0 : parentSlotHost._$inheritSlots)\n parentSlotHost = parentSlotHost.parentNode;\n return isComponent(parentSlotHost) && !parentSlotHost._$external\n ? parentSlotHost.shadowRoot\n : null;\n};\nElement.prototype[ELEMENT_SYMBOL] = true;\n//# sourceMappingURL=element.js.map","import { Behavior } from './behavior';\nimport { ComponentDefinition } from './component';\nimport { safeCallback } from './func_arr';\nimport { TraitBehavior } from './trait_behaviors';\nimport { isComponent, isElement, isVirtualNode } from './type_symbol';\nimport { triggerWarning } from './warning';\nexport var RelationType;\n(function (RelationType) {\n RelationType[RelationType[\"Ancestor\"] = 0] = \"Ancestor\";\n RelationType[RelationType[\"Descendant\"] = 1] = \"Descendant\";\n RelationType[RelationType[\"ParentNonVirtualNode\"] = 2] = \"ParentNonVirtualNode\";\n RelationType[RelationType[\"ChildNonVirtualNode\"] = 3] = \"ChildNonVirtualNode\";\n RelationType[RelationType[\"ParentComponent\"] = 4] = \"ParentComponent\";\n RelationType[RelationType[\"ChildComponent\"] = 5] = \"ChildComponent\";\n})(RelationType || (RelationType = {}));\nconst RELATION_TYPE_COUNT = 6;\nexport const normalizeRelation = (ownerSpace, is, key, relation) => {\n const checkRelationFunc = (f) => {\n if (typeof f === 'function') {\n return f;\n }\n if (f !== undefined) {\n triggerWarning(`the \"${key}\" relation listener is not a function (when preparing behavior \"${is}\").`);\n }\n return null;\n };\n let type;\n if (relation.type === 'parent') {\n type = 4 /* RelationType.ParentComponent */;\n }\n else if (relation.type === 'child') {\n type = 5 /* RelationType.ChildComponent */;\n }\n else if (relation.type === 'parent-common-node') {\n type = 2 /* RelationType.ParentNonVirtualNode */;\n }\n else if (relation.type === 'child-common-node') {\n type = 3 /* RelationType.ChildNonVirtualNode */;\n }\n else if (relation.type === 'ancestor') {\n type = 0 /* RelationType.Ancestor */;\n }\n else if (relation.type === 'descendant') {\n type = 1 /* RelationType.Descendant */;\n }\n else {\n const type = relation.type;\n triggerWarning(`the \"${key}\" relation has an invalid relation type \"${type}\" (when preparing behavior \"${is}\").`);\n return null;\n }\n let target = null;\n if (relation.target instanceof ComponentDefinition) {\n target = relation.target.behavior;\n }\n else if (relation.target instanceof Behavior || relation.target instanceof TraitBehavior) {\n target = relation.target;\n }\n else {\n const path = String(relation.target || key);\n const usingTarget = ownerSpace.getComponentByUrlWithoutDefault(path, is);\n if (usingTarget) {\n target = usingTarget.behavior;\n }\n else {\n const globalTarget = ownerSpace.getGlobalUsingComponent(path);\n if (typeof globalTarget === 'object' && globalTarget !== null) {\n target = globalTarget.behavior;\n }\n }\n }\n if (!target) {\n triggerWarning(`the target of relation \"${key}\" is not a valid behavior or component (when preparing behavior \"${is}\").`);\n return null;\n }\n return {\n target,\n type,\n linked: checkRelationFunc(relation.linked),\n linkChanged: checkRelationFunc(relation.linkChanged),\n unlinked: checkRelationFunc(relation.unlinked),\n linkFailed: checkRelationFunc(relation.linkFailed),\n };\n};\nexport const generateRelationDefinitionGroup = (relations) => {\n if (relations === undefined)\n return null;\n const group = {\n definitions: new Array(RELATION_TYPE_COUNT),\n keyMap: Object.create(null),\n };\n const defs = group.definitions;\n const keyMap = group.keyMap;\n const keys = Object.keys(relations);\n for (let i = 0; i < keys.length; i += 1) {\n const key = keys[i];\n const relation = relations[key];\n const relationType = relation.type;\n if (defs[relationType]) {\n keyMap[key] = [relationType, defs[relationType].length];\n defs[relationType].push(relation);\n }\n else {\n keyMap[key] = [relationType, 0];\n defs[relationType] = [relation];\n }\n }\n return group;\n};\nexport const cloneRelationDefinitionGroup = (group) => {\n const newGroup = {\n definitions: group.definitions.slice(),\n keyMap: Object.assign(Object.create(null), group.keyMap),\n };\n return newGroup;\n};\nexport class Relation {\n constructor(associatedComponent, group) {\n this._$comp = associatedComponent;\n const links = new Array(RELATION_TYPE_COUNT);\n if (group) {\n for (let type = 0; type < RELATION_TYPE_COUNT; type += 1) {\n const definitions = group.definitions[type];\n if (definitions) {\n const link = new Array(definitions.length);\n for (let i = 0; i < definitions.length; i += 1) {\n link[i] = null;\n }\n links[type] = link;\n }\n }\n }\n this._$group = group;\n this._$sharedGroup = true;\n this._$links = links;\n }\n add(relation) {\n if (this._$sharedGroup) {\n this._$sharedGroup = false;\n const group = this._$group;\n if (group) {\n this._$group = {\n definitions: group.definitions.slice(),\n keyMap: Object.assign(Object.create(null), group.keyMap),\n };\n }\n else {\n this._$group = {\n definitions: new Array(RELATION_TYPE_COUNT),\n keyMap: Object.create(null),\n };\n }\n }\n const key = Symbol('');\n const defs = this._$group.definitions;\n const keyMap = this._$group.keyMap;\n const relationType = relation.type;\n if (defs[relationType]) {\n keyMap[key] = [relationType, defs[relationType].length];\n defs[relationType].push(relation);\n }\n else {\n keyMap[key] = [relationType, 0];\n defs[relationType] = [relation];\n }\n const linksGroup = this._$links;\n if (linksGroup[relationType] === undefined) {\n linksGroup[relationType] = [null];\n }\n else {\n linksGroup[relationType].push(null);\n }\n return key;\n }\n triggerLinkEvent(parentType, isDetach) {\n var _a, _b;\n const comp = this._$comp;\n const linksGroup = this._$links;\n const selfDefs = (_a = this._$group) === null || _a === void 0 ? void 0 : _a.definitions[parentType];\n if (!selfDefs)\n return;\n for (let i = 0; i < selfDefs.length; i += 1) {\n const links = linksGroup[parentType];\n const oldLink = links[i];\n let newLink = null;\n const def = selfDefs[i];\n const parentBehavior = def.target;\n if (!isDetach) {\n let cur = comp;\n for (;;) {\n const next = cur.parentNode;\n if (!next)\n break;\n cur = next;\n if (isVirtualNode(cur)) {\n continue;\n }\n if (isComponent(cur)) {\n if (cur.hasBehavior(parentBehavior)) {\n const parentRelation = cur._$relation;\n if (parentRelation) {\n let rt;\n if (parentType === 4 /* RelationType.ParentComponent */) {\n rt = 5 /* RelationType.ChildComponent */;\n }\n else if (parentType === 0 /* RelationType.Ancestor */) {\n rt = 1 /* RelationType.Descendant */;\n }\n else {\n rt = 3 /* RelationType.ChildNonVirtualNode */;\n }\n const parentDefs = (_b = parentRelation._$group) === null || _b === void 0 ? void 0 : _b.definitions[rt];\n if (parentDefs) {\n for (let j = 0; j < parentDefs.length; j += 1) {\n const def = parentDefs[j];\n if (def.target && this._$comp.hasBehavior(def.target)) {\n newLink = {\n target: cur,\n def,\n };\n break;\n }\n }\n if (newLink)\n break;\n }\n }\n }\n if (parentType === 4 /* RelationType.ParentComponent */)\n break;\n }\n if (parentType === 2 /* RelationType.ParentNonVirtualNode */)\n break;\n }\n }\n links[i] = newLink;\n if (oldLink) {\n const oldTarget = oldLink.target;\n const oldDef = oldLink.def;\n if (!newLink || oldLink.target !== newLink.target || oldLink.def !== newLink.def) {\n if (oldDef.unlinked) {\n safeCallback('Relation Unlinked Callback', oldDef.unlinked, oldTarget.getMethodCaller(), [comp.getMethodCaller()], oldTarget);\n }\n if (def.unlinked) {\n safeCallback('Relation Unlinked Callback', def.unlinked, comp.getMethodCaller(), [oldTarget.getMethodCaller()], comp);\n }\n }\n else {\n if (oldDef.linkChanged) {\n safeCallback('Relation Link Changed Callback', oldDef.linkChanged, oldTarget.getMethodCaller(), [comp.getMethodCaller()], oldTarget);\n }\n if (def.linkChanged) {\n safeCallback('Relation Link Changed Callback', def.linkChanged, comp.getMethodCaller(), [oldTarget.getMethodCaller()], comp);\n }\n }\n }\n if (newLink) {\n const newTarget = newLink.target;\n const newDef = newLink.def;\n if (!oldLink || oldLink.target !== newLink.target || oldLink.def !== newLink.def) {\n if (newDef.linked) {\n safeCallback('Relation Linked Callback', newDef.linked, newTarget.getMethodCaller(), [comp.getMethodCaller()], newTarget);\n }\n if (def.linked) {\n safeCallback('Relation Linked Callback', def.linked, comp.getMethodCaller(), [newTarget.getMethodCaller()], comp);\n }\n }\n }\n if (!isDetach && !newLink && def.linkFailed) {\n safeCallback('Relation Link Failed Callback', def.linkFailed, comp.getMethodCaller(), [], comp);\n }\n }\n }\n getLinkedTargets(key) {\n var _a, _b, _c, _d;\n const typeWithIndex = (_a = this._$group) === null || _a === void 0 ? void 0 : _a.keyMap[key];\n if (!typeWithIndex) {\n triggerWarning(`no relation \"${String(key)}\" found.`);\n return [];\n }\n const [type, index] = typeWithIndex;\n if (type === 4 /* RelationType.ParentComponent */ ||\n type === 2 /* RelationType.ParentNonVirtualNode */ ||\n type === 0 /* RelationType.Ancestor */) {\n const link = (_b = this._$links[type]) === null || _b === void 0 ? void 0 : _b[index];\n if (link)\n return [link.target];\n return [];\n }\n const ret = [];\n const comp = this._$comp;\n const def = (_d = (_c = this._$group) === null || _c === void 0 ? void 0 : _c.definitions[type]) === null || _d === void 0 ? void 0 : _d[index];\n const dfs = (node) => {\n const children = node.childNodes;\n for (let i = 0; i < children.length; i += 1) {\n const child = children[i];\n if (!isElement(child))\n continue;\n if (isVirtualNode(child)) {\n dfs(child);\n continue;\n }\n if (isComponent(child)) {\n if (child._$relation) {\n let links;\n if (type === 5 /* RelationType.ChildComponent */) {\n links = child._$relation._$links[4 /* RelationType.ParentComponent */];\n }\n else if (type === 1 /* RelationType.Descendant */) {\n links = child._$relation._$links[0 /* RelationType.Ancestor */];\n }\n else {\n links = child._$relation._$links[2 /* RelationType.ParentNonVirtualNode */];\n }\n if (links) {\n for (let i = 0; i < links.length; i += 1) {\n const link = links[i];\n if (link && link.target === comp && link.def === def) {\n ret.push(child);\n break;\n }\n }\n }\n }\n if (type === 1 /* RelationType.Descendant */)\n dfs(child);\n }\n else {\n if (type === 5 /* RelationType.ChildComponent */ || type === 1 /* RelationType.Descendant */)\n dfs(child);\n }\n }\n };\n dfs(this._$comp);\n return ret;\n }\n}\n//# sourceMappingURL=relation.js.map","import { BM, } from './backend';\nimport { ClassList, StyleScopeManager } from './class_list';\nimport { Element } from './element';\nimport { ENV, globalOptions } from './global_options';\nimport { performanceMeasureEnd, performanceMeasureStart } from './devtool';\nimport { NATIVE_NODE_SYMBOL, isNativeNode } from './type_symbol';\nexport class NativeNode extends Element {\n /* istanbul ignore next */\n constructor() {\n throw new Error('Element cannot be constructed directly');\n // eslint-disable-next-line no-unreachable\n super();\n }\n static create(tagName, owner, stylingName, placeholderHandlerRemover) {\n var _a, _b;\n const node = Object.create(NativeNode.prototype);\n node.is = tagName;\n node.stylingName = stylingName !== null && stylingName !== void 0 ? stylingName : tagName;\n node._$placeholderHandlerRemover = placeholderHandlerRemover;\n const nodeTreeContext = owner.getBackendContext();\n let backendElement = null;\n if (nodeTreeContext) {\n if (ENV.DEV)\n performanceMeasureStart('backend.createElement');\n if (BM.DOMLIKE || (BM.DYNAMIC && owner.getBackendMode() === 3 /* BackendMode.Domlike */)) {\n backendElement = nodeTreeContext.document.createElement(tagName);\n }\n else if (BM.SHADOW || (BM.DYNAMIC && owner.getBackendMode() === 1 /* BackendMode.Shadow */)) {\n backendElement = owner._$backendShadowRoot.createElement(tagName, node.stylingName);\n }\n else {\n const backend = nodeTreeContext;\n backendElement = backend.createElement(tagName, node.stylingName);\n }\n if (ENV.DEV)\n performanceMeasureEnd();\n }\n node._$initialize(false, backendElement, owner, owner._$nodeTreeContext);\n const ownerHost = owner.getHostNode();\n const ownerComponentOptions = ownerHost.getComponentOptions();\n const styleScope = (_a = ownerComponentOptions.styleScope) !== null && _a !== void 0 ? _a : StyleScopeManager.globalScope();\n const extraStyleScope = (_b = ownerComponentOptions.extraStyleScope) !== null && _b !== void 0 ? _b : undefined;\n const styleScopeManager = ownerHost._$behavior.ownerSpace.styleScopeManager;\n node.classList = new ClassList(node, undefined, ownerHost.classList, styleScope, extraStyleScope, styleScopeManager);\n if (backendElement) {\n if (BM.COMPOSED || (BM.DYNAMIC && owner.getBackendMode() === 2 /* BackendMode.Composed */)) {\n if (ENV.DEV)\n performanceMeasureStart('backend.setStyleScope');\n backendElement.setStyleScope(styleScope, extraStyleScope);\n if (ENV.DEV)\n performanceMeasureEnd();\n }\n if (globalOptions.writeExtraInfoToAttr) {\n const prefix = styleScopeManager.queryName(styleScope);\n if (prefix) {\n backendElement.setAttribute('exparser:info-class-prefix', `${prefix}--`);\n }\n }\n if (ENV.DEV)\n performanceMeasureStart('backend.associateValue');\n if (!(BM.DOMLIKE || (BM.DYNAMIC && owner.getBackendMode() === 3 /* BackendMode.Domlike */))) {\n ;\n backendElement.associateValue(node);\n }\n else {\n ;\n owner.getBackendContext().associateValue(backendElement, node);\n }\n if (ENV.DEV)\n performanceMeasureEnd();\n }\n return node;\n }\n setModelBindingListener(propName, listener) {\n if (!this._$modelBindingListeners) {\n this._$modelBindingListeners = Object.create(null);\n }\n if (!this._$modelBindingListeners[propName]) {\n const backendElement = this.getBackendElement();\n if (backendElement) {\n const listener = (value) => {\n var _a;\n const listener = (_a = this._$modelBindingListeners) === null || _a === void 0 ? void 0 : _a[propName];\n if (listener) {\n listener.call(this, value);\n }\n };\n if (ENV.DEV)\n performanceMeasureStart('backend.setModelBindingStat');\n if (BM.DOMLIKE || (BM.DYNAMIC && this.getBackendMode() === 3 /* BackendMode.Domlike */)) {\n ;\n this.getBackendContext().setModelBindingStat(backendElement, propName, listener);\n }\n else {\n ;\n backendElement.setModelBindingStat(propName, listener);\n }\n if (ENV.DEV)\n performanceMeasureEnd();\n }\n }\n this._$modelBindingListeners[propName] = listener;\n }\n getModelBindingListeners() {\n const listeners = Object.create(null);\n if (this._$modelBindingListeners) {\n Object.keys(this._$modelBindingListeners).forEach((propName) => {\n const listener = (value) => {\n var _a;\n const listener = (_a = this._$modelBindingListeners) === null || _a === void 0 ? void 0 : _a[propName];\n if (listener) {\n listener.call(this, value);\n }\n };\n listeners[propName] = listener;\n });\n }\n return listeners;\n }\n}\nNativeNode.isNativeNode = isNativeNode;\nNativeNode.prototype[NATIVE_NODE_SYMBOL] = true;\n//# sourceMappingURL=native_node.js.map","import { BM, } from './backend';\nimport { ENV } from './global_options';\nimport { performanceMeasureEnd, performanceMeasureStart } from './devtool';\nimport { MutationObserverTarget } from './mutation_observer';\nimport { TEXT_NODE_SYMBOL, isTextNode } from './type_symbol';\nexport class TextNode {\n constructor(text, owner) {\n /** @internal */\n this._$slotElement = null;\n /** @internal */\n this._$destroyOnDetach = false;\n /** @internal */\n this._$subtreeSlotStart = null;\n /** @internal */\n this._$subtreeSlotEnd = null;\n this._$text = String(text);\n let backendElement = null;\n const context = owner.getBackendContext();\n if (context) {\n if (ENV.DEV)\n performanceMeasureStart('backend.createTextNode');\n if (BM.DOMLIKE || (BM.DYNAMIC && owner.getBackendMode() === 3 /* BackendMode.Domlike */)) {\n backendElement = context.document.createTextNode(text);\n }\n else if (BM.SHADOW || (BM.DYNAMIC && owner.getBackendMode() === 1 /* BackendMode.Shadow */)) {\n const backend = owner._$backendShadowRoot;\n backendElement = backend.createTextNode(text);\n }\n else {\n const backend = context;\n backendElement = backend.createTextNode(text);\n }\n }\n if (ENV.DEV)\n performanceMeasureEnd();\n this._$backendElement = backendElement;\n this.ownerShadowRoot = owner;\n this.parentNode = null;\n this.parentIndex = -1;\n this.containingSlot = undefined;\n }\n static create(text, ownerShadowRoot) {\n return new TextNode(text, ownerShadowRoot);\n }\n asTextNode() {\n return this;\n }\n // eslint-disable-next-line class-methods-use-this\n asElement() {\n return null;\n }\n // eslint-disable-next-line class-methods-use-this\n asNativeNode() {\n return null;\n }\n // eslint-disable-next-line class-methods-use-this\n asVirtualNode() {\n return null;\n }\n // eslint-disable-next-line class-methods-use-this\n asInstanceOf() {\n return null;\n }\n /** Destroy the backend element */\n destroyBackendElement() {\n if (this._$backendElement) {\n if (!(BM.DOMLIKE ||\n (BM.DYNAMIC && this.ownerShadowRoot.getBackendMode() === 3 /* BackendMode.Domlike */))) {\n if (ENV.DEV)\n performanceMeasureStart('backend.release');\n this._$backendElement.release();\n if (ENV.DEV)\n performanceMeasureEnd();\n }\n this._$backendElement = null;\n }\n }\n /** Destroy the backend element on next detach */\n destroyBackendElementOnDetach() {\n this._$destroyOnDetach = true;\n }\n /** Get the backend element */\n getBackendElement() {\n return this._$backendElement;\n }\n /** Get composed parent (including virtual nodes) */\n getComposedParent() {\n if (this.containingSlot !== undefined)\n return this.containingSlot;\n let parent = this.parentNode;\n while (parent === null || parent === void 0 ? void 0 : parent._$inheritSlots) {\n parent = parent.parentNode;\n }\n return parent;\n }\n get $$() {\n return this._$backendElement;\n }\n get textContent() {\n return this._$text;\n }\n set textContent(text) {\n const newText = String(text);\n if (newText === this._$text)\n return;\n this._$text = newText;\n if (this._$backendElement) {\n if (ENV.DEV)\n performanceMeasureStart('backend.setText');\n if (BM.DOMLIKE ||\n (BM.DYNAMIC && this.ownerShadowRoot.getBackendMode() === 3 /* BackendMode.Domlike */)) {\n ;\n this._$backendElement.textContent = this._$text;\n }\n else {\n ;\n this._$backendElement.setText(this._$text);\n }\n if (ENV.DEV)\n performanceMeasureEnd();\n }\n MutationObserverTarget.callTextObservers(this, {\n type: 'characterData',\n target: this,\n });\n }\n}\nTextNode.isTextNode = isTextNode;\nTextNode.prototype[TEXT_NODE_SYMBOL] = true;\n//# sourceMappingURL=text_node.js.map","import { BM } from './backend';\nimport { performanceMeasureEnd, performanceMeasureStart } from './devtool';\nimport { Element } from './element';\nimport { ENV } from './global_options';\nimport { VIRTUAL_NODE_SYMBOL, isVirtualNode } from './type_symbol';\nexport class VirtualNode extends Element {\n /* istanbul ignore next */\n constructor() {\n throw new Error('Element cannot be constructed directly');\n // eslint-disable-next-line no-unreachable\n super();\n }\n /* @internal */\n _$initializeVirtual(virtualName, owner, nodeTreeContext) {\n this.is = String(virtualName);\n if (nodeTreeContext &&\n (BM.SHADOW || (BM.DYNAMIC && nodeTreeContext.mode === 1 /* BackendMode.Shadow */))) {\n const shadowRoot = owner._$backendShadowRoot;\n if (ENV.DEV)\n performanceMeasureStart('backend.createVirtualNode');\n const be = shadowRoot.createVirtualNode(virtualName);\n if (ENV.DEV)\n performanceMeasureEnd();\n this._$initialize(true, be, owner, nodeTreeContext);\n if (ENV.DEV)\n performanceMeasureStart('backend.associateValue');\n be.associateValue(this);\n if (ENV.DEV)\n performanceMeasureEnd();\n }\n else {\n this._$initialize(true, null, owner, owner._$nodeTreeContext);\n }\n }\n static create(virtualName, owner) {\n const node = Object.create(VirtualNode.prototype);\n node._$initializeVirtual(virtualName, owner, owner.getBackendContext());\n return node;\n }\n}\nVirtualNode.isVirtualNode = isVirtualNode;\nVirtualNode.prototype[VIRTUAL_NODE_SYMBOL] = true;\n//# sourceMappingURL=virtual_node.js.map","import { BM } from './backend';\nimport { Component, convertGenerics, resolvePlaceholder, } from './component';\nimport { getDeepCopyStrategy } from './data_proxy';\nimport { deepCopy, simpleDeepCopy } from './data_utils';\nimport { Element } from './element';\nimport { NativeNode } from './native_node';\nimport { TextNode } from './text_node';\nimport { SHADOW_ROOT_SYMBOL, isElement, isShadowRoot } from './type_symbol';\nimport { VirtualNode } from './virtual_node';\nimport { ThirdError, triggerWarning } from './warning';\nexport var SlotMode;\n(function (SlotMode) {\n SlotMode[SlotMode[\"Direct\"] = 0] = \"Direct\";\n SlotMode[SlotMode[\"Single\"] = 1] = \"Single\";\n SlotMode[SlotMode[\"Multiple\"] = 2] = \"Multiple\";\n SlotMode[SlotMode[\"Dynamic\"] = 3] = \"Dynamic\";\n})(SlotMode || (SlotMode = {}));\nexport class ShadowRoot extends VirtualNode {\n /* istanbul ignore next */\n constructor() {\n throw new Error('Element cannot be constructed directly');\n // eslint-disable-next-line no-unreachable\n super();\n }\n static createShadowRoot(host) {\n const node = Object.create(ShadowRoot.prototype);\n let be = null;\n if (BM.SHADOW || (BM.DYNAMIC && host.getBackendMode() === 1 /* BackendMode.Shadow */)) {\n be = host._$backendElement.getShadowRoot();\n }\n node.is = 'shadow';\n node._$idMap = null;\n let slotMode = 1 /* SlotMode.Single */;\n const hostComponentOptions = host.getComponentOptions();\n if (hostComponentOptions.multipleSlots)\n slotMode = 2 /* SlotMode.Multiple */;\n else if (hostComponentOptions.dynamicSlots)\n slotMode = 3 /* SlotMode.Dynamic */;\n else if (hostComponentOptions.directSlots)\n slotMode = 0 /* SlotMode.Direct */;\n node._$slotMode = slotMode;\n if (slotMode === 1 /* SlotMode.Single */) {\n node._$singleSlot = null;\n }\n else if (slotMode === 2 /* SlotMode.Multiple */) {\n node._$slots = Object.create(null);\n node._$slotsList = Object.create(null);\n }\n else if (slotMode === 3 /* SlotMode.Dynamic */) {\n node._$dynamicSlotsInserted = false;\n node._$dynamicSlots = new Map();\n node._$requiredSlotValueNames = [];\n node._$propertyPassingDeepCopy = getDeepCopyStrategy(hostComponentOptions.propertyPassingDeepCopy);\n node._$insertDynamicSlotHandler = undefined;\n node._$removeDynamicSlotHandler = undefined;\n node._$updateDynamicSlotHandler = undefined;\n }\n node._$backendShadowRoot = be;\n node._$initialize(true, be, node, host._$nodeTreeContext);\n node._$host = host;\n host.shadowRoot = node;\n be === null || be === void 0 ? void 0 : be.associateValue(node);\n return node;\n }\n getHostNode() {\n return this._$host;\n }\n createTextNode(text = '') {\n return new TextNode(text, this);\n }\n createNativeNode(tagName) {\n return NativeNode.create(tagName, this);\n }\n createVirtualNode(virtualName = 'virtual') {\n return VirtualNode.create(virtualName, this);\n }\n createNativeNodeWithInit(tagName, stylingName, placeholderHandlerRemover, initPropValues) {\n const ret = NativeNode.create(tagName, this, stylingName, placeholderHandlerRemover);\n initPropValues === null || initPropValues === void 0 ? void 0 : initPropValues(ret);\n return ret;\n }\n /**\n * Create a component if possible\n *\n * Placeholding status should be checked with `checkComponentPlaceholder` .\n * This function may create a native node if the using target is native node.\n */\n createComponent(tagName, usingKey, genericTargets, placeholderCallback, initPropValues) {\n const host = this._$host;\n const beh = host._$behavior;\n const hostGenericImpls = host._$genericImpls;\n const space = beh.ownerSpace;\n const compName = usingKey === undefined ? tagName : usingKey;\n const possibleComponentDefinitions = [\n // if the target is in using list, then use the one in using list\n beh._$using[compName],\n // if the target is in generics list, then use the one\n hostGenericImpls && hostGenericImpls[compName],\n ];\n for (let i = 0; i < possibleComponentDefinitions.length; i += 1) {\n const cwp = possibleComponentDefinitions[i];\n if (cwp === null || cwp === undefined)\n continue;\n if (typeof cwp === 'string') {\n return this.createNativeNodeWithInit(cwp, tagName, undefined, initPropValues);\n }\n let usingTarget;\n let placeholderHandlerRemover;\n if (cwp.final) {\n usingTarget = cwp.final;\n }\n else if (cwp.placeholder !== null) {\n usingTarget = resolvePlaceholder(cwp.placeholder, space, cwp.source, hostGenericImpls);\n const waiting = cwp.waiting;\n if (placeholderCallback && waiting) {\n waiting.add(placeholderCallback);\n waiting.hintUsed(host);\n placeholderHandlerRemover = () => {\n waiting.remove(placeholderCallback);\n };\n }\n }\n if (typeof usingTarget === 'string') {\n return this.createNativeNodeWithInit(usingTarget, tagName, placeholderHandlerRemover, initPropValues);\n }\n if (usingTarget) {\n return Component._$advancedCreate(tagName, usingTarget, this, null, convertGenerics(usingTarget, beh, host, genericTargets), placeholderHandlerRemover, initPropValues);\n }\n }\n // find in the space otherwise\n let comp = space.getGlobalUsingComponent(compName);\n if (comp === null && space._$allowUnusedNativeNode && compName !== '') {\n comp = compName;\n }\n if (!comp) {\n comp = space.getDefaultComponent();\n /* istanbul ignore if */\n if (!comp) {\n throw new ThirdError(`Cannot find component \"${compName}\"`, undefined, this._$host);\n }\n triggerWarning(`Cannot find component \"${compName}\", using default component.`, this._$host);\n }\n if (typeof comp === 'string') {\n return this.createNativeNodeWithInit(comp, tagName, undefined, initPropValues);\n }\n return Component._$advancedCreate(tagName, comp, this, null, convertGenerics(comp, beh, host, genericTargets), undefined, initPropValues);\n }\n createComponentByDef(tagName, componentDef) {\n return Component._$advancedCreate(tagName, componentDef, this, null, null, undefined);\n }\n /**\n * Create a component if the given tag name is a component in the space, or a native node if not\n *\n * The component `using` map is not used.\n * Consider using `checkComponentPlaceholder` to check if the tag name is in the `using` map.\n * The global using registered with `ComponentSpace.prototype.getGlobalUsingComponent` is still used.\n */\n createComponentOrNativeNode(tagName, genericTargets, initPropValues) {\n const host = this._$host;\n const beh = host._$behavior;\n const space = beh.ownerSpace;\n // find in the space otherwise\n const comp = space.getGlobalUsingComponent(tagName);\n if (typeof comp === 'string') {\n return this.createNativeNodeWithInit(comp, tagName, undefined, initPropValues);\n }\n if (comp) {\n return Component._$advancedCreate(tagName, comp, this, null, convertGenerics(comp, beh, host, genericTargets), undefined, initPropValues);\n }\n if (space._$allowUnusedNativeNode) {\n // use native node otherwise\n const node = NativeNode.create(tagName, this);\n initPropValues === null || initPropValues === void 0 ? void 0 : initPropValues(node);\n return node;\n }\n throw new ThirdError(`Unknown tag name ${tagName}`, '[render]', host);\n }\n /**\n * Find whether this component is placeholding or not\n *\n * This method will only find in the component `using` list and `generics` list.\n * If not found, returns `undefined` .\n * If the placeholder will be used, returns `true` ; `false` otherwise.\n */\n checkComponentPlaceholder(usingKey) {\n var _a;\n const beh = this._$host._$behavior;\n let compDef;\n const using = beh._$using[usingKey];\n if (using !== undefined) {\n compDef = using;\n }\n else {\n const g = (_a = this._$host._$genericImpls) === null || _a === void 0 ? void 0 : _a[usingKey];\n if (g)\n compDef = g;\n else\n return undefined;\n }\n if (typeof compDef === 'string')\n return false;\n if (compDef.final)\n return false;\n if (compDef.placeholder !== null)\n return true;\n return false;\n }\n getElementById(id) {\n return this._$getIdMap()[id];\n }\n /** @internal */\n _$markIdCacheDirty() {\n this._$idMap = null;\n }\n /** @internal */\n _$getIdMap() {\n if (this._$idMap)\n return this._$idMap;\n const idMap = Element._$generateIdMap(this);\n this._$idMap = idMap;\n return idMap;\n }\n /** Get the slot element with the specified name */\n getSlotElementFromName(name) {\n const slotMode = this._$slotMode;\n /* istanbul ignore if */\n if (slotMode === 0 /* SlotMode.Direct */)\n throw new Error('cannot get slot element in directSlots');\n if (slotMode === 1 /* SlotMode.Single */)\n return this._$singleSlot;\n if (slotMode === 2 /* SlotMode.Multiple */) {\n return this._$slots[name] || null;\n }\n if (slotMode === 3 /* SlotMode.Dynamic */) {\n const slots = [];\n for (let it = this._$subtreeSlotStart; it; it = it.next) {\n const slot = it.value;\n const slotName = slot._$slotName || '';\n if (slotName === name)\n slots.push(slot);\n }\n return slots;\n }\n return null;\n }\n /**\n * Get the slot element for the slot content\n *\n * The provided node must be a valid child node of the host of this shadow root.\n * Otherwise the behavior is undefined.\n */\n getContainingSlot(elem) {\n var _a;\n const slotMode = this._$slotMode;\n if (slotMode === 0 /* SlotMode.Direct */)\n return (elem === null || elem === void 0 ? void 0 : elem.containingSlot) || null;\n if (slotMode === 1 /* SlotMode.Single */)\n return this._$singleSlot;\n if (slotMode === 3 /* SlotMode.Dynamic */) {\n if (!elem)\n return null;\n let subTreeRoot = elem;\n while ((_a = subTreeRoot.parentNode) === null || _a === void 0 ? void 0 : _a._$inheritSlots) {\n subTreeRoot = subTreeRoot.parentNode;\n }\n const slotElement = subTreeRoot._$slotElement;\n // FIXME is ownerShadowRoot check necessary?\n if ((slotElement === null || slotElement === void 0 ? void 0 : slotElement.ownerShadowRoot) === this) {\n return slotElement;\n }\n }\n if (slotMode === 2 /* SlotMode.Multiple */) {\n let name;\n if (isElement(elem)) {\n name = elem._$nodeSlot;\n }\n else {\n name = '';\n }\n return this._$slots[name] || null;\n }\n return null;\n }\n /**\n * Get the elements that should be composed in specified slot\n *\n * This method always returns a new array (or null if the specified slot is invalid).\n * It is convenient but less performant.\n * For better performance, consider using `forEachNodeInSpecifiedSlot` .\n */\n getSlotContentArray(slot) {\n if (slot._$slotName === null)\n return null;\n const ret = [];\n this.forEachNodeInSpecifiedSlot(slot, (node) => {\n ret.push(node);\n });\n return ret;\n }\n /**\n * Iterate slots\n */\n forEachSlot(f) {\n const slotMode = this._$slotMode;\n /* istanbul ignore if */\n if (slotMode === 0 /* SlotMode.Direct */) {\n throw new Error('Cannot iterate slots in directSlots');\n }\n if (slotMode === 1 /* SlotMode.Single */) {\n if (this._$singleSlot)\n f(this._$singleSlot);\n }\n else if (slotMode === 2 /* SlotMode.Multiple */) {\n const slots = Object.values(this._$slots);\n for (let i = 0; i < slots.length; i += 1) {\n if (f(slots[i]) === false)\n break;\n }\n }\n else if (slotMode === 3 /* SlotMode.Dynamic */) {\n for (let it = this._$subtreeSlotStart; it; it = it.next) {\n if (f(it.value) === false)\n break;\n }\n }\n }\n /**\n * Iterate through elements ahd their corresponding slots (including slots-inherited nodes)\n * @param f A function to execute for each element. Return false to break the iteration.\n * @returns A boolean indicating whether the iteration is complete.\n */\n forEachNodeInSlot(f) {\n const childNodes = this._$host.childNodes;\n for (let i = 0; i < childNodes.length; i += 1) {\n if (!Element.forEachNodeInSlot(childNodes[i], f))\n return false;\n }\n return true;\n }\n /**\n * Iterate through elements of a specified slot (including slots-inherited nodes)\n * @param f A function to execute for each element. Return false to break the iteration.\n * @returns A boolean indicating whether the iteration is complete.\n */\n forEachNodeInSpecifiedSlot(slot, f) {\n if (slot) {\n const childNodes = slot.slotNodes;\n for (let i = 0; i < childNodes.length; i += 1) {\n const node = childNodes[i];\n if (f(node) === false)\n return false;\n }\n return true;\n }\n return this.forEachNodeInSlot((node, slot) => (slot === null ? f(node) : true));\n }\n /**\n * Iterate through elements ahd their corresponding slots (NOT including slots-inherited nodes)\n * @param f A function to execute for each element. Return false to break the iteration.\n * @returns A boolean indicating whether the iteration is complete.\n */\n forEachSlotContentInSlot(f) {\n const childNodes = this._$host.childNodes;\n for (let i = 0; i < childNodes.length; i += 1) {\n if (!Element.forEachSlotContentInSlot(childNodes[i], f))\n return false;\n }\n return true;\n }\n /**\n * Iterate through elements of a specified slot (NOT including slots-inherited nodes)\n * @param f A function to execute for each element. Return false to break the iteration.\n * @returns A boolean indicating whether the iteration is complete.\n */\n forEachSlotContentInSpecifiedSlot(slot, f) {\n if (slot) {\n const childNodes = slot.slotNodes;\n for (let i = 0; i < childNodes.length; i += 1) {\n const node = childNodes[i];\n if (!node._$inheritSlots && f(node) === false)\n return false;\n }\n return true;\n }\n return this.forEachSlotContentInSlot((node, slot) => (slot === null ? f(node) : true));\n }\n /**\n * Check whether a node is connected to this shadow root\n */\n isConnected(node) {\n if (node.ownerShadowRoot !== this)\n return false;\n for (let p = node; p; p = p.parentNode) {\n if (p === this)\n return true;\n }\n return false;\n }\n /** @internal */\n _$applyMultipleSlotInsertion(slot, slotName, _move) {\n const slotsList = this._$slotsList;\n const slots = this._$slots;\n // assuming that slot name duplication is very rare in practice,\n // the complexity without name duplication is priority guaranteed.\n if (slotsList[slotName]) {\n // with name duplication\n const firstSlot = slotsList[slotName];\n let insertPos = { next: firstSlot }; // this is a pointer to pointer\n let insertBeforeFirst = true;\n for (let jt = this._$subtreeSlotStart; jt && insertPos.next; jt = jt.next) {\n if (jt.value === slot)\n break;\n if (jt.value === insertPos.next.value) {\n insertBeforeFirst = false;\n insertPos = insertPos.next;\n }\n }\n if (insertBeforeFirst) {\n slotsList[slotName] = firstSlot.prev = { value: slot, prev: null, next: firstSlot };\n }\n else {\n const next = insertPos.next;\n insertPos.next = { value: slot, prev: insertPos, next };\n if (next)\n next.prev = insertPos.next;\n }\n }\n else {\n // without name duplication\n slotsList[slotName] = { value: slot, prev: null, next: null };\n }\n const oldSlot = slots[slotName];\n const newSlot = slotsList[slotName].value;\n if (oldSlot === newSlot)\n return;\n slots[slotName] = newSlot;\n Element._$insertChildReassignSlot(this, slotName, oldSlot || null, newSlot);\n }\n /** @internal */\n _$applyMultipleSlotsRemoval(slot, slotName, move) {\n const slotsList = this._$slotsList;\n const slots = this._$slots;\n let oldSlot = slotsList[slotName] || null;\n for (; oldSlot; oldSlot = oldSlot.next) {\n if (oldSlot.value === slot)\n break;\n }\n if (!oldSlot)\n return;\n const prev = oldSlot.prev;\n const next = oldSlot.next;\n if (prev)\n prev.next = next;\n if (next)\n next.prev = prev;\n const firstSlotRemoved = !prev;\n if (!firstSlotRemoved)\n return;\n const newFirstSlot = next;\n if (newFirstSlot) {\n const oldNameNewSlot = newFirstSlot.value;\n slotsList[slotName] = newFirstSlot;\n // only update slotsList if slots were moved\n if (!move) {\n slots[slotName] = oldNameNewSlot;\n Element._$insertChildReassignSlot(this, slotName, slot, oldNameNewSlot);\n }\n }\n else {\n delete slotsList[slotName];\n // only update slotsList if slots were moved\n if (!move) {\n delete slots[slotName];\n Element._$insertChildReassignSlot(this, slotName, slot, null);\n }\n }\n }\n /** @internal */\n _$applySlotRename(slot, newName, oldName) {\n const slotMode = this._$slotMode;\n // single slot does not care slot name\n if (slotMode === 1 /* SlotMode.Single */ || slotMode === 0 /* SlotMode.Direct */)\n return;\n // for multiple slots, reassign slot contents\n if (slotMode === 2 /* SlotMode.Multiple */) {\n this._$applyMultipleSlotsRemoval(slot, oldName, false);\n this._$applyMultipleSlotInsertion(slot, newName, false);\n return;\n }\n // for dynamic slotting, destroy and re-insert slot\n if (slotMode === 3 /* SlotMode.Dynamic */) {\n // wait until applySlotUpdates\n if (!this._$dynamicSlotsInserted)\n return;\n const insertDynamicSlot = this._$insertDynamicSlotHandler;\n const removeDynamicSlot = this._$removeDynamicSlotHandler;\n this._$dynamicSlots.set(slot, { updatePathTree: undefined });\n removeDynamicSlot === null || removeDynamicSlot === void 0 ? void 0 : removeDynamicSlot([slot]);\n insertDynamicSlot === null || insertDynamicSlot === void 0 ? void 0 : insertDynamicSlot([{ slot, name: newName, slotValues: slot._$slotValues }]);\n }\n }\n /** @internal */\n _$applySlotsInsertion(slotStart, slotEnd, move) {\n const slotMode = this._$slotMode;\n // for direct slotting, do nothing\n if (slotMode === 0 /* SlotMode.Direct */)\n return;\n if (slotMode === 1 /* SlotMode.Single */) {\n const oldSlot = this._$singleSlot;\n const newSlot = this._$subtreeSlotStart.value;\n if (oldSlot === newSlot)\n return;\n this._$singleSlot = newSlot;\n Element._$insertChildReassignSlot(this, null, oldSlot || null, newSlot);\n return;\n }\n if (slotMode === 2 /* SlotMode.Multiple */) {\n for (let it = slotStart; it && it !== slotEnd.next; it = it.next) {\n const slot = it.value;\n const slotName = slot._$slotName;\n this._$applyMultipleSlotInsertion(slot, slotName, move);\n }\n return;\n }\n if (slotMode === 3 /* SlotMode.Dynamic */) {\n // dynamic-slotting should do nothing about slot movement\n if (move)\n return;\n // wait until applySlotUpdates\n if (!this._$dynamicSlotsInserted)\n return;\n const insertDynamicSlot = this._$insertDynamicSlotHandler;\n const slots = [];\n for (let it = slotStart; it && it !== slotEnd.next; it = it.next) {\n const slot = it.value;\n const slotName = slot._$slotName;\n this._$dynamicSlots.set(slot, { updatePathTree: undefined });\n slots.push({ slot, name: slotName, slotValues: slot._$slotValues });\n }\n insertDynamicSlot === null || insertDynamicSlot === void 0 ? void 0 : insertDynamicSlot(slots);\n }\n }\n /** @internal */\n _$applySlotsRemoval(slotStart, slotEnd, move) {\n var _a;\n const slotMode = this._$slotMode;\n // for direct slotting, do nothing\n if (slotMode === 0 /* SlotMode.Direct */)\n return;\n if (slotMode === 1 /* SlotMode.Single */) {\n // will call applySLotsInsertion after if slots were moved\n // no need to do anything here\n if (move)\n return;\n const oldSlot = this._$singleSlot;\n const newSlot = (_a = this._$subtreeSlotStart) === null || _a === void 0 ? void 0 : _a.value;\n if (oldSlot === newSlot)\n return;\n this._$singleSlot = newSlot;\n Element._$insertChildReassignSlot(this, null, oldSlot || null, newSlot || null);\n return;\n }\n if (slotMode === 2 /* SlotMode.Multiple */) {\n for (let it = slotStart; it && it !== slotEnd.next; it = it.next) {\n const slot = it.value;\n const slotName = slot._$slotName;\n this._$applyMultipleSlotsRemoval(slot, slotName, move);\n }\n return;\n }\n if (slotMode === 3 /* SlotMode.Dynamic */) {\n // dynamic-slotting should do nothing about slot movement\n if (move)\n return;\n // wait until applySlotUpdates\n if (!this._$dynamicSlotsInserted)\n return;\n const removeDynamicSlot = this._$removeDynamicSlotHandler;\n const slots = [];\n for (let it = slotStart; it && it !== slotEnd.next; it = it.next) {\n const slot = it.value;\n this._$dynamicSlots.delete(slot);\n slots.push(slot);\n }\n removeDynamicSlot === null || removeDynamicSlot === void 0 ? void 0 : removeDynamicSlot(slots);\n }\n }\n /**\n * Set the dynamic slot handlers\n *\n * If the handlers have not been set yet,\n * the `insertSlotHandler` will be called for each slot that has been added to the shadow tree,\n * otherwise call `updateSlotHandler` for each slots.\n */\n setDynamicSlotHandler(requiredSlotValueNames, insertSlotHandler, removeSlotHandler, updateSlotHandler) {\n if (this._$slotMode !== 3 /* SlotMode.Dynamic */)\n return;\n this._$requiredSlotValueNames = requiredSlotValueNames;\n this._$insertDynamicSlotHandler = insertSlotHandler;\n this._$removeDynamicSlotHandler = removeSlotHandler;\n this._$updateDynamicSlotHandler = updateSlotHandler;\n if (this._$dynamicSlotsInserted) {\n const iter = this._$dynamicSlots.values();\n for (let it = iter.next(); !it.done; it = iter.next()) {\n const slotMeta = it.value;\n slotMeta.updatePathTree =\n slotMeta.updatePathTree || Object.create(null);\n }\n }\n }\n /**\n * Use the same dynamic slot handlers with the `source`\n */\n useDynamicSlotHandlerFrom(source) {\n if (source._$insertDynamicSlotHandler) {\n this.setDynamicSlotHandler(source._$requiredSlotValueNames.slice(), source._$insertDynamicSlotHandler, source._$removeDynamicSlotHandler, source._$updateDynamicSlotHandler);\n }\n }\n /**\n * Update a slot value\n *\n * The updated value should be applied with `applySlotValueUpdates` call.\n */\n replaceSlotValue(slot, name, value) {\n var _a;\n const slotValues = slot._$slotValues;\n if (!slotValues)\n return;\n const oldValue = slotValues[name];\n let newValue = value;\n if (this._$propertyPassingDeepCopy !== 0 /* DeepCopyStrategy.None */) {\n if (this._$propertyPassingDeepCopy === 2 /* DeepCopyStrategy.SimpleWithRecursion */) {\n newValue = deepCopy(value, true);\n }\n else {\n newValue = simpleDeepCopy(value);\n }\n }\n if (oldValue === newValue)\n return;\n slotValues[name] = newValue;\n if (this._$requiredSlotValueNames.indexOf(name) < 0)\n return;\n const slotMeta = (_a = this._$dynamicSlots) === null || _a === void 0 ? void 0 : _a.get(slot);\n if (!slotMeta)\n return;\n if (!slotMeta.updatePathTree) {\n slotMeta.updatePathTree = Object.create(null);\n }\n slotMeta.updatePathTree[name] = true;\n }\n /**\n * Apply slot value updates\n */\n applySlotValueUpdates(slot) {\n var _a, _b;\n const slotMeta = (_a = this._$dynamicSlots) === null || _a === void 0 ? void 0 : _a.get(slot);\n const slotValueUpdatePathTree = slotMeta === null || slotMeta === void 0 ? void 0 : slotMeta.updatePathTree;\n if (!slotValueUpdatePathTree)\n return;\n slotMeta.updatePathTree = undefined;\n (_b = this._$updateDynamicSlotHandler) === null || _b === void 0 ? void 0 : _b.call(this, slot, slot._$slotValues, slotValueUpdatePathTree);\n }\n applySlotUpdates() {\n var _a;\n if (!this._$dynamicSlotsInserted) {\n this._$dynamicSlotsInserted = true;\n const insertDynamicSlot = this._$insertDynamicSlotHandler;\n const slots = [];\n for (let it = this._$subtreeSlotStart; it; it = it.next) {\n const slot = it.value;\n const slotName = slot._$slotName;\n this._$dynamicSlots.set(slot, { updatePathTree: undefined });\n slots.push({ slot, name: slotName, slotValues: slot._$slotValues });\n }\n insertDynamicSlot === null || insertDynamicSlot === void 0 ? void 0 : insertDynamicSlot(slots);\n }\n else {\n const iter = this._$dynamicSlots.entries();\n for (let it = iter.next(); !it.done; it = iter.next()) {\n const [slot, slotMeta] = it.value;\n const slotValueUpdatePathTree = slotMeta.updatePathTree;\n if (slotValueUpdatePathTree) {\n slotMeta.updatePathTree = undefined;\n (_a = this._$updateDynamicSlotHandler) === null || _a === void 0 ? void 0 : _a.call(this, slot, slot._$slotValues, slotValueUpdatePathTree);\n }\n }\n }\n }\n /**\n * Get slot mode\n */\n getSlotMode() {\n return this._$slotMode;\n }\n}\nShadowRoot.isShadowRoot = isShadowRoot;\nShadowRoot.prototype[SHADOW_ROOT_SYMBOL] = true;\n//# sourceMappingURL=shadow_root.js.map","import { triggerWarning } from '../warning';\nexport class RangeListManager {\n constructor(keyName, dataList, elem, shadowRoot, newListItem) {\n this.ownerShadowRoot = shadowRoot;\n this.elem = elem;\n this.keyName = keyName;\n this.updateKeys(dataList);\n const items = this.items;\n const indexes = this.indexes;\n const children = [];\n for (let i = 0; i < items.length; i += 1) {\n const item = items[i];\n const index = indexes === null ? i : indexes[i];\n children.push(newListItem(item, index));\n }\n elem.insertChildren(children, -1);\n }\n updateKeys(dataList) {\n // collect the list depending on the the type of the data list\n let items;\n let indexes;\n if (Array.isArray(dataList)) {\n items = dataList;\n indexes = null;\n }\n else if (typeof dataList === 'object' && dataList !== null) {\n const k = Object.keys(dataList);\n items = new Array(k.length);\n indexes = new Array(k.length);\n for (let i = 0; i < k.length; i += 1) {\n const key = k[i];\n const item = dataList[key];\n items[i] = item;\n indexes[i] = key;\n }\n }\n else if (typeof dataList === 'string') {\n triggerWarning('Use string as for-list is generally for testing. Each character is treated as an item.', this.ownerShadowRoot.getHostNode(), this.elem);\n items = new Array(dataList.length);\n indexes = null;\n for (let i = 0; i < dataList.length; i += 1) {\n items[i] = dataList[i];\n }\n }\n else if (typeof dataList === 'number') {\n triggerWarning('Use number as for-list is generally for testing. The number is used as the repeated times of the item.', this.ownerShadowRoot.getHostNode(), this.elem);\n items = new Array(dataList);\n indexes = null;\n for (let i = 0; i < dataList; i += 1) {\n items[i] = i;\n }\n }\n else {\n triggerWarning(`The for-list data is neither Array nor Object, got type \"${dataList === null ? 'null' : typeof dataList}\".`, this.ownerShadowRoot.getHostNode(), this.elem);\n items = [];\n indexes = null;\n }\n this.items = items;\n this.indexes = indexes;\n // generate keys and key indexes map for the list\n const keyName = this.keyName;\n const rawKeys = new Array(items.length);\n const keyMap = Object.create(null);\n let sharedKeyMap;\n if (keyName !== null) {\n // firstly, find all unique keys and shared keys\n for (let i = 0; i < items.length; i += 1) {\n const item = items[i];\n const rawKeyField = keyName === '*this' ? item : item === null || item === void 0 ? void 0 : item[keyName];\n const rawKey = rawKeyField !== undefined && rawKeyField !== null ? String(rawKeyField) : '';\n rawKeys[i] = rawKey;\n if (keyMap[rawKey] !== undefined) {\n if (!sharedKeyMap) {\n sharedKeyMap = Object.create(null);\n }\n sharedKeyMap[rawKey] = [keyMap[rawKey], i];\n delete keyMap[rawKey];\n }\n else if (sharedKeyMap === null || sharedKeyMap === void 0 ? void 0 : sharedKeyMap[rawKey]) {\n sharedKeyMap[rawKey].push(i);\n }\n else {\n keyMap[rawKey] = i;\n }\n }\n // convert shared keys to unique keys\n if (sharedKeyMap) {\n const keys = Object.keys(sharedKeyMap);\n triggerWarning(`Some keys are not unique while list updates: \"${keys.join('\", \"')}\".`, this.ownerShadowRoot.getHostNode(), this.elem);\n for (let i = 0; i < keys.length; i += 1) {\n const key = keys[i];\n const items = sharedKeyMap[key];\n let inc = 0;\n for (let j = 0; j < items.length; j += 1) {\n const index = items[j];\n while (keyMap[`${key}--${inc}`] !== undefined)\n inc += 1;\n const k = `${key}--${inc}`;\n keyMap[k] = index;\n rawKeys[index] = k;\n }\n }\n }\n }\n this.rawKeys = rawKeys;\n this.keyMap = keyMap;\n this.sharedKeyMap = sharedKeyMap;\n }\n diff(dataList, oriUpdatePathTree, elem, newListItem, updateListItem) {\n // generate new list for comparison\n const oldRawKeys = this.rawKeys;\n const oldKeyMap = this.keyMap;\n const oldSharedKeyMap = this.sharedKeyMap;\n const oldIndexes = this.indexes;\n this.updateKeys(dataList);\n const newRawKeys = this.rawKeys;\n const newSharedKeyMap = this.sharedKeyMap;\n const items = this.items;\n const indexes = this.indexes;\n const keyName = this.keyName;\n // transform the update path tree if needed:\n // if the list has been splice-updated, or a key is updated,\n // all items with old-list shared keys or new-list shared keys should be marked;\n // and items with key updates should be marked\n let allowFastComparison;\n let updatePathTree;\n if (oriUpdatePathTree === true) {\n updatePathTree = true;\n allowFastComparison = keyName === null;\n }\n else if (oriUpdatePathTree === undefined) {\n updatePathTree = oriUpdatePathTree;\n allowFastComparison = true;\n }\n else if (keyName === null) {\n updatePathTree = true;\n allowFastComparison = true;\n }\n else {\n let needUpdate = false;\n if (Array.isArray(oriUpdatePathTree)) {\n needUpdate = true;\n }\n else {\n const keys = Object.keys(oriUpdatePathTree);\n for (let i = 0; i < keys.length; i += 1) {\n const k = keys[i];\n const subTree = oriUpdatePathTree[k];\n if (subTree === true || (keyName === '*this' ? subTree : subTree === null || subTree === void 0 ? void 0 : subTree[keyName])) {\n needUpdate = true;\n break;\n }\n }\n }\n if (needUpdate) {\n updatePathTree = new Array(newRawKeys.length);\n for (let i = 0; i < newRawKeys.length; i += 1) {\n const k = newRawKeys[i];\n if ((oldSharedKeyMap === null || oldSharedKeyMap === void 0 ? void 0 : oldSharedKeyMap[k]) !== undefined || (newSharedKeyMap === null || newSharedKeyMap === void 0 ? void 0 : newSharedKeyMap[k]) !== undefined) {\n updatePathTree[i] = true;\n }\n else {\n const subTree = oriUpdatePathTree[i];\n if (subTree === undefined) {\n // empty\n }\n else if (subTree === true || (keyName === '*this' ? subTree : subTree === null || subTree === void 0 ? void 0 : subTree[keyName])) {\n updatePathTree[i] = true;\n }\n else {\n updatePathTree[i] = subTree;\n }\n }\n }\n allowFastComparison = false;\n }\n else {\n updatePathTree = oriUpdatePathTree;\n allowFastComparison = false;\n }\n }\n // if there is no key, or nothing in the old list range is updated\n if (allowFastComparison) {\n // transform the update path tree if needed:\n // if the list has been splice-updated, then mark the whole list\n let updatePathTree;\n if (Array.isArray(oriUpdatePathTree))\n updatePathTree = true;\n else\n updatePathTree = oriUpdatePathTree;\n // simply match them one-by-one\n let i = 0;\n while (i < oldRawKeys.length && i < newRawKeys.length) {\n const item = items[i];\n const index = indexes === null ? i : indexes[i];\n const oldIndex = oldIndexes === null ? i : oldIndexes[i];\n const u = updatePathTree === true || updatePathTree === undefined\n ? updatePathTree\n : updatePathTree[i];\n updateListItem(item, index, u, index !== oldIndex, elem.childNodes[i]);\n i += 1;\n }\n // if the old list has extra items, remove them;\n // if the new list has extra items, append them\n if (i < oldRawKeys.length) {\n elem.removeChildren(i, oldRawKeys.length - i);\n }\n else if (i < newRawKeys.length) {\n const children = [];\n for (; i < newRawKeys.length; i += 1) {\n const item = items[i];\n const index = indexes === null ? i : indexes[i];\n children.push(newListItem(item, index));\n }\n elem.insertChildren(children, -1);\n }\n return;\n }\n // in order to find out which nodes are stable (a.k.a. not needed to be moved),\n // here uses a classic LCS (longest-common-subsequence) algorithm for list with distinct items,\n // which is O(N*logN) at worst\n // (the `minIndexByLen[i]` is the minimum old-list index when LCS length is `i` )\n const minIndexByLen = [];\n const minIndexByLenIndexes = [];\n const minIndexPrev = new Array(newRawKeys.length);\n const oldPosList = new Array(newRawKeys.length);\n let prevOldIndex = -1;\n let prevMinIndexByLenIndex = -1;\n for (let i = 0; i < newRawKeys.length; i += 1) {\n const rawKey = newRawKeys[i];\n // the new-list current item is likely to be the same as the one in old-list;\n // if that, simply use it -\n // this will help to decrease the overhead in common cases (O(N) in best case)\n if (oldRawKeys[prevOldIndex + 1] === rawKey) {\n prevOldIndex += 1;\n prevMinIndexByLenIndex += 1;\n minIndexByLen[prevMinIndexByLenIndex] = prevOldIndex;\n minIndexByLenIndexes[prevMinIndexByLenIndex] = i;\n minIndexPrev[i] =\n prevMinIndexByLenIndex > 0 ? minIndexByLenIndexes[prevMinIndexByLenIndex - 1] : -1;\n oldPosList[i] = prevOldIndex;\n continue;\n }\n // Skip new items\n const oldIndex = oldKeyMap[rawKey];\n if (oldIndex === undefined) {\n oldPosList[i] = -1;\n continue;\n }\n // find the old-list index for the key of the current item\n let bottom = 0;\n let top = minIndexByLen.length;\n while (bottom < top) {\n const mid = Math.floor((bottom + top) / 2);\n if (oldIndex < minIndexByLen[mid])\n top = mid;\n else\n bottom = mid + 1;\n }\n minIndexByLen[top] = oldIndex;\n minIndexByLenIndexes[top] = i;\n minIndexPrev[i] = top > 0 ? minIndexByLenIndexes[top - 1] : -1;\n oldPosList[i] = oldIndex;\n prevOldIndex = oldIndex;\n prevMinIndexByLenIndex = top;\n }\n const lcsLen = minIndexByLenIndexes.length;\n // if LCS is the whole list, then the list is not changed -\n // simply match each item one-by-one\n if (lcsLen === newRawKeys.length && lcsLen === oldRawKeys.length) {\n let i = 0;\n while (i < oldRawKeys.length && i < newRawKeys.length) {\n const item = items[i];\n const index = indexes === null ? i : indexes[i];\n const oldIndex = oldIndexes === null ? i : oldIndexes[i];\n const u = updatePathTree === true || updatePathTree === undefined\n ? updatePathTree\n : updatePathTree[i];\n updateListItem(item, index, u, index !== oldIndex, elem.childNodes[i]);\n i += 1;\n }\n return;\n }\n // search the unused `minIndexPrev` items to get the LCS item list\n // ( `minIndexByLen` is reused as the LCS array, since they must have the same length)\n let prevLcsIndex = lcsLen > 0 ? minIndexByLenIndexes[lcsLen - 1] : -1;\n let curLcsArrIndex = lcsLen;\n while (prevLcsIndex !== -1) {\n curLcsArrIndex -= 1;\n minIndexByLen[curLcsArrIndex] = prevLcsIndex;\n prevLcsIndex = minIndexPrev[prevLcsIndex];\n }\n const lcsArr = minIndexByLen;\n // decide what operation to be used with each item\n let OpKind;\n (function (OpKind) {\n OpKind[OpKind[\"Stable\"] = 0] = \"Stable\";\n OpKind[OpKind[\"ForwardMove\"] = 1] = \"ForwardMove\";\n OpKind[OpKind[\"BackwardMove\"] = 2] = \"BackwardMove\";\n })(OpKind || (OpKind = {}));\n const oldListOp = new Array(oldRawKeys.length);\n const changedItems = new Array(newRawKeys.length);\n let prevLcsOldPos = -1;\n for (let i = 0; i < oldPosList.length; i += 1) {\n const oldPos = oldPosList[i];\n if (i === lcsArr[curLcsArrIndex]) {\n prevLcsOldPos = oldPos;\n curLcsArrIndex += 1;\n oldListOp[oldPos] = 0 /* OpKind.Stable */;\n continue;\n }\n if (oldPos === -1) {\n const item = items[i];\n const index = indexes === null ? i : indexes[i];\n changedItems[i] = newListItem(item, index);\n continue;\n }\n if (oldPos > prevLcsOldPos) {\n oldListOp[oldPos] = 2 /* OpKind.BackwardMove */;\n }\n else {\n oldListOp[oldPos] = 1 /* OpKind.ForwardMove */;\n }\n changedItems[i] = elem.childNodes[oldPos];\n }\n // visit the op list again and do the operations one-by-one\n let realListDiff = 0;\n let opOldPos = 0;\n let opIndex = 0;\n curLcsArrIndex = 0;\n do {\n const nextStable = curLcsArrIndex < lcsArr.length ? lcsArr[curLcsArrIndex] : changedItems.length;\n const nextStableOldPos = curLcsArrIndex < lcsArr.length ? oldPosList[nextStable] : oldListOp.length;\n // remove items between two LCS items\n while (opOldPos < nextStableOldPos) {\n if (oldListOp[opOldPos] === undefined) {\n const start = opOldPos;\n opOldPos += 1;\n let count = 1;\n while (opOldPos < nextStableOldPos && oldListOp[opOldPos] === undefined) {\n opOldPos += 1;\n count += 1;\n }\n elem.removeChildren(start + realListDiff, count);\n realListDiff -= count;\n }\n else {\n if (oldListOp[opOldPos] === 2 /* OpKind.BackwardMove */) {\n realListDiff -= 1;\n }\n opOldPos += 1;\n }\n }\n // insert or move items between two LCS items\n while (opIndex < nextStable) {\n const newItem = changedItems[opIndex];\n const oldPos = oldPosList[opIndex];\n if (oldPos === -1) {\n const start = opIndex;\n opIndex += 1;\n let count = 1;\n while (opIndex < nextStable && oldPosList[opIndex] === -1) {\n opIndex += 1;\n count += 1;\n }\n elem.insertChildren(changedItems.slice(start, start + count), nextStableOldPos + realListDiff);\n realListDiff += count;\n }\n else {\n elem.insertChildAt(newItem, nextStableOldPos + realListDiff);\n const item = items[opIndex];\n const index = indexes === null ? opIndex : indexes[opIndex];\n const oldIndex = oldIndexes === null ? oldPos : oldIndexes[oldPos];\n const u = updatePathTree === true || updatePathTree === undefined\n ? updatePathTree\n : updatePathTree[opIndex];\n updateListItem(item, index, u, index !== oldIndex, newItem);\n if (oldListOp[oldPos] === 2 /* OpKind.BackwardMove */) {\n realListDiff += 1;\n }\n opIndex += 1;\n }\n }\n // stable items might be marked and indexes in stable positions might change;\n // if that, do an update\n // IDEA do not update if {{index}} is not used in template\n if (curLcsArrIndex < lcsArr.length) {\n const item = items[nextStable];\n const index = indexes === null ? nextStable : indexes[nextStable];\n const oldIndex = oldIndexes === null ? nextStableOldPos : oldIndexes[nextStableOldPos];\n const u = updatePathTree === true || updatePathTree === undefined\n ? updatePathTree\n : updatePathTree[nextStable];\n const node = elem.childNodes[nextStableOldPos + realListDiff];\n updateListItem(item, index, u, index !== oldIndex, node);\n }\n opOldPos = nextStableOldPos + 1;\n opIndex = nextStable + 1;\n curLcsArrIndex += 1;\n } while (curLcsArrIndex <= lcsArr.length);\n }\n}\n//# sourceMappingURL=range_list_diff.js.map","/* eslint-disable class-methods-use-this */\nimport { Component } from '../component';\nimport { Element } from '../element';\nimport { ENV } from '../global_options';\nimport { isComponent, isNativeNode } from '../type_symbol';\nimport { dispatchError } from '../warning';\nimport { RangeListManager } from './range_list_diff';\nconst emptyFilter = (x) => x;\nexport const getTmplArgs = (elem) => {\n const node = elem;\n // eslint-disable-next-line no-return-assign\n return (node._$wxTmplArgs = node._$wxTmplArgs || {});\n};\nexport const dataValueToString = (v) => {\n if (v === null || v === undefined) {\n return '';\n }\n return String(v);\n};\nconst dashToCamelCase = (dash) => {\n const ret = dash.replace(/-(.|$)/g, (s) => (s[1] ? s[1].toUpperCase() : ''));\n return ret;\n};\nexport class ProcGenWrapper {\n constructor(shadowRoot, procGen, fallbackListenerOnNativeNode, eventObjectFilter) {\n this.bindingMapDisabled = false;\n this.eventObjectFilter = emptyFilter;\n this.changePropFilter = emptyFilter;\n this.eventListenerFilter = emptyFilter;\n // update a property or external class of a component, or an attribute of a native node\n this.r = (elem, name, v, modelLvaluePath, generalLvaluePath) => {\n var _a;\n const checkFallbackEventListener = (camelName) => {\n if (camelName.startsWith('bind')) {\n this.v(elem, camelName.slice('bind'.length), dataValueToString(v), false, false, false, true, generalLvaluePath);\n }\n else if (camelName.startsWith('captureBind')) {\n this.v(elem, camelName.slice('captureBind'.length), dataValueToString(v), false, false, true, true, generalLvaluePath);\n }\n else if (camelName.startsWith('catch')) {\n this.v(elem, camelName.slice('catch'.length), dataValueToString(v), true, false, false, true, generalLvaluePath);\n }\n else if (camelName.startsWith('captureCatch')) {\n this.v(elem, camelName.slice('captureCatch'.length), dataValueToString(v), true, false, true, true, generalLvaluePath);\n }\n else if (camelName.startsWith('on')) {\n this.v(elem, camelName.slice('on'.length), dataValueToString(v), false, false, false, true, generalLvaluePath);\n }\n else {\n return false;\n }\n return true;\n };\n if (isComponent(elem)) {\n const nodeDataProxy = Component.getDataProxy(elem);\n const camelName = dashToCamelCase(name);\n if (nodeDataProxy.replaceProperty(camelName, v)) {\n if (modelLvaluePath !== undefined) {\n if (modelLvaluePath === null) {\n nodeDataProxy.setModelBindingListener(camelName, () => { });\n }\n else {\n nodeDataProxy.setModelBindingListener(camelName, (value) => {\n const host = elem.ownerShadowRoot.getHostNode();\n const nodeDataProxy = Component.getDataProxy(host);\n nodeDataProxy.replaceDataOnPath(modelLvaluePath, value);\n nodeDataProxy.applyDataUpdates(false);\n });\n }\n }\n const tmplArgs = getTmplArgs(elem);\n if ((_a = tmplArgs.changeProp) === null || _a === void 0 ? void 0 : _a[name]) {\n const lv = tmplArgs.changeProp[name];\n const oldValue = lv.oldValue;\n if (oldValue !== v) {\n lv.oldValue = v;\n const host = elem.ownerShadowRoot.getHostNode();\n lv.listener.call(host.getMethodCaller(), v, oldValue, host, elem);\n }\n }\n }\n else if (elem.hasExternalClass(name)) {\n elem.setExternalClass(name, v);\n }\n else {\n // compatibilities for legacy event binding syntax\n checkFallbackEventListener(camelName);\n }\n }\n else if (isNativeNode(elem)) {\n if (this.fallbackListenerOnNativeNode) {\n // compatibilities for legacy event binding syntax\n const camelName = dashToCamelCase(name);\n if (!checkFallbackEventListener(camelName)) {\n elem.updateAttribute(name, v);\n }\n }\n else {\n elem.updateAttribute(name, v);\n }\n if (modelLvaluePath) {\n elem.setModelBindingListener(name, (value) => {\n const host = elem.ownerShadowRoot.getHostNode();\n const nodeDataProxy = Component.getDataProxy(host);\n nodeDataProxy.replaceDataOnPath(modelLvaluePath, value);\n nodeDataProxy.applyDataUpdates(false);\n });\n }\n }\n };\n this.shadowRoot = shadowRoot;\n this.procGen = procGen;\n this.fallbackListenerOnNativeNode = fallbackListenerOnNativeNode;\n if (eventObjectFilter) {\n this.eventObjectFilter = eventObjectFilter;\n }\n }\n create(data) {\n const { shadowRoot, procGen } = this;\n const children = procGen(this, true, data, undefined);\n this.handleChildrenCreationAndInsert(children.C, shadowRoot, undefined, undefined);\n return children.B;\n }\n update(data, dataUpdatePathTree) {\n const { shadowRoot, procGen } = this;\n const children = procGen(this, false, data, dataUpdatePathTree);\n this.handleChildrenUpdate(children.C, shadowRoot, undefined, undefined);\n }\n bindingMapUpdate(field, data, bindingMapGenList) {\n if (this.bindingMapDisabled)\n return false;\n const updaters = bindingMapGenList[field];\n if (!updaters)\n return false;\n let prevElement = null;\n for (let i = 0; i < updaters.length; i += 1) {\n const bindingMapGen = updaters[i];\n bindingMapGen(data, \n // eslint-disable-next-line no-loop-func\n (elem) => {\n if (prevElement !== null && elem !== prevElement) {\n if (isComponent(prevElement)) {\n if (prevElement.hasPendingChanges()) {\n const nodeDataProxy = Component.getDataProxy(prevElement);\n nodeDataProxy.applyDataUpdates(true);\n }\n }\n }\n prevElement = elem;\n }, (elem, v) => {\n elem.textContent = v;\n });\n }\n const elem = prevElement;\n if (elem !== null) {\n if (isComponent(elem)) {\n if (elem.hasPendingChanges()) {\n const nodeDataProxy = Component.getDataProxy(elem);\n nodeDataProxy.applyDataUpdates(true);\n }\n }\n }\n return true;\n }\n handleChildrenCreation(children, slotElement, dynamicSlotName) {\n const childNodes = [];\n children(true, \n // text node\n (textContent, textInit) => {\n if (slotElement && dynamicSlotName !== '') {\n const elem = this.createDynamicPlaceholder(slotElement);\n childNodes.push(elem);\n return;\n }\n const elem = this.shadowRoot.createTextNode(textContent);\n elem.destroyBackendElementOnDetach();\n if (slotElement)\n Element.setSlotElement(elem, slotElement);\n if (textInit)\n textInit(elem);\n childNodes.push(elem);\n }, \n // component or native node\n (tagName, genericImpls, propertyInit, children, slot, dynamicSlotValueNames) => {\n if (slotElement && dynamicSlotName !== (slot || '')) {\n const elem = this.createDynamicPlaceholder(slotElement);\n childNodes.push(elem);\n return;\n }\n const elem = this.createCommonElement(tagName, genericImpls, propertyInit, children, dynamicSlotValueNames);\n if (slotElement) {\n Element.setSlotElement(elem, slotElement);\n const tmplArgs = getTmplArgs(elem);\n tmplArgs.dynamicSlotNameMatched = true;\n }\n else if (slot !== undefined) {\n elem.slot = slot;\n }\n childNodes.push(elem);\n }, \n // wx:if node or template-is node\n (branchKey, branchFunc) => {\n const elem = this.shadowRoot.createVirtualNode('wx:if');\n elem.destroyBackendElementOnDetach();\n Element.setInheritSlots(elem);\n if (slotElement)\n Element.setSlotElement(elem, slotElement);\n const tmplArgs = getTmplArgs(elem);\n tmplArgs.key = branchKey;\n this.handleChildrenCreationAndInsert(branchFunc, elem, slotElement, dynamicSlotName);\n childNodes.push(elem);\n }, \n // wx:for node\n (list, key, oriListUpdatePathTree, lvaluePath, itemCallback) => {\n const shadowRoot = this.shadowRoot;\n const elem = shadowRoot.createVirtualNode('wx:for');\n elem.destroyBackendElementOnDetach();\n Element.setInheritSlots(elem);\n if (slotElement)\n Element.setSlotElement(elem, slotElement);\n const tmplArgs = getTmplArgs(elem);\n tmplArgs.keyList = new RangeListManager(key, list, elem, shadowRoot, (item, index) => {\n const childNode = shadowRoot.createVirtualNode('wx:for-item');\n childNode.destroyBackendElementOnDetach();\n Element.setInheritSlots(childNode);\n if (slotElement)\n Element.setSlotElement(elem, slotElement);\n this.handleChildrenCreationAndInsert((isCreation, defineTextNode, defineElement, defineIfGroup, defineForLoop, defineSlot, definePureVirtualNode) => {\n itemCallback(true, item, index, undefined, undefined, lvaluePath ? [...lvaluePath, index] : null, defineTextNode, defineElement, defineIfGroup, defineForLoop, defineSlot, definePureVirtualNode);\n }, childNode, slotElement, dynamicSlotName);\n return childNode;\n });\n childNodes.push(elem);\n }, \n // slot node\n (slotName, slotValueInit, slot) => {\n const elem = this.shadowRoot.createVirtualNode('slot');\n elem.destroyBackendElementOnDetach();\n Element.setSlotName(elem, dataValueToString(slotName));\n if (slotElement) {\n Element.setSlotElement(elem, slotElement);\n }\n else if (slot !== undefined) {\n elem.slot = slot;\n }\n if (slotValueInit)\n slotValueInit(elem);\n childNodes.push(elem);\n }, \n // other virtual node\n (children, slot) => {\n if (slot !== undefined) {\n if (slotElement) {\n if (dynamicSlotName === slot) {\n const elem = this.shadowRoot.createVirtualNode('virtual');\n elem.destroyBackendElementOnDetach();\n Element.setSlotElement(elem, slotElement);\n const tmplArgs = getTmplArgs(elem);\n tmplArgs.dynamicSlotNameMatched = true;\n this.handleChildrenCreationAndInsert(children, elem, undefined, undefined);\n childNodes.push(elem);\n }\n else {\n const elem = this.createDynamicPlaceholder(slotElement);\n childNodes.push(elem);\n }\n }\n else {\n const elem = this.shadowRoot.createVirtualNode('virtual');\n elem.destroyBackendElementOnDetach();\n elem.slot = slot;\n this.handleChildrenCreationAndInsert(children, elem, undefined, undefined);\n childNodes.push(elem);\n }\n }\n else {\n const elem = this.shadowRoot.createVirtualNode('virtual');\n elem.destroyBackendElementOnDetach();\n Element.setInheritSlots(elem);\n if (slotElement)\n Element.setSlotElement(elem, slotElement);\n this.handleChildrenCreationAndInsert(children, elem, slotElement, dynamicSlotName);\n childNodes.push(elem);\n }\n }, undefined, undefined);\n return childNodes;\n }\n handleChildrenCreationAndInsert(children, parentNode, slotElement, dynamicSlotName) {\n const childNodes = this.handleChildrenCreation(children, slotElement, dynamicSlotName);\n if (childNodes.length)\n parentNode.insertChildren(childNodes, -1);\n }\n handleChildrenUpdate(children, parentNode, slotElement, dynamicSlotName) {\n let index = 0;\n const childNodes = slotElement\n ? slotElement.slotNodes.filter((node) => node.parentNode === parentNode)\n : parentNode.childNodes;\n children(false, \n // text node\n (textContent) => {\n const elem = childNodes[index];\n index += 1;\n if (slotElement) {\n const tmplArgs = getTmplArgs(elem);\n if (!tmplArgs.dynamicSlotNameMatched) {\n return;\n }\n }\n if (textContent !== undefined) {\n elem.textContent = textContent;\n }\n }, \n // component or native node\n (tagName, genericImpls, propertyInit, children, slot, dynamicSlotValueNames) => {\n const elem = childNodes[index];\n index += 1;\n if (slotElement) {\n const tmplArgs = getTmplArgs(elem);\n if (dynamicSlotName === (slot || '')) {\n if (!tmplArgs.dynamicSlotNameMatched) {\n const newElem = this.createCommonElement(tagName, genericImpls, propertyInit, children, dynamicSlotValueNames);\n Element.setSlotElement(newElem, slotElement);\n const newTmplArgs = getTmplArgs(newElem);\n newTmplArgs.dynamicSlotNameMatched = true;\n parentNode.replaceChild(newElem, elem);\n return;\n }\n }\n else {\n if (tmplArgs.dynamicSlotNameMatched) {\n const newElem = this.createDynamicPlaceholder(slotElement);\n parentNode.replaceChild(newElem, elem);\n }\n return;\n }\n }\n propertyInit(elem, false);\n let dynSlot = false;\n if (isComponent(elem)) {\n const sr = this.dynamicSlotUpdate(elem, dynamicSlotValueNames, children);\n if (sr)\n dynSlot = true;\n if (elem.hasPendingChanges()) {\n const nodeDataProxy = Component.getDataProxy(elem);\n nodeDataProxy.applyDataUpdates(true);\n }\n sr === null || sr === void 0 ? void 0 : sr.applySlotUpdates();\n }\n if (!slotElement) {\n if (slot !== undefined)\n elem.slot = slot;\n }\n if (!dynSlot) {\n this.handleChildrenUpdate(children, elem, undefined, undefined);\n }\n }, \n // wx:if node or template-is node\n (branchKey, branchFunc) => {\n const elem = childNodes[index];\n index += 1;\n const tmplArgs = getTmplArgs(elem);\n if (tmplArgs.key === branchKey) {\n this.handleChildrenUpdate(branchFunc, elem, slotElement, dynamicSlotName);\n }\n else {\n const newElem = this.shadowRoot.createVirtualNode('wx:if');\n newElem.destroyBackendElementOnDetach();\n Element.setInheritSlots(newElem);\n if (slotElement)\n Element.setSlotElement(newElem, slotElement);\n const tmplArgs = getTmplArgs(newElem);\n tmplArgs.key = branchKey;\n this.handleChildrenCreationAndInsert(branchFunc, newElem, slotElement, dynamicSlotName);\n if (slotElement)\n parentNode.replaceChild(newElem, elem);\n else\n parentNode.replaceChildAt(newElem, index - 1);\n }\n }, \n // wx:for node\n (list, key, oriListUpdatePathTree, lvaluePath, itemCallback) => {\n const elem = childNodes[index];\n index += 1;\n const tmplArgs = getTmplArgs(elem);\n const keyListManager = tmplArgs.keyList;\n keyListManager.diff(list, oriListUpdatePathTree, elem, (item, index) => {\n const childNode = this.shadowRoot.createVirtualNode('wx:for-item');\n childNode.destroyBackendElementOnDetach();\n Element.setInheritSlots(childNode);\n if (slotElement)\n Element.setSlotElement(elem, slotElement);\n this.handleChildrenCreationAndInsert((isCreation, defineTextNode, defineElement, defineIfGroup, defineForLoop, defineSlot, definePureVirtualNode) => {\n itemCallback(true, item, index, undefined, undefined, lvaluePath ? [...lvaluePath, index] : null, defineTextNode, defineElement, defineIfGroup, defineForLoop, defineSlot, definePureVirtualNode);\n }, childNode, slotElement, dynamicSlotName);\n return childNode;\n }, (item, index, updatePathTree, indexChanged, childNode) => {\n this.handleChildrenUpdate((isCreation, defineTextNode, defineElement, defineIfGroup, defineForLoop, defineSlot, definePureVirtualNode) => {\n itemCallback(false, item, index, updatePathTree, indexChanged ? true : undefined, lvaluePath ? [...lvaluePath, index] : null, defineTextNode, defineElement, defineIfGroup, defineForLoop, defineSlot, definePureVirtualNode);\n }, childNode, slotElement, dynamicSlotName);\n });\n }, \n // slot node\n (slotName, slotValueInit, slot) => {\n const elem = childNodes[index];\n index += 1;\n if (slotName !== undefined) {\n Element.setSlotName(elem, dataValueToString(slotName));\n }\n if (!slotElement) {\n if (slot !== undefined)\n elem.slot = slot;\n }\n if (slotValueInit)\n slotValueInit(elem);\n this.shadowRoot.applySlotValueUpdates(elem);\n }, \n // other virtual node\n (children, slot) => {\n const elem = childNodes[index];\n index += 1;\n if (slot !== undefined) {\n if (slotElement) {\n const tmplArgs = getTmplArgs(elem);\n if (dynamicSlotName === slot) {\n if (tmplArgs.dynamicSlotNameMatched) {\n this.handleChildrenUpdate(children, elem, undefined, undefined);\n }\n else {\n const newElem = this.shadowRoot.createVirtualNode('virtual');\n newElem.destroyBackendElementOnDetach();\n Element.setSlotElement(newElem, slotElement);\n const newTmplArgs = getTmplArgs(newElem);\n newTmplArgs.dynamicSlotNameMatched = true;\n this.handleChildrenCreationAndInsert(children, newElem, undefined, undefined);\n parentNode.replaceChild(newElem, elem);\n }\n }\n else {\n if (tmplArgs.dynamicSlotNameMatched) {\n const newElem = this.createDynamicPlaceholder(slotElement);\n parentNode.replaceChild(newElem, elem);\n }\n }\n }\n else {\n elem.slot = slot;\n this.handleChildrenUpdate(children, elem, undefined, undefined);\n }\n }\n else {\n this.handleChildrenUpdate(children, elem, slotElement, dynamicSlotName);\n }\n }, undefined, undefined);\n }\n dynamicSlotUpdate(elem, dynamicSlotValueNames, children) {\n const sr = elem.getShadowRoot();\n if ((sr === null || sr === void 0 ? void 0 : sr.getSlotMode()) === 3 /* SlotMode.Dynamic */) {\n sr.setDynamicSlotHandler(dynamicSlotValueNames || [], (slots) => {\n const childNodes = [];\n for (let i = 0; i < slots.length; i += 1) {\n const { slot, name: slotName, slotValues } = slots[i];\n const slotChildNodes = this.handleChildrenCreation((isCreation, defineTextNode, defineElement, defineIfGroup, defineForLoop, defineSlot, definePureVirtualNode) => {\n children(true, defineTextNode, defineElement, defineIfGroup, defineForLoop, defineSlot, definePureVirtualNode, slotValues, undefined);\n }, slot, slotName);\n childNodes.push(...slotChildNodes);\n }\n if (childNodes.length)\n elem.insertChildren(childNodes, -1);\n }, (slots) => {\n if (!slots.length || !slots[0].slotNodes.length)\n return;\n slots.sort((slot1, slot2) => slot1.slotNodes[0].parentIndex - slot2.slotNodes[0].parentIndex);\n let l = -Infinity;\n let r = -Infinity;\n for (let i = 0; i < slots.length; i += 1) {\n const slotNodes = slots[i].slotNodes;\n const firstIndex = slotNodes[0].parentIndex;\n if (r === firstIndex) {\n r = firstIndex + slotNodes.length;\n }\n else {\n if (l >= 0) {\n elem.removeChildren(l, r - l);\n }\n l = firstIndex;\n r = firstIndex + slotNodes.length;\n }\n }\n if (l >= 0)\n elem.removeChildren(l, r - l);\n }, (slot, slotValues, slotValueUpdatePathTrees) => {\n const slotName = slot._$slotName || '';\n this.handleChildrenUpdate((isCreation, defineTextNode, defineElement, defineIfGroup, defineForLoop, defineSlot, definePureVirtualNode) => {\n children(false, defineTextNode, defineElement, defineIfGroup, defineForLoop, defineSlot, definePureVirtualNode, slotValues, slotValueUpdatePathTrees);\n }, elem, slot, slotName);\n });\n return sr;\n }\n return null;\n }\n createDynamicPlaceholder(slotElement) {\n const elem = this.shadowRoot.createVirtualNode('virtual');\n elem.destroyBackendElementOnDetach();\n Element.setSlotElement(elem, slotElement);\n const tmplArgs = getTmplArgs(elem);\n tmplArgs.dynamicSlotNameMatched = false;\n return elem;\n }\n createCommonElement(tagName, genericImpls, propertyInit, children, dynamicSlotValueNames) {\n let dynSlot = false;\n const initPropValues = (elem) => {\n const sr = isComponent(elem)\n ? this.dynamicSlotUpdate(elem, dynamicSlotValueNames, children)\n : null;\n if (sr)\n dynSlot = true;\n propertyInit(elem, true);\n if (isComponent(elem)) {\n if (elem.hasPendingChanges()) {\n const nodeDataProxy = Component.getDataProxy(elem);\n nodeDataProxy.applyDataUpdates(true);\n }\n sr === null || sr === void 0 ? void 0 : sr.applySlotUpdates();\n }\n };\n const placeholderCallback = () => {\n var _a;\n const replacer = this.shadowRoot.createComponent(tagName, tagName, genericImpls, undefined, initPropValues);\n replacer.destroyBackendElementOnDetach();\n const replacerShadowRoot = replacer.getShadowRoot();\n const elemShadowRoot = isComponent(elem) ? elem.getShadowRoot() : null;\n const isElemDynamicSlots = (elemShadowRoot === null || elemShadowRoot === void 0 ? void 0 : elemShadowRoot.getSlotMode()) === 3 /* SlotMode.Dynamic */;\n const isReplacerDynamicSlots = (replacerShadowRoot === null || replacerShadowRoot === void 0 ? void 0 : replacerShadowRoot.getSlotMode()) === 3 /* SlotMode.Dynamic */;\n if (isReplacerDynamicSlots !== isElemDynamicSlots) {\n dispatchError(new Error(`The \"dynamicSlots\" option of component <${replacer.is}> and its placeholder <${elem.is}> should be the same.`), '[render]', isComponent(replacer) ? replacer : replacer.is);\n }\n else if (isReplacerDynamicSlots) {\n (_a = elem.parentNode) === null || _a === void 0 ? void 0 : _a.replaceChild(replacer, elem);\n }\n else {\n elem.selfReplaceWith(replacer);\n }\n };\n const elem = this.shadowRoot.createComponent(tagName, tagName, genericImpls, placeholderCallback, initPropValues);\n elem.destroyBackendElementOnDetach();\n if (dynSlot) {\n this.bindingMapDisabled = true; // IDEA better binding map disable detection\n }\n else {\n this.handleChildrenCreationAndInsert(children, elem, undefined, undefined);\n }\n return elem;\n }\n // set slot\n // (not used any more, leaving for compatibilities)\n s(elem, v) {\n elem.slot = v;\n }\n // set slot value\n l(elem, name, value) {\n this.shadowRoot.replaceSlotValue(elem, name, value);\n }\n // set id\n i(elem, v) {\n elem.id = v;\n }\n // set class or external classes named `class`\n c(elem, v) {\n if (isComponent(elem)) {\n // \"class\" itself can also be an external class\n const hasExternalClass = elem.hasExternalClass('class');\n if (hasExternalClass) {\n elem.setExternalClass('class', v);\n }\n }\n elem.setNodeClass(v);\n }\n // set style or property named `style`\n y(elem, v) {\n if (isComponent(elem) && Component.hasProperty(elem, 'style')) {\n const nodeDataProxy = Component.getDataProxy(elem);\n const camelName = dashToCamelCase('style');\n nodeDataProxy.replaceProperty(camelName, v);\n }\n else {\n elem.setNodeStyle(dataValueToString(v), 0 /* StyleSegmentIndex.MAIN */);\n }\n }\n // set dataset\n d(elem, name, v) {\n elem.setDataset(name, v);\n }\n // set mark\n m(elem, name, v) {\n elem.setMark(name, v);\n }\n // set event handler\n v(elem, evName, v, final, mutated, capture, isDynamic, _generalLvaluePath) {\n const handler = typeof v === 'function' ? this.eventListenerFilter(v) : dataValueToString(v);\n const listener = (ev) => {\n const host = elem.ownerShadowRoot.getHostNode();\n let ret;\n const methodCaller = host.getMethodCaller();\n const f = typeof handler === 'function' ? handler : Component.getMethod(host, handler);\n if (typeof f === 'function') {\n const filteredEv = this.eventObjectFilter(ev);\n ret = f.call(methodCaller, filteredEv);\n }\n return ret;\n };\n if (ENV.DEV) {\n Object.defineProperty(listener, 'name', {\n value: typeof handler === 'string' ? handler : handler.name,\n });\n }\n const evOptions = {\n final,\n mutated,\n capture,\n };\n if (isDynamic) {\n const tmplArgs = getTmplArgs(elem);\n if (!tmplArgs.dynEvListeners)\n tmplArgs.dynEvListeners = {};\n const dynEvListeners = tmplArgs.dynEvListeners;\n if (dynEvListeners[evName]) {\n elem.removeListener(evName, dynEvListeners[evName], evOptions);\n }\n dynEvListeners[evName] = listener;\n }\n if (handler)\n elem.addListener(evName, listener, evOptions);\n }\n // set a worklet directive value\n wl(elem, name, value) {\n if (isComponent(elem)) {\n elem.triggerWorkletChangeLifetime(name, value);\n }\n else {\n // TODO warn unused worklet\n }\n }\n // add a change property binding\n p(elem, name, v, _generalLvaluePath) {\n if (isComponent(elem)) {\n if (Component.hasProperty(elem, name)) {\n const tmplArgs = getTmplArgs(elem);\n if (!tmplArgs.changeProp) {\n tmplArgs.changeProp = Object.create(null);\n }\n tmplArgs.changeProp[name] = {\n listener: this.changePropFilter(v),\n oldValue: elem.data[name],\n };\n }\n }\n }\n // set filter functions for change properties and event listeners\n setFnFilter(changePropFilter, eventListenerFilter) {\n this.changePropFilter = changePropFilter;\n this.eventListenerFilter = eventListenerFilter;\n }\n}\nexport var GeneralLvaluePathPrefix;\n(function (GeneralLvaluePathPrefix) {\n GeneralLvaluePathPrefix[GeneralLvaluePathPrefix[\"Data\"] = 0] = \"Data\";\n GeneralLvaluePathPrefix[GeneralLvaluePathPrefix[\"Script\"] = 1] = \"Script\";\n GeneralLvaluePathPrefix[GeneralLvaluePathPrefix[\"InlineScript\"] = 2] = \"InlineScript\";\n})(GeneralLvaluePathPrefix || (GeneralLvaluePathPrefix = {}));\n//# sourceMappingURL=proc_gen_wrapper.js.map","/* eslint-disable class-methods-use-this */\n/* global document */\nimport { dataValueToString, } from './proc_gen_wrapper';\nconst noop = () => {\n /* empty */\n};\nexport class ProcGenWrapperDom {\n constructor(shadowRoot, procGen) {\n this.shadowRoot = shadowRoot;\n this.procGen = procGen;\n }\n create(data) {\n const { shadowRoot, procGen } = this;\n const children = procGen(this, true, data, undefined);\n this.handleChildrenCreation(children.C, shadowRoot.shadowRootElement);\n return children.B;\n }\n bindingMapUpdate(field, data, bindingMapGenList) {\n const updaters = bindingMapGenList[field];\n if (updaters === undefined)\n return;\n for (let i = 0; i < updaters.length; i += 1) {\n const bindingMapGen = updaters[i];\n bindingMapGen(data, () => {\n /* empty */\n }, (elem, v) => {\n ;\n elem.textContent = v;\n });\n }\n }\n handleChildrenCreation(children, parentNode) {\n let slotMergeable = true;\n let slotMerged = false;\n const appendSlot = () => {\n slotMergeable = false;\n slotMerged = false;\n const elem = document.createElement('virtual');\n parentNode.appendChild(elem);\n this.shadowRoot.slot = elem;\n };\n children(true, \n // text node\n (textContent, textInit) => {\n if (slotMerged)\n appendSlot();\n else\n slotMergeable = false;\n const elem = document.createTextNode(textContent || '');\n if (textInit)\n textInit(elem);\n parentNode.appendChild(elem);\n }, \n // component or native node\n (tagName, genericImpls, propertyInit, children) => {\n if (slotMerged)\n appendSlot();\n else\n slotMergeable = false;\n const elem = document.createElement(tagName);\n propertyInit(elem, true);\n this.handleChildrenCreation(children, elem);\n parentNode.appendChild(elem);\n }, \n // wx:if node or template-is node\n noop, \n // wx:for node\n noop, \n // slot node\n () => {\n if (slotMergeable) {\n slotMerged = true;\n this.shadowRoot.slot = parentNode;\n }\n else {\n appendSlot();\n }\n }, \n // other virtual node\n (children) => {\n if (slotMerged)\n appendSlot();\n else\n slotMergeable = false;\n const elem = document.createElement('virtual');\n this.handleChildrenCreation(children, elem);\n parentNode.appendChild(elem);\n });\n }\n // set slot\n s() {\n noop();\n }\n // set id\n i(elem, v) {\n this.shadowRoot.idMap[v] = elem;\n }\n // set class or external classes named `class`\n c(elem, v) {\n elem.setAttribute('class', v);\n }\n // set style or property named `style`\n y(elem, v) {\n elem.setAttribute('style', v);\n }\n // set dataset\n d(elem, name, v) {\n elem.dataset[name] = dataValueToString(v);\n }\n // set mark\n m() {\n noop();\n }\n // set event handler\n v(elem, evName, v, final) {\n this.shadowRoot.setListener(elem, evName, (ev) => {\n const handler = this.shadowRoot.template.methods[v];\n const ret = handler === null || handler === void 0 ? void 0 : handler(ev);\n if (final)\n return false;\n return ret;\n });\n }\n // update a property or external class of a component, or an attribute of a native node\n r(elem, name, v) {\n if (typeof v === 'boolean') {\n if (v)\n elem.setAttribute(name, '');\n else\n elem.removeAttribute(name);\n }\n else {\n elem.setAttribute(name, dataValueToString(v));\n }\n }\n // add a change property binding\n p() {\n noop();\n }\n // set filter functions for change properties and event listeners\n setFnFilter() {\n noop();\n }\n}\n//# sourceMappingURL=proc_gen_wrapper_dom.js.map","/* global document: false */\nimport { ProcGenWrapperDom } from './proc_gen_wrapper_dom';\nconst DEFAULT_PROC_GEN_DOM = () => ({\n C: (isCreation, defineTextNode, defineElement, defineIfGroup, defineForLoop, defineSlot) => {\n defineSlot('');\n },\n B: Object.create(null),\n});\nexport const DEFAULT_PROC_GEN_GROUP_DOM = () => DEFAULT_PROC_GEN_DOM;\nexport class GlassEaselTemplateDOM {\n constructor(behavior) {\n if (typeof behavior._$template !== 'object' && behavior._$template !== undefined) {\n throw new Error(`Component template of ${behavior.is} must be a valid compiled template (or \"null\" for default template).`);\n }\n else {\n const c = behavior._$template || {\n content: DEFAULT_PROC_GEN_GROUP_DOM,\n };\n this.genObjectGroupEnv = {\n list: c.groupList || Object.create(null),\n group: c.content,\n };\n }\n this.updateMode = '';\n this.methods = behavior._$methodMap;\n }\n createInstance(comp) {\n return new GlassEaselTemplateDOMInstance(this, comp);\n }\n}\nexport class GlassEaselTemplateDOMInstance {\n constructor(template, comp) {\n if (comp.getBackendMode() !== 3 /* BackendMode.Domlike */) {\n throw new Error(`Component template of ${comp.is} cannot be initialized since external rendering is only supported in Domlike backend currently.`);\n }\n const shadowRootElement = comp.getBackendElement();\n if (!shadowRootElement) {\n throw new Error(`Component template of ${comp.is} cannot be initialized as external components since no suitable backend element found.`);\n }\n this.comp = comp;\n this.shadowRoot = this;\n this.shadowRootElement = shadowRootElement;\n this.root = shadowRootElement;\n this.slot = shadowRootElement;\n this.template = template;\n const procGen = template.genObjectGroupEnv.group('') || DEFAULT_PROC_GEN_GROUP_DOM('');\n this.procGenWrapper = new ProcGenWrapperDom(this, procGen);\n this.idMap = Object.create(null);\n this.listeners = [];\n }\n initValues(data) {\n this.bindingMapGen = this.procGenWrapper.create(data);\n if (!this.bindingMapGen) {\n throw new Error('The component template does not support binding-map-update, so it cannot be used as external components.');\n }\n const shadowRoot = this.shadowRootElement;\n if (this.slot === shadowRoot && shadowRoot.childNodes.length > 0) {\n // if `<slot />` is forgot, add one at the end of the child list\n const slot = document.createElement('virtual');\n shadowRoot.appendChild(slot);\n this.slot = slot;\n }\n }\n getIdMap() {\n return this.idMap;\n }\n updateValues(data, changes) {\n const bindingMapGen = this.bindingMapGen;\n for (let i = 0; i < changes.length; i += 1) {\n const [path] = changes[i];\n this.procGenWrapper.bindingMapUpdate(path[0], data, bindingMapGen);\n }\n }\n // eslint-disable-next-line class-methods-use-this\n setListener(elem, ev, listener) {\n const target = elem;\n if (target._$wxTmplEv) {\n target._$wxTmplEv[ev] = listener;\n }\n else {\n target._$wxTmplEv = { [ev]: listener };\n }\n }\n handleEvent(elem, event) {\n var _a;\n const target = elem;\n let cur = target;\n const root = this.shadowRootElement;\n const evName = event.getEventName();\n const bubbles = event.bubbles;\n for (;;) {\n const shadowedEvent = event.wrapShadowedEvent(target, null, cur);\n const f = (_a = cur._$wxTmplEv) === null || _a === void 0 ? void 0 : _a[evName];\n if (f) {\n const r = f.call(cur, shadowedEvent);\n if (r === false) {\n event.preventDefault();\n event.stopPropagation();\n }\n }\n if (!bubbles || event.propagationStopped())\n break;\n if (cur === root)\n break;\n const next = cur.parentNode;\n if (next)\n cur = next;\n else\n break;\n }\n }\n}\n//# sourceMappingURL=native_rendering.js.map","/* eslint-disable class-methods-use-this */\nimport { GlassEaselTemplateDOM } from './native_rendering';\nimport { ProcGenWrapper, } from './proc_gen_wrapper';\nconst DEFAULT_PROC_GEN = () => ({\n C: (isCreation, defineTextNode, defineElement, defineIfGroup, defineForLoop, defineSlot) => {\n defineSlot('');\n },\n B: Object.create(null),\n});\nexport const DEFAULT_PROC_GEN_GROUP = () => DEFAULT_PROC_GEN;\nvar BindingMapUpdateEnabled;\n(function (BindingMapUpdateEnabled) {\n BindingMapUpdateEnabled[BindingMapUpdateEnabled[\"Disabled\"] = 0] = \"Disabled\";\n BindingMapUpdateEnabled[BindingMapUpdateEnabled[\"Enabled\"] = 1] = \"Enabled\";\n BindingMapUpdateEnabled[BindingMapUpdateEnabled[\"Forced\"] = 2] = \"Forced\";\n})(BindingMapUpdateEnabled || (BindingMapUpdateEnabled = {}));\nexport class GlassEaselTemplateEngine {\n create(behavior, componentOptions) {\n if (componentOptions.externalComponent) {\n return new GlassEaselTemplateDOM(behavior);\n }\n return new GlassEaselTemplate(behavior);\n }\n}\nclass GlassEaselTemplate {\n constructor(behavior) {\n this.updateTemplate(behavior);\n }\n /**\n * Update the underlying template content\n *\n * This method does not affect created instances.\n */\n updateTemplate(behavior) {\n const template = behavior._$template;\n if (typeof template !== 'object' && template !== undefined) {\n throw new Error(`Component template of ${behavior.is} must be a valid compiled template (or \"null\" for default template).`);\n }\n const c = template || {\n content: DEFAULT_PROC_GEN_GROUP,\n };\n this.genObjectGroupEnv = {\n list: c.groupList || Object.create(null),\n group: c.content,\n };\n this.updateMode = c.updateMode || '';\n this.fallbackListenerOnNativeNode = c.fallbackListenerOnNativeNode || false;\n this.eventObjectFilter = c.eventObjectFilter;\n }\n createInstance(comp, createShadowRoot) {\n return new GlassEaselTemplateInstance(this, comp, createShadowRoot(comp));\n }\n}\nclass GlassEaselTemplateInstance {\n constructor(template, comp, shadowRoot) {\n this.comp = comp;\n this.shadowRoot = shadowRoot;\n this.shadowRoot.destroyBackendElementOnDetach();\n this._$applyTemplate(template);\n }\n updateTemplate(template, data) {\n this._$applyTemplate(template);\n this.shadowRoot.removeChildren(0, this.shadowRoot.childNodes.length);\n this.bindingMapGen = this.procGenWrapper.create(data);\n }\n _$applyTemplate(template) {\n const procGen = template.genObjectGroupEnv.group('') || DEFAULT_PROC_GEN_GROUP('');\n if (template.updateMode === 'bindingMap') {\n this.forceBindingMapUpdate = 2 /* BindingMapUpdateEnabled.Forced */;\n }\n else if (template.updateMode === 'virtualTree') {\n this.forceBindingMapUpdate = 0 /* BindingMapUpdateEnabled.Disabled */;\n }\n else {\n this.forceBindingMapUpdate = 1 /* BindingMapUpdateEnabled.Enabled */;\n }\n this.procGenWrapper = new ProcGenWrapper(this.shadowRoot, procGen, template.fallbackListenerOnNativeNode, template.eventObjectFilter);\n this.bindingMapGen = undefined;\n }\n initValues(data) {\n this.bindingMapGen = this.procGenWrapper.create(data);\n return this.shadowRoot;\n }\n updateValues(data, changes) {\n if (this.forceBindingMapUpdate === 2 /* BindingMapUpdateEnabled.Forced */) {\n for (let i = 0; i < changes.length; i += 1) {\n this.tryBindingMapUpdate(data, changes[i]);\n }\n return;\n }\n if (this.forceBindingMapUpdate === 1 /* BindingMapUpdateEnabled.Enabled */ && changes.length <= 1) {\n if (this.bindingMapGen) {\n if (this.tryBindingMapUpdate(data, changes[0])) {\n return;\n }\n }\n }\n const dataUpdatePathTree = Object.create(null);\n for (let i = 0; i < changes.length; i += 1) {\n const [p, newVal, spliceIndex, spliceDel] = changes[i];\n let cur = dataUpdatePathTree;\n for (let j = 0; j < p.length; j += 1) {\n const field = p[j];\n const v = cur[field];\n if (v === true)\n break;\n if (j === p.length - 1) {\n if (spliceDel === undefined) {\n cur[field] = true;\n }\n else {\n const startIndex = spliceIndex;\n if (v === undefined) {\n cur[field] = new Array(startIndex);\n }\n else if (!Array.isArray(v)) {\n const arr = new Array(startIndex);\n const keys = Object.keys(v);\n for (let i = 0; i < keys.length; i += 1) {\n const key = keys[i];\n const item = v[key];\n const index = Number(key);\n if (arr.length < index)\n arr.length = index;\n arr[key] = item;\n }\n cur[field] = arr;\n }\n const arr = cur[field];\n if (arr.length < startIndex) {\n arr.length = startIndex;\n }\n const inserts = new Array(newVal.length);\n inserts.fill(true);\n arr.splice(spliceIndex, spliceDel, ...inserts);\n }\n break;\n }\n if (v === undefined) {\n const next = Object.create(null);\n cur[field] = next;\n cur = next;\n }\n else {\n cur = v;\n }\n }\n }\n this.procGenWrapper.update(data, dataUpdatePathTree);\n }\n tryBindingMapUpdate(data, change) {\n if (!change)\n return true;\n const bindingMapGen = this.bindingMapGen;\n if (!bindingMapGen) {\n return false;\n }\n const [path] = change;\n if (path.length !== 1)\n return false;\n return this.procGenWrapper.bindingMapUpdate(path[0], data, bindingMapGen);\n }\n}\nlet defaultTemplateEngine = null;\nexport const getDefaultTemplateEngine = () => {\n if (defaultTemplateEngine) {\n return defaultTemplateEngine;\n }\n const tmpl = new GlassEaselTemplateEngine();\n defaultTemplateEngine = tmpl;\n return tmpl;\n};\n//# sourceMappingURL=index.js.map","/* eslint-disable @typescript-eslint/no-unsafe-return */\nimport { BM, } from './backend';\nimport { CurrentWindowBackendContext } from './backend/current_window_backend_context';\nimport { EmptyBackendContext } from './backend/empty_backend';\nimport { EmptyComposedBackendContext } from './backend/empty_composed_backend';\nimport { ClassList, StyleScopeManager } from './class_list';\nimport { METHOD_TAG, } from './component_params';\nimport { getDefaultComponentSpace } from './component_space';\nimport { parseMultiPaths, parseSinglePath } from './data_path';\nimport { DataGroup, getDeepCopyStrategy, } from './data_proxy';\nimport { simpleDeepCopy } from './data_utils';\nimport { performanceMeasureEnd, performanceMeasureRenderWaterfall, performanceMeasureStart, } from './devtool';\nimport { Element } from './element';\nimport { FuncArr, safeCallback } from './func_arr';\nimport { ENV, globalOptions, normalizeComponentOptions, } from './global_options';\nimport { Relation, generateRelationDefinitionGroup, normalizeRelation, } from './relation';\nimport { ShadowRoot } from './shadow_root';\nimport { getDefaultTemplateEngine } from './tmpl';\nimport { TraitBehavior, TraitGroup } from './trait_behaviors';\nimport { COMPONENT_SYMBOL, isComponent, isElement } from './type_symbol';\nimport { ThirdError, dispatchError, triggerWarning } from './warning';\nexport const convertGenerics = (compDef, sourceBehavior, owner, genericTargets) => {\n const space = sourceBehavior.ownerSpace;\n const hostUsing = owner === null || owner === void 0 ? void 0 : owner._$behavior._$using;\n const hostGenericImpls = owner === null || owner === void 0 ? void 0 : owner._$genericImpls;\n if (!compDef._$detail)\n compDef.prepare();\n const childBeh = compDef.behavior;\n let genericImpls;\n const generics = childBeh._$generics;\n if (generics) {\n const genericDefaults = childBeh._$genericDefaults;\n genericImpls = Object.create(null);\n for (let i = 0; i < generics.length; i += 1) {\n const key = generics[i];\n if (genericTargets && Object.prototype.hasOwnProperty.call(genericTargets, key)) {\n const target = genericTargets[key];\n if (typeof target === 'string') {\n if (hostUsing === null || hostUsing === void 0 ? void 0 : hostUsing[target]) {\n genericImpls[key] = hostUsing[target];\n }\n else if (hostGenericImpls && hostGenericImpls[target]) {\n genericImpls[key] = hostGenericImpls[target];\n }\n else {\n const comp = space.getGlobalUsingComponent(target);\n if (typeof comp === 'string') {\n genericImpls[key] = comp;\n }\n else if (comp) {\n genericImpls[key] = {\n final: comp,\n source: sourceBehavior,\n placeholder: null,\n waiting: null,\n };\n }\n else {\n triggerWarning(`Generic \"${key}\" value \"${target}\" is not valid`, compDef.is);\n const defaultComp = space.getDefaultComponent();\n if (!defaultComp) {\n throw new ThirdError(`Cannot find default component for generic \"${key}\"`, '[prepare]', compDef.is);\n }\n genericImpls[key] = {\n final: defaultComp,\n source: sourceBehavior,\n placeholder: null,\n waiting: null,\n };\n }\n }\n }\n else {\n genericImpls[key] = target;\n }\n }\n else {\n const defaultComp = genericDefaults[key] || space.getDefaultComponent();\n if (!defaultComp) {\n throw new ThirdError(`Cannot find default component for generic \"${key}\"`, '[prepare]', compDef.is);\n }\n genericImpls[key] =\n typeof defaultComp === 'string'\n ? defaultComp\n : {\n final: defaultComp,\n source: sourceBehavior,\n placeholder: null,\n waiting: null,\n };\n }\n }\n }\n else {\n genericImpls = null;\n }\n return genericImpls;\n};\nexport const resolvePlaceholder = (placeholder, space, behavior, genericImpls) => {\n const using = behavior._$using;\n const usingTarget = using[placeholder] || (genericImpls && genericImpls[placeholder]);\n let ret = null;\n if (usingTarget) {\n if (typeof usingTarget === 'string') {\n ret = usingTarget;\n }\n else if (usingTarget.placeholder === null) {\n ret = usingTarget.final;\n }\n else {\n triggerWarning(`Placeholder on generic implementation is not valid`, behavior.is);\n }\n }\n if (ret)\n return ret;\n let comp = space.getGlobalUsingComponent(placeholder);\n if (comp === null && space._$allowUnusedNativeNode && placeholder !== '') {\n comp = placeholder;\n }\n if (!comp) {\n comp = space.getDefaultComponent();\n if (!comp) {\n throw new ThirdError(`Cannot find placeholder target \"${placeholder}\"`, '[prepare]', behavior.is);\n }\n triggerWarning(`Cannot find placeholder target \"${placeholder}\", using default component.`, behavior.is);\n }\n return comp;\n};\nexport class ComponentDefinition {\n /** @internal */\n constructor(behavior) {\n this.behavior = behavior;\n this.is = this.behavior.is;\n this._$detail = null;\n this._$options = normalizeComponentOptions(behavior._$options, behavior.ownerSpace.getComponentOptions());\n const templateEngine = this._$options.templateEngine;\n this._$templateEngine = templateEngine !== null && templateEngine !== void 0 ? templateEngine : getDefaultTemplateEngine();\n }\n general() {\n return this;\n }\n /** Get the normalized component options */\n getComponentOptions() {\n return this._$options;\n }\n /**\n * List all component dependencies (recursively)\n *\n * This method will prepare the underlying behavior.\n * The caller component is not included in the result.\n */\n getComponentDependencies() {\n return this.behavior.getComponentDependencies();\n }\n /**\n * Update the template field\n *\n * This method throws error if the template engine does not support template update.\n */\n updateTemplate(template) {\n var _a;\n if (!((_a = this._$detail) === null || _a === void 0 ? void 0 : _a.template.updateTemplate)) {\n throw new Error(`The template engine of component \"${this.is}\" does not support template update`);\n }\n this.behavior._$updateTemplate(template);\n this._$detail.template.updateTemplate(this.behavior);\n }\n isPrepared() {\n return !!this._$detail;\n }\n prepare() {\n if (this._$detail)\n return;\n this.behavior.prepare();\n const behavior = this.behavior;\n const options = this._$options;\n const propSetters = {};\n // add properties to component prototype if needed\n if (options.writeFieldsToNode) {\n const keys = Object.keys(behavior._$propertyMap);\n for (let i = 0; i < keys.length; i += 1) {\n const propName = keys[i];\n propSetters[propName] = {\n enumerable: true,\n get() {\n return this._$dataGroup.data[propName];\n },\n set(v) {\n const dataGroup = this._$dataGroup;\n dataGroup.replaceDataOnPath([propName], v);\n dataGroup.applyDataUpdates();\n },\n };\n }\n const methodKeys = Object.keys(behavior._$methodMap);\n for (let i = 0; i < methodKeys.length; i += 1) {\n const methodName = methodKeys[i];\n propSetters[methodName] = {\n enumerable: true,\n value: behavior._$methodMap[methodName],\n };\n }\n }\n // create prototype\n const protoFunc = function ComponentInst() {\n /* a component */\n };\n propSetters.constructor = {\n value: protoFunc,\n writable: true,\n };\n protoFunc.prototype = Object.create(Component.prototype, propSetters);\n const proto = protoFunc.prototype;\n proto._$behavior = behavior;\n proto._$definition = this;\n proto._$methodMap = behavior._$methodMap;\n // init other helpers\n const dataGroupObserverTree = behavior._$generateObserverTree();\n proto._$lifetimeFuncs = behavior._$getAllLifetimeFuncs();\n proto._$pageLifetimeFuncs = behavior._$getAllPageLifetimeFuncs();\n const relationDefinitionGroup = generateRelationDefinitionGroup(behavior._$relationMap);\n const dataDeepCopy = getDeepCopyStrategy(options.dataDeepCopy);\n const propertyPassingDeepCopy = getDeepCopyStrategy(options.propertyPassingDeepCopy);\n // call template engine\n const template = this._$templateEngine.create(behavior, options);\n this._$detail = {\n proto,\n template,\n dataGroupObserverTree,\n dataDeepCopy,\n propertyPassingDeepCopy,\n relationDefinitionGroup,\n };\n }\n}\nlet componentInstanceIdInc = 1;\nlet defaultBackendContext = null;\nexport const getDefaultBackendContext = () => {\n if (defaultBackendContext)\n return defaultBackendContext;\n let c;\n if (BM.DOMLIKE) {\n c = new CurrentWindowBackendContext();\n }\n else if (BM.COMPOSED) {\n c = new EmptyComposedBackendContext();\n }\n else {\n c = new EmptyBackendContext();\n }\n defaultBackendContext = c;\n return c;\n};\n/**\n * A node that has a shadow tree attached to it\n */\nexport class Component extends Element {\n /* istanbul ignore next */\n constructor() {\n throw new Error('Element cannot be constructed directly');\n // eslint-disable-next-line no-unreachable\n super();\n }\n general() {\n return this;\n }\n /**\n * Cast a general component node to the instance of the specified component\n *\n * Returns `null` if the component node is not the instance of the specified component.\n */\n asInstanceOf(componentDefinition) {\n if (this._$behavior !== componentDefinition.behavior) {\n return null;\n }\n return this;\n }\n static register(def, space) {\n return (space || getDefaultComponentSpace()).defineComponent(def);\n }\n /** @internal */\n static _$tagMethod(func) {\n const taggedMethod = func;\n taggedMethod[METHOD_TAG] = true;\n return taggedMethod;\n }\n /** @internal */\n static _$isTaggedMethod(func) {\n return typeof func === 'function' && !!func[METHOD_TAG];\n }\n /** @internal */\n static _$advancedCreate(tagName, def, owner, backendContext, genericImpls, placeholderHandlerRemover, initPropValues) {\n var _a, _b, _c, _d;\n if (!def._$detail) {\n if (ENV.DEV)\n performanceMeasureStart('component.prepare');\n def.prepare();\n if (ENV.DEV)\n performanceMeasureEnd();\n }\n const { proto, template, dataDeepCopy, propertyPassingDeepCopy, relationDefinitionGroup } = def._$detail;\n let dataGroupObserverTree = def._$detail.dataGroupObserverTree;\n const options = def._$options;\n const behavior = def.behavior;\n const nodeTreeContext = owner\n ? owner.getBackendContext()\n : backendContext || globalOptions.backendContext || getDefaultBackendContext();\n const external = options.externalComponent;\n const propEarlyInit = options.propertyEarlyInit;\n const writeExtraInfoToAttr = globalOptions.writeExtraInfoToAttr;\n const virtualHost = options.virtualHost;\n // initialize component instance object\n const comp = Object.create(proto);\n if (ENV.DEV)\n performanceMeasureStart('component.create', comp);\n comp._$genericImpls = genericImpls;\n comp._$placeholderHandlerRemover = placeholderHandlerRemover;\n comp._$external = external;\n comp.tagName = tagName;\n comp._$methodCaller = comp;\n comp._$virtual = virtualHost;\n // create backend element\n let backendElement = null;\n if (nodeTreeContext) {\n if (BM.DOMLIKE || (BM.DYNAMIC && nodeTreeContext.mode === 3 /* BackendMode.Domlike */)) {\n if (!virtualHost) {\n if (ENV.DEV)\n performanceMeasureStart('backend.createElement');\n backendElement = nodeTreeContext.document.createElement(tagName);\n if (ENV.DEV)\n performanceMeasureEnd();\n }\n }\n else if (BM.COMPOSED || (BM.DYNAMIC && nodeTreeContext.mode === 2 /* BackendMode.Composed */)) {\n if (!virtualHost) {\n if (ENV.DEV)\n performanceMeasureStart('backend.createElement');\n backendElement = nodeTreeContext.createElement(options.hostNodeTagName, tagName);\n if (ENV.DEV)\n performanceMeasureEnd();\n }\n }\n else if (BM.SHADOW || (BM.DYNAMIC && nodeTreeContext.mode === 1 /* BackendMode.Shadow */)) {\n if (ENV.DEV)\n performanceMeasureStart('component.createComponent');\n const be = (owner ? owner._$backendShadowRoot : nodeTreeContext.getRootNode()).createComponent(tagName, external, virtualHost, (_a = options.styleScope) !== null && _a !== void 0 ? _a : StyleScopeManager.globalScope(), options.extraStyleScope, behavior._$externalClasses);\n if (ENV.DEV)\n performanceMeasureEnd();\n backendElement = be;\n }\n }\n comp._$initialize(virtualHost, backendElement, owner, owner ? owner._$nodeTreeContext : nodeTreeContext);\n const ownerHost = owner ? owner.getHostNode() : undefined;\n const ownerComponentOptions = ownerHost === null || ownerHost === void 0 ? void 0 : ownerHost.getComponentOptions();\n // init class list\n const styleScope = (_b = ownerComponentOptions === null || ownerComponentOptions === void 0 ? void 0 : ownerComponentOptions.styleScope) !== null && _b !== void 0 ? _b : StyleScopeManager.globalScope();\n const extraStyleScope = (_c = ownerComponentOptions === null || ownerComponentOptions === void 0 ? void 0 : ownerComponentOptions.extraStyleScope) !== null && _c !== void 0 ? _c : undefined;\n const styleScopeManager = ownerHost === null || ownerHost === void 0 ? void 0 : ownerHost._$behavior.ownerSpace.styleScopeManager;\n comp.classList = new ClassList(comp, behavior._$externalClasses, ownerHost ? ownerHost.classList : null, styleScope, extraStyleScope, styleScopeManager);\n if (backendElement) {\n if (BM.COMPOSED || (BM.DYNAMIC && nodeTreeContext.mode === 2 /* BackendMode.Composed */)) {\n ;\n backendElement.setStyleScope(styleScope, extraStyleScope, (_d = options.styleScope) !== null && _d !== void 0 ? _d : StyleScopeManager.globalScope());\n }\n if (styleScopeManager && writeExtraInfoToAttr) {\n const prefix = styleScopeManager.queryName(styleScope);\n if (prefix) {\n backendElement.setAttribute('exparser:info-class-prefix', `${prefix}--`);\n }\n }\n }\n // create template engine\n const tmplInst = template.createInstance(comp, \n // eslint-disable-next-line @typescript-eslint/unbound-method\n ShadowRoot.createShadowRoot);\n // associate in backend\n if (backendElement) {\n if (ENV.DEV)\n performanceMeasureStart('backend.associateValue');\n if (!(BM.DOMLIKE || (BM.DYNAMIC && nodeTreeContext.mode === 3 /* BackendMode.Domlike */))) {\n ;\n backendElement.associateValue(comp);\n }\n else {\n ;\n nodeTreeContext.associateValue(backendElement, comp);\n }\n if (ENV.DEV)\n performanceMeasureEnd();\n }\n // write attr\n if (writeExtraInfoToAttr && backendElement) {\n const componentInstanceId = componentInstanceIdInc;\n componentInstanceIdInc += 1;\n comp._$componentInstanceId = componentInstanceId;\n backendElement.setAttribute('exparser:info-component-id', componentInstanceId);\n }\n comp._$idPrefix = options.idPrefixGenerator\n ? options.idPrefixGenerator.call(comp)\n : '';\n // combine initial data\n const staticData = behavior._$staticData;\n const dataGenFuncs = behavior._$data;\n let data;\n if (staticData === undefined) {\n if (dataGenFuncs.length === 1) {\n const f = dataGenFuncs[0];\n data = f(comp);\n }\n else {\n data = {};\n for (let i = 0; i < dataGenFuncs.length; i += 1) {\n const f = dataGenFuncs[i];\n Object.assign(data, f(comp));\n }\n }\n }\n else {\n data = simpleDeepCopy(staticData);\n for (let i = 0; i < dataGenFuncs.length; i += 1) {\n const f = dataGenFuncs[i];\n Object.assign(data, f(comp));\n }\n }\n // init relations\n const relation = (comp._$relation = new Relation(comp, relationDefinitionGroup));\n // init trait group\n comp._$traitGroup = new TraitGroup();\n const traitBehaviors = behavior._$traitBehaviors;\n if (traitBehaviors !== undefined) {\n for (let i = 0; i < traitBehaviors.length; i += 1) {\n // eslint-disable-next-line @typescript-eslint/no-unsafe-assignment\n const { traitBehavior, impl } = traitBehaviors[i];\n comp._$traitGroup.implement(traitBehavior, impl);\n }\n }\n // call method caller init\n if (behavior._$methodCallerInit) {\n const methodCaller = behavior._$methodCallerInit.call(comp);\n comp._$methodCaller = methodCaller;\n }\n // call init functions\n let initDone = false;\n function relationInit(relationDef) {\n if (initDone)\n throw new ThirdError('Cannot execute init-time functions after initialization', '[implement]', behavior.is);\n const target = relationDef.target;\n const normalizedRel = normalizeRelation(behavior.ownerSpace, behavior.is, 'undefined', relationDef);\n let key;\n if (normalizedRel) {\n key = relation.add(normalizedRel);\n }\n else {\n key = Symbol('invalid');\n }\n const list = () => {\n const targetNodes = relation.getLinkedTargets(key);\n return targetNodes.map((x) => x.getMethodCaller());\n };\n const listAsTrait = target instanceof TraitBehavior\n ? () => {\n const targetNodes = relation.getLinkedTargets(key);\n return targetNodes.map((x) => x.traitBehavior(target));\n }\n : undefined;\n return { list, listAsTrait };\n }\n if (behavior._$init.length > 0) {\n let cowObserver = true;\n let cowLifetime = true;\n let cowPageLifetime = true;\n let cowMethodMap = true;\n const methodCaller = comp.getMethodCaller();\n const builderContext = {\n self: methodCaller,\n data,\n setData: comp.setData.bind(comp),\n implement: (traitBehavior, impl) => {\n if (initDone)\n throw new ThirdError('Cannot execute init-time functions after initialization', '[implement]', behavior.is);\n comp._$traitGroup.implement(traitBehavior, impl);\n },\n relation: relationInit,\n observer: (dataPaths, func) => {\n if (initDone)\n throw new ThirdError('Cannot execute init-time functions after initialization', '[implement]', behavior.is);\n if (cowObserver) {\n cowObserver = false;\n dataGroupObserverTree = dataGroupObserverTree.cloneSub();\n }\n try {\n dataGroupObserverTree.addObserver(func, parseMultiPaths(dataPaths));\n }\n catch (e) {\n // parse multi paths may throw errors\n dispatchError(e, `observer`, behavior.is);\n }\n },\n lifetime: (name, func) => {\n if (initDone)\n throw new ThirdError('Cannot execute init-time functions after initialization', '[implement]', behavior.is);\n if (cowLifetime) {\n cowLifetime = false;\n comp._$lifetimeFuncs = behavior._$getAllLifetimeFuncs();\n }\n const fag = comp._$lifetimeFuncs;\n if (fag[name]) {\n fag[name].add(func);\n }\n else {\n const fa = (fag[name] = new FuncArr('lifetime'));\n fa.add(func);\n }\n },\n pageLifetime: (name, func) => {\n if (initDone)\n throw new ThirdError('Cannot execute init-time functions after initialization', '[implement]', behavior.is);\n if (cowPageLifetime) {\n cowPageLifetime = false;\n comp._$pageLifetimeFuncs = behavior._$getAllPageLifetimeFuncs();\n }\n const fag = comp._$pageLifetimeFuncs;\n if (fag[name]) {\n fag[name].add(func);\n }\n else {\n const fa = (fag[name] = new FuncArr('pageLifetime'));\n fa.add(func);\n }\n },\n method: (func) => Component._$tagMethod(func),\n listener: (func) => Component._$tagMethod(func),\n };\n const initFuncs = behavior._$init;\n for (let i = 0; i < initFuncs.length; i += 1) {\n const init = initFuncs[i];\n if (ENV.DEV)\n performanceMeasureStart('component.init', comp);\n const exported = safeCallback('Component Init', init, methodCaller, [builderContext], undefined);\n if (ENV.DEV)\n performanceMeasureEnd();\n if (exported) {\n const exportedKeys = Object.keys(exported);\n for (let j = 0; j < exportedKeys.length; j += 1) {\n const exportedKey = exportedKeys[j];\n const exportItem = exported[exportedKey];\n if (Component._$isTaggedMethod(exportItem)) {\n if (cowMethodMap) {\n cowMethodMap = false;\n comp._$methodMap = Object.create(comp._$methodMap);\n }\n comp._$methodMap[exportedKey] = exportItem;\n if (options.writeFieldsToNode) {\n ;\n comp[exportedKey] = exportItem;\n }\n }\n }\n }\n }\n }\n initDone = true;\n // init data\n const shadowRoot = tmplInst.shadowRoot;\n comp.shadowRoot = shadowRoot;\n const dataGroup = new DataGroup(comp, data, options.pureDataPattern || null, dataDeepCopy, propertyPassingDeepCopy, options.reflectToAttributes, dataGroupObserverTree);\n comp._$dataGroup = dataGroup;\n // init template with init data\n if (propEarlyInit && initPropValues !== undefined)\n initPropValues(comp);\n if (ENV.DEV) {\n performanceMeasureRenderWaterfall('component.render', 'backend.render', comp, () => {\n tmplInst.initValues(dataGroup.innerData || dataGroup.data);\n });\n }\n else {\n tmplInst.initValues(dataGroup.innerData || dataGroup.data);\n }\n comp._$tmplInst = tmplInst;\n dataGroup.setUpdateListener((data, combinedChanges) => {\n if (ENV.DEV) {\n performanceMeasureRenderWaterfall('component.render', 'backend.render', comp, () => {\n tmplInst.updateValues(data, combinedChanges);\n });\n }\n else {\n tmplInst.updateValues(data, combinedChanges);\n }\n });\n // bind behavior listeners\n const listeners = behavior._$listeners;\n if (listeners !== undefined) {\n for (let i = 0; i < listeners.length; i += 1) {\n const { id, ev, listener: gf } = listeners[i];\n const listener = gf;\n if (id === 'this') {\n comp.addListener(ev, (ev) => listener.call(comp._$methodCaller, ev));\n }\n else if (!external) {\n const sr = shadowRoot;\n const elem = id ? sr.getElementById(id) : sr;\n if (elem) {\n elem.addListener(ev, (ev) => listener.call(comp._$methodCaller, ev));\n }\n }\n else {\n const sr = shadowRoot;\n const elem = id ? sr.getIdMap()[id] : sr.root;\n if (elem) {\n sr.setListener(elem, ev, (ev) => listener.call(comp._$methodCaller, ev));\n }\n }\n }\n }\n // trigger created lifetimes\n comp.triggerLifetime('created', []);\n if (!propEarlyInit && initPropValues !== undefined)\n initPropValues(comp);\n if (ENV.DEV)\n performanceMeasureEnd();\n return comp;\n }\n static createWithGenericsAndContext(tagName, componentDefinition, genericTargets, backendContext, initPropValues) {\n const collectGenericImpls = (def) => {\n let genericImpls;\n if (genericTargets) {\n // eslint-disable-next-line @typescript-eslint/no-unsafe-assignment\n genericImpls = Object.create(null);\n Object.entries(genericTargets).forEach(([key, g]) => {\n genericImpls[key] = {\n final: g,\n source: def.behavior,\n placeholder: null,\n waiting: null,\n };\n });\n }\n return convertGenerics(def, def.behavior, undefined, genericImpls);\n };\n if (componentDefinition) {\n return Component._$advancedCreate(String(tagName), componentDefinition, null, backendContext, collectGenericImpls(componentDefinition), undefined, initPropValues);\n }\n if (tagName instanceof ComponentDefinition) {\n return Component._$advancedCreate(tagName.is, tagName, null, backendContext, collectGenericImpls(tagName), undefined);\n }\n const compDef = getDefaultComponentSpace().getComponentByUrl(tagName, '');\n return Component._$advancedCreate(tagName, compDef, null, backendContext, collectGenericImpls(compDef), undefined);\n }\n static createWithGenerics(tagName, componentDefinition, genericImpls, initPropValues) {\n return Component.createWithGenericsAndContext(tagName, componentDefinition, genericImpls, null, initPropValues);\n }\n static createWithContext(tagName, componentDefinition, backendContext, initPropValues) {\n return Component.createWithGenericsAndContext(tagName, componentDefinition, null, backendContext, initPropValues);\n }\n static create(tagName, componentDefinition, initPropValues) {\n return Component.createWithGenericsAndContext(tagName, componentDefinition, null, null, initPropValues);\n }\n get is() {\n return this._$definition.is;\n }\n get properties() {\n return this._$dataGroup.data;\n }\n get data() {\n return this._$dataGroup.data;\n }\n set data(newData) {\n const dataGroup = this._$dataGroup;\n if (dataGroup === undefined) {\n throw new ThirdError('Cannot update data before component created', `data setter`, this);\n }\n Object.entries(newData).forEach(([key, value]) => dataGroup.replaceDataOnPath([key], value));\n dataGroup.applyDataUpdates();\n }\n get $() {\n if (this._$external) {\n return this.shadowRoot.getIdMap();\n }\n return this.shadowRoot._$getIdMap();\n }\n /**\n * Returns the shadow root element\n *\n * Returns `null` for external components.\n */\n getShadowRoot() {\n if (this._$external) {\n return null;\n }\n return this.shadowRoot;\n }\n /**\n * Apply the template updates to this component instance\n *\n * This method throws error if the template engine does not support template update.\n */\n applyTemplateUpdates() {\n var _a;\n if (!((_a = this._$tmplInst) === null || _a === void 0 ? void 0 : _a.updateTemplate)) {\n throw new Error(`The template engine of component \"${this.is}\" does not support template update`);\n }\n const dataGroup = this._$dataGroup;\n this._$tmplInst.updateTemplate(this._$definition._$detail.template, dataGroup.innerData || dataGroup.data);\n }\n /**\n * Returns the owner component space of this component\n */\n getOwnerSpace() {\n return this._$behavior.ownerSpace;\n }\n /** Get whether the component is external or not */\n isExternal() {\n return this._$external;\n }\n static listProperties(comp) {\n return Object.keys(comp._$behavior._$propertyMap);\n }\n static hasProperty(comp, propName) {\n return !!comp._$behavior._$propertyMap[propName];\n }\n /** List methods by the component definition (backward compatibility) */\n static getMethodsFromDef(compDef) {\n return compDef.behavior._$methodMap;\n }\n /**\n * Get a method\n *\n * If `useMethodCallerListeners` option is set for this component,\n * this method will use the corresponding fields in the `methodCaller` .\n */\n static getMethod(comp, methodName) {\n if (comp._$definition._$options.useMethodCallerListeners) {\n const method = comp._$methodCaller[methodName];\n return typeof method === 'function' ? method : undefined;\n }\n return comp._$methodMap[methodName];\n }\n /**\n * Call a method\n *\n * If `useMethodCallerListeners` option is set for this component,\n * this method will use the corresponding fields in the `methodCaller` .\n * Returns `undefined` if there is no such method.\n */\n callMethod(methodName, ...args) {\n const func = Component.getMethod(this, methodName);\n return func === null || func === void 0 ? void 0 : func.call(this, ...args);\n }\n /**\n * Get the corresponding component definition\n */\n getComponentDefinition() {\n return this._$definition;\n }\n /**\n * Get the options of the component\n */\n getComponentOptions() {\n return this._$definition._$options;\n }\n /**\n * Check whether the `other` behavior is a dependent behavior or a implemented trait behavior\n */\n hasBehavior(other) {\n if (other instanceof TraitBehavior) {\n return this._$traitGroup.get(other) !== undefined;\n }\n return this._$behavior.hasBehavior(other);\n }\n /** Get the root behavior of the component */\n getRootBehavior() {\n return this._$behavior;\n }\n /**\n * Get the trait behavior implementation of the component\n *\n * Returns `undefined` if the specified trait behavior is not implemented.\n */\n traitBehavior(traitBehavior) {\n return this._$traitGroup.get(traitBehavior);\n }\n /**\n * Set the caller (a.k.a. `this` ) of event callbacks and life-time callbacks\n *\n * By default, the caller is the component instance itself.\n * Use this method to override this behavior.\n */\n setMethodCaller(caller) {\n this._$methodCaller = caller;\n }\n /**\n * Get the current caller set by `setMethodCaller`\n */\n getMethodCaller() {\n return this._$methodCaller;\n }\n /**\n * Triggers a life-time callback on an element\n *\n * Normally external life-times should only be triggered by template engine.\n * Most cases should take a common method instead.\n */\n triggerLifetime(name, args) {\n const f = this._$lifetimeFuncs[name];\n if (f)\n f.call(this._$methodCaller, args, this);\n }\n /**\n * @internal\n * @deprecated Rename to `triggerLifetime`\n */\n triggerLifeTime(name, args) {\n return this.triggerLifetime(name, args);\n }\n /**\n * Triggers a page-life-time callback on an element\n */\n triggerPageLifetime(name, args) {\n const rec = (node) => {\n if (isComponent(node)) {\n if (node._$pageLifetimeFuncs) {\n const f = node._$pageLifetimeFuncs[name];\n if (f)\n f.call(node._$methodCaller, args, this);\n }\n if (!node._$external)\n rec(node.shadowRoot);\n }\n const children = node.childNodes;\n for (let i = 0; i < children.length; i += 1) {\n const child = children[i];\n if (isElement(child)) {\n rec(child);\n }\n }\n };\n rec(this);\n }\n /**\n * @internal\n * @deprecated Rename to `triggerPageLifetime`\n */\n triggerPageLifeTime(name, args) {\n return this.triggerPageLifetime(name, args);\n }\n /**\n * Get the target elements of a relation\n */\n getRelationNodes(relationKey) {\n var _a;\n return ((_a = this._$relation) === null || _a === void 0 ? void 0 : _a.getLinkedTargets(relationKey)) || [];\n }\n /** Check the existence of an external class */\n hasExternalClass(name) {\n return this.classList._$hasAlias(name);\n }\n /** Update an external class value */\n setExternalClass(name, target) {\n this.scheduleExternalClassChange(name, target);\n this.applyExternalClassChanges();\n }\n /** Get all external classes */\n getExternalClasses() {\n return this.classList._$getAlias();\n }\n /** Schedule an update for an external class value */\n scheduleExternalClassChange(name, target) {\n this.classList._$setAlias(name, target);\n }\n /** Update multiple external class values */\n applyExternalClassChanges() {\n if (this._$external)\n return;\n if (!this.classList._$shouldUpdateExternalClass())\n return;\n const recv = (node) => {\n if (!isElement(node))\n return;\n const classList = node.classList;\n if ((classList === null || classList === void 0 ? void 0 : classList._$spreadExternalClassUpdate()) && isComponent(node)) {\n node.applyExternalClassChanges();\n }\n const childNodes = node.childNodes;\n for (let i = 0, l = childNodes.length; i < l; i += 1) {\n recv(childNodes[i]);\n }\n classList === null || classList === void 0 ? void 0 : classList._$markExternalClassUpdated();\n };\n recv(this.shadowRoot);\n }\n /** Triggers a worklet change lifetime */\n triggerWorkletChangeLifetime(name, value) {\n this.triggerLifetime('workletChange', [name, value]);\n }\n /** Check a field is excluded by pureDataPattern or not */\n isInnerDataExcluded(fieldName) {\n var _a;\n return ((_a = this._$definition._$options.pureDataPattern) === null || _a === void 0 ? void 0 : _a.test(fieldName)) || false;\n }\n static getInnerData(comp) {\n return comp._$dataGroup.innerData;\n }\n static getDataProxy(comp) {\n return comp._$dataGroup;\n }\n static replaceWholeData(comp, newData) {\n comp._$dataGroup.replaceWholeData(newData);\n }\n replaceDataOnPath(path, data) {\n const dataProxy = this._$dataGroup;\n if (dataProxy === undefined) {\n throw new ThirdError('Cannot update data before component created', `replaceDataOnPath`, this);\n }\n if (ENV.DEV)\n performanceMeasureStart('component.replaceDataOnPath', this);\n dataProxy.replaceDataOnPath(path, data);\n if (ENV.DEV)\n performanceMeasureEnd();\n }\n spliceArrayDataOnPath(path, index, del, inserts) {\n const dataProxy = this._$dataGroup;\n if (dataProxy === undefined) {\n throw new ThirdError('Cannot update data before component created', `spliceArrayDataOnPath`, this);\n }\n if (ENV.DEV)\n performanceMeasureStart('component.spliceArrayDataOnPath', this);\n dataProxy.spliceArrayDataOnPath(path, index, del, inserts);\n if (ENV.DEV)\n performanceMeasureEnd();\n }\n /**\n * Check whether there are pending changes or not\n */\n hasPendingChanges() {\n const dataProxy = this._$dataGroup;\n if (dataProxy === undefined)\n return false;\n return dataProxy.getChanges().length > 0;\n }\n /**\n * Apply all scheduled updates immediately\n *\n * Inside observers, it is generally not .\n */\n applyDataUpdates() {\n const dataProxy = this._$dataGroup;\n if (dataProxy === undefined) {\n throw new ThirdError('Cannot update data before component created', `applyDataUpdates`, this);\n }\n if (ENV.DEV)\n performanceMeasureStart('component.applyDataUpdates', this);\n dataProxy.applyDataUpdates();\n if (ENV.DEV)\n performanceMeasureEnd();\n }\n /**\n * Pending all data updates in the callback, and apply updates after callback returns\n *\n * This function helps grouping several `replaceDataOnPath` or `spliceArrayDataOnPath` calls,\n * and then apply them at the end of the callback.\n * `setData` and `applyDataUpdates` calls inside the callback still apply updates immediately.\n */\n groupUpdates(callback) {\n const dataProxy = this._$dataGroup;\n if (dataProxy === undefined) {\n throw new ThirdError('Cannot update data before component created', `groupUpdates`, this);\n }\n if (ENV.DEV)\n performanceMeasureStart('component.groupUpdates', this);\n const ret = callback();\n dataProxy.applyDataUpdates();\n if (ENV.DEV)\n performanceMeasureEnd();\n return ret;\n }\n updateData(newData) {\n const dataProxy = this._$dataGroup;\n if (dataProxy === undefined) {\n throw new ThirdError('Cannot update data before component created', `updateData`, this);\n }\n if (ENV.DEV)\n performanceMeasureStart('component.updateData', this);\n if (typeof newData === 'object' && newData !== null) {\n const keys = Object.keys(newData);\n for (let i = 0; i < keys.length; i += 1) {\n const key = keys[i];\n try {\n const p = parseSinglePath(key);\n dataProxy.replaceDataOnPath(p, newData[key]);\n }\n catch (e) {\n // parse single path may throw errors\n dispatchError(e, `updateData`, this);\n }\n }\n }\n if (ENV.DEV)\n performanceMeasureEnd();\n }\n setData(newData) {\n const dataProxy = this._$dataGroup;\n if (dataProxy === undefined) {\n throw new ThirdError('Cannot update data before component created', `setData`, this);\n }\n if (ENV.DEV)\n performanceMeasureStart('component.setData', this);\n if (typeof newData === 'object' && newData !== null) {\n const keys = Object.keys(newData);\n for (let i = 0; i < keys.length; i += 1) {\n const key = keys[i];\n try {\n const p = parseSinglePath(key);\n dataProxy.replaceDataOnPath(p, newData[key]);\n }\n catch (e) {\n // parse single path may throw errors\n dispatchError(e, `setData`, this);\n }\n }\n }\n dataProxy.applyDataUpdates();\n if (ENV.DEV)\n performanceMeasureEnd();\n }\n}\nComponent.isComponent = isComponent;\nComponent.prototype[COMPONENT_SYMBOL] = true;\n//# sourceMappingURL=component.js.map","/* eslint-disable @typescript-eslint/no-unsafe-return */\nimport { ComponentDefinition, } from './component';\nimport { getDefaultComponentSpace, } from './component_space';\nimport { parseMultiPaths } from './data_path';\nimport { DataGroupObserverTree, normalizePropertyType, normalizePropertyTypeShortHand, shallowMerge, } from './data_proxy';\nimport { simpleDeepCopy } from './data_utils';\nimport { FuncArr, safeCallback } from './func_arr';\nimport { normalizeRelation } from './relation';\nimport { dispatchError, triggerWarning } from './warning';\nexport class BehaviorBuilder {\n /** @internal */\n constructor(is, ownerSpace) {\n /** @internal */\n this._$behaviors = [];\n /** @internal */\n this._$traitBehaviors = [];\n /** @internal */\n this._$staticData = undefined;\n /** @internal */\n this._$data = [];\n /** @internal */\n this._$methods = [];\n /** @internal */\n this._$lifetimes = [];\n /** @internal */\n this._$pageLifetimes = [];\n /** @internal */\n this._$init = [];\n this._$is = is;\n this._$ownerSpace = ownerSpace;\n }\n /**\n * Set a front-most init function\n *\n * It should return the method caller (the `this` value for various callbacks)\n * that will be used in future.\n */\n methodCallerInit(func) {\n this._$methodCallerInit = func;\n return this;\n }\n /**\n * Add a behavior\n *\n * If the behavior contains a chaining filter, the chaining filter is called.\n */\n behavior(behavior) {\n this._$behaviors.push(behavior);\n if (behavior._$chainingFilter) {\n return behavior._$chainingFilter(this);\n }\n return this;\n }\n /**\n * Set the chaining filter\n *\n * The chaining filter is the definition filter for chaining API.\n * It SHOULD return another chainable object for further chaining.\n */\n chainingFilter(func) {\n this._$chainingFilter = func;\n return this;\n }\n /**\n * Set component options\n *\n * The options will be merged with previous settings.\n */\n options(options) {\n const oldOptions = this._$options;\n if (oldOptions) {\n this._$options = Object.assign(Object.assign({}, oldOptions), options);\n }\n else {\n this._$options = options;\n }\n return this;\n }\n /**\n * Implement a trait behavior\n */\n implement(traitBehavior, impl) {\n this._$traitBehaviors.push({ traitBehavior, impl });\n return this;\n }\n /**\n * Set the compiled template object\n */\n template(template) {\n this._$template = template;\n return this;\n }\n /**\n * Add other components to the component using list\n */\n usingComponents(list) {\n if (this._$using)\n this._$using = Object.assign(Object.assign({}, this._$using), list);\n else\n this._$using = list;\n return this;\n }\n /**\n * Add some placeholders\n *\n * The alias SHOULD be in the using list, otherwise it will be ignored.\n */\n placeholders(list) {\n if (this._$placeholders)\n this._$placeholders = Object.assign(Object.assign({}, this._$placeholders), list);\n else\n this._$placeholders = list;\n return this;\n }\n /**\n * Add other generics\n *\n * The alias SHOULD NOT be in the using list, otherwise it will be ignored.\n */\n generics(list) {\n if (this._$generics)\n this._$generics = Object.assign(Object.assign({}, this._$generics), list);\n else\n this._$generics = list;\n return this;\n }\n /**\n * Add external classes\n */\n externalClasses(list) {\n if (this._$externalClasses)\n this._$externalClasses = this._$externalClasses.concat(list);\n else\n this._$externalClasses = list;\n return this;\n }\n /**\n * Add some template data fields\n *\n * It does not support raw data, but a `gen` function which returns the new data fields.\n * The `gen` function executes once during component creation.\n */\n data(gen) {\n this._$data.push((component) => { var _a; return (_a = safeCallback('Data Generator', gen, null, [], component)) !== null && _a !== void 0 ? _a : {}; });\n return this;\n }\n /**\n * Set the static template data fields\n *\n * The data will be cloned once during component creation.\n * If called multiple times, the static data will be overwritten but not merged!\n * Usually, the `data()` method is preferred.\n */\n staticData(data) {\n this._$staticData = data;\n return this;\n }\n /**\n * Add a single property\n *\n * The property name should be different from other properties.\n */\n property(name, def) {\n if (!this._$properties)\n this._$properties = [];\n this._$properties.push({ name, def: def });\n return this;\n }\n /**\n * Add a single public method\n *\n * The public method can be used as an event handler, and can be visited in component instance.\n */\n methods(funcs) {\n const keys = Object.keys(funcs);\n for (let i = 0; i < keys.length; i += 1) {\n const name = keys[i];\n const func = funcs[name];\n this._$methods.push({ name, func });\n }\n return this;\n }\n observer(paths, func, once = false) {\n if (!this._$observers)\n this._$observers = [];\n try {\n this._$observers.push({ dataPaths: parseMultiPaths(paths), func, once });\n }\n catch (e) {\n // parse multi paths my throw errors\n dispatchError(e, `observer`, this._$is);\n }\n return this;\n }\n /**\n * Add a lifetime callback\n */\n lifetime(name, func, once = false) {\n this._$lifetimes.push({ name, func, once });\n return this;\n }\n /**\n * Add a page-lifetime callback\n */\n pageLifetime(name, func, once = false) {\n if (!this._$pageLifetimes)\n this._$pageLifetimes = [];\n this._$pageLifetimes.push({ name, func, once });\n return this;\n }\n /**\n * Add a relation\n */\n relation(name, rel) {\n if (!this._$relations)\n this._$relations = [];\n this._$relations.push({ name, rel });\n return this;\n }\n /**\n * Execute a function while component instance creation\n *\n * A `BuilderContext` is provided to tweak the component creation progress.\n * The return value is used as the \"export\" value of the behavior,\n * which can be imported by other behaviors.\n */\n init(func) {\n this._$init.push(func);\n return this;\n }\n /**\n * Apply a classic-style definition\n */\n definition(def) {\n if (def.behaviors)\n this._$behaviors.push(...def.behaviors);\n if (def.options)\n this.options(def.options);\n if (def.template)\n this.template(def.template);\n if (def.using)\n this.usingComponents(def.using);\n if (def.placeholders)\n this.placeholders(def.placeholders);\n if (def.generics)\n this.generics(def.generics);\n if (def.externalClasses)\n this.externalClasses(def.externalClasses);\n const rawData = def.data;\n if (rawData !== undefined) {\n if (typeof rawData === 'function') {\n this._$data.push((component) => { var _a; return (_a = safeCallback('Data Generator', rawData, null, [], component)) !== null && _a !== void 0 ? _a : {}; });\n }\n else {\n this._$staticData = rawData;\n }\n }\n const rawProperties = def.properties;\n if (rawProperties !== undefined) {\n if (!this._$properties)\n this._$properties = [];\n const keys = Object.keys(rawProperties);\n for (let i = 0; i < keys.length; i += 1) {\n const name = keys[i];\n const def = rawProperties[name];\n this._$properties.push({ name, def });\n }\n }\n const rawMethods = def.methods;\n if (rawMethods !== undefined) {\n const keys = Object.keys(rawMethods);\n for (let i = 0; i < keys.length; i += 1) {\n const name = keys[i];\n const func = rawMethods[name];\n this._$methods.push({ name, func });\n }\n }\n const rawObservers = def.observers;\n if (rawObservers !== undefined) {\n if (!this._$observers)\n this._$observers = [];\n if (Array.isArray(rawObservers)) {\n for (let i = 0; i < rawObservers.length; i += 1) {\n const { fields, observer } = rawObservers[i];\n try {\n this._$observers.push({\n dataPaths: parseMultiPaths(fields !== null && fields !== void 0 ? fields : '**'),\n func: observer,\n once: false,\n });\n }\n catch (e) {\n // parse multi paths may throw errors\n dispatchError(e, `definition`, this._$is);\n }\n }\n }\n else {\n const keys = Object.keys(rawObservers);\n for (let i = 0; i < keys.length; i += 1) {\n const fields = keys[i];\n const observer = rawObservers[fields];\n try {\n this._$observers.push({\n dataPaths: parseMultiPaths(fields),\n func: observer,\n once: false,\n });\n }\n catch (e) {\n // parse multi paths may throw errors\n dispatchError(e, `definition`, this._$is);\n }\n }\n }\n }\n const rawLifetimes = def.lifetimes;\n if ((rawLifetimes === null || rawLifetimes === void 0 ? void 0 : rawLifetimes.created) === undefined && typeof def.created === 'function') {\n this._$lifetimes.push({ name: 'created', func: def.created, once: true });\n }\n if ((rawLifetimes === null || rawLifetimes === void 0 ? void 0 : rawLifetimes.attached) === undefined && typeof def.attached === 'function') {\n this._$lifetimes.push({ name: 'attached', func: def.attached, once: true });\n }\n if ((rawLifetimes === null || rawLifetimes === void 0 ? void 0 : rawLifetimes.moved) === undefined && typeof def.moved === 'function') {\n this._$lifetimes.push({ name: 'moved', func: def.moved, once: true });\n }\n if ((rawLifetimes === null || rawLifetimes === void 0 ? void 0 : rawLifetimes.detached) === undefined && typeof def.detached === 'function') {\n this._$lifetimes.push({ name: 'detached', func: def.detached, once: true });\n }\n if ((rawLifetimes === null || rawLifetimes === void 0 ? void 0 : rawLifetimes.ready) === undefined && typeof def.ready === 'function') {\n this._$lifetimes.push({ name: 'ready', func: def.ready, once: true });\n }\n if (rawLifetimes) {\n const keys = Object.keys(rawLifetimes);\n for (let i = 0; i < keys.length; i += 1) {\n const name = keys[i];\n const func = rawLifetimes[name];\n this._$lifetimes.push({ name, func, once: true });\n }\n }\n const rawPageLifetimes = def.pageLifetimes;\n if (rawPageLifetimes) {\n if (!this._$pageLifetimes)\n this._$pageLifetimes = [];\n const keys = Object.keys(rawPageLifetimes);\n for (let i = 0; i < keys.length; i += 1) {\n const name = keys[i];\n const func = rawPageLifetimes[name];\n this._$pageLifetimes.push({ name, func, once: true });\n }\n }\n this._$listeners = def.listeners;\n const rawRelations = def.relations;\n if (rawRelations) {\n if (!this._$relations)\n this._$relations = [];\n const keys = Object.keys(rawRelations);\n for (let i = 0; i < keys.length; i += 1) {\n const name = keys[i];\n const rel = rawRelations[name];\n this._$relations.push({ name, rel });\n }\n }\n return this;\n }\n /**\n * Finish build, generate a behavior, and register it in the component space\n */\n registerBehavior() {\n const is = this._$is;\n const behavior = new Behavior(this);\n if (is !== undefined) {\n this._$ownerSpace._$registerBehavior(is, behavior);\n }\n return behavior;\n }\n /**\n * Finish build, generate a component definition, and register it in the component space\n */\n registerComponent() {\n const is = this._$is;\n const behavior = new Behavior(this);\n const compDef = new ComponentDefinition(behavior);\n if (is !== undefined) {\n this._$ownerSpace._$registerComponent(is, compDef);\n }\n return compDef;\n }\n}\n/**\n * Common mixin-like behavior\n *\n * Each component definition contains a single *root* behavior.\n * A behavior can mixin other behaviors.\n */\nexport class Behavior {\n /**\n * Create a behavior with classic-style definition\n */\n static create(def, ownerSpace) {\n return new BehaviorBuilder(def.is, ownerSpace || getDefaultComponentSpace())\n .definition(def)\n .registerBehavior();\n }\n /** @internal */\n constructor(builder) {\n this._$unprepared = true;\n this.is = builder._$is || '';\n this.ownerSpace = builder._$ownerSpace;\n this._$builder = builder;\n this._$flatAncestors = new Set();\n this._$chainingFilter = builder._$chainingFilter;\n this._$options = builder._$options;\n this._$traitBehaviors = undefined;\n this._$template = builder._$template;\n this._$using = Object.create(null);\n this._$generics = undefined;\n this._$genericDefaults = undefined;\n this._$externalClasses = builder._$externalClasses;\n this._$staticData = undefined;\n this._$data = [];\n this._$propertyMap = Object.create(null);\n this._$methodMap = Object.create(null);\n this._$observers = [];\n this._$lifetimes = [];\n this._$pageLifetimes = undefined;\n this._$listeners = undefined;\n this._$relationMap = undefined;\n this._$init = [];\n this._$methodCallerInit = builder._$methodCallerInit;\n }\n general() {\n return this;\n }\n /**\n * List all component dependencies (recursively)\n *\n * This method will prepare the underlying behavior.\n */\n getComponentDependencies(genericTargets) {\n const ret = new Set();\n const rec = function (beh) {\n if (beh._$unprepared)\n beh.prepare();\n const keys = Object.keys(beh._$using);\n for (let i = 0; i < keys.length; i += 1) {\n const k = keys[i];\n const v = beh._$using[k];\n if (typeof v === 'string')\n continue;\n const dep = v.final;\n if (dep && !ret.has(dep)) {\n ret.add(dep);\n rec(dep.behavior);\n }\n }\n };\n rec(this.general());\n if (genericTargets) {\n const list = Object.values(genericTargets);\n for (let i = 0; i < list.length; i += 1) {\n const dep = list[i];\n if (typeof dep === 'string')\n continue;\n if (!ret.has(dep)) {\n ret.add(dep);\n rec(dep.behavior);\n }\n }\n }\n return ret;\n }\n /** Same as `prepare` method in the prototype (for backward compatibility) */\n static prepare(behavior) {\n behavior.prepare();\n }\n /**\n * Execute the prepare phase (an optimization phase) of this behavior\n *\n * Every behavior needs this phase for better future performance.\n * However, this phase requires a little time for execution,\n * and requires its all dependent behaviors created.\n * If a dependent behavior is not prepared, then its prepare phase is also executed.\n */\n prepare() {\n var _a;\n if (!this._$unprepared)\n return;\n this._$unprepared = false;\n const is = this.is;\n const space = this.ownerSpace;\n const builder = this._$builder;\n // mixin dependent behaviors\n const flatAncestors = this._$flatAncestors;\n if (Array.isArray(builder._$behaviors)) {\n for (let i = 0; i < builder._$behaviors.length; i += 1) {\n const parentName = builder._$behaviors[i];\n let parent = null;\n if (parentName instanceof Behavior) {\n parent = parentName;\n }\n else {\n const parentNameStr = String(parentName);\n if (space) {\n parent = space.getBehaviorByUrl(parentNameStr, is);\n }\n if (!parent) {\n dispatchError(new Error(`behavior \"${parentNameStr}\" is not found.`), `[prepare]`, is);\n }\n }\n if (!parent)\n continue;\n if (parent._$unprepared)\n Behavior.prepare(parent);\n // merge trait behaviors\n const traitBehaviors = parent._$traitBehaviors;\n if (traitBehaviors !== undefined) {\n if (!this._$traitBehaviors)\n this._$traitBehaviors = [];\n this._$traitBehaviors.push(...traitBehaviors);\n }\n // merge static data\n const staticData = parent._$staticData;\n if (staticData) {\n if (!this._$staticData)\n this._$staticData = {};\n shallowMerge(this._$staticData, staticData);\n }\n // merge methods\n Object.assign(this._$methodMap, parent._$methodMap);\n // merge properties\n Object.assign(this._$propertyMap, parent._$propertyMap);\n // merge dynamic data\n this._$data.push(...parent._$data);\n // merge observers\n const observers = parent._$observers;\n for (let i = 0; i < observers.length; i += 1) {\n const item = observers[i];\n if (item.once) {\n if (this._$observers.indexOf(item) >= 0)\n continue;\n }\n this._$observers.push(item);\n }\n // merge lifetimes\n const lifetimes = parent._$lifetimes;\n for (let i = 0; i < lifetimes.length; i += 1) {\n const item = lifetimes[i];\n if (item.once) {\n if (this._$lifetimes.indexOf(item) >= 0)\n continue;\n }\n this._$lifetimes.push(item);\n }\n // merge page lifetimes\n const pageLifetimes = parent._$pageLifetimes;\n if (pageLifetimes !== undefined) {\n if (this._$pageLifetimes) {\n for (let i = 0; i < pageLifetimes.length; i += 1) {\n const item = pageLifetimes[i];\n if (item.once) {\n if (this._$pageLifetimes.indexOf(item) >= 0)\n continue;\n }\n this._$pageLifetimes.push(item);\n }\n }\n else {\n this._$pageLifetimes = pageLifetimes.slice();\n }\n }\n // merge legacy listeners\n const listeners = parent._$listeners;\n if (listeners !== undefined) {\n if (!this._$listeners)\n this._$listeners = [];\n this._$listeners.push(...listeners);\n }\n // merge relations\n const relations = parent._$relationMap;\n if (relations !== undefined) {\n if (!this._$relationMap) {\n this._$relationMap = Object.create(null);\n }\n Object.assign(this._$relationMap, relations);\n }\n // merge init\n this._$init.push(...parent._$init);\n // construct flat ancestors\n parent._$flatAncestors.forEach((p) => {\n flatAncestors.add(p);\n });\n }\n }\n // init trait behaviors\n const traitBehaviors = builder._$traitBehaviors;\n if (traitBehaviors !== undefined) {\n if (!this._$traitBehaviors)\n this._$traitBehaviors = [];\n this._$traitBehaviors.push(...traitBehaviors);\n }\n // init using\n if (typeof builder._$using === 'object' && builder._$using !== null) {\n const hasPlaceholders = typeof builder._$placeholders === 'object' && builder._$placeholders !== null;\n const keys = Object.keys(builder._$using);\n for (let i = 0; i < keys.length; i += 1) {\n const k = keys[i];\n const v = builder._$using[k];\n let placeholder = null;\n if (hasPlaceholders) {\n placeholder = (_a = builder._$placeholders[k]) !== null && _a !== void 0 ? _a : null;\n }\n if (v instanceof ComponentDefinition) {\n this._$using[k] = {\n final: v,\n source: this,\n placeholder,\n waiting: null,\n };\n }\n else if (space) {\n const path = String(v);\n const final = space.getComponentByUrlWithoutDefault(path, is);\n if (final) {\n this._$using[k] = {\n final,\n source: this,\n placeholder: null,\n waiting: null,\n };\n }\n else if (placeholder !== null) {\n const p = {\n final: null,\n source: this,\n placeholder,\n waiting: null,\n };\n const wl = space._$componentWaitingList(path, is);\n if (wl) {\n wl.add((c) => {\n p.final = c;\n p.placeholder = null;\n p.waiting = null;\n });\n p.waiting = wl;\n }\n this._$using[k] = p;\n }\n else {\n const final = space.getGlobalUsingComponent(path);\n if (typeof final === 'string') {\n this._$using[k] = final;\n }\n else {\n this._$using[k] = {\n final,\n source: this,\n placeholder: null,\n waiting: null,\n };\n }\n }\n }\n else {\n dispatchError(new Error(`cannot find component \"${String(v)}\"`), `[prepare]`, is);\n }\n }\n }\n // init generics\n if (typeof builder._$generics === 'object' && builder._$generics !== null) {\n const generics = (this._$generics = []);\n const genericDefaults = Object.create(null);\n this._$genericDefaults = genericDefaults;\n const genericKeys = Object.keys(builder._$generics);\n for (let i = 0; i < genericKeys.length; i += 1) {\n const k = genericKeys[i];\n const genericDef = builder._$generics[k];\n let defaultComp = null;\n const d = genericDef === true ? undefined : genericDef === null || genericDef === void 0 ? void 0 : genericDef.default;\n if (d !== undefined) {\n if (d instanceof ComponentDefinition) {\n defaultComp = d;\n }\n else if (space) {\n const tagName = String(d);\n defaultComp =\n space.getComponentByUrlWithoutDefault(tagName, is) ||\n space.getGlobalUsingComponent(tagName);\n }\n else {\n dispatchError(new Error(`cannot define generic \"${k}\" without a default implementor.`), `[prepare]`, is);\n }\n }\n generics.push(k);\n genericDefaults[k] = defaultComp;\n }\n }\n // init static data\n const staticData = builder._$staticData;\n if (staticData) {\n if (!this._$staticData) {\n this._$staticData = staticData;\n }\n else {\n shallowMerge(this._$staticData, staticData);\n }\n }\n // init methods (methods should be initialized before others with function refs)\n const methods = builder._$methods;\n for (let i = 0; i < methods.length; i += 1) {\n const { name, func } = methods[i];\n this._$methodMap[name] = func;\n }\n // init properties\n const properties = builder._$properties;\n if (properties !== undefined) {\n const initValueFuncs = [];\n for (let i = 0; i < properties.length; i += 1) {\n const { name, def } = properties[i];\n const shortHandDef = normalizePropertyTypeShortHand(def);\n let d;\n if (shortHandDef !== null) {\n d = shortHandDef;\n }\n else {\n const propDef = def;\n let type = normalizePropertyType(propDef.type);\n let optionalTypes = null;\n if (Array.isArray(propDef.optionalTypes)) {\n optionalTypes = propDef.optionalTypes.map(normalizePropertyType);\n if (optionalTypes.length > 0) {\n if (type === \"invalid\" /* NormalizedPropertyType.Invalid */ || type === \"any\" /* NormalizedPropertyType.Any */) {\n type = optionalTypes[0];\n }\n }\n }\n if (type === \"invalid\" /* NormalizedPropertyType.Invalid */) {\n dispatchError(new Error(`the type of property \"${name}\" is illegal`), `[prepare]`, is);\n }\n let value = propDef.value;\n if (propDef.value === undefined) {\n if (type === \"string\" /* NormalizedPropertyType.String */)\n value = '';\n else if (type === \"number\" /* NormalizedPropertyType.Number */)\n value = 0;\n else if (type === \"boolean\" /* NormalizedPropertyType.Boolean */)\n value = false;\n else if (type === \"array\" /* NormalizedPropertyType.Array */)\n value = [];\n else\n value = null;\n }\n else if (propDef.default !== undefined) {\n triggerWarning(`the initial value of property \"${name}\" is not used when its default is provided.`, is);\n }\n let observer;\n if (typeof propDef.observer === 'function') {\n observer = propDef.observer;\n }\n else if (typeof propDef.observer === 'string') {\n observer = this._$methodMap[propDef.observer] || null;\n if (!observer) {\n dispatchError(new Error(`Cannot find method \"${propDef.observer}\" for observer of property \"${name}\".`), `[prepare]`, is);\n }\n }\n else {\n observer = null;\n if (propDef.observer !== undefined) {\n dispatchError(new Error(`The observer of property \"${name}\" is not a function, got \"${typeof propDef.observer}\".`), `[prepare]`, is);\n }\n }\n let comparer;\n if (typeof propDef.comparer === 'function') {\n comparer = propDef.comparer;\n }\n else {\n comparer = null;\n if (propDef.comparer !== undefined) {\n dispatchError(new Error(`the comparer of property \"${name}\" is not a function.`), `[prepare]`, is);\n }\n }\n const reflectIdPrefix = !!propDef.reflectIdPrefix;\n d = {\n type,\n optionalTypes,\n value,\n default: propDef.default,\n observer,\n comparer,\n reflectIdPrefix,\n };\n }\n this._$propertyMap[name] = d;\n initValueFuncs.push({\n name,\n func: d.default === undefined ? () => simpleDeepCopy(d.value) : d.default,\n });\n }\n this._$data.push((component) => {\n const ret = {};\n for (let i = 0; i < initValueFuncs.length; i += 1) {\n const { name, func } = initValueFuncs[i];\n ret[name] = safeCallback(`Property \"${name}\" Default`, func, null, [], component);\n }\n return ret;\n });\n }\n // init dynamic data\n this._$data.push(...builder._$data);\n // observers\n const observers = builder._$observers;\n if (observers !== undefined) {\n for (let i = 0; i < observers.length; i += 1) {\n const { dataPaths, func, once } = observers[i];\n const observer = typeof func === 'function' ? func : this._$methodMap[func];\n if (typeof observer === 'function') {\n this._$observers.push({ dataPaths, observer, once });\n }\n else {\n dispatchError(new Error(`the \"${String(observer)}\" observer is not a function.`), `[prepare]`, is);\n }\n }\n }\n // lifetimes\n const lifetimes = builder._$lifetimes;\n this._$lifetimes.push(...lifetimes);\n // page lifetimes\n const pageLifetimes = builder._$pageLifetimes;\n if (pageLifetimes) {\n if (!this._$pageLifetimes)\n this._$pageLifetimes = [];\n this._$pageLifetimes.push(...pageLifetimes);\n }\n // listeners\n const listeners = builder._$listeners;\n if (listeners !== undefined) {\n const keys = Object.keys(listeners);\n if (keys.length > 0) {\n this._$listeners = [];\n for (let i = 0; i < keys.length; i += 1) {\n const k = keys[i];\n const v = listeners[k];\n const listener = typeof v === 'function' ? v : this._$methodMap[v];\n if (listener) {\n const dot = k.indexOf('.');\n let id;\n let ev;\n if (dot >= 0) {\n id = k.slice(0, dot);\n ev = k.slice(dot + 1);\n }\n else {\n id = '';\n ev = k;\n }\n this._$listeners.push({ id, ev, listener });\n }\n else {\n dispatchError(new Error(`the \"${k}\" listener is not a function or a method name`), `[prepare]`, is);\n }\n }\n }\n }\n // relations\n const relations = builder._$relations;\n if (relations !== undefined) {\n if (!this._$relationMap) {\n this._$relationMap = Object.create(null);\n }\n for (let i = 0; i < relations.length; i += 1) {\n const { name: key, rel: relation } = relations[i];\n if (relation === undefined || relation === null)\n continue;\n const rel = normalizeRelation(space, is, key, relation);\n if (rel)\n this._$relationMap[key] = rel;\n }\n }\n // init funcs\n this._$init.push(...builder._$init);\n flatAncestors.add(this);\n }\n /**\n * Get the template content\n *\n * This method is usually used by the template engine.\n */\n getTemplate() {\n return this._$template;\n }\n _$updateTemplate(template) {\n this._$template = template;\n }\n /** Check whether the `other` behavior is a dependent behavior of this behavior */\n hasBehavior(other) {\n if (this._$unprepared)\n this.prepare();\n if (other instanceof Behavior) {\n return this._$flatAncestors.has(other);\n }\n if (this.ownerSpace) {\n const b = this.ownerSpace.getBehaviorByUrl(other, this.is);\n if (!b) {\n return false;\n }\n return this._$flatAncestors.has(b);\n }\n return false;\n }\n /**\n * Get the methods\n *\n * Only valid after `prepare` .\n */\n getMethods() {\n return this._$methodMap;\n }\n /** @internal */\n _$generateObserverTree() {\n const ot = new DataGroupObserverTree(this._$propertyMap);\n const observers = this._$observers;\n for (let i = 0; i < observers.length; i += 1) {\n const { dataPaths, observer } = observers[i];\n ot.addObserver(observer, dataPaths);\n }\n return ot;\n }\n /** @internal */\n _$getAllLifetimeFuncs() {\n const ret = Object.create(null);\n const lifetimes = this._$lifetimes;\n for (let i = 0; i < lifetimes.length; i += 1) {\n const { name, func } = lifetimes[i];\n if (ret[name]) {\n ret[name].add(func);\n }\n else {\n const fa = (ret[name] = new FuncArr('lifetime'));\n fa.add(func);\n }\n }\n return ret;\n }\n /** @internal */\n _$getAllPageLifetimeFuncs() {\n const ret = Object.create(null);\n const pageLifetimes = this._$pageLifetimes;\n if (!pageLifetimes)\n return ret;\n for (let i = 0; i < pageLifetimes.length; i += 1) {\n const { name, func } = pageLifetimes[i];\n if (ret[name]) {\n ret[name].add(func);\n }\n else {\n const fa = (ret[name] = new FuncArr('pageLifetime'));\n fa.add(func);\n }\n }\n return ret;\n }\n}\n//# sourceMappingURL=behavior.js.map","import { Element } from './element';\nimport { isElement, isTextNode } from './type_symbol';\n/** The iterator direction and order */\nexport var ElementIteratorType;\n(function (ElementIteratorType) {\n /** Iterate all ancestors in shadow tree */\n ElementIteratorType[\"ShadowAncestors\"] = \"shadow-ancestors\";\n /** Iterate all ancestors in composed tree */\n ElementIteratorType[\"ComposedAncestors\"] = \"composed-ancestors\";\n /** Iterate all descendants in shadow tree, returning parents before their children */\n ElementIteratorType[\"ShadowDescendantsRootFirst\"] = \"shadow-descendants-root-first\";\n /** Iterate all descendants in shadow tree, returning parents after their children */\n ElementIteratorType[\"ShadowDescendantsRootLast\"] = \"shadow-descendants-root-last\";\n /** Iterate all descendants in composed tree, returning parents before their children */\n ElementIteratorType[\"ComposedDescendantsRootFirst\"] = \"composed-descendants-root-first\";\n /** Iterate all descendants in composed tree, returning parents after their children */\n ElementIteratorType[\"ComposedDescendantsRootLast\"] = \"composed-descendants-root-last\";\n})(ElementIteratorType || (ElementIteratorType = {}));\n/**\n * An iterator for node tree traversal\n *\n * This iterator is convenient but seems a little slower.\n */\nexport class ElementIterator {\n /**\n * Create an iterator with type specified\n *\n * The `nodeTypeLimit` is used to limit which kind of nodes will be returned.\n * It limits the returned result by an `instanceof` call.\n * The default value is `Element` ,\n * which means only elements will be returned (text nodes will not).\n * Consider specifying `Node` if text nodes need to be returned as well as elements.\n * Specify `Component` will only return components.\n */\n constructor(node, type, nodeTypeLimit = Element) {\n if (!isElement(node) && !isTextNode(node)) {\n throw new Error('Element iterators can only be used in elements or text nodes');\n }\n this._$node = node;\n this._$nodeTypeLimit = nodeTypeLimit || Element;\n if (type === \"shadow-ancestors\" /* ElementIteratorType.ShadowAncestors */ ||\n type === \"shadow-descendants-root-first\" /* ElementIteratorType.ShadowDescendantsRootFirst */ ||\n type === \"shadow-descendants-root-last\" /* ElementIteratorType.ShadowDescendantsRootLast */) {\n this._$composed = false;\n }\n else if (type === \"composed-ancestors\" /* ElementIteratorType.ComposedAncestors */ ||\n type === \"composed-descendants-root-first\" /* ElementIteratorType.ComposedDescendantsRootFirst */ ||\n type === \"composed-descendants-root-last\" /* ElementIteratorType.ComposedDescendantsRootLast */) {\n this._$composed = true;\n }\n else {\n throw new Error(`Unrecognized iterator type \"${String(type)}\"`);\n }\n if (type === \"shadow-ancestors\" /* ElementIteratorType.ShadowAncestors */ ||\n type === \"composed-ancestors\" /* ElementIteratorType.ComposedAncestors */) {\n this._$isAncestor = true;\n }\n else {\n this._$isAncestor = false;\n }\n if (type === \"shadow-descendants-root-first\" /* ElementIteratorType.ShadowDescendantsRootFirst */ ||\n type === \"composed-descendants-root-first\" /* ElementIteratorType.ComposedDescendantsRootFirst */) {\n this._$rootFirst = true;\n }\n else {\n this._$rootFirst = false;\n }\n }\n /** Same as constructor (for backward compatibility) */\n static create(node, type, nodeTypeLimit) {\n return new ElementIterator(node, type, nodeTypeLimit);\n }\n forEach(f) {\n const nodeTypeLimit = this._$nodeTypeLimit;\n const composed = this._$composed;\n if (this._$isAncestor) {\n let cur = this._$node;\n for (;;) {\n if (cur instanceof nodeTypeLimit) {\n if (f(cur) === false)\n return;\n }\n let next;\n if (composed) {\n next = cur.getComposedParent();\n }\n else {\n next = cur.parentNode;\n }\n if (next)\n cur = next;\n else\n break;\n }\n }\n else {\n const rootFirst = this._$rootFirst;\n const rec = (node) => {\n if (rootFirst) {\n if (node instanceof nodeTypeLimit) {\n if (f(node) === false)\n return false;\n }\n }\n if (isElement(node)) {\n let interrupted = false;\n const childFn = (child) => {\n if (rec(child) === false) {\n interrupted = true;\n return false;\n }\n return true;\n };\n if (composed) {\n node.forEachComposedChild(childFn);\n }\n else {\n node.childNodes.forEach(childFn);\n }\n if (interrupted)\n return false;\n }\n if (!rootFirst) {\n if (node instanceof nodeTypeLimit) {\n if (f(node) === false)\n return false;\n }\n }\n return true;\n };\n rec(this._$node);\n }\n }\n}\n//# sourceMappingURL=element_iterator.js.map","/* eslint-disable import/first */\n/* eslint-disable arrow-body-style */\nexport { BackendMode, backend, composedBackend, domlikeBackend, } from './backend';\nexport { CurrentWindowBackendContext } from './backend/current_window_backend_context';\nexport { EmptyBackendContext } from './backend/empty_backend';\nexport { EmptyComposedBackendContext } from './backend/empty_composed_backend';\nexport { Behavior, BehaviorBuilder, } from './behavior';\nexport { ClassList, StyleScopeManager } from './class_list';\nexport { Component, ComponentDefinition, } from './component';\nexport * as typeUtils from './component_params';\nexport { ComponentSpace, getDefaultComponentSpace } from './component_space';\nexport * as dataPath from './data_path';\nexport { DataGroup, NormalizedPropertyType, } from './data_proxy';\nexport * as dataUtils from './data_utils';\nexport { Element, StyleSegmentIndex } from './element';\nexport { ElementIterator, ElementIteratorType } from './element_iterator';\nexport { Event, EventBubbleStatus, MutLevel as EventMutLevel, } from './event';\nexport { FuncArr, safeCallback } from './func_arr';\nexport { DeepCopyKind, globalOptions, } from './global_options';\nexport { MutationObserver, MutationObserver as Observer } from './mutation_observer';\nexport { NativeNode } from './native_node';\nexport { dumpElement, dumpElementToString, dumpSingleElementToString } from './node';\nexport { RelationType } from './relation';\nexport { triggerRender } from './render';\nexport { ParsedSelector } from './selector';\nexport { ShadowRoot } from './shadow_root';\nexport * as templateEngine from './template_engine';\nexport { TextNode } from './text_node';\nexport * as template from './tmpl';\nexport { TraitBehavior } from './trait_behaviors';\nexport { VirtualNode } from './virtual_node';\nexport { addGlobalErrorListener, addGlobalWarningListener, removeGlobalErrorListener, removeGlobalWarningListener, } from './warning';\nimport { Component, } from './component';\nimport { getDefaultComponentSpace } from './component_space';\nimport { Event } from './event';\nexport const registerBehavior = (def) => {\n return getDefaultComponentSpace().defineBehavior(def);\n};\nexport const registerElement = (def) => {\n return getDefaultComponentSpace().defineComponent(def);\n};\nexport function createElement(tagName, compDef) {\n return Component.create(tagName, compDef || null);\n}\nexport const triggerEvent = Event.triggerEvent;\nexport const triggerExternalEvent = Event.triggerExternalEvent;\n//# sourceMappingURL=index.js.map","import { safeCallback } from './func_arr';\nconst triggerRenderOnContext = (context, cb) => {\n context.render(() => {\n if (typeof cb === 'function') {\n safeCallback('render', cb, context, [null]);\n }\n });\n};\nexport const triggerRender = (element, callback) => {\n const context = element.getBackendContext();\n if (context) {\n triggerRenderOnContext(context, callback || null);\n }\n};\n//# sourceMappingURL=render.js.map"],"names":["BackendMode","DeepCopyKind","DYNAMIC","SHADOW","COMPOSED","DOMLIKE","process","env","NODE_ENV","globalOptions","defaultComponentSpace","externalComponent","templateEngine","styleScope","extraStyleScope","hostNodeTagName","multipleSlots","dynamicSlots","directSlots","reflectToAttributes","writeFieldsToNode","writeIdToDOM","useMethodCallerListeners","idPrefixGenerator","pureDataPattern","dataDeepCopy","Simple","propertyPassingDeepCopy","listenerChangeLifetimes","virtualHost","propertyEarlyInit","throwGlobalError","writeExtraInfoToAttr","backendContext","devtool","normalizeComponentOptions","componentOptions","baseComponentOptions","b","undefined","p","FuncArr","constructor","type","this","empty","_$arr","_$type","add","func","concat","remove","ret","newArr","oldArr","i","length","push","slice","call","caller","args","relatedComponent","arr","safeCallback","FuncArrWithMeta","data","item","f","v","retainFn","handleReturn","rawReturn","dispatchError","method","apply","e","name","TEXT_NODE_SYMBOL","Symbol","ELEMENT_SYMBOL","NATIVE_NODE_SYMBOL","VIRTUAL_NODE_SYMBOL","SHADOW_ROOT_SYMBOL","COMPONENT_SYMBOL","isTextNode","isElement","isNativeNode","isVirtualNode","isShadowRoot","isComponent","dumpSingleElementToString","elem","tagName","is","_$slotName","id","slot","nodeClass","class","style","Object","keys","_$behavior","_$propertyMap","forEach","propName","String","attributes","attr","value","dumpAttributesToString","textContent","trim","dumpElementToString","composed","tabDepth","linePrefix","isExternal","_$external","forEachComposedChild","node","childNodes","insideErrorHandler","errorFuncArr","warningFuncArr","err","element","triggerLifetime","shouldBreak","console","error","Error","message","filter","Boolean","join","triggerWarning","msg","warn","ThirdError","additionalStack","super","DELEGATE_EVENTS","EmptyBackendElementType","EmptyBackendContext","mode","_$styleSheetIdInc","_$renderCallbacks","_$shadowRoot","EmptyBackendShadowRootContext","destroy","getWindowWidth","getWindowHeight","getDevicePixelRatio","getTheme","registerStyleSheetContent","_path","_content","appendStyleSheetPath","_styleScope","disableStyleSheet","_index","render","cb","callbacks","setTimeout","getRootNode","createFragment","EmptyBackendElement","onEvent","_createEvent","_listener","release","associateValue","_v","getShadowRoot","appendChild","_child","removeChild","insertBefore","_before","replaceChild","_oldChild","spliceBefore","_deleteCount","_list","spliceAppend","spliceRemove","setId","_id","setSlotName","_name","setContainingSlot","_slot","reassignContainingSlot","_oldSlot","_newSlot","spliceBeforeSlotNodes","spliceRemoveSlotNodes","spliceAppendSlotNodes","setInheritSlots","setStyle","_styleText","addClass","_className","removeClass","clearClasses","setClassAlias","_target","setAttribute","_value","removeAttribute","setDataset","setText","setListenerStats","_type","_capture","_mutLevel","setModelBindingStat","_attributeName","createElement","_tagName","_stylingName","createTextNode","createComponent","_external","_virtualHost","_extraStyleScope","_externalClasses","createVirtualNode","_virtualName","EmptyComposedBackendElement","setStyleScope","_hostStyleScope","_elementClass","getBoundingClientRect","left","top","width","height","getScrollOffset","scrollLeft","scrollTop","scrollWidth","scrollHeight","createIntersectionObserver","_relativeElement","_relativeElementMargin","_thresholds","disconnect","getContext","CLASS_NAME_REG_EXP","StyleScopeManager","_$names","globalScope","register","queryName","ClassList","externalNames","owner","styleScopeManager","_$externalNames","_$externalRawAlias","_$dirtyExternalNames","_$rawNames","_$backendNames","_$backendNameScopes","_$backendNamesCount","_$hasAliasNames","_$element","_$owner","_$defaultScope","_$extraScope","_$rootScope","_$prefixManager","_$resolvePrefixes","externalIndex","indexOf","rawAlias","n","_$hasAlias","includes","_$setAlias","target","slices","Array","isArray","l","split","s","_$getAlias","_$spreadExternalClassUpdate","dirtyExternalNames","externalRawAlias","shouldUpdate","some","names","_$updateResolvedNames","_$shouldUpdateExternalClass","getBackendMode","targets","_$backendElement","_$markExternalClassUpdated","backendElement","rawNames","oldBackendNames","oldBackendNameScopes","oldBackendNamesCount","newBackendNames","newBackendNameScopes","newBackendNamesCount","j","ll","rawName","found","scopeId","className","changed","_$addClassToBackend","_$removeClassFromBackend","scope","_a","prefix","val","classList","_$addClass","oldClassNames","oldScopeIds","classNamesCount","_$removeClass","splice","toggle","force","segmentIndex","test","rawClassIndex","contains","rn","setClassNames","getClassNames","METHOD_TAG","TraitBehavior","ownerSpace","trans","_$trans","_$implement","impl","TraitGroup","_$traits","WeakMap","implement","traitBehavior","traitImpl","set","get","normalizePath","path","basePath","finalSlices","pop","normalizeUrl","relPath","protoSep","domainSep","domain","absPath","ComponentWaitingList","isPub","alias","_$callbacks","_$ownerSpace","_$isPub","_$alias","callback","hintUsed","_b","_$componentWaitingListener","index","c","cbs","ComponentSpace","defaultComponent","baseSpace","allowUnusedNativeNode","_$behaviorList","create","_$pubBehaviorList","_$list","_$pubList","_$using","_$importedSpaces","_$listWaiting","_$pubListWaiting","_$groupingListWaiting","_$allowUnusedNativeNode","assign","_$defaultComponent","_$componentOptions","updateComponentOptions","getComponentOptions","setGlobalUsingComponent","key","importSpace","protoDomain","space","privateUse","getComponentByUrl","comp","getComponent","getComponentByUrlWithoutDefault","withDefault","list","def","getDefaultComponent","isDefaultComponent","getGlobalUsingComponent","getBehaviorByUrl","_$getBehavior","defineComponent","BehaviorBuilder","definition","registerComponent","defineBehavior","registerBehavior","define","defineWithMethodCaller","_$registerComponent","behavior","waiting","_$registerBehavior","beh","startGroupRegister","endGroupRegister","groupRegister","exportComponent","getExportedComponent","getExportedBehavior","exportBehavior","_$componentWaitingList","wl","setComponentWaitingListener","listener","createComponentByUrl","url","genericTargets","domainPath","paramStr","hashSepIndex","paramSepIndex","compDef","genericImpls","Component","createWithGenericsAndContext","needApplyUpdates","kv","kvSepIndex","decodeURIComponent","_$dataGroup","replaceProperty","applyDataUpdates","defineTraitBehavior","getDefaultComponentSpace","cs","skipWhiteSpace","state","str","cur","next","parseInteger","parseInt","parseFieldName","parseFieldNameWithSpecialChars","next2","parsePath","seg","parseSinglePath","parsePathWithSpecialChars","parseMultiPaths","map","parseState","parseCommaSepPaths","deepCopyWithRecursion","src","visited","dest","k","description","simpleDeepCopy","deepCopy","withRecursion","MutationObserverTarget","boundElement","_$subtreeObserversCount","attrObservers","textObservers","childObservers","attachObservers","_$boundElement","attachChild","child","_$mutationObserverTarget","updateSubtreeCount","detachChild","diff","hasSubtreeListeners","callAttrObservers","eventObj","parentNode","callTextObservers","textNode","callChildObservers","callAttachObservers","MutationObserver","_$subtreeListenersCount","_$boundFuncArrs","_$boundTarget","_$listener","_$normalizedListener","observe","targetElement","options","properties","childList","characterData","subtree","attachStatus","ev","nl","funcArr","hasOwnProperty","prototype","NormalizedPropertyType","shallowMerge","oldDest","newDest","subKeys","subKey","normalizePropertyType","t","Number","Function","convertValueToType","prop","component","defaultFn","default","optionalTypes","matchTypeWithValue","isFinite","DeepCopyStrategy","DataGroupObserverTree","propFields","observerTree","sub","observers","cloneSub","addObserver","dataPath","singlePath","wildcard","pathSlice","callObserver","getMethodCaller","dfsMarkTriggerBitOnPath","observerStatus","markTriggerBitOnPath","root","triggerAndCleanTriggerBit","getDeepCopyStrategy","level","SimpleWithRecursion","DataGroup","_$generateInnerData","_$pureDataPattern","_$dataDeepCopy","innerData","associatedComponent","_$modelBindingListener","_$pendingChanges","_$doingUpdates","_$comp","_$propertyPassingDeepCopy","_$reflectToAttributes","_$propFields","_$observerTree","_$observers","_$observerStatus","setUpdateListener","updateListener","_$updateListener","replaceWholeData","replaceDataOnPath","newData","spliceArrayDataOnPath","del","inserts","setChanges","changes","getChanges","setModelBindingListener","skipModelListener","isChainedUpdates","combinedChanges","propChanges","combined","count","change","maybeSpliceIndex","maybeSpliceDel","isSplice","excluded","oldData","normalizedSpliceIndex","filteredData","comparerResult","spliceIndex","innerNewData","be","getBackendElement","attrValue","reflectIdPrefix","ownerShadowRoot","idPrefix","getHostNode","_$idPrefix","attrName","replace","toLowerCase","JSON","stringify","comparer","general","oldValue","newValue","curData","curSlice","nextSlice","changesCount","observer","propertyName","EventBubbleStatus","relativeTimeStamp","Date","now","prevTimeStamp","MutLevel","FinalChanged","EventMutLevel","EventTarget","listeners","captureListeners","addListener","mutLevel","final","mutated","efa","initialized","capture","useCapture","mutCount","finalCount","removeListener","Event$1","Event","detail","ts","getCurrentTimeStamp","_$eventName","timeStamp","bubbles","_$capturePhase","capturePhase","_$eventBubblingControl","stopped","noDefault","_$originalEvent","originalEvent","_$dispatched","_$handleListenerReturn","handleListenerReturn","extraFields","getEventBubbleStatus","wrapShadowedEvent","targetCaller","mark","currentTargetCaller","currentTarget","getEventName","getOriginalEvent","preventDefault","defaultPrevented","stopPropagation","propagationStopped","markMutated","mutatedMarked","listenerReturnHandler","callListener","isCapture","evName","eventTarget","_$eventTarget","skipMut","mulLevel","dispatch","externalTarget","crossShadow","inExternalOnly","eventBubblingControl","forEachBubblePath","recShadow","collectMarks","containingSlot","_$inheritSlots","bubblingPath","shadowRoot","handleEvent","atTarget","sr","dispatchEvent","event","dispatchExternalEvent","triggerEvent","triggerExternalEvent","SegmentRelation","getOwnerSpace","getRootBehavior","ParsedSelector","_$parseSegment","relation","matches","exec","classes","shift","unions","union","segments","parsedSegs","parsedSeg","isEmpty","_$testSelectorSegment","offset","segment","match","nextNode","nextRelation","testSelector","query","findOne","rec","r","children","StyleSegmentIndex","DESTROYED_SHADOW_BACKEND_CONTEXT","destroyed","DESTROYED_COMPOSED_BACKEND_CONTEXT","DESTROYED_DOMLIKE_BACKEND_CONTEXT","Element","_$initialize","virtual","nodeTreeContext","_$destroyOnDetach","_$nodeTreeContext","_$nodeId","_$nodeAttributes","_$nodeSlot","_$slotElement","_$slotValues","_$subtreeSlotStart","_$subtreeSlotEnd","_$placeholderHandlerRemover","_$virtual","dataset","_$marks","_$attached","_$styleSegments","parentIndex","slotNodes","$$","x","newId","host","_$markIdCacheDirty","attributeName","newSlot","slotParentShadowRoot","_$getParentHostShadowRoot","slotMode","getSlotMode","slotUpdater","_$updateSubtreeSlotNodes","removeSlotNodes","oldSlot","updateContainingSlot","insertChildReassign","insertSlotNodes","entries","classNames","setNodeClass","styleText","setNodeStyle","asTextNode","asElement","asNativeNode","asVirtualNode","asInstanceOf","componentDefinition","getBackendContext","context","destroyBackendElement","destroyBackendElementOnDetach","cancelDestroyBackendElementOnDetach","isVirtual","toggleNodeClass","styleSegment","checkAndCallAttached","callFunc","_$relation","triggerLinkEvent","status","checkAndCallDetached","destroyQueue","checkAndCallMoved","checkChildObservers","childEventObj","addedNodes","removedNodes","hasSubtreeMutationObservers","_$insertChildReassignSlot","_$spliceSlotNodes","_$updateContainingSlot","forEachNodeInSpecifiedSlot","shadowParent","ideaPosIndex","backendParent","findNearestNonVirtual","d","countNonVirtual","before","removeCount","rel","nextSibling","insertChildComposed","firstNode","recNonVirtual","forEachNonVirtualComposedChild","forEachNodeInSlot","forEachNodeInSpecificSlot","forEachSlotContentInSlot","forEachSlotContentInSpecificSlot","_$findFirstNonVirtualChild","parent","inSlot","recvParent","slotIndex","_$findFirstNonVirtualSibling","newPosIndex","insertPos","_$findSlotNodeInsertPosition","newChild","relChild","removal","_c","parentConverted","slotParent","sharedNonVirtualParent","sharedFrag","groupUpdate","sharedBackendParent","frag","firstSlotNode","document","createDocumentFragment","slotNodesSet","Set","_$componentInstanceId","_$updateSubtreeSlotsInsertion","slotStart","slotEnd","posIndex","move","insertSlotPrev","insertSlotNext","findFirstSlot","nextSiblingWithSlot","prev","parentWithSubtreeSlot","isConnected","_$applySlotsInsertion","_$updateSubtreeSlotsRemoval","removeSlotBefore","removeSlotAfter","_$applySlotsRemoval","_$updateSubtreeSlotsReplacement","oldSlotStart","oldSlotEnd","elements","oldShadowRoot","oldSlotMode","removeStart","slotNodesToUpdate","oldContainingSlot","getContainingSlot","slotNodesToInsertMap","Map","slotNodesToRemoveMap","slotNodesWithContainingSlot","slotNodesToRemove","start","slotNodesToInsert","nodes","size","iter","it","done","firstSlotNodeToInsert","insertChildSingleOperation","oriPosIndex","_d","_e","oldParent","oldPosIndex","containingSlotUpdater","parentComponentShadowRoot","newChildContainingSlotUpdater","relChildContainingSlotUpdater","newChildSubtreeSlotStart","newChildSubtreeSlotEnd","relChildSubtreeSlotStart","relChildSubtreeSlotEnd","insertChildBatchRemoval","parentComponent","relChildren","subtreeSlotStart","subtreeSlotEnd","insertChildBatchInsertion","newChildList","pos","insertChildPlaceholderReplace","replacer","_f","placeholder","replacedChildren","placeholderContainingSlot","placeholderSlotIndex","insertChildAt","removeChildAt","replaceChildAt","insertChildren","removeChildren","selfReplaceWith","replaceWith","_$generateIdMap","idMap","dfs","nodeId","_$setListenerStats","finalChanged","_$definition","_$options","getAttribute","updateAttribute","attrs","setMark","marks","replaceDocumentElement","targetParent","targetNode","pretendAttached","pretendDetached","isAttached","slotName","oldSlotName","needInsertSlot","_$applySlotRename","getSlotName","sn","getInheritSlots","isInheritSlots","setSlotElement","recv","deleteCount","insertion","getNodeDepth","depth","targetDepth","comparePos","slotNode1","parentIndex1","slotDepth1","slotNode2","parentIndex2","slotDepth2","nextSlotNode1","leftDepth","right","rightDepth","rst","slotNode","getComposedParent","getComposedChildren","recInheritSlots","forEachSlotContentInSpecifiedSlot","parseSelector","querySelector","selectorStr","querySelectorAll","matchSelector","res","relativeElement","relativeElementMargin","thresholds","RelationType","parentSlotHost","normalizeRelation","checkRelationFunc","ComponentDefinition","Behavior","usingTarget","globalTarget","linked","linkChanged","unlinked","linkFailed","Relation","group","links","definitions","link","_$group","_$sharedGroup","_$links","keyMap","defs","relationType","linksGroup","parentType","isDetach","selfDefs","oldLink","newLink","parentBehavior","hasBehavior","parentRelation","rt","parentDefs","oldTarget","oldDef","newTarget","newDef","getLinkedTargets","typeWithIndex","NativeNode","stylingName","placeholderHandlerRemover","_$backendShadowRoot","ownerHost","ownerComponentOptions","_$modelBindingListeners","getModelBindingListeners","TextNode","text","_$text","newText","VirtualNode","_$initializeVirtual","virtualName","SlotMode","ShadowRoot","createShadowRoot","_$idMap","hostComponentOptions","_$slotMode","_$singleSlot","_$slots","_$slotsList","_$dynamicSlotsInserted","_$dynamicSlots","_$requiredSlotValueNames","_$insertDynamicSlotHandler","_$removeDynamicSlotHandler","_$updateDynamicSlotHandler","_$host","createNativeNode","createNativeNodeWithInit","initPropValues","usingKey","placeholderCallback","hostGenericImpls","_$genericImpls","compName","possibleComponentDefinitions","cwp","resolvePlaceholder","source","_$advancedCreate","convertGenerics","createComponentByDef","componentDef","createComponentOrNativeNode","checkComponentPlaceholder","using","g","getElementById","_$getIdMap","getSlotElementFromName","slots","subTreeRoot","slotElement","getSlotContentArray","forEachSlot","values","_$applyMultipleSlotInsertion","_move","slotsList","firstSlot","insertBeforeFirst","jt","_$applyMultipleSlotsRemoval","newFirstSlot","oldNameNewSlot","newName","oldName","insertDynamicSlot","removeDynamicSlot","updatePathTree","slotValues","delete","setDynamicSlotHandler","requiredSlotValueNames","insertSlotHandler","removeSlotHandler","updateSlotHandler","slotMeta","useDynamicSlotHandlerFrom","replaceSlotValue","applySlotValueUpdates","slotValueUpdatePathTree","applySlotUpdates","RangeListManager","keyName","dataList","newListItem","updateKeys","items","indexes","rawKeys","sharedKeyMap","rawKeyField","rawKey","inc","oriUpdatePathTree","updateListItem","oldRawKeys","oldKeyMap","oldSharedKeyMap","oldIndexes","newRawKeys","newSharedKeyMap","allowFastComparison","needUpdate","subTree","oldIndex","minIndexByLen","minIndexByLenIndexes","minIndexPrev","oldPosList","prevOldIndex","prevMinIndexByLenIndex","bottom","mid","Math","floor","lcsLen","prevLcsIndex","curLcsArrIndex","lcsArr","OpKind","oldListOp","changedItems","prevLcsOldPos","oldPos","realListDiff","opOldPos","opIndex","nextStable","nextStableOldPos","newItem","emptyFilter","getTmplArgs","_$wxTmplArgs","dataValueToString","dashToCamelCase","dash","toUpperCase","ProcGenWrapper","procGen","fallbackListenerOnNativeNode","eventObjectFilter","bindingMapDisabled","changePropFilter","eventListenerFilter","modelLvaluePath","generalLvaluePath","checkFallbackEventListener","camelName","startsWith","nodeDataProxy","getDataProxy","tmplArgs","changeProp","lv","hasExternalClass","setExternalClass","handleChildrenCreationAndInsert","C","B","update","dataUpdatePathTree","handleChildrenUpdate","bindingMapUpdate","field","bindingMapGenList","updaters","prevElement","bindingMapGen","hasPendingChanges","handleChildrenCreation","dynamicSlotName","textInit","createDynamicPlaceholder","propertyInit","dynamicSlotValueNames","createCommonElement","dynamicSlotNameMatched","branchKey","branchFunc","oriListUpdatePathTree","lvaluePath","itemCallback","keyList","childNode","isCreation","defineTextNode","defineElement","defineIfGroup","defineForLoop","defineSlot","definePureVirtualNode","slotValueInit","newElem","dynSlot","dynamicSlotUpdate","indexChanged","slotChildNodes","sort","slot1","slot2","Infinity","firstIndex","slotValueUpdatePathTrees","replacerShadowRoot","elemShadowRoot","isElemDynamicSlots","isReplacerDynamicSlots","y","hasProperty","m","isDynamic","_generalLvaluePath","handler","methodCaller","getMethod","filteredEv","evOptions","dynEvListeners","triggerWorkletChangeLifetime","setFnFilter","GeneralLvaluePathPrefix","noop","ProcGenWrapperDom","shadowRootElement","slotMergeable","slotMerged","appendSlot","setListener","template","methods","DEFAULT_PROC_GEN_DOM","DEFAULT_PROC_GEN_GROUP_DOM","GlassEaselTemplateDOM","_$template","content","genObjectGroupEnv","groupList","updateMode","_$methodMap","createInstance","GlassEaselTemplateDOMInstance","procGenWrapper","initValues","getIdMap","updateValues","_$wxTmplEv","shadowedEvent","DEFAULT_PROC_GEN","DEFAULT_PROC_GEN_GROUP","BindingMapUpdateEnabled","GlassEaselTemplateEngine","GlassEaselTemplate","updateTemplate","GlassEaselTemplateInstance","_$applyTemplate","forceBindingMapUpdate","tryBindingMapUpdate","newVal","spliceDel","startIndex","fill","defaultTemplateEngine","getDefaultTemplateEngine","tmpl","sourceBehavior","hostUsing","_$detail","prepare","childBeh","generics","_$generics","genericDefaults","_$genericDefaults","defaultComp","_$templateEngine","getComponentDependencies","_$updateTemplate","isPrepared","propSetters","enumerable","dataGroup","methodKeys","methodName","protoFunc","writable","proto","dataGroupObserverTree","_$generateObserverTree","_$lifetimeFuncs","_$getAllLifetimeFuncs","_$pageLifetimeFuncs","_$getAllPageLifetimeFuncs","relationDefinitionGroup","relations","generateRelationDefinitionGroup","_$relationMap","componentInstanceIdInc","defaultBackendContext","_$tagMethod","taggedMethod","_$isTaggedMethod","getDefaultBackendContext","external","propEarlyInit","_$methodCaller","_$externalClasses","tmplInst","componentInstanceId","staticData","_$staticData","dataGenFuncs","_$data","_$traitGroup","traitBehaviors","_$traitBehaviors","_$methodCallerInit","initDone","_$init","cowObserver","cowLifetime","cowPageLifetime","cowMethodMap","builderContext","self","setData","bind","relationDef","normalizedRel","listAsTrait","dataPaths","lifetime","fag","pageLifetime","initFuncs","exported","exportedKeys","exportedKey","exportItem","_$tmplInst","_$listeners","gf","collectGenericImpls","createWithGenerics","createWithContext","$","applyTemplateUpdates","listProperties","getMethodsFromDef","callMethod","getComponentDefinition","other","setMethodCaller","triggerLifeTime","triggerPageLifetime","triggerPageLifeTime","getRelationNodes","relationKey","scheduleExternalClassChange","applyExternalClassChanges","getExternalClasses","isInnerDataExcluded","fieldName","getInnerData","dataProxy","groupUpdates","updateData","_$behaviors","_$methods","_$lifetimes","_$pageLifetimes","_$is","methodCallerInit","_$chainingFilter","chainingFilter","oldOptions","usingComponents","placeholders","_$placeholders","externalClasses","gen","property","_$properties","funcs","paths","once","_$relations","init","behaviors","rawData","rawProperties","rawMethods","rawObservers","fields","rawLifetimes","lifetimes","created","attached","moved","detached","ready","rawPageLifetimes","pageLifetimes","rawRelations","builder","_$unprepared","_$builder","_$flatAncestors","dep","has","flatAncestors","parentName","parentNameStr","hasPlaceholders","genericKeys","genericDef","initValueFuncs","shortHandDef","propDef","dot","getTemplate","getMethods","ot","ElementIteratorType","ElementIterator","nodeTypeLimit","_$node","_$nodeTypeLimit","_$composed","_$isAncestor","_$rootFirst","rootFirst","interrupted","childFn","_$styleSheets","_$styleSheetRegistry","_$delegatedEventListeners","_$elementEventListeners","_$elementCaptureEventListeners","_$triggedEvents","WeakSet","documentElement","clientWidth","clientHeight","window","devicePixelRatio","innerHTML","head","ss","requestAnimationFrame","body","__wxElement","_$eventListener","_$initEvent","_$getEventDetail","getPrototypeOf","_$trigger","possibleTaps","disableMouseEvents","handleTapStart","_ev","identifier","clientX","clientY","handleTapMove","u","abs","handleTapEnd","handleTapCancel","handleTouchEnd","changedTouches","__touchCount","removeEventListener","handleTouchCancel","addEventListener","shouldDelegate","elementEventListeners","updateEventListener","valueFn","_$wxArgs","modelListeners","valid","checked","IntersectionObserver","info","entry","intersectionRatio","boundingClientRect","intersectionRect","relativeRect","rootBounds","time","rootMargin","threshold","createMediaQueryObserver","curMatches","listenerFunc","maxWidth","minWidth","maxHeight","minHeight","orientation","calcMatches","_$rootNode","_status","log","triggerRenderOnContext"],"mappings":"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"}
1
+ {"version":3,"file":"glass_easel.all.js","sources":["../src/backend/shared.ts","../src/global_options.ts","../src/func_arr.ts","../src/type_symbol.ts","../src/node.ts","../src/warning.ts","../src/backend/current_window_backend_context.ts","../src/backend/empty_backend.ts","../src/backend/empty_composed_backend.ts","../src/class_list.ts","../src/component_params.ts","../src/trait_behaviors.ts","../src/component_space.ts","../src/data_path.ts","../src/data_utils.ts","../src/mutation_observer.ts","../src/data_proxy.ts","../src/event.ts","../src/selector.ts","../src/element.ts","../src/relation.ts","../src/native_node.ts","../src/text_node.ts","../src/virtual_node.ts","../src/shadow_root.ts","../src/tmpl/range_list_diff.ts","../src/tmpl/proc_gen_wrapper.ts","../src/tmpl/proc_gen_wrapper_dom.ts","../src/tmpl/native_rendering.ts","../src/tmpl/index.ts","../src/component.ts","../src/behavior.ts","../src/element_iterator.ts","../src/index.ts","../src/render.ts"],"sourcesContent":["export const BM = {\n DYNAMIC: true,\n SHADOW: false,\n COMPOSED: false,\n DOMLIKE: false,\n};\nexport var BackendMode;\n(function (BackendMode) {\n BackendMode[BackendMode[\"Shadow\"] = 1] = \"Shadow\";\n BackendMode[BackendMode[\"Composed\"] = 2] = \"Composed\";\n BackendMode[BackendMode[\"Domlike\"] = 3] = \"Domlike\";\n})(BackendMode || (BackendMode = {}));\n//# sourceMappingURL=shared.js.map","export const ENV = {\n DEV: !(typeof process && process.env.NODE_ENV === 'production'),\n};\n/**\n * The deep copy strategy\n *\n * Higher level indicates more accuracy but probably less performance.\n */\nexport var DeepCopyKind;\n(function (DeepCopyKind) {\n /**\n * Avoid deep copy\n *\n * This avoids any copy, and recursive objects can be handled without any failing.\n * However, changing non-copied data will sometimes break the logic.\n */\n DeepCopyKind[\"None\"] = \"none\";\n /**\n * Do a simple deep copy\n *\n * This simply clones each enumerable fields in an object to a new object.\n * It causes stack overflow in recursive objects.\n * Everything in prototypes is ignored.\n */\n DeepCopyKind[\"Simple\"] = \"simple\";\n /**\n * Do a deep copy with recursion detection\n *\n * This clones each enumerable fields in an object to a new object.\n * It can handle recursive objects by recursive detection.\n * Everything in prototypes is ignored.\n */\n DeepCopyKind[\"SimpleWithRecursion\"] = \"simple-recursion\";\n})(DeepCopyKind || (DeepCopyKind = {}));\n/**\n * The default options\n */\nexport const globalOptions = {\n defaultComponentSpace: null,\n externalComponent: false,\n templateEngine: null,\n styleScope: null,\n extraStyleScope: null,\n hostNodeTagName: 'wx-x',\n multipleSlots: false,\n dynamicSlots: false,\n directSlots: false,\n reflectToAttributes: false,\n writeFieldsToNode: true,\n writeIdToDOM: false,\n useMethodCallerListeners: false,\n idPrefixGenerator: null,\n pureDataPattern: null,\n dataDeepCopy: DeepCopyKind.Simple,\n propertyPassingDeepCopy: DeepCopyKind.Simple,\n listenerChangeLifetimes: false,\n virtualHost: false,\n propertyEarlyInit: false,\n throwGlobalError: false,\n writeExtraInfoToAttr: false,\n backendContext: null,\n devtool: null,\n};\nexport const normalizeComponentOptions = (componentOptions, baseComponentOptions) => {\n const b = baseComponentOptions === undefined ? globalOptions : baseComponentOptions;\n if (componentOptions === undefined && b !== globalOptions) {\n return b;\n }\n const p = componentOptions !== null && componentOptions !== void 0 ? componentOptions : {};\n return {\n externalComponent: p.externalComponent !== undefined ? p.externalComponent : b.externalComponent,\n templateEngine: p.templateEngine !== undefined ? p.templateEngine : b.templateEngine,\n styleScope: p.styleScope !== undefined ? p.styleScope : b.styleScope,\n hostNodeTagName: p.hostNodeTagName !== undefined ? p.hostNodeTagName : b.hostNodeTagName,\n extraStyleScope: p.extraStyleScope !== undefined ? p.extraStyleScope : b.extraStyleScope,\n multipleSlots: p.multipleSlots !== undefined ? p.multipleSlots : b.multipleSlots,\n dynamicSlots: p.dynamicSlots !== undefined ? p.dynamicSlots : b.dynamicSlots,\n directSlots: p.directSlots !== undefined ? p.directSlots : b.directSlots,\n reflectToAttributes: p.reflectToAttributes !== undefined ? p.reflectToAttributes : b.reflectToAttributes,\n writeFieldsToNode: p.writeFieldsToNode !== undefined ? p.writeFieldsToNode : b.writeFieldsToNode,\n writeIdToDOM: p.writeIdToDOM !== undefined ? p.writeIdToDOM : b.writeIdToDOM,\n useMethodCallerListeners: p.useMethodCallerListeners !== undefined\n ? p.useMethodCallerListeners\n : b.useMethodCallerListeners,\n idPrefixGenerator: p.idPrefixGenerator !== undefined ? p.idPrefixGenerator : b.idPrefixGenerator,\n pureDataPattern: p.pureDataPattern !== undefined ? p.pureDataPattern : b.pureDataPattern,\n dataDeepCopy: p.dataDeepCopy !== undefined ? p.dataDeepCopy : b.dataDeepCopy,\n propertyPassingDeepCopy: p.propertyPassingDeepCopy !== undefined\n ? p.propertyPassingDeepCopy\n : b.propertyPassingDeepCopy,\n listenerChangeLifetimes: p.listenerChangeLifetimes !== undefined\n ? p.listenerChangeLifetimes\n : b.listenerChangeLifetimes,\n virtualHost: p.virtualHost !== undefined ? p.virtualHost : b.virtualHost,\n propertyEarlyInit: p.propertyEarlyInit !== undefined ? p.propertyEarlyInit : b.propertyEarlyInit,\n };\n};\n//# sourceMappingURL=global_options.js.map","import { performanceMeasureEnd, performanceMeasureStart } from './devtool';\nimport { ENV } from './global_options';\nexport class FuncArr {\n constructor(type) {\n this.empty = true;\n this._$arr = null;\n this._$type = type;\n }\n add(func) {\n if (!this._$arr)\n this._$arr = [func];\n else\n this._$arr = this._$arr.concat(func);\n this.empty = false;\n }\n remove(func) {\n let ret = null;\n if (this._$arr) {\n const newArr = [];\n const oldArr = this._$arr;\n for (let i = 0; i < oldArr.length; i += 1) {\n if (oldArr[i] === func) {\n newArr.push(...oldArr.slice(i + 1));\n ret = func;\n break;\n }\n newArr.push(oldArr[i]);\n }\n this._$arr = newArr;\n this.empty = this._$arr.length === 0;\n }\n return ret;\n }\n call(caller, args, relatedComponent) {\n const arr = this._$arr;\n let ret = true;\n if (arr) {\n for (let i = 0; i < arr.length; i += 1) {\n const r = safeCallback(this._$type, arr[i], caller, args, relatedComponent);\n if (r === false)\n ret = false;\n }\n }\n return ret;\n }\n}\nexport class FuncArrWithMeta {\n constructor(type) {\n this.empty = true;\n this._$arr = null;\n this._$type = type;\n }\n add(func, data) {\n const item = { f: func, data };\n if (!this._$arr)\n this._$arr = [item];\n else\n this._$arr = this._$arr.concat(item);\n this.empty = false;\n }\n remove(func) {\n let ret = null;\n if (this._$arr) {\n const newArr = [];\n const oldArr = this._$arr;\n for (let i = 0; i < oldArr.length; i += 1) {\n const v = oldArr[i];\n if (v.f === func) {\n newArr.push(...oldArr.slice(i + 1));\n ret = v.data;\n break;\n }\n newArr.push(v);\n }\n this._$arr = newArr;\n this.empty = this._$arr.length === 0;\n }\n return ret;\n }\n call(caller, args, retainFn, relatedComponent, handleReturn) {\n const arr = this._$arr;\n let ret = true;\n if (arr) {\n for (let i = 0; i < arr.length; i += 1) {\n const { f, data } = arr[i];\n if (!retainFn(data))\n continue;\n const rawReturn = safeCallback(this._$type, f, caller, args, relatedComponent);\n const r = handleReturn ? handleReturn(rawReturn) : rawReturn;\n if (r === false)\n ret = false;\n }\n }\n return ret;\n }\n}\nlet dispatchError = () => { };\nexport function _setErrorDispatcher(dispatcher) {\n dispatchError = dispatcher;\n}\nexport function safeCallback(type, method, caller, args, relatedComponent) {\n try {\n if (ENV.DEV)\n performanceMeasureStart(`${type}.${method.name || '(anonymous)'}`, relatedComponent, { args });\n // eslint-disable-next-line @typescript-eslint/no-unsafe-return\n return method.apply(caller, args);\n }\n catch (e) {\n dispatchError(e, `${type || 'Listener'} ${method.name || '(anonymous)'}`, relatedComponent);\n return undefined;\n }\n finally {\n if (ENV.DEV)\n performanceMeasureEnd();\n }\n}\n//# sourceMappingURL=func_arr.js.map","export const TEXT_NODE_SYMBOL = Symbol('TextNode');\nexport const ELEMENT_SYMBOL = Symbol('Element');\nexport const NATIVE_NODE_SYMBOL = Symbol('NativeNode');\nexport const VIRTUAL_NODE_SYMBOL = Symbol('VirtualNode');\nexport const SHADOW_ROOT_SYMBOL = Symbol('ShadowRootSymbol');\nexport const COMPONENT_SYMBOL = Symbol('Component');\nexport const isTextNode = (e) => !!e && e[TEXT_NODE_SYMBOL];\nexport const isElement = (e) => !!e && e[ELEMENT_SYMBOL];\nexport const isNativeNode = (e) => !!e && e[NATIVE_NODE_SYMBOL];\nexport const isVirtualNode = (e) => !!e && e[VIRTUAL_NODE_SYMBOL];\nexport const isShadowRoot = (e) => !!e && e[SHADOW_ROOT_SYMBOL];\nexport const isComponent = (e) => !!e && e[COMPONENT_SYMBOL];\n//# sourceMappingURL=type_symbol.js.map","import { isComponent, isElement, isNativeNode, isTextNode, isVirtualNode } from './type_symbol';\nconst dumpAttributesToString = (elem) => {\n let ret = '';\n if (isElement(elem)) {\n if (elem._$slotName !== null)\n ret += ` (slot) name=\"${elem._$slotName}\"`;\n if (elem.id)\n ret += ` id=\"${elem.id}\"`;\n if (elem.slot)\n ret += ` slot=\"${elem.slot}\"`;\n const nodeClass = elem.class;\n if (nodeClass)\n ret += ` class=\"${nodeClass}\"`;\n const style = elem.style;\n if (style)\n ret += ` style=\"${elem.style}\"`;\n }\n if (isVirtualNode(elem)) {\n // empty\n }\n else if (isComponent(elem)) {\n Object.keys(elem._$behavior._$propertyMap).forEach((propName) => {\n ret += ` ${propName}=\"${String(elem.data[propName])}\"`;\n });\n }\n else {\n elem.attributes.forEach((attr) => {\n ret += ` ${attr.name}=\"${String(attr.value)}\"`;\n });\n }\n return ret;\n};\nexport const dumpSingleElementToString = (elem) => {\n if (isElement(elem)) {\n let tagName;\n if (isVirtualNode(elem)) {\n tagName = `(virtual):${elem.is}`;\n }\n else if (isComponent(elem)) {\n tagName = `${elem.tagName}:${elem.is}`;\n }\n else if (isNativeNode(elem)) {\n tagName = elem.is;\n }\n else {\n tagName = '(unknown)';\n }\n return `<${tagName}${dumpAttributesToString(elem)}>`;\n }\n if (isTextNode(elem)) {\n return elem.textContent.trim();\n }\n if (elem === null) {\n return '<(null)>';\n }\n if (elem === undefined) {\n return '<(undefined)>';\n }\n return '<(unknown)>';\n};\nexport const dumpElementToString = (elem, composed, tabDepth = 0) => {\n let linePrefix = '';\n for (let i = tabDepth; i; i -= 1) {\n linePrefix += ' ';\n }\n let ret = linePrefix + dumpSingleElementToString(elem);\n let isExternal = false;\n if (isElement(elem)) {\n if (isComponent(elem)) {\n isExternal = elem._$external;\n }\n if (composed) {\n if (isExternal) {\n ret += `\\n${linePrefix} <(external)>`;\n elem.forEachComposedChild((node) => {\n ret += `\\n${dumpElementToString(node, composed, tabDepth + 2)}`;\n });\n }\n else {\n elem.forEachComposedChild((node) => {\n ret += `\\n${dumpElementToString(node, composed, tabDepth + 1)}`;\n });\n }\n }\n else {\n elem.childNodes.forEach((node) => {\n ret += `\\n${dumpElementToString(node, composed, tabDepth + 1)}`;\n });\n }\n }\n return ret;\n};\nexport const dumpElement = (elem, composed) => {\n // eslint-disable-next-line no-console\n console.log(dumpElementToString(elem, composed));\n};\n//# sourceMappingURL=node.js.map","import { FuncArr, _setErrorDispatcher } from './func_arr';\nimport { globalOptions } from './global_options';\nimport { dumpSingleElementToString } from './node';\nimport { isComponent } from './type_symbol';\nlet insideErrorHandler = false;\nconst errorFuncArr = new FuncArr('error');\nconst warningFuncArr = new FuncArr('warning');\n_setErrorDispatcher(dispatchError);\nexport function dispatchError(err, method, relatedComponent, element) {\n if (!insideErrorHandler) {\n insideErrorHandler = true;\n if (isComponent(relatedComponent)) {\n relatedComponent.triggerLifetime('error', [err]);\n }\n const shouldBreak = errorFuncArr.call(err, [err, method, relatedComponent, element]) === false;\n insideErrorHandler = false;\n if (shouldBreak)\n return;\n }\n if (globalOptions.throwGlobalError) {\n throw err;\n }\n else {\n // eslint-disable-next-line no-console\n console.error([\n err instanceof Error ? `${err.message}` : String(err),\n element ? `\\t@${dumpSingleElementToString(element)}` : undefined,\n relatedComponent\n ? `\\t${method || ''}@${typeof relatedComponent === 'string'\n ? `<${relatedComponent}>`\n : dumpSingleElementToString(relatedComponent || false)}`\n : undefined,\n ]\n .filter(Boolean)\n .join('\\n'));\n }\n}\nexport function triggerWarning(msg, relatedComponent, element) {\n if (warningFuncArr.call(null, [msg, relatedComponent || '', element])) {\n // eslint-disable-next-line no-console\n console.warn(msg);\n }\n}\nexport class ThirdError extends Error {\n constructor(message, additionalStack, relatedComponent, element) {\n super(message);\n this.additionalStack = additionalStack;\n this.relatedComponent = relatedComponent;\n this.element = element;\n dispatchError(this, additionalStack, relatedComponent, element);\n }\n}\nexport function addGlobalErrorListener(func) {\n errorFuncArr.add(func);\n}\nexport function removeGlobalErrorListener(func) {\n errorFuncArr.remove(func);\n}\nexport function addGlobalWarningListener(func) {\n warningFuncArr.add(func);\n}\nexport function removeGlobalWarningListener(func) {\n warningFuncArr.remove(func);\n}\nexport function safeCallback(type, method, caller, args, relatedComponent) {\n try {\n // eslint-disable-next-line @typescript-eslint/no-unsafe-return\n return method.apply(caller, args);\n }\n catch (e) {\n dispatchError(e, `${type || 'Listener'} ${method.name || '(anonymous)'}`, relatedComponent);\n return undefined;\n }\n}\n//# sourceMappingURL=warning.js.map","/* eslint-disable class-methods-use-this */\n/* global window, document */\nimport { safeCallback } from '../func_arr';\nimport { triggerWarning } from '../warning';\nconst DELEGATE_EVENTS = [\n 'touchstart',\n 'touchmove',\n 'touchend',\n 'touchcancel',\n 'mousedown',\n 'mousemove',\n 'mouseout',\n 'mouseover',\n 'mouseup',\n 'click',\n];\nexport class CurrentWindowBackendContext {\n constructor() {\n this.mode = 3 /* BackendMode.Domlike */;\n this.document = document;\n /* @internal */\n this._$styleSheets = [];\n /* @internal */\n this._$styleSheetRegistry = Object.create(null);\n /* @internal */\n this._$delegatedEventListeners = Object.create(null);\n /* @internal */\n this._$elementEventListeners = new WeakMap();\n /* @internal */\n this._$elementCaptureEventListeners = new WeakMap();\n /* @internal */\n this._$triggedEvents = new WeakSet();\n }\n destroy() {\n /* empty */\n }\n getWindowWidth() {\n return document.documentElement.clientWidth;\n }\n getWindowHeight() {\n return document.documentElement.clientHeight;\n }\n getDevicePixelRatio() {\n return window.devicePixelRatio;\n }\n getTheme() {\n return 'light';\n }\n registerStyleSheetContent(path, content) {\n this._$styleSheetRegistry[path] = String(content);\n }\n appendStyleSheetPath(path, styleScope) {\n const styleText = this._$styleSheetRegistry[path];\n if (styleText === undefined)\n throw new Error(`No style sheet registry \"${path}\"`);\n const s = document.createElement('style');\n s.type = 'text/css';\n s.innerHTML = styleText;\n if (styleScope !== undefined)\n s.setAttribute('wx-style-scope', String(styleScope));\n document.head.appendChild(s);\n const id = this._$styleSheets.length;\n this._$styleSheets.push(s);\n return id;\n }\n disableStyleSheet(index) {\n const ss = this._$styleSheets[index];\n if (ss)\n document.head.removeChild(ss);\n }\n render(cb) {\n window.requestAnimationFrame(() => {\n safeCallback('Render Callback', cb, this, [null]);\n });\n }\n getRootNode() {\n return document.body;\n }\n associateValue(element, value) {\n element.__wxElement = value;\n }\n onEvent(listener) {\n if (!this._$eventListener) {\n this._$initEvent();\n }\n this._$eventListener = listener;\n }\n /* @internal */\n _$getEventDetail(ev) {\n const detail = {};\n let e = ev;\n while (Object.getPrototypeOf(e) !== Event.prototype) {\n const keys = Object.keys(e);\n for (let i = 0; i < keys.length; i += 1) {\n const key = keys[i];\n if (typeof ev[key] === 'function')\n continue;\n detail[key] = ev[key];\n }\n e = Object.getPrototypeOf(e);\n }\n return detail;\n }\n /* @internal */\n _$trigger(ev, type, detail, bubbles, composed) {\n if (!this._$eventListener || !ev.target)\n return;\n let t = ev.target;\n while (t && !t.__wxElement)\n t = t.parentNode;\n if (!t)\n return;\n const bubbleStatus = this._$eventListener(t.__wxElement, type, detail, {\n originalEvent: ev,\n bubbles,\n composed,\n capturePhase: true,\n });\n if (bubbleStatus === 1 /* EventBubbleStatus.NoDefault */) {\n ev.preventDefault();\n }\n }\n /* @internal */\n _$initEvent() {\n const TAP_DIST = 10;\n const possibleTaps = Object.create(null);\n const SIMULATED_MOUSE_ID = -1;\n let disableMouseEvents = false;\n const handleTapStart = (_ev, t) => {\n possibleTaps[t.identifier] = {\n x: t.clientX,\n y: t.clientY,\n };\n };\n const handleTapMove = (ev, t) => {\n const id = t.identifier;\n if (possibleTaps[id]) {\n const u = possibleTaps[id];\n if (Math.abs(u.x - t.clientX) > TAP_DIST || Math.abs(u.y - t.clientY) > TAP_DIST) {\n delete possibleTaps[id];\n this._$trigger(ev, 'canceltap', u, true, true);\n }\n }\n };\n const handleTapEnd = (ev, t) => {\n const id = t.identifier;\n if (possibleTaps[id]) {\n const u = possibleTaps[id];\n delete possibleTaps[id];\n if (Math.abs(u.x - t.clientX) > TAP_DIST || Math.abs(u.y - t.clientY) > TAP_DIST) {\n this._$trigger(ev, 'canceltap', u, true, true);\n }\n else {\n this._$trigger(ev, 'tap', u, true, true);\n }\n }\n };\n const handleTapCancel = (ev, t) => {\n const id = t.identifier;\n if (possibleTaps[id]) {\n const u = possibleTaps[id];\n delete possibleTaps[id];\n this._$trigger(ev, 'canceltap', u, true, true);\n }\n };\n const handleTouchStart = (ev) => {\n disableMouseEvents = true;\n const changedTouches = ev.changedTouches;\n for (let i = 0; i < changedTouches.length; i += 1) {\n handleTapStart(ev, changedTouches[i]);\n }\n const target = ev.target;\n if (!target.__touchCount) {\n target.__touchCount = 0;\n target.addEventListener('touchend', handleTouchEnd);\n target.addEventListener('touchcancel', handleTouchCancel);\n }\n target.__touchCount += changedTouches.length;\n };\n const handleTouchMove = (ev) => {\n const changedTouches = ev.changedTouches;\n for (let i = 0; i < changedTouches.length; i += 1) {\n handleTapMove(ev, changedTouches[i]);\n }\n };\n const handleTouchEnd = (ev) => {\n const changedTouches = ev.changedTouches;\n for (let i = 0; i < changedTouches.length; i += 1) {\n handleTapEnd(ev, changedTouches[i]);\n }\n const target = ev.target;\n target.__touchCount -= changedTouches.length;\n if (target.__touchCount <= 0) {\n target.__touchCount = 0;\n target.removeEventListener('touchend', handleTouchEnd);\n target.removeEventListener('touchcancel', handleTouchCancel);\n }\n };\n const handleTouchCancel = (ev) => {\n const changedTouches = ev.changedTouches;\n for (let i = 0; i < changedTouches.length; i += 1) {\n handleTapCancel(ev, changedTouches[i]);\n }\n const target = ev.target;\n target.__touchCount -= changedTouches.length;\n if (target.__touchCount <= 0) {\n target.__touchCount = 0;\n target.removeEventListener('touchend', handleTouchEnd);\n target.removeEventListener('touchcancel', handleTouchCancel);\n }\n };\n const handleMouseDown = (ev) => {\n if (disableMouseEvents)\n return;\n handleTapStart(ev, {\n identifier: SIMULATED_MOUSE_ID,\n clientX: ev.clientX,\n clientY: ev.clientY,\n });\n };\n const handleMouseOver = (ev) => {\n if (disableMouseEvents)\n return;\n handleTapMove(ev, {\n identifier: SIMULATED_MOUSE_ID,\n clientX: ev.clientX,\n clientY: ev.clientY,\n });\n };\n const handleMouseUp = (ev) => {\n if (disableMouseEvents)\n return;\n handleTapEnd(ev, {\n identifier: SIMULATED_MOUSE_ID,\n clientX: ev.clientX,\n clientY: ev.clientY,\n });\n };\n document.body.addEventListener('touchstart', handleTouchStart, { capture: true });\n document.body.addEventListener('touchmove', handleTouchMove, { capture: true });\n document.body.addEventListener('mousedown', handleMouseDown, { capture: true });\n document.body.addEventListener('mousemove', handleMouseOver, { capture: true });\n document.body.addEventListener('mouseup', handleMouseUp, { capture: true });\n }\n setListenerStats(element, type, capture, mutLevel) {\n // for non-passive events,\n // the default-prevented status can also be found in `EventBubbleStatus` ,\n // so there is nothing to do with non-passive events.\n if (!element)\n return;\n const shouldDelegate = DELEGATE_EVENTS.includes(type);\n const defaultPrevented = mutLevel === 2 /* MutLevel.Final */;\n if (shouldDelegate) {\n if (this._$delegatedEventListeners[type])\n return;\n this._$delegatedEventListeners[type] = true;\n document.body.addEventListener(type, (ev) => {\n if (defaultPrevented)\n ev.preventDefault();\n this._$trigger(ev, type, this._$getEventDetail(ev), ev.bubbles, ev.composed);\n }, { capture: true });\n return;\n }\n const elementEventListeners = capture\n ? this._$elementCaptureEventListeners\n : this._$elementEventListeners;\n if (!elementEventListeners.has(element))\n elementEventListeners.set(element, Object.create(null));\n const listeners = elementEventListeners.get(element);\n if (listeners[type])\n return;\n listeners[type] = true;\n element.addEventListener(type, (ev) => {\n if (this._$triggedEvents.has(ev))\n return;\n this._$triggedEvents.add(ev);\n if (defaultPrevented)\n ev.preventDefault();\n this._$trigger(ev, type, this._$getEventDetail(ev), ev.bubbles, ev.composed);\n });\n }\n setModelBindingStat(element, attributeName, listener) {\n const updateEventListener = (evName, valueFn) => {\n if (!element._$wxArgs) {\n element._$wxArgs = {\n modelListeners: Object.create(null),\n };\n }\n if (element._$wxArgs.modelListeners[attributeName] === undefined) {\n if (!listener)\n return;\n element._$wxArgs.modelListeners[attributeName] = listener;\n element.addEventListener(evName, () => {\n var _a;\n const listener = (_a = element._$wxArgs) === null || _a === void 0 ? void 0 : _a.modelListeners[attributeName];\n listener === null || listener === void 0 ? void 0 : listener(valueFn());\n });\n }\n element._$wxArgs.modelListeners[attributeName] = listener;\n };\n const tagName = element.tagName;\n let valid = false;\n if (tagName === 'INPUT') {\n const elem = element;\n const type = elem.type;\n if (type === 'checkbox') {\n if (attributeName === 'checked') {\n valid = true;\n updateEventListener('change', () => elem.checked);\n }\n }\n else if (type === 'radio') {\n if (attributeName === 'checked') {\n valid = true;\n updateEventListener('change', () => elem.checked);\n }\n }\n else {\n if (attributeName === 'value') {\n valid = true;\n updateEventListener('input', () => elem.value);\n }\n }\n }\n else if (tagName === 'TEXTAREA') {\n const elem = element;\n if (attributeName === 'value') {\n valid = true;\n updateEventListener('input', () => elem.value);\n }\n }\n else if (tagName === 'SELECT') {\n const elem = element;\n if (attributeName === 'value') {\n valid = true;\n updateEventListener('change', () => elem.value);\n }\n }\n if (!valid) {\n triggerWarning(`unsupported model binding on \"${attributeName}\" of \"${tagName.toLowerCase()}\" element.`);\n }\n }\n createIntersectionObserver(targetElement, relativeElement, relativeElementMargin, thresholds, listener) {\n const observer = new IntersectionObserver((info) => {\n info.forEach((entry) => {\n listener({\n intersectionRatio: entry.intersectionRatio,\n boundingClientRect: entry.boundingClientRect,\n intersectionRect: entry.intersectionRect,\n relativeRect: entry.rootBounds,\n time: entry.time,\n });\n });\n }, {\n root: relativeElement,\n rootMargin: relativeElementMargin,\n threshold: thresholds,\n });\n observer.observe(targetElement);\n return {\n disconnect() {\n observer.disconnect();\n },\n };\n }\n createMediaQueryObserver(status, listener) {\n const calcMatches = () => {\n const width = document.documentElement.clientWidth;\n const height = document.documentElement.clientHeight;\n if (status.width !== undefined && width !== status.width)\n return false;\n if (status.maxWidth !== undefined && width > status.maxWidth)\n return false;\n if (status.minWidth !== undefined && width < status.minWidth)\n return false;\n if (status.width !== undefined && height !== status.height)\n return false;\n if (status.maxHeight !== undefined && height > status.maxHeight)\n return false;\n if (status.minHeight !== undefined && height < status.minHeight)\n return false;\n const orientation = width > height ? 'landscape' : 'portrait';\n if (orientation !== status.orientation)\n return false;\n return true;\n };\n let curMatches = null;\n const listenerFunc = () => {\n const matches = calcMatches();\n if (curMatches === matches)\n return;\n curMatches = matches;\n listener({ matches });\n };\n setTimeout(listenerFunc, 0);\n window.addEventListener('resize', listenerFunc);\n return {\n disconnect() {\n window.removeEventListener('resize', listenerFunc);\n },\n };\n }\n getContext(element, cb) {\n cb(null);\n }\n}\n//# sourceMappingURL=current_window_backend_context.js.map","/* eslint-disable class-methods-use-this */\nimport { safeCallback } from '../func_arr';\nexport var EmptyBackendElementType;\n(function (EmptyBackendElementType) {\n EmptyBackendElementType[EmptyBackendElementType[\"Fragment\"] = 0] = \"Fragment\";\n EmptyBackendElementType[EmptyBackendElementType[\"Element\"] = 1] = \"Element\";\n EmptyBackendElementType[EmptyBackendElementType[\"TextNode\"] = 2] = \"TextNode\";\n EmptyBackendElementType[EmptyBackendElementType[\"Component\"] = 3] = \"Component\";\n EmptyBackendElementType[EmptyBackendElementType[\"VirtualNode\"] = 4] = \"VirtualNode\";\n})(EmptyBackendElementType || (EmptyBackendElementType = {}));\n/** An empty backend implementation */\nexport class EmptyBackendContext {\n constructor() {\n this.mode = 1 /* BackendMode.Shadow */;\n /* @internal */\n this._$styleSheetIdInc = 1;\n /* @internal */\n this._$renderCallbacks = null;\n /* @internal */\n this._$shadowRoot = new EmptyBackendShadowRootContext();\n }\n destroy() {\n // empty\n }\n getWindowWidth() {\n return 1;\n }\n getWindowHeight() {\n return 1;\n }\n getDevicePixelRatio() {\n return 1;\n }\n getTheme() {\n return 'light';\n }\n registerStyleSheetContent(_path, _content) {\n // empty\n }\n appendStyleSheetPath(_path, _styleScope) {\n const id = this._$styleSheetIdInc;\n this._$styleSheetIdInc += 1;\n return id;\n }\n disableStyleSheet(_index) {\n // empty\n }\n render(cb) {\n if (this._$renderCallbacks) {\n this._$renderCallbacks.push(cb);\n }\n else {\n const callbacks = (this._$renderCallbacks = [cb]);\n setTimeout(() => {\n this._$renderCallbacks = null;\n callbacks.forEach((cb) => {\n safeCallback('Render Callback', cb, this, [null]);\n });\n }, 16);\n }\n }\n getRootNode() {\n return this._$shadowRoot;\n }\n createFragment() {\n return new EmptyBackendElement(0 /* EmptyBackendElementType.Fragment */);\n }\n onEvent(_createEvent, _listener) {\n // empty\n }\n}\n/** An element for empty backend implementation */\nexport class EmptyBackendElement {\n constructor(type) {\n if (type === 3 /* EmptyBackendElementType.Component */) {\n this._$shadowRoot = new EmptyBackendShadowRootContext();\n }\n else {\n this._$shadowRoot = null;\n }\n }\n release() {\n // empty\n }\n associateValue(_v) {\n // empty\n }\n getShadowRoot() {\n return this._$shadowRoot || undefined;\n }\n appendChild(_child) {\n // empty\n }\n removeChild(_child, _index) {\n // empty\n }\n insertBefore(_child, _before, _index) {\n // empty\n }\n replaceChild(_child, _oldChild, _index) {\n // empty\n }\n spliceBefore(_before, _deleteCount, _list) {\n // empty\n }\n spliceAppend(_list) {\n // empty\n }\n spliceRemove(_before, _deleteCount) {\n // empty\n }\n setId(_id) {\n // empty\n }\n setSlotName(_name) {\n // empty\n }\n setContainingSlot(_slot) {\n // empty\n }\n reassignContainingSlot(_oldSlot, _newSlot) {\n // empty\n }\n spliceBeforeSlotNodes(_before, _deleteCount, _list) {\n // empty\n }\n spliceRemoveSlotNodes(_before, _deleteCount) {\n // empty\n }\n spliceAppendSlotNodes(_list) {\n // empty\n }\n setInheritSlots() {\n // empty\n }\n setStyle(_styleText) {\n // empty\n }\n addClass(_className) {\n // empty\n }\n removeClass(_className) {\n // empty\n }\n clearClasses() {\n // empty\n }\n setClassAlias(_className, _target) {\n // empty\n }\n setAttribute(_name, _value) {\n // empty\n }\n removeAttribute(_name) {\n // empty\n }\n setDataset(_name, _value) {\n // empty\n }\n setText(_content) {\n // empty\n }\n setListenerStats(_type, _capture, _mutLevel) {\n // empty\n }\n setModelBindingStat(_attributeName, _listener) {\n // empty\n }\n}\n/** A shadow root for empty backend implementation */\nexport class EmptyBackendShadowRootContext extends EmptyBackendElement {\n // eslint-disable-next-line no-useless-constructor\n constructor() {\n super(4 /* EmptyBackendElementType.VirtualNode */);\n }\n createElement(_tagName, _stylingName) {\n return new EmptyBackendElement(1 /* EmptyBackendElementType.Element */);\n }\n createTextNode(_content) {\n return new EmptyBackendElement(2 /* EmptyBackendElementType.TextNode */);\n }\n createComponent(_tagName, _external, _virtualHost, _styleScope, _extraStyleScope, _externalClasses) {\n return new EmptyBackendElement(3 /* EmptyBackendElementType.Component */);\n }\n createVirtualNode(_virtualName) {\n return new EmptyBackendElement(4 /* EmptyBackendElementType.VirtualNode */);\n }\n}\n//# sourceMappingURL=empty_backend.js.map","/* eslint-disable class-methods-use-this */\nimport { safeCallback } from '../func_arr';\n/** An empty backend implementation */\nexport class EmptyComposedBackendContext {\n constructor() {\n this.mode = 2 /* BackendMode.Composed */;\n this._$styleSheetIdInc = 1;\n this._$renderCallbacks = null;\n this._$rootNode = new EmptyComposedBackendElement();\n }\n destroy() {\n // empty\n }\n getWindowWidth() {\n return 1;\n }\n getWindowHeight() {\n return 1;\n }\n getDevicePixelRatio() {\n return 1;\n }\n getTheme() {\n return 'light';\n }\n registerStyleSheetContent(_path, _content) {\n // empty\n }\n appendStyleSheetPath(_path, _styleScope) {\n const id = this._$styleSheetIdInc;\n this._$styleSheetIdInc += 1;\n return id;\n }\n disableStyleSheet(_index) {\n // empty\n }\n render(cb) {\n if (this._$renderCallbacks) {\n this._$renderCallbacks.push(cb);\n }\n else {\n const callbacks = (this._$renderCallbacks = [cb]);\n setTimeout(() => {\n this._$renderCallbacks = null;\n callbacks.forEach((cb) => {\n safeCallback('Render Callback', cb, this, [null]);\n });\n }, 16);\n }\n }\n getRootNode() {\n return this._$rootNode;\n }\n createElement(_tagName, _stylingName) {\n return new EmptyComposedBackendElement();\n }\n createTextNode(_tagName) {\n return new EmptyComposedBackendElement();\n }\n createFragment() {\n return new EmptyComposedBackendElement();\n }\n onEvent(_listener) {\n // empty\n }\n createMediaQueryObserver(_status, _listener) {\n return {\n disconnect: () => {\n /* empty */\n },\n };\n }\n}\n/** An element for empty backend implementation */\nexport class EmptyComposedBackendElement {\n release() {\n // empty\n }\n associateValue(_v) {\n // empty\n }\n appendChild(_child) {\n // empty\n }\n removeChild(_child, _index) {\n // empty\n }\n insertBefore(_child, _before, _index) {\n // empty\n }\n replaceChild(_child, _oldChild, _index) {\n // empty\n }\n spliceBefore(_before, _deleteCount, _list) {\n // empty\n }\n spliceAppend(_list) {\n // empty\n }\n spliceRemove(_before, _deleteCount) {\n // empty\n }\n setId(_id) {\n // empty\n }\n setStyleScope(_styleScope, _extraStyleScope, _hostStyleScope) {\n // empty\n }\n setStyle(_styleText) {\n // empty\n }\n addClass(_elementClass, _styleScope) {\n // empty\n }\n removeClass(_elementClass, _styleScope) {\n // empty\n }\n clearClasses() {\n // empty\n }\n setAttribute(_name, _value) {\n // empty\n }\n removeAttribute(_name) {\n // empty\n }\n setText(_content) {\n // empty\n }\n getBoundingClientRect(cb) {\n setTimeout(() => {\n cb({\n left: 0,\n top: 0,\n width: 0,\n height: 0,\n });\n }, 0);\n }\n getScrollOffset(cb) {\n setTimeout(() => {\n cb({\n scrollLeft: 0,\n scrollTop: 0,\n scrollWidth: 0,\n scrollHeight: 0,\n });\n }, 0);\n }\n setListenerStats(_type, _capture, _mutLevel) {\n // empty\n }\n setModelBindingStat(_attributeName, _listener) {\n // empty\n }\n createIntersectionObserver(_relativeElement, _relativeElementMargin, _thresholds, _listener) {\n return {\n disconnect: () => {\n /* empty */\n },\n };\n }\n getContext(cb) {\n cb(null);\n }\n}\n//# sourceMappingURL=empty_composed_backend.js.map","import { BM, } from './backend';\nconst CLASS_NAME_REG_EXP = /\\s+/;\n/**\n * Style scope manager\n */\nexport class StyleScopeManager {\n constructor() {\n /** @internal */\n this._$names = [''];\n }\n static globalScope() {\n return 0;\n }\n register(name) {\n const ret = this._$names.length;\n this._$names.push(name);\n return ret;\n }\n queryName(id) {\n return this._$names[id];\n }\n}\n/**\n * Class manager for non-virtual `Element`\n */\nexport class ClassList {\n constructor(element, externalNames, owner, styleScope, extraStyleScope, styleScopeManager) {\n /** @internal */\n this._$externalNames = undefined;\n /** @internal */\n this._$externalRawAlias = null;\n /** @internal */\n this._$dirtyExternalNames = null;\n /** @internal */\n this._$rawNames = [];\n /** @internal */\n this._$backendNames = [];\n /** @internal */\n this._$backendNameScopes = [];\n /** @internal */\n this._$backendNamesCount = [];\n /** @internal */\n this._$hasAliasNames = false;\n this._$element = element;\n this._$owner = owner;\n this._$defaultScope = styleScope;\n this._$extraScope = extraStyleScope;\n // root owner got globalScope as it's styleScope, avoid the root owner\n this._$rootScope = (owner === null || owner === void 0 ? void 0 : owner._$owner) ? owner._$rootScope : styleScope;\n this._$prefixManager = styleScopeManager;\n if (externalNames) {\n this._$externalNames = externalNames;\n this._$externalRawAlias = [];\n }\n }\n /** @internal */\n _$resolvePrefixes(name, cb) {\n const owner = this._$owner;\n const externalNames = owner === null || owner === void 0 ? void 0 : owner._$externalNames;\n const externalIndex = externalNames ? externalNames.indexOf(name) : -1;\n if (owner && externalIndex !== -1) {\n this._$hasAliasNames = true;\n const rawAlias = owner._$externalRawAlias[externalIndex];\n if (rawAlias) {\n for (let i = 0; i < rawAlias.length; i += 1) {\n owner._$resolvePrefixes(rawAlias[i], cb);\n }\n }\n }\n else if (name[0] === '~') {\n cb(this._$rootScope, name.slice(1));\n }\n else if (name[0] === '^') {\n let n = name.slice(1);\n let owner = this._$owner;\n while (n[0] === '^') {\n n = n.slice(1);\n owner = owner === null || owner === void 0 ? void 0 : owner._$owner;\n }\n // root owner got globalScope as it's styleScope, avoid the root owner\n const scopeId = (owner === null || owner === void 0 ? void 0 : owner._$owner) ? owner._$defaultScope : this._$rootScope;\n cb(scopeId, n);\n }\n else {\n if (this._$extraScope !== undefined) {\n cb(this._$extraScope, name);\n }\n cb(this._$defaultScope, name);\n }\n }\n /** @internal */\n _$hasAlias(name) {\n return !!this._$externalNames && this._$externalNames.includes(name);\n }\n /** @internal */\n _$setAlias(name, target) {\n if (!this._$externalNames)\n return;\n let slices;\n if (target === undefined || target === null) {\n slices = [];\n }\n else if (Array.isArray(target)) {\n slices = Array(target.length);\n for (let i = 0, l = target.length; i < l; i += 1) {\n slices[i] = String(target[i]);\n }\n }\n else {\n slices = String(target)\n .split(CLASS_NAME_REG_EXP)\n .filter((s) => s !== ''); // split result could be [ '' ]\n }\n const externalIndex = this._$externalNames.indexOf(name);\n if (externalIndex === -1)\n return;\n this._$dirtyExternalNames = this._$dirtyExternalNames || [];\n this._$dirtyExternalNames.push(name);\n this._$externalRawAlias[externalIndex] = slices;\n }\n /** @internal */\n _$getAlias() {\n return this._$externalNames;\n }\n /** @internal */\n _$spreadExternalClassUpdate() {\n const owner = this._$owner;\n if (!(owner === null || owner === void 0 ? void 0 : owner._$dirtyExternalNames) || !this._$hasAliasNames)\n return false;\n const dirtyExternalNames = owner._$dirtyExternalNames;\n const externalNames = this._$externalNames;\n if (externalNames) {\n for (let externalIndex = 0; externalIndex < externalNames.length; externalIndex += 1) {\n const externalRawAlias = this._$externalRawAlias[externalIndex] || [];\n for (let i = 0; i < dirtyExternalNames.length; i += 1) {\n if (externalRawAlias.includes(dirtyExternalNames[i])) {\n this._$dirtyExternalNames = this._$dirtyExternalNames || [];\n this._$dirtyExternalNames.push(externalNames[externalIndex]);\n }\n }\n }\n }\n const shouldUpdate = this._$rawNames.some((names) => names.some((name) => dirtyExternalNames.includes(name)));\n if (shouldUpdate) {\n this._$updateResolvedNames();\n }\n return !!this._$dirtyExternalNames || shouldUpdate;\n }\n /** @internal */\n _$shouldUpdateExternalClass() {\n if (!this._$dirtyExternalNames)\n return false;\n if (BM.SHADOW || (BM.DYNAMIC && this._$element.getBackendMode() === 1 /* BackendMode.Shadow */)) {\n const dirtyExternalNames = this._$dirtyExternalNames;\n for (let i = 0; i < dirtyExternalNames.length; i += 1) {\n const name = dirtyExternalNames[i];\n const externalIndex = this._$externalNames.indexOf(name);\n const targets = this._$externalRawAlias[externalIndex] || [];\n this._$element._$backendElement.setClassAlias(name, targets);\n }\n this._$dirtyExternalNames = null;\n return false;\n }\n return true;\n }\n /** @internal */\n _$markExternalClassUpdated() {\n this._$dirtyExternalNames = null;\n }\n /** @internal */\n _$updateResolvedNames() {\n const backendElement = this._$element._$backendElement;\n if (!backendElement)\n return false;\n const rawNames = this._$rawNames;\n const oldBackendNames = this._$backendNames;\n const oldBackendNameScopes = this._$backendNameScopes;\n const oldBackendNamesCount = this._$backendNamesCount;\n const newBackendNames = [];\n const newBackendNameScopes = [];\n const newBackendNamesCount = [];\n this._$hasAliasNames = false;\n if (BM.SHADOW || (BM.DYNAMIC && this._$element.getBackendMode() === 1 /* BackendMode.Shadow */)) {\n for (let i = 0, l = rawNames.length; i < l; i += 1) {\n const names = rawNames[i];\n if (!names)\n continue;\n for (let j = 0, ll = names.length; j < ll; j += 1) {\n const rawName = names[j];\n let found = false;\n for (let i = 0; i < newBackendNames.length; i += 1) {\n if (rawName === newBackendNames[i]) {\n newBackendNamesCount[i] += 1;\n found = true;\n break;\n }\n }\n if (!found) {\n newBackendNames.push(rawName);\n newBackendNameScopes.push(undefined);\n newBackendNamesCount.push(1);\n }\n }\n }\n }\n else {\n for (let i = 0, l = rawNames.length; i < l; i += 1) {\n const names = rawNames[i];\n if (!names)\n continue;\n for (let j = 0, ll = names.length; j < ll; j += 1) {\n const rawName = names[j];\n this._$resolvePrefixes(rawName, (scopeId, className) => {\n for (let i = 0; i < newBackendNames.length; i += 1) {\n if (className === newBackendNames[i] && scopeId === newBackendNameScopes[i]) {\n newBackendNamesCount[i] += 1;\n return;\n }\n }\n newBackendNames.push(className);\n newBackendNameScopes.push(scopeId);\n newBackendNamesCount.push(1);\n });\n }\n }\n }\n let changed = false;\n for (let i = 0; i < newBackendNames.length; i += 1) {\n let found = false;\n for (let j = 0; j < oldBackendNames.length; j += 1) {\n if (newBackendNames[i] === oldBackendNames[j] &&\n newBackendNameScopes[i] === oldBackendNameScopes[j]) {\n found = true;\n oldBackendNamesCount[j] = 0; // mark as exists\n break;\n }\n }\n if (!found) {\n changed = true;\n this._$addClassToBackend(newBackendNames[i], newBackendNameScopes[i], backendElement);\n }\n }\n for (let j = 0; j < oldBackendNames.length; j += 1) {\n // 0 means old exists\n if (oldBackendNamesCount[j] !== 0) {\n changed = true;\n this._$removeClassFromBackend(oldBackendNames[j], oldBackendNameScopes[j], backendElement);\n }\n }\n this._$backendNames = newBackendNames;\n this._$backendNameScopes = newBackendNameScopes;\n this._$backendNamesCount = newBackendNamesCount;\n return changed;\n }\n /** @internal */\n _$addClassToBackend(name, scope, e) {\n var _a;\n if (BM.DOMLIKE || (BM.DYNAMIC && this._$element.getBackendMode() === 3 /* BackendMode.Domlike */)) {\n const prefix = scope === undefined ? '' : (_a = this._$prefixManager) === null || _a === void 0 ? void 0 : _a.queryName(scope);\n const val = prefix ? `${prefix}--${name}` : name;\n e.classList.add(val);\n }\n else if (BM.COMPOSED ||\n (BM.DYNAMIC && this._$element.getBackendMode() === 2 /* BackendMode.Composed */)) {\n ;\n e.addClass(name, scope);\n }\n else {\n ;\n e.addClass(name);\n }\n }\n /** @internal */\n _$removeClassFromBackend(name, scope, e) {\n var _a;\n if (BM.DOMLIKE || (BM.DYNAMIC && this._$element.getBackendMode() === 3 /* BackendMode.Domlike */)) {\n const prefix = scope && ((_a = this._$prefixManager) === null || _a === void 0 ? void 0 : _a.queryName(scope));\n const val = prefix ? `${prefix}--${name}` : name;\n e.classList.remove(val);\n }\n else if (BM.COMPOSED ||\n (BM.DYNAMIC && this._$element.getBackendMode() === 2 /* BackendMode.Composed */)) {\n ;\n e.removeClass(name, scope);\n }\n else {\n ;\n e.removeClass(name);\n }\n }\n /** @internal */\n _$addClass(name, scopeId, backendElement) {\n const oldClassNames = this._$backendNames;\n const oldScopeIds = this._$backendNameScopes;\n const classNamesCount = this._$backendNamesCount;\n let found = false;\n for (let j = 0; j < oldClassNames.length; j += 1) {\n if (name === oldClassNames[j] && scopeId === oldScopeIds[j]) {\n found = true;\n classNamesCount[j] += 1;\n break;\n }\n }\n if (!found) {\n oldClassNames.push(name);\n oldScopeIds.push(scopeId);\n classNamesCount.push(1);\n this._$addClassToBackend(name, scopeId, backendElement);\n }\n }\n /** @internal */\n _$removeClass(name, scopeId, backendElement) {\n const oldClassNames = this._$backendNames;\n const oldScopeIds = this._$backendNameScopes;\n const classNamesCount = this._$backendNamesCount;\n for (let j = 0; j < oldClassNames.length; j += 1) {\n if (name === oldClassNames[j] && scopeId === oldScopeIds[j]) {\n if (classNamesCount[j] <= 1) {\n oldClassNames.splice(j, 1);\n oldScopeIds.splice(j, 1);\n classNamesCount.splice(j, 1);\n this._$removeClassFromBackend(name, scopeId, backendElement);\n }\n else {\n classNamesCount[j] -= 1;\n }\n break;\n }\n }\n }\n toggle(name, force, segmentIndex = 0 /* StyleSegmentIndex.MAIN */) {\n /* istanbul ignore if */\n if (CLASS_NAME_REG_EXP.test(name))\n throw new Error('Class name contains space characters.');\n const backendElement = this._$element._$backendElement;\n const rawClassIndex = this._$rawNames[segmentIndex]\n ? this._$rawNames[segmentIndex].indexOf(name)\n : -1;\n const isAdd = force === undefined ? rawClassIndex === -1 : !!force;\n let changed = false;\n if (isAdd) {\n if (rawClassIndex === -1) {\n const rawNames = this._$rawNames;\n if (!rawNames[segmentIndex]) {\n rawNames[segmentIndex] = [];\n }\n const names = rawNames[segmentIndex];\n names.push(name);\n if (backendElement) {\n if (BM.SHADOW || (BM.DYNAMIC && this._$element.getBackendMode() === 1 /* BackendMode.Shadow */)) {\n this._$addClass(name, undefined, backendElement);\n }\n else {\n this._$resolvePrefixes(name, (scopeId, className) => {\n this._$addClass(className, scopeId, backendElement);\n });\n }\n }\n changed = true;\n }\n }\n else if (rawClassIndex !== -1) {\n const names = this._$rawNames[segmentIndex];\n if (names)\n names.splice(rawClassIndex, 1);\n if (backendElement) {\n if (BM.SHADOW || (BM.DYNAMIC && this._$element.getBackendMode() === 1 /* BackendMode.Shadow */)) {\n this._$removeClass(name, undefined, backendElement);\n }\n else {\n this._$resolvePrefixes(name, (scopeId, className) => {\n this._$removeClass(className, scopeId, backendElement);\n });\n }\n }\n changed = true;\n }\n return changed;\n }\n contains(name, segmentIndex = 0 /* StyleSegmentIndex.MAIN */) {\n const names = this._$rawNames[segmentIndex] || [];\n for (let i = 0; i < names.length; i += 1) {\n const rn = names[i];\n if (rn[0] === '~') {\n const n = rn.slice(1);\n if (n === name)\n return true;\n }\n else if (rn[0] === '^') {\n let n = rn.slice(1);\n while (n[0] === '^') {\n n = n.slice(1);\n }\n if (n === name)\n return true;\n }\n else {\n if (rn === name)\n return true;\n }\n }\n return false;\n }\n /** Set class string */\n setClassNames(names, segmentIndex = 0 /* StyleSegmentIndex.MAIN */) {\n let n;\n if (names === undefined || names === null) {\n n = [];\n }\n else if (Array.isArray(names)) {\n n = Array(names.length);\n for (let i = 0, l = names.length; i < l; i += 1) {\n n[i] = String(names[i]);\n }\n }\n else {\n n = String(names)\n .split(CLASS_NAME_REG_EXP)\n .filter((s) => s !== ''); // split result could be [ '' ]\n }\n this._$rawNames[segmentIndex] = n;\n return this._$updateResolvedNames();\n }\n /** Returns space separated class string */\n getClassNames(segmentIndex = 0 /* StyleSegmentIndex.MAIN */) {\n const names = this._$rawNames[segmentIndex] || [];\n return names ? names.join(' ') : '';\n }\n}\n//# sourceMappingURL=class_list.js.map","export const METHOD_TAG = Symbol('method');\n//# sourceMappingURL=component_params.js.map","/**\n * Interface that can be implement dynamically\n *\n * A `TraitBehavior` is like a TypeScript interface, but can be implemented dynamically.\n * It requires the implementors to implement `TIn` .\n * Also, it can provide do a transform from `TIn` to `TOut` as common logic of the trait.\n */\nexport class TraitBehavior {\n /** @internal */\n // eslint-disable-next-line no-useless-constructor\n constructor(ownerSpace, trans) {\n this.ownerSpace = ownerSpace;\n this._$trans = trans;\n }\n /** @internal */\n _$implement(impl) {\n var _a;\n return ((_a = this._$trans) === null || _a === void 0 ? void 0 : _a.call(this, impl)) || impl;\n }\n}\n/**\n * A manager that can implement multiple different trait behaviors\n */\nexport class TraitGroup {\n constructor() {\n this._$traits = new WeakMap();\n }\n implement(traitBehavior, impl) {\n const traitImpl = traitBehavior._$implement(impl);\n this._$traits.set(traitBehavior, traitImpl);\n }\n get(traitBehavior) {\n return this._$traits.get(traitBehavior);\n }\n}\n//# sourceMappingURL=trait_behaviors.js.map","import { BehaviorBuilder, } from './behavior';\nimport { StyleScopeManager } from './class_list';\nimport { Component, } from './component';\nimport { normalizeComponentOptions, } from './global_options';\nimport { TraitBehavior } from './trait_behaviors';\nimport { safeCallback } from './func_arr';\nconst normalizePath = (path, basePath) => {\n let slices;\n if (path[0] !== '/') {\n slices = basePath.split('/').slice(0, -1).concat(path.split('/'));\n }\n else {\n slices = path.split('/');\n }\n const finalSlices = [];\n for (let i = 0; i < slices.length; i += 1) {\n const slice = slices[i];\n if (slice === '' || slice === '.')\n continue;\n if (slice === '..') {\n finalSlices.pop();\n continue;\n }\n finalSlices.push(slice);\n }\n return finalSlices.join('/');\n};\nexport const normalizeUrl = (path, relPath) => {\n const protoSep = path.indexOf('://');\n if (protoSep > 0) {\n const domainSep = path.indexOf('/', protoSep + 3);\n if (domainSep > 0) {\n const domain = path.slice(0, domainSep);\n const absPath = normalizePath(path.slice(domainSep + 1), '');\n return {\n domain,\n absPath,\n };\n }\n // HACK for invalid URL like `a://the-comp` , provide some compatibility\n const domain = path.slice(0, protoSep + 3);\n const absPath = normalizePath(path.slice(protoSep + 3), '');\n return {\n domain,\n absPath,\n };\n }\n return {\n domain: null,\n absPath: normalizePath(path, relPath),\n };\n};\nexport class ComponentWaitingList {\n constructor(ownerSpace, isPub, alias) {\n /** @internal */\n this._$callbacks = [];\n this._$ownerSpace = ownerSpace;\n this._$isPub = isPub;\n this._$alias = alias;\n }\n add(callback) {\n this._$callbacks.push(callback);\n }\n hintUsed(owner) {\n var _a, _b;\n (_b = (_a = this._$ownerSpace)._$componentWaitingListener) === null || _b === void 0 ? void 0 : _b.call(_a, this._$isPub, this._$alias, owner);\n }\n remove(callback) {\n const index = this._$callbacks.indexOf(callback);\n // must guarantee order here (cannot swap-remove)\n this._$callbacks.splice(index, 1);\n }\n call(c) {\n const cbs = this._$callbacks;\n this._$callbacks = [];\n for (let i = 0; i < cbs.length; i += 1) {\n const f = cbs[i];\n f(c);\n }\n }\n}\n/** A group of components for cross-component using */\nexport class ComponentSpace {\n /**\n * Create a new component space\n *\n * The `defaultComponent` is the default component path.\n * It should be defined soon after creation.\n * A `baseSpace` can be provided as a \"base\" component space -\n * every component alias (and behavior alias) in the space will be imported when creation.\n * However, if any new component is added to the base space after the creation,\n * it will not be added to the created space.\n */\n constructor(defaultComponent, baseSpace, styleScopeManager, allowUnusedNativeNode = true) {\n /** @internal */\n this._$behaviorList = Object.create(null);\n /** @internal */\n this._$pubBehaviorList = Object.create(null);\n /** @internal */\n this._$list = Object.create(null);\n /** @internal */\n this._$pubList = Object.create(null);\n /** @internal */\n this._$using = Object.create(null);\n /** @internal */\n this._$importedSpaces = Object.create(null);\n /** @internal */\n this._$listWaiting = Object.create(null);\n /** @internal */\n this._$pubListWaiting = Object.create(null);\n /** @internal */\n this._$groupingListWaiting = null;\n /** @internal */\n this._$componentWaitingListener = null;\n /** @internal */\n this._$allowUnusedNativeNode = true;\n if (baseSpace) {\n Object.assign(this._$list, baseSpace._$pubList);\n Object.assign(this._$behaviorList, baseSpace._$pubBehaviorList);\n }\n this._$defaultComponent = defaultComponent !== null && defaultComponent !== void 0 ? defaultComponent : '';\n this._$componentOptions = normalizeComponentOptions({}, baseSpace === null || baseSpace === void 0 ? void 0 : baseSpace._$componentOptions);\n this.styleScopeManager = styleScopeManager || new StyleScopeManager();\n this._$allowUnusedNativeNode = allowUnusedNativeNode;\n }\n /**\n * Update the default component options for this space\n *\n * The new options will be merged with existing options.\n */\n updateComponentOptions(componentOptions) {\n this._$componentOptions = normalizeComponentOptions(componentOptions, this._$componentOptions);\n }\n getComponentOptions() {\n return this._$componentOptions;\n }\n /**\n * Set (or update) a global using component item\n *\n * This will allow all the components in this component space using this component automatically,\n * without declaring it with `using` or `usingComponents` again.\n * The target can also be a tag name of a native node.\n */\n setGlobalUsingComponent(key, target) {\n this._$using[key] = target;\n }\n /**\n * Import another component space\n *\n * The components in the imported space can be used by components in this space.\n * The `protoDomain` should be URL-like, i.e. `space://another-space` .\n * When using, the components in the imported space should be specified with `protoDomain` .\n * For example, if `protoDomain` is `space://another-space` and one imported component has alias `my-comp` ,\n * then it should be specified with `space://another-space/my-comp` .\n * If `privateUse` set to false, only component alias in the imported space can be used;\n * the original name of components is imported otherwise.\n */\n importSpace(protoDomain, space, privateUse) {\n this._$importedSpaces[protoDomain] = {\n space,\n privateUse,\n };\n }\n /**\n * Get a component by the `path`\n *\n * The component `is` is actually treated as the \"path\" of the component.\n * In other words, the component `is` field can be a string like `path/to/the/component` .\n * Other components can be used by the component with \"relative path\" specified.\n * In this method, if the `path` is given as a relative path (not started with `/` ),\n * it will be converted according to the `basePath` .\n * If the `path` is given as a URL-like format,\n * the component will be searched in imported component spaces ( `importSpace()` for details).\n */\n getComponentByUrl(path, basePath) {\n const { domain, absPath } = normalizeUrl(path, basePath);\n const comp = this.getComponent(absPath, true, domain);\n if (!comp) {\n throw new Error(`There is no component \"${absPath}\" in the space and no default component can be used`);\n }\n return comp;\n }\n /**\n * Get a component by the `path`\n *\n * Similar to `getComponentByUrl()` ,\n * but returns `null` instead of the default component if no component was found.\n */\n getComponentByUrlWithoutDefault(path, relPath) {\n const { domain, absPath } = normalizeUrl(path, relPath);\n const comp = this.getComponent(absPath, false, domain);\n return comp || null;\n }\n getComponent(absPath, withDefault = true, domain = null) {\n let list;\n if (domain) {\n const target = this._$importedSpaces[domain];\n if (target) {\n const { space, privateUse } = target;\n if (privateUse) {\n list = space._$list;\n }\n else {\n list = space._$pubList;\n }\n }\n }\n else {\n list = this._$list;\n }\n if (list) {\n const def = list[absPath];\n if (def)\n return def;\n }\n if (withDefault) {\n return this._$list[this._$defaultComponent];\n }\n return undefined;\n }\n getDefaultComponent() {\n return this._$list[this._$defaultComponent] || null;\n }\n isDefaultComponent(def) {\n return this._$list[this._$defaultComponent] === def;\n }\n getGlobalUsingComponent(key) {\n return this._$using[key] || null;\n }\n /**\n * Get a behavior by the `path`\n *\n * Similar to `getComponentByUrlWithoutDefault()` but for behaviors.\n */\n getBehaviorByUrl(path, relPath) {\n const { domain, absPath } = normalizeUrl(path, relPath);\n return this._$getBehavior(absPath, domain) || null;\n }\n /** @internal */\n _$getBehavior(absPath, domain = null) {\n let list;\n if (domain) {\n const target = this._$importedSpaces[domain];\n if (target) {\n const { space, privateUse } = target;\n if (privateUse) {\n list = space._$behaviorList;\n }\n else {\n list = space._$pubBehaviorList;\n }\n }\n }\n else {\n list = this._$behaviorList;\n }\n if (list) {\n const def = list[absPath];\n if (def)\n return def;\n }\n return undefined;\n }\n /** Register a component in this space */\n defineComponent(def) {\n const is = def.is;\n const ret = new BehaviorBuilder(is, this).definition(def).registerComponent();\n return ret;\n }\n /** Register a behavior in this space */\n defineBehavior(def) {\n const is = def.is;\n const ret = new BehaviorBuilder(is, this).definition(def).registerBehavior();\n return ret;\n }\n /** Register a component or a behavior with chaining API */\n define(is) {\n return new BehaviorBuilder(is, this);\n }\n /**\n * Register a component or a behavior with chaining API (with method caller type specified)\n *\n * This API is generally designed for adapters which require special method callers.\n */\n defineWithMethodCaller(is) {\n return new BehaviorBuilder(is, this);\n }\n /** @internal */\n _$registerComponent(is, comp) {\n this._$list[is] = comp;\n this._$behaviorList[is] = comp.behavior;\n const waiting = this._$listWaiting[is];\n if (waiting) {\n delete this._$listWaiting[is];\n if (this._$groupingListWaiting) {\n this._$groupingListWaiting.push({ waiting, comp });\n }\n else {\n waiting.call(comp);\n }\n }\n }\n /** @internal */\n _$registerBehavior(is, beh) {\n this._$behaviorList[is] = beh;\n }\n /**\n * Start a series of components and behaviors registration\n *\n * In most cases, `groupRegister` is prefered.\n */\n startGroupRegister() {\n this._$groupingListWaiting = [];\n }\n /**\n * End a series of components and behaviors registration\n *\n * In most cases, `groupRegister` is prefered.\n */\n endGroupRegister() {\n const arr = this._$groupingListWaiting;\n if (!arr)\n return;\n this._$groupingListWaiting = null;\n for (let i = 0; i < arr.length; i += 1) {\n const { waiting, comp } = arr[i];\n waiting.call(comp);\n }\n }\n /**\n * Group a series of components and behaviors registration\n *\n * If any placeholder should be replaced,\n * the replacement will happen after the whole series of registration.\n */\n groupRegister(cb) {\n this.startGroupRegister();\n const ret = safeCallback('group register', cb, this, []);\n this.endGroupRegister();\n return ret;\n }\n /**\n * Assign a public alias to a component\n *\n * The alias can be used in other component spaces which imported this component space.\n * One component may have multiple aliases.\n */\n exportComponent(alias, is) {\n const comp = this._$list[is];\n if (!comp) {\n throw new Error(`There is no component \"${is}\" for aliasing`);\n }\n this._$pubList[alias] = comp;\n const arr = this._$pubListWaiting[alias];\n if (arr) {\n delete this._$pubListWaiting[alias];\n arr.call(comp);\n }\n }\n /** Get a component by its exported alias */\n getExportedComponent(alias) {\n return this._$pubList[alias];\n }\n /** Get a behavior by its exported alias */\n getExportedBehavior(alias) {\n return this._$pubBehaviorList[alias];\n }\n /**\n * Assign a public alias to a behavior\n *\n * The alias can be used in other component spaces which imported this component space.\n * One behavior may have multiple aliases.\n */\n exportBehavior(alias, is) {\n const beh = this._$behaviorList[is];\n if (!beh) {\n throw new Error(`There is no behavior \"${is}\" for aliasing`);\n }\n this._$pubBehaviorList[alias] = beh;\n }\n /** @internal */\n _$componentWaitingList(path, relPath) {\n const { domain, absPath } = normalizeUrl(path, relPath);\n let waiting;\n let space;\n let isPub;\n if (domain) {\n const target = this._$importedSpaces[domain];\n if (target) {\n space = target.space;\n isPub = !target.privateUse;\n if (!isPub) {\n if (space._$list[absPath]) {\n return null;\n }\n waiting = space._$listWaiting;\n }\n else {\n if (space._$pubList[absPath]) {\n return null;\n }\n waiting = space._$pubListWaiting;\n }\n }\n else {\n return null;\n }\n }\n else {\n space = this;\n isPub = false;\n if (this._$list[absPath]) {\n return null;\n }\n waiting = this._$listWaiting;\n }\n let wl = waiting[absPath];\n if (wl)\n return wl;\n wl = waiting[absPath] = new ComponentWaitingList(space, isPub, absPath);\n return wl;\n }\n /**\n * Set a listener which will be called when a placeholded component is used.\n *\n * This can be used as a hint for a component that should be registered later.\n * If `isPub` is false, the `alias` is the path of the component, a.k.a. `is` .\n * Otherwise, it is the exported `alias` instead.\n */\n setComponentWaitingListener(listener) {\n this._$componentWaitingListener = listener;\n }\n /**\n * Create a component by URL\n *\n * This `url` can contain params (started with \"?\" character).\n * The params will try to be set to component properties (if matches the property name).\n */\n createComponentByUrl(tagName, url, genericTargets, backendContext) {\n let domainPath = url;\n let paramStr = null;\n // parse URL\n const hashSepIndex = domainPath.indexOf('#');\n if (hashSepIndex >= 0) {\n domainPath = domainPath.slice(0, hashSepIndex);\n }\n const paramSepIndex = domainPath.indexOf('?');\n if (paramSepIndex >= 0) {\n paramStr = domainPath.slice(paramSepIndex + 1);\n domainPath = domainPath.slice(0, paramSepIndex);\n }\n // find target components\n const compDef = this.getComponentByUrl(domainPath, '');\n let genericImpls = null;\n if (genericTargets) {\n genericImpls = Object.create(null);\n Object.keys(genericTargets).forEach((key) => {\n const url = genericTargets[key];\n const compDef = this.getComponentByUrl(url, '');\n genericImpls[key] = compDef;\n });\n }\n // create the component\n const comp = Component.createWithGenericsAndContext(tagName, compDef, genericImpls, backendContext, (comp) => {\n // set params if provided\n if (paramStr) {\n let needApplyUpdates = false;\n paramStr.split('&').forEach((kv) => {\n const kvSepIndex = kv.indexOf('=');\n if (kvSepIndex >= 0) {\n const key = decodeURIComponent(kv.slice(0, kvSepIndex));\n const value = decodeURIComponent(kv.slice(kvSepIndex + 1));\n if (comp._$dataGroup.replaceProperty(key, value)) {\n needApplyUpdates = true;\n }\n }\n });\n if (needApplyUpdates)\n comp.applyDataUpdates();\n }\n });\n return comp;\n }\n defineTraitBehavior(trans) {\n return new TraitBehavior(this, trans);\n }\n}\nlet defaultComponentSpace = null;\nexport const getDefaultComponentSpace = () => {\n if (defaultComponentSpace) {\n return defaultComponentSpace;\n }\n const cs = new ComponentSpace();\n defaultComponentSpace = cs;\n return cs;\n};\n//# sourceMappingURL=component_space.js.map","const skipWhiteSpace = (state) => {\n const str = state.str;\n while (state.cur < str.length) {\n const next = str[state.cur];\n if (next === ' ' || next === '\\n' || next === '\\r' || next === '\\t' || next === '\\f') {\n state.cur += 1;\n }\n else {\n break;\n }\n }\n return state.cur < str.length;\n};\nconst parseInteger = (state) => {\n const str = state.str;\n let ret = '';\n while (state.cur < str.length) {\n const next = str[state.cur];\n if (next >= '0' && next <= '9') {\n ret += next;\n }\n else {\n break;\n }\n state.cur += 1;\n }\n if (!ret) {\n throw new Error(`data path descriptor \"${str}\" is illegal at char ${state.cur} (illegal index)`);\n }\n return parseInt(ret, 10);\n};\nconst parseFieldName = (state) => {\n const str = state.str;\n let ret = '';\n while (state.cur < str.length) {\n const next = str[state.cur];\n if (next === '\\\\') {\n // in this mode, `\\\\` always translate the next char to field name\n if (state.cur + 1 === str.length) {\n // empty\n }\n else {\n const next2 = str[state.cur + 1];\n ret += next2;\n state.cur += 1;\n }\n }\n else if (/^[_a-zA-Z]$/.test(next)) {\n ret += next;\n }\n else if (next >= '0' && next <= '9') {\n if (ret === '') {\n throw new Error(`data path descriptor \"${str}\" is illegal at char ${state.cur} (field name cannot start with digits)`);\n }\n ret += next;\n }\n else {\n break;\n }\n state.cur += 1;\n }\n return ret;\n};\nconst parseFieldNameWithSpecialChars = (state) => {\n const str = state.str;\n let ret = '';\n while (state.cur < str.length) {\n const next = str[state.cur];\n if (next === '\\\\') {\n // in this mode, `\\\\` only escape recognized special chars. It is `\\\\` itself otherwise\n if (state.cur + 1 === str.length) {\n ret += '\\\\';\n state.cur += 1;\n }\n else {\n const next2 = str[state.cur + 1];\n if (next2 === '.' || next2 === '[' || next2 === ']' || next2 === '\\\\') {\n ret += next2;\n state.cur += 2;\n }\n else {\n ret += '\\\\';\n state.cur += 1;\n }\n }\n }\n else if (next === '.' || next === '[') {\n break;\n }\n else {\n ret += next;\n state.cur += 1;\n }\n }\n return ret;\n};\nconst parsePath = (state) => {\n const str = state.str;\n skipWhiteSpace(state);\n if (str[state.cur] === '*' && str[state.cur + 1] === '*') {\n state.cur += 2;\n return ['**'];\n }\n const seg = parseFieldName(state);\n if (!seg) {\n throw new Error(`data path descriptor \"${str}\" is illegal at char ${state.cur} (first field name illegal)`);\n }\n const ret = [seg];\n while (state.cur < str.length) {\n if (!skipWhiteSpace(state))\n break;\n const next = str[state.cur];\n if (next === '.') {\n state.cur += 1;\n skipWhiteSpace(state);\n if (str[state.cur] === '*' && str[state.cur + 1] === '*') {\n ret.push('**');\n state.cur += 2;\n break;\n }\n const seg = parseFieldName(state);\n if (!seg) {\n throw new Error(`data path descriptor \"${str}\" is illegal at char ${state.cur} (field name illegal)`);\n }\n ret.push(seg);\n }\n else if (next === '[') {\n state.cur += 1;\n skipWhiteSpace(state);\n const index = parseInteger(state);\n skipWhiteSpace(state);\n const next2 = str[state.cur];\n if (next2 !== ']') {\n throw new Error(`data path descriptor \"${str}\" is illegal at char ${state.cur} (illegal index)`);\n }\n state.cur += 1;\n ret.push(index);\n }\n else {\n break;\n }\n }\n return ret;\n};\nconst parsePathWithSpecialChars = (state) => {\n const str = state.str;\n const ret = [];\n while (state.cur < str.length) {\n const next = str[state.cur];\n if (next === '.') {\n state.cur += 1;\n const seg = parseFieldNameWithSpecialChars(state);\n if (seg !== '')\n ret.push(seg);\n }\n else if (next === '[') {\n state.cur += 1;\n const index = parseInteger(state);\n const next2 = str[state.cur];\n if (next2 !== ']' && state.cur < str.length) {\n throw new Error(`data path descriptor \"${str}\" is illegal at char ${state.cur} (illegal index)`);\n }\n state.cur += 1;\n ret.push(index);\n }\n else {\n const seg = parseFieldNameWithSpecialChars(state);\n ret.push(seg);\n }\n }\n if (ret.length === 0)\n ret.push('');\n return ret;\n};\nconst parseCommaSepPaths = (state) => {\n const ret = [];\n ret.push(parsePath(state));\n skipWhiteSpace(state);\n while (state.str[state.cur] === ',') {\n state.cur += 1;\n ret.push(parsePath(state));\n skipWhiteSpace(state);\n }\n return ret;\n};\nexport const parseSinglePath = (str) => {\n const parseState = {\n str,\n cur: 0,\n };\n const ret = parsePathWithSpecialChars(parseState);\n // NOTE currently the end check is not required here, because prev calls always eats all chars\n // if (parseState.cur !== str.length) {\n // throw new Error(`data path descriptor \"${str}\" is illegal at char ${parseState.cur}`)\n // }\n return ret;\n};\nexport const parseMultiPaths = (str) => {\n if (typeof str !== 'string') {\n return str.map((str) => parsePath({ str, cur: 0 }));\n }\n const parseState = {\n str,\n cur: 0,\n };\n const ret = parseCommaSepPaths(parseState);\n if (parseState.cur !== str.length) {\n throw new Error(`data path descriptor \"${str}\" is illegal at char ${parseState.cur}`);\n }\n return ret;\n};\n//# sourceMappingURL=data_path.js.map","const deepCopyWithRecursion = (src, visited) => {\n if (typeof src === 'object' && src !== null) {\n const v = visited.get(src);\n if (v !== undefined)\n return v;\n if (Array.isArray(src)) {\n const dest = [];\n visited.set(src, dest);\n for (let i = 0; i < src.length; i += 1) {\n dest[i] = deepCopyWithRecursion(src[i], visited);\n }\n return dest;\n }\n const dest = {};\n visited.set(src, dest);\n const keys = Object.keys(src);\n for (let i = 0; i < keys.length; i += 1) {\n const k = keys[i];\n dest[k] = deepCopyWithRecursion(src[k], visited);\n }\n return dest;\n }\n if (typeof src === 'symbol')\n return Symbol(src.description);\n return src;\n};\nexport const simpleDeepCopy = (src) => {\n if (typeof src === 'object' && src !== null) {\n if (Array.isArray(src)) {\n const dest = [];\n for (let i = 0; i < src.length; i += 1) {\n dest[i] = simpleDeepCopy(src[i]);\n }\n return dest;\n }\n const dest = {};\n const keys = Object.keys(src);\n for (let i = 0; i < keys.length; i += 1) {\n const k = keys[i];\n dest[k] = simpleDeepCopy(src[k]);\n }\n return dest;\n }\n if (typeof src === 'symbol')\n return Symbol(src.description);\n return src;\n};\nexport const deepCopy = (src, withRecursion) => {\n if (withRecursion)\n return deepCopyWithRecursion(src, new WeakMap());\n return simpleDeepCopy(src);\n};\n//# sourceMappingURL=data_utils.js.map","import { FuncArr } from './func_arr';\nimport { isElement } from './type_symbol';\nexport class MutationObserverTarget {\n constructor(boundElement) {\n this._$subtreeObserversCount = 0;\n this.attrObservers = null;\n this.textObservers = null;\n this.childObservers = null;\n this.attachObservers = null;\n this._$boundElement = boundElement;\n }\n attachChild(child) {\n if (!child._$mutationObserverTarget) {\n child._$mutationObserverTarget = new MutationObserverTarget(child);\n }\n if (this._$subtreeObserversCount > 0) {\n child._$mutationObserverTarget.updateSubtreeCount(this._$subtreeObserversCount);\n }\n }\n detachChild(child) {\n if (child._$mutationObserverTarget) {\n child._$mutationObserverTarget.updateSubtreeCount(-this._$subtreeObserversCount);\n }\n }\n updateSubtreeCount(diff) {\n this._$subtreeObserversCount += diff;\n const children = this._$boundElement.childNodes;\n children.forEach((child) => {\n if (isElement(child)) {\n if (!child._$mutationObserverTarget) {\n child._$mutationObserverTarget = new MutationObserverTarget(child);\n }\n child._$mutationObserverTarget.updateSubtreeCount(diff);\n }\n });\n }\n hasSubtreeListeners() {\n return this._$subtreeObserversCount > 0;\n }\n static callAttrObservers(node, eventObj) {\n var _a;\n let cur = node;\n do {\n const target = cur._$mutationObserverTarget;\n (_a = target === null || target === void 0 ? void 0 : target.attrObservers) === null || _a === void 0 ? void 0 : _a.call(cur, [eventObj]);\n const next = cur.parentNode;\n if (!next)\n break;\n cur = next;\n if (!cur._$mutationObserverTarget)\n break;\n } while (cur._$mutationObserverTarget._$subtreeObserversCount > 0);\n }\n static callTextObservers(textNode, eventObj) {\n var _a;\n let cur = textNode.parentNode;\n while (cur) {\n const target = cur._$mutationObserverTarget;\n if (!target || target._$subtreeObserversCount === 0)\n break;\n (_a = target.textObservers) === null || _a === void 0 ? void 0 : _a.call(cur, [eventObj]);\n cur = cur.parentNode;\n }\n }\n static callChildObservers(node, eventObj) {\n var _a;\n let cur = node;\n do {\n const target = cur._$mutationObserverTarget;\n (_a = target === null || target === void 0 ? void 0 : target.childObservers) === null || _a === void 0 ? void 0 : _a.call(cur, [eventObj]);\n const next = cur.parentNode;\n if (!next)\n break;\n cur = next;\n if (!cur._$mutationObserverTarget)\n break;\n } while (cur._$mutationObserverTarget._$subtreeObserversCount > 0);\n }\n static callAttachObservers(node, eventObj) {\n var _a;\n const target = node._$mutationObserverTarget;\n (_a = target === null || target === void 0 ? void 0 : target.attachObservers) === null || _a === void 0 ? void 0 : _a.call(node, [eventObj]);\n }\n}\n/**\n * An observer that can observe shadow tree changes\n *\n * Like DOM MutationObserver,\n * this observer can observe attributes, text content, and child nodes changes.\n * It can optionally observe changes in a subtree.\n * Further more, it can listen attached/detached events on an element.\n */\nexport class MutationObserver {\n constructor(listener) {\n this._$subtreeListenersCount = 0;\n this._$boundFuncArrs = [];\n this._$boundTarget = null;\n this._$listener = listener;\n this._$normalizedListener = null;\n }\n static create(listener) {\n return new MutationObserver(listener);\n }\n /** Start observation */\n observe(targetElement, options = {\n properties: false,\n childList: false,\n characterData: false,\n subtree: false,\n attachStatus: false,\n }) {\n const listener = this._$listener;\n if (!listener) {\n throw new Error('A MutationObserver can only observe once');\n }\n let target;\n if (targetElement._$mutationObserverTarget) {\n target = targetElement._$mutationObserverTarget;\n }\n else {\n target = new MutationObserverTarget(targetElement);\n targetElement._$mutationObserverTarget = target;\n }\n this._$listener = null;\n const cb = options.subtree\n ? listener\n : function noSubtreeListener(ev) {\n // this might be TextNode, but do the same as Element\n if (ev.target === this)\n listener.call(this, ev);\n };\n this._$normalizedListener = cb;\n this._$boundTarget = target;\n if (options.properties) {\n if (!target.attrObservers)\n target.attrObservers = new FuncArr('attributeObserver');\n target.attrObservers.add(cb);\n this._$boundFuncArrs.push(target.attrObservers);\n this._$subtreeListenersCount += 1;\n }\n if (options.childList) {\n if (!target.childObservers)\n target.childObservers = new FuncArr('childObserver');\n target.childObservers.add(cb);\n this._$boundFuncArrs.push(target.childObservers);\n this._$subtreeListenersCount += 1;\n }\n if (options.characterData) {\n if (!target.textObservers)\n target.textObservers = new FuncArr('textObserver');\n target.textObservers.add(cb);\n this._$boundFuncArrs.push(target.textObservers);\n this._$subtreeListenersCount += 1;\n }\n if (options.subtree) {\n target.updateSubtreeCount(this._$subtreeListenersCount);\n }\n if (options.attachStatus) {\n if (!target.attachObservers)\n target.attachObservers = new FuncArr('attachObserver');\n target.attachObservers.add(cb);\n this._$boundFuncArrs.push(target.attachObservers);\n }\n }\n /** End observation */\n disconnect() {\n var _a;\n (_a = this._$boundTarget) === null || _a === void 0 ? void 0 : _a.updateSubtreeCount(-this._$subtreeListenersCount);\n const arr = this._$boundFuncArrs;\n this._$boundFuncArrs = [];\n const nl = this._$normalizedListener;\n if (nl) {\n arr.forEach((funcArr) => {\n funcArr.remove(nl);\n });\n }\n }\n}\n//# sourceMappingURL=mutation_observer.js.map","import { deepCopy, simpleDeepCopy } from './data_utils';\nimport { safeCallback } from './func_arr';\nimport { DeepCopyKind } from './global_options';\nimport { MutationObserverTarget } from './mutation_observer';\nimport { triggerWarning } from './warning';\n// eslint-disable-next-line @typescript-eslint/unbound-method\nconst hasOwnProperty = Object.prototype.hasOwnProperty;\nexport var NormalizedPropertyType;\n(function (NormalizedPropertyType) {\n NormalizedPropertyType[\"Invalid\"] = \"invalid\";\n NormalizedPropertyType[\"Any\"] = \"any\";\n NormalizedPropertyType[\"String\"] = \"string\";\n NormalizedPropertyType[\"Number\"] = \"number\";\n NormalizedPropertyType[\"Boolean\"] = \"boolean\";\n NormalizedPropertyType[\"Object\"] = \"object\";\n NormalizedPropertyType[\"Array\"] = \"array\";\n NormalizedPropertyType[\"Function\"] = \"function\";\n})(NormalizedPropertyType || (NormalizedPropertyType = {}));\nexport const shallowMerge = (dest, src) => {\n const keys = Object.keys(src);\n for (let i = 0; i < keys.length; i += 1) {\n const key = keys[i];\n if (Object.prototype.hasOwnProperty.call(dest, key)) {\n if (key[0] === '_') {\n triggerWarning(`data field \"${key}\" from different behaviors is overriding or merging.`);\n }\n if (typeof dest[key] === 'object' &&\n typeof src[key] === 'object' &&\n src[key] !== null &&\n !Array.isArray(src[key])) {\n if (Array.isArray(dest[key])) {\n dest[key] = dest[key].slice();\n }\n else {\n const oldDest = dest[key];\n const newDest = {};\n const subKeys = Object.keys(oldDest);\n for (let i = 0; i < subKeys.length; i += 1) {\n const subKey = subKeys[i];\n newDest[subKey] = oldDest[subKey];\n }\n dest[key] = newDest;\n }\n shallowMerge(dest[key], src[key]);\n }\n else {\n dest[key] = src[key];\n }\n }\n else {\n dest[key] = src[key];\n }\n }\n};\nexport const normalizePropertyTypeShortHand = (propDef) => {\n if (propDef === \"string\" /* NormalizedPropertyType.String */ || propDef === String) {\n return {\n type: \"string\" /* NormalizedPropertyType.String */,\n optionalTypes: null,\n value: '',\n default: undefined,\n observer: null,\n comparer: null,\n reflectIdPrefix: false,\n };\n }\n if (propDef === \"number\" /* NormalizedPropertyType.Number */ || propDef === Number) {\n return {\n type: \"number\" /* NormalizedPropertyType.Number */,\n optionalTypes: null,\n value: 0,\n default: undefined,\n observer: null,\n comparer: null,\n reflectIdPrefix: false,\n };\n }\n if (propDef === \"boolean\" /* NormalizedPropertyType.Boolean */ || propDef === Boolean) {\n return {\n type: \"boolean\" /* NormalizedPropertyType.Boolean */,\n optionalTypes: null,\n value: false,\n default: undefined,\n observer: null,\n comparer: null,\n reflectIdPrefix: false,\n };\n }\n if (propDef === \"object\" /* NormalizedPropertyType.Object */ || propDef === Object) {\n return {\n type: \"object\" /* NormalizedPropertyType.Object */,\n optionalTypes: null,\n value: null,\n default: undefined,\n observer: null,\n comparer: null,\n reflectIdPrefix: false,\n };\n }\n if (propDef === \"array\" /* NormalizedPropertyType.Array */ || propDef === Array) {\n return {\n type: \"array\" /* NormalizedPropertyType.Array */,\n optionalTypes: null,\n value: [],\n default: undefined,\n observer: null,\n comparer: null,\n reflectIdPrefix: false,\n };\n }\n if (propDef === \"function\" /* NormalizedPropertyType.Function */ || propDef === Function) {\n return {\n type: \"function\" /* NormalizedPropertyType.Function */,\n optionalTypes: null,\n value() {\n /* empty */\n },\n default: undefined,\n observer: null,\n comparer: null,\n reflectIdPrefix: false,\n };\n }\n if (propDef === \"any\" /* NormalizedPropertyType.Any */ || propDef === null || propDef === undefined) {\n return {\n type: \"any\" /* NormalizedPropertyType.Any */,\n optionalTypes: null,\n value: null,\n default: undefined,\n observer: null,\n comparer: null,\n reflectIdPrefix: false,\n };\n }\n return null;\n};\nexport const normalizePropertyType = (t) => {\n if (t === \"string\" /* NormalizedPropertyType.String */ || t === String) {\n return \"string\" /* NormalizedPropertyType.String */;\n }\n if (t === \"number\" /* NormalizedPropertyType.Number */ || t === Number) {\n return \"number\" /* NormalizedPropertyType.Number */;\n }\n if (t === \"boolean\" /* NormalizedPropertyType.Boolean */ || t === Boolean) {\n return \"boolean\" /* NormalizedPropertyType.Boolean */;\n }\n if (t === \"object\" /* NormalizedPropertyType.Object */ || t === Object) {\n return \"object\" /* NormalizedPropertyType.Object */;\n }\n if (t === \"array\" /* NormalizedPropertyType.Array */ || t === Array) {\n return \"array\" /* NormalizedPropertyType.Array */;\n }\n if (t === \"function\" /* NormalizedPropertyType.Function */ || t === Function) {\n return \"function\" /* NormalizedPropertyType.Function */;\n }\n if (t === \"any\" /* NormalizedPropertyType.Any */ || t === null || t === undefined) {\n return \"any\" /* NormalizedPropertyType.Any */;\n }\n return \"invalid\" /* NormalizedPropertyType.Invalid */;\n};\nexport const convertValueToType = (value, propName, prop, component) => {\n const type = prop.type;\n const defaultFn = prop.default === undefined\n ? undefined\n : () => safeCallback(`Property \"${propName}\" Default`, prop.default, null, [], component || undefined);\n // try match optional types\n const optionalTypes = prop.optionalTypes;\n if (optionalTypes) {\n for (let i = 0; i < optionalTypes.length; i += 1) {\n if (matchTypeWithValue(optionalTypes[i], value)) {\n return value;\n }\n }\n }\n // for string\n if (type === \"string\" /* NormalizedPropertyType.String */) {\n if (value === null || value === undefined) {\n triggerWarning(`property \"${propName}\" received type-incompatible value: expected <String> but get null value. Used default value instead.`);\n return defaultFn === undefined ? '' : defaultFn();\n }\n if (typeof value === 'object') {\n triggerWarning(`property \"${propName}\" received type-incompatible value: expected <String> but got object-typed value. Force converted.`);\n }\n return String(value);\n }\n // for number\n if (type === \"number\" /* NormalizedPropertyType.Number */) {\n // eslint-disable-next-line no-restricted-globals\n if (isFinite(value))\n return Number(value);\n if (typeof value === 'number') {\n triggerWarning(`property \"${propName}\" received type-incompatible value: expected <Number> but got NaN or Infinity. Used default value instead.`);\n }\n else {\n triggerWarning(`property \"${propName}\" received type-incompatible value: expected <Number> but got non-number value. Used default value instead.`);\n }\n return defaultFn === undefined ? 0 : defaultFn();\n }\n // for boolean\n if (type === \"boolean\" /* NormalizedPropertyType.Boolean */) {\n return !!value;\n }\n // for array\n if (type === \"array\" /* NormalizedPropertyType.Array */) {\n if (Array.isArray(value))\n return value;\n triggerWarning(`property \"${propName}\" received type-incompatible value: expected <Array> but got non-array value. Used default value instead.`);\n return defaultFn === undefined ? [] : defaultFn();\n }\n // for object\n if (type === \"object\" /* NormalizedPropertyType.Object */) {\n if (typeof value === 'object')\n return value;\n triggerWarning(`property \"${propName}\" received type-incompatible value: expected <Object> but got non-object value. Used default value instead.`);\n return defaultFn === undefined ? null : defaultFn();\n }\n // for function\n if (type === \"function\" /* NormalizedPropertyType.Function */) {\n if (typeof value === 'function')\n return value;\n triggerWarning(`property \"${propName}\" received type-incompatible value: expected <Function> but got non-function value. Used default value instead.`);\n // eslint-disable-next-line func-names\n return defaultFn === undefined\n ? function () {\n /* empty */\n }\n : defaultFn();\n }\n // for any-typed, just return the value and avoid undefined\n if (value === undefined)\n return defaultFn === undefined ? null : defaultFn();\n return value;\n};\nexport const matchTypeWithValue = (type, value) => {\n if (type === \"string\" /* NormalizedPropertyType.String */) {\n if (typeof value !== 'string')\n return false;\n }\n else if (type === \"number\" /* NormalizedPropertyType.Number */) {\n if (!Number.isFinite(value))\n return false;\n }\n else if (type === \"boolean\" /* NormalizedPropertyType.Boolean */) {\n if (typeof value !== 'boolean')\n return false;\n }\n else if (type === \"object\" /* NormalizedPropertyType.Object */) {\n if (typeof value !== 'object' || Array.isArray(value))\n return false;\n }\n else if (type === \"array\" /* NormalizedPropertyType.Array */) {\n if (typeof value !== 'object' || !Array.isArray(value))\n return false;\n }\n else if (type === \"function\" /* NormalizedPropertyType.Function */) {\n if (typeof value !== 'function')\n return false;\n }\n else if (value === undefined) {\n return false;\n }\n return true;\n};\nexport var DeepCopyStrategy;\n(function (DeepCopyStrategy) {\n DeepCopyStrategy[DeepCopyStrategy[\"None\"] = 0] = \"None\";\n DeepCopyStrategy[DeepCopyStrategy[\"Simple\"] = 1] = \"Simple\";\n DeepCopyStrategy[DeepCopyStrategy[\"SimpleWithRecursion\"] = 2] = \"SimpleWithRecursion\";\n})(DeepCopyStrategy || (DeepCopyStrategy = {}));\nexport class DataGroupObserverTree {\n constructor(propFields) {\n this.observerTree = { sub: {} };\n this.observers = [];\n this.propFields = propFields;\n }\n cloneSub() {\n const ret = new DataGroupObserverTree(this.propFields);\n if (this.observers.length > 0) {\n ret.observerTree = simpleDeepCopy(this.observerTree);\n ret.observers = this.observers.slice();\n }\n return ret;\n }\n addObserver(func, dataPath) {\n const id = this.observers.length;\n this.observers.push({\n path: dataPath,\n f: func,\n });\n for (let i = 0; i < dataPath.length; i += 1) {\n const singlePath = dataPath[i];\n let cur = this.observerTree;\n let wildcard = false;\n for (let j = 0; j < singlePath.length; j += 1) {\n const pathSlice = singlePath[j];\n if (pathSlice === '**') {\n wildcard = true;\n break;\n }\n if (!cur.sub[pathSlice])\n cur.sub[pathSlice] = { sub: {} };\n cur = cur.sub[pathSlice];\n }\n if (wildcard) {\n if (!cur.wildcard)\n cur.wildcard = [id];\n else\n cur.wildcard.push(id);\n }\n else {\n if (!cur.listener)\n cur.listener = [id];\n else\n cur.listener.push(id);\n }\n }\n }\n}\nconst callObserver = (comp, data, path, f) => {\n const args = new Array(path.length);\n for (let i = 0; i < path.length; i += 1) {\n const singlePath = path[i];\n let cur = data;\n for (let j = 0; j < singlePath.length; j += 1) {\n const slice = singlePath[j];\n if (slice === '**')\n break;\n if (typeof cur === 'object' && cur !== null) {\n cur = cur[slice];\n }\n else {\n cur = undefined;\n break;\n }\n }\n args[i] = cur;\n }\n safeCallback('Data Observer', f, comp.getMethodCaller(), args, comp || undefined);\n};\nconst dfsMarkTriggerBitOnPath = (node, observerStatus) => {\n if (node.listener) {\n for (let i = 0; i < node.listener.length; i += 1) {\n const observerId = node.listener[i];\n observerStatus[observerId] = true;\n }\n }\n if (node.wildcard) {\n for (let i = 0; i < node.wildcard.length; i += 1) {\n const observerId = node.wildcard[i];\n observerStatus[observerId] = true;\n }\n }\n const keys = Object.keys(node.sub);\n for (let i = 0; i < keys.length; i += 1) {\n const k = keys[i];\n dfsMarkTriggerBitOnPath(node.sub[k], observerStatus);\n }\n};\nconst markTriggerBitOnPath = (root, observerStatus, singlePath) => {\n let cur = root;\n let found = true;\n for (let i = 0; i < singlePath.length; i += 1) {\n const slice = singlePath[i];\n if (cur.wildcard) {\n const arr = cur.wildcard;\n for (let i = 0; i < arr.length; i += 1) {\n const observerId = arr[i];\n observerStatus[observerId] = true;\n }\n }\n if (!hasOwnProperty.call(cur.sub, slice)) {\n found = false;\n break;\n }\n cur = cur.sub[slice];\n }\n if (found)\n dfsMarkTriggerBitOnPath(cur, observerStatus);\n};\nconst triggerAndCleanTriggerBit = (observers, observerStatus, comp, data) => {\n for (let i = 0; i < observers.length; i += 1) {\n const { path, f } = observers[i];\n const status = observerStatus[i];\n if (status) {\n observerStatus[i] = false;\n if (comp)\n callObserver(comp, data, path, f);\n }\n }\n};\nexport const getDeepCopyStrategy = (level) => {\n if (level === DeepCopyKind.Simple)\n return 1 /* DeepCopyStrategy.Simple */;\n if (level === DeepCopyKind.SimpleWithRecursion)\n return 2 /* DeepCopyStrategy.SimpleWithRecursion */;\n return 0 /* DeepCopyStrategy.None */;\n};\n/** A data wrapper for data operations such as `setData` */\nexport class DataGroup {\n _$generateInnerData(data) {\n const pureDataPattern = this._$pureDataPattern;\n const dataDeepCopy = this._$dataDeepCopy;\n if (pureDataPattern || dataDeepCopy !== 0 /* DeepCopyStrategy.None */) {\n const innerData = {};\n const keys = Object.keys(data);\n for (let i = 0; i < keys.length; i += 1) {\n const k = keys[i];\n const v = data[k];\n if (pureDataPattern && pureDataPattern.test(k))\n continue;\n if (dataDeepCopy === 0 /* DeepCopyStrategy.None */) {\n innerData[k] = v;\n }\n else if (dataDeepCopy === 2 /* DeepCopyStrategy.SimpleWithRecursion */) {\n innerData[k] = deepCopy(v, true);\n }\n else {\n innerData[k] = simpleDeepCopy(v);\n }\n }\n return innerData;\n }\n return null;\n }\n constructor(associatedComponent, data, pureDataPattern, dataDeepCopy, propertyPassingDeepCopy, reflectToAttributes, observerTree) {\n this._$modelBindingListener = null;\n this._$pendingChanges = [];\n this._$doingUpdates = null;\n this._$comp = associatedComponent;\n this.data = data;\n this._$pureDataPattern = pureDataPattern;\n this._$dataDeepCopy = dataDeepCopy;\n this._$propertyPassingDeepCopy = propertyPassingDeepCopy;\n this._$reflectToAttributes = reflectToAttributes && !!associatedComponent;\n this._$propFields = observerTree.propFields;\n this._$observerTree = observerTree.observerTree;\n this._$observers = observerTree.observers;\n this._$observerStatus = new Array(observerTree.observers.length);\n this.innerData = this._$generateInnerData(data);\n }\n /** Create a simple data group */\n static create(data) {\n return new DataGroup(null, data, null, 0 /* DeepCopyStrategy.None */, 0 /* DeepCopyStrategy.None */, false, new DataGroupObserverTree({}));\n }\n /** Set a callback for every grouped update */\n setUpdateListener(updateListener) {\n this._$updateListener = updateListener;\n }\n /** Replace the underlying data */\n replaceWholeData(data) {\n this.data = data;\n this.innerData = this._$generateInnerData(data);\n }\n /** Add a new common data change to queue */\n replaceDataOnPath(path, newData) {\n this._$pendingChanges.push([path, newData, undefined, undefined]);\n }\n /** Add a new array splice operation to queue */\n spliceArrayDataOnPath(path, index, del, inserts) {\n if (!Array.isArray(inserts)) {\n triggerWarning(`The splice insertion must be a string (on path \"${path.join('.')}\"). The change is ignored.`);\n return;\n }\n this._$pendingChanges.push([path, inserts, index !== null && index !== void 0 ? index : -1, del || 0]);\n }\n /**\n * Add a new property change to queue\n *\n * (Generally designed for template engines.)\n * If the `propName` is a property,\n * the `newData` will be deep-copied according to the `propertyPassingDeepCopy` configuration.\n * Otherwise, it returns false.\n */\n replaceProperty(propName, newData) {\n let data = newData;\n const prop = this._$propFields[propName];\n if (!prop)\n return false;\n if (this._$propertyPassingDeepCopy !== 0 /* DeepCopyStrategy.None */) {\n if (this._$propertyPassingDeepCopy === 2 /* DeepCopyStrategy.SimpleWithRecursion */) {\n data = deepCopy(newData, true);\n }\n else {\n data = simpleDeepCopy(newData);\n }\n }\n this._$pendingChanges.push([[propName], data, true, undefined]);\n return true;\n }\n /** Discard changes in queue and generate a new queue with specified changes */\n setChanges(changes) {\n this._$pendingChanges = changes;\n }\n /** Get the data change queue */\n getChanges() {\n return this._$pendingChanges;\n }\n /**\n * Set a callback when a specified property changes\n *\n * (Generally designed for template engines.)\n */\n setModelBindingListener(propName, listener) {\n if (this._$modelBindingListener) {\n this._$modelBindingListener[propName] = listener;\n }\n else {\n const map = (this._$modelBindingListener = Object.create(null));\n map[propName] = listener;\n }\n }\n /** Apply all changes in queue */\n applyDataUpdates(skipModelListener = false) {\n var _a;\n const propFields = this._$propFields;\n const comp = this._$comp;\n const pureDataPattern = this._$pureDataPattern;\n const dataDeepCopy = this._$dataDeepCopy;\n // handling chained updates if observers are used\n const isChainedUpdates = !!this._$doingUpdates;\n let combinedChanges;\n let propChanges;\n if (this._$observers.length > 0) {\n if (this._$doingUpdates) {\n combinedChanges = this._$doingUpdates.combined;\n propChanges = this._$doingUpdates.prop;\n }\n else {\n this._$doingUpdates = {\n prop: [],\n combined: [],\n count: 0,\n };\n combinedChanges = this._$doingUpdates.combined;\n propChanges = this._$doingUpdates.prop;\n }\n }\n else {\n combinedChanges = [];\n propChanges = [];\n }\n // find all changes\n const changes = this._$pendingChanges;\n this._$pendingChanges = [];\n // apply changes and collect changing information\n for (let i = 0; i < changes.length; i += 1) {\n const change = changes[i];\n const [path, newData, maybeSpliceIndex, maybeSpliceDel] = change;\n const isSplice = maybeSpliceDel !== undefined;\n const propName = String(path[0]);\n const excluded = pureDataPattern ? pureDataPattern.test(propName) : false;\n const prop = propFields[propName];\n let changed = true;\n if (prop && path.length === 1) {\n // do update for 1-level fields\n const oldData = this.data[propName];\n let normalizedSpliceIndex;\n let filteredData;\n if (isSplice) {\n if (Array.isArray(oldData)) {\n const c = change;\n const spliceIndex = maybeSpliceIndex;\n normalizedSpliceIndex =\n spliceIndex >= 0 && spliceIndex < oldData.length ? spliceIndex : oldData.length;\n c[2] = normalizedSpliceIndex;\n oldData.splice(normalizedSpliceIndex, maybeSpliceDel, ...newData);\n }\n else {\n triggerWarning(`An array splice change cannot be applied to a non-array value (on path \"${path.join('.')}\"). The change is ignored.`);\n }\n filteredData = oldData;\n }\n else {\n filteredData = convertValueToType(newData, propName, prop, this._$comp);\n }\n if (!excluded) {\n if (this.innerData) {\n let innerNewData;\n if (dataDeepCopy === 0 /* DeepCopyStrategy.None */) {\n change[1] = innerNewData = filteredData;\n }\n else if (normalizedSpliceIndex !== undefined) {\n innerNewData = this.innerData[propName];\n let inserts;\n if (dataDeepCopy === 2 /* DeepCopyStrategy.SimpleWithRecursion */) {\n change[1] = inserts = deepCopy(newData, true);\n }\n else {\n change[1] = inserts = simpleDeepCopy(newData);\n }\n ;\n innerNewData.splice(normalizedSpliceIndex, maybeSpliceDel, ...inserts);\n }\n else if (dataDeepCopy === 2 /* DeepCopyStrategy.SimpleWithRecursion */) {\n change[1] = innerNewData = deepCopy(filteredData, true);\n }\n else {\n change[1] = innerNewData = simpleDeepCopy(filteredData);\n }\n this.innerData[propName] = innerNewData;\n }\n }\n ;\n this.data[propName] = filteredData;\n if (this._$reflectToAttributes) {\n const be = comp.getBackendElement();\n if (be) {\n let attrValue = filteredData;\n if (prop.reflectIdPrefix) {\n const owner = comp.ownerShadowRoot;\n if (owner) {\n const idPrefix = owner.getHostNode()._$idPrefix;\n if (idPrefix) {\n attrValue = `${idPrefix}--${filteredData}`;\n }\n }\n }\n const attrName = propName.replace(/[A-Z]/g, (c) => `-${c.toLowerCase()}`);\n const type = typeof attrValue;\n if (type === 'boolean') {\n if (filteredData)\n be.setAttribute(attrName, '');\n else\n be.removeAttribute(attrName);\n }\n else if (type === 'object') {\n be.setAttribute(attrName, JSON.stringify(attrValue));\n }\n else {\n be.setAttribute(attrName, attrValue);\n }\n }\n }\n let comparerResult;\n if (!isSplice && maybeSpliceIndex === true) {\n if (prop.comparer) {\n change[2] = undefined;\n comparerResult = !!safeCallback('Property Comparer', prop.comparer, comp, [newData, oldData], comp === null || comp === void 0 ? void 0 : comp.general());\n }\n else {\n comparerResult = oldData !== filteredData;\n }\n changed = comparerResult;\n }\n else {\n comparerResult = oldData !== filteredData;\n }\n if (!excluded && comparerResult) {\n propChanges.push({\n propName,\n prop,\n oldValue: oldData,\n newValue: filteredData,\n skipModelListener,\n });\n }\n }\n else {\n // do update for multi-level fields\n let curData = this.data;\n let curSlice = propName;\n for (let i = 1; i < path.length; i += 1) {\n const nextSlice = path[i];\n if (Number.isFinite(nextSlice)) {\n if (!hasOwnProperty.call(curData, curSlice) ||\n !Array.isArray(curData[curSlice])) {\n ;\n curData[curSlice] = [];\n }\n }\n else {\n if (!hasOwnProperty.call(curData, curSlice) ||\n curData[curSlice] === null ||\n typeof curData[curSlice] !== 'object' ||\n Array.isArray(curData[curSlice])) {\n ;\n curData[curSlice] = {};\n }\n }\n curData = curData[curSlice];\n curSlice = nextSlice;\n }\n let normalizedSpliceIndex;\n if (isSplice) {\n const oldData = curData[curSlice];\n if (Array.isArray(oldData)) {\n const c = change;\n const spliceIndex = maybeSpliceIndex;\n normalizedSpliceIndex =\n spliceIndex >= 0 && spliceIndex < oldData.length ? spliceIndex : oldData.length;\n c[2] = normalizedSpliceIndex;\n oldData.splice(normalizedSpliceIndex, maybeSpliceDel, ...newData);\n }\n else {\n triggerWarning(`An array splice change cannot be applied to a non-array value (on path \"${path.join('.')}\"). The change is ignored.`);\n }\n }\n else {\n ;\n curData[curSlice] = newData;\n }\n if (!excluded && this.innerData) {\n curData = this.innerData;\n curSlice = propName;\n for (let i = 1; i < path.length; i += 1) {\n const nextSlice = path[i];\n if (Number.isFinite(nextSlice)) {\n if (!hasOwnProperty.call(curData, curSlice) ||\n !Array.isArray(curData[curSlice])) {\n ;\n curData[curSlice] = [];\n }\n }\n else {\n if (!hasOwnProperty.call(curData, curSlice) ||\n curData[curSlice] === null ||\n typeof curData[curSlice] !== 'object' ||\n Array.isArray(curData[curSlice])) {\n ;\n curData[curSlice] = {};\n }\n }\n curData = curData[curSlice];\n curSlice = nextSlice;\n }\n let innerNewData;\n if (dataDeepCopy === 0 /* DeepCopyStrategy.None */) {\n change[1] = innerNewData = newData;\n }\n else if (normalizedSpliceIndex !== undefined) {\n innerNewData = curData[curSlice];\n let inserts;\n if (dataDeepCopy === 2 /* DeepCopyStrategy.SimpleWithRecursion */) {\n change[1] = inserts = deepCopy(newData, true);\n }\n else {\n change[1] = inserts = simpleDeepCopy(newData);\n }\n ;\n innerNewData.splice(normalizedSpliceIndex, maybeSpliceDel, ...inserts);\n }\n else if (dataDeepCopy === 2 /* DeepCopyStrategy.SimpleWithRecursion */) {\n change[1] = innerNewData = deepCopy(newData, true);\n }\n else {\n change[1] = innerNewData = simpleDeepCopy(newData);\n }\n ;\n curData[curSlice] = innerNewData;\n }\n if (!excluded && prop) {\n // NOTE for prop observers, oldVal will be undefined when doing a sub-path update\n propChanges.push({\n propName,\n prop,\n oldValue: undefined,\n newValue: newData,\n skipModelListener: skipModelListener || false,\n });\n }\n }\n markTriggerBitOnPath(this._$observerTree, this._$observerStatus, path);\n if (!excluded && changed) {\n combinedChanges.push(change);\n }\n if (this._$doingUpdates) {\n this._$doingUpdates.count += 1;\n }\n }\n // trigger data observers\n if (isChainedUpdates)\n return;\n if (this._$doingUpdates) {\n let changesCount;\n do {\n changesCount = this._$doingUpdates.count;\n triggerAndCleanTriggerBit(this._$observers, this._$observerStatus, comp, this.data);\n } while (changesCount !== this._$doingUpdates.count);\n this._$doingUpdates = null;\n }\n // tell template engine what changed\n (_a = this._$updateListener) === null || _a === void 0 ? void 0 : _a.call(this, this.innerData || this.data, combinedChanges);\n // trigger prop observers (to simulating legacy behaviors)\n if (comp) {\n for (let i = 0; i < propChanges.length; i += 1) {\n const { propName, prop, oldValue, newValue, skipModelListener } = propChanges[i];\n if (!skipModelListener && this._$modelBindingListener) {\n const listener = this._$modelBindingListener[propName];\n if (listener)\n listener(newValue);\n }\n if (prop.observer) {\n safeCallback('Property Observer', prop.observer, comp.getMethodCaller(), [newValue, oldValue], comp);\n }\n if (comp._$mutationObserverTarget) {\n MutationObserverTarget.callAttrObservers(comp, {\n type: 'properties',\n target: comp,\n propertyName: propName,\n });\n }\n }\n }\n }\n}\n//# sourceMappingURL=data_proxy.js.map","import { addTimelineEvent, performanceMeasureEnd, performanceMeasureStart } from './devtool';\nimport { FuncArrWithMeta } from './func_arr';\nimport { ENV } from './global_options';\nimport { isComponent, isShadowRoot } from './type_symbol';\n/**\n * Event bubbling control\n */\nexport var EventBubbleStatus;\n(function (EventBubbleStatus) {\n EventBubbleStatus[EventBubbleStatus[\"Normal\"] = 0] = \"Normal\";\n EventBubbleStatus[EventBubbleStatus[\"NoDefault\"] = 1] = \"NoDefault\";\n})(EventBubbleStatus || (EventBubbleStatus = {}));\nlet relativeTimeStamp = Date.now();\nlet prevTimeStamp = relativeTimeStamp;\nconst getCurrentTimeStamp = () => {\n const ts = Date.now();\n if (ts < prevTimeStamp) {\n relativeTimeStamp += ts - prevTimeStamp;\n }\n prevTimeStamp = ts;\n return ts - relativeTimeStamp;\n};\nexport var MutLevel;\n(function (MutLevel) {\n MutLevel[MutLevel[\"None\"] = 0] = \"None\";\n MutLevel[MutLevel[\"Mut\"] = 1] = \"Mut\";\n MutLevel[MutLevel[\"Final\"] = 2] = \"Final\";\n})(MutLevel || (MutLevel = {}));\nexport var FinalChanged;\n(function (FinalChanged) {\n FinalChanged[FinalChanged[\"NotChanged\"] = 0] = \"NotChanged\";\n FinalChanged[FinalChanged[\"Failed\"] = 1] = \"Failed\";\n FinalChanged[FinalChanged[\"None\"] = 2] = \"None\";\n FinalChanged[FinalChanged[\"Final\"] = 3] = \"Final\";\n FinalChanged[FinalChanged[\"Mut\"] = 4] = \"Mut\";\n})(FinalChanged || (FinalChanged = {}));\n/** The target of an event */\nexport class EventTarget {\n constructor() {\n this.listeners = Object.create(null);\n this.captureListeners = null;\n }\n addListener(name, func, options = {}) {\n // eslint-disable-next-line no-nested-ternary\n const mutLevel = options.final ? 2 /* MutLevel.Final */ : options.mutated ? 1 /* MutLevel.Mut */ : 0 /* MutLevel.None */;\n let listeners;\n if (options.capture || options.useCapture) {\n if (this.captureListeners) {\n listeners = this.captureListeners;\n }\n else {\n listeners = Object.create(null);\n this.captureListeners = listeners;\n }\n }\n else {\n listeners = this.listeners;\n }\n let efa;\n let initialized;\n if (listeners[name]) {\n initialized = true;\n efa = listeners[name];\n }\n else {\n initialized = false;\n efa = listeners[name] = {\n mutCount: 0,\n finalCount: 0,\n funcArr: new FuncArrWithMeta('listener'),\n };\n }\n efa.funcArr.add(func, mutLevel);\n if (mutLevel === 2 /* MutLevel.Final */) {\n efa.finalCount += 1;\n return initialized && efa.finalCount !== 1 ? 0 /* FinalChanged.NotChanged */ : 3 /* FinalChanged.Final */;\n }\n if (mutLevel === 1 /* MutLevel.Mut */) {\n efa.mutCount += 1;\n return initialized && !(efa.mutCount === 1 && efa.finalCount === 0)\n ? 0 /* FinalChanged.NotChanged */\n : 4 /* FinalChanged.Mut */;\n }\n return initialized ? 0 /* FinalChanged.NotChanged */ : 2 /* FinalChanged.None */;\n }\n removeListener(name, func, options = {}) {\n const listeners = options.capture || options.useCapture ? this.captureListeners : this.listeners;\n if (!listeners)\n return 1 /* FinalChanged.Failed */;\n const efa = listeners[name];\n if (!efa)\n return 1 /* FinalChanged.Failed */;\n const mutLevel = efa.funcArr.remove(func);\n if (mutLevel === null)\n return 1 /* FinalChanged.Failed */;\n if (mutLevel === 2 /* MutLevel.Final */) {\n efa.finalCount -= 1;\n // eslint-disable-next-line no-nested-ternary\n return efa.finalCount !== 0\n ? 0 /* FinalChanged.NotChanged */\n : efa.mutCount > 0\n ? 4 /* FinalChanged.Mut */\n : 2 /* FinalChanged.None */;\n }\n if (mutLevel === 1 /* MutLevel.Mut */) {\n efa.mutCount -= 1;\n return efa.mutCount !== 0 || efa.finalCount !== 0\n ? 0 /* FinalChanged.NotChanged */\n : 2 /* FinalChanged.None */;\n }\n return 0 /* FinalChanged.NotChanged */;\n }\n}\nexport class Event {\n constructor(name, detail, options = {}) {\n const ts = getCurrentTimeStamp();\n this._$eventName = this.type = name;\n this.timeStamp = ts;\n this.detail = detail;\n this.bubbles = options.bubbles || false;\n this.composed = options.composed || false;\n this._$capturePhase = options.capturePhase || false;\n this._$eventBubblingControl = {\n stopped: false,\n mutated: false,\n noDefault: false,\n };\n this._$originalEvent = options.originalEvent;\n this._$dispatched = false;\n this._$handleListenerReturn = options.handleListenerReturn;\n if (options.extraFields) {\n Object.assign(this, options.extraFields);\n }\n }\n getEventBubbleStatus() {\n if (this._$eventBubblingControl.noDefault)\n return 1 /* EventBubbleStatus.NoDefault */;\n return 0 /* EventBubbleStatus.Normal */;\n }\n wrapShadowedEvent(targetCaller, mark, currentTargetCaller) {\n const ret = Object.create(this);\n ret.target = targetCaller;\n ret.mark = mark;\n ret.currentTarget = currentTargetCaller;\n return ret;\n }\n getEventName() {\n return this._$eventName;\n }\n getOriginalEvent() {\n return this._$originalEvent;\n }\n preventDefault() {\n this._$eventBubblingControl.noDefault = true;\n }\n defaultPrevented() {\n return this._$eventBubblingControl.noDefault;\n }\n stopPropagation() {\n this._$eventBubblingControl.stopped = true;\n }\n propagationStopped() {\n return this._$eventBubblingControl.stopped;\n }\n markMutated() {\n this._$eventBubblingControl.mutated = true;\n }\n mutatedMarked() {\n return this._$eventBubblingControl.mutated;\n }\n listenerReturnHandler() {\n return this._$handleListenerReturn;\n }\n callListener(currentTarget, mark, target, isCapture) {\n const evName = this._$eventName;\n const eventTarget = currentTarget._$eventTarget;\n if (!eventTarget)\n return;\n const listeners = isCapture ? eventTarget.captureListeners : eventTarget.listeners;\n if (!listeners)\n return;\n const efa = listeners[evName];\n if (!efa)\n return;\n const skipMut = this.mutatedMarked();\n // eslint-disable-next-line @typescript-eslint/no-unsafe-assignment\n const targetCaller = isComponent(target) ? target.getMethodCaller() || target : target;\n // eslint-disable-next-line @typescript-eslint/no-unsafe-assignment\n const currentTargetCaller = isComponent(currentTarget)\n ? currentTarget.getMethodCaller() || currentTarget\n : currentTarget;\n const ev = this.wrapShadowedEvent(targetCaller, mark, currentTargetCaller);\n const ret = efa.funcArr.call(currentTargetCaller, [ev], (mulLevel) => !skipMut || mulLevel !== 1 /* MutLevel.Mut */, isComponent(target) ? target : undefined, this._$handleListenerReturn);\n if (ret === false || efa.finalCount > 0) {\n ev.stopPropagation();\n ev.preventDefault();\n }\n else if (efa.mutCount > 0) {\n ev.markMutated();\n }\n }\n dispatch(target, externalTarget) {\n if (this._$dispatched) {\n throw new Error('Event cannot be dispatched twice');\n }\n if (ENV.DEV) {\n addTimelineEvent(this._$eventName, { event: this });\n performanceMeasureStart('event.dispatch');\n }\n this._$dispatched = true;\n const crossShadow = this.composed;\n const bubbles = this.bubbles;\n const inExternalOnly = externalTarget && !crossShadow;\n const eventBubblingControl = this._$eventBubblingControl;\n const forEachBubblePath = (target, f) => {\n const recShadow = (target) => {\n let currentTarget = target;\n const mark = target.collectMarks();\n for (;;) {\n if (f(currentTarget, target, mark) === false)\n return null;\n let next;\n if (crossShadow) {\n if (isShadowRoot(currentTarget))\n return currentTarget.getHostNode();\n if (currentTarget.containingSlot === null)\n return null;\n if (currentTarget.containingSlot) {\n next = recShadow(currentTarget.containingSlot);\n }\n else {\n next = currentTarget.parentNode;\n while (next === null || next === void 0 ? void 0 : next._$inheritSlots) {\n next = next.parentNode;\n }\n }\n }\n else {\n next = currentTarget.parentNode;\n }\n if (!next)\n return null;\n currentTarget = next;\n }\n };\n let cur = target;\n for (;;) {\n const next = recShadow(cur);\n if (!next)\n break;\n cur = next;\n }\n };\n // capture phase\n if (this._$capturePhase && !eventBubblingControl.stopped && !inExternalOnly) {\n const bubblingPath = [];\n forEachBubblePath(target, (currentTarget, target, mark) => {\n bubblingPath.push([currentTarget, target, mark]);\n });\n for (let i = bubblingPath.length - 1; i >= 0; i -= 1) {\n const [currentTarget, target, mark] = bubblingPath[i];\n if (currentTarget._$eventTarget) {\n this.callListener(currentTarget, mark, target, true);\n if (eventBubblingControl.stopped)\n break;\n }\n }\n }\n // bubble phase in external component\n if (!eventBubblingControl.stopped && externalTarget) {\n if (isComponent(target) && target._$external) {\n ;\n target.shadowRoot.handleEvent(externalTarget, this);\n }\n }\n // bubble phase\n if (!eventBubblingControl.stopped && !inExternalOnly) {\n let atTarget = true;\n forEachBubblePath(target, (currentTarget, target, mark) => {\n if (!atTarget && isComponent(currentTarget) && currentTarget._$external) {\n const sr = currentTarget.shadowRoot;\n sr.handleEvent(sr.slot, this);\n }\n atTarget = false;\n if (currentTarget._$eventTarget) {\n this.callListener(currentTarget, mark, target, false);\n }\n return bubbles && !eventBubblingControl.stopped;\n });\n }\n if (ENV.DEV)\n performanceMeasureEnd();\n }\n static dispatchEvent(target, event) {\n return event.dispatch(target);\n }\n static dispatchExternalEvent(component, target, event) {\n return event.dispatch(component, target);\n }\n static triggerEvent(target, name, detail, options) {\n const ev = new Event(name, detail, options);\n Event.dispatchEvent(target, ev);\n }\n static triggerExternalEvent(component, target, name, detail, options) {\n const ev = new Event(name, detail, options);\n Event.dispatchExternalEvent(component, target, ev);\n }\n}\n//# sourceMappingURL=event.js.map","import { isComponent, isElement, isShadowRoot, isVirtualNode } from './type_symbol';\nvar SegmentRelation;\n(function (SegmentRelation) {\n SegmentRelation[SegmentRelation[\"Child\"] = 0] = \"Child\";\n SegmentRelation[SegmentRelation[\"Descendant\"] = 1] = \"Descendant\";\n SegmentRelation[SegmentRelation[\"CrossShadowDescendant\"] = 2] = \"CrossShadowDescendant\";\n})(SegmentRelation || (SegmentRelation = {}));\n// eslint-disable-next-line arrow-body-style\nconst getOwnerSpace = (node) => {\n var _a;\n return (_a = node.ownerShadowRoot) === null || _a === void 0 ? void 0 : _a.getHostNode().getRootBehavior().ownerSpace;\n};\n/** A parsed selector that can be used in selector queries */\nexport class ParsedSelector {\n static _$parseSegment(str, relation) {\n const matches = /^(#[_a-zA-Z][-_a-zA-Z0-9:]*|)((?:\\.-?[_a-zA-Z][-_a-zA-Z0-9]*)+|)$/.exec(str);\n if (!matches)\n return null;\n const id = matches[1].slice(1);\n const classes = matches[2].split('.');\n classes.shift();\n if (!id && !classes.length)\n return null;\n return {\n id,\n classes,\n relation,\n };\n }\n constructor(str) {\n this.unions = [];\n const union = String(str || '').split(',');\n for (let i = 0; i < union.length; i += 1) {\n const segments = union[i].split(/( |\\t|>+)/g);\n const parsedSegs = [];\n let relation = 1 /* SegmentRelation.Descendant */;\n let j = 0;\n for (; j < segments.length; j += 1) {\n const seg = segments[j];\n if (!seg || seg === ' ' || seg === '\\t' || seg === '>>')\n continue;\n if (seg[0] === '>') {\n if (relation !== 1 /* SegmentRelation.Descendant */)\n break;\n if (seg.length === 3) {\n relation = 2 /* SegmentRelation.CrossShadowDescendant */;\n }\n else {\n relation = 0 /* SegmentRelation.Child */;\n }\n continue;\n }\n const parsedSeg = ParsedSelector._$parseSegment(seg, relation);\n relation = 1 /* SegmentRelation.Descendant */;\n if (!parsedSeg)\n break;\n parsedSegs.push(parsedSeg);\n }\n if (j !== segments.length)\n continue;\n if (parsedSegs.length)\n this.unions.push(parsedSegs);\n }\n }\n /** Whether the selector is empty */\n isEmpty() {\n return this.unions.length === 0;\n }\n static _$testSelectorSegment(root, ownerSpace, node, segments, offset, relation) {\n var _a;\n if (node === root)\n return false;\n const segment = segments[offset];\n // test whether current node matches\n let match = true;\n if (getOwnerSpace(node) !== ownerSpace)\n match = false;\n else if (segment.id && segment.id !== node.id)\n match = false;\n const classes = segment.classes;\n for (let i = 0; match && i < classes.length; i += 1) {\n if (!((_a = node.classList) === null || _a === void 0 ? void 0 : _a.contains(classes[i])))\n match = false;\n }\n if (!match && relation === 0 /* SegmentRelation.Child */)\n return false;\n let nextNode = node;\n if (match && offset === 0) {\n // if matches the first segment, check whether root is in the same shadow tree\n if (root === null)\n return true;\n for (nextNode = nextNode.parentNode; nextNode; nextNode = nextNode.parentNode) {\n if (nextNode === root)\n return true;\n }\n if (relation !== 2 /* SegmentRelation.CrossShadowDescendant */)\n return false;\n nextNode = node;\n match = false;\n }\n // check whether ancestors matches\n const nextRelation = match ? segment.relation : relation;\n do {\n if (!nextNode.parentNode) {\n if (nextRelation === 2 /* SegmentRelation.CrossShadowDescendant */) {\n nextNode = isShadowRoot(nextNode) ? nextNode.getHostNode() : null;\n }\n else if (relation === 2 /* SegmentRelation.CrossShadowDescendant */) {\n match = false;\n nextNode = isShadowRoot(nextNode) ? nextNode.getHostNode() : null;\n }\n else {\n nextNode = null;\n }\n }\n else {\n nextNode = nextNode.parentNode;\n }\n if (nextNode === root)\n nextNode = null;\n } while (isVirtualNode(nextNode));\n if (!nextNode)\n return false;\n if (match) {\n // if matches, try match ancestors\n const matchRes = ParsedSelector._$testSelectorSegment(root, ownerSpace, nextNode, segments, offset - 1, nextRelation);\n if (matchRes)\n return true;\n if (relation !== 2 /* SegmentRelation.CrossShadowDescendant */)\n return false;\n }\n return ParsedSelector._$testSelectorSegment(root, ownerSpace, nextNode, segments, offset, relation);\n }\n /**\n * Test whether the specified node matches the selector\n *\n * If `root` is specified, than the selector is match inside this subtree;\n * otherwise it match in the whole tree.\n */\n testSelector(root, node) {\n if (isVirtualNode(node))\n return false;\n const union = this.unions;\n let ownerSpace;\n if (root !== null) {\n ownerSpace = getOwnerSpace(root) || getOwnerSpace(node);\n }\n else {\n ownerSpace = getOwnerSpace(node);\n }\n if (ownerSpace === undefined)\n return false;\n for (let i = 0; i < union.length; i += 1) {\n const segments = union[i];\n const matched = ParsedSelector._$testSelectorSegment(root, ownerSpace, node, segments, segments.length - 1, 0 /* SegmentRelation.Child */);\n if (matched)\n return true;\n }\n return false;\n }\n /** Queries an element or elements that matches this selector */\n query(root, findOne) {\n const ret = [];\n const rec = (root, node, findOne) => {\n if (this.testSelector(root, node)) {\n if (findOne)\n return node;\n ret.push(node);\n }\n if (isComponent(node)) {\n const shadowRoot = node.getShadowRoot();\n if (shadowRoot) {\n const r = rec(root, shadowRoot, findOne);\n if (r && findOne) {\n return r;\n }\n }\n }\n const children = node.childNodes;\n for (let i = 0; i < children.length; i += 1) {\n const child = children[i];\n if (isElement(child)) {\n const r = rec(root, child, findOne);\n if (r && findOne) {\n return r;\n }\n }\n }\n return null;\n };\n const r = rec(root, root, findOne);\n if (findOne)\n return r;\n return ret;\n }\n}\n//# sourceMappingURL=selector.js.map","import { BM, } from './backend';\nimport { performanceMeasureEnd, performanceMeasureStart } from './devtool';\nimport { Event, EventTarget, } from './event';\nimport { ENV, globalOptions } from './global_options';\nimport { MutationObserverTarget } from './mutation_observer';\nimport { ParsedSelector } from './selector';\nimport { ELEMENT_SYMBOL, isComponent, isElement, isNativeNode, isShadowRoot, isVirtualNode, } from './type_symbol';\n/**\n * The \"style\" attribute and class list segments\n *\n * This allows different modules set the \"style\" attribute or the class list of an element\n * without overriding each other.\n * The final value is the concat of all segments.\n * When calling `setNodeStyle` or `setNodeClass` on an element,\n * a segment can be specified.\n */\nexport var StyleSegmentIndex;\n(function (StyleSegmentIndex) {\n /** The main style segment, generally managed by the template engine (or manually set) */\n StyleSegmentIndex[StyleSegmentIndex[\"MAIN\"] = 0] = \"MAIN\";\n /** The template style segment, preserved for template engine */\n StyleSegmentIndex[StyleSegmentIndex[\"TEMPLATE_EXTRA\"] = 1] = \"TEMPLATE_EXTRA\";\n /** The animation style segment, preserved for temporary transition */\n StyleSegmentIndex[StyleSegmentIndex[\"ANIMATION_EXTRA\"] = 2] = \"ANIMATION_EXTRA\";\n /** The temporary style segment, preserved for high priority styles */\n StyleSegmentIndex[StyleSegmentIndex[\"TEMP_EXTRA\"] = 3] = \"TEMP_EXTRA\";\n})(StyleSegmentIndex || (StyleSegmentIndex = {}));\nconst DESTROYED_SHADOW_BACKEND_CONTEXT = { mode: 1 /* BackendMode.Shadow */, destroyed: true };\nconst DESTROYED_COMPOSED_BACKEND_CONTEXT = { mode: 2 /* BackendMode.Composed */, destroyed: true };\nconst DESTROYED_DOMLIKE_BACKEND_CONTEXT = { mode: 3 /* BackendMode.Domlike */, destroyed: true };\n/**\n * A general element\n *\n * An element can be a `NativeNode` , a `Component` , or a `VirtualNode` .\n */\nexport class Element {\n /* istanbul ignore next */\n constructor() {\n throw new Error('Element cannot be constructed directly');\n }\n /* @internal */\n _$initialize(virtual, backendElement, owner, nodeTreeContext) {\n this._$backendElement = backendElement;\n this._$destroyOnDetach = false;\n this._$nodeTreeContext = nodeTreeContext;\n this._$nodeId = '';\n this._$nodeAttributes = null;\n this._$nodeSlot = '';\n this._$slotName = null;\n this._$slotElement = null;\n this._$slotValues = null;\n this._$subtreeSlotStart = null;\n this._$subtreeSlotEnd = null;\n this._$inheritSlots = false;\n this._$placeholderHandlerRemover = undefined;\n this._$virtual = virtual;\n this.dataset = {};\n this._$marks = null;\n this._$attached = false;\n this.classList = null;\n this._$styleSegments = [];\n this.parentNode = null;\n this.parentIndex = -1;\n this.childNodes = [];\n this.slotNodes = undefined;\n this.ownerShadowRoot = owner;\n this._$mutationObserverTarget = null;\n this._$eventTarget = new EventTarget();\n }\n get $$() {\n return this._$backendElement;\n }\n get id() {\n return this._$nodeId;\n }\n set id(x) {\n var _a;\n const newId = String(x);\n if (this._$nodeId === newId)\n return;\n this._$nodeId = newId;\n if (this.ownerShadowRoot) {\n const host = this.ownerShadowRoot.getHostNode();\n this.ownerShadowRoot._$markIdCacheDirty();\n if (host.getComponentOptions().writeIdToDOM) {\n const idPrefix = host._$idPrefix;\n const val = idPrefix ? `${idPrefix}--${newId}` : newId;\n const be = this._$backendElement;\n if (be) {\n if (ENV.DEV)\n performanceMeasureStart('backend.setId');\n if (BM.DOMLIKE || (BM.DYNAMIC && this.getBackendMode() === 3 /* BackendMode.Domlike */)) {\n ;\n be.id = val;\n }\n else {\n ;\n be.setId(val);\n }\n if (ENV.DEV)\n performanceMeasureEnd();\n }\n }\n }\n if (globalOptions.writeExtraInfoToAttr) {\n (_a = this._$backendElement) === null || _a === void 0 ? void 0 : _a.setAttribute('exparser:info-attr-id', newId);\n }\n if (this._$mutationObserverTarget) {\n MutationObserverTarget.callAttrObservers(this, {\n type: 'properties',\n target: this,\n attributeName: 'id',\n });\n }\n }\n get slot() {\n return this._$nodeSlot;\n }\n set slot(x) {\n const newSlot = String(x);\n const oldSlot = this._$nodeSlot;\n if (oldSlot === newSlot)\n return;\n /* istanbul ignore if */\n if (this._$inheritSlots) {\n throw new Error('slots-inherited nodes do not support \"slot\" attribute.');\n }\n this._$nodeSlot = newSlot;\n const slotParentShadowRoot = Element._$getParentHostShadowRoot(this.parentNode);\n if (slotParentShadowRoot) {\n const slotMode = slotParentShadowRoot.getSlotMode();\n /* istanbul ignore if */\n if (slotMode === 3 /* SlotMode.Dynamic */) {\n throw new Error('nodes inside dynamic slots should change binding slots through Element#setSlotElement.');\n }\n /* istanbul ignore if */\n if (slotMode === 0 /* SlotMode.Direct */) {\n throw new Error('nodes inside direct slots should not change slot name.');\n }\n const slotUpdater = Element._$updateSubtreeSlotNodes(this.parentNode, [this], slotParentShadowRoot, slotParentShadowRoot, this.parentIndex);\n slotUpdater === null || slotUpdater === void 0 ? void 0 : slotUpdater.removeSlotNodes();\n const oldSlot = this.containingSlot;\n slotUpdater === null || slotUpdater === void 0 ? void 0 : slotUpdater.updateContainingSlot();\n const newSlot = this.containingSlot;\n Element.insertChildReassign(this.parentNode, this, oldSlot, newSlot, this.parentIndex + 1);\n slotUpdater === null || slotUpdater === void 0 ? void 0 : slotUpdater.insertSlotNodes();\n }\n if (this._$mutationObserverTarget) {\n MutationObserverTarget.callAttrObservers(this, {\n type: 'properties',\n target: this,\n attributeName: 'slot',\n });\n }\n }\n get attributes() {\n const ret = [];\n if (this._$nodeAttributes) {\n Object.entries(this._$nodeAttributes).forEach(([name, value]) => {\n ret.push({\n name,\n value,\n });\n });\n }\n return ret;\n }\n get class() {\n if (this.classList) {\n return this.classList.getClassNames(0 /* StyleSegmentIndex.MAIN */);\n }\n return '';\n }\n set class(classNames) {\n this.setNodeClass(classNames, 0 /* StyleSegmentIndex.MAIN */);\n }\n get style() {\n return this._$styleSegments[0 /* StyleSegmentIndex.MAIN */] || '';\n }\n set style(styleText) {\n this.setNodeStyle(styleText, 0 /* StyleSegmentIndex.MAIN */);\n }\n // eslint-disable-next-line class-methods-use-this\n asTextNode() {\n return null;\n }\n asElement() {\n return this;\n }\n asNativeNode() {\n if (isNativeNode(this)) {\n return this;\n }\n return null;\n }\n asVirtualNode() {\n if (isVirtualNode(this)) {\n return this;\n }\n return null;\n }\n asInstanceOf(componentDefinition) {\n if (isComponent(this)) {\n return this.asInstanceOf(componentDefinition);\n }\n return null;\n }\n /** Get the backend context */\n getBackendContext() {\n const context = this._$nodeTreeContext;\n if (BM.SHADOW) {\n if (context === DESTROYED_SHADOW_BACKEND_CONTEXT)\n return null;\n }\n else if (BM.COMPOSED) {\n if (context === DESTROYED_COMPOSED_BACKEND_CONTEXT)\n return null;\n }\n else if (BM.DOMLIKE) {\n if (context === DESTROYED_DOMLIKE_BACKEND_CONTEXT)\n return null;\n }\n else {\n if (context === DESTROYED_SHADOW_BACKEND_CONTEXT)\n return null;\n if (context === DESTROYED_COMPOSED_BACKEND_CONTEXT)\n return null;\n if (context === DESTROYED_DOMLIKE_BACKEND_CONTEXT)\n return null;\n }\n return context;\n }\n /** Get the backend mode */\n getBackendMode() {\n return this._$nodeTreeContext.mode;\n }\n /** Get the backend element */\n getBackendElement() {\n return this._$backendElement;\n }\n /** Destroy the backend element */\n destroyBackendElement() {\n if (this._$backendElement) {\n if (!(BM.DOMLIKE || (BM.DYNAMIC && this.getBackendMode() === 3 /* BackendMode.Domlike */))) {\n if (ENV.DEV)\n performanceMeasureStart('backend.release');\n this._$backendElement.release();\n if (ENV.DEV)\n performanceMeasureEnd();\n }\n this._$backendElement = null;\n }\n if (BM.COMPOSED || (BM.DYNAMIC && this.getBackendMode() === 2 /* BackendMode.Composed */)) {\n this._$nodeTreeContext = DESTROYED_COMPOSED_BACKEND_CONTEXT;\n }\n else if (BM.DOMLIKE || (BM.DYNAMIC && this.getBackendMode() === 3 /* BackendMode.Domlike */)) {\n this._$nodeTreeContext = DESTROYED_DOMLIKE_BACKEND_CONTEXT;\n }\n else {\n this._$nodeTreeContext = DESTROYED_SHADOW_BACKEND_CONTEXT;\n }\n }\n /** Destroy the backend element on next detach */\n destroyBackendElementOnDetach() {\n this._$destroyOnDetach = true;\n }\n /** Cancel destroying backend element on detach */\n cancelDestroyBackendElementOnDetach() {\n this._$destroyOnDetach = false;\n }\n /** Get whether the node is virtual or not */\n isVirtual() {\n return this._$virtual;\n }\n /** Set the node class */\n setNodeClass(classNames, index = 0 /* StyleSegmentIndex.MAIN */) {\n var _a;\n if (ENV.DEV)\n performanceMeasureStart('backend.setClass');\n const changed = (_a = this.classList) === null || _a === void 0 ? void 0 : _a.setClassNames(classNames, index);\n if (ENV.DEV)\n performanceMeasureEnd();\n if (changed && this._$mutationObserverTarget) {\n MutationObserverTarget.callAttrObservers(this, {\n type: 'properties',\n target: this,\n attributeName: 'class',\n });\n }\n }\n /** Toggle the node class */\n toggleNodeClass(classNames, force, index = 0 /* StyleSegmentIndex.MAIN */) {\n var _a;\n if (ENV.DEV)\n performanceMeasureStart('backend.setClass');\n const changed = (_a = this.classList) === null || _a === void 0 ? void 0 : _a.toggle(classNames, force, index);\n if (ENV.DEV)\n performanceMeasureEnd();\n if (changed && this._$mutationObserverTarget) {\n MutationObserverTarget.callAttrObservers(this, {\n type: 'properties',\n target: this,\n attributeName: 'class',\n });\n }\n }\n /** Set the node style */\n setNodeStyle(styleSegment, index = 0) {\n if (this._$styleSegments[index] === styleSegment)\n return;\n this._$styleSegments[index] = styleSegment;\n const style = this._$styleSegments.join(';');\n if (ENV.DEV)\n performanceMeasureStart('backend.setStyle');\n if (this._$backendElement) {\n if (BM.DOMLIKE || (BM.DYNAMIC && this.getBackendMode() === 3 /* BackendMode.Domlike */)) {\n ;\n this._$backendElement.setAttribute('style', style);\n }\n else {\n ;\n this._$backendElement.setStyle(style);\n }\n }\n if (ENV.DEV)\n performanceMeasureEnd();\n if (this._$mutationObserverTarget) {\n MutationObserverTarget.callAttrObservers(this, {\n type: 'properties',\n target: this,\n attributeName: 'style',\n });\n }\n }\n static checkAndCallAttached(node) {\n const callFunc = function callFunc(node) {\n if (isElement(node) && !node._$attached) {\n node._$attached = true;\n if (isComponent(node)) {\n node.triggerLifetime('attached', []);\n if (node._$relation) {\n node._$relation.triggerLinkEvent(2 /* RelationType.ParentNonVirtualNode */, false);\n node._$relation.triggerLinkEvent(4 /* RelationType.ParentComponent */, false);\n node._$relation.triggerLinkEvent(0 /* RelationType.Ancestor */, false);\n }\n if (node._$mutationObserverTarget) {\n MutationObserverTarget.callAttachObservers(node, {\n type: 'attachStatus',\n target: node,\n status: 'attached',\n });\n }\n const shadowRoot = node.getShadowRoot();\n if (shadowRoot)\n callFunc(shadowRoot);\n }\n const childNodes = node.childNodes;\n for (let i = 0; i < childNodes.length; i += 1) {\n callFunc(childNodes[i]);\n }\n }\n };\n callFunc(node);\n }\n static checkAndCallDetached(node) {\n const destroyQueue = [];\n const callFunc = function callFunc(node) {\n if (node._$destroyOnDetach) {\n // Destroy later to avoid missing backend elements\n destroyQueue.push(node);\n }\n if (isElement(node) && node._$attached) {\n if (isComponent(node)) {\n node.triggerLifetime('beforeDetach', []);\n }\n node.childNodes.forEach(callFunc);\n if (isComponent(node)) {\n const f = node._$placeholderHandlerRemover;\n if (f)\n f();\n const shadowRoot = node.getShadowRoot();\n if (shadowRoot)\n callFunc(shadowRoot);\n node._$attached = false;\n node.triggerLifetime('detached', []);\n if (node._$relation) {\n node._$relation.triggerLinkEvent(2 /* RelationType.ParentNonVirtualNode */, true);\n node._$relation.triggerLinkEvent(4 /* RelationType.ParentComponent */, true);\n node._$relation.triggerLinkEvent(0 /* RelationType.Ancestor */, true);\n }\n if (node._$mutationObserverTarget) {\n MutationObserverTarget.callAttachObservers(node, {\n type: 'attachStatus',\n target: node,\n status: 'detached',\n });\n }\n }\n else {\n node._$attached = false;\n }\n }\n };\n callFunc(node);\n for (let i = 0; i < destroyQueue.length; i += 1) {\n destroyQueue[i].destroyBackendElement();\n }\n }\n static checkAndCallMoved(node) {\n const callFunc = function callFunc(node) {\n if (isElement(node) && node._$attached) {\n node.childNodes.forEach(callFunc);\n if (isComponent(node)) {\n const shadowRoot = node.getShadowRoot();\n if (shadowRoot)\n callFunc(shadowRoot);\n node.triggerLifetime('moved', []);\n if (node._$relation) {\n node._$relation.triggerLinkEvent(2 /* RelationType.ParentNonVirtualNode */, false);\n node._$relation.triggerLinkEvent(4 /* RelationType.ParentComponent */, false);\n node._$relation.triggerLinkEvent(0 /* RelationType.Ancestor */, false);\n }\n }\n }\n };\n callFunc(node);\n }\n static checkChildObservers(node, type, child) {\n var _a;\n const observer = node._$mutationObserverTarget;\n if (observer && (!((_a = observer.childObservers) === null || _a === void 0 ? void 0 : _a.empty) || observer.hasSubtreeListeners())) {\n const childList = [child];\n let childEventObj;\n if (type === 'add') {\n childEventObj = {\n type: 'childList',\n target: node,\n addedNodes: childList,\n };\n }\n else if (type === 'remove') {\n childEventObj = {\n type: 'childList',\n target: node,\n removedNodes: childList,\n };\n }\n else {\n childEventObj = {\n type: 'childList',\n target: node,\n addedNodes: childList,\n removedNodes: childList,\n };\n }\n MutationObserverTarget.callChildObservers(node, childEventObj);\n }\n }\n /**\n * Get whether a node has any subtree `MutationObserver` attached to it\n *\n * If there is, then tree update may have more performance impact.\n */\n static hasSubtreeMutationObservers(node) {\n var _a;\n return ((_a = node._$mutationObserverTarget) === null || _a === void 0 ? void 0 : _a.hasSubtreeListeners()) || false;\n }\n /** @internal */\n static _$insertChildReassignSlot(shadowRoot, name, oldSlot, newSlot) {\n if (!oldSlot) {\n const slotNodes = [];\n shadowRoot.forEachNodeInSpecifiedSlot(null, (node) => {\n if (name !== null) {\n const slotName = isElement(node) ? node._$nodeSlot : '';\n if (slotName !== name) {\n return;\n }\n }\n slotNodes.push(node);\n });\n for (let i = 0; i < slotNodes.length; i += 1) {\n const node = slotNodes[i];\n Element._$spliceSlotNodes(newSlot, -1, 0, [node]);\n Element._$updateContainingSlot(node, newSlot);\n if (!node._$inheritSlots)\n Element.insertChildReassign(node.parentNode, node, null, newSlot, node.parentIndex);\n }\n }\n else if (!newSlot) {\n const slotNodes = [...oldSlot.slotNodes];\n for (let i = 0; i < slotNodes.length; i += 1) {\n const node = slotNodes[i];\n Element._$spliceSlotNodes(oldSlot, 0, 1, undefined);\n Element._$updateContainingSlot(node, newSlot);\n if (!node._$inheritSlots)\n Element.insertChildReassign(node.parentNode, node, oldSlot, null, node.parentIndex);\n }\n }\n else {\n const slotNodes = [...oldSlot.slotNodes];\n for (let i = 0; i < slotNodes.length; i += 1) {\n const node = slotNodes[i];\n Element._$spliceSlotNodes(oldSlot, 0, 1, undefined);\n Element._$spliceSlotNodes(newSlot, -1, 0, [node]);\n Element._$updateContainingSlot(node, newSlot);\n if (!node._$inheritSlots)\n Element.insertChildReassign(node.parentNode, node, oldSlot, newSlot, node.parentIndex);\n }\n }\n }\n static insertChildReassign(shadowParent, child, oldSlot, newSlot, ideaPosIndex) {\n if (BM.SHADOW || (BM.DYNAMIC && shadowParent.getBackendMode() === 1 /* BackendMode.Shadow */)) {\n if (ENV.DEV)\n performanceMeasureStart('backend.reassignContainingSlot');\n child._$backendElement.reassignContainingSlot(oldSlot ? oldSlot._$backendElement : null, newSlot ? newSlot._$backendElement : null);\n if (ENV.DEV)\n performanceMeasureEnd();\n return;\n }\n if (oldSlot) {\n if (newSlot &&\n (BM.DOMLIKE || (BM.DYNAMIC && shadowParent.getBackendMode() === 3 /* BackendMode.Domlike */))) {\n // removal of in-tree elements are not needed for DOM backend\n // do nothing\n }\n else {\n const backendParent = Element.findNearestNonVirtual(oldSlot);\n if (backendParent) {\n const d = Element.countNonVirtual(child);\n if (d) {\n const [before, removeCount] = d;\n if (BM.DOMLIKE ||\n (BM.DYNAMIC && shadowParent.getBackendMode() === 3 /* BackendMode.Domlike */)) {\n const rel = before._$backendElement;\n for (let i = 1; i < removeCount; i += 1) {\n const next = rel.nextSibling;\n if (next) {\n if (ENV.DEV)\n performanceMeasureStart('backend.removeChild');\n backendParent.removeChild(next);\n if (ENV.DEV)\n performanceMeasureEnd();\n }\n }\n if (removeCount > 0) {\n if (ENV.DEV)\n performanceMeasureStart('backend.removeChild');\n backendParent.removeChild(rel);\n if (ENV.DEV)\n performanceMeasureEnd();\n }\n }\n else {\n if (ENV.DEV)\n performanceMeasureStart('backend.spliceRemove');\n backendParent.spliceRemove(before._$backendElement, removeCount);\n if (ENV.DEV)\n performanceMeasureEnd();\n }\n }\n }\n }\n }\n if (newSlot) {\n Element.insertChildComposed(shadowParent, child, undefined, false, ideaPosIndex);\n }\n }\n // a helper for searching the nearest non-virtual ancestor\n static findNearestNonVirtual(p) {\n let cur = p;\n for (; cur === null || cur === void 0 ? void 0 : cur._$virtual;) {\n if (isShadowRoot(cur)) {\n cur = cur.getHostNode();\n continue;\n }\n if (cur.containingSlot !== undefined) {\n cur = cur.containingSlot;\n continue;\n }\n cur = cur.parentNode;\n }\n return cur ? cur._$backendElement : null;\n }\n static countNonVirtual(target) {\n let firstNode = null;\n let removeCount = 0;\n const recNonVirtual = (c) => {\n if (removeCount === 0)\n firstNode = c;\n removeCount += 1;\n };\n const rec = (c) => {\n if (isElement(c) && c._$virtual) {\n c.forEachNonVirtualComposedChild(recNonVirtual);\n return;\n }\n recNonVirtual(c);\n };\n rec(target);\n return firstNode ? [firstNode, removeCount] : null;\n }\n /**\n * Iterate elements with their slots (slots-inherited nodes included)\n */\n static forEachNodeInSlot(node, f) {\n const rec = (child) => {\n if (f(child, child.containingSlot) === false)\n return false;\n if (child._$inheritSlots) {\n const childNodes = child.childNodes;\n for (let i = 0; i < childNodes.length; i += 1) {\n if (!rec(childNodes[i]))\n return false;\n }\n return true;\n }\n return true;\n };\n return rec(node);\n }\n /**\n * Iterate elements in specified slot (slots-inherited nodes included)\n */\n static forEachNodeInSpecificSlot(node, slot, f) {\n const rec = (child) => {\n if (child.containingSlot === slot) {\n if (f(child) === false)\n return false;\n }\n if (child._$inheritSlots) {\n const childNodes = child.childNodes;\n for (let i = 0; i < childNodes.length; i += 1) {\n if (!rec(childNodes[i]))\n return false;\n }\n return true;\n }\n return true;\n };\n return rec(node);\n }\n /**\n * Iterate elements with their slots (slots-inherited nodes NOT included)\n */\n static forEachSlotContentInSlot(node, f) {\n const rec = (child) => {\n if (child._$inheritSlots) {\n const childNodes = child.childNodes;\n for (let i = 0; i < childNodes.length; i += 1) {\n if (!rec(childNodes[i]))\n return false;\n }\n return true;\n }\n if (f(child, child.containingSlot) === false)\n return false;\n return true;\n };\n return rec(node);\n }\n /**\n * Iterate elements in specified slot (slots-inherited nodes NOT included)\n */\n static forEachSlotContentInSpecificSlot(node, slot, f) {\n const rec = (child) => {\n if (child._$inheritSlots) {\n const childNodes = child.childNodes;\n for (let i = 0; i < childNodes.length; i += 1) {\n if (!rec(childNodes[i]))\n return false;\n }\n return true;\n }\n if (child.containingSlot !== slot)\n return true;\n return f(child) !== false;\n };\n return rec(node);\n }\n /**\n * @internal\n * a helper for searching the first non-virtual node\n */\n static _$findFirstNonVirtualChild(parent, index) {\n const inSlot = parent._$slotName !== null;\n const children = inSlot ? parent.slotNodes : parent.childNodes;\n if (index >= 0 && index < children.length) {\n for (let i = index; i < children.length; i += 1) {\n let ret = null;\n const recNonVirtual = (c) => {\n ret = c;\n return false;\n };\n const rec = (c) => {\n if (!inSlot && c._$inheritSlots) {\n const childNodes = c.childNodes;\n for (let i = 0; i < childNodes.length; i += 1) {\n if (rec(childNodes[i]) === false)\n return false;\n }\n }\n if (c._$virtual) {\n return c.forEachNonVirtualComposedChild(recNonVirtual);\n }\n return recNonVirtual(c);\n };\n rec(children[i]);\n if (ret)\n return ret;\n }\n }\n const recvParent = (parent) => {\n if (!parent._$virtual)\n return null;\n const containingSlot = parent.containingSlot;\n if (containingSlot === null)\n return null;\n if (containingSlot !== undefined) {\n return Element._$findFirstNonVirtualChild(containingSlot, parent.slotIndex + 1);\n }\n if (isShadowRoot(parent)) {\n return recvParent(parent.getHostNode());\n }\n const p = parent.parentNode;\n if (p) {\n return Element._$findFirstNonVirtualChild(p, parent.parentIndex + 1);\n }\n return null;\n };\n return recvParent(parent);\n }\n /**\n * @internal\n * A helper to find first non-virtual next sibling node\n * return null if no next sibling exists\n */\n static _$findFirstNonVirtualSibling(element, newPosIndex) {\n const containingSlot = element.containingSlot;\n if (containingSlot === null)\n return null;\n if (containingSlot !== undefined) {\n if (!containingSlot._$virtual)\n return null;\n if (element.slotIndex !== undefined) {\n return Element._$findFirstNonVirtualChild(containingSlot, element.slotIndex + 1);\n }\n const insertPos = Element._$findSlotNodeInsertPosition(containingSlot, element, newPosIndex);\n return Element._$findFirstNonVirtualChild(containingSlot, insertPos);\n }\n let cur = element;\n if (isShadowRoot(element)) {\n cur = element.getHostNode();\n if (!cur._$virtual)\n return null;\n return Element._$findFirstNonVirtualChild(cur, cur.parentIndex + 1);\n }\n const p = cur.parentNode;\n if (p) {\n return Element._$findFirstNonVirtualChild(p, newPosIndex);\n }\n return null;\n }\n static insertChildComposed(shadowParent, newChild, relChild, removal, newPosIndex) {\n var _a, _b, _c;\n let parentConverted = false;\n let cur = shadowParent;\n while (cur === null || cur === void 0 ? void 0 : cur._$inheritSlots) {\n parentConverted = true;\n cur = cur.parentNode;\n }\n if (!cur)\n return;\n const slotParent = cur;\n const context = slotParent._$nodeTreeContext;\n if (!context)\n return;\n // detect whether it is in single-slot mode\n let sharedNonVirtualParent;\n if (isComponent(slotParent)) {\n if (slotParent._$external) {\n sharedNonVirtualParent = slotParent.shadowRoot\n .slot;\n }\n else {\n parentConverted = true;\n }\n }\n else {\n if (slotParent._$virtual)\n parentConverted = true;\n sharedNonVirtualParent = Element.findNearestNonVirtual(slotParent);\n }\n // a helper for grouping and slicing update\n let sharedFrag = null;\n const groupUpdate = (sharedBackendParent, slot) => {\n const backendParent = sharedBackendParent || (slot ? Element.findNearestNonVirtual(slot) : null);\n if (!(BM.DOMLIKE || (BM.DYNAMIC && shadowParent.getBackendMode() === 3 /* BackendMode.Domlike */))) {\n if (!backendParent) {\n return;\n }\n }\n let removeCount = 0;\n let before = null;\n // get the new child nodes of the backend\n let frag = null;\n let firstSlotNode = null;\n if (newChild) {\n const f = sharedFrag ||\n (BM.DOMLIKE || (BM.DYNAMIC && context.mode === 3 /* BackendMode.Domlike */)\n ? context.document.createDocumentFragment()\n : context.createFragment());\n sharedFrag = f;\n const recNonVirtual = (c) => {\n if (ENV.DEV)\n performanceMeasureStart('backend.appendChild');\n f.appendChild(c._$backendElement);\n if (ENV.DEV)\n performanceMeasureEnd();\n frag = f;\n };\n Element.forEachNodeInSpecificSlot(newChild, slot, (node) => {\n if (!firstSlotNode)\n firstSlotNode = node;\n if (!node._$virtual) {\n recNonVirtual(node);\n return;\n }\n node.forEachNonVirtualComposedChild(recNonVirtual);\n });\n }\n if (BM.DOMLIKE || (BM.DYNAMIC && shadowParent.getBackendMode() === 3 /* BackendMode.Domlike */)) {\n if (!backendParent) {\n sharedFrag = null;\n return;\n }\n }\n // get the proper relative node of the backend\n if (relChild || parentConverted) {\n if (removal && relChild) {\n Element.forEachSlotContentInSpecificSlot(relChild, slot, (c) => {\n if (isElement(c)) {\n const d = Element.countNonVirtual(c);\n if (d) {\n if (!before)\n before = d[0];\n removeCount += d[1];\n }\n }\n else {\n if (!before)\n before = c;\n removeCount += 1;\n }\n return true;\n });\n if (removeCount === 0 && frag && firstSlotNode) {\n before = Element._$findFirstNonVirtualSibling(slot === undefined ? newChild : firstSlotNode, newPosIndex + 1);\n }\n }\n else if (frag && firstSlotNode) {\n before = Element._$findFirstNonVirtualSibling(slot === undefined ? newChild : firstSlotNode, newPosIndex);\n }\n }\n // actually do the backend operation\n if (frag) {\n if (before) {\n if (BM.DOMLIKE || (BM.DYNAMIC && context.mode === 3 /* BackendMode.Domlike */)) {\n const rel = before._$backendElement;\n if (ENV.DEV)\n performanceMeasureStart('backend.insertBefore');\n backendParent.insertBefore(frag, rel);\n if (ENV.DEV)\n performanceMeasureEnd();\n for (let i = 1; i < removeCount; i += 1) {\n const next = rel.nextSibling;\n if (next) {\n if (ENV.DEV)\n performanceMeasureStart('backend.removeChild');\n backendParent.removeChild(next);\n if (ENV.DEV)\n performanceMeasureEnd();\n }\n }\n if (removeCount > 0) {\n if (ENV.DEV)\n performanceMeasureStart('backend.removeChild');\n backendParent.removeChild(rel);\n if (ENV.DEV)\n performanceMeasureEnd();\n }\n }\n else {\n if (ENV.DEV)\n performanceMeasureStart('backend.spliceBefore');\n backendParent.spliceBefore(before._$backendElement, removeCount, frag);\n if (ENV.DEV)\n performanceMeasureEnd();\n }\n }\n else {\n if (BM.DOMLIKE || (BM.DYNAMIC && context.mode === 3 /* BackendMode.Domlike */)) {\n if (ENV.DEV)\n performanceMeasureStart('backend.appendChild');\n backendParent.appendChild(frag);\n if (ENV.DEV)\n performanceMeasureEnd();\n }\n else {\n if (ENV.DEV)\n performanceMeasureStart('backend.spliceAppend');\n backendParent.spliceAppend(frag);\n if (ENV.DEV)\n performanceMeasureEnd();\n }\n }\n }\n else if (removeCount > 0) {\n if (BM.DOMLIKE || (BM.DYNAMIC && context.mode === 3 /* BackendMode.Domlike */)) {\n const rel = before._$backendElement;\n for (let i = 1; i < removeCount; i += 1) {\n const next = rel.nextSibling;\n if (next) {\n if (ENV.DEV)\n performanceMeasureStart('backend.removeChild');\n backendParent.removeChild(next);\n if (ENV.DEV)\n performanceMeasureEnd();\n }\n }\n if (removeCount > 0) {\n if (ENV.DEV)\n performanceMeasureStart('backend.removeChild');\n backendParent.removeChild(rel);\n if (ENV.DEV)\n performanceMeasureEnd();\n }\n }\n else {\n if (ENV.DEV)\n performanceMeasureStart('backend.spliceRemove');\n backendParent.spliceRemove(before._$backendElement, removeCount);\n if (ENV.DEV)\n performanceMeasureEnd();\n }\n }\n };\n // in single-slot mode, use a simpler update logic; otherwise use a slower one\n if (sharedNonVirtualParent !== undefined) {\n if (sharedNonVirtualParent === null) {\n // for nodes with no valid non-virtual parent, do nothing\n }\n else if (!parentConverted &&\n (!isElement(newChild) || !newChild._$virtual) &&\n (!isElement(relChild) || !relChild._$virtual)) {\n // for non-virtual children, use single child operation\n if (removal) {\n if (newChild) {\n if (ENV.DEV)\n performanceMeasureStart('backend.replaceChild');\n sharedNonVirtualParent.replaceChild(newChild._$backendElement, relChild._$backendElement);\n if (ENV.DEV)\n performanceMeasureEnd();\n }\n else {\n if (ENV.DEV)\n performanceMeasureStart('backend.removeChild');\n sharedNonVirtualParent.removeChild(relChild._$backendElement);\n if (ENV.DEV)\n performanceMeasureEnd();\n }\n }\n else if (relChild) {\n if (ENV.DEV)\n performanceMeasureStart('backend.insertBefore');\n sharedNonVirtualParent.insertBefore(newChild._$backendElement, relChild._$backendElement);\n if (ENV.DEV)\n performanceMeasureEnd();\n }\n else {\n if (ENV.DEV)\n performanceMeasureStart('backend.appendChild');\n sharedNonVirtualParent.appendChild(newChild._$backendElement);\n if (ENV.DEV)\n performanceMeasureEnd();\n }\n }\n else {\n // for node isn't a slot content, simply update\n groupUpdate(sharedNonVirtualParent, undefined);\n }\n }\n else if (!((newChild && newChild._$inheritSlots) || (removal && relChild && relChild._$inheritSlots))) {\n // faster update if none inherited slots\n if (newChild)\n groupUpdate(null, newChild.containingSlot);\n if (removal &&\n relChild &&\n (!newChild || relChild.containingSlot !== newChild.containingSlot)) {\n groupUpdate(null, relChild.containingSlot);\n }\n }\n else {\n // for multi-slots, find out each slot that needs update, and update them one by one\n const slotNodesSet = new Set();\n if (removal && relChild) {\n Element.forEachSlotContentInSlot(relChild, (node, slot) => {\n slotNodesSet.add(slot);\n });\n }\n if (newChild) {\n Element.forEachSlotContentInSlot(newChild, (node, slot) => {\n slotNodesSet.add(slot);\n });\n }\n slotNodesSet.forEach((slot) => groupUpdate(null, slot));\n }\n if (!(BM.DOMLIKE || (BM.DYNAMIC && context.mode === 3 /* BackendMode.Domlike */))) {\n if (sharedFrag) {\n if (ENV.DEV)\n performanceMeasureStart('backend.release');\n sharedFrag.release();\n if (ENV.DEV)\n performanceMeasureEnd();\n }\n }\n // write extra info if needed\n if (globalOptions.writeExtraInfoToAttr) {\n if (removal && isElement(relChild)) {\n (_a = relChild._$backendElement) === null || _a === void 0 ? void 0 : _a.removeAttribute('exparser:info-in-slot-of');\n }\n if (isElement(newChild)) {\n if (isComponent(shadowParent)) {\n (_b = newChild._$backendElement) === null || _b === void 0 ? void 0 : _b.setAttribute('exparser:info-in-slot-of', shadowParent._$componentInstanceId);\n }\n else {\n (_c = newChild._$backendElement) === null || _c === void 0 ? void 0 : _c.removeAttribute('exparser:info-in-slot-of');\n }\n }\n }\n }\n /**\n * @internal\n * @param move whether this insertion is a slot movement\n */\n static _$updateSubtreeSlotsInsertion(node, slotStart, slotEnd, posIndex, move) {\n if (!slotStart || !slotEnd)\n return;\n let parent = node;\n // find a correct position to insert slot into double-linked slot list\n let insertSlotPrev = null;\n let insertSlotNext = null;\n const findFirstSlot = (parent, posIndex) => {\n if (parent._$subtreeSlotStart) {\n const childNodes = parent.childNodes;\n let index = posIndex + 1;\n let nextSiblingWithSlot = childNodes[index];\n while (nextSiblingWithSlot && !nextSiblingWithSlot._$subtreeSlotStart) {\n index += 1;\n nextSiblingWithSlot = childNodes[index];\n }\n if (nextSiblingWithSlot) {\n insertSlotNext = nextSiblingWithSlot._$subtreeSlotStart;\n insertSlotPrev = insertSlotNext.prev;\n }\n else {\n insertSlotPrev = parent._$subtreeSlotEnd;\n if (insertSlotPrev)\n insertSlotNext = insertSlotPrev.next;\n }\n return;\n }\n let cur = parent;\n let parentWithSubtreeSlot = parent.parentNode;\n while (parentWithSubtreeSlot && !parentWithSubtreeSlot._$subtreeSlotStart) {\n cur = parentWithSubtreeSlot;\n parentWithSubtreeSlot = parentWithSubtreeSlot.parentNode;\n }\n if (parentWithSubtreeSlot) {\n findFirstSlot(parentWithSubtreeSlot, cur.parentIndex);\n }\n };\n findFirstSlot(parent, posIndex);\n // insert into double linked list\n if (insertSlotPrev) {\n insertSlotPrev.next = slotStart;\n slotStart.prev = insertSlotPrev;\n }\n if (insertSlotNext) {\n insertSlotNext.prev = slotEnd;\n slotEnd.next = insertSlotNext;\n }\n // update ancestor's subtree slot start/end\n while (parent) {\n let changed = false;\n if (!parent._$subtreeSlotStart) {\n parent._$subtreeSlotStart = slotStart;\n parent._$subtreeSlotEnd = slotEnd;\n changed = true;\n }\n else if (parent._$subtreeSlotStart === insertSlotNext) {\n parent._$subtreeSlotStart = slotStart;\n changed = true;\n }\n else if (parent._$subtreeSlotEnd === insertSlotPrev) {\n parent._$subtreeSlotEnd = slotEnd;\n changed = true;\n }\n if (!changed || !parent.parentNode)\n break;\n parent = parent.parentNode;\n }\n const ownerShadowRoot = parent.ownerShadowRoot;\n if (ownerShadowRoot === null || ownerShadowRoot === void 0 ? void 0 : ownerShadowRoot.isConnected(parent)) {\n ownerShadowRoot._$applySlotsInsertion(slotStart, slotEnd, move);\n }\n }\n /**\n * @internal\n * @param move whether this removal is a slot movement, will fire an insertion (with move=true) after\n */\n static _$updateSubtreeSlotsRemoval(node, slotStart, slotEnd, move) {\n if (!slotStart || !slotEnd)\n return;\n let parent = node;\n const removeSlotBefore = slotStart.prev;\n const removeSlotAfter = slotEnd.next;\n // remove from double linked list\n if (removeSlotBefore) {\n removeSlotBefore.next = removeSlotAfter;\n slotStart.prev = null;\n }\n if (removeSlotAfter) {\n removeSlotAfter.prev = removeSlotBefore;\n slotEnd.next = null;\n }\n // update parent subtree start/end\n while (parent) {\n let changed = false;\n if (parent._$subtreeSlotStart === slotStart && parent._$subtreeSlotEnd === slotEnd) {\n parent._$subtreeSlotStart = parent._$subtreeSlotEnd = null;\n changed = true;\n }\n if (parent._$subtreeSlotStart === slotStart) {\n parent._$subtreeSlotStart = removeSlotAfter;\n changed = true;\n }\n else if (parent._$subtreeSlotEnd === slotEnd) {\n parent._$subtreeSlotEnd = removeSlotBefore;\n changed = true;\n }\n if (!changed || !parent.parentNode)\n break;\n parent = parent.parentNode;\n }\n const ownerShadowRoot = parent.ownerShadowRoot;\n if (ownerShadowRoot === null || ownerShadowRoot === void 0 ? void 0 : ownerShadowRoot.isConnected(parent)) {\n ownerShadowRoot._$applySlotsRemoval(slotStart, slotEnd, move);\n }\n }\n /**\n * @internal\n * @param move whether this removal is a slot movement, will fire an insertion (with move=true) after\n */\n static _$updateSubtreeSlotsReplacement(node, slotStart, slotEnd, oldSlotStart, oldSlotEnd, posIndex, move) {\n if (!slotStart || !slotEnd) {\n Element._$updateSubtreeSlotsRemoval(node, oldSlotStart, oldSlotEnd, move);\n return;\n }\n if (!oldSlotStart || !oldSlotEnd) {\n Element._$updateSubtreeSlotsInsertion(node, slotStart, slotEnd, posIndex, move);\n return;\n }\n let parent = node;\n const removeSlotBefore = oldSlotStart.prev;\n const removeSlotAfter = oldSlotEnd.next;\n // replace in double linked list\n if (removeSlotBefore) {\n removeSlotBefore.next = slotStart;\n slotStart.prev = removeSlotBefore;\n oldSlotStart.prev = null;\n }\n if (removeSlotAfter) {\n removeSlotAfter.prev = slotEnd;\n slotEnd.next = removeSlotAfter;\n oldSlotEnd.next = null;\n }\n // update parent subtree start/end\n while (parent) {\n let changed = false;\n if (parent._$subtreeSlotStart === oldSlotStart) {\n parent._$subtreeSlotStart = slotStart;\n changed = true;\n }\n if (parent._$subtreeSlotEnd === oldSlotEnd) {\n parent._$subtreeSlotEnd = slotEnd;\n changed = true;\n }\n if (!changed || !parent.parentNode)\n break;\n parent = parent.parentNode;\n }\n const ownerShadowRoot = parent.ownerShadowRoot;\n if (ownerShadowRoot === null || ownerShadowRoot === void 0 ? void 0 : ownerShadowRoot.isConnected(parent)) {\n ownerShadowRoot._$applySlotsRemoval(oldSlotStart, oldSlotEnd, false);\n ownerShadowRoot._$applySlotsInsertion(slotStart, slotEnd, move);\n }\n }\n /** @internal */\n static _$updateSubtreeSlotNodes(parentNode, elements, shadowRoot, oldShadowRoot, posIndex) {\n if (!shadowRoot && !oldShadowRoot)\n return undefined;\n const slotMode = shadowRoot === null || shadowRoot === void 0 ? void 0 : shadowRoot.getSlotMode();\n const oldSlotMode = oldShadowRoot === null || oldShadowRoot === void 0 ? void 0 : oldShadowRoot.getSlotMode();\n if ((slotMode === undefined || slotMode === 0 /* SlotMode.Direct */) &&\n (oldSlotMode === undefined || oldSlotMode === 0 /* SlotMode.Direct */)) {\n return undefined;\n }\n if ((slotMode === undefined || slotMode === 1 /* SlotMode.Single */) &&\n (oldSlotMode === undefined || oldSlotMode === 1 /* SlotMode.Single */)) {\n let removeStart = -1;\n let removeCount = 0;\n let insertPos = -1;\n const slotNodesToUpdate = [];\n const oldContainingSlot = elements[0].containingSlot;\n const containingSlot = shadowRoot === null || shadowRoot === void 0 ? void 0 : shadowRoot.getContainingSlot(elements[0]);\n for (let i = 0; i < elements.length; i += 1) {\n const elem = elements[i];\n // eslint-disable-next-line no-loop-func\n Element.forEachNodeInSlot(elem, (node) => {\n if (oldContainingSlot) {\n if (removeCount) {\n removeCount += 1;\n }\n else {\n removeStart = node.slotIndex;\n removeCount = 1;\n }\n }\n slotNodesToUpdate.push(node);\n });\n }\n if (containingSlot && slotNodesToUpdate.length) {\n const firstSlotNode = slotNodesToUpdate[0];\n insertPos = Element._$findSlotNodeInsertPosition(containingSlot, firstSlotNode, posIndex);\n }\n return {\n updateContainingSlot: () => {\n for (let i = slotNodesToUpdate.length - 1; i >= 0; i -= 1) {\n const node = slotNodesToUpdate[i];\n Element._$updateContainingSlot(node, containingSlot);\n }\n },\n removeSlotNodes: () => {\n if (oldShadowRoot && oldContainingSlot && removeCount) {\n Element._$spliceSlotNodes(oldContainingSlot, removeStart, removeCount, undefined);\n }\n },\n insertSlotNodes: () => {\n if (shadowRoot && containingSlot && slotNodesToUpdate.length) {\n Element._$spliceSlotNodes(containingSlot, insertPos, 0, slotNodesToUpdate);\n }\n },\n };\n }\n const slotNodesToInsertMap = new Map();\n const slotNodesToRemoveMap = new Map();\n const slotNodesWithContainingSlot = [];\n for (let i = 0; i < elements.length; i += 1) {\n const elem = elements[i];\n Element.forEachNodeInSlot(elem, (node, oldContainingSlot) => {\n const containingSlot = slotMode !== 0 /* SlotMode.Direct */ ? shadowRoot === null || shadowRoot === void 0 ? void 0 : shadowRoot.getContainingSlot(node) : undefined;\n if (oldContainingSlot) {\n const slotNodesToRemove = slotNodesToRemoveMap.get(oldContainingSlot);\n if (slotNodesToRemove) {\n slotNodesToRemove.count += 1;\n }\n else {\n slotNodesToRemoveMap.set(oldContainingSlot, { start: node.slotIndex, count: 1 });\n }\n }\n if (containingSlot) {\n const slotNodesToInsert = slotNodesToInsertMap.get(containingSlot);\n if (slotNodesToInsert) {\n slotNodesToInsert.nodes.push(node);\n }\n else {\n slotNodesToInsertMap.set(containingSlot, { nodes: [node], insertPos: -1 });\n }\n }\n slotNodesWithContainingSlot.push([node, containingSlot]);\n });\n }\n if (shadowRoot && slotNodesToInsertMap.size) {\n const iter = slotNodesToInsertMap.entries();\n for (let it = iter.next(); !it.done; it = iter.next()) {\n const [slot, { nodes: slotNodesToInsert }] = it.value;\n const firstSlotNodeToInsert = slotNodesToInsert[0];\n it.value[1].insertPos = Element._$findSlotNodeInsertPosition(slot, firstSlotNodeToInsert, posIndex);\n }\n }\n return {\n updateContainingSlot: () => {\n for (let i = slotNodesWithContainingSlot.length - 1; i >= 0; i -= 1) {\n const [node, containingSlot] = slotNodesWithContainingSlot[i];\n Element._$updateContainingSlot(node, containingSlot);\n }\n },\n removeSlotNodes: () => {\n if (oldShadowRoot && slotNodesToRemoveMap.size) {\n const iter = slotNodesToRemoveMap.entries();\n for (let it = iter.next(); !it.done; it = iter.next()) {\n const [slot, { start, count }] = it.value;\n Element._$spliceSlotNodes(slot, start, count, undefined);\n }\n }\n },\n insertSlotNodes: () => {\n if (shadowRoot && slotNodesToInsertMap.size) {\n const iter = slotNodesToInsertMap.entries();\n for (let it = iter.next(); !it.done; it = iter.next()) {\n const [slot, { nodes: slotNodesToInsert, insertPos }] = it.value;\n Element._$spliceSlotNodes(slot, insertPos, 0, slotNodesToInsert);\n }\n }\n },\n };\n }\n static insertChildSingleOperation(parent, newChild, oriPosIndex, replace) {\n var _a, _b, _c, _d, _e;\n /* istanbul ignore if */\n if (newChild && parent.ownerShadowRoot !== newChild.ownerShadowRoot) {\n throw new Error('Cannot move the node from one shadow tree to another shadow tree.');\n }\n let posIndex = oriPosIndex;\n const relChild = posIndex >= 0 ? parent.childNodes[posIndex] : undefined;\n let removal;\n if (replace) {\n if (!relChild) {\n removal = false;\n }\n else if (newChild === relChild) {\n removal = false;\n }\n else {\n removal = true;\n }\n }\n else {\n removal = false;\n }\n if (!removal && !newChild)\n return;\n // change the parent of newChild\n let oldParent;\n if (newChild) {\n oldParent = newChild.parentNode;\n if (oldParent) {\n const childNodes = oldParent.childNodes;\n const oldPosIndex = newChild.parentIndex;\n childNodes.splice(oldPosIndex, 1);\n for (let i = oldPosIndex; i < childNodes.length; i += 1) {\n childNodes[i].parentIndex = i;\n }\n newChild.parentIndex = -1;\n if (oldParent === parent && oldPosIndex < posIndex)\n posIndex -= 1;\n const containingSlotUpdater = Element._$updateSubtreeSlotNodes(parent, [newChild], null, Element._$getParentHostShadowRoot(oldParent), posIndex);\n containingSlotUpdater === null || containingSlotUpdater === void 0 ? void 0 : containingSlotUpdater.removeSlotNodes();\n if (BM.DOMLIKE || (BM.DYNAMIC && parent.getBackendMode() === 3 /* BackendMode.Domlike */)) {\n // removal of in-tree elements are not needed for DOM backend\n // do nothing\n }\n else if (BM.SHADOW || (BM.DYNAMIC && parent.getBackendMode() === 1 /* BackendMode.Shadow */)) {\n if (ENV.DEV)\n performanceMeasureStart('backend.removeChild');\n (_a = oldParent._$backendElement) === null || _a === void 0 ? void 0 : _a.removeChild(newChild._$backendElement, oldPosIndex);\n if (ENV.DEV)\n performanceMeasureEnd();\n }\n else {\n Element.insertChildComposed(oldParent, null, newChild, true, oldPosIndex);\n }\n containingSlotUpdater === null || containingSlotUpdater === void 0 ? void 0 : containingSlotUpdater.updateContainingSlot();\n }\n newChild.parentNode = parent;\n if (isElement(newChild) && oldParent !== parent) {\n if (oldParent)\n (_b = oldParent._$mutationObserverTarget) === null || _b === void 0 ? void 0 : _b.detachChild(newChild);\n (_c = parent._$mutationObserverTarget) === null || _c === void 0 ? void 0 : _c.attachChild(newChild);\n }\n }\n else {\n oldParent = null;\n }\n // update containingSlot\n const parentComponentShadowRoot = Element._$getParentHostShadowRoot(parent);\n const newChildContainingSlotUpdater = newChild\n ? Element._$updateSubtreeSlotNodes(parent, [newChild], parentComponentShadowRoot, null, posIndex)\n : null;\n const relChildContainingSlotUpdater = relChild && removal\n ? Element._$updateSubtreeSlotNodes(parent, [relChild], null, parentComponentShadowRoot, posIndex)\n : null;\n newChildContainingSlotUpdater === null || newChildContainingSlotUpdater === void 0 ? void 0 : newChildContainingSlotUpdater.updateContainingSlot();\n relChildContainingSlotUpdater === null || relChildContainingSlotUpdater === void 0 ? void 0 : relChildContainingSlotUpdater.removeSlotNodes();\n // spread in composed tree\n if (BM.SHADOW || (BM.DYNAMIC && parent.getBackendMode() === 1 /* BackendMode.Shadow */)) {\n if (parent._$backendElement) {\n if (removal) {\n if (newChild) {\n if (ENV.DEV)\n performanceMeasureStart('backend.replaceChild');\n parent._$backendElement.replaceChild(newChild._$backendElement, relChild._$backendElement, posIndex);\n if (ENV.DEV)\n performanceMeasureEnd();\n }\n else {\n if (ENV.DEV)\n performanceMeasureStart('backend.removeChild');\n parent._$backendElement.removeChild(relChild._$backendElement, posIndex);\n if (ENV.DEV)\n performanceMeasureEnd();\n }\n }\n else {\n // relChild could equal to newChild and have been removed above\n const before = parent.childNodes[posIndex];\n if (before) {\n if (ENV.DEV)\n performanceMeasureStart('backend.insertBefore');\n parent._$backendElement.insertBefore(newChild._$backendElement, before._$backendElement, posIndex);\n if (ENV.DEV)\n performanceMeasureEnd();\n }\n else {\n if (ENV.DEV)\n performanceMeasureStart('backend.appendChild');\n parent._$backendElement.appendChild(newChild._$backendElement);\n if (ENV.DEV)\n performanceMeasureEnd();\n }\n }\n }\n }\n else {\n Element.insertChildComposed(parent, newChild, relChild, removal, posIndex);\n }\n newChildContainingSlotUpdater === null || newChildContainingSlotUpdater === void 0 ? void 0 : newChildContainingSlotUpdater.insertSlotNodes();\n relChildContainingSlotUpdater === null || relChildContainingSlotUpdater === void 0 ? void 0 : relChildContainingSlotUpdater.updateContainingSlot();\n // remove parent of relChild if needed\n if (removal && relChild) {\n if (isElement(relChild)) {\n (_d = parent._$mutationObserverTarget) === null || _d === void 0 ? void 0 : _d.detachChild(relChild);\n }\n relChild.parentNode = null;\n relChild.parentIndex = -1;\n }\n // handling child nodes list\n const childNodes = parent.childNodes;\n if (newChild) {\n if (posIndex < 0) {\n childNodes.push(newChild);\n newChild.parentIndex = childNodes.length - 1;\n }\n else if (removal) {\n childNodes[posIndex] = newChild;\n newChild.parentIndex = posIndex;\n }\n else {\n childNodes.splice(posIndex, 0, newChild);\n for (let i = posIndex; i < childNodes.length; i += 1) {\n childNodes[i].parentIndex = i;\n }\n }\n }\n else if (removal) {\n childNodes.splice(posIndex, 1);\n for (let i = posIndex; i < childNodes.length; i += 1) {\n childNodes[i].parentIndex = i;\n }\n }\n // update subtree slots\n const newChildSubtreeSlotStart = newChild ? newChild._$subtreeSlotStart : null;\n const newChildSubtreeSlotEnd = newChild ? newChild._$subtreeSlotEnd : null;\n const relChildSubtreeSlotStart = relChild ? relChild._$subtreeSlotStart : null;\n const relChildSubtreeSlotEnd = relChild ? relChild._$subtreeSlotEnd : null;\n if (newChild) {\n if (oldParent) {\n Element._$updateSubtreeSlotsRemoval(oldParent, newChildSubtreeSlotStart, newChildSubtreeSlotEnd, true);\n }\n if (removal) {\n Element._$updateSubtreeSlotsReplacement(parent, newChildSubtreeSlotStart, newChildSubtreeSlotEnd, relChildSubtreeSlotStart, relChildSubtreeSlotEnd, posIndex, !!oldParent);\n }\n else {\n Element._$updateSubtreeSlotsInsertion(parent, newChildSubtreeSlotStart, newChildSubtreeSlotEnd, posIndex, !!oldParent);\n }\n }\n else if (removal && relChild) {\n Element._$updateSubtreeSlotsRemoval(parent, relChildSubtreeSlotStart, relChildSubtreeSlotEnd, false);\n }\n // update id and slot cache if needed\n (_e = parent.ownerShadowRoot) === null || _e === void 0 ? void 0 : _e._$markIdCacheDirty();\n // call life-times\n if (removal) {\n Element.checkAndCallDetached(relChild);\n Element.checkChildObservers(parent, 'remove', relChild);\n }\n if (newChild) {\n if (oldParent === null || oldParent === void 0 ? void 0 : oldParent._$attached) {\n if (parent._$attached) {\n Element.checkAndCallMoved(newChild);\n }\n else {\n Element.checkAndCallDetached(newChild);\n }\n }\n else if (parent._$attached) {\n Element.checkAndCallAttached(newChild);\n }\n if (oldParent === parent) {\n Element.checkChildObservers(parent, 'move', newChild);\n }\n else {\n if (oldParent) {\n Element.checkChildObservers(oldParent, 'remove', newChild);\n }\n Element.checkChildObservers(parent, 'add', newChild);\n }\n }\n }\n static insertChildBatchRemoval(parent, posIndex, count) {\n var _a, _b;\n const relChild = parent.childNodes[posIndex];\n let parentComponent = parent;\n while (parentComponent === null || parentComponent === void 0 ? void 0 : parentComponent._$inheritSlots)\n parentComponent = parentComponent.parentNode;\n const parentComponentShadowRoot = isComponent(parentComponent) && !parentComponent._$external\n ? parentComponent.shadowRoot\n : null;\n // handling child nodes list\n const childNodes = parent.childNodes;\n const relChildren = childNodes.splice(posIndex, count);\n for (let i = posIndex; i < childNodes.length; i += 1) {\n childNodes[i].parentIndex = i;\n }\n const containingSlotUpdater = Element._$updateSubtreeSlotNodes(parent, relChildren, null, parentComponentShadowRoot, posIndex);\n containingSlotUpdater === null || containingSlotUpdater === void 0 ? void 0 : containingSlotUpdater.removeSlotNodes();\n // spread in composed tree\n if (BM.SHADOW || (BM.DYNAMIC && parent.getBackendMode() === 1 /* BackendMode.Shadow */)) {\n if (parent._$backendElement) {\n if (ENV.DEV)\n performanceMeasureStart('backend.spliceRemove');\n parent._$backendElement.spliceRemove(relChild._$backendElement, count);\n if (ENV.DEV)\n performanceMeasureEnd();\n }\n }\n else {\n for (let i = count - 1; i >= 0; i -= 1) {\n Element.insertChildComposed(parent, null, relChildren[i], true, i);\n }\n }\n // remove parent\n for (let i = 0; i < count; i += 1) {\n const relChild = relChildren[i];\n relChild.parentNode = null;\n relChild.parentIndex = -1;\n if (isElement(relChild)) {\n (_a = parent._$mutationObserverTarget) === null || _a === void 0 ? void 0 : _a.detachChild(relChild);\n }\n }\n containingSlotUpdater === null || containingSlotUpdater === void 0 ? void 0 : containingSlotUpdater.updateContainingSlot();\n // update subtree slot\n let subtreeSlotStart = null;\n let subtreeSlotEnd = null;\n for (let i = 0; i < count; i += 1) {\n const relChild = relChildren[i];\n if (!subtreeSlotStart)\n subtreeSlotStart = relChild._$subtreeSlotStart;\n if (relChild._$subtreeSlotEnd)\n subtreeSlotEnd = relChild._$subtreeSlotEnd;\n }\n Element._$updateSubtreeSlotsRemoval(parent, subtreeSlotStart, subtreeSlotEnd, false);\n // update id and slot cache if needed\n (_b = parent.ownerShadowRoot) === null || _b === void 0 ? void 0 : _b._$markIdCacheDirty();\n // call life-times\n for (let i = 0; i < count; i += 1) {\n const relChild = relChildren[i];\n Element.checkAndCallDetached(relChild);\n Element.checkChildObservers(parent, 'remove', relChild);\n }\n }\n static insertChildBatchInsertion(parent, newChildList, posIndex) {\n var _a, _b;\n const relChild = posIndex >= 0 ? parent.childNodes[posIndex] : undefined;\n // update containingSlot\n let parentComponent = parent;\n while (parentComponent === null || parentComponent === void 0 ? void 0 : parentComponent._$inheritSlots)\n parentComponent = parentComponent.parentNode;\n const parentComponentShadowRoot = isComponent(parentComponent) && !parentComponent._$external\n ? parentComponent.shadowRoot\n : null;\n // change the parent of newChild\n let frag;\n if ((BM.SHADOW || (BM.DYNAMIC && parent.getBackendMode() === 1 /* BackendMode.Shadow */)) &&\n newChildList.length >= 5) {\n const backendContext = parent.getBackendContext();\n frag = backendContext.createFragment();\n }\n else {\n frag = null;\n }\n for (let i = 0; i < newChildList.length; i += 1) {\n const newChild = newChildList[i];\n /* istanbul ignore if */\n if (parent.ownerShadowRoot !== newChild.ownerShadowRoot) {\n throw new Error('Cannot move the node from one shadow tree to another shadow tree.');\n }\n const oldParent = newChild.parentNode;\n /* istanbul ignore if */\n if (oldParent) {\n throw new Error('Cannot batch-insert the node which already has a parent.');\n }\n newChild.parentNode = parent;\n if (isElement(newChild)) {\n (_a = parent._$mutationObserverTarget) === null || _a === void 0 ? void 0 : _a.attachChild(newChild);\n }\n if ((BM.SHADOW || (BM.DYNAMIC && parent.getBackendMode() === 1 /* BackendMode.Shadow */)) && frag) {\n const be = newChild._$backendElement;\n if (ENV.DEV)\n performanceMeasureStart('backend.appendChild');\n frag.appendChild(be);\n if (ENV.DEV)\n performanceMeasureEnd();\n }\n }\n // update containingSlot\n const containingSlotUpdater = Element._$updateSubtreeSlotNodes(parent, newChildList, parentComponentShadowRoot, null, posIndex);\n containingSlotUpdater === null || containingSlotUpdater === void 0 ? void 0 : containingSlotUpdater.updateContainingSlot();\n // spread in composed tree\n if (BM.SHADOW || (BM.DYNAMIC && parent.getBackendMode() === 1 /* BackendMode.Shadow */)) {\n if (parent._$backendElement) {\n if (frag) {\n if (relChild) {\n if (ENV.DEV)\n performanceMeasureStart('backend.spliceBefore');\n parent._$backendElement.spliceBefore(relChild._$backendElement, 0, frag);\n if (ENV.DEV)\n performanceMeasureEnd();\n }\n else {\n if (ENV.DEV)\n performanceMeasureStart('backend.spliceAppend');\n parent._$backendElement.spliceAppend(frag);\n if (ENV.DEV)\n performanceMeasureEnd();\n }\n frag.release();\n }\n else {\n if (relChild) {\n for (let i = 0; i < newChildList.length; i += 1) {\n const newChild = newChildList[i];\n if (ENV.DEV)\n performanceMeasureStart('backend.insertBefore');\n parent._$backendElement.insertBefore(newChild._$backendElement, relChild._$backendElement);\n if (ENV.DEV)\n performanceMeasureEnd();\n }\n }\n else {\n for (let i = 0; i < newChildList.length; i += 1) {\n const newChild = newChildList[i];\n if (ENV.DEV)\n performanceMeasureStart('backend.appendChild');\n parent._$backendElement.appendChild(newChild._$backendElement);\n if (ENV.DEV)\n performanceMeasureEnd();\n }\n }\n }\n }\n }\n else {\n const pos = posIndex >= 0 ? posIndex : parent.childNodes.length;\n for (let i = 0; i < newChildList.length; i += 1) {\n const newChild = newChildList[i];\n Element.insertChildComposed(parent, newChild, relChild, false, pos);\n }\n }\n containingSlotUpdater === null || containingSlotUpdater === void 0 ? void 0 : containingSlotUpdater.insertSlotNodes();\n // handling child nodes list\n const childNodes = parent.childNodes;\n if (relChild) {\n childNodes.splice(posIndex, 0, ...newChildList);\n for (let i = posIndex; i < childNodes.length; i += 1) {\n childNodes[i].parentIndex = i;\n }\n }\n else {\n childNodes.push(...newChildList);\n for (let i = childNodes.length - newChildList.length; i < childNodes.length; i += 1) {\n childNodes[i].parentIndex = i;\n }\n }\n // update subtree slot\n let subtreeSlotStart = null;\n let subtreeSlotEnd = null;\n for (let i = 0; i < newChildList.length; i += 1) {\n const newChild = newChildList[i];\n const newChildSubtreeSlotStart = newChild._$subtreeSlotStart;\n const newChildSubtreeSlotEnd = newChild._$subtreeSlotEnd;\n if (newChildSubtreeSlotStart) {\n if (subtreeSlotEnd) {\n newChildSubtreeSlotStart.prev = subtreeSlotEnd;\n subtreeSlotEnd.next = newChildSubtreeSlotStart;\n subtreeSlotEnd = newChildSubtreeSlotEnd;\n }\n else {\n subtreeSlotStart = newChildSubtreeSlotStart;\n subtreeSlotEnd = newChildSubtreeSlotEnd;\n }\n }\n }\n Element._$updateSubtreeSlotsInsertion(parent, subtreeSlotStart, subtreeSlotEnd, posIndex + newChildList.length - 1, false);\n // update id and slot cache if needed\n (_b = parent.ownerShadowRoot) === null || _b === void 0 ? void 0 : _b._$markIdCacheDirty();\n // call life-times\n for (let i = 0; i < newChildList.length; i += 1) {\n const newChild = newChildList[i];\n if (parent._$attached) {\n Element.checkAndCallAttached(newChild);\n }\n Element.checkChildObservers(parent, 'add', newChild);\n }\n }\n static insertChildPlaceholderReplace(parent, posIndex, replacer) {\n var _a, _b, _c, _d, _e, _f;\n /* istanbul ignore if */\n if (replacer && parent.ownerShadowRoot !== replacer.ownerShadowRoot) {\n throw new Error('Cannot move the node from one shadow tree to another shadow tree.');\n }\n /* istanbul ignore if */\n if (replacer.parentNode) {\n throw new Error('Cannot replace with the node which already has a parent.');\n }\n const placeholder = parent.childNodes[posIndex];\n /* istanbul ignore if */\n if (!isElement(placeholder)) {\n throw new Error('Cannot replace on text nodes.');\n }\n /* istanbul ignore if */\n if (placeholder._$slotName !== null || replacer._$slotName !== null) {\n throw new Error('Cannot replace on slot nodes.');\n }\n if (placeholder === replacer)\n return;\n // change the parent of replacer's children\n let frag;\n if (BM.SHADOW || (BM.DYNAMIC && parent.getBackendMode() === 1 /* BackendMode.Shadow */)) {\n const backendContext = parent.getBackendContext();\n if (ENV.DEV)\n performanceMeasureStart('backend.createFragment');\n frag = backendContext.createFragment();\n if (ENV.DEV)\n performanceMeasureEnd();\n }\n else {\n frag = null;\n }\n const replacedChildren = placeholder.childNodes;\n if (BM.SHADOW || (BM.DYNAMIC && parent.getBackendMode() === 1 /* BackendMode.Shadow */)) {\n if (replacedChildren.length > 0) {\n const be = placeholder._$backendElement;\n if (be) {\n if (ENV.DEV)\n performanceMeasureStart('backend.spliceRemove');\n be.spliceRemove(replacedChildren[0]._$backendElement, replacedChildren.length);\n if (ENV.DEV)\n performanceMeasureEnd();\n }\n }\n }\n for (let i = 0; i < replacedChildren.length; i += 1) {\n const child = replacedChildren[i];\n if (BM.DOMLIKE || (BM.DYNAMIC && parent.getBackendMode() === 3 /* BackendMode.Domlike */)) {\n // removal of in-tree elements are not needed for DOM backend\n // do nothing\n }\n else if (BM.SHADOW || (BM.DYNAMIC && parent.getBackendMode() === 1 /* BackendMode.Shadow */)) {\n const be = child._$backendElement;\n if (ENV.DEV)\n performanceMeasureStart('backend.appendChild');\n frag.appendChild(be);\n if (ENV.DEV)\n performanceMeasureEnd();\n }\n else {\n Element.insertChildComposed(placeholder, null, child, true, i);\n }\n child.parentNode = replacer;\n if (isElement(child)) {\n (_a = placeholder._$mutationObserverTarget) === null || _a === void 0 ? void 0 : _a.detachChild(child);\n (_b = parent._$mutationObserverTarget) === null || _b === void 0 ? void 0 : _b.attachChild(child);\n }\n }\n // handling child nodes list for placeholder\n placeholder.childNodes = [];\n // change the parent\n placeholder.parentNode = null;\n placeholder.parentIndex = -1;\n replacer.parentNode = parent;\n // update containingSlot\n const placeholderContainingSlot = placeholder.containingSlot;\n const placeholderSlotIndex = placeholder.slotIndex;\n if (placeholderContainingSlot !== undefined) {\n Element._$updateContainingSlot(replacer, placeholderContainingSlot);\n if (placeholderContainingSlot) {\n Element._$spliceSlotNodes(placeholderContainingSlot, placeholderSlotIndex, 1, undefined);\n }\n }\n const containingSlotUpdater = replacedChildren.length\n ? Element._$updateSubtreeSlotNodes(replacer, replacedChildren, Element._$getParentHostShadowRoot(replacer), Element._$getParentHostShadowRoot(placeholder), 0)\n : null;\n containingSlotUpdater === null || containingSlotUpdater === void 0 ? void 0 : containingSlotUpdater.updateContainingSlot();\n containingSlotUpdater === null || containingSlotUpdater === void 0 ? void 0 : containingSlotUpdater.removeSlotNodes();\n // handling child nodes list for parent\n parent.childNodes[posIndex] = replacer;\n replacer.parentIndex = posIndex;\n // spread in composed tree\n if (BM.SHADOW || (BM.DYNAMIC && parent.getBackendMode() === 1 /* BackendMode.Shadow */)) {\n if (parent._$backendElement) {\n if (ENV.DEV)\n performanceMeasureStart('backend.replaceChild');\n parent._$backendElement.replaceChild(replacer._$backendElement, placeholder._$backendElement, posIndex);\n if (ENV.DEV)\n performanceMeasureEnd();\n if (ENV.DEV)\n performanceMeasureStart('backend.spliceAppend');\n (_c = replacer._$backendElement) === null || _c === void 0 ? void 0 : _c.spliceAppend(frag);\n if (ENV.DEV)\n performanceMeasureEnd();\n }\n if (ENV.DEV)\n performanceMeasureStart('backend.release');\n frag.release();\n if (ENV.DEV)\n performanceMeasureEnd();\n }\n else {\n Element.insertChildComposed(parent, replacer, placeholder, true, posIndex);\n for (let i = 0; i < replacedChildren.length; i += 1) {\n const child = replacedChildren[i];\n Element.insertChildComposed(replacer, child, undefined, false, i);\n }\n }\n containingSlotUpdater === null || containingSlotUpdater === void 0 ? void 0 : containingSlotUpdater.insertSlotNodes();\n if (placeholderContainingSlot !== undefined) {\n Element._$updateContainingSlot(placeholder, undefined);\n if (placeholderContainingSlot) {\n Element._$spliceSlotNodes(placeholderContainingSlot, placeholderSlotIndex, 0, [replacer]);\n }\n }\n // update subtree slots\n // (assume that placeholder and replacer will never be slot node)\n replacer._$subtreeSlotStart = placeholder._$subtreeSlotStart;\n replacer._$subtreeSlotEnd = placeholder._$subtreeSlotEnd;\n (_d = parent._$mutationObserverTarget) === null || _d === void 0 ? void 0 : _d.detachChild(placeholder);\n (_e = parent._$mutationObserverTarget) === null || _e === void 0 ? void 0 : _e.attachChild(replacer);\n // handling child nodes list for replacer\n replacer.childNodes.push(...replacedChildren);\n for (let i = replacer.childNodes.length - replacedChildren.length; i < replacer.childNodes.length; i += 1) {\n replacer.childNodes[i].parentIndex = i;\n }\n // update id and slot cache if needed\n (_f = parent.ownerShadowRoot) === null || _f === void 0 ? void 0 : _f._$markIdCacheDirty();\n // call life-times\n if (parent._$attached) {\n Element.checkAndCallDetached(placeholder);\n Element.checkChildObservers(parent, 'remove', placeholder);\n Element.checkAndCallAttached(replacer);\n Element.checkChildObservers(parent, 'add', replacer);\n for (let i = 0; i < replacedChildren.length; i += 1) {\n const child = replacedChildren[i];\n Element.checkAndCallMoved(child);\n Element.checkChildObservers(parent, 'move', child);\n }\n }\n }\n appendChild(child) {\n Element.insertChildSingleOperation(this, child, this.childNodes.length, false);\n }\n insertChildAt(child, index) {\n Element.insertChildSingleOperation(this, child, index, false);\n }\n insertBefore(child, before) {\n const index = before ? before.parentIndex : -1;\n Element.insertChildSingleOperation(this, child, index, false);\n }\n removeChildAt(index) {\n Element.insertChildSingleOperation(this, null, index, true);\n }\n removeChild(child) {\n const index = child.parentIndex;\n Element.insertChildSingleOperation(this, null, index, true);\n }\n replaceChildAt(child, index) {\n Element.insertChildSingleOperation(this, child, index, true);\n }\n replaceChild(child, relChild) {\n const index = relChild.parentIndex;\n Element.insertChildSingleOperation(this, child, index, true);\n }\n insertChildren(children, index) {\n Element.insertChildBatchInsertion(this, children, index);\n }\n removeChildren(index, count) {\n Element.insertChildBatchRemoval(this, index, count);\n }\n selfReplaceWith(replaceWith) {\n const parent = this.parentNode;\n if (parent) {\n Element.insertChildPlaceholderReplace(parent, this.parentIndex, replaceWith);\n }\n }\n /** @internal */\n static _$generateIdMap(node) {\n const idMap = Object.create(null);\n const dfs = function dfs(node) {\n if (isElement(node)) {\n const nodeId = node._$nodeId;\n if (nodeId) {\n if (!idMap[nodeId])\n idMap[nodeId] = node;\n }\n node.childNodes.forEach(dfs);\n }\n };\n dfs(node);\n return idMap;\n }\n /** Trigger an event on the element */\n triggerEvent(name, detail, options) {\n Event.triggerEvent(this, name, detail, options);\n }\n /** Trigger an event with specified event object on the element */\n dispatchEvent(ev) {\n Event.dispatchEvent(this, ev);\n }\n /* @internal */\n _$setListenerStats(name, finalChanged, options = {}) {\n if (!this._$backendElement)\n return;\n const capture = !!options.capture || !!options.useCapture;\n let mutLevel;\n switch (finalChanged) {\n case 2 /* FinalChanged.None */:\n mutLevel = 0 /* MutLevel.None */;\n break;\n case 4 /* FinalChanged.Mut */:\n mutLevel = 1 /* MutLevel.Mut */;\n break;\n case 3 /* FinalChanged.Final */:\n mutLevel = 2 /* MutLevel.Final */;\n break;\n default:\n return;\n }\n if (this._$nodeTreeContext) {\n if (ENV.DEV)\n performanceMeasureStart('backend.setListenerStats');\n if (BM.DOMLIKE || (BM.DYNAMIC && this.getBackendMode() === 3 /* BackendMode.Domlike */)) {\n ;\n this._$nodeTreeContext.setListenerStats(this._$backendElement, name, capture, mutLevel);\n }\n else {\n ;\n this._$backendElement.setListenerStats(name, capture, mutLevel);\n }\n if (ENV.DEV)\n performanceMeasureEnd();\n }\n }\n /** Add an event listener on the element */\n addListener(name, func, options) {\n const finalChanged = this._$eventTarget.addListener(name, func, options);\n this._$setListenerStats(name, finalChanged, options);\n if (isComponent(this) && this._$definition._$options.listenerChangeLifetimes) {\n this.triggerLifetime('listenerChange', [true, name, func, options]);\n }\n }\n /** Remove an event listener on the element */\n removeListener(name, func, options) {\n const finalChanged = this._$eventTarget.removeListener(name, func, options);\n if (finalChanged === 1 /* FinalChanged.Failed */)\n return;\n this._$setListenerStats(name, finalChanged, options);\n if (isComponent(this) && this._$definition._$options.listenerChangeLifetimes) {\n this.triggerLifetime('listenerChange', [false, name, func, options]);\n }\n }\n /** Get an attribute value ( `null` if not set or removed) */\n getAttribute(name) {\n if (!this._$nodeAttributes)\n return null;\n if (!Object.prototype.hasOwnProperty.call(this._$nodeAttributes, name))\n return null;\n return this._$nodeAttributes[name];\n }\n /** Update an attribute value */\n updateAttribute(name, value) {\n this.setAttribute(name, value);\n }\n /** Set an attribute value */\n setAttribute(name, value) {\n let attrs;\n if (this._$nodeAttributes) {\n attrs = this._$nodeAttributes;\n }\n else {\n attrs = Object.create(null);\n this._$nodeAttributes = attrs;\n }\n attrs[name] = value;\n const be = this._$backendElement;\n if (be) {\n if (ENV.DEV)\n performanceMeasureStart('backend.setAttribute');\n if (BM.DOMLIKE || (BM.DYNAMIC && this.getBackendMode() === 3 /* BackendMode.Domlike */)) {\n if (value === false) {\n be.removeAttribute(name);\n }\n else {\n be.setAttribute(name, value === true || value === undefined || value === null ? '' : String(value));\n }\n }\n else {\n be.setAttribute(name, value);\n }\n if (ENV.DEV)\n performanceMeasureEnd();\n }\n }\n /** Remove an attribute */\n removeAttribute(name) {\n if (this._$nodeAttributes) {\n delete this._$nodeAttributes[name];\n }\n const be = this._$backendElement;\n if (be) {\n if (ENV.DEV)\n performanceMeasureStart('backend.removeAttribute');\n be.removeAttribute(name);\n if (ENV.DEV)\n performanceMeasureEnd();\n }\n }\n /** Set a dataset on the element */\n setDataset(name, value) {\n this.dataset[name] = value;\n if (BM.SHADOW || (BM.DYNAMIC && this.getBackendMode() === 1 /* BackendMode.Shadow */)) {\n if (ENV.DEV)\n performanceMeasureStart('backend.setDataset');\n this._$backendElement.setDataset(name, value);\n if (ENV.DEV)\n performanceMeasureEnd();\n }\n }\n /** Set a mark on the element */\n setMark(name, value) {\n if (!this._$marks) {\n const marks = {};\n marks[name] = value;\n this._$marks = marks;\n }\n else {\n this._$marks[name] = value;\n }\n }\n /**\n * Collect the marks on the element\n *\n * The marks includes the marks on ancestors (in shadow tree) of the element.\n * If multiple marks on different elements shares the same name,\n * the mark value on the child-most element is accepted.\n */\n collectMarks() {\n const ret = {};\n let cur;\n for (cur = this; cur; cur = cur.parentNode) {\n const marks = cur._$marks;\n if (marks) {\n Object.keys(marks).forEach((name) => {\n if (!Object.prototype.hasOwnProperty.call(ret, name)) {\n ret[name] = marks[name];\n }\n });\n }\n }\n return ret;\n }\n /**\n * Attach the element into the backend, swapping out a placeholder element in the backend.\n *\n * The `element` must not be a child node of another element,\n * must not be attached before,\n * and must not have a `ownerShadowRoot` .\n * The `element` `targetParent` and `targetNode` must be in the same backend context.\n * The `element` replaces the `targetNode` in the `targetParent` .\n */\n static replaceDocumentElement(element, targetParent, targetNode) {\n /* istanbul ignore if */\n if (element._$attached) {\n throw new Error('An attached element cannot be attached again');\n }\n if (element._$backendElement) {\n if (ENV.DEV)\n performanceMeasureStart('backend.replaceChild');\n targetParent.replaceChild(element._$backendElement, targetNode);\n if (ENV.DEV)\n performanceMeasureEnd();\n }\n Element.checkAndCallAttached(element);\n }\n /**\n * Make the element looks like attached.\n *\n * If the element will never be attached to backend or it has no backend element at all,\n * this can be used to trigger `attached` life-time.\n */\n static pretendAttached(element) {\n if (!element._$attached) {\n Element.checkAndCallAttached(element);\n }\n }\n /**\n * Make the element looks like detached.\n *\n * This can be used to trigger `detached` life-time without remove the element in the backend.\n */\n static pretendDetached(element) {\n if (element._$attached) {\n Element.checkAndCallDetached(element);\n }\n }\n /** Check the element is attached or not */\n static isAttached(element) {\n return element._$attached;\n }\n /**\n * Set the slot name of the element\n *\n * Once this method is called for an `element` ,\n * it will be treated as a slot which can contain child nodes in composed tree.\n * This method should not be used in components,\n * otherwise the slot content will always be dangled.\n */\n static setSlotName(element, name) {\n var _a;\n /* istanbul ignore if */\n if (element._$inheritSlots) {\n throw new Error('Slot-inherit mode is not usable in slot element');\n }\n const slotName = name ? String(name) : '';\n const oldSlotName = element._$slotName;\n if (oldSlotName === slotName)\n return;\n const needInsertSlot = oldSlotName === null;\n element._$slotName = slotName;\n if (needInsertSlot) {\n element._$subtreeSlotStart = element._$subtreeSlotEnd = {\n value: element,\n prev: null,\n next: null,\n };\n }\n if (BM.SHADOW || (BM.DYNAMIC && element.getBackendMode() === 1 /* BackendMode.Shadow */)) {\n if (ENV.DEV)\n performanceMeasureStart('backend.setSlotName');\n (_a = element._$backendElement) === null || _a === void 0 ? void 0 : _a.setSlotName(slotName);\n if (ENV.DEV)\n performanceMeasureEnd();\n }\n const owner = element.ownerShadowRoot;\n if (owner) {\n if (needInsertSlot) {\n if (owner.getSlotMode() === 3 /* SlotMode.Dynamic */)\n element._$slotValues = Object.create(null);\n element.slotNodes = [];\n const parent = element.parentNode;\n if (parent) {\n Element._$updateSubtreeSlotsInsertion(parent, element._$subtreeSlotStart, element._$subtreeSlotEnd, element.parentIndex, false);\n }\n }\n else {\n if (owner.isConnected(element))\n owner._$applySlotRename(element, slotName, oldSlotName);\n }\n }\n }\n /**\n * Get the slot name of the element\n */\n static getSlotName(element) {\n const sn = element._$slotName;\n return sn === null ? undefined : sn;\n }\n /**\n * Set the virtual node to slot-inherit mode\n *\n * In slot-inherit mode of an element,\n * the child nodes of the element will be treated as siblings and can have different target slot.\n */\n static setInheritSlots(element) {\n /* istanbul ignore if */\n if (!element._$virtual) {\n throw new Error('Cannot set slot-inherit on non-virtual node');\n }\n /* istanbul ignore if */\n if (element._$slotName !== null || element.childNodes.length !== 0) {\n throw new Error('Slot-inherit mode cannot be set when the element has any child node');\n }\n if (BM.SHADOW || (BM.DYNAMIC && element.getBackendMode() === 1 /* BackendMode.Shadow */)) {\n const be = element._$backendElement;\n if (be) {\n if (ENV.DEV)\n performanceMeasureStart('backend.setInheritSlots');\n be.setInheritSlots();\n if (ENV.DEV)\n performanceMeasureEnd();\n }\n }\n element._$inheritSlots = true;\n }\n /** Get whether the slot-inherit mode is set or not */\n static getInheritSlots(element) {\n return element._$inheritSlots;\n }\n /** Get whether the slot-inherit mode is set or not */\n isInheritSlots() {\n return this._$inheritSlots;\n }\n /**\n * Set the binding slot of specific node\n *\n * Necessary if node belongs to a dynamic slot, which cannot be identified by slot name.\n */\n static setSlotElement(node, slot) {\n const oldSlotElement = node._$slotElement;\n if (oldSlotElement === slot)\n return;\n node._$slotElement = slot;\n const slotParentShadowRoot = Element._$getParentHostShadowRoot(node.parentNode);\n if (slotParentShadowRoot) {\n const containingSlotUpdater = Element._$updateSubtreeSlotNodes(node.parentNode, [node], slotParentShadowRoot, slotParentShadowRoot, node.parentIndex);\n const oldSlot = node.containingSlot;\n containingSlotUpdater === null || containingSlotUpdater === void 0 ? void 0 : containingSlotUpdater.updateContainingSlot();\n containingSlotUpdater === null || containingSlotUpdater === void 0 ? void 0 : containingSlotUpdater.removeSlotNodes();\n const newSlot = node.containingSlot;\n const recv = (node) => {\n if (isElement(node) && node._$inheritSlots) {\n for (let i = 0; i < node.childNodes.length; i += 1) {\n recv(node.childNodes[i]);\n }\n }\n else {\n Element.insertChildReassign(node.parentNode, node, oldSlot, newSlot, node.parentIndex);\n }\n };\n recv(node);\n containingSlotUpdater === null || containingSlotUpdater === void 0 ? void 0 : containingSlotUpdater.insertSlotNodes();\n }\n }\n static _$updateContainingSlot(node, containingSlot) {\n var _a;\n node.containingSlot = containingSlot;\n if (BM.SHADOW ||\n (BM.DYNAMIC && ((_a = node.ownerShadowRoot) === null || _a === void 0 ? void 0 : _a.getBackendMode()) === 1 /* BackendMode.Shadow */)) {\n if (ENV.DEV)\n performanceMeasureStart('backend.setContainingSlot');\n node._$backendElement.setContainingSlot(containingSlot ? containingSlot._$backendElement : containingSlot);\n if (ENV.DEV)\n performanceMeasureEnd();\n }\n }\n static _$spliceSlotNodes(slot, before, deleteCount, insertion) {\n const slotNodes = (slot.slotNodes = slot.slotNodes || []);\n const spliceBefore = before >= 0 && before < slotNodes.length;\n if (insertion === null || insertion === void 0 ? void 0 : insertion.length) {\n if (spliceBefore) {\n for (let i = before; i < before + deleteCount; i += 1) {\n slotNodes[i].slotIndex = undefined;\n }\n slotNodes.splice(before, deleteCount, ...insertion);\n for (let i = before; i < slotNodes.length; i += 1) {\n slotNodes[i].slotIndex = i;\n }\n }\n else {\n const start = slotNodes.length;\n slotNodes.push(...insertion);\n for (let i = start; i < slotNodes.length; i += 1) {\n slotNodes[i].slotIndex = i;\n }\n }\n }\n else if (deleteCount) {\n for (let i = before; i < before + deleteCount; i += 1) {\n slotNodes[i].slotIndex = undefined;\n }\n slotNodes.splice(before, deleteCount);\n for (let i = before; i < slotNodes.length; i += 1) {\n slotNodes[i].slotIndex = i;\n }\n }\n if (BM.SHADOW || (BM.DYNAMIC && slot.getBackendMode() === 1 /* BackendMode.Shadow */)) {\n if (insertion === null || insertion === void 0 ? void 0 : insertion.length) {\n if (ENV.DEV)\n performanceMeasureStart('backend.createFragment');\n const frag = slot._$nodeTreeContext.createFragment();\n if (ENV.DEV)\n performanceMeasureEnd();\n for (let i = 0; i < insertion.length; i += 1) {\n if (ENV.DEV)\n performanceMeasureStart('backend.appendChild');\n frag.appendChild(insertion[i]._$backendElement);\n if (ENV.DEV)\n performanceMeasureEnd();\n }\n if (spliceBefore) {\n if (ENV.DEV)\n performanceMeasureStart('backend.spliceBeforeSlotNodes');\n slot._$backendElement.spliceBeforeSlotNodes(before, deleteCount, frag);\n if (ENV.DEV)\n performanceMeasureEnd();\n }\n else {\n if (ENV.DEV)\n performanceMeasureStart('backend.spliceAppendSlotNodes');\n slot._$backendElement.spliceAppendSlotNodes(frag);\n if (ENV.DEV)\n performanceMeasureEnd();\n }\n frag.release();\n }\n else if (deleteCount) {\n if (ENV.DEV)\n performanceMeasureStart('backend.spliceRemoveSlotNodes');\n slot._$backendElement.spliceRemoveSlotNodes(before, deleteCount);\n if (ENV.DEV)\n performanceMeasureEnd();\n }\n }\n }\n /** @internal */\n static _$findSlotNodeInsertPosition(slot, target, newPosIndex) {\n const host = slot.ownerShadowRoot.getHostNode();\n const getNodeDepth = (node) => {\n let depth = 0;\n let cur = node;\n while (cur && cur !== host) {\n depth += 1;\n cur = cur.parentNode;\n }\n return depth;\n };\n const targetDepth = getNodeDepth(target);\n const comparePos = (slotNode1, parentIndex1, slotDepth1, slotNode2, parentIndex2, slotDepth2, posIndex) => {\n if (slotNode1 === slotNode2)\n return 0;\n if (slotNode1.parentNode === slotNode2.parentNode) {\n return parentIndex1 - (parentIndex2 === -1 ? posIndex : parentIndex2);\n }\n if (slotDepth2 < slotDepth1) {\n const nextSlotNode1 = slotNode1.parentNode;\n return comparePos(nextSlotNode1, nextSlotNode1.parentIndex, slotDepth1 - 1, slotNode2, parentIndex2, slotDepth2, posIndex);\n }\n const left = slotDepth1 < slotDepth2 ? slotNode1 : slotNode1.parentNode;\n const leftDepth = slotDepth1 < slotDepth2 ? slotDepth1 : slotDepth1 - 1;\n const right = slotNode2.parentNode;\n const rightDepth = slotDepth2 - 1;\n const rst = comparePos(left, left.parentIndex, leftDepth, right, right.parentIndex, rightDepth, posIndex);\n if (rst === 0)\n return -1;\n return rst;\n };\n const slotNodes = slot.slotNodes;\n let i = slotNodes.length - 1;\n for (; i >= 0; i -= 1) {\n const slotNode = slotNodes[i];\n if (comparePos(slotNode, slotNode.parentIndex, getNodeDepth(slotNode), target, target.parentIndex, targetDepth, newPosIndex >= 0\n ? newPosIndex - 0.5\n : // negative posIndex (such as -1) means to insert at the tail\n slotNodes.length) < 0)\n break;\n }\n const insertPos = i + 1;\n return insertPos;\n }\n /** Get composed parent (including virtual nodes) */\n getComposedParent() {\n if (isShadowRoot(this))\n return this.getHostNode();\n if (this.containingSlot !== undefined)\n return this.containingSlot;\n let parent = this.parentNode;\n while (parent === null || parent === void 0 ? void 0 : parent._$inheritSlots) {\n parent = parent.parentNode;\n }\n return parent;\n }\n /**\n * Get the composed children\n *\n * This method always returns a new array.\n * It is convenient but less performant.\n * For better performance, consider using `forEachComposedChild` .\n */\n getComposedChildren() {\n const ret = [];\n this.forEachComposedChild((child) => {\n ret.push(child);\n });\n return ret;\n }\n /**\n * Iterate composed child nodes (including virtual nodes)\n *\n * if `f` returns `false` then the iteration is interrupted.\n * Returns `true` if that happens.\n */\n forEachComposedChild(f) {\n if (this._$inheritSlots)\n return true;\n if (isComponent(this) && !this._$external) {\n return f(this.shadowRoot) !== false;\n }\n if (this._$slotName !== null) {\n const ownerShadowRoot = this.ownerShadowRoot;\n if (!ownerShadowRoot)\n return true;\n return ownerShadowRoot.forEachNodeInSpecifiedSlot(this, f);\n }\n const recInheritSlots = (children) => {\n for (let i = 0; i < children.length; i += 1) {\n const child = children[i];\n if (f(child) === false)\n return false;\n if (child._$inheritSlots) {\n if (!recInheritSlots(child.childNodes))\n return false;\n }\n }\n return true;\n };\n return recInheritSlots(this.childNodes);\n }\n /**\n * Iterate non-virtual composed child nodes\n *\n * if `f` returns `false` then the iteration is interrupted.\n * Returns `true` if that happens.\n */\n forEachNonVirtualComposedChild(f) {\n if (this._$inheritSlots)\n return true;\n const recNonVirtual = (child) => {\n if (child._$virtual) {\n return child.forEachNonVirtualComposedChild(f);\n }\n return f(child) !== false;\n };\n if (isComponent(this) && !this._$external) {\n return recNonVirtual(this.shadowRoot);\n }\n if (this._$slotName !== null) {\n const ownerShadowRoot = this.ownerShadowRoot;\n if (!ownerShadowRoot)\n return true;\n return ownerShadowRoot.forEachSlotContentInSpecifiedSlot(this, recNonVirtual);\n }\n const recInheritSlots = (children) => {\n for (let i = 0; i < children.length; i += 1) {\n const child = children[i];\n if (!recNonVirtual(child))\n return false;\n if (child._$inheritSlots) {\n if (!recInheritSlots(child.childNodes))\n return false;\n }\n }\n return true;\n };\n return recInheritSlots(this.childNodes);\n }\n /** Parse a selector string so that it can be used multiple queries */\n static parseSelector(str) {\n return new ParsedSelector(str);\n }\n /** Select the first descendant which matches the selector */\n querySelector(selectorStr) {\n const parsedSelector = selectorStr instanceof ParsedSelector ? selectorStr : new ParsedSelector(selectorStr);\n const ret = parsedSelector.query(this, true);\n return ret;\n }\n /** Select all descendants which matches the selector */\n querySelectorAll(selectorStr) {\n const parsedSelector = selectorStr instanceof ParsedSelector ? selectorStr : new ParsedSelector(selectorStr);\n const ret = parsedSelector.query(this, false);\n return ret;\n }\n /** Test whether the target matches the selector */\n static matchSelector(selectorStr, target) {\n const parsedSelector = selectorStr instanceof ParsedSelector ? selectorStr : new ParsedSelector(selectorStr);\n return parsedSelector.testSelector(null, target);\n }\n /** Test whether the target in this subtree matches the selector */\n matchSelector(selectorStr, target) {\n const parsedSelector = selectorStr instanceof ParsedSelector ? selectorStr : new ParsedSelector(selectorStr);\n return parsedSelector.testSelector(this, target);\n }\n /**\n * Get the bounding client rect\n *\n * Return zero values when the backend element is invalid or it does not have layout information.\n */\n getBoundingClientRect(cb) {\n var _a;\n const backendElement = this._$backendElement;\n if (!backendElement) {\n setTimeout(() => {\n cb({\n left: 0,\n top: 0,\n width: 0,\n height: 0,\n });\n }, 0);\n return;\n }\n if (BM.DOMLIKE || (BM.DYNAMIC && this.getBackendMode() === 3 /* BackendMode.Domlike */)) {\n const e = backendElement;\n const res = ((_a = e.getBoundingClientRect) === null || _a === void 0 ? void 0 : _a.call(e)) || { left: 0, top: 0, width: 0, height: 0 };\n setTimeout(() => {\n cb(res);\n }, 0);\n }\n else {\n const be = backendElement;\n if (be.getBoundingClientRect) {\n be.getBoundingClientRect(cb);\n }\n else {\n setTimeout(() => {\n cb({\n left: 0,\n top: 0,\n width: 0,\n height: 0,\n });\n }, 0);\n }\n }\n }\n /**\n * Get the bounding client rect\n *\n * Return zero values when the backend element is invalid or it does not have layout information.\n */\n getScrollOffset(cb) {\n const backendElement = this._$backendElement;\n if (!backendElement) {\n setTimeout(() => {\n cb({\n scrollLeft: 0,\n scrollTop: 0,\n scrollWidth: 0,\n scrollHeight: 0,\n });\n }, 0);\n return;\n }\n if (BM.DOMLIKE || (BM.DYNAMIC && this.getBackendMode() === 3 /* BackendMode.Domlike */)) {\n const e = backendElement;\n const res = {\n scrollLeft: e.scrollLeft || 0,\n scrollTop: e.scrollTop || 0,\n scrollWidth: e.scrollWidth || 0,\n scrollHeight: e.scrollHeight || 0,\n };\n setTimeout(() => {\n cb(res);\n }, 0);\n }\n else {\n const be = backendElement;\n if (be.getScrollOffset) {\n be.getScrollOffset(cb);\n }\n else {\n setTimeout(() => {\n cb({\n scrollLeft: 0,\n scrollTop: 0,\n scrollWidth: 0,\n scrollHeight: 0,\n });\n }, 0);\n }\n }\n }\n /**\n * Create an intersection observer\n *\n * The `relativeElement` is the element to calculate intersection with ( `null` for the viewport).\n * The `relativeElementMargin` is the margins of the `relativeElement` .\n * The `thresholds` is a list of intersection ratios to trigger the `listener` .\n * The listener always triggers once immediately after this call.\n */\n createIntersectionObserver(relativeElement, relativeElementMargin, thresholds, listener) {\n const backendElement = this._$backendElement;\n if (backendElement) {\n if (relativeElement && !relativeElement._$backendElement) {\n return null;\n }\n if (BM.DOMLIKE || (BM.DYNAMIC && this.getBackendMode() === 3 /* BackendMode.Domlike */)) {\n const context = this._$nodeTreeContext;\n if (!context || !context.createIntersectionObserver)\n return null;\n return context.createIntersectionObserver(backendElement, (relativeElement === null || relativeElement === void 0 ? void 0 : relativeElement._$backendElement) || null, relativeElementMargin, thresholds, listener);\n }\n const be = backendElement;\n if (!be.createIntersectionObserver)\n return null;\n return be.createIntersectionObserver((relativeElement === null || relativeElement === void 0 ? void 0 : relativeElement._$backendElement) || null, relativeElementMargin, thresholds, listener);\n }\n return null;\n }\n /**\n * Get an interactive context\n */\n getContext(cb) {\n const backendElement = this._$backendElement;\n if (!backendElement)\n return;\n if (BM.DOMLIKE || (BM.DYNAMIC && this.getBackendMode() === 3 /* BackendMode.Domlike */)) {\n const context = this._$nodeTreeContext;\n if (context === null || context === void 0 ? void 0 : context.getContext) {\n context.getContext(backendElement, cb);\n }\n else {\n cb(null);\n }\n }\n else {\n const be = backendElement;\n if (be.getContext) {\n be.getContext(cb);\n }\n else {\n cb(null);\n }\n }\n }\n}\nElement.isElement = isElement;\n/** @internal */\nElement._$getParentHostShadowRoot = (parent) => {\n let parentSlotHost = parent;\n while (parentSlotHost === null || parentSlotHost === void 0 ? void 0 : parentSlotHost._$inheritSlots)\n parentSlotHost = parentSlotHost.parentNode;\n return isComponent(parentSlotHost) && !parentSlotHost._$external\n ? parentSlotHost.shadowRoot\n : null;\n};\nElement.prototype[ELEMENT_SYMBOL] = true;\n//# sourceMappingURL=element.js.map","import { Behavior } from './behavior';\nimport { ComponentDefinition } from './component';\nimport { safeCallback } from './func_arr';\nimport { TraitBehavior } from './trait_behaviors';\nimport { isComponent, isElement, isVirtualNode } from './type_symbol';\nimport { triggerWarning } from './warning';\nexport var RelationType;\n(function (RelationType) {\n RelationType[RelationType[\"Ancestor\"] = 0] = \"Ancestor\";\n RelationType[RelationType[\"Descendant\"] = 1] = \"Descendant\";\n RelationType[RelationType[\"ParentNonVirtualNode\"] = 2] = \"ParentNonVirtualNode\";\n RelationType[RelationType[\"ChildNonVirtualNode\"] = 3] = \"ChildNonVirtualNode\";\n RelationType[RelationType[\"ParentComponent\"] = 4] = \"ParentComponent\";\n RelationType[RelationType[\"ChildComponent\"] = 5] = \"ChildComponent\";\n})(RelationType || (RelationType = {}));\nconst RELATION_TYPE_COUNT = 6;\nexport const normalizeRelation = (ownerSpace, is, key, relation) => {\n const checkRelationFunc = (f) => {\n if (typeof f === 'function') {\n return f;\n }\n if (f !== undefined) {\n triggerWarning(`the \"${key}\" relation listener is not a function (when preparing behavior \"${is}\").`);\n }\n return null;\n };\n let type;\n if (relation.type === 'parent') {\n type = 4 /* RelationType.ParentComponent */;\n }\n else if (relation.type === 'child') {\n type = 5 /* RelationType.ChildComponent */;\n }\n else if (relation.type === 'parent-common-node') {\n type = 2 /* RelationType.ParentNonVirtualNode */;\n }\n else if (relation.type === 'child-common-node') {\n type = 3 /* RelationType.ChildNonVirtualNode */;\n }\n else if (relation.type === 'ancestor') {\n type = 0 /* RelationType.Ancestor */;\n }\n else if (relation.type === 'descendant') {\n type = 1 /* RelationType.Descendant */;\n }\n else {\n const type = relation.type;\n triggerWarning(`the \"${key}\" relation has an invalid relation type \"${type}\" (when preparing behavior \"${is}\").`);\n return null;\n }\n let target = null;\n if (relation.target instanceof ComponentDefinition) {\n target = relation.target.behavior;\n }\n else if (relation.target instanceof Behavior || relation.target instanceof TraitBehavior) {\n target = relation.target;\n }\n else {\n const path = String(relation.target || key);\n const usingTarget = ownerSpace.getComponentByUrlWithoutDefault(path, is);\n if (usingTarget) {\n target = usingTarget.behavior;\n }\n else {\n const globalTarget = ownerSpace.getGlobalUsingComponent(path);\n if (typeof globalTarget === 'object' && globalTarget !== null) {\n target = globalTarget.behavior;\n }\n }\n }\n if (!target) {\n triggerWarning(`the target of relation \"${key}\" is not a valid behavior or component (when preparing behavior \"${is}\").`);\n return null;\n }\n return {\n target,\n type,\n linked: checkRelationFunc(relation.linked),\n linkChanged: checkRelationFunc(relation.linkChanged),\n unlinked: checkRelationFunc(relation.unlinked),\n linkFailed: checkRelationFunc(relation.linkFailed),\n };\n};\nexport const generateRelationDefinitionGroup = (relations) => {\n if (relations === undefined)\n return null;\n const group = {\n definitions: new Array(RELATION_TYPE_COUNT),\n keyMap: Object.create(null),\n };\n const defs = group.definitions;\n const keyMap = group.keyMap;\n const keys = Object.keys(relations);\n for (let i = 0; i < keys.length; i += 1) {\n const key = keys[i];\n const relation = relations[key];\n const relationType = relation.type;\n if (defs[relationType]) {\n keyMap[key] = [relationType, defs[relationType].length];\n defs[relationType].push(relation);\n }\n else {\n keyMap[key] = [relationType, 0];\n defs[relationType] = [relation];\n }\n }\n return group;\n};\nexport const cloneRelationDefinitionGroup = (group) => {\n const newGroup = {\n definitions: group.definitions.slice(),\n keyMap: Object.assign(Object.create(null), group.keyMap),\n };\n return newGroup;\n};\nexport class Relation {\n constructor(associatedComponent, group) {\n this._$comp = associatedComponent;\n const links = new Array(RELATION_TYPE_COUNT);\n if (group) {\n for (let type = 0; type < RELATION_TYPE_COUNT; type += 1) {\n const definitions = group.definitions[type];\n if (definitions) {\n const link = new Array(definitions.length);\n for (let i = 0; i < definitions.length; i += 1) {\n link[i] = null;\n }\n links[type] = link;\n }\n }\n }\n this._$group = group;\n this._$sharedGroup = true;\n this._$links = links;\n }\n add(relation) {\n if (this._$sharedGroup) {\n this._$sharedGroup = false;\n const group = this._$group;\n if (group) {\n this._$group = {\n definitions: group.definitions.slice(),\n keyMap: Object.assign(Object.create(null), group.keyMap),\n };\n }\n else {\n this._$group = {\n definitions: new Array(RELATION_TYPE_COUNT),\n keyMap: Object.create(null),\n };\n }\n }\n const key = Symbol('');\n const defs = this._$group.definitions;\n const keyMap = this._$group.keyMap;\n const relationType = relation.type;\n if (defs[relationType]) {\n keyMap[key] = [relationType, defs[relationType].length];\n defs[relationType].push(relation);\n }\n else {\n keyMap[key] = [relationType, 0];\n defs[relationType] = [relation];\n }\n const linksGroup = this._$links;\n if (linksGroup[relationType] === undefined) {\n linksGroup[relationType] = [null];\n }\n else {\n linksGroup[relationType].push(null);\n }\n return key;\n }\n triggerLinkEvent(parentType, isDetach) {\n var _a, _b;\n const comp = this._$comp;\n const linksGroup = this._$links;\n const selfDefs = (_a = this._$group) === null || _a === void 0 ? void 0 : _a.definitions[parentType];\n if (!selfDefs)\n return;\n for (let i = 0; i < selfDefs.length; i += 1) {\n const links = linksGroup[parentType];\n const oldLink = links[i];\n let newLink = null;\n const def = selfDefs[i];\n const parentBehavior = def.target;\n if (!isDetach) {\n let cur = comp;\n for (;;) {\n const next = cur.parentNode;\n if (!next)\n break;\n cur = next;\n if (isVirtualNode(cur)) {\n continue;\n }\n if (isComponent(cur)) {\n if (cur.hasBehavior(parentBehavior)) {\n const parentRelation = cur._$relation;\n if (parentRelation) {\n let rt;\n if (parentType === 4 /* RelationType.ParentComponent */) {\n rt = 5 /* RelationType.ChildComponent */;\n }\n else if (parentType === 0 /* RelationType.Ancestor */) {\n rt = 1 /* RelationType.Descendant */;\n }\n else {\n rt = 3 /* RelationType.ChildNonVirtualNode */;\n }\n const parentDefs = (_b = parentRelation._$group) === null || _b === void 0 ? void 0 : _b.definitions[rt];\n if (parentDefs) {\n for (let j = 0; j < parentDefs.length; j += 1) {\n const def = parentDefs[j];\n if (def.target && this._$comp.hasBehavior(def.target)) {\n newLink = {\n target: cur,\n def,\n };\n break;\n }\n }\n if (newLink)\n break;\n }\n }\n }\n if (parentType === 4 /* RelationType.ParentComponent */)\n break;\n }\n if (parentType === 2 /* RelationType.ParentNonVirtualNode */)\n break;\n }\n }\n links[i] = newLink;\n if (oldLink) {\n const oldTarget = oldLink.target;\n const oldDef = oldLink.def;\n if (!newLink || oldLink.target !== newLink.target || oldLink.def !== newLink.def) {\n if (oldDef.unlinked) {\n safeCallback('Relation Unlinked Callback', oldDef.unlinked, oldTarget.getMethodCaller(), [comp.getMethodCaller()], oldTarget);\n }\n if (def.unlinked) {\n safeCallback('Relation Unlinked Callback', def.unlinked, comp.getMethodCaller(), [oldTarget.getMethodCaller()], comp);\n }\n }\n else {\n if (oldDef.linkChanged) {\n safeCallback('Relation Link Changed Callback', oldDef.linkChanged, oldTarget.getMethodCaller(), [comp.getMethodCaller()], oldTarget);\n }\n if (def.linkChanged) {\n safeCallback('Relation Link Changed Callback', def.linkChanged, comp.getMethodCaller(), [oldTarget.getMethodCaller()], comp);\n }\n }\n }\n if (newLink) {\n const newTarget = newLink.target;\n const newDef = newLink.def;\n if (!oldLink || oldLink.target !== newLink.target || oldLink.def !== newLink.def) {\n if (newDef.linked) {\n safeCallback('Relation Linked Callback', newDef.linked, newTarget.getMethodCaller(), [comp.getMethodCaller()], newTarget);\n }\n if (def.linked) {\n safeCallback('Relation Linked Callback', def.linked, comp.getMethodCaller(), [newTarget.getMethodCaller()], comp);\n }\n }\n }\n if (!isDetach && !newLink && def.linkFailed) {\n safeCallback('Relation Link Failed Callback', def.linkFailed, comp.getMethodCaller(), [], comp);\n }\n }\n }\n getLinkedTargets(key) {\n var _a, _b, _c, _d;\n const typeWithIndex = (_a = this._$group) === null || _a === void 0 ? void 0 : _a.keyMap[key];\n if (!typeWithIndex) {\n triggerWarning(`no relation \"${String(key)}\" found.`);\n return [];\n }\n const [type, index] = typeWithIndex;\n if (type === 4 /* RelationType.ParentComponent */ ||\n type === 2 /* RelationType.ParentNonVirtualNode */ ||\n type === 0 /* RelationType.Ancestor */) {\n const link = (_b = this._$links[type]) === null || _b === void 0 ? void 0 : _b[index];\n if (link)\n return [link.target];\n return [];\n }\n const ret = [];\n const comp = this._$comp;\n const def = (_d = (_c = this._$group) === null || _c === void 0 ? void 0 : _c.definitions[type]) === null || _d === void 0 ? void 0 : _d[index];\n const dfs = (node) => {\n const children = node.childNodes;\n for (let i = 0; i < children.length; i += 1) {\n const child = children[i];\n if (!isElement(child))\n continue;\n if (isVirtualNode(child)) {\n dfs(child);\n continue;\n }\n if (isComponent(child)) {\n if (child._$relation) {\n let links;\n if (type === 5 /* RelationType.ChildComponent */) {\n links = child._$relation._$links[4 /* RelationType.ParentComponent */];\n }\n else if (type === 1 /* RelationType.Descendant */) {\n links = child._$relation._$links[0 /* RelationType.Ancestor */];\n }\n else {\n links = child._$relation._$links[2 /* RelationType.ParentNonVirtualNode */];\n }\n if (links) {\n for (let i = 0; i < links.length; i += 1) {\n const link = links[i];\n if (link && link.target === comp && link.def === def) {\n ret.push(child);\n break;\n }\n }\n }\n }\n if (type === 1 /* RelationType.Descendant */)\n dfs(child);\n }\n else {\n if (type === 5 /* RelationType.ChildComponent */ || type === 1 /* RelationType.Descendant */)\n dfs(child);\n }\n }\n };\n dfs(this._$comp);\n return ret;\n }\n}\n//# sourceMappingURL=relation.js.map","import { BM, } from './backend';\nimport { ClassList, StyleScopeManager } from './class_list';\nimport { Element } from './element';\nimport { ENV, globalOptions } from './global_options';\nimport { performanceMeasureEnd, performanceMeasureStart } from './devtool';\nimport { NATIVE_NODE_SYMBOL, isNativeNode } from './type_symbol';\nexport class NativeNode extends Element {\n /* istanbul ignore next */\n constructor() {\n throw new Error('Element cannot be constructed directly');\n // eslint-disable-next-line no-unreachable\n super();\n }\n static create(tagName, owner, stylingName, placeholderHandlerRemover) {\n var _a, _b;\n const node = Object.create(NativeNode.prototype);\n node.is = tagName;\n node.stylingName = stylingName !== null && stylingName !== void 0 ? stylingName : tagName;\n node._$placeholderHandlerRemover = placeholderHandlerRemover;\n const nodeTreeContext = owner.getBackendContext();\n let backendElement = null;\n if (nodeTreeContext) {\n if (ENV.DEV)\n performanceMeasureStart('backend.createElement');\n if (BM.DOMLIKE || (BM.DYNAMIC && owner.getBackendMode() === 3 /* BackendMode.Domlike */)) {\n backendElement = nodeTreeContext.document.createElement(tagName);\n }\n else if (BM.SHADOW || (BM.DYNAMIC && owner.getBackendMode() === 1 /* BackendMode.Shadow */)) {\n backendElement = owner._$backendShadowRoot.createElement(tagName, node.stylingName);\n }\n else {\n const backend = nodeTreeContext;\n backendElement = backend.createElement(tagName, node.stylingName);\n }\n if (ENV.DEV)\n performanceMeasureEnd();\n }\n node._$initialize(false, backendElement, owner, owner._$nodeTreeContext);\n const ownerHost = owner.getHostNode();\n const ownerComponentOptions = ownerHost.getComponentOptions();\n const styleScope = (_a = ownerComponentOptions.styleScope) !== null && _a !== void 0 ? _a : StyleScopeManager.globalScope();\n const extraStyleScope = (_b = ownerComponentOptions.extraStyleScope) !== null && _b !== void 0 ? _b : undefined;\n const styleScopeManager = ownerHost._$behavior.ownerSpace.styleScopeManager;\n node.classList = new ClassList(node, undefined, ownerHost.classList, styleScope, extraStyleScope, styleScopeManager);\n if (backendElement) {\n if (BM.COMPOSED || (BM.DYNAMIC && owner.getBackendMode() === 2 /* BackendMode.Composed */)) {\n if (ENV.DEV)\n performanceMeasureStart('backend.setStyleScope');\n backendElement.setStyleScope(styleScope, extraStyleScope);\n if (ENV.DEV)\n performanceMeasureEnd();\n }\n if (globalOptions.writeExtraInfoToAttr) {\n const prefix = styleScopeManager.queryName(styleScope);\n if (prefix) {\n backendElement.setAttribute('exparser:info-class-prefix', `${prefix}--`);\n }\n }\n if (ENV.DEV)\n performanceMeasureStart('backend.associateValue');\n if (!(BM.DOMLIKE || (BM.DYNAMIC && owner.getBackendMode() === 3 /* BackendMode.Domlike */))) {\n ;\n backendElement.associateValue(node);\n }\n else {\n ;\n owner.getBackendContext().associateValue(backendElement, node);\n }\n if (ENV.DEV)\n performanceMeasureEnd();\n }\n return node;\n }\n setModelBindingListener(propName, listener) {\n if (!this._$modelBindingListeners) {\n this._$modelBindingListeners = Object.create(null);\n }\n if (!this._$modelBindingListeners[propName]) {\n const backendElement = this.getBackendElement();\n if (backendElement) {\n const listener = (value) => {\n var _a;\n const listener = (_a = this._$modelBindingListeners) === null || _a === void 0 ? void 0 : _a[propName];\n if (listener) {\n listener.call(this, value);\n }\n };\n if (ENV.DEV)\n performanceMeasureStart('backend.setModelBindingStat');\n if (BM.DOMLIKE || (BM.DYNAMIC && this.getBackendMode() === 3 /* BackendMode.Domlike */)) {\n ;\n this.getBackendContext().setModelBindingStat(backendElement, propName, listener);\n }\n else {\n ;\n backendElement.setModelBindingStat(propName, listener);\n }\n if (ENV.DEV)\n performanceMeasureEnd();\n }\n }\n this._$modelBindingListeners[propName] = listener;\n }\n getModelBindingListeners() {\n const listeners = Object.create(null);\n if (this._$modelBindingListeners) {\n Object.keys(this._$modelBindingListeners).forEach((propName) => {\n const listener = (value) => {\n var _a;\n const listener = (_a = this._$modelBindingListeners) === null || _a === void 0 ? void 0 : _a[propName];\n if (listener) {\n listener.call(this, value);\n }\n };\n listeners[propName] = listener;\n });\n }\n return listeners;\n }\n}\nNativeNode.isNativeNode = isNativeNode;\nNativeNode.prototype[NATIVE_NODE_SYMBOL] = true;\n//# sourceMappingURL=native_node.js.map","import { BM, } from './backend';\nimport { ENV } from './global_options';\nimport { performanceMeasureEnd, performanceMeasureStart } from './devtool';\nimport { MutationObserverTarget } from './mutation_observer';\nimport { TEXT_NODE_SYMBOL, isTextNode } from './type_symbol';\nexport class TextNode {\n constructor(text, owner) {\n /** @internal */\n this._$slotElement = null;\n /** @internal */\n this._$destroyOnDetach = false;\n /** @internal */\n this._$subtreeSlotStart = null;\n /** @internal */\n this._$subtreeSlotEnd = null;\n this._$text = String(text);\n let backendElement = null;\n const context = owner.getBackendContext();\n if (context) {\n if (ENV.DEV)\n performanceMeasureStart('backend.createTextNode');\n if (BM.DOMLIKE || (BM.DYNAMIC && owner.getBackendMode() === 3 /* BackendMode.Domlike */)) {\n backendElement = context.document.createTextNode(text);\n }\n else if (BM.SHADOW || (BM.DYNAMIC && owner.getBackendMode() === 1 /* BackendMode.Shadow */)) {\n const backend = owner._$backendShadowRoot;\n backendElement = backend.createTextNode(text);\n }\n else {\n const backend = context;\n backendElement = backend.createTextNode(text);\n }\n }\n if (ENV.DEV)\n performanceMeasureEnd();\n this._$backendElement = backendElement;\n this.ownerShadowRoot = owner;\n this.parentNode = null;\n this.parentIndex = -1;\n this.containingSlot = undefined;\n }\n static create(text, ownerShadowRoot) {\n return new TextNode(text, ownerShadowRoot);\n }\n asTextNode() {\n return this;\n }\n // eslint-disable-next-line class-methods-use-this\n asElement() {\n return null;\n }\n // eslint-disable-next-line class-methods-use-this\n asNativeNode() {\n return null;\n }\n // eslint-disable-next-line class-methods-use-this\n asVirtualNode() {\n return null;\n }\n // eslint-disable-next-line class-methods-use-this\n asInstanceOf() {\n return null;\n }\n /** Destroy the backend element */\n destroyBackendElement() {\n if (this._$backendElement) {\n if (!(BM.DOMLIKE ||\n (BM.DYNAMIC && this.ownerShadowRoot.getBackendMode() === 3 /* BackendMode.Domlike */))) {\n if (ENV.DEV)\n performanceMeasureStart('backend.release');\n this._$backendElement.release();\n if (ENV.DEV)\n performanceMeasureEnd();\n }\n this._$backendElement = null;\n }\n }\n /** Destroy the backend element on next detach */\n destroyBackendElementOnDetach() {\n this._$destroyOnDetach = true;\n }\n /** Get the backend element */\n getBackendElement() {\n return this._$backendElement;\n }\n /** Get composed parent (including virtual nodes) */\n getComposedParent() {\n if (this.containingSlot !== undefined)\n return this.containingSlot;\n let parent = this.parentNode;\n while (parent === null || parent === void 0 ? void 0 : parent._$inheritSlots) {\n parent = parent.parentNode;\n }\n return parent;\n }\n get $$() {\n return this._$backendElement;\n }\n get textContent() {\n return this._$text;\n }\n set textContent(text) {\n const newText = String(text);\n if (newText === this._$text)\n return;\n this._$text = newText;\n if (this._$backendElement) {\n if (ENV.DEV)\n performanceMeasureStart('backend.setText');\n if (BM.DOMLIKE ||\n (BM.DYNAMIC && this.ownerShadowRoot.getBackendMode() === 3 /* BackendMode.Domlike */)) {\n ;\n this._$backendElement.textContent = this._$text;\n }\n else {\n ;\n this._$backendElement.setText(this._$text);\n }\n if (ENV.DEV)\n performanceMeasureEnd();\n }\n MutationObserverTarget.callTextObservers(this, {\n type: 'characterData',\n target: this,\n });\n }\n}\nTextNode.isTextNode = isTextNode;\nTextNode.prototype[TEXT_NODE_SYMBOL] = true;\n//# sourceMappingURL=text_node.js.map","import { BM } from './backend';\nimport { performanceMeasureEnd, performanceMeasureStart } from './devtool';\nimport { Element } from './element';\nimport { ENV } from './global_options';\nimport { VIRTUAL_NODE_SYMBOL, isVirtualNode } from './type_symbol';\nexport class VirtualNode extends Element {\n /* istanbul ignore next */\n constructor() {\n throw new Error('Element cannot be constructed directly');\n // eslint-disable-next-line no-unreachable\n super();\n }\n /* @internal */\n _$initializeVirtual(virtualName, owner, nodeTreeContext) {\n this.is = String(virtualName);\n if (nodeTreeContext &&\n (BM.SHADOW || (BM.DYNAMIC && nodeTreeContext.mode === 1 /* BackendMode.Shadow */))) {\n const shadowRoot = owner._$backendShadowRoot;\n if (ENV.DEV)\n performanceMeasureStart('backend.createVirtualNode');\n const be = shadowRoot.createVirtualNode(virtualName);\n if (ENV.DEV)\n performanceMeasureEnd();\n this._$initialize(true, be, owner, nodeTreeContext);\n if (ENV.DEV)\n performanceMeasureStart('backend.associateValue');\n be.associateValue(this);\n if (ENV.DEV)\n performanceMeasureEnd();\n }\n else {\n this._$initialize(true, null, owner, owner._$nodeTreeContext);\n }\n }\n static create(virtualName, owner) {\n const node = Object.create(VirtualNode.prototype);\n node._$initializeVirtual(virtualName, owner, owner.getBackendContext());\n return node;\n }\n}\nVirtualNode.isVirtualNode = isVirtualNode;\nVirtualNode.prototype[VIRTUAL_NODE_SYMBOL] = true;\n//# sourceMappingURL=virtual_node.js.map","import { BM } from './backend';\nimport { Component, convertGenerics, resolvePlaceholder, } from './component';\nimport { getDeepCopyStrategy } from './data_proxy';\nimport { deepCopy, simpleDeepCopy } from './data_utils';\nimport { Element } from './element';\nimport { NativeNode } from './native_node';\nimport { TextNode } from './text_node';\nimport { SHADOW_ROOT_SYMBOL, isElement, isShadowRoot } from './type_symbol';\nimport { VirtualNode } from './virtual_node';\nimport { ThirdError, triggerWarning } from './warning';\nexport var SlotMode;\n(function (SlotMode) {\n SlotMode[SlotMode[\"Direct\"] = 0] = \"Direct\";\n SlotMode[SlotMode[\"Single\"] = 1] = \"Single\";\n SlotMode[SlotMode[\"Multiple\"] = 2] = \"Multiple\";\n SlotMode[SlotMode[\"Dynamic\"] = 3] = \"Dynamic\";\n})(SlotMode || (SlotMode = {}));\nexport class ShadowRoot extends VirtualNode {\n /* istanbul ignore next */\n constructor() {\n throw new Error('Element cannot be constructed directly');\n // eslint-disable-next-line no-unreachable\n super();\n }\n static createShadowRoot(host) {\n const node = Object.create(ShadowRoot.prototype);\n let be = null;\n if (BM.SHADOW || (BM.DYNAMIC && host.getBackendMode() === 1 /* BackendMode.Shadow */)) {\n be = host._$backendElement.getShadowRoot();\n }\n node.is = 'shadow';\n node._$idMap = null;\n let slotMode = 1 /* SlotMode.Single */;\n const hostComponentOptions = host.getComponentOptions();\n if (hostComponentOptions.multipleSlots)\n slotMode = 2 /* SlotMode.Multiple */;\n else if (hostComponentOptions.dynamicSlots)\n slotMode = 3 /* SlotMode.Dynamic */;\n else if (hostComponentOptions.directSlots)\n slotMode = 0 /* SlotMode.Direct */;\n node._$slotMode = slotMode;\n if (slotMode === 1 /* SlotMode.Single */) {\n node._$singleSlot = null;\n }\n else if (slotMode === 2 /* SlotMode.Multiple */) {\n node._$slots = Object.create(null);\n node._$slotsList = Object.create(null);\n }\n else if (slotMode === 3 /* SlotMode.Dynamic */) {\n node._$dynamicSlotsInserted = false;\n node._$dynamicSlots = new Map();\n node._$requiredSlotValueNames = [];\n node._$propertyPassingDeepCopy = getDeepCopyStrategy(hostComponentOptions.propertyPassingDeepCopy);\n node._$insertDynamicSlotHandler = undefined;\n node._$removeDynamicSlotHandler = undefined;\n node._$updateDynamicSlotHandler = undefined;\n }\n node._$backendShadowRoot = be;\n node._$initialize(true, be, node, host._$nodeTreeContext);\n node._$host = host;\n host.shadowRoot = node;\n be === null || be === void 0 ? void 0 : be.associateValue(node);\n return node;\n }\n getHostNode() {\n return this._$host;\n }\n createTextNode(text = '') {\n return new TextNode(text, this);\n }\n createNativeNode(tagName) {\n return NativeNode.create(tagName, this);\n }\n createVirtualNode(virtualName = 'virtual') {\n return VirtualNode.create(virtualName, this);\n }\n createNativeNodeWithInit(tagName, stylingName, placeholderHandlerRemover, initPropValues) {\n const ret = NativeNode.create(tagName, this, stylingName, placeholderHandlerRemover);\n initPropValues === null || initPropValues === void 0 ? void 0 : initPropValues(ret);\n return ret;\n }\n /**\n * Create a component if possible\n *\n * Placeholding status should be checked with `checkComponentPlaceholder` .\n * This function may create a native node if the using target is native node.\n */\n createComponent(tagName, usingKey, genericTargets, placeholderCallback, initPropValues) {\n const host = this._$host;\n const beh = host._$behavior;\n const hostGenericImpls = host._$genericImpls;\n const space = beh.ownerSpace;\n const compName = usingKey === undefined ? tagName : usingKey;\n const possibleComponentDefinitions = [\n // if the target is in using list, then use the one in using list\n beh._$using[compName],\n // if the target is in generics list, then use the one\n hostGenericImpls && hostGenericImpls[compName],\n ];\n for (let i = 0; i < possibleComponentDefinitions.length; i += 1) {\n const cwp = possibleComponentDefinitions[i];\n if (cwp === null || cwp === undefined)\n continue;\n if (typeof cwp === 'string') {\n return this.createNativeNodeWithInit(cwp, tagName, undefined, initPropValues);\n }\n let usingTarget;\n let placeholderHandlerRemover;\n if (cwp.final) {\n usingTarget = cwp.final;\n }\n else if (cwp.placeholder !== null) {\n usingTarget = resolvePlaceholder(cwp.placeholder, space, cwp.source, hostGenericImpls);\n const waiting = cwp.waiting;\n if (placeholderCallback && waiting) {\n waiting.add(placeholderCallback);\n waiting.hintUsed(host);\n placeholderHandlerRemover = () => {\n waiting.remove(placeholderCallback);\n };\n }\n }\n if (typeof usingTarget === 'string') {\n return this.createNativeNodeWithInit(usingTarget, tagName, placeholderHandlerRemover, initPropValues);\n }\n if (usingTarget) {\n return Component._$advancedCreate(tagName, usingTarget, this, null, convertGenerics(usingTarget, beh, host, genericTargets), placeholderHandlerRemover, initPropValues);\n }\n }\n // find in the space otherwise\n let comp = space.getGlobalUsingComponent(compName);\n if (comp === null && space._$allowUnusedNativeNode && compName !== '') {\n comp = compName;\n }\n if (!comp) {\n comp = space.getDefaultComponent();\n /* istanbul ignore if */\n if (!comp) {\n throw new ThirdError(`Cannot find component \"${compName}\"`, undefined, this._$host);\n }\n triggerWarning(`Cannot find component \"${compName}\", using default component.`, this._$host);\n }\n if (typeof comp === 'string') {\n return this.createNativeNodeWithInit(comp, tagName, undefined, initPropValues);\n }\n return Component._$advancedCreate(tagName, comp, this, null, convertGenerics(comp, beh, host, genericTargets), undefined, initPropValues);\n }\n createComponentByDef(tagName, componentDef) {\n return Component._$advancedCreate(tagName, componentDef, this, null, null, undefined);\n }\n /**\n * Create a component if the given tag name is a component in the space, or a native node if not\n *\n * The component `using` map is not used.\n * Consider using `checkComponentPlaceholder` to check if the tag name is in the `using` map.\n * The global using registered with `ComponentSpace.prototype.getGlobalUsingComponent` is still used.\n */\n createComponentOrNativeNode(tagName, genericTargets, initPropValues) {\n const host = this._$host;\n const beh = host._$behavior;\n const space = beh.ownerSpace;\n // find in the space otherwise\n const comp = space.getGlobalUsingComponent(tagName);\n if (typeof comp === 'string') {\n return this.createNativeNodeWithInit(comp, tagName, undefined, initPropValues);\n }\n if (comp) {\n return Component._$advancedCreate(tagName, comp, this, null, convertGenerics(comp, beh, host, genericTargets), undefined, initPropValues);\n }\n if (space._$allowUnusedNativeNode) {\n // use native node otherwise\n const node = NativeNode.create(tagName, this);\n initPropValues === null || initPropValues === void 0 ? void 0 : initPropValues(node);\n return node;\n }\n throw new ThirdError(`Unknown tag name ${tagName}`, '[render]', host);\n }\n /**\n * Find whether this component is placeholding or not\n *\n * This method will only find in the component `using` list and `generics` list.\n * If not found, returns `undefined` .\n * If the placeholder will be used, returns `true` ; `false` otherwise.\n */\n checkComponentPlaceholder(usingKey) {\n var _a;\n const beh = this._$host._$behavior;\n let compDef;\n const using = beh._$using[usingKey];\n if (using !== undefined) {\n compDef = using;\n }\n else {\n const g = (_a = this._$host._$genericImpls) === null || _a === void 0 ? void 0 : _a[usingKey];\n if (g)\n compDef = g;\n else\n return undefined;\n }\n if (typeof compDef === 'string')\n return false;\n if (compDef.final)\n return false;\n if (compDef.placeholder !== null)\n return true;\n return false;\n }\n getElementById(id) {\n return this._$getIdMap()[id];\n }\n /** @internal */\n _$markIdCacheDirty() {\n this._$idMap = null;\n }\n /** @internal */\n _$getIdMap() {\n if (this._$idMap)\n return this._$idMap;\n const idMap = Element._$generateIdMap(this);\n this._$idMap = idMap;\n return idMap;\n }\n /** Get the slot element with the specified name */\n getSlotElementFromName(name) {\n const slotMode = this._$slotMode;\n /* istanbul ignore if */\n if (slotMode === 0 /* SlotMode.Direct */)\n throw new Error('cannot get slot element in directSlots');\n if (slotMode === 1 /* SlotMode.Single */)\n return this._$singleSlot;\n if (slotMode === 2 /* SlotMode.Multiple */) {\n return this._$slots[name] || null;\n }\n if (slotMode === 3 /* SlotMode.Dynamic */) {\n const slots = [];\n for (let it = this._$subtreeSlotStart; it; it = it.next) {\n const slot = it.value;\n const slotName = slot._$slotName || '';\n if (slotName === name)\n slots.push(slot);\n }\n return slots;\n }\n return null;\n }\n /**\n * Get the slot element for the slot content\n *\n * The provided node must be a valid child node of the host of this shadow root.\n * Otherwise the behavior is undefined.\n */\n getContainingSlot(elem) {\n var _a;\n const slotMode = this._$slotMode;\n if (slotMode === 0 /* SlotMode.Direct */)\n return (elem === null || elem === void 0 ? void 0 : elem.containingSlot) || null;\n if (slotMode === 1 /* SlotMode.Single */)\n return this._$singleSlot;\n if (slotMode === 3 /* SlotMode.Dynamic */) {\n if (!elem)\n return null;\n let subTreeRoot = elem;\n while ((_a = subTreeRoot.parentNode) === null || _a === void 0 ? void 0 : _a._$inheritSlots) {\n subTreeRoot = subTreeRoot.parentNode;\n }\n const slotElement = subTreeRoot._$slotElement;\n // FIXME is ownerShadowRoot check necessary?\n if ((slotElement === null || slotElement === void 0 ? void 0 : slotElement.ownerShadowRoot) === this) {\n return slotElement;\n }\n }\n if (slotMode === 2 /* SlotMode.Multiple */) {\n let name;\n if (isElement(elem)) {\n name = elem._$nodeSlot;\n }\n else {\n name = '';\n }\n return this._$slots[name] || null;\n }\n return null;\n }\n /**\n * Get the elements that should be composed in specified slot\n *\n * This method always returns a new array (or null if the specified slot is invalid).\n * It is convenient but less performant.\n * For better performance, consider using `forEachNodeInSpecifiedSlot` .\n */\n getSlotContentArray(slot) {\n if (slot._$slotName === null)\n return null;\n const ret = [];\n this.forEachNodeInSpecifiedSlot(slot, (node) => {\n ret.push(node);\n });\n return ret;\n }\n /**\n * Iterate slots\n */\n forEachSlot(f) {\n const slotMode = this._$slotMode;\n /* istanbul ignore if */\n if (slotMode === 0 /* SlotMode.Direct */) {\n throw new Error('Cannot iterate slots in directSlots');\n }\n if (slotMode === 1 /* SlotMode.Single */) {\n if (this._$singleSlot)\n f(this._$singleSlot);\n }\n else if (slotMode === 2 /* SlotMode.Multiple */) {\n const slots = Object.values(this._$slots);\n for (let i = 0; i < slots.length; i += 1) {\n if (f(slots[i]) === false)\n break;\n }\n }\n else if (slotMode === 3 /* SlotMode.Dynamic */) {\n for (let it = this._$subtreeSlotStart; it; it = it.next) {\n if (f(it.value) === false)\n break;\n }\n }\n }\n /**\n * Iterate through elements ahd their corresponding slots (including slots-inherited nodes)\n * @param f A function to execute for each element. Return false to break the iteration.\n * @returns A boolean indicating whether the iteration is complete.\n */\n forEachNodeInSlot(f) {\n const childNodes = this._$host.childNodes;\n for (let i = 0; i < childNodes.length; i += 1) {\n if (!Element.forEachNodeInSlot(childNodes[i], f))\n return false;\n }\n return true;\n }\n /**\n * Iterate through elements of a specified slot (including slots-inherited nodes)\n * @param f A function to execute for each element. Return false to break the iteration.\n * @returns A boolean indicating whether the iteration is complete.\n */\n forEachNodeInSpecifiedSlot(slot, f) {\n if (slot) {\n const childNodes = slot.slotNodes;\n for (let i = 0; i < childNodes.length; i += 1) {\n const node = childNodes[i];\n if (f(node) === false)\n return false;\n }\n return true;\n }\n return this.forEachNodeInSlot((node, slot) => (slot === null ? f(node) : true));\n }\n /**\n * Iterate through elements ahd their corresponding slots (NOT including slots-inherited nodes)\n * @param f A function to execute for each element. Return false to break the iteration.\n * @returns A boolean indicating whether the iteration is complete.\n */\n forEachSlotContentInSlot(f) {\n const childNodes = this._$host.childNodes;\n for (let i = 0; i < childNodes.length; i += 1) {\n if (!Element.forEachSlotContentInSlot(childNodes[i], f))\n return false;\n }\n return true;\n }\n /**\n * Iterate through elements of a specified slot (NOT including slots-inherited nodes)\n * @param f A function to execute for each element. Return false to break the iteration.\n * @returns A boolean indicating whether the iteration is complete.\n */\n forEachSlotContentInSpecifiedSlot(slot, f) {\n if (slot) {\n const childNodes = slot.slotNodes;\n for (let i = 0; i < childNodes.length; i += 1) {\n const node = childNodes[i];\n if (!node._$inheritSlots && f(node) === false)\n return false;\n }\n return true;\n }\n return this.forEachSlotContentInSlot((node, slot) => (slot === null ? f(node) : true));\n }\n /**\n * Check whether a node is connected to this shadow root\n */\n isConnected(node) {\n if (node.ownerShadowRoot !== this)\n return false;\n for (let p = node; p; p = p.parentNode) {\n if (p === this)\n return true;\n }\n return false;\n }\n /** @internal */\n _$applyMultipleSlotInsertion(slot, slotName, _move) {\n const slotsList = this._$slotsList;\n const slots = this._$slots;\n // assuming that slot name duplication is very rare in practice,\n // the complexity without name duplication is priority guaranteed.\n if (slotsList[slotName]) {\n // with name duplication\n const firstSlot = slotsList[slotName];\n let insertPos = { next: firstSlot }; // this is a pointer to pointer\n let insertBeforeFirst = true;\n for (let jt = this._$subtreeSlotStart; jt && insertPos.next; jt = jt.next) {\n if (jt.value === slot)\n break;\n if (jt.value === insertPos.next.value) {\n insertBeforeFirst = false;\n insertPos = insertPos.next;\n }\n }\n if (insertBeforeFirst) {\n slotsList[slotName] = firstSlot.prev = { value: slot, prev: null, next: firstSlot };\n }\n else {\n const next = insertPos.next;\n insertPos.next = { value: slot, prev: insertPos, next };\n if (next)\n next.prev = insertPos.next;\n }\n }\n else {\n // without name duplication\n slotsList[slotName] = { value: slot, prev: null, next: null };\n }\n const oldSlot = slots[slotName];\n const newSlot = slotsList[slotName].value;\n if (oldSlot === newSlot)\n return;\n slots[slotName] = newSlot;\n Element._$insertChildReassignSlot(this, slotName, oldSlot || null, newSlot);\n }\n /** @internal */\n _$applyMultipleSlotsRemoval(slot, slotName, move) {\n const slotsList = this._$slotsList;\n const slots = this._$slots;\n let oldSlot = slotsList[slotName] || null;\n for (; oldSlot; oldSlot = oldSlot.next) {\n if (oldSlot.value === slot)\n break;\n }\n if (!oldSlot)\n return;\n const prev = oldSlot.prev;\n const next = oldSlot.next;\n if (prev)\n prev.next = next;\n if (next)\n next.prev = prev;\n const firstSlotRemoved = !prev;\n if (!firstSlotRemoved)\n return;\n const newFirstSlot = next;\n if (newFirstSlot) {\n const oldNameNewSlot = newFirstSlot.value;\n slotsList[slotName] = newFirstSlot;\n // only update slotsList if slots were moved\n if (!move) {\n slots[slotName] = oldNameNewSlot;\n Element._$insertChildReassignSlot(this, slotName, slot, oldNameNewSlot);\n }\n }\n else {\n delete slotsList[slotName];\n // only update slotsList if slots were moved\n if (!move) {\n delete slots[slotName];\n Element._$insertChildReassignSlot(this, slotName, slot, null);\n }\n }\n }\n /** @internal */\n _$applySlotRename(slot, newName, oldName) {\n const slotMode = this._$slotMode;\n // single slot does not care slot name\n if (slotMode === 1 /* SlotMode.Single */ || slotMode === 0 /* SlotMode.Direct */)\n return;\n // for multiple slots, reassign slot contents\n if (slotMode === 2 /* SlotMode.Multiple */) {\n this._$applyMultipleSlotsRemoval(slot, oldName, false);\n this._$applyMultipleSlotInsertion(slot, newName, false);\n return;\n }\n // for dynamic slotting, destroy and re-insert slot\n if (slotMode === 3 /* SlotMode.Dynamic */) {\n // wait until applySlotUpdates\n if (!this._$dynamicSlotsInserted)\n return;\n const insertDynamicSlot = this._$insertDynamicSlotHandler;\n const removeDynamicSlot = this._$removeDynamicSlotHandler;\n this._$dynamicSlots.set(slot, { updatePathTree: undefined });\n removeDynamicSlot === null || removeDynamicSlot === void 0 ? void 0 : removeDynamicSlot([slot]);\n insertDynamicSlot === null || insertDynamicSlot === void 0 ? void 0 : insertDynamicSlot([{ slot, name: newName, slotValues: slot._$slotValues }]);\n }\n }\n /** @internal */\n _$applySlotsInsertion(slotStart, slotEnd, move) {\n const slotMode = this._$slotMode;\n // for direct slotting, do nothing\n if (slotMode === 0 /* SlotMode.Direct */)\n return;\n if (slotMode === 1 /* SlotMode.Single */) {\n const oldSlot = this._$singleSlot;\n const newSlot = this._$subtreeSlotStart.value;\n if (oldSlot === newSlot)\n return;\n this._$singleSlot = newSlot;\n Element._$insertChildReassignSlot(this, null, oldSlot || null, newSlot);\n return;\n }\n if (slotMode === 2 /* SlotMode.Multiple */) {\n for (let it = slotStart; it && it !== slotEnd.next; it = it.next) {\n const slot = it.value;\n const slotName = slot._$slotName;\n this._$applyMultipleSlotInsertion(slot, slotName, move);\n }\n return;\n }\n if (slotMode === 3 /* SlotMode.Dynamic */) {\n // dynamic-slotting should do nothing about slot movement\n if (move)\n return;\n // wait until applySlotUpdates\n if (!this._$dynamicSlotsInserted)\n return;\n const insertDynamicSlot = this._$insertDynamicSlotHandler;\n const slots = [];\n for (let it = slotStart; it && it !== slotEnd.next; it = it.next) {\n const slot = it.value;\n const slotName = slot._$slotName;\n this._$dynamicSlots.set(slot, { updatePathTree: undefined });\n slots.push({ slot, name: slotName, slotValues: slot._$slotValues });\n }\n insertDynamicSlot === null || insertDynamicSlot === void 0 ? void 0 : insertDynamicSlot(slots);\n }\n }\n /** @internal */\n _$applySlotsRemoval(slotStart, slotEnd, move) {\n var _a;\n const slotMode = this._$slotMode;\n // for direct slotting, do nothing\n if (slotMode === 0 /* SlotMode.Direct */)\n return;\n if (slotMode === 1 /* SlotMode.Single */) {\n // will call applySLotsInsertion after if slots were moved\n // no need to do anything here\n if (move)\n return;\n const oldSlot = this._$singleSlot;\n const newSlot = (_a = this._$subtreeSlotStart) === null || _a === void 0 ? void 0 : _a.value;\n if (oldSlot === newSlot)\n return;\n this._$singleSlot = newSlot;\n Element._$insertChildReassignSlot(this, null, oldSlot || null, newSlot || null);\n return;\n }\n if (slotMode === 2 /* SlotMode.Multiple */) {\n for (let it = slotStart; it && it !== slotEnd.next; it = it.next) {\n const slot = it.value;\n const slotName = slot._$slotName;\n this._$applyMultipleSlotsRemoval(slot, slotName, move);\n }\n return;\n }\n if (slotMode === 3 /* SlotMode.Dynamic */) {\n // dynamic-slotting should do nothing about slot movement\n if (move)\n return;\n // wait until applySlotUpdates\n if (!this._$dynamicSlotsInserted)\n return;\n const removeDynamicSlot = this._$removeDynamicSlotHandler;\n const slots = [];\n for (let it = slotStart; it && it !== slotEnd.next; it = it.next) {\n const slot = it.value;\n this._$dynamicSlots.delete(slot);\n slots.push(slot);\n }\n removeDynamicSlot === null || removeDynamicSlot === void 0 ? void 0 : removeDynamicSlot(slots);\n }\n }\n /**\n * Set the dynamic slot handlers\n *\n * If the handlers have not been set yet,\n * the `insertSlotHandler` will be called for each slot that has been added to the shadow tree,\n * otherwise call `updateSlotHandler` for each slots.\n */\n setDynamicSlotHandler(requiredSlotValueNames, insertSlotHandler, removeSlotHandler, updateSlotHandler) {\n if (this._$slotMode !== 3 /* SlotMode.Dynamic */)\n return;\n this._$requiredSlotValueNames = requiredSlotValueNames;\n this._$insertDynamicSlotHandler = insertSlotHandler;\n this._$removeDynamicSlotHandler = removeSlotHandler;\n this._$updateDynamicSlotHandler = updateSlotHandler;\n if (this._$dynamicSlotsInserted) {\n const iter = this._$dynamicSlots.values();\n for (let it = iter.next(); !it.done; it = iter.next()) {\n const slotMeta = it.value;\n slotMeta.updatePathTree =\n slotMeta.updatePathTree || Object.create(null);\n }\n }\n }\n /**\n * Use the same dynamic slot handlers with the `source`\n */\n useDynamicSlotHandlerFrom(source) {\n if (source._$insertDynamicSlotHandler) {\n this.setDynamicSlotHandler(source._$requiredSlotValueNames.slice(), source._$insertDynamicSlotHandler, source._$removeDynamicSlotHandler, source._$updateDynamicSlotHandler);\n }\n }\n /**\n * Update a slot value\n *\n * The updated value should be applied with `applySlotValueUpdates` call.\n */\n replaceSlotValue(slot, name, value) {\n var _a;\n const slotValues = slot._$slotValues;\n if (!slotValues)\n return;\n const oldValue = slotValues[name];\n let newValue = value;\n if (this._$propertyPassingDeepCopy !== 0 /* DeepCopyStrategy.None */) {\n if (this._$propertyPassingDeepCopy === 2 /* DeepCopyStrategy.SimpleWithRecursion */) {\n newValue = deepCopy(value, true);\n }\n else {\n newValue = simpleDeepCopy(value);\n }\n }\n if (oldValue === newValue)\n return;\n slotValues[name] = newValue;\n if (this._$requiredSlotValueNames.indexOf(name) < 0)\n return;\n const slotMeta = (_a = this._$dynamicSlots) === null || _a === void 0 ? void 0 : _a.get(slot);\n if (!slotMeta)\n return;\n if (!slotMeta.updatePathTree) {\n slotMeta.updatePathTree = Object.create(null);\n }\n slotMeta.updatePathTree[name] = true;\n }\n /**\n * Apply slot value updates\n */\n applySlotValueUpdates(slot) {\n var _a, _b;\n const slotMeta = (_a = this._$dynamicSlots) === null || _a === void 0 ? void 0 : _a.get(slot);\n const slotValueUpdatePathTree = slotMeta === null || slotMeta === void 0 ? void 0 : slotMeta.updatePathTree;\n if (!slotValueUpdatePathTree)\n return;\n slotMeta.updatePathTree = undefined;\n (_b = this._$updateDynamicSlotHandler) === null || _b === void 0 ? void 0 : _b.call(this, slot, slot._$slotValues, slotValueUpdatePathTree);\n }\n applySlotUpdates() {\n var _a;\n if (!this._$dynamicSlotsInserted) {\n this._$dynamicSlotsInserted = true;\n const insertDynamicSlot = this._$insertDynamicSlotHandler;\n const slots = [];\n for (let it = this._$subtreeSlotStart; it; it = it.next) {\n const slot = it.value;\n const slotName = slot._$slotName;\n this._$dynamicSlots.set(slot, { updatePathTree: undefined });\n slots.push({ slot, name: slotName, slotValues: slot._$slotValues });\n }\n insertDynamicSlot === null || insertDynamicSlot === void 0 ? void 0 : insertDynamicSlot(slots);\n }\n else {\n const iter = this._$dynamicSlots.entries();\n for (let it = iter.next(); !it.done; it = iter.next()) {\n const [slot, slotMeta] = it.value;\n const slotValueUpdatePathTree = slotMeta.updatePathTree;\n if (slotValueUpdatePathTree) {\n slotMeta.updatePathTree = undefined;\n (_a = this._$updateDynamicSlotHandler) === null || _a === void 0 ? void 0 : _a.call(this, slot, slot._$slotValues, slotValueUpdatePathTree);\n }\n }\n }\n }\n /**\n * Get slot mode\n */\n getSlotMode() {\n return this._$slotMode;\n }\n}\nShadowRoot.isShadowRoot = isShadowRoot;\nShadowRoot.prototype[SHADOW_ROOT_SYMBOL] = true;\n//# sourceMappingURL=shadow_root.js.map","import { triggerWarning } from '../warning';\nexport class RangeListManager {\n constructor(keyName, dataList, elem, shadowRoot, newListItem) {\n this.ownerShadowRoot = shadowRoot;\n this.elem = elem;\n this.keyName = keyName;\n this.updateKeys(dataList);\n const items = this.items;\n const indexes = this.indexes;\n const children = [];\n for (let i = 0; i < items.length; i += 1) {\n const item = items[i];\n const index = indexes === null ? i : indexes[i];\n children.push(newListItem(item, index));\n }\n elem.insertChildren(children, -1);\n }\n updateKeys(dataList) {\n // collect the list depending on the the type of the data list\n let items;\n let indexes;\n if (Array.isArray(dataList)) {\n items = dataList;\n indexes = null;\n }\n else if (typeof dataList === 'object' && dataList !== null) {\n const k = Object.keys(dataList);\n items = new Array(k.length);\n indexes = new Array(k.length);\n for (let i = 0; i < k.length; i += 1) {\n const key = k[i];\n const item = dataList[key];\n items[i] = item;\n indexes[i] = key;\n }\n }\n else if (typeof dataList === 'string') {\n triggerWarning('Use string as for-list is generally for testing. Each character is treated as an item.', this.ownerShadowRoot.getHostNode(), this.elem);\n items = new Array(dataList.length);\n indexes = null;\n for (let i = 0; i < dataList.length; i += 1) {\n items[i] = dataList[i];\n }\n }\n else if (typeof dataList === 'number') {\n triggerWarning('Use number as for-list is generally for testing. The number is used as the repeated times of the item.', this.ownerShadowRoot.getHostNode(), this.elem);\n items = new Array(dataList);\n indexes = null;\n for (let i = 0; i < dataList; i += 1) {\n items[i] = i;\n }\n }\n else {\n triggerWarning(`The for-list data is neither Array nor Object, got type \"${dataList === null ? 'null' : typeof dataList}\".`, this.ownerShadowRoot.getHostNode(), this.elem);\n items = [];\n indexes = null;\n }\n this.items = items;\n this.indexes = indexes;\n // generate keys and key indexes map for the list\n const keyName = this.keyName;\n const rawKeys = new Array(items.length);\n const keyMap = Object.create(null);\n let sharedKeyMap;\n if (keyName !== null) {\n // firstly, find all unique keys and shared keys\n for (let i = 0; i < items.length; i += 1) {\n const item = items[i];\n const rawKeyField = keyName === '*this' ? item : item === null || item === void 0 ? void 0 : item[keyName];\n const rawKey = rawKeyField !== undefined && rawKeyField !== null ? String(rawKeyField) : '';\n rawKeys[i] = rawKey;\n if (keyMap[rawKey] !== undefined) {\n if (!sharedKeyMap) {\n sharedKeyMap = Object.create(null);\n }\n sharedKeyMap[rawKey] = [keyMap[rawKey], i];\n delete keyMap[rawKey];\n }\n else if (sharedKeyMap === null || sharedKeyMap === void 0 ? void 0 : sharedKeyMap[rawKey]) {\n sharedKeyMap[rawKey].push(i);\n }\n else {\n keyMap[rawKey] = i;\n }\n }\n // convert shared keys to unique keys\n if (sharedKeyMap) {\n const keys = Object.keys(sharedKeyMap);\n triggerWarning(`Some keys are not unique while list updates: \"${keys.join('\", \"')}\".`, this.ownerShadowRoot.getHostNode(), this.elem);\n for (let i = 0; i < keys.length; i += 1) {\n const key = keys[i];\n const items = sharedKeyMap[key];\n let inc = 0;\n for (let j = 0; j < items.length; j += 1) {\n const index = items[j];\n while (keyMap[`${key}--${inc}`] !== undefined)\n inc += 1;\n const k = `${key}--${inc}`;\n keyMap[k] = index;\n rawKeys[index] = k;\n }\n }\n }\n }\n this.rawKeys = rawKeys;\n this.keyMap = keyMap;\n this.sharedKeyMap = sharedKeyMap;\n }\n diff(dataList, oriUpdatePathTree, elem, newListItem, updateListItem) {\n // generate new list for comparison\n const oldRawKeys = this.rawKeys;\n const oldKeyMap = this.keyMap;\n const oldSharedKeyMap = this.sharedKeyMap;\n const oldIndexes = this.indexes;\n this.updateKeys(dataList);\n const newRawKeys = this.rawKeys;\n const newSharedKeyMap = this.sharedKeyMap;\n const items = this.items;\n const indexes = this.indexes;\n const keyName = this.keyName;\n // transform the update path tree if needed:\n // if the list has been splice-updated, or a key is updated,\n // all items with old-list shared keys or new-list shared keys should be marked;\n // and items with key updates should be marked\n let allowFastComparison;\n let updatePathTree;\n if (oriUpdatePathTree === true) {\n updatePathTree = true;\n allowFastComparison = keyName === null;\n }\n else if (oriUpdatePathTree === undefined) {\n updatePathTree = oriUpdatePathTree;\n allowFastComparison = true;\n }\n else if (keyName === null) {\n updatePathTree = true;\n allowFastComparison = true;\n }\n else {\n let needUpdate = false;\n if (Array.isArray(oriUpdatePathTree)) {\n needUpdate = true;\n }\n else {\n const keys = Object.keys(oriUpdatePathTree);\n for (let i = 0; i < keys.length; i += 1) {\n const k = keys[i];\n const subTree = oriUpdatePathTree[k];\n if (subTree === true || (keyName === '*this' ? subTree : subTree === null || subTree === void 0 ? void 0 : subTree[keyName])) {\n needUpdate = true;\n break;\n }\n }\n }\n if (needUpdate) {\n updatePathTree = new Array(newRawKeys.length);\n for (let i = 0; i < newRawKeys.length; i += 1) {\n const k = newRawKeys[i];\n if ((oldSharedKeyMap === null || oldSharedKeyMap === void 0 ? void 0 : oldSharedKeyMap[k]) !== undefined || (newSharedKeyMap === null || newSharedKeyMap === void 0 ? void 0 : newSharedKeyMap[k]) !== undefined) {\n updatePathTree[i] = true;\n }\n else {\n const subTree = oriUpdatePathTree[i];\n if (subTree === undefined) {\n // empty\n }\n else if (subTree === true || (keyName === '*this' ? subTree : subTree === null || subTree === void 0 ? void 0 : subTree[keyName])) {\n updatePathTree[i] = true;\n }\n else {\n updatePathTree[i] = subTree;\n }\n }\n }\n allowFastComparison = false;\n }\n else {\n updatePathTree = oriUpdatePathTree;\n allowFastComparison = false;\n }\n }\n // if there is no key, or nothing in the old list range is updated\n if (allowFastComparison) {\n // transform the update path tree if needed:\n // if the list has been splice-updated, then mark the whole list\n let updatePathTree;\n if (Array.isArray(oriUpdatePathTree))\n updatePathTree = true;\n else\n updatePathTree = oriUpdatePathTree;\n // simply match them one-by-one\n let i = 0;\n while (i < oldRawKeys.length && i < newRawKeys.length) {\n const item = items[i];\n const index = indexes === null ? i : indexes[i];\n const oldIndex = oldIndexes === null ? i : oldIndexes[i];\n const u = updatePathTree === true || updatePathTree === undefined\n ? updatePathTree\n : updatePathTree[i];\n updateListItem(item, index, u, index !== oldIndex, elem.childNodes[i]);\n i += 1;\n }\n // if the old list has extra items, remove them;\n // if the new list has extra items, append them\n if (i < oldRawKeys.length) {\n elem.removeChildren(i, oldRawKeys.length - i);\n }\n else if (i < newRawKeys.length) {\n const children = [];\n for (; i < newRawKeys.length; i += 1) {\n const item = items[i];\n const index = indexes === null ? i : indexes[i];\n children.push(newListItem(item, index));\n }\n elem.insertChildren(children, -1);\n }\n return;\n }\n // in order to find out which nodes are stable (a.k.a. not needed to be moved),\n // here uses a classic LCS (longest-common-subsequence) algorithm for list with distinct items,\n // which is O(N*logN) at worst\n // (the `minIndexByLen[i]` is the minimum old-list index when LCS length is `i` )\n const minIndexByLen = [];\n const minIndexByLenIndexes = [];\n const minIndexPrev = new Array(newRawKeys.length);\n const oldPosList = new Array(newRawKeys.length);\n let prevOldIndex = -1;\n let prevMinIndexByLenIndex = -1;\n for (let i = 0; i < newRawKeys.length; i += 1) {\n const rawKey = newRawKeys[i];\n // the new-list current item is likely to be the same as the one in old-list;\n // if that, simply use it -\n // this will help to decrease the overhead in common cases (O(N) in best case)\n if (oldRawKeys[prevOldIndex + 1] === rawKey) {\n prevOldIndex += 1;\n prevMinIndexByLenIndex += 1;\n minIndexByLen[prevMinIndexByLenIndex] = prevOldIndex;\n minIndexByLenIndexes[prevMinIndexByLenIndex] = i;\n minIndexPrev[i] =\n prevMinIndexByLenIndex > 0 ? minIndexByLenIndexes[prevMinIndexByLenIndex - 1] : -1;\n oldPosList[i] = prevOldIndex;\n continue;\n }\n // Skip new items\n const oldIndex = oldKeyMap[rawKey];\n if (oldIndex === undefined) {\n oldPosList[i] = -1;\n continue;\n }\n // find the old-list index for the key of the current item\n let bottom = 0;\n let top = minIndexByLen.length;\n while (bottom < top) {\n const mid = Math.floor((bottom + top) / 2);\n if (oldIndex < minIndexByLen[mid])\n top = mid;\n else\n bottom = mid + 1;\n }\n minIndexByLen[top] = oldIndex;\n minIndexByLenIndexes[top] = i;\n minIndexPrev[i] = top > 0 ? minIndexByLenIndexes[top - 1] : -1;\n oldPosList[i] = oldIndex;\n prevOldIndex = oldIndex;\n prevMinIndexByLenIndex = top;\n }\n const lcsLen = minIndexByLenIndexes.length;\n // if LCS is the whole list, then the list is not changed -\n // simply match each item one-by-one\n if (lcsLen === newRawKeys.length && lcsLen === oldRawKeys.length) {\n let i = 0;\n while (i < oldRawKeys.length && i < newRawKeys.length) {\n const item = items[i];\n const index = indexes === null ? i : indexes[i];\n const oldIndex = oldIndexes === null ? i : oldIndexes[i];\n const u = updatePathTree === true || updatePathTree === undefined\n ? updatePathTree\n : updatePathTree[i];\n updateListItem(item, index, u, index !== oldIndex, elem.childNodes[i]);\n i += 1;\n }\n return;\n }\n // search the unused `minIndexPrev` items to get the LCS item list\n // ( `minIndexByLen` is reused as the LCS array, since they must have the same length)\n let prevLcsIndex = lcsLen > 0 ? minIndexByLenIndexes[lcsLen - 1] : -1;\n let curLcsArrIndex = lcsLen;\n while (prevLcsIndex !== -1) {\n curLcsArrIndex -= 1;\n minIndexByLen[curLcsArrIndex] = prevLcsIndex;\n prevLcsIndex = minIndexPrev[prevLcsIndex];\n }\n const lcsArr = minIndexByLen;\n // decide what operation to be used with each item\n let OpKind;\n (function (OpKind) {\n OpKind[OpKind[\"Stable\"] = 0] = \"Stable\";\n OpKind[OpKind[\"ForwardMove\"] = 1] = \"ForwardMove\";\n OpKind[OpKind[\"BackwardMove\"] = 2] = \"BackwardMove\";\n })(OpKind || (OpKind = {}));\n const oldListOp = new Array(oldRawKeys.length);\n const changedItems = new Array(newRawKeys.length);\n let prevLcsOldPos = -1;\n for (let i = 0; i < oldPosList.length; i += 1) {\n const oldPos = oldPosList[i];\n if (i === lcsArr[curLcsArrIndex]) {\n prevLcsOldPos = oldPos;\n curLcsArrIndex += 1;\n oldListOp[oldPos] = 0 /* OpKind.Stable */;\n continue;\n }\n if (oldPos === -1) {\n const item = items[i];\n const index = indexes === null ? i : indexes[i];\n changedItems[i] = newListItem(item, index);\n continue;\n }\n if (oldPos > prevLcsOldPos) {\n oldListOp[oldPos] = 2 /* OpKind.BackwardMove */;\n }\n else {\n oldListOp[oldPos] = 1 /* OpKind.ForwardMove */;\n }\n changedItems[i] = elem.childNodes[oldPos];\n }\n // visit the op list again and do the operations one-by-one\n let realListDiff = 0;\n let opOldPos = 0;\n let opIndex = 0;\n curLcsArrIndex = 0;\n do {\n const nextStable = curLcsArrIndex < lcsArr.length ? lcsArr[curLcsArrIndex] : changedItems.length;\n const nextStableOldPos = curLcsArrIndex < lcsArr.length ? oldPosList[nextStable] : oldListOp.length;\n // remove items between two LCS items\n while (opOldPos < nextStableOldPos) {\n if (oldListOp[opOldPos] === undefined) {\n const start = opOldPos;\n opOldPos += 1;\n let count = 1;\n while (opOldPos < nextStableOldPos && oldListOp[opOldPos] === undefined) {\n opOldPos += 1;\n count += 1;\n }\n elem.removeChildren(start + realListDiff, count);\n realListDiff -= count;\n }\n else {\n if (oldListOp[opOldPos] === 2 /* OpKind.BackwardMove */) {\n realListDiff -= 1;\n }\n opOldPos += 1;\n }\n }\n // insert or move items between two LCS items\n while (opIndex < nextStable) {\n const newItem = changedItems[opIndex];\n const oldPos = oldPosList[opIndex];\n if (oldPos === -1) {\n const start = opIndex;\n opIndex += 1;\n let count = 1;\n while (opIndex < nextStable && oldPosList[opIndex] === -1) {\n opIndex += 1;\n count += 1;\n }\n elem.insertChildren(changedItems.slice(start, start + count), nextStableOldPos + realListDiff);\n realListDiff += count;\n }\n else {\n elem.insertChildAt(newItem, nextStableOldPos + realListDiff);\n const item = items[opIndex];\n const index = indexes === null ? opIndex : indexes[opIndex];\n const oldIndex = oldIndexes === null ? oldPos : oldIndexes[oldPos];\n const u = updatePathTree === true || updatePathTree === undefined\n ? updatePathTree\n : updatePathTree[opIndex];\n updateListItem(item, index, u, index !== oldIndex, newItem);\n if (oldListOp[oldPos] === 2 /* OpKind.BackwardMove */) {\n realListDiff += 1;\n }\n opIndex += 1;\n }\n }\n // stable items might be marked and indexes in stable positions might change;\n // if that, do an update\n // IDEA do not update if {{index}} is not used in template\n if (curLcsArrIndex < lcsArr.length) {\n const item = items[nextStable];\n const index = indexes === null ? nextStable : indexes[nextStable];\n const oldIndex = oldIndexes === null ? nextStableOldPos : oldIndexes[nextStableOldPos];\n const u = updatePathTree === true || updatePathTree === undefined\n ? updatePathTree\n : updatePathTree[nextStable];\n const node = elem.childNodes[nextStableOldPos + realListDiff];\n updateListItem(item, index, u, index !== oldIndex, node);\n }\n opOldPos = nextStableOldPos + 1;\n opIndex = nextStable + 1;\n curLcsArrIndex += 1;\n } while (curLcsArrIndex <= lcsArr.length);\n }\n}\n//# sourceMappingURL=range_list_diff.js.map","/* eslint-disable class-methods-use-this */\nimport { Component } from '../component';\nimport { Element } from '../element';\nimport { ENV } from '../global_options';\nimport { isComponent, isNativeNode } from '../type_symbol';\nimport { dispatchError } from '../warning';\nimport { RangeListManager } from './range_list_diff';\nconst emptyFilter = (x) => x;\nexport const getTmplArgs = (elem) => {\n const node = elem;\n // eslint-disable-next-line no-return-assign\n return (node._$wxTmplArgs = node._$wxTmplArgs || {});\n};\nexport const dataValueToString = (v) => {\n if (v === null || v === undefined) {\n return '';\n }\n return String(v);\n};\nconst dashToCamelCase = (dash) => {\n const ret = dash.replace(/-(.|$)/g, (s) => (s[1] ? s[1].toUpperCase() : ''));\n return ret;\n};\nexport class ProcGenWrapper {\n constructor(shadowRoot, procGen, fallbackListenerOnNativeNode, eventObjectFilter) {\n this.bindingMapDisabled = false;\n this.eventObjectFilter = emptyFilter;\n this.changePropFilter = emptyFilter;\n this.eventListenerFilter = emptyFilter;\n // update a property or external class of a component, or an attribute of a native node\n this.r = (elem, name, v, modelLvaluePath, generalLvaluePath) => {\n var _a;\n const checkFallbackEventListener = (camelName) => {\n if (camelName.startsWith('bind')) {\n this.v(elem, camelName.slice('bind'.length), dataValueToString(v), false, false, false, true, generalLvaluePath);\n }\n else if (camelName.startsWith('captureBind')) {\n this.v(elem, camelName.slice('captureBind'.length), dataValueToString(v), false, false, true, true, generalLvaluePath);\n }\n else if (camelName.startsWith('catch')) {\n this.v(elem, camelName.slice('catch'.length), dataValueToString(v), true, false, false, true, generalLvaluePath);\n }\n else if (camelName.startsWith('captureCatch')) {\n this.v(elem, camelName.slice('captureCatch'.length), dataValueToString(v), true, false, true, true, generalLvaluePath);\n }\n else if (camelName.startsWith('on')) {\n this.v(elem, camelName.slice('on'.length), dataValueToString(v), false, false, false, true, generalLvaluePath);\n }\n else {\n return false;\n }\n return true;\n };\n if (isComponent(elem)) {\n const nodeDataProxy = Component.getDataProxy(elem);\n const camelName = dashToCamelCase(name);\n if (nodeDataProxy.replaceProperty(camelName, v)) {\n if (modelLvaluePath !== undefined) {\n if (modelLvaluePath === null) {\n nodeDataProxy.setModelBindingListener(camelName, () => { });\n }\n else {\n nodeDataProxy.setModelBindingListener(camelName, (value) => {\n const host = elem.ownerShadowRoot.getHostNode();\n const nodeDataProxy = Component.getDataProxy(host);\n nodeDataProxy.replaceDataOnPath(modelLvaluePath, value);\n nodeDataProxy.applyDataUpdates(false);\n });\n }\n }\n const tmplArgs = getTmplArgs(elem);\n if ((_a = tmplArgs.changeProp) === null || _a === void 0 ? void 0 : _a[name]) {\n const lv = tmplArgs.changeProp[name];\n const oldValue = lv.oldValue;\n if (oldValue !== v) {\n lv.oldValue = v;\n const host = elem.ownerShadowRoot.getHostNode();\n lv.listener.call(host.getMethodCaller(), v, oldValue, host, elem);\n }\n }\n }\n else if (elem.hasExternalClass(name)) {\n elem.setExternalClass(name, v);\n }\n else {\n // compatibilities for legacy event binding syntax\n checkFallbackEventListener(camelName);\n }\n }\n else if (isNativeNode(elem)) {\n if (this.fallbackListenerOnNativeNode) {\n // compatibilities for legacy event binding syntax\n const camelName = dashToCamelCase(name);\n if (!checkFallbackEventListener(camelName)) {\n elem.updateAttribute(name, v);\n }\n }\n else {\n elem.updateAttribute(name, v);\n }\n if (modelLvaluePath) {\n elem.setModelBindingListener(name, (value) => {\n const host = elem.ownerShadowRoot.getHostNode();\n const nodeDataProxy = Component.getDataProxy(host);\n nodeDataProxy.replaceDataOnPath(modelLvaluePath, value);\n nodeDataProxy.applyDataUpdates(false);\n });\n }\n }\n };\n this.shadowRoot = shadowRoot;\n this.procGen = procGen;\n this.fallbackListenerOnNativeNode = fallbackListenerOnNativeNode;\n if (eventObjectFilter) {\n this.eventObjectFilter = eventObjectFilter;\n }\n }\n create(data) {\n const { shadowRoot, procGen } = this;\n const children = procGen(this, true, data, undefined);\n this.handleChildrenCreationAndInsert(children.C, shadowRoot, undefined, undefined);\n return children.B;\n }\n update(data, dataUpdatePathTree) {\n const { shadowRoot, procGen } = this;\n const children = procGen(this, false, data, dataUpdatePathTree);\n this.handleChildrenUpdate(children.C, shadowRoot, undefined, undefined);\n }\n bindingMapUpdate(field, data, bindingMapGenList) {\n if (this.bindingMapDisabled)\n return false;\n const updaters = bindingMapGenList[field];\n if (!updaters)\n return false;\n let prevElement = null;\n for (let i = 0; i < updaters.length; i += 1) {\n const bindingMapGen = updaters[i];\n bindingMapGen(data, \n // eslint-disable-next-line no-loop-func\n (elem) => {\n if (prevElement !== null && elem !== prevElement) {\n if (isComponent(prevElement)) {\n if (prevElement.hasPendingChanges()) {\n const nodeDataProxy = Component.getDataProxy(prevElement);\n nodeDataProxy.applyDataUpdates(true);\n }\n }\n }\n prevElement = elem;\n }, (elem, v) => {\n elem.textContent = v;\n });\n }\n const elem = prevElement;\n if (elem !== null) {\n if (isComponent(elem)) {\n if (elem.hasPendingChanges()) {\n const nodeDataProxy = Component.getDataProxy(elem);\n nodeDataProxy.applyDataUpdates(true);\n }\n }\n }\n return true;\n }\n handleChildrenCreation(children, slotElement, dynamicSlotName) {\n const childNodes = [];\n children(true, \n // text node\n (textContent, textInit) => {\n if (slotElement && dynamicSlotName !== '') {\n const elem = this.createDynamicPlaceholder(slotElement);\n childNodes.push(elem);\n return;\n }\n const elem = this.shadowRoot.createTextNode(textContent);\n elem.destroyBackendElementOnDetach();\n if (slotElement)\n Element.setSlotElement(elem, slotElement);\n if (textInit)\n textInit(elem);\n childNodes.push(elem);\n }, \n // component or native node\n (tagName, genericImpls, propertyInit, children, slot, dynamicSlotValueNames) => {\n if (slotElement && dynamicSlotName !== (slot || '')) {\n const elem = this.createDynamicPlaceholder(slotElement);\n childNodes.push(elem);\n return;\n }\n const elem = this.createCommonElement(tagName, genericImpls, propertyInit, children, dynamicSlotValueNames);\n if (slotElement) {\n Element.setSlotElement(elem, slotElement);\n const tmplArgs = getTmplArgs(elem);\n tmplArgs.dynamicSlotNameMatched = true;\n }\n else if (slot !== undefined) {\n elem.slot = slot;\n }\n childNodes.push(elem);\n }, \n // wx:if node or template-is node\n (branchKey, branchFunc) => {\n const elem = this.shadowRoot.createVirtualNode('wx:if');\n elem.destroyBackendElementOnDetach();\n Element.setInheritSlots(elem);\n if (slotElement)\n Element.setSlotElement(elem, slotElement);\n const tmplArgs = getTmplArgs(elem);\n tmplArgs.key = branchKey;\n this.handleChildrenCreationAndInsert(branchFunc, elem, slotElement, dynamicSlotName);\n childNodes.push(elem);\n }, \n // wx:for node\n (list, key, oriListUpdatePathTree, lvaluePath, itemCallback) => {\n const shadowRoot = this.shadowRoot;\n const elem = shadowRoot.createVirtualNode('wx:for');\n elem.destroyBackendElementOnDetach();\n Element.setInheritSlots(elem);\n if (slotElement)\n Element.setSlotElement(elem, slotElement);\n const tmplArgs = getTmplArgs(elem);\n tmplArgs.keyList = new RangeListManager(key, list, elem, shadowRoot, (item, index) => {\n const childNode = shadowRoot.createVirtualNode('wx:for-item');\n childNode.destroyBackendElementOnDetach();\n Element.setInheritSlots(childNode);\n if (slotElement)\n Element.setSlotElement(elem, slotElement);\n this.handleChildrenCreationAndInsert((isCreation, defineTextNode, defineElement, defineIfGroup, defineForLoop, defineSlot, definePureVirtualNode) => {\n itemCallback(true, item, index, undefined, undefined, lvaluePath ? [...lvaluePath, index] : null, defineTextNode, defineElement, defineIfGroup, defineForLoop, defineSlot, definePureVirtualNode);\n }, childNode, slotElement, dynamicSlotName);\n return childNode;\n });\n childNodes.push(elem);\n }, \n // slot node\n (slotName, slotValueInit, slot) => {\n const elem = this.shadowRoot.createVirtualNode('slot');\n elem.destroyBackendElementOnDetach();\n Element.setSlotName(elem, dataValueToString(slotName));\n if (slotElement) {\n Element.setSlotElement(elem, slotElement);\n }\n else if (slot !== undefined) {\n elem.slot = slot;\n }\n if (slotValueInit)\n slotValueInit(elem);\n childNodes.push(elem);\n }, \n // other virtual node\n (children, slot) => {\n if (slot !== undefined) {\n if (slotElement) {\n if (dynamicSlotName === slot) {\n const elem = this.shadowRoot.createVirtualNode('virtual');\n elem.destroyBackendElementOnDetach();\n Element.setSlotElement(elem, slotElement);\n const tmplArgs = getTmplArgs(elem);\n tmplArgs.dynamicSlotNameMatched = true;\n this.handleChildrenCreationAndInsert(children, elem, undefined, undefined);\n childNodes.push(elem);\n }\n else {\n const elem = this.createDynamicPlaceholder(slotElement);\n childNodes.push(elem);\n }\n }\n else {\n const elem = this.shadowRoot.createVirtualNode('virtual');\n elem.destroyBackendElementOnDetach();\n elem.slot = slot;\n this.handleChildrenCreationAndInsert(children, elem, undefined, undefined);\n childNodes.push(elem);\n }\n }\n else {\n const elem = this.shadowRoot.createVirtualNode('virtual');\n elem.destroyBackendElementOnDetach();\n Element.setInheritSlots(elem);\n if (slotElement)\n Element.setSlotElement(elem, slotElement);\n this.handleChildrenCreationAndInsert(children, elem, slotElement, dynamicSlotName);\n childNodes.push(elem);\n }\n }, undefined, undefined);\n return childNodes;\n }\n handleChildrenCreationAndInsert(children, parentNode, slotElement, dynamicSlotName) {\n const childNodes = this.handleChildrenCreation(children, slotElement, dynamicSlotName);\n if (childNodes.length)\n parentNode.insertChildren(childNodes, -1);\n }\n handleChildrenUpdate(children, parentNode, slotElement, dynamicSlotName) {\n let index = 0;\n const childNodes = slotElement\n ? slotElement.slotNodes.filter((node) => node.parentNode === parentNode)\n : parentNode.childNodes;\n children(false, \n // text node\n (textContent) => {\n const elem = childNodes[index];\n index += 1;\n if (slotElement) {\n const tmplArgs = getTmplArgs(elem);\n if (!tmplArgs.dynamicSlotNameMatched) {\n return;\n }\n }\n if (textContent !== undefined) {\n elem.textContent = textContent;\n }\n }, \n // component or native node\n (tagName, genericImpls, propertyInit, children, slot, dynamicSlotValueNames) => {\n const elem = childNodes[index];\n index += 1;\n if (slotElement) {\n const tmplArgs = getTmplArgs(elem);\n if (dynamicSlotName === (slot || '')) {\n if (!tmplArgs.dynamicSlotNameMatched) {\n const newElem = this.createCommonElement(tagName, genericImpls, propertyInit, children, dynamicSlotValueNames);\n Element.setSlotElement(newElem, slotElement);\n const newTmplArgs = getTmplArgs(newElem);\n newTmplArgs.dynamicSlotNameMatched = true;\n parentNode.replaceChild(newElem, elem);\n return;\n }\n }\n else {\n if (tmplArgs.dynamicSlotNameMatched) {\n const newElem = this.createDynamicPlaceholder(slotElement);\n parentNode.replaceChild(newElem, elem);\n }\n return;\n }\n }\n propertyInit(elem, false);\n let dynSlot = false;\n if (isComponent(elem)) {\n const sr = this.dynamicSlotUpdate(elem, dynamicSlotValueNames, children);\n if (sr)\n dynSlot = true;\n if (elem.hasPendingChanges()) {\n const nodeDataProxy = Component.getDataProxy(elem);\n nodeDataProxy.applyDataUpdates(true);\n }\n sr === null || sr === void 0 ? void 0 : sr.applySlotUpdates();\n }\n if (!slotElement) {\n if (slot !== undefined)\n elem.slot = slot;\n }\n if (!dynSlot) {\n this.handleChildrenUpdate(children, elem, undefined, undefined);\n }\n }, \n // wx:if node or template-is node\n (branchKey, branchFunc) => {\n const elem = childNodes[index];\n index += 1;\n const tmplArgs = getTmplArgs(elem);\n if (tmplArgs.key === branchKey) {\n this.handleChildrenUpdate(branchFunc, elem, slotElement, dynamicSlotName);\n }\n else {\n const newElem = this.shadowRoot.createVirtualNode('wx:if');\n newElem.destroyBackendElementOnDetach();\n Element.setInheritSlots(newElem);\n if (slotElement)\n Element.setSlotElement(newElem, slotElement);\n const tmplArgs = getTmplArgs(newElem);\n tmplArgs.key = branchKey;\n this.handleChildrenCreationAndInsert(branchFunc, newElem, slotElement, dynamicSlotName);\n if (slotElement)\n parentNode.replaceChild(newElem, elem);\n else\n parentNode.replaceChildAt(newElem, index - 1);\n }\n }, \n // wx:for node\n (list, key, oriListUpdatePathTree, lvaluePath, itemCallback) => {\n const elem = childNodes[index];\n index += 1;\n const tmplArgs = getTmplArgs(elem);\n const keyListManager = tmplArgs.keyList;\n keyListManager.diff(list, oriListUpdatePathTree, elem, (item, index) => {\n const childNode = this.shadowRoot.createVirtualNode('wx:for-item');\n childNode.destroyBackendElementOnDetach();\n Element.setInheritSlots(childNode);\n if (slotElement)\n Element.setSlotElement(elem, slotElement);\n this.handleChildrenCreationAndInsert((isCreation, defineTextNode, defineElement, defineIfGroup, defineForLoop, defineSlot, definePureVirtualNode) => {\n itemCallback(true, item, index, undefined, undefined, lvaluePath ? [...lvaluePath, index] : null, defineTextNode, defineElement, defineIfGroup, defineForLoop, defineSlot, definePureVirtualNode);\n }, childNode, slotElement, dynamicSlotName);\n return childNode;\n }, (item, index, updatePathTree, indexChanged, childNode) => {\n this.handleChildrenUpdate((isCreation, defineTextNode, defineElement, defineIfGroup, defineForLoop, defineSlot, definePureVirtualNode) => {\n itemCallback(false, item, index, updatePathTree, indexChanged ? true : undefined, lvaluePath ? [...lvaluePath, index] : null, defineTextNode, defineElement, defineIfGroup, defineForLoop, defineSlot, definePureVirtualNode);\n }, childNode, slotElement, dynamicSlotName);\n });\n }, \n // slot node\n (slotName, slotValueInit, slot) => {\n const elem = childNodes[index];\n index += 1;\n if (slotName !== undefined) {\n Element.setSlotName(elem, dataValueToString(slotName));\n }\n if (!slotElement) {\n if (slot !== undefined)\n elem.slot = slot;\n }\n if (slotValueInit)\n slotValueInit(elem);\n this.shadowRoot.applySlotValueUpdates(elem);\n }, \n // other virtual node\n (children, slot) => {\n const elem = childNodes[index];\n index += 1;\n if (slot !== undefined) {\n if (slotElement) {\n const tmplArgs = getTmplArgs(elem);\n if (dynamicSlotName === slot) {\n if (tmplArgs.dynamicSlotNameMatched) {\n this.handleChildrenUpdate(children, elem, undefined, undefined);\n }\n else {\n const newElem = this.shadowRoot.createVirtualNode('virtual');\n newElem.destroyBackendElementOnDetach();\n Element.setSlotElement(newElem, slotElement);\n const newTmplArgs = getTmplArgs(newElem);\n newTmplArgs.dynamicSlotNameMatched = true;\n this.handleChildrenCreationAndInsert(children, newElem, undefined, undefined);\n parentNode.replaceChild(newElem, elem);\n }\n }\n else {\n if (tmplArgs.dynamicSlotNameMatched) {\n const newElem = this.createDynamicPlaceholder(slotElement);\n parentNode.replaceChild(newElem, elem);\n }\n }\n }\n else {\n elem.slot = slot;\n this.handleChildrenUpdate(children, elem, undefined, undefined);\n }\n }\n else {\n this.handleChildrenUpdate(children, elem, slotElement, dynamicSlotName);\n }\n }, undefined, undefined);\n }\n dynamicSlotUpdate(elem, dynamicSlotValueNames, children) {\n const sr = elem.getShadowRoot();\n if ((sr === null || sr === void 0 ? void 0 : sr.getSlotMode()) === 3 /* SlotMode.Dynamic */) {\n sr.setDynamicSlotHandler(dynamicSlotValueNames || [], (slots) => {\n const childNodes = [];\n for (let i = 0; i < slots.length; i += 1) {\n const { slot, name: slotName, slotValues } = slots[i];\n const slotChildNodes = this.handleChildrenCreation((isCreation, defineTextNode, defineElement, defineIfGroup, defineForLoop, defineSlot, definePureVirtualNode) => {\n children(true, defineTextNode, defineElement, defineIfGroup, defineForLoop, defineSlot, definePureVirtualNode, slotValues, undefined);\n }, slot, slotName);\n childNodes.push(...slotChildNodes);\n }\n if (childNodes.length)\n elem.insertChildren(childNodes, -1);\n }, (slots) => {\n if (!slots.length || !slots[0].slotNodes.length)\n return;\n slots.sort((slot1, slot2) => slot1.slotNodes[0].parentIndex - slot2.slotNodes[0].parentIndex);\n let l = -Infinity;\n let r = -Infinity;\n for (let i = 0; i < slots.length; i += 1) {\n const slotNodes = slots[i].slotNodes;\n const firstIndex = slotNodes[0].parentIndex;\n if (r === firstIndex) {\n r = firstIndex + slotNodes.length;\n }\n else {\n if (l >= 0) {\n elem.removeChildren(l, r - l);\n }\n l = firstIndex;\n r = firstIndex + slotNodes.length;\n }\n }\n if (l >= 0)\n elem.removeChildren(l, r - l);\n }, (slot, slotValues, slotValueUpdatePathTrees) => {\n const slotName = slot._$slotName || '';\n this.handleChildrenUpdate((isCreation, defineTextNode, defineElement, defineIfGroup, defineForLoop, defineSlot, definePureVirtualNode) => {\n children(false, defineTextNode, defineElement, defineIfGroup, defineForLoop, defineSlot, definePureVirtualNode, slotValues, slotValueUpdatePathTrees);\n }, elem, slot, slotName);\n });\n return sr;\n }\n return null;\n }\n createDynamicPlaceholder(slotElement) {\n const elem = this.shadowRoot.createVirtualNode('virtual');\n elem.destroyBackendElementOnDetach();\n Element.setSlotElement(elem, slotElement);\n const tmplArgs = getTmplArgs(elem);\n tmplArgs.dynamicSlotNameMatched = false;\n return elem;\n }\n createCommonElement(tagName, genericImpls, propertyInit, children, dynamicSlotValueNames) {\n let dynSlot = false;\n const initPropValues = (elem) => {\n const sr = isComponent(elem)\n ? this.dynamicSlotUpdate(elem, dynamicSlotValueNames, children)\n : null;\n if (sr)\n dynSlot = true;\n propertyInit(elem, true);\n if (isComponent(elem)) {\n if (elem.hasPendingChanges()) {\n const nodeDataProxy = Component.getDataProxy(elem);\n nodeDataProxy.applyDataUpdates(true);\n }\n sr === null || sr === void 0 ? void 0 : sr.applySlotUpdates();\n }\n };\n const placeholderCallback = () => {\n var _a;\n const replacer = this.shadowRoot.createComponent(tagName, tagName, genericImpls, undefined, initPropValues);\n replacer.destroyBackendElementOnDetach();\n const replacerShadowRoot = replacer.getShadowRoot();\n const elemShadowRoot = isComponent(elem) ? elem.getShadowRoot() : null;\n const isElemDynamicSlots = (elemShadowRoot === null || elemShadowRoot === void 0 ? void 0 : elemShadowRoot.getSlotMode()) === 3 /* SlotMode.Dynamic */;\n const isReplacerDynamicSlots = (replacerShadowRoot === null || replacerShadowRoot === void 0 ? void 0 : replacerShadowRoot.getSlotMode()) === 3 /* SlotMode.Dynamic */;\n if (isReplacerDynamicSlots !== isElemDynamicSlots) {\n dispatchError(new Error(`The \"dynamicSlots\" option of component <${replacer.is}> and its placeholder <${elem.is}> should be the same.`), '[render]', isComponent(replacer) ? replacer : replacer.is);\n }\n else if (isReplacerDynamicSlots) {\n (_a = elem.parentNode) === null || _a === void 0 ? void 0 : _a.replaceChild(replacer, elem);\n }\n else {\n elem.selfReplaceWith(replacer);\n }\n };\n const elem = this.shadowRoot.createComponent(tagName, tagName, genericImpls, placeholderCallback, initPropValues);\n elem.destroyBackendElementOnDetach();\n if (dynSlot) {\n this.bindingMapDisabled = true; // IDEA better binding map disable detection\n }\n else {\n this.handleChildrenCreationAndInsert(children, elem, undefined, undefined);\n }\n return elem;\n }\n // set slot\n // (not used any more, leaving for compatibilities)\n s(elem, v) {\n elem.slot = v;\n }\n // set slot value\n l(elem, name, value) {\n this.shadowRoot.replaceSlotValue(elem, name, value);\n }\n // set id\n i(elem, v) {\n elem.id = v;\n }\n // set class or external classes named `class`\n c(elem, v) {\n if (isComponent(elem)) {\n // \"class\" itself can also be an external class\n const hasExternalClass = elem.hasExternalClass('class');\n if (hasExternalClass) {\n elem.setExternalClass('class', v);\n }\n }\n elem.setNodeClass(v);\n }\n // set style or property named `style`\n y(elem, v) {\n if (isComponent(elem) && Component.hasProperty(elem, 'style')) {\n const nodeDataProxy = Component.getDataProxy(elem);\n const camelName = dashToCamelCase('style');\n nodeDataProxy.replaceProperty(camelName, v);\n }\n else {\n elem.setNodeStyle(dataValueToString(v), 0 /* StyleSegmentIndex.MAIN */);\n }\n }\n // set dataset\n d(elem, name, v) {\n elem.setDataset(name, v);\n }\n // set mark\n m(elem, name, v) {\n elem.setMark(name, v);\n }\n // set event handler\n v(elem, evName, v, final, mutated, capture, isDynamic, _generalLvaluePath) {\n const handler = typeof v === 'function' ? this.eventListenerFilter(v) : dataValueToString(v);\n const listener = (ev) => {\n const host = elem.ownerShadowRoot.getHostNode();\n let ret;\n const methodCaller = host.getMethodCaller();\n const f = typeof handler === 'function' ? handler : Component.getMethod(host, handler);\n if (typeof f === 'function') {\n const filteredEv = this.eventObjectFilter(ev);\n ret = f.call(methodCaller, filteredEv);\n }\n return ret;\n };\n if (ENV.DEV) {\n Object.defineProperty(listener, 'name', {\n value: typeof handler === 'string' ? handler : handler.name,\n });\n }\n const evOptions = {\n final,\n mutated,\n capture,\n };\n if (isDynamic) {\n const tmplArgs = getTmplArgs(elem);\n if (!tmplArgs.dynEvListeners)\n tmplArgs.dynEvListeners = {};\n const dynEvListeners = tmplArgs.dynEvListeners;\n if (dynEvListeners[evName]) {\n elem.removeListener(evName, dynEvListeners[evName], evOptions);\n }\n dynEvListeners[evName] = listener;\n }\n if (handler)\n elem.addListener(evName, listener, evOptions);\n }\n // set a worklet directive value\n wl(elem, name, value) {\n if (isComponent(elem)) {\n elem.triggerWorkletChangeLifetime(name, value);\n }\n else {\n // TODO warn unused worklet\n }\n }\n // add a change property binding\n p(elem, name, v, _generalLvaluePath) {\n if (isComponent(elem)) {\n if (Component.hasProperty(elem, name)) {\n const tmplArgs = getTmplArgs(elem);\n if (!tmplArgs.changeProp) {\n tmplArgs.changeProp = Object.create(null);\n }\n tmplArgs.changeProp[name] = {\n listener: this.changePropFilter(v),\n oldValue: elem.data[name],\n };\n }\n }\n }\n // set filter functions for change properties and event listeners\n setFnFilter(changePropFilter, eventListenerFilter) {\n this.changePropFilter = changePropFilter;\n this.eventListenerFilter = eventListenerFilter;\n }\n}\nexport var GeneralLvaluePathPrefix;\n(function (GeneralLvaluePathPrefix) {\n GeneralLvaluePathPrefix[GeneralLvaluePathPrefix[\"Data\"] = 0] = \"Data\";\n GeneralLvaluePathPrefix[GeneralLvaluePathPrefix[\"Script\"] = 1] = \"Script\";\n GeneralLvaluePathPrefix[GeneralLvaluePathPrefix[\"InlineScript\"] = 2] = \"InlineScript\";\n})(GeneralLvaluePathPrefix || (GeneralLvaluePathPrefix = {}));\n//# sourceMappingURL=proc_gen_wrapper.js.map","/* eslint-disable class-methods-use-this */\n/* global document */\nimport { dataValueToString, } from './proc_gen_wrapper';\nconst noop = () => {\n /* empty */\n};\nexport class ProcGenWrapperDom {\n constructor(shadowRoot, procGen) {\n this.shadowRoot = shadowRoot;\n this.procGen = procGen;\n }\n create(data) {\n const { shadowRoot, procGen } = this;\n const children = procGen(this, true, data, undefined);\n this.handleChildrenCreation(children.C, shadowRoot.shadowRootElement);\n return children.B;\n }\n bindingMapUpdate(field, data, bindingMapGenList) {\n const updaters = bindingMapGenList[field];\n if (updaters === undefined)\n return;\n for (let i = 0; i < updaters.length; i += 1) {\n const bindingMapGen = updaters[i];\n bindingMapGen(data, () => {\n /* empty */\n }, (elem, v) => {\n ;\n elem.textContent = v;\n });\n }\n }\n handleChildrenCreation(children, parentNode) {\n let slotMergeable = true;\n let slotMerged = false;\n const appendSlot = () => {\n slotMergeable = false;\n slotMerged = false;\n const elem = document.createElement('virtual');\n parentNode.appendChild(elem);\n this.shadowRoot.slot = elem;\n };\n children(true, \n // text node\n (textContent, textInit) => {\n if (slotMerged)\n appendSlot();\n else\n slotMergeable = false;\n const elem = document.createTextNode(textContent || '');\n if (textInit)\n textInit(elem);\n parentNode.appendChild(elem);\n }, \n // component or native node\n (tagName, genericImpls, propertyInit, children) => {\n if (slotMerged)\n appendSlot();\n else\n slotMergeable = false;\n const elem = document.createElement(tagName);\n propertyInit(elem, true);\n this.handleChildrenCreation(children, elem);\n parentNode.appendChild(elem);\n }, \n // wx:if node or template-is node\n noop, \n // wx:for node\n noop, \n // slot node\n () => {\n if (slotMergeable) {\n slotMerged = true;\n this.shadowRoot.slot = parentNode;\n }\n else {\n appendSlot();\n }\n }, \n // other virtual node\n (children) => {\n if (slotMerged)\n appendSlot();\n else\n slotMergeable = false;\n const elem = document.createElement('virtual');\n this.handleChildrenCreation(children, elem);\n parentNode.appendChild(elem);\n });\n }\n // set slot\n s() {\n noop();\n }\n // set id\n i(elem, v) {\n this.shadowRoot.idMap[v] = elem;\n }\n // set class or external classes named `class`\n c(elem, v) {\n elem.setAttribute('class', v);\n }\n // set style or property named `style`\n y(elem, v) {\n elem.setAttribute('style', v);\n }\n // set dataset\n d(elem, name, v) {\n elem.dataset[name] = dataValueToString(v);\n }\n // set mark\n m() {\n noop();\n }\n // set event handler\n v(elem, evName, v, final) {\n this.shadowRoot.setListener(elem, evName, (ev) => {\n const handler = this.shadowRoot.template.methods[v];\n const ret = handler === null || handler === void 0 ? void 0 : handler(ev);\n if (final)\n return false;\n return ret;\n });\n }\n // update a property or external class of a component, or an attribute of a native node\n r(elem, name, v) {\n if (typeof v === 'boolean') {\n if (v)\n elem.setAttribute(name, '');\n else\n elem.removeAttribute(name);\n }\n else {\n elem.setAttribute(name, dataValueToString(v));\n }\n }\n // add a change property binding\n p() {\n noop();\n }\n // set filter functions for change properties and event listeners\n setFnFilter() {\n noop();\n }\n}\n//# sourceMappingURL=proc_gen_wrapper_dom.js.map","/* global document: false */\nimport { ProcGenWrapperDom } from './proc_gen_wrapper_dom';\nconst DEFAULT_PROC_GEN_DOM = () => ({\n C: (isCreation, defineTextNode, defineElement, defineIfGroup, defineForLoop, defineSlot) => {\n defineSlot('');\n },\n B: Object.create(null),\n});\nexport const DEFAULT_PROC_GEN_GROUP_DOM = () => DEFAULT_PROC_GEN_DOM;\nexport class GlassEaselTemplateDOM {\n constructor(behavior) {\n if (typeof behavior._$template !== 'object' && behavior._$template !== undefined) {\n throw new Error(`Component template of ${behavior.is} must be a valid compiled template (or \"null\" for default template).`);\n }\n else {\n const c = behavior._$template || {\n content: DEFAULT_PROC_GEN_GROUP_DOM,\n };\n this.genObjectGroupEnv = {\n list: c.groupList || Object.create(null),\n group: c.content,\n };\n }\n this.updateMode = '';\n this.methods = behavior._$methodMap;\n }\n createInstance(comp) {\n return new GlassEaselTemplateDOMInstance(this, comp);\n }\n}\nexport class GlassEaselTemplateDOMInstance {\n constructor(template, comp) {\n if (comp.getBackendMode() !== 3 /* BackendMode.Domlike */) {\n throw new Error(`Component template of ${comp.is} cannot be initialized since external rendering is only supported in Domlike backend currently.`);\n }\n const shadowRootElement = comp.getBackendElement();\n if (!shadowRootElement) {\n throw new Error(`Component template of ${comp.is} cannot be initialized as external components since no suitable backend element found.`);\n }\n this.comp = comp;\n this.shadowRoot = this;\n this.shadowRootElement = shadowRootElement;\n this.root = shadowRootElement;\n this.slot = shadowRootElement;\n this.template = template;\n const procGen = template.genObjectGroupEnv.group('') || DEFAULT_PROC_GEN_GROUP_DOM('');\n this.procGenWrapper = new ProcGenWrapperDom(this, procGen);\n this.idMap = Object.create(null);\n this.listeners = [];\n }\n initValues(data) {\n this.bindingMapGen = this.procGenWrapper.create(data);\n if (!this.bindingMapGen) {\n throw new Error('The component template does not support binding-map-update, so it cannot be used as external components.');\n }\n const shadowRoot = this.shadowRootElement;\n if (this.slot === shadowRoot && shadowRoot.childNodes.length > 0) {\n // if `<slot />` is forgot, add one at the end of the child list\n const slot = document.createElement('virtual');\n shadowRoot.appendChild(slot);\n this.slot = slot;\n }\n }\n getIdMap() {\n return this.idMap;\n }\n updateValues(data, changes) {\n const bindingMapGen = this.bindingMapGen;\n for (let i = 0; i < changes.length; i += 1) {\n const [path] = changes[i];\n this.procGenWrapper.bindingMapUpdate(path[0], data, bindingMapGen);\n }\n }\n // eslint-disable-next-line class-methods-use-this\n setListener(elem, ev, listener) {\n const target = elem;\n if (target._$wxTmplEv) {\n target._$wxTmplEv[ev] = listener;\n }\n else {\n target._$wxTmplEv = { [ev]: listener };\n }\n }\n handleEvent(elem, event) {\n var _a;\n const target = elem;\n let cur = target;\n const root = this.shadowRootElement;\n const evName = event.getEventName();\n const bubbles = event.bubbles;\n for (;;) {\n const shadowedEvent = event.wrapShadowedEvent(target, null, cur);\n const f = (_a = cur._$wxTmplEv) === null || _a === void 0 ? void 0 : _a[evName];\n if (f) {\n const r = f.call(cur, shadowedEvent);\n if (r === false) {\n event.preventDefault();\n event.stopPropagation();\n }\n }\n if (!bubbles || event.propagationStopped())\n break;\n if (cur === root)\n break;\n const next = cur.parentNode;\n if (next)\n cur = next;\n else\n break;\n }\n }\n}\n//# sourceMappingURL=native_rendering.js.map","/* eslint-disable class-methods-use-this */\nimport { GlassEaselTemplateDOM } from './native_rendering';\nimport { ProcGenWrapper, } from './proc_gen_wrapper';\nconst DEFAULT_PROC_GEN = () => ({\n C: (isCreation, defineTextNode, defineElement, defineIfGroup, defineForLoop, defineSlot) => {\n defineSlot('');\n },\n B: Object.create(null),\n});\nexport const DEFAULT_PROC_GEN_GROUP = () => DEFAULT_PROC_GEN;\nvar BindingMapUpdateEnabled;\n(function (BindingMapUpdateEnabled) {\n BindingMapUpdateEnabled[BindingMapUpdateEnabled[\"Disabled\"] = 0] = \"Disabled\";\n BindingMapUpdateEnabled[BindingMapUpdateEnabled[\"Enabled\"] = 1] = \"Enabled\";\n BindingMapUpdateEnabled[BindingMapUpdateEnabled[\"Forced\"] = 2] = \"Forced\";\n})(BindingMapUpdateEnabled || (BindingMapUpdateEnabled = {}));\nexport class GlassEaselTemplateEngine {\n create(behavior, componentOptions) {\n if (componentOptions.externalComponent) {\n return new GlassEaselTemplateDOM(behavior);\n }\n return new GlassEaselTemplate(behavior);\n }\n}\nclass GlassEaselTemplate {\n constructor(behavior) {\n this.updateTemplate(behavior);\n }\n /**\n * Update the underlying template content\n *\n * This method does not affect created instances.\n */\n updateTemplate(behavior) {\n const template = behavior._$template;\n if (typeof template !== 'object' && template !== undefined) {\n throw new Error(`Component template of ${behavior.is} must be a valid compiled template (or \"null\" for default template).`);\n }\n const c = template || {\n content: DEFAULT_PROC_GEN_GROUP,\n };\n this.genObjectGroupEnv = {\n list: c.groupList || Object.create(null),\n group: c.content,\n };\n this.updateMode = c.updateMode || '';\n this.fallbackListenerOnNativeNode = c.fallbackListenerOnNativeNode || false;\n this.eventObjectFilter = c.eventObjectFilter;\n }\n createInstance(comp, createShadowRoot) {\n return new GlassEaselTemplateInstance(this, comp, createShadowRoot(comp));\n }\n}\nclass GlassEaselTemplateInstance {\n constructor(template, comp, shadowRoot) {\n this.comp = comp;\n this.shadowRoot = shadowRoot;\n this.shadowRoot.destroyBackendElementOnDetach();\n this._$applyTemplate(template);\n }\n updateTemplate(template, data) {\n this._$applyTemplate(template);\n this.shadowRoot.removeChildren(0, this.shadowRoot.childNodes.length);\n this.bindingMapGen = this.procGenWrapper.create(data);\n }\n _$applyTemplate(template) {\n const procGen = template.genObjectGroupEnv.group('') || DEFAULT_PROC_GEN_GROUP('');\n if (template.updateMode === 'bindingMap') {\n this.forceBindingMapUpdate = 2 /* BindingMapUpdateEnabled.Forced */;\n }\n else if (template.updateMode === 'virtualTree') {\n this.forceBindingMapUpdate = 0 /* BindingMapUpdateEnabled.Disabled */;\n }\n else {\n this.forceBindingMapUpdate = 1 /* BindingMapUpdateEnabled.Enabled */;\n }\n this.procGenWrapper = new ProcGenWrapper(this.shadowRoot, procGen, template.fallbackListenerOnNativeNode, template.eventObjectFilter);\n this.bindingMapGen = undefined;\n }\n initValues(data) {\n this.bindingMapGen = this.procGenWrapper.create(data);\n return this.shadowRoot;\n }\n updateValues(data, changes) {\n if (this.forceBindingMapUpdate === 2 /* BindingMapUpdateEnabled.Forced */) {\n for (let i = 0; i < changes.length; i += 1) {\n this.tryBindingMapUpdate(data, changes[i]);\n }\n return;\n }\n if (this.forceBindingMapUpdate === 1 /* BindingMapUpdateEnabled.Enabled */ && changes.length <= 1) {\n if (this.bindingMapGen) {\n if (this.tryBindingMapUpdate(data, changes[0])) {\n return;\n }\n }\n }\n const dataUpdatePathTree = Object.create(null);\n for (let i = 0; i < changes.length; i += 1) {\n const [p, newVal, spliceIndex, spliceDel] = changes[i];\n let cur = dataUpdatePathTree;\n for (let j = 0; j < p.length; j += 1) {\n const field = p[j];\n const v = cur[field];\n if (v === true)\n break;\n if (j === p.length - 1) {\n if (spliceDel === undefined) {\n cur[field] = true;\n }\n else {\n const startIndex = spliceIndex;\n if (v === undefined) {\n cur[field] = new Array(startIndex);\n }\n else if (!Array.isArray(v)) {\n const arr = new Array(startIndex);\n const keys = Object.keys(v);\n for (let i = 0; i < keys.length; i += 1) {\n const key = keys[i];\n const item = v[key];\n const index = Number(key);\n if (arr.length < index)\n arr.length = index;\n arr[key] = item;\n }\n cur[field] = arr;\n }\n const arr = cur[field];\n if (arr.length < startIndex) {\n arr.length = startIndex;\n }\n const inserts = new Array(newVal.length);\n inserts.fill(true);\n arr.splice(spliceIndex, spliceDel, ...inserts);\n }\n break;\n }\n if (v === undefined) {\n const next = Object.create(null);\n cur[field] = next;\n cur = next;\n }\n else {\n cur = v;\n }\n }\n }\n this.procGenWrapper.update(data, dataUpdatePathTree);\n }\n tryBindingMapUpdate(data, change) {\n if (!change)\n return true;\n const bindingMapGen = this.bindingMapGen;\n if (!bindingMapGen) {\n return false;\n }\n const [path] = change;\n if (path.length !== 1)\n return false;\n return this.procGenWrapper.bindingMapUpdate(path[0], data, bindingMapGen);\n }\n}\nlet defaultTemplateEngine = null;\nexport const getDefaultTemplateEngine = () => {\n if (defaultTemplateEngine) {\n return defaultTemplateEngine;\n }\n const tmpl = new GlassEaselTemplateEngine();\n defaultTemplateEngine = tmpl;\n return tmpl;\n};\n//# sourceMappingURL=index.js.map","/* eslint-disable @typescript-eslint/no-unsafe-return */\nimport { BM, } from './backend';\nimport { CurrentWindowBackendContext } from './backend/current_window_backend_context';\nimport { EmptyBackendContext } from './backend/empty_backend';\nimport { EmptyComposedBackendContext } from './backend/empty_composed_backend';\nimport { ClassList, StyleScopeManager } from './class_list';\nimport { METHOD_TAG, } from './component_params';\nimport { getDefaultComponentSpace } from './component_space';\nimport { parseMultiPaths, parseSinglePath } from './data_path';\nimport { DataGroup, getDeepCopyStrategy, } from './data_proxy';\nimport { simpleDeepCopy } from './data_utils';\nimport { performanceMeasureEnd, performanceMeasureRenderWaterfall, performanceMeasureStart, } from './devtool';\nimport { Element } from './element';\nimport { FuncArr, safeCallback } from './func_arr';\nimport { ENV, globalOptions, normalizeComponentOptions, } from './global_options';\nimport { Relation, generateRelationDefinitionGroup, normalizeRelation, } from './relation';\nimport { ShadowRoot } from './shadow_root';\nimport { getDefaultTemplateEngine } from './tmpl';\nimport { TraitBehavior, TraitGroup } from './trait_behaviors';\nimport { COMPONENT_SYMBOL, isComponent, isElement } from './type_symbol';\nimport { ThirdError, dispatchError, triggerWarning } from './warning';\nexport const convertGenerics = (compDef, sourceBehavior, owner, genericTargets) => {\n const space = sourceBehavior.ownerSpace;\n const hostUsing = owner === null || owner === void 0 ? void 0 : owner._$behavior._$using;\n const hostGenericImpls = owner === null || owner === void 0 ? void 0 : owner._$genericImpls;\n if (!compDef._$detail)\n compDef.prepare();\n const childBeh = compDef.behavior;\n let genericImpls;\n const generics = childBeh._$generics;\n if (generics) {\n const genericDefaults = childBeh._$genericDefaults;\n genericImpls = Object.create(null);\n for (let i = 0; i < generics.length; i += 1) {\n const key = generics[i];\n if (genericTargets && Object.prototype.hasOwnProperty.call(genericTargets, key)) {\n const target = genericTargets[key];\n if (typeof target === 'string') {\n if (hostUsing === null || hostUsing === void 0 ? void 0 : hostUsing[target]) {\n genericImpls[key] = hostUsing[target];\n }\n else if (hostGenericImpls && hostGenericImpls[target]) {\n genericImpls[key] = hostGenericImpls[target];\n }\n else {\n const comp = space.getGlobalUsingComponent(target);\n if (typeof comp === 'string') {\n genericImpls[key] = comp;\n }\n else if (comp) {\n genericImpls[key] = {\n final: comp,\n source: sourceBehavior,\n placeholder: null,\n waiting: null,\n };\n }\n else {\n triggerWarning(`Generic \"${key}\" value \"${target}\" is not valid`, compDef.is);\n const defaultComp = space.getDefaultComponent();\n if (!defaultComp) {\n throw new ThirdError(`Cannot find default component for generic \"${key}\"`, '[prepare]', compDef.is);\n }\n genericImpls[key] = {\n final: defaultComp,\n source: sourceBehavior,\n placeholder: null,\n waiting: null,\n };\n }\n }\n }\n else {\n genericImpls[key] = target;\n }\n }\n else {\n const defaultComp = genericDefaults[key] || space.getDefaultComponent();\n if (!defaultComp) {\n throw new ThirdError(`Cannot find default component for generic \"${key}\"`, '[prepare]', compDef.is);\n }\n genericImpls[key] =\n typeof defaultComp === 'string'\n ? defaultComp\n : {\n final: defaultComp,\n source: sourceBehavior,\n placeholder: null,\n waiting: null,\n };\n }\n }\n }\n else {\n genericImpls = null;\n }\n return genericImpls;\n};\nexport const resolvePlaceholder = (placeholder, space, behavior, genericImpls) => {\n const using = behavior._$using;\n const usingTarget = using[placeholder] || (genericImpls && genericImpls[placeholder]);\n let ret = null;\n if (usingTarget) {\n if (typeof usingTarget === 'string') {\n ret = usingTarget;\n }\n else if (usingTarget.placeholder === null) {\n ret = usingTarget.final;\n }\n else {\n triggerWarning(`Placeholder on generic implementation is not valid`, behavior.is);\n }\n }\n if (ret)\n return ret;\n let comp = space.getGlobalUsingComponent(placeholder);\n if (comp === null && space._$allowUnusedNativeNode && placeholder !== '') {\n comp = placeholder;\n }\n if (!comp) {\n comp = space.getDefaultComponent();\n if (!comp) {\n throw new ThirdError(`Cannot find placeholder target \"${placeholder}\"`, '[prepare]', behavior.is);\n }\n triggerWarning(`Cannot find placeholder target \"${placeholder}\", using default component.`, behavior.is);\n }\n return comp;\n};\nexport class ComponentDefinition {\n /** @internal */\n constructor(behavior) {\n this.behavior = behavior;\n this.is = this.behavior.is;\n this._$detail = null;\n this._$options = normalizeComponentOptions(behavior._$options, behavior.ownerSpace.getComponentOptions());\n const templateEngine = this._$options.templateEngine;\n this._$templateEngine = templateEngine !== null && templateEngine !== void 0 ? templateEngine : getDefaultTemplateEngine();\n }\n general() {\n return this;\n }\n /** Get the normalized component options */\n getComponentOptions() {\n return this._$options;\n }\n /**\n * List all component dependencies (recursively)\n *\n * This method will prepare the underlying behavior.\n * The caller component is not included in the result.\n */\n getComponentDependencies() {\n return this.behavior.getComponentDependencies();\n }\n /**\n * Update the template field\n *\n * This method throws error if the template engine does not support template update.\n */\n updateTemplate(template) {\n var _a;\n if (!((_a = this._$detail) === null || _a === void 0 ? void 0 : _a.template.updateTemplate)) {\n throw new Error(`The template engine of component \"${this.is}\" does not support template update`);\n }\n this.behavior._$updateTemplate(template);\n this._$detail.template.updateTemplate(this.behavior);\n }\n isPrepared() {\n return !!this._$detail;\n }\n prepare() {\n if (this._$detail)\n return;\n this.behavior.prepare();\n const behavior = this.behavior;\n const options = this._$options;\n const propSetters = {};\n // add properties to component prototype if needed\n if (options.writeFieldsToNode) {\n const keys = Object.keys(behavior._$propertyMap);\n for (let i = 0; i < keys.length; i += 1) {\n const propName = keys[i];\n propSetters[propName] = {\n enumerable: true,\n get() {\n return this._$dataGroup.data[propName];\n },\n set(v) {\n const dataGroup = this._$dataGroup;\n dataGroup.replaceDataOnPath([propName], v);\n dataGroup.applyDataUpdates();\n },\n };\n }\n const methodKeys = Object.keys(behavior._$methodMap);\n for (let i = 0; i < methodKeys.length; i += 1) {\n const methodName = methodKeys[i];\n propSetters[methodName] = {\n enumerable: true,\n value: behavior._$methodMap[methodName],\n };\n }\n }\n // create prototype\n const protoFunc = function ComponentInst() {\n /* a component */\n };\n propSetters.constructor = {\n value: protoFunc,\n writable: true,\n };\n protoFunc.prototype = Object.create(Component.prototype, propSetters);\n const proto = protoFunc.prototype;\n proto._$behavior = behavior;\n proto._$definition = this;\n proto._$methodMap = behavior._$methodMap;\n // init other helpers\n const dataGroupObserverTree = behavior._$generateObserverTree();\n proto._$lifetimeFuncs = behavior._$getAllLifetimeFuncs();\n proto._$pageLifetimeFuncs = behavior._$getAllPageLifetimeFuncs();\n const relationDefinitionGroup = generateRelationDefinitionGroup(behavior._$relationMap);\n const dataDeepCopy = getDeepCopyStrategy(options.dataDeepCopy);\n const propertyPassingDeepCopy = getDeepCopyStrategy(options.propertyPassingDeepCopy);\n // call template engine\n const template = this._$templateEngine.create(behavior, options);\n this._$detail = {\n proto,\n template,\n dataGroupObserverTree,\n dataDeepCopy,\n propertyPassingDeepCopy,\n relationDefinitionGroup,\n };\n }\n}\nlet componentInstanceIdInc = 1;\nlet defaultBackendContext = null;\nexport const getDefaultBackendContext = () => {\n if (defaultBackendContext)\n return defaultBackendContext;\n let c;\n if (BM.DOMLIKE) {\n c = new CurrentWindowBackendContext();\n }\n else if (BM.COMPOSED) {\n c = new EmptyComposedBackendContext();\n }\n else {\n c = new EmptyBackendContext();\n }\n defaultBackendContext = c;\n return c;\n};\n/**\n * A node that has a shadow tree attached to it\n */\nexport class Component extends Element {\n /* istanbul ignore next */\n constructor() {\n throw new Error('Element cannot be constructed directly');\n // eslint-disable-next-line no-unreachable\n super();\n }\n general() {\n return this;\n }\n /**\n * Cast a general component node to the instance of the specified component\n *\n * Returns `null` if the component node is not the instance of the specified component.\n */\n asInstanceOf(componentDefinition) {\n if (this._$behavior !== componentDefinition.behavior) {\n return null;\n }\n return this;\n }\n static register(def, space) {\n return (space || getDefaultComponentSpace()).defineComponent(def);\n }\n /** @internal */\n static _$tagMethod(func) {\n const taggedMethod = func;\n taggedMethod[METHOD_TAG] = true;\n return taggedMethod;\n }\n /** @internal */\n static _$isTaggedMethod(func) {\n return typeof func === 'function' && !!func[METHOD_TAG];\n }\n /** @internal */\n static _$advancedCreate(tagName, def, owner, backendContext, genericImpls, placeholderHandlerRemover, initPropValues) {\n var _a, _b, _c, _d;\n if (!def._$detail) {\n if (ENV.DEV)\n performanceMeasureStart('component.prepare');\n def.prepare();\n if (ENV.DEV)\n performanceMeasureEnd();\n }\n const { proto, template, dataDeepCopy, propertyPassingDeepCopy, relationDefinitionGroup } = def._$detail;\n let dataGroupObserverTree = def._$detail.dataGroupObserverTree;\n const options = def._$options;\n const behavior = def.behavior;\n const nodeTreeContext = owner\n ? owner.getBackendContext()\n : backendContext || globalOptions.backendContext || getDefaultBackendContext();\n const external = options.externalComponent;\n const propEarlyInit = options.propertyEarlyInit;\n const writeExtraInfoToAttr = globalOptions.writeExtraInfoToAttr;\n const virtualHost = options.virtualHost;\n // initialize component instance object\n const comp = Object.create(proto);\n if (ENV.DEV)\n performanceMeasureStart('component.create', comp);\n comp._$genericImpls = genericImpls;\n comp._$placeholderHandlerRemover = placeholderHandlerRemover;\n comp._$external = external;\n comp.tagName = tagName;\n comp._$methodCaller = comp;\n comp._$virtual = virtualHost;\n // create backend element\n let backendElement = null;\n if (nodeTreeContext) {\n if (BM.DOMLIKE || (BM.DYNAMIC && nodeTreeContext.mode === 3 /* BackendMode.Domlike */)) {\n if (!virtualHost) {\n if (ENV.DEV)\n performanceMeasureStart('backend.createElement');\n backendElement = nodeTreeContext.document.createElement(tagName);\n if (ENV.DEV)\n performanceMeasureEnd();\n }\n }\n else if (BM.COMPOSED || (BM.DYNAMIC && nodeTreeContext.mode === 2 /* BackendMode.Composed */)) {\n if (!virtualHost) {\n if (ENV.DEV)\n performanceMeasureStart('backend.createElement');\n backendElement = nodeTreeContext.createElement(options.hostNodeTagName, tagName);\n if (ENV.DEV)\n performanceMeasureEnd();\n }\n }\n else if (BM.SHADOW || (BM.DYNAMIC && nodeTreeContext.mode === 1 /* BackendMode.Shadow */)) {\n if (ENV.DEV)\n performanceMeasureStart('component.createComponent');\n const be = (owner ? owner._$backendShadowRoot : nodeTreeContext.getRootNode()).createComponent(tagName, external, virtualHost, (_a = options.styleScope) !== null && _a !== void 0 ? _a : StyleScopeManager.globalScope(), options.extraStyleScope, behavior._$externalClasses);\n if (ENV.DEV)\n performanceMeasureEnd();\n backendElement = be;\n }\n }\n comp._$initialize(virtualHost, backendElement, owner, owner ? owner._$nodeTreeContext : nodeTreeContext);\n const ownerHost = owner ? owner.getHostNode() : undefined;\n const ownerComponentOptions = ownerHost === null || ownerHost === void 0 ? void 0 : ownerHost.getComponentOptions();\n // init class list\n const styleScope = (_b = ownerComponentOptions === null || ownerComponentOptions === void 0 ? void 0 : ownerComponentOptions.styleScope) !== null && _b !== void 0 ? _b : StyleScopeManager.globalScope();\n const extraStyleScope = (_c = ownerComponentOptions === null || ownerComponentOptions === void 0 ? void 0 : ownerComponentOptions.extraStyleScope) !== null && _c !== void 0 ? _c : undefined;\n const styleScopeManager = ownerHost === null || ownerHost === void 0 ? void 0 : ownerHost._$behavior.ownerSpace.styleScopeManager;\n comp.classList = new ClassList(comp, behavior._$externalClasses, ownerHost ? ownerHost.classList : null, styleScope, extraStyleScope, styleScopeManager);\n if (backendElement) {\n if (BM.COMPOSED || (BM.DYNAMIC && nodeTreeContext.mode === 2 /* BackendMode.Composed */)) {\n ;\n backendElement.setStyleScope(styleScope, extraStyleScope, (_d = options.styleScope) !== null && _d !== void 0 ? _d : StyleScopeManager.globalScope());\n }\n if (styleScopeManager && writeExtraInfoToAttr) {\n const prefix = styleScopeManager.queryName(styleScope);\n if (prefix) {\n backendElement.setAttribute('exparser:info-class-prefix', `${prefix}--`);\n }\n }\n }\n // create template engine\n const tmplInst = template.createInstance(comp, \n // eslint-disable-next-line @typescript-eslint/unbound-method\n ShadowRoot.createShadowRoot);\n // associate in backend\n if (backendElement) {\n if (ENV.DEV)\n performanceMeasureStart('backend.associateValue');\n if (!(BM.DOMLIKE || (BM.DYNAMIC && nodeTreeContext.mode === 3 /* BackendMode.Domlike */))) {\n ;\n backendElement.associateValue(comp);\n }\n else {\n ;\n nodeTreeContext.associateValue(backendElement, comp);\n }\n if (ENV.DEV)\n performanceMeasureEnd();\n }\n // write attr\n if (writeExtraInfoToAttr && backendElement) {\n const componentInstanceId = componentInstanceIdInc;\n componentInstanceIdInc += 1;\n comp._$componentInstanceId = componentInstanceId;\n backendElement.setAttribute('exparser:info-component-id', componentInstanceId);\n }\n comp._$idPrefix = options.idPrefixGenerator\n ? options.idPrefixGenerator.call(comp)\n : '';\n // combine initial data\n const staticData = behavior._$staticData;\n const dataGenFuncs = behavior._$data;\n let data;\n if (staticData === undefined) {\n if (dataGenFuncs.length === 1) {\n const f = dataGenFuncs[0];\n data = f();\n }\n else {\n data = {};\n for (let i = 0; i < dataGenFuncs.length; i += 1) {\n const f = dataGenFuncs[i];\n Object.assign(data, f());\n }\n }\n }\n else {\n data = simpleDeepCopy(staticData);\n for (let i = 0; i < dataGenFuncs.length; i += 1) {\n const f = dataGenFuncs[i];\n Object.assign(data, f());\n }\n }\n // init relations\n const relation = (comp._$relation = new Relation(comp, relationDefinitionGroup));\n // init trait group\n comp._$traitGroup = new TraitGroup();\n const traitBehaviors = behavior._$traitBehaviors;\n if (traitBehaviors !== undefined) {\n for (let i = 0; i < traitBehaviors.length; i += 1) {\n // eslint-disable-next-line @typescript-eslint/no-unsafe-assignment\n const { traitBehavior, impl } = traitBehaviors[i];\n comp._$traitGroup.implement(traitBehavior, impl);\n }\n }\n // call method caller init\n if (behavior._$methodCallerInit) {\n const methodCaller = behavior._$methodCallerInit.call(comp);\n comp._$methodCaller = methodCaller;\n }\n // call init functions\n let initDone = false;\n function relationInit(relationDef) {\n if (initDone)\n throw new ThirdError('Cannot execute init-time functions after initialization', '[implement]', behavior.is);\n const target = relationDef.target;\n const normalizedRel = normalizeRelation(behavior.ownerSpace, behavior.is, 'undefined', relationDef);\n let key;\n if (normalizedRel) {\n key = relation.add(normalizedRel);\n }\n else {\n key = Symbol('invalid');\n }\n const list = () => {\n const targetNodes = relation.getLinkedTargets(key);\n return targetNodes.map((x) => x.getMethodCaller());\n };\n const listAsTrait = target instanceof TraitBehavior\n ? () => {\n const targetNodes = relation.getLinkedTargets(key);\n return targetNodes.map((x) => x.traitBehavior(target));\n }\n : undefined;\n return { list, listAsTrait };\n }\n if (behavior._$init.length > 0) {\n let cowObserver = true;\n let cowLifetime = true;\n let cowPageLifetime = true;\n let cowMethodMap = true;\n const methodCaller = comp.getMethodCaller();\n const builderContext = {\n self: methodCaller,\n data,\n setData: comp.setData.bind(comp),\n implement: (traitBehavior, impl) => {\n if (initDone)\n throw new ThirdError('Cannot execute init-time functions after initialization', '[implement]', behavior.is);\n comp._$traitGroup.implement(traitBehavior, impl);\n },\n relation: relationInit,\n observer: (dataPaths, func) => {\n if (initDone)\n throw new ThirdError('Cannot execute init-time functions after initialization', '[implement]', behavior.is);\n if (cowObserver) {\n cowObserver = false;\n dataGroupObserverTree = dataGroupObserverTree.cloneSub();\n }\n try {\n dataGroupObserverTree.addObserver(func, parseMultiPaths(dataPaths));\n }\n catch (e) {\n // parse multi paths may throw errors\n dispatchError(e, `observer`, behavior.is);\n }\n },\n lifetime: (name, func) => {\n if (initDone)\n throw new ThirdError('Cannot execute init-time functions after initialization', '[implement]', behavior.is);\n if (cowLifetime) {\n cowLifetime = false;\n comp._$lifetimeFuncs = behavior._$getAllLifetimeFuncs();\n }\n const fag = comp._$lifetimeFuncs;\n if (fag[name]) {\n fag[name].add(func);\n }\n else {\n const fa = (fag[name] = new FuncArr('lifetime'));\n fa.add(func);\n }\n },\n pageLifetime: (name, func) => {\n if (initDone)\n throw new ThirdError('Cannot execute init-time functions after initialization', '[implement]', behavior.is);\n if (cowPageLifetime) {\n cowPageLifetime = false;\n comp._$pageLifetimeFuncs = behavior._$getAllPageLifetimeFuncs();\n }\n const fag = comp._$pageLifetimeFuncs;\n if (fag[name]) {\n fag[name].add(func);\n }\n else {\n const fa = (fag[name] = new FuncArr('pageLifetime'));\n fa.add(func);\n }\n },\n method: (func) => Component._$tagMethod(func),\n listener: (func) => Component._$tagMethod(func),\n };\n const initFuncs = behavior._$init;\n for (let i = 0; i < initFuncs.length; i += 1) {\n const init = initFuncs[i];\n if (ENV.DEV)\n performanceMeasureStart('component.init', comp);\n const exported = safeCallback('Component Init', init, methodCaller, [builderContext], undefined);\n if (ENV.DEV)\n performanceMeasureEnd();\n if (exported) {\n const exportedKeys = Object.keys(exported);\n for (let j = 0; j < exportedKeys.length; j += 1) {\n const exportedKey = exportedKeys[j];\n const exportItem = exported[exportedKey];\n if (Component._$isTaggedMethod(exportItem)) {\n if (cowMethodMap) {\n cowMethodMap = false;\n comp._$methodMap = Object.create(comp._$methodMap);\n }\n comp._$methodMap[exportedKey] = exportItem;\n if (options.writeFieldsToNode) {\n ;\n comp[exportedKey] = exportItem;\n }\n }\n }\n }\n }\n }\n initDone = true;\n // init data\n const shadowRoot = tmplInst.shadowRoot;\n comp.shadowRoot = shadowRoot;\n const dataGroup = new DataGroup(comp, data, options.pureDataPattern || null, dataDeepCopy, propertyPassingDeepCopy, options.reflectToAttributes, dataGroupObserverTree);\n comp._$dataGroup = dataGroup;\n // init template with init data\n if (propEarlyInit && initPropValues !== undefined)\n initPropValues(comp);\n if (ENV.DEV) {\n performanceMeasureRenderWaterfall('component.render', 'backend.render', comp, () => {\n tmplInst.initValues(dataGroup.innerData || dataGroup.data);\n });\n }\n else {\n tmplInst.initValues(dataGroup.innerData || dataGroup.data);\n }\n comp._$tmplInst = tmplInst;\n dataGroup.setUpdateListener((data, combinedChanges) => {\n if (ENV.DEV) {\n performanceMeasureRenderWaterfall('component.render', 'backend.render', comp, () => {\n tmplInst.updateValues(data, combinedChanges);\n });\n }\n else {\n tmplInst.updateValues(data, combinedChanges);\n }\n });\n // bind behavior listeners\n const listeners = behavior._$listeners;\n if (listeners !== undefined) {\n for (let i = 0; i < listeners.length; i += 1) {\n const { id, ev, listener: gf } = listeners[i];\n const listener = gf;\n if (id === 'this') {\n comp.addListener(ev, (ev) => listener.call(comp._$methodCaller, ev));\n }\n else if (!external) {\n const sr = shadowRoot;\n const elem = id ? sr.getElementById(id) : sr;\n if (elem) {\n elem.addListener(ev, (ev) => listener.call(comp._$methodCaller, ev));\n }\n }\n else {\n const sr = shadowRoot;\n const elem = id ? sr.getIdMap()[id] : sr.root;\n if (elem) {\n sr.setListener(elem, ev, (ev) => listener.call(comp._$methodCaller, ev));\n }\n }\n }\n }\n // trigger created lifetimes\n comp.triggerLifetime('created', []);\n if (!propEarlyInit && initPropValues !== undefined)\n initPropValues(comp);\n if (ENV.DEV)\n performanceMeasureEnd();\n return comp;\n }\n static createWithGenericsAndContext(tagName, componentDefinition, genericTargets, backendContext, initPropValues) {\n const collectGenericImpls = (def) => {\n let genericImpls;\n if (genericTargets) {\n // eslint-disable-next-line @typescript-eslint/no-unsafe-assignment\n genericImpls = Object.create(null);\n Object.entries(genericTargets).forEach(([key, g]) => {\n genericImpls[key] = {\n final: g,\n source: def.behavior,\n placeholder: null,\n waiting: null,\n };\n });\n }\n return convertGenerics(def, def.behavior, undefined, genericImpls);\n };\n if (componentDefinition) {\n return Component._$advancedCreate(String(tagName), componentDefinition, null, backendContext, collectGenericImpls(componentDefinition), undefined, initPropValues);\n }\n if (tagName instanceof ComponentDefinition) {\n return Component._$advancedCreate(tagName.is, tagName, null, backendContext, collectGenericImpls(tagName), undefined);\n }\n const compDef = getDefaultComponentSpace().getComponentByUrl(tagName, '');\n return Component._$advancedCreate(tagName, compDef, null, backendContext, collectGenericImpls(compDef), undefined);\n }\n static createWithGenerics(tagName, componentDefinition, genericImpls, initPropValues) {\n return Component.createWithGenericsAndContext(tagName, componentDefinition, genericImpls, null, initPropValues);\n }\n static createWithContext(tagName, componentDefinition, backendContext, initPropValues) {\n return Component.createWithGenericsAndContext(tagName, componentDefinition, null, backendContext, initPropValues);\n }\n static create(tagName, componentDefinition, initPropValues) {\n return Component.createWithGenericsAndContext(tagName, componentDefinition, null, null, initPropValues);\n }\n get is() {\n return this._$definition.is;\n }\n get properties() {\n return this._$dataGroup.data;\n }\n get data() {\n return this._$dataGroup.data;\n }\n set data(newData) {\n const dataGroup = this._$dataGroup;\n if (dataGroup === undefined) {\n throw new ThirdError('Cannot update data before component created', `data setter`, this);\n }\n Object.entries(newData).forEach(([key, value]) => dataGroup.replaceDataOnPath([key], value));\n dataGroup.applyDataUpdates();\n }\n get $() {\n if (this._$external) {\n return this.shadowRoot.getIdMap();\n }\n return this.shadowRoot._$getIdMap();\n }\n /**\n * Returns the shadow root element\n *\n * Returns `null` for external components.\n */\n getShadowRoot() {\n if (this._$external) {\n return null;\n }\n return this.shadowRoot;\n }\n /**\n * Apply the template updates to this component instance\n *\n * This method throws error if the template engine does not support template update.\n */\n applyTemplateUpdates() {\n var _a;\n if (!((_a = this._$tmplInst) === null || _a === void 0 ? void 0 : _a.updateTemplate)) {\n throw new Error(`The template engine of component \"${this.is}\" does not support template update`);\n }\n const dataGroup = this._$dataGroup;\n this._$tmplInst.updateTemplate(this._$definition._$detail.template, dataGroup.innerData || dataGroup.data);\n }\n /**\n * Returns the owner component space of this component\n */\n getOwnerSpace() {\n return this._$behavior.ownerSpace;\n }\n /** Get whether the component is external or not */\n isExternal() {\n return this._$external;\n }\n static listProperties(comp) {\n return Object.keys(comp._$behavior._$propertyMap);\n }\n static hasProperty(comp, propName) {\n return !!comp._$behavior._$propertyMap[propName];\n }\n /** List methods by the component definition (backward compatibility) */\n static getMethodsFromDef(compDef) {\n return compDef.behavior._$methodMap;\n }\n /**\n * Get a method\n *\n * If `useMethodCallerListeners` option is set for this component,\n * this method will use the corresponding fields in the `methodCaller` .\n */\n static getMethod(comp, methodName) {\n if (comp._$definition._$options.useMethodCallerListeners) {\n const method = comp._$methodCaller[methodName];\n return typeof method === 'function' ? method : undefined;\n }\n return comp._$methodMap[methodName];\n }\n /**\n * Call a method\n *\n * If `useMethodCallerListeners` option is set for this component,\n * this method will use the corresponding fields in the `methodCaller` .\n * Returns `undefined` if there is no such method.\n */\n callMethod(methodName, ...args) {\n const func = Component.getMethod(this, methodName);\n return func === null || func === void 0 ? void 0 : func.call(this, ...args);\n }\n /**\n * Get the corresponding component definition\n */\n getComponentDefinition() {\n return this._$definition;\n }\n /**\n * Get the options of the component\n */\n getComponentOptions() {\n return this._$definition._$options;\n }\n /**\n * Check whether the `other` behavior is a dependent behavior or a implemented trait behavior\n */\n hasBehavior(other) {\n if (other instanceof TraitBehavior) {\n return this._$traitGroup.get(other) !== undefined;\n }\n return this._$behavior.hasBehavior(other);\n }\n /** Get the root behavior of the component */\n getRootBehavior() {\n return this._$behavior;\n }\n /**\n * Get the trait behavior implementation of the component\n *\n * Returns `undefined` if the specified trait behavior is not implemented.\n */\n traitBehavior(traitBehavior) {\n return this._$traitGroup.get(traitBehavior);\n }\n /**\n * Set the caller (a.k.a. `this` ) of event callbacks and life-time callbacks\n *\n * By default, the caller is the component instance itself.\n * Use this method to override this behavior.\n */\n setMethodCaller(caller) {\n this._$methodCaller = caller;\n }\n /**\n * Get the current caller set by `setMethodCaller`\n */\n getMethodCaller() {\n return this._$methodCaller;\n }\n /**\n * Triggers a life-time callback on an element\n *\n * Normally external life-times should only be triggered by template engine.\n * Most cases should take a common method instead.\n */\n triggerLifetime(name, args) {\n const f = this._$lifetimeFuncs[name];\n if (f)\n f.call(this._$methodCaller, args, this);\n }\n /**\n * @internal\n * @deprecated Rename to `triggerLifetime`\n */\n triggerLifeTime(name, args) {\n return this.triggerLifetime(name, args);\n }\n /**\n * Triggers a page-life-time callback on an element\n */\n triggerPageLifetime(name, args) {\n const rec = (node) => {\n if (isComponent(node)) {\n if (node._$pageLifetimeFuncs) {\n const f = node._$pageLifetimeFuncs[name];\n if (f)\n f.call(node._$methodCaller, args, this);\n }\n if (!node._$external)\n rec(node.shadowRoot);\n }\n const children = node.childNodes;\n for (let i = 0; i < children.length; i += 1) {\n const child = children[i];\n if (isElement(child)) {\n rec(child);\n }\n }\n };\n rec(this);\n }\n /**\n * @internal\n * @deprecated Rename to `triggerPageLifetime`\n */\n triggerPageLifeTime(name, args) {\n return this.triggerPageLifetime(name, args);\n }\n /**\n * Get the target elements of a relation\n */\n getRelationNodes(relationKey) {\n var _a;\n return ((_a = this._$relation) === null || _a === void 0 ? void 0 : _a.getLinkedTargets(relationKey)) || [];\n }\n /** Check the existence of an external class */\n hasExternalClass(name) {\n return this.classList._$hasAlias(name);\n }\n /** Update an external class value */\n setExternalClass(name, target) {\n this.scheduleExternalClassChange(name, target);\n this.applyExternalClassChanges();\n }\n /** Get all external classes */\n getExternalClasses() {\n return this.classList._$getAlias();\n }\n /** Schedule an update for an external class value */\n scheduleExternalClassChange(name, target) {\n this.classList._$setAlias(name, target);\n }\n /** Update multiple external class values */\n applyExternalClassChanges() {\n if (this._$external)\n return;\n if (!this.classList._$shouldUpdateExternalClass())\n return;\n const recv = (node) => {\n if (!isElement(node))\n return;\n const classList = node.classList;\n if ((classList === null || classList === void 0 ? void 0 : classList._$spreadExternalClassUpdate()) && isComponent(node)) {\n node.applyExternalClassChanges();\n }\n const childNodes = node.childNodes;\n for (let i = 0, l = childNodes.length; i < l; i += 1) {\n recv(childNodes[i]);\n }\n classList === null || classList === void 0 ? void 0 : classList._$markExternalClassUpdated();\n };\n recv(this.shadowRoot);\n }\n /** Triggers a worklet change lifetime */\n triggerWorkletChangeLifetime(name, value) {\n this.triggerLifetime('workletChange', [name, value]);\n }\n /** Check a field is excluded by pureDataPattern or not */\n isInnerDataExcluded(fieldName) {\n var _a;\n return ((_a = this._$definition._$options.pureDataPattern) === null || _a === void 0 ? void 0 : _a.test(fieldName)) || false;\n }\n static getInnerData(comp) {\n return comp._$dataGroup.innerData;\n }\n static getDataProxy(comp) {\n return comp._$dataGroup;\n }\n static replaceWholeData(comp, newData) {\n comp._$dataGroup.replaceWholeData(newData);\n }\n replaceDataOnPath(path, data) {\n const dataProxy = this._$dataGroup;\n if (dataProxy === undefined) {\n throw new ThirdError('Cannot update data before component created', `replaceDataOnPath`, this);\n }\n if (ENV.DEV)\n performanceMeasureStart('component.replaceDataOnPath', this);\n dataProxy.replaceDataOnPath(path, data);\n if (ENV.DEV)\n performanceMeasureEnd();\n }\n spliceArrayDataOnPath(path, index, del, inserts) {\n const dataProxy = this._$dataGroup;\n if (dataProxy === undefined) {\n throw new ThirdError('Cannot update data before component created', `spliceArrayDataOnPath`, this);\n }\n if (ENV.DEV)\n performanceMeasureStart('component.spliceArrayDataOnPath', this);\n dataProxy.spliceArrayDataOnPath(path, index, del, inserts);\n if (ENV.DEV)\n performanceMeasureEnd();\n }\n /**\n * Check whether there are pending changes or not\n */\n hasPendingChanges() {\n const dataProxy = this._$dataGroup;\n if (dataProxy === undefined)\n return false;\n return dataProxy.getChanges().length > 0;\n }\n /**\n * Apply all scheduled updates immediately\n *\n * Inside observers, it is generally not .\n */\n applyDataUpdates() {\n const dataProxy = this._$dataGroup;\n if (dataProxy === undefined) {\n throw new ThirdError('Cannot update data before component created', `applyDataUpdates`, this);\n }\n if (ENV.DEV)\n performanceMeasureStart('component.applyDataUpdates', this);\n dataProxy.applyDataUpdates();\n if (ENV.DEV)\n performanceMeasureEnd();\n }\n /**\n * Pending all data updates in the callback, and apply updates after callback returns\n *\n * This function helps grouping several `replaceDataOnPath` or `spliceArrayDataOnPath` calls,\n * and then apply them at the end of the callback.\n * `setData` and `applyDataUpdates` calls inside the callback still apply updates immediately.\n */\n groupUpdates(callback) {\n const dataProxy = this._$dataGroup;\n if (dataProxy === undefined) {\n throw new ThirdError('Cannot update data before component created', `groupUpdates`, this);\n }\n if (ENV.DEV)\n performanceMeasureStart('component.groupUpdates', this);\n const ret = callback();\n dataProxy.applyDataUpdates();\n if (ENV.DEV)\n performanceMeasureEnd();\n return ret;\n }\n updateData(newData) {\n const dataProxy = this._$dataGroup;\n if (dataProxy === undefined) {\n throw new ThirdError('Cannot update data before component created', `updateData`, this);\n }\n if (ENV.DEV)\n performanceMeasureStart('component.updateData', this);\n if (typeof newData === 'object' && newData !== null) {\n const keys = Object.keys(newData);\n for (let i = 0; i < keys.length; i += 1) {\n const key = keys[i];\n try {\n const p = parseSinglePath(key);\n dataProxy.replaceDataOnPath(p, newData[key]);\n }\n catch (e) {\n // parse single path may throw errors\n dispatchError(e, `updateData`, this);\n }\n }\n }\n if (ENV.DEV)\n performanceMeasureEnd();\n }\n setData(newData) {\n const dataProxy = this._$dataGroup;\n if (dataProxy === undefined) {\n throw new ThirdError('Cannot update data before component created', `setData`, this);\n }\n if (ENV.DEV)\n performanceMeasureStart('component.setData', this);\n if (typeof newData === 'object' && newData !== null) {\n const keys = Object.keys(newData);\n for (let i = 0; i < keys.length; i += 1) {\n const key = keys[i];\n try {\n const p = parseSinglePath(key);\n dataProxy.replaceDataOnPath(p, newData[key]);\n }\n catch (e) {\n // parse single path may throw errors\n dispatchError(e, `setData`, this);\n }\n }\n }\n dataProxy.applyDataUpdates();\n if (ENV.DEV)\n performanceMeasureEnd();\n }\n}\nComponent.isComponent = isComponent;\nComponent.prototype[COMPONENT_SYMBOL] = true;\n//# sourceMappingURL=component.js.map","/* eslint-disable @typescript-eslint/no-unsafe-return */\nimport { ComponentDefinition, } from './component';\nimport { getDefaultComponentSpace, } from './component_space';\nimport { parseMultiPaths } from './data_path';\nimport { DataGroupObserverTree, normalizePropertyType, normalizePropertyTypeShortHand, shallowMerge, } from './data_proxy';\nimport { simpleDeepCopy } from './data_utils';\nimport { FuncArr, safeCallback } from './func_arr';\nimport { normalizeRelation } from './relation';\nimport { dispatchError, triggerWarning } from './warning';\nexport class BehaviorBuilder {\n /** @internal */\n constructor(is, ownerSpace) {\n /** @internal */\n this._$behaviors = [];\n /** @internal */\n this._$traitBehaviors = [];\n /** @internal */\n this._$staticData = undefined;\n /** @internal */\n this._$data = [];\n /** @internal */\n this._$methods = [];\n /** @internal */\n this._$lifetimes = [];\n /** @internal */\n this._$pageLifetimes = [];\n /** @internal */\n this._$init = [];\n this._$is = is;\n this._$ownerSpace = ownerSpace;\n }\n /**\n * Set a front-most init function\n *\n * It should return the method caller (the `this` value for various callbacks)\n * that will be used in future.\n */\n methodCallerInit(func) {\n this._$methodCallerInit = func;\n return this;\n }\n /**\n * Add a behavior\n *\n * If the behavior contains a chaining filter, the chaining filter is called.\n */\n behavior(behavior) {\n this._$behaviors.push(behavior);\n if (behavior._$chainingFilter) {\n return behavior._$chainingFilter(this);\n }\n return this;\n }\n /**\n * Set the chaining filter\n *\n * The chaining filter is the definition filter for chaining API.\n * It SHOULD return another chainable object for further chaining.\n */\n chainingFilter(func) {\n this._$chainingFilter = func;\n return this;\n }\n /**\n * Set component options\n *\n * The options will be merged with previous settings.\n */\n options(options) {\n const oldOptions = this._$options;\n if (oldOptions) {\n this._$options = Object.assign(Object.assign({}, oldOptions), options);\n }\n else {\n this._$options = options;\n }\n return this;\n }\n /**\n * Implement a trait behavior\n */\n implement(traitBehavior, impl) {\n this._$traitBehaviors.push({ traitBehavior, impl });\n return this;\n }\n /**\n * Set the compiled template object\n */\n template(template) {\n this._$template = template;\n return this;\n }\n /**\n * Add other components to the component using list\n */\n usingComponents(list) {\n if (this._$using)\n this._$using = Object.assign(Object.assign({}, this._$using), list);\n else\n this._$using = list;\n return this;\n }\n /**\n * Add some placeholders\n *\n * The alias SHOULD be in the using list, otherwise it will be ignored.\n */\n placeholders(list) {\n if (this._$placeholders)\n this._$placeholders = Object.assign(Object.assign({}, this._$placeholders), list);\n else\n this._$placeholders = list;\n return this;\n }\n /**\n * Add other generics\n *\n * The alias SHOULD NOT be in the using list, otherwise it will be ignored.\n */\n generics(list) {\n if (this._$generics)\n this._$generics = Object.assign(Object.assign({}, this._$generics), list);\n else\n this._$generics = list;\n return this;\n }\n /**\n * Add external classes\n */\n externalClasses(list) {\n if (this._$externalClasses)\n this._$externalClasses = this._$externalClasses.concat(list);\n else\n this._$externalClasses = list;\n return this;\n }\n /**\n * Add some template data fields\n *\n * It does not support raw data, but a `gen` function which returns the new data fields.\n * The `gen` function executes once during component creation.\n */\n data(gen) {\n this._$data.push(() => { var _a; return (_a = safeCallback('Data Generator', gen, null, [], this._$is)) !== null && _a !== void 0 ? _a : {}; });\n return this;\n }\n /**\n * Set the static template data fields\n *\n * The data will be cloned once during component creation.\n * If called multiple times, the static data will be overwritten but not merged!\n * Usually, the `data()` method is preferred.\n */\n staticData(data) {\n this._$staticData = data;\n return this;\n }\n /**\n * Add a single property\n *\n * The property name should be different from other properties.\n */\n property(name, def) {\n if (!this._$properties)\n this._$properties = [];\n this._$properties.push({ name, def: def });\n return this;\n }\n /**\n * Add a single public method\n *\n * The public method can be used as an event handler, and can be visited in component instance.\n */\n methods(funcs) {\n const keys = Object.keys(funcs);\n for (let i = 0; i < keys.length; i += 1) {\n const name = keys[i];\n const func = funcs[name];\n this._$methods.push({ name, func });\n }\n return this;\n }\n observer(paths, func, once = false) {\n if (!this._$observers)\n this._$observers = [];\n try {\n this._$observers.push({ dataPaths: parseMultiPaths(paths), func, once });\n }\n catch (e) {\n // parse multi paths my throw errors\n dispatchError(e, `observer`, this._$is);\n }\n return this;\n }\n /**\n * Add a lifetime callback\n */\n lifetime(name, func, once = false) {\n this._$lifetimes.push({ name, func, once });\n return this;\n }\n /**\n * Add a page-lifetime callback\n */\n pageLifetime(name, func, once = false) {\n if (!this._$pageLifetimes)\n this._$pageLifetimes = [];\n this._$pageLifetimes.push({ name, func, once });\n return this;\n }\n /**\n * Add a relation\n */\n relation(name, rel) {\n if (!this._$relations)\n this._$relations = [];\n this._$relations.push({ name, rel });\n return this;\n }\n /**\n * Execute a function while component instance creation\n *\n * A `BuilderContext` is provided to tweak the component creation progress.\n * The return value is used as the \"export\" value of the behavior,\n * which can be imported by other behaviors.\n */\n init(func) {\n this._$init.push(func);\n return this;\n }\n /**\n * Apply a classic-style definition\n */\n definition(def) {\n if (def.behaviors)\n this._$behaviors.push(...def.behaviors);\n if (def.options)\n this.options(def.options);\n if (def.template)\n this.template(def.template);\n if (def.using)\n this.usingComponents(def.using);\n if (def.placeholders)\n this.placeholders(def.placeholders);\n if (def.generics)\n this.generics(def.generics);\n if (def.externalClasses)\n this.externalClasses(def.externalClasses);\n const rawData = def.data;\n if (rawData !== undefined) {\n if (typeof rawData === 'function') {\n this._$data.push(() => { var _a; return (_a = safeCallback('Data Generator', rawData, null, [], this._$is)) !== null && _a !== void 0 ? _a : {}; });\n }\n else {\n this._$staticData = rawData;\n }\n }\n const rawProperties = def.properties;\n if (rawProperties !== undefined) {\n if (!this._$properties)\n this._$properties = [];\n const keys = Object.keys(rawProperties);\n for (let i = 0; i < keys.length; i += 1) {\n const name = keys[i];\n const def = rawProperties[name];\n this._$properties.push({ name, def });\n }\n }\n const rawMethods = def.methods;\n if (rawMethods !== undefined) {\n const keys = Object.keys(rawMethods);\n for (let i = 0; i < keys.length; i += 1) {\n const name = keys[i];\n const func = rawMethods[name];\n this._$methods.push({ name, func });\n }\n }\n const rawObservers = def.observers;\n if (rawObservers !== undefined) {\n if (!this._$observers)\n this._$observers = [];\n if (Array.isArray(rawObservers)) {\n for (let i = 0; i < rawObservers.length; i += 1) {\n const { fields, observer } = rawObservers[i];\n try {\n this._$observers.push({\n dataPaths: parseMultiPaths(fields !== null && fields !== void 0 ? fields : '**'),\n func: observer,\n once: false,\n });\n }\n catch (e) {\n // parse multi paths may throw errors\n dispatchError(e, `definition`, this._$is);\n }\n }\n }\n else {\n const keys = Object.keys(rawObservers);\n for (let i = 0; i < keys.length; i += 1) {\n const fields = keys[i];\n const observer = rawObservers[fields];\n try {\n this._$observers.push({\n dataPaths: parseMultiPaths(fields),\n func: observer,\n once: false,\n });\n }\n catch (e) {\n // parse multi paths may throw errors\n dispatchError(e, `definition`, this._$is);\n }\n }\n }\n }\n const rawLifetimes = def.lifetimes;\n if ((rawLifetimes === null || rawLifetimes === void 0 ? void 0 : rawLifetimes.created) === undefined && typeof def.created === 'function') {\n this._$lifetimes.push({ name: 'created', func: def.created, once: true });\n }\n if ((rawLifetimes === null || rawLifetimes === void 0 ? void 0 : rawLifetimes.attached) === undefined && typeof def.attached === 'function') {\n this._$lifetimes.push({ name: 'attached', func: def.attached, once: true });\n }\n if ((rawLifetimes === null || rawLifetimes === void 0 ? void 0 : rawLifetimes.moved) === undefined && typeof def.moved === 'function') {\n this._$lifetimes.push({ name: 'moved', func: def.moved, once: true });\n }\n if ((rawLifetimes === null || rawLifetimes === void 0 ? void 0 : rawLifetimes.detached) === undefined && typeof def.detached === 'function') {\n this._$lifetimes.push({ name: 'detached', func: def.detached, once: true });\n }\n if ((rawLifetimes === null || rawLifetimes === void 0 ? void 0 : rawLifetimes.ready) === undefined && typeof def.ready === 'function') {\n this._$lifetimes.push({ name: 'ready', func: def.ready, once: true });\n }\n if (rawLifetimes) {\n const keys = Object.keys(rawLifetimes);\n for (let i = 0; i < keys.length; i += 1) {\n const name = keys[i];\n const func = rawLifetimes[name];\n this._$lifetimes.push({ name, func, once: true });\n }\n }\n const rawPageLifetimes = def.pageLifetimes;\n if (rawPageLifetimes) {\n if (!this._$pageLifetimes)\n this._$pageLifetimes = [];\n const keys = Object.keys(rawPageLifetimes);\n for (let i = 0; i < keys.length; i += 1) {\n const name = keys[i];\n const func = rawPageLifetimes[name];\n this._$pageLifetimes.push({ name, func, once: true });\n }\n }\n this._$listeners = def.listeners;\n const rawRelations = def.relations;\n if (rawRelations) {\n if (!this._$relations)\n this._$relations = [];\n const keys = Object.keys(rawRelations);\n for (let i = 0; i < keys.length; i += 1) {\n const name = keys[i];\n const rel = rawRelations[name];\n this._$relations.push({ name, rel });\n }\n }\n return this;\n }\n /**\n * Finish build, generate a behavior, and register it in the component space\n */\n registerBehavior() {\n const is = this._$is;\n const behavior = new Behavior(this);\n if (is !== undefined) {\n this._$ownerSpace._$registerBehavior(is, behavior);\n }\n return behavior;\n }\n /**\n * Finish build, generate a component definition, and register it in the component space\n */\n registerComponent() {\n const is = this._$is;\n const behavior = new Behavior(this);\n const compDef = new ComponentDefinition(behavior);\n if (is !== undefined) {\n this._$ownerSpace._$registerComponent(is, compDef);\n }\n return compDef;\n }\n}\n/**\n * Common mixin-like behavior\n *\n * Each component definition contains a single *root* behavior.\n * A behavior can mixin other behaviors.\n */\nexport class Behavior {\n /**\n * Create a behavior with classic-style definition\n */\n static create(def, ownerSpace) {\n return new BehaviorBuilder(def.is, ownerSpace || getDefaultComponentSpace())\n .definition(def)\n .registerBehavior();\n }\n /** @internal */\n constructor(builder) {\n this._$unprepared = true;\n this.is = builder._$is || '';\n this.ownerSpace = builder._$ownerSpace;\n this._$builder = builder;\n this._$flatAncestors = new Set();\n this._$chainingFilter = builder._$chainingFilter;\n this._$options = builder._$options;\n this._$traitBehaviors = undefined;\n this._$template = builder._$template;\n this._$using = Object.create(null);\n this._$generics = undefined;\n this._$genericDefaults = undefined;\n this._$externalClasses = builder._$externalClasses;\n this._$staticData = undefined;\n this._$data = [];\n this._$propertyMap = Object.create(null);\n this._$methodMap = Object.create(null);\n this._$observers = [];\n this._$lifetimes = [];\n this._$pageLifetimes = undefined;\n this._$listeners = undefined;\n this._$relationMap = undefined;\n this._$init = [];\n this._$methodCallerInit = builder._$methodCallerInit;\n }\n general() {\n return this;\n }\n /**\n * List all component dependencies (recursively)\n *\n * This method will prepare the underlying behavior.\n */\n getComponentDependencies(genericTargets) {\n const ret = new Set();\n const rec = function (beh) {\n if (beh._$unprepared)\n beh.prepare();\n const keys = Object.keys(beh._$using);\n for (let i = 0; i < keys.length; i += 1) {\n const k = keys[i];\n const v = beh._$using[k];\n if (typeof v === 'string')\n continue;\n const dep = v.final;\n if (dep && !ret.has(dep)) {\n ret.add(dep);\n rec(dep.behavior);\n }\n }\n };\n rec(this.general());\n if (genericTargets) {\n const list = Object.values(genericTargets);\n for (let i = 0; i < list.length; i += 1) {\n const dep = list[i];\n if (typeof dep === 'string')\n continue;\n if (!ret.has(dep)) {\n ret.add(dep);\n rec(dep.behavior);\n }\n }\n }\n return ret;\n }\n /** Same as `prepare` method in the prototype (for backward compatibility) */\n static prepare(behavior) {\n behavior.prepare();\n }\n /**\n * Execute the prepare phase (an optimization phase) of this behavior\n *\n * Every behavior needs this phase for better future performance.\n * However, this phase requires a little time for execution,\n * and requires its all dependent behaviors created.\n * If a dependent behavior is not prepared, then its prepare phase is also executed.\n */\n prepare() {\n var _a;\n if (!this._$unprepared)\n return;\n this._$unprepared = false;\n const is = this.is;\n const space = this.ownerSpace;\n const builder = this._$builder;\n // mixin dependent behaviors\n const flatAncestors = this._$flatAncestors;\n if (Array.isArray(builder._$behaviors)) {\n for (let i = 0; i < builder._$behaviors.length; i += 1) {\n const parentName = builder._$behaviors[i];\n let parent = null;\n if (parentName instanceof Behavior) {\n parent = parentName;\n }\n else {\n const parentNameStr = String(parentName);\n if (space) {\n parent = space.getBehaviorByUrl(parentNameStr, is);\n }\n if (!parent) {\n dispatchError(new Error(`behavior \"${parentNameStr}\" is not found.`), `[prepare]`, is);\n }\n }\n if (!parent)\n continue;\n if (parent._$unprepared)\n Behavior.prepare(parent);\n // merge trait behaviors\n const traitBehaviors = parent._$traitBehaviors;\n if (traitBehaviors !== undefined) {\n if (!this._$traitBehaviors)\n this._$traitBehaviors = [];\n this._$traitBehaviors.push(...traitBehaviors);\n }\n // merge static data\n const staticData = parent._$staticData;\n if (staticData) {\n if (!this._$staticData)\n this._$staticData = {};\n shallowMerge(this._$staticData, staticData);\n }\n // merge methods\n Object.assign(this._$methodMap, parent._$methodMap);\n // merge properties\n Object.assign(this._$propertyMap, parent._$propertyMap);\n // merge dynamic data\n this._$data.push(...parent._$data);\n // merge observers\n const observers = parent._$observers;\n for (let i = 0; i < observers.length; i += 1) {\n const item = observers[i];\n if (item.once) {\n if (this._$observers.indexOf(item) >= 0)\n continue;\n }\n this._$observers.push(item);\n }\n // merge lifetimes\n const lifetimes = parent._$lifetimes;\n for (let i = 0; i < lifetimes.length; i += 1) {\n const item = lifetimes[i];\n if (item.once) {\n if (this._$lifetimes.indexOf(item) >= 0)\n continue;\n }\n this._$lifetimes.push(item);\n }\n // merge page lifetimes\n const pageLifetimes = parent._$pageLifetimes;\n if (pageLifetimes !== undefined) {\n if (this._$pageLifetimes) {\n for (let i = 0; i < pageLifetimes.length; i += 1) {\n const item = pageLifetimes[i];\n if (item.once) {\n if (this._$pageLifetimes.indexOf(item) >= 0)\n continue;\n }\n this._$pageLifetimes.push(item);\n }\n }\n else {\n this._$pageLifetimes = pageLifetimes.slice();\n }\n }\n // merge legacy listeners\n const listeners = parent._$listeners;\n if (listeners !== undefined) {\n if (!this._$listeners)\n this._$listeners = [];\n this._$listeners.push(...listeners);\n }\n // merge relations\n const relations = parent._$relationMap;\n if (relations !== undefined) {\n if (!this._$relationMap) {\n this._$relationMap = Object.create(null);\n }\n Object.assign(this._$relationMap, relations);\n }\n // merge init\n this._$init.push(...parent._$init);\n // construct flat ancestors\n parent._$flatAncestors.forEach((p) => {\n flatAncestors.add(p);\n });\n }\n }\n // init trait behaviors\n const traitBehaviors = builder._$traitBehaviors;\n if (traitBehaviors !== undefined) {\n if (!this._$traitBehaviors)\n this._$traitBehaviors = [];\n this._$traitBehaviors.push(...traitBehaviors);\n }\n // init using\n if (typeof builder._$using === 'object' && builder._$using !== null) {\n const hasPlaceholders = typeof builder._$placeholders === 'object' && builder._$placeholders !== null;\n const keys = Object.keys(builder._$using);\n for (let i = 0; i < keys.length; i += 1) {\n const k = keys[i];\n const v = builder._$using[k];\n let placeholder = null;\n if (hasPlaceholders) {\n placeholder = (_a = builder._$placeholders[k]) !== null && _a !== void 0 ? _a : null;\n }\n if (v instanceof ComponentDefinition) {\n this._$using[k] = {\n final: v,\n source: this,\n placeholder,\n waiting: null,\n };\n }\n else if (space) {\n const path = String(v);\n const final = space.getComponentByUrlWithoutDefault(path, is);\n if (final) {\n this._$using[k] = {\n final,\n source: this,\n placeholder: null,\n waiting: null,\n };\n }\n else if (placeholder !== null) {\n const p = {\n final: null,\n source: this,\n placeholder,\n waiting: null,\n };\n const wl = space._$componentWaitingList(path, is);\n if (wl) {\n wl.add((c) => {\n p.final = c;\n p.placeholder = null;\n p.waiting = null;\n });\n p.waiting = wl;\n }\n this._$using[k] = p;\n }\n else {\n const final = space.getGlobalUsingComponent(path);\n if (typeof final === 'string') {\n this._$using[k] = final;\n }\n else {\n this._$using[k] = {\n final,\n source: this,\n placeholder: null,\n waiting: null,\n };\n }\n }\n }\n else {\n dispatchError(new Error(`cannot find component \"${String(v)}\"`), `[prepare]`, is);\n }\n }\n }\n // init generics\n if (typeof builder._$generics === 'object' && builder._$generics !== null) {\n const generics = (this._$generics = []);\n const genericDefaults = Object.create(null);\n this._$genericDefaults = genericDefaults;\n const genericKeys = Object.keys(builder._$generics);\n for (let i = 0; i < genericKeys.length; i += 1) {\n const k = genericKeys[i];\n const genericDef = builder._$generics[k];\n let defaultComp = null;\n const d = genericDef === true ? undefined : genericDef === null || genericDef === void 0 ? void 0 : genericDef.default;\n if (d !== undefined) {\n if (d instanceof ComponentDefinition) {\n defaultComp = d;\n }\n else if (space) {\n const tagName = String(d);\n defaultComp =\n space.getComponentByUrlWithoutDefault(tagName, is) ||\n space.getGlobalUsingComponent(tagName);\n }\n else {\n dispatchError(new Error(`cannot define generic \"${k}\" without a default implementor.`), `[prepare]`, is);\n }\n }\n generics.push(k);\n genericDefaults[k] = defaultComp;\n }\n }\n // init static data\n const staticData = builder._$staticData;\n if (staticData) {\n if (!this._$staticData) {\n this._$staticData = staticData;\n }\n else {\n shallowMerge(this._$staticData, staticData);\n }\n }\n // init methods (methods should be initialized before others with function refs)\n const methods = builder._$methods;\n for (let i = 0; i < methods.length; i += 1) {\n const { name, func } = methods[i];\n this._$methodMap[name] = func;\n }\n // init properties\n const properties = builder._$properties;\n if (properties !== undefined) {\n const initValueFuncs = [];\n for (let i = 0; i < properties.length; i += 1) {\n const { name, def } = properties[i];\n const shortHandDef = normalizePropertyTypeShortHand(def);\n let d;\n if (shortHandDef !== null) {\n d = shortHandDef;\n }\n else {\n const propDef = def;\n let type = normalizePropertyType(propDef.type);\n let optionalTypes = null;\n if (Array.isArray(propDef.optionalTypes)) {\n optionalTypes = propDef.optionalTypes.map(normalizePropertyType);\n if (optionalTypes.length > 0) {\n if (type === \"invalid\" /* NormalizedPropertyType.Invalid */ || type === \"any\" /* NormalizedPropertyType.Any */) {\n type = optionalTypes[0];\n }\n }\n }\n if (type === \"invalid\" /* NormalizedPropertyType.Invalid */) {\n dispatchError(new Error(`the type of property \"${name}\" is illegal`), `[prepare]`, is);\n }\n let value = propDef.value;\n if (propDef.value === undefined) {\n if (type === \"string\" /* NormalizedPropertyType.String */)\n value = '';\n else if (type === \"number\" /* NormalizedPropertyType.Number */)\n value = 0;\n else if (type === \"boolean\" /* NormalizedPropertyType.Boolean */)\n value = false;\n else if (type === \"array\" /* NormalizedPropertyType.Array */)\n value = [];\n else\n value = null;\n }\n else if (propDef.default !== undefined) {\n triggerWarning(`the initial value of property \"${name}\" is not used when its default is provided.`, is);\n }\n let observer;\n if (typeof propDef.observer === 'function') {\n observer = propDef.observer;\n }\n else if (typeof propDef.observer === 'string') {\n observer = this._$methodMap[propDef.observer] || null;\n if (!observer) {\n dispatchError(new Error(`Cannot find method \"${propDef.observer}\" for observer of property \"${name}\".`), `[prepare]`, is);\n }\n }\n else {\n observer = null;\n if (propDef.observer !== undefined) {\n dispatchError(new Error(`The observer of property \"${name}\" is not a function, got \"${typeof propDef.observer}\".`), `[prepare]`, is);\n }\n }\n let comparer;\n if (typeof propDef.comparer === 'function') {\n comparer = propDef.comparer;\n }\n else {\n comparer = null;\n if (propDef.comparer !== undefined) {\n dispatchError(new Error(`the comparer of property \"${name}\" is not a function.`), `[prepare]`, is);\n }\n }\n const reflectIdPrefix = !!propDef.reflectIdPrefix;\n d = {\n type,\n optionalTypes,\n value,\n default: propDef.default,\n observer,\n comparer,\n reflectIdPrefix,\n };\n }\n this._$propertyMap[name] = d;\n initValueFuncs.push({\n name,\n func: d.default === undefined ? () => simpleDeepCopy(d.value) : d.default,\n });\n }\n this._$data.push(() => {\n const ret = {};\n for (let i = 0; i < initValueFuncs.length; i += 1) {\n const { name, func } = initValueFuncs[i];\n ret[name] = safeCallback(`Property \"${name}\" Default`, func, null, [], is);\n }\n return ret;\n });\n }\n // init dynamic data\n this._$data.push(...builder._$data);\n // observers\n const observers = builder._$observers;\n if (observers !== undefined) {\n for (let i = 0; i < observers.length; i += 1) {\n const { dataPaths, func, once } = observers[i];\n const observer = typeof func === 'function' ? func : this._$methodMap[func];\n if (typeof observer === 'function') {\n this._$observers.push({ dataPaths, observer, once });\n }\n else {\n dispatchError(new Error(`the \"${String(observer)}\" observer is not a function.`), `[prepare]`, is);\n }\n }\n }\n // lifetimes\n const lifetimes = builder._$lifetimes;\n this._$lifetimes.push(...lifetimes);\n // page lifetimes\n const pageLifetimes = builder._$pageLifetimes;\n if (pageLifetimes) {\n if (!this._$pageLifetimes)\n this._$pageLifetimes = [];\n this._$pageLifetimes.push(...pageLifetimes);\n }\n // listeners\n const listeners = builder._$listeners;\n if (listeners !== undefined) {\n const keys = Object.keys(listeners);\n if (keys.length > 0) {\n this._$listeners = [];\n for (let i = 0; i < keys.length; i += 1) {\n const k = keys[i];\n const v = listeners[k];\n const listener = typeof v === 'function' ? v : this._$methodMap[v];\n if (listener) {\n const dot = k.indexOf('.');\n let id;\n let ev;\n if (dot >= 0) {\n id = k.slice(0, dot);\n ev = k.slice(dot + 1);\n }\n else {\n id = '';\n ev = k;\n }\n this._$listeners.push({ id, ev, listener });\n }\n else {\n dispatchError(new Error(`the \"${k}\" listener is not a function or a method name`), `[prepare]`, is);\n }\n }\n }\n }\n // relations\n const relations = builder._$relations;\n if (relations !== undefined) {\n if (!this._$relationMap) {\n this._$relationMap = Object.create(null);\n }\n for (let i = 0; i < relations.length; i += 1) {\n const { name: key, rel: relation } = relations[i];\n if (relation === undefined || relation === null)\n continue;\n const rel = normalizeRelation(space, is, key, relation);\n if (rel)\n this._$relationMap[key] = rel;\n }\n }\n // init funcs\n this._$init.push(...builder._$init);\n flatAncestors.add(this);\n }\n /**\n * Get the template content\n *\n * This method is usually used by the template engine.\n */\n getTemplate() {\n return this._$template;\n }\n _$updateTemplate(template) {\n this._$template = template;\n }\n /** Check whether the `other` behavior is a dependent behavior of this behavior */\n hasBehavior(other) {\n if (this._$unprepared)\n this.prepare();\n if (other instanceof Behavior) {\n return this._$flatAncestors.has(other);\n }\n if (this.ownerSpace) {\n const b = this.ownerSpace.getBehaviorByUrl(other, this.is);\n if (!b) {\n return false;\n }\n return this._$flatAncestors.has(b);\n }\n return false;\n }\n /**\n * Get the methods\n *\n * Only valid after `prepare` .\n */\n getMethods() {\n return this._$methodMap;\n }\n /** @internal */\n _$generateObserverTree() {\n const ot = new DataGroupObserverTree(this._$propertyMap);\n const observers = this._$observers;\n for (let i = 0; i < observers.length; i += 1) {\n const { dataPaths, observer } = observers[i];\n ot.addObserver(observer, dataPaths);\n }\n return ot;\n }\n /** @internal */\n _$getAllLifetimeFuncs() {\n const ret = Object.create(null);\n const lifetimes = this._$lifetimes;\n for (let i = 0; i < lifetimes.length; i += 1) {\n const { name, func } = lifetimes[i];\n if (ret[name]) {\n ret[name].add(func);\n }\n else {\n const fa = (ret[name] = new FuncArr('lifetime'));\n fa.add(func);\n }\n }\n return ret;\n }\n /** @internal */\n _$getAllPageLifetimeFuncs() {\n const ret = Object.create(null);\n const pageLifetimes = this._$pageLifetimes;\n if (!pageLifetimes)\n return ret;\n for (let i = 0; i < pageLifetimes.length; i += 1) {\n const { name, func } = pageLifetimes[i];\n if (ret[name]) {\n ret[name].add(func);\n }\n else {\n const fa = (ret[name] = new FuncArr('pageLifetime'));\n fa.add(func);\n }\n }\n return ret;\n }\n}\n//# sourceMappingURL=behavior.js.map","import { Element } from './element';\nimport { isElement, isTextNode } from './type_symbol';\n/** The iterator direction and order */\nexport var ElementIteratorType;\n(function (ElementIteratorType) {\n /** Iterate all ancestors in shadow tree */\n ElementIteratorType[\"ShadowAncestors\"] = \"shadow-ancestors\";\n /** Iterate all ancestors in composed tree */\n ElementIteratorType[\"ComposedAncestors\"] = \"composed-ancestors\";\n /** Iterate all descendants in shadow tree, returning parents before their children */\n ElementIteratorType[\"ShadowDescendantsRootFirst\"] = \"shadow-descendants-root-first\";\n /** Iterate all descendants in shadow tree, returning parents after their children */\n ElementIteratorType[\"ShadowDescendantsRootLast\"] = \"shadow-descendants-root-last\";\n /** Iterate all descendants in composed tree, returning parents before their children */\n ElementIteratorType[\"ComposedDescendantsRootFirst\"] = \"composed-descendants-root-first\";\n /** Iterate all descendants in composed tree, returning parents after their children */\n ElementIteratorType[\"ComposedDescendantsRootLast\"] = \"composed-descendants-root-last\";\n})(ElementIteratorType || (ElementIteratorType = {}));\n/**\n * An iterator for node tree traversal\n *\n * This iterator is convenient but seems a little slower.\n */\nexport class ElementIterator {\n /**\n * Create an iterator with type specified\n *\n * The `nodeTypeLimit` is used to limit which kind of nodes will be returned.\n * It limits the returned result by an `instanceof` call.\n * The default value is `Element` ,\n * which means only elements will be returned (text nodes will not).\n * Consider specifying `Node` if text nodes need to be returned as well as elements.\n * Specify `Component` will only return components.\n */\n constructor(node, type, nodeTypeLimit = Element) {\n if (!isElement(node) && !isTextNode(node)) {\n throw new Error('Element iterators can only be used in elements or text nodes');\n }\n this._$node = node;\n this._$nodeTypeLimit = nodeTypeLimit || Element;\n if (type === \"shadow-ancestors\" /* ElementIteratorType.ShadowAncestors */ ||\n type === \"shadow-descendants-root-first\" /* ElementIteratorType.ShadowDescendantsRootFirst */ ||\n type === \"shadow-descendants-root-last\" /* ElementIteratorType.ShadowDescendantsRootLast */) {\n this._$composed = false;\n }\n else if (type === \"composed-ancestors\" /* ElementIteratorType.ComposedAncestors */ ||\n type === \"composed-descendants-root-first\" /* ElementIteratorType.ComposedDescendantsRootFirst */ ||\n type === \"composed-descendants-root-last\" /* ElementIteratorType.ComposedDescendantsRootLast */) {\n this._$composed = true;\n }\n else {\n throw new Error(`Unrecognized iterator type \"${String(type)}\"`);\n }\n if (type === \"shadow-ancestors\" /* ElementIteratorType.ShadowAncestors */ ||\n type === \"composed-ancestors\" /* ElementIteratorType.ComposedAncestors */) {\n this._$isAncestor = true;\n }\n else {\n this._$isAncestor = false;\n }\n if (type === \"shadow-descendants-root-first\" /* ElementIteratorType.ShadowDescendantsRootFirst */ ||\n type === \"composed-descendants-root-first\" /* ElementIteratorType.ComposedDescendantsRootFirst */) {\n this._$rootFirst = true;\n }\n else {\n this._$rootFirst = false;\n }\n }\n /** Same as constructor (for backward compatibility) */\n static create(node, type, nodeTypeLimit) {\n return new ElementIterator(node, type, nodeTypeLimit);\n }\n forEach(f) {\n const nodeTypeLimit = this._$nodeTypeLimit;\n const composed = this._$composed;\n if (this._$isAncestor) {\n let cur = this._$node;\n for (;;) {\n if (cur instanceof nodeTypeLimit) {\n if (f(cur) === false)\n return;\n }\n let next;\n if (composed) {\n next = cur.getComposedParent();\n }\n else {\n next = cur.parentNode;\n }\n if (next)\n cur = next;\n else\n break;\n }\n }\n else {\n const rootFirst = this._$rootFirst;\n const rec = (node) => {\n if (rootFirst) {\n if (node instanceof nodeTypeLimit) {\n if (f(node) === false)\n return false;\n }\n }\n if (isElement(node)) {\n let interrupted = false;\n const childFn = (child) => {\n if (rec(child) === false) {\n interrupted = true;\n return false;\n }\n return true;\n };\n if (composed) {\n node.forEachComposedChild(childFn);\n }\n else {\n node.childNodes.forEach(childFn);\n }\n if (interrupted)\n return false;\n }\n if (!rootFirst) {\n if (node instanceof nodeTypeLimit) {\n if (f(node) === false)\n return false;\n }\n }\n return true;\n };\n rec(this._$node);\n }\n }\n}\n//# sourceMappingURL=element_iterator.js.map","/* eslint-disable import/first */\n/* eslint-disable arrow-body-style */\nexport { BackendMode, backend, composedBackend, domlikeBackend, } from './backend';\nexport { CurrentWindowBackendContext } from './backend/current_window_backend_context';\nexport { EmptyBackendContext } from './backend/empty_backend';\nexport { EmptyComposedBackendContext } from './backend/empty_composed_backend';\nexport { Behavior, BehaviorBuilder, } from './behavior';\nexport { ClassList, StyleScopeManager } from './class_list';\nexport { Component, ComponentDefinition, } from './component';\nexport * as typeUtils from './component_params';\nexport { ComponentSpace, getDefaultComponentSpace } from './component_space';\nexport * as dataPath from './data_path';\nexport { DataGroup, NormalizedPropertyType, } from './data_proxy';\nexport * as dataUtils from './data_utils';\nexport { Element, StyleSegmentIndex } from './element';\nexport { ElementIterator, ElementIteratorType } from './element_iterator';\nexport { Event, EventBubbleStatus, MutLevel as EventMutLevel, } from './event';\nexport { FuncArr, safeCallback } from './func_arr';\nexport { DeepCopyKind, globalOptions, } from './global_options';\nexport { MutationObserver, MutationObserver as Observer } from './mutation_observer';\nexport { NativeNode } from './native_node';\nexport { dumpElement, dumpElementToString, dumpSingleElementToString } from './node';\nexport { RelationType } from './relation';\nexport { triggerRender } from './render';\nexport { ParsedSelector } from './selector';\nexport { ShadowRoot } from './shadow_root';\nexport * as templateEngine from './template_engine';\nexport { TextNode } from './text_node';\nexport * as template from './tmpl';\nexport { TraitBehavior } from './trait_behaviors';\nexport { VirtualNode } from './virtual_node';\nexport { addGlobalErrorListener, addGlobalWarningListener, removeGlobalErrorListener, removeGlobalWarningListener, } from './warning';\nimport { Component, } from './component';\nimport { getDefaultComponentSpace } from './component_space';\nimport { Event } from './event';\nexport const registerBehavior = (def) => {\n return getDefaultComponentSpace().defineBehavior(def);\n};\nexport const registerElement = (def) => {\n return getDefaultComponentSpace().defineComponent(def);\n};\nexport function createElement(tagName, compDef) {\n return Component.create(tagName, compDef || null);\n}\nexport const triggerEvent = Event.triggerEvent;\nexport const triggerExternalEvent = Event.triggerExternalEvent;\n//# sourceMappingURL=index.js.map","import { safeCallback } from './func_arr';\nconst triggerRenderOnContext = (context, cb) => {\n context.render(() => {\n if (typeof cb === 'function') {\n safeCallback('render', cb, context, [null]);\n }\n });\n};\nexport const triggerRender = (element, callback) => {\n const context = element.getBackendContext();\n if (context) {\n triggerRenderOnContext(context, callback || null);\n }\n};\n//# sourceMappingURL=render.js.map"],"names":["BackendMode","DeepCopyKind","DYNAMIC","SHADOW","COMPOSED","DOMLIKE","process","env","NODE_ENV","globalOptions","defaultComponentSpace","externalComponent","templateEngine","styleScope","extraStyleScope","hostNodeTagName","multipleSlots","dynamicSlots","directSlots","reflectToAttributes","writeFieldsToNode","writeIdToDOM","useMethodCallerListeners","idPrefixGenerator","pureDataPattern","dataDeepCopy","Simple","propertyPassingDeepCopy","listenerChangeLifetimes","virtualHost","propertyEarlyInit","throwGlobalError","writeExtraInfoToAttr","backendContext","devtool","normalizeComponentOptions","componentOptions","baseComponentOptions","b","undefined","p","FuncArr","constructor","type","this","empty","_$arr","_$type","add","func","concat","remove","ret","newArr","oldArr","i","length","push","slice","call","caller","args","relatedComponent","arr","safeCallback","FuncArrWithMeta","data","item","f","v","retainFn","handleReturn","rawReturn","dispatchError","method","apply","e","name","TEXT_NODE_SYMBOL","Symbol","ELEMENT_SYMBOL","NATIVE_NODE_SYMBOL","VIRTUAL_NODE_SYMBOL","SHADOW_ROOT_SYMBOL","COMPONENT_SYMBOL","isTextNode","isElement","isNativeNode","isVirtualNode","isShadowRoot","isComponent","dumpSingleElementToString","elem","tagName","is","_$slotName","id","slot","nodeClass","class","style","Object","keys","_$behavior","_$propertyMap","forEach","propName","String","attributes","attr","value","dumpAttributesToString","textContent","trim","dumpElementToString","composed","tabDepth","linePrefix","isExternal","_$external","forEachComposedChild","node","childNodes","insideErrorHandler","errorFuncArr","warningFuncArr","err","element","triggerLifetime","shouldBreak","console","error","Error","message","filter","Boolean","join","triggerWarning","msg","warn","ThirdError","additionalStack","super","DELEGATE_EVENTS","EmptyBackendElementType","EmptyBackendContext","mode","_$styleSheetIdInc","_$renderCallbacks","_$shadowRoot","EmptyBackendShadowRootContext","destroy","getWindowWidth","getWindowHeight","getDevicePixelRatio","getTheme","registerStyleSheetContent","_path","_content","appendStyleSheetPath","_styleScope","disableStyleSheet","_index","render","cb","callbacks","setTimeout","getRootNode","createFragment","EmptyBackendElement","onEvent","_createEvent","_listener","release","associateValue","_v","getShadowRoot","appendChild","_child","removeChild","insertBefore","_before","replaceChild","_oldChild","spliceBefore","_deleteCount","_list","spliceAppend","spliceRemove","setId","_id","setSlotName","_name","setContainingSlot","_slot","reassignContainingSlot","_oldSlot","_newSlot","spliceBeforeSlotNodes","spliceRemoveSlotNodes","spliceAppendSlotNodes","setInheritSlots","setStyle","_styleText","addClass","_className","removeClass","clearClasses","setClassAlias","_target","setAttribute","_value","removeAttribute","setDataset","setText","setListenerStats","_type","_capture","_mutLevel","setModelBindingStat","_attributeName","createElement","_tagName","_stylingName","createTextNode","createComponent","_external","_virtualHost","_extraStyleScope","_externalClasses","createVirtualNode","_virtualName","EmptyComposedBackendElement","setStyleScope","_hostStyleScope","_elementClass","getBoundingClientRect","left","top","width","height","getScrollOffset","scrollLeft","scrollTop","scrollWidth","scrollHeight","createIntersectionObserver","_relativeElement","_relativeElementMargin","_thresholds","disconnect","getContext","CLASS_NAME_REG_EXP","StyleScopeManager","_$names","globalScope","register","queryName","ClassList","externalNames","owner","styleScopeManager","_$externalNames","_$externalRawAlias","_$dirtyExternalNames","_$rawNames","_$backendNames","_$backendNameScopes","_$backendNamesCount","_$hasAliasNames","_$element","_$owner","_$defaultScope","_$extraScope","_$rootScope","_$prefixManager","_$resolvePrefixes","externalIndex","indexOf","rawAlias","n","_$hasAlias","includes","_$setAlias","target","slices","Array","isArray","l","split","s","_$getAlias","_$spreadExternalClassUpdate","dirtyExternalNames","externalRawAlias","shouldUpdate","some","names","_$updateResolvedNames","_$shouldUpdateExternalClass","getBackendMode","targets","_$backendElement","_$markExternalClassUpdated","backendElement","rawNames","oldBackendNames","oldBackendNameScopes","oldBackendNamesCount","newBackendNames","newBackendNameScopes","newBackendNamesCount","j","ll","rawName","found","scopeId","className","changed","_$addClassToBackend","_$removeClassFromBackend","scope","_a","prefix","val","classList","_$addClass","oldClassNames","oldScopeIds","classNamesCount","_$removeClass","splice","toggle","force","segmentIndex","test","rawClassIndex","contains","rn","setClassNames","getClassNames","METHOD_TAG","TraitBehavior","ownerSpace","trans","_$trans","_$implement","impl","TraitGroup","_$traits","WeakMap","implement","traitBehavior","traitImpl","set","get","normalizePath","path","basePath","finalSlices","pop","normalizeUrl","relPath","protoSep","domainSep","domain","absPath","ComponentWaitingList","isPub","alias","_$callbacks","_$ownerSpace","_$isPub","_$alias","callback","hintUsed","_b","_$componentWaitingListener","index","c","cbs","ComponentSpace","defaultComponent","baseSpace","allowUnusedNativeNode","_$behaviorList","create","_$pubBehaviorList","_$list","_$pubList","_$using","_$importedSpaces","_$listWaiting","_$pubListWaiting","_$groupingListWaiting","_$allowUnusedNativeNode","assign","_$defaultComponent","_$componentOptions","updateComponentOptions","getComponentOptions","setGlobalUsingComponent","key","importSpace","protoDomain","space","privateUse","getComponentByUrl","comp","getComponent","getComponentByUrlWithoutDefault","withDefault","list","def","getDefaultComponent","isDefaultComponent","getGlobalUsingComponent","getBehaviorByUrl","_$getBehavior","defineComponent","BehaviorBuilder","definition","registerComponent","defineBehavior","registerBehavior","define","defineWithMethodCaller","_$registerComponent","behavior","waiting","_$registerBehavior","beh","startGroupRegister","endGroupRegister","groupRegister","exportComponent","getExportedComponent","getExportedBehavior","exportBehavior","_$componentWaitingList","wl","setComponentWaitingListener","listener","createComponentByUrl","url","genericTargets","domainPath","paramStr","hashSepIndex","paramSepIndex","compDef","genericImpls","Component","createWithGenericsAndContext","needApplyUpdates","kv","kvSepIndex","decodeURIComponent","_$dataGroup","replaceProperty","applyDataUpdates","defineTraitBehavior","getDefaultComponentSpace","cs","skipWhiteSpace","state","str","cur","next","parseInteger","parseInt","parseFieldName","parseFieldNameWithSpecialChars","next2","parsePath","seg","parseSinglePath","parsePathWithSpecialChars","parseMultiPaths","map","parseState","parseCommaSepPaths","deepCopyWithRecursion","src","visited","dest","k","description","simpleDeepCopy","deepCopy","withRecursion","MutationObserverTarget","boundElement","_$subtreeObserversCount","attrObservers","textObservers","childObservers","attachObservers","_$boundElement","attachChild","child","_$mutationObserverTarget","updateSubtreeCount","detachChild","diff","hasSubtreeListeners","callAttrObservers","eventObj","parentNode","callTextObservers","textNode","callChildObservers","callAttachObservers","MutationObserver","_$subtreeListenersCount","_$boundFuncArrs","_$boundTarget","_$listener","_$normalizedListener","observe","targetElement","options","properties","childList","characterData","subtree","attachStatus","ev","nl","funcArr","hasOwnProperty","prototype","NormalizedPropertyType","shallowMerge","oldDest","newDest","subKeys","subKey","normalizePropertyType","t","Number","Function","convertValueToType","prop","component","defaultFn","default","optionalTypes","matchTypeWithValue","isFinite","DeepCopyStrategy","DataGroupObserverTree","propFields","observerTree","sub","observers","cloneSub","addObserver","dataPath","singlePath","wildcard","pathSlice","callObserver","getMethodCaller","dfsMarkTriggerBitOnPath","observerStatus","markTriggerBitOnPath","root","triggerAndCleanTriggerBit","getDeepCopyStrategy","level","SimpleWithRecursion","DataGroup","_$generateInnerData","_$pureDataPattern","_$dataDeepCopy","innerData","associatedComponent","_$modelBindingListener","_$pendingChanges","_$doingUpdates","_$comp","_$propertyPassingDeepCopy","_$reflectToAttributes","_$propFields","_$observerTree","_$observers","_$observerStatus","setUpdateListener","updateListener","_$updateListener","replaceWholeData","replaceDataOnPath","newData","spliceArrayDataOnPath","del","inserts","setChanges","changes","getChanges","setModelBindingListener","skipModelListener","isChainedUpdates","combinedChanges","propChanges","combined","count","change","maybeSpliceIndex","maybeSpliceDel","isSplice","excluded","oldData","normalizedSpliceIndex","filteredData","comparerResult","spliceIndex","innerNewData","be","getBackendElement","attrValue","reflectIdPrefix","ownerShadowRoot","idPrefix","getHostNode","_$idPrefix","attrName","replace","toLowerCase","JSON","stringify","comparer","general","oldValue","newValue","curData","curSlice","nextSlice","changesCount","observer","propertyName","EventBubbleStatus","relativeTimeStamp","Date","now","prevTimeStamp","MutLevel","FinalChanged","EventMutLevel","EventTarget","listeners","captureListeners","addListener","mutLevel","final","mutated","efa","initialized","capture","useCapture","mutCount","finalCount","removeListener","Event$1","Event","detail","ts","getCurrentTimeStamp","_$eventName","timeStamp","bubbles","_$capturePhase","capturePhase","_$eventBubblingControl","stopped","noDefault","_$originalEvent","originalEvent","_$dispatched","_$handleListenerReturn","handleListenerReturn","extraFields","getEventBubbleStatus","wrapShadowedEvent","targetCaller","mark","currentTargetCaller","currentTarget","getEventName","getOriginalEvent","preventDefault","defaultPrevented","stopPropagation","propagationStopped","markMutated","mutatedMarked","listenerReturnHandler","callListener","isCapture","evName","eventTarget","_$eventTarget","skipMut","mulLevel","dispatch","externalTarget","crossShadow","inExternalOnly","eventBubblingControl","forEachBubblePath","recShadow","collectMarks","containingSlot","_$inheritSlots","bubblingPath","shadowRoot","handleEvent","atTarget","sr","dispatchEvent","event","dispatchExternalEvent","triggerEvent","triggerExternalEvent","SegmentRelation","getOwnerSpace","getRootBehavior","ParsedSelector","_$parseSegment","relation","matches","exec","classes","shift","unions","union","segments","parsedSegs","parsedSeg","isEmpty","_$testSelectorSegment","offset","segment","match","nextNode","nextRelation","testSelector","query","findOne","rec","r","children","StyleSegmentIndex","DESTROYED_SHADOW_BACKEND_CONTEXT","destroyed","DESTROYED_COMPOSED_BACKEND_CONTEXT","DESTROYED_DOMLIKE_BACKEND_CONTEXT","Element","_$initialize","virtual","nodeTreeContext","_$destroyOnDetach","_$nodeTreeContext","_$nodeId","_$nodeAttributes","_$nodeSlot","_$slotElement","_$slotValues","_$subtreeSlotStart","_$subtreeSlotEnd","_$placeholderHandlerRemover","_$virtual","dataset","_$marks","_$attached","_$styleSegments","parentIndex","slotNodes","$$","x","newId","host","_$markIdCacheDirty","attributeName","newSlot","slotParentShadowRoot","_$getParentHostShadowRoot","slotMode","getSlotMode","slotUpdater","_$updateSubtreeSlotNodes","removeSlotNodes","oldSlot","updateContainingSlot","insertChildReassign","insertSlotNodes","entries","classNames","setNodeClass","styleText","setNodeStyle","asTextNode","asElement","asNativeNode","asVirtualNode","asInstanceOf","componentDefinition","getBackendContext","context","destroyBackendElement","destroyBackendElementOnDetach","cancelDestroyBackendElementOnDetach","isVirtual","toggleNodeClass","styleSegment","checkAndCallAttached","callFunc","_$relation","triggerLinkEvent","status","checkAndCallDetached","destroyQueue","checkAndCallMoved","checkChildObservers","childEventObj","addedNodes","removedNodes","hasSubtreeMutationObservers","_$insertChildReassignSlot","_$spliceSlotNodes","_$updateContainingSlot","forEachNodeInSpecifiedSlot","shadowParent","ideaPosIndex","backendParent","findNearestNonVirtual","d","countNonVirtual","before","removeCount","rel","nextSibling","insertChildComposed","firstNode","recNonVirtual","forEachNonVirtualComposedChild","forEachNodeInSlot","forEachNodeInSpecificSlot","forEachSlotContentInSlot","forEachSlotContentInSpecificSlot","_$findFirstNonVirtualChild","parent","inSlot","recvParent","slotIndex","_$findFirstNonVirtualSibling","newPosIndex","insertPos","_$findSlotNodeInsertPosition","newChild","relChild","removal","_c","parentConverted","slotParent","sharedNonVirtualParent","sharedFrag","groupUpdate","sharedBackendParent","frag","firstSlotNode","document","createDocumentFragment","slotNodesSet","Set","_$componentInstanceId","_$updateSubtreeSlotsInsertion","slotStart","slotEnd","posIndex","move","insertSlotPrev","insertSlotNext","findFirstSlot","nextSiblingWithSlot","prev","parentWithSubtreeSlot","isConnected","_$applySlotsInsertion","_$updateSubtreeSlotsRemoval","removeSlotBefore","removeSlotAfter","_$applySlotsRemoval","_$updateSubtreeSlotsReplacement","oldSlotStart","oldSlotEnd","elements","oldShadowRoot","oldSlotMode","removeStart","slotNodesToUpdate","oldContainingSlot","getContainingSlot","slotNodesToInsertMap","Map","slotNodesToRemoveMap","slotNodesWithContainingSlot","slotNodesToRemove","start","slotNodesToInsert","nodes","size","iter","it","done","firstSlotNodeToInsert","insertChildSingleOperation","oriPosIndex","_d","_e","oldParent","oldPosIndex","containingSlotUpdater","parentComponentShadowRoot","newChildContainingSlotUpdater","relChildContainingSlotUpdater","newChildSubtreeSlotStart","newChildSubtreeSlotEnd","relChildSubtreeSlotStart","relChildSubtreeSlotEnd","insertChildBatchRemoval","parentComponent","relChildren","subtreeSlotStart","subtreeSlotEnd","insertChildBatchInsertion","newChildList","pos","insertChildPlaceholderReplace","replacer","_f","placeholder","replacedChildren","placeholderContainingSlot","placeholderSlotIndex","insertChildAt","removeChildAt","replaceChildAt","insertChildren","removeChildren","selfReplaceWith","replaceWith","_$generateIdMap","idMap","dfs","nodeId","_$setListenerStats","finalChanged","_$definition","_$options","getAttribute","updateAttribute","attrs","setMark","marks","replaceDocumentElement","targetParent","targetNode","pretendAttached","pretendDetached","isAttached","slotName","oldSlotName","needInsertSlot","_$applySlotRename","getSlotName","sn","getInheritSlots","isInheritSlots","setSlotElement","recv","deleteCount","insertion","getNodeDepth","depth","targetDepth","comparePos","slotNode1","parentIndex1","slotDepth1","slotNode2","parentIndex2","slotDepth2","nextSlotNode1","leftDepth","right","rightDepth","rst","slotNode","getComposedParent","getComposedChildren","recInheritSlots","forEachSlotContentInSpecifiedSlot","parseSelector","querySelector","selectorStr","querySelectorAll","matchSelector","res","relativeElement","relativeElementMargin","thresholds","RelationType","parentSlotHost","normalizeRelation","checkRelationFunc","ComponentDefinition","Behavior","usingTarget","globalTarget","linked","linkChanged","unlinked","linkFailed","Relation","group","links","definitions","link","_$group","_$sharedGroup","_$links","keyMap","defs","relationType","linksGroup","parentType","isDetach","selfDefs","oldLink","newLink","parentBehavior","hasBehavior","parentRelation","rt","parentDefs","oldTarget","oldDef","newTarget","newDef","getLinkedTargets","typeWithIndex","NativeNode","stylingName","placeholderHandlerRemover","_$backendShadowRoot","ownerHost","ownerComponentOptions","_$modelBindingListeners","getModelBindingListeners","TextNode","text","_$text","newText","VirtualNode","_$initializeVirtual","virtualName","SlotMode","ShadowRoot","createShadowRoot","_$idMap","hostComponentOptions","_$slotMode","_$singleSlot","_$slots","_$slotsList","_$dynamicSlotsInserted","_$dynamicSlots","_$requiredSlotValueNames","_$insertDynamicSlotHandler","_$removeDynamicSlotHandler","_$updateDynamicSlotHandler","_$host","createNativeNode","createNativeNodeWithInit","initPropValues","usingKey","placeholderCallback","hostGenericImpls","_$genericImpls","compName","possibleComponentDefinitions","cwp","resolvePlaceholder","source","_$advancedCreate","convertGenerics","createComponentByDef","componentDef","createComponentOrNativeNode","checkComponentPlaceholder","using","g","getElementById","_$getIdMap","getSlotElementFromName","slots","subTreeRoot","slotElement","getSlotContentArray","forEachSlot","values","_$applyMultipleSlotInsertion","_move","slotsList","firstSlot","insertBeforeFirst","jt","_$applyMultipleSlotsRemoval","newFirstSlot","oldNameNewSlot","newName","oldName","insertDynamicSlot","removeDynamicSlot","updatePathTree","slotValues","delete","setDynamicSlotHandler","requiredSlotValueNames","insertSlotHandler","removeSlotHandler","updateSlotHandler","slotMeta","useDynamicSlotHandlerFrom","replaceSlotValue","applySlotValueUpdates","slotValueUpdatePathTree","applySlotUpdates","RangeListManager","keyName","dataList","newListItem","updateKeys","items","indexes","rawKeys","sharedKeyMap","rawKeyField","rawKey","inc","oriUpdatePathTree","updateListItem","oldRawKeys","oldKeyMap","oldSharedKeyMap","oldIndexes","newRawKeys","newSharedKeyMap","allowFastComparison","needUpdate","subTree","oldIndex","minIndexByLen","minIndexByLenIndexes","minIndexPrev","oldPosList","prevOldIndex","prevMinIndexByLenIndex","bottom","mid","Math","floor","lcsLen","prevLcsIndex","curLcsArrIndex","lcsArr","OpKind","oldListOp","changedItems","prevLcsOldPos","oldPos","realListDiff","opOldPos","opIndex","nextStable","nextStableOldPos","newItem","emptyFilter","getTmplArgs","_$wxTmplArgs","dataValueToString","dashToCamelCase","dash","toUpperCase","ProcGenWrapper","procGen","fallbackListenerOnNativeNode","eventObjectFilter","bindingMapDisabled","changePropFilter","eventListenerFilter","modelLvaluePath","generalLvaluePath","checkFallbackEventListener","camelName","startsWith","nodeDataProxy","getDataProxy","tmplArgs","changeProp","lv","hasExternalClass","setExternalClass","handleChildrenCreationAndInsert","C","B","update","dataUpdatePathTree","handleChildrenUpdate","bindingMapUpdate","field","bindingMapGenList","updaters","prevElement","bindingMapGen","hasPendingChanges","handleChildrenCreation","dynamicSlotName","textInit","createDynamicPlaceholder","propertyInit","dynamicSlotValueNames","createCommonElement","dynamicSlotNameMatched","branchKey","branchFunc","oriListUpdatePathTree","lvaluePath","itemCallback","keyList","childNode","isCreation","defineTextNode","defineElement","defineIfGroup","defineForLoop","defineSlot","definePureVirtualNode","slotValueInit","newElem","dynSlot","dynamicSlotUpdate","indexChanged","slotChildNodes","sort","slot1","slot2","Infinity","firstIndex","slotValueUpdatePathTrees","replacerShadowRoot","elemShadowRoot","isElemDynamicSlots","isReplacerDynamicSlots","y","hasProperty","m","isDynamic","_generalLvaluePath","handler","methodCaller","getMethod","filteredEv","evOptions","dynEvListeners","triggerWorkletChangeLifetime","setFnFilter","GeneralLvaluePathPrefix","noop","ProcGenWrapperDom","shadowRootElement","slotMergeable","slotMerged","appendSlot","setListener","template","methods","DEFAULT_PROC_GEN_DOM","DEFAULT_PROC_GEN_GROUP_DOM","GlassEaselTemplateDOM","_$template","content","genObjectGroupEnv","groupList","updateMode","_$methodMap","createInstance","GlassEaselTemplateDOMInstance","procGenWrapper","initValues","getIdMap","updateValues","_$wxTmplEv","shadowedEvent","DEFAULT_PROC_GEN","DEFAULT_PROC_GEN_GROUP","BindingMapUpdateEnabled","GlassEaselTemplateEngine","GlassEaselTemplate","updateTemplate","GlassEaselTemplateInstance","_$applyTemplate","forceBindingMapUpdate","tryBindingMapUpdate","newVal","spliceDel","startIndex","fill","defaultTemplateEngine","getDefaultTemplateEngine","tmpl","sourceBehavior","hostUsing","_$detail","prepare","childBeh","generics","_$generics","genericDefaults","_$genericDefaults","defaultComp","_$templateEngine","getComponentDependencies","_$updateTemplate","isPrepared","propSetters","enumerable","dataGroup","methodKeys","methodName","protoFunc","writable","proto","dataGroupObserverTree","_$generateObserverTree","_$lifetimeFuncs","_$getAllLifetimeFuncs","_$pageLifetimeFuncs","_$getAllPageLifetimeFuncs","relationDefinitionGroup","relations","generateRelationDefinitionGroup","_$relationMap","componentInstanceIdInc","defaultBackendContext","_$tagMethod","taggedMethod","_$isTaggedMethod","getDefaultBackendContext","external","propEarlyInit","_$methodCaller","_$externalClasses","tmplInst","componentInstanceId","staticData","_$staticData","dataGenFuncs","_$data","_$traitGroup","traitBehaviors","_$traitBehaviors","_$methodCallerInit","initDone","_$init","cowObserver","cowLifetime","cowPageLifetime","cowMethodMap","builderContext","self","setData","bind","relationDef","normalizedRel","listAsTrait","dataPaths","lifetime","fag","pageLifetime","initFuncs","exported","exportedKeys","exportedKey","exportItem","_$tmplInst","_$listeners","gf","collectGenericImpls","createWithGenerics","createWithContext","$","applyTemplateUpdates","listProperties","getMethodsFromDef","callMethod","getComponentDefinition","other","setMethodCaller","triggerLifeTime","triggerPageLifetime","triggerPageLifeTime","getRelationNodes","relationKey","scheduleExternalClassChange","applyExternalClassChanges","getExternalClasses","isInnerDataExcluded","fieldName","getInnerData","dataProxy","groupUpdates","updateData","_$behaviors","_$methods","_$lifetimes","_$pageLifetimes","_$is","methodCallerInit","_$chainingFilter","chainingFilter","oldOptions","usingComponents","placeholders","_$placeholders","externalClasses","gen","property","_$properties","funcs","paths","once","_$relations","init","behaviors","rawData","rawProperties","rawMethods","rawObservers","fields","rawLifetimes","lifetimes","created","attached","moved","detached","ready","rawPageLifetimes","pageLifetimes","rawRelations","builder","_$unprepared","_$builder","_$flatAncestors","dep","has","flatAncestors","parentName","parentNameStr","hasPlaceholders","genericKeys","genericDef","initValueFuncs","shortHandDef","propDef","dot","getTemplate","getMethods","ot","ElementIteratorType","ElementIterator","nodeTypeLimit","_$node","_$nodeTypeLimit","_$composed","_$isAncestor","_$rootFirst","rootFirst","interrupted","childFn","_$styleSheets","_$styleSheetRegistry","_$delegatedEventListeners","_$elementEventListeners","_$elementCaptureEventListeners","_$triggedEvents","WeakSet","documentElement","clientWidth","clientHeight","window","devicePixelRatio","innerHTML","head","ss","requestAnimationFrame","body","__wxElement","_$eventListener","_$initEvent","_$getEventDetail","getPrototypeOf","_$trigger","possibleTaps","disableMouseEvents","handleTapStart","_ev","identifier","clientX","clientY","handleTapMove","u","abs","handleTapEnd","handleTapCancel","handleTouchEnd","changedTouches","__touchCount","removeEventListener","handleTouchCancel","addEventListener","shouldDelegate","elementEventListeners","updateEventListener","valueFn","_$wxArgs","modelListeners","valid","checked","IntersectionObserver","info","entry","intersectionRatio","boundingClientRect","intersectionRect","relativeRect","rootBounds","time","rootMargin","threshold","createMediaQueryObserver","curMatches","listenerFunc","maxWidth","minWidth","maxHeight","minHeight","orientation","calcMatches","_$rootNode","_status","log","triggerRenderOnContext"],"mappings":"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"}