@vue/compat 3.4.13 → 3.4.15

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.
package/dist/vue.cjs.js CHANGED
@@ -1,5 +1,5 @@
1
1
  /**
2
- * @vue/compat v3.4.13
2
+ * @vue/compat v3.4.15
3
3
  * (c) 2018-present Yuxi (Evan) You and Vue contributors
4
4
  * @license MIT
5
5
  **/
@@ -276,6 +276,13 @@ const isKnownHtmlAttr = /* @__PURE__ */ makeMap(
276
276
  const isKnownSvgAttr = /* @__PURE__ */ makeMap(
277
277
  `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`
278
278
  );
279
+ function isRenderableAttrValue(value) {
280
+ if (value == null) {
281
+ return false;
282
+ }
283
+ const type = typeof value;
284
+ return type === "string" || type === "number" || type === "boolean";
285
+ }
279
286
 
280
287
  const escapeRE = /["'&<>]/;
281
288
  function escapeHtml(string) {
@@ -678,10 +685,7 @@ function triggerEffects(dep, dirtyLevel, debuggerEventExtraInfo) {
678
685
  var _a;
679
686
  pauseScheduling();
680
687
  for (const effect2 of dep.keys()) {
681
- if (dep.get(effect2) !== effect2._trackId) {
682
- continue;
683
- }
684
- if (effect2._dirtyLevel < dirtyLevel) {
688
+ if (effect2._dirtyLevel < dirtyLevel && dep.get(effect2) === effect2._trackId) {
685
689
  const lastDirtyLevel = effect2._dirtyLevel;
686
690
  effect2._dirtyLevel = dirtyLevel;
687
691
  if (lastDirtyLevel === 0) {
@@ -692,12 +696,17 @@ function triggerEffects(dep, dirtyLevel, debuggerEventExtraInfo) {
692
696
  effect2.trigger();
693
697
  }
694
698
  }
695
- if (effect2.scheduler && effect2._shouldSchedule && (!effect2._runnings || effect2.allowRecurse)) {
699
+ }
700
+ scheduleEffects(dep);
701
+ resetScheduling();
702
+ }
703
+ function scheduleEffects(dep) {
704
+ for (const effect2 of dep.keys()) {
705
+ if (effect2.scheduler && effect2._shouldSchedule && (!effect2._runnings || effect2.allowRecurse) && dep.get(effect2) === effect2._trackId) {
696
706
  effect2._shouldSchedule = false;
697
707
  queueEffectSchedulers.push(effect2.scheduler);
698
708
  }
699
709
  }
700
- resetScheduling();
701
710
  }
702
711
 
703
712
  const createDep = (cleanup, computed) => {
@@ -1380,7 +1389,8 @@ class ComputedRefImpl {
1380
1389
  this["__v_isReadonly"] = false;
1381
1390
  this.effect = new ReactiveEffect(
1382
1391
  () => getter(this._value),
1383
- () => triggerRefValue(this, 1)
1392
+ () => triggerRefValue(this, 1),
1393
+ () => this.dep && scheduleEffects(this.dep)
1384
1394
  );
1385
1395
  this.effect.computed = this;
1386
1396
  this.effect.active = this._cacheable = !isSSR;
@@ -1394,6 +1404,9 @@ class ComputedRefImpl {
1394
1404
  }
1395
1405
  }
1396
1406
  trackRefValue(self);
1407
+ if (self.effect._dirtyLevel >= 1) {
1408
+ triggerRefValue(self, 1);
1409
+ }
1397
1410
  return self._value;
1398
1411
  }
1399
1412
  set value(newValue) {
@@ -6566,7 +6579,7 @@ function createCompatVue$1(createApp, createSingletonApp) {
6566
6579
  return vm;
6567
6580
  }
6568
6581
  }
6569
- Vue.version = `2.6.14-compat:${"3.4.13"}`;
6582
+ Vue.version = `2.6.14-compat:${"3.4.15"}`;
6570
6583
  Vue.config = singletonApp.config;
6571
6584
  Vue.use = (p, ...options) => {
6572
6585
  if (p && isFunction(p.install)) {
@@ -7635,7 +7648,7 @@ const normalizeSlot = (key, rawSlot, ctx) => {
7635
7648
  return rawSlot;
7636
7649
  }
7637
7650
  const normalized = withCtx((...args) => {
7638
- if (currentInstance) {
7651
+ if (currentInstance && (!ctx || ctx.root === currentInstance.root)) {
7639
7652
  warn$1(
7640
7653
  `Slot "${key}" invoked outside of the render function: this will not track dependencies used in the slot. Invoke the slot function inside the render function instead.`
7641
7654
  );
@@ -7773,9 +7786,10 @@ function setRef(rawRef, oldRawRef, parentSuspense, vnode, isUnmount = false) {
7773
7786
  } else {
7774
7787
  const _isString = isString(ref);
7775
7788
  const _isRef = isRef(ref);
7789
+ const isVFor = rawRef.f;
7776
7790
  if (_isString || _isRef) {
7777
7791
  const doSet = () => {
7778
- if (rawRef.f) {
7792
+ if (isVFor) {
7779
7793
  const existing = _isString ? hasOwn(setupState, ref) ? setupState[ref] : refs[ref] : ref.value;
7780
7794
  if (isUnmount) {
7781
7795
  isArray(existing) && remove(existing, refValue);
@@ -7808,11 +7822,11 @@ function setRef(rawRef, oldRawRef, parentSuspense, vnode, isUnmount = false) {
7808
7822
  warn$1("Invalid template ref type:", ref, `(${typeof ref})`);
7809
7823
  }
7810
7824
  };
7811
- if (value) {
7825
+ if (isUnmount || isVFor) {
7826
+ doSet();
7827
+ } else {
7812
7828
  doSet.id = -1;
7813
7829
  queuePostRenderEffect(doSet, parentSuspense);
7814
- } else {
7815
- doSet();
7816
7830
  }
7817
7831
  } else {
7818
7832
  warn$1("Invalid template ref type:", ref, `(${typeof ref})`);
@@ -8322,11 +8336,12 @@ function propHasMismatch(el, key, clientValue, vnode) {
8322
8336
  } else {
8323
8337
  if (el.hasAttribute(key)) {
8324
8338
  actual = el.getAttribute(key);
8339
+ } else if (key === "value" && el.tagName === "TEXTAREA") {
8340
+ actual = el.value;
8325
8341
  } else {
8326
- const serverValue = el[key];
8327
- actual = isObject(serverValue) || serverValue == null ? "" : String(serverValue);
8342
+ actual = false;
8328
8343
  }
8329
- expected = isObject(clientValue) || clientValue == null ? "" : String(clientValue);
8344
+ expected = isRenderableAttrValue(clientValue) ? String(clientValue) : false;
8330
8345
  }
8331
8346
  if (actual !== expected) {
8332
8347
  mismatchType = `attribute`;
@@ -11398,7 +11413,7 @@ function isMemoSame(cached, memo) {
11398
11413
  return true;
11399
11414
  }
11400
11415
 
11401
- const version = "3.4.13";
11416
+ const version = "3.4.15";
11402
11417
  const warn = warn$1 ;
11403
11418
  const ErrorTypeStrings = ErrorTypeStrings$1 ;
11404
11419
  const devtools = devtools$1 ;
@@ -12714,35 +12729,52 @@ const vModelSelect = {
12714
12729
  el[assignKey](
12715
12730
  el.multiple ? isSetModel ? new Set(selectedVal) : selectedVal : selectedVal[0]
12716
12731
  );
12732
+ el._assigning = true;
12733
+ nextTick(() => {
12734
+ el._assigning = false;
12735
+ });
12717
12736
  });
12718
12737
  el[assignKey] = getModelAssigner(vnode);
12719
12738
  },
12720
12739
  // set value in mounted & updated because <select> relies on its children
12721
12740
  // <option>s.
12722
- mounted(el, { value }) {
12723
- setSelected(el, value);
12741
+ mounted(el, { value, oldValue, modifiers: { number } }) {
12742
+ setSelected(el, value, oldValue, number);
12724
12743
  },
12725
12744
  beforeUpdate(el, _binding, vnode) {
12726
12745
  el[assignKey] = getModelAssigner(vnode);
12727
12746
  },
12728
- updated(el, { value }) {
12729
- setSelected(el, value);
12747
+ updated(el, { value, oldValue, modifiers: { number } }) {
12748
+ if (!el._assigning) {
12749
+ setSelected(el, value, oldValue, number);
12750
+ }
12730
12751
  }
12731
12752
  };
12732
- function setSelected(el, value) {
12753
+ function setSelected(el, value, oldValue, number) {
12733
12754
  const isMultiple = el.multiple;
12734
- if (isMultiple && !isArray(value) && !isSet(value)) {
12755
+ const isArrayValue = isArray(value);
12756
+ if (isMultiple && !isArrayValue && !isSet(value)) {
12735
12757
  warn(
12736
12758
  `<select multiple v-model> expects an Array or Set value for its binding, but got ${Object.prototype.toString.call(value).slice(8, -1)}.`
12737
12759
  );
12738
12760
  return;
12739
12761
  }
12762
+ if (isArrayValue && looseEqual(value, oldValue)) {
12763
+ return;
12764
+ }
12740
12765
  for (let i = 0, l = el.options.length; i < l; i++) {
12741
12766
  const option = el.options[i];
12742
12767
  const optionValue = getValue(option);
12743
12768
  if (isMultiple) {
12744
- if (isArray(value)) {
12745
- option.selected = looseIndexOf(value, optionValue) > -1;
12769
+ if (isArrayValue) {
12770
+ const optionType = typeof optionValue;
12771
+ if (optionType === "string" || optionType === "number") {
12772
+ option.selected = value.includes(
12773
+ number ? looseToNumber(optionValue) : optionValue
12774
+ );
12775
+ } else {
12776
+ option.selected = looseIndexOf(value, optionValue) > -1;
12777
+ }
12746
12778
  } else {
12747
12779
  option.selected = value.has(optionValue);
12748
12780
  }
@@ -1,5 +1,5 @@
1
1
  /**
2
- * @vue/compat v3.4.13
2
+ * @vue/compat v3.4.15
3
3
  * (c) 2018-present Yuxi (Evan) You and Vue contributors
4
4
  * @license MIT
5
5
  **/
@@ -600,10 +600,7 @@ const queueEffectSchedulers = [];
600
600
  function triggerEffects(dep, dirtyLevel, debuggerEventExtraInfo) {
601
601
  pauseScheduling();
602
602
  for (const effect2 of dep.keys()) {
603
- if (dep.get(effect2) !== effect2._trackId) {
604
- continue;
605
- }
606
- if (effect2._dirtyLevel < dirtyLevel) {
603
+ if (effect2._dirtyLevel < dirtyLevel && dep.get(effect2) === effect2._trackId) {
607
604
  const lastDirtyLevel = effect2._dirtyLevel;
608
605
  effect2._dirtyLevel = dirtyLevel;
609
606
  if (lastDirtyLevel === 0) {
@@ -611,12 +608,17 @@ function triggerEffects(dep, dirtyLevel, debuggerEventExtraInfo) {
611
608
  effect2.trigger();
612
609
  }
613
610
  }
614
- if (effect2.scheduler && effect2._shouldSchedule && (!effect2._runnings || effect2.allowRecurse)) {
611
+ }
612
+ scheduleEffects(dep);
613
+ resetScheduling();
614
+ }
615
+ function scheduleEffects(dep) {
616
+ for (const effect2 of dep.keys()) {
617
+ if (effect2.scheduler && effect2._shouldSchedule && (!effect2._runnings || effect2.allowRecurse) && dep.get(effect2) === effect2._trackId) {
615
618
  effect2._shouldSchedule = false;
616
619
  queueEffectSchedulers.push(effect2.scheduler);
617
620
  }
618
621
  }
619
- resetScheduling();
620
622
  }
621
623
 
622
624
  const createDep = (cleanup, computed) => {
@@ -1248,7 +1250,8 @@ class ComputedRefImpl {
1248
1250
  this["__v_isReadonly"] = false;
1249
1251
  this.effect = new ReactiveEffect(
1250
1252
  () => getter(this._value),
1251
- () => triggerRefValue(this, 1)
1253
+ () => triggerRefValue(this, 1),
1254
+ () => this.dep && scheduleEffects(this.dep)
1252
1255
  );
1253
1256
  this.effect.computed = this;
1254
1257
  this.effect.active = this._cacheable = !isSSR;
@@ -1262,6 +1265,9 @@ class ComputedRefImpl {
1262
1265
  }
1263
1266
  }
1264
1267
  trackRefValue(self);
1268
+ if (self.effect._dirtyLevel >= 1) {
1269
+ triggerRefValue(self, 1);
1270
+ }
1265
1271
  return self._value;
1266
1272
  }
1267
1273
  set value(newValue) {
@@ -1553,7 +1559,7 @@ function handleError(err, instance, type, throwInDev = true) {
1553
1559
  if (instance) {
1554
1560
  let cur = instance.parent;
1555
1561
  const exposedInstance = instance.proxy;
1556
- const errorInfo = `https://vuejs.org/errors/#runtime-${type}`;
1562
+ const errorInfo = `https://vuejs.org/error-reference/#runtime-${type}`;
1557
1563
  while (cur) {
1558
1564
  const errorCapturedHooks = cur.ec;
1559
1565
  if (errorCapturedHooks) {
@@ -5250,7 +5256,7 @@ function createCompatVue$1(createApp, createSingletonApp) {
5250
5256
  return vm;
5251
5257
  }
5252
5258
  }
5253
- Vue.version = `2.6.14-compat:${"3.4.13"}`;
5259
+ Vue.version = `2.6.14-compat:${"3.4.15"}`;
5254
5260
  Vue.config = singletonApp.config;
5255
5261
  Vue.use = (p, ...options) => {
5256
5262
  if (p && isFunction(p.install)) {
@@ -6198,9 +6204,10 @@ function setRef(rawRef, oldRawRef, parentSuspense, vnode, isUnmount = false) {
6198
6204
  } else {
6199
6205
  const _isString = isString(ref);
6200
6206
  const _isRef = isRef(ref);
6207
+ const isVFor = rawRef.f;
6201
6208
  if (_isString || _isRef) {
6202
6209
  const doSet = () => {
6203
- if (rawRef.f) {
6210
+ if (isVFor) {
6204
6211
  const existing = _isString ? hasOwn(setupState, ref) ? setupState[ref] : refs[ref] : ref.value;
6205
6212
  if (isUnmount) {
6206
6213
  isArray(existing) && remove(existing, refValue);
@@ -6231,11 +6238,11 @@ function setRef(rawRef, oldRawRef, parentSuspense, vnode, isUnmount = false) {
6231
6238
  refs[rawRef.k] = value;
6232
6239
  } else ;
6233
6240
  };
6234
- if (value) {
6241
+ if (isUnmount || isVFor) {
6242
+ doSet();
6243
+ } else {
6235
6244
  doSet.id = -1;
6236
6245
  queuePostRenderEffect(doSet, parentSuspense);
6237
- } else {
6238
- doSet();
6239
6246
  }
6240
6247
  }
6241
6248
  }
@@ -9109,7 +9116,7 @@ function isMemoSame(cached, memo) {
9109
9116
  return true;
9110
9117
  }
9111
9118
 
9112
- const version = "3.4.13";
9119
+ const version = "3.4.15";
9113
9120
  const warn$1 = NOOP;
9114
9121
  const ErrorTypeStrings = ErrorTypeStrings$1 ;
9115
9122
  const devtools = void 0;
@@ -10376,32 +10383,49 @@ const vModelSelect = {
10376
10383
  el[assignKey](
10377
10384
  el.multiple ? isSetModel ? new Set(selectedVal) : selectedVal : selectedVal[0]
10378
10385
  );
10386
+ el._assigning = true;
10387
+ nextTick(() => {
10388
+ el._assigning = false;
10389
+ });
10379
10390
  });
10380
10391
  el[assignKey] = getModelAssigner(vnode);
10381
10392
  },
10382
10393
  // set value in mounted & updated because <select> relies on its children
10383
10394
  // <option>s.
10384
- mounted(el, { value }) {
10385
- setSelected(el, value);
10395
+ mounted(el, { value, oldValue, modifiers: { number } }) {
10396
+ setSelected(el, value, oldValue, number);
10386
10397
  },
10387
10398
  beforeUpdate(el, _binding, vnode) {
10388
10399
  el[assignKey] = getModelAssigner(vnode);
10389
10400
  },
10390
- updated(el, { value }) {
10391
- setSelected(el, value);
10401
+ updated(el, { value, oldValue, modifiers: { number } }) {
10402
+ if (!el._assigning) {
10403
+ setSelected(el, value, oldValue, number);
10404
+ }
10392
10405
  }
10393
10406
  };
10394
- function setSelected(el, value) {
10407
+ function setSelected(el, value, oldValue, number) {
10395
10408
  const isMultiple = el.multiple;
10396
- if (isMultiple && !isArray(value) && !isSet(value)) {
10409
+ const isArrayValue = isArray(value);
10410
+ if (isMultiple && !isArrayValue && !isSet(value)) {
10411
+ return;
10412
+ }
10413
+ if (isArrayValue && looseEqual(value, oldValue)) {
10397
10414
  return;
10398
10415
  }
10399
10416
  for (let i = 0, l = el.options.length; i < l; i++) {
10400
10417
  const option = el.options[i];
10401
10418
  const optionValue = getValue(option);
10402
10419
  if (isMultiple) {
10403
- if (isArray(value)) {
10404
- option.selected = looseIndexOf(value, optionValue) > -1;
10420
+ if (isArrayValue) {
10421
+ const optionType = typeof optionValue;
10422
+ if (optionType === "string" || optionType === "number") {
10423
+ option.selected = value.includes(
10424
+ number ? looseToNumber(optionValue) : optionValue
10425
+ );
10426
+ } else {
10427
+ option.selected = looseIndexOf(value, optionValue) > -1;
10428
+ }
10405
10429
  } else {
10406
10430
  option.selected = value.has(optionValue);
10407
10431
  }
@@ -1,5 +1,5 @@
1
1
  /**
2
- * @vue/compat v3.4.13
2
+ * @vue/compat v3.4.15
3
3
  * (c) 2018-present Yuxi (Evan) You and Vue contributors
4
4
  * @license MIT
5
5
  **/
@@ -265,6 +265,13 @@ const isKnownHtmlAttr = /* @__PURE__ */ makeMap(
265
265
  const isKnownSvgAttr = /* @__PURE__ */ makeMap(
266
266
  `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`
267
267
  );
268
+ function isRenderableAttrValue(value) {
269
+ if (value == null) {
270
+ return false;
271
+ }
272
+ const type = typeof value;
273
+ return type === "string" || type === "number" || type === "boolean";
274
+ }
268
275
 
269
276
  function looseCompareArrays(a, b) {
270
277
  if (a.length !== b.length)
@@ -627,10 +634,7 @@ function triggerEffects(dep, dirtyLevel, debuggerEventExtraInfo) {
627
634
  var _a;
628
635
  pauseScheduling();
629
636
  for (const effect2 of dep.keys()) {
630
- if (dep.get(effect2) !== effect2._trackId) {
631
- continue;
632
- }
633
- if (effect2._dirtyLevel < dirtyLevel) {
637
+ if (effect2._dirtyLevel < dirtyLevel && dep.get(effect2) === effect2._trackId) {
634
638
  const lastDirtyLevel = effect2._dirtyLevel;
635
639
  effect2._dirtyLevel = dirtyLevel;
636
640
  if (lastDirtyLevel === 0) {
@@ -641,12 +645,17 @@ function triggerEffects(dep, dirtyLevel, debuggerEventExtraInfo) {
641
645
  effect2.trigger();
642
646
  }
643
647
  }
644
- if (effect2.scheduler && effect2._shouldSchedule && (!effect2._runnings || effect2.allowRecurse)) {
648
+ }
649
+ scheduleEffects(dep);
650
+ resetScheduling();
651
+ }
652
+ function scheduleEffects(dep) {
653
+ for (const effect2 of dep.keys()) {
654
+ if (effect2.scheduler && effect2._shouldSchedule && (!effect2._runnings || effect2.allowRecurse) && dep.get(effect2) === effect2._trackId) {
645
655
  effect2._shouldSchedule = false;
646
656
  queueEffectSchedulers.push(effect2.scheduler);
647
657
  }
648
658
  }
649
- resetScheduling();
650
659
  }
651
660
 
652
661
  const createDep = (cleanup, computed) => {
@@ -1329,7 +1338,8 @@ class ComputedRefImpl {
1329
1338
  this["__v_isReadonly"] = false;
1330
1339
  this.effect = new ReactiveEffect(
1331
1340
  () => getter(this._value),
1332
- () => triggerRefValue(this, 1)
1341
+ () => triggerRefValue(this, 1),
1342
+ () => this.dep && scheduleEffects(this.dep)
1333
1343
  );
1334
1344
  this.effect.computed = this;
1335
1345
  this.effect.active = this._cacheable = !isSSR;
@@ -1343,6 +1353,9 @@ class ComputedRefImpl {
1343
1353
  }
1344
1354
  }
1345
1355
  trackRefValue(self);
1356
+ if (self.effect._dirtyLevel >= 1) {
1357
+ triggerRefValue(self, 1);
1358
+ }
1346
1359
  return self._value;
1347
1360
  }
1348
1361
  set value(newValue) {
@@ -6488,7 +6501,7 @@ function createCompatVue$1(createApp, createSingletonApp) {
6488
6501
  return vm;
6489
6502
  }
6490
6503
  }
6491
- Vue.version = `2.6.14-compat:${"3.4.13"}`;
6504
+ Vue.version = `2.6.14-compat:${"3.4.15"}`;
6492
6505
  Vue.config = singletonApp.config;
6493
6506
  Vue.use = (p, ...options) => {
6494
6507
  if (p && isFunction(p.install)) {
@@ -7557,7 +7570,7 @@ const normalizeSlot = (key, rawSlot, ctx) => {
7557
7570
  return rawSlot;
7558
7571
  }
7559
7572
  const normalized = withCtx((...args) => {
7560
- if (currentInstance) {
7573
+ if (currentInstance && (!ctx || ctx.root === currentInstance.root)) {
7561
7574
  warn$1(
7562
7575
  `Slot "${key}" invoked outside of the render function: this will not track dependencies used in the slot. Invoke the slot function inside the render function instead.`
7563
7576
  );
@@ -7695,9 +7708,10 @@ function setRef(rawRef, oldRawRef, parentSuspense, vnode, isUnmount = false) {
7695
7708
  } else {
7696
7709
  const _isString = isString(ref);
7697
7710
  const _isRef = isRef(ref);
7711
+ const isVFor = rawRef.f;
7698
7712
  if (_isString || _isRef) {
7699
7713
  const doSet = () => {
7700
- if (rawRef.f) {
7714
+ if (isVFor) {
7701
7715
  const existing = _isString ? hasOwn(setupState, ref) ? setupState[ref] : refs[ref] : ref.value;
7702
7716
  if (isUnmount) {
7703
7717
  isArray(existing) && remove(existing, refValue);
@@ -7730,11 +7744,11 @@ function setRef(rawRef, oldRawRef, parentSuspense, vnode, isUnmount = false) {
7730
7744
  warn$1("Invalid template ref type:", ref, `(${typeof ref})`);
7731
7745
  }
7732
7746
  };
7733
- if (value) {
7747
+ if (isUnmount || isVFor) {
7748
+ doSet();
7749
+ } else {
7734
7750
  doSet.id = -1;
7735
7751
  queuePostRenderEffect(doSet, parentSuspense);
7736
- } else {
7737
- doSet();
7738
7752
  }
7739
7753
  } else {
7740
7754
  warn$1("Invalid template ref type:", ref, `(${typeof ref})`);
@@ -8244,11 +8258,12 @@ function propHasMismatch(el, key, clientValue, vnode) {
8244
8258
  } else {
8245
8259
  if (el.hasAttribute(key)) {
8246
8260
  actual = el.getAttribute(key);
8261
+ } else if (key === "value" && el.tagName === "TEXTAREA") {
8262
+ actual = el.value;
8247
8263
  } else {
8248
- const serverValue = el[key];
8249
- actual = isObject(serverValue) || serverValue == null ? "" : String(serverValue);
8264
+ actual = false;
8250
8265
  }
8251
- expected = isObject(clientValue) || clientValue == null ? "" : String(clientValue);
8266
+ expected = isRenderableAttrValue(clientValue) ? String(clientValue) : false;
8252
8267
  }
8253
8268
  if (actual !== expected) {
8254
8269
  mismatchType = `attribute`;
@@ -11303,7 +11318,7 @@ function isMemoSame(cached, memo) {
11303
11318
  return true;
11304
11319
  }
11305
11320
 
11306
- const version = "3.4.13";
11321
+ const version = "3.4.15";
11307
11322
  const warn = warn$1 ;
11308
11323
  const ErrorTypeStrings = ErrorTypeStrings$1 ;
11309
11324
  const devtools = devtools$1 ;
@@ -12662,35 +12677,52 @@ const vModelSelect = {
12662
12677
  el[assignKey](
12663
12678
  el.multiple ? isSetModel ? new Set(selectedVal) : selectedVal : selectedVal[0]
12664
12679
  );
12680
+ el._assigning = true;
12681
+ nextTick(() => {
12682
+ el._assigning = false;
12683
+ });
12665
12684
  });
12666
12685
  el[assignKey] = getModelAssigner(vnode);
12667
12686
  },
12668
12687
  // set value in mounted & updated because <select> relies on its children
12669
12688
  // <option>s.
12670
- mounted(el, { value }) {
12671
- setSelected(el, value);
12689
+ mounted(el, { value, oldValue, modifiers: { number } }) {
12690
+ setSelected(el, value, oldValue, number);
12672
12691
  },
12673
12692
  beforeUpdate(el, _binding, vnode) {
12674
12693
  el[assignKey] = getModelAssigner(vnode);
12675
12694
  },
12676
- updated(el, { value }) {
12677
- setSelected(el, value);
12695
+ updated(el, { value, oldValue, modifiers: { number } }) {
12696
+ if (!el._assigning) {
12697
+ setSelected(el, value, oldValue, number);
12698
+ }
12678
12699
  }
12679
12700
  };
12680
- function setSelected(el, value) {
12701
+ function setSelected(el, value, oldValue, number) {
12681
12702
  const isMultiple = el.multiple;
12682
- if (isMultiple && !isArray(value) && !isSet(value)) {
12703
+ const isArrayValue = isArray(value);
12704
+ if (isMultiple && !isArrayValue && !isSet(value)) {
12683
12705
  warn(
12684
12706
  `<select multiple v-model> expects an Array or Set value for its binding, but got ${Object.prototype.toString.call(value).slice(8, -1)}.`
12685
12707
  );
12686
12708
  return;
12687
12709
  }
12710
+ if (isArrayValue && looseEqual(value, oldValue)) {
12711
+ return;
12712
+ }
12688
12713
  for (let i = 0, l = el.options.length; i < l; i++) {
12689
12714
  const option = el.options[i];
12690
12715
  const optionValue = getValue(option);
12691
12716
  if (isMultiple) {
12692
- if (isArray(value)) {
12693
- option.selected = looseIndexOf(value, optionValue) > -1;
12717
+ if (isArrayValue) {
12718
+ const optionType = typeof optionValue;
12719
+ if (optionType === "string" || optionType === "number") {
12720
+ option.selected = value.includes(
12721
+ number ? looseToNumber(optionValue) : optionValue
12722
+ );
12723
+ } else {
12724
+ option.selected = looseIndexOf(value, optionValue) > -1;
12725
+ }
12694
12726
  } else {
12695
12727
  option.selected = value.has(optionValue);
12696
12728
  }