Files
client/node_modules/@vue/runtime-dom/dist/runtime-dom.cjs.prod.js
T

1527 lines
52 KiB
JavaScript
Raw Normal View History

2026-10-07 18:56:27 +02:00
/**
* @vue/runtime-dom v3.6.0-rc.10
* (c) 2018-present Yuxi (Evan) You and Vue contributors
* @license MIT
**/
Object.defineProperties(exports, {
__esModule: { value: true },
[Symbol.toStringTag]: { value: "Module" }
});
let _vue_runtime_core = require("@vue/runtime-core");
let _vue_shared = require("@vue/shared");
//#region packages/runtime-dom/src/nodeOps.ts
let policy = void 0;
const tt = typeof window !== "undefined" && window.trustedTypes;
if (tt) try {
policy = /*@__PURE__*/ tt.createPolicy("vue", { createHTML: (val) => val });
} catch (e) {}
const unsafeToTrustedHTML = policy ? (val) => policy.createHTML(val) : (val) => val;
const svgNS = "http://www.w3.org/2000/svg";
const mathmlNS = "http://www.w3.org/1998/Math/MathML";
const doc = typeof document !== "undefined" ? document : null;
const templateContainer = doc && /*@__PURE__*/ doc.createElement("template");
const nodeOps = {
insert: (child, parent, anchor) => {
parent.insertBefore(child, anchor || null);
},
remove: (child) => {
const parent = child.parentNode;
if (parent) parent.removeChild(child);
},
createElement: (tag, namespace, is, props) => {
const el = namespace === "svg" ? doc.createElementNS(svgNS, tag) : namespace === "mathml" ? doc.createElementNS(mathmlNS, tag) : is ? doc.createElement(tag, { is }) : doc.createElement(tag);
if (tag === "select" && props && props.multiple != null) el.setAttribute("multiple", props.multiple);
return el;
},
createText: (text) => doc.createTextNode(text),
createComment: (text) => doc.createComment(text),
setText: (node, text) => {
node.nodeValue = text;
},
setElementText: (el, text) => {
el.textContent = text;
},
parentNode: (node) => node.parentNode,
nextSibling: (node) => node.nextSibling,
querySelector: (selector) => doc.querySelector(selector),
setScopeId(el, id) {
el.setAttribute(id, "");
},
insertStaticContent(content, parent, anchor, namespace, start, end) {
const before = anchor ? anchor.previousSibling : parent.lastChild;
if (start && (start === end || start.nextSibling)) while (true) {
parent.insertBefore(start.cloneNode(true), anchor);
if (start === end || !(start = start.nextSibling)) break;
}
else {
templateContainer.innerHTML = unsafeToTrustedHTML(namespace === "svg" ? `<svg>${content}</svg>` : namespace === "mathml" ? `<math>${content}</math>` : content);
const template = templateContainer.content;
if (namespace === "svg" || namespace === "mathml") {
const wrapper = template.firstChild;
while (wrapper.firstChild) template.appendChild(wrapper.firstChild);
template.removeChild(wrapper);
}
parent.insertBefore(template, anchor);
}
return [before ? before.nextSibling : parent.firstChild, anchor ? anchor.previousSibling : parent.lastChild];
}
};
//#endregion
//#region packages/runtime-dom/src/components/Transition.ts
const TRANSITION = "transition";
const ANIMATION = "animation";
const vtcKey = Symbol("_vtc");
const DOMTransitionPropsValidators = {
name: String,
type: String,
css: {
type: Boolean,
default: true
},
duration: [
String,
Number,
Object
],
enterFromClass: String,
enterActiveClass: String,
enterToClass: String,
appearFromClass: String,
appearActiveClass: String,
appearToClass: String,
leaveFromClass: String,
leaveActiveClass: String,
leaveToClass: String
};
const TransitionPropsValidators = /*@__PURE__*/ (0, _vue_shared.extend)({}, _vue_runtime_core.BaseTransitionPropsValidators, DOMTransitionPropsValidators);
/**
* Wrap logic that attaches extra properties to Transition in a function
* so that it can be annotated as pure
*/
const decorate$1 = (t) => {
t.displayName = "Transition";
t.props = TransitionPropsValidators;
return t;
};
/**
* DOM Transition is a higher-order-component based on the platform-agnostic
* base Transition component, with DOM-specific logic.
*/
const Transition = /*@__PURE__*/ decorate$1((props, { slots }) => (0, _vue_runtime_core.h)(_vue_runtime_core.BaseTransition, resolveTransitionProps(props), slots));
/**
* #3227 Incoming hooks may be merged into arrays when wrapping Transition
* with custom HOCs.
*/
const callHook = (hook, args = []) => {
if ((0, _vue_shared.isArray)(hook)) hook.forEach((h) => h(...args));
else if (hook) hook(...args);
};
/**
* Check if a hook expects a callback (2nd arg), which means the user
* intends to explicitly control the end of the transition.
*/
const hasExplicitCallback = (hook) => {
return hook ? (0, _vue_shared.isArray)(hook) ? hook.some((h) => h.length > 1) : hook.length > 1 : false;
};
function resolveTransitionProps(rawProps) {
const baseProps = {};
for (const key in rawProps) if (!(key in DOMTransitionPropsValidators)) baseProps[key] = rawProps[key];
if (rawProps.css === false) return baseProps;
const { name = "v", type, duration, enterFromClass = `${name}-enter-from`, enterActiveClass = `${name}-enter-active`, enterToClass = `${name}-enter-to`, appearFromClass = enterFromClass, appearActiveClass = enterActiveClass, appearToClass = enterToClass, leaveFromClass = `${name}-leave-from`, leaveActiveClass = `${name}-leave-active`, leaveToClass = `${name}-leave-to` } = rawProps;
const durations = normalizeDuration(duration);
const enterDuration = durations && durations[0];
const leaveDuration = durations && durations[1];
const { onBeforeEnter, onEnter, onEnterCancelled, onLeave, onLeaveCancelled, onBeforeAppear = onBeforeEnter, onAppear = onEnter, onAppearCancelled = onEnterCancelled } = baseProps;
const finishEnter = (el, isAppear, done, isCancelled) => {
el._enterCancelled = isCancelled;
removeTransitionClass(el, isAppear ? appearToClass : enterToClass);
removeTransitionClass(el, isAppear ? appearActiveClass : enterActiveClass);
done && done();
};
const finishLeave = (el, done) => {
el._isLeaving = false;
removeTransitionClass(el, leaveFromClass);
removeTransitionClass(el, leaveToClass);
removeTransitionClass(el, leaveActiveClass);
done && done();
};
const makeEnterHook = (isAppear) => {
return (el, done) => {
const hook = isAppear ? onAppear : onEnter;
const resolve = () => finishEnter(el, isAppear, done);
callHook(hook, [el, resolve]);
nextFrame(() => {
removeTransitionClass(el, isAppear ? appearFromClass : enterFromClass);
addTransitionClass(el, isAppear ? appearToClass : enterToClass);
if (!hasExplicitCallback(hook)) whenTransitionEnds(el, type, enterDuration, resolve);
});
};
};
return (0, _vue_shared.extend)(baseProps, {
onBeforeEnter(el) {
callHook(onBeforeEnter, [el]);
addTransitionClass(el, enterFromClass);
addTransitionClass(el, enterActiveClass);
},
onBeforeAppear(el) {
callHook(onBeforeAppear, [el]);
addTransitionClass(el, appearFromClass);
addTransitionClass(el, appearActiveClass);
},
onEnter: makeEnterHook(false),
onAppear: makeEnterHook(true),
onLeave(el, done) {
el._isLeaving = true;
const resolve = () => finishLeave(el, done);
addTransitionClass(el, leaveFromClass);
if (!el._enterCancelled) {
forceReflow(el);
addTransitionClass(el, leaveActiveClass);
} else {
addTransitionClass(el, leaveActiveClass);
forceReflow(el);
}
nextFrame(() => {
if (!el._isLeaving) return;
removeTransitionClass(el, leaveFromClass);
addTransitionClass(el, leaveToClass);
if (!hasExplicitCallback(onLeave)) whenTransitionEnds(el, type, leaveDuration, resolve);
});
callHook(onLeave, [el, resolve]);
},
onEnterCancelled(el) {
finishEnter(el, false, void 0, true);
callHook(onEnterCancelled, [el]);
},
onAppearCancelled(el) {
finishEnter(el, true, void 0, true);
callHook(onAppearCancelled, [el]);
},
onLeaveCancelled(el) {
finishLeave(el);
callHook(onLeaveCancelled, [el]);
}
});
}
function normalizeDuration(duration) {
if (duration == null) return null;
else if ((0, _vue_shared.isObject)(duration)) return [NumberOf(duration.enter), NumberOf(duration.leave)];
else {
const n = NumberOf(duration);
return [n, n];
}
}
function NumberOf(val) {
return (0, _vue_shared.toNumber)(val);
}
function addTransitionClass(el, cls) {
cls.split(/\s+/).forEach((c) => c && el.classList.add(c));
(el[vtcKey] || (el[vtcKey] = /* @__PURE__ */ new Set())).add(cls);
}
function removeTransitionClass(el, cls) {
cls.split(/\s+/).forEach((c) => c && el.classList.remove(c));
const _vtc = el[vtcKey];
if (_vtc) {
_vtc.delete(cls);
if (!_vtc.size) el[vtcKey] = void 0;
}
}
function nextFrame(cb) {
requestAnimationFrame(() => {
requestAnimationFrame(cb);
});
}
let endId = 0;
function whenTransitionEnds(el, expectedType, explicitTimeout, resolve) {
const id = el._endId = ++endId;
const resolveIfNotStale = () => {
if (id === el._endId) resolve();
};
if (explicitTimeout != null) return setTimeout(resolveIfNotStale, explicitTimeout);
const { type, timeout, propCount } = getTransitionInfo(el, expectedType);
if (!type) return resolve();
const endEvent = type + "end";
let ended = 0;
const end = () => {
el.removeEventListener(endEvent, onEnd);
resolveIfNotStale();
};
const onEnd = (e) => {
if (e.target === el && ++ended >= propCount) end();
};
setTimeout(() => {
if (ended < propCount) end();
}, timeout + 1);
el.addEventListener(endEvent, onEnd);
}
function getTransitionInfo(el, expectedType) {
const styles = window.getComputedStyle(el);
const getStyleProperties = (key) => (styles[key] || "").split(", ");
const transitionDelays = getStyleProperties(`${TRANSITION}Delay`);
const transitionDurations = getStyleProperties(`${TRANSITION}Duration`);
const transitionTimeout = getTimeout(transitionDelays, transitionDurations);
const animationDelays = getStyleProperties(`${ANIMATION}Delay`);
const animationDurations = getStyleProperties(`${ANIMATION}Duration`);
const animationTimeout = getTimeout(animationDelays, animationDurations);
let type = null;
let timeout = 0;
let propCount = 0;
if (expectedType === TRANSITION) {
if (transitionTimeout > 0) {
type = TRANSITION;
timeout = transitionTimeout;
propCount = transitionDurations.length;
}
} else if (expectedType === ANIMATION) {
if (animationTimeout > 0) {
type = ANIMATION;
timeout = animationTimeout;
propCount = animationDurations.length;
}
} else {
timeout = Math.max(transitionTimeout, animationTimeout);
type = timeout > 0 ? transitionTimeout > animationTimeout ? TRANSITION : ANIMATION : null;
propCount = type ? type === TRANSITION ? transitionDurations.length : animationDurations.length : 0;
}
const hasTransform = type === TRANSITION && /\b(?:transform|all)(?:,|$)/.test(getStyleProperties(`${TRANSITION}Property`).toString());
return {
type,
timeout,
propCount,
hasTransform
};
}
function getTimeout(delays, durations) {
while (delays.length < durations.length) delays = delays.concat(delays);
return Math.max(...durations.map((d, i) => toMs(d) + toMs(delays[i])));
}
function toMs(s) {
if (s === "auto") return 0;
return Number(s.slice(0, -1).replace(",", ".")) * 1e3;
}
function forceReflow(el) {
return (el ? el.ownerDocument : document).body.offsetHeight;
}
//#endregion
//#region packages/runtime-dom/src/modules/class.ts
function patchClass(el, value, isSVG) {
const transitionClasses = el[vtcKey];
if (transitionClasses) value = (value ? [value, ...transitionClasses] : [...transitionClasses]).join(" ");
if (value == null) el.removeAttribute("class");
else if (isSVG) el.setAttribute("class", value);
else el.className = value;
}
//#endregion
//#region packages/runtime-dom/src/directives/vShow.ts
const vShowOriginalDisplay = Symbol("_vod");
const vShowHidden = Symbol("_vsh");
const vShow = {
name: "show",
beforeMount(el, { value }, { transition }) {
el[vShowOriginalDisplay] = el.style.display === "none" ? "" : el.style.display;
if (transition && value) transition.beforeEnter(el);
else setDisplay(el, value);
},
mounted(el, { value }, { transition }) {
if (transition && value) transition.enter(el);
},
updated(el, { value, oldValue }, { transition }) {
if (!value === !oldValue) return;
if (transition) {
if (value) {
transition.beforeEnter(el);
setDisplay(el, true);
transition.enter(el);
} else transition.leave(el, () => {
setDisplay(el, false);
});
} else setDisplay(el, value);
},
beforeUnmount(el, { value }) {
setDisplay(el, value);
}
};
function setDisplay(el, value) {
el.style.display = value ? el[vShowOriginalDisplay] : "none";
el[vShowHidden] = !value;
}
function initVShowForSSR() {
vShow.getSSRProps = ({ value }) => {
if (!value) return { style: { display: "none" } };
};
}
//#endregion
//#region packages/runtime-dom/src/helpers/useCssVars.ts
const CSS_VAR_TEXT = Symbol("");
/**
* Runtime helper for SFC's CSS variable injection feature.
* @private
*/
function useCssVars(getter) {}
//#endregion
//#region packages/runtime-dom/src/modules/style.ts
const displayRE = /(?:^|;)\s*display\s*:/;
function patchStyle(el, prev, next) {
const style = el.style;
const isCssString = (0, _vue_shared.isString)(next);
let hasControlledDisplay = false;
if (next && !isCssString) {
if (prev) {
if (!(0, _vue_shared.isString)(prev)) {
for (const key in prev) if (next[key] == null) setStyle(style, key, "");
} else for (const prevStyle of prev.split(";")) {
const key = prevStyle.slice(0, prevStyle.indexOf(":")).trim();
if (next[key] == null) setStyle(style, key, "");
}
}
for (const key in next) {
if (key === "display") hasControlledDisplay = true;
const value = next[key];
if (value != null) {
if (!shouldPreserveTextareaResizeStyle(el, key, !(0, _vue_shared.isString)(prev) && prev ? prev[key] : void 0, value)) setStyle(style, key, value);
} else setStyle(style, key, "");
}
} else if (isCssString) {
if (prev !== next) {
const cssVarText = style[CSS_VAR_TEXT];
if (cssVarText) next += ";" + cssVarText;
style.cssText = next;
hasControlledDisplay = displayRE.test(next);
}
} else if (prev) {
const cssVarText = style[CSS_VAR_TEXT];
if (cssVarText) style.cssText = cssVarText;
else el.removeAttribute("style");
}
if (vShowOriginalDisplay in el) {
el[vShowOriginalDisplay] = hasControlledDisplay ? style.display : "";
if (el[vShowHidden]) style.display = "none";
}
}
const importantRE = /\s*!important$/;
function setStyle(style, name, rawVal) {
if ((0, _vue_shared.isArray)(rawVal)) rawVal.forEach((v) => setStyle(style, name, v));
else {
const val = rawVal == null ? "" : String(rawVal);
if (name.startsWith("--")) {
if (importantRE.test(val)) style.setProperty(name, val.replace(importantRE, ""), "important");
else style.setProperty(name, val);
} else {
const prefixed = autoPrefix(style, name);
if (importantRE.test(val)) style.setProperty((0, _vue_shared.hyphenate)(prefixed), val.replace(importantRE, ""), "important");
else style[prefixed] = val;
}
}
}
const prefixes = [
"Webkit",
"Moz",
"ms"
];
const prefixCache = {};
function autoPrefix(style, rawName) {
const cached = prefixCache[rawName];
if (cached) return cached;
let name = (0, _vue_runtime_core.camelize)(rawName);
if (name !== "filter" && name in style) return prefixCache[rawName] = name;
name = (0, _vue_shared.capitalize)(name);
for (let i = 0; i < prefixes.length; i++) {
const prefixed = prefixes[i] + name;
if (prefixed in style) return prefixCache[rawName] = prefixed;
}
return rawName;
}
/**
* Browsers update textarea width/height directly during native resize.
* Only special-case this common textarea path for now; other resize scenarios
* still follow normal vnode style patching.
*/
function shouldPreserveTextareaResizeStyle(el, key, prev, next) {
return el.tagName === "TEXTAREA" && (key === "width" || key === "height") && (0, _vue_shared.isString)(next) && prev === next;
}
//#endregion
//#region packages/runtime-dom/src/modules/attrs.ts
const xlinkNS = "http://www.w3.org/1999/xlink";
function patchAttr(el, key, value, isSVG, instance, isBoolean = (0, _vue_shared.isSpecialBooleanAttr)(key)) {
if (isSVG && key.startsWith("xlink:")) {
if (value == null) el.removeAttributeNS(xlinkNS, key.slice(6, key.length));
else el.setAttributeNS(xlinkNS, key, value);
} else if (value == null || isBoolean && !(0, _vue_shared.includeBooleanAttr)(value)) el.removeAttribute(key);
else el.setAttribute(key, isBoolean ? "" : (0, _vue_shared.isSymbol)(value) ? String(value) : value);
}
//#endregion
//#region packages/runtime-dom/src/modules/props.ts
function patchDOMProp(el, key, value, parentComponent, attrName) {
if (key === "innerHTML" || key === "textContent") {
if (value != null) el[key] = key === "innerHTML" ? unsafeToTrustedHTML(value) : value;
return;
}
const tag = el.tagName;
if (key === "value" && (0, _vue_shared.canSetValueDirectly)(tag)) {
const oldValue = tag === "OPTION" ? el.getAttribute("value") || "" : el.value;
const newValue = value == null ? el.type === "checkbox" ? "on" : "" : String(value);
if (oldValue !== newValue || !("_value" in el)) el.value = newValue;
if (value == null) el.removeAttribute(key);
el._value = value;
return;
}
let needRemove = false;
if (value === "" || value == null) {
const type = typeof el[key];
if (type === "boolean") value = (0, _vue_shared.includeBooleanAttr)(value);
else if (value == null && type === "string") {
value = "";
needRemove = true;
} else if (type === "number") {
value = 0;
needRemove = true;
}
}
try {
el[key] = value;
} catch (e) {}
needRemove && el.removeAttribute(attrName || key);
}
//#endregion
//#region packages/runtime-dom/src/modules/events.ts
function addEventListener(el, event, handler, options) {
el.addEventListener(event, handler, options);
}
function removeEventListener(el, event, handler, options) {
el.removeEventListener(event, handler, options);
}
const veiKey = Symbol("_vei");
function patchEvent(el, rawName, prevValue, nextValue, instance = null) {
const invokers = el[veiKey] || (el[veiKey] = {});
const existingInvoker = invokers[rawName];
if (nextValue && existingInvoker) existingInvoker.value = nextValue;
else {
const [name, options] = parseEventName(rawName);
if (nextValue) addEventListener(el, name, invokers[rawName] = createInvoker(nextValue, instance), options);
else if (existingInvoker) {
removeEventListener(el, name, existingInvoker, options);
invokers[rawName] = void 0;
}
}
}
const optionsModifierRE = /(Once|Passive|Capture)$/;
const optionsModifierEventRE = /^on:?(?:Once|Passive|Capture)$/;
function parseEventName(name) {
let options;
let m;
while ((m = name.match(optionsModifierRE)) && !optionsModifierEventRE.test(name)) {
if (!options) options = {};
name = name.slice(0, name.length - m[1].length);
options[m[1].toLowerCase()] = true;
}
return [name[2] === ":" ? name.slice(3) : (0, _vue_shared.hyphenate)(name.slice(2)), options];
}
let cachedNow = 0;
const p = /*@__PURE__*/ Promise.resolve();
const getNow = () => cachedNow || (p.then(() => cachedNow = 0), cachedNow = Date.now());
function createInvoker(initialValue, instance) {
const invoker = (e) => {
if (!e._vts) e._vts = Date.now();
else if (e._vts <= invoker.attached) return;
const value = invoker.value;
if ((0, _vue_shared.isArray)(value)) {
const originalStop = e.stopImmediatePropagation;
e.stopImmediatePropagation = () => {
originalStop.call(e);
e._stopped = true;
};
const handlers = value.slice();
const args = [e];
for (let i = 0; i < handlers.length; i++) {
if (e._stopped) break;
const handler = handlers[i];
if (handler) (0, _vue_runtime_core.callWithAsyncErrorHandling)(handler, instance, 5, args);
}
} else (0, _vue_runtime_core.callWithAsyncErrorHandling)(value, instance, 5, [e]);
};
invoker.value = initialValue;
invoker.attached = getNow();
return invoker;
}
//#endregion
//#region packages/runtime-dom/src/patchProp.ts
const patchProp = (el, key, prevValue, nextValue, namespace, parentComponent) => {
const isSVG = namespace === "svg";
if (key === "class") patchClass(el, nextValue, isSVG);
else if (key === "style") patchStyle(el, prevValue, nextValue);
else if ((0, _vue_shared.isOn)(key)) {
if (!(0, _vue_shared.isModelListener)(key)) patchEvent(el, key, prevValue, nextValue, parentComponent);
} else if (key[0] === "." ? (key = key.slice(1), true) : key[0] === "^" ? (key = key.slice(1), false) : shouldSetAsProp(el, key, nextValue, isSVG)) {
patchDOMProp(el, key, nextValue, parentComponent);
if (!el.tagName.includes("-") && (key === "value" || key === "checked" || key === "selected")) patchAttr(el, key, nextValue, isSVG, parentComponent, key !== "value");
} else if (el._isVueCE && (shouldSetAsPropForVueCE(el, key) || el._def.__asyncLoader && (/[A-Z]/.test(key) || !(0, _vue_shared.isString)(nextValue)))) patchDOMProp(el, (0, _vue_shared.camelize)(key), nextValue, parentComponent, key);
else {
if (key === "true-value") el._trueValue = nextValue;
else if (key === "false-value") el._falseValue = nextValue;
patchAttr(el, key, nextValue, isSVG, parentComponent);
}
};
function shouldSetAsProp(el, key, value, isSVG) {
if (isSVG) {
if (key === "innerHTML" || key === "textContent") return true;
if (key in el && (0, _vue_shared.isNativeOn)(key) && (0, _vue_shared.isFunction)(value)) return true;
return false;
}
if ((0, _vue_shared.shouldSetAsAttr)(el.tagName, key)) return false;
if ((0, _vue_shared.isNativeOn)(key) && (0, _vue_shared.isString)(value)) return false;
return key in el;
}
function shouldSetAsPropForVueCE(el, key) {
const props = el._def.props;
if (!props) return false;
const camelKey = (0, _vue_shared.camelize)(key);
return Array.isArray(props) ? props.some((prop) => (0, _vue_shared.camelize)(prop) === camelKey) : Object.keys(props).some((prop) => (0, _vue_shared.camelize)(prop) === camelKey);
}
//#endregion
//#region packages/runtime-dom/src/apiCustomElement.ts
const REMOVAL = {};
/*@__NO_SIDE_EFFECTS__*/
function defineCustomElement(options, extraOptions, _createApp) {
let Comp = (0, _vue_runtime_core.defineComponent)(options, extraOptions);
if ((0, _vue_shared.isPlainObject)(Comp)) Comp = (0, _vue_shared.extend)({}, Comp, extraOptions);
class VueCustomElement extends VueElement {
constructor(initialProps) {
super(Comp, initialProps, _createApp);
}
}
VueCustomElement.def = Comp;
return VueCustomElement;
}
const defineSSRCustomElement = ((options, extraOptions) => {
return /* @__PURE__ */ defineCustomElement(options, extraOptions, createSSRApp);
});
const BaseClass = typeof HTMLElement !== "undefined" ? HTMLElement : class {};
var VueElementBase = class VueElementBase extends BaseClass {
constructor(def, props = {}, createAppFn) {
super();
this._isVueCE = true;
this._instance = null;
this._app = null;
this._connected = false;
this._resolved = false;
this._numberProps = null;
this._styleChildren = /* @__PURE__ */ new WeakSet();
this._styleAnchors = /* @__PURE__ */ new WeakMap();
this._patching = false;
this._dirty = false;
this._ob = null;
this._def = def;
this._props = props;
this._createApp = createAppFn;
this._nonce = def.nonce;
if (this._needsHydration()) this._root = this.shadowRoot;
else if (def.shadowRoot !== false) {
this.attachShadow((0, _vue_shared.extend)({}, def.shadowRootOptions, { mode: "open" }));
this._root = this.shadowRoot;
} else this._root = this;
}
connectedCallback() {
if (!this.isConnected) return;
if (!this.shadowRoot && !this._resolved) this._parseSlots();
this._connected = true;
let parent = this;
while (parent = parent && (parent.assignedSlot || parent.parentNode || parent.host)) if (parent instanceof VueElementBase) {
this._parent = parent;
break;
}
if (!this._instance) {
if (this._resolved) this._mountComponent(this._def);
else if (parent && parent._pendingResolve) this._pendingResolve = parent._pendingResolve.then(() => {
this._pendingResolve = void 0;
if (this.isConnected) return this._resolveDef();
});
else this._resolveDef();
}
}
disconnectedCallback() {
this._connected = false;
(0, _vue_runtime_core.nextTick)(() => {
if (!this._connected) {
if (this._ob) {
this._ob.disconnect();
this._ob = null;
}
this._unmount();
if (this._teleportTargets) {
this._teleportTargets.clear();
this._teleportTargets = void 0;
}
}
});
}
_setParent(parent = this._parent) {
if (parent && this._instance) {
this._instance.parent = parent._instance;
this._inheritParentContext(parent);
}
}
_inheritParentContext(parent = this._parent) {
if (parent && this._app) Object.setPrototypeOf(this._app._context.provides, parent._instance.provides);
}
_processMutations(mutations) {
for (const m of mutations) this._setAttr(m.attributeName);
}
/**
* resolve inner component definition (handle possible async component)
*/
_resolveDef() {
if (this._pendingResolve) return this._pendingResolve;
for (let i = 0; i < this.attributes.length; i++) this._setAttr(this.attributes[i].name);
this._ob = new MutationObserver(this._processMutations.bind(this));
this._ob.observe(this, { attributes: true });
const resolve = (def) => {
this._resolved = true;
this._pendingResolve = void 0;
const { props, styles } = def;
let numberProps;
if (props && !(0, _vue_shared.isArray)(props)) for (const key in props) {
const opt = props[key];
if (opt === Number || opt && opt.type === Number) {
if (key in this._props) this._props[key] = (0, _vue_shared.toNumber)(this._props[key]);
(numberProps || (numberProps = Object.create(null)))[(0, _vue_shared.camelize)(key)] = true;
}
}
this._numberProps = numberProps;
this._resolveProps(def);
if (this.shadowRoot) this._applyStyles(styles);
this._mountComponent(def);
};
const asyncDef = this._def.__asyncLoader;
if (asyncDef) {
const { configureApp } = this._def;
this._pendingResolve = asyncDef().then((def) => {
def.configureApp = configureApp;
this._def = def;
resolve(def);
});
return this._pendingResolve;
} else resolve(this._def);
}
_mountComponent(def) {
this._mount(def);
this._processExposed();
}
_processExposed() {
const exposed = this._instance && this._instance.exposed;
if (!exposed) return;
for (const key in exposed) if (!(0, _vue_shared.hasOwn)(this, key)) Object.defineProperty(this, key, { get: () => (0, _vue_runtime_core.unref)(exposed[key]) });
}
_processInstance() {
this._instance.ce = this;
this._instance.isCE = true;
const dispatch = (event, args) => {
this.dispatchEvent(new CustomEvent(event, (0, _vue_shared.isPlainObject)(args[0]) ? (0, _vue_shared.extend)({ detail: args }, args[0]) : { detail: args }));
};
this._instance.emit = (event, ...args) => {
dispatch(event, args);
if ((0, _vue_shared.hyphenate)(event) !== event) dispatch((0, _vue_shared.hyphenate)(event), args);
};
this._setParent();
}
_resolveProps(def) {
const { props } = def;
const declaredPropKeys = (0, _vue_shared.isArray)(props) ? props : Object.keys(props || {});
for (const key of Object.keys(this)) if (key[0] !== "_" && declaredPropKeys.includes(key)) this._setProp(key, this[key]);
for (const key of declaredPropKeys.map(_vue_shared.camelize)) Object.defineProperty(this, key, {
get() {
return this._getProp(key);
},
set(val) {
this._setProp(key, val, true, !this._patching);
}
});
}
_setAttr(key) {
if (key.startsWith("data-v-")) return;
const has = this.hasAttribute(key);
let value = has ? this.getAttribute(key) : REMOVAL;
const camelKey = (0, _vue_shared.camelize)(key);
if (has && this._numberProps && this._numberProps[camelKey]) value = (0, _vue_shared.toNumber)(value);
this._setProp(camelKey, value, false, true);
}
/**
* @internal
*/
_getProp(key) {
return this._props[key];
}
/**
* @internal
*/
_setProp(key, val, shouldReflect = true, shouldUpdate = false) {
if (val !== this._props[key]) {
this._dirty = true;
if (val === REMOVAL) delete this._props[key];
else {
this._props[key] = val;
if (key === "key" && this._app && this._app._ceVNode) this._app._ceVNode.key = val;
}
if (shouldUpdate && this._instance) this._update();
if (shouldReflect) {
const ob = this._ob;
if (ob) {
this._processMutations(ob.takeRecords());
ob.disconnect();
}
if (val === true) this.setAttribute((0, _vue_shared.hyphenate)(key), "");
else if (typeof val === "string" || typeof val === "number") this.setAttribute((0, _vue_shared.hyphenate)(key), val + "");
else if (!val) this.removeAttribute((0, _vue_shared.hyphenate)(key));
ob && ob.observe(this, { attributes: true });
}
}
}
_applyStyles(styles, owner, parentComp) {
if (!styles) return;
if (owner) {
if (owner === this._def || this._styleChildren.has(owner)) return;
this._styleChildren.add(owner);
}
const nonce = this._nonce;
const root = this.shadowRoot;
const insertionAnchor = parentComp ? this._getStyleAnchor(parentComp) || this._getStyleAnchor(this._def) : this._getRootStyleInsertionAnchor(root);
let last = null;
for (let i = styles.length - 1; i >= 0; i--) {
const s = document.createElement("style");
if (nonce) s.setAttribute("nonce", nonce);
s.textContent = styles[i];
root.insertBefore(s, last || insertionAnchor);
last = s;
if (i === 0) {
if (!parentComp) this._styleAnchors.set(this._def, s);
if (owner) this._styleAnchors.set(owner, s);
}
}
}
_getStyleAnchor(comp) {
if (!comp) return null;
const anchor = this._styleAnchors.get(comp);
if (anchor && anchor.parentNode === this.shadowRoot) return anchor;
if (anchor) this._styleAnchors.delete(comp);
return null;
}
_getRootStyleInsertionAnchor(root) {
for (let i = 0; i < root.childNodes.length; i++) {
const node = root.childNodes[i];
if (!(node instanceof HTMLStyleElement)) return node;
}
return null;
}
/**
* Only called when shadowRoot is false
*/
_parseSlots() {
const slots = this._slots = {};
let n;
while (n = this.firstChild) {
const slotName = n.nodeType === 1 && n.getAttribute("slot") || "default";
(slots[slotName] || (slots[slotName] = [])).push(n);
this.removeChild(n);
}
}
/**
* Only called when shadowRoot is false
*/
_renderSlots() {
const outlets = this._getSlots();
const scopeId = this._instance.type.__scopeId;
for (let i = 0; i < outlets.length; i++) {
const o = outlets[i];
const slotName = o.getAttribute("name") || "default";
const content = this._slots[slotName];
const parent = o.parentNode;
if (content) for (const n of content) {
if (scopeId && n.nodeType === 1) {
const id = scopeId + "-s";
const walker = document.createTreeWalker(n, 1);
n.setAttribute(id, "");
let child;
while (child = walker.nextNode()) child.setAttribute(id, "");
}
parent.insertBefore(n, o);
}
else while (o.firstChild) parent.insertBefore(o.firstChild, o);
parent.removeChild(o);
}
}
/**
* @internal
*/
_getSlots() {
const roots = [this];
if (this._teleportTargets) roots.push(...this._teleportTargets);
const slots = /* @__PURE__ */ new Set();
for (const root of roots) {
const found = root.querySelectorAll("slot");
for (let i = 0; i < found.length; i++) slots.add(found[i]);
}
return Array.from(slots);
}
/**
* @internal
*/
_injectChildStyle(comp, parentComp) {
this._applyStyles(comp.styles, comp, parentComp);
}
/**
* @internal
*/
_beginPatch() {
this._patching = true;
this._dirty = false;
}
/**
* @internal
*/
_endPatch() {
this._patching = false;
if (this._dirty && this._instance) this._update();
}
/**
* @internal
*/
_hasShadowRoot() {
return this._root !== this;
}
/**
* @internal
*/
_removeChildStyle(comp) {}
};
var VueElement = class extends VueElementBase {
constructor(def, props = {}, createAppFn = createApp) {
super(def, props, createAppFn);
}
_needsHydration() {
if (this.shadowRoot && this._createApp !== createApp) return true;
return false;
}
_mount(def) {
this._app = this._createApp(def);
this._inheritParentContext();
if (def.configureApp) def.configureApp(this._app);
this._app._ceVNode = this._createVNode();
this._app.mount(this._root);
}
_update() {
if (!this._app) return;
const vnode = this._createVNode();
vnode.appContext = this._app._context;
render(vnode, this._root);
}
_unmount() {
if (this._app) this._app.unmount();
if (this._instance && this._instance.ce) this._instance.ce = void 0;
this._app = this._instance = null;
}
_createVNode() {
const baseProps = {};
if (!this.shadowRoot) baseProps.onVnodeMounted = baseProps.onVnodeUpdated = this._renderSlots.bind(this);
const vnode = (0, _vue_runtime_core.createVNode)(this._def, (0, _vue_shared.extend)(baseProps, this._props));
if (!this._instance) vnode.ce = (instance) => {
this._instance = instance;
this._processInstance();
};
return vnode;
}
};
function useHost(caller) {
const { hasInstance, value } = (0, _vue_runtime_core.useInstanceOption)("ce", true);
const el = value;
if (el) return el;
return null;
}
/**
* Retrieve the shadowRoot of the current custom element. Only usable in setup()
* of a `defineCustomElement` component.
*/
function useShadowRoot() {
const el = useHost();
return el && el.shadowRoot;
}
//#endregion
//#region packages/runtime-dom/src/helpers/useCssModule.ts
function useCssModule(name = "$style") {
{
const { hasInstance, value: type } = (0, _vue_runtime_core.useInstanceOption)("type", true);
if (!hasInstance) return _vue_shared.EMPTY_OBJ;
const modules = type.__cssModules;
if (!modules) return _vue_shared.EMPTY_OBJ;
const mod = modules[name];
if (!mod) return _vue_shared.EMPTY_OBJ;
return mod;
}
}
//#endregion
//#region packages/runtime-dom/src/components/TransitionGroup.ts
const positionMap = /* @__PURE__ */ new WeakMap();
const newPositionMap = /* @__PURE__ */ new WeakMap();
const moveCbKey = Symbol("_moveCb");
const enterCbKey = Symbol("_enterCb");
/**
* Wrap logic that modifies TransitionGroup properties in a function
* so that it can be annotated as pure
*/
const decorate = (t) => {
delete t.props.mode;
return t;
};
const TransitionGroup = /* @__PURE__ */ decorate({
name: "TransitionGroup",
props: /*@__PURE__*/ (0, _vue_shared.extend)({}, TransitionPropsValidators, {
tag: String,
moveClass: String
}),
setup(props, { slots }) {
const instance = (0, _vue_runtime_core.getCurrentInstance)();
const state = (0, _vue_runtime_core.useTransitionState)();
let prevChildren;
let children;
(0, _vue_runtime_core.onUpdated)(() => {
if (!prevChildren.length) return;
const moveClass = props.moveClass || `${props.name || "v"}-move`;
if (!hasCSSTransform(prevChildren[0].el, instance.vnode.el, moveClass)) {
prevChildren = [];
return;
}
prevChildren.forEach((vnode) => callPendingCbs(vnode.el));
prevChildren.forEach(recordPosition);
const movedChildren = prevChildren.filter(applyTranslation);
forceReflow(instance.vnode.el);
movedChildren.forEach((c) => {
const el = c.el;
handleMovedChildren(el, moveClass);
});
prevChildren = [];
});
return () => {
const rawProps = (0, _vue_runtime_core.toRaw)(props);
const cssTransitionProps = resolveTransitionProps(rawProps);
let tag = rawProps.tag || _vue_runtime_core.Fragment;
prevChildren = [];
if (children) for (let i = 0; i < children.length; i++) {
const child = children[i];
if (child.el && child.el instanceof Element && !child.el[vShowHidden]) {
prevChildren.push(child);
(0, _vue_runtime_core.setTransitionHooks)(child, (0, _vue_runtime_core.resolveTransitionHooks)(child, cssTransitionProps, state, instance));
positionMap.set(child, getPosition(child.el));
}
}
children = slots.default ? (0, _vue_runtime_core.getTransitionRawChildren)(slots.default()) : [];
for (let i = 0; i < children.length; i++) {
const child = children[i];
if (child.key != null) (0, _vue_runtime_core.setTransitionHooks)(child, (0, _vue_runtime_core.resolveTransitionHooks)(child, cssTransitionProps, state, instance));
}
return (0, _vue_runtime_core.createVNode)(tag, null, children);
};
}
});
function callPendingCbs(el) {
if (el[moveCbKey]) el[moveCbKey]();
if (el[enterCbKey]) el[enterCbKey]();
}
function recordPosition(c) {
newPositionMap.set(c, getPosition(c.el));
}
function applyTranslation(c) {
if (baseApplyTranslation(positionMap.get(c), newPositionMap.get(c), c.el)) return c;
}
function baseApplyTranslation(oldPos, newPos, el) {
const dx = oldPos.left - newPos.left;
const dy = oldPos.top - newPos.top;
if (dx || dy) {
const s = el.style;
const rect = el.getBoundingClientRect();
let scaleX = 1;
let scaleY = 1;
if (el.offsetWidth) scaleX = rect.width / el.offsetWidth;
if (el.offsetHeight) scaleY = rect.height / el.offsetHeight;
if (!Number.isFinite(scaleX) || scaleX === 0) scaleX = 1;
if (!Number.isFinite(scaleY) || scaleY === 0) scaleY = 1;
if (Math.abs(scaleX - 1) < .01) scaleX = 1;
if (Math.abs(scaleY - 1) < .01) scaleY = 1;
s.transform = s.webkitTransform = `translate(${dx / scaleX}px,${dy / scaleY}px)`;
s.transitionDuration = "0s";
return true;
}
return false;
}
function getPosition(el) {
const rect = el.getBoundingClientRect();
return {
left: rect.left,
top: rect.top
};
}
function hasCSSTransform(el, root, moveClass) {
const clone = el.cloneNode();
const _vtc = el[vtcKey];
if (_vtc) _vtc.forEach((cls) => {
cls.split(/\s+/).forEach((c) => c && clone.classList.remove(c));
});
moveClass.split(/\s+/).forEach((c) => c && clone.classList.add(c));
clone.style.display = "none";
const container = root.nodeType === 1 ? root : root.parentNode;
container.appendChild(clone);
const { hasTransform } = getTransitionInfo(clone);
container.removeChild(clone);
return hasTransform;
}
const handleMovedChildren = (el, moveClass) => {
const style = el.style;
addTransitionClass(el, moveClass);
style.transform = style.webkitTransform = style.transitionDuration = "";
const cb = el[moveCbKey] = (e) => {
if (e && e.target !== el) return;
if (!e || e.propertyName.endsWith("transform")) {
el.removeEventListener("transitionend", cb);
el[moveCbKey] = null;
removeTransitionClass(el, moveClass);
}
};
el.addEventListener("transitionend", cb);
};
//#endregion
//#region packages/runtime-dom/src/directives/vModel.ts
const getModelAssigner = (vnode) => {
const fn = vnode.props["onUpdate:modelValue"] || false;
return (0, _vue_shared.isArray)(fn) ? (value) => (0, _vue_shared.invokeArrayFns)(fn, value) : fn;
};
function onCompositionStart(e) {
e.target.composing = true;
}
function onCompositionEnd(e) {
const target = e.target;
if (target.composing) {
target.composing = false;
target.dispatchEvent(new Event("input"));
}
}
const assignKey = Symbol("_assign");
const initialValueKey = Symbol("_initialValue");
const vModelText = {
created(el, { modifiers: { lazy, trim, number } }, vnode) {
if (el.parentNode) {
if (el.type === "text") el[initialValueKey] = el.defaultValue.replace(/[\r\n]/g, "");
else if (el.type === "textarea") el[initialValueKey] = el.defaultValue.replace(/\r\n?/g, "\n");
}
el[assignKey] = getModelAssigner(vnode);
vModelTextInit(el, trim, number || !!(vnode.props && vnode.props.type === "number"), lazy);
},
mounted(el, { value, modifiers: { trim, number } }) {
const newValue = value == null ? "" : value;
const initialValue = el[initialValueKey];
delete el[initialValueKey];
if (initialValue !== void 0 && (el.type === "text" || el.type === "textarea") && el.value !== initialValue) el[assignKey](castValue(el.value, trim, number));
else el.value = newValue;
},
beforeUpdate(el, { value, oldValue, modifiers: { lazy, trim, number } }, vnode) {
el[assignKey] = getModelAssigner(vnode);
vModelTextUpdate(el, oldValue, value, trim, number, lazy);
}
};
function castValue(value, trim, number) {
if (trim) value = value.trim();
if (number) value = (0, _vue_shared.looseToNumber)(value);
return value;
}
/**
* @internal
*/
const vModelTextInit = (el, trim, number, lazy, set) => {
addEventListener(el, lazy ? "change" : "input", (e) => {
if (e.target.composing) return;
(set || el[assignKey])(castValue(el.value, trim, number || el.type === "number"));
});
if (trim || number) addEventListener(el, "change", () => {
el.value = castValue(el.value, trim, number || el.type === "number");
});
if (!lazy) {
addEventListener(el, "compositionstart", onCompositionStart);
addEventListener(el, "compositionend", onCompositionEnd);
addEventListener(el, "change", onCompositionEnd);
}
};
/**
* @internal
*/
const vModelTextUpdate = (el, oldValue, value, trim, number, lazy) => {
if (el.composing) return;
const elValue = (number || el.type === "number") && !/^0\d/.test(el.value) ? (0, _vue_shared.looseToNumber)(el.value) : el.value;
const newValue = value == null ? "" : value;
if (elValue === newValue) return;
const rootNode = el.getRootNode();
if ((rootNode instanceof Document || rootNode instanceof ShadowRoot) && rootNode.activeElement === el && el.type !== "range") {
if (lazy && value === oldValue) return;
if (trim && el.value.trim() === newValue) return;
}
el.value = newValue;
};
const vModelCheckbox = {
deep: true,
created(el, _, vnode) {
el[assignKey] = getModelAssigner(vnode);
vModelCheckboxInit(el);
},
mounted(el, binding, vnode) {
vModelCheckboxUpdate(el, binding.oldValue, binding.value, vnode.props.value);
},
beforeUpdate(el, binding, vnode) {
el[assignKey] = getModelAssigner(vnode);
vModelCheckboxUpdate(el, binding.oldValue, binding.value, vnode.props.value);
}
};
/**
* @internal
*/
const vModelCheckboxInit = (el, set) => {
addEventListener(el, "change", () => {
const assign = set || el[assignKey];
const modelValue = el._modelValue;
const elementValue = getValue(el);
const checked = el.checked;
if ((0, _vue_shared.isArray)(modelValue)) {
const index = (0, _vue_shared.looseIndexOf)(modelValue, elementValue);
const found = index !== -1;
if (checked && !found) assign(modelValue.concat(elementValue));
else if (!checked && found) {
const filtered = [...modelValue];
filtered.splice(index, 1);
assign(filtered);
}
} else if ((0, _vue_shared.isSet)(modelValue)) {
const cloned = new Set(modelValue);
if (checked) cloned.add(elementValue);
else cloned.delete(elementValue);
assign(cloned);
} else assign(getCheckboxValue(el, checked));
});
};
/**
* @internal
*/
const vModelCheckboxUpdate = (el, oldValue, value, rawValue = getValue(el)) => {
el._modelValue = value;
let checked;
if ((0, _vue_shared.isArray)(value)) checked = (0, _vue_shared.looseIndexOf)(value, rawValue) > -1;
else if ((0, _vue_shared.isSet)(value)) checked = value.has(rawValue);
else {
if (value === oldValue) return;
checked = (0, _vue_shared.looseEqual)(value, getCheckboxValue(el, true));
}
if (el.checked !== checked) el.checked = checked;
};
const vModelRadio = {
created(el, { value }, vnode) {
el.checked = (0, _vue_shared.looseEqual)(value, vnode.props.value);
el[assignKey] = getModelAssigner(vnode);
addEventListener(el, "change", () => {
el[assignKey](getValue(el));
});
},
beforeUpdate(el, { value, oldValue }, vnode) {
el[assignKey] = getModelAssigner(vnode);
if (value !== oldValue) el.checked = (0, _vue_shared.looseEqual)(value, vnode.props.value);
}
};
const vModelSelect = {
deep: true,
created(el, { value, modifiers: { number } }, vnode) {
vModelSelectInit(el, value, number);
el[assignKey] = getModelAssigner(vnode);
},
mounted(el, { value }) {
vModelSetSelected(el, value);
},
beforeUpdate(el, { value }, vnode) {
el._modelValue = value;
el[assignKey] = getModelAssigner(vnode);
},
updated(el, { value }) {
vModelSetSelected(el, value);
}
};
/**
* @internal
*/
const vModelSelectInit = (el, value, number, set) => {
el._modelValue = value;
addEventListener(el, "change", () => {
const selectedVal = Array.prototype.filter.call(el.options, (o) => o.selected).map((o) => number ? (0, _vue_shared.looseToNumber)(getValue(o)) : getValue(o));
const multiple = el.multiple;
const assignedValue = multiple ? (0, _vue_shared.isSet)(el._modelValue) ? new Set(selectedVal) : selectedVal : selectedVal[0];
const pending = el._pendingValue = [multiple, multiple ? (0, _vue_shared.isArray)(assignedValue) ? selectedVal.slice() : selectedVal : assignedValue];
try {
(set || el[assignKey])(assignedValue);
} finally {
(0, _vue_runtime_core.nextTick)(() => {
if (el._pendingValue === pending) el._pendingValue = void 0;
});
}
});
};
function isSameSelectValue(value, assignedValue, multiple) {
if (!multiple) return (0, _vue_shared.looseEqual)(value, assignedValue);
if ((0, _vue_shared.isArray)(value)) return (0, _vue_shared.looseEqual)(value, assignedValue);
if ((0, _vue_shared.isSet)(value)) {
if (value.size !== assignedValue.length) return false;
for (const item of assignedValue) if (!value.has(item)) return false;
return true;
}
return false;
}
/**
* @internal
*/
const vModelSetSelected = (el, value) => {
el._modelValue = value;
const pending = el._pendingValue;
el._pendingValue = void 0;
if (pending && pending[0] === el.multiple && isSameSelectValue(value, pending[1], pending[0])) return;
setSelected(el, value);
};
function setSelected(el, value) {
const isMultiple = el.multiple;
const isArrayValue = (0, _vue_shared.isArray)(value);
if (isMultiple && !isArrayValue && !(0, _vue_shared.isSet)(value)) return;
for (let i = 0, l = el.options.length; i < l; i++) {
const option = el.options[i];
const optionValue = getValue(option);
if (isMultiple) {
if (isArrayValue) {
const optionType = typeof optionValue;
if (optionType === "string" || optionType === "number") option.selected = value.some((v) => String(v) === String(optionValue));
else option.selected = (0, _vue_shared.looseIndexOf)(value, optionValue) > -1;
} else option.selected = value.has(optionValue);
} else if ((0, _vue_shared.looseEqual)(getValue(option), value)) {
if (el.selectedIndex !== i) el.selectedIndex = i;
return;
}
}
if (!isMultiple && el.selectedIndex !== -1) el.selectedIndex = -1;
}
/**
* @internal retrieve raw value set via :value bindings
*/
function getValue(el) {
return "_value" in el ? el._value : el.value;
}
function getCheckboxValue(el, checked) {
const key = checked ? "_trueValue" : "_falseValue";
if (key in el) return el[key];
const attr = checked ? "true-value" : "false-value";
if (el.hasAttribute(attr)) return el.getAttribute(attr);
return checked;
}
const vModelDynamic = {
created(el, binding, vnode) {
callModelHook(el, binding, vnode, null, "created");
},
mounted(el, binding, vnode) {
callModelHook(el, binding, vnode, null, "mounted");
},
beforeUpdate(el, binding, vnode, prevVNode) {
callModelHook(el, binding, vnode, prevVNode, "beforeUpdate");
},
updated(el, binding, vnode, prevVNode) {
callModelHook(el, binding, vnode, prevVNode, "updated");
}
};
function resolveDynamicModel(tagName, type) {
switch (tagName) {
case "SELECT": return vModelSelect;
case "TEXTAREA": return vModelText;
default: switch (type) {
case "checkbox": return vModelCheckbox;
case "radio": return vModelRadio;
default: return vModelText;
}
}
}
function callModelHook(el, binding, vnode, prevVNode, hook) {
const fn = resolveDynamicModel(el.tagName, vnode.props && vnode.props.type)[hook];
fn && fn(el, binding, vnode, prevVNode);
}
function initVModelForSSR() {
vModelText.getSSRProps = ({ value }) => ({ value });
vModelRadio.getSSRProps = ({ value }, vnode) => {
if (vnode.props && (0, _vue_shared.looseEqual)(vnode.props.value, value)) return { checked: true };
};
vModelCheckbox.getSSRProps = ({ value }, vnode) => {
if ((0, _vue_shared.isArray)(value)) {
if (vnode.props && (0, _vue_shared.looseIndexOf)(value, vnode.props.value) > -1) return { checked: true };
} else if ((0, _vue_shared.isSet)(value)) {
if (vnode.props && value.has(vnode.props.value)) return { checked: true };
} else if (value) return { checked: true };
};
vModelDynamic.getSSRProps = (binding, vnode) => {
if (typeof vnode.type !== "string") return;
const modelToUse = resolveDynamicModel(vnode.type.toUpperCase(), vnode.props && vnode.props.type);
if (modelToUse.getSSRProps) return modelToUse.getSSRProps(binding, vnode);
};
}
//#endregion
//#region packages/runtime-dom/src/directives/vOn.ts
const systemModifiers = [
"ctrl",
"shift",
"alt",
"meta"
];
const modifierGuards = {
stop: (e) => e.stopPropagation(),
prevent: (e) => e.preventDefault(),
self: (e) => e.target !== e.currentTarget,
ctrl: (e) => !e.ctrlKey,
shift: (e) => !e.shiftKey,
alt: (e) => !e.altKey,
meta: (e) => !e.metaKey,
left: (e) => "button" in e && e.button !== 0,
middle: (e) => "button" in e && e.button !== 1,
right: (e) => "button" in e && e.button !== 2,
exact: (e, modifiers) => systemModifiers.some((m) => e[`${m}Key`] && !modifiers.includes(m))
};
/**
* @private
*/
const withModifiers = (fn, modifiers) => {
if (!fn) return fn;
const cache = fn._withMods || (fn._withMods = {});
const cacheKey = modifiers.join(".");
return cache[cacheKey] || (cache[cacheKey] = ((event, ...args) => {
for (let i = 0; i < modifiers.length; i++) {
const guard = modifierGuards[modifiers[i]];
if (guard && guard(event, modifiers)) return;
}
return fn(event, ...args);
}));
};
const keyNames = {
esc: "escape",
space: " ",
up: "arrow-up",
left: "arrow-left",
right: "arrow-right",
down: "arrow-down",
delete: "backspace"
};
/**
* @private
*/
const withKeys = (fn, modifiers) => {
const cache = fn._withKeys || (fn._withKeys = {});
const cacheKey = modifiers.join(".");
return cache[cacheKey] || (cache[cacheKey] = ((event) => {
if (!("key" in event)) return;
const eventKey = (0, _vue_shared.hyphenate)(event.key);
if (modifiers.some((k) => k === eventKey || keyNames[k] === eventKey)) return fn(event);
}));
};
//#endregion
//#region packages/runtime-dom/src/index.ts
const rendererOptions = /*@__PURE__*/ (0, _vue_shared.extend)({ patchProp }, nodeOps);
let renderer;
let enabledHydration = false;
function ensureRenderer() {
return renderer || (renderer = (0, _vue_runtime_core.createRenderer)(rendererOptions));
}
function ensureHydrationRenderer() {
renderer = enabledHydration ? renderer : (0, _vue_runtime_core.createHydrationRenderer)(rendererOptions);
enabledHydration = true;
return renderer;
}
const render = ((...args) => {
ensureRenderer().render(...args);
});
const hydrate = ((...args) => {
ensureHydrationRenderer().hydrate(...args);
});
const createApp = ((...args) => {
const app = ensureRenderer().createApp(...args);
const { mount } = app;
app.mount = (containerOrSelector) => {
const container = normalizeContainer(containerOrSelector);
if (!container) return;
const component = app._component;
if (!(0, _vue_shared.isFunction)(component) && !component.render && !component.template) component.template = container.innerHTML;
if (container.nodeType === 1) container.textContent = "";
const proxy = mount(container, false, resolveRootNamespace(container));
if (container instanceof Element) {
container.removeAttribute("v-cloak");
container.setAttribute("data-v-app", "");
}
return proxy;
};
return app;
});
const createSSRApp = ((...args) => {
(0, _vue_runtime_core.setIsHydratingEnabled)(true);
const app = ensureHydrationRenderer().createApp(...args);
const { mount } = app;
app.mount = (containerOrSelector) => {
const container = normalizeContainer(containerOrSelector);
if (container) return mount(container, true, resolveRootNamespace(container));
};
return app;
});
function resolveRootNamespace(container) {
if (container instanceof SVGElement) return "svg";
if (typeof MathMLElement === "function" && container instanceof MathMLElement) return "mathml";
}
/**
* @internal
*/
function normalizeContainer(container) {
if ((0, _vue_shared.isString)(container)) return document.querySelector(container);
return container;
}
let ssrDirectiveInitialized = false;
/**
* @internal
*/
const initDirectivesForSSR = () => {
if (!ssrDirectiveInitialized) {
ssrDirectiveInitialized = true;
initVModelForSSR();
initVShowForSSR();
}
};
//#endregion
exports.Transition = Transition;
exports.TransitionGroup = TransitionGroup;
exports.VueElement = VueElement;
exports.VueElementBase = VueElementBase;
exports.createApp = createApp;
exports.createSSRApp = createSSRApp;
exports.defineCustomElement = defineCustomElement;
exports.defineSSRCustomElement = defineSSRCustomElement;
exports.hydrate = hydrate;
exports.initDirectivesForSSR = initDirectivesForSSR;
exports.nodeOps = nodeOps;
exports.patchProp = patchProp;
exports.render = render;
exports.useCssModule = useCssModule;
exports.useCssVars = useCssVars;
exports.useHost = useHost;
exports.useShadowRoot = useShadowRoot;
exports.vModelCheckbox = vModelCheckbox;
exports.vModelDynamic = vModelDynamic;
exports.vModelRadio = vModelRadio;
exports.vModelSelect = vModelSelect;
exports.vModelText = vModelText;
exports.vShow = vShow;
exports.withKeys = withKeys;
exports.withModifiers = withModifiers;
Object.keys(_vue_runtime_core).forEach(function(k) {
if (k !== "default" && !Object.prototype.hasOwnProperty.call(exports, k)) Object.defineProperty(exports, k, {
enumerable: true,
get: function() {
return _vue_runtime_core[k];
}
});
});