{
  "version": 3,
  "sources": ["../node_modules/.pnpm/preact@10.26.2/node_modules/preact/src/constants.js", "../node_modules/.pnpm/preact@10.26.2/node_modules/preact/src/util.js", "../node_modules/.pnpm/preact@10.26.2/node_modules/preact/src/options.js", "../node_modules/.pnpm/preact@10.26.2/node_modules/preact/src/create-element.js", "../node_modules/.pnpm/preact@10.26.2/node_modules/preact/src/component.js", "../node_modules/.pnpm/preact@10.26.2/node_modules/preact/src/diff/props.js", "../node_modules/.pnpm/preact@10.26.2/node_modules/preact/src/create-context.js", "../node_modules/.pnpm/preact@10.26.2/node_modules/preact/src/diff/children.js", "../node_modules/.pnpm/preact@10.26.2/node_modules/preact/src/diff/index.js", "../node_modules/.pnpm/preact@10.26.2/node_modules/preact/src/render.js", "../node_modules/.pnpm/preact@10.26.2/node_modules/preact/src/clone-element.js", "../node_modules/.pnpm/preact@10.26.2/node_modules/preact/src/diff/catch-error.js", "../app/client.css", "../manifest.json", "../app/constants.ts", "../app/i18n/de-DE.json", "../app/i18n/en-GB.json", "../app/i18n/utils.ts", "../app/shared/replace-skeleton-with-component.ts", "../app/shared/teaser-geometry.json", "../app/shared/teaser-carousel-layout.ts", "../app/utils/build-url.ts", "../.check24-home/types/.check24.ts", "../app/utils/validate-attributes.ts", "../node_modules/.pnpm/preact@10.26.2/node_modules/preact/jsx-runtime/src/utils.js", "../node_modules/.pnpm/preact@10.26.2/node_modules/preact/src/constants.js", "../node_modules/.pnpm/preact@10.26.2/node_modules/preact/jsx-runtime/src/index.js", "../app/client.tsx"],
  "sourcesContent": ["/** Normal hydration that attaches to a DOM tree but does not diff it. */\nexport const MODE_HYDRATE = 1 << 5;\n/** Signifies this VNode suspended on the previous render */\nexport const MODE_SUSPENDED = 1 << 7;\n/** Indicates that this node needs to be inserted while patching children */\nexport const INSERT_VNODE = 1 << 2;\n/** Indicates a VNode has been matched with another VNode in the diff */\nexport const MATCHED = 1 << 1;\n\n/** Reset all mode flags */\nexport const RESET_MODE = ~(MODE_HYDRATE | MODE_SUSPENDED);\n\nexport const SVG_NAMESPACE = 'http://www.w3.org/2000/svg';\nexport const XHTML_NAMESPACE = 'http://www.w3.org/1999/xhtml';\nexport const MATH_NAMESPACE = 'http://www.w3.org/1998/Math/MathML';\n\nexport const NULL = null;\nexport const UNDEFINED = undefined;\nexport const EMPTY_OBJ = /** @type {any} */ ({});\nexport const EMPTY_ARR = [];\nexport const IS_NON_DIMENSIONAL =\n\t/acit|ex(?:s|g|n|p|$)|rph|grid|ows|mnc|ntw|ine[ch]|zoo|^ord|itera/i;\n", "import { EMPTY_ARR } from './constants';\n\nexport const isArray = Array.isArray;\n\n/**\n * Assign properties from `props` to `obj`\n * @template O, P The obj and props types\n * @param {O} obj The object to copy properties to\n * @param {P} props The object to copy properties from\n * @returns {O & P}\n */\nexport function assign(obj, props) {\n\t// @ts-expect-error We change the type of `obj` to be `O & P`\n\tfor (let i in props) obj[i] = props[i];\n\treturn /** @type {O & P} */ (obj);\n}\n\n/**\n * Remove a child node from its parent if attached. This is a workaround for\n * IE11 which doesn't support `Element.prototype.remove()`. Using this function\n * is smaller than including a dedicated polyfill.\n * @param {import('./index').ContainerNode} node The node to remove\n */\nexport function removeNode(node) {\n\tif (node && node.parentNode) node.parentNode.removeChild(node);\n}\n\nexport const slice = EMPTY_ARR.slice;\n", "import { _catchError } from './diff/catch-error';\n\n/**\n * The `option` object can potentially contain callback functions\n * that are called during various stages of our renderer. This is the\n * foundation on which all our addons like `preact/debug`, `preact/compat`,\n * and `preact/hooks` are based on. See the `Options` type in `internal.d.ts`\n * for a full list of available option hooks (most editors/IDEs allow you to\n * ctrl+click or cmd+click on mac the type definition below).\n * @type {import('./internal').Options}\n */\nconst options = {\n\t_catchError\n};\n\nexport default options;\n", "import { slice } from './util';\nimport options from './options';\nimport { NULL, UNDEFINED } from './constants';\n\nlet vnodeId = 0;\n\n/**\n * Create an virtual node (used for JSX)\n * @param {import('./internal').VNode[\"type\"]} type The node name or Component constructor for this\n * virtual node\n * @param {object | null | undefined} [props] The properties of the virtual node\n * @param {Array<import('.').ComponentChildren>} [children] The children of the\n * virtual node\n * @returns {import('./internal').VNode}\n */\nexport function createElement(type, props, children) {\n\tlet normalizedProps = {},\n\t\tkey,\n\t\tref,\n\t\ti;\n\tfor (i in props) {\n\t\tif (i == 'key') key = props[i];\n\t\telse if (i == 'ref') ref = props[i];\n\t\telse normalizedProps[i] = props[i];\n\t}\n\n\tif (arguments.length > 2) {\n\t\tnormalizedProps.children =\n\t\t\targuments.length > 3 ? slice.call(arguments, 2) : children;\n\t}\n\n\t// If a Component VNode, check for and apply defaultProps\n\t// Note: type may be undefined in development, must never error here.\n\tif (typeof type == 'function' && type.defaultProps != NULL) {\n\t\tfor (i in type.defaultProps) {\n\t\t\tif (normalizedProps[i] === UNDEFINED) {\n\t\t\t\tnormalizedProps[i] = type.defaultProps[i];\n\t\t\t}\n\t\t}\n\t}\n\n\treturn createVNode(type, normalizedProps, key, ref, NULL);\n}\n\n/**\n * Create a VNode (used internally by Preact)\n * @param {import('./internal').VNode[\"type\"]} type The node name or Component\n * Constructor for this virtual node\n * @param {object | string | number | null} props The properties of this virtual node.\n * If this virtual node represents a text node, this is the text of the node (string or number).\n * @param {string | number | null} key The key for this virtual node, used when\n * diffing it against its children\n * @param {import('./internal').VNode[\"ref\"]} ref The ref property that will\n * receive a reference to its created child\n * @returns {import('./internal').VNode}\n */\nexport function createVNode(type, props, key, ref, original) {\n\t// V8 seems to be better at detecting type shapes if the object is allocated from the same call site\n\t// Do not inline into createElement and coerceToVNode!\n\t/** @type {import('./internal').VNode} */\n\tconst vnode = {\n\t\ttype,\n\t\tprops,\n\t\tkey,\n\t\tref,\n\t\t_children: NULL,\n\t\t_parent: NULL,\n\t\t_depth: 0,\n\t\t_dom: NULL,\n\t\t_component: NULL,\n\t\tconstructor: UNDEFINED,\n\t\t_original: original == NULL ? ++vnodeId : original,\n\t\t_index: -1,\n\t\t_flags: 0\n\t};\n\n\t// Only invoke the vnode hook if this was *not* a direct copy:\n\tif (original == NULL && options.vnode != NULL) options.vnode(vnode);\n\n\treturn vnode;\n}\n\nexport function createRef() {\n\treturn { current: NULL };\n}\n\nexport function Fragment(props) {\n\treturn props.children;\n}\n\n/**\n * Check if a the argument is a valid Preact VNode.\n * @param {*} vnode\n * @returns {vnode is VNode}\n */\nexport const isValidElement = vnode =>\n\tvnode != NULL && vnode.constructor == UNDEFINED;\n", "import { assign } from './util';\nimport { diff, commitRoot } from './diff/index';\nimport options from './options';\nimport { Fragment } from './create-element';\nimport { MODE_HYDRATE, NULL } from './constants';\n\n/**\n * Base Component class. Provides `setState()` and `forceUpdate()`, which\n * trigger rendering\n * @param {object} props The initial component props\n * @param {object} context The initial context from parent components'\n * getChildContext\n */\nexport function BaseComponent(props, context) {\n\tthis.props = props;\n\tthis.context = context;\n}\n\n/**\n * Update component state and schedule a re-render.\n * @this {import('./internal').Component}\n * @param {object | ((s: object, p: object) => object)} update A hash of state\n * properties to update with new values or a function that given the current\n * state and props returns a new partial state\n * @param {() => void} [callback] A function to be called once component state is\n * updated\n */\nBaseComponent.prototype.setState = function (update, callback) {\n\t// only clone state when copying to nextState the first time.\n\tlet s;\n\tif (this._nextState != NULL && this._nextState !== this.state) {\n\t\ts = this._nextState;\n\t} else {\n\t\ts = this._nextState = assign({}, this.state);\n\t}\n\n\tif (typeof update == 'function') {\n\t\t// Some libraries like `immer` mark the current state as readonly,\n\t\t// preventing us from mutating it, so we need to clone it. See #2716\n\t\tupdate = update(assign({}, s), this.props);\n\t}\n\n\tif (update) {\n\t\tassign(s, update);\n\t}\n\n\t// Skip update if updater function returned null\n\tif (update == NULL) return;\n\n\tif (this._vnode) {\n\t\tif (callback) {\n\t\t\tthis._stateCallbacks.push(callback);\n\t\t}\n\t\tenqueueRender(this);\n\t}\n};\n\n/**\n * Immediately perform a synchronous re-render of the component\n * @this {import('./internal').Component}\n * @param {() => void} [callback] A function to be called after component is\n * re-rendered\n */\nBaseComponent.prototype.forceUpdate = function (callback) {\n\tif (this._vnode) {\n\t\t// Set render mode so that we can differentiate where the render request\n\t\t// is coming from. We need this because forceUpdate should never call\n\t\t// shouldComponentUpdate\n\t\tthis._force = true;\n\t\tif (callback) this._renderCallbacks.push(callback);\n\t\tenqueueRender(this);\n\t}\n};\n\n/**\n * Accepts `props` and `state`, and returns a new Virtual DOM tree to build.\n * Virtual DOM is generally constructed via [JSX](https://jasonformat.com/wtf-is-jsx).\n * @param {object} props Props (eg: JSX attributes) received from parent\n * element/component\n * @param {object} state The component's current state\n * @param {object} context Context object, as returned by the nearest\n * ancestor's `getChildContext()`\n * @returns {ComponentChildren | void}\n */\nBaseComponent.prototype.render = Fragment;\n\n/**\n * @param {import('./internal').VNode} vnode\n * @param {number | null} [childIndex]\n */\nexport function getDomSibling(vnode, childIndex) {\n\tif (childIndex == NULL) {\n\t\t// Use childIndex==null as a signal to resume the search from the vnode's sibling\n\t\treturn vnode._parent\n\t\t\t? getDomSibling(vnode._parent, vnode._index + 1)\n\t\t\t: NULL;\n\t}\n\n\tlet sibling;\n\tfor (; childIndex < vnode._children.length; childIndex++) {\n\t\tsibling = vnode._children[childIndex];\n\n\t\tif (sibling != NULL && sibling._dom != NULL) {\n\t\t\t// Since updateParentDomPointers keeps _dom pointer correct,\n\t\t\t// we can rely on _dom to tell us if this subtree contains a\n\t\t\t// rendered DOM node, and what the first rendered DOM node is\n\t\t\treturn sibling._dom;\n\t\t}\n\t}\n\n\t// If we get here, we have not found a DOM node in this vnode's children.\n\t// We must resume from this vnode's sibling (in it's parent _children array)\n\t// Only climb up and search the parent if we aren't searching through a DOM\n\t// VNode (meaning we reached the DOM parent of the original vnode that began\n\t// the search)\n\treturn typeof vnode.type == 'function' ? getDomSibling(vnode) : NULL;\n}\n\n/**\n * Trigger in-place re-rendering of a component.\n * @param {import('./internal').Component} component The component to rerender\n */\nfunction renderComponent(component) {\n\tlet oldVNode = component._vnode,\n\t\toldDom = oldVNode._dom,\n\t\tcommitQueue = [],\n\t\trefQueue = [];\n\n\tif (component._parentDom) {\n\t\tconst newVNode = assign({}, oldVNode);\n\t\tnewVNode._original = oldVNode._original + 1;\n\t\tif (options.vnode) options.vnode(newVNode);\n\n\t\tdiff(\n\t\t\tcomponent._parentDom,\n\t\t\tnewVNode,\n\t\t\toldVNode,\n\t\t\tcomponent._globalContext,\n\t\t\tcomponent._parentDom.namespaceURI,\n\t\t\toldVNode._flags & MODE_HYDRATE ? [oldDom] : NULL,\n\t\t\tcommitQueue,\n\t\t\toldDom == NULL ? getDomSibling(oldVNode) : oldDom,\n\t\t\t!!(oldVNode._flags & MODE_HYDRATE),\n\t\t\trefQueue\n\t\t);\n\n\t\tnewVNode._original = oldVNode._original;\n\t\tnewVNode._parent._children[newVNode._index] = newVNode;\n\t\tcommitRoot(commitQueue, newVNode, refQueue);\n\n\t\tif (newVNode._dom != oldDom) {\n\t\t\tupdateParentDomPointers(newVNode);\n\t\t}\n\t}\n}\n\n/**\n * @param {import('./internal').VNode} vnode\n */\nfunction updateParentDomPointers(vnode) {\n\tif ((vnode = vnode._parent) != NULL && vnode._component != NULL) {\n\t\tvnode._dom = vnode._component.base = NULL;\n\t\tfor (let i = 0; i < vnode._children.length; i++) {\n\t\t\tlet child = vnode._children[i];\n\t\t\tif (child != NULL && child._dom != NULL) {\n\t\t\t\tvnode._dom = vnode._component.base = child._dom;\n\t\t\t\tbreak;\n\t\t\t}\n\t\t}\n\n\t\treturn updateParentDomPointers(vnode);\n\t}\n}\n\n/**\n * The render queue\n * @type {Array<import('./internal').Component>}\n */\nlet rerenderQueue = [];\n\n/*\n * The value of `Component.debounce` must asynchronously invoke the passed in callback. It is\n * important that contributors to Preact can consistently reason about what calls to `setState`, etc.\n * do, and when their effects will be applied. See the links below for some further reading on designing\n * asynchronous APIs.\n * * [Designing APIs for Asynchrony](https://blog.izs.me/2013/08/designing-apis-for-asynchrony)\n * * [Callbacks synchronous and asynchronous](https://blog.ometer.com/2011/07/24/callbacks-synchronous-and-asynchronous/)\n */\n\nlet prevDebounce;\n\nconst defer =\n\ttypeof Promise == 'function'\n\t\t? Promise.prototype.then.bind(Promise.resolve())\n\t\t: setTimeout;\n\n/**\n * Enqueue a rerender of a component\n * @param {import('./internal').Component} c The component to rerender\n */\nexport function enqueueRender(c) {\n\tif (\n\t\t(!c._dirty &&\n\t\t\t(c._dirty = true) &&\n\t\t\trerenderQueue.push(c) &&\n\t\t\t!process._rerenderCount++) ||\n\t\tprevDebounce !== options.debounceRendering\n\t) {\n\t\tprevDebounce = options.debounceRendering;\n\t\t(prevDebounce || defer)(process);\n\t}\n}\n\n/**\n * @param {import('./internal').Component} a\n * @param {import('./internal').Component} b\n */\nconst depthSort = (a, b) => a._vnode._depth - b._vnode._depth;\n\n/** Flush the render queue by rerendering all queued components */\nfunction process() {\n\tlet c,\n\t\tl = 1;\n\n\t// Don't update `renderCount` yet. Keep its value non-zero to prevent unnecessary\n\t// process() calls from getting scheduled while `queue` is still being consumed.\n\twhile (rerenderQueue.length) {\n\t\t// Keep the rerender queue sorted by (depth, insertion order). The queue\n\t\t// will initially be sorted on the first iteration only if it has more than 1 item.\n\t\t//\n\t\t// New items can be added to the queue e.g. when rerendering a provider, so we want to\n\t\t// keep the order from top to bottom with those new items so we can handle them in a\n\t\t// single pass\n\t\tif (rerenderQueue.length > l) {\n\t\t\trerenderQueue.sort(depthSort);\n\t\t}\n\n\t\tc = rerenderQueue.shift();\n\t\tl = rerenderQueue.length;\n\n\t\tif (c._dirty) {\n\t\t\trenderComponent(c);\n\t\t}\n\t}\n\tprocess._rerenderCount = 0;\n}\n\nprocess._rerenderCount = 0;\n", "import { IS_NON_DIMENSIONAL, NULL, SVG_NAMESPACE } from '../constants';\nimport options from '../options';\n\nfunction setStyle(style, key, value) {\n\tif (key[0] == '-') {\n\t\tstyle.setProperty(key, value == NULL ? '' : value);\n\t} else if (value == NULL) {\n\t\tstyle[key] = '';\n\t} else if (typeof value != 'number' || IS_NON_DIMENSIONAL.test(key)) {\n\t\tstyle[key] = value;\n\t} else {\n\t\tstyle[key] = value + 'px';\n\t}\n}\n\nconst CAPTURE_REGEX = /(PointerCapture)$|Capture$/i;\n\n// A logical clock to solve issues like https://github.com/preactjs/preact/issues/3927.\n// When the DOM performs an event it leaves micro-ticks in between bubbling up which means that\n// an event can trigger on a newly reated DOM-node while the event bubbles up.\n//\n// Originally inspired by Vue\n// (https://github.com/vuejs/core/blob/caeb8a68811a1b0f79/packages/runtime-dom/src/modules/events.ts#L90-L101),\n// but modified to use a logical clock instead of Date.now() in case event handlers get attached\n// and events get dispatched during the same millisecond.\n//\n// The clock is incremented after each new event dispatch. This allows 1 000 000 new events\n// per second for over 280 years before the value reaches Number.MAX_SAFE_INTEGER (2**53 - 1).\nlet eventClock = 0;\n\n/**\n * Set a property value on a DOM node\n * @param {import('../internal').PreactElement} dom The DOM node to modify\n * @param {string} name The name of the property to set\n * @param {*} value The value to set the property to\n * @param {*} oldValue The old value the property had\n * @param {string} namespace Whether or not this DOM node is an SVG node or not\n */\nexport function setProperty(dom, name, value, oldValue, namespace) {\n\tlet useCapture;\n\n\to: if (name == 'style') {\n\t\tif (typeof value == 'string') {\n\t\t\tdom.style.cssText = value;\n\t\t} else {\n\t\t\tif (typeof oldValue == 'string') {\n\t\t\t\tdom.style.cssText = oldValue = '';\n\t\t\t}\n\n\t\t\tif (oldValue) {\n\t\t\t\tfor (name in oldValue) {\n\t\t\t\t\tif (!(value && name in value)) {\n\t\t\t\t\t\tsetStyle(dom.style, name, '');\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tif (value) {\n\t\t\t\tfor (name in value) {\n\t\t\t\t\tif (!oldValue || value[name] !== oldValue[name]) {\n\t\t\t\t\t\tsetStyle(dom.style, name, value[name]);\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\t// Benchmark for comparison: https://esbench.com/bench/574c954bdb965b9a00965ac6\n\telse if (name[0] == 'o' && name[1] == 'n') {\n\t\tuseCapture = name != (name = name.replace(CAPTURE_REGEX, '$1'));\n\n\t\t// Infer correct casing for DOM built-in events:\n\t\tif (\n\t\t\tname.toLowerCase() in dom ||\n\t\t\tname == 'onFocusOut' ||\n\t\t\tname == 'onFocusIn'\n\t\t)\n\t\t\tname = name.toLowerCase().slice(2);\n\t\telse name = name.slice(2);\n\n\t\tif (!dom._listeners) dom._listeners = {};\n\t\tdom._listeners[name + useCapture] = value;\n\n\t\tif (value) {\n\t\t\tif (!oldValue) {\n\t\t\t\tvalue._attached = eventClock;\n\t\t\t\tdom.addEventListener(\n\t\t\t\t\tname,\n\t\t\t\t\tuseCapture ? eventProxyCapture : eventProxy,\n\t\t\t\t\tuseCapture\n\t\t\t\t);\n\t\t\t} else {\n\t\t\t\tvalue._attached = oldValue._attached;\n\t\t\t}\n\t\t} else {\n\t\t\tdom.removeEventListener(\n\t\t\t\tname,\n\t\t\t\tuseCapture ? eventProxyCapture : eventProxy,\n\t\t\t\tuseCapture\n\t\t\t);\n\t\t}\n\t} else {\n\t\tif (namespace == SVG_NAMESPACE) {\n\t\t\t// Normalize incorrect prop usage for SVG:\n\t\t\t// - xlink:href / xlinkHref --> href (xlink:href was removed from SVG and isn't needed)\n\t\t\t// - className --> class\n\t\t\tname = name.replace(/xlink(H|:h)/, 'h').replace(/sName$/, 's');\n\t\t} else if (\n\t\t\tname != 'width' &&\n\t\t\tname != 'height' &&\n\t\t\tname != 'href' &&\n\t\t\tname != 'list' &&\n\t\t\tname != 'form' &&\n\t\t\t// Default value in browsers is `-1` and an empty string is\n\t\t\t// cast to `0` instead\n\t\t\tname != 'tabIndex' &&\n\t\t\tname != 'download' &&\n\t\t\tname != 'rowSpan' &&\n\t\t\tname != 'colSpan' &&\n\t\t\tname != 'role' &&\n\t\t\tname != 'popover' &&\n\t\t\tname in dom\n\t\t) {\n\t\t\ttry {\n\t\t\t\tdom[name] = value == NULL ? '' : value;\n\t\t\t\t// labelled break is 1b smaller here than a return statement (sorry)\n\t\t\t\tbreak o;\n\t\t\t} catch (e) {}\n\t\t}\n\n\t\t// aria- and data- attributes have no boolean representation.\n\t\t// A `false` value is different from the attribute not being\n\t\t// present, so we can't remove it. For non-boolean aria\n\t\t// attributes we could treat false as a removal, but the\n\t\t// amount of exceptions would cost too many bytes. On top of\n\t\t// that other frameworks generally stringify `false`.\n\n\t\tif (typeof value == 'function') {\n\t\t\t// never serialize functions as attribute values\n\t\t} else if (value != NULL && (value !== false || name[4] == '-')) {\n\t\t\tdom.setAttribute(name, name == 'popover' && value == true ? '' : value);\n\t\t} else {\n\t\t\tdom.removeAttribute(name);\n\t\t}\n\t}\n}\n\n/**\n * Create an event proxy function.\n * @param {boolean} useCapture Is the event handler for the capture phase.\n * @private\n */\nfunction createEventProxy(useCapture) {\n\t/**\n\t * Proxy an event to hooked event handlers\n\t * @param {import('../internal').PreactEvent} e The event object from the browser\n\t * @private\n\t */\n\treturn function (e) {\n\t\tif (this._listeners) {\n\t\t\tconst eventHandler = this._listeners[e.type + useCapture];\n\t\t\tif (e._dispatched == NULL) {\n\t\t\t\te._dispatched = eventClock++;\n\n\t\t\t\t// When `e._dispatched` is smaller than the time when the targeted event\n\t\t\t\t// handler was attached we know we have bubbled up to an element that was added\n\t\t\t\t// during patching the DOM.\n\t\t\t} else if (e._dispatched < eventHandler._attached) {\n\t\t\t\treturn;\n\t\t\t}\n\t\t\treturn eventHandler(options.event ? options.event(e) : e);\n\t\t}\n\t};\n}\n\nconst eventProxy = createEventProxy(false);\nconst eventProxyCapture = createEventProxy(true);\n", "import { enqueueRender } from './component';\nimport { NULL } from './constants';\n\nexport let i = 0;\n\nexport function createContext(defaultValue) {\n\tfunction Context(props) {\n\t\tif (!this.getChildContext) {\n\t\t\t/** @type {Set<import('./internal').Component> | null} */\n\t\t\tlet subs = new Set();\n\t\t\tlet ctx = {};\n\t\t\tctx[Context._id] = this;\n\n\t\t\tthis.getChildContext = () => ctx;\n\n\t\t\tthis.componentWillUnmount = () => {\n\t\t\t\tsubs = NULL;\n\t\t\t};\n\n\t\t\tthis.shouldComponentUpdate = function (_props) {\n\t\t\t\t// @ts-expect-error even\n\t\t\t\tif (this.props.value !== _props.value) {\n\t\t\t\t\tsubs.forEach(c => {\n\t\t\t\t\t\tc._force = true;\n\t\t\t\t\t\tenqueueRender(c);\n\t\t\t\t\t});\n\t\t\t\t}\n\t\t\t};\n\n\t\t\tthis.sub = c => {\n\t\t\t\tsubs.add(c);\n\t\t\t\tlet old = c.componentWillUnmount;\n\t\t\t\tc.componentWillUnmount = () => {\n\t\t\t\t\tif (subs) {\n\t\t\t\t\t\tsubs.delete(c);\n\t\t\t\t\t}\n\t\t\t\t\tif (old) old.call(c);\n\t\t\t\t};\n\t\t\t};\n\t\t}\n\n\t\treturn props.children;\n\t}\n\n\tContext._id = '__cC' + i++;\n\tContext._defaultValue = defaultValue;\n\n\t/** @type {import('./internal').FunctionComponent} */\n\tContext.Consumer = (props, contextValue) => {\n\t\treturn props.children(contextValue);\n\t};\n\n\t// we could also get rid of _contextRef entirely\n\tContext.Provider =\n\t\tContext._contextRef =\n\t\tContext.Consumer.contextType =\n\t\t\tContext;\n\n\treturn Context;\n}\n", "import { diff, unmount, applyRef } from './index';\nimport { createVNode, Fragment } from '../create-element';\nimport {\n\tEMPTY_OBJ,\n\tEMPTY_ARR,\n\tINSERT_VNODE,\n\tMATCHED,\n\tUNDEFINED,\n\tNULL\n} from '../constants';\nimport { isArray } from '../util';\nimport { getDomSibling } from '../component';\n\n/**\n * @typedef {import('../internal').ComponentChildren} ComponentChildren\n * @typedef {import('../internal').Component} Component\n * @typedef {import('../internal').PreactElement} PreactElement\n * @typedef {import('../internal').VNode} VNode\n */\n\n/**\n * Diff the children of a virtual node\n * @param {PreactElement} parentDom The DOM element whose children are being\n * diffed\n * @param {ComponentChildren[]} renderResult\n * @param {VNode} newParentVNode The new virtual node whose children should be\n * diff'ed against oldParentVNode\n * @param {VNode} oldParentVNode The old virtual node whose children should be\n * diff'ed against newParentVNode\n * @param {object} globalContext The current context object - modified by\n * getChildContext\n * @param {string} namespace Current namespace of the DOM node (HTML, SVG, or MathML)\n * @param {Array<PreactElement>} excessDomChildren\n * @param {Array<Component>} commitQueue List of components which have callbacks\n * to invoke in commitRoot\n * @param {PreactElement} oldDom The current attached DOM element any new dom\n * elements should be placed around. Likely `null` on first render (except when\n * hydrating). Can be a sibling DOM element when diffing Fragments that have\n * siblings. In most cases, it starts out as `oldChildren[0]._dom`.\n * @param {boolean} isHydrating Whether or not we are in hydration\n * @param {any[]} refQueue an array of elements needed to invoke refs\n */\nexport function diffChildren(\n\tparentDom,\n\trenderResult,\n\tnewParentVNode,\n\toldParentVNode,\n\tglobalContext,\n\tnamespace,\n\texcessDomChildren,\n\tcommitQueue,\n\toldDom,\n\tisHydrating,\n\trefQueue\n) {\n\tlet i,\n\t\t/** @type {VNode} */\n\t\toldVNode,\n\t\t/** @type {VNode} */\n\t\tchildVNode,\n\t\t/** @type {PreactElement} */\n\t\tnewDom,\n\t\t/** @type {PreactElement} */\n\t\tfirstChildDom;\n\n\t// This is a compression of oldParentVNode!=null && oldParentVNode != EMPTY_OBJ && oldParentVNode._children || EMPTY_ARR\n\t// as EMPTY_OBJ._children should be `undefined`.\n\t/** @type {VNode[]} */\n\tlet oldChildren = (oldParentVNode && oldParentVNode._children) || EMPTY_ARR;\n\n\tlet newChildrenLength = renderResult.length;\n\n\toldDom = constructNewChildrenArray(\n\t\tnewParentVNode,\n\t\trenderResult,\n\t\toldChildren,\n\t\toldDom,\n\t\tnewChildrenLength\n\t);\n\n\tfor (i = 0; i < newChildrenLength; i++) {\n\t\tchildVNode = newParentVNode._children[i];\n\t\tif (childVNode == NULL) continue;\n\n\t\t// At this point, constructNewChildrenArray has assigned _index to be the\n\t\t// matchingIndex for this VNode's oldVNode (or -1 if there is no oldVNode).\n\t\tif (childVNode._index === -1) {\n\t\t\toldVNode = EMPTY_OBJ;\n\t\t} else {\n\t\t\toldVNode = oldChildren[childVNode._index] || EMPTY_OBJ;\n\t\t}\n\n\t\t// Update childVNode._index to its final index\n\t\tchildVNode._index = i;\n\n\t\t// Morph the old element into the new one, but don't append it to the dom yet\n\t\tlet result = diff(\n\t\t\tparentDom,\n\t\t\tchildVNode,\n\t\t\toldVNode,\n\t\t\tglobalContext,\n\t\t\tnamespace,\n\t\t\texcessDomChildren,\n\t\t\tcommitQueue,\n\t\t\toldDom,\n\t\t\tisHydrating,\n\t\t\trefQueue\n\t\t);\n\n\t\t// Adjust DOM nodes\n\t\tnewDom = childVNode._dom;\n\t\tif (childVNode.ref && oldVNode.ref != childVNode.ref) {\n\t\t\tif (oldVNode.ref) {\n\t\t\t\tapplyRef(oldVNode.ref, NULL, childVNode);\n\t\t\t}\n\t\t\trefQueue.push(\n\t\t\t\tchildVNode.ref,\n\t\t\t\tchildVNode._component || newDom,\n\t\t\t\tchildVNode\n\t\t\t);\n\t\t}\n\n\t\tif (firstChildDom == NULL && newDom != NULL) {\n\t\t\tfirstChildDom = newDom;\n\t\t}\n\n\t\tif (\n\t\t\tchildVNode._flags & INSERT_VNODE ||\n\t\t\toldVNode._children === childVNode._children\n\t\t) {\n\t\t\toldDom = insert(childVNode, oldDom, parentDom);\n\t\t} else if (typeof childVNode.type == 'function' && result !== UNDEFINED) {\n\t\t\toldDom = result;\n\t\t} else if (newDom) {\n\t\t\toldDom = newDom.nextSibling;\n\t\t}\n\n\t\t// Unset diffing flags\n\t\tchildVNode._flags &= ~(INSERT_VNODE | MATCHED);\n\t}\n\n\tnewParentVNode._dom = firstChildDom;\n\n\treturn oldDom;\n}\n\n/**\n * @param {VNode} newParentVNode\n * @param {ComponentChildren[]} renderResult\n * @param {VNode[]} oldChildren\n */\nfunction constructNewChildrenArray(\n\tnewParentVNode,\n\trenderResult,\n\toldChildren,\n\toldDom,\n\tnewChildrenLength\n) {\n\t/** @type {number} */\n\tlet i;\n\t/** @type {VNode} */\n\tlet childVNode;\n\t/** @type {VNode} */\n\tlet oldVNode;\n\n\tlet oldChildrenLength = oldChildren.length,\n\t\tremainingOldChildren = oldChildrenLength;\n\n\tlet skew = 0;\n\n\tnewParentVNode._children = new Array(newChildrenLength);\n\tfor (i = 0; i < newChildrenLength; i++) {\n\t\t// @ts-expect-error We are reusing the childVNode variable to hold both the\n\t\t// pre and post normalized childVNode\n\t\tchildVNode = renderResult[i];\n\n\t\tif (\n\t\t\tchildVNode == NULL ||\n\t\t\ttypeof childVNode == 'boolean' ||\n\t\t\ttypeof childVNode == 'function'\n\t\t) {\n\t\t\tnewParentVNode._children[i] = NULL;\n\t\t\tcontinue;\n\t\t}\n\t\t// If this newVNode is being reused (e.g. <div>{reuse}{reuse}</div>) in the same diff,\n\t\t// or we are rendering a component (e.g. setState) copy the oldVNodes so it can have\n\t\t// it's own DOM & etc. pointers\n\t\telse if (\n\t\t\ttypeof childVNode == 'string' ||\n\t\t\ttypeof childVNode == 'number' ||\n\t\t\t// eslint-disable-next-line valid-typeof\n\t\t\ttypeof childVNode == 'bigint' ||\n\t\t\tchildVNode.constructor == String\n\t\t) {\n\t\t\tchildVNode = newParentVNode._children[i] = createVNode(\n\t\t\t\tNULL,\n\t\t\t\tchildVNode,\n\t\t\t\tNULL,\n\t\t\t\tNULL,\n\t\t\t\tNULL\n\t\t\t);\n\t\t} else if (isArray(childVNode)) {\n\t\t\tchildVNode = newParentVNode._children[i] = createVNode(\n\t\t\t\tFragment,\n\t\t\t\t{ children: childVNode },\n\t\t\t\tNULL,\n\t\t\t\tNULL,\n\t\t\t\tNULL\n\t\t\t);\n\t\t} else if (childVNode.constructor === UNDEFINED && childVNode._depth > 0) {\n\t\t\t// VNode is already in use, clone it. This can happen in the following\n\t\t\t// scenario:\n\t\t\t//   const reuse = <div />\n\t\t\t//   <div>{reuse}<span />{reuse}</div>\n\t\t\tchildVNode = newParentVNode._children[i] = createVNode(\n\t\t\t\tchildVNode.type,\n\t\t\t\tchildVNode.props,\n\t\t\t\tchildVNode.key,\n\t\t\t\tchildVNode.ref ? childVNode.ref : NULL,\n\t\t\t\tchildVNode._original\n\t\t\t);\n\t\t} else {\n\t\t\tchildVNode = newParentVNode._children[i] = childVNode;\n\t\t}\n\n\t\tconst skewedIndex = i + skew;\n\t\tchildVNode._parent = newParentVNode;\n\t\tchildVNode._depth = newParentVNode._depth + 1;\n\n\t\t// Temporarily store the matchingIndex on the _index property so we can pull\n\t\t// out the oldVNode in diffChildren. We'll override this to the VNode's\n\t\t// final index after using this property to get the oldVNode\n\t\tconst matchingIndex = (childVNode._index = findMatchingIndex(\n\t\t\tchildVNode,\n\t\t\toldChildren,\n\t\t\tskewedIndex,\n\t\t\tremainingOldChildren\n\t\t));\n\n\t\toldVNode = NULL;\n\t\tif (matchingIndex !== -1) {\n\t\t\toldVNode = oldChildren[matchingIndex];\n\t\t\tremainingOldChildren--;\n\t\t\tif (oldVNode) {\n\t\t\t\toldVNode._flags |= MATCHED;\n\t\t\t}\n\t\t}\n\n\t\t// Here, we define isMounting for the purposes of the skew diffing\n\t\t// algorithm. Nodes that are unsuspending are considered mounting and we detect\n\t\t// this by checking if oldVNode._original === null\n\t\tconst isMounting = oldVNode == NULL || oldVNode._original === NULL;\n\n\t\tif (isMounting) {\n\t\t\tif (matchingIndex == -1) {\n\t\t\t\tskew--;\n\t\t\t}\n\n\t\t\t// If we are mounting a DOM VNode, mark it for insertion\n\t\t\tif (typeof childVNode.type != 'function') {\n\t\t\t\tchildVNode._flags |= INSERT_VNODE;\n\t\t\t}\n\t\t} else if (matchingIndex != skewedIndex) {\n\t\t\t// When we move elements around i.e. [0, 1, 2] --> [1, 0, 2]\n\t\t\t// --> we diff 1, we find it at position 1 while our skewed index is 0 and our skew is 0\n\t\t\t//     we set the skew to 1 as we found an offset.\n\t\t\t// --> we diff 0, we find it at position 0 while our skewed index is at 2 and our skew is 1\n\t\t\t//     this makes us increase the skew again.\n\t\t\t// --> we diff 2, we find it at position 2 while our skewed index is at 4 and our skew is 2\n\t\t\t//\n\t\t\t// this becomes an optimization question where currently we see a 1 element offset as an insertion\n\t\t\t// or deletion i.e. we optimize for [0, 1, 2] --> [9, 0, 1, 2]\n\t\t\t// while a more than 1 offset we see as a swap.\n\t\t\t// We could probably build heuristics for having an optimized course of action here as well, but\n\t\t\t// might go at the cost of some bytes.\n\t\t\t//\n\t\t\t// If we wanted to optimize for i.e. only swaps we'd just do the last two code-branches and have\n\t\t\t// only the first item be a re-scouting and all the others fall in their skewed counter-part.\n\t\t\t// We could also further optimize for swaps\n\t\t\tif (matchingIndex == skewedIndex - 1) {\n\t\t\t\tskew--;\n\t\t\t} else if (matchingIndex == skewedIndex + 1) {\n\t\t\t\tskew++;\n\t\t\t} else {\n\t\t\t\tif (matchingIndex > skewedIndex) {\n\t\t\t\t\tskew--;\n\t\t\t\t} else {\n\t\t\t\t\tskew++;\n\t\t\t\t}\n\n\t\t\t\t// Move this VNode's DOM if the original index (matchingIndex) doesn't\n\t\t\t\t// match the new skew index (i + new skew)\n\t\t\t\t// In the former two branches we know that it matches after skewing\n\t\t\t\tchildVNode._flags |= INSERT_VNODE;\n\t\t\t}\n\t\t}\n\t}\n\n\t// Remove remaining oldChildren if there are any. Loop forwards so that as we\n\t// unmount DOM from the beginning of the oldChildren, we can adjust oldDom to\n\t// point to the next child, which needs to be the first DOM node that won't be\n\t// unmounted.\n\tif (remainingOldChildren) {\n\t\tfor (i = 0; i < oldChildrenLength; i++) {\n\t\t\toldVNode = oldChildren[i];\n\t\t\tif (oldVNode != NULL && (oldVNode._flags & MATCHED) == 0) {\n\t\t\t\tif (oldVNode._dom == oldDom) {\n\t\t\t\t\toldDom = getDomSibling(oldVNode);\n\t\t\t\t}\n\n\t\t\t\tunmount(oldVNode, oldVNode);\n\t\t\t}\n\t\t}\n\t}\n\n\treturn oldDom;\n}\n\n/**\n * @param {VNode} parentVNode\n * @param {PreactElement} oldDom\n * @param {PreactElement} parentDom\n * @returns {PreactElement}\n */\nfunction insert(parentVNode, oldDom, parentDom) {\n\t// Note: VNodes in nested suspended trees may be missing _children.\n\n\tif (typeof parentVNode.type == 'function') {\n\t\tlet children = parentVNode._children;\n\t\tfor (let i = 0; children && i < children.length; i++) {\n\t\t\tif (children[i]) {\n\t\t\t\t// If we enter this code path on sCU bailout, where we copy\n\t\t\t\t// oldVNode._children to newVNode._children, we need to update the old\n\t\t\t\t// children's _parent pointer to point to the newVNode (parentVNode\n\t\t\t\t// here).\n\t\t\t\tchildren[i]._parent = parentVNode;\n\t\t\t\toldDom = insert(children[i], oldDom, parentDom);\n\t\t\t}\n\t\t}\n\n\t\treturn oldDom;\n\t} else if (parentVNode._dom != oldDom) {\n\t\tif (oldDom && parentVNode.type && !parentDom.contains(oldDom)) {\n\t\t\toldDom = getDomSibling(parentVNode);\n\t\t}\n\t\tparentDom.insertBefore(parentVNode._dom, oldDom || NULL);\n\t\toldDom = parentVNode._dom;\n\t}\n\n\tdo {\n\t\toldDom = oldDom && oldDom.nextSibling;\n\t} while (oldDom != NULL && oldDom.nodeType == 8);\n\n\treturn oldDom;\n}\n\n/**\n * Flatten and loop through the children of a virtual node\n * @param {ComponentChildren} children The unflattened children of a virtual\n * node\n * @returns {VNode[]}\n */\nexport function toChildArray(children, out) {\n\tout = out || [];\n\tif (children == NULL || typeof children == 'boolean') {\n\t} else if (isArray(children)) {\n\t\tchildren.some(child => {\n\t\t\ttoChildArray(child, out);\n\t\t});\n\t} else {\n\t\tout.push(children);\n\t}\n\treturn out;\n}\n\n/**\n * @param {VNode} childVNode\n * @param {VNode[]} oldChildren\n * @param {number} skewedIndex\n * @param {number} remainingOldChildren\n * @returns {number}\n */\nfunction findMatchingIndex(\n\tchildVNode,\n\toldChildren,\n\tskewedIndex,\n\tremainingOldChildren\n) {\n\tconst key = childVNode.key;\n\tconst type = childVNode.type;\n\tlet oldVNode = oldChildren[skewedIndex];\n\n\t// We only need to perform a search if there are more children\n\t// (remainingOldChildren) to search. However, if the oldVNode we just looked\n\t// at skewedIndex was not already used in this diff, then there must be at\n\t// least 1 other (so greater than 1) remainingOldChildren to attempt to match\n\t// against. So the following condition checks that ensuring\n\t// remainingOldChildren > 1 if the oldVNode is not already used/matched. Else\n\t// if the oldVNode was null or matched, then there could needs to be at least\n\t// 1 (aka `remainingOldChildren > 0`) children to find and compare against.\n\t//\n\t// If there is an unkeyed functional VNode, that isn't a built-in like our Fragment,\n\t// we should not search as we risk re-using state of an unrelated VNode. (reverted for now)\n\tlet shouldSearch =\n\t\t// (typeof type != 'function' || type === Fragment || key) &&\n\t\tremainingOldChildren >\n\t\t(oldVNode != NULL && (oldVNode._flags & MATCHED) == 0 ? 1 : 0);\n\n\tif (\n\t\toldVNode === NULL ||\n\t\t(oldVNode &&\n\t\t\tkey == oldVNode.key &&\n\t\t\ttype === oldVNode.type &&\n\t\t\t(oldVNode._flags & MATCHED) == 0)\n\t) {\n\t\treturn skewedIndex;\n\t} else if (shouldSearch) {\n\t\tlet x = skewedIndex - 1;\n\t\tlet y = skewedIndex + 1;\n\t\twhile (x >= 0 || y < oldChildren.length) {\n\t\t\tif (x >= 0) {\n\t\t\t\toldVNode = oldChildren[x];\n\t\t\t\tif (\n\t\t\t\t\toldVNode &&\n\t\t\t\t\t(oldVNode._flags & MATCHED) == 0 &&\n\t\t\t\t\tkey == oldVNode.key &&\n\t\t\t\t\ttype === oldVNode.type\n\t\t\t\t) {\n\t\t\t\t\treturn x;\n\t\t\t\t}\n\t\t\t\tx--;\n\t\t\t}\n\n\t\t\tif (y < oldChildren.length) {\n\t\t\t\toldVNode = oldChildren[y];\n\t\t\t\tif (\n\t\t\t\t\toldVNode &&\n\t\t\t\t\t(oldVNode._flags & MATCHED) == 0 &&\n\t\t\t\t\tkey == oldVNode.key &&\n\t\t\t\t\ttype === oldVNode.type\n\t\t\t\t) {\n\t\t\t\t\treturn y;\n\t\t\t\t}\n\t\t\t\ty++;\n\t\t\t}\n\t\t}\n\t}\n\n\treturn -1;\n}\n", "import {\n\tEMPTY_OBJ,\n\tMATH_NAMESPACE,\n\tMODE_HYDRATE,\n\tMODE_SUSPENDED,\n\tNULL,\n\tRESET_MODE,\n\tSVG_NAMESPACE,\n\tUNDEFINED,\n\tXHTML_NAMESPACE\n} from '../constants';\nimport { BaseComponent, getDomSibling } from '../component';\nimport { Fragment } from '../create-element';\nimport { diffChildren } from './children';\nimport { setProperty } from './props';\nimport { assign, isArray, removeNode, slice } from '../util';\nimport options from '../options';\n\n/**\n * @typedef {import('../internal').ComponentChildren} ComponentChildren\n * @typedef {import('../internal').Component} Component\n * @typedef {import('../internal').PreactElement} PreactElement\n * @typedef {import('../internal').VNode} VNode\n */\n\n/**\n * @template {any} T\n * @typedef {import('../internal').Ref<T>} Ref<T>\n */\n\n/**\n * Diff two virtual nodes and apply proper changes to the DOM\n * @param {PreactElement} parentDom The parent of the DOM element\n * @param {VNode} newVNode The new virtual node\n * @param {VNode} oldVNode The old virtual node\n * @param {object} globalContext The current context object. Modified by\n * getChildContext\n * @param {string} namespace Current namespace of the DOM node (HTML, SVG, or MathML)\n * @param {Array<PreactElement>} excessDomChildren\n * @param {Array<Component>} commitQueue List of components which have callbacks\n * to invoke in commitRoot\n * @param {PreactElement} oldDom The current attached DOM element any new dom\n * elements should be placed around. Likely `null` on first render (except when\n * hydrating). Can be a sibling DOM element when diffing Fragments that have\n * siblings. In most cases, it starts out as `oldChildren[0]._dom`.\n * @param {boolean} isHydrating Whether or not we are in hydration\n * @param {any[]} refQueue an array of elements needed to invoke refs\n */\nexport function diff(\n\tparentDom,\n\tnewVNode,\n\toldVNode,\n\tglobalContext,\n\tnamespace,\n\texcessDomChildren,\n\tcommitQueue,\n\toldDom,\n\tisHydrating,\n\trefQueue\n) {\n\t/** @type {any} */\n\tlet tmp,\n\t\tnewType = newVNode.type;\n\n\t// When passing through createElement it assigns the object\n\t// constructor as undefined. This to prevent JSON-injection.\n\tif (newVNode.constructor !== UNDEFINED) return NULL;\n\n\t// If the previous diff bailed out, resume creating/hydrating.\n\tif (oldVNode._flags & MODE_SUSPENDED) {\n\t\tisHydrating = !!(oldVNode._flags & MODE_HYDRATE);\n\t\toldDom = newVNode._dom = oldVNode._dom;\n\t\texcessDomChildren = [oldDom];\n\t}\n\n\tif ((tmp = options._diff)) tmp(newVNode);\n\n\touter: if (typeof newType == 'function') {\n\t\ttry {\n\t\t\tlet c, isNew, oldProps, oldState, snapshot, clearProcessingException;\n\t\t\tlet newProps = newVNode.props;\n\t\t\tconst isClassComponent =\n\t\t\t\t'prototype' in newType && newType.prototype.render;\n\n\t\t\t// Necessary for createContext api. Setting this property will pass\n\t\t\t// the context value as `this.context` just for this component.\n\t\t\ttmp = newType.contextType;\n\t\t\tlet provider = tmp && globalContext[tmp._id];\n\t\t\tlet componentContext = tmp\n\t\t\t\t? provider\n\t\t\t\t\t? provider.props.value\n\t\t\t\t\t: tmp._defaultValue\n\t\t\t\t: globalContext;\n\n\t\t\t// Get component and set it to `c`\n\t\t\tif (oldVNode._component) {\n\t\t\t\tc = newVNode._component = oldVNode._component;\n\t\t\t\tclearProcessingException = c._processingException = c._pendingError;\n\t\t\t} else {\n\t\t\t\t// Instantiate the new component\n\t\t\t\tif (isClassComponent) {\n\t\t\t\t\t// @ts-expect-error The check above verifies that newType is suppose to be constructed\n\t\t\t\t\tnewVNode._component = c = new newType(newProps, componentContext); // eslint-disable-line new-cap\n\t\t\t\t} else {\n\t\t\t\t\t// @ts-expect-error Trust me, Component implements the interface we want\n\t\t\t\t\tnewVNode._component = c = new BaseComponent(\n\t\t\t\t\t\tnewProps,\n\t\t\t\t\t\tcomponentContext\n\t\t\t\t\t);\n\t\t\t\t\tc.constructor = newType;\n\t\t\t\t\tc.render = doRender;\n\t\t\t\t}\n\t\t\t\tif (provider) provider.sub(c);\n\n\t\t\t\tc.props = newProps;\n\t\t\t\tif (!c.state) c.state = {};\n\t\t\t\tc.context = componentContext;\n\t\t\t\tc._globalContext = globalContext;\n\t\t\t\tisNew = c._dirty = true;\n\t\t\t\tc._renderCallbacks = [];\n\t\t\t\tc._stateCallbacks = [];\n\t\t\t}\n\n\t\t\t// Invoke getDerivedStateFromProps\n\t\t\tif (isClassComponent && c._nextState == NULL) {\n\t\t\t\tc._nextState = c.state;\n\t\t\t}\n\n\t\t\tif (isClassComponent && newType.getDerivedStateFromProps != NULL) {\n\t\t\t\tif (c._nextState == c.state) {\n\t\t\t\t\tc._nextState = assign({}, c._nextState);\n\t\t\t\t}\n\n\t\t\t\tassign(\n\t\t\t\t\tc._nextState,\n\t\t\t\t\tnewType.getDerivedStateFromProps(newProps, c._nextState)\n\t\t\t\t);\n\t\t\t}\n\n\t\t\toldProps = c.props;\n\t\t\toldState = c.state;\n\t\t\tc._vnode = newVNode;\n\n\t\t\t// Invoke pre-render lifecycle methods\n\t\t\tif (isNew) {\n\t\t\t\tif (\n\t\t\t\t\tisClassComponent &&\n\t\t\t\t\tnewType.getDerivedStateFromProps == NULL &&\n\t\t\t\t\tc.componentWillMount != NULL\n\t\t\t\t) {\n\t\t\t\t\tc.componentWillMount();\n\t\t\t\t}\n\n\t\t\t\tif (isClassComponent && c.componentDidMount != NULL) {\n\t\t\t\t\tc._renderCallbacks.push(c.componentDidMount);\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\tif (\n\t\t\t\t\tisClassComponent &&\n\t\t\t\t\tnewType.getDerivedStateFromProps == NULL &&\n\t\t\t\t\tnewProps !== oldProps &&\n\t\t\t\t\tc.componentWillReceiveProps != NULL\n\t\t\t\t) {\n\t\t\t\t\tc.componentWillReceiveProps(newProps, componentContext);\n\t\t\t\t}\n\n\t\t\t\tif (\n\t\t\t\t\t!c._force &&\n\t\t\t\t\t((c.shouldComponentUpdate != NULL &&\n\t\t\t\t\t\tc.shouldComponentUpdate(\n\t\t\t\t\t\t\tnewProps,\n\t\t\t\t\t\t\tc._nextState,\n\t\t\t\t\t\t\tcomponentContext\n\t\t\t\t\t\t) === false) ||\n\t\t\t\t\t\tnewVNode._original == oldVNode._original)\n\t\t\t\t) {\n\t\t\t\t\t// More info about this here: https://gist.github.com/JoviDeCroock/bec5f2ce93544d2e6070ef8e0036e4e8\n\t\t\t\t\tif (newVNode._original != oldVNode._original) {\n\t\t\t\t\t\t// When we are dealing with a bail because of sCU we have to update\n\t\t\t\t\t\t// the props, state and dirty-state.\n\t\t\t\t\t\t// when we are dealing with strict-equality we don't as the child could still\n\t\t\t\t\t\t// be dirtied see #3883\n\t\t\t\t\t\tc.props = newProps;\n\t\t\t\t\t\tc.state = c._nextState;\n\t\t\t\t\t\tc._dirty = false;\n\t\t\t\t\t}\n\n\t\t\t\t\tnewVNode._dom = oldVNode._dom;\n\t\t\t\t\tnewVNode._children = oldVNode._children;\n\t\t\t\t\tnewVNode._children.some(vnode => {\n\t\t\t\t\t\tif (vnode) vnode._parent = newVNode;\n\t\t\t\t\t});\n\n\t\t\t\t\tfor (let i = 0; i < c._stateCallbacks.length; i++) {\n\t\t\t\t\t\tc._renderCallbacks.push(c._stateCallbacks[i]);\n\t\t\t\t\t}\n\t\t\t\t\tc._stateCallbacks = [];\n\n\t\t\t\t\tif (c._renderCallbacks.length) {\n\t\t\t\t\t\tcommitQueue.push(c);\n\t\t\t\t\t}\n\n\t\t\t\t\tbreak outer;\n\t\t\t\t}\n\n\t\t\t\tif (c.componentWillUpdate != NULL) {\n\t\t\t\t\tc.componentWillUpdate(newProps, c._nextState, componentContext);\n\t\t\t\t}\n\n\t\t\t\tif (isClassComponent && c.componentDidUpdate != NULL) {\n\t\t\t\t\tc._renderCallbacks.push(() => {\n\t\t\t\t\t\tc.componentDidUpdate(oldProps, oldState, snapshot);\n\t\t\t\t\t});\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tc.context = componentContext;\n\t\t\tc.props = newProps;\n\t\t\tc._parentDom = parentDom;\n\t\t\tc._force = false;\n\n\t\t\tlet renderHook = options._render,\n\t\t\t\tcount = 0;\n\t\t\tif (isClassComponent) {\n\t\t\t\tc.state = c._nextState;\n\t\t\t\tc._dirty = false;\n\n\t\t\t\tif (renderHook) renderHook(newVNode);\n\n\t\t\t\ttmp = c.render(c.props, c.state, c.context);\n\n\t\t\t\tfor (let i = 0; i < c._stateCallbacks.length; i++) {\n\t\t\t\t\tc._renderCallbacks.push(c._stateCallbacks[i]);\n\t\t\t\t}\n\t\t\t\tc._stateCallbacks = [];\n\t\t\t} else {\n\t\t\t\tdo {\n\t\t\t\t\tc._dirty = false;\n\t\t\t\t\tif (renderHook) renderHook(newVNode);\n\n\t\t\t\t\ttmp = c.render(c.props, c.state, c.context);\n\n\t\t\t\t\t// Handle setState called in render, see #2553\n\t\t\t\t\tc.state = c._nextState;\n\t\t\t\t} while (c._dirty && ++count < 25);\n\t\t\t}\n\n\t\t\t// Handle setState called in render, see #2553\n\t\t\tc.state = c._nextState;\n\n\t\t\tif (c.getChildContext != NULL) {\n\t\t\t\tglobalContext = assign(assign({}, globalContext), c.getChildContext());\n\t\t\t}\n\n\t\t\tif (isClassComponent && !isNew && c.getSnapshotBeforeUpdate != NULL) {\n\t\t\t\tsnapshot = c.getSnapshotBeforeUpdate(oldProps, oldState);\n\t\t\t}\n\n\t\t\tlet isTopLevelFragment =\n\t\t\t\ttmp != NULL && tmp.type === Fragment && tmp.key == NULL;\n\t\t\tlet renderResult = isTopLevelFragment ? tmp.props.children : tmp;\n\n\t\t\tif (isTopLevelFragment) {\n\t\t\t\ttmp.props.children = NULL;\n\t\t\t}\n\n\t\t\toldDom = diffChildren(\n\t\t\t\tparentDom,\n\t\t\t\tisArray(renderResult) ? renderResult : [renderResult],\n\t\t\t\tnewVNode,\n\t\t\t\toldVNode,\n\t\t\t\tglobalContext,\n\t\t\t\tnamespace,\n\t\t\t\texcessDomChildren,\n\t\t\t\tcommitQueue,\n\t\t\t\toldDom,\n\t\t\t\tisHydrating,\n\t\t\t\trefQueue\n\t\t\t);\n\n\t\t\tc.base = newVNode._dom;\n\n\t\t\t// We successfully rendered this VNode, unset any stored hydration/bailout state:\n\t\t\tnewVNode._flags &= RESET_MODE;\n\n\t\t\tif (c._renderCallbacks.length) {\n\t\t\t\tcommitQueue.push(c);\n\t\t\t}\n\n\t\t\tif (clearProcessingException) {\n\t\t\t\tc._pendingError = c._processingException = NULL;\n\t\t\t}\n\t\t} catch (e) {\n\t\t\tnewVNode._original = NULL;\n\t\t\t// if hydrating or creating initial tree, bailout preserves DOM:\n\t\t\tif (isHydrating || excessDomChildren != NULL) {\n\t\t\t\tif (e.then) {\n\t\t\t\t\tnewVNode._flags |= isHydrating\n\t\t\t\t\t\t? MODE_HYDRATE | MODE_SUSPENDED\n\t\t\t\t\t\t: MODE_SUSPENDED;\n\n\t\t\t\t\twhile (oldDom && oldDom.nodeType == 8 && oldDom.nextSibling) {\n\t\t\t\t\t\toldDom = oldDom.nextSibling;\n\t\t\t\t\t}\n\n\t\t\t\t\texcessDomChildren[excessDomChildren.indexOf(oldDom)] = NULL;\n\t\t\t\t\tnewVNode._dom = oldDom;\n\t\t\t\t} else {\n\t\t\t\t\tfor (let i = excessDomChildren.length; i--; ) {\n\t\t\t\t\t\tremoveNode(excessDomChildren[i]);\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\tnewVNode._dom = oldVNode._dom;\n\t\t\t\tnewVNode._children = oldVNode._children;\n\t\t\t}\n\t\t\toptions._catchError(e, newVNode, oldVNode);\n\t\t}\n\t} else if (\n\t\texcessDomChildren == NULL &&\n\t\tnewVNode._original == oldVNode._original\n\t) {\n\t\tnewVNode._children = oldVNode._children;\n\t\tnewVNode._dom = oldVNode._dom;\n\t} else {\n\t\toldDom = newVNode._dom = diffElementNodes(\n\t\t\toldVNode._dom,\n\t\t\tnewVNode,\n\t\t\toldVNode,\n\t\t\tglobalContext,\n\t\t\tnamespace,\n\t\t\texcessDomChildren,\n\t\t\tcommitQueue,\n\t\t\tisHydrating,\n\t\t\trefQueue\n\t\t);\n\t}\n\n\tif ((tmp = options.diffed)) tmp(newVNode);\n\n\treturn newVNode._flags & MODE_SUSPENDED ? undefined : oldDom;\n}\n\n/**\n * @param {Array<Component>} commitQueue List of components\n * which have callbacks to invoke in commitRoot\n * @param {VNode} root\n */\nexport function commitRoot(commitQueue, root, refQueue) {\n\tfor (let i = 0; i < refQueue.length; i++) {\n\t\tapplyRef(refQueue[i], refQueue[++i], refQueue[++i]);\n\t}\n\n\tif (options._commit) options._commit(root, commitQueue);\n\n\tcommitQueue.some(c => {\n\t\ttry {\n\t\t\t// @ts-expect-error Reuse the commitQueue variable here so the type changes\n\t\t\tcommitQueue = c._renderCallbacks;\n\t\t\tc._renderCallbacks = [];\n\t\t\tcommitQueue.some(cb => {\n\t\t\t\t// @ts-expect-error See above comment on commitQueue\n\t\t\t\tcb.call(c);\n\t\t\t});\n\t\t} catch (e) {\n\t\t\toptions._catchError(e, c._vnode);\n\t\t}\n\t});\n}\n\n/**\n * Diff two virtual nodes representing DOM element\n * @param {PreactElement} dom The DOM element representing the virtual nodes\n * being diffed\n * @param {VNode} newVNode The new virtual node\n * @param {VNode} oldVNode The old virtual node\n * @param {object} globalContext The current context object\n * @param {string} namespace Current namespace of the DOM node (HTML, SVG, or MathML)\n * @param {Array<PreactElement>} excessDomChildren\n * @param {Array<Component>} commitQueue List of components which have callbacks\n * to invoke in commitRoot\n * @param {boolean} isHydrating Whether or not we are in hydration\n * @param {any[]} refQueue an array of elements needed to invoke refs\n * @returns {PreactElement}\n */\nfunction diffElementNodes(\n\tdom,\n\tnewVNode,\n\toldVNode,\n\tglobalContext,\n\tnamespace,\n\texcessDomChildren,\n\tcommitQueue,\n\tisHydrating,\n\trefQueue\n) {\n\tlet oldProps = oldVNode.props;\n\tlet newProps = newVNode.props;\n\tlet nodeType = /** @type {string} */ (newVNode.type);\n\t/** @type {any} */\n\tlet i;\n\t/** @type {{ __html?: string }} */\n\tlet newHtml;\n\t/** @type {{ __html?: string }} */\n\tlet oldHtml;\n\t/** @type {ComponentChildren} */\n\tlet newChildren;\n\tlet value;\n\tlet inputValue;\n\tlet checked;\n\n\t// Tracks entering and exiting namespaces when descending through the tree.\n\tif (nodeType == 'svg') namespace = SVG_NAMESPACE;\n\telse if (nodeType == 'math') namespace = MATH_NAMESPACE;\n\telse if (!namespace) namespace = XHTML_NAMESPACE;\n\n\tif (excessDomChildren != NULL) {\n\t\tfor (i = 0; i < excessDomChildren.length; i++) {\n\t\t\tvalue = excessDomChildren[i];\n\n\t\t\t// if newVNode matches an element in excessDomChildren or the `dom`\n\t\t\t// argument matches an element in excessDomChildren, remove it from\n\t\t\t// excessDomChildren so it isn't later removed in diffChildren\n\t\t\tif (\n\t\t\t\tvalue &&\n\t\t\t\t'setAttribute' in value == !!nodeType &&\n\t\t\t\t(nodeType ? value.localName == nodeType : value.nodeType == 3)\n\t\t\t) {\n\t\t\t\tdom = value;\n\t\t\t\texcessDomChildren[i] = NULL;\n\t\t\t\tbreak;\n\t\t\t}\n\t\t}\n\t}\n\n\tif (dom == NULL) {\n\t\tif (nodeType == NULL) {\n\t\t\treturn document.createTextNode(newProps);\n\t\t}\n\n\t\tdom = document.createElementNS(\n\t\t\tnamespace,\n\t\t\tnodeType,\n\t\t\tnewProps.is && newProps\n\t\t);\n\n\t\t// we are creating a new node, so we can assume this is a new subtree (in\n\t\t// case we are hydrating), this deopts the hydrate\n\t\tif (isHydrating) {\n\t\t\tif (options._hydrationMismatch)\n\t\t\t\toptions._hydrationMismatch(newVNode, excessDomChildren);\n\t\t\tisHydrating = false;\n\t\t}\n\t\t// we created a new parent, so none of the previously attached children can be reused:\n\t\texcessDomChildren = NULL;\n\t}\n\n\tif (nodeType === NULL) {\n\t\t// During hydration, we still have to split merged text from SSR'd HTML.\n\t\tif (oldProps !== newProps && (!isHydrating || dom.data !== newProps)) {\n\t\t\tdom.data = newProps;\n\t\t}\n\t} else {\n\t\t// If excessDomChildren was not null, repopulate it with the current element's children:\n\t\texcessDomChildren = excessDomChildren && slice.call(dom.childNodes);\n\n\t\toldProps = oldVNode.props || EMPTY_OBJ;\n\n\t\t// If we are in a situation where we are not hydrating but are using\n\t\t// existing DOM (e.g. replaceNode) we should read the existing DOM\n\t\t// attributes to diff them\n\t\tif (!isHydrating && excessDomChildren != NULL) {\n\t\t\toldProps = {};\n\t\t\tfor (i = 0; i < dom.attributes.length; i++) {\n\t\t\t\tvalue = dom.attributes[i];\n\t\t\t\toldProps[value.name] = value.value;\n\t\t\t}\n\t\t}\n\n\t\tfor (i in oldProps) {\n\t\t\tvalue = oldProps[i];\n\t\t\tif (i == 'children') {\n\t\t\t} else if (i == 'dangerouslySetInnerHTML') {\n\t\t\t\toldHtml = value;\n\t\t\t} else if (!(i in newProps)) {\n\t\t\t\tif (\n\t\t\t\t\t(i == 'value' && 'defaultValue' in newProps) ||\n\t\t\t\t\t(i == 'checked' && 'defaultChecked' in newProps)\n\t\t\t\t) {\n\t\t\t\t\tcontinue;\n\t\t\t\t}\n\t\t\t\tsetProperty(dom, i, NULL, value, namespace);\n\t\t\t}\n\t\t}\n\n\t\t// During hydration, props are not diffed at all (including dangerouslySetInnerHTML)\n\t\t// @TODO we should warn in debug mode when props don't match here.\n\t\tfor (i in newProps) {\n\t\t\tvalue = newProps[i];\n\t\t\tif (i == 'children') {\n\t\t\t\tnewChildren = value;\n\t\t\t} else if (i == 'dangerouslySetInnerHTML') {\n\t\t\t\tnewHtml = value;\n\t\t\t} else if (i == 'value') {\n\t\t\t\tinputValue = value;\n\t\t\t} else if (i == 'checked') {\n\t\t\t\tchecked = value;\n\t\t\t} else if (\n\t\t\t\t(!isHydrating || typeof value == 'function') &&\n\t\t\t\toldProps[i] !== value\n\t\t\t) {\n\t\t\t\tsetProperty(dom, i, value, oldProps[i], namespace);\n\t\t\t}\n\t\t}\n\n\t\t// If the new vnode didn't have dangerouslySetInnerHTML, diff its children\n\t\tif (newHtml) {\n\t\t\t// Avoid re-applying the same '__html' if it did not changed between re-render\n\t\t\tif (\n\t\t\t\t!isHydrating &&\n\t\t\t\t(!oldHtml ||\n\t\t\t\t\t(newHtml.__html !== oldHtml.__html &&\n\t\t\t\t\t\tnewHtml.__html !== dom.innerHTML))\n\t\t\t) {\n\t\t\t\tdom.innerHTML = newHtml.__html;\n\t\t\t}\n\n\t\t\tnewVNode._children = [];\n\t\t} else {\n\t\t\tif (oldHtml) dom.innerHTML = '';\n\n\t\t\tdiffChildren(\n\t\t\t\t// @ts-expect-error\n\t\t\t\tnewVNode.type === 'template' ? dom.content : dom,\n\t\t\t\tisArray(newChildren) ? newChildren : [newChildren],\n\t\t\t\tnewVNode,\n\t\t\t\toldVNode,\n\t\t\t\tglobalContext,\n\t\t\t\tnodeType == 'foreignObject' ? XHTML_NAMESPACE : namespace,\n\t\t\t\texcessDomChildren,\n\t\t\t\tcommitQueue,\n\t\t\t\texcessDomChildren\n\t\t\t\t\t? excessDomChildren[0]\n\t\t\t\t\t: oldVNode._children && getDomSibling(oldVNode, 0),\n\t\t\t\tisHydrating,\n\t\t\t\trefQueue\n\t\t\t);\n\n\t\t\t// Remove children that are not part of any vnode.\n\t\t\tif (excessDomChildren != NULL) {\n\t\t\t\tfor (i = excessDomChildren.length; i--; ) {\n\t\t\t\t\tremoveNode(excessDomChildren[i]);\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\t// As above, don't diff props during hydration\n\t\tif (!isHydrating) {\n\t\t\ti = 'value';\n\t\t\tif (nodeType == 'progress' && inputValue == NULL) {\n\t\t\t\tdom.removeAttribute('value');\n\t\t\t} else if (\n\t\t\t\tinputValue !== UNDEFINED &&\n\t\t\t\t// #2756 For the <progress>-element the initial value is 0,\n\t\t\t\t// despite the attribute not being present. When the attribute\n\t\t\t\t// is missing the progress bar is treated as indeterminate.\n\t\t\t\t// To fix that we'll always update it when it is 0 for progress elements\n\t\t\t\t(inputValue !== dom[i] ||\n\t\t\t\t\t(nodeType == 'progress' && !inputValue) ||\n\t\t\t\t\t// This is only for IE 11 to fix <select> value not being updated.\n\t\t\t\t\t// To avoid a stale select value we need to set the option.value\n\t\t\t\t\t// again, which triggers IE11 to re-evaluate the select value\n\t\t\t\t\t(nodeType == 'option' && inputValue !== oldProps[i]))\n\t\t\t) {\n\t\t\t\tsetProperty(dom, i, inputValue, oldProps[i], namespace);\n\t\t\t}\n\n\t\t\ti = 'checked';\n\t\t\tif (checked !== UNDEFINED && checked !== dom[i]) {\n\t\t\t\tsetProperty(dom, i, checked, oldProps[i], namespace);\n\t\t\t}\n\t\t}\n\t}\n\n\treturn dom;\n}\n\n/**\n * Invoke or update a ref, depending on whether it is a function or object ref.\n * @param {Ref<any> & { _unmount?: unknown }} ref\n * @param {any} value\n * @param {VNode} vnode\n */\nexport function applyRef(ref, value, vnode) {\n\ttry {\n\t\tif (typeof ref == 'function') {\n\t\t\tlet hasRefUnmount = typeof ref._unmount == 'function';\n\t\t\tif (hasRefUnmount) {\n\t\t\t\t// @ts-ignore TS doesn't like moving narrowing checks into variables\n\t\t\t\tref._unmount();\n\t\t\t}\n\n\t\t\tif (!hasRefUnmount || value != NULL) {\n\t\t\t\t// Store the cleanup function on the function\n\t\t\t\t// instance object itself to avoid shape\n\t\t\t\t// transitioning vnode\n\t\t\t\tref._unmount = ref(value);\n\t\t\t}\n\t\t} else ref.current = value;\n\t} catch (e) {\n\t\toptions._catchError(e, vnode);\n\t}\n}\n\n/**\n * Unmount a virtual node from the tree and apply DOM changes\n * @param {VNode} vnode The virtual node to unmount\n * @param {VNode} parentVNode The parent of the VNode that initiated the unmount\n * @param {boolean} [skipRemove] Flag that indicates that a parent node of the\n * current element is already detached from the DOM.\n */\nexport function unmount(vnode, parentVNode, skipRemove) {\n\tlet r;\n\tif (options.unmount) options.unmount(vnode);\n\n\tif ((r = vnode.ref)) {\n\t\tif (!r.current || r.current === vnode._dom) {\n\t\t\tapplyRef(r, NULL, parentVNode);\n\t\t}\n\t}\n\n\tif ((r = vnode._component) != NULL) {\n\t\tif (r.componentWillUnmount) {\n\t\t\ttry {\n\t\t\t\tr.componentWillUnmount();\n\t\t\t} catch (e) {\n\t\t\t\toptions._catchError(e, parentVNode);\n\t\t\t}\n\t\t}\n\n\t\tr.base = r._parentDom = NULL;\n\t}\n\n\tif ((r = vnode._children)) {\n\t\tfor (let i = 0; i < r.length; i++) {\n\t\t\tif (r[i]) {\n\t\t\t\tunmount(\n\t\t\t\t\tr[i],\n\t\t\t\t\tparentVNode,\n\t\t\t\t\tskipRemove || typeof vnode.type != 'function'\n\t\t\t\t);\n\t\t\t}\n\t\t}\n\t}\n\n\tif (!skipRemove) {\n\t\tremoveNode(vnode._dom);\n\t}\n\n\tvnode._component = vnode._parent = vnode._dom = UNDEFINED;\n}\n\n/** The `.render()` method for a PFC backing instance. */\nfunction doRender(props, state, context) {\n\treturn this.constructor(props, context);\n}\n", "import { EMPTY_OBJ, NULL } from './constants';\nimport { commitRoot, diff } from './diff/index';\nimport { createElement, Fragment } from './create-element';\nimport options from './options';\nimport { slice } from './util';\n\n/**\n * Render a Preact virtual node into a DOM element\n * @param {import('./internal').ComponentChild} vnode The virtual node to render\n * @param {import('./internal').PreactElement} parentDom The DOM element to render into\n * @param {import('./internal').PreactElement | object} [replaceNode] Optional: Attempt to re-use an\n * existing DOM tree rooted at `replaceNode`\n */\nexport function render(vnode, parentDom, replaceNode) {\n\t// https://github.com/preactjs/preact/issues/3794\n\tif (parentDom == document) {\n\t\tparentDom = document.documentElement;\n\t}\n\n\tif (options._root) options._root(vnode, parentDom);\n\n\t// We abuse the `replaceNode` parameter in `hydrate()` to signal if we are in\n\t// hydration mode or not by passing the `hydrate` function instead of a DOM\n\t// element..\n\tlet isHydrating = typeof replaceNode == 'function';\n\n\t// To be able to support calling `render()` multiple times on the same\n\t// DOM node, we need to obtain a reference to the previous tree. We do\n\t// this by assigning a new `_children` property to DOM nodes which points\n\t// to the last rendered tree. By default this property is not present, which\n\t// means that we are mounting a new tree for the first time.\n\tlet oldVNode = isHydrating\n\t\t? NULL\n\t\t: (replaceNode && replaceNode._children) || parentDom._children;\n\n\tvnode = ((!isHydrating && replaceNode) || parentDom)._children =\n\t\tcreateElement(Fragment, NULL, [vnode]);\n\n\t// List of effects that need to be called after diffing.\n\tlet commitQueue = [],\n\t\trefQueue = [];\n\tdiff(\n\t\tparentDom,\n\t\t// Determine the new vnode tree and store it on the DOM element on\n\t\t// our custom `_children` property.\n\t\tvnode,\n\t\toldVNode || EMPTY_OBJ,\n\t\tEMPTY_OBJ,\n\t\tparentDom.namespaceURI,\n\t\t!isHydrating && replaceNode\n\t\t\t? [replaceNode]\n\t\t\t: oldVNode\n\t\t\t\t? NULL\n\t\t\t\t: parentDom.firstChild\n\t\t\t\t\t? slice.call(parentDom.childNodes)\n\t\t\t\t\t: NULL,\n\t\tcommitQueue,\n\t\t!isHydrating && replaceNode\n\t\t\t? replaceNode\n\t\t\t: oldVNode\n\t\t\t\t? oldVNode._dom\n\t\t\t\t: parentDom.firstChild,\n\t\tisHydrating,\n\t\trefQueue\n\t);\n\n\t// Flush all queued effects\n\tcommitRoot(commitQueue, vnode, refQueue);\n}\n\n/**\n * Update an existing DOM element with data from a Preact virtual node\n * @param {import('./internal').ComponentChild} vnode The virtual node to render\n * @param {import('./internal').PreactElement} parentDom The DOM element to update\n */\nexport function hydrate(vnode, parentDom) {\n\trender(vnode, parentDom, hydrate);\n}\n", "import { assign, slice } from './util';\nimport { createVNode } from './create-element';\nimport { NULL, UNDEFINED } from './constants';\n\n/**\n * Clones the given VNode, optionally adding attributes/props and replacing its\n * children.\n * @param {import('./internal').VNode} vnode The virtual DOM element to clone\n * @param {object} props Attributes/props to add when cloning\n * @param {Array<import('./internal').ComponentChildren>} rest Any additional arguments will be used\n * as replacement children.\n * @returns {import('./internal').VNode}\n */\nexport function cloneElement(vnode, props, children) {\n\tlet normalizedProps = assign({}, vnode.props),\n\t\tkey,\n\t\tref,\n\t\ti;\n\n\tlet defaultProps;\n\n\tif (vnode.type && vnode.type.defaultProps) {\n\t\tdefaultProps = vnode.type.defaultProps;\n\t}\n\n\tfor (i in props) {\n\t\tif (i == 'key') key = props[i];\n\t\telse if (i == 'ref') ref = props[i];\n\t\telse if (props[i] === UNDEFINED && defaultProps !== UNDEFINED) {\n\t\t\tnormalizedProps[i] = defaultProps[i];\n\t\t} else {\n\t\t\tnormalizedProps[i] = props[i];\n\t\t}\n\t}\n\n\tif (arguments.length > 2) {\n\t\tnormalizedProps.children =\n\t\t\targuments.length > 3 ? slice.call(arguments, 2) : children;\n\t}\n\n\treturn createVNode(\n\t\tvnode.type,\n\t\tnormalizedProps,\n\t\tkey || vnode.key,\n\t\tref || vnode.ref,\n\t\tNULL\n\t);\n}\n", "import { NULL } from '../constants';\n\n/**\n * Find the closest error boundary to a thrown error and call it\n * @param {object} error The thrown value\n * @param {import('../internal').VNode} vnode The vnode that threw the error that was caught (except\n * for unmounting when this parameter is the highest parent that was being\n * unmounted)\n * @param {import('../internal').VNode} [oldVNode]\n * @param {import('../internal').ErrorInfo} [errorInfo]\n */\nexport function _catchError(error, vnode, oldVNode, errorInfo) {\n\t/** @type {import('../internal').Component} */\n\tlet component,\n\t\t/** @type {import('../internal').ComponentType} */\n\t\tctor,\n\t\t/** @type {boolean} */\n\t\thandled;\n\n\tfor (; (vnode = vnode._parent); ) {\n\t\tif ((component = vnode._component) && !component._processingException) {\n\t\t\ttry {\n\t\t\t\tctor = component.constructor;\n\n\t\t\t\tif (ctor && ctor.getDerivedStateFromError != NULL) {\n\t\t\t\t\tcomponent.setState(ctor.getDerivedStateFromError(error));\n\t\t\t\t\thandled = component._dirty;\n\t\t\t\t}\n\n\t\t\t\tif (component.componentDidCatch != NULL) {\n\t\t\t\t\tcomponent.componentDidCatch(error, errorInfo || {});\n\t\t\t\t\thandled = component._dirty;\n\t\t\t\t}\n\n\t\t\t\t// This is an error boundary. Mark it as having bailed out, and whether it was mid-hydration.\n\t\t\t\tif (handled) {\n\t\t\t\t\treturn (component._pendingError = component);\n\t\t\t\t}\n\t\t\t} catch (e) {\n\t\t\t\terror = e;\n\t\t\t}\n\t\t}\n\t}\n\n\tthrow error;\n}\n", "/*! tailwindcss v4.3.3 | MIT License | https://tailwindcss.com */@layer properties{@supports (((-webkit-hyphens:none)) and (not (margin-trim:inline))) or ((-moz-orient:inline) and (not (color:rgb(from red r g b)))){*,::backdrop,:after,:before{--tw-leading:initial;--tw-font-weight:initial;--tw-shadow:0 0 #0000;--tw-shadow-color:initial;--tw-shadow-alpha:100%;--tw-inset-shadow:0 0 #0000;--tw-inset-shadow-color:initial;--tw-inset-shadow-alpha:100%;--tw-ring-color:initial;--tw-ring-shadow:0 0 #0000;--tw-inset-ring-color:initial;--tw-inset-ring-shadow:0 0 #0000;--tw-ring-inset:initial;--tw-ring-offset-width:0px;--tw-ring-offset-color:#fff;--tw-ring-offset-shadow:0 0 #0000;--tw-blur:initial;--tw-brightness:initial;--tw-contrast:initial;--tw-grayscale:initial;--tw-hue-rotate:initial;--tw-invert:initial;--tw-opacity:initial;--tw-saturate:initial;--tw-sepia:initial;--tw-drop-shadow:initial;--tw-drop-shadow-color:initial;--tw-drop-shadow-alpha:100%;--tw-drop-shadow-size:initial;--tw-outline-style:solid}}}@layer theme{:host,:root{--color-white:#fff;--spacing:.25rem;--font-weight-normal:400;--font-weight-bold:700;--leading-tight:1.25;--font-teaser:Inter,system-ui,-apple-system,\"Segoe UI\",Roboto,sans-serif;--spacing-tile-w:308px;--spacing-tile-h:400px;--spacing-hero-w:460px;--spacing-hero-h:598px;--text-promo-tile:16px;--text-promo-hero:24px}}@layer base{:host{background:0 0;box-sizing:border-box;display:block;font-family:var(--font-teaser);max-width:100%;width:fit-content}*,:after,:before{box-sizing:border-box;--tw-border-style:solid;border:0 solid}}@layer utilities{.relative{position:relative}.static{position:static}.m-0{margin:0}.mt-1{margin-top:var(--spacing)}.line-clamp-3{-webkit-line-clamp:3;-webkit-box-orient:vertical;display:-webkit-box;overflow:hidden}.contents{display:contents}.flex{display:flex}.h-tile-h{height:var(--spacing-tile-h)}.w-tile-w{width:var(--spacing-tile-w)}.resize{resize:both}.flex-col{flex-direction:column}.items-start{align-items:flex-start}.overflow-hidden{overflow:hidden}.rounded-\\[32px\\]{border-radius:32px}.px-4{padding-inline:calc(var(--spacing)*4)}.pt-5{padding-top:calc(var(--spacing)*5)}.text-\\[22px\\]{font-size:22px}.text-promo-tile{font-size:var(--text-promo-tile)}.leading-6\\.5{--tw-leading:calc(var(--spacing)*6.5);line-height:calc(var(--spacing)*6.5)}.leading-tight{--tw-leading:var(--leading-tight);line-height:var(--leading-tight)}.font-bold{--tw-font-weight:var(--font-weight-bold);font-weight:var(--font-weight-bold)}.font-normal{--tw-font-weight:var(--font-weight-normal);font-weight:var(--font-weight-normal)}.text-white{color:var(--color-white)}.no-underline{text-decoration-line:none}.shadow{--tw-shadow:0 1px 3px 0 var(--tw-shadow-color,#0000001a),0 1px 2px -1px var(--tw-shadow-color,#0000001a);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.-outline-offset-4{outline-offset:-4px}.filter{filter:var(--tw-blur,) var(--tw-brightness,) var(--tw-contrast,) var(--tw-grayscale,) var(--tw-hue-rotate,) var(--tw-invert,) var(--tw-saturate,) var(--tw-sepia,) var(--tw-drop-shadow,)}.focus-visible\\:outline-2:focus-visible{outline-style:var(--tw-outline-style);outline-width:2px}.focus-visible\\:outline-white:focus-visible{outline-color:var(--color-white)}:host([data-promotion=top]) .hero\\:mt-2{margin-top:calc(var(--spacing)*2)}:host([data-promotion=top]) .hero\\:h-hero-h{height:var(--spacing-hero-h)}:host([data-promotion=top]) .hero\\:w-hero-w{width:var(--spacing-hero-w)}:host([data-promotion=top]) .hero\\:text-\\[34px\\]{font-size:34px}:host([data-promotion=top]) .hero\\:text-promo-hero{font-size:var(--text-promo-hero)}:host([data-promotion=top]) .hero\\:leading-10{--tw-leading:calc(var(--spacing)*10);line-height:calc(var(--spacing)*10)}}@property --tw-leading{syntax:\"*\";inherits:false}@property --tw-font-weight{syntax:\"*\";inherits:false}@property --tw-shadow{syntax:\"*\";inherits:false;initial-value:0 0 #0000}@property --tw-shadow-color{syntax:\"*\";inherits:false}@property --tw-shadow-alpha{syntax:\"<percentage>\";inherits:false;initial-value:100%}@property --tw-inset-shadow{syntax:\"*\";inherits:false;initial-value:0 0 #0000}@property --tw-inset-shadow-color{syntax:\"*\";inherits:false}@property --tw-inset-shadow-alpha{syntax:\"<percentage>\";inherits:false;initial-value:100%}@property --tw-ring-color{syntax:\"*\";inherits:false}@property --tw-ring-shadow{syntax:\"*\";inherits:false;initial-value:0 0 #0000}@property --tw-inset-ring-color{syntax:\"*\";inherits:false}@property --tw-inset-ring-shadow{syntax:\"*\";inherits:false;initial-value:0 0 #0000}@property --tw-ring-inset{syntax:\"*\";inherits:false}@property --tw-ring-offset-width{syntax:\"<length>\";inherits:false;initial-value:0}@property --tw-ring-offset-color{syntax:\"*\";inherits:false;initial-value:#fff}@property --tw-ring-offset-shadow{syntax:\"*\";inherits:false;initial-value:0 0 #0000}@property --tw-blur{syntax:\"*\";inherits:false}@property --tw-brightness{syntax:\"*\";inherits:false}@property --tw-contrast{syntax:\"*\";inherits:false}@property --tw-grayscale{syntax:\"*\";inherits:false}@property --tw-hue-rotate{syntax:\"*\";inherits:false}@property --tw-invert{syntax:\"*\";inherits:false}@property --tw-opacity{syntax:\"*\";inherits:false}@property --tw-saturate{syntax:\"*\";inherits:false}@property --tw-sepia{syntax:\"*\";inherits:false}@property --tw-drop-shadow{syntax:\"*\";inherits:false}@property --tw-drop-shadow-color{syntax:\"*\";inherits:false}@property --tw-drop-shadow-alpha{syntax:\"<percentage>\";inherits:false;initial-value:100%}@property --tw-drop-shadow-size{syntax:\"*\";inherits:false}@property --tw-outline-style{syntax:\"*\";inherits:false;initial-value:solid}", "{\n  \"slug\": \"dersncru-meer-erleben-without-form\",\n  \"type\": \"tile\",\n  \"product_slug\": \"dersncru\",\n  \"name\": \"Kreuzfahrt Meer erleben Tile (ohne Suchformular)\",\n  \"commit\": \"CRUJS-3469 Meer erleben Cross Device Teaser tile, without form.\",\n  \"node_version\": \"24.14.1\",\n  \"build_command\": \"pnpm run build\",\n  \"assets\": {\n    \"backgrounds\": {\n      \"desktop\": \"./app/assets/teaser_meer_erleben.webp\"\n    }\n  },\n  \"extraVars\": {\n    \"backgroundColor\": \"#006896\",\n    \"kind\": \"image\"\n  }\n}\n", "import manifest from '../manifest.json';\n\n/** MUST equal the manifest slug \u2014 the build fails otherwise. */\nexport const COMPONENT_TAG = manifest.slug;\n\n/** Class on the server-rendered skeleton root, used to swap it for the live element. */\nexport const SKELETON_CLASS = 'c24-meer-erleben-tile-skeleton';\n\nexport const PROD_ORIGIN = 'https://kreuzfahrt.check24.de';\nexport const TEST_ORIGIN = 'https://kreuzfahrt.check24-test.de';\n\nexport const LINK_PATH = '/ul';\nexport const TRACKING_ID = 'teaser-meererleben-okt26';\n\n/** Tracking \u2014 distinguishes the two scheduled variants in reporting. */\nexport const TRACKING_SOURCE = 'home-teaser-without-form';\n", "{\n  \"headline\": \"Meer erleben!\",\n  \"subline\": \"Traumkreuzfahrten zum Bestpreis\",\n  \"linkLabel\": \"Meer erleben! Traumkreuzfahrten zum Bestpreis\"\n}\n", "{\n  \"headline\": \"Experience the sea!\",\n  \"subline\": \"Dream cruises at the best price\",\n  \"linkLabel\": \"Experience the sea! Dream cruises at the best price\"\n}\n", "import deDE from './de-DE.json';\nimport enGB from './en-GB.json';\nimport type { Locale } from '../../.check24-home/types/.check24';\n\nexport type Translations = typeof deDE;\n\nconst TRANSLATIONS: Record<Locale, Translations> = {\n    'de-DE': deDE,\n    'en-GB': enGB,\n};\n\nexport const getTranslations = (locale: Locale): Translations => TRANSLATIONS[locale];\n", "/**\n * Replaces the server-rendered skeleton with the live custom element.\n *\n * BROWSER API POLICY EXCEPTION \u2014 this is the single place in a package allowed to touch\n * `document`. The Web Component Contract's Browser API policy forbids `document.querySelector*`,\n * but both official reference packages (smily-teaser, dealz-teaser) do exactly this, and\n * the host is not confirmed to remove the skeleton itself. Dropping it risks a skeleton lingering\n * next to the hydrated component in production.\n *\n * `src/scripts/verify-package.mjs` allowlists this file by path. Do not copy this pattern into\n * component code \u2014 see docs/home-web-components-migration.md \u00A7 Risks.\n */\nexport const replaceSkeletonWithComponent = (tagName: string, skeletonClass: string): void => {\n    /* oxlint-disable-next-line no-restricted-globals -- see the policy exception above */\n    const skeletons = document.querySelectorAll(`.${skeletonClass}`);\n\n    skeletons.forEach((element) => {\n        // Newer host pattern: the skeleton sits in a disposable overlay wrapper.\n        const overlay = element.closest(`[data-${skeletonClass}-overlay]`);\n        if (overlay) {\n            overlay.remove();\n\n            return;\n        }\n\n        // Already hydrated.\n        if (element.closest(tagName)) {\n            return;\n        }\n\n        const wrapper = element.closest(`[data-${tagName}-slot]`) ?? element;\n        const replacement = document.createElement(tagName);\n\n        if (wrapper !== element && wrapper instanceof HTMLElement) {\n            Array.from(wrapper.attributes).forEach((attribute) =>\n                replacement.setAttribute(attribute.name, attribute.value),\n            );\n        }\n\n        wrapper.replaceWith(replacement);\n    });\n};\n\n/** Runs the swap as soon as the document is parsed. */\nexport const bootstrapSkeletonSwap = (tagName: string, skeletonClass: string): void => {\n    if (typeof document === 'undefined') {\n        return;\n    }\n\n    if (document.readyState === 'loading') {\n        document.addEventListener('DOMContentLoaded', () =>\n            replaceSkeletonWithComponent(tagName, skeletonClass),\n        );\n\n        return;\n    }\n\n    replaceSkeletonWithComponent(tagName, skeletonClass);\n};\n", "{\n  \"tile\": { \"width\": 308, \"height\": 400, \"radius\": 32 },\n  \"hero\": { \"width\": 460, \"height\": 598, \"radius\": 32 },\n  \"detect\": { \"desktopMinPx\": 769, \"heroSlotMinPx\": 400, \"heroSlotMaxPx\": 560 },\n  \"text\": { \"promoTile\": 16, \"promoHero\": 24, \"maxLines\": 3 },\n  \"form\": {\n    \"maxWidthTile\": 276,\n    \"maxWidthHero\": 428,\n    \"maxHeight\": 257,\n    \"radius\": 16,\n    \"padding\": 16\n  }\n}\n", "import geometry from './teaser-geometry.json';\n\n/** Host-owned: `\"false\"` means the tile is cut off or out of the row. Absent means active. */\nexport const TEASER_ACTIVE_ATTR = 'data-teaser-active';\n\n/** Component-owned: present as `\"top\"` while this tile occupies the Hero slot. */\nexport const PROMOTION_ATTR = 'data-promotion';\n\n/** Asks the host row to slide this tile into view. Inactive overlay path only. */\nexport const TEASER_SNAP_EVENT = 'vanilla-home-teaser-snap';\n\nconst { desktopMinPx, heroSlotMinPx, heroSlotMaxPx } = geometry.detect;\n\n/**\n * Width of the slot we are placed in \u2014 never our own width, because `data-promotion`\n * changes that and the measurement would feed back into itself.\n */\nconst availableSlotWidth = (host: HTMLElement): number => {\n    const parent = host.assignedSlot?.parentElement ?? host.parentElement;\n\n    return parent ? parent.clientWidth : host.clientWidth;\n};\n\n/**\n * The Hero slot is ~460px wide, a Tile ~308px. Above the desktop breakpoint a slot in the\n * `[400, 560)` band is therefore the Hero slot; below it every tile is small.\n */\nexport const isPromotionTop = (host: HTMLElement): boolean => {\n    if (window.innerWidth < desktopMinPx) {\n        return false;\n    }\n\n    const width = availableSlotWidth(host);\n\n    return width >= heroSlotMinPx && width < heroSlotMaxPx;\n};\n\nexport const syncTeaserPromotionAttr = (host: HTMLElement): void => {\n    if (isPromotionTop(host)) {\n        host.setAttribute(PROMOTION_ATTR, 'top');\n\n        return;\n    }\n\n    host.removeAttribute(PROMOTION_ATTR);\n};\n\n/** An absent attribute means the host does not manage activity \u2014 behave as active. */\nexport const isTeaserActive = (host: HTMLElement): boolean =>\n    host.getAttribute(TEASER_ACTIVE_ATTR) !== 'false';\n\n/**\n * Only for an inactive tile whose form control would open an overlay. Link-only and\n * navigate-only tiles must never dispatch this.\n */\nexport const requestCarouselSlide = (host: HTMLElement, detail: Record<string, unknown> = {}): void => {\n    host.dispatchEvent(new CustomEvent(TEASER_SNAP_EVENT, { bubbles: true, composed: true, detail }));\n};\n\nexport interface TeaserLayoutController {\n    sync: () => void;\n    disconnect: () => void;\n}\n\n/**\n * Keeps `data-promotion` in step with the slot. Watches the window for viewport changes and\n * the slot itself for width changes that happen without one (a sibling appearing, the row\n * reflowing). Measurements are coalesced into a single frame.\n */\nexport const attachTeaserLayout = (host: HTMLElement): TeaserLayoutController => {\n    /* oxlint-disable fp/no-mutation -- rAF handle and observer are intentionally mutable state */\n    let frame = 0;\n\n    const sync = () => {\n        cancelAnimationFrame(frame);\n        frame = requestAnimationFrame(() => {\n            frame = 0;\n            syncTeaserPromotionAttr(host);\n        });\n    };\n\n    const breakpoint = window.matchMedia(`(min-width: ${desktopMinPx}px)`);\n    const slot = host.assignedSlot?.parentElement ?? host.parentElement;\n    const resizeObserver = slot ? new ResizeObserver(sync) : null;\n    resizeObserver?.observe(slot as Element);\n\n    window.addEventListener('resize', sync);\n    breakpoint.addEventListener('change', sync);\n    sync();\n\n    return {\n        sync,\n        disconnect() {\n            cancelAnimationFrame(frame);\n            window.removeEventListener('resize', sync);\n            breakpoint.removeEventListener('change', sync);\n            resizeObserver?.disconnect();\n        },\n    };\n    /* oxlint-enable fp/no-mutation */\n};\n", "import type { Environment } from '../../.check24-home/types/.check24';\nimport { LINK_PATH, PROD_ORIGIN, TEST_ORIGIN, TRACKING_ID, TRACKING_SOURCE } from '../constants';\n\n/**\n * Target URL for the teaser, with the tracking parameters the Home requires.\n *\n * The environment comes from the `vanilla-home-env` host attribute. We deliberately do NOT read\n * `location.hostname`: it is not on the Browser API policy allowlist, and the validator rejects it.\n */\nexport const buildUrl = (env: Environment): string => {\n    const origin = env === 'test' ? TEST_ORIGIN : PROD_ORIGIN;\n    const url = new URL(LINK_PATH, origin);\n\n    url.searchParams.set('tid', TRACKING_ID);\n    url.searchParams.set('source', TRACKING_SOURCE);\n\n    return url.toString();\n};\n", "/**\n * Shared primitives for the Vanilla Site Engine Home host contract.\n * Self-contained by design \u2014 the exported ZIP builds standalone on the platform.\n */\n\nexport const LOCALES = ['de-DE', 'en-GB'] as const;\nexport type Locale = (typeof LOCALES)[number];\n\nexport const DEVICE_OUTPUTS = ['desktop', 'mobile', 'tabletapp', 'app'] as const;\nexport type DeviceOutput = (typeof DEVICE_OUTPUTS)[number];\n\nexport const PLATFORMS = ['web', 'app'] as const;\nexport type Platform = (typeof PLATFORMS)[number];\n\n/** Value of the `vanilla-home-env` host attribute. Absent is treated as production. */\nexport const ENVIRONMENTS = ['production', 'test'] as const;\nexport type Environment = (typeof ENVIRONMENTS)[number];\n\n/**\n * Host attributes on the custom element, as rendered by the current Home host.\n *\n * Attribute local names are lowercased by the HTML parser, and `observedAttributes` is matched\n * CASE-SENSITIVELY against that lowercased name \u2014 so every entry here is lowercase. An entry\n * spelled `deviceOutput` would never fire `attributeChangedCallback`.\n */\nexport const HOST_ATTRIBUTES = [\n    'vanilla-home-host-schema-version',\n    'locale',\n    'deviceoutput',\n    'platform',\n    'vanilla-home-env',\n    'sso-env',\n    'country',\n    'language',\n    'reference-timestamp',\n    'account_id',\n    'data-teaser-active',\n] as const;\nexport type HostAttribute = (typeof HOST_ATTRIBUTES)[number];\n", "import {\n    DEVICE_OUTPUTS,\n    ENVIRONMENTS,\n    LOCALES,\n    PLATFORMS,\n    type DeviceOutput,\n    type Environment,\n    type Locale,\n    type Platform,\n} from '../../.check24-home/types/.check24';\n\nconst oneOf = <T extends string>(allowed: readonly T[], fallback: T) => (value: string | null): T =>\n    allowed.includes(value as T) ? (value as T) : fallback;\n\nexport const validateLocale: (value: string | null) => Locale = oneOf(LOCALES, 'de-DE');\nexport const validatePlatform: (value: string | null) => Platform = oneOf(PLATFORMS, 'web');\nexport const validateDeviceOutput: (value: string | null) => DeviceOutput = oneOf(DEVICE_OUTPUTS, 'desktop');\n\n/**\n * `vanilla-home-env` is absent in standalone use and in hosts that do not set it.\n * Defaulting to production is the safe failure mode \u2014 a missing attribute must never\n * silently link to a staging host.\n */\nexport const validateEnvironment: (value: string | null) => Environment = oneOf(ENVIRONMENTS, 'production');\n", "const ENCODED_ENTITIES = /[\"&<]/;\n\n/** @param {string} str */\nexport function encodeEntities(str) {\n\t// Skip all work for strings with no entities needing encoding:\n\tif (str.length === 0 || ENCODED_ENTITIES.test(str) === false) return str;\n\n\tlet last = 0,\n\t\ti = 0,\n\t\tout = '',\n\t\tch = '';\n\n\t// Seek forward in str until the next entity char:\n\tfor (; i < str.length; i++) {\n\t\tswitch (str.charCodeAt(i)) {\n\t\t\tcase 34:\n\t\t\t\tch = '&quot;';\n\t\t\t\tbreak;\n\t\t\tcase 38:\n\t\t\t\tch = '&amp;';\n\t\t\t\tbreak;\n\t\t\tcase 60:\n\t\t\t\tch = '&lt;';\n\t\t\t\tbreak;\n\t\t\tdefault:\n\t\t\t\tcontinue;\n\t\t}\n\t\t// Append skipped/buffered characters and the encoded entity:\n\t\tif (i !== last) out += str.slice(last, i);\n\t\tout += ch;\n\t\t// Start the next seek/buffer after the entity's offset:\n\t\tlast = i + 1;\n\t}\n\tif (i !== last) out += str.slice(last, i);\n\treturn out;\n}\n", "/** Normal hydration that attaches to a DOM tree but does not diff it. */\nexport const MODE_HYDRATE = 1 << 5;\n/** Signifies this VNode suspended on the previous render */\nexport const MODE_SUSPENDED = 1 << 7;\n/** Indicates that this node needs to be inserted while patching children */\nexport const INSERT_VNODE = 1 << 2;\n/** Indicates a VNode has been matched with another VNode in the diff */\nexport const MATCHED = 1 << 1;\n\n/** Reset all mode flags */\nexport const RESET_MODE = ~(MODE_HYDRATE | MODE_SUSPENDED);\n\nexport const SVG_NAMESPACE = 'http://www.w3.org/2000/svg';\nexport const XHTML_NAMESPACE = 'http://www.w3.org/1999/xhtml';\nexport const MATH_NAMESPACE = 'http://www.w3.org/1998/Math/MathML';\n\nexport const NULL = null;\nexport const UNDEFINED = undefined;\nexport const EMPTY_OBJ = /** @type {any} */ ({});\nexport const EMPTY_ARR = [];\nexport const IS_NON_DIMENSIONAL =\n\t/acit|ex(?:s|g|n|p|$)|rph|grid|ows|mnc|ntw|ine[ch]|zoo|^ord|itera/i;\n", "import { options, Fragment } from 'preact';\nimport { encodeEntities } from './utils';\nimport { IS_NON_DIMENSIONAL } from '../../src/constants';\n\nlet vnodeId = 0;\n\nconst isArray = Array.isArray;\n\n/**\n * @fileoverview\n * This file exports various methods that implement Babel's \"automatic\" JSX runtime API:\n * - jsx(type, props, key)\n * - jsxs(type, props, key)\n * - jsxDEV(type, props, key, __source, __self)\n *\n * The implementation of createVNode here is optimized for performance.\n * Benchmarks: https://esbench.com/bench/5f6b54a0b4632100a7dcd2b3\n */\n\n/**\n * JSX.Element factory used by Babel's {runtime:\"automatic\"} JSX transform\n * @param {VNode['type']} type\n * @param {VNode['props']} props\n * @param {VNode['key']} [key]\n * @param {unknown} [isStaticChildren]\n * @param {unknown} [__source]\n * @param {unknown} [__self]\n */\nfunction createVNode(type, props, key, isStaticChildren, __source, __self) {\n\tif (!props) props = {};\n\t// We'll want to preserve `ref` in props to get rid of the need for\n\t// forwardRef components in the future, but that should happen via\n\t// a separate PR.\n\tlet normalizedProps = props,\n\t\tref,\n\t\ti;\n\n\tif ('ref' in normalizedProps) {\n\t\tnormalizedProps = {};\n\t\tfor (i in props) {\n\t\t\tif (i == 'ref') {\n\t\t\t\tref = props[i];\n\t\t\t} else {\n\t\t\t\tnormalizedProps[i] = props[i];\n\t\t\t}\n\t\t}\n\t}\n\n\t/** @type {VNode & { __source: any; __self: any }} */\n\tconst vnode = {\n\t\ttype,\n\t\tprops: normalizedProps,\n\t\tkey,\n\t\tref,\n\t\t_children: null,\n\t\t_parent: null,\n\t\t_depth: 0,\n\t\t_dom: null,\n\t\t_component: null,\n\t\tconstructor: undefined,\n\t\t_original: --vnodeId,\n\t\t_index: -1,\n\t\t_flags: 0,\n\t\t__source,\n\t\t__self\n\t};\n\n\t// If a Component VNode, check for and apply defaultProps.\n\t// Note: `type` is often a String, and can be `undefined` in development.\n\tif (typeof type === 'function' && (ref = type.defaultProps)) {\n\t\tfor (i in ref)\n\t\t\tif (typeof normalizedProps[i] === 'undefined') {\n\t\t\t\tnormalizedProps[i] = ref[i];\n\t\t\t}\n\t}\n\n\tif (options.vnode) options.vnode(vnode);\n\treturn vnode;\n}\n\n/**\n * Create a template vnode. This function is not expected to be\n * used directly, but rather through a precompile JSX transform\n * @param {string[]} templates\n * @param  {Array<string | null | VNode>} exprs\n * @returns {VNode}\n */\nfunction jsxTemplate(templates, ...exprs) {\n\tconst vnode = createVNode(Fragment, { tpl: templates, exprs });\n\t// Bypass render to string top level Fragment optimization\n\tvnode.key = vnode._vnode;\n\treturn vnode;\n}\n\nconst JS_TO_CSS = {};\nconst CSS_REGEX = /[A-Z]/g;\n\n/**\n * Serialize an HTML attribute to a string. This function is not\n * expected to be used directly, but rather through a precompile\n * JSX transform\n * @param {string} name The attribute name\n * @param {*} value The attribute value\n * @returns {string}\n */\nfunction jsxAttr(name, value) {\n\tif (options.attr) {\n\t\tconst result = options.attr(name, value);\n\t\tif (typeof result === 'string') return result;\n\t}\n\n\tif (name === 'ref' || name === 'key') return '';\n\tif (name === 'style' && typeof value === 'object') {\n\t\tlet str = '';\n\t\tfor (let prop in value) {\n\t\t\tlet val = value[prop];\n\t\t\tif (val != null && val !== '') {\n\t\t\t\tconst name =\n\t\t\t\t\tprop[0] == '-'\n\t\t\t\t\t\t? prop\n\t\t\t\t\t\t: JS_TO_CSS[prop] ||\n\t\t\t\t\t\t\t(JS_TO_CSS[prop] = prop.replace(CSS_REGEX, '-$&').toLowerCase());\n\n\t\t\t\tlet suffix = ';';\n\t\t\t\tif (\n\t\t\t\t\ttypeof val === 'number' &&\n\t\t\t\t\t// Exclude custom-attributes\n\t\t\t\t\t!name.startsWith('--') &&\n\t\t\t\t\t!IS_NON_DIMENSIONAL.test(name)\n\t\t\t\t) {\n\t\t\t\t\tsuffix = 'px;';\n\t\t\t\t}\n\t\t\t\tstr = str + name + ':' + val + suffix;\n\t\t\t}\n\t\t}\n\t\treturn name + '=\"' + str + '\"';\n\t}\n\n\tif (\n\t\tvalue == null ||\n\t\tvalue === false ||\n\t\ttypeof value === 'function' ||\n\t\ttypeof value === 'object'\n\t) {\n\t\treturn '';\n\t} else if (value === true) return name;\n\n\treturn name + '=\"' + encodeEntities(value) + '\"';\n}\n\n/**\n * Escape a dynamic child passed to `jsxTemplate`. This function\n * is not expected to be used directly, but rather through a\n * precompile JSX transform\n * @param {*} value\n * @returns {string | null | VNode | Array<string | null | VNode>}\n */\nfunction jsxEscape(value) {\n\tif (\n\t\tvalue == null ||\n\t\ttypeof value === 'boolean' ||\n\t\ttypeof value === 'function'\n\t) {\n\t\treturn null;\n\t}\n\n\tif (typeof value === 'object') {\n\t\t// Check for VNode\n\t\tif (value.constructor === undefined) return value;\n\n\t\tif (isArray(value)) {\n\t\t\tfor (let i = 0; i < value.length; i++) {\n\t\t\t\tvalue[i] = jsxEscape(value[i]);\n\t\t\t}\n\t\t\treturn value;\n\t\t}\n\t}\n\n\treturn encodeEntities('' + value);\n}\n\nexport {\n\tcreateVNode as jsx,\n\tcreateVNode as jsxs,\n\tcreateVNode as jsxDEV,\n\tFragment,\n\t// precompiled JSX transform\n\tjsxTemplate,\n\tjsxAttr,\n\tjsxEscape\n};\n", "import { render } from 'preact';\n\nimport styles from './client.css';\nimport { COMPONENT_TAG, SKELETON_CLASS } from './constants';\nimport { getTranslations } from './i18n/utils';\nimport { bootstrapSkeletonSwap } from './shared/replace-skeleton-with-component';\nimport { attachTeaserLayout, type TeaserLayoutController } from './shared/teaser-carousel-layout';\nimport { buildUrl } from './utils/build-url';\nimport { validateEnvironment, validateLocale } from './utils/validate-attributes';\nimport type { Environment, Locale } from '../.check24-home/types/.check24';\nimport type { C24HomeGlobal, HomeClientComponentElement } from '../.check24-home/types/client';\n\n/**\n * The ship artwork lives in the host-rendered background layer; the component renders headline\n * and subline on top. The whole surface is a link \u2014 this variant has no input field\n * (Teaser Specification \u00A7 Link behaviour).\n */\nconst MeerErlebenTile = ({ locale, env }: { locale: Locale; env: Environment }) => {\n    const text = getTranslations(locale);\n\n    return (\n        <a\n            className=\"flex h-tile-h w-tile-w flex-col items-start overflow-hidden rounded-[32px] px-4 pt-5 text-white no-underline -outline-offset-4 focus-visible:outline-2 focus-visible:outline-white hero:h-hero-h hero:w-hero-w\"\n            href={buildUrl(env)}\n            aria-label={text.linkLabel}\n        >\n            <p className=\"m-0 line-clamp-3 text-[22px] font-bold leading-6.5 hero:text-[34px] hero:leading-10\">\n                {text.headline}\n            </p>\n            <p className=\"m-0 mt-1 line-clamp-3 text-promo-tile font-normal leading-tight hero:mt-2 hero:text-promo-hero\">\n                {text.subline}\n            </p>\n        </a>\n    );\n};\n\nclass MeerErlebenTileElement extends HTMLElement implements HomeClientComponentElement {\n    private shadowRootNode: ShadowRoot | null = null;\n    private layout: TeaserLayoutController | null = null;\n    private locale: Locale = 'de-DE';\n    private env: Environment = 'production';\n\n    /** Lowercase only \u2014 matched case-sensitively against the lowercased attribute local name. */\n    static get observedAttributes() {\n        return ['locale', 'language', 'deviceoutput', 'platform', 'vanilla-home-env', 'data-teaser-active'];\n    }\n\n    connectedCallback() {\n        /* oxlint-disable fp/no-mutation -- custom element instance state */\n        if (!this.shadowRootNode) {\n            this.shadowRootNode = this.attachShadow({ mode: 'closed' });\n        }\n        this.applyAttributes();\n        this.mount();\n        this.layout ??= attachTeaserLayout(this);\n        /* oxlint-enable fp/no-mutation */\n    }\n\n    disconnectedCallback() {\n        /* oxlint-disable fp/no-mutation -- teardown */\n        this.layout?.disconnect();\n        this.layout = null;\n        /* oxlint-enable fp/no-mutation */\n\n        if (this.shadowRootNode) {\n            render(null, this.shadowRootNode);\n        }\n    }\n\n    attributeChangedCallback(name: string, oldValue: string | null, newValue: string | null) {\n        if (oldValue === newValue) {\n            return;\n        }\n\n        // Row visibility changed: re-measure the slot, never re-render.\n        if (name === 'data-teaser-active') {\n            this.layout?.sync();\n\n            return;\n        }\n\n        if (this.shadowRootNode) {\n            this.applyAttributes();\n            this.mount();\n        }\n    }\n\n    private mount() {\n        if (!this.shadowRootNode) {\n            return;\n        }\n\n        render(\n            <>\n                <style>{styles}</style>\n                <MeerErlebenTile locale={this.locale} env={this.env} />\n            </>,\n            this.shadowRootNode,\n        );\n    }\n\n    private applyAttributes() {\n        /* oxlint-disable fp/no-mutation -- custom element instance state */\n        const validator = (globalThis as { C24Home?: C24HomeGlobal }).C24Home?.validateAttributes;\n        const validated = typeof validator === 'function' ? validator(this.attributes) : {};\n\n        /*\n         * Fall through to the raw attributes per key rather than returning early on the\n         * validator: the host does not know our accepted values and is not guaranteed to\n         * surface every key. Losing `env` here would make a teaser on the TEST host link to\n         * production, which the `vanilla-home-env` attribute was set precisely to prevent.\n         */\n        this.locale = validateLocale(\n            validated.locale ?? this.getAttribute('locale') ?? this.getAttribute('language'),\n        );\n        this.env = validateEnvironment(validated.env ?? this.getAttribute('vanilla-home-env'));\n        /* oxlint-enable fp/no-mutation */\n    }\n}\n\ncustomElements.define(__COMPONENT_TAG__, MeerErlebenTileElement);\n\nbootstrapSkeletonSwap(COMPONENT_TAG, SKELETON_CLASS);\n"],
  "mappings": "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",
  "names": ["slice", "options", "vnodeId", "isValidElement", "rerenderQueue", "prevDebounce", "defer", "depthSort", "CAPTURE_REGEX", "eventClock", "eventProxy", "eventProxyCapture", "i", "EMPTY_OBJ", "EMPTY_ARR", "IS_NON_DIMENSIONAL", "isArray", "Array", "assign", "obj", "props", "removeNode", "node", "parentNode", "removeChild", "createElement", "type", "children", "key", "ref", "normalizedProps", "arguments", "length", "call", "defaultProps", "createVNode", "original", "vnode", "__k", "__", "__b", "__e", "__c", "constructor", "__v", "__i", "__u", "Fragment", "props", "children", "BaseComponent", "context", "this", "getDomSibling", "vnode", "childIndex", "__", "__i", "sibling", "__k", "length", "__e", "type", "updateParentDomPointers", "i", "child", "__c", "base", "enqueueRender", "c", "__d", "rerenderQueue", "push", "process", "__r", "prevDebounce", "options", "debounceRendering", "defer", "component", "newVNode", "oldVNode", "oldDom", "commitQueue", "refQueue", "l", "sort", "depthSort", "shift", "__v", "__P", "assign", "diff", "__n", "namespaceURI", "__u", "commitRoot", "diffChildren", "parentDom", "renderResult", "newParentVNode", "oldParentVNode", "globalContext", "namespace", "excessDomChildren", "isHydrating", "childVNode", "newDom", "firstChildDom", "result", "oldChildren", "EMPTY_ARR", "newChildrenLength", "constructNewChildrenArray", "EMPTY_OBJ", "ref", "applyRef", "insert", "nextSibling", "skewedIndex", "matchingIndex", "oldChildrenLength", "remainingOldChildren", "skew", "Array", "constructor", "String", "createVNode", "isArray", "__b", "key", "findMatchingIndex", "unmount", "parentVNode", "contains", "insertBefore", "nodeType", "findMatchingIndex", "childVNode", "oldChildren", "skewedIndex", "remainingOldChildren", "x", "y", "key", "type", "oldVNode", "__u", "length", "setStyle", "style", "value", "setProperty", "IS_NON_DIMENSIONAL", "test", "dom", "name", "oldValue", "namespace", "useCapture", "o", "cssText", "replace", "CAPTURE_REGEX", "toLowerCase", "slice", "l", "_attached", "eventClock", "addEventListener", "eventProxyCapture", "eventProxy", "removeEventListener", "e", "removeAttribute", "setAttribute", "createEventProxy", "this", "eventHandler", "_dispatched", "options", "event", "diff", "parentDom", "newVNode", "globalContext", "excessDomChildren", "commitQueue", "oldDom", "isHydrating", "refQueue", "tmp", "c", "isNew", "oldProps", "oldState", "snapshot", "clearProcessingException", "newProps", "isClassComponent", "provider", "componentContext", "i", "renderHook", "count", "isTopLevelFragment", "renderResult", "newType", "constructor", "__e", "__b", "outer", "props", "prototype", "render", "contextType", "__c", "__", "__E", "BaseComponent", "doRender", "sub", "state", "context", "__n", "__d", "__h", "_sb", "__s", "getDerivedStateFromProps", "assign", "__v", "componentWillMount", "componentDidMount", "push", "componentWillReceiveProps", "shouldComponentUpdate", "__k", "some", "vnode", "componentWillUpdate", "componentDidUpdate", "__P", "__r", "getChildContext", "getSnapshotBeforeUpdate", "Fragment", "children", "diffChildren", "isArray", "base", "then", "MODE_HYDRATE", "nodeType", "nextSibling", "indexOf", "removeNode", "diffElementNodes", "diffed", "commitRoot", "root", "applyRef", "cb", "call", "newHtml", "oldHtml", "newChildren", "inputValue", "checked", "localName", "document", "createTextNode", "createElementNS", "is", "__m", "data", "childNodes", "EMPTY_OBJ", "attributes", "__html", "innerHTML", "content", "getDomSibling", "ref", "hasRefUnmount", "current", "unmount", "parentVNode", "skipRemove", "r", "componentWillUnmount", "replaceNode", "documentElement", "createElement", "namespaceURI", "firstChild", "slice", "EMPTY_ARR", "options", "__e", "error", "vnode", "oldVNode", "errorInfo", "component", "ctor", "handled", "__", "__c", "constructor", "getDerivedStateFromError", "setState", "__d", "componentDidCatch", "__E", "e", "vnodeId", "isValidElement", "undefined", "BaseComponent", "prototype", "update", "callback", "s", "this", "__s", "state", "assign", "props", "__v", "_sb", "push", "enqueueRender", "forceUpdate", "__h", "render", "Fragment", "rerenderQueue", "defer", "Promise", "then", "bind", "resolve", "setTimeout", "depthSort", "a", "b", "__b", "process", "__r", "CAPTURE_REGEX", "eventClock", "eventProxy", "createEventProxy", "eventProxyCapture", "i", "client_default", "manifest_default", "COMPONENT_TAG", "manifest_default", "SKELETON_CLASS", "PROD_ORIGIN", "TEST_ORIGIN", "LINK_PATH", "TRACKING_ID", "TRACKING_SOURCE", "de_DE_default", "en_GB_default", "TRANSLATIONS", "de_DE_default", "en_GB_default", "getTranslations", "locale", "replaceSkeletonWithComponent", "tagName", "skeletonClass", "element", "overlay", "wrapper", "replacement", "attribute", "bootstrapSkeletonSwap", "teaser_geometry_default", "PROMOTION_ATTR", "desktopMinPx", "heroSlotMinPx", "heroSlotMaxPx", "teaser_geometry_default", "availableSlotWidth", "host", "parent", "isPromotionTop", "width", "syncTeaserPromotionAttr", "PROMOTION_ATTR", "attachTeaserLayout", "host", "frame", "sync", "syncTeaserPromotionAttr", "breakpoint", "desktopMinPx", "slot", "resizeObserver", "buildUrl", "env", "origin", "TEST_ORIGIN", "PROD_ORIGIN", "url", "LINK_PATH", "TRACKING_ID", "TRACKING_SOURCE", "LOCALES", "DEVICE_OUTPUTS", "PLATFORMS", "ENVIRONMENTS", "oneOf", "allowed", "fallback", "value", "validateLocale", "LOCALES", "validatePlatform", "PLATFORMS", "validateDeviceOutput", "DEVICE_OUTPUTS", "validateEnvironment", "ENVIRONMENTS", "vnodeId", "createVNode", "type", "props", "key", "isStaticChildren", "__source", "__self", "ref", "i", "normalizedProps", "vnode", "__k", "__", "__b", "__e", "__c", "constructor", "__v", "vnodeId", "__i", "__u", "defaultProps", "options", "MeerErlebenTile", "locale", "env", "text", "getTranslations", "u", "buildUrl", "MeerErlebenTileElement", "__publicField", "attachTeaserLayout", "D", "name", "oldValue", "newValue", "k", "client_default", "validator", "validated", "validateLocale", "validateEnvironment", "bootstrapSkeletonSwap", "COMPONENT_TAG", "SKELETON_CLASS"]
}
