6629 lines
205 KiB
JavaScript
6629 lines
205 KiB
JavaScript
import { isFunction, isPromise, isArray, isString, camelize, capitalize, NOOP, EMPTY_OBJ, extend, remove, isObject, toHandlerKey, getGlobalThis, normalizeClass, normalizeStyle, isOn, hyphenate, hasChanged, toNumber, isSet, isMap, isPlainObject, invokeArrayFns, isRegExp, EMPTY_ARR, isModelListener, isReservedProp, looseToNumber, hasOwn, isGloballyAllowed, NO, def } from '@vue/shared';
|
|
export { camelize, capitalize, normalizeClass, normalizeProps, normalizeStyle, toDisplayString, toHandlerKey } from '@vue/shared';
|
|
import { isRef, isShallow, isReactive, ReactiveEffect, getCurrentScope, ref, pauseTracking, resetTracking, isProxy, computed as computed$1, customRef, toRaw, proxyRefs, track, markRaw, reactive, EffectScope, shallowReactive, trigger } from '@vue/reactivity';
|
|
export { EffectScope, ReactiveEffect, TrackOpTypes, TriggerOpTypes, customRef, effect, effectScope, getCurrentScope, isProxy, isReactive, isReadonly, isRef, isShallow, markRaw, onScopeDispose, proxyRefs, reactive, readonly, ref, shallowReactive, shallowReadonly, shallowRef, stop, toRaw, toRef, toRefs, toValue, triggerRef, unref } from '@vue/reactivity';
|
|
import { isRootHook, isRootImmediateHook, ON_LOAD, UniInputElement, UniTextAreaElement, UniElement, UniTextNode, UniCommentNode, forcePatchProp, JSON_PROTOCOL, resolveOwnerEl, ATTR_V_OWNER_ID, ATTR_V_RENDERJS } from '@dcloudio/uni-shared';
|
|
|
|
/**
|
|
* @dcloudio/uni-app-service-vue v3.4.21
|
|
* (c) 2018-present Yuxi (Evan) You and Vue contributors
|
|
* @license MIT
|
|
**/
|
|
|
|
var stack = [];
|
|
function warn$1(msg) {
|
|
pauseTracking();
|
|
var instance = stack.length ? stack[stack.length - 1].component : null;
|
|
var appWarnHandler = instance && instance.appContext.config.warnHandler;
|
|
var trace = getComponentTrace();
|
|
for (var _len = arguments.length, args = new Array(_len > 1 ? _len - 1 : 0), _key = 1; _key < _len; _key++) {
|
|
args[_key - 1] = arguments[_key];
|
|
}
|
|
if (appWarnHandler) {
|
|
callWithErrorHandling(appWarnHandler, instance, 11, [msg + args.map(a => {
|
|
var _a, _b;
|
|
return (_b = (_a = a.toString) == null ? void 0 : _a.call(a)) != null ? _b : JSON.stringify(a);
|
|
}).join(""), instance && instance.proxy, trace.map(_ref => {
|
|
var {
|
|
vnode
|
|
} = _ref;
|
|
return "at <".concat(formatComponentName(instance, vnode.type), ">");
|
|
}).join("\n"), trace]);
|
|
} else {
|
|
var warnArgs = ["[Vue warn]: ".concat(msg), ...args];
|
|
if (trace.length &&
|
|
// avoid spamming console during tests
|
|
true) {
|
|
warnArgs.push("\n", ...formatTrace(trace));
|
|
}
|
|
console.warn(...warnArgs);
|
|
}
|
|
resetTracking();
|
|
}
|
|
function getComponentTrace() {
|
|
var currentVNode = stack[stack.length - 1];
|
|
if (!currentVNode) {
|
|
return [];
|
|
}
|
|
var normalizedStack = [];
|
|
while (currentVNode) {
|
|
var last = normalizedStack[0];
|
|
if (last && last.vnode === currentVNode) {
|
|
last.recurseCount++;
|
|
} else {
|
|
normalizedStack.push({
|
|
vnode: currentVNode,
|
|
recurseCount: 0
|
|
});
|
|
}
|
|
var parentInstance = currentVNode.component && currentVNode.component.parent;
|
|
currentVNode = parentInstance && parentInstance.vnode;
|
|
}
|
|
return normalizedStack;
|
|
}
|
|
function formatTrace(trace) {
|
|
var logs = [];
|
|
trace.forEach((entry, i) => {
|
|
logs.push(...(i === 0 ? [] : ["\n"]), ...formatTraceEntry(entry));
|
|
});
|
|
return logs;
|
|
}
|
|
function formatTraceEntry(_ref2) {
|
|
var {
|
|
vnode,
|
|
recurseCount
|
|
} = _ref2;
|
|
var postfix = recurseCount > 0 ? "... (".concat(recurseCount, " recursive calls)") : "";
|
|
var isRoot = vnode.component ? vnode.component.parent == null : false;
|
|
var open = " at <".concat(formatComponentName(vnode.component, vnode.type, isRoot));
|
|
var close = ">" + postfix;
|
|
return vnode.props ? [open, ...formatProps(vnode.props), close] : [open + close];
|
|
}
|
|
function formatProps(props) {
|
|
var res = [];
|
|
var keys = Object.keys(props);
|
|
keys.slice(0, 3).forEach(key => {
|
|
res.push(...formatProp(key, props[key]));
|
|
});
|
|
if (keys.length > 3) {
|
|
res.push(" ...");
|
|
}
|
|
return res;
|
|
}
|
|
function formatProp(key, value, raw) {
|
|
if (isString(value)) {
|
|
value = JSON.stringify(value);
|
|
return raw ? value : ["".concat(key, "=").concat(value)];
|
|
} else if (typeof value === "number" || typeof value === "boolean" || value == null) {
|
|
return raw ? value : ["".concat(key, "=").concat(value)];
|
|
} else if (isRef(value)) {
|
|
value = formatProp(key, toRaw(value.value), true);
|
|
return raw ? value : ["".concat(key, "=Ref<"), value, ">"];
|
|
} else if (isFunction(value)) {
|
|
return ["".concat(key, "=fn").concat(value.name ? "<".concat(value.name, ">") : "")];
|
|
} else {
|
|
value = toRaw(value);
|
|
return raw ? value : ["".concat(key, "="), value];
|
|
}
|
|
}
|
|
function assertNumber(val, type) {
|
|
return;
|
|
}
|
|
var ErrorCodes = {
|
|
"SETUP_FUNCTION": 0,
|
|
"0": "SETUP_FUNCTION",
|
|
"RENDER_FUNCTION": 1,
|
|
"1": "RENDER_FUNCTION",
|
|
"WATCH_GETTER": 2,
|
|
"2": "WATCH_GETTER",
|
|
"WATCH_CALLBACK": 3,
|
|
"3": "WATCH_CALLBACK",
|
|
"WATCH_CLEANUP": 4,
|
|
"4": "WATCH_CLEANUP",
|
|
"NATIVE_EVENT_HANDLER": 5,
|
|
"5": "NATIVE_EVENT_HANDLER",
|
|
"COMPONENT_EVENT_HANDLER": 6,
|
|
"6": "COMPONENT_EVENT_HANDLER",
|
|
"VNODE_HOOK": 7,
|
|
"7": "VNODE_HOOK",
|
|
"DIRECTIVE_HOOK": 8,
|
|
"8": "DIRECTIVE_HOOK",
|
|
"TRANSITION_HOOK": 9,
|
|
"9": "TRANSITION_HOOK",
|
|
"APP_ERROR_HANDLER": 10,
|
|
"10": "APP_ERROR_HANDLER",
|
|
"APP_WARN_HANDLER": 11,
|
|
"11": "APP_WARN_HANDLER",
|
|
"FUNCTION_REF": 12,
|
|
"12": "FUNCTION_REF",
|
|
"ASYNC_COMPONENT_LOADER": 13,
|
|
"13": "ASYNC_COMPONENT_LOADER",
|
|
"SCHEDULER": 14,
|
|
"14": "SCHEDULER"
|
|
};
|
|
var ErrorTypeStrings$1 = {
|
|
["sp"]: "serverPrefetch hook",
|
|
["bc"]: "beforeCreate hook",
|
|
["c"]: "created hook",
|
|
["bm"]: "beforeMount hook",
|
|
["m"]: "mounted hook",
|
|
["bu"]: "beforeUpdate hook",
|
|
["u"]: "updated",
|
|
["bum"]: "beforeUnmount hook",
|
|
["um"]: "unmounted hook",
|
|
["a"]: "activated hook",
|
|
["da"]: "deactivated hook",
|
|
["ec"]: "errorCaptured hook",
|
|
["rtc"]: "renderTracked hook",
|
|
["rtg"]: "renderTriggered hook",
|
|
[0]: "setup function",
|
|
[1]: "render function",
|
|
[2]: "watcher getter",
|
|
[3]: "watcher callback",
|
|
[4]: "watcher cleanup function",
|
|
[5]: "native event handler",
|
|
[6]: "component event handler",
|
|
[7]: "vnode hook",
|
|
[8]: "directive hook",
|
|
[9]: "transition hook",
|
|
[10]: "app errorHandler",
|
|
[11]: "app warnHandler",
|
|
[12]: "ref function",
|
|
[13]: "async component loader",
|
|
[14]: "scheduler flush. This is likely a Vue internals bug. Please open an issue at https://github.com/vuejs/core ."
|
|
};
|
|
function callWithErrorHandling(fn, instance, type, args) {
|
|
try {
|
|
return args ? fn(...args) : fn();
|
|
} catch (err) {
|
|
handleError(err, instance, type);
|
|
}
|
|
}
|
|
function callWithAsyncErrorHandling(fn, instance, type, args) {
|
|
if (isFunction(fn)) {
|
|
var res = callWithErrorHandling(fn, instance, type, args);
|
|
if (res && isPromise(res)) {
|
|
res.catch(err => {
|
|
handleError(err, instance, type);
|
|
});
|
|
}
|
|
return res;
|
|
}
|
|
var values = [];
|
|
for (var i = 0; i < fn.length; i++) {
|
|
values.push(callWithAsyncErrorHandling(fn[i], instance, type, args));
|
|
}
|
|
return values;
|
|
}
|
|
function handleError(err, instance, type) {
|
|
var throwInDev = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : true;
|
|
var contextVNode = instance ? instance.vnode : null;
|
|
if (instance) {
|
|
var cur = instance.parent;
|
|
var exposedInstance = instance.proxy;
|
|
var errorInfo = "https://vuejs.org/error-reference/#runtime-".concat(type);
|
|
while (cur) {
|
|
var errorCapturedHooks = cur.ec;
|
|
if (errorCapturedHooks) {
|
|
for (var i = 0; i < errorCapturedHooks.length; i++) {
|
|
if (errorCapturedHooks[i](err, exposedInstance, errorInfo) === false) {
|
|
return;
|
|
}
|
|
}
|
|
}
|
|
cur = cur.parent;
|
|
}
|
|
var appErrorHandler = instance.appContext.config.errorHandler;
|
|
if (appErrorHandler) {
|
|
callWithErrorHandling(appErrorHandler, null, 10, [err, exposedInstance, errorInfo]);
|
|
return;
|
|
}
|
|
}
|
|
logError(err, type, contextVNode, throwInDev);
|
|
}
|
|
function logError(err, type, contextVNode) {
|
|
var throwInDev = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : true;
|
|
{
|
|
console.error(err);
|
|
}
|
|
}
|
|
var isFlushing = false;
|
|
var isFlushPending = false;
|
|
var queue = [];
|
|
var flushIndex = 0;
|
|
var pendingPostFlushCbs = [];
|
|
var activePostFlushCbs = null;
|
|
var postFlushIndex = 0;
|
|
var iOSPromise = {
|
|
then(callback) {
|
|
setTimeout(() => callback(), 0);
|
|
}
|
|
};
|
|
var isIOS = exports.platform === "iOS";
|
|
var resolvedPromise = isIOS ? iOSPromise : Promise.resolve();
|
|
var currentFlushPromise = null;
|
|
function nextTick(fn) {
|
|
var p = currentFlushPromise || resolvedPromise;
|
|
return fn ? p.then(this ? fn.bind(this) : fn) : p;
|
|
}
|
|
function findInsertionIndex(id) {
|
|
var start = flushIndex + 1;
|
|
var end = queue.length;
|
|
while (start < end) {
|
|
var middle = start + end >>> 1;
|
|
var middleJob = queue[middle];
|
|
var middleJobId = getId(middleJob);
|
|
if (middleJobId < id || middleJobId === id && middleJob.pre) {
|
|
start = middle + 1;
|
|
} else {
|
|
end = middle;
|
|
}
|
|
}
|
|
return start;
|
|
}
|
|
function queueJob(job) {
|
|
if (!queue.length || !queue.includes(job, isFlushing && job.allowRecurse ? flushIndex + 1 : flushIndex)) {
|
|
if (job.id == null) {
|
|
queue.push(job);
|
|
} else {
|
|
queue.splice(findInsertionIndex(job.id), 0, job);
|
|
}
|
|
queueFlush();
|
|
}
|
|
}
|
|
function queueFlush() {
|
|
if (!isFlushing && !isFlushPending) {
|
|
isFlushPending = true;
|
|
currentFlushPromise = resolvedPromise.then(flushJobs);
|
|
}
|
|
}
|
|
function invalidateJob(job) {
|
|
var i = queue.indexOf(job);
|
|
if (i > flushIndex) {
|
|
queue.splice(i, 1);
|
|
}
|
|
}
|
|
function queuePostFlushCb(cb) {
|
|
if (!isArray(cb)) {
|
|
if (!activePostFlushCbs || !activePostFlushCbs.includes(cb, cb.allowRecurse ? postFlushIndex + 1 : postFlushIndex)) {
|
|
pendingPostFlushCbs.push(cb);
|
|
}
|
|
} else {
|
|
pendingPostFlushCbs.push(...cb);
|
|
}
|
|
queueFlush();
|
|
}
|
|
function flushPreFlushCbs(instance, seen) {
|
|
var i = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : isFlushing ? flushIndex + 1 : 0;
|
|
for (; i < queue.length; i++) {
|
|
var cb = queue[i];
|
|
if (cb && cb.pre) {
|
|
if (instance && cb.id !== instance.uid) {
|
|
continue;
|
|
}
|
|
queue.splice(i, 1);
|
|
i--;
|
|
cb();
|
|
}
|
|
}
|
|
}
|
|
function flushPostFlushCbs(seen) {
|
|
if (pendingPostFlushCbs.length) {
|
|
var deduped = [...new Set(pendingPostFlushCbs)].sort((a, b) => getId(a) - getId(b));
|
|
pendingPostFlushCbs.length = 0;
|
|
if (activePostFlushCbs) {
|
|
activePostFlushCbs.push(...deduped);
|
|
return;
|
|
}
|
|
activePostFlushCbs = deduped;
|
|
for (postFlushIndex = 0; postFlushIndex < activePostFlushCbs.length; postFlushIndex++) {
|
|
activePostFlushCbs[postFlushIndex]();
|
|
}
|
|
activePostFlushCbs = null;
|
|
postFlushIndex = 0;
|
|
}
|
|
}
|
|
var getId = job => job.id == null ? Infinity : job.id;
|
|
var comparator = (a, b) => {
|
|
var diff = getId(a) - getId(b);
|
|
if (diff === 0) {
|
|
if (a.pre && !b.pre) return -1;
|
|
if (b.pre && !a.pre) return 1;
|
|
}
|
|
return diff;
|
|
};
|
|
function flushJobs(seen) {
|
|
isFlushPending = false;
|
|
isFlushing = true;
|
|
queue.sort(comparator);
|
|
var check = NOOP;
|
|
try {
|
|
for (flushIndex = 0; flushIndex < queue.length; flushIndex++) {
|
|
var job = queue[flushIndex];
|
|
if (job && job.active !== false) {
|
|
if (!!("production" !== "production") && check(job)) ;
|
|
callWithErrorHandling(job, null, 14);
|
|
}
|
|
}
|
|
} finally {
|
|
flushIndex = 0;
|
|
queue.length = 0;
|
|
flushPostFlushCbs();
|
|
isFlushing = false;
|
|
currentFlushPromise = null;
|
|
if (queue.length || pendingPostFlushCbs.length) {
|
|
flushJobs();
|
|
}
|
|
}
|
|
}
|
|
var devtools$1;
|
|
var buffer = [];
|
|
var devtoolsNotInstalled = false;
|
|
function emit$1(event) {
|
|
for (var _len2 = arguments.length, args = new Array(_len2 > 1 ? _len2 - 1 : 0), _key2 = 1; _key2 < _len2; _key2++) {
|
|
args[_key2 - 1] = arguments[_key2];
|
|
}
|
|
if (devtools$1) {
|
|
devtools$1.emit(event, ...args);
|
|
} else if (!devtoolsNotInstalled) {
|
|
buffer.push({
|
|
event,
|
|
args
|
|
});
|
|
}
|
|
}
|
|
function setDevtoolsHook$1(hook, target) {
|
|
var _a, _b;
|
|
devtools$1 = hook;
|
|
if (devtools$1) {
|
|
devtools$1.enabled = true;
|
|
buffer.forEach(_ref3 => {
|
|
var {
|
|
event,
|
|
args
|
|
} = _ref3;
|
|
return devtools$1.emit(event, ...args);
|
|
});
|
|
buffer = [];
|
|
} else if (
|
|
// handle late devtools injection - only do this if we are in an actual
|
|
// browser environment to avoid the timer handle stalling test runner exit
|
|
// (#4815)
|
|
typeof window !== "undefined" &&
|
|
// some envs mock window but not fully
|
|
// eslint-disable-next-line no-restricted-globals
|
|
window.HTMLElement &&
|
|
// also exclude jsdom
|
|
// eslint-disable-next-line no-restricted-globals
|
|
!((_b = (_a = window.navigator) == null ? void 0 : _a.userAgent) == null ? void 0 : _b.includes("jsdom"))) {
|
|
var replay = target.__VUE_DEVTOOLS_HOOK_REPLAY__ = target.__VUE_DEVTOOLS_HOOK_REPLAY__ || [];
|
|
replay.push(newHook => {
|
|
setDevtoolsHook$1(newHook, target);
|
|
});
|
|
setTimeout(() => {
|
|
if (!devtools$1) {
|
|
target.__VUE_DEVTOOLS_HOOK_REPLAY__ = null;
|
|
devtoolsNotInstalled = true;
|
|
buffer = [];
|
|
}
|
|
}, 3e3);
|
|
} else {
|
|
devtoolsNotInstalled = true;
|
|
buffer = [];
|
|
}
|
|
}
|
|
function devtoolsInitApp(app, version) {
|
|
emit$1("app:init" /* APP_INIT */, app, version, {
|
|
Fragment,
|
|
Text,
|
|
Comment,
|
|
Static
|
|
});
|
|
}
|
|
function emit(instance, event) {
|
|
if (instance.isUnmounted) return;
|
|
var props = instance.vnode.props || EMPTY_OBJ;
|
|
for (var _len3 = arguments.length, rawArgs = new Array(_len3 > 2 ? _len3 - 2 : 0), _key3 = 2; _key3 < _len3; _key3++) {
|
|
rawArgs[_key3 - 2] = arguments[_key3];
|
|
}
|
|
var args = rawArgs;
|
|
var isModelListener = event.startsWith("update:");
|
|
var modelArg = isModelListener && event.slice(7);
|
|
if (modelArg && modelArg in props) {
|
|
var modifiersKey = "".concat(modelArg === "modelValue" ? "model" : modelArg, "Modifiers");
|
|
var {
|
|
number,
|
|
trim
|
|
} = props[modifiersKey] || EMPTY_OBJ;
|
|
if (trim) {
|
|
args = rawArgs.map(a => isString(a) ? a.trim() : a);
|
|
}
|
|
if (number) {
|
|
args = rawArgs.map(looseToNumber);
|
|
}
|
|
}
|
|
var handlerName;
|
|
var handler = props[handlerName = toHandlerKey(event)] ||
|
|
// also try camelCase event handler (#2249)
|
|
props[handlerName = toHandlerKey(camelize(event))];
|
|
if (!handler && isModelListener) {
|
|
handler = props[handlerName = toHandlerKey(hyphenate(event))];
|
|
}
|
|
if (handler) {
|
|
callWithAsyncErrorHandling(handler, instance, 6, args);
|
|
}
|
|
var onceHandler = props[handlerName + "Once"];
|
|
if (onceHandler) {
|
|
if (!instance.emitted) {
|
|
instance.emitted = {};
|
|
} else if (instance.emitted[handlerName]) {
|
|
return;
|
|
}
|
|
instance.emitted[handlerName] = true;
|
|
callWithAsyncErrorHandling(onceHandler, instance, 6, args);
|
|
}
|
|
}
|
|
function normalizeEmitsOptions(comp, appContext) {
|
|
var asMixin = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : false;
|
|
var cache = appContext.emitsCache;
|
|
var cached = cache.get(comp);
|
|
if (cached !== void 0) {
|
|
return cached;
|
|
}
|
|
var raw = comp.emits;
|
|
var normalized = {};
|
|
var hasExtends = false;
|
|
if (!isFunction(comp)) {
|
|
var extendEmits = raw2 => {
|
|
var normalizedFromExtend = normalizeEmitsOptions(raw2, appContext, true);
|
|
if (normalizedFromExtend) {
|
|
hasExtends = true;
|
|
extend(normalized, normalizedFromExtend);
|
|
}
|
|
};
|
|
if (!asMixin && appContext.mixins.length) {
|
|
appContext.mixins.forEach(extendEmits);
|
|
}
|
|
if (comp.extends) {
|
|
extendEmits(comp.extends);
|
|
}
|
|
if (comp.mixins) {
|
|
comp.mixins.forEach(extendEmits);
|
|
}
|
|
}
|
|
if (!raw && !hasExtends) {
|
|
if (isObject(comp)) {
|
|
cache.set(comp, null);
|
|
}
|
|
return null;
|
|
}
|
|
if (isArray(raw)) {
|
|
raw.forEach(key => normalized[key] = null);
|
|
} else {
|
|
extend(normalized, raw);
|
|
}
|
|
if (isObject(comp)) {
|
|
cache.set(comp, normalized);
|
|
}
|
|
return normalized;
|
|
}
|
|
function isEmitListener(options, key) {
|
|
if (!options || !isOn(key)) {
|
|
return false;
|
|
}
|
|
key = key.slice(2).replace(/Once$/, "");
|
|
return hasOwn(options, key[0].toLowerCase() + key.slice(1)) || hasOwn(options, hyphenate(key)) || hasOwn(options, key);
|
|
}
|
|
var currentRenderingInstance = null;
|
|
var currentScopeId = null;
|
|
function setCurrentRenderingInstance(instance) {
|
|
var prev = currentRenderingInstance;
|
|
currentRenderingInstance = instance;
|
|
currentScopeId = instance && instance.type.__scopeId || null;
|
|
return prev;
|
|
}
|
|
function pushScopeId(id) {
|
|
currentScopeId = id;
|
|
}
|
|
function popScopeId() {
|
|
currentScopeId = null;
|
|
}
|
|
var withScopeId = _id => withCtx;
|
|
function withCtx(fn) {
|
|
var ctx = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : currentRenderingInstance;
|
|
var isNonScopedSlot = arguments.length > 2 ? arguments[2] : undefined;
|
|
if (!ctx) return fn;
|
|
if (fn._n) {
|
|
return fn;
|
|
}
|
|
var renderFnWithContext = function () {
|
|
if (renderFnWithContext._d) {
|
|
setBlockTracking(-1);
|
|
}
|
|
var prevInstance = setCurrentRenderingInstance(ctx);
|
|
var res;
|
|
try {
|
|
res = fn(...arguments);
|
|
} finally {
|
|
setCurrentRenderingInstance(prevInstance);
|
|
if (renderFnWithContext._d) {
|
|
setBlockTracking(1);
|
|
}
|
|
}
|
|
return res;
|
|
};
|
|
renderFnWithContext._n = true;
|
|
renderFnWithContext._c = true;
|
|
renderFnWithContext._d = true;
|
|
return renderFnWithContext;
|
|
}
|
|
function markAttrsAccessed() {}
|
|
function renderComponentRoot(instance) {
|
|
var {
|
|
type: Component,
|
|
vnode,
|
|
proxy,
|
|
withProxy,
|
|
props,
|
|
propsOptions: [propsOptions],
|
|
slots,
|
|
attrs,
|
|
emit,
|
|
render,
|
|
renderCache,
|
|
data,
|
|
setupState,
|
|
ctx,
|
|
inheritAttrs
|
|
} = instance;
|
|
var result;
|
|
var fallthroughAttrs;
|
|
var prev = setCurrentRenderingInstance(instance);
|
|
try {
|
|
if (vnode.shapeFlag & 4) {
|
|
var proxyToUse = withProxy || proxy;
|
|
var thisProxy = !!("production" !== "production") && setupState.__isScriptSetup ? new Proxy(proxyToUse, {
|
|
get(target, key, receiver) {
|
|
warn$1("Property '".concat(String(key), "' was accessed via 'this'. Avoid using 'this' in templates."));
|
|
return Reflect.get(target, key, receiver);
|
|
}
|
|
}) : proxyToUse;
|
|
result = normalizeVNode(render.call(thisProxy, proxyToUse, renderCache, props, setupState, data, ctx));
|
|
fallthroughAttrs = attrs;
|
|
} else {
|
|
var render2 = Component;
|
|
if (!!("production" !== "production") && attrs === props) ;
|
|
result = normalizeVNode(render2.length > 1 ? render2(props, !!("production" !== "production") ? {
|
|
get attrs() {
|
|
markAttrsAccessed();
|
|
return attrs;
|
|
},
|
|
slots,
|
|
emit
|
|
} : {
|
|
attrs,
|
|
slots,
|
|
emit
|
|
}) : render2(props, null
|
|
/* we know it doesn't need it */));
|
|
fallthroughAttrs = Component.props ? attrs : getFunctionalFallthrough(attrs);
|
|
}
|
|
} catch (err) {
|
|
blockStack.length = 0;
|
|
handleError(err, instance, 1);
|
|
result = createVNode(Comment);
|
|
}
|
|
var root = result;
|
|
if (fallthroughAttrs && inheritAttrs !== false) {
|
|
var keys = Object.keys(fallthroughAttrs);
|
|
var {
|
|
shapeFlag
|
|
} = root;
|
|
if (keys.length) {
|
|
if (shapeFlag & (1 | 6)) {
|
|
if (propsOptions && keys.some(isModelListener)) {
|
|
fallthroughAttrs = filterModelListeners(fallthroughAttrs, propsOptions);
|
|
}
|
|
root = cloneVNode(root, fallthroughAttrs);
|
|
}
|
|
}
|
|
}
|
|
if (vnode.dirs) {
|
|
root = cloneVNode(root);
|
|
root.dirs = root.dirs ? root.dirs.concat(vnode.dirs) : vnode.dirs;
|
|
}
|
|
if (vnode.transition) {
|
|
root.transition = vnode.transition;
|
|
}
|
|
{
|
|
result = root;
|
|
}
|
|
setCurrentRenderingInstance(prev);
|
|
return result;
|
|
}
|
|
function filterSingleRoot(children) {
|
|
var recurse = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : true;
|
|
var singleRoot;
|
|
for (var i = 0; i < children.length; i++) {
|
|
var child = children[i];
|
|
if (isVNode(child)) {
|
|
if (child.type !== Comment || child.children === "v-if") {
|
|
if (singleRoot) {
|
|
return;
|
|
} else {
|
|
singleRoot = child;
|
|
}
|
|
}
|
|
} else {
|
|
return;
|
|
}
|
|
}
|
|
return singleRoot;
|
|
}
|
|
var getFunctionalFallthrough = attrs => {
|
|
var res;
|
|
for (var key in attrs) {
|
|
if (key === "class" || key === "style" || isOn(key)) {
|
|
(res || (res = {}))[key] = attrs[key];
|
|
}
|
|
}
|
|
return res;
|
|
};
|
|
var filterModelListeners = (attrs, props) => {
|
|
var res = {};
|
|
for (var key in attrs) {
|
|
if (!isModelListener(key) || !(key.slice(9) in props)) {
|
|
res[key] = attrs[key];
|
|
}
|
|
}
|
|
return res;
|
|
};
|
|
function shouldUpdateComponent(prevVNode, nextVNode, optimized) {
|
|
var {
|
|
props: prevProps,
|
|
children: prevChildren,
|
|
component
|
|
} = prevVNode;
|
|
var {
|
|
props: nextProps,
|
|
children: nextChildren,
|
|
patchFlag
|
|
} = nextVNode;
|
|
var emits = component.emitsOptions;
|
|
if (nextVNode.dirs || nextVNode.transition) {
|
|
return true;
|
|
}
|
|
if (optimized && patchFlag >= 0) {
|
|
if (patchFlag & 1024) {
|
|
return true;
|
|
}
|
|
if (patchFlag & 16) {
|
|
if (!prevProps) {
|
|
return !!nextProps;
|
|
}
|
|
return hasPropsChanged(prevProps, nextProps, emits);
|
|
} else if (patchFlag & 8) {
|
|
var dynamicProps = nextVNode.dynamicProps;
|
|
for (var i = 0; i < dynamicProps.length; i++) {
|
|
var key = dynamicProps[i];
|
|
if (nextProps[key] !== prevProps[key] && !isEmitListener(emits, key)) {
|
|
return true;
|
|
}
|
|
}
|
|
}
|
|
} else {
|
|
if (prevChildren || nextChildren) {
|
|
if (!nextChildren || !nextChildren.$stable) {
|
|
return true;
|
|
}
|
|
}
|
|
if (prevProps === nextProps) {
|
|
return false;
|
|
}
|
|
if (!prevProps) {
|
|
return !!nextProps;
|
|
}
|
|
if (!nextProps) {
|
|
return true;
|
|
}
|
|
return hasPropsChanged(prevProps, nextProps, emits);
|
|
}
|
|
return false;
|
|
}
|
|
function hasPropsChanged(prevProps, nextProps, emitsOptions) {
|
|
var nextKeys = Object.keys(nextProps);
|
|
if (nextKeys.length !== Object.keys(prevProps).length) {
|
|
return true;
|
|
}
|
|
for (var i = 0; i < nextKeys.length; i++) {
|
|
var key = nextKeys[i];
|
|
if (nextProps[key] !== prevProps[key] && !isEmitListener(emitsOptions, key)) {
|
|
return true;
|
|
}
|
|
}
|
|
return false;
|
|
}
|
|
function updateHOCHostEl(_ref4, el) {
|
|
var {
|
|
vnode,
|
|
parent
|
|
} = _ref4;
|
|
while (parent) {
|
|
var root = parent.subTree;
|
|
if (root.suspense && root.suspense.activeBranch === vnode) {
|
|
root.el = vnode.el;
|
|
}
|
|
if (root === vnode) {
|
|
(vnode = parent.vnode).el = el;
|
|
parent = parent.parent;
|
|
} else {
|
|
break;
|
|
}
|
|
}
|
|
}
|
|
var COMPONENTS = "components";
|
|
var DIRECTIVES = "directives";
|
|
function resolveComponent(name, maybeSelfReference) {
|
|
return resolveAsset(COMPONENTS, name, true, maybeSelfReference) || name;
|
|
}
|
|
var NULL_DYNAMIC_COMPONENT = Symbol.for("v-ndc");
|
|
function resolveDynamicComponent(component) {
|
|
if (isString(component)) {
|
|
return resolveAsset(COMPONENTS, component, false) || component;
|
|
} else {
|
|
return component || NULL_DYNAMIC_COMPONENT;
|
|
}
|
|
}
|
|
function resolveDirective(name) {
|
|
return resolveAsset(DIRECTIVES, name);
|
|
}
|
|
function resolveAsset(type, name) {
|
|
var warnMissing = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : true;
|
|
var maybeSelfReference = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : false;
|
|
var instance = currentRenderingInstance || currentInstance;
|
|
if (instance) {
|
|
var Component = instance.type;
|
|
if (type === COMPONENTS) {
|
|
var selfName = getComponentName(Component, false);
|
|
if (selfName && (selfName === name || selfName === camelize(name) || selfName === capitalize(camelize(name)))) {
|
|
return Component;
|
|
}
|
|
}
|
|
var res =
|
|
// local registration
|
|
// check instance[type] first which is resolved for options API
|
|
resolve(instance[type] || Component[type], name) ||
|
|
// global registration
|
|
resolve(instance.appContext[type], name);
|
|
if (!res && maybeSelfReference) {
|
|
return Component;
|
|
}
|
|
return res;
|
|
}
|
|
}
|
|
function resolve(registry, name) {
|
|
return registry && (registry[name] || registry[camelize(name)] || registry[capitalize(camelize(name))]);
|
|
}
|
|
var isSuspense = type => type.__isSuspense;
|
|
var suspenseId = 0;
|
|
var SuspenseImpl = {
|
|
name: "Suspense",
|
|
// In order to make Suspense tree-shakable, we need to avoid importing it
|
|
// directly in the renderer. The renderer checks for the __isSuspense flag
|
|
// on a vnode's type and calls the `process` method, passing in renderer
|
|
// internals.
|
|
__isSuspense: true,
|
|
process(n1, n2, container, anchor, parentComponent, parentSuspense, namespace, slotScopeIds, optimized, rendererInternals) {
|
|
if (n1 == null) {
|
|
mountSuspense(n2, container, anchor, parentComponent, parentSuspense, namespace, slotScopeIds, optimized, rendererInternals);
|
|
} else {
|
|
if (parentSuspense && parentSuspense.deps > 0 && !n1.suspense.isInFallback) {
|
|
n2.suspense = n1.suspense;
|
|
n2.suspense.vnode = n2;
|
|
n2.el = n1.el;
|
|
return;
|
|
}
|
|
patchSuspense(n1, n2, container, anchor, parentComponent, namespace, slotScopeIds, optimized, rendererInternals);
|
|
}
|
|
},
|
|
hydrate: hydrateSuspense,
|
|
create: createSuspenseBoundary,
|
|
normalize: normalizeSuspenseChildren
|
|
};
|
|
var Suspense = SuspenseImpl;
|
|
function triggerEvent(vnode, name) {
|
|
var eventListener = vnode.props && vnode.props[name];
|
|
if (isFunction(eventListener)) {
|
|
eventListener();
|
|
}
|
|
}
|
|
function mountSuspense(vnode, container, anchor, parentComponent, parentSuspense, namespace, slotScopeIds, optimized, rendererInternals) {
|
|
var {
|
|
p: patch,
|
|
o: {
|
|
createElement
|
|
}
|
|
} = rendererInternals;
|
|
var hiddenContainer = createElement("div", container);
|
|
var suspense = vnode.suspense = createSuspenseBoundary(vnode, parentSuspense, parentComponent, container, hiddenContainer, anchor, namespace, slotScopeIds, optimized, rendererInternals);
|
|
patch(null, suspense.pendingBranch = vnode.ssContent, hiddenContainer, null, parentComponent, suspense, namespace, slotScopeIds);
|
|
if (suspense.deps > 0) {
|
|
triggerEvent(vnode, "onPending");
|
|
triggerEvent(vnode, "onFallback");
|
|
patch(null, vnode.ssFallback, container, anchor, parentComponent, null,
|
|
// fallback tree will not have suspense context
|
|
namespace, slotScopeIds);
|
|
setActiveBranch(suspense, vnode.ssFallback);
|
|
} else {
|
|
suspense.resolve(false, true);
|
|
}
|
|
}
|
|
function patchSuspense(n1, n2, container, anchor, parentComponent, namespace, slotScopeIds, optimized, _ref5) {
|
|
var {
|
|
p: patch,
|
|
um: unmount,
|
|
o: {
|
|
createElement
|
|
}
|
|
} = _ref5;
|
|
var suspense = n2.suspense = n1.suspense;
|
|
suspense.vnode = n2;
|
|
n2.el = n1.el;
|
|
var newBranch = n2.ssContent;
|
|
var newFallback = n2.ssFallback;
|
|
var {
|
|
activeBranch,
|
|
pendingBranch,
|
|
isInFallback,
|
|
isHydrating
|
|
} = suspense;
|
|
if (pendingBranch) {
|
|
suspense.pendingBranch = newBranch;
|
|
if (isSameVNodeType(newBranch, pendingBranch)) {
|
|
patch(pendingBranch, newBranch, suspense.hiddenContainer, null, parentComponent, suspense, namespace, slotScopeIds, optimized);
|
|
if (suspense.deps <= 0) {
|
|
suspense.resolve();
|
|
} else if (isInFallback) {
|
|
if (!isHydrating) {
|
|
patch(activeBranch, newFallback, container, anchor, parentComponent, null,
|
|
// fallback tree will not have suspense context
|
|
namespace, slotScopeIds, optimized);
|
|
setActiveBranch(suspense, newFallback);
|
|
}
|
|
}
|
|
} else {
|
|
suspense.pendingId = suspenseId++;
|
|
if (isHydrating) {
|
|
suspense.isHydrating = false;
|
|
suspense.activeBranch = pendingBranch;
|
|
} else {
|
|
unmount(pendingBranch, parentComponent, suspense);
|
|
}
|
|
suspense.deps = 0;
|
|
suspense.effects.length = 0;
|
|
suspense.hiddenContainer = createElement("div", container);
|
|
if (isInFallback) {
|
|
patch(null, newBranch, suspense.hiddenContainer, null, parentComponent, suspense, namespace, slotScopeIds, optimized);
|
|
if (suspense.deps <= 0) {
|
|
suspense.resolve();
|
|
} else {
|
|
patch(activeBranch, newFallback, container, anchor, parentComponent, null,
|
|
// fallback tree will not have suspense context
|
|
namespace, slotScopeIds, optimized);
|
|
setActiveBranch(suspense, newFallback);
|
|
}
|
|
} else if (activeBranch && isSameVNodeType(newBranch, activeBranch)) {
|
|
patch(activeBranch, newBranch, container, anchor, parentComponent, suspense, namespace, slotScopeIds, optimized);
|
|
suspense.resolve(true);
|
|
} else {
|
|
patch(null, newBranch, suspense.hiddenContainer, null, parentComponent, suspense, namespace, slotScopeIds, optimized);
|
|
if (suspense.deps <= 0) {
|
|
suspense.resolve();
|
|
}
|
|
}
|
|
}
|
|
} else {
|
|
if (activeBranch && isSameVNodeType(newBranch, activeBranch)) {
|
|
patch(activeBranch, newBranch, container, anchor, parentComponent, suspense, namespace, slotScopeIds, optimized);
|
|
setActiveBranch(suspense, newBranch);
|
|
} else {
|
|
triggerEvent(n2, "onPending");
|
|
suspense.pendingBranch = newBranch;
|
|
if (newBranch.shapeFlag & 512) {
|
|
suspense.pendingId = newBranch.component.suspenseId;
|
|
} else {
|
|
suspense.pendingId = suspenseId++;
|
|
}
|
|
patch(null, newBranch, suspense.hiddenContainer, null, parentComponent, suspense, namespace, slotScopeIds, optimized);
|
|
if (suspense.deps <= 0) {
|
|
suspense.resolve();
|
|
} else {
|
|
var {
|
|
timeout,
|
|
pendingId
|
|
} = suspense;
|
|
if (timeout > 0) {
|
|
setTimeout(() => {
|
|
if (suspense.pendingId === pendingId) {
|
|
suspense.fallback(newFallback);
|
|
}
|
|
}, timeout);
|
|
} else if (timeout === 0) {
|
|
suspense.fallback(newFallback);
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
function createSuspenseBoundary(vnode, parentSuspense, parentComponent, container, hiddenContainer, anchor, namespace, slotScopeIds, optimized, rendererInternals) {
|
|
var isHydrating = arguments.length > 10 && arguments[10] !== undefined ? arguments[10] : false;
|
|
var {
|
|
p: patch,
|
|
m: move,
|
|
um: unmount,
|
|
n: next,
|
|
o: {
|
|
parentNode,
|
|
remove
|
|
}
|
|
} = rendererInternals;
|
|
var parentSuspenseId;
|
|
var isSuspensible = isVNodeSuspensible(vnode);
|
|
if (isSuspensible) {
|
|
if (parentSuspense == null ? void 0 : parentSuspense.pendingBranch) {
|
|
parentSuspenseId = parentSuspense.pendingId;
|
|
parentSuspense.deps++;
|
|
}
|
|
}
|
|
var timeout = vnode.props ? toNumber(vnode.props.timeout) : void 0;
|
|
var initialAnchor = anchor;
|
|
var suspense = {
|
|
vnode,
|
|
parent: parentSuspense,
|
|
parentComponent,
|
|
namespace,
|
|
container,
|
|
hiddenContainer,
|
|
deps: 0,
|
|
pendingId: suspenseId++,
|
|
timeout: typeof timeout === "number" ? timeout : -1,
|
|
activeBranch: null,
|
|
pendingBranch: null,
|
|
isInFallback: !isHydrating,
|
|
isHydrating,
|
|
isUnmounted: false,
|
|
effects: [],
|
|
resolve() {
|
|
var resume = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : false;
|
|
var sync = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : false;
|
|
var {
|
|
vnode: vnode2,
|
|
activeBranch,
|
|
pendingBranch,
|
|
pendingId,
|
|
effects,
|
|
parentComponent: parentComponent2,
|
|
container: container2
|
|
} = suspense;
|
|
var delayEnter = false;
|
|
if (suspense.isHydrating) {
|
|
suspense.isHydrating = false;
|
|
} else if (!resume) {
|
|
delayEnter = activeBranch && pendingBranch.transition && pendingBranch.transition.mode === "out-in";
|
|
if (delayEnter) {
|
|
activeBranch.transition.afterLeave = () => {
|
|
if (pendingId === suspense.pendingId) {
|
|
move(pendingBranch, container2, anchor === initialAnchor ? next(activeBranch) : anchor, 0);
|
|
queuePostFlushCb(effects);
|
|
}
|
|
};
|
|
}
|
|
if (activeBranch) {
|
|
if (parentNode(activeBranch.el) !== suspense.hiddenContainer) {
|
|
anchor = next(activeBranch);
|
|
}
|
|
unmount(activeBranch, parentComponent2, suspense, true);
|
|
}
|
|
if (!delayEnter) {
|
|
move(pendingBranch, container2, anchor, 0);
|
|
}
|
|
}
|
|
setActiveBranch(suspense, pendingBranch);
|
|
suspense.pendingBranch = null;
|
|
suspense.isInFallback = false;
|
|
var parent = suspense.parent;
|
|
var hasUnresolvedAncestor = false;
|
|
while (parent) {
|
|
if (parent.pendingBranch) {
|
|
parent.effects.push(...effects);
|
|
hasUnresolvedAncestor = true;
|
|
break;
|
|
}
|
|
parent = parent.parent;
|
|
}
|
|
if (!hasUnresolvedAncestor && !delayEnter) {
|
|
queuePostFlushCb(effects);
|
|
}
|
|
suspense.effects = [];
|
|
if (isSuspensible) {
|
|
if (parentSuspense && parentSuspense.pendingBranch && parentSuspenseId === parentSuspense.pendingId) {
|
|
parentSuspense.deps--;
|
|
if (parentSuspense.deps === 0 && !sync) {
|
|
parentSuspense.resolve();
|
|
}
|
|
}
|
|
}
|
|
triggerEvent(vnode2, "onResolve");
|
|
},
|
|
fallback(fallbackVNode) {
|
|
if (!suspense.pendingBranch) {
|
|
return;
|
|
}
|
|
var {
|
|
vnode: vnode2,
|
|
activeBranch,
|
|
parentComponent: parentComponent2,
|
|
container: container2,
|
|
namespace: namespace2
|
|
} = suspense;
|
|
triggerEvent(vnode2, "onFallback");
|
|
var anchor2 = next(activeBranch);
|
|
var mountFallback = () => {
|
|
if (!suspense.isInFallback) {
|
|
return;
|
|
}
|
|
patch(null, fallbackVNode, container2, anchor2, parentComponent2, null,
|
|
// fallback tree will not have suspense context
|
|
namespace2, slotScopeIds, optimized);
|
|
setActiveBranch(suspense, fallbackVNode);
|
|
};
|
|
var delayEnter = fallbackVNode.transition && fallbackVNode.transition.mode === "out-in";
|
|
if (delayEnter) {
|
|
activeBranch.transition.afterLeave = mountFallback;
|
|
}
|
|
suspense.isInFallback = true;
|
|
unmount(activeBranch, parentComponent2, null,
|
|
// no suspense so unmount hooks fire now
|
|
true
|
|
// shouldRemove
|
|
);
|
|
if (!delayEnter) {
|
|
mountFallback();
|
|
}
|
|
},
|
|
move(container2, anchor2, type) {
|
|
suspense.activeBranch && move(suspense.activeBranch, container2, anchor2, type);
|
|
suspense.container = container2;
|
|
},
|
|
next() {
|
|
return suspense.activeBranch && next(suspense.activeBranch);
|
|
},
|
|
registerDep(instance, setupRenderEffect) {
|
|
var isInPendingSuspense = !!suspense.pendingBranch;
|
|
if (isInPendingSuspense) {
|
|
suspense.deps++;
|
|
}
|
|
var hydratedEl = instance.vnode.el;
|
|
instance.asyncDep.catch(err => {
|
|
handleError(err, instance, 0);
|
|
}).then(asyncSetupResult => {
|
|
if (instance.isUnmounted || suspense.isUnmounted || suspense.pendingId !== instance.suspenseId) {
|
|
return;
|
|
}
|
|
instance.asyncResolved = true;
|
|
var {
|
|
vnode: vnode2
|
|
} = instance;
|
|
handleSetupResult(instance, asyncSetupResult, false);
|
|
if (hydratedEl) {
|
|
vnode2.el = hydratedEl;
|
|
}
|
|
var placeholder = !hydratedEl && instance.subTree.el;
|
|
setupRenderEffect(instance, vnode2,
|
|
// component may have been moved before resolve.
|
|
// if this is not a hydration, instance.subTree will be the comment
|
|
// placeholder.
|
|
parentNode(hydratedEl || instance.subTree.el),
|
|
// anchor will not be used if this is hydration, so only need to
|
|
// consider the comment placeholder case.
|
|
hydratedEl ? null : next(instance.subTree), suspense, namespace, optimized);
|
|
if (placeholder) {
|
|
remove(placeholder);
|
|
}
|
|
updateHOCHostEl(instance, vnode2.el);
|
|
if (isInPendingSuspense && --suspense.deps === 0) {
|
|
suspense.resolve();
|
|
}
|
|
});
|
|
},
|
|
unmount(parentSuspense2, doRemove) {
|
|
suspense.isUnmounted = true;
|
|
if (suspense.activeBranch) {
|
|
unmount(suspense.activeBranch, parentComponent, parentSuspense2, doRemove);
|
|
}
|
|
if (suspense.pendingBranch) {
|
|
unmount(suspense.pendingBranch, parentComponent, parentSuspense2, doRemove);
|
|
}
|
|
}
|
|
};
|
|
return suspense;
|
|
}
|
|
function hydrateSuspense(node, vnode, parentComponent, parentSuspense, namespace, slotScopeIds, optimized, rendererInternals, hydrateNode) {
|
|
var suspense = vnode.suspense = createSuspenseBoundary(vnode, parentSuspense, parentComponent, node.parentNode,
|
|
// eslint-disable-next-line no-restricted-globals
|
|
document.createElement("div"), null, namespace, slotScopeIds, optimized, rendererInternals, true);
|
|
var result = hydrateNode(node, suspense.pendingBranch = vnode.ssContent, parentComponent, suspense, slotScopeIds, optimized);
|
|
if (suspense.deps === 0) {
|
|
suspense.resolve(false, true);
|
|
}
|
|
return result;
|
|
}
|
|
function normalizeSuspenseChildren(vnode) {
|
|
var {
|
|
shapeFlag,
|
|
children
|
|
} = vnode;
|
|
var isSlotChildren = shapeFlag & 32;
|
|
vnode.ssContent = normalizeSuspenseSlot(isSlotChildren ? children.default : children);
|
|
vnode.ssFallback = isSlotChildren ? normalizeSuspenseSlot(children.fallback) : createVNode(Comment);
|
|
}
|
|
function normalizeSuspenseSlot(s) {
|
|
var block;
|
|
if (isFunction(s)) {
|
|
var trackBlock = isBlockTreeEnabled && s._c;
|
|
if (trackBlock) {
|
|
s._d = false;
|
|
openBlock();
|
|
}
|
|
s = s();
|
|
if (trackBlock) {
|
|
s._d = true;
|
|
block = currentBlock;
|
|
closeBlock();
|
|
}
|
|
}
|
|
if (isArray(s)) {
|
|
var singleChild = filterSingleRoot(s);
|
|
s = singleChild;
|
|
}
|
|
s = normalizeVNode(s);
|
|
if (block && !s.dynamicChildren) {
|
|
s.dynamicChildren = block.filter(c => c !== s);
|
|
}
|
|
return s;
|
|
}
|
|
function queueEffectWithSuspense(fn, suspense) {
|
|
if (suspense && suspense.pendingBranch) {
|
|
if (isArray(fn)) {
|
|
suspense.effects.push(...fn);
|
|
} else {
|
|
suspense.effects.push(fn);
|
|
}
|
|
} else {
|
|
queuePostFlushCb(fn);
|
|
}
|
|
}
|
|
function setActiveBranch(suspense, branch) {
|
|
suspense.activeBranch = branch;
|
|
var {
|
|
vnode,
|
|
parentComponent
|
|
} = suspense;
|
|
var el = branch.el;
|
|
while (!el && branch.component) {
|
|
branch = branch.component.subTree;
|
|
el = branch.el;
|
|
}
|
|
vnode.el = el;
|
|
if (parentComponent && parentComponent.subTree === vnode) {
|
|
parentComponent.vnode.el = el;
|
|
updateHOCHostEl(parentComponent, el);
|
|
}
|
|
}
|
|
function isVNodeSuspensible(vnode) {
|
|
var _a;
|
|
return ((_a = vnode.props) == null ? void 0 : _a.suspensible) != null && vnode.props.suspensible !== false;
|
|
}
|
|
var ssrContextKey = Symbol.for("v-scx");
|
|
var useSSRContext = () => {
|
|
{
|
|
var ctx = inject(ssrContextKey);
|
|
return ctx;
|
|
}
|
|
};
|
|
function watchEffect(effect, options) {
|
|
return doWatch(effect, null, options);
|
|
}
|
|
function watchPostEffect(effect, options) {
|
|
return doWatch(effect, null, {
|
|
flush: "post"
|
|
});
|
|
}
|
|
function watchSyncEffect(effect, options) {
|
|
return doWatch(effect, null, {
|
|
flush: "sync"
|
|
});
|
|
}
|
|
var INITIAL_WATCHER_VALUE = {};
|
|
function watch(source, cb, options) {
|
|
return doWatch(source, cb, options);
|
|
}
|
|
function doWatch(source, cb) {
|
|
var {
|
|
immediate,
|
|
deep,
|
|
flush,
|
|
once,
|
|
onTrack,
|
|
onTrigger
|
|
} = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : EMPTY_OBJ;
|
|
if (cb && once) {
|
|
var _cb = cb;
|
|
cb = function () {
|
|
_cb(...arguments);
|
|
unwatch();
|
|
};
|
|
}
|
|
var instance = currentInstance;
|
|
var reactiveGetter = source2 => deep === true ? source2 :
|
|
// for deep: false, only traverse root-level properties
|
|
traverse(source2, deep === false ? 1 : void 0);
|
|
var getter;
|
|
var forceTrigger = false;
|
|
var isMultiSource = false;
|
|
if (isRef(source)) {
|
|
getter = () => source.value;
|
|
forceTrigger = isShallow(source);
|
|
} else if (isReactive(source)) {
|
|
getter = () => reactiveGetter(source);
|
|
forceTrigger = true;
|
|
} else if (isArray(source)) {
|
|
isMultiSource = true;
|
|
forceTrigger = source.some(s => isReactive(s) || isShallow(s));
|
|
getter = () => source.map(s => {
|
|
if (isRef(s)) {
|
|
return s.value;
|
|
} else if (isReactive(s)) {
|
|
return reactiveGetter(s);
|
|
} else if (isFunction(s)) {
|
|
return callWithErrorHandling(s, instance, 2);
|
|
} else ;
|
|
});
|
|
} else if (isFunction(source)) {
|
|
if (cb) {
|
|
getter = () => callWithErrorHandling(source, instance, 2);
|
|
} else {
|
|
getter = () => {
|
|
if (cleanup) {
|
|
cleanup();
|
|
}
|
|
return callWithAsyncErrorHandling(source, instance, 3, [onCleanup]);
|
|
};
|
|
}
|
|
} else {
|
|
getter = NOOP;
|
|
}
|
|
if (cb && deep) {
|
|
var baseGetter = getter;
|
|
getter = () => traverse(baseGetter());
|
|
}
|
|
var cleanup;
|
|
var onCleanup = fn => {
|
|
cleanup = effect.onStop = () => {
|
|
callWithErrorHandling(fn, instance, 4);
|
|
cleanup = effect.onStop = void 0;
|
|
};
|
|
};
|
|
var ssrCleanup;
|
|
if (isInSSRComponentSetup) {
|
|
onCleanup = NOOP;
|
|
if (!cb) {
|
|
getter();
|
|
} else if (immediate) {
|
|
callWithAsyncErrorHandling(cb, instance, 3, [getter(), isMultiSource ? [] : void 0, onCleanup]);
|
|
}
|
|
if (flush === "sync") {
|
|
var ctx = useSSRContext();
|
|
ssrCleanup = ctx.__watcherHandles || (ctx.__watcherHandles = []);
|
|
} else {
|
|
return NOOP;
|
|
}
|
|
}
|
|
var oldValue = isMultiSource ? new Array(source.length).fill(INITIAL_WATCHER_VALUE) : INITIAL_WATCHER_VALUE;
|
|
var job = () => {
|
|
if (!effect.active || !effect.dirty) {
|
|
return;
|
|
}
|
|
if (cb) {
|
|
var newValue = effect.run();
|
|
if (deep || forceTrigger || (isMultiSource ? newValue.some((v, i) => hasChanged(v, oldValue[i])) : hasChanged(newValue, oldValue)) || false) {
|
|
if (cleanup) {
|
|
cleanup();
|
|
}
|
|
callWithAsyncErrorHandling(cb, instance, 3, [newValue,
|
|
// pass undefined as the old value when it's changed for the first time
|
|
oldValue === INITIAL_WATCHER_VALUE ? void 0 : isMultiSource && oldValue[0] === INITIAL_WATCHER_VALUE ? [] : oldValue, onCleanup]);
|
|
oldValue = newValue;
|
|
}
|
|
} else {
|
|
effect.run();
|
|
}
|
|
};
|
|
job.allowRecurse = !!cb;
|
|
var scheduler;
|
|
if (flush === "sync") {
|
|
scheduler = job;
|
|
} else if (flush === "post") {
|
|
scheduler = () => queuePostRenderEffect(job, instance && instance.suspense);
|
|
} else {
|
|
job.pre = true;
|
|
if (instance) job.id = instance.uid;
|
|
scheduler = () => queueJob(job);
|
|
}
|
|
var effect = new ReactiveEffect(getter, NOOP, scheduler);
|
|
var scope = getCurrentScope();
|
|
var unwatch = () => {
|
|
effect.stop();
|
|
if (scope) {
|
|
remove(scope.effects, effect);
|
|
}
|
|
};
|
|
if (cb) {
|
|
if (immediate) {
|
|
job();
|
|
} else {
|
|
oldValue = effect.run();
|
|
}
|
|
} else if (flush === "post") {
|
|
queuePostRenderEffect(effect.run.bind(effect), instance && instance.suspense);
|
|
} else {
|
|
effect.run();
|
|
}
|
|
if (ssrCleanup) ssrCleanup.push(unwatch);
|
|
return unwatch;
|
|
}
|
|
function instanceWatch(source, value, options) {
|
|
var publicThis = this.proxy;
|
|
var getter = isString(source) ? source.includes(".") ? createPathGetter(publicThis, source) : () => publicThis[source] : source.bind(publicThis, publicThis);
|
|
var cb;
|
|
if (isFunction(value)) {
|
|
cb = value;
|
|
} else {
|
|
cb = value.handler;
|
|
options = value;
|
|
}
|
|
var reset = setCurrentInstance(this);
|
|
var res = doWatch(getter, cb.bind(publicThis), options);
|
|
reset();
|
|
return res;
|
|
}
|
|
function createPathGetter(ctx, path) {
|
|
var segments = path.split(".");
|
|
return () => {
|
|
var cur = ctx;
|
|
for (var i = 0; i < segments.length && cur; i++) {
|
|
cur = cur[segments[i]];
|
|
}
|
|
return cur;
|
|
};
|
|
}
|
|
function traverse(value, depth) {
|
|
var currentDepth = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : 0;
|
|
var seen = arguments.length > 3 ? arguments[3] : undefined;
|
|
if (!isObject(value) || value["__v_skip"]) {
|
|
return value;
|
|
}
|
|
if (depth && depth > 0) {
|
|
if (currentDepth >= depth) {
|
|
return value;
|
|
}
|
|
currentDepth++;
|
|
}
|
|
seen = seen || /* @__PURE__ */new Set();
|
|
if (seen.has(value)) {
|
|
return value;
|
|
}
|
|
seen.add(value);
|
|
if (isRef(value)) {
|
|
traverse(value.value, depth, currentDepth, seen);
|
|
} else if (isArray(value)) {
|
|
for (var i = 0; i < value.length; i++) {
|
|
traverse(value[i], depth, currentDepth, seen);
|
|
}
|
|
} else if (isSet(value) || isMap(value)) {
|
|
value.forEach(v => {
|
|
traverse(v, depth, currentDepth, seen);
|
|
});
|
|
} else if (isPlainObject(value)) {
|
|
for (var key in value) {
|
|
traverse(value[key], depth, currentDepth, seen);
|
|
}
|
|
}
|
|
return value;
|
|
}
|
|
function withDirectives(vnode, directives) {
|
|
if (currentRenderingInstance === null) {
|
|
return vnode;
|
|
}
|
|
var instance = getExposeProxy(currentRenderingInstance) || currentRenderingInstance.proxy;
|
|
var bindings = vnode.dirs || (vnode.dirs = []);
|
|
for (var i = 0; i < directives.length; i++) {
|
|
var [dir, value, arg, modifiers = EMPTY_OBJ] = directives[i];
|
|
if (dir) {
|
|
if (isFunction(dir)) {
|
|
dir = {
|
|
mounted: dir,
|
|
updated: dir
|
|
};
|
|
}
|
|
if (dir.deep) {
|
|
traverse(value);
|
|
}
|
|
bindings.push({
|
|
dir,
|
|
instance,
|
|
value,
|
|
oldValue: void 0,
|
|
arg,
|
|
modifiers
|
|
});
|
|
}
|
|
}
|
|
return vnode;
|
|
}
|
|
function invokeDirectiveHook(vnode, prevVNode, instance, name) {
|
|
var bindings = vnode.dirs;
|
|
var oldBindings = prevVNode && prevVNode.dirs;
|
|
for (var i = 0; i < bindings.length; i++) {
|
|
var binding = bindings[i];
|
|
if (oldBindings) {
|
|
binding.oldValue = oldBindings[i].value;
|
|
}
|
|
var hook = binding.dir[name];
|
|
if (hook) {
|
|
pauseTracking();
|
|
callWithAsyncErrorHandling(hook, instance, 8, [vnode.el, binding, vnode, prevVNode]);
|
|
resetTracking();
|
|
}
|
|
}
|
|
}
|
|
var leaveCbKey = Symbol("_leaveCb");
|
|
var enterCbKey = Symbol("_enterCb");
|
|
function useTransitionState() {
|
|
var state = {
|
|
isMounted: false,
|
|
isLeaving: false,
|
|
isUnmounting: false,
|
|
leavingVNodes: /* @__PURE__ */new Map()
|
|
};
|
|
onMounted(() => {
|
|
state.isMounted = true;
|
|
});
|
|
onBeforeUnmount(() => {
|
|
state.isUnmounting = true;
|
|
});
|
|
return state;
|
|
}
|
|
var TransitionHookValidator = [Function, Array];
|
|
var BaseTransitionPropsValidators = {
|
|
mode: String,
|
|
appear: Boolean,
|
|
persisted: Boolean,
|
|
// enter
|
|
onBeforeEnter: TransitionHookValidator,
|
|
onEnter: TransitionHookValidator,
|
|
onAfterEnter: TransitionHookValidator,
|
|
onEnterCancelled: TransitionHookValidator,
|
|
// leave
|
|
onBeforeLeave: TransitionHookValidator,
|
|
onLeave: TransitionHookValidator,
|
|
onAfterLeave: TransitionHookValidator,
|
|
onLeaveCancelled: TransitionHookValidator,
|
|
// appear
|
|
onBeforeAppear: TransitionHookValidator,
|
|
onAppear: TransitionHookValidator,
|
|
onAfterAppear: TransitionHookValidator,
|
|
onAppearCancelled: TransitionHookValidator
|
|
};
|
|
var BaseTransitionImpl = {
|
|
name: "BaseTransition",
|
|
props: BaseTransitionPropsValidators,
|
|
setup(props, _ref6) {
|
|
var {
|
|
slots
|
|
} = _ref6;
|
|
var instance = getCurrentInstance();
|
|
var state = useTransitionState();
|
|
return () => {
|
|
var children = slots.default && getTransitionRawChildren(slots.default(), true);
|
|
if (!children || !children.length) {
|
|
return;
|
|
}
|
|
var child = children[0];
|
|
if (children.length > 1) {
|
|
for (var c of children) {
|
|
if (c.type !== Comment) {
|
|
child = c;
|
|
break;
|
|
}
|
|
}
|
|
}
|
|
var rawProps = toRaw(props);
|
|
var {
|
|
mode
|
|
} = rawProps;
|
|
if (state.isLeaving) {
|
|
return emptyPlaceholder(child);
|
|
}
|
|
var innerChild = getKeepAliveChild(child);
|
|
if (!innerChild) {
|
|
return emptyPlaceholder(child);
|
|
}
|
|
var enterHooks = resolveTransitionHooks(innerChild, rawProps, state, instance);
|
|
setTransitionHooks(innerChild, enterHooks);
|
|
var oldChild = instance.subTree;
|
|
var oldInnerChild = oldChild && getKeepAliveChild(oldChild);
|
|
if (oldInnerChild && oldInnerChild.type !== Comment && !isSameVNodeType(innerChild, oldInnerChild)) {
|
|
var leavingHooks = resolveTransitionHooks(oldInnerChild, rawProps, state, instance);
|
|
setTransitionHooks(oldInnerChild, leavingHooks);
|
|
if (mode === "out-in") {
|
|
state.isLeaving = true;
|
|
leavingHooks.afterLeave = () => {
|
|
state.isLeaving = false;
|
|
if (instance.update.active !== false) {
|
|
instance.effect.dirty = true;
|
|
instance.update();
|
|
}
|
|
};
|
|
return emptyPlaceholder(child);
|
|
} else if (mode === "in-out" && innerChild.type !== Comment) {
|
|
leavingHooks.delayLeave = (el, earlyRemove, delayedLeave) => {
|
|
var leavingVNodesCache = getLeavingNodesForType(state, oldInnerChild);
|
|
leavingVNodesCache[String(oldInnerChild.key)] = oldInnerChild;
|
|
el[leaveCbKey] = () => {
|
|
earlyRemove();
|
|
el[leaveCbKey] = void 0;
|
|
delete enterHooks.delayedLeave;
|
|
};
|
|
enterHooks.delayedLeave = delayedLeave;
|
|
};
|
|
}
|
|
}
|
|
return child;
|
|
};
|
|
}
|
|
};
|
|
var BaseTransition = BaseTransitionImpl;
|
|
function getLeavingNodesForType(state, vnode) {
|
|
var {
|
|
leavingVNodes
|
|
} = state;
|
|
var leavingVNodesCache = leavingVNodes.get(vnode.type);
|
|
if (!leavingVNodesCache) {
|
|
leavingVNodesCache = /* @__PURE__ */Object.create(null);
|
|
leavingVNodes.set(vnode.type, leavingVNodesCache);
|
|
}
|
|
return leavingVNodesCache;
|
|
}
|
|
function resolveTransitionHooks(vnode, props, state, instance) {
|
|
var {
|
|
appear,
|
|
mode,
|
|
persisted = false,
|
|
onBeforeEnter,
|
|
onEnter,
|
|
onAfterEnter,
|
|
onEnterCancelled,
|
|
onBeforeLeave,
|
|
onLeave,
|
|
onAfterLeave,
|
|
onLeaveCancelled,
|
|
onBeforeAppear,
|
|
onAppear,
|
|
onAfterAppear,
|
|
onAppearCancelled
|
|
} = props;
|
|
var key = String(vnode.key);
|
|
var leavingVNodesCache = getLeavingNodesForType(state, vnode);
|
|
var callHook = (hook, args) => {
|
|
hook && callWithAsyncErrorHandling(hook, instance, 9, args);
|
|
};
|
|
var callAsyncHook = (hook, args) => {
|
|
var done = args[1];
|
|
callHook(hook, args);
|
|
if (isArray(hook)) {
|
|
if (hook.every(hook2 => hook2.length <= 1)) done();
|
|
} else if (hook.length <= 1) {
|
|
done();
|
|
}
|
|
};
|
|
var hooks = {
|
|
mode,
|
|
persisted,
|
|
beforeEnter(el) {
|
|
var hook = onBeforeEnter;
|
|
if (!state.isMounted) {
|
|
if (appear) {
|
|
hook = onBeforeAppear || onBeforeEnter;
|
|
} else {
|
|
return;
|
|
}
|
|
}
|
|
if (el[leaveCbKey]) {
|
|
el[leaveCbKey](true
|
|
/* cancelled */);
|
|
}
|
|
var leavingVNode = leavingVNodesCache[key];
|
|
if (leavingVNode && isSameVNodeType(vnode, leavingVNode) && leavingVNode.el[leaveCbKey]) {
|
|
leavingVNode.el[leaveCbKey]();
|
|
}
|
|
callHook(hook, [el]);
|
|
},
|
|
enter(el) {
|
|
var hook = onEnter;
|
|
var afterHook = onAfterEnter;
|
|
var cancelHook = onEnterCancelled;
|
|
if (!state.isMounted) {
|
|
if (appear) {
|
|
hook = onAppear || onEnter;
|
|
afterHook = onAfterAppear || onAfterEnter;
|
|
cancelHook = onAppearCancelled || onEnterCancelled;
|
|
} else {
|
|
return;
|
|
}
|
|
}
|
|
var called = false;
|
|
var done = el[enterCbKey] = cancelled => {
|
|
if (called) return;
|
|
called = true;
|
|
if (cancelled) {
|
|
callHook(cancelHook, [el]);
|
|
} else {
|
|
callHook(afterHook, [el]);
|
|
}
|
|
if (hooks.delayedLeave) {
|
|
hooks.delayedLeave();
|
|
}
|
|
el[enterCbKey] = void 0;
|
|
};
|
|
if (hook) {
|
|
callAsyncHook(hook, [el, done]);
|
|
} else {
|
|
done();
|
|
}
|
|
},
|
|
leave(el, remove) {
|
|
var key2 = String(vnode.key);
|
|
if (el[enterCbKey]) {
|
|
el[enterCbKey](true
|
|
/* cancelled */);
|
|
}
|
|
if (state.isUnmounting) {
|
|
return remove();
|
|
}
|
|
callHook(onBeforeLeave, [el]);
|
|
var called = false;
|
|
var done = el[leaveCbKey] = cancelled => {
|
|
if (called) return;
|
|
called = true;
|
|
remove();
|
|
if (cancelled) {
|
|
callHook(onLeaveCancelled, [el]);
|
|
} else {
|
|
callHook(onAfterLeave, [el]);
|
|
}
|
|
el[leaveCbKey] = void 0;
|
|
if (leavingVNodesCache[key2] === vnode) {
|
|
delete leavingVNodesCache[key2];
|
|
}
|
|
};
|
|
leavingVNodesCache[key2] = vnode;
|
|
if (onLeave) {
|
|
callAsyncHook(onLeave, [el, done]);
|
|
} else {
|
|
done();
|
|
}
|
|
},
|
|
clone(vnode2) {
|
|
return resolveTransitionHooks(vnode2, props, state, instance);
|
|
}
|
|
};
|
|
return hooks;
|
|
}
|
|
function emptyPlaceholder(vnode) {
|
|
if (isKeepAlive(vnode)) {
|
|
vnode = cloneVNode(vnode);
|
|
vnode.children = null;
|
|
return vnode;
|
|
}
|
|
}
|
|
function getKeepAliveChild(vnode) {
|
|
return isKeepAlive(vnode) ?
|
|
// #7121 ensure get the child component subtree in case
|
|
// it's been replaced during HMR
|
|
vnode.children ? vnode.children[0] : void 0 : vnode;
|
|
}
|
|
function setTransitionHooks(vnode, hooks) {
|
|
if (vnode.shapeFlag & 6 && vnode.component) {
|
|
setTransitionHooks(vnode.component.subTree, hooks);
|
|
} else if (vnode.shapeFlag & 128) {
|
|
vnode.ssContent.transition = hooks.clone(vnode.ssContent);
|
|
vnode.ssFallback.transition = hooks.clone(vnode.ssFallback);
|
|
} else {
|
|
vnode.transition = hooks;
|
|
}
|
|
}
|
|
function getTransitionRawChildren(children) {
|
|
var keepComment = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : false;
|
|
var parentKey = arguments.length > 2 ? arguments[2] : undefined;
|
|
var ret = [];
|
|
var keyedFragmentCount = 0;
|
|
for (var i = 0; i < children.length; i++) {
|
|
var child = children[i];
|
|
var key = parentKey == null ? child.key : String(parentKey) + String(child.key != null ? child.key : i);
|
|
if (child.type === Fragment) {
|
|
if (child.patchFlag & 128) keyedFragmentCount++;
|
|
ret = ret.concat(getTransitionRawChildren(child.children, keepComment, key));
|
|
} else if (keepComment || child.type !== Comment) {
|
|
ret.push(key != null ? cloneVNode(child, {
|
|
key
|
|
}) : child);
|
|
}
|
|
}
|
|
if (keyedFragmentCount > 1) {
|
|
for (var _i = 0; _i < ret.length; _i++) {
|
|
ret[_i].patchFlag = -2;
|
|
}
|
|
}
|
|
return ret;
|
|
}
|
|
|
|
/*! #__NO_SIDE_EFFECTS__ */
|
|
// @__NO_SIDE_EFFECTS__
|
|
function defineComponent(options, extraOptions) {
|
|
return isFunction(options) ?
|
|
// #8326: extend call and options.name access are considered side-effects
|
|
// by Rollup, so we have to wrap it in a pure-annotated IIFE.
|
|
/* @__PURE__ */
|
|
(() => extend({
|
|
name: options.name
|
|
}, extraOptions, {
|
|
setup: options
|
|
}))() : options;
|
|
}
|
|
var isAsyncWrapper = i => !!i.type.__asyncLoader;
|
|
/*! #__NO_SIDE_EFFECTS__ */
|
|
// @__NO_SIDE_EFFECTS__
|
|
function defineAsyncComponent(source) {
|
|
if (isFunction(source)) {
|
|
source = {
|
|
loader: source
|
|
};
|
|
}
|
|
var {
|
|
loader,
|
|
loadingComponent,
|
|
errorComponent,
|
|
delay = 200,
|
|
timeout,
|
|
// undefined = never times out
|
|
suspensible = true,
|
|
onError: userOnError
|
|
} = source;
|
|
var pendingRequest = null;
|
|
var resolvedComp;
|
|
var retries = 0;
|
|
var retry = () => {
|
|
retries++;
|
|
pendingRequest = null;
|
|
return load();
|
|
};
|
|
var load = () => {
|
|
var thisRequest;
|
|
return pendingRequest || (thisRequest = pendingRequest = loader().catch(err => {
|
|
err = err instanceof Error ? err : new Error(String(err));
|
|
if (userOnError) {
|
|
return new Promise((resolve, reject) => {
|
|
var userRetry = () => resolve(retry());
|
|
var userFail = () => reject(err);
|
|
userOnError(err, userRetry, userFail, retries + 1);
|
|
});
|
|
} else {
|
|
throw err;
|
|
}
|
|
}).then(comp => {
|
|
if (thisRequest !== pendingRequest && pendingRequest) {
|
|
return pendingRequest;
|
|
}
|
|
if (comp && (comp.__esModule || comp[Symbol.toStringTag] === "Module")) {
|
|
comp = comp.default;
|
|
}
|
|
resolvedComp = comp;
|
|
return comp;
|
|
}));
|
|
};
|
|
return defineComponent({
|
|
name: "AsyncComponentWrapper",
|
|
__asyncLoader: load,
|
|
get __asyncResolved() {
|
|
return resolvedComp;
|
|
},
|
|
setup() {
|
|
var instance = currentInstance;
|
|
if (resolvedComp) {
|
|
return () => createInnerComp(resolvedComp, instance);
|
|
}
|
|
var onError = err => {
|
|
pendingRequest = null;
|
|
handleError(err, instance, 13, !errorComponent);
|
|
};
|
|
if (suspensible && instance.suspense || isInSSRComponentSetup) {
|
|
return load().then(comp => {
|
|
return () => createInnerComp(comp, instance);
|
|
}).catch(err => {
|
|
onError(err);
|
|
return () => errorComponent ? createVNode(errorComponent, {
|
|
error: err
|
|
}) : null;
|
|
});
|
|
}
|
|
var loaded = ref(false);
|
|
var error = ref();
|
|
var delayed = ref(!!delay);
|
|
if (delay) {
|
|
setTimeout(() => {
|
|
delayed.value = false;
|
|
}, delay);
|
|
}
|
|
if (timeout != null) {
|
|
setTimeout(() => {
|
|
if (!loaded.value && !error.value) {
|
|
var err = new Error("Async component timed out after ".concat(timeout, "ms."));
|
|
onError(err);
|
|
error.value = err;
|
|
}
|
|
}, timeout);
|
|
}
|
|
load().then(() => {
|
|
loaded.value = true;
|
|
if (instance.parent && isKeepAlive(instance.parent.vnode)) {
|
|
instance.parent.effect.dirty = true;
|
|
queueJob(instance.parent.update);
|
|
}
|
|
}).catch(err => {
|
|
onError(err);
|
|
error.value = err;
|
|
});
|
|
return () => {
|
|
if (loaded.value && resolvedComp) {
|
|
return createInnerComp(resolvedComp, instance);
|
|
} else if (error.value && errorComponent) {
|
|
return createVNode(errorComponent, {
|
|
error: error.value
|
|
});
|
|
} else if (loadingComponent && !delayed.value) {
|
|
return createVNode(loadingComponent);
|
|
}
|
|
};
|
|
}
|
|
});
|
|
}
|
|
function createInnerComp(comp, parent) {
|
|
var {
|
|
ref: ref2,
|
|
props,
|
|
children,
|
|
ce
|
|
} = parent.vnode;
|
|
var vnode = createVNode(comp, props, children);
|
|
vnode.ref = ref2;
|
|
vnode.ce = ce;
|
|
delete parent.vnode.ce;
|
|
return vnode;
|
|
}
|
|
var isKeepAlive = vnode => vnode.type.__isKeepAlive;
|
|
var KeepAliveImpl = {
|
|
name: "KeepAlive",
|
|
// Marker for special handling inside the renderer. We are not using a ===
|
|
// check directly on KeepAlive in the renderer, because importing it directly
|
|
// would prevent it from being tree-shaken.
|
|
__isKeepAlive: true,
|
|
props: {
|
|
include: [String, RegExp, Array],
|
|
exclude: [String, RegExp, Array],
|
|
max: [String, Number]
|
|
},
|
|
setup(props, _ref7) {
|
|
var {
|
|
slots
|
|
} = _ref7;
|
|
var instance = getCurrentInstance();
|
|
var sharedContext = instance.ctx;
|
|
if (!sharedContext.renderer) {
|
|
return () => {
|
|
var children = slots.default && slots.default();
|
|
return children && children.length === 1 ? children[0] : children;
|
|
};
|
|
}
|
|
var cache = /* @__PURE__ */new Map();
|
|
var keys = /* @__PURE__ */new Set();
|
|
var current = null;
|
|
var parentSuspense = instance.suspense;
|
|
var {
|
|
renderer: {
|
|
p: patch,
|
|
m: move,
|
|
um: _unmount,
|
|
o: {
|
|
createElement
|
|
}
|
|
}
|
|
} = sharedContext;
|
|
var storageContainer = createElement("div", null);
|
|
sharedContext.activate = (vnode, container, anchor, namespace, optimized) => {
|
|
var instance2 = vnode.component;
|
|
move(vnode, container, anchor, 0, parentSuspense);
|
|
patch(instance2.vnode, vnode, container, anchor, instance2, parentSuspense, namespace, vnode.slotScopeIds, optimized);
|
|
queuePostRenderEffect(() => {
|
|
instance2.isDeactivated = false;
|
|
if (instance2.a) {
|
|
invokeArrayFns(instance2.a);
|
|
}
|
|
var vnodeHook = vnode.props && vnode.props.onVnodeMounted;
|
|
if (vnodeHook) {
|
|
invokeVNodeHook(vnodeHook, instance2.parent, vnode);
|
|
}
|
|
}, parentSuspense);
|
|
};
|
|
sharedContext.deactivate = vnode => {
|
|
var instance2 = vnode.component;
|
|
move(vnode, storageContainer, null, 1, parentSuspense);
|
|
queuePostRenderEffect(() => {
|
|
if (instance2.da) {
|
|
invokeArrayFns(instance2.da);
|
|
}
|
|
var vnodeHook = vnode.props && vnode.props.onVnodeUnmounted;
|
|
if (vnodeHook) {
|
|
invokeVNodeHook(vnodeHook, instance2.parent, vnode);
|
|
}
|
|
instance2.isDeactivated = true;
|
|
}, parentSuspense);
|
|
};
|
|
function unmount(vnode) {
|
|
resetShapeFlag(vnode);
|
|
_unmount(vnode, instance, parentSuspense, true);
|
|
}
|
|
function pruneCache(filter) {
|
|
cache.forEach((vnode, key) => {
|
|
var name = getComponentName(vnode.type);
|
|
if (name && (!filter || !filter(name))) {
|
|
pruneCacheEntry(key);
|
|
}
|
|
});
|
|
}
|
|
function pruneCacheEntry(key) {
|
|
var cached = cache.get(key);
|
|
if (!current || !isSameVNodeType(cached, current)) {
|
|
unmount(cached);
|
|
} else if (current) {
|
|
resetShapeFlag(current);
|
|
}
|
|
cache.delete(key);
|
|
keys.delete(key);
|
|
}
|
|
watch(() => [props.include, props.exclude], _ref8 => {
|
|
var [include, exclude] = _ref8;
|
|
include && pruneCache(name => matches(include, name));
|
|
exclude && pruneCache(name => !matches(exclude, name));
|
|
},
|
|
// prune post-render after `current` has been updated
|
|
{
|
|
flush: "post",
|
|
deep: true
|
|
});
|
|
var pendingCacheKey = null;
|
|
var cacheSubtree = () => {
|
|
if (pendingCacheKey != null) {
|
|
cache.set(pendingCacheKey, getInnerChild(instance.subTree));
|
|
}
|
|
};
|
|
onMounted(cacheSubtree);
|
|
onUpdated(cacheSubtree);
|
|
onBeforeUnmount(() => {
|
|
cache.forEach(cached => {
|
|
var {
|
|
subTree,
|
|
suspense
|
|
} = instance;
|
|
var vnode = getInnerChild(subTree);
|
|
if (cached.type === vnode.type && cached.key === vnode.key) {
|
|
resetShapeFlag(vnode);
|
|
var da = vnode.component.da;
|
|
da && queuePostRenderEffect(da, suspense);
|
|
return;
|
|
}
|
|
unmount(cached);
|
|
});
|
|
});
|
|
return () => {
|
|
pendingCacheKey = null;
|
|
if (!slots.default) {
|
|
return null;
|
|
}
|
|
var children = slots.default();
|
|
var rawVNode = children[0];
|
|
if (children.length > 1) {
|
|
current = null;
|
|
return children;
|
|
} else if (!isVNode(rawVNode) || !(rawVNode.shapeFlag & 4) && !(rawVNode.shapeFlag & 128)) {
|
|
current = null;
|
|
return rawVNode;
|
|
}
|
|
var vnode = getInnerChild(rawVNode);
|
|
var comp = vnode.type;
|
|
var name = getComponentName(isAsyncWrapper(vnode) ? vnode.type.__asyncResolved || {} : comp);
|
|
var {
|
|
include,
|
|
exclude,
|
|
max
|
|
} = props;
|
|
if (include && (!name || !matches(include, name)) || exclude && name && matches(exclude, name)) {
|
|
current = vnode;
|
|
return rawVNode;
|
|
}
|
|
var key = vnode.key == null ? comp : vnode.key;
|
|
var cachedVNode = cache.get(key);
|
|
if (vnode.el) {
|
|
vnode = cloneVNode(vnode);
|
|
if (rawVNode.shapeFlag & 128) {
|
|
rawVNode.ssContent = vnode;
|
|
}
|
|
}
|
|
pendingCacheKey = key;
|
|
if (cachedVNode) {
|
|
vnode.el = cachedVNode.el;
|
|
vnode.component = cachedVNode.component;
|
|
if (vnode.transition) {
|
|
setTransitionHooks(vnode, vnode.transition);
|
|
}
|
|
vnode.shapeFlag |= 512;
|
|
keys.delete(key);
|
|
keys.add(key);
|
|
} else {
|
|
keys.add(key);
|
|
if (max && keys.size > parseInt(max, 10)) {
|
|
pruneCacheEntry(keys.values().next().value);
|
|
}
|
|
}
|
|
vnode.shapeFlag |= 256;
|
|
current = vnode;
|
|
return isSuspense(rawVNode.type) ? rawVNode : vnode;
|
|
};
|
|
}
|
|
};
|
|
var KeepAlive = KeepAliveImpl;
|
|
function matches(pattern, name) {
|
|
if (isArray(pattern)) {
|
|
return pattern.some(p => matches(p, name));
|
|
} else if (isString(pattern)) {
|
|
return pattern.split(",").includes(name);
|
|
} else if (isRegExp(pattern)) {
|
|
return pattern.test(name);
|
|
}
|
|
return false;
|
|
}
|
|
function onActivated(hook, target) {
|
|
registerKeepAliveHook(hook, "a", target);
|
|
}
|
|
function onDeactivated(hook, target) {
|
|
registerKeepAliveHook(hook, "da", target);
|
|
}
|
|
function registerKeepAliveHook(hook, type) {
|
|
var target = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : currentInstance;
|
|
var wrappedHook = hook.__wdc || (hook.__wdc = () => {
|
|
var current = target;
|
|
while (current) {
|
|
if (current.isDeactivated) {
|
|
return;
|
|
}
|
|
current = current.parent;
|
|
}
|
|
return hook();
|
|
});
|
|
injectHook(type, wrappedHook, target);
|
|
if (target) {
|
|
var current = target.parent;
|
|
while (current && current.parent) {
|
|
if (isKeepAlive(current.parent.vnode)) {
|
|
injectToKeepAliveRoot(wrappedHook, type, target, current);
|
|
}
|
|
current = current.parent;
|
|
}
|
|
}
|
|
}
|
|
function injectToKeepAliveRoot(hook, type, target, keepAliveRoot) {
|
|
var injected = injectHook(type, hook, keepAliveRoot, true
|
|
/* prepend */);
|
|
onUnmounted(() => {
|
|
remove(keepAliveRoot[type], injected);
|
|
}, target);
|
|
}
|
|
function resetShapeFlag(vnode) {
|
|
vnode.shapeFlag &= ~256;
|
|
vnode.shapeFlag &= ~512;
|
|
}
|
|
function getInnerChild(vnode) {
|
|
return vnode.shapeFlag & 128 ? vnode.ssContent : vnode;
|
|
}
|
|
function injectHook(type, hook) {
|
|
var target = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : currentInstance;
|
|
var prepend = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : false;
|
|
if (target) {
|
|
if (isRootHook(type) && target !== target.root) {
|
|
target = target.root;
|
|
if (isRootImmediateHook(type)) {
|
|
var proxy = target.proxy;
|
|
callWithAsyncErrorHandling(hook.bind(proxy), target, type, ON_LOAD === type ? [proxy.$page.options] : []);
|
|
}
|
|
}
|
|
var {
|
|
__page_container__
|
|
} = target.root.vnode;
|
|
if (__page_container__) {
|
|
__page_container__.onInjectHook(type);
|
|
}
|
|
var hooks = target[type] || (target[type] = []);
|
|
var wrappedHook = hook.__weh || (hook.__weh = function () {
|
|
if (target.isUnmounted) {
|
|
return;
|
|
}
|
|
pauseTracking();
|
|
var reset = setCurrentInstance(target);
|
|
for (var _len4 = arguments.length, args = new Array(_len4), _key4 = 0; _key4 < _len4; _key4++) {
|
|
args[_key4] = arguments[_key4];
|
|
}
|
|
var res = callWithAsyncErrorHandling(hook, target, type, args);
|
|
reset();
|
|
resetTracking();
|
|
return res;
|
|
});
|
|
if (prepend) {
|
|
hooks.unshift(wrappedHook);
|
|
} else {
|
|
hooks.push(wrappedHook);
|
|
}
|
|
return wrappedHook;
|
|
}
|
|
}
|
|
var createHook = lifecycle => function (hook) {
|
|
var target = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : currentInstance;
|
|
return (
|
|
// post-create lifecycle registrations are noops during SSR (except for serverPrefetch)
|
|
(!isInSSRComponentSetup || lifecycle === "sp") && injectHook(lifecycle, function () {
|
|
return hook(...arguments);
|
|
}, target)
|
|
);
|
|
};
|
|
var onBeforeMount = createHook("bm");
|
|
var onMounted = createHook("m");
|
|
var onBeforeUpdate = createHook("bu");
|
|
var onUpdated = createHook("u");
|
|
var onBeforeUnmount = createHook("bum");
|
|
var onUnmounted = createHook("um");
|
|
var onServerPrefetch = createHook("sp");
|
|
var onRenderTriggered = createHook("rtg");
|
|
var onRenderTracked = createHook("rtc");
|
|
function onErrorCaptured(hook) {
|
|
var target = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : currentInstance;
|
|
injectHook("ec", hook, target);
|
|
}
|
|
function renderList(source, renderItem, cache, index) {
|
|
var ret;
|
|
var cached = cache && cache[index];
|
|
if (isArray(source) || isString(source)) {
|
|
ret = new Array(source.length);
|
|
for (var i = 0, l = source.length; i < l; i++) {
|
|
ret[i] = renderItem(source[i], i, void 0, cached && cached[i]);
|
|
}
|
|
} else if (typeof source === "number") {
|
|
ret = new Array(source);
|
|
for (var _i2 = 0; _i2 < source; _i2++) {
|
|
ret[_i2] = renderItem(_i2 + 1, _i2, void 0, cached && cached[_i2]);
|
|
}
|
|
} else if (isObject(source)) {
|
|
if (source[Symbol.iterator]) {
|
|
ret = Array.from(source, (item, i) => renderItem(item, i, void 0, cached && cached[i]));
|
|
} else {
|
|
var keys = Object.keys(source);
|
|
ret = new Array(keys.length);
|
|
for (var _i3 = 0, _l = keys.length; _i3 < _l; _i3++) {
|
|
var key = keys[_i3];
|
|
ret[_i3] = renderItem(source[key], key, _i3, cached && cached[_i3]);
|
|
}
|
|
}
|
|
} else {
|
|
ret = [];
|
|
}
|
|
if (cache) {
|
|
cache[index] = ret;
|
|
}
|
|
return ret;
|
|
}
|
|
function createSlots(slots, dynamicSlots) {
|
|
var _loop = function (i) {
|
|
var slot = dynamicSlots[i];
|
|
if (isArray(slot)) {
|
|
for (var j = 0; j < slot.length; j++) {
|
|
slots[slot[j].name] = slot[j].fn;
|
|
}
|
|
} else if (slot) {
|
|
slots[slot.name] = slot.key ? function () {
|
|
var res = slot.fn(...arguments);
|
|
if (res) res.key = slot.key;
|
|
return res;
|
|
} : slot.fn;
|
|
}
|
|
};
|
|
for (var i = 0; i < dynamicSlots.length; i++) {
|
|
_loop(i);
|
|
}
|
|
return slots;
|
|
}
|
|
function renderSlot(slots, name) {
|
|
var props = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : {};
|
|
var fallback = arguments.length > 3 ? arguments[3] : undefined;
|
|
var noSlotted = arguments.length > 4 ? arguments[4] : undefined;
|
|
if (currentRenderingInstance.isCE || currentRenderingInstance.parent && isAsyncWrapper(currentRenderingInstance.parent) && currentRenderingInstance.parent.isCE) {
|
|
if (name !== "default") props.name = name;
|
|
return createVNode("slot", props, fallback && fallback());
|
|
}
|
|
var slot = slots[name];
|
|
if (slot && slot._c) {
|
|
slot._d = false;
|
|
}
|
|
openBlock();
|
|
var validSlotContent = slot && ensureValidVNode(slot(props));
|
|
var rendered = createBlock(Fragment, {
|
|
key: props.key ||
|
|
// slot content array of a dynamic conditional slot may have a branch
|
|
// key attached in the `createSlots` helper, respect that
|
|
validSlotContent && validSlotContent.key || "_".concat(name)
|
|
}, validSlotContent || (fallback ? fallback() : []), validSlotContent && slots._ === 1 ? 64 : -2);
|
|
if (!noSlotted && rendered.scopeId) {
|
|
rendered.slotScopeIds = [rendered.scopeId + "-s"];
|
|
}
|
|
if (slot && slot._c) {
|
|
slot._d = true;
|
|
}
|
|
return rendered;
|
|
}
|
|
function ensureValidVNode(vnodes) {
|
|
return vnodes.some(child => {
|
|
if (!isVNode(child)) return true;
|
|
if (child.type === Comment) return false;
|
|
if (child.type === Fragment && !ensureValidVNode(child.children)) return false;
|
|
return true;
|
|
}) ? vnodes : null;
|
|
}
|
|
function toHandlers(obj, preserveCaseIfNecessary) {
|
|
var ret = {};
|
|
for (var key in obj) {
|
|
ret[preserveCaseIfNecessary && /[A-Z]/.test(key) ? "on:".concat(key) : toHandlerKey(key)] = obj[key];
|
|
}
|
|
return ret;
|
|
}
|
|
var getPublicInstance = i => {
|
|
if (!i) return null;
|
|
if (isStatefulComponent(i)) return getExposeProxy(i) || i.proxy;
|
|
return getPublicInstance(i.parent);
|
|
};
|
|
var publicPropertiesMap =
|
|
// Move PURE marker to new line to workaround compiler discarding it
|
|
// due to type annotation
|
|
/* @__PURE__ */
|
|
extend(/* @__PURE__ */Object.create(null), {
|
|
$: i => i,
|
|
$el: i => i.vnode.el,
|
|
$data: i => i.data,
|
|
$props: i => i.props,
|
|
$attrs: i => i.attrs,
|
|
$slots: i => i.slots,
|
|
$refs: i => i.refs,
|
|
$parent: i => getPublicInstance(i.parent),
|
|
$root: i => getPublicInstance(i.root),
|
|
$emit: i => i.emit,
|
|
$options: i => resolveMergedOptions(i),
|
|
$forceUpdate: i => i.f || (i.f = () => {
|
|
i.effect.dirty = true;
|
|
queueJob(i.update);
|
|
}),
|
|
$nextTick: i => i.n || (i.n = nextTick.bind(i.proxy)),
|
|
$watch: i => instanceWatch.bind(i)
|
|
});
|
|
var hasSetupBinding = (state, key) => state !== EMPTY_OBJ && !state.__isScriptSetup && hasOwn(state, key);
|
|
var PublicInstanceProxyHandlers = {
|
|
get(_ref9, key) {
|
|
var {
|
|
_: instance
|
|
} = _ref9;
|
|
var {
|
|
ctx,
|
|
setupState,
|
|
data,
|
|
props,
|
|
accessCache,
|
|
type,
|
|
appContext
|
|
} = instance;
|
|
var normalizedProps;
|
|
if (key[0] !== "$") {
|
|
var n = accessCache[key];
|
|
if (n !== void 0) {
|
|
switch (n) {
|
|
case 1 /* SETUP */:
|
|
return setupState[key];
|
|
case 2 /* DATA */:
|
|
return data[key];
|
|
case 4 /* CONTEXT */:
|
|
return ctx[key];
|
|
case 3 /* PROPS */:
|
|
return props[key];
|
|
}
|
|
} else if (hasSetupBinding(setupState, key)) {
|
|
accessCache[key] = 1 /* SETUP */;
|
|
return setupState[key];
|
|
} else if (data !== EMPTY_OBJ && hasOwn(data, key)) {
|
|
accessCache[key] = 2 /* DATA */;
|
|
return data[key];
|
|
} else if (
|
|
// only cache other properties when instance has declared (thus stable)
|
|
// props
|
|
(normalizedProps = instance.propsOptions[0]) && hasOwn(normalizedProps, key)) {
|
|
accessCache[key] = 3 /* PROPS */;
|
|
return props[key];
|
|
} else if (ctx !== EMPTY_OBJ && hasOwn(ctx, key)) {
|
|
accessCache[key] = 4 /* CONTEXT */;
|
|
return ctx[key];
|
|
} else if (shouldCacheAccess) {
|
|
accessCache[key] = 0 /* OTHER */;
|
|
}
|
|
}
|
|
var publicGetter = publicPropertiesMap[key];
|
|
var cssModule, globalProperties;
|
|
if (publicGetter) {
|
|
if (key === "$attrs") {
|
|
track(instance, "get", key);
|
|
}
|
|
return publicGetter(instance);
|
|
} else if (
|
|
// css module (injected by vue-loader)
|
|
(cssModule = type.__cssModules) && (cssModule = cssModule[key])) {
|
|
return cssModule;
|
|
} else if (ctx !== EMPTY_OBJ && hasOwn(ctx, key)) {
|
|
accessCache[key] = 4 /* CONTEXT */;
|
|
return ctx[key];
|
|
} else if (
|
|
// global properties
|
|
globalProperties = appContext.config.globalProperties, hasOwn(globalProperties, key)) {
|
|
{
|
|
return globalProperties[key];
|
|
}
|
|
} else ;
|
|
},
|
|
set(_ref10, key, value) {
|
|
var {
|
|
_: instance
|
|
} = _ref10;
|
|
var {
|
|
data,
|
|
setupState,
|
|
ctx
|
|
} = instance;
|
|
if (hasSetupBinding(setupState, key)) {
|
|
setupState[key] = value;
|
|
return true;
|
|
} else if (data !== EMPTY_OBJ && hasOwn(data, key)) {
|
|
data[key] = value;
|
|
return true;
|
|
} else if (hasOwn(instance.props, key)) {
|
|
return false;
|
|
}
|
|
if (key[0] === "$" && key.slice(1) in instance) {
|
|
return false;
|
|
} else {
|
|
{
|
|
ctx[key] = value;
|
|
}
|
|
}
|
|
return true;
|
|
},
|
|
has(_ref11, key) {
|
|
var {
|
|
_: {
|
|
data,
|
|
setupState,
|
|
accessCache,
|
|
ctx,
|
|
appContext,
|
|
propsOptions
|
|
}
|
|
} = _ref11;
|
|
var normalizedProps;
|
|
return !!accessCache[key] || data !== EMPTY_OBJ && hasOwn(data, key) || hasSetupBinding(setupState, key) || (normalizedProps = propsOptions[0]) && hasOwn(normalizedProps, key) || hasOwn(ctx, key) || hasOwn(publicPropertiesMap, key) || hasOwn(appContext.config.globalProperties, key);
|
|
},
|
|
defineProperty(target, key, descriptor) {
|
|
if (descriptor.get != null) {
|
|
target._.accessCache[key] = 0;
|
|
} else if (hasOwn(descriptor, "value")) {
|
|
this.set(target, key, descriptor.value, null);
|
|
}
|
|
return Reflect.defineProperty(target, key, descriptor);
|
|
}
|
|
};
|
|
var RuntimeCompiledPublicInstanceProxyHandlers = /* @__PURE__ */extend({}, PublicInstanceProxyHandlers, {
|
|
get(target, key) {
|
|
if (key === Symbol.unscopables) {
|
|
return;
|
|
}
|
|
return PublicInstanceProxyHandlers.get(target, key, target);
|
|
},
|
|
has(_, key) {
|
|
var has = key[0] !== "_" && !isGloballyAllowed(key);
|
|
return has;
|
|
}
|
|
});
|
|
function defineProps() {
|
|
return null;
|
|
}
|
|
function defineEmits() {
|
|
return null;
|
|
}
|
|
function defineExpose(exposed) {}
|
|
function defineOptions(options) {}
|
|
function defineSlots() {
|
|
return null;
|
|
}
|
|
function defineModel() {}
|
|
function withDefaults(props, defaults) {
|
|
return null;
|
|
}
|
|
function useSlots() {
|
|
return getContext().slots;
|
|
}
|
|
function useAttrs() {
|
|
return getContext().attrs;
|
|
}
|
|
function getContext() {
|
|
var i = getCurrentInstance();
|
|
return i.setupContext || (i.setupContext = createSetupContext(i));
|
|
}
|
|
function normalizePropsOrEmits(props) {
|
|
return isArray(props) ? props.reduce((normalized, p) => (normalized[p] = null, normalized), {}) : props;
|
|
}
|
|
function mergeDefaults(raw, defaults) {
|
|
var props = normalizePropsOrEmits(raw);
|
|
for (var key in defaults) {
|
|
if (key.startsWith("__skip")) continue;
|
|
var opt = props[key];
|
|
if (opt) {
|
|
if (isArray(opt) || isFunction(opt)) {
|
|
opt = props[key] = {
|
|
type: opt,
|
|
default: defaults[key]
|
|
};
|
|
} else {
|
|
opt.default = defaults[key];
|
|
}
|
|
} else if (opt === null) {
|
|
opt = props[key] = {
|
|
default: defaults[key]
|
|
};
|
|
} else ;
|
|
if (opt && defaults["__skip_".concat(key)]) {
|
|
opt.skipFactory = true;
|
|
}
|
|
}
|
|
return props;
|
|
}
|
|
function mergeModels(a, b) {
|
|
if (!a || !b) return a || b;
|
|
if (isArray(a) && isArray(b)) return a.concat(b);
|
|
return extend({}, normalizePropsOrEmits(a), normalizePropsOrEmits(b));
|
|
}
|
|
function createPropsRestProxy(props, excludedKeys) {
|
|
var ret = {};
|
|
var _loop2 = function (key) {
|
|
if (!excludedKeys.includes(key)) {
|
|
Object.defineProperty(ret, key, {
|
|
enumerable: true,
|
|
get: () => props[key]
|
|
});
|
|
}
|
|
};
|
|
for (var key in props) {
|
|
_loop2(key);
|
|
}
|
|
return ret;
|
|
}
|
|
function withAsyncContext(getAwaitable) {
|
|
var ctx = getCurrentInstance();
|
|
var awaitable = getAwaitable();
|
|
unsetCurrentInstance();
|
|
if (isPromise(awaitable)) {
|
|
awaitable = awaitable.catch(e => {
|
|
setCurrentInstance(ctx);
|
|
throw e;
|
|
});
|
|
}
|
|
return [awaitable, () => setCurrentInstance(ctx)];
|
|
}
|
|
var shouldCacheAccess = true;
|
|
function applyOptions(instance) {
|
|
var options = resolveMergedOptions(instance);
|
|
var publicThis = instance.proxy;
|
|
var ctx = instance.ctx;
|
|
shouldCacheAccess = false;
|
|
if (options.beforeCreate) {
|
|
callHook$1(options.beforeCreate, instance, "bc");
|
|
}
|
|
var {
|
|
// state
|
|
data: dataOptions,
|
|
computed: computedOptions,
|
|
methods,
|
|
watch: watchOptions,
|
|
provide: provideOptions,
|
|
inject: injectOptions,
|
|
// lifecycle
|
|
created,
|
|
beforeMount,
|
|
mounted,
|
|
beforeUpdate,
|
|
updated,
|
|
activated,
|
|
deactivated,
|
|
beforeDestroy,
|
|
beforeUnmount,
|
|
destroyed,
|
|
unmounted,
|
|
render,
|
|
renderTracked,
|
|
renderTriggered,
|
|
errorCaptured,
|
|
serverPrefetch,
|
|
// public API
|
|
expose,
|
|
inheritAttrs,
|
|
// assets
|
|
components,
|
|
directives,
|
|
filters
|
|
} = options;
|
|
var checkDuplicateProperties = null;
|
|
if (injectOptions) {
|
|
resolveInjections(injectOptions, ctx, checkDuplicateProperties);
|
|
}
|
|
if (methods) {
|
|
for (var key in methods) {
|
|
var methodHandler = methods[key];
|
|
if (isFunction(methodHandler)) {
|
|
{
|
|
ctx[key] = methodHandler.bind(publicThis);
|
|
}
|
|
}
|
|
}
|
|
}
|
|
if (dataOptions) {
|
|
var data = dataOptions.call(publicThis, publicThis);
|
|
if (!isObject(data)) ;else {
|
|
instance.data = reactive(data);
|
|
}
|
|
}
|
|
shouldCacheAccess = true;
|
|
if (computedOptions) {
|
|
var _loop3 = function (_key5) {
|
|
var opt = computedOptions[_key5];
|
|
var get = isFunction(opt) ? opt.bind(publicThis, publicThis) : isFunction(opt.get) ? opt.get.bind(publicThis, publicThis) : NOOP;
|
|
var set = !isFunction(opt) && isFunction(opt.set) ? opt.set.bind(publicThis) : NOOP;
|
|
var c = computed({
|
|
get,
|
|
set
|
|
});
|
|
Object.defineProperty(ctx, _key5, {
|
|
enumerable: true,
|
|
configurable: true,
|
|
get: () => c.value,
|
|
set: v => c.value = v
|
|
});
|
|
};
|
|
for (var _key5 in computedOptions) {
|
|
_loop3(_key5);
|
|
}
|
|
}
|
|
if (watchOptions) {
|
|
for (var _key6 in watchOptions) {
|
|
createWatcher(watchOptions[_key6], ctx, publicThis, _key6);
|
|
}
|
|
}
|
|
if (provideOptions) {
|
|
var provides = isFunction(provideOptions) ? provideOptions.call(publicThis) : provideOptions;
|
|
Reflect.ownKeys(provides).forEach(key => {
|
|
provide(key, provides[key]);
|
|
});
|
|
}
|
|
if (created) {
|
|
callHook$1(created, instance, "c");
|
|
}
|
|
function registerLifecycleHook(register, hook) {
|
|
if (isArray(hook)) {
|
|
hook.forEach(_hook => register(_hook.bind(publicThis)));
|
|
} else if (hook) {
|
|
register(hook.bind(publicThis));
|
|
}
|
|
}
|
|
registerLifecycleHook(onBeforeMount, beforeMount);
|
|
registerLifecycleHook(onMounted, mounted);
|
|
registerLifecycleHook(onBeforeUpdate, beforeUpdate);
|
|
registerLifecycleHook(onUpdated, updated);
|
|
registerLifecycleHook(onActivated, activated);
|
|
registerLifecycleHook(onDeactivated, deactivated);
|
|
registerLifecycleHook(onErrorCaptured, errorCaptured);
|
|
registerLifecycleHook(onRenderTracked, renderTracked);
|
|
registerLifecycleHook(onRenderTriggered, renderTriggered);
|
|
registerLifecycleHook(onBeforeUnmount, beforeUnmount);
|
|
registerLifecycleHook(onUnmounted, unmounted);
|
|
registerLifecycleHook(onServerPrefetch, serverPrefetch);
|
|
if (isArray(expose)) {
|
|
if (expose.length) {
|
|
var exposed = instance.exposed || (instance.exposed = {});
|
|
expose.forEach(key => {
|
|
Object.defineProperty(exposed, key, {
|
|
get: () => publicThis[key],
|
|
set: val => publicThis[key] = val
|
|
});
|
|
});
|
|
} else if (!instance.exposed) {
|
|
instance.exposed = {};
|
|
}
|
|
}
|
|
if (render && instance.render === NOOP) {
|
|
instance.render = render;
|
|
}
|
|
if (inheritAttrs != null) {
|
|
instance.inheritAttrs = inheritAttrs;
|
|
}
|
|
if (components) instance.components = components;
|
|
if (directives) instance.directives = directives;
|
|
var customApplyOptions = instance.appContext.config.globalProperties.$applyOptions;
|
|
if (customApplyOptions) {
|
|
customApplyOptions(options, instance, publicThis);
|
|
}
|
|
}
|
|
function resolveInjections(injectOptions, ctx) {
|
|
var checkDuplicateProperties = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : NOOP;
|
|
if (isArray(injectOptions)) {
|
|
injectOptions = normalizeInject(injectOptions);
|
|
}
|
|
var _loop4 = function (key) {
|
|
var opt = injectOptions[key];
|
|
var injected = void 0;
|
|
if (isObject(opt)) {
|
|
if ("default" in opt) {
|
|
injected = inject(opt.from || key, opt.default, true);
|
|
} else {
|
|
injected = inject(opt.from || key);
|
|
}
|
|
} else {
|
|
injected = inject(opt);
|
|
}
|
|
if (isRef(injected)) {
|
|
Object.defineProperty(ctx, key, {
|
|
enumerable: true,
|
|
configurable: true,
|
|
get: () => injected.value,
|
|
set: v => injected.value = v
|
|
});
|
|
} else {
|
|
ctx[key] = injected;
|
|
}
|
|
};
|
|
for (var key in injectOptions) {
|
|
_loop4(key);
|
|
}
|
|
}
|
|
function callHook$1(hook, instance, type) {
|
|
callWithAsyncErrorHandling(isArray(hook) ? hook.map(h => h.bind(instance.proxy)) : hook.bind(instance.proxy), instance, type);
|
|
}
|
|
function createWatcher(raw, ctx, publicThis, key) {
|
|
var getter = key.includes(".") ? createPathGetter(publicThis, key) : () => publicThis[key];
|
|
if (isString(raw)) {
|
|
var handler = ctx[raw];
|
|
if (isFunction(handler)) {
|
|
watch(getter, handler);
|
|
}
|
|
} else if (isFunction(raw)) {
|
|
watch(getter, raw.bind(publicThis));
|
|
} else if (isObject(raw)) {
|
|
if (isArray(raw)) {
|
|
raw.forEach(r => createWatcher(r, ctx, publicThis, key));
|
|
} else {
|
|
var _handler = isFunction(raw.handler) ? raw.handler.bind(publicThis) : ctx[raw.handler];
|
|
if (isFunction(_handler)) {
|
|
watch(getter, _handler, raw);
|
|
}
|
|
}
|
|
} else ;
|
|
}
|
|
function resolveMergedOptions(instance) {
|
|
var base = instance.type;
|
|
var {
|
|
mixins,
|
|
extends: extendsOptions
|
|
} = base;
|
|
var {
|
|
mixins: globalMixins,
|
|
optionsCache: cache,
|
|
config: {
|
|
optionMergeStrategies
|
|
}
|
|
} = instance.appContext;
|
|
var cached = cache.get(base);
|
|
var resolved;
|
|
if (cached) {
|
|
resolved = cached;
|
|
} else if (!globalMixins.length && !mixins && !extendsOptions) {
|
|
{
|
|
resolved = base;
|
|
}
|
|
} else {
|
|
resolved = {};
|
|
if (globalMixins.length) {
|
|
globalMixins.forEach(m => mergeOptions(resolved, m, optionMergeStrategies, true));
|
|
}
|
|
mergeOptions(resolved, base, optionMergeStrategies);
|
|
}
|
|
if (isObject(base)) {
|
|
cache.set(base, resolved);
|
|
}
|
|
return resolved;
|
|
}
|
|
function mergeOptions(to, from, strats) {
|
|
var asMixin = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : false;
|
|
var {
|
|
mixins,
|
|
extends: extendsOptions
|
|
} = from;
|
|
if (extendsOptions) {
|
|
mergeOptions(to, extendsOptions, strats, true);
|
|
}
|
|
if (mixins) {
|
|
mixins.forEach(m => mergeOptions(to, m, strats, true));
|
|
}
|
|
for (var key in from) {
|
|
if (asMixin && key === "expose") ;else {
|
|
var strat = internalOptionMergeStrats[key] || strats && strats[key];
|
|
to[key] = strat ? strat(to[key], from[key]) : from[key];
|
|
}
|
|
}
|
|
return to;
|
|
}
|
|
var internalOptionMergeStrats = {
|
|
data: mergeDataFn,
|
|
props: mergeEmitsOrPropsOptions,
|
|
emits: mergeEmitsOrPropsOptions,
|
|
// objects
|
|
methods: mergeObjectOptions,
|
|
computed: mergeObjectOptions,
|
|
// lifecycle
|
|
beforeCreate: mergeAsArray,
|
|
created: mergeAsArray,
|
|
beforeMount: mergeAsArray,
|
|
mounted: mergeAsArray,
|
|
beforeUpdate: mergeAsArray,
|
|
updated: mergeAsArray,
|
|
beforeDestroy: mergeAsArray,
|
|
beforeUnmount: mergeAsArray,
|
|
destroyed: mergeAsArray,
|
|
unmounted: mergeAsArray,
|
|
activated: mergeAsArray,
|
|
deactivated: mergeAsArray,
|
|
errorCaptured: mergeAsArray,
|
|
serverPrefetch: mergeAsArray,
|
|
// assets
|
|
components: mergeObjectOptions,
|
|
directives: mergeObjectOptions,
|
|
// watch
|
|
watch: mergeWatchOptions,
|
|
// provide / inject
|
|
provide: mergeDataFn,
|
|
inject: mergeInject
|
|
};
|
|
function mergeDataFn(to, from) {
|
|
if (!from) {
|
|
return to;
|
|
}
|
|
if (!to) {
|
|
return from;
|
|
}
|
|
return function mergedDataFn() {
|
|
return extend(isFunction(to) ? to.call(this, this) : to, isFunction(from) ? from.call(this, this) : from);
|
|
};
|
|
}
|
|
function mergeInject(to, from) {
|
|
return mergeObjectOptions(normalizeInject(to), normalizeInject(from));
|
|
}
|
|
function normalizeInject(raw) {
|
|
if (isArray(raw)) {
|
|
var res = {};
|
|
for (var i = 0; i < raw.length; i++) {
|
|
res[raw[i]] = raw[i];
|
|
}
|
|
return res;
|
|
}
|
|
return raw;
|
|
}
|
|
function mergeAsArray(to, from) {
|
|
return to ? [...new Set([].concat(to, from))] : from;
|
|
}
|
|
function mergeObjectOptions(to, from) {
|
|
return to ? extend(/* @__PURE__ */Object.create(null), to, from) : from;
|
|
}
|
|
function mergeEmitsOrPropsOptions(to, from) {
|
|
if (to) {
|
|
if (isArray(to) && isArray(from)) {
|
|
return [... /* @__PURE__ */new Set([...to, ...from])];
|
|
}
|
|
return extend(/* @__PURE__ */Object.create(null), normalizePropsOrEmits(to), normalizePropsOrEmits(from != null ? from : {}));
|
|
} else {
|
|
return from;
|
|
}
|
|
}
|
|
function mergeWatchOptions(to, from) {
|
|
if (!to) return from;
|
|
if (!from) return to;
|
|
var merged = extend(/* @__PURE__ */Object.create(null), to);
|
|
for (var key in from) {
|
|
merged[key] = mergeAsArray(to[key], from[key]);
|
|
}
|
|
return merged;
|
|
}
|
|
function createAppContext() {
|
|
return {
|
|
app: null,
|
|
config: {
|
|
isNativeTag: NO,
|
|
performance: false,
|
|
globalProperties: {},
|
|
optionMergeStrategies: {},
|
|
errorHandler: void 0,
|
|
warnHandler: void 0,
|
|
compilerOptions: {}
|
|
},
|
|
mixins: [],
|
|
components: {},
|
|
directives: {},
|
|
provides: /* @__PURE__ */Object.create(null),
|
|
optionsCache: /* @__PURE__ */new WeakMap(),
|
|
propsCache: /* @__PURE__ */new WeakMap(),
|
|
emitsCache: /* @__PURE__ */new WeakMap()
|
|
};
|
|
}
|
|
var uid$1 = 0;
|
|
function createAppAPI(render, hydrate) {
|
|
return function createApp(rootComponent) {
|
|
var rootProps = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : null;
|
|
if (!isFunction(rootComponent)) {
|
|
rootComponent = extend({}, rootComponent);
|
|
}
|
|
if (rootProps != null && !isObject(rootProps)) {
|
|
rootProps = null;
|
|
}
|
|
var context = createAppContext();
|
|
var installedPlugins = /* @__PURE__ */new WeakSet();
|
|
var isMounted = false;
|
|
var app = context.app = {
|
|
_uid: uid$1++,
|
|
_component: rootComponent,
|
|
_props: rootProps,
|
|
_container: null,
|
|
_context: context,
|
|
_instance: null,
|
|
version,
|
|
get config() {
|
|
return context.config;
|
|
},
|
|
set config(v) {},
|
|
use(plugin) {
|
|
for (var _len5 = arguments.length, options = new Array(_len5 > 1 ? _len5 - 1 : 0), _key7 = 1; _key7 < _len5; _key7++) {
|
|
options[_key7 - 1] = arguments[_key7];
|
|
}
|
|
if (installedPlugins.has(plugin)) ;else if (plugin && isFunction(plugin.install)) {
|
|
installedPlugins.add(plugin);
|
|
plugin.install(app, ...options);
|
|
} else if (isFunction(plugin)) {
|
|
installedPlugins.add(plugin);
|
|
plugin(app, ...options);
|
|
} else ;
|
|
return app;
|
|
},
|
|
mixin(mixin) {
|
|
{
|
|
if (!context.mixins.includes(mixin)) {
|
|
context.mixins.push(mixin);
|
|
}
|
|
}
|
|
return app;
|
|
},
|
|
component(name, component) {
|
|
if (!component) {
|
|
return context.components[name];
|
|
}
|
|
context.components[name] = component;
|
|
return app;
|
|
},
|
|
directive(name, directive) {
|
|
if (!directive) {
|
|
return context.directives[name];
|
|
}
|
|
context.directives[name] = directive;
|
|
return app;
|
|
},
|
|
mount(rootContainer, isHydrate, namespace) {
|
|
if (!isMounted) {
|
|
var vnode = createVNode(rootComponent, rootProps);
|
|
vnode.appContext = context;
|
|
if (namespace === true) {
|
|
namespace = "svg";
|
|
} else if (namespace === false) {
|
|
namespace = void 0;
|
|
}
|
|
if (isHydrate && hydrate) {
|
|
hydrate(vnode, rootContainer);
|
|
} else {
|
|
render(vnode, rootContainer, namespace);
|
|
}
|
|
isMounted = true;
|
|
app._container = rootContainer;
|
|
rootContainer.__vue_app__ = app;
|
|
app._instance = vnode.component;
|
|
return getExposeProxy(vnode.component) || vnode.component.proxy;
|
|
}
|
|
},
|
|
unmount() {
|
|
if (isMounted) {
|
|
render(null, app._container);
|
|
delete app._container.__vue_app__;
|
|
}
|
|
},
|
|
provide(key, value) {
|
|
context.provides[key] = value;
|
|
return app;
|
|
},
|
|
runWithContext(fn) {
|
|
var lastApp = currentApp;
|
|
currentApp = app;
|
|
try {
|
|
return fn();
|
|
} finally {
|
|
currentApp = lastApp;
|
|
}
|
|
}
|
|
};
|
|
return app;
|
|
};
|
|
}
|
|
var currentApp = null;
|
|
function provide(key, value) {
|
|
if (!currentInstance) ;else {
|
|
var provides = currentInstance.provides;
|
|
var parentProvides = currentInstance.parent && currentInstance.parent.provides;
|
|
if (parentProvides === provides) {
|
|
provides = currentInstance.provides = Object.create(parentProvides);
|
|
}
|
|
provides[key] = value;
|
|
if (currentInstance.type.mpType === "app") {
|
|
currentInstance.appContext.app.provide(key, value);
|
|
}
|
|
}
|
|
}
|
|
function inject(key, defaultValue) {
|
|
var treatDefaultAsFactory = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : false;
|
|
var instance = currentInstance || currentRenderingInstance;
|
|
if (instance || currentApp) {
|
|
var provides = instance ? instance.parent == null ? instance.vnode.appContext && instance.vnode.appContext.provides : instance.parent.provides : currentApp._context.provides;
|
|
if (provides && key in provides) {
|
|
return provides[key];
|
|
} else if (arguments.length > 1) {
|
|
return treatDefaultAsFactory && isFunction(defaultValue) ? defaultValue.call(instance && instance.proxy) : defaultValue;
|
|
} else ;
|
|
}
|
|
}
|
|
function hasInjectionContext() {
|
|
return !!(currentInstance || currentRenderingInstance || currentApp);
|
|
}
|
|
function initProps(instance, rawProps, isStateful) {
|
|
var isSSR = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : false;
|
|
var props = {};
|
|
var attrs = {};
|
|
def(attrs, InternalObjectKey, 1);
|
|
instance.propsDefaults = /* @__PURE__ */Object.create(null);
|
|
setFullProps(instance, rawProps, props, attrs);
|
|
for (var key in instance.propsOptions[0]) {
|
|
if (!(key in props)) {
|
|
props[key] = void 0;
|
|
}
|
|
}
|
|
if (isStateful) {
|
|
instance.props = isSSR ? props : shallowReactive(props);
|
|
} else {
|
|
if (!instance.type.props) {
|
|
instance.props = attrs;
|
|
} else {
|
|
instance.props = props;
|
|
}
|
|
}
|
|
instance.attrs = attrs;
|
|
}
|
|
function updateProps(instance, rawProps, rawPrevProps, optimized) {
|
|
var {
|
|
props,
|
|
attrs,
|
|
vnode: {
|
|
patchFlag
|
|
}
|
|
} = instance;
|
|
var rawCurrentProps = toRaw(props);
|
|
var [options] = instance.propsOptions;
|
|
var hasAttrsChanged = false;
|
|
if (
|
|
// always force full diff in dev
|
|
// - #1942 if hmr is enabled with sfc component
|
|
// - vite#872 non-sfc component used by sfc component
|
|
(optimized || patchFlag > 0) && !(patchFlag & 16)) {
|
|
if (patchFlag & 8) {
|
|
var propsToUpdate = instance.vnode.dynamicProps;
|
|
for (var i = 0; i < propsToUpdate.length; i++) {
|
|
var key = propsToUpdate[i];
|
|
if (isEmitListener(instance.emitsOptions, key)) {
|
|
continue;
|
|
}
|
|
var value = rawProps[key];
|
|
if (options) {
|
|
if (hasOwn(attrs, key)) {
|
|
if (value !== attrs[key]) {
|
|
attrs[key] = value;
|
|
hasAttrsChanged = true;
|
|
}
|
|
} else {
|
|
var camelizedKey = camelize(key);
|
|
props[camelizedKey] = resolvePropValue(options, rawCurrentProps, camelizedKey, value, instance, false);
|
|
}
|
|
} else {
|
|
if (value !== attrs[key]) {
|
|
attrs[key] = value;
|
|
hasAttrsChanged = true;
|
|
}
|
|
}
|
|
}
|
|
}
|
|
} else {
|
|
if (setFullProps(instance, rawProps, props, attrs)) {
|
|
hasAttrsChanged = true;
|
|
}
|
|
var kebabKey;
|
|
for (var _key8 in rawCurrentProps) {
|
|
if (!rawProps ||
|
|
// for camelCase
|
|
!hasOwn(rawProps, _key8) && (
|
|
// it's possible the original props was passed in as kebab-case
|
|
// and converted to camelCase (#955)
|
|
(kebabKey = hyphenate(_key8)) === _key8 || !hasOwn(rawProps, kebabKey))) {
|
|
if (options) {
|
|
if (rawPrevProps && (
|
|
// for camelCase
|
|
rawPrevProps[_key8] !== void 0 ||
|
|
// for kebab-case
|
|
rawPrevProps[kebabKey] !== void 0)) {
|
|
props[_key8] = resolvePropValue(options, rawCurrentProps, _key8, void 0, instance, true);
|
|
}
|
|
} else {
|
|
delete props[_key8];
|
|
}
|
|
}
|
|
}
|
|
if (attrs !== rawCurrentProps) {
|
|
for (var _key9 in attrs) {
|
|
if (!rawProps || !hasOwn(rawProps, _key9) && true) {
|
|
delete attrs[_key9];
|
|
hasAttrsChanged = true;
|
|
}
|
|
}
|
|
}
|
|
}
|
|
if (hasAttrsChanged) {
|
|
trigger(instance, "set", "$attrs");
|
|
}
|
|
}
|
|
function setFullProps(instance, rawProps, props, attrs) {
|
|
var [options, needCastKeys] = instance.propsOptions;
|
|
var hasAttrsChanged = false;
|
|
var rawCastValues;
|
|
if (rawProps) {
|
|
for (var key in rawProps) {
|
|
if (isReservedProp(key)) {
|
|
continue;
|
|
}
|
|
var value = rawProps[key];
|
|
var camelKey = void 0;
|
|
if (options && hasOwn(options, camelKey = camelize(key))) {
|
|
if (!needCastKeys || !needCastKeys.includes(camelKey)) {
|
|
props[camelKey] = value;
|
|
} else {
|
|
(rawCastValues || (rawCastValues = {}))[camelKey] = value;
|
|
}
|
|
} else if (!isEmitListener(instance.emitsOptions, key)) {
|
|
if (!(key in attrs) || value !== attrs[key]) {
|
|
attrs[key] = value;
|
|
hasAttrsChanged = true;
|
|
}
|
|
}
|
|
}
|
|
}
|
|
if (needCastKeys) {
|
|
var rawCurrentProps = toRaw(props);
|
|
var castValues = rawCastValues || EMPTY_OBJ;
|
|
for (var i = 0; i < needCastKeys.length; i++) {
|
|
var _key10 = needCastKeys[i];
|
|
props[_key10] = resolvePropValue(options, rawCurrentProps, _key10, castValues[_key10], instance, !hasOwn(castValues, _key10));
|
|
}
|
|
}
|
|
return hasAttrsChanged;
|
|
}
|
|
function resolvePropValue(options, props, key, value, instance, isAbsent) {
|
|
var opt = options[key];
|
|
if (opt != null) {
|
|
var hasDefault = hasOwn(opt, "default");
|
|
if (hasDefault && value === void 0) {
|
|
var defaultValue = opt.default;
|
|
if (opt.type !== Function && !opt.skipFactory && isFunction(defaultValue)) {
|
|
var {
|
|
propsDefaults
|
|
} = instance;
|
|
if (key in propsDefaults) {
|
|
value = propsDefaults[key];
|
|
} else {
|
|
var reset = setCurrentInstance(instance);
|
|
value = propsDefaults[key] = defaultValue.call(null, props);
|
|
reset();
|
|
}
|
|
} else {
|
|
value = defaultValue;
|
|
}
|
|
}
|
|
if (opt[0 /* shouldCast */]) {
|
|
if (isAbsent && !hasDefault) {
|
|
value = false;
|
|
} else if (opt[1 /* shouldCastTrue */] && (value === "" || value === hyphenate(key))) {
|
|
value = true;
|
|
}
|
|
}
|
|
}
|
|
return value;
|
|
}
|
|
function normalizePropsOptions(comp, appContext) {
|
|
var asMixin = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : false;
|
|
var cache = appContext.propsCache;
|
|
var cached = cache.get(comp);
|
|
if (cached) {
|
|
return cached;
|
|
}
|
|
var raw = comp.props;
|
|
var normalized = {};
|
|
var needCastKeys = [];
|
|
var hasExtends = false;
|
|
if (!isFunction(comp)) {
|
|
var extendProps = raw2 => {
|
|
hasExtends = true;
|
|
var [props, keys] = normalizePropsOptions(raw2, appContext, true);
|
|
extend(normalized, props);
|
|
if (keys) needCastKeys.push(...keys);
|
|
};
|
|
if (!asMixin && appContext.mixins.length) {
|
|
appContext.mixins.forEach(extendProps);
|
|
}
|
|
if (comp.extends) {
|
|
extendProps(comp.extends);
|
|
}
|
|
if (comp.mixins) {
|
|
comp.mixins.forEach(extendProps);
|
|
}
|
|
}
|
|
if (!raw && !hasExtends) {
|
|
if (isObject(comp)) {
|
|
cache.set(comp, EMPTY_ARR);
|
|
}
|
|
return EMPTY_ARR;
|
|
}
|
|
if (isArray(raw)) {
|
|
for (var i = 0; i < raw.length; i++) {
|
|
var normalizedKey = camelize(raw[i]);
|
|
if (validatePropName(normalizedKey)) {
|
|
normalized[normalizedKey] = EMPTY_OBJ;
|
|
}
|
|
}
|
|
} else if (raw) {
|
|
for (var key in raw) {
|
|
var _normalizedKey = camelize(key);
|
|
if (validatePropName(_normalizedKey)) {
|
|
var opt = raw[key];
|
|
var prop = normalized[_normalizedKey] = isArray(opt) || isFunction(opt) ? {
|
|
type: opt
|
|
} : extend({}, opt);
|
|
if (prop) {
|
|
var booleanIndex = getTypeIndex(Boolean, prop.type);
|
|
var stringIndex = getTypeIndex(String, prop.type);
|
|
prop[0 /* shouldCast */] = booleanIndex > -1;
|
|
prop[1 /* shouldCastTrue */] = stringIndex < 0 || booleanIndex < stringIndex;
|
|
if (booleanIndex > -1 || hasOwn(prop, "default")) {
|
|
needCastKeys.push(_normalizedKey);
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
var res = [normalized, needCastKeys];
|
|
if (isObject(comp)) {
|
|
cache.set(comp, res);
|
|
}
|
|
return res;
|
|
}
|
|
function validatePropName(key) {
|
|
if (key[0] !== "$" && !isReservedProp(key)) {
|
|
return true;
|
|
}
|
|
return false;
|
|
}
|
|
function getType(ctor) {
|
|
if (ctor === null) {
|
|
return "null";
|
|
}
|
|
if (typeof ctor === "function") {
|
|
return ctor.name || "";
|
|
} else if (typeof ctor === "object") {
|
|
var name = ctor.constructor && ctor.constructor.name;
|
|
return name || "";
|
|
}
|
|
return "";
|
|
}
|
|
function isSameType(a, b) {
|
|
return getType(a) === getType(b);
|
|
}
|
|
function getTypeIndex(type, expectedTypes) {
|
|
if (isArray(expectedTypes)) {
|
|
return expectedTypes.findIndex(t => isSameType(t, type));
|
|
} else if (isFunction(expectedTypes)) {
|
|
return isSameType(expectedTypes, type) ? 0 : -1;
|
|
}
|
|
return -1;
|
|
}
|
|
var isInternalKey = key => key[0] === "_" || key === "$stable";
|
|
var normalizeSlotValue = value => isArray(value) ? value.map(normalizeVNode) : [normalizeVNode(value)];
|
|
var normalizeSlot = (key, rawSlot, ctx) => {
|
|
if (rawSlot._n) {
|
|
return rawSlot;
|
|
}
|
|
var normalized = withCtx(function () {
|
|
if (!!("production" !== "production") && currentInstance && (!ctx || ctx.root === currentInstance.root)) ;
|
|
return normalizeSlotValue(rawSlot(...arguments));
|
|
}, ctx);
|
|
normalized._c = false;
|
|
return normalized;
|
|
};
|
|
var normalizeObjectSlots = (rawSlots, slots, instance) => {
|
|
var ctx = rawSlots._ctx;
|
|
for (var key in rawSlots) {
|
|
if (isInternalKey(key)) continue;
|
|
var value = rawSlots[key];
|
|
if (isFunction(value)) {
|
|
slots[key] = normalizeSlot(key, value, ctx);
|
|
} else if (value != null) {
|
|
(function () {
|
|
var normalized = normalizeSlotValue(value);
|
|
slots[key] = () => normalized;
|
|
})();
|
|
}
|
|
}
|
|
};
|
|
var normalizeVNodeSlots = (instance, children) => {
|
|
var normalized = normalizeSlotValue(children);
|
|
instance.slots.default = () => normalized;
|
|
};
|
|
var initSlots = (instance, children) => {
|
|
if (instance.vnode.shapeFlag & 32) {
|
|
var type = children._;
|
|
if (type) {
|
|
instance.slots = toRaw(children);
|
|
def(children, "_", type);
|
|
} else {
|
|
normalizeObjectSlots(children, instance.slots = {});
|
|
}
|
|
} else {
|
|
instance.slots = {};
|
|
if (children) {
|
|
normalizeVNodeSlots(instance, children);
|
|
}
|
|
}
|
|
def(instance.slots, InternalObjectKey, 1);
|
|
};
|
|
var updateSlots = (instance, children, optimized) => {
|
|
var {
|
|
vnode,
|
|
slots
|
|
} = instance;
|
|
var needDeletionCheck = true;
|
|
var deletionComparisonTarget = EMPTY_OBJ;
|
|
if (vnode.shapeFlag & 32) {
|
|
var type = children._;
|
|
if (type) {
|
|
if (optimized && type === 1) {
|
|
needDeletionCheck = false;
|
|
} else {
|
|
extend(slots, children);
|
|
if (!optimized && type === 1) {
|
|
delete slots._;
|
|
}
|
|
}
|
|
} else {
|
|
needDeletionCheck = !children.$stable;
|
|
normalizeObjectSlots(children, slots);
|
|
}
|
|
deletionComparisonTarget = children;
|
|
} else if (children) {
|
|
normalizeVNodeSlots(instance, children);
|
|
deletionComparisonTarget = {
|
|
default: 1
|
|
};
|
|
}
|
|
if (needDeletionCheck) {
|
|
for (var key in slots) {
|
|
if (!isInternalKey(key) && deletionComparisonTarget[key] == null) {
|
|
delete slots[key];
|
|
}
|
|
}
|
|
}
|
|
};
|
|
function setRef(rawRef, oldRawRef, parentSuspense, vnode) {
|
|
var isUnmount = arguments.length > 4 && arguments[4] !== undefined ? arguments[4] : false;
|
|
if (isArray(rawRef)) {
|
|
rawRef.forEach((r, i) => setRef(r, oldRawRef && (isArray(oldRawRef) ? oldRawRef[i] : oldRawRef), parentSuspense, vnode, isUnmount));
|
|
return;
|
|
}
|
|
if (isAsyncWrapper(vnode) && !isUnmount) {
|
|
return;
|
|
}
|
|
var refValue = vnode.shapeFlag & 4 ? getExposeProxy(vnode.component) || vnode.component.proxy : vnode.el;
|
|
var value = isUnmount ? null : refValue;
|
|
var {
|
|
i: owner,
|
|
r: ref
|
|
} = rawRef;
|
|
var oldRef = oldRawRef && oldRawRef.r;
|
|
var refs = owner.refs === EMPTY_OBJ ? owner.refs = {} : owner.refs;
|
|
var setupState = owner.setupState;
|
|
if (oldRef != null && oldRef !== ref) {
|
|
if (isString(oldRef)) {
|
|
refs[oldRef] = null;
|
|
if (hasOwn(setupState, oldRef)) {
|
|
setupState[oldRef] = null;
|
|
}
|
|
} else if (isRef(oldRef)) {
|
|
oldRef.value = null;
|
|
}
|
|
}
|
|
if (isFunction(ref)) {
|
|
callWithErrorHandling(ref, owner, 12, [value, refs]);
|
|
} else {
|
|
var _isString = isString(ref);
|
|
var _isRef = isRef(ref);
|
|
if (_isString || _isRef) {
|
|
var doSet = () => {
|
|
if (rawRef.f) {
|
|
var existing = _isString ? hasOwn(setupState, ref) ? setupState[ref] : refs[ref] : ref.value;
|
|
if (isUnmount) {
|
|
isArray(existing) && remove(existing, refValue);
|
|
} else {
|
|
if (!isArray(existing)) {
|
|
if (_isString) {
|
|
refs[ref] = [refValue];
|
|
if (hasOwn(setupState, ref)) {
|
|
setupState[ref] = refs[ref];
|
|
}
|
|
} else {
|
|
ref.value = [refValue];
|
|
if (rawRef.k) refs[rawRef.k] = ref.value;
|
|
}
|
|
} else if (!existing.includes(refValue)) {
|
|
existing.push(refValue);
|
|
}
|
|
}
|
|
} else if (_isString) {
|
|
refs[ref] = value;
|
|
if (hasOwn(setupState, ref)) {
|
|
setupState[ref] = value;
|
|
}
|
|
} else if (_isRef) {
|
|
ref.value = value;
|
|
if (rawRef.k) refs[rawRef.k] = value;
|
|
} else ;
|
|
};
|
|
if (value) {
|
|
doSet.id = -1;
|
|
queuePostRenderEffect(doSet, parentSuspense);
|
|
} else {
|
|
doSet();
|
|
}
|
|
}
|
|
}
|
|
}
|
|
var hasMismatch = false;
|
|
var isSVGContainer = container => container.namespaceURI.includes("svg") && container.tagName !== "foreignObject";
|
|
var isMathMLContainer = container => container.namespaceURI.includes("MathML");
|
|
var getContainerType = container => {
|
|
if (isSVGContainer(container)) return "svg";
|
|
if (isMathMLContainer(container)) return "mathml";
|
|
return void 0;
|
|
};
|
|
var isComment = node => node.nodeType === 8 /* COMMENT */;
|
|
function createHydrationFunctions(rendererInternals) {
|
|
var {
|
|
mt: mountComponent,
|
|
p: patch,
|
|
o: {
|
|
patchProp,
|
|
createText,
|
|
nextSibling,
|
|
parentNode,
|
|
remove,
|
|
insert,
|
|
createComment
|
|
}
|
|
} = rendererInternals;
|
|
var hydrate = (vnode, container) => {
|
|
if (!container.hasChildNodes()) {
|
|
patch(null, vnode, container);
|
|
flushPostFlushCbs();
|
|
container._vnode = vnode;
|
|
return;
|
|
}
|
|
hasMismatch = false;
|
|
hydrateNode(container.firstChild, vnode, null, null, null);
|
|
flushPostFlushCbs();
|
|
container._vnode = vnode;
|
|
if (hasMismatch && true) {
|
|
console.error("Hydration completed but contains mismatches.");
|
|
}
|
|
};
|
|
var hydrateNode = function (node, vnode, parentComponent, parentSuspense, slotScopeIds) {
|
|
var optimized = arguments.length > 5 && arguments[5] !== undefined ? arguments[5] : false;
|
|
var isFragmentStart = isComment(node) && node.data === "[";
|
|
var onMismatch = () => handleMismatch(node, vnode, parentComponent, parentSuspense, slotScopeIds, isFragmentStart);
|
|
var {
|
|
type,
|
|
ref,
|
|
shapeFlag,
|
|
patchFlag
|
|
} = vnode;
|
|
var domType = node.nodeType;
|
|
vnode.el = node;
|
|
if (patchFlag === -2) {
|
|
optimized = false;
|
|
vnode.dynamicChildren = null;
|
|
}
|
|
var nextNode = null;
|
|
switch (type) {
|
|
case Text:
|
|
if (domType !== 3 /* TEXT */) {
|
|
if (vnode.children === "") {
|
|
insert(
|
|
// fixed by xxxxxx
|
|
vnode.el = createText("", node.parentNode), parentNode(node), node);
|
|
nextNode = node;
|
|
} else {
|
|
nextNode = onMismatch();
|
|
}
|
|
} else {
|
|
if (node.data !== vnode.children) {
|
|
hasMismatch = true;
|
|
node.data = vnode.children;
|
|
}
|
|
nextNode = nextSibling(node);
|
|
}
|
|
break;
|
|
case Comment:
|
|
if (isTemplateNode(node)) {
|
|
nextNode = nextSibling(node);
|
|
replaceNode(vnode.el = node.content.firstChild, node, parentComponent);
|
|
} else if (domType !== 8 /* COMMENT */ || isFragmentStart) {
|
|
nextNode = onMismatch();
|
|
} else {
|
|
nextNode = nextSibling(node);
|
|
}
|
|
break;
|
|
case Static:
|
|
if (isFragmentStart) {
|
|
node = nextSibling(node);
|
|
domType = node.nodeType;
|
|
}
|
|
if (domType === 1 /* ELEMENT */ || domType === 3 /* TEXT */) {
|
|
nextNode = node;
|
|
var needToAdoptContent = !vnode.children.length;
|
|
for (var i = 0; i < vnode.staticCount; i++) {
|
|
if (needToAdoptContent) vnode.children += nextNode.nodeType === 1 /* ELEMENT */ ? nextNode.outerHTML : nextNode.data;
|
|
if (i === vnode.staticCount - 1) {
|
|
vnode.anchor = nextNode;
|
|
}
|
|
nextNode = nextSibling(nextNode);
|
|
}
|
|
return isFragmentStart ? nextSibling(nextNode) : nextNode;
|
|
} else {
|
|
onMismatch();
|
|
}
|
|
break;
|
|
case Fragment:
|
|
if (!isFragmentStart) {
|
|
nextNode = onMismatch();
|
|
} else {
|
|
nextNode = hydrateFragment(node, vnode, parentComponent, parentSuspense, slotScopeIds, optimized);
|
|
}
|
|
break;
|
|
default:
|
|
if (shapeFlag & 1) {
|
|
if ((domType !== 1 /* ELEMENT */ || vnode.type.toLowerCase() !== node.tagName.toLowerCase()) && !isTemplateNode(node)) {
|
|
nextNode = onMismatch();
|
|
} else {
|
|
nextNode = hydrateElement(node, vnode, parentComponent, parentSuspense, slotScopeIds, optimized);
|
|
}
|
|
} else if (shapeFlag & 6) {
|
|
vnode.slotScopeIds = slotScopeIds;
|
|
var container = parentNode(node);
|
|
if (isFragmentStart) {
|
|
nextNode = locateClosingAnchor(node);
|
|
} else if (isComment(node) && node.data === "teleport start") {
|
|
nextNode = locateClosingAnchor(node, node.data, "teleport end");
|
|
} else {
|
|
nextNode = nextSibling(node);
|
|
}
|
|
mountComponent(vnode, container, null, parentComponent, parentSuspense, getContainerType(container), optimized);
|
|
if (isAsyncWrapper(vnode)) {
|
|
var subTree;
|
|
if (isFragmentStart) {
|
|
subTree = createVNode(Fragment);
|
|
subTree.anchor = nextNode ? nextNode.previousSibling : container.lastChild;
|
|
} else {
|
|
subTree = node.nodeType === 3 ? createTextVNode("") : createVNode("div");
|
|
}
|
|
subTree.el = node;
|
|
vnode.component.subTree = subTree;
|
|
}
|
|
} else if (shapeFlag & 64) {
|
|
if (domType !== 8 /* COMMENT */) {
|
|
nextNode = onMismatch();
|
|
} else {
|
|
nextNode = vnode.type.hydrate(node, vnode, parentComponent, parentSuspense, slotScopeIds, optimized, rendererInternals, hydrateChildren);
|
|
}
|
|
} else if (shapeFlag & 128) {
|
|
nextNode = vnode.type.hydrate(node, vnode, parentComponent, parentSuspense, getContainerType(parentNode(node)), slotScopeIds, optimized, rendererInternals, hydrateNode);
|
|
} else ;
|
|
}
|
|
if (ref != null) {
|
|
setRef(ref, null, parentSuspense, vnode);
|
|
}
|
|
return nextNode;
|
|
};
|
|
var hydrateElement = (el, vnode, parentComponent, parentSuspense, slotScopeIds, optimized) => {
|
|
optimized = optimized || !!vnode.dynamicChildren;
|
|
var {
|
|
type,
|
|
props,
|
|
patchFlag,
|
|
shapeFlag,
|
|
dirs,
|
|
transition
|
|
} = vnode;
|
|
var forcePatch = type === "input" || type === "option";
|
|
if (forcePatch || patchFlag !== -1) {
|
|
if (dirs) {
|
|
invokeDirectiveHook(vnode, null, parentComponent, "created");
|
|
}
|
|
var needCallTransitionHooks = false;
|
|
if (isTemplateNode(el)) {
|
|
needCallTransitionHooks = needTransition(parentSuspense, transition) && parentComponent && parentComponent.vnode.props && parentComponent.vnode.props.appear;
|
|
var content = el.content.firstChild;
|
|
if (needCallTransitionHooks) {
|
|
transition.beforeEnter(content);
|
|
}
|
|
replaceNode(content, el, parentComponent);
|
|
vnode.el = el = content;
|
|
}
|
|
if (shapeFlag & 16 &&
|
|
// skip if element has innerHTML / textContent
|
|
!(props && (props.innerHTML || props.textContent))) {
|
|
var next = hydrateChildren(el.firstChild, vnode, el, parentComponent, parentSuspense, slotScopeIds, optimized);
|
|
while (next) {
|
|
hasMismatch = true;
|
|
var cur = next;
|
|
next = next.nextSibling;
|
|
remove(cur);
|
|
}
|
|
} else if (shapeFlag & 8) {
|
|
if (el.textContent !== vnode.children) {
|
|
hasMismatch = true;
|
|
el.textContent = vnode.children;
|
|
}
|
|
}
|
|
if (props) {
|
|
if (forcePatch || !optimized || patchFlag & (16 | 32)) {
|
|
for (var key in props) {
|
|
if (forcePatch && (key.endsWith("value") || key === "indeterminate") || isOn(key) && !isReservedProp(key) ||
|
|
// force hydrate v-bind with .prop modifiers
|
|
key[0] === ".") {
|
|
patchProp(el, key, null, props[key], void 0, void 0, parentComponent);
|
|
}
|
|
}
|
|
} else if (props.onClick) {
|
|
patchProp(el, "onClick", null, props.onClick, void 0, void 0, parentComponent);
|
|
}
|
|
}
|
|
var vnodeHooks;
|
|
if (vnodeHooks = props && props.onVnodeBeforeMount) {
|
|
invokeVNodeHook(vnodeHooks, parentComponent, vnode);
|
|
}
|
|
if (dirs) {
|
|
invokeDirectiveHook(vnode, null, parentComponent, "beforeMount");
|
|
}
|
|
if ((vnodeHooks = props && props.onVnodeMounted) || dirs || needCallTransitionHooks) {
|
|
queueEffectWithSuspense(() => {
|
|
vnodeHooks && invokeVNodeHook(vnodeHooks, parentComponent, vnode);
|
|
needCallTransitionHooks && transition.enter(el);
|
|
dirs && invokeDirectiveHook(vnode, null, parentComponent, "mounted");
|
|
}, parentSuspense);
|
|
}
|
|
}
|
|
return el.nextSibling;
|
|
};
|
|
var hydrateChildren = (node, parentVNode, container, parentComponent, parentSuspense, slotScopeIds, optimized) => {
|
|
optimized = optimized || !!parentVNode.dynamicChildren;
|
|
var children = parentVNode.children;
|
|
var l = children.length;
|
|
for (var i = 0; i < l; i++) {
|
|
var vnode = optimized ? children[i] : children[i] = normalizeVNode(children[i]);
|
|
if (node) {
|
|
node = hydrateNode(node, vnode, parentComponent, parentSuspense, slotScopeIds, optimized);
|
|
} else if (vnode.type === Text && !vnode.children) {
|
|
continue;
|
|
} else {
|
|
hasMismatch = true;
|
|
patch(null, vnode, container, null, parentComponent, parentSuspense, getContainerType(container), slotScopeIds);
|
|
}
|
|
}
|
|
return node;
|
|
};
|
|
var hydrateFragment = (node, vnode, parentComponent, parentSuspense, slotScopeIds, optimized) => {
|
|
var {
|
|
slotScopeIds: fragmentSlotScopeIds
|
|
} = vnode;
|
|
if (fragmentSlotScopeIds) {
|
|
slotScopeIds = slotScopeIds ? slotScopeIds.concat(fragmentSlotScopeIds) : fragmentSlotScopeIds;
|
|
}
|
|
var container = parentNode(node);
|
|
var next = hydrateChildren(nextSibling(node), vnode, container, parentComponent, parentSuspense, slotScopeIds, optimized);
|
|
if (next && isComment(next) && next.data === "]") {
|
|
return nextSibling(vnode.anchor = next);
|
|
} else {
|
|
hasMismatch = true;
|
|
insert(vnode.anchor = createComment("]", container), container, next);
|
|
return next;
|
|
}
|
|
};
|
|
var handleMismatch = (node, vnode, parentComponent, parentSuspense, slotScopeIds, isFragment) => {
|
|
hasMismatch = true;
|
|
vnode.el = null;
|
|
if (isFragment) {
|
|
var end = locateClosingAnchor(node);
|
|
while (true) {
|
|
var next2 = nextSibling(node);
|
|
if (next2 && next2 !== end) {
|
|
remove(next2);
|
|
} else {
|
|
break;
|
|
}
|
|
}
|
|
}
|
|
var next = nextSibling(node);
|
|
var container = parentNode(node);
|
|
remove(node);
|
|
patch(null, vnode, container, next, parentComponent, parentSuspense, getContainerType(container), slotScopeIds);
|
|
return next;
|
|
};
|
|
var locateClosingAnchor = function (node) {
|
|
var open = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : "[";
|
|
var close = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : "]";
|
|
var match = 0;
|
|
while (node) {
|
|
node = nextSibling(node);
|
|
if (node && isComment(node)) {
|
|
if (node.data === open) match++;
|
|
if (node.data === close) {
|
|
if (match === 0) {
|
|
return nextSibling(node);
|
|
} else {
|
|
match--;
|
|
}
|
|
}
|
|
}
|
|
}
|
|
return node;
|
|
};
|
|
var replaceNode = (newNode, oldNode, parentComponent) => {
|
|
var parentNode2 = oldNode.parentNode;
|
|
if (parentNode2) {
|
|
parentNode2.replaceChild(newNode, oldNode);
|
|
}
|
|
var parent = parentComponent;
|
|
while (parent) {
|
|
if (parent.vnode.el === oldNode) {
|
|
parent.vnode.el = parent.subTree.el = newNode;
|
|
}
|
|
parent = parent.parent;
|
|
}
|
|
};
|
|
var isTemplateNode = node => {
|
|
return node.nodeType === 1 /* ELEMENT */ && node.tagName.toLowerCase() === "template";
|
|
};
|
|
return [hydrate, hydrateNode];
|
|
}
|
|
var queuePostRenderEffect = queueEffectWithSuspense;
|
|
function createRenderer(options) {
|
|
return baseCreateRenderer(options);
|
|
}
|
|
function createHydrationRenderer(options) {
|
|
return baseCreateRenderer(options, createHydrationFunctions);
|
|
}
|
|
function baseCreateRenderer(options, createHydrationFns) {
|
|
var target = getGlobalThis();
|
|
target.__VUE__ = true;
|
|
var {
|
|
insert: hostInsert,
|
|
remove: hostRemove,
|
|
patchProp: hostPatchProp,
|
|
forcePatchProp: hostForcePatchProp,
|
|
// fixed by xxxxxx
|
|
createElement: hostCreateElement,
|
|
createText: hostCreateText,
|
|
createComment: hostCreateComment,
|
|
setText: hostSetText,
|
|
setElementText: hostSetElementText,
|
|
parentNode: hostParentNode,
|
|
nextSibling: hostNextSibling,
|
|
setScopeId: hostSetScopeId = NOOP,
|
|
insertStaticContent: hostInsertStaticContent
|
|
} = options;
|
|
var patch = function (n1, n2, container) {
|
|
var anchor = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : null;
|
|
var parentComponent = arguments.length > 4 && arguments[4] !== undefined ? arguments[4] : null;
|
|
var parentSuspense = arguments.length > 5 && arguments[5] !== undefined ? arguments[5] : null;
|
|
var namespace = arguments.length > 6 && arguments[6] !== undefined ? arguments[6] : void 0;
|
|
var slotScopeIds = arguments.length > 7 && arguments[7] !== undefined ? arguments[7] : null;
|
|
var optimized = arguments.length > 8 && arguments[8] !== undefined ? arguments[8] : !!n2.dynamicChildren;
|
|
if (n1 === n2) {
|
|
return;
|
|
}
|
|
if (n1 && !isSameVNodeType(n1, n2)) {
|
|
anchor = getNextHostNode(n1);
|
|
unmount(n1, parentComponent, parentSuspense, true);
|
|
n1 = null;
|
|
}
|
|
if (n2.patchFlag === -2) {
|
|
optimized = false;
|
|
n2.dynamicChildren = null;
|
|
}
|
|
var {
|
|
type,
|
|
ref,
|
|
shapeFlag
|
|
} = n2;
|
|
switch (type) {
|
|
case Text:
|
|
processText(n1, n2, container, anchor);
|
|
break;
|
|
case Comment:
|
|
processCommentNode(n1, n2, container, anchor);
|
|
break;
|
|
case Static:
|
|
if (n1 == null) {
|
|
mountStaticNode(n2, container, anchor, namespace);
|
|
}
|
|
break;
|
|
case Fragment:
|
|
processFragment(n1, n2, container, anchor, parentComponent, parentSuspense, namespace, slotScopeIds, optimized);
|
|
break;
|
|
default:
|
|
if (shapeFlag & 1) {
|
|
processElement(n1, n2, container, anchor, parentComponent, parentSuspense, namespace, slotScopeIds, optimized);
|
|
} else if (shapeFlag & 6) {
|
|
processComponent(n1, n2, container, anchor, parentComponent, parentSuspense, namespace, slotScopeIds, optimized);
|
|
} else if (shapeFlag & 64) {
|
|
type.process(n1, n2, container, anchor, parentComponent, parentSuspense, namespace, slotScopeIds, optimized, internals);
|
|
} else if (shapeFlag & 128) {
|
|
type.process(n1, n2, container, anchor, parentComponent, parentSuspense, namespace, slotScopeIds, optimized, internals);
|
|
} else ;
|
|
}
|
|
if (ref != null && parentComponent) {
|
|
setRef(ref, n1 && n1.ref, parentSuspense, n2 || n1, !n2);
|
|
}
|
|
};
|
|
var processText = (n1, n2, container, anchor) => {
|
|
if (n1 == null) {
|
|
hostInsert(n2.el = hostCreateText(n2.children, container),
|
|
// fixed by xxxxxx
|
|
container, anchor);
|
|
} else {
|
|
var el = n2.el = n1.el;
|
|
if (n2.children !== n1.children) {
|
|
hostSetText(el, n2.children);
|
|
}
|
|
}
|
|
};
|
|
var processCommentNode = (n1, n2, container, anchor) => {
|
|
if (n1 == null) {
|
|
hostInsert(n2.el = hostCreateComment(n2.children || "", container),
|
|
// fixed by xxxxxx
|
|
container, anchor);
|
|
} else {
|
|
n2.el = n1.el;
|
|
}
|
|
};
|
|
var mountStaticNode = (n2, container, anchor, namespace) => {
|
|
[n2.el, n2.anchor] = hostInsertStaticContent(n2.children, container, anchor, namespace, n2.el, n2.anchor);
|
|
};
|
|
var moveStaticNode = (_ref12, container, nextSibling) => {
|
|
var {
|
|
el,
|
|
anchor
|
|
} = _ref12;
|
|
var next;
|
|
while (el && el !== anchor) {
|
|
next = hostNextSibling(el);
|
|
hostInsert(el, container, nextSibling);
|
|
el = next;
|
|
}
|
|
hostInsert(anchor, container, nextSibling);
|
|
};
|
|
var removeStaticNode = _ref13 => {
|
|
var {
|
|
el,
|
|
anchor
|
|
} = _ref13;
|
|
var next;
|
|
while (el && el !== anchor) {
|
|
next = hostNextSibling(el);
|
|
hostRemove(el);
|
|
el = next;
|
|
}
|
|
hostRemove(anchor);
|
|
};
|
|
var processElement = (n1, n2, container, anchor, parentComponent, parentSuspense, namespace, slotScopeIds, optimized) => {
|
|
if (n2.type === "svg") {
|
|
namespace = "svg";
|
|
} else if (n2.type === "math") {
|
|
namespace = "mathml";
|
|
}
|
|
if (n1 == null) {
|
|
mountElement(n2, container, anchor, parentComponent, parentSuspense, namespace, slotScopeIds, optimized);
|
|
} else {
|
|
patchElement(n1, n2, parentComponent, parentSuspense, namespace, slotScopeIds, optimized);
|
|
}
|
|
};
|
|
var mountElement = (vnode, container, anchor, parentComponent, parentSuspense, namespace, slotScopeIds, optimized) => {
|
|
var el;
|
|
var vnodeHook;
|
|
var {
|
|
props,
|
|
shapeFlag,
|
|
transition,
|
|
dirs
|
|
} = vnode;
|
|
el = vnode.el = hostCreateElement(
|
|
// fixed by xxxxxx
|
|
vnode.type, container);
|
|
if (shapeFlag & 8) {
|
|
hostSetElementText(el, vnode.children);
|
|
} else if (shapeFlag & 16) {
|
|
mountChildren(vnode.children, el, null, parentComponent, parentSuspense, resolveChildrenNamespace(vnode, namespace), slotScopeIds, optimized);
|
|
}
|
|
if (dirs) {
|
|
invokeDirectiveHook(vnode, null, parentComponent, "created");
|
|
}
|
|
setScopeId(el, vnode, vnode.scopeId, slotScopeIds, parentComponent);
|
|
if (props) {
|
|
for (var key in props) {
|
|
if (key !== "value" && !isReservedProp(key)) {
|
|
hostPatchProp(el, key, null, props[key], namespace, vnode.children, parentComponent, parentSuspense, unmountChildren);
|
|
}
|
|
}
|
|
if ("value" in props) {
|
|
hostPatchProp(el, "value", null, props.value, namespace);
|
|
}
|
|
if (vnodeHook = props.onVnodeBeforeMount) {
|
|
invokeVNodeHook(vnodeHook, parentComponent, vnode);
|
|
}
|
|
}
|
|
Object.defineProperty(el, "__vueParentComponent", {
|
|
value: parentComponent,
|
|
enumerable: false
|
|
});
|
|
if (dirs) {
|
|
invokeDirectiveHook(vnode, null, parentComponent, "beforeMount");
|
|
}
|
|
var needCallTransitionHooks = needTransition(parentSuspense, transition);
|
|
if (needCallTransitionHooks) {
|
|
transition.beforeEnter(el);
|
|
}
|
|
hostInsert(el, container, anchor);
|
|
if ((vnodeHook = props && props.onVnodeMounted) || needCallTransitionHooks || dirs) {
|
|
queuePostRenderEffect(() => {
|
|
vnodeHook && invokeVNodeHook(vnodeHook, parentComponent, vnode);
|
|
needCallTransitionHooks && transition.enter(el);
|
|
dirs && invokeDirectiveHook(vnode, null, parentComponent, "mounted");
|
|
}, parentSuspense);
|
|
}
|
|
};
|
|
var setScopeId = (el, vnode, scopeId, slotScopeIds, parentComponent) => {
|
|
if (scopeId) {
|
|
hostSetScopeId(el, scopeId);
|
|
}
|
|
if (slotScopeIds) {
|
|
for (var i = 0; i < slotScopeIds.length; i++) {
|
|
hostSetScopeId(el, slotScopeIds[i]);
|
|
}
|
|
}
|
|
if (parentComponent) {
|
|
var subTree = parentComponent.subTree;
|
|
if (vnode === subTree) {
|
|
var parentVNode = parentComponent.vnode;
|
|
setScopeId(el, parentVNode, parentVNode.scopeId, parentVNode.slotScopeIds, parentComponent.parent);
|
|
}
|
|
}
|
|
};
|
|
var mountChildren = function (children, container, anchor, parentComponent, parentSuspense, namespace, slotScopeIds, optimized) {
|
|
var start = arguments.length > 8 && arguments[8] !== undefined ? arguments[8] : 0;
|
|
for (var i = start; i < children.length; i++) {
|
|
var child = children[i] = optimized ? cloneIfMounted(children[i]) : normalizeVNode(children[i]);
|
|
patch(null, child, container, anchor, parentComponent, parentSuspense, namespace, slotScopeIds, optimized);
|
|
}
|
|
};
|
|
var patchElement = (n1, n2, parentComponent, parentSuspense, namespace, slotScopeIds, optimized) => {
|
|
var el = n2.el = n1.el;
|
|
var {
|
|
patchFlag,
|
|
dynamicChildren,
|
|
dirs
|
|
} = n2;
|
|
patchFlag |= n1.patchFlag & 16;
|
|
var oldProps = n1.props || EMPTY_OBJ;
|
|
var newProps = n2.props || EMPTY_OBJ;
|
|
var vnodeHook;
|
|
parentComponent && toggleRecurse(parentComponent, false);
|
|
if (vnodeHook = newProps.onVnodeBeforeUpdate) {
|
|
invokeVNodeHook(vnodeHook, parentComponent, n2, n1);
|
|
}
|
|
if (dirs) {
|
|
invokeDirectiveHook(n2, n1, parentComponent, "beforeUpdate");
|
|
}
|
|
parentComponent && toggleRecurse(parentComponent, true);
|
|
if (dynamicChildren) {
|
|
patchBlockChildren(n1.dynamicChildren, dynamicChildren, el, parentComponent, parentSuspense, resolveChildrenNamespace(n2, namespace), slotScopeIds);
|
|
} else if (!optimized) {
|
|
patchChildren(n1, n2, el, null, parentComponent, parentSuspense, resolveChildrenNamespace(n2, namespace), slotScopeIds, false);
|
|
}
|
|
if (patchFlag > 0) {
|
|
if (patchFlag & 16) {
|
|
patchProps(el, n2, oldProps, newProps, parentComponent, parentSuspense, namespace);
|
|
} else {
|
|
if (patchFlag & 2) {
|
|
if (oldProps.class !== newProps.class) {
|
|
hostPatchProp(el, "class", null, newProps.class, namespace);
|
|
}
|
|
}
|
|
if (patchFlag & 4) {
|
|
hostPatchProp(el, "style", oldProps.style, newProps.style, namespace);
|
|
}
|
|
if (patchFlag & 8) {
|
|
var propsToUpdate = n2.dynamicProps;
|
|
for (var i = 0; i < propsToUpdate.length; i++) {
|
|
var key = propsToUpdate[i];
|
|
var prev = oldProps[key];
|
|
var next = newProps[key];
|
|
if (next !== prev || key === "value" || hostForcePatchProp && hostForcePatchProp(el, key)) {
|
|
hostPatchProp(el, key, prev, next, namespace, n1.children, parentComponent, parentSuspense, unmountChildren);
|
|
}
|
|
}
|
|
}
|
|
}
|
|
if (patchFlag & 1) {
|
|
if (n1.children !== n2.children) {
|
|
hostSetElementText(el, n2.children);
|
|
}
|
|
}
|
|
} else if (!optimized && dynamicChildren == null) {
|
|
patchProps(el, n2, oldProps, newProps, parentComponent, parentSuspense, namespace);
|
|
}
|
|
if ((vnodeHook = newProps.onVnodeUpdated) || dirs) {
|
|
queuePostRenderEffect(() => {
|
|
vnodeHook && invokeVNodeHook(vnodeHook, parentComponent, n2, n1);
|
|
dirs && invokeDirectiveHook(n2, n1, parentComponent, "updated");
|
|
}, parentSuspense);
|
|
}
|
|
};
|
|
var patchBlockChildren = (oldChildren, newChildren, fallbackContainer, parentComponent, parentSuspense, namespace, slotScopeIds) => {
|
|
for (var i = 0; i < newChildren.length; i++) {
|
|
var oldVNode = oldChildren[i];
|
|
var newVNode = newChildren[i];
|
|
var container =
|
|
// oldVNode may be an errored async setup() component inside Suspense
|
|
// which will not have a mounted element
|
|
oldVNode.el && (
|
|
// - In the case of a Fragment, we need to provide the actual parent
|
|
// of the Fragment itself so it can move its children.
|
|
oldVNode.type === Fragment ||
|
|
// - In the case of different nodes, there is going to be a replacement
|
|
// which also requires the correct parent container
|
|
!isSameVNodeType(oldVNode, newVNode) ||
|
|
// - In the case of a component, it could contain anything.
|
|
oldVNode.shapeFlag & (6 | 64)) ? hostParentNode(oldVNode.el) :
|
|
// In other cases, the parent container is not actually used so we
|
|
// just pass the block element here to avoid a DOM parentNode call.
|
|
fallbackContainer;
|
|
patch(oldVNode, newVNode, container, null, parentComponent, parentSuspense, namespace, slotScopeIds, true);
|
|
}
|
|
};
|
|
var patchProps = (el, vnode, oldProps, newProps, parentComponent, parentSuspense, namespace) => {
|
|
if (oldProps !== newProps) {
|
|
if (oldProps !== EMPTY_OBJ) {
|
|
for (var key in oldProps) {
|
|
if (!isReservedProp(key) && !(key in newProps)) {
|
|
hostPatchProp(el, key, oldProps[key], null, namespace, vnode.children, parentComponent, parentSuspense, unmountChildren);
|
|
}
|
|
}
|
|
}
|
|
for (var _key11 in newProps) {
|
|
if (isReservedProp(_key11)) continue;
|
|
var next = newProps[_key11];
|
|
var prev = oldProps[_key11];
|
|
if (next !== prev && _key11 !== "value" || hostForcePatchProp && hostForcePatchProp(el, _key11)) {
|
|
hostPatchProp(el, _key11, prev, next, namespace, vnode.children, parentComponent, parentSuspense, unmountChildren);
|
|
}
|
|
}
|
|
if ("value" in newProps) {
|
|
hostPatchProp(el, "value", oldProps.value, newProps.value, namespace);
|
|
}
|
|
}
|
|
};
|
|
var processFragment = (n1, n2, container, anchor, parentComponent, parentSuspense, namespace, slotScopeIds, optimized) => {
|
|
var fragmentStartAnchor = n2.el = n1 ? n1.el : hostCreateText("", container);
|
|
var fragmentEndAnchor = n2.anchor = n1 ? n1.anchor : hostCreateText("", container);
|
|
var {
|
|
patchFlag,
|
|
dynamicChildren,
|
|
slotScopeIds: fragmentSlotScopeIds
|
|
} = n2;
|
|
if (fragmentSlotScopeIds) {
|
|
slotScopeIds = slotScopeIds ? slotScopeIds.concat(fragmentSlotScopeIds) : fragmentSlotScopeIds;
|
|
}
|
|
if (n1 == null) {
|
|
hostInsert(fragmentStartAnchor, container, anchor);
|
|
hostInsert(fragmentEndAnchor, container, anchor);
|
|
mountChildren(
|
|
// #10007
|
|
// such fragment like `<></>` will be compiled into
|
|
// a fragment which doesn't have a children.
|
|
// In this case fallback to an empty array
|
|
n2.children || [], container, fragmentEndAnchor, parentComponent, parentSuspense, namespace, slotScopeIds, optimized);
|
|
} else {
|
|
if (patchFlag > 0 && patchFlag & 64 && dynamicChildren &&
|
|
// #2715 the previous fragment could've been a BAILed one as a result
|
|
// of renderSlot() with no valid children
|
|
n1.dynamicChildren) {
|
|
patchBlockChildren(n1.dynamicChildren, dynamicChildren, container, parentComponent, parentSuspense, namespace, slotScopeIds);
|
|
if (
|
|
// #2080 if the stable fragment has a key, it's a <template v-for> that may
|
|
// get moved around. Make sure all root level vnodes inherit el.
|
|
// #2134 or if it's a component root, it may also get moved around
|
|
// as the component is being moved.
|
|
n2.key != null || parentComponent && n2 === parentComponent.subTree) {
|
|
traverseStaticChildren(n1, n2, true
|
|
/* shallow */);
|
|
}
|
|
} else {
|
|
patchChildren(n1, n2, container, fragmentEndAnchor, parentComponent, parentSuspense, namespace, slotScopeIds, optimized);
|
|
}
|
|
}
|
|
};
|
|
var processComponent = (n1, n2, container, anchor, parentComponent, parentSuspense, namespace, slotScopeIds, optimized) => {
|
|
n2.slotScopeIds = slotScopeIds;
|
|
if (n1 == null) {
|
|
if (n2.shapeFlag & 512) {
|
|
parentComponent.ctx.activate(n2, container, anchor, namespace, optimized);
|
|
} else {
|
|
mountComponent(n2, container, anchor, parentComponent, parentSuspense, namespace, optimized);
|
|
}
|
|
} else {
|
|
updateComponent(n1, n2, optimized);
|
|
}
|
|
};
|
|
var mountComponent = (initialVNode, container, anchor, parentComponent, parentSuspense, namespace, optimized) => {
|
|
var instance = initialVNode.component = createComponentInstance(initialVNode, parentComponent, parentSuspense);
|
|
if (isKeepAlive(initialVNode)) {
|
|
instance.ctx.renderer = internals;
|
|
}
|
|
{
|
|
setupComponent(instance);
|
|
}
|
|
if (instance.asyncDep) {
|
|
parentSuspense && parentSuspense.registerDep(instance, setupRenderEffect);
|
|
if (!initialVNode.el) {
|
|
var placeholder = instance.subTree = createVNode(Comment);
|
|
processCommentNode(null, placeholder, container, anchor);
|
|
}
|
|
} else {
|
|
setupRenderEffect(instance, initialVNode, container, anchor, parentSuspense, namespace, optimized);
|
|
}
|
|
if (instance.$wxsModules) {
|
|
var els = resolveOwnerEl(instance, true);
|
|
if (els.length) {
|
|
els.forEach(el => {
|
|
el.setAttribute(ATTR_V_OWNER_ID, instance.uid);
|
|
var {
|
|
$renderjsModules
|
|
} = instance.type;
|
|
$renderjsModules && el.setAttribute(ATTR_V_RENDERJS, $renderjsModules);
|
|
});
|
|
}
|
|
}
|
|
};
|
|
var updateComponent = (n1, n2, optimized) => {
|
|
var instance = n2.component = n1.component;
|
|
if (shouldUpdateComponent(n1, n2, optimized)) {
|
|
if (instance.asyncDep && !instance.asyncResolved) {
|
|
updateComponentPreRender(instance, n2, optimized);
|
|
return;
|
|
} else {
|
|
instance.next = n2;
|
|
invalidateJob(instance.update);
|
|
instance.effect.dirty = true;
|
|
instance.update();
|
|
}
|
|
} else {
|
|
n2.el = n1.el;
|
|
instance.vnode = n2;
|
|
}
|
|
};
|
|
var setupRenderEffect = (instance, initialVNode, container, anchor, parentSuspense, namespace, optimized) => {
|
|
var componentUpdateFn = () => {
|
|
if (!instance.isMounted) {
|
|
var vnodeHook;
|
|
var {
|
|
el,
|
|
props
|
|
} = initialVNode;
|
|
var {
|
|
bm,
|
|
m,
|
|
parent
|
|
} = instance;
|
|
var isAsyncWrapperVNode = isAsyncWrapper(initialVNode);
|
|
toggleRecurse(instance, false);
|
|
if (bm) {
|
|
invokeArrayFns(bm);
|
|
}
|
|
if (!isAsyncWrapperVNode && (vnodeHook = props && props.onVnodeBeforeMount)) {
|
|
invokeVNodeHook(vnodeHook, parent, initialVNode);
|
|
}
|
|
toggleRecurse(instance, true);
|
|
if (el && hydrateNode) {
|
|
var hydrateSubTree = () => {
|
|
instance.subTree = renderComponentRoot(instance);
|
|
hydrateNode(el, instance.subTree, instance, parentSuspense, null);
|
|
};
|
|
if (isAsyncWrapperVNode) {
|
|
initialVNode.type.__asyncLoader().then(
|
|
// note: we are moving the render call into an async callback,
|
|
// which means it won't track dependencies - but it's ok because
|
|
// a server-rendered async wrapper is already in resolved state
|
|
// and it will never need to change.
|
|
() => !instance.isUnmounted && hydrateSubTree());
|
|
} else {
|
|
hydrateSubTree();
|
|
}
|
|
} else {
|
|
var subTree = instance.subTree = renderComponentRoot(instance);
|
|
patch(null, subTree, container, anchor, instance, parentSuspense, namespace);
|
|
initialVNode.el = subTree.el;
|
|
}
|
|
if (m) {
|
|
queuePostRenderEffect(m, parentSuspense);
|
|
}
|
|
if (!isAsyncWrapperVNode && (vnodeHook = props && props.onVnodeMounted)) {
|
|
var scopedInitialVNode = initialVNode;
|
|
queuePostRenderEffect(() => invokeVNodeHook(vnodeHook, parent, scopedInitialVNode), parentSuspense);
|
|
}
|
|
if (initialVNode.shapeFlag & 256 || parent && isAsyncWrapper(parent.vnode) && parent.vnode.shapeFlag & 256) {
|
|
instance.a && queuePostRenderEffect(instance.a, parentSuspense);
|
|
}
|
|
instance.isMounted = true;
|
|
initialVNode = container = anchor = null;
|
|
} else {
|
|
var {
|
|
next,
|
|
bu,
|
|
u,
|
|
parent: _parent,
|
|
vnode
|
|
} = instance;
|
|
{
|
|
var nonHydratedAsyncRoot = locateNonHydratedAsyncRoot(instance);
|
|
if (nonHydratedAsyncRoot) {
|
|
if (next) {
|
|
next.el = vnode.el;
|
|
updateComponentPreRender(instance, next, optimized);
|
|
}
|
|
nonHydratedAsyncRoot.asyncDep.then(() => {
|
|
if (!instance.isUnmounted) {
|
|
componentUpdateFn();
|
|
}
|
|
});
|
|
return;
|
|
}
|
|
}
|
|
var originNext = next;
|
|
var _vnodeHook;
|
|
toggleRecurse(instance, false);
|
|
if (next) {
|
|
next.el = vnode.el;
|
|
updateComponentPreRender(instance, next, optimized);
|
|
} else {
|
|
next = vnode;
|
|
}
|
|
if (bu) {
|
|
invokeArrayFns(bu);
|
|
}
|
|
if (_vnodeHook = next.props && next.props.onVnodeBeforeUpdate) {
|
|
invokeVNodeHook(_vnodeHook, _parent, next, vnode);
|
|
}
|
|
toggleRecurse(instance, true);
|
|
var nextTree = renderComponentRoot(instance);
|
|
var prevTree = instance.subTree;
|
|
instance.subTree = nextTree;
|
|
patch(prevTree, nextTree,
|
|
// parent may have changed if it's in a teleport
|
|
hostParentNode(prevTree.el),
|
|
// anchor may have changed if it's in a fragment
|
|
getNextHostNode(prevTree), instance, parentSuspense, namespace);
|
|
next.el = nextTree.el;
|
|
if (originNext === null) {
|
|
updateHOCHostEl(instance, nextTree.el);
|
|
}
|
|
if (u) {
|
|
queuePostRenderEffect(u, parentSuspense);
|
|
}
|
|
if (_vnodeHook = next.props && next.props.onVnodeUpdated) {
|
|
queuePostRenderEffect(() => invokeVNodeHook(_vnodeHook, _parent, next, vnode), parentSuspense);
|
|
}
|
|
}
|
|
};
|
|
var effect = instance.effect = new ReactiveEffect(componentUpdateFn, NOOP, () => queueJob(update), instance.scope
|
|
// track it in component's effect scope
|
|
);
|
|
var update = instance.update = () => {
|
|
if (effect.dirty) {
|
|
effect.run();
|
|
}
|
|
};
|
|
update.id = instance.uid;
|
|
toggleRecurse(instance, true);
|
|
update();
|
|
};
|
|
var updateComponentPreRender = (instance, nextVNode, optimized) => {
|
|
nextVNode.component = instance;
|
|
var prevProps = instance.vnode.props;
|
|
instance.vnode = nextVNode;
|
|
instance.next = null;
|
|
updateProps(instance, nextVNode.props, prevProps, optimized);
|
|
updateSlots(instance, nextVNode.children, optimized);
|
|
pauseTracking();
|
|
flushPreFlushCbs(instance);
|
|
resetTracking();
|
|
};
|
|
var patchChildren = function (n1, n2, container, anchor, parentComponent, parentSuspense, namespace, slotScopeIds) {
|
|
var optimized = arguments.length > 8 && arguments[8] !== undefined ? arguments[8] : false;
|
|
var c1 = n1 && n1.children;
|
|
var prevShapeFlag = n1 ? n1.shapeFlag : 0;
|
|
var c2 = n2.children;
|
|
var {
|
|
patchFlag,
|
|
shapeFlag
|
|
} = n2;
|
|
if (patchFlag > 0) {
|
|
if (patchFlag & 128) {
|
|
patchKeyedChildren(c1, c2, container, anchor, parentComponent, parentSuspense, namespace, slotScopeIds, optimized);
|
|
return;
|
|
} else if (patchFlag & 256) {
|
|
patchUnkeyedChildren(c1, c2, container, anchor, parentComponent, parentSuspense, namespace, slotScopeIds, optimized);
|
|
return;
|
|
}
|
|
}
|
|
if (shapeFlag & 8) {
|
|
if (prevShapeFlag & 16) {
|
|
unmountChildren(c1, parentComponent, parentSuspense);
|
|
}
|
|
if (c2 !== c1) {
|
|
hostSetElementText(container, c2);
|
|
}
|
|
} else {
|
|
if (prevShapeFlag & 16) {
|
|
if (shapeFlag & 16) {
|
|
patchKeyedChildren(c1, c2, container, anchor, parentComponent, parentSuspense, namespace, slotScopeIds, optimized);
|
|
} else {
|
|
unmountChildren(c1, parentComponent, parentSuspense, true);
|
|
}
|
|
} else {
|
|
if (prevShapeFlag & 8) {
|
|
hostSetElementText(container, "");
|
|
}
|
|
if (shapeFlag & 16) {
|
|
mountChildren(c2, container, anchor, parentComponent, parentSuspense, namespace, slotScopeIds, optimized);
|
|
}
|
|
}
|
|
}
|
|
};
|
|
var patchUnkeyedChildren = (c1, c2, container, anchor, parentComponent, parentSuspense, namespace, slotScopeIds, optimized) => {
|
|
c1 = c1 || EMPTY_ARR;
|
|
c2 = c2 || EMPTY_ARR;
|
|
var oldLength = c1.length;
|
|
var newLength = c2.length;
|
|
var commonLength = Math.min(oldLength, newLength);
|
|
var i;
|
|
for (i = 0; i < commonLength; i++) {
|
|
var nextChild = c2[i] = optimized ? cloneIfMounted(c2[i]) : normalizeVNode(c2[i]);
|
|
patch(c1[i], nextChild, container, null, parentComponent, parentSuspense, namespace, slotScopeIds, optimized);
|
|
}
|
|
if (oldLength > newLength) {
|
|
unmountChildren(c1, parentComponent, parentSuspense, true, false, commonLength);
|
|
} else {
|
|
mountChildren(c2, container, anchor, parentComponent, parentSuspense, namespace, slotScopeIds, optimized, commonLength);
|
|
}
|
|
};
|
|
var patchKeyedChildren = (c1, c2, container, parentAnchor, parentComponent, parentSuspense, namespace, slotScopeIds, optimized) => {
|
|
var i = 0;
|
|
var l2 = c2.length;
|
|
var e1 = c1.length - 1;
|
|
var e2 = l2 - 1;
|
|
while (i <= e1 && i <= e2) {
|
|
var n1 = c1[i];
|
|
var n2 = c2[i] = optimized ? cloneIfMounted(c2[i]) : normalizeVNode(c2[i]);
|
|
if (isSameVNodeType(n1, n2)) {
|
|
patch(n1, n2, container, null, parentComponent, parentSuspense, namespace, slotScopeIds, optimized);
|
|
} else {
|
|
break;
|
|
}
|
|
i++;
|
|
}
|
|
while (i <= e1 && i <= e2) {
|
|
var _n = c1[e1];
|
|
var _n2 = c2[e2] = optimized ? cloneIfMounted(c2[e2]) : normalizeVNode(c2[e2]);
|
|
if (isSameVNodeType(_n, _n2)) {
|
|
patch(_n, _n2, container, null, parentComponent, parentSuspense, namespace, slotScopeIds, optimized);
|
|
} else {
|
|
break;
|
|
}
|
|
e1--;
|
|
e2--;
|
|
}
|
|
if (i > e1) {
|
|
if (i <= e2) {
|
|
var nextPos = e2 + 1;
|
|
var anchor = nextPos < l2 ? c2[nextPos].el : parentAnchor;
|
|
while (i <= e2) {
|
|
patch(null, c2[i] = optimized ? cloneIfMounted(c2[i]) : normalizeVNode(c2[i]), container, anchor, parentComponent, parentSuspense, namespace, slotScopeIds, optimized);
|
|
i++;
|
|
}
|
|
}
|
|
} else if (i > e2) {
|
|
while (i <= e1) {
|
|
unmount(c1[i], parentComponent, parentSuspense, true);
|
|
i++;
|
|
}
|
|
} else {
|
|
var s1 = i;
|
|
var s2 = i;
|
|
var keyToNewIndexMap = /* @__PURE__ */new Map();
|
|
for (i = s2; i <= e2; i++) {
|
|
var nextChild = c2[i] = optimized ? cloneIfMounted(c2[i]) : normalizeVNode(c2[i]);
|
|
if (nextChild.key != null) {
|
|
keyToNewIndexMap.set(nextChild.key, i);
|
|
}
|
|
}
|
|
var j;
|
|
var patched = 0;
|
|
var toBePatched = e2 - s2 + 1;
|
|
var moved = false;
|
|
var maxNewIndexSoFar = 0;
|
|
var newIndexToOldIndexMap = new Array(toBePatched);
|
|
for (i = 0; i < toBePatched; i++) {
|
|
newIndexToOldIndexMap[i] = 0;
|
|
}
|
|
for (i = s1; i <= e1; i++) {
|
|
var prevChild = c1[i];
|
|
if (patched >= toBePatched) {
|
|
unmount(prevChild, parentComponent, parentSuspense, true);
|
|
continue;
|
|
}
|
|
var newIndex = void 0;
|
|
if (prevChild.key != null) {
|
|
newIndex = keyToNewIndexMap.get(prevChild.key);
|
|
} else {
|
|
for (j = s2; j <= e2; j++) {
|
|
if (newIndexToOldIndexMap[j - s2] === 0 && isSameVNodeType(prevChild, c2[j])) {
|
|
newIndex = j;
|
|
break;
|
|
}
|
|
}
|
|
}
|
|
if (newIndex === void 0) {
|
|
unmount(prevChild, parentComponent, parentSuspense, true);
|
|
} else {
|
|
newIndexToOldIndexMap[newIndex - s2] = i + 1;
|
|
if (newIndex >= maxNewIndexSoFar) {
|
|
maxNewIndexSoFar = newIndex;
|
|
} else {
|
|
moved = true;
|
|
}
|
|
patch(prevChild, c2[newIndex], container, null, parentComponent, parentSuspense, namespace, slotScopeIds, optimized);
|
|
patched++;
|
|
}
|
|
}
|
|
var increasingNewIndexSequence = moved ? getSequence(newIndexToOldIndexMap) : EMPTY_ARR;
|
|
j = increasingNewIndexSequence.length - 1;
|
|
for (i = toBePatched - 1; i >= 0; i--) {
|
|
var nextIndex = s2 + i;
|
|
var _nextChild = c2[nextIndex];
|
|
var _anchor = nextIndex + 1 < l2 ? c2[nextIndex + 1].el : parentAnchor;
|
|
if (newIndexToOldIndexMap[i] === 0) {
|
|
patch(null, _nextChild, container, _anchor, parentComponent, parentSuspense, namespace, slotScopeIds, optimized);
|
|
} else if (moved) {
|
|
if (j < 0 || i !== increasingNewIndexSequence[j]) {
|
|
move(_nextChild, container, _anchor, 2);
|
|
} else {
|
|
j--;
|
|
}
|
|
}
|
|
}
|
|
}
|
|
};
|
|
var move = function (vnode, container, anchor, moveType) {
|
|
var parentSuspense = arguments.length > 4 && arguments[4] !== undefined ? arguments[4] : null;
|
|
var {
|
|
el,
|
|
type,
|
|
transition,
|
|
children,
|
|
shapeFlag
|
|
} = vnode;
|
|
if (shapeFlag & 6) {
|
|
move(vnode.component.subTree, container, anchor, moveType);
|
|
return;
|
|
}
|
|
if (shapeFlag & 128) {
|
|
vnode.suspense.move(container, anchor, moveType);
|
|
return;
|
|
}
|
|
if (shapeFlag & 64) {
|
|
type.move(vnode, container, anchor, internals);
|
|
return;
|
|
}
|
|
if (type === Fragment) {
|
|
hostInsert(el, container, anchor);
|
|
for (var i = 0; i < children.length; i++) {
|
|
move(children[i], container, anchor, moveType);
|
|
}
|
|
hostInsert(vnode.anchor, container, anchor);
|
|
return;
|
|
}
|
|
if (type === Static) {
|
|
moveStaticNode(vnode, container, anchor);
|
|
return;
|
|
}
|
|
var needTransition2 = moveType !== 2 && shapeFlag & 1 && transition;
|
|
if (needTransition2) {
|
|
if (moveType === 0) {
|
|
transition.beforeEnter(el);
|
|
hostInsert(el, container, anchor);
|
|
queuePostRenderEffect(() => transition.enter(el), parentSuspense);
|
|
} else {
|
|
var {
|
|
leave,
|
|
delayLeave,
|
|
afterLeave
|
|
} = transition;
|
|
var remove2 = () => hostInsert(el, container, anchor);
|
|
var performLeave = () => {
|
|
leave(el, () => {
|
|
remove2();
|
|
afterLeave && afterLeave();
|
|
});
|
|
};
|
|
if (delayLeave) {
|
|
delayLeave(el, remove2, performLeave);
|
|
} else {
|
|
performLeave();
|
|
}
|
|
}
|
|
} else {
|
|
hostInsert(el, container, anchor);
|
|
}
|
|
};
|
|
var unmount = function (vnode, parentComponent, parentSuspense) {
|
|
var doRemove = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : false;
|
|
var optimized = arguments.length > 4 && arguments[4] !== undefined ? arguments[4] : false;
|
|
var {
|
|
type,
|
|
props,
|
|
ref,
|
|
children,
|
|
dynamicChildren,
|
|
shapeFlag,
|
|
patchFlag,
|
|
dirs
|
|
} = vnode;
|
|
if (ref != null) {
|
|
setRef(ref, null, parentSuspense, vnode, true);
|
|
}
|
|
if (shapeFlag & 256) {
|
|
parentComponent.ctx.deactivate(vnode);
|
|
return;
|
|
}
|
|
var shouldInvokeDirs = shapeFlag & 1 && dirs;
|
|
var shouldInvokeVnodeHook = !isAsyncWrapper(vnode);
|
|
var vnodeHook;
|
|
if (shouldInvokeVnodeHook && (vnodeHook = props && props.onVnodeBeforeUnmount)) {
|
|
invokeVNodeHook(vnodeHook, parentComponent, vnode);
|
|
}
|
|
if (shapeFlag & 6) {
|
|
unmountComponent(vnode.component, parentSuspense, doRemove);
|
|
} else {
|
|
if (shapeFlag & 128) {
|
|
vnode.suspense.unmount(parentSuspense, doRemove);
|
|
return;
|
|
}
|
|
if (shouldInvokeDirs) {
|
|
invokeDirectiveHook(vnode, null, parentComponent, "beforeUnmount");
|
|
}
|
|
if (shapeFlag & 64) {
|
|
vnode.type.remove(vnode, parentComponent, parentSuspense, optimized, internals, doRemove);
|
|
} else if (dynamicChildren && (
|
|
// #1153: fast path should not be taken for non-stable (v-for) fragments
|
|
type !== Fragment || patchFlag > 0 && patchFlag & 64)) {
|
|
unmountChildren(dynamicChildren, parentComponent, parentSuspense, false, true);
|
|
} else if (type === Fragment && patchFlag & (128 | 256) || !optimized && shapeFlag & 16) {
|
|
unmountChildren(children, parentComponent, parentSuspense);
|
|
}
|
|
if (doRemove) {
|
|
remove(vnode);
|
|
}
|
|
}
|
|
if (shouldInvokeVnodeHook && (vnodeHook = props && props.onVnodeUnmounted) || shouldInvokeDirs) {
|
|
queuePostRenderEffect(() => {
|
|
vnodeHook && invokeVNodeHook(vnodeHook, parentComponent, vnode);
|
|
shouldInvokeDirs && invokeDirectiveHook(vnode, null, parentComponent, "unmounted");
|
|
}, parentSuspense);
|
|
}
|
|
};
|
|
var remove = vnode => {
|
|
var {
|
|
type,
|
|
el,
|
|
anchor,
|
|
transition
|
|
} = vnode;
|
|
if (type === Fragment) {
|
|
{
|
|
removeFragment(el, anchor);
|
|
}
|
|
return;
|
|
}
|
|
if (type === Static) {
|
|
removeStaticNode(vnode);
|
|
return;
|
|
}
|
|
var performRemove = () => {
|
|
hostRemove(el);
|
|
if (transition && !transition.persisted && transition.afterLeave) {
|
|
transition.afterLeave();
|
|
}
|
|
};
|
|
if (vnode.shapeFlag & 1 && transition && !transition.persisted) {
|
|
var {
|
|
leave,
|
|
delayLeave
|
|
} = transition;
|
|
var performLeave = () => leave(el, performRemove);
|
|
if (delayLeave) {
|
|
delayLeave(vnode.el, performRemove, performLeave);
|
|
} else {
|
|
performLeave();
|
|
}
|
|
} else {
|
|
performRemove();
|
|
}
|
|
};
|
|
var removeFragment = (cur, end) => {
|
|
var next;
|
|
while (cur !== end) {
|
|
next = hostNextSibling(cur);
|
|
hostRemove(cur);
|
|
cur = next;
|
|
}
|
|
hostRemove(end);
|
|
};
|
|
var unmountComponent = (instance, parentSuspense, doRemove) => {
|
|
var {
|
|
bum,
|
|
scope,
|
|
update,
|
|
subTree,
|
|
um
|
|
} = instance;
|
|
if (bum) {
|
|
invokeArrayFns(bum);
|
|
}
|
|
scope.stop();
|
|
if (update) {
|
|
update.active = false;
|
|
unmount(subTree, instance, parentSuspense, doRemove);
|
|
}
|
|
if (um) {
|
|
queuePostRenderEffect(um, parentSuspense);
|
|
}
|
|
queuePostRenderEffect(() => {
|
|
instance.isUnmounted = true;
|
|
}, parentSuspense);
|
|
if (parentSuspense && parentSuspense.pendingBranch && !parentSuspense.isUnmounted && instance.asyncDep && !instance.asyncResolved && instance.suspenseId === parentSuspense.pendingId) {
|
|
parentSuspense.deps--;
|
|
if (parentSuspense.deps === 0) {
|
|
parentSuspense.resolve();
|
|
}
|
|
}
|
|
};
|
|
var unmountChildren = function (children, parentComponent, parentSuspense) {
|
|
var doRemove = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : false;
|
|
var optimized = arguments.length > 4 && arguments[4] !== undefined ? arguments[4] : false;
|
|
var start = arguments.length > 5 && arguments[5] !== undefined ? arguments[5] : 0;
|
|
for (var i = start; i < children.length; i++) {
|
|
unmount(children[i], parentComponent, parentSuspense, doRemove, optimized);
|
|
}
|
|
};
|
|
var getNextHostNode = vnode => {
|
|
if (vnode.shapeFlag & 6) {
|
|
return getNextHostNode(vnode.component.subTree);
|
|
}
|
|
if (vnode.shapeFlag & 128) {
|
|
return vnode.suspense.next();
|
|
}
|
|
return hostNextSibling(vnode.anchor || vnode.el);
|
|
};
|
|
var isFlushing = false;
|
|
var render = (vnode, container, namespace) => {
|
|
if (vnode == null) {
|
|
if (container._vnode) {
|
|
unmount(container._vnode, null, null, true);
|
|
}
|
|
} else {
|
|
patch(container._vnode || null, vnode, container, null, null, null, namespace);
|
|
}
|
|
if (!isFlushing) {
|
|
isFlushing = true;
|
|
flushPreFlushCbs();
|
|
flushPostFlushCbs();
|
|
isFlushing = false;
|
|
}
|
|
container._vnode = vnode;
|
|
};
|
|
var internals = {
|
|
p: patch,
|
|
um: unmount,
|
|
m: move,
|
|
r: remove,
|
|
mt: mountComponent,
|
|
mc: mountChildren,
|
|
pc: patchChildren,
|
|
pbc: patchBlockChildren,
|
|
n: getNextHostNode,
|
|
o: options
|
|
};
|
|
var hydrate;
|
|
var hydrateNode;
|
|
if (createHydrationFns) {
|
|
[hydrate, hydrateNode] = createHydrationFns(internals);
|
|
}
|
|
return {
|
|
render,
|
|
hydrate,
|
|
createApp: createAppAPI(render, hydrate)
|
|
};
|
|
}
|
|
function resolveChildrenNamespace(_ref14, currentNamespace) {
|
|
var {
|
|
type,
|
|
props
|
|
} = _ref14;
|
|
return currentNamespace === "svg" && type === "foreignObject" || currentNamespace === "mathml" && type === "annotation-xml" && props && props.encoding && props.encoding.includes("html") ? void 0 : currentNamespace;
|
|
}
|
|
function toggleRecurse(_ref15, allowed) {
|
|
var {
|
|
effect,
|
|
update
|
|
} = _ref15;
|
|
effect.allowRecurse = update.allowRecurse = allowed;
|
|
}
|
|
function needTransition(parentSuspense, transition) {
|
|
return (!parentSuspense || parentSuspense && !parentSuspense.pendingBranch) && transition && !transition.persisted;
|
|
}
|
|
function traverseStaticChildren(n1, n2) {
|
|
var shallow = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : false;
|
|
var ch1 = n1.children;
|
|
var ch2 = n2.children;
|
|
if (isArray(ch1) && isArray(ch2)) {
|
|
for (var i = 0; i < ch1.length; i++) {
|
|
var c1 = ch1[i];
|
|
var c2 = ch2[i];
|
|
if (c2.shapeFlag & 1 && !c2.dynamicChildren) {
|
|
if (c2.patchFlag <= 0 || c2.patchFlag === 32) {
|
|
c2 = ch2[i] = cloneIfMounted(ch2[i]);
|
|
c2.el = c1.el;
|
|
}
|
|
if (!shallow) traverseStaticChildren(c1, c2);
|
|
}
|
|
if (c2.type === Text) {
|
|
c2.el = c1.el;
|
|
}
|
|
}
|
|
}
|
|
}
|
|
function getSequence(arr) {
|
|
var p = arr.slice();
|
|
var result = [0];
|
|
var i, j, u, v, c;
|
|
var len = arr.length;
|
|
for (i = 0; i < len; i++) {
|
|
var arrI = arr[i];
|
|
if (arrI !== 0) {
|
|
j = result[result.length - 1];
|
|
if (arr[j] < arrI) {
|
|
p[i] = j;
|
|
result.push(i);
|
|
continue;
|
|
}
|
|
u = 0;
|
|
v = result.length - 1;
|
|
while (u < v) {
|
|
c = u + v >> 1;
|
|
if (arr[result[c]] < arrI) {
|
|
u = c + 1;
|
|
} else {
|
|
v = c;
|
|
}
|
|
}
|
|
if (arrI < arr[result[u]]) {
|
|
if (u > 0) {
|
|
p[i] = result[u - 1];
|
|
}
|
|
result[u] = i;
|
|
}
|
|
}
|
|
}
|
|
u = result.length;
|
|
v = result[u - 1];
|
|
while (u-- > 0) {
|
|
result[u] = v;
|
|
v = p[v];
|
|
}
|
|
return result;
|
|
}
|
|
function locateNonHydratedAsyncRoot(instance) {
|
|
var subComponent = instance.subTree.component;
|
|
if (subComponent) {
|
|
if (subComponent.asyncDep && !subComponent.asyncResolved) {
|
|
return subComponent;
|
|
} else {
|
|
return locateNonHydratedAsyncRoot(subComponent);
|
|
}
|
|
}
|
|
}
|
|
var isTeleport = type => type.__isTeleport;
|
|
var isTeleportDisabled = props => props && (props.disabled || props.disabled === "");
|
|
var isTargetSVG = target => typeof SVGElement !== "undefined" && target instanceof SVGElement;
|
|
var isTargetMathML = target => typeof MathMLElement === "function" && target instanceof MathMLElement;
|
|
var resolveTarget = (props, select) => {
|
|
var targetSelector = props && props.to;
|
|
if (isString(targetSelector)) {
|
|
if (!select) {
|
|
return null;
|
|
} else {
|
|
var target = select(targetSelector);
|
|
return target;
|
|
}
|
|
} else {
|
|
return targetSelector;
|
|
}
|
|
};
|
|
var TeleportImpl = {
|
|
name: "Teleport",
|
|
__isTeleport: true,
|
|
process(n1, n2, container, anchor, parentComponent, parentSuspense, namespace, slotScopeIds, optimized, internals) {
|
|
var {
|
|
mc: mountChildren,
|
|
pc: patchChildren,
|
|
pbc: patchBlockChildren,
|
|
o: {
|
|
insert,
|
|
querySelector,
|
|
createText,
|
|
createComment
|
|
}
|
|
} = internals;
|
|
var disabled = isTeleportDisabled(n2.props);
|
|
var {
|
|
shapeFlag,
|
|
children,
|
|
dynamicChildren
|
|
} = n2;
|
|
if (n1 == null) {
|
|
var placeholder = n2.el = createText("", container);
|
|
var mainAnchor = n2.anchor = createText("", container);
|
|
insert(placeholder, container, anchor);
|
|
insert(mainAnchor, container, anchor);
|
|
var target = n2.target = resolveTarget(n2.props, querySelector);
|
|
var targetAnchor = n2.targetAnchor = createText("", container);
|
|
if (target) {
|
|
insert(targetAnchor, target);
|
|
if (namespace === "svg" || isTargetSVG(target)) {
|
|
namespace = "svg";
|
|
} else if (namespace === "mathml" || isTargetMathML(target)) {
|
|
namespace = "mathml";
|
|
}
|
|
}
|
|
var mount = (container2, anchor2) => {
|
|
if (shapeFlag & 16) {
|
|
mountChildren(children, container2, anchor2, parentComponent, parentSuspense, namespace, slotScopeIds, optimized);
|
|
}
|
|
};
|
|
if (disabled) {
|
|
mount(container, mainAnchor);
|
|
} else if (target) {
|
|
mount(target, targetAnchor);
|
|
}
|
|
} else {
|
|
n2.el = n1.el;
|
|
var _mainAnchor = n2.anchor = n1.anchor;
|
|
var _target = n2.target = n1.target;
|
|
var _targetAnchor = n2.targetAnchor = n1.targetAnchor;
|
|
var wasDisabled = isTeleportDisabled(n1.props);
|
|
var currentContainer = wasDisabled ? container : _target;
|
|
var currentAnchor = wasDisabled ? _mainAnchor : _targetAnchor;
|
|
if (namespace === "svg" || isTargetSVG(_target)) {
|
|
namespace = "svg";
|
|
} else if (namespace === "mathml" || isTargetMathML(_target)) {
|
|
namespace = "mathml";
|
|
}
|
|
if (dynamicChildren) {
|
|
patchBlockChildren(n1.dynamicChildren, dynamicChildren, currentContainer, parentComponent, parentSuspense, namespace, slotScopeIds);
|
|
traverseStaticChildren(n1, n2, true);
|
|
} else if (!optimized) {
|
|
patchChildren(n1, n2, currentContainer, currentAnchor, parentComponent, parentSuspense, namespace, slotScopeIds, false);
|
|
}
|
|
if (disabled) {
|
|
if (!wasDisabled) {
|
|
moveTeleport(n2, container, _mainAnchor, internals, 1);
|
|
} else {
|
|
if (n2.props && n1.props && n2.props.to !== n1.props.to) {
|
|
n2.props.to = n1.props.to;
|
|
}
|
|
}
|
|
} else {
|
|
if ((n2.props && n2.props.to) !== (n1.props && n1.props.to)) {
|
|
var nextTarget = n2.target = resolveTarget(n2.props, querySelector);
|
|
if (nextTarget) {
|
|
moveTeleport(n2, nextTarget, null, internals, 0);
|
|
}
|
|
} else if (wasDisabled) {
|
|
moveTeleport(n2, _target, _targetAnchor, internals, 1);
|
|
}
|
|
}
|
|
}
|
|
updateCssVars(n2);
|
|
},
|
|
remove(vnode, parentComponent, parentSuspense, optimized, _ref16, doRemove) {
|
|
var {
|
|
um: unmount,
|
|
o: {
|
|
remove: hostRemove
|
|
}
|
|
} = _ref16;
|
|
var {
|
|
shapeFlag,
|
|
children,
|
|
anchor,
|
|
targetAnchor,
|
|
target,
|
|
props
|
|
} = vnode;
|
|
if (target) {
|
|
hostRemove(targetAnchor);
|
|
}
|
|
doRemove && hostRemove(anchor);
|
|
if (shapeFlag & 16) {
|
|
var shouldRemove = doRemove || !isTeleportDisabled(props);
|
|
for (var i = 0; i < children.length; i++) {
|
|
var child = children[i];
|
|
unmount(child, parentComponent, parentSuspense, shouldRemove, !!child.dynamicChildren);
|
|
}
|
|
}
|
|
},
|
|
move: moveTeleport,
|
|
hydrate: hydrateTeleport
|
|
};
|
|
function moveTeleport(vnode, container, parentAnchor, _ref17) {
|
|
var {
|
|
o: {
|
|
insert
|
|
},
|
|
m: move
|
|
} = _ref17;
|
|
var moveType = arguments.length > 4 && arguments[4] !== undefined ? arguments[4] : 2;
|
|
if (moveType === 0) {
|
|
insert(vnode.targetAnchor, container, parentAnchor);
|
|
}
|
|
var {
|
|
el,
|
|
anchor,
|
|
shapeFlag,
|
|
children,
|
|
props
|
|
} = vnode;
|
|
var isReorder = moveType === 2;
|
|
if (isReorder) {
|
|
insert(el, container, parentAnchor);
|
|
}
|
|
if (!isReorder || isTeleportDisabled(props)) {
|
|
if (shapeFlag & 16) {
|
|
for (var i = 0; i < children.length; i++) {
|
|
move(children[i], container, parentAnchor, 2);
|
|
}
|
|
}
|
|
}
|
|
if (isReorder) {
|
|
insert(anchor, container, parentAnchor);
|
|
}
|
|
}
|
|
function hydrateTeleport(node, vnode, parentComponent, parentSuspense, slotScopeIds, optimized, _ref18, hydrateChildren) {
|
|
var {
|
|
o: {
|
|
nextSibling,
|
|
parentNode,
|
|
querySelector
|
|
}
|
|
} = _ref18;
|
|
var target = vnode.target = resolveTarget(vnode.props, querySelector);
|
|
if (target) {
|
|
var targetNode = target._lpa || target.firstChild;
|
|
if (vnode.shapeFlag & 16) {
|
|
if (isTeleportDisabled(vnode.props)) {
|
|
vnode.anchor = hydrateChildren(nextSibling(node), vnode, parentNode(node), parentComponent, parentSuspense, slotScopeIds, optimized);
|
|
vnode.targetAnchor = targetNode;
|
|
} else {
|
|
vnode.anchor = nextSibling(node);
|
|
var targetAnchor = targetNode;
|
|
while (targetAnchor) {
|
|
targetAnchor = nextSibling(targetAnchor);
|
|
if (targetAnchor && targetAnchor.nodeType === 8 && targetAnchor.data === "teleport anchor") {
|
|
vnode.targetAnchor = targetAnchor;
|
|
target._lpa = vnode.targetAnchor && nextSibling(vnode.targetAnchor);
|
|
break;
|
|
}
|
|
}
|
|
hydrateChildren(targetNode, vnode, target, parentComponent, parentSuspense, slotScopeIds, optimized);
|
|
}
|
|
}
|
|
updateCssVars(vnode);
|
|
}
|
|
return vnode.anchor && nextSibling(vnode.anchor);
|
|
}
|
|
var Teleport = TeleportImpl;
|
|
function updateCssVars(vnode) {
|
|
var ctx = vnode.ctx;
|
|
if (ctx && ctx.ut) {
|
|
var node = vnode.children[0].el;
|
|
while (node && node !== vnode.targetAnchor) {
|
|
if (node.nodeType === 1) node.setAttribute("data-v-owner", ctx.uid);
|
|
node = node.nextSibling;
|
|
}
|
|
ctx.ut();
|
|
}
|
|
}
|
|
var Fragment = Symbol.for("v-fgt");
|
|
var Text = Symbol.for("v-txt");
|
|
var Comment = Symbol.for("v-cmt");
|
|
var Static = Symbol.for("v-stc");
|
|
var blockStack = [];
|
|
var currentBlock = null;
|
|
function openBlock() {
|
|
var disableTracking = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : false;
|
|
blockStack.push(currentBlock = disableTracking ? null : []);
|
|
}
|
|
function closeBlock() {
|
|
blockStack.pop();
|
|
currentBlock = blockStack[blockStack.length - 1] || null;
|
|
}
|
|
var isBlockTreeEnabled = 1;
|
|
function setBlockTracking(value) {
|
|
isBlockTreeEnabled += value;
|
|
}
|
|
function setupBlock(vnode) {
|
|
vnode.dynamicChildren = isBlockTreeEnabled > 0 ? currentBlock || EMPTY_ARR : null;
|
|
closeBlock();
|
|
if (isBlockTreeEnabled > 0 && currentBlock) {
|
|
currentBlock.push(vnode);
|
|
}
|
|
return vnode;
|
|
}
|
|
function createElementBlock(type, props, children, patchFlag, dynamicProps, shapeFlag) {
|
|
return setupBlock(createBaseVNode(type, props, children, patchFlag, dynamicProps, shapeFlag, true));
|
|
}
|
|
function createBlock(type, props, children, patchFlag, dynamicProps) {
|
|
return setupBlock(createVNode(type, props, children, patchFlag, dynamicProps, true));
|
|
}
|
|
function isVNode(value) {
|
|
return value ? value.__v_isVNode === true : false;
|
|
}
|
|
function isSameVNodeType(n1, n2) {
|
|
return n1.type === n2.type && n1.key === n2.key;
|
|
}
|
|
function transformVNodeArgs(transformer) {}
|
|
var InternalObjectKey = "__vInternal";
|
|
var normalizeKey = _ref19 => {
|
|
var {
|
|
key
|
|
} = _ref19;
|
|
return key != null ? key : null;
|
|
};
|
|
var normalizeRef = _ref20 => {
|
|
var {
|
|
ref,
|
|
ref_key,
|
|
ref_for
|
|
} = _ref20;
|
|
if (typeof ref === "number") {
|
|
ref = "" + ref;
|
|
}
|
|
return ref != null ? isString(ref) || isRef(ref) || isFunction(ref) ? {
|
|
i: currentRenderingInstance,
|
|
r: ref,
|
|
k: ref_key,
|
|
f: !!ref_for
|
|
} : ref : null;
|
|
};
|
|
function createBaseVNode(type) {
|
|
var props = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : null;
|
|
var children = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : null;
|
|
var patchFlag = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : 0;
|
|
var dynamicProps = arguments.length > 4 && arguments[4] !== undefined ? arguments[4] : null;
|
|
var shapeFlag = arguments.length > 5 && arguments[5] !== undefined ? arguments[5] : type === Fragment ? 0 : 1;
|
|
var isBlockNode = arguments.length > 6 && arguments[6] !== undefined ? arguments[6] : false;
|
|
var needFullChildrenNormalization = arguments.length > 7 && arguments[7] !== undefined ? arguments[7] : false;
|
|
var vnode = {
|
|
__v_isVNode: true,
|
|
__v_skip: true,
|
|
type,
|
|
props,
|
|
key: props && normalizeKey(props),
|
|
ref: props && normalizeRef(props),
|
|
scopeId: currentScopeId,
|
|
slotScopeIds: null,
|
|
children,
|
|
component: null,
|
|
suspense: null,
|
|
ssContent: null,
|
|
ssFallback: null,
|
|
dirs: null,
|
|
transition: null,
|
|
el: null,
|
|
anchor: null,
|
|
target: null,
|
|
targetAnchor: null,
|
|
staticCount: 0,
|
|
shapeFlag,
|
|
patchFlag,
|
|
dynamicProps,
|
|
dynamicChildren: null,
|
|
appContext: null,
|
|
ctx: currentRenderingInstance
|
|
};
|
|
if (needFullChildrenNormalization) {
|
|
normalizeChildren(vnode, children);
|
|
if (shapeFlag & 128) {
|
|
type.normalize(vnode);
|
|
}
|
|
} else if (children) {
|
|
vnode.shapeFlag |= isString(children) ? 8 : 16;
|
|
}
|
|
if (isBlockTreeEnabled > 0 &&
|
|
// avoid a block node from tracking itself
|
|
!isBlockNode &&
|
|
// has current parent block
|
|
currentBlock && (
|
|
// presence of a patch flag indicates this node needs patching on updates.
|
|
// component nodes also should always be patched, because even if the
|
|
// component doesn't need to update, it needs to persist the instance on to
|
|
// the next vnode so that it can be properly unmounted later.
|
|
vnode.patchFlag > 0 || shapeFlag & 6) &&
|
|
// the EVENTS flag is only for hydration and if it is the only flag, the
|
|
// vnode should not be considered dynamic due to handler caching.
|
|
vnode.patchFlag !== 32) {
|
|
currentBlock.push(vnode);
|
|
}
|
|
return vnode;
|
|
}
|
|
var createVNode = _createVNode;
|
|
function _createVNode(type) {
|
|
var props = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : null;
|
|
var children = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : null;
|
|
var patchFlag = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : 0;
|
|
var dynamicProps = arguments.length > 4 && arguments[4] !== undefined ? arguments[4] : null;
|
|
var isBlockNode = arguments.length > 5 && arguments[5] !== undefined ? arguments[5] : false;
|
|
if (!type || type === NULL_DYNAMIC_COMPONENT) {
|
|
type = Comment;
|
|
}
|
|
if (isVNode(type)) {
|
|
var cloned = cloneVNode(type, props, true
|
|
/* mergeRef: true */);
|
|
if (children) {
|
|
normalizeChildren(cloned, children);
|
|
}
|
|
if (isBlockTreeEnabled > 0 && !isBlockNode && currentBlock) {
|
|
if (cloned.shapeFlag & 6) {
|
|
currentBlock[currentBlock.indexOf(type)] = cloned;
|
|
} else {
|
|
currentBlock.push(cloned);
|
|
}
|
|
}
|
|
cloned.patchFlag |= -2;
|
|
return cloned;
|
|
}
|
|
if (isClassComponent(type)) {
|
|
type = type.__vccOpts;
|
|
}
|
|
if (props) {
|
|
props = guardReactiveProps(props);
|
|
var {
|
|
class: klass,
|
|
style
|
|
} = props;
|
|
if (klass && !isString(klass)) {
|
|
props.class = normalizeClass(klass);
|
|
}
|
|
if (isObject(style)) {
|
|
if (isProxy(style) && !isArray(style)) {
|
|
style = extend({}, style);
|
|
}
|
|
props.style = normalizeStyle(style);
|
|
}
|
|
}
|
|
var shapeFlag = isString(type) ? 1 : isSuspense(type) ? 128 : isTeleport(type) ? 64 : isObject(type) ? 4 : isFunction(type) ? 2 : 0;
|
|
return createBaseVNode(type, props, children, patchFlag, dynamicProps, shapeFlag, isBlockNode, true);
|
|
}
|
|
function guardReactiveProps(props) {
|
|
if (!props) return null;
|
|
return isProxy(props) || InternalObjectKey in props ? extend({}, props) : props;
|
|
}
|
|
function cloneVNode(vnode, extraProps) {
|
|
var mergeRef = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : false;
|
|
var {
|
|
props,
|
|
ref,
|
|
patchFlag,
|
|
children
|
|
} = vnode;
|
|
var mergedProps = extraProps ? mergeProps(props || {}, extraProps) : props;
|
|
var cloned = {
|
|
__v_isVNode: true,
|
|
__v_skip: true,
|
|
type: vnode.type,
|
|
props: mergedProps,
|
|
key: mergedProps && normalizeKey(mergedProps),
|
|
ref: extraProps && extraProps.ref ?
|
|
// #2078 in the case of <component :is="vnode" ref="extra"/>
|
|
// if the vnode itself already has a ref, cloneVNode will need to merge
|
|
// the refs so the single vnode can be set on multiple refs
|
|
mergeRef && ref ? isArray(ref) ? ref.concat(normalizeRef(extraProps)) : [ref, normalizeRef(extraProps)] : normalizeRef(extraProps) : ref,
|
|
scopeId: vnode.scopeId,
|
|
slotScopeIds: vnode.slotScopeIds,
|
|
children: children,
|
|
target: vnode.target,
|
|
targetAnchor: vnode.targetAnchor,
|
|
staticCount: vnode.staticCount,
|
|
shapeFlag: vnode.shapeFlag,
|
|
// if the vnode is cloned with extra props, we can no longer assume its
|
|
// existing patch flag to be reliable and need to add the FULL_PROPS flag.
|
|
// note: preserve flag for fragments since they use the flag for children
|
|
// fast paths only.
|
|
patchFlag: extraProps && vnode.type !== Fragment ? patchFlag === -1 ? 16 : patchFlag | 16 : patchFlag,
|
|
dynamicProps: vnode.dynamicProps,
|
|
dynamicChildren: vnode.dynamicChildren,
|
|
appContext: vnode.appContext,
|
|
dirs: vnode.dirs,
|
|
transition: vnode.transition,
|
|
// These should technically only be non-null on mounted VNodes. However,
|
|
// they *should* be copied for kept-alive vnodes. So we just always copy
|
|
// them since them being non-null during a mount doesn't affect the logic as
|
|
// they will simply be overwritten.
|
|
component: vnode.component,
|
|
suspense: vnode.suspense,
|
|
ssContent: vnode.ssContent && cloneVNode(vnode.ssContent),
|
|
ssFallback: vnode.ssFallback && cloneVNode(vnode.ssFallback),
|
|
el: vnode.el,
|
|
anchor: vnode.anchor,
|
|
ctx: vnode.ctx,
|
|
ce: vnode.ce
|
|
};
|
|
return cloned;
|
|
}
|
|
function createTextVNode() {
|
|
var text = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : " ";
|
|
var flag = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 0;
|
|
return createVNode(Text, null, text, flag);
|
|
}
|
|
function createStaticVNode(content, numberOfNodes) {
|
|
var vnode = createVNode(Static, null, content);
|
|
vnode.staticCount = numberOfNodes;
|
|
return vnode;
|
|
}
|
|
function createCommentVNode() {
|
|
var text = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : "";
|
|
var asBlock = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : false;
|
|
return asBlock ? (openBlock(), createBlock(Comment, null, text)) : createVNode(Comment, null, text);
|
|
}
|
|
function normalizeVNode(child) {
|
|
if (child == null || typeof child === "boolean") {
|
|
return createVNode(Comment);
|
|
} else if (isArray(child)) {
|
|
return createVNode(Fragment, null,
|
|
// #3666, avoid reference pollution when reusing vnode
|
|
child.slice());
|
|
} else if (typeof child === "object") {
|
|
return cloneIfMounted(child);
|
|
} else {
|
|
return createVNode(Text, null, String(child));
|
|
}
|
|
}
|
|
function cloneIfMounted(child) {
|
|
return child.el === null && child.patchFlag !== -1 || child.memo ? child : cloneVNode(child);
|
|
}
|
|
function normalizeChildren(vnode, children) {
|
|
var type = 0;
|
|
var {
|
|
shapeFlag
|
|
} = vnode;
|
|
if (children == null) {
|
|
children = null;
|
|
} else if (isArray(children)) {
|
|
type = 16;
|
|
} else if (typeof children === "object") {
|
|
if (shapeFlag & (1 | 64)) {
|
|
var slot = children.default;
|
|
if (slot) {
|
|
slot._c && (slot._d = false);
|
|
normalizeChildren(vnode, slot());
|
|
slot._c && (slot._d = true);
|
|
}
|
|
return;
|
|
} else {
|
|
type = 32;
|
|
var slotFlag = children._;
|
|
if (!slotFlag && !(InternalObjectKey in children)) {
|
|
children._ctx = currentRenderingInstance;
|
|
} else if (slotFlag === 3 && currentRenderingInstance) {
|
|
if (currentRenderingInstance.slots._ === 1) {
|
|
children._ = 1;
|
|
} else {
|
|
children._ = 2;
|
|
vnode.patchFlag |= 1024;
|
|
}
|
|
}
|
|
}
|
|
} else if (isFunction(children)) {
|
|
children = {
|
|
default: children,
|
|
_ctx: currentRenderingInstance
|
|
};
|
|
type = 32;
|
|
} else {
|
|
children = String(children);
|
|
if (shapeFlag & 64) {
|
|
type = 16;
|
|
children = [createTextVNode(children)];
|
|
} else {
|
|
type = 8;
|
|
}
|
|
}
|
|
vnode.children = children;
|
|
vnode.shapeFlag |= type;
|
|
}
|
|
function mergeProps() {
|
|
var ret = {};
|
|
for (var i = 0; i < arguments.length; i++) {
|
|
var toMerge = i < 0 || arguments.length <= i ? undefined : arguments[i];
|
|
for (var key in toMerge) {
|
|
if (key === "class") {
|
|
if (ret.class !== toMerge.class) {
|
|
ret.class = normalizeClass([ret.class, toMerge.class]);
|
|
}
|
|
} else if (key === "style") {
|
|
ret.style = normalizeStyle([ret.style, toMerge.style]);
|
|
} else if (isOn(key)) {
|
|
var existing = ret[key];
|
|
var incoming = toMerge[key];
|
|
if (incoming && existing !== incoming && !(isArray(existing) && existing.includes(incoming))) {
|
|
ret[key] = existing ? [].concat(existing, incoming) : incoming;
|
|
}
|
|
} else if (key !== "") {
|
|
ret[key] = toMerge[key];
|
|
}
|
|
}
|
|
}
|
|
return ret;
|
|
}
|
|
function invokeVNodeHook(hook, instance, vnode) {
|
|
var prevVNode = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : null;
|
|
callWithAsyncErrorHandling(hook, instance, 7, [vnode, prevVNode]);
|
|
}
|
|
var emptyAppContext = createAppContext();
|
|
var uid = 0;
|
|
function createComponentInstance(vnode, parent, suspense) {
|
|
var type = vnode.type;
|
|
var appContext = (parent ? parent.appContext : vnode.appContext) || emptyAppContext;
|
|
var instance = {
|
|
uid: uid++,
|
|
vnode,
|
|
type,
|
|
parent,
|
|
appContext,
|
|
root: null,
|
|
// to be immediately set
|
|
next: null,
|
|
subTree: null,
|
|
// will be set synchronously right after creation
|
|
effect: null,
|
|
update: null,
|
|
// will be set synchronously right after creation
|
|
scope: new EffectScope(true
|
|
/* detached */),
|
|
render: null,
|
|
proxy: null,
|
|
exposed: null,
|
|
exposeProxy: null,
|
|
withProxy: null,
|
|
provides: parent ? parent.provides : Object.create(appContext.provides),
|
|
accessCache: null,
|
|
renderCache: [],
|
|
// local resolved assets
|
|
components: null,
|
|
directives: null,
|
|
// resolved props and emits options
|
|
propsOptions: normalizePropsOptions(type, appContext),
|
|
emitsOptions: normalizeEmitsOptions(type, appContext),
|
|
// emit
|
|
emit: null,
|
|
// to be set immediately
|
|
emitted: null,
|
|
// props default value
|
|
propsDefaults: EMPTY_OBJ,
|
|
// inheritAttrs
|
|
inheritAttrs: type.inheritAttrs,
|
|
// state
|
|
ctx: EMPTY_OBJ,
|
|
data: EMPTY_OBJ,
|
|
props: EMPTY_OBJ,
|
|
attrs: EMPTY_OBJ,
|
|
slots: EMPTY_OBJ,
|
|
refs: EMPTY_OBJ,
|
|
setupState: EMPTY_OBJ,
|
|
setupContext: null,
|
|
attrsProxy: null,
|
|
slotsProxy: null,
|
|
// suspense related
|
|
suspense,
|
|
suspenseId: suspense ? suspense.pendingId : 0,
|
|
asyncDep: null,
|
|
asyncResolved: false,
|
|
// lifecycle hooks
|
|
// not using enums here because it results in computed properties
|
|
isMounted: false,
|
|
isUnmounted: false,
|
|
isDeactivated: false,
|
|
bc: null,
|
|
c: null,
|
|
bm: null,
|
|
m: null,
|
|
bu: null,
|
|
u: null,
|
|
um: null,
|
|
bum: null,
|
|
da: null,
|
|
a: null,
|
|
rtg: null,
|
|
rtc: null,
|
|
ec: null,
|
|
sp: null
|
|
};
|
|
{
|
|
instance.ctx = {
|
|
_: instance
|
|
};
|
|
}
|
|
instance.root = parent ? parent.root : instance;
|
|
instance.emit = emit.bind(null, instance);
|
|
if (vnode.ce) {
|
|
vnode.ce(instance);
|
|
}
|
|
return instance;
|
|
}
|
|
var currentInstance = null;
|
|
var getCurrentInstance = () => currentInstance || currentRenderingInstance;
|
|
var internalSetCurrentInstance;
|
|
var setInSSRSetupState;
|
|
{
|
|
var g = getGlobalThis();
|
|
var registerGlobalSetter = (key, setter) => {
|
|
var setters;
|
|
if (!(setters = g[key])) setters = g[key] = [];
|
|
setters.push(setter);
|
|
return v => {
|
|
if (setters.length > 1) setters.forEach(set => set(v));else setters[0](v);
|
|
};
|
|
};
|
|
internalSetCurrentInstance = registerGlobalSetter("__VUE_INSTANCE_SETTERS__", v => currentInstance = v);
|
|
setInSSRSetupState = registerGlobalSetter("__VUE_SSR_SETTERS__", v => isInSSRComponentSetup = v);
|
|
}
|
|
var setCurrentInstance = instance => {
|
|
var prev = currentInstance;
|
|
internalSetCurrentInstance(instance);
|
|
instance.scope.on();
|
|
return () => {
|
|
instance.scope.off();
|
|
internalSetCurrentInstance(prev);
|
|
};
|
|
};
|
|
var unsetCurrentInstance = () => {
|
|
currentInstance && currentInstance.scope.off();
|
|
internalSetCurrentInstance(null);
|
|
};
|
|
function isStatefulComponent(instance) {
|
|
return instance.vnode.shapeFlag & 4;
|
|
}
|
|
var isInSSRComponentSetup = false;
|
|
function setupComponent(instance) {
|
|
var isSSR = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : false;
|
|
isSSR && setInSSRSetupState(isSSR);
|
|
var {
|
|
props,
|
|
children
|
|
} = instance.vnode;
|
|
var isStateful = isStatefulComponent(instance);
|
|
initProps(instance, props, isStateful, isSSR);
|
|
initSlots(instance, children);
|
|
var setupResult = isStateful ? setupStatefulComponent(instance, isSSR) : void 0;
|
|
isSSR && setInSSRSetupState(false);
|
|
return setupResult;
|
|
}
|
|
function setupStatefulComponent(instance, isSSR) {
|
|
var Component = instance.type;
|
|
instance.accessCache = /* @__PURE__ */Object.create(null);
|
|
instance.proxy = markRaw(new Proxy(instance.ctx, PublicInstanceProxyHandlers));
|
|
var {
|
|
setup
|
|
} = Component;
|
|
if (setup) {
|
|
var setupContext = instance.setupContext = setup.length > 1 ? createSetupContext(instance) : null;
|
|
var reset = setCurrentInstance(instance);
|
|
pauseTracking();
|
|
var setupResult = callWithErrorHandling(setup, instance, 0, [instance.props, setupContext]);
|
|
resetTracking();
|
|
reset();
|
|
if (isPromise(setupResult)) {
|
|
setupResult.then(unsetCurrentInstance, unsetCurrentInstance);
|
|
if (isSSR) {
|
|
return setupResult.then(resolvedResult => {
|
|
handleSetupResult(instance, resolvedResult, isSSR);
|
|
}).catch(e => {
|
|
handleError(e, instance, 0);
|
|
});
|
|
} else {
|
|
instance.asyncDep = setupResult;
|
|
}
|
|
} else {
|
|
handleSetupResult(instance, setupResult, isSSR);
|
|
}
|
|
} else {
|
|
finishComponentSetup(instance, isSSR);
|
|
}
|
|
}
|
|
function handleSetupResult(instance, setupResult, isSSR) {
|
|
if (isFunction(setupResult)) {
|
|
if (instance.type.__ssrInlineRender) {
|
|
instance.ssrRender = setupResult;
|
|
} else {
|
|
instance.render = setupResult;
|
|
}
|
|
} else if (isObject(setupResult)) {
|
|
instance.setupState = proxyRefs(setupResult);
|
|
} else ;
|
|
finishComponentSetup(instance, isSSR);
|
|
}
|
|
var compile;
|
|
var installWithProxy;
|
|
function registerRuntimeCompiler(_compile) {
|
|
compile = _compile;
|
|
installWithProxy = i => {
|
|
if (i.render._rc) {
|
|
i.withProxy = new Proxy(i.ctx, RuntimeCompiledPublicInstanceProxyHandlers);
|
|
}
|
|
};
|
|
}
|
|
var isRuntimeOnly = () => !compile;
|
|
function finishComponentSetup(instance, isSSR, skipOptions) {
|
|
var Component = instance.type;
|
|
if (!instance.render) {
|
|
if (!isSSR && compile && !Component.render) {
|
|
var template = Component.template || resolveMergedOptions(instance).template;
|
|
if (template) {
|
|
var {
|
|
isCustomElement,
|
|
compilerOptions
|
|
} = instance.appContext.config;
|
|
var {
|
|
delimiters,
|
|
compilerOptions: componentCompilerOptions
|
|
} = Component;
|
|
var finalCompilerOptions = extend(extend({
|
|
isCustomElement,
|
|
delimiters
|
|
}, compilerOptions), componentCompilerOptions);
|
|
Component.render = compile(template, finalCompilerOptions);
|
|
}
|
|
}
|
|
instance.render = Component.render || NOOP;
|
|
if (installWithProxy) {
|
|
installWithProxy(instance);
|
|
}
|
|
}
|
|
{
|
|
var reset = setCurrentInstance(instance);
|
|
pauseTracking();
|
|
try {
|
|
applyOptions(instance);
|
|
} finally {
|
|
resetTracking();
|
|
reset();
|
|
}
|
|
}
|
|
}
|
|
function getAttrsProxy(instance) {
|
|
return instance.attrsProxy || (instance.attrsProxy = new Proxy(instance.attrs, {
|
|
get(target, key) {
|
|
track(instance, "get", "$attrs");
|
|
return target[key];
|
|
}
|
|
}));
|
|
}
|
|
function createSetupContext(instance) {
|
|
var expose = exposed => {
|
|
instance.exposed = exposed || {};
|
|
};
|
|
{
|
|
return {
|
|
get attrs() {
|
|
return getAttrsProxy(instance);
|
|
},
|
|
slots: instance.slots,
|
|
emit: instance.emit,
|
|
expose
|
|
};
|
|
}
|
|
}
|
|
function getExposeProxy(instance) {
|
|
if (instance.exposed) {
|
|
return instance.exposeProxy || (instance.exposeProxy = new Proxy(proxyRefs(markRaw(instance.exposed)), {
|
|
get(target, key) {
|
|
if (key in target) {
|
|
return target[key];
|
|
} else if (key in publicPropertiesMap) {
|
|
return publicPropertiesMap[key](instance);
|
|
} else if (key === "$scope") {
|
|
return instance.ctx.$scope;
|
|
}
|
|
},
|
|
has(target, key) {
|
|
return key in target || key in publicPropertiesMap || key === "$scope";
|
|
}
|
|
}));
|
|
}
|
|
}
|
|
var classifyRE = /(?:^|[-_])(\w)/g;
|
|
var classify = str => str.replace(classifyRE, c => c.toUpperCase()).replace(/[-_]/g, "");
|
|
function getComponentName(Component) {
|
|
var includeInferred = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : true;
|
|
return isFunction(Component) ? Component.displayName || Component.name : Component.name || includeInferred && Component.__name;
|
|
}
|
|
function formatComponentName(instance, Component) {
|
|
var isRoot = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : false;
|
|
var name = getComponentName(Component);
|
|
if (!name && Component.__file) {
|
|
var match = Component.__file.match(/([^/\\]+)\.\w+$/);
|
|
if (match) {
|
|
name = match[1];
|
|
}
|
|
}
|
|
if (!name && instance && instance.parent) {
|
|
var inferFromRegistry = registry => {
|
|
for (var key in registry) {
|
|
if (registry[key] === Component) {
|
|
return key;
|
|
}
|
|
}
|
|
};
|
|
name = inferFromRegistry(instance.components || instance.parent.type.components) || inferFromRegistry(instance.appContext.components);
|
|
}
|
|
return name ? classify(name) : isRoot ? "App" : "Anonymous";
|
|
}
|
|
function isClassComponent(value) {
|
|
return isFunction(value) && "__vccOpts" in value;
|
|
}
|
|
var computed = (getterOrOptions, debugOptions) => {
|
|
var c = computed$1(getterOrOptions, debugOptions, isInSSRComponentSetup);
|
|
return c;
|
|
};
|
|
function useModel(props, name) {
|
|
var options = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : EMPTY_OBJ;
|
|
var i = getCurrentInstance();
|
|
var camelizedName = camelize(name);
|
|
var hyphenatedName = hyphenate(name);
|
|
var res = customRef((track, trigger) => {
|
|
var localValue;
|
|
watchSyncEffect(() => {
|
|
var propValue = props[name];
|
|
if (hasChanged(localValue, propValue)) {
|
|
localValue = propValue;
|
|
trigger();
|
|
}
|
|
});
|
|
return {
|
|
get() {
|
|
track();
|
|
return options.get ? options.get(localValue) : localValue;
|
|
},
|
|
set(value) {
|
|
var rawProps = i.vnode.props;
|
|
if (!(rawProps && (
|
|
// check if parent has passed v-model
|
|
name in rawProps || camelizedName in rawProps || hyphenatedName in rawProps) && ("onUpdate:".concat(name) in rawProps || "onUpdate:".concat(camelizedName) in rawProps || "onUpdate:".concat(hyphenatedName) in rawProps)) && hasChanged(value, localValue)) {
|
|
localValue = value;
|
|
trigger();
|
|
}
|
|
i.emit("update:".concat(name), options.set ? options.set(value) : value);
|
|
}
|
|
};
|
|
});
|
|
var modifierKey = name === "modelValue" ? "modelModifiers" : "".concat(name, "Modifiers");
|
|
res[Symbol.iterator] = () => {
|
|
var i2 = 0;
|
|
return {
|
|
next() {
|
|
if (i2 < 2) {
|
|
return {
|
|
value: i2++ ? props[modifierKey] || {} : res,
|
|
done: false
|
|
};
|
|
} else {
|
|
return {
|
|
done: true
|
|
};
|
|
}
|
|
}
|
|
};
|
|
};
|
|
return res;
|
|
}
|
|
function h(type, propsOrChildren, children) {
|
|
var l = arguments.length;
|
|
if (l === 2) {
|
|
if (isObject(propsOrChildren) && !isArray(propsOrChildren)) {
|
|
if (isVNode(propsOrChildren)) {
|
|
return createVNode(type, null, [propsOrChildren]);
|
|
}
|
|
return createVNode(type, propsOrChildren);
|
|
} else {
|
|
return createVNode(type, null, propsOrChildren);
|
|
}
|
|
} else {
|
|
if (l > 3) {
|
|
children = Array.prototype.slice.call(arguments, 2);
|
|
} else if (l === 3 && isVNode(children)) {
|
|
children = [children];
|
|
}
|
|
return createVNode(type, propsOrChildren, children);
|
|
}
|
|
}
|
|
function initCustomFormatter() {
|
|
{
|
|
return;
|
|
}
|
|
}
|
|
function withMemo(memo, render, cache, index) {
|
|
var cached = cache[index];
|
|
if (cached && isMemoSame(cached, memo)) {
|
|
return cached;
|
|
}
|
|
var ret = render();
|
|
ret.memo = memo.slice();
|
|
return cache[index] = ret;
|
|
}
|
|
function isMemoSame(cached, memo) {
|
|
var prev = cached.memo;
|
|
if (prev.length != memo.length) {
|
|
return false;
|
|
}
|
|
for (var i = 0; i < prev.length; i++) {
|
|
if (hasChanged(prev[i], memo[i])) {
|
|
return false;
|
|
}
|
|
}
|
|
if (isBlockTreeEnabled > 0 && currentBlock) {
|
|
currentBlock.push(cached);
|
|
}
|
|
return true;
|
|
}
|
|
var version = "3.4.21";
|
|
var warn = NOOP;
|
|
var ErrorTypeStrings = ErrorTypeStrings$1;
|
|
var devtools = devtools$1;
|
|
var setDevtoolsHook = setDevtoolsHook$1;
|
|
var _ssrUtils = {
|
|
createComponentInstance,
|
|
setupComponent,
|
|
renderComponentRoot,
|
|
setCurrentRenderingInstance,
|
|
isVNode: isVNode,
|
|
normalizeVNode
|
|
};
|
|
var ssrUtils = _ssrUtils;
|
|
var resolveFilter = null;
|
|
var compatUtils = null;
|
|
var DeprecationTypes = null;
|
|
function createElement(tagName, container) {
|
|
if (tagName === "input") {
|
|
return new UniInputElement(tagName, container);
|
|
} else if (tagName === "textarea") {
|
|
return new UniTextAreaElement(tagName, container);
|
|
}
|
|
return new UniElement(tagName, container);
|
|
}
|
|
function createTextNode(text, container) {
|
|
return new UniTextNode(text, container);
|
|
}
|
|
function createComment(text, container) {
|
|
return new UniCommentNode(text, container);
|
|
}
|
|
var tempContainer;
|
|
var nodeOps = {
|
|
insert: (child, parent, anchor) => {
|
|
parent.insertBefore(child, anchor || null);
|
|
},
|
|
remove: child => {
|
|
var parent = child.parentNode;
|
|
if (parent) {
|
|
parent.removeChild(child);
|
|
}
|
|
},
|
|
createElement: (tag, container) => {
|
|
return createElement(tag, container);
|
|
},
|
|
createText: (text, container) => createTextNode(text, container),
|
|
createComment: (text, container) => createComment(text, container),
|
|
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, "");
|
|
},
|
|
cloneNode(el) {
|
|
var cloned = el.cloneNode(true);
|
|
if ("_value" in el) {
|
|
cloned._value = el._value;
|
|
}
|
|
return cloned;
|
|
},
|
|
// __UNSAFE__
|
|
// Reason: innerHTML.
|
|
// Static content here can only come from compiled templates.
|
|
// As long as the user only uses trusted templates, this is safe.
|
|
insertStaticContent(content, parent, anchor) {
|
|
var temp = tempContainer || (tempContainer = createElement("div"));
|
|
temp.innerHTML = content;
|
|
var first = temp.firstChild;
|
|
var node = first;
|
|
var last = node;
|
|
while (node) {
|
|
last = node;
|
|
nodeOps.insert(node, parent, anchor);
|
|
node = temp.firstChild;
|
|
}
|
|
return [first, last];
|
|
}
|
|
};
|
|
function patchClass(el, value) {
|
|
if (value == null) {
|
|
value = "";
|
|
}
|
|
el.setAttribute("class", value);
|
|
}
|
|
function patchStyle(el, prev, next) {
|
|
if (!next) {
|
|
el.removeAttribute("style");
|
|
} else if (isString(next)) {
|
|
if (prev !== next) {
|
|
el.setAttribute("style", next);
|
|
}
|
|
} else {
|
|
var batchedStyles = {};
|
|
var isPrevObj = prev && !isString(prev);
|
|
if (isPrevObj) {
|
|
for (var key in prev) {
|
|
if (next[key] == null) {
|
|
batchedStyles[key] = "";
|
|
}
|
|
}
|
|
for (var _key12 in next) {
|
|
var value = next[_key12];
|
|
if (value !== prev[_key12]) {
|
|
batchedStyles[_key12] = value;
|
|
}
|
|
}
|
|
} else {
|
|
for (var _key13 in next) {
|
|
batchedStyles[_key13] = next[_key13];
|
|
}
|
|
}
|
|
if (Object.keys(batchedStyles).length) {
|
|
el.setAttribute("style", batchedStyles);
|
|
}
|
|
}
|
|
}
|
|
function patchAttr(el, key, value) {
|
|
if (value == null) {
|
|
el.removeAttribute(key);
|
|
} else {
|
|
el.setAttribute(key, value);
|
|
}
|
|
}
|
|
function addEventListener(el, event, handler, options) {
|
|
el.addEventListener(event, handler, options);
|
|
}
|
|
function removeEventListener(el, event, handler, options) {
|
|
el.removeEventListener(event, handler, options);
|
|
}
|
|
function patchEvent(el, rawName, prevValue, nextValue) {
|
|
var instance = arguments.length > 4 && arguments[4] !== undefined ? arguments[4] : null;
|
|
var invokers = el._vei || (el._vei = {});
|
|
var existingInvoker = invokers[rawName];
|
|
if (nextValue && existingInvoker) {
|
|
existingInvoker.value = nextValue;
|
|
} else {
|
|
var [name, options] = parseName(rawName);
|
|
if (nextValue) {
|
|
var invoker = invokers[rawName] = createInvoker(nextValue, instance);
|
|
addEventListener(el, name, invoker, options);
|
|
} else if (existingInvoker) {
|
|
removeEventListener(el, name, existingInvoker, options);
|
|
invokers[rawName] = void 0;
|
|
}
|
|
}
|
|
}
|
|
var optionsModifierRE = /(?:Once|Passive|Capture)$/;
|
|
function parseName(name) {
|
|
var options;
|
|
if (optionsModifierRE.test(name)) {
|
|
options = {};
|
|
var m;
|
|
while (m = name.match(optionsModifierRE)) {
|
|
name = name.slice(0, name.length - m[0].length);
|
|
options[m[0].toLowerCase()] = true;
|
|
}
|
|
}
|
|
return [hyphenate(name.slice(2)), options];
|
|
}
|
|
function createInvoker(initialValue, instance) {
|
|
var invoker = e => {
|
|
callWithAsyncErrorHandling(invoker.value, instance, 5, [e]);
|
|
};
|
|
invoker.value = initialValue;
|
|
var modifiers = /* @__PURE__ */new Set();
|
|
if (isArray(invoker.value)) {
|
|
invoker.value.forEach(v => {
|
|
if (v.modifiers) {
|
|
v.modifiers.forEach(m => {
|
|
modifiers.add(m);
|
|
});
|
|
}
|
|
});
|
|
} else {
|
|
if (invoker.value.modifiers) {
|
|
invoker.value.modifiers.forEach(m => {
|
|
modifiers.add(m);
|
|
});
|
|
}
|
|
initWxsEvent(invoker, instance);
|
|
}
|
|
invoker.modifiers = [...modifiers];
|
|
return invoker;
|
|
}
|
|
function initWxsEvent(invoker, instance) {
|
|
if (!instance) {
|
|
return;
|
|
}
|
|
var {
|
|
$wxsModules
|
|
} = instance;
|
|
if (!$wxsModules) {
|
|
return;
|
|
}
|
|
var invokerSourceCode = invoker.value.toString();
|
|
if (!$wxsModules.find(module => invokerSourceCode.indexOf("." + module + ".") > -1)) {
|
|
return;
|
|
}
|
|
invoker.wxsEvent = invoker.value();
|
|
}
|
|
var patchProp = (el, key, prevValue, nextValue, namespace, prevChildren, parentComponent, parentSuspense, unmountChildren) => {
|
|
switch (key) {
|
|
case "class":
|
|
patchClass(el, nextValue);
|
|
break;
|
|
case "style":
|
|
patchStyle(el, prevValue, nextValue);
|
|
break;
|
|
default:
|
|
if (isOn(key)) {
|
|
if (!isModelListener(key)) {
|
|
patchEvent(el, key, prevValue, nextValue, parentComponent);
|
|
}
|
|
} else {
|
|
if (isObject(nextValue)) {
|
|
var equal = prevValue === nextValue;
|
|
nextValue = JSON_PROTOCOL + JSON.stringify(nextValue);
|
|
if (equal && el.getAttribute(key) === nextValue) {
|
|
return;
|
|
}
|
|
} else if (prevValue === nextValue) {
|
|
return;
|
|
}
|
|
patchAttr(el, key, nextValue);
|
|
}
|
|
break;
|
|
}
|
|
};
|
|
function useCssModule() {
|
|
var name = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : "$style";
|
|
{
|
|
var instance = getCurrentInstance();
|
|
if (!instance) {
|
|
return EMPTY_OBJ;
|
|
}
|
|
var modules = instance.type.__cssModules;
|
|
if (!modules) {
|
|
return EMPTY_OBJ;
|
|
}
|
|
var mod = modules[name];
|
|
if (!mod) {
|
|
return EMPTY_OBJ;
|
|
}
|
|
return mod;
|
|
}
|
|
}
|
|
function useCssVars(getter) {
|
|
var instance = getCurrentInstance();
|
|
if (!instance) {
|
|
return;
|
|
}
|
|
var setVars = () => setVarsOnVNode(instance.subTree, getter(instance.proxy));
|
|
onMounted(() => watchEffect(setVars, {
|
|
flush: "post"
|
|
}));
|
|
onUpdated(setVars);
|
|
}
|
|
function setVarsOnVNode(vnode, vars) {
|
|
if (vnode.shapeFlag & 128) {
|
|
var suspense = vnode.suspense;
|
|
vnode = suspense.activeBranch;
|
|
if (suspense.pendingBranch && !suspense.isHydrating) {
|
|
suspense.effects.push(() => {
|
|
setVarsOnVNode(suspense.activeBranch, vars);
|
|
});
|
|
}
|
|
}
|
|
while (vnode.component) {
|
|
vnode = vnode.component.subTree;
|
|
}
|
|
if (vnode.shapeFlag & 1 && vnode.el) {
|
|
setVarsOnNode(vnode.el, vars);
|
|
} else if (vnode.type === Fragment) {
|
|
vnode.children.forEach(c => setVarsOnVNode(c, vars));
|
|
} else if (vnode.type === Static) {
|
|
var {
|
|
el,
|
|
anchor
|
|
} = vnode;
|
|
while (el) {
|
|
setVarsOnNode(el, vars);
|
|
if (el === anchor) break;
|
|
el = el.nextSibling;
|
|
}
|
|
}
|
|
}
|
|
function setVarsOnNode(el, vars) {
|
|
if (el.nodeType === 1) {
|
|
for (var key in vars) {
|
|
el.setAttribute("--".concat(key), vars[key]);
|
|
}
|
|
}
|
|
}
|
|
var TRANSITION = "transition";
|
|
var ANIMATION = "animation";
|
|
var Transition = (props, _ref21) => {
|
|
var {
|
|
slots
|
|
} = _ref21;
|
|
return h(BaseTransition, resolveTransitionProps(props), slots);
|
|
};
|
|
Transition.displayName = "Transition";
|
|
var 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
|
|
};
|
|
var TransitionPropsValidators = Transition.props = /* @__PURE__ */extend({}, BaseTransition.props, DOMTransitionPropsValidators);
|
|
var callHook = function (hook) {
|
|
var args = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : [];
|
|
if (isArray(hook)) {
|
|
hook.forEach(h2 => h2(...args));
|
|
} else if (hook) {
|
|
hook(...args);
|
|
}
|
|
};
|
|
var hasExplicitCallback = hook => {
|
|
return hook ? isArray(hook) ? hook.some(h2 => h2.length > 1) : hook.length > 1 : false;
|
|
};
|
|
function resolveTransitionProps(rawProps) {
|
|
var baseProps = {};
|
|
for (var key in rawProps) {
|
|
if (!(key in DOMTransitionPropsValidators)) {
|
|
baseProps[key] = rawProps[key];
|
|
}
|
|
}
|
|
if (rawProps.css === false) {
|
|
return baseProps;
|
|
}
|
|
var {
|
|
name = "v",
|
|
type,
|
|
duration,
|
|
enterFromClass = "".concat(name, "-enter-from"),
|
|
enterActiveClass = "".concat(name, "-enter-active"),
|
|
enterToClass = "".concat(name, "-enter-to"),
|
|
appearFromClass = enterFromClass,
|
|
appearActiveClass = enterActiveClass,
|
|
appearToClass = enterToClass,
|
|
leaveFromClass = "".concat(name, "-leave-from"),
|
|
leaveActiveClass = "".concat(name, "-leave-active"),
|
|
leaveToClass = "".concat(name, "-leave-to")
|
|
} = rawProps;
|
|
var durations = normalizeDuration(duration);
|
|
var enterDuration = durations && durations[0];
|
|
var leaveDuration = durations && durations[1];
|
|
var {
|
|
onBeforeEnter,
|
|
onEnter,
|
|
onEnterCancelled,
|
|
onLeave,
|
|
onLeaveCancelled,
|
|
onBeforeAppear = onBeforeEnter,
|
|
onAppear = onEnter,
|
|
onAppearCancelled = onEnterCancelled
|
|
} = baseProps;
|
|
var finishEnter = (el, isAppear, done) => {
|
|
removeTransitionClass(el, isAppear ? appearToClass : enterToClass);
|
|
removeTransitionClass(el, isAppear ? appearActiveClass : enterActiveClass);
|
|
done && done();
|
|
};
|
|
var finishLeave = (el, done) => {
|
|
removeTransitionClass(el, leaveToClass);
|
|
removeTransitionClass(el, leaveActiveClass);
|
|
done && done();
|
|
};
|
|
var makeEnterHook = isAppear => {
|
|
return (el, done) => {
|
|
var hook = isAppear ? onAppear : onEnter;
|
|
var 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 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) {
|
|
var resolve = () => finishLeave(el, done);
|
|
addTransitionClass(el, leaveFromClass);
|
|
forceReflow();
|
|
addTransitionClass(el, leaveActiveClass);
|
|
nextFrame(() => {
|
|
removeTransitionClass(el, leaveFromClass);
|
|
addTransitionClass(el, leaveToClass);
|
|
if (!hasExplicitCallback(onLeave)) {
|
|
whenTransitionEnds(el, type, leaveDuration, resolve);
|
|
}
|
|
});
|
|
callHook(onLeave, [el, resolve]);
|
|
},
|
|
onEnterCancelled(el) {
|
|
finishEnter(el, false);
|
|
callHook(onEnterCancelled, [el]);
|
|
},
|
|
onAppearCancelled(el) {
|
|
finishEnter(el, true);
|
|
callHook(onAppearCancelled, [el]);
|
|
},
|
|
onLeaveCancelled(el) {
|
|
finishLeave(el);
|
|
callHook(onLeaveCancelled, [el]);
|
|
}
|
|
});
|
|
}
|
|
function normalizeDuration(duration) {
|
|
if (duration == null) {
|
|
return null;
|
|
} else if (isObject(duration)) {
|
|
return [NumberOf(duration.enter), NumberOf(duration.leave)];
|
|
} else {
|
|
var n = NumberOf(duration);
|
|
return [n, n];
|
|
}
|
|
}
|
|
function NumberOf(val) {
|
|
var res = toNumber(val);
|
|
return res;
|
|
}
|
|
function addTransitionClass(el, cls) {
|
|
cls.split(/\s+/).forEach(c => c && el.classList.add(c));
|
|
(el._vtc || (el._vtc = /* @__PURE__ */new Set())).add(cls);
|
|
}
|
|
function removeTransitionClass(el, cls) {
|
|
cls.split(/\s+/).forEach(c => c && el.classList.remove(c));
|
|
var {
|
|
_vtc
|
|
} = el;
|
|
if (_vtc) {
|
|
_vtc.delete(cls);
|
|
if (!_vtc.size) {
|
|
el._vtc = void 0;
|
|
}
|
|
}
|
|
}
|
|
function nextFrame(cb) {
|
|
requestAnimationFrame(() => {
|
|
requestAnimationFrame(cb);
|
|
});
|
|
}
|
|
var endId = 0;
|
|
function whenTransitionEnds(el, expectedType, explicitTimeout, resolve) {
|
|
var id = el._endId = ++endId;
|
|
var resolveIfNotStale = () => {
|
|
if (id === el._endId) {
|
|
resolve();
|
|
}
|
|
};
|
|
if (explicitTimeout) {
|
|
return setTimeout(resolveIfNotStale, explicitTimeout);
|
|
}
|
|
var {
|
|
type,
|
|
timeout,
|
|
propCount
|
|
} = getTransitionInfo(el, expectedType);
|
|
if (!type) {
|
|
return resolve();
|
|
}
|
|
var endEvent = type + "end";
|
|
var ended = 0;
|
|
var end = () => {
|
|
el.removeEventListener(endEvent, onEnd);
|
|
resolveIfNotStale();
|
|
};
|
|
var onEnd = e => {
|
|
if (e.target === el && ++ended >= propCount) {
|
|
end();
|
|
}
|
|
};
|
|
setTimeout(() => {
|
|
if (ended < propCount) {
|
|
end();
|
|
}
|
|
}, timeout + 1);
|
|
el.addEventListener(endEvent, onEnd);
|
|
}
|
|
function getTransitionInfo(el, expectedType) {
|
|
var styles = window.getComputedStyle(el);
|
|
var getStyleProperties = key => (styles[key] || "").split(", ");
|
|
var transitionDelays = getStyleProperties(TRANSITION + "Delay");
|
|
var transitionDurations = getStyleProperties(TRANSITION + "Duration");
|
|
var transitionTimeout = getTimeout(transitionDelays, transitionDurations);
|
|
var animationDelays = getStyleProperties(ANIMATION + "Delay");
|
|
var animationDurations = getStyleProperties(ANIMATION + "Duration");
|
|
var animationTimeout = getTimeout(animationDelays, animationDurations);
|
|
var type = null;
|
|
var timeout = 0;
|
|
var 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;
|
|
}
|
|
var hasTransform = type === TRANSITION && /\b(transform|all)(,|$)/.test(styles[TRANSITION + "Property"]);
|
|
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) {
|
|
return Number(s.slice(0, -1).replace(",", ".")) * 1e3;
|
|
}
|
|
function forceReflow() {
|
|
return document.body.offsetHeight;
|
|
}
|
|
var positionMap = /* @__PURE__ */new WeakMap();
|
|
var newPositionMap = /* @__PURE__ */new WeakMap();
|
|
var TransitionGroupImpl = {
|
|
name: "TransitionGroup",
|
|
props: /* @__PURE__ */extend({}, TransitionPropsValidators, {
|
|
tag: String,
|
|
moveClass: String
|
|
}),
|
|
setup(props, _ref22) {
|
|
var {
|
|
slots
|
|
} = _ref22;
|
|
var instance = getCurrentInstance();
|
|
var state = useTransitionState();
|
|
var prevChildren;
|
|
var children;
|
|
onUpdated(() => {
|
|
if (!prevChildren.length) {
|
|
return;
|
|
}
|
|
var moveClass = props.moveClass || "".concat(props.name || "v", "-move");
|
|
if (!hasCSSTransform(prevChildren[0].el, instance.vnode.el, moveClass)) {
|
|
return;
|
|
}
|
|
prevChildren.forEach(callPendingCbs);
|
|
prevChildren.forEach(recordPosition);
|
|
var movedChildren = prevChildren.filter(applyTranslation);
|
|
forceReflow();
|
|
movedChildren.forEach(c => {
|
|
var el = c.el;
|
|
var style = el.style;
|
|
addTransitionClass(el, moveClass);
|
|
style.transform = style.webkitTransform = style.transitionDuration = "";
|
|
var cb = el._moveCb = e => {
|
|
if (e && e.target !== el) {
|
|
return;
|
|
}
|
|
if (!e || /transform$/.test(e.propertyName)) {
|
|
el.removeEventListener("transitionend", cb);
|
|
el._moveCb = null;
|
|
removeTransitionClass(el, moveClass);
|
|
}
|
|
};
|
|
el.addEventListener("transitionend", cb);
|
|
});
|
|
});
|
|
return () => {
|
|
var rawProps = toRaw(props);
|
|
var cssTransitionProps = resolveTransitionProps(rawProps);
|
|
var tag = rawProps.tag || Fragment;
|
|
prevChildren = children;
|
|
children = slots.default ? getTransitionRawChildren(slots.default()) : [];
|
|
for (var i = 0; i < children.length; i++) {
|
|
var child = children[i];
|
|
if (child.key != null) {
|
|
setTransitionHooks(child, resolveTransitionHooks(child, cssTransitionProps, state, instance));
|
|
}
|
|
}
|
|
if (prevChildren) {
|
|
for (var _i4 = 0; _i4 < prevChildren.length; _i4++) {
|
|
var _child = prevChildren[_i4];
|
|
setTransitionHooks(_child, resolveTransitionHooks(_child, cssTransitionProps, state, instance));
|
|
positionMap.set(_child, _child.el.getBoundingClientRect());
|
|
}
|
|
}
|
|
return createVNode(tag, null, children);
|
|
};
|
|
}
|
|
};
|
|
var removeMode = props => delete props.mode;
|
|
/* @__PURE__ */
|
|
removeMode(TransitionGroupImpl.props);
|
|
var TransitionGroup = TransitionGroupImpl;
|
|
function callPendingCbs(c) {
|
|
var el = c.el;
|
|
if (el._moveCb) {
|
|
el._moveCb();
|
|
}
|
|
if (el._enterCb) {
|
|
el._enterCb();
|
|
}
|
|
}
|
|
function recordPosition(c) {
|
|
newPositionMap.set(c, c.el.getBoundingClientRect());
|
|
}
|
|
function applyTranslation(c) {
|
|
var oldPos = positionMap.get(c);
|
|
var newPos = newPositionMap.get(c);
|
|
var dx = oldPos.left - newPos.left;
|
|
var dy = oldPos.top - newPos.top;
|
|
if (dx || dy) {
|
|
var s = c.el.style;
|
|
s.transform = s.webkitTransform = "translate(".concat(dx, "px,").concat(dy, "px)");
|
|
s.transitionDuration = "0s";
|
|
return c;
|
|
}
|
|
}
|
|
function hasCSSTransform(el, root, moveClass) {
|
|
var clone = el.cloneNode();
|
|
if (el._vtc) {
|
|
el._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";
|
|
var container = root.nodeType === 1 ? root : root.parentNode;
|
|
container.appendChild(clone);
|
|
var {
|
|
hasTransform
|
|
} = getTransitionInfo(clone);
|
|
container.removeChild(clone);
|
|
return hasTransform;
|
|
}
|
|
var getModelAssigner = vnode => {
|
|
var fn = vnode.props["onUpdate:modelValue"];
|
|
return isArray(fn) ? value => invokeArrayFns(fn, value) : fn;
|
|
};
|
|
var vModelText = {
|
|
created(el, _ref23, vnode) {
|
|
var {
|
|
value,
|
|
modifiers: {
|
|
trim,
|
|
number
|
|
}
|
|
} = _ref23;
|
|
el.value = value == null ? "" : value;
|
|
el._assign = getModelAssigner(vnode);
|
|
addEventListener(el, "input", e => {
|
|
var domValue = e.detail.value;
|
|
var pageNode = el.pageNode;
|
|
el.pageNode = null;
|
|
el.value = domValue;
|
|
el.pageNode = pageNode;
|
|
if (trim) {
|
|
domValue = domValue.trim();
|
|
} else if (number) {
|
|
domValue = toNumber(domValue);
|
|
}
|
|
el._assign(domValue);
|
|
});
|
|
},
|
|
beforeUpdate(el, _ref24, vnode) {
|
|
var {
|
|
value
|
|
} = _ref24;
|
|
el._assign = getModelAssigner(vnode);
|
|
var newValue = value == null ? "" : value;
|
|
if (el.value !== newValue) {
|
|
el.value = newValue;
|
|
}
|
|
}
|
|
};
|
|
var vModelDynamic = vModelText;
|
|
var systemModifiers = ["ctrl", "shift", "alt", "meta"];
|
|
var 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["".concat(m, "Key")] && !modifiers.includes(m))
|
|
};
|
|
var withModifiers = (fn, modifiers) => {
|
|
var wrapper = function (event) {
|
|
for (var i = 0; i < modifiers.length; i++) {
|
|
var guard = modifierGuards[modifiers[i]];
|
|
if (guard && guard(event, modifiers)) return;
|
|
}
|
|
for (var _len6 = arguments.length, args = new Array(_len6 > 1 ? _len6 - 1 : 0), _key14 = 1; _key14 < _len6; _key14++) {
|
|
args[_key14 - 1] = arguments[_key14];
|
|
}
|
|
return fn(event, ...args);
|
|
};
|
|
wrapper.modifiers = modifiers;
|
|
return wrapper;
|
|
};
|
|
var keyNames = {
|
|
esc: "escape",
|
|
space: " ",
|
|
up: "arrow-up",
|
|
left: "arrow-left",
|
|
right: "arrow-right",
|
|
down: "arrow-down",
|
|
delete: "backspace"
|
|
};
|
|
var withKeys = (fn, modifiers) => {
|
|
return event => {
|
|
if (!("key" in event)) {
|
|
return;
|
|
}
|
|
var eventKey = hyphenate(event.key);
|
|
if (modifiers.some(k => k === eventKey || keyNames[k] === eventKey)) {
|
|
return fn(event);
|
|
}
|
|
};
|
|
};
|
|
var vShow = {
|
|
beforeMount(el, _ref25) {
|
|
var {
|
|
value
|
|
} = _ref25;
|
|
setDisplay(el, value);
|
|
},
|
|
updated(el, _ref26) {
|
|
var {
|
|
value,
|
|
oldValue
|
|
} = _ref26;
|
|
if (!value === !oldValue) return;
|
|
setDisplay(el, value);
|
|
},
|
|
beforeUnmount(el, _ref27) {
|
|
var {
|
|
value
|
|
} = _ref27;
|
|
setDisplay(el, value);
|
|
}
|
|
};
|
|
function setDisplay(el, value) {
|
|
el.setAttribute(".vShow", !!value);
|
|
}
|
|
var rendererOptions = extend({
|
|
patchProp,
|
|
forcePatchProp
|
|
}, nodeOps);
|
|
var renderer;
|
|
function ensureRenderer() {
|
|
return renderer || (renderer = createRenderer(rendererOptions));
|
|
}
|
|
var render = function () {
|
|
ensureRenderer().render(...arguments);
|
|
};
|
|
var createApp = function () {
|
|
var app = ensureRenderer().createApp(...arguments);
|
|
var {
|
|
mount
|
|
} = app;
|
|
app.mount = container => {
|
|
if (isString(container)) {
|
|
container = createComment(container);
|
|
}
|
|
return container && mount(container, false, false);
|
|
};
|
|
return app;
|
|
};
|
|
var createSSRApp = createApp;
|
|
function onBeforeActivate() {}
|
|
function onBeforeDeactivate() {}
|
|
function wxsProp(prop) {
|
|
if (isObject(prop)) {
|
|
return JSON_PROTOCOL + JSON.stringify(prop);
|
|
}
|
|
return prop;
|
|
}
|
|
var wp = prop => wxsProp(prop);
|
|
export { BaseTransition, BaseTransitionPropsValidators, Comment, DeprecationTypes, ErrorCodes, ErrorTypeStrings, Fragment, KeepAlive, Static, Suspense, Teleport, Text, Transition, TransitionGroup, assertNumber, callWithAsyncErrorHandling, callWithErrorHandling, cloneVNode, compatUtils, computed, createApp, createBlock, createComment, createCommentVNode, createElement, createElementBlock, createBaseVNode as createElementVNode, createHydrationRenderer, createPropsRestProxy, createRenderer, createSSRApp, createSlots, createStaticVNode, createTextNode, createTextVNode, createVNode, createApp as createVueApp, defineAsyncComponent, defineComponent, defineEmits, defineExpose, defineModel, defineOptions, defineProps, defineSlots, devtools, devtoolsInitApp, getCurrentInstance, getTransitionRawChildren, guardReactiveProps, h, handleError, hasInjectionContext, initCustomFormatter, inject, injectHook, isInSSRComponentSetup, isMemoSame, isRuntimeOnly, isVNode, mergeDefaults, mergeModels, mergeProps, nextTick, onActivated, onBeforeActivate, onBeforeDeactivate, onBeforeMount, onBeforeUnmount, onBeforeUpdate, onDeactivated, onErrorCaptured, onMounted, onRenderTracked, onRenderTriggered, onServerPrefetch, onUnmounted, onUpdated, openBlock, popScopeId, provide, pushScopeId, queuePostFlushCb, registerRuntimeCompiler, render, renderList, renderSlot, resolveComponent, resolveDirective, resolveDynamicComponent, resolveFilter, resolveTransitionHooks, setBlockTracking, setDevtoolsHook, setTransitionHooks, ssrContextKey, ssrUtils, toHandlers, transformVNodeArgs, useAttrs, useCssModule, useCssVars, useModel, useSSRContext, useSlots, useTransitionState, vModelDynamic, vModelText, vShow, version, warn, watch, watchEffect, watchPostEffect, watchSyncEffect, withAsyncContext, withCtx, withDefaults, withDirectives, withKeys, withMemo, withModifiers, withScopeId, wp };
|