UNPKG

@stencil/core

Version:

A Compiler for Web Components and Progressive Web Apps

1,482 lines (1,452 loc) • 167 kB
"use strict"; var __defProp = Object.defineProperty; var __getOwnPropDesc = Object.getOwnPropertyDescriptor; var __getOwnPropNames = Object.getOwnPropertyNames; var __hasOwnProp = Object.prototype.hasOwnProperty; var __export = (target, all) => { for (var name in all) __defProp(target, name, { get: all[name], enumerable: true }); }; var __copyProps = (to, from, except, desc) => { if (from && typeof from === "object" || typeof from === "function") { for (let key of __getOwnPropNames(from)) if (!__hasOwnProp.call(to, key) && key !== except) __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable }); } return to; }; var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod); // src/testing/platform/index.ts var index_exports = {}; __export(index_exports, { Build: () => Build, Env: () => import_app_data22.Env, Fragment: () => Fragment, Host: () => Host, addHostEventListeners: () => addHostEventListeners, bootstrapLazy: () => bootstrapLazy, connectedCallback: () => connectedCallback, consoleDevError: () => consoleDevError, consoleDevInfo: () => consoleDevInfo, consoleDevWarn: () => consoleDevWarn, consoleError: () => consoleError, createEvent: () => createEvent, defineCustomElement: () => defineCustomElement, disconnectedCallback: () => disconnectedCallback, flushAll: () => flushAll, flushLoadModule: () => flushLoadModule, flushQueue: () => flushQueue, forceModeUpdate: () => forceModeUpdate, forceUpdate: () => forceUpdate, getAssetPath: () => getAssetPath, getElement: () => getElement, getHostRef: () => getHostRef, getMode: () => getMode, getRenderingRef: () => getRenderingRef, getValue: () => getValue, h: () => h, insertVdomAnnotations: () => insertVdomAnnotations, isMemberInElement: () => isMemberInElement, loadModule: () => loadModule, modeResolutionChain: () => modeResolutionChain, nextTick: () => nextTick, parsePropertyValue: () => parsePropertyValue, plt: () => plt, postUpdateComponent: () => postUpdateComponent, proxyComponent: () => proxyComponent, proxyCustomElement: () => proxyCustomElement, readTask: () => readTask, registerComponents: () => registerComponents, registerHost: () => registerHost, registerInstance: () => registerInstance, registerModule: () => registerModule, render: () => render, renderVdom: () => renderVdom, resetPlatform: () => resetPlatform, setAssetPath: () => setAssetPath, setErrorHandler: () => setErrorHandler, setMode: () => setMode, setNonce: () => setNonce, setPlatformHelpers: () => setPlatformHelpers, setPlatformOptions: () => setPlatformOptions, setSupportsShadowDom: () => setSupportsShadowDom, setValue: () => setValue, startAutoApplyChanges: () => startAutoApplyChanges, stopAutoApplyChanges: () => stopAutoApplyChanges, styles: () => styles, supportsConstructableStylesheets: () => supportsConstructableStylesheets, supportsListenerOptions: () => supportsListenerOptions, supportsShadow: () => supportsShadow, win: () => win, writeTask: () => writeTask }); module.exports = __toCommonJS(index_exports); // src/testing/platform/testing-build.ts var Build = { isDev: true, isBrowser: false, isServer: true, isTesting: true }; // src/testing/platform/testing-constants.ts var styles = /* @__PURE__ */ new Map(); var modeResolutionChain = []; var cstrs = /* @__PURE__ */ new Map(); var queuedTicks = []; var queuedWriteTasks = []; var queuedReadTasks = []; var moduleLoaded = /* @__PURE__ */ new Map(); var queuedLoadModules = []; var caughtErrors = []; // src/testing/platform/testing-host-ref.ts var getHostRef = (elm) => { if (elm.__stencil__getHostRef) { return elm.__stencil__getHostRef(); } return void 0; }; var registerInstance = (lazyInstance, hostRef) => { if (lazyInstance == null || lazyInstance.constructor == null) { throw new Error(`Invalid component constructor`); } if (hostRef == null) { const Cstr = lazyInstance.constructor; const tagName = Cstr.COMPILER_META && Cstr.COMPILER_META.tagName ? Cstr.COMPILER_META.tagName : "div"; const elm = document.createElement(tagName); registerHost(elm, { $flags$: 0, $tagName$: tagName }); hostRef = getHostRef(elm); } lazyInstance.__stencil__getHostRef = () => hostRef; hostRef.$lazyInstance$ = lazyInstance; }; var registerHost = (elm, cmpMeta) => { const hostRef = { $flags$: 0, $hostElement$: elm, $cmpMeta$: cmpMeta, $instanceValues$: /* @__PURE__ */ new Map(), $renderCount$: 0 }; hostRef.$onInstancePromise$ = new Promise((r) => hostRef.$onInstanceResolve$ = r); hostRef.$onReadyPromise$ = new Promise((r) => hostRef.$onReadyResolve$ = r); elm["s-p"] = []; elm["s-rc"] = []; elm.__stencil__getHostRef = () => hostRef; }; // src/testing/platform/testing-log.ts var customError; var defaultConsoleError = (e) => { caughtErrors.push(e); }; var consoleError = (e, el) => (customError || defaultConsoleError)(e, el); var consoleDevError = (...e) => { caughtErrors.push(new Error(e.join(", "))); }; var consoleDevWarn = (...args) => { const params = args.filter((a) => typeof a === "string" || typeof a === "number" || typeof a === "boolean"); console.warn(...params); }; var consoleDevInfo = (..._) => { }; var setErrorHandler = (handler) => customError = handler; // src/testing/platform/testing-task-queue.ts function resetTaskQueue() { queuedTicks.length = 0; queuedWriteTasks.length = 0; queuedReadTasks.length = 0; moduleLoaded.clear(); queuedLoadModules.length = 0; caughtErrors.length = 0; } var nextTick = (cb) => { queuedTicks.push(cb); }; function flushTicks() { return new Promise((resolve, reject) => { function drain() { try { if (queuedTicks.length > 0) { const writeTasks = queuedTicks.slice(); queuedTicks.length = 0; let cb; while (cb = writeTasks.shift()) { cb(Date.now()); } } if (queuedTicks.length > 0) { process.nextTick(drain); } else { resolve(); } } catch (e) { reject(`flushTicks: ${e}`); } } process.nextTick(drain); }); } function writeTask(cb) { queuedWriteTasks.push(cb); } function readTask(cb) { queuedReadTasks.push(cb); } function flushQueue() { return new Promise((resolve, reject) => { async function drain() { try { if (queuedReadTasks.length > 0) { const readTasks = queuedReadTasks.slice(); queuedReadTasks.length = 0; let cb; while (cb = readTasks.shift()) { const result = cb(Date.now()); if (result != null && typeof result.then === "function") { await result; } } } if (queuedWriteTasks.length > 0) { const writeTasks = queuedWriteTasks.slice(); queuedWriteTasks.length = 0; let cb; while (cb = writeTasks.shift()) { const result = cb(Date.now()); if (result != null && typeof result.then === "function") { await result; } } } if (queuedReadTasks.length + queuedWriteTasks.length > 0) { process.nextTick(drain); } else { resolve(); } } catch (e) { reject(`flushQueue: ${e}`); } } process.nextTick(drain); }); } async function flushAll() { while (queuedTicks.length + queuedLoadModules.length + queuedWriteTasks.length + queuedReadTasks.length > 0) { await flushTicks(); await flushLoadModule(); await flushQueue(); } if (caughtErrors.length > 0) { const err2 = caughtErrors[0]; if (err2 == null) { throw new Error("Error!"); } if (typeof err2 === "string") { throw new Error(err2); } throw err2; } return new Promise((resolve) => process.nextTick(resolve)); } function loadModule(cmpMeta, _hostRef, _hmrVersionId) { return new Promise((resolve) => { queuedLoadModules.push({ bundleId: cmpMeta.$lazyBundleId$, resolve: () => resolve(moduleLoaded.get(cmpMeta.$lazyBundleId$)) }); }); } function flushLoadModule(bundleId) { return new Promise((resolve, reject) => { try { process.nextTick(() => { if (bundleId != null) { for (let i2 = 0; i2 < queuedLoadModules.length; i2++) { if (queuedLoadModules[i2].bundleId === bundleId) { queuedLoadModules[i2].resolve(); queuedLoadModules.splice(i2, 1); i2--; } } } else { let queuedLoadModule; while (queuedLoadModule = queuedLoadModules.shift()) { queuedLoadModule.resolve(); } } resolve(); }); } catch (e) { reject(`flushLoadModule: ${e}`); } }); } // src/testing/platform/testing-window.ts var import_mock_doc = require("../../mock-doc/index.cjs"); var win = (0, import_mock_doc.setupGlobal)(global); // src/testing/platform/testing-platform.ts var supportsShadow = true; var plt = { $flags$: 0, $resourcesUrl$: "", jmp: (h2) => h2(), raf: (h2) => requestAnimationFrame(h2), ael: (el, eventName, listener, opts) => el.addEventListener(eventName, listener, opts), rel: (el, eventName, listener, opts) => el.removeEventListener(eventName, listener, opts), ce: (eventName, opts) => new win.CustomEvent(eventName, opts) }; var setPlatformHelpers = (helpers) => { Object.assign(plt, helpers); }; var supportsListenerOptions = true; var supportsConstructableStylesheets = false; var setSupportsShadowDom = (supports) => { supportsShadow = supports; }; function resetPlatform(defaults = {}) { if (win && typeof win.close === "function") { win.close(); } styles.clear(); plt.$flags$ = 0; Object.assign(plt, defaults); if (plt.$orgLocNodes$ != null) { plt.$orgLocNodes$.clear(); plt.$orgLocNodes$ = void 0; } win.location.href = plt.$resourcesUrl$ = `http://testing.stenciljs.com/`; resetTaskQueue(); stopAutoApplyChanges(); cstrs.clear(); } var isAutoApplyingChanges = false; var autoApplyTimer = void 0; function stopAutoApplyChanges() { isAutoApplyingChanges = false; if (autoApplyTimer) { clearTimeout(autoApplyTimer); autoApplyTimer = void 0; } } async function startAutoApplyChanges() { isAutoApplyingChanges = true; flushAll().then(() => { if (isAutoApplyingChanges) { autoApplyTimer = setTimeout(() => { startAutoApplyChanges(); }, 100); } }); } var registerComponents = (Cstrs) => { Cstrs.filter((Cstr) => Cstr.COMPILER_META).forEach((Cstr) => { cstrs.set(Cstr.COMPILER_META.tagName, Cstr); }); }; function registerModule(bundleId, Cstr) { moduleLoaded.set(bundleId, Cstr); } var isMemberInElement = (elm, memberName) => { if (elm != null) { if (memberName in elm) { return true; } const nodeName = elm.nodeName; if (nodeName) { const cstr = cstrs.get(nodeName.toLowerCase()); if (cstr != null && cstr.COMPILER_META != null && cstr.COMPILER_META.properties != null) { return cstr.COMPILER_META.properties.some((p) => p.name === memberName); } } } return false; }; // src/testing/platform/index.ts var import_app_data22 = require("@stencil/core/internal/app-data"); // src/runtime/asset-path.ts var getAssetPath = (path) => { const assetUrl = new URL(path, plt.$resourcesUrl$); return assetUrl.origin !== win.location.origin ? assetUrl.href : assetUrl.pathname; }; var setAssetPath = (path) => plt.$resourcesUrl$ = path; // src/runtime/bootstrap-custom-element.ts var import_app_data19 = require("@stencil/core/internal/app-data"); // src/utils/constants.ts var SVG_NS = "http://www.w3.org/2000/svg"; var HTML_NS = "http://www.w3.org/1999/xhtml"; var PrimitiveType = /* @__PURE__ */ ((PrimitiveType2) => { PrimitiveType2["Undefined"] = "undefined"; PrimitiveType2["Null"] = "null"; PrimitiveType2["String"] = "string"; PrimitiveType2["Number"] = "number"; PrimitiveType2["SpecialNumber"] = "number"; PrimitiveType2["Boolean"] = "boolean"; PrimitiveType2["BigInt"] = "bigint"; return PrimitiveType2; })(PrimitiveType || {}); var NonPrimitiveType = /* @__PURE__ */ ((NonPrimitiveType2) => { NonPrimitiveType2["Array"] = "array"; NonPrimitiveType2["Date"] = "date"; NonPrimitiveType2["Map"] = "map"; NonPrimitiveType2["Object"] = "object"; NonPrimitiveType2["RegularExpression"] = "regexp"; NonPrimitiveType2["Set"] = "set"; NonPrimitiveType2["Channel"] = "channel"; NonPrimitiveType2["Symbol"] = "symbol"; return NonPrimitiveType2; })(NonPrimitiveType || {}); var TYPE_CONSTANT = "type"; var VALUE_CONSTANT = "value"; var SERIALIZED_PREFIX = "serialized:"; // src/utils/helpers.ts var isDef = (v) => v != null && v !== void 0; var isComplexType = (o) => { o = typeof o; return o === "object" || o === "function"; }; // src/utils/query-nonce-meta-tag-content.ts function queryNonceMetaTagContent(doc) { var _a, _b, _c; return (_c = (_b = (_a = doc.head) == null ? void 0 : _a.querySelector('meta[name="csp-nonce"]')) == null ? void 0 : _b.getAttribute("content")) != null ? _c : void 0; } // src/utils/regular-expression.ts var escapeRegExpSpecialCharacters = (text) => { return text.replace(/[.*+?^${}()|[\]\\]/g, "\\$&"); }; // src/utils/remote-value.ts var RemoteValue = class _RemoteValue { /** * Deserializes a LocalValue serialized object back to its original JavaScript representation * * @param serialized The serialized LocalValue object * @returns The original JavaScript value/object */ static fromLocalValue(serialized) { const type = serialized[TYPE_CONSTANT]; const value = VALUE_CONSTANT in serialized ? serialized[VALUE_CONSTANT] : void 0; switch (type) { case "string" /* String */: return value; case "boolean" /* Boolean */: return value; case "bigint" /* BigInt */: return BigInt(value); case "undefined" /* Undefined */: return void 0; case "null" /* Null */: return null; case "number" /* Number */: if (value === "NaN") return NaN; if (value === "-0") return -0; if (value === "Infinity") return Infinity; if (value === "-Infinity") return -Infinity; return value; case "array" /* Array */: return value.map((item) => _RemoteValue.fromLocalValue(item)); case "date" /* Date */: return new Date(value); case "map" /* Map */: const map2 = /* @__PURE__ */ new Map(); for (const [key, val] of value) { const deserializedKey = typeof key === "object" && key !== null ? _RemoteValue.fromLocalValue(key) : key; const deserializedValue = _RemoteValue.fromLocalValue(val); map2.set(deserializedKey, deserializedValue); } return map2; case "object" /* Object */: const obj = {}; for (const [key, val] of value) { obj[key] = _RemoteValue.fromLocalValue(val); } return obj; case "regexp" /* RegularExpression */: const { pattern, flags } = value; return new RegExp(pattern, flags); case "set" /* Set */: const set = /* @__PURE__ */ new Set(); for (const item of value) { set.add(_RemoteValue.fromLocalValue(item)); } return set; case "symbol" /* Symbol */: return Symbol(value); default: throw new Error(`Unsupported type: ${type}`); } } /** * Utility method to deserialize multiple LocalValues at once * * @param serializedValues Array of serialized LocalValue objects * @returns Array of deserialized JavaScript values */ static fromLocalValueArray(serializedValues) { return serializedValues.map((value) => _RemoteValue.fromLocalValue(value)); } /** * Verifies if the given object matches the structure of a serialized LocalValue * * @param obj Object to verify * @returns boolean indicating if the object has LocalValue structure */ static isLocalValueObject(obj) { if (typeof obj !== "object" || obj === null) { return false; } if (!obj.hasOwnProperty(TYPE_CONSTANT)) { return false; } const type = obj[TYPE_CONSTANT]; const hasTypeProperty = Object.values({ ...PrimitiveType, ...NonPrimitiveType }).includes(type); if (!hasTypeProperty) { return false; } if (type !== "null" /* Null */ && type !== "undefined" /* Undefined */) { return obj.hasOwnProperty(VALUE_CONSTANT); } return true; } }; // src/utils/result.ts var result_exports = {}; __export(result_exports, { err: () => err, map: () => map, ok: () => ok, unwrap: () => unwrap, unwrapErr: () => unwrapErr }); var ok = (value) => ({ isOk: true, isErr: false, value }); var err = (value) => ({ isOk: false, isErr: true, value }); function map(result, fn) { if (result.isOk) { const val = fn(result.value); if (val instanceof Promise) { return val.then((newVal) => ok(newVal)); } else { return ok(val); } } if (result.isErr) { const value = result.value; return err(value); } throw "should never get here"; } var unwrap = (result) => { if (result.isOk) { return result.value; } else { throw result.value; } }; var unwrapErr = (result) => { if (result.isErr) { return result.value; } else { throw result.value; } }; // src/utils/serialize.ts function deserializeProperty(value) { if (typeof value !== "string" || !value.startsWith(SERIALIZED_PREFIX)) { return value; } return RemoteValue.fromLocalValue(JSON.parse(atob(value.slice(SERIALIZED_PREFIX.length)))); } // src/utils/util.ts var lowerPathParam = (fn) => (p) => fn(p.toLowerCase()); var isDtsFile = lowerPathParam((p) => p.endsWith(".d.ts") || p.endsWith(".d.mts") || p.endsWith(".d.cts")); var isTsFile = lowerPathParam( (p) => !isDtsFile(p) && (p.endsWith(".ts") || p.endsWith(".mts") || p.endsWith(".cts")) ); var isTsxFile = lowerPathParam( (p) => p.endsWith(".tsx") || p.endsWith(".mtsx") || p.endsWith(".ctsx") ); var isJsxFile = lowerPathParam( (p) => p.endsWith(".jsx") || p.endsWith(".mjsx") || p.endsWith(".cjsx") ); var isJsFile = lowerPathParam((p) => p.endsWith(".js") || p.endsWith(".mjs") || p.endsWith(".cjs")); // src/runtime/connected-callback.ts var import_app_data17 = require("@stencil/core/internal/app-data"); // src/runtime/client-hydrate.ts var import_app_data5 = require("@stencil/core/internal/app-data"); // src/runtime/dom-extras.ts var import_app_data2 = require("@stencil/core/internal/app-data"); // src/runtime/slot-polyfill-utils.ts var import_app_data = require("@stencil/core/internal/app-data"); // src/runtime/runtime-constants.ts var CONTENT_REF_ID = "r"; var ORG_LOCATION_ID = "o"; var SLOT_NODE_ID = "s"; var TEXT_NODE_ID = "t"; var COMMENT_NODE_ID = "c"; var HYDRATE_ID = "s-id"; var HYDRATED_STYLE_ID = "sty-id"; var HYDRATE_CHILD_ID = "c-id"; var HYDRATED_CSS = "{visibility:hidden}.hydrated{visibility:inherit}"; var STENCIL_DOC_DATA = "_stencilDocData"; var DEFAULT_DOC_DATA = { hostIds: 0, rootLevelIds: 0, staticComponents: /* @__PURE__ */ new Set() }; var SLOT_FB_CSS = "slot-fb{display:contents}slot-fb[hidden]{display:none}"; var XLINK_NS = "http://www.w3.org/1999/xlink"; var FORM_ASSOCIATED_CUSTOM_ELEMENT_CALLBACKS = [ "formAssociatedCallback", "formResetCallback", "formDisabledCallback", "formStateRestoreCallback" ]; // src/runtime/slot-polyfill-utils.ts var updateFallbackSlotVisibility = (elm) => { const childNodes = internalCall(elm, "childNodes"); if (elm.tagName && elm.tagName.includes("-") && elm["s-cr"] && elm.tagName !== "SLOT-FB") { getHostSlotNodes(childNodes, elm.tagName).forEach((slotNode) => { if (slotNode.nodeType === 1 /* ElementNode */ && slotNode.tagName === "SLOT-FB") { if (getSlotChildSiblings(slotNode, getSlotName(slotNode), false).length) { slotNode.hidden = true; } else { slotNode.hidden = false; } } }); } let i2 = 0; for (i2 = 0; i2 < childNodes.length; i2++) { const childNode = childNodes[i2]; if (childNode.nodeType === 1 /* ElementNode */ && internalCall(childNode, "childNodes").length) { updateFallbackSlotVisibility(childNode); } } }; var getSlottedChildNodes = (childNodes) => { const result = []; for (let i2 = 0; i2 < childNodes.length; i2++) { const slottedNode = childNodes[i2]["s-nr"] || void 0; if (slottedNode && slottedNode.isConnected) { result.push(slottedNode); } } return result; }; function getHostSlotNodes(childNodes, hostName, slotName) { let i2 = 0; let slottedNodes = []; let childNode; for (; i2 < childNodes.length; i2++) { childNode = childNodes[i2]; if (childNode["s-sr"] && (!hostName || childNode["s-hn"] === hostName) && (slotName === void 0 || getSlotName(childNode) === slotName)) { slottedNodes.push(childNode); if (typeof slotName !== "undefined") return slottedNodes; } slottedNodes = [...slottedNodes, ...getHostSlotNodes(childNode.childNodes, hostName, slotName)]; } return slottedNodes; } var getSlotChildSiblings = (slot, slotName, includeSlot = true) => { const childNodes = []; if (includeSlot && slot["s-sr"] || !slot["s-sr"]) childNodes.push(slot); let node = slot; while (node = node.nextSibling) { if (getSlotName(node) === slotName && (includeSlot || !node["s-sr"])) childNodes.push(node); } return childNodes; }; var isNodeLocatedInSlot = (nodeToRelocate, slotName) => { if (nodeToRelocate.nodeType === 1 /* ElementNode */) { if (nodeToRelocate.getAttribute("slot") === null && slotName === "") { return true; } if (nodeToRelocate.getAttribute("slot") === slotName) { return true; } return false; } if (nodeToRelocate["s-sn"] === slotName) { return true; } return slotName === ""; }; var addSlotRelocateNode = (newChild, slotNode, prepend, position) => { if (newChild["s-ol"] && newChild["s-ol"].isConnected) { return; } const slottedNodeLocation = document.createTextNode(""); slottedNodeLocation["s-nr"] = newChild; if (!slotNode["s-cr"] || !slotNode["s-cr"].parentNode) return; const parent = slotNode["s-cr"].parentNode; const appendMethod = prepend ? internalCall(parent, "prepend") : internalCall(parent, "appendChild"); if (import_app_data.BUILD.hydrateClientSide && typeof position !== "undefined") { slottedNodeLocation["s-oo"] = position; const childNodes = internalCall(parent, "childNodes"); const slotRelocateNodes = [slottedNodeLocation]; childNodes.forEach((n) => { if (n["s-nr"]) slotRelocateNodes.push(n); }); slotRelocateNodes.sort((a, b) => { if (!a["s-oo"] || a["s-oo"] < (b["s-oo"] || 0)) return -1; else if (!b["s-oo"] || b["s-oo"] < a["s-oo"]) return 1; return 0; }); slotRelocateNodes.forEach((n) => appendMethod.call(parent, n)); } else { appendMethod.call(parent, slottedNodeLocation); } newChild["s-ol"] = slottedNodeLocation; newChild["s-sh"] = slotNode["s-hn"]; }; var getSlotName = (node) => typeof node["s-sn"] === "string" ? node["s-sn"] : node.nodeType === 1 && node.getAttribute("slot") || void 0; function patchSlotNode(node) { if (node.assignedElements || node.assignedNodes || !node["s-sr"]) return; const assignedFactory = (elementsOnly) => (function(opts) { const toReturn = []; const slotName = this["s-sn"]; if (opts == null ? void 0 : opts.flatten) { console.error(` Flattening is not supported for Stencil non-shadow slots. You can use \`.childNodes\` to nested slot fallback content. If you have a particular use case, please open an issue on the Stencil repo. `); } const parent = this["s-cr"].parentElement; const slottedNodes = parent.__childNodes ? parent.childNodes : getSlottedChildNodes(parent.childNodes); slottedNodes.forEach((n) => { if (slotName === getSlotName(n)) { toReturn.push(n); } }); if (elementsOnly) { return toReturn.filter((n) => n.nodeType === 1 /* ElementNode */); } return toReturn; }).bind(node); node.assignedElements = assignedFactory(true); node.assignedNodes = assignedFactory(false); } function dispatchSlotChangeEvent(elm) { elm.dispatchEvent(new CustomEvent("slotchange", { bubbles: false, cancelable: false, composed: false })); } function findSlotFromSlottedNode(slottedNode, parentHost) { var _a; parentHost = parentHost || ((_a = slottedNode["s-ol"]) == null ? void 0 : _a.parentElement); if (!parentHost) return { slotNode: null, slotName: "" }; const slotName = slottedNode["s-sn"] = getSlotName(slottedNode) || ""; const childNodes = internalCall(parentHost, "childNodes"); const slotNode = getHostSlotNodes(childNodes, parentHost.tagName, slotName)[0]; return { slotNode, slotName }; } // src/runtime/dom-extras.ts var patchPseudoShadowDom = (hostElementPrototype) => { patchCloneNode(hostElementPrototype); patchSlotAppendChild(hostElementPrototype); patchSlotAppend(hostElementPrototype); patchSlotPrepend(hostElementPrototype); patchSlotInsertAdjacentElement(hostElementPrototype); patchSlotInsertAdjacentHTML(hostElementPrototype); patchSlotInsertAdjacentText(hostElementPrototype); patchInsertBefore(hostElementPrototype); patchTextContent(hostElementPrototype); patchChildSlotNodes(hostElementPrototype); patchSlotRemoveChild(hostElementPrototype); }; var patchCloneNode = (HostElementPrototype) => { const orgCloneNode = HostElementPrototype.cloneNode; HostElementPrototype.cloneNode = function(deep) { const srcNode = this; const isShadowDom = import_app_data2.BUILD.shadowDom ? srcNode.shadowRoot && supportsShadow : false; const clonedNode = orgCloneNode.call(srcNode, isShadowDom ? deep : false); if (import_app_data2.BUILD.slot && !isShadowDom && deep) { let i2 = 0; let slotted, nonStencilNode; const stencilPrivates = [ "s-id", "s-cr", "s-lr", "s-rc", "s-sc", "s-p", "s-cn", "s-sr", "s-sn", "s-hn", "s-ol", "s-nr", "s-si", "s-rf", "s-scs" ]; const childNodes = this.__childNodes || this.childNodes; for (; i2 < childNodes.length; i2++) { slotted = childNodes[i2]["s-nr"]; nonStencilNode = stencilPrivates.every((privateField) => !childNodes[i2][privateField]); if (slotted) { if (import_app_data2.BUILD.appendChildSlotFix && clonedNode.__appendChild) { clonedNode.__appendChild(slotted.cloneNode(true)); } else { clonedNode.appendChild(slotted.cloneNode(true)); } } if (nonStencilNode) { clonedNode.appendChild(childNodes[i2].cloneNode(true)); } } } return clonedNode; }; }; var patchSlotAppendChild = (HostElementPrototype) => { HostElementPrototype.__appendChild = HostElementPrototype.appendChild; HostElementPrototype.appendChild = function(newChild) { const { slotName, slotNode } = findSlotFromSlottedNode(newChild, this); if (slotNode) { addSlotRelocateNode(newChild, slotNode); const slotChildNodes = getSlotChildSiblings(slotNode, slotName); const appendAfter = slotChildNodes[slotChildNodes.length - 1]; const parent = internalCall(appendAfter, "parentNode"); const insertedNode = internalCall(parent, "insertBefore")(newChild, appendAfter.nextSibling); dispatchSlotChangeEvent(slotNode); updateFallbackSlotVisibility(this); return insertedNode; } return this.__appendChild(newChild); }; }; var patchSlotRemoveChild = (ElementPrototype) => { ElementPrototype.__removeChild = ElementPrototype.removeChild; ElementPrototype.removeChild = function(toRemove) { if (toRemove && typeof toRemove["s-sn"] !== "undefined") { const childNodes = this.__childNodes || this.childNodes; const slotNode = getHostSlotNodes(childNodes, this.tagName, toRemove["s-sn"]); if (slotNode && toRemove.isConnected) { toRemove.remove(); updateFallbackSlotVisibility(this); return; } } return this.__removeChild(toRemove); }; }; var patchSlotPrepend = (HostElementPrototype) => { HostElementPrototype.__prepend = HostElementPrototype.prepend; HostElementPrototype.prepend = function(...newChildren) { newChildren.forEach((newChild) => { if (typeof newChild === "string") { newChild = this.ownerDocument.createTextNode(newChild); } const slotName = (newChild["s-sn"] = getSlotName(newChild)) || ""; const childNodes = internalCall(this, "childNodes"); const slotNode = getHostSlotNodes(childNodes, this.tagName, slotName)[0]; if (slotNode) { addSlotRelocateNode(newChild, slotNode, true); const slotChildNodes = getSlotChildSiblings(slotNode, slotName); const appendAfter = slotChildNodes[0]; const parent = internalCall(appendAfter, "parentNode"); const toReturn = internalCall(parent, "insertBefore")(newChild, internalCall(appendAfter, "nextSibling")); dispatchSlotChangeEvent(slotNode); return toReturn; } if (newChild.nodeType === 1 && !!newChild.getAttribute("slot")) { newChild.hidden = true; } return HostElementPrototype.__prepend(newChild); }); }; }; var patchSlotAppend = (HostElementPrototype) => { HostElementPrototype.__append = HostElementPrototype.append; HostElementPrototype.append = function(...newChildren) { newChildren.forEach((newChild) => { if (typeof newChild === "string") { newChild = this.ownerDocument.createTextNode(newChild); } this.appendChild(newChild); }); }; }; var patchSlotInsertAdjacentHTML = (HostElementPrototype) => { const originalInsertAdjacentHtml = HostElementPrototype.insertAdjacentHTML; HostElementPrototype.insertAdjacentHTML = function(position, text) { if (position !== "afterbegin" && position !== "beforeend") { return originalInsertAdjacentHtml.call(this, position, text); } const container = this.ownerDocument.createElement("_"); let node; container.innerHTML = text; if (position === "afterbegin") { while (node = container.firstChild) { this.prepend(node); } } else if (position === "beforeend") { while (node = container.firstChild) { this.append(node); } } }; }; var patchSlotInsertAdjacentText = (HostElementPrototype) => { HostElementPrototype.insertAdjacentText = function(position, text) { this.insertAdjacentHTML(position, text); }; }; var patchInsertBefore = (HostElementPrototype) => { const eleProto = HostElementPrototype; if (eleProto.__insertBefore) return; eleProto.__insertBefore = HostElementPrototype.insertBefore; HostElementPrototype.insertBefore = function(newChild, currentChild) { const { slotName, slotNode } = findSlotFromSlottedNode(newChild, this); const slottedNodes = this.__childNodes ? this.childNodes : getSlottedChildNodes(this.childNodes); if (slotNode) { let found = false; slottedNodes.forEach((childNode) => { if (childNode === currentChild || currentChild === null) { found = true; if (currentChild === null || slotName !== currentChild["s-sn"]) { this.appendChild(newChild); return; } if (slotName === currentChild["s-sn"]) { addSlotRelocateNode(newChild, slotNode); const parent = internalCall(currentChild, "parentNode"); internalCall(parent, "insertBefore")(newChild, currentChild); dispatchSlotChangeEvent(slotNode); } return; } }); if (found) return newChild; } const parentNode = currentChild == null ? void 0 : currentChild.__parentNode; if (parentNode && !this.isSameNode(parentNode)) { return this.appendChild(newChild); } return this.__insertBefore(newChild, currentChild); }; }; var patchSlotInsertAdjacentElement = (HostElementPrototype) => { const originalInsertAdjacentElement = HostElementPrototype.insertAdjacentElement; HostElementPrototype.insertAdjacentElement = function(position, element) { if (position !== "afterbegin" && position !== "beforeend") { return originalInsertAdjacentElement.call(this, position, element); } if (position === "afterbegin") { this.prepend(element); return element; } else if (position === "beforeend") { this.append(element); return element; } return element; }; }; var patchTextContent = (hostElementPrototype) => { patchHostOriginalAccessor("textContent", hostElementPrototype); Object.defineProperty(hostElementPrototype, "textContent", { get: function() { let text = ""; const childNodes = this.__childNodes ? this.childNodes : getSlottedChildNodes(this.childNodes); childNodes.forEach((node) => text += node.textContent || ""); return text; }, set: function(value) { const childNodes = this.__childNodes ? this.childNodes : getSlottedChildNodes(this.childNodes); childNodes.forEach((node) => { if (node["s-ol"]) node["s-ol"].remove(); node.remove(); }); this.insertAdjacentHTML("beforeend", value); } }); }; var patchChildSlotNodes = (elm) => { class FakeNodeList extends Array { item(n) { return this[n]; } } patchHostOriginalAccessor("children", elm); Object.defineProperty(elm, "children", { get() { return this.childNodes.filter((n) => n.nodeType === 1); } }); Object.defineProperty(elm, "childElementCount", { get() { return this.children.length; } }); patchHostOriginalAccessor("firstChild", elm); Object.defineProperty(elm, "firstChild", { get() { return this.childNodes[0]; } }); patchHostOriginalAccessor("lastChild", elm); Object.defineProperty(elm, "lastChild", { get() { return this.childNodes[this.childNodes.length - 1]; } }); patchHostOriginalAccessor("childNodes", elm); Object.defineProperty(elm, "childNodes", { get() { const result = new FakeNodeList(); result.push(...getSlottedChildNodes(this.__childNodes)); return result; } }); }; var patchSlottedNode = (node) => { if (!node || node.__nextSibling !== void 0 || !globalThis.Node) return; patchNextSibling(node); patchPreviousSibling(node); patchParentNode(node); if (node.nodeType === Node.ELEMENT_NODE) { patchNextElementSibling(node); patchPreviousElementSibling(node); } }; var patchNextSibling = (node) => { if (!node || node.__nextSibling) return; patchHostOriginalAccessor("nextSibling", node); Object.defineProperty(node, "nextSibling", { get: function() { var _a; const parentNodes = (_a = this["s-ol"]) == null ? void 0 : _a.parentNode.childNodes; const index = parentNodes == null ? void 0 : parentNodes.indexOf(this); if (parentNodes && index > -1) { return parentNodes[index + 1]; } return this.__nextSibling; } }); }; var patchNextElementSibling = (element) => { if (!element || element.__nextElementSibling) return; patchHostOriginalAccessor("nextElementSibling", element); Object.defineProperty(element, "nextElementSibling", { get: function() { var _a; const parentEles = (_a = this["s-ol"]) == null ? void 0 : _a.parentNode.children; const index = parentEles == null ? void 0 : parentEles.indexOf(this); if (parentEles && index > -1) { return parentEles[index + 1]; } return this.__nextElementSibling; } }); }; var patchPreviousSibling = (node) => { if (!node || node.__previousSibling) return; patchHostOriginalAccessor("previousSibling", node); Object.defineProperty(node, "previousSibling", { get: function() { var _a; const parentNodes = (_a = this["s-ol"]) == null ? void 0 : _a.parentNode.childNodes; const index = parentNodes == null ? void 0 : parentNodes.indexOf(this); if (parentNodes && index > -1) { return parentNodes[index - 1]; } return this.__previousSibling; } }); }; var patchPreviousElementSibling = (element) => { if (!element || element.__previousElementSibling) return; patchHostOriginalAccessor("previousElementSibling", element); Object.defineProperty(element, "previousElementSibling", { get: function() { var _a; const parentNodes = (_a = this["s-ol"]) == null ? void 0 : _a.parentNode.children; const index = parentNodes == null ? void 0 : parentNodes.indexOf(this); if (parentNodes && index > -1) { return parentNodes[index - 1]; } return this.__previousElementSibling; } }); }; var patchParentNode = (node) => { if (!node || node.__parentNode) return; patchHostOriginalAccessor("parentNode", node); Object.defineProperty(node, "parentNode", { get: function() { var _a; return ((_a = this["s-ol"]) == null ? void 0 : _a.parentNode) || this.__parentNode; }, set: function(value) { this.__parentNode = value; } }); }; var validElementPatches = ["children", "nextElementSibling", "previousElementSibling"]; var validNodesPatches = [ "childNodes", "firstChild", "lastChild", "nextSibling", "previousSibling", "textContent", "parentNode" ]; function patchHostOriginalAccessor(accessorName, node) { let accessor; if (validElementPatches.includes(accessorName)) { accessor = Object.getOwnPropertyDescriptor(Element.prototype, accessorName); } else if (validNodesPatches.includes(accessorName)) { accessor = Object.getOwnPropertyDescriptor(Node.prototype, accessorName); } if (!accessor) { accessor = Object.getOwnPropertyDescriptor(node, accessorName); } if (accessor) Object.defineProperty(node, "__" + accessorName, accessor); } function internalCall(node, method) { if ("__" + method in node) { const toReturn = node["__" + method]; if (typeof toReturn !== "function") return toReturn; return toReturn.bind(node); } else { if (typeof node[method] !== "function") return node[method]; return node[method].bind(node); } } // src/runtime/profile.ts var import_app_data3 = require("@stencil/core/internal/app-data"); var i = 0; var createTime = (fnName, tagName = "") => { if (import_app_data3.BUILD.profile && performance.mark) { const key = `st:${fnName}:${tagName}:${i++}`; performance.mark(key); return () => performance.measure(`[Stencil] ${fnName}() <${tagName}>`, key); } else { return () => { return; }; } }; var uniqueTime = (key, measureText) => { if (import_app_data3.BUILD.profile && performance.mark) { if (performance.getEntriesByName(key, "mark").length === 0) { performance.mark(key); } return () => { if (performance.getEntriesByName(measureText, "measure").length === 0) { performance.measure(measureText, key); } }; } else { return () => { return; }; } }; var inspect = (ref) => { const hostRef = getHostRef(ref); if (!hostRef) { return void 0; } const flags = hostRef.$flags$; const hostElement = hostRef.$hostElement$; return { renderCount: hostRef.$renderCount$, flags: { hasRendered: !!(flags & 2 /* hasRendered */), hasConnected: !!(flags & 1 /* hasConnected */), isWaitingForChildren: !!(flags & 4 /* isWaitingForChildren */), isConstructingInstance: !!(flags & 8 /* isConstructingInstance */), isQueuedForUpdate: !!(flags & 16 /* isQueuedForUpdate */), hasInitializedComponent: !!(flags & 32 /* hasInitializedComponent */), hasLoadedComponent: !!(flags & 64 /* hasLoadedComponent */), isWatchReady: !!(flags & 128 /* isWatchReady */), isListenReady: !!(flags & 256 /* isListenReady */), needsRerender: !!(flags & 512 /* needsRerender */) }, instanceValues: hostRef.$instanceValues$, ancestorComponent: hostRef.$ancestorComponent$, hostElement, lazyInstance: hostRef.$lazyInstance$, vnode: hostRef.$vnode$, modeName: hostRef.$modeName$, onReadyPromise: hostRef.$onReadyPromise$, onReadyResolve: hostRef.$onReadyResolve$, onInstancePromise: hostRef.$onInstancePromise$, onInstanceResolve: hostRef.$onInstanceResolve$, onRenderResolve: hostRef.$onRenderResolve$, queuedListeners: hostRef.$queuedListeners$, rmListeners: hostRef.$rmListeners$, ["s-id"]: hostElement["s-id"], ["s-cr"]: hostElement["s-cr"], ["s-lr"]: hostElement["s-lr"], ["s-p"]: hostElement["s-p"], ["s-rc"]: hostElement["s-rc"], ["s-sc"]: hostElement["s-sc"] }; }; var installDevTools = () => { if (import_app_data3.BUILD.devTools) { const stencil = win.stencil = win.stencil || {}; const originalInspect = stencil.inspect; stencil.inspect = (ref) => { let result = inspect(ref); if (!result && typeof originalInspect === "function") { result = originalInspect(ref); } return result; }; } }; // src/runtime/vdom/h.ts var import_app_data4 = require("@stencil/core/internal/app-data"); var h = (nodeName, vnodeData, ...children) => { let child = null; let key = null; let slotName = null; let simple = false; let lastSimple = false; const vNodeChildren = []; const walk = (c) => { for (let i2 = 0; i2 < c.length; i2++) { child = c[i2]; if (Array.isArray(child)) { walk(child); } else if (child != null && typeof child !== "boolean") { if (simple = typeof nodeName !== "function" && !isComplexType(child)) { child = String(child); } else if (import_app_data4.BUILD.isDev && typeof nodeName !== "function" && child.$flags$ === void 0) { consoleDevError(`vNode passed as children has unexpected type. Make sure it's using the correct h() function. Empty objects can also be the cause, look for JSX comments that became objects.`); } if (simple && lastSimple) { vNodeChildren[vNodeChildren.length - 1].$text$ += child; } else { vNodeChildren.push(simple ? newVNode(null, child) : child); } lastSimple = simple; } } }; walk(children); if (vnodeData) { if (import_app_data4.BUILD.isDev && nodeName === "input") { validateInputProperties(vnodeData); } if (import_app_data4.BUILD.vdomKey && vnodeData.key) { key = vnodeData.key; } if (import_app_data4.BUILD.slotRelocation && vnodeData.name) { slotName = vnodeData.name; } if (import_app_data4.BUILD.vdomClass) { const classData = vnodeData.className || vnodeData.class; if (classData) { vnodeData.class = typeof classData !== "object" ? classData : Object.keys(classData).filter((k) => classData[k]).join(" "); } } } if (import_app_data4.BUILD.isDev && vNodeChildren.some(isHost)) { consoleDevError(`The <Host> must be the single root component. Make sure: - You are NOT using hostData() and <Host> in the same component. - <Host> is used once, and it's the single root component of the render() function.`); } if (import_app_data4.BUILD.vdomFunctional && typeof nodeName === "function") { return nodeName( vnodeData === null ? {} : vnodeData, vNodeChildren, vdomFnUtils ); } const vnode = newVNode(nodeName, null); vnode.$attrs$ = vnodeData; if (vNodeChildren.length > 0) { vnode.$children$ = vNodeChildren; } if (import_app_data4.BUILD.vdomKey) { vnode.$key$ = key; } if (import_app_data4.BUILD.slotRelocation) { vnode.$name$ = slotName; } return vnode; }; var newVNode = (tag, text) => { const vnode = { $flags$: 0, $tag$: tag, $text$: text, $elm$: null, $children$: null }; if (import_app_data4.BUILD.vdomAttribute) { vnode.$attrs$ = null; } if (import_app_data4.BUILD.vdomKey) { vnode.$key$ = null; } if (import_app_data4.BUILD.slotRelocation) { vnode.$name$ = null; } return vnode; }; var Host = {}; var isHost = (node) => node && node.$tag$ === Host; var vdomFnUtils = { forEach: (children, cb) => children.map(convertToPublic).forEach(cb), map: (children, cb) => children.map(convertToPublic).map(cb).map(convertToPrivate) }; var convertToPublic = (node) => ({ vattrs: node.$attrs$, vchildren: node.$children$, vkey: node.$key$, vname: node.$name$, vtag: node.$tag$, vtext: node.$text$ }); var convertToPrivate = (node) => { if (typeof node.vtag === "function") { const vnodeData = { ...node.vattrs }; if (node.vkey) { vnodeData.key = node.vkey; } if (node.vname) { vnodeData.name = node.vname; } return h(node.vtag, vnodeData, ...node.vchildren || []); } const vnode = newVNode(node.vtag, node.vtext); vnode.$attrs$ = node.vattrs; vnode.$children$ = node.vchildren; vnode.$key$ = node.vkey; vnode.$name$ = node.vname; return vnode; }; var validateInputProperties = (inputElm) => { const props = Object.keys(inputElm); const value = props.indexOf("value"); if (value === -1) { return; } const typeIndex = props.indexOf("type"); const minIndex = props.indexOf("min"); const maxIndex = props.indexOf("max"); const stepIndex = props.indexOf("step"); if (value < typeIndex || value < minIndex || value < maxIndex || value < stepIndex) { consoleDevWarn(`The "value" prop of <input> should be set after "min", "max", "type" and "step"`); } }; // src/runtime/client-hydrate.ts var initializeClientHydrate = (hostElm, tagName, hostId, hostRef) => { var _a; const endHydrate = createTime("hydrateClient", tagName); const shadowRoot = hostElm.shadowRoot; const childRenderNodes = []; const slotNodes = []; const slottedNodes = []; const shadowRootNodes = import_app_data5.BUILD.shadowDom && shadowRoot ? [] : null; const vnode = newVNode(tagName, null); vnode.$elm$ = hostElm; const members = Object.entries(((_a = hostRef.$cmpMeta$) == null ? void 0 : _a.$members$) || {}); members.forEach(([memberName, [memberFlags, metaAttributeName]]) => { var _a2; if (!(memberFlags & 31 /* Prop */)) { return; } const attributeName = metaAttributeName || memberName; const attrVal = hostElm.getAttribute(attributeName); if (attrVal !== null) { const attrPropVal = parsePropertyValue(attrVal, memberFlags); (_a2 = hostRef == null ? void 0 : hostRef.$instanceValues$) == null ? void 0 : _a2.set(memberName, attrPropVal); } }); let scopeId2; if (import_app_data5.BUILD.scoped) { const cmpMeta = hostRef.$cmpMeta$; if (cmpMeta && cmpMeta.$flags$ & 10 /* needsScopedEncapsulation */ && hostElm["s-sc"]) { scopeId2 = hostElm["s-sc"]; hostElm.classList.add(scopeId2 + "-h"); } else if (hostElm["s-sc"]) { delete hostElm["s-sc"]; } } if (win.document && (!plt.$orgLocNodes$ || !plt.$orgLocNodes$.size)) { initializeDocumentHydrate(win.document.body, plt.$orgLocNodes$ = /* @__PURE__ */ new Map()); } hostElm[HYDRATE_ID] = hostId; hostElm.removeAttribute(HYDRATE_ID); hostRef.$vnode$ = clientHydrate( vnode, childRenderNodes, slotNodes, shadowRootNodes, hostElm, hostElm, hostId, slottedNodes ); let crIndex = 0; const crLength = childRenderNodes.length; let childRenderNode; for (crIndex; crIndex < crLength; crIndex++) { childRenderNode = childRenderNodes[crIndex]; const orgLocationId = childRenderNode.$hostId$ + "." + childRenderNode.$nodeId$; const orgLocationNode = plt.$orgLocNodes$.get(orgLocationId); const node = childRenderNode.$elm$; if (!shadowRoot) { node["s-hn"] = tagName.toUpperCase(); if (childRenderNode.$tag$ === "slot") { node["s-cr"] = hostElm["s-cr"]; } } if (childRenderNode.$tag$ === "slot") { childRenderNode.$name$ = childRenderNode.$elm$["s-sn"] || childRenderNode.$elm$["name"] || null; if (childRenderNode.$children$) { childRenderNode.$flags$ |= 2 /* isSlotFallback */; if (!childRenderNode.$elm$.childNodes.length) { childRenderNode.$children$.forEach((c) => { childRenderNode.$elm$.appendChild(c.$elm$); }); } } else { childRenderNode.$flags$ |= 1 /* isSlotReference */; } } if (orgLocationNode && orgLocationNode.isConnected) { if (shadowRoot && orgLocationNode["s-en"] === "") { orgLocationNode.parentNode.insertBefore(node, orgLocationNode.nextSibling); } orgLocationNode.parentNode.removeChild(orgLocationNode); if (!shadowRoot) { node["s-oo"] = parseInt(childRenderNode.$nodeId$); } } plt.$orgLocNodes$.delete(orgLocationId); } const hosts = []; const snLen = slottedNodes.length; let snIndex = 0; let slotGroup; let snGroupIdx; let snGroupLen; let slottedItem; for (snIndex; snIndex < snLen; snIndex++) { slotGroup = slottedNodes[snIndex]; if (!slotGroup || !slotGroup.length) continue; snGroupLen = slotGroup.length; snGroupIdx = 0; for (snGroupIdx; snGroupIdx < snGroupLen; snGroupIdx++) { slottedItem = slotGroup[snGroupIdx]; if (!hosts[slottedItem.hostId]) { hosts[slottedItem.hostId] = plt.$orgLocNodes$.get(slottedItem.hostId); } if (!hosts[slottedItem.hostId]) continue; const hostEle = hosts[slottedItem.hostId]; if (!hostEle.shadowRoot || !shadowRoot) {