2024-10-17 05:04:16 +00:00
"use strict" ;
const _export _sfc = ( sfc , props ) => {
const target = sfc . _ _vccOpts || sfc ;
for ( const [ key , val ] of props ) {
target [ key ] = val ;
}
return target ;
} ;
/ * *
* @ vue / shared v3 . 4.21
* ( c ) 2018 - present Yuxi ( Evan ) You and Vue contributors
* @ license MIT
* * /
function makeMap ( str , expectsLowerCase ) {
const set2 = new Set ( str . split ( "," ) ) ;
return expectsLowerCase ? ( val ) => set2 . has ( val . toLowerCase ( ) ) : ( val ) => set2 . has ( val ) ;
}
const EMPTY _OBJ = Object . freeze ( { } ) ;
const EMPTY _ARR = Object . freeze ( [ ] ) ;
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 = ( val ) => val !== null && typeof val === "object" ;
const isPromise = ( val ) => {
return ( isObject ( 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 ) ;
} ;
2024-12-10 07:02:06 +00:00
const isPlainObject$1 = ( val ) => toTypeString ( val ) === "[object Object]" ;
2024-10-17 05:04:16 +00:00
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 isBuiltInDirective = /* @__PURE__ */ makeMap (
"bind,cloak,else-if,else,for,html,if,model,on,once,pre,show,slot,text,memo"
) ;
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 ) => {
2024-12-10 07:02:06 +00:00
const s2 = str ? ` on ${ capitalize ( str ) } ` : ` ` ;
return s2 ;
2024-10-17 05:04:16 +00:00
} ) ;
const hasChanged = ( value , oldValue ) => ! Object . is ( value , oldValue ) ;
const invokeArrayFns$1 = ( 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 ) => {
2024-12-10 07:02:06 +00:00
const n2 = parseFloat ( val ) ;
return isNaN ( n2 ) ? val : n2 ;
2024-10-17 05:04:16 +00:00
} ;
let _globalThis ;
const getGlobalThis = ( ) => {
return _globalThis || ( _globalThis = typeof globalThis !== "undefined" ? globalThis : typeof self !== "undefined" ? self : typeof window !== "undefined" ? window : typeof global !== "undefined" ? global : { } ) ;
} ;
2024-12-10 07:02:06 +00:00
function normalizeStyle ( value ) {
if ( isArray ( value ) ) {
const res = { } ;
for ( let i = 0 ; i < value . length ; i ++ ) {
const item = value [ i ] ;
const normalized = isString ( item ) ? parseStringStyle ( item ) : normalizeStyle ( item ) ;
if ( normalized ) {
for ( const key in normalized ) {
res [ key ] = normalized [ key ] ;
}
}
}
return res ;
} else if ( isString ( value ) || isObject ( value ) ) {
return value ;
}
}
const listDelimiterRE = /;(?![^(]*\))/g ;
const propertyDelimiterRE = /:([^]+)/ ;
const styleCommentRE = /\/\*[^]*?\*\//g ;
function parseStringStyle ( cssText ) {
const ret = { } ;
cssText . replace ( styleCommentRE , "" ) . split ( listDelimiterRE ) . forEach ( ( item ) => {
if ( item ) {
const tmp = item . split ( propertyDelimiterRE ) ;
tmp . length > 1 && ( ret [ tmp [ 0 ] . trim ( ) ] = tmp [ 1 ] . trim ( ) ) ;
}
} ) ;
return ret ;
}
function normalizeClass ( value ) {
let res = "" ;
if ( isString ( value ) ) {
res = value ;
} else if ( isArray ( value ) ) {
for ( let i = 0 ; i < value . length ; i ++ ) {
const normalized = normalizeClass ( value [ i ] ) ;
if ( normalized ) {
res += normalized + " " ;
}
}
} else if ( isObject ( value ) ) {
for ( const name in value ) {
if ( value [ name ] ) {
res += name + " " ;
}
}
}
return res . trim ( ) ;
}
2024-10-17 05:04:16 +00:00
const toDisplayString = ( val ) => {
return isString ( val ) ? val : val == null ? "" : isArray ( val ) || isObject ( val ) && ( val . toString === objectToString || ! isFunction ( val . toString ) ) ? JSON . stringify ( val , replacer , 2 ) : String ( val ) ;
} ;
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 ) ;
2024-12-10 07:02:06 +00:00
} else if ( isObject ( val ) && ! isArray ( val ) && ! isPlainObject$1 ( val ) ) {
2024-10-17 05:04:16 +00:00
return String ( val ) ;
}
return val ;
} ;
const stringifySymbol = ( v , i = "" ) => {
var _a ;
return isSymbol ( v ) ? ` Symbol( ${ ( _a = v . description ) != null ? _a : i } ) ` : v ;
} ;
2024-12-10 07:02:06 +00:00
const LINEFEED = "\n" ;
2024-10-17 05:04:16 +00:00
const SLOT _DEFAULT _NAME = "d" ;
const ON _SHOW = "onShow" ;
const ON _HIDE = "onHide" ;
const ON _LAUNCH = "onLaunch" ;
const ON _ERROR = "onError" ;
const ON _THEME _CHANGE = "onThemeChange" ;
const ON _PAGE _NOT _FOUND = "onPageNotFound" ;
const ON _UNHANDLE _REJECTION = "onUnhandledRejection" ;
const ON _EXIT = "onExit" ;
const ON _LOAD = "onLoad" ;
const ON _READY = "onReady" ;
const ON _UNLOAD = "onUnload" ;
const ON _INIT = "onInit" ;
const ON _SAVE _EXIT _STATE = "onSaveExitState" ;
const ON _RESIZE = "onResize" ;
const ON _BACK _PRESS = "onBackPress" ;
const ON _PAGE _SCROLL = "onPageScroll" ;
const ON _TAB _ITEM _TAP = "onTabItemTap" ;
const ON _REACH _BOTTOM = "onReachBottom" ;
const ON _PULL _DOWN _REFRESH = "onPullDownRefresh" ;
const ON _SHARE _TIMELINE = "onShareTimeline" ;
const ON _ADD _TO _FAVORITES = "onAddToFavorites" ;
const ON _SHARE _APP _MESSAGE = "onShareAppMessage" ;
const ON _NAVIGATION _BAR _BUTTON _TAP = "onNavigationBarButtonTap" ;
const ON _NAVIGATION _BAR _SEARCH _INPUT _CLICKED = "onNavigationBarSearchInputClicked" ;
const ON _NAVIGATION _BAR _SEARCH _INPUT _CHANGED = "onNavigationBarSearchInputChanged" ;
const ON _NAVIGATION _BAR _SEARCH _INPUT _CONFIRMED = "onNavigationBarSearchInputConfirmed" ;
const ON _NAVIGATION _BAR _SEARCH _INPUT _FOCUS _CHANGED = "onNavigationBarSearchInputFocusChanged" ;
const customizeRE = /:/g ;
function customizeEvent ( str ) {
return camelize ( str . replace ( customizeRE , "-" ) ) ;
}
function hasLeadingSlash ( str ) {
return str . indexOf ( "/" ) === 0 ;
}
function addLeadingSlash ( str ) {
return hasLeadingSlash ( str ) ? str : "/" + str ;
}
const invokeArrayFns = ( fns , arg ) => {
let ret ;
for ( let i = 0 ; i < fns . length ; i ++ ) {
ret = fns [ i ] ( arg ) ;
}
return ret ;
} ;
function once ( fn , ctx = null ) {
let res ;
return ( ... args ) => {
if ( fn ) {
res = fn . apply ( ctx , args ) ;
fn = null ;
}
return res ;
} ;
}
function getValueByDataPath ( obj , path ) {
if ( ! isString ( path ) ) {
return ;
}
path = path . replace ( /\[(\d+)\]/g , ".$1" ) ;
const parts = path . split ( "." ) ;
let key = parts [ 0 ] ;
if ( ! obj ) {
obj = { } ;
}
if ( parts . length === 1 ) {
return obj [ key ] ;
}
return getValueByDataPath ( obj [ key ] , parts . slice ( 1 ) . join ( "." ) ) ;
}
const encode = encodeURIComponent ;
function stringifyQuery ( obj , encodeStr = encode ) {
const res = obj ? Object . keys ( obj ) . map ( ( key ) => {
let val = obj [ key ] ;
if ( typeof val === void 0 || val === null ) {
val = "" ;
2024-12-10 07:02:06 +00:00
} else if ( isPlainObject$1 ( val ) ) {
2024-10-17 05:04:16 +00:00
val = JSON . stringify ( val ) ;
}
return encodeStr ( key ) + "=" + encodeStr ( val ) ;
} ) . filter ( ( x ) => x . length > 0 ) . join ( "&" ) : null ;
return res ? ` ? ${ res } ` : "" ;
}
class EventChannel {
constructor ( id2 , events ) {
this . id = id2 ;
this . listener = { } ;
this . emitCache = [ ] ;
if ( events ) {
Object . keys ( events ) . forEach ( ( name ) => {
this . on ( name , events [ name ] ) ;
} ) ;
}
}
emit ( eventName , ... args ) {
const fns = this . listener [ eventName ] ;
if ( ! fns ) {
return this . emitCache . push ( {
eventName ,
args
} ) ;
}
fns . forEach ( ( opt ) => {
opt . fn . apply ( opt . fn , args ) ;
} ) ;
this . listener [ eventName ] = fns . filter ( ( opt ) => opt . type !== "once" ) ;
}
on ( eventName , fn ) {
this . _addListener ( eventName , "on" , fn ) ;
this . _clearCache ( eventName ) ;
}
once ( eventName , fn ) {
this . _addListener ( eventName , "once" , fn ) ;
this . _clearCache ( eventName ) ;
}
off ( eventName , fn ) {
const fns = this . listener [ eventName ] ;
if ( ! fns ) {
return ;
}
if ( fn ) {
for ( let i = 0 ; i < fns . length ; ) {
if ( fns [ i ] . fn === fn ) {
fns . splice ( i , 1 ) ;
i -- ;
}
i ++ ;
}
} else {
delete this . listener [ eventName ] ;
}
}
_clearCache ( eventName ) {
for ( let index2 = 0 ; index2 < this . emitCache . length ; index2 ++ ) {
const cache2 = this . emitCache [ index2 ] ;
const _name = eventName ? cache2 . eventName === eventName ? eventName : null : cache2 . eventName ;
if ( ! _name )
continue ;
const location = this . emit . apply ( this , [ _name , ... cache2 . args ] ) ;
if ( typeof location === "number" ) {
this . emitCache . pop ( ) ;
continue ;
}
this . emitCache . splice ( index2 , 1 ) ;
index2 -- ;
}
}
_addListener ( eventName , type , fn ) {
( this . listener [ eventName ] || ( this . listener [ eventName ] = [ ] ) ) . push ( {
fn ,
type
} ) ;
}
}
const PAGE _HOOKS = [
ON _INIT ,
ON _LOAD ,
ON _SHOW ,
ON _HIDE ,
ON _UNLOAD ,
ON _BACK _PRESS ,
ON _PAGE _SCROLL ,
ON _TAB _ITEM _TAP ,
ON _REACH _BOTTOM ,
ON _PULL _DOWN _REFRESH ,
ON _SHARE _TIMELINE ,
ON _SHARE _APP _MESSAGE ,
ON _ADD _TO _FAVORITES ,
ON _SAVE _EXIT _STATE ,
ON _NAVIGATION _BAR _BUTTON _TAP ,
ON _NAVIGATION _BAR _SEARCH _INPUT _CLICKED ,
ON _NAVIGATION _BAR _SEARCH _INPUT _CHANGED ,
ON _NAVIGATION _BAR _SEARCH _INPUT _CONFIRMED ,
ON _NAVIGATION _BAR _SEARCH _INPUT _FOCUS _CHANGED
] ;
function isRootHook ( name ) {
return PAGE _HOOKS . indexOf ( name ) > - 1 ;
}
const UniLifecycleHooks = [
ON _SHOW ,
ON _HIDE ,
ON _LAUNCH ,
ON _ERROR ,
ON _THEME _CHANGE ,
ON _PAGE _NOT _FOUND ,
ON _UNHANDLE _REJECTION ,
ON _EXIT ,
ON _INIT ,
ON _LOAD ,
ON _READY ,
ON _UNLOAD ,
ON _RESIZE ,
ON _BACK _PRESS ,
ON _PAGE _SCROLL ,
ON _TAB _ITEM _TAP ,
ON _REACH _BOTTOM ,
ON _PULL _DOWN _REFRESH ,
ON _SHARE _TIMELINE ,
ON _ADD _TO _FAVORITES ,
ON _SHARE _APP _MESSAGE ,
ON _SAVE _EXIT _STATE ,
ON _NAVIGATION _BAR _BUTTON _TAP ,
ON _NAVIGATION _BAR _SEARCH _INPUT _CLICKED ,
ON _NAVIGATION _BAR _SEARCH _INPUT _CHANGED ,
ON _NAVIGATION _BAR _SEARCH _INPUT _CONFIRMED ,
ON _NAVIGATION _BAR _SEARCH _INPUT _FOCUS _CHANGED
] ;
const MINI _PROGRAM _PAGE _RUNTIME _HOOKS = /* @__PURE__ */ ( ( ) => {
return {
onPageScroll : 1 ,
onShareAppMessage : 1 << 1 ,
onShareTimeline : 1 << 2
} ;
} ) ( ) ;
function isUniLifecycleHook ( name , value , checkType = true ) {
if ( checkType && ! isFunction ( value ) ) {
return false ;
}
if ( UniLifecycleHooks . indexOf ( name ) > - 1 ) {
return true ;
} else if ( name . indexOf ( "on" ) === 0 ) {
return true ;
}
return false ;
}
let vueApp ;
const createVueAppHooks = [ ] ;
function onCreateVueApp ( hook ) {
if ( vueApp ) {
return hook ( vueApp ) ;
}
createVueAppHooks . push ( hook ) ;
}
function invokeCreateVueAppHook ( app ) {
vueApp = app ;
createVueAppHooks . forEach ( ( hook ) => hook ( app ) ) ;
}
const invokeCreateErrorHandler = once ( ( app , createErrorHandler2 ) => {
if ( isFunction ( app . _component . onError ) ) {
return createErrorHandler2 ( app ) ;
}
} ) ;
const E = function ( ) {
} ;
E . prototype = {
on : function ( name , callback , ctx ) {
2024-12-10 07:02:06 +00:00
var e2 = this . e || ( this . e = { } ) ;
( e2 [ name ] || ( e2 [ name ] = [ ] ) ) . push ( {
2024-10-17 05:04:16 +00:00
fn : callback ,
ctx
} ) ;
return this ;
} ,
once : function ( name , callback , ctx ) {
var self2 = this ;
function listener ( ) {
self2 . off ( name , listener ) ;
callback . apply ( ctx , arguments ) ;
}
listener . _ = callback ;
return this . on ( name , listener , ctx ) ;
} ,
emit : function ( name ) {
var data = [ ] . slice . call ( arguments , 1 ) ;
var evtArr = ( ( this . e || ( this . e = { } ) ) [ name ] || [ ] ) . slice ( ) ;
var i = 0 ;
var len = evtArr . length ;
for ( i ; i < len ; i ++ ) {
evtArr [ i ] . fn . apply ( evtArr [ i ] . ctx , data ) ;
}
return this ;
} ,
off : function ( name , callback ) {
2024-12-10 07:02:06 +00:00
var e2 = this . e || ( this . e = { } ) ;
var evts = e2 [ name ] ;
2024-10-17 05:04:16 +00:00
var liveEvents = [ ] ;
if ( evts && callback ) {
for ( var i = evts . length - 1 ; i >= 0 ; i -- ) {
if ( evts [ i ] . fn === callback || evts [ i ] . fn . _ === callback ) {
evts . splice ( i , 1 ) ;
break ;
}
}
liveEvents = evts ;
}
2024-12-10 07:02:06 +00:00
liveEvents . length ? e2 [ name ] = liveEvents : delete e2 [ name ] ;
2024-10-17 05:04:16 +00:00
return this ;
}
} ;
var E$1 = E ;
const LOCALE _ZH _HANS = "zh-Hans" ;
const LOCALE _ZH _HANT = "zh-Hant" ;
const LOCALE _EN = "en" ;
const LOCALE _FR = "fr" ;
const LOCALE _ES = "es" ;
function include ( str , parts ) {
return ! ! parts . find ( ( part ) => str . indexOf ( part ) !== - 1 ) ;
}
function startsWith ( str , parts ) {
return parts . find ( ( part ) => str . indexOf ( part ) === 0 ) ;
}
function normalizeLocale ( locale , messages ) {
if ( ! locale ) {
return ;
}
locale = locale . trim ( ) . replace ( /_/g , "-" ) ;
if ( messages && messages [ locale ] ) {
return locale ;
}
locale = locale . toLowerCase ( ) ;
if ( locale === "chinese" ) {
return LOCALE _ZH _HANS ;
}
if ( locale . indexOf ( "zh" ) === 0 ) {
if ( locale . indexOf ( "-hans" ) > - 1 ) {
return LOCALE _ZH _HANS ;
}
if ( locale . indexOf ( "-hant" ) > - 1 ) {
return LOCALE _ZH _HANT ;
}
if ( include ( locale , [ "-tw" , "-hk" , "-mo" , "-cht" ] ) ) {
return LOCALE _ZH _HANT ;
}
return LOCALE _ZH _HANS ;
}
let locales = [ LOCALE _EN , LOCALE _FR , LOCALE _ES ] ;
if ( messages && Object . keys ( messages ) . length > 0 ) {
locales = Object . keys ( messages ) ;
}
const lang = startsWith ( locale , locales ) ;
if ( lang ) {
return lang ;
}
}
function getBaseSystemInfo ( ) {
return my . getSystemInfoSync ( ) ;
}
function validateProtocolFail ( name , msg ) {
console . warn ( ` ${ name } : ${ msg } ` ) ;
}
function validateProtocol ( name , data , protocol , onFail ) {
if ( ! onFail ) {
onFail = validateProtocolFail ;
}
for ( const key in protocol ) {
const errMsg = validateProp$1 ( key , data [ key ] , protocol [ key ] , ! hasOwn ( data , key ) ) ;
if ( isString ( errMsg ) ) {
onFail ( name , errMsg ) ;
}
}
}
function validateProtocols ( name , args , protocol , onFail ) {
if ( ! protocol ) {
return ;
}
if ( ! isArray ( protocol ) ) {
return validateProtocol ( name , args [ 0 ] || /* @__PURE__ */ Object . create ( null ) , protocol , onFail ) ;
}
const len = protocol . length ;
const argsLen = args . length ;
for ( let i = 0 ; i < len ; i ++ ) {
const opts = protocol [ i ] ;
const data = /* @__PURE__ */ Object . create ( null ) ;
if ( argsLen > i ) {
data [ opts . name ] = args [ i ] ;
}
validateProtocol ( name , data , { [ opts . name ] : opts } , onFail ) ;
}
}
function validateProp$1 ( name , value , prop , isAbsent ) {
2024-12-10 07:02:06 +00:00
if ( ! isPlainObject$1 ( prop ) ) {
2024-10-17 05:04:16 +00:00
prop = { type : prop } ;
}
const { type , required , validator } = prop ;
if ( required && isAbsent ) {
return 'Missing required args: "' + name + '"' ;
}
if ( value == null && ! required ) {
return ;
}
if ( type != null ) {
let isValid = false ;
const types = isArray ( type ) ? type : [ type ] ;
const expectedTypes = [ ] ;
for ( let i = 0 ; i < types . length && ! isValid ; i ++ ) {
const { valid , expectedType } = assertType$1 ( value , types [ i ] ) ;
expectedTypes . push ( expectedType || "" ) ;
isValid = valid ;
}
if ( ! isValid ) {
return getInvalidTypeMessage$1 ( name , value , expectedTypes ) ;
}
}
if ( validator ) {
return validator ( value ) ;
}
}
const isSimpleType$1 = /* @__PURE__ */ makeMap ( "String,Number,Boolean,Function,Symbol" ) ;
function assertType$1 ( value , type ) {
let valid ;
const expectedType = getType$1 ( type ) ;
if ( isSimpleType$1 ( expectedType ) ) {
const t2 = typeof value ;
valid = t2 === expectedType . toLowerCase ( ) ;
if ( ! valid && t2 === "object" ) {
valid = value instanceof type ;
}
} else if ( expectedType === "Object" ) {
valid = isObject ( value ) ;
} else if ( expectedType === "Array" ) {
valid = isArray ( value ) ;
} else {
{
valid = value instanceof type ;
}
}
return {
valid ,
expectedType
} ;
}
function getInvalidTypeMessage$1 ( name , value , expectedTypes ) {
let message = ` Invalid args: type check failed for args " ${ name } ". Expected ${ expectedTypes . map ( capitalize ) . join ( ", " ) } ` ;
const expectedType = expectedTypes [ 0 ] ;
const receivedType = toRawType ( value ) ;
const expectedValue = styleValue$1 ( value , expectedType ) ;
const receivedValue = styleValue$1 ( value , receivedType ) ;
if ( expectedTypes . length === 1 && isExplicable$1 ( expectedType ) && ! isBoolean$1 ( expectedType , receivedType ) ) {
message += ` with value ${ expectedValue } ` ;
}
message += ` , got ${ receivedType } ` ;
if ( isExplicable$1 ( receivedType ) ) {
message += ` with value ${ receivedValue } . ` ;
}
return message ;
}
function getType$1 ( ctor ) {
const match = ctor && ctor . toString ( ) . match ( /^\s*function (\w+)/ ) ;
return match ? match [ 1 ] : "" ;
}
function styleValue$1 ( value , type ) {
if ( type === "String" ) {
return ` " ${ value } " ` ;
} else if ( type === "Number" ) {
return ` ${ Number ( value ) } ` ;
} else {
return ` ${ value } ` ;
}
}
function isExplicable$1 ( type ) {
const explicitTypes = [ "string" , "number" , "boolean" ] ;
return explicitTypes . some ( ( elem ) => type . toLowerCase ( ) === elem ) ;
}
function isBoolean$1 ( ... args ) {
return args . some ( ( elem ) => elem . toLowerCase ( ) === "boolean" ) ;
}
function tryCatch ( fn ) {
return function ( ) {
try {
return fn . apply ( fn , arguments ) ;
2024-12-10 07:02:06 +00:00
} catch ( e2 ) {
console . error ( e2 ) ;
2024-10-17 05:04:16 +00:00
}
} ;
}
let invokeCallbackId = 1 ;
const invokeCallbacks = { } ;
function addInvokeCallback ( id2 , name , callback , keepAlive = false ) {
invokeCallbacks [ id2 ] = {
name ,
keepAlive ,
callback
} ;
return id2 ;
}
function invokeCallback ( id2 , res , extras ) {
if ( typeof id2 === "number" ) {
const opts = invokeCallbacks [ id2 ] ;
if ( opts ) {
if ( ! opts . keepAlive ) {
delete invokeCallbacks [ id2 ] ;
}
return opts . callback ( res , extras ) ;
}
}
return res ;
}
const API _SUCCESS = "success" ;
const API _FAIL = "fail" ;
const API _COMPLETE = "complete" ;
function getApiCallbacks ( args ) {
const apiCallbacks = { } ;
for ( const name in args ) {
const fn = args [ name ] ;
if ( isFunction ( fn ) ) {
apiCallbacks [ name ] = tryCatch ( fn ) ;
delete args [ name ] ;
}
}
return apiCallbacks ;
}
2024-12-10 07:02:06 +00:00
function normalizeErrMsg$1 ( errMsg , name ) {
2024-10-17 05:04:16 +00:00
if ( ! errMsg || errMsg . indexOf ( ":fail" ) === - 1 ) {
return name + ":ok" ;
}
return name + errMsg . substring ( errMsg . indexOf ( ":fail" ) ) ;
}
function createAsyncApiCallback ( name , args = { } , { beforeAll , beforeSuccess } = { } ) {
2024-12-10 07:02:06 +00:00
if ( ! isPlainObject$1 ( args ) ) {
2024-10-17 05:04:16 +00:00
args = { } ;
}
const { success , fail , complete } = getApiCallbacks ( args ) ;
const hasSuccess = isFunction ( success ) ;
const hasFail = isFunction ( fail ) ;
const hasComplete = isFunction ( complete ) ;
const callbackId = invokeCallbackId ++ ;
addInvokeCallback ( callbackId , name , ( res ) => {
res = res || { } ;
2024-12-10 07:02:06 +00:00
res . errMsg = normalizeErrMsg$1 ( res . errMsg , name ) ;
2024-10-17 05:04:16 +00:00
isFunction ( beforeAll ) && beforeAll ( res ) ;
if ( res . errMsg === name + ":ok" ) {
isFunction ( beforeSuccess ) && beforeSuccess ( res , args ) ;
hasSuccess && success ( res ) ;
} else {
hasFail && fail ( res ) ;
}
hasComplete && complete ( res ) ;
} ) ;
return callbackId ;
}
const HOOK _SUCCESS = "success" ;
const HOOK _FAIL = "fail" ;
const HOOK _COMPLETE = "complete" ;
const globalInterceptors = { } ;
const scopedInterceptors = { } ;
function wrapperHook ( hook , params ) {
return function ( data ) {
return hook ( data , params ) || data ;
} ;
}
function queue$2 ( hooks , data , params ) {
let promise = false ;
for ( let i = 0 ; i < hooks . length ; i ++ ) {
const hook = hooks [ i ] ;
if ( promise ) {
promise = Promise . resolve ( wrapperHook ( hook , params ) ) ;
} else {
const res = hook ( data , params ) ;
if ( isPromise ( res ) ) {
promise = Promise . resolve ( res ) ;
}
if ( res === false ) {
return {
then ( ) {
} ,
catch ( ) {
}
} ;
}
}
}
return promise || {
then ( callback ) {
return callback ( data ) ;
} ,
catch ( ) {
}
} ;
}
function wrapperOptions ( interceptors2 , options = { } ) {
[ HOOK _SUCCESS , HOOK _FAIL , HOOK _COMPLETE ] . forEach ( ( name ) => {
const hooks = interceptors2 [ name ] ;
if ( ! isArray ( hooks ) ) {
return ;
}
const oldCallback = options [ name ] ;
options [ name ] = function callbackInterceptor ( res ) {
queue$2 ( hooks , res , options ) . then ( ( res2 ) => {
return isFunction ( oldCallback ) && oldCallback ( res2 ) || res2 ;
} ) ;
} ;
} ) ;
return options ;
}
function wrapperReturnValue ( method , returnValue2 ) {
const returnValueHooks = [ ] ;
if ( isArray ( globalInterceptors . returnValue ) ) {
returnValueHooks . push ( ... globalInterceptors . returnValue ) ;
}
const interceptor = scopedInterceptors [ method ] ;
if ( interceptor && isArray ( interceptor . returnValue ) ) {
returnValueHooks . push ( ... interceptor . returnValue ) ;
}
returnValueHooks . forEach ( ( hook ) => {
returnValue2 = hook ( returnValue2 ) || returnValue2 ;
} ) ;
return returnValue2 ;
}
function getApiInterceptorHooks ( method ) {
const interceptor = /* @__PURE__ */ Object . create ( null ) ;
Object . keys ( globalInterceptors ) . forEach ( ( hook ) => {
if ( hook !== "returnValue" ) {
interceptor [ hook ] = globalInterceptors [ hook ] . slice ( ) ;
}
} ) ;
const scopedInterceptor = scopedInterceptors [ method ] ;
if ( scopedInterceptor ) {
Object . keys ( scopedInterceptor ) . forEach ( ( hook ) => {
if ( hook !== "returnValue" ) {
interceptor [ hook ] = ( interceptor [ hook ] || [ ] ) . concat ( scopedInterceptor [ hook ] ) ;
}
} ) ;
}
return interceptor ;
}
function invokeApi ( method , api , options , params ) {
const interceptor = getApiInterceptorHooks ( method ) ;
if ( interceptor && Object . keys ( interceptor ) . length ) {
if ( isArray ( interceptor . invoke ) ) {
const res = queue$2 ( interceptor . invoke , options ) ;
return res . then ( ( options2 ) => {
return api ( wrapperOptions ( getApiInterceptorHooks ( method ) , options2 ) , ... params ) ;
} ) ;
} else {
return api ( wrapperOptions ( interceptor , options ) , ... params ) ;
}
}
return api ( options , ... params ) ;
}
function hasCallback ( args ) {
2024-12-10 07:02:06 +00:00
if ( isPlainObject$1 ( args ) && [ API _SUCCESS , API _FAIL , API _COMPLETE ] . find ( ( cb ) => isFunction ( args [ cb ] ) ) ) {
2024-10-17 05:04:16 +00:00
return true ;
}
return false ;
}
function handlePromise ( promise ) {
return promise ;
}
function promisify$1 ( name , fn ) {
return ( args = { } , ... rest ) => {
if ( hasCallback ( args ) ) {
return wrapperReturnValue ( name , invokeApi ( name , fn , args , rest ) ) ;
}
2024-12-10 07:02:06 +00:00
return wrapperReturnValue ( name , handlePromise ( new Promise ( ( resolve2 , reject ) => {
invokeApi ( name , fn , extend ( args , { success : resolve2 , fail : reject } ) , rest ) ;
2024-10-17 05:04:16 +00:00
} ) ) ) ;
} ;
}
function formatApiArgs ( args , options ) {
const params = args [ 0 ] ;
2024-12-10 07:02:06 +00:00
if ( ! options || ! isPlainObject$1 ( options . formatArgs ) && isPlainObject$1 ( params ) ) {
2024-10-17 05:04:16 +00:00
return ;
}
const formatArgs = options . formatArgs ;
const keys = Object . keys ( formatArgs ) ;
for ( let i = 0 ; i < keys . length ; i ++ ) {
const name = keys [ i ] ;
const formatterOrDefaultValue = formatArgs [ name ] ;
if ( isFunction ( formatterOrDefaultValue ) ) {
const errMsg = formatterOrDefaultValue ( args [ 0 ] [ name ] , params ) ;
if ( isString ( errMsg ) ) {
return errMsg ;
}
} else {
if ( ! hasOwn ( params , name ) ) {
params [ name ] = formatterOrDefaultValue ;
}
}
}
}
function invokeSuccess ( id2 , name , res ) {
const result = {
errMsg : name + ":ok"
} ;
return invokeCallback ( id2 , extend ( res || { } , result ) ) ;
}
function invokeFail ( id2 , name , errMsg , errRes = { } ) {
const apiErrMsg = name + ":fail" + ( errMsg ? " " + errMsg : "" ) ;
delete errRes . errCode ;
let res = extend ( { errMsg : apiErrMsg } , errRes ) ;
return invokeCallback ( id2 , res ) ;
}
function beforeInvokeApi ( name , args , protocol , options ) {
{
validateProtocols ( name , args , protocol ) ;
}
if ( options && options . beforeInvoke ) {
const errMsg2 = options . beforeInvoke ( args ) ;
if ( isString ( errMsg2 ) ) {
return errMsg2 ;
}
}
const errMsg = formatApiArgs ( args , options ) ;
if ( errMsg ) {
return errMsg ;
}
}
2024-12-10 07:02:06 +00:00
function normalizeErrMsg ( errMsg ) {
2024-10-17 05:04:16 +00:00
if ( ! errMsg || isString ( errMsg ) ) {
return errMsg ;
}
if ( errMsg . stack ) {
2024-12-10 07:02:06 +00:00
console . error ( errMsg . message + LINEFEED + errMsg . stack ) ;
2024-10-17 05:04:16 +00:00
return errMsg . message ;
}
return errMsg ;
}
function wrapperTaskApi ( name , fn , protocol , options ) {
return ( args ) => {
const id2 = createAsyncApiCallback ( name , args , options ) ;
const errMsg = beforeInvokeApi ( name , [ args ] , protocol , options ) ;
if ( errMsg ) {
return invokeFail ( id2 , name , errMsg ) ;
}
return fn ( args , {
resolve : ( res ) => invokeSuccess ( id2 , name , res ) ,
2024-12-10 07:02:06 +00:00
reject : ( errMsg2 , errRes ) => invokeFail ( id2 , name , normalizeErrMsg ( errMsg2 ) , errRes )
2024-10-17 05:04:16 +00:00
} ) ;
} ;
}
function wrapperSyncApi ( name , fn , protocol , options ) {
return ( ... args ) => {
const errMsg = beforeInvokeApi ( name , args , protocol , options ) ;
if ( errMsg ) {
throw new Error ( errMsg ) ;
}
return fn . apply ( null , args ) ;
} ;
}
function wrapperAsyncApi ( name , fn , protocol , options ) {
return wrapperTaskApi ( name , fn , protocol , options ) ;
}
function defineSyncApi ( name , fn , protocol , options ) {
return wrapperSyncApi ( name , fn , protocol , options ) ;
}
function defineAsyncApi ( name , fn , protocol , options ) {
return promisify$1 ( name , wrapperAsyncApi ( name , fn , protocol , options ) ) ;
}
const API _UPX2PX = "upx2px" ;
const Upx2pxProtocol = [
{
name : "upx" ,
type : [ Number , String ] ,
required : true
}
] ;
const EPS = 1e-4 ;
const BASE _DEVICE _WIDTH = 750 ;
let isIOS = false ;
let deviceWidth = 0 ;
let deviceDPR = 0 ;
function checkDeviceWidth ( ) {
const { platform , pixelRatio , windowWidth } = getBaseSystemInfo ( ) ;
deviceWidth = windowWidth ;
deviceDPR = pixelRatio ;
isIOS = platform === "ios" ;
}
const upx2px = defineSyncApi ( API _UPX2PX , ( number , newDeviceWidth ) => {
if ( deviceWidth === 0 ) {
checkDeviceWidth ( ) ;
}
number = Number ( number ) ;
if ( number === 0 ) {
return 0 ;
}
let width = newDeviceWidth || deviceWidth ;
let result = number / BASE _DEVICE _WIDTH * width ;
if ( result < 0 ) {
result = - result ;
}
result = Math . floor ( result + EPS ) ;
if ( result === 0 ) {
if ( deviceDPR === 1 || ! isIOS ) {
result = 1 ;
} else {
result = 0.5 ;
}
}
return number < 0 ? - result : result ;
} , Upx2pxProtocol ) ;
const API _ADD _INTERCEPTOR = "addInterceptor" ;
const API _REMOVE _INTERCEPTOR = "removeInterceptor" ;
const AddInterceptorProtocol = [
{
name : "method" ,
type : [ String , Object ] ,
required : true
}
] ;
const RemoveInterceptorProtocol = AddInterceptorProtocol ;
function mergeInterceptorHook ( interceptors2 , interceptor ) {
Object . keys ( interceptor ) . forEach ( ( hook ) => {
if ( isFunction ( interceptor [ hook ] ) ) {
interceptors2 [ hook ] = mergeHook ( interceptors2 [ hook ] , interceptor [ hook ] ) ;
}
} ) ;
}
function removeInterceptorHook ( interceptors2 , interceptor ) {
if ( ! interceptors2 || ! interceptor ) {
return ;
}
Object . keys ( interceptor ) . forEach ( ( name ) => {
const hooks = interceptors2 [ name ] ;
const hook = interceptor [ name ] ;
if ( isArray ( hooks ) && isFunction ( hook ) ) {
remove ( hooks , hook ) ;
}
} ) ;
}
function mergeHook ( parentVal , childVal ) {
const res = childVal ? parentVal ? parentVal . concat ( childVal ) : isArray ( childVal ) ? childVal : [ childVal ] : parentVal ;
return res ? dedupeHooks ( res ) : res ;
}
function dedupeHooks ( hooks ) {
const res = [ ] ;
for ( let i = 0 ; i < hooks . length ; i ++ ) {
if ( res . indexOf ( hooks [ i ] ) === - 1 ) {
res . push ( hooks [ i ] ) ;
}
}
return res ;
}
const addInterceptor = defineSyncApi ( API _ADD _INTERCEPTOR , ( method , interceptor ) => {
2024-12-10 07:02:06 +00:00
if ( isString ( method ) && isPlainObject$1 ( interceptor ) ) {
2024-10-17 05:04:16 +00:00
mergeInterceptorHook ( scopedInterceptors [ method ] || ( scopedInterceptors [ method ] = { } ) , interceptor ) ;
2024-12-10 07:02:06 +00:00
} else if ( isPlainObject$1 ( method ) ) {
2024-10-17 05:04:16 +00:00
mergeInterceptorHook ( globalInterceptors , method ) ;
}
} , AddInterceptorProtocol ) ;
const removeInterceptor = defineSyncApi ( API _REMOVE _INTERCEPTOR , ( method , interceptor ) => {
if ( isString ( method ) ) {
2024-12-10 07:02:06 +00:00
if ( isPlainObject$1 ( interceptor ) ) {
2024-10-17 05:04:16 +00:00
removeInterceptorHook ( scopedInterceptors [ method ] , interceptor ) ;
} else {
delete scopedInterceptors [ method ] ;
}
2024-12-10 07:02:06 +00:00
} else if ( isPlainObject$1 ( method ) ) {
2024-10-17 05:04:16 +00:00
removeInterceptorHook ( globalInterceptors , method ) ;
}
} , RemoveInterceptorProtocol ) ;
const interceptors = { } ;
const API _ON = "$on" ;
const OnProtocol = [
{
name : "event" ,
type : String ,
required : true
} ,
{
name : "callback" ,
type : Function ,
required : true
}
] ;
const API _ONCE = "$once" ;
const OnceProtocol = OnProtocol ;
const API _OFF = "$off" ;
const OffProtocol = [
{
name : "event" ,
type : [ String , Array ]
} ,
{
name : "callback" ,
type : Function
}
] ;
const API _EMIT = "$emit" ;
const EmitProtocol = [
{
name : "event" ,
type : String ,
required : true
}
] ;
const emitter = new E$1 ( ) ;
const $on = defineSyncApi ( API _ON , ( name , callback ) => {
emitter . on ( name , callback ) ;
return ( ) => emitter . off ( name , callback ) ;
} , OnProtocol ) ;
const $once = defineSyncApi ( API _ONCE , ( name , callback ) => {
emitter . once ( name , callback ) ;
return ( ) => emitter . off ( name , callback ) ;
} , OnceProtocol ) ;
const $off = defineSyncApi ( API _OFF , ( name , callback ) => {
if ( ! name ) {
emitter . e = { } ;
return ;
}
if ( ! isArray ( name ) )
name = [ name ] ;
2024-12-10 07:02:06 +00:00
name . forEach ( ( n2 ) => emitter . off ( n2 , callback ) ) ;
2024-10-17 05:04:16 +00:00
} , OffProtocol ) ;
const $emit = defineSyncApi ( API _EMIT , ( name , ... args ) => {
emitter . emit ( name , ... args ) ;
} , EmitProtocol ) ;
let cid ;
let cidErrMsg ;
let enabled ;
function normalizePushMessage ( message ) {
try {
return JSON . parse ( message ) ;
2024-12-10 07:02:06 +00:00
} catch ( e2 ) {
2024-10-17 05:04:16 +00:00
}
return message ;
}
function invokePushCallback ( args ) {
if ( args . type === "enabled" ) {
enabled = true ;
} else if ( args . type === "clientId" ) {
cid = args . cid ;
cidErrMsg = args . errMsg ;
invokeGetPushCidCallbacks ( cid , args . errMsg ) ;
} else if ( args . type === "pushMsg" ) {
const message = {
type : "receive" ,
data : normalizePushMessage ( args . message )
} ;
for ( let i = 0 ; i < onPushMessageCallbacks . length ; i ++ ) {
const callback = onPushMessageCallbacks [ i ] ;
callback ( message ) ;
if ( message . stopped ) {
break ;
}
}
} else if ( args . type === "click" ) {
onPushMessageCallbacks . forEach ( ( callback ) => {
callback ( {
type : "click" ,
data : normalizePushMessage ( args . message )
} ) ;
} ) ;
}
}
const getPushCidCallbacks = [ ] ;
function invokeGetPushCidCallbacks ( cid2 , errMsg ) {
getPushCidCallbacks . forEach ( ( callback ) => {
callback ( cid2 , errMsg ) ;
} ) ;
getPushCidCallbacks . length = 0 ;
}
const API _GET _PUSH _CLIENT _ID = "getPushClientId" ;
2024-12-10 07:02:06 +00:00
const getPushClientId = defineAsyncApi ( API _GET _PUSH _CLIENT _ID , ( _ , { resolve : resolve2 , reject } ) => {
2024-10-17 05:04:16 +00:00
Promise . resolve ( ) . then ( ( ) => {
if ( typeof enabled === "undefined" ) {
enabled = false ;
cid = "" ;
cidErrMsg = "uniPush is not enabled" ;
}
getPushCidCallbacks . push ( ( cid2 , errMsg ) => {
if ( cid2 ) {
2024-12-10 07:02:06 +00:00
resolve2 ( { cid : cid2 } ) ;
2024-10-17 05:04:16 +00:00
} else {
reject ( errMsg ) ;
}
} ) ;
if ( typeof cid !== "undefined" ) {
invokeGetPushCidCallbacks ( cid , cidErrMsg ) ;
}
} ) ;
} ) ;
const onPushMessageCallbacks = [ ] ;
const onPushMessage = ( fn ) => {
if ( onPushMessageCallbacks . indexOf ( fn ) === - 1 ) {
onPushMessageCallbacks . push ( fn ) ;
}
} ;
const offPushMessage = ( fn ) => {
if ( ! fn ) {
onPushMessageCallbacks . length = 0 ;
} else {
const index2 = onPushMessageCallbacks . indexOf ( fn ) ;
if ( index2 > - 1 ) {
onPushMessageCallbacks . splice ( index2 , 1 ) ;
}
}
} ;
const SYNC _API _RE = /^\$|getLocale|setLocale|sendNativeEvent|restoreGlobal|requireGlobal|getCurrentSubNVue|getMenuButtonBoundingClientRect|^report|interceptors|Interceptor$|getSubNVueById|requireNativePlugin|upx2px|hideKeyboard|canIUse|^create|Sync$|Manager$|base64ToArrayBuffer|arrayBufferToBase64|getDeviceInfo|getAppBaseInfo|getWindowInfo|getSystemSetting|getAppAuthorizeSetting/ ;
const CONTEXT _API _RE = /^create|Manager$/ ;
const CONTEXT _API _RE _EXC = [ "createBLEConnection" ] ;
const ASYNC _API = [ "createBLEConnection" ] ;
const CALLBACK _API _RE = /^on|^off/ ;
function isContextApi ( name ) {
return CONTEXT _API _RE . test ( name ) && CONTEXT _API _RE _EXC . indexOf ( name ) === - 1 ;
}
function isSyncApi ( name ) {
return SYNC _API _RE . test ( name ) && ASYNC _API . indexOf ( name ) === - 1 ;
}
function isCallbackApi ( name ) {
return CALLBACK _API _RE . test ( name ) && name !== "onPush" ;
}
function shouldPromise ( name ) {
if ( isContextApi ( name ) || isSyncApi ( name ) || isCallbackApi ( name ) ) {
return false ;
}
return true ;
}
if ( ! Promise . prototype . finally ) {
Promise . prototype . finally = function ( onfinally ) {
const promise = this . constructor ;
return this . then ( ( value ) => promise . resolve ( onfinally && onfinally ( ) ) . then ( ( ) => value ) , ( reason ) => promise . resolve ( onfinally && onfinally ( ) ) . then ( ( ) => {
throw reason ;
} ) ) ;
} ;
}
function promisify ( name , api ) {
if ( ! shouldPromise ( name ) ) {
return api ;
}
if ( ! isFunction ( api ) ) {
return api ;
}
return function promiseApi ( options = { } , ... rest ) {
if ( isFunction ( options . success ) || isFunction ( options . fail ) || isFunction ( options . complete ) ) {
return wrapperReturnValue ( name , invokeApi ( name , api , options , rest ) ) ;
}
2024-12-10 07:02:06 +00:00
return wrapperReturnValue ( name , handlePromise ( new Promise ( ( resolve2 , reject ) => {
2024-10-17 05:04:16 +00:00
invokeApi ( name , api , extend ( { } , options , {
2024-12-10 07:02:06 +00:00
success : resolve2 ,
2024-10-17 05:04:16 +00:00
fail : reject
} ) , rest ) ;
} ) ) ) ;
} ;
}
const CALLBACKS = [ "success" , "fail" , "cancel" , "complete" ] ;
function initWrapper ( protocols2 ) {
function processCallback ( methodName , method , returnValue2 ) {
return function ( res ) {
return method ( processReturnValue ( methodName , res , returnValue2 ) ) ;
} ;
}
function processArgs ( methodName , fromArgs , argsOption = { } , returnValue2 = { } , keepFromArgs = false ) {
2024-12-10 07:02:06 +00:00
if ( isPlainObject$1 ( fromArgs ) ) {
2024-10-17 05:04:16 +00:00
const toArgs = keepFromArgs === true ? fromArgs : { } ;
if ( isFunction ( argsOption ) ) {
argsOption = argsOption ( fromArgs , toArgs ) || { } ;
}
for ( const key in fromArgs ) {
if ( hasOwn ( argsOption , key ) ) {
let keyOption = argsOption [ key ] ;
if ( isFunction ( keyOption ) ) {
keyOption = keyOption ( fromArgs [ key ] , fromArgs , toArgs ) ;
}
if ( ! keyOption ) {
console . warn ( ` 支付宝小程序 ${ methodName } 暂不支持 ${ key } ` ) ;
} else if ( isString ( keyOption ) ) {
toArgs [ keyOption ] = fromArgs [ key ] ;
2024-12-10 07:02:06 +00:00
} else if ( isPlainObject$1 ( keyOption ) ) {
2024-10-17 05:04:16 +00:00
toArgs [ keyOption . name ? keyOption . name : key ] = keyOption . value ;
}
} else if ( CALLBACKS . indexOf ( key ) !== - 1 ) {
const callback = fromArgs [ key ] ;
if ( isFunction ( callback ) ) {
toArgs [ key ] = processCallback ( methodName , callback , returnValue2 ) ;
}
} else {
if ( ! keepFromArgs && ! hasOwn ( toArgs , key ) ) {
toArgs [ key ] = fromArgs [ key ] ;
}
}
}
return toArgs ;
} else if ( isFunction ( fromArgs ) ) {
fromArgs = processCallback ( methodName , fromArgs , returnValue2 ) ;
}
return fromArgs ;
}
function processReturnValue ( methodName , res , returnValue2 , keepReturnValue = false ) {
if ( isFunction ( protocols2 . returnValue ) ) {
res = protocols2 . returnValue ( methodName , res ) ;
}
return processArgs ( methodName , res , returnValue2 , { } , keepReturnValue ) ;
}
return function wrapper ( methodName , method ) {
if ( ! hasOwn ( protocols2 , methodName ) ) {
return method ;
}
const protocol = protocols2 [ methodName ] ;
if ( ! protocol ) {
return function ( ) {
console . error ( ` 支付宝小程序 暂不支持 ${ methodName } ` ) ;
} ;
}
return function ( arg1 , arg2 ) {
let options = protocol ;
if ( isFunction ( protocol ) ) {
options = protocol ( arg1 ) ;
}
arg1 = processArgs ( methodName , arg1 , options . args , options . returnValue ) ;
const args = [ arg1 ] ;
if ( typeof arg2 !== "undefined" ) {
args . push ( arg2 ) ;
}
const returnValue2 = my [ options . name || methodName ] . apply ( my , args ) ;
if ( isSyncApi ( methodName ) ) {
return processReturnValue ( methodName , returnValue2 , options . returnValue , isContextApi ( methodName ) ) ;
}
return returnValue2 ;
} ;
} ;
}
const getLocale = ( ) => {
const app = isFunction ( getApp ) && getApp ( { allowDefault : true } ) ;
if ( app && app . $vm ) {
return app . $vm . $locale ;
}
return normalizeLocale ( my . getSystemInfoSync ( ) . language ) || LOCALE _EN ;
} ;
const setLocale = ( locale ) => {
const app = isFunction ( getApp ) && getApp ( ) ;
if ( ! app ) {
return false ;
}
const oldLocale = app . $vm . $locale ;
if ( oldLocale !== locale ) {
app . $vm . $locale = locale ;
onLocaleChangeCallbacks . forEach ( ( fn ) => fn ( { locale } ) ) ;
return true ;
}
return false ;
} ;
const onLocaleChangeCallbacks = [ ] ;
const onLocaleChange = ( fn ) => {
if ( onLocaleChangeCallbacks . indexOf ( fn ) === - 1 ) {
onLocaleChangeCallbacks . push ( fn ) ;
}
} ;
if ( typeof global !== "undefined" ) {
global . getLocale = getLocale ;
}
const UUID _KEY = "__DC_STAT_UUID" ;
let deviceId ;
function useDeviceId ( global2 = my ) {
return function addDeviceId ( _ , toRes ) {
deviceId = deviceId || global2 . getStorageSync ( UUID _KEY ) ;
if ( ! deviceId ) {
deviceId = Date . now ( ) + "" + Math . floor ( Math . random ( ) * 1e7 ) ;
my . setStorage ( {
key : UUID _KEY ,
data : deviceId
} ) ;
}
toRes . deviceId = deviceId ;
} ;
}
function addSafeAreaInsets ( fromRes , toRes ) {
if ( fromRes . safeArea ) {
const safeArea = fromRes . safeArea ;
toRes . safeAreaInsets = {
top : safeArea . top ,
left : safeArea . left ,
right : fromRes . windowWidth - safeArea . right ,
bottom : fromRes . screenHeight - safeArea . bottom
} ;
}
}
function populateParameters ( fromRes , toRes ) {
const { brand = "" , model = "" , system = "" , language = "" , theme , version : version2 , platform , fontSizeSetting , SDKVersion , pixelRatio , deviceOrientation } = fromRes ;
let osName = "" ;
let osVersion = "" ;
{
osName = platform ;
osVersion = system ;
}
let hostVersion = version2 ;
let deviceType = getGetDeviceType ( fromRes , model ) ;
let deviceBrand = getDeviceBrand ( brand ) ;
let _hostName = getHostName ( fromRes ) ;
let _deviceOrientation = deviceOrientation ;
let _devicePixelRatio = pixelRatio ;
let _SDKVersion = SDKVersion ;
{
_SDKVersion = my . SDKVersion ;
}
const hostLanguage = language . replace ( /_/g , "-" ) ;
const parameters = {
appId : "__UNI__98AF235" ,
appName : "FeiYi" ,
appVersion : "1.0.0" ,
appVersionCode : "100" ,
appLanguage : getAppLanguage ( hostLanguage ) ,
2024-12-10 07:02:06 +00:00
uniCompileVersion : "4.15" ,
uniRuntimeVersion : "4.15" ,
2024-10-17 05:04:16 +00:00
uniPlatform : "mp-alipay" ,
deviceBrand ,
deviceModel : model ,
deviceType ,
devicePixelRatio : _devicePixelRatio ,
deviceOrientation : _deviceOrientation ,
osName : osName . toLocaleLowerCase ( ) ,
osVersion ,
hostTheme : theme ,
hostVersion ,
hostLanguage ,
hostName : _hostName ,
hostSDKVersion : _SDKVersion ,
hostFontSizeSetting : fontSizeSetting ,
windowTop : 0 ,
windowBottom : 0 ,
// TODO
osLanguage : void 0 ,
osTheme : void 0 ,
ua : void 0 ,
hostPackageName : void 0 ,
browserName : void 0 ,
browserVersion : void 0
} ;
extend ( toRes , parameters ) ;
}
function getGetDeviceType ( fromRes , model ) {
let deviceType = fromRes . deviceType || "phone" ;
{
const deviceTypeMaps = {
ipad : "pad" ,
windows : "pc" ,
mac : "pc"
} ;
const deviceTypeMapsKeys = Object . keys ( deviceTypeMaps ) ;
const _model = model . toLocaleLowerCase ( ) ;
for ( let index2 = 0 ; index2 < deviceTypeMapsKeys . length ; index2 ++ ) {
const _m = deviceTypeMapsKeys [ index2 ] ;
if ( _model . indexOf ( _m ) !== - 1 ) {
deviceType = deviceTypeMaps [ _m ] ;
break ;
}
}
}
return deviceType ;
}
function getDeviceBrand ( brand ) {
let deviceBrand = brand ;
if ( deviceBrand ) {
deviceBrand = deviceBrand . toLocaleLowerCase ( ) ;
}
return deviceBrand ;
}
function getAppLanguage ( defaultLanguage ) {
return getLocale ? getLocale ( ) : defaultLanguage ;
}
function getHostName ( fromRes ) {
const _platform = "mp-alipay" . split ( "-" ) [ 1 ] ;
let _hostName = fromRes . hostName || _platform ;
_hostName = fromRes . app ;
return _hostName ;
}
const redirectTo = { } ;
const eventChannels = { } ;
let id = 0 ;
function initEventChannel ( events , cache = true ) {
id ++ ;
const eventChannel = new my . EventChannel ( id , events ) ;
if ( cache ) {
eventChannels [ id ] = eventChannel ;
}
return eventChannel ;
}
function getEventChannel ( id2 ) {
const eventChannel = eventChannels [ id2 ] ;
delete eventChannels [ id2 ] ;
return eventChannel ;
}
const navigateTo$1 = ( ) => {
let eventChannel ;
return {
args ( fromArgs ) {
eventChannel = initEventChannel ( fromArgs . events ) ;
if ( fromArgs . url ) {
fromArgs . url = fromArgs . url + ( fromArgs . url . indexOf ( "?" ) === - 1 ? "?" : "&" ) + "__id__=" + eventChannel . id ;
}
} ,
returnValue ( fromRes ) {
fromRes . eventChannel = eventChannel ;
}
} ;
} ;
const baseApis = {
$on ,
$off ,
$once ,
$emit ,
upx2px ,
interceptors ,
addInterceptor ,
removeInterceptor ,
onCreateVueApp ,
invokeCreateVueAppHook ,
getLocale ,
setLocale ,
onLocaleChange ,
getPushClientId ,
onPushMessage ,
offPushMessage ,
invokePushCallback
} ;
function initUni ( api , protocols2 , platform = my ) {
const wrapper = initWrapper ( protocols2 ) ;
const UniProxyHandlers = {
get ( target , key ) {
if ( hasOwn ( target , key ) ) {
return target [ key ] ;
}
if ( hasOwn ( api , key ) ) {
return promisify ( key , api [ key ] ) ;
}
if ( hasOwn ( baseApis , key ) ) {
return promisify ( key , baseApis [ key ] ) ;
}
return promisify ( key , wrapper ( key , platform [ key ] ) ) ;
}
} ;
{
platform . $emit = $emit ;
if ( ! my . canIUse ( "getOpenerEventChannel" ) )
platform . getEventChannel = getEventChannel ;
}
return new Proxy ( { } , UniProxyHandlers ) ;
}
function initGetProvider ( providers ) {
return function getProvider2 ( { service , success , fail , complete } ) {
let res ;
if ( providers [ service ] ) {
res = {
errMsg : "getProvider:ok" ,
service ,
provider : providers [ service ]
} ;
isFunction ( success ) && success ( res ) ;
} else {
res = {
errMsg : "getProvider:fail:服务[" + service + "]不存在"
} ;
isFunction ( fail ) && fail ( res ) ;
}
isFunction ( complete ) && complete ( res ) ;
} ;
}
let onKeyboardHeightChangeCallback ;
const getProvider = initGetProvider ( {
oauth : [ "alipay" ] ,
share : [ "alipay" ] ,
payment : [ "alipay" ] ,
push : [ "alipay" ]
} ) ;
function setStorageSync ( key , data ) {
return my . setStorageSync ( {
key ,
data
} ) ;
}
function getStorageSync ( key ) {
const result = my . getStorageSync ( {
key
} ) ;
return result . data !== null ? result . data : "" ;
}
function removeStorageSync ( key ) {
return my . removeStorageSync ( {
key
} ) ;
}
function startGyroscope ( args ) {
if ( hasOwn ( args , "interval" ) ) {
console . warn ( "支付宝小程序 startGyroscope暂不支持interval" ) ;
}
args . success && args . success ( {
errMsg : "startGyroscope:ok"
} ) ;
args . complete && args . complete ( {
errMsg : "startGyroscope:ok"
} ) ;
}
function createExecCallback ( execCallback ) {
return function wrapperExecCallback ( res ) {
this . actions . forEach ( ( action , index2 ) => {
( action . _$callbacks || [ ] ) . forEach ( ( callback ) => {
callback ( res [ index2 ] ) ;
} ) ;
} ) ;
if ( isFunction ( execCallback ) ) {
execCallback ( res ) ;
}
} ;
}
function addCallback ( callback ) {
if ( isFunction ( callback ) ) {
const action = this . actions [ this . actions . length - 1 ] ;
if ( action ) {
( action . _$callbacks || ( action . _$callbacks = [ ] ) ) . push ( callback ) ;
}
}
}
function createSelectorQuery ( ) {
const query = my . createSelectorQuery ( ) ;
const oldExec = query . exec ;
const oldScrollOffset = query . scrollOffset ;
const oldBoundingClientRect = query . boundingClientRect ;
query . exec = function exec ( callback ) {
return oldExec . call ( this , createExecCallback ( callback ) . bind ( this ) ) ;
} ;
query . scrollOffset = function scrollOffset ( callback ) {
const ret = oldScrollOffset . call ( this ) ;
addCallback . call ( this , callback ) ;
return ret ;
} ;
query . boundingClientRect = function boundingClientRect ( callback ) {
const ret = oldBoundingClientRect . call ( this ) ;
addCallback . call ( this , callback ) ;
return ret ;
} ;
if ( ! query . fields ) {
query . fields = function ( { rect , size : size2 , scrollOffset } , callback ) {
if ( rect || size2 ) {
this . boundingClientRect ( ) ;
}
if ( scrollOffset ) {
this . scrollOffset ( ) ;
}
addCallback . call ( this , callback ) ;
return this ;
} ;
}
if ( ! query . in ) {
query . in = function ( ) {
return this ;
} ;
}
return query ;
}
function createIntersectionObserver ( component , options ) {
if ( options && options . observeAll ) {
options . selectAll = options . observeAll ;
delete options . observeAll ;
}
return my . createIntersectionObserver ( options ) ;
}
function onKeyboardHeightChange ( callback ) {
if ( onKeyboardHeightChangeCallback ) {
$off ( "uni:keyboardHeightChange" , onKeyboardHeightChangeCallback ) ;
}
onKeyboardHeightChangeCallback = callback ;
$on ( "uni:keyboardHeightChange" , onKeyboardHeightChangeCallback ) ;
}
function offKeyboardHeightChange ( ) {
$off ( "uni:keyboardHeightChange" , onKeyboardHeightChangeCallback ) ;
onKeyboardHeightChangeCallback = void 0 ;
}
var shims = /* @__PURE__ */ Object . freeze ( {
_ _proto _ _ : null ,
createIntersectionObserver ,
createSelectorQuery ,
getProvider ,
getStorageSync ,
offKeyboardHeightChange ,
onKeyboardHeightChange ,
removeStorageSync ,
setStorageSync ,
startGyroscope
} ) ;
function handleNetworkInfo ( fromRes , toRes ) {
const nextworkType = fromRes . networkType ;
switch ( nextworkType ) {
case "NOTREACHABLE" :
toRes . networkType = "none" ;
break ;
case "WWAN" :
toRes . networkType = "3g" ;
break ;
default :
toRes . networkType = fromRes . networkType . toLowerCase ( ) ;
break ;
}
}
function handleSystemInfo ( fromRes , toRes ) {
addSafeAreaInsets ( fromRes , toRes ) ;
useDeviceId ( {
getStorageSync
} ) ( fromRes , toRes ) ;
populateParameters ( fromRes , toRes ) ;
let platform = fromRes . platform ? fromRes . platform . toLowerCase ( ) : "devtools" ;
if ( my . canIUse ( "isIDE" ) ) {
platform = my . isIDE ? "devtools" : platform ;
} else {
if ( ! ~ [ "android" , "ios" ] . indexOf ( platform ) ) {
platform = "devtools" ;
}
}
toRes . platform = platform ;
}
function returnValue ( methodName , res = { } ) {
if ( res . error || res . errorMessage ) {
res . errMsg = ` ${ methodName } :fail ${ res . errorMessage || res . error } ` ;
delete res . error ;
delete res . errorMessage ;
} else {
res . errMsg = ` ${ methodName } :ok ` ;
}
return res ;
}
const request = {
name : my . canIUse ( "request" ) ? "request" : "httpRequest" ,
args ( fromArgs ) {
const method = fromArgs . method || "GET" ;
if ( ! fromArgs . header ) {
fromArgs . header = { } ;
}
const headers = {
"content-type" : "application/json"
} ;
Object . keys ( fromArgs . header ) . forEach ( ( key ) => {
headers [ key . toLocaleLowerCase ( ) ] = fromArgs . header [ key ] ;
} ) ;
return {
header ( ) {
return {
name : "headers" ,
value : headers
} ;
} ,
data ( data ) {
2024-12-10 07:02:06 +00:00
if ( my . canIUse ( "saveFileToDingTalk" ) && method . toUpperCase ( ) === "POST" && headers [ "content-type" ] . indexOf ( "application/json" ) === 0 && isPlainObject$1 ( data ) ) {
2024-10-17 05:04:16 +00:00
return {
name : "data" ,
value : JSON . stringify ( data )
} ;
}
return {
name : "data" ,
value : data
} ;
} ,
method : "method" ,
// TODO 支付宝小程序仅支持 get,post
responseType : false
} ;
} ,
returnValue : {
status : "statusCode" ,
headers : "header"
}
} ;
const setNavigationBarColor = {
name : "setNavigationBar" ,
args : {
frontColor : false ,
animation : false
}
} ;
const setNavigationBarTitle = {
name : "setNavigationBar"
} ;
function showModal ( { showCancel = true } = { } ) {
if ( showCancel ) {
return {
name : "confirm" ,
args : {
cancelColor : false ,
confirmColor : false ,
cancelText : "cancelButtonText" ,
confirmText : "confirmButtonText"
} ,
returnValue ( fromRes , toRes ) {
toRes . confirm = fromRes . confirm ;
toRes . cancel = ! fromRes . confirm ;
}
} ;
}
return {
name : "alert" ,
args : {
confirmColor : false ,
confirmText : "buttonText"
} ,
returnValue ( fromRes , toRes ) {
toRes . confirm = true ;
toRes . cancel = false ;
}
} ;
}
function showToast ( { icon = "success" } = { } ) {
const args = {
title : "content" ,
icon : "type" ,
image : false ,
mask : false
} ;
if ( icon === "loading" ) {
return {
name : "showLoading" ,
args
} ;
}
return {
name : "showToast" ,
args
} ;
}
const showActionSheet = {
name : "showActionSheet" ,
args : {
itemList : "items" ,
itemColor : false
} ,
returnValue : {
index : "tapIndex"
}
} ;
const showLoading = {
args : {
title : "content"
}
} ;
const uploadFile = {
args : {
name : "fileName"
}
// 从测试结果看,是有返回对象的,文档上没有说明。
} ;
const downloadFile = {
returnValue : {
apFilePath : "tempFilePath"
}
} ;
const getFileInfo = {
args : {
filePath : "apFilePath"
}
} ;
const compressImage = {
args ( fromArgs , toArgs ) {
toArgs . compressLevel = 4 ;
if ( fromArgs && fromArgs . quality ) {
toArgs . compressLevel = Math . floor ( fromArgs . quality / 26 ) ;
}
if ( fromArgs . src ) {
toArgs . apFilePaths = [ fromArgs . src ] ;
}
} ,
returnValue ( fromRes , toRes ) {
const apFilePaths = fromRes . apFilePaths ;
if ( apFilePaths && apFilePaths . length ) {
toRes . tempFilePath = apFilePaths [ 0 ] ;
}
}
} ;
const chooseVideo = {
// 支付宝小程序文档中未找到( 仅在getSetting处提及) , 但实际可用
returnValue : {
apFilePath : "tempFilePath"
}
} ;
const connectSocket = {
args : {
method : false ,
protocols : false
}
// TODO 有没有返回值还需要测试下
} ;
const chooseImage = {
returnValue ( result ) {
var _a , _b ;
const hasTempFilePaths = hasOwn ( result , "tempFilePaths" ) && result . tempFilePaths ;
if ( hasOwn ( result , "apFilePaths" ) && ! hasTempFilePaths ) {
result . tempFilePaths = [ ] ;
( _a = result . apFilePaths ) === null || _a === void 0 ? void 0 : _a . forEach ( ( apFilePath ) => {
var _a2 ;
return ( _a2 = result . tempFilePaths ) === null || _a2 === void 0 ? void 0 : _a2 . push ( apFilePath ) ;
} ) ;
}
if ( ! hasOwn ( result , "tempFiles" ) && hasTempFilePaths ) {
result . tempFiles = [ ] ;
( _b = result . tempFilePaths ) === null || _b === void 0 ? void 0 : _b . forEach ( ( tempFilePath ) => {
var _a2 ;
return ( _a2 = result . tempFiles ) === null || _a2 === void 0 ? void 0 : _a2 . push ( { path : tempFilePath } ) ;
} ) ;
}
return { } ;
}
} ;
const previewImage = {
args ( fromArgs , toArgs ) {
const currentIndex = Number ( fromArgs . current ) ;
if ( isNaN ( currentIndex ) ) {
if ( fromArgs . current && isArray ( fromArgs . urls ) ) {
const index2 = fromArgs . urls . indexOf ( fromArgs . current ) ;
toArgs . current = ~ index2 ? index2 : 0 ;
}
} else {
toArgs . current = currentIndex ;
}
return {
indicator : false ,
loop : false
} ;
}
} ;
const saveFile = {
args : {
tempFilePath : "apFilePath"
} ,
returnValue : {
apFilePath : "savedFilePath"
}
} ;
const getSavedFileInfo = {
args : {
filePath : "apFilePath"
}
} ;
const getSavedFileList = {
returnValue ( fromRes , toRes ) {
toRes . fileList = fromRes . fileList . map ( ( file ) => {
return {
filePath : file . apFilePath ,
// mini-types file.d.ts 不正确
createTime : file . createTime ,
size : file . size
} ;
} ) ;
}
} ;
const removeSavedFile = {
args : {
filePath : "apFilePath"
}
} ;
const getLocation = {
args : {
type : false ,
altitude : false
}
} ;
const openLocation = {
args : {
// TODO address 参数在阿里上是必传的
}
} ;
const getNetworkType = {
returnValue : handleNetworkInfo
} ;
const onNetworkStatusChange = {
returnValue : handleNetworkInfo
} ;
const stopAccelerometer = {
name : "offAccelerometerChange"
} ;
const stopCompass = {
name : "offCompassChange"
} ;
const scanCode = {
name : "scan" ,
args : {
onlyFromCamera : "hideAlbum"
} ,
returnValue : {
code : "result"
}
} ;
const setClipboardData = {
name : "setClipboard" ,
args : {
data : "text"
}
} ;
const getClipboardData = {
name : "getClipboard" ,
returnValue : {
text : "data"
}
} ;
const pageScrollTo = {
args : {
duration : false
}
} ;
const login = {
name : "getAuthCode" ,
returnValue : {
authCode : "code"
}
} ;
const getUserInfo = {
name : my . canIUse ( "getOpenUserInfo" ) ? "getOpenUserInfo" : "getAuthUserInfo" ,
returnValue ( fromRes , toRes ) {
if ( my . canIUse ( "getOpenUserInfo" ) ) {
let response ;
try {
response = JSON . parse ( fromRes . response ) . response ;
2024-12-10 07:02:06 +00:00
} catch ( e2 ) {
2024-10-17 05:04:16 +00:00
}
if ( response ) {
toRes . userInfo = response ;
toRes . userInfo . avatarUrl = response . avatar ;
delete response . avatar ;
}
} else {
toRes . userInfo = {
openId : "" ,
nickName : fromRes . nickName ,
avatarUrl : fromRes . avatar
} ;
}
}
} ;
const requestPayment = {
name : "tradePay" ,
args : {
orderInfo : "tradeNO"
}
} ;
const getBLEDeviceServices = {
returnValue ( fromRes , toRes ) {
toRes . services = fromRes . services . map ( ( item ) => {
return {
uuid : item . serviceId ,
isPrimary : item . isPrimary
} ;
} ) ;
}
} ;
const createBLEConnection = {
name : "connectBLEDevice" ,
args : {
timeout : false
}
} ;
const closeBLEConnection = {
name : "disconnectBLEDevice"
} ;
const onBLEConnectionStateChange = {
name : "onBLEConnectionStateChanged"
} ;
const makePhoneCall = {
args : {
phoneNumber : "number"
}
} ;
const stopGyroscope = {
name : "offGyroscopeChange"
} ;
const getSystemInfo = {
returnValue : handleSystemInfo
} ;
const getSystemInfoSync = {
returnValue : handleSystemInfo
} ;
const canvasToTempFilePath = {
returnValue ( fromRes , toRes ) {
toRes . tempFilePath = fromRes . apFilePath ;
}
} ;
const setScreenBrightness = {
args : {
value : "brightness"
}
} ;
const getScreenBrightness = {
returnValue : {
brightness : "value"
}
} ;
const showShareMenu = {
name : "showSharePanel"
} ;
const hideHomeButton = {
name : "hideBackHome"
} ;
const saveImageToPhotosAlbum = my . canIUse ( "saveImageToPhotosAlbum" ) ? { } : {
name : "saveImage" ,
args : {
filePath : "url"
}
} ;
const saveVideoToPhotosAlbum = {
args : {
filePath : "src"
}
} ;
const chooseAddress = {
name : "getAddress" ,
returnValue ( fromRes , toRes ) {
const info = fromRes . result || { } ;
toRes . userName = info . fullname ;
toRes . countyName = info . country ;
toRes . provinceName = info . prov ;
toRes . cityName = info . city ;
toRes . detailInfo = info . address ;
toRes . telNumber = info . mobilePhone ;
toRes . errMsg = toRes . errMsg + " " + fromRes . resultStatus ;
}
} ;
const navigateTo = my . canIUse ( "getOpenerEventChannel" ) ? { } : navigateTo$1 ( ) ;
var protocols = /* @__PURE__ */ Object . freeze ( {
_ _proto _ _ : null ,
canvasToTempFilePath ,
chooseAddress ,
chooseImage ,
chooseVideo ,
closeBLEConnection ,
compressImage ,
connectSocket ,
createBLEConnection ,
downloadFile ,
getBLEDeviceServices ,
getClipboardData ,
getFileInfo ,
getLocation ,
getNetworkType ,
getSavedFileInfo ,
getSavedFileList ,
getScreenBrightness ,
getSystemInfo ,
getSystemInfoSync ,
getUserInfo ,
hideHomeButton ,
login ,
makePhoneCall ,
navigateTo ,
onBLEConnectionStateChange ,
onNetworkStatusChange ,
openLocation ,
pageScrollTo ,
previewImage ,
redirectTo ,
removeSavedFile ,
request ,
requestPayment ,
returnValue ,
saveFile ,
saveImageToPhotosAlbum ,
saveVideoToPhotosAlbum ,
scanCode ,
setClipboardData ,
setNavigationBarColor ,
setNavigationBarTitle ,
setScreenBrightness ,
showActionSheet ,
showLoading ,
showModal ,
showShareMenu ,
showToast ,
stopAccelerometer ,
stopCompass ,
stopGyroscope ,
uploadFile
} ) ;
var index = initUni ( shims , protocols ) ;
new Set (
/* @__PURE__ */ Object . getOwnPropertyNames ( Symbol ) . filter ( ( key ) => key !== "arguments" && key !== "caller" ) . map ( ( key ) => Symbol [ key ] ) . filter ( isSymbol )
) ;
function toRaw$1 ( observed ) {
const raw = observed && observed [ "__v_raw" ] ;
return raw ? toRaw$1 ( raw ) : observed ;
}
function isRef$1 ( r2 ) {
return ! ! ( r2 && r2 . _ _v _isRef === true ) ;
}
/ * *
* @ vue / runtime - core v3 . 4.21
* ( c ) 2018 - present Yuxi ( Evan ) You and Vue contributors
* @ license MIT
* * /
const stack$1 = [ ] ;
function pushWarningContext$1 ( vnode ) {
stack$1 . push ( vnode ) ;
}
function popWarningContext$1 ( ) {
stack$1 . pop ( ) ;
}
function warn$1$1 ( msg , ... args ) {
const instance = stack$1 . length ? stack$1 [ stack$1 . length - 1 ] . component : null ;
const appWarnHandler = instance && instance . appContext . config . warnHandler ;
const trace = getComponentTrace$1 ( ) ;
if ( appWarnHandler ) {
callWithErrorHandling$1 (
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$1 ( 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 $ 1(trace));
}
console . warn ( ... warnArgs ) ;
}
}
function getComponentTrace$1 ( ) {
let currentVNode = stack$1 [ stack$1 . 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$1 ( trace ) {
const logs = [ ] ;
trace . forEach ( ( entry , i ) => {
logs . push ( ... i === 0 ? [ ] : [ `
` ], ...formatTraceEntry $ 1(entry));
} ) ;
return logs ;
}
function formatTraceEntry$1 ( { vnode , recurseCount } ) {
const postfix = recurseCount > 0 ? ` ... ( ${ recurseCount } recursive calls) ` : ` ` ;
const isRoot = vnode . component ? vnode . component . parent == null : false ;
const open = ` at < ${ formatComponentName$1 (
vnode . component ,
vnode . type ,
isRoot
) } ` ;
const close = ` > ` + postfix ;
return vnode . props ? [ open , ... formatProps$1 ( vnode . props ) , close ] : [ open + close ] ;
}
function formatProps$1 ( props ) {
const res = [ ] ;
const keys = Object . keys ( props ) ;
keys . slice ( 0 , 3 ) . forEach ( ( key ) => {
res . push ( ... formatProp$1 ( key , props [ key ] ) ) ;
} ) ;
if ( keys . length > 3 ) {
res . push ( ` ... ` ) ;
}
return res ;
}
function formatProp$1 ( 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$1 ( value ) ) {
value = formatProp$1 ( key , toRaw$1 ( value . value ) , true ) ;
return raw ? value : [ ` ${ key } =Ref< ` , value , ` > ` ] ;
} else if ( isFunction ( value ) ) {
return [ ` ${ key } =fn ${ value . name ? ` < ${ value . name } > ` : ` ` } ` ] ;
} else {
value = toRaw$1 ( value ) ;
return raw ? value : [ ` ${ key } = ` , value ] ;
}
}
const ErrorTypeStrings$1 = {
[ "sp" ] : "serverPrefetch hook" ,
[ "bc" ] : "beforeCreate hook" ,
[ "c" ] : "created hook" ,
[ "bm" ] : "beforeMount hook" ,
[ "m" ] : "mounted hook" ,
[ "bu" ] : "beforeUpdate hook" ,
[ "u" ] : "updated" ,
[ "bum" ] : "beforeUnmount hook" ,
[ "um" ] : "unmounted hook" ,
[ "a" ] : "activated hook" ,
[ "da" ] : "deactivated hook" ,
[ "ec" ] : "errorCaptured hook" ,
[ "rtc" ] : "renderTracked hook" ,
[ "rtg" ] : "renderTriggered hook" ,
[ 0 ] : "setup function" ,
[ 1 ] : "render function" ,
[ 2 ] : "watcher getter" ,
[ 3 ] : "watcher callback" ,
[ 4 ] : "watcher cleanup function" ,
[ 5 ] : "native event handler" ,
[ 6 ] : "component event handler" ,
[ 7 ] : "vnode hook" ,
[ 8 ] : "directive hook" ,
[ 9 ] : "transition hook" ,
[ 10 ] : "app errorHandler" ,
[ 11 ] : "app warnHandler" ,
[ 12 ] : "ref function" ,
[ 13 ] : "async component loader" ,
[ 14 ] : "scheduler flush. This is likely a Vue internals bug. Please open an issue at https://github.com/vuejs/core ."
} ;
function callWithErrorHandling$1 ( fn , instance , type , args ) {
try {
return args ? fn ( ... args ) : fn ( ) ;
} catch ( err ) {
handleError$1 ( err , instance , type ) ;
}
}
function handleError$1 ( err , instance , type , throwInDev = true ) {
const contextVNode = instance ? instance . vnode : null ;
if ( instance ) {
let cur = instance . parent ;
const exposedInstance = instance . proxy ;
const errorInfo = ErrorTypeStrings$1 [ 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 ) {
callWithErrorHandling$1 (
appErrorHandler ,
null ,
10 ,
[ err , exposedInstance , errorInfo ]
) ;
return ;
}
}
logError$1 ( err , type , contextVNode , throwInDev ) ;
}
function logError$1 ( err , type , contextVNode , throwInDev = true ) {
{
const info = ErrorTypeStrings$1 [ type ] ;
if ( contextVNode ) {
pushWarningContext$1 ( contextVNode ) ;
}
warn$1$1 ( ` Unhandled error ${ info ? ` during execution of ${ info } ` : ` ` } ` ) ;
if ( contextVNode ) {
popWarningContext$1 ( ) ;
}
if ( throwInDev ) {
throw err ;
} else {
console . error ( err ) ;
}
}
}
let isFlushing$1 = false ;
let isFlushPending$1 = false ;
const queue$1 = [ ] ;
let flushIndex$1 = 0 ;
const pendingPostFlushCbs$1 = [ ] ;
let activePostFlushCbs$1 = null ;
let postFlushIndex$1 = 0 ;
const resolvedPromise$1 = /* @__PURE__ */ Promise . resolve ( ) ;
const RECURSION _LIMIT$1 = 100 ;
function findInsertionIndex$1 ( id2 ) {
let start = flushIndex$1 + 1 ;
let end = queue$1 . length ;
while ( start < end ) {
const middle = start + end >>> 1 ;
const middleJob = queue$1 [ middle ] ;
const middleJobId = getId$1 ( middleJob ) ;
if ( middleJobId < id2 || middleJobId === id2 && middleJob . pre ) {
start = middle + 1 ;
} else {
end = middle ;
}
}
return start ;
}
function queueJob$1 ( job ) {
if ( ! queue$1 . length || ! queue$1 . includes (
job ,
isFlushing$1 && job . allowRecurse ? flushIndex$1 + 1 : flushIndex$1
) ) {
if ( job . id == null ) {
queue$1 . push ( job ) ;
} else {
queue$1 . splice ( findInsertionIndex$1 ( job . id ) , 0 , job ) ;
}
queueFlush$1 ( ) ;
}
}
function queueFlush$1 ( ) {
if ( ! isFlushing$1 && ! isFlushPending$1 ) {
isFlushPending$1 = true ;
resolvedPromise$1 . then ( flushJobs$1 ) ;
}
}
function queuePostFlushCb$1 ( cb ) {
if ( ! isArray ( cb ) ) {
if ( ! activePostFlushCbs$1 || ! activePostFlushCbs$1 . includes (
cb ,
cb . allowRecurse ? postFlushIndex$1 + 1 : postFlushIndex$1
) ) {
pendingPostFlushCbs$1 . push ( cb ) ;
}
} else {
pendingPostFlushCbs$1 . push ( ... cb ) ;
}
queueFlush$1 ( ) ;
}
function flushPostFlushCbs$1 ( seen ) {
if ( pendingPostFlushCbs$1 . length ) {
const deduped = [ ... new Set ( pendingPostFlushCbs$1 ) ] . sort (
( a , b ) => getId$1 ( a ) - getId$1 ( b )
) ;
pendingPostFlushCbs$1 . length = 0 ;
if ( activePostFlushCbs$1 ) {
activePostFlushCbs$1 . push ( ... deduped ) ;
return ;
}
activePostFlushCbs$1 = deduped ;
{
seen = seen || /* @__PURE__ */ new Map ( ) ;
}
for ( postFlushIndex$1 = 0 ; postFlushIndex$1 < activePostFlushCbs$1 . length ; postFlushIndex$1 ++ ) {
if ( checkRecursiveUpdates$1 ( seen , activePostFlushCbs$1 [ postFlushIndex$1 ] ) ) {
continue ;
}
activePostFlushCbs$1 [ postFlushIndex$1 ] ( ) ;
}
activePostFlushCbs$1 = null ;
postFlushIndex$1 = 0 ;
}
}
const getId$1 = ( job ) => job . id == null ? Infinity : job . id ;
const comparator$1 = ( a , b ) => {
const diff2 = getId$1 ( a ) - getId$1 ( b ) ;
if ( diff2 === 0 ) {
if ( a . pre && ! b . pre )
return - 1 ;
if ( b . pre && ! a . pre )
return 1 ;
}
return diff2 ;
} ;
function flushJobs$1 ( seen ) {
isFlushPending$1 = false ;
isFlushing$1 = true ;
{
seen = seen || /* @__PURE__ */ new Map ( ) ;
}
queue$1 . sort ( comparator$1 ) ;
const check = ( job ) => checkRecursiveUpdates$1 ( seen , job ) ;
try {
for ( flushIndex$1 = 0 ; flushIndex$1 < queue$1 . length ; flushIndex$1 ++ ) {
const job = queue$1 [ flushIndex$1 ] ;
if ( job && job . active !== false ) {
if ( check ( job ) ) {
continue ;
}
callWithErrorHandling$1 ( job , null , 14 ) ;
}
}
} finally {
flushIndex$1 = 0 ;
queue$1 . length = 0 ;
flushPostFlushCbs$1 ( seen ) ;
isFlushing$1 = false ;
if ( queue$1 . length || pendingPostFlushCbs$1 . length ) {
flushJobs$1 ( seen ) ;
}
}
}
function checkRecursiveUpdates$1 ( seen , fn ) {
if ( ! seen . has ( fn ) ) {
seen . set ( fn , 1 ) ;
} else {
const count = seen . get ( fn ) ;
if ( count > RECURSION _LIMIT$1 ) {
const instance = fn . ownerInstance ;
const componentName = instance && getComponentName$1 ( instance . type ) ;
handleError$1 (
` Maximum recursive updates exceeded ${ componentName ? ` in component < ${ componentName } > ` : ` ` } . This means you have a reactive effect that is mutating its own dependencies and thus recursively triggering itself. Possible sources include component template, render function, updated hook or watcher source function. ` ,
null ,
10
) ;
return true ;
} else {
seen . set ( fn , count + 1 ) ;
}
}
}
const hmrDirtyComponents = /* @__PURE__ */ new Set ( ) ;
{
getGlobalThis ( ) . _ _VUE _HMR _RUNTIME _ _ = {
createRecord : tryWrap ( createRecord ) ,
rerender : tryWrap ( rerender ) ,
reload : tryWrap ( reload )
} ;
}
const map = /* @__PURE__ */ new Map ( ) ;
function createRecord ( id2 , initialDef ) {
if ( map . has ( id2 ) ) {
return false ;
}
map . set ( id2 , {
initialDef : normalizeClassComponent ( initialDef ) ,
instances : /* @__PURE__ */ new Set ( )
} ) ;
return true ;
}
function normalizeClassComponent ( component ) {
return isClassComponent$1 ( component ) ? component . _ _vccOpts : component ;
}
function rerender ( id2 , newRender ) {
const record = map . get ( id2 ) ;
if ( ! record ) {
return ;
}
record . initialDef . render = newRender ;
[ ... record . instances ] . forEach ( ( instance ) => {
if ( newRender ) {
instance . render = newRender ;
normalizeClassComponent ( instance . type ) . render = newRender ;
}
instance . renderCache = [ ] ;
instance . effect . dirty = true ;
instance . update ( ) ;
} ) ;
}
function reload ( id2 , newComp ) {
const record = map . get ( id2 ) ;
if ( ! record )
return ;
newComp = normalizeClassComponent ( newComp ) ;
updateComponentDef ( record . initialDef , newComp ) ;
const instances = [ ... record . instances ] ;
for ( const instance of instances ) {
const oldComp = normalizeClassComponent ( instance . type ) ;
if ( ! hmrDirtyComponents . has ( oldComp ) ) {
if ( oldComp !== record . initialDef ) {
updateComponentDef ( oldComp , newComp ) ;
}
hmrDirtyComponents . add ( oldComp ) ;
}
instance . appContext . propsCache . delete ( instance . type ) ;
instance . appContext . emitsCache . delete ( instance . type ) ;
instance . appContext . optionsCache . delete ( instance . type ) ;
if ( instance . ceReload ) {
hmrDirtyComponents . add ( oldComp ) ;
instance . ceReload ( newComp . styles ) ;
hmrDirtyComponents . delete ( oldComp ) ;
} else if ( instance . parent ) {
instance . parent . effect . dirty = true ;
queueJob$1 ( instance . parent . update ) ;
} else if ( instance . appContext . reload ) {
instance . appContext . reload ( ) ;
} else if ( typeof window !== "undefined" ) {
window . location . reload ( ) ;
} else {
console . warn (
"[HMR] Root or manually mounted instance modified. Full reload required."
) ;
}
}
queuePostFlushCb$1 ( ( ) => {
for ( const instance of instances ) {
hmrDirtyComponents . delete (
normalizeClassComponent ( instance . type )
) ;
}
} ) ;
}
function updateComponentDef ( oldComp , newComp ) {
extend ( oldComp , newComp ) ;
for ( const key in oldComp ) {
if ( key !== "__file" && ! ( key in newComp ) ) {
delete oldComp [ key ] ;
}
}
}
function tryWrap ( fn ) {
return ( id2 , arg ) => {
try {
return fn ( id2 , arg ) ;
} catch ( e2 ) {
console . error ( e2 ) ;
console . warn (
` [HMR] Something went wrong during Vue component hot-reload. Full reload required. `
) ;
}
} ;
}
{
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 ) ;
} ;
} ;
registerGlobalSetter (
` __VUE_INSTANCE_SETTERS__ ` ,
( v ) => v
) ;
registerGlobalSetter (
` __VUE_SSR_SETTERS__ ` ,
( v ) => v
) ;
}
const classifyRE$1 = /(?:^|[-_])(\w)/g ;
const classify$1 = ( str ) => str . replace ( classifyRE$1 , ( c2 ) => c2 . toUpperCase ( ) ) . replace ( /[-_]/g , "" ) ;
function getComponentName$1 ( Component2 , includeInferred = true ) {
return isFunction ( Component2 ) ? Component2 . displayName || Component2 . name : Component2 . name || includeInferred && Component2 . _ _name ;
}
function formatComponentName$1 ( instance , Component2 , isRoot = false ) {
let name = getComponentName$1 ( Component2 ) ;
if ( ! name && Component2 . _ _file ) {
const match = Component2 . _ _file . match ( /([^/\\]+)\.\w+$/ ) ;
if ( match ) {
name = match [ 1 ] ;
}
}
if ( ! name && instance && instance . parent ) {
const inferFromRegistry = ( registry ) => {
for ( const key in registry ) {
if ( registry [ key ] === Component2 ) {
return key ;
}
}
} ;
name = inferFromRegistry (
instance . components || instance . parent . type . components
) || inferFromRegistry ( instance . appContext . components ) ;
}
return name ? classify$1 ( name ) : isRoot ? ` App ` : ` Anonymous ` ;
}
function isClassComponent$1 ( value ) {
return isFunction ( value ) && "__vccOpts" in value ;
}
/ * *
* @ dcloudio / uni - mp - vue v3 . 4.21
* ( c ) 2018 - present Yuxi ( Evan ) You and Vue contributors
* @ license MIT
* * /
function warn$2 ( msg , ... args ) {
console . warn ( ` [Vue warn] ${ msg } ` , ... args ) ;
}
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 ;
}
} else {
warn$2 ( ` cannot run an inactive effect scope. ` ) ;
}
}
/ * *
* This should only be called on non - detached scopes
* @ internal
* /
on ( ) {
activeEffectScope = this ;
}
/ * *
* This should only be called on non - detached scopes
* @ internal
* /
off ( ) {
activeEffectScope = this . parent ;
}
stop ( fromParent ) {
if ( this . _active ) {
let i , l ;
for ( i = 0 , l = this . effects . length ; i < l ; i ++ ) {
this . effects [ i ] . stop ( ) ;
}
for ( i = 0 , l = this . cleanups . length ; i < l ; i ++ ) {
this . cleanups [ i ] ( ) ;
}
if ( this . scopes ) {
for ( i = 0 , l = this . scopes . length ; i < l ; i ++ ) {
this . scopes [ i ] . stop ( true ) ;
}
}
if ( ! this . detached && this . parent && ! fromParent ) {
const last = this . parent . scopes . pop ( ) ;
if ( last && last !== this ) {
this . parent . scopes [ this . index ] = last ;
last . index = this . index ;
}
}
this . parent = void 0 ;
this . _active = false ;
}
}
}
2024-12-10 07:02:06 +00:00
function effectScope ( detached ) {
return new EffectScope ( detached ) ;
}
2024-10-17 05:04:16 +00:00
function recordEffectScope ( effect2 , scope = activeEffectScope ) {
if ( scope && scope . active ) {
scope . effects . push ( effect2 ) ;
}
}
function getCurrentScope ( ) {
return activeEffectScope ;
}
2024-12-10 07:02:06 +00:00
function onScopeDispose ( fn ) {
if ( activeEffectScope ) {
activeEffectScope . cleanups . push ( fn ) ;
} else {
warn$2 (
` onScopeDispose() is called when there is no active effect scope to be associated with. `
) ;
}
}
2024-10-17 05:04:16 +00:00
let activeEffect ;
class ReactiveEffect2 {
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 ) {
var _a ;
if ( dep . get ( effect2 ) !== effect2 . _trackId ) {
dep . set ( effect2 , effect2 . _trackId ) ;
const oldDep = effect2 . deps [ effect2 . _depsLength ] ;
if ( oldDep !== dep ) {
if ( oldDep ) {
cleanupDepEffect ( oldDep , effect2 ) ;
}
effect2 . deps [ effect2 . _depsLength ++ ] = dep ;
} else {
effect2 . _depsLength ++ ;
}
{
( _a = effect2 . onTrack ) == null ? void 0 : _a . call ( effect2 , extend ( { effect : effect2 } , debuggerEventExtraInfo ) ) ;
}
}
}
const queueEffectSchedulers = [ ] ;
function triggerEffects ( dep , dirtyLevel , debuggerEventExtraInfo ) {
var _a ;
pauseScheduling ( ) ;
for ( const effect2 of dep . keys ( ) ) {
let tracking ;
if ( effect2 . _dirtyLevel < dirtyLevel && ( tracking != null ? tracking : tracking = dep . get ( effect2 ) === effect2 . _trackId ) ) {
effect2 . _shouldSchedule || ( effect2 . _shouldSchedule = effect2 . _dirtyLevel === 0 ) ;
effect2 . _dirtyLevel = dirtyLevel ;
}
if ( effect2 . _shouldSchedule && ( tracking != null ? tracking : tracking = dep . get ( effect2 ) === effect2 . _trackId ) ) {
{
( _a = effect2 . onTrigger ) == null ? void 0 : _a . call ( effect2 , extend ( { effect : effect2 } , debuggerEventExtraInfo ) ) ;
}
effect2 . trigger ( ) ;
if ( ( ! effect2 . _runnings || effect2 . allowRecurse ) && effect2 . _dirtyLevel !== 2 ) {
effect2 . _shouldSchedule = false ;
if ( effect2 . scheduler ) {
queueEffectSchedulers . push ( effect2 . scheduler ) ;
}
}
}
}
resetScheduling ( ) ;
}
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 ( "iterate" ) ;
const MAP _KEY _ITERATE _KEY = Symbol ( "Map key iterate" ) ;
function track ( target , type , key ) {
if ( shouldTrack && activeEffect ) {
let depsMap = targetMap . get ( target ) ;
if ( ! depsMap ) {
targetMap . set ( target , depsMap = /* @__PURE__ */ new Map ( ) ) ;
}
let dep = depsMap . get ( key ) ;
if ( ! dep ) {
depsMap . set ( key , dep = createDep ( ( ) => depsMap . delete ( key ) ) ) ;
}
trackEffect (
activeEffect ,
dep ,
{
target ,
type ,
key
}
) ;
}
}
function trigger ( target , type , key , newValue , oldValue , oldTarget ) {
const depsMap = targetMap . get ( target ) ;
if ( ! depsMap ) {
return ;
}
let deps = [ ] ;
if ( type === "clear" ) {
deps = [ ... depsMap . values ( ) ] ;
} else if ( key === "length" && isArray ( target ) ) {
const newLength = Number ( newValue ) ;
depsMap . forEach ( ( dep , key2 ) => {
if ( key2 === "length" || ! isSymbol ( key2 ) && key2 >= newLength ) {
deps . push ( dep ) ;
}
} ) ;
} else {
if ( key !== void 0 ) {
deps . push ( depsMap . get ( key ) ) ;
}
switch ( type ) {
case "add" :
if ( ! isArray ( target ) ) {
deps . push ( depsMap . get ( ITERATE _KEY ) ) ;
if ( isMap ( target ) ) {
deps . push ( depsMap . get ( MAP _KEY _ITERATE _KEY ) ) ;
}
} else if ( isIntegerKey ( key ) ) {
deps . push ( depsMap . get ( "length" ) ) ;
}
break ;
case "delete" :
if ( ! isArray ( target ) ) {
deps . push ( depsMap . get ( ITERATE _KEY ) ) ;
if ( isMap ( target ) ) {
deps . push ( depsMap . get ( MAP _KEY _ITERATE _KEY ) ) ;
}
}
break ;
case "set" :
if ( isMap ( target ) ) {
deps . push ( depsMap . get ( ITERATE _KEY ) ) ;
}
break ;
}
}
pauseScheduling ( ) ;
for ( const dep of deps ) {
if ( dep ) {
triggerEffects (
dep ,
4 ,
{
target ,
type ,
key ,
newValue ,
oldValue ,
oldTarget
}
) ;
}
}
resetScheduling ( ) ;
}
2024-12-10 07:02:06 +00:00
function getDepFromReactive ( object , key ) {
var _a ;
return ( _a = targetMap . get ( object ) ) == null ? void 0 : _a . get ( key ) ;
}
2024-10-17 05:04:16 +00:00
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 ) {
const obj = toRaw ( this ) ;
track ( obj , "has" , key ) ;
return obj . hasOwnProperty ( key ) ;
}
class BaseReactiveHandler2 {
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 ( res ) ) {
return isReadonly2 ? readonly ( res ) : reactive ( res ) ;
}
return res ;
}
}
class MutableReactiveHandler2 extends BaseReactiveHandler2 {
constructor ( isShallow2 = false ) {
super ( false , isShallow2 ) ;
}
set ( target , key , value , receiver ) {
let oldValue = target [ key ] ;
if ( ! this . _isShallow ) {
const isOldValueReadonly = isReadonly ( oldValue ) ;
if ( ! isShallow ( value ) && ! isReadonly ( value ) ) {
oldValue = toRaw ( oldValue ) ;
value = toRaw ( value ) ;
}
if ( ! isArray ( target ) && isRef ( oldValue ) && ! isRef ( value ) ) {
if ( isOldValueReadonly ) {
return false ;
} else {
oldValue . value = value ;
return true ;
}
}
}
const hadKey = isArray ( target ) && isIntegerKey ( key ) ? Number ( key ) < target . length : hasOwn ( target , key ) ;
const result = Reflect . set ( target , key , value , receiver ) ;
if ( target === toRaw ( receiver ) ) {
if ( ! hadKey ) {
trigger ( target , "add" , key , value ) ;
} else if ( hasChanged ( value , oldValue ) ) {
trigger ( target , "set" , key , value , oldValue ) ;
}
}
return result ;
}
deleteProperty ( target , key ) {
const hadKey = hasOwn ( target , key ) ;
const oldValue = target [ key ] ;
const result = Reflect . deleteProperty ( target , key ) ;
if ( result && hadKey ) {
trigger ( target , "delete" , key , void 0 , oldValue ) ;
}
return result ;
}
has ( target , key ) {
const result = Reflect . has ( target , key ) ;
if ( ! isSymbol ( key ) || ! builtInSymbols . has ( key ) ) {
track ( target , "has" , key ) ;
}
return result ;
}
ownKeys ( target ) {
track (
target ,
"iterate" ,
isArray ( target ) ? "length" : ITERATE _KEY
) ;
return Reflect . ownKeys ( target ) ;
}
}
class ReadonlyReactiveHandler2 extends BaseReactiveHandler2 {
constructor ( isShallow2 = false ) {
super ( true , isShallow2 ) ;
}
set ( target , key ) {
{
warn$2 (
` Set operation on key " ${ String ( key ) } " failed: target is readonly. ` ,
target
) ;
}
return true ;
}
deleteProperty ( target , key ) {
{
warn$2 (
` Delete operation on key " ${ String ( key ) } " failed: target is readonly. ` ,
target
) ;
}
return true ;
}
}
const mutableHandlers = /* @__PURE__ */ new MutableReactiveHandler2 ( ) ;
const readonlyHandlers = /* @__PURE__ */ new ReadonlyReactiveHandler2 ( ) ;
const shallowReactiveHandlers = /* @__PURE__ */ new MutableReactiveHandler2 (
true
) ;
const shallowReadonlyHandlers = /* @__PURE__ */ new ReadonlyReactiveHandler2 ( 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$1 ( key , value ) {
value = toRaw ( value ) ;
const target = toRaw ( this ) ;
const { has : has2 , get : get2 } = getProto ( target ) ;
let hadKey = has2 . call ( target , key ) ;
if ( ! hadKey ) {
key = toRaw ( key ) ;
hadKey = has2 . call ( target , key ) ;
} else {
checkIdentityKeys ( target , has2 , key ) ;
}
const oldValue = get2 . call ( target , key ) ;
target . set ( key , value ) ;
if ( ! hadKey ) {
trigger ( target , "add" , key , value ) ;
} else if ( hasChanged ( value , oldValue ) ) {
trigger ( target , "set" , key , value , oldValue ) ;
}
return this ;
}
function deleteEntry ( key ) {
const target = toRaw ( this ) ;
const { has : has2 , get : get2 } = getProto ( target ) ;
let hadKey = has2 . call ( target , key ) ;
if ( ! hadKey ) {
key = toRaw ( key ) ;
hadKey = has2 . call ( target , key ) ;
} else {
checkIdentityKeys ( target , has2 , key ) ;
}
const oldValue = get2 ? get2 . call ( target , key ) : void 0 ;
const result = target . delete ( key ) ;
if ( hadKey ) {
trigger ( target , "delete" , key , void 0 , oldValue ) ;
}
return result ;
}
function clear ( ) {
const target = toRaw ( this ) ;
const hadItems = target . size !== 0 ;
const oldTarget = isMap ( target ) ? new Map ( target ) : new Set ( target ) ;
const result = target . clear ( ) ;
if ( hadItems ) {
trigger ( target , "clear" , void 0 , void 0 , oldTarget ) ;
}
return result ;
}
function createForEach ( 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 ) {
{
const key = args [ 0 ] ? ` on key " ${ args [ 0 ] } " ` : ` ` ;
warn$2 (
` ${ capitalize ( type ) } operation ${ key } failed: target is readonly. ` ,
toRaw ( this )
) ;
}
return type === "delete" ? false : type === "clear" ? void 0 : this ;
} ;
}
function createInstrumentations ( ) {
const mutableInstrumentations2 = {
get ( key ) {
return get ( this , key ) ;
} ,
get size ( ) {
return size ( this ) ;
} ,
has ,
add ,
set : set$1 ,
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 : set$1 ,
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 )
} ;
function checkIdentityKeys ( target , has2 , key ) {
const rawKey = toRaw ( key ) ;
if ( rawKey !== key && has2 . call ( target , rawKey ) ) {
const type = toRawType ( target ) ;
warn$2 (
` Reactive ${ type } contains both the raw and reactive versions of the same object ${ type === ` Map ` ? ` as keys ` : ` ` } , which can lead to inconsistencies. Avoid differentiating between the raw and reactive versions of an object and only use the reactive version if possible. `
) ;
}
}
const reactiveMap = /* @__PURE__ */ new WeakMap ( ) ;
const shallowReactiveMap = /* @__PURE__ */ new WeakMap ( ) ;
const readonlyMap = /* @__PURE__ */ new WeakMap ( ) ;
const shallowReadonlyMap = /* @__PURE__ */ new WeakMap ( ) ;
function targetTypeMap ( rawType ) {
switch ( rawType ) {
case "Object" :
case "Array" :
return 1 ;
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 ( target ) ) {
{
warn$2 ( ` value cannot be made reactive: ${ String ( target ) } ` ) ;
}
return target ;
}
if ( target [ "__v_raw" ] && ! ( isReadonly2 && target [ "__v_isReactive" ] ) ) {
return target ;
}
const existingProxy = proxyMap . get ( target ) ;
if ( existingProxy ) {
return existingProxy ;
}
const targetType = getTargetType ( target ) ;
if ( targetType === 0 ) {
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" ] ) ;
}
2024-12-10 07:02:06 +00:00
function isProxy ( value ) {
return isReactive ( value ) || isReadonly ( value ) ;
}
2024-10-17 05:04:16 +00:00
function toRaw ( observed ) {
const raw = observed && observed [ "__v_raw" ] ;
return raw ? toRaw ( raw ) : observed ;
}
function markRaw ( value ) {
if ( Object . isExtensible ( value ) ) {
def ( value , "__v_skip" , true ) ;
}
return value ;
}
const toReactive = ( value ) => isObject ( value ) ? reactive ( value ) : value ;
const toReadonly = ( value ) => isObject ( value ) ? readonly ( value ) : value ;
const COMPUTED _SIDE _EFFECT _WARN = ` Computed is still dirty after getter evaluation, likely because a computed is mutating its own dependency in its getter. State mutations in computed getters should be avoided. Check the docs for more details: https://vuejs.org/guide/essentials/computed.html#getters-should-be-side-effect-free ` ;
class ComputedRefImpl {
constructor ( getter , _setter , isReadonly2 , isSSR ) {
this . getter = getter ;
this . _setter = _setter ;
this . dep = void 0 ;
this . _ _v _isRef = true ;
this [ "__v_isReadonly" ] = false ;
this . effect = new ReactiveEffect2 (
( ) => 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 ) {
if ( this . _warnRecursive ) {
warn$2 ( COMPUTED _SIDE _EFFECT _WARN , `
getter : ` , this.getter);
}
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 = ( ) => {
warn$2 ( "Write operation failed: computed value is readonly" ) ;
} ;
} else {
getter = getterOrOptions . get ;
setter = getterOrOptions . set ;
}
const cRef = new ComputedRefImpl ( getter , setter , onlyGetter || ! setter , isSSR ) ;
if ( debugOptions && ! isSSR ) {
cRef . effect . onTrack = debugOptions . onTrack ;
cRef . effect . onTrigger = debugOptions . onTrigger ;
}
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
) ,
{
target : ref2 ,
type : "get" ,
key : "value"
}
) ;
}
}
function triggerRefValue ( ref2 , dirtyLevel = 4 , newVal ) {
ref2 = toRaw ( ref2 ) ;
const dep = ref2 . dep ;
if ( dep ) {
triggerEffects (
dep ,
dirtyLevel ,
{
target : ref2 ,
type : "set" ,
key : "value" ,
newValue : newVal
}
) ;
}
}
function isRef ( r2 ) {
return ! ! ( r2 && r2 . _ _v _isRef === true ) ;
}
function ref ( value ) {
return createRef ( value , false ) ;
}
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 , newVal ) ;
}
}
}
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 ) ;
}
2024-12-10 07:02:06 +00:00
function toRefs ( object ) {
if ( ! isProxy ( object ) ) {
warn$2 ( ` toRefs() expects a reactive object but received a plain one. ` ) ;
}
const ret = isArray ( object ) ? new Array ( object . length ) : { } ;
for ( const key in object ) {
ret [ key ] = propertyToRef ( object , key ) ;
}
return ret ;
}
class ObjectRefImpl {
constructor ( _object , _key , _defaultValue ) {
this . _object = _object ;
this . _key = _key ;
this . _defaultValue = _defaultValue ;
this . _ _v _isRef = true ;
}
get value ( ) {
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 ( source , key , defaultValue ) {
if ( isRef ( source ) ) {
return source ;
} else if ( isFunction ( source ) ) {
return new GetterRefImpl ( source ) ;
} else if ( isObject ( 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 ) ;
}
2024-10-17 05:04:16 +00:00
const stack = [ ] ;
function pushWarningContext ( vnode ) {
stack . push ( vnode ) ;
}
function popWarningContext ( ) {
stack . pop ( ) ;
}
function warn$1 ( msg , ... args ) {
pauseTracking ( ) ;
const instance = stack . length ? stack [ stack . length - 1 ] . component : null ;
const appWarnHandler = instance && instance . appContext . config . warnHandler ;
const trace = getComponentTrace ( ) ;
if ( appWarnHandler ) {
callWithErrorHandling (
appWarnHandler ,
instance ,
11 ,
[
msg + args . map ( ( a ) => {
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 ] ;
}
}
const ErrorTypeStrings = {
[ "sp" ] : "serverPrefetch hook" ,
[ "bc" ] : "beforeCreate hook" ,
[ "c" ] : "created hook" ,
[ "bm" ] : "beforeMount hook" ,
[ "m" ] : "mounted hook" ,
[ "bu" ] : "beforeUpdate hook" ,
[ "u" ] : "updated" ,
[ "bum" ] : "beforeUnmount hook" ,
[ "um" ] : "unmounted hook" ,
[ "a" ] : "activated hook" ,
[ "da" ] : "deactivated hook" ,
[ "ec" ] : "errorCaptured hook" ,
[ "rtc" ] : "renderTracked hook" ,
[ "rtg" ] : "renderTriggered hook" ,
[ 0 ] : "setup function" ,
[ 1 ] : "render function" ,
[ 2 ] : "watcher getter" ,
[ 3 ] : "watcher callback" ,
[ 4 ] : "watcher cleanup function" ,
[ 5 ] : "native event handler" ,
[ 6 ] : "component event handler" ,
[ 7 ] : "vnode hook" ,
[ 8 ] : "directive hook" ,
[ 9 ] : "transition hook" ,
[ 10 ] : "app errorHandler" ,
[ 11 ] : "app warnHandler" ,
[ 12 ] : "ref function" ,
[ 13 ] : "async component loader" ,
[ 14 ] : "scheduler flush. This is likely a Vue internals bug. Please open an issue at https://github.com/vuejs/core ."
} ;
function callWithErrorHandling ( fn , instance , type , args ) {
try {
return args ? fn ( ... args ) : fn ( ) ;
} catch ( err ) {
handleError ( err , instance , type ) ;
}
}
function callWithAsyncErrorHandling ( fn , instance , type , args ) {
if ( isFunction ( fn ) ) {
const res = callWithErrorHandling ( fn , instance , type , args ) ;
if ( res && isPromise ( res ) ) {
res . catch ( ( err ) => {
handleError ( err , instance , type ) ;
} ) ;
}
return res ;
}
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 = ErrorTypeStrings [ type ] || 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 ) {
callWithErrorHandling (
appErrorHandler ,
null ,
10 ,
[ err , exposedInstance , errorInfo ]
) ;
return ;
}
}
logError ( err , type , contextVNode , throwInDev ) ;
}
function logError ( err , type , contextVNode , throwInDev = true ) {
{
const info = ErrorTypeStrings [ type ] || type ;
if ( contextVNode ) {
pushWarningContext ( contextVNode ) ;
}
warn$1 ( ` Unhandled error ${ info ? ` during execution of ${ info } ` : ` ` } ` ) ;
if ( contextVNode ) {
popWarningContext ( ) ;
}
if ( throwInDev ) {
console . error ( err ) ;
} else {
console . error ( err ) ;
}
}
}
let isFlushing = false ;
let isFlushPending = false ;
const queue = [ ] ;
let flushIndex = 0 ;
const pendingPostFlushCbs = [ ] ;
let activePostFlushCbs = null ;
let postFlushIndex = 0 ;
const resolvedPromise = /* @__PURE__ */ Promise . resolve ( ) ;
let currentFlushPromise = null ;
const RECURSION _LIMIT = 100 ;
function nextTick$1 ( fn ) {
const p2 = currentFlushPromise || resolvedPromise ;
return fn ? p2 . then ( this ? fn . bind ( this ) : fn ) : p2 ;
}
function findInsertionIndex ( id2 ) {
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 < id2 || middleJobId === id2 && 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 hasQueueJob ( job ) {
return queue . indexOf ( job ) > - 1 ;
}
function invalidateJob ( job ) {
const i = queue . indexOf ( job ) ;
if ( i > flushIndex ) {
queue . splice ( i , 1 ) ;
}
}
function queuePostFlushCb ( cb ) {
if ( ! isArray ( cb ) ) {
if ( ! activePostFlushCbs || ! activePostFlushCbs . includes (
cb ,
cb . allowRecurse ? postFlushIndex + 1 : postFlushIndex
) ) {
pendingPostFlushCbs . push ( cb ) ;
}
} else {
pendingPostFlushCbs . push ( ... cb ) ;
}
queueFlush ( ) ;
}
function flushPreFlushCbs ( instance , seen , i = isFlushing ? flushIndex + 1 : 0 ) {
{
seen = seen || /* @__PURE__ */ new Map ( ) ;
}
for ( ; i < queue . length ; i ++ ) {
const cb = queue [ i ] ;
if ( cb && cb . pre ) {
if ( instance && cb . id !== instance . uid ) {
continue ;
}
if ( checkRecursiveUpdates ( seen , cb ) ) {
continue ;
}
queue . splice ( i , 1 ) ;
i -- ;
cb ( ) ;
}
}
}
function flushPostFlushCbs ( seen ) {
if ( pendingPostFlushCbs . length ) {
const deduped = [ ... new Set ( pendingPostFlushCbs ) ] . sort (
( a , b ) => getId ( a ) - getId ( b )
) ;
pendingPostFlushCbs . length = 0 ;
if ( activePostFlushCbs ) {
activePostFlushCbs . push ( ... deduped ) ;
return ;
}
activePostFlushCbs = deduped ;
{
seen = seen || /* @__PURE__ */ new Map ( ) ;
}
for ( postFlushIndex = 0 ; postFlushIndex < activePostFlushCbs . length ; postFlushIndex ++ ) {
if ( checkRecursiveUpdates ( seen , activePostFlushCbs [ postFlushIndex ] ) ) {
continue ;
}
activePostFlushCbs [ postFlushIndex ] ( ) ;
}
activePostFlushCbs = null ;
postFlushIndex = 0 ;
}
}
const getId = ( job ) => job . id == null ? Infinity : job . id ;
const comparator = ( a , b ) => {
const diff2 = getId ( a ) - getId ( b ) ;
if ( diff2 === 0 ) {
if ( a . pre && ! b . pre )
return - 1 ;
if ( b . pre && ! a . pre )
return 1 ;
}
return diff2 ;
} ;
function flushJobs ( seen ) {
isFlushPending = false ;
isFlushing = true ;
{
seen = seen || /* @__PURE__ */ new Map ( ) ;
}
queue . sort ( comparator ) ;
const check = ( job ) => checkRecursiveUpdates ( seen , job ) ;
try {
for ( flushIndex = 0 ; flushIndex < queue . length ; flushIndex ++ ) {
const job = queue [ flushIndex ] ;
if ( job && job . active !== false ) {
if ( check ( job ) ) {
continue ;
}
callWithErrorHandling ( job , null , 14 ) ;
}
}
} finally {
flushIndex = 0 ;
queue . length = 0 ;
flushPostFlushCbs ( seen ) ;
isFlushing = false ;
currentFlushPromise = null ;
if ( queue . length || pendingPostFlushCbs . length ) {
flushJobs ( seen ) ;
}
}
}
function checkRecursiveUpdates ( seen , fn ) {
if ( ! seen . has ( fn ) ) {
seen . set ( fn , 1 ) ;
} else {
const count = seen . get ( fn ) ;
if ( count > RECURSION _LIMIT ) {
const instance = fn . ownerInstance ;
const componentName = instance && getComponentName ( instance . type ) ;
handleError (
` Maximum recursive updates exceeded ${ componentName ? ` in component < ${ componentName } > ` : ` ` } . This means you have a reactive effect that is mutating its own dependencies and thus recursively triggering itself. Possible sources include component template, render function, updated hook or watcher source function. ` ,
null ,
10
) ;
return true ;
} else {
seen . set ( fn , count + 1 ) ;
}
}
}
let devtools ;
let buffer = [ ] ;
let devtoolsNotInstalled = false ;
function emit$1 ( event , ... args ) {
if ( devtools ) {
devtools . emit ( event , ... args ) ;
} else if ( ! devtoolsNotInstalled ) {
buffer . push ( { event , args } ) ;
}
}
function setDevtoolsHook ( hook , target ) {
var _a , _b ;
devtools = hook ;
if ( devtools ) {
devtools . enabled = true ;
buffer . forEach ( ( { event , args } ) => devtools . emit ( event , ... args ) ) ;
buffer = [ ] ;
} else if (
// handle late devtools injection - only do this if we are in an actual
// browser environment to avoid the timer handle stalling test runner exit
// (#4815)
typeof window !== "undefined" && // some envs mock window but not fully
window . HTMLElement && // also exclude jsdom
! ( ( _b = ( _a = window . navigator ) == null ? void 0 : _a . userAgent ) == null ? void 0 : _b . includes ( "jsdom" ) )
) {
const replay = target . _ _VUE _DEVTOOLS _HOOK _REPLAY _ _ = target . _ _VUE _DEVTOOLS _HOOK _REPLAY _ _ || [ ] ;
replay . push ( ( newHook ) => {
setDevtoolsHook ( newHook , target ) ;
} ) ;
setTimeout ( ( ) => {
if ( ! devtools ) {
target . _ _VUE _DEVTOOLS _HOOK _REPLAY _ _ = null ;
devtoolsNotInstalled = true ;
buffer = [ ] ;
}
} , 3e3 ) ;
} else {
devtoolsNotInstalled = true ;
buffer = [ ] ;
}
}
function devtoolsInitApp ( app , version2 ) {
emit$1 ( "app:init" , app , version2 , {
Fragment ,
Text ,
Comment ,
Static
} ) ;
}
const devtoolsComponentAdded = /* @__PURE__ */ createDevtoolsComponentHook (
"component:added"
/* COMPONENT_ADDED */
) ;
const devtoolsComponentUpdated = /* @__PURE__ */ createDevtoolsComponentHook (
"component:updated"
/* COMPONENT_UPDATED */
) ;
const _devtoolsComponentRemoved = /* @__PURE__ */ createDevtoolsComponentHook (
"component:removed"
/* COMPONENT_REMOVED */
) ;
const devtoolsComponentRemoved = ( component ) => {
if ( devtools && typeof devtools . cleanupBuffer === "function" && // remove the component if it wasn't buffered
! devtools . cleanupBuffer ( component ) ) {
_devtoolsComponentRemoved ( component ) ;
}
} ;
/*! #__NO_SIDE_EFFECTS__ */
// @__NO_SIDE_EFFECTS__
function createDevtoolsComponentHook ( hook ) {
return ( component ) => {
emit$1 (
hook ,
component . appContext . app ,
component . uid ,
// fixed by xxxxxx
// 为 0 是 App, 无 parent 是 Page 指向 App
component . uid === 0 ? void 0 : component . parent ? component . parent . uid : 0 ,
component
) ;
} ;
}
const devtoolsPerfStart = /* @__PURE__ */ createDevtoolsPerformanceHook (
"perf:start"
/* PERFORMANCE_START */
) ;
const devtoolsPerfEnd = /* @__PURE__ */ createDevtoolsPerformanceHook (
"perf:end"
/* PERFORMANCE_END */
) ;
function createDevtoolsPerformanceHook ( hook ) {
return ( component , type , time ) => {
emit$1 ( hook , component . appContext . app , component . uid , component , type , time ) ;
} ;
}
function devtoolsComponentEmit ( component , event , params ) {
emit$1 (
"component:emit" ,
component . appContext . app ,
component ,
event ,
params
) ;
}
function emit ( instance , event , ... rawArgs ) {
if ( instance . isUnmounted )
return ;
const props = instance . vnode . props || EMPTY _OBJ ;
{
const {
emitsOptions ,
propsOptions : [ propsOptions ]
} = instance ;
if ( emitsOptions ) {
if ( ! ( event in emitsOptions ) && true ) {
if ( ! propsOptions || ! ( toHandlerKey ( event ) in propsOptions ) ) {
warn$1 (
` Component emitted event " ${ event } " but it is neither declared in the emits option nor as an " ${ toHandlerKey ( event ) } " prop. `
) ;
}
} else {
const validator = emitsOptions [ event ] ;
if ( isFunction ( validator ) ) {
const isValid = validator ( ... rawArgs ) ;
if ( ! isValid ) {
warn$1 (
` Invalid event arguments: event validation failed for event " ${ event } ". `
) ;
}
}
}
}
}
let args = rawArgs ;
const 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 ) ;
}
}
{
devtoolsComponentEmit ( instance , event , args ) ;
}
{
const lowerCaseEvent = event . toLowerCase ( ) ;
if ( lowerCaseEvent !== event && props [ toHandlerKey ( lowerCaseEvent ) ] ) {
warn$1 (
` Event " ${ lowerCaseEvent } " is emitted in component ${ formatComponentName (
instance ,
instance . type
) } but the handler is registered for "${event}" . Note that HTML attributes are case - insensitive and you cannot use v - on to listen to camelCase events when using in - DOM templates . You should probably use " $ { hyphenate (
event
) } " instead of " $ { event } " . `
) ;
}
}
let handlerName ;
let handler = props [ handlerName = toHandlerKey ( event ) ] || // also try camelCase event handler (#2249)
props [ handlerName = toHandlerKey ( camelize ( event ) ) ] ;
if ( ! handler && 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 ( comp ) ) {
cache . set ( comp , null ) ;
}
return null ;
}
if ( isArray ( raw ) ) {
raw . forEach ( ( key ) => normalized [ key ] = null ) ;
} else {
extend ( normalized , raw ) ;
}
if ( isObject ( comp ) ) {
cache . set ( comp , normalized ) ;
}
return normalized ;
}
function isEmitListener ( options , key ) {
if ( ! options || ! isOn ( key ) ) {
return false ;
}
key = key . slice ( 2 ) . replace ( /Once$/ , "" ) ;
return hasOwn ( options , key [ 0 ] . toLowerCase ( ) + key . slice ( 1 ) ) || hasOwn ( options , hyphenate ( key ) ) || hasOwn ( options , key ) ;
}
let currentRenderingInstance = null ;
function setCurrentRenderingInstance ( instance ) {
const prev = currentRenderingInstance ;
currentRenderingInstance = instance ;
instance && instance . type . _ _scopeId || null ;
return prev ;
}
2024-12-10 07:02:06 +00:00
const COMPONENTS = "components" ;
function resolveComponent ( name , maybeSelfReference ) {
return resolveAsset ( COMPONENTS , name , true , maybeSelfReference ) || name ;
}
function resolveAsset ( type , name , warnMissing = true , maybeSelfReference = false ) {
const instance = currentRenderingInstance || currentInstance ;
if ( instance ) {
const Component2 = instance . type ;
if ( type === COMPONENTS ) {
const selfName = getComponentName (
Component2 ,
false
) ;
if ( selfName && ( selfName === name || selfName === camelize ( name ) || selfName === capitalize ( camelize ( name ) ) ) ) {
return Component2 ;
}
}
const res = (
// local registration
// check instance[type] first which is resolved for options API
resolve ( instance [ type ] || Component2 [ type ] , name ) || // global registration
resolve ( instance . appContext [ type ] , name )
) ;
if ( ! res && maybeSelfReference ) {
return Component2 ;
}
if ( warnMissing && ! res ) {
const extra = type === COMPONENTS ? `
If this is a native custom element , make sure to exclude it from component resolution via compilerOptions . isCustomElement . ` : ` ` ;
warn$1 ( ` Failed to resolve ${ type . slice ( 0 , - 1 ) } : ${ name } ${ extra } ` ) ;
}
return res ;
} else {
warn$1 (
` resolve ${ capitalize ( type . slice ( 0 , - 1 ) ) } can only be used in render() or setup(). `
) ;
}
}
function resolve ( registry , name ) {
return registry && ( registry [ name ] || registry [ camelize ( name ) ] || registry [ capitalize ( camelize ( name ) ) ] ) ;
}
2024-10-17 05:04:16 +00:00
const INITIAL _WATCHER _VALUE = { } ;
function watch ( source , cb , options ) {
if ( ! isFunction ( cb ) ) {
warn$1 (
` \` watch(fn, options?) \` signature has been moved to a separate API. Use \` watchEffect(fn, options?) \` instead. \` watch \` now only supports \` watch(source, cb, options?) signature. `
) ;
}
return doWatch ( source , cb , options ) ;
}
function doWatch ( source , cb , {
immediate ,
deep ,
flush ,
once : once2 ,
onTrack ,
onTrigger
} = EMPTY _OBJ ) {
if ( cb && once2 ) {
const _cb = cb ;
cb = ( ... args ) => {
_cb ( ... args ) ;
unwatch ( ) ;
} ;
}
if ( deep !== void 0 && typeof deep === "number" ) {
warn$1 (
` watch() "deep" option with number value will be used as watch depth in future versions. Please use a boolean instead to avoid potential breakage. `
) ;
}
if ( ! cb ) {
if ( immediate !== void 0 ) {
warn$1 (
` watch() "immediate" option is only respected when using the watch(source, callback, options?) signature. `
) ;
}
if ( deep !== void 0 ) {
warn$1 (
` watch() "deep" option is only respected when using the watch(source, callback, options?) signature. `
) ;
}
if ( once2 !== void 0 ) {
warn$1 (
` watch() "once" option is only respected when using the watch(source, callback, options?) signature. `
) ;
}
}
const warnInvalidSource = ( s2 ) => {
warn$1 (
` Invalid watch source: ` ,
s2 ,
` A watch source can only be a getter/effect function, a ref, a reactive object, or an array of these types. `
) ;
} ;
const instance = currentInstance ;
const reactiveGetter = ( source2 ) => deep === true ? source2 : (
// for deep: false, only traverse root-level properties
traverse ( source2 , deep === false ? 1 : void 0 )
) ;
let getter ;
let forceTrigger = false ;
let isMultiSource = false ;
if ( isRef ( source ) ) {
getter = ( ) => source . value ;
forceTrigger = isShallow ( source ) ;
} else if ( isReactive ( source ) ) {
getter = ( ) => reactiveGetter ( source ) ;
forceTrigger = true ;
} else if ( isArray ( source ) ) {
isMultiSource = true ;
forceTrigger = source . some ( ( s2 ) => isReactive ( s2 ) || isShallow ( s2 ) ) ;
getter = ( ) => source . map ( ( s2 ) => {
if ( isRef ( s2 ) ) {
return s2 . value ;
} else if ( isReactive ( s2 ) ) {
return reactiveGetter ( s2 ) ;
} else if ( isFunction ( s2 ) ) {
return callWithErrorHandling ( s2 , instance , 2 ) ;
} else {
warnInvalidSource ( s2 ) ;
}
} ) ;
} else if ( isFunction ( source ) ) {
if ( cb ) {
getter = ( ) => callWithErrorHandling ( source , instance , 2 ) ;
} else {
getter = ( ) => {
if ( cleanup ) {
cleanup ( ) ;
}
return callWithAsyncErrorHandling (
source ,
instance ,
3 ,
[ onCleanup ]
) ;
} ;
}
} else {
getter = NOOP ;
warnInvalidSource ( source ) ;
}
if ( cb && deep ) {
const baseGetter = getter ;
getter = ( ) => traverse ( baseGetter ( ) ) ;
}
let cleanup ;
let onCleanup = ( fn ) => {
cleanup = effect2 . onStop = ( ) => {
callWithErrorHandling ( fn , instance , 4 ) ;
cleanup = effect2 . onStop = void 0 ;
} ;
} ;
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$1 ( job , instance && instance . suspense ) ;
} else {
job . pre = true ;
if ( instance )
job . id = instance . uid ;
scheduler = ( ) => queueJob ( job ) ;
}
const effect2 = new ReactiveEffect2 ( getter , NOOP , scheduler ) ;
const scope = getCurrentScope ( ) ;
const unwatch = ( ) => {
effect2 . stop ( ) ;
if ( scope ) {
remove ( scope . effects , effect2 ) ;
}
} ;
{
effect2 . onTrack = onTrack ;
effect2 . onTrigger = onTrigger ;
}
if ( cb ) {
if ( immediate ) {
job ( ) ;
} else {
oldValue = effect2 . run ( ) ;
}
} else if ( flush === "post" ) {
queuePostRenderEffect$1 (
effect2 . run . bind ( effect2 ) ,
instance && instance . suspense
) ;
} else {
effect2 . run ( ) ;
}
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 , seen ) {
if ( ! isObject ( value ) || value [ "__v_skip" ] ) {
return value ;
}
if ( depth && depth > 0 ) {
if ( currentDepth >= depth ) {
return value ;
}
currentDepth ++ ;
}
seen = seen || /* @__PURE__ */ new Set ( ) ;
if ( seen . has ( value ) ) {
return value ;
}
seen . add ( value ) ;
if ( isRef ( value ) ) {
traverse ( value . value , depth , currentDepth , seen ) ;
} else if ( isArray ( value ) ) {
for ( let i = 0 ; i < value . length ; i ++ ) {
traverse ( value [ i ] , depth , currentDepth , seen ) ;
}
} else if ( isSet ( value ) || isMap ( value ) ) {
value . forEach ( ( v ) => {
traverse ( v , depth , currentDepth , seen ) ;
} ) ;
2024-12-10 07:02:06 +00:00
} else if ( isPlainObject$1 ( value ) ) {
2024-10-17 05:04:16 +00:00
for ( const key in value ) {
traverse ( value [ key ] , depth , currentDepth , seen ) ;
}
}
return value ;
}
function validateDirectiveName ( name ) {
if ( isBuiltInDirective ( name ) ) {
warn$1 ( "Do not use built-in directive ids as custom directive id: " + name ) ;
}
}
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 ( rootProps ) ) {
warn$1 ( ` root props passed to app.mount() must be an object. ` ) ;
rootProps = null ;
}
const context = createAppContext ( ) ;
const installedPlugins = /* @__PURE__ */ new WeakSet ( ) ;
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 ) {
{
warn$1 (
` app.config cannot be replaced. Modify individual options instead. `
) ;
}
} ,
use ( plugin2 , ... options ) {
if ( installedPlugins . has ( plugin2 ) ) {
warn$1 ( ` Plugin has already been applied to target app. ` ) ;
} else if ( plugin2 && isFunction ( plugin2 . install ) ) {
installedPlugins . add ( plugin2 ) ;
plugin2 . install ( app , ... options ) ;
} else if ( isFunction ( plugin2 ) ) {
installedPlugins . add ( plugin2 ) ;
plugin2 ( app , ... options ) ;
} else {
warn$1 (
` A plugin must either be a function or an object with an "install" function. `
) ;
}
return app ;
} ,
mixin ( mixin ) {
{
if ( ! context . mixins . includes ( mixin ) ) {
context . mixins . push ( mixin ) ;
} else {
warn$1 (
"Mixin has already been applied to target app" + ( mixin . name ? ` : ${ mixin . name } ` : "" )
) ;
}
}
return app ;
} ,
component ( name , component ) {
{
validateComponentName ( name , context . config ) ;
}
if ( ! component ) {
return context . components [ name ] ;
}
if ( context . components [ name ] ) {
warn$1 ( ` Component " ${ name } " has already been registered in target app. ` ) ;
}
context . components [ name ] = component ;
return app ;
} ,
directive ( name , directive ) {
{
validateDirectiveName ( name ) ;
}
if ( ! directive ) {
return context . directives [ name ] ;
}
if ( context . directives [ name ] ) {
warn$1 ( ` Directive " ${ name } " has already been registered in target app. ` ) ;
}
context . directives [ name ] = directive ;
return app ;
} ,
// fixed by xxxxxx
mount ( ) {
} ,
// fixed by xxxxxx
unmount ( ) {
} ,
provide ( key , value ) {
if ( key in context . provides ) {
warn$1 (
` App already provides property with key " ${ String ( key ) } ". It will be overwritten with the new 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 ) {
{
warn$1 ( ` provide() can only be used inside setup(). ` ) ;
}
} else {
let provides = currentInstance . provides ;
const parentProvides = currentInstance . parent && currentInstance . parent . provides ;
if ( parentProvides === provides ) {
provides = currentInstance . provides = Object . create ( parentProvides ) ;
}
provides [ key ] = value ;
if ( currentInstance . type . mpType === "app" ) {
currentInstance . appContext . app . provide ( key , value ) ;
}
}
}
function inject ( key , defaultValue , 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 {
warn$1 ( ` injection " ${ String ( key ) } " not found. ` ) ;
}
} else {
warn$1 ( ` inject() can only be used inside setup() or functional components. ` ) ;
}
}
2024-12-10 07:02:06 +00:00
function hasInjectionContext ( ) {
return ! ! ( currentInstance || currentRenderingInstance || currentApp ) ;
}
/*! #__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 ;
}
2024-10-17 05:04:16 +00:00
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 ) {
if ( isRootHook ( type ) ) {
target = target . root ;
}
const hooks = target [ type ] || ( target [ type ] = [ ] ) ;
const wrappedHook = hook . _ _weh || ( hook . _ _weh = ( ... args ) => {
if ( target . isUnmounted ) {
return ;
}
pauseTracking ( ) ;
const reset = setCurrentInstance ( target ) ;
const res = callWithAsyncErrorHandling ( hook , target , type , args ) ;
reset ( ) ;
resetTracking ( ) ;
return res ;
} ) ;
if ( prepend ) {
hooks . unshift ( wrappedHook ) ;
} else {
hooks . push ( wrappedHook ) ;
}
return wrappedHook ;
} else {
const apiName = toHandlerKey (
( ErrorTypeStrings [ type ] || type . replace ( /^on/ , "" ) ) . replace ( / hook$/ , "" )
) ;
warn$1 (
` ${ apiName } is called when there is no active component instance to be associated with. Lifecycle injection APIs can only be used during execution of setup(). `
) ;
}
}
2024-12-10 07:02:06 +00:00
const createHook$1 = ( lifecycle ) => ( hook , target = currentInstance ) => (
2024-10-17 05:04:16 +00:00
// post-create lifecycle registrations are noops during SSR (except for serverPrefetch)
( ! isInSSRComponentSetup || lifecycle === "sp" ) && injectHook ( lifecycle , ( ... args ) => hook ( ... args ) , target )
) ;
2024-12-10 07:02:06 +00:00
const onBeforeMount = createHook$1 ( "bm" ) ;
const onMounted = createHook$1 ( "m" ) ;
const onBeforeUpdate = createHook$1 ( "bu" ) ;
const onUpdated = createHook$1 ( "u" ) ;
const onBeforeUnmount = createHook$1 ( "bum" ) ;
const onUnmounted = createHook$1 ( "um" ) ;
const onServerPrefetch = createHook$1 ( "sp" ) ;
const onRenderTriggered = createHook$1 (
2024-10-17 05:04:16 +00:00
"rtg"
) ;
2024-12-10 07:02:06 +00:00
const onRenderTracked = createHook$1 (
2024-10-17 05:04:16 +00:00
"rtc"
) ;
function onErrorCaptured ( hook , target = currentInstance ) {
injectHook ( "ec" , hook , target ) ;
}
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 ,
// fixed by xxxxxx vue-i18n 在 dev 模式,访问了 $el, 故模拟一个假的
// $el: i => i.vnode.el,
$el : ( i ) => i . _ _$el || ( i . _ _$el = { } ) ,
$data : ( i ) => i . data ,
$props : ( i ) => shallowReadonly ( i . props ) ,
$attrs : ( i ) => shallowReadonly ( i . attrs ) ,
$slots : ( i ) => shallowReadonly ( i . slots ) ,
$refs : ( i ) => shallowReadonly ( i . refs ) ,
$parent : ( i ) => getPublicInstance ( i . parent ) ,
$root : ( i ) => getPublicInstance ( i . root ) ,
$emit : ( i ) => i . emit ,
$options : ( i ) => resolveMergedOptions ( i ) ,
$forceUpdate : ( i ) => i . f || ( i . f = ( ) => {
i . effect . dirty = true ;
queueJob ( i . update ) ;
} ) ,
// $nextTick: i => i.n || (i.n = nextTick.bind(i.proxy!)),// fixed by xxxxxx
$watch : ( i ) => instanceWatch . bind ( i )
} )
) ;
const isReservedPrefix = ( key ) => key === "_" || key === "$" ;
const hasSetupBinding = ( state , key ) => state !== EMPTY _OBJ && ! state . _ _isScriptSetup && hasOwn ( state , key ) ;
const PublicInstanceProxyHandlers = {
get ( { _ : instance } , key ) {
const { ctx , setupState , data , props , accessCache , type , appContext } = instance ;
if ( key === "__isVue" ) {
return true ;
}
let normalizedProps ;
if ( key [ 0 ] !== "$" ) {
const n2 = accessCache [ key ] ;
if ( n2 !== void 0 ) {
switch ( n2 ) {
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 , "get" , key ) ;
} else if ( key === "$slots" ) {
track ( instance , "get" , key ) ;
}
return publicGetter ( instance ) ;
} else if (
// css module (injected by vue-loader)
( cssModule = type . _ _cssModules ) && ( cssModule = cssModule [ key ] )
) {
return cssModule ;
} else if ( ctx !== EMPTY _OBJ && hasOwn ( ctx , key ) ) {
accessCache [ key ] = 4 ;
return ctx [ key ] ;
} else if (
// global properties
globalProperties = appContext . config . globalProperties , hasOwn ( globalProperties , key )
) {
{
return globalProperties [ key ] ;
}
} else if ( currentRenderingInstance && ( ! isString ( key ) || // #1091 avoid internal isRef/isVNode checks on component instance leading
// to infinite warning loop
key . indexOf ( "__v" ) !== 0 ) ) {
if ( data !== EMPTY _OBJ && isReservedPrefix ( key [ 0 ] ) && hasOwn ( data , key ) ) {
warn$1 (
` Property ${ JSON . stringify (
key
) } must be accessed via $data because it starts with a reserved character ( "$" or "_" ) and is not proxied on the render context . `
) ;
} else if ( instance === currentRenderingInstance ) {
warn$1 (
` Property ${ JSON . stringify ( key ) } was accessed during render but is not defined on instance. `
) ;
}
}
} ,
set ( { _ : instance } , key , value ) {
const { data , setupState , ctx } = instance ;
if ( hasSetupBinding ( setupState , key ) ) {
setupState [ key ] = value ;
return true ;
} else if ( setupState . _ _isScriptSetup && hasOwn ( setupState , key ) ) {
warn$1 ( ` Cannot mutate <script setup> binding " ${ key } " from Options API. ` ) ;
return false ;
} else if ( data !== EMPTY _OBJ && hasOwn ( data , key ) ) {
data [ key ] = value ;
return true ;
} else if ( hasOwn ( instance . props , key ) ) {
warn$1 ( ` Attempting to mutate prop " ${ key } ". Props are readonly. ` ) ;
return false ;
}
if ( key [ 0 ] === "$" && key . slice ( 1 ) in instance ) {
warn$1 (
` Attempting to mutate public property " ${ key } ". Properties starting with $ are reserved and readonly. `
) ;
return false ;
} else {
if ( key in instance . appContext . config . globalProperties ) {
Object . defineProperty ( ctx , key , {
enumerable : true ,
configurable : true ,
value
} ) ;
} 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 ) ;
}
} ;
{
PublicInstanceProxyHandlers . ownKeys = ( target ) => {
warn$1 (
` Avoid app logic that relies on enumerating keys on a component instance. The keys will be empty in production mode to avoid performance overhead. `
) ;
return Reflect . ownKeys ( target ) ;
} ;
}
function createDevRenderContext ( instance ) {
const target = { } ;
Object . defineProperty ( target , ` _ ` , {
configurable : true ,
enumerable : false ,
get : ( ) => instance
} ) ;
Object . keys ( publicPropertiesMap ) . forEach ( ( key ) => {
Object . defineProperty ( target , key , {
configurable : true ,
enumerable : false ,
get : ( ) => publicPropertiesMap [ key ] ( instance ) ,
// intercepted by the proxy so no need for implementation,
// but needed to prevent set errors
set : NOOP
} ) ;
} ) ;
return target ;
}
function exposePropsOnRenderContext ( instance ) {
const {
ctx ,
propsOptions : [ propsOptions ]
} = instance ;
if ( propsOptions ) {
Object . keys ( propsOptions ) . forEach ( ( key ) => {
Object . defineProperty ( ctx , key , {
enumerable : true ,
configurable : true ,
get : ( ) => instance . props [ key ] ,
set : NOOP
} ) ;
} ) ;
}
}
function exposeSetupStateOnRenderContext ( instance ) {
const { ctx , setupState } = instance ;
Object . keys ( toRaw ( setupState ) ) . forEach ( ( key ) => {
if ( ! setupState . _ _isScriptSetup ) {
if ( isReservedPrefix ( key [ 0 ] ) ) {
warn$1 (
` setup() return property ${ JSON . stringify (
key
) } should not start with "$" or "_" which are reserved prefixes for Vue internals . `
) ;
return ;
}
Object . defineProperty ( ctx , key , {
enumerable : true ,
configurable : true ,
get : ( ) => setupState [ key ] ,
set : NOOP
} ) ;
}
} ) ;
}
function normalizePropsOrEmits ( props ) {
return isArray ( props ) ? props . reduce (
( normalized , p2 ) => ( normalized [ p2 ] = null , normalized ) ,
{ }
) : props ;
}
function createDuplicateChecker ( ) {
const cache = /* @__PURE__ */ Object . create ( null ) ;
return ( type , key ) => {
if ( cache [ key ] ) {
warn$1 ( ` ${ type } property " ${ key } " is already defined in ${ cache [ key ] } . ` ) ;
} else {
cache [ key ] = type ;
}
} ;
}
let shouldCacheAccess = true ;
function applyOptions$1 ( 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 = createDuplicateChecker ( ) ;
{
const [ propsOptions ] = instance . propsOptions ;
if ( propsOptions ) {
for ( const key in propsOptions ) {
checkDuplicateProperties ( "Props" , key ) ;
}
}
}
if ( injectOptions ) {
resolveInjections ( injectOptions , ctx , checkDuplicateProperties ) ;
}
if ( methods ) {
for ( const key in methods ) {
const methodHandler = methods [ key ] ;
if ( isFunction ( methodHandler ) ) {
{
Object . defineProperty ( ctx , key , {
value : methodHandler . bind ( publicThis ) ,
configurable : true ,
enumerable : true ,
writable : true
} ) ;
}
{
checkDuplicateProperties ( "Methods" , key ) ;
}
} else {
warn$1 (
` Method " ${ key } " has type " ${ typeof methodHandler } " in the component definition. Did you reference the function correctly? `
) ;
}
}
}
if ( dataOptions ) {
if ( ! isFunction ( dataOptions ) ) {
warn$1 (
` The data option must be a function. Plain object usage is no longer supported. `
) ;
}
const data = dataOptions . call ( publicThis , publicThis ) ;
if ( isPromise ( data ) ) {
warn$1 (
` data() returned a Promise - note data() cannot be async; If you intend to perform data fetching before component renders, use async setup() + <Suspense>. `
) ;
}
if ( ! isObject ( data ) ) {
warn$1 ( ` data() should return an object. ` ) ;
} else {
instance . data = reactive ( data ) ;
{
for ( const key in data ) {
checkDuplicateProperties ( "Data" , key ) ;
if ( ! isReservedPrefix ( key [ 0 ] ) ) {
Object . defineProperty ( ctx , key , {
configurable : true ,
enumerable : true ,
get : ( ) => data [ key ] ,
set : NOOP
} ) ;
}
}
}
}
}
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 ;
if ( get2 === NOOP ) {
warn$1 ( ` Computed property " ${ key } " has no getter. ` ) ;
}
const set2 = ! isFunction ( opt ) && isFunction ( opt . set ) ? opt . set . bind ( publicThis ) : ( ) => {
warn$1 (
` Write operation failed: computed property " ${ key } " is readonly. `
) ;
} ;
const c2 = computed ( {
get : get2 ,
set : set2
} ) ;
Object . defineProperty ( ctx , key , {
enumerable : true ,
configurable : true ,
get : ( ) => c2 . value ,
set : ( v ) => c2 . value = v
} ) ;
{
checkDuplicateProperties ( "Computed" , key ) ;
}
}
}
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 ;
if ( instance . ctx . $onApplyOptions ) {
instance . ctx . $onApplyOptions ( options , instance , publicThis ) ;
}
}
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 ( 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 ;
}
{
checkDuplicateProperties ( "Inject" , key ) ;
}
}
}
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 {
warn$1 ( ` Invalid watch handler specified by key " ${ raw } " ` , handler ) ;
}
} else if ( isFunction ( raw ) ) {
watch ( getter , raw . bind ( publicThis ) ) ;
} else if ( isObject ( raw ) ) {
if ( isArray ( raw ) ) {
raw . forEach ( ( r2 ) => createWatcher ( r2 , ctx , publicThis , key ) ) ;
} else {
const handler = isFunction ( raw . handler ) ? raw . handler . bind ( publicThis ) : ctx [ raw . handler ] ;
if ( isFunction ( handler ) ) {
watch ( getter , handler , raw ) ;
} else {
warn$1 ( ` Invalid watch handler specified by key " ${ raw . handler } " ` , handler ) ;
}
}
} else {
warn$1 ( ` Invalid watch option: " ${ key } " ` , raw ) ;
}
}
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 (
( m2 ) => mergeOptions ( resolved , m2 , optionMergeStrategies , true )
) ;
}
mergeOptions ( resolved , base , optionMergeStrategies ) ;
}
if ( isObject ( 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 (
( m2 ) => mergeOptions ( to , m2 , strats , true )
) ;
}
for ( const key in from ) {
if ( asMixin && key === "expose" ) {
warn$1 (
` "expose" option is ignored when declared in mixins or extends. It should only be declared in the base component itself. `
) ;
} 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$1 ,
created : mergeAsArray$1 ,
beforeMount : mergeAsArray$1 ,
mounted : mergeAsArray$1 ,
beforeUpdate : mergeAsArray$1 ,
updated : mergeAsArray$1 ,
beforeDestroy : mergeAsArray$1 ,
beforeUnmount : mergeAsArray$1 ,
destroyed : mergeAsArray$1 ,
unmounted : mergeAsArray$1 ,
activated : mergeAsArray$1 ,
deactivated : mergeAsArray$1 ,
errorCaptured : mergeAsArray$1 ,
serverPrefetch : mergeAsArray$1 ,
// 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$1 ( 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$1 ( to [ key ] , from [ key ] ) ;
}
return merged ;
}
function initProps$1 ( instance , rawProps , isStateful , isSSR = false ) {
const props = { } ;
const attrs = { } ;
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 ;
}
}
{
validateProps ( rawProps || { } , props , instance ) ;
}
if ( isStateful ) {
instance . props = isSSR ? props : shallowReactive ( props ) ;
} else {
if ( ! instance . type . props ) {
instance . props = attrs ;
} else {
instance . props = props ;
}
}
instance . attrs = attrs ;
}
function isInHmrContext ( instance ) {
while ( instance ) {
if ( instance . type . _ _hmrId )
return true ;
instance = instance . parent ;
}
}
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
! isInHmrContext ( instance ) && ( 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 , "set" , "$attrs" ) ;
}
{
validateProps ( rawProps || { } , props , instance ) ;
}
}
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 ( comp ) ) {
cache . set ( comp , EMPTY _ARR ) ;
}
return EMPTY _ARR ;
}
if ( isArray ( raw ) ) {
for ( let i = 0 ; i < raw . length ; i ++ ) {
if ( ! isString ( raw [ i ] ) ) {
warn$1 ( ` props must be strings when using array syntax. ` , raw [ i ] ) ;
}
const normalizedKey = camelize ( raw [ i ] ) ;
if ( validatePropName ( normalizedKey ) ) {
normalized [ normalizedKey ] = EMPTY _OBJ ;
}
}
} else if ( raw ) {
if ( ! isObject ( raw ) ) {
warn$1 ( ` invalid props options ` , 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 ( comp ) ) {
cache . set ( comp , res ) ;
}
return res ;
}
function validatePropName ( key ) {
if ( key [ 0 ] !== "$" && ! isReservedProp ( key ) ) {
return true ;
} else {
warn$1 ( ` Invalid prop name: " ${ key } " is a reserved property. ` ) ;
}
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 ( ( t2 ) => isSameType ( t2 , type ) ) ;
} else if ( isFunction ( expectedTypes ) ) {
return isSameType ( expectedTypes , type ) ? 0 : - 1 ;
}
return - 1 ;
}
function validateProps ( rawProps , props , instance ) {
const resolvedValues = toRaw ( props ) ;
const options = instance . propsOptions [ 0 ] ;
for ( const key in options ) {
let opt = options [ key ] ;
if ( opt == null )
continue ;
validateProp (
key ,
resolvedValues [ key ] ,
opt ,
shallowReadonly ( resolvedValues ) ,
! hasOwn ( rawProps , key ) && ! hasOwn ( rawProps , hyphenate ( key ) )
) ;
}
}
function validateProp ( name , value , prop , props , isAbsent ) {
const { type , required , validator , skipCheck } = prop ;
if ( required && isAbsent ) {
warn$1 ( 'Missing required prop: "' + name + '"' ) ;
return ;
}
if ( value == null && ! required ) {
return ;
}
if ( type != null && type !== true && ! skipCheck ) {
let isValid = false ;
const types = isArray ( type ) ? type : [ type ] ;
const expectedTypes = [ ] ;
for ( let i = 0 ; i < types . length && ! isValid ; i ++ ) {
const { valid , expectedType } = assertType ( value , types [ i ] ) ;
expectedTypes . push ( expectedType || "" ) ;
isValid = valid ;
}
if ( ! isValid ) {
warn$1 ( getInvalidTypeMessage ( name , value , expectedTypes ) ) ;
return ;
}
}
if ( validator && ! validator ( value , props ) ) {
warn$1 ( 'Invalid prop: custom validator check failed for prop "' + name + '".' ) ;
}
}
const isSimpleType = /* @__PURE__ */ makeMap (
"String,Number,Boolean,Function,Symbol,BigInt"
) ;
function assertType ( value , type ) {
let valid ;
const expectedType = getType ( type ) ;
if ( isSimpleType ( expectedType ) ) {
const t2 = typeof value ;
valid = t2 === expectedType . toLowerCase ( ) ;
if ( ! valid && t2 === "object" ) {
valid = value instanceof type ;
}
} else if ( expectedType === "Object" ) {
valid = isObject ( value ) ;
} else if ( expectedType === "Array" ) {
valid = isArray ( value ) ;
} else if ( expectedType === "null" ) {
valid = value === null ;
} else {
valid = value instanceof type ;
}
return {
valid ,
expectedType
} ;
}
function getInvalidTypeMessage ( name , value , expectedTypes ) {
if ( expectedTypes . length === 0 ) {
return ` Prop type [] for prop " ${ name } " won't match anything. Did you mean to use type Array instead? ` ;
}
let message = ` Invalid prop: type check failed for prop " ${ name } ". Expected ${ expectedTypes . map ( capitalize ) . join ( " | " ) } ` ;
const expectedType = expectedTypes [ 0 ] ;
const receivedType = toRawType ( value ) ;
const expectedValue = styleValue ( value , expectedType ) ;
const receivedValue = styleValue ( value , receivedType ) ;
if ( expectedTypes . length === 1 && isExplicable ( expectedType ) && ! isBoolean ( expectedType , receivedType ) ) {
message += ` with value ${ expectedValue } ` ;
}
message += ` , got ${ receivedType } ` ;
if ( isExplicable ( receivedType ) ) {
message += ` with value ${ receivedValue } . ` ;
}
return message ;
}
function styleValue ( value , type ) {
if ( type === "String" ) {
return ` " ${ value } " ` ;
} else if ( type === "Number" ) {
return ` ${ Number ( value ) } ` ;
} else {
return ` ${ value } ` ;
}
}
function isExplicable ( type ) {
const explicitTypes = [ "string" , "number" , "boolean" ] ;
return explicitTypes . some ( ( elem ) => type . toLowerCase ( ) === elem ) ;
}
function isBoolean ( ... args ) {
return args . some ( ( elem ) => elem . toLowerCase ( ) === "boolean" ) ;
}
let supported ;
let perf ;
function startMeasure ( instance , type ) {
if ( instance . appContext . config . performance && isSupported ( ) ) {
perf . mark ( ` vue- ${ type } - ${ instance . uid } ` ) ;
}
{
devtoolsPerfStart ( instance , type , isSupported ( ) ? perf . now ( ) : Date . now ( ) ) ;
}
}
function endMeasure ( instance , type ) {
if ( instance . appContext . config . performance && isSupported ( ) ) {
const startTag = ` vue- ${ type } - ${ instance . uid } ` ;
const endTag = startTag + ` :end ` ;
perf . mark ( endTag ) ;
perf . measure (
` < ${ formatComponentName ( instance , instance . type ) } > ${ type } ` ,
startTag ,
endTag
) ;
perf . clearMarks ( startTag ) ;
perf . clearMarks ( endTag ) ;
}
{
devtoolsPerfEnd ( instance , type , isSupported ( ) ? perf . now ( ) : Date . now ( ) ) ;
}
}
function isSupported ( ) {
if ( supported !== void 0 ) {
return supported ;
}
if ( typeof window !== "undefined" && window . performance ) {
supported = true ;
perf = window . performance ;
} else {
supported = false ;
}
return supported ;
}
const queuePostRenderEffect$1 = queuePostFlushCb ;
const Fragment = Symbol . for ( "v-fgt" ) ;
const Text = Symbol . for ( "v-txt" ) ;
const Comment = Symbol . for ( "v-cmt" ) ;
const Static = Symbol . for ( "v-stc" ) ;
function isVNode ( value ) {
return value ? value . _ _v _isVNode === true : false ;
}
2024-12-10 07:02:06 +00:00
const InternalObjectKey = ` __vInternal ` ;
function guardReactiveProps ( props ) {
if ( ! props )
return null ;
return isProxy ( props ) || InternalObjectKey in props ? extend ( { } , props ) : props ;
}
2024-10-17 05:04:16 +00:00
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 = createDevRenderContext ( 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 ;
{
internalSetCurrentInstance = ( i ) => {
currentInstance = i ;
} ;
setInSSRSetupState = ( 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 ) ;
} ;
const isBuiltInTag = /* @__PURE__ */ makeMap ( "slot,component" ) ;
function validateComponentName ( name , { isNativeTag } ) {
if ( isBuiltInTag ( name ) || isNativeTag ( name ) ) {
warn$1 (
"Do not use built-in or reserved HTML elements as component id: " + name
) ;
}
}
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$1 ( instance , props , isStateful , isSSR ) ;
const setupResult = isStateful ? setupStatefulComponent ( instance , isSSR ) : void 0 ;
isSSR && setInSSRSetupState ( false ) ;
return setupResult ;
}
function setupStatefulComponent ( instance , isSSR ) {
const Component2 = instance . type ;
{
if ( Component2 . name ) {
validateComponentName ( Component2 . name , instance . appContext . config ) ;
}
if ( Component2 . components ) {
const names = Object . keys ( Component2 . components ) ;
for ( let i = 0 ; i < names . length ; i ++ ) {
validateComponentName ( names [ i ] , instance . appContext . config ) ;
}
}
if ( Component2 . directives ) {
const names = Object . keys ( Component2 . directives ) ;
for ( let i = 0 ; i < names . length ; i ++ ) {
validateDirectiveName ( names [ i ] ) ;
}
}
if ( Component2 . compilerOptions && isRuntimeOnly ( ) ) {
warn$1 (
` "compilerOptions" is only supported when using a build of Vue that includes the runtime compiler. Since you are using a runtime-only build, the options should be passed via your build tool config instead. `
) ;
}
}
instance . accessCache = /* @__PURE__ */ Object . create ( null ) ;
instance . proxy = markRaw ( new Proxy ( instance . ctx , PublicInstanceProxyHandlers ) ) ;
{
exposePropsOnRenderContext ( instance ) ;
}
const { setup } = Component2 ;
if ( setup ) {
const setupContext = instance . setupContext = setup . length > 1 ? createSetupContext ( instance ) : null ;
const reset = setCurrentInstance ( instance ) ;
pauseTracking ( ) ;
const setupResult = callWithErrorHandling (
setup ,
instance ,
0 ,
[
shallowReadonly ( instance . props ) ,
setupContext
]
) ;
resetTracking ( ) ;
reset ( ) ;
if ( isPromise ( setupResult ) ) {
setupResult . then ( unsetCurrentInstance , unsetCurrentInstance ) ;
{
warn$1 (
` setup() returned a Promise, but the version of Vue you are using does not support it yet. `
) ;
}
} else {
handleSetupResult ( instance , setupResult , isSSR ) ;
}
} else {
finishComponentSetup ( instance , isSSR ) ;
}
}
function handleSetupResult ( instance , setupResult , isSSR ) {
if ( isFunction ( setupResult ) ) {
{
instance . render = setupResult ;
}
} else if ( isObject ( setupResult ) ) {
if ( isVNode ( setupResult ) ) {
warn$1 (
` setup() should not return VNodes directly - return a render function instead. `
) ;
}
{
instance . devtoolsRawSetupState = setupResult ;
}
instance . setupState = proxyRefs ( setupResult ) ;
{
exposeSetupStateOnRenderContext ( instance ) ;
}
} else if ( setupResult !== void 0 ) {
warn$1 (
` setup() should return an object. Received: ${ setupResult === null ? "null" : typeof setupResult } `
) ;
}
finishComponentSetup ( instance , isSSR ) ;
}
let compile ;
const isRuntimeOnly = ( ) => ! compile ;
function finishComponentSetup ( instance , isSSR , skipOptions ) {
const Component2 = instance . type ;
if ( ! instance . render ) {
instance . render = Component2 . render || NOOP ;
}
{
const reset = setCurrentInstance ( instance ) ;
pauseTracking ( ) ;
try {
applyOptions$1 ( instance ) ;
} finally {
resetTracking ( ) ;
reset ( ) ;
}
}
if ( ! Component2 . render && instance . render === NOOP && ! isSSR ) {
if ( Component2 . template ) {
warn$1 (
` Component provided template option but runtime compilation is not supported in this build of Vue. Configure your bundler to alias "vue" to "vue/dist/vue.esm-bundler.js". `
) ;
} else {
warn$1 ( ` Component is missing template or render function. ` ) ;
}
}
}
function getAttrsProxy ( instance ) {
return instance . attrsProxy || ( instance . attrsProxy = new Proxy (
instance . attrs ,
{
get ( target , key ) {
track ( instance , "get" , "$attrs" ) ;
return target [ key ] ;
} ,
set ( ) {
warn$1 ( ` setupContext.attrs is readonly. ` ) ;
return false ;
} ,
deleteProperty ( ) {
warn$1 ( ` setupContext.attrs is readonly. ` ) ;
return false ;
}
}
) ) ;
}
function getSlotsProxy ( instance ) {
return instance . slotsProxy || ( instance . slotsProxy = new Proxy ( instance . slots , {
get ( target , key ) {
track ( instance , "get" , "$slots" ) ;
return target [ key ] ;
}
} ) ) ;
}
function createSetupContext ( instance ) {
const expose = ( exposed ) => {
{
if ( instance . exposed ) {
warn$1 ( ` expose() should be called only once per setup(). ` ) ;
}
if ( exposed != null ) {
let exposedType = typeof exposed ;
if ( exposedType === "object" ) {
if ( isArray ( exposed ) ) {
exposedType = "array" ;
} else if ( isRef ( exposed ) ) {
exposedType = "ref" ;
}
}
if ( exposedType !== "object" ) {
warn$1 (
` expose() should be passed a plain object, received ${ exposedType } . `
) ;
}
}
}
instance . exposed = exposed || { } ;
} ;
{
return Object . freeze ( {
get attrs ( ) {
return getAttrsProxy ( instance ) ;
} ,
get slots ( ) {
return getSlotsProxy ( instance ) ;
} ,
get emit ( ) {
return ( event , ... args ) => instance . emit ( event , ... args ) ;
} ,
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 ] ;
}
return instance . proxy [ key ] ;
} ,
has ( target , key ) {
return key in target || key in publicPropertiesMap ;
}
} ) ) ;
}
}
const classifyRE = /(?:^|[-_])(\w)/g ;
const classify = ( str ) => str . replace ( classifyRE , ( c2 ) => c2 . toUpperCase ( ) ) . replace ( /[-_]/g , "" ) ;
function getComponentName ( Component2 , includeInferred = true ) {
return isFunction ( Component2 ) ? Component2 . displayName || Component2 . name : Component2 . name || includeInferred && Component2 . _ _name ;
}
function formatComponentName ( instance , Component2 , isRoot = false ) {
let name = getComponentName ( Component2 ) ;
if ( ! name && Component2 . _ _file ) {
const match = Component2 . _ _file . match ( /([^/\\]+)\.\w+$/ ) ;
if ( match ) {
name = match [ 1 ] ;
}
}
if ( ! name && instance && instance . parent ) {
const inferFromRegistry = ( registry ) => {
for ( const key in registry ) {
if ( registry [ key ] === Component2 ) {
return key ;
}
}
} ;
name = inferFromRegistry (
instance . components || instance . parent . type . components
) || inferFromRegistry ( instance . appContext . components ) ;
}
return name ? classify ( name ) : isRoot ? ` App ` : ` Anonymous ` ;
}
const computed = ( getterOrOptions , debugOptions ) => {
const c2 = computed$1 ( getterOrOptions , debugOptions , isInSSRComponentSetup ) ;
{
const i = getCurrentInstance ( ) ;
if ( i && i . appContext . config . warnRecursiveComputed ) {
c2 . _warnRecursive = true ;
}
}
return c2 ;
} ;
const version = "3.4.21" ;
const warn = warn$1 ;
function unwrapper ( target ) {
return unref ( target ) ;
}
const ARRAYTYPE = "[object Array]" ;
const OBJECTTYPE = "[object Object]" ;
function diff ( current , pre ) {
const result = { } ;
syncKeys ( current , pre ) ;
_diff ( current , pre , "" , result ) ;
return result ;
}
function syncKeys ( current , pre ) {
current = unwrapper ( current ) ;
if ( current === pre )
return ;
const rootCurrentType = toTypeString ( current ) ;
const rootPreType = toTypeString ( pre ) ;
if ( rootCurrentType == OBJECTTYPE && rootPreType == OBJECTTYPE ) {
for ( let key in pre ) {
const currentValue = current [ key ] ;
if ( currentValue === void 0 ) {
current [ key ] = null ;
} else {
syncKeys ( currentValue , pre [ key ] ) ;
}
}
} else if ( rootCurrentType == ARRAYTYPE && rootPreType == ARRAYTYPE ) {
if ( current . length >= pre . length ) {
pre . forEach ( ( item , index2 ) => {
syncKeys ( current [ index2 ] , item ) ;
} ) ;
}
}
}
function _diff ( current , pre , path , result ) {
current = unwrapper ( current ) ;
if ( current === pre )
return ;
const rootCurrentType = toTypeString ( current ) ;
const rootPreType = toTypeString ( pre ) ;
if ( rootCurrentType == OBJECTTYPE ) {
if ( rootPreType != OBJECTTYPE || Object . keys ( current ) . length < Object . keys ( pre ) . length ) {
setResult ( result , path , current ) ;
} else {
for ( let key in current ) {
const currentValue = unwrapper ( current [ key ] ) ;
const preValue = pre [ key ] ;
const currentType = toTypeString ( currentValue ) ;
const preType = toTypeString ( preValue ) ;
if ( currentType != ARRAYTYPE && currentType != OBJECTTYPE ) {
if ( currentValue != preValue ) {
setResult (
result ,
( path == "" ? "" : path + "." ) + key ,
currentValue
) ;
}
} else if ( currentType == ARRAYTYPE ) {
if ( preType != ARRAYTYPE ) {
setResult (
result ,
( path == "" ? "" : path + "." ) + key ,
currentValue
) ;
} else {
if ( currentValue . length < preValue . length ) {
setResult (
result ,
( path == "" ? "" : path + "." ) + key ,
currentValue
) ;
} else {
currentValue . forEach ( ( item , index2 ) => {
_diff (
item ,
preValue [ index2 ] ,
( path == "" ? "" : path + "." ) + key + "[" + index2 + "]" ,
result
) ;
} ) ;
}
}
} else if ( currentType == OBJECTTYPE ) {
if ( preType != OBJECTTYPE || Object . keys ( currentValue ) . length < Object . keys ( preValue ) . length ) {
setResult (
result ,
( path == "" ? "" : path + "." ) + key ,
currentValue
) ;
} else {
for ( let subKey in currentValue ) {
_diff (
currentValue [ subKey ] ,
preValue [ subKey ] ,
( path == "" ? "" : path + "." ) + key + "." + subKey ,
result
) ;
}
}
}
}
}
} else if ( rootCurrentType == ARRAYTYPE ) {
if ( rootPreType != ARRAYTYPE ) {
setResult ( result , path , current ) ;
} else {
if ( current . length < pre . length ) {
setResult ( result , path , current ) ;
} else {
current . forEach ( ( item , index2 ) => {
_diff ( item , pre [ index2 ] , path + "[" + index2 + "]" , result ) ;
} ) ;
}
}
} else {
setResult ( result , path , current ) ;
}
}
function setResult ( result , k , v ) {
result [ k ] = v ;
}
function hasComponentEffect ( instance ) {
return queue . includes ( instance . update ) ;
}
function flushCallbacks ( instance ) {
const ctx = instance . ctx ;
const callbacks = ctx . _ _next _tick _callbacks ;
if ( callbacks && callbacks . length ) {
const copies = callbacks . slice ( 0 ) ;
callbacks . length = 0 ;
for ( let i = 0 ; i < copies . length ; i ++ ) {
copies [ i ] ( ) ;
}
}
}
function nextTick ( instance , fn ) {
const ctx = instance . ctx ;
if ( ! ctx . _ _next _tick _pending && ! hasComponentEffect ( instance ) ) {
return nextTick$1 ( fn && fn . bind ( instance . proxy ) ) ;
}
let _resolve ;
if ( ! ctx . _ _next _tick _callbacks ) {
ctx . _ _next _tick _callbacks = [ ] ;
}
ctx . _ _next _tick _callbacks . push ( ( ) => {
if ( fn ) {
callWithErrorHandling (
fn . bind ( instance . proxy ) ,
instance ,
14
) ;
} else if ( _resolve ) {
_resolve ( instance . proxy ) ;
}
} ) ;
return new Promise ( ( resolve2 ) => {
_resolve = resolve2 ;
} ) ;
}
function clone ( src , seen ) {
src = unwrapper ( src ) ;
const type = typeof src ;
if ( type === "object" && src !== null ) {
let copy = seen . get ( src ) ;
if ( typeof copy !== "undefined" ) {
return copy ;
}
if ( isArray ( src ) ) {
const len = src . length ;
copy = new Array ( len ) ;
seen . set ( src , copy ) ;
for ( let i = 0 ; i < len ; i ++ ) {
copy [ i ] = clone ( src [ i ] , seen ) ;
}
} else {
copy = { } ;
seen . set ( src , copy ) ;
for ( const name in src ) {
if ( hasOwn ( src , name ) ) {
copy [ name ] = clone ( src [ name ] , seen ) ;
}
}
}
return copy ;
}
if ( type !== "symbol" ) {
return src ;
}
}
function deepCopy ( src ) {
return clone ( src , typeof WeakMap !== "undefined" ? /* @__PURE__ */ new WeakMap ( ) : /* @__PURE__ */ new Map ( ) ) ;
}
function getMPInstanceData ( instance , keys ) {
const data = instance . data ;
const ret = /* @__PURE__ */ Object . create ( null ) ;
keys . forEach ( ( key ) => {
ret [ key ] = data [ key ] ;
} ) ;
return ret ;
}
function patch ( instance , data , oldData ) {
if ( ! data ) {
return ;
}
data = deepCopy ( data ) ;
const ctx = instance . ctx ;
const mpType = ctx . mpType ;
if ( mpType === "page" || mpType === "component" ) {
data . r0 = 1 ;
const mpInstance = ctx . $scope ;
const keys = Object . keys ( data ) ;
const diffData = diff ( data , oldData || getMPInstanceData ( mpInstance , keys ) ) ;
if ( Object . keys ( diffData ) . length ) {
ctx . _ _next _tick _pending = true ;
mpInstance . setData ( diffData , ( ) => {
ctx . _ _next _tick _pending = false ;
flushCallbacks ( instance ) ;
} ) ;
flushPreFlushCbs ( ) ;
} else {
flushCallbacks ( instance ) ;
}
}
}
function initAppConfig ( appConfig ) {
appConfig . globalProperties . $nextTick = function $nextTick ( fn ) {
return nextTick ( this . $ , fn ) ;
} ;
}
function onApplyOptions ( options , instance , publicThis ) {
instance . appContext . config . globalProperties . $applyOptions (
options ,
instance ,
publicThis
) ;
const computedOptions = options . computed ;
if ( computedOptions ) {
const keys = Object . keys ( computedOptions ) ;
if ( keys . length ) {
const ctx = instance . ctx ;
if ( ! ctx . $computedKeys ) {
ctx . $computedKeys = [ ] ;
}
ctx . $computedKeys . push ( ... keys ) ;
}
}
delete instance . ctx . $onApplyOptions ;
}
function setRef$1 ( instance , isUnmount = false ) {
const {
setupState ,
$templateRefs ,
ctx : { $scope , $mpPlatform }
} = instance ;
if ( $mpPlatform === "mp-alipay" ) {
return ;
}
if ( ! $templateRefs || ! $scope ) {
return ;
}
if ( isUnmount ) {
return $templateRefs . forEach (
( templateRef ) => setTemplateRef ( templateRef , null , setupState )
) ;
}
const check = $mpPlatform === "mp-baidu" || $mpPlatform === "mp-toutiao" ;
const doSetByRefs = ( refs ) => {
const mpComponents = (
// 字节小程序 selectAllComponents 可能返回 null
// https://github.com/dcloudio/uni-app/issues/3954
( $scope . selectAllComponents ( ".r" ) || [ ] ) . concat (
$scope . selectAllComponents ( ".r-i-f" ) || [ ]
)
) ;
return refs . filter ( ( templateRef ) => {
const refValue = findComponentPublicInstance ( mpComponents , templateRef . i ) ;
if ( check && refValue === null ) {
return true ;
}
setTemplateRef ( templateRef , refValue , setupState ) ;
return false ;
} ) ;
} ;
const doSet = ( ) => {
const refs = doSetByRefs ( $templateRefs ) ;
if ( refs . length && instance . proxy && instance . proxy . $scope ) {
instance . proxy . $scope . setData ( { r1 : 1 } , ( ) => {
doSetByRefs ( refs ) ;
} ) ;
}
} ;
if ( $scope . _$setRef ) {
$scope . _$setRef ( doSet ) ;
} else {
nextTick ( instance , doSet ) ;
}
}
function toSkip ( value ) {
if ( isObject ( value ) ) {
markRaw ( value ) ;
}
return value ;
}
function findComponentPublicInstance ( mpComponents , id2 ) {
const mpInstance = mpComponents . find (
( com ) => com && ( com . properties || com . props ) . uI === id2
) ;
if ( mpInstance ) {
const vm = mpInstance . $vm ;
if ( vm ) {
return getExposeProxy ( vm . $ ) || vm ;
}
return toSkip ( mpInstance ) ;
}
return null ;
}
function setTemplateRef ( { r : r2 , f : f2 } , refValue , setupState ) {
if ( isFunction ( r2 ) ) {
r2 ( refValue , { } ) ;
} else {
const _isString = isString ( r2 ) ;
const _isRef = isRef ( r2 ) ;
if ( _isString || _isRef ) {
if ( f2 ) {
if ( ! _isRef ) {
return ;
}
if ( ! isArray ( r2 . value ) ) {
r2 . value = [ ] ;
}
const existing = r2 . value ;
if ( existing . indexOf ( refValue ) === - 1 ) {
existing . push ( refValue ) ;
if ( ! refValue ) {
return ;
}
onBeforeUnmount ( ( ) => remove ( existing , refValue ) , refValue . $ ) ;
}
} else if ( _isString ) {
if ( hasOwn ( setupState , r2 ) ) {
setupState [ r2 ] = refValue ;
}
} else if ( isRef ( r2 ) ) {
r2 . value = refValue ;
} else {
warnRef ( r2 ) ;
}
} else {
warnRef ( r2 ) ;
}
}
}
function warnRef ( ref2 ) {
warn ( "Invalid template ref type:" , ref2 , ` ( ${ typeof ref2 } ) ` ) ;
}
const queuePostRenderEffect = queuePostFlushCb ;
function mountComponent ( initialVNode , options ) {
const instance = initialVNode . component = createComponentInstance ( initialVNode , options . parentComponent , null ) ;
{
instance . ctx . $onApplyOptions = onApplyOptions ;
instance . ctx . $children = [ ] ;
}
if ( options . mpType === "app" ) {
instance . render = NOOP ;
}
if ( options . onBeforeSetup ) {
options . onBeforeSetup ( instance , options ) ;
}
{
pushWarningContext ( initialVNode ) ;
startMeasure ( instance , ` mount ` ) ;
}
{
startMeasure ( instance , ` init ` ) ;
}
setupComponent ( instance ) ;
{
endMeasure ( instance , ` init ` ) ;
}
{
if ( options . parentComponent && instance . proxy ) {
options . parentComponent . ctx . $children . push ( getExposeProxy ( instance ) || instance . proxy ) ;
}
}
setupRenderEffect ( instance ) ;
{
popWarningContext ( ) ;
endMeasure ( instance , ` mount ` ) ;
}
return instance . proxy ;
}
const getFunctionalFallthrough = ( attrs ) => {
let res ;
for ( const key in attrs ) {
if ( key === "class" || key === "style" || isOn ( key ) ) {
( res || ( res = { } ) ) [ key ] = attrs [ key ] ;
}
}
return res ;
} ;
function renderComponentRoot ( instance ) {
const {
type : Component2 ,
vnode ,
proxy ,
withProxy ,
props ,
propsOptions : [ propsOptions ] ,
slots ,
attrs ,
emit : emit2 ,
render ,
renderCache ,
data ,
setupState ,
ctx ,
uid : uid2 ,
appContext : {
app : {
config : {
globalProperties : { pruneComponentPropsCache : pruneComponentPropsCache2 }
}
}
} ,
inheritAttrs
} = instance ;
instance . $templateRefs = [ ] ;
instance . $ei = 0 ;
pruneComponentPropsCache2 ( uid2 ) ;
instance . _ _counter = instance . _ _counter === 0 ? 1 : 0 ;
let result ;
const prev = setCurrentRenderingInstance ( instance ) ;
try {
if ( vnode . shapeFlag & 4 ) {
fallthroughAttrs ( inheritAttrs , props , propsOptions , attrs ) ;
const proxyToUse = withProxy || proxy ;
result = render . call (
proxyToUse ,
proxyToUse ,
renderCache ,
props ,
setupState ,
data ,
ctx
) ;
} else {
fallthroughAttrs (
inheritAttrs ,
props ,
propsOptions ,
Component2 . props ? attrs : getFunctionalFallthrough ( attrs )
) ;
const render2 = Component2 ;
result = render2 . length > 1 ? render2 ( props , { attrs , slots , emit : emit2 } ) : render2 (
props ,
null
/* we know it doesn't need it */
) ;
}
} catch ( err ) {
handleError ( err , instance , 1 ) ;
result = false ;
}
setRef$1 ( instance ) ;
setCurrentRenderingInstance ( prev ) ;
return result ;
}
function fallthroughAttrs ( inheritAttrs , props , propsOptions , fallthroughAttrs2 ) {
if ( props && fallthroughAttrs2 && inheritAttrs !== false ) {
const keys = Object . keys ( fallthroughAttrs2 ) . filter (
( key ) => key !== "class" && key !== "style"
) ;
if ( ! keys . length ) {
return ;
}
if ( propsOptions && keys . some ( isModelListener ) ) {
keys . forEach ( ( key ) => {
if ( ! isModelListener ( key ) || ! ( key . slice ( 9 ) in propsOptions ) ) {
props [ key ] = fallthroughAttrs2 [ key ] ;
}
} ) ;
} else {
keys . forEach ( ( key ) => props [ key ] = fallthroughAttrs2 [ key ] ) ;
}
}
}
const updateComponentPreRender = ( instance ) => {
pauseTracking ( ) ;
flushPreFlushCbs ( ) ;
resetTracking ( ) ;
} ;
function componentUpdateScopedSlotsFn ( ) {
const scopedSlotsData = this . $scopedSlotsData ;
if ( ! scopedSlotsData || scopedSlotsData . length === 0 ) {
return ;
}
const mpInstance = this . ctx . $scope ;
const oldData = mpInstance . data ;
const diffData = /* @__PURE__ */ Object . create ( null ) ;
scopedSlotsData . forEach ( ( { path , index : index2 , data } ) => {
const oldScopedSlotData = getValueByDataPath ( oldData , path ) ;
const diffPath = isString ( index2 ) ? ` ${ path } . ${ index2 } ` : ` ${ path } [ ${ index2 } ] ` ;
if ( typeof oldScopedSlotData === "undefined" || typeof oldScopedSlotData [ index2 ] === "undefined" ) {
diffData [ diffPath ] = data ;
} else {
const diffScopedSlotData = diff (
data ,
oldScopedSlotData [ index2 ]
) ;
Object . keys ( diffScopedSlotData ) . forEach ( ( name ) => {
diffData [ diffPath + "." + name ] = diffScopedSlotData [ name ] ;
} ) ;
}
} ) ;
scopedSlotsData . length = 0 ;
if ( Object . keys ( diffData ) . length ) {
mpInstance . setData ( diffData ) ;
}
}
function toggleRecurse ( { effect : effect2 , update } , allowed ) {
effect2 . allowRecurse = update . allowRecurse = allowed ;
}
function setupRenderEffect ( instance ) {
const updateScopedSlots = componentUpdateScopedSlotsFn . bind (
instance
) ;
instance . $updateScopedSlots = ( ) => nextTick$1 ( ( ) => queueJob ( updateScopedSlots ) ) ;
const componentUpdateFn = ( ) => {
if ( ! instance . isMounted ) {
onBeforeUnmount ( ( ) => {
setRef$1 ( instance , true ) ;
} , instance ) ;
{
startMeasure ( instance , ` patch ` ) ;
}
patch ( instance , renderComponentRoot ( instance ) ) ;
{
endMeasure ( instance , ` patch ` ) ;
}
{
devtoolsComponentAdded ( instance ) ;
}
} else {
const { next , bu , u } = instance ;
{
pushWarningContext ( next || instance . vnode ) ;
}
toggleRecurse ( instance , false ) ;
updateComponentPreRender ( ) ;
if ( bu ) {
invokeArrayFns$1 ( bu ) ;
}
toggleRecurse ( instance , true ) ;
{
startMeasure ( instance , ` patch ` ) ;
}
patch ( instance , renderComponentRoot ( instance ) ) ;
{
endMeasure ( instance , ` patch ` ) ;
}
if ( u ) {
queuePostRenderEffect ( u ) ;
}
{
devtoolsComponentUpdated ( instance ) ;
}
{
popWarningContext ( ) ;
}
}
} ;
const effect2 = instance . effect = new ReactiveEffect2 (
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 ) ;
{
effect2 . onTrack = instance . rtc ? ( e2 ) => invokeArrayFns$1 ( instance . rtc , e2 ) : void 0 ;
effect2 . onTrigger = instance . rtg ? ( e2 ) => invokeArrayFns$1 ( instance . rtg , e2 ) : void 0 ;
update . ownerInstance = instance ;
}
update ( ) ;
}
function unmountComponent ( instance ) {
const { bum , scope , update , um } = instance ;
if ( bum ) {
invokeArrayFns$1 ( bum ) ;
}
scope . stop ( ) ;
if ( update ) {
update . active = false ;
}
if ( um ) {
queuePostRenderEffect ( um ) ;
}
queuePostRenderEffect ( ( ) => {
instance . isUnmounted = true ;
} ) ;
{
devtoolsComponentRemoved ( instance ) ;
}
}
const oldCreateApp = createAppAPI ( ) ;
function getTarget ( ) {
if ( typeof window !== "undefined" ) {
return window ;
}
if ( typeof globalThis !== "undefined" ) {
return globalThis ;
}
if ( typeof global !== "undefined" ) {
return global ;
}
if ( typeof my !== "undefined" ) {
return my ;
}
}
function createVueApp ( rootComponent , rootProps = null ) {
const target = getTarget ( ) ;
target . _ _VUE _ _ = true ;
{
setDevtoolsHook ( target . _ _VUE _DEVTOOLS _GLOBAL _HOOK _ _ , target ) ;
}
const app = oldCreateApp ( rootComponent , rootProps ) ;
const appContext = app . _context ;
initAppConfig ( appContext . config ) ;
const createVNode2 = ( initialVNode ) => {
initialVNode . appContext = appContext ;
initialVNode . shapeFlag = 6 ;
return initialVNode ;
} ;
const createComponent2 = function createComponent22 ( initialVNode , options ) {
return mountComponent ( createVNode2 ( initialVNode ) , options ) ;
} ;
const destroyComponent = function destroyComponent2 ( component ) {
return component && unmountComponent ( component . $ ) ;
} ;
app . mount = function mount ( ) {
rootComponent . render = NOOP ;
const instance = mountComponent (
createVNode2 ( { type : rootComponent } ) ,
{
mpType : "app" ,
mpInstance : null ,
parentComponent : null ,
slots : [ ] ,
props : null
}
) ;
app . _instance = instance . $ ;
{
devtoolsInitApp ( app , version ) ;
}
instance . $app = app ;
instance . $createComponent = createComponent2 ;
instance . $destroyComponent = destroyComponent ;
appContext . $appInstance = instance ;
return instance ;
} ;
app . unmount = function unmount ( ) {
warn ( ` Cannot unmount an app. ` ) ;
} ;
return app ;
}
function injectLifecycleHook ( name , hook , publicThis , instance ) {
if ( isFunction ( hook ) ) {
injectHook ( name , hook . bind ( publicThis ) , instance ) ;
}
}
function initHooks$1 ( options , instance , publicThis ) {
const mpType = options . mpType || publicThis . $mpType ;
if ( ! mpType || mpType === "component" ) {
return ;
}
Object . keys ( options ) . forEach ( ( name ) => {
if ( isUniLifecycleHook ( name , options [ name ] , false ) ) {
const hooks = options [ name ] ;
if ( isArray ( hooks ) ) {
hooks . forEach ( ( hook ) => injectLifecycleHook ( name , hook , publicThis , instance ) ) ;
} else {
injectLifecycleHook ( name , hooks , publicThis , instance ) ;
}
}
} ) ;
}
function applyOptions ( options , instance , publicThis ) {
initHooks$1 ( options , instance , publicThis ) ;
}
2024-12-10 07:02:06 +00:00
function set$2 ( target , key , val ) {
2024-10-17 05:04:16 +00:00
return target [ key ] = val ;
}
function $callMethod ( method , ... args ) {
const fn = this [ method ] ;
if ( fn ) {
return fn ( ... args ) ;
}
console . error ( ` method ${ method } not found ` ) ;
return null ;
}
function createErrorHandler ( app ) {
return function errorHandler ( err , instance , _info ) {
if ( ! instance ) {
throw err ;
}
const appInstance = app . _instance ;
if ( ! appInstance || ! appInstance . proxy ) {
throw err ;
}
{
appInstance . proxy . $callHook ( ON _ERROR , err ) ;
}
} ;
}
function mergeAsArray ( to , from ) {
return to ? [ ... new Set ( [ ] . concat ( to , from ) ) ] : from ;
}
function initOptionMergeStrategies ( optionMergeStrategies ) {
UniLifecycleHooks . forEach ( ( name ) => {
optionMergeStrategies [ name ] = mergeAsArray ;
} ) ;
}
let realAtob ;
const b64 = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=" ;
const b64re = /^(?:[A-Za-z\d+/]{4})*?(?:[A-Za-z\d+/]{2}(?:==)?|[A-Za-z\d+/]{3}=?)?$/ ;
if ( typeof atob !== "function" ) {
realAtob = function ( str ) {
str = String ( str ) . replace ( /[\t\n\f\r ]+/g , "" ) ;
if ( ! b64re . test ( str ) ) {
throw new Error ( "Failed to execute 'atob' on 'Window': The string to be decoded is not correctly encoded." ) ;
}
str += "==" . slice ( 2 - ( str . length & 3 ) ) ;
var bitmap ;
var result = "" ;
var r1 ;
var r2 ;
var i = 0 ;
for ( ; i < str . length ; ) {
bitmap = b64 . indexOf ( str . charAt ( i ++ ) ) << 18 | b64 . indexOf ( str . charAt ( i ++ ) ) << 12 | ( r1 = b64 . indexOf ( str . charAt ( i ++ ) ) ) << 6 | ( r2 = b64 . indexOf ( str . charAt ( i ++ ) ) ) ;
result += r1 === 64 ? String . fromCharCode ( bitmap >> 16 & 255 ) : r2 === 64 ? String . fromCharCode ( bitmap >> 16 & 255 , bitmap >> 8 & 255 ) : String . fromCharCode ( bitmap >> 16 & 255 , bitmap >> 8 & 255 , bitmap & 255 ) ;
}
return result ;
} ;
} else {
realAtob = atob ;
}
function b64DecodeUnicode ( str ) {
return decodeURIComponent ( realAtob ( str ) . split ( "" ) . map ( function ( c2 ) {
return "%" + ( "00" + c2 . charCodeAt ( 0 ) . toString ( 16 ) ) . slice ( - 2 ) ;
} ) . join ( "" ) ) ;
}
function getCurrentUserInfo ( ) {
const token = index . getStorageSync ( "uni_id_token" ) || "" ;
const tokenArr = token . split ( "." ) ;
if ( ! token || tokenArr . length !== 3 ) {
return {
uid : null ,
role : [ ] ,
permission : [ ] ,
tokenExpired : 0
} ;
}
let userInfo ;
try {
userInfo = JSON . parse ( b64DecodeUnicode ( tokenArr [ 1 ] ) ) ;
} catch ( error ) {
throw new Error ( "获取当前用户信息出错,详细错误信息为:" + error . message ) ;
}
userInfo . tokenExpired = userInfo . exp * 1e3 ;
delete userInfo . exp ;
delete userInfo . iat ;
return userInfo ;
}
function uniIdMixin ( globalProperties ) {
globalProperties . uniIDHasRole = function ( roleId ) {
const { role } = getCurrentUserInfo ( ) ;
return role . indexOf ( roleId ) > - 1 ;
} ;
globalProperties . uniIDHasPermission = function ( permissionId ) {
const { permission } = getCurrentUserInfo ( ) ;
return this . uniIDHasRole ( "admin" ) || permission . indexOf ( permissionId ) > - 1 ;
} ;
globalProperties . uniIDTokenValid = function ( ) {
const { tokenExpired } = getCurrentUserInfo ( ) ;
return tokenExpired > Date . now ( ) ;
} ;
}
function initApp ( app ) {
const appConfig = app . _context . config ;
appConfig . errorHandler = invokeCreateErrorHandler ( app , createErrorHandler ) ;
initOptionMergeStrategies ( appConfig . optionMergeStrategies ) ;
const globalProperties = appConfig . globalProperties ;
{
uniIdMixin ( globalProperties ) ;
}
{
2024-12-10 07:02:06 +00:00
globalProperties . $set = set$2 ;
2024-10-17 05:04:16 +00:00
globalProperties . $applyOptions = applyOptions ;
globalProperties . $callMethod = $callMethod ;
}
{
index . invokeCreateVueAppHook ( app ) ;
}
}
const propsCaches = /* @__PURE__ */ Object . create ( null ) ;
2024-12-10 07:02:06 +00:00
function renderProps ( props ) {
const { uid : uid2 , _ _counter } = getCurrentInstance ( ) ;
const propsId = ( propsCaches [ uid2 ] || ( propsCaches [ uid2 ] = [ ] ) ) . push ( guardReactiveProps ( props ) ) - 1 ;
return uid2 + "," + propsId + "," + _ _counter ;
}
2024-10-17 05:04:16 +00:00
function pruneComponentPropsCache ( uid2 ) {
delete propsCaches [ uid2 ] ;
}
function findComponentPropsData ( up ) {
if ( ! up ) {
return ;
}
const [ uid2 , propsId ] = up . split ( "," ) ;
if ( ! propsCaches [ uid2 ] ) {
return ;
}
return propsCaches [ uid2 ] [ parseInt ( propsId ) ] ;
}
var plugin = {
install ( app ) {
initApp ( app ) ;
app . config . globalProperties . pruneComponentPropsCache = pruneComponentPropsCache ;
const oldMount = app . mount ;
app . mount = function mount ( rootContainer ) {
const instance = oldMount . call ( app , rootContainer ) ;
const createApp2 = getCreateApp ( ) ;
if ( createApp2 ) {
createApp2 ( instance ) ;
} else {
if ( typeof createMiniProgramApp !== "undefined" ) {
createMiniProgramApp ( instance ) ;
}
}
return instance ;
} ;
}
} ;
function getCreateApp ( ) {
const method = "createApp" ;
if ( typeof global !== "undefined" && typeof global [ method ] !== "undefined" ) {
return global [ method ] ;
} else if ( typeof my !== "undefined" ) {
return my [ method ] ;
}
}
2024-12-10 07:02:06 +00:00
function vOn ( value , key ) {
const instance = getCurrentInstance ( ) ;
const ctx = instance . ctx ;
const extraKey = typeof key !== "undefined" && ( ctx . $mpPlatform === "mp-weixin" || ctx . $mpPlatform === "mp-qq" || ctx . $mpPlatform === "mp-xhs" ) && ( isString ( key ) || typeof key === "number" ) ? "_" + key : "" ;
const name = "e" + instance . $ei ++ + extraKey ;
const mpInstance = ctx . $scope ;
if ( ! value ) {
delete mpInstance [ name ] ;
return name ;
}
const existingInvoker = mpInstance [ name ] ;
if ( existingInvoker ) {
existingInvoker . value = value ;
} else {
mpInstance [ name ] = createInvoker ( value , instance ) ;
}
return name ;
}
function createInvoker ( initialValue , instance ) {
const invoker = ( e2 ) => {
patchMPEvent ( e2 ) ;
let args = [ e2 ] ;
if ( e2 . detail && e2 . detail . _ _args _ _ ) {
args = e2 . detail . _ _args _ _ ;
}
const eventValue = invoker . value ;
const invoke = ( ) => callWithAsyncErrorHandling ( patchStopImmediatePropagation ( e2 , eventValue ) , instance , 5 , args ) ;
const eventTarget = e2 . target ;
const eventSync = eventTarget ? eventTarget . dataset ? String ( eventTarget . dataset . eventsync ) === "true" : false : false ;
if ( bubbles . includes ( e2 . type ) && ! eventSync ) {
setTimeout ( invoke ) ;
} else {
const res = invoke ( ) ;
if ( e2 . type === "input" && ( isArray ( res ) || isPromise ( res ) ) ) {
return ;
}
return res ;
}
} ;
invoker . value = initialValue ;
return invoker ;
}
const bubbles = [
// touch事件暂不做延迟, 否则在 Android 上会影响性能,比如一些拖拽跟手手势等
// 'touchstart',
// 'touchmove',
// 'touchcancel',
// 'touchend',
"tap" ,
"longpress" ,
"longtap" ,
"transitionend" ,
"animationstart" ,
"animationiteration" ,
"animationend" ,
"touchforcechange"
] ;
function patchMPEvent ( event ) {
if ( event . type && event . target ) {
event . preventDefault = NOOP ;
event . stopPropagation = NOOP ;
event . stopImmediatePropagation = NOOP ;
if ( ! hasOwn ( event , "detail" ) ) {
event . detail = { } ;
}
if ( hasOwn ( event , "markerId" ) ) {
event . detail = typeof event . detail === "object" ? event . detail : { } ;
event . detail . markerId = event . markerId ;
}
if ( isPlainObject$1 ( event . detail ) && hasOwn ( event . detail , "checked" ) && ! hasOwn ( event . detail , "value" ) ) {
event . detail . value = event . detail . checked ;
}
if ( isPlainObject$1 ( event . detail ) ) {
event . target = extend ( { } , event . target , event . detail ) ;
}
}
}
function patchStopImmediatePropagation ( e2 , value ) {
if ( isArray ( value ) ) {
const originalStop = e2 . stopImmediatePropagation ;
e2 . stopImmediatePropagation = ( ) => {
originalStop && originalStop . call ( e2 ) ;
e2 . _stopped = true ;
} ;
return value . map ( ( fn ) => ( e3 ) => ! e3 . _stopped && fn ( e3 ) ) ;
} else {
return value ;
}
}
2024-10-17 05:04:16 +00:00
function vFor ( source , renderItem ) {
let ret ;
if ( isArray ( source ) || isString ( source ) ) {
ret = new Array ( source . length ) ;
for ( let i = 0 , l = source . length ; i < l ; i ++ ) {
ret [ i ] = renderItem ( source [ i ] , i , i ) ;
}
} else if ( typeof source === "number" ) {
if ( ! Number . isInteger ( source ) ) {
warn ( ` The v-for range expect an integer value but got ${ source } . ` ) ;
return [ ] ;
}
ret = new Array ( source ) ;
for ( let i = 0 ; i < source ; i ++ ) {
ret [ i ] = renderItem ( i + 1 , i , i ) ;
}
} else if ( isObject ( source ) ) {
if ( source [ Symbol . iterator ] ) {
ret = Array . from ( source , ( item , i ) => renderItem ( item , i , i ) ) ;
} 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 ] ;
ret [ i ] = renderItem ( source [ key ] , key , i ) ;
}
}
} else {
ret = [ ] ;
}
return ret ;
}
2024-12-10 07:02:06 +00:00
function stringifyStyle ( value ) {
if ( isString ( value ) ) {
return value ;
}
return stringify ( normalizeStyle ( value ) ) ;
}
function stringify ( styles ) {
let ret = "" ;
if ( ! styles || isString ( styles ) ) {
return ret ;
}
for ( const key in styles ) {
ret += ` ${ key . startsWith ( ` -- ` ) ? key : hyphenate ( key ) } : ${ styles [ key ] } ; ` ;
}
return ret ;
}
const o = ( value , key ) => vOn ( value , key ) ;
2024-10-17 05:04:16 +00:00
const f = ( source , renderItem ) => vFor ( source , renderItem ) ;
2024-12-10 07:02:06 +00:00
const s = ( value ) => stringifyStyle ( value ) ;
const e = ( target , ... sources ) => extend ( target , ... sources ) ;
const n = ( value ) => normalizeClass ( value ) ;
2024-10-17 05:04:16 +00:00
const t = ( val ) => toDisplayString ( val ) ;
2024-12-10 07:02:06 +00:00
const p = ( props ) => renderProps ( props ) ;
2024-10-17 05:04:16 +00:00
function createApp$1 ( rootComponent , rootProps = null ) {
rootComponent && ( rootComponent . mpType = "app" ) ;
return createVueApp ( rootComponent , rootProps ) . use ( plugin ) ;
}
const createSSRApp = createApp$1 ;
const MP _METHODS = [
"createSelectorQuery" ,
"createIntersectionObserver" ,
"selectAllComponents" ,
"selectComponent"
] ;
function createEmitFn ( oldEmit , ctx ) {
return function emit2 ( event , ... args ) {
const scope = ctx . $scope ;
if ( scope && event ) {
const detail = { _ _args _ _ : args } ;
{
scope . triggerEvent ( event , detail ) ;
}
}
{
const props = scope . props ;
if ( props && props [ ` on ${ capitalize ( event ) } ` ] ) {
return ;
}
}
return oldEmit . apply ( this , [ event , ... args ] ) ;
} ;
}
function initBaseInstance ( instance , options ) {
const ctx = instance . ctx ;
ctx . mpType = options . mpType ;
ctx . $mpType = options . mpType ;
ctx . $mpPlatform = "mp-alipay" ;
ctx . $scope = options . mpInstance ;
ctx . $mp = { } ;
{
ctx . _self = { } ;
}
instance . slots = { } ;
if ( isArray ( options . slots ) && options . slots . length ) {
options . slots . forEach ( ( name ) => {
instance . slots [ name ] = true ;
} ) ;
if ( instance . slots [ SLOT _DEFAULT _NAME ] ) {
instance . slots . default = true ;
}
}
ctx . getOpenerEventChannel = function ( ) {
{
if ( my . canIUse ( "getOpenerEventChannel" ) )
return options . mpInstance . getOpenerEventChannel ( ) ;
}
if ( ! this . _ _eventChannel _ _ ) {
this . _ _eventChannel _ _ = new EventChannel ( ) ;
}
return this . _ _eventChannel _ _ ;
} ;
ctx . $hasHook = hasHook ;
ctx . $callHook = callHook ;
instance . emit = createEmitFn ( instance . emit , ctx ) ;
}
function initComponentInstance ( instance , options ) {
initBaseInstance ( instance , options ) ;
const ctx = instance . ctx ;
MP _METHODS . forEach ( ( method ) => {
ctx [ method ] = function ( ... args ) {
const mpInstance = ctx . $scope ;
if ( mpInstance && mpInstance [ method ] ) {
return mpInstance [ method ] . apply ( mpInstance , args ) ;
}
{
return my [ method ] && my [ method ] . apply ( my , args ) ;
}
} ;
} ) ;
}
function initMocks ( instance , mpInstance , mocks2 ) {
const ctx = instance . ctx ;
mocks2 . forEach ( ( mock ) => {
if ( hasOwn ( mpInstance , mock ) ) {
instance [ mock ] = ctx [ mock ] = mpInstance [ mock ] ;
}
} ) ;
}
function hasHook ( name ) {
const hooks = this . $ [ name ] ;
if ( hooks && hooks . length ) {
return true ;
}
return false ;
}
function callHook ( name , args ) {
if ( name === "mounted" ) {
callHook . call ( this , "bm" ) ;
this . $ . isMounted = true ;
name = "m" ;
}
{
if ( name === "onLoad" && args && args . _ _id _ _ && isFunction ( my . getEventChannel ) ) {
this . _ _eventChannel _ _ = my . getEventChannel ( args . _ _id _ _ ) ;
delete args . _ _id _ _ ;
}
}
const hooks = this . $ [ name ] ;
return hooks && invokeArrayFns ( hooks , args ) ;
}
const PAGE _INIT _HOOKS = [
ON _LOAD ,
ON _SHOW ,
ON _HIDE ,
ON _UNLOAD ,
ON _RESIZE ,
ON _TAB _ITEM _TAP ,
ON _REACH _BOTTOM ,
ON _PULL _DOWN _REFRESH ,
ON _ADD _TO _FAVORITES
// 'onReady', // lifetimes.ready
// 'onPageScroll', // 影响性能,开发者手动注册
// 'onShareTimeline', // 右上角菜单,开发者手动注册
// 'onShareAppMessage' // 右上角菜单,开发者手动注册
] ;
function findHooks ( vueOptions , hooks = /* @__PURE__ */ new Set ( ) ) {
if ( vueOptions ) {
Object . keys ( vueOptions ) . forEach ( ( name ) => {
if ( isUniLifecycleHook ( name , vueOptions [ name ] ) ) {
hooks . add ( name ) ;
}
} ) ;
{
const { extends : extendsOptions , mixins } = vueOptions ;
if ( mixins ) {
mixins . forEach ( ( mixin ) => findHooks ( mixin , hooks ) ) ;
}
if ( extendsOptions ) {
findHooks ( extendsOptions , hooks ) ;
}
}
}
return hooks ;
}
function initHook ( mpOptions , hook , excludes ) {
if ( excludes . indexOf ( hook ) === - 1 && ! hasOwn ( mpOptions , hook ) ) {
mpOptions [ hook ] = function ( args ) {
return this . $vm && this . $vm . $callHook ( hook , args ) ;
} ;
}
}
const EXCLUDE _HOOKS = [ ON _READY ] ;
function initHooks ( mpOptions , hooks , excludes = EXCLUDE _HOOKS ) {
hooks . forEach ( ( hook ) => initHook ( mpOptions , hook , excludes ) ) ;
}
function initUnknownHooks ( mpOptions , vueOptions , excludes = EXCLUDE _HOOKS ) {
findHooks ( vueOptions ) . forEach ( ( hook ) => initHook ( mpOptions , hook , excludes ) ) ;
}
function initRuntimeHooks ( mpOptions , runtimeHooks ) {
if ( ! runtimeHooks ) {
return ;
}
const hooks = Object . keys ( MINI _PROGRAM _PAGE _RUNTIME _HOOKS ) ;
hooks . forEach ( ( hook ) => {
if ( runtimeHooks & MINI _PROGRAM _PAGE _RUNTIME _HOOKS [ hook ] ) {
initHook ( mpOptions , hook , [ ] ) ;
}
} ) ;
}
const HOOKS = [
ON _SHOW ,
ON _HIDE ,
ON _ERROR ,
ON _THEME _CHANGE ,
ON _PAGE _NOT _FOUND ,
ON _UNHANDLE _REJECTION
] ;
function parseApp ( instance , parseAppOptions2 ) {
const internalInstance = instance . $ ;
const appOptions = {
globalData : instance . $options && instance . $options . globalData || { } ,
$vm : instance ,
// mp-alipay 组件 data 初始化比 onLaunch 早,提前挂载
onLaunch ( options ) {
this . $vm = instance ;
const ctx = internalInstance . ctx ;
if ( this . $vm && ctx . $scope ) {
return ;
}
initBaseInstance ( internalInstance , {
mpType : "app" ,
mpInstance : this ,
slots : [ ]
} ) ;
ctx . globalData = this . globalData ;
instance . $callHook ( ON _LAUNCH , options ) ;
}
} ;
const { onError } = internalInstance ;
if ( onError ) {
internalInstance . appContext . config . errorHandler = ( err ) => {
instance . $callHook ( ON _ERROR , err ) ;
} ;
}
initLocale ( instance ) ;
const vueOptions = instance . $ . type ;
initHooks ( appOptions , HOOKS ) ;
initUnknownHooks ( appOptions , vueOptions ) ;
{
const methods = vueOptions . methods ;
methods && extend ( appOptions , methods ) ;
}
if ( parseAppOptions2 ) {
parseAppOptions2 . parse ( appOptions ) ;
}
return appOptions ;
}
function initCreateApp ( parseAppOptions2 ) {
return function createApp2 ( vm ) {
return App ( parseApp ( vm , parseAppOptions2 ) ) ;
} ;
}
function initCreateSubpackageApp ( parseAppOptions2 ) {
return function createApp2 ( vm ) {
const appOptions = parseApp ( vm , parseAppOptions2 ) ;
const app = isFunction ( getApp ) && getApp ( {
allowDefault : true
} ) ;
if ( ! app )
return ;
vm . $ . ctx . $scope = app ;
const globalData = app . globalData ;
if ( globalData ) {
Object . keys ( appOptions . globalData ) . forEach ( ( name ) => {
if ( ! hasOwn ( globalData , name ) ) {
globalData [ name ] = appOptions . globalData [ name ] ;
}
} ) ;
}
Object . keys ( appOptions ) . forEach ( ( name ) => {
if ( ! hasOwn ( app , name ) ) {
app [ name ] = appOptions [ name ] ;
}
} ) ;
initAppLifecycle ( appOptions , vm ) ;
} ;
}
function initAppLifecycle ( appOptions , vm ) {
if ( isFunction ( appOptions . onLaunch ) ) {
const args = my . getLaunchOptionsSync && my . getLaunchOptionsSync ( ) ;
appOptions . onLaunch ( args ) ;
}
if ( isFunction ( appOptions . onShow ) && my . onAppShow ) {
my . onAppShow ( ( args ) => {
vm . $callHook ( "onShow" , args ) ;
} ) ;
}
if ( isFunction ( appOptions . onHide ) && my . onAppHide ) {
my . onAppHide ( ( args ) => {
vm . $callHook ( "onHide" , args ) ;
} ) ;
}
}
function initLocale ( appVm ) {
const locale = ref ( normalizeLocale ( my . getSystemInfoSync ( ) . language ) || LOCALE _EN ) ;
Object . defineProperty ( appVm , "$locale" , {
get ( ) {
return locale . value ;
} ,
set ( v ) {
locale . value = v ;
}
} ) ;
}
function initVueIds ( vueIds , mpInstance ) {
if ( ! vueIds ) {
return ;
}
const ids = vueIds . split ( "," ) ;
const len = ids . length ;
if ( len === 1 ) {
mpInstance . _$vueId = ids [ 0 ] ;
} else if ( len === 2 ) {
mpInstance . _$vueId = ids [ 0 ] ;
mpInstance . _$vuePid = ids [ 1 ] ;
}
}
function initWxsCallMethods ( methods , wxsCallMethods ) {
if ( ! isArray ( wxsCallMethods ) ) {
return ;
}
wxsCallMethods . forEach ( ( callMethod ) => {
methods [ callMethod ] = function ( args ) {
return this . $vm [ callMethod ] ( args ) ;
} ;
} ) ;
}
function findVmByVueId ( instance , vuePid ) {
const $children = instance . $children ;
for ( let i = $children . length - 1 ; i >= 0 ; i -- ) {
const childVm = $children [ i ] ;
if ( childVm . $scope . _$vueId === vuePid ) {
return childVm ;
}
}
let parentVm ;
for ( let i = $children . length - 1 ; i >= 0 ; i -- ) {
parentVm = findVmByVueId ( $children [ i ] , vuePid ) ;
if ( parentVm ) {
return parentVm ;
}
}
}
const builtInProps = [
// 百度小程序,快手小程序自定义组件不支持绑定动态事件, 动态dataset, 故通过props传递事件信息
// event-opts
"eO" ,
// 组件 ref
"uR" ,
// 组件 ref-in-for
"uRIF" ,
// 组件 id
"uI" ,
// 组件类型 m: 小程序组件
"uT" ,
// 组件 props
"uP" ,
// 小程序不能直接定义 $slots 的 props, 所以通过 vueSlots 转换到 $slots
"uS"
] ;
function initDefaultProps ( options , isBehavior = false ) {
const properties = { } ;
if ( ! isBehavior ) {
builtInProps . forEach ( ( name ) => {
properties [ name ] = {
type : null ,
value : ""
} ;
} ) ;
properties . uS = {
type : null ,
value : [ ] ,
observer : function ( newVal ) {
const $slots = /* @__PURE__ */ Object . create ( null ) ;
newVal && newVal . forEach ( ( slotName ) => {
$slots [ slotName ] = true ;
} ) ;
this . setData ( {
$slots
} ) ;
}
} ;
}
if ( options . behaviors ) {
2024-12-10 07:02:06 +00:00
if ( options . behaviors . includes ( "__GLOBAL__://form-field" ) ) {
2024-10-17 05:04:16 +00:00
if ( ! options . properties || ! options . properties . name ) {
properties . name = {
type : null ,
value : ""
} ;
}
if ( ! options . properties || ! options . properties . value ) {
properties . value = {
type : null ,
value : ""
} ;
}
}
}
return properties ;
}
function initVirtualHostProps ( options ) {
const properties = { } ;
{
{
properties . virtualHostStyle = {
type : null ,
value : ""
} ;
properties . virtualHostClass = {
type : null ,
value : ""
} ;
}
}
return properties ;
}
function initProps ( mpComponentOptions ) {
if ( ! mpComponentOptions . properties ) {
mpComponentOptions . properties = { } ;
}
extend ( mpComponentOptions . properties , initDefaultProps ( mpComponentOptions ) , initVirtualHostProps ( mpComponentOptions . options ) ) ;
}
function findPropsData ( properties , isPage ) {
return ( isPage ? findPagePropsData ( properties ) : findComponentPropsData ( properties . uP ) ) || { } ;
}
function findPagePropsData ( properties ) {
const propsData = { } ;
2024-12-10 07:02:06 +00:00
if ( isPlainObject$1 ( properties ) ) {
2024-10-17 05:04:16 +00:00
Object . keys ( properties ) . forEach ( ( name ) => {
if ( builtInProps . indexOf ( name ) === - 1 ) {
propsData [ name ] = properties [ name ] ;
}
} ) ;
}
return propsData ;
}
function initData ( _ ) {
return { } ;
}
function updateMiniProgramComponentProperties ( up , mpInstance ) {
const prevProps = mpInstance . props ;
const nextProps = findComponentPropsData ( up ) || { } ;
if ( hasPropsChanged ( prevProps , nextProps , false ) ) {
mpInstance . setData ( nextProps ) ;
}
}
function updateComponentProps ( up , instance ) {
const prevProps = toRaw ( instance . props ) ;
const nextProps = findComponentPropsData ( up ) || { } ;
if ( hasPropsChanged ( prevProps , nextProps ) ) {
updateProps ( instance , nextProps , prevProps , false ) ;
if ( hasQueueJob ( instance . update ) ) {
invalidateJob ( instance . update ) ;
}
{
instance . update ( ) ;
}
}
}
function hasPropsChanged ( prevProps , nextProps , checkLen = true ) {
const nextKeys = Object . keys ( nextProps ) ;
if ( checkLen && 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 ] ) {
return true ;
}
}
return false ;
}
function initBehaviors ( vueOptions ) {
const vueBehaviors = vueOptions . behaviors ;
let vueProps = vueOptions . props ;
if ( ! vueProps ) {
vueOptions . props = vueProps = [ ] ;
}
const behaviors = [ ] ;
if ( isArray ( vueBehaviors ) ) {
vueBehaviors . forEach ( ( behavior ) => {
2024-12-10 07:02:06 +00:00
behaviors . push ( behavior . replace ( "uni://" , "__GLOBAL__://" ) ) ;
2024-10-17 05:04:16 +00:00
if ( behavior === "uni://form-field" ) {
if ( isArray ( vueProps ) ) {
vueProps . push ( "name" ) ;
vueProps . push ( "modelValue" ) ;
} else {
vueProps . name = {
type : String ,
default : ""
} ;
vueProps . modelValue = {
type : [ String , Number , Boolean , Array , Object , Date ] ,
default : ""
} ;
}
}
} ) ;
}
return behaviors ;
}
let $createComponentFn ;
let $destroyComponentFn ;
function getAppVm ( ) {
return getApp ( ) . $vm ;
}
function $createComponent ( initialVNode , options ) {
if ( ! $createComponentFn ) {
$createComponentFn = getAppVm ( ) . $createComponent ;
}
const proxy = $createComponentFn ( initialVNode , options ) ;
return getExposeProxy ( proxy . $ ) || proxy ;
}
function $destroyComponent ( instance ) {
if ( ! $destroyComponentFn ) {
$destroyComponentFn = getAppVm ( ) . $destroyComponent ;
}
return $destroyComponentFn ( instance ) ;
}
function initCreatePluginApp ( parseAppOptions2 ) {
return function createApp2 ( vm ) {
initAppLifecycle ( parseApp ( vm , parseAppOptions2 ) , vm ) ;
} ;
}
function handleLink$1 ( event ) {
const detail = event . detail || event . value ;
const vuePid = detail . vuePid ;
let parentVm ;
if ( vuePid ) {
parentVm = findVmByVueId ( this . $vm , vuePid ) ;
}
if ( ! parentVm ) {
parentVm = this . $vm ;
}
detail . parent = parentVm ;
}
const isComponent2 = my . canIUse ( "component2" ) ;
const mocks = [ "$id" ] ;
function initRelation ( mpInstance , detail ) {
mpInstance . props . onVI ( detail ) ;
}
function initSpecialMethods ( mpInstance ) {
if ( ! mpInstance . $vm ) {
return ;
}
let path = mpInstance . is || mpInstance . route ;
if ( ! path ) {
return ;
}
if ( path . indexOf ( "/" ) === 0 ) {
path = path . slice ( 1 ) ;
}
const specialMethods = my . specialMethods && my . specialMethods [ path ] ;
if ( specialMethods ) {
specialMethods . forEach ( ( method ) => {
if ( isFunction ( mpInstance . $vm [ method ] ) ) {
mpInstance [ method ] = function ( event ) {
if ( hasOwn ( event , "markerId" ) ) {
event . detail = typeof event . detail === "object" ? event . detail : { } ;
event . detail . markerId = event . markerId ;
}
mpInstance . $vm [ method ] ( event ) ;
} ;
}
} ) ;
}
}
function initChildVues ( mpInstance ) {
if ( ! mpInstance . $vm ) {
return ;
}
const childVues = mpInstance . _$childVues ;
if ( childVues ) {
childVues . forEach ( ( relationOptions ) => {
handleLink$1 . call ( mpInstance , {
detail : relationOptions
} ) ;
const { mpInstance : childMPInstance , createComponent : createComponent2 } = relationOptions ;
childMPInstance . $vm = createComponent2 ( relationOptions . parent ) ;
initSpecialMethods ( childMPInstance ) ;
if ( relationOptions . parent ) {
handleRef . call ( relationOptions . parent . $scope , childMPInstance ) ;
}
initChildVues ( childMPInstance ) ;
childMPInstance . $vm . $callHook ( "mounted" ) ;
childMPInstance . $vm . $callHook ( ON _READY ) ;
} ) ;
}
delete mpInstance . _$childVues ;
}
function handleRef ( ref2 ) {
if ( ! ref2 ) {
return ;
}
const refName = ref2 . props . uR ;
const refInForName = ref2 . props . uRIF ;
if ( ! refName && ! refInForName ) {
return ;
}
const instance = this . $vm . $ ;
const refs = instance . refs === EMPTY _OBJ ? instance . refs = { } : instance . refs ;
const { setupState } = instance ;
const refValue = ref2 . $vm ;
if ( refName ) {
if ( isString ( refName ) ) {
refs [ refName ] = refValue ;
if ( hasOwn ( setupState , refName ) ) {
setupState [ refName ] = refValue ;
}
} else {
setRef ( refName , refValue , refs , setupState ) ;
}
} else if ( refInForName ) {
if ( isString ( refInForName ) ) {
( refs [ refInForName ] || ( refs [ refInForName ] = [ ] ) ) . push ( refValue ) ;
} else {
setRef ( refInForName , refValue , refs , setupState ) ;
}
}
}
function isTemplateRef ( opts ) {
return ! ! ( opts && opts . r ) ;
}
function setRef ( ref2 , refValue , refs , setupState ) {
if ( isRef ( ref2 ) ) {
ref2 . value = refValue ;
} else if ( isFunction ( ref2 ) ) {
const templateRef = ref2 ( refValue , refs ) ;
if ( isTemplateRef ( templateRef ) ) {
setTemplateRef ( templateRef , refValue , setupState ) ;
}
}
}
function triggerEvent ( type , detail ) {
const handler = this . props [ customizeEvent ( "on-" + type ) ] ;
if ( ! handler ) {
return ;
}
const target = {
dataset : { }
} ;
handler ( {
type : customizeEvent ( type ) ,
target ,
currentTarget : target ,
detail
} ) ;
}
function initPropsObserver ( componentOptions ) {
const observe = function observe2 ( props ) {
const nextProps = isComponent2 ? props : this . props ;
const up = nextProps . uP ;
if ( ! up ) {
return ;
}
if ( this . $vm ) {
updateComponentProps ( up , this . $vm . $ ) ;
} else if ( this . props . uT === "m" ) {
updateMiniProgramComponentProperties ( up , this ) ;
}
} ;
if ( isComponent2 ) {
componentOptions . deriveDataFromProps = observe ;
} else {
componentOptions . didUpdate = observe ;
}
}
const handleLink = function ( ) {
if ( isComponent2 ) {
return function handleLink2 ( detail ) {
return handleLink$1 . call ( this , {
detail
} ) ;
} ;
}
return function handleLink2 ( detail ) {
if ( this . $vm && this . $vm . $ . isMounted ) {
return handleLink$1 . call ( this , {
detail
} ) ;
}
( this . _$childVues || ( this . _$childVues = [ ] ) ) . unshift ( detail ) ;
} ;
} ( ) ;
function createVueComponent ( mpType , mpInstance , vueOptions , parent ) {
return $createComponent ( {
type : vueOptions ,
props : findPropsData ( mpInstance . props , mpType === "page" )
} , {
mpType ,
mpInstance ,
slots : mpInstance . props . uS || { } ,
// vueSlots
parentComponent : parent && parent . $ ,
onBeforeSetup ( instance , options ) {
initMocks ( instance , mpInstance , mocks ) ;
initComponentInstance ( instance , options ) ;
}
} ) ;
}
const MPComponent = Component ;
Component = function ( options ) {
const isVueComponent = options . props && typeof options . props . uP !== "undefined" ;
if ( ! isVueComponent ) {
initPropsObserver ( options ) ;
}
return MPComponent ( options ) ;
} ;
function onAliAuthError ( method , $event ) {
$event . type = "getphonenumber" ;
$event . detail . errMsg = "getPhoneNumber:fail Error: " + $event . detail . errorMessage ;
method ( $event ) ;
}
function onAliGetAuthorize ( method , $event ) {
my . getPhoneNumber ( {
success : ( res ) => {
$event . type = "getphonenumber" ;
const response = JSON . parse ( res . response ) ;
$event . detail . errMsg = "getPhoneNumber:ok" ;
$event . detail . encryptedData = response . response ;
$event . detail . sign = response . sign ;
method ( $event ) ;
} ,
fail : ( res ) => {
$event . type = "getphonenumber" ;
$event . detail . errMsg = "getPhoneNumber:fail Error: " + JSON . stringify ( res ) ;
method ( $event ) ;
}
} ) ;
}
function parse ( appOptions ) {
const oldOnLaunch = appOptions . onLaunch ;
appOptions . onLaunch = function onLaunch ( options ) {
oldOnLaunch . call ( this , options ) ;
if ( ! this . $vm ) {
return ;
}
const globalProperties = this . $vm . $app . config . globalProperties ;
if ( ! globalProperties . $onAliAuthError ) {
globalProperties . $onAliAuthError = onAliAuthError ;
globalProperties . $onAliGetAuthorize = onAliGetAuthorize ;
}
} ;
}
var parseAppOptions = /* @__PURE__ */ Object . freeze ( {
_ _proto _ _ : null ,
parse
} ) ;
function initCreatePage ( ) {
return function createPage2 ( vueOptions ) {
vueOptions = vueOptions . default || vueOptions ;
const pageOptions = {
onLoad ( query ) {
this . options = query ;
this . $page = {
fullPath : addLeadingSlash ( this . route + stringifyQuery ( query ) )
} ;
this . props = query ;
this . $vm = createVueComponent ( "page" , this , vueOptions ) ;
initSpecialMethods ( this ) ;
this . $vm . $callHook ( ON _LOAD , query ) ;
} ,
onShow ( ) {
this . $vm . $callHook ( ON _SHOW ) ;
} ,
onReady ( ) {
initChildVues ( this ) ;
this . $vm . $callHook ( "mounted" ) ;
this . $vm . $callHook ( ON _READY ) ;
} ,
onUnload ( ) {
if ( this . $vm ) {
this . $vm . $callHook ( ON _UNLOAD ) ;
$destroyComponent ( this . $vm ) ;
}
} ,
events : {
// 支付宝小程序有些页面事件只能放在events下
onBack ( ) {
this . $vm . $callHook ( ON _BACK _PRESS ) ;
} ,
onKeyboardHeight : ( res ) => {
my . $emit ( "uni:keyboardHeightChange" , res ) ;
}
} ,
_ _r : handleRef ,
_ _l : handleLink
} ;
2024-12-10 07:02:06 +00:00
if ( isPlainObject$1 ( vueOptions . events ) ) {
2024-10-17 05:04:16 +00:00
extend ( pageOptions . events , vueOptions . events ) ;
}
{
pageOptions . data = initData ( ) ;
}
initHooks ( pageOptions , PAGE _INIT _HOOKS ) ;
initUnknownHooks ( pageOptions , vueOptions ) ;
initRuntimeHooks ( pageOptions , vueOptions . _ _runtimeHooks ) ;
initWxsCallMethods ( pageOptions , vueOptions . wxsCallMethods ) ;
return Page ( pageOptions ) ;
} ;
}
function initComponentProps ( _rawProps ) {
const propertiesOptions = {
properties : { }
} ;
initProps ( propertiesOptions ) ;
const properties = propertiesOptions . properties ;
const props = {
// onVueInit
onVI : function ( ) {
}
} ;
Object . keys ( properties ) . forEach ( ( key ) => {
if ( key !== "uS" ) {
props [ key ] = properties [ key ] . value ;
}
} ) ;
return props ;
}
function initVm ( mpInstance , createComponent2 ) {
if ( mpInstance . $vm ) {
return ;
}
const properties = mpInstance . props ;
initVueIds ( properties . uI , mpInstance ) ;
const relationOptions = {
vuePid : mpInstance . _$vuePid ,
mpInstance ,
createComponent : createComponent2
} ;
if ( isComponent2 ) {
initRelation ( mpInstance , relationOptions ) ;
mpInstance . $vm = createComponent2 ( relationOptions . parent ) ;
} else {
initRelation ( mpInstance , relationOptions ) ;
if ( relationOptions . parent ) {
mpInstance . $vm = createComponent2 ( relationOptions . parent ) ;
handleRef . call ( relationOptions . parent . $scope , mpInstance ) ;
initChildVues ( mpInstance ) ;
mpInstance . $vm . $callHook ( "mounted" ) ;
}
}
}
function initCreateComponent ( ) {
return function createComponent2 ( vueOptions ) {
vueOptions = vueOptions . default || vueOptions ;
const mpComponentOptions = {
props : initComponentProps ( vueOptions . props ) ,
didMount ( ) {
const createComponent3 = ( parent ) => {
return createVueComponent ( "component" , this , vueOptions , parent ) ;
} ;
if ( my . dd ) {
setTimeout ( ( ) => {
initVm ( this , createComponent3 ) ;
} , 4 ) ;
} else {
initVm ( this , createComponent3 ) ;
}
initSpecialMethods ( this ) ;
if ( isComponent2 ) {
this . $vm . $callHook ( "mounted" ) ;
}
} ,
didUnmount ( ) {
if ( this . $vm ) {
pruneComponentPropsCache ( this . $vm . $ . uid ) ;
$destroyComponent ( this . $vm ) ;
}
} ,
methods : {
_ _r : handleRef ,
_ _l : handleLink ,
triggerEvent
}
} ;
{
mpComponentOptions . data = initData ( ) ;
mpComponentOptions . mixins = initBehaviors ( vueOptions ) ;
}
if ( isComponent2 ) {
mpComponentOptions . onInit = function onInit ( ) {
initVm ( this , ( parent ) => {
return createVueComponent ( "component" , this , vueOptions , parent ) ;
} ) ;
} ;
}
initPropsObserver ( mpComponentOptions ) ;
initWxsCallMethods ( mpComponentOptions . methods , vueOptions . wxsCallMethods ) ;
return Component ( mpComponentOptions ) ;
} ;
}
const createApp = initCreateApp ( parseAppOptions ) ;
const createPage = initCreatePage ( ) ;
const createComponent = initCreateComponent ( ) ;
const createPluginApp = initCreatePluginApp ( parseAppOptions ) ;
const createSubpackageApp = initCreateSubpackageApp ( parseAppOptions ) ;
my . EventChannel = EventChannel ;
my . createApp = createApp ;
my . createPage = createPage ;
my . createComponent = createComponent ;
my . createPluginApp = createPluginApp ;
my . createSubpackageApp = createSubpackageApp ;
2024-12-10 07:02:06 +00:00
var isVue2 = false ;
function set ( target , key , val ) {
if ( Array . isArray ( target ) ) {
target . length = Math . max ( target . length , key ) ;
target . splice ( key , 1 , val ) ;
return val ;
}
target [ key ] = val ;
return val ;
}
function del ( target , key ) {
if ( Array . isArray ( target ) ) {
target . splice ( key , 1 ) ;
return ;
}
delete target [ key ] ;
}
/ * !
* pinia v2 . 1.7
* ( c ) 2023 Eduardo San Martin Morote
* @ license MIT
* /
let activePinia ;
const setActivePinia = ( pinia ) => activePinia = pinia ;
const piniaSymbol = Symbol ( "pinia" ) ;
function isPlainObject ( o2 ) {
return o2 && typeof o2 === "object" && Object . prototype . toString . call ( o2 ) === "[object Object]" && typeof o2 . toJSON !== "function" ;
}
var MutationType ;
( function ( MutationType2 ) {
MutationType2 [ "direct" ] = "direct" ;
MutationType2 [ "patchObject" ] = "patch object" ;
MutationType2 [ "patchFunction" ] = "patch function" ;
} ) ( MutationType || ( MutationType = { } ) ) ;
const IS _CLIENT = typeof window !== "undefined" ;
const USE _DEVTOOLS = IS _CLIENT ;
const componentStateTypes = [ ] ;
const getStoreType = ( id2 ) => "🍍 " + id2 ;
function addStoreToDevtools ( app , store ) {
if ( ! componentStateTypes . includes ( getStoreType ( store . $id ) ) ) {
componentStateTypes . push ( getStoreType ( store . $id ) ) ;
}
}
function patchActionForGrouping ( store , actionNames , wrapWithProxy ) {
const actions = actionNames . reduce ( ( storeActions , actionName ) => {
storeActions [ actionName ] = toRaw ( store ) [ actionName ] ;
return storeActions ;
} , { } ) ;
for ( const actionName in actions ) {
store [ actionName ] = function ( ) {
const trackedStore = wrapWithProxy ? new Proxy ( store , {
get ( ... args ) {
return Reflect . get ( ... args ) ;
} ,
set ( ... args ) {
return Reflect . set ( ... args ) ;
}
} ) : store ;
const retValue = actions [ actionName ] . apply ( trackedStore , arguments ) ;
return retValue ;
} ;
}
}
function devtoolsPlugin ( { app , store , options } ) {
if ( store . $id . startsWith ( "__hot:" ) ) {
return ;
}
store . _isOptionsAPI = ! ! options . state ;
patchActionForGrouping ( store , Object . keys ( options . actions ) , store . _isOptionsAPI ) ;
const originalHotUpdate = store . _hotUpdate ;
toRaw ( store ) . _hotUpdate = function ( newStore ) {
originalHotUpdate . apply ( this , arguments ) ;
patchActionForGrouping ( store , Object . keys ( newStore . _hmrPayload . actions ) , ! ! store . _isOptionsAPI ) ;
} ;
addStoreToDevtools (
app ,
// FIXME: is there a way to allow the assignment from Store<Id, S, G, A> to StoreGeneric?
store
) ;
}
function createPinia ( ) {
const scope = effectScope ( true ) ;
const state = scope . run ( ( ) => ref ( { } ) ) ;
let _p = [ ] ;
let toBeInstalled = [ ] ;
const pinia = markRaw ( {
install ( app ) {
setActivePinia ( pinia ) ;
{
pinia . _a = app ;
app . provide ( piniaSymbol , pinia ) ;
app . config . globalProperties . $pinia = pinia ;
toBeInstalled . forEach ( ( plugin2 ) => _p . push ( plugin2 ) ) ;
toBeInstalled = [ ] ;
}
} ,
use ( plugin2 ) {
if ( ! this . _a && ! isVue2 ) {
toBeInstalled . push ( plugin2 ) ;
} else {
_p . push ( plugin2 ) ;
}
return this ;
} ,
_p ,
// it's actually undefined here
// @ts-expect-error
_a : null ,
_e : scope ,
_s : /* @__PURE__ */ new Map ( ) ,
state
} ) ;
if ( USE _DEVTOOLS && typeof Proxy !== "undefined" ) {
pinia . use ( devtoolsPlugin ) ;
}
return pinia ;
}
function patchObject ( newState , oldState ) {
for ( const key in oldState ) {
const subPatch = oldState [ key ] ;
if ( ! ( key in newState ) ) {
continue ;
}
const targetValue = newState [ key ] ;
if ( isPlainObject ( targetValue ) && isPlainObject ( subPatch ) && ! isRef ( subPatch ) && ! isReactive ( subPatch ) ) {
newState [ key ] = patchObject ( targetValue , subPatch ) ;
} else {
{
newState [ key ] = subPatch ;
}
}
}
return newState ;
}
const noop = ( ) => {
} ;
function addSubscription ( subscriptions , callback , detached , onCleanup = noop ) {
subscriptions . push ( callback ) ;
const removeSubscription = ( ) => {
const idx = subscriptions . indexOf ( callback ) ;
if ( idx > - 1 ) {
subscriptions . splice ( idx , 1 ) ;
onCleanup ( ) ;
}
} ;
if ( ! detached && getCurrentScope ( ) ) {
onScopeDispose ( removeSubscription ) ;
}
return removeSubscription ;
}
function triggerSubscriptions ( subscriptions , ... args ) {
subscriptions . slice ( ) . forEach ( ( callback ) => {
callback ( ... args ) ;
} ) ;
}
const fallbackRunWithContext = ( fn ) => fn ( ) ;
function mergeReactiveObjects ( target , patchToApply ) {
if ( target instanceof Map && patchToApply instanceof Map ) {
patchToApply . forEach ( ( value , key ) => target . set ( key , value ) ) ;
}
if ( target instanceof Set && patchToApply instanceof Set ) {
patchToApply . forEach ( target . add , target ) ;
}
for ( const key in patchToApply ) {
if ( ! patchToApply . hasOwnProperty ( key ) )
continue ;
const subPatch = patchToApply [ key ] ;
const targetValue = target [ key ] ;
if ( isPlainObject ( targetValue ) && isPlainObject ( subPatch ) && target . hasOwnProperty ( key ) && ! isRef ( subPatch ) && ! isReactive ( subPatch ) ) {
target [ key ] = mergeReactiveObjects ( targetValue , subPatch ) ;
} else {
target [ key ] = subPatch ;
}
}
return target ;
}
const skipHydrateSymbol = Symbol ( "pinia:skipHydration" ) ;
function shouldHydrate ( obj ) {
return ! isPlainObject ( obj ) || ! obj . hasOwnProperty ( skipHydrateSymbol ) ;
}
const { assign } = Object ;
function isComputed ( o2 ) {
return ! ! ( isRef ( o2 ) && o2 . effect ) ;
}
function createOptionsStore ( id2 , options , pinia , hot ) {
const { state , actions , getters } = options ;
const initialState = pinia . state . value [ id2 ] ;
let store ;
function setup ( ) {
if ( ! initialState && ! hot ) {
{
pinia . state . value [ id2 ] = state ? state ( ) : { } ;
}
}
const localState = hot ? (
// use ref() to unwrap refs inside state TODO: check if this is still necessary
toRefs ( ref ( state ? state ( ) : { } ) . value )
) : toRefs ( pinia . state . value [ id2 ] ) ;
return assign ( localState , actions , Object . keys ( getters || { } ) . reduce ( ( computedGetters , name ) => {
if ( name in localState ) {
console . warn ( ` [🍍]: A getter cannot have the same name as another state property. Rename one of them. Found with " ${ name } " in store " ${ id2 } ". ` ) ;
}
computedGetters [ name ] = markRaw ( computed ( ( ) => {
setActivePinia ( pinia ) ;
const store2 = pinia . _s . get ( id2 ) ;
return getters [ name ] . call ( store2 , store2 ) ;
} ) ) ;
return computedGetters ;
} , { } ) ) ;
}
store = createSetupStore ( id2 , setup , options , pinia , hot , true ) ;
return store ;
}
function createSetupStore ( $id , setup , options = { } , pinia , hot , isOptionsStore ) {
let scope ;
const optionsForPlugin = assign ( { actions : { } } , options ) ;
if ( ! pinia . _e . active ) {
throw new Error ( "Pinia destroyed" ) ;
}
const $subscribeOptions = {
deep : true
// flush: 'post',
} ;
{
$subscribeOptions . onTrigger = ( event ) => {
if ( isListening ) {
debuggerEvents = event ;
} else if ( isListening == false && ! store . _hotUpdating ) {
if ( Array . isArray ( debuggerEvents ) ) {
debuggerEvents . push ( event ) ;
} else {
console . error ( "🍍 debuggerEvents should be an array. This is most likely an internal Pinia bug." ) ;
}
}
} ;
}
let isListening ;
let isSyncListening ;
let subscriptions = [ ] ;
let actionSubscriptions = [ ] ;
let debuggerEvents ;
const initialState = pinia . state . value [ $id ] ;
if ( ! isOptionsStore && ! initialState && ! hot ) {
{
pinia . state . value [ $id ] = { } ;
}
}
const hotState = ref ( { } ) ;
let activeListener ;
function $patch ( partialStateOrMutator ) {
let subscriptionMutation ;
isListening = isSyncListening = false ;
{
debuggerEvents = [ ] ;
}
if ( typeof partialStateOrMutator === "function" ) {
partialStateOrMutator ( pinia . state . value [ $id ] ) ;
subscriptionMutation = {
type : MutationType . patchFunction ,
storeId : $id ,
events : debuggerEvents
} ;
} else {
mergeReactiveObjects ( pinia . state . value [ $id ] , partialStateOrMutator ) ;
subscriptionMutation = {
type : MutationType . patchObject ,
payload : partialStateOrMutator ,
storeId : $id ,
events : debuggerEvents
} ;
}
const myListenerId = activeListener = Symbol ( ) ;
nextTick$1 ( ) . then ( ( ) => {
if ( activeListener === myListenerId ) {
isListening = true ;
}
} ) ;
isSyncListening = true ;
triggerSubscriptions ( subscriptions , subscriptionMutation , pinia . state . value [ $id ] ) ;
}
const $reset = isOptionsStore ? function $reset2 ( ) {
const { state } = options ;
const newState = state ? state ( ) : { } ;
this . $patch ( ( $state ) => {
assign ( $state , newState ) ;
} ) ;
} : (
/* istanbul ignore next */
( ) => {
throw new Error ( ` 🍍: Store " ${ $id } " is built using the setup syntax and does not implement $ reset(). ` ) ;
}
) ;
function $dispose ( ) {
scope . stop ( ) ;
subscriptions = [ ] ;
actionSubscriptions = [ ] ;
pinia . _s . delete ( $id ) ;
}
function wrapAction ( name , action ) {
return function ( ) {
setActivePinia ( pinia ) ;
const args = Array . from ( arguments ) ;
const afterCallbackList = [ ] ;
const onErrorCallbackList = [ ] ;
function after ( callback ) {
afterCallbackList . push ( callback ) ;
}
function onError ( callback ) {
onErrorCallbackList . push ( callback ) ;
}
triggerSubscriptions ( actionSubscriptions , {
args ,
name ,
store ,
after ,
onError
} ) ;
let ret ;
try {
ret = action . apply ( this && this . $id === $id ? this : store , args ) ;
} catch ( error ) {
triggerSubscriptions ( onErrorCallbackList , error ) ;
throw error ;
}
if ( ret instanceof Promise ) {
return ret . then ( ( value ) => {
triggerSubscriptions ( afterCallbackList , value ) ;
return value ;
} ) . catch ( ( error ) => {
triggerSubscriptions ( onErrorCallbackList , error ) ;
return Promise . reject ( error ) ;
} ) ;
}
triggerSubscriptions ( afterCallbackList , ret ) ;
return ret ;
} ;
}
const _hmrPayload = /* @__PURE__ */ markRaw ( {
actions : { } ,
getters : { } ,
state : [ ] ,
hotState
} ) ;
const partialStore = {
_p : pinia ,
// _s: scope,
$id ,
$onAction : addSubscription . bind ( null , actionSubscriptions ) ,
$patch ,
$reset ,
$subscribe ( callback , options2 = { } ) {
const removeSubscription = addSubscription ( subscriptions , callback , options2 . detached , ( ) => stopWatcher ( ) ) ;
const stopWatcher = scope . run ( ( ) => watch ( ( ) => pinia . state . value [ $id ] , ( state ) => {
if ( options2 . flush === "sync" ? isSyncListening : isListening ) {
callback ( {
storeId : $id ,
type : MutationType . direct ,
events : debuggerEvents
} , state ) ;
}
} , assign ( { } , $subscribeOptions , options2 ) ) ) ;
return removeSubscription ;
} ,
$dispose
} ;
const store = reactive ( assign (
{
_hmrPayload ,
_customProperties : markRaw ( /* @__PURE__ */ new Set ( ) )
// devtools custom properties
} ,
partialStore
// must be added later
// setupStore
) ) ;
pinia . _s . set ( $id , store ) ;
const runWithContext = pinia . _a && pinia . _a . runWithContext || fallbackRunWithContext ;
const setupStore = runWithContext ( ( ) => pinia . _e . run ( ( ) => ( scope = effectScope ( ) ) . run ( setup ) ) ) ;
for ( const key in setupStore ) {
const prop = setupStore [ key ] ;
if ( isRef ( prop ) && ! isComputed ( prop ) || isReactive ( prop ) ) {
if ( hot ) {
set ( hotState . value , key , toRef ( setupStore , key ) ) ;
} else if ( ! isOptionsStore ) {
if ( initialState && shouldHydrate ( prop ) ) {
if ( isRef ( prop ) ) {
prop . value = initialState [ key ] ;
} else {
mergeReactiveObjects ( prop , initialState [ key ] ) ;
}
}
{
pinia . state . value [ $id ] [ key ] = prop ;
}
}
{
_hmrPayload . state . push ( key ) ;
}
} else if ( typeof prop === "function" ) {
const actionValue = hot ? prop : wrapAction ( key , prop ) ;
{
setupStore [ key ] = actionValue ;
}
{
_hmrPayload . actions [ key ] = prop ;
}
optionsForPlugin . actions [ key ] = prop ;
} else {
if ( isComputed ( prop ) ) {
_hmrPayload . getters [ key ] = isOptionsStore ? (
// @ts-expect-error
options . getters [ key ]
) : prop ;
if ( IS _CLIENT ) {
const getters = setupStore . _getters || // @ts-expect-error: same
( setupStore . _getters = markRaw ( [ ] ) ) ;
getters . push ( key ) ;
}
}
}
}
{
assign ( store , setupStore ) ;
assign ( toRaw ( store ) , setupStore ) ;
}
Object . defineProperty ( store , "$state" , {
get : ( ) => hot ? hotState . value : pinia . state . value [ $id ] ,
set : ( state ) => {
if ( hot ) {
throw new Error ( "cannot set hotState" ) ;
}
$patch ( ( $state ) => {
assign ( $state , state ) ;
} ) ;
}
} ) ;
{
store . _hotUpdate = markRaw ( ( newStore ) => {
store . _hotUpdating = true ;
newStore . _hmrPayload . state . forEach ( ( stateKey ) => {
if ( stateKey in store . $state ) {
const newStateTarget = newStore . $state [ stateKey ] ;
const oldStateSource = store . $state [ stateKey ] ;
if ( typeof newStateTarget === "object" && isPlainObject ( newStateTarget ) && isPlainObject ( oldStateSource ) ) {
patchObject ( newStateTarget , oldStateSource ) ;
} else {
newStore . $state [ stateKey ] = oldStateSource ;
}
}
set ( store , stateKey , toRef ( newStore . $state , stateKey ) ) ;
} ) ;
Object . keys ( store . $state ) . forEach ( ( stateKey ) => {
if ( ! ( stateKey in newStore . $state ) ) {
del ( store , stateKey ) ;
}
} ) ;
isListening = false ;
isSyncListening = false ;
pinia . state . value [ $id ] = toRef ( newStore . _hmrPayload , "hotState" ) ;
isSyncListening = true ;
nextTick$1 ( ) . then ( ( ) => {
isListening = true ;
} ) ;
for ( const actionName in newStore . _hmrPayload . actions ) {
const action = newStore [ actionName ] ;
set ( store , actionName , wrapAction ( actionName , action ) ) ;
}
for ( const getterName in newStore . _hmrPayload . getters ) {
const getter = newStore . _hmrPayload . getters [ getterName ] ;
const getterValue = isOptionsStore ? (
// special handling of options api
computed ( ( ) => {
setActivePinia ( pinia ) ;
return getter . call ( store , store ) ;
} )
) : getter ;
set ( store , getterName , getterValue ) ;
}
Object . keys ( store . _hmrPayload . getters ) . forEach ( ( key ) => {
if ( ! ( key in newStore . _hmrPayload . getters ) ) {
del ( store , key ) ;
}
} ) ;
Object . keys ( store . _hmrPayload . actions ) . forEach ( ( key ) => {
if ( ! ( key in newStore . _hmrPayload . actions ) ) {
del ( store , key ) ;
}
} ) ;
store . _hmrPayload = newStore . _hmrPayload ;
store . _getters = newStore . _getters ;
store . _hotUpdating = false ;
} ) ;
}
if ( USE _DEVTOOLS ) {
const nonEnumerable = {
writable : true ,
configurable : true ,
// avoid warning on devtools trying to display this property
enumerable : false
} ;
[ "_p" , "_hmrPayload" , "_getters" , "_customProperties" ] . forEach ( ( p2 ) => {
Object . defineProperty ( store , p2 , assign ( { value : store [ p2 ] } , nonEnumerable ) ) ;
} ) ;
}
pinia . _p . forEach ( ( extender ) => {
if ( USE _DEVTOOLS ) {
const extensions = scope . run ( ( ) => extender ( {
store ,
app : pinia . _a ,
pinia ,
options : optionsForPlugin
} ) ) ;
Object . keys ( extensions || { } ) . forEach ( ( key ) => store . _customProperties . add ( key ) ) ;
assign ( store , extensions ) ;
} else {
assign ( store , scope . run ( ( ) => extender ( {
store ,
app : pinia . _a ,
pinia ,
options : optionsForPlugin
} ) ) ) ;
}
} ) ;
if ( store . $state && typeof store . $state === "object" && typeof store . $state . constructor === "function" && ! store . $state . constructor . toString ( ) . includes ( "[native code]" ) ) {
console . warn ( ` [🍍]: The "state" must be a plain object. It cannot be
state : ( ) => new MyClass ( )
Found in store "${store.$id}" . ` );
}
if ( initialState && isOptionsStore && options . hydrate ) {
options . hydrate ( store . $state , initialState ) ;
}
isListening = true ;
isSyncListening = true ;
return store ;
}
function defineStore ( idOrOptions , setup , setupOptions ) {
let id2 ;
let options ;
const isSetupStore = typeof setup === "function" ;
if ( typeof idOrOptions === "string" ) {
id2 = idOrOptions ;
options = isSetupStore ? setupOptions : setup ;
} else {
options = idOrOptions ;
id2 = idOrOptions . id ;
if ( typeof id2 !== "string" ) {
throw new Error ( ` [🍍]: "defineStore()" must be passed a store id as its first argument. ` ) ;
}
}
function useStore ( pinia , hot ) {
const hasContext = hasInjectionContext ( ) ;
pinia = // in test mode, ignore the argument provided as we can always retrieve a
// pinia instance with getActivePinia()
pinia || ( hasContext ? inject ( piniaSymbol , null ) : null ) ;
if ( pinia )
setActivePinia ( pinia ) ;
if ( ! activePinia ) {
throw new Error ( ` [🍍]: "getActivePinia()" was called but there was no active Pinia. Are you trying to use a store before calling "app.use(pinia)"?
See https : //pinia.vuejs.org/core-concepts/outside-component-usage.html for help.
This will fail in production . ` );
}
pinia = activePinia ;
if ( ! pinia . _s . has ( id2 ) ) {
if ( isSetupStore ) {
createSetupStore ( id2 , setup , options , pinia ) ;
} else {
createOptionsStore ( id2 , options , pinia ) ;
}
{
useStore . _pinia = pinia ;
}
}
const store = pinia . _s . get ( id2 ) ;
if ( hot ) {
const hotId = "__hot:" + id2 ;
const newStore = isSetupStore ? createSetupStore ( hotId , setup , options , pinia , true ) : createOptionsStore ( hotId , assign ( { } , options ) , pinia , true ) ;
hot . _hotUpdate ( newStore ) ;
delete pinia . state . value [ hotId ] ;
pinia . _s . delete ( hotId ) ;
}
if ( IS _CLIENT ) {
const currentInstance2 = getCurrentInstance ( ) ;
if ( currentInstance2 && currentInstance2 . proxy && // avoid adding stores that are just built for hot module replacement
! hot ) {
const vm = currentInstance2 . proxy ;
const cache = "_pStores" in vm ? vm . _pStores : vm . _pStores = { } ;
cache [ id2 ] = store ;
}
}
return store ;
}
useStore . $id = id2 ;
return useStore ;
}
const createHook = ( lifecycle ) => ( hook , target = getCurrentInstance ( ) ) => {
! isInSSRComponentSetup && injectHook ( lifecycle , hook , target ) ;
} ;
const onShow = /* @__PURE__ */ createHook ( ON _SHOW ) ;
const onLoad = /* @__PURE__ */ createHook ( ON _LOAD ) ;
function mitt ( n2 ) {
return { all : n2 = n2 || /* @__PURE__ */ new Map ( ) , on : function ( t2 , e2 ) {
var i = n2 . get ( t2 ) ;
i ? i . push ( e2 ) : n2 . set ( t2 , [ e2 ] ) ;
} , off : function ( t2 , e2 ) {
var i = n2 . get ( t2 ) ;
i && ( e2 ? i . splice ( i . indexOf ( e2 ) >>> 0 , 1 ) : n2 . set ( t2 , [ ] ) ) ;
} , emit : function ( t2 , e2 ) {
var i = n2 . get ( t2 ) ;
i && i . slice ( ) . map ( function ( n3 ) {
n3 ( e2 ) ;
} ) , ( i = n2 . get ( "*" ) ) && i . slice ( ) . map ( function ( n3 ) {
n3 ( t2 , e2 ) ;
} ) ;
} } ;
}
2024-10-17 05:04:16 +00:00
exports . _export _sfc = _export _sfc ;
2024-12-10 07:02:06 +00:00
exports . createPinia = createPinia ;
2024-10-17 05:04:16 +00:00
exports . createSSRApp = createSSRApp ;
2024-12-10 07:02:06 +00:00
exports . defineComponent = defineComponent ;
exports . defineStore = defineStore ;
exports . e = e ;
2024-10-17 05:04:16 +00:00
exports . f = f ;
2024-12-10 07:02:06 +00:00
exports . index = index ;
exports . mitt = mitt ;
exports . n = n ;
exports . o = o ;
exports . onLoad = onLoad ;
exports . onMounted = onMounted ;
exports . onShow = onShow ;
exports . p = p ;
2024-10-17 05:04:16 +00:00
exports . ref = ref ;
2024-12-10 07:02:06 +00:00
exports . resolveComponent = resolveComponent ;
exports . s = s ;
2024-10-17 05:04:16 +00:00
exports . t = t ;
2024-12-10 07:02:06 +00:00
exports . toRaw = toRaw ;
exports . unref = unref ;
exports . watch = watch ;