diff --git a/packages/uni-app-plus/build.json b/packages/uni-app-plus/build.json index 895fd16b6f37786070ab1330007cc63d96d25160..7579f3427e63d6175ba8f53a0f2c3385c4703b63 100644 --- a/packages/uni-app-plus/build.json +++ b/packages/uni-app-plus/build.json @@ -10,7 +10,7 @@ }, { "input": { - "src/service/index.ts": "dist/uni-app-service.es.js" + "src/service/index.ts": "dist/uni.runtime.esm.js" }, "output": { "freeze": false, diff --git a/packages/uni-app-plus/dist/uni-app-service.es.js b/packages/uni-app-plus/dist/uni.runtime.esm.js similarity index 100% rename from packages/uni-app-plus/dist/uni-app-service.es.js rename to packages/uni-app-plus/dist/uni.runtime.esm.js diff --git a/packages/uni-app-vue/build.json b/packages/uni-app-vue/build.json index 9ff5c983e69d4788750a611e0b9a6cff7f25bb4a..407237669985df386f5633a2f6429e5503b1ad4d 100644 --- a/packages/uni-app-vue/build.json +++ b/packages/uni-app-vue/build.json @@ -4,7 +4,7 @@ "src/service/index.ts": ["dist/service.runtime.esm.dev.js"] }, "output": { - "banner": "export default function vueFactory (exports) {\n", + "banner": "export function vueFactory (exports) {\n", "footer": "}" }, "replacements": { @@ -20,7 +20,7 @@ "src/service/index.ts": ["dist/service.runtime.esm.prod.js"] }, "output": { - "banner": "export default function vueFactory (exports) {\n", + "banner": "export function vueFactory (exports) {\n", "footer": "}" }, "replacements": { @@ -40,29 +40,5 @@ "__VUE_PROD_DEVTOOLS__": "false" }, "external": ["@vue/shared"] - }, - { - "input": { - "src/nvue/factory.ts": ["dist/nvue.factory.cjs.js"] - }, - "output": { - "banner": "export default function vueFactory (exports) {\n", - "footer": "}" - }, - "replacements": { - "process.env.NODE_ENV": "\"production\"" - }, - "external": false, - "babel": true - }, - { - "input": { - "src/nvue/index.ts": ["dist/nvue.service.cjs.js"] - }, - "replacements": { - "process.env.NODE_ENV": "\"production\"" - }, - "external": false, - "babel": true } ] diff --git a/packages/uni-app-vue/dist/nvue.factory.cjs.js b/packages/uni-app-vue/dist/nvue.factory.cjs.js deleted file mode 100644 index 9cb06d256fb23be5e43672986d6aef1d1b0bc5aa..0000000000000000000000000000000000000000 --- a/packages/uni-app-vue/dist/nvue.factory.cjs.js +++ /dev/null @@ -1,9725 +0,0 @@ -"use strict"; - -Object.defineProperty(exports, "__esModule", { - value: true -}); -exports.default = vueFactory; - -function vueFactory(exports) { - 'use strict'; - /** - * Make a map and return a function for checking if a key - * is in that map. - * IMPORTANT: all calls of this function must be prefixed with - * \/\*#\_\_PURE\_\_\*\/ - * So that rollup can tree-shake them if necessary. - */ - - function makeMap(str, expectsLowerCase) { - var map = Object.create(null); - var list = str.split(','); - - for (var i = 0; i < list.length; i++) { - map[list[i]] = true; - } - - return expectsLowerCase ? val => !!map[val.toLowerCase()] : val => !!map[val]; - } - - var GLOBALS_WHITE_LISTED = 'Infinity,undefined,NaN,isFinite,isNaN,parseFloat,parseInt,decodeURI,' + 'decodeURIComponent,encodeURI,encodeURIComponent,Math,Number,Date,Array,' + 'Object,Boolean,String,RegExp,Map,Set,JSON,Intl,BigInt'; - var isGloballyWhitelisted = /*#__PURE__*/makeMap(GLOBALS_WHITE_LISTED); - - function normalizeStyle(value) { - if (isArray(value)) { - var res = {}; - - for (var i = 0; i < value.length; i++) { - var item = value[i]; - var normalized = isString(item) ? parseStringStyle(item) : normalizeStyle(item); - - if (normalized) { - for (var key in normalized) { - res[key] = normalized[key]; - } - } - } - - return res; - } else if (isString(value)) { - return value; - } else if (isObject(value)) { - return value; - } - } - - var listDelimiterRE = /;(?![^(]*\))/g; - var propertyDelimiterRE = /:(.+)/; - - function parseStringStyle(cssText) { - var ret = {}; - cssText.split(listDelimiterRE).forEach(item => { - if (item) { - var tmp = item.split(propertyDelimiterRE); - tmp.length > 1 && (ret[tmp[0].trim()] = tmp[1].trim()); - } - }); - return ret; - } - - function normalizeClass(value) { - var res = ''; - - if (isString(value)) { - res = value; - } else if (isArray(value)) { - for (var i = 0; i < value.length; i++) { - var normalized = normalizeClass(value[i]); - - if (normalized) { - res += normalized + ' '; - } - } - } else if (isObject(value)) { - for (var name in value) { - if (value[name]) { - res += name + ' '; - } - } - } - - return res.trim(); - } - - function normalizeProps(props) { - if (!props) return null; - var { - class: klass, - style - } = props; - - if (klass && !isString(klass)) { - props.class = normalizeClass(klass); - } - - if (style) { - props.style = normalizeStyle(style); - } - - return props; - } - /** - * For converting {{ interpolation }} values to displayed strings. - * @private - */ - - - var toDisplayString = val => { - return val == null ? '' : isArray(val) || isObject(val) && (val.toString === objectToString || !isFunction(val.toString)) ? JSON.stringify(val, replacer, 2) : String(val); - }; - - var replacer = (_key, val) => { - // can't use isRef here since @vue/shared has no deps - if (val && val.__v_isRef) { - return replacer(_key, val.value); - } else if (isMap(val)) { - return { - ["Map(".concat(val.size, ")")]: [...val.entries()].reduce((entries, _ref) => { - var [key, val] = _ref; - entries["".concat(key, " =>")] = val; - return entries; - }, {}) - }; - } else if (isSet(val)) { - return { - ["Set(".concat(val.size, ")")]: [...val.values()] - }; - } else if (isObject(val) && !isArray(val) && !isPlainObject(val)) { - return String(val); - } - - return val; - }; - - var EMPTY_OBJ = {}; - var EMPTY_ARR = []; - - var NOOP = () => {}; - /** - * Always return false. - */ - - - var NO = () => false; - - var onRE = /^on[^a-z]/; - - var isOn = key => onRE.test(key); - - var isModelListener = key => key.startsWith('onUpdate:'); - - var extend = Object.assign; - - var remove = (arr, el) => { - var i = arr.indexOf(el); - - if (i > -1) { - arr.splice(i, 1); - } - }; - - var hasOwnProperty = Object.prototype.hasOwnProperty; - - var hasOwn = (val, key) => hasOwnProperty.call(val, key); - - var isArray = Array.isArray; - - var isMap = val => toTypeString(val) === '[object Map]'; - - var isSet = val => toTypeString(val) === '[object Set]'; - - var isFunction = val => typeof val === 'function'; - - var isString = val => typeof val === 'string'; - - var isSymbol = val => typeof val === 'symbol'; - - var isObject = val => val !== null && typeof val === 'object'; - - var isPromise = val => { - return isObject(val) && isFunction(val.then) && isFunction(val.catch); - }; - - var objectToString = Object.prototype.toString; - - var toTypeString = value => objectToString.call(value); - - var toRawType = value => { - // extract "RawType" from strings like "[object RawType]" - return toTypeString(value).slice(8, -1); - }; - - var isPlainObject = val => toTypeString(val) === '[object Object]'; - - var isIntegerKey = key => isString(key) && key !== 'NaN' && key[0] !== '-' && '' + parseInt(key, 10) === key; - - var isReservedProp = /*#__PURE__*/makeMap( // the leading comma is intentional so empty string "" is also included - ',key,ref,ref_for,ref_key,' + 'onVnodeBeforeMount,onVnodeMounted,' + 'onVnodeBeforeUpdate,onVnodeUpdated,' + 'onVnodeBeforeUnmount,onVnodeUnmounted'); - - var cacheStringFunction = fn => { - var cache = Object.create(null); - return str => { - var hit = cache[str]; - return hit || (cache[str] = fn(str)); - }; - }; - - var camelizeRE = /-(\w)/g; - /** - * @private - */ - - var camelize = cacheStringFunction(str => { - return str.replace(camelizeRE, (_, c) => c ? c.toUpperCase() : ''); - }); - var hyphenateRE = /\B([A-Z])/g; - /** - * @private - */ - - var hyphenate = cacheStringFunction(str => str.replace(hyphenateRE, '-$1').toLowerCase()); - /** - * @private - */ - - var capitalize = cacheStringFunction(str => str.charAt(0).toUpperCase() + str.slice(1)); - /** - * @private - */ - - var toHandlerKey = cacheStringFunction(str => str ? "on".concat(capitalize(str)) : ""); // compare whether a value has changed, accounting for NaN. - - var hasChanged = (value, oldValue) => !Object.is(value, oldValue); - - var invokeArrayFns = (fns, arg) => { - for (var i = 0; i < fns.length; i++) { - fns[i](arg); - } - }; - - var def = (obj, key, value) => { - Object.defineProperty(obj, key, { - configurable: true, - enumerable: false, - value - }); - }; - - var toNumber = val => { - var n = parseFloat(val); - return isNaN(n) ? val : n; - }; - - var _globalThis; - - var getGlobalThis = () => { - return _globalThis || (_globalThis = typeof globalThis !== 'undefined' ? globalThis : typeof self !== 'undefined' ? self : typeof window !== 'undefined' ? window : typeof global !== 'undefined' ? global : {}); - }; - - var latestNodeId = 1; - - class NVueTextNode { - constructor(text) { - this.instanceId = ''; - this.nodeId = latestNodeId++; - this.parentNode = null; - this.nodeType = 3; - this.text = text; - } - - } - - var activeEffectScope; - var effectScopeStack = []; - - class EffectScope { - constructor() { - var detached = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : false; - this.active = true; - this.effects = []; - this.cleanups = []; - - if (!detached && activeEffectScope) { - this.parent = activeEffectScope; - this.index = (activeEffectScope.scopes || (activeEffectScope.scopes = [])).push(this) - 1; - } - } - - run(fn) { - if (this.active) { - try { - this.on(); - return fn(); - } finally { - this.off(); - } - } - } - - on() { - if (this.active) { - effectScopeStack.push(this); - activeEffectScope = this; - } - } - - off() { - if (this.active) { - effectScopeStack.pop(); - activeEffectScope = effectScopeStack[effectScopeStack.length - 1]; - } - } - - stop(fromParent) { - if (this.active) { - this.effects.forEach(e => e.stop()); - this.cleanups.forEach(cleanup => cleanup()); - - if (this.scopes) { - this.scopes.forEach(e => e.stop(true)); - } // nested scope, dereference from parent to avoid memory leaks - - - if (this.parent && !fromParent) { - // optimized O(1) removal - var last = this.parent.scopes.pop(); - - if (last && last !== this) { - this.parent.scopes[this.index] = last; - last.index = this.index; - } - } - - this.active = false; - } - } - - } - - function effectScope(detached) { - return new EffectScope(detached); - } - - function recordEffectScope(effect, scope) { - scope = scope || activeEffectScope; - - if (scope && scope.active) { - scope.effects.push(effect); - } - } - - function getCurrentScope() { - return activeEffectScope; - } - - function onScopeDispose(fn) { - if (activeEffectScope) { - activeEffectScope.cleanups.push(fn); - } - } - - var createDep = effects => { - var dep = new Set(effects); - dep.w = 0; - dep.n = 0; - return dep; - }; - - var wasTracked = dep => (dep.w & trackOpBit) > 0; - - var newTracked = dep => (dep.n & trackOpBit) > 0; - - var initDepMarkers = _ref2 => { - var { - deps - } = _ref2; - - if (deps.length) { - for (var i = 0; i < deps.length; i++) { - deps[i].w |= trackOpBit; // set was tracked - } - } - }; - - var finalizeDepMarkers = effect => { - var { - deps - } = effect; - - if (deps.length) { - var ptr = 0; - - for (var i = 0; i < deps.length; i++) { - var dep = deps[i]; - - if (wasTracked(dep) && !newTracked(dep)) { - dep.delete(effect); - } else { - deps[ptr++] = dep; - } // clear bits - - - dep.w &= ~trackOpBit; - dep.n &= ~trackOpBit; - } - - deps.length = ptr; - } - }; - - var targetMap = new WeakMap(); // The number of effects currently being tracked recursively. - - var effectTrackDepth = 0; - var trackOpBit = 1; - /** - * The bitwise track markers support at most 30 levels of recursion. - * This value is chosen to enable modern JS engines to use a SMI on all platforms. - * When recursion depth is greater, fall back to using a full cleanup. - */ - - var maxMarkerBits = 30; - var effectStack = []; - var activeEffect; - var ITERATE_KEY = Symbol(''); - var MAP_KEY_ITERATE_KEY = Symbol(''); - - class ReactiveEffect { - constructor(fn) { - var scheduler = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : null; - var scope = arguments.length > 2 ? arguments[2] : undefined; - this.fn = fn; - this.scheduler = scheduler; - this.active = true; - this.deps = []; - recordEffectScope(this, scope); - } - - run() { - if (!this.active) { - return this.fn(); - } - - if (!effectStack.includes(this)) { - try { - effectStack.push(activeEffect = this); - enableTracking(); - trackOpBit = 1 << ++effectTrackDepth; - - if (effectTrackDepth <= maxMarkerBits) { - initDepMarkers(this); - } else { - cleanupEffect(this); - } - - return this.fn(); - } finally { - if (effectTrackDepth <= maxMarkerBits) { - finalizeDepMarkers(this); - } - - trackOpBit = 1 << --effectTrackDepth; - resetTracking(); - effectStack.pop(); - var n = effectStack.length; - activeEffect = n > 0 ? effectStack[n - 1] : undefined; - } - } - } - - stop() { - if (this.active) { - cleanupEffect(this); - - if (this.onStop) { - this.onStop(); - } - - this.active = false; - } - } - - } - - function cleanupEffect(effect) { - var { - deps - } = effect; - - if (deps.length) { - for (var i = 0; i < deps.length; i++) { - deps[i].delete(effect); - } - - deps.length = 0; - } - } - - function effect(fn, options) { - if (fn.effect) { - fn = fn.effect.fn; - } - - var _effect = new ReactiveEffect(fn); - - if (options) { - extend(_effect, options); - if (options.scope) recordEffectScope(_effect, options.scope); - } - - if (!options || !options.lazy) { - _effect.run(); - } - - var runner = _effect.run.bind(_effect); - - runner.effect = _effect; - return runner; - } - - function stop(runner) { - runner.effect.stop(); - } - - var shouldTrack = true; - var trackStack = []; - - function pauseTracking() { - trackStack.push(shouldTrack); - shouldTrack = false; - } - - function enableTracking() { - trackStack.push(shouldTrack); - shouldTrack = true; - } - - function resetTracking() { - var last = trackStack.pop(); - shouldTrack = last === undefined ? true : last; - } - - function track(target, type, key) { - if (!isTracking()) { - return; - } - - var depsMap = targetMap.get(target); - - if (!depsMap) { - targetMap.set(target, depsMap = new Map()); - } - - var dep = depsMap.get(key); - - if (!dep) { - depsMap.set(key, dep = createDep()); - } - - trackEffects(dep); - } - - function isTracking() { - return shouldTrack && activeEffect !== undefined; - } - - function trackEffects(dep, debuggerEventExtraInfo) { - var shouldTrack = false; - - if (effectTrackDepth <= maxMarkerBits) { - if (!newTracked(dep)) { - dep.n |= trackOpBit; // set newly tracked - - shouldTrack = !wasTracked(dep); - } - } else { - // Full cleanup mode. - shouldTrack = !dep.has(activeEffect); - } - - if (shouldTrack) { - dep.add(activeEffect); - activeEffect.deps.push(dep); - } - } - - function trigger(target, type, key, newValue, oldValue, oldTarget) { - var depsMap = targetMap.get(target); - - if (!depsMap) { - // never been tracked - return; - } - - var deps = []; - - if (type === "clear" - /* CLEAR */ - ) { - // collection being cleared - // trigger all effects for target - deps = [...depsMap.values()]; - } else if (key === 'length' && isArray(target)) { - depsMap.forEach((dep, key) => { - if (key === 'length' || key >= newValue) { - deps.push(dep); - } - }); - } else { - // schedule runs for SET | ADD | DELETE - if (key !== void 0) { - deps.push(depsMap.get(key)); - } // also run for iteration key on ADD | DELETE | Map.SET - - - switch (type) { - case "add" - /* ADD */ - : - if (!isArray(target)) { - deps.push(depsMap.get(ITERATE_KEY)); - - if (isMap(target)) { - deps.push(depsMap.get(MAP_KEY_ITERATE_KEY)); - } - } else if (isIntegerKey(key)) { - // new index added to array -> length changes - deps.push(depsMap.get('length')); - } - - break; - - case "delete" - /* DELETE */ - : - if (!isArray(target)) { - deps.push(depsMap.get(ITERATE_KEY)); - - if (isMap(target)) { - deps.push(depsMap.get(MAP_KEY_ITERATE_KEY)); - } - } - - break; - - case "set" - /* SET */ - : - if (isMap(target)) { - deps.push(depsMap.get(ITERATE_KEY)); - } - - break; - } - } - - if (deps.length === 1) { - if (deps[0]) { - { - triggerEffects(deps[0]); - } - } - } else { - var effects = []; - - for (var dep of deps) { - if (dep) { - effects.push(...dep); - } - } - - { - triggerEffects(createDep(effects)); - } - } - } - - function triggerEffects(dep, debuggerEventExtraInfo) { - // spread into array for stabilization - for (var _effect2 of isArray(dep) ? dep : [...dep]) { - if (_effect2 !== activeEffect || _effect2.allowRecurse) { - if (_effect2.scheduler) { - _effect2.scheduler(); - } else { - _effect2.run(); - } - } - } - } - - var isNonTrackableKeys = /*#__PURE__*/makeMap("__proto__,__v_isRef,__isVue"); - var builtInSymbols = new Set(Object.getOwnPropertyNames(Symbol).map(key => Symbol[key]).filter(isSymbol)); - var get = /*#__PURE__*/createGetter(); - var shallowGet = /*#__PURE__*/createGetter(false, true); - var readonlyGet = /*#__PURE__*/createGetter(true); - var shallowReadonlyGet = /*#__PURE__*/createGetter(true, true); - var arrayInstrumentations = /*#__PURE__*/createArrayInstrumentations(); - - function createArrayInstrumentations() { - var instrumentations = {}; - ['includes', 'indexOf', 'lastIndexOf'].forEach(key => { - instrumentations[key] = function () { - var arr = toRaw(this); - - for (var i = 0, l = this.length; i < l; i++) { - track(arr, "get" - /* GET */ - , i + ''); - } // we run the method using the original args first (which may be reactive) - - - for (var _len = arguments.length, args = new Array(_len), _key2 = 0; _key2 < _len; _key2++) { - args[_key2] = arguments[_key2]; - } - - var res = arr[key](...args); - - if (res === -1 || res === false) { - // if that didn't work, run it again using raw values. - return arr[key](...args.map(toRaw)); - } else { - return res; - } - }; - }); - ['push', 'pop', 'shift', 'unshift', 'splice'].forEach(key => { - instrumentations[key] = function () { - pauseTracking(); - - for (var _len2 = arguments.length, args = new Array(_len2), _key3 = 0; _key3 < _len2; _key3++) { - args[_key3] = arguments[_key3]; - } - - var res = toRaw(this)[key].apply(this, args); - resetTracking(); - return res; - }; - }); - return instrumentations; - } - - function createGetter() { - var isReadonly = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : false; - var shallow = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : false; - return function get(target, key, receiver) { - if (key === "__v_isReactive" - /* IS_REACTIVE */ - ) { - return !isReadonly; - } else if (key === "__v_isReadonly" - /* IS_READONLY */ - ) { - return isReadonly; - } else if (key === "__v_raw" - /* RAW */ - && receiver === (isReadonly ? shallow ? shallowReadonlyMap : readonlyMap : shallow ? shallowReactiveMap : reactiveMap).get(target)) { - return target; - } - - var targetIsArray = isArray(target); - - if (!isReadonly && targetIsArray && hasOwn(arrayInstrumentations, key)) { - return Reflect.get(arrayInstrumentations, key, receiver); - } - - var res = Reflect.get(target, key, receiver); - - if (isSymbol(key) ? builtInSymbols.has(key) : isNonTrackableKeys(key)) { - return res; - } - - if (!isReadonly) { - track(target, "get" - /* GET */ - , key); - } - - if (shallow) { - return res; - } - - if (isRef(res)) { - // ref unwrapping - does not apply for Array + integer key. - var shouldUnwrap = !targetIsArray || !isIntegerKey(key); - return shouldUnwrap ? res.value : res; - } - - if (isObject(res)) { - // Convert returned value into a proxy as well. we do the isObject check - // here to avoid invalid value warning. Also need to lazy access readonly - // and reactive here to avoid circular dependency. - return isReadonly ? readonly(res) : reactive(res); - } - - return res; - }; - } - - var set = /*#__PURE__*/createSetter(); - var shallowSet = /*#__PURE__*/createSetter(true); - - function createSetter() { - var shallow = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : false; - return function set(target, key, value, receiver) { - var oldValue = target[key]; - - if (!shallow && !isReadonly(value)) { - value = toRaw(value); - oldValue = toRaw(oldValue); - - if (!isArray(target) && isRef(oldValue) && !isRef(value)) { - oldValue.value = value; - return true; - } - } - - var hadKey = isArray(target) && isIntegerKey(key) ? Number(key) < target.length : hasOwn(target, key); - var result = Reflect.set(target, key, value, receiver); // don't trigger if target is something up in the prototype chain of original - - if (target === toRaw(receiver)) { - if (!hadKey) { - trigger(target, "add" - /* ADD */ - , key, value); - } else if (hasChanged(value, oldValue)) { - trigger(target, "set" - /* SET */ - , key, value); - } - } - - return result; - }; - } - - function deleteProperty(target, key) { - var hadKey = hasOwn(target, key); - target[key]; - var result = Reflect.deleteProperty(target, key); - - if (result && hadKey) { - trigger(target, "delete" - /* DELETE */ - , key, undefined); - } - - return result; - } - - function has(target, key) { - var result = Reflect.has(target, key); - - if (!isSymbol(key) || !builtInSymbols.has(key)) { - track(target, "has" - /* HAS */ - , key); - } - - return result; - } - - function ownKeys(target) { - track(target, "iterate" - /* ITERATE */ - , isArray(target) ? 'length' : ITERATE_KEY); - return Reflect.ownKeys(target); - } - - var mutableHandlers = { - get, - set, - deleteProperty, - has, - ownKeys - }; - var readonlyHandlers = { - get: readonlyGet, - - set(target, key) { - return true; - }, - - deleteProperty(target, key) { - return true; - } - - }; - var shallowReactiveHandlers = /*#__PURE__*/extend({}, mutableHandlers, { - get: shallowGet, - set: shallowSet - }); // Props handlers are special in the sense that it should not unwrap top-level - // refs (in order to allow refs to be explicitly passed down), but should - // retain the reactivity of the normal readonly object. - - var shallowReadonlyHandlers = /*#__PURE__*/extend({}, readonlyHandlers, { - get: shallowReadonlyGet - }); - - var toShallow = value => value; - - var getProto = v => Reflect.getPrototypeOf(v); - - function get$1(target, key) { - var isReadonly = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : false; - var isShallow = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : false; - // #1772: readonly(reactive(Map)) should return readonly + reactive version - // of the value - target = target["__v_raw" - /* RAW */ - ]; - var rawTarget = toRaw(target); - var rawKey = toRaw(key); - - if (key !== rawKey) { - !isReadonly && track(rawTarget, "get" - /* GET */ - , key); - } - - !isReadonly && track(rawTarget, "get" - /* GET */ - , rawKey); - var { - has - } = getProto(rawTarget); - var wrap = isShallow ? toShallow : isReadonly ? toReadonly : toReactive; - - if (has.call(rawTarget, key)) { - return wrap(target.get(key)); - } else if (has.call(rawTarget, rawKey)) { - return wrap(target.get(rawKey)); - } else if (target !== rawTarget) { - // #3602 readonly(reactive(Map)) - // ensure that the nested reactive `Map` can do tracking for itself - target.get(key); - } - } - - function has$1(key) { - var isReadonly = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : false; - var target = this["__v_raw" - /* RAW */ - ]; - var rawTarget = toRaw(target); - var rawKey = toRaw(key); - - if (key !== rawKey) { - !isReadonly && track(rawTarget, "has" - /* HAS */ - , key); - } - - !isReadonly && track(rawTarget, "has" - /* HAS */ - , rawKey); - return key === rawKey ? target.has(key) : target.has(key) || target.has(rawKey); - } - - function size(target) { - var isReadonly = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : false; - target = target["__v_raw" - /* RAW */ - ]; - !isReadonly && track(toRaw(target), "iterate" - /* ITERATE */ - , ITERATE_KEY); - return Reflect.get(target, 'size', target); - } - - function add(value) { - value = toRaw(value); - var target = toRaw(this); - var proto = getProto(target); - var hadKey = proto.has.call(target, value); - - if (!hadKey) { - target.add(value); - trigger(target, "add" - /* ADD */ - , value, value); - } - - return this; - } - - function set$1(key, value) { - value = toRaw(value); - var target = toRaw(this); - var { - has, - get - } = getProto(target); - var hadKey = has.call(target, key); - - if (!hadKey) { - key = toRaw(key); - hadKey = has.call(target, key); - } - - var oldValue = get.call(target, key); - target.set(key, value); - - if (!hadKey) { - trigger(target, "add" - /* ADD */ - , key, value); - } else if (hasChanged(value, oldValue)) { - trigger(target, "set" - /* SET */ - , key, value); - } - - return this; - } - - function deleteEntry(key) { - var target = toRaw(this); - var { - has, - get - } = getProto(target); - var hadKey = has.call(target, key); - - if (!hadKey) { - key = toRaw(key); - hadKey = has.call(target, key); - } - - get ? get.call(target, key) : undefined; // forward the operation before queueing reactions - - var result = target.delete(key); - - if (hadKey) { - trigger(target, "delete" - /* DELETE */ - , key, undefined); - } - - return result; - } - - function clear() { - var target = toRaw(this); - var hadItems = target.size !== 0; // forward the operation before queueing reactions - - var result = target.clear(); - - if (hadItems) { - trigger(target, "clear" - /* CLEAR */ - , undefined, undefined); - } - - return result; - } - - function createForEach(isReadonly, isShallow) { - return function forEach(callback, thisArg) { - var observed = this; - var target = observed["__v_raw" - /* RAW */ - ]; - var rawTarget = toRaw(target); - var wrap = isShallow ? toShallow : isReadonly ? toReadonly : toReactive; - !isReadonly && track(rawTarget, "iterate" - /* ITERATE */ - , ITERATE_KEY); - return target.forEach((value, key) => { - // important: make sure the callback is - // 1. invoked with the reactive map as `this` and 3rd arg - // 2. the value received should be a corresponding reactive/readonly. - return callback.call(thisArg, wrap(value), wrap(key), observed); - }); - }; - } - - function createIterableMethod(method, isReadonly, isShallow) { - return function () { - var target = this["__v_raw" - /* RAW */ - ]; - var rawTarget = toRaw(target); - var targetIsMap = isMap(rawTarget); - var isPair = method === 'entries' || method === Symbol.iterator && targetIsMap; - var isKeyOnly = method === 'keys' && targetIsMap; - var innerIterator = target[method](...arguments); - var wrap = isShallow ? toShallow : isReadonly ? toReadonly : toReactive; - !isReadonly && track(rawTarget, "iterate" - /* ITERATE */ - , isKeyOnly ? MAP_KEY_ITERATE_KEY : ITERATE_KEY); // return a wrapped iterator which returns observed versions of the - // values emitted from the real iterator - - return { - // iterator protocol - next() { - var { - value, - done - } = innerIterator.next(); - return done ? { - value, - done - } : { - value: isPair ? [wrap(value[0]), wrap(value[1])] : wrap(value), - done - }; - }, - - // iterable protocol - [Symbol.iterator]() { - return this; - } - - }; - }; - } - - function createReadonlyMethod(type) { - return function () { - return type === "delete" - /* DELETE */ - ? false : this; - }; - } - - function createInstrumentations() { - var mutableInstrumentations = { - get(key) { - return get$1(this, key); - }, - - get size() { - return size(this); - }, - - has: has$1, - add, - set: set$1, - delete: deleteEntry, - clear, - forEach: createForEach(false, false) - }; - var shallowInstrumentations = { - get(key) { - return get$1(this, key, false, true); - }, - - get size() { - return size(this); - }, - - has: has$1, - add, - set: set$1, - delete: deleteEntry, - clear, - forEach: createForEach(false, true) - }; - var readonlyInstrumentations = { - get(key) { - return get$1(this, key, true); - }, - - get size() { - return size(this, true); - }, - - has(key) { - return has$1.call(this, key, true); - }, - - add: createReadonlyMethod("add" - /* ADD */ - ), - set: createReadonlyMethod("set" - /* SET */ - ), - delete: createReadonlyMethod("delete" - /* DELETE */ - ), - clear: createReadonlyMethod("clear" - /* CLEAR */ - ), - forEach: createForEach(true, false) - }; - var shallowReadonlyInstrumentations = { - get(key) { - return get$1(this, key, true, true); - }, - - get size() { - return size(this, true); - }, - - has(key) { - return has$1.call(this, key, true); - }, - - add: createReadonlyMethod("add" - /* ADD */ - ), - set: createReadonlyMethod("set" - /* SET */ - ), - delete: createReadonlyMethod("delete" - /* DELETE */ - ), - clear: createReadonlyMethod("clear" - /* CLEAR */ - ), - forEach: createForEach(true, true) - }; - var iteratorMethods = ['keys', 'values', 'entries', Symbol.iterator]; - iteratorMethods.forEach(method => { - mutableInstrumentations[method] = createIterableMethod(method, false, false); - readonlyInstrumentations[method] = createIterableMethod(method, true, false); - shallowInstrumentations[method] = createIterableMethod(method, false, true); - shallowReadonlyInstrumentations[method] = createIterableMethod(method, true, true); - }); - return [mutableInstrumentations, readonlyInstrumentations, shallowInstrumentations, shallowReadonlyInstrumentations]; - } - - var [mutableInstrumentations, readonlyInstrumentations, shallowInstrumentations, shallowReadonlyInstrumentations] = /* #__PURE__*/createInstrumentations(); - - function createInstrumentationGetter(isReadonly, shallow) { - var instrumentations = shallow ? isReadonly ? shallowReadonlyInstrumentations : shallowInstrumentations : isReadonly ? readonlyInstrumentations : mutableInstrumentations; - return (target, key, receiver) => { - if (key === "__v_isReactive" - /* IS_REACTIVE */ - ) { - return !isReadonly; - } else if (key === "__v_isReadonly" - /* IS_READONLY */ - ) { - return isReadonly; - } else if (key === "__v_raw" - /* RAW */ - ) { - return target; - } - - return Reflect.get(hasOwn(instrumentations, key) && key in target ? instrumentations : target, key, receiver); - }; - } - - var mutableCollectionHandlers = { - get: /*#__PURE__*/createInstrumentationGetter(false, false) - }; - var shallowCollectionHandlers = { - get: /*#__PURE__*/createInstrumentationGetter(false, true) - }; - var readonlyCollectionHandlers = { - get: /*#__PURE__*/createInstrumentationGetter(true, false) - }; - var shallowReadonlyCollectionHandlers = { - get: /*#__PURE__*/createInstrumentationGetter(true, true) - }; - var reactiveMap = new WeakMap(); - var shallowReactiveMap = new WeakMap(); - var readonlyMap = new WeakMap(); - var shallowReadonlyMap = new WeakMap(); - - function targetTypeMap(rawType) { - switch (rawType) { - case 'Object': - case 'Array': - return 1 - /* COMMON */ - ; - - case 'Map': - case 'Set': - case 'WeakMap': - case 'WeakSet': - return 2 - /* COLLECTION */ - ; - - default: - return 0 - /* INVALID */ - ; - } - } - - function getTargetType(value) { - return value["__v_skip" - /* SKIP */ - ] || !Object.isExtensible(value) ? 0 - /* INVALID */ - : targetTypeMap(toRawType(value)); - } - - function reactive(target) { - // if trying to observe a readonly proxy, return the readonly version. - if (target && target["__v_isReadonly" - /* IS_READONLY */ - ]) { - return target; - } - - return createReactiveObject(target, false, mutableHandlers, mutableCollectionHandlers, reactiveMap); - } - /** - * Return a shallowly-reactive copy of the original object, where only the root - * level properties are reactive. It also does not auto-unwrap refs (even at the - * root level). - */ - - - function shallowReactive(target) { - return createReactiveObject(target, false, shallowReactiveHandlers, shallowCollectionHandlers, shallowReactiveMap); - } - /** - * Creates a readonly copy of the original object. Note the returned copy is not - * made reactive, but `readonly` can be called on an already reactive object. - */ - - - function readonly(target) { - return createReactiveObject(target, true, readonlyHandlers, readonlyCollectionHandlers, readonlyMap); - } - /** - * Returns a reactive-copy of the original object, where only the root level - * properties are readonly, and does NOT unwrap refs nor recursively convert - * returned properties. - * This is used for creating the props proxy object for stateful components. - */ - - - function shallowReadonly(target) { - return createReactiveObject(target, true, shallowReadonlyHandlers, shallowReadonlyCollectionHandlers, shallowReadonlyMap); - } - - function createReactiveObject(target, isReadonly, baseHandlers, collectionHandlers, proxyMap) { - if (!isObject(target)) { - return target; - } // target is already a Proxy, return it. - // exception: calling readonly() on a reactive object - - - if (target["__v_raw" - /* RAW */ - ] && !(isReadonly && target["__v_isReactive" - /* IS_REACTIVE */ - ])) { - return target; - } // target already has corresponding Proxy - - - var existingProxy = proxyMap.get(target); - - if (existingProxy) { - return existingProxy; - } // only a whitelist of value types can be observed. - - - var targetType = getTargetType(target); - - if (targetType === 0 - /* INVALID */ - ) { - return target; - } - - var proxy = new Proxy(target, targetType === 2 - /* COLLECTION */ - ? collectionHandlers : baseHandlers); - proxyMap.set(target, proxy); - return proxy; - } - - function isReactive(value) { - if (isReadonly(value)) { - return isReactive(value["__v_raw" - /* RAW */ - ]); - } - - return !!(value && value["__v_isReactive" - /* IS_REACTIVE */ - ]); - } - - function isReadonly(value) { - return !!(value && value["__v_isReadonly" - /* IS_READONLY */ - ]); - } - - function isProxy(value) { - return isReactive(value) || isReadonly(value); - } - - function toRaw(observed) { - var raw = observed && observed["__v_raw" - /* RAW */ - ]; - return raw ? toRaw(raw) : observed; - } - - function markRaw(value) { - def(value, "__v_skip" - /* SKIP */ - , true); - return value; - } - - var toReactive = value => isObject(value) ? reactive(value) : value; - - var toReadonly = value => isObject(value) ? readonly(value) : value; - - function trackRefValue(ref) { - if (isTracking()) { - ref = toRaw(ref); - - if (!ref.dep) { - ref.dep = createDep(); - } - - { - trackEffects(ref.dep); - } - } - } - - function triggerRefValue(ref, newVal) { - ref = toRaw(ref); - - if (ref.dep) { - { - triggerEffects(ref.dep); - } - } - } - - function isRef(r) { - return Boolean(r && r.__v_isRef === true); - } - - function ref(value) { - return createRef(value, false); - } - - function shallowRef(value) { - return createRef(value, true); - } - - function createRef(rawValue, shallow) { - if (isRef(rawValue)) { - return rawValue; - } - - return new RefImpl(rawValue, shallow); - } - - class RefImpl { - constructor(value, _shallow) { - this._shallow = _shallow; - this.dep = undefined; - this.__v_isRef = true; - this._rawValue = _shallow ? value : toRaw(value); - this._value = _shallow ? value : toReactive(value); - } - - get value() { - trackRefValue(this); - return this._value; - } - - set value(newVal) { - newVal = this._shallow ? newVal : toRaw(newVal); - - if (hasChanged(newVal, this._rawValue)) { - this._rawValue = newVal; - this._value = this._shallow ? newVal : toReactive(newVal); - triggerRefValue(this); - } - } - - } - - function triggerRef(ref) { - triggerRefValue(ref); - } - - function unref(ref) { - return isRef(ref) ? ref.value : ref; - } - - var shallowUnwrapHandlers = { - get: (target, key, receiver) => unref(Reflect.get(target, key, receiver)), - set: (target, key, value, receiver) => { - var oldValue = target[key]; - - if (isRef(oldValue) && !isRef(value)) { - oldValue.value = value; - return true; - } else { - return Reflect.set(target, key, value, receiver); - } - } - }; - - function proxyRefs(objectWithRefs) { - return isReactive(objectWithRefs) ? objectWithRefs : new Proxy(objectWithRefs, shallowUnwrapHandlers); - } - - class CustomRefImpl { - constructor(factory) { - this.dep = undefined; - this.__v_isRef = true; - var { - get, - set - } = factory(() => trackRefValue(this), () => triggerRefValue(this)); - this._get = get; - this._set = set; - } - - get value() { - return this._get(); - } - - set value(newVal) { - this._set(newVal); - } - - } - - function customRef(factory) { - return new CustomRefImpl(factory); - } - - function toRefs(object) { - var ret = isArray(object) ? new Array(object.length) : {}; - - for (var key in object) { - ret[key] = toRef(object, key); - } - - return ret; - } - - class ObjectRefImpl { - constructor(_object, _key, _defaultValue) { - this._object = _object; - this._key = _key; - this._defaultValue = _defaultValue; - this.__v_isRef = true; - } - - get value() { - var val = this._object[this._key]; - return val === undefined ? this._defaultValue : val; - } - - set value(newVal) { - this._object[this._key] = newVal; - } - - } - - function toRef(object, key, defaultValue) { - var val = object[key]; - return isRef(val) ? val : new ObjectRefImpl(object, key, defaultValue); - } - - class ComputedRefImpl { - constructor(getter, _setter, isReadonly) { - this._setter = _setter; - this.dep = undefined; - this._dirty = true; - this.__v_isRef = true; - this.effect = new ReactiveEffect(getter, () => { - if (!this._dirty) { - this._dirty = true; - triggerRefValue(this); - } - }); - this["__v_isReadonly" - /* IS_READONLY */ - ] = isReadonly; - } - - get value() { - // the computed ref may get wrapped by other proxies e.g. readonly() #3376 - var self = toRaw(this); - trackRefValue(self); - - if (self._dirty) { - self._dirty = false; - self._value = self.effect.run(); - } - - return self._value; - } - - set value(newValue) { - this._setter(newValue); - } - - } - - function computed(getterOrOptions, debugOptions) { - var getter; - var setter; - var onlyGetter = isFunction(getterOrOptions); - - if (onlyGetter) { - getter = getterOrOptions; - setter = NOOP; - } else { - getter = getterOrOptions.get; - setter = getterOrOptions.set; - } - - var cRef = new ComputedRefImpl(getter, setter, onlyGetter || !setter); - return cRef; - } - - var devtools; - var buffer = []; - var devtoolsNotInstalled = false; - - function emit(event) { - for (var _len3 = arguments.length, args = new Array(_len3 > 1 ? _len3 - 1 : 0), _key4 = 1; _key4 < _len3; _key4++) { - args[_key4 - 1] = arguments[_key4]; - } - - if (devtools) { - devtools.emit(event, ...args); - } else if (!devtoolsNotInstalled) { - buffer.push({ - event, - args - }); - } - } - - function setDevtoolsHook(hook, target) { - var _a, _b; - - devtools = hook; - - if (devtools) { - devtools.enabled = true; - buffer.forEach(_ref3 => { - var { - event, - args - } = _ref3; - return devtools.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) - // eslint-disable-next-line no-restricted-globals - typeof window !== 'undefined' && // some envs mock window but not fully - window.HTMLElement && // also exclude jsdom - !((_b = (_a = window.navigator) === null || _a === void 0 ? void 0 : _a.userAgent) === null || _b === void 0 ? void 0 : _b.includes('jsdom'))) { - var replay = target.__VUE_DEVTOOLS_HOOK_REPLAY__ = target.__VUE_DEVTOOLS_HOOK_REPLAY__ || []; - replay.push(newHook => { - setDevtoolsHook(newHook, target); - }); // clear buffer after 3s - the user probably doesn't have devtools installed - // at all, and keeping the buffer will cause memory leaks (#4738) - - setTimeout(() => { - if (!devtools) { - target.__VUE_DEVTOOLS_HOOK_REPLAY__ = null; - devtoolsNotInstalled = true; - buffer = []; - } - }, 3000); - } else { - // non-browser env, assume not installed - devtoolsNotInstalled = true; - buffer = []; - } - } - - function devtoolsInitApp(app, version) { - emit("app:init" - /* APP_INIT */ - , app, version, { - Fragment, - Text, - Comment, - Static - }); - } - - function devtoolsUnmountApp(app) { - emit("app:unmount" - /* APP_UNMOUNT */ - , app); - } - - var devtoolsComponentAdded = /*#__PURE__*/createDevtoolsComponentHook("component:added" - /* COMPONENT_ADDED */ - ); - var devtoolsComponentUpdated = /*#__PURE__*/createDevtoolsComponentHook("component:updated" - /* COMPONENT_UPDATED */ - ); - var devtoolsComponentRemoved = /*#__PURE__*/createDevtoolsComponentHook("component:removed" - /* COMPONENT_REMOVED */ - ); - - function createDevtoolsComponentHook(hook) { - return component => { - emit(hook, component.appContext.app, component.uid, component.parent ? component.parent.uid : undefined, component); - }; - } - - function devtoolsComponentEmit(component, event, params) { - emit("component:emit" - /* COMPONENT_EMIT */ - , component.appContext.app, component, event, params); - } - - function emit$1(instance, event) { - var props = instance.vnode.props || EMPTY_OBJ; - - for (var _len4 = arguments.length, rawArgs = new Array(_len4 > 2 ? _len4 - 2 : 0), _key5 = 2; _key5 < _len4; _key5++) { - rawArgs[_key5 - 2] = arguments[_key5]; - } - - var args = rawArgs; - var isModelListener = event.startsWith('update:'); // for v-model update:xxx events, apply modifiers on args - - 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 => a.trim()); - } else if (number) { - args = rawArgs.map(toNumber); - } - } - - if (__VUE_PROD_DEVTOOLS__) { - devtoolsComponentEmit(instance, event, args); - } - - var handlerName; - var handler = props[handlerName = toHandlerKey(event)] || // also try camelCase event handler (#2249) - props[handlerName = toHandlerKey(camelize(event))]; // for v-model update:xxx events, also trigger kebab-case equivalent - // for props passed via kebab-case - - if (!handler && isModelListener) { - handler = props[handlerName = toHandlerKey(hyphenate(event))]; - } - - if (handler) { - callWithAsyncErrorHandling(handler, instance, 6 - /* COMPONENT_EVENT_HANDLER */ - , 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 - /* COMPONENT_EVENT_HANDLER */ - , 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 !== undefined) { - return cached; - } - - var raw = comp.emits; - var normalized = {}; // apply mixin/extends props - - var hasExtends = false; - - if (__VUE_OPTIONS_API__ && !isFunction(comp)) { - var extendEmits = raw => { - var normalizedFromExtend = normalizeEmitsOptions(raw, 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) { - cache.set(comp, null); - return null; - } - - if (isArray(raw)) { - raw.forEach(key => normalized[key] = null); - } else { - extend(normalized, raw); - } - - cache.set(comp, normalized); - return normalized; - } // Check if an incoming prop key is a declared emit event listener. - // e.g. With `emits: { click: null }`, props named `onClick` and `onclick` are - // both considered matched listeners. - - - 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); - } - /** - * mark the current rendering instance for asset resolution (e.g. - * resolveComponent, resolveDirective) during render - */ - - - var currentRenderingInstance = null; - var currentScopeId = null; - /** - * Note: rendering calls maybe nested. The function returns the parent rendering - * instance if present, which should be restored after the render is done: - * - * ```js - * const prev = setCurrentRenderingInstance(i) - * // ...render - * setCurrentRenderingInstance(prev) - * ``` - */ - - function setCurrentRenderingInstance(instance) { - var prev = currentRenderingInstance; - currentRenderingInstance = instance; - currentScopeId = instance && instance.type.__scopeId || null; - return prev; - } - /** - * Set scope id when creating hoisted vnodes. - * @private compiler helper - */ - - - function pushScopeId(id) { - currentScopeId = id; - } - /** - * Technically we no longer need this after 3.0.8 but we need to keep the same - * API for backwards compat w/ code generated by compilers. - * @private - */ - - - function popScopeId() { - currentScopeId = null; - } - /** - * Only for backwards compat - * @private - */ - - - var withScopeId = _id => withCtx; - /** - * Wrap a slot function to memoize current rendering instance - * @private compiler helper - */ - - - function withCtx(fn) { - var ctx = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : currentRenderingInstance; - var isNonScopedSlot // false only - = arguments.length > 2 ? arguments[2] : undefined; - if (!ctx) return fn; // already normalized - - if (fn._n) { - return fn; - } - - var renderFnWithContext = function () { - // If a user calls a compiled slot inside a template expression (#1745), it - // can mess up block tracking, so by default we disable block tracking and - // force bail out when invoking a compiled slot (indicated by the ._d flag). - // This isn't necessary if rendering a compiled ``, so we flip the - // ._d flag off when invoking the wrapped fn inside `renderSlot`. - if (renderFnWithContext._d) { - setBlockTracking(-1); - } - - var prevInstance = setCurrentRenderingInstance(ctx); - var res = fn(...arguments); - setCurrentRenderingInstance(prevInstance); - - if (renderFnWithContext._d) { - setBlockTracking(1); - } - - if (__VUE_PROD_DEVTOOLS__) { - devtoolsComponentUpdated(ctx); - } - - return res; - }; // mark normalized to avoid duplicated wrapping - - - renderFnWithContext._n = true; // mark this as compiled by default - // this is used in vnode.ts -> normalizeChildren() to set the slot - // rendering flag. - - renderFnWithContext._c = true; // disable block tracking by default - - 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 - /* STATEFUL_COMPONENT */ - ) { - // withProxy is a proxy with a different `has` trap only for - // runtime-compiled render functions using `with` block. - var proxyToUse = withProxy || proxy; - result = normalizeVNode(render.call(proxyToUse, proxyToUse, renderCache, props, setupState, data, ctx)); - fallthroughAttrs = attrs; - } else { - // functional - var _render = Component; // in dev, mark attrs accessed if optional props (attrs === props) - - if ("production" !== 'production' && attrs === props) ; - result = normalizeVNode(_render.length > 1 ? _render(props, "production" !== 'production' ? { - get attrs() { - markAttrsAccessed(); - return attrs; - }, - - slots, - emit - } : { - attrs, - slots, - emit - }) : _render(props, null - /* we know it doesn't need it */ - )); - fallthroughAttrs = Component.props ? attrs : getFunctionalFallthrough(attrs); - } - } catch (err) { - blockStack.length = 0; - handleError(err, instance, 1 - /* RENDER_FUNCTION */ - ); - result = createVNode(Comment); - } // attr merging - // in dev mode, comments are preserved, and it's possible for a template - // to have comments along side the root element which makes it a fragment - - - var root = result; - - if (fallthroughAttrs && inheritAttrs !== false) { - var keys = Object.keys(fallthroughAttrs); - var { - shapeFlag - } = root; - - if (keys.length) { - if (shapeFlag & (1 - /* ELEMENT */ - | 6 - /* COMPONENT */ - )) { - if (propsOptions && keys.some(isModelListener)) { - // If a v-model listener (onUpdate:xxx) has a corresponding declared - // prop, it indicates this component expects to handle v-model and - // it should not fallthrough. - // related: #1543, #1643, #1989 - fallthroughAttrs = filterModelListeners(fallthroughAttrs, propsOptions); - } - - root = cloneVNode(root, fallthroughAttrs); - } - } - } // inherit directives - - - if (vnode.dirs) { - root.dirs = root.dirs ? root.dirs.concat(vnode.dirs) : vnode.dirs; - } // inherit transition data - - - if (vnode.transition) { - root.transition = vnode.transition; - } - - { - result = root; - } - setCurrentRenderingInstance(prev); - return result; - } - - function filterSingleRoot(children) { - var singleRoot; - - for (var i = 0; i < children.length; i++) { - var child = children[i]; - - if (isVNode(child)) { - // ignore user comment - if (child.type !== Comment || child.children === 'v-if') { - if (singleRoot) { - // has more than 1 non-comment child, return now - 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; // force child update for runtime directive or transition on component vnode. - - if (nextVNode.dirs || nextVNode.transition) { - return true; - } - - if (optimized && patchFlag >= 0) { - if (patchFlag & 1024 - /* DYNAMIC_SLOTS */ - ) { - // slot content that references values that might have changed, - // e.g. in a v-for - return true; - } - - if (patchFlag & 16 - /* FULL_PROPS */ - ) { - if (!prevProps) { - return !!nextProps; - } // presence of this flag indicates props are always non-null - - - return hasPropsChanged(prevProps, nextProps, emits); - } else if (patchFlag & 8 - /* PROPS */ - ) { - 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 { - // this path is only taken by manually written render functions - // so presence of any children leads to a forced update - 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 // HostNode - ) { - var { - vnode, - parent - } = _ref4; - - while (parent && parent.subTree === vnode) { - (vnode = parent.vnode).el = el; - parent = parent.parent; - } - } - - var isSuspense = type => type.__isSuspense; // Suspense exposes a component-like API, and is treated like a component - // in the compiler, but internally it's a special built-in type that hooks - // directly into the renderer. - - - 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, isSVG, slotScopeIds, optimized, // platform-specific impl passed from renderer - rendererInternals) { - if (n1 == null) { - mountSuspense(n2, container, anchor, parentComponent, parentSuspense, isSVG, slotScopeIds, optimized, rendererInternals); - } else { - patchSuspense(n1, n2, container, anchor, parentComponent, isSVG, slotScopeIds, optimized, rendererInternals); - } - }, - - hydrate: hydrateSuspense, - create: createSuspenseBoundary, - normalize: normalizeSuspenseChildren - }; // Force-casted public typing for h and TSX props inference - - 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, isSVG, slotScopeIds, optimized, rendererInternals) { - var { - p: patch, - o: { - createElement - } - } = rendererInternals; - var hiddenContainer = createElement('div'); - var suspense = vnode.suspense = createSuspenseBoundary(vnode, parentSuspense, parentComponent, container, hiddenContainer, anchor, isSVG, slotScopeIds, optimized, rendererInternals); // start mounting the content subtree in an off-dom container - - patch(null, suspense.pendingBranch = vnode.ssContent, hiddenContainer, null, parentComponent, suspense, isSVG, slotScopeIds); // now check if we have encountered any async deps - - if (suspense.deps > 0) { - // has async - // invoke @fallback event - triggerEvent(vnode, 'onPending'); - triggerEvent(vnode, 'onFallback'); // mount the fallback tree - - patch(null, vnode.ssFallback, container, anchor, parentComponent, null, // fallback tree will not have suspense context - isSVG, slotScopeIds); - setActiveBranch(suspense, vnode.ssFallback); - } else { - // Suspense has no async deps. Just resolve. - suspense.resolve(); - } - } - - function patchSuspense(n1, n2, container, anchor, parentComponent, isSVG, 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)) { - // same root type but content may have changed. - patch(pendingBranch, newBranch, suspense.hiddenContainer, null, parentComponent, suspense, isSVG, slotScopeIds, optimized); - - if (suspense.deps <= 0) { - suspense.resolve(); - } else if (isInFallback) { - patch(activeBranch, newFallback, container, anchor, parentComponent, null, // fallback tree will not have suspense context - isSVG, slotScopeIds, optimized); - setActiveBranch(suspense, newFallback); - } - } else { - // toggled before pending tree is resolved - suspense.pendingId++; - - if (isHydrating) { - // if toggled before hydration is finished, the current DOM tree is - // no longer valid. set it as the active branch so it will be unmounted - // when resolved - suspense.isHydrating = false; - suspense.activeBranch = pendingBranch; - } else { - unmount(pendingBranch, parentComponent, suspense); - } // increment pending ID. this is used to invalidate async callbacks - // reset suspense state - - - suspense.deps = 0; // discard effects from pending branch - - suspense.effects.length = 0; // discard previous container - - suspense.hiddenContainer = createElement('div'); - - if (isInFallback) { - // already in fallback state - patch(null, newBranch, suspense.hiddenContainer, null, parentComponent, suspense, isSVG, slotScopeIds, optimized); - - if (suspense.deps <= 0) { - suspense.resolve(); - } else { - patch(activeBranch, newFallback, container, anchor, parentComponent, null, // fallback tree will not have suspense context - isSVG, slotScopeIds, optimized); - setActiveBranch(suspense, newFallback); - } - } else if (activeBranch && isSameVNodeType(newBranch, activeBranch)) { - // toggled "back" to current active branch - patch(activeBranch, newBranch, container, anchor, parentComponent, suspense, isSVG, slotScopeIds, optimized); // force resolve - - suspense.resolve(true); - } else { - // switched to a 3rd branch - patch(null, newBranch, suspense.hiddenContainer, null, parentComponent, suspense, isSVG, slotScopeIds, optimized); - - if (suspense.deps <= 0) { - suspense.resolve(); - } - } - } - } else { - if (activeBranch && isSameVNodeType(newBranch, activeBranch)) { - // root did not change, just normal patch - patch(activeBranch, newBranch, container, anchor, parentComponent, suspense, isSVG, slotScopeIds, optimized); - setActiveBranch(suspense, newBranch); - } else { - // root node toggled - // invoke @pending event - triggerEvent(n2, 'onPending'); // mount pending branch in off-dom container - - suspense.pendingBranch = newBranch; - suspense.pendingId++; - patch(null, newBranch, suspense.hiddenContainer, null, parentComponent, suspense, isSVG, slotScopeIds, optimized); - - if (suspense.deps <= 0) { - // incoming branch has no async deps, resolve now. - 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, parent, parentComponent, container, hiddenContainer, anchor, isSVG, 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 timeout = toNumber(vnode.props && vnode.props.timeout); - var suspense = { - vnode, - parent, - parentComponent, - isSVG, - container, - hiddenContainer, - anchor, - deps: 0, - pendingId: 0, - timeout: typeof timeout === 'number' ? timeout : -1, - activeBranch: null, - pendingBranch: null, - isInFallback: true, - isHydrating, - isUnmounted: false, - effects: [], - - resolve() { - var resume = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : false; - var { - vnode, - activeBranch, - pendingBranch, - pendingId, - effects, - parentComponent, - container - } = suspense; - - if (suspense.isHydrating) { - suspense.isHydrating = false; - } else if (!resume) { - var delayEnter = activeBranch && pendingBranch.transition && pendingBranch.transition.mode === 'out-in'; - - if (delayEnter) { - activeBranch.transition.afterLeave = () => { - if (pendingId === suspense.pendingId) { - move(pendingBranch, container, _anchor, 0 - /* ENTER */ - ); - } - }; - } // this is initial anchor on mount - - - var { - anchor: _anchor - } = suspense; // unmount current active tree - - if (activeBranch) { - // if the fallback tree was mounted, it may have been moved - // as part of a parent suspense. get the latest anchor for insertion - _anchor = next(activeBranch); - unmount(activeBranch, parentComponent, suspense, true); - } - - if (!delayEnter) { - // move content from off-dom container to actual container - move(pendingBranch, container, _anchor, 0 - /* ENTER */ - ); - } - } - - setActiveBranch(suspense, pendingBranch); - suspense.pendingBranch = null; - suspense.isInFallback = false; // flush buffered effects - // check if there is a pending parent suspense - - var parent = suspense.parent; - var hasUnresolvedAncestor = false; - - while (parent) { - if (parent.pendingBranch) { - // found a pending parent suspense, merge buffered post jobs - // into that parent - parent.effects.push(...effects); - hasUnresolvedAncestor = true; - break; - } - - parent = parent.parent; - } // no pending parent suspense, flush all jobs - - - if (!hasUnresolvedAncestor) { - queuePostFlushCb(effects); - } - - suspense.effects = []; // invoke @resolve event - - triggerEvent(vnode, 'onResolve'); - }, - - fallback(fallbackVNode) { - if (!suspense.pendingBranch) { - return; - } - - var { - vnode, - activeBranch, - parentComponent, - container, - isSVG - } = suspense; // invoke @fallback event - - triggerEvent(vnode, 'onFallback'); - var anchor = next(activeBranch); - - var mountFallback = () => { - if (!suspense.isInFallback) { - return; - } // mount the fallback tree - - - patch(null, fallbackVNode, container, anchor, parentComponent, null, // fallback tree will not have suspense context - isSVG, slotScopeIds, optimized); - setActiveBranch(suspense, fallbackVNode); - }; - - var delayEnter = fallbackVNode.transition && fallbackVNode.transition.mode === 'out-in'; - - if (delayEnter) { - activeBranch.transition.afterLeave = mountFallback; - } - - suspense.isInFallback = true; // unmount current active branch - - unmount(activeBranch, parentComponent, null, // no suspense so unmount hooks fire now - true // shouldRemove - ); - - if (!delayEnter) { - mountFallback(); - } - }, - - move(container, anchor, type) { - suspense.activeBranch && move(suspense.activeBranch, container, anchor, type); - suspense.container = container; - }, - - 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 - /* SETUP_FUNCTION */ - ); - }).then(asyncSetupResult => { - // retry when the setup() promise resolves. - // component may have been unmounted before resolve. - if (instance.isUnmounted || suspense.isUnmounted || suspense.pendingId !== instance.suspenseId) { - return; - } // retry from this component - - - instance.asyncResolved = true; - var { - vnode - } = instance; - handleSetupResult(instance, asyncSetupResult, false); - - if (hydratedEl) { - // vnode may have been replaced if an update happened before the - // async dep is resolved. - vnode.el = hydratedEl; - } - - var placeholder = !hydratedEl && instance.subTree.el; - setupRenderEffect(instance, vnode, // 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, isSVG, optimized); - - if (placeholder) { - remove(placeholder); - } - - updateHOCHostEl(instance, vnode.el); // only decrease deps count if suspense is not already resolved - - if (isInPendingSuspense && --suspense.deps === 0) { - suspense.resolve(); - } - }); - }, - - unmount(parentSuspense, doRemove) { - suspense.isUnmounted = true; - - if (suspense.activeBranch) { - unmount(suspense.activeBranch, parentComponent, parentSuspense, doRemove); - } - - if (suspense.pendingBranch) { - unmount(suspense.pendingBranch, parentComponent, parentSuspense, doRemove); - } - } - - }; - return suspense; - } - - function hydrateSuspense(node, vnode, parentComponent, parentSuspense, isSVG, slotScopeIds, optimized, rendererInternals, hydrateNode) { - /* eslint-disable no-restricted-globals */ - var suspense = vnode.suspense = createSuspenseBoundary(vnode, parentSuspense, parentComponent, node.parentNode, document.createElement('div'), null, isSVG, slotScopeIds, optimized, rendererInternals, true - /* hydrating */ - ); // there are two possible scenarios for server-rendered suspense: - // - success: ssr content should be fully resolved - // - failure: ssr content should be the fallback branch. - // however, on the client we don't really know if it has failed or not - // attempt to hydrate the DOM assuming it has succeeded, but we still - // need to construct a suspense boundary first - - var result = hydrateNode(node, suspense.pendingBranch = vnode.ssContent, parentComponent, suspense, slotScopeIds, optimized); - - if (suspense.deps === 0) { - suspense.resolve(); - } - - return result; - /* eslint-enable no-restricted-globals */ - } - - function normalizeSuspenseChildren(vnode) { - var { - shapeFlag, - children - } = vnode; - var isSlotChildren = shapeFlag & 32 - /* SLOTS_CHILDREN */ - ; - 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) { - // disableTracking: false - // allow block tracking for compiled slots - // (see ./componentRenderContext.ts) - 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 = vnode.el = branch.el; // in case suspense is the root node of a component, - // recursively update the HOC el - - if (parentComponent && parentComponent.subTree === vnode) { - parentComponent.vnode.el = el; - updateHOCHostEl(parentComponent, el); - } - } - - function provide(key, value) { - if (!currentInstance) ;else { - var provides = currentInstance.provides; // by default an instance inherits its parent's provides object - // but when it needs to provide values of its own, it creates its - // own provides object using parent provides object as prototype. - // this way in `inject` we can simply look up injections from direct - // parent and let the prototype chain do the work. - - var parentProvides = currentInstance.parent && currentInstance.parent.provides; - - if (parentProvides === provides) { - provides = currentInstance.provides = Object.create(parentProvides); - } // TS doesn't allow symbol as index type - - - provides[key] = value; - } - } - - function inject(key, defaultValue) { - var treatDefaultAsFactory = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : false; - // fallback to `currentRenderingInstance` so that this can be called in - // a functional component - var instance = currentInstance || currentRenderingInstance; - - if (instance) { - // #2400 - // to support `app.use` plugins, - // fallback to appContext's `provides` if the intance is at root - var provides = instance.parent == null ? instance.vnode.appContext && instance.vnode.appContext.provides : instance.parent.provides; - - if (provides && key in provides) { - // TS doesn't allow symbol as index type - return provides[key]; - } else if (arguments.length > 1) { - return treatDefaultAsFactory && isFunction(defaultValue) ? defaultValue.call(instance.proxy) : defaultValue; - } else ; - } - } - - function useTransitionState() { - var state = { - isMounted: false, - isLeaving: false, - isUnmounting: false, - leavingVNodes: new Map() - }; - onMounted(() => { - state.isMounted = true; - }); - onBeforeUnmount(() => { - state.isUnmounting = true; - }); - return state; - } - - var TransitionHookValidator = [Function, Array]; - var BaseTransitionImpl = { - name: "BaseTransition", - props: { - 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 - }, - - setup(props, _ref6) { - var { - slots - } = _ref6; - var instance = getCurrentInstance(); - var state = useTransitionState(); - var prevTransitionKey; - return () => { - var children = slots.default && getTransitionRawChildren(slots.default(), true); - - if (!children || !children.length) { - return; - } // there's no need to track reactivity for these props so use the raw - // props for a bit better perf - - - var rawProps = toRaw(props); - var { - mode - } = rawProps; // at this point children has a guaranteed length of 1. - - var child = children[0]; - - if (state.isLeaving) { - return emptyPlaceholder(child); - } // in the case of , we need to - // compare the type of the kept-alive children. - - - 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); - var transitionKeyChanged = false; - var { - getTransitionKey - } = innerChild.type; - - if (getTransitionKey) { - var key = getTransitionKey(); - - if (prevTransitionKey === undefined) { - prevTransitionKey = key; - } else if (key !== prevTransitionKey) { - prevTransitionKey = key; - transitionKeyChanged = true; - } - } // handle mode - - - if (oldInnerChild && oldInnerChild.type !== Comment && (!isSameVNodeType(innerChild, oldInnerChild) || transitionKeyChanged)) { - var leavingHooks = resolveTransitionHooks(oldInnerChild, rawProps, state, instance); // update old tree's hooks in case of dynamic transition - - setTransitionHooks(oldInnerChild, leavingHooks); // switching between different views - - if (mode === 'out-in') { - state.isLeaving = true; // return placeholder node and queue update when leave finishes - - leavingHooks.afterLeave = () => { - state.isLeaving = false; - 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; // early removal callback - - el._leaveCb = () => { - earlyRemove(); - el._leaveCb = undefined; - delete enterHooks.delayedLeave; - }; - - enterHooks.delayedLeave = delayedLeave; - }; - } - } - - return child; - }; - } - - }; // export the public type for h/tsx inference - // also to avoid inline import() in generated d.ts files - - var BaseTransition = BaseTransitionImpl; - - function getLeavingNodesForType(state, vnode) { - var { - leavingVNodes - } = state; - var leavingVNodesCache = leavingVNodes.get(vnode.type); - - if (!leavingVNodesCache) { - leavingVNodesCache = Object.create(null); - leavingVNodes.set(vnode.type, leavingVNodesCache); - } - - return leavingVNodesCache; - } // The transition hooks are attached to the vnode as vnode.transition - // and will be called at appropriate timing in the renderer. - - - 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 - /* TRANSITION_HOOK */ - , args); - }; - - var hooks = { - mode, - persisted, - - beforeEnter(el) { - var hook = onBeforeEnter; - - if (!state.isMounted) { - if (appear) { - hook = onBeforeAppear || onBeforeEnter; - } else { - return; - } - } // for same element (v-show) - - - if (el._leaveCb) { - el._leaveCb(true - /* cancelled */ - ); - } // for toggled element with same key (v-if) - - - var leavingVNode = leavingVNodesCache[key]; - - if (leavingVNode && isSameVNodeType(vnode, leavingVNode) && leavingVNode.el._leaveCb) { - // force early removal (not cancelled) - leavingVNode.el._leaveCb(); - } - - 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._enterCb = cancelled => { - if (called) return; - called = true; - - if (cancelled) { - callHook(cancelHook, [el]); - } else { - callHook(afterHook, [el]); - } - - if (hooks.delayedLeave) { - hooks.delayedLeave(); - } - - el._enterCb = undefined; - }; - - if (hook) { - hook(el, done); - - if (hook.length <= 1) { - done(); - } - } else { - done(); - } - }, - - leave(el, remove) { - var key = String(vnode.key); - - if (el._enterCb) { - el._enterCb(true - /* cancelled */ - ); - } - - if (state.isUnmounting) { - return remove(); - } - - callHook(onBeforeLeave, [el]); - var called = false; - - var done = el._leaveCb = cancelled => { - if (called) return; - called = true; - remove(); - - if (cancelled) { - callHook(onLeaveCancelled, [el]); - } else { - callHook(onAfterLeave, [el]); - } - - el._leaveCb = undefined; - - if (leavingVNodesCache[key] === vnode) { - delete leavingVNodesCache[key]; - } - }; - - leavingVNodesCache[key] = vnode; - - if (onLeave) { - onLeave(el, done); - - if (onLeave.length <= 1) { - done(); - } - } else { - done(); - } - }, - - clone(vnode) { - return resolveTransitionHooks(vnode, props, state, instance); - } - - }; - return hooks; - } // the placeholder really only handles one special case: KeepAlive - // in the case of a KeepAlive in a leave phase we need to return a KeepAlive - // placeholder with empty content to avoid the KeepAlive instance from being - // unmounted. - - - function emptyPlaceholder(vnode) { - if (isKeepAlive(vnode)) { - vnode = cloneVNode(vnode); - vnode.children = null; - return vnode; - } - } - - function getKeepAliveChild(vnode) { - return isKeepAlive(vnode) ? vnode.children ? vnode.children[0] : undefined : vnode; - } - - function setTransitionHooks(vnode, hooks) { - if (vnode.shapeFlag & 6 - /* COMPONENT */ - && vnode.component) { - setTransitionHooks(vnode.component.subTree, hooks); - } else if (vnode.shapeFlag & 128 - /* SUSPENSE */ - ) { - 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 ret = []; - var keyedFragmentCount = 0; - - for (var i = 0; i < children.length; i++) { - var child = children[i]; // handle fragment children case, e.g. v-for - - if (child.type === Fragment) { - if (child.patchFlag & 128 - /* KEYED_FRAGMENT */ - ) keyedFragmentCount++; - ret = ret.concat(getTransitionRawChildren(child.children, keepComment)); - } // comment placeholders should be skipped, e.g. v-if - else if (keepComment || child.type !== Comment) { - ret.push(child); - } - } // #1126 if a transition children list contains multiple sub fragments, these - // fragments will be merged into a flat children array. Since each v-for - // fragment may contain different static bindings inside, we need to de-op - // these children to force full diffs to ensure correct behavior. - - - if (keyedFragmentCount > 1) { - for (var _i = 0; _i < ret.length; _i++) { - ret[_i].patchFlag = -2 - /* BAIL */ - ; - } - } - - return ret; - } // implementation, close to no-op - - - function defineComponent(options) { - return isFunction(options) ? { - setup: options, - name: options.name - } : options; - } - - var isAsyncWrapper = i => !!i.type.__asyncLoader; - - 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; - } // interop module default - - - 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; // already resolved - - if (resolvedComp) { - return () => createInnerComp(resolvedComp, instance); - } - - var onError = err => { - pendingRequest = null; - handleError(err, instance, 13 - /* ASYNC_COMPONENT_LOADER */ - , !errorComponent - /* do not throw in dev if user provided error component */ - ); - }; // suspense-controlled or SSR. - - - 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)) { - // parent is keep-alive, force update so the loaded component's - // name is taken into account - 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, _ref7) { - var { - vnode: { - ref, - props, - children - } - } = _ref7; - var vnode = createVNode(comp, props, children); // ensure inner component inherits the async wrapper's ref owner - - vnode.ref = ref; - 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, _ref8) { - var { - slots - } = _ref8; - var instance = getCurrentInstance(); // KeepAlive communicates with the instantiated renderer via the - // ctx where the renderer passes in its internals, - // and the KeepAlive instance exposes activate/deactivate implementations. - // The whole point of this is to avoid importing KeepAlive directly in the - // renderer to facilitate tree-shaking. - - var sharedContext = instance.ctx; // if the internal renderer is not registered, it indicates that this is server-side rendering, - // for KeepAlive, we just need to render its children - - if (!sharedContext.renderer) { - return slots.default; - } - - var cache = new Map(); - var keys = new Set(); - var current = null; - - if (__VUE_PROD_DEVTOOLS__) { - instance.__v_cache = cache; - } - - var parentSuspense = instance.suspense; - var { - renderer: { - p: patch, - m: move, - um: _unmount, - o: { - createElement - } - } - } = sharedContext; - var storageContainer = createElement('div'); - - sharedContext.activate = (vnode, container, anchor, isSVG, optimized) => { - var instance = vnode.component; - move(vnode, container, anchor, 0 - /* ENTER */ - , parentSuspense); // in case props have changed - - patch(instance.vnode, vnode, container, anchor, instance, parentSuspense, isSVG, vnode.slotScopeIds, optimized); - queuePostRenderEffect(() => { - instance.isDeactivated = false; - - if (instance.a) { - invokeArrayFns(instance.a); - } - - var vnodeHook = vnode.props && vnode.props.onVnodeMounted; - - if (vnodeHook) { - invokeVNodeHook(vnodeHook, instance.parent, vnode); - } - }, parentSuspense); - - if (__VUE_PROD_DEVTOOLS__) { - // Update components tree - devtoolsComponentAdded(instance); - } - }; - - sharedContext.deactivate = vnode => { - var instance = vnode.component; - move(vnode, storageContainer, null, 1 - /* LEAVE */ - , parentSuspense); - queuePostRenderEffect(() => { - if (instance.da) { - invokeArrayFns(instance.da); - } - - var vnodeHook = vnode.props && vnode.props.onVnodeUnmounted; - - if (vnodeHook) { - invokeVNodeHook(vnodeHook, instance.parent, vnode); - } - - instance.isDeactivated = true; - }, parentSuspense); - - if (__VUE_PROD_DEVTOOLS__) { - // Update components tree - devtoolsComponentAdded(instance); - } - }; - - function unmount(vnode) { - // reset the shapeFlag so it can be properly unmounted - resetShapeFlag(vnode); - - _unmount(vnode, instance, parentSuspense); - } - - 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 || cached.type !== current.type) { - unmount(cached); - } else if (current) { - // current active instance should no longer be kept-alive. - // we can't unmount it now but it might be later, so reset its flag now. - resetShapeFlag(current); - } - - cache.delete(key); - keys.delete(key); - } // prune cache on include/exclude prop change - - - watch(() => [props.include, props.exclude], _ref9 => { - var [include, exclude] = _ref9; - include && pruneCache(name => matches(include, name)); - exclude && pruneCache(name => !matches(exclude, name)); - }, // prune post-render after `current` has been updated - { - flush: 'post', - deep: true - }); // cache sub tree after render - - var pendingCacheKey = null; - - var cacheSubtree = () => { - // fix #1621, the pendingCacheKey could be 0 - 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) { - // current instance will be unmounted as part of keep-alive's unmount - resetShapeFlag(vnode); // but invoke its deactivated hook here - - 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 - /* STATEFUL_COMPONENT */ - ) && !(rawVNode.shapeFlag & 128 - /* SUSPENSE */ - )) { - current = null; - return rawVNode; - } - - var vnode = getInnerChild(rawVNode); - var comp = vnode.type; // for async components, name check should be based in its loaded - // inner component if available - - 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); // clone vnode if it's reused because we are going to mutate it - - if (vnode.el) { - vnode = cloneVNode(vnode); - - if (rawVNode.shapeFlag & 128 - /* SUSPENSE */ - ) { - rawVNode.ssContent = vnode; - } - } // #1513 it's possible for the returned vnode to be cloned due to attr - // fallthrough or scopeId, so the vnode here may not be the final vnode - // that is mounted. Instead of caching it directly, we store the pending - // key and cache `instance.subTree` (the normalized vnode) in - // beforeMount/beforeUpdate hooks. - - - pendingCacheKey = key; - - if (cachedVNode) { - // copy over mounted state - vnode.el = cachedVNode.el; - vnode.component = cachedVNode.component; - - if (vnode.transition) { - // recursively update transition hooks on subTree - setTransitionHooks(vnode, vnode.transition); - } // avoid vnode being mounted as fresh - - - vnode.shapeFlag |= 512 - /* COMPONENT_KEPT_ALIVE */ - ; // make this key the freshest - - keys.delete(key); - keys.add(key); - } else { - keys.add(key); // prune oldest entry - - if (max && keys.size > parseInt(max, 10)) { - pruneCacheEntry(keys.values().next().value); - } - } // avoid vnode being unmounted - - - vnode.shapeFlag |= 256 - /* COMPONENT_SHOULD_KEEP_ALIVE */ - ; - current = vnode; - return rawVNode; - }; - } - - }; // export the public type for h/tsx inference - // also to avoid inline import() in generated d.ts files - - var KeepAlive = KeepAliveImpl; - - function matches(pattern, name) { - if (isArray(pattern)) { - return pattern.some(p => matches(p, name)); - } else if (isString(pattern)) { - return pattern.split(',').indexOf(name) > -1; - } else if (pattern.test) { - return pattern.test(name); - } - /* istanbul ignore next */ - - - return false; - } - - function onActivated(hook, target) { - registerKeepAliveHook(hook, "a" - /* ACTIVATED */ - , target); - } - - function onDeactivated(hook, target) { - registerKeepAliveHook(hook, "da" - /* DEACTIVATED */ - , target); - } - - function registerKeepAliveHook(hook, type) { - var target = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : currentInstance; - - // cache the deactivate branch check wrapper for injected hooks so the same - // hook can be properly deduped by the scheduler. "__wdc" stands for "with - // deactivation check". - var wrappedHook = hook.__wdc || (hook.__wdc = () => { - // only fire the hook if the target instance is NOT in a deactivated branch. - var current = target; - - while (current) { - if (current.isDeactivated) { - return; - } - - current = current.parent; - } - - return hook(); - }); - - injectHook(type, wrappedHook, target); // In addition to registering it on the target instance, we walk up the parent - // chain and register it on all ancestor instances that are keep-alive roots. - // This avoids the need to walk the entire component tree when invoking these - // hooks, and more importantly, avoids the need to track child components in - // arrays. - - 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) { - // injectHook wraps the original for error handling, so make sure to remove - // the wrapped version. - var injected = injectHook(type, hook, keepAliveRoot, true - /* prepend */ - ); - onUnmounted(() => { - remove(keepAliveRoot[type], injected); - }, target); - } - - function resetShapeFlag(vnode) { - var shapeFlag = vnode.shapeFlag; - - if (shapeFlag & 256 - /* COMPONENT_SHOULD_KEEP_ALIVE */ - ) { - shapeFlag -= 256 - /* COMPONENT_SHOULD_KEEP_ALIVE */ - ; - } - - if (shapeFlag & 512 - /* COMPONENT_KEPT_ALIVE */ - ) { - shapeFlag -= 512 - /* COMPONENT_KEPT_ALIVE */ - ; - } - - vnode.shapeFlag = shapeFlag; - } - - function getInnerChild(vnode) { - return vnode.shapeFlag & 128 - /* SUSPENSE */ - ? 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) { - var hooks = target[type] || (target[type] = []); // cache the error handling wrapper for injected hooks so the same hook - // can be properly deduped by the scheduler. "__weh" stands for "with error - // handling". - - var wrappedHook = hook.__weh || (hook.__weh = function () { - if (target.isUnmounted) { - return; - } // disable tracking inside all lifecycle hooks - // since they can potentially be called inside effects. - - - pauseTracking(); // Set currentInstance during hook invocation. - // This assumes the hook does not synchronously trigger other hooks, which - // can only be false when the user does something really funky. - - setCurrentInstance(target); - - for (var _len5 = arguments.length, args = new Array(_len5), _key6 = 0; _key6 < _len5; _key6++) { - args[_key6] = arguments[_key6]; - } - - var res = callWithAsyncErrorHandling(hook, target, type, args); - unsetCurrentInstance(); - 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" - /* SERVER_PREFETCH */ - ) && injectHook(lifecycle, hook, target) - ); - }; - - var onBeforeMount = createHook("bm" - /* BEFORE_MOUNT */ - ); - var onMounted = createHook("m" - /* MOUNTED */ - ); - var onBeforeUpdate = createHook("bu" - /* BEFORE_UPDATE */ - ); - var onUpdated = createHook("u" - /* UPDATED */ - ); - var onBeforeUnmount = createHook("bum" - /* BEFORE_UNMOUNT */ - ); - var onUnmounted = createHook("um" - /* UNMOUNTED */ - ); - var onServerPrefetch = createHook("sp" - /* SERVER_PREFETCH */ - ); - var onRenderTriggered = createHook("rtg" - /* RENDER_TRIGGERED */ - ); - var onRenderTracked = createHook("rtc" - /* RENDER_TRACKED */ - ); - - function onErrorCaptured(hook) { - var target = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : currentInstance; - injectHook("ec" - /* ERROR_CAPTURED */ - , hook, target); - } - - var shouldCacheAccess = true; - - function applyOptions(instance) { - var options = resolveMergedOptions(instance); - var publicThis = instance.proxy; - var ctx = instance.ctx; // do not cache property access on public proxy during state initialization - - shouldCacheAccess = false; // call beforeCreate first before accessing other options since - // the hook may mutate resolved options (#2791) - - if (options.beforeCreate) { - callHook(options.beforeCreate, instance, "bc" - /* BEFORE_CREATE */ - ); - } - - 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; // options initialization order (to be consistent with Vue 2): - // - props (already done outside of this function) - // - inject - // - methods - // - data (deferred since it relies on `this` access) - // - computed - // - watch (deferred since it relies on `this` access) - - if (injectOptions) { - resolveInjections(injectOptions, ctx, checkDuplicateProperties, instance.appContext.config.unwrapInjectedRef); - } - - if (methods) { - for (var key in methods) { - var methodHandler = methods[key]; - - if (isFunction(methodHandler)) { - // In dev mode, we use the `createRenderContext` function to define - // methods to the proxy target, and those are read-only but - // reconfigurable, so it needs to be redefined here - { - ctx[key] = methodHandler.bind(publicThis); - } - } - } - } - - if (dataOptions) { - var data = dataOptions.call(publicThis, publicThis); - if (!isObject(data)) ;else { - instance.data = reactive(data); - } - } // state initialization complete at this point - start caching access - - - shouldCacheAccess = true; - - if (computedOptions) { - var _loop = function (_key7) { - var opt = computedOptions[_key7]; - 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, _key7, { - enumerable: true, - configurable: true, - get: () => c.value, - set: v => c.value = v - }); - }; - - for (var _key7 in computedOptions) { - _loop(_key7); - } - } - - if (watchOptions) { - for (var _key8 in watchOptions) { - createWatcher(watchOptions[_key8], ctx, publicThis, _key8); - } - } - - if (provideOptions) { - var provides = isFunction(provideOptions) ? provideOptions.call(publicThis) : provideOptions; - Reflect.ownKeys(provides).forEach(key => { - provide(key, provides[key]); - }); - } - - if (created) { - callHook(created, instance, "c" - /* CREATED */ - ); - } - - 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 = {}; - } - } // options that are handled when creating the instance but also need to be - // applied from mixins - - - if (render && instance.render === NOOP) { - instance.render = render; - } - - if (inheritAttrs != null) { - instance.inheritAttrs = inheritAttrs; - } // asset options. - - - if (components) instance.components = components; - if (directives) instance.directives = directives; - } - - function resolveInjections(injectOptions, ctx) { - var checkDuplicateProperties = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : NOOP; - var unwrapRef = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : false; - - if (isArray(injectOptions)) { - injectOptions = normalizeInject(injectOptions); - } - - var _loop2 = 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 - /* treat default function as factory */ - ); - } else { - injected = inject(opt.from || key); - } - } else { - injected = inject(opt); - } - - if (isRef(injected)) { - // TODO remove the check in 3.3 - if (unwrapRef) { - Object.defineProperty(ctx, key, { - enumerable: true, - configurable: true, - get: () => injected.value, - set: v => injected.value = v - }); - } else { - ctx[key] = injected; - } - } else { - ctx[key] = injected; - } - }; - - for (var key in injectOptions) { - _loop2(key); - } - } - - function callHook(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 ; - } - /** - * Resolve merged options and cache it on the component. - * This is done only once per-component since the merging does not involve - * instances. - */ - - - 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); - } - - 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: mergeObjectOptions, - emits: mergeObjectOptions, - // 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(extend(Object.create(null), to), from) : from; - } - - function mergeWatchOptions(to, from) { - if (!to) return from; - if (!from) return to; - var merged = extend(Object.create(null), to); - - for (var key in from) { - merged[key] = mergeAsArray(to[key], from[key]); - } - - return merged; - } - - 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 = Object.create(null); - setFullProps(instance, rawProps, props, attrs); // ensure all declared prop keys are present - - for (var key in instance.propsOptions[0]) { - if (!(key in props)) { - props[key] = undefined; - } - } - - if (isStateful) { - // stateful - instance.props = isSSR ? props : shallowReactive(props); - } else { - if (!instance.type.props) { - // functional w/ optional props, props === attrs - instance.props = attrs; - } else { - // functional w/ declared props - 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 - /* FULL_PROPS */ - )) { - if (patchFlag & 8 - /* PROPS */ - ) { - // Compiler-generated props & no keys change, just set the updated - // the props. - var propsToUpdate = instance.vnode.dynamicProps; - - for (var i = 0; i < propsToUpdate.length; i++) { - var key = propsToUpdate[i]; // PROPS flag guarantees rawProps to be non-null - - var value = rawProps[key]; - - if (options) { - // attr / props separation was done on init and will be consistent - // in this code path, so just check if attrs have it. - 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 - /* isAbsent */ - ); - } - } else { - if (value !== attrs[key]) { - attrs[key] = value; - hasAttrsChanged = true; - } - } - } - } - } else { - // full props update. - if (setFullProps(instance, rawProps, props, attrs)) { - hasAttrsChanged = true; - } // in case of dynamic props, check if we need to delete keys from - // the props object - - - var kebabKey; - - for (var _key9 in rawCurrentProps) { - if (!rawProps || // for camelCase - !hasOwn(rawProps, _key9) && ( // it's possible the original props was passed in as kebab-case - // and converted to camelCase (#955) - (kebabKey = hyphenate(_key9)) === _key9 || !hasOwn(rawProps, kebabKey))) { - if (options) { - if (rawPrevProps && ( // for camelCase - rawPrevProps[_key9] !== undefined || // for kebab-case - rawPrevProps[kebabKey] !== undefined)) { - props[_key9] = resolvePropValue(options, rawCurrentProps, _key9, undefined, instance, true - /* isAbsent */ - ); - } - } else { - delete props[_key9]; - } - } - } // in the case of functional component w/o props declaration, props and - // attrs point to the same object so it should already have been updated. - - - if (attrs !== rawCurrentProps) { - for (var _key10 in attrs) { - if (!rawProps || !hasOwn(rawProps, _key10)) { - delete attrs[_key10]; - hasAttrsChanged = true; - } - } - } - } // trigger updates for $attrs in case it's used in component slots - - - if (hasAttrsChanged) { - trigger(instance, "set" - /* 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) { - // key, ref are reserved and never passed down - if (isReservedProp(key)) { - continue; - } - - var value = rawProps[key]; // prop option names are camelized during normalization, so to support - // kebab -> camel conversion here we need to camelize the 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 _key11 = needCastKeys[i]; - props[_key11] = resolvePropValue(options, rawCurrentProps, _key11, castValues[_key11], instance, !hasOwn(castValues, _key11)); - } - } - - return hasAttrsChanged; - } - - function resolvePropValue(options, props, key, value, instance, isAbsent) { - var opt = options[key]; - - if (opt != null) { - var hasDefault = hasOwn(opt, 'default'); // default values - - if (hasDefault && value === undefined) { - var defaultValue = opt.default; - - if (opt.type !== Function && isFunction(defaultValue)) { - var { - propsDefaults - } = instance; - - if (key in propsDefaults) { - value = propsDefaults[key]; - } else { - setCurrentInstance(instance); - value = propsDefaults[key] = defaultValue.call(null, props); - unsetCurrentInstance(); - } - } else { - value = defaultValue; - } - } // boolean casting - - - 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 = []; // apply mixin/extends props - - var hasExtends = false; - - if (__VUE_OPTIONS_API__ && !isFunction(comp)) { - var extendProps = raw => { - hasExtends = true; - var [props, keys] = normalizePropsOptions(raw, 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) { - 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 - } : 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 the prop needs boolean casting or default value - - if (booleanIndex > -1 || hasOwn(prop, 'default')) { - needCastKeys.push(_normalizedKey); - } - } - } - } - } - - var res = [normalized, needCastKeys]; - cache.set(comp, res); - return res; - } - - function validatePropName(key) { - if (key[0] !== '$') { - return true; - } - - return false; - } // use function string name to check type constructors - // so that it works across vms / iframes. - - - function getType(ctor) { - var match = ctor && ctor.toString().match(/^\s*function (\w+)/); - return match ? match[1] : ctor === null ? 'null' : ''; - } - - 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) => { - var normalized = withCtx(function () { - 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 - /* SLOTS_CHILDREN */ - ) { - var type = children._; - - if (type) { - // users can get the shallow readonly version of the slots object through `this.$slots`, - // we should avoid the proxy object polluting the slots of the internal instance - instance.slots = toRaw(children); // make compiler marker non-enumerable - - 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 - /* SLOTS_CHILDREN */ - ) { - var type = children._; - - if (type) { - // compiled slots. - if (optimized && type === 1 - /* STABLE */ - ) { - // compiled AND stable. - // no need to update, and skip stale slots removal. - needDeletionCheck = false; - } else { - // compiled but dynamic (v-if/v-for on slots) - update slots, but skip - // normalization. - extend(slots, children); // #2893 - // when rendering the optimized slots by manually written render function, - // we need to delete the `slots._` flag if necessary to make subsequent updates reliable, - // i.e. let the `renderSlot` create the bailed Fragment - - if (!optimized && type === 1 - /* STABLE */ - ) { - delete slots._; - } - } - } else { - needDeletionCheck = !children.$stable; - normalizeObjectSlots(children, slots); - } - - deletionComparisonTarget = children; - } else if (children) { - // non slot object children (direct value) passed to a component - normalizeVNodeSlots(instance, children); - deletionComparisonTarget = { - default: 1 - }; - } // delete stale slots - - - if (needDeletionCheck) { - for (var key in slots) { - if (!isInternalKey(key) && !(key in deletionComparisonTarget)) { - delete slots[key]; - } - } - } - }; - /** - * Adds directives to a VNode. - */ - - - function withDirectives(vnode, directives) { - var internalInstance = currentRenderingInstance; - - if (internalInstance === null) { - return vnode; - } - - var instance = internalInstance.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 (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) { - // disable tracking inside all lifecycle hooks - // since they can potentially be called inside effects. - pauseTracking(); - callWithAsyncErrorHandling(hook, instance, 8 - /* DIRECTIVE_HOOK */ - , [vnode.el, binding, vnode, prevVNode]); - resetTracking(); - } - } - } - - function createAppContext() { - return { - app: null, - config: { - isNativeTag: NO, - performance: false, - globalProperties: {}, - optionMergeStrategies: {}, - errorHandler: undefined, - warnHandler: undefined, - compilerOptions: {} - }, - mixins: [], - components: {}, - directives: {}, - provides: Object.create(null), - optionsCache: new WeakMap(), - propsCache: new WeakMap(), - emitsCache: new WeakMap() - }; - } - - var uid = 0; - - function createAppAPI(render, hydrate) { - return function createApp(rootComponent) { - var rootProps = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : null; - - if (rootProps != null && !isObject(rootProps)) { - rootProps = null; - } - - var context = createAppContext(); - var installedPlugins = new Set(); - var isMounted = false; - var app = context.app = { - _uid: uid++, - _component: rootComponent, - _props: rootProps, - _container: null, - _context: context, - _instance: null, - version, - - get config() { - return context.config; - }, - - set config(v) {}, - - use(plugin) { - for (var _len6 = arguments.length, options = new Array(_len6 > 1 ? _len6 - 1 : 0), _key12 = 1; _key12 < _len6; _key12++) { - options[_key12 - 1] = arguments[_key12]; - } - - 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 (__VUE_OPTIONS_API__) { - 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, isSVG) { - if (!isMounted) { - var vnode = createVNode(rootComponent, rootProps); // store app context on the root VNode. - // this will be set on the root instance on initial mount. - - vnode.appContext = context; - - if (isHydrate && hydrate) { - hydrate(vnode, rootContainer); - } else { - render(vnode, rootContainer, isSVG); - } - - isMounted = true; - app._container = rootContainer; - rootContainer.__vue_app__ = app; - - if (__VUE_PROD_DEVTOOLS__) { - app._instance = vnode.component; - devtoolsInitApp(app, version); - } - - return getExposeProxy(vnode.component) || vnode.component.proxy; - } - }, - - unmount() { - if (isMounted) { - render(null, app._container); - - if (__VUE_PROD_DEVTOOLS__) { - app._instance = null; - devtoolsUnmountApp(app); - } - - delete app._container.__vue_app__; - } - }, - - provide(key, value) { - // TypeScript doesn't allow symbols as index type - // https://github.com/Microsoft/TypeScript/issues/24587 - context.provides[key] = value; - return app; - } - - }; - return app; - }; - } - /** - * Function for handling a template ref - */ - - - 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) { - // when mounting async components, nothing needs to be done, - // because the template ref is forwarded to inner component - return; - } - - var refValue = vnode.shapeFlag & 4 - /* STATEFUL_COMPONENT */ - ? 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; // dynamic ref changed. unset old ref - - 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 - /* FUNCTION_REF */ - , [value, refs]); - } else { - var _isString = isString(ref); - - var _isRef = isRef(ref); - - if (_isString || _isRef) { - var doSet = () => { - if (rawRef.f) { - var existing = _isString ? refs[ref] : ref.value; - - if (isUnmount) { - isArray(existing) && remove(existing, refValue); - } else { - if (!isArray(existing)) { - if (_isString) { - refs[ref] = [refValue]; - } 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)) { - 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 => /svg/.test(container.namespaceURI) && container.tagName !== 'foreignObject'; - - var isComment = node => node.nodeType === 8 - /* COMMENT */ - ; // Note: hydration is DOM-specific - // But we have to place it in core due to tight coupling with core - splitting - // it out creates a ton of unnecessary complexity. - // Hydration also depends on some renderer internal logic which needs to be - // passed in via arguments. - - - function createHydrationFunctions(rendererInternals) { - var { - mt: mountComponent, - p: patch, - o: { - patchProp, - nextSibling, - parentNode, - remove, - insert, - createComment - } - } = rendererInternals; - - var hydrate = (vnode, container) => { - if (!container.hasChildNodes()) { - patch(null, vnode, container); - flushPostFlushCbs(); - return; - } - - hasMismatch = false; - hydrateNode(container.firstChild, vnode, null, null, null); - flushPostFlushCbs(); - - if (hasMismatch && !false) { - // this error should show up in production - 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 - } = vnode; - var domType = node.nodeType; - vnode.el = node; - var nextNode = null; - - switch (type) { - case Text: - if (domType !== 3 - /* TEXT */ - ) { - nextNode = onMismatch(); - } else { - if (node.data !== vnode.children) { - hasMismatch = true; - node.data = vnode.children; - } - - nextNode = nextSibling(node); - } - - break; - - case Comment: - if (domType !== 8 - /* COMMENT */ - || isFragmentStart) { - nextNode = onMismatch(); - } else { - nextNode = nextSibling(node); - } - - break; - - case Static: - if (domType !== 1 - /* ELEMENT */ - ) { - nextNode = onMismatch(); - } else { - // determine anchor, adopt content - nextNode = node; // if the static vnode has its content stripped during build, - // adopt it from the server-rendered HTML. - - var needToAdoptContent = !vnode.children.length; - - for (var i = 0; i < vnode.staticCount; i++) { - if (needToAdoptContent) vnode.children += nextNode.outerHTML; - - if (i === vnode.staticCount - 1) { - vnode.anchor = nextNode; - } - - nextNode = nextSibling(nextNode); - } - - return nextNode; - } - - break; - - case Fragment: - if (!isFragmentStart) { - nextNode = onMismatch(); - } else { - nextNode = hydrateFragment(node, vnode, parentComponent, parentSuspense, slotScopeIds, optimized); - } - - break; - - default: - if (shapeFlag & 1 - /* ELEMENT */ - ) { - if (domType !== 1 - /* ELEMENT */ - || vnode.type.toLowerCase() !== node.tagName.toLowerCase()) { - nextNode = onMismatch(); - } else { - nextNode = hydrateElement(node, vnode, parentComponent, parentSuspense, slotScopeIds, optimized); - } - } else if (shapeFlag & 6 - /* COMPONENT */ - ) { - // when setting up the render effect, if the initial vnode already - // has .el set, the component will perform hydration instead of mount - // on its sub-tree. - vnode.slotScopeIds = slotScopeIds; - var container = parentNode(node); - mountComponent(vnode, container, null, parentComponent, parentSuspense, isSVGContainer(container), optimized); // component may be async, so in the case of fragments we cannot rely - // on component's rendered output to determine the end of the fragment - // instead, we do a lookahead to find the end anchor node. - - nextNode = isFragmentStart ? locateClosingAsyncAnchor(node) : nextSibling(node); // #3787 - // if component is async, it may get moved / unmounted before its - // inner component is loaded, so we need to give it a placeholder - // vnode that matches its adopted DOM. - - 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 - /* TELEPORT */ - ) { - if (domType !== 8 - /* COMMENT */ - ) { - nextNode = onMismatch(); - } else { - nextNode = vnode.type.hydrate(node, vnode, parentComponent, parentSuspense, slotScopeIds, optimized, rendererInternals, hydrateChildren); - } - } else if (shapeFlag & 128 - /* SUSPENSE */ - ) { - nextNode = vnode.type.hydrate(node, vnode, parentComponent, parentSuspense, isSVGContainer(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 - } = vnode; // #4006 for form elements with non-string v-model value bindings - // e.g.