2024-05-30 02:02:10 +00:00
/ * *
* @ vue / shared v3 . 4.24
* ( c ) 2018 - present Yuxi ( Evan ) You and Vue contributors
* @ license MIT
* * /
/*! #__NO_SIDE_EFFECTS__ */
// @__NO_SIDE_EFFECTS__
function makeMap ( str , expectsLowerCase ) {
const set2 = new Set ( str . split ( "," ) ) ;
2024-09-24 08:56:37 +00:00
return ( val ) => set2 . has ( val ) ;
2024-05-30 02:02:10 +00:00
}
const EMPTY _OBJ = { } ;
const EMPTY _ARR = [ ] ;
const NOOP = ( ) => {
} ;
const NO = ( ) => false ;
const isOn = ( key ) => 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 ;
const 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 isFunction = ( val ) => typeof val === "function" ;
const isString = ( val ) => typeof val === "string" ;
const isSymbol = ( val ) => typeof val === "symbol" ;
const isObject$1 = ( val ) => val !== null && typeof val === "object" ;
const isPromise = ( val ) => {
return ( isObject$1 ( val ) || isFunction ( val ) ) && isFunction ( val . then ) && isFunction ( val . catch ) ;
} ;
const objectToString = Object . prototype . toString ;
const toTypeString = ( value ) => objectToString . call ( value ) ;
const toRawType = ( value ) => {
return toTypeString ( value ) . slice ( 8 , - 1 ) ;
} ;
const isPlainObject = ( val ) => toTypeString ( val ) === "[object Object]" ;
const isIntegerKey = ( key ) => isString ( key ) && key !== "NaN" && key [ 0 ] !== "-" && "" + 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 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 ) ;
const invokeArrayFns = ( fns , arg ) => {
for ( let i = 0 ; i < fns . length ; i ++ ) {
fns [ i ] ( arg ) ;
}
} ;
const def = ( obj , key , value ) => {
Object . defineProperty ( obj , key , {
configurable : true ,
enumerable : false ,
value
} ) ;
} ;
const looseToNumber = ( val ) => {
const n = parseFloat ( val ) ;
return isNaN ( n ) ? val : n ;
} ;
const toNumber = ( val ) => {
const n = isString ( val ) ? Number ( val ) : NaN ;
return isNaN ( n ) ? val : n ;
} ;
let _globalThis ;
const 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$1 ( 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 ] ;
const normalizedKey = key . startsWith ( ` -- ` ) ? key : hyphenate ( key ) ;
if ( isString ( value ) || typeof value === "number" ) {
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$1 ( value ) ) {
for ( const name in value ) {
if ( value [ name ] ) {
res += name + " " ;
}
}
}
return res . trim ( ) ;
}
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 isKnownHtmlAttr = /* @__PURE__ */ makeMap (
` accept,accept-charset,accesskey,action,align,allow,alt,async,autocapitalize,autocomplete,autofocus,autoplay,background,bgcolor,border,buffered,capture,challenge,charset,checked,cite,class,code,codebase,color,cols,colspan,content,contenteditable,contextmenu,controls,coords,crossorigin,csp,data,datetime,decoding,default,defer,dir,dirname,disabled,download,draggable,dropzone,enctype,enterkeyhint,for,form,formaction,formenctype,formmethod,formnovalidate,formtarget,headers,height,hidden,high,href,hreflang,http-equiv,icon,id,importance,inert,integrity,ismap,itemprop,keytype,kind,label,lang,language,loading,list,loop,low,manifest,max,maxlength,minlength,media,min,multiple,muted,name,novalidate,open,optimum,pattern,ping,placeholder,poster,preload,radiogroup,readonly,referrerpolicy,rel,required,reversed,rows,rowspan,sandbox,scope,scoped,selected,shape,size,sizes,slot,span,spellcheck,src,srcdoc,srclang,srcset,start,step,style,summary,tabindex,target,title,translate,type,usemap,value,width,wrap `
) ;
const isKnownSvgAttr = /* @__PURE__ */ makeMap (
` xmlns,accent-height,accumulate,additive,alignment-baseline,alphabetic,amplitude,arabic-form,ascent,attributeName,attributeType,azimuth,baseFrequency,baseline-shift,baseProfile,bbox,begin,bias,by,calcMode,cap-height,class,clip,clipPathUnits,clip-path,clip-rule,color,color-interpolation,color-interpolation-filters,color-profile,color-rendering,contentScriptType,contentStyleType,crossorigin,cursor,cx,cy,d,decelerate,descent,diffuseConstant,direction,display,divisor,dominant-baseline,dur,dx,dy,edgeMode,elevation,enable-background,end,exponent,fill,fill-opacity,fill-rule,filter,filterRes,filterUnits,flood-color,flood-opacity,font-family,font-size,font-size-adjust,font-stretch,font-style,font-variant,font-weight,format,from,fr,fx,fy,g1,g2,glyph-name,glyph-orientation-horizontal,glyph-orientation-vertical,glyphRef,gradientTransform,gradientUnits,hanging,height,href,hreflang,horiz-adv-x,horiz-origin-x,id,ideographic,image-rendering,in,in2,intercept,k,k1,k2,k3,k4,kernelMatrix,kernelUnitLength,kerning,keyPoints,keySplines,keyTimes,lang,lengthAdjust,letter-spacing,lighting-color,limitingConeAngle,local,marker-end,marker-mid,marker-start,markerHeight,markerUnits,markerWidth,mask,maskContentUnits,maskUnits,mathematical,max,media,method,min,mode,name,numOctaves,offset,opacity,operator,order,orient,orientation,origin,overflow,overline-position,overline-thickness,panose-1,paint-order,path,pathLength,patternContentUnits,patternTransform,patternUnits,ping,pointer-events,points,pointsAtX,pointsAtY,pointsAtZ,preserveAlpha,preserveAspectRatio,primitiveUnits,r,radius,referrerPolicy,refX,refY,rel,rendering-intent,repeatCount,repeatDur,requiredExtensions,requiredFeatures,restart,result,rotate,rx,ry,scale,seed,shape-rendering,slope,spacing,specularConstant,specularExponent,speed,spreadMethod,startOffset,stdDeviation,stemh,stemv,stitchTiles,stop-color,stop-opacity,strikethrough-position,strikethrough-thickness,string,stroke,stroke-dasharray,stroke-dashoffset,stroke-linecap,stroke-linejoin,stroke-miterlimit,stroke-opacity,stroke-width,style,surfaceScale,systemLanguage,tabindex,tableValues,target,targetX,targetY,text-anchor,text-decoration,text-rendering,textLength,to,transform,transform-origin,type,u1,u2,underline-position,underline-thickness,unicode,unicode-bidi,unicode-range,units-per-em,v-alphabetic,v-hanging,v-ideographic,v-mathematical,values,vector-effect,version,vert-adv-y,vert-origin-x,vert-origin-y,viewBox,viewTarget,visibility,width,widths,word-spacing,writing-mode,x,x-height,x1,x2,xChannelSelector,xlink:actuate,xlink:arcrole,xlink:href,xlink:role,xlink:show,xlink:title,xlink:type,xmlns:xlink,xml:base,xml:lang,xml:space,y,y1,y2,yChannelSelector,z,zoomAndPan `
) ;
function isRenderableAttrValue ( value ) {
if ( value == null ) {
return false ;
}
const type = typeof value ;
return type === "string" || type === "number" || type === "boolean" ;
}
const toDisplayString = ( val ) => {
return isString ( val ) ? val : val == null ? "" : isArray ( val ) || isObject$1 ( val ) && ( val . toString === objectToString || ! isFunction ( val . toString ) ) ? JSON . stringify ( val , replacer , 2 ) : String ( val ) ;
} ;
const 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$1 ( val ) && ! isArray ( val ) && ! isPlainObject ( val ) ) {
return String ( val ) ;
}
return val ;
} ;
const stringifySymbol = ( v , i = "" ) => {
var _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
) ;
} ;
/ * *
* @ vue / reactivity v3 . 4.24
* ( c ) 2018 - present Yuxi ( Evan ) You and Vue contributors
* @ license MIT
* * /
let activeEffectScope ;
class EffectScope {
constructor ( detached = false ) {
this . detached = detached ;
this . _active = true ;
this . effects = [ ] ;
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 ;
}
}
}
/ * *
* 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 ( effect2 , scope = activeEffectScope ) {
if ( scope && scope . active ) {
scope . effects . push ( effect2 ) ;
}
}
function getCurrentScope ( ) {
return activeEffectScope ;
}
function onScopeDispose ( fn ) {
if ( activeEffectScope ) {
activeEffectScope . cleanups . push ( fn ) ;
}
}
let activeEffect ;
class ReactiveEffect {
constructor ( fn , trigger2 , scheduler , scope ) {
this . fn = fn ;
this . trigger = trigger2 ;
this . scheduler = scheduler ;
this . active = true ;
this . deps = [ ] ;
this . _dirtyLevel = 4 ;
this . _trackId = 0 ;
this . _runnings = 0 ;
this . _shouldSchedule = false ;
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 ( ) ;
}
let lastShouldTrack = shouldTrack ;
let lastEffect = activeEffect ;
try {
shouldTrack = true ;
activeEffect = this ;
this . _runnings ++ ;
preCleanupEffect ( this ) ;
return this . fn ( ) ;
} finally {
postCleanupEffect ( this ) ;
this . _runnings -- ;
activeEffect = lastEffect ;
shouldTrack = lastShouldTrack ;
}
}
stop ( ) {
var _a ;
if ( this . active ) {
preCleanupEffect ( this ) ;
postCleanupEffect ( this ) ;
( _a = this . onStop ) == null ? void 0 : _a . call ( this ) ;
this . active = false ;
}
}
}
function triggerComputed ( computed2 ) {
return computed2 . 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 ) {
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 ++ ;
}
}
}
const queueEffectSchedulers = [ ] ;
function triggerEffects ( dep , dirtyLevel , debuggerEventExtraInfo ) {
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 ) ) {
effect2 . trigger ( ) ;
if ( ( ! effect2 . _runnings || effect2 . allowRecurse ) && effect2 . _dirtyLevel !== 2 ) {
effect2 . _shouldSchedule = false ;
if ( effect2 . scheduler ) {
queueEffectSchedulers . push ( effect2 . scheduler ) ;
}
}
}
}
resetScheduling ( ) ;
}
const createDep = ( cleanup , computed2 ) => {
const dep = /* @__PURE__ */ new Map ( ) ;
dep . cleanup = cleanup ;
dep . computed = computed2 ;
return dep ;
} ;
const targetMap = /* @__PURE__ */ new WeakMap ( ) ;
const ITERATE _KEY = Symbol ( "" ) ;
const MAP _KEY _ITERATE _KEY = Symbol ( "" ) ;
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
) ;
}
}
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
) ;
}
}
resetScheduling ( ) ;
}
function getDepFromReactive ( object , key ) {
var _a ;
return ( _a = targetMap . get ( object ) ) == null ? void 0 : _a . get ( key ) ;
}
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 , 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$1 ( 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 ) ;
}
}
return result ;
}
deleteProperty ( target , key ) {
const hadKey = hasOwn ( target , key ) ;
target [ key ] ;
const result = Reflect . deleteProperty ( target , key ) ;
if ( result && hadKey ) {
trigger ( target , "delete" , key , void 0 ) ;
}
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 ) {
return true ;
}
deleteProperty ( target , key ) {
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 , isReadonly2 = false , isShallow2 = false ) {
target = target [ "__v_raw" ] ;
const rawTarget = toRaw ( target ) ;
const rawKey = toRaw ( key ) ;
if ( ! isReadonly2 ) {
if ( hasChanged ( key , rawKey ) ) {
track ( rawTarget , "get" , key ) ;
}
track ( rawTarget , "get" , rawKey ) ;
}
const { has : has2 } = getProto ( rawTarget ) ;
const wrap = isShallow2 ? toShallow : isReadonly2 ? 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 , isReadonly2 = false ) {
const target = this [ "__v_raw" ] ;
const rawTarget = toRaw ( target ) ;
const rawKey = toRaw ( key ) ;
if ( ! isReadonly2 ) {
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 , isReadonly2 = false ) {
target = target [ "__v_raw" ] ;
! isReadonly2 && 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 ) ;
}
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 ) ;
}
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 ) ;
}
get2 ? get2 . call ( target , key ) : void 0 ;
const result = target . delete ( key ) ;
if ( hadKey ) {
trigger ( target , "delete" , key , void 0 ) ;
}
return result ;
}
function clear ( ) {
const target = toRaw ( this ) ;
const hadItems = target . size !== 0 ;
const result = target . clear ( ) ;
if ( hadItems ) {
trigger ( target , "clear" , void 0 , void 0 ) ;
}
return result ;
}
function createForEach ( isReadonly2 , isShallow2 ) {
return function forEach ( callback , thisArg ) {
const observed = this ;
const target = observed [ "__v_raw" ] ;
const rawTarget = toRaw ( target ) ;
const wrap = isShallow2 ? toShallow : isReadonly2 ? toReadonly : toReactive ;
! isReadonly2 && track ( rawTarget , "iterate" , ITERATE _KEY ) ;
return target . forEach ( ( value , key ) => {
return callback . call ( thisArg , wrap ( value ) , wrap ( key ) , observed ) ;
} ) ;
} ;
}
function createIterableMethod ( method , isReadonly2 , isShallow2 ) {
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 = isShallow2 ? toShallow : isReadonly2 ? toReadonly : toReactive ;
! isReadonly2 && 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 ) {
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 ( isReadonly2 , shallow ) {
const instrumentations = shallow ? isReadonly2 ? shallowReadonlyInstrumentations : shallowInstrumentations : isReadonly2 ? readonlyInstrumentations : mutableInstrumentations ;
return ( target , key , receiver ) => {
if ( key === "__v_isReactive" ) {
return ! isReadonly2 ;
} else if ( key === "__v_isReadonly" ) {
return isReadonly2 ;
} 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 )
} ;
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 ;
case "Map" :
case "Set" :
case "WeakMap" :
case "WeakSet" :
return 2 ;
default :
return 0 ;
}
}
function getTargetType ( value ) {
return value [ "__v_skip" ] || ! Object . isExtensible ( value ) ? 0 : 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$1 ( 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 ) {
return target ;
}
const proxy = new Proxy (
target ,
targetType === 2 ? 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$1 ( value ) ? reactive ( value ) : value ;
const toReadonly = ( value ) => isObject$1 ( value ) ? readonly ( value ) : value ;
class ComputedRefImpl {
constructor ( getter , _setter , isReadonly2 , 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" ] = isReadonly2 ;
}
get value ( ) {
const self2 = toRaw ( this ) ;
if ( ( ! self2 . _cacheable || self2 . effect . dirty ) && hasChanged ( self2 . _value , self2 . _value = self2 . effect . run ( ) ) ) {
triggerRefValue ( self2 , 4 ) ;
}
trackRefValue ( self2 ) ;
if ( self2 . effect . _dirtyLevel >= 2 ) {
triggerRefValue ( self2 , 2 ) ;
}
return self2 . _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 = NOOP ;
} else {
getter = getterOrOptions . get ;
setter = getterOrOptions . set ;
}
const cRef = new ComputedRefImpl ( getter , setter , onlyGetter || ! setter , isSSR ) ;
return cRef ;
}
function trackRefValue ( ref2 ) {
var _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
)
) ;
}
}
function triggerRefValue ( ref2 , dirtyLevel = 4 , newVal ) {
ref2 = toRaw ( ref2 ) ;
const dep = ref2 . dep ;
if ( dep ) {
triggerEffects (
dep ,
dirtyLevel
) ;
}
}
function isRef ( r ) {
return ! ! ( 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 , _ _v _isShallow ) {
this . _ _v _isShallow = _ _v _isShallow ;
this . dep = void 0 ;
this . _ _v _isRef = true ;
this . _rawValue = _ _v _isShallow ? value : toRaw ( value ) ;
this . _value = _ _v _isShallow ? value : toReactive ( value ) ;
}
get value ( ) {
trackRefValue ( this ) ;
return this . _value ;
}
set value ( newVal ) {
const useDirectValue = this . _ _v _isShallow || isShallow ( newVal ) || isReadonly ( newVal ) ;
newVal = useDirectValue ? newVal : toRaw ( newVal ) ;
if ( hasChanged ( newVal , this . _rawValue ) ) {
this . _rawValue = newVal ;
this . _value = useDirectValue ? newVal : toReactive ( newVal ) ;
triggerRefValue ( this , 4 ) ;
}
}
}
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 ) ;
}
class CustomRefImpl {
constructor ( factory ) {
this . dep = void 0 ;
this . _ _v _isRef = true ;
const { get : get2 , set : set2 } = factory (
( ) => trackRefValue ( this ) ,
( ) => triggerRefValue ( this )
) ;
this . _get = get2 ;
this . _set = set2 ;
}
get value ( ) {
return this . _get ( ) ;
}
set value ( newVal ) {
this . _set ( newVal ) ;
}
}
function customRef ( factory ) {
return new CustomRefImpl ( factory ) ;
}
class ObjectRefImpl {
constructor ( _object , _key , _defaultValue ) {
this . _object = _object ;
this . _key = _key ;
this . _defaultValue = _defaultValue ;
this . _ _v _isRef = true ;
}
get value ( ) {
const val = this . _object [ this . _key ] ;
return val === void 0 ? this . _defaultValue : val ;
}
set value ( newVal ) {
this . _object [ this . _key ] = newVal ;
}
get dep ( ) {
return getDepFromReactive ( toRaw ( this . _object ) , this . _key ) ;
}
}
class GetterRefImpl {
constructor ( _getter ) {
this . _getter = _getter ;
this . _ _v _isRef = true ;
this . _ _v _isReadonly = true ;
}
get value ( ) {
return this . _getter ( ) ;
}
}
function toRef$1 ( source , key , defaultValue ) {
if ( isRef ( source ) ) {
return source ;
} else if ( isFunction ( source ) ) {
return new GetterRefImpl ( source ) ;
} else if ( isObject$1 ( source ) && arguments . length > 1 ) {
return propertyToRef ( source , key , defaultValue ) ;
} else {
return ref ( source ) ;
}
}
function propertyToRef ( source , key , defaultValue ) {
const val = source [ key ] ;
return isRef ( val ) ? val : new ObjectRefImpl ( source , key , defaultValue ) ;
}
/ * *
* @ vue / runtime - core v3 . 4.24
* ( c ) 2018 - present Yuxi ( Evan ) You and Vue contributors
* @ license MIT
* * /
const stack = [ ] ;
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 ) => {
var _a , _b ;
return ( _b = ( _a = a . toString ) == null ? void 0 : _a . call ( a ) ) != null ? _b : JSON . stringify ( a ) ;
} ) . join ( "" ) ,
instance && instance . proxy ,
trace . map (
( { 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 ] ;
}
}
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 ;
}
}
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 = ` https://vuejs.org/error-reference/#runtime- ${ 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 ) {
{
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 ;
function nextTick ( fn ) {
const p2 = currentFlushPromise || resolvedPromise ;
return fn ? p2 . then ( this ? fn . bind ( this ) : fn ) : p2 ;
}
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 , seen2 , i = isFlushing ? flushIndex + 1 : 0 ) {
for ( ; i < queue . length ; i ++ ) {
const cb = queue [ i ] ;
if ( cb && cb . pre ) {
if ( instance && cb . id !== instance . uid ) {
continue ;
}
queue . splice ( i , 1 ) ;
i -- ;
cb ( ) ;
}
}
}
function flushPostFlushCbs ( seen2 ) {
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 ;
for ( postFlushIndex = 0 ; postFlushIndex < activePostFlushCbs . length ; postFlushIndex ++ ) {
activePostFlushCbs [ postFlushIndex ] ( ) ;
}
activePostFlushCbs = null ;
postFlushIndex = 0 ;
}
}
const getId = ( job ) => job . id == null ? Infinity : job . id ;
const 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 ( seen2 ) {
isFlushPending = false ;
isFlushing = true ;
queue . sort ( comparator ) ;
try {
for ( flushIndex = 0 ; flushIndex < queue . length ; flushIndex ++ ) {
const job = queue [ flushIndex ] ;
if ( job && job . active !== false ) {
if ( false )
;
callWithErrorHandling ( job , null , 14 ) ;
}
}
} finally {
flushIndex = 0 ;
queue . length = 0 ;
flushPostFlushCbs ( ) ;
isFlushing = false ;
currentFlushPromise = null ;
if ( queue . length || pendingPostFlushCbs . length ) {
flushJobs ( ) ;
}
}
}
function emit ( instance , event , ... rawArgs ) {
if ( instance . isUnmounted )
return ;
const props = instance . vnode . props || EMPTY _OBJ ;
let args = rawArgs ;
const isModelListener2 = event . startsWith ( "update:" ) ;
const modelArg = isModelListener2 && 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 ) ;
}
}
let handlerName ;
let handler = props [ handlerName = toHandlerKey ( event ) ] || // also try camelCase event handler (#2249)
props [ handlerName = toHandlerKey ( camelize ( event ) ) ] ;
if ( ! handler && isModelListener2 ) {
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 ;
let 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$1 ( comp ) ) {
cache . set ( comp , null ) ;
}
return null ;
}
if ( isArray ( raw ) ) {
raw . forEach ( ( key ) => normalized [ key ] = null ) ;
} else {
extend ( normalized , raw ) ;
}
if ( isObject$1 ( 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 ( instance ) {
const prev = currentRenderingInstance ;
currentRenderingInstance = instance ;
currentScopeId = instance && instance . type . _ _scopeId || null ;
return prev ;
}
function pushScopeId ( id ) {
currentScopeId = id ;
}
function popScopeId ( ) {
currentScopeId = null ;
}
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 ( ctx ) ;
let res ;
try {
res = fn ( ... args ) ;
} finally {
setCurrentRenderingInstance ( prevInstance ) ;
if ( renderFnWithContext . _d ) {
setBlockTracking ( 1 ) ;
}
}
return res ;
} ;
renderFnWithContext . _n = true ;
renderFnWithContext . _c = true ;
renderFnWithContext . _d = true ;
return renderFnWithContext ;
}
function markAttrsAccessed ( ) {
}
function renderComponentRoot ( instance ) {
const {
type : Component ,
vnode ,
proxy ,
withProxy ,
propsOptions : [ propsOptions ] ,
slots ,
attrs ,
emit : emit2 ,
render ,
renderCache ,
props ,
data ,
setupState ,
ctx ,
inheritAttrs
} = instance ;
const prev = setCurrentRenderingInstance ( instance ) ;
let result ;
let fallthroughAttrs ;
try {
if ( vnode . shapeFlag & 4 ) {
const proxyToUse = withProxy || proxy ;
const thisProxy = false ? 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 (
render . call (
thisProxy ,
proxyToUse ,
renderCache ,
false ? shallowReadonly ( props ) : props ,
setupState ,
data ,
ctx
)
) ;
fallthroughAttrs = attrs ;
} else {
const render2 = Component ;
if ( false )
;
result = normalizeVNode (
render2 . length > 1 ? render2 (
false ? shallowReadonly ( props ) : props ,
false ? {
get attrs ( ) {
markAttrsAccessed ( ) ;
return attrs ;
} ,
slots ,
emit : emit2
} : { attrs , slots , emit : emit2 }
) : render2 (
false ? shallowReadonly ( props ) : props ,
null
)
) ;
fallthroughAttrs = Component . props ? attrs : getFunctionalFallthrough ( attrs ) ;
}
} catch ( err ) {
blockStack . length = 0 ;
handleError ( err , instance , 1 ) ;
result = createVNode ( Comment ) ;
}
let root = 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 ) ;
}
}
}
if ( vnode . dirs ) {
root = cloneVNode ( root ) ;
root . dirs = root . dirs ? root . dirs . concat ( vnode . dirs ) : vnode . dirs ;
}
if ( vnode . transition ) {
root . transition = vnode . transition ;
}
{
result = root ;
}
setCurrentRenderingInstance ( prev ) ;
return result ;
}
const getFunctionalFallthrough = ( attrs ) => {
let res ;
for ( const key in attrs ) {
if ( key === "class" || key === "style" || isOn ( key ) ) {
( res || ( res = { } ) ) [ key ] = attrs [ key ] ;
}
}
return res ;
} ;
const 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 shouldUpdateComponent ( prevVNode , nextVNode , optimized ) {
const { props : prevProps , children : prevChildren , component } = prevVNode ;
const { props : nextProps , children : nextChildren , patchFlag } = nextVNode ;
const emits = component . emitsOptions ;
if ( nextVNode . dirs || nextVNode . transition ) {
return true ;
}
if ( optimized && patchFlag >= 0 ) {
if ( patchFlag & 1024 ) {
return true ;
}
if ( patchFlag & 16 ) {
if ( ! prevProps ) {
return ! ! nextProps ;
}
return hasPropsChanged ( prevProps , nextProps , emits ) ;
} else if ( patchFlag & 8 ) {
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 COMPONENTS = "components" ;
function resolveComponent ( name , maybeSelfReference ) {
return resolveAsset ( COMPONENTS , name , true , maybeSelfReference ) || name ;
}
const NULL _DYNAMIC _COMPONENT = Symbol . for ( "v-ndc" ) ;
function resolveDynamicComponent ( component ) {
if ( isString ( component ) ) {
return resolveAsset ( COMPONENTS , component , false ) || component ;
} else {
return component || NULL _DYNAMIC _COMPONENT ;
}
}
function resolveAsset ( type , name , warnMissing = true , maybeSelfReference = false ) {
const instance = currentRenderingInstance || currentInstance ;
if ( instance ) {
const Component = instance . type ;
2024-09-24 08:56:37 +00:00
{
2024-05-30 02:02:10 +00:00
const selfName = getComponentName (
Component ,
false
) ;
if ( selfName && ( selfName === name || selfName === camelize ( name ) || selfName === capitalize ( camelize ( name ) ) ) ) {
return Component ;
}
}
const res = (
// local registration
// check instance[type] first which is resolved for options API
resolve ( instance [ type ] || Component [ type ] , name ) || // global registration
resolve ( instance . appContext [ type ] , name )
) ;
if ( ! res && maybeSelfReference ) {
return Component ;
}
return res ;
}
}
function resolve ( registry , name ) {
return registry && ( registry [ name ] || registry [ camelize ( name ) ] || registry [ capitalize ( camelize ( name ) ) ] ) ;
}
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" ) ;
const useSSRContext = ( ) => {
{
const ctx = inject ( ssrContextKey ) ;
return ctx ;
}
} ;
function watchEffect ( effect2 , options ) {
return doWatch ( effect2 , null , options ) ;
}
function watchPostEffect ( effect2 , options ) {
return doWatch (
effect2 ,
null ,
{ flush : "post" }
) ;
}
const INITIAL _WATCHER _VALUE = { } ;
function watch ( source , cb , options ) {
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 ( ) ;
} ;
}
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
;
} ) ;
} else if ( isFunction ( source ) ) {
if ( cb ) {
getter = ( ) => callWithErrorHandling ( source , instance , 2 ) ;
} else {
getter = ( ) => {
if ( cleanup ) {
cleanup ( ) ;
}
return callWithAsyncErrorHandling (
source ,
instance ,
3 ,
[ onCleanup ]
) ;
} ;
}
} else {
getter = NOOP ;
}
if ( cb && deep ) {
const baseGetter = getter ;
getter = ( ) => traverse ( baseGetter ( ) ) ;
}
let cleanup ;
let onCleanup = ( fn ) => {
cleanup = effect2 . onStop = ( ) => {
callWithErrorHandling ( fn , instance , 4 ) ;
cleanup = effect2 . 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 ? new Array ( source . length ) . fill ( INITIAL _WATCHER _VALUE ) : INITIAL _WATCHER _VALUE ;
const job = ( ) => {
if ( ! effect2 . active || ! effect2 . dirty ) {
return ;
}
if ( cb ) {
const newValue = effect2 . 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 {
effect2 . 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 effect2 = new ReactiveEffect ( getter , NOOP , scheduler ) ;
const scope = getCurrentScope ( ) ;
const unwatch = ( ) => {
effect2 . stop ( ) ;
if ( scope ) {
remove ( scope . effects , effect2 ) ;
}
} ;
if ( cb ) {
if ( immediate ) {
job ( ) ;
} else {
oldValue = effect2 . run ( ) ;
}
} else if ( flush === "post" ) {
queuePostRenderEffect (
effect2 . run . bind ( effect2 ) ,
instance && instance . suspense
) ;
} else {
effect2 . 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 , currentDepth = 0 , seen2 ) {
if ( ! isObject$1 ( value ) || value [ "__v_skip" ] ) {
return value ;
}
if ( depth && depth > 0 ) {
if ( currentDepth >= depth ) {
return value ;
}
currentDepth ++ ;
}
seen2 = seen2 || /* @__PURE__ */ new Set ( ) ;
if ( seen2 . has ( value ) ) {
return value ;
}
seen2 . add ( value ) ;
if ( isRef ( value ) ) {
traverse ( value . value , depth , currentDepth , seen2 ) ;
} else if ( isArray ( value ) ) {
for ( let i = 0 ; i < value . length ; i ++ ) {
traverse ( value [ i ] , depth , currentDepth , seen2 ) ;
}
} else if ( isSet ( value ) || isMap ( value ) ) {
value . forEach ( ( v ) => {
traverse ( v , depth , currentDepth , seen2 ) ;
} ) ;
} else if ( isPlainObject ( value ) ) {
for ( const key in value ) {
traverse ( value [ key ] , depth , currentDepth , seen2 ) ;
}
}
return value ;
}
function withDirectives ( vnode , directives ) {
if ( currentRenderingInstance === null ) {
return vnode ;
}
const instance = getExposeProxy ( currentRenderingInstance ) || currentRenderingInstance . proxy ;
const bindings = vnode . dirs || ( vnode . dirs = [ ] ) ;
for ( let i = 0 ; i < directives . length ; i ++ ) {
let [ dir , value , arg , modifiers = EMPTY _OBJ ] = directives [ i ] ;
if ( dir ) {
if ( isFunction ( dir ) ) {
dir = {
mounted : dir ,
updated : dir
} ;
}
if ( dir . deep ) {
traverse ( value ) ;
}
bindings . push ( {
dir ,
instance ,
value ,
oldValue : void 0 ,
arg ,
modifiers
} ) ;
}
}
return vnode ;
}
function invokeDirectiveHook ( vnode , prevVNode , instance , name ) {
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 ;
}
let hook = binding . dir [ name ] ;
if ( hook ) {
pauseTracking ( ) ;
callWithAsyncErrorHandling ( hook , instance , 8 , [
vnode . el ,
binding ,
vnode ,
prevVNode
] ) ;
resetTracking ( ) ;
}
}
}
const leaveCbKey = Symbol ( "_leaveCb" ) ;
const enterCbKey = Symbol ( "_enterCb" ) ;
function useTransitionState ( ) {
const state = {
isMounted : false ,
isLeaving : false ,
isUnmounting : false ,
leavingVNodes : /* @__PURE__ */ new Map ( )
} ;
onMounted ( ( ) => {
state . isMounted = true ;
} ) ;
onBeforeUnmount ( ( ) => {
state . isUnmounting = true ;
} ) ;
return state ;
}
const TransitionHookValidator = [ Function , Array ] ;
const BaseTransitionPropsValidators = {
mode : String ,
appear : Boolean ,
persisted : Boolean ,
// enter
onBeforeEnter : TransitionHookValidator ,
onEnter : TransitionHookValidator ,
onAfterEnter : TransitionHookValidator ,
onEnterCancelled : TransitionHookValidator ,
// leave
onBeforeLeave : TransitionHookValidator ,
onLeave : TransitionHookValidator ,
onAfterLeave : TransitionHookValidator ,
onLeaveCancelled : TransitionHookValidator ,
// appear
onBeforeAppear : TransitionHookValidator ,
onAppear : TransitionHookValidator ,
onAfterAppear : TransitionHookValidator ,
onAppearCancelled : TransitionHookValidator
} ;
const BaseTransitionImpl = {
name : ` BaseTransition ` ,
props : BaseTransitionPropsValidators ,
setup ( props , { slots } ) {
const instance = getCurrentInstance ( ) ;
const state = useTransitionState ( ) ;
return ( ) => {
const children = slots . default && getTransitionRawChildren ( slots . default ( ) , true ) ;
if ( ! children || ! children . length ) {
return ;
}
let child = children [ 0 ] ;
if ( children . length > 1 ) {
for ( const c of children ) {
if ( c . type !== Comment ) {
child = c ;
break ;
}
}
}
const rawProps = toRaw ( props ) ;
const { mode } = rawProps ;
if ( state . isLeaving ) {
return emptyPlaceholder ( child ) ;
}
const innerChild = getKeepAliveChild ( child ) ;
if ( ! innerChild ) {
return emptyPlaceholder ( child ) ;
}
const enterHooks = resolveTransitionHooks (
innerChild ,
rawProps ,
state ,
instance
) ;
setTransitionHooks ( innerChild , enterHooks ) ;
const oldChild = instance . subTree ;
const oldInnerChild = oldChild && getKeepAliveChild ( oldChild ) ;
if ( oldInnerChild && oldInnerChild . type !== Comment && ! isSameVNodeType ( innerChild , oldInnerChild ) ) {
const leavingHooks = resolveTransitionHooks (
oldInnerChild ,
rawProps ,
state ,
instance
) ;
setTransitionHooks ( oldInnerChild , leavingHooks ) ;
if ( mode === "out-in" ) {
state . isLeaving = true ;
leavingHooks . afterLeave = ( ) => {
state . isLeaving = false ;
if ( instance . update . active !== false ) {
instance . effect . dirty = true ;
instance . update ( ) ;
}
} ;
return emptyPlaceholder ( child ) ;
} else if ( mode === "in-out" && innerChild . type !== Comment ) {
leavingHooks . delayLeave = ( el , earlyRemove , delayedLeave ) => {
const leavingVNodesCache = getLeavingNodesForType (
state ,
oldInnerChild
) ;
leavingVNodesCache [ String ( oldInnerChild . key ) ] = oldInnerChild ;
el [ leaveCbKey ] = ( ) => {
earlyRemove ( ) ;
el [ leaveCbKey ] = void 0 ;
delete enterHooks . delayedLeave ;
} ;
enterHooks . delayedLeave = delayedLeave ;
} ;
}
}
return child ;
} ;
}
} ;
const BaseTransition = BaseTransitionImpl ;
function getLeavingNodesForType ( state , vnode ) {
const { leavingVNodes } = state ;
let leavingVNodesCache = leavingVNodes . get ( vnode . type ) ;
if ( ! leavingVNodesCache ) {
leavingVNodesCache = /* @__PURE__ */ Object . create ( null ) ;
leavingVNodes . set ( vnode . type , leavingVNodesCache ) ;
}
return leavingVNodesCache ;
}
function resolveTransitionHooks ( vnode , props , state , instance ) {
const {
appear ,
mode ,
persisted = false ,
onBeforeEnter ,
onEnter ,
onAfterEnter ,
onEnterCancelled ,
onBeforeLeave ,
onLeave ,
onAfterLeave ,
onLeaveCancelled ,
onBeforeAppear ,
onAppear ,
onAfterAppear ,
onAppearCancelled
} = props ;
const key = String ( vnode . key ) ;
const leavingVNodesCache = getLeavingNodesForType ( state , vnode ) ;
const callHook2 = ( hook , args ) => {
hook && callWithAsyncErrorHandling (
hook ,
instance ,
9 ,
args
) ;
} ;
const callAsyncHook = ( hook , args ) => {
const done = args [ 1 ] ;
callHook2 ( hook , args ) ;
if ( isArray ( hook ) ) {
if ( hook . every ( ( hook2 ) => hook2 . length <= 1 ) )
done ( ) ;
} else if ( hook . length <= 1 ) {
done ( ) ;
}
} ;
const hooks = {
mode ,
persisted ,
beforeEnter ( el ) {
let hook = onBeforeEnter ;
if ( ! state . isMounted ) {
if ( appear ) {
hook = onBeforeAppear || onBeforeEnter ;
} else {
return ;
}
}
if ( el [ leaveCbKey ] ) {
el [ leaveCbKey ] (
true
/* cancelled */
) ;
}
const leavingVNode = leavingVNodesCache [ key ] ;
if ( leavingVNode && isSameVNodeType ( vnode , leavingVNode ) && leavingVNode . el [ leaveCbKey ] ) {
leavingVNode . el [ leaveCbKey ] ( ) ;
}
callHook2 ( hook , [ el ] ) ;
} ,
enter ( el ) {
let hook = onEnter ;
let afterHook = onAfterEnter ;
let cancelHook = onEnterCancelled ;
if ( ! state . isMounted ) {
if ( appear ) {
hook = onAppear || onEnter ;
afterHook = onAfterAppear || onAfterEnter ;
cancelHook = onAppearCancelled || onEnterCancelled ;
} else {
return ;
}
}
let called = false ;
const done = el [ enterCbKey ] = ( cancelled ) => {
if ( called )
return ;
called = true ;
if ( cancelled ) {
callHook2 ( cancelHook , [ el ] ) ;
} else {
callHook2 ( afterHook , [ el ] ) ;
}
if ( hooks . delayedLeave ) {
hooks . delayedLeave ( ) ;
}
el [ enterCbKey ] = void 0 ;
} ;
if ( hook ) {
callAsyncHook ( hook , [ el , done ] ) ;
} else {
done ( ) ;
}
} ,
leave ( el , remove2 ) {
const key2 = String ( vnode . key ) ;
if ( el [ enterCbKey ] ) {
el [ enterCbKey ] (
true
/* cancelled */
) ;
}
if ( state . isUnmounting ) {
return remove2 ( ) ;
}
callHook2 ( onBeforeLeave , [ el ] ) ;
let called = false ;
const done = el [ leaveCbKey ] = ( cancelled ) => {
if ( called )
return ;
called = true ;
remove2 ( ) ;
if ( cancelled ) {
callHook2 ( onLeaveCancelled , [ el ] ) ;
} else {
callHook2 ( onAfterLeave , [ el ] ) ;
}
el [ leaveCbKey ] = void 0 ;
if ( leavingVNodesCache [ key2 ] === vnode ) {
delete leavingVNodesCache [ key2 ] ;
}
} ;
leavingVNodesCache [ key2 ] = vnode ;
if ( onLeave ) {
callAsyncHook ( onLeave , [ el , done ] ) ;
} else {
done ( ) ;
}
} ,
clone ( vnode2 ) {
return resolveTransitionHooks ( vnode2 , props , state , instance ) ;
}
} ;
return hooks ;
}
function emptyPlaceholder ( vnode ) {
if ( isKeepAlive ( vnode ) ) {
vnode = cloneVNode ( vnode ) ;
vnode . children = null ;
return vnode ;
}
}
function getKeepAliveChild ( vnode ) {
if ( ! isKeepAlive ( vnode ) ) {
return vnode ;
}
const { shapeFlag , children } = vnode ;
if ( shapeFlag & 16 ) {
return children [ 0 ] ;
}
if ( shapeFlag & 32 && isFunction ( children . default ) ) {
return children . default ( ) ;
}
}
function setTransitionHooks ( vnode , hooks ) {
if ( vnode . shapeFlag & 6 && vnode . component ) {
setTransitionHooks ( vnode . component . subTree , hooks ) ;
} else if ( vnode . shapeFlag & 128 ) {
vnode . ssContent . transition = hooks . clone ( vnode . ssContent ) ;
vnode . ssFallback . transition = hooks . clone ( vnode . ssFallback ) ;
} else {
vnode . transition = hooks ;
}
}
function getTransitionRawChildren ( children , keepComment = false , parentKey ) {
let ret = [ ] ;
let keyedFragmentCount = 0 ;
for ( let i = 0 ; i < children . length ; i ++ ) {
let child = children [ i ] ;
const key = parentKey == null ? child . key : String ( parentKey ) + String ( child . key != null ? child . key : i ) ;
if ( child . type === Fragment ) {
if ( child . patchFlag & 128 )
keyedFragmentCount ++ ;
ret = ret . concat (
getTransitionRawChildren ( child . children , keepComment , key )
) ;
} else if ( keepComment || child . type !== Comment ) {
ret . push ( key != null ? cloneVNode ( child , { key } ) : child ) ;
}
}
if ( keyedFragmentCount > 1 ) {
for ( let i = 0 ; i < ret . length ; i ++ ) {
ret [ i ] . patchFlag = - 2 ;
}
}
return ret ;
}
/*! #__NO_SIDE_EFFECTS__ */
// @__NO_SIDE_EFFECTS__
function defineComponent ( options , extraOptions ) {
return isFunction ( options ) ? (
// #8326: extend call and options.name access are considered side-effects
// by Rollup, so we have to wrap it in a pure-annotated IIFE.
/* @__PURE__ */ ( ( ) => extend ( { name : options . name } , extraOptions , { setup : options } ) ) ( )
) : options ;
}
const isAsyncWrapper = ( i ) => ! ! i . type . _ _asyncLoader ;
/*! #__NO_SIDE_EFFECTS__ */
// @__NO_SIDE_EFFECTS__
function defineAsyncComponent ( source ) {
if ( isFunction ( source ) ) {
source = { loader : source } ;
}
const {
loader ,
loadingComponent ,
errorComponent ,
delay = 200 ,
timeout ,
// undefined = never times out
suspensible = true ,
onError : userOnError
} = source ;
let pendingRequest = null ;
let resolvedComp ;
let retries = 0 ;
const retry = ( ) => {
retries ++ ;
pendingRequest = null ;
return load ( ) ;
} ;
const load = ( ) => {
let thisRequest ;
return pendingRequest || ( thisRequest = pendingRequest = loader ( ) . catch ( ( err ) => {
err = err instanceof Error ? err : new Error ( String ( err ) ) ;
if ( userOnError ) {
return new Promise ( ( resolve2 , reject ) => {
const userRetry = ( ) => resolve2 ( retry ( ) ) ;
const userFail = ( ) => reject ( err ) ;
userOnError ( err , userRetry , userFail , retries + 1 ) ;
} ) ;
} else {
throw err ;
}
} ) . then ( ( comp ) => {
if ( thisRequest !== pendingRequest && pendingRequest ) {
return pendingRequest ;
}
if ( comp && ( comp . _ _esModule || comp [ Symbol . toStringTag ] === "Module" ) ) {
comp = comp . default ;
}
resolvedComp = comp ;
return comp ;
} ) ) ;
} ;
return /* @__PURE__ */ defineComponent ( {
name : "AsyncComponentWrapper" ,
_ _asyncLoader : load ,
get _ _asyncResolved ( ) {
return resolvedComp ;
} ,
setup ( ) {
const instance = currentInstance ;
if ( resolvedComp ) {
return ( ) => createInnerComp ( resolvedComp , instance ) ;
}
const onError = ( err ) => {
pendingRequest = null ;
handleError (
err ,
instance ,
13 ,
! errorComponent
) ;
} ;
if ( suspensible && instance . suspense || isInSSRComponentSetup ) {
return load ( ) . then ( ( comp ) => {
return ( ) => createInnerComp ( comp , instance ) ;
} ) . catch ( ( err ) => {
onError ( err ) ;
return ( ) => errorComponent ? createVNode ( errorComponent , {
error : err
} ) : null ;
} ) ;
}
const loaded = ref ( false ) ;
const error = ref ( ) ;
const delayed = ref ( ! ! delay ) ;
if ( delay ) {
setTimeout ( ( ) => {
delayed . value = false ;
} , delay ) ;
}
if ( timeout != null ) {
setTimeout ( ( ) => {
if ( ! loaded . value && ! error . value ) {
const err = new Error (
` Async component timed out after ${ timeout } ms. `
) ;
onError ( err ) ;
error . value = err ;
}
} , timeout ) ;
}
load ( ) . then ( ( ) => {
loaded . value = true ;
if ( instance . parent && isKeepAlive ( instance . parent . vnode ) ) {
instance . parent . effect . dirty = true ;
queueJob ( instance . parent . update ) ;
}
} ) . catch ( ( err ) => {
onError ( err ) ;
error . value = err ;
} ) ;
return ( ) => {
if ( loaded . value && resolvedComp ) {
return createInnerComp ( resolvedComp , instance ) ;
} else if ( error . value && errorComponent ) {
return createVNode ( errorComponent , {
error : error . value
} ) ;
} else if ( loadingComponent && ! delayed . value ) {
return createVNode ( loadingComponent ) ;
}
} ;
}
} ) ;
}
function createInnerComp ( comp , parent ) {
const { ref : ref22 , props , children , ce } = parent . vnode ;
const vnode = createVNode ( comp , props , children ) ;
vnode . ref = ref22 ;
vnode . ce = ce ;
delete parent . vnode . ce ;
return vnode ;
}
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 ;
}
}
const createHook = ( lifecycle ) => ( hook , target = currentInstance ) => (
// post-create lifecycle registrations are noops during SSR (except for serverPrefetch)
( ! 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 renderList ( source , renderItem , cache , index ) {
let ret ;
2024-09-24 08:56:37 +00:00
const cached = cache ;
2024-05-30 02:02:10 +00:00
if ( isArray ( source ) || isString ( source ) ) {
ret = new Array ( source . length ) ;
for ( let i = 0 , l = source . length ; i < l ; i ++ ) {
2024-09-24 08:56:37 +00:00
ret [ i ] = renderItem ( source [ i ] , i , void 0 , cached ) ;
2024-05-30 02:02:10 +00:00
}
} else if ( typeof source === "number" ) {
ret = new Array ( source ) ;
for ( let i = 0 ; i < source ; i ++ ) {
2024-09-24 08:56:37 +00:00
ret [ i ] = renderItem ( i + 1 , i , void 0 , cached ) ;
2024-05-30 02:02:10 +00:00
}
} else if ( isObject$1 ( source ) ) {
if ( source [ Symbol . iterator ] ) {
ret = Array . from (
source ,
2024-09-24 08:56:37 +00:00
( item , i ) => renderItem ( item , i , void 0 , cached )
2024-05-30 02:02:10 +00:00
) ;
} else {
const keys = Object . keys ( source ) ;
ret = new Array ( keys . length ) ;
for ( let i = 0 , l = keys . length ; i < l ; i ++ ) {
const key = keys [ i ] ;
2024-09-24 08:56:37 +00:00
ret [ i ] = renderItem ( source [ key ] , key , i , cached ) ;
2024-05-30 02:02:10 +00:00
}
}
} else {
ret = [ ] ;
}
return ret ;
}
function renderSlot ( slots , name , props = { } , fallback , noSlotted ) {
if ( currentRenderingInstance . isCE || currentRenderingInstance . parent && isAsyncWrapper ( currentRenderingInstance . parent ) && currentRenderingInstance . parent . isCE ) {
if ( name !== "default" )
props . name = name ;
return createVNode ( "slot" , props , fallback && fallback ( ) ) ;
}
let slot = slots [ name ] ;
if ( slot && slot . _c ) {
slot . _d = false ;
}
openBlock ( ) ;
const validSlotContent = slot && ensureValidVNode ( slot ( props ) ) ;
const rendered = createBlock (
Fragment ,
{
key : props . key || // slot content array of a dynamic conditional slot may have a branch
// key attached in the `createSlots` helper, respect that
validSlotContent && validSlotContent . key || ` _ ${ name } `
} ,
validSlotContent || ( fallback ? fallback ( ) : [ ] ) ,
validSlotContent && slots . _ === 1 ? 64 : - 2
) ;
if ( ! noSlotted && rendered . scopeId ) {
rendered . slotScopeIds = [ rendered . scopeId + "-s" ] ;
}
if ( slot && slot . _c ) {
slot . _d = true ;
}
return rendered ;
}
function ensureValidVNode ( vnodes ) {
return vnodes . some ( ( child ) => {
if ( ! isVNode ( child ) )
return true ;
if ( child . type === Comment )
return false ;
if ( child . type === Fragment && ! ensureValidVNode ( child . children ) )
return false ;
return true ;
} ) ? vnodes : null ;
}
function toHandlers ( obj , preserveCaseIfNecessary ) {
const ret = { } ;
for ( const key in obj ) {
2024-09-24 08:56:37 +00:00
ret [ /[A-Z]/ . test ( key ) ? ` on: ${ key } ` : toHandlerKey ( key ) ] = obj [ key ] ;
2024-05-30 02:02:10 +00:00
}
return ret ;
}
const 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 ) => i . props ,
$attrs : ( i ) => i . attrs ,
$slots : ( i ) => i . slots ,
$refs : ( i ) => i . refs ,
$parent : ( i ) => getPublicInstance ( i . parent ) ,
$root : ( i ) => getPublicInstance ( i . root ) ,
$emit : ( i ) => i . emit ,
$options : ( i ) => resolveMergedOptions ( i ) ,
$forceUpdate : ( i ) => i . f || ( i . f = ( ) => {
i . effect . dirty = true ;
queueJob ( i . update ) ;
} ) ,
$nextTick : ( i ) => i . n || ( i . n = nextTick . bind ( i . proxy ) ) ,
$watch : ( i ) => instanceWatch . bind ( i )
} )
) ;
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 ;
let normalizedProps ;
if ( key [ 0 ] !== "$" ) {
const n = accessCache [ key ] ;
if ( n !== void 0 ) {
switch ( n ) {
case 1 :
return setupState [ key ] ;
case 2 :
return data [ key ] ;
case 4 :
return ctx [ key ] ;
case 3 :
return props [ key ] ;
}
} else if ( hasSetupBinding ( setupState , key ) ) {
accessCache [ key ] = 1 ;
return setupState [ key ] ;
} else if ( data !== EMPTY _OBJ && hasOwn ( data , key ) ) {
accessCache [ key ] = 2 ;
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 ;
return props [ key ] ;
} else if ( ctx !== EMPTY _OBJ && hasOwn ( ctx , key ) ) {
accessCache [ key ] = 4 ;
return ctx [ key ] ;
} else if ( shouldCacheAccess ) {
accessCache [ key ] = 0 ;
}
}
const publicGetter = publicPropertiesMap [ key ] ;
let cssModule , globalProperties ;
if ( publicGetter ) {
if ( key === "$attrs" ) {
track ( instance . attrs , "get" , "" ) ;
}
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 ;
return ctx [ key ] ;
} else if (
// global properties
globalProperties = appContext . config . globalProperties , hasOwn ( globalProperties , key )
) {
{
return globalProperties [ key ] ;
}
} else
;
} ,
set ( { _ : instance } , key , value ) {
const { data , setupState , ctx } = instance ;
if ( hasSetupBinding ( setupState , key ) ) {
setupState [ key ] = value ;
return true ;
} else if ( data !== EMPTY _OBJ && hasOwn ( data , key ) ) {
data [ key ] = value ;
return true ;
} else if ( hasOwn ( instance . props , key ) ) {
return false ;
}
if ( key [ 0 ] === "$" && key . slice ( 1 ) in instance ) {
return false ;
} else {
{
ctx [ key ] = value ;
}
}
return true ;
} ,
has ( {
_ : { data , setupState , accessCache , ctx , appContext , propsOptions }
} , key ) {
let normalizedProps ;
return ! ! accessCache [ key ] || data !== EMPTY _OBJ && hasOwn ( data , key ) || hasSetupBinding ( setupState , key ) || ( normalizedProps = propsOptions [ 0 ] ) && hasOwn ( normalizedProps , key ) || hasOwn ( ctx , key ) || hasOwn ( publicPropertiesMap , key ) || hasOwn ( appContext . config . globalProperties , key ) ;
} ,
defineProperty ( target , key , descriptor ) {
if ( descriptor . get != null ) {
target . _ . accessCache [ key ] = 0 ;
} else if ( hasOwn ( descriptor , "value" ) ) {
this . set ( target , key , descriptor . value , null ) ;
}
return Reflect . defineProperty ( target , key , descriptor ) ;
}
} ;
function useSlots ( ) {
return getContext ( ) . slots ;
}
function getContext ( ) {
const i = getCurrentInstance ( ) ;
return i . setupContext || ( i . setupContext = createSetupContext ( i ) ) ;
}
function normalizePropsOrEmits ( props ) {
return isArray ( props ) ? props . reduce (
( normalized , p2 ) => ( normalized [ p2 ] = null , normalized ) ,
{ }
) : props ;
}
let shouldCacheAccess = true ;
function applyOptions ( instance ) {
const options = resolveMergedOptions ( instance ) ;
const publicThis = instance . proxy ;
const ctx = instance . ctx ;
shouldCacheAccess = false ;
if ( options . beforeCreate ) {
callHook$1 ( options . beforeCreate , instance , "bc" ) ;
}
const {
// 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 ;
const checkDuplicateProperties = null ;
if ( injectOptions ) {
resolveInjections ( injectOptions , ctx , checkDuplicateProperties ) ;
}
if ( methods ) {
for ( const key in methods ) {
const methodHandler = methods [ key ] ;
if ( isFunction ( methodHandler ) ) {
{
ctx [ key ] = methodHandler . bind ( publicThis ) ;
}
}
}
}
if ( dataOptions ) {
const data = dataOptions . call ( publicThis , publicThis ) ;
if ( ! isObject$1 ( data ) )
;
else {
instance . data = reactive ( data ) ;
}
}
shouldCacheAccess = true ;
if ( computedOptions ) {
for ( const key in computedOptions ) {
const opt = computedOptions [ key ] ;
const get2 = isFunction ( opt ) ? opt . bind ( publicThis , publicThis ) : isFunction ( opt . get ) ? opt . get . bind ( publicThis , publicThis ) : NOOP ;
const set2 = ! isFunction ( opt ) && isFunction ( opt . set ) ? opt . set . bind ( publicThis ) : NOOP ;
const c = computed ( {
get : get2 ,
set : set2
} ) ;
Object . defineProperty ( ctx , key , {
enumerable : true ,
configurable : true ,
get : ( ) => c . value ,
set : ( v ) => c . value = v
} ) ;
}
}
if ( watchOptions ) {
for ( const key in watchOptions ) {
createWatcher ( watchOptions [ key ] , ctx , publicThis , key ) ;
}
}
if ( provideOptions ) {
const provides = isFunction ( provideOptions ) ? provideOptions . call ( publicThis ) : provideOptions ;
Reflect . ownKeys ( provides ) . forEach ( ( key ) => {
provide ( key , provides [ key ] ) ;
} ) ;
}
if ( created ) {
callHook$1 ( created , instance , "c" ) ;
}
function registerLifecycleHook ( register , hook ) {
if ( isArray ( hook ) ) {
hook . forEach ( ( _hook ) => register ( _hook . bind ( publicThis ) ) ) ;
} else if ( hook ) {
register ( hook . bind ( publicThis ) ) ;
}
}
registerLifecycleHook ( onBeforeMount , beforeMount ) ;
registerLifecycleHook ( onMounted , mounted ) ;
registerLifecycleHook ( onBeforeUpdate , beforeUpdate ) ;
registerLifecycleHook ( onUpdated , updated ) ;
registerLifecycleHook ( onActivated , activated ) ;
registerLifecycleHook ( onDeactivated , deactivated ) ;
registerLifecycleHook ( onErrorCaptured , errorCaptured ) ;
registerLifecycleHook ( onRenderTracked , renderTracked ) ;
registerLifecycleHook ( onRenderTriggered , renderTriggered ) ;
registerLifecycleHook ( onBeforeUnmount , beforeUnmount ) ;
registerLifecycleHook ( onUnmounted , unmounted ) ;
registerLifecycleHook ( onServerPrefetch , serverPrefetch ) ;
if ( isArray ( expose ) ) {
if ( expose . length ) {
const exposed = instance . exposed || ( instance . exposed = { } ) ;
expose . forEach ( ( key ) => {
Object . defineProperty ( exposed , key , {
get : ( ) => publicThis [ key ] ,
set : ( val ) => publicThis [ key ] = val
} ) ;
} ) ;
} else if ( ! instance . exposed ) {
instance . exposed = { } ;
}
}
if ( render && instance . render === NOOP ) {
instance . render = render ;
}
if ( inheritAttrs != null ) {
instance . inheritAttrs = inheritAttrs ;
}
if ( components )
instance . components = components ;
if ( directives )
instance . directives = directives ;
}
function resolveInjections ( injectOptions , ctx , checkDuplicateProperties = NOOP ) {
if ( isArray ( injectOptions ) ) {
injectOptions = normalizeInject ( injectOptions ) ;
}
for ( const key in injectOptions ) {
const opt = injectOptions [ key ] ;
let injected ;
if ( isObject$1 ( opt ) ) {
if ( "default" in opt ) {
injected = inject (
opt . from || key ,
opt . default ,
true
) ;
} else {
injected = inject ( opt . from || key ) ;
}
} else {
injected = inject ( opt ) ;
}
if ( isRef ( injected ) ) {
Object . defineProperty ( ctx , key , {
enumerable : true ,
configurable : true ,
get : ( ) => injected . value ,
set : ( v ) => injected . value = v
} ) ;
} else {
ctx [ key ] = injected ;
}
}
}
function callHook$1 ( hook , instance , type ) {
callWithAsyncErrorHandling (
isArray ( hook ) ? hook . map ( ( h2 ) => h2 . bind ( instance . proxy ) ) : hook . bind ( instance . proxy ) ,
instance ,
type
) ;
}
function createWatcher ( raw , ctx , publicThis , key ) {
const getter = key . includes ( "." ) ? createPathGetter ( publicThis , key ) : ( ) => publicThis [ key ] ;
if ( isString ( raw ) ) {
const handler = ctx [ raw ] ;
if ( isFunction ( handler ) ) {
watch ( getter , handler ) ;
}
} else if ( isFunction ( raw ) ) {
watch ( getter , raw . bind ( publicThis ) ) ;
} else if ( isObject$1 ( raw ) ) {
if ( isArray ( raw ) ) {
raw . forEach ( ( r ) => createWatcher ( r , ctx , publicThis , key ) ) ;
} else {
const handler = isFunction ( raw . handler ) ? raw . handler . bind ( publicThis ) : ctx [ raw . handler ] ;
if ( isFunction ( handler ) ) {
watch ( getter , handler , raw ) ;
}
}
} else
;
}
function resolveMergedOptions ( instance ) {
const base = instance . type ;
const { mixins , extends : extendsOptions } = base ;
const {
mixins : globalMixins ,
optionsCache : cache ,
config : { optionMergeStrategies }
} = instance . appContext ;
const cached = cache . get ( base ) ;
let resolved ;
if ( cached ) {
resolved = cached ;
} else if ( ! globalMixins . length && ! mixins && ! extendsOptions ) {
{
resolved = base ;
}
} else {
resolved = { } ;
if ( globalMixins . length ) {
globalMixins . forEach (
( m ) => mergeOptions ( resolved , m , optionMergeStrategies , true )
) ;
}
mergeOptions ( resolved , base , optionMergeStrategies ) ;
}
if ( isObject$1 ( base ) ) {
cache . set ( base , resolved ) ;
}
return resolved ;
}
function mergeOptions ( to , from , strats , asMixin = false ) {
const { mixins , extends : extendsOptions } = from ;
if ( extendsOptions ) {
mergeOptions ( to , extendsOptions , strats , true ) ;
}
if ( mixins ) {
mixins . forEach (
( m ) => mergeOptions ( to , m , strats , true )
) ;
}
for ( const key in from ) {
if ( asMixin && key === "expose" )
;
else {
const strat = internalOptionMergeStrats [ key ] || strats && strats [ key ] ;
to [ key ] = strat ? strat ( to [ key ] , from [ key ] ) : from [ key ] ;
}
}
return to ;
}
const internalOptionMergeStrats = {
data : mergeDataFn ,
props : mergeEmitsOrPropsOptions ,
emits : mergeEmitsOrPropsOptions ,
// objects
methods : mergeObjectOptions ,
computed : mergeObjectOptions ,
// lifecycle
beforeCreate : mergeAsArray ,
created : mergeAsArray ,
beforeMount : mergeAsArray ,
mounted : mergeAsArray ,
beforeUpdate : mergeAsArray ,
updated : mergeAsArray ,
beforeDestroy : mergeAsArray ,
beforeUnmount : mergeAsArray ,
destroyed : mergeAsArray ,
unmounted : mergeAsArray ,
activated : mergeAsArray ,
deactivated : mergeAsArray ,
errorCaptured : mergeAsArray ,
serverPrefetch : mergeAsArray ,
// assets
components : mergeObjectOptions ,
directives : mergeObjectOptions ,
// watch
watch : mergeWatchOptions ,
// provide / inject
provide : mergeDataFn ,
inject : mergeInject
} ;
function mergeDataFn ( to , from ) {
if ( ! from ) {
return to ;
}
if ( ! to ) {
return from ;
}
return function mergedDataFn ( ) {
return extend (
isFunction ( to ) ? to . call ( this , this ) : to ,
isFunction ( from ) ? from . call ( this , this ) : from
) ;
} ;
}
function mergeInject ( to , from ) {
return mergeObjectOptions ( normalizeInject ( to ) , normalizeInject ( from ) ) ;
}
function normalizeInject ( raw ) {
if ( isArray ( raw ) ) {
const res = { } ;
for ( let i = 0 ; i < raw . length ; i ++ ) {
res [ raw [ i ] ] = raw [ i ] ;
}
return res ;
}
return raw ;
}
function mergeAsArray ( to , from ) {
return to ? [ ... new Set ( [ ] . concat ( to , from ) ) ] : from ;
}
function mergeObjectOptions ( to , from ) {
return to ? extend ( /* @__PURE__ */ Object . create ( null ) , to , from ) : from ;
}
function mergeEmitsOrPropsOptions ( to , from ) {
if ( to ) {
if ( isArray ( to ) && isArray ( from ) ) {
return [ ... /* @__PURE__ */ new Set ( [ ... to , ... from ] ) ] ;
}
return extend (
/* @__PURE__ */ Object . create ( null ) ,
normalizePropsOrEmits ( to ) ,
normalizePropsOrEmits ( from != null ? from : { } )
) ;
} else {
return from ;
}
}
function mergeWatchOptions ( to , from ) {
if ( ! to )
return from ;
if ( ! from )
return to ;
const merged = extend ( /* @__PURE__ */ Object . create ( null ) , to ) ;
for ( const key in from ) {
merged [ key ] = mergeAsArray ( to [ key ] , from [ key ] ) ;
}
return merged ;
}
function createAppContext ( ) {
return {
app : null ,
config : {
isNativeTag : NO ,
performance : false ,
globalProperties : { } ,
optionMergeStrategies : { } ,
errorHandler : void 0 ,
warnHandler : void 0 ,
compilerOptions : { }
} ,
mixins : [ ] ,
components : { } ,
directives : { } ,
provides : /* @__PURE__ */ Object . create ( null ) ,
optionsCache : /* @__PURE__ */ new WeakMap ( ) ,
propsCache : /* @__PURE__ */ new WeakMap ( ) ,
emitsCache : /* @__PURE__ */ new WeakMap ( )
} ;
}
let uid$1 = 0 ;
function createAppAPI ( render , hydrate ) {
return function createApp2 ( rootComponent , rootProps = null ) {
if ( ! isFunction ( rootComponent ) ) {
rootComponent = extend ( { } , rootComponent ) ;
}
if ( rootProps != null && ! isObject$1 ( rootProps ) ) {
rootProps = null ;
}
const context = createAppContext ( ) ;
const installedPlugins = /* @__PURE__ */ new WeakSet ( ) ;
let isMounted = false ;
const app = context . app = {
_uid : uid$1 ++ ,
_component : rootComponent ,
_props : rootProps ,
_container : null ,
_context : context ,
_instance : null ,
version ,
get config ( ) {
return context . config ;
} ,
set config ( v ) {
} ,
use ( plugin , ... options ) {
if ( installedPlugins . has ( plugin ) )
;
else if ( plugin && isFunction ( plugin . install ) ) {
installedPlugins . add ( plugin ) ;
plugin . install ( app , ... options ) ;
} else if ( isFunction ( plugin ) ) {
installedPlugins . add ( plugin ) ;
plugin ( app , ... options ) ;
} else
;
return app ;
} ,
mixin ( mixin ) {
{
if ( ! context . mixins . includes ( mixin ) ) {
context . mixins . push ( mixin ) ;
}
}
return app ;
} ,
component ( name , component ) {
if ( ! component ) {
return context . components [ name ] ;
}
context . components [ name ] = component ;
return app ;
} ,
directive ( name , directive ) {
if ( ! directive ) {
return context . directives [ name ] ;
}
context . directives [ name ] = directive ;
return app ;
} ,
mount ( rootContainer , isHydrate , namespace ) {
if ( ! isMounted ) {
const vnode = createVNode ( rootComponent , rootProps ) ;
vnode . appContext = context ;
if ( namespace === true ) {
namespace = "svg" ;
} else if ( namespace === false ) {
namespace = void 0 ;
}
if ( isHydrate && hydrate ) {
hydrate ( vnode , rootContainer ) ;
} else {
render ( vnode , rootContainer , namespace ) ;
}
isMounted = true ;
app . _container = rootContainer ;
rootContainer . _ _vue _app _ _ = app ;
return getExposeProxy ( vnode . component ) || vnode . component . proxy ;
}
} ,
unmount ( ) {
if ( isMounted ) {
render ( null , app . _container ) ;
delete app . _container . _ _vue _app _ _ ;
}
} ,
provide ( key , value ) {
context . provides [ key ] = value ;
return app ;
} ,
runWithContext ( fn ) {
const lastApp = currentApp ;
currentApp = app ;
try {
return fn ( ) ;
} finally {
currentApp = lastApp ;
}
}
} ;
return app ;
} ;
}
let currentApp = null ;
function provide ( key , value ) {
if ( ! currentInstance )
;
else {
let provides = currentInstance . provides ;
const parentProvides = currentInstance . parent && currentInstance . parent . provides ;
if ( parentProvides === provides ) {
provides = currentInstance . provides = Object . create ( parentProvides ) ;
}
provides [ key ] = value ;
}
}
function inject ( key , defaultValue , treatDefaultAsFactory = false ) {
const instance = currentInstance || currentRenderingInstance ;
if ( instance || currentApp ) {
const provides = instance ? instance . parent == null ? instance . vnode . appContext && instance . vnode . appContext . provides : instance . parent . provides : currentApp . _context . provides ;
if ( provides && key in provides ) {
return provides [ key ] ;
} else if ( arguments . length > 1 ) {
return treatDefaultAsFactory && isFunction ( defaultValue ) ? defaultValue . call ( instance && instance . proxy ) : defaultValue ;
} else
;
}
}
const internalObjectProto = /* @__PURE__ */ Object . create ( null ) ;
const createInternalObject = ( ) => Object . create ( internalObjectProto ) ;
const isInternalObject = ( obj ) => Object . getPrototypeOf ( obj ) === internalObjectProto ;
function initProps ( instance , rawProps , isStateful , isSSR = false ) {
const props = { } ;
const attrs = createInternalObject ( ) ;
instance . propsDefaults = /* @__PURE__ */ Object . create ( null ) ;
setFullProps ( instance , rawProps , props , attrs ) ;
for ( const key in instance . propsOptions [ 0 ] ) {
if ( ! ( key in props ) ) {
props [ key ] = void 0 ;
}
}
if ( isStateful ) {
instance . props = isSSR ? props : shallowReactive ( props ) ;
} else {
if ( ! instance . type . props ) {
instance . props = attrs ;
} else {
instance . props = props ;
}
}
instance . attrs = attrs ;
}
function updateProps ( instance , rawProps , rawPrevProps , optimized ) {
const {
props ,
attrs ,
vnode : { patchFlag }
} = instance ;
const rawCurrentProps = toRaw ( props ) ;
const [ options ] = instance . propsOptions ;
let hasAttrsChanged = false ;
if (
// always force full diff in dev
// - #1942 if hmr is enabled with sfc component
// - vite#872 non-sfc component used by sfc component
( optimized || patchFlag > 0 ) && ! ( patchFlag & 16 )
) {
if ( patchFlag & 8 ) {
const propsToUpdate = instance . vnode . dynamicProps ;
for ( let i = 0 ; i < propsToUpdate . length ; i ++ ) {
let key = propsToUpdate [ i ] ;
if ( isEmitListener ( instance . emitsOptions , key ) ) {
continue ;
}
const value = rawProps [ key ] ;
if ( options ) {
if ( hasOwn ( attrs , key ) ) {
if ( value !== attrs [ key ] ) {
attrs [ key ] = value ;
hasAttrsChanged = true ;
}
} else {
const camelizedKey = camelize ( key ) ;
props [ camelizedKey ] = resolvePropValue (
options ,
rawCurrentProps ,
camelizedKey ,
value ,
instance ,
false
) ;
}
} else {
if ( value !== attrs [ key ] ) {
attrs [ key ] = value ;
hasAttrsChanged = true ;
}
}
}
}
} else {
if ( setFullProps ( instance , rawProps , props , attrs ) ) {
hasAttrsChanged = true ;
}
let kebabKey ;
for ( const key in rawCurrentProps ) {
if ( ! rawProps || // for camelCase
! hasOwn ( rawProps , key ) && // it's possible the original props was passed in as kebab-case
// and converted to camelCase (#955)
( ( kebabKey = hyphenate ( key ) ) === key || ! hasOwn ( rawProps , kebabKey ) ) ) {
if ( options ) {
if ( rawPrevProps && // for camelCase
( rawPrevProps [ key ] !== void 0 || // for kebab-case
rawPrevProps [ kebabKey ] !== void 0 ) ) {
props [ key ] = resolvePropValue (
options ,
rawCurrentProps ,
key ,
void 0 ,
instance ,
true
) ;
}
} else {
delete props [ key ] ;
}
}
}
if ( attrs !== rawCurrentProps ) {
for ( const key in attrs ) {
if ( ! rawProps || ! hasOwn ( rawProps , key ) && true ) {
delete attrs [ key ] ;
hasAttrsChanged = true ;
}
}
}
}
if ( hasAttrsChanged ) {
trigger ( instance . attrs , "set" , "" ) ;
}
}
function setFullProps ( instance , rawProps , props , attrs ) {
const [ options , needCastKeys ] = instance . propsOptions ;
let hasAttrsChanged = false ;
let rawCastValues ;
if ( rawProps ) {
for ( let key in rawProps ) {
if ( isReservedProp ( key ) ) {
continue ;
}
const value = rawProps [ key ] ;
let camelKey ;
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 ) {
const rawCurrentProps = toRaw ( props ) ;
const castValues = rawCastValues || EMPTY _OBJ ;
for ( let i = 0 ; i < needCastKeys . length ; i ++ ) {
const key = needCastKeys [ i ] ;
props [ key ] = resolvePropValue (
options ,
rawCurrentProps ,
key ,
castValues [ key ] ,
instance ,
! hasOwn ( castValues , key )
) ;
}
}
return hasAttrsChanged ;
}
function resolvePropValue ( options , props , key , value , instance , isAbsent ) {
const opt = options [ key ] ;
if ( opt != null ) {
const hasDefault = hasOwn ( opt , "default" ) ;
if ( hasDefault && value === void 0 ) {
const defaultValue = opt . default ;
if ( opt . type !== Function && ! opt . skipFactory && isFunction ( defaultValue ) ) {
const { propsDefaults } = instance ;
if ( key in propsDefaults ) {
value = propsDefaults [ key ] ;
} else {
const reset = setCurrentInstance ( instance ) ;
value = propsDefaults [ key ] = defaultValue . call (
null ,
props
) ;
reset ( ) ;
}
} else {
value = defaultValue ;
}
}
if ( opt [
0
/* shouldCast */
] ) {
if ( isAbsent && ! hasDefault ) {
value = false ;
} else if ( opt [
1
/* shouldCastTrue */
] && ( value === "" || value === hyphenate ( key ) ) ) {
value = true ;
}
}
}
return value ;
}
function normalizePropsOptions ( comp , appContext , asMixin = false ) {
const cache = appContext . propsCache ;
const cached = cache . get ( comp ) ;
if ( cached ) {
return cached ;
}
const raw = comp . props ;
const normalized = { } ;
const needCastKeys = [ ] ;
let hasExtends = false ;
if ( ! isFunction ( comp ) ) {
const extendProps = ( raw2 ) => {
hasExtends = true ;
const [ props , keys ] = normalizePropsOptions ( raw2 , appContext , true ) ;
extend ( normalized , props ) ;
if ( keys )
needCastKeys . push ( ... keys ) ;
} ;
if ( ! asMixin && appContext . mixins . length ) {
appContext . mixins . forEach ( extendProps ) ;
}
if ( comp . extends ) {
extendProps ( comp . extends ) ;
}
if ( comp . mixins ) {
comp . mixins . forEach ( extendProps ) ;
}
}
if ( ! raw && ! hasExtends ) {
if ( isObject$1 ( comp ) ) {
cache . set ( comp , EMPTY _ARR ) ;
}
return EMPTY _ARR ;
}
if ( isArray ( raw ) ) {
for ( let i = 0 ; i < raw . length ; i ++ ) {
const normalizedKey = camelize ( raw [ i ] ) ;
if ( validatePropName ( normalizedKey ) ) {
normalized [ normalizedKey ] = EMPTY _OBJ ;
}
}
} else if ( raw ) {
for ( const key in raw ) {
const normalizedKey = camelize ( key ) ;
if ( validatePropName ( normalizedKey ) ) {
const opt = raw [ key ] ;
const prop = normalized [ normalizedKey ] = isArray ( opt ) || isFunction ( opt ) ? { type : opt } : extend ( { } , opt ) ;
if ( prop ) {
const booleanIndex = getTypeIndex ( Boolean , prop . type ) ;
const stringIndex = getTypeIndex ( String , prop . type ) ;
prop [
0
/* shouldCast */
] = booleanIndex > - 1 ;
prop [
1
/* shouldCastTrue */
] = stringIndex < 0 || booleanIndex < stringIndex ;
if ( booleanIndex > - 1 || hasOwn ( prop , "default" ) ) {
needCastKeys . push ( normalizedKey ) ;
}
}
}
}
}
const res = [ normalized , needCastKeys ] ;
if ( isObject$1 ( comp ) ) {
cache . set ( comp , res ) ;
}
return res ;
}
function validatePropName ( key ) {
if ( key [ 0 ] !== "$" && ! isReservedProp ( key ) ) {
return true ;
}
return false ;
}
function getType ( ctor ) {
if ( ctor === null ) {
return "null" ;
}
if ( typeof ctor === "function" ) {
return ctor . name || "" ;
} else if ( typeof ctor === "object" ) {
const name = ctor . constructor && ctor . constructor . name ;
return name || "" ;
}
return "" ;
}
function isSameType ( a , b ) {
return getType ( a ) === getType ( b ) ;
}
function getTypeIndex ( type , expectedTypes ) {
if ( isArray ( expectedTypes ) ) {
return expectedTypes . findIndex ( ( t ) => isSameType ( t , type ) ) ;
} else if ( isFunction ( expectedTypes ) ) {
return isSameType ( expectedTypes , type ) ? 0 : - 1 ;
}
return - 1 ;
}
const isInternalKey = ( key ) => key [ 0 ] === "_" || key === "$stable" ;
const normalizeSlotValue = ( value ) => isArray ( value ) ? value . map ( normalizeVNode ) : [ normalizeVNode ( value ) ] ;
const normalizeSlot = ( key , rawSlot , ctx ) => {
if ( rawSlot . _n ) {
return rawSlot ;
}
const normalized = withCtx ( ( ... args ) => {
if ( false )
;
return normalizeSlotValue ( rawSlot ( ... args ) ) ;
} , ctx ) ;
normalized . _c = false ;
return normalized ;
} ;
const normalizeObjectSlots = ( rawSlots , slots , instance ) => {
const ctx = rawSlots . _ctx ;
for ( const key in rawSlots ) {
if ( isInternalKey ( key ) )
continue ;
const value = rawSlots [ key ] ;
if ( isFunction ( value ) ) {
slots [ key ] = normalizeSlot ( key , value , ctx ) ;
} else if ( value != null ) {
const normalized = normalizeSlotValue ( value ) ;
slots [ key ] = ( ) => normalized ;
}
}
} ;
const normalizeVNodeSlots = ( instance , children ) => {
const normalized = normalizeSlotValue ( children ) ;
instance . slots . default = ( ) => normalized ;
} ;
const initSlots = ( instance , children ) => {
const slots = instance . slots = createInternalObject ( ) ;
if ( instance . vnode . shapeFlag & 32 ) {
const type = children . _ ;
if ( type ) {
extend ( slots , children ) ;
def ( slots , "_" , type ) ;
} else {
normalizeObjectSlots ( children , slots ) ;
}
} else if ( children ) {
normalizeVNodeSlots ( instance , children ) ;
}
} ;
const updateSlots = ( instance , children , optimized ) => {
const { vnode , slots } = instance ;
let needDeletionCheck = true ;
let deletionComparisonTarget = EMPTY _OBJ ;
if ( vnode . shapeFlag & 32 ) {
const type = children . _ ;
if ( type ) {
if ( optimized && type === 1 ) {
needDeletionCheck = false ;
} else {
extend ( slots , children ) ;
if ( ! optimized && type === 1 ) {
delete slots . _ ;
}
}
} else {
needDeletionCheck = ! children . $stable ;
normalizeObjectSlots ( children , slots ) ;
}
deletionComparisonTarget = children ;
} else if ( children ) {
normalizeVNodeSlots ( instance , children ) ;
deletionComparisonTarget = { default : 1 } ;
}
if ( needDeletionCheck ) {
for ( const key in slots ) {
if ( ! isInternalKey ( key ) && deletionComparisonTarget [ key ] == null ) {
delete slots [ key ] ;
}
}
}
} ;
function setRef ( rawRef , oldRawRef , parentSuspense , vnode , isUnmount = false ) {
if ( isArray ( rawRef ) ) {
rawRef . forEach (
( r , i ) => setRef (
r ,
oldRawRef && ( isArray ( oldRawRef ) ? oldRawRef [ i ] : oldRawRef ) ,
parentSuspense ,
vnode ,
isUnmount
)
) ;
return ;
}
if ( isAsyncWrapper ( vnode ) && ! isUnmount ) {
return ;
}
const refValue = vnode . shapeFlag & 4 ? getExposeProxy ( vnode . component ) || vnode . component . proxy : vnode . el ;
const value = isUnmount ? null : refValue ;
const { i : owner , r : ref3 } = rawRef ;
const oldRef = oldRawRef && oldRawRef . r ;
const refs = owner . refs === EMPTY _OBJ ? owner . refs = { } : owner . refs ;
const setupState = owner . setupState ;
if ( oldRef != null && oldRef !== ref3 ) {
if ( isString ( oldRef ) ) {
refs [ oldRef ] = null ;
if ( hasOwn ( setupState , oldRef ) ) {
setupState [ oldRef ] = null ;
}
} else if ( isRef ( oldRef ) ) {
oldRef . value = null ;
}
}
if ( isFunction ( ref3 ) ) {
callWithErrorHandling ( ref3 , owner , 12 , [ value , refs ] ) ;
} else {
const _isString = isString ( ref3 ) ;
const _isRef = isRef ( ref3 ) ;
if ( _isString || _isRef ) {
const doSet = ( ) => {
if ( rawRef . f ) {
const existing = _isString ? hasOwn ( setupState , ref3 ) ? setupState [ ref3 ] : refs [ ref3 ] : ref3 . value ;
if ( isUnmount ) {
isArray ( existing ) && remove ( existing , refValue ) ;
} else {
if ( ! isArray ( existing ) ) {
if ( _isString ) {
refs [ ref3 ] = [ refValue ] ;
if ( hasOwn ( setupState , ref3 ) ) {
setupState [ ref3 ] = refs [ ref3 ] ;
}
} else {
ref3 . value = [ refValue ] ;
if ( rawRef . k )
refs [ rawRef . k ] = ref3 . value ;
}
} else if ( ! existing . includes ( refValue ) ) {
existing . push ( refValue ) ;
}
}
} else if ( _isString ) {
refs [ ref3 ] = value ;
if ( hasOwn ( setupState , ref3 ) ) {
setupState [ ref3 ] = value ;
}
} else if ( _isRef ) {
ref3 . value = value ;
if ( rawRef . k )
refs [ rawRef . k ] = value ;
} else
;
} ;
if ( value ) {
doSet . id = - 1 ;
queuePostRenderEffect ( doSet , parentSuspense ) ;
} else {
doSet ( ) ;
}
}
}
}
let hasMismatch = false ;
const isSVGContainer = ( container ) => container . namespaceURI . includes ( "svg" ) && container . tagName !== "foreignObject" ;
const isMathMLContainer = ( container ) => container . namespaceURI . includes ( "MathML" ) ;
const getContainerType = ( container ) => {
if ( isSVGContainer ( container ) )
return "svg" ;
if ( isMathMLContainer ( container ) )
return "mathml" ;
return void 0 ;
} ;
const isComment = ( node ) => node . nodeType === 8 ;
function createHydrationFunctions ( rendererInternals ) {
const {
mt : mountComponent ,
p : patch ,
o : {
patchProp : patchProp2 ,
createText ,
nextSibling ,
parentNode ,
remove : remove2 ,
insert ,
createComment
}
} = rendererInternals ;
const hydrate = ( vnode , container ) => {
if ( ! container . hasChildNodes ( ) ) {
warn$1 (
` Attempting to hydrate existing markup but container is empty. Performing full mount instead. `
) ;
patch ( null , vnode , container ) ;
flushPostFlushCbs ( ) ;
container . _vnode = vnode ;
return ;
}
hasMismatch = false ;
hydrateNode ( container . firstChild , vnode , null , null , null ) ;
flushPostFlushCbs ( ) ;
container . _vnode = vnode ;
if ( hasMismatch && true ) {
console . error ( ` Hydration completed but contains mismatches. ` ) ;
}
} ;
const hydrateNode = ( node , vnode , parentComponent , parentSuspense , slotScopeIds , optimized = false ) => {
optimized = optimized || ! ! vnode . dynamicChildren ;
const isFragmentStart = isComment ( node ) && node . data === "[" ;
const onMismatch = ( ) => handleMismatch (
node ,
vnode ,
parentComponent ,
parentSuspense ,
slotScopeIds ,
isFragmentStart
) ;
const { type , ref : ref3 , shapeFlag , patchFlag } = vnode ;
let domType = node . nodeType ;
vnode . el = node ;
if ( patchFlag === - 2 ) {
optimized = false ;
vnode . dynamicChildren = null ;
}
let nextNode = null ;
switch ( type ) {
case Text :
if ( domType !== 3 ) {
if ( vnode . children === "" ) {
insert ( vnode . el = createText ( "" ) , parentNode ( node ) , node ) ;
nextNode = node ;
} else {
nextNode = onMismatch ( ) ;
}
} else {
if ( node . data !== vnode . children ) {
hasMismatch = true ;
warn$1 (
` Hydration text mismatch in ` ,
node . parentNode ,
`
- rendered on server : $ { JSON . stringify (
node . data
) }
- expected on client : $ { JSON . stringify ( vnode . children ) } `
) ;
node . data = vnode . children ;
}
nextNode = nextSibling ( node ) ;
}
break ;
case Comment :
if ( isTemplateNode ( node ) ) {
nextNode = nextSibling ( node ) ;
replaceNode (
vnode . el = node . content . firstChild ,
node ,
parentComponent
) ;
} else if ( domType !== 8 || isFragmentStart ) {
nextNode = onMismatch ( ) ;
} else {
nextNode = nextSibling ( node ) ;
}
break ;
case Static :
if ( isFragmentStart ) {
node = nextSibling ( node ) ;
domType = node . nodeType ;
}
if ( domType === 1 || domType === 3 ) {
nextNode = node ;
const needToAdoptContent = ! vnode . children . length ;
for ( let i = 0 ; i < vnode . staticCount ; i ++ ) {
if ( needToAdoptContent )
vnode . children += nextNode . nodeType === 1 ? nextNode . outerHTML : nextNode . data ;
if ( i === vnode . staticCount - 1 ) {
vnode . anchor = nextNode ;
}
nextNode = nextSibling ( nextNode ) ;
}
return isFragmentStart ? nextSibling ( nextNode ) : nextNode ;
} else {
onMismatch ( ) ;
}
break ;
case Fragment :
if ( ! isFragmentStart ) {
nextNode = onMismatch ( ) ;
} else {
nextNode = hydrateFragment (
node ,
vnode ,
parentComponent ,
parentSuspense ,
slotScopeIds ,
optimized
) ;
}
break ;
default :
if ( shapeFlag & 1 ) {
if ( ( domType !== 1 || vnode . type . toLowerCase ( ) !== node . tagName . toLowerCase ( ) ) && ! isTemplateNode ( node ) ) {
nextNode = onMismatch ( ) ;
} else {
nextNode = hydrateElement (
node ,
vnode ,
parentComponent ,
parentSuspense ,
slotScopeIds ,
optimized
) ;
}
} else if ( shapeFlag & 6 ) {
vnode . slotScopeIds = slotScopeIds ;
const container = parentNode ( node ) ;
if ( isFragmentStart ) {
nextNode = locateClosingAnchor ( node ) ;
} else if ( isComment ( node ) && node . data === "teleport start" ) {
nextNode = locateClosingAnchor ( node , node . data , "teleport end" ) ;
} else {
nextNode = nextSibling ( node ) ;
}
mountComponent (
vnode ,
container ,
null ,
parentComponent ,
parentSuspense ,
getContainerType ( container ) ,
optimized
) ;
if ( isAsyncWrapper ( vnode ) ) {
let subTree ;
if ( isFragmentStart ) {
subTree = createVNode ( Fragment ) ;
subTree . anchor = nextNode ? nextNode . previousSibling : container . lastChild ;
} else {
subTree = node . nodeType === 3 ? createTextVNode ( "" ) : createVNode ( "div" ) ;
}
subTree . el = node ;
vnode . component . subTree = subTree ;
}
} else if ( shapeFlag & 64 ) {
if ( domType !== 8 ) {
nextNode = onMismatch ( ) ;
} else {
nextNode = vnode . type . hydrate (
node ,
vnode ,
parentComponent ,
parentSuspense ,
slotScopeIds ,
optimized ,
rendererInternals ,
hydrateChildren
) ;
}
} else if ( shapeFlag & 128 ) {
nextNode = vnode . type . hydrate (
node ,
vnode ,
parentComponent ,
parentSuspense ,
getContainerType ( parentNode ( node ) ) ,
slotScopeIds ,
optimized ,
rendererInternals ,
hydrateNode
) ;
} else {
warn$1 ( "Invalid HostVNode type:" , type , ` ( ${ typeof type } ) ` ) ;
}
}
if ( ref3 != null ) {
setRef ( ref3 , null , parentSuspense , vnode ) ;
}
return nextNode ;
} ;
const hydrateElement = ( el , vnode , parentComponent , parentSuspense , slotScopeIds , optimized ) => {
optimized = optimized || ! ! vnode . dynamicChildren ;
const { type , props , patchFlag , shapeFlag , dirs , transition } = vnode ;
const forcePatch = type === "input" || type === "option" ;
if ( forcePatch || patchFlag !== - 1 ) {
if ( dirs ) {
invokeDirectiveHook ( vnode , null , parentComponent , "created" ) ;
}
let needCallTransitionHooks = false ;
if ( isTemplateNode ( el ) ) {
needCallTransitionHooks = needTransition ( parentSuspense , transition ) && parentComponent && parentComponent . vnode . props && parentComponent . vnode . props . appear ;
const content = el . content . firstChild ;
if ( needCallTransitionHooks ) {
transition . beforeEnter ( content ) ;
}
replaceNode ( content , el , parentComponent ) ;
vnode . el = el = content ;
}
if ( shapeFlag & 16 && // skip if element has innerHTML / textContent
! ( props && ( props . innerHTML || props . textContent ) ) ) {
let next = hydrateChildren (
el . firstChild ,
vnode ,
el ,
parentComponent ,
parentSuspense ,
slotScopeIds ,
optimized
) ;
let hasWarned2 = false ;
while ( next ) {
hasMismatch = true ;
if ( ! hasWarned2 ) {
warn$1 (
` Hydration children mismatch on ` ,
el ,
`
Server rendered element contains more child nodes than client vdom . `
) ;
hasWarned2 = true ;
}
const cur = next ;
next = next . nextSibling ;
remove2 ( cur ) ;
}
} else if ( shapeFlag & 8 ) {
if ( el . textContent !== vnode . children ) {
hasMismatch = true ;
warn$1 (
` Hydration text content mismatch on ` ,
el ,
`
- rendered on server : $ { el . textContent }
- expected on client : $ { vnode . children } `
) ;
el . textContent = vnode . children ;
}
}
if ( props ) {
{
for ( const key in props ) {
if ( propHasMismatch ( el , key , props [ key ] , vnode , parentComponent ) ) {
hasMismatch = true ;
}
if ( forcePatch && ( key . endsWith ( "value" ) || key === "indeterminate" ) || isOn ( key ) && ! isReservedProp ( key ) || // force hydrate v-bind with .prop modifiers
key [ 0 ] === "." ) {
patchProp2 (
el ,
key ,
null ,
props [ key ] ,
void 0 ,
void 0 ,
parentComponent
) ;
}
}
}
}
let vnodeHooks ;
if ( vnodeHooks = props && props . onVnodeBeforeMount ) {
invokeVNodeHook ( vnodeHooks , parentComponent , vnode ) ;
}
if ( dirs ) {
invokeDirectiveHook ( vnode , null , parentComponent , "beforeMount" ) ;
}
if ( ( vnodeHooks = props && props . onVnodeMounted ) || dirs || needCallTransitionHooks ) {
queueEffectWithSuspense ( ( ) => {
vnodeHooks && invokeVNodeHook ( vnodeHooks , parentComponent , vnode ) ;
needCallTransitionHooks && transition . enter ( el ) ;
dirs && invokeDirectiveHook ( vnode , null , parentComponent , "mounted" ) ;
} , parentSuspense ) ;
}
}
return el . nextSibling ;
} ;
const hydrateChildren = ( node , parentVNode , container , parentComponent , parentSuspense , slotScopeIds , optimized ) => {
optimized = optimized || ! ! parentVNode . dynamicChildren ;
const children = parentVNode . children ;
const l = children . length ;
let hasWarned2 = false ;
for ( let i = 0 ; i < l ; i ++ ) {
const vnode = optimized ? children [ i ] : children [ i ] = normalizeVNode ( children [ i ] ) ;
if ( node ) {
node = hydrateNode (
node ,
vnode ,
parentComponent ,
parentSuspense ,
slotScopeIds ,
optimized
) ;
} else if ( vnode . type === Text && ! vnode . children ) {
continue ;
} else {
hasMismatch = true ;
if ( ! hasWarned2 ) {
warn$1 (
` Hydration children mismatch on ` ,
container ,
`
Server rendered element contains fewer child nodes than client vdom . `
) ;
hasWarned2 = true ;
}
patch (
null ,
vnode ,
container ,
null ,
parentComponent ,
parentSuspense ,
getContainerType ( container ) ,
slotScopeIds
) ;
}
}
return node ;
} ;
const hydrateFragment = ( node , vnode , parentComponent , parentSuspense , slotScopeIds , optimized ) => {
const { slotScopeIds : fragmentSlotScopeIds } = vnode ;
if ( fragmentSlotScopeIds ) {
slotScopeIds = slotScopeIds ? slotScopeIds . concat ( fragmentSlotScopeIds ) : fragmentSlotScopeIds ;
}
const container = parentNode ( node ) ;
const next = hydrateChildren (
nextSibling ( node ) ,
vnode ,
container ,
parentComponent ,
parentSuspense ,
slotScopeIds ,
optimized
) ;
if ( next && isComment ( next ) && next . data === "]" ) {
return nextSibling ( vnode . anchor = next ) ;
} else {
hasMismatch = true ;
insert ( vnode . anchor = createComment ( ` ] ` ) , container , next ) ;
return next ;
}
} ;
const handleMismatch = ( node , vnode , parentComponent , parentSuspense , slotScopeIds , isFragment ) => {
hasMismatch = true ;
warn$1 (
` Hydration node mismatch:
- rendered on server : ` ,
node ,
node . nodeType === 3 ? ` (text) ` : isComment ( node ) && node . data === "[" ? ` (start of fragment) ` : ` ` ,
`
- expected on client : ` ,
vnode . type
) ;
vnode . el = null ;
if ( isFragment ) {
const end = locateClosingAnchor ( node ) ;
while ( true ) {
const next2 = nextSibling ( node ) ;
if ( next2 && next2 !== end ) {
remove2 ( next2 ) ;
} else {
break ;
}
}
}
const next = nextSibling ( node ) ;
const container = parentNode ( node ) ;
remove2 ( node ) ;
patch (
null ,
vnode ,
container ,
next ,
parentComponent ,
parentSuspense ,
getContainerType ( container ) ,
slotScopeIds
) ;
return next ;
} ;
const locateClosingAnchor = ( node , open = "[" , close = "]" ) => {
let match = 0 ;
while ( node ) {
node = nextSibling ( node ) ;
if ( node && isComment ( node ) ) {
if ( node . data === open )
match ++ ;
if ( node . data === close ) {
if ( match === 0 ) {
return nextSibling ( node ) ;
} else {
match -- ;
}
}
}
}
return node ;
} ;
const replaceNode = ( newNode , oldNode , parentComponent ) => {
const parentNode2 = oldNode . parentNode ;
if ( parentNode2 ) {
parentNode2 . replaceChild ( newNode , oldNode ) ;
}
let parent = parentComponent ;
while ( parent ) {
if ( parent . vnode . el === oldNode ) {
parent . vnode . el = parent . subTree . el = newNode ;
}
parent = parent . parent ;
}
} ;
const isTemplateNode = ( node ) => {
return node . nodeType === 1 && node . tagName . toLowerCase ( ) === "template" ;
} ;
return [ hydrate , hydrateNode ] ;
}
function propHasMismatch ( el , key , clientValue , vnode , instance ) {
var _a ;
let mismatchType ;
let mismatchKey ;
let actual ;
let expected ;
if ( key === "class" ) {
actual = el . getAttribute ( "class" ) ;
expected = normalizeClass ( clientValue ) ;
if ( ! isSetEqual ( toClassSet ( actual || "" ) , toClassSet ( expected ) ) ) {
mismatchType = mismatchKey = ` class ` ;
}
} else if ( key === "style" ) {
actual = el . getAttribute ( "style" ) ;
expected = isString ( clientValue ) ? clientValue : stringifyStyle ( normalizeStyle ( clientValue ) ) ;
const actualMap = toStyleMap ( actual ) ;
const expectedMap = toStyleMap ( expected ) ;
if ( vnode . dirs ) {
for ( const { dir , value } of vnode . dirs ) {
if ( dir . name === "show" && ! value ) {
expectedMap . set ( "display" , "none" ) ;
}
}
}
const root = instance == null ? void 0 : instance . subTree ;
if ( vnode === root || ( root == null ? void 0 : root . type ) === Fragment && root . children . includes ( vnode ) ) {
const cssVars = ( _a = instance == null ? void 0 : instance . getCssVars ) == null ? void 0 : _a . call ( instance ) ;
for ( const key2 in cssVars ) {
expectedMap . set ( ` -- ${ key2 } ` , String ( cssVars [ key2 ] ) ) ;
}
}
if ( ! isMapEqual ( actualMap , expectedMap ) ) {
mismatchType = mismatchKey = "style" ;
}
} else if ( el instanceof SVGElement && isKnownSvgAttr ( key ) || el instanceof HTMLElement && ( isBooleanAttr ( key ) || isKnownHtmlAttr ( key ) ) ) {
if ( isBooleanAttr ( key ) ) {
actual = el . hasAttribute ( key ) ;
expected = includeBooleanAttr ( clientValue ) ;
} else if ( clientValue == null ) {
actual = el . hasAttribute ( key ) ;
expected = false ;
} else {
if ( el . hasAttribute ( key ) ) {
actual = el . getAttribute ( key ) ;
} else if ( key === "value" && el . tagName === "TEXTAREA" ) {
actual = el . value ;
} else {
actual = false ;
}
expected = isRenderableAttrValue ( clientValue ) ? String ( clientValue ) : false ;
}
if ( actual !== expected ) {
mismatchType = ` attribute ` ;
mismatchKey = key ;
}
}
if ( mismatchType ) {
const format = ( v ) => v === false ? ` (not rendered) ` : ` ${ mismatchKey } =" ${ v } " ` ;
const preSegment = ` Hydration ${ mismatchType } mismatch on ` ;
const postSegment = `
- rendered on server : $ { format ( actual ) }
- expected on client : $ { format ( expected ) }
Note : this mismatch is check - only . The DOM will not be rectified in production due to performance overhead .
You should fix the source of the mismatch . ` ;
{
warn$1 ( preSegment , el , postSegment ) ;
}
return true ;
}
return false ;
}
function toClassSet ( str ) {
return new Set ( str . trim ( ) . split ( /\s+/ ) ) ;
}
function isSetEqual ( a , b ) {
if ( a . size !== b . size ) {
return false ;
}
for ( const s of a ) {
if ( ! b . has ( s ) ) {
return false ;
}
}
return true ;
}
function toStyleMap ( str ) {
const styleMap = /* @__PURE__ */ new Map ( ) ;
for ( const item of str . split ( ";" ) ) {
let [ key , value ] = item . split ( ":" ) ;
key = key == null ? void 0 : key . trim ( ) ;
value = value == null ? void 0 : value . trim ( ) ;
if ( key && value ) {
styleMap . set ( key , value ) ;
}
}
return styleMap ;
}
function isMapEqual ( a , b ) {
if ( a . size !== b . size ) {
return false ;
}
for ( const [ key , value ] of a ) {
if ( value !== b . get ( key ) ) {
return false ;
}
}
return true ;
}
const queuePostRenderEffect = queueEffectWithSuspense ;
function createRenderer ( options ) {
return baseCreateRenderer ( options ) ;
}
function createHydrationRenderer ( options ) {
return baseCreateRenderer ( options , createHydrationFunctions ) ;
}
function baseCreateRenderer ( options , createHydrationFns ) {
const target = getGlobalThis ( ) ;
target . _ _VUE _ _ = true ;
const {
insert : hostInsert ,
remove : hostRemove ,
patchProp : hostPatchProp ,
createElement : hostCreateElement ,
createText : hostCreateText ,
createComment : hostCreateComment ,
setText : hostSetText ,
setElementText : hostSetElementText ,
parentNode : hostParentNode ,
nextSibling : hostNextSibling ,
setScopeId : hostSetScopeId = NOOP ,
insertStaticContent : hostInsertStaticContent
} = options ;
const patch = ( n1 , n2 , container , anchor = null , parentComponent = null , parentSuspense = null , namespace = void 0 , slotScopeIds = null , optimized = ! ! n2 . dynamicChildren ) => {
if ( n1 === n2 ) {
return ;
}
if ( n1 && ! isSameVNodeType ( n1 , n2 ) ) {
anchor = getNextHostNode ( n1 ) ;
unmount ( n1 , parentComponent , parentSuspense , true ) ;
n1 = null ;
}
if ( n2 . patchFlag === - 2 ) {
optimized = false ;
n2 . dynamicChildren = null ;
}
const { type , ref : ref3 , shapeFlag } = n2 ;
switch ( type ) {
case Text :
processText ( n1 , n2 , container , anchor ) ;
break ;
case Comment :
processCommentNode ( n1 , n2 , container , anchor ) ;
break ;
case Static :
if ( n1 == null ) {
mountStaticNode ( n2 , container , anchor , namespace ) ;
}
break ;
case Fragment :
processFragment (
n1 ,
n2 ,
container ,
anchor ,
parentComponent ,
parentSuspense ,
namespace ,
slotScopeIds ,
optimized
) ;
break ;
default :
if ( shapeFlag & 1 ) {
processElement (
n1 ,
n2 ,
container ,
anchor ,
parentComponent ,
parentSuspense ,
namespace ,
slotScopeIds ,
optimized
) ;
} else if ( shapeFlag & 6 ) {
processComponent (
n1 ,
n2 ,
container ,
anchor ,
parentComponent ,
parentSuspense ,
namespace ,
slotScopeIds ,
optimized
) ;
} else if ( shapeFlag & 64 ) {
type . process (
n1 ,
n2 ,
container ,
anchor ,
parentComponent ,
parentSuspense ,
namespace ,
slotScopeIds ,
optimized ,
internals
) ;
} else if ( shapeFlag & 128 ) {
type . process (
n1 ,
n2 ,
container ,
anchor ,
parentComponent ,
parentSuspense ,
namespace ,
slotScopeIds ,
optimized ,
internals
) ;
} else
;
}
if ( ref3 != null && parentComponent ) {
setRef ( ref3 , n1 && n1 . ref , parentSuspense , n2 || n1 , ! n2 ) ;
}
} ;
const processText = ( n1 , n2 , container , anchor ) => {
if ( n1 == null ) {
hostInsert (
n2 . el = hostCreateText ( n2 . children ) ,
container ,
anchor
) ;
} else {
const el = n2 . el = n1 . el ;
if ( n2 . children !== n1 . children ) {
hostSetText ( el , n2 . children ) ;
}
}
} ;
const processCommentNode = ( n1 , n2 , container , anchor ) => {
if ( n1 == null ) {
hostInsert (
n2 . el = hostCreateComment ( n2 . children || "" ) ,
container ,
anchor
) ;
} else {
n2 . el = n1 . el ;
}
} ;
const mountStaticNode = ( n2 , container , anchor , namespace ) => {
[ n2 . el , n2 . anchor ] = hostInsertStaticContent (
n2 . children ,
container ,
anchor ,
namespace ,
n2 . el ,
n2 . anchor
) ;
} ;
const moveStaticNode = ( { el , anchor } , container , nextSibling ) => {
let next ;
while ( el && el !== anchor ) {
next = hostNextSibling ( el ) ;
hostInsert ( el , container , nextSibling ) ;
el = next ;
}
hostInsert ( anchor , container , nextSibling ) ;
} ;
const removeStaticNode = ( { el , anchor } ) => {
let next ;
while ( el && el !== anchor ) {
next = hostNextSibling ( el ) ;
hostRemove ( el ) ;
el = next ;
}
hostRemove ( anchor ) ;
} ;
const processElement = ( n1 , n2 , container , anchor , parentComponent , parentSuspense , namespace , slotScopeIds , optimized ) => {
if ( n2 . type === "svg" ) {
namespace = "svg" ;
} else if ( n2 . type === "math" ) {
namespace = "mathml" ;
}
if ( n1 == null ) {
mountElement (
n2 ,
container ,
anchor ,
parentComponent ,
parentSuspense ,
namespace ,
slotScopeIds ,
optimized
) ;
} else {
patchElement (
n1 ,
n2 ,
parentComponent ,
parentSuspense ,
namespace ,
slotScopeIds ,
optimized
) ;
}
} ;
const mountElement = ( vnode , container , anchor , parentComponent , parentSuspense , namespace , slotScopeIds , optimized ) => {
let el ;
let vnodeHook ;
const { props , shapeFlag , transition , dirs } = vnode ;
el = vnode . el = hostCreateElement (
vnode . type ,
namespace ,
props && props . is ,
props
) ;
if ( shapeFlag & 8 ) {
hostSetElementText ( el , vnode . children ) ;
} else if ( shapeFlag & 16 ) {
mountChildren (
vnode . children ,
el ,
null ,
parentComponent ,
parentSuspense ,
resolveChildrenNamespace ( vnode , namespace ) ,
slotScopeIds ,
optimized
) ;
}
if ( dirs ) {
invokeDirectiveHook ( vnode , null , parentComponent , "created" ) ;
}
setScopeId ( el , vnode , vnode . scopeId , slotScopeIds , parentComponent ) ;
if ( props ) {
for ( const key in props ) {
if ( key !== "value" && ! isReservedProp ( key ) ) {
hostPatchProp (
el ,
key ,
null ,
props [ key ] ,
namespace ,
vnode . children ,
parentComponent ,
parentSuspense ,
unmountChildren
) ;
}
}
if ( "value" in props ) {
hostPatchProp ( el , "value" , null , props . value , namespace ) ;
}
if ( vnodeHook = props . onVnodeBeforeMount ) {
invokeVNodeHook ( vnodeHook , parentComponent , vnode ) ;
}
}
if ( dirs ) {
invokeDirectiveHook ( vnode , null , parentComponent , "beforeMount" ) ;
}
const needCallTransitionHooks = needTransition ( parentSuspense , transition ) ;
if ( needCallTransitionHooks ) {
transition . beforeEnter ( el ) ;
}
hostInsert ( el , container , anchor ) ;
if ( ( vnodeHook = props && props . onVnodeMounted ) || needCallTransitionHooks || dirs ) {
queuePostRenderEffect ( ( ) => {
vnodeHook && invokeVNodeHook ( vnodeHook , parentComponent , vnode ) ;
needCallTransitionHooks && transition . enter ( el ) ;
dirs && invokeDirectiveHook ( vnode , null , parentComponent , "mounted" ) ;
} , parentSuspense ) ;
}
} ;
const setScopeId = ( el , vnode , scopeId , slotScopeIds , parentComponent ) => {
if ( scopeId ) {
hostSetScopeId ( el , scopeId ) ;
}
if ( slotScopeIds ) {
for ( let i = 0 ; i < slotScopeIds . length ; i ++ ) {
hostSetScopeId ( el , slotScopeIds [ i ] ) ;
}
}
if ( parentComponent ) {
let subTree = parentComponent . subTree ;
if ( vnode === subTree ) {
const parentVNode = parentComponent . vnode ;
setScopeId (
el ,
parentVNode ,
parentVNode . scopeId ,
parentVNode . slotScopeIds ,
parentComponent . parent
) ;
}
}
} ;
const mountChildren = ( children , container , anchor , parentComponent , parentSuspense , namespace , slotScopeIds , optimized , start = 0 ) => {
for ( let i = start ; i < children . length ; i ++ ) {
const child = children [ i ] = optimized ? cloneIfMounted ( children [ i ] ) : normalizeVNode ( children [ i ] ) ;
patch (
null ,
child ,
container ,
anchor ,
parentComponent ,
parentSuspense ,
namespace ,
slotScopeIds ,
optimized
) ;
}
} ;
const patchElement = ( n1 , n2 , parentComponent , parentSuspense , namespace , slotScopeIds , optimized ) => {
const el = n2 . el = n1 . el ;
let { patchFlag , dynamicChildren , dirs } = n2 ;
patchFlag |= n1 . patchFlag & 16 ;
const oldProps = n1 . props || EMPTY _OBJ ;
const newProps = n2 . props || EMPTY _OBJ ;
let vnodeHook ;
parentComponent && toggleRecurse ( parentComponent , false ) ;
if ( vnodeHook = newProps . onVnodeBeforeUpdate ) {
invokeVNodeHook ( vnodeHook , parentComponent , n2 , n1 ) ;
}
if ( dirs ) {
invokeDirectiveHook ( n2 , n1 , parentComponent , "beforeUpdate" ) ;
}
parentComponent && toggleRecurse ( parentComponent , true ) ;
if ( dynamicChildren ) {
patchBlockChildren (
n1 . dynamicChildren ,
dynamicChildren ,
el ,
parentComponent ,
parentSuspense ,
resolveChildrenNamespace ( n2 , namespace ) ,
slotScopeIds
) ;
} else if ( ! optimized ) {
patchChildren (
n1 ,
n2 ,
el ,
null ,
parentComponent ,
parentSuspense ,
resolveChildrenNamespace ( n2 , namespace ) ,
slotScopeIds ,
false
) ;
}
if ( patchFlag > 0 ) {
if ( patchFlag & 16 ) {
patchProps (
el ,
n2 ,
oldProps ,
newProps ,
parentComponent ,
parentSuspense ,
namespace
) ;
} else {
if ( patchFlag & 2 ) {
if ( oldProps . class !== newProps . class ) {
hostPatchProp ( el , "class" , null , newProps . class , namespace ) ;
}
}
if ( patchFlag & 4 ) {
hostPatchProp ( el , "style" , oldProps . style , newProps . style , namespace ) ;
}
if ( patchFlag & 8 ) {
const propsToUpdate = n2 . dynamicProps ;
for ( let i = 0 ; i < propsToUpdate . length ; i ++ ) {
const key = propsToUpdate [ i ] ;
const prev = oldProps [ key ] ;
const next = newProps [ key ] ;
if ( next !== prev || key === "value" ) {
hostPatchProp (
el ,
key ,
prev ,
next ,
namespace ,
n1 . children ,
parentComponent ,
parentSuspense ,
unmountChildren
) ;
}
}
}
}
if ( patchFlag & 1 ) {
if ( n1 . children !== n2 . children ) {
hostSetElementText ( el , n2 . children ) ;
}
}
} else if ( ! optimized && dynamicChildren == null ) {
patchProps (
el ,
n2 ,
oldProps ,
newProps ,
parentComponent ,
parentSuspense ,
namespace
) ;
}
if ( ( vnodeHook = newProps . onVnodeUpdated ) || dirs ) {
queuePostRenderEffect ( ( ) => {
vnodeHook && invokeVNodeHook ( vnodeHook , parentComponent , n2 , n1 ) ;
dirs && invokeDirectiveHook ( n2 , n1 , parentComponent , "updated" ) ;
} , parentSuspense ) ;
}
} ;
const patchBlockChildren = ( oldChildren , newChildren , fallbackContainer , parentComponent , parentSuspense , namespace , slotScopeIds ) => {
for ( let i = 0 ; i < newChildren . length ; i ++ ) {
const oldVNode = oldChildren [ i ] ;
const newVNode = newChildren [ i ] ;
const container = (
// oldVNode may be an errored async setup() component inside Suspense
// which will not have a mounted element
oldVNode . el && // - In the case of a Fragment, we need to provide the actual parent
// of the Fragment itself so it can move its children.
( oldVNode . type === Fragment || // - In the case of different nodes, there is going to be a replacement
// which also requires the correct parent container
! isSameVNodeType ( oldVNode , newVNode ) || // - In the case of a component, it could contain anything.
oldVNode . shapeFlag & ( 6 | 64 ) ) ? hostParentNode ( oldVNode . el ) : (
// In other cases, the parent container is not actually used so we
// just pass the block element here to avoid a DOM parentNode call.
fallbackContainer
)
) ;
patch (
oldVNode ,
newVNode ,
container ,
null ,
parentComponent ,
parentSuspense ,
namespace ,
slotScopeIds ,
true
) ;
}
} ;
const patchProps = ( el , vnode , oldProps , newProps , parentComponent , parentSuspense , namespace ) => {
if ( oldProps !== newProps ) {
if ( oldProps !== EMPTY _OBJ ) {
for ( const key in oldProps ) {
if ( ! isReservedProp ( key ) && ! ( key in newProps ) ) {
hostPatchProp (
el ,
key ,
oldProps [ key ] ,
null ,
namespace ,
vnode . children ,
parentComponent ,
parentSuspense ,
unmountChildren
) ;
}
}
}
for ( const key in newProps ) {
if ( isReservedProp ( key ) )
continue ;
const next = newProps [ key ] ;
const prev = oldProps [ key ] ;
if ( next !== prev && key !== "value" ) {
hostPatchProp (
el ,
key ,
prev ,
next ,
namespace ,
vnode . children ,
parentComponent ,
parentSuspense ,
unmountChildren
) ;
}
}
if ( "value" in newProps ) {
hostPatchProp ( el , "value" , oldProps . value , newProps . value , namespace ) ;
}
}
} ;
const processFragment = ( n1 , n2 , container , anchor , parentComponent , parentSuspense , namespace , slotScopeIds , optimized ) => {
const fragmentStartAnchor = n2 . el = n1 ? n1 . el : hostCreateText ( "" ) ;
const fragmentEndAnchor = n2 . anchor = n1 ? n1 . anchor : hostCreateText ( "" ) ;
let { patchFlag , dynamicChildren , slotScopeIds : fragmentSlotScopeIds } = n2 ;
if ( fragmentSlotScopeIds ) {
slotScopeIds = slotScopeIds ? slotScopeIds . concat ( fragmentSlotScopeIds ) : fragmentSlotScopeIds ;
}
if ( n1 == null ) {
hostInsert ( fragmentStartAnchor , container , anchor ) ;
hostInsert ( fragmentEndAnchor , container , anchor ) ;
mountChildren (
// #10007
// such fragment like `<></>` will be compiled into
// a fragment which doesn't have a children.
// In this case fallback to an empty array
n2 . children || [ ] ,
container ,
fragmentEndAnchor ,
parentComponent ,
parentSuspense ,
namespace ,
slotScopeIds ,
optimized
) ;
} else {
if ( patchFlag > 0 && patchFlag & 64 && dynamicChildren && // #2715 the previous fragment could've been a BAILed one as a result
// of renderSlot() with no valid children
n1 . dynamicChildren ) {
patchBlockChildren (
n1 . dynamicChildren ,
dynamicChildren ,
container ,
parentComponent ,
parentSuspense ,
namespace ,
slotScopeIds
) ;
if (
// #2080 if the stable fragment has a key, it's a <template v-for> that may
// get moved around. Make sure all root level vnodes inherit el.
// #2134 or if it's a component root, it may also get moved around
// as the component is being moved.
n2 . key != null || parentComponent && n2 === parentComponent . subTree
) {
traverseStaticChildren (
n1 ,
n2 ,
true
/* shallow */
) ;
}
} else {
patchChildren (
n1 ,
n2 ,
container ,
fragmentEndAnchor ,
parentComponent ,
parentSuspense ,
namespace ,
slotScopeIds ,
optimized
) ;
}
}
} ;
const processComponent = ( n1 , n2 , container , anchor , parentComponent , parentSuspense , namespace , slotScopeIds , optimized ) => {
n2 . slotScopeIds = slotScopeIds ;
if ( n1 == null ) {
if ( n2 . shapeFlag & 512 ) {
parentComponent . ctx . activate (
n2 ,
container ,
anchor ,
namespace ,
optimized
) ;
} else {
mountComponent (
n2 ,
container ,
anchor ,
parentComponent ,
parentSuspense ,
namespace ,
optimized
) ;
}
} else {
updateComponent ( n1 , n2 , optimized ) ;
}
} ;
const mountComponent = ( initialVNode , container , anchor , parentComponent , parentSuspense , namespace , optimized ) => {
const instance = initialVNode . component = createComponentInstance (
initialVNode ,
parentComponent ,
parentSuspense
) ;
if ( isKeepAlive ( initialVNode ) ) {
instance . ctx . renderer = internals ;
}
{
setupComponent ( instance ) ;
}
if ( instance . asyncDep ) {
parentSuspense && parentSuspense . registerDep ( instance , setupRenderEffect ) ;
if ( ! initialVNode . el ) {
const placeholder = instance . subTree = createVNode ( Comment ) ;
processCommentNode ( null , placeholder , container , anchor ) ;
}
} else {
setupRenderEffect (
instance ,
initialVNode ,
container ,
anchor ,
parentSuspense ,
namespace ,
optimized
) ;
}
} ;
const updateComponent = ( n1 , n2 , optimized ) => {
const instance = n2 . component = n1 . component ;
if ( shouldUpdateComponent ( n1 , n2 , optimized ) ) {
if ( instance . asyncDep && ! instance . asyncResolved ) {
updateComponentPreRender ( instance , n2 , optimized ) ;
return ;
} else {
instance . next = n2 ;
invalidateJob ( instance . update ) ;
instance . effect . dirty = true ;
instance . update ( ) ;
}
} else {
n2 . el = n1 . el ;
instance . vnode = n2 ;
}
} ;
const setupRenderEffect = ( instance , initialVNode , container , anchor , parentSuspense , namespace , optimized ) => {
const componentUpdateFn = ( ) => {
if ( ! instance . isMounted ) {
let vnodeHook ;
const { el , props } = initialVNode ;
const { bm , m , parent } = instance ;
const isAsyncWrapperVNode = isAsyncWrapper ( initialVNode ) ;
toggleRecurse ( instance , false ) ;
if ( bm ) {
invokeArrayFns ( bm ) ;
}
if ( ! isAsyncWrapperVNode && ( vnodeHook = props && props . onVnodeBeforeMount ) ) {
invokeVNodeHook ( vnodeHook , parent , initialVNode ) ;
}
toggleRecurse ( instance , true ) ;
if ( el && hydrateNode ) {
const hydrateSubTree = ( ) => {
instance . subTree = renderComponentRoot ( instance ) ;
hydrateNode (
el ,
instance . subTree ,
instance ,
parentSuspense ,
null
) ;
} ;
if ( isAsyncWrapperVNode ) {
initialVNode . type . _ _asyncLoader ( ) . then (
// note: we are moving the render call into an async callback,
// which means it won't track dependencies - but it's ok because
// a server-rendered async wrapper is already in resolved state
// and it will never need to change.
( ) => ! instance . isUnmounted && hydrateSubTree ( )
) ;
} else {
hydrateSubTree ( ) ;
}
} else {
const subTree = instance . subTree = renderComponentRoot ( instance ) ;
patch (
null ,
subTree ,
container ,
anchor ,
instance ,
parentSuspense ,
namespace
) ;
initialVNode . el = subTree . el ;
}
if ( m ) {
queuePostRenderEffect ( m , parentSuspense ) ;
}
if ( ! isAsyncWrapperVNode && ( vnodeHook = props && props . onVnodeMounted ) ) {
const scopedInitialVNode = initialVNode ;
queuePostRenderEffect (
( ) => invokeVNodeHook ( vnodeHook , parent , scopedInitialVNode ) ,
parentSuspense
) ;
}
if ( initialVNode . shapeFlag & 256 || parent && isAsyncWrapper ( parent . vnode ) && parent . vnode . shapeFlag & 256 ) {
instance . a && queuePostRenderEffect ( instance . a , parentSuspense ) ;
}
instance . isMounted = true ;
initialVNode = container = anchor = null ;
} else {
let { next , bu , u , parent , vnode } = instance ;
{
const nonHydratedAsyncRoot = locateNonHydratedAsyncRoot ( instance ) ;
if ( nonHydratedAsyncRoot ) {
if ( next ) {
next . el = vnode . el ;
updateComponentPreRender ( instance , next , optimized ) ;
}
nonHydratedAsyncRoot . asyncDep . then ( ( ) => {
if ( ! instance . isUnmounted ) {
componentUpdateFn ( ) ;
}
} ) ;
return ;
}
}
let originNext = next ;
let vnodeHook ;
toggleRecurse ( instance , false ) ;
if ( next ) {
next . el = vnode . el ;
updateComponentPreRender ( instance , next , optimized ) ;
} else {
next = vnode ;
}
if ( bu ) {
invokeArrayFns ( bu ) ;
}
if ( vnodeHook = next . props && next . props . onVnodeBeforeUpdate ) {
invokeVNodeHook ( vnodeHook , parent , next , vnode ) ;
}
toggleRecurse ( instance , true ) ;
const nextTree = renderComponentRoot ( instance ) ;
const prevTree = instance . subTree ;
instance . subTree = nextTree ;
patch (
prevTree ,
nextTree ,
// parent may have changed if it's in a teleport
hostParentNode ( prevTree . el ) ,
// anchor may have changed if it's in a fragment
getNextHostNode ( prevTree ) ,
instance ,
parentSuspense ,
namespace
) ;
next . el = nextTree . el ;
if ( originNext === null ) {
updateHOCHostEl ( instance , nextTree . el ) ;
}
if ( u ) {
queuePostRenderEffect ( u , parentSuspense ) ;
}
if ( vnodeHook = next . props && next . props . onVnodeUpdated ) {
queuePostRenderEffect (
( ) => invokeVNodeHook ( vnodeHook , parent , next , vnode ) ,
parentSuspense
) ;
}
}
} ;
const effect2 = instance . effect = new ReactiveEffect (
componentUpdateFn ,
NOOP ,
( ) => queueJob ( update ) ,
instance . scope
// track it in component's effect scope
) ;
const update = instance . update = ( ) => {
if ( effect2 . dirty ) {
effect2 . run ( ) ;
}
} ;
update . id = instance . uid ;
toggleRecurse ( instance , true ) ;
update ( ) ;
} ;
const updateComponentPreRender = ( instance , nextVNode , optimized ) => {
nextVNode . component = instance ;
const prevProps = instance . vnode . props ;
instance . vnode = nextVNode ;
instance . next = null ;
updateProps ( instance , nextVNode . props , prevProps , optimized ) ;
updateSlots ( instance , nextVNode . children , optimized ) ;
pauseTracking ( ) ;
flushPreFlushCbs ( instance ) ;
resetTracking ( ) ;
} ;
const patchChildren = ( n1 , n2 , container , anchor , parentComponent , parentSuspense , namespace , slotScopeIds , optimized = false ) => {
const c1 = n1 && n1 . children ;
const prevShapeFlag = n1 ? n1 . shapeFlag : 0 ;
const c2 = n2 . children ;
const { patchFlag , shapeFlag } = n2 ;
if ( patchFlag > 0 ) {
if ( patchFlag & 128 ) {
patchKeyedChildren (
c1 ,
c2 ,
container ,
anchor ,
parentComponent ,
parentSuspense ,
namespace ,
slotScopeIds ,
optimized
) ;
return ;
} else if ( patchFlag & 256 ) {
patchUnkeyedChildren (
c1 ,
c2 ,
container ,
anchor ,
parentComponent ,
parentSuspense ,
namespace ,
slotScopeIds ,
optimized
) ;
return ;
}
}
if ( shapeFlag & 8 ) {
if ( prevShapeFlag & 16 ) {
unmountChildren ( c1 , parentComponent , parentSuspense ) ;
}
if ( c2 !== c1 ) {
hostSetElementText ( container , c2 ) ;
}
} else {
if ( prevShapeFlag & 16 ) {
if ( shapeFlag & 16 ) {
patchKeyedChildren (
c1 ,
c2 ,
container ,
anchor ,
parentComponent ,
parentSuspense ,
namespace ,
slotScopeIds ,
optimized
) ;
} else {
unmountChildren ( c1 , parentComponent , parentSuspense , true ) ;
}
} else {
if ( prevShapeFlag & 8 ) {
hostSetElementText ( container , "" ) ;
}
if ( shapeFlag & 16 ) {
mountChildren (
c2 ,
container ,
anchor ,
parentComponent ,
parentSuspense ,
namespace ,
slotScopeIds ,
optimized
) ;
}
}
}
} ;
const patchUnkeyedChildren = ( c1 , c2 , container , anchor , parentComponent , parentSuspense , namespace , slotScopeIds , optimized ) => {
c1 = c1 || EMPTY _ARR ;
c2 = c2 || EMPTY _ARR ;
const oldLength = c1 . length ;
const newLength = c2 . length ;
const commonLength = Math . min ( oldLength , newLength ) ;
let i ;
for ( i = 0 ; i < commonLength ; i ++ ) {
const nextChild = c2 [ i ] = optimized ? cloneIfMounted ( c2 [ i ] ) : normalizeVNode ( c2 [ i ] ) ;
patch (
c1 [ i ] ,
nextChild ,
container ,
null ,
parentComponent ,
parentSuspense ,
namespace ,
slotScopeIds ,
optimized
) ;
}
if ( oldLength > newLength ) {
unmountChildren (
c1 ,
parentComponent ,
parentSuspense ,
true ,
false ,
commonLength
) ;
} else {
mountChildren (
c2 ,
container ,
anchor ,
parentComponent ,
parentSuspense ,
namespace ,
slotScopeIds ,
optimized ,
commonLength
) ;
}
} ;
const patchKeyedChildren = ( c1 , c2 , container , parentAnchor , parentComponent , parentSuspense , namespace , slotScopeIds , optimized ) => {
let i = 0 ;
const l2 = c2 . length ;
let e1 = c1 . length - 1 ;
let e2 = l2 - 1 ;
while ( i <= e1 && i <= e2 ) {
const n1 = c1 [ i ] ;
const n2 = c2 [ i ] = optimized ? cloneIfMounted ( c2 [ i ] ) : normalizeVNode ( c2 [ i ] ) ;
if ( isSameVNodeType ( n1 , n2 ) ) {
patch (
n1 ,
n2 ,
container ,
null ,
parentComponent ,
parentSuspense ,
namespace ,
slotScopeIds ,
optimized
) ;
} else {
break ;
}
i ++ ;
}
while ( i <= e1 && i <= e2 ) {
const n1 = c1 [ e1 ] ;
const n2 = c2 [ e2 ] = optimized ? cloneIfMounted ( c2 [ e2 ] ) : normalizeVNode ( c2 [ e2 ] ) ;
if ( isSameVNodeType ( n1 , n2 ) ) {
patch (
n1 ,
n2 ,
container ,
null ,
parentComponent ,
parentSuspense ,
namespace ,
slotScopeIds ,
optimized
) ;
} else {
break ;
}
e1 -- ;
e2 -- ;
}
if ( i > e1 ) {
if ( i <= e2 ) {
const nextPos = e2 + 1 ;
const anchor = nextPos < l2 ? c2 [ nextPos ] . el : parentAnchor ;
while ( i <= e2 ) {
patch (
null ,
c2 [ i ] = optimized ? cloneIfMounted ( c2 [ i ] ) : normalizeVNode ( c2 [ i ] ) ,
container ,
anchor ,
parentComponent ,
parentSuspense ,
namespace ,
slotScopeIds ,
optimized
) ;
i ++ ;
}
}
} else if ( i > e2 ) {
while ( i <= e1 ) {
unmount ( c1 [ i ] , parentComponent , parentSuspense , true ) ;
i ++ ;
}
} else {
const s1 = i ;
const s2 = i ;
const keyToNewIndexMap = /* @__PURE__ */ new Map ( ) ;
for ( i = s2 ; i <= e2 ; i ++ ) {
const nextChild = c2 [ i ] = optimized ? cloneIfMounted ( c2 [ i ] ) : normalizeVNode ( c2 [ i ] ) ;
if ( nextChild . key != null ) {
keyToNewIndexMap . set ( nextChild . key , i ) ;
}
}
let j ;
let patched = 0 ;
const toBePatched = e2 - s2 + 1 ;
let moved = false ;
let maxNewIndexSoFar = 0 ;
const newIndexToOldIndexMap = new Array ( toBePatched ) ;
for ( i = 0 ; i < toBePatched ; i ++ )
newIndexToOldIndexMap [ i ] = 0 ;
for ( i = s1 ; i <= e1 ; i ++ ) {
const prevChild = c1 [ i ] ;
if ( patched >= toBePatched ) {
unmount ( prevChild , parentComponent , parentSuspense , true ) ;
continue ;
}
let newIndex ;
if ( prevChild . key != null ) {
newIndex = keyToNewIndexMap . get ( prevChild . key ) ;
} else {
for ( j = s2 ; j <= e2 ; j ++ ) {
if ( newIndexToOldIndexMap [ j - s2 ] === 0 && isSameVNodeType ( prevChild , c2 [ j ] ) ) {
newIndex = j ;
break ;
}
}
}
if ( newIndex === void 0 ) {
unmount ( prevChild , parentComponent , parentSuspense , true ) ;
} else {
newIndexToOldIndexMap [ newIndex - s2 ] = i + 1 ;
if ( newIndex >= maxNewIndexSoFar ) {
maxNewIndexSoFar = newIndex ;
} else {
moved = true ;
}
patch (
prevChild ,
c2 [ newIndex ] ,
container ,
null ,
parentComponent ,
parentSuspense ,
namespace ,
slotScopeIds ,
optimized
) ;
patched ++ ;
}
}
const increasingNewIndexSequence = moved ? getSequence ( newIndexToOldIndexMap ) : EMPTY _ARR ;
j = increasingNewIndexSequence . length - 1 ;
for ( i = toBePatched - 1 ; i >= 0 ; i -- ) {
const nextIndex = s2 + i ;
const nextChild = c2 [ nextIndex ] ;
const anchor = nextIndex + 1 < l2 ? c2 [ nextIndex + 1 ] . el : parentAnchor ;
if ( newIndexToOldIndexMap [ i ] === 0 ) {
patch (
null ,
nextChild ,
container ,
anchor ,
parentComponent ,
parentSuspense ,
namespace ,
slotScopeIds ,
optimized
) ;
} else if ( moved ) {
if ( j < 0 || i !== increasingNewIndexSequence [ j ] ) {
move ( nextChild , container , anchor , 2 ) ;
} else {
j -- ;
}
}
}
}
} ;
const move = ( vnode , container , anchor , moveType , parentSuspense = null ) => {
const { el , type , transition , children , shapeFlag } = vnode ;
if ( shapeFlag & 6 ) {
move ( vnode . component . subTree , container , anchor , moveType ) ;
return ;
}
if ( shapeFlag & 128 ) {
vnode . suspense . move ( container , anchor , moveType ) ;
return ;
}
if ( shapeFlag & 64 ) {
type . move ( vnode , container , anchor , internals ) ;
return ;
}
if ( type === Fragment ) {
hostInsert ( el , container , anchor ) ;
for ( let i = 0 ; i < children . length ; i ++ ) {
move ( children [ i ] , container , anchor , moveType ) ;
}
hostInsert ( vnode . anchor , container , anchor ) ;
return ;
}
if ( type === Static ) {
moveStaticNode ( vnode , container , anchor ) ;
return ;
}
const needTransition2 = moveType !== 2 && shapeFlag & 1 && transition ;
if ( needTransition2 ) {
if ( moveType === 0 ) {
transition . beforeEnter ( el ) ;
hostInsert ( el , container , anchor ) ;
queuePostRenderEffect ( ( ) => transition . enter ( el ) , parentSuspense ) ;
} else {
const { leave , delayLeave , afterLeave } = transition ;
const remove22 = ( ) => hostInsert ( el , container , anchor ) ;
const performLeave = ( ) => {
leave ( el , ( ) => {
remove22 ( ) ;
afterLeave && afterLeave ( ) ;
} ) ;
} ;
if ( delayLeave ) {
delayLeave ( el , remove22 , performLeave ) ;
} else {
performLeave ( ) ;
}
}
} else {
hostInsert ( el , container , anchor ) ;
}
} ;
const unmount = ( vnode , parentComponent , parentSuspense , doRemove = false , optimized = false ) => {
const {
type ,
props ,
ref : ref3 ,
children ,
dynamicChildren ,
shapeFlag ,
patchFlag ,
dirs
} = vnode ;
if ( ref3 != null ) {
setRef ( ref3 , null , parentSuspense , vnode , true ) ;
}
if ( shapeFlag & 256 ) {
parentComponent . ctx . deactivate ( vnode ) ;
return ;
}
const shouldInvokeDirs = shapeFlag & 1 && dirs ;
const shouldInvokeVnodeHook = ! isAsyncWrapper ( vnode ) ;
let vnodeHook ;
if ( shouldInvokeVnodeHook && ( vnodeHook = props && props . onVnodeBeforeUnmount ) ) {
invokeVNodeHook ( vnodeHook , parentComponent , vnode ) ;
}
if ( shapeFlag & 6 ) {
unmountComponent ( vnode . component , parentSuspense , doRemove ) ;
} else {
if ( shapeFlag & 128 ) {
vnode . suspense . unmount ( parentSuspense , doRemove ) ;
return ;
}
if ( shouldInvokeDirs ) {
invokeDirectiveHook ( vnode , null , parentComponent , "beforeUnmount" ) ;
}
if ( shapeFlag & 64 ) {
vnode . type . remove (
vnode ,
parentComponent ,
parentSuspense ,
optimized ,
internals ,
doRemove
) ;
} else if ( dynamicChildren && // #1153: fast path should not be taken for non-stable (v-for) fragments
( type !== Fragment || patchFlag > 0 && patchFlag & 64 ) ) {
unmountChildren (
dynamicChildren ,
parentComponent ,
parentSuspense ,
false ,
true
) ;
} else if ( type === Fragment && patchFlag & ( 128 | 256 ) || ! optimized && shapeFlag & 16 ) {
unmountChildren ( children , parentComponent , parentSuspense ) ;
}
if ( doRemove ) {
remove2 ( vnode ) ;
}
}
if ( shouldInvokeVnodeHook && ( vnodeHook = props && props . onVnodeUnmounted ) || shouldInvokeDirs ) {
queuePostRenderEffect ( ( ) => {
vnodeHook && invokeVNodeHook ( vnodeHook , parentComponent , vnode ) ;
shouldInvokeDirs && invokeDirectiveHook ( vnode , null , parentComponent , "unmounted" ) ;
} , parentSuspense ) ;
}
} ;
const remove2 = ( vnode ) => {
const { type , el , anchor , transition } = vnode ;
if ( type === Fragment ) {
{
removeFragment ( el , anchor ) ;
}
return ;
}
if ( type === Static ) {
removeStaticNode ( vnode ) ;
return ;
}
const performRemove = ( ) => {
hostRemove ( el ) ;
if ( transition && ! transition . persisted && transition . afterLeave ) {
transition . afterLeave ( ) ;
}
} ;
if ( vnode . shapeFlag & 1 && transition && ! transition . persisted ) {
const { leave , delayLeave } = transition ;
const performLeave = ( ) => leave ( el , performRemove ) ;
if ( delayLeave ) {
delayLeave ( vnode . el , performRemove , performLeave ) ;
} else {
performLeave ( ) ;
}
} else {
performRemove ( ) ;
}
} ;
const removeFragment = ( cur , end ) => {
let next ;
while ( cur !== end ) {
next = hostNextSibling ( cur ) ;
hostRemove ( cur ) ;
cur = next ;
}
hostRemove ( end ) ;
} ;
const unmountComponent = ( instance , parentSuspense , doRemove ) => {
const { bum , scope , update , subTree , um } = instance ;
if ( bum ) {
invokeArrayFns ( bum ) ;
}
scope . stop ( ) ;
if ( update ) {
update . active = false ;
unmount ( subTree , instance , parentSuspense , doRemove ) ;
}
if ( um ) {
queuePostRenderEffect ( um , parentSuspense ) ;
}
queuePostRenderEffect ( ( ) => {
instance . isUnmounted = true ;
} , parentSuspense ) ;
if ( parentSuspense && parentSuspense . pendingBranch && ! parentSuspense . isUnmounted && instance . asyncDep && ! instance . asyncResolved && instance . suspenseId === parentSuspense . pendingId ) {
parentSuspense . deps -- ;
if ( parentSuspense . deps === 0 ) {
parentSuspense . resolve ( ) ;
}
}
} ;
const unmountChildren = ( children , parentComponent , parentSuspense , doRemove = false , optimized = false , start = 0 ) => {
for ( let i = start ; i < children . length ; i ++ ) {
unmount ( children [ i ] , parentComponent , parentSuspense , doRemove , optimized ) ;
}
} ;
const getNextHostNode = ( vnode ) => {
if ( vnode . shapeFlag & 6 ) {
return getNextHostNode ( vnode . component . subTree ) ;
}
if ( vnode . shapeFlag & 128 ) {
return vnode . suspense . next ( ) ;
}
return hostNextSibling ( vnode . anchor || vnode . el ) ;
} ;
let isFlushing2 = false ;
const render = ( vnode , container , namespace ) => {
if ( vnode == null ) {
if ( container . _vnode ) {
unmount ( container . _vnode , null , null , true ) ;
}
} else {
patch (
container . _vnode || null ,
vnode ,
container ,
null ,
null ,
null ,
namespace
) ;
}
if ( ! isFlushing2 ) {
isFlushing2 = true ;
flushPreFlushCbs ( ) ;
flushPostFlushCbs ( ) ;
isFlushing2 = false ;
}
container . _vnode = vnode ;
} ;
const internals = {
p : patch ,
um : unmount ,
m : move ,
r : remove2 ,
mt : mountComponent ,
mc : mountChildren ,
pc : patchChildren ,
pbc : patchBlockChildren ,
n : getNextHostNode ,
o : options
} ;
let hydrate ;
let hydrateNode ;
if ( createHydrationFns ) {
[ hydrate , hydrateNode ] = createHydrationFns (
internals
) ;
}
return {
render ,
hydrate ,
createApp : createAppAPI ( render , hydrate )
} ;
}
function resolveChildrenNamespace ( { type , props } , currentNamespace ) {
return currentNamespace === "svg" && type === "foreignObject" || currentNamespace === "mathml" && type === "annotation-xml" && props && props . encoding && props . encoding . includes ( "html" ) ? void 0 : currentNamespace ;
}
function toggleRecurse ( { effect : effect2 , update } , allowed ) {
effect2 . allowRecurse = update . allowRecurse = allowed ;
}
function needTransition ( parentSuspense , transition ) {
return ( ! parentSuspense || parentSuspense && ! parentSuspense . pendingBranch ) && transition && ! transition . persisted ;
}
function traverseStaticChildren ( n1 , n2 , shallow = false ) {
const ch1 = n1 . children ;
const ch2 = n2 . children ;
if ( isArray ( ch1 ) && isArray ( ch2 ) ) {
for ( let i = 0 ; i < ch1 . length ; i ++ ) {
const c1 = ch1 [ i ] ;
let c2 = ch2 [ i ] ;
if ( c2 . shapeFlag & 1 && ! c2 . dynamicChildren ) {
if ( c2 . patchFlag <= 0 || c2 . patchFlag === 32 ) {
c2 = ch2 [ i ] = cloneIfMounted ( ch2 [ i ] ) ;
c2 . el = c1 . el ;
}
if ( ! shallow )
traverseStaticChildren ( c1 , c2 ) ;
}
if ( c2 . type === Text ) {
c2 . el = c1 . el ;
}
}
}
}
function getSequence ( arr ) {
const p2 = arr . slice ( ) ;
const result = [ 0 ] ;
let i , j , u , v , c ;
const len = arr . length ;
for ( i = 0 ; i < len ; i ++ ) {
const arrI = arr [ i ] ;
if ( arrI !== 0 ) {
j = result [ result . length - 1 ] ;
if ( arr [ j ] < arrI ) {
p2 [ i ] = j ;
result . push ( i ) ;
continue ;
}
u = 0 ;
v = result . length - 1 ;
while ( u < v ) {
c = u + v >> 1 ;
if ( arr [ result [ c ] ] < arrI ) {
u = c + 1 ;
} else {
v = c ;
}
}
if ( arrI < arr [ result [ u ] ] ) {
if ( u > 0 ) {
p2 [ i ] = result [ u - 1 ] ;
}
result [ u ] = i ;
}
}
}
u = result . length ;
v = result [ u - 1 ] ;
while ( u -- > 0 ) {
result [ u ] = v ;
v = p2 [ v ] ;
}
return result ;
}
function locateNonHydratedAsyncRoot ( instance ) {
const subComponent = instance . subTree . component ;
if ( subComponent ) {
if ( subComponent . asyncDep && ! subComponent . asyncResolved ) {
return subComponent ;
} else {
return locateNonHydratedAsyncRoot ( subComponent ) ;
}
}
}
const isTeleport = ( type ) => type . _ _isTeleport ;
const isTeleportDisabled = ( props ) => props && ( props . disabled || props . disabled === "" ) ;
const isTargetSVG = ( target ) => typeof SVGElement !== "undefined" && target instanceof SVGElement ;
const isTargetMathML = ( target ) => typeof MathMLElement === "function" && target instanceof MathMLElement ;
const resolveTarget = ( props , select ) => {
const targetSelector = props && props . to ;
if ( isString ( targetSelector ) ) {
if ( ! select ) {
return null ;
} else {
const target = select ( targetSelector ) ;
return target ;
}
} else {
return targetSelector ;
}
} ;
const TeleportImpl = {
name : "Teleport" ,
_ _isTeleport : true ,
process ( n1 , n2 , container , anchor , parentComponent , parentSuspense , namespace , slotScopeIds , optimized , internals ) {
const {
mc : mountChildren ,
pc : patchChildren ,
pbc : patchBlockChildren ,
o : { insert , querySelector , createText , createComment }
} = internals ;
const disabled = isTeleportDisabled ( n2 . props ) ;
let { shapeFlag , children , dynamicChildren } = n2 ;
if ( n1 == null ) {
const placeholder = n2 . el = createText ( "" ) ;
const mainAnchor = n2 . anchor = createText ( "" ) ;
insert ( placeholder , container , anchor ) ;
insert ( mainAnchor , container , anchor ) ;
const target = n2 . target = resolveTarget ( n2 . props , querySelector ) ;
const targetAnchor = n2 . targetAnchor = createText ( "" ) ;
if ( target ) {
insert ( targetAnchor , target ) ;
if ( namespace === "svg" || isTargetSVG ( target ) ) {
namespace = "svg" ;
} else if ( namespace === "mathml" || isTargetMathML ( target ) ) {
namespace = "mathml" ;
}
}
const mount = ( container2 , anchor2 ) => {
if ( shapeFlag & 16 ) {
mountChildren (
children ,
container2 ,
anchor2 ,
parentComponent ,
parentSuspense ,
namespace ,
slotScopeIds ,
optimized
) ;
}
} ;
if ( disabled ) {
mount ( container , mainAnchor ) ;
} else if ( target ) {
mount ( target , targetAnchor ) ;
}
} else {
n2 . el = n1 . el ;
const mainAnchor = n2 . anchor = n1 . anchor ;
const target = n2 . target = n1 . target ;
const targetAnchor = n2 . targetAnchor = n1 . targetAnchor ;
const wasDisabled = isTeleportDisabled ( n1 . props ) ;
const currentContainer = wasDisabled ? container : target ;
const currentAnchor = wasDisabled ? mainAnchor : targetAnchor ;
if ( namespace === "svg" || isTargetSVG ( target ) ) {
namespace = "svg" ;
} else if ( namespace === "mathml" || isTargetMathML ( target ) ) {
namespace = "mathml" ;
}
if ( dynamicChildren ) {
patchBlockChildren (
n1 . dynamicChildren ,
dynamicChildren ,
currentContainer ,
parentComponent ,
parentSuspense ,
namespace ,
slotScopeIds
) ;
traverseStaticChildren ( n1 , n2 , true ) ;
} else if ( ! optimized ) {
patchChildren (
n1 ,
n2 ,
currentContainer ,
currentAnchor ,
parentComponent ,
parentSuspense ,
namespace ,
slotScopeIds ,
false
) ;
}
if ( disabled ) {
if ( ! wasDisabled ) {
moveTeleport (
n2 ,
container ,
mainAnchor ,
internals ,
1
) ;
} else {
if ( n2 . props && n1 . props && n2 . props . to !== n1 . props . to ) {
n2 . props . to = n1 . props . to ;
}
}
} else {
if ( ( n2 . props && n2 . props . to ) !== ( n1 . props && n1 . props . to ) ) {
const nextTarget = n2 . target = resolveTarget (
n2 . props ,
querySelector
) ;
if ( nextTarget ) {
moveTeleport (
n2 ,
nextTarget ,
null ,
internals ,
0
) ;
}
} else if ( wasDisabled ) {
moveTeleport (
n2 ,
target ,
targetAnchor ,
internals ,
1
) ;
}
}
}
updateCssVars ( n2 ) ;
} ,
remove ( vnode , parentComponent , parentSuspense , optimized , { um : unmount , o : { remove : hostRemove } } , doRemove ) {
const { shapeFlag , children , anchor , targetAnchor , target , props } = vnode ;
if ( target ) {
hostRemove ( targetAnchor ) ;
}
doRemove && hostRemove ( anchor ) ;
if ( shapeFlag & 16 ) {
const shouldRemove = doRemove || ! isTeleportDisabled ( props ) ;
for ( let i = 0 ; i < children . length ; i ++ ) {
const child = children [ i ] ;
unmount (
child ,
parentComponent ,
parentSuspense ,
shouldRemove ,
! ! child . dynamicChildren
) ;
}
}
} ,
move : moveTeleport ,
hydrate : hydrateTeleport
} ;
function moveTeleport ( vnode , container , parentAnchor , { o : { insert } , m : move } , moveType = 2 ) {
if ( moveType === 0 ) {
insert ( vnode . targetAnchor , container , parentAnchor ) ;
}
const { el , anchor , shapeFlag , children , props } = vnode ;
const isReorder = moveType === 2 ;
if ( isReorder ) {
insert ( el , container , parentAnchor ) ;
}
if ( ! isReorder || isTeleportDisabled ( props ) ) {
if ( shapeFlag & 16 ) {
for ( let i = 0 ; i < children . length ; i ++ ) {
move (
children [ i ] ,
container ,
parentAnchor ,
2
) ;
}
}
}
if ( isReorder ) {
insert ( anchor , container , parentAnchor ) ;
}
}
function hydrateTeleport ( node , vnode , parentComponent , parentSuspense , slotScopeIds , optimized , {
o : { nextSibling , parentNode , querySelector }
} , hydrateChildren ) {
const target = vnode . target = resolveTarget (
vnode . props ,
querySelector
) ;
if ( target ) {
const targetNode = target . _lpa || target . firstChild ;
if ( vnode . shapeFlag & 16 ) {
if ( isTeleportDisabled ( vnode . props ) ) {
vnode . anchor = hydrateChildren (
nextSibling ( node ) ,
vnode ,
parentNode ( node ) ,
parentComponent ,
parentSuspense ,
slotScopeIds ,
optimized
) ;
vnode . targetAnchor = targetNode ;
} else {
vnode . anchor = nextSibling ( node ) ;
let targetAnchor = targetNode ;
while ( targetAnchor ) {
targetAnchor = nextSibling ( targetAnchor ) ;
if ( targetAnchor && targetAnchor . nodeType === 8 && targetAnchor . data === "teleport anchor" ) {
vnode . targetAnchor = targetAnchor ;
target . _lpa = vnode . targetAnchor && nextSibling ( vnode . targetAnchor ) ;
break ;
}
}
hydrateChildren (
targetNode ,
vnode ,
target ,
parentComponent ,
parentSuspense ,
slotScopeIds ,
optimized
) ;
}
}
updateCssVars ( vnode ) ;
}
return vnode . anchor && nextSibling ( vnode . anchor ) ;
}
const Teleport = TeleportImpl ;
function updateCssVars ( vnode ) {
const ctx = vnode . ctx ;
if ( ctx && ctx . ut ) {
let node = vnode . children [ 0 ] . el ;
while ( node && node !== vnode . targetAnchor ) {
if ( node . nodeType === 1 )
node . setAttribute ( "data-v-owner" , ctx . uid ) ;
node = node . nextSibling ;
}
ctx . ut ( ) ;
}
}
const Fragment = Symbol . for ( "v-fgt" ) ;
const Text = Symbol . for ( "v-txt" ) ;
const Comment = Symbol . for ( "v-cmt" ) ;
const Static = Symbol . for ( "v-stc" ) ;
const blockStack = [ ] ;
let currentBlock = null ;
function openBlock ( disableTracking = false ) {
blockStack . push ( currentBlock = disableTracking ? null : [ ] ) ;
}
function closeBlock ( ) {
blockStack . pop ( ) ;
currentBlock = blockStack [ blockStack . length - 1 ] || null ;
}
let isBlockTreeEnabled = 1 ;
function setBlockTracking ( value ) {
isBlockTreeEnabled += value ;
}
function setupBlock ( vnode ) {
vnode . dynamicChildren = isBlockTreeEnabled > 0 ? currentBlock || EMPTY _ARR : null ;
closeBlock ( ) ;
if ( isBlockTreeEnabled > 0 && currentBlock ) {
currentBlock . push ( vnode ) ;
}
return vnode ;
}
function createElementBlock ( type , props , children , patchFlag , dynamicProps , shapeFlag ) {
return setupBlock (
createBaseVNode (
type ,
props ,
children ,
patchFlag ,
dynamicProps ,
shapeFlag ,
true
)
) ;
}
function createBlock ( type , props , children , patchFlag , dynamicProps ) {
return setupBlock (
createVNode (
type ,
props ,
children ,
patchFlag ,
dynamicProps ,
true
)
) ;
}
function isVNode ( value ) {
return value ? value . _ _v _isVNode === true : false ;
}
function isSameVNodeType ( n1 , n2 ) {
return n1 . type === n2 . type && n1 . key === n2 . key ;
}
const normalizeKey = ( { key } ) => key != null ? key : null ;
const normalizeRef = ( {
ref : ref3 ,
ref _key ,
ref _for
} ) => {
if ( typeof ref3 === "number" ) {
ref3 = "" + ref3 ;
}
return ref3 != null ? isString ( ref3 ) || isRef ( ref3 ) || isFunction ( ref3 ) ? { i : currentRenderingInstance , r : ref3 , k : ref _key , f : ! ! ref _for } : ref3 : null ;
} ;
function createBaseVNode ( type , props = null , children = null , patchFlag = 0 , dynamicProps = null , shapeFlag = type === Fragment ? 0 : 1 , isBlockNode = false , needFullChildrenNormalization = false ) {
const vnode = {
_ _v _isVNode : true ,
_ _v _skip : true ,
type ,
props ,
key : props && normalizeKey ( props ) ,
ref : props && normalizeRef ( props ) ,
scopeId : currentScopeId ,
slotScopeIds : null ,
children ,
component : null ,
suspense : null ,
ssContent : null ,
ssFallback : null ,
dirs : null ,
transition : null ,
el : null ,
anchor : null ,
target : null ,
targetAnchor : null ,
staticCount : 0 ,
shapeFlag ,
patchFlag ,
dynamicProps ,
dynamicChildren : null ,
appContext : null ,
ctx : currentRenderingInstance
} ;
if ( needFullChildrenNormalization ) {
normalizeChildren ( vnode , children ) ;
if ( shapeFlag & 128 ) {
type . normalize ( vnode ) ;
}
} else if ( children ) {
vnode . shapeFlag |= isString ( children ) ? 8 : 16 ;
}
if ( isBlockTreeEnabled > 0 && // avoid a block node from tracking itself
! isBlockNode && // has current parent block
currentBlock && // presence of a patch flag indicates this node needs patching on updates.
// component nodes also should always be patched, because even if the
// component doesn't need to update, it needs to persist the instance on to
// the next vnode so that it can be properly unmounted later.
( vnode . patchFlag > 0 || shapeFlag & 6 ) && // the EVENTS flag is only for hydration and if it is the only flag, the
// vnode should not be considered dynamic due to handler caching.
vnode . patchFlag !== 32 ) {
currentBlock . push ( vnode ) ;
}
return vnode ;
}
const createVNode = _createVNode ;
function _createVNode ( type , props = null , children = null , patchFlag = 0 , dynamicProps = null , isBlockNode = false ) {
if ( ! type || type === NULL _DYNAMIC _COMPONENT ) {
type = Comment ;
}
if ( isVNode ( type ) ) {
const cloned = cloneVNode (
type ,
props ,
true
/* mergeRef: true */
) ;
if ( children ) {
normalizeChildren ( cloned , children ) ;
}
if ( isBlockTreeEnabled > 0 && ! isBlockNode && currentBlock ) {
if ( cloned . shapeFlag & 6 ) {
currentBlock [ currentBlock . indexOf ( type ) ] = cloned ;
} else {
currentBlock . push ( cloned ) ;
}
}
cloned . patchFlag |= - 2 ;
return cloned ;
}
if ( isClassComponent ( type ) ) {
type = type . _ _vccOpts ;
}
if ( props ) {
props = guardReactiveProps ( props ) ;
let { class : klass , style } = props ;
if ( klass && ! isString ( klass ) ) {
props . class = normalizeClass ( klass ) ;
}
if ( isObject$1 ( style ) ) {
if ( isProxy ( style ) && ! isArray ( style ) ) {
style = extend ( { } , style ) ;
}
props . style = normalizeStyle ( style ) ;
}
}
const shapeFlag = isString ( type ) ? 1 : isSuspense ( type ) ? 128 : isTeleport ( type ) ? 64 : isObject$1 ( type ) ? 4 : isFunction ( type ) ? 2 : 0 ;
return createBaseVNode (
type ,
props ,
children ,
patchFlag ,
dynamicProps ,
shapeFlag ,
isBlockNode ,
true
) ;
}
function guardReactiveProps ( props ) {
if ( ! props )
return null ;
return isProxy ( props ) || isInternalObject ( props ) ? extend ( { } , props ) : props ;
}
function cloneVNode ( vnode , extraProps , mergeRef = false ) {
const { props , ref : ref3 , patchFlag , children } = vnode ;
const mergedProps = extraProps ? mergeProps ( props || { } , extraProps ) : props ;
const cloned = {
_ _v _isVNode : true ,
_ _v _skip : true ,
type : vnode . type ,
props : mergedProps ,
key : mergedProps && normalizeKey ( mergedProps ) ,
ref : extraProps && extraProps . ref ? (
// #2078 in the case of <component :is="vnode" ref="extra"/>
// if the vnode itself already has a ref, cloneVNode will need to merge
// the refs so the single vnode can be set on multiple refs
mergeRef && ref3 ? isArray ( ref3 ) ? ref3 . concat ( normalizeRef ( extraProps ) ) : [ ref3 , normalizeRef ( extraProps ) ] : normalizeRef ( extraProps )
) : ref3 ,
scopeId : vnode . scopeId ,
slotScopeIds : vnode . slotScopeIds ,
children ,
target : vnode . target ,
targetAnchor : vnode . targetAnchor ,
staticCount : vnode . staticCount ,
shapeFlag : vnode . shapeFlag ,
// if the vnode is cloned with extra props, we can no longer assume its
// existing patch flag to be reliable and need to add the FULL_PROPS flag.
// note: preserve flag for fragments since they use the flag for children
// fast paths only.
patchFlag : extraProps && vnode . type !== Fragment ? patchFlag === - 1 ? 16 : patchFlag | 16 : patchFlag ,
dynamicProps : vnode . dynamicProps ,
dynamicChildren : vnode . dynamicChildren ,
appContext : vnode . appContext ,
dirs : vnode . dirs ,
transition : vnode . transition ,
// These should technically only be non-null on mounted VNodes. However,
// they *should* be copied for kept-alive vnodes. So we just always copy
// them since them being non-null during a mount doesn't affect the logic as
// they will simply be overwritten.
component : vnode . component ,
suspense : vnode . suspense ,
ssContent : vnode . ssContent && cloneVNode ( vnode . ssContent ) ,
ssFallback : vnode . ssFallback && cloneVNode ( vnode . ssFallback ) ,
el : vnode . el ,
anchor : vnode . anchor ,
ctx : vnode . ctx ,
ce : vnode . ce
} ;
return cloned ;
}
function createTextVNode ( text = " " , flag = 0 ) {
return createVNode ( Text , null , text , flag ) ;
}
function createStaticVNode ( content , numberOfNodes ) {
const vnode = createVNode ( Static , null , content ) ;
vnode . staticCount = numberOfNodes ;
return vnode ;
}
function createCommentVNode ( text = "" , asBlock = false ) {
return asBlock ? ( openBlock ( ) , createBlock ( Comment , null , text ) ) : createVNode ( Comment , null , text ) ;
}
function normalizeVNode ( child ) {
if ( child == null || typeof child === "boolean" ) {
return createVNode ( Comment ) ;
} else if ( isArray ( child ) ) {
return createVNode (
Fragment ,
null ,
// #3666, avoid reference pollution when reusing vnode
child . slice ( )
) ;
} else if ( typeof child === "object" ) {
return cloneIfMounted ( child ) ;
} else {
return createVNode ( Text , null , String ( child ) ) ;
}
}
function cloneIfMounted ( child ) {
return child . el === null && child . patchFlag !== - 1 || child . memo ? child : cloneVNode ( child ) ;
}
function normalizeChildren ( vnode , children ) {
let type = 0 ;
const { shapeFlag } = vnode ;
if ( children == null ) {
children = null ;
} else if ( isArray ( children ) ) {
type = 16 ;
} else if ( typeof children === "object" ) {
if ( shapeFlag & ( 1 | 64 ) ) {
const slot = children . default ;
if ( slot ) {
slot . _c && ( slot . _d = false ) ;
normalizeChildren ( vnode , slot ( ) ) ;
slot . _c && ( slot . _d = true ) ;
}
return ;
} else {
type = 32 ;
const slotFlag = children . _ ;
if ( ! slotFlag && ! isInternalObject ( children ) ) {
children . _ctx = currentRenderingInstance ;
} else if ( slotFlag === 3 && currentRenderingInstance ) {
if ( currentRenderingInstance . slots . _ === 1 ) {
children . _ = 1 ;
} else {
children . _ = 2 ;
vnode . patchFlag |= 1024 ;
}
}
}
} else if ( isFunction ( children ) ) {
children = { default : children , _ctx : currentRenderingInstance } ;
type = 32 ;
} else {
children = String ( children ) ;
if ( shapeFlag & 64 ) {
type = 16 ;
children = [ createTextVNode ( children ) ] ;
} else {
type = 8 ;
}
}
vnode . children = children ;
vnode . shapeFlag |= type ;
}
function mergeProps ( ... args ) {
const ret = { } ;
for ( let i = 0 ; i < args . length ; i ++ ) {
const toMerge = args [ i ] ;
for ( const key in toMerge ) {
if ( key === "class" ) {
if ( ret . class !== toMerge . class ) {
ret . class = normalizeClass ( [ ret . class , toMerge . class ] ) ;
}
} else if ( key === "style" ) {
ret . style = normalizeStyle ( [ ret . style , toMerge . style ] ) ;
} else if ( isOn ( key ) ) {
const existing = ret [ key ] ;
const incoming = toMerge [ key ] ;
if ( incoming && existing !== incoming && ! ( isArray ( existing ) && existing . includes ( incoming ) ) ) {
ret [ key ] = existing ? [ ] . concat ( existing , incoming ) : incoming ;
}
} else if ( key !== "" ) {
ret [ key ] = toMerge [ key ] ;
}
}
}
return ret ;
}
function invokeVNodeHook ( hook , instance , vnode , prevVNode = null ) {
callWithAsyncErrorHandling ( hook , instance , 7 , [
vnode ,
prevVNode
] ) ;
}
const emptyAppContext = createAppContext ( ) ;
let uid = 0 ;
function createComponentInstance ( vnode , parent , suspense ) {
const type = vnode . type ;
const appContext = ( parent ? parent . appContext : vnode . appContext ) || emptyAppContext ;
const instance = {
uid : uid ++ ,
vnode ,
type ,
parent ,
appContext ,
root : null ,
// to be immediately set
next : null ,
subTree : null ,
// will be set synchronously right after creation
effect : null ,
update : null ,
// will be set synchronously right after creation
scope : new EffectScope (
true
/* detached */
) ,
render : null ,
proxy : null ,
exposed : null ,
exposeProxy : null ,
withProxy : null ,
provides : parent ? parent . provides : Object . create ( appContext . provides ) ,
accessCache : null ,
renderCache : [ ] ,
// local resolved assets
components : null ,
directives : null ,
// resolved props and emits options
propsOptions : normalizePropsOptions ( type , appContext ) ,
emitsOptions : normalizeEmitsOptions ( type , appContext ) ,
// emit
emit : null ,
// to be set immediately
emitted : null ,
// props default value
propsDefaults : EMPTY _OBJ ,
// inheritAttrs
inheritAttrs : type . inheritAttrs ,
// state
ctx : EMPTY _OBJ ,
data : EMPTY _OBJ ,
props : EMPTY _OBJ ,
attrs : EMPTY _OBJ ,
slots : EMPTY _OBJ ,
refs : EMPTY _OBJ ,
setupState : EMPTY _OBJ ,
setupContext : null ,
attrsProxy : null ,
slotsProxy : null ,
// suspense related
suspense ,
suspenseId : suspense ? suspense . pendingId : 0 ,
asyncDep : null ,
asyncResolved : false ,
// lifecycle hooks
// not using enums here because it results in computed properties
isMounted : false ,
isUnmounted : false ,
isDeactivated : false ,
bc : null ,
c : null ,
bm : null ,
m : null ,
bu : null ,
u : null ,
um : null ,
bum : null ,
da : null ,
a : null ,
rtg : null ,
rtc : null ,
ec : null ,
sp : null
} ;
{
instance . ctx = { _ : instance } ;
}
instance . root = parent ? parent . root : instance ;
instance . emit = emit . bind ( null , instance ) ;
if ( vnode . ce ) {
vnode . ce ( instance ) ;
}
return instance ;
}
let currentInstance = null ;
const getCurrentInstance = ( ) => currentInstance || currentRenderingInstance ;
let internalSetCurrentInstance ;
let setInSSRSetupState ;
{
const g = getGlobalThis ( ) ;
const registerGlobalSetter = ( key , setter ) => {
let setters ;
if ( ! ( setters = g [ key ] ) )
setters = g [ key ] = [ ] ;
setters . push ( setter ) ;
return ( v ) => {
if ( setters . length > 1 )
setters . forEach ( ( set2 ) => set2 ( v ) ) ;
else
setters [ 0 ] ( v ) ;
} ;
} ;
internalSetCurrentInstance = registerGlobalSetter (
` __VUE_INSTANCE_SETTERS__ ` ,
( v ) => currentInstance = v
) ;
setInSSRSetupState = registerGlobalSetter (
` __VUE_SSR_SETTERS__ ` ,
( v ) => isInSSRComponentSetup = v
) ;
}
const setCurrentInstance = ( instance ) => {
const prev = currentInstance ;
internalSetCurrentInstance ( instance ) ;
instance . scope . on ( ) ;
return ( ) => {
instance . scope . off ( ) ;
internalSetCurrentInstance ( prev ) ;
} ;
} ;
const unsetCurrentInstance = ( ) => {
currentInstance && currentInstance . scope . off ( ) ;
internalSetCurrentInstance ( null ) ;
} ;
function isStatefulComponent ( instance ) {
return instance . vnode . shapeFlag & 4 ;
}
let isInSSRComponentSetup = false ;
function setupComponent ( instance , isSSR = false ) {
isSSR && setInSSRSetupState ( isSSR ) ;
const { props , children } = instance . vnode ;
const isStateful = isStatefulComponent ( instance ) ;
initProps ( instance , props , isStateful , isSSR ) ;
initSlots ( instance , children ) ;
const setupResult = isStateful ? setupStatefulComponent ( instance , isSSR ) : void 0 ;
isSSR && setInSSRSetupState ( false ) ;
return setupResult ;
}
function setupStatefulComponent ( instance , isSSR ) {
const Component = instance . type ;
instance . accessCache = /* @__PURE__ */ Object . create ( null ) ;
instance . proxy = new Proxy ( instance . ctx , PublicInstanceProxyHandlers ) ;
const { setup } = Component ;
if ( setup ) {
const setupContext = instance . setupContext = setup . length > 1 ? createSetupContext ( instance ) : null ;
const reset = setCurrentInstance ( instance ) ;
pauseTracking ( ) ;
const setupResult = callWithErrorHandling (
setup ,
instance ,
0 ,
[
instance . props ,
setupContext
]
) ;
resetTracking ( ) ;
reset ( ) ;
if ( isPromise ( setupResult ) ) {
setupResult . then ( unsetCurrentInstance , unsetCurrentInstance ) ;
if ( isSSR ) {
return setupResult . then ( ( resolvedResult ) => {
handleSetupResult ( instance , resolvedResult , isSSR ) ;
} ) . catch ( ( e ) => {
handleError ( e , instance , 0 ) ;
} ) ;
} else {
instance . asyncDep = setupResult ;
}
} else {
handleSetupResult ( instance , setupResult , isSSR ) ;
}
} else {
finishComponentSetup ( instance , isSSR ) ;
}
}
function handleSetupResult ( instance , setupResult , isSSR ) {
if ( isFunction ( setupResult ) ) {
if ( instance . type . _ _ssrInlineRender ) {
instance . ssrRender = setupResult ;
} else {
instance . render = setupResult ;
}
} else if ( isObject$1 ( setupResult ) ) {
instance . setupState = proxyRefs ( setupResult ) ;
} else
;
finishComponentSetup ( instance , isSSR ) ;
}
let compile ;
function finishComponentSetup ( instance , isSSR , skipOptions ) {
const Component = instance . type ;
if ( ! instance . render ) {
if ( ! isSSR && compile && ! Component . render ) {
const template = Component . template || resolveMergedOptions ( instance ) . template ;
if ( template ) {
const { isCustomElement , compilerOptions } = instance . appContext . config ;
const { delimiters , compilerOptions : componentCompilerOptions } = Component ;
const finalCompilerOptions = extend (
extend (
{
isCustomElement ,
delimiters
} ,
compilerOptions
) ,
componentCompilerOptions
) ;
Component . render = compile ( template , finalCompilerOptions ) ;
}
}
instance . render = Component . render || NOOP ;
}
{
const reset = setCurrentInstance ( instance ) ;
pauseTracking ( ) ;
try {
applyOptions ( instance ) ;
} finally {
resetTracking ( ) ;
reset ( ) ;
}
}
}
const attrsProxyHandlers = {
get ( target , key ) {
track ( target , "get" , "" ) ;
return target [ key ] ;
}
} ;
function createSetupContext ( instance ) {
const expose = ( exposed ) => {
instance . exposed = exposed || { } ;
} ;
{
return {
attrs : new Proxy ( instance . attrs , attrsProxyHandlers ) ,
slots : instance . slots ,
emit : instance . emit ,
expose
} ;
}
}
function getExposeProxy ( instance ) {
if ( instance . exposed ) {
return instance . exposeProxy || ( instance . exposeProxy = new Proxy ( proxyRefs ( markRaw ( instance . exposed ) ) , {
get ( target , key ) {
if ( key in target ) {
return target [ key ] ;
} else if ( key in publicPropertiesMap ) {
return publicPropertiesMap [ key ] ( instance ) ;
}
} ,
has ( target , key ) {
return key in target || key in publicPropertiesMap ;
}
} ) ) ;
}
}
const classifyRE = /(?:^|[-_])(\w)/g ;
const classify = ( str ) => str . replace ( classifyRE , ( c ) => c . toUpperCase ( ) ) . replace ( /[-_]/g , "" ) ;
function getComponentName ( Component , includeInferred = true ) {
return isFunction ( Component ) ? Component . displayName || Component . name : Component . name || includeInferred && Component . _ _name ;
}
function formatComponentName ( instance , Component , isRoot = false ) {
let name = getComponentName ( Component ) ;
if ( ! name && Component . _ _file ) {
const match = Component . _ _file . match ( /([^/\\]+)\.\w+$/ ) ;
if ( match ) {
name = match [ 1 ] ;
}
}
if ( ! name && instance && instance . parent ) {
const inferFromRegistry = ( registry ) => {
for ( const key in registry ) {
if ( registry [ key ] === Component ) {
return key ;
}
}
} ;
name = inferFromRegistry (
instance . components || instance . parent . type . components
) || inferFromRegistry ( instance . appContext . components ) ;
}
return name ? classify ( name ) : isRoot ? ` App ` : ` Anonymous ` ;
}
function isClassComponent ( value ) {
return isFunction ( value ) && "__vccOpts" in value ;
}
const computed = ( getterOrOptions , debugOptions ) => {
const c = computed$1 ( getterOrOptions , debugOptions , isInSSRComponentSetup ) ;
return c ;
} ;
function h ( type , propsOrChildren , children ) {
const l = arguments . length ;
if ( l === 2 ) {
if ( isObject$1 ( propsOrChildren ) && ! isArray ( propsOrChildren ) ) {
if ( isVNode ( propsOrChildren ) ) {
return createVNode ( type , null , [ propsOrChildren ] ) ;
}
return createVNode ( type , propsOrChildren ) ;
} else {
return createVNode ( type , null , propsOrChildren ) ;
}
} else {
if ( l > 3 ) {
children = Array . prototype . slice . call ( arguments , 2 ) ;
} else if ( l === 3 && isVNode ( children ) ) {
children = [ children ] ;
}
return createVNode ( type , propsOrChildren , children ) ;
}
}
const version = "3.4.24" ;
/ * *
* @ vue / runtime - dom v3 . 4.24
* ( c ) 2018 - present Yuxi ( Evan ) You and Vue contributors
* @ license MIT
* * /
const svgNS = "http://www.w3.org/2000/svg" ;
const mathmlNS = "http://www.w3.org/1998/Math/MathML" ;
const doc = typeof document !== "undefined" ? document : null ;
const templateContainer = doc && /* @__PURE__ */ doc . createElement ( "template" ) ;
const nodeOps = {
insert : ( child , parent , anchor ) => {
parent . insertBefore ( child , anchor || null ) ;
} ,
remove : ( child ) => {
const parent = child . parentNode ;
if ( parent ) {
parent . removeChild ( child ) ;
}
} ,
createElement : ( tag , namespace , is , props ) => {
const el = namespace === "svg" ? doc . createElementNS ( svgNS , tag ) : namespace === "mathml" ? doc . createElementNS ( mathmlNS , tag ) : doc . createElement ( tag , is ? { is } : void 0 ) ;
if ( tag === "select" && props && props . multiple != null ) {
el . setAttribute ( "multiple" , props . multiple ) ;
}
return el ;
} ,
createText : ( text ) => doc . createTextNode ( text ) ,
createComment : ( text ) => doc . createComment ( text ) ,
setText : ( node , text ) => {
node . nodeValue = text ;
} ,
setElementText : ( el , text ) => {
el . textContent = text ;
} ,
parentNode : ( node ) => node . parentNode ,
nextSibling : ( node ) => node . nextSibling ,
querySelector : ( selector ) => doc . querySelector ( selector ) ,
setScopeId ( el , id ) {
el . setAttribute ( id , "" ) ;
} ,
// __UNSAFE__
// Reason: innerHTML.
// Static content here can only come from compiled templates.
// As long as the user only uses trusted templates, this is safe.
insertStaticContent ( content , parent , anchor , namespace , start , end ) {
const before = anchor ? anchor . previousSibling : parent . lastChild ;
if ( start && ( start === end || start . nextSibling ) ) {
while ( true ) {
parent . insertBefore ( start . cloneNode ( true ) , anchor ) ;
if ( start === end || ! ( start = start . nextSibling ) )
break ;
}
} else {
templateContainer . innerHTML = namespace === "svg" ? ` <svg> ${ content } </svg> ` : namespace === "mathml" ? ` <math> ${ content } </math> ` : content ;
const template = templateContainer . content ;
if ( namespace === "svg" || namespace === "mathml" ) {
const wrapper = template . firstChild ;
while ( wrapper . firstChild ) {
template . appendChild ( wrapper . firstChild ) ;
}
template . removeChild ( wrapper ) ;
}
parent . insertBefore ( template , anchor ) ;
}
return [
// first
before ? before . nextSibling : parent . firstChild ,
// last
anchor ? anchor . previousSibling : parent . lastChild
] ;
}
} ;
const TRANSITION = "transition" ;
const ANIMATION = "animation" ;
const vtcKey = Symbol ( "_vtc" ) ;
const Transition = ( props , { slots } ) => h ( BaseTransition , resolveTransitionProps ( props ) , slots ) ;
Transition . displayName = "Transition" ;
const DOMTransitionPropsValidators = {
name : String ,
type : String ,
css : {
type : Boolean ,
default : true
} ,
duration : [ String , Number , Object ] ,
enterFromClass : String ,
enterActiveClass : String ,
enterToClass : String ,
appearFromClass : String ,
appearActiveClass : String ,
appearToClass : String ,
leaveFromClass : String ,
leaveActiveClass : String ,
leaveToClass : String
} ;
Transition . props = /* @__PURE__ */ extend (
{ } ,
BaseTransitionPropsValidators ,
DOMTransitionPropsValidators
) ;
const callHook = ( hook , args = [ ] ) => {
if ( isArray ( hook ) ) {
hook . forEach ( ( h2 ) => h2 ( ... args ) ) ;
} else if ( hook ) {
hook ( ... args ) ;
}
} ;
const hasExplicitCallback = ( hook ) => {
return hook ? isArray ( hook ) ? hook . some ( ( h2 ) => h2 . length > 1 ) : hook . length > 1 : false ;
} ;
function resolveTransitionProps ( rawProps ) {
const baseProps = { } ;
for ( const key in rawProps ) {
if ( ! ( key in DOMTransitionPropsValidators ) ) {
baseProps [ key ] = rawProps [ key ] ;
}
}
if ( rawProps . css === false ) {
return baseProps ;
}
const {
name = "v" ,
type ,
duration ,
enterFromClass = ` ${ name } -enter-from ` ,
enterActiveClass = ` ${ name } -enter-active ` ,
enterToClass = ` ${ name } -enter-to ` ,
appearFromClass = enterFromClass ,
appearActiveClass = enterActiveClass ,
appearToClass = enterToClass ,
leaveFromClass = ` ${ name } -leave-from ` ,
leaveActiveClass = ` ${ name } -leave-active ` ,
leaveToClass = ` ${ name } -leave-to `
} = rawProps ;
const durations = normalizeDuration ( duration ) ;
const enterDuration = durations && durations [ 0 ] ;
const leaveDuration = durations && durations [ 1 ] ;
const {
onBeforeEnter ,
onEnter ,
onEnterCancelled ,
onLeave ,
onLeaveCancelled ,
onBeforeAppear = onBeforeEnter ,
onAppear = onEnter ,
onAppearCancelled = onEnterCancelled
} = baseProps ;
const finishEnter = ( el , isAppear , done ) => {
removeTransitionClass ( el , isAppear ? appearToClass : enterToClass ) ;
removeTransitionClass ( el , isAppear ? appearActiveClass : enterActiveClass ) ;
done && done ( ) ;
} ;
const finishLeave = ( el , done ) => {
el . _isLeaving = false ;
removeTransitionClass ( el , leaveFromClass ) ;
removeTransitionClass ( el , leaveToClass ) ;
removeTransitionClass ( el , leaveActiveClass ) ;
done && done ( ) ;
} ;
const makeEnterHook = ( isAppear ) => {
return ( el , done ) => {
const hook = isAppear ? onAppear : onEnter ;
const resolve2 = ( ) => finishEnter ( el , isAppear , done ) ;
callHook ( hook , [ el , resolve2 ] ) ;
nextFrame ( ( ) => {
removeTransitionClass ( el , isAppear ? appearFromClass : enterFromClass ) ;
addTransitionClass ( el , isAppear ? appearToClass : enterToClass ) ;
if ( ! hasExplicitCallback ( hook ) ) {
whenTransitionEnds ( el , type , enterDuration , resolve2 ) ;
}
} ) ;
} ;
} ;
return extend ( baseProps , {
onBeforeEnter ( el ) {
callHook ( onBeforeEnter , [ el ] ) ;
addTransitionClass ( el , enterFromClass ) ;
addTransitionClass ( el , enterActiveClass ) ;
} ,
onBeforeAppear ( el ) {
callHook ( onBeforeAppear , [ el ] ) ;
addTransitionClass ( el , appearFromClass ) ;
addTransitionClass ( el , appearActiveClass ) ;
} ,
onEnter : makeEnterHook ( false ) ,
onAppear : makeEnterHook ( true ) ,
onLeave ( el , done ) {
el . _isLeaving = true ;
const resolve2 = ( ) => finishLeave ( el , done ) ;
addTransitionClass ( el , leaveFromClass ) ;
addTransitionClass ( el , leaveActiveClass ) ;
forceReflow ( ) ;
nextFrame ( ( ) => {
if ( ! el . _isLeaving ) {
return ;
}
removeTransitionClass ( el , leaveFromClass ) ;
addTransitionClass ( el , leaveToClass ) ;
if ( ! hasExplicitCallback ( onLeave ) ) {
whenTransitionEnds ( el , type , leaveDuration , resolve2 ) ;
}
} ) ;
callHook ( onLeave , [ el , resolve2 ] ) ;
} ,
onEnterCancelled ( el ) {
finishEnter ( el , false ) ;
callHook ( onEnterCancelled , [ el ] ) ;
} ,
onAppearCancelled ( el ) {
finishEnter ( el , true ) ;
callHook ( onAppearCancelled , [ el ] ) ;
} ,
onLeaveCancelled ( el ) {
finishLeave ( el ) ;
callHook ( onLeaveCancelled , [ el ] ) ;
}
} ) ;
}
function normalizeDuration ( duration ) {
if ( duration == null ) {
return null ;
} else if ( isObject$1 ( duration ) ) {
return [ NumberOf ( duration . enter ) , NumberOf ( duration . leave ) ] ;
} else {
const n = NumberOf ( duration ) ;
return [ n , n ] ;
}
}
function NumberOf ( val ) {
const res = toNumber ( val ) ;
return res ;
}
function addTransitionClass ( el , cls ) {
cls . split ( /\s+/ ) . forEach ( ( c ) => c && el . classList . add ( c ) ) ;
( el [ vtcKey ] || ( el [ vtcKey ] = /* @__PURE__ */ new Set ( ) ) ) . add ( cls ) ;
}
function removeTransitionClass ( el , cls ) {
cls . split ( /\s+/ ) . forEach ( ( c ) => c && el . classList . remove ( c ) ) ;
const _vtc = el [ vtcKey ] ;
if ( _vtc ) {
_vtc . delete ( cls ) ;
if ( ! _vtc . size ) {
el [ vtcKey ] = void 0 ;
}
}
}
function nextFrame ( cb ) {
requestAnimationFrame ( ( ) => {
requestAnimationFrame ( cb ) ;
} ) ;
}
let endId = 0 ;
function whenTransitionEnds ( el , expectedType , explicitTimeout , resolve2 ) {
const id = el . _endId = ++ endId ;
const resolveIfNotStale = ( ) => {
if ( id === el . _endId ) {
resolve2 ( ) ;
}
} ;
if ( explicitTimeout ) {
return setTimeout ( resolveIfNotStale , explicitTimeout ) ;
}
const { type , timeout , propCount } = getTransitionInfo ( el , expectedType ) ;
if ( ! type ) {
return resolve2 ( ) ;
}
const endEvent = type + "end" ;
let ended = 0 ;
const end = ( ) => {
el . removeEventListener ( endEvent , onEnd ) ;
resolveIfNotStale ( ) ;
} ;
const onEnd = ( e ) => {
if ( e . target === el && ++ ended >= propCount ) {
end ( ) ;
}
} ;
setTimeout ( ( ) => {
if ( ended < propCount ) {
end ( ) ;
}
} , timeout + 1 ) ;
el . addEventListener ( endEvent , onEnd ) ;
}
function getTransitionInfo ( el , expectedType ) {
const styles = window . getComputedStyle ( el ) ;
const getStyleProperties = ( key ) => ( styles [ key ] || "" ) . split ( ", " ) ;
const transitionDelays = getStyleProperties ( ` ${ TRANSITION } Delay ` ) ;
const transitionDurations = getStyleProperties ( ` ${ TRANSITION } Duration ` ) ;
const transitionTimeout = getTimeout ( transitionDelays , transitionDurations ) ;
const animationDelays = getStyleProperties ( ` ${ ANIMATION } Delay ` ) ;
const animationDurations = getStyleProperties ( ` ${ ANIMATION } Duration ` ) ;
const animationTimeout = getTimeout ( animationDelays , animationDurations ) ;
let type = null ;
let timeout = 0 ;
let propCount = 0 ;
if ( expectedType === TRANSITION ) {
if ( transitionTimeout > 0 ) {
type = TRANSITION ;
timeout = transitionTimeout ;
propCount = transitionDurations . length ;
}
} else if ( expectedType === ANIMATION ) {
if ( animationTimeout > 0 ) {
type = ANIMATION ;
timeout = animationTimeout ;
propCount = animationDurations . length ;
}
} else {
timeout = Math . max ( transitionTimeout , animationTimeout ) ;
type = timeout > 0 ? transitionTimeout > animationTimeout ? TRANSITION : ANIMATION : null ;
propCount = type ? type === TRANSITION ? transitionDurations . length : animationDurations . length : 0 ;
}
const hasTransform = type === TRANSITION && /\b(transform|all)(,|$)/ . test (
getStyleProperties ( ` ${ TRANSITION } Property ` ) . toString ( )
) ;
return {
type ,
timeout ,
propCount ,
hasTransform
} ;
}
function getTimeout ( delays , durations ) {
while ( delays . length < durations . length ) {
delays = delays . concat ( delays ) ;
}
return Math . max ( ... durations . map ( ( d , i ) => toMs ( d ) + toMs ( delays [ i ] ) ) ) ;
}
function toMs ( s ) {
if ( s === "auto" )
return 0 ;
return Number ( s . slice ( 0 , - 1 ) . replace ( "," , "." ) ) * 1e3 ;
}
function forceReflow ( ) {
return document . body . offsetHeight ;
}
function patchClass ( el , value , isSVG ) {
const transitionClasses = el [ vtcKey ] ;
if ( transitionClasses ) {
value = ( value ? [ value , ... transitionClasses ] : [ ... transitionClasses ] ) . join ( " " ) ;
}
if ( value == null ) {
el . removeAttribute ( "class" ) ;
} else if ( isSVG ) {
el . setAttribute ( "class" , value ) ;
} else {
el . className = value ;
}
}
const vShowOriginalDisplay = Symbol ( "_vod" ) ;
const vShowHidden = Symbol ( "_vsh" ) ;
const CSS _VAR _TEXT = Symbol ( "" ) ;
const displayRE = /(^|;)\s*display\s*:/ ;
function patchStyle ( el , prev , next ) {
const style = el . style ;
const isCssString = isString ( next ) ;
let hasControlledDisplay = false ;
if ( next && ! isCssString ) {
if ( prev ) {
if ( ! isString ( prev ) ) {
for ( const key in prev ) {
if ( next [ key ] == null ) {
setStyle ( style , key , "" ) ;
}
}
} else {
for ( const prevStyle of prev . split ( ";" ) ) {
const key = prevStyle . slice ( 0 , prevStyle . indexOf ( ":" ) ) . trim ( ) ;
if ( next [ key ] == null ) {
setStyle ( style , key , "" ) ;
}
}
}
}
for ( const key in next ) {
if ( key === "display" ) {
hasControlledDisplay = true ;
}
setStyle ( style , key , next [ key ] ) ;
}
} else {
if ( isCssString ) {
if ( prev !== next ) {
const cssVarText = style [ CSS _VAR _TEXT ] ;
if ( cssVarText ) {
next += ";" + cssVarText ;
}
style . cssText = next ;
hasControlledDisplay = displayRE . test ( next ) ;
}
} else if ( prev ) {
el . removeAttribute ( "style" ) ;
}
}
if ( vShowOriginalDisplay in el ) {
el [ vShowOriginalDisplay ] = hasControlledDisplay ? style . display : "" ;
if ( el [ vShowHidden ] ) {
style . display = "none" ;
}
}
}
const importantRE = /\s*!important$/ ;
function setStyle ( style , name , val ) {
if ( isArray ( val ) ) {
val . forEach ( ( v ) => setStyle ( style , name , v ) ) ;
} else {
if ( val == null )
val = "" ;
if ( name . startsWith ( "--" ) ) {
style . setProperty ( name , val ) ;
} else {
const prefixed = autoPrefix ( style , name ) ;
if ( importantRE . test ( val ) ) {
style . setProperty (
hyphenate ( prefixed ) ,
val . replace ( importantRE , "" ) ,
"important"
) ;
} else {
style [ prefixed ] = val ;
}
}
}
}
const prefixes = [ "Webkit" , "Moz" , "ms" ] ;
const prefixCache = { } ;
function autoPrefix ( style , rawName ) {
const cached = prefixCache [ rawName ] ;
if ( cached ) {
return cached ;
}
let name = camelize ( rawName ) ;
if ( name !== "filter" && name in style ) {
return prefixCache [ rawName ] = name ;
}
name = capitalize ( name ) ;
for ( let i = 0 ; i < prefixes . length ; i ++ ) {
const prefixed = prefixes [ i ] + name ;
if ( prefixed in style ) {
return prefixCache [ rawName ] = prefixed ;
}
}
return rawName ;
}
const xlinkNS = "http://www.w3.org/1999/xlink" ;
function patchAttr ( el , key , value , isSVG , instance ) {
if ( isSVG && key . startsWith ( "xlink:" ) ) {
if ( value == null ) {
el . removeAttributeNS ( xlinkNS , key . slice ( 6 , key . length ) ) ;
} else {
el . setAttributeNS ( xlinkNS , key , value ) ;
}
} else {
const isBoolean = isSpecialBooleanAttr ( key ) ;
if ( value == null || isBoolean && ! includeBooleanAttr ( value ) ) {
el . removeAttribute ( key ) ;
} else {
el . setAttribute ( key , isBoolean ? "" : value ) ;
}
}
}
function patchDOMProp ( el , key , value , prevChildren , parentComponent , parentSuspense , unmountChildren ) {
if ( key === "innerHTML" || key === "textContent" ) {
if ( prevChildren ) {
unmountChildren ( prevChildren , parentComponent , parentSuspense ) ;
}
el [ key ] = value == null ? "" : value ;
return ;
}
const tag = el . tagName ;
if ( key === "value" && tag !== "PROGRESS" && // custom elements may use _value internally
! tag . includes ( "-" ) ) {
const oldValue = tag === "OPTION" ? el . getAttribute ( "value" ) || "" : el . value ;
const newValue = value == null ? "" : value ;
if ( oldValue !== newValue || ! ( "_value" in el ) ) {
el . value = newValue ;
}
if ( value == null ) {
el . removeAttribute ( key ) ;
}
el . _value = value ;
return ;
}
let needRemove = false ;
if ( value === "" || value == null ) {
const type = typeof el [ key ] ;
if ( type === "boolean" ) {
value = includeBooleanAttr ( value ) ;
} else if ( value == null && type === "string" ) {
value = "" ;
needRemove = true ;
} else if ( type === "number" ) {
value = 0 ;
needRemove = true ;
}
}
try {
el [ key ] = value ;
} catch ( e ) {
}
needRemove && el . removeAttribute ( key ) ;
}
function addEventListener ( el , event , handler , options ) {
el . addEventListener ( event , handler , options ) ;
}
function removeEventListener ( el , event , handler , options ) {
el . removeEventListener ( event , handler , options ) ;
}
const veiKey = Symbol ( "_vei" ) ;
function patchEvent ( el , rawName , prevValue , nextValue , instance = null ) {
const invokers = el [ veiKey ] || ( el [ veiKey ] = { } ) ;
const existingInvoker = invokers [ rawName ] ;
if ( nextValue && existingInvoker ) {
existingInvoker . value = nextValue ;
} else {
const [ name , options ] = parseName ( rawName ) ;
if ( nextValue ) {
const invoker = invokers [ rawName ] = createInvoker (
nextValue ,
instance
) ;
addEventListener ( el , name , invoker , options ) ;
} else if ( existingInvoker ) {
removeEventListener ( el , name , existingInvoker , options ) ;
invokers [ rawName ] = void 0 ;
}
}
}
const optionsModifierRE = /(?:Once|Passive|Capture)$/ ;
function parseName ( name ) {
let options ;
if ( optionsModifierRE . test ( name ) ) {
options = { } ;
let m ;
while ( m = name . match ( optionsModifierRE ) ) {
name = name . slice ( 0 , name . length - m [ 0 ] . length ) ;
options [ m [ 0 ] . toLowerCase ( ) ] = true ;
}
}
const event = name [ 2 ] === ":" ? name . slice ( 3 ) : hyphenate ( name . slice ( 2 ) ) ;
return [ event , options ] ;
}
let cachedNow = 0 ;
const p = /* @__PURE__ */ Promise . resolve ( ) ;
const getNow = ( ) => cachedNow || ( p . then ( ( ) => cachedNow = 0 ) , cachedNow = Date . now ( ) ) ;
function createInvoker ( initialValue , instance ) {
const invoker = ( e ) => {
if ( ! e . _vts ) {
e . _vts = Date . now ( ) ;
} else if ( e . _vts <= invoker . attached ) {
return ;
}
callWithAsyncErrorHandling (
patchStopImmediatePropagation ( e , invoker . value ) ,
instance ,
5 ,
[ e ]
) ;
} ;
invoker . value = initialValue ;
invoker . attached = getNow ( ) ;
return invoker ;
}
function patchStopImmediatePropagation ( e , value ) {
if ( isArray ( value ) ) {
const originalStop = e . stopImmediatePropagation ;
e . stopImmediatePropagation = ( ) => {
originalStop . call ( e ) ;
e . _stopped = true ;
} ;
return value . map (
( fn ) => ( e2 ) => ! e2 . _stopped && fn && fn ( e2 )
) ;
} else {
return value ;
}
}
const isNativeOn = ( key ) => key . charCodeAt ( 0 ) === 111 && key . charCodeAt ( 1 ) === 110 && // lowercase letter
key . charCodeAt ( 2 ) > 96 && key . charCodeAt ( 2 ) < 123 ;
const patchProp = ( el , key , prevValue , nextValue , namespace , prevChildren , parentComponent , parentSuspense , unmountChildren ) => {
const isSVG = namespace === "svg" ;
if ( key === "class" ) {
patchClass ( el , nextValue , isSVG ) ;
} else if ( key === "style" ) {
patchStyle ( el , prevValue , nextValue ) ;
} else if ( isOn ( key ) ) {
if ( ! isModelListener ( key ) ) {
patchEvent ( el , key , prevValue , nextValue , parentComponent ) ;
}
} else if ( key [ 0 ] === "." ? ( key = key . slice ( 1 ) , true ) : key [ 0 ] === "^" ? ( key = key . slice ( 1 ) , false ) : shouldSetAsProp ( el , key , nextValue , isSVG ) ) {
patchDOMProp (
el ,
key ,
nextValue ,
prevChildren ,
parentComponent ,
parentSuspense ,
unmountChildren
) ;
} else {
if ( key === "true-value" ) {
el . _trueValue = nextValue ;
} else if ( key === "false-value" ) {
el . _falseValue = nextValue ;
}
patchAttr ( el , key , nextValue , isSVG ) ;
}
} ;
function shouldSetAsProp ( el , key , value , isSVG ) {
if ( isSVG ) {
if ( key === "innerHTML" || key === "textContent" ) {
return true ;
}
if ( key in el && isNativeOn ( key ) && isFunction ( value ) ) {
return true ;
}
return false ;
}
if ( key === "spellcheck" || key === "draggable" || key === "translate" ) {
return false ;
}
if ( key === "form" ) {
return false ;
}
if ( key === "list" && el . tagName === "INPUT" ) {
return false ;
}
if ( key === "type" && el . tagName === "TEXTAREA" ) {
return false ;
}
if ( key === "width" || key === "height" ) {
const tag = el . tagName ;
if ( tag === "IMG" || tag === "VIDEO" || tag === "CANVAS" || tag === "SOURCE" ) {
return false ;
}
}
if ( isNativeOn ( key ) && isString ( value ) ) {
return false ;
}
return key in el ;
}
const getModelAssigner = ( vnode ) => {
const fn = vnode . props [ "onUpdate:modelValue" ] || false ;
return isArray ( fn ) ? ( value ) => invokeArrayFns ( fn , value ) : fn ;
} ;
function onCompositionStart ( e ) {
e . target . composing = true ;
}
function onCompositionEnd ( e ) {
const target = e . target ;
if ( target . composing ) {
target . composing = false ;
target . dispatchEvent ( new Event ( "input" ) ) ;
}
}
const assignKey = Symbol ( "_assign" ) ;
const vModelText = {
created ( el , { modifiers : { lazy , trim , number } } , vnode ) {
el [ assignKey ] = getModelAssigner ( vnode ) ;
const castToNumber = number || vnode . props && vnode . props . type === "number" ;
addEventListener ( el , lazy ? "change" : "input" , ( e ) => {
if ( e . target . composing )
return ;
let domValue = el . value ;
if ( trim ) {
domValue = domValue . trim ( ) ;
}
if ( castToNumber ) {
domValue = looseToNumber ( domValue ) ;
}
el [ assignKey ] ( domValue ) ;
} ) ;
if ( trim ) {
addEventListener ( el , "change" , ( ) => {
el . value = el . value . trim ( ) ;
} ) ;
}
if ( ! lazy ) {
addEventListener ( el , "compositionstart" , onCompositionStart ) ;
addEventListener ( el , "compositionend" , onCompositionEnd ) ;
addEventListener ( el , "change" , onCompositionEnd ) ;
}
} ,
// set value on mounted so it's after min/max for type="range"
mounted ( el , { value } ) {
el . value = value == null ? "" : value ;
} ,
beforeUpdate ( el , { value , modifiers : { lazy , trim , number } } , vnode ) {
el [ assignKey ] = getModelAssigner ( vnode ) ;
if ( el . composing )
return ;
const elValue = ( number || el . type === "number" ) && ! /^0\d/ . test ( el . value ) ? looseToNumber ( el . value ) : el . value ;
const newValue = value == null ? "" : value ;
if ( elValue === newValue ) {
return ;
}
if ( document . activeElement === el && el . type !== "range" ) {
if ( lazy ) {
return ;
}
if ( trim && el . value . trim ( ) === newValue ) {
return ;
}
}
el . value = newValue ;
}
} ;
const systemModifiers = [ "ctrl" , "shift" , "alt" , "meta" ] ;
const modifierGuards = {
stop : ( e ) => e . stopPropagation ( ) ,
prevent : ( e ) => e . preventDefault ( ) ,
self : ( e ) => e . target !== e . currentTarget ,
ctrl : ( e ) => ! e . ctrlKey ,
shift : ( e ) => ! e . shiftKey ,
alt : ( e ) => ! e . altKey ,
meta : ( e ) => ! e . metaKey ,
left : ( e ) => "button" in e && e . button !== 0 ,
middle : ( e ) => "button" in e && e . button !== 1 ,
right : ( e ) => "button" in e && e . button !== 2 ,
exact : ( e , modifiers ) => systemModifiers . some ( ( m ) => e [ ` ${ m } Key ` ] && ! modifiers . includes ( m ) )
} ;
const withModifiers = ( fn , modifiers ) => {
const cache = fn . _withMods || ( fn . _withMods = { } ) ;
const cacheKey = modifiers . join ( "." ) ;
return cache [ cacheKey ] || ( cache [ cacheKey ] = ( event , ... args ) => {
for ( let i = 0 ; i < modifiers . length ; i ++ ) {
const guard = modifierGuards [ modifiers [ i ] ] ;
if ( guard && guard ( event , modifiers ) )
return ;
}
return fn ( event , ... args ) ;
} ) ;
} ;
const keyNames = {
esc : "escape" ,
space : " " ,
up : "arrow-up" ,
left : "arrow-left" ,
right : "arrow-right" ,
down : "arrow-down" ,
delete : "backspace"
} ;
const withKeys = ( fn , modifiers ) => {
const cache = fn . _withKeys || ( fn . _withKeys = { } ) ;
const cacheKey = modifiers . join ( "." ) ;
return cache [ cacheKey ] || ( cache [ cacheKey ] = ( event ) => {
if ( ! ( "key" in event ) ) {
return ;
}
const eventKey = hyphenate ( event . key ) ;
if ( modifiers . some ( ( k ) => k === eventKey || keyNames [ k ] === eventKey ) ) {
return fn ( event ) ;
}
} ) ;
} ;
const rendererOptions = /* @__PURE__ */ extend ( { patchProp } , nodeOps ) ;
let renderer ;
let enabledHydration = false ;
function ensureRenderer ( ) {
return renderer || ( renderer = createRenderer ( rendererOptions ) ) ;
}
function ensureHydrationRenderer ( ) {
renderer = enabledHydration ? renderer : createHydrationRenderer ( rendererOptions ) ;
enabledHydration = true ;
return renderer ;
}
const createApp = ( ... args ) => {
const app = ensureRenderer ( ) . createApp ( ... args ) ;
const { mount } = app ;
app . mount = ( containerOrSelector ) => {
const container = normalizeContainer ( containerOrSelector ) ;
if ( ! container )
return ;
const component = app . _component ;
if ( ! isFunction ( component ) && ! component . render && ! component . template ) {
component . template = container . innerHTML ;
}
container . innerHTML = "" ;
const proxy = mount ( container , false , resolveRootNamespace ( container ) ) ;
if ( container instanceof Element ) {
container . removeAttribute ( "v-cloak" ) ;
container . setAttribute ( "data-v-app" , "" ) ;
}
return proxy ;
} ;
return app ;
} ;
const createSSRApp = ( ... args ) => {
const app = ensureHydrationRenderer ( ) . createApp ( ... args ) ;
const { mount } = app ;
app . mount = ( containerOrSelector ) => {
const container = normalizeContainer ( containerOrSelector ) ;
if ( container ) {
return mount ( container , true , resolveRootNamespace ( container ) ) ;
}
} ;
return app ;
} ;
function resolveRootNamespace ( container ) {
if ( container instanceof SVGElement ) {
return "svg" ;
}
if ( typeof MathMLElement === "function" && container instanceof MathMLElement ) {
return "mathml" ;
}
}
function normalizeContainer ( container ) {
if ( isString ( container ) ) {
const res = document . querySelector ( container ) ;
return res ;
}
return container ;
}
const _export _sfc = ( sfc , props ) => {
const target = sfc . _ _vccOpts || sfc ;
for ( const [ key , val ] of props ) {
target [ key ] = val ;
}
return target ;
} ;
const siteData = window . _ _VP _SITE _DATA _ _ ;
function tryOnScopeDispose ( fn ) {
if ( getCurrentScope ( ) ) {
onScopeDispose ( fn ) ;
return true ;
}
return false ;
}
function toValue ( r ) {
return typeof r === "function" ? r ( ) : unref ( r ) ;
}
const isClient = typeof window !== "undefined" && typeof document !== "undefined" ;
typeof WorkerGlobalScope !== "undefined" && globalThis instanceof WorkerGlobalScope ;
const toString = Object . prototype . toString ;
const isObject = ( val ) => toString . call ( val ) === "[object Object]" ;
const noop = ( ) => {
} ;
const isIOS = /* @__PURE__ */ getIsIOS ( ) ;
function getIsIOS ( ) {
var _a , _b ;
return isClient && ( ( _a = window == null ? void 0 : window . navigator ) == null ? void 0 : _a . userAgent ) && ( /iP(ad|hone|od)/ . test ( window . navigator . userAgent ) || ( ( _b = window == null ? void 0 : window . navigator ) == null ? void 0 : _b . maxTouchPoints ) > 2 && /iPad|Macintosh/ . test ( window == null ? void 0 : window . navigator . userAgent ) ) ;
}
function createFilterWrapper ( filter , fn ) {
function wrapper ( ... args ) {
return new Promise ( ( resolve2 , reject ) => {
Promise . resolve ( filter ( ( ) => fn . apply ( this , args ) , { fn , thisArg : this , args } ) ) . then ( resolve2 ) . catch ( reject ) ;
} ) ;
}
return wrapper ;
}
const bypassFilter = ( invoke2 ) => {
return invoke2 ( ) ;
} ;
function debounceFilter ( ms , options = { } ) {
let timer ;
let maxTimer ;
let lastRejector = noop ;
const _clearTimeout = ( timer2 ) => {
clearTimeout ( timer2 ) ;
lastRejector ( ) ;
lastRejector = noop ;
} ;
const filter = ( invoke2 ) => {
const duration = toValue ( ms ) ;
const maxDuration = toValue ( options . maxWait ) ;
if ( timer )
_clearTimeout ( timer ) ;
if ( duration <= 0 || maxDuration !== void 0 && maxDuration <= 0 ) {
if ( maxTimer ) {
_clearTimeout ( maxTimer ) ;
maxTimer = null ;
}
return Promise . resolve ( invoke2 ( ) ) ;
}
return new Promise ( ( resolve2 , reject ) => {
lastRejector = options . rejectOnCancel ? reject : resolve2 ;
if ( maxDuration && ! maxTimer ) {
maxTimer = setTimeout ( ( ) => {
if ( timer )
_clearTimeout ( timer ) ;
maxTimer = null ;
resolve2 ( invoke2 ( ) ) ;
} , maxDuration ) ;
}
timer = setTimeout ( ( ) => {
if ( maxTimer )
_clearTimeout ( maxTimer ) ;
maxTimer = null ;
resolve2 ( invoke2 ( ) ) ;
} , duration ) ;
} ) ;
} ;
return filter ;
}
function pausableFilter ( extendFilter = bypassFilter ) {
const isActive2 = ref ( true ) ;
function pause ( ) {
isActive2 . value = false ;
}
function resume ( ) {
isActive2 . value = true ;
}
const eventFilter = ( ... args ) => {
if ( isActive2 . value )
extendFilter ( ... args ) ;
} ;
return { isActive : readonly ( isActive2 ) , pause , resume , eventFilter } ;
}
function getLifeCycleTarget ( target ) {
2024-09-24 08:56:37 +00:00
return getCurrentInstance ( ) ;
2024-05-30 02:02:10 +00:00
}
function toRef ( ... args ) {
if ( args . length !== 1 )
return toRef$1 ( ... args ) ;
const r = args [ 0 ] ;
return typeof r === "function" ? readonly ( customRef ( ( ) => ( { get : r , set : noop } ) ) ) : ref ( r ) ;
}
function watchWithFilter ( source , cb , options = { } ) {
const {
eventFilter = bypassFilter ,
... watchOptions
} = options ;
return watch (
source ,
createFilterWrapper (
eventFilter ,
cb
) ,
watchOptions
) ;
}
function watchPausable ( source , cb , options = { } ) {
const {
eventFilter : filter ,
... watchOptions
} = options ;
const { eventFilter , pause , resume , isActive : isActive2 } = pausableFilter ( filter ) ;
const stop = watchWithFilter (
source ,
cb ,
{
... watchOptions ,
eventFilter
}
) ;
return { stop , pause , resume , isActive : isActive2 } ;
}
function tryOnMounted ( fn , sync = true , target ) {
const instance = getLifeCycleTarget ( ) ;
if ( instance )
onMounted ( fn , target ) ;
else if ( sync )
fn ( ) ;
else
nextTick ( fn ) ;
}
function watchDebounced ( source , cb , options = { } ) {
const {
debounce = 0 ,
maxWait = void 0 ,
... watchOptions
} = options ;
return watchWithFilter (
source ,
cb ,
{
... watchOptions ,
eventFilter : debounceFilter ( debounce , { maxWait } )
}
) ;
}
function computedAsync ( evaluationCallback , initialState , optionsOrRef ) {
let options ;
if ( isRef ( optionsOrRef ) ) {
options = {
evaluating : optionsOrRef
} ;
} else {
2024-09-24 08:56:37 +00:00
options = { } ;
2024-05-30 02:02:10 +00:00
}
const {
lazy = false ,
evaluating = void 0 ,
shallow = true ,
onError = noop
} = options ;
const started = ref ( ! lazy ) ;
const current = shallow ? shallowRef ( initialState ) : ref ( initialState ) ;
let counter = 0 ;
watchEffect ( async ( onInvalidate ) => {
if ( ! started . value )
return ;
counter ++ ;
const counterAtBeginning = counter ;
let hasFinished = false ;
if ( evaluating ) {
Promise . resolve ( ) . then ( ( ) => {
evaluating . value = true ;
} ) ;
}
try {
const result = await evaluationCallback ( ( cancelCallback ) => {
onInvalidate ( ( ) => {
if ( evaluating )
evaluating . value = false ;
if ( ! hasFinished )
cancelCallback ( ) ;
} ) ;
} ) ;
if ( counterAtBeginning === counter )
current . value = result ;
} catch ( e ) {
onError ( e ) ;
} finally {
if ( evaluating && counterAtBeginning === counter )
evaluating . value = false ;
hasFinished = true ;
}
} ) ;
if ( lazy ) {
return computed ( ( ) => {
started . value = true ;
return current . value ;
} ) ;
} else {
return current ;
}
}
function unrefElement ( elRef ) {
var _a ;
const plain = toValue ( elRef ) ;
return ( _a = plain == null ? void 0 : plain . $el ) != null ? _a : plain ;
}
const defaultWindow = isClient ? window : void 0 ;
function useEventListener ( ... args ) {
let target ;
let events2 ;
let listeners ;
let options ;
if ( typeof args [ 0 ] === "string" || Array . isArray ( args [ 0 ] ) ) {
[ events2 , listeners , options ] = args ;
target = defaultWindow ;
} else {
[ target , events2 , listeners , options ] = args ;
}
if ( ! target )
return noop ;
if ( ! Array . isArray ( events2 ) )
events2 = [ events2 ] ;
if ( ! Array . isArray ( listeners ) )
listeners = [ listeners ] ;
const cleanups = [ ] ;
const cleanup = ( ) => {
cleanups . forEach ( ( fn ) => fn ( ) ) ;
cleanups . length = 0 ;
} ;
const register = ( el , event , listener , options2 ) => {
el . addEventListener ( event , listener , options2 ) ;
return ( ) => el . removeEventListener ( event , listener , options2 ) ;
} ;
const stopWatch = watch (
( ) => [ unrefElement ( target ) , toValue ( options ) ] ,
( [ el , options2 ] ) => {
cleanup ( ) ;
if ( ! el )
return ;
const optionsClone = isObject ( options2 ) ? { ... options2 } : options2 ;
cleanups . push (
... events2 . flatMap ( ( event ) => {
return listeners . map ( ( listener ) => register ( el , event , listener , optionsClone ) ) ;
} )
) ;
} ,
{ immediate : true , flush : "post" }
) ;
const stop = ( ) => {
stopWatch ( ) ;
cleanup ( ) ;
} ;
tryOnScopeDispose ( stop ) ;
return stop ;
}
let _iOSWorkaround = false ;
function onClickOutside ( target , handler , options = { } ) {
const { window : window2 = defaultWindow , ignore = [ ] , capture = true , detectIframe = false } = options ;
if ( ! window2 )
return noop ;
if ( isIOS && ! _iOSWorkaround ) {
_iOSWorkaround = true ;
Array . from ( window2 . document . body . children ) . forEach ( ( el ) => el . addEventListener ( "click" , noop ) ) ;
window2 . document . documentElement . addEventListener ( "click" , noop ) ;
}
let shouldListen = true ;
const shouldIgnore = ( event ) => {
return ignore . some ( ( target2 ) => {
if ( typeof target2 === "string" ) {
return Array . from ( window2 . document . querySelectorAll ( target2 ) ) . some ( ( el ) => el === event . target || event . composedPath ( ) . includes ( el ) ) ;
} else {
const el = unrefElement ( target2 ) ;
return el && ( event . target === el || event . composedPath ( ) . includes ( el ) ) ;
}
} ) ;
} ;
const listener = ( event ) => {
const el = unrefElement ( target ) ;
if ( ! el || el === event . target || event . composedPath ( ) . includes ( el ) )
return ;
if ( event . detail === 0 )
shouldListen = ! shouldIgnore ( event ) ;
if ( ! shouldListen ) {
shouldListen = true ;
return ;
}
handler ( event ) ;
} ;
const cleanup = [
useEventListener ( window2 , "click" , listener , { passive : true , capture } ) ,
useEventListener ( window2 , "pointerdown" , ( e ) => {
const el = unrefElement ( target ) ;
shouldListen = ! shouldIgnore ( e ) && ! ! ( el && ! e . composedPath ( ) . includes ( el ) ) ;
} , { passive : true } ) ,
detectIframe && useEventListener ( window2 , "blur" , ( event ) => {
setTimeout ( ( ) => {
var _a ;
const el = unrefElement ( target ) ;
if ( ( ( _a = window2 . document . activeElement ) == null ? void 0 : _a . tagName ) === "IFRAME" && ! ( el == null ? void 0 : el . contains ( window2 . document . activeElement ) ) )
handler ( event ) ;
} , 0 ) ;
} )
] . filter ( Boolean ) ;
const stop = ( ) => cleanup . forEach ( ( fn ) => fn ( ) ) ;
return stop ;
}
function createKeyPredicate ( keyFilter ) {
if ( typeof keyFilter === "function" )
return keyFilter ;
else if ( typeof keyFilter === "string" )
return ( event ) => event . key === keyFilter ;
else if ( Array . isArray ( keyFilter ) )
return ( event ) => keyFilter . includes ( event . key ) ;
return ( ) => true ;
}
function onKeyStroke ( ... args ) {
let key ;
let handler ;
let options = { } ;
if ( args . length === 3 ) {
key = args [ 0 ] ;
handler = args [ 1 ] ;
options = args [ 2 ] ;
} else if ( args . length === 2 ) {
if ( typeof args [ 1 ] === "object" ) {
key = true ;
handler = args [ 0 ] ;
options = args [ 1 ] ;
} else {
key = args [ 0 ] ;
handler = args [ 1 ] ;
}
} else {
key = true ;
handler = args [ 0 ] ;
}
const {
target = defaultWindow ,
eventName = "keydown" ,
passive = false ,
dedupe = false
} = options ;
const predicate = createKeyPredicate ( key ) ;
const listener = ( e ) => {
if ( e . repeat && toValue ( dedupe ) )
return ;
if ( predicate ( e ) )
handler ( e ) ;
} ;
return useEventListener ( target , eventName , listener , passive ) ;
}
function useMounted ( ) {
const isMounted = ref ( false ) ;
const instance = getCurrentInstance ( ) ;
if ( instance ) {
onMounted ( ( ) => {
isMounted . value = true ;
} , instance ) ;
}
return isMounted ;
}
function useSupported ( callback ) {
const isMounted = useMounted ( ) ;
return computed ( ( ) => {
isMounted . value ;
return Boolean ( callback ( ) ) ;
} ) ;
}
function useMediaQuery ( query , options = { } ) {
const { window : window2 = defaultWindow } = options ;
const isSupported = useSupported ( ( ) => window2 && "matchMedia" in window2 && typeof window2 . matchMedia === "function" ) ;
let mediaQuery ;
const matches = ref ( false ) ;
const handler = ( event ) => {
matches . value = event . matches ;
} ;
const cleanup = ( ) => {
if ( ! mediaQuery )
return ;
if ( "removeEventListener" in mediaQuery )
mediaQuery . removeEventListener ( "change" , handler ) ;
else
mediaQuery . removeListener ( handler ) ;
} ;
const stopWatch = watchEffect ( ( ) => {
if ( ! isSupported . value )
return ;
cleanup ( ) ;
mediaQuery = window2 . matchMedia ( toValue ( query ) ) ;
if ( "addEventListener" in mediaQuery )
mediaQuery . addEventListener ( "change" , handler ) ;
else
mediaQuery . addListener ( handler ) ;
matches . value = mediaQuery . matches ;
} ) ;
tryOnScopeDispose ( ( ) => {
stopWatch ( ) ;
cleanup ( ) ;
mediaQuery = void 0 ;
} ) ;
return matches ;
}
const _global = typeof globalThis !== "undefined" ? globalThis : typeof window !== "undefined" ? window : typeof global !== "undefined" ? global : typeof self !== "undefined" ? self : { } ;
const globalKey = "__vueuse_ssr_handlers__" ;
const handlers = /* @__PURE__ */ getHandlers ( ) ;
function getHandlers ( ) {
if ( ! ( globalKey in _global ) )
_global [ globalKey ] = _global [ globalKey ] || { } ;
return _global [ globalKey ] ;
}
function getSSRHandler ( key , fallback ) {
return handlers [ key ] || fallback ;
}
function guessSerializerType ( rawInit ) {
return rawInit == null ? "any" : rawInit instanceof Set ? "set" : rawInit instanceof Map ? "map" : rawInit instanceof Date ? "date" : typeof rawInit === "boolean" ? "boolean" : typeof rawInit === "string" ? "string" : typeof rawInit === "object" ? "object" : ! Number . isNaN ( rawInit ) ? "number" : "any" ;
}
const StorageSerializers = {
boolean : {
read : ( v ) => v === "true" ,
write : ( v ) => String ( v )
} ,
object : {
read : ( v ) => JSON . parse ( v ) ,
write : ( v ) => JSON . stringify ( v )
} ,
number : {
read : ( v ) => Number . parseFloat ( v ) ,
write : ( v ) => String ( v )
} ,
any : {
read : ( v ) => v ,
write : ( v ) => String ( v )
} ,
string : {
read : ( v ) => v ,
write : ( v ) => String ( v )
} ,
map : {
read : ( v ) => new Map ( JSON . parse ( v ) ) ,
write : ( v ) => JSON . stringify ( Array . from ( v . entries ( ) ) )
} ,
set : {
read : ( v ) => new Set ( JSON . parse ( v ) ) ,
write : ( v ) => JSON . stringify ( Array . from ( v ) )
} ,
date : {
read : ( v ) => new Date ( v ) ,
write : ( v ) => v . toISOString ( )
}
} ;
const customStorageEventName = "vueuse-storage" ;
function useStorage ( key , defaults2 , storage , options = { } ) {
var _a ;
const {
flush = "pre" ,
deep = true ,
listenToStorageChanges = true ,
writeDefaults = true ,
mergeDefaults = false ,
shallow ,
window : window2 = defaultWindow ,
eventFilter ,
onError = ( e ) => {
console . error ( e ) ;
} ,
initOnMounted
} = options ;
const data = ( shallow ? shallowRef : ref ) ( typeof defaults2 === "function" ? defaults2 ( ) : defaults2 ) ;
if ( ! storage ) {
try {
storage = getSSRHandler ( "getDefaultStorage" , ( ) => {
var _a2 ;
return ( _a2 = defaultWindow ) == null ? void 0 : _a2 . localStorage ;
} ) ( ) ;
} catch ( e ) {
onError ( e ) ;
}
}
if ( ! storage )
return data ;
const rawInit = toValue ( defaults2 ) ;
const type = guessSerializerType ( rawInit ) ;
const serializer = ( _a = options . serializer ) != null ? _a : StorageSerializers [ type ] ;
const { pause : pauseWatch , resume : resumeWatch } = watchPausable (
data ,
( ) => write ( data . value ) ,
{ flush , deep , eventFilter }
) ;
if ( window2 && listenToStorageChanges ) {
tryOnMounted ( ( ) => {
useEventListener ( window2 , "storage" , update ) ;
useEventListener ( window2 , customStorageEventName , updateFromCustomEvent ) ;
if ( initOnMounted )
update ( ) ;
} ) ;
}
if ( ! initOnMounted )
update ( ) ;
function dispatchWriteEvent ( oldValue , newValue ) {
if ( window2 ) {
window2 . dispatchEvent ( new CustomEvent ( customStorageEventName , {
detail : {
key ,
oldValue ,
newValue ,
storageArea : storage
}
} ) ) ;
}
}
function write ( v ) {
try {
const oldValue = storage . getItem ( key ) ;
if ( v == null ) {
dispatchWriteEvent ( oldValue , null ) ;
storage . removeItem ( key ) ;
} else {
const serialized = serializer . write ( v ) ;
if ( oldValue !== serialized ) {
storage . setItem ( key , serialized ) ;
dispatchWriteEvent ( oldValue , serialized ) ;
}
}
} catch ( e ) {
onError ( e ) ;
}
}
function read ( event ) {
const rawValue = event ? event . newValue : storage . getItem ( key ) ;
if ( rawValue == null ) {
if ( writeDefaults && rawInit != null )
storage . setItem ( key , serializer . write ( rawInit ) ) ;
return rawInit ;
} else if ( ! event && mergeDefaults ) {
const value = serializer . read ( rawValue ) ;
if ( typeof mergeDefaults === "function" )
return mergeDefaults ( value , rawInit ) ;
else if ( type === "object" && ! Array . isArray ( value ) )
return { ... rawInit , ... value } ;
return value ;
} else if ( typeof rawValue !== "string" ) {
return rawValue ;
} else {
return serializer . read ( rawValue ) ;
}
}
function update ( event ) {
if ( event && event . storageArea !== storage )
return ;
if ( event && event . key == null ) {
data . value = rawInit ;
return ;
}
if ( event && event . key !== key )
return ;
pauseWatch ( ) ;
try {
if ( ( event == null ? void 0 : event . newValue ) !== serializer . write ( data . value ) )
data . value = read ( event ) ;
} catch ( e ) {
onError ( e ) ;
} finally {
if ( event )
nextTick ( resumeWatch ) ;
else
resumeWatch ( ) ;
}
}
function updateFromCustomEvent ( event ) {
update ( event . detail ) ;
}
return data ;
}
function usePreferredDark ( options ) {
return useMediaQuery ( "(prefers-color-scheme: dark)" , options ) ;
}
function useColorMode ( options = { } ) {
const {
selector = "html" ,
attribute = "class" ,
initialValue = "auto" ,
window : window2 = defaultWindow ,
storage ,
storageKey = "vueuse-color-scheme" ,
listenToStorageChanges = true ,
storageRef ,
emitAuto ,
disableTransition = true
} = options ;
const modes = {
auto : "" ,
light : "light" ,
dark : "dark" ,
... options . modes || { }
} ;
const preferredDark = usePreferredDark ( { window : window2 } ) ;
const system = computed ( ( ) => preferredDark . value ? "dark" : "light" ) ;
const store = storageRef || ( storageKey == null ? toRef ( initialValue ) : useStorage ( storageKey , initialValue , storage , { window : window2 , listenToStorageChanges } ) ) ;
const state = computed ( ( ) => store . value === "auto" ? system . value : store . value ) ;
const updateHTMLAttrs = getSSRHandler (
"updateHTMLAttrs" ,
( selector2 , attribute2 , value ) => {
const el = typeof selector2 === "string" ? window2 == null ? void 0 : window2 . document . querySelector ( selector2 ) : unrefElement ( selector2 ) ;
if ( ! el )
return ;
let style ;
if ( disableTransition ) {
style = window2 . document . createElement ( "style" ) ;
const styleString = "*,*::before,*::after{-webkit-transition:none!important;-moz-transition:none!important;-o-transition:none!important;-ms-transition:none!important;transition:none!important}" ;
style . appendChild ( document . createTextNode ( styleString ) ) ;
window2 . document . head . appendChild ( style ) ;
}
if ( attribute2 === "class" ) {
const current = value . split ( /\s/g ) ;
Object . values ( modes ) . flatMap ( ( i ) => ( i || "" ) . split ( /\s/g ) ) . filter ( Boolean ) . forEach ( ( v ) => {
if ( current . includes ( v ) )
el . classList . add ( v ) ;
else
el . classList . remove ( v ) ;
} ) ;
} else {
el . setAttribute ( attribute2 , value ) ;
}
if ( disableTransition ) {
window2 . getComputedStyle ( style ) . opacity ;
document . head . removeChild ( style ) ;
}
}
) ;
function defaultOnChanged ( mode ) {
var _a ;
updateHTMLAttrs ( selector , attribute , ( _a = modes [ mode ] ) != null ? _a : mode ) ;
}
function onChanged ( mode ) {
if ( options . onChanged )
options . onChanged ( mode , defaultOnChanged ) ;
else
defaultOnChanged ( mode ) ;
}
watch ( state , onChanged , { flush : "post" , immediate : true } ) ;
tryOnMounted ( ( ) => onChanged ( state . value ) ) ;
const auto = computed ( {
get ( ) {
return emitAuto ? store . value : state . value ;
} ,
set ( v ) {
store . value = v ;
}
} ) ;
try {
return Object . assign ( auto , { store , system , state } ) ;
} catch ( e ) {
return auto ;
}
}
function useDark ( options = { } ) {
const {
valueDark = "dark" ,
valueLight = "" ,
window : window2 = defaultWindow
} = options ;
const mode = useColorMode ( {
... options ,
onChanged : ( mode2 , defaultHandler ) => {
var _a ;
if ( options . onChanged )
( _a = options . onChanged ) == null ? void 0 : _a . call ( options , mode2 === "dark" , defaultHandler , mode2 ) ;
else
defaultHandler ( mode2 ) ;
} ,
modes : {
dark : valueDark ,
light : valueLight
}
} ) ;
const system = computed ( ( ) => {
if ( mode . system ) {
return mode . system . value ;
} else {
const preferredDark = usePreferredDark ( { window : window2 } ) ;
return preferredDark . value ? "dark" : "light" ;
}
} ) ;
const isDark = computed ( {
get ( ) {
return mode . value === "dark" ;
} ,
set ( v ) {
const modeVal = v ? "dark" : "light" ;
if ( system . value === modeVal )
mode . value = "auto" ;
else
mode . value = modeVal ;
}
} ) ;
return isDark ;
}
function resolveElement ( el ) {
if ( typeof Window !== "undefined" && el instanceof Window )
return el . document . documentElement ;
if ( typeof Document !== "undefined" && el instanceof Document )
return el . documentElement ;
return el ;
}
function useLocalStorage ( key , initialValue , options = { } ) {
const { window : window2 = defaultWindow } = options ;
return useStorage ( key , initialValue , window2 == null ? void 0 : window2 . localStorage , options ) ;
}
function checkOverflowScroll ( ele ) {
const style = window . getComputedStyle ( ele ) ;
if ( style . overflowX === "scroll" || style . overflowY === "scroll" || style . overflowX === "auto" && ele . clientWidth < ele . scrollWidth || style . overflowY === "auto" && ele . clientHeight < ele . scrollHeight ) {
return true ;
} else {
const parent = ele . parentNode ;
if ( ! parent || parent . tagName === "BODY" )
return false ;
return checkOverflowScroll ( parent ) ;
}
}
function preventDefault ( rawEvent ) {
const e = rawEvent || window . event ;
const _target = e . target ;
if ( checkOverflowScroll ( _target ) )
return false ;
if ( e . touches . length > 1 )
return true ;
if ( e . preventDefault )
e . preventDefault ( ) ;
return false ;
}
const elInitialOverflow = /* @__PURE__ */ new WeakMap ( ) ;
function useScrollLock ( element , initialState = false ) {
const isLocked = ref ( initialState ) ;
let stopTouchMoveListener = null ;
watch ( toRef ( element ) , ( el ) => {
const target = resolveElement ( toValue ( el ) ) ;
if ( target ) {
const ele = target ;
if ( ! elInitialOverflow . get ( ele ) )
elInitialOverflow . set ( ele , ele . style . overflow ) ;
if ( isLocked . value )
ele . style . overflow = "hidden" ;
}
} , {
immediate : true
} ) ;
const lock = ( ) => {
const el = resolveElement ( toValue ( element ) ) ;
if ( ! el || isLocked . value )
return ;
if ( isIOS ) {
stopTouchMoveListener = useEventListener (
el ,
"touchmove" ,
( e ) => {
preventDefault ( e ) ;
} ,
{ passive : false }
) ;
}
el . style . overflow = "hidden" ;
isLocked . value = true ;
} ;
const unlock = ( ) => {
var _a ;
const el = resolveElement ( toValue ( element ) ) ;
if ( ! el || ! isLocked . value )
return ;
isIOS && ( stopTouchMoveListener == null ? void 0 : stopTouchMoveListener ( ) ) ;
el . style . overflow = ( _a = elInitialOverflow . get ( el ) ) != null ? _a : "" ;
elInitialOverflow . delete ( el ) ;
isLocked . value = false ;
} ;
tryOnScopeDispose ( unlock ) ;
return computed ( {
get ( ) {
return isLocked . value ;
} ,
set ( v ) {
if ( v )
lock ( ) ;
else
unlock ( ) ;
}
} ) ;
}
function useSessionStorage ( key , initialValue , options = { } ) {
const { window : window2 = defaultWindow } = options ;
return useStorage ( key , initialValue , window2 == null ? void 0 : window2 . sessionStorage , options ) ;
}
function useWindowScroll ( options = { } ) {
const { window : window2 = defaultWindow , behavior = "auto" } = options ;
if ( ! window2 ) {
return {
x : ref ( 0 ) ,
y : ref ( 0 )
} ;
}
const internalX = ref ( window2 . scrollX ) ;
const internalY = ref ( window2 . scrollY ) ;
const x = computed ( {
get ( ) {
return internalX . value ;
} ,
set ( x2 ) {
scrollTo ( { left : x2 , behavior } ) ;
}
} ) ;
const y = computed ( {
get ( ) {
return internalY . value ;
} ,
set ( y2 ) {
scrollTo ( { top : y2 , behavior } ) ;
}
} ) ;
useEventListener (
window2 ,
"scroll" ,
( ) => {
internalX . value = window2 . scrollX ;
internalY . value = window2 . scrollY ;
} ,
{
capture : false ,
passive : true
}
) ;
return { x , y } ;
}
function useWindowSize ( options = { } ) {
const {
window : window2 = defaultWindow ,
initialWidth = Number . POSITIVE _INFINITY ,
initialHeight = Number . POSITIVE _INFINITY ,
listenOrientation = true ,
includeScrollbar = true
} = options ;
const width = ref ( initialWidth ) ;
const height = ref ( initialHeight ) ;
const update = ( ) => {
if ( window2 ) {
if ( includeScrollbar ) {
width . value = window2 . innerWidth ;
height . value = window2 . innerHeight ;
} else {
width . value = window2 . document . documentElement . clientWidth ;
height . value = window2 . document . documentElement . clientHeight ;
}
}
} ;
update ( ) ;
tryOnMounted ( update ) ;
useEventListener ( "resize" , update , { passive : true } ) ;
if ( listenOrientation ) {
const matches = useMediaQuery ( "(orientation: portrait)" ) ;
watch ( matches , ( ) => update ( ) ) ;
}
return { width , height } ;
}
var define _import _meta _env _default = { BASE _URL : "/" , MODE : "production" , DEV : false , PROD : true , SSR : false } ;
var define _process _env _default = { } ;
const EXTERNAL _URL _RE = /^(?:[a-z]+:|\/\/)/i ;
const APPEARANCE _KEY = "vitepress-theme-appearance" ;
const HASH _RE = /#.*$/ ;
const HASH _OR _QUERY _RE = /[?#].*$/ ;
const INDEX _OR _EXT _RE = /(?:(^|\/)index)?\.(?:md|html)$/ ;
const inBrowser = typeof document !== "undefined" ;
const notFoundPageData = {
relativePath : "" ,
filePath : "" ,
title : "404" ,
description : "Not Found" ,
headers : [ ] ,
frontmatter : { sidebar : false , layout : "page" } ,
lastUpdated : 0 ,
isNotFound : true
} ;
function isActive ( currentPath , matchPath , asRegex = false ) {
if ( matchPath === void 0 ) {
return false ;
}
currentPath = normalize ( ` / ${ currentPath } ` ) ;
if ( asRegex ) {
return new RegExp ( matchPath ) . test ( currentPath ) ;
}
if ( normalize ( matchPath ) !== currentPath ) {
return false ;
}
const hashMatch = matchPath . match ( HASH _RE ) ;
if ( hashMatch ) {
return ( inBrowser ? location . hash : "" ) === hashMatch [ 0 ] ;
}
return true ;
}
function normalize ( path ) {
return decodeURI ( path ) . replace ( HASH _OR _QUERY _RE , "" ) . replace ( INDEX _OR _EXT _RE , "$1" ) ;
}
function isExternal ( path ) {
return EXTERNAL _URL _RE . test ( path ) ;
}
function resolveSiteDataByRoute ( siteData2 , relativePath ) {
var _a , _b , _c , _d , _e , _f , _g ;
const localeIndex = Object . keys ( siteData2 . locales ) . find ( ( key ) => key !== "root" && ! isExternal ( key ) && isActive ( relativePath , ` / ${ key } / ` , true ) ) || "root" ;
return Object . assign ( { } , siteData2 , {
localeIndex ,
lang : ( ( _a = siteData2 . locales [ localeIndex ] ) == null ? void 0 : _a . lang ) ? ? siteData2 . lang ,
dir : ( ( _b = siteData2 . locales [ localeIndex ] ) == null ? void 0 : _b . dir ) ? ? siteData2 . dir ,
title : ( ( _c = siteData2 . locales [ localeIndex ] ) == null ? void 0 : _c . title ) ? ? siteData2 . title ,
titleTemplate : ( ( _d = siteData2 . locales [ localeIndex ] ) == null ? void 0 : _d . titleTemplate ) ? ? siteData2 . titleTemplate ,
description : ( ( _e = siteData2 . locales [ localeIndex ] ) == null ? void 0 : _e . description ) ? ? siteData2 . description ,
head : mergeHead ( siteData2 . head , ( ( _f = siteData2 . locales [ localeIndex ] ) == null ? void 0 : _f . head ) ? ? [ ] ) ,
themeConfig : {
... siteData2 . themeConfig ,
... ( _g = siteData2 . locales [ localeIndex ] ) == null ? void 0 : _g . themeConfig
}
} ) ;
}
function createTitle ( siteData2 , pageData ) {
const title = pageData . title || siteData2 . title ;
const template = pageData . titleTemplate ? ? siteData2 . titleTemplate ;
if ( typeof template === "string" && template . includes ( ":title" ) ) {
return template . replace ( /:title/g , title ) ;
}
const templateString = createTitleTemplate ( siteData2 . title , template ) ;
if ( title === templateString . slice ( 3 ) ) {
return title ;
}
return ` ${ title } ${ templateString } ` ;
}
function createTitleTemplate ( siteTitle , template ) {
if ( template === false ) {
return "" ;
}
if ( template === true || template === void 0 ) {
return ` | ${ siteTitle } ` ;
}
if ( siteTitle === template ) {
return "" ;
}
return ` | ${ template } ` ;
}
function hasTag ( head , tag ) {
const [ tagType , tagAttrs ] = tag ;
if ( tagType !== "meta" )
return false ;
const keyAttr = Object . entries ( tagAttrs ) [ 0 ] ;
if ( keyAttr == null )
return false ;
return head . some ( ( [ type , attrs ] ) => type === tagType && attrs [ keyAttr [ 0 ] ] === keyAttr [ 1 ] ) ;
}
function mergeHead ( prev , curr ) {
return [ ... prev . filter ( ( tagAttrs ) => ! hasTag ( curr , tagAttrs ) ) , ... curr ] ;
}
const INVALID _CHAR _REGEX = /[\u0000-\u001F"#$&*+,:;<=>?[\]^`{|}\u007F]/g ;
const DRIVE _LETTER _REGEX = /^[a-z]:/i ;
function sanitizeFileName ( name ) {
const match = DRIVE _LETTER _REGEX . exec ( name ) ;
const driveLetter = match ? match [ 0 ] : "" ;
return driveLetter + name . slice ( driveLetter . length ) . replace ( INVALID _CHAR _REGEX , "_" ) . replace ( /(^|\/)_+(?=[^/]*$)/ , "$1" ) ;
}
const KNOWN _EXTENSIONS = /* @__PURE__ */ new Set ( ) ;
function treatAsHtml ( filename ) {
if ( KNOWN _EXTENSIONS . size === 0 ) {
const extraExts = typeof process === "object" && ( define _process _env _default == null ? void 0 : define _process _env _default . VITE _EXTRA _EXTENSIONS ) || ( define _import _meta _env _default == null ? void 0 : define _import _meta _env _default . VITE _EXTRA _EXTENSIONS ) || "" ;
( "3g2,3gp,aac,ai,apng,au,avif,bin,bmp,cer,class,conf,crl,css,csv,dll,doc,eps,epub,exe,gif,gz,ics,ief,jar,jpe,jpeg,jpg,js,json,jsonld,m4a,man,mid,midi,mjs,mov,mp2,mp3,mp4,mpe,mpeg,mpg,mpp,oga,ogg,ogv,ogx,opus,otf,p10,p7c,p7m,p7s,pdf,png,ps,qt,roff,rtf,rtx,ser,svg,t,tif,tiff,tr,ts,tsv,ttf,txt,vtt,wav,weba,webm,webp,woff,woff2,xhtml,xml,yaml,yml,zip" + ( extraExts && typeof extraExts === "string" ? "," + extraExts : "" ) ) . split ( "," ) . forEach ( ( ext2 ) => KNOWN _EXTENSIONS . add ( ext2 ) ) ;
}
const ext = filename . split ( "." ) . pop ( ) ;
return ext == null || ! KNOWN _EXTENSIONS . has ( ext . toLowerCase ( ) ) ;
}
function escapeRegExp ( str ) {
return str . replace ( /[|\\{}()[\]^$+*?.]/g , "\\$&" ) . replace ( /-/g , "\\x2d" ) ;
}
const dataSymbol = Symbol ( ) ;
const siteDataRef = shallowRef ( siteData ) ;
function initData ( route ) {
const site = computed ( ( ) => resolveSiteDataByRoute ( siteDataRef . value , route . data . relativePath ) ) ;
const appearance = site . value . appearance ;
const isDark = appearance === "force-dark" ? ref ( true ) : appearance ? useDark ( {
storageKey : APPEARANCE _KEY ,
initialValue : ( ) => typeof appearance === "string" ? appearance : "auto" ,
... typeof appearance === "object" ? appearance : { }
} ) : ref ( false ) ;
const hashRef = ref ( inBrowser ? location . hash : "" ) ;
if ( inBrowser ) {
window . addEventListener ( "hashchange" , ( ) => {
hashRef . value = location . hash ;
} ) ;
}
watch ( ( ) => route . data , ( ) => {
hashRef . value = inBrowser ? location . hash : "" ;
} ) ;
return {
site ,
theme : computed ( ( ) => site . value . themeConfig ) ,
page : computed ( ( ) => route . data ) ,
frontmatter : computed ( ( ) => route . data . frontmatter ) ,
params : computed ( ( ) => route . data . params ) ,
lang : computed ( ( ) => site . value . lang ) ,
dir : computed ( ( ) => route . data . frontmatter . dir || site . value . dir ) ,
localeIndex : computed ( ( ) => site . value . localeIndex || "root" ) ,
title : computed ( ( ) => createTitle ( site . value , route . data ) ) ,
description : computed ( ( ) => route . data . description || site . value . description ) ,
isDark ,
hash : computed ( ( ) => hashRef . value )
} ;
}
function useData ( ) {
const data = inject ( dataSymbol ) ;
if ( ! data ) {
throw new Error ( "vitepress data not properly injected in app" ) ;
}
return data ;
}
function joinPath ( base , path ) {
return ` ${ base } ${ path } ` . replace ( /\/+/g , "/" ) ;
}
function withBase ( path ) {
return EXTERNAL _URL _RE . test ( path ) || ! path . startsWith ( "/" ) ? path : joinPath ( siteDataRef . value . base , path ) ;
}
function pathToFile ( path ) {
let pagePath = path . replace ( /\.html$/ , "" ) ;
pagePath = decodeURIComponent ( pagePath ) ;
pagePath = pagePath . replace ( /\/$/ , "/index" ) ;
{
if ( inBrowser ) {
const base = "/" ;
pagePath = sanitizeFileName ( pagePath . slice ( base . length ) . replace ( /\//g , "_" ) || "index" ) + ".md" ;
let pageHash = _ _VP _HASH _MAP _ _ [ pagePath . toLowerCase ( ) ] ;
if ( ! pageHash ) {
pagePath = pagePath . endsWith ( "_index.md" ) ? pagePath . slice ( 0 , - 9 ) + ".md" : pagePath . slice ( 0 , - 3 ) + "_index.md" ;
pageHash = _ _VP _HASH _MAP _ _ [ pagePath . toLowerCase ( ) ] ;
}
if ( ! pageHash )
return null ;
pagePath = ` ${ base } ${ "assets" } / ${ pagePath } . ${ pageHash } .js ` ;
} else {
pagePath = ` ./ ${ sanitizeFileName ( pagePath . slice ( 1 ) . replace ( /\//g , "_" ) ) } .md.js ` ;
}
}
return pagePath ;
}
let contentUpdatedCallbacks = [ ] ;
function onContentUpdated ( fn ) {
contentUpdatedCallbacks . push ( fn ) ;
onUnmounted ( ( ) => {
contentUpdatedCallbacks = contentUpdatedCallbacks . filter ( ( f ) => f !== fn ) ;
} ) ;
}
function getScrollOffset ( ) {
let scrollOffset = siteDataRef . value . scrollOffset ;
let offset = 0 ;
let padding = 24 ;
if ( typeof scrollOffset === "object" && "padding" in scrollOffset ) {
padding = scrollOffset . padding ;
scrollOffset = scrollOffset . selector ;
}
if ( typeof scrollOffset === "number" ) {
offset = scrollOffset ;
} else if ( typeof scrollOffset === "string" ) {
offset = tryOffsetSelector ( scrollOffset , padding ) ;
} else if ( Array . isArray ( scrollOffset ) ) {
for ( const selector of scrollOffset ) {
const res = tryOffsetSelector ( selector , padding ) ;
if ( res ) {
offset = res ;
break ;
}
}
}
return offset ;
}
function tryOffsetSelector ( selector , padding ) {
const el = document . querySelector ( selector ) ;
if ( ! el )
return 0 ;
const bot = el . getBoundingClientRect ( ) . bottom ;
if ( bot < 0 )
return 0 ;
return bot + padding ;
}
const RouterSymbol = Symbol ( ) ;
const fakeHost = "http://a.com" ;
const getDefaultRoute = ( ) => ( {
path : "/" ,
component : null ,
data : notFoundPageData
} ) ;
function createRouter ( loadPageModule , fallbackComponent ) {
const route = reactive ( getDefaultRoute ( ) ) ;
const router = {
route ,
go
} ;
async function go ( href = inBrowser ? location . href : "/" ) {
var _a , _b ;
href = normalizeHref ( href ) ;
if ( await ( ( _a = router . onBeforeRouteChange ) == null ? void 0 : _a . call ( router , href ) ) === false )
return ;
if ( inBrowser && href !== normalizeHref ( location . href ) ) {
history . replaceState ( { scrollPosition : window . scrollY } , "" ) ;
history . pushState ( { } , "" , href ) ;
}
await loadPage ( href ) ;
await ( ( _b = router . onAfterRouteChanged ) == null ? void 0 : _b . call ( router , href ) ) ;
}
let latestPendingPath = null ;
async function loadPage ( href , scrollPosition = 0 , isRetry = false ) {
var _a ;
if ( await ( ( _a = router . onBeforePageLoad ) == null ? void 0 : _a . call ( router , href ) ) === false )
return ;
const targetLoc = new URL ( href , fakeHost ) ;
const pendingPath = latestPendingPath = targetLoc . pathname ;
try {
let page = await loadPageModule ( pendingPath ) ;
if ( ! page ) {
throw new Error ( ` Page not found: ${ pendingPath } ` ) ;
}
if ( latestPendingPath === pendingPath ) {
latestPendingPath = null ;
const { default : comp , _ _pageData } = page ;
if ( ! comp ) {
throw new Error ( ` Invalid route component: ${ comp } ` ) ;
}
route . path = inBrowser ? pendingPath : withBase ( pendingPath ) ;
route . component = markRaw ( comp ) ;
route . data = true ? markRaw ( _ _pageData ) : readonly ( _ _pageData ) ;
if ( inBrowser ) {
nextTick ( ( ) => {
let actualPathname = siteDataRef . value . base + _ _pageData . relativePath . replace ( /(?:(^|\/)index)?\.md$/ , "$1" ) ;
if ( ! siteDataRef . value . cleanUrls && ! actualPathname . endsWith ( "/" ) ) {
actualPathname += ".html" ;
}
if ( actualPathname !== targetLoc . pathname ) {
targetLoc . pathname = actualPathname ;
href = actualPathname + targetLoc . search + targetLoc . hash ;
history . replaceState ( { } , "" , href ) ;
}
if ( targetLoc . hash && ! scrollPosition ) {
let target = null ;
try {
target = document . getElementById ( decodeURIComponent ( targetLoc . hash ) . slice ( 1 ) ) ;
} catch ( e ) {
console . warn ( e ) ;
}
if ( target ) {
scrollTo$1 ( target , targetLoc . hash ) ;
return ;
}
}
window . scrollTo ( 0 , scrollPosition ) ;
} ) ;
}
}
} catch ( err ) {
if ( ! /fetch|Page not found/ . test ( err . message ) && ! /^\/404(\.html|\/)?$/ . test ( href ) ) {
console . error ( err ) ;
}
if ( ! isRetry ) {
try {
const res = await fetch ( siteDataRef . value . base + "hashmap.json" ) ;
window . _ _VP _HASH _MAP _ _ = await res . json ( ) ;
await loadPage ( href , scrollPosition , true ) ;
return ;
} catch ( e ) {
}
}
if ( latestPendingPath === pendingPath ) {
latestPendingPath = null ;
route . path = inBrowser ? pendingPath : withBase ( pendingPath ) ;
route . component = fallbackComponent ? markRaw ( fallbackComponent ) : null ;
route . data = notFoundPageData ;
}
}
}
if ( inBrowser ) {
if ( history . state === null ) {
history . replaceState ( { } , "" ) ;
}
window . addEventListener ( "click" , ( e ) => {
const button = e . target . closest ( "button" ) ;
if ( button )
return ;
const link2 = e . target . closest ( "a" ) ;
if ( link2 && ! link2 . closest ( ".vp-raw" ) && ( link2 instanceof SVGElement || ! link2 . download ) ) {
const { target } = link2 ;
const { href , origin , pathname , hash , search } = new URL ( link2 . href instanceof SVGAnimatedString ? link2 . href . animVal : link2 . href , link2 . baseURI ) ;
const currentUrl = new URL ( location . href ) ;
if ( ! e . ctrlKey && ! e . shiftKey && ! e . altKey && ! e . metaKey && ! target && origin === currentUrl . origin && treatAsHtml ( pathname ) ) {
e . preventDefault ( ) ;
if ( pathname === currentUrl . pathname && search === currentUrl . search ) {
if ( hash !== currentUrl . hash ) {
history . pushState ( { } , "" , href ) ;
window . dispatchEvent ( new HashChangeEvent ( "hashchange" , {
oldURL : currentUrl . href ,
newURL : href
} ) ) ;
}
if ( hash ) {
scrollTo$1 ( link2 , hash , link2 . classList . contains ( "header-anchor" ) ) ;
} else {
window . scrollTo ( 0 , 0 ) ;
}
} else {
go ( href ) ;
}
}
}
} , { capture : true } ) ;
window . addEventListener ( "popstate" , async ( e ) => {
var _a ;
if ( e . state === null ) {
return ;
}
await loadPage ( normalizeHref ( location . href ) , e . state && e . state . scrollPosition || 0 ) ;
( _a = router . onAfterRouteChanged ) == null ? void 0 : _a . call ( router , location . href ) ;
} ) ;
window . addEventListener ( "hashchange" , ( e ) => {
e . preventDefault ( ) ;
} ) ;
}
return router ;
}
function useRouter ( ) {
const router = inject ( RouterSymbol ) ;
if ( ! router ) {
throw new Error ( "useRouter() is called without provider." ) ;
}
return router ;
}
function useRoute ( ) {
return useRouter ( ) . route ;
}
function scrollTo$1 ( el , hash , smooth = false ) {
let target = null ;
try {
target = el . classList . contains ( "header-anchor" ) ? el : document . getElementById ( decodeURIComponent ( hash ) . slice ( 1 ) ) ;
} catch ( e ) {
console . warn ( e ) ;
}
if ( target ) {
let scrollToTarget = function ( ) {
if ( ! smooth || Math . abs ( targetTop - window . scrollY ) > window . innerHeight )
window . scrollTo ( 0 , targetTop ) ;
else
window . scrollTo ( { left : 0 , top : targetTop , behavior : "smooth" } ) ;
} ;
const targetPadding = parseInt ( window . getComputedStyle ( target ) . paddingTop , 10 ) ;
const targetTop = window . scrollY + target . getBoundingClientRect ( ) . top - getScrollOffset ( ) + targetPadding ;
requestAnimationFrame ( scrollToTarget ) ;
}
}
function normalizeHref ( href ) {
const url = new URL ( href , fakeHost ) ;
url . pathname = url . pathname . replace ( /(^|\/)index(\.html)?$/ , "$1" ) ;
if ( siteDataRef . value . cleanUrls )
url . pathname = url . pathname . replace ( /\.html$/ , "" ) ;
else if ( ! url . pathname . endsWith ( "/" ) && ! url . pathname . endsWith ( ".html" ) )
url . pathname += ".html" ;
return url . pathname + url . search + url . hash ;
}
const runCbs = ( ) => contentUpdatedCallbacks . forEach ( ( fn ) => fn ( ) ) ;
const Content = /* @__PURE__ */ defineComponent ( {
name : "VitePressContent" ,
props : {
as : { type : [ Object , String ] , default : "div" }
} ,
setup ( props ) {
const route = useRoute ( ) ;
const { site } = useData ( ) ;
return ( ) => h ( props . as , site . value . contentProps ? ? { style : { position : "relative" } } , [
route . component ? h ( route . component , {
onVnodeMounted : runCbs ,
onVnodeUpdated : runCbs ,
onVnodeUnmounted : runCbs
} ) : "404 Page Not Found"
] ) ;
}
} ) ;
2024-09-18 08:58:07 +00:00
const scriptRel = "modulepreload" ;
const assetsURL = function ( dep ) {
return "/" + dep ;
} ;
const seen = { } ;
const _ _vitePreload = function preload ( baseModule , deps , importerUrl ) {
let promise = Promise . resolve ( ) ;
if ( deps && deps . length > 0 ) {
2024-09-24 08:56:37 +00:00
document . getElementsByTagName ( "link" ) ;
2024-09-18 08:58:07 +00:00
const cspNonceMeta = document . querySelector ( "meta[property=csp-nonce]" ) ;
const cspNonce = ( cspNonceMeta == null ? void 0 : cspNonceMeta . nonce ) || ( cspNonceMeta == null ? void 0 : cspNonceMeta . getAttribute ( "nonce" ) ) ;
promise = Promise . all ( deps . map ( ( dep ) => {
dep = assetsURL ( dep ) ;
if ( dep in seen )
return ;
seen [ dep ] = true ;
const isCss = dep . endsWith ( ".css" ) ;
const cssSelector = isCss ? '[rel="stylesheet"]' : "" ;
2024-09-24 08:56:37 +00:00
if ( document . querySelector ( ` link[href=" ${ dep } "] ${ cssSelector } ` ) ) {
2024-09-18 08:58:07 +00:00
return ;
}
const link2 = document . createElement ( "link" ) ;
link2 . rel = isCss ? "stylesheet" : scriptRel ;
if ( ! isCss ) {
link2 . as = "script" ;
link2 . crossOrigin = "" ;
}
link2 . href = dep ;
if ( cspNonce ) {
link2 . setAttribute ( "nonce" , cspNonce ) ;
}
document . head . appendChild ( link2 ) ;
if ( isCss ) {
return new Promise ( ( res , rej ) => {
link2 . addEventListener ( "load" , res ) ;
link2 . addEventListener ( "error" , ( ) => rej ( new Error ( ` Unable to preload CSS for ${ dep } ` ) ) ) ;
} ) ;
}
} ) ) ;
}
return promise . then ( ( ) => baseModule ( ) ) . catch ( ( err ) => {
const e = new Event ( "vite:preloadError" , { cancelable : true } ) ;
e . payload = err ;
window . dispatchEvent ( e ) ;
if ( ! e . defaultPrevented ) {
throw err ;
}
} ) ;
} ;
2024-05-30 02:02:10 +00:00
const ClientOnly = /* @__PURE__ */ defineComponent ( {
setup ( _ , { slots } ) {
const show = ref ( false ) ;
onMounted ( ( ) => {
show . value = true ;
} ) ;
return ( ) => show . value && slots . default ? slots . default ( ) : null ;
}
} ) ;
function useCodeGroups ( ) {
if ( inBrowser ) {
window . addEventListener ( "click" , ( e ) => {
var _a ;
const el = e . target ;
if ( el . matches ( ".vp-code-group input" ) ) {
const group = ( _a = el . parentElement ) == null ? void 0 : _a . parentElement ;
if ( ! group )
return ;
const i = Array . from ( group . querySelectorAll ( "input" ) ) . indexOf ( el ) ;
if ( i < 0 )
return ;
const blocks = group . querySelector ( ".blocks" ) ;
if ( ! blocks )
return ;
const current = Array . from ( blocks . children ) . find ( ( child ) => child . classList . contains ( "active" ) ) ;
if ( ! current )
return ;
const next = blocks . children [ i ] ;
if ( ! next || current === next )
return ;
current . classList . remove ( "active" ) ;
next . classList . add ( "active" ) ;
const label = group == null ? void 0 : group . querySelector ( ` label[for=" ${ el . id } "] ` ) ;
label == null ? void 0 : label . scrollIntoView ( { block : "nearest" } ) ;
}
} ) ;
}
}
function useCopyCode ( ) {
if ( inBrowser ) {
const timeoutIdMap = /* @__PURE__ */ new WeakMap ( ) ;
window . addEventListener ( "click" , ( e ) => {
var _a ;
const el = e . target ;
if ( el . matches ( 'div[class*="language-"] > button.copy' ) ) {
const parent = el . parentElement ;
const sibling = ( _a = el . nextElementSibling ) == null ? void 0 : _a . nextElementSibling ;
if ( ! parent || ! sibling ) {
return ;
}
const isShell = /language-(shellscript|shell|bash|sh|zsh)/ . test ( parent . className ) ;
const ignoredNodes = [ ".vp-copy-ignore" , ".diff.remove" ] ;
const clone = sibling . cloneNode ( true ) ;
clone . querySelectorAll ( ignoredNodes . join ( "," ) ) . forEach ( ( node ) => node . remove ( ) ) ;
let text = clone . textContent || "" ;
if ( isShell ) {
text = text . replace ( /^ *(\$|>) /gm , "" ) . trim ( ) ;
}
copyToClipboard ( text ) . then ( ( ) => {
el . classList . add ( "copied" ) ;
clearTimeout ( timeoutIdMap . get ( el ) ) ;
const timeoutId = setTimeout ( ( ) => {
el . classList . remove ( "copied" ) ;
el . blur ( ) ;
timeoutIdMap . delete ( el ) ;
} , 2e3 ) ;
timeoutIdMap . set ( el , timeoutId ) ;
} ) ;
}
} ) ;
}
}
async function copyToClipboard ( text ) {
try {
return navigator . clipboard . writeText ( text ) ;
} catch {
const element = document . createElement ( "textarea" ) ;
const previouslyFocusedElement = document . activeElement ;
element . value = text ;
element . setAttribute ( "readonly" , "" ) ;
element . style . contain = "strict" ;
element . style . position = "absolute" ;
element . style . left = "-9999px" ;
element . style . fontSize = "12pt" ;
const selection = document . getSelection ( ) ;
const originalRange = selection ? selection . rangeCount > 0 && selection . getRangeAt ( 0 ) : null ;
document . body . appendChild ( element ) ;
element . select ( ) ;
element . selectionStart = 0 ;
element . selectionEnd = text . length ;
document . execCommand ( "copy" ) ;
document . body . removeChild ( element ) ;
if ( originalRange ) {
selection . removeAllRanges ( ) ;
selection . addRange ( originalRange ) ;
}
if ( previouslyFocusedElement ) {
previouslyFocusedElement . focus ( ) ;
}
}
}
function useUpdateHead ( route , siteDataByRouteRef ) {
let isFirstUpdate = true ;
let managedHeadElements = [ ] ;
const updateHeadTags = ( newTags ) => {
if ( isFirstUpdate ) {
isFirstUpdate = false ;
newTags . forEach ( ( tag ) => {
const headEl = createHeadElement ( tag ) ;
for ( const el of document . head . children ) {
if ( el . isEqualNode ( headEl ) ) {
managedHeadElements . push ( el ) ;
return ;
}
}
} ) ;
return ;
}
const newElements = newTags . map ( createHeadElement ) ;
managedHeadElements . forEach ( ( oldEl , oldIndex ) => {
const matchedIndex = newElements . findIndex ( ( newEl ) => newEl == null ? void 0 : newEl . isEqualNode ( oldEl ? ? null ) ) ;
if ( matchedIndex !== - 1 ) {
delete newElements [ matchedIndex ] ;
} else {
oldEl == null ? void 0 : oldEl . remove ( ) ;
delete managedHeadElements [ oldIndex ] ;
}
} ) ;
newElements . forEach ( ( el ) => el && document . head . appendChild ( el ) ) ;
managedHeadElements = [ ... managedHeadElements , ... newElements ] . filter ( Boolean ) ;
} ;
watchEffect ( ( ) => {
const pageData = route . data ;
const siteData2 = siteDataByRouteRef . value ;
const pageDescription = pageData && pageData . description ;
const frontmatterHead = pageData && pageData . frontmatter . head || [ ] ;
const title = createTitle ( siteData2 , pageData ) ;
if ( title !== document . title ) {
document . title = title ;
}
const description = pageDescription || siteData2 . description ;
let metaDescriptionElement = document . querySelector ( ` meta[name=description] ` ) ;
if ( metaDescriptionElement ) {
if ( metaDescriptionElement . getAttribute ( "content" ) !== description ) {
metaDescriptionElement . setAttribute ( "content" , description ) ;
}
} else {
createHeadElement ( [ "meta" , { name : "description" , content : description } ] ) ;
}
updateHeadTags ( mergeHead ( siteData2 . head , filterOutHeadDescription ( frontmatterHead ) ) ) ;
} ) ;
}
function createHeadElement ( [ tag , attrs , innerHTML ] ) {
const el = document . createElement ( tag ) ;
for ( const key in attrs ) {
el . setAttribute ( key , attrs [ key ] ) ;
}
if ( innerHTML ) {
el . innerHTML = innerHTML ;
}
if ( tag === "script" && ! attrs . async ) {
el . async = false ;
}
return el ;
}
function isMetaDescription ( headConfig ) {
return headConfig [ 0 ] === "meta" && headConfig [ 1 ] && headConfig [ 1 ] . name === "description" ;
}
function filterOutHeadDescription ( head ) {
return head . filter ( ( h2 ) => ! isMetaDescription ( h2 ) ) ;
}
const hasFetched = /* @__PURE__ */ new Set ( ) ;
const createLink = ( ) => document . createElement ( "link" ) ;
const viaDOM = ( url ) => {
const link2 = createLink ( ) ;
link2 . rel = ` prefetch ` ;
link2 . href = url ;
document . head . appendChild ( link2 ) ;
} ;
const viaXHR = ( url ) => {
const req = new XMLHttpRequest ( ) ;
req . open ( "GET" , url , req . withCredentials = true ) ;
req . send ( ) ;
} ;
let link ;
const doFetch = inBrowser && ( link = createLink ( ) ) && link . relList && link . relList . supports && link . relList . supports ( "prefetch" ) ? viaDOM : viaXHR ;
function usePrefetch ( ) {
if ( ! inBrowser ) {
return ;
}
if ( ! window . IntersectionObserver ) {
return ;
}
let conn ;
if ( ( conn = navigator . connection ) && ( conn . saveData || /2g/ . test ( conn . effectiveType ) ) ) {
return ;
}
const rIC = window . requestIdleCallback || setTimeout ;
let observer = null ;
const observeLinks = ( ) => {
if ( observer ) {
observer . disconnect ( ) ;
}
observer = new IntersectionObserver ( ( entries ) => {
entries . forEach ( ( entry ) => {
if ( entry . isIntersecting ) {
const link2 = entry . target ;
observer . unobserve ( link2 ) ;
const { pathname } = link2 ;
if ( ! hasFetched . has ( pathname ) ) {
hasFetched . add ( pathname ) ;
const pageChunkPath = pathToFile ( pathname ) ;
if ( pageChunkPath )
doFetch ( pageChunkPath ) ;
}
}
} ) ;
} ) ;
rIC ( ( ) => {
document . querySelectorAll ( "#app a" ) . forEach ( ( link2 ) => {
const { hostname , pathname } = new URL ( link2 . href instanceof SVGAnimatedString ? link2 . href . animVal : link2 . href , link2 . baseURI ) ;
const extMatch = pathname . match ( /\.\w+$/ ) ;
if ( extMatch && extMatch [ 0 ] !== ".html" ) {
return ;
}
if (
// only prefetch same tab navigation, since a new tab will load
// the lean js chunk instead.
link2 . target !== "_blank" && // only prefetch inbound links
hostname === location . hostname
) {
if ( pathname !== location . pathname ) {
observer . observe ( link2 ) ;
} else {
hasFetched . add ( pathname ) ;
}
}
} ) ;
} ) ;
} ;
onMounted ( observeLinks ) ;
const route = useRoute ( ) ;
watch ( ( ) => route . path , observeLinks ) ;
onUnmounted ( ( ) => {
observer && observer . disconnect ( ) ;
} ) ;
}
export {
provide as $ ,
watchPostEffect as A ,
onUpdated as B ,
getScrollOffset as C ,
resolveComponent as D ,
renderList as E ,
Fragment as F ,
shallowRef as G ,
onContentUpdated as H ,
createVNode as I ,
resolveDynamicComponent as J ,
EXTERNAL _URL _RE as K ,
useRoute as L ,
mergeProps as M ,
inject as N ,
useWindowSize as O ,
normalizeStyle as P ,
onClickOutside as Q ,
onKeyStroke as R ,
nextTick as S ,
Transition as T ,
useWindowScroll as U ,
inBrowser as V ,
readonly as W ,
defineAsyncComponent as X ,
_ _vitePreload as Y ,
useScrollLock as Z ,
_export _sfc as _ ,
createTextVNode as a ,
toHandlers as a0 ,
withKeys as a1 ,
withModifiers as a2 ,
useSlots as a3 ,
reactive as a4 ,
toRef$1 as a5 ,
useRouter as a6 ,
onBeforeMount as a7 ,
createStaticVNode as a8 ,
useUpdateHead as a9 ,
createApp as aA ,
escapeRegExp as aB ,
RouterSymbol as aa ,
initData as ab ,
dataSymbol as ac ,
Content as ad ,
ClientOnly as ae ,
siteDataRef as af ,
createSSRApp as ag ,
createRouter as ah ,
pathToFile as ai ,
usePrefetch as aj ,
useCopyCode as ak ,
useCodeGroups as al ,
h as am ,
unrefElement as an ,
tryOnScopeDispose as ao ,
computedAsync as ap ,
useSessionStorage as aq ,
useLocalStorage as ar ,
watchDebounced as as ,
useEventListener as at ,
onBeforeUnmount as au ,
withDirectives as av ,
vModelText as aw ,
isRef as ax ,
Teleport as ay ,
markRaw as az ,
createBlock as b ,
createElementBlock as c ,
defineComponent as d ,
createCommentVNode as e ,
treatAsHtml as f ,
withBase as g ,
computed as h ,
isExternal as i ,
ref as j ,
onMounted as k ,
createBaseVNode as l ,
unref as m ,
normalizeClass as n ,
openBlock as o ,
pushScopeId as p ,
popScopeId as q ,
renderSlot as r ,
isActive as s ,
toDisplayString as t ,
useData as u ,
useMediaQuery as v ,
withCtx as w ,
watch as x ,
watchEffect as y ,
onUnmounted as z
} ;