{"version":3,"sources":["webpack:///./node_modules/@intlify/message-compiler/dist/message-compiler.esm-bundler.js","webpack:///./node_modules/@intlify/devtools-if/dist/devtools-if.esm-bundler.js","webpack:///./node_modules/@intlify/core-base/dist/core-base.esm-bundler.js","webpack:///./node_modules/@intlify/vue-devtools/dist/vue-devtools.esm-bundler.js","webpack:///./node_modules/vue-i18n/dist/vue-i18n.runtime.esm-bundler.js","webpack:///./node_modules/@vue/devtools-api/lib/esm/index.js","webpack:///./node_modules/vue-router/dist/vue-router.esm-bundler.js","webpack:///./node_modules/@vue/reactivity/dist/reactivity.esm-bundler.js","webpack:///./node_modules/@vue/runtime-core/dist/runtime-core.esm-bundler.js","webpack:///./node_modules/@vue/runtime-dom/dist/runtime-dom.esm-bundler.js","webpack:///./node_modules/relative-time-format/modules/LocaleDataStore.js","webpack:///./node_modules/relative-time-format/modules/resolveLocale.js","webpack:///./node_modules/relative-time-format/modules/PluralRuleFunctions.js","webpack:///./node_modules/relative-time-format/modules/getPluralRulesLocale.js","webpack:///./node_modules/relative-time-format/modules/PluralRules.js","webpack:///./node_modules/relative-time-format/modules/RelativeTimeFormat.js","webpack:///./node_modules/javascript-time-ago/modules/cache.js","webpack:///./node_modules/javascript-time-ago/modules/locale.js","webpack:///./node_modules/javascript-time-ago/modules/steps/units.js","webpack:///./node_modules/javascript-time-ago/modules/steps/getStepDenominator.js","webpack:///./node_modules/javascript-time-ago/modules/round.js","webpack:///./node_modules/javascript-time-ago/modules/steps/getStepMinTime.js","webpack:///./node_modules/javascript-time-ago/modules/steps/getStep.js","webpack:///./node_modules/javascript-time-ago/modules/steps/getTimeToNextUpdateForUnit.js","webpack:///./node_modules/javascript-time-ago/modules/steps/getTimeToNextUpdate.js","webpack:///./node_modules/javascript-time-ago/modules/LocaleDataStore.js","webpack:///./node_modules/javascript-time-ago/modules/steps/round.js","webpack:///./node_modules/javascript-time-ago/modules/style/round.js","webpack:///./node_modules/javascript-time-ago/modules/style/roundMinute.js","webpack:///./node_modules/javascript-time-ago/modules/steps/approximate.js","webpack:///./node_modules/javascript-time-ago/modules/style/approximate.js","webpack:///./node_modules/javascript-time-ago/modules/style/approximateTime.js","webpack:///./node_modules/javascript-time-ago/modules/steps/helpers.js","webpack:///./node_modules/javascript-time-ago/modules/style/twitter.js","webpack:///./node_modules/javascript-time-ago/modules/style/twitterNow.js","webpack:///./node_modules/javascript-time-ago/modules/style/twitterMinute.js","webpack:///./node_modules/javascript-time-ago/modules/style/twitterMinuteNow.js","webpack:///./node_modules/javascript-time-ago/modules/style/twitterFirstMinute.js","webpack:///./node_modules/javascript-time-ago/modules/style/mini.js","webpack:///./node_modules/javascript-time-ago/modules/style/miniNow.js","webpack:///./node_modules/javascript-time-ago/modules/style/miniMinute.js","webpack:///./node_modules/javascript-time-ago/modules/style/miniMinuteNow.js","webpack:///./node_modules/javascript-time-ago/modules/style/getStyleByName.js","webpack:///./node_modules/javascript-time-ago/modules/TimeAgo.js","webpack:///./node_modules/@vue/shared/dist/shared.esm-bundler.js","webpack:///./node_modules/@vue/devtools-api/lib/esm/env.js","webpack:///./node_modules/@fortawesome/vue-fontawesome/index.es.js","webpack:///./node_modules/@vue/devtools-api/lib/esm/const.js","webpack:///./node_modules/@fortawesome/free-solid-svg-icons/index.es.js","webpack:///./node_modules/dompurify/dist/purify.js","webpack:///(webpack)/buildin/global.js","webpack:///./node_modules/@fortawesome/fontawesome-svg-core/index.es.js","webpack:///./node_modules/@fortawesome/free-brands-svg-icons/index.es.js","webpack:///./node_modules/@vue/devtools-api/lib/esm/proxy.js","webpack:///./node_modules/@intlify/shared/dist/shared.esm-bundler.js"],"names":["CompileErrorCodes","EXPECTED_TOKEN","INVALID_TOKEN_IN_PLACEHOLDER","UNTERMINATED_SINGLE_QUOTE_IN_PLACEHOLDER","UNKNOWN_ESCAPE_SEQUENCE","INVALID_UNICODE_ESCAPE_SEQUENCE","UNBALANCED_CLOSING_BRACE","UNTERMINATED_CLOSING_BRACE","EMPTY_PLACEHOLDER","NOT_ALLOW_NEST_PLACEHOLDER","INVALID_LINKED_FORMAT","MUST_HAVE_MESSAGES_IN_PLURAL","UNEXPECTED_EMPTY_LINKED_MODIFIER","UNEXPECTED_EMPTY_LINKED_KEY","UNEXPECTED_LEXICAL_ANALYSIS","__EXTEND_POINT__","createCompileError","code","loc","options","domain","messages","args","msg","error","SyntaxError","String","location","fromCharCode","IntlifyDevToolsHooks","I18nInit","FunctionTranslate","pathStateMachine","literalValueRE","isLiteral","exp","test","stripQuotes","str","a","charCodeAt","b","length","slice","getPathCharType","ch","undefined","formatSubPath","path","trimmed","trim","charAt","isNaN","parseInt","keys","c","key","newChar","type","transition","action","typeMap","index","mode","subPathDepth","actions","maybeUnescapeQuote","nextChar","push","cache","Map","resolveWithKeyValue","obj","hit","get","set","len","last","i","val","DEFAULT_MODIFIER","DEFAULT_MESSAGE","ctx","DEFAULT_MESSAGE_DATA_TYPE","DEFAULT_NORMALIZE","values","join","DEFAULT_INTERPOLATE","pluralDefault","choice","choicesLength","Math","abs","min","getPluralIndex","pluralIndex","named","count","n","normalizeNamed","props","createMessageContext","locale","pluralRule","pluralRules","orgPluralRule","plural","_list","list","_named","message","parent","_modifier","name","modifiers","normalize","processor","interpolate","modifier","devtools","setDevToolsHook","hook","initI18nDevTools","i18n","version","meta","emit","timestamp","Date","now","translateDevTools","createDevToolsHook","payloads","CoreWarnCodes","NOT_FOUND_KEY","FALLBACK_TO_TRANSLATE","CANNOT_FORMAT_NUMBER","FALLBACK_TO_NUMBER_FORMAT","CANNOT_FORMAT_DATE","FALLBACK_TO_DATE_FORMAT","fallbackWithSimple","fallback","start","Set","Object","fallbackWithLocaleChain","startLocale","DEFAULT_LOCALE","context","__localeChainCache","chain","block","appendBlockToChain","defaults","blocks","follow","appendLocaleToChain","tokens","split","target","appendItemToChain","splice","includes","replace","VERSION","NOT_REOSLVED","MISSING_RESOLVE_VALUE","getDefaultLinkedModifiers","upper","toUpperCase","lower","toLowerCase","capitalize","toLocaleUpperCase","substr","_compiler","_resolver","_fallbacker","registerMessageResolver","resolver","registerLocaleFallbacker","fallbacker","_additionalMeta","setAdditionalMeta","getAdditionalMeta","_cid","createCoreContext","fallbackLocale","datetimeFormats","numberFormats","missing","missingWarn","fallbackWarn","fallbackFormat","unresolving","postTranslation","warnHtmlMessage","escapeParameter","messageCompiler","messageResolver","localeFallbacker","onWarn","internalOptions","__datetimeFormatters","__numberFormatters","__meta","cid","__INTLIFY_PROD_DEVTOOLS__","handleMissing","ret","updateFallbackLocale","create","inc","CoreErrorCodes","INVALID_ARGUMENT","INVALID_DATE_ARGUMENT","INVALID_ISO_DATE_ARGUMENT","createCoreError","NOOP_MESSAGE_FUNCTION","isMessageFunction","translate","parseTranslateArgs","resolvedMessage","defaultMsgOrKey","default","enableDefaultMsg","escapeParams","formatScope","targetLocale","resolveMessageFormat","format","cacheBaseKey","occurred","errorDetector","compileMessageFormat","ctxOptions","getMessageContextOptions","msgContext","messaged","evaluateMessage","source","map","item","forEach","resolveValue","locales","from","to","missingRet","getCompileOptions","msgCtx","arg1","arg2","arg3","onError","err","onCacheKey","resolveMessage","intlDefined","Intl","DateTimeFormat","NumberFormat","datetime","value","overrides","parseDateTimeArgs","part","datetimeFormat","id","JSON","stringify","formatter","formatToParts","arg4","matches","match","dateTime","startsWith","toISOString","e","getTime","clearDateTimeFormat","has","delete","number","parseNumberArgs","numberFormat","clearNumberFormat","initFeatureFlags","code$1","inc$1","I18nWarnCodes","FALLBACK_TO_ROOT","NOT_SUPPORTED_PRESERVE","NOT_SUPPORTED_FORMATTER","NOT_SUPPORTED_PRESERVE_DIRECTIVE","NOT_SUPPORTED_GET_CHOICE_INDEX","COMPONENT_NAME_LEGACY_COMPATIBLE","NOT_FOUND_PARENT_SCOPE","NOT_SUPPORT_MULTI_I18N_INSTANCE","I18nErrorCodes","UNEXPECTED_RETURN_TYPE","MUST_BE_CALL_SETUP_TOP","NOT_INSLALLED","NOT_AVAILABLE_IN_LEGACY_MODE","REQUIRED_VALUE","INVALID_VALUE","CANNOT_SETUP_VUE_DEVTOOLS_PLUGIN","NOT_INSLALLED_WITH_PROVIDE","UNEXPECTED_ERROR","NOT_COMPATIBLE_LEGACY_VUE_I18N","BRIDGE_SUPPORT_VUE_2_ONLY","createI18nError","TransrateVNodeSymbol","DatetimePartsSymbol","NumberPartsSymbol","SetPluralRulesSymbol","InejctWithOption","handleFlatJson","subKeys","lastIndex","currentObj","getLocaleMessages","__i18n","flatJson","custom","resource","deepCopy","parse","isNotObjectOrIsArray","src","des","getComponentOptions","instance","adjustI18nResources","global","componentOptions","__i18nGlobal","mergeLocaleMessage","mergeDateTimeFormat","mergeNumberFormat","createTextNode","DEVTOOLS_META","composerID","defineCoreMissingHandler","getMetaInfo","createComposer","VueI18nLegacy","__root","_isGlobal","_inheritLocale","inheritLocale","_locale","_fallbackLocale","_messages","_datetimeFormats","_numberFormats","_missingWarn","_fallbackWarn","_fallbackRoot","fallbackRoot","_fallbackFormat","_missing","_runtimeMissing","_postTranslation","_warnHtmlMessage","_escapeParameter","_modifiers","_context","_pluralRules","getCoreContext","framework","trackReactivityValues","getPostTranslationHandler","setPostTranslationHandler","handler","getMissingHandler","setMissingHandler","wrapWithDeps","fn","argumentParser","warnType","fallbackSuccess","fallbackFail","successCondition","t","Reflect","apply","root","rt","d","transrateVNode","numberParts","datetimeParts","setPluralRules","rules","te","getLocaleMessage","resolveMessages","targetLocaleMessages","messageValue","tm","setLocaleMessage","getDateTimeFormat","setDateTimeFormat","getNumberFormat","setNumberFormat","composer","sort","__injectWithOption","convertComposerOptions","silentTranslationWarn","silentFallbackWarn","formatFallbackMessages","pluralizationRules","warnHtmlInMessage","escapeParameterHtml","sync","sharedMessages","reduce","createVueI18n","vueI18n","availableLocales","__composer","componentInstanceCreatedListener","baseFormatProps","tag","scope","validator","getInterpolateArg","slots","slot","current","children","arg","getFragmentableTag","Translation","keypath","required","Number","attrs","useI18n","useScope","__useComponent","filter","assignedAttrs","renderFormatter","slotKeys","partFormatter","prop","parts","NUMBER_FORMAT_KEYS","DATETIME_FORMAT_KEYS","DatetimeFormat","getComposer$2","i18nInternal","__getInstance","vTDirective","bind","el","$","parsedValue","parseValue","textContent","makeParams","beforeMount","beforeUpdate","app","pluginOptions","useI18nComponentName","globalInstall","component","directive","defineMixin","vuei18n","this","$options","optionsI18n","$root","$i18n","mergeToRoot","__onComponentInstanceCreated","__setInstance","$t","$rt","$tc","tc","$te","$d","$n","$tm","__deleteInstance","I18nInjectionKey","createI18n","__legacyMode","legacy","__globalInjection","globalInjection","__instances","__global","createGlobal","symbol","__VUE_I18N_SYMBOL__","provide","injectGlobalFields","mixin","isCE","appContext","getI18nInstance","getGlobalComposer","getScope","getComposer","composerOptions","setupLifeCycle","legacyMode","useComponent","globalExportProps","globalExportMethods","desc","getOwnPropertyDescriptor","wrap","defineProperty","config","globalProperties","method","__INTLIFY__","__INTLIFY_DEVTOOLS_GLOBAL_HOOK__","setupDevtoolsPlugin","pluginDescriptor","setupFn","enableProxy","enableEarlyProxy","__VUE_DEVTOOLS_PLUGIN_API_AVAILABLE__","proxy","__VUE_DEVTOOLS_PLUGINS__","proxiedTarget","hasSymbol","Symbol","toStringTag","PolySymbol","matchedRouteKey","viewDepthKey","routerKey","routeLocationKey","routerViewLocationKey","isBrowser","window","isESModule","__esModule","assign","applyToParams","params","newParams","Array","isArray","noop","TRAILING_SLASH_RE","removeTrailingSlash","parseURL","parseQuery","currentLocation","query","searchString","hash","searchPos","indexOf","hashPos","resolveRelativePath","fullPath","stringifyURL","stringifyQuery","stripBase","pathname","base","isSameRouteLocation","aLastIndex","matched","bLastIndex","isSameRouteRecord","isSameRouteLocationParams","aliasOf","isSameRouteLocationParamsValue","isEquivalentArray","every","fromSegments","toSegments","toPosition","segment","position","NavigationType","NavigationDirection","normalizeBase","baseEl","document","querySelector","getAttribute","BEFORE_HASH_RE","createHref","getElementPosition","offset","docRect","documentElement","getBoundingClientRect","elRect","behavior","left","top","computeScrollPosition","pageXOffset","pageYOffset","scrollToPosition","scrollToOptions","positionEl","isIdSelector","getElementById","style","scrollTo","getScrollKey","delta","history","state","scrollPositions","saveScrollPosition","scrollPosition","getSavedScrollPosition","scroll","createBaseLocation","protocol","host","createCurrentLocation","search","slicePos","pathFromHash","useHistoryListeners","historyState","listeners","teardowns","pauseState","popStateHandler","fromState","listener","pop","direction","forward","back","unknown","pauseListeners","listen","callback","teardown","beforeUnloadListener","replaceState","destroy","removeEventListener","addEventListener","buildState","replaced","computeScroll","useHistoryStateNavigation","changeLocation","hashIndex","url","console","data","currentState","createWebHistory","historyNavigation","historyListeners","go","triggerListeners","routerHistory","enumerable","isRouteLocation","route","isRouteName","START_LOCATION_NORMALIZED","redirectedFrom","NavigationFailureSymbol","NavigationFailureType","createRouterError","Error","isNavigationFailure","BASE_PARAM_PATTERN","BASE_PATH_PARSER_OPTIONS","sensitive","strict","end","REGEX_CHARS_RE","tokensToParser","segments","extraOptions","score","pattern","segmentScores","tokenIndex","token","subSegmentScore","repeatable","optional","regexp","re","RegExp","subPattern","avoidDuplicatedSlash","endsWith","param","text","compareScoreArray","diff","comparePathParserScore","aScore","bScore","comp","ROOT_TOKEN","VALID_PARAM_RE","tokenizePath","crash","buffer","previousState","finalizeSegment","char","customRe","consumeBuffer","addCharToBuffer","createRouteRecordMatcher","record","parser","matcher","alias","createRouterMatcher","routes","globalOptions","matchers","matcherMap","getRecordMatcher","addRoute","originalRecord","isRootAdd","mainNormalizedRecord","normalizeRouteRecord","mergeOptions","normalizedRecords","aliases","components","originalMatcher","normalizedRecord","parentPath","connectingSlash","isAliasRecord","removeRoute","insertMatcher","matcherRef","getRoutes","resolve","paramsFromLocation","k","find","m","parentMatcher","unshift","mergeMetaFields","redirect","beforeEnter","normalizeRecordProps","instances","leaveGuards","updateGuards","enterCallbacks","propsObject","partialOptions","HASH_RE","AMPERSAND_RE","SLASH_RE","EQUAL_RE","IM_RE","PLUS_RE","ENC_BRACKET_OPEN_RE","ENC_BRACKET_CLOSE_RE","ENC_CARET_RE","ENC_BACKTICK_RE","ENC_CURLY_OPEN_RE","ENC_PIPE_RE","ENC_CURLY_CLOSE_RE","ENC_SPACE_RE","commonEncode","encodeURI","encodeHash","encodeQueryValue","encodeQueryKey","encodePath","encodeParam","decode","decodeURIComponent","hasLeadingIM","searchParams","searchParam","eqPos","currentValue","v","normalizeQuery","normalizedQuery","useCallbacks","handlers","add","reset","guardToPromiseFn","guard","enterCallbackArray","Promise","reject","next","valid","guardReturn","call","guardCall","then","catch","extractComponentsGuards","guardType","guards","rawComponent","isRouteComponent","__vccOpts","componentPromise","resolved","resolvedComponent","useLink","router","currentRoute","activeRecordIndex","routeMatched","currentMatched","findIndex","parentRecordPath","getOriginalPath","isActive","includesParams","isExactActive","navigate","guardEvent","href","RouterLinkImpl","Boolean","activeClass","exactActiveClass","ariaCurrentValue","link","elClass","getLinkClass","linkActiveClass","linkExactActiveClass","onClick","class","RouterLink","metaKey","altKey","ctrlKey","shiftKey","defaultPrevented","button","currentTarget","preventDefault","outer","inner","innerValue","outerValue","some","propClass","globalClass","defaultClass","RouterViewImpl","inheritAttrs","injectedRoute","routeToDisplay","depth","matchedRouteRef","viewRef","oldInstance","oldName","size","flush","matchedRoute","ViewComponent","currentName","normalizeSlot","Component","routePropsOption","routeProps","onVnodeUnmounted","vnode","isUnmounted","ref","slotContent","RouterView","createRouter","parseQuery$1","stringifyQuery$1","beforeGuards","beforeResolveGuards","afterGuards","pendingLocation","scrollBehavior","scrollRestoration","normalizeParams","paramValue","encodeParams","decodeParams","parentOrRoute","recordMatcher","routeMatcher","hasRoute","rawLocation","locationNormalized","matcherLocation","targetParams","locationAsObject","checkCanceledNavigation","pushWithRedirect","handleRedirectRecord","lastMatched","newTargetLocation","targetLocation","force","shouldRedirect","toLocation","failure","handleScroll","triggerError","finalizeNavigation","triggerAfterEach","checkCanceledNavigationAndReject","leavingRecords","updatingRecords","enteringRecords","extractChangingRecords","reverse","canceledNavigationCheck","runGuardQueue","isPush","isFirstNavigation","markAsReady","removeHistoryListener","setupListeners","_from","info","ready","readyHandlers","errorHandlers","isReady","started","installedApps","beforeEach","beforeResolve","afterEach","$router","reactiveRoute","unmountApp","unmount","promise","max","recordFrom","recordTo","activeEffectScope","effectScopeStack","EffectScope","detached","active","effects","cleanups","scopes","on","off","fromParent","stop","cleanup","recordEffectScope","effect","createDep","dep","w","wasTracked","trackOpBit","newTracked","initDepMarkers","deps","finalizeDepMarkers","ptr","targetMap","WeakMap","effectTrackDepth","maxMarkerBits","effectStack","activeEffect","ITERATE_KEY","MAP_KEY_ITERATE_KEY","ReactiveEffect","scheduler","enableTracking","cleanupEffect","resetTracking","onStop","shouldTrack","trackStack","pauseTracking","track","isTracking","depsMap","eventInfo","trackEffects","debuggerEventExtraInfo","trigger","newValue","oldValue","oldTarget","triggerEffects","allowRecurse","run","isNonTrackableKeys","builtInSymbols","getOwnPropertyNames","createGetter","shallowGet","readonlyGet","arrayInstrumentations","createArrayInstrumentations","instrumentations","arr","toRaw","l","res","isReadonly","shallow","receiver","shallowReadonlyMap","readonlyMap","shallowReactiveMap","reactiveMap","targetIsArray","isRef","shouldUnwrap","readonly","reactive","createSetter","shallowSet","hadKey","result","deleteProperty","ownKeys","mutableHandlers","readonlyHandlers","shallowReactiveHandlers","toShallow","getProto","getPrototypeOf","get$1","isShallow","rawTarget","rawKey","toReadonly","toReactive","has$1","proto","set$1","deleteEntry","clear","hadItems","createForEach","thisArg","observed","createIterableMethod","targetIsMap","isPair","iterator","isKeyOnly","innerIterator","done","createReadonlyMethod","createInstrumentations","mutableInstrumentations","shallowInstrumentations","readonlyInstrumentations","shallowReadonlyInstrumentations","iteratorMethods","createInstrumentationGetter","mutableCollectionHandlers","shallowCollectionHandlers","readonlyCollectionHandlers","targetTypeMap","rawType","getTargetType","isExtensible","createReactiveObject","shallowReactive","baseHandlers","collectionHandlers","proxyMap","existingProxy","targetType","Proxy","isReactive","isProxy","raw","markRaw","trackRefValue","triggerRefValue","newVal","r","__v_isRef","createRef","shallowRef","rawValue","_shallow","_rawValue","_value","unref","shallowUnwrapHandlers","proxyRefs","objectWithRefs","ComputedRefImpl","getter","_setter","_dirty","self","getterOrOptions","debugOptions","setter","onlyGetter","cRef","emit$1","event","rawArgs","isModelListener","modelArg","modifiersKey","handlerName","callWithAsyncErrorHandling","onceHandler","emitted","normalizeEmitsOptions","asMixin","emitsCache","cached","emits","normalized","hasExtends","extendEmits","normalizedFromExtend","mixins","extends","isEmitListener","currentRenderingInstance","currentScopeId","setCurrentRenderingInstance","prev","__scopeId","withCtx","isNonScopedSlot","_n","renderFnWithContext","_d","setBlockTracking","prevInstance","_c","renderComponentRoot","withProxy","propsOptions","render","renderCache","setupState","fallthroughAttrs","shapeFlag","proxyToUse","normalizeVNode","getFunctionalFallthrough","blockStack","handleError","createVNode","Comment","filterModelListeners","cloneVNode","dirs","concat","shouldUpdateComponent","prevVNode","nextVNode","optimized","prevProps","prevChildren","nextProps","nextChildren","patchFlag","emitsOptions","$stable","hasPropsChanged","dynamicProps","nextKeys","updateHOCHostEl","subTree","isSuspense","__isSuspense","queueEffectWithSuspense","suspense","pendingBranch","queuePostFlushCb","currentInstance","provides","parentProvides","inject","defaultValue","treatDefaultAsFactory","arguments","useTransitionState","isMounted","isLeaving","isUnmounting","leavingVNodes","onMounted","onBeforeUnmount","TransitionHookValidator","Function","BaseTransitionImpl","appear","persisted","onBeforeEnter","onEnter","onAfterEnter","onEnterCancelled","onBeforeLeave","onLeave","onAfterLeave","onLeaveCancelled","onBeforeAppear","onAppear","onAfterAppear","onAppearCancelled","getCurrentInstance","prevTransitionKey","getTransitionRawChildren","rawProps","child","emptyPlaceholder","innerChild","getKeepAliveChild","enterHooks","resolveTransitionHooks","setTransitionHooks","oldChild","oldInnerChild","transitionKeyChanged","getTransitionKey","isSameVNodeType","leavingHooks","afterLeave","update","delayLeave","earlyRemove","delayedLeave","leavingVNodesCache","getLeavingNodesForType","_leaveCb","BaseTransition","callHook","hooks","leavingVNode","afterHook","cancelHook","called","_enterCb","cancelled","remove","isKeepAlive","ssContent","clone","ssFallback","keepComment","keyedFragmentCount","Fragment","defineComponent","setup","isAsyncWrapper","__asyncLoader","__isKeepAlive","KeepAliveImpl","include","exclude","sharedContext","renderer","parentSuspense","p","patch","move","um","_unmount","o","createElement","storageContainer","resetShapeFlag","pruneCache","getComponentName","pruneCacheEntry","activate","container","anchor","isSVG","slotScopeIds","queuePostRenderEffect","isDeactivated","vnodeHook","onVnodeMounted","invokeVNodeHook","deactivate","da","watch","deep","pendingCacheKey","cacheSubtree","getInnerChild","onUpdated","rawVNode","isVNode","__asyncResolved","cachedVNode","KeepAlive","onActivated","registerKeepAliveHook","onDeactivated","wrappedHook","__wdc","injectHook","injectToKeepAliveRoot","keepAliveRoot","injected","onUnmounted","prepend","__weh","setCurrentInstance","unsetCurrentInstance","createHook","lifecycle","isInSSRComponentSetup","onBeforeMount","onBeforeUpdate","onServerPrefetch","onRenderTriggered","onRenderTracked","onErrorCaptured","shouldCacheAccess","applyOptions","resolveMergedOptions","publicThis","beforeCreate","dataOptions","computed","computedOptions","methods","watchOptions","provideOptions","injectOptions","created","mounted","updated","activated","deactivated","beforeDestroy","beforeUnmount","destroyed","unmounted","renderTracked","renderTriggered","errorCaptured","serverPrefetch","expose","directives","filters","checkDuplicateProperties","resolveInjections","unwrapInjectedRef","methodHandler","opt","configurable","createWatcher","registerLifecycleHook","register","_hook","exposed","unwrapRef","normalizeInject","h","createPathGetter","extendsOptions","globalMixins","optionsCache","optionMergeStrategies","strats","strat","internalOptionMergeStrats","mergeDataFn","mergeObjectOptions","mergeAsArray","mergeWatchOptions","mergeInject","merged","initProps","isStateful","isSSR","InternalObjectKey","propsDefaults","setFullProps","updateProps","rawPrevProps","rawCurrentProps","hasAttrsChanged","kebabKey","resolvePropValue","propsToUpdate","camelizedKey","needCastKeys","rawCastValues","camelKey","castValues","isAbsent","hasDefault","normalizePropsOptions","propsCache","extendProps","normalizedKey","validatePropName","booleanIndex","getTypeIndex","stringIndex","getType","ctor","toString","isSameType","expectedTypes","isInternalKey","normalizeSlotValue","rawSlot","normalizeObjectSlots","rawSlots","_ctx","normalizeVNodeSlots","initSlots","_","updateSlots","needDeletionCheck","deletionComparisonTarget","withDirectives","internalInstance","bindings","dir","traverse","invokeDirectiveHook","oldBindings","binding","createAppContext","isNativeTag","performance","errorHandler","warnHandler","compilerOptions","uid","createAppAPI","hydrate","rootComponent","rootProps","installedPlugins","_uid","_component","_props","_container","_instance","plugin","install","rootContainer","isHydrate","__vue_app__","getExposeProxy","setRef","rawRef","oldRawRef","isUnmount","refValue","owner","oldRef","refs","callWithErrorHandling","_isString","_isRef","doSet","f","existing","createRenderer","baseCreateRenderer","createHydrationFns","__VUE__","insert","hostInsert","hostRemove","patchProp","hostPatchProp","hostCreateElement","createText","hostCreateText","createComment","hostCreateComment","setText","hostSetText","setElementText","hostSetElementText","parentNode","hostParentNode","nextSibling","hostNextSibling","setScopeId","hostSetScopeId","cloneNode","hostCloneNode","insertStaticContent","hostInsertStaticContent","n1","n2","parentComponent","dynamicChildren","getNextHostNode","Text","processText","processCommentNode","Static","mountStaticNode","processFragment","processElement","processComponent","process","internals","moveStaticNode","removeStaticNode","mountElement","patchElement","is","mountChildren","unmountChildren","onVnodeBeforeMount","scopeId","needCallTransitionHooks","enter","parentVNode","cloneIfMounted","oldProps","newProps","toggleRecurse","onVnodeBeforeUpdate","areChildrenSVG","patchBlockChildren","patchChildren","patchProps","onVnodeUpdated","oldChildren","newChildren","fallbackContainer","oldVNode","newVNode","fragmentStartAnchor","fragmentEndAnchor","fragmentSlotScopeIds","traverseStaticChildren","mountComponent","updateComponent","initialVNode","createComponentInstance","setupComponent","asyncDep","registerDep","setupRenderEffect","placeholder","asyncResolved","updateComponentPreRender","invalidateJob","componentUpdateFn","bu","u","originNext","nextTree","prevTree","bm","isAsyncWrapperVNode","hydrateNode","hydrateSubTree","scopedInitialVNode","queueJob","flushPreFlushCbs","c1","prevShapeFlag","c2","patchKeyedChildren","patchUnkeyedChildren","oldLength","newLength","commonLength","nextChild","parentAnchor","l2","e1","e2","nextPos","s1","s2","keyToNewIndexMap","j","patched","toBePatched","moved","maxNewIndexSoFar","newIndexToOldIndexMap","prevChild","newIndex","increasingNewIndexSequence","getSequence","nextIndex","moveType","needTransition","leave","performLeave","doRemove","shouldInvokeDirs","shouldInvokeVnodeHook","onVnodeBeforeUnmount","unmountComponent","removeFragment","performRemove","cur","bum","suspenseId","pendingId","_vnode","flushPostFlushCbs","mt","mc","pc","pbc","createApp","allowed","ch1","ch2","arrI","isTeleport","__isTeleport","COMPONENTS","DIRECTIVES","resolveComponent","maybeSelfReference","resolveAsset","NULL_DYNAMIC_COMPONENT","resolveDynamicComponent","resolveDirective","warnMissing","selfName","registry","currentBlock","openBlock","disableTracking","closeBlock","isBlockTreeEnabled","setupBlock","createElementBlock","createBaseVNode","createBlock","__v_isVNode","normalizeKey","normalizeRef","ref_key","ref_for","isBlockNode","needFullChildrenNormalization","__v_skip","targetAnchor","staticCount","normalizeChildren","_createVNode","cloned","isClassComponent","guardReactiveProps","klass","extraProps","mergeRef","mergedProps","mergeProps","createTextVNode","flag","createStaticVNode","content","numberOfNodes","createCommentVNode","asBlock","memo","slotFlag","toMerge","incoming","renderList","renderItem","getPublicInstance","isStatefulComponent","publicPropertiesMap","$el","$data","$props","$attrs","$slots","$refs","$parent","$emit","$forceUpdate","$nextTick","nextTick","$watch","instanceWatch","PublicInstanceProxyHandlers","accessCache","normalizedProps","publicGetter","cssModule","__cssModules","emptyAppContext","uid$1","exposeProxy","setupContext","bc","rtg","rtc","ec","sp","ce","compile","installWithProxy","setupResult","setupStatefulComponent","createSetupContext","resolvedResult","handleSetupResult","finishComponentSetup","__ssrInlineRender","ssrRender","skipOptions","template","isCustomElement","delimiters","componentCompilerOptions","finalCompilerOptions","createAttrsProxy","displayName","throwInDev","contextVNode","exposedInstance","errorInfo","errorCapturedHooks","appErrorHandler","logError","isFlushing","isFlushPending","flushIndex","pendingPreFlushCbs","activePreFlushCbs","preFlushIndex","pendingPostFlushCbs","activePostFlushCbs","postFlushIndex","resolvedPromise","currentFlushPromise","currentPreFlushParentJob","findInsertionIndex","middle","middleJobId","getId","job","queueFlush","flushJobs","queueCb","cb","activeQueue","pendingQueue","queuePreFlushCb","seen","parentJob","deduped","Infinity","INITIAL_WATCHER_VALUE","doWatch","immediate","onTrack","onTrigger","forceTrigger","isMultiSource","s","onInvalidate","baseGetter","propsOrChildren","prototype","svgNS","doc","staticTemplateCache","nodeOps","insertBefore","removeChild","createElementNS","multiple","setAttribute","node","nodeValue","selector","before","previousSibling","lastChild","innerHTML","wrapper","firstChild","appendChild","patchClass","transitionClasses","_vtc","removeAttribute","className","patchStyle","isCssString","setStyle","currentDisplay","display","cssText","importantRE","setProperty","prefixed","autoPrefix","prefixes","prefixCache","rawName","xlinkNS","patchAttr","removeAttributeNS","setAttributeNS","isBoolean","patchDOMProp","tagName","_a","_getNow","skipTimestampCheck","createEvent","timeStamp","ffMatch","navigator","userAgent","cachedNow","getNow","patchEvent","prevValue","nextValue","invokers","_vei","existingInvoker","parseName","invoker","createInvoker","optionsModifierRE","initialValue","attached","patchStopImmediatePropagation","originalStop","stopImmediatePropagation","_stopped","nativeOnRE","shouldSetAsProp","_trueValue","_falseValue","HTMLElement","TRANSITION","ANIMATION","Transition","resolveTransitionProps","DOMTransitionPropsValidators","css","duration","enterFromClass","enterActiveClass","enterToClass","appearFromClass","appearActiveClass","appearToClass","leaveFromClass","leaveActiveClass","leaveToClass","hasExplicitCallback","baseProps","durations","normalizeDuration","enterDuration","leaveDuration","finishEnter","isAppear","removeTransitionClass","finishLeave","makeEnterHook","nextFrame","addTransitionClass","whenTransitionEnds","forceReflow","NumberOf","cls","classList","requestAnimationFrame","endId","expectedType","explicitTimeout","_endId","resolveIfNotStale","setTimeout","timeout","propCount","getTransitionInfo","endEvent","ended","onEnd","styles","getComputedStyle","getStyleProperties","transitionDelays","transitionDurations","transitionTimeout","getTimeout","animationDelays","animationDurations","animationTimeout","hasTransform","delays","toMs","body","offsetHeight","getModelAssigner","onCompositionStart","composing","onCompositionEnd","initEvent","dispatchEvent","vModelText","lazy","_assign","castToNumber","domValue","activeElement","vModelCheckbox","modelValue","_modelValue","elementValue","getValue","checked","found","filtered","getCheckboxValue","setChecked","vModelSelect","isSetModel","selectedVal","selected","setSelected","_binding","isMultiple","option","optionValue","selectedIndex","systemModifiers","modifierGuards","stopPropagation","prevent","ctrl","shift","alt","right","exact","withModifiers","vShow","_vod","setDisplay","rendererOptions","ensureRenderer","mount","containerOrSelector","normalizeContainer","SVGElement","Element","defaultLocale","localesData","lowercaseLocaleLookup","getDefaultLocale","setDefaultLocale","getLocaleData","addLocaleData","localeData","resolveLocale","localeMatcher","resolveLocaleLookup","RangeError","resolvedLocale","_resolvedLocale","af","am","ar","t0","n100","ast","v0","be","n10","br","n1000000","bs","i10","i100","f10","f100","ceb","cs","cy","dsb","dz","ff","fr","i1000000","ga","gd","he","ksh","lt","lv","mk","pa","pl","pt","ro","ru","se","si","sl","as","az","bg","bn","ca","chr","de","ee","en","es","et","eu","fa","fi","fil","fo","fur","fy","gl","gu","ha","hi","hr","hsb","hu","hy","ia","ig","it","ja","jgo","jv","ka","kea","kk","kl","km","kn","ko","ku","ky","lb","lkt","lo","ml","mn","mr","ms","my","nb","ne","nl","nn","no","or","pcm","ps","rm","sah","sd","sk","so","sq","sr","su","sv","sw","ta","th","ti","tk","tr","ug","uk","ur","uz","vi","wae","wo","yi","yo","yue","zh","zu","getPluralRulesLocale","getLanguageFromLanguageTag","LANGUAGE_REG_EXP","languageTag","TypeError","_classCallCheck","Constructor","_defineProperties","descriptor","writable","_createClass","protoProps","staticProps","PluralRules","supportedLocalesOf","PluralRuleFunctions","_typeof","constructor","_objectSpread","getOwnPropertySymbols","sym","_defineProperty","_slicedToArray","_arrayWithHoles","_iterableToArrayLimit","_nonIterableRest","_arr","_e","_s","_i","UNITS","NUMERIC_VALUES","STYLE_VALUES","LOCALE_MATCHER_VALUES","RelativeTimeFormat","numeric","styleFallback","warn","numberingSystem","resolvedOptions","_style","_parseFormatArgs","parseFormatArgs","_parseFormatArgs2","unit","getRule","formatNumber","_parseFormatArgs3","_parseFormatArgs4","rule","valueIndex","formatNumberToParts","unitMessages","_message","pluralizedMessages","isNegative","quantifier","select","other","addLocale","UNIT_ERROR","parseUnit","NUMBER_ERROR","parseNumber","isFinite","isNegativeZero","Cache","_len","_key","_len2","_key2","lastKey","_i2","chooseLocale","isLocaleDataAvailable","_iterator","_isArray","_ref","intlDateTimeFormatSupported","isIntlAvailable","minute","hour","day","week","month","year","getSecondsInUnit","getStepDenominator","step","factor","formatAs","getRoundFunction","round","floor","getDiffRatioToNextRoundedNumber","getStepMinTime","minTime","prevStep","future","threshold","getMinTimeForUnit","toUnit","fromUnit","_getMinTimeForUnit","_ref2","fromUnitAmount","toUnitAmount","getStep","steps","secondsPassed","units","getNextStep","filterStepsByUnits","nextStep","getStepIndex","granularity","secondsPassedGranular","_ref3","unitDenominator","preciseAmount","roundedAmount","getDiffToPreviousRoundedNumber","getDiffToNextRoundedNumber","YEAR","INFINITY","getTimeToNextUpdate","date","getTimeToNextUpdateForUnit","timeToStepChange","getTimeToStepChange","timeToNextUpdate","getStepChangesAt","currentOrNextStep","stepChangesAt","labels","threshold_for_now","threshold_for_minute","gradation","approximate","flavour","getDate","formatters","monthAndDay","dayMonth","yearMonthAndDay","maxFittingNow","getFullYear","minFittingNow","dayMonthYear","twitter","twitterMinute","mini","miniMinute","getStyleByName","roundMinute","approximateTime","miniNow","miniMinuteNow","twitterNow","twitterMinuteNow","twitterFirstMinute","defaultLocaleHasBeenSpecified","TimeAgo","polyfill","IntlRelativeTimeFormat","IntlPluralRules","relativeTimeFormatCache","pluralRulesCache","input","isStyle","getTimestamp","_this$getLabels","getLabels","labelsType","nowLabel","getNowLabel","long","time","elapsed","getTimeIntervalMeasurementUnits","_getStep","_getStep2","formattedDate","formatDateForStep","_this","formatValue","amount","valueForFormatting","sign","getFormatter","getFormattingRule","formattingRules","_ref4","pastOrFuture","quantifierRules","getPluralRules","put","_ref5","_labelsType","isMockedDate","object","allowedUnits","nowLabels","longLabels","past","second","addDefaultLocale","addLabels","OBJECT_CONSTRUCTOR","isObject","variable","isStyleObject","makeMap","expectsLowerCase","GLOBALS_WHITE_LISTED","isGloballyWhitelisted","specialBooleanAttrs","isSpecialBooleanAttr","includeBooleanAttr","normalizeStyle","isString","parseStringStyle","listDelimiterRE","propertyDelimiterRE","tmp","normalizeClass","HTML_TAGS","SVG_TAGS","isHTMLTag","isSVGTag","looseCompareArrays","equal","looseEqual","aValidType","isDate","bValidType","aKeysCount","bKeysCount","aHasKey","hasOwnProperty","bHasKey","looseIndexOf","toDisplayString","objectToString","isFunction","replacer","isMap","entries","isSet","isPlainObject","EMPTY_OBJ","EMPTY_ARR","NOOP","NO","onRE","isOn","extend","hasOwn","toTypeString","isSymbol","isPromise","toRawType","isIntegerKey","isReservedProp","cacheStringFunction","camelizeRE","camelize","hyphenateRE","hyphenate","toHandlerKey","hasChanged","invokeArrayFns","fns","def","toNumber","parseFloat","_globalThis","getGlobalThis","globalThis","getDevtoolsGlobalHook","getTarget","__VUE_DEVTOOLS_GLOBAL_HOOK__","isProxyAvailable","commonjsGlobal","createCommonjsModule","module","exports","humps","_processKeys","convert","_isObject","_isDate","_isRegExp","_isBoolean","_isFunction","output","separateWords","string","separator","_isNumerical","pascalize","camelized","decamelize","_processor","depascalize","camelizeKeys","decamelizeKeys","pascalizeKeys","depascalizeKeys","_extends","objectWithoutProperties","toConsumableArray","arr2","styleToObject","pair","idx","classToObject","classes","abstractElement","attributes","_attrs$style","aStyle","otherAttrs","PRODUCTION","log","_console","objectWithKey","_classes","spin","pulse","fixedWidth","border","listItem","inverse","flip","rotation","pull","swapOpacity","normalizeIconArgs","icon$$1","prefix","iconName","FontAwesomeIcon","icon","mask","transform","title","renderedIcon","abstract","familyPrefix","counter","_text","HOOK_SETUP","HOOK_PLUGIN_SETTINGS_SET","faCheck","faChevronLeft","faEye","faHeadphones","faHeart","faLevelDownAlt","faLevelUpAlt","faRss","faThumbsDown","faThumbsUp","faThumbtack","faTv","factory","_toConsumableArray","setPrototypeOf","isFrozen","freeze","seal","construct","fun","thisValue","x","Func","arrayForEach","unapply","arrayPop","arrayPush","stringToLowerCase","stringMatch","stringReplace","stringIndexOf","stringTrim","regExpTest","typeErrorCreate","unconstruct","func","addToSet","array","element","lcElement","newObject","property","lookupGetter","fallbackValue","html","svg","svgFilters","svgDisallowed","mathMl","mathMlDisallowed","html$1","svg$1","mathMl$1","xml","MUSTACHE_EXPR","ERB_EXPR","DATA_ATTR","ARIA_ATTR","IS_ALLOWED_URI","IS_SCRIPT_OR_DATA","ATTR_WHITESPACE","_toConsumableArray$1","getGlobal","_createTrustedTypesPolicy","trustedTypes","createPolicy","suffix","ATTR_NAME","currentScript","hasAttribute","policyName","createHTML","html$$1","createDOMPurify","DOMPurify","removed","nodeType","isSupported","originalDocument","DocumentFragment","HTMLTemplateElement","Node","NodeFilter","_window$NamedNodeMap","NamedNodeMap","MozNamedAttrMap","HTMLFormElement","DOMParser","ElementPrototype","getNextSibling","getChildNodes","getParentNode","ownerDocument","trustedTypesPolicy","emptyHTML","RETURN_TRUSTED_TYPE","_document","implementation","createNodeIterator","createDocumentFragment","getElementsByTagName","importNode","documentMode","createHTMLDocument","MUSTACHE_EXPR$$1","ERB_EXPR$$1","DATA_ATTR$$1","ARIA_ATTR$$1","IS_SCRIPT_OR_DATA$$1","ATTR_WHITESPACE$$1","IS_ALLOWED_URI$$1","ALLOWED_TAGS","DEFAULT_ALLOWED_TAGS","ALLOWED_ATTR","DEFAULT_ALLOWED_ATTR","CUSTOM_ELEMENT_HANDLING","tagNameCheck","attributeNameCheck","allowCustomizedBuiltInElements","FORBID_TAGS","FORBID_ATTR","ALLOW_ARIA_ATTR","ALLOW_DATA_ATTR","ALLOW_UNKNOWN_PROTOCOLS","SAFE_FOR_TEMPLATES","WHOLE_DOCUMENT","SET_CONFIG","FORCE_BODY","RETURN_DOM","RETURN_DOM_FRAGMENT","SANITIZE_DOM","KEEP_CONTENT","IN_PLACE","USE_PROFILES","FORBID_CONTENTS","DEFAULT_FORBID_CONTENTS","DATA_URI_TAGS","DEFAULT_DATA_URI_TAGS","URI_SAFE_ATTRIBUTES","DEFAULT_URI_SAFE_ATTRIBUTES","MATHML_NAMESPACE","SVG_NAMESPACE","HTML_NAMESPACE","NAMESPACE","IS_EMPTY_INPUT","PARSER_MEDIA_TYPE","SUPPORTED_PARSER_MEDIA_TYPES","DEFAULT_PARSER_MEDIA_TYPE","transformCaseFunc","CONFIG","formElement","isRegexOrFunction","testValue","_parseConfig","cfg","ADD_URI_SAFE_ATTR","ADD_DATA_URI_TAGS","ALLOWED_URI_REGEXP","ADD_TAGS","ADD_ATTR","table","tbody","MATHML_TEXT_INTEGRATION_POINTS","HTML_INTEGRATION_POINTS","ALL_SVG_TAGS","ALL_MATHML_TAGS","_checkValidNamespace","namespaceURI","parentTagName","commonSvgAndHTMLElements","_forceRemove","outerHTML","_removeAttribute","attribute","getAttributeNode","_initDocument","dirty","leadingWhitespace","dirtyPayload","parseFromString","createDocument","childNodes","_createIterator","SHOW_ELEMENT","SHOW_COMMENT","SHOW_TEXT","_isClobbered","elm","nodeName","_isNode","_executeHook","entryPoint","currentNode","_sanitizeElements","allowedTags","firstElementChild","childCount","_basicCustomElementTest","_isValidAttribute","lcTag","lcName","_sanitizeAttributes","attr","hookEvent","attrName","attrValue","keepAttr","allowedAttributes","_attr","forceKeepAttr","_sanitizeShadowDOM","fragment","shadowNode","shadowIterator","nextNode","sanitize","importedNode","oldNode","returnNode","toStaticHTML","nodeIterator","shadowroot","serializedHTML","setConfig","clearConfig","isValidAttribute","addHook","hookFunction","removeHook","removeHooks","removeAllHooks","purify","g","_arrayWithoutHoles","_iterableToArray","_nonIterableSpread","iter","_WINDOW","_DOCUMENT","_PERFORMANCE","mark","measure","MutationObserver","_ref$userAgent","WINDOW","DOCUMENT","PERFORMANCE","IS_DOM","head","IS_IE","NAMESPACE_IDENTIFIER","UNITS_IN_GRID","DEFAULT_FAMILY_PREFIX","DEFAULT_REPLACEMENT_CLASS","DATA_FA_I2SVG","oneToTen","oneToTwenty","DUOTONE_CLASSES","GROUP","SWAP_OPACITY","PRIMARY","SECONDARY","initial","FontAwesomeConfig","getAttrConfig","coerce","_default","replacementClass","autoReplaceSvg","autoAddCss","autoA11y","searchPseudoElements","observeMutations","mutateApproach","keepOriginalSource","measurePerformance","showMissingIcons","_config","shims","namespace","functions","loaded","doScroll","readyState","asyncTimer","PENDING","SETTLED","FULFILLED","REJECTED","isNode","asyncSetTimer","setImmediate","asyncQueue","asyncFlush","asyncCall","invokeResolver","resolvePromise","rejectPromise","reason","invokeCallback","subscriber","settled","_state","_data","handleThenable","fulfill","publishFulfillment","publishRejection","publish","_then","_handled","notifyRejectionHandled","P","onFulfillment","onRejection","fulfilled","rejected","all","promises","results","remaining","race","meaninglessTransform","y","rotate","flipX","flipY","insertCss","headChildren","beforeChild","idPool","nextUniqueId","random","htmlEscape","joinAttributes","acc","attributeName","joinStyles","styleName","transformIsMeaningful","transformForSvg","containerWidth","iconWidth","innerTranslate","innerScale","innerRotate","transformForCss","_ref2$width","width","_ref2$height","height","_ref2$startCentered","startCentered","ALL_SPACE","fillBlack","fill","deGroup","makeIconMasking","main","explicitMaskId","maskId","mainWidth","mainPath","maskWidth","maskPath","trans","maskRect","maskInnerGroupChildrenMixin","maskInnerGroup","maskOuterGroup","clipId","maskTag","maskUnits","maskContentUnits","defs","makeIconStandard","styleString","asIcon","asSymbol","makeInlineSvgAbstract","_params$icons","icons","titleId","extra","_params$watchable","watchable","isUploadedIcon","widthClass","ceil","attrClass","role","uploadedIconWidthStyle","makeLayersTextAbstract","_params$watchable2","noop$1","bindInternal4","thisContext","subject","defineIcons","_params$skipHooks","skipHooks","expanded","addPack","build","lookup","reducer","ligatures","ligature","hasRegular","shim","iconFromMapping","mapping","toHtml","abstractNodes","_abstractNodes$attrib","_abstractNodes$childr","parseTransformString","transformString","first","rest","MissingIcon","stack","FILL","ANIMATION_BASE","attributeType","repeatCount","dur","OPACITY_ANIMATE","cx","opacity","asFoundIcon","_icon$slice","_icon$slice2","vectorData","baseStyles","dfp","drc","fp","rc","dPatt","customPropPatt","rPatt","Library","definitions","additions","_pullDefinitions","definition","0","_normalized$key","ensureCss","_cssInserted","apiObject","abstractCreator","findIconDefinition","iconLookup","_iconLookup$prefix","library","resolveIcons","maybeIconDefinition","iconDefinition","_params$transform","_params$symbol","_params$mask","_params$maskId","_params$title","_params$titleId","_params$classes","_params$attributes","_params$styles","_params$transform2","_params$title2","_params$classes2","_params$attributes2","_params$styles2","faBitcoin","faGithub","faYoutube","ApiProxy","targetQueue","onQueue","defaultSettings","settings","localSettingsSaveId","currentSettings","localStorage","getItem","fallbacks","setItem","pluginId","setSettings","proxiedOn","_target","RE_ARGS","identifier","makeSymbol","generateFormatCacheKey","friendlyJSONstringify","json","isNumber","isRegExp","isEmptyObject","escapeHtml","rawText"],"mappings":"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","file":"js/chunk-vendors.ddbbcb6e.js","sourcesContent":["/*!\n * message-compiler v9.2.0-beta.23\n * (c) 2021 kazuya kawaguchi\n * Released under the MIT License.\n */\nimport { format, assign, isString } from '@intlify/shared';\n\nconst CompileErrorCodes = {\r\n // tokenizer error codes\r\n EXPECTED_TOKEN: 1,\r\n INVALID_TOKEN_IN_PLACEHOLDER: 2,\r\n UNTERMINATED_SINGLE_QUOTE_IN_PLACEHOLDER: 3,\r\n UNKNOWN_ESCAPE_SEQUENCE: 4,\r\n INVALID_UNICODE_ESCAPE_SEQUENCE: 5,\r\n UNBALANCED_CLOSING_BRACE: 6,\r\n UNTERMINATED_CLOSING_BRACE: 7,\r\n EMPTY_PLACEHOLDER: 8,\r\n NOT_ALLOW_NEST_PLACEHOLDER: 9,\r\n INVALID_LINKED_FORMAT: 10,\r\n // parser error codes\r\n MUST_HAVE_MESSAGES_IN_PLURAL: 11,\r\n UNEXPECTED_EMPTY_LINKED_MODIFIER: 12,\r\n UNEXPECTED_EMPTY_LINKED_KEY: 13,\r\n UNEXPECTED_LEXICAL_ANALYSIS: 14,\r\n // Special value for higher-order compilers to pick up the last code\r\n // to avoid collision of error codes. This should always be kept as the last\r\n // item.\r\n __EXTEND_POINT__: 15\r\n};\r\n/** @internal */\r\nconst errorMessages = {\r\n // tokenizer error messages\r\n [CompileErrorCodes.EXPECTED_TOKEN]: `Expected token: '{0}'`,\r\n [CompileErrorCodes.INVALID_TOKEN_IN_PLACEHOLDER]: `Invalid token in placeholder: '{0}'`,\r\n [CompileErrorCodes.UNTERMINATED_SINGLE_QUOTE_IN_PLACEHOLDER]: `Unterminated single quote in placeholder`,\r\n [CompileErrorCodes.UNKNOWN_ESCAPE_SEQUENCE]: `Unknown escape sequence: \\\\{0}`,\r\n [CompileErrorCodes.INVALID_UNICODE_ESCAPE_SEQUENCE]: `Invalid unicode escape sequence: {0}`,\r\n [CompileErrorCodes.UNBALANCED_CLOSING_BRACE]: `Unbalanced closing brace`,\r\n [CompileErrorCodes.UNTERMINATED_CLOSING_BRACE]: `Unterminated closing brace`,\r\n [CompileErrorCodes.EMPTY_PLACEHOLDER]: `Empty placeholder`,\r\n [CompileErrorCodes.NOT_ALLOW_NEST_PLACEHOLDER]: `Not allowed nest placeholder`,\r\n [CompileErrorCodes.INVALID_LINKED_FORMAT]: `Invalid linked format`,\r\n // parser error messages\r\n [CompileErrorCodes.MUST_HAVE_MESSAGES_IN_PLURAL]: `Plural must have messages`,\r\n [CompileErrorCodes.UNEXPECTED_EMPTY_LINKED_MODIFIER]: `Unexpected empty linked modifier`,\r\n [CompileErrorCodes.UNEXPECTED_EMPTY_LINKED_KEY]: `Unexpected empty linked key`,\r\n [CompileErrorCodes.UNEXPECTED_LEXICAL_ANALYSIS]: `Unexpected lexical analysis in token: '{0}'`\r\n};\r\nfunction createCompileError(code, loc, options = {}) {\r\n const { domain, messages, args } = options;\r\n const msg = (process.env.NODE_ENV !== 'production')\r\n ? format((messages || errorMessages)[code] || '', ...(args || []))\r\n : code;\r\n const error = new SyntaxError(String(msg));\r\n error.code = code;\r\n if (loc) {\r\n error.location = loc;\r\n }\r\n error.domain = domain;\r\n return error;\r\n}\r\n/** @internal */\r\nfunction defaultOnError(error) {\r\n throw error;\r\n}\n\nconst LocationStub = {\r\n start: { line: 1, column: 1, offset: 0 },\r\n end: { line: 1, column: 1, offset: 0 }\r\n};\r\nfunction createPosition(line, column, offset) {\r\n return { line, column, offset };\r\n}\r\nfunction createLocation(start, end, source) {\r\n const loc = { start, end };\r\n if (source != null) {\r\n loc.source = source;\r\n }\r\n return loc;\r\n}\n\nconst CHAR_SP = ' ';\r\nconst CHAR_CR = '\\r';\r\nconst CHAR_LF = '\\n';\r\nconst CHAR_LS = String.fromCharCode(0x2028);\r\nconst CHAR_PS = String.fromCharCode(0x2029);\r\nfunction createScanner(str) {\r\n const _buf = str;\r\n let _index = 0;\r\n let _line = 1;\r\n let _column = 1;\r\n let _peekOffset = 0;\r\n const isCRLF = (index) => _buf[index] === CHAR_CR && _buf[index + 1] === CHAR_LF;\r\n const isLF = (index) => _buf[index] === CHAR_LF;\r\n const isPS = (index) => _buf[index] === CHAR_PS;\r\n const isLS = (index) => _buf[index] === CHAR_LS;\r\n const isLineEnd = (index) => isCRLF(index) || isLF(index) || isPS(index) || isLS(index);\r\n const index = () => _index;\r\n const line = () => _line;\r\n const column = () => _column;\r\n const peekOffset = () => _peekOffset;\r\n const charAt = (offset) => isCRLF(offset) || isPS(offset) || isLS(offset) ? CHAR_LF : _buf[offset];\r\n const currentChar = () => charAt(_index);\r\n const currentPeek = () => charAt(_index + _peekOffset);\r\n function next() {\r\n _peekOffset = 0;\r\n if (isLineEnd(_index)) {\r\n _line++;\r\n _column = 0;\r\n }\r\n if (isCRLF(_index)) {\r\n _index++;\r\n }\r\n _index++;\r\n _column++;\r\n return _buf[_index];\r\n }\r\n function peek() {\r\n if (isCRLF(_index + _peekOffset)) {\r\n _peekOffset++;\r\n }\r\n _peekOffset++;\r\n return _buf[_index + _peekOffset];\r\n }\r\n function reset() {\r\n _index = 0;\r\n _line = 1;\r\n _column = 1;\r\n _peekOffset = 0;\r\n }\r\n function resetPeek(offset = 0) {\r\n _peekOffset = offset;\r\n }\r\n function skipToPeek() {\r\n const target = _index + _peekOffset;\r\n // eslint-disable-next-line no-unmodified-loop-condition\r\n while (target !== _index) {\r\n next();\r\n }\r\n _peekOffset = 0;\r\n }\r\n return {\r\n index,\r\n line,\r\n column,\r\n peekOffset,\r\n charAt,\r\n currentChar,\r\n currentPeek,\r\n next,\r\n peek,\r\n reset,\r\n resetPeek,\r\n skipToPeek\r\n };\r\n}\n\nconst EOF = undefined;\r\nconst LITERAL_DELIMITER = \"'\";\r\nconst ERROR_DOMAIN$1 = 'tokenizer';\r\nfunction createTokenizer(source, options = {}) {\r\n const location = options.location !== false;\r\n const _scnr = createScanner(source);\r\n const currentOffset = () => _scnr.index();\r\n const currentPosition = () => createPosition(_scnr.line(), _scnr.column(), _scnr.index());\r\n const _initLoc = currentPosition();\r\n const _initOffset = currentOffset();\r\n const _context = {\r\n currentType: 14 /* EOF */,\r\n offset: _initOffset,\r\n startLoc: _initLoc,\r\n endLoc: _initLoc,\r\n lastType: 14 /* EOF */,\r\n lastOffset: _initOffset,\r\n lastStartLoc: _initLoc,\r\n lastEndLoc: _initLoc,\r\n braceNest: 0,\r\n inLinked: false,\r\n text: ''\r\n };\r\n const context = () => _context;\r\n const { onError } = options;\r\n function emitError(code, pos, offset, ...args) {\r\n const ctx = context();\r\n pos.column += offset;\r\n pos.offset += offset;\r\n if (onError) {\r\n const loc = createLocation(ctx.startLoc, pos);\r\n const err = createCompileError(code, loc, {\r\n domain: ERROR_DOMAIN$1,\r\n args\r\n });\r\n onError(err);\r\n }\r\n }\r\n function getToken(context, type, value) {\r\n context.endLoc = currentPosition();\r\n context.currentType = type;\r\n const token = { type };\r\n if (location) {\r\n token.loc = createLocation(context.startLoc, context.endLoc);\r\n }\r\n if (value != null) {\r\n token.value = value;\r\n }\r\n return token;\r\n }\r\n const getEndToken = (context) => getToken(context, 14 /* EOF */);\r\n function eat(scnr, ch) {\r\n if (scnr.currentChar() === ch) {\r\n scnr.next();\r\n return ch;\r\n }\r\n else {\r\n emitError(CompileErrorCodes.EXPECTED_TOKEN, currentPosition(), 0, ch);\r\n return '';\r\n }\r\n }\r\n function peekSpaces(scnr) {\r\n let buf = '';\r\n while (scnr.currentPeek() === CHAR_SP || scnr.currentPeek() === CHAR_LF) {\r\n buf += scnr.currentPeek();\r\n scnr.peek();\r\n }\r\n return buf;\r\n }\r\n function skipSpaces(scnr) {\r\n const buf = peekSpaces(scnr);\r\n scnr.skipToPeek();\r\n return buf;\r\n }\r\n function isIdentifierStart(ch) {\r\n if (ch === EOF) {\r\n return false;\r\n }\r\n const cc = ch.charCodeAt(0);\r\n return ((cc >= 97 && cc <= 122) || // a-z\r\n (cc >= 65 && cc <= 90) || // A-Z\r\n cc === 95 // _\r\n );\r\n }\r\n function isNumberStart(ch) {\r\n if (ch === EOF) {\r\n return false;\r\n }\r\n const cc = ch.charCodeAt(0);\r\n return cc >= 48 && cc <= 57; // 0-9\r\n }\r\n function isNamedIdentifierStart(scnr, context) {\r\n const { currentType } = context;\r\n if (currentType !== 2 /* BraceLeft */) {\r\n return false;\r\n }\r\n peekSpaces(scnr);\r\n const ret = isIdentifierStart(scnr.currentPeek());\r\n scnr.resetPeek();\r\n return ret;\r\n }\r\n function isListIdentifierStart(scnr, context) {\r\n const { currentType } = context;\r\n if (currentType !== 2 /* BraceLeft */) {\r\n return false;\r\n }\r\n peekSpaces(scnr);\r\n const ch = scnr.currentPeek() === '-' ? scnr.peek() : scnr.currentPeek();\r\n const ret = isNumberStart(ch);\r\n scnr.resetPeek();\r\n return ret;\r\n }\r\n function isLiteralStart(scnr, context) {\r\n const { currentType } = context;\r\n if (currentType !== 2 /* BraceLeft */) {\r\n return false;\r\n }\r\n peekSpaces(scnr);\r\n const ret = scnr.currentPeek() === LITERAL_DELIMITER;\r\n scnr.resetPeek();\r\n return ret;\r\n }\r\n function isLinkedDotStart(scnr, context) {\r\n const { currentType } = context;\r\n if (currentType !== 8 /* LinkedAlias */) {\r\n return false;\r\n }\r\n peekSpaces(scnr);\r\n const ret = scnr.currentPeek() === \".\" /* LinkedDot */;\r\n scnr.resetPeek();\r\n return ret;\r\n }\r\n function isLinkedModifierStart(scnr, context) {\r\n const { currentType } = context;\r\n if (currentType !== 9 /* LinkedDot */) {\r\n return false;\r\n }\r\n peekSpaces(scnr);\r\n const ret = isIdentifierStart(scnr.currentPeek());\r\n scnr.resetPeek();\r\n return ret;\r\n }\r\n function isLinkedDelimiterStart(scnr, context) {\r\n const { currentType } = context;\r\n if (!(currentType === 8 /* LinkedAlias */ ||\r\n currentType === 12 /* LinkedModifier */)) {\r\n return false;\r\n }\r\n peekSpaces(scnr);\r\n const ret = scnr.currentPeek() === \":\" /* LinkedDelimiter */;\r\n scnr.resetPeek();\r\n return ret;\r\n }\r\n function isLinkedReferStart(scnr, context) {\r\n const { currentType } = context;\r\n if (currentType !== 10 /* LinkedDelimiter */) {\r\n return false;\r\n }\r\n const fn = () => {\r\n const ch = scnr.currentPeek();\r\n if (ch === \"{\" /* BraceLeft */) {\r\n return isIdentifierStart(scnr.peek());\r\n }\r\n else if (ch === \"@\" /* LinkedAlias */ ||\r\n ch === \"%\" /* Modulo */ ||\r\n ch === \"|\" /* Pipe */ ||\r\n ch === \":\" /* LinkedDelimiter */ ||\r\n ch === \".\" /* LinkedDot */ ||\r\n ch === CHAR_SP ||\r\n !ch) {\r\n return false;\r\n }\r\n else if (ch === CHAR_LF) {\r\n scnr.peek();\r\n return fn();\r\n }\r\n else {\r\n // other characters\r\n return isIdentifierStart(ch);\r\n }\r\n };\r\n const ret = fn();\r\n scnr.resetPeek();\r\n return ret;\r\n }\r\n function isPluralStart(scnr) {\r\n peekSpaces(scnr);\r\n const ret = scnr.currentPeek() === \"|\" /* Pipe */;\r\n scnr.resetPeek();\r\n return ret;\r\n }\r\n function isTextStart(scnr, reset = true) {\r\n const fn = (hasSpace = false, prev = '', detectModulo = false) => {\r\n const ch = scnr.currentPeek();\r\n if (ch === \"{\" /* BraceLeft */) {\r\n return prev === \"%\" /* Modulo */ ? false : hasSpace;\r\n }\r\n else if (ch === \"@\" /* LinkedAlias */ || !ch) {\r\n return prev === \"%\" /* Modulo */ ? true : hasSpace;\r\n }\r\n else if (ch === \"%\" /* Modulo */) {\r\n scnr.peek();\r\n return fn(hasSpace, \"%\" /* Modulo */, true);\r\n }\r\n else if (ch === \"|\" /* Pipe */) {\r\n return prev === \"%\" /* Modulo */ || detectModulo\r\n ? true\r\n : !(prev === CHAR_SP || prev === CHAR_LF);\r\n }\r\n else if (ch === CHAR_SP) {\r\n scnr.peek();\r\n return fn(true, CHAR_SP, detectModulo);\r\n }\r\n else if (ch === CHAR_LF) {\r\n scnr.peek();\r\n return fn(true, CHAR_LF, detectModulo);\r\n }\r\n else {\r\n return true;\r\n }\r\n };\r\n const ret = fn();\r\n reset && scnr.resetPeek();\r\n return ret;\r\n }\r\n function takeChar(scnr, fn) {\r\n const ch = scnr.currentChar();\r\n if (ch === EOF) {\r\n return EOF;\r\n }\r\n if (fn(ch)) {\r\n scnr.next();\r\n return ch;\r\n }\r\n return null;\r\n }\r\n function takeIdentifierChar(scnr) {\r\n const closure = (ch) => {\r\n const cc = ch.charCodeAt(0);\r\n return ((cc >= 97 && cc <= 122) || // a-z\r\n (cc >= 65 && cc <= 90) || // A-Z\r\n (cc >= 48 && cc <= 57) || // 0-9\r\n cc === 95 || // _\r\n cc === 36 // $\r\n );\r\n };\r\n return takeChar(scnr, closure);\r\n }\r\n function takeDigit(scnr) {\r\n const closure = (ch) => {\r\n const cc = ch.charCodeAt(0);\r\n return cc >= 48 && cc <= 57; // 0-9\r\n };\r\n return takeChar(scnr, closure);\r\n }\r\n function takeHexDigit(scnr) {\r\n const closure = (ch) => {\r\n const cc = ch.charCodeAt(0);\r\n return ((cc >= 48 && cc <= 57) || // 0-9\r\n (cc >= 65 && cc <= 70) || // A-F\r\n (cc >= 97 && cc <= 102)); // a-f\r\n };\r\n return takeChar(scnr, closure);\r\n }\r\n function getDigits(scnr) {\r\n let ch = '';\r\n let num = '';\r\n while ((ch = takeDigit(scnr))) {\r\n num += ch;\r\n }\r\n return num;\r\n }\r\n function readText(scnr) {\r\n let buf = '';\r\n while (true) {\r\n const ch = scnr.currentChar();\r\n if (ch === \"{\" /* BraceLeft */ ||\r\n ch === \"}\" /* BraceRight */ ||\r\n ch === \"@\" /* LinkedAlias */ ||\r\n ch === \"|\" /* Pipe */ ||\r\n !ch) {\r\n break;\r\n }\r\n else if (ch === \"%\" /* Modulo */) {\r\n if (isTextStart(scnr)) {\r\n buf += ch;\r\n scnr.next();\r\n }\r\n else {\r\n break;\r\n }\r\n }\r\n else if (ch === CHAR_SP || ch === CHAR_LF) {\r\n if (isTextStart(scnr)) {\r\n buf += ch;\r\n scnr.next();\r\n }\r\n else if (isPluralStart(scnr)) {\r\n break;\r\n }\r\n else {\r\n buf += ch;\r\n scnr.next();\r\n }\r\n }\r\n else {\r\n buf += ch;\r\n scnr.next();\r\n }\r\n }\r\n return buf;\r\n }\r\n function readNamedIdentifier(scnr) {\r\n skipSpaces(scnr);\r\n let ch = '';\r\n let name = '';\r\n while ((ch = takeIdentifierChar(scnr))) {\r\n name += ch;\r\n }\r\n if (scnr.currentChar() === EOF) {\r\n emitError(CompileErrorCodes.UNTERMINATED_CLOSING_BRACE, currentPosition(), 0);\r\n }\r\n return name;\r\n }\r\n function readListIdentifier(scnr) {\r\n skipSpaces(scnr);\r\n let value = '';\r\n if (scnr.currentChar() === '-') {\r\n scnr.next();\r\n value += `-${getDigits(scnr)}`;\r\n }\r\n else {\r\n value += getDigits(scnr);\r\n }\r\n if (scnr.currentChar() === EOF) {\r\n emitError(CompileErrorCodes.UNTERMINATED_CLOSING_BRACE, currentPosition(), 0);\r\n }\r\n return value;\r\n }\r\n function readLiteral(scnr) {\r\n skipSpaces(scnr);\r\n eat(scnr, `\\'`);\r\n let ch = '';\r\n let literal = '';\r\n const fn = (x) => x !== LITERAL_DELIMITER && x !== CHAR_LF;\r\n while ((ch = takeChar(scnr, fn))) {\r\n if (ch === '\\\\') {\r\n literal += readEscapeSequence(scnr);\r\n }\r\n else {\r\n literal += ch;\r\n }\r\n }\r\n const current = scnr.currentChar();\r\n if (current === CHAR_LF || current === EOF) {\r\n emitError(CompileErrorCodes.UNTERMINATED_SINGLE_QUOTE_IN_PLACEHOLDER, currentPosition(), 0);\r\n // TODO: Is it correct really?\r\n if (current === CHAR_LF) {\r\n scnr.next();\r\n eat(scnr, `\\'`);\r\n }\r\n return literal;\r\n }\r\n eat(scnr, `\\'`);\r\n return literal;\r\n }\r\n function readEscapeSequence(scnr) {\r\n const ch = scnr.currentChar();\r\n switch (ch) {\r\n case '\\\\':\r\n case `\\'`:\r\n scnr.next();\r\n return `\\\\${ch}`;\r\n case 'u':\r\n return readUnicodeEscapeSequence(scnr, ch, 4);\r\n case 'U':\r\n return readUnicodeEscapeSequence(scnr, ch, 6);\r\n default:\r\n emitError(CompileErrorCodes.UNKNOWN_ESCAPE_SEQUENCE, currentPosition(), 0, ch);\r\n return '';\r\n }\r\n }\r\n function readUnicodeEscapeSequence(scnr, unicode, digits) {\r\n eat(scnr, unicode);\r\n let sequence = '';\r\n for (let i = 0; i < digits; i++) {\r\n const ch = takeHexDigit(scnr);\r\n if (!ch) {\r\n emitError(CompileErrorCodes.INVALID_UNICODE_ESCAPE_SEQUENCE, currentPosition(), 0, `\\\\${unicode}${sequence}${scnr.currentChar()}`);\r\n break;\r\n }\r\n sequence += ch;\r\n }\r\n return `\\\\${unicode}${sequence}`;\r\n }\r\n function readInvalidIdentifier(scnr) {\r\n skipSpaces(scnr);\r\n let ch = '';\r\n let identifiers = '';\r\n const closure = (ch) => ch !== \"{\" /* BraceLeft */ &&\r\n ch !== \"}\" /* BraceRight */ &&\r\n ch !== CHAR_SP &&\r\n ch !== CHAR_LF;\r\n while ((ch = takeChar(scnr, closure))) {\r\n identifiers += ch;\r\n }\r\n return identifiers;\r\n }\r\n function readLinkedModifier(scnr) {\r\n let ch = '';\r\n let name = '';\r\n while ((ch = takeIdentifierChar(scnr))) {\r\n name += ch;\r\n }\r\n return name;\r\n }\r\n function readLinkedRefer(scnr) {\r\n const fn = (detect = false, buf) => {\r\n const ch = scnr.currentChar();\r\n if (ch === \"{\" /* BraceLeft */ ||\r\n ch === \"%\" /* Modulo */ ||\r\n ch === \"@\" /* LinkedAlias */ ||\r\n ch === \"|\" /* Pipe */ ||\r\n !ch) {\r\n return buf;\r\n }\r\n else if (ch === CHAR_SP) {\r\n return buf;\r\n }\r\n else if (ch === CHAR_LF) {\r\n buf += ch;\r\n scnr.next();\r\n return fn(detect, buf);\r\n }\r\n else {\r\n buf += ch;\r\n scnr.next();\r\n return fn(true, buf);\r\n }\r\n };\r\n return fn(false, '');\r\n }\r\n function readPlural(scnr) {\r\n skipSpaces(scnr);\r\n const plural = eat(scnr, \"|\" /* Pipe */);\r\n skipSpaces(scnr);\r\n return plural;\r\n }\r\n // TODO: We need refactoring of token parsing ...\r\n function readTokenInPlaceholder(scnr, context) {\r\n let token = null;\r\n const ch = scnr.currentChar();\r\n switch (ch) {\r\n case \"{\" /* BraceLeft */:\r\n if (context.braceNest >= 1) {\r\n emitError(CompileErrorCodes.NOT_ALLOW_NEST_PLACEHOLDER, currentPosition(), 0);\r\n }\r\n scnr.next();\r\n token = getToken(context, 2 /* BraceLeft */, \"{\" /* BraceLeft */);\r\n skipSpaces(scnr);\r\n context.braceNest++;\r\n return token;\r\n case \"}\" /* BraceRight */:\r\n if (context.braceNest > 0 &&\r\n context.currentType === 2 /* BraceLeft */) {\r\n emitError(CompileErrorCodes.EMPTY_PLACEHOLDER, currentPosition(), 0);\r\n }\r\n scnr.next();\r\n token = getToken(context, 3 /* BraceRight */, \"}\" /* BraceRight */);\r\n context.braceNest--;\r\n context.braceNest > 0 && skipSpaces(scnr);\r\n if (context.inLinked && context.braceNest === 0) {\r\n context.inLinked = false;\r\n }\r\n return token;\r\n case \"@\" /* LinkedAlias */:\r\n if (context.braceNest > 0) {\r\n emitError(CompileErrorCodes.UNTERMINATED_CLOSING_BRACE, currentPosition(), 0);\r\n }\r\n token = readTokenInLinked(scnr, context) || getEndToken(context);\r\n context.braceNest = 0;\r\n return token;\r\n default:\r\n let validNamedIdentifier = true;\r\n let validListIdentifier = true;\r\n let validLiteral = true;\r\n if (isPluralStart(scnr)) {\r\n if (context.braceNest > 0) {\r\n emitError(CompileErrorCodes.UNTERMINATED_CLOSING_BRACE, currentPosition(), 0);\r\n }\r\n token = getToken(context, 1 /* Pipe */, readPlural(scnr));\r\n // reset\r\n context.braceNest = 0;\r\n context.inLinked = false;\r\n return token;\r\n }\r\n if (context.braceNest > 0 &&\r\n (context.currentType === 5 /* Named */ ||\r\n context.currentType === 6 /* List */ ||\r\n context.currentType === 7 /* Literal */)) {\r\n emitError(CompileErrorCodes.UNTERMINATED_CLOSING_BRACE, currentPosition(), 0);\r\n context.braceNest = 0;\r\n return readToken(scnr, context);\r\n }\r\n if ((validNamedIdentifier = isNamedIdentifierStart(scnr, context))) {\r\n token = getToken(context, 5 /* Named */, readNamedIdentifier(scnr));\r\n skipSpaces(scnr);\r\n return token;\r\n }\r\n if ((validListIdentifier = isListIdentifierStart(scnr, context))) {\r\n token = getToken(context, 6 /* List */, readListIdentifier(scnr));\r\n skipSpaces(scnr);\r\n return token;\r\n }\r\n if ((validLiteral = isLiteralStart(scnr, context))) {\r\n token = getToken(context, 7 /* Literal */, readLiteral(scnr));\r\n skipSpaces(scnr);\r\n return token;\r\n }\r\n if (!validNamedIdentifier && !validListIdentifier && !validLiteral) {\r\n // TODO: we should be re-designed invalid cases, when we will extend message syntax near the future ...\r\n token = getToken(context, 13 /* InvalidPlace */, readInvalidIdentifier(scnr));\r\n emitError(CompileErrorCodes.INVALID_TOKEN_IN_PLACEHOLDER, currentPosition(), 0, token.value);\r\n skipSpaces(scnr);\r\n return token;\r\n }\r\n break;\r\n }\r\n return token;\r\n }\r\n // TODO: We need refactoring of token parsing ...\r\n function readTokenInLinked(scnr, context) {\r\n const { currentType } = context;\r\n let token = null;\r\n const ch = scnr.currentChar();\r\n if ((currentType === 8 /* LinkedAlias */ ||\r\n currentType === 9 /* LinkedDot */ ||\r\n currentType === 12 /* LinkedModifier */ ||\r\n currentType === 10 /* LinkedDelimiter */) &&\r\n (ch === CHAR_LF || ch === CHAR_SP)) {\r\n emitError(CompileErrorCodes.INVALID_LINKED_FORMAT, currentPosition(), 0);\r\n }\r\n switch (ch) {\r\n case \"@\" /* LinkedAlias */:\r\n scnr.next();\r\n token = getToken(context, 8 /* LinkedAlias */, \"@\" /* LinkedAlias */);\r\n context.inLinked = true;\r\n return token;\r\n case \".\" /* LinkedDot */:\r\n skipSpaces(scnr);\r\n scnr.next();\r\n return getToken(context, 9 /* LinkedDot */, \".\" /* LinkedDot */);\r\n case \":\" /* LinkedDelimiter */:\r\n skipSpaces(scnr);\r\n scnr.next();\r\n return getToken(context, 10 /* LinkedDelimiter */, \":\" /* LinkedDelimiter */);\r\n default:\r\n if (isPluralStart(scnr)) {\r\n token = getToken(context, 1 /* Pipe */, readPlural(scnr));\r\n // reset\r\n context.braceNest = 0;\r\n context.inLinked = false;\r\n return token;\r\n }\r\n if (isLinkedDotStart(scnr, context) ||\r\n isLinkedDelimiterStart(scnr, context)) {\r\n skipSpaces(scnr);\r\n return readTokenInLinked(scnr, context);\r\n }\r\n if (isLinkedModifierStart(scnr, context)) {\r\n skipSpaces(scnr);\r\n return getToken(context, 12 /* LinkedModifier */, readLinkedModifier(scnr));\r\n }\r\n if (isLinkedReferStart(scnr, context)) {\r\n skipSpaces(scnr);\r\n if (ch === \"{\" /* BraceLeft */) {\r\n // scan the placeholder\r\n return readTokenInPlaceholder(scnr, context) || token;\r\n }\r\n else {\r\n return getToken(context, 11 /* LinkedKey */, readLinkedRefer(scnr));\r\n }\r\n }\r\n if (currentType === 8 /* LinkedAlias */) {\r\n emitError(CompileErrorCodes.INVALID_LINKED_FORMAT, currentPosition(), 0);\r\n }\r\n context.braceNest = 0;\r\n context.inLinked = false;\r\n return readToken(scnr, context);\r\n }\r\n }\r\n // TODO: We need refactoring of token parsing ...\r\n function readToken(scnr, context) {\r\n let token = { type: 14 /* EOF */ };\r\n if (context.braceNest > 0) {\r\n return readTokenInPlaceholder(scnr, context) || getEndToken(context);\r\n }\r\n if (context.inLinked) {\r\n return readTokenInLinked(scnr, context) || getEndToken(context);\r\n }\r\n const ch = scnr.currentChar();\r\n switch (ch) {\r\n case \"{\" /* BraceLeft */:\r\n return readTokenInPlaceholder(scnr, context) || getEndToken(context);\r\n case \"}\" /* BraceRight */:\r\n emitError(CompileErrorCodes.UNBALANCED_CLOSING_BRACE, currentPosition(), 0);\r\n scnr.next();\r\n return getToken(context, 3 /* BraceRight */, \"}\" /* BraceRight */);\r\n case \"@\" /* LinkedAlias */:\r\n return readTokenInLinked(scnr, context) || getEndToken(context);\r\n default:\r\n if (isPluralStart(scnr)) {\r\n token = getToken(context, 1 /* Pipe */, readPlural(scnr));\r\n // reset\r\n context.braceNest = 0;\r\n context.inLinked = false;\r\n return token;\r\n }\r\n if (isTextStart(scnr)) {\r\n return getToken(context, 0 /* Text */, readText(scnr));\r\n }\r\n if (ch === \"%\" /* Modulo */) {\r\n scnr.next();\r\n return getToken(context, 4 /* Modulo */, \"%\" /* Modulo */);\r\n }\r\n break;\r\n }\r\n return token;\r\n }\r\n function nextToken() {\r\n const { currentType, offset, startLoc, endLoc } = _context;\r\n _context.lastType = currentType;\r\n _context.lastOffset = offset;\r\n _context.lastStartLoc = startLoc;\r\n _context.lastEndLoc = endLoc;\r\n _context.offset = currentOffset();\r\n _context.startLoc = currentPosition();\r\n if (_scnr.currentChar() === EOF) {\r\n return getToken(_context, 14 /* EOF */);\r\n }\r\n return readToken(_scnr, _context);\r\n }\r\n return {\r\n nextToken,\r\n currentOffset,\r\n currentPosition,\r\n context\r\n };\r\n}\n\nconst ERROR_DOMAIN = 'parser';\r\n// Backslash backslash, backslash quote, uHHHH, UHHHHHH.\r\nconst KNOWN_ESCAPES = /(?:\\\\\\\\|\\\\'|\\\\u([0-9a-fA-F]{4})|\\\\U([0-9a-fA-F]{6}))/g;\r\nfunction fromEscapeSequence(match, codePoint4, codePoint6) {\r\n switch (match) {\r\n case `\\\\\\\\`:\r\n return `\\\\`;\r\n case `\\\\\\'`:\r\n return `\\'`;\r\n default: {\r\n const codePoint = parseInt(codePoint4 || codePoint6, 16);\r\n if (codePoint <= 0xd7ff || codePoint >= 0xe000) {\r\n return String.fromCodePoint(codePoint);\r\n }\r\n // invalid ...\r\n // Replace them with U+FFFD REPLACEMENT CHARACTER.\r\n return '�';\r\n }\r\n }\r\n}\r\nfunction createParser(options = {}) {\r\n const location = options.location !== false;\r\n const { onError } = options;\r\n function emitError(tokenzer, code, start, offset, ...args) {\r\n const end = tokenzer.currentPosition();\r\n end.offset += offset;\r\n end.column += offset;\r\n if (onError) {\r\n const loc = createLocation(start, end);\r\n const err = createCompileError(code, loc, {\r\n domain: ERROR_DOMAIN,\r\n args\r\n });\r\n onError(err);\r\n }\r\n }\r\n function startNode(type, offset, loc) {\r\n const node = {\r\n type,\r\n start: offset,\r\n end: offset\r\n };\r\n if (location) {\r\n node.loc = { start: loc, end: loc };\r\n }\r\n return node;\r\n }\r\n function endNode(node, offset, pos, type) {\r\n node.end = offset;\r\n if (type) {\r\n node.type = type;\r\n }\r\n if (location && node.loc) {\r\n node.loc.end = pos;\r\n }\r\n }\r\n function parseText(tokenizer, value) {\r\n const context = tokenizer.context();\r\n const node = startNode(3 /* Text */, context.offset, context.startLoc);\r\n node.value = value;\r\n endNode(node, tokenizer.currentOffset(), tokenizer.currentPosition());\r\n return node;\r\n }\r\n function parseList(tokenizer, index) {\r\n const context = tokenizer.context();\r\n const { lastOffset: offset, lastStartLoc: loc } = context; // get brace left loc\r\n const node = startNode(5 /* List */, offset, loc);\r\n node.index = parseInt(index, 10);\r\n tokenizer.nextToken(); // skip brach right\r\n endNode(node, tokenizer.currentOffset(), tokenizer.currentPosition());\r\n return node;\r\n }\r\n function parseNamed(tokenizer, key) {\r\n const context = tokenizer.context();\r\n const { lastOffset: offset, lastStartLoc: loc } = context; // get brace left loc\r\n const node = startNode(4 /* Named */, offset, loc);\r\n node.key = key;\r\n tokenizer.nextToken(); // skip brach right\r\n endNode(node, tokenizer.currentOffset(), tokenizer.currentPosition());\r\n return node;\r\n }\r\n function parseLiteral(tokenizer, value) {\r\n const context = tokenizer.context();\r\n const { lastOffset: offset, lastStartLoc: loc } = context; // get brace left loc\r\n const node = startNode(9 /* Literal */, offset, loc);\r\n node.value = value.replace(KNOWN_ESCAPES, fromEscapeSequence);\r\n tokenizer.nextToken(); // skip brach right\r\n endNode(node, tokenizer.currentOffset(), tokenizer.currentPosition());\r\n return node;\r\n }\r\n function parseLinkedModifier(tokenizer) {\r\n const token = tokenizer.nextToken();\r\n const context = tokenizer.context();\r\n const { lastOffset: offset, lastStartLoc: loc } = context; // get linked dot loc\r\n const node = startNode(8 /* LinkedModifier */, offset, loc);\r\n if (token.type !== 12 /* LinkedModifier */) {\r\n // empty modifier\r\n emitError(tokenizer, CompileErrorCodes.UNEXPECTED_EMPTY_LINKED_MODIFIER, context.lastStartLoc, 0);\r\n node.value = '';\r\n endNode(node, offset, loc);\r\n return {\r\n nextConsumeToken: token,\r\n node\r\n };\r\n }\r\n // check token\r\n if (token.value == null) {\r\n emitError(tokenizer, CompileErrorCodes.UNEXPECTED_LEXICAL_ANALYSIS, context.lastStartLoc, 0, getTokenCaption(token));\r\n }\r\n node.value = token.value || '';\r\n endNode(node, tokenizer.currentOffset(), tokenizer.currentPosition());\r\n return {\r\n node\r\n };\r\n }\r\n function parseLinkedKey(tokenizer, value) {\r\n const context = tokenizer.context();\r\n const node = startNode(7 /* LinkedKey */, context.offset, context.startLoc);\r\n node.value = value;\r\n endNode(node, tokenizer.currentOffset(), tokenizer.currentPosition());\r\n return node;\r\n }\r\n function parseLinked(tokenizer) {\r\n const context = tokenizer.context();\r\n const linkedNode = startNode(6 /* Linked */, context.offset, context.startLoc);\r\n let token = tokenizer.nextToken();\r\n if (token.type === 9 /* LinkedDot */) {\r\n const parsed = parseLinkedModifier(tokenizer);\r\n linkedNode.modifier = parsed.node;\r\n token = parsed.nextConsumeToken || tokenizer.nextToken();\r\n }\r\n // asset check token\r\n if (token.type !== 10 /* LinkedDelimiter */) {\r\n emitError(tokenizer, CompileErrorCodes.UNEXPECTED_LEXICAL_ANALYSIS, context.lastStartLoc, 0, getTokenCaption(token));\r\n }\r\n token = tokenizer.nextToken();\r\n // skip brace left\r\n if (token.type === 2 /* BraceLeft */) {\r\n token = tokenizer.nextToken();\r\n }\r\n switch (token.type) {\r\n case 11 /* LinkedKey */:\r\n if (token.value == null) {\r\n emitError(tokenizer, CompileErrorCodes.UNEXPECTED_LEXICAL_ANALYSIS, context.lastStartLoc, 0, getTokenCaption(token));\r\n }\r\n linkedNode.key = parseLinkedKey(tokenizer, token.value || '');\r\n break;\r\n case 5 /* Named */:\r\n if (token.value == null) {\r\n emitError(tokenizer, CompileErrorCodes.UNEXPECTED_LEXICAL_ANALYSIS, context.lastStartLoc, 0, getTokenCaption(token));\r\n }\r\n linkedNode.key = parseNamed(tokenizer, token.value || '');\r\n break;\r\n case 6 /* List */:\r\n if (token.value == null) {\r\n emitError(tokenizer, CompileErrorCodes.UNEXPECTED_LEXICAL_ANALYSIS, context.lastStartLoc, 0, getTokenCaption(token));\r\n }\r\n linkedNode.key = parseList(tokenizer, token.value || '');\r\n break;\r\n case 7 /* Literal */:\r\n if (token.value == null) {\r\n emitError(tokenizer, CompileErrorCodes.UNEXPECTED_LEXICAL_ANALYSIS, context.lastStartLoc, 0, getTokenCaption(token));\r\n }\r\n linkedNode.key = parseLiteral(tokenizer, token.value || '');\r\n break;\r\n default:\r\n // empty key\r\n emitError(tokenizer, CompileErrorCodes.UNEXPECTED_EMPTY_LINKED_KEY, context.lastStartLoc, 0);\r\n const nextContext = tokenizer.context();\r\n const emptyLinkedKeyNode = startNode(7 /* LinkedKey */, nextContext.offset, nextContext.startLoc);\r\n emptyLinkedKeyNode.value = '';\r\n endNode(emptyLinkedKeyNode, nextContext.offset, nextContext.startLoc);\r\n linkedNode.key = emptyLinkedKeyNode;\r\n endNode(linkedNode, nextContext.offset, nextContext.startLoc);\r\n return {\r\n nextConsumeToken: token,\r\n node: linkedNode\r\n };\r\n }\r\n endNode(linkedNode, tokenizer.currentOffset(), tokenizer.currentPosition());\r\n return {\r\n node: linkedNode\r\n };\r\n }\r\n function parseMessage(tokenizer) {\r\n const context = tokenizer.context();\r\n const startOffset = context.currentType === 1 /* Pipe */\r\n ? tokenizer.currentOffset()\r\n : context.offset;\r\n const startLoc = context.currentType === 1 /* Pipe */\r\n ? context.endLoc\r\n : context.startLoc;\r\n const node = startNode(2 /* Message */, startOffset, startLoc);\r\n node.items = [];\r\n let nextToken = null;\r\n do {\r\n const token = nextToken || tokenizer.nextToken();\r\n nextToken = null;\r\n switch (token.type) {\r\n case 0 /* Text */:\r\n if (token.value == null) {\r\n emitError(tokenizer, CompileErrorCodes.UNEXPECTED_LEXICAL_ANALYSIS, context.lastStartLoc, 0, getTokenCaption(token));\r\n }\r\n node.items.push(parseText(tokenizer, token.value || ''));\r\n break;\r\n case 6 /* List */:\r\n if (token.value == null) {\r\n emitError(tokenizer, CompileErrorCodes.UNEXPECTED_LEXICAL_ANALYSIS, context.lastStartLoc, 0, getTokenCaption(token));\r\n }\r\n node.items.push(parseList(tokenizer, token.value || ''));\r\n break;\r\n case 5 /* Named */:\r\n if (token.value == null) {\r\n emitError(tokenizer, CompileErrorCodes.UNEXPECTED_LEXICAL_ANALYSIS, context.lastStartLoc, 0, getTokenCaption(token));\r\n }\r\n node.items.push(parseNamed(tokenizer, token.value || ''));\r\n break;\r\n case 7 /* Literal */:\r\n if (token.value == null) {\r\n emitError(tokenizer, CompileErrorCodes.UNEXPECTED_LEXICAL_ANALYSIS, context.lastStartLoc, 0, getTokenCaption(token));\r\n }\r\n node.items.push(parseLiteral(tokenizer, token.value || ''));\r\n break;\r\n case 8 /* LinkedAlias */:\r\n const parsed = parseLinked(tokenizer);\r\n node.items.push(parsed.node);\r\n nextToken = parsed.nextConsumeToken || null;\r\n break;\r\n }\r\n } while (context.currentType !== 14 /* EOF */ &&\r\n context.currentType !== 1 /* Pipe */);\r\n // adjust message node loc\r\n const endOffset = context.currentType === 1 /* Pipe */\r\n ? context.lastOffset\r\n : tokenizer.currentOffset();\r\n const endLoc = context.currentType === 1 /* Pipe */\r\n ? context.lastEndLoc\r\n : tokenizer.currentPosition();\r\n endNode(node, endOffset, endLoc);\r\n return node;\r\n }\r\n function parsePlural(tokenizer, offset, loc, msgNode) {\r\n const context = tokenizer.context();\r\n let hasEmptyMessage = msgNode.items.length === 0;\r\n const node = startNode(1 /* Plural */, offset, loc);\r\n node.cases = [];\r\n node.cases.push(msgNode);\r\n do {\r\n const msg = parseMessage(tokenizer);\r\n if (!hasEmptyMessage) {\r\n hasEmptyMessage = msg.items.length === 0;\r\n }\r\n node.cases.push(msg);\r\n } while (context.currentType !== 14 /* EOF */);\r\n if (hasEmptyMessage) {\r\n emitError(tokenizer, CompileErrorCodes.MUST_HAVE_MESSAGES_IN_PLURAL, loc, 0);\r\n }\r\n endNode(node, tokenizer.currentOffset(), tokenizer.currentPosition());\r\n return node;\r\n }\r\n function parseResource(tokenizer) {\r\n const context = tokenizer.context();\r\n const { offset, startLoc } = context;\r\n const msgNode = parseMessage(tokenizer);\r\n if (context.currentType === 14 /* EOF */) {\r\n return msgNode;\r\n }\r\n else {\r\n return parsePlural(tokenizer, offset, startLoc, msgNode);\r\n }\r\n }\r\n function parse(source) {\r\n const tokenizer = createTokenizer(source, assign({}, options));\r\n const context = tokenizer.context();\r\n const node = startNode(0 /* Resource */, context.offset, context.startLoc);\r\n if (location && node.loc) {\r\n node.loc.source = source;\r\n }\r\n node.body = parseResource(tokenizer);\r\n // assert whether achieved to EOF\r\n if (context.currentType !== 14 /* EOF */) {\r\n emitError(tokenizer, CompileErrorCodes.UNEXPECTED_LEXICAL_ANALYSIS, context.lastStartLoc, 0, source[context.offset] || '');\r\n }\r\n endNode(node, tokenizer.currentOffset(), tokenizer.currentPosition());\r\n return node;\r\n }\r\n return { parse };\r\n}\r\nfunction getTokenCaption(token) {\r\n if (token.type === 14 /* EOF */) {\r\n return 'EOF';\r\n }\r\n const name = (token.value || '').replace(/\\r?\\n/gu, '\\\\n');\r\n return name.length > 10 ? name.slice(0, 9) + '…' : name;\r\n}\n\nfunction createTransformer(ast, options = {} // eslint-disable-line\r\n) {\r\n const _context = {\r\n ast,\r\n helpers: new Set()\r\n };\r\n const context = () => _context;\r\n const helper = (name) => {\r\n _context.helpers.add(name);\r\n return name;\r\n };\r\n return { context, helper };\r\n}\r\nfunction traverseNodes(nodes, transformer) {\r\n for (let i = 0; i < nodes.length; i++) {\r\n traverseNode(nodes[i], transformer);\r\n }\r\n}\r\nfunction traverseNode(node, transformer) {\r\n // TODO: if we need pre-hook of transform, should be implemented to here\r\n switch (node.type) {\r\n case 1 /* Plural */:\r\n traverseNodes(node.cases, transformer);\r\n transformer.helper(\"plural\" /* PLURAL */);\r\n break;\r\n case 2 /* Message */:\r\n traverseNodes(node.items, transformer);\r\n break;\r\n case 6 /* Linked */:\r\n const linked = node;\r\n traverseNode(linked.key, transformer);\r\n transformer.helper(\"linked\" /* LINKED */);\r\n break;\r\n case 5 /* List */:\r\n transformer.helper(\"interpolate\" /* INTERPOLATE */);\r\n transformer.helper(\"list\" /* LIST */);\r\n break;\r\n case 4 /* Named */:\r\n transformer.helper(\"interpolate\" /* INTERPOLATE */);\r\n transformer.helper(\"named\" /* NAMED */);\r\n break;\r\n }\r\n // TODO: if we need post-hook of transform, should be implemented to here\r\n}\r\n// transform AST\r\nfunction transform(ast, options = {} // eslint-disable-line\r\n) {\r\n const transformer = createTransformer(ast);\r\n transformer.helper(\"normalize\" /* NORMALIZE */);\r\n // traverse\r\n ast.body && traverseNode(ast.body, transformer);\r\n // set meta information\r\n const context = transformer.context();\r\n ast.helpers = Array.from(context.helpers);\r\n}\n\nfunction createCodeGenerator(ast, options) {\r\n const { sourceMap, filename, breakLineCode, needIndent: _needIndent } = options;\r\n const _context = {\r\n source: ast.loc.source,\r\n filename,\r\n code: '',\r\n column: 1,\r\n line: 1,\r\n offset: 0,\r\n map: undefined,\r\n breakLineCode,\r\n needIndent: _needIndent,\r\n indentLevel: 0\r\n };\r\n const context = () => _context;\r\n function push(code, node) {\r\n _context.code += code;\r\n }\r\n function _newline(n, withBreakLine = true) {\r\n const _breakLineCode = withBreakLine ? breakLineCode : '';\r\n push(_needIndent ? _breakLineCode + ` `.repeat(n) : _breakLineCode);\r\n }\r\n function indent(withNewLine = true) {\r\n const level = ++_context.indentLevel;\r\n withNewLine && _newline(level);\r\n }\r\n function deindent(withNewLine = true) {\r\n const level = --_context.indentLevel;\r\n withNewLine && _newline(level);\r\n }\r\n function newline() {\r\n _newline(_context.indentLevel);\r\n }\r\n const helper = (key) => `_${key}`;\r\n const needIndent = () => _context.needIndent;\r\n return {\r\n context,\r\n push,\r\n indent,\r\n deindent,\r\n newline,\r\n helper,\r\n needIndent\r\n };\r\n}\r\nfunction generateLinkedNode(generator, node) {\r\n const { helper } = generator;\r\n generator.push(`${helper(\"linked\" /* LINKED */)}(`);\r\n generateNode(generator, node.key);\r\n if (node.modifier) {\r\n generator.push(`, `);\r\n generateNode(generator, node.modifier);\r\n }\r\n generator.push(`)`);\r\n}\r\nfunction generateMessageNode(generator, node) {\r\n const { helper, needIndent } = generator;\r\n generator.push(`${helper(\"normalize\" /* NORMALIZE */)}([`);\r\n generator.indent(needIndent());\r\n const length = node.items.length;\r\n for (let i = 0; i < length; i++) {\r\n generateNode(generator, node.items[i]);\r\n if (i === length - 1) {\r\n break;\r\n }\r\n generator.push(', ');\r\n }\r\n generator.deindent(needIndent());\r\n generator.push('])');\r\n}\r\nfunction generatePluralNode(generator, node) {\r\n const { helper, needIndent } = generator;\r\n if (node.cases.length > 1) {\r\n generator.push(`${helper(\"plural\" /* PLURAL */)}([`);\r\n generator.indent(needIndent());\r\n const length = node.cases.length;\r\n for (let i = 0; i < length; i++) {\r\n generateNode(generator, node.cases[i]);\r\n if (i === length - 1) {\r\n break;\r\n }\r\n generator.push(', ');\r\n }\r\n generator.deindent(needIndent());\r\n generator.push(`])`);\r\n }\r\n}\r\nfunction generateResource(generator, node) {\r\n if (node.body) {\r\n generateNode(generator, node.body);\r\n }\r\n else {\r\n generator.push('null');\r\n }\r\n}\r\nfunction generateNode(generator, node) {\r\n const { helper } = generator;\r\n switch (node.type) {\r\n case 0 /* Resource */:\r\n generateResource(generator, node);\r\n break;\r\n case 1 /* Plural */:\r\n generatePluralNode(generator, node);\r\n break;\r\n case 2 /* Message */:\r\n generateMessageNode(generator, node);\r\n break;\r\n case 6 /* Linked */:\r\n generateLinkedNode(generator, node);\r\n break;\r\n case 8 /* LinkedModifier */:\r\n generator.push(JSON.stringify(node.value), node);\r\n break;\r\n case 7 /* LinkedKey */:\r\n generator.push(JSON.stringify(node.value), node);\r\n break;\r\n case 5 /* List */:\r\n generator.push(`${helper(\"interpolate\" /* INTERPOLATE */)}(${helper(\"list\" /* LIST */)}(${node.index}))`, node);\r\n break;\r\n case 4 /* Named */:\r\n generator.push(`${helper(\"interpolate\" /* INTERPOLATE */)}(${helper(\"named\" /* NAMED */)}(${JSON.stringify(node.key)}))`, node);\r\n break;\r\n case 9 /* Literal */:\r\n generator.push(JSON.stringify(node.value), node);\r\n break;\r\n case 3 /* Text */:\r\n generator.push(JSON.stringify(node.value), node);\r\n break;\r\n default:\r\n if ((process.env.NODE_ENV !== 'production')) {\r\n throw new Error(`unhandled codegen node type: ${node.type}`);\r\n }\r\n }\r\n}\r\n// generate code from AST\r\nconst generate = (ast, options = {} // eslint-disable-line\r\n) => {\r\n const mode = isString(options.mode) ? options.mode : 'normal';\r\n const filename = isString(options.filename)\r\n ? options.filename\r\n : 'message.intl';\r\n const sourceMap = !!options.sourceMap;\r\n // prettier-ignore\r\n const breakLineCode = options.breakLineCode != null\r\n ? options.breakLineCode\r\n : mode === 'arrow'\r\n ? ';'\r\n : '\\n';\r\n const needIndent = options.needIndent ? options.needIndent : mode !== 'arrow';\r\n const helpers = ast.helpers || [];\r\n const generator = createCodeGenerator(ast, {\r\n mode,\r\n filename,\r\n sourceMap,\r\n breakLineCode,\r\n needIndent\r\n });\r\n generator.push(mode === 'normal' ? `function __msg__ (ctx) {` : `(ctx) => {`);\r\n generator.indent(needIndent);\r\n if (helpers.length > 0) {\r\n generator.push(`const { ${helpers.map(s => `${s}: _${s}`).join(', ')} } = ctx`);\r\n generator.newline();\r\n }\r\n generator.push(`return `);\r\n generateNode(generator, ast);\r\n generator.deindent(needIndent);\r\n generator.push(`}`);\r\n const { code, map } = generator.context();\r\n return {\r\n ast,\r\n code,\r\n map: map ? map.toJSON() : undefined // eslint-disable-line @typescript-eslint/no-explicit-any\r\n };\r\n};\n\nfunction baseCompile(source, options = {}) {\r\n const assignedOptions = assign({}, options);\r\n // parse source codes\r\n const parser = createParser(assignedOptions);\r\n const ast = parser.parse(source);\r\n // transform ASTs\r\n transform(ast, assignedOptions);\r\n // generate javascript codes\r\n return generate(ast, assignedOptions);\r\n}\n\nexport { CompileErrorCodes, ERROR_DOMAIN, LocationStub, baseCompile, createCompileError, createLocation, createParser, createPosition, defaultOnError, errorMessages };\n","/*!\n * devtools-if v9.2.0-beta.23\n * (c) 2021 kazuya kawaguchi\n * Released under the MIT License.\n */\nconst IntlifyDevToolsHooks = {\r\n I18nInit: 'i18n:init',\r\n FunctionTranslate: 'function:translate'\r\n};\n\nexport { IntlifyDevToolsHooks };\n","/*!\n * core-base v9.2.0-beta.23\n * (c) 2021 kazuya kawaguchi\n * Released under the MIT License.\n */\nimport { isObject, isNumber, isString, isFunction, isPlainObject, toDisplayString, format, isArray, isBoolean, assign, isRegExp, warn, escapeHtml, inBrowser, mark, measure, generateCodeFrame, generateFormatCacheKey, isEmptyObject, isDate, getGlobalThis } from '@intlify/shared';\nimport { defaultOnError, baseCompile, CompileErrorCodes, createCompileError } from '@intlify/message-compiler';\nexport { CompileErrorCodes, createCompileError } from '@intlify/message-compiler';\nimport { IntlifyDevToolsHooks } from '@intlify/devtools-if';\n\nconst pathStateMachine = [];\r\npathStateMachine[0 /* BEFORE_PATH */] = {\r\n [\"w\" /* WORKSPACE */]: [0 /* BEFORE_PATH */],\r\n [\"i\" /* IDENT */]: [3 /* IN_IDENT */, 0 /* APPEND */],\r\n [\"[\" /* LEFT_BRACKET */]: [4 /* IN_SUB_PATH */],\r\n [\"o\" /* END_OF_FAIL */]: [7 /* AFTER_PATH */]\r\n};\r\npathStateMachine[1 /* IN_PATH */] = {\r\n [\"w\" /* WORKSPACE */]: [1 /* IN_PATH */],\r\n [\".\" /* DOT */]: [2 /* BEFORE_IDENT */],\r\n [\"[\" /* LEFT_BRACKET */]: [4 /* IN_SUB_PATH */],\r\n [\"o\" /* END_OF_FAIL */]: [7 /* AFTER_PATH */]\r\n};\r\npathStateMachine[2 /* BEFORE_IDENT */] = {\r\n [\"w\" /* WORKSPACE */]: [2 /* BEFORE_IDENT */],\r\n [\"i\" /* IDENT */]: [3 /* IN_IDENT */, 0 /* APPEND */],\r\n [\"0\" /* ZERO */]: [3 /* IN_IDENT */, 0 /* APPEND */]\r\n};\r\npathStateMachine[3 /* IN_IDENT */] = {\r\n [\"i\" /* IDENT */]: [3 /* IN_IDENT */, 0 /* APPEND */],\r\n [\"0\" /* ZERO */]: [3 /* IN_IDENT */, 0 /* APPEND */],\r\n [\"w\" /* WORKSPACE */]: [1 /* IN_PATH */, 1 /* PUSH */],\r\n [\".\" /* DOT */]: [2 /* BEFORE_IDENT */, 1 /* PUSH */],\r\n [\"[\" /* LEFT_BRACKET */]: [4 /* IN_SUB_PATH */, 1 /* PUSH */],\r\n [\"o\" /* END_OF_FAIL */]: [7 /* AFTER_PATH */, 1 /* PUSH */]\r\n};\r\npathStateMachine[4 /* IN_SUB_PATH */] = {\r\n [\"'\" /* SINGLE_QUOTE */]: [5 /* IN_SINGLE_QUOTE */, 0 /* APPEND */],\r\n [\"\\\"\" /* DOUBLE_QUOTE */]: [6 /* IN_DOUBLE_QUOTE */, 0 /* APPEND */],\r\n [\"[\" /* LEFT_BRACKET */]: [\r\n 4 /* IN_SUB_PATH */,\r\n 2 /* INC_SUB_PATH_DEPTH */\r\n ],\r\n [\"]\" /* RIGHT_BRACKET */]: [1 /* IN_PATH */, 3 /* PUSH_SUB_PATH */],\r\n [\"o\" /* END_OF_FAIL */]: 8 /* ERROR */,\r\n [\"l\" /* ELSE */]: [4 /* IN_SUB_PATH */, 0 /* APPEND */]\r\n};\r\npathStateMachine[5 /* IN_SINGLE_QUOTE */] = {\r\n [\"'\" /* SINGLE_QUOTE */]: [4 /* IN_SUB_PATH */, 0 /* APPEND */],\r\n [\"o\" /* END_OF_FAIL */]: 8 /* ERROR */,\r\n [\"l\" /* ELSE */]: [5 /* IN_SINGLE_QUOTE */, 0 /* APPEND */]\r\n};\r\npathStateMachine[6 /* IN_DOUBLE_QUOTE */] = {\r\n [\"\\\"\" /* DOUBLE_QUOTE */]: [4 /* IN_SUB_PATH */, 0 /* APPEND */],\r\n [\"o\" /* END_OF_FAIL */]: 8 /* ERROR */,\r\n [\"l\" /* ELSE */]: [6 /* IN_DOUBLE_QUOTE */, 0 /* APPEND */]\r\n};\r\n/**\r\n * Check if an expression is a literal value.\r\n */\r\nconst literalValueRE = /^\\s?(?:true|false|-?[\\d.]+|'[^']*'|\"[^\"]*\")\\s?$/;\r\nfunction isLiteral(exp) {\r\n return literalValueRE.test(exp);\r\n}\r\n/**\r\n * Strip quotes from a string\r\n */\r\nfunction stripQuotes(str) {\r\n const a = str.charCodeAt(0);\r\n const b = str.charCodeAt(str.length - 1);\r\n return a === b && (a === 0x22 || a === 0x27) ? str.slice(1, -1) : str;\r\n}\r\n/**\r\n * Determine the type of a character in a keypath.\r\n */\r\nfunction getPathCharType(ch) {\r\n if (ch === undefined || ch === null) {\r\n return \"o\" /* END_OF_FAIL */;\r\n }\r\n const code = ch.charCodeAt(0);\r\n switch (code) {\r\n case 0x5b: // [\r\n case 0x5d: // ]\r\n case 0x2e: // .\r\n case 0x22: // \"\r\n case 0x27: // '\r\n return ch;\r\n case 0x5f: // _\r\n case 0x24: // $\r\n case 0x2d: // -\r\n return \"i\" /* IDENT */;\r\n case 0x09: // Tab (HT)\r\n case 0x0a: // Newline (LF)\r\n case 0x0d: // Return (CR)\r\n case 0xa0: // No-break space (NBSP)\r\n case 0xfeff: // Byte Order Mark (BOM)\r\n case 0x2028: // Line Separator (LS)\r\n case 0x2029: // Paragraph Separator (PS)\r\n return \"w\" /* WORKSPACE */;\r\n }\r\n return \"i\" /* IDENT */;\r\n}\r\n/**\r\n * Format a subPath, return its plain form if it is\r\n * a literal string or number. Otherwise prepend the\r\n * dynamic indicator (*).\r\n */\r\nfunction formatSubPath(path) {\r\n const trimmed = path.trim();\r\n // invalid leading 0\r\n if (path.charAt(0) === '0' && isNaN(parseInt(path))) {\r\n return false;\r\n }\r\n return isLiteral(trimmed)\r\n ? stripQuotes(trimmed)\r\n : \"*\" /* ASTARISK */ + trimmed;\r\n}\r\n/**\r\n * Parse a string path into an array of segments\r\n */\r\nfunction parse(path) {\r\n const keys = [];\r\n let index = -1;\r\n let mode = 0 /* BEFORE_PATH */;\r\n let subPathDepth = 0;\r\n let c;\r\n let key; // eslint-disable-line\r\n let newChar;\r\n let type;\r\n let transition;\r\n let action;\r\n let typeMap;\r\n const actions = [];\r\n actions[0 /* APPEND */] = () => {\r\n if (key === undefined) {\r\n key = newChar;\r\n }\r\n else {\r\n key += newChar;\r\n }\r\n };\r\n actions[1 /* PUSH */] = () => {\r\n if (key !== undefined) {\r\n keys.push(key);\r\n key = undefined;\r\n }\r\n };\r\n actions[2 /* INC_SUB_PATH_DEPTH */] = () => {\r\n actions[0 /* APPEND */]();\r\n subPathDepth++;\r\n };\r\n actions[3 /* PUSH_SUB_PATH */] = () => {\r\n if (subPathDepth > 0) {\r\n subPathDepth--;\r\n mode = 4 /* IN_SUB_PATH */;\r\n actions[0 /* APPEND */]();\r\n }\r\n else {\r\n subPathDepth = 0;\r\n if (key === undefined) {\r\n return false;\r\n }\r\n key = formatSubPath(key);\r\n if (key === false) {\r\n return false;\r\n }\r\n else {\r\n actions[1 /* PUSH */]();\r\n }\r\n }\r\n };\r\n function maybeUnescapeQuote() {\r\n const nextChar = path[index + 1];\r\n if ((mode === 5 /* IN_SINGLE_QUOTE */ &&\r\n nextChar === \"'\" /* SINGLE_QUOTE */) ||\r\n (mode === 6 /* IN_DOUBLE_QUOTE */ &&\r\n nextChar === \"\\\"\" /* DOUBLE_QUOTE */)) {\r\n index++;\r\n newChar = '\\\\' + nextChar;\r\n actions[0 /* APPEND */]();\r\n return true;\r\n }\r\n }\r\n while (mode !== null) {\r\n index++;\r\n c = path[index];\r\n if (c === '\\\\' && maybeUnescapeQuote()) {\r\n continue;\r\n }\r\n type = getPathCharType(c);\r\n typeMap = pathStateMachine[mode];\r\n transition = typeMap[type] || typeMap[\"l\" /* ELSE */] || 8 /* ERROR */;\r\n // check parse error\r\n if (transition === 8 /* ERROR */) {\r\n return;\r\n }\r\n mode = transition[0];\r\n if (transition[1] !== undefined) {\r\n action = actions[transition[1]];\r\n if (action) {\r\n newChar = c;\r\n if (action() === false) {\r\n return;\r\n }\r\n }\r\n }\r\n // check parse finish\r\n if (mode === 7 /* AFTER_PATH */) {\r\n return keys;\r\n }\r\n }\r\n}\r\n// path token cache\r\nconst cache = new Map();\r\n/**\r\n * key-value message resolver\r\n *\r\n * @remarks\r\n * Resolves messages with the key-value structure. Note that messages with a hierarchical structure such as objects cannot be resolved\r\n *\r\n * @param obj - A target object to be resolved with path\r\n * @param path - A {@link Path | path} to resolve the value of message\r\n *\r\n * @returns A resolved {@link PathValue | path value}\r\n *\r\n * @VueI18nGeneral\r\n */\r\nfunction resolveWithKeyValue(obj, path) {\r\n return isObject(obj) ? obj[path] : null;\r\n}\r\n/**\r\n * message resolver\r\n *\r\n * @remarks\r\n * Resolves messages. messages with a hierarchical structure such as objects can be resolved. This resolver is used in VueI18n as default.\r\n *\r\n * @param obj - A target object to be resolved with path\r\n * @param path - A {@link Path | path} to resolve the value of message\r\n *\r\n * @returns A resolved {@link PathValue | path value}\r\n *\r\n * @VueI18nGeneral\r\n */\r\nfunction resolveValue(obj, path) {\r\n // check object\r\n if (!isObject(obj)) {\r\n return null;\r\n }\r\n // parse path\r\n let hit = cache.get(path);\r\n if (!hit) {\r\n hit = parse(path);\r\n if (hit) {\r\n cache.set(path, hit);\r\n }\r\n }\r\n // check hit\r\n if (!hit) {\r\n return null;\r\n }\r\n // resolve path value\r\n const len = hit.length;\r\n let last = obj;\r\n let i = 0;\r\n while (i < len) {\r\n const val = last[hit[i]];\r\n if (val === undefined) {\r\n return null;\r\n }\r\n last = val;\r\n i++;\r\n }\r\n return last;\r\n}\n\nconst DEFAULT_MODIFIER = (str) => str;\r\nconst DEFAULT_MESSAGE = (ctx) => ''; // eslint-disable-line\r\nconst DEFAULT_MESSAGE_DATA_TYPE = 'text';\r\nconst DEFAULT_NORMALIZE = (values) => values.length === 0 ? '' : values.join('');\r\nconst DEFAULT_INTERPOLATE = toDisplayString;\r\nfunction pluralDefault(choice, choicesLength) {\r\n choice = Math.abs(choice);\r\n if (choicesLength === 2) {\r\n // prettier-ignore\r\n return choice\r\n ? choice > 1\r\n ? 1\r\n : 0\r\n : 1;\r\n }\r\n return choice ? Math.min(choice, 2) : 0;\r\n}\r\nfunction getPluralIndex(options) {\r\n // prettier-ignore\r\n const index = isNumber(options.pluralIndex)\r\n ? options.pluralIndex\r\n : -1;\r\n // prettier-ignore\r\n return options.named && (isNumber(options.named.count) || isNumber(options.named.n))\r\n ? isNumber(options.named.count)\r\n ? options.named.count\r\n : isNumber(options.named.n)\r\n ? options.named.n\r\n : index\r\n : index;\r\n}\r\nfunction normalizeNamed(pluralIndex, props) {\r\n if (!props.count) {\r\n props.count = pluralIndex;\r\n }\r\n if (!props.n) {\r\n props.n = pluralIndex;\r\n }\r\n}\r\nfunction createMessageContext(options = {}) {\r\n const locale = options.locale;\r\n const pluralIndex = getPluralIndex(options);\r\n const pluralRule = isObject(options.pluralRules) &&\r\n isString(locale) &&\r\n isFunction(options.pluralRules[locale])\r\n ? options.pluralRules[locale]\r\n : pluralDefault;\r\n const orgPluralRule = isObject(options.pluralRules) &&\r\n isString(locale) &&\r\n isFunction(options.pluralRules[locale])\r\n ? pluralDefault\r\n : undefined;\r\n const plural = (messages) => messages[pluralRule(pluralIndex, messages.length, orgPluralRule)];\r\n const _list = options.list || [];\r\n const list = (index) => _list[index];\r\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\r\n const _named = options.named || {};\r\n isNumber(options.pluralIndex) && normalizeNamed(pluralIndex, _named);\r\n const named = (key) => _named[key];\r\n // TODO: need to design resolve message function?\r\n function message(key) {\r\n // prettier-ignore\r\n const msg = isFunction(options.messages)\r\n ? options.messages(key)\r\n : isObject(options.messages)\r\n ? options.messages[key]\r\n : false;\r\n return !msg\r\n ? options.parent\r\n ? options.parent.message(key) // resolve from parent messages\r\n : DEFAULT_MESSAGE\r\n : msg;\r\n }\r\n const _modifier = (name) => options.modifiers\r\n ? options.modifiers[name]\r\n : DEFAULT_MODIFIER;\r\n const normalize = isPlainObject(options.processor) && isFunction(options.processor.normalize)\r\n ? options.processor.normalize\r\n : DEFAULT_NORMALIZE;\r\n const interpolate = isPlainObject(options.processor) &&\r\n isFunction(options.processor.interpolate)\r\n ? options.processor.interpolate\r\n : DEFAULT_INTERPOLATE;\r\n const type = isPlainObject(options.processor) && isString(options.processor.type)\r\n ? options.processor.type\r\n : DEFAULT_MESSAGE_DATA_TYPE;\r\n const ctx = {\r\n [\"list\" /* LIST */]: list,\r\n [\"named\" /* NAMED */]: named,\r\n [\"plural\" /* PLURAL */]: plural,\r\n [\"linked\" /* LINKED */]: (key, modifier) => {\r\n // TODO: should check `key`\r\n const msg = message(key)(ctx);\r\n return isString(modifier) ? _modifier(modifier)(msg) : msg;\r\n },\r\n [\"message\" /* MESSAGE */]: message,\r\n [\"type\" /* TYPE */]: type,\r\n [\"interpolate\" /* INTERPOLATE */]: interpolate,\r\n [\"normalize\" /* NORMALIZE */]: normalize\r\n };\r\n return ctx;\r\n}\n\nlet devtools = null;\r\nfunction setDevToolsHook(hook) {\r\n devtools = hook;\r\n}\r\nfunction getDevToolsHook() {\r\n return devtools;\r\n}\r\nfunction initI18nDevTools(i18n, version, meta) {\r\n // TODO: queue if devtools is undefined\r\n devtools &&\r\n devtools.emit(IntlifyDevToolsHooks.I18nInit, {\r\n timestamp: Date.now(),\r\n i18n,\r\n version,\r\n meta\r\n });\r\n}\r\nconst translateDevTools = /* #__PURE__*/ createDevToolsHook(IntlifyDevToolsHooks.FunctionTranslate);\r\nfunction createDevToolsHook(hook) {\r\n return (payloads) => devtools && devtools.emit(hook, payloads);\r\n}\n\nconst CoreWarnCodes = {\r\n NOT_FOUND_KEY: 1,\r\n FALLBACK_TO_TRANSLATE: 2,\r\n CANNOT_FORMAT_NUMBER: 3,\r\n FALLBACK_TO_NUMBER_FORMAT: 4,\r\n CANNOT_FORMAT_DATE: 5,\r\n FALLBACK_TO_DATE_FORMAT: 6,\r\n __EXTEND_POINT__: 7\r\n};\r\n/** @internal */\r\nconst warnMessages = {\r\n [CoreWarnCodes.NOT_FOUND_KEY]: `Not found '{key}' key in '{locale}' locale messages.`,\r\n [CoreWarnCodes.FALLBACK_TO_TRANSLATE]: `Fall back to translate '{key}' key with '{target}' locale.`,\r\n [CoreWarnCodes.CANNOT_FORMAT_NUMBER]: `Cannot format a number value due to not supported Intl.NumberFormat.`,\r\n [CoreWarnCodes.FALLBACK_TO_NUMBER_FORMAT]: `Fall back to number format '{key}' key with '{target}' locale.`,\r\n [CoreWarnCodes.CANNOT_FORMAT_DATE]: `Cannot format a date value due to not supported Intl.DateTimeFormat.`,\r\n [CoreWarnCodes.FALLBACK_TO_DATE_FORMAT]: `Fall back to datetime format '{key}' key with '{target}' locale.`\r\n};\r\nfunction getWarnMessage(code, ...args) {\r\n return format(warnMessages[code], ...args);\r\n}\n\n/**\r\n * Fallback with simple implemenation\r\n *\r\n * @remarks\r\n * A fallback locale function implemented with a simple fallback algorithm.\r\n *\r\n * Basically, it returns the value as specified in the `fallbackLocale` props, and is processed with the fallback inside intlify.\r\n *\r\n * @param ctx - A {@link CoreContext | context}\r\n * @param fallback - A {@link FallbackLocale | fallback locale}\r\n * @param start - A starting {@link Locale | locale}\r\n *\r\n * @returns Fallback locales\r\n *\r\n * @VueI18nGeneral\r\n */\r\nfunction fallbackWithSimple(ctx, fallback, start // eslint-disable-line @typescript-eslint/no-unused-vars\r\n) {\r\n // prettier-ignore\r\n return [...new Set([\r\n start,\r\n ...(isArray(fallback)\r\n ? fallback\r\n : isObject(fallback)\r\n ? Object.keys(fallback)\r\n : isString(fallback)\r\n ? [fallback]\r\n : [start])\r\n ])];\r\n}\r\n/**\r\n * Fallback with locale chain\r\n *\r\n * @remarks\r\n * A fallback locale function implemented with a fallback chain algorithm. It's used in VueI18n as default.\r\n *\r\n * @param ctx - A {@link CoreContext | context}\r\n * @param fallback - A {@link FallbackLocale | fallback locale}\r\n * @param start - A starting {@link Locale | locale}\r\n *\r\n * @returns Fallback locales\r\n *\r\n * @VueI18nSee [Fallbacking](../guide/essentials/fallback)\r\n *\r\n * @VueI18nGeneral\r\n */\r\nfunction fallbackWithLocaleChain(ctx, fallback, start) {\r\n const startLocale = isString(start) ? start : DEFAULT_LOCALE;\r\n const context = ctx;\r\n if (!context.__localeChainCache) {\r\n context.__localeChainCache = new Map();\r\n }\r\n let chain = context.__localeChainCache.get(startLocale);\r\n if (!chain) {\r\n chain = [];\r\n // first block defined by start\r\n let block = [start];\r\n // while any intervening block found\r\n while (isArray(block)) {\r\n block = appendBlockToChain(chain, block, fallback);\r\n }\r\n // prettier-ignore\r\n // last block defined by default\r\n const defaults = isArray(fallback) || !isPlainObject(fallback)\r\n ? fallback\r\n : fallback['default']\r\n ? fallback['default']\r\n : null;\r\n // convert defaults to array\r\n block = isString(defaults) ? [defaults] : defaults;\r\n if (isArray(block)) {\r\n appendBlockToChain(chain, block, false);\r\n }\r\n context.__localeChainCache.set(startLocale, chain);\r\n }\r\n return chain;\r\n}\r\nfunction appendBlockToChain(chain, block, blocks) {\r\n let follow = true;\r\n for (let i = 0; i < block.length && isBoolean(follow); i++) {\r\n const locale = block[i];\r\n if (isString(locale)) {\r\n follow = appendLocaleToChain(chain, block[i], blocks);\r\n }\r\n }\r\n return follow;\r\n}\r\nfunction appendLocaleToChain(chain, locale, blocks) {\r\n let follow;\r\n const tokens = locale.split('-');\r\n do {\r\n const target = tokens.join('-');\r\n follow = appendItemToChain(chain, target, blocks);\r\n tokens.splice(-1, 1);\r\n } while (tokens.length && follow === true);\r\n return follow;\r\n}\r\nfunction appendItemToChain(chain, target, blocks) {\r\n let follow = false;\r\n if (!chain.includes(target)) {\r\n follow = true;\r\n if (target) {\r\n follow = target[target.length - 1] !== '!';\r\n const locale = target.replace(/!/g, '');\r\n chain.push(locale);\r\n if ((isArray(blocks) || isPlainObject(blocks)) &&\r\n blocks[locale] // eslint-disable-line @typescript-eslint/no-explicit-any\r\n ) {\r\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\r\n follow = blocks[locale];\r\n }\r\n }\r\n }\r\n return follow;\r\n}\n\n/* eslint-disable @typescript-eslint/no-explicit-any */\r\n/**\r\n * Intlify core-base version\r\n * @internal\r\n */\r\nconst VERSION = '9.2.0-beta.23';\r\nconst NOT_REOSLVED = -1;\r\nconst DEFAULT_LOCALE = 'en-US';\r\nconst MISSING_RESOLVE_VALUE = '';\r\nfunction getDefaultLinkedModifiers() {\r\n return {\r\n upper: (val) => (isString(val) ? val.toUpperCase() : val),\r\n lower: (val) => (isString(val) ? val.toLowerCase() : val),\r\n // prettier-ignore\r\n capitalize: (val) => (isString(val)\r\n ? `${val.charAt(0).toLocaleUpperCase()}${val.substr(1)}`\r\n : val)\r\n };\r\n}\r\nlet _compiler;\r\nfunction registerMessageCompiler(compiler) {\r\n _compiler = compiler;\r\n}\r\nlet _resolver;\r\n/**\r\n * Register the message resolver\r\n *\r\n * @param resolver - A {@link MessageResolver} function\r\n *\r\n * @VueI18nGeneral\r\n */\r\nfunction registerMessageResolver(resolver) {\r\n _resolver = resolver;\r\n}\r\nlet _fallbacker;\r\n/**\r\n * Register the locale fallbacker\r\n *\r\n * @param fallbacker - A {@link LocaleFallbacker} function\r\n *\r\n * @VueI18nGeneral\r\n */\r\nfunction registerLocaleFallbacker(fallbacker) {\r\n _fallbacker = fallbacker;\r\n}\r\n// Additional Meta for Intlify DevTools\r\nlet _additionalMeta = null;\r\nconst setAdditionalMeta = (meta) => {\r\n _additionalMeta = meta;\r\n};\r\nconst getAdditionalMeta = () => _additionalMeta;\r\n// ID for CoreContext\r\nlet _cid = 0;\r\nfunction createCoreContext(options = {}) {\r\n // setup options\r\n const version = isString(options.version) ? options.version : VERSION;\r\n const locale = isString(options.locale) ? options.locale : DEFAULT_LOCALE;\r\n const fallbackLocale = isArray(options.fallbackLocale) ||\r\n isPlainObject(options.fallbackLocale) ||\r\n isString(options.fallbackLocale) ||\r\n options.fallbackLocale === false\r\n ? options.fallbackLocale\r\n : locale;\r\n const messages = isPlainObject(options.messages)\r\n ? options.messages\r\n : { [locale]: {} };\r\n const datetimeFormats = isPlainObject(options.datetimeFormats)\r\n ? options.datetimeFormats\r\n : { [locale]: {} }\r\n ;\r\n const numberFormats = isPlainObject(options.numberFormats)\r\n ? options.numberFormats\r\n : { [locale]: {} }\r\n ;\r\n const modifiers = assign({}, options.modifiers || {}, getDefaultLinkedModifiers());\r\n const pluralRules = options.pluralRules || {};\r\n const missing = isFunction(options.missing) ? options.missing : null;\r\n const missingWarn = isBoolean(options.missingWarn) || isRegExp(options.missingWarn)\r\n ? options.missingWarn\r\n : true;\r\n const fallbackWarn = isBoolean(options.fallbackWarn) || isRegExp(options.fallbackWarn)\r\n ? options.fallbackWarn\r\n : true;\r\n const fallbackFormat = !!options.fallbackFormat;\r\n const unresolving = !!options.unresolving;\r\n const postTranslation = isFunction(options.postTranslation)\r\n ? options.postTranslation\r\n : null;\r\n const processor = isPlainObject(options.processor) ? options.processor : null;\r\n const warnHtmlMessage = isBoolean(options.warnHtmlMessage)\r\n ? options.warnHtmlMessage\r\n : true;\r\n const escapeParameter = !!options.escapeParameter;\r\n const messageCompiler = isFunction(options.messageCompiler)\r\n ? options.messageCompiler\r\n : _compiler;\r\n const messageResolver = isFunction(options.messageResolver)\r\n ? options.messageResolver\r\n : _resolver || resolveWithKeyValue;\r\n const localeFallbacker = isFunction(options.localeFallbacker)\r\n ? options.localeFallbacker\r\n : _fallbacker || fallbackWithSimple;\r\n const onWarn = isFunction(options.onWarn) ? options.onWarn : warn;\r\n // setup internal options\r\n const internalOptions = options;\r\n const __datetimeFormatters = isObject(internalOptions.__datetimeFormatters)\r\n ? internalOptions.__datetimeFormatters\r\n : new Map()\r\n ;\r\n const __numberFormatters = isObject(internalOptions.__numberFormatters)\r\n ? internalOptions.__numberFormatters\r\n : new Map()\r\n ;\r\n const __meta = isObject(internalOptions.__meta) ? internalOptions.__meta : {};\r\n _cid++;\r\n const context = {\r\n version,\r\n cid: _cid,\r\n locale,\r\n fallbackLocale,\r\n messages,\r\n modifiers,\r\n pluralRules,\r\n missing,\r\n missingWarn,\r\n fallbackWarn,\r\n fallbackFormat,\r\n unresolving,\r\n postTranslation,\r\n processor,\r\n warnHtmlMessage,\r\n escapeParameter,\r\n messageCompiler,\r\n messageResolver,\r\n localeFallbacker,\r\n onWarn,\r\n __meta\r\n };\r\n {\r\n context.datetimeFormats = datetimeFormats;\r\n context.numberFormats = numberFormats;\r\n context.__datetimeFormatters = __datetimeFormatters;\r\n context.__numberFormatters = __numberFormatters;\r\n }\r\n // for vue-devtools timeline event\r\n if ((process.env.NODE_ENV !== 'production')) {\r\n context.__v_emitter =\r\n internalOptions.__v_emitter != null\r\n ? internalOptions.__v_emitter\r\n : undefined;\r\n }\r\n // NOTE: experimental !!\r\n if ((process.env.NODE_ENV !== 'production') || __INTLIFY_PROD_DEVTOOLS__) {\r\n initI18nDevTools(context, version, __meta);\r\n }\r\n return context;\r\n}\r\n/** @internal */\r\nfunction isTranslateFallbackWarn(fallback, key) {\r\n return fallback instanceof RegExp ? fallback.test(key) : fallback;\r\n}\r\n/** @internal */\r\nfunction isTranslateMissingWarn(missing, key) {\r\n return missing instanceof RegExp ? missing.test(key) : missing;\r\n}\r\n/** @internal */\r\nfunction handleMissing(context, key, locale, missingWarn, type) {\r\n const { missing, onWarn } = context;\r\n // for vue-devtools timeline event\r\n if ((process.env.NODE_ENV !== 'production')) {\r\n const emitter = context.__v_emitter;\r\n if (emitter) {\r\n emitter.emit(\"missing\" /* MISSING */, {\r\n locale,\r\n key,\r\n type,\r\n groupId: `${type}:${key}`\r\n });\r\n }\r\n }\r\n if (missing !== null) {\r\n const ret = missing(context, locale, key, type);\r\n return isString(ret) ? ret : key;\r\n }\r\n else {\r\n if ((process.env.NODE_ENV !== 'production') && isTranslateMissingWarn(missingWarn, key)) {\r\n onWarn(getWarnMessage(CoreWarnCodes.NOT_FOUND_KEY, { key, locale }));\r\n }\r\n return key;\r\n }\r\n}\r\n/** @internal */\r\nfunction updateFallbackLocale(ctx, locale, fallback) {\r\n const context = ctx;\r\n context.__localeChainCache = new Map();\r\n ctx.localeFallbacker(ctx, fallback, locale);\r\n}\r\n/* eslint-enable @typescript-eslint/no-explicit-any */\n\nconst RE_HTML_TAG = /<\\/?[\\w\\s=\"/.':;#-\\/]+>/;\r\nconst WARN_MESSAGE = `Detected HTML in '{source}' message. Recommend not using HTML messages to avoid XSS.`;\r\nfunction checkHtmlMessage(source, options) {\r\n const warnHtmlMessage = isBoolean(options.warnHtmlMessage)\r\n ? options.warnHtmlMessage\r\n : true;\r\n if (warnHtmlMessage && RE_HTML_TAG.test(source)) {\r\n warn(format(WARN_MESSAGE, { source }));\r\n }\r\n}\r\nconst defaultOnCacheKey = (source) => source;\r\nlet compileCache = Object.create(null);\r\nfunction clearCompileCache() {\r\n compileCache = Object.create(null);\r\n}\r\nfunction compileToFunction(source, options = {}) {\r\n {\r\n // check HTML message\r\n (process.env.NODE_ENV !== 'production') && checkHtmlMessage(source, options);\r\n // check caches\r\n const onCacheKey = options.onCacheKey || defaultOnCacheKey;\r\n const key = onCacheKey(source);\r\n const cached = compileCache[key];\r\n if (cached) {\r\n return cached;\r\n }\r\n // compile error detecting\r\n let occurred = false;\r\n const onError = options.onError || defaultOnError;\r\n options.onError = (err) => {\r\n occurred = true;\r\n onError(err);\r\n };\r\n // compile\r\n const { code } = baseCompile(source, options);\r\n // evaluate function\r\n const msg = new Function(`return ${code}`)();\r\n // if occurred compile error, don't cache\r\n return !occurred ? (compileCache[key] = msg) : msg;\r\n }\r\n}\n\nlet code = CompileErrorCodes.__EXTEND_POINT__;\r\nconst inc = () => code++;\r\nconst CoreErrorCodes = {\r\n INVALID_ARGUMENT: code,\r\n INVALID_DATE_ARGUMENT: inc(),\r\n INVALID_ISO_DATE_ARGUMENT: inc(),\r\n __EXTEND_POINT__: inc() // 18\r\n};\r\nfunction createCoreError(code) {\r\n return createCompileError(code, null, (process.env.NODE_ENV !== 'production') ? { messages: errorMessages } : undefined);\r\n}\r\n/** @internal */\r\nconst errorMessages = {\r\n [CoreErrorCodes.INVALID_ARGUMENT]: 'Invalid arguments',\r\n [CoreErrorCodes.INVALID_DATE_ARGUMENT]: 'The date provided is an invalid Date object.' +\r\n 'Make sure your Date represents a valid date.',\r\n [CoreErrorCodes.INVALID_ISO_DATE_ARGUMENT]: 'The argument provided is not a valid ISO date string'\r\n};\n\nconst NOOP_MESSAGE_FUNCTION = () => '';\r\nconst isMessageFunction = (val) => isFunction(val);\r\n// implementation of `translate` function\r\nfunction translate(context, ...args) {\r\n const { fallbackFormat, postTranslation, unresolving, messageCompiler, fallbackLocale, messages } = context;\r\n const [key, options] = parseTranslateArgs(...args);\r\n const missingWarn = isBoolean(options.missingWarn)\r\n ? options.missingWarn\r\n : context.missingWarn;\r\n const fallbackWarn = isBoolean(options.fallbackWarn)\r\n ? options.fallbackWarn\r\n : context.fallbackWarn;\r\n const escapeParameter = isBoolean(options.escapeParameter)\r\n ? options.escapeParameter\r\n : context.escapeParameter;\r\n const resolvedMessage = !!options.resolvedMessage;\r\n // prettier-ignore\r\n const defaultMsgOrKey = isString(options.default) || isBoolean(options.default) // default by function option\r\n ? !isBoolean(options.default)\r\n ? options.default\r\n : key\r\n : fallbackFormat // default by `fallbackFormat` option\r\n ? (!messageCompiler ? () => key : key)\r\n : '';\r\n const enableDefaultMsg = fallbackFormat || defaultMsgOrKey !== '';\r\n const locale = isString(options.locale) ? options.locale : context.locale;\r\n // escape params\r\n escapeParameter && escapeParams(options);\r\n // resolve message format\r\n // eslint-disable-next-line prefer-const\r\n let [formatScope, targetLocale, message] = !resolvedMessage\r\n ? resolveMessageFormat(context, key, locale, fallbackLocale, fallbackWarn, missingWarn)\r\n : [\r\n key,\r\n locale,\r\n messages[locale] || {}\r\n ];\r\n // NOTE:\r\n // Fix to work around `ssrTransfrom` bug in Vite.\r\n // https://github.com/vitejs/vite/issues/4306\r\n // To get around this, use temporary variables.\r\n // https://github.com/nuxt/framework/issues/1461#issuecomment-954606243\r\n let format = formatScope;\r\n // if you use default message, set it as message format!\r\n let cacheBaseKey = key;\r\n if (!resolvedMessage &&\r\n !(isString(format) || isMessageFunction(format))) {\r\n if (enableDefaultMsg) {\r\n format = defaultMsgOrKey;\r\n cacheBaseKey = format;\r\n }\r\n }\r\n // checking message format and target locale\r\n if (!resolvedMessage &&\r\n (!(isString(format) || isMessageFunction(format)) ||\r\n !isString(targetLocale))) {\r\n return unresolving ? NOT_REOSLVED : key;\r\n }\r\n if ((process.env.NODE_ENV !== 'production') && isString(format) && context.messageCompiler == null) {\r\n warn(`The message format compilation is not supported in this build. ` +\r\n `Because message compiler isn't included. ` +\r\n `You need to pre-compilation all message format. ` +\r\n `So translate function return '${key}'.`);\r\n return key;\r\n }\r\n // setup compile error detecting\r\n let occurred = false;\r\n const errorDetector = () => {\r\n occurred = true;\r\n };\r\n // compile message format\r\n const msg = !isMessageFunction(format)\r\n ? compileMessageFormat(context, key, targetLocale, format, cacheBaseKey, errorDetector)\r\n : format;\r\n // if occurred compile error, return the message format\r\n if (occurred) {\r\n return format;\r\n }\r\n // evaluate message with context\r\n const ctxOptions = getMessageContextOptions(context, targetLocale, message, options);\r\n const msgContext = createMessageContext(ctxOptions);\r\n const messaged = evaluateMessage(context, msg, msgContext);\r\n // if use post translation option, proceed it with handler\r\n const ret = postTranslation ? postTranslation(messaged) : messaged;\r\n // NOTE: experimental !!\r\n if ((process.env.NODE_ENV !== 'production') || __INTLIFY_PROD_DEVTOOLS__) {\r\n // prettier-ignore\r\n const payloads = {\r\n timestamp: Date.now(),\r\n key: isString(key)\r\n ? key\r\n : isMessageFunction(format)\r\n ? format.key\r\n : '',\r\n locale: targetLocale || (isMessageFunction(format)\r\n ? format.locale\r\n : ''),\r\n format: isString(format)\r\n ? format\r\n : isMessageFunction(format)\r\n ? format.source\r\n : '',\r\n message: ret\r\n };\r\n payloads.meta = assign({}, context.__meta, getAdditionalMeta() || {});\r\n translateDevTools(payloads);\r\n }\r\n return ret;\r\n}\r\nfunction escapeParams(options) {\r\n if (isArray(options.list)) {\r\n options.list = options.list.map(item => isString(item) ? escapeHtml(item) : item);\r\n }\r\n else if (isObject(options.named)) {\r\n Object.keys(options.named).forEach(key => {\r\n if (isString(options.named[key])) {\r\n options.named[key] = escapeHtml(options.named[key]);\r\n }\r\n });\r\n }\r\n}\r\nfunction resolveMessageFormat(context, key, locale, fallbackLocale, fallbackWarn, missingWarn) {\r\n const { messages, onWarn, messageResolver: resolveValue, localeFallbacker } = context;\r\n const locales = localeFallbacker(context, fallbackLocale, locale); // eslint-disable-line @typescript-eslint/no-explicit-any\r\n let message = {};\r\n let targetLocale;\r\n let format = null;\r\n let from = locale;\r\n let to = null;\r\n const type = 'translate';\r\n for (let i = 0; i < locales.length; i++) {\r\n targetLocale = to = locales[i];\r\n if ((process.env.NODE_ENV !== 'production') &&\r\n locale !== targetLocale &&\r\n isTranslateFallbackWarn(fallbackWarn, key)) {\r\n onWarn(getWarnMessage(CoreWarnCodes.FALLBACK_TO_TRANSLATE, {\r\n key,\r\n target: targetLocale\r\n }));\r\n }\r\n // for vue-devtools timeline event\r\n if ((process.env.NODE_ENV !== 'production') && locale !== targetLocale) {\r\n const emitter = context.__v_emitter;\r\n if (emitter) {\r\n emitter.emit(\"fallback\" /* FALBACK */, {\r\n type,\r\n key,\r\n from,\r\n to,\r\n groupId: `${type}:${key}`\r\n });\r\n }\r\n }\r\n message =\r\n messages[targetLocale] || {};\r\n // for vue-devtools timeline event\r\n let start = null;\r\n let startTag;\r\n let endTag;\r\n if ((process.env.NODE_ENV !== 'production') && inBrowser) {\r\n start = window.performance.now();\r\n startTag = 'intlify-message-resolve-start';\r\n endTag = 'intlify-message-resolve-end';\r\n mark && mark(startTag);\r\n }\r\n if ((format = resolveValue(message, key)) === null) {\r\n // if null, resolve with object key path\r\n format = message[key]; // eslint-disable-line @typescript-eslint/no-explicit-any\r\n }\r\n // for vue-devtools timeline event\r\n if ((process.env.NODE_ENV !== 'production') && inBrowser) {\r\n const end = window.performance.now();\r\n const emitter = context.__v_emitter;\r\n if (emitter && start && format) {\r\n emitter.emit(\"message-resolve\" /* MESSAGE_RESOLVE */, {\r\n type: \"message-resolve\" /* MESSAGE_RESOLVE */,\r\n key,\r\n message: format,\r\n time: end - start,\r\n groupId: `${type}:${key}`\r\n });\r\n }\r\n if (startTag && endTag && mark && measure) {\r\n mark(endTag);\r\n measure('intlify message resolve', startTag, endTag);\r\n }\r\n }\r\n if (isString(format) || isFunction(format))\r\n break;\r\n const missingRet = handleMissing(context, // eslint-disable-line @typescript-eslint/no-explicit-any\r\n key, targetLocale, missingWarn, type);\r\n if (missingRet !== key) {\r\n format = missingRet;\r\n }\r\n from = to;\r\n }\r\n return [format, targetLocale, message];\r\n}\r\nfunction compileMessageFormat(context, key, targetLocale, format, cacheBaseKey, errorDetector) {\r\n const { messageCompiler, warnHtmlMessage } = context;\r\n if (isMessageFunction(format)) {\r\n const msg = format;\r\n msg.locale = msg.locale || targetLocale;\r\n msg.key = msg.key || key;\r\n return msg;\r\n }\r\n // for vue-devtools timeline event\r\n let start = null;\r\n let startTag;\r\n let endTag;\r\n if ((process.env.NODE_ENV !== 'production') && inBrowser) {\r\n start = window.performance.now();\r\n startTag = 'intlify-message-compilation-start';\r\n endTag = 'intlify-message-compilation-end';\r\n mark && mark(startTag);\r\n }\r\n const msg = messageCompiler(format, getCompileOptions(context, targetLocale, cacheBaseKey, format, warnHtmlMessage, errorDetector));\r\n // for vue-devtools timeline event\r\n if ((process.env.NODE_ENV !== 'production') && inBrowser) {\r\n const end = window.performance.now();\r\n const emitter = context.__v_emitter;\r\n if (emitter && start) {\r\n emitter.emit(\"message-compilation\" /* MESSAGE_COMPILATION */, {\r\n type: \"message-compilation\" /* MESSAGE_COMPILATION */,\r\n message: format,\r\n time: end - start,\r\n groupId: `${'translate'}:${key}`\r\n });\r\n }\r\n if (startTag && endTag && mark && measure) {\r\n mark(endTag);\r\n measure('intlify message compilation', startTag, endTag);\r\n }\r\n }\r\n msg.locale = targetLocale;\r\n msg.key = key;\r\n msg.source = format;\r\n return msg;\r\n}\r\nfunction evaluateMessage(context, msg, msgCtx) {\r\n // for vue-devtools timeline event\r\n let start = null;\r\n let startTag;\r\n let endTag;\r\n if ((process.env.NODE_ENV !== 'production') && inBrowser) {\r\n start = window.performance.now();\r\n startTag = 'intlify-message-evaluation-start';\r\n endTag = 'intlify-message-evaluation-end';\r\n mark && mark(startTag);\r\n }\r\n const messaged = msg(msgCtx);\r\n // for vue-devtools timeline event\r\n if ((process.env.NODE_ENV !== 'production') && inBrowser) {\r\n const end = window.performance.now();\r\n const emitter = context.__v_emitter;\r\n if (emitter && start) {\r\n emitter.emit(\"message-evaluation\" /* MESSAGE_EVALUATION */, {\r\n type: \"message-evaluation\" /* MESSAGE_EVALUATION */,\r\n value: messaged,\r\n time: end - start,\r\n groupId: `${'translate'}:${msg.key}`\r\n });\r\n }\r\n if (startTag && endTag && mark && measure) {\r\n mark(endTag);\r\n measure('intlify message evaluation', startTag, endTag);\r\n }\r\n }\r\n return messaged;\r\n}\r\n/** @internal */\r\nfunction parseTranslateArgs(...args) {\r\n const [arg1, arg2, arg3] = args;\r\n const options = {};\r\n if (!isString(arg1) && !isNumber(arg1) && !isMessageFunction(arg1)) {\r\n throw createCoreError(CoreErrorCodes.INVALID_ARGUMENT);\r\n }\r\n // prettier-ignore\r\n const key = isNumber(arg1)\r\n ? String(arg1)\r\n : isMessageFunction(arg1)\r\n ? arg1\r\n : arg1;\r\n if (isNumber(arg2)) {\r\n options.plural = arg2;\r\n }\r\n else if (isString(arg2)) {\r\n options.default = arg2;\r\n }\r\n else if (isPlainObject(arg2) && !isEmptyObject(arg2)) {\r\n options.named = arg2;\r\n }\r\n else if (isArray(arg2)) {\r\n options.list = arg2;\r\n }\r\n if (isNumber(arg3)) {\r\n options.plural = arg3;\r\n }\r\n else if (isString(arg3)) {\r\n options.default = arg3;\r\n }\r\n else if (isPlainObject(arg3)) {\r\n assign(options, arg3);\r\n }\r\n return [key, options];\r\n}\r\nfunction getCompileOptions(context, locale, key, source, warnHtmlMessage, errorDetector) {\r\n return {\r\n warnHtmlMessage,\r\n onError: (err) => {\r\n errorDetector && errorDetector(err);\r\n if ((process.env.NODE_ENV !== 'production')) {\r\n const message = `Message compilation error: ${err.message}`;\r\n const codeFrame = err.location &&\r\n generateCodeFrame(source, err.location.start.offset, err.location.end.offset);\r\n const emitter = context.__v_emitter;\r\n if (emitter) {\r\n emitter.emit(\"compile-error\" /* COMPILE_ERROR */, {\r\n message: source,\r\n error: err.message,\r\n start: err.location && err.location.start.offset,\r\n end: err.location && err.location.end.offset,\r\n groupId: `${'translate'}:${key}`\r\n });\r\n }\r\n console.error(codeFrame ? `${message}\\n${codeFrame}` : message);\r\n }\r\n else {\r\n throw err;\r\n }\r\n },\r\n onCacheKey: (source) => generateFormatCacheKey(locale, key, source)\r\n };\r\n}\r\nfunction getMessageContextOptions(context, locale, message, options) {\r\n const { modifiers, pluralRules, messageResolver: resolveValue } = context;\r\n const resolveMessage = (key) => {\r\n const val = resolveValue(message, key);\r\n if (isString(val)) {\r\n let occurred = false;\r\n const errorDetector = () => {\r\n occurred = true;\r\n };\r\n const msg = compileMessageFormat(context, key, locale, val, key, errorDetector);\r\n return !occurred\r\n ? msg\r\n : NOOP_MESSAGE_FUNCTION;\r\n }\r\n else if (isMessageFunction(val)) {\r\n return val;\r\n }\r\n else {\r\n // TODO: should be implemented warning message\r\n return NOOP_MESSAGE_FUNCTION;\r\n }\r\n };\r\n const ctxOptions = {\r\n locale,\r\n modifiers,\r\n pluralRules,\r\n messages: resolveMessage\r\n };\r\n if (context.processor) {\r\n ctxOptions.processor = context.processor;\r\n }\r\n if (options.list) {\r\n ctxOptions.list = options.list;\r\n }\r\n if (options.named) {\r\n ctxOptions.named = options.named;\r\n }\r\n if (isNumber(options.plural)) {\r\n ctxOptions.pluralIndex = options.plural;\r\n }\r\n return ctxOptions;\r\n}\n\nconst intlDefined = typeof Intl !== 'undefined';\r\nconst Availabilities = {\r\n dateTimeFormat: intlDefined && typeof Intl.DateTimeFormat !== 'undefined',\r\n numberFormat: intlDefined && typeof Intl.NumberFormat !== 'undefined'\r\n};\n\n// implementation of `datetime` function\r\nfunction datetime(context, ...args) {\r\n const { datetimeFormats, unresolving, fallbackLocale, onWarn, localeFallbacker } = context;\r\n const { __datetimeFormatters } = context;\r\n if ((process.env.NODE_ENV !== 'production') && !Availabilities.dateTimeFormat) {\r\n onWarn(getWarnMessage(CoreWarnCodes.CANNOT_FORMAT_DATE));\r\n return MISSING_RESOLVE_VALUE;\r\n }\r\n const [key, value, options, overrides] = parseDateTimeArgs(...args);\r\n const missingWarn = isBoolean(options.missingWarn)\r\n ? options.missingWarn\r\n : context.missingWarn;\r\n const fallbackWarn = isBoolean(options.fallbackWarn)\r\n ? options.fallbackWarn\r\n : context.fallbackWarn;\r\n const part = !!options.part;\r\n const locale = isString(options.locale) ? options.locale : context.locale;\r\n const locales = localeFallbacker(context, // eslint-disable-line @typescript-eslint/no-explicit-any\r\n fallbackLocale, locale);\r\n if (!isString(key) || key === '') {\r\n return new Intl.DateTimeFormat(locale).format(value);\r\n }\r\n // resolve format\r\n let datetimeFormat = {};\r\n let targetLocale;\r\n let format = null;\r\n let from = locale;\r\n let to = null;\r\n const type = 'datetime format';\r\n for (let i = 0; i < locales.length; i++) {\r\n targetLocale = to = locales[i];\r\n if ((process.env.NODE_ENV !== 'production') &&\r\n locale !== targetLocale &&\r\n isTranslateFallbackWarn(fallbackWarn, key)) {\r\n onWarn(getWarnMessage(CoreWarnCodes.FALLBACK_TO_DATE_FORMAT, {\r\n key,\r\n target: targetLocale\r\n }));\r\n }\r\n // for vue-devtools timeline event\r\n if ((process.env.NODE_ENV !== 'production') && locale !== targetLocale) {\r\n const emitter = context.__v_emitter;\r\n if (emitter) {\r\n emitter.emit(\"fallback\" /* FALBACK */, {\r\n type,\r\n key,\r\n from,\r\n to,\r\n groupId: `${type}:${key}`\r\n });\r\n }\r\n }\r\n datetimeFormat =\r\n datetimeFormats[targetLocale] || {};\r\n format = datetimeFormat[key];\r\n if (isPlainObject(format))\r\n break;\r\n handleMissing(context, key, targetLocale, missingWarn, type); // eslint-disable-line @typescript-eslint/no-explicit-any\r\n from = to;\r\n }\r\n // checking format and target locale\r\n if (!isPlainObject(format) || !isString(targetLocale)) {\r\n return unresolving ? NOT_REOSLVED : key;\r\n }\r\n let id = `${targetLocale}__${key}`;\r\n if (!isEmptyObject(overrides)) {\r\n id = `${id}__${JSON.stringify(overrides)}`;\r\n }\r\n let formatter = __datetimeFormatters.get(id);\r\n if (!formatter) {\r\n formatter = new Intl.DateTimeFormat(targetLocale, assign({}, format, overrides));\r\n __datetimeFormatters.set(id, formatter);\r\n }\r\n return !part ? formatter.format(value) : formatter.formatToParts(value);\r\n}\r\n/** @internal */\r\nfunction parseDateTimeArgs(...args) {\r\n const [arg1, arg2, arg3, arg4] = args;\r\n let options = {};\r\n let overrides = {};\r\n let value;\r\n if (isString(arg1)) {\r\n // Only allow ISO strings - other date formats are often supported,\r\n // but may cause different results in different browsers.\r\n const matches = arg1.match(/(\\d{4}-\\d{2}-\\d{2})(T|\\s)?(.*)/);\r\n if (!matches) {\r\n throw createCoreError(CoreErrorCodes.INVALID_ISO_DATE_ARGUMENT);\r\n }\r\n // Some browsers can not parse the iso datetime separated by space,\r\n // this is a compromise solution by replace the 'T'/' ' with 'T'\r\n const dateTime = matches[3]\r\n ? matches[3].trim().startsWith('T')\r\n ? `${matches[1].trim()}${matches[3].trim()}`\r\n : `${matches[1].trim()}T${matches[3].trim()}`\r\n : matches[1].trim();\r\n value = new Date(dateTime);\r\n try {\r\n // This will fail if the date is not valid\r\n value.toISOString();\r\n }\r\n catch (e) {\r\n throw createCoreError(CoreErrorCodes.INVALID_ISO_DATE_ARGUMENT);\r\n }\r\n }\r\n else if (isDate(arg1)) {\r\n if (isNaN(arg1.getTime())) {\r\n throw createCoreError(CoreErrorCodes.INVALID_DATE_ARGUMENT);\r\n }\r\n value = arg1;\r\n }\r\n else if (isNumber(arg1)) {\r\n value = arg1;\r\n }\r\n else {\r\n throw createCoreError(CoreErrorCodes.INVALID_ARGUMENT);\r\n }\r\n if (isString(arg2)) {\r\n options.key = arg2;\r\n }\r\n else if (isPlainObject(arg2)) {\r\n options = arg2;\r\n }\r\n if (isString(arg3)) {\r\n options.locale = arg3;\r\n }\r\n else if (isPlainObject(arg3)) {\r\n overrides = arg3;\r\n }\r\n if (isPlainObject(arg4)) {\r\n overrides = arg4;\r\n }\r\n return [options.key || '', value, options, overrides];\r\n}\r\n/** @internal */\r\nfunction clearDateTimeFormat(ctx, locale, format) {\r\n const context = ctx;\r\n for (const key in format) {\r\n const id = `${locale}__${key}`;\r\n if (!context.__datetimeFormatters.has(id)) {\r\n continue;\r\n }\r\n context.__datetimeFormatters.delete(id);\r\n }\r\n}\n\n// implementation of `number` function\r\nfunction number(context, ...args) {\r\n const { numberFormats, unresolving, fallbackLocale, onWarn, localeFallbacker } = context;\r\n const { __numberFormatters } = context;\r\n if ((process.env.NODE_ENV !== 'production') && !Availabilities.numberFormat) {\r\n onWarn(getWarnMessage(CoreWarnCodes.CANNOT_FORMAT_NUMBER));\r\n return MISSING_RESOLVE_VALUE;\r\n }\r\n const [key, value, options, overrides] = parseNumberArgs(...args);\r\n const missingWarn = isBoolean(options.missingWarn)\r\n ? options.missingWarn\r\n : context.missingWarn;\r\n const fallbackWarn = isBoolean(options.fallbackWarn)\r\n ? options.fallbackWarn\r\n : context.fallbackWarn;\r\n const part = !!options.part;\r\n const locale = isString(options.locale) ? options.locale : context.locale;\r\n const locales = localeFallbacker(context, // eslint-disable-line @typescript-eslint/no-explicit-any\r\n fallbackLocale, locale);\r\n if (!isString(key) || key === '') {\r\n return new Intl.NumberFormat(locale).format(value);\r\n }\r\n // resolve format\r\n let numberFormat = {};\r\n let targetLocale;\r\n let format = null;\r\n let from = locale;\r\n let to = null;\r\n const type = 'number format';\r\n for (let i = 0; i < locales.length; i++) {\r\n targetLocale = to = locales[i];\r\n if ((process.env.NODE_ENV !== 'production') &&\r\n locale !== targetLocale &&\r\n isTranslateFallbackWarn(fallbackWarn, key)) {\r\n onWarn(getWarnMessage(CoreWarnCodes.FALLBACK_TO_NUMBER_FORMAT, {\r\n key,\r\n target: targetLocale\r\n }));\r\n }\r\n // for vue-devtools timeline event\r\n if ((process.env.NODE_ENV !== 'production') && locale !== targetLocale) {\r\n const emitter = context.__v_emitter;\r\n if (emitter) {\r\n emitter.emit(\"fallback\" /* FALBACK */, {\r\n type,\r\n key,\r\n from,\r\n to,\r\n groupId: `${type}:${key}`\r\n });\r\n }\r\n }\r\n numberFormat =\r\n numberFormats[targetLocale] || {};\r\n format = numberFormat[key];\r\n if (isPlainObject(format))\r\n break;\r\n handleMissing(context, key, targetLocale, missingWarn, type); // eslint-disable-line @typescript-eslint/no-explicit-any\r\n from = to;\r\n }\r\n // checking format and target locale\r\n if (!isPlainObject(format) || !isString(targetLocale)) {\r\n return unresolving ? NOT_REOSLVED : key;\r\n }\r\n let id = `${targetLocale}__${key}`;\r\n if (!isEmptyObject(overrides)) {\r\n id = `${id}__${JSON.stringify(overrides)}`;\r\n }\r\n let formatter = __numberFormatters.get(id);\r\n if (!formatter) {\r\n formatter = new Intl.NumberFormat(targetLocale, assign({}, format, overrides));\r\n __numberFormatters.set(id, formatter);\r\n }\r\n return !part ? formatter.format(value) : formatter.formatToParts(value);\r\n}\r\n/** @internal */\r\nfunction parseNumberArgs(...args) {\r\n const [arg1, arg2, arg3, arg4] = args;\r\n let options = {};\r\n let overrides = {};\r\n if (!isNumber(arg1)) {\r\n throw createCoreError(CoreErrorCodes.INVALID_ARGUMENT);\r\n }\r\n const value = arg1;\r\n if (isString(arg2)) {\r\n options.key = arg2;\r\n }\r\n else if (isPlainObject(arg2)) {\r\n options = arg2;\r\n }\r\n if (isString(arg3)) {\r\n options.locale = arg3;\r\n }\r\n else if (isPlainObject(arg3)) {\r\n overrides = arg3;\r\n }\r\n if (isPlainObject(arg4)) {\r\n overrides = arg4;\r\n }\r\n return [options.key || '', value, options, overrides];\r\n}\r\n/** @internal */\r\nfunction clearNumberFormat(ctx, locale, format) {\r\n const context = ctx;\r\n for (const key in format) {\r\n const id = `${locale}__${key}`;\r\n if (!context.__numberFormatters.has(id)) {\r\n continue;\r\n }\r\n context.__numberFormatters.delete(id);\r\n }\r\n}\n\n// TODO: we could not exports for Node native ES Moudles yet...\r\n{\r\n if (typeof __INTLIFY_PROD_DEVTOOLS__ !== 'boolean') {\r\n getGlobalThis().__INTLIFY_PROD_DEVTOOLS__ = false;\r\n }\r\n}\n\nexport { CoreErrorCodes, CoreWarnCodes, DEFAULT_LOCALE, DEFAULT_MESSAGE_DATA_TYPE, MISSING_RESOLVE_VALUE, NOT_REOSLVED, VERSION, clearCompileCache, clearDateTimeFormat, clearNumberFormat, compileToFunction, createCoreContext, createCoreError, createMessageContext, datetime, fallbackWithLocaleChain, fallbackWithSimple, getAdditionalMeta, getDevToolsHook, getWarnMessage, handleMissing, initI18nDevTools, isMessageFunction, isTranslateFallbackWarn, isTranslateMissingWarn, number, parse, parseDateTimeArgs, parseNumberArgs, parseTranslateArgs, registerLocaleFallbacker, registerMessageCompiler, registerMessageResolver, resolveValue, resolveWithKeyValue, setAdditionalMeta, setDevToolsHook, translate, translateDevTools, updateFallbackLocale };\n","/*!\n * vue-devtools v9.2.0-beta.23\n * (c) 2021 kazuya kawaguchi\n * Released under the MIT License.\n */\nconst VueDevToolsLabels = {\r\n [\"vue-devtools-plugin-vue-i18n\" /* PLUGIN */]: 'Vue I18n devtools',\r\n [\"vue-i18n-resource-inspector\" /* CUSTOM_INSPECTOR */]: 'I18n Resources',\r\n [\"vue-i18n-timeline\" /* TIMELINE */]: 'Vue I18n'\r\n};\r\nconst VueDevToolsPlaceholders = {\r\n [\"vue-i18n-resource-inspector\" /* CUSTOM_INSPECTOR */]: 'Search for scopes ...'\r\n};\r\nconst VueDevToolsTimelineColors = {\r\n [\"vue-i18n-timeline\" /* TIMELINE */]: 0xffcd19\r\n};\n\nexport { VueDevToolsLabels, VueDevToolsPlaceholders, VueDevToolsTimelineColors };\n","/*!\n * vue-i18n v9.2.0-beta.23\n * (c) 2021 kazuya kawaguchi\n * Released under the MIT License.\n */\nimport { getGlobalThis, format, makeSymbol, isObject, isPlainObject, isArray, isString, hasOwn, isBoolean, isRegExp, isFunction, assign, isNumber, warn, createEmitter, isEmptyObject } from '@intlify/shared';\nimport { CoreWarnCodes, createCompileError, CompileErrorCodes, DEFAULT_LOCALE, createCoreContext, updateFallbackLocale, clearDateTimeFormat, clearNumberFormat, setAdditionalMeta, NOT_REOSLVED, isTranslateFallbackWarn, isTranslateMissingWarn, parseTranslateArgs, translate, MISSING_RESOLVE_VALUE, parseDateTimeArgs, datetime, parseNumberArgs, number, fallbackWithLocaleChain, registerMessageResolver, resolveValue, registerLocaleFallbacker, setDevToolsHook } from '@intlify/core-base';\nimport { createVNode, Text, ref, getCurrentInstance, computed, watch, Fragment, h, nextTick, inject, onMounted, onUnmounted, isRef } from 'vue';\nimport { setupDevtoolsPlugin } from '@vue/devtools-api';\nimport { VueDevToolsLabels, VueDevToolsPlaceholders, VueDevToolsTimelineColors } from '@intlify/vue-devtools';\n\n/**\r\n * Vue I18n Version\r\n *\r\n * @remarks\r\n * Semver format. Same format as the package.json `version` field.\r\n *\r\n * @VueI18nGeneral\r\n */\r\nconst VERSION = '9.2.0-beta.23';\r\n/**\r\n * This is only called in esm-bundler builds.\r\n * istanbul-ignore-next\r\n */\r\nfunction initFeatureFlags() {\r\n let needWarn = false;\r\n if (typeof __VUE_I18N_FULL_INSTALL__ !== 'boolean') {\r\n needWarn = true;\r\n getGlobalThis().__VUE_I18N_FULL_INSTALL__ = true;\r\n }\r\n if (typeof __VUE_I18N_LEGACY_API__ !== 'boolean') {\r\n needWarn = true;\r\n getGlobalThis().__VUE_I18N_LEGACY_API__ = true;\r\n }\r\n if (typeof __INTLIFY_PROD_DEVTOOLS__ !== 'boolean') {\r\n getGlobalThis().__INTLIFY_PROD_DEVTOOLS__ = false;\r\n }\r\n if ((process.env.NODE_ENV !== 'production') && needWarn) {\r\n console.warn(`You are running the esm-bundler build of vue-i18n. It is recommended to ` +\r\n `configure your bundler to explicitly replace feature flag globals ` +\r\n `with boolean literals to get proper tree-shaking in the final bundle.`);\r\n }\r\n}\n\nlet code$1 = CoreWarnCodes.__EXTEND_POINT__;\r\nconst inc$1 = () => code$1++;\r\nconst I18nWarnCodes = {\r\n FALLBACK_TO_ROOT: code$1,\r\n NOT_SUPPORTED_PRESERVE: inc$1(),\r\n NOT_SUPPORTED_FORMATTER: inc$1(),\r\n NOT_SUPPORTED_PRESERVE_DIRECTIVE: inc$1(),\r\n NOT_SUPPORTED_GET_CHOICE_INDEX: inc$1(),\r\n COMPONENT_NAME_LEGACY_COMPATIBLE: inc$1(),\r\n NOT_FOUND_PARENT_SCOPE: inc$1(),\r\n NOT_SUPPORT_MULTI_I18N_INSTANCE: inc$1() // 14\r\n};\r\nconst warnMessages = {\r\n [I18nWarnCodes.FALLBACK_TO_ROOT]: `Fall back to {type} '{key}' with root locale.`,\r\n [I18nWarnCodes.NOT_SUPPORTED_PRESERVE]: `Not supported 'preserve'.`,\r\n [I18nWarnCodes.NOT_SUPPORTED_FORMATTER]: `Not supported 'formatter'.`,\r\n [I18nWarnCodes.NOT_SUPPORTED_PRESERVE_DIRECTIVE]: `Not supported 'preserveDirectiveContent'.`,\r\n [I18nWarnCodes.NOT_SUPPORTED_GET_CHOICE_INDEX]: `Not supported 'getChoiceIndex'.`,\r\n [I18nWarnCodes.COMPONENT_NAME_LEGACY_COMPATIBLE]: `Component name legacy compatible: '{name}' -> 'i18n'`,\r\n [I18nWarnCodes.NOT_FOUND_PARENT_SCOPE]: `Not found parent scope. use the global scope.`,\r\n [I18nWarnCodes.NOT_SUPPORT_MULTI_I18N_INSTANCE]: `Not support multi i18n instance.`\r\n};\r\nfunction getWarnMessage(code, ...args) {\r\n return format(warnMessages[code], ...args);\r\n}\n\nlet code = CompileErrorCodes.__EXTEND_POINT__;\r\nconst inc = () => code++;\r\nconst I18nErrorCodes = {\r\n // composer module errors\r\n UNEXPECTED_RETURN_TYPE: code,\r\n // legacy module errors\r\n INVALID_ARGUMENT: inc(),\r\n // i18n module errors\r\n MUST_BE_CALL_SETUP_TOP: inc(),\r\n NOT_INSLALLED: inc(),\r\n NOT_AVAILABLE_IN_LEGACY_MODE: inc(),\r\n // directive module errors\r\n REQUIRED_VALUE: inc(),\r\n INVALID_VALUE: inc(),\r\n // vue-devtools errors\r\n CANNOT_SETUP_VUE_DEVTOOLS_PLUGIN: inc(),\r\n NOT_INSLALLED_WITH_PROVIDE: inc(),\r\n // unexpected error\r\n UNEXPECTED_ERROR: inc(),\r\n // not compatible legacy vue-i18n constructor\r\n NOT_COMPATIBLE_LEGACY_VUE_I18N: inc(),\r\n // bridge support vue 2.x only\r\n BRIDGE_SUPPORT_VUE_2_ONLY: inc(),\r\n // for enhancement\r\n __EXTEND_POINT__: inc() // 27\r\n};\r\nfunction createI18nError(code, ...args) {\r\n return createCompileError(code, null, (process.env.NODE_ENV !== 'production') ? { messages: errorMessages, args } : undefined);\r\n}\r\nconst errorMessages = {\r\n [I18nErrorCodes.UNEXPECTED_RETURN_TYPE]: 'Unexpected return type in composer',\r\n [I18nErrorCodes.INVALID_ARGUMENT]: 'Invalid argument',\r\n [I18nErrorCodes.MUST_BE_CALL_SETUP_TOP]: 'Must be called at the top of a `setup` function',\r\n [I18nErrorCodes.NOT_INSLALLED]: 'Need to install with `app.use` function',\r\n [I18nErrorCodes.UNEXPECTED_ERROR]: 'Unexpected error',\r\n [I18nErrorCodes.NOT_AVAILABLE_IN_LEGACY_MODE]: 'Not available in legacy mode',\r\n [I18nErrorCodes.REQUIRED_VALUE]: `Required in value: {0}`,\r\n [I18nErrorCodes.INVALID_VALUE]: `Invalid value`,\r\n [I18nErrorCodes.CANNOT_SETUP_VUE_DEVTOOLS_PLUGIN]: `Cannot setup vue-devtools plugin`,\r\n [I18nErrorCodes.NOT_INSLALLED_WITH_PROVIDE]: 'Need to install with `provide` function',\r\n [I18nErrorCodes.NOT_COMPATIBLE_LEGACY_VUE_I18N]: 'Not compatible legacy VueI18n.',\r\n [I18nErrorCodes.BRIDGE_SUPPORT_VUE_2_ONLY]: 'vue-i18n-bridge support Vue 2.x only'\r\n};\n\nconst TransrateVNodeSymbol = \r\n/* #__PURE__*/ makeSymbol('__transrateVNode');\r\nconst DatetimePartsSymbol = /* #__PURE__*/ makeSymbol('__datetimeParts');\r\nconst NumberPartsSymbol = /* #__PURE__*/ makeSymbol('__numberParts');\r\nconst EnableEmitter = /* #__PURE__*/ makeSymbol('__enableEmitter');\r\nconst DisableEmitter = /* #__PURE__*/ makeSymbol('__disableEmitter');\r\nconst SetPluralRulesSymbol = makeSymbol('__setPluralRules');\r\nmakeSymbol('__intlifyMeta');\r\nconst InejctWithOption = /* #__PURE__*/ makeSymbol('__injectWithOption');\n\n/* eslint-disable @typescript-eslint/no-explicit-any */\r\n/**\r\n * Transform flat json in obj to normal json in obj\r\n */\r\nfunction handleFlatJson(obj) {\r\n // check obj\r\n if (!isObject(obj)) {\r\n return obj;\r\n }\r\n for (const key in obj) {\r\n // check key\r\n if (!hasOwn(obj, key)) {\r\n continue;\r\n }\r\n // handle for normal json\r\n if (!key.includes('.')) {\r\n // recursive process value if value is also a object\r\n if (isObject(obj[key])) {\r\n handleFlatJson(obj[key]);\r\n }\r\n }\r\n // handle for flat json, transform to normal json\r\n else {\r\n // go to the last object\r\n const subKeys = key.split('.');\r\n const lastIndex = subKeys.length - 1;\r\n let currentObj = obj;\r\n for (let i = 0; i < lastIndex; i++) {\r\n if (!(subKeys[i] in currentObj)) {\r\n currentObj[subKeys[i]] = {};\r\n }\r\n currentObj = currentObj[subKeys[i]];\r\n }\r\n // update last object value, delete old property\r\n currentObj[subKeys[lastIndex]] = obj[key];\r\n delete obj[key];\r\n // recursive process value if value is also a object\r\n if (isObject(currentObj[subKeys[lastIndex]])) {\r\n handleFlatJson(currentObj[subKeys[lastIndex]]);\r\n }\r\n }\r\n }\r\n return obj;\r\n}\r\nfunction getLocaleMessages(locale, options) {\r\n const { messages, __i18n, messageResolver, flatJson } = options;\r\n // prettier-ignore\r\n const ret = isPlainObject(messages)\r\n ? messages\r\n : isArray(__i18n)\r\n ? {}\r\n : { [locale]: {} };\r\n // merge locale messages of i18n custom block\r\n if (isArray(__i18n)) {\r\n __i18n.forEach(custom => {\r\n if ('locale' in custom && 'resource' in custom) {\r\n const { locale, resource } = custom;\r\n if (locale) {\r\n ret[locale] = ret[locale] || {};\r\n deepCopy(resource, ret[locale]);\r\n }\r\n else {\r\n deepCopy(resource, ret);\r\n }\r\n }\r\n else {\r\n isString(custom) && deepCopy(JSON.parse(custom), ret);\r\n }\r\n });\r\n }\r\n // handle messages for flat json\r\n if (messageResolver == null && flatJson) {\r\n for (const key in ret) {\r\n if (hasOwn(ret, key)) {\r\n handleFlatJson(ret[key]);\r\n }\r\n }\r\n }\r\n return ret;\r\n}\r\nconst isNotObjectOrIsArray = (val) => !isObject(val) || isArray(val);\r\n// eslint-disable-next-line @typescript-eslint/no-explicit-any, @typescript-eslint/explicit-module-boundary-types\r\nfunction deepCopy(src, des) {\r\n // src and des should both be objects, and non of then can be a array\r\n if (isNotObjectOrIsArray(src) || isNotObjectOrIsArray(des)) {\r\n throw createI18nError(I18nErrorCodes.INVALID_VALUE);\r\n }\r\n for (const key in src) {\r\n if (hasOwn(src, key)) {\r\n if (isNotObjectOrIsArray(src[key]) || isNotObjectOrIsArray(des[key])) {\r\n // replace with src[key] when:\r\n // src[key] or des[key] is not a object, or\r\n // src[key] or des[key] is a array\r\n des[key] = src[key];\r\n }\r\n else {\r\n // src[key] and des[key] are both object, merge them\r\n deepCopy(src[key], des[key]);\r\n }\r\n }\r\n }\r\n}\r\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\r\nfunction getComponentOptions(instance) {\r\n return instance.type ;\r\n}\r\nfunction adjustI18nResources(global, options, componentOptions // eslint-disable-line @typescript-eslint/no-explicit-any\r\n) {\r\n let messages = isObject(options.messages) ? options.messages : {};\r\n if ('__i18nGlobal' in componentOptions) {\r\n messages = getLocaleMessages(global.locale.value, {\r\n messages,\r\n __i18n: componentOptions.__i18nGlobal\r\n });\r\n }\r\n // merge locale messages\r\n const locales = Object.keys(messages);\r\n if (locales.length) {\r\n locales.forEach(locale => {\r\n global.mergeLocaleMessage(locale, messages[locale]);\r\n });\r\n }\r\n {\r\n // merge datetime formats\r\n if (isObject(options.datetimeFormats)) {\r\n const locales = Object.keys(options.datetimeFormats);\r\n if (locales.length) {\r\n locales.forEach(locale => {\r\n global.mergeDateTimeFormat(locale, options.datetimeFormats[locale]);\r\n });\r\n }\r\n }\r\n // merge number formats\r\n if (isObject(options.numberFormats)) {\r\n const locales = Object.keys(options.numberFormats);\r\n if (locales.length) {\r\n locales.forEach(locale => {\r\n global.mergeNumberFormat(locale, options.numberFormats[locale]);\r\n });\r\n }\r\n }\r\n }\r\n}\r\nfunction createTextNode(key) {\r\n return createVNode(Text, null, key, 0)\r\n ;\r\n}\r\n/* eslint-enable @typescript-eslint/no-explicit-any */\n\n/* eslint-disable @typescript-eslint/no-explicit-any */\r\n// extend VNode interface\r\nconst DEVTOOLS_META = '__INTLIFY_META__';\r\nlet composerID = 0;\r\nfunction defineCoreMissingHandler(missing) {\r\n return ((ctx, locale, key, type) => {\r\n return missing(locale, key, getCurrentInstance() || undefined, type);\r\n });\r\n}\r\n// for Intlify DevTools\r\nconst getMetaInfo = () => {\r\n const instance = getCurrentInstance();\r\n let meta = null; // eslint-disable-line @typescript-eslint/no-explicit-any\r\n return instance && (meta = getComponentOptions(instance)[DEVTOOLS_META])\r\n ? { [DEVTOOLS_META]: meta } // eslint-disable-line @typescript-eslint/no-explicit-any\r\n : null;\r\n};\r\n/**\r\n * Create composer interface factory\r\n *\r\n * @internal\r\n */\r\n// eslint-disable-next-line @typescript-eslint/explicit-module-boundary-types\r\nfunction createComposer(options = {}, VueI18nLegacy) {\r\n const { __root } = options;\r\n const _isGlobal = __root === undefined;\r\n let _inheritLocale = isBoolean(options.inheritLocale)\r\n ? options.inheritLocale\r\n : true;\r\n const _locale = ref(\r\n // prettier-ignore\r\n __root && _inheritLocale\r\n ? __root.locale.value\r\n : isString(options.locale)\r\n ? options.locale\r\n : DEFAULT_LOCALE);\r\n const _fallbackLocale = ref(\r\n // prettier-ignore\r\n __root && _inheritLocale\r\n ? __root.fallbackLocale.value\r\n : isString(options.fallbackLocale) ||\r\n isArray(options.fallbackLocale) ||\r\n isPlainObject(options.fallbackLocale) ||\r\n options.fallbackLocale === false\r\n ? options.fallbackLocale\r\n : _locale.value);\r\n const _messages = ref(getLocaleMessages(_locale.value, options));\r\n // prettier-ignore\r\n const _datetimeFormats = ref(isPlainObject(options.datetimeFormats)\r\n ? options.datetimeFormats\r\n : { [_locale.value]: {} })\r\n ;\r\n // prettier-ignore\r\n const _numberFormats = ref(isPlainObject(options.numberFormats)\r\n ? options.numberFormats\r\n : { [_locale.value]: {} })\r\n ;\r\n // warning suppress options\r\n // prettier-ignore\r\n let _missingWarn = __root\r\n ? __root.missingWarn\r\n : isBoolean(options.missingWarn) || isRegExp(options.missingWarn)\r\n ? options.missingWarn\r\n : true;\r\n // prettier-ignore\r\n let _fallbackWarn = __root\r\n ? __root.fallbackWarn\r\n : isBoolean(options.fallbackWarn) || isRegExp(options.fallbackWarn)\r\n ? options.fallbackWarn\r\n : true;\r\n // prettier-ignore\r\n let _fallbackRoot = __root\r\n ? __root.fallbackRoot\r\n : isBoolean(options.fallbackRoot)\r\n ? options.fallbackRoot\r\n : true;\r\n // configure fall back to root\r\n let _fallbackFormat = !!options.fallbackFormat;\r\n // runtime missing\r\n let _missing = isFunction(options.missing) ? options.missing : null;\r\n let _runtimeMissing = isFunction(options.missing)\r\n ? defineCoreMissingHandler(options.missing)\r\n : null;\r\n // postTranslation handler\r\n let _postTranslation = isFunction(options.postTranslation)\r\n ? options.postTranslation\r\n : null;\r\n let _warnHtmlMessage = isBoolean(options.warnHtmlMessage)\r\n ? options.warnHtmlMessage\r\n : true;\r\n let _escapeParameter = !!options.escapeParameter;\r\n // custom linked modifiers\r\n // prettier-ignore\r\n const _modifiers = __root\r\n ? __root.modifiers\r\n : isPlainObject(options.modifiers)\r\n ? options.modifiers\r\n : {};\r\n // pluralRules\r\n let _pluralRules = options.pluralRules || (__root && __root.pluralRules);\r\n // runtime context\r\n // eslint-disable-next-line prefer-const\r\n let _context;\r\n function getCoreContext() {\r\n const ctxOptions = {\r\n version: VERSION,\r\n locale: _locale.value,\r\n fallbackLocale: _fallbackLocale.value,\r\n messages: _messages.value,\r\n modifiers: _modifiers,\r\n pluralRules: _pluralRules,\r\n missing: _runtimeMissing === null ? undefined : _runtimeMissing,\r\n missingWarn: _missingWarn,\r\n fallbackWarn: _fallbackWarn,\r\n fallbackFormat: _fallbackFormat,\r\n unresolving: true,\r\n postTranslation: _postTranslation === null ? undefined : _postTranslation,\r\n warnHtmlMessage: _warnHtmlMessage,\r\n escapeParameter: _escapeParameter,\r\n messageResolver: options.messageResolver,\r\n __meta: { framework: 'vue' }\r\n };\r\n {\r\n ctxOptions.datetimeFormats = _datetimeFormats.value;\r\n ctxOptions.numberFormats = _numberFormats.value;\r\n ctxOptions.__datetimeFormatters = isPlainObject(_context)\r\n ? _context.__datetimeFormatters\r\n : undefined;\r\n ctxOptions.__numberFormatters = isPlainObject(_context)\r\n ? _context.__numberFormatters\r\n : undefined;\r\n }\r\n if ((process.env.NODE_ENV !== 'production')) {\r\n ctxOptions.__v_emitter = isPlainObject(_context)\r\n ? _context.__v_emitter\r\n : undefined;\r\n }\r\n return createCoreContext(ctxOptions);\r\n }\r\n _context = getCoreContext();\r\n updateFallbackLocale(_context, _locale.value, _fallbackLocale.value);\r\n // track reactivity\r\n function trackReactivityValues() {\r\n return [\r\n _locale.value,\r\n _fallbackLocale.value,\r\n _messages.value,\r\n _datetimeFormats.value,\r\n _numberFormats.value\r\n ]\r\n ;\r\n }\r\n // locale\r\n const locale = computed({\r\n get: () => _locale.value,\r\n set: val => {\r\n _locale.value = val;\r\n _context.locale = _locale.value;\r\n }\r\n });\r\n // fallbackLocale\r\n const fallbackLocale = computed({\r\n get: () => _fallbackLocale.value,\r\n set: val => {\r\n _fallbackLocale.value = val;\r\n _context.fallbackLocale = _fallbackLocale.value;\r\n updateFallbackLocale(_context, _locale.value, val);\r\n }\r\n });\r\n // messages\r\n const messages = computed(() => _messages.value);\r\n // datetimeFormats\r\n const datetimeFormats = /* #__PURE__*/ computed(() => _datetimeFormats.value);\r\n // numberFormats\r\n const numberFormats = /* #__PURE__*/ computed(() => _numberFormats.value);\r\n // getPostTranslationHandler\r\n function getPostTranslationHandler() {\r\n return isFunction(_postTranslation) ? _postTranslation : null;\r\n }\r\n // setPostTranslationHandler\r\n function setPostTranslationHandler(handler) {\r\n _postTranslation = handler;\r\n _context.postTranslation = handler;\r\n }\r\n // getMissingHandler\r\n function getMissingHandler() {\r\n return _missing;\r\n }\r\n // setMissingHandler\r\n function setMissingHandler(handler) {\r\n if (handler !== null) {\r\n _runtimeMissing = defineCoreMissingHandler(handler);\r\n }\r\n _missing = handler;\r\n _context.missing = _runtimeMissing;\r\n }\r\n function isResolvedTranslateMessage(type, arg // eslint-disable-line @typescript-eslint/no-explicit-any\r\n ) {\r\n return type !== 'translate' || !arg.resolvedMessage;\r\n }\r\n function wrapWithDeps(fn, argumentParser, warnType, fallbackSuccess, fallbackFail, successCondition) {\r\n trackReactivityValues(); // track reactive dependency\r\n // NOTE: experimental !!\r\n let ret;\r\n if ((process.env.NODE_ENV !== 'production') || __INTLIFY_PROD_DEVTOOLS__) {\r\n try {\r\n setAdditionalMeta(getMetaInfo());\r\n ret = fn(_context);\r\n }\r\n finally {\r\n setAdditionalMeta(null);\r\n }\r\n }\r\n else {\r\n ret = fn(_context);\r\n }\r\n if (isNumber(ret) && ret === NOT_REOSLVED) {\r\n const [key, arg2] = argumentParser();\r\n if ((process.env.NODE_ENV !== 'production') &&\r\n __root &&\r\n isString(key) &&\r\n isResolvedTranslateMessage(warnType, arg2)) {\r\n if (_fallbackRoot &&\r\n (isTranslateFallbackWarn(_fallbackWarn, key) ||\r\n isTranslateMissingWarn(_missingWarn, key))) {\r\n warn(getWarnMessage(I18nWarnCodes.FALLBACK_TO_ROOT, {\r\n key,\r\n type: warnType\r\n }));\r\n }\r\n // for vue-devtools timeline event\r\n if ((process.env.NODE_ENV !== 'production')) {\r\n const { __v_emitter: emitter } = _context;\r\n if (emitter && _fallbackRoot) {\r\n emitter.emit(\"fallback\" /* FALBACK */, {\r\n type: warnType,\r\n key,\r\n to: 'global',\r\n groupId: `${warnType}:${key}`\r\n });\r\n }\r\n }\r\n }\r\n return __root && _fallbackRoot\r\n ? fallbackSuccess(__root)\r\n : fallbackFail(key);\r\n }\r\n else if (successCondition(ret)) {\r\n return ret;\r\n }\r\n else {\r\n /* istanbul ignore next */\r\n throw createI18nError(I18nErrorCodes.UNEXPECTED_RETURN_TYPE);\r\n }\r\n }\r\n // t\r\n function t(...args) {\r\n return wrapWithDeps(context => Reflect.apply(translate, null, [context, ...args]), () => parseTranslateArgs(...args), 'translate', root => Reflect.apply(root.t, root, [...args]), key => key, val => isString(val));\r\n }\r\n // rt\r\n function rt(...args) {\r\n const [arg1, arg2, arg3] = args;\r\n if (arg3 && !isObject(arg3)) {\r\n throw createI18nError(I18nErrorCodes.INVALID_ARGUMENT);\r\n }\r\n return t(...[arg1, arg2, assign({ resolvedMessage: true }, arg3 || {})]);\r\n }\r\n // d\r\n function d(...args) {\r\n return wrapWithDeps(context => Reflect.apply(datetime, null, [context, ...args]), () => parseDateTimeArgs(...args), 'datetime format', root => Reflect.apply(root.d, root, [...args]), () => MISSING_RESOLVE_VALUE, val => isString(val));\r\n }\r\n // n\r\n function n(...args) {\r\n return wrapWithDeps(context => Reflect.apply(number, null, [context, ...args]), () => parseNumberArgs(...args), 'number format', root => Reflect.apply(root.n, root, [...args]), () => MISSING_RESOLVE_VALUE, val => isString(val));\r\n }\r\n // for custom processor\r\n function normalize(values) {\r\n return values.map(val => (isString(val) ? createTextNode(val) : val));\r\n }\r\n const interpolate = (val) => val;\r\n const processor = {\r\n normalize,\r\n interpolate,\r\n type: 'vnode'\r\n };\r\n // transrateVNode, using for `i18n-t` component\r\n function transrateVNode(...args) {\r\n return wrapWithDeps(context => {\r\n let ret;\r\n const _context = context;\r\n try {\r\n _context.processor = processor;\r\n ret = Reflect.apply(translate, null, [_context, ...args]);\r\n }\r\n finally {\r\n _context.processor = null;\r\n }\r\n return ret;\r\n }, () => parseTranslateArgs(...args), 'translate', \r\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\r\n root => root[TransrateVNodeSymbol](...args), key => [createTextNode(key)], val => isArray(val));\r\n }\r\n // numberParts, using for `i18n-n` component\r\n function numberParts(...args) {\r\n return wrapWithDeps(context => Reflect.apply(number, null, [context, ...args]), () => parseNumberArgs(...args), 'number format', \r\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\r\n root => root[NumberPartsSymbol](...args), () => [], val => isString(val) || isArray(val));\r\n }\r\n // datetimeParts, using for `i18n-d` component\r\n function datetimeParts(...args) {\r\n return wrapWithDeps(context => Reflect.apply(datetime, null, [context, ...args]), () => parseDateTimeArgs(...args), 'datetime format', \r\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\r\n root => root[DatetimePartsSymbol](...args), () => [], val => isString(val) || isArray(val));\r\n }\r\n function setPluralRules(rules) {\r\n _pluralRules = rules;\r\n _context.pluralRules = _pluralRules;\r\n }\r\n // te\r\n function te(key, locale) {\r\n const targetLocale = isString(locale) ? locale : _locale.value;\r\n const message = getLocaleMessage(targetLocale);\r\n return _context.messageResolver(message, key) !== null;\r\n }\r\n function resolveMessages(key) {\r\n let messages = null;\r\n const locales = fallbackWithLocaleChain(_context, _fallbackLocale.value, _locale.value);\r\n for (let i = 0; i < locales.length; i++) {\r\n const targetLocaleMessages = _messages.value[locales[i]] || {};\r\n const messageValue = _context.messageResolver(targetLocaleMessages, key);\r\n if (messageValue != null) {\r\n messages = messageValue;\r\n break;\r\n }\r\n }\r\n return messages;\r\n }\r\n // tm\r\n function tm(key) {\r\n const messages = resolveMessages(key);\r\n // prettier-ignore\r\n return messages != null\r\n ? messages\r\n : __root\r\n ? __root.tm(key) || {}\r\n : {};\r\n }\r\n // getLocaleMessage\r\n function getLocaleMessage(locale) {\r\n return (_messages.value[locale] || {});\r\n }\r\n // setLocaleMessage\r\n function setLocaleMessage(locale, message) {\r\n _messages.value[locale] = message;\r\n _context.messages = _messages.value;\r\n }\r\n // mergeLocaleMessage\r\n function mergeLocaleMessage(locale, message) {\r\n _messages.value[locale] = _messages.value[locale] || {};\r\n deepCopy(message, _messages.value[locale]);\r\n _context.messages = _messages.value;\r\n }\r\n // getDateTimeFormat\r\n function getDateTimeFormat(locale) {\r\n return _datetimeFormats.value[locale] || {};\r\n }\r\n // setDateTimeFormat\r\n function setDateTimeFormat(locale, format) {\r\n _datetimeFormats.value[locale] = format;\r\n _context.datetimeFormats = _datetimeFormats.value;\r\n clearDateTimeFormat(_context, locale, format);\r\n }\r\n // mergeDateTimeFormat\r\n function mergeDateTimeFormat(locale, format) {\r\n _datetimeFormats.value[locale] = assign(_datetimeFormats.value[locale] || {}, format);\r\n _context.datetimeFormats = _datetimeFormats.value;\r\n clearDateTimeFormat(_context, locale, format);\r\n }\r\n // getNumberFormat\r\n function getNumberFormat(locale) {\r\n return _numberFormats.value[locale] || {};\r\n }\r\n // setNumberFormat\r\n function setNumberFormat(locale, format) {\r\n _numberFormats.value[locale] = format;\r\n _context.numberFormats = _numberFormats.value;\r\n clearNumberFormat(_context, locale, format);\r\n }\r\n // mergeNumberFormat\r\n function mergeNumberFormat(locale, format) {\r\n _numberFormats.value[locale] = assign(_numberFormats.value[locale] || {}, format);\r\n _context.numberFormats = _numberFormats.value;\r\n clearNumberFormat(_context, locale, format);\r\n }\r\n // for debug\r\n composerID++;\r\n // watch root locale & fallbackLocale\r\n if (__root) {\r\n watch(__root.locale, (val) => {\r\n if (_inheritLocale) {\r\n _locale.value = val;\r\n _context.locale = val;\r\n updateFallbackLocale(_context, _locale.value, _fallbackLocale.value);\r\n }\r\n });\r\n watch(__root.fallbackLocale, (val) => {\r\n if (_inheritLocale) {\r\n _fallbackLocale.value = val;\r\n _context.fallbackLocale = val;\r\n updateFallbackLocale(_context, _locale.value, _fallbackLocale.value);\r\n }\r\n });\r\n }\r\n // define basic composition API!\r\n const composer = {\r\n id: composerID,\r\n locale,\r\n fallbackLocale,\r\n get inheritLocale() {\r\n return _inheritLocale;\r\n },\r\n set inheritLocale(val) {\r\n _inheritLocale = val;\r\n if (val && __root) {\r\n _locale.value = __root.locale.value;\r\n _fallbackLocale.value = __root.fallbackLocale.value;\r\n updateFallbackLocale(_context, _locale.value, _fallbackLocale.value);\r\n }\r\n },\r\n get availableLocales() {\r\n return Object.keys(_messages.value).sort();\r\n },\r\n messages,\r\n get modifiers() {\r\n return _modifiers;\r\n },\r\n get pluralRules() {\r\n return _pluralRules || {};\r\n },\r\n get isGlobal() {\r\n return _isGlobal;\r\n },\r\n get missingWarn() {\r\n return _missingWarn;\r\n },\r\n set missingWarn(val) {\r\n _missingWarn = val;\r\n _context.missingWarn = _missingWarn;\r\n },\r\n get fallbackWarn() {\r\n return _fallbackWarn;\r\n },\r\n set fallbackWarn(val) {\r\n _fallbackWarn = val;\r\n _context.fallbackWarn = _fallbackWarn;\r\n },\r\n get fallbackRoot() {\r\n return _fallbackRoot;\r\n },\r\n set fallbackRoot(val) {\r\n _fallbackRoot = val;\r\n },\r\n get fallbackFormat() {\r\n return _fallbackFormat;\r\n },\r\n set fallbackFormat(val) {\r\n _fallbackFormat = val;\r\n _context.fallbackFormat = _fallbackFormat;\r\n },\r\n get warnHtmlMessage() {\r\n return _warnHtmlMessage;\r\n },\r\n set warnHtmlMessage(val) {\r\n _warnHtmlMessage = val;\r\n _context.warnHtmlMessage = val;\r\n },\r\n get escapeParameter() {\r\n return _escapeParameter;\r\n },\r\n set escapeParameter(val) {\r\n _escapeParameter = val;\r\n _context.escapeParameter = val;\r\n },\r\n t,\r\n getLocaleMessage,\r\n setLocaleMessage,\r\n mergeLocaleMessage,\r\n getPostTranslationHandler,\r\n setPostTranslationHandler,\r\n getMissingHandler,\r\n setMissingHandler,\r\n [SetPluralRulesSymbol]: setPluralRules\r\n };\r\n {\r\n composer.datetimeFormats = datetimeFormats;\r\n composer.numberFormats = numberFormats;\r\n composer.rt = rt;\r\n composer.te = te;\r\n composer.tm = tm;\r\n composer.d = d;\r\n composer.n = n;\r\n composer.getDateTimeFormat = getDateTimeFormat;\r\n composer.setDateTimeFormat = setDateTimeFormat;\r\n composer.mergeDateTimeFormat = mergeDateTimeFormat;\r\n composer.getNumberFormat = getNumberFormat;\r\n composer.setNumberFormat = setNumberFormat;\r\n composer.mergeNumberFormat = mergeNumberFormat;\r\n composer[InejctWithOption] = options.__injectWithOption;\r\n composer[TransrateVNodeSymbol] = transrateVNode;\r\n composer[DatetimePartsSymbol] = datetimeParts;\r\n composer[NumberPartsSymbol] = numberParts;\r\n }\r\n // for vue-devtools timeline event\r\n if ((process.env.NODE_ENV !== 'production')) {\r\n composer[EnableEmitter] = (emitter) => {\r\n _context.__v_emitter = emitter;\r\n };\r\n composer[DisableEmitter] = () => {\r\n _context.__v_emitter = undefined;\r\n };\r\n }\r\n return composer;\r\n}\r\n/* eslint-enable @typescript-eslint/no-explicit-any */\n\n/* eslint-disable @typescript-eslint/no-explicit-any */\r\n/**\r\n * Convert to I18n Composer Options from VueI18n Options\r\n *\r\n * @internal\r\n */\r\nfunction convertComposerOptions(options) {\r\n const locale = isString(options.locale) ? options.locale : DEFAULT_LOCALE;\r\n const fallbackLocale = isString(options.fallbackLocale) ||\r\n isArray(options.fallbackLocale) ||\r\n isPlainObject(options.fallbackLocale) ||\r\n options.fallbackLocale === false\r\n ? options.fallbackLocale\r\n : locale;\r\n const missing = isFunction(options.missing) ? options.missing : undefined;\r\n const missingWarn = isBoolean(options.silentTranslationWarn) ||\r\n isRegExp(options.silentTranslationWarn)\r\n ? !options.silentTranslationWarn\r\n : true;\r\n const fallbackWarn = isBoolean(options.silentFallbackWarn) ||\r\n isRegExp(options.silentFallbackWarn)\r\n ? !options.silentFallbackWarn\r\n : true;\r\n const fallbackRoot = isBoolean(options.fallbackRoot)\r\n ? options.fallbackRoot\r\n : true;\r\n const fallbackFormat = !!options.formatFallbackMessages;\r\n const modifiers = isPlainObject(options.modifiers) ? options.modifiers : {};\r\n const pluralizationRules = options.pluralizationRules;\r\n const postTranslation = isFunction(options.postTranslation)\r\n ? options.postTranslation\r\n : undefined;\r\n const warnHtmlMessage = isString(options.warnHtmlInMessage)\r\n ? options.warnHtmlInMessage !== 'off'\r\n : true;\r\n const escapeParameter = !!options.escapeParameterHtml;\r\n const inheritLocale = isBoolean(options.sync) ? options.sync : true;\r\n if ((process.env.NODE_ENV !== 'production') && options.formatter) {\r\n warn(getWarnMessage(I18nWarnCodes.NOT_SUPPORTED_FORMATTER));\r\n }\r\n if ((process.env.NODE_ENV !== 'production') && options.preserveDirectiveContent) {\r\n warn(getWarnMessage(I18nWarnCodes.NOT_SUPPORTED_PRESERVE_DIRECTIVE));\r\n }\r\n let messages = options.messages;\r\n if (isPlainObject(options.sharedMessages)) {\r\n const sharedMessages = options.sharedMessages;\r\n const locales = Object.keys(sharedMessages);\r\n messages = locales.reduce((messages, locale) => {\r\n const message = messages[locale] || (messages[locale] = {});\r\n assign(message, sharedMessages[locale]);\r\n return messages;\r\n }, (messages || {}));\r\n }\r\n const { __i18n, __root, __injectWithOption } = options;\r\n const datetimeFormats = options.datetimeFormats;\r\n const numberFormats = options.numberFormats;\r\n const flatJson = options.flatJson;\r\n return {\r\n locale,\r\n fallbackLocale,\r\n messages,\r\n flatJson,\r\n datetimeFormats,\r\n numberFormats,\r\n missing,\r\n missingWarn,\r\n fallbackWarn,\r\n fallbackRoot,\r\n fallbackFormat,\r\n modifiers,\r\n pluralRules: pluralizationRules,\r\n postTranslation,\r\n warnHtmlMessage,\r\n escapeParameter,\r\n messageResolver: options.messageResolver,\r\n inheritLocale,\r\n __i18n,\r\n __root,\r\n __injectWithOption\r\n };\r\n}\r\n/**\r\n * create VueI18n interface factory\r\n *\r\n * @internal\r\n */\r\n// eslint-disable-next-line @typescript-eslint/explicit-module-boundary-types\r\nfunction createVueI18n(options = {}, VueI18nLegacy) {\r\n {\r\n const composer = createComposer(convertComposerOptions(options));\r\n // defines VueI18n\r\n const vueI18n = {\r\n // id\r\n id: composer.id,\r\n // locale\r\n get locale() {\r\n return composer.locale.value;\r\n },\r\n set locale(val) {\r\n composer.locale.value = val;\r\n },\r\n // fallbackLocale\r\n get fallbackLocale() {\r\n return composer.fallbackLocale.value;\r\n },\r\n set fallbackLocale(val) {\r\n composer.fallbackLocale.value = val;\r\n },\r\n // messages\r\n get messages() {\r\n return composer.messages.value;\r\n },\r\n // datetimeFormats\r\n get datetimeFormats() {\r\n return composer.datetimeFormats.value;\r\n },\r\n // numberFormats\r\n get numberFormats() {\r\n return composer.numberFormats.value;\r\n },\r\n // availableLocales\r\n get availableLocales() {\r\n return composer.availableLocales;\r\n },\r\n // formatter\r\n get formatter() {\r\n (process.env.NODE_ENV !== 'production') && warn(getWarnMessage(I18nWarnCodes.NOT_SUPPORTED_FORMATTER));\r\n // dummy\r\n return {\r\n interpolate() {\r\n return [];\r\n }\r\n };\r\n },\r\n set formatter(val) {\r\n (process.env.NODE_ENV !== 'production') && warn(getWarnMessage(I18nWarnCodes.NOT_SUPPORTED_FORMATTER));\r\n },\r\n // missing\r\n get missing() {\r\n return composer.getMissingHandler();\r\n },\r\n set missing(handler) {\r\n composer.setMissingHandler(handler);\r\n },\r\n // silentTranslationWarn\r\n get silentTranslationWarn() {\r\n return isBoolean(composer.missingWarn)\r\n ? !composer.missingWarn\r\n : composer.missingWarn;\r\n },\r\n set silentTranslationWarn(val) {\r\n composer.missingWarn = isBoolean(val) ? !val : val;\r\n },\r\n // silentFallbackWarn\r\n get silentFallbackWarn() {\r\n return isBoolean(composer.fallbackWarn)\r\n ? !composer.fallbackWarn\r\n : composer.fallbackWarn;\r\n },\r\n set silentFallbackWarn(val) {\r\n composer.fallbackWarn = isBoolean(val) ? !val : val;\r\n },\r\n // modifiers\r\n get modifiers() {\r\n return composer.modifiers;\r\n },\r\n // formatFallbackMessages\r\n get formatFallbackMessages() {\r\n return composer.fallbackFormat;\r\n },\r\n set formatFallbackMessages(val) {\r\n composer.fallbackFormat = val;\r\n },\r\n // postTranslation\r\n get postTranslation() {\r\n return composer.getPostTranslationHandler();\r\n },\r\n set postTranslation(handler) {\r\n composer.setPostTranslationHandler(handler);\r\n },\r\n // sync\r\n get sync() {\r\n return composer.inheritLocale;\r\n },\r\n set sync(val) {\r\n composer.inheritLocale = val;\r\n },\r\n // warnInHtmlMessage\r\n get warnHtmlInMessage() {\r\n return composer.warnHtmlMessage ? 'warn' : 'off';\r\n },\r\n set warnHtmlInMessage(val) {\r\n composer.warnHtmlMessage = val !== 'off';\r\n },\r\n // escapeParameterHtml\r\n get escapeParameterHtml() {\r\n return composer.escapeParameter;\r\n },\r\n set escapeParameterHtml(val) {\r\n composer.escapeParameter = val;\r\n },\r\n // preserveDirectiveContent\r\n get preserveDirectiveContent() {\r\n (process.env.NODE_ENV !== 'production') &&\r\n warn(getWarnMessage(I18nWarnCodes.NOT_SUPPORTED_PRESERVE_DIRECTIVE));\r\n return true;\r\n },\r\n set preserveDirectiveContent(val) {\r\n (process.env.NODE_ENV !== 'production') &&\r\n warn(getWarnMessage(I18nWarnCodes.NOT_SUPPORTED_PRESERVE_DIRECTIVE));\r\n },\r\n // pluralizationRules\r\n get pluralizationRules() {\r\n return composer.pluralRules || {};\r\n },\r\n // for internal\r\n __composer: composer,\r\n // t\r\n t(...args) {\r\n const [arg1, arg2, arg3] = args;\r\n const options = {};\r\n let list = null;\r\n let named = null;\r\n if (!isString(arg1)) {\r\n throw createI18nError(I18nErrorCodes.INVALID_ARGUMENT);\r\n }\r\n const key = arg1;\r\n if (isString(arg2)) {\r\n options.locale = arg2;\r\n }\r\n else if (isArray(arg2)) {\r\n list = arg2;\r\n }\r\n else if (isPlainObject(arg2)) {\r\n named = arg2;\r\n }\r\n if (isArray(arg3)) {\r\n list = arg3;\r\n }\r\n else if (isPlainObject(arg3)) {\r\n named = arg3;\r\n }\r\n // return composer.t(key, (list || named || {}) as any, options)\r\n return Reflect.apply(composer.t, composer, [\r\n key,\r\n (list || named || {}),\r\n options\r\n ]);\r\n },\r\n rt(...args) {\r\n return Reflect.apply(composer.rt, composer, [...args]);\r\n },\r\n // tc\r\n tc(...args) {\r\n const [arg1, arg2, arg3] = args;\r\n const options = { plural: 1 };\r\n let list = null;\r\n let named = null;\r\n if (!isString(arg1)) {\r\n throw createI18nError(I18nErrorCodes.INVALID_ARGUMENT);\r\n }\r\n const key = arg1;\r\n if (isString(arg2)) {\r\n options.locale = arg2;\r\n }\r\n else if (isNumber(arg2)) {\r\n options.plural = arg2;\r\n }\r\n else if (isArray(arg2)) {\r\n list = arg2;\r\n }\r\n else if (isPlainObject(arg2)) {\r\n named = arg2;\r\n }\r\n if (isString(arg3)) {\r\n options.locale = arg3;\r\n }\r\n else if (isArray(arg3)) {\r\n list = arg3;\r\n }\r\n else if (isPlainObject(arg3)) {\r\n named = arg3;\r\n }\r\n // return composer.t(key, (list || named || {}) as any, options)\r\n return Reflect.apply(composer.t, composer, [\r\n key,\r\n (list || named || {}),\r\n options\r\n ]);\r\n },\r\n // te\r\n te(key, locale) {\r\n return composer.te(key, locale);\r\n },\r\n // tm\r\n tm(key) {\r\n return composer.tm(key);\r\n },\r\n // getLocaleMessage\r\n getLocaleMessage(locale) {\r\n return composer.getLocaleMessage(locale);\r\n },\r\n // setLocaleMessage\r\n setLocaleMessage(locale, message) {\r\n composer.setLocaleMessage(locale, message);\r\n },\r\n // mergeLocaleMessage\r\n mergeLocaleMessage(locale, message) {\r\n composer.mergeLocaleMessage(locale, message);\r\n },\r\n // d\r\n d(...args) {\r\n return Reflect.apply(composer.d, composer, [...args]);\r\n },\r\n // getDateTimeFormat\r\n getDateTimeFormat(locale) {\r\n return composer.getDateTimeFormat(locale);\r\n },\r\n // setDateTimeFormat\r\n setDateTimeFormat(locale, format) {\r\n composer.setDateTimeFormat(locale, format);\r\n },\r\n // mergeDateTimeFormat\r\n mergeDateTimeFormat(locale, format) {\r\n composer.mergeDateTimeFormat(locale, format);\r\n },\r\n // n\r\n n(...args) {\r\n return Reflect.apply(composer.n, composer, [...args]);\r\n },\r\n // getNumberFormat\r\n getNumberFormat(locale) {\r\n return composer.getNumberFormat(locale);\r\n },\r\n // setNumberFormat\r\n setNumberFormat(locale, format) {\r\n composer.setNumberFormat(locale, format);\r\n },\r\n // mergeNumberFormat\r\n mergeNumberFormat(locale, format) {\r\n composer.mergeNumberFormat(locale, format);\r\n },\r\n // getChoiceIndex\r\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\r\n getChoiceIndex(choice, choicesLength) {\r\n (process.env.NODE_ENV !== 'production') &&\r\n warn(getWarnMessage(I18nWarnCodes.NOT_SUPPORTED_GET_CHOICE_INDEX));\r\n return -1;\r\n },\r\n // for internal\r\n __onComponentInstanceCreated(target) {\r\n const { componentInstanceCreatedListener } = options;\r\n if (componentInstanceCreatedListener) {\r\n componentInstanceCreatedListener(target, vueI18n);\r\n }\r\n }\r\n };\r\n // for vue-devtools timeline event\r\n if ((process.env.NODE_ENV !== 'production')) {\r\n vueI18n.__enableEmitter = (emitter) => {\r\n const __composer = composer;\r\n __composer[EnableEmitter] && __composer[EnableEmitter](emitter);\r\n };\r\n vueI18n.__disableEmitter = () => {\r\n const __composer = composer;\r\n __composer[DisableEmitter] && __composer[DisableEmitter]();\r\n };\r\n }\r\n return vueI18n;\r\n }\r\n}\r\n/* eslint-enable @typescript-eslint/no-explicit-any */\n\nconst baseFormatProps = {\r\n tag: {\r\n type: [String, Object]\r\n },\r\n locale: {\r\n type: String\r\n },\r\n scope: {\r\n type: String,\r\n // NOTE: avoid https://github.com/microsoft/rushstack/issues/1050\r\n validator: (val /* ComponetI18nScope */) => val === 'parent' || val === 'global',\r\n default: 'parent' /* ComponetI18nScope */\r\n },\r\n i18n: {\r\n type: Object\r\n }\r\n};\n\nfunction getInterpolateArg(\r\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\r\n{ slots }, // SetupContext,\r\nkeys) {\r\n if (keys.length === 1 && keys[0] === 'default') {\r\n // default slot with list\r\n const ret = slots.default ? slots.default() : [];\r\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\r\n return ret.reduce((slot, current) => {\r\n return (slot = [\r\n ...slot,\r\n ...(isArray(current.children) ? current.children : [current])\r\n ]);\r\n }, []);\r\n }\r\n else {\r\n // named slots\r\n return keys.reduce((arg, key) => {\r\n const slot = slots[key];\r\n if (slot) {\r\n arg[key] = slot();\r\n }\r\n return arg;\r\n }, {});\r\n }\r\n}\r\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\r\nfunction getFragmentableTag(tag) {\r\n return Fragment ;\r\n}\n\n/**\r\n * Translation Component\r\n *\r\n * @remarks\r\n * See the following items for property about details\r\n *\r\n * @VueI18nSee [TranslationProps](component#translationprops)\r\n * @VueI18nSee [BaseFormatProps](component#baseformatprops)\r\n * @VueI18nSee [Component Interpolation](../guide/advanced/component)\r\n *\r\n * @example\r\n * ```html\r\n *
\r\n * \r\n * \r\n * {{ $t('tos') }}\r\n * \r\n * \r\n *
\r\n * ```\r\n * ```js\r\n * import { createApp } from 'vue'\r\n * import { createI18n } from 'vue-i18n'\r\n *\r\n * const messages = {\r\n * en: {\r\n * tos: 'Term of Service',\r\n * term: 'I accept xxx {0}.'\r\n * },\r\n * ja: {\r\n * tos: '利用規約',\r\n * term: '私は xxx の{0}に同意します。'\r\n * }\r\n * }\r\n *\r\n * const i18n = createI18n({\r\n * locale: 'en',\r\n * messages\r\n * })\r\n *\r\n * const app = createApp({\r\n * data: {\r\n * url: '/term'\r\n * }\r\n * }).use(i18n).mount('#app')\r\n * ```\r\n *\r\n * @VueI18nComponent\r\n */\r\nconst Translation = /* defineComponent */ {\r\n /* eslint-disable */\r\n name: 'i18n-t',\r\n props: assign({\r\n keypath: {\r\n type: String,\r\n required: true\r\n },\r\n plural: {\r\n type: [Number, String],\r\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\r\n validator: (val) => isNumber(val) || !isNaN(val)\r\n }\r\n }, baseFormatProps),\r\n /* eslint-enable */\r\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\r\n setup(props, context) {\r\n const { slots, attrs } = context;\r\n // NOTE: avoid https://github.com/microsoft/rushstack/issues/1050\r\n const i18n = props.i18n ||\r\n useI18n({\r\n useScope: props.scope,\r\n __useComponent: true\r\n });\r\n const keys = Object.keys(slots).filter(key => key !== '_');\r\n return () => {\r\n const options = {};\r\n if (props.locale) {\r\n options.locale = props.locale;\r\n }\r\n if (props.plural !== undefined) {\r\n options.plural = isString(props.plural) ? +props.plural : props.plural;\r\n }\r\n const arg = getInterpolateArg(context, keys);\r\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\r\n const children = i18n[TransrateVNodeSymbol](props.keypath, arg, options);\r\n const assignedAttrs = assign({}, attrs);\r\n const tag = isString(props.tag) || isObject(props.tag)\r\n ? props.tag\r\n : getFragmentableTag();\r\n return h(tag, assignedAttrs, children);\r\n };\r\n }\r\n};\n\nfunction renderFormatter(props, context, slotKeys, partFormatter) {\r\n const { slots, attrs } = context;\r\n return () => {\r\n const options = { part: true };\r\n let overrides = {};\r\n if (props.locale) {\r\n options.locale = props.locale;\r\n }\r\n if (isString(props.format)) {\r\n options.key = props.format;\r\n }\r\n else if (isObject(props.format)) {\r\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\r\n if (isString(props.format.key)) {\r\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\r\n options.key = props.format.key;\r\n }\r\n // Filter out number format options only\r\n overrides = Object.keys(props.format).reduce((options, prop) => {\r\n return slotKeys.includes(prop)\r\n ? assign({}, options, { [prop]: props.format[prop] }) // eslint-disable-line @typescript-eslint/no-explicit-any\r\n : options;\r\n }, {});\r\n }\r\n const parts = partFormatter(...[props.value, options, overrides]);\r\n let children = [options.key];\r\n if (isArray(parts)) {\r\n children = parts.map((part, index) => {\r\n const slot = slots[part.type];\r\n return slot\r\n ? slot({ [part.type]: part.value, index, parts })\r\n : [part.value];\r\n });\r\n }\r\n else if (isString(parts)) {\r\n children = [parts];\r\n }\r\n const assignedAttrs = assign({}, attrs);\r\n const tag = isString(props.tag) || isObject(props.tag)\r\n ? props.tag\r\n : getFragmentableTag();\r\n return h(tag, assignedAttrs, children);\r\n };\r\n}\n\nconst NUMBER_FORMAT_KEYS = [\r\n 'localeMatcher',\r\n 'style',\r\n 'unit',\r\n 'unitDisplay',\r\n 'currency',\r\n 'currencyDisplay',\r\n 'useGrouping',\r\n 'numberingSystem',\r\n 'minimumIntegerDigits',\r\n 'minimumFractionDigits',\r\n 'maximumFractionDigits',\r\n 'minimumSignificantDigits',\r\n 'maximumSignificantDigits',\r\n 'notation',\r\n 'formatMatcher'\r\n];\r\n/**\r\n * Number Format Component\r\n *\r\n * @remarks\r\n * See the following items for property about details\r\n *\r\n * @VueI18nSee [FormattableProps](component#formattableprops)\r\n * @VueI18nSee [BaseFormatProps](component#baseformatprops)\r\n * @VueI18nSee [Custom Formatting](../guide/essentials/number#custom-formatting)\r\n *\r\n * @VueI18nDanger\r\n * Not supported IE, due to no support `Intl.NumberFormat#formatToParts` in [IE](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Intl/NumberFormat/formatToParts)\r\n *\r\n * If you want to use it, you need to use [polyfill](https://github.com/formatjs/formatjs/tree/main/packages/intl-numberformat)\r\n *\r\n * @VueI18nComponent\r\n */\r\nconst NumberFormat = /* defineComponent */ {\r\n /* eslint-disable */\r\n name: 'i18n-n',\r\n props: assign({\r\n value: {\r\n type: Number,\r\n required: true\r\n },\r\n format: {\r\n type: [String, Object]\r\n }\r\n }, baseFormatProps),\r\n /* eslint-enable */\r\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\r\n setup(props, context) {\r\n const i18n = props.i18n ||\r\n useI18n({ useScope: 'parent', __useComponent: true });\r\n return renderFormatter(props, context, NUMBER_FORMAT_KEYS, (...args) => \r\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\r\n i18n[NumberPartsSymbol](...args));\r\n }\r\n};\n\nconst DATETIME_FORMAT_KEYS = [\r\n 'dateStyle',\r\n 'timeStyle',\r\n 'fractionalSecondDigits',\r\n 'calendar',\r\n 'dayPeriod',\r\n 'numberingSystem',\r\n 'localeMatcher',\r\n 'timeZone',\r\n 'hour12',\r\n 'hourCycle',\r\n 'formatMatcher',\r\n 'weekday',\r\n 'era',\r\n 'year',\r\n 'month',\r\n 'day',\r\n 'hour',\r\n 'minute',\r\n 'second',\r\n 'timeZoneName'\r\n];\r\n/**\r\n * Datetime Format Component\r\n *\r\n * @remarks\r\n * See the following items for property about details\r\n *\r\n * @VueI18nSee [FormattableProps](component#formattableprops)\r\n * @VueI18nSee [BaseFormatProps](component#baseformatprops)\r\n * @VueI18nSee [Custom Formatting](../guide/essentials/datetime#custom-formatting)\r\n *\r\n * @VueI18nDanger\r\n * Not supported IE, due to no support `Intl.DateTimeFormat#formatToParts` in [IE](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Intl/DateTimeFormat/formatToParts)\r\n *\r\n * If you want to use it, you need to use [polyfill](https://github.com/formatjs/formatjs/tree/main/packages/intl-datetimeformat)\r\n *\r\n * @VueI18nComponent\r\n */\r\nconst DatetimeFormat = /*defineComponent */ {\r\n /* eslint-disable */\r\n name: 'i18n-d',\r\n props: assign({\r\n value: {\r\n type: [Number, Date],\r\n required: true\r\n },\r\n format: {\r\n type: [String, Object]\r\n }\r\n }, baseFormatProps),\r\n /* eslint-enable */\r\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\r\n setup(props, context) {\r\n const i18n = props.i18n ||\r\n useI18n({ useScope: 'parent', __useComponent: true });\r\n return renderFormatter(props, context, DATETIME_FORMAT_KEYS, (...args) => \r\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\r\n i18n[DatetimePartsSymbol](...args));\r\n }\r\n};\n\nfunction getComposer$2(i18n, instance) {\r\n const i18nInternal = i18n;\r\n if (i18n.mode === 'composition') {\r\n return (i18nInternal.__getInstance(instance) || i18n.global);\r\n }\r\n else {\r\n const vueI18n = i18nInternal.__getInstance(instance);\r\n return vueI18n != null\r\n ? vueI18n.__composer\r\n : i18n.global.__composer;\r\n }\r\n}\r\nfunction vTDirective(i18n) {\r\n const bind = (el, { instance, value, modifiers }) => {\r\n /* istanbul ignore if */\r\n if (!instance || !instance.$) {\r\n throw createI18nError(I18nErrorCodes.UNEXPECTED_ERROR);\r\n }\r\n const composer = getComposer$2(i18n, instance.$);\r\n if ((process.env.NODE_ENV !== 'production') && modifiers.preserve) {\r\n warn(getWarnMessage(I18nWarnCodes.NOT_SUPPORTED_PRESERVE));\r\n }\r\n const parsedValue = parseValue(value);\r\n // el.textContent = composer.t(...makeParams(parsedValue))\r\n el.textContent = Reflect.apply(composer.t, composer, [\r\n ...makeParams(parsedValue)\r\n ]);\r\n };\r\n return {\r\n beforeMount: bind,\r\n beforeUpdate: bind\r\n };\r\n}\r\nfunction parseValue(value) {\r\n if (isString(value)) {\r\n return { path: value };\r\n }\r\n else if (isPlainObject(value)) {\r\n if (!('path' in value)) {\r\n throw createI18nError(I18nErrorCodes.REQUIRED_VALUE, 'path');\r\n }\r\n return value;\r\n }\r\n else {\r\n throw createI18nError(I18nErrorCodes.INVALID_VALUE);\r\n }\r\n}\r\nfunction makeParams(value) {\r\n const { path, locale, args, choice, plural } = value;\r\n const options = {};\r\n const named = args || {};\r\n if (isString(locale)) {\r\n options.locale = locale;\r\n }\r\n if (isNumber(choice)) {\r\n options.plural = choice;\r\n }\r\n if (isNumber(plural)) {\r\n options.plural = plural;\r\n }\r\n return [path, named, options];\r\n}\n\nfunction apply(app, i18n, ...options) {\r\n const pluginOptions = isPlainObject(options[0])\r\n ? options[0]\r\n : {};\r\n const useI18nComponentName = !!pluginOptions.useI18nComponentName;\r\n const globalInstall = isBoolean(pluginOptions.globalInstall)\r\n ? pluginOptions.globalInstall\r\n : true;\r\n if ((process.env.NODE_ENV !== 'production') && globalInstall && useI18nComponentName) {\r\n warn(getWarnMessage(I18nWarnCodes.COMPONENT_NAME_LEGACY_COMPATIBLE, {\r\n name: Translation.name\r\n }));\r\n }\r\n if (globalInstall) {\r\n // install components\r\n app.component(!useI18nComponentName ? Translation.name : 'i18n', Translation);\r\n app.component(NumberFormat.name, NumberFormat);\r\n app.component(DatetimeFormat.name, DatetimeFormat);\r\n }\r\n // install directive\r\n {\r\n app.directive('t', vTDirective(i18n));\r\n }\r\n}\n\nconst VUE_I18N_COMPONENT_TYPES = 'vue-i18n: composer properties';\r\nlet devtoolsApi;\r\nasync function enableDevTools(app, i18n) {\r\n return new Promise((resolve, reject) => {\r\n try {\r\n setupDevtoolsPlugin({\r\n id: \"vue-devtools-plugin-vue-i18n\" /* PLUGIN */,\r\n label: VueDevToolsLabels[\"vue-devtools-plugin-vue-i18n\" /* PLUGIN */],\r\n packageName: 'vue-i18n',\r\n homepage: 'https://vue-i18n.intlify.dev',\r\n logo: 'https://vue-i18n.intlify.dev/vue-i18n-devtools-logo.png',\r\n componentStateTypes: [VUE_I18N_COMPONENT_TYPES],\r\n app\r\n }, api => {\r\n devtoolsApi = api;\r\n api.on.visitComponentTree(({ componentInstance, treeNode }) => {\r\n updateComponentTreeTags(componentInstance, treeNode, i18n);\r\n });\r\n api.on.inspectComponent(({ componentInstance, instanceData }) => {\r\n if (componentInstance.vnode.el &&\r\n componentInstance.vnode.el.__VUE_I18N__ &&\r\n instanceData) {\r\n if (i18n.mode === 'legacy') {\r\n // ignore global scope on legacy mode\r\n if (componentInstance.vnode.el.__VUE_I18N__ !==\r\n i18n.global.__composer) {\r\n inspectComposer(instanceData, componentInstance.vnode.el.__VUE_I18N__);\r\n }\r\n }\r\n else {\r\n inspectComposer(instanceData, componentInstance.vnode.el.__VUE_I18N__);\r\n }\r\n }\r\n });\r\n api.addInspector({\r\n id: \"vue-i18n-resource-inspector\" /* CUSTOM_INSPECTOR */,\r\n label: VueDevToolsLabels[\"vue-i18n-resource-inspector\" /* CUSTOM_INSPECTOR */],\r\n icon: 'language',\r\n treeFilterPlaceholder: VueDevToolsPlaceholders[\"vue-i18n-resource-inspector\" /* CUSTOM_INSPECTOR */]\r\n });\r\n api.on.getInspectorTree(payload => {\r\n if (payload.app === app &&\r\n payload.inspectorId === \"vue-i18n-resource-inspector\" /* CUSTOM_INSPECTOR */) {\r\n registerScope(payload, i18n);\r\n }\r\n });\r\n const roots = new Map();\r\n api.on.getInspectorState(async (payload) => {\r\n if (payload.app === app &&\r\n payload.inspectorId === \"vue-i18n-resource-inspector\" /* CUSTOM_INSPECTOR */) {\r\n api.unhighlightElement();\r\n inspectScope(payload, i18n);\r\n if (payload.nodeId === 'global') {\r\n if (!roots.has(payload.app)) {\r\n const [root] = await api.getComponentInstances(payload.app);\r\n roots.set(payload.app, root);\r\n }\r\n api.highlightElement(roots.get(payload.app));\r\n }\r\n else {\r\n const instance = getComponentInstance(payload.nodeId, i18n);\r\n instance && api.highlightElement(instance);\r\n }\r\n }\r\n });\r\n api.on.editInspectorState(payload => {\r\n if (payload.app === app &&\r\n payload.inspectorId === \"vue-i18n-resource-inspector\" /* CUSTOM_INSPECTOR */) {\r\n editScope(payload, i18n);\r\n }\r\n });\r\n api.addTimelineLayer({\r\n id: \"vue-i18n-timeline\" /* TIMELINE */,\r\n label: VueDevToolsLabels[\"vue-i18n-timeline\" /* TIMELINE */],\r\n color: VueDevToolsTimelineColors[\"vue-i18n-timeline\" /* TIMELINE */]\r\n });\r\n resolve(true);\r\n });\r\n }\r\n catch (e) {\r\n console.error(e);\r\n reject(false);\r\n }\r\n });\r\n}\r\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\r\nfunction getI18nScopeLable(instance) {\r\n return (instance.type.name ||\r\n instance.type.displayName ||\r\n instance.type.__file ||\r\n 'Anonymous');\r\n}\r\nfunction updateComponentTreeTags(instance, // eslint-disable-line @typescript-eslint/no-explicit-any\r\ntreeNode, i18n) {\r\n // prettier-ignore\r\n const global = i18n.mode === 'composition'\r\n ? i18n.global\r\n : i18n.global.__composer;\r\n if (instance && instance.vnode.el && instance.vnode.el.__VUE_I18N__) {\r\n // add custom tags local scope only\r\n if (instance.vnode.el.__VUE_I18N__ !== global) {\r\n const tag = {\r\n label: `i18n (${getI18nScopeLable(instance)} Scope)`,\r\n textColor: 0x000000,\r\n backgroundColor: 0xffcd19\r\n };\r\n treeNode.tags.push(tag);\r\n }\r\n }\r\n}\r\nfunction inspectComposer(instanceData, composer) {\r\n const type = VUE_I18N_COMPONENT_TYPES;\r\n instanceData.state.push({\r\n type,\r\n key: 'locale',\r\n editable: true,\r\n value: composer.locale.value\r\n });\r\n instanceData.state.push({\r\n type,\r\n key: 'availableLocales',\r\n editable: false,\r\n value: composer.availableLocales\r\n });\r\n instanceData.state.push({\r\n type,\r\n key: 'fallbackLocale',\r\n editable: true,\r\n value: composer.fallbackLocale.value\r\n });\r\n instanceData.state.push({\r\n type,\r\n key: 'inheritLocale',\r\n editable: true,\r\n value: composer.inheritLocale\r\n });\r\n instanceData.state.push({\r\n type,\r\n key: 'messages',\r\n editable: false,\r\n value: getLocaleMessageValue(composer.messages.value)\r\n });\r\n {\r\n instanceData.state.push({\r\n type,\r\n key: 'datetimeFormats',\r\n editable: false,\r\n value: composer.datetimeFormats.value\r\n });\r\n instanceData.state.push({\r\n type,\r\n key: 'numberFormats',\r\n editable: false,\r\n value: composer.numberFormats.value\r\n });\r\n }\r\n}\r\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\r\nfunction getLocaleMessageValue(messages) {\r\n const value = {};\r\n Object.keys(messages).forEach((key) => {\r\n const v = messages[key];\r\n if (isFunction(v) && 'source' in v) {\r\n value[key] = getMessageFunctionDetails(v);\r\n }\r\n else if (isObject(v)) {\r\n value[key] = getLocaleMessageValue(v);\r\n }\r\n else {\r\n value[key] = v;\r\n }\r\n });\r\n return value;\r\n}\r\nconst ESC = {\r\n '<': '<',\r\n '>': '>',\r\n '\"': '"',\r\n '&': '&'\r\n};\r\nfunction escape(s) {\r\n return s.replace(/[<>\"&]/g, escapeChar);\r\n}\r\nfunction escapeChar(a) {\r\n return ESC[a] || a;\r\n}\r\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\r\nfunction getMessageFunctionDetails(func) {\r\n const argString = func.source ? `(\"${escape(func.source)}\")` : `(?)`;\r\n return {\r\n _custom: {\r\n type: 'function',\r\n display: `ƒ ${argString}`\r\n }\r\n };\r\n}\r\nfunction registerScope(payload, i18n) {\r\n payload.rootNodes.push({\r\n id: 'global',\r\n label: 'Global Scope'\r\n });\r\n // prettier-ignore\r\n const global = i18n.mode === 'composition'\r\n ? i18n.global\r\n : i18n.global.__composer;\r\n for (const [keyInstance, instance] of i18n.__instances) {\r\n // prettier-ignore\r\n const composer = i18n.mode === 'composition'\r\n ? instance\r\n : instance.__composer;\r\n if (global === composer) {\r\n continue;\r\n }\r\n payload.rootNodes.push({\r\n id: composer.id.toString(),\r\n label: `${getI18nScopeLable(keyInstance)} Scope`\r\n });\r\n }\r\n}\r\nfunction getComponentInstance(nodeId, i18n) {\r\n let instance = null;\r\n if (nodeId !== 'global') {\r\n for (const [component, composer] of i18n.__instances.entries()) {\r\n if (composer.id.toString() === nodeId) {\r\n instance = component;\r\n break;\r\n }\r\n }\r\n }\r\n return instance;\r\n}\r\nfunction getComposer$1(nodeId, i18n) {\r\n if (nodeId === 'global') {\r\n return i18n.mode === 'composition'\r\n ? i18n.global\r\n : i18n.global.__composer;\r\n }\r\n else {\r\n const instance = Array.from(i18n.__instances.values()).find(item => item.id.toString() === nodeId);\r\n if (instance) {\r\n return i18n.mode === 'composition'\r\n ? instance\r\n : instance.__composer;\r\n }\r\n else {\r\n return null;\r\n }\r\n }\r\n}\r\nfunction inspectScope(payload, i18n\r\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\r\n) {\r\n const composer = getComposer$1(payload.nodeId, i18n);\r\n if (composer) {\r\n // TODO:\r\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\r\n payload.state = makeScopeInspectState(composer);\r\n }\r\n return null;\r\n}\r\nfunction makeScopeInspectState(composer) {\r\n const state = {};\r\n const localeType = 'Locale related info';\r\n const localeStates = [\r\n {\r\n type: localeType,\r\n key: 'locale',\r\n editable: true,\r\n value: composer.locale.value\r\n },\r\n {\r\n type: localeType,\r\n key: 'fallbackLocale',\r\n editable: true,\r\n value: composer.fallbackLocale.value\r\n },\r\n {\r\n type: localeType,\r\n key: 'availableLocales',\r\n editable: false,\r\n value: composer.availableLocales\r\n },\r\n {\r\n type: localeType,\r\n key: 'inheritLocale',\r\n editable: true,\r\n value: composer.inheritLocale\r\n }\r\n ];\r\n state[localeType] = localeStates;\r\n const localeMessagesType = 'Locale messages info';\r\n const localeMessagesStates = [\r\n {\r\n type: localeMessagesType,\r\n key: 'messages',\r\n editable: false,\r\n value: getLocaleMessageValue(composer.messages.value)\r\n }\r\n ];\r\n state[localeMessagesType] = localeMessagesStates;\r\n {\r\n const datetimeFormatsType = 'Datetime formats info';\r\n const datetimeFormatsStates = [\r\n {\r\n type: datetimeFormatsType,\r\n key: 'datetimeFormats',\r\n editable: false,\r\n value: composer.datetimeFormats.value\r\n }\r\n ];\r\n state[datetimeFormatsType] = datetimeFormatsStates;\r\n const numberFormatsType = 'Datetime formats info';\r\n const numberFormatsStates = [\r\n {\r\n type: numberFormatsType,\r\n key: 'numberFormats',\r\n editable: false,\r\n value: composer.numberFormats.value\r\n }\r\n ];\r\n state[numberFormatsType] = numberFormatsStates;\r\n }\r\n return state;\r\n}\r\nfunction addTimelineEvent(event, payload) {\r\n if (devtoolsApi) {\r\n let groupId;\r\n if (payload && 'groupId' in payload) {\r\n groupId = payload.groupId;\r\n delete payload.groupId;\r\n }\r\n devtoolsApi.addTimelineEvent({\r\n layerId: \"vue-i18n-timeline\" /* TIMELINE */,\r\n event: {\r\n title: event,\r\n groupId,\r\n time: Date.now(),\r\n meta: {},\r\n data: payload || {},\r\n logType: event === \"compile-error\" /* COMPILE_ERROR */\r\n ? 'error'\r\n : event === \"fallback\" /* FALBACK */ ||\r\n event === \"missing\" /* MISSING */\r\n ? 'warning'\r\n : 'default'\r\n }\r\n });\r\n }\r\n}\r\nfunction editScope(payload, i18n) {\r\n const composer = getComposer$1(payload.nodeId, i18n);\r\n if (composer) {\r\n const [field] = payload.path;\r\n if (field === 'locale' && isString(payload.state.value)) {\r\n composer.locale.value = payload.state.value;\r\n }\r\n else if (field === 'fallbackLocale' &&\r\n (isString(payload.state.value) ||\r\n isArray(payload.state.value) ||\r\n isObject(payload.state.value))) {\r\n composer.fallbackLocale.value = payload.state.value;\r\n }\r\n else if (field === 'inheritLocale' && isBoolean(payload.state.value)) {\r\n composer.inheritLocale = payload.state.value;\r\n }\r\n }\r\n}\n\n/**\r\n * Supports compatibility for legacy vue-i18n APIs\r\n * This mixin is used when we use vue-i18n@v9.x or later\r\n */\r\nfunction defineMixin(vuei18n, composer, i18n) {\r\n return {\r\n beforeCreate() {\r\n const instance = getCurrentInstance();\r\n /* istanbul ignore if */\r\n if (!instance) {\r\n throw createI18nError(I18nErrorCodes.UNEXPECTED_ERROR);\r\n }\r\n const options = this.$options;\r\n if (options.i18n) {\r\n const optionsI18n = options.i18n;\r\n if (options.__i18n) {\r\n optionsI18n.__i18n = options.__i18n;\r\n }\r\n optionsI18n.__root = composer;\r\n if (this === this.$root) {\r\n this.$i18n = mergeToRoot(vuei18n, optionsI18n);\r\n }\r\n else {\r\n optionsI18n.__injectWithOption = true;\r\n this.$i18n = createVueI18n(optionsI18n);\r\n }\r\n }\r\n else if (options.__i18n) {\r\n if (this === this.$root) {\r\n this.$i18n = mergeToRoot(vuei18n, options);\r\n }\r\n else {\r\n this.$i18n = createVueI18n({\r\n __i18n: options.__i18n,\r\n __injectWithOption: true,\r\n __root: composer\r\n });\r\n }\r\n }\r\n else {\r\n // set global\r\n this.$i18n = vuei18n;\r\n }\r\n if (options.__i18nGlobal) {\r\n adjustI18nResources(composer, options, options);\r\n }\r\n vuei18n.__onComponentInstanceCreated(this.$i18n);\r\n i18n.__setInstance(instance, this.$i18n);\r\n // defines vue-i18n legacy APIs\r\n this.$t = (...args) => this.$i18n.t(...args);\r\n this.$rt = (...args) => this.$i18n.rt(...args);\r\n this.$tc = (...args) => this.$i18n.tc(...args);\r\n this.$te = (key, locale) => this.$i18n.te(key, locale);\r\n this.$d = (...args) => this.$i18n.d(...args);\r\n this.$n = (...args) => this.$i18n.n(...args);\r\n this.$tm = (key) => this.$i18n.tm(key);\r\n },\r\n mounted() {\r\n /* istanbul ignore if */\r\n if (((process.env.NODE_ENV !== 'production') || __VUE_PROD_DEVTOOLS__) && !false) {\r\n this.$el.__VUE_I18N__ = this.$i18n.__composer;\r\n const emitter = (this.__v_emitter =\r\n createEmitter());\r\n const _vueI18n = this.$i18n;\r\n _vueI18n.__enableEmitter && _vueI18n.__enableEmitter(emitter);\r\n emitter.on('*', addTimelineEvent);\r\n }\r\n },\r\n unmounted() {\r\n const instance = getCurrentInstance();\r\n /* istanbul ignore if */\r\n if (!instance) {\r\n throw createI18nError(I18nErrorCodes.UNEXPECTED_ERROR);\r\n }\r\n nextTick(() => {\r\n /* istanbul ignore if */\r\n if (((process.env.NODE_ENV !== 'production') || __VUE_PROD_DEVTOOLS__) && !false) {\r\n if (this.__v_emitter) {\r\n this.__v_emitter.off('*', addTimelineEvent);\r\n delete this.__v_emitter;\r\n }\r\n const _vueI18n = this.$i18n;\r\n _vueI18n.__disableEmitter && _vueI18n.__disableEmitter();\r\n delete this.$el.__VUE_I18N__;\r\n }\r\n delete this.$t;\r\n delete this.$rt;\r\n delete this.$tc;\r\n delete this.$te;\r\n delete this.$d;\r\n delete this.$n;\r\n delete this.$tm;\r\n i18n.__deleteInstance(instance);\r\n delete this.$i18n;\r\n });\r\n }\r\n };\r\n}\r\nfunction mergeToRoot(root, options) {\r\n root.locale = options.locale || root.locale;\r\n root.fallbackLocale = options.fallbackLocale || root.fallbackLocale;\r\n root.missing = options.missing || root.missing;\r\n root.silentTranslationWarn =\r\n options.silentTranslationWarn || root.silentFallbackWarn;\r\n root.silentFallbackWarn =\r\n options.silentFallbackWarn || root.silentFallbackWarn;\r\n root.formatFallbackMessages =\r\n options.formatFallbackMessages || root.formatFallbackMessages;\r\n root.postTranslation = options.postTranslation || root.postTranslation;\r\n root.warnHtmlInMessage = options.warnHtmlInMessage || root.warnHtmlInMessage;\r\n root.escapeParameterHtml =\r\n options.escapeParameterHtml || root.escapeParameterHtml;\r\n root.sync = options.sync || root.sync;\r\n root.__composer[SetPluralRulesSymbol](options.pluralizationRules || root.pluralizationRules);\r\n const messages = getLocaleMessages(root.locale, {\r\n messages: options.messages,\r\n __i18n: options.__i18n\r\n });\r\n Object.keys(messages).forEach(locale => root.mergeLocaleMessage(locale, messages[locale]));\r\n if (options.datetimeFormats) {\r\n Object.keys(options.datetimeFormats).forEach(locale => root.mergeDateTimeFormat(locale, options.datetimeFormats[locale]));\r\n }\r\n if (options.numberFormats) {\r\n Object.keys(options.numberFormats).forEach(locale => root.mergeNumberFormat(locale, options.numberFormats[locale]));\r\n }\r\n return root;\r\n}\n\n/**\r\n * Injection key for {@link useI18n}\r\n *\r\n * @remarks\r\n * The global injection key for I18n instances with `useI18n`. this injection key is used in Web Components.\r\n * Specify the i18n instance created by {@link createI18n} together with `provide` function.\r\n *\r\n * @VueI18nGeneral\r\n */\r\nconst I18nInjectionKey = \r\n/* #__PURE__*/ makeSymbol('global-vue-i18n');\r\n// eslint-disable-next-line @typescript-eslint/no-explicit-any, @typescript-eslint/explicit-module-boundary-types\r\nfunction createI18n(options = {}, VueI18nLegacy) {\r\n // prettier-ignore\r\n const __legacyMode = __VUE_I18N_LEGACY_API__ && isBoolean(options.legacy)\r\n ? options.legacy\r\n : __VUE_I18N_LEGACY_API__;\r\n // prettier-ignore\r\n const __globalInjection = !!options.globalInjection\r\n ;\r\n const __instances = new Map();\r\n const __global = createGlobal(options, __legacyMode);\r\n const symbol = makeSymbol((process.env.NODE_ENV !== 'production') ? 'vue-i18n' : '');\r\n function __getInstance(component) {\r\n return __instances.get(component) || null;\r\n }\r\n function __setInstance(component, instance) {\r\n __instances.set(component, instance);\r\n }\r\n function __deleteInstance(component) {\r\n __instances.delete(component);\r\n }\r\n {\r\n const i18n = {\r\n // mode\r\n get mode() {\r\n return __VUE_I18N_LEGACY_API__ && __legacyMode\r\n ? 'legacy'\r\n : 'composition';\r\n },\r\n // install plugin\r\n async install(app, ...options) {\r\n if (((process.env.NODE_ENV !== 'production') || __VUE_PROD_DEVTOOLS__) &&\r\n !false) {\r\n app.__VUE_I18N__ = i18n;\r\n }\r\n // setup global provider\r\n app.__VUE_I18N_SYMBOL__ = symbol;\r\n app.provide(app.__VUE_I18N_SYMBOL__, i18n);\r\n // global method and properties injection for Composition API\r\n if (!__legacyMode && __globalInjection) {\r\n injectGlobalFields(app, i18n.global);\r\n }\r\n // install built-in components and directive\r\n if (__VUE_I18N_FULL_INSTALL__) {\r\n apply(app, i18n, ...options);\r\n }\r\n // setup mixin for Legacy API\r\n if (__VUE_I18N_LEGACY_API__ && __legacyMode) {\r\n app.mixin(defineMixin(__global, __global.__composer, i18n));\r\n }\r\n // setup vue-devtools plugin\r\n if (((process.env.NODE_ENV !== 'production') || __VUE_PROD_DEVTOOLS__) && !false) {\r\n const ret = await enableDevTools(app, i18n);\r\n if (!ret) {\r\n throw createI18nError(I18nErrorCodes.CANNOT_SETUP_VUE_DEVTOOLS_PLUGIN);\r\n }\r\n const emitter = createEmitter();\r\n if (__legacyMode) {\r\n const _vueI18n = __global;\r\n _vueI18n.__enableEmitter && _vueI18n.__enableEmitter(emitter);\r\n }\r\n else {\r\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\r\n const _composer = __global;\r\n _composer[EnableEmitter] && _composer[EnableEmitter](emitter);\r\n }\r\n emitter.on('*', addTimelineEvent);\r\n }\r\n },\r\n // global accessor\r\n get global() {\r\n return __global;\r\n },\r\n // @internal\r\n __instances,\r\n // @internal\r\n __getInstance,\r\n // @internal\r\n __setInstance,\r\n // @internal\r\n __deleteInstance\r\n };\r\n return i18n;\r\n }\r\n}\r\n// eslint-disable-next-line @typescript-eslint/explicit-module-boundary-types\r\nfunction useI18n(options = {}) {\r\n const instance = getCurrentInstance();\r\n if (instance == null) {\r\n throw createI18nError(I18nErrorCodes.MUST_BE_CALL_SETUP_TOP);\r\n }\r\n if (!instance.isCE &&\r\n instance.appContext.app != null &&\r\n !instance.appContext.app.__VUE_I18N_SYMBOL__) {\r\n throw createI18nError(I18nErrorCodes.NOT_INSLALLED);\r\n }\r\n const i18n = getI18nInstance(instance);\r\n const global = getGlobalComposer(i18n);\r\n const componentOptions = getComponentOptions(instance);\r\n const scope = getScope(options, componentOptions);\r\n if (scope === 'global') {\r\n adjustI18nResources(global, options, componentOptions);\r\n return global;\r\n }\r\n if (scope === 'parent') {\r\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\r\n let composer = getComposer(i18n, instance, options.__useComponent);\r\n if (composer == null) {\r\n if ((process.env.NODE_ENV !== 'production')) {\r\n warn(getWarnMessage(I18nWarnCodes.NOT_FOUND_PARENT_SCOPE));\r\n }\r\n composer = global;\r\n }\r\n return composer;\r\n }\r\n // scope 'local' case\r\n if (i18n.mode === 'legacy') {\r\n throw createI18nError(I18nErrorCodes.NOT_AVAILABLE_IN_LEGACY_MODE);\r\n }\r\n const i18nInternal = i18n;\r\n let composer = i18nInternal.__getInstance(instance);\r\n if (composer == null) {\r\n const composerOptions = assign({}, options);\r\n if ('__i18n' in componentOptions) {\r\n composerOptions.__i18n = componentOptions.__i18n;\r\n }\r\n if (global) {\r\n composerOptions.__root = global;\r\n }\r\n composer = createComposer(composerOptions);\r\n setupLifeCycle(i18nInternal, instance, composer);\r\n i18nInternal.__setInstance(instance, composer);\r\n }\r\n return composer;\r\n}\r\nfunction createGlobal(options, legacyMode, VueI18nLegacy // eslint-disable-line @typescript-eslint/no-explicit-any\r\n) {\r\n {\r\n return __VUE_I18N_LEGACY_API__ && legacyMode\r\n ? createVueI18n(options)\r\n : createComposer(options);\r\n }\r\n}\r\nfunction getI18nInstance(instance) {\r\n {\r\n const i18n = inject(!instance.isCE\r\n ? instance.appContext.app.__VUE_I18N_SYMBOL__\r\n : I18nInjectionKey);\r\n /* istanbul ignore if */\r\n if (!i18n) {\r\n throw createI18nError(!instance.isCE\r\n ? I18nErrorCodes.UNEXPECTED_ERROR\r\n : I18nErrorCodes.NOT_INSLALLED_WITH_PROVIDE);\r\n }\r\n return i18n;\r\n }\r\n}\r\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\r\nfunction getScope(options, componentOptions) {\r\n // prettier-ignore\r\n return isEmptyObject(options)\r\n ? ('__i18n' in componentOptions)\r\n ? 'local'\r\n : 'global'\r\n : !options.useScope\r\n ? 'local'\r\n : options.useScope;\r\n}\r\nfunction getGlobalComposer(i18n) {\r\n // prettier-ignore\r\n return i18n.mode === 'composition'\r\n ? i18n.global\r\n : i18n.global.__composer\r\n ;\r\n}\r\nfunction getComposer(i18n, target, useComponent = false) {\r\n let composer = null;\r\n const root = target.root;\r\n let current = target.parent;\r\n while (current != null) {\r\n const i18nInternal = i18n;\r\n if (i18n.mode === 'composition') {\r\n composer = i18nInternal.__getInstance(current);\r\n }\r\n else {\r\n if (__VUE_I18N_LEGACY_API__) {\r\n const vueI18n = i18nInternal.__getInstance(current);\r\n if (vueI18n != null) {\r\n composer = vueI18n\r\n .__composer;\r\n if (useComponent &&\r\n composer &&\r\n !composer[InejctWithOption] // eslint-disable-line @typescript-eslint/no-explicit-any\r\n ) {\r\n composer = null;\r\n }\r\n }\r\n }\r\n }\r\n if (composer != null) {\r\n break;\r\n }\r\n if (root === current) {\r\n break;\r\n }\r\n current = current.parent;\r\n }\r\n return composer;\r\n}\r\nfunction setupLifeCycle(i18n, target, composer) {\r\n let emitter = null;\r\n {\r\n onMounted(() => {\r\n // inject composer instance to DOM for intlify-devtools\r\n if (((process.env.NODE_ENV !== 'production') || __VUE_PROD_DEVTOOLS__) &&\r\n !false &&\r\n target.vnode.el) {\r\n target.vnode.el.__VUE_I18N__ = composer;\r\n emitter = createEmitter();\r\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\r\n const _composer = composer;\r\n _composer[EnableEmitter] && _composer[EnableEmitter](emitter);\r\n emitter.on('*', addTimelineEvent);\r\n }\r\n }, target);\r\n onUnmounted(() => {\r\n // remove composer instance from DOM for intlify-devtools\r\n if (((process.env.NODE_ENV !== 'production') || __VUE_PROD_DEVTOOLS__) &&\r\n !false &&\r\n target.vnode.el &&\r\n target.vnode.el.__VUE_I18N__) {\r\n emitter && emitter.off('*', addTimelineEvent);\r\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\r\n const _composer = composer;\r\n _composer[DisableEmitter] && _composer[DisableEmitter]();\r\n delete target.vnode.el.__VUE_I18N__;\r\n }\r\n i18n.__deleteInstance(target);\r\n }, target);\r\n }\r\n}\r\nconst globalExportProps = [\r\n 'locale',\r\n 'fallbackLocale',\r\n 'availableLocales'\r\n];\r\nconst globalExportMethods = ['t', 'rt', 'd', 'n', 'tm'] ;\r\nfunction injectGlobalFields(app, composer) {\r\n const i18n = Object.create(null);\r\n globalExportProps.forEach(prop => {\r\n const desc = Object.getOwnPropertyDescriptor(composer, prop);\r\n if (!desc) {\r\n throw createI18nError(I18nErrorCodes.UNEXPECTED_ERROR);\r\n }\r\n const wrap = isRef(desc.value) // check computed props\r\n ? {\r\n get() {\r\n return desc.value.value;\r\n },\r\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\r\n set(val) {\r\n desc.value.value = val;\r\n }\r\n }\r\n : {\r\n get() {\r\n return desc.get && desc.get();\r\n }\r\n };\r\n Object.defineProperty(i18n, prop, wrap);\r\n });\r\n app.config.globalProperties.$i18n = i18n;\r\n globalExportMethods.forEach(method => {\r\n const desc = Object.getOwnPropertyDescriptor(composer, method);\r\n if (!desc || !desc.value) {\r\n throw createI18nError(I18nErrorCodes.UNEXPECTED_ERROR);\r\n }\r\n Object.defineProperty(app.config.globalProperties, `$${method}`, desc);\r\n });\r\n}\n\n// register message resolver at vue-i18n\r\nregisterMessageResolver(resolveValue);\r\n// register fallback locale at vue-i18n\r\nregisterLocaleFallbacker(fallbackWithLocaleChain);\r\n{\r\n initFeatureFlags();\r\n}\r\n// NOTE: experimental !!\r\nif ((process.env.NODE_ENV !== 'production') || __INTLIFY_PROD_DEVTOOLS__) {\r\n const target = getGlobalThis();\r\n target.__INTLIFY__ = true;\r\n setDevToolsHook(target.__INTLIFY_DEVTOOLS_GLOBAL_HOOK__);\r\n}\r\nif ((process.env.NODE_ENV !== 'production')) ;\n\nexport { DatetimeFormat, I18nInjectionKey, NumberFormat, Translation, VERSION, createI18n, useI18n, vTDirective };\n","import { getTarget, getDevtoolsGlobalHook, isProxyAvailable } from './env';\nimport { HOOK_SETUP } from './const';\nimport { ApiProxy } from './proxy';\nexport * from './api';\nexport * from './plugin';\nexport function setupDevtoolsPlugin(pluginDescriptor, setupFn) {\n const target = getTarget();\n const hook = getDevtoolsGlobalHook();\n const enableProxy = isProxyAvailable && pluginDescriptor.enableEarlyProxy;\n if (hook && (target.__VUE_DEVTOOLS_PLUGIN_API_AVAILABLE__ || !enableProxy)) {\n hook.emit(HOOK_SETUP, pluginDescriptor, setupFn);\n }\n else {\n const proxy = enableProxy ? new ApiProxy(pluginDescriptor, hook) : null;\n const list = target.__VUE_DEVTOOLS_PLUGINS__ = target.__VUE_DEVTOOLS_PLUGINS__ || [];\n list.push({\n pluginDescriptor,\n setupFn,\n proxy\n });\n if (proxy)\n setupFn(proxy.proxiedTarget);\n }\n}\n","/*!\n * vue-router v4.0.12\n * (c) 2021 Eduardo San Martin Morote\n * @license MIT\n */\nimport { getCurrentInstance, inject, onUnmounted, onDeactivated, onActivated, computed, unref, watchEffect, defineComponent, reactive, h, provide, ref, watch, shallowRef, nextTick } from 'vue';\nimport { setupDevtoolsPlugin } from '@vue/devtools-api';\n\nconst hasSymbol = typeof Symbol === 'function' && typeof Symbol.toStringTag === 'symbol';\r\nconst PolySymbol = (name) => \r\n// vr = vue router\r\nhasSymbol\r\n ? Symbol((process.env.NODE_ENV !== 'production') ? '[vue-router]: ' + name : name)\r\n : ((process.env.NODE_ENV !== 'production') ? '[vue-router]: ' : '_vr_') + name;\r\n// rvlm = Router View Location Matched\r\n/**\r\n * RouteRecord being rendered by the closest ancestor Router View. Used for\r\n * `onBeforeRouteUpdate` and `onBeforeRouteLeave`. rvlm stands for Router View\r\n * Location Matched\r\n *\r\n * @internal\r\n */\r\nconst matchedRouteKey = /*#__PURE__*/ PolySymbol((process.env.NODE_ENV !== 'production') ? 'router view location matched' : 'rvlm');\r\n/**\r\n * Allows overriding the router view depth to control which component in\r\n * `matched` is rendered. rvd stands for Router View Depth\r\n *\r\n * @internal\r\n */\r\nconst viewDepthKey = /*#__PURE__*/ PolySymbol((process.env.NODE_ENV !== 'production') ? 'router view depth' : 'rvd');\r\n/**\r\n * Allows overriding the router instance returned by `useRouter` in tests. r\r\n * stands for router\r\n *\r\n * @internal\r\n */\r\nconst routerKey = /*#__PURE__*/ PolySymbol((process.env.NODE_ENV !== 'production') ? 'router' : 'r');\r\n/**\r\n * Allows overriding the current route returned by `useRoute` in tests. rl\r\n * stands for route location\r\n *\r\n * @internal\r\n */\r\nconst routeLocationKey = /*#__PURE__*/ PolySymbol((process.env.NODE_ENV !== 'production') ? 'route location' : 'rl');\r\n/**\r\n * Allows overriding the current route used by router-view. Internally this is\r\n * used when the `route` prop is passed.\r\n *\r\n * @internal\r\n */\r\nconst routerViewLocationKey = /*#__PURE__*/ PolySymbol((process.env.NODE_ENV !== 'production') ? 'router view location' : 'rvl');\n\nconst isBrowser = typeof window !== 'undefined';\n\nfunction isESModule(obj) {\r\n return obj.__esModule || (hasSymbol && obj[Symbol.toStringTag] === 'Module');\r\n}\r\nconst assign = Object.assign;\r\nfunction applyToParams(fn, params) {\r\n const newParams = {};\r\n for (const key in params) {\r\n const value = params[key];\r\n newParams[key] = Array.isArray(value) ? value.map(fn) : fn(value);\r\n }\r\n return newParams;\r\n}\r\nconst noop = () => { };\n\nfunction warn(msg) {\r\n // avoid using ...args as it breaks in older Edge builds\r\n const args = Array.from(arguments).slice(1);\r\n console.warn.apply(console, ['[Vue Router warn]: ' + msg].concat(args));\r\n}\n\nconst TRAILING_SLASH_RE = /\\/$/;\r\nconst removeTrailingSlash = (path) => path.replace(TRAILING_SLASH_RE, '');\r\n/**\r\n * Transforms an URI into a normalized history location\r\n *\r\n * @param parseQuery\r\n * @param location - URI to normalize\r\n * @param currentLocation - current absolute location. Allows resolving relative\r\n * paths. Must start with `/`. Defaults to `/`\r\n * @returns a normalized history location\r\n */\r\nfunction parseURL(parseQuery, location, currentLocation = '/') {\r\n let path, query = {}, searchString = '', hash = '';\r\n // Could use URL and URLSearchParams but IE 11 doesn't support it\r\n const searchPos = location.indexOf('?');\r\n const hashPos = location.indexOf('#', searchPos > -1 ? searchPos : 0);\r\n if (searchPos > -1) {\r\n path = location.slice(0, searchPos);\r\n searchString = location.slice(searchPos + 1, hashPos > -1 ? hashPos : location.length);\r\n query = parseQuery(searchString);\r\n }\r\n if (hashPos > -1) {\r\n path = path || location.slice(0, hashPos);\r\n // keep the # character\r\n hash = location.slice(hashPos, location.length);\r\n }\r\n // no search and no query\r\n path = resolveRelativePath(path != null ? path : location, currentLocation);\r\n // empty path means a relative query or hash `?foo=f`, `#thing`\r\n return {\r\n fullPath: path + (searchString && '?') + searchString + hash,\r\n path,\r\n query,\r\n hash,\r\n };\r\n}\r\n/**\r\n * Stringifies a URL object\r\n *\r\n * @param stringifyQuery\r\n * @param location\r\n */\r\nfunction stringifyURL(stringifyQuery, location) {\r\n const query = location.query ? stringifyQuery(location.query) : '';\r\n return location.path + (query && '?') + query + (location.hash || '');\r\n}\r\n/**\r\n * Strips off the base from the beginning of a location.pathname in a non\r\n * case-sensitive way.\r\n *\r\n * @param pathname - location.pathname\r\n * @param base - base to strip off\r\n */\r\nfunction stripBase(pathname, base) {\r\n // no base or base is not found at the beginning\r\n if (!base || !pathname.toLowerCase().startsWith(base.toLowerCase()))\r\n return pathname;\r\n return pathname.slice(base.length) || '/';\r\n}\r\n/**\r\n * Checks if two RouteLocation are equal. This means that both locations are\r\n * pointing towards the same {@link RouteRecord} and that all `params`, `query`\r\n * parameters and `hash` are the same\r\n *\r\n * @param a - first {@link RouteLocation}\r\n * @param b - second {@link RouteLocation}\r\n */\r\nfunction isSameRouteLocation(stringifyQuery, a, b) {\r\n const aLastIndex = a.matched.length - 1;\r\n const bLastIndex = b.matched.length - 1;\r\n return (aLastIndex > -1 &&\r\n aLastIndex === bLastIndex &&\r\n isSameRouteRecord(a.matched[aLastIndex], b.matched[bLastIndex]) &&\r\n isSameRouteLocationParams(a.params, b.params) &&\r\n stringifyQuery(a.query) === stringifyQuery(b.query) &&\r\n a.hash === b.hash);\r\n}\r\n/**\r\n * Check if two `RouteRecords` are equal. Takes into account aliases: they are\r\n * considered equal to the `RouteRecord` they are aliasing.\r\n *\r\n * @param a - first {@link RouteRecord}\r\n * @param b - second {@link RouteRecord}\r\n */\r\nfunction isSameRouteRecord(a, b) {\r\n // since the original record has an undefined value for aliasOf\r\n // but all aliases point to the original record, this will always compare\r\n // the original record\r\n return (a.aliasOf || a) === (b.aliasOf || b);\r\n}\r\nfunction isSameRouteLocationParams(a, b) {\r\n if (Object.keys(a).length !== Object.keys(b).length)\r\n return false;\r\n for (const key in a) {\r\n if (!isSameRouteLocationParamsValue(a[key], b[key]))\r\n return false;\r\n }\r\n return true;\r\n}\r\nfunction isSameRouteLocationParamsValue(a, b) {\r\n return Array.isArray(a)\r\n ? isEquivalentArray(a, b)\r\n : Array.isArray(b)\r\n ? isEquivalentArray(b, a)\r\n : a === b;\r\n}\r\n/**\r\n * Check if two arrays are the same or if an array with one single entry is the\r\n * same as another primitive value. Used to check query and parameters\r\n *\r\n * @param a - array of values\r\n * @param b - array of values or a single value\r\n */\r\nfunction isEquivalentArray(a, b) {\r\n return Array.isArray(b)\r\n ? a.length === b.length && a.every((value, i) => value === b[i])\r\n : a.length === 1 && a[0] === b;\r\n}\r\n/**\r\n * Resolves a relative path that starts with `.`.\r\n *\r\n * @param to - path location we are resolving\r\n * @param from - currentLocation.path, should start with `/`\r\n */\r\nfunction resolveRelativePath(to, from) {\r\n if (to.startsWith('/'))\r\n return to;\r\n if ((process.env.NODE_ENV !== 'production') && !from.startsWith('/')) {\r\n warn(`Cannot resolve a relative location without an absolute path. Trying to resolve \"${to}\" from \"${from}\". It should look like \"/${from}\".`);\r\n return to;\r\n }\r\n if (!to)\r\n return from;\r\n const fromSegments = from.split('/');\r\n const toSegments = to.split('/');\r\n let position = fromSegments.length - 1;\r\n let toPosition;\r\n let segment;\r\n for (toPosition = 0; toPosition < toSegments.length; toPosition++) {\r\n segment = toSegments[toPosition];\r\n // can't go below zero\r\n if (position === 1 || segment === '.')\r\n continue;\r\n if (segment === '..')\r\n position--;\r\n // found something that is not relative path\r\n else\r\n break;\r\n }\r\n return (fromSegments.slice(0, position).join('/') +\r\n '/' +\r\n toSegments\r\n .slice(toPosition - (toPosition === toSegments.length ? 1 : 0))\r\n .join('/'));\r\n}\n\nvar NavigationType;\r\n(function (NavigationType) {\r\n NavigationType[\"pop\"] = \"pop\";\r\n NavigationType[\"push\"] = \"push\";\r\n})(NavigationType || (NavigationType = {}));\r\nvar NavigationDirection;\r\n(function (NavigationDirection) {\r\n NavigationDirection[\"back\"] = \"back\";\r\n NavigationDirection[\"forward\"] = \"forward\";\r\n NavigationDirection[\"unknown\"] = \"\";\r\n})(NavigationDirection || (NavigationDirection = {}));\r\n/**\r\n * Starting location for Histories\r\n */\r\nconst START = '';\r\n// Generic utils\r\n/**\r\n * Normalizes a base by removing any trailing slash and reading the base tag if\r\n * present.\r\n *\r\n * @param base - base to normalize\r\n */\r\nfunction normalizeBase(base) {\r\n if (!base) {\r\n if (isBrowser) {\r\n // respect tag\r\n const baseEl = document.querySelector('base');\r\n base = (baseEl && baseEl.getAttribute('href')) || '/';\r\n // strip full URL origin\r\n base = base.replace(/^\\w+:\\/\\/[^\\/]+/, '');\r\n }\r\n else {\r\n base = '/';\r\n }\r\n }\r\n // ensure leading slash when it was removed by the regex above avoid leading\r\n // slash with hash because the file could be read from the disk like file://\r\n // and the leading slash would cause problems\r\n if (base[0] !== '/' && base[0] !== '#')\r\n base = '/' + base;\r\n // remove the trailing slash so all other method can just do `base + fullPath`\r\n // to build an href\r\n return removeTrailingSlash(base);\r\n}\r\n// remove any character before the hash\r\nconst BEFORE_HASH_RE = /^[^#]+#/;\r\nfunction createHref(base, location) {\r\n return base.replace(BEFORE_HASH_RE, '#') + location;\r\n}\n\nfunction getElementPosition(el, offset) {\r\n const docRect = document.documentElement.getBoundingClientRect();\r\n const elRect = el.getBoundingClientRect();\r\n return {\r\n behavior: offset.behavior,\r\n left: elRect.left - docRect.left - (offset.left || 0),\r\n top: elRect.top - docRect.top - (offset.top || 0),\r\n };\r\n}\r\nconst computeScrollPosition = () => ({\r\n left: window.pageXOffset,\r\n top: window.pageYOffset,\r\n});\r\nfunction scrollToPosition(position) {\r\n let scrollToOptions;\r\n if ('el' in position) {\r\n const positionEl = position.el;\r\n const isIdSelector = typeof positionEl === 'string' && positionEl.startsWith('#');\r\n /**\r\n * `id`s can accept pretty much any characters, including CSS combinators\r\n * like `>` or `~`. It's still possible to retrieve elements using\r\n * `document.getElementById('~')` but it needs to be escaped when using\r\n * `document.querySelector('#\\\\~')` for it to be valid. The only\r\n * requirements for `id`s are them to be unique on the page and to not be\r\n * empty (`id=\"\"`). Because of that, when passing an id selector, it should\r\n * be properly escaped for it to work with `querySelector`. We could check\r\n * for the id selector to be simple (no CSS combinators `+ >~`) but that\r\n * would make things inconsistent since they are valid characters for an\r\n * `id` but would need to be escaped when using `querySelector`, breaking\r\n * their usage and ending up in no selector returned. Selectors need to be\r\n * escaped:\r\n *\r\n * - `#1-thing` becomes `#\\31 -thing`\r\n * - `#with~symbols` becomes `#with\\\\~symbols`\r\n *\r\n * - More information about the topic can be found at\r\n * https://mathiasbynens.be/notes/html5-id-class.\r\n * - Practical example: https://mathiasbynens.be/demo/html5-id\r\n */\r\n if ((process.env.NODE_ENV !== 'production') && typeof position.el === 'string') {\r\n if (!isIdSelector || !document.getElementById(position.el.slice(1))) {\r\n try {\r\n const foundEl = document.querySelector(position.el);\r\n if (isIdSelector && foundEl) {\r\n warn(`The selector \"${position.el}\" should be passed as \"el: document.querySelector('${position.el}')\" because it starts with \"#\".`);\r\n // return to avoid other warnings\r\n return;\r\n }\r\n }\r\n catch (err) {\r\n warn(`The selector \"${position.el}\" is invalid. If you are using an id selector, make sure to escape it. You can find more information about escaping characters in selectors at https://mathiasbynens.be/notes/css-escapes or use CSS.escape (https://developer.mozilla.org/en-US/docs/Web/API/CSS/escape).`);\r\n // return to avoid other warnings\r\n return;\r\n }\r\n }\r\n }\r\n const el = typeof positionEl === 'string'\r\n ? isIdSelector\r\n ? document.getElementById(positionEl.slice(1))\r\n : document.querySelector(positionEl)\r\n : positionEl;\r\n if (!el) {\r\n (process.env.NODE_ENV !== 'production') &&\r\n warn(`Couldn't find element using selector \"${position.el}\" returned by scrollBehavior.`);\r\n return;\r\n }\r\n scrollToOptions = getElementPosition(el, position);\r\n }\r\n else {\r\n scrollToOptions = position;\r\n }\r\n if ('scrollBehavior' in document.documentElement.style)\r\n window.scrollTo(scrollToOptions);\r\n else {\r\n window.scrollTo(scrollToOptions.left != null ? scrollToOptions.left : window.pageXOffset, scrollToOptions.top != null ? scrollToOptions.top : window.pageYOffset);\r\n }\r\n}\r\nfunction getScrollKey(path, delta) {\r\n const position = history.state ? history.state.position - delta : -1;\r\n return position + path;\r\n}\r\nconst scrollPositions = new Map();\r\nfunction saveScrollPosition(key, scrollPosition) {\r\n scrollPositions.set(key, scrollPosition);\r\n}\r\nfunction getSavedScrollPosition(key) {\r\n const scroll = scrollPositions.get(key);\r\n // consume it so it's not used again\r\n scrollPositions.delete(key);\r\n return scroll;\r\n}\r\n// TODO: RFC about how to save scroll position\r\n/**\r\n * ScrollBehavior instance used by the router to compute and restore the scroll\r\n * position when navigating.\r\n */\r\n// export interface ScrollHandler {\r\n// // returns a scroll position that can be saved in history\r\n// compute(): ScrollPositionEntry\r\n// // can take an extended ScrollPositionEntry\r\n// scroll(position: ScrollPosition): void\r\n// }\r\n// export const scrollHandler: ScrollHandler = {\r\n// compute: computeScroll,\r\n// scroll: scrollToPosition,\r\n// }\n\nlet createBaseLocation = () => location.protocol + '//' + location.host;\r\n/**\r\n * Creates a normalized history location from a window.location object\r\n * @param location -\r\n */\r\nfunction createCurrentLocation(base, location) {\r\n const { pathname, search, hash } = location;\r\n // allows hash bases like #, /#, #/, #!, #!/, /#!/, or even /folder#end\r\n const hashPos = base.indexOf('#');\r\n if (hashPos > -1) {\r\n let slicePos = hash.includes(base.slice(hashPos))\r\n ? base.slice(hashPos).length\r\n : 1;\r\n let pathFromHash = hash.slice(slicePos);\r\n // prepend the starting slash to hash so the url starts with /#\r\n if (pathFromHash[0] !== '/')\r\n pathFromHash = '/' + pathFromHash;\r\n return stripBase(pathFromHash, '');\r\n }\r\n const path = stripBase(pathname, base);\r\n return path + search + hash;\r\n}\r\nfunction useHistoryListeners(base, historyState, currentLocation, replace) {\r\n let listeners = [];\r\n let teardowns = [];\r\n // TODO: should it be a stack? a Dict. Check if the popstate listener\r\n // can trigger twice\r\n let pauseState = null;\r\n const popStateHandler = ({ state, }) => {\r\n const to = createCurrentLocation(base, location);\r\n const from = currentLocation.value;\r\n const fromState = historyState.value;\r\n let delta = 0;\r\n if (state) {\r\n currentLocation.value = to;\r\n historyState.value = state;\r\n // ignore the popstate and reset the pauseState\r\n if (pauseState && pauseState === from) {\r\n pauseState = null;\r\n return;\r\n }\r\n delta = fromState ? state.position - fromState.position : 0;\r\n }\r\n else {\r\n replace(to);\r\n }\r\n // console.log({ deltaFromCurrent })\r\n // Here we could also revert the navigation by calling history.go(-delta)\r\n // this listener will have to be adapted to not trigger again and to wait for the url\r\n // to be updated before triggering the listeners. Some kind of validation function would also\r\n // need to be passed to the listeners so the navigation can be accepted\r\n // call all listeners\r\n listeners.forEach(listener => {\r\n listener(currentLocation.value, from, {\r\n delta,\r\n type: NavigationType.pop,\r\n direction: delta\r\n ? delta > 0\r\n ? NavigationDirection.forward\r\n : NavigationDirection.back\r\n : NavigationDirection.unknown,\r\n });\r\n });\r\n };\r\n function pauseListeners() {\r\n pauseState = currentLocation.value;\r\n }\r\n function listen(callback) {\r\n // setup the listener and prepare teardown callbacks\r\n listeners.push(callback);\r\n const teardown = () => {\r\n const index = listeners.indexOf(callback);\r\n if (index > -1)\r\n listeners.splice(index, 1);\r\n };\r\n teardowns.push(teardown);\r\n return teardown;\r\n }\r\n function beforeUnloadListener() {\r\n const { history } = window;\r\n if (!history.state)\r\n return;\r\n history.replaceState(assign({}, history.state, { scroll: computeScrollPosition() }), '');\r\n }\r\n function destroy() {\r\n for (const teardown of teardowns)\r\n teardown();\r\n teardowns = [];\r\n window.removeEventListener('popstate', popStateHandler);\r\n window.removeEventListener('beforeunload', beforeUnloadListener);\r\n }\r\n // setup the listeners and prepare teardown callbacks\r\n window.addEventListener('popstate', popStateHandler);\r\n window.addEventListener('beforeunload', beforeUnloadListener);\r\n return {\r\n pauseListeners,\r\n listen,\r\n destroy,\r\n };\r\n}\r\n/**\r\n * Creates a state object\r\n */\r\nfunction buildState(back, current, forward, replaced = false, computeScroll = false) {\r\n return {\r\n back,\r\n current,\r\n forward,\r\n replaced,\r\n position: window.history.length,\r\n scroll: computeScroll ? computeScrollPosition() : null,\r\n };\r\n}\r\nfunction useHistoryStateNavigation(base) {\r\n const { history, location } = window;\r\n // private variables\r\n const currentLocation = {\r\n value: createCurrentLocation(base, location),\r\n };\r\n const historyState = { value: history.state };\r\n // build current history entry as this is a fresh navigation\r\n if (!historyState.value) {\r\n changeLocation(currentLocation.value, {\r\n back: null,\r\n current: currentLocation.value,\r\n forward: null,\r\n // the length is off by one, we need to decrease it\r\n position: history.length - 1,\r\n replaced: true,\r\n // don't add a scroll as the user may have an anchor and we want\r\n // scrollBehavior to be triggered without a saved position\r\n scroll: null,\r\n }, true);\r\n }\r\n function changeLocation(to, state, replace) {\r\n /**\r\n * if a base tag is provided and we are on a normal domain, we have to\r\n * respect the provided `base` attribute because pushState() will use it and\r\n * potentially erase anything before the `#` like at\r\n * https://github.com/vuejs/vue-router-next/issues/685 where a base of\r\n * `/folder/#` but a base of `/` would erase the `/folder/` section. If\r\n * there is no host, the `` tag makes no sense and if there isn't a\r\n * base tag we can just use everything after the `#`.\r\n */\r\n const hashIndex = base.indexOf('#');\r\n const url = hashIndex > -1\r\n ? (location.host && document.querySelector('base')\r\n ? base\r\n : base.slice(hashIndex)) + to\r\n : createBaseLocation() + base + to;\r\n try {\r\n // BROWSER QUIRK\r\n // NOTE: Safari throws a SecurityError when calling this function 100 times in 30 seconds\r\n history[replace ? 'replaceState' : 'pushState'](state, '', url);\r\n historyState.value = state;\r\n }\r\n catch (err) {\r\n if ((process.env.NODE_ENV !== 'production')) {\r\n warn('Error with push/replace State', err);\r\n }\r\n else {\r\n console.error(err);\r\n }\r\n // Force the navigation, this also resets the call count\r\n location[replace ? 'replace' : 'assign'](url);\r\n }\r\n }\r\n function replace(to, data) {\r\n const state = assign({}, history.state, buildState(historyState.value.back, \r\n // keep back and forward entries but override current position\r\n to, historyState.value.forward, true), data, { position: historyState.value.position });\r\n changeLocation(to, state, true);\r\n currentLocation.value = to;\r\n }\r\n function push(to, data) {\r\n // Add to current entry the information of where we are going\r\n // as well as saving the current position\r\n const currentState = assign({}, \r\n // use current history state to gracefully handle a wrong call to\r\n // history.replaceState\r\n // https://github.com/vuejs/vue-router-next/issues/366\r\n historyState.value, history.state, {\r\n forward: to,\r\n scroll: computeScrollPosition(),\r\n });\r\n if ((process.env.NODE_ENV !== 'production') && !history.state) {\r\n warn(`history.state seems to have been manually replaced without preserving the necessary values. Make sure to preserve existing history state if you are manually calling history.replaceState:\\n\\n` +\r\n `history.replaceState(history.state, '', url)\\n\\n` +\r\n `You can find more information at https://next.router.vuejs.org/guide/migration/#usage-of-history-state.`);\r\n }\r\n changeLocation(currentState.current, currentState, true);\r\n const state = assign({}, buildState(currentLocation.value, to, null), { position: currentState.position + 1 }, data);\r\n changeLocation(to, state, false);\r\n currentLocation.value = to;\r\n }\r\n return {\r\n location: currentLocation,\r\n state: historyState,\r\n push,\r\n replace,\r\n };\r\n}\r\n/**\r\n * Creates an HTML5 history. Most common history for single page applications.\r\n *\r\n * @param base -\r\n */\r\nfunction createWebHistory(base) {\r\n base = normalizeBase(base);\r\n const historyNavigation = useHistoryStateNavigation(base);\r\n const historyListeners = useHistoryListeners(base, historyNavigation.state, historyNavigation.location, historyNavigation.replace);\r\n function go(delta, triggerListeners = true) {\r\n if (!triggerListeners)\r\n historyListeners.pauseListeners();\r\n history.go(delta);\r\n }\r\n const routerHistory = assign({\r\n // it's overridden right after\r\n location: '',\r\n base,\r\n go,\r\n createHref: createHref.bind(null, base),\r\n }, historyNavigation, historyListeners);\r\n Object.defineProperty(routerHistory, 'location', {\r\n enumerable: true,\r\n get: () => historyNavigation.location.value,\r\n });\r\n Object.defineProperty(routerHistory, 'state', {\r\n enumerable: true,\r\n get: () => historyNavigation.state.value,\r\n });\r\n return routerHistory;\r\n}\n\n/**\r\n * Creates a in-memory based history. The main purpose of this history is to handle SSR. It starts in a special location that is nowhere.\r\n * It's up to the user to replace that location with the starter location by either calling `router.push` or `router.replace`.\r\n *\r\n * @param base - Base applied to all urls, defaults to '/'\r\n * @returns a history object that can be passed to the router constructor\r\n */\r\nfunction createMemoryHistory(base = '') {\r\n let listeners = [];\r\n let queue = [START];\r\n let position = 0;\r\n base = normalizeBase(base);\r\n function setLocation(location) {\r\n position++;\r\n if (position === queue.length) {\r\n // we are at the end, we can simply append a new entry\r\n queue.push(location);\r\n }\r\n else {\r\n // we are in the middle, we remove everything from here in the queue\r\n queue.splice(position);\r\n queue.push(location);\r\n }\r\n }\r\n function triggerListeners(to, from, { direction, delta }) {\r\n const info = {\r\n direction,\r\n delta,\r\n type: NavigationType.pop,\r\n };\r\n for (const callback of listeners) {\r\n callback(to, from, info);\r\n }\r\n }\r\n const routerHistory = {\r\n // rewritten by Object.defineProperty\r\n location: START,\r\n // TODO: should be kept in queue\r\n state: {},\r\n base,\r\n createHref: createHref.bind(null, base),\r\n replace(to) {\r\n // remove current entry and decrement position\r\n queue.splice(position--, 1);\r\n setLocation(to);\r\n },\r\n push(to, data) {\r\n setLocation(to);\r\n },\r\n listen(callback) {\r\n listeners.push(callback);\r\n return () => {\r\n const index = listeners.indexOf(callback);\r\n if (index > -1)\r\n listeners.splice(index, 1);\r\n };\r\n },\r\n destroy() {\r\n listeners = [];\r\n queue = [START];\r\n position = 0;\r\n },\r\n go(delta, shouldTrigger = true) {\r\n const from = this.location;\r\n const direction = \r\n // we are considering delta === 0 going forward, but in abstract mode\r\n // using 0 for the delta doesn't make sense like it does in html5 where\r\n // it reloads the page\r\n delta < 0 ? NavigationDirection.back : NavigationDirection.forward;\r\n position = Math.max(0, Math.min(position + delta, queue.length - 1));\r\n if (shouldTrigger) {\r\n triggerListeners(this.location, from, {\r\n direction,\r\n delta,\r\n });\r\n }\r\n },\r\n };\r\n Object.defineProperty(routerHistory, 'location', {\r\n enumerable: true,\r\n get: () => queue[position],\r\n });\r\n return routerHistory;\r\n}\n\n/**\r\n * Creates a hash history. Useful for web applications with no host (e.g.\r\n * `file://`) or when configuring a server to handle any URL is not possible.\r\n *\r\n * @param base - optional base to provide. Defaults to `location.pathname +\r\n * location.search` If there is a `` tag in the `head`, its value will be\r\n * ignored in favor of this parameter **but note it affects all the\r\n * history.pushState() calls**, meaning that if you use a `` tag, it's\r\n * `href` value **has to match this parameter** (ignoring anything after the\r\n * `#`).\r\n *\r\n * @example\r\n * ```js\r\n * // at https://example.com/folder\r\n * createWebHashHistory() // gives a url of `https://example.com/folder#`\r\n * createWebHashHistory('/folder/') // gives a url of `https://example.com/folder/#`\r\n * // if the `#` is provided in the base, it won't be added by `createWebHashHistory`\r\n * createWebHashHistory('/folder/#/app/') // gives a url of `https://example.com/folder/#/app/`\r\n * // you should avoid doing this because it changes the original url and breaks copying urls\r\n * createWebHashHistory('/other-folder/') // gives a url of `https://example.com/other-folder/#`\r\n *\r\n * // at file:///usr/etc/folder/index.html\r\n * // for locations with no `host`, the base is ignored\r\n * createWebHashHistory('/iAmIgnored') // gives a url of `file:///usr/etc/folder/index.html#`\r\n * ```\r\n */\r\nfunction createWebHashHistory(base) {\r\n // Make sure this implementation is fine in terms of encoding, specially for IE11\r\n // for `file://`, directly use the pathname and ignore the base\r\n // location.pathname contains an initial `/` even at the root: `https://example.com`\r\n base = location.host ? base || location.pathname + location.search : '';\r\n // allow the user to provide a `#` in the middle: `/base/#/app`\r\n if (!base.includes('#'))\r\n base += '#';\r\n if ((process.env.NODE_ENV !== 'production') && !base.endsWith('#/') && !base.endsWith('#')) {\r\n warn(`A hash base must end with a \"#\":\\n\"${base}\" should be \"${base.replace(/#.*$/, '#')}\".`);\r\n }\r\n return createWebHistory(base);\r\n}\n\nfunction isRouteLocation(route) {\r\n return typeof route === 'string' || (route && typeof route === 'object');\r\n}\r\nfunction isRouteName(name) {\r\n return typeof name === 'string' || typeof name === 'symbol';\r\n}\n\n/**\r\n * Initial route location where the router is. Can be used in navigation guards\r\n * to differentiate the initial navigation.\r\n *\r\n * @example\r\n * ```js\r\n * import { START_LOCATION } from 'vue-router'\r\n *\r\n * router.beforeEach((to, from) => {\r\n * if (from === START_LOCATION) {\r\n * // initial navigation\r\n * }\r\n * })\r\n * ```\r\n */\r\nconst START_LOCATION_NORMALIZED = {\r\n path: '/',\r\n name: undefined,\r\n params: {},\r\n query: {},\r\n hash: '',\r\n fullPath: '/',\r\n matched: [],\r\n meta: {},\r\n redirectedFrom: undefined,\r\n};\n\nconst NavigationFailureSymbol = /*#__PURE__*/ PolySymbol((process.env.NODE_ENV !== 'production') ? 'navigation failure' : 'nf');\r\n/**\r\n * Enumeration with all possible types for navigation failures. Can be passed to\r\n * {@link isNavigationFailure} to check for specific failures.\r\n */\r\nvar NavigationFailureType;\r\n(function (NavigationFailureType) {\r\n /**\r\n * An aborted navigation is a navigation that failed because a navigation\r\n * guard returned `false` or called `next(false)`\r\n */\r\n NavigationFailureType[NavigationFailureType[\"aborted\"] = 4] = \"aborted\";\r\n /**\r\n * A cancelled navigation is a navigation that failed because a more recent\r\n * navigation finished started (not necessarily finished).\r\n */\r\n NavigationFailureType[NavigationFailureType[\"cancelled\"] = 8] = \"cancelled\";\r\n /**\r\n * A duplicated navigation is a navigation that failed because it was\r\n * initiated while already being at the exact same location.\r\n */\r\n NavigationFailureType[NavigationFailureType[\"duplicated\"] = 16] = \"duplicated\";\r\n})(NavigationFailureType || (NavigationFailureType = {}));\r\n// DEV only debug messages\r\nconst ErrorTypeMessages = {\r\n [1 /* MATCHER_NOT_FOUND */]({ location, currentLocation }) {\r\n return `No match for\\n ${JSON.stringify(location)}${currentLocation\r\n ? '\\nwhile being at\\n' + JSON.stringify(currentLocation)\r\n : ''}`;\r\n },\r\n [2 /* NAVIGATION_GUARD_REDIRECT */]({ from, to, }) {\r\n return `Redirected from \"${from.fullPath}\" to \"${stringifyRoute(to)}\" via a navigation guard.`;\r\n },\r\n [4 /* NAVIGATION_ABORTED */]({ from, to }) {\r\n return `Navigation aborted from \"${from.fullPath}\" to \"${to.fullPath}\" via a navigation guard.`;\r\n },\r\n [8 /* NAVIGATION_CANCELLED */]({ from, to }) {\r\n return `Navigation cancelled from \"${from.fullPath}\" to \"${to.fullPath}\" with a new navigation.`;\r\n },\r\n [16 /* NAVIGATION_DUPLICATED */]({ from, to }) {\r\n return `Avoided redundant navigation to current location: \"${from.fullPath}\".`;\r\n },\r\n};\r\nfunction createRouterError(type, params) {\r\n // keep full error messages in cjs versions\r\n if ((process.env.NODE_ENV !== 'production') || !true) {\r\n return assign(new Error(ErrorTypeMessages[type](params)), {\r\n type,\r\n [NavigationFailureSymbol]: true,\r\n }, params);\r\n }\r\n else {\r\n return assign(new Error(), {\r\n type,\r\n [NavigationFailureSymbol]: true,\r\n }, params);\r\n }\r\n}\r\nfunction isNavigationFailure(error, type) {\r\n return (error instanceof Error &&\r\n NavigationFailureSymbol in error &&\r\n (type == null || !!(error.type & type)));\r\n}\r\nconst propertiesToLog = ['params', 'query', 'hash'];\r\nfunction stringifyRoute(to) {\r\n if (typeof to === 'string')\r\n return to;\r\n if ('path' in to)\r\n return to.path;\r\n const location = {};\r\n for (const key of propertiesToLog) {\r\n if (key in to)\r\n location[key] = to[key];\r\n }\r\n return JSON.stringify(location, null, 2);\r\n}\n\n// default pattern for a param: non greedy everything but /\r\nconst BASE_PARAM_PATTERN = '[^/]+?';\r\nconst BASE_PATH_PARSER_OPTIONS = {\r\n sensitive: false,\r\n strict: false,\r\n start: true,\r\n end: true,\r\n};\r\n// Special Regex characters that must be escaped in static tokens\r\nconst REGEX_CHARS_RE = /[.+*?^${}()[\\]/\\\\]/g;\r\n/**\r\n * Creates a path parser from an array of Segments (a segment is an array of Tokens)\r\n *\r\n * @param segments - array of segments returned by tokenizePath\r\n * @param extraOptions - optional options for the regexp\r\n * @returns a PathParser\r\n */\r\nfunction tokensToParser(segments, extraOptions) {\r\n const options = assign({}, BASE_PATH_PARSER_OPTIONS, extraOptions);\r\n // the amount of scores is the same as the length of segments except for the root segment \"/\"\r\n const score = [];\r\n // the regexp as a string\r\n let pattern = options.start ? '^' : '';\r\n // extracted keys\r\n const keys = [];\r\n for (const segment of segments) {\r\n // the root segment needs special treatment\r\n const segmentScores = segment.length ? [] : [90 /* Root */];\r\n // allow trailing slash\r\n if (options.strict && !segment.length)\r\n pattern += '/';\r\n for (let tokenIndex = 0; tokenIndex < segment.length; tokenIndex++) {\r\n const token = segment[tokenIndex];\r\n // resets the score if we are inside a sub segment /:a-other-:b\r\n let subSegmentScore = 40 /* Segment */ +\r\n (options.sensitive ? 0.25 /* BonusCaseSensitive */ : 0);\r\n if (token.type === 0 /* Static */) {\r\n // prepend the slash if we are starting a new segment\r\n if (!tokenIndex)\r\n pattern += '/';\r\n pattern += token.value.replace(REGEX_CHARS_RE, '\\\\$&');\r\n subSegmentScore += 40 /* Static */;\r\n }\r\n else if (token.type === 1 /* Param */) {\r\n const { value, repeatable, optional, regexp } = token;\r\n keys.push({\r\n name: value,\r\n repeatable,\r\n optional,\r\n });\r\n const re = regexp ? regexp : BASE_PARAM_PATTERN;\r\n // the user provided a custom regexp /:id(\\\\d+)\r\n if (re !== BASE_PARAM_PATTERN) {\r\n subSegmentScore += 10 /* BonusCustomRegExp */;\r\n // make sure the regexp is valid before using it\r\n try {\r\n new RegExp(`(${re})`);\r\n }\r\n catch (err) {\r\n throw new Error(`Invalid custom RegExp for param \"${value}\" (${re}): ` +\r\n err.message);\r\n }\r\n }\r\n // when we repeat we must take care of the repeating leading slash\r\n let subPattern = repeatable ? `((?:${re})(?:/(?:${re}))*)` : `(${re})`;\r\n // prepend the slash if we are starting a new segment\r\n if (!tokenIndex)\r\n subPattern =\r\n // avoid an optional / if there are more segments e.g. /:p?-static\r\n // or /:p?-:p2\r\n optional && segment.length < 2\r\n ? `(?:/${subPattern})`\r\n : '/' + subPattern;\r\n if (optional)\r\n subPattern += '?';\r\n pattern += subPattern;\r\n subSegmentScore += 20 /* Dynamic */;\r\n if (optional)\r\n subSegmentScore += -8 /* BonusOptional */;\r\n if (repeatable)\r\n subSegmentScore += -20 /* BonusRepeatable */;\r\n if (re === '.*')\r\n subSegmentScore += -50 /* BonusWildcard */;\r\n }\r\n segmentScores.push(subSegmentScore);\r\n }\r\n // an empty array like /home/ -> [[{home}], []]\r\n // if (!segment.length) pattern += '/'\r\n score.push(segmentScores);\r\n }\r\n // only apply the strict bonus to the last score\r\n if (options.strict && options.end) {\r\n const i = score.length - 1;\r\n score[i][score[i].length - 1] += 0.7000000000000001 /* BonusStrict */;\r\n }\r\n // TODO: dev only warn double trailing slash\r\n if (!options.strict)\r\n pattern += '/?';\r\n if (options.end)\r\n pattern += '$';\r\n // allow paths like /dynamic to only match dynamic or dynamic/... but not dynamic_something_else\r\n else if (options.strict)\r\n pattern += '(?:/|$)';\r\n const re = new RegExp(pattern, options.sensitive ? '' : 'i');\r\n function parse(path) {\r\n const match = path.match(re);\r\n const params = {};\r\n if (!match)\r\n return null;\r\n for (let i = 1; i < match.length; i++) {\r\n const value = match[i] || '';\r\n const key = keys[i - 1];\r\n params[key.name] = value && key.repeatable ? value.split('/') : value;\r\n }\r\n return params;\r\n }\r\n function stringify(params) {\r\n let path = '';\r\n // for optional parameters to allow to be empty\r\n let avoidDuplicatedSlash = false;\r\n for (const segment of segments) {\r\n if (!avoidDuplicatedSlash || !path.endsWith('/'))\r\n path += '/';\r\n avoidDuplicatedSlash = false;\r\n for (const token of segment) {\r\n if (token.type === 0 /* Static */) {\r\n path += token.value;\r\n }\r\n else if (token.type === 1 /* Param */) {\r\n const { value, repeatable, optional } = token;\r\n const param = value in params ? params[value] : '';\r\n if (Array.isArray(param) && !repeatable)\r\n throw new Error(`Provided param \"${value}\" is an array but it is not repeatable (* or + modifiers)`);\r\n const text = Array.isArray(param) ? param.join('/') : param;\r\n if (!text) {\r\n if (optional) {\r\n // if we have more than one optional param like /:a?-static we\r\n // don't need to care about the optional param\r\n if (segment.length < 2) {\r\n // remove the last slash as we could be at the end\r\n if (path.endsWith('/'))\r\n path = path.slice(0, -1);\r\n // do not append a slash on the next iteration\r\n else\r\n avoidDuplicatedSlash = true;\r\n }\r\n }\r\n else\r\n throw new Error(`Missing required param \"${value}\"`);\r\n }\r\n path += text;\r\n }\r\n }\r\n }\r\n return path;\r\n }\r\n return {\r\n re,\r\n score,\r\n keys,\r\n parse,\r\n stringify,\r\n };\r\n}\r\n/**\r\n * Compares an array of numbers as used in PathParser.score and returns a\r\n * number. This function can be used to `sort` an array\r\n *\r\n * @param a - first array of numbers\r\n * @param b - second array of numbers\r\n * @returns 0 if both are equal, < 0 if a should be sorted first, > 0 if b\r\n * should be sorted first\r\n */\r\nfunction compareScoreArray(a, b) {\r\n let i = 0;\r\n while (i < a.length && i < b.length) {\r\n const diff = b[i] - a[i];\r\n // only keep going if diff === 0\r\n if (diff)\r\n return diff;\r\n i++;\r\n }\r\n // if the last subsegment was Static, the shorter segments should be sorted first\r\n // otherwise sort the longest segment first\r\n if (a.length < b.length) {\r\n return a.length === 1 && a[0] === 40 /* Static */ + 40 /* Segment */\r\n ? -1\r\n : 1;\r\n }\r\n else if (a.length > b.length) {\r\n return b.length === 1 && b[0] === 40 /* Static */ + 40 /* Segment */\r\n ? 1\r\n : -1;\r\n }\r\n return 0;\r\n}\r\n/**\r\n * Compare function that can be used with `sort` to sort an array of PathParser\r\n *\r\n * @param a - first PathParser\r\n * @param b - second PathParser\r\n * @returns 0 if both are equal, < 0 if a should be sorted first, > 0 if b\r\n */\r\nfunction comparePathParserScore(a, b) {\r\n let i = 0;\r\n const aScore = a.score;\r\n const bScore = b.score;\r\n while (i < aScore.length && i < bScore.length) {\r\n const comp = compareScoreArray(aScore[i], bScore[i]);\r\n // do not return if both are equal\r\n if (comp)\r\n return comp;\r\n i++;\r\n }\r\n // if a and b share the same score entries but b has more, sort b first\r\n return bScore.length - aScore.length;\r\n // this is the ternary version\r\n // return aScore.length < bScore.length\r\n // ? 1\r\n // : aScore.length > bScore.length\r\n // ? -1\r\n // : 0\r\n}\n\nconst ROOT_TOKEN = {\r\n type: 0 /* Static */,\r\n value: '',\r\n};\r\nconst VALID_PARAM_RE = /[a-zA-Z0-9_]/;\r\n// After some profiling, the cache seems to be unnecessary because tokenizePath\r\n// (the slowest part of adding a route) is very fast\r\n// const tokenCache = new Map()\r\nfunction tokenizePath(path) {\r\n if (!path)\r\n return [[]];\r\n if (path === '/')\r\n return [[ROOT_TOKEN]];\r\n if (!path.startsWith('/')) {\r\n throw new Error((process.env.NODE_ENV !== 'production')\r\n ? `Route paths should start with a \"/\": \"${path}\" should be \"/${path}\".`\r\n : `Invalid path \"${path}\"`);\r\n }\r\n // if (tokenCache.has(path)) return tokenCache.get(path)!\r\n function crash(message) {\r\n throw new Error(`ERR (${state})/\"${buffer}\": ${message}`);\r\n }\r\n let state = 0 /* Static */;\r\n let previousState = state;\r\n const tokens = [];\r\n // the segment will always be valid because we get into the initial state\r\n // with the leading /\r\n let segment;\r\n function finalizeSegment() {\r\n if (segment)\r\n tokens.push(segment);\r\n segment = [];\r\n }\r\n // index on the path\r\n let i = 0;\r\n // char at index\r\n let char;\r\n // buffer of the value read\r\n let buffer = '';\r\n // custom regexp for a param\r\n let customRe = '';\r\n function consumeBuffer() {\r\n if (!buffer)\r\n return;\r\n if (state === 0 /* Static */) {\r\n segment.push({\r\n type: 0 /* Static */,\r\n value: buffer,\r\n });\r\n }\r\n else if (state === 1 /* Param */ ||\r\n state === 2 /* ParamRegExp */ ||\r\n state === 3 /* ParamRegExpEnd */) {\r\n if (segment.length > 1 && (char === '*' || char === '+'))\r\n crash(`A repeatable param (${buffer}) must be alone in its segment. eg: '/:ids+.`);\r\n segment.push({\r\n type: 1 /* Param */,\r\n value: buffer,\r\n regexp: customRe,\r\n repeatable: char === '*' || char === '+',\r\n optional: char === '*' || char === '?',\r\n });\r\n }\r\n else {\r\n crash('Invalid state to consume buffer');\r\n }\r\n buffer = '';\r\n }\r\n function addCharToBuffer() {\r\n buffer += char;\r\n }\r\n while (i < path.length) {\r\n char = path[i++];\r\n if (char === '\\\\' && state !== 2 /* ParamRegExp */) {\r\n previousState = state;\r\n state = 4 /* EscapeNext */;\r\n continue;\r\n }\r\n switch (state) {\r\n case 0 /* Static */:\r\n if (char === '/') {\r\n if (buffer) {\r\n consumeBuffer();\r\n }\r\n finalizeSegment();\r\n }\r\n else if (char === ':') {\r\n consumeBuffer();\r\n state = 1 /* Param */;\r\n }\r\n else {\r\n addCharToBuffer();\r\n }\r\n break;\r\n case 4 /* EscapeNext */:\r\n addCharToBuffer();\r\n state = previousState;\r\n break;\r\n case 1 /* Param */:\r\n if (char === '(') {\r\n state = 2 /* ParamRegExp */;\r\n }\r\n else if (VALID_PARAM_RE.test(char)) {\r\n addCharToBuffer();\r\n }\r\n else {\r\n consumeBuffer();\r\n state = 0 /* Static */;\r\n // go back one character if we were not modifying\r\n if (char !== '*' && char !== '?' && char !== '+')\r\n i--;\r\n }\r\n break;\r\n case 2 /* ParamRegExp */:\r\n // TODO: is it worth handling nested regexp? like :p(?:prefix_([^/]+)_suffix)\r\n // it already works by escaping the closing )\r\n // https://paths.esm.dev/?p=AAMeJbiAwQEcDKbAoAAkP60PG2R6QAvgNaA6AFACM2ABuQBB#\r\n // is this really something people need since you can also write\r\n // /prefix_:p()_suffix\r\n if (char === ')') {\r\n // handle the escaped )\r\n if (customRe[customRe.length - 1] == '\\\\')\r\n customRe = customRe.slice(0, -1) + char;\r\n else\r\n state = 3 /* ParamRegExpEnd */;\r\n }\r\n else {\r\n customRe += char;\r\n }\r\n break;\r\n case 3 /* ParamRegExpEnd */:\r\n // same as finalizing a param\r\n consumeBuffer();\r\n state = 0 /* Static */;\r\n // go back one character if we were not modifying\r\n if (char !== '*' && char !== '?' && char !== '+')\r\n i--;\r\n customRe = '';\r\n break;\r\n default:\r\n crash('Unknown state');\r\n break;\r\n }\r\n }\r\n if (state === 2 /* ParamRegExp */)\r\n crash(`Unfinished custom RegExp for param \"${buffer}\"`);\r\n consumeBuffer();\r\n finalizeSegment();\r\n // tokenCache.set(path, tokens)\r\n return tokens;\r\n}\n\nfunction createRouteRecordMatcher(record, parent, options) {\r\n const parser = tokensToParser(tokenizePath(record.path), options);\r\n // warn against params with the same name\r\n if ((process.env.NODE_ENV !== 'production')) {\r\n const existingKeys = new Set();\r\n for (const key of parser.keys) {\r\n if (existingKeys.has(key.name))\r\n warn(`Found duplicated params with name \"${key.name}\" for path \"${record.path}\". Only the last one will be available on \"$route.params\".`);\r\n existingKeys.add(key.name);\r\n }\r\n }\r\n const matcher = assign(parser, {\r\n record,\r\n parent,\r\n // these needs to be populated by the parent\r\n children: [],\r\n alias: [],\r\n });\r\n if (parent) {\r\n // both are aliases or both are not aliases\r\n // we don't want to mix them because the order is used when\r\n // passing originalRecord in Matcher.addRoute\r\n if (!matcher.record.aliasOf === !parent.record.aliasOf)\r\n parent.children.push(matcher);\r\n }\r\n return matcher;\r\n}\n\n/**\r\n * Creates a Router Matcher.\r\n *\r\n * @internal\r\n * @param routes - array of initial routes\r\n * @param globalOptions - global route options\r\n */\r\nfunction createRouterMatcher(routes, globalOptions) {\r\n // normalized ordered array of matchers\r\n const matchers = [];\r\n const matcherMap = new Map();\r\n globalOptions = mergeOptions({ strict: false, end: true, sensitive: false }, globalOptions);\r\n function getRecordMatcher(name) {\r\n return matcherMap.get(name);\r\n }\r\n function addRoute(record, parent, originalRecord) {\r\n // used later on to remove by name\r\n const isRootAdd = !originalRecord;\r\n const mainNormalizedRecord = normalizeRouteRecord(record);\r\n // we might be the child of an alias\r\n mainNormalizedRecord.aliasOf = originalRecord && originalRecord.record;\r\n const options = mergeOptions(globalOptions, record);\r\n // generate an array of records to correctly handle aliases\r\n const normalizedRecords = [\r\n mainNormalizedRecord,\r\n ];\r\n if ('alias' in record) {\r\n const aliases = typeof record.alias === 'string' ? [record.alias] : record.alias;\r\n for (const alias of aliases) {\r\n normalizedRecords.push(assign({}, mainNormalizedRecord, {\r\n // this allows us to hold a copy of the `components` option\r\n // so that async components cache is hold on the original record\r\n components: originalRecord\r\n ? originalRecord.record.components\r\n : mainNormalizedRecord.components,\r\n path: alias,\r\n // we might be the child of an alias\r\n aliasOf: originalRecord\r\n ? originalRecord.record\r\n : mainNormalizedRecord,\r\n // the aliases are always of the same kind as the original since they\r\n // are defined on the same record\r\n }));\r\n }\r\n }\r\n let matcher;\r\n let originalMatcher;\r\n for (const normalizedRecord of normalizedRecords) {\r\n const { path } = normalizedRecord;\r\n // Build up the path for nested routes if the child isn't an absolute\r\n // route. Only add the / delimiter if the child path isn't empty and if the\r\n // parent path doesn't have a trailing slash\r\n if (parent && path[0] !== '/') {\r\n const parentPath = parent.record.path;\r\n const connectingSlash = parentPath[parentPath.length - 1] === '/' ? '' : '/';\r\n normalizedRecord.path =\r\n parent.record.path + (path && connectingSlash + path);\r\n }\r\n if ((process.env.NODE_ENV !== 'production') && normalizedRecord.path === '*') {\r\n throw new Error('Catch all routes (\"*\") must now be defined using a param with a custom regexp.\\n' +\r\n 'See more at https://next.router.vuejs.org/guide/migration/#removed-star-or-catch-all-routes.');\r\n }\r\n // create the object before hand so it can be passed to children\r\n matcher = createRouteRecordMatcher(normalizedRecord, parent, options);\r\n if ((process.env.NODE_ENV !== 'production') && parent && path[0] === '/')\r\n checkMissingParamsInAbsolutePath(matcher, parent);\r\n // if we are an alias we must tell the original record that we exist\r\n // so we can be removed\r\n if (originalRecord) {\r\n originalRecord.alias.push(matcher);\r\n if ((process.env.NODE_ENV !== 'production')) {\r\n checkSameParams(originalRecord, matcher);\r\n }\r\n }\r\n else {\r\n // otherwise, the first record is the original and others are aliases\r\n originalMatcher = originalMatcher || matcher;\r\n if (originalMatcher !== matcher)\r\n originalMatcher.alias.push(matcher);\r\n // remove the route if named and only for the top record (avoid in nested calls)\r\n // this works because the original record is the first one\r\n if (isRootAdd && record.name && !isAliasRecord(matcher))\r\n removeRoute(record.name);\r\n }\r\n if ('children' in mainNormalizedRecord) {\r\n const children = mainNormalizedRecord.children;\r\n for (let i = 0; i < children.length; i++) {\r\n addRoute(children[i], matcher, originalRecord && originalRecord.children[i]);\r\n }\r\n }\r\n // if there was no original record, then the first one was not an alias and all\r\n // other alias (if any) need to reference this record when adding children\r\n originalRecord = originalRecord || matcher;\r\n // TODO: add normalized records for more flexibility\r\n // if (parent && isAliasRecord(originalRecord)) {\r\n // parent.children.push(originalRecord)\r\n // }\r\n insertMatcher(matcher);\r\n }\r\n return originalMatcher\r\n ? () => {\r\n // since other matchers are aliases, they should be removed by the original matcher\r\n removeRoute(originalMatcher);\r\n }\r\n : noop;\r\n }\r\n function removeRoute(matcherRef) {\r\n if (isRouteName(matcherRef)) {\r\n const matcher = matcherMap.get(matcherRef);\r\n if (matcher) {\r\n matcherMap.delete(matcherRef);\r\n matchers.splice(matchers.indexOf(matcher), 1);\r\n matcher.children.forEach(removeRoute);\r\n matcher.alias.forEach(removeRoute);\r\n }\r\n }\r\n else {\r\n const index = matchers.indexOf(matcherRef);\r\n if (index > -1) {\r\n matchers.splice(index, 1);\r\n if (matcherRef.record.name)\r\n matcherMap.delete(matcherRef.record.name);\r\n matcherRef.children.forEach(removeRoute);\r\n matcherRef.alias.forEach(removeRoute);\r\n }\r\n }\r\n }\r\n function getRoutes() {\r\n return matchers;\r\n }\r\n function insertMatcher(matcher) {\r\n let i = 0;\r\n // console.log('i is', { i })\r\n while (i < matchers.length &&\r\n comparePathParserScore(matcher, matchers[i]) >= 0)\r\n i++;\r\n // console.log('END i is', { i })\r\n // while (i < matchers.length && matcher.score <= matchers[i].score) i++\r\n matchers.splice(i, 0, matcher);\r\n // only add the original record to the name map\r\n if (matcher.record.name && !isAliasRecord(matcher))\r\n matcherMap.set(matcher.record.name, matcher);\r\n }\r\n function resolve(location, currentLocation) {\r\n let matcher;\r\n let params = {};\r\n let path;\r\n let name;\r\n if ('name' in location && location.name) {\r\n matcher = matcherMap.get(location.name);\r\n if (!matcher)\r\n throw createRouterError(1 /* MATCHER_NOT_FOUND */, {\r\n location,\r\n });\r\n name = matcher.record.name;\r\n params = assign(\r\n // paramsFromLocation is a new object\r\n paramsFromLocation(currentLocation.params, \r\n // only keep params that exist in the resolved location\r\n // TODO: only keep optional params coming from a parent record\r\n matcher.keys.filter(k => !k.optional).map(k => k.name)), location.params);\r\n // throws if cannot be stringified\r\n path = matcher.stringify(params);\r\n }\r\n else if ('path' in location) {\r\n // no need to resolve the path with the matcher as it was provided\r\n // this also allows the user to control the encoding\r\n path = location.path;\r\n if ((process.env.NODE_ENV !== 'production') && !path.startsWith('/')) {\r\n warn(`The Matcher cannot resolve relative paths but received \"${path}\". Unless you directly called \\`matcher.resolve(\"${path}\")\\`, this is probably a bug in vue-router. Please open an issue at https://new-issue.vuejs.org/?repo=vuejs/vue-router-next.`);\r\n }\r\n matcher = matchers.find(m => m.re.test(path));\r\n // matcher should have a value after the loop\r\n if (matcher) {\r\n // TODO: dev warning of unused params if provided\r\n // we know the matcher works because we tested the regexp\r\n params = matcher.parse(path);\r\n name = matcher.record.name;\r\n }\r\n // location is a relative path\r\n }\r\n else {\r\n // match by name or path of current route\r\n matcher = currentLocation.name\r\n ? matcherMap.get(currentLocation.name)\r\n : matchers.find(m => m.re.test(currentLocation.path));\r\n if (!matcher)\r\n throw createRouterError(1 /* MATCHER_NOT_FOUND */, {\r\n location,\r\n currentLocation,\r\n });\r\n name = matcher.record.name;\r\n // since we are navigating to the same location, we don't need to pick the\r\n // params like when `name` is provided\r\n params = assign({}, currentLocation.params, location.params);\r\n path = matcher.stringify(params);\r\n }\r\n const matched = [];\r\n let parentMatcher = matcher;\r\n while (parentMatcher) {\r\n // reversed order so parents are at the beginning\r\n matched.unshift(parentMatcher.record);\r\n parentMatcher = parentMatcher.parent;\r\n }\r\n return {\r\n name,\r\n path,\r\n params,\r\n matched,\r\n meta: mergeMetaFields(matched),\r\n };\r\n }\r\n // add initial routes\r\n routes.forEach(route => addRoute(route));\r\n return { addRoute, resolve, removeRoute, getRoutes, getRecordMatcher };\r\n}\r\nfunction paramsFromLocation(params, keys) {\r\n const newParams = {};\r\n for (const key of keys) {\r\n if (key in params)\r\n newParams[key] = params[key];\r\n }\r\n return newParams;\r\n}\r\n/**\r\n * Normalizes a RouteRecordRaw. Creates a copy\r\n *\r\n * @param record\r\n * @returns the normalized version\r\n */\r\nfunction normalizeRouteRecord(record) {\r\n return {\r\n path: record.path,\r\n redirect: record.redirect,\r\n name: record.name,\r\n meta: record.meta || {},\r\n aliasOf: undefined,\r\n beforeEnter: record.beforeEnter,\r\n props: normalizeRecordProps(record),\r\n children: record.children || [],\r\n instances: {},\r\n leaveGuards: new Set(),\r\n updateGuards: new Set(),\r\n enterCallbacks: {},\r\n components: 'components' in record\r\n ? record.components || {}\r\n : { default: record.component },\r\n };\r\n}\r\n/**\r\n * Normalize the optional `props` in a record to always be an object similar to\r\n * components. Also accept a boolean for components.\r\n * @param record\r\n */\r\nfunction normalizeRecordProps(record) {\r\n const propsObject = {};\r\n // props does not exist on redirect records but we can set false directly\r\n const props = record.props || false;\r\n if ('component' in record) {\r\n propsObject.default = props;\r\n }\r\n else {\r\n // NOTE: we could also allow a function to be applied to every component.\r\n // Would need user feedback for use cases\r\n for (const name in record.components)\r\n propsObject[name] = typeof props === 'boolean' ? props : props[name];\r\n }\r\n return propsObject;\r\n}\r\n/**\r\n * Checks if a record or any of its parent is an alias\r\n * @param record\r\n */\r\nfunction isAliasRecord(record) {\r\n while (record) {\r\n if (record.record.aliasOf)\r\n return true;\r\n record = record.parent;\r\n }\r\n return false;\r\n}\r\n/**\r\n * Merge meta fields of an array of records\r\n *\r\n * @param matched - array of matched records\r\n */\r\nfunction mergeMetaFields(matched) {\r\n return matched.reduce((meta, record) => assign(meta, record.meta), {});\r\n}\r\nfunction mergeOptions(defaults, partialOptions) {\r\n const options = {};\r\n for (const key in defaults) {\r\n options[key] = key in partialOptions ? partialOptions[key] : defaults[key];\r\n }\r\n return options;\r\n}\r\nfunction isSameParam(a, b) {\r\n return (a.name === b.name &&\r\n a.optional === b.optional &&\r\n a.repeatable === b.repeatable);\r\n}\r\n/**\r\n * Check if a path and its alias have the same required params\r\n *\r\n * @param a - original record\r\n * @param b - alias record\r\n */\r\nfunction checkSameParams(a, b) {\r\n for (const key of a.keys) {\r\n if (!key.optional && !b.keys.find(isSameParam.bind(null, key)))\r\n return warn(`Alias \"${b.record.path}\" and the original record: \"${a.record.path}\" should have the exact same param named \"${key.name}\"`);\r\n }\r\n for (const key of b.keys) {\r\n if (!key.optional && !a.keys.find(isSameParam.bind(null, key)))\r\n return warn(`Alias \"${b.record.path}\" and the original record: \"${a.record.path}\" should have the exact same param named \"${key.name}\"`);\r\n }\r\n}\r\nfunction checkMissingParamsInAbsolutePath(record, parent) {\r\n for (const key of parent.keys) {\r\n if (!record.keys.find(isSameParam.bind(null, key)))\r\n return warn(`Absolute path \"${record.record.path}\" should have the exact same param named \"${key.name}\" as its parent \"${parent.record.path}\".`);\r\n }\r\n}\n\n/**\r\n * Encoding Rules ␣ = Space Path: ␣ \" < > # ? { } Query: ␣ \" < > # & = Hash: ␣ \"\r\n * < > `\r\n *\r\n * On top of that, the RFC3986 (https://tools.ietf.org/html/rfc3986#section-2.2)\r\n * defines some extra characters to be encoded. Most browsers do not encode them\r\n * in encodeURI https://github.com/whatwg/url/issues/369, so it may be safer to\r\n * also encode `!'()*`. Leaving unencoded only ASCII alphanumeric(`a-zA-Z0-9`)\r\n * plus `-._~`. This extra safety should be applied to query by patching the\r\n * string returned by encodeURIComponent encodeURI also encodes `[\\]^`. `\\`\r\n * should be encoded to avoid ambiguity. Browsers (IE, FF, C) transform a `\\`\r\n * into a `/` if directly typed in. The _backtick_ (`````) should also be\r\n * encoded everywhere because some browsers like FF encode it when directly\r\n * written while others don't. Safari and IE don't encode ``\"<>{}``` in hash.\r\n */\r\n// const EXTRA_RESERVED_RE = /[!'()*]/g\r\n// const encodeReservedReplacer = (c: string) => '%' + c.charCodeAt(0).toString(16)\r\nconst HASH_RE = /#/g; // %23\r\nconst AMPERSAND_RE = /&/g; // %26\r\nconst SLASH_RE = /\\//g; // %2F\r\nconst EQUAL_RE = /=/g; // %3D\r\nconst IM_RE = /\\?/g; // %3F\r\nconst PLUS_RE = /\\+/g; // %2B\r\n/**\r\n * NOTE: It's not clear to me if we should encode the + symbol in queries, it\r\n * seems to be less flexible than not doing so and I can't find out the legacy\r\n * systems requiring this for regular requests like text/html. In the standard,\r\n * the encoding of the plus character is only mentioned for\r\n * application/x-www-form-urlencoded\r\n * (https://url.spec.whatwg.org/#urlencoded-parsing) and most browsers seems lo\r\n * leave the plus character as is in queries. To be more flexible, we allow the\r\n * plus character on the query but it can also be manually encoded by the user.\r\n *\r\n * Resources:\r\n * - https://url.spec.whatwg.org/#urlencoded-parsing\r\n * - https://stackoverflow.com/questions/1634271/url-encoding-the-space-character-or-20\r\n */\r\nconst ENC_BRACKET_OPEN_RE = /%5B/g; // [\r\nconst ENC_BRACKET_CLOSE_RE = /%5D/g; // ]\r\nconst ENC_CARET_RE = /%5E/g; // ^\r\nconst ENC_BACKTICK_RE = /%60/g; // `\r\nconst ENC_CURLY_OPEN_RE = /%7B/g; // {\r\nconst ENC_PIPE_RE = /%7C/g; // |\r\nconst ENC_CURLY_CLOSE_RE = /%7D/g; // }\r\nconst ENC_SPACE_RE = /%20/g; // }\r\n/**\r\n * Encode characters that need to be encoded on the path, search and hash\r\n * sections of the URL.\r\n *\r\n * @internal\r\n * @param text - string to encode\r\n * @returns encoded string\r\n */\r\nfunction commonEncode(text) {\r\n return encodeURI('' + text)\r\n .replace(ENC_PIPE_RE, '|')\r\n .replace(ENC_BRACKET_OPEN_RE, '[')\r\n .replace(ENC_BRACKET_CLOSE_RE, ']');\r\n}\r\n/**\r\n * Encode characters that need to be encoded on the hash section of the URL.\r\n *\r\n * @param text - string to encode\r\n * @returns encoded string\r\n */\r\nfunction encodeHash(text) {\r\n return commonEncode(text)\r\n .replace(ENC_CURLY_OPEN_RE, '{')\r\n .replace(ENC_CURLY_CLOSE_RE, '}')\r\n .replace(ENC_CARET_RE, '^');\r\n}\r\n/**\r\n * Encode characters that need to be encoded query values on the query\r\n * section of the URL.\r\n *\r\n * @param text - string to encode\r\n * @returns encoded string\r\n */\r\nfunction encodeQueryValue(text) {\r\n return (commonEncode(text)\r\n // Encode the space as +, encode the + to differentiate it from the space\r\n .replace(PLUS_RE, '%2B')\r\n .replace(ENC_SPACE_RE, '+')\r\n .replace(HASH_RE, '%23')\r\n .replace(AMPERSAND_RE, '%26')\r\n .replace(ENC_BACKTICK_RE, '`')\r\n .replace(ENC_CURLY_OPEN_RE, '{')\r\n .replace(ENC_CURLY_CLOSE_RE, '}')\r\n .replace(ENC_CARET_RE, '^'));\r\n}\r\n/**\r\n * Like `encodeQueryValue` but also encodes the `=` character.\r\n *\r\n * @param text - string to encode\r\n */\r\nfunction encodeQueryKey(text) {\r\n return encodeQueryValue(text).replace(EQUAL_RE, '%3D');\r\n}\r\n/**\r\n * Encode characters that need to be encoded on the path section of the URL.\r\n *\r\n * @param text - string to encode\r\n * @returns encoded string\r\n */\r\nfunction encodePath(text) {\r\n return commonEncode(text).replace(HASH_RE, '%23').replace(IM_RE, '%3F');\r\n}\r\n/**\r\n * Encode characters that need to be encoded on the path section of the URL as a\r\n * param. This function encodes everything {@link encodePath} does plus the\r\n * slash (`/`) character. If `text` is `null` or `undefined`, returns an empty\r\n * string instead.\r\n *\r\n * @param text - string to encode\r\n * @returns encoded string\r\n */\r\nfunction encodeParam(text) {\r\n return text == null ? '' : encodePath(text).replace(SLASH_RE, '%2F');\r\n}\r\n/**\r\n * Decode text using `decodeURIComponent`. Returns the original text if it\r\n * fails.\r\n *\r\n * @param text - string to decode\r\n * @returns decoded string\r\n */\r\nfunction decode(text) {\r\n try {\r\n return decodeURIComponent('' + text);\r\n }\r\n catch (err) {\r\n (process.env.NODE_ENV !== 'production') && warn(`Error decoding \"${text}\". Using original value`);\r\n }\r\n return '' + text;\r\n}\n\n/**\r\n * Transforms a queryString into a {@link LocationQuery} object. Accept both, a\r\n * version with the leading `?` and without Should work as URLSearchParams\r\n\n * @internal\r\n *\r\n * @param search - search string to parse\r\n * @returns a query object\r\n */\r\nfunction parseQuery(search) {\r\n const query = {};\r\n // avoid creating an object with an empty key and empty value\r\n // because of split('&')\r\n if (search === '' || search === '?')\r\n return query;\r\n const hasLeadingIM = search[0] === '?';\r\n const searchParams = (hasLeadingIM ? search.slice(1) : search).split('&');\r\n for (let i = 0; i < searchParams.length; ++i) {\r\n // pre decode the + into space\r\n const searchParam = searchParams[i].replace(PLUS_RE, ' ');\r\n // allow the = character\r\n const eqPos = searchParam.indexOf('=');\r\n const key = decode(eqPos < 0 ? searchParam : searchParam.slice(0, eqPos));\r\n const value = eqPos < 0 ? null : decode(searchParam.slice(eqPos + 1));\r\n if (key in query) {\r\n // an extra variable for ts types\r\n let currentValue = query[key];\r\n if (!Array.isArray(currentValue)) {\r\n currentValue = query[key] = [currentValue];\r\n }\r\n currentValue.push(value);\r\n }\r\n else {\r\n query[key] = value;\r\n }\r\n }\r\n return query;\r\n}\r\n/**\r\n * Stringifies a {@link LocationQueryRaw} object. Like `URLSearchParams`, it\r\n * doesn't prepend a `?`\r\n *\r\n * @internal\r\n *\r\n * @param query - query object to stringify\r\n * @returns string version of the query without the leading `?`\r\n */\r\nfunction stringifyQuery(query) {\r\n let search = '';\r\n for (let key in query) {\r\n const value = query[key];\r\n key = encodeQueryKey(key);\r\n if (value == null) {\r\n // only null adds the value\r\n if (value !== undefined) {\r\n search += (search.length ? '&' : '') + key;\r\n }\r\n continue;\r\n }\r\n // keep null values\r\n const values = Array.isArray(value)\r\n ? value.map(v => v && encodeQueryValue(v))\r\n : [value && encodeQueryValue(value)];\r\n values.forEach(value => {\r\n // skip undefined values in arrays as if they were not present\r\n // smaller code than using filter\r\n if (value !== undefined) {\r\n // only append & with non-empty search\r\n search += (search.length ? '&' : '') + key;\r\n if (value != null)\r\n search += '=' + value;\r\n }\r\n });\r\n }\r\n return search;\r\n}\r\n/**\r\n * Transforms a {@link LocationQueryRaw} into a {@link LocationQuery} by casting\r\n * numbers into strings, removing keys with an undefined value and replacing\r\n * undefined with null in arrays\r\n *\r\n * @param query - query object to normalize\r\n * @returns a normalized query object\r\n */\r\nfunction normalizeQuery(query) {\r\n const normalizedQuery = {};\r\n for (const key in query) {\r\n const value = query[key];\r\n if (value !== undefined) {\r\n normalizedQuery[key] = Array.isArray(value)\r\n ? value.map(v => (v == null ? null : '' + v))\r\n : value == null\r\n ? value\r\n : '' + value;\r\n }\r\n }\r\n return normalizedQuery;\r\n}\n\n/**\r\n * Create a list of callbacks that can be reset. Used to create before and after navigation guards list\r\n */\r\nfunction useCallbacks() {\r\n let handlers = [];\r\n function add(handler) {\r\n handlers.push(handler);\r\n return () => {\r\n const i = handlers.indexOf(handler);\r\n if (i > -1)\r\n handlers.splice(i, 1);\r\n };\r\n }\r\n function reset() {\r\n handlers = [];\r\n }\r\n return {\r\n add,\r\n list: () => handlers,\r\n reset,\r\n };\r\n}\n\nfunction registerGuard(record, name, guard) {\r\n const removeFromList = () => {\r\n record[name].delete(guard);\r\n };\r\n onUnmounted(removeFromList);\r\n onDeactivated(removeFromList);\r\n onActivated(() => {\r\n record[name].add(guard);\r\n });\r\n record[name].add(guard);\r\n}\r\n/**\r\n * Add a navigation guard that triggers whenever the component for the current\r\n * location is about to be left. Similar to {@link beforeRouteLeave} but can be\r\n * used in any component. The guard is removed when the component is unmounted.\r\n *\r\n * @param leaveGuard - {@link NavigationGuard}\r\n */\r\nfunction onBeforeRouteLeave(leaveGuard) {\r\n if ((process.env.NODE_ENV !== 'production') && !getCurrentInstance()) {\r\n warn('getCurrentInstance() returned null. onBeforeRouteLeave() must be called at the top of a setup function');\r\n return;\r\n }\r\n const activeRecord = inject(matchedRouteKey, \r\n // to avoid warning\r\n {}).value;\r\n if (!activeRecord) {\r\n (process.env.NODE_ENV !== 'production') &&\r\n warn('No active route record was found when calling `onBeforeRouteLeave()`. Make sure you call this function inside of a component child of . Maybe you called it inside of App.vue?');\r\n return;\r\n }\r\n registerGuard(activeRecord, 'leaveGuards', leaveGuard);\r\n}\r\n/**\r\n * Add a navigation guard that triggers whenever the current location is about\r\n * to be updated. Similar to {@link beforeRouteUpdate} but can be used in any\r\n * component. The guard is removed when the component is unmounted.\r\n *\r\n * @param updateGuard - {@link NavigationGuard}\r\n */\r\nfunction onBeforeRouteUpdate(updateGuard) {\r\n if ((process.env.NODE_ENV !== 'production') && !getCurrentInstance()) {\r\n warn('getCurrentInstance() returned null. onBeforeRouteUpdate() must be called at the top of a setup function');\r\n return;\r\n }\r\n const activeRecord = inject(matchedRouteKey, \r\n // to avoid warning\r\n {}).value;\r\n if (!activeRecord) {\r\n (process.env.NODE_ENV !== 'production') &&\r\n warn('No active route record was found when calling `onBeforeRouteUpdate()`. Make sure you call this function inside of a component child of . Maybe you called it inside of App.vue?');\r\n return;\r\n }\r\n registerGuard(activeRecord, 'updateGuards', updateGuard);\r\n}\r\nfunction guardToPromiseFn(guard, to, from, record, name) {\r\n // keep a reference to the enterCallbackArray to prevent pushing callbacks if a new navigation took place\r\n const enterCallbackArray = record &&\r\n // name is defined if record is because of the function overload\r\n (record.enterCallbacks[name] = record.enterCallbacks[name] || []);\r\n return () => new Promise((resolve, reject) => {\r\n const next = (valid) => {\r\n if (valid === false)\r\n reject(createRouterError(4 /* NAVIGATION_ABORTED */, {\r\n from,\r\n to,\r\n }));\r\n else if (valid instanceof Error) {\r\n reject(valid);\r\n }\r\n else if (isRouteLocation(valid)) {\r\n reject(createRouterError(2 /* NAVIGATION_GUARD_REDIRECT */, {\r\n from: to,\r\n to: valid,\r\n }));\r\n }\r\n else {\r\n if (enterCallbackArray &&\r\n // since enterCallbackArray is truthy, both record and name also are\r\n record.enterCallbacks[name] === enterCallbackArray &&\r\n typeof valid === 'function')\r\n enterCallbackArray.push(valid);\r\n resolve();\r\n }\r\n };\r\n // wrapping with Promise.resolve allows it to work with both async and sync guards\r\n const guardReturn = guard.call(record && record.instances[name], to, from, (process.env.NODE_ENV !== 'production') ? canOnlyBeCalledOnce(next, to, from) : next);\r\n let guardCall = Promise.resolve(guardReturn);\r\n if (guard.length < 3)\r\n guardCall = guardCall.then(next);\r\n if ((process.env.NODE_ENV !== 'production') && guard.length > 2) {\r\n const message = `The \"next\" callback was never called inside of ${guard.name ? '\"' + guard.name + '\"' : ''}:\\n${guard.toString()}\\n. If you are returning a value instead of calling \"next\", make sure to remove the \"next\" parameter from your function.`;\r\n if (typeof guardReturn === 'object' && 'then' in guardReturn) {\r\n guardCall = guardCall.then(resolvedValue => {\r\n // @ts-expect-error: _called is added at canOnlyBeCalledOnce\r\n if (!next._called) {\r\n warn(message);\r\n return Promise.reject(new Error('Invalid navigation guard'));\r\n }\r\n return resolvedValue;\r\n });\r\n // TODO: test me!\r\n }\r\n else if (guardReturn !== undefined) {\r\n // @ts-expect-error: _called is added at canOnlyBeCalledOnce\r\n if (!next._called) {\r\n warn(message);\r\n reject(new Error('Invalid navigation guard'));\r\n return;\r\n }\r\n }\r\n }\r\n guardCall.catch(err => reject(err));\r\n });\r\n}\r\nfunction canOnlyBeCalledOnce(next, to, from) {\r\n let called = 0;\r\n return function () {\r\n if (called++ === 1)\r\n warn(`The \"next\" callback was called more than once in one navigation guard when going from \"${from.fullPath}\" to \"${to.fullPath}\". It should be called exactly one time in each navigation guard. This will fail in production.`);\r\n // @ts-expect-error: we put it in the original one because it's easier to check\r\n next._called = true;\r\n if (called === 1)\r\n next.apply(null, arguments);\r\n };\r\n}\r\nfunction extractComponentsGuards(matched, guardType, to, from) {\r\n const guards = [];\r\n for (const record of matched) {\r\n for (const name in record.components) {\r\n let rawComponent = record.components[name];\r\n if ((process.env.NODE_ENV !== 'production')) {\r\n if (!rawComponent ||\r\n (typeof rawComponent !== 'object' &&\r\n typeof rawComponent !== 'function')) {\r\n warn(`Component \"${name}\" in record with path \"${record.path}\" is not` +\r\n ` a valid component. Received \"${String(rawComponent)}\".`);\r\n // throw to ensure we stop here but warn to ensure the message isn't\r\n // missed by the user\r\n throw new Error('Invalid route component');\r\n }\r\n else if ('then' in rawComponent) {\r\n // warn if user wrote import('/component.vue') instead of () =>\r\n // import('./component.vue')\r\n warn(`Component \"${name}\" in record with path \"${record.path}\" is a ` +\r\n `Promise instead of a function that returns a Promise. Did you ` +\r\n `write \"import('./MyPage.vue')\" instead of ` +\r\n `\"() => import('./MyPage.vue')\" ? This will break in ` +\r\n `production if not fixed.`);\r\n const promise = rawComponent;\r\n rawComponent = () => promise;\r\n }\r\n else if (rawComponent.__asyncLoader &&\r\n // warn only once per component\r\n !rawComponent.__warnedDefineAsync) {\r\n rawComponent.__warnedDefineAsync = true;\r\n warn(`Component \"${name}\" in record with path \"${record.path}\" is defined ` +\r\n `using \"defineAsyncComponent()\". ` +\r\n `Write \"() => import('./MyPage.vue')\" instead of ` +\r\n `\"defineAsyncComponent(() => import('./MyPage.vue'))\".`);\r\n }\r\n }\r\n // skip update and leave guards if the route component is not mounted\r\n if (guardType !== 'beforeRouteEnter' && !record.instances[name])\r\n continue;\r\n if (isRouteComponent(rawComponent)) {\r\n // __vccOpts is added by vue-class-component and contain the regular options\r\n const options = rawComponent.__vccOpts || rawComponent;\r\n const guard = options[guardType];\r\n guard && guards.push(guardToPromiseFn(guard, to, from, record, name));\r\n }\r\n else {\r\n // start requesting the chunk already\r\n let componentPromise = rawComponent();\r\n if ((process.env.NODE_ENV !== 'production') && !('catch' in componentPromise)) {\r\n warn(`Component \"${name}\" in record with path \"${record.path}\" is a function that does not return a Promise. If you were passing a functional component, make sure to add a \"displayName\" to the component. This will break in production if not fixed.`);\r\n componentPromise = Promise.resolve(componentPromise);\r\n }\r\n guards.push(() => componentPromise.then(resolved => {\r\n if (!resolved)\r\n return Promise.reject(new Error(`Couldn't resolve component \"${name}\" at \"${record.path}\"`));\r\n const resolvedComponent = isESModule(resolved)\r\n ? resolved.default\r\n : resolved;\r\n // replace the function with the resolved component\r\n record.components[name] = resolvedComponent;\r\n // __vccOpts is added by vue-class-component and contain the regular options\r\n const options = resolvedComponent.__vccOpts || resolvedComponent;\r\n const guard = options[guardType];\r\n return guard && guardToPromiseFn(guard, to, from, record, name)();\r\n }));\r\n }\r\n }\r\n }\r\n return guards;\r\n}\r\n/**\r\n * Allows differentiating lazy components from functional components and vue-class-component\r\n *\r\n * @param component\r\n */\r\nfunction isRouteComponent(component) {\r\n return (typeof component === 'object' ||\r\n 'displayName' in component ||\r\n 'props' in component ||\r\n '__vccOpts' in component);\r\n}\n\n// TODO: we could allow currentRoute as a prop to expose `isActive` and\r\n// `isExactActive` behavior should go through an RFC\r\nfunction useLink(props) {\r\n const router = inject(routerKey);\r\n const currentRoute = inject(routeLocationKey);\r\n const route = computed(() => router.resolve(unref(props.to)));\r\n const activeRecordIndex = computed(() => {\r\n const { matched } = route.value;\r\n const { length } = matched;\r\n const routeMatched = matched[length - 1];\r\n const currentMatched = currentRoute.matched;\r\n if (!routeMatched || !currentMatched.length)\r\n return -1;\r\n const index = currentMatched.findIndex(isSameRouteRecord.bind(null, routeMatched));\r\n if (index > -1)\r\n return index;\r\n // possible parent record\r\n const parentRecordPath = getOriginalPath(matched[length - 2]);\r\n return (\r\n // we are dealing with nested routes\r\n length > 1 &&\r\n // if the parent and matched route have the same path, this link is\r\n // referring to the empty child. Or we currently are on a different\r\n // child of the same parent\r\n getOriginalPath(routeMatched) === parentRecordPath &&\r\n // avoid comparing the child with its parent\r\n currentMatched[currentMatched.length - 1].path !== parentRecordPath\r\n ? currentMatched.findIndex(isSameRouteRecord.bind(null, matched[length - 2]))\r\n : index);\r\n });\r\n const isActive = computed(() => activeRecordIndex.value > -1 &&\r\n includesParams(currentRoute.params, route.value.params));\r\n const isExactActive = computed(() => activeRecordIndex.value > -1 &&\r\n activeRecordIndex.value === currentRoute.matched.length - 1 &&\r\n isSameRouteLocationParams(currentRoute.params, route.value.params));\r\n function navigate(e = {}) {\r\n if (guardEvent(e)) {\r\n return router[unref(props.replace) ? 'replace' : 'push'](unref(props.to)\r\n // avoid uncaught errors are they are logged anyway\r\n ).catch(noop);\r\n }\r\n return Promise.resolve();\r\n }\r\n // devtools only\r\n if (((process.env.NODE_ENV !== 'production') || __VUE_PROD_DEVTOOLS__) && isBrowser) {\r\n const instance = getCurrentInstance();\r\n if (instance) {\r\n const linkContextDevtools = {\r\n route: route.value,\r\n isActive: isActive.value,\r\n isExactActive: isExactActive.value,\r\n };\r\n // @ts-expect-error: this is internal\r\n instance.__vrl_devtools = instance.__vrl_devtools || [];\r\n // @ts-expect-error: this is internal\r\n instance.__vrl_devtools.push(linkContextDevtools);\r\n watchEffect(() => {\r\n linkContextDevtools.route = route.value;\r\n linkContextDevtools.isActive = isActive.value;\r\n linkContextDevtools.isExactActive = isExactActive.value;\r\n }, { flush: 'post' });\r\n }\r\n }\r\n return {\r\n route,\r\n href: computed(() => route.value.href),\r\n isActive,\r\n isExactActive,\r\n navigate,\r\n };\r\n}\r\nconst RouterLinkImpl = /*#__PURE__*/ defineComponent({\r\n name: 'RouterLink',\r\n props: {\r\n to: {\r\n type: [String, Object],\r\n required: true,\r\n },\r\n replace: Boolean,\r\n activeClass: String,\r\n // inactiveClass: String,\r\n exactActiveClass: String,\r\n custom: Boolean,\r\n ariaCurrentValue: {\r\n type: String,\r\n default: 'page',\r\n },\r\n },\r\n useLink,\r\n setup(props, { slots }) {\r\n const link = reactive(useLink(props));\r\n const { options } = inject(routerKey);\r\n const elClass = computed(() => ({\r\n [getLinkClass(props.activeClass, options.linkActiveClass, 'router-link-active')]: link.isActive,\r\n // [getLinkClass(\r\n // props.inactiveClass,\r\n // options.linkInactiveClass,\r\n // 'router-link-inactive'\r\n // )]: !link.isExactActive,\r\n [getLinkClass(props.exactActiveClass, options.linkExactActiveClass, 'router-link-exact-active')]: link.isExactActive,\r\n }));\r\n return () => {\r\n const children = slots.default && slots.default(link);\r\n return props.custom\r\n ? children\r\n : h('a', {\r\n 'aria-current': link.isExactActive\r\n ? props.ariaCurrentValue\r\n : null,\r\n href: link.href,\r\n // this would override user added attrs but Vue will still add\r\n // the listener so we end up triggering both\r\n onClick: link.navigate,\r\n class: elClass.value,\r\n }, children);\r\n };\r\n },\r\n});\r\n// export the public type for h/tsx inference\r\n// also to avoid inline import() in generated d.ts files\r\n/**\r\n * Component to render a link that triggers a navigation on click.\r\n */\r\nconst RouterLink = RouterLinkImpl;\r\nfunction guardEvent(e) {\r\n // don't redirect with control keys\r\n if (e.metaKey || e.altKey || e.ctrlKey || e.shiftKey)\r\n return;\r\n // don't redirect when preventDefault called\r\n if (e.defaultPrevented)\r\n return;\r\n // don't redirect on right click\r\n if (e.button !== undefined && e.button !== 0)\r\n return;\r\n // don't redirect if `target=\"_blank\"`\r\n // @ts-expect-error getAttribute does exist\r\n if (e.currentTarget && e.currentTarget.getAttribute) {\r\n // @ts-expect-error getAttribute exists\r\n const target = e.currentTarget.getAttribute('target');\r\n if (/\\b_blank\\b/i.test(target))\r\n return;\r\n }\r\n // this may be a Weex event which doesn't have this method\r\n if (e.preventDefault)\r\n e.preventDefault();\r\n return true;\r\n}\r\nfunction includesParams(outer, inner) {\r\n for (const key in inner) {\r\n const innerValue = inner[key];\r\n const outerValue = outer[key];\r\n if (typeof innerValue === 'string') {\r\n if (innerValue !== outerValue)\r\n return false;\r\n }\r\n else {\r\n if (!Array.isArray(outerValue) ||\r\n outerValue.length !== innerValue.length ||\r\n innerValue.some((value, i) => value !== outerValue[i]))\r\n return false;\r\n }\r\n }\r\n return true;\r\n}\r\n/**\r\n * Get the original path value of a record by following its aliasOf\r\n * @param record\r\n */\r\nfunction getOriginalPath(record) {\r\n return record ? (record.aliasOf ? record.aliasOf.path : record.path) : '';\r\n}\r\n/**\r\n * Utility class to get the active class based on defaults.\r\n * @param propClass\r\n * @param globalClass\r\n * @param defaultClass\r\n */\r\nconst getLinkClass = (propClass, globalClass, defaultClass) => propClass != null\r\n ? propClass\r\n : globalClass != null\r\n ? globalClass\r\n : defaultClass;\n\nconst RouterViewImpl = /*#__PURE__*/ defineComponent({\r\n name: 'RouterView',\r\n // #674 we manually inherit them\r\n inheritAttrs: false,\r\n props: {\r\n name: {\r\n type: String,\r\n default: 'default',\r\n },\r\n route: Object,\r\n },\r\n setup(props, { attrs, slots }) {\r\n (process.env.NODE_ENV !== 'production') && warnDeprecatedUsage();\r\n const injectedRoute = inject(routerViewLocationKey);\r\n const routeToDisplay = computed(() => props.route || injectedRoute.value);\r\n const depth = inject(viewDepthKey, 0);\r\n const matchedRouteRef = computed(() => routeToDisplay.value.matched[depth]);\r\n provide(viewDepthKey, depth + 1);\r\n provide(matchedRouteKey, matchedRouteRef);\r\n provide(routerViewLocationKey, routeToDisplay);\r\n const viewRef = ref();\r\n // watch at the same time the component instance, the route record we are\r\n // rendering, and the name\r\n watch(() => [viewRef.value, matchedRouteRef.value, props.name], ([instance, to, name], [oldInstance, from, oldName]) => {\r\n // copy reused instances\r\n if (to) {\r\n // this will update the instance for new instances as well as reused\r\n // instances when navigating to a new route\r\n to.instances[name] = instance;\r\n // the component instance is reused for a different route or name so\r\n // we copy any saved update or leave guards. With async setup, the\r\n // mounting component will mount before the matchedRoute changes,\r\n // making instance === oldInstance, so we check if guards have been\r\n // added before. This works because we remove guards when\r\n // unmounting/deactivating components\r\n if (from && from !== to && instance && instance === oldInstance) {\r\n if (!to.leaveGuards.size) {\r\n to.leaveGuards = from.leaveGuards;\r\n }\r\n if (!to.updateGuards.size) {\r\n to.updateGuards = from.updateGuards;\r\n }\r\n }\r\n }\r\n // trigger beforeRouteEnter next callbacks\r\n if (instance &&\r\n to &&\r\n // if there is no instance but to and from are the same this might be\r\n // the first visit\r\n (!from || !isSameRouteRecord(to, from) || !oldInstance)) {\r\n (to.enterCallbacks[name] || []).forEach(callback => callback(instance));\r\n }\r\n }, { flush: 'post' });\r\n return () => {\r\n const route = routeToDisplay.value;\r\n const matchedRoute = matchedRouteRef.value;\r\n const ViewComponent = matchedRoute && matchedRoute.components[props.name];\r\n // we need the value at the time we render because when we unmount, we\r\n // navigated to a different location so the value is different\r\n const currentName = props.name;\r\n if (!ViewComponent) {\r\n return normalizeSlot(slots.default, { Component: ViewComponent, route });\r\n }\r\n // props from route configuration\r\n const routePropsOption = matchedRoute.props[props.name];\r\n const routeProps = routePropsOption\r\n ? routePropsOption === true\r\n ? route.params\r\n : typeof routePropsOption === 'function'\r\n ? routePropsOption(route)\r\n : routePropsOption\r\n : null;\r\n const onVnodeUnmounted = vnode => {\r\n // remove the instance reference to prevent leak\r\n if (vnode.component.isUnmounted) {\r\n matchedRoute.instances[currentName] = null;\r\n }\r\n };\r\n const component = h(ViewComponent, assign({}, routeProps, attrs, {\r\n onVnodeUnmounted,\r\n ref: viewRef,\r\n }));\r\n if (((process.env.NODE_ENV !== 'production') || __VUE_PROD_DEVTOOLS__) &&\r\n isBrowser &&\r\n component.ref) {\r\n // TODO: can display if it's an alias, its props\r\n const info = {\r\n depth,\r\n name: matchedRoute.name,\r\n path: matchedRoute.path,\r\n meta: matchedRoute.meta,\r\n };\r\n const internalInstances = Array.isArray(component.ref)\r\n ? component.ref.map(r => r.i)\r\n : [component.ref.i];\r\n internalInstances.forEach(instance => {\r\n // @ts-expect-error\r\n instance.__vrv_devtools = info;\r\n });\r\n }\r\n return (\r\n // pass the vnode to the slot as a prop.\r\n // h and both accept vnodes\r\n normalizeSlot(slots.default, { Component: component, route }) ||\r\n component);\r\n };\r\n },\r\n});\r\nfunction normalizeSlot(slot, data) {\r\n if (!slot)\r\n return null;\r\n const slotContent = slot(data);\r\n return slotContent.length === 1 ? slotContent[0] : slotContent;\r\n}\r\n// export the public type for h/tsx inference\r\n// also to avoid inline import() in generated d.ts files\r\n/**\r\n * Component to display the current route the user is at.\r\n */\r\nconst RouterView = RouterViewImpl;\r\n// warn against deprecated usage with & \r\n// due to functional component being no longer eager in Vue 3\r\nfunction warnDeprecatedUsage() {\r\n const instance = getCurrentInstance();\r\n const parentName = instance.parent && instance.parent.type.name;\r\n if (parentName &&\r\n (parentName === 'KeepAlive' || parentName.includes('Transition'))) {\r\n const comp = parentName === 'KeepAlive' ? 'keep-alive' : 'transition';\r\n warn(` can no longer be used directly inside or .\\n` +\r\n `Use slot props instead:\\n\\n` +\r\n `\\n` +\r\n ` <${comp}>\\n` +\r\n ` \\n` +\r\n ` \\n` +\r\n ``);\r\n }\r\n}\n\nfunction formatRouteLocation(routeLocation, tooltip) {\r\n const copy = assign({}, routeLocation, {\r\n // remove variables that can contain vue instances\r\n matched: routeLocation.matched.map(matched => omit(matched, ['instances', 'children', 'aliasOf'])),\r\n });\r\n return {\r\n _custom: {\r\n type: null,\r\n readOnly: true,\r\n display: routeLocation.fullPath,\r\n tooltip,\r\n value: copy,\r\n },\r\n };\r\n}\r\nfunction formatDisplay(display) {\r\n return {\r\n _custom: {\r\n display,\r\n },\r\n };\r\n}\r\n// to support multiple router instances\r\nlet routerId = 0;\r\nfunction addDevtools(app, router, matcher) {\r\n // Take over router.beforeEach and afterEach\r\n // make sure we are not registering the devtool twice\r\n if (router.__hasDevtools)\r\n return;\r\n router.__hasDevtools = true;\r\n // increment to support multiple router instances\r\n const id = routerId++;\r\n setupDevtoolsPlugin({\r\n id: 'org.vuejs.router' + (id ? '.' + id : ''),\r\n label: 'Vue Router',\r\n packageName: 'vue-router',\r\n homepage: 'https://next.router.vuejs.org/',\r\n logo: 'https://vuejs.org/images/icons/favicon-96x96.png',\r\n componentStateTypes: ['Routing'],\r\n app,\r\n }, api => {\r\n // display state added by the router\r\n api.on.inspectComponent((payload, ctx) => {\r\n if (payload.instanceData) {\r\n payload.instanceData.state.push({\r\n type: 'Routing',\r\n key: '$route',\r\n editable: false,\r\n value: formatRouteLocation(router.currentRoute.value, 'Current Route'),\r\n });\r\n }\r\n });\r\n // mark router-link as active and display tags on router views\r\n api.on.visitComponentTree(({ treeNode: node, componentInstance }) => {\r\n if (componentInstance.__vrv_devtools) {\r\n const info = componentInstance.__vrv_devtools;\r\n node.tags.push({\r\n label: (info.name ? `${info.name.toString()}: ` : '') + info.path,\r\n textColor: 0,\r\n tooltip: 'This component is rendered by <router-view>',\r\n backgroundColor: PINK_500,\r\n });\r\n }\r\n // if multiple useLink are used\r\n if (Array.isArray(componentInstance.__vrl_devtools)) {\r\n componentInstance.__devtoolsApi = api;\r\n componentInstance.__vrl_devtools.forEach(devtoolsData => {\r\n let backgroundColor = ORANGE_400;\r\n let tooltip = '';\r\n if (devtoolsData.isExactActive) {\r\n backgroundColor = LIME_500;\r\n tooltip = 'This is exactly active';\r\n }\r\n else if (devtoolsData.isActive) {\r\n backgroundColor = BLUE_600;\r\n tooltip = 'This link is active';\r\n }\r\n node.tags.push({\r\n label: devtoolsData.route.path,\r\n textColor: 0,\r\n tooltip,\r\n backgroundColor,\r\n });\r\n });\r\n }\r\n });\r\n watch(router.currentRoute, () => {\r\n // refresh active state\r\n refreshRoutesView();\r\n api.notifyComponentUpdate();\r\n api.sendInspectorTree(routerInspectorId);\r\n api.sendInspectorState(routerInspectorId);\r\n });\r\n const navigationsLayerId = 'router:navigations:' + id;\r\n api.addTimelineLayer({\r\n id: navigationsLayerId,\r\n label: `Router${id ? ' ' + id : ''} Navigations`,\r\n color: 0x40a8c4,\r\n });\r\n // const errorsLayerId = 'router:errors'\r\n // api.addTimelineLayer({\r\n // id: errorsLayerId,\r\n // label: 'Router Errors',\r\n // color: 0xea5455,\r\n // })\r\n router.onError((error, to) => {\r\n api.addTimelineEvent({\r\n layerId: navigationsLayerId,\r\n event: {\r\n title: 'Error during Navigation',\r\n subtitle: to.fullPath,\r\n logType: 'error',\r\n time: Date.now(),\r\n data: { error },\r\n groupId: to.meta.__navigationId,\r\n },\r\n });\r\n });\r\n // attached to `meta` and used to group events\r\n let navigationId = 0;\r\n router.beforeEach((to, from) => {\r\n const data = {\r\n guard: formatDisplay('beforeEach'),\r\n from: formatRouteLocation(from, 'Current Location during this navigation'),\r\n to: formatRouteLocation(to, 'Target location'),\r\n };\r\n // Used to group navigations together, hide from devtools\r\n Object.defineProperty(to.meta, '__navigationId', {\r\n value: navigationId++,\r\n });\r\n api.addTimelineEvent({\r\n layerId: navigationsLayerId,\r\n event: {\r\n time: Date.now(),\r\n title: 'Start of navigation',\r\n subtitle: to.fullPath,\r\n data,\r\n groupId: to.meta.__navigationId,\r\n },\r\n });\r\n });\r\n router.afterEach((to, from, failure) => {\r\n const data = {\r\n guard: formatDisplay('afterEach'),\r\n };\r\n if (failure) {\r\n data.failure = {\r\n _custom: {\r\n type: Error,\r\n readOnly: true,\r\n display: failure ? failure.message : '',\r\n tooltip: 'Navigation Failure',\r\n value: failure,\r\n },\r\n };\r\n data.status = formatDisplay('❌');\r\n }\r\n else {\r\n data.status = formatDisplay('✅');\r\n }\r\n // we set here to have the right order\r\n data.from = formatRouteLocation(from, 'Current Location during this navigation');\r\n data.to = formatRouteLocation(to, 'Target location');\r\n api.addTimelineEvent({\r\n layerId: navigationsLayerId,\r\n event: {\r\n title: 'End of navigation',\r\n subtitle: to.fullPath,\r\n time: Date.now(),\r\n data,\r\n logType: failure ? 'warning' : 'default',\r\n groupId: to.meta.__navigationId,\r\n },\r\n });\r\n });\r\n /**\r\n * Inspector of Existing routes\r\n */\r\n const routerInspectorId = 'router-inspector:' + id;\r\n api.addInspector({\r\n id: routerInspectorId,\r\n label: 'Routes' + (id ? ' ' + id : ''),\r\n icon: 'book',\r\n treeFilterPlaceholder: 'Search routes',\r\n });\r\n function refreshRoutesView() {\r\n // the routes view isn't active\r\n if (!activeRoutesPayload)\r\n return;\r\n const payload = activeRoutesPayload;\r\n // children routes will appear as nested\r\n let routes = matcher.getRoutes().filter(route => !route.parent);\r\n // reset match state to false\r\n routes.forEach(resetMatchStateOnRouteRecord);\r\n // apply a match state if there is a payload\r\n if (payload.filter) {\r\n routes = routes.filter(route => \r\n // save matches state based on the payload\r\n isRouteMatching(route, payload.filter.toLowerCase()));\r\n }\r\n // mark active routes\r\n routes.forEach(route => markRouteRecordActive(route, router.currentRoute.value));\r\n payload.rootNodes = routes.map(formatRouteRecordForInspector);\r\n }\r\n let activeRoutesPayload;\r\n api.on.getInspectorTree(payload => {\r\n activeRoutesPayload = payload;\r\n if (payload.app === app && payload.inspectorId === routerInspectorId) {\r\n refreshRoutesView();\r\n }\r\n });\r\n /**\r\n * Display information about the currently selected route record\r\n */\r\n api.on.getInspectorState(payload => {\r\n if (payload.app === app && payload.inspectorId === routerInspectorId) {\r\n const routes = matcher.getRoutes();\r\n const route = routes.find(route => route.record.__vd_id === payload.nodeId);\r\n if (route) {\r\n payload.state = {\r\n options: formatRouteRecordMatcherForStateInspector(route),\r\n };\r\n }\r\n }\r\n });\r\n api.sendInspectorTree(routerInspectorId);\r\n api.sendInspectorState(routerInspectorId);\r\n });\r\n}\r\nfunction modifierForKey(key) {\r\n if (key.optional) {\r\n return key.repeatable ? '*' : '?';\r\n }\r\n else {\r\n return key.repeatable ? '+' : '';\r\n }\r\n}\r\nfunction formatRouteRecordMatcherForStateInspector(route) {\r\n const { record } = route;\r\n const fields = [\r\n { editable: false, key: 'path', value: record.path },\r\n ];\r\n if (record.name != null) {\r\n fields.push({\r\n editable: false,\r\n key: 'name',\r\n value: record.name,\r\n });\r\n }\r\n fields.push({ editable: false, key: 'regexp', value: route.re });\r\n if (route.keys.length) {\r\n fields.push({\r\n editable: false,\r\n key: 'keys',\r\n value: {\r\n _custom: {\r\n type: null,\r\n readOnly: true,\r\n display: route.keys\r\n .map(key => `${key.name}${modifierForKey(key)}`)\r\n .join(' '),\r\n tooltip: 'Param keys',\r\n value: route.keys,\r\n },\r\n },\r\n });\r\n }\r\n if (record.redirect != null) {\r\n fields.push({\r\n editable: false,\r\n key: 'redirect',\r\n value: record.redirect,\r\n });\r\n }\r\n if (route.alias.length) {\r\n fields.push({\r\n editable: false,\r\n key: 'aliases',\r\n value: route.alias.map(alias => alias.record.path),\r\n });\r\n }\r\n fields.push({\r\n key: 'score',\r\n editable: false,\r\n value: {\r\n _custom: {\r\n type: null,\r\n readOnly: true,\r\n display: route.score.map(score => score.join(', ')).join(' | '),\r\n tooltip: 'Score used to sort routes',\r\n value: route.score,\r\n },\r\n },\r\n });\r\n return fields;\r\n}\r\n/**\r\n * Extracted from tailwind palette\r\n */\r\nconst PINK_500 = 0xec4899;\r\nconst BLUE_600 = 0x2563eb;\r\nconst LIME_500 = 0x84cc16;\r\nconst CYAN_400 = 0x22d3ee;\r\nconst ORANGE_400 = 0xfb923c;\r\n// const GRAY_100 = 0xf4f4f5\r\nconst DARK = 0x666666;\r\nfunction formatRouteRecordForInspector(route) {\r\n const tags = [];\r\n const { record } = route;\r\n if (record.name != null) {\r\n tags.push({\r\n label: String(record.name),\r\n textColor: 0,\r\n backgroundColor: CYAN_400,\r\n });\r\n }\r\n if (record.aliasOf) {\r\n tags.push({\r\n label: 'alias',\r\n textColor: 0,\r\n backgroundColor: ORANGE_400,\r\n });\r\n }\r\n if (route.__vd_match) {\r\n tags.push({\r\n label: 'matches',\r\n textColor: 0,\r\n backgroundColor: PINK_500,\r\n });\r\n }\r\n if (route.__vd_exactActive) {\r\n tags.push({\r\n label: 'exact',\r\n textColor: 0,\r\n backgroundColor: LIME_500,\r\n });\r\n }\r\n if (route.__vd_active) {\r\n tags.push({\r\n label: 'active',\r\n textColor: 0,\r\n backgroundColor: BLUE_600,\r\n });\r\n }\r\n if (record.redirect) {\r\n tags.push({\r\n label: 'redirect: ' +\r\n (typeof record.redirect === 'string' ? record.redirect : 'Object'),\r\n textColor: 0xffffff,\r\n backgroundColor: DARK,\r\n });\r\n }\r\n // add an id to be able to select it. Using the `path` is not possible because\r\n // empty path children would collide with their parents\r\n let id = record.__vd_id;\r\n if (id == null) {\r\n id = String(routeRecordId++);\r\n record.__vd_id = id;\r\n }\r\n return {\r\n id,\r\n label: record.path,\r\n tags,\r\n children: route.children.map(formatRouteRecordForInspector),\r\n };\r\n}\r\n// incremental id for route records and inspector state\r\nlet routeRecordId = 0;\r\nconst EXTRACT_REGEXP_RE = /^\\/(.*)\\/([a-z]*)$/;\r\nfunction markRouteRecordActive(route, currentRoute) {\r\n // no route will be active if matched is empty\r\n // reset the matching state\r\n const isExactActive = currentRoute.matched.length &&\r\n isSameRouteRecord(currentRoute.matched[currentRoute.matched.length - 1], route.record);\r\n route.__vd_exactActive = route.__vd_active = isExactActive;\r\n if (!isExactActive) {\r\n route.__vd_active = currentRoute.matched.some(match => isSameRouteRecord(match, route.record));\r\n }\r\n route.children.forEach(childRoute => markRouteRecordActive(childRoute, currentRoute));\r\n}\r\nfunction resetMatchStateOnRouteRecord(route) {\r\n route.__vd_match = false;\r\n route.children.forEach(resetMatchStateOnRouteRecord);\r\n}\r\nfunction isRouteMatching(route, filter) {\r\n const found = String(route.re).match(EXTRACT_REGEXP_RE);\r\n route.__vd_match = false;\r\n if (!found || found.length < 3) {\r\n return false;\r\n }\r\n // use a regexp without $ at the end to match nested routes better\r\n const nonEndingRE = new RegExp(found[1].replace(/\\$$/, ''), found[2]);\r\n if (nonEndingRE.test(filter)) {\r\n // mark children as matches\r\n route.children.forEach(child => isRouteMatching(child, filter));\r\n // exception case: `/`\r\n if (route.record.path !== '/' || filter === '/') {\r\n route.__vd_match = route.re.test(filter);\r\n return true;\r\n }\r\n // hide the / route\r\n return false;\r\n }\r\n const path = route.record.path.toLowerCase();\r\n const decodedPath = decode(path);\r\n // also allow partial matching on the path\r\n if (!filter.startsWith('/') &&\r\n (decodedPath.includes(filter) || path.includes(filter)))\r\n return true;\r\n if (decodedPath.startsWith(filter) || path.startsWith(filter))\r\n return true;\r\n if (route.record.name && String(route.record.name).includes(filter))\r\n return true;\r\n return route.children.some(child => isRouteMatching(child, filter));\r\n}\r\nfunction omit(obj, keys) {\r\n const ret = {};\r\n for (const key in obj) {\r\n if (!keys.includes(key)) {\r\n // @ts-expect-error\r\n ret[key] = obj[key];\r\n }\r\n }\r\n return ret;\r\n}\n\n/**\r\n * Creates a Router instance that can be used by a Vue app.\r\n *\r\n * @param options - {@link RouterOptions}\r\n */\r\nfunction createRouter(options) {\r\n const matcher = createRouterMatcher(options.routes, options);\r\n const parseQuery$1 = options.parseQuery || parseQuery;\r\n const stringifyQuery$1 = options.stringifyQuery || stringifyQuery;\r\n const routerHistory = options.history;\r\n if ((process.env.NODE_ENV !== 'production') && !routerHistory)\r\n throw new Error('Provide the \"history\" option when calling \"createRouter()\":' +\r\n ' https://next.router.vuejs.org/api/#history.');\r\n const beforeGuards = useCallbacks();\r\n const beforeResolveGuards = useCallbacks();\r\n const afterGuards = useCallbacks();\r\n const currentRoute = shallowRef(START_LOCATION_NORMALIZED);\r\n let pendingLocation = START_LOCATION_NORMALIZED;\r\n // leave the scrollRestoration if no scrollBehavior is provided\r\n if (isBrowser && options.scrollBehavior && 'scrollRestoration' in history) {\r\n history.scrollRestoration = 'manual';\r\n }\r\n const normalizeParams = applyToParams.bind(null, paramValue => '' + paramValue);\r\n const encodeParams = applyToParams.bind(null, encodeParam);\r\n const decodeParams = \r\n // @ts-expect-error: intentionally avoid the type check\r\n applyToParams.bind(null, decode);\r\n function addRoute(parentOrRoute, route) {\r\n let parent;\r\n let record;\r\n if (isRouteName(parentOrRoute)) {\r\n parent = matcher.getRecordMatcher(parentOrRoute);\r\n record = route;\r\n }\r\n else {\r\n record = parentOrRoute;\r\n }\r\n return matcher.addRoute(record, parent);\r\n }\r\n function removeRoute(name) {\r\n const recordMatcher = matcher.getRecordMatcher(name);\r\n if (recordMatcher) {\r\n matcher.removeRoute(recordMatcher);\r\n }\r\n else if ((process.env.NODE_ENV !== 'production')) {\r\n warn(`Cannot remove non-existent route \"${String(name)}\"`);\r\n }\r\n }\r\n function getRoutes() {\r\n return matcher.getRoutes().map(routeMatcher => routeMatcher.record);\r\n }\r\n function hasRoute(name) {\r\n return !!matcher.getRecordMatcher(name);\r\n }\r\n function resolve(rawLocation, currentLocation) {\r\n // const objectLocation = routerLocationAsObject(rawLocation)\r\n // we create a copy to modify it later\r\n currentLocation = assign({}, currentLocation || currentRoute.value);\r\n if (typeof rawLocation === 'string') {\r\n const locationNormalized = parseURL(parseQuery$1, rawLocation, currentLocation.path);\r\n const matchedRoute = matcher.resolve({ path: locationNormalized.path }, currentLocation);\r\n const href = routerHistory.createHref(locationNormalized.fullPath);\r\n if ((process.env.NODE_ENV !== 'production')) {\r\n if (href.startsWith('//'))\r\n warn(`Location \"${rawLocation}\" resolved to \"${href}\". A resolved location cannot start with multiple slashes.`);\r\n else if (!matchedRoute.matched.length) {\r\n warn(`No match found for location with path \"${rawLocation}\"`);\r\n }\r\n }\r\n // locationNormalized is always a new object\r\n return assign(locationNormalized, matchedRoute, {\r\n params: decodeParams(matchedRoute.params),\r\n hash: decode(locationNormalized.hash),\r\n redirectedFrom: undefined,\r\n href,\r\n });\r\n }\r\n let matcherLocation;\r\n // path could be relative in object as well\r\n if ('path' in rawLocation) {\r\n if ((process.env.NODE_ENV !== 'production') &&\r\n 'params' in rawLocation &&\r\n !('name' in rawLocation) &&\r\n // @ts-expect-error: the type is never\r\n Object.keys(rawLocation.params).length) {\r\n warn(`Path \"${\r\n // @ts-expect-error: the type is never\r\n rawLocation.path}\" was passed with params but they will be ignored. Use a named route alongside params instead.`);\r\n }\r\n matcherLocation = assign({}, rawLocation, {\r\n path: parseURL(parseQuery$1, rawLocation.path, currentLocation.path).path,\r\n });\r\n }\r\n else {\r\n // remove any nullish param\r\n const targetParams = assign({}, rawLocation.params);\r\n for (const key in targetParams) {\r\n if (targetParams[key] == null) {\r\n delete targetParams[key];\r\n }\r\n }\r\n // pass encoded values to the matcher so it can produce encoded path and fullPath\r\n matcherLocation = assign({}, rawLocation, {\r\n params: encodeParams(rawLocation.params),\r\n });\r\n // current location params are decoded, we need to encode them in case the\r\n // matcher merges the params\r\n currentLocation.params = encodeParams(currentLocation.params);\r\n }\r\n const matchedRoute = matcher.resolve(matcherLocation, currentLocation);\r\n const hash = rawLocation.hash || '';\r\n if ((process.env.NODE_ENV !== 'production') && hash && !hash.startsWith('#')) {\r\n warn(`A \\`hash\\` should always start with the character \"#\". Replace \"${hash}\" with \"#${hash}\".`);\r\n }\r\n // decoding them) the matcher might have merged current location params so\r\n // we need to run the decoding again\r\n matchedRoute.params = normalizeParams(decodeParams(matchedRoute.params));\r\n const fullPath = stringifyURL(stringifyQuery$1, assign({}, rawLocation, {\r\n hash: encodeHash(hash),\r\n path: matchedRoute.path,\r\n }));\r\n const href = routerHistory.createHref(fullPath);\r\n if ((process.env.NODE_ENV !== 'production')) {\r\n if (href.startsWith('//')) {\r\n warn(`Location \"${rawLocation}\" resolved to \"${href}\". A resolved location cannot start with multiple slashes.`);\r\n }\r\n else if (!matchedRoute.matched.length) {\r\n warn(`No match found for location with path \"${'path' in rawLocation ? rawLocation.path : rawLocation}\"`);\r\n }\r\n }\r\n return assign({\r\n fullPath,\r\n // keep the hash encoded so fullPath is effectively path + encodedQuery +\r\n // hash\r\n hash,\r\n query: \r\n // if the user is using a custom query lib like qs, we might have\r\n // nested objects, so we keep the query as is, meaning it can contain\r\n // numbers at `$route.query`, but at the point, the user will have to\r\n // use their own type anyway.\r\n // https://github.com/vuejs/vue-router-next/issues/328#issuecomment-649481567\r\n stringifyQuery$1 === stringifyQuery\r\n ? normalizeQuery(rawLocation.query)\r\n : (rawLocation.query || {}),\r\n }, matchedRoute, {\r\n redirectedFrom: undefined,\r\n href,\r\n });\r\n }\r\n function locationAsObject(to) {\r\n return typeof to === 'string'\r\n ? parseURL(parseQuery$1, to, currentRoute.value.path)\r\n : assign({}, to);\r\n }\r\n function checkCanceledNavigation(to, from) {\r\n if (pendingLocation !== to) {\r\n return createRouterError(8 /* NAVIGATION_CANCELLED */, {\r\n from,\r\n to,\r\n });\r\n }\r\n }\r\n function push(to) {\r\n return pushWithRedirect(to);\r\n }\r\n function replace(to) {\r\n return push(assign(locationAsObject(to), { replace: true }));\r\n }\r\n function handleRedirectRecord(to) {\r\n const lastMatched = to.matched[to.matched.length - 1];\r\n if (lastMatched && lastMatched.redirect) {\r\n const { redirect } = lastMatched;\r\n let newTargetLocation = typeof redirect === 'function' ? redirect(to) : redirect;\r\n if (typeof newTargetLocation === 'string') {\r\n newTargetLocation =\r\n newTargetLocation.includes('?') || newTargetLocation.includes('#')\r\n ? (newTargetLocation = locationAsObject(newTargetLocation))\r\n : // force empty params\r\n { path: newTargetLocation };\r\n // @ts-expect-error: force empty params when a string is passed to let\r\n // the router parse them again\r\n newTargetLocation.params = {};\r\n }\r\n if ((process.env.NODE_ENV !== 'production') &&\r\n !('path' in newTargetLocation) &&\r\n !('name' in newTargetLocation)) {\r\n warn(`Invalid redirect found:\\n${JSON.stringify(newTargetLocation, null, 2)}\\n when navigating to \"${to.fullPath}\". A redirect must contain a name or path. This will break in production.`);\r\n throw new Error('Invalid redirect');\r\n }\r\n return assign({\r\n query: to.query,\r\n hash: to.hash,\r\n params: to.params,\r\n }, newTargetLocation);\r\n }\r\n }\r\n function pushWithRedirect(to, redirectedFrom) {\r\n const targetLocation = (pendingLocation = resolve(to));\r\n const from = currentRoute.value;\r\n const data = to.state;\r\n const force = to.force;\r\n // to could be a string where `replace` is a function\r\n const replace = to.replace === true;\r\n const shouldRedirect = handleRedirectRecord(targetLocation);\r\n if (shouldRedirect)\r\n return pushWithRedirect(assign(locationAsObject(shouldRedirect), {\r\n state: data,\r\n force,\r\n replace,\r\n }), \r\n // keep original redirectedFrom if it exists\r\n redirectedFrom || targetLocation);\r\n // if it was a redirect we already called `pushWithRedirect` above\r\n const toLocation = targetLocation;\r\n toLocation.redirectedFrom = redirectedFrom;\r\n let failure;\r\n if (!force && isSameRouteLocation(stringifyQuery$1, from, targetLocation)) {\r\n failure = createRouterError(16 /* NAVIGATION_DUPLICATED */, { to: toLocation, from });\r\n // trigger scroll to allow scrolling to the same anchor\r\n handleScroll(from, from, \r\n // this is a push, the only way for it to be triggered from a\r\n // history.listen is with a redirect, which makes it become a push\r\n true, \r\n // This cannot be the first navigation because the initial location\r\n // cannot be manually navigated to\r\n false);\r\n }\r\n return (failure ? Promise.resolve(failure) : navigate(toLocation, from))\r\n .catch((error) => isNavigationFailure(error)\r\n ? error\r\n : // reject any unknown error\r\n triggerError(error, toLocation, from))\r\n .then((failure) => {\r\n if (failure) {\r\n if (isNavigationFailure(failure, 2 /* NAVIGATION_GUARD_REDIRECT */)) {\r\n if ((process.env.NODE_ENV !== 'production') &&\r\n // we are redirecting to the same location we were already at\r\n isSameRouteLocation(stringifyQuery$1, resolve(failure.to), toLocation) &&\r\n // and we have done it a couple of times\r\n redirectedFrom &&\r\n // @ts-expect-error: added only in dev\r\n (redirectedFrom._count = redirectedFrom._count\r\n ? // @ts-expect-error\r\n redirectedFrom._count + 1\r\n : 1) > 10) {\r\n warn(`Detected an infinite redirection in a navigation guard when going from \"${from.fullPath}\" to \"${toLocation.fullPath}\". Aborting to avoid a Stack Overflow. This will break in production if not fixed.`);\r\n return Promise.reject(new Error('Infinite redirect in navigation guard'));\r\n }\r\n return pushWithRedirect(\r\n // keep options\r\n assign(locationAsObject(failure.to), {\r\n state: data,\r\n force,\r\n replace,\r\n }), \r\n // preserve the original redirectedFrom if any\r\n redirectedFrom || toLocation);\r\n }\r\n }\r\n else {\r\n // if we fail we don't finalize the navigation\r\n failure = finalizeNavigation(toLocation, from, true, replace, data);\r\n }\r\n triggerAfterEach(toLocation, from, failure);\r\n return failure;\r\n });\r\n }\r\n /**\r\n * Helper to reject and skip all navigation guards if a new navigation happened\r\n * @param to\r\n * @param from\r\n */\r\n function checkCanceledNavigationAndReject(to, from) {\r\n const error = checkCanceledNavigation(to, from);\r\n return error ? Promise.reject(error) : Promise.resolve();\r\n }\r\n // TODO: refactor the whole before guards by internally using router.beforeEach\r\n function navigate(to, from) {\r\n let guards;\r\n const [leavingRecords, updatingRecords, enteringRecords] = extractChangingRecords(to, from);\r\n // all components here have been resolved once because we are leaving\r\n guards = extractComponentsGuards(leavingRecords.reverse(), 'beforeRouteLeave', to, from);\r\n // leavingRecords is already reversed\r\n for (const record of leavingRecords) {\r\n record.leaveGuards.forEach(guard => {\r\n guards.push(guardToPromiseFn(guard, to, from));\r\n });\r\n }\r\n const canceledNavigationCheck = checkCanceledNavigationAndReject.bind(null, to, from);\r\n guards.push(canceledNavigationCheck);\r\n // run the queue of per route beforeRouteLeave guards\r\n return (runGuardQueue(guards)\r\n .then(() => {\r\n // check global guards beforeEach\r\n guards = [];\r\n for (const guard of beforeGuards.list()) {\r\n guards.push(guardToPromiseFn(guard, to, from));\r\n }\r\n guards.push(canceledNavigationCheck);\r\n return runGuardQueue(guards);\r\n })\r\n .then(() => {\r\n // check in components beforeRouteUpdate\r\n guards = extractComponentsGuards(updatingRecords, 'beforeRouteUpdate', to, from);\r\n for (const record of updatingRecords) {\r\n record.updateGuards.forEach(guard => {\r\n guards.push(guardToPromiseFn(guard, to, from));\r\n });\r\n }\r\n guards.push(canceledNavigationCheck);\r\n // run the queue of per route beforeEnter guards\r\n return runGuardQueue(guards);\r\n })\r\n .then(() => {\r\n // check the route beforeEnter\r\n guards = [];\r\n for (const record of to.matched) {\r\n // do not trigger beforeEnter on reused views\r\n if (record.beforeEnter && !from.matched.includes(record)) {\r\n if (Array.isArray(record.beforeEnter)) {\r\n for (const beforeEnter of record.beforeEnter)\r\n guards.push(guardToPromiseFn(beforeEnter, to, from));\r\n }\r\n else {\r\n guards.push(guardToPromiseFn(record.beforeEnter, to, from));\r\n }\r\n }\r\n }\r\n guards.push(canceledNavigationCheck);\r\n // run the queue of per route beforeEnter guards\r\n return runGuardQueue(guards);\r\n })\r\n .then(() => {\r\n // NOTE: at this point to.matched is normalized and does not contain any () => Promise\r\n // clear existing enterCallbacks, these are added by extractComponentsGuards\r\n to.matched.forEach(record => (record.enterCallbacks = {}));\r\n // check in-component beforeRouteEnter\r\n guards = extractComponentsGuards(enteringRecords, 'beforeRouteEnter', to, from);\r\n guards.push(canceledNavigationCheck);\r\n // run the queue of per route beforeEnter guards\r\n return runGuardQueue(guards);\r\n })\r\n .then(() => {\r\n // check global guards beforeResolve\r\n guards = [];\r\n for (const guard of beforeResolveGuards.list()) {\r\n guards.push(guardToPromiseFn(guard, to, from));\r\n }\r\n guards.push(canceledNavigationCheck);\r\n return runGuardQueue(guards);\r\n })\r\n // catch any navigation canceled\r\n .catch(err => isNavigationFailure(err, 8 /* NAVIGATION_CANCELLED */)\r\n ? err\r\n : Promise.reject(err)));\r\n }\r\n function triggerAfterEach(to, from, failure) {\r\n // navigation is confirmed, call afterGuards\r\n // TODO: wrap with error handlers\r\n for (const guard of afterGuards.list())\r\n guard(to, from, failure);\r\n }\r\n /**\r\n * - Cleans up any navigation guards\r\n * - Changes the url if necessary\r\n * - Calls the scrollBehavior\r\n */\r\n function finalizeNavigation(toLocation, from, isPush, replace, data) {\r\n // a more recent navigation took place\r\n const error = checkCanceledNavigation(toLocation, from);\r\n if (error)\r\n return error;\r\n // only consider as push if it's not the first navigation\r\n const isFirstNavigation = from === START_LOCATION_NORMALIZED;\r\n const state = !isBrowser ? {} : history.state;\r\n // change URL only if the user did a push/replace and if it's not the initial navigation because\r\n // it's just reflecting the url\r\n if (isPush) {\r\n // on the initial navigation, we want to reuse the scroll position from\r\n // history state if it exists\r\n if (replace || isFirstNavigation)\r\n routerHistory.replace(toLocation.fullPath, assign({\r\n scroll: isFirstNavigation && state && state.scroll,\r\n }, data));\r\n else\r\n routerHistory.push(toLocation.fullPath, data);\r\n }\r\n // accept current navigation\r\n currentRoute.value = toLocation;\r\n handleScroll(toLocation, from, isPush, isFirstNavigation);\r\n markAsReady();\r\n }\r\n let removeHistoryListener;\r\n // attach listener to history to trigger navigations\r\n function setupListeners() {\r\n removeHistoryListener = routerHistory.listen((to, _from, info) => {\r\n // cannot be a redirect route because it was in history\r\n const toLocation = resolve(to);\r\n // due to dynamic routing, and to hash history with manual navigation\r\n // (manually changing the url or calling history.hash = '#/somewhere'),\r\n // there could be a redirect record in history\r\n const shouldRedirect = handleRedirectRecord(toLocation);\r\n if (shouldRedirect) {\r\n pushWithRedirect(assign(shouldRedirect, { replace: true }), toLocation).catch(noop);\r\n return;\r\n }\r\n pendingLocation = toLocation;\r\n const from = currentRoute.value;\r\n // TODO: should be moved to web history?\r\n if (isBrowser) {\r\n saveScrollPosition(getScrollKey(from.fullPath, info.delta), computeScrollPosition());\r\n }\r\n navigate(toLocation, from)\r\n .catch((error) => {\r\n if (isNavigationFailure(error, 4 /* NAVIGATION_ABORTED */ | 8 /* NAVIGATION_CANCELLED */)) {\r\n return error;\r\n }\r\n if (isNavigationFailure(error, 2 /* NAVIGATION_GUARD_REDIRECT */)) {\r\n // Here we could call if (info.delta) routerHistory.go(-info.delta,\r\n // false) but this is bug prone as we have no way to wait the\r\n // navigation to be finished before calling pushWithRedirect. Using\r\n // a setTimeout of 16ms seems to work but there is not guarantee for\r\n // it to work on every browser. So Instead we do not restore the\r\n // history entry and trigger a new navigation as requested by the\r\n // navigation guard.\r\n // the error is already handled by router.push we just want to avoid\r\n // logging the error\r\n pushWithRedirect(error.to, toLocation\r\n // avoid an uncaught rejection, let push call triggerError\r\n )\r\n .then(failure => {\r\n // manual change in hash history #916 ending up in the URL not\r\n // changing but it was changed by the manual url change, so we\r\n // need to manually change it ourselves\r\n if (isNavigationFailure(failure, 4 /* NAVIGATION_ABORTED */ |\r\n 16 /* NAVIGATION_DUPLICATED */) &&\r\n !info.delta &&\r\n info.type === NavigationType.pop) {\r\n routerHistory.go(-1, false);\r\n }\r\n })\r\n .catch(noop);\r\n // avoid the then branch\r\n return Promise.reject();\r\n }\r\n // do not restore history on unknown direction\r\n if (info.delta)\r\n routerHistory.go(-info.delta, false);\r\n // unrecognized error, transfer to the global handler\r\n return triggerError(error, toLocation, from);\r\n })\r\n .then((failure) => {\r\n failure =\r\n failure ||\r\n finalizeNavigation(\r\n // after navigation, all matched components are resolved\r\n toLocation, from, false);\r\n // revert the navigation\r\n if (failure) {\r\n if (info.delta) {\r\n routerHistory.go(-info.delta, false);\r\n }\r\n else if (info.type === NavigationType.pop &&\r\n isNavigationFailure(failure, 4 /* NAVIGATION_ABORTED */ | 16 /* NAVIGATION_DUPLICATED */)) {\r\n // manual change in hash history #916\r\n // it's like a push but lacks the information of the direction\r\n routerHistory.go(-1, false);\r\n }\r\n }\r\n triggerAfterEach(toLocation, from, failure);\r\n })\r\n .catch(noop);\r\n });\r\n }\r\n // Initialization and Errors\r\n let readyHandlers = useCallbacks();\r\n let errorHandlers = useCallbacks();\r\n let ready;\r\n /**\r\n * Trigger errorHandlers added via onError and throws the error as well\r\n *\r\n * @param error - error to throw\r\n * @param to - location we were navigating to when the error happened\r\n * @param from - location we were navigating from when the error happened\r\n * @returns the error as a rejected promise\r\n */\r\n function triggerError(error, to, from) {\r\n markAsReady(error);\r\n const list = errorHandlers.list();\r\n if (list.length) {\r\n list.forEach(handler => handler(error, to, from));\r\n }\r\n else {\r\n if ((process.env.NODE_ENV !== 'production')) {\r\n warn('uncaught error during route navigation:');\r\n }\r\n console.error(error);\r\n }\r\n return Promise.reject(error);\r\n }\r\n function isReady() {\r\n if (ready && currentRoute.value !== START_LOCATION_NORMALIZED)\r\n return Promise.resolve();\r\n return new Promise((resolve, reject) => {\r\n readyHandlers.add([resolve, reject]);\r\n });\r\n }\r\n /**\r\n * Mark the router as ready, resolving the promised returned by isReady(). Can\r\n * only be called once, otherwise does nothing.\r\n * @param err - optional error\r\n */\r\n function markAsReady(err) {\r\n if (ready)\r\n return;\r\n ready = true;\r\n setupListeners();\r\n readyHandlers\r\n .list()\r\n .forEach(([resolve, reject]) => (err ? reject(err) : resolve()));\r\n readyHandlers.reset();\r\n }\r\n // Scroll behavior\r\n function handleScroll(to, from, isPush, isFirstNavigation) {\r\n const { scrollBehavior } = options;\r\n if (!isBrowser || !scrollBehavior)\r\n return Promise.resolve();\r\n const scrollPosition = (!isPush && getSavedScrollPosition(getScrollKey(to.fullPath, 0))) ||\r\n ((isFirstNavigation || !isPush) &&\r\n history.state &&\r\n history.state.scroll) ||\r\n null;\r\n return nextTick()\r\n .then(() => scrollBehavior(to, from, scrollPosition))\r\n .then(position => position && scrollToPosition(position))\r\n .catch(err => triggerError(err, to, from));\r\n }\r\n const go = (delta) => routerHistory.go(delta);\r\n let started;\r\n const installedApps = new Set();\r\n const router = {\r\n currentRoute,\r\n addRoute,\r\n removeRoute,\r\n hasRoute,\r\n getRoutes,\r\n resolve,\r\n options,\r\n push,\r\n replace,\r\n go,\r\n back: () => go(-1),\r\n forward: () => go(1),\r\n beforeEach: beforeGuards.add,\r\n beforeResolve: beforeResolveGuards.add,\r\n afterEach: afterGuards.add,\r\n onError: errorHandlers.add,\r\n isReady,\r\n install(app) {\r\n const router = this;\r\n app.component('RouterLink', RouterLink);\r\n app.component('RouterView', RouterView);\r\n app.config.globalProperties.$router = router;\r\n Object.defineProperty(app.config.globalProperties, '$route', {\r\n enumerable: true,\r\n get: () => unref(currentRoute),\r\n });\r\n // this initial navigation is only necessary on client, on server it doesn't\r\n // make sense because it will create an extra unnecessary navigation and could\r\n // lead to problems\r\n if (isBrowser &&\r\n // used for the initial navigation client side to avoid pushing\r\n // multiple times when the router is used in multiple apps\r\n !started &&\r\n currentRoute.value === START_LOCATION_NORMALIZED) {\r\n // see above\r\n started = true;\r\n push(routerHistory.location).catch(err => {\r\n if ((process.env.NODE_ENV !== 'production'))\r\n warn('Unexpected error when starting the router:', err);\r\n });\r\n }\r\n const reactiveRoute = {};\r\n for (const key in START_LOCATION_NORMALIZED) {\r\n // @ts-expect-error: the key matches\r\n reactiveRoute[key] = computed(() => currentRoute.value[key]);\r\n }\r\n app.provide(routerKey, router);\r\n app.provide(routeLocationKey, reactive(reactiveRoute));\r\n app.provide(routerViewLocationKey, currentRoute);\r\n const unmountApp = app.unmount;\r\n installedApps.add(app);\r\n app.unmount = function () {\r\n installedApps.delete(app);\r\n // the router is not attached to an app anymore\r\n if (installedApps.size < 1) {\r\n // invalidate the current navigation\r\n pendingLocation = START_LOCATION_NORMALIZED;\r\n removeHistoryListener && removeHistoryListener();\r\n currentRoute.value = START_LOCATION_NORMALIZED;\r\n started = false;\r\n ready = false;\r\n }\r\n unmountApp();\r\n };\r\n if (((process.env.NODE_ENV !== 'production') || __VUE_PROD_DEVTOOLS__) && isBrowser) {\r\n addDevtools(app, router, matcher);\r\n }\r\n },\r\n };\r\n return router;\r\n}\r\nfunction runGuardQueue(guards) {\r\n return guards.reduce((promise, guard) => promise.then(() => guard()), Promise.resolve());\r\n}\r\nfunction extractChangingRecords(to, from) {\r\n const leavingRecords = [];\r\n const updatingRecords = [];\r\n const enteringRecords = [];\r\n const len = Math.max(from.matched.length, to.matched.length);\r\n for (let i = 0; i < len; i++) {\r\n const recordFrom = from.matched[i];\r\n if (recordFrom) {\r\n if (to.matched.find(record => isSameRouteRecord(record, recordFrom)))\r\n updatingRecords.push(recordFrom);\r\n else\r\n leavingRecords.push(recordFrom);\r\n }\r\n const recordTo = to.matched[i];\r\n if (recordTo) {\r\n // the type doesn't matter because we are comparing per reference\r\n if (!from.matched.find(record => isSameRouteRecord(record, recordTo))) {\r\n enteringRecords.push(recordTo);\r\n }\r\n }\r\n }\r\n return [leavingRecords, updatingRecords, enteringRecords];\r\n}\n\n/**\r\n * Returns the router instance. Equivalent to using `$router` inside\r\n * templates.\r\n */\r\nfunction useRouter() {\r\n return inject(routerKey);\r\n}\r\n/**\r\n * Returns the current route location. Equivalent to using `$route` inside\r\n * templates.\r\n */\r\nfunction useRoute() {\r\n return inject(routeLocationKey);\r\n}\n\nexport { NavigationFailureType, RouterLink, RouterView, START_LOCATION_NORMALIZED as START_LOCATION, createMemoryHistory, createRouter, createRouterMatcher, createWebHashHistory, createWebHistory, isNavigationFailure, matchedRouteKey, onBeforeRouteLeave, onBeforeRouteUpdate, parseQuery, routeLocationKey, routerKey, routerViewLocationKey, stringifyQuery, useLink, useRoute, useRouter, viewDepthKey };\n","import { extend, isArray, isMap, isIntegerKey, isSymbol, hasOwn, isObject, hasChanged, makeMap, capitalize, toRawType, def, isFunction, NOOP } from '@vue/shared';\n\nfunction warn(msg, ...args) {\r\n console.warn(`[Vue warn] ${msg}`, ...args);\r\n}\n\nlet activeEffectScope;\r\nconst effectScopeStack = [];\r\nclass EffectScope {\r\n constructor(detached = false) {\r\n this.active = true;\r\n this.effects = [];\r\n this.cleanups = [];\r\n if (!detached && activeEffectScope) {\r\n this.parent = activeEffectScope;\r\n this.index =\r\n (activeEffectScope.scopes || (activeEffectScope.scopes = [])).push(this) - 1;\r\n }\r\n }\r\n run(fn) {\r\n if (this.active) {\r\n try {\r\n this.on();\r\n return fn();\r\n }\r\n finally {\r\n this.off();\r\n }\r\n }\r\n else if ((process.env.NODE_ENV !== 'production')) {\r\n warn(`cannot run an inactive effect scope.`);\r\n }\r\n }\r\n on() {\r\n if (this.active) {\r\n effectScopeStack.push(this);\r\n activeEffectScope = this;\r\n }\r\n }\r\n off() {\r\n if (this.active) {\r\n effectScopeStack.pop();\r\n activeEffectScope = effectScopeStack[effectScopeStack.length - 1];\r\n }\r\n }\r\n stop(fromParent) {\r\n if (this.active) {\r\n this.effects.forEach(e => e.stop());\r\n this.cleanups.forEach(cleanup => cleanup());\r\n if (this.scopes) {\r\n this.scopes.forEach(e => e.stop(true));\r\n }\r\n // nested scope, dereference from parent to avoid memory leaks\r\n if (this.parent && !fromParent) {\r\n // optimized O(1) removal\r\n const last = this.parent.scopes.pop();\r\n if (last && last !== this) {\r\n this.parent.scopes[this.index] = last;\r\n last.index = this.index;\r\n }\r\n }\r\n this.active = false;\r\n }\r\n }\r\n}\r\nfunction effectScope(detached) {\r\n return new EffectScope(detached);\r\n}\r\nfunction recordEffectScope(effect, scope) {\r\n scope = scope || activeEffectScope;\r\n if (scope && scope.active) {\r\n scope.effects.push(effect);\r\n }\r\n}\r\nfunction getCurrentScope() {\r\n return activeEffectScope;\r\n}\r\nfunction onScopeDispose(fn) {\r\n if (activeEffectScope) {\r\n activeEffectScope.cleanups.push(fn);\r\n }\r\n else if ((process.env.NODE_ENV !== 'production')) {\r\n warn(`onScopeDispose() is called when there is no active effect scope` +\r\n ` to be associated with.`);\r\n }\r\n}\n\nconst createDep = (effects) => {\r\n const dep = new Set(effects);\r\n dep.w = 0;\r\n dep.n = 0;\r\n return dep;\r\n};\r\nconst wasTracked = (dep) => (dep.w & trackOpBit) > 0;\r\nconst newTracked = (dep) => (dep.n & trackOpBit) > 0;\r\nconst initDepMarkers = ({ deps }) => {\r\n if (deps.length) {\r\n for (let i = 0; i < deps.length; i++) {\r\n deps[i].w |= trackOpBit; // set was tracked\r\n }\r\n }\r\n};\r\nconst finalizeDepMarkers = (effect) => {\r\n const { deps } = effect;\r\n if (deps.length) {\r\n let ptr = 0;\r\n for (let i = 0; i < deps.length; i++) {\r\n const dep = deps[i];\r\n if (wasTracked(dep) && !newTracked(dep)) {\r\n dep.delete(effect);\r\n }\r\n else {\r\n deps[ptr++] = dep;\r\n }\r\n // clear bits\r\n dep.w &= ~trackOpBit;\r\n dep.n &= ~trackOpBit;\r\n }\r\n deps.length = ptr;\r\n }\r\n};\n\nconst targetMap = new WeakMap();\r\n// The number of effects currently being tracked recursively.\r\nlet effectTrackDepth = 0;\r\nlet trackOpBit = 1;\r\n/**\r\n * The bitwise track markers support at most 30 levels of recursion.\r\n * This value is chosen to enable modern JS engines to use a SMI on all platforms.\r\n * When recursion depth is greater, fall back to using a full cleanup.\r\n */\r\nconst maxMarkerBits = 30;\r\nconst effectStack = [];\r\nlet activeEffect;\r\nconst ITERATE_KEY = Symbol((process.env.NODE_ENV !== 'production') ? 'iterate' : '');\r\nconst MAP_KEY_ITERATE_KEY = Symbol((process.env.NODE_ENV !== 'production') ? 'Map key iterate' : '');\r\nclass ReactiveEffect {\r\n constructor(fn, scheduler = null, scope) {\r\n this.fn = fn;\r\n this.scheduler = scheduler;\r\n this.active = true;\r\n this.deps = [];\r\n recordEffectScope(this, scope);\r\n }\r\n run() {\r\n if (!this.active) {\r\n return this.fn();\r\n }\r\n if (!effectStack.includes(this)) {\r\n try {\r\n effectStack.push((activeEffect = this));\r\n enableTracking();\r\n trackOpBit = 1 << ++effectTrackDepth;\r\n if (effectTrackDepth <= maxMarkerBits) {\r\n initDepMarkers(this);\r\n }\r\n else {\r\n cleanupEffect(this);\r\n }\r\n return this.fn();\r\n }\r\n finally {\r\n if (effectTrackDepth <= maxMarkerBits) {\r\n finalizeDepMarkers(this);\r\n }\r\n trackOpBit = 1 << --effectTrackDepth;\r\n resetTracking();\r\n effectStack.pop();\r\n const n = effectStack.length;\r\n activeEffect = n > 0 ? effectStack[n - 1] : undefined;\r\n }\r\n }\r\n }\r\n stop() {\r\n if (this.active) {\r\n cleanupEffect(this);\r\n if (this.onStop) {\r\n this.onStop();\r\n }\r\n this.active = false;\r\n }\r\n }\r\n}\r\nfunction cleanupEffect(effect) {\r\n const { deps } = effect;\r\n if (deps.length) {\r\n for (let i = 0; i < deps.length; i++) {\r\n deps[i].delete(effect);\r\n }\r\n deps.length = 0;\r\n }\r\n}\r\nfunction effect(fn, options) {\r\n if (fn.effect) {\r\n fn = fn.effect.fn;\r\n }\r\n const _effect = new ReactiveEffect(fn);\r\n if (options) {\r\n extend(_effect, options);\r\n if (options.scope)\r\n recordEffectScope(_effect, options.scope);\r\n }\r\n if (!options || !options.lazy) {\r\n _effect.run();\r\n }\r\n const runner = _effect.run.bind(_effect);\r\n runner.effect = _effect;\r\n return runner;\r\n}\r\nfunction stop(runner) {\r\n runner.effect.stop();\r\n}\r\nlet shouldTrack = true;\r\nconst trackStack = [];\r\nfunction pauseTracking() {\r\n trackStack.push(shouldTrack);\r\n shouldTrack = false;\r\n}\r\nfunction enableTracking() {\r\n trackStack.push(shouldTrack);\r\n shouldTrack = true;\r\n}\r\nfunction resetTracking() {\r\n const last = trackStack.pop();\r\n shouldTrack = last === undefined ? true : last;\r\n}\r\nfunction track(target, type, key) {\r\n if (!isTracking()) {\r\n return;\r\n }\r\n let depsMap = targetMap.get(target);\r\n if (!depsMap) {\r\n targetMap.set(target, (depsMap = new Map()));\r\n }\r\n let dep = depsMap.get(key);\r\n if (!dep) {\r\n depsMap.set(key, (dep = createDep()));\r\n }\r\n const eventInfo = (process.env.NODE_ENV !== 'production')\r\n ? { effect: activeEffect, target, type, key }\r\n : undefined;\r\n trackEffects(dep, eventInfo);\r\n}\r\nfunction isTracking() {\r\n return shouldTrack && activeEffect !== undefined;\r\n}\r\nfunction trackEffects(dep, debuggerEventExtraInfo) {\r\n let shouldTrack = false;\r\n if (effectTrackDepth <= maxMarkerBits) {\r\n if (!newTracked(dep)) {\r\n dep.n |= trackOpBit; // set newly tracked\r\n shouldTrack = !wasTracked(dep);\r\n }\r\n }\r\n else {\r\n // Full cleanup mode.\r\n shouldTrack = !dep.has(activeEffect);\r\n }\r\n if (shouldTrack) {\r\n dep.add(activeEffect);\r\n activeEffect.deps.push(dep);\r\n if ((process.env.NODE_ENV !== 'production') && activeEffect.onTrack) {\r\n activeEffect.onTrack(Object.assign({\r\n effect: activeEffect\r\n }, debuggerEventExtraInfo));\r\n }\r\n }\r\n}\r\nfunction trigger(target, type, key, newValue, oldValue, oldTarget) {\r\n const depsMap = targetMap.get(target);\r\n if (!depsMap) {\r\n // never been tracked\r\n return;\r\n }\r\n let deps = [];\r\n if (type === \"clear\" /* CLEAR */) {\r\n // collection being cleared\r\n // trigger all effects for target\r\n deps = [...depsMap.values()];\r\n }\r\n else if (key === 'length' && isArray(target)) {\r\n depsMap.forEach((dep, key) => {\r\n if (key === 'length' || key >= newValue) {\r\n deps.push(dep);\r\n }\r\n });\r\n }\r\n else {\r\n // schedule runs for SET | ADD | DELETE\r\n if (key !== void 0) {\r\n deps.push(depsMap.get(key));\r\n }\r\n // also run for iteration key on ADD | DELETE | Map.SET\r\n switch (type) {\r\n case \"add\" /* ADD */:\r\n if (!isArray(target)) {\r\n deps.push(depsMap.get(ITERATE_KEY));\r\n if (isMap(target)) {\r\n deps.push(depsMap.get(MAP_KEY_ITERATE_KEY));\r\n }\r\n }\r\n else if (isIntegerKey(key)) {\r\n // new index added to array -> length changes\r\n deps.push(depsMap.get('length'));\r\n }\r\n break;\r\n case \"delete\" /* DELETE */:\r\n if (!isArray(target)) {\r\n deps.push(depsMap.get(ITERATE_KEY));\r\n if (isMap(target)) {\r\n deps.push(depsMap.get(MAP_KEY_ITERATE_KEY));\r\n }\r\n }\r\n break;\r\n case \"set\" /* SET */:\r\n if (isMap(target)) {\r\n deps.push(depsMap.get(ITERATE_KEY));\r\n }\r\n break;\r\n }\r\n }\r\n const eventInfo = (process.env.NODE_ENV !== 'production')\r\n ? { target, type, key, newValue, oldValue, oldTarget }\r\n : undefined;\r\n if (deps.length === 1) {\r\n if (deps[0]) {\r\n if ((process.env.NODE_ENV !== 'production')) {\r\n triggerEffects(deps[0], eventInfo);\r\n }\r\n else {\r\n triggerEffects(deps[0]);\r\n }\r\n }\r\n }\r\n else {\r\n const effects = [];\r\n for (const dep of deps) {\r\n if (dep) {\r\n effects.push(...dep);\r\n }\r\n }\r\n if ((process.env.NODE_ENV !== 'production')) {\r\n triggerEffects(createDep(effects), eventInfo);\r\n }\r\n else {\r\n triggerEffects(createDep(effects));\r\n }\r\n }\r\n}\r\nfunction triggerEffects(dep, debuggerEventExtraInfo) {\r\n // spread into array for stabilization\r\n for (const effect of isArray(dep) ? dep : [...dep]) {\r\n if (effect !== activeEffect || effect.allowRecurse) {\r\n if ((process.env.NODE_ENV !== 'production') && effect.onTrigger) {\r\n effect.onTrigger(extend({ effect }, debuggerEventExtraInfo));\r\n }\r\n if (effect.scheduler) {\r\n effect.scheduler();\r\n }\r\n else {\r\n effect.run();\r\n }\r\n }\r\n }\r\n}\n\nconst isNonTrackableKeys = /*#__PURE__*/ makeMap(`__proto__,__v_isRef,__isVue`);\r\nconst builtInSymbols = new Set(Object.getOwnPropertyNames(Symbol)\r\n .map(key => Symbol[key])\r\n .filter(isSymbol));\r\nconst get = /*#__PURE__*/ createGetter();\r\nconst shallowGet = /*#__PURE__*/ createGetter(false, true);\r\nconst readonlyGet = /*#__PURE__*/ createGetter(true);\r\nconst shallowReadonlyGet = /*#__PURE__*/ createGetter(true, true);\r\nconst arrayInstrumentations = /*#__PURE__*/ createArrayInstrumentations();\r\nfunction createArrayInstrumentations() {\r\n const instrumentations = {};\r\n ['includes', 'indexOf', 'lastIndexOf'].forEach(key => {\r\n instrumentations[key] = function (...args) {\r\n const arr = toRaw(this);\r\n for (let i = 0, l = this.length; i < l; i++) {\r\n track(arr, \"get\" /* GET */, i + '');\r\n }\r\n // we run the method using the original args first (which may be reactive)\r\n const res = arr[key](...args);\r\n if (res === -1 || res === false) {\r\n // if that didn't work, run it again using raw values.\r\n return arr[key](...args.map(toRaw));\r\n }\r\n else {\r\n return res;\r\n }\r\n };\r\n });\r\n ['push', 'pop', 'shift', 'unshift', 'splice'].forEach(key => {\r\n instrumentations[key] = function (...args) {\r\n pauseTracking();\r\n const res = toRaw(this)[key].apply(this, args);\r\n resetTracking();\r\n return res;\r\n };\r\n });\r\n return instrumentations;\r\n}\r\nfunction createGetter(isReadonly = false, shallow = false) {\r\n return function get(target, key, receiver) {\r\n if (key === \"__v_isReactive\" /* IS_REACTIVE */) {\r\n return !isReadonly;\r\n }\r\n else if (key === \"__v_isReadonly\" /* IS_READONLY */) {\r\n return isReadonly;\r\n }\r\n else if (key === \"__v_raw\" /* RAW */ &&\r\n receiver ===\r\n (isReadonly\r\n ? shallow\r\n ? shallowReadonlyMap\r\n : readonlyMap\r\n : shallow\r\n ? shallowReactiveMap\r\n : reactiveMap).get(target)) {\r\n return target;\r\n }\r\n const targetIsArray = isArray(target);\r\n if (!isReadonly && targetIsArray && hasOwn(arrayInstrumentations, key)) {\r\n return Reflect.get(arrayInstrumentations, key, receiver);\r\n }\r\n const res = Reflect.get(target, key, receiver);\r\n if (isSymbol(key) ? builtInSymbols.has(key) : isNonTrackableKeys(key)) {\r\n return res;\r\n }\r\n if (!isReadonly) {\r\n track(target, \"get\" /* GET */, key);\r\n }\r\n if (shallow) {\r\n return res;\r\n }\r\n if (isRef(res)) {\r\n // ref unwrapping - does not apply for Array + integer key.\r\n const shouldUnwrap = !targetIsArray || !isIntegerKey(key);\r\n return shouldUnwrap ? res.value : res;\r\n }\r\n if (isObject(res)) {\r\n // Convert returned value into a proxy as well. we do the isObject check\r\n // here to avoid invalid value warning. Also need to lazy access readonly\r\n // and reactive here to avoid circular dependency.\r\n return isReadonly ? readonly(res) : reactive(res);\r\n }\r\n return res;\r\n };\r\n}\r\nconst set = /*#__PURE__*/ createSetter();\r\nconst shallowSet = /*#__PURE__*/ createSetter(true);\r\nfunction createSetter(shallow = false) {\r\n return function set(target, key, value, receiver) {\r\n let oldValue = target[key];\r\n if (!shallow && !isReadonly(value)) {\r\n value = toRaw(value);\r\n oldValue = toRaw(oldValue);\r\n if (!isArray(target) && isRef(oldValue) && !isRef(value)) {\r\n oldValue.value = value;\r\n return true;\r\n }\r\n }\r\n const hadKey = isArray(target) && isIntegerKey(key)\r\n ? Number(key) < target.length\r\n : hasOwn(target, key);\r\n const result = Reflect.set(target, key, value, receiver);\r\n // don't trigger if target is something up in the prototype chain of original\r\n if (target === toRaw(receiver)) {\r\n if (!hadKey) {\r\n trigger(target, \"add\" /* ADD */, key, value);\r\n }\r\n else if (hasChanged(value, oldValue)) {\r\n trigger(target, \"set\" /* SET */, key, value, oldValue);\r\n }\r\n }\r\n return result;\r\n };\r\n}\r\nfunction deleteProperty(target, key) {\r\n const hadKey = hasOwn(target, key);\r\n const oldValue = target[key];\r\n const result = Reflect.deleteProperty(target, key);\r\n if (result && hadKey) {\r\n trigger(target, \"delete\" /* DELETE */, key, undefined, oldValue);\r\n }\r\n return result;\r\n}\r\nfunction has(target, key) {\r\n const result = Reflect.has(target, key);\r\n if (!isSymbol(key) || !builtInSymbols.has(key)) {\r\n track(target, \"has\" /* HAS */, key);\r\n }\r\n return result;\r\n}\r\nfunction ownKeys(target) {\r\n track(target, \"iterate\" /* ITERATE */, isArray(target) ? 'length' : ITERATE_KEY);\r\n return Reflect.ownKeys(target);\r\n}\r\nconst mutableHandlers = {\r\n get,\r\n set,\r\n deleteProperty,\r\n has,\r\n ownKeys\r\n};\r\nconst readonlyHandlers = {\r\n get: readonlyGet,\r\n set(target, key) {\r\n if ((process.env.NODE_ENV !== 'production')) {\r\n console.warn(`Set operation on key \"${String(key)}\" failed: target is readonly.`, target);\r\n }\r\n return true;\r\n },\r\n deleteProperty(target, key) {\r\n if ((process.env.NODE_ENV !== 'production')) {\r\n console.warn(`Delete operation on key \"${String(key)}\" failed: target is readonly.`, target);\r\n }\r\n return true;\r\n }\r\n};\r\nconst shallowReactiveHandlers = /*#__PURE__*/ extend({}, mutableHandlers, {\r\n get: shallowGet,\r\n set: shallowSet\r\n});\r\n// Props handlers are special in the sense that it should not unwrap top-level\r\n// refs (in order to allow refs to be explicitly passed down), but should\r\n// retain the reactivity of the normal readonly object.\r\nconst shallowReadonlyHandlers = /*#__PURE__*/ extend({}, readonlyHandlers, {\r\n get: shallowReadonlyGet\r\n});\n\nconst toShallow = (value) => value;\r\nconst getProto = (v) => Reflect.getPrototypeOf(v);\r\nfunction get$1(target, key, isReadonly = false, isShallow = false) {\r\n // #1772: readonly(reactive(Map)) should return readonly + reactive version\r\n // of the value\r\n target = target[\"__v_raw\" /* RAW */];\r\n const rawTarget = toRaw(target);\r\n const rawKey = toRaw(key);\r\n if (key !== rawKey) {\r\n !isReadonly && track(rawTarget, \"get\" /* GET */, key);\r\n }\r\n !isReadonly && track(rawTarget, \"get\" /* GET */, rawKey);\r\n const { has } = getProto(rawTarget);\r\n const wrap = isShallow ? toShallow : isReadonly ? toReadonly : toReactive;\r\n if (has.call(rawTarget, key)) {\r\n return wrap(target.get(key));\r\n }\r\n else if (has.call(rawTarget, rawKey)) {\r\n return wrap(target.get(rawKey));\r\n }\r\n else if (target !== rawTarget) {\r\n // #3602 readonly(reactive(Map))\r\n // ensure that the nested reactive `Map` can do tracking for itself\r\n target.get(key);\r\n }\r\n}\r\nfunction has$1(key, isReadonly = false) {\r\n const target = this[\"__v_raw\" /* RAW */];\r\n const rawTarget = toRaw(target);\r\n const rawKey = toRaw(key);\r\n if (key !== rawKey) {\r\n !isReadonly && track(rawTarget, \"has\" /* HAS */, key);\r\n }\r\n !isReadonly && track(rawTarget, \"has\" /* HAS */, rawKey);\r\n return key === rawKey\r\n ? target.has(key)\r\n : target.has(key) || target.has(rawKey);\r\n}\r\nfunction size(target, isReadonly = false) {\r\n target = target[\"__v_raw\" /* RAW */];\r\n !isReadonly && track(toRaw(target), \"iterate\" /* ITERATE */, ITERATE_KEY);\r\n return Reflect.get(target, 'size', target);\r\n}\r\nfunction add(value) {\r\n value = toRaw(value);\r\n const target = toRaw(this);\r\n const proto = getProto(target);\r\n const hadKey = proto.has.call(target, value);\r\n if (!hadKey) {\r\n target.add(value);\r\n trigger(target, \"add\" /* ADD */, value, value);\r\n }\r\n return this;\r\n}\r\nfunction set$1(key, value) {\r\n value = toRaw(value);\r\n const target = toRaw(this);\r\n const { has, get } = getProto(target);\r\n let hadKey = has.call(target, key);\r\n if (!hadKey) {\r\n key = toRaw(key);\r\n hadKey = has.call(target, key);\r\n }\r\n else if ((process.env.NODE_ENV !== 'production')) {\r\n checkIdentityKeys(target, has, key);\r\n }\r\n const oldValue = get.call(target, key);\r\n target.set(key, value);\r\n if (!hadKey) {\r\n trigger(target, \"add\" /* ADD */, key, value);\r\n }\r\n else if (hasChanged(value, oldValue)) {\r\n trigger(target, \"set\" /* SET */, key, value, oldValue);\r\n }\r\n return this;\r\n}\r\nfunction deleteEntry(key) {\r\n const target = toRaw(this);\r\n const { has, get } = getProto(target);\r\n let hadKey = has.call(target, key);\r\n if (!hadKey) {\r\n key = toRaw(key);\r\n hadKey = has.call(target, key);\r\n }\r\n else if ((process.env.NODE_ENV !== 'production')) {\r\n checkIdentityKeys(target, has, key);\r\n }\r\n const oldValue = get ? get.call(target, key) : undefined;\r\n // forward the operation before queueing reactions\r\n const result = target.delete(key);\r\n if (hadKey) {\r\n trigger(target, \"delete\" /* DELETE */, key, undefined, oldValue);\r\n }\r\n return result;\r\n}\r\nfunction clear() {\r\n const target = toRaw(this);\r\n const hadItems = target.size !== 0;\r\n const oldTarget = (process.env.NODE_ENV !== 'production')\r\n ? isMap(target)\r\n ? new Map(target)\r\n : new Set(target)\r\n : undefined;\r\n // forward the operation before queueing reactions\r\n const result = target.clear();\r\n if (hadItems) {\r\n trigger(target, \"clear\" /* CLEAR */, undefined, undefined, oldTarget);\r\n }\r\n return result;\r\n}\r\nfunction createForEach(isReadonly, isShallow) {\r\n return function forEach(callback, thisArg) {\r\n const observed = this;\r\n const target = observed[\"__v_raw\" /* RAW */];\r\n const rawTarget = toRaw(target);\r\n const wrap = isShallow ? toShallow : isReadonly ? toReadonly : toReactive;\r\n !isReadonly && track(rawTarget, \"iterate\" /* ITERATE */, ITERATE_KEY);\r\n return target.forEach((value, key) => {\r\n // important: make sure the callback is\r\n // 1. invoked with the reactive map as `this` and 3rd arg\r\n // 2. the value received should be a corresponding reactive/readonly.\r\n return callback.call(thisArg, wrap(value), wrap(key), observed);\r\n });\r\n };\r\n}\r\nfunction createIterableMethod(method, isReadonly, isShallow) {\r\n return function (...args) {\r\n const target = this[\"__v_raw\" /* RAW */];\r\n const rawTarget = toRaw(target);\r\n const targetIsMap = isMap(rawTarget);\r\n const isPair = method === 'entries' || (method === Symbol.iterator && targetIsMap);\r\n const isKeyOnly = method === 'keys' && targetIsMap;\r\n const innerIterator = target[method](...args);\r\n const wrap = isShallow ? toShallow : isReadonly ? toReadonly : toReactive;\r\n !isReadonly &&\r\n track(rawTarget, \"iterate\" /* ITERATE */, isKeyOnly ? MAP_KEY_ITERATE_KEY : ITERATE_KEY);\r\n // return a wrapped iterator which returns observed versions of the\r\n // values emitted from the real iterator\r\n return {\r\n // iterator protocol\r\n next() {\r\n const { value, done } = innerIterator.next();\r\n return done\r\n ? { value, done }\r\n : {\r\n value: isPair ? [wrap(value[0]), wrap(value[1])] : wrap(value),\r\n done\r\n };\r\n },\r\n // iterable protocol\r\n [Symbol.iterator]() {\r\n return this;\r\n }\r\n };\r\n };\r\n}\r\nfunction createReadonlyMethod(type) {\r\n return function (...args) {\r\n if ((process.env.NODE_ENV !== 'production')) {\r\n const key = args[0] ? `on key \"${args[0]}\" ` : ``;\r\n console.warn(`${capitalize(type)} operation ${key}failed: target is readonly.`, toRaw(this));\r\n }\r\n return type === \"delete\" /* DELETE */ ? false : this;\r\n };\r\n}\r\nfunction createInstrumentations() {\r\n const mutableInstrumentations = {\r\n get(key) {\r\n return get$1(this, key);\r\n },\r\n get size() {\r\n return size(this);\r\n },\r\n has: has$1,\r\n add,\r\n set: set$1,\r\n delete: deleteEntry,\r\n clear,\r\n forEach: createForEach(false, false)\r\n };\r\n const shallowInstrumentations = {\r\n get(key) {\r\n return get$1(this, key, false, true);\r\n },\r\n get size() {\r\n return size(this);\r\n },\r\n has: has$1,\r\n add,\r\n set: set$1,\r\n delete: deleteEntry,\r\n clear,\r\n forEach: createForEach(false, true)\r\n };\r\n const readonlyInstrumentations = {\r\n get(key) {\r\n return get$1(this, key, true);\r\n },\r\n get size() {\r\n return size(this, true);\r\n },\r\n has(key) {\r\n return has$1.call(this, key, true);\r\n },\r\n add: createReadonlyMethod(\"add\" /* ADD */),\r\n set: createReadonlyMethod(\"set\" /* SET */),\r\n delete: createReadonlyMethod(\"delete\" /* DELETE */),\r\n clear: createReadonlyMethod(\"clear\" /* CLEAR */),\r\n forEach: createForEach(true, false)\r\n };\r\n const shallowReadonlyInstrumentations = {\r\n get(key) {\r\n return get$1(this, key, true, true);\r\n },\r\n get size() {\r\n return size(this, true);\r\n },\r\n has(key) {\r\n return has$1.call(this, key, true);\r\n },\r\n add: createReadonlyMethod(\"add\" /* ADD */),\r\n set: createReadonlyMethod(\"set\" /* SET */),\r\n delete: createReadonlyMethod(\"delete\" /* DELETE */),\r\n clear: createReadonlyMethod(\"clear\" /* CLEAR */),\r\n forEach: createForEach(true, true)\r\n };\r\n const iteratorMethods = ['keys', 'values', 'entries', Symbol.iterator];\r\n iteratorMethods.forEach(method => {\r\n mutableInstrumentations[method] = createIterableMethod(method, false, false);\r\n readonlyInstrumentations[method] = createIterableMethod(method, true, false);\r\n shallowInstrumentations[method] = createIterableMethod(method, false, true);\r\n shallowReadonlyInstrumentations[method] = createIterableMethod(method, true, true);\r\n });\r\n return [\r\n mutableInstrumentations,\r\n readonlyInstrumentations,\r\n shallowInstrumentations,\r\n shallowReadonlyInstrumentations\r\n ];\r\n}\r\nconst [mutableInstrumentations, readonlyInstrumentations, shallowInstrumentations, shallowReadonlyInstrumentations] = /* #__PURE__*/ createInstrumentations();\r\nfunction createInstrumentationGetter(isReadonly, shallow) {\r\n const instrumentations = shallow\r\n ? isReadonly\r\n ? shallowReadonlyInstrumentations\r\n : shallowInstrumentations\r\n : isReadonly\r\n ? readonlyInstrumentations\r\n : mutableInstrumentations;\r\n return (target, key, receiver) => {\r\n if (key === \"__v_isReactive\" /* IS_REACTIVE */) {\r\n return !isReadonly;\r\n }\r\n else if (key === \"__v_isReadonly\" /* IS_READONLY */) {\r\n return isReadonly;\r\n }\r\n else if (key === \"__v_raw\" /* RAW */) {\r\n return target;\r\n }\r\n return Reflect.get(hasOwn(instrumentations, key) && key in target\r\n ? instrumentations\r\n : target, key, receiver);\r\n };\r\n}\r\nconst mutableCollectionHandlers = {\r\n get: /*#__PURE__*/ createInstrumentationGetter(false, false)\r\n};\r\nconst shallowCollectionHandlers = {\r\n get: /*#__PURE__*/ createInstrumentationGetter(false, true)\r\n};\r\nconst readonlyCollectionHandlers = {\r\n get: /*#__PURE__*/ createInstrumentationGetter(true, false)\r\n};\r\nconst shallowReadonlyCollectionHandlers = {\r\n get: /*#__PURE__*/ createInstrumentationGetter(true, true)\r\n};\r\nfunction checkIdentityKeys(target, has, key) {\r\n const rawKey = toRaw(key);\r\n if (rawKey !== key && has.call(target, rawKey)) {\r\n const type = toRawType(target);\r\n console.warn(`Reactive ${type} contains both the raw and reactive ` +\r\n `versions of the same object${type === `Map` ? ` as keys` : ``}, ` +\r\n `which can lead to inconsistencies. ` +\r\n `Avoid differentiating between the raw and reactive versions ` +\r\n `of an object and only use the reactive version if possible.`);\r\n }\r\n}\n\nconst reactiveMap = new WeakMap();\r\nconst shallowReactiveMap = new WeakMap();\r\nconst readonlyMap = new WeakMap();\r\nconst shallowReadonlyMap = new WeakMap();\r\nfunction targetTypeMap(rawType) {\r\n switch (rawType) {\r\n case 'Object':\r\n case 'Array':\r\n return 1 /* COMMON */;\r\n case 'Map':\r\n case 'Set':\r\n case 'WeakMap':\r\n case 'WeakSet':\r\n return 2 /* COLLECTION */;\r\n default:\r\n return 0 /* INVALID */;\r\n }\r\n}\r\nfunction getTargetType(value) {\r\n return value[\"__v_skip\" /* SKIP */] || !Object.isExtensible(value)\r\n ? 0 /* INVALID */\r\n : targetTypeMap(toRawType(value));\r\n}\r\nfunction reactive(target) {\r\n // if trying to observe a readonly proxy, return the readonly version.\r\n if (target && target[\"__v_isReadonly\" /* IS_READONLY */]) {\r\n return target;\r\n }\r\n return createReactiveObject(target, false, mutableHandlers, mutableCollectionHandlers, reactiveMap);\r\n}\r\n/**\r\n * Return a shallowly-reactive copy of the original object, where only the root\r\n * level properties are reactive. It also does not auto-unwrap refs (even at the\r\n * root level).\r\n */\r\nfunction shallowReactive(target) {\r\n return createReactiveObject(target, false, shallowReactiveHandlers, shallowCollectionHandlers, shallowReactiveMap);\r\n}\r\n/**\r\n * Creates a readonly copy of the original object. Note the returned copy is not\r\n * made reactive, but `readonly` can be called on an already reactive object.\r\n */\r\nfunction readonly(target) {\r\n return createReactiveObject(target, true, readonlyHandlers, readonlyCollectionHandlers, readonlyMap);\r\n}\r\n/**\r\n * Returns a reactive-copy of the original object, where only the root level\r\n * properties are readonly, and does NOT unwrap refs nor recursively convert\r\n * returned properties.\r\n * This is used for creating the props proxy object for stateful components.\r\n */\r\nfunction shallowReadonly(target) {\r\n return createReactiveObject(target, true, shallowReadonlyHandlers, shallowReadonlyCollectionHandlers, shallowReadonlyMap);\r\n}\r\nfunction createReactiveObject(target, isReadonly, baseHandlers, collectionHandlers, proxyMap) {\r\n if (!isObject(target)) {\r\n if ((process.env.NODE_ENV !== 'production')) {\r\n console.warn(`value cannot be made reactive: ${String(target)}`);\r\n }\r\n return target;\r\n }\r\n // target is already a Proxy, return it.\r\n // exception: calling readonly() on a reactive object\r\n if (target[\"__v_raw\" /* RAW */] &&\r\n !(isReadonly && target[\"__v_isReactive\" /* IS_REACTIVE */])) {\r\n return target;\r\n }\r\n // target already has corresponding Proxy\r\n const existingProxy = proxyMap.get(target);\r\n if (existingProxy) {\r\n return existingProxy;\r\n }\r\n // only a whitelist of value types can be observed.\r\n const targetType = getTargetType(target);\r\n if (targetType === 0 /* INVALID */) {\r\n return target;\r\n }\r\n const proxy = new Proxy(target, targetType === 2 /* COLLECTION */ ? collectionHandlers : baseHandlers);\r\n proxyMap.set(target, proxy);\r\n return proxy;\r\n}\r\nfunction isReactive(value) {\r\n if (isReadonly(value)) {\r\n return isReactive(value[\"__v_raw\" /* RAW */]);\r\n }\r\n return !!(value && value[\"__v_isReactive\" /* IS_REACTIVE */]);\r\n}\r\nfunction isReadonly(value) {\r\n return !!(value && value[\"__v_isReadonly\" /* IS_READONLY */]);\r\n}\r\nfunction isProxy(value) {\r\n return isReactive(value) || isReadonly(value);\r\n}\r\nfunction toRaw(observed) {\r\n const raw = observed && observed[\"__v_raw\" /* RAW */];\r\n return raw ? toRaw(raw) : observed;\r\n}\r\nfunction markRaw(value) {\r\n def(value, \"__v_skip\" /* SKIP */, true);\r\n return value;\r\n}\r\nconst toReactive = (value) => isObject(value) ? reactive(value) : value;\r\nconst toReadonly = (value) => isObject(value) ? readonly(value) : value;\n\nfunction trackRefValue(ref) {\r\n if (isTracking()) {\r\n ref = toRaw(ref);\r\n if (!ref.dep) {\r\n ref.dep = createDep();\r\n }\r\n if ((process.env.NODE_ENV !== 'production')) {\r\n trackEffects(ref.dep, {\r\n target: ref,\r\n type: \"get\" /* GET */,\r\n key: 'value'\r\n });\r\n }\r\n else {\r\n trackEffects(ref.dep);\r\n }\r\n }\r\n}\r\nfunction triggerRefValue(ref, newVal) {\r\n ref = toRaw(ref);\r\n if (ref.dep) {\r\n if ((process.env.NODE_ENV !== 'production')) {\r\n triggerEffects(ref.dep, {\r\n target: ref,\r\n type: \"set\" /* SET */,\r\n key: 'value',\r\n newValue: newVal\r\n });\r\n }\r\n else {\r\n triggerEffects(ref.dep);\r\n }\r\n }\r\n}\r\nfunction isRef(r) {\r\n return Boolean(r && r.__v_isRef === true);\r\n}\r\nfunction ref(value) {\r\n return createRef(value, false);\r\n}\r\nfunction shallowRef(value) {\r\n return createRef(value, true);\r\n}\r\nfunction createRef(rawValue, shallow) {\r\n if (isRef(rawValue)) {\r\n return rawValue;\r\n }\r\n return new RefImpl(rawValue, shallow);\r\n}\r\nclass RefImpl {\r\n constructor(value, _shallow) {\r\n this._shallow = _shallow;\r\n this.dep = undefined;\r\n this.__v_isRef = true;\r\n this._rawValue = _shallow ? value : toRaw(value);\r\n this._value = _shallow ? value : toReactive(value);\r\n }\r\n get value() {\r\n trackRefValue(this);\r\n return this._value;\r\n }\r\n set value(newVal) {\r\n newVal = this._shallow ? newVal : toRaw(newVal);\r\n if (hasChanged(newVal, this._rawValue)) {\r\n this._rawValue = newVal;\r\n this._value = this._shallow ? newVal : toReactive(newVal);\r\n triggerRefValue(this, newVal);\r\n }\r\n }\r\n}\r\nfunction triggerRef(ref) {\r\n triggerRefValue(ref, (process.env.NODE_ENV !== 'production') ? ref.value : void 0);\r\n}\r\nfunction unref(ref) {\r\n return isRef(ref) ? ref.value : ref;\r\n}\r\nconst shallowUnwrapHandlers = {\r\n get: (target, key, receiver) => unref(Reflect.get(target, key, receiver)),\r\n set: (target, key, value, receiver) => {\r\n const oldValue = target[key];\r\n if (isRef(oldValue) && !isRef(value)) {\r\n oldValue.value = value;\r\n return true;\r\n }\r\n else {\r\n return Reflect.set(target, key, value, receiver);\r\n }\r\n }\r\n};\r\nfunction proxyRefs(objectWithRefs) {\r\n return isReactive(objectWithRefs)\r\n ? objectWithRefs\r\n : new Proxy(objectWithRefs, shallowUnwrapHandlers);\r\n}\r\nclass CustomRefImpl {\r\n constructor(factory) {\r\n this.dep = undefined;\r\n this.__v_isRef = true;\r\n const { get, set } = factory(() => trackRefValue(this), () => triggerRefValue(this));\r\n this._get = get;\r\n this._set = set;\r\n }\r\n get value() {\r\n return this._get();\r\n }\r\n set value(newVal) {\r\n this._set(newVal);\r\n }\r\n}\r\nfunction customRef(factory) {\r\n return new CustomRefImpl(factory);\r\n}\r\nfunction toRefs(object) {\r\n if ((process.env.NODE_ENV !== 'production') && !isProxy(object)) {\r\n console.warn(`toRefs() expects a reactive object but received a plain one.`);\r\n }\r\n const ret = isArray(object) ? new Array(object.length) : {};\r\n for (const key in object) {\r\n ret[key] = toRef(object, key);\r\n }\r\n return ret;\r\n}\r\nclass ObjectRefImpl {\r\n constructor(_object, _key, _defaultValue) {\r\n this._object = _object;\r\n this._key = _key;\r\n this._defaultValue = _defaultValue;\r\n this.__v_isRef = true;\r\n }\r\n get value() {\r\n const val = this._object[this._key];\r\n return val === undefined ? this._defaultValue : val;\r\n }\r\n set value(newVal) {\r\n this._object[this._key] = newVal;\r\n }\r\n}\r\nfunction toRef(object, key, defaultValue) {\r\n const val = object[key];\r\n return isRef(val)\r\n ? val\r\n : new ObjectRefImpl(object, key, defaultValue);\r\n}\n\nclass ComputedRefImpl {\r\n constructor(getter, _setter, isReadonly) {\r\n this._setter = _setter;\r\n this.dep = undefined;\r\n this._dirty = true;\r\n this.__v_isRef = true;\r\n this.effect = new ReactiveEffect(getter, () => {\r\n if (!this._dirty) {\r\n this._dirty = true;\r\n triggerRefValue(this);\r\n }\r\n });\r\n this[\"__v_isReadonly\" /* IS_READONLY */] = isReadonly;\r\n }\r\n get value() {\r\n // the computed ref may get wrapped by other proxies e.g. readonly() #3376\r\n const self = toRaw(this);\r\n trackRefValue(self);\r\n if (self._dirty) {\r\n self._dirty = false;\r\n self._value = self.effect.run();\r\n }\r\n return self._value;\r\n }\r\n set value(newValue) {\r\n this._setter(newValue);\r\n }\r\n}\r\nfunction computed(getterOrOptions, debugOptions) {\r\n let getter;\r\n let setter;\r\n const onlyGetter = isFunction(getterOrOptions);\r\n if (onlyGetter) {\r\n getter = getterOrOptions;\r\n setter = (process.env.NODE_ENV !== 'production')\r\n ? () => {\r\n console.warn('Write operation failed: computed value is readonly');\r\n }\r\n : NOOP;\r\n }\r\n else {\r\n getter = getterOrOptions.get;\r\n setter = getterOrOptions.set;\r\n }\r\n const cRef = new ComputedRefImpl(getter, setter, onlyGetter || !setter);\r\n if ((process.env.NODE_ENV !== 'production') && debugOptions) {\r\n cRef.effect.onTrack = debugOptions.onTrack;\r\n cRef.effect.onTrigger = debugOptions.onTrigger;\r\n }\r\n return cRef;\r\n}\n\nvar _a;\r\nconst tick = Promise.resolve();\r\nconst queue = [];\r\nlet queued = false;\r\nconst scheduler = (fn) => {\r\n queue.push(fn);\r\n if (!queued) {\r\n queued = true;\r\n tick.then(flush);\r\n }\r\n};\r\nconst flush = () => {\r\n for (let i = 0; i < queue.length; i++) {\r\n queue[i]();\r\n }\r\n queue.length = 0;\r\n queued = false;\r\n};\r\nclass DeferredComputedRefImpl {\r\n constructor(getter) {\r\n this.dep = undefined;\r\n this._dirty = true;\r\n this.__v_isRef = true;\r\n this[_a] = true;\r\n let compareTarget;\r\n let hasCompareTarget = false;\r\n let scheduled = false;\r\n this.effect = new ReactiveEffect(getter, (computedTrigger) => {\r\n if (this.dep) {\r\n if (computedTrigger) {\r\n compareTarget = this._value;\r\n hasCompareTarget = true;\r\n }\r\n else if (!scheduled) {\r\n const valueToCompare = hasCompareTarget ? compareTarget : this._value;\r\n scheduled = true;\r\n hasCompareTarget = false;\r\n scheduler(() => {\r\n if (this.effect.active && this._get() !== valueToCompare) {\r\n triggerRefValue(this);\r\n }\r\n scheduled = false;\r\n });\r\n }\r\n // chained upstream computeds are notified synchronously to ensure\r\n // value invalidation in case of sync access; normal effects are\r\n // deferred to be triggered in scheduler.\r\n for (const e of this.dep) {\r\n if (e.computed) {\r\n e.scheduler(true /* computedTrigger */);\r\n }\r\n }\r\n }\r\n this._dirty = true;\r\n });\r\n this.effect.computed = true;\r\n }\r\n _get() {\r\n if (this._dirty) {\r\n this._dirty = false;\r\n return (this._value = this.effect.run());\r\n }\r\n return this._value;\r\n }\r\n get value() {\r\n trackRefValue(this);\r\n // the computed ref may get wrapped by other proxies e.g. readonly() #3376\r\n return toRaw(this)._get();\r\n }\r\n}\r\n_a = \"__v_isReadonly\" /* IS_READONLY */;\r\nfunction deferredComputed(getter) {\r\n return new DeferredComputedRefImpl(getter);\r\n}\n\nexport { EffectScope, ITERATE_KEY, ReactiveEffect, computed, customRef, deferredComputed, effect, effectScope, enableTracking, getCurrentScope, isProxy, isReactive, isReadonly, isRef, markRaw, onScopeDispose, pauseTracking, proxyRefs, reactive, readonly, ref, resetTracking, shallowReactive, shallowReadonly, shallowRef, stop, toRaw, toRef, toRefs, track, trigger, triggerRef, unref };\n","import { toRaw, ref, pauseTracking, resetTracking, reactive, computed, isRef, shallowReactive, trigger, ReactiveEffect, isProxy, shallowReadonly, track, EffectScope, markRaw, proxyRefs, isReactive, isReadonly } from '@vue/reactivity';\nexport { EffectScope, ReactiveEffect, computed, customRef, effect, effectScope, getCurrentScope, isProxy, isReactive, isReadonly, isRef, markRaw, onScopeDispose, proxyRefs, reactive, readonly, ref, shallowReactive, shallowReadonly, shallowRef, stop, toRaw, toRef, toRefs, triggerRef, unref } from '@vue/reactivity';\nimport { getGlobalThis, extend, EMPTY_OBJ, toHandlerKey, isFunction, toNumber, hyphenate, camelize, isArray, isOn, hasOwn, isModelListener, isObject, remove, isString, invokeArrayFns, isPromise, NOOP, def, isReservedProp, EMPTY_ARR, capitalize, toRawType, makeMap, NO, normalizeClass, normalizeStyle, isGloballyWhitelisted, hasChanged, isSet, isMap, isPlainObject } from '@vue/shared';\nexport { camelize, capitalize, normalizeClass, normalizeProps, normalizeStyle, toDisplayString, toHandlerKey } from '@vue/shared';\n\n/* eslint-disable no-restricted-globals */\r\nlet isHmrUpdating = false;\r\nconst hmrDirtyComponents = new Set();\r\n// Expose the HMR runtime on the global object\r\n// This makes it entirely tree-shakable without polluting the exports and makes\r\n// it easier to be used in toolings like vue-loader\r\n// Note: for a component to be eligible for HMR it also needs the __hmrId option\r\n// to be set so that its instances can be registered / removed.\r\nif ((process.env.NODE_ENV !== 'production')) {\r\n getGlobalThis().__VUE_HMR_RUNTIME__ = {\r\n createRecord: tryWrap(createRecord),\r\n rerender: tryWrap(rerender),\r\n reload: tryWrap(reload)\r\n };\r\n}\r\nconst map = new Map();\r\nfunction registerHMR(instance) {\r\n const id = instance.type.__hmrId;\r\n let record = map.get(id);\r\n if (!record) {\r\n createRecord(id, instance.type);\r\n record = map.get(id);\r\n }\r\n record.instances.add(instance);\r\n}\r\nfunction unregisterHMR(instance) {\r\n map.get(instance.type.__hmrId).instances.delete(instance);\r\n}\r\nfunction createRecord(id, initialDef) {\r\n if (map.has(id)) {\r\n return false;\r\n }\r\n map.set(id, {\r\n initialDef: normalizeClassComponent(initialDef),\r\n instances: new Set()\r\n });\r\n return true;\r\n}\r\nfunction normalizeClassComponent(component) {\r\n return isClassComponent(component) ? component.__vccOpts : component;\r\n}\r\nfunction rerender(id, newRender) {\r\n const record = map.get(id);\r\n if (!record) {\r\n return;\r\n }\r\n // update initial record (for not-yet-rendered component)\r\n record.initialDef.render = newRender;\r\n [...record.instances].forEach(instance => {\r\n if (newRender) {\r\n instance.render = newRender;\r\n normalizeClassComponent(instance.type).render = newRender;\r\n }\r\n instance.renderCache = [];\r\n // this flag forces child components with slot content to update\r\n isHmrUpdating = true;\r\n instance.update();\r\n isHmrUpdating = false;\r\n });\r\n}\r\nfunction reload(id, newComp) {\r\n const record = map.get(id);\r\n if (!record)\r\n return;\r\n newComp = normalizeClassComponent(newComp);\r\n // update initial def (for not-yet-rendered components)\r\n updateComponentDef(record.initialDef, newComp);\r\n // create a snapshot which avoids the set being mutated during updates\r\n const instances = [...record.instances];\r\n for (const instance of instances) {\r\n const oldComp = normalizeClassComponent(instance.type);\r\n if (!hmrDirtyComponents.has(oldComp)) {\r\n // 1. Update existing comp definition to match new one\r\n if (oldComp !== record.initialDef) {\r\n updateComponentDef(oldComp, newComp);\r\n }\r\n // 2. mark definition dirty. This forces the renderer to replace the\r\n // component on patch.\r\n hmrDirtyComponents.add(oldComp);\r\n }\r\n // 3. invalidate options resolution cache\r\n instance.appContext.optionsCache.delete(instance.type);\r\n // 4. actually update\r\n if (instance.ceReload) {\r\n // custom element\r\n hmrDirtyComponents.add(oldComp);\r\n instance.ceReload(newComp.styles);\r\n hmrDirtyComponents.delete(oldComp);\r\n }\r\n else if (instance.parent) {\r\n // 4. Force the parent instance to re-render. This will cause all updated\r\n // components to be unmounted and re-mounted. Queue the update so that we\r\n // don't end up forcing the same parent to re-render multiple times.\r\n queueJob(instance.parent.update);\r\n // instance is the inner component of an async custom element\r\n // invoke to reset styles\r\n if (instance.parent.type.__asyncLoader &&\r\n instance.parent.ceReload) {\r\n instance.parent.ceReload(newComp.styles);\r\n }\r\n }\r\n else if (instance.appContext.reload) {\r\n // root instance mounted via createApp() has a reload method\r\n instance.appContext.reload();\r\n }\r\n else if (typeof window !== 'undefined') {\r\n // root instance inside tree created via raw render(). Force reload.\r\n window.location.reload();\r\n }\r\n else {\r\n console.warn('[HMR] Root or manually mounted instance modified. Full reload required.');\r\n }\r\n }\r\n // 5. make sure to cleanup dirty hmr components after update\r\n queuePostFlushCb(() => {\r\n for (const instance of instances) {\r\n hmrDirtyComponents.delete(normalizeClassComponent(instance.type));\r\n }\r\n });\r\n}\r\nfunction updateComponentDef(oldComp, newComp) {\r\n extend(oldComp, newComp);\r\n for (const key in oldComp) {\r\n if (key !== '__file' && !(key in newComp)) {\r\n delete oldComp[key];\r\n }\r\n }\r\n}\r\nfunction tryWrap(fn) {\r\n return (id, arg) => {\r\n try {\r\n return fn(id, arg);\r\n }\r\n catch (e) {\r\n console.error(e);\r\n console.warn(`[HMR] Something went wrong during Vue component hot-reload. ` +\r\n `Full reload required.`);\r\n }\r\n };\r\n}\n\nlet devtools;\r\nlet buffer = [];\r\nlet devtoolsNotInstalled = false;\r\nfunction emit(event, ...args) {\r\n if (devtools) {\r\n devtools.emit(event, ...args);\r\n }\r\n else if (!devtoolsNotInstalled) {\r\n buffer.push({ event, args });\r\n }\r\n}\r\nfunction setDevtoolsHook(hook, target) {\r\n var _a, _b;\r\n devtools = hook;\r\n if (devtools) {\r\n devtools.enabled = true;\r\n buffer.forEach(({ event, args }) => devtools.emit(event, ...args));\r\n buffer = [];\r\n }\r\n else if (\r\n // handle late devtools injection - only do this if we are in an actual\r\n // browser environment to avoid the timer handle stalling test runner exit\r\n // (#4815)\r\n // eslint-disable-next-line no-restricted-globals\r\n typeof window !== 'undefined' &&\r\n // some envs mock window but not fully\r\n window.HTMLElement &&\r\n // also exclude jsdom\r\n !((_b = (_a = window.navigator) === null || _a === void 0 ? void 0 : _a.userAgent) === null || _b === void 0 ? void 0 : _b.includes('jsdom'))) {\r\n const replay = (target.__VUE_DEVTOOLS_HOOK_REPLAY__ =\r\n target.__VUE_DEVTOOLS_HOOK_REPLAY__ || []);\r\n replay.push((newHook) => {\r\n setDevtoolsHook(newHook, target);\r\n });\r\n // clear buffer after 3s - the user probably doesn't have devtools installed\r\n // at all, and keeping the buffer will cause memory leaks (#4738)\r\n setTimeout(() => {\r\n if (!devtools) {\r\n target.__VUE_DEVTOOLS_HOOK_REPLAY__ = null;\r\n devtoolsNotInstalled = true;\r\n buffer = [];\r\n }\r\n }, 3000);\r\n }\r\n else {\r\n // non-browser env, assume not installed\r\n devtoolsNotInstalled = true;\r\n buffer = [];\r\n }\r\n}\r\nfunction devtoolsInitApp(app, version) {\r\n emit(\"app:init\" /* APP_INIT */, app, version, {\r\n Fragment,\r\n Text,\r\n Comment,\r\n Static\r\n });\r\n}\r\nfunction devtoolsUnmountApp(app) {\r\n emit(\"app:unmount\" /* APP_UNMOUNT */, app);\r\n}\r\nconst devtoolsComponentAdded = /*#__PURE__*/ createDevtoolsComponentHook(\"component:added\" /* COMPONENT_ADDED */);\r\nconst devtoolsComponentUpdated = \r\n/*#__PURE__*/ createDevtoolsComponentHook(\"component:updated\" /* COMPONENT_UPDATED */);\r\nconst devtoolsComponentRemoved = \r\n/*#__PURE__*/ createDevtoolsComponentHook(\"component:removed\" /* COMPONENT_REMOVED */);\r\nfunction createDevtoolsComponentHook(hook) {\r\n return (component) => {\r\n emit(hook, component.appContext.app, component.uid, component.parent ? component.parent.uid : undefined, component);\r\n };\r\n}\r\nconst devtoolsPerfStart = /*#__PURE__*/ createDevtoolsPerformanceHook(\"perf:start\" /* PERFORMANCE_START */);\r\nconst devtoolsPerfEnd = /*#__PURE__*/ createDevtoolsPerformanceHook(\"perf:end\" /* PERFORMANCE_END */);\r\nfunction createDevtoolsPerformanceHook(hook) {\r\n return (component, type, time) => {\r\n emit(hook, component.appContext.app, component.uid, component, type, time);\r\n };\r\n}\r\nfunction devtoolsComponentEmit(component, event, params) {\r\n emit(\"component:emit\" /* COMPONENT_EMIT */, component.appContext.app, component, event, params);\r\n}\n\nfunction emit$1(instance, event, ...rawArgs) {\r\n const props = instance.vnode.props || EMPTY_OBJ;\r\n if ((process.env.NODE_ENV !== 'production')) {\r\n const { emitsOptions, propsOptions: [propsOptions] } = instance;\r\n if (emitsOptions) {\r\n if (!(event in emitsOptions) &&\r\n !(false )) {\r\n if (!propsOptions || !(toHandlerKey(event) in propsOptions)) {\r\n warn(`Component emitted event \"${event}\" but it is neither declared in ` +\r\n `the emits option nor as an \"${toHandlerKey(event)}\" prop.`);\r\n }\r\n }\r\n else {\r\n const validator = emitsOptions[event];\r\n if (isFunction(validator)) {\r\n const isValid = validator(...rawArgs);\r\n if (!isValid) {\r\n warn(`Invalid event arguments: event validation failed for event \"${event}\".`);\r\n }\r\n }\r\n }\r\n }\r\n }\r\n let args = rawArgs;\r\n const isModelListener = event.startsWith('update:');\r\n // for v-model update:xxx events, apply modifiers on args\r\n const modelArg = isModelListener && event.slice(7);\r\n if (modelArg && modelArg in props) {\r\n const modifiersKey = `${modelArg === 'modelValue' ? 'model' : modelArg}Modifiers`;\r\n const { number, trim } = props[modifiersKey] || EMPTY_OBJ;\r\n if (trim) {\r\n args = rawArgs.map(a => a.trim());\r\n }\r\n else if (number) {\r\n args = rawArgs.map(toNumber);\r\n }\r\n }\r\n if ((process.env.NODE_ENV !== 'production') || __VUE_PROD_DEVTOOLS__) {\r\n devtoolsComponentEmit(instance, event, args);\r\n }\r\n if ((process.env.NODE_ENV !== 'production')) {\r\n const lowerCaseEvent = event.toLowerCase();\r\n if (lowerCaseEvent !== event && props[toHandlerKey(lowerCaseEvent)]) {\r\n warn(`Event \"${lowerCaseEvent}\" is emitted in component ` +\r\n `${formatComponentName(instance, instance.type)} but the handler is registered for \"${event}\". ` +\r\n `Note that HTML attributes are case-insensitive and you cannot use ` +\r\n `v-on to listen to camelCase events when using in-DOM templates. ` +\r\n `You should probably use \"${hyphenate(event)}\" instead of \"${event}\".`);\r\n }\r\n }\r\n let handlerName;\r\n let handler = props[(handlerName = toHandlerKey(event))] ||\r\n // also try camelCase event handler (#2249)\r\n props[(handlerName = toHandlerKey(camelize(event)))];\r\n // for v-model update:xxx events, also trigger kebab-case equivalent\r\n // for props passed via kebab-case\r\n if (!handler && isModelListener) {\r\n handler = props[(handlerName = toHandlerKey(hyphenate(event)))];\r\n }\r\n if (handler) {\r\n callWithAsyncErrorHandling(handler, instance, 6 /* COMPONENT_EVENT_HANDLER */, args);\r\n }\r\n const onceHandler = props[handlerName + `Once`];\r\n if (onceHandler) {\r\n if (!instance.emitted) {\r\n instance.emitted = {};\r\n }\r\n else if (instance.emitted[handlerName]) {\r\n return;\r\n }\r\n instance.emitted[handlerName] = true;\r\n callWithAsyncErrorHandling(onceHandler, instance, 6 /* COMPONENT_EVENT_HANDLER */, args);\r\n }\r\n}\r\nfunction normalizeEmitsOptions(comp, appContext, asMixin = false) {\r\n const cache = appContext.emitsCache;\r\n const cached = cache.get(comp);\r\n if (cached !== undefined) {\r\n return cached;\r\n }\r\n const raw = comp.emits;\r\n let normalized = {};\r\n // apply mixin/extends props\r\n let hasExtends = false;\r\n if (__VUE_OPTIONS_API__ && !isFunction(comp)) {\r\n const extendEmits = (raw) => {\r\n const normalizedFromExtend = normalizeEmitsOptions(raw, appContext, true);\r\n if (normalizedFromExtend) {\r\n hasExtends = true;\r\n extend(normalized, normalizedFromExtend);\r\n }\r\n };\r\n if (!asMixin && appContext.mixins.length) {\r\n appContext.mixins.forEach(extendEmits);\r\n }\r\n if (comp.extends) {\r\n extendEmits(comp.extends);\r\n }\r\n if (comp.mixins) {\r\n comp.mixins.forEach(extendEmits);\r\n }\r\n }\r\n if (!raw && !hasExtends) {\r\n cache.set(comp, null);\r\n return null;\r\n }\r\n if (isArray(raw)) {\r\n raw.forEach(key => (normalized[key] = null));\r\n }\r\n else {\r\n extend(normalized, raw);\r\n }\r\n cache.set(comp, normalized);\r\n return normalized;\r\n}\r\n// Check if an incoming prop key is a declared emit event listener.\r\n// e.g. With `emits: { click: null }`, props named `onClick` and `onclick` are\r\n// both considered matched listeners.\r\nfunction isEmitListener(options, key) {\r\n if (!options || !isOn(key)) {\r\n return false;\r\n }\r\n key = key.slice(2).replace(/Once$/, '');\r\n return (hasOwn(options, key[0].toLowerCase() + key.slice(1)) ||\r\n hasOwn(options, hyphenate(key)) ||\r\n hasOwn(options, key));\r\n}\n\n/**\r\n * mark the current rendering instance for asset resolution (e.g.\r\n * resolveComponent, resolveDirective) during render\r\n */\r\nlet currentRenderingInstance = null;\r\nlet currentScopeId = null;\r\n/**\r\n * Note: rendering calls maybe nested. The function returns the parent rendering\r\n * instance if present, which should be restored after the render is done:\r\n *\r\n * ```js\r\n * const prev = setCurrentRenderingInstance(i)\r\n * // ...render\r\n * setCurrentRenderingInstance(prev)\r\n * ```\r\n */\r\nfunction setCurrentRenderingInstance(instance) {\r\n const prev = currentRenderingInstance;\r\n currentRenderingInstance = instance;\r\n currentScopeId = (instance && instance.type.__scopeId) || null;\r\n return prev;\r\n}\r\n/**\r\n * Set scope id when creating hoisted vnodes.\r\n * @private compiler helper\r\n */\r\nfunction pushScopeId(id) {\r\n currentScopeId = id;\r\n}\r\n/**\r\n * Technically we no longer need this after 3.0.8 but we need to keep the same\r\n * API for backwards compat w/ code generated by compilers.\r\n * @private\r\n */\r\nfunction popScopeId() {\r\n currentScopeId = null;\r\n}\r\n/**\r\n * Only for backwards compat\r\n * @private\r\n */\r\nconst withScopeId = (_id) => withCtx;\r\n/**\r\n * Wrap a slot function to memoize current rendering instance\r\n * @private compiler helper\r\n */\r\nfunction withCtx(fn, ctx = currentRenderingInstance, isNonScopedSlot // false only\r\n) {\r\n if (!ctx)\r\n return fn;\r\n // already normalized\r\n if (fn._n) {\r\n return fn;\r\n }\r\n const renderFnWithContext = (...args) => {\r\n // If a user calls a compiled slot inside a template expression (#1745), it\r\n // can mess up block tracking, so by default we disable block tracking and\r\n // force bail out when invoking a compiled slot (indicated by the ._d flag).\r\n // This isn't necessary if rendering a compiled ``, so we flip the\r\n // ._d flag off when invoking the wrapped fn inside `renderSlot`.\r\n if (renderFnWithContext._d) {\r\n setBlockTracking(-1);\r\n }\r\n const prevInstance = setCurrentRenderingInstance(ctx);\r\n const res = fn(...args);\r\n setCurrentRenderingInstance(prevInstance);\r\n if (renderFnWithContext._d) {\r\n setBlockTracking(1);\r\n }\r\n if ((process.env.NODE_ENV !== 'production') || __VUE_PROD_DEVTOOLS__) {\r\n devtoolsComponentUpdated(ctx);\r\n }\r\n return res;\r\n };\r\n // mark normalized to avoid duplicated wrapping\r\n renderFnWithContext._n = true;\r\n // mark this as compiled by default\r\n // this is used in vnode.ts -> normalizeChildren() to set the slot\r\n // rendering flag.\r\n renderFnWithContext._c = true;\r\n // disable block tracking by default\r\n renderFnWithContext._d = true;\r\n return renderFnWithContext;\r\n}\n\n/**\r\n * dev only flag to track whether $attrs was used during render.\r\n * If $attrs was used during render then the warning for failed attrs\r\n * fallthrough can be suppressed.\r\n */\r\nlet accessedAttrs = false;\r\nfunction markAttrsAccessed() {\r\n accessedAttrs = true;\r\n}\r\nfunction renderComponentRoot(instance) {\r\n const { type: Component, vnode, proxy, withProxy, props, propsOptions: [propsOptions], slots, attrs, emit, render, renderCache, data, setupState, ctx, inheritAttrs } = instance;\r\n let result;\r\n let fallthroughAttrs;\r\n const prev = setCurrentRenderingInstance(instance);\r\n if ((process.env.NODE_ENV !== 'production')) {\r\n accessedAttrs = false;\r\n }\r\n try {\r\n if (vnode.shapeFlag & 4 /* STATEFUL_COMPONENT */) {\r\n // withProxy is a proxy with a different `has` trap only for\r\n // runtime-compiled render functions using `with` block.\r\n const proxyToUse = withProxy || proxy;\r\n result = normalizeVNode(render.call(proxyToUse, proxyToUse, renderCache, props, setupState, data, ctx));\r\n fallthroughAttrs = attrs;\r\n }\r\n else {\r\n // functional\r\n const render = Component;\r\n // in dev, mark attrs accessed if optional props (attrs === props)\r\n if ((process.env.NODE_ENV !== 'production') && attrs === props) {\r\n markAttrsAccessed();\r\n }\r\n result = normalizeVNode(render.length > 1\r\n ? render(props, (process.env.NODE_ENV !== 'production')\r\n ? {\r\n get attrs() {\r\n markAttrsAccessed();\r\n return attrs;\r\n },\r\n slots,\r\n emit\r\n }\r\n : { attrs, slots, emit })\r\n : render(props, null /* we know it doesn't need it */));\r\n fallthroughAttrs = Component.props\r\n ? attrs\r\n : getFunctionalFallthrough(attrs);\r\n }\r\n }\r\n catch (err) {\r\n blockStack.length = 0;\r\n handleError(err, instance, 1 /* RENDER_FUNCTION */);\r\n result = createVNode(Comment);\r\n }\r\n // attr merging\r\n // in dev mode, comments are preserved, and it's possible for a template\r\n // to have comments along side the root element which makes it a fragment\r\n let root = result;\r\n let setRoot = undefined;\r\n if ((process.env.NODE_ENV !== 'production') &&\r\n result.patchFlag > 0 &&\r\n result.patchFlag & 2048 /* DEV_ROOT_FRAGMENT */) {\r\n [root, setRoot] = getChildRoot(result);\r\n }\r\n if (fallthroughAttrs && inheritAttrs !== false) {\r\n const keys = Object.keys(fallthroughAttrs);\r\n const { shapeFlag } = root;\r\n if (keys.length) {\r\n if (shapeFlag & (1 /* ELEMENT */ | 6 /* COMPONENT */)) {\r\n if (propsOptions && keys.some(isModelListener)) {\r\n // If a v-model listener (onUpdate:xxx) has a corresponding declared\r\n // prop, it indicates this component expects to handle v-model and\r\n // it should not fallthrough.\r\n // related: #1543, #1643, #1989\r\n fallthroughAttrs = filterModelListeners(fallthroughAttrs, propsOptions);\r\n }\r\n root = cloneVNode(root, fallthroughAttrs);\r\n }\r\n else if ((process.env.NODE_ENV !== 'production') && !accessedAttrs && root.type !== Comment) {\r\n const allAttrs = Object.keys(attrs);\r\n const eventAttrs = [];\r\n const extraAttrs = [];\r\n for (let i = 0, l = allAttrs.length; i < l; i++) {\r\n const key = allAttrs[i];\r\n if (isOn(key)) {\r\n // ignore v-model handlers when they fail to fallthrough\r\n if (!isModelListener(key)) {\r\n // remove `on`, lowercase first letter to reflect event casing\r\n // accurately\r\n eventAttrs.push(key[2].toLowerCase() + key.slice(3));\r\n }\r\n }\r\n else {\r\n extraAttrs.push(key);\r\n }\r\n }\r\n if (extraAttrs.length) {\r\n warn(`Extraneous non-props attributes (` +\r\n `${extraAttrs.join(', ')}) ` +\r\n `were passed to component but could not be automatically inherited ` +\r\n `because component renders fragment or text root nodes.`);\r\n }\r\n if (eventAttrs.length) {\r\n warn(`Extraneous non-emits event listeners (` +\r\n `${eventAttrs.join(', ')}) ` +\r\n `were passed to component but could not be automatically inherited ` +\r\n `because component renders fragment or text root nodes. ` +\r\n `If the listener is intended to be a component custom event listener only, ` +\r\n `declare it using the \"emits\" option.`);\r\n }\r\n }\r\n }\r\n }\r\n // inherit directives\r\n if (vnode.dirs) {\r\n if ((process.env.NODE_ENV !== 'production') && !isElementRoot(root)) {\r\n warn(`Runtime directive used on component with non-element root node. ` +\r\n `The directives will not function as intended.`);\r\n }\r\n root.dirs = root.dirs ? root.dirs.concat(vnode.dirs) : vnode.dirs;\r\n }\r\n // inherit transition data\r\n if (vnode.transition) {\r\n if ((process.env.NODE_ENV !== 'production') && !isElementRoot(root)) {\r\n warn(`Component inside renders non-element root node ` +\r\n `that cannot be animated.`);\r\n }\r\n root.transition = vnode.transition;\r\n }\r\n if ((process.env.NODE_ENV !== 'production') && setRoot) {\r\n setRoot(root);\r\n }\r\n else {\r\n result = root;\r\n }\r\n setCurrentRenderingInstance(prev);\r\n return result;\r\n}\r\n/**\r\n * dev only\r\n * In dev mode, template root level comments are rendered, which turns the\r\n * template into a fragment root, but we need to locate the single element\r\n * root for attrs and scope id processing.\r\n */\r\nconst getChildRoot = (vnode) => {\r\n const rawChildren = vnode.children;\r\n const dynamicChildren = vnode.dynamicChildren;\r\n const childRoot = filterSingleRoot(rawChildren);\r\n if (!childRoot) {\r\n return [vnode, undefined];\r\n }\r\n const index = rawChildren.indexOf(childRoot);\r\n const dynamicIndex = dynamicChildren ? dynamicChildren.indexOf(childRoot) : -1;\r\n const setRoot = (updatedRoot) => {\r\n rawChildren[index] = updatedRoot;\r\n if (dynamicChildren) {\r\n if (dynamicIndex > -1) {\r\n dynamicChildren[dynamicIndex] = updatedRoot;\r\n }\r\n else if (updatedRoot.patchFlag > 0) {\r\n vnode.dynamicChildren = [...dynamicChildren, updatedRoot];\r\n }\r\n }\r\n };\r\n return [normalizeVNode(childRoot), setRoot];\r\n};\r\nfunction filterSingleRoot(children) {\r\n let singleRoot;\r\n for (let i = 0; i < children.length; i++) {\r\n const child = children[i];\r\n if (isVNode(child)) {\r\n // ignore user comment\r\n if (child.type !== Comment || child.children === 'v-if') {\r\n if (singleRoot) {\r\n // has more than 1 non-comment child, return now\r\n return;\r\n }\r\n else {\r\n singleRoot = child;\r\n }\r\n }\r\n }\r\n else {\r\n return;\r\n }\r\n }\r\n return singleRoot;\r\n}\r\nconst getFunctionalFallthrough = (attrs) => {\r\n let res;\r\n for (const key in attrs) {\r\n if (key === 'class' || key === 'style' || isOn(key)) {\r\n (res || (res = {}))[key] = attrs[key];\r\n }\r\n }\r\n return res;\r\n};\r\nconst filterModelListeners = (attrs, props) => {\r\n const res = {};\r\n for (const key in attrs) {\r\n if (!isModelListener(key) || !(key.slice(9) in props)) {\r\n res[key] = attrs[key];\r\n }\r\n }\r\n return res;\r\n};\r\nconst isElementRoot = (vnode) => {\r\n return (vnode.shapeFlag & (6 /* COMPONENT */ | 1 /* ELEMENT */) ||\r\n vnode.type === Comment // potential v-if branch switch\r\n );\r\n};\r\nfunction shouldUpdateComponent(prevVNode, nextVNode, optimized) {\r\n const { props: prevProps, children: prevChildren, component } = prevVNode;\r\n const { props: nextProps, children: nextChildren, patchFlag } = nextVNode;\r\n const emits = component.emitsOptions;\r\n // Parent component's render function was hot-updated. Since this may have\r\n // caused the child component's slots content to have changed, we need to\r\n // force the child to update as well.\r\n if ((process.env.NODE_ENV !== 'production') && (prevChildren || nextChildren) && isHmrUpdating) {\r\n return true;\r\n }\r\n // force child update for runtime directive or transition on component vnode.\r\n if (nextVNode.dirs || nextVNode.transition) {\r\n return true;\r\n }\r\n if (optimized && patchFlag >= 0) {\r\n if (patchFlag & 1024 /* DYNAMIC_SLOTS */) {\r\n // slot content that references values that might have changed,\r\n // e.g. in a v-for\r\n return true;\r\n }\r\n if (patchFlag & 16 /* FULL_PROPS */) {\r\n if (!prevProps) {\r\n return !!nextProps;\r\n }\r\n // presence of this flag indicates props are always non-null\r\n return hasPropsChanged(prevProps, nextProps, emits);\r\n }\r\n else if (patchFlag & 8 /* PROPS */) {\r\n const dynamicProps = nextVNode.dynamicProps;\r\n for (let i = 0; i < dynamicProps.length; i++) {\r\n const key = dynamicProps[i];\r\n if (nextProps[key] !== prevProps[key] &&\r\n !isEmitListener(emits, key)) {\r\n return true;\r\n }\r\n }\r\n }\r\n }\r\n else {\r\n // this path is only taken by manually written render functions\r\n // so presence of any children leads to a forced update\r\n if (prevChildren || nextChildren) {\r\n if (!nextChildren || !nextChildren.$stable) {\r\n return true;\r\n }\r\n }\r\n if (prevProps === nextProps) {\r\n return false;\r\n }\r\n if (!prevProps) {\r\n return !!nextProps;\r\n }\r\n if (!nextProps) {\r\n return true;\r\n }\r\n return hasPropsChanged(prevProps, nextProps, emits);\r\n }\r\n return false;\r\n}\r\nfunction hasPropsChanged(prevProps, nextProps, emitsOptions) {\r\n const nextKeys = Object.keys(nextProps);\r\n if (nextKeys.length !== Object.keys(prevProps).length) {\r\n return true;\r\n }\r\n for (let i = 0; i < nextKeys.length; i++) {\r\n const key = nextKeys[i];\r\n if (nextProps[key] !== prevProps[key] &&\r\n !isEmitListener(emitsOptions, key)) {\r\n return true;\r\n }\r\n }\r\n return false;\r\n}\r\nfunction updateHOCHostEl({ vnode, parent }, el // HostNode\r\n) {\r\n while (parent && parent.subTree === vnode) {\r\n (vnode = parent.vnode).el = el;\r\n parent = parent.parent;\r\n }\r\n}\n\nconst isSuspense = (type) => type.__isSuspense;\r\n// Suspense exposes a component-like API, and is treated like a component\r\n// in the compiler, but internally it's a special built-in type that hooks\r\n// directly into the renderer.\r\nconst SuspenseImpl = {\r\n name: 'Suspense',\r\n // In order to make Suspense tree-shakable, we need to avoid importing it\r\n // directly in the renderer. The renderer checks for the __isSuspense flag\r\n // on a vnode's type and calls the `process` method, passing in renderer\r\n // internals.\r\n __isSuspense: true,\r\n process(n1, n2, container, anchor, parentComponent, parentSuspense, isSVG, slotScopeIds, optimized, \r\n // platform-specific impl passed from renderer\r\n rendererInternals) {\r\n if (n1 == null) {\r\n mountSuspense(n2, container, anchor, parentComponent, parentSuspense, isSVG, slotScopeIds, optimized, rendererInternals);\r\n }\r\n else {\r\n patchSuspense(n1, n2, container, anchor, parentComponent, isSVG, slotScopeIds, optimized, rendererInternals);\r\n }\r\n },\r\n hydrate: hydrateSuspense,\r\n create: createSuspenseBoundary,\r\n normalize: normalizeSuspenseChildren\r\n};\r\n// Force-casted public typing for h and TSX props inference\r\nconst Suspense = (SuspenseImpl );\r\nfunction triggerEvent(vnode, name) {\r\n const eventListener = vnode.props && vnode.props[name];\r\n if (isFunction(eventListener)) {\r\n eventListener();\r\n }\r\n}\r\nfunction mountSuspense(vnode, container, anchor, parentComponent, parentSuspense, isSVG, slotScopeIds, optimized, rendererInternals) {\r\n const { p: patch, o: { createElement } } = rendererInternals;\r\n const hiddenContainer = createElement('div');\r\n const suspense = (vnode.suspense = createSuspenseBoundary(vnode, parentSuspense, parentComponent, container, hiddenContainer, anchor, isSVG, slotScopeIds, optimized, rendererInternals));\r\n // start mounting the content subtree in an off-dom container\r\n patch(null, (suspense.pendingBranch = vnode.ssContent), hiddenContainer, null, parentComponent, suspense, isSVG, slotScopeIds);\r\n // now check if we have encountered any async deps\r\n if (suspense.deps > 0) {\r\n // has async\r\n // invoke @fallback event\r\n triggerEvent(vnode, 'onPending');\r\n triggerEvent(vnode, 'onFallback');\r\n // mount the fallback tree\r\n patch(null, vnode.ssFallback, container, anchor, parentComponent, null, // fallback tree will not have suspense context\r\n isSVG, slotScopeIds);\r\n setActiveBranch(suspense, vnode.ssFallback);\r\n }\r\n else {\r\n // Suspense has no async deps. Just resolve.\r\n suspense.resolve();\r\n }\r\n}\r\nfunction patchSuspense(n1, n2, container, anchor, parentComponent, isSVG, slotScopeIds, optimized, { p: patch, um: unmount, o: { createElement } }) {\r\n const suspense = (n2.suspense = n1.suspense);\r\n suspense.vnode = n2;\r\n n2.el = n1.el;\r\n const newBranch = n2.ssContent;\r\n const newFallback = n2.ssFallback;\r\n const { activeBranch, pendingBranch, isInFallback, isHydrating } = suspense;\r\n if (pendingBranch) {\r\n suspense.pendingBranch = newBranch;\r\n if (isSameVNodeType(newBranch, pendingBranch)) {\r\n // same root type but content may have changed.\r\n patch(pendingBranch, newBranch, suspense.hiddenContainer, null, parentComponent, suspense, isSVG, slotScopeIds, optimized);\r\n if (suspense.deps <= 0) {\r\n suspense.resolve();\r\n }\r\n else if (isInFallback) {\r\n patch(activeBranch, newFallback, container, anchor, parentComponent, null, // fallback tree will not have suspense context\r\n isSVG, slotScopeIds, optimized);\r\n setActiveBranch(suspense, newFallback);\r\n }\r\n }\r\n else {\r\n // toggled before pending tree is resolved\r\n suspense.pendingId++;\r\n if (isHydrating) {\r\n // if toggled before hydration is finished, the current DOM tree is\r\n // no longer valid. set it as the active branch so it will be unmounted\r\n // when resolved\r\n suspense.isHydrating = false;\r\n suspense.activeBranch = pendingBranch;\r\n }\r\n else {\r\n unmount(pendingBranch, parentComponent, suspense);\r\n }\r\n // increment pending ID. this is used to invalidate async callbacks\r\n // reset suspense state\r\n suspense.deps = 0;\r\n // discard effects from pending branch\r\n suspense.effects.length = 0;\r\n // discard previous container\r\n suspense.hiddenContainer = createElement('div');\r\n if (isInFallback) {\r\n // already in fallback state\r\n patch(null, newBranch, suspense.hiddenContainer, null, parentComponent, suspense, isSVG, slotScopeIds, optimized);\r\n if (suspense.deps <= 0) {\r\n suspense.resolve();\r\n }\r\n else {\r\n patch(activeBranch, newFallback, container, anchor, parentComponent, null, // fallback tree will not have suspense context\r\n isSVG, slotScopeIds, optimized);\r\n setActiveBranch(suspense, newFallback);\r\n }\r\n }\r\n else if (activeBranch && isSameVNodeType(newBranch, activeBranch)) {\r\n // toggled \"back\" to current active branch\r\n patch(activeBranch, newBranch, container, anchor, parentComponent, suspense, isSVG, slotScopeIds, optimized);\r\n // force resolve\r\n suspense.resolve(true);\r\n }\r\n else {\r\n // switched to a 3rd branch\r\n patch(null, newBranch, suspense.hiddenContainer, null, parentComponent, suspense, isSVG, slotScopeIds, optimized);\r\n if (suspense.deps <= 0) {\r\n suspense.resolve();\r\n }\r\n }\r\n }\r\n }\r\n else {\r\n if (activeBranch && isSameVNodeType(newBranch, activeBranch)) {\r\n // root did not change, just normal patch\r\n patch(activeBranch, newBranch, container, anchor, parentComponent, suspense, isSVG, slotScopeIds, optimized);\r\n setActiveBranch(suspense, newBranch);\r\n }\r\n else {\r\n // root node toggled\r\n // invoke @pending event\r\n triggerEvent(n2, 'onPending');\r\n // mount pending branch in off-dom container\r\n suspense.pendingBranch = newBranch;\r\n suspense.pendingId++;\r\n patch(null, newBranch, suspense.hiddenContainer, null, parentComponent, suspense, isSVG, slotScopeIds, optimized);\r\n if (suspense.deps <= 0) {\r\n // incoming branch has no async deps, resolve now.\r\n suspense.resolve();\r\n }\r\n else {\r\n const { timeout, pendingId } = suspense;\r\n if (timeout > 0) {\r\n setTimeout(() => {\r\n if (suspense.pendingId === pendingId) {\r\n suspense.fallback(newFallback);\r\n }\r\n }, timeout);\r\n }\r\n else if (timeout === 0) {\r\n suspense.fallback(newFallback);\r\n }\r\n }\r\n }\r\n }\r\n}\r\nlet hasWarned = false;\r\nfunction createSuspenseBoundary(vnode, parent, parentComponent, container, hiddenContainer, anchor, isSVG, slotScopeIds, optimized, rendererInternals, isHydrating = false) {\r\n /* istanbul ignore if */\r\n if ((process.env.NODE_ENV !== 'production') && !false && !hasWarned) {\r\n hasWarned = true;\r\n // @ts-ignore `console.info` cannot be null error\r\n console[console.info ? 'info' : 'log'](` is an experimental feature and its API will likely change.`);\r\n }\r\n const { p: patch, m: move, um: unmount, n: next, o: { parentNode, remove } } = rendererInternals;\r\n const timeout = toNumber(vnode.props && vnode.props.timeout);\r\n const suspense = {\r\n vnode,\r\n parent,\r\n parentComponent,\r\n isSVG,\r\n container,\r\n hiddenContainer,\r\n anchor,\r\n deps: 0,\r\n pendingId: 0,\r\n timeout: typeof timeout === 'number' ? timeout : -1,\r\n activeBranch: null,\r\n pendingBranch: null,\r\n isInFallback: true,\r\n isHydrating,\r\n isUnmounted: false,\r\n effects: [],\r\n resolve(resume = false) {\r\n if ((process.env.NODE_ENV !== 'production')) {\r\n if (!resume && !suspense.pendingBranch) {\r\n throw new Error(`suspense.resolve() is called without a pending branch.`);\r\n }\r\n if (suspense.isUnmounted) {\r\n throw new Error(`suspense.resolve() is called on an already unmounted suspense boundary.`);\r\n }\r\n }\r\n const { vnode, activeBranch, pendingBranch, pendingId, effects, parentComponent, container } = suspense;\r\n if (suspense.isHydrating) {\r\n suspense.isHydrating = false;\r\n }\r\n else if (!resume) {\r\n const delayEnter = activeBranch &&\r\n pendingBranch.transition &&\r\n pendingBranch.transition.mode === 'out-in';\r\n if (delayEnter) {\r\n activeBranch.transition.afterLeave = () => {\r\n if (pendingId === suspense.pendingId) {\r\n move(pendingBranch, container, anchor, 0 /* ENTER */);\r\n }\r\n };\r\n }\r\n // this is initial anchor on mount\r\n let { anchor } = suspense;\r\n // unmount current active tree\r\n if (activeBranch) {\r\n // if the fallback tree was mounted, it may have been moved\r\n // as part of a parent suspense. get the latest anchor for insertion\r\n anchor = next(activeBranch);\r\n unmount(activeBranch, parentComponent, suspense, true);\r\n }\r\n if (!delayEnter) {\r\n // move content from off-dom container to actual container\r\n move(pendingBranch, container, anchor, 0 /* ENTER */);\r\n }\r\n }\r\n setActiveBranch(suspense, pendingBranch);\r\n suspense.pendingBranch = null;\r\n suspense.isInFallback = false;\r\n // flush buffered effects\r\n // check if there is a pending parent suspense\r\n let parent = suspense.parent;\r\n let hasUnresolvedAncestor = false;\r\n while (parent) {\r\n if (parent.pendingBranch) {\r\n // found a pending parent suspense, merge buffered post jobs\r\n // into that parent\r\n parent.effects.push(...effects);\r\n hasUnresolvedAncestor = true;\r\n break;\r\n }\r\n parent = parent.parent;\r\n }\r\n // no pending parent suspense, flush all jobs\r\n if (!hasUnresolvedAncestor) {\r\n queuePostFlushCb(effects);\r\n }\r\n suspense.effects = [];\r\n // invoke @resolve event\r\n triggerEvent(vnode, 'onResolve');\r\n },\r\n fallback(fallbackVNode) {\r\n if (!suspense.pendingBranch) {\r\n return;\r\n }\r\n const { vnode, activeBranch, parentComponent, container, isSVG } = suspense;\r\n // invoke @fallback event\r\n triggerEvent(vnode, 'onFallback');\r\n const anchor = next(activeBranch);\r\n const mountFallback = () => {\r\n if (!suspense.isInFallback) {\r\n return;\r\n }\r\n // mount the fallback tree\r\n patch(null, fallbackVNode, container, anchor, parentComponent, null, // fallback tree will not have suspense context\r\n isSVG, slotScopeIds, optimized);\r\n setActiveBranch(suspense, fallbackVNode);\r\n };\r\n const delayEnter = fallbackVNode.transition && fallbackVNode.transition.mode === 'out-in';\r\n if (delayEnter) {\r\n activeBranch.transition.afterLeave = mountFallback;\r\n }\r\n suspense.isInFallback = true;\r\n // unmount current active branch\r\n unmount(activeBranch, parentComponent, null, // no suspense so unmount hooks fire now\r\n true // shouldRemove\r\n );\r\n if (!delayEnter) {\r\n mountFallback();\r\n }\r\n },\r\n move(container, anchor, type) {\r\n suspense.activeBranch &&\r\n move(suspense.activeBranch, container, anchor, type);\r\n suspense.container = container;\r\n },\r\n next() {\r\n return suspense.activeBranch && next(suspense.activeBranch);\r\n },\r\n registerDep(instance, setupRenderEffect) {\r\n const isInPendingSuspense = !!suspense.pendingBranch;\r\n if (isInPendingSuspense) {\r\n suspense.deps++;\r\n }\r\n const hydratedEl = instance.vnode.el;\r\n instance\r\n .asyncDep.catch(err => {\r\n handleError(err, instance, 0 /* SETUP_FUNCTION */);\r\n })\r\n .then(asyncSetupResult => {\r\n // retry when the setup() promise resolves.\r\n // component may have been unmounted before resolve.\r\n if (instance.isUnmounted ||\r\n suspense.isUnmounted ||\r\n suspense.pendingId !== instance.suspenseId) {\r\n return;\r\n }\r\n // retry from this component\r\n instance.asyncResolved = true;\r\n const { vnode } = instance;\r\n if ((process.env.NODE_ENV !== 'production')) {\r\n pushWarningContext(vnode);\r\n }\r\n handleSetupResult(instance, asyncSetupResult, false);\r\n if (hydratedEl) {\r\n // vnode may have been replaced if an update happened before the\r\n // async dep is resolved.\r\n vnode.el = hydratedEl;\r\n }\r\n const placeholder = !hydratedEl && instance.subTree.el;\r\n setupRenderEffect(instance, vnode, \r\n // component may have been moved before resolve.\r\n // if this is not a hydration, instance.subTree will be the comment\r\n // placeholder.\r\n parentNode(hydratedEl || instance.subTree.el), \r\n // anchor will not be used if this is hydration, so only need to\r\n // consider the comment placeholder case.\r\n hydratedEl ? null : next(instance.subTree), suspense, isSVG, optimized);\r\n if (placeholder) {\r\n remove(placeholder);\r\n }\r\n updateHOCHostEl(instance, vnode.el);\r\n if ((process.env.NODE_ENV !== 'production')) {\r\n popWarningContext();\r\n }\r\n // only decrease deps count if suspense is not already resolved\r\n if (isInPendingSuspense && --suspense.deps === 0) {\r\n suspense.resolve();\r\n }\r\n });\r\n },\r\n unmount(parentSuspense, doRemove) {\r\n suspense.isUnmounted = true;\r\n if (suspense.activeBranch) {\r\n unmount(suspense.activeBranch, parentComponent, parentSuspense, doRemove);\r\n }\r\n if (suspense.pendingBranch) {\r\n unmount(suspense.pendingBranch, parentComponent, parentSuspense, doRemove);\r\n }\r\n }\r\n };\r\n return suspense;\r\n}\r\nfunction hydrateSuspense(node, vnode, parentComponent, parentSuspense, isSVG, slotScopeIds, optimized, rendererInternals, hydrateNode) {\r\n /* eslint-disable no-restricted-globals */\r\n const suspense = (vnode.suspense = createSuspenseBoundary(vnode, parentSuspense, parentComponent, node.parentNode, document.createElement('div'), null, isSVG, slotScopeIds, optimized, rendererInternals, true /* hydrating */));\r\n // there are two possible scenarios for server-rendered suspense:\r\n // - success: ssr content should be fully resolved\r\n // - failure: ssr content should be the fallback branch.\r\n // however, on the client we don't really know if it has failed or not\r\n // attempt to hydrate the DOM assuming it has succeeded, but we still\r\n // need to construct a suspense boundary first\r\n const result = hydrateNode(node, (suspense.pendingBranch = vnode.ssContent), parentComponent, suspense, slotScopeIds, optimized);\r\n if (suspense.deps === 0) {\r\n suspense.resolve();\r\n }\r\n return result;\r\n /* eslint-enable no-restricted-globals */\r\n}\r\nfunction normalizeSuspenseChildren(vnode) {\r\n const { shapeFlag, children } = vnode;\r\n const isSlotChildren = shapeFlag & 32 /* SLOTS_CHILDREN */;\r\n vnode.ssContent = normalizeSuspenseSlot(isSlotChildren ? children.default : children);\r\n vnode.ssFallback = isSlotChildren\r\n ? normalizeSuspenseSlot(children.fallback)\r\n : createVNode(Comment);\r\n}\r\nfunction normalizeSuspenseSlot(s) {\r\n let block;\r\n if (isFunction(s)) {\r\n const trackBlock = isBlockTreeEnabled && s._c;\r\n if (trackBlock) {\r\n // disableTracking: false\r\n // allow block tracking for compiled slots\r\n // (see ./componentRenderContext.ts)\r\n s._d = false;\r\n openBlock();\r\n }\r\n s = s();\r\n if (trackBlock) {\r\n s._d = true;\r\n block = currentBlock;\r\n closeBlock();\r\n }\r\n }\r\n if (isArray(s)) {\r\n const singleChild = filterSingleRoot(s);\r\n if ((process.env.NODE_ENV !== 'production') && !singleChild) {\r\n warn(` slots expect a single root node.`);\r\n }\r\n s = singleChild;\r\n }\r\n s = normalizeVNode(s);\r\n if (block && !s.dynamicChildren) {\r\n s.dynamicChildren = block.filter(c => c !== s);\r\n }\r\n return s;\r\n}\r\nfunction queueEffectWithSuspense(fn, suspense) {\r\n if (suspense && suspense.pendingBranch) {\r\n if (isArray(fn)) {\r\n suspense.effects.push(...fn);\r\n }\r\n else {\r\n suspense.effects.push(fn);\r\n }\r\n }\r\n else {\r\n queuePostFlushCb(fn);\r\n }\r\n}\r\nfunction setActiveBranch(suspense, branch) {\r\n suspense.activeBranch = branch;\r\n const { vnode, parentComponent } = suspense;\r\n const el = (vnode.el = branch.el);\r\n // in case suspense is the root node of a component,\r\n // recursively update the HOC el\r\n if (parentComponent && parentComponent.subTree === vnode) {\r\n parentComponent.vnode.el = el;\r\n updateHOCHostEl(parentComponent, el);\r\n }\r\n}\n\nfunction provide(key, value) {\r\n if (!currentInstance) {\r\n if ((process.env.NODE_ENV !== 'production')) {\r\n warn(`provide() can only be used inside setup().`);\r\n }\r\n }\r\n else {\r\n let provides = currentInstance.provides;\r\n // by default an instance inherits its parent's provides object\r\n // but when it needs to provide values of its own, it creates its\r\n // own provides object using parent provides object as prototype.\r\n // this way in `inject` we can simply look up injections from direct\r\n // parent and let the prototype chain do the work.\r\n const parentProvides = currentInstance.parent && currentInstance.parent.provides;\r\n if (parentProvides === provides) {\r\n provides = currentInstance.provides = Object.create(parentProvides);\r\n }\r\n // TS doesn't allow symbol as index type\r\n provides[key] = value;\r\n }\r\n}\r\nfunction inject(key, defaultValue, treatDefaultAsFactory = false) {\r\n // fallback to `currentRenderingInstance` so that this can be called in\r\n // a functional component\r\n const instance = currentInstance || currentRenderingInstance;\r\n if (instance) {\r\n // #2400\r\n // to support `app.use` plugins,\r\n // fallback to appContext's `provides` if the intance is at root\r\n const provides = instance.parent == null\r\n ? instance.vnode.appContext && instance.vnode.appContext.provides\r\n : instance.parent.provides;\r\n if (provides && key in provides) {\r\n // TS doesn't allow symbol as index type\r\n return provides[key];\r\n }\r\n else if (arguments.length > 1) {\r\n return treatDefaultAsFactory && isFunction(defaultValue)\r\n ? defaultValue.call(instance.proxy)\r\n : defaultValue;\r\n }\r\n else if ((process.env.NODE_ENV !== 'production')) {\r\n warn(`injection \"${String(key)}\" not found.`);\r\n }\r\n }\r\n else if ((process.env.NODE_ENV !== 'production')) {\r\n warn(`inject() can only be used inside setup() or functional components.`);\r\n }\r\n}\n\nfunction useTransitionState() {\r\n const state = {\r\n isMounted: false,\r\n isLeaving: false,\r\n isUnmounting: false,\r\n leavingVNodes: new Map()\r\n };\r\n onMounted(() => {\r\n state.isMounted = true;\r\n });\r\n onBeforeUnmount(() => {\r\n state.isUnmounting = true;\r\n });\r\n return state;\r\n}\r\nconst TransitionHookValidator = [Function, Array];\r\nconst BaseTransitionImpl = {\r\n name: `BaseTransition`,\r\n props: {\r\n mode: String,\r\n appear: Boolean,\r\n persisted: Boolean,\r\n // enter\r\n onBeforeEnter: TransitionHookValidator,\r\n onEnter: TransitionHookValidator,\r\n onAfterEnter: TransitionHookValidator,\r\n onEnterCancelled: TransitionHookValidator,\r\n // leave\r\n onBeforeLeave: TransitionHookValidator,\r\n onLeave: TransitionHookValidator,\r\n onAfterLeave: TransitionHookValidator,\r\n onLeaveCancelled: TransitionHookValidator,\r\n // appear\r\n onBeforeAppear: TransitionHookValidator,\r\n onAppear: TransitionHookValidator,\r\n onAfterAppear: TransitionHookValidator,\r\n onAppearCancelled: TransitionHookValidator\r\n },\r\n setup(props, { slots }) {\r\n const instance = getCurrentInstance();\r\n const state = useTransitionState();\r\n let prevTransitionKey;\r\n return () => {\r\n const children = slots.default && getTransitionRawChildren(slots.default(), true);\r\n if (!children || !children.length) {\r\n return;\r\n }\r\n // warn multiple elements\r\n if ((process.env.NODE_ENV !== 'production') && children.length > 1) {\r\n warn(' can only be used on a single element or component. Use ' +\r\n ' for lists.');\r\n }\r\n // there's no need to track reactivity for these props so use the raw\r\n // props for a bit better perf\r\n const rawProps = toRaw(props);\r\n const { mode } = rawProps;\r\n // check mode\r\n if ((process.env.NODE_ENV !== 'production') &&\r\n mode &&\r\n mode !== 'in-out' && mode !== 'out-in' && mode !== 'default') {\r\n warn(`invalid mode: ${mode}`);\r\n }\r\n // at this point children has a guaranteed length of 1.\r\n const child = children[0];\r\n if (state.isLeaving) {\r\n return emptyPlaceholder(child);\r\n }\r\n // in the case of , we need to\r\n // compare the type of the kept-alive children.\r\n const innerChild = getKeepAliveChild(child);\r\n if (!innerChild) {\r\n return emptyPlaceholder(child);\r\n }\r\n const enterHooks = resolveTransitionHooks(innerChild, rawProps, state, instance);\r\n setTransitionHooks(innerChild, enterHooks);\r\n const oldChild = instance.subTree;\r\n const oldInnerChild = oldChild && getKeepAliveChild(oldChild);\r\n let transitionKeyChanged = false;\r\n const { getTransitionKey } = innerChild.type;\r\n if (getTransitionKey) {\r\n const key = getTransitionKey();\r\n if (prevTransitionKey === undefined) {\r\n prevTransitionKey = key;\r\n }\r\n else if (key !== prevTransitionKey) {\r\n prevTransitionKey = key;\r\n transitionKeyChanged = true;\r\n }\r\n }\r\n // handle mode\r\n if (oldInnerChild &&\r\n oldInnerChild.type !== Comment &&\r\n (!isSameVNodeType(innerChild, oldInnerChild) || transitionKeyChanged)) {\r\n const leavingHooks = resolveTransitionHooks(oldInnerChild, rawProps, state, instance);\r\n // update old tree's hooks in case of dynamic transition\r\n setTransitionHooks(oldInnerChild, leavingHooks);\r\n // switching between different views\r\n if (mode === 'out-in') {\r\n state.isLeaving = true;\r\n // return placeholder node and queue update when leave finishes\r\n leavingHooks.afterLeave = () => {\r\n state.isLeaving = false;\r\n instance.update();\r\n };\r\n return emptyPlaceholder(child);\r\n }\r\n else if (mode === 'in-out' && innerChild.type !== Comment) {\r\n leavingHooks.delayLeave = (el, earlyRemove, delayedLeave) => {\r\n const leavingVNodesCache = getLeavingNodesForType(state, oldInnerChild);\r\n leavingVNodesCache[String(oldInnerChild.key)] = oldInnerChild;\r\n // early removal callback\r\n el._leaveCb = () => {\r\n earlyRemove();\r\n el._leaveCb = undefined;\r\n delete enterHooks.delayedLeave;\r\n };\r\n enterHooks.delayedLeave = delayedLeave;\r\n };\r\n }\r\n }\r\n return child;\r\n };\r\n }\r\n};\r\n// export the public type for h/tsx inference\r\n// also to avoid inline import() in generated d.ts files\r\nconst BaseTransition = BaseTransitionImpl;\r\nfunction getLeavingNodesForType(state, vnode) {\r\n const { leavingVNodes } = state;\r\n let leavingVNodesCache = leavingVNodes.get(vnode.type);\r\n if (!leavingVNodesCache) {\r\n leavingVNodesCache = Object.create(null);\r\n leavingVNodes.set(vnode.type, leavingVNodesCache);\r\n }\r\n return leavingVNodesCache;\r\n}\r\n// The transition hooks are attached to the vnode as vnode.transition\r\n// and will be called at appropriate timing in the renderer.\r\nfunction resolveTransitionHooks(vnode, props, state, instance) {\r\n const { appear, mode, persisted = false, onBeforeEnter, onEnter, onAfterEnter, onEnterCancelled, onBeforeLeave, onLeave, onAfterLeave, onLeaveCancelled, onBeforeAppear, onAppear, onAfterAppear, onAppearCancelled } = props;\r\n const key = String(vnode.key);\r\n const leavingVNodesCache = getLeavingNodesForType(state, vnode);\r\n const callHook = (hook, args) => {\r\n hook &&\r\n callWithAsyncErrorHandling(hook, instance, 9 /* TRANSITION_HOOK */, args);\r\n };\r\n const hooks = {\r\n mode,\r\n persisted,\r\n beforeEnter(el) {\r\n let hook = onBeforeEnter;\r\n if (!state.isMounted) {\r\n if (appear) {\r\n hook = onBeforeAppear || onBeforeEnter;\r\n }\r\n else {\r\n return;\r\n }\r\n }\r\n // for same element (v-show)\r\n if (el._leaveCb) {\r\n el._leaveCb(true /* cancelled */);\r\n }\r\n // for toggled element with same key (v-if)\r\n const leavingVNode = leavingVNodesCache[key];\r\n if (leavingVNode &&\r\n isSameVNodeType(vnode, leavingVNode) &&\r\n leavingVNode.el._leaveCb) {\r\n // force early removal (not cancelled)\r\n leavingVNode.el._leaveCb();\r\n }\r\n callHook(hook, [el]);\r\n },\r\n enter(el) {\r\n let hook = onEnter;\r\n let afterHook = onAfterEnter;\r\n let cancelHook = onEnterCancelled;\r\n if (!state.isMounted) {\r\n if (appear) {\r\n hook = onAppear || onEnter;\r\n afterHook = onAfterAppear || onAfterEnter;\r\n cancelHook = onAppearCancelled || onEnterCancelled;\r\n }\r\n else {\r\n return;\r\n }\r\n }\r\n let called = false;\r\n const done = (el._enterCb = (cancelled) => {\r\n if (called)\r\n return;\r\n called = true;\r\n if (cancelled) {\r\n callHook(cancelHook, [el]);\r\n }\r\n else {\r\n callHook(afterHook, [el]);\r\n }\r\n if (hooks.delayedLeave) {\r\n hooks.delayedLeave();\r\n }\r\n el._enterCb = undefined;\r\n });\r\n if (hook) {\r\n hook(el, done);\r\n if (hook.length <= 1) {\r\n done();\r\n }\r\n }\r\n else {\r\n done();\r\n }\r\n },\r\n leave(el, remove) {\r\n const key = String(vnode.key);\r\n if (el._enterCb) {\r\n el._enterCb(true /* cancelled */);\r\n }\r\n if (state.isUnmounting) {\r\n return remove();\r\n }\r\n callHook(onBeforeLeave, [el]);\r\n let called = false;\r\n const done = (el._leaveCb = (cancelled) => {\r\n if (called)\r\n return;\r\n called = true;\r\n remove();\r\n if (cancelled) {\r\n callHook(onLeaveCancelled, [el]);\r\n }\r\n else {\r\n callHook(onAfterLeave, [el]);\r\n }\r\n el._leaveCb = undefined;\r\n if (leavingVNodesCache[key] === vnode) {\r\n delete leavingVNodesCache[key];\r\n }\r\n });\r\n leavingVNodesCache[key] = vnode;\r\n if (onLeave) {\r\n onLeave(el, done);\r\n if (onLeave.length <= 1) {\r\n done();\r\n }\r\n }\r\n else {\r\n done();\r\n }\r\n },\r\n clone(vnode) {\r\n return resolveTransitionHooks(vnode, props, state, instance);\r\n }\r\n };\r\n return hooks;\r\n}\r\n// the placeholder really only handles one special case: KeepAlive\r\n// in the case of a KeepAlive in a leave phase we need to return a KeepAlive\r\n// placeholder with empty content to avoid the KeepAlive instance from being\r\n// unmounted.\r\nfunction emptyPlaceholder(vnode) {\r\n if (isKeepAlive(vnode)) {\r\n vnode = cloneVNode(vnode);\r\n vnode.children = null;\r\n return vnode;\r\n }\r\n}\r\nfunction getKeepAliveChild(vnode) {\r\n return isKeepAlive(vnode)\r\n ? vnode.children\r\n ? vnode.children[0]\r\n : undefined\r\n : vnode;\r\n}\r\nfunction setTransitionHooks(vnode, hooks) {\r\n if (vnode.shapeFlag & 6 /* COMPONENT */ && vnode.component) {\r\n setTransitionHooks(vnode.component.subTree, hooks);\r\n }\r\n else if (vnode.shapeFlag & 128 /* SUSPENSE */) {\r\n vnode.ssContent.transition = hooks.clone(vnode.ssContent);\r\n vnode.ssFallback.transition = hooks.clone(vnode.ssFallback);\r\n }\r\n else {\r\n vnode.transition = hooks;\r\n }\r\n}\r\nfunction getTransitionRawChildren(children, keepComment = false) {\r\n let ret = [];\r\n let keyedFragmentCount = 0;\r\n for (let i = 0; i < children.length; i++) {\r\n const child = children[i];\r\n // handle fragment children case, e.g. v-for\r\n if (child.type === Fragment) {\r\n if (child.patchFlag & 128 /* KEYED_FRAGMENT */)\r\n keyedFragmentCount++;\r\n ret = ret.concat(getTransitionRawChildren(child.children, keepComment));\r\n }\r\n // comment placeholders should be skipped, e.g. v-if\r\n else if (keepComment || child.type !== Comment) {\r\n ret.push(child);\r\n }\r\n }\r\n // #1126 if a transition children list contains multiple sub fragments, these\r\n // fragments will be merged into a flat children array. Since each v-for\r\n // fragment may contain different static bindings inside, we need to de-op\r\n // these children to force full diffs to ensure correct behavior.\r\n if (keyedFragmentCount > 1) {\r\n for (let i = 0; i < ret.length; i++) {\r\n ret[i].patchFlag = -2 /* BAIL */;\r\n }\r\n }\r\n return ret;\r\n}\n\n// implementation, close to no-op\r\nfunction defineComponent(options) {\r\n return isFunction(options) ? { setup: options, name: options.name } : options;\r\n}\n\nconst isAsyncWrapper = (i) => !!i.type.__asyncLoader;\r\nfunction defineAsyncComponent(source) {\r\n if (isFunction(source)) {\r\n source = { loader: source };\r\n }\r\n const { loader, loadingComponent, errorComponent, delay = 200, timeout, // undefined = never times out\r\n suspensible = true, onError: userOnError } = source;\r\n let pendingRequest = null;\r\n let resolvedComp;\r\n let retries = 0;\r\n const retry = () => {\r\n retries++;\r\n pendingRequest = null;\r\n return load();\r\n };\r\n const load = () => {\r\n let thisRequest;\r\n return (pendingRequest ||\r\n (thisRequest = pendingRequest =\r\n loader()\r\n .catch(err => {\r\n err = err instanceof Error ? err : new Error(String(err));\r\n if (userOnError) {\r\n return new Promise((resolve, reject) => {\r\n const userRetry = () => resolve(retry());\r\n const userFail = () => reject(err);\r\n userOnError(err, userRetry, userFail, retries + 1);\r\n });\r\n }\r\n else {\r\n throw err;\r\n }\r\n })\r\n .then((comp) => {\r\n if (thisRequest !== pendingRequest && pendingRequest) {\r\n return pendingRequest;\r\n }\r\n if ((process.env.NODE_ENV !== 'production') && !comp) {\r\n warn(`Async component loader resolved to undefined. ` +\r\n `If you are using retry(), make sure to return its return value.`);\r\n }\r\n // interop module default\r\n if (comp &&\r\n (comp.__esModule || comp[Symbol.toStringTag] === 'Module')) {\r\n comp = comp.default;\r\n }\r\n if ((process.env.NODE_ENV !== 'production') && comp && !isObject(comp) && !isFunction(comp)) {\r\n throw new Error(`Invalid async component load result: ${comp}`);\r\n }\r\n resolvedComp = comp;\r\n return comp;\r\n })));\r\n };\r\n return defineComponent({\r\n name: 'AsyncComponentWrapper',\r\n __asyncLoader: load,\r\n get __asyncResolved() {\r\n return resolvedComp;\r\n },\r\n setup() {\r\n const instance = currentInstance;\r\n // already resolved\r\n if (resolvedComp) {\r\n return () => createInnerComp(resolvedComp, instance);\r\n }\r\n const onError = (err) => {\r\n pendingRequest = null;\r\n handleError(err, instance, 13 /* ASYNC_COMPONENT_LOADER */, !errorComponent /* do not throw in dev if user provided error component */);\r\n };\r\n // suspense-controlled or SSR.\r\n if ((suspensible && instance.suspense) ||\r\n (isInSSRComponentSetup)) {\r\n return load()\r\n .then(comp => {\r\n return () => createInnerComp(comp, instance);\r\n })\r\n .catch(err => {\r\n onError(err);\r\n return () => errorComponent\r\n ? createVNode(errorComponent, {\r\n error: err\r\n })\r\n : null;\r\n });\r\n }\r\n const loaded = ref(false);\r\n const error = ref();\r\n const delayed = ref(!!delay);\r\n if (delay) {\r\n setTimeout(() => {\r\n delayed.value = false;\r\n }, delay);\r\n }\r\n if (timeout != null) {\r\n setTimeout(() => {\r\n if (!loaded.value && !error.value) {\r\n const err = new Error(`Async component timed out after ${timeout}ms.`);\r\n onError(err);\r\n error.value = err;\r\n }\r\n }, timeout);\r\n }\r\n load()\r\n .then(() => {\r\n loaded.value = true;\r\n if (instance.parent && isKeepAlive(instance.parent.vnode)) {\r\n // parent is keep-alive, force update so the loaded component's\r\n // name is taken into account\r\n queueJob(instance.parent.update);\r\n }\r\n })\r\n .catch(err => {\r\n onError(err);\r\n error.value = err;\r\n });\r\n return () => {\r\n if (loaded.value && resolvedComp) {\r\n return createInnerComp(resolvedComp, instance);\r\n }\r\n else if (error.value && errorComponent) {\r\n return createVNode(errorComponent, {\r\n error: error.value\r\n });\r\n }\r\n else if (loadingComponent && !delayed.value) {\r\n return createVNode(loadingComponent);\r\n }\r\n };\r\n }\r\n });\r\n}\r\nfunction createInnerComp(comp, { vnode: { ref, props, children } }) {\r\n const vnode = createVNode(comp, props, children);\r\n // ensure inner component inherits the async wrapper's ref owner\r\n vnode.ref = ref;\r\n return vnode;\r\n}\n\nconst isKeepAlive = (vnode) => vnode.type.__isKeepAlive;\r\nconst KeepAliveImpl = {\r\n name: `KeepAlive`,\r\n // Marker for special handling inside the renderer. We are not using a ===\r\n // check directly on KeepAlive in the renderer, because importing it directly\r\n // would prevent it from being tree-shaken.\r\n __isKeepAlive: true,\r\n props: {\r\n include: [String, RegExp, Array],\r\n exclude: [String, RegExp, Array],\r\n max: [String, Number]\r\n },\r\n setup(props, { slots }) {\r\n const instance = getCurrentInstance();\r\n // KeepAlive communicates with the instantiated renderer via the\r\n // ctx where the renderer passes in its internals,\r\n // and the KeepAlive instance exposes activate/deactivate implementations.\r\n // The whole point of this is to avoid importing KeepAlive directly in the\r\n // renderer to facilitate tree-shaking.\r\n const sharedContext = instance.ctx;\r\n // if the internal renderer is not registered, it indicates that this is server-side rendering,\r\n // for KeepAlive, we just need to render its children\r\n if (!sharedContext.renderer) {\r\n return slots.default;\r\n }\r\n const cache = new Map();\r\n const keys = new Set();\r\n let current = null;\r\n if ((process.env.NODE_ENV !== 'production') || __VUE_PROD_DEVTOOLS__) {\r\n instance.__v_cache = cache;\r\n }\r\n const parentSuspense = instance.suspense;\r\n const { renderer: { p: patch, m: move, um: _unmount, o: { createElement } } } = sharedContext;\r\n const storageContainer = createElement('div');\r\n sharedContext.activate = (vnode, container, anchor, isSVG, optimized) => {\r\n const instance = vnode.component;\r\n move(vnode, container, anchor, 0 /* ENTER */, parentSuspense);\r\n // in case props have changed\r\n patch(instance.vnode, vnode, container, anchor, instance, parentSuspense, isSVG, vnode.slotScopeIds, optimized);\r\n queuePostRenderEffect(() => {\r\n instance.isDeactivated = false;\r\n if (instance.a) {\r\n invokeArrayFns(instance.a);\r\n }\r\n const vnodeHook = vnode.props && vnode.props.onVnodeMounted;\r\n if (vnodeHook) {\r\n invokeVNodeHook(vnodeHook, instance.parent, vnode);\r\n }\r\n }, parentSuspense);\r\n if ((process.env.NODE_ENV !== 'production') || __VUE_PROD_DEVTOOLS__) {\r\n // Update components tree\r\n devtoolsComponentAdded(instance);\r\n }\r\n };\r\n sharedContext.deactivate = (vnode) => {\r\n const instance = vnode.component;\r\n move(vnode, storageContainer, null, 1 /* LEAVE */, parentSuspense);\r\n queuePostRenderEffect(() => {\r\n if (instance.da) {\r\n invokeArrayFns(instance.da);\r\n }\r\n const vnodeHook = vnode.props && vnode.props.onVnodeUnmounted;\r\n if (vnodeHook) {\r\n invokeVNodeHook(vnodeHook, instance.parent, vnode);\r\n }\r\n instance.isDeactivated = true;\r\n }, parentSuspense);\r\n if ((process.env.NODE_ENV !== 'production') || __VUE_PROD_DEVTOOLS__) {\r\n // Update components tree\r\n devtoolsComponentAdded(instance);\r\n }\r\n };\r\n function unmount(vnode) {\r\n // reset the shapeFlag so it can be properly unmounted\r\n resetShapeFlag(vnode);\r\n _unmount(vnode, instance, parentSuspense);\r\n }\r\n function pruneCache(filter) {\r\n cache.forEach((vnode, key) => {\r\n const name = getComponentName(vnode.type);\r\n if (name && (!filter || !filter(name))) {\r\n pruneCacheEntry(key);\r\n }\r\n });\r\n }\r\n function pruneCacheEntry(key) {\r\n const cached = cache.get(key);\r\n if (!current || cached.type !== current.type) {\r\n unmount(cached);\r\n }\r\n else if (current) {\r\n // current active instance should no longer be kept-alive.\r\n // we can't unmount it now but it might be later, so reset its flag now.\r\n resetShapeFlag(current);\r\n }\r\n cache.delete(key);\r\n keys.delete(key);\r\n }\r\n // prune cache on include/exclude prop change\r\n watch(() => [props.include, props.exclude], ([include, exclude]) => {\r\n include && pruneCache(name => matches(include, name));\r\n exclude && pruneCache(name => !matches(exclude, name));\r\n }, \r\n // prune post-render after `current` has been updated\r\n { flush: 'post', deep: true });\r\n // cache sub tree after render\r\n let pendingCacheKey = null;\r\n const cacheSubtree = () => {\r\n // fix #1621, the pendingCacheKey could be 0\r\n if (pendingCacheKey != null) {\r\n cache.set(pendingCacheKey, getInnerChild(instance.subTree));\r\n }\r\n };\r\n onMounted(cacheSubtree);\r\n onUpdated(cacheSubtree);\r\n onBeforeUnmount(() => {\r\n cache.forEach(cached => {\r\n const { subTree, suspense } = instance;\r\n const vnode = getInnerChild(subTree);\r\n if (cached.type === vnode.type) {\r\n // current instance will be unmounted as part of keep-alive's unmount\r\n resetShapeFlag(vnode);\r\n // but invoke its deactivated hook here\r\n const da = vnode.component.da;\r\n da && queuePostRenderEffect(da, suspense);\r\n return;\r\n }\r\n unmount(cached);\r\n });\r\n });\r\n return () => {\r\n pendingCacheKey = null;\r\n if (!slots.default) {\r\n return null;\r\n }\r\n const children = slots.default();\r\n const rawVNode = children[0];\r\n if (children.length > 1) {\r\n if ((process.env.NODE_ENV !== 'production')) {\r\n warn(`KeepAlive should contain exactly one component child.`);\r\n }\r\n current = null;\r\n return children;\r\n }\r\n else if (!isVNode(rawVNode) ||\r\n (!(rawVNode.shapeFlag & 4 /* STATEFUL_COMPONENT */) &&\r\n !(rawVNode.shapeFlag & 128 /* SUSPENSE */))) {\r\n current = null;\r\n return rawVNode;\r\n }\r\n let vnode = getInnerChild(rawVNode);\r\n const comp = vnode.type;\r\n // for async components, name check should be based in its loaded\r\n // inner component if available\r\n const name = getComponentName(isAsyncWrapper(vnode)\r\n ? vnode.type.__asyncResolved || {}\r\n : comp);\r\n const { include, exclude, max } = props;\r\n if ((include && (!name || !matches(include, name))) ||\r\n (exclude && name && matches(exclude, name))) {\r\n current = vnode;\r\n return rawVNode;\r\n }\r\n const key = vnode.key == null ? comp : vnode.key;\r\n const cachedVNode = cache.get(key);\r\n // clone vnode if it's reused because we are going to mutate it\r\n if (vnode.el) {\r\n vnode = cloneVNode(vnode);\r\n if (rawVNode.shapeFlag & 128 /* SUSPENSE */) {\r\n rawVNode.ssContent = vnode;\r\n }\r\n }\r\n // #1513 it's possible for the returned vnode to be cloned due to attr\r\n // fallthrough or scopeId, so the vnode here may not be the final vnode\r\n // that is mounted. Instead of caching it directly, we store the pending\r\n // key and cache `instance.subTree` (the normalized vnode) in\r\n // beforeMount/beforeUpdate hooks.\r\n pendingCacheKey = key;\r\n if (cachedVNode) {\r\n // copy over mounted state\r\n vnode.el = cachedVNode.el;\r\n vnode.component = cachedVNode.component;\r\n if (vnode.transition) {\r\n // recursively update transition hooks on subTree\r\n setTransitionHooks(vnode, vnode.transition);\r\n }\r\n // avoid vnode being mounted as fresh\r\n vnode.shapeFlag |= 512 /* COMPONENT_KEPT_ALIVE */;\r\n // make this key the freshest\r\n keys.delete(key);\r\n keys.add(key);\r\n }\r\n else {\r\n keys.add(key);\r\n // prune oldest entry\r\n if (max && keys.size > parseInt(max, 10)) {\r\n pruneCacheEntry(keys.values().next().value);\r\n }\r\n }\r\n // avoid vnode being unmounted\r\n vnode.shapeFlag |= 256 /* COMPONENT_SHOULD_KEEP_ALIVE */;\r\n current = vnode;\r\n return rawVNode;\r\n };\r\n }\r\n};\r\n// export the public type for h/tsx inference\r\n// also to avoid inline import() in generated d.ts files\r\nconst KeepAlive = KeepAliveImpl;\r\nfunction matches(pattern, name) {\r\n if (isArray(pattern)) {\r\n return pattern.some((p) => matches(p, name));\r\n }\r\n else if (isString(pattern)) {\r\n return pattern.split(',').indexOf(name) > -1;\r\n }\r\n else if (pattern.test) {\r\n return pattern.test(name);\r\n }\r\n /* istanbul ignore next */\r\n return false;\r\n}\r\nfunction onActivated(hook, target) {\r\n registerKeepAliveHook(hook, \"a\" /* ACTIVATED */, target);\r\n}\r\nfunction onDeactivated(hook, target) {\r\n registerKeepAliveHook(hook, \"da\" /* DEACTIVATED */, target);\r\n}\r\nfunction registerKeepAliveHook(hook, type, target = currentInstance) {\r\n // cache the deactivate branch check wrapper for injected hooks so the same\r\n // hook can be properly deduped by the scheduler. \"__wdc\" stands for \"with\r\n // deactivation check\".\r\n const wrappedHook = hook.__wdc ||\r\n (hook.__wdc = () => {\r\n // only fire the hook if the target instance is NOT in a deactivated branch.\r\n let current = target;\r\n while (current) {\r\n if (current.isDeactivated) {\r\n return;\r\n }\r\n current = current.parent;\r\n }\r\n return hook();\r\n });\r\n injectHook(type, wrappedHook, target);\r\n // In addition to registering it on the target instance, we walk up the parent\r\n // chain and register it on all ancestor instances that are keep-alive roots.\r\n // This avoids the need to walk the entire component tree when invoking these\r\n // hooks, and more importantly, avoids the need to track child components in\r\n // arrays.\r\n if (target) {\r\n let current = target.parent;\r\n while (current && current.parent) {\r\n if (isKeepAlive(current.parent.vnode)) {\r\n injectToKeepAliveRoot(wrappedHook, type, target, current);\r\n }\r\n current = current.parent;\r\n }\r\n }\r\n}\r\nfunction injectToKeepAliveRoot(hook, type, target, keepAliveRoot) {\r\n // injectHook wraps the original for error handling, so make sure to remove\r\n // the wrapped version.\r\n const injected = injectHook(type, hook, keepAliveRoot, true /* prepend */);\r\n onUnmounted(() => {\r\n remove(keepAliveRoot[type], injected);\r\n }, target);\r\n}\r\nfunction resetShapeFlag(vnode) {\r\n let shapeFlag = vnode.shapeFlag;\r\n if (shapeFlag & 256 /* COMPONENT_SHOULD_KEEP_ALIVE */) {\r\n shapeFlag -= 256 /* COMPONENT_SHOULD_KEEP_ALIVE */;\r\n }\r\n if (shapeFlag & 512 /* COMPONENT_KEPT_ALIVE */) {\r\n shapeFlag -= 512 /* COMPONENT_KEPT_ALIVE */;\r\n }\r\n vnode.shapeFlag = shapeFlag;\r\n}\r\nfunction getInnerChild(vnode) {\r\n return vnode.shapeFlag & 128 /* SUSPENSE */ ? vnode.ssContent : vnode;\r\n}\n\nfunction injectHook(type, hook, target = currentInstance, prepend = false) {\r\n if (target) {\r\n const hooks = target[type] || (target[type] = []);\r\n // cache the error handling wrapper for injected hooks so the same hook\r\n // can be properly deduped by the scheduler. \"__weh\" stands for \"with error\r\n // handling\".\r\n const wrappedHook = hook.__weh ||\r\n (hook.__weh = (...args) => {\r\n if (target.isUnmounted) {\r\n return;\r\n }\r\n // disable tracking inside all lifecycle hooks\r\n // since they can potentially be called inside effects.\r\n pauseTracking();\r\n // Set currentInstance during hook invocation.\r\n // This assumes the hook does not synchronously trigger other hooks, which\r\n // can only be false when the user does something really funky.\r\n setCurrentInstance(target);\r\n const res = callWithAsyncErrorHandling(hook, target, type, args);\r\n unsetCurrentInstance();\r\n resetTracking();\r\n return res;\r\n });\r\n if (prepend) {\r\n hooks.unshift(wrappedHook);\r\n }\r\n else {\r\n hooks.push(wrappedHook);\r\n }\r\n return wrappedHook;\r\n }\r\n else if ((process.env.NODE_ENV !== 'production')) {\r\n const apiName = toHandlerKey(ErrorTypeStrings[type].replace(/ hook$/, ''));\r\n warn(`${apiName} is called when there is no active component instance to be ` +\r\n `associated with. ` +\r\n `Lifecycle injection APIs can only be used during execution of setup().` +\r\n (` If you are using async setup(), make sure to register lifecycle ` +\r\n `hooks before the first await statement.`\r\n ));\r\n }\r\n}\r\nconst createHook = (lifecycle) => (hook, target = currentInstance) => \r\n// post-create lifecycle registrations are noops during SSR (except for serverPrefetch)\r\n(!isInSSRComponentSetup || lifecycle === \"sp\" /* SERVER_PREFETCH */) &&\r\n injectHook(lifecycle, hook, target);\r\nconst onBeforeMount = createHook(\"bm\" /* BEFORE_MOUNT */);\r\nconst onMounted = createHook(\"m\" /* MOUNTED */);\r\nconst onBeforeUpdate = createHook(\"bu\" /* BEFORE_UPDATE */);\r\nconst onUpdated = createHook(\"u\" /* UPDATED */);\r\nconst onBeforeUnmount = createHook(\"bum\" /* BEFORE_UNMOUNT */);\r\nconst onUnmounted = createHook(\"um\" /* UNMOUNTED */);\r\nconst onServerPrefetch = createHook(\"sp\" /* SERVER_PREFETCH */);\r\nconst onRenderTriggered = createHook(\"rtg\" /* RENDER_TRIGGERED */);\r\nconst onRenderTracked = createHook(\"rtc\" /* RENDER_TRACKED */);\r\nfunction onErrorCaptured(hook, target = currentInstance) {\r\n injectHook(\"ec\" /* ERROR_CAPTURED */, hook, target);\r\n}\n\nfunction createDuplicateChecker() {\r\n const cache = Object.create(null);\r\n return (type, key) => {\r\n if (cache[key]) {\r\n warn(`${type} property \"${key}\" is already defined in ${cache[key]}.`);\r\n }\r\n else {\r\n cache[key] = type;\r\n }\r\n };\r\n}\r\nlet shouldCacheAccess = true;\r\nfunction applyOptions(instance) {\r\n const options = resolveMergedOptions(instance);\r\n const publicThis = instance.proxy;\r\n const ctx = instance.ctx;\r\n // do not cache property access on public proxy during state initialization\r\n shouldCacheAccess = false;\r\n // call beforeCreate first before accessing other options since\r\n // the hook may mutate resolved options (#2791)\r\n if (options.beforeCreate) {\r\n callHook(options.beforeCreate, instance, \"bc\" /* BEFORE_CREATE */);\r\n }\r\n const { \r\n // state\r\n data: dataOptions, computed: computedOptions, methods, watch: watchOptions, provide: provideOptions, inject: injectOptions, \r\n // lifecycle\r\n created, beforeMount, mounted, beforeUpdate, updated, activated, deactivated, beforeDestroy, beforeUnmount, destroyed, unmounted, render, renderTracked, renderTriggered, errorCaptured, serverPrefetch, \r\n // public API\r\n expose, inheritAttrs, \r\n // assets\r\n components, directives, filters } = options;\r\n const checkDuplicateProperties = (process.env.NODE_ENV !== 'production') ? createDuplicateChecker() : null;\r\n if ((process.env.NODE_ENV !== 'production')) {\r\n const [propsOptions] = instance.propsOptions;\r\n if (propsOptions) {\r\n for (const key in propsOptions) {\r\n checkDuplicateProperties(\"Props\" /* PROPS */, key);\r\n }\r\n }\r\n }\r\n // options initialization order (to be consistent with Vue 2):\r\n // - props (already done outside of this function)\r\n // - inject\r\n // - methods\r\n // - data (deferred since it relies on `this` access)\r\n // - computed\r\n // - watch (deferred since it relies on `this` access)\r\n if (injectOptions) {\r\n resolveInjections(injectOptions, ctx, checkDuplicateProperties, instance.appContext.config.unwrapInjectedRef);\r\n }\r\n if (methods) {\r\n for (const key in methods) {\r\n const methodHandler = methods[key];\r\n if (isFunction(methodHandler)) {\r\n // In dev mode, we use the `createRenderContext` function to define\r\n // methods to the proxy target, and those are read-only but\r\n // reconfigurable, so it needs to be redefined here\r\n if ((process.env.NODE_ENV !== 'production')) {\r\n Object.defineProperty(ctx, key, {\r\n value: methodHandler.bind(publicThis),\r\n configurable: true,\r\n enumerable: true,\r\n writable: true\r\n });\r\n }\r\n else {\r\n ctx[key] = methodHandler.bind(publicThis);\r\n }\r\n if ((process.env.NODE_ENV !== 'production')) {\r\n checkDuplicateProperties(\"Methods\" /* METHODS */, key);\r\n }\r\n }\r\n else if ((process.env.NODE_ENV !== 'production')) {\r\n warn(`Method \"${key}\" has type \"${typeof methodHandler}\" in the component definition. ` +\r\n `Did you reference the function correctly?`);\r\n }\r\n }\r\n }\r\n if (dataOptions) {\r\n if ((process.env.NODE_ENV !== 'production') && !isFunction(dataOptions)) {\r\n warn(`The data option must be a function. ` +\r\n `Plain object usage is no longer supported.`);\r\n }\r\n const data = dataOptions.call(publicThis, publicThis);\r\n if ((process.env.NODE_ENV !== 'production') && isPromise(data)) {\r\n warn(`data() returned a Promise - note data() cannot be async; If you ` +\r\n `intend to perform data fetching before component renders, use ` +\r\n `async setup() + .`);\r\n }\r\n if (!isObject(data)) {\r\n (process.env.NODE_ENV !== 'production') && warn(`data() should return an object.`);\r\n }\r\n else {\r\n instance.data = reactive(data);\r\n if ((process.env.NODE_ENV !== 'production')) {\r\n for (const key in data) {\r\n checkDuplicateProperties(\"Data\" /* DATA */, key);\r\n // expose data on ctx during dev\r\n if (key[0] !== '$' && key[0] !== '_') {\r\n Object.defineProperty(ctx, key, {\r\n configurable: true,\r\n enumerable: true,\r\n get: () => data[key],\r\n set: NOOP\r\n });\r\n }\r\n }\r\n }\r\n }\r\n }\r\n // state initialization complete at this point - start caching access\r\n shouldCacheAccess = true;\r\n if (computedOptions) {\r\n for (const key in computedOptions) {\r\n const opt = computedOptions[key];\r\n const get = isFunction(opt)\r\n ? opt.bind(publicThis, publicThis)\r\n : isFunction(opt.get)\r\n ? opt.get.bind(publicThis, publicThis)\r\n : NOOP;\r\n if ((process.env.NODE_ENV !== 'production') && get === NOOP) {\r\n warn(`Computed property \"${key}\" has no getter.`);\r\n }\r\n const set = !isFunction(opt) && isFunction(opt.set)\r\n ? opt.set.bind(publicThis)\r\n : (process.env.NODE_ENV !== 'production')\r\n ? () => {\r\n warn(`Write operation failed: computed property \"${key}\" is readonly.`);\r\n }\r\n : NOOP;\r\n const c = computed({\r\n get,\r\n set\r\n });\r\n Object.defineProperty(ctx, key, {\r\n enumerable: true,\r\n configurable: true,\r\n get: () => c.value,\r\n set: v => (c.value = v)\r\n });\r\n if ((process.env.NODE_ENV !== 'production')) {\r\n checkDuplicateProperties(\"Computed\" /* COMPUTED */, key);\r\n }\r\n }\r\n }\r\n if (watchOptions) {\r\n for (const key in watchOptions) {\r\n createWatcher(watchOptions[key], ctx, publicThis, key);\r\n }\r\n }\r\n if (provideOptions) {\r\n const provides = isFunction(provideOptions)\r\n ? provideOptions.call(publicThis)\r\n : provideOptions;\r\n Reflect.ownKeys(provides).forEach(key => {\r\n provide(key, provides[key]);\r\n });\r\n }\r\n if (created) {\r\n callHook(created, instance, \"c\" /* CREATED */);\r\n }\r\n function registerLifecycleHook(register, hook) {\r\n if (isArray(hook)) {\r\n hook.forEach(_hook => register(_hook.bind(publicThis)));\r\n }\r\n else if (hook) {\r\n register(hook.bind(publicThis));\r\n }\r\n }\r\n registerLifecycleHook(onBeforeMount, beforeMount);\r\n registerLifecycleHook(onMounted, mounted);\r\n registerLifecycleHook(onBeforeUpdate, beforeUpdate);\r\n registerLifecycleHook(onUpdated, updated);\r\n registerLifecycleHook(onActivated, activated);\r\n registerLifecycleHook(onDeactivated, deactivated);\r\n registerLifecycleHook(onErrorCaptured, errorCaptured);\r\n registerLifecycleHook(onRenderTracked, renderTracked);\r\n registerLifecycleHook(onRenderTriggered, renderTriggered);\r\n registerLifecycleHook(onBeforeUnmount, beforeUnmount);\r\n registerLifecycleHook(onUnmounted, unmounted);\r\n registerLifecycleHook(onServerPrefetch, serverPrefetch);\r\n if (isArray(expose)) {\r\n if (expose.length) {\r\n const exposed = instance.exposed || (instance.exposed = {});\r\n expose.forEach(key => {\r\n Object.defineProperty(exposed, key, {\r\n get: () => publicThis[key],\r\n set: val => (publicThis[key] = val)\r\n });\r\n });\r\n }\r\n else if (!instance.exposed) {\r\n instance.exposed = {};\r\n }\r\n }\r\n // options that are handled when creating the instance but also need to be\r\n // applied from mixins\r\n if (render && instance.render === NOOP) {\r\n instance.render = render;\r\n }\r\n if (inheritAttrs != null) {\r\n instance.inheritAttrs = inheritAttrs;\r\n }\r\n // asset options.\r\n if (components)\r\n instance.components = components;\r\n if (directives)\r\n instance.directives = directives;\r\n}\r\nfunction resolveInjections(injectOptions, ctx, checkDuplicateProperties = NOOP, unwrapRef = false) {\r\n if (isArray(injectOptions)) {\r\n injectOptions = normalizeInject(injectOptions);\r\n }\r\n for (const key in injectOptions) {\r\n const opt = injectOptions[key];\r\n let injected;\r\n if (isObject(opt)) {\r\n if ('default' in opt) {\r\n injected = inject(opt.from || key, opt.default, true /* treat default function as factory */);\r\n }\r\n else {\r\n injected = inject(opt.from || key);\r\n }\r\n }\r\n else {\r\n injected = inject(opt);\r\n }\r\n if (isRef(injected)) {\r\n // TODO remove the check in 3.3\r\n if (unwrapRef) {\r\n Object.defineProperty(ctx, key, {\r\n enumerable: true,\r\n configurable: true,\r\n get: () => injected.value,\r\n set: v => (injected.value = v)\r\n });\r\n }\r\n else {\r\n if ((process.env.NODE_ENV !== 'production')) {\r\n warn(`injected property \"${key}\" is a ref and will be auto-unwrapped ` +\r\n `and no longer needs \\`.value\\` in the next minor release. ` +\r\n `To opt-in to the new behavior now, ` +\r\n `set \\`app.config.unwrapInjectedRef = true\\` (this config is ` +\r\n `temporary and will not be needed in the future.)`);\r\n }\r\n ctx[key] = injected;\r\n }\r\n }\r\n else {\r\n ctx[key] = injected;\r\n }\r\n if ((process.env.NODE_ENV !== 'production')) {\r\n checkDuplicateProperties(\"Inject\" /* INJECT */, key);\r\n }\r\n }\r\n}\r\nfunction callHook(hook, instance, type) {\r\n callWithAsyncErrorHandling(isArray(hook)\r\n ? hook.map(h => h.bind(instance.proxy))\r\n : hook.bind(instance.proxy), instance, type);\r\n}\r\nfunction createWatcher(raw, ctx, publicThis, key) {\r\n const getter = key.includes('.')\r\n ? createPathGetter(publicThis, key)\r\n : () => publicThis[key];\r\n if (isString(raw)) {\r\n const handler = ctx[raw];\r\n if (isFunction(handler)) {\r\n watch(getter, handler);\r\n }\r\n else if ((process.env.NODE_ENV !== 'production')) {\r\n warn(`Invalid watch handler specified by key \"${raw}\"`, handler);\r\n }\r\n }\r\n else if (isFunction(raw)) {\r\n watch(getter, raw.bind(publicThis));\r\n }\r\n else if (isObject(raw)) {\r\n if (isArray(raw)) {\r\n raw.forEach(r => createWatcher(r, ctx, publicThis, key));\r\n }\r\n else {\r\n const handler = isFunction(raw.handler)\r\n ? raw.handler.bind(publicThis)\r\n : ctx[raw.handler];\r\n if (isFunction(handler)) {\r\n watch(getter, handler, raw);\r\n }\r\n else if ((process.env.NODE_ENV !== 'production')) {\r\n warn(`Invalid watch handler specified by key \"${raw.handler}\"`, handler);\r\n }\r\n }\r\n }\r\n else if ((process.env.NODE_ENV !== 'production')) {\r\n warn(`Invalid watch option: \"${key}\"`, raw);\r\n }\r\n}\r\n/**\r\n * Resolve merged options and cache it on the component.\r\n * This is done only once per-component since the merging does not involve\r\n * instances.\r\n */\r\nfunction resolveMergedOptions(instance) {\r\n const base = instance.type;\r\n const { mixins, extends: extendsOptions } = base;\r\n const { mixins: globalMixins, optionsCache: cache, config: { optionMergeStrategies } } = instance.appContext;\r\n const cached = cache.get(base);\r\n let resolved;\r\n if (cached) {\r\n resolved = cached;\r\n }\r\n else if (!globalMixins.length && !mixins && !extendsOptions) {\r\n {\r\n resolved = base;\r\n }\r\n }\r\n else {\r\n resolved = {};\r\n if (globalMixins.length) {\r\n globalMixins.forEach(m => mergeOptions(resolved, m, optionMergeStrategies, true));\r\n }\r\n mergeOptions(resolved, base, optionMergeStrategies);\r\n }\r\n cache.set(base, resolved);\r\n return resolved;\r\n}\r\nfunction mergeOptions(to, from, strats, asMixin = false) {\r\n const { mixins, extends: extendsOptions } = from;\r\n if (extendsOptions) {\r\n mergeOptions(to, extendsOptions, strats, true);\r\n }\r\n if (mixins) {\r\n mixins.forEach((m) => mergeOptions(to, m, strats, true));\r\n }\r\n for (const key in from) {\r\n if (asMixin && key === 'expose') {\r\n (process.env.NODE_ENV !== 'production') &&\r\n warn(`\"expose\" option is ignored when declared in mixins or extends. ` +\r\n `It should only be declared in the base component itself.`);\r\n }\r\n else {\r\n const strat = internalOptionMergeStrats[key] || (strats && strats[key]);\r\n to[key] = strat ? strat(to[key], from[key]) : from[key];\r\n }\r\n }\r\n return to;\r\n}\r\nconst internalOptionMergeStrats = {\r\n data: mergeDataFn,\r\n props: mergeObjectOptions,\r\n emits: mergeObjectOptions,\r\n // objects\r\n methods: mergeObjectOptions,\r\n computed: mergeObjectOptions,\r\n // lifecycle\r\n beforeCreate: mergeAsArray,\r\n created: mergeAsArray,\r\n beforeMount: mergeAsArray,\r\n mounted: mergeAsArray,\r\n beforeUpdate: mergeAsArray,\r\n updated: mergeAsArray,\r\n beforeDestroy: mergeAsArray,\r\n beforeUnmount: mergeAsArray,\r\n destroyed: mergeAsArray,\r\n unmounted: mergeAsArray,\r\n activated: mergeAsArray,\r\n deactivated: mergeAsArray,\r\n errorCaptured: mergeAsArray,\r\n serverPrefetch: mergeAsArray,\r\n // assets\r\n components: mergeObjectOptions,\r\n directives: mergeObjectOptions,\r\n // watch\r\n watch: mergeWatchOptions,\r\n // provide / inject\r\n provide: mergeDataFn,\r\n inject: mergeInject\r\n};\r\nfunction mergeDataFn(to, from) {\r\n if (!from) {\r\n return to;\r\n }\r\n if (!to) {\r\n return from;\r\n }\r\n return function mergedDataFn() {\r\n return (extend)(isFunction(to) ? to.call(this, this) : to, isFunction(from) ? from.call(this, this) : from);\r\n };\r\n}\r\nfunction mergeInject(to, from) {\r\n return mergeObjectOptions(normalizeInject(to), normalizeInject(from));\r\n}\r\nfunction normalizeInject(raw) {\r\n if (isArray(raw)) {\r\n const res = {};\r\n for (let i = 0; i < raw.length; i++) {\r\n res[raw[i]] = raw[i];\r\n }\r\n return res;\r\n }\r\n return raw;\r\n}\r\nfunction mergeAsArray(to, from) {\r\n return to ? [...new Set([].concat(to, from))] : from;\r\n}\r\nfunction mergeObjectOptions(to, from) {\r\n return to ? extend(extend(Object.create(null), to), from) : from;\r\n}\r\nfunction mergeWatchOptions(to, from) {\r\n if (!to)\r\n return from;\r\n if (!from)\r\n return to;\r\n const merged = extend(Object.create(null), to);\r\n for (const key in from) {\r\n merged[key] = mergeAsArray(to[key], from[key]);\r\n }\r\n return merged;\r\n}\n\nfunction initProps(instance, rawProps, isStateful, // result of bitwise flag comparison\r\nisSSR = false) {\r\n const props = {};\r\n const attrs = {};\r\n def(attrs, InternalObjectKey, 1);\r\n instance.propsDefaults = Object.create(null);\r\n setFullProps(instance, rawProps, props, attrs);\r\n // ensure all declared prop keys are present\r\n for (const key in instance.propsOptions[0]) {\r\n if (!(key in props)) {\r\n props[key] = undefined;\r\n }\r\n }\r\n // validation\r\n if ((process.env.NODE_ENV !== 'production')) {\r\n validateProps(rawProps || {}, props, instance);\r\n }\r\n if (isStateful) {\r\n // stateful\r\n instance.props = isSSR ? props : shallowReactive(props);\r\n }\r\n else {\r\n if (!instance.type.props) {\r\n // functional w/ optional props, props === attrs\r\n instance.props = attrs;\r\n }\r\n else {\r\n // functional w/ declared props\r\n instance.props = props;\r\n }\r\n }\r\n instance.attrs = attrs;\r\n}\r\nfunction updateProps(instance, rawProps, rawPrevProps, optimized) {\r\n const { props, attrs, vnode: { patchFlag } } = instance;\r\n const rawCurrentProps = toRaw(props);\r\n const [options] = instance.propsOptions;\r\n let hasAttrsChanged = false;\r\n if (\r\n // always force full diff in dev\r\n // - #1942 if hmr is enabled with sfc component\r\n // - vite#872 non-sfc component used by sfc component\r\n !((process.env.NODE_ENV !== 'production') &&\r\n (instance.type.__hmrId ||\r\n (instance.parent && instance.parent.type.__hmrId))) &&\r\n (optimized || patchFlag > 0) &&\r\n !(patchFlag & 16 /* FULL_PROPS */)) {\r\n if (patchFlag & 8 /* PROPS */) {\r\n // Compiler-generated props & no keys change, just set the updated\r\n // the props.\r\n const propsToUpdate = instance.vnode.dynamicProps;\r\n for (let i = 0; i < propsToUpdate.length; i++) {\r\n let key = propsToUpdate[i];\r\n // PROPS flag guarantees rawProps to be non-null\r\n const value = rawProps[key];\r\n if (options) {\r\n // attr / props separation was done on init and will be consistent\r\n // in this code path, so just check if attrs have it.\r\n if (hasOwn(attrs, key)) {\r\n if (value !== attrs[key]) {\r\n attrs[key] = value;\r\n hasAttrsChanged = true;\r\n }\r\n }\r\n else {\r\n const camelizedKey = camelize(key);\r\n props[camelizedKey] = resolvePropValue(options, rawCurrentProps, camelizedKey, value, instance, false /* isAbsent */);\r\n }\r\n }\r\n else {\r\n if (value !== attrs[key]) {\r\n attrs[key] = value;\r\n hasAttrsChanged = true;\r\n }\r\n }\r\n }\r\n }\r\n }\r\n else {\r\n // full props update.\r\n if (setFullProps(instance, rawProps, props, attrs)) {\r\n hasAttrsChanged = true;\r\n }\r\n // in case of dynamic props, check if we need to delete keys from\r\n // the props object\r\n let kebabKey;\r\n for (const key in rawCurrentProps) {\r\n if (!rawProps ||\r\n // for camelCase\r\n (!hasOwn(rawProps, key) &&\r\n // it's possible the original props was passed in as kebab-case\r\n // and converted to camelCase (#955)\r\n ((kebabKey = hyphenate(key)) === key || !hasOwn(rawProps, kebabKey)))) {\r\n if (options) {\r\n if (rawPrevProps &&\r\n // for camelCase\r\n (rawPrevProps[key] !== undefined ||\r\n // for kebab-case\r\n rawPrevProps[kebabKey] !== undefined)) {\r\n props[key] = resolvePropValue(options, rawCurrentProps, key, undefined, instance, true /* isAbsent */);\r\n }\r\n }\r\n else {\r\n delete props[key];\r\n }\r\n }\r\n }\r\n // in the case of functional component w/o props declaration, props and\r\n // attrs point to the same object so it should already have been updated.\r\n if (attrs !== rawCurrentProps) {\r\n for (const key in attrs) {\r\n if (!rawProps || !hasOwn(rawProps, key)) {\r\n delete attrs[key];\r\n hasAttrsChanged = true;\r\n }\r\n }\r\n }\r\n }\r\n // trigger updates for $attrs in case it's used in component slots\r\n if (hasAttrsChanged) {\r\n trigger(instance, \"set\" /* SET */, '$attrs');\r\n }\r\n if ((process.env.NODE_ENV !== 'production')) {\r\n validateProps(rawProps || {}, props, instance);\r\n }\r\n}\r\nfunction setFullProps(instance, rawProps, props, attrs) {\r\n const [options, needCastKeys] = instance.propsOptions;\r\n let hasAttrsChanged = false;\r\n let rawCastValues;\r\n if (rawProps) {\r\n for (let key in rawProps) {\r\n // key, ref are reserved and never passed down\r\n if (isReservedProp(key)) {\r\n continue;\r\n }\r\n const value = rawProps[key];\r\n // prop option names are camelized during normalization, so to support\r\n // kebab -> camel conversion here we need to camelize the key.\r\n let camelKey;\r\n if (options && hasOwn(options, (camelKey = camelize(key)))) {\r\n if (!needCastKeys || !needCastKeys.includes(camelKey)) {\r\n props[camelKey] = value;\r\n }\r\n else {\r\n (rawCastValues || (rawCastValues = {}))[camelKey] = value;\r\n }\r\n }\r\n else if (!isEmitListener(instance.emitsOptions, key)) {\r\n if (!(key in attrs) || value !== attrs[key]) {\r\n attrs[key] = value;\r\n hasAttrsChanged = true;\r\n }\r\n }\r\n }\r\n }\r\n if (needCastKeys) {\r\n const rawCurrentProps = toRaw(props);\r\n const castValues = rawCastValues || EMPTY_OBJ;\r\n for (let i = 0; i < needCastKeys.length; i++) {\r\n const key = needCastKeys[i];\r\n props[key] = resolvePropValue(options, rawCurrentProps, key, castValues[key], instance, !hasOwn(castValues, key));\r\n }\r\n }\r\n return hasAttrsChanged;\r\n}\r\nfunction resolvePropValue(options, props, key, value, instance, isAbsent) {\r\n const opt = options[key];\r\n if (opt != null) {\r\n const hasDefault = hasOwn(opt, 'default');\r\n // default values\r\n if (hasDefault && value === undefined) {\r\n const defaultValue = opt.default;\r\n if (opt.type !== Function && isFunction(defaultValue)) {\r\n const { propsDefaults } = instance;\r\n if (key in propsDefaults) {\r\n value = propsDefaults[key];\r\n }\r\n else {\r\n setCurrentInstance(instance);\r\n value = propsDefaults[key] = defaultValue.call(null, props);\r\n unsetCurrentInstance();\r\n }\r\n }\r\n else {\r\n value = defaultValue;\r\n }\r\n }\r\n // boolean casting\r\n if (opt[0 /* shouldCast */]) {\r\n if (isAbsent && !hasDefault) {\r\n value = false;\r\n }\r\n else if (opt[1 /* shouldCastTrue */] &&\r\n (value === '' || value === hyphenate(key))) {\r\n value = true;\r\n }\r\n }\r\n }\r\n return value;\r\n}\r\nfunction normalizePropsOptions(comp, appContext, asMixin = false) {\r\n const cache = appContext.propsCache;\r\n const cached = cache.get(comp);\r\n if (cached) {\r\n return cached;\r\n }\r\n const raw = comp.props;\r\n const normalized = {};\r\n const needCastKeys = [];\r\n // apply mixin/extends props\r\n let hasExtends = false;\r\n if (__VUE_OPTIONS_API__ && !isFunction(comp)) {\r\n const extendProps = (raw) => {\r\n hasExtends = true;\r\n const [props, keys] = normalizePropsOptions(raw, appContext, true);\r\n extend(normalized, props);\r\n if (keys)\r\n needCastKeys.push(...keys);\r\n };\r\n if (!asMixin && appContext.mixins.length) {\r\n appContext.mixins.forEach(extendProps);\r\n }\r\n if (comp.extends) {\r\n extendProps(comp.extends);\r\n }\r\n if (comp.mixins) {\r\n comp.mixins.forEach(extendProps);\r\n }\r\n }\r\n if (!raw && !hasExtends) {\r\n cache.set(comp, EMPTY_ARR);\r\n return EMPTY_ARR;\r\n }\r\n if (isArray(raw)) {\r\n for (let i = 0; i < raw.length; i++) {\r\n if ((process.env.NODE_ENV !== 'production') && !isString(raw[i])) {\r\n warn(`props must be strings when using array syntax.`, raw[i]);\r\n }\r\n const normalizedKey = camelize(raw[i]);\r\n if (validatePropName(normalizedKey)) {\r\n normalized[normalizedKey] = EMPTY_OBJ;\r\n }\r\n }\r\n }\r\n else if (raw) {\r\n if ((process.env.NODE_ENV !== 'production') && !isObject(raw)) {\r\n warn(`invalid props options`, raw);\r\n }\r\n for (const key in raw) {\r\n const normalizedKey = camelize(key);\r\n if (validatePropName(normalizedKey)) {\r\n const opt = raw[key];\r\n const prop = (normalized[normalizedKey] =\r\n isArray(opt) || isFunction(opt) ? { type: opt } : opt);\r\n if (prop) {\r\n const booleanIndex = getTypeIndex(Boolean, prop.type);\r\n const stringIndex = getTypeIndex(String, prop.type);\r\n prop[0 /* shouldCast */] = booleanIndex > -1;\r\n prop[1 /* shouldCastTrue */] =\r\n stringIndex < 0 || booleanIndex < stringIndex;\r\n // if the prop needs boolean casting or default value\r\n if (booleanIndex > -1 || hasOwn(prop, 'default')) {\r\n needCastKeys.push(normalizedKey);\r\n }\r\n }\r\n }\r\n }\r\n }\r\n const res = [normalized, needCastKeys];\r\n cache.set(comp, res);\r\n return res;\r\n}\r\nfunction validatePropName(key) {\r\n if (key[0] !== '$') {\r\n return true;\r\n }\r\n else if ((process.env.NODE_ENV !== 'production')) {\r\n warn(`Invalid prop name: \"${key}\" is a reserved property.`);\r\n }\r\n return false;\r\n}\r\n// use function string name to check type constructors\r\n// so that it works across vms / iframes.\r\nfunction getType(ctor) {\r\n const match = ctor && ctor.toString().match(/^\\s*function (\\w+)/);\r\n return match ? match[1] : ctor === null ? 'null' : '';\r\n}\r\nfunction isSameType(a, b) {\r\n return getType(a) === getType(b);\r\n}\r\nfunction getTypeIndex(type, expectedTypes) {\r\n if (isArray(expectedTypes)) {\r\n return expectedTypes.findIndex(t => isSameType(t, type));\r\n }\r\n else if (isFunction(expectedTypes)) {\r\n return isSameType(expectedTypes, type) ? 0 : -1;\r\n }\r\n return -1;\r\n}\r\n/**\r\n * dev only\r\n */\r\nfunction validateProps(rawProps, props, instance) {\r\n const resolvedValues = toRaw(props);\r\n const options = instance.propsOptions[0];\r\n for (const key in options) {\r\n let opt = options[key];\r\n if (opt == null)\r\n continue;\r\n validateProp(key, resolvedValues[key], opt, !hasOwn(rawProps, key) && !hasOwn(rawProps, hyphenate(key)));\r\n }\r\n}\r\n/**\r\n * dev only\r\n */\r\nfunction validateProp(name, value, prop, isAbsent) {\r\n const { type, required, validator } = prop;\r\n // required!\r\n if (required && isAbsent) {\r\n warn('Missing required prop: \"' + name + '\"');\r\n return;\r\n }\r\n // missing but optional\r\n if (value == null && !prop.required) {\r\n return;\r\n }\r\n // type check\r\n if (type != null && type !== true) {\r\n let isValid = false;\r\n const types = isArray(type) ? type : [type];\r\n const expectedTypes = [];\r\n // value is valid as long as one of the specified types match\r\n for (let i = 0; i < types.length && !isValid; i++) {\r\n const { valid, expectedType } = assertType(value, types[i]);\r\n expectedTypes.push(expectedType || '');\r\n isValid = valid;\r\n }\r\n if (!isValid) {\r\n warn(getInvalidTypeMessage(name, value, expectedTypes));\r\n return;\r\n }\r\n }\r\n // custom validator\r\n if (validator && !validator(value)) {\r\n warn('Invalid prop: custom validator check failed for prop \"' + name + '\".');\r\n }\r\n}\r\nconst isSimpleType = /*#__PURE__*/ makeMap('String,Number,Boolean,Function,Symbol,BigInt');\r\n/**\r\n * dev only\r\n */\r\nfunction assertType(value, type) {\r\n let valid;\r\n const expectedType = getType(type);\r\n if (isSimpleType(expectedType)) {\r\n const t = typeof value;\r\n valid = t === expectedType.toLowerCase();\r\n // for primitive wrapper objects\r\n if (!valid && t === 'object') {\r\n valid = value instanceof type;\r\n }\r\n }\r\n else if (expectedType === 'Object') {\r\n valid = isObject(value);\r\n }\r\n else if (expectedType === 'Array') {\r\n valid = isArray(value);\r\n }\r\n else if (expectedType === 'null') {\r\n valid = value === null;\r\n }\r\n else {\r\n valid = value instanceof type;\r\n }\r\n return {\r\n valid,\r\n expectedType\r\n };\r\n}\r\n/**\r\n * dev only\r\n */\r\nfunction getInvalidTypeMessage(name, value, expectedTypes) {\r\n let message = `Invalid prop: type check failed for prop \"${name}\".` +\r\n ` Expected ${expectedTypes.map(capitalize).join(' | ')}`;\r\n const expectedType = expectedTypes[0];\r\n const receivedType = toRawType(value);\r\n const expectedValue = styleValue(value, expectedType);\r\n const receivedValue = styleValue(value, receivedType);\r\n // check if we need to specify expected value\r\n if (expectedTypes.length === 1 &&\r\n isExplicable(expectedType) &&\r\n !isBoolean(expectedType, receivedType)) {\r\n message += ` with value ${expectedValue}`;\r\n }\r\n message += `, got ${receivedType} `;\r\n // check if we need to specify received value\r\n if (isExplicable(receivedType)) {\r\n message += `with value ${receivedValue}.`;\r\n }\r\n return message;\r\n}\r\n/**\r\n * dev only\r\n */\r\nfunction styleValue(value, type) {\r\n if (type === 'String') {\r\n return `\"${value}\"`;\r\n }\r\n else if (type === 'Number') {\r\n return `${Number(value)}`;\r\n }\r\n else {\r\n return `${value}`;\r\n }\r\n}\r\n/**\r\n * dev only\r\n */\r\nfunction isExplicable(type) {\r\n const explicitTypes = ['string', 'number', 'boolean'];\r\n return explicitTypes.some(elem => type.toLowerCase() === elem);\r\n}\r\n/**\r\n * dev only\r\n */\r\nfunction isBoolean(...args) {\r\n return args.some(elem => elem.toLowerCase() === 'boolean');\r\n}\n\nconst isInternalKey = (key) => key[0] === '_' || key === '$stable';\r\nconst normalizeSlotValue = (value) => isArray(value)\r\n ? value.map(normalizeVNode)\r\n : [normalizeVNode(value)];\r\nconst normalizeSlot = (key, rawSlot, ctx) => {\r\n const normalized = withCtx((...args) => {\r\n if ((process.env.NODE_ENV !== 'production') && currentInstance) {\r\n warn(`Slot \"${key}\" invoked outside of the render function: ` +\r\n `this will not track dependencies used in the slot. ` +\r\n `Invoke the slot function inside the render function instead.`);\r\n }\r\n return normalizeSlotValue(rawSlot(...args));\r\n }, ctx);\r\n normalized._c = false;\r\n return normalized;\r\n};\r\nconst normalizeObjectSlots = (rawSlots, slots, instance) => {\r\n const ctx = rawSlots._ctx;\r\n for (const key in rawSlots) {\r\n if (isInternalKey(key))\r\n continue;\r\n const value = rawSlots[key];\r\n if (isFunction(value)) {\r\n slots[key] = normalizeSlot(key, value, ctx);\r\n }\r\n else if (value != null) {\r\n if ((process.env.NODE_ENV !== 'production') &&\r\n !(false )) {\r\n warn(`Non-function value encountered for slot \"${key}\". ` +\r\n `Prefer function slots for better performance.`);\r\n }\r\n const normalized = normalizeSlotValue(value);\r\n slots[key] = () => normalized;\r\n }\r\n }\r\n};\r\nconst normalizeVNodeSlots = (instance, children) => {\r\n if ((process.env.NODE_ENV !== 'production') &&\r\n !isKeepAlive(instance.vnode) &&\r\n !(false )) {\r\n warn(`Non-function value encountered for default slot. ` +\r\n `Prefer function slots for better performance.`);\r\n }\r\n const normalized = normalizeSlotValue(children);\r\n instance.slots.default = () => normalized;\r\n};\r\nconst initSlots = (instance, children) => {\r\n if (instance.vnode.shapeFlag & 32 /* SLOTS_CHILDREN */) {\r\n const type = children._;\r\n if (type) {\r\n // users can get the shallow readonly version of the slots object through `this.$slots`,\r\n // we should avoid the proxy object polluting the slots of the internal instance\r\n instance.slots = toRaw(children);\r\n // make compiler marker non-enumerable\r\n def(children, '_', type);\r\n }\r\n else {\r\n normalizeObjectSlots(children, (instance.slots = {}));\r\n }\r\n }\r\n else {\r\n instance.slots = {};\r\n if (children) {\r\n normalizeVNodeSlots(instance, children);\r\n }\r\n }\r\n def(instance.slots, InternalObjectKey, 1);\r\n};\r\nconst updateSlots = (instance, children, optimized) => {\r\n const { vnode, slots } = instance;\r\n let needDeletionCheck = true;\r\n let deletionComparisonTarget = EMPTY_OBJ;\r\n if (vnode.shapeFlag & 32 /* SLOTS_CHILDREN */) {\r\n const type = children._;\r\n if (type) {\r\n // compiled slots.\r\n if ((process.env.NODE_ENV !== 'production') && isHmrUpdating) {\r\n // Parent was HMR updated so slot content may have changed.\r\n // force update slots and mark instance for hmr as well\r\n extend(slots, children);\r\n }\r\n else if (optimized && type === 1 /* STABLE */) {\r\n // compiled AND stable.\r\n // no need to update, and skip stale slots removal.\r\n needDeletionCheck = false;\r\n }\r\n else {\r\n // compiled but dynamic (v-if/v-for on slots) - update slots, but skip\r\n // normalization.\r\n extend(slots, children);\r\n // #2893\r\n // when rendering the optimized slots by manually written render function,\r\n // we need to delete the `slots._` flag if necessary to make subsequent updates reliable,\r\n // i.e. let the `renderSlot` create the bailed Fragment\r\n if (!optimized && type === 1 /* STABLE */) {\r\n delete slots._;\r\n }\r\n }\r\n }\r\n else {\r\n needDeletionCheck = !children.$stable;\r\n normalizeObjectSlots(children, slots);\r\n }\r\n deletionComparisonTarget = children;\r\n }\r\n else if (children) {\r\n // non slot object children (direct value) passed to a component\r\n normalizeVNodeSlots(instance, children);\r\n deletionComparisonTarget = { default: 1 };\r\n }\r\n // delete stale slots\r\n if (needDeletionCheck) {\r\n for (const key in slots) {\r\n if (!isInternalKey(key) && !(key in deletionComparisonTarget)) {\r\n delete slots[key];\r\n }\r\n }\r\n }\r\n};\n\n/**\r\nRuntime helper for applying directives to a vnode. Example usage:\r\n\nconst comp = resolveComponent('comp')\r\nconst foo = resolveDirective('foo')\r\nconst bar = resolveDirective('bar')\r\n\nreturn withDirectives(h(comp), [\r\n [foo, this.x],\r\n [bar, this.y]\r\n])\r\n*/\r\nconst isBuiltInDirective = /*#__PURE__*/ makeMap('bind,cloak,else-if,else,for,html,if,model,on,once,pre,show,slot,text,memo');\r\nfunction validateDirectiveName(name) {\r\n if (isBuiltInDirective(name)) {\r\n warn('Do not use built-in directive ids as custom directive id: ' + name);\r\n }\r\n}\r\n/**\r\n * Adds directives to a VNode.\r\n */\r\nfunction withDirectives(vnode, directives) {\r\n const internalInstance = currentRenderingInstance;\r\n if (internalInstance === null) {\r\n (process.env.NODE_ENV !== 'production') && warn(`withDirectives can only be used inside render functions.`);\r\n return vnode;\r\n }\r\n const instance = internalInstance.proxy;\r\n const bindings = vnode.dirs || (vnode.dirs = []);\r\n for (let i = 0; i < directives.length; i++) {\r\n let [dir, value, arg, modifiers = EMPTY_OBJ] = directives[i];\r\n if (isFunction(dir)) {\r\n dir = {\r\n mounted: dir,\r\n updated: dir\r\n };\r\n }\r\n if (dir.deep) {\r\n traverse(value);\r\n }\r\n bindings.push({\r\n dir,\r\n instance,\r\n value,\r\n oldValue: void 0,\r\n arg,\r\n modifiers\r\n });\r\n }\r\n return vnode;\r\n}\r\nfunction invokeDirectiveHook(vnode, prevVNode, instance, name) {\r\n const bindings = vnode.dirs;\r\n const oldBindings = prevVNode && prevVNode.dirs;\r\n for (let i = 0; i < bindings.length; i++) {\r\n const binding = bindings[i];\r\n if (oldBindings) {\r\n binding.oldValue = oldBindings[i].value;\r\n }\r\n let hook = binding.dir[name];\r\n if (hook) {\r\n // disable tracking inside all lifecycle hooks\r\n // since they can potentially be called inside effects.\r\n pauseTracking();\r\n callWithAsyncErrorHandling(hook, instance, 8 /* DIRECTIVE_HOOK */, [\r\n vnode.el,\r\n binding,\r\n vnode,\r\n prevVNode\r\n ]);\r\n resetTracking();\r\n }\r\n }\r\n}\n\nfunction createAppContext() {\r\n return {\r\n app: null,\r\n config: {\r\n isNativeTag: NO,\r\n performance: false,\r\n globalProperties: {},\r\n optionMergeStrategies: {},\r\n errorHandler: undefined,\r\n warnHandler: undefined,\r\n compilerOptions: {}\r\n },\r\n mixins: [],\r\n components: {},\r\n directives: {},\r\n provides: Object.create(null),\r\n optionsCache: new WeakMap(),\r\n propsCache: new WeakMap(),\r\n emitsCache: new WeakMap()\r\n };\r\n}\r\nlet uid = 0;\r\nfunction createAppAPI(render, hydrate) {\r\n return function createApp(rootComponent, rootProps = null) {\r\n if (rootProps != null && !isObject(rootProps)) {\r\n (process.env.NODE_ENV !== 'production') && warn(`root props passed to app.mount() must be an object.`);\r\n rootProps = null;\r\n }\r\n const context = createAppContext();\r\n const installedPlugins = new Set();\r\n let isMounted = false;\r\n const app = (context.app = {\r\n _uid: uid++,\r\n _component: rootComponent,\r\n _props: rootProps,\r\n _container: null,\r\n _context: context,\r\n _instance: null,\r\n version,\r\n get config() {\r\n return context.config;\r\n },\r\n set config(v) {\r\n if ((process.env.NODE_ENV !== 'production')) {\r\n warn(`app.config cannot be replaced. Modify individual options instead.`);\r\n }\r\n },\r\n use(plugin, ...options) {\r\n if (installedPlugins.has(plugin)) {\r\n (process.env.NODE_ENV !== 'production') && warn(`Plugin has already been applied to target app.`);\r\n }\r\n else if (plugin && isFunction(plugin.install)) {\r\n installedPlugins.add(plugin);\r\n plugin.install(app, ...options);\r\n }\r\n else if (isFunction(plugin)) {\r\n installedPlugins.add(plugin);\r\n plugin(app, ...options);\r\n }\r\n else if ((process.env.NODE_ENV !== 'production')) {\r\n warn(`A plugin must either be a function or an object with an \"install\" ` +\r\n `function.`);\r\n }\r\n return app;\r\n },\r\n mixin(mixin) {\r\n if (__VUE_OPTIONS_API__) {\r\n if (!context.mixins.includes(mixin)) {\r\n context.mixins.push(mixin);\r\n }\r\n else if ((process.env.NODE_ENV !== 'production')) {\r\n warn('Mixin has already been applied to target app' +\r\n (mixin.name ? `: ${mixin.name}` : ''));\r\n }\r\n }\r\n else if ((process.env.NODE_ENV !== 'production')) {\r\n warn('Mixins are only available in builds supporting Options API');\r\n }\r\n return app;\r\n },\r\n component(name, component) {\r\n if ((process.env.NODE_ENV !== 'production')) {\r\n validateComponentName(name, context.config);\r\n }\r\n if (!component) {\r\n return context.components[name];\r\n }\r\n if ((process.env.NODE_ENV !== 'production') && context.components[name]) {\r\n warn(`Component \"${name}\" has already been registered in target app.`);\r\n }\r\n context.components[name] = component;\r\n return app;\r\n },\r\n directive(name, directive) {\r\n if ((process.env.NODE_ENV !== 'production')) {\r\n validateDirectiveName(name);\r\n }\r\n if (!directive) {\r\n return context.directives[name];\r\n }\r\n if ((process.env.NODE_ENV !== 'production') && context.directives[name]) {\r\n warn(`Directive \"${name}\" has already been registered in target app.`);\r\n }\r\n context.directives[name] = directive;\r\n return app;\r\n },\r\n mount(rootContainer, isHydrate, isSVG) {\r\n if (!isMounted) {\r\n const vnode = createVNode(rootComponent, rootProps);\r\n // store app context on the root VNode.\r\n // this will be set on the root instance on initial mount.\r\n vnode.appContext = context;\r\n // HMR root reload\r\n if ((process.env.NODE_ENV !== 'production')) {\r\n context.reload = () => {\r\n render(cloneVNode(vnode), rootContainer, isSVG);\r\n };\r\n }\r\n if (isHydrate && hydrate) {\r\n hydrate(vnode, rootContainer);\r\n }\r\n else {\r\n render(vnode, rootContainer, isSVG);\r\n }\r\n isMounted = true;\r\n app._container = rootContainer;\r\n rootContainer.__vue_app__ = app;\r\n if ((process.env.NODE_ENV !== 'production') || __VUE_PROD_DEVTOOLS__) {\r\n app._instance = vnode.component;\r\n devtoolsInitApp(app, version);\r\n }\r\n return getExposeProxy(vnode.component) || vnode.component.proxy;\r\n }\r\n else if ((process.env.NODE_ENV !== 'production')) {\r\n warn(`App has already been mounted.\\n` +\r\n `If you want to remount the same app, move your app creation logic ` +\r\n `into a factory function and create fresh app instances for each ` +\r\n `mount - e.g. \\`const createMyApp = () => createApp(App)\\``);\r\n }\r\n },\r\n unmount() {\r\n if (isMounted) {\r\n render(null, app._container);\r\n if ((process.env.NODE_ENV !== 'production') || __VUE_PROD_DEVTOOLS__) {\r\n app._instance = null;\r\n devtoolsUnmountApp(app);\r\n }\r\n delete app._container.__vue_app__;\r\n }\r\n else if ((process.env.NODE_ENV !== 'production')) {\r\n warn(`Cannot unmount an app that is not mounted.`);\r\n }\r\n },\r\n provide(key, value) {\r\n if ((process.env.NODE_ENV !== 'production') && key in context.provides) {\r\n warn(`App already provides property with key \"${String(key)}\". ` +\r\n `It will be overwritten with the new value.`);\r\n }\r\n // TypeScript doesn't allow symbols as index type\r\n // https://github.com/Microsoft/TypeScript/issues/24587\r\n context.provides[key] = value;\r\n return app;\r\n }\r\n });\r\n return app;\r\n };\r\n}\n\n/**\r\n * Function for handling a template ref\r\n */\r\nfunction setRef(rawRef, oldRawRef, parentSuspense, vnode, isUnmount = false) {\r\n if (isArray(rawRef)) {\r\n rawRef.forEach((r, i) => setRef(r, oldRawRef && (isArray(oldRawRef) ? oldRawRef[i] : oldRawRef), parentSuspense, vnode, isUnmount));\r\n return;\r\n }\r\n if (isAsyncWrapper(vnode) && !isUnmount) {\r\n // when mounting async components, nothing needs to be done,\r\n // because the template ref is forwarded to inner component\r\n return;\r\n }\r\n const refValue = vnode.shapeFlag & 4 /* STATEFUL_COMPONENT */\r\n ? getExposeProxy(vnode.component) || vnode.component.proxy\r\n : vnode.el;\r\n const value = isUnmount ? null : refValue;\r\n const { i: owner, r: ref } = rawRef;\r\n if ((process.env.NODE_ENV !== 'production') && !owner) {\r\n warn(`Missing ref owner context. ref cannot be used on hoisted vnodes. ` +\r\n `A vnode with ref must be created inside the render function.`);\r\n return;\r\n }\r\n const oldRef = oldRawRef && oldRawRef.r;\r\n const refs = owner.refs === EMPTY_OBJ ? (owner.refs = {}) : owner.refs;\r\n const setupState = owner.setupState;\r\n // dynamic ref changed. unset old ref\r\n if (oldRef != null && oldRef !== ref) {\r\n if (isString(oldRef)) {\r\n refs[oldRef] = null;\r\n if (hasOwn(setupState, oldRef)) {\r\n setupState[oldRef] = null;\r\n }\r\n }\r\n else if (isRef(oldRef)) {\r\n oldRef.value = null;\r\n }\r\n }\r\n if (isFunction(ref)) {\r\n callWithErrorHandling(ref, owner, 12 /* FUNCTION_REF */, [value, refs]);\r\n }\r\n else {\r\n const _isString = isString(ref);\r\n const _isRef = isRef(ref);\r\n if (_isString || _isRef) {\r\n const doSet = () => {\r\n if (rawRef.f) {\r\n const existing = _isString ? refs[ref] : ref.value;\r\n if (isUnmount) {\r\n isArray(existing) && remove(existing, refValue);\r\n }\r\n else {\r\n if (!isArray(existing)) {\r\n if (_isString) {\r\n refs[ref] = [refValue];\r\n }\r\n else {\r\n ref.value = [refValue];\r\n if (rawRef.k)\r\n refs[rawRef.k] = ref.value;\r\n }\r\n }\r\n else if (!existing.includes(refValue)) {\r\n existing.push(refValue);\r\n }\r\n }\r\n }\r\n else if (_isString) {\r\n refs[ref] = value;\r\n if (hasOwn(setupState, ref)) {\r\n setupState[ref] = value;\r\n }\r\n }\r\n else if (isRef(ref)) {\r\n ref.value = value;\r\n if (rawRef.k)\r\n refs[rawRef.k] = value;\r\n }\r\n else if ((process.env.NODE_ENV !== 'production')) {\r\n warn('Invalid template ref type:', ref, `(${typeof ref})`);\r\n }\r\n };\r\n if (value) {\r\n doSet.id = -1;\r\n queuePostRenderEffect(doSet, parentSuspense);\r\n }\r\n else {\r\n doSet();\r\n }\r\n }\r\n else if ((process.env.NODE_ENV !== 'production')) {\r\n warn('Invalid template ref type:', ref, `(${typeof ref})`);\r\n }\r\n }\r\n}\n\nlet hasMismatch = false;\r\nconst isSVGContainer = (container) => /svg/.test(container.namespaceURI) && container.tagName !== 'foreignObject';\r\nconst isComment = (node) => node.nodeType === 8 /* COMMENT */;\r\n// Note: hydration is DOM-specific\r\n// But we have to place it in core due to tight coupling with core - splitting\r\n// it out creates a ton of unnecessary complexity.\r\n// Hydration also depends on some renderer internal logic which needs to be\r\n// passed in via arguments.\r\nfunction createHydrationFunctions(rendererInternals) {\r\n const { mt: mountComponent, p: patch, o: { patchProp, nextSibling, parentNode, remove, insert, createComment } } = rendererInternals;\r\n const hydrate = (vnode, container) => {\r\n if (!container.hasChildNodes()) {\r\n (process.env.NODE_ENV !== 'production') &&\r\n warn(`Attempting to hydrate existing markup but container is empty. ` +\r\n `Performing full mount instead.`);\r\n patch(null, vnode, container);\r\n flushPostFlushCbs();\r\n return;\r\n }\r\n hasMismatch = false;\r\n hydrateNode(container.firstChild, vnode, null, null, null);\r\n flushPostFlushCbs();\r\n if (hasMismatch && !false) {\r\n // this error should show up in production\r\n console.error(`Hydration completed but contains mismatches.`);\r\n }\r\n };\r\n const hydrateNode = (node, vnode, parentComponent, parentSuspense, slotScopeIds, optimized = false) => {\r\n const isFragmentStart = isComment(node) && node.data === '[';\r\n const onMismatch = () => handleMismatch(node, vnode, parentComponent, parentSuspense, slotScopeIds, isFragmentStart);\r\n const { type, ref, shapeFlag } = vnode;\r\n const domType = node.nodeType;\r\n vnode.el = node;\r\n let nextNode = null;\r\n switch (type) {\r\n case Text:\r\n if (domType !== 3 /* TEXT */) {\r\n nextNode = onMismatch();\r\n }\r\n else {\r\n if (node.data !== vnode.children) {\r\n hasMismatch = true;\r\n (process.env.NODE_ENV !== 'production') &&\r\n warn(`Hydration text mismatch:` +\r\n `\\n- Client: ${JSON.stringify(node.data)}` +\r\n `\\n- Server: ${JSON.stringify(vnode.children)}`);\r\n node.data = vnode.children;\r\n }\r\n nextNode = nextSibling(node);\r\n }\r\n break;\r\n case Comment:\r\n if (domType !== 8 /* COMMENT */ || isFragmentStart) {\r\n nextNode = onMismatch();\r\n }\r\n else {\r\n nextNode = nextSibling(node);\r\n }\r\n break;\r\n case Static:\r\n if (domType !== 1 /* ELEMENT */) {\r\n nextNode = onMismatch();\r\n }\r\n else {\r\n // determine anchor, adopt content\r\n nextNode = node;\r\n // if the static vnode has its content stripped during build,\r\n // adopt it from the server-rendered HTML.\r\n const needToAdoptContent = !vnode.children.length;\r\n for (let i = 0; i < vnode.staticCount; i++) {\r\n if (needToAdoptContent)\r\n vnode.children += nextNode.outerHTML;\r\n if (i === vnode.staticCount - 1) {\r\n vnode.anchor = nextNode;\r\n }\r\n nextNode = nextSibling(nextNode);\r\n }\r\n return nextNode;\r\n }\r\n break;\r\n case Fragment:\r\n if (!isFragmentStart) {\r\n nextNode = onMismatch();\r\n }\r\n else {\r\n nextNode = hydrateFragment(node, vnode, parentComponent, parentSuspense, slotScopeIds, optimized);\r\n }\r\n break;\r\n default:\r\n if (shapeFlag & 1 /* ELEMENT */) {\r\n if (domType !== 1 /* ELEMENT */ ||\r\n vnode.type.toLowerCase() !==\r\n node.tagName.toLowerCase()) {\r\n nextNode = onMismatch();\r\n }\r\n else {\r\n nextNode = hydrateElement(node, vnode, parentComponent, parentSuspense, slotScopeIds, optimized);\r\n }\r\n }\r\n else if (shapeFlag & 6 /* COMPONENT */) {\r\n // when setting up the render effect, if the initial vnode already\r\n // has .el set, the component will perform hydration instead of mount\r\n // on its sub-tree.\r\n vnode.slotScopeIds = slotScopeIds;\r\n const container = parentNode(node);\r\n mountComponent(vnode, container, null, parentComponent, parentSuspense, isSVGContainer(container), optimized);\r\n // component may be async, so in the case of fragments we cannot rely\r\n // on component's rendered output to determine the end of the fragment\r\n // instead, we do a lookahead to find the end anchor node.\r\n nextNode = isFragmentStart\r\n ? locateClosingAsyncAnchor(node)\r\n : nextSibling(node);\r\n // #3787\r\n // if component is async, it may get moved / unmounted before its\r\n // inner component is loaded, so we need to give it a placeholder\r\n // vnode that matches its adopted DOM.\r\n if (isAsyncWrapper(vnode)) {\r\n let subTree;\r\n if (isFragmentStart) {\r\n subTree = createVNode(Fragment);\r\n subTree.anchor = nextNode\r\n ? nextNode.previousSibling\r\n : container.lastChild;\r\n }\r\n else {\r\n subTree =\r\n node.nodeType === 3 ? createTextVNode('') : createVNode('div');\r\n }\r\n subTree.el = node;\r\n vnode.component.subTree = subTree;\r\n }\r\n }\r\n else if (shapeFlag & 64 /* TELEPORT */) {\r\n if (domType !== 8 /* COMMENT */) {\r\n nextNode = onMismatch();\r\n }\r\n else {\r\n nextNode = vnode.type.hydrate(node, vnode, parentComponent, parentSuspense, slotScopeIds, optimized, rendererInternals, hydrateChildren);\r\n }\r\n }\r\n else if (shapeFlag & 128 /* SUSPENSE */) {\r\n nextNode = vnode.type.hydrate(node, vnode, parentComponent, parentSuspense, isSVGContainer(parentNode(node)), slotScopeIds, optimized, rendererInternals, hydrateNode);\r\n }\r\n else if ((process.env.NODE_ENV !== 'production')) {\r\n warn('Invalid HostVNode type:', type, `(${typeof type})`);\r\n }\r\n }\r\n if (ref != null) {\r\n setRef(ref, null, parentSuspense, vnode);\r\n }\r\n return nextNode;\r\n };\r\n const hydrateElement = (el, vnode, parentComponent, parentSuspense, slotScopeIds, optimized) => {\r\n optimized = optimized || !!vnode.dynamicChildren;\r\n const { type, props, patchFlag, shapeFlag, dirs } = vnode;\r\n // #4006 for form elements with non-string v-model value bindings\r\n // e.g.