| | |
| | | /** |
| | | * @vue/runtime-core v3.5.25 |
| | | * @vue/runtime-core v3.5.32 |
| | | * (c) 2018-present Yuxi (Evan) You and Vue contributors |
| | | * @license MIT |
| | | **/ |
| | | import { pauseTracking, resetTracking, isRef, toRaw, traverse, shallowRef, readonly, isReactive, ref, isShallow, isReadonly, shallowReadArray, toReadonly, toReactive, shallowReadonly, track, reactive, watch as watch$1, customRef, shallowReactive, trigger, ReactiveEffect, isProxy, proxyRefs, markRaw, EffectScope, computed as computed$1 } from '@vue/reactivity'; |
| | | import { pauseTracking, resetTracking, isRef, toRaw, traverse, watch as watch$1, shallowRef, readonly, isReactive, ref, isShallow, isReadonly, shallowReadArray, toReadonly, toReactive, shallowReadonly, track, reactive, customRef, shallowReactive, trigger, ReactiveEffect, isProxy, proxyRefs, markRaw, EffectScope, computed as computed$1 } from '@vue/reactivity'; |
| | | export { EffectScope, ReactiveEffect, TrackOpTypes, TriggerOpTypes, customRef, effect, effectScope, getCurrentScope, getCurrentWatcher, isProxy, isReactive, isReadonly, isRef, isShallow, markRaw, onScopeDispose, onWatcherCleanup, proxyRefs, reactive, readonly, ref, shallowReactive, shallowReadonly, shallowRef, stop, toRaw, toRef, toRefs, toValue, triggerRef, unref } from '@vue/reactivity'; |
| | | import { isString, isFunction, EMPTY_OBJ, isPromise, isArray, NOOP, getGlobalThis, extend, isBuiltInDirective, NO, hasOwn, remove, def, isOn, isReservedProp, normalizeClass, stringifyStyle, normalizeStyle, isKnownSvgAttr, isBooleanAttr, isKnownHtmlAttr, includeBooleanAttr, isRenderableAttrValue, normalizeCssVarValue, getEscapedCssVarName, isObject, isRegExp, invokeArrayFns, toHandlerKey, camelize, capitalize, isSymbol, isGloballyAllowed, hyphenate, hasChanged, looseToNumber, isModelListener, EMPTY_ARR, makeMap, toRawType, toNumber } from '@vue/shared'; |
| | | import { isString, isFunction, EMPTY_OBJ, isPromise, isArray, NOOP, getGlobalThis, extend, isBuiltInDirective, NO, hasOwn, remove, def, isOn, isReservedProp, normalizeClass, stringifyStyle, normalizeStyle, isKnownSvgAttr, isBooleanAttr, isKnownHtmlAttr, includeBooleanAttr, isRenderableAttrValue, normalizeCssVarValue, getEscapedCssVarName, isObject, isRegExp, invokeArrayFns, toHandlerKey, camelize, capitalize, isSymbol, isGloballyAllowed, hyphenate, hasChanged, looseToNumber, isModelListener, looseEqual, EMPTY_ARR, toRawType, makeMap, toNumber } from '@vue/shared'; |
| | | export { camelize, capitalize, normalizeClass, normalizeProps, normalizeStyle, toDisplayString, toHandlerKey } from '@vue/shared'; |
| | | |
| | | const stack = []; |
| | |
| | | } |
| | | |
| | | let isHmrUpdating = false; |
| | | const setHmrUpdating = (v) => { |
| | | try { |
| | | return isHmrUpdating; |
| | | } finally { |
| | | isHmrUpdating = v; |
| | | } |
| | | }; |
| | | const hmrDirtyComponents = /* @__PURE__ */ new Map(); |
| | | if (!!(process.env.NODE_ENV !== "production")) { |
| | | getGlobalThis().__VUE_HMR_RUNTIME__ = { |
| | |
| | | } |
| | | } |
| | | |
| | | const TeleportEndKey = Symbol("_vte"); |
| | | function provide(key, value) { |
| | | if (!!(process.env.NODE_ENV !== "production")) { |
| | | if (!currentInstance || currentInstance.isMounted) { |
| | | warn$1(`provide() can only be used inside setup().`); |
| | | } |
| | | } |
| | | if (currentInstance) { |
| | | let provides = currentInstance.provides; |
| | | const parentProvides = currentInstance.parent && currentInstance.parent.provides; |
| | | if (parentProvides === provides) { |
| | | provides = currentInstance.provides = Object.create(parentProvides); |
| | | } |
| | | provides[key] = value; |
| | | } |
| | | } |
| | | function inject(key, defaultValue, treatDefaultAsFactory = false) { |
| | | const instance = getCurrentInstance(); |
| | | if (instance || currentApp) { |
| | | let provides = currentApp ? currentApp._context.provides : instance ? instance.parent == null || instance.ce ? instance.vnode.appContext && instance.vnode.appContext.provides : instance.parent.provides : void 0; |
| | | if (provides && key in provides) { |
| | | return provides[key]; |
| | | } else if (arguments.length > 1) { |
| | | return treatDefaultAsFactory && isFunction(defaultValue) ? defaultValue.call(instance && instance.proxy) : defaultValue; |
| | | } else if (!!(process.env.NODE_ENV !== "production")) { |
| | | warn$1(`injection "${String(key)}" not found.`); |
| | | } |
| | | } else if (!!(process.env.NODE_ENV !== "production")) { |
| | | warn$1(`inject() can only be used inside setup() or functional components.`); |
| | | } |
| | | } |
| | | function hasInjectionContext() { |
| | | return !!(getCurrentInstance() || currentApp); |
| | | } |
| | | |
| | | const ssrContextKey = /* @__PURE__ */ Symbol.for("v-scx"); |
| | | const useSSRContext = () => { |
| | | { |
| | | const ctx = inject(ssrContextKey); |
| | | if (!ctx) { |
| | | !!(process.env.NODE_ENV !== "production") && warn$1( |
| | | `Server rendering context not provided. Make sure to only call useSSRContext() conditionally in the server build.` |
| | | ); |
| | | } |
| | | return ctx; |
| | | } |
| | | }; |
| | | |
| | | function watchEffect(effect, options) { |
| | | return doWatch(effect, null, options); |
| | | } |
| | | function watchPostEffect(effect, options) { |
| | | return doWatch( |
| | | effect, |
| | | null, |
| | | !!(process.env.NODE_ENV !== "production") ? extend({}, options, { flush: "post" }) : { flush: "post" } |
| | | ); |
| | | } |
| | | function watchSyncEffect(effect, options) { |
| | | return doWatch( |
| | | effect, |
| | | null, |
| | | !!(process.env.NODE_ENV !== "production") ? extend({}, options, { flush: "sync" }) : { flush: "sync" } |
| | | ); |
| | | } |
| | | function watch(source, cb, options) { |
| | | if (!!(process.env.NODE_ENV !== "production") && !isFunction(cb)) { |
| | | warn$1( |
| | | `\`watch(fn, options?)\` signature has been moved to a separate API. Use \`watchEffect(fn, options?)\` instead. \`watch\` now only supports \`watch(source, cb, options?) signature.` |
| | | ); |
| | | } |
| | | return doWatch(source, cb, options); |
| | | } |
| | | function doWatch(source, cb, options = EMPTY_OBJ) { |
| | | const { immediate, deep, flush, once } = options; |
| | | if (!!(process.env.NODE_ENV !== "production") && !cb) { |
| | | if (immediate !== void 0) { |
| | | warn$1( |
| | | `watch() "immediate" option is only respected when using the watch(source, callback, options?) signature.` |
| | | ); |
| | | } |
| | | if (deep !== void 0) { |
| | | warn$1( |
| | | `watch() "deep" option is only respected when using the watch(source, callback, options?) signature.` |
| | | ); |
| | | } |
| | | if (once !== void 0) { |
| | | warn$1( |
| | | `watch() "once" option is only respected when using the watch(source, callback, options?) signature.` |
| | | ); |
| | | } |
| | | } |
| | | const baseWatchOptions = extend({}, options); |
| | | if (!!(process.env.NODE_ENV !== "production")) baseWatchOptions.onWarn = warn$1; |
| | | const runsImmediately = cb && immediate || !cb && flush !== "post"; |
| | | let ssrCleanup; |
| | | if (isInSSRComponentSetup) { |
| | | if (flush === "sync") { |
| | | const ctx = useSSRContext(); |
| | | ssrCleanup = ctx.__watcherHandles || (ctx.__watcherHandles = []); |
| | | } else if (!runsImmediately) { |
| | | const watchStopHandle = () => { |
| | | }; |
| | | watchStopHandle.stop = NOOP; |
| | | watchStopHandle.resume = NOOP; |
| | | watchStopHandle.pause = NOOP; |
| | | return watchStopHandle; |
| | | } |
| | | } |
| | | const instance = currentInstance; |
| | | baseWatchOptions.call = (fn, type, args) => callWithAsyncErrorHandling(fn, instance, type, args); |
| | | let isPre = false; |
| | | if (flush === "post") { |
| | | baseWatchOptions.scheduler = (job) => { |
| | | queuePostRenderEffect(job, instance && instance.suspense); |
| | | }; |
| | | } else if (flush !== "sync") { |
| | | isPre = true; |
| | | baseWatchOptions.scheduler = (job, isFirstRun) => { |
| | | if (isFirstRun) { |
| | | job(); |
| | | } else { |
| | | queueJob(job); |
| | | } |
| | | }; |
| | | } |
| | | baseWatchOptions.augmentJob = (job) => { |
| | | if (cb) { |
| | | job.flags |= 4; |
| | | } |
| | | if (isPre) { |
| | | job.flags |= 2; |
| | | if (instance) { |
| | | job.id = instance.uid; |
| | | job.i = instance; |
| | | } |
| | | } |
| | | }; |
| | | const watchHandle = watch$1(source, cb, baseWatchOptions); |
| | | if (isInSSRComponentSetup) { |
| | | if (ssrCleanup) { |
| | | ssrCleanup.push(watchHandle); |
| | | } else if (runsImmediately) { |
| | | watchHandle(); |
| | | } |
| | | } |
| | | return watchHandle; |
| | | } |
| | | function instanceWatch(source, value, options) { |
| | | const publicThis = this.proxy; |
| | | const getter = isString(source) ? source.includes(".") ? createPathGetter(publicThis, source) : () => publicThis[source] : source.bind(publicThis, publicThis); |
| | | let cb; |
| | | if (isFunction(value)) { |
| | | cb = value; |
| | | } else { |
| | | cb = value.handler; |
| | | options = value; |
| | | } |
| | | const reset = setCurrentInstance(this); |
| | | const res = doWatch(getter, cb.bind(publicThis), options); |
| | | reset(); |
| | | return res; |
| | | } |
| | | function createPathGetter(ctx, path) { |
| | | const segments = path.split("."); |
| | | return () => { |
| | | let cur = ctx; |
| | | for (let i = 0; i < segments.length && cur; i++) { |
| | | cur = cur[segments[i]]; |
| | | } |
| | | return cur; |
| | | }; |
| | | } |
| | | |
| | | const pendingMounts = /* @__PURE__ */ new WeakMap(); |
| | | const TeleportEndKey = /* @__PURE__ */ Symbol("_vte"); |
| | | const isTeleport = (type) => type.__isTeleport; |
| | | const isTeleportDisabled = (props) => props && (props.disabled || props.disabled === ""); |
| | | const isTeleportDeferred = (props) => props && (props.defer || props.defer === ""); |
| | |
| | | o: { insert, querySelector, createText, createComment } |
| | | } = internals; |
| | | const disabled = isTeleportDisabled(n2.props); |
| | | let { shapeFlag, children, dynamicChildren } = n2; |
| | | let { dynamicChildren } = n2; |
| | | if (!!(process.env.NODE_ENV !== "production") && isHmrUpdating) { |
| | | optimized = false; |
| | | dynamicChildren = null; |
| | | } |
| | | const mount = (vnode, container2, anchor2) => { |
| | | if (vnode.shapeFlag & 16) { |
| | | mountChildren( |
| | | vnode.children, |
| | | container2, |
| | | anchor2, |
| | | parentComponent, |
| | | parentSuspense, |
| | | namespace, |
| | | slotScopeIds, |
| | | optimized |
| | | ); |
| | | } |
| | | }; |
| | | const mountToTarget = (vnode = n2) => { |
| | | const disabled2 = isTeleportDisabled(vnode.props); |
| | | const target = vnode.target = resolveTarget(vnode.props, querySelector); |
| | | const targetAnchor = prepareAnchor(target, vnode, createText, insert); |
| | | if (target) { |
| | | if (namespace !== "svg" && isTargetSVG(target)) { |
| | | namespace = "svg"; |
| | | } else if (namespace !== "mathml" && isTargetMathML(target)) { |
| | | namespace = "mathml"; |
| | | } |
| | | if (parentComponent && parentComponent.isCE) { |
| | | (parentComponent.ce._teleportTargets || (parentComponent.ce._teleportTargets = /* @__PURE__ */ new Set())).add(target); |
| | | } |
| | | if (!disabled2) { |
| | | mount(vnode, target, targetAnchor); |
| | | updateCssVars(vnode, false); |
| | | } |
| | | } else if (!!(process.env.NODE_ENV !== "production") && !disabled2) { |
| | | warn$1("Invalid Teleport target on mount:", target, `(${typeof target})`); |
| | | } |
| | | }; |
| | | const queuePendingMount = (vnode) => { |
| | | const mountJob = () => { |
| | | if (pendingMounts.get(vnode) !== mountJob) return; |
| | | pendingMounts.delete(vnode); |
| | | if (isTeleportDisabled(vnode.props)) { |
| | | mount(vnode, container, vnode.anchor); |
| | | updateCssVars(vnode, true); |
| | | } |
| | | mountToTarget(vnode); |
| | | }; |
| | | pendingMounts.set(vnode, mountJob); |
| | | queuePostRenderEffect(mountJob, parentSuspense); |
| | | }; |
| | | if (n1 == null) { |
| | | const placeholder = n2.el = !!(process.env.NODE_ENV !== "production") ? createComment("teleport start") : createText(""); |
| | | const mainAnchor = n2.anchor = !!(process.env.NODE_ENV !== "production") ? createComment("teleport end") : createText(""); |
| | | insert(placeholder, container, anchor); |
| | | insert(mainAnchor, container, anchor); |
| | | const mount = (container2, anchor2) => { |
| | | if (shapeFlag & 16) { |
| | | mountChildren( |
| | | children, |
| | | container2, |
| | | anchor2, |
| | | parentComponent, |
| | | parentSuspense, |
| | | namespace, |
| | | slotScopeIds, |
| | | optimized |
| | | ); |
| | | } |
| | | }; |
| | | const mountToTarget = () => { |
| | | const target = n2.target = resolveTarget(n2.props, querySelector); |
| | | const targetAnchor = prepareAnchor(target, n2, createText, insert); |
| | | if (target) { |
| | | if (namespace !== "svg" && isTargetSVG(target)) { |
| | | namespace = "svg"; |
| | | } else if (namespace !== "mathml" && isTargetMathML(target)) { |
| | | namespace = "mathml"; |
| | | } |
| | | if (parentComponent && parentComponent.isCE) { |
| | | (parentComponent.ce._teleportTargets || (parentComponent.ce._teleportTargets = /* @__PURE__ */ new Set())).add(target); |
| | | } |
| | | if (!disabled) { |
| | | mount(target, targetAnchor); |
| | | updateCssVars(n2, false); |
| | | } |
| | | } else if (!!(process.env.NODE_ENV !== "production") && !disabled) { |
| | | warn$1( |
| | | "Invalid Teleport target on mount:", |
| | | target, |
| | | `(${typeof target})` |
| | | ); |
| | | } |
| | | }; |
| | | if (disabled) { |
| | | mount(container, mainAnchor); |
| | | updateCssVars(n2, true); |
| | | } |
| | | if (isTeleportDeferred(n2.props)) { |
| | | n2.el.__isMounted = false; |
| | | queuePostRenderEffect(() => { |
| | | mountToTarget(); |
| | | delete n2.el.__isMounted; |
| | | }, parentSuspense); |
| | | } else { |
| | | mountToTarget(); |
| | | } |
| | | } else { |
| | | if (isTeleportDeferred(n2.props) && n1.el.__isMounted === false) { |
| | | queuePostRenderEffect(() => { |
| | | TeleportImpl.process( |
| | | n1, |
| | | n2, |
| | | container, |
| | | anchor, |
| | | parentComponent, |
| | | parentSuspense, |
| | | namespace, |
| | | slotScopeIds, |
| | | optimized, |
| | | internals |
| | | ); |
| | | }, parentSuspense); |
| | | if (isTeleportDeferred(n2.props) || parentSuspense && parentSuspense.pendingBranch) { |
| | | queuePendingMount(n2); |
| | | return; |
| | | } |
| | | if (disabled) { |
| | | mount(n2, container, mainAnchor); |
| | | updateCssVars(n2, true); |
| | | } |
| | | mountToTarget(); |
| | | } else { |
| | | n2.el = n1.el; |
| | | n2.targetStart = n1.targetStart; |
| | | const mainAnchor = n2.anchor = n1.anchor; |
| | | const pendingMount = pendingMounts.get(n1); |
| | | if (pendingMount) { |
| | | pendingMount.flags |= 8; |
| | | pendingMounts.delete(n1); |
| | | queuePendingMount(n2); |
| | | return; |
| | | } |
| | | n2.targetStart = n1.targetStart; |
| | | const target = n2.target = n1.target; |
| | | const targetAnchor = n2.targetAnchor = n1.targetAnchor; |
| | | const wasDisabled = isTeleportDisabled(n1.props); |
| | |
| | | target, |
| | | props |
| | | } = vnode; |
| | | let shouldRemove = doRemove || !isTeleportDisabled(props); |
| | | const pendingMount = pendingMounts.get(vnode); |
| | | if (pendingMount) { |
| | | pendingMount.flags |= 8; |
| | | pendingMounts.delete(vnode); |
| | | shouldRemove = false; |
| | | } |
| | | if (target) { |
| | | hostRemove(targetStart); |
| | | hostRemove(targetAnchor); |
| | | } |
| | | doRemove && hostRemove(anchor); |
| | | if (shapeFlag & 16) { |
| | | const shouldRemove = doRemove || !isTeleportDisabled(props); |
| | | for (let i = 0; i < children.length; i++) { |
| | | const child = children[i]; |
| | | unmount( |
| | |
| | | function hydrateTeleport(node, vnode, parentComponent, parentSuspense, slotScopeIds, optimized, { |
| | | o: { nextSibling, parentNode, querySelector, insert, createText } |
| | | }, hydrateChildren) { |
| | | function hydrateDisabledTeleport(node2, vnode2, targetStart, targetAnchor) { |
| | | function hydrateAnchor(target2, targetNode) { |
| | | let targetAnchor = targetNode; |
| | | while (targetAnchor) { |
| | | if (targetAnchor && targetAnchor.nodeType === 8) { |
| | | if (targetAnchor.data === "teleport start anchor") { |
| | | vnode.targetStart = targetAnchor; |
| | | } else if (targetAnchor.data === "teleport anchor") { |
| | | vnode.targetAnchor = targetAnchor; |
| | | target2._lpa = vnode.targetAnchor && nextSibling(vnode.targetAnchor); |
| | | break; |
| | | } |
| | | } |
| | | targetAnchor = nextSibling(targetAnchor); |
| | | } |
| | | } |
| | | function hydrateDisabledTeleport(node2, vnode2) { |
| | | vnode2.anchor = hydrateChildren( |
| | | nextSibling(node2), |
| | | vnode2, |
| | |
| | | slotScopeIds, |
| | | optimized |
| | | ); |
| | | vnode2.targetStart = targetStart; |
| | | vnode2.targetAnchor = targetAnchor; |
| | | } |
| | | const target = vnode.target = resolveTarget( |
| | | vnode.props, |
| | |
| | | const targetNode = target._lpa || target.firstChild; |
| | | if (vnode.shapeFlag & 16) { |
| | | if (disabled) { |
| | | hydrateDisabledTeleport( |
| | | node, |
| | | vnode, |
| | | targetNode, |
| | | targetNode && nextSibling(targetNode) |
| | | ); |
| | | hydrateDisabledTeleport(node, vnode); |
| | | hydrateAnchor(target, targetNode); |
| | | if (!vnode.targetAnchor) { |
| | | prepareAnchor( |
| | | target, |
| | | vnode, |
| | | createText, |
| | | insert, |
| | | // if target is the same as the main view, insert anchors before current node |
| | | // to avoid hydrating mismatch |
| | | parentNode(node) === target ? node : null |
| | | ); |
| | | } |
| | | } else { |
| | | vnode.anchor = nextSibling(node); |
| | | let targetAnchor = targetNode; |
| | | while (targetAnchor) { |
| | | if (targetAnchor && targetAnchor.nodeType === 8) { |
| | | if (targetAnchor.data === "teleport start anchor") { |
| | | vnode.targetStart = targetAnchor; |
| | | } else if (targetAnchor.data === "teleport anchor") { |
| | | vnode.targetAnchor = targetAnchor; |
| | | target._lpa = vnode.targetAnchor && nextSibling(vnode.targetAnchor); |
| | | break; |
| | | } |
| | | } |
| | | targetAnchor = nextSibling(targetAnchor); |
| | | } |
| | | hydrateAnchor(target, targetNode); |
| | | if (!vnode.targetAnchor) { |
| | | prepareAnchor(target, vnode, createText, insert); |
| | | } |
| | |
| | | updateCssVars(vnode, disabled); |
| | | } else if (disabled) { |
| | | if (vnode.shapeFlag & 16) { |
| | | hydrateDisabledTeleport(node, vnode, node, nextSibling(node)); |
| | | hydrateDisabledTeleport(node, vnode); |
| | | vnode.targetStart = node; |
| | | vnode.targetAnchor = nextSibling(node); |
| | | } |
| | | } |
| | | return vnode.anchor && nextSibling(vnode.anchor); |
| | |
| | | ctx.ut(); |
| | | } |
| | | } |
| | | function prepareAnchor(target, vnode, createText, insert) { |
| | | function prepareAnchor(target, vnode, createText, insert, anchor = null) { |
| | | const targetStart = vnode.targetStart = createText(""); |
| | | const targetAnchor = vnode.targetAnchor = createText(""); |
| | | targetStart[TeleportEndKey] = targetAnchor; |
| | | if (target) { |
| | | insert(targetStart, target); |
| | | insert(targetAnchor, target); |
| | | insert(targetStart, target, anchor); |
| | | insert(targetAnchor, target, anchor); |
| | | } |
| | | return targetAnchor; |
| | | } |
| | | |
| | | const leaveCbKey = Symbol("_leaveCb"); |
| | | const enterCbKey = Symbol("_enterCb"); |
| | | const leaveCbKey = /* @__PURE__ */ Symbol("_leaveCb"); |
| | | const enterCbKey = /* @__PURE__ */ Symbol("_enterCb"); |
| | | function useTransitionState() { |
| | | const state = { |
| | | isMounted: false, |
| | |
| | | callHook(hook, [el]); |
| | | }, |
| | | enter(el) { |
| | | if (!isHmrUpdating && leavingVNodesCache[key] === vnode) return; |
| | | let hook = onEnter; |
| | | let afterHook = onAfterEnter; |
| | | let cancelHook = onEnterCancelled; |
| | |
| | | } |
| | | } |
| | | let called = false; |
| | | const done = el[enterCbKey] = (cancelled) => { |
| | | el[enterCbKey] = (cancelled) => { |
| | | if (called) return; |
| | | called = true; |
| | | if (cancelled) { |
| | |
| | | } |
| | | el[enterCbKey] = void 0; |
| | | }; |
| | | const done = el[enterCbKey].bind(null, false); |
| | | if (hook) { |
| | | callAsyncHook(hook, [el, done]); |
| | | } else { |
| | |
| | | } |
| | | callHook(onBeforeLeave, [el]); |
| | | let called = false; |
| | | const done = el[leaveCbKey] = (cancelled) => { |
| | | el[leaveCbKey] = (cancelled) => { |
| | | if (called) return; |
| | | called = true; |
| | | remove(); |
| | |
| | | delete leavingVNodesCache[key2]; |
| | | } |
| | | }; |
| | | const done = el[leaveCbKey].bind(null, false); |
| | | leavingVNodesCache[key2] = vnode; |
| | | if (onLeave) { |
| | | callAsyncHook(onLeave, [el, done]); |
| | |
| | | const r = shallowRef(null); |
| | | if (i) { |
| | | const refs = i.refs === EMPTY_OBJ ? i.refs = {} : i.refs; |
| | | let desc; |
| | | if (!!(process.env.NODE_ENV !== "production") && (desc = Object.getOwnPropertyDescriptor(refs, key)) && !desc.configurable) { |
| | | if (!!(process.env.NODE_ENV !== "production") && isTemplateRefKey(refs, key)) { |
| | | warn$1(`useTemplateRef('${key}') already exists.`); |
| | | } else { |
| | | Object.defineProperty(refs, key, { |
| | |
| | | knownTemplateRefs.add(ret); |
| | | } |
| | | return ret; |
| | | } |
| | | function isTemplateRefKey(refs, key) { |
| | | let desc; |
| | | return !!((desc = Object.getOwnPropertyDescriptor(refs, key)) && !desc.configurable); |
| | | } |
| | | |
| | | const pendingSetRefMap = /* @__PURE__ */ new WeakMap(); |
| | |
| | | return false; |
| | | } |
| | | } |
| | | if (isTemplateRefKey(refs, key)) { |
| | | return false; |
| | | } |
| | | return hasOwn(rawSetupState, key); |
| | | }; |
| | | const canSetRef = (ref2) => { |
| | | return !!!(process.env.NODE_ENV !== "production") || !knownTemplateRefs.has(ref2); |
| | | const canSetRef = (ref2, key) => { |
| | | if (!!(process.env.NODE_ENV !== "production") && knownTemplateRefs.has(ref2)) { |
| | | return false; |
| | | } |
| | | if (key && isTemplateRefKey(refs, key)) { |
| | | return false; |
| | | } |
| | | return true; |
| | | }; |
| | | if (oldRef != null && oldRef !== ref) { |
| | | invalidatePendingSetRef(oldRawRef); |
| | |
| | | setupState[oldRef] = null; |
| | | } |
| | | } else if (isRef(oldRef)) { |
| | | if (canSetRef(oldRef)) { |
| | | const oldRawRefAtom = oldRawRef; |
| | | if (canSetRef(oldRef, oldRawRefAtom.k)) { |
| | | oldRef.value = null; |
| | | } |
| | | const oldRawRefAtom = oldRawRef; |
| | | if (oldRawRefAtom.k) refs[oldRawRefAtom.k] = null; |
| | | } |
| | | } |
| | |
| | | } |
| | | } else { |
| | | const newVal = [refValue]; |
| | | if (canSetRef(ref)) { |
| | | if (canSetRef(ref, rawRef.k)) { |
| | | ref.value = newVal; |
| | | } |
| | | if (rawRef.k) refs[rawRef.k] = newVal; |
| | |
| | | setupState[ref] = value; |
| | | } |
| | | } else if (_isRef) { |
| | | if (canSetRef(ref)) { |
| | | if (canSetRef(ref, rawRef.k)) { |
| | | ref.value = value; |
| | | } |
| | | if (rawRef.k) refs[rawRef.k] = value; |
| | |
| | | logMismatchError(); |
| | | } |
| | | if (forcePatch && (key.endsWith("value") || key === "indeterminate") || isOn(key) && !isReservedProp(key) || // force hydrate v-bind with .prop modifiers |
| | | key[0] === "." || isCustomElement) { |
| | | key[0] === "." || isCustomElement && !isReservedProp(key)) { |
| | | patchProp(el, key, null, props[key], void 0, parentComponent); |
| | | } |
| | | } |
| | |
| | | } |
| | | function pruneCache(filter) { |
| | | cache.forEach((vnode, key) => { |
| | | const name = getComponentName(vnode.type); |
| | | const name = getComponentName( |
| | | isAsyncWrapper(vnode) ? vnode.type.__asyncResolved || {} : vnode.type |
| | | ); |
| | | if (name && !filter(name)) { |
| | | pruneCacheEntry(key); |
| | | } |
| | |
| | | function resolveComponent(name, maybeSelfReference) { |
| | | return resolveAsset(COMPONENTS, name, true, maybeSelfReference) || name; |
| | | } |
| | | const NULL_DYNAMIC_COMPONENT = Symbol.for("v-ndc"); |
| | | const NULL_DYNAMIC_COMPONENT = /* @__PURE__ */ Symbol.for("v-ndc"); |
| | | function resolveDynamicComponent(component) { |
| | | if (isString(component)) { |
| | | return resolveAsset(COMPONENTS, component, false) || component; |
| | |
| | | ); |
| | | } |
| | | } else if (typeof source === "number") { |
| | | if (!!(process.env.NODE_ENV !== "production") && !Number.isInteger(source)) { |
| | | warn$1(`The v-for range expect an integer value but got ${source}.`); |
| | | } |
| | | ret = new Array(source); |
| | | for (let i = 0; i < source; i++) { |
| | | ret[i] = renderItem(i + 1, i, void 0, cached && cached[i]); |
| | | if (!!(process.env.NODE_ENV !== "production") && (!Number.isInteger(source) || source < 0)) { |
| | | warn$1( |
| | | `The v-for range expects a positive integer value but got ${source}.` |
| | | ); |
| | | ret = []; |
| | | } else { |
| | | ret = new Array(source); |
| | | for (let i = 0; i < source; i++) { |
| | | ret[i] = renderItem(i + 1, i, void 0, cached && cached[i]); |
| | | } |
| | | } |
| | | } else if (isObject(source)) { |
| | | if (source[Symbol.iterator]) { |
| | |
| | | } |
| | | function withAsyncContext(getAwaitable) { |
| | | const ctx = getCurrentInstance(); |
| | | const inSSRSetup = isInSSRComponentSetup; |
| | | if (!!(process.env.NODE_ENV !== "production") && !ctx) { |
| | | warn$1( |
| | | `withAsyncContext called without active current instance. This is likely a bug.` |
| | |
| | | } |
| | | let awaitable = getAwaitable(); |
| | | unsetCurrentInstance(); |
| | | if (inSSRSetup) { |
| | | setInSSRSetupState(false); |
| | | } |
| | | const restore = () => { |
| | | setCurrentInstance(ctx); |
| | | if (inSSRSetup) { |
| | | setInSSRSetupState(true); |
| | | } |
| | | }; |
| | | const cleanup = () => { |
| | | if (getCurrentInstance() !== ctx) ctx.scope.off(); |
| | | unsetCurrentInstance(); |
| | | if (inSSRSetup) { |
| | | setInSSRSetupState(false); |
| | | } |
| | | }; |
| | | if (isPromise(awaitable)) { |
| | | awaitable = awaitable.catch((e) => { |
| | | setCurrentInstance(ctx); |
| | | restore(); |
| | | Promise.resolve().then(() => Promise.resolve().then(cleanup)); |
| | | throw e; |
| | | }); |
| | | } |
| | | return [awaitable, () => setCurrentInstance(ctx)]; |
| | | return [ |
| | | awaitable, |
| | | () => { |
| | | restore(); |
| | | Promise.resolve().then(cleanup); |
| | | } |
| | | ]; |
| | | } |
| | | |
| | | function createDuplicateChecker() { |
| | |
| | | } |
| | | let currentApp = null; |
| | | |
| | | function provide(key, value) { |
| | | if (!!(process.env.NODE_ENV !== "production")) { |
| | | if (!currentInstance || currentInstance.isMounted) { |
| | | warn$1(`provide() can only be used inside setup().`); |
| | | } |
| | | } |
| | | if (currentInstance) { |
| | | let provides = currentInstance.provides; |
| | | const parentProvides = currentInstance.parent && currentInstance.parent.provides; |
| | | if (parentProvides === provides) { |
| | | provides = currentInstance.provides = Object.create(parentProvides); |
| | | } |
| | | provides[key] = value; |
| | | } |
| | | } |
| | | function inject(key, defaultValue, treatDefaultAsFactory = false) { |
| | | const instance = getCurrentInstance(); |
| | | if (instance || currentApp) { |
| | | let provides = currentApp ? currentApp._context.provides : instance ? instance.parent == null || instance.ce ? instance.vnode.appContext && instance.vnode.appContext.provides : instance.parent.provides : void 0; |
| | | if (provides && key in provides) { |
| | | return provides[key]; |
| | | } else if (arguments.length > 1) { |
| | | return treatDefaultAsFactory && isFunction(defaultValue) ? defaultValue.call(instance && instance.proxy) : defaultValue; |
| | | } else if (!!(process.env.NODE_ENV !== "production")) { |
| | | warn$1(`injection "${String(key)}" not found.`); |
| | | } |
| | | } else if (!!(process.env.NODE_ENV !== "production")) { |
| | | warn$1(`inject() can only be used inside setup() or functional components.`); |
| | | } |
| | | } |
| | | function hasInjectionContext() { |
| | | return !!(getCurrentInstance() || currentApp); |
| | | } |
| | | |
| | | const ssrContextKey = Symbol.for("v-scx"); |
| | | const useSSRContext = () => { |
| | | { |
| | | const ctx = inject(ssrContextKey); |
| | | if (!ctx) { |
| | | !!(process.env.NODE_ENV !== "production") && warn$1( |
| | | `Server rendering context not provided. Make sure to only call useSSRContext() conditionally in the server build.` |
| | | ); |
| | | } |
| | | return ctx; |
| | | } |
| | | }; |
| | | |
| | | function watchEffect(effect, options) { |
| | | return doWatch(effect, null, options); |
| | | } |
| | | function watchPostEffect(effect, options) { |
| | | return doWatch( |
| | | effect, |
| | | null, |
| | | !!(process.env.NODE_ENV !== "production") ? extend({}, options, { flush: "post" }) : { flush: "post" } |
| | | ); |
| | | } |
| | | function watchSyncEffect(effect, options) { |
| | | return doWatch( |
| | | effect, |
| | | null, |
| | | !!(process.env.NODE_ENV !== "production") ? extend({}, options, { flush: "sync" }) : { flush: "sync" } |
| | | ); |
| | | } |
| | | function watch(source, cb, options) { |
| | | if (!!(process.env.NODE_ENV !== "production") && !isFunction(cb)) { |
| | | warn$1( |
| | | `\`watch(fn, options?)\` signature has been moved to a separate API. Use \`watchEffect(fn, options?)\` instead. \`watch\` now only supports \`watch(source, cb, options?) signature.` |
| | | ); |
| | | } |
| | | return doWatch(source, cb, options); |
| | | } |
| | | function doWatch(source, cb, options = EMPTY_OBJ) { |
| | | const { immediate, deep, flush, once } = options; |
| | | if (!!(process.env.NODE_ENV !== "production") && !cb) { |
| | | if (immediate !== void 0) { |
| | | warn$1( |
| | | `watch() "immediate" option is only respected when using the watch(source, callback, options?) signature.` |
| | | ); |
| | | } |
| | | if (deep !== void 0) { |
| | | warn$1( |
| | | `watch() "deep" option is only respected when using the watch(source, callback, options?) signature.` |
| | | ); |
| | | } |
| | | if (once !== void 0) { |
| | | warn$1( |
| | | `watch() "once" option is only respected when using the watch(source, callback, options?) signature.` |
| | | ); |
| | | } |
| | | } |
| | | const baseWatchOptions = extend({}, options); |
| | | if (!!(process.env.NODE_ENV !== "production")) baseWatchOptions.onWarn = warn$1; |
| | | const runsImmediately = cb && immediate || !cb && flush !== "post"; |
| | | let ssrCleanup; |
| | | if (isInSSRComponentSetup) { |
| | | if (flush === "sync") { |
| | | const ctx = useSSRContext(); |
| | | ssrCleanup = ctx.__watcherHandles || (ctx.__watcherHandles = []); |
| | | } else if (!runsImmediately) { |
| | | const watchStopHandle = () => { |
| | | }; |
| | | watchStopHandle.stop = NOOP; |
| | | watchStopHandle.resume = NOOP; |
| | | watchStopHandle.pause = NOOP; |
| | | return watchStopHandle; |
| | | } |
| | | } |
| | | const instance = currentInstance; |
| | | baseWatchOptions.call = (fn, type, args) => callWithAsyncErrorHandling(fn, instance, type, args); |
| | | let isPre = false; |
| | | if (flush === "post") { |
| | | baseWatchOptions.scheduler = (job) => { |
| | | queuePostRenderEffect(job, instance && instance.suspense); |
| | | }; |
| | | } else if (flush !== "sync") { |
| | | isPre = true; |
| | | baseWatchOptions.scheduler = (job, isFirstRun) => { |
| | | if (isFirstRun) { |
| | | job(); |
| | | } else { |
| | | queueJob(job); |
| | | } |
| | | }; |
| | | } |
| | | baseWatchOptions.augmentJob = (job) => { |
| | | if (cb) { |
| | | job.flags |= 4; |
| | | } |
| | | if (isPre) { |
| | | job.flags |= 2; |
| | | if (instance) { |
| | | job.id = instance.uid; |
| | | job.i = instance; |
| | | } |
| | | } |
| | | }; |
| | | const watchHandle = watch$1(source, cb, baseWatchOptions); |
| | | if (isInSSRComponentSetup) { |
| | | if (ssrCleanup) { |
| | | ssrCleanup.push(watchHandle); |
| | | } else if (runsImmediately) { |
| | | watchHandle(); |
| | | } |
| | | } |
| | | return watchHandle; |
| | | } |
| | | function instanceWatch(source, value, options) { |
| | | const publicThis = this.proxy; |
| | | const getter = isString(source) ? source.includes(".") ? createPathGetter(publicThis, source) : () => publicThis[source] : source.bind(publicThis, publicThis); |
| | | let cb; |
| | | if (isFunction(value)) { |
| | | cb = value; |
| | | } else { |
| | | cb = value.handler; |
| | | options = value; |
| | | } |
| | | const reset = setCurrentInstance(this); |
| | | const res = doWatch(getter, cb.bind(publicThis), options); |
| | | reset(); |
| | | return res; |
| | | } |
| | | function createPathGetter(ctx, path) { |
| | | const segments = path.split("."); |
| | | return () => { |
| | | let cur = ctx; |
| | | for (let i = 0; i < segments.length && cur; i++) { |
| | | cur = cur[segments[i]]; |
| | | } |
| | | return cur; |
| | | }; |
| | | } |
| | | |
| | | function useModel(props, name, options = EMPTY_OBJ) { |
| | | const i = getCurrentInstance(); |
| | | if (!!(process.env.NODE_ENV !== "production") && !i) { |
| | |
| | | const dynamicProps = nextVNode.dynamicProps; |
| | | for (let i = 0; i < dynamicProps.length; i++) { |
| | | const key = dynamicProps[i]; |
| | | if (nextProps[key] !== prevProps[key] && !isEmitListener(emits, key)) { |
| | | if (hasPropValueChanged(nextProps, prevProps, key) && !isEmitListener(emits, key)) { |
| | | return true; |
| | | } |
| | | } |
| | |
| | | } |
| | | for (let i = 0; i < nextKeys.length; i++) { |
| | | const key = nextKeys[i]; |
| | | if (nextProps[key] !== prevProps[key] && !isEmitListener(emitsOptions, key)) { |
| | | if (hasPropValueChanged(nextProps, prevProps, key) && !isEmitListener(emitsOptions, key)) { |
| | | return true; |
| | | } |
| | | } |
| | | return false; |
| | | } |
| | | function updateHOCHostEl({ vnode, parent }, el) { |
| | | function hasPropValueChanged(nextProps, prevProps, key) { |
| | | const nextProp = nextProps[key]; |
| | | const prevProp = prevProps[key]; |
| | | if (key === "style" && isObject(nextProp) && isObject(prevProp)) { |
| | | return !looseEqual(nextProp, prevProp); |
| | | } |
| | | return nextProp !== prevProp; |
| | | } |
| | | function updateHOCHostEl({ vnode, parent, suspense }, el) { |
| | | while (parent) { |
| | | const root = parent.subTree; |
| | | if (root.suspense && root.suspense.activeBranch === vnode) { |
| | | root.el = vnode.el; |
| | | root.suspense.vnode.el = root.el = el; |
| | | vnode = root; |
| | | } |
| | | if (root === vnode) { |
| | | (vnode = parent.vnode).el = el; |
| | |
| | | } else { |
| | | break; |
| | | } |
| | | } |
| | | if (suspense && suspense.activeBranch === vnode) { |
| | | suspense.vnode.el = el; |
| | | } |
| | | } |
| | | |
| | |
| | | optimized |
| | | ); |
| | | } else { |
| | | const customElement = !!(n1.el && n1.el._isVueCE) ? n1.el : null; |
| | | const customElement = n1.el && n1.el._isVueCE ? n1.el : null; |
| | | try { |
| | | if (customElement) { |
| | | customElement._beginPatch(); |
| | |
| | | } |
| | | hostInsert(el, container, anchor); |
| | | if ((vnodeHook = props && props.onVnodeMounted) || needCallTransitionHooks || dirs) { |
| | | const isHmr = !!(process.env.NODE_ENV !== "production") && isHmrUpdating; |
| | | queuePostRenderEffect(() => { |
| | | vnodeHook && invokeVNodeHook(vnodeHook, parentComponent, vnode); |
| | | needCallTransitionHooks && transition.enter(el); |
| | | dirs && invokeDirectiveHook(vnode, null, parentComponent, "mounted"); |
| | | let prev; |
| | | if (!!(process.env.NODE_ENV !== "production")) prev = setHmrUpdating(isHmr); |
| | | try { |
| | | vnodeHook && invokeVNodeHook(vnodeHook, parentComponent, vnode); |
| | | needCallTransitionHooks && transition.enter(el); |
| | | dirs && invokeDirectiveHook(vnode, null, parentComponent, "mounted"); |
| | | } finally { |
| | | if (!!(process.env.NODE_ENV !== "production")) setHmrUpdating(prev); |
| | | } |
| | | }, parentSuspense); |
| | | } |
| | | }; |
| | |
| | | } else { |
| | | if (patchFlag > 0 && patchFlag & 64 && dynamicChildren && // #2715 the previous fragment could've been a BAILed one as a result |
| | | // of renderSlot() with no valid children |
| | | n1.dynamicChildren) { |
| | | n1.dynamicChildren && n1.dynamicChildren.length === dynamicChildren.length) { |
| | | patchBlockChildren( |
| | | n1.dynamicChildren, |
| | | dynamicChildren, |
| | |
| | | hydrateSubTree(); |
| | | } |
| | | } else { |
| | | if (root.ce && // @ts-expect-error _def is private |
| | | root.ce._def.shadowRoot !== false) { |
| | | root.ce._injectChildStyle(type); |
| | | if (root.ce && root.ce._hasShadowRoot()) { |
| | | root.ce._injectChildStyle( |
| | | type, |
| | | instance.parent ? instance.parent.type : void 0 |
| | | ); |
| | | } |
| | | if (!!(process.env.NODE_ENV !== "production")) { |
| | | startMeasure(instance, `render`); |
| | |
| | | updateComponentPreRender(instance, next, optimized); |
| | | } |
| | | nonHydratedAsyncRoot.asyncDep.then(() => { |
| | | if (!instance.isUnmounted) { |
| | | componentUpdateFn(); |
| | | } |
| | | queuePostRenderEffect(() => { |
| | | if (!instance.isUnmounted) update(); |
| | | }, parentSuspense); |
| | | }); |
| | | return; |
| | | } |
| | |
| | | const nextChild = c2[nextIndex]; |
| | | const anchorVNode = c2[nextIndex + 1]; |
| | | const anchor = nextIndex + 1 < l2 ? ( |
| | | // #13559, fallback to el placeholder for unresolved async component |
| | | anchorVNode.el || anchorVNode.placeholder |
| | | // #13559, #14173 fallback to el placeholder for unresolved async component |
| | | anchorVNode.el || resolveAsyncComponentPlaceholder(anchorVNode) |
| | | ) : parentAnchor; |
| | | if (newIndexToOldIndexMap[i] === 0) { |
| | | patch( |
| | |
| | | shapeFlag, |
| | | patchFlag, |
| | | dirs, |
| | | cacheIndex |
| | | cacheIndex, |
| | | memo |
| | | } = vnode; |
| | | if (patchFlag === -2) { |
| | | optimized = false; |
| | |
| | | remove(vnode); |
| | | } |
| | | } |
| | | if (shouldInvokeVnodeHook && (vnodeHook = props && props.onVnodeUnmounted) || shouldInvokeDirs) { |
| | | const shouldInvalidateMemo = memo != null && cacheIndex == null; |
| | | if (shouldInvokeVnodeHook && (vnodeHook = props && props.onVnodeUnmounted) || shouldInvokeDirs || shouldInvalidateMemo) { |
| | | queuePostRenderEffect(() => { |
| | | vnodeHook && invokeVNodeHook(vnodeHook, parentComponent, vnode); |
| | | shouldInvokeDirs && invokeDirectiveHook(vnode, null, parentComponent, "unmounted"); |
| | | if (shouldInvalidateMemo) { |
| | | vnode.el = null; |
| | | } |
| | | }, parentSuspense); |
| | | } |
| | | }; |
| | |
| | | }; |
| | | let isFlushing = false; |
| | | const render = (vnode, container, namespace) => { |
| | | let instance; |
| | | if (vnode == null) { |
| | | if (container._vnode) { |
| | | unmount(container._vnode, null, null, true); |
| | | instance = container._vnode.component; |
| | | } |
| | | } else { |
| | | patch( |
| | |
| | | container._vnode = vnode; |
| | | if (!isFlushing) { |
| | | isFlushing = true; |
| | | flushPreFlushCbs(); |
| | | flushPreFlushCbs(instance); |
| | | flushPostFlushCbs(); |
| | | isFlushing = false; |
| | | } |
| | |
| | | if (!shallow && c2.patchFlag !== -2) |
| | | traverseStaticChildren(c1, c2); |
| | | } |
| | | if (c2.type === Text && // avoid cached text nodes retaining detached dom nodes |
| | | c2.patchFlag !== -1) { |
| | | if (c2.type === Text) { |
| | | if (c2.patchFlag === -1) { |
| | | c2 = ch2[i] = cloneIfMounted(c2); |
| | | } |
| | | c2.el = c1.el; |
| | | } |
| | | if (c2.type === Comment && !c2.el) { |
| | |
| | | for (let i = 0; i < hooks.length; i++) |
| | | hooks[i].flags |= 8; |
| | | } |
| | | } |
| | | function resolveAsyncComponentPlaceholder(anchorVnode) { |
| | | if (anchorVnode.placeholder) { |
| | | return anchorVnode.placeholder; |
| | | } |
| | | const instance = anchorVnode.component; |
| | | if (instance) { |
| | | return resolveAsyncComponentPlaceholder(instance.subTree); |
| | | } |
| | | return null; |
| | | } |
| | | |
| | | const isSuspense = (type) => type.__isSuspense; |
| | |
| | | pendingId: suspenseId++, |
| | | timeout: typeof timeout === "number" ? timeout : -1, |
| | | activeBranch: null, |
| | | isFallbackMountPending: false, |
| | | pendingBranch: null, |
| | | isInFallback: !isHydrating, |
| | | isHydrating, |
| | |
| | | } |
| | | }; |
| | | } |
| | | if (activeBranch) { |
| | | if (activeBranch && !suspense.isFallbackMountPending) { |
| | | if (parentNode(activeBranch.el) === container2) { |
| | | anchor = next(activeBranch); |
| | | } |
| | |
| | | move(pendingBranch, container2, anchor, 0); |
| | | } |
| | | } |
| | | suspense.isFallbackMountPending = false; |
| | | setActiveBranch(suspense, pendingBranch); |
| | | suspense.pendingBranch = null; |
| | | suspense.isInFallback = false; |
| | |
| | | triggerEvent(vnode2, "onFallback"); |
| | | const anchor2 = next(activeBranch); |
| | | const mountFallback = () => { |
| | | suspense.isFallbackMountPending = false; |
| | | if (!suspense.isInFallback) { |
| | | return; |
| | | } |
| | |
| | | }; |
| | | const delayEnter = fallbackVNode.transition && fallbackVNode.transition.mode === "out-in"; |
| | | if (delayEnter) { |
| | | suspense.isFallbackMountPending = true; |
| | | activeBranch.transition.afterLeave = mountFallback; |
| | | } |
| | | suspense.isInFallback = true; |
| | |
| | | if (instance.isUnmounted || suspense.isUnmounted || suspense.pendingId !== instance.suspenseId) { |
| | | return; |
| | | } |
| | | unsetCurrentInstance(); |
| | | instance.asyncResolved = true; |
| | | const { vnode: vnode2 } = instance; |
| | | if (!!(process.env.NODE_ENV !== "production")) { |
| | |
| | | return suspensible != null && suspensible !== false; |
| | | } |
| | | |
| | | const Fragment = Symbol.for("v-fgt"); |
| | | const Text = Symbol.for("v-txt"); |
| | | const Comment = Symbol.for("v-cmt"); |
| | | const Static = Symbol.for("v-stc"); |
| | | const Fragment = /* @__PURE__ */ Symbol.for("v-fgt"); |
| | | const Text = /* @__PURE__ */ Symbol.for("v-txt"); |
| | | const Comment = /* @__PURE__ */ Symbol.for("v-cmt"); |
| | | const Static = /* @__PURE__ */ Symbol.for("v-stc"); |
| | | const blockStack = []; |
| | | let currentBlock = null; |
| | | function openBlock(disableTracking = false) { |
| | |
| | | const incoming = toMerge[key]; |
| | | if (incoming && existing !== incoming && !(isArray(existing) && existing.includes(incoming))) { |
| | | ret[key] = existing ? [].concat(existing, incoming) : incoming; |
| | | } else if (incoming == null && existing == null && // mergeProps({ 'onUpdate:modelValue': undefined }) should not retain |
| | | // the model listener. |
| | | !isModelListener(key)) { |
| | | ret[key] = incoming; |
| | | } |
| | | } else if (key !== "") { |
| | | ret[key] = toMerge[key]; |
| | |
| | | return true; |
| | | } |
| | | |
| | | const version = "3.5.25"; |
| | | const version = "3.5.32"; |
| | | const warn = !!(process.env.NODE_ENV !== "production") ? warn$1 : NOOP; |
| | | const ErrorTypeStrings = ErrorTypeStrings$1 ; |
| | | const devtools = !!(process.env.NODE_ENV !== "production") || true ? devtools$1 : void 0; |