{"version":3,"sources":["webpack:///./node_modules/@vue/devtools-api/lib/esm/index.js","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.esm-bundler.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":["setupDevtoolsPlugin","pluginDescriptor","setupFn","target","hook","enableProxy","enableEarlyProxy","__VUE_DEVTOOLS_PLUGIN_API_AVAILABLE__","proxy","list","__VUE_DEVTOOLS_PLUGINS__","push","proxiedTarget","emit","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","defaultOnError","createPosition","line","column","offset","createLocation","start","end","source","CHAR_SP","CHAR_CR","CHAR_LF","CHAR_LS","fromCharCode","CHAR_PS","createScanner","str","_buf","_index","_line","_column","_peekOffset","isCRLF","index","isLF","isPS","isLS","isLineEnd","peekOffset","charAt","currentChar","currentPeek","next","peek","reset","resetPeek","skipToPeek","EOF","undefined","LITERAL_DELIMITER","ERROR_DOMAIN$1","createTokenizer","_scnr","currentOffset","currentPosition","_initLoc","_initOffset","_context","currentType","startLoc","endLoc","lastType","lastOffset","lastStartLoc","lastEndLoc","braceNest","inLinked","text","context","onError","emitError","pos","ctx","err","getToken","type","value","token","getEndToken","eat","scnr","ch","peekSpaces","buf","skipSpaces","isIdentifierStart","cc","charCodeAt","isNumberStart","isNamedIdentifierStart","ret","isListIdentifierStart","isLiteralStart","isLinkedDotStart","isLinkedModifierStart","isLinkedDelimiterStart","isLinkedReferStart","fn","isPluralStart","isTextStart","hasSpace","prev","detectModulo","takeChar","takeIdentifierChar","closure","takeDigit","takeHexDigit","getDigits","num","readText","readNamedIdentifier","name","readListIdentifier","readLiteral","literal","x","readEscapeSequence","current","readUnicodeEscapeSequence","unicode","digits","sequence","i","readInvalidIdentifier","identifiers","readLinkedModifier","readLinkedRefer","detect","readPlural","plural","readTokenInPlaceholder","readTokenInLinked","validNamedIdentifier","validListIdentifier","validLiteral","readToken","nextToken","ERROR_DOMAIN","KNOWN_ESCAPES","fromEscapeSequence","match","codePoint4","codePoint6","codePoint","parseInt","fromCodePoint","createParser","tokenzer","startNode","node","endNode","parseText","tokenizer","parseList","parseNamed","key","parseLiteral","replace","parseLinkedModifier","nextConsumeToken","getTokenCaption","parseLinkedKey","parseLinked","linkedNode","parsed","modifier","nextContext","emptyLinkedKeyNode","parseMessage","startOffset","items","endOffset","parsePlural","msgNode","hasEmptyMessage","length","cases","parseResource","parse","body","slice","createTransformer","ast","helpers","Set","helper","add","traverseNodes","nodes","transformer","traverseNode","linked","transform","Array","from","createCodeGenerator","sourceMap","filename","breakLineCode","needIndent","_needIndent","map","indentLevel","_newline","n","withBreakLine","_breakLineCode","repeat","indent","withNewLine","level","deindent","newline","generateLinkedNode","generator","generateNode","generateMessageNode","generatePluralNode","generateResource","JSON","stringify","generate","mode","s","join","toJSON","baseCompile","assignedOptions","parser","IntlifyDevToolsHooks","I18nInit","FunctionTranslate","pathStateMachine","literalValueRE","isLiteral","exp","test","stripQuotes","a","b","getPathCharType","formatSubPath","path","trimmed","trim","isNaN","keys","c","newChar","transition","action","typeMap","subPathDepth","actions","maybeUnescapeQuote","nextChar","cache","Map","resolveWithKeyValue","obj","hit","get","set","len","last","val","DEFAULT_MODIFIER","DEFAULT_MESSAGE","DEFAULT_MESSAGE_DATA_TYPE","DEFAULT_NORMALIZE","values","DEFAULT_INTERPOLATE","pluralDefault","choice","choicesLength","Math","abs","min","getPluralIndex","pluralIndex","named","count","normalizeNamed","props","createMessageContext","locale","pluralRule","pluralRules","orgPluralRule","_list","_named","message","parent","_modifier","modifiers","normalize","processor","interpolate","devtools","setDevToolsHook","initI18nDevTools","i18n","version","meta","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","Object","fallbackWithLocaleChain","startLocale","DEFAULT_LOCALE","__localeChainCache","chain","block","appendBlockToChain","defaults","blocks","follow","appendLocaleToChain","tokens","split","appendItemToChain","splice","includes","VERSION","NOT_REOSLVED","MISSING_RESOLVE_VALUE","getDefaultLinkedModifiers","upper","toUpperCase","lower","toLowerCase","capitalize","toLocaleUpperCase","substr","_compiler","_resolver","_fallbacker","registerMessageCompiler","compiler","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","updateFallbackLocale","defaultOnCacheKey","compileCache","create","compileToFunction","onCacheKey","cached","occurred","Function","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","errorDetector","compileMessageFormat","ctxOptions","getMessageContextOptions","msgContext","messaged","evaluateMessage","item","forEach","resolveValue","locales","to","missingRet","getCompileOptions","msgCtx","arg1","arg2","arg3","resolveMessage","intlDefined","Intl","DateTimeFormat","NumberFormat","datetime","overrides","parseDateTimeArgs","part","datetimeFormat","id","formatter","formatToParts","arg4","matches","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","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","_pluralRules","getCoreContext","framework","trackReactivityValues","getPostTranslationHandler","setPostTranslationHandler","handler","getMissingHandler","setMissingHandler","wrapWithDeps","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","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__","hasSymbol","Symbol","toStringTag","PolySymbol","matchedRouteKey","viewDepthKey","routerKey","routeLocationKey","routerViewLocationKey","isBrowser","window","isESModule","__esModule","assign","applyToParams","params","newParams","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","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","REGEX_CHARS_RE","tokensToParser","segments","extraOptions","score","pattern","segmentScores","tokenIndex","subSegmentScore","repeatable","optional","regexp","re","RegExp","subPattern","avoidDuplicatedSlash","endsWith","param","compareScoreArray","diff","comparePathParserScore","aScore","bScore","comp","ROOT_TOKEN","VALID_PARAM_RE","tokenizePath","crash","buffer","previousState","finalizeSegment","char","customRe","consumeBuffer","addCharToBuffer","createRouteRecordMatcher","record","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","guardToPromiseFn","guard","enterCallbackArray","Promise","reject","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","emits","normalized","hasExtends","extendEmits","normalizedFromExtend","mixins","extends","isEmitListener","currentRenderingInstance","currentScopeId","setCurrentRenderingInstance","__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","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","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","setRef","moveStaticNode","removeStaticNode","mountElement","patchElement","is","mountChildren","unmountChildren","onVnodeBeforeMount","scopeId","needCallTransitionHooks","enter","parentVNode","cloneIfMounted","oldProps","newProps","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","rawRef","oldRawRef","isUnmount","refValue","owner","oldRef","refs","doSet","callWithErrorHandling","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","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","existing","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","onInvalidate","baseGetter","propsOrChildren","prototype","svgNS","doc","staticTemplateCache","nodeOps","insertBefore","removeChild","createElementNS","multiple","setAttribute","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","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","v0","be","n10","br","n1000000","bs","f","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","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","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.dd9574cd.js","sourcesContent":["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 * 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, registerMessageCompiler, compileToFunction, 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 compiler at vue-i18n\r\nregisterMessageCompiler(compileToFunction);\r\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","/*!\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) {\r\n this._object = _object;\r\n this._key = _key;\r\n this.__v_isRef = true;\r\n }\r\n get value() {\r\n return this._object[this._key];\r\n }\r\n set value(newVal) {\r\n this._object[this._key] = newVal;\r\n }\r\n}\r\nfunction toRef(object, key) {\r\n const val = object[key];\r\n return isRef(val) ? val : new ObjectRefImpl(object, key);\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\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.