/** * @vue/server-renderer v3.4.27 * (c) 2018-present Yuxi (Evan) You and Vue contributors * @license MIT */ /*! #__NO_SIDE_EFFECTS__ */ // @__NO_SIDE_EFFECTS__ function makeMap(str, expectsLowerCase) { const set = new Set(str.split(',')) return val => set.has(val) } const EMPTY_OBJ = Object.freeze({}) const EMPTY_ARR = Object.freeze([]) function NOOP() { } const NO = () => false function isOn(key) { return key.charCodeAt(0) === 111 && key.charCodeAt(1) === 110 // uppercase letter && (key.charCodeAt(2) > 122 || key.charCodeAt(2) < 97) } const isModelListener = key => key.startsWith('onUpdate:') const extend = Object.assign function remove(arr, el) { const i = arr.indexOf(el) if (i > -1) arr.splice(i, 1) } const hasOwnProperty$1 = Object.prototype.hasOwnProperty const hasOwn = (val, key) => hasOwnProperty$1.call(val, key) const isArray = Array.isArray const isMap = val => toTypeString(val) === '[object Map]' const isSet = val => toTypeString(val) === '[object Set]' const isDate = val => toTypeString(val) === '[object Date]' const isFunction = val => typeof val === 'function' const isString = val => typeof val === 'string' const isSymbol = val => typeof val === 'symbol' const isObject = val => val !== null && typeof val === 'object' function isPromise(val) { return (isObject(val) || isFunction(val)) && isFunction(val.then) && isFunction(val.catch) } const objectToString = Object.prototype.toString const toTypeString = value => objectToString.call(value) function toRawType(value) { return toTypeString(value).slice(8, -1) } const isPlainObject = val => toTypeString(val) === '[object Object]' const isIntegerKey = key => isString(key) && key !== 'NaN' && key[0] !== '-' && `${Number.parseInt(key, 10)}` === key const 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', ) const isBuiltInDirective = /* @__PURE__ */ makeMap( 'bind,cloak,else-if,else,for,html,if,model,on,once,pre,show,slot,text,memo', ) function cacheStringFunction(fn) { const cache = /* @__PURE__ */ Object.create(null) return (str) => { const hit = cache[str] return hit || (cache[str] = fn(str)) } } const camelizeRE = /-(\w)/g const camelize = cacheStringFunction((str) => { return str.replace(camelizeRE, (_, c) => c ? c.toUpperCase() : '') }) const hyphenateRE = /\B([A-Z])/g const hyphenate = cacheStringFunction( str => str.replace(hyphenateRE, '-$1').toLowerCase(), ) const capitalize = cacheStringFunction((str) => { return str.charAt(0).toUpperCase() + str.slice(1) }) const toHandlerKey = cacheStringFunction((str) => { const s = str ? `on${capitalize(str)}` : `` return s }) const hasChanged = (value, oldValue) => !Object.is(value, oldValue) function invokeArrayFns(fns, ...arg) { for (let i = 0; i < fns.length; i++) fns[i](...arg) } function def(obj, key, value, writable = false) { Object.defineProperty(obj, key, { configurable: true, enumerable: false, writable, value, }) } function looseToNumber(val) { const n = Number.parseFloat(val) return isNaN(n) ? val : n } let _globalThis function getGlobalThis() { return _globalThis || (_globalThis = typeof globalThis !== 'undefined' ? globalThis : typeof self !== 'undefined' ? self : typeof window !== 'undefined' ? window : typeof global !== 'undefined' ? global : {}) } function normalizeStyle(value) { if (isArray(value)) { const res = {} for (let i = 0; i < value.length; i++) { const item = value[i] const normalized = isString(item) ? parseStringStyle(item) : normalizeStyle(item) if (normalized) { for (const key in normalized) res[key] = normalized[key] } } return res } else if (isString(value) || isObject(value)) { return value } } const listDelimiterRE = /;(?![^(]*\))/g const propertyDelimiterRE = /:([^]+)/ const styleCommentRE = /\/\*[^]*?\*\//g function parseStringStyle(cssText) { const ret = {} cssText.replace(styleCommentRE, '').split(listDelimiterRE).forEach((item) => { if (item) { const tmp = item.split(propertyDelimiterRE) tmp.length > 1 && (ret[tmp[0].trim()] = tmp[1].trim()) } }) return ret } function stringifyStyle(styles) { let ret = '' if (!styles || isString(styles)) return ret for (const key in styles) { const value = styles[key] if (isString(value) || typeof value === 'number') { const normalizedKey = key.startsWith(`--`) ? key : hyphenate(key) ret += `${normalizedKey}:${value};` } } return ret } function normalizeClass(value) { let res = '' if (isString(value)) { res = value } else if (isArray(value)) { for (let i = 0; i < value.length; i++) { const normalized = normalizeClass(value[i]) if (normalized) res += `${normalized} ` } } else if (isObject(value)) { for (const name in value) { if (value[name]) res += `${name} ` } } return res.trim() } const HTML_TAGS = 'html,body,base,head,link,meta,style,title,address,article,aside,footer,header,hgroup,h1,h2,h3,h4,h5,h6,nav,section,div,dd,dl,dt,figcaption,figure,picture,hr,img,li,main,ol,p,pre,ul,a,b,abbr,bdi,bdo,br,cite,code,data,dfn,em,i,kbd,mark,q,rp,rt,ruby,s,samp,small,span,strong,sub,sup,time,u,var,wbr,area,audio,map,track,video,embed,object,param,source,canvas,script,noscript,del,ins,caption,col,colgroup,table,thead,tbody,td,th,tr,button,datalist,fieldset,form,input,label,legend,meter,optgroup,option,output,progress,select,textarea,details,dialog,menu,summary,template,blockquote,iframe,tfoot' const SVG_TAGS = 'svg,animate,animateMotion,animateTransform,circle,clipPath,color-profile,defs,desc,discard,ellipse,feBlend,feColorMatrix,feComponentTransfer,feComposite,feConvolveMatrix,feDiffuseLighting,feDisplacementMap,feDistantLight,feDropShadow,feFlood,feFuncA,feFuncB,feFuncG,feFuncR,feGaussianBlur,feImage,feMerge,feMergeNode,feMorphology,feOffset,fePointLight,feSpecularLighting,feSpotLight,feTile,feTurbulence,filter,foreignObject,g,hatch,hatchpath,image,line,linearGradient,marker,mask,mesh,meshgradient,meshpatch,meshrow,metadata,mpath,path,pattern,polygon,polyline,radialGradient,rect,set,solidcolor,stop,switch,symbol,text,textPath,title,tspan,unknown,use,view' const MATH_TAGS = 'annotation,annotation-xml,maction,maligngroup,malignmark,math,menclose,merror,mfenced,mfrac,mfraction,mglyph,mi,mlabeledtr,mlongdiv,mmultiscripts,mn,mo,mover,mpadded,mphantom,mprescripts,mroot,mrow,ms,mscarries,mscarry,msgroup,msline,mspace,msqrt,msrow,mstack,mstyle,msub,msubsup,msup,mtable,mtd,mtext,mtr,munder,munderover,none,semantics' const VOID_TAGS = 'area,base,br,col,embed,hr,img,input,link,meta,param,source,track,wbr' const isHTMLTag = /* @__PURE__ */ makeMap(HTML_TAGS) const isSVGTag = /* @__PURE__ */ makeMap(SVG_TAGS) const isMathMLTag = /* @__PURE__ */ makeMap(MATH_TAGS) const isVoidTag = /* @__PURE__ */ makeMap(VOID_TAGS) const specialBooleanAttrs = `itemscope,allowfullscreen,formnovalidate,ismap,nomodule,novalidate,readonly` const isSpecialBooleanAttr = /* @__PURE__ */ makeMap(specialBooleanAttrs) const isBooleanAttr = /* @__PURE__ */ makeMap( `${specialBooleanAttrs},async,autofocus,autoplay,controls,default,defer,disabled,hidden,inert,loop,open,required,reversed,scoped,seamless,checked,muted,multiple,selected`, ) function includeBooleanAttr(value) { return !!value || value === '' } const unsafeAttrCharRE = /[>/="'\u0009\u000A\u000C\u0020]/ const attrValidationCache = {} function isSSRSafeAttrName(name) { if (attrValidationCache.hasOwnProperty(name)) return attrValidationCache[name] const isUnsafe = unsafeAttrCharRE.test(name) if (isUnsafe) console.error(`unsafe attribute name: ${name}`) return attrValidationCache[name] = !isUnsafe } const propsToAttrMap = { acceptCharset: 'accept-charset', className: 'class', htmlFor: 'for', httpEquiv: 'http-equiv', } function isRenderableAttrValue(value) { if (value == null) return false const type = typeof value return type === 'string' || type === 'number' || type === 'boolean' } const escapeRE = /["'&<>]/ function escapeHtml(string) { const str = `${string}` const match = escapeRE.exec(str) if (!match) return str let html = '' let escaped let index let lastIndex = 0 for (index = match.index; index < str.length; index++) { switch (str.charCodeAt(index)) { case 34: escaped = '"' break case 38: escaped = '&' break case 39: escaped = ''' break case 60: escaped = '<' break case 62: escaped = '>' break default: continue } if (lastIndex !== index) html += str.slice(lastIndex, index) lastIndex = index + 1 html += escaped } return lastIndex !== index ? html + str.slice(lastIndex, index) : html } const commentStripRE = /^-?>||--!>| looseEqual(item, val)) } function toDisplayString(val) { return isString(val) ? val : val == null ? '' : isArray(val) || isObject(val) && (val.toString === objectToString || !isFunction(val.toString)) ? JSON.stringify(val, replacer, 2) : String(val) } function replacer(_key, val) { if (val && val.__v_isRef) { return replacer(_key, val.value) } else if (isMap(val)) { return { [`Map(${val.size})`]: [...val.entries()].reduce( (entries, [key, val2], i) => { entries[`${stringifySymbol(key, i)} =>`] = val2 return entries }, {}, ), } } else if (isSet(val)) { return { [`Set(${val.size})`]: [...val.values()].map(v => stringifySymbol(v)), } } else if (isSymbol(val)) { return stringifySymbol(val) } else if (isObject(val) && !isArray(val) && !isPlainObject(val)) { return String(val) } return val } function stringifySymbol(v, i = '') { let _a return ( // Symbol.description in es2019+ so we need to cast here to pass // the lib: es2016 check isSymbol(v) ? `Symbol(${(_a = v.description) != null ? _a : i})` : v ) } function warn$2(msg, ...args) { console.warn(`[Vue warn] ${msg}`, ...args) } let activeEffectScope class EffectScope { constructor(detached = false) { this.detached = detached /** * @internal */ this._active = true /** * @internal */ this.effects = [] /** * @internal */ this.cleanups = [] this.parent = activeEffectScope if (!detached && activeEffectScope) { this.index = (activeEffectScope.scopes || (activeEffectScope.scopes = [])).push( this, ) - 1 } } get active() { return this._active } run(fn) { if (this._active) { const currentEffectScope = activeEffectScope try { activeEffectScope = this return fn() } finally { activeEffectScope = currentEffectScope } } else { warn$2(`cannot run an inactive effect scope.`) } } /** * This should only be called on non-detached scopes * @internal */ on() { activeEffectScope = this } /** * This should only be called on non-detached scopes * @internal */ off() { activeEffectScope = this.parent } stop(fromParent) { if (this._active) { let i, l for (i = 0, l = this.effects.length; i < l; i++) this.effects[i].stop() for (i = 0, l = this.cleanups.length; i < l; i++) this.cleanups[i]() if (this.scopes) { for (i = 0, l = this.scopes.length; i < l; i++) this.scopes[i].stop(true) } if (!this.detached && this.parent && !fromParent) { const last = this.parent.scopes.pop() if (last && last !== this) { this.parent.scopes[this.index] = last last.index = this.index } } this.parent = void 0 this._active = false } } } function recordEffectScope(effect, scope = activeEffectScope) { if (scope && scope.active) scope.effects.push(effect) } function getCurrentScope() { return activeEffectScope } let activeEffect class ReactiveEffect { constructor(fn, trigger, scheduler, scope) { this.fn = fn this.trigger = trigger this.scheduler = scheduler this.active = true this.deps = [] /** * @internal */ this._dirtyLevel = 4 /** * @internal */ this._trackId = 0 /** * @internal */ this._runnings = 0 /** * @internal */ this._shouldSchedule = false /** * @internal */ this._depsLength = 0 recordEffectScope(this, scope) } get dirty() { if (this._dirtyLevel === 2 || this._dirtyLevel === 3) { this._dirtyLevel = 1 pauseTracking() for (let i = 0; i < this._depsLength; i++) { const dep = this.deps[i] if (dep.computed) { triggerComputed(dep.computed) if (this._dirtyLevel >= 4) break } } if (this._dirtyLevel === 1) this._dirtyLevel = 0 resetTracking() } return this._dirtyLevel >= 4 } set dirty(v) { this._dirtyLevel = v ? 4 : 0 } run() { this._dirtyLevel = 0 if (!this.active) return this.fn() const lastShouldTrack = shouldTrack const lastEffect = activeEffect try { shouldTrack = true activeEffect = this this._runnings++ preCleanupEffect(this) return this.fn() } finally { postCleanupEffect(this) this._runnings-- activeEffect = lastEffect shouldTrack = lastShouldTrack } } stop() { if (this.active) { preCleanupEffect(this) postCleanupEffect(this) this.onStop && this.onStop() this.active = false } } } function triggerComputed(computed) { return computed.value } function preCleanupEffect(effect2) { effect2._trackId++ effect2._depsLength = 0 } function postCleanupEffect(effect2) { if (effect2.deps.length > effect2._depsLength) { for (let i = effect2._depsLength; i < effect2.deps.length; i++) cleanupDepEffect(effect2.deps[i], effect2) effect2.deps.length = effect2._depsLength } } function cleanupDepEffect(dep, effect2) { const trackId = dep.get(effect2) if (trackId !== void 0 && effect2._trackId !== trackId) { dep.delete(effect2) if (dep.size === 0) dep.cleanup() } } let shouldTrack = true let pauseScheduleStack = 0 const trackStack = [] function pauseTracking() { trackStack.push(shouldTrack) shouldTrack = false } function resetTracking() { const last = trackStack.pop() shouldTrack = last === void 0 ? true : last } function pauseScheduling() { pauseScheduleStack++ } function resetScheduling() { pauseScheduleStack-- while (!pauseScheduleStack && queueEffectSchedulers.length) queueEffectSchedulers.shift()() } function trackEffect(effect2, dep, debuggerEventExtraInfo) { let _a if (dep.get(effect2) !== effect2._trackId) { dep.set(effect2, effect2._trackId) const oldDep = effect2.deps[effect2._depsLength] if (oldDep !== dep) { if (oldDep) cleanupDepEffect(oldDep, effect2) effect2.deps[effect2._depsLength++] = dep } else { effect2._depsLength++ } { (_a = effect2.onTrack) == null ? void 0 : _a.call(effect2, extend({ effect: effect2 }, debuggerEventExtraInfo)) } } } const queueEffectSchedulers = [] function triggerEffects(dep, dirtyLevel, debuggerEventExtraInfo) { let _a pauseScheduling() for (const effect2 of dep.keys()) { let tracking if (effect2._dirtyLevel < dirtyLevel && (tracking != null ? tracking : tracking = dep.get(effect2) === effect2._trackId)) { effect2._shouldSchedule || (effect2._shouldSchedule = effect2._dirtyLevel === 0) effect2._dirtyLevel = dirtyLevel } if (effect2._shouldSchedule && (tracking != null ? tracking : tracking = dep.get(effect2) === effect2._trackId)) { { (_a = effect2.onTrigger) == null ? void 0 : _a.call(effect2, extend({ effect: effect2 }, debuggerEventExtraInfo)) } effect2.trigger() if ((!effect2._runnings || effect2.allowRecurse) && effect2._dirtyLevel !== 2) { effect2._shouldSchedule = false if (effect2.scheduler) queueEffectSchedulers.push(effect2.scheduler) } } } resetScheduling() } function createDep(cleanup, computed) { const dep = /* @__PURE__ */ new Map() dep.cleanup = cleanup dep.computed = computed return dep } const targetMap = /* @__PURE__ */ new WeakMap() const ITERATE_KEY = Symbol('iterate') const MAP_KEY_ITERATE_KEY = Symbol('Map key iterate') function track(target, type, key) { if (shouldTrack && activeEffect) { let depsMap = targetMap.get(target) if (!depsMap) targetMap.set(target, depsMap = /* @__PURE__ */ new Map()) let dep = depsMap.get(key) if (!dep) depsMap.set(key, dep = createDep(() => depsMap.delete(key))) trackEffect( activeEffect, dep, { target, type, key, }, ) } } function trigger(target, type, key, newValue, oldValue, oldTarget) { const depsMap = targetMap.get(target) if (!depsMap) return let deps = [] if (type === 'clear') { deps = [...depsMap.values()] } else if (key === 'length' && isArray(target)) { const newLength = Number(newValue) depsMap.forEach((dep, key2) => { if (key2 === 'length' || !isSymbol(key2) && key2 >= newLength) deps.push(dep) }) } else { if (key !== void 0) deps.push(depsMap.get(key)) switch (type) { case '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)) { deps.push(depsMap.get('length')) } break case 'delete': if (!isArray(target)) { deps.push(depsMap.get(ITERATE_KEY)) if (isMap(target)) deps.push(depsMap.get(MAP_KEY_ITERATE_KEY)) } break case 'set': if (isMap(target)) deps.push(depsMap.get(ITERATE_KEY)) break } } pauseScheduling() for (const dep of deps) { if (dep) { triggerEffects( dep, 4, { target, type, key, newValue, oldValue, oldTarget, }, ) } } resetScheduling() } const isNonTrackableKeys = /* @__PURE__ */ makeMap(`__proto__,__v_isRef,__isVue`) const builtInSymbols = new Set( /* @__PURE__ */ Object.getOwnPropertyNames(Symbol).filter(key => key !== 'arguments' && key !== 'caller').map(key => Symbol[key]).filter(isSymbol), ) const arrayInstrumentations = /* @__PURE__ */ createArrayInstrumentations() function createArrayInstrumentations() { const instrumentations = {}; ['includes', 'indexOf', 'lastIndexOf'].forEach((key) => { instrumentations[key] = function (...args) { const arr = toRaw(this) for (let i = 0, l = this.length; i < l; i++) track(arr, 'get', `${i}`) const res = arr[key](...args) if (res === -1 || res === false) return arr[key](...args.map(toRaw)) else return res } }); ['push', 'pop', 'shift', 'unshift', 'splice'].forEach((key) => { instrumentations[key] = function (...args) { pauseTracking() pauseScheduling() const res = toRaw(this)[key].apply(this, args) resetScheduling() resetTracking() return res } }) return instrumentations } function hasOwnProperty(key) { if (!isSymbol(key)) key = String(key) const obj = toRaw(this) track(obj, 'has', key) return obj.hasOwnProperty(key) } class BaseReactiveHandler { constructor(_isReadonly = false, _isShallow = false) { this._isReadonly = _isReadonly this._isShallow = _isShallow } get(target, key, receiver) { const isReadonly2 = this._isReadonly; const isShallow2 = this._isShallow if (key === '__v_isReactive') { return !isReadonly2 } else if (key === '__v_isReadonly') { return isReadonly2 } else if (key === '__v_isShallow') { return isShallow2 } else if (key === '__v_raw') { if (receiver === (isReadonly2 ? isShallow2 ? shallowReadonlyMap : readonlyMap : isShallow2 ? shallowReactiveMap : reactiveMap).get(target) // receiver is not the reactive proxy, but has the same prototype // this means the reciever is a user proxy of the reactive proxy || Object.getPrototypeOf(target) === Object.getPrototypeOf(receiver)) return target return } const targetIsArray = isArray(target) if (!isReadonly2) { if (targetIsArray && hasOwn(arrayInstrumentations, key)) return Reflect.get(arrayInstrumentations, key, receiver) if (key === 'hasOwnProperty') return hasOwnProperty } const res = Reflect.get(target, key, receiver) if (isSymbol(key) ? builtInSymbols.has(key) : isNonTrackableKeys(key)) return res if (!isReadonly2) track(target, 'get', key) if (isShallow2) return res if (isRef(res)) return targetIsArray && isIntegerKey(key) ? res : res.value if (isObject(res)) return isReadonly2 ? readonly(res) : reactive(res) return res } } class MutableReactiveHandler extends BaseReactiveHandler { constructor(isShallow2 = false) { super(false, isShallow2) } set(target, key, value, receiver) { let oldValue = target[key] if (!this._isShallow) { const isOldValueReadonly = isReadonly(oldValue) if (!isShallow(value) && !isReadonly(value)) { oldValue = toRaw(oldValue) value = toRaw(value) } if (!isArray(target) && isRef(oldValue) && !isRef(value)) { if (isOldValueReadonly) { return false } else { oldValue.value = value return true } } } const hadKey = isArray(target) && isIntegerKey(key) ? Number(key) < target.length : hasOwn(target, key) const result = Reflect.set(target, key, value, receiver) if (target === toRaw(receiver)) { if (!hadKey) trigger(target, 'add', key, value) else if (hasChanged(value, oldValue)) trigger(target, 'set', key, value, oldValue) } return result } deleteProperty(target, key) { const hadKey = hasOwn(target, key) const oldValue = target[key] const result = Reflect.deleteProperty(target, key) if (result && hadKey) trigger(target, 'delete', key, void 0, oldValue) return result } has(target, key) { const result = Reflect.has(target, key) if (!isSymbol(key) || !builtInSymbols.has(key)) track(target, 'has', key) return result } ownKeys(target) { track( target, 'iterate', isArray(target) ? 'length' : ITERATE_KEY, ) return Reflect.ownKeys(target) } } class ReadonlyReactiveHandler extends BaseReactiveHandler { constructor(isShallow2 = false) { super(true, isShallow2) } set(target, key) { { warn$2( `Set operation on key "${String(key)}" failed: target is readonly.`, target, ) } return true } deleteProperty(target, key) { { warn$2( `Delete operation on key "${String(key)}" failed: target is readonly.`, target, ) } return true } } const mutableHandlers = /* @__PURE__ */ new MutableReactiveHandler() const readonlyHandlers = /* @__PURE__ */ new ReadonlyReactiveHandler() const shallowReactiveHandlers = /* @__PURE__ */ new MutableReactiveHandler( true, ) const shallowReadonlyHandlers = /* @__PURE__ */ new ReadonlyReactiveHandler(true) const toShallow = value => value const getProto = v => Reflect.getPrototypeOf(v) function get(target, key, isReadonly = false, isShallow = false) { target = target.__v_raw const rawTarget = toRaw(target) const rawKey = toRaw(key) if (!isReadonly) { if (hasChanged(key, rawKey)) track(rawTarget, 'get', key) track(rawTarget, 'get', rawKey) } const { has: has2 } = getProto(rawTarget) const wrap = isShallow ? toShallow : isReadonly ? toReadonly : toReactive if (has2.call(rawTarget, key)) return wrap(target.get(key)) else if (has2.call(rawTarget, rawKey)) return wrap(target.get(rawKey)) else if (target !== rawTarget) target.get(key) } function has(key, isReadonly = false) { const target = this.__v_raw const rawTarget = toRaw(target) const rawKey = toRaw(key) if (!isReadonly) { if (hasChanged(key, rawKey)) track(rawTarget, 'has', key) track(rawTarget, 'has', rawKey) } return key === rawKey ? target.has(key) : target.has(key) || target.has(rawKey) } function size(target, isReadonly = false) { target = target.__v_raw !isReadonly && track(toRaw(target), 'iterate', ITERATE_KEY) return Reflect.get(target, 'size', target) } function add(value) { value = toRaw(value) const target = toRaw(this) const proto = getProto(target) const hadKey = proto.has.call(target, value) if (!hadKey) { target.add(value) trigger(target, 'add', value, value) } return this } function set(key, value) { value = toRaw(value) const target = toRaw(this) const { has: has2, get: get2 } = getProto(target) let hadKey = has2.call(target, key) if (!hadKey) { key = toRaw(key) hadKey = has2.call(target, key) } else { checkIdentityKeys(target, has2, key) } const oldValue = get2.call(target, key) target.set(key, value) if (!hadKey) trigger(target, 'add', key, value) else if (hasChanged(value, oldValue)) trigger(target, 'set', key, value, oldValue) return this } function deleteEntry(key) { const target = toRaw(this) const { has: has2, get: get2 } = getProto(target) let hadKey = has2.call(target, key) if (!hadKey) { key = toRaw(key) hadKey = has2.call(target, key) } else { checkIdentityKeys(target, has2, key) } const oldValue = get2 ? get2.call(target, key) : void 0 const result = target.delete(key) if (hadKey) trigger(target, 'delete', key, void 0, oldValue) return result } function clear() { const target = toRaw(this) const hadItems = target.size !== 0 const oldTarget = isMap(target) ? new Map(target) : new Set(target) const result = target.clear() if (hadItems) trigger(target, 'clear', void 0, void 0, oldTarget) return result } function createForEach(isReadonly, isShallow) { return function forEach(callback, thisArg) { const observed = this const target = observed.__v_raw const rawTarget = toRaw(target) const wrap = isShallow ? toShallow : isReadonly ? toReadonly : toReactive !isReadonly && track(rawTarget, 'iterate', ITERATE_KEY) return target.forEach((value, key) => { return callback.call(thisArg, wrap(value), wrap(key), observed) }) } } function createIterableMethod(method, isReadonly, isShallow) { return function (...args) { const target = this.__v_raw const rawTarget = toRaw(target) const targetIsMap = isMap(rawTarget) const isPair = method === 'entries' || method === Symbol.iterator && targetIsMap const isKeyOnly = method === 'keys' && targetIsMap const innerIterator = target[method](...args) const wrap = isShallow ? toShallow : isReadonly ? toReadonly : toReactive !isReadonly && track( rawTarget, 'iterate', isKeyOnly ? MAP_KEY_ITERATE_KEY : ITERATE_KEY, ) return { // iterator protocol next() { const { 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 (...args) { { const key = args[0] ? `on key "${args[0]}" ` : `` warn$2( `${capitalize(type)} operation ${key}failed: target is readonly.`, toRaw(this), ) } return type === 'delete' ? false : type === 'clear' ? void 0 : this } } function createInstrumentations() { const mutableInstrumentations2 = { get(key) { return get(this, key) }, get size() { return size(this) }, has, add, set, delete: deleteEntry, clear, forEach: createForEach(false, false), } const shallowInstrumentations2 = { get(key) { return get(this, key, false, true) }, get size() { return size(this) }, has, add, set, delete: deleteEntry, clear, forEach: createForEach(false, true), } const readonlyInstrumentations2 = { get(key) { return get(this, key, true) }, get size() { return size(this, true) }, has(key) { return has.call(this, key, true) }, add: createReadonlyMethod('add'), set: createReadonlyMethod('set'), delete: createReadonlyMethod('delete'), clear: createReadonlyMethod('clear'), forEach: createForEach(true, false), } const shallowReadonlyInstrumentations2 = { get(key) { return get(this, key, true, true) }, get size() { return size(this, true) }, has(key) { return has.call(this, key, true) }, add: createReadonlyMethod('add'), set: createReadonlyMethod('set'), delete: createReadonlyMethod('delete'), clear: createReadonlyMethod('clear'), forEach: createForEach(true, true), } const iteratorMethods = [ 'keys', 'values', 'entries', Symbol.iterator, ] iteratorMethods.forEach((method) => { mutableInstrumentations2[method] = createIterableMethod(method, false, false) readonlyInstrumentations2[method] = createIterableMethod(method, true, false) shallowInstrumentations2[method] = createIterableMethod(method, false, true) shallowReadonlyInstrumentations2[method] = createIterableMethod( method, true, true, ) }) return [ mutableInstrumentations2, readonlyInstrumentations2, shallowInstrumentations2, shallowReadonlyInstrumentations2, ] } const [ mutableInstrumentations, readonlyInstrumentations, shallowInstrumentations, shallowReadonlyInstrumentations, ] = /* @__PURE__ */ createInstrumentations() function createInstrumentationGetter(isReadonly, shallow) { const instrumentations = shallow ? isReadonly ? shallowReadonlyInstrumentations : shallowInstrumentations : isReadonly ? readonlyInstrumentations : mutableInstrumentations return (target, key, receiver) => { if (key === '__v_isReactive') return !isReadonly else if (key === '__v_isReadonly') return isReadonly else if (key === '__v_raw') return target return Reflect.get( hasOwn(instrumentations, key) && key in target ? instrumentations : target, key, receiver, ) } } const mutableCollectionHandlers = { get: /* @__PURE__ */ createInstrumentationGetter(false, false), } const shallowCollectionHandlers = { get: /* @__PURE__ */ createInstrumentationGetter(false, true), } const readonlyCollectionHandlers = { get: /* @__PURE__ */ createInstrumentationGetter(true, false), } const shallowReadonlyCollectionHandlers = { get: /* @__PURE__ */ createInstrumentationGetter(true, true), } function checkIdentityKeys(target, has2, key) { const rawKey = toRaw(key) if (rawKey !== key && has2.call(target, rawKey)) { const type = toRawType(target) warn$2( `Reactive ${type} contains both the raw and reactive versions of the same object${type === `Map` ? ` as keys` : ``}, which can lead to inconsistencies. Avoid differentiating between the raw and reactive versions of an object and only use the reactive version if possible.`, ) } } const reactiveMap = /* @__PURE__ */ new WeakMap() const shallowReactiveMap = /* @__PURE__ */ new WeakMap() const readonlyMap = /* @__PURE__ */ new WeakMap() const shallowReadonlyMap = /* @__PURE__ */ 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 || !Object.isExtensible(value) ? 0 /* INVALID */ : targetTypeMap(toRawType(value)) } function reactive(target) { if (isReadonly(target)) return target return createReactiveObject( target, false, mutableHandlers, mutableCollectionHandlers, reactiveMap, ) } function shallowReactive(target) { return createReactiveObject( target, false, shallowReactiveHandlers, shallowCollectionHandlers, shallowReactiveMap, ) } function readonly(target) { return createReactiveObject( target, true, readonlyHandlers, readonlyCollectionHandlers, readonlyMap, ) } function shallowReadonly(target) { return createReactiveObject( target, true, shallowReadonlyHandlers, shallowReadonlyCollectionHandlers, shallowReadonlyMap, ) } function createReactiveObject(target, isReadonly2, baseHandlers, collectionHandlers, proxyMap) { if (!isObject(target)) { { warn$2( `value cannot be made ${isReadonly2 ? 'readonly' : 'reactive'}: ${String( target, )}`, ) } return target } if (target.__v_raw && !(isReadonly2 && target.__v_isReactive)) return target const existingProxy = proxyMap.get(target) if (existingProxy) return existingProxy const targetType = getTargetType(target) if (targetType === 0 /* INVALID */) return target const 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) return !!(value && value.__v_isReactive) } function isReadonly(value) { return !!(value && value.__v_isReadonly) } function isShallow(value) { return !!(value && value.__v_isShallow) } function isProxy(value) { return value ? !!value.__v_raw : false } function toRaw(observed) { const raw = observed && observed.__v_raw return raw ? toRaw(raw) : observed } function markRaw(value) { if (Object.isExtensible(value)) def(value, '__v_skip', true) return value } const toReactive = value => isObject(value) ? reactive(value) : value const toReadonly = value => isObject(value) ? readonly(value) : value const COMPUTED_SIDE_EFFECT_WARN = `Computed is still dirty after getter evaluation, likely because a computed is mutating its own dependency in its getter. State mutations in computed getters should be avoided. Check the docs for more details: https://vuejs.org/guide/essentials/computed.html#getters-should-be-side-effect-free` class ComputedRefImpl { constructor(getter, _setter, isReadonly, isSSR) { this.getter = getter this._setter = _setter this.dep = void 0 this.__v_isRef = true this.__v_isReadonly = false this.effect = new ReactiveEffect( () => getter(this._value), () => triggerRefValue( this, this.effect._dirtyLevel === 2 ? 2 : 3, ), ) this.effect.computed = this this.effect.active = this._cacheable = !isSSR this.__v_isReadonly = isReadonly } get value() { const self = toRaw(this) if ((!self._cacheable || self.effect.dirty) && hasChanged(self._value, self._value = self.effect.run())) triggerRefValue(self, 4) trackRefValue(self) if (self.effect._dirtyLevel >= 2) { if (this._warnRecursive) { warn$2(COMPUTED_SIDE_EFFECT_WARN, ` getter: `, this.getter) } triggerRefValue(self, 2) } return self._value } set value(newValue) { this._setter(newValue) } // #region polyfill _dirty for backward compatibility third party code for Vue <= 3.3.x get _dirty() { return this.effect.dirty } set _dirty(v) { this.effect.dirty = v } // #endregion } function computed$1(getterOrOptions, debugOptions, isSSR = false) { let getter let setter const onlyGetter = isFunction(getterOrOptions) if (onlyGetter) { getter = getterOrOptions setter = () => { warn$2('Write operation failed: computed value is readonly') } } else { getter = getterOrOptions.get setter = getterOrOptions.set } const cRef = new ComputedRefImpl(getter, setter, onlyGetter || !setter, isSSR) return cRef } function trackRefValue(ref2) { let _a if (shouldTrack && activeEffect) { ref2 = toRaw(ref2) trackEffect( activeEffect, (_a = ref2.dep) != null ? _a : ref2.dep = createDep( () => ref2.dep = void 0, ref2 instanceof ComputedRefImpl ? ref2 : void 0, ), { target: ref2, type: 'get', key: 'value', }, ) } } function triggerRefValue(ref2, dirtyLevel = 4, newVal) { ref2 = toRaw(ref2) const dep = ref2.dep if (dep) { triggerEffects( dep, dirtyLevel, { target: ref2, type: 'set', key: 'value', newValue: newVal, }, ) } } function isRef(r) { return !!(r && r.__v_isRef === true) } function unref(ref2) { return isRef(ref2) ? ref2.value : ref2 } const shallowUnwrapHandlers = { get: (target, key, receiver) => unref(Reflect.get(target, key, receiver)), set: (target, key, value, receiver) => { const 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) } const stack = [] function pushWarningContext(vnode) { stack.push(vnode) } function popWarningContext() { stack.pop() } function warn$1(msg, ...args) { pauseTracking() const instance = stack.length ? stack[stack.length - 1].component : null const appWarnHandler = instance && instance.appContext.config.warnHandler const trace = getComponentTrace() if (appWarnHandler) { callWithErrorHandling( appWarnHandler, instance, 11, [ msg + args.map((a) => { let _a, _b return (_b = (_a = a.toString) == null ? void 0 : _a.call(a)) != null ? _b : JSON.stringify(a) }).join(''), instance && instance.proxy, trace.map( ({ vnode }) => `at <${formatComponentName(instance, vnode.type)}>`, ).join('\n'), trace, ], ) } else { const warnArgs = [`[Vue warn]: ${msg}`, ...args] if (trace.length // avoid spamming console during tests && true) { warnArgs.push(` `, ...formatTrace(trace)) } console.warn(...warnArgs) } resetTracking() } function getComponentTrace() { let currentVNode = stack[stack.length - 1] if (!currentVNode) return [] const normalizedStack = [] while (currentVNode) { const last = normalizedStack[0] if (last && last.vnode === currentVNode) { last.recurseCount++ } else { normalizedStack.push({ vnode: currentVNode, recurseCount: 0, }) } const parentInstance = currentVNode.component && currentVNode.component.parent currentVNode = parentInstance && parentInstance.vnode } return normalizedStack } function formatTrace(trace) { const logs = [] trace.forEach((entry, i) => { logs.push(...i === 0 ? [] : [` `], ...formatTraceEntry(entry)) }) return logs } function formatTraceEntry({ vnode, recurseCount }) { const postfix = recurseCount > 0 ? `... (${recurseCount} recursive calls)` : `` const isRoot = vnode.component ? vnode.component.parent == null : false const open = ` at <${formatComponentName( vnode.component, vnode.type, isRoot, )}` const close = `>${postfix}` return vnode.props ? [open, ...formatProps(vnode.props), close] : [open + close] } function formatProps(props) { const res = [] const keys = Object.keys(props) keys.slice(0, 3).forEach((key) => { res.push(...formatProp(key, props[key])) }) if (keys.length > 3) res.push(` ...`) return res } function formatProp(key, value, raw) { if (isString(value)) { value = JSON.stringify(value) return raw ? value : [`${key}=${value}`] } else if (typeof value === 'number' || typeof value === 'boolean' || value == null) { return raw ? value : [`${key}=${value}`] } else if (isRef(value)) { value = formatProp(key, toRaw(value.value), true) return raw ? value : [`${key}=Ref<`, value, `>`] } else if (isFunction(value)) { return [`${key}=fn${value.name ? `<${value.name}>` : ``}`] } else { value = toRaw(value) return raw ? value : [`${key}=`, value] } } const ErrorTypeStrings = { sp: 'serverPrefetch hook', bc: 'beforeCreate hook', c: 'created hook', bm: 'beforeMount hook', m: 'mounted hook', bu: 'beforeUpdate hook', u: 'updated', bum: 'beforeUnmount hook', um: 'unmounted hook', a: 'activated hook', da: 'deactivated hook', ec: 'errorCaptured hook', rtc: 'renderTracked hook', rtg: 'renderTriggered hook', 0: 'setup function', 1: 'render function', 2: 'watcher getter', 3: 'watcher callback', 4: 'watcher cleanup function', 5: 'native event handler', 6: 'component event handler', 7: 'vnode hook', 8: 'directive hook', 9: 'transition hook', 10: 'app errorHandler', 11: 'app warnHandler', 12: 'ref function', 13: 'async component loader', 14: 'scheduler flush. This is likely a Vue internals bug. Please open an issue at https://github.com/vuejs/core .', } function callWithErrorHandling(fn, instance, type, args) { try { return args ? fn(...args) : fn() } catch (err) { handleError(err, instance, type) } } function callWithAsyncErrorHandling(fn, instance, type, args) { if (isFunction(fn)) { const res = callWithErrorHandling(fn, instance, type, args) if (res && isPromise(res)) { res.catch((err) => { handleError(err, instance, type) }) } return res } if (isArray(fn)) { const values = [] for (let i = 0; i < fn.length; i++) values.push(callWithAsyncErrorHandling(fn[i], instance, type, args)) return values } else { warn$1( `Invalid value type passed to callWithAsyncErrorHandling(): ${typeof fn}`, ) } } function handleError(err, instance, type, throwInDev = true) { const contextVNode = instance ? instance.vnode : null if (instance) { let cur = instance.parent const exposedInstance = instance.proxy const errorInfo = ErrorTypeStrings[type] while (cur) { const errorCapturedHooks = cur.ec if (errorCapturedHooks) { for (let i = 0; i < errorCapturedHooks.length; i++) { if (errorCapturedHooks[i](err, exposedInstance, errorInfo) === false) return } } cur = cur.parent } const appErrorHandler = instance.appContext.config.errorHandler if (appErrorHandler) { pauseTracking() callWithErrorHandling( appErrorHandler, null, 10, [err, exposedInstance, errorInfo], ) resetTracking() return } } logError(err, type, contextVNode, throwInDev) } function logError(err, type, contextVNode, throwInDev = true) { { const info = ErrorTypeStrings[type] if (contextVNode) pushWarningContext(contextVNode) warn$1(`Unhandled error${info ? ` during execution of ${info}` : ``}`) if (contextVNode) popWarningContext() if (throwInDev) throw err else console.error(err) } } let isFlushing = false let isFlushPending = false const queue = [] let flushIndex = 0 const pendingPostFlushCbs = [] let activePostFlushCbs = null let postFlushIndex = 0 const resolvedPromise = /* @__PURE__ */ Promise.resolve() let currentFlushPromise = null const RECURSION_LIMIT = 100 function nextTick(fn) { const p = currentFlushPromise || resolvedPromise return fn ? p.then(this ? fn.bind(this) : fn) : p } function findInsertionIndex(id) { let start = flushIndex + 1 let end = queue.length while (start < end) { const middle = start + end >>> 1 const middleJob = queue[middle] const middleJobId = getId(middleJob) if (middleJobId < id || middleJobId === id && middleJob.pre) start = middle + 1 else end = middle } return start } function queueJob(job) { if (!queue.length || !queue.includes( job, isFlushing && job.allowRecurse ? flushIndex + 1 : flushIndex, )) { if (job.id == null) queue.push(job) else queue.splice(findInsertionIndex(job.id), 0, job) queueFlush() } } function queueFlush() { if (!isFlushing && !isFlushPending) { isFlushPending = true currentFlushPromise = resolvedPromise.then(flushJobs) } } function invalidateJob(job) { const i = queue.indexOf(job) if (i > flushIndex) queue.splice(i, 1) } function queuePostFlushCb(cb) { if (!isArray(cb)) { if (!activePostFlushCbs || !activePostFlushCbs.includes( cb, cb.allowRecurse ? postFlushIndex + 1 : postFlushIndex, )) pendingPostFlushCbs.push(cb) } else { pendingPostFlushCbs.push(...cb) } queueFlush() } function flushPreFlushCbs(instance, seen, i = isFlushing ? flushIndex + 1 : 0) { { seen = seen || /* @__PURE__ */ new Map() } for (; i < queue.length; i++) { const cb = queue[i] if (cb && cb.pre) { if (instance && cb.id !== instance.uid) continue if (checkRecursiveUpdates(seen, cb)) continue queue.splice(i, 1) i-- cb() } } } function flushPostFlushCbs(seen) { if (pendingPostFlushCbs.length) { const deduped = [...new Set(pendingPostFlushCbs)].sort( (a, b) => getId(a) - getId(b), ) pendingPostFlushCbs.length = 0 if (activePostFlushCbs) { activePostFlushCbs.push(...deduped) return } activePostFlushCbs = deduped { seen = seen || /* @__PURE__ */ new Map() } for (postFlushIndex = 0; postFlushIndex < activePostFlushCbs.length; postFlushIndex++) { if (checkRecursiveUpdates(seen, activePostFlushCbs[postFlushIndex])) continue activePostFlushCbs[postFlushIndex]() } activePostFlushCbs = null postFlushIndex = 0 } } const getId = job => job.id == null ? Number.POSITIVE_INFINITY : job.id function comparator(a, b) { const diff = getId(a) - getId(b) if (diff === 0) { if (a.pre && !b.pre) return -1 if (b.pre && !a.pre) return 1 } return diff } function flushJobs(seen) { isFlushPending = false isFlushing = true { seen = seen || /* @__PURE__ */ new Map() } queue.sort(comparator) const check = job => checkRecursiveUpdates(seen, job) try { for (flushIndex = 0; flushIndex < queue.length; flushIndex++) { const job = queue[flushIndex] if (job && job.active !== false) { if (check(job)) continue callWithErrorHandling(job, null, 14) } } } finally { flushIndex = 0 queue.length = 0 flushPostFlushCbs(seen) isFlushing = false currentFlushPromise = null if (queue.length || pendingPostFlushCbs.length) flushJobs(seen) } } function checkRecursiveUpdates(seen, fn) { if (!seen.has(fn)) { seen.set(fn, 1) } else { const count = seen.get(fn) if (count > RECURSION_LIMIT) { const instance = fn.ownerInstance const componentName = instance && getComponentName(instance.type) handleError( `Maximum recursive updates exceeded${componentName ? ` in component <${componentName}>` : ``}. This means you have a reactive effect that is mutating its own dependencies and thus recursively triggering itself. Possible sources include component template, render function, updated hook or watcher source function.`, null, 10, ) return true } else { seen.set(fn, count + 1) } } } let isHmrUpdating = false const hmrDirtyComponents = /* @__PURE__ */ new Set() { getGlobalThis().__VUE_HMR_RUNTIME__ = { createRecord: tryWrap(createRecord), rerender: tryWrap(rerender), reload: tryWrap(reload), } } const map = /* @__PURE__ */ new Map() function registerHMR(instance) { const id = instance.type.__hmrId let record = map.get(id) if (!record) { createRecord(id, instance.type) record = map.get(id) } record.instances.add(instance) } function unregisterHMR(instance) { map.get(instance.type.__hmrId).instances.delete(instance) } function createRecord(id, initialDef) { if (map.has(id)) return false map.set(id, { initialDef: normalizeClassComponent(initialDef), instances: /* @__PURE__ */ new Set(), }) return true } function normalizeClassComponent(component) { return isClassComponent(component) ? component.__vccOpts : component } function rerender(id, newRender) { const record = map.get(id) if (!record) return record.initialDef.render = newRender; [...record.instances].forEach((instance) => { if (newRender) { instance.render = newRender normalizeClassComponent(instance.type).render = newRender } instance.renderCache = [] isHmrUpdating = true instance.effect.dirty = true instance.update() isHmrUpdating = false }) } function reload(id, newComp) { const record = map.get(id) if (!record) return newComp = normalizeClassComponent(newComp) updateComponentDef(record.initialDef, newComp) const instances = [...record.instances] for (const instance of instances) { const oldComp = normalizeClassComponent(instance.type) if (!hmrDirtyComponents.has(oldComp)) { if (oldComp !== record.initialDef) updateComponentDef(oldComp, newComp) hmrDirtyComponents.add(oldComp) } instance.appContext.propsCache.delete(instance.type) instance.appContext.emitsCache.delete(instance.type) instance.appContext.optionsCache.delete(instance.type) if (instance.ceReload) { hmrDirtyComponents.add(oldComp) instance.ceReload(newComp.styles) hmrDirtyComponents.delete(oldComp) } else if (instance.parent) { instance.parent.effect.dirty = true queueJob(instance.parent.update) } else if (instance.appContext.reload) { instance.appContext.reload() } else if (typeof window !== 'undefined') { window.location.reload() } else { console.warn( '[HMR] Root or manually mounted instance modified. Full reload required.', ) } } queuePostFlushCb(() => { for (const instance of instances) { hmrDirtyComponents.delete( normalizeClassComponent(instance.type), ) } }) } function updateComponentDef(oldComp, newComp) { extend(oldComp, newComp) for (const key in oldComp) { if (key !== '__file' && !(key in newComp)) delete oldComp[key] } } function tryWrap(fn) { return (id, arg) => { try { return fn(id, arg) } catch (e) { console.error(e) console.warn( `[HMR] Something went wrong during Vue component hot-reload. Full reload required.`, ) } } } let devtools let buffer = [] let devtoolsNotInstalled = false function emit$1(event, ...args) { if (devtools) devtools.emit(event, ...args) else if (!devtoolsNotInstalled) buffer.push({ event, args }) } function setDevtoolsHook(hook, target) { let _a, _b devtools = hook if (devtools) { devtools.enabled = true buffer.forEach(({ event, args }) => 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) typeof window !== 'undefined' // some envs mock window but not fully && window.HTMLElement // also exclude jsdom && !((_b = (_a = window.navigator) == null ? void 0 : _a.userAgent) == null ? void 0 : _b.includes('jsdom')) ) { const replay = target.__VUE_DEVTOOLS_HOOK_REPLAY__ = target.__VUE_DEVTOOLS_HOOK_REPLAY__ || [] replay.push((newHook) => { setDevtoolsHook(newHook, target) }) setTimeout(() => { if (!devtools) { target.__VUE_DEVTOOLS_HOOK_REPLAY__ = null devtoolsNotInstalled = true buffer = [] } }, 3e3) } else { devtoolsNotInstalled = true buffer = [] } } function devtoolsInitApp(app, version) { emit$1('app:init' /* APP_INIT */, app, version, { Fragment, Text, Comment, Static, }) } function devtoolsUnmountApp(app) { emit$1('app:unmount' /* APP_UNMOUNT */, app) } const devtoolsComponentAdded = /* @__PURE__ */ createDevtoolsComponentHook( 'component:added', /* COMPONENT_ADDED */ ) const devtoolsComponentUpdated = /* @__PURE__ */ createDevtoolsComponentHook('component:updated' /* COMPONENT_UPDATED */) const _devtoolsComponentRemoved = /* @__PURE__ */ createDevtoolsComponentHook( 'component:removed', /* COMPONENT_REMOVED */ ) function devtoolsComponentRemoved(component) { if (devtools && typeof devtools.cleanupBuffer === 'function' // remove the component if it wasn't buffered && !devtools.cleanupBuffer(component)) _devtoolsComponentRemoved(component) } /*! #__NO_SIDE_EFFECTS__ */ // @__NO_SIDE_EFFECTS__ function createDevtoolsComponentHook(hook) { return (component) => { emit$1( hook, component.appContext.app, component.uid, component.parent ? component.parent.uid : void 0, component, ) } } const devtoolsPerfStart = /* @__PURE__ */ createDevtoolsPerformanceHook( 'perf:start', /* PERFORMANCE_START */ ) const devtoolsPerfEnd = /* @__PURE__ */ createDevtoolsPerformanceHook( 'perf:end', /* PERFORMANCE_END */ ) function createDevtoolsPerformanceHook(hook) { return (component, type, time) => { emit$1(hook, component.appContext.app, component.uid, component, type, time) } } function devtoolsComponentEmit(component, event, params) { emit$1( 'component:emit' /* COMPONENT_EMIT */, component.appContext.app, component, event, params, ) } function emit(instance, event, ...rawArgs) { if (instance.isUnmounted) return const props = instance.vnode.props || EMPTY_OBJ { const { emitsOptions, propsOptions: [propsOptions], } = instance if (emitsOptions) { if (!(event in emitsOptions) && true) { if (!propsOptions || !(toHandlerKey(event) in propsOptions)) { warn$1( `Component emitted event "${event}" but it is neither declared in the emits option nor as an "${toHandlerKey(event)}" prop.`, ) } } else { const validator = emitsOptions[event] if (isFunction(validator)) { const isValid = validator(...rawArgs) if (!isValid) { warn$1( `Invalid event arguments: event validation failed for event "${event}".`, ) } } } } } let args = rawArgs const isModelListener = event.startsWith('update:') const modelArg = isModelListener && event.slice(7) if (modelArg && modelArg in props) { const modifiersKey = `${modelArg === 'modelValue' ? 'model' : modelArg}Modifiers` const { number, trim } = props[modifiersKey] || EMPTY_OBJ if (trim) args = rawArgs.map(a => isString(a) ? a.trim() : a) if (number) args = rawArgs.map(looseToNumber) } { devtoolsComponentEmit(instance, event, args) } { const lowerCaseEvent = event.toLowerCase() if (lowerCaseEvent !== event && props[toHandlerKey(lowerCaseEvent)]) { warn$1( `Event "${lowerCaseEvent}" is emitted in component ${formatComponentName( instance, instance.type, )} but the handler is registered for "${event}". Note that HTML attributes are case-insensitive and you cannot use v-on to listen to camelCase events when using in-DOM templates. You should probably use "${hyphenate( event, )}" instead of "${event}".`, ) } } let handlerName let handler = props[handlerName = toHandlerKey(event)] // also try camelCase event handler (#2249) || props[handlerName = toHandlerKey(camelize(event))] if (!handler && isModelListener) handler = props[handlerName = toHandlerKey(hyphenate(event))] if (handler) { callWithAsyncErrorHandling( handler, instance, 6, args, ) } const onceHandler = props[`${handlerName}Once`] if (onceHandler) { if (!instance.emitted) instance.emitted = {} else if (instance.emitted[handlerName]) return instance.emitted[handlerName] = true callWithAsyncErrorHandling( onceHandler, instance, 6, args, ) } } function normalizeEmitsOptions(comp, appContext, asMixin = false) { const cache = appContext.emitsCache const cached = cache.get(comp) if (cached !== void 0) return cached const raw = comp.emits const normalized = {} let hasExtends = false if (!isFunction(comp)) { const extendEmits = (raw2) => { const normalizedFromExtend = normalizeEmitsOptions(raw2, appContext, true) if (normalizedFromExtend) { hasExtends = true extend(normalized, normalizedFromExtend) } } if (!asMixin && appContext.mixins.length) appContext.mixins.forEach(extendEmits) if (comp.extends) extendEmits(comp.extends) if (comp.mixins) comp.mixins.forEach(extendEmits) } if (!raw && !hasExtends) { if (isObject(comp)) cache.set(comp, null) return null } if (isArray(raw)) raw.forEach(key => normalized[key] = null) else extend(normalized, raw) if (isObject(comp)) cache.set(comp, normalized) return normalized } function isEmitListener(options, key) { if (!options || !isOn(key)) return false key = key.slice(2).replace(/Once$/, '') return hasOwn(options, key[0].toLowerCase() + key.slice(1)) || hasOwn(options, hyphenate(key)) || hasOwn(options, key) } let currentRenderingInstance = null let currentScopeId = null function setCurrentRenderingInstance$1(instance) { const prev = currentRenderingInstance currentRenderingInstance = instance currentScopeId = instance && instance.type.__scopeId || null return prev } function withCtx(fn, ctx = currentRenderingInstance, isNonScopedSlot) { if (!ctx) return fn if (fn._n) return fn const renderFnWithContext = (...args) => { if (renderFnWithContext._d) setBlockTracking(-1) const prevInstance = setCurrentRenderingInstance$1(ctx) let res try { res = fn(...args) } finally { setCurrentRenderingInstance$1(prevInstance) if (renderFnWithContext._d) setBlockTracking(1) } { devtoolsComponentUpdated(ctx) } return res } renderFnWithContext._n = true renderFnWithContext._c = true renderFnWithContext._d = true return renderFnWithContext } let accessedAttrs = false function markAttrsAccessed() { accessedAttrs = true } function renderComponentRoot$1(instance) { const { type: Component, vnode, proxy, withProxy, propsOptions: [propsOptions], slots, attrs, emit, render, renderCache, props, data, setupState, ctx, inheritAttrs, } = instance const prev = setCurrentRenderingInstance$1(instance) let result let fallthroughAttrs { accessedAttrs = false } try { if (vnode.shapeFlag & 4) { const proxyToUse = withProxy || proxy const thisProxy = setupState.__isScriptSetup ? new Proxy(proxyToUse, { get(target, key, receiver) { warn$1( `Property '${String( key, )}' was accessed via 'this'. Avoid using 'this' in templates.`, ) return Reflect.get(target, key, receiver) }, }) : proxyToUse result = normalizeVNode$1( render.call( thisProxy, proxyToUse, renderCache, true ? shallowReadonly(props) : props, setupState, data, ctx, ), ) fallthroughAttrs = attrs } else { const render2 = Component if (attrs === props) markAttrsAccessed() result = normalizeVNode$1( render2.length > 1 ? render2( true ? shallowReadonly(props) : props, true ? { get attrs() { markAttrsAccessed() return shallowReadonly(attrs) }, slots, emit, } : { attrs, slots, emit }, ) : render2( true ? shallowReadonly(props) : props, null, ), ) fallthroughAttrs = Component.props ? attrs : getFunctionalFallthrough(attrs) } } catch (err) { handleError(err, instance, 1) result = createVNode(Comment) } let root = result let setRoot = void 0 if (result.patchFlag > 0 && result.patchFlag & 2048) [root, setRoot] = getChildRoot(result) if (fallthroughAttrs && inheritAttrs !== false) { const keys = Object.keys(fallthroughAttrs) const { shapeFlag } = root if (keys.length) { if (shapeFlag & (1 | 6)) { if (propsOptions && keys.some(isModelListener)) { fallthroughAttrs = filterModelListeners( fallthroughAttrs, propsOptions, ) } root = cloneVNode(root, fallthroughAttrs, false, true) } else if (!accessedAttrs && root.type !== Comment) { const allAttrs = Object.keys(attrs) const eventAttrs = [] const extraAttrs = [] for (let i = 0, l = allAttrs.length; i < l; i++) { const key = allAttrs[i] if (isOn(key)) { if (!isModelListener(key)) eventAttrs.push(key[2].toLowerCase() + key.slice(3)) } else { extraAttrs.push(key) } } if (extraAttrs.length) { warn$1( `Extraneous non-props attributes (${extraAttrs.join(', ')}) were passed to component but could not be automatically inherited because component renders fragment or text root nodes.`, ) } if (eventAttrs.length) { warn$1( `Extraneous non-emits event listeners (${eventAttrs.join(', ')}) were passed to component but could not be automatically inherited because component renders fragment or text root nodes. If the listener is intended to be a component custom event listener only, declare it using the "emits" option.`, ) } } } } if (vnode.dirs) { if (!isElementRoot(root)) { warn$1( `Runtime directive used on component with non-element root node. The directives will not function as intended.`, ) } root = cloneVNode(root, null, false, true) root.dirs = root.dirs ? root.dirs.concat(vnode.dirs) : vnode.dirs } if (vnode.transition) { if (!isElementRoot(root)) { warn$1( `Component inside renders non-element root node that cannot be animated.`, ) } root.transition = vnode.transition } if (setRoot) setRoot(root) else result = root setCurrentRenderingInstance$1(prev) return result } function getChildRoot(vnode) { const rawChildren = vnode.children const dynamicChildren = vnode.dynamicChildren const childRoot = filterSingleRoot(rawChildren, false) if (!childRoot) return [vnode, void 0] else if (childRoot.patchFlag > 0 && childRoot.patchFlag & 2048) return getChildRoot(childRoot) const index = rawChildren.indexOf(childRoot) const dynamicIndex = dynamicChildren ? dynamicChildren.indexOf(childRoot) : -1 const setRoot = (updatedRoot) => { rawChildren[index] = updatedRoot if (dynamicChildren) { if (dynamicIndex > -1) dynamicChildren[dynamicIndex] = updatedRoot else if (updatedRoot.patchFlag > 0) vnode.dynamicChildren = [...dynamicChildren, updatedRoot] } } return [normalizeVNode$1(childRoot), setRoot] } function filterSingleRoot(children, recurse = true) { let singleRoot for (let i = 0; i < children.length; i++) { const child = children[i] if (isVNode$2(child)) { if (child.type !== Comment || child.children === 'v-if') { if (singleRoot) { return } else { singleRoot = child if (recurse && singleRoot.patchFlag > 0 && singleRoot.patchFlag & 2048) return filterSingleRoot(singleRoot.children) } } } else { return } } return singleRoot } function getFunctionalFallthrough(attrs) { let res for (const key in attrs) { if (key === 'class' || key === 'style' || isOn(key)) (res || (res = {}))[key] = attrs[key] } return res } function filterModelListeners(attrs, props) { const res = {} for (const key in attrs) { if (!isModelListener(key) || !(key.slice(9) in props)) res[key] = attrs[key] } return res } function isElementRoot(vnode) { return vnode.shapeFlag & (6 | 1) || vnode.type === Comment } function shouldUpdateComponent(prevVNode, nextVNode, optimized) { const { props: prevProps, children: prevChildren, component } = prevVNode const { props: nextProps, children: nextChildren, patchFlag } = nextVNode const emits = component.emitsOptions if ((prevChildren || nextChildren) && isHmrUpdating) return true if (nextVNode.dirs || nextVNode.transition) return true if (optimized && patchFlag >= 0) { if (patchFlag & 1024) return true if (patchFlag & 16) { if (!prevProps) return !!nextProps return hasPropsChanged(prevProps, nextProps, emits) } else if (patchFlag & 8) { const dynamicProps = nextVNode.dynamicProps for (let i = 0; i < dynamicProps.length; i++) { const key = dynamicProps[i] if (nextProps[key] !== prevProps[key] && !isEmitListener(emits, key)) return true } } } else { if (prevChildren || nextChildren) { if (!nextChildren || !nextChildren.$stable) return true } if (prevProps === nextProps) return false if (!prevProps) return !!nextProps if (!nextProps) return true return hasPropsChanged(prevProps, nextProps, emits) } return false } function hasPropsChanged(prevProps, nextProps, emitsOptions) { const nextKeys = Object.keys(nextProps) if (nextKeys.length !== Object.keys(prevProps).length) return true for (let i = 0; i < nextKeys.length; i++) { const key = nextKeys[i] if (nextProps[key] !== prevProps[key] && !isEmitListener(emitsOptions, key)) return true } return false } function updateHOCHostEl({ vnode, parent }, el) { while (parent) { const root = parent.subTree if (root.suspense && root.suspense.activeBranch === vnode) root.el = vnode.el if (root === vnode) { (vnode = parent.vnode).el = el parent = parent.parent } else { break } } } const NULL_DYNAMIC_COMPONENT = Symbol.for('v-ndc') const isSuspense = type => type.__isSuspense function queueEffectWithSuspense(fn, suspense) { if (suspense && suspense.pendingBranch) { if (isArray(fn)) suspense.effects.push(...fn) else suspense.effects.push(fn) } else { queuePostFlushCb(fn) } } const ssrContextKey = Symbol.for('v-scx') function useSSRContext() { { const ctx = inject(ssrContextKey) if (!ctx) { warn$1( `Server rendering context not provided. Make sure to only call useSSRContext() conditionally in the server build.`, ) } return ctx } } const INITIAL_WATCHER_VALUE = {} function watch(source, cb, options) { if (!isFunction(cb)) { warn$1( `\`watch(fn, options?)\` signature has been moved to a separate API. Use \`watchEffect(fn, options?)\` instead. \`watch\` now only supports \`watch(source, cb, options?) signature.`, ) } return doWatch(source, cb, options) } function doWatch(source, cb, { immediate, deep, flush, once, onTrack, onTrigger, } = EMPTY_OBJ) { if (cb && once) { const _cb = cb cb = (...args) => { _cb(...args) unwatch() } } if (deep !== void 0 && typeof deep === 'number') { warn$1( `watch() "deep" option with number value will be used as watch depth in future versions. Please use a boolean instead to avoid potential breakage.`, ) } if (!cb) { if (immediate !== void 0) { warn$1( `watch() "immediate" option is only respected when using the watch(source, callback, options?) signature.`, ) } if (deep !== void 0) { warn$1( `watch() "deep" option is only respected when using the watch(source, callback, options?) signature.`, ) } if (once !== void 0) { warn$1( `watch() "once" option is only respected when using the watch(source, callback, options?) signature.`, ) } } const warnInvalidSource = (s) => { warn$1( `Invalid watch source: `, s, `A watch source can only be a getter/effect function, a ref, a reactive object, or an array of these types.`, ) } const instance = currentInstance const reactiveGetter = source2 => deep === true ? source2 : ( // for deep: false, only traverse root-level properties traverse(source2, deep === false ? 1 : void 0) ) let getter let forceTrigger = false let isMultiSource = false if (isRef(source)) { getter = () => source.value forceTrigger = isShallow(source) } else if (isReactive(source)) { getter = () => reactiveGetter(source) forceTrigger = true } else if (isArray(source)) { isMultiSource = true forceTrigger = source.some(s => isReactive(s) || isShallow(s)) getter = () => source.map((s) => { if (isRef(s)) return s.value else if (isReactive(s)) return reactiveGetter(s) else if (isFunction(s)) return callWithErrorHandling(s, instance, 2) else warnInvalidSource(s) }) } else if (isFunction(source)) { if (cb) { getter = () => callWithErrorHandling(source, instance, 2) } else { getter = () => { if (cleanup) cleanup() return callWithAsyncErrorHandling( source, instance, 3, [onCleanup], ) } } } else { getter = NOOP warnInvalidSource(source) } if (cb && deep) { const baseGetter = getter getter = () => traverse(baseGetter()) } let cleanup let onCleanup = (fn) => { cleanup = effect.onStop = () => { callWithErrorHandling(fn, instance, 4) cleanup = effect.onStop = void 0 } } let ssrCleanup if (isInSSRComponentSetup) { onCleanup = NOOP if (!cb) { getter() } else if (immediate) { callWithAsyncErrorHandling(cb, instance, 3, [ getter(), isMultiSource ? [] : void 0, onCleanup, ]) } if (flush === 'sync') { const ctx = useSSRContext() ssrCleanup = ctx.__watcherHandles || (ctx.__watcherHandles = []) } else { return NOOP } } let oldValue = isMultiSource ? Array.from({ length: source.length }).fill(INITIAL_WATCHER_VALUE) : INITIAL_WATCHER_VALUE const job = () => { if (!effect.active || !effect.dirty) return if (cb) { const newValue = effect.run() if (deep || forceTrigger || (isMultiSource ? newValue.some((v, i) => hasChanged(v, oldValue[i])) : hasChanged(newValue, oldValue)) || false) { if (cleanup) cleanup() callWithAsyncErrorHandling(cb, instance, 3, [ newValue, // pass undefined as the old value when it's changed for the first time oldValue === INITIAL_WATCHER_VALUE ? void 0 : isMultiSource && oldValue[0] === INITIAL_WATCHER_VALUE ? [] : oldValue, onCleanup, ]) oldValue = newValue } } else { effect.run() } } job.allowRecurse = !!cb let scheduler if (flush === 'sync') { scheduler = job } else if (flush === 'post') { scheduler = () => queuePostRenderEffect(job, instance && instance.suspense) } else { job.pre = true if (instance) job.id = instance.uid scheduler = () => queueJob(job) } const effect = new ReactiveEffect(getter, NOOP, scheduler) const scope = getCurrentScope() const unwatch = () => { effect.stop() if (scope) remove(scope.effects, effect) } { effect.onTrack = onTrack effect.onTrigger = onTrigger } if (cb) { if (immediate) job() else oldValue = effect.run() } else if (flush === 'post') { queuePostRenderEffect( effect.run.bind(effect), instance && instance.suspense, ) } else { effect.run() } if (ssrCleanup) ssrCleanup.push(unwatch) return unwatch } function instanceWatch(source, value, options) { const publicThis = this.proxy const getter = isString(source) ? source.includes('.') ? createPathGetter(publicThis, source) : () => publicThis[source] : source.bind(publicThis, publicThis) let cb if (isFunction(value)) { cb = value } else { cb = value.handler options = value } const reset = setCurrentInstance(this) const res = doWatch(getter, cb.bind(publicThis), options) reset() return res } function createPathGetter(ctx, path) { const segments = path.split('.') return () => { let cur = ctx for (let i = 0; i < segments.length && cur; i++) cur = cur[segments[i]] return cur } } function traverse(value, depth = Number.POSITIVE_INFINITY, seen) { if (depth <= 0 || !isObject(value) || value.__v_skip) return value seen = seen || /* @__PURE__ */ new Set() if (seen.has(value)) return value seen.add(value) depth-- if (isRef(value)) { traverse(value.value, depth, seen) } else if (isArray(value)) { for (let i = 0; i < value.length; i++) traverse(value[i], depth, seen) } else if (isSet(value) || isMap(value)) { value.forEach((v) => { traverse(v, depth, seen) }) } else if (isPlainObject(value)) { for (const key in value) traverse(value[key], depth, seen) } return value } function validateDirectiveName(name) { if (isBuiltInDirective(name)) warn$1(`Do not use built-in directive ids as custom directive id: ${name}`) } function invokeDirectiveHook(vnode, prevVNode, instance, name) { const bindings = vnode.dirs const oldBindings = prevVNode && prevVNode.dirs for (let i = 0; i < bindings.length; i++) { const binding = bindings[i] if (oldBindings) binding.oldValue = oldBindings[i].value const hook = binding.dir[name] if (hook) { pauseTracking() callWithAsyncErrorHandling(hook, instance, 8, [ vnode.el, binding, vnode, prevVNode, ]) resetTracking() } } } const isAsyncWrapper = i => !!i.type.__asyncLoader const isKeepAlive = vnode => vnode.type.__isKeepAlive function onActivated(hook, target) { registerKeepAliveHook(hook, 'a', target) } function onDeactivated(hook, target) { registerKeepAliveHook(hook, 'da', target) } function registerKeepAliveHook(hook, type, target = currentInstance) { const wrappedHook = hook.__wdc || (hook.__wdc = () => { let current = target while (current) { if (current.isDeactivated) return current = current.parent } return hook() }) injectHook(type, wrappedHook, target) if (target) { let 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) { const injected = injectHook( type, hook, keepAliveRoot, true, /* prepend */ ) onUnmounted(() => { remove(keepAliveRoot[type], injected) }, target) } function injectHook(type, hook, target = currentInstance, prepend = false) { if (target) { const hooks = target[type] || (target[type] = []) const wrappedHook = hook.__weh || (hook.__weh = (...args) => { if (target.isUnmounted) return pauseTracking() const reset = setCurrentInstance(target) const res = callWithAsyncErrorHandling(hook, target, type, args) reset() resetTracking() return res }) if (prepend) hooks.unshift(wrappedHook) else hooks.push(wrappedHook) return wrappedHook } else { const apiName = toHandlerKey(ErrorTypeStrings[type].replace(/ hook$/, '')) warn$1( `${apiName} is called when there is no active component instance to be associated with. Lifecycle injection APIs can only be used during execution of setup().` + (` If you are using async setup(), make sure to register lifecycle hooks before the first await statement.`), ) } } function createHook(lifecycle) { return (hook, target = currentInstance) => { if (!isInSSRComponentSetup || lifecycle === 'sp') injectHook(lifecycle, (...args) => hook(...args), target) } } const onBeforeMount = createHook('bm') const onMounted = createHook('m') const onBeforeUpdate = createHook('bu') const onUpdated = createHook('u') const onBeforeUnmount = createHook('bum') const onUnmounted = createHook('um') const onServerPrefetch = createHook('sp') const onRenderTriggered = createHook( 'rtg', ) const onRenderTracked = createHook( 'rtc', ) function onErrorCaptured(hook, target = currentInstance) { injectHook('ec', hook, target) } function getPublicInstance(i) { if (!i) return null if (isStatefulComponent(i)) return getExposeProxy(i) || i.proxy return getPublicInstance(i.parent) } const publicPropertiesMap = ( // Move PURE marker to new line to workaround compiler discarding it // due to type annotation /* @__PURE__ */ extend(/* @__PURE__ */ Object.create(null), { $: i => i, $el: i => i.vnode.el, $data: i => i.data, $props: i => shallowReadonly(i.props), $attrs: i => shallowReadonly(i.attrs), $slots: i => shallowReadonly(i.slots), $refs: i => shallowReadonly(i.refs), $parent: i => getPublicInstance(i.parent), $root: i => getPublicInstance(i.root), $emit: i => i.emit, $options: i => resolveMergedOptions(i), $forceUpdate: i => i.f || (i.f = () => { i.effect.dirty = true queueJob(i.update) }), $nextTick: i => i.n || (i.n = nextTick.bind(i.proxy)), $watch: i => instanceWatch.bind(i), }) ) const isReservedPrefix = key => key === '_' || key === '$' const hasSetupBinding = (state, key) => state !== EMPTY_OBJ && !state.__isScriptSetup && hasOwn(state, key) const PublicInstanceProxyHandlers = { get({ _: instance }, key) { if (key === '__v_skip') return true const { ctx, setupState, data, props, accessCache, type, appContext } = instance if (key === '__isVue') return true let normalizedProps if (key[0] !== '$') { const n = accessCache[key] if (n !== void 0) { switch (n) { case 1 /* SETUP */: return setupState[key] case 2 /* DATA */: return data[key] case 4 /* CONTEXT */: return ctx[key] case 3 /* PROPS */: return props[key] } } else if (hasSetupBinding(setupState, key)) { accessCache[key] = 1 /* SETUP */ return setupState[key] } else if (data !== EMPTY_OBJ && hasOwn(data, key)) { accessCache[key] = 2 /* DATA */ return data[key] } else if ( // only cache other properties when instance has declared (thus stable) // props (normalizedProps = instance.propsOptions[0]) && hasOwn(normalizedProps, key) ) { accessCache[key] = 3 /* PROPS */ return props[key] } else if (ctx !== EMPTY_OBJ && hasOwn(ctx, key)) { accessCache[key] = 4 /* CONTEXT */ return ctx[key] } else if (shouldCacheAccess) { accessCache[key] = 0 /* OTHER */ } } const publicGetter = publicPropertiesMap[key] let cssModule, globalProperties if (publicGetter) { if (key === '$attrs') { track(instance.attrs, 'get', '') markAttrsAccessed() } else if (key === '$slots') { track(instance, 'get', key) } return publicGetter(instance) } else if ( // css module (injected by vue-loader) (cssModule = type.__cssModules) && (cssModule = cssModule[key]) ) { return cssModule } else if (ctx !== EMPTY_OBJ && hasOwn(ctx, key)) { accessCache[key] = 4 /* CONTEXT */ return ctx[key] } else if ( // global properties globalProperties = appContext.config.globalProperties, hasOwn(globalProperties, key) ) { { return globalProperties[key] } } else if (currentRenderingInstance && (!isString(key) // #1091 avoid internal isRef/isVNode checks on component instance leading // to infinite warning loop || key.indexOf('__v') !== 0)) { if (data !== EMPTY_OBJ && isReservedPrefix(key[0]) && hasOwn(data, key)) { warn$1( `Property ${JSON.stringify( key, )} must be accessed via $data because it starts with a reserved character ("$" or "_") and is not proxied on the render context.`, ) } else if (instance === currentRenderingInstance) { warn$1( `Property ${JSON.stringify(key)} was accessed during render but is not defined on instance.`, ) } } }, set({ _: instance }, key, value) { const { data, setupState, ctx } = instance if (hasSetupBinding(setupState, key)) { setupState[key] = value return true } else if (setupState.__isScriptSetup && hasOwn(setupState, key)) { warn$1(`Cannot mutate