@vue/compat 3.4.0-alpha.3 → 3.4.0-beta.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -11,8 +11,8 @@ var Vue = (function () {
11
11
  const NOOP = () => {
12
12
  };
13
13
  const NO = () => false;
14
- const onRE = /^on[^a-z]/;
15
- const isOn = (key) => onRE.test(key);
14
+ const isOn = (key) => key.charCodeAt(0) === 111 && key.charCodeAt(1) === 110 && // uppercase letter
15
+ (key.charCodeAt(2) > 122 || key.charCodeAt(2) < 97);
16
16
  const isModelListener = (key) => key.startsWith("onUpdate:");
17
17
  const extend = Object.assign;
18
18
  const remove = (arr, el) => {
@@ -97,7 +97,7 @@ var Vue = (function () {
97
97
  return _globalThis || (_globalThis = typeof globalThis !== "undefined" ? globalThis : typeof self !== "undefined" ? self : typeof window !== "undefined" ? window : typeof global !== "undefined" ? global : {});
98
98
  };
99
99
 
100
- const GLOBALS_ALLOWED = "Infinity,undefined,NaN,isFinite,isNaN,parseFloat,parseInt,decodeURI,decodeURIComponent,encodeURI,encodeURIComponent,Math,Number,Date,Array,Object,Boolean,String,RegExp,Map,Set,JSON,Intl,BigInt,console";
100
+ const GLOBALS_ALLOWED = "Infinity,undefined,NaN,isFinite,isNaN,parseFloat,parseInt,decodeURI,decodeURIComponent,encodeURI,encodeURIComponent,Math,Number,Date,Array,Object,Boolean,String,RegExp,Map,Set,JSON,Intl,BigInt,console,Error";
101
101
  const isGloballyAllowed = /* @__PURE__ */ makeMap(GLOBALS_ALLOWED);
102
102
 
103
103
  function normalizeStyle(value) {
@@ -130,6 +130,20 @@ var Vue = (function () {
130
130
  });
131
131
  return ret;
132
132
  }
133
+ function stringifyStyle(styles) {
134
+ let ret = "";
135
+ if (!styles || isString(styles)) {
136
+ return ret;
137
+ }
138
+ for (const key in styles) {
139
+ const value = styles[key];
140
+ const normalizedKey = key.startsWith(`--`) ? key : hyphenate(key);
141
+ if (isString(value) || typeof value === "number") {
142
+ ret += `${normalizedKey}:${value};`;
143
+ }
144
+ }
145
+ return ret;
146
+ }
133
147
  function normalizeClass(value) {
134
148
  let res = "";
135
149
  if (isString(value)) {
@@ -165,14 +179,25 @@ var Vue = (function () {
165
179
 
166
180
  const HTML_TAGS = "html,body,base,head,link,meta,style,title,address,article,aside,footer,header,hgroup,h1,h2,h3,h4,h5,h6,nav,section,div,dd,dl,dt,figcaption,figure,picture,hr,img,li,main,ol,p,pre,ul,a,b,abbr,bdi,bdo,br,cite,code,data,dfn,em,i,kbd,mark,q,rp,rt,ruby,s,samp,small,span,strong,sub,sup,time,u,var,wbr,area,audio,map,track,video,embed,object,param,source,canvas,script,noscript,del,ins,caption,col,colgroup,table,thead,tbody,td,th,tr,button,datalist,fieldset,form,input,label,legend,meter,optgroup,option,output,progress,select,textarea,details,dialog,menu,summary,template,blockquote,iframe,tfoot";
167
181
  const SVG_TAGS = "svg,animate,animateMotion,animateTransform,circle,clipPath,color-profile,defs,desc,discard,ellipse,feBlend,feColorMatrix,feComponentTransfer,feComposite,feConvolveMatrix,feDiffuseLighting,feDisplacementMap,feDistantLight,feDropShadow,feFlood,feFuncA,feFuncB,feFuncG,feFuncR,feGaussianBlur,feImage,feMerge,feMergeNode,feMorphology,feOffset,fePointLight,feSpecularLighting,feSpotLight,feTile,feTurbulence,filter,foreignObject,g,hatch,hatchpath,image,line,linearGradient,marker,mask,mesh,meshgradient,meshpatch,meshrow,metadata,mpath,path,pattern,polygon,polyline,radialGradient,rect,set,solidcolor,stop,switch,symbol,text,textPath,title,tspan,unknown,use,view";
182
+ const MATH_TAGS = "math,maction,annotation,annotation-xml,menclose,merror,mfenced,mfrac,mi,mmultiscripts,mn,mo,mover,mpadded,mphantom,mprescripts,mroot,mrow,ms,semantics,mspace,msqrt,mstyle,msub,msup,msubsup,mtable,mtd,mtext,mtr,munder,munderover";
168
183
  const isHTMLTag = /* @__PURE__ */ makeMap(HTML_TAGS);
169
184
  const isSVGTag = /* @__PURE__ */ makeMap(SVG_TAGS);
185
+ const isMathMLTag = /* @__PURE__ */ makeMap(MATH_TAGS);
170
186
 
171
187
  const specialBooleanAttrs = `itemscope,allowfullscreen,formnovalidate,ismap,nomodule,novalidate,readonly`;
172
188
  const isSpecialBooleanAttr = /* @__PURE__ */ makeMap(specialBooleanAttrs);
189
+ const isBooleanAttr = /* @__PURE__ */ makeMap(
190
+ specialBooleanAttrs + `,async,autofocus,autoplay,controls,default,defer,disabled,hidden,inert,loop,open,required,reversed,scoped,seamless,checked,muted,multiple,selected`
191
+ );
173
192
  function includeBooleanAttr(value) {
174
193
  return !!value || value === "";
175
194
  }
195
+ const isKnownHtmlAttr = /* @__PURE__ */ makeMap(
196
+ `accept,accept-charset,accesskey,action,align,allow,alt,async,autocapitalize,autocomplete,autofocus,autoplay,background,bgcolor,border,buffered,capture,challenge,charset,checked,cite,class,code,codebase,color,cols,colspan,content,contenteditable,contextmenu,controls,coords,crossorigin,csp,data,datetime,decoding,default,defer,dir,dirname,disabled,download,draggable,dropzone,enctype,enterkeyhint,for,form,formaction,formenctype,formmethod,formnovalidate,formtarget,headers,height,hidden,high,href,hreflang,http-equiv,icon,id,importance,inert,integrity,ismap,itemprop,keytype,kind,label,lang,language,loading,list,loop,low,manifest,max,maxlength,minlength,media,min,multiple,muted,name,novalidate,open,optimum,pattern,ping,placeholder,poster,preload,radiogroup,readonly,referrerpolicy,rel,required,reversed,rows,rowspan,sandbox,scope,scoped,selected,shape,size,sizes,slot,span,spellcheck,src,srcdoc,srclang,srcset,start,step,style,summary,tabindex,target,title,translate,type,usemap,value,width,wrap`
197
+ );
198
+ const isKnownSvgAttr = /* @__PURE__ */ makeMap(
199
+ `xmlns,accent-height,accumulate,additive,alignment-baseline,alphabetic,amplitude,arabic-form,ascent,attributeName,attributeType,azimuth,baseFrequency,baseline-shift,baseProfile,bbox,begin,bias,by,calcMode,cap-height,class,clip,clipPathUnits,clip-path,clip-rule,color,color-interpolation,color-interpolation-filters,color-profile,color-rendering,contentScriptType,contentStyleType,crossorigin,cursor,cx,cy,d,decelerate,descent,diffuseConstant,direction,display,divisor,dominant-baseline,dur,dx,dy,edgeMode,elevation,enable-background,end,exponent,fill,fill-opacity,fill-rule,filter,filterRes,filterUnits,flood-color,flood-opacity,font-family,font-size,font-size-adjust,font-stretch,font-style,font-variant,font-weight,format,from,fr,fx,fy,g1,g2,glyph-name,glyph-orientation-horizontal,glyph-orientation-vertical,glyphRef,gradientTransform,gradientUnits,hanging,height,href,hreflang,horiz-adv-x,horiz-origin-x,id,ideographic,image-rendering,in,in2,intercept,k,k1,k2,k3,k4,kernelMatrix,kernelUnitLength,kerning,keyPoints,keySplines,keyTimes,lang,lengthAdjust,letter-spacing,lighting-color,limitingConeAngle,local,marker-end,marker-mid,marker-start,markerHeight,markerUnits,markerWidth,mask,maskContentUnits,maskUnits,mathematical,max,media,method,min,mode,name,numOctaves,offset,opacity,operator,order,orient,orientation,origin,overflow,overline-position,overline-thickness,panose-1,paint-order,path,pathLength,patternContentUnits,patternTransform,patternUnits,ping,pointer-events,points,pointsAtX,pointsAtY,pointsAtZ,preserveAlpha,preserveAspectRatio,primitiveUnits,r,radius,referrerPolicy,refX,refY,rel,rendering-intent,repeatCount,repeatDur,requiredExtensions,requiredFeatures,restart,result,rotate,rx,ry,scale,seed,shape-rendering,slope,spacing,specularConstant,specularExponent,speed,spreadMethod,startOffset,stdDeviation,stemh,stemv,stitchTiles,stop-color,stop-opacity,strikethrough-position,strikethrough-thickness,string,stroke,stroke-dasharray,stroke-dashoffset,stroke-linecap,stroke-linejoin,stroke-miterlimit,stroke-opacity,stroke-width,style,surfaceScale,systemLanguage,tabindex,tableValues,target,targetX,targetY,text-anchor,text-decoration,text-rendering,textLength,to,transform,transform-origin,type,u1,u2,underline-position,underline-thickness,unicode,unicode-bidi,unicode-range,units-per-em,v-alphabetic,v-hanging,v-ideographic,v-mathematical,values,vector-effect,version,vert-adv-y,vert-origin-x,vert-origin-y,viewBox,viewTarget,visibility,width,widths,word-spacing,writing-mode,x,x-height,x1,x2,xChannelSelector,xlink:actuate,xlink:arcrole,xlink:href,xlink:role,xlink:show,xlink:title,xlink:type,xmlns:xlink,xml:base,xml:lang,xml:space,y,y1,y2,yChannelSelector,z,zoomAndPan`
200
+ );
176
201
 
177
202
  function looseCompareArrays(a, b) {
178
203
  if (a.length !== b.length)
@@ -234,20 +259,29 @@ var Vue = (function () {
234
259
  return replacer(_key, val.value);
235
260
  } else if (isMap(val)) {
236
261
  return {
237
- [`Map(${val.size})`]: [...val.entries()].reduce((entries, [key, val2]) => {
238
- entries[`${key} =>`] = val2;
239
- return entries;
240
- }, {})
262
+ [`Map(${val.size})`]: [...val.entries()].reduce(
263
+ (entries, [key, val2], i) => {
264
+ entries[stringifySymbol(key, i) + " =>"] = val2;
265
+ return entries;
266
+ },
267
+ {}
268
+ )
241
269
  };
242
270
  } else if (isSet(val)) {
243
271
  return {
244
- [`Set(${val.size})`]: [...val.values()]
272
+ [`Set(${val.size})`]: [...val.values()].map((v) => stringifySymbol(v))
245
273
  };
274
+ } else if (isSymbol(val)) {
275
+ return stringifySymbol(val);
246
276
  } else if (isObject(val) && !isArray(val) && !isPlainObject(val)) {
247
277
  return String(val);
248
278
  }
249
279
  return val;
250
280
  };
281
+ const stringifySymbol = (v, i = "") => {
282
+ var _a;
283
+ return isSymbol(v) ? `Symbol(${(_a = v.description) != null ? _a : i})` : v;
284
+ };
251
285
 
252
286
  function warn$1(msg, ...args) {
253
287
  console.warn(`[Vue warn] ${msg}`, ...args);
@@ -696,8 +730,13 @@ var Vue = (function () {
696
730
  return isReadonly2;
697
731
  } else if (key === "__v_isShallow") {
698
732
  return shallow;
699
- } else if (key === "__v_raw" && receiver === (isReadonly2 ? shallow ? shallowReadonlyMap : readonlyMap : shallow ? shallowReactiveMap : reactiveMap).get(target)) {
700
- return target;
733
+ } else if (key === "__v_raw") {
734
+ if (receiver === (isReadonly2 ? shallow ? shallowReadonlyMap : readonlyMap : shallow ? shallowReactiveMap : reactiveMap).get(target) || // receiver is not the reactive proxy, but has the same prototype
735
+ // this means the reciever is a user proxy of the reactive proxy
736
+ Object.getPrototypeOf(target) === Object.getPrototypeOf(receiver)) {
737
+ return target;
738
+ }
739
+ return;
701
740
  }
702
741
  const targetIsArray = isArray(target);
703
742
  if (!isReadonly2) {
@@ -733,17 +772,19 @@ var Vue = (function () {
733
772
  }
734
773
  set(target, key, value, receiver) {
735
774
  let oldValue = target[key];
736
- if (isReadonly(oldValue) && isRef(oldValue) && !isRef(value)) {
737
- return false;
738
- }
739
775
  if (!this._shallow) {
776
+ const isOldValueReadonly = isReadonly(oldValue);
740
777
  if (!isShallow(value) && !isReadonly(value)) {
741
778
  oldValue = toRaw(oldValue);
742
779
  value = toRaw(value);
743
780
  }
744
781
  if (!isArray(target) && isRef(oldValue) && !isRef(value)) {
745
- oldValue.value = value;
746
- return true;
782
+ if (isOldValueReadonly) {
783
+ return false;
784
+ } else {
785
+ oldValue.value = value;
786
+ return true;
787
+ }
747
788
  }
748
789
  }
749
790
  const hadKey = isArray(target) && isIntegerKey(key) ? Number(key) < target.length : hasOwn(target, key);
@@ -1436,6 +1477,18 @@ var Vue = (function () {
1436
1477
  return isRef(val) ? val : new ObjectRefImpl(source, key, defaultValue);
1437
1478
  }
1438
1479
 
1480
+ const TrackOpTypes = {
1481
+ "GET": "get",
1482
+ "HAS": "has",
1483
+ "ITERATE": "iterate"
1484
+ };
1485
+ const TriggerOpTypes = {
1486
+ "SET": "set",
1487
+ "ADD": "add",
1488
+ "DELETE": "delete",
1489
+ "CLEAR": "clear"
1490
+ };
1491
+
1439
1492
  const stack = [];
1440
1493
  function pushWarningContext(vnode) {
1441
1494
  stack.push(vnode);
@@ -1550,6 +1603,38 @@ var Vue = (function () {
1550
1603
  }
1551
1604
  }
1552
1605
 
1606
+ const ErrorCodes = {
1607
+ "SETUP_FUNCTION": 0,
1608
+ "0": "SETUP_FUNCTION",
1609
+ "RENDER_FUNCTION": 1,
1610
+ "1": "RENDER_FUNCTION",
1611
+ "WATCH_GETTER": 2,
1612
+ "2": "WATCH_GETTER",
1613
+ "WATCH_CALLBACK": 3,
1614
+ "3": "WATCH_CALLBACK",
1615
+ "WATCH_CLEANUP": 4,
1616
+ "4": "WATCH_CLEANUP",
1617
+ "NATIVE_EVENT_HANDLER": 5,
1618
+ "5": "NATIVE_EVENT_HANDLER",
1619
+ "COMPONENT_EVENT_HANDLER": 6,
1620
+ "6": "COMPONENT_EVENT_HANDLER",
1621
+ "VNODE_HOOK": 7,
1622
+ "7": "VNODE_HOOK",
1623
+ "DIRECTIVE_HOOK": 8,
1624
+ "8": "DIRECTIVE_HOOK",
1625
+ "TRANSITION_HOOK": 9,
1626
+ "9": "TRANSITION_HOOK",
1627
+ "APP_ERROR_HANDLER": 10,
1628
+ "10": "APP_ERROR_HANDLER",
1629
+ "APP_WARN_HANDLER": 11,
1630
+ "11": "APP_WARN_HANDLER",
1631
+ "FUNCTION_REF": 12,
1632
+ "12": "FUNCTION_REF",
1633
+ "ASYNC_COMPONENT_LOADER": 13,
1634
+ "13": "ASYNC_COMPONENT_LOADER",
1635
+ "SCHEDULER": 14,
1636
+ "14": "SCHEDULER"
1637
+ };
1553
1638
  const ErrorTypeStrings$1 = {
1554
1639
  ["sp"]: "serverPrefetch hook",
1555
1640
  ["bc"]: "beforeCreate hook",
@@ -1721,13 +1806,16 @@ var Vue = (function () {
1721
1806
  }
1722
1807
  queueFlush();
1723
1808
  }
1724
- function flushPreFlushCbs(seen, i = isFlushing ? flushIndex + 1 : 0) {
1809
+ function flushPreFlushCbs(instance, seen, i = isFlushing ? flushIndex + 1 : 0) {
1725
1810
  {
1726
1811
  seen = seen || /* @__PURE__ */ new Map();
1727
1812
  }
1728
1813
  for (; i < queue.length; i++) {
1729
1814
  const cb = queue[i];
1730
1815
  if (cb && cb.pre) {
1816
+ if (instance && cb.id !== instance.uid) {
1817
+ continue;
1818
+ }
1731
1819
  if (checkRecursiveUpdates(seen, cb)) {
1732
1820
  continue;
1733
1821
  }
@@ -2032,6 +2120,50 @@ var Vue = (function () {
2032
2120
  );
2033
2121
  }
2034
2122
 
2123
+ const DeprecationTypes$1 = {
2124
+ "GLOBAL_MOUNT": "GLOBAL_MOUNT",
2125
+ "GLOBAL_MOUNT_CONTAINER": "GLOBAL_MOUNT_CONTAINER",
2126
+ "GLOBAL_EXTEND": "GLOBAL_EXTEND",
2127
+ "GLOBAL_PROTOTYPE": "GLOBAL_PROTOTYPE",
2128
+ "GLOBAL_SET": "GLOBAL_SET",
2129
+ "GLOBAL_DELETE": "GLOBAL_DELETE",
2130
+ "GLOBAL_OBSERVABLE": "GLOBAL_OBSERVABLE",
2131
+ "GLOBAL_PRIVATE_UTIL": "GLOBAL_PRIVATE_UTIL",
2132
+ "CONFIG_SILENT": "CONFIG_SILENT",
2133
+ "CONFIG_DEVTOOLS": "CONFIG_DEVTOOLS",
2134
+ "CONFIG_KEY_CODES": "CONFIG_KEY_CODES",
2135
+ "CONFIG_PRODUCTION_TIP": "CONFIG_PRODUCTION_TIP",
2136
+ "CONFIG_IGNORED_ELEMENTS": "CONFIG_IGNORED_ELEMENTS",
2137
+ "CONFIG_WHITESPACE": "CONFIG_WHITESPACE",
2138
+ "CONFIG_OPTION_MERGE_STRATS": "CONFIG_OPTION_MERGE_STRATS",
2139
+ "INSTANCE_SET": "INSTANCE_SET",
2140
+ "INSTANCE_DELETE": "INSTANCE_DELETE",
2141
+ "INSTANCE_DESTROY": "INSTANCE_DESTROY",
2142
+ "INSTANCE_EVENT_EMITTER": "INSTANCE_EVENT_EMITTER",
2143
+ "INSTANCE_EVENT_HOOKS": "INSTANCE_EVENT_HOOKS",
2144
+ "INSTANCE_CHILDREN": "INSTANCE_CHILDREN",
2145
+ "INSTANCE_LISTENERS": "INSTANCE_LISTENERS",
2146
+ "INSTANCE_SCOPED_SLOTS": "INSTANCE_SCOPED_SLOTS",
2147
+ "INSTANCE_ATTRS_CLASS_STYLE": "INSTANCE_ATTRS_CLASS_STYLE",
2148
+ "OPTIONS_DATA_FN": "OPTIONS_DATA_FN",
2149
+ "OPTIONS_DATA_MERGE": "OPTIONS_DATA_MERGE",
2150
+ "OPTIONS_BEFORE_DESTROY": "OPTIONS_BEFORE_DESTROY",
2151
+ "OPTIONS_DESTROYED": "OPTIONS_DESTROYED",
2152
+ "WATCH_ARRAY": "WATCH_ARRAY",
2153
+ "PROPS_DEFAULT_THIS": "PROPS_DEFAULT_THIS",
2154
+ "V_ON_KEYCODE_MODIFIER": "V_ON_KEYCODE_MODIFIER",
2155
+ "CUSTOM_DIR": "CUSTOM_DIR",
2156
+ "ATTR_FALSE_VALUE": "ATTR_FALSE_VALUE",
2157
+ "ATTR_ENUMERATED_COERCION": "ATTR_ENUMERATED_COERCION",
2158
+ "TRANSITION_CLASSES": "TRANSITION_CLASSES",
2159
+ "TRANSITION_GROUP_ROOT": "TRANSITION_GROUP_ROOT",
2160
+ "COMPONENT_ASYNC": "COMPONENT_ASYNC",
2161
+ "COMPONENT_FUNCTIONAL": "COMPONENT_FUNCTIONAL",
2162
+ "COMPONENT_V_MODEL": "COMPONENT_V_MODEL",
2163
+ "RENDER_FUNCTION": "RENDER_FUNCTION",
2164
+ "FILTERS": "FILTERS",
2165
+ "PRIVATE_APIS": "PRIVATE_APIS"
2166
+ };
2035
2167
  const deprecationData = {
2036
2168
  ["GLOBAL_MOUNT"]: {
2037
2169
  message: `The global app bootstrapping API has changed: vm.$mount() and the "el" option have been removed. Use createApp(RootComponent).mount() instead.`,
@@ -2960,9 +3092,17 @@ Details: https://v3-migration.vuejs.org/breaking-changes/migration-build.html`
2960
3092
  return false;
2961
3093
  }
2962
3094
  function updateHOCHostEl({ vnode, parent }, el) {
2963
- while (parent && parent.subTree === vnode) {
2964
- (vnode = parent.vnode).el = el;
2965
- parent = parent.parent;
3095
+ while (parent) {
3096
+ const root = parent.subTree;
3097
+ if (root.suspense && root.suspense.activeBranch === vnode) {
3098
+ root.el = vnode.el;
3099
+ }
3100
+ if (root === vnode) {
3101
+ (vnode = parent.vnode).el = el;
3102
+ parent = parent.parent;
3103
+ } else {
3104
+ break;
3105
+ }
2966
3106
  }
2967
3107
  }
2968
3108
 
@@ -3026,6 +3166,7 @@ If this is a native custom element, make sure to exclude it from component resol
3026
3166
  }
3027
3167
 
3028
3168
  const isSuspense = (type) => type.__isSuspense;
3169
+ let suspenseId = 0;
3029
3170
  const SuspenseImpl = {
3030
3171
  name: "Suspense",
3031
3172
  // In order to make Suspense tree-shakable, we need to avoid importing it
@@ -3033,7 +3174,7 @@ If this is a native custom element, make sure to exclude it from component resol
3033
3174
  // on a vnode's type and calls the `process` method, passing in renderer
3034
3175
  // internals.
3035
3176
  __isSuspense: true,
3036
- process(n1, n2, container, anchor, parentComponent, parentSuspense, isSVG, slotScopeIds, optimized, rendererInternals) {
3177
+ process(n1, n2, container, anchor, parentComponent, parentSuspense, namespace, slotScopeIds, optimized, rendererInternals) {
3037
3178
  if (n1 == null) {
3038
3179
  mountSuspense(
3039
3180
  n2,
@@ -3041,7 +3182,7 @@ If this is a native custom element, make sure to exclude it from component resol
3041
3182
  anchor,
3042
3183
  parentComponent,
3043
3184
  parentSuspense,
3044
- isSVG,
3185
+ namespace,
3045
3186
  slotScopeIds,
3046
3187
  optimized,
3047
3188
  rendererInternals
@@ -3053,7 +3194,7 @@ If this is a native custom element, make sure to exclude it from component resol
3053
3194
  container,
3054
3195
  anchor,
3055
3196
  parentComponent,
3056
- isSVG,
3197
+ namespace,
3057
3198
  slotScopeIds,
3058
3199
  optimized,
3059
3200
  rendererInternals
@@ -3071,7 +3212,7 @@ If this is a native custom element, make sure to exclude it from component resol
3071
3212
  eventListener();
3072
3213
  }
3073
3214
  }
3074
- function mountSuspense(vnode, container, anchor, parentComponent, parentSuspense, isSVG, slotScopeIds, optimized, rendererInternals) {
3215
+ function mountSuspense(vnode, container, anchor, parentComponent, parentSuspense, namespace, slotScopeIds, optimized, rendererInternals) {
3075
3216
  const {
3076
3217
  p: patch,
3077
3218
  o: { createElement }
@@ -3084,7 +3225,7 @@ If this is a native custom element, make sure to exclude it from component resol
3084
3225
  container,
3085
3226
  hiddenContainer,
3086
3227
  anchor,
3087
- isSVG,
3228
+ namespace,
3088
3229
  slotScopeIds,
3089
3230
  optimized,
3090
3231
  rendererInternals
@@ -3096,7 +3237,7 @@ If this is a native custom element, make sure to exclude it from component resol
3096
3237
  null,
3097
3238
  parentComponent,
3098
3239
  suspense,
3099
- isSVG,
3240
+ namespace,
3100
3241
  slotScopeIds
3101
3242
  );
3102
3243
  if (suspense.deps > 0) {
@@ -3110,7 +3251,7 @@ If this is a native custom element, make sure to exclude it from component resol
3110
3251
  parentComponent,
3111
3252
  null,
3112
3253
  // fallback tree will not have suspense context
3113
- isSVG,
3254
+ namespace,
3114
3255
  slotScopeIds
3115
3256
  );
3116
3257
  setActiveBranch(suspense, vnode.ssFallback);
@@ -3118,7 +3259,7 @@ If this is a native custom element, make sure to exclude it from component resol
3118
3259
  suspense.resolve(false, true);
3119
3260
  }
3120
3261
  }
3121
- function patchSuspense(n1, n2, container, anchor, parentComponent, isSVG, slotScopeIds, optimized, { p: patch, um: unmount, o: { createElement } }) {
3262
+ function patchSuspense(n1, n2, container, anchor, parentComponent, namespace, slotScopeIds, optimized, { p: patch, um: unmount, o: { createElement } }) {
3122
3263
  const suspense = n2.suspense = n1.suspense;
3123
3264
  suspense.vnode = n2;
3124
3265
  n2.el = n1.el;
@@ -3135,29 +3276,31 @@ If this is a native custom element, make sure to exclude it from component resol
3135
3276
  null,
3136
3277
  parentComponent,
3137
3278
  suspense,
3138
- isSVG,
3279
+ namespace,
3139
3280
  slotScopeIds,
3140
3281
  optimized
3141
3282
  );
3142
3283
  if (suspense.deps <= 0) {
3143
3284
  suspense.resolve();
3144
3285
  } else if (isInFallback) {
3145
- patch(
3146
- activeBranch,
3147
- newFallback,
3148
- container,
3149
- anchor,
3150
- parentComponent,
3151
- null,
3152
- // fallback tree will not have suspense context
3153
- isSVG,
3154
- slotScopeIds,
3155
- optimized
3156
- );
3157
- setActiveBranch(suspense, newFallback);
3286
+ if (!isHydrating) {
3287
+ patch(
3288
+ activeBranch,
3289
+ newFallback,
3290
+ container,
3291
+ anchor,
3292
+ parentComponent,
3293
+ null,
3294
+ // fallback tree will not have suspense context
3295
+ namespace,
3296
+ slotScopeIds,
3297
+ optimized
3298
+ );
3299
+ setActiveBranch(suspense, newFallback);
3300
+ }
3158
3301
  }
3159
3302
  } else {
3160
- suspense.pendingId++;
3303
+ suspense.pendingId = suspenseId++;
3161
3304
  if (isHydrating) {
3162
3305
  suspense.isHydrating = false;
3163
3306
  suspense.activeBranch = pendingBranch;
@@ -3175,7 +3318,7 @@ If this is a native custom element, make sure to exclude it from component resol
3175
3318
  null,
3176
3319
  parentComponent,
3177
3320
  suspense,
3178
- isSVG,
3321
+ namespace,
3179
3322
  slotScopeIds,
3180
3323
  optimized
3181
3324
  );
@@ -3190,7 +3333,7 @@ If this is a native custom element, make sure to exclude it from component resol
3190
3333
  parentComponent,
3191
3334
  null,
3192
3335
  // fallback tree will not have suspense context
3193
- isSVG,
3336
+ namespace,
3194
3337
  slotScopeIds,
3195
3338
  optimized
3196
3339
  );
@@ -3204,7 +3347,7 @@ If this is a native custom element, make sure to exclude it from component resol
3204
3347
  anchor,
3205
3348
  parentComponent,
3206
3349
  suspense,
3207
- isSVG,
3350
+ namespace,
3208
3351
  slotScopeIds,
3209
3352
  optimized
3210
3353
  );
@@ -3217,7 +3360,7 @@ If this is a native custom element, make sure to exclude it from component resol
3217
3360
  null,
3218
3361
  parentComponent,
3219
3362
  suspense,
3220
- isSVG,
3363
+ namespace,
3221
3364
  slotScopeIds,
3222
3365
  optimized
3223
3366
  );
@@ -3235,7 +3378,7 @@ If this is a native custom element, make sure to exclude it from component resol
3235
3378
  anchor,
3236
3379
  parentComponent,
3237
3380
  suspense,
3238
- isSVG,
3381
+ namespace,
3239
3382
  slotScopeIds,
3240
3383
  optimized
3241
3384
  );
@@ -3243,7 +3386,11 @@ If this is a native custom element, make sure to exclude it from component resol
3243
3386
  } else {
3244
3387
  triggerEvent(n2, "onPending");
3245
3388
  suspense.pendingBranch = newBranch;
3246
- suspense.pendingId++;
3389
+ if (newBranch.shapeFlag & 512) {
3390
+ suspense.pendingId = newBranch.component.suspenseId;
3391
+ } else {
3392
+ suspense.pendingId = suspenseId++;
3393
+ }
3247
3394
  patch(
3248
3395
  null,
3249
3396
  newBranch,
@@ -3251,7 +3398,7 @@ If this is a native custom element, make sure to exclude it from component resol
3251
3398
  null,
3252
3399
  parentComponent,
3253
3400
  suspense,
3254
- isSVG,
3401
+ namespace,
3255
3402
  slotScopeIds,
3256
3403
  optimized
3257
3404
  );
@@ -3273,7 +3420,7 @@ If this is a native custom element, make sure to exclude it from component resol
3273
3420
  }
3274
3421
  }
3275
3422
  let hasWarned = false;
3276
- function createSuspenseBoundary(vnode, parentSuspense, parentComponent, container, hiddenContainer, anchor, isSVG, slotScopeIds, optimized, rendererInternals, isHydrating = false) {
3423
+ function createSuspenseBoundary(vnode, parentSuspense, parentComponent, container, hiddenContainer, anchor, namespace, slotScopeIds, optimized, rendererInternals, isHydrating = false) {
3277
3424
  if (!hasWarned) {
3278
3425
  hasWarned = true;
3279
3426
  console[console.info ? "info" : "log"](
@@ -3303,7 +3450,7 @@ If this is a native custom element, make sure to exclude it from component resol
3303
3450
  vnode,
3304
3451
  parent: parentSuspense,
3305
3452
  parentComponent,
3306
- isSVG,
3453
+ namespace,
3307
3454
  container,
3308
3455
  hiddenContainer,
3309
3456
  anchor,
@@ -3312,7 +3459,7 @@ If this is a native custom element, make sure to exclude it from component resol
3312
3459
  timeout: typeof timeout === "number" ? timeout : -1,
3313
3460
  activeBranch: null,
3314
3461
  pendingBranch: null,
3315
- isInFallback: true,
3462
+ isInFallback: !isHydrating,
3316
3463
  isHydrating,
3317
3464
  isUnmounted: false,
3318
3465
  effects: [],
@@ -3346,7 +3493,12 @@ If this is a native custom element, make sure to exclude it from component resol
3346
3493
  if (delayEnter) {
3347
3494
  activeBranch.transition.afterLeave = () => {
3348
3495
  if (pendingId === suspense.pendingId) {
3349
- move(pendingBranch, container2, anchor2, 0);
3496
+ move(
3497
+ pendingBranch,
3498
+ container2,
3499
+ next(activeBranch),
3500
+ 0
3501
+ );
3350
3502
  queuePostFlushCb(effects);
3351
3503
  }
3352
3504
  };
@@ -3391,7 +3543,7 @@ If this is a native custom element, make sure to exclude it from component resol
3391
3543
  if (!suspense.pendingBranch) {
3392
3544
  return;
3393
3545
  }
3394
- const { vnode: vnode2, activeBranch, parentComponent: parentComponent2, container: container2, isSVG: isSVG2 } = suspense;
3546
+ const { vnode: vnode2, activeBranch, parentComponent: parentComponent2, container: container2, namespace: namespace2 } = suspense;
3395
3547
  triggerEvent(vnode2, "onFallback");
3396
3548
  const anchor2 = next(activeBranch);
3397
3549
  const mountFallback = () => {
@@ -3406,7 +3558,7 @@ If this is a native custom element, make sure to exclude it from component resol
3406
3558
  parentComponent2,
3407
3559
  null,
3408
3560
  // fallback tree will not have suspense context
3409
- isSVG2,
3561
+ namespace2,
3410
3562
  slotScopeIds,
3411
3563
  optimized
3412
3564
  );
@@ -3469,7 +3621,7 @@ If this is a native custom element, make sure to exclude it from component resol
3469
3621
  // consider the comment placeholder case.
3470
3622
  hydratedEl ? null : next(instance.subTree),
3471
3623
  suspense,
3472
- isSVG,
3624
+ namespace,
3473
3625
  optimized
3474
3626
  );
3475
3627
  if (placeholder) {
@@ -3506,7 +3658,7 @@ If this is a native custom element, make sure to exclude it from component resol
3506
3658
  };
3507
3659
  return suspense;
3508
3660
  }
3509
- function hydrateSuspense(node, vnode, parentComponent, parentSuspense, isSVG, slotScopeIds, optimized, rendererInternals, hydrateNode) {
3661
+ function hydrateSuspense(node, vnode, parentComponent, parentSuspense, namespace, slotScopeIds, optimized, rendererInternals, hydrateNode) {
3510
3662
  const suspense = vnode.suspense = createSuspenseBoundary(
3511
3663
  vnode,
3512
3664
  parentSuspense,
@@ -3514,7 +3666,7 @@ If this is a native custom element, make sure to exclude it from component resol
3514
3666
  node.parentNode,
3515
3667
  document.createElement("div"),
3516
3668
  null,
3517
- isSVG,
3669
+ namespace,
3518
3670
  slotScopeIds,
3519
3671
  optimized,
3520
3672
  rendererInternals,
@@ -4456,7 +4608,7 @@ If this is a native custom element, make sure to exclude it from component resol
4456
4608
  }
4457
4609
  } = sharedContext;
4458
4610
  const storageContainer = createElement("div");
4459
- sharedContext.activate = (vnode, container, anchor, isSVG, optimized) => {
4611
+ sharedContext.activate = (vnode, container, anchor, namespace, optimized) => {
4460
4612
  const instance2 = vnode.component;
4461
4613
  move(vnode, container, anchor, 0, parentSuspense);
4462
4614
  patch(
@@ -4466,7 +4618,7 @@ If this is a native custom element, make sure to exclude it from component resol
4466
4618
  anchor,
4467
4619
  instance2,
4468
4620
  parentSuspense,
4469
- isSVG,
4621
+ namespace,
4470
4622
  vnode.slotScopeIds,
4471
4623
  optimized
4472
4624
  );
@@ -5654,7 +5806,7 @@ If this is a native custom element, make sure to exclude it from component resol
5654
5806
  function useAttrs() {
5655
5807
  return getContext().attrs;
5656
5808
  }
5657
- function useModel(props, name, options) {
5809
+ function useModel(props, name) {
5658
5810
  const i = getCurrentInstance();
5659
5811
  if (!i) {
5660
5812
  warn(`useModel() called without active instance.`);
@@ -5664,29 +5816,24 @@ If this is a native custom element, make sure to exclude it from component resol
5664
5816
  warn(`useModel() called with prop "${name}" which is not declared.`);
5665
5817
  return ref();
5666
5818
  }
5667
- if (options && options.local) {
5668
- const proxy = ref(props[name]);
5669
- watch(
5670
- () => props[name],
5671
- (v) => proxy.value = v
5672
- );
5673
- watch(proxy, (value) => {
5674
- if (value !== props[name]) {
5675
- i.emit(`update:${name}`, value);
5676
- }
5677
- });
5678
- return proxy;
5679
- } else {
5680
- return {
5681
- __v_isRef: true,
5682
- get value() {
5683
- return props[name];
5684
- },
5685
- set value(value) {
5686
- i.emit(`update:${name}`, value);
5819
+ let localValue;
5820
+ watchSyncEffect(() => {
5821
+ localValue = props[name];
5822
+ });
5823
+ return customRef((track, trigger) => ({
5824
+ get() {
5825
+ track();
5826
+ return localValue;
5827
+ },
5828
+ set(value) {
5829
+ const rawProps = i.vnode.props;
5830
+ if (!(rawProps && name in rawProps) && hasChanged(value, localValue)) {
5831
+ localValue = value;
5832
+ trigger();
5687
5833
  }
5688
- };
5689
- }
5834
+ i.emit(`update:${name}`, value);
5835
+ }
5836
+ }));
5690
5837
  }
5691
5838
  function getContext() {
5692
5839
  const i = getCurrentInstance();
@@ -6260,7 +6407,7 @@ If this is a native custom element, make sure to exclude it from component resol
6260
6407
  return vm;
6261
6408
  }
6262
6409
  }
6263
- Vue.version = `2.6.14-compat:${"3.4.0-alpha.3"}`;
6410
+ Vue.version = `2.6.14-compat:${"3.4.0-beta.1"}`;
6264
6411
  Vue.config = singletonApp.config;
6265
6412
  Vue.use = (p, ...options) => {
6266
6413
  if (p && isFunction(p.install)) {
@@ -6505,12 +6652,16 @@ If this is a native custom element, make sure to exclude it from component resol
6505
6652
  } else {
6506
6653
  container = selectorOrEl || document.createElement("div");
6507
6654
  }
6508
- const isSVG = container instanceof SVGElement;
6655
+ let namespace;
6656
+ if (container instanceof SVGElement)
6657
+ namespace = "svg";
6658
+ else if (typeof MathMLElement === "function" && container instanceof MathMLElement)
6659
+ namespace = "mathml";
6509
6660
  {
6510
6661
  context.reload = () => {
6511
6662
  const cloned = cloneVNode(vnode);
6512
6663
  cloned.component = null;
6513
- render(cloned, container, isSVG);
6664
+ render(cloned, container, namespace);
6514
6665
  };
6515
6666
  }
6516
6667
  if (hasNoRender && instance.render === emptyRender) {
@@ -6533,7 +6684,7 @@ If this is a native custom element, make sure to exclude it from component resol
6533
6684
  );
6534
6685
  }
6535
6686
  container.innerHTML = "";
6536
- render(vnode, container, isSVG);
6687
+ render(vnode, container, namespace);
6537
6688
  if (container instanceof Element) {
6538
6689
  container.removeAttribute("v-cloak");
6539
6690
  container.setAttribute("data-v-app", "");
@@ -6661,18 +6812,6 @@ If this is a native custom element, make sure to exclude it from component resol
6661
6812
  rootProps = null;
6662
6813
  }
6663
6814
  const context = createAppContext();
6664
- {
6665
- Object.defineProperty(context.config, "unwrapInjectedRef", {
6666
- get() {
6667
- return true;
6668
- },
6669
- set() {
6670
- warn(
6671
- `app.config.unwrapInjectedRef has been deprecated. 3.3 now always unwraps injected refs in Options API.`
6672
- );
6673
- }
6674
- });
6675
- }
6676
6815
  const installedPlugins = /* @__PURE__ */ new WeakSet();
6677
6816
  let isMounted = false;
6678
6817
  const app = context.app = {
@@ -6747,7 +6886,7 @@ If this is a native custom element, make sure to exclude it from component resol
6747
6886
  context.directives[name] = directive;
6748
6887
  return app;
6749
6888
  },
6750
- mount(rootContainer, isHydrate, isSVG) {
6889
+ mount(rootContainer, isHydrate, namespace) {
6751
6890
  if (!isMounted) {
6752
6891
  if (rootContainer.__vue_app__) {
6753
6892
  warn(
@@ -6757,15 +6896,24 @@ If this is a native custom element, make sure to exclude it from component resol
6757
6896
  }
6758
6897
  const vnode = createVNode(rootComponent, rootProps);
6759
6898
  vnode.appContext = context;
6899
+ if (namespace === true) {
6900
+ namespace = "svg";
6901
+ } else if (namespace === false) {
6902
+ namespace = void 0;
6903
+ }
6760
6904
  {
6761
6905
  context.reload = () => {
6762
- render(cloneVNode(vnode), rootContainer, isSVG);
6906
+ render(
6907
+ cloneVNode(vnode),
6908
+ rootContainer,
6909
+ namespace
6910
+ );
6763
6911
  };
6764
6912
  }
6765
6913
  if (isHydrate && hydrate) {
6766
6914
  hydrate(vnode, rootContainer);
6767
6915
  } else {
6768
- render(vnode, rootContainer, isSVG);
6916
+ render(vnode, rootContainer, namespace);
6769
6917
  }
6770
6918
  isMounted = true;
6771
6919
  app._container = rootContainer;
@@ -7230,11 +7378,12 @@ If you want to remount the same app, move your app creation logic into a factory
7230
7378
  key,
7231
7379
  resolvedValues[key],
7232
7380
  opt,
7381
+ shallowReadonly(resolvedValues) ,
7233
7382
  !hasOwn(rawProps, key) && !hasOwn(rawProps, hyphenate(key))
7234
7383
  );
7235
7384
  }
7236
7385
  }
7237
- function validateProp(name, value, prop, isAbsent) {
7386
+ function validateProp(name, value, prop, props, isAbsent) {
7238
7387
  const { type, required, validator, skipCheck } = prop;
7239
7388
  if (required && isAbsent) {
7240
7389
  warn('Missing required prop: "' + name + '"');
@@ -7257,7 +7406,7 @@ If you want to remount the same app, move your app creation logic into a factory
7257
7406
  return;
7258
7407
  }
7259
7408
  }
7260
- if (validator && !validator(value)) {
7409
+ if (validator && !validator(value, props)) {
7261
7410
  warn('Invalid prop: custom validator check failed for prop "' + name + '".');
7262
7411
  }
7263
7412
  }
@@ -7515,7 +7664,15 @@ If you want to remount the same app, move your app creation logic into a factory
7515
7664
  }
7516
7665
 
7517
7666
  let hasMismatch = false;
7518
- const isSVGContainer = (container) => /svg/.test(container.namespaceURI) && container.tagName !== "foreignObject";
7667
+ const isSVGContainer = (container) => container.namespaceURI.includes("svg") && container.tagName !== "foreignObject";
7668
+ const isMathMLContainer = (container) => container.namespaceURI.includes("MathML");
7669
+ const getContainerType = (container) => {
7670
+ if (isSVGContainer(container))
7671
+ return "svg";
7672
+ if (isMathMLContainer(container))
7673
+ return "mathml";
7674
+ return void 0;
7675
+ };
7519
7676
  const isComment = (node) => node.nodeType === 8 /* COMMENT */;
7520
7677
  function createHydrationFunctions(rendererInternals) {
7521
7678
  const {
@@ -7594,11 +7751,13 @@ If you want to remount the same app, move your app creation logic into a factory
7594
7751
  if (node.data !== vnode.children) {
7595
7752
  hasMismatch = true;
7596
7753
  warn(
7597
- `Hydration text mismatch:
7598
- - Server rendered: ${JSON.stringify(
7754
+ `Hydration text mismatch in`,
7755
+ node.parentNode,
7756
+ `
7757
+ - rendered on server: ${JSON.stringify(
7599
7758
  node.data
7600
7759
  )}
7601
- - Client rendered: ${JSON.stringify(vnode.children)}`
7760
+ - expected on client: ${JSON.stringify(vnode.children)}`
7602
7761
  );
7603
7762
  node.data = vnode.children;
7604
7763
  }
@@ -7684,7 +7843,7 @@ If you want to remount the same app, move your app creation logic into a factory
7684
7843
  null,
7685
7844
  parentComponent,
7686
7845
  parentSuspense,
7687
- isSVGContainer(container),
7846
+ getContainerType(container),
7688
7847
  optimized
7689
7848
  );
7690
7849
  if (isAsyncWrapper(vnode)) {
@@ -7719,7 +7878,7 @@ If you want to remount the same app, move your app creation logic into a factory
7719
7878
  vnode,
7720
7879
  parentComponent,
7721
7880
  parentSuspense,
7722
- isSVGContainer(parentNode(node)),
7881
+ getContainerType(parentNode(node)),
7723
7882
  slotScopeIds,
7724
7883
  optimized,
7725
7884
  rendererInternals,
@@ -7742,38 +7901,6 @@ If you want to remount the same app, move your app creation logic into a factory
7742
7901
  if (dirs) {
7743
7902
  invokeDirectiveHook(vnode, null, parentComponent, "created");
7744
7903
  }
7745
- if (props) {
7746
- if (forcePatch || !optimized || patchFlag & (16 | 32)) {
7747
- for (const key in props) {
7748
- if (forcePatch && (key.endsWith("value") || key === "indeterminate") || isOn(key) && !isReservedProp(key) || // force hydrate v-bind with .prop modifiers
7749
- key[0] === ".") {
7750
- patchProp(
7751
- el,
7752
- key,
7753
- null,
7754
- props[key],
7755
- false,
7756
- void 0,
7757
- parentComponent
7758
- );
7759
- }
7760
- }
7761
- } else if (props.onClick) {
7762
- patchProp(
7763
- el,
7764
- "onClick",
7765
- null,
7766
- props.onClick,
7767
- false,
7768
- void 0,
7769
- parentComponent
7770
- );
7771
- }
7772
- }
7773
- let vnodeHooks;
7774
- if (vnodeHooks = props && props.onVnodeBeforeMount) {
7775
- invokeVNodeHook(vnodeHooks, parentComponent, vnode);
7776
- }
7777
7904
  let needCallTransitionHooks = false;
7778
7905
  if (isTemplateNode(el)) {
7779
7906
  needCallTransitionHooks = needTransition(parentSuspense, transition) && parentComponent && parentComponent.vnode.props && parentComponent.vnode.props.appear;
@@ -7784,16 +7911,6 @@ If you want to remount the same app, move your app creation logic into a factory
7784
7911
  replaceNode(content, el, parentComponent);
7785
7912
  vnode.el = el = content;
7786
7913
  }
7787
- if (dirs) {
7788
- invokeDirectiveHook(vnode, null, parentComponent, "beforeMount");
7789
- }
7790
- if ((vnodeHooks = props && props.onVnodeMounted) || dirs || needCallTransitionHooks) {
7791
- queueEffectWithSuspense(() => {
7792
- vnodeHooks && invokeVNodeHook(vnodeHooks, parentComponent, vnode);
7793
- needCallTransitionHooks && transition.enter(el);
7794
- dirs && invokeDirectiveHook(vnode, null, parentComponent, "mounted");
7795
- }, parentSuspense);
7796
- }
7797
7914
  if (shapeFlag & 16 && // skip if element has innerHTML / textContent
7798
7915
  !(props && (props.innerHTML || props.textContent))) {
7799
7916
  let next = hydrateChildren(
@@ -7810,7 +7927,10 @@ If you want to remount the same app, move your app creation logic into a factory
7810
7927
  hasMismatch = true;
7811
7928
  if (!hasWarned) {
7812
7929
  warn(
7813
- `Hydration children mismatch in <${vnode.type}>: server rendered element contains more child nodes than client vdom.`
7930
+ `Hydration children mismatch on`,
7931
+ el,
7932
+ `
7933
+ Server rendered element contains more child nodes than client vdom.`
7814
7934
  );
7815
7935
  hasWarned = true;
7816
7936
  }
@@ -7822,13 +7942,50 @@ If you want to remount the same app, move your app creation logic into a factory
7822
7942
  if (el.textContent !== vnode.children) {
7823
7943
  hasMismatch = true;
7824
7944
  warn(
7825
- `Hydration text content mismatch in <${vnode.type}>:
7826
- - Server rendered: ${el.textContent}
7827
- - Client rendered: ${vnode.children}`
7945
+ `Hydration text content mismatch on`,
7946
+ el,
7947
+ `
7948
+ - rendered on server: ${el.textContent}
7949
+ - expected on client: ${vnode.children}`
7828
7950
  );
7829
7951
  el.textContent = vnode.children;
7830
7952
  }
7831
7953
  }
7954
+ if (props) {
7955
+ {
7956
+ for (const key in props) {
7957
+ if (propHasMismatch(el, key, props[key])) {
7958
+ hasMismatch = true;
7959
+ }
7960
+ if (forcePatch && (key.endsWith("value") || key === "indeterminate") || isOn(key) && !isReservedProp(key) || // force hydrate v-bind with .prop modifiers
7961
+ key[0] === ".") {
7962
+ patchProp(
7963
+ el,
7964
+ key,
7965
+ null,
7966
+ props[key],
7967
+ void 0,
7968
+ void 0,
7969
+ parentComponent
7970
+ );
7971
+ }
7972
+ }
7973
+ }
7974
+ }
7975
+ let vnodeHooks;
7976
+ if (vnodeHooks = props && props.onVnodeBeforeMount) {
7977
+ invokeVNodeHook(vnodeHooks, parentComponent, vnode);
7978
+ }
7979
+ if (dirs) {
7980
+ invokeDirectiveHook(vnode, null, parentComponent, "beforeMount");
7981
+ }
7982
+ if ((vnodeHooks = props && props.onVnodeMounted) || dirs || needCallTransitionHooks) {
7983
+ queueEffectWithSuspense(() => {
7984
+ vnodeHooks && invokeVNodeHook(vnodeHooks, parentComponent, vnode);
7985
+ needCallTransitionHooks && transition.enter(el);
7986
+ dirs && invokeDirectiveHook(vnode, null, parentComponent, "mounted");
7987
+ }, parentSuspense);
7988
+ }
7832
7989
  }
7833
7990
  return el.nextSibling;
7834
7991
  };
@@ -7854,7 +8011,10 @@ If you want to remount the same app, move your app creation logic into a factory
7854
8011
  hasMismatch = true;
7855
8012
  if (!hasWarned) {
7856
8013
  warn(
7857
- `Hydration children mismatch in <${container.tagName.toLowerCase()}>: server rendered element contains fewer child nodes than client vdom.`
8014
+ `Hydration children mismatch on`,
8015
+ container,
8016
+ `
8017
+ Server rendered element contains fewer child nodes than client vdom.`
7858
8018
  );
7859
8019
  hasWarned = true;
7860
8020
  }
@@ -7865,7 +8025,7 @@ If you want to remount the same app, move your app creation logic into a factory
7865
8025
  null,
7866
8026
  parentComponent,
7867
8027
  parentSuspense,
7868
- isSVGContainer(container),
8028
+ getContainerType(container),
7869
8029
  slotScopeIds
7870
8030
  );
7871
8031
  }
@@ -7899,12 +8059,12 @@ If you want to remount the same app, move your app creation logic into a factory
7899
8059
  hasMismatch = true;
7900
8060
  warn(
7901
8061
  `Hydration node mismatch:
7902
- - Client vnode:`,
7903
- vnode.type,
7904
- `
7905
- - Server rendered DOM:`,
8062
+ - rendered on server:`,
7906
8063
  node,
7907
- node.nodeType === 3 /* TEXT */ ? `(text)` : isComment(node) && node.data === "[" ? `(start of fragment)` : ``
8064
+ node.nodeType === 3 /* TEXT */ ? `(text)` : isComment(node) && node.data === "[" ? `(start of fragment)` : ``,
8065
+ `
8066
+ - expected on client:`,
8067
+ vnode.type
7908
8068
  );
7909
8069
  vnode.el = null;
7910
8070
  if (isFragment) {
@@ -7928,7 +8088,7 @@ If you want to remount the same app, move your app creation logic into a factory
7928
8088
  next,
7929
8089
  parentComponent,
7930
8090
  parentSuspense,
7931
- isSVGContainer(container),
8091
+ getContainerType(container),
7932
8092
  slotScopeIds
7933
8093
  );
7934
8094
  return next;
@@ -7969,6 +8129,46 @@ If you want to remount the same app, move your app creation logic into a factory
7969
8129
  };
7970
8130
  return [hydrate, hydrateNode];
7971
8131
  }
8132
+ function propHasMismatch(el, key, clientValue) {
8133
+ let mismatchType;
8134
+ let mismatchKey;
8135
+ let actual;
8136
+ let expected;
8137
+ if (key === "class") {
8138
+ actual = el.className;
8139
+ expected = normalizeClass(clientValue);
8140
+ if (actual !== expected) {
8141
+ mismatchType = mismatchKey = `class`;
8142
+ }
8143
+ } else if (key === "style") {
8144
+ actual = el.getAttribute("style");
8145
+ expected = isString(clientValue) ? clientValue : stringifyStyle(normalizeStyle(clientValue));
8146
+ if (actual !== expected) {
8147
+ mismatchType = mismatchKey = "style";
8148
+ }
8149
+ } else if (el instanceof SVGElement && isKnownSvgAttr(key) || el instanceof HTMLElement && (isBooleanAttr(key) || isKnownHtmlAttr(key))) {
8150
+ actual = el.hasAttribute(key) && el.getAttribute(key);
8151
+ expected = isBooleanAttr(key) ? includeBooleanAttr(clientValue) ? "" : false : clientValue == null ? false : String(clientValue);
8152
+ if (actual !== expected) {
8153
+ mismatchType = `attribute`;
8154
+ mismatchKey = key;
8155
+ }
8156
+ }
8157
+ if (mismatchType) {
8158
+ const format = (v) => v === false ? `(not rendered)` : `${mismatchKey}="${v}"`;
8159
+ warn(
8160
+ `Hydration ${mismatchType} mismatch on`,
8161
+ el,
8162
+ `
8163
+ - rendered on server: ${format(actual)}
8164
+ - expected on client: ${format(expected)}
8165
+ Note: this mismatch is check-only. The DOM will not be rectified in production due to performance overhead.
8166
+ You should fix the source of the mismatch.`
8167
+ );
8168
+ return true;
8169
+ }
8170
+ return false;
8171
+ }
7972
8172
 
7973
8173
  let supported;
7974
8174
  let perf;
@@ -8037,7 +8237,7 @@ If you want to remount the same app, move your app creation logic into a factory
8037
8237
  setScopeId: hostSetScopeId = NOOP,
8038
8238
  insertStaticContent: hostInsertStaticContent
8039
8239
  } = options;
8040
- const patch = (n1, n2, container, anchor = null, parentComponent = null, parentSuspense = null, isSVG = false, slotScopeIds = null, optimized = isHmrUpdating ? false : !!n2.dynamicChildren) => {
8240
+ const patch = (n1, n2, container, anchor = null, parentComponent = null, parentSuspense = null, namespace = void 0, slotScopeIds = null, optimized = isHmrUpdating ? false : !!n2.dynamicChildren) => {
8041
8241
  if (n1 === n2) {
8042
8242
  return;
8043
8243
  }
@@ -8060,9 +8260,9 @@ If you want to remount the same app, move your app creation logic into a factory
8060
8260
  break;
8061
8261
  case Static:
8062
8262
  if (n1 == null) {
8063
- mountStaticNode(n2, container, anchor, isSVG);
8263
+ mountStaticNode(n2, container, anchor, namespace);
8064
8264
  } else {
8065
- patchStaticNode(n1, n2, container, isSVG);
8265
+ patchStaticNode(n1, n2, container, namespace);
8066
8266
  }
8067
8267
  break;
8068
8268
  case Fragment:
@@ -8073,7 +8273,7 @@ If you want to remount the same app, move your app creation logic into a factory
8073
8273
  anchor,
8074
8274
  parentComponent,
8075
8275
  parentSuspense,
8076
- isSVG,
8276
+ namespace,
8077
8277
  slotScopeIds,
8078
8278
  optimized
8079
8279
  );
@@ -8087,7 +8287,7 @@ If you want to remount the same app, move your app creation logic into a factory
8087
8287
  anchor,
8088
8288
  parentComponent,
8089
8289
  parentSuspense,
8090
- isSVG,
8290
+ namespace,
8091
8291
  slotScopeIds,
8092
8292
  optimized
8093
8293
  );
@@ -8099,7 +8299,7 @@ If you want to remount the same app, move your app creation logic into a factory
8099
8299
  anchor,
8100
8300
  parentComponent,
8101
8301
  parentSuspense,
8102
- isSVG,
8302
+ namespace,
8103
8303
  slotScopeIds,
8104
8304
  optimized
8105
8305
  );
@@ -8111,7 +8311,7 @@ If you want to remount the same app, move your app creation logic into a factory
8111
8311
  anchor,
8112
8312
  parentComponent,
8113
8313
  parentSuspense,
8114
- isSVG,
8314
+ namespace,
8115
8315
  slotScopeIds,
8116
8316
  optimized,
8117
8317
  internals
@@ -8124,7 +8324,7 @@ If you want to remount the same app, move your app creation logic into a factory
8124
8324
  anchor,
8125
8325
  parentComponent,
8126
8326
  parentSuspense,
8127
- isSVG,
8327
+ namespace,
8128
8328
  slotScopeIds,
8129
8329
  optimized,
8130
8330
  internals
@@ -8162,17 +8362,17 @@ If you want to remount the same app, move your app creation logic into a factory
8162
8362
  n2.el = n1.el;
8163
8363
  }
8164
8364
  };
8165
- const mountStaticNode = (n2, container, anchor, isSVG) => {
8365
+ const mountStaticNode = (n2, container, anchor, namespace) => {
8166
8366
  [n2.el, n2.anchor] = hostInsertStaticContent(
8167
8367
  n2.children,
8168
8368
  container,
8169
8369
  anchor,
8170
- isSVG,
8370
+ namespace,
8171
8371
  n2.el,
8172
8372
  n2.anchor
8173
8373
  );
8174
8374
  };
8175
- const patchStaticNode = (n1, n2, container, isSVG) => {
8375
+ const patchStaticNode = (n1, n2, container, namespace) => {
8176
8376
  if (n2.children !== n1.children) {
8177
8377
  const anchor = hostNextSibling(n1.anchor);
8178
8378
  removeStaticNode(n1);
@@ -8180,7 +8380,7 @@ If you want to remount the same app, move your app creation logic into a factory
8180
8380
  n2.children,
8181
8381
  container,
8182
8382
  anchor,
8183
- isSVG
8383
+ namespace
8184
8384
  );
8185
8385
  } else {
8186
8386
  n2.el = n1.el;
@@ -8205,8 +8405,12 @@ If you want to remount the same app, move your app creation logic into a factory
8205
8405
  }
8206
8406
  hostRemove(anchor);
8207
8407
  };
8208
- const processElement = (n1, n2, container, anchor, parentComponent, parentSuspense, isSVG, slotScopeIds, optimized) => {
8209
- isSVG = isSVG || n2.type === "svg";
8408
+ const processElement = (n1, n2, container, anchor, parentComponent, parentSuspense, namespace, slotScopeIds, optimized) => {
8409
+ if (n2.type === "svg") {
8410
+ namespace = "svg";
8411
+ } else if (n2.type === "math") {
8412
+ namespace = "mathml";
8413
+ }
8210
8414
  if (n1 == null) {
8211
8415
  mountElement(
8212
8416
  n2,
@@ -8214,7 +8418,7 @@ If you want to remount the same app, move your app creation logic into a factory
8214
8418
  anchor,
8215
8419
  parentComponent,
8216
8420
  parentSuspense,
8217
- isSVG,
8421
+ namespace,
8218
8422
  slotScopeIds,
8219
8423
  optimized
8220
8424
  );
@@ -8224,19 +8428,19 @@ If you want to remount the same app, move your app creation logic into a factory
8224
8428
  n2,
8225
8429
  parentComponent,
8226
8430
  parentSuspense,
8227
- isSVG,
8431
+ namespace,
8228
8432
  slotScopeIds,
8229
8433
  optimized
8230
8434
  );
8231
8435
  }
8232
8436
  };
8233
- const mountElement = (vnode, container, anchor, parentComponent, parentSuspense, isSVG, slotScopeIds, optimized) => {
8437
+ const mountElement = (vnode, container, anchor, parentComponent, parentSuspense, namespace, slotScopeIds, optimized) => {
8234
8438
  let el;
8235
8439
  let vnodeHook;
8236
- const { type, props, shapeFlag, transition, dirs } = vnode;
8440
+ const { props, shapeFlag, transition, dirs } = vnode;
8237
8441
  el = vnode.el = hostCreateElement(
8238
8442
  vnode.type,
8239
- isSVG,
8443
+ namespace,
8240
8444
  props && props.is,
8241
8445
  props
8242
8446
  );
@@ -8249,7 +8453,7 @@ If you want to remount the same app, move your app creation logic into a factory
8249
8453
  null,
8250
8454
  parentComponent,
8251
8455
  parentSuspense,
8252
- isSVG && type !== "foreignObject",
8456
+ resolveChildrenNamespace(vnode, namespace),
8253
8457
  slotScopeIds,
8254
8458
  optimized
8255
8459
  );
@@ -8266,7 +8470,7 @@ If you want to remount the same app, move your app creation logic into a factory
8266
8470
  key,
8267
8471
  null,
8268
8472
  props[key],
8269
- isSVG,
8473
+ namespace,
8270
8474
  vnode.children,
8271
8475
  parentComponent,
8272
8476
  parentSuspense,
@@ -8275,7 +8479,7 @@ If you want to remount the same app, move your app creation logic into a factory
8275
8479
  }
8276
8480
  }
8277
8481
  if ("value" in props) {
8278
- hostPatchProp(el, "value", null, props.value);
8482
+ hostPatchProp(el, "value", null, props.value, namespace);
8279
8483
  }
8280
8484
  if (vnodeHook = props.onVnodeBeforeMount) {
8281
8485
  invokeVNodeHook(vnodeHook, parentComponent, vnode);
@@ -8333,7 +8537,7 @@ If you want to remount the same app, move your app creation logic into a factory
8333
8537
  }
8334
8538
  }
8335
8539
  };
8336
- const mountChildren = (children, container, anchor, parentComponent, parentSuspense, isSVG, slotScopeIds, optimized, start = 0) => {
8540
+ const mountChildren = (children, container, anchor, parentComponent, parentSuspense, namespace, slotScopeIds, optimized, start = 0) => {
8337
8541
  for (let i = start; i < children.length; i++) {
8338
8542
  const child = children[i] = optimized ? cloneIfMounted(children[i]) : normalizeVNode(children[i]);
8339
8543
  patch(
@@ -8343,13 +8547,13 @@ If you want to remount the same app, move your app creation logic into a factory
8343
8547
  anchor,
8344
8548
  parentComponent,
8345
8549
  parentSuspense,
8346
- isSVG,
8550
+ namespace,
8347
8551
  slotScopeIds,
8348
8552
  optimized
8349
8553
  );
8350
8554
  }
8351
8555
  };
8352
- const patchElement = (n1, n2, parentComponent, parentSuspense, isSVG, slotScopeIds, optimized) => {
8556
+ const patchElement = (n1, n2, parentComponent, parentSuspense, namespace, slotScopeIds, optimized) => {
8353
8557
  const el = n2.el = n1.el;
8354
8558
  let { patchFlag, dynamicChildren, dirs } = n2;
8355
8559
  patchFlag |= n1.patchFlag & 16;
@@ -8369,7 +8573,6 @@ If you want to remount the same app, move your app creation logic into a factory
8369
8573
  optimized = false;
8370
8574
  dynamicChildren = null;
8371
8575
  }
8372
- const areChildrenSVG = isSVG && n2.type !== "foreignObject";
8373
8576
  if (dynamicChildren) {
8374
8577
  patchBlockChildren(
8375
8578
  n1.dynamicChildren,
@@ -8377,7 +8580,7 @@ If you want to remount the same app, move your app creation logic into a factory
8377
8580
  el,
8378
8581
  parentComponent,
8379
8582
  parentSuspense,
8380
- areChildrenSVG,
8583
+ resolveChildrenNamespace(n2, namespace),
8381
8584
  slotScopeIds
8382
8585
  );
8383
8586
  {
@@ -8391,7 +8594,7 @@ If you want to remount the same app, move your app creation logic into a factory
8391
8594
  null,
8392
8595
  parentComponent,
8393
8596
  parentSuspense,
8394
- areChildrenSVG,
8597
+ resolveChildrenNamespace(n2, namespace),
8395
8598
  slotScopeIds,
8396
8599
  false
8397
8600
  );
@@ -8405,16 +8608,16 @@ If you want to remount the same app, move your app creation logic into a factory
8405
8608
  newProps,
8406
8609
  parentComponent,
8407
8610
  parentSuspense,
8408
- isSVG
8611
+ namespace
8409
8612
  );
8410
8613
  } else {
8411
8614
  if (patchFlag & 2) {
8412
8615
  if (oldProps.class !== newProps.class) {
8413
- hostPatchProp(el, "class", null, newProps.class, isSVG);
8616
+ hostPatchProp(el, "class", null, newProps.class, namespace);
8414
8617
  }
8415
8618
  }
8416
8619
  if (patchFlag & 4) {
8417
- hostPatchProp(el, "style", oldProps.style, newProps.style, isSVG);
8620
+ hostPatchProp(el, "style", oldProps.style, newProps.style, namespace);
8418
8621
  }
8419
8622
  if (patchFlag & 8) {
8420
8623
  const propsToUpdate = n2.dynamicProps;
@@ -8428,7 +8631,7 @@ If you want to remount the same app, move your app creation logic into a factory
8428
8631
  key,
8429
8632
  prev,
8430
8633
  next,
8431
- isSVG,
8634
+ namespace,
8432
8635
  n1.children,
8433
8636
  parentComponent,
8434
8637
  parentSuspense,
@@ -8451,7 +8654,7 @@ If you want to remount the same app, move your app creation logic into a factory
8451
8654
  newProps,
8452
8655
  parentComponent,
8453
8656
  parentSuspense,
8454
- isSVG
8657
+ namespace
8455
8658
  );
8456
8659
  }
8457
8660
  if ((vnodeHook = newProps.onVnodeUpdated) || dirs) {
@@ -8461,7 +8664,7 @@ If you want to remount the same app, move your app creation logic into a factory
8461
8664
  }, parentSuspense);
8462
8665
  }
8463
8666
  };
8464
- const patchBlockChildren = (oldChildren, newChildren, fallbackContainer, parentComponent, parentSuspense, isSVG, slotScopeIds) => {
8667
+ const patchBlockChildren = (oldChildren, newChildren, fallbackContainer, parentComponent, parentSuspense, namespace, slotScopeIds) => {
8465
8668
  for (let i = 0; i < newChildren.length; i++) {
8466
8669
  const oldVNode = oldChildren[i];
8467
8670
  const newVNode = newChildren[i];
@@ -8486,13 +8689,13 @@ If you want to remount the same app, move your app creation logic into a factory
8486
8689
  null,
8487
8690
  parentComponent,
8488
8691
  parentSuspense,
8489
- isSVG,
8692
+ namespace,
8490
8693
  slotScopeIds,
8491
8694
  true
8492
8695
  );
8493
8696
  }
8494
8697
  };
8495
- const patchProps = (el, vnode, oldProps, newProps, parentComponent, parentSuspense, isSVG) => {
8698
+ const patchProps = (el, vnode, oldProps, newProps, parentComponent, parentSuspense, namespace) => {
8496
8699
  if (oldProps !== newProps) {
8497
8700
  if (oldProps !== EMPTY_OBJ) {
8498
8701
  for (const key in oldProps) {
@@ -8502,7 +8705,7 @@ If you want to remount the same app, move your app creation logic into a factory
8502
8705
  key,
8503
8706
  oldProps[key],
8504
8707
  null,
8505
- isSVG,
8708
+ namespace,
8506
8709
  vnode.children,
8507
8710
  parentComponent,
8508
8711
  parentSuspense,
@@ -8522,7 +8725,7 @@ If you want to remount the same app, move your app creation logic into a factory
8522
8725
  key,
8523
8726
  prev,
8524
8727
  next,
8525
- isSVG,
8728
+ namespace,
8526
8729
  vnode.children,
8527
8730
  parentComponent,
8528
8731
  parentSuspense,
@@ -8531,11 +8734,11 @@ If you want to remount the same app, move your app creation logic into a factory
8531
8734
  }
8532
8735
  }
8533
8736
  if ("value" in newProps) {
8534
- hostPatchProp(el, "value", oldProps.value, newProps.value);
8737
+ hostPatchProp(el, "value", oldProps.value, newProps.value, namespace);
8535
8738
  }
8536
8739
  }
8537
8740
  };
8538
- const processFragment = (n1, n2, container, anchor, parentComponent, parentSuspense, isSVG, slotScopeIds, optimized) => {
8741
+ const processFragment = (n1, n2, container, anchor, parentComponent, parentSuspense, namespace, slotScopeIds, optimized) => {
8539
8742
  const fragmentStartAnchor = n2.el = n1 ? n1.el : hostCreateText("");
8540
8743
  const fragmentEndAnchor = n2.anchor = n1 ? n1.anchor : hostCreateText("");
8541
8744
  let { patchFlag, dynamicChildren, slotScopeIds: fragmentSlotScopeIds } = n2;
@@ -8559,7 +8762,7 @@ If you want to remount the same app, move your app creation logic into a factory
8559
8762
  fragmentEndAnchor,
8560
8763
  parentComponent,
8561
8764
  parentSuspense,
8562
- isSVG,
8765
+ namespace,
8563
8766
  slotScopeIds,
8564
8767
  optimized
8565
8768
  );
@@ -8573,7 +8776,7 @@ If you want to remount the same app, move your app creation logic into a factory
8573
8776
  container,
8574
8777
  parentComponent,
8575
8778
  parentSuspense,
8576
- isSVG,
8779
+ namespace,
8577
8780
  slotScopeIds
8578
8781
  );
8579
8782
  {
@@ -8587,14 +8790,14 @@ If you want to remount the same app, move your app creation logic into a factory
8587
8790
  fragmentEndAnchor,
8588
8791
  parentComponent,
8589
8792
  parentSuspense,
8590
- isSVG,
8793
+ namespace,
8591
8794
  slotScopeIds,
8592
8795
  optimized
8593
8796
  );
8594
8797
  }
8595
8798
  }
8596
8799
  };
8597
- const processComponent = (n1, n2, container, anchor, parentComponent, parentSuspense, isSVG, slotScopeIds, optimized) => {
8800
+ const processComponent = (n1, n2, container, anchor, parentComponent, parentSuspense, namespace, slotScopeIds, optimized) => {
8598
8801
  n2.slotScopeIds = slotScopeIds;
8599
8802
  if (n1 == null) {
8600
8803
  if (n2.shapeFlag & 512) {
@@ -8602,7 +8805,7 @@ If you want to remount the same app, move your app creation logic into a factory
8602
8805
  n2,
8603
8806
  container,
8604
8807
  anchor,
8605
- isSVG,
8808
+ namespace,
8606
8809
  optimized
8607
8810
  );
8608
8811
  } else {
@@ -8612,7 +8815,7 @@ If you want to remount the same app, move your app creation logic into a factory
8612
8815
  anchor,
8613
8816
  parentComponent,
8614
8817
  parentSuspense,
8615
- isSVG,
8818
+ namespace,
8616
8819
  optimized
8617
8820
  );
8618
8821
  }
@@ -8620,7 +8823,7 @@ If you want to remount the same app, move your app creation logic into a factory
8620
8823
  updateComponent(n1, n2, optimized);
8621
8824
  }
8622
8825
  };
8623
- const mountComponent = (initialVNode, container, anchor, parentComponent, parentSuspense, isSVG, optimized) => {
8826
+ const mountComponent = (initialVNode, container, anchor, parentComponent, parentSuspense, namespace, optimized) => {
8624
8827
  const compatMountInstance = initialVNode.isCompatRoot && initialVNode.component;
8625
8828
  const instance = compatMountInstance || (initialVNode.component = createComponentInstance(
8626
8829
  initialVNode,
@@ -8652,17 +8855,17 @@ If you want to remount the same app, move your app creation logic into a factory
8652
8855
  const placeholder = instance.subTree = createVNode(Comment);
8653
8856
  processCommentNode(null, placeholder, container, anchor);
8654
8857
  }
8655
- return;
8858
+ } else {
8859
+ setupRenderEffect(
8860
+ instance,
8861
+ initialVNode,
8862
+ container,
8863
+ anchor,
8864
+ parentSuspense,
8865
+ namespace,
8866
+ optimized
8867
+ );
8656
8868
  }
8657
- setupRenderEffect(
8658
- instance,
8659
- initialVNode,
8660
- container,
8661
- anchor,
8662
- parentSuspense,
8663
- isSVG,
8664
- optimized
8665
- );
8666
8869
  {
8667
8870
  popWarningContext();
8668
8871
  endMeasure(instance, `mount`);
@@ -8691,7 +8894,7 @@ If you want to remount the same app, move your app creation logic into a factory
8691
8894
  instance.vnode = n2;
8692
8895
  }
8693
8896
  };
8694
- const setupRenderEffect = (instance, initialVNode, container, anchor, parentSuspense, isSVG, optimized) => {
8897
+ const setupRenderEffect = (instance, initialVNode, container, anchor, parentSuspense, namespace, optimized) => {
8695
8898
  const componentUpdateFn = () => {
8696
8899
  if (!instance.isMounted) {
8697
8900
  let vnodeHook;
@@ -8761,7 +8964,7 @@ If you want to remount the same app, move your app creation logic into a factory
8761
8964
  anchor,
8762
8965
  instance,
8763
8966
  parentSuspense,
8764
- isSVG
8967
+ namespace
8765
8968
  );
8766
8969
  {
8767
8970
  endMeasure(instance, `patch`);
@@ -8800,6 +9003,21 @@ If you want to remount the same app, move your app creation logic into a factory
8800
9003
  initialVNode = container = anchor = null;
8801
9004
  } else {
8802
9005
  let { next, bu, u, parent, vnode } = instance;
9006
+ {
9007
+ const nonHydratedAsyncRoot = locateNonHydratedAsyncRoot(instance);
9008
+ if (nonHydratedAsyncRoot) {
9009
+ if (next) {
9010
+ next.el = vnode.el;
9011
+ updateComponentPreRender(instance, next, optimized);
9012
+ }
9013
+ nonHydratedAsyncRoot.asyncDep.then(() => {
9014
+ if (!instance.isUnmounted) {
9015
+ componentUpdateFn();
9016
+ }
9017
+ });
9018
+ return;
9019
+ }
9020
+ }
8803
9021
  let originNext = next;
8804
9022
  let vnodeHook;
8805
9023
  {
@@ -8843,7 +9061,7 @@ If you want to remount the same app, move your app creation logic into a factory
8843
9061
  getNextHostNode(prevTree),
8844
9062
  instance,
8845
9063
  parentSuspense,
8846
- isSVG
9064
+ namespace
8847
9065
  );
8848
9066
  {
8849
9067
  endMeasure(instance, `patch`);
@@ -8904,10 +9122,10 @@ If you want to remount the same app, move your app creation logic into a factory
8904
9122
  updateProps(instance, nextVNode.props, prevProps, optimized);
8905
9123
  updateSlots(instance, nextVNode.children, optimized);
8906
9124
  pauseTracking();
8907
- flushPreFlushCbs();
9125
+ flushPreFlushCbs(instance);
8908
9126
  resetTracking();
8909
9127
  };
8910
- const patchChildren = (n1, n2, container, anchor, parentComponent, parentSuspense, isSVG, slotScopeIds, optimized = false) => {
9128
+ const patchChildren = (n1, n2, container, anchor, parentComponent, parentSuspense, namespace, slotScopeIds, optimized = false) => {
8911
9129
  const c1 = n1 && n1.children;
8912
9130
  const prevShapeFlag = n1 ? n1.shapeFlag : 0;
8913
9131
  const c2 = n2.children;
@@ -8921,7 +9139,7 @@ If you want to remount the same app, move your app creation logic into a factory
8921
9139
  anchor,
8922
9140
  parentComponent,
8923
9141
  parentSuspense,
8924
- isSVG,
9142
+ namespace,
8925
9143
  slotScopeIds,
8926
9144
  optimized
8927
9145
  );
@@ -8934,7 +9152,7 @@ If you want to remount the same app, move your app creation logic into a factory
8934
9152
  anchor,
8935
9153
  parentComponent,
8936
9154
  parentSuspense,
8937
- isSVG,
9155
+ namespace,
8938
9156
  slotScopeIds,
8939
9157
  optimized
8940
9158
  );
@@ -8958,7 +9176,7 @@ If you want to remount the same app, move your app creation logic into a factory
8958
9176
  anchor,
8959
9177
  parentComponent,
8960
9178
  parentSuspense,
8961
- isSVG,
9179
+ namespace,
8962
9180
  slotScopeIds,
8963
9181
  optimized
8964
9182
  );
@@ -8976,7 +9194,7 @@ If you want to remount the same app, move your app creation logic into a factory
8976
9194
  anchor,
8977
9195
  parentComponent,
8978
9196
  parentSuspense,
8979
- isSVG,
9197
+ namespace,
8980
9198
  slotScopeIds,
8981
9199
  optimized
8982
9200
  );
@@ -8984,7 +9202,7 @@ If you want to remount the same app, move your app creation logic into a factory
8984
9202
  }
8985
9203
  }
8986
9204
  };
8987
- const patchUnkeyedChildren = (c1, c2, container, anchor, parentComponent, parentSuspense, isSVG, slotScopeIds, optimized) => {
9205
+ const patchUnkeyedChildren = (c1, c2, container, anchor, parentComponent, parentSuspense, namespace, slotScopeIds, optimized) => {
8988
9206
  c1 = c1 || EMPTY_ARR;
8989
9207
  c2 = c2 || EMPTY_ARR;
8990
9208
  const oldLength = c1.length;
@@ -9000,7 +9218,7 @@ If you want to remount the same app, move your app creation logic into a factory
9000
9218
  null,
9001
9219
  parentComponent,
9002
9220
  parentSuspense,
9003
- isSVG,
9221
+ namespace,
9004
9222
  slotScopeIds,
9005
9223
  optimized
9006
9224
  );
@@ -9021,14 +9239,14 @@ If you want to remount the same app, move your app creation logic into a factory
9021
9239
  anchor,
9022
9240
  parentComponent,
9023
9241
  parentSuspense,
9024
- isSVG,
9242
+ namespace,
9025
9243
  slotScopeIds,
9026
9244
  optimized,
9027
9245
  commonLength
9028
9246
  );
9029
9247
  }
9030
9248
  };
9031
- const patchKeyedChildren = (c1, c2, container, parentAnchor, parentComponent, parentSuspense, isSVG, slotScopeIds, optimized) => {
9249
+ const patchKeyedChildren = (c1, c2, container, parentAnchor, parentComponent, parentSuspense, namespace, slotScopeIds, optimized) => {
9032
9250
  let i = 0;
9033
9251
  const l2 = c2.length;
9034
9252
  let e1 = c1.length - 1;
@@ -9044,7 +9262,7 @@ If you want to remount the same app, move your app creation logic into a factory
9044
9262
  null,
9045
9263
  parentComponent,
9046
9264
  parentSuspense,
9047
- isSVG,
9265
+ namespace,
9048
9266
  slotScopeIds,
9049
9267
  optimized
9050
9268
  );
@@ -9064,7 +9282,7 @@ If you want to remount the same app, move your app creation logic into a factory
9064
9282
  null,
9065
9283
  parentComponent,
9066
9284
  parentSuspense,
9067
- isSVG,
9285
+ namespace,
9068
9286
  slotScopeIds,
9069
9287
  optimized
9070
9288
  );
@@ -9086,7 +9304,7 @@ If you want to remount the same app, move your app creation logic into a factory
9086
9304
  anchor,
9087
9305
  parentComponent,
9088
9306
  parentSuspense,
9089
- isSVG,
9307
+ namespace,
9090
9308
  slotScopeIds,
9091
9309
  optimized
9092
9310
  );
@@ -9156,7 +9374,7 @@ If you want to remount the same app, move your app creation logic into a factory
9156
9374
  null,
9157
9375
  parentComponent,
9158
9376
  parentSuspense,
9159
- isSVG,
9377
+ namespace,
9160
9378
  slotScopeIds,
9161
9379
  optimized
9162
9380
  );
@@ -9177,7 +9395,7 @@ If you want to remount the same app, move your app creation logic into a factory
9177
9395
  anchor,
9178
9396
  parentComponent,
9179
9397
  parentSuspense,
9180
- isSVG,
9398
+ namespace,
9181
9399
  slotScopeIds,
9182
9400
  optimized
9183
9401
  );
@@ -9407,13 +9625,21 @@ If you want to remount the same app, move your app creation logic into a factory
9407
9625
  }
9408
9626
  return hostNextSibling(vnode.anchor || vnode.el);
9409
9627
  };
9410
- const render = (vnode, container, isSVG) => {
9628
+ const render = (vnode, container, namespace) => {
9411
9629
  if (vnode == null) {
9412
9630
  if (container._vnode) {
9413
9631
  unmount(container._vnode, null, null, true);
9414
9632
  }
9415
9633
  } else {
9416
- patch(container._vnode || null, vnode, container, null, null, null, isSVG);
9634
+ patch(
9635
+ container._vnode || null,
9636
+ vnode,
9637
+ container,
9638
+ null,
9639
+ null,
9640
+ null,
9641
+ namespace
9642
+ );
9417
9643
  }
9418
9644
  flushPreFlushCbs();
9419
9645
  flushPostFlushCbs();
@@ -9444,6 +9670,9 @@ If you want to remount the same app, move your app creation logic into a factory
9444
9670
  createApp: createAppAPI(render, hydrate)
9445
9671
  };
9446
9672
  }
9673
+ function resolveChildrenNamespace({ type, props }, currentNamespace) {
9674
+ return currentNamespace === "svg" && type === "foreignObject" || currentNamespace === "mathml" && type === "annotation-xml" && props && props.encoding && props.encoding.includes("html") ? void 0 : currentNamespace;
9675
+ }
9447
9676
  function toggleRecurse({ effect, update }, allowed) {
9448
9677
  effect.allowRecurse = update.allowRecurse = allowed;
9449
9678
  }
@@ -9514,10 +9743,21 @@ If you want to remount the same app, move your app creation logic into a factory
9514
9743
  }
9515
9744
  return result;
9516
9745
  }
9746
+ function locateNonHydratedAsyncRoot(instance) {
9747
+ const subComponent = instance.subTree.component;
9748
+ if (subComponent) {
9749
+ if (subComponent.asyncDep && !subComponent.asyncResolved) {
9750
+ return subComponent;
9751
+ } else {
9752
+ return locateNonHydratedAsyncRoot(subComponent);
9753
+ }
9754
+ }
9755
+ }
9517
9756
 
9518
9757
  const isTeleport = (type) => type.__isTeleport;
9519
9758
  const isTeleportDisabled = (props) => props && (props.disabled || props.disabled === "");
9520
9759
  const isTargetSVG = (target) => typeof SVGElement !== "undefined" && target instanceof SVGElement;
9760
+ const isTargetMathML = (target) => typeof MathMLElement === "function" && target instanceof MathMLElement;
9521
9761
  const resolveTarget = (props, select) => {
9522
9762
  const targetSelector = props && props.to;
9523
9763
  if (isString(targetSelector)) {
@@ -9545,7 +9785,7 @@ If you want to remount the same app, move your app creation logic into a factory
9545
9785
  const TeleportImpl = {
9546
9786
  name: "Teleport",
9547
9787
  __isTeleport: true,
9548
- process(n1, n2, container, anchor, parentComponent, parentSuspense, isSVG, slotScopeIds, optimized, internals) {
9788
+ process(n1, n2, container, anchor, parentComponent, parentSuspense, namespace, slotScopeIds, optimized, internals) {
9549
9789
  const {
9550
9790
  mc: mountChildren,
9551
9791
  pc: patchChildren,
@@ -9567,7 +9807,11 @@ If you want to remount the same app, move your app creation logic into a factory
9567
9807
  const targetAnchor = n2.targetAnchor = createText("");
9568
9808
  if (target) {
9569
9809
  insert(targetAnchor, target);
9570
- isSVG = isSVG || isTargetSVG(target);
9810
+ if (namespace === "svg" || isTargetSVG(target)) {
9811
+ namespace = "svg";
9812
+ } else if (namespace === "mathml" || isTargetMathML(target)) {
9813
+ namespace = "mathml";
9814
+ }
9571
9815
  } else if (!disabled) {
9572
9816
  warn("Invalid Teleport target on mount:", target, `(${typeof target})`);
9573
9817
  }
@@ -9579,7 +9823,7 @@ If you want to remount the same app, move your app creation logic into a factory
9579
9823
  anchor2,
9580
9824
  parentComponent,
9581
9825
  parentSuspense,
9582
- isSVG,
9826
+ namespace,
9583
9827
  slotScopeIds,
9584
9828
  optimized
9585
9829
  );
@@ -9598,7 +9842,11 @@ If you want to remount the same app, move your app creation logic into a factory
9598
9842
  const wasDisabled = isTeleportDisabled(n1.props);
9599
9843
  const currentContainer = wasDisabled ? container : target;
9600
9844
  const currentAnchor = wasDisabled ? mainAnchor : targetAnchor;
9601
- isSVG = isSVG || isTargetSVG(target);
9845
+ if (namespace === "svg" || isTargetSVG(target)) {
9846
+ namespace = "svg";
9847
+ } else if (namespace === "mathml" || isTargetMathML(target)) {
9848
+ namespace = "mathml";
9849
+ }
9602
9850
  if (dynamicChildren) {
9603
9851
  patchBlockChildren(
9604
9852
  n1.dynamicChildren,
@@ -9606,7 +9854,7 @@ If you want to remount the same app, move your app creation logic into a factory
9606
9854
  currentContainer,
9607
9855
  parentComponent,
9608
9856
  parentSuspense,
9609
- isSVG,
9857
+ namespace,
9610
9858
  slotScopeIds
9611
9859
  );
9612
9860
  traverseStaticChildren(n1, n2, true);
@@ -9618,7 +9866,7 @@ If you want to remount the same app, move your app creation logic into a factory
9618
9866
  currentAnchor,
9619
9867
  parentComponent,
9620
9868
  parentSuspense,
9621
- isSVG,
9869
+ namespace,
9622
9870
  slotScopeIds,
9623
9871
  false
9624
9872
  );
@@ -10302,10 +10550,14 @@ Component that was made reactive: `,
10302
10550
  let currentInstance = null;
10303
10551
  const getCurrentInstance = () => currentInstance || currentRenderingInstance;
10304
10552
  let internalSetCurrentInstance;
10553
+ let setInSSRSetupState;
10305
10554
  {
10306
10555
  internalSetCurrentInstance = (i) => {
10307
10556
  currentInstance = i;
10308
10557
  };
10558
+ setInSSRSetupState = (v) => {
10559
+ isInSSRComponentSetup = v;
10560
+ };
10309
10561
  }
10310
10562
  const setCurrentInstance = (instance) => {
10311
10563
  internalSetCurrentInstance(instance);
@@ -10329,13 +10581,13 @@ Component that was made reactive: `,
10329
10581
  }
10330
10582
  let isInSSRComponentSetup = false;
10331
10583
  function setupComponent(instance, isSSR = false) {
10332
- isInSSRComponentSetup = isSSR;
10584
+ isSSR && setInSSRSetupState(isSSR);
10333
10585
  const { props, children } = instance.vnode;
10334
10586
  const isStateful = isStatefulComponent(instance);
10335
10587
  initProps(instance, props, isStateful, isSSR);
10336
10588
  initSlots(instance, children);
10337
10589
  const setupResult = isStateful ? setupStatefulComponent(instance, isSSR) : void 0;
10338
- isInSSRComponentSetup = false;
10590
+ isSSR && setInSSRSetupState(false);
10339
10591
  return setupResult;
10340
10592
  }
10341
10593
  function setupStatefulComponent(instance, isSSR) {
@@ -10657,9 +10909,9 @@ Component that was made reactive: `,
10657
10909
  return;
10658
10910
  }
10659
10911
  const vueStyle = { style: "color:#3ba776" };
10660
- const numberStyle = { style: "color:#0b1bc9" };
10661
- const stringStyle = { style: "color:#b62e24" };
10662
- const keywordStyle = { style: "color:#9d288c" };
10912
+ const numberStyle = { style: "color:#1677ff" };
10913
+ const stringStyle = { style: "color:#f5222d" };
10914
+ const keywordStyle = { style: "color:#eb2f96" };
10663
10915
  const formatter = {
10664
10916
  header(obj) {
10665
10917
  if (!isObject(obj)) {
@@ -10853,7 +11105,7 @@ Component that was made reactive: `,
10853
11105
  return true;
10854
11106
  }
10855
11107
 
10856
- const version = "3.4.0-alpha.3";
11108
+ const version = "3.4.0-beta.1";
10857
11109
  const ErrorTypeStrings = ErrorTypeStrings$1 ;
10858
11110
  const ssrUtils = null;
10859
11111
  const resolveFilter = resolveFilter$1 ;
@@ -10865,8 +11117,10 @@ Component that was made reactive: `,
10865
11117
  softAssertCompatEnabled
10866
11118
  };
10867
11119
  const compatUtils = _compatUtils ;
11120
+ const DeprecationTypes = DeprecationTypes$1 ;
10868
11121
 
10869
11122
  const svgNS = "http://www.w3.org/2000/svg";
11123
+ const mathmlNS = "http://www.w3.org/1998/Math/MathML";
10870
11124
  const doc = typeof document !== "undefined" ? document : null;
10871
11125
  const templateContainer = doc && /* @__PURE__ */ doc.createElement("template");
10872
11126
  const nodeOps = {
@@ -10879,8 +11133,8 @@ Component that was made reactive: `,
10879
11133
  parent.removeChild(child);
10880
11134
  }
10881
11135
  },
10882
- createElement: (tag, isSVG, is, props) => {
10883
- const el = isSVG ? doc.createElementNS(svgNS, tag) : doc.createElement(tag, is ? { is } : void 0);
11136
+ createElement: (tag, namespace, is, props) => {
11137
+ const el = namespace === "svg" ? doc.createElementNS(svgNS, tag) : namespace === "mathml" ? doc.createElementNS(mathmlNS, tag) : doc.createElement(tag, is ? { is } : void 0);
10884
11138
  if (tag === "select" && props && props.multiple != null) {
10885
11139
  el.setAttribute("multiple", props.multiple);
10886
11140
  }
@@ -10904,7 +11158,7 @@ Component that was made reactive: `,
10904
11158
  // Reason: innerHTML.
10905
11159
  // Static content here can only come from compiled templates.
10906
11160
  // As long as the user only uses trusted templates, this is safe.
10907
- insertStaticContent(content, parent, anchor, isSVG, start, end) {
11161
+ insertStaticContent(content, parent, anchor, namespace, start, end) {
10908
11162
  const before = anchor ? anchor.previousSibling : parent.lastChild;
10909
11163
  if (start && (start === end || start.nextSibling)) {
10910
11164
  while (true) {
@@ -10913,9 +11167,9 @@ Component that was made reactive: `,
10913
11167
  break;
10914
11168
  }
10915
11169
  } else {
10916
- templateContainer.innerHTML = isSVG ? `<svg>${content}</svg>` : content;
11170
+ templateContainer.innerHTML = namespace === "svg" ? `<svg>${content}</svg>` : namespace === "mathml" ? `<math>${content}</math>` : content;
10917
11171
  const template = templateContainer.content;
10918
- if (isSVG) {
11172
+ if (namespace === "svg" || namespace === "mathml") {
10919
11173
  const wrapper = template.firstChild;
10920
11174
  while (wrapper.firstChild) {
10921
11175
  template.appendChild(wrapper.firstChild);
@@ -11553,8 +11807,10 @@ Component that was made reactive: `,
11553
11807
  }
11554
11808
  }
11555
11809
 
11556
- const nativeOnRE = /^on[a-z]/;
11557
- const patchProp = (el, key, prevValue, nextValue, isSVG = false, prevChildren, parentComponent, parentSuspense, unmountChildren) => {
11810
+ const isNativeOn = (key) => key.charCodeAt(0) === 111 && key.charCodeAt(1) === 110 && // lowercase letter
11811
+ key.charCodeAt(2) > 96 && key.charCodeAt(2) < 123;
11812
+ const patchProp = (el, key, prevValue, nextValue, namespace, prevChildren, parentComponent, parentSuspense, unmountChildren) => {
11813
+ const isSVG = namespace === "svg";
11558
11814
  if (key === "class") {
11559
11815
  patchClass(el, nextValue, isSVG);
11560
11816
  } else if (key === "style") {
@@ -11587,7 +11843,7 @@ Component that was made reactive: `,
11587
11843
  if (key === "innerHTML" || key === "textContent") {
11588
11844
  return true;
11589
11845
  }
11590
- if (key in el && nativeOnRE.test(key) && isFunction(value)) {
11846
+ if (key in el && isNativeOn(key) && isFunction(value)) {
11591
11847
  return true;
11592
11848
  }
11593
11849
  return false;
@@ -11604,7 +11860,13 @@ Component that was made reactive: `,
11604
11860
  if (key === "type" && el.tagName === "TEXTAREA") {
11605
11861
  return false;
11606
11862
  }
11607
- if (nativeOnRE.test(key) && isString(value)) {
11863
+ if (key === "width" || key === "height") {
11864
+ const tag = el.tagName;
11865
+ if (tag === "IMG" || tag === "VIDEO" || tag === "CANVAS" || tag === "SOURCE") {
11866
+ return false;
11867
+ }
11868
+ }
11869
+ if (isNativeOn(key) && isString(value)) {
11608
11870
  return false;
11609
11871
  }
11610
11872
  return key in el;
@@ -12282,14 +12544,14 @@ Component that was made reactive: `,
12282
12544
  exact: (e, modifiers) => systemModifiers.some((m) => e[`${m}Key`] && !modifiers.includes(m))
12283
12545
  };
12284
12546
  const withModifiers = (fn, modifiers) => {
12285
- return (event, ...args) => {
12547
+ return fn._withMods || (fn._withMods = (event, ...args) => {
12286
12548
  for (let i = 0; i < modifiers.length; i++) {
12287
12549
  const guard = modifierGuards[modifiers[i]];
12288
12550
  if (guard && guard(event, modifiers))
12289
12551
  return;
12290
12552
  }
12291
12553
  return fn(event, ...args);
12292
- };
12554
+ });
12293
12555
  };
12294
12556
  const keyNames = {
12295
12557
  esc: "escape",
@@ -12317,7 +12579,7 @@ Component that was made reactive: `,
12317
12579
  );
12318
12580
  }
12319
12581
  }
12320
- return (event) => {
12582
+ return fn._withKeys || (fn._withKeys = (event) => {
12321
12583
  if (!("key" in event)) {
12322
12584
  return;
12323
12585
  }
@@ -12345,7 +12607,7 @@ Component that was made reactive: `,
12345
12607
  }
12346
12608
  }
12347
12609
  }
12348
- };
12610
+ });
12349
12611
  };
12350
12612
 
12351
12613
  const rendererOptions = /* @__PURE__ */ extend({ patchProp }, nodeOps);
@@ -12393,7 +12655,7 @@ Component that was made reactive: `,
12393
12655
  }
12394
12656
  }
12395
12657
  container.innerHTML = "";
12396
- const proxy = mount(container, false, container instanceof SVGElement);
12658
+ const proxy = mount(container, false, resolveRootNamespace(container));
12397
12659
  if (container instanceof Element) {
12398
12660
  container.removeAttribute("v-cloak");
12399
12661
  container.setAttribute("data-v-app", "");
@@ -12412,14 +12674,22 @@ Component that was made reactive: `,
12412
12674
  app.mount = (containerOrSelector) => {
12413
12675
  const container = normalizeContainer(containerOrSelector);
12414
12676
  if (container) {
12415
- return mount(container, true, container instanceof SVGElement);
12677
+ return mount(container, true, resolveRootNamespace(container));
12416
12678
  }
12417
12679
  };
12418
12680
  return app;
12419
12681
  };
12682
+ function resolveRootNamespace(container) {
12683
+ if (container instanceof SVGElement) {
12684
+ return "svg";
12685
+ }
12686
+ if (typeof MathMLElement === "function" && container instanceof MathMLElement) {
12687
+ return "mathml";
12688
+ }
12689
+ }
12420
12690
  function injectNativeTagCheck(app) {
12421
12691
  Object.defineProperty(app.config, "isNativeTag", {
12422
- value: (tag) => isHTMLTag(tag) || isSVGTag(tag),
12692
+ value: (tag) => isHTMLTag(tag) || isSVGTag(tag) || isMathMLTag(tag),
12423
12693
  writable: false
12424
12694
  });
12425
12695
  }
@@ -12476,7 +12746,9 @@ Component that was made reactive: `,
12476
12746
  BaseTransition: BaseTransition,
12477
12747
  BaseTransitionPropsValidators: BaseTransitionPropsValidators,
12478
12748
  Comment: Comment,
12749
+ DeprecationTypes: DeprecationTypes,
12479
12750
  EffectScope: EffectScope,
12751
+ ErrorCodes: ErrorCodes,
12480
12752
  ErrorTypeStrings: ErrorTypeStrings,
12481
12753
  Fragment: Fragment,
12482
12754
  KeepAlive: KeepAlive,
@@ -12485,8 +12757,10 @@ Component that was made reactive: `,
12485
12757
  Suspense: Suspense,
12486
12758
  Teleport: Teleport,
12487
12759
  Text: Text,
12760
+ TrackOpTypes: TrackOpTypes,
12488
12761
  Transition: Transition,
12489
12762
  TransitionGroup: TransitionGroup,
12763
+ TriggerOpTypes: TriggerOpTypes,
12490
12764
  VueElement: VueElement,
12491
12765
  assertNumber: assertNumber,
12492
12766
  callWithAsyncErrorHandling: callWithAsyncErrorHandling,