@vue/compat 3.5.0-rc.1 → 3.5.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.
@@ -1,5 +1,5 @@
1
1
  /**
2
- * @vue/compat v3.5.0-rc.1
2
+ * @vue/compat v3.5.1
3
3
  * (c) 2018-present Yuxi (Evan) You and Vue contributors
4
4
  * @license MIT
5
5
  **/
@@ -214,6 +214,14 @@ function isRenderableAttrValue(value) {
214
214
  return type === "string" || type === "number" || type === "boolean";
215
215
  }
216
216
 
217
+ const cssVarNameEscapeSymbolsRE = /[ !"#$%&'()*+,./:;<=>?@[\\\]^`{|}~]/g;
218
+ function getEscapedCssVarName(key, doubleEscape) {
219
+ return key.replace(
220
+ cssVarNameEscapeSymbolsRE,
221
+ (s) => `\\${s}`
222
+ );
223
+ }
224
+
217
225
  function looseCompareArrays(a, b) {
218
226
  if (a.length !== b.length) return false;
219
227
  let equal = true;
@@ -971,7 +979,7 @@ const arrayInstrumentations = {
971
979
  },
972
980
  concat(...args) {
973
981
  return reactiveReadArray(this).concat(
974
- ...args.map((x) => reactiveReadArray(x))
982
+ ...args.map((x) => isArray(x) ? reactiveReadArray(x) : x)
975
983
  );
976
984
  },
977
985
  entries() {
@@ -1077,7 +1085,7 @@ function apply(self, method, fn, thisArg, wrappedRetFn, args) {
1077
1085
  const needsWrap = arr !== self && !isShallow(self);
1078
1086
  const methodFn = arr[method];
1079
1087
  if (methodFn !== arrayProto[method]) {
1080
- const result2 = methodFn.apply(arr, args);
1088
+ const result2 = methodFn.apply(self, args);
1081
1089
  return needsWrap ? toReactive(result2) : result2;
1082
1090
  }
1083
1091
  let wrappedFn = fn;
@@ -3839,7 +3847,9 @@ const BaseTransitionImpl = {
3839
3847
  // #11061, ensure enterHooks is fresh after clone
3840
3848
  (hooks) => enterHooks = hooks
3841
3849
  );
3842
- setTransitionHooks(innerChild, enterHooks);
3850
+ if (innerChild.type !== Comment) {
3851
+ setTransitionHooks(innerChild, enterHooks);
3852
+ }
3843
3853
  const oldChild = instance.subTree;
3844
3854
  const oldInnerChild = oldChild && getInnerChild$1(oldChild);
3845
3855
  if (oldInnerChild && oldInnerChild.type !== Comment && !isSameVNodeType(innerChild, oldInnerChild) && recursiveGetSubtree(instance).type !== Comment) {
@@ -4166,10 +4176,11 @@ function setRef(rawRef, oldRawRef, parentSuspense, vnode, isUnmount = false) {
4166
4176
  const oldRef = oldRawRef && oldRawRef.r;
4167
4177
  const refs = owner.refs === EMPTY_OBJ ? owner.refs = {} : owner.refs;
4168
4178
  const setupState = owner.setupState;
4179
+ const canSetSetupRef = setupState === EMPTY_OBJ ? () => false : (key) => hasOwn(setupState, key) && !(Object.getOwnPropertyDescriptor(refs, key) || EMPTY_OBJ).get;
4169
4180
  if (oldRef != null && oldRef !== ref) {
4170
4181
  if (isString(oldRef)) {
4171
4182
  refs[oldRef] = null;
4172
- if (hasOwn(setupState, oldRef)) {
4183
+ if (canSetSetupRef(oldRef)) {
4173
4184
  setupState[oldRef] = null;
4174
4185
  }
4175
4186
  } else if (isRef(oldRef)) {
@@ -4184,14 +4195,14 @@ function setRef(rawRef, oldRawRef, parentSuspense, vnode, isUnmount = false) {
4184
4195
  if (_isString || _isRef) {
4185
4196
  const doSet = () => {
4186
4197
  if (rawRef.f) {
4187
- const existing = _isString ? hasOwn(setupState, ref) ? setupState[ref] : refs[ref] : ref.value;
4198
+ const existing = _isString ? canSetSetupRef(ref) ? setupState[ref] : refs[ref] : ref.value;
4188
4199
  if (isUnmount) {
4189
4200
  isArray(existing) && remove(existing, refValue);
4190
4201
  } else {
4191
4202
  if (!isArray(existing)) {
4192
4203
  if (_isString) {
4193
4204
  refs[ref] = [refValue];
4194
- if (hasOwn(setupState, ref)) {
4205
+ if (canSetSetupRef(ref)) {
4195
4206
  setupState[ref] = refs[ref];
4196
4207
  }
4197
4208
  } else {
@@ -4204,7 +4215,7 @@ function setRef(rawRef, oldRawRef, parentSuspense, vnode, isUnmount = false) {
4204
4215
  }
4205
4216
  } else if (_isString) {
4206
4217
  refs[ref] = value;
4207
- if (hasOwn(setupState, ref)) {
4218
+ if (canSetSetupRef(ref)) {
4208
4219
  setupState[ref] = value;
4209
4220
  }
4210
4221
  } else if (_isRef) {
@@ -4565,8 +4576,7 @@ Server rendered element contains more child nodes than client vdom.`
4565
4576
  const isText = vnode.type === Text;
4566
4577
  if (node) {
4567
4578
  if (isText && !optimized) {
4568
- let next = children[i + 1];
4569
- if (next && (next = normalizeVNode(next)).type === Text) {
4579
+ if (i + 1 < l && normalizeVNode(children[i + 1]).type === Text) {
4570
4580
  insert(
4571
4581
  createText(
4572
4582
  node.data.slice(vnode.children.length)
@@ -4822,7 +4832,10 @@ function resolveCssVars(instance, vnode, expectedMap) {
4822
4832
  if (instance.getCssVars && (vnode === root || root && root.type === Fragment && root.children.includes(vnode))) {
4823
4833
  const cssVars = instance.getCssVars();
4824
4834
  for (const key in cssVars) {
4825
- expectedMap.set(`--${key}`, String(cssVars[key]));
4835
+ expectedMap.set(
4836
+ `--${getEscapedCssVarName(key)}`,
4837
+ String(cssVars[key])
4838
+ );
4826
4839
  }
4827
4840
  }
4828
4841
  if (vnode === root && instance.parent) {
@@ -5290,10 +5303,11 @@ const KeepAliveImpl = {
5290
5303
  };
5291
5304
  }
5292
5305
  };
5293
- {
5294
- KeepAliveImpl.__isBuildIn = true;
5295
- }
5296
- const KeepAlive = KeepAliveImpl;
5306
+ const decorate$2 = (t) => {
5307
+ t.__isBuiltIn = true;
5308
+ return t;
5309
+ };
5310
+ const KeepAlive = /* @__PURE__ */ decorate$2(KeepAliveImpl) ;
5297
5311
  function matches(pattern, name) {
5298
5312
  if (isArray(pattern)) {
5299
5313
  return pattern.some((p) => matches(p, name));
@@ -7007,7 +7021,7 @@ function createCompatVue$1(createApp, createSingletonApp) {
7007
7021
  return vm;
7008
7022
  }
7009
7023
  }
7010
- Vue.version = `2.6.14-compat:${"3.5.0-rc.1"}`;
7024
+ Vue.version = `2.6.14-compat:${"3.5.1"}`;
7011
7025
  Vue.config = singletonApp.config;
7012
7026
  Vue.use = (plugin, ...options) => {
7013
7027
  if (plugin && isFunction(plugin.install)) {
@@ -12197,7 +12211,7 @@ function isMemoSame(cached, memo) {
12197
12211
  return true;
12198
12212
  }
12199
12213
 
12200
- const version = "3.5.0-rc.1";
12214
+ const version = "3.5.1";
12201
12215
  const warn = !!(process.env.NODE_ENV !== "production") ? warn$1 : NOOP;
12202
12216
  const ErrorTypeStrings = ErrorTypeStrings$1 ;
12203
12217
  const devtools = !!(process.env.NODE_ENV !== "production") || true ? devtools$1 : void 0;
@@ -12308,11 +12322,6 @@ const nodeOps = {
12308
12322
  const TRANSITION = "transition";
12309
12323
  const ANIMATION = "animation";
12310
12324
  const vtcKey = Symbol("_vtc");
12311
- const Transition = (props, { slots }) => h(BaseTransition, resolveTransitionProps(props), slots);
12312
- Transition.displayName = "Transition";
12313
- {
12314
- Transition.__isBuiltIn = true;
12315
- }
12316
12325
  const DOMTransitionPropsValidators = {
12317
12326
  name: String,
12318
12327
  type: String,
@@ -12331,11 +12340,22 @@ const DOMTransitionPropsValidators = {
12331
12340
  leaveActiveClass: String,
12332
12341
  leaveToClass: String
12333
12342
  };
12334
- const TransitionPropsValidators = Transition.props = /* @__PURE__ */ extend(
12343
+ const TransitionPropsValidators = /* @__PURE__ */ extend(
12335
12344
  {},
12336
12345
  BaseTransitionPropsValidators,
12337
12346
  DOMTransitionPropsValidators
12338
12347
  );
12348
+ const decorate$1 = (t) => {
12349
+ t.displayName = "Transition";
12350
+ t.props = TransitionPropsValidators;
12351
+ {
12352
+ t.__isBuiltIn = true;
12353
+ }
12354
+ return t;
12355
+ };
12356
+ const Transition = /* @__PURE__ */ decorate$1(
12357
+ (props, { slots }) => h(BaseTransition, resolveTransitionProps(props), slots)
12358
+ );
12339
12359
  const callHook = (hook, args = []) => {
12340
12360
  if (isArray(hook)) {
12341
12361
  hook.forEach((h2) => h2(...args));
@@ -12905,7 +12925,11 @@ function patchDOMProp(el, key, value, parentComponent) {
12905
12925
  if (key === "value" && tag !== "PROGRESS" && // custom elements may use _value internally
12906
12926
  !tag.includes("-")) {
12907
12927
  const oldValue = tag === "OPTION" ? el.getAttribute("value") || "" : el.value;
12908
- const newValue = value == null ? "" : String(value);
12928
+ const newValue = value == null ? (
12929
+ // #11647: value should be set as empty string for null and undefined,
12930
+ // but <input type="checkbox"> should be set as 'on'.
12931
+ el.type === "checkbox" ? "on" : ""
12932
+ ) : String(value);
12909
12933
  if (oldValue !== newValue || !("_value" in el)) {
12910
12934
  el.value = newValue;
12911
12935
  }
@@ -13545,7 +13569,14 @@ const positionMap = /* @__PURE__ */ new WeakMap();
13545
13569
  const newPositionMap = /* @__PURE__ */ new WeakMap();
13546
13570
  const moveCbKey = Symbol("_moveCb");
13547
13571
  const enterCbKey = Symbol("_enterCb");
13548
- const TransitionGroupImpl = {
13572
+ const decorate = (t) => {
13573
+ delete t.props.mode;
13574
+ {
13575
+ t.__isBuiltIn = true;
13576
+ }
13577
+ return t;
13578
+ };
13579
+ const TransitionGroupImpl = /* @__PURE__ */ decorate({
13549
13580
  name: "TransitionGroup",
13550
13581
  props: /* @__PURE__ */ extend({}, TransitionPropsValidators, {
13551
13582
  tag: String,
@@ -13637,12 +13668,7 @@ const TransitionGroupImpl = {
13637
13668
  return createVNode(tag, null, children);
13638
13669
  };
13639
13670
  }
13640
- };
13641
- {
13642
- TransitionGroupImpl.__isBuiltIn = true;
13643
- }
13644
- const removeMode = (props) => delete props.mode;
13645
- /* @__PURE__ */ removeMode(TransitionGroupImpl.props);
13671
+ });
13646
13672
  const TransitionGroup = TransitionGroupImpl;
13647
13673
  function callPendingCbs(c) {
13648
13674
  const el = c.el;
@@ -13791,12 +13817,16 @@ const vModelCheckbox = {
13791
13817
  };
13792
13818
  function setChecked(el, { value, oldValue }, vnode) {
13793
13819
  el._modelValue = value;
13820
+ let checked;
13794
13821
  if (isArray(value)) {
13795
- el.checked = looseIndexOf(value, vnode.props.value) > -1;
13822
+ checked = looseIndexOf(value, vnode.props.value) > -1;
13796
13823
  } else if (isSet(value)) {
13797
- el.checked = value.has(vnode.props.value);
13798
- } else if (value !== oldValue) {
13799
- el.checked = looseEqual(value, getCheckboxValue(el, true));
13824
+ checked = value.has(vnode.props.value);
13825
+ } else {
13826
+ checked = looseEqual(value, getCheckboxValue(el, true));
13827
+ }
13828
+ if (el.checked !== checked) {
13829
+ el.checked = checked;
13800
13830
  }
13801
13831
  }
13802
13832
  const vModelRadio = {
@@ -1,5 +1,5 @@
1
1
  /**
2
- * @vue/compat v3.5.0-rc.1
2
+ * @vue/compat v3.5.1
3
3
  * (c) 2018-present Yuxi (Evan) You and Vue contributors
4
4
  * @license MIT
5
5
  **/
@@ -217,6 +217,14 @@ var Vue = (function () {
217
217
  return type === "string" || type === "number" || type === "boolean";
218
218
  }
219
219
 
220
+ const cssVarNameEscapeSymbolsRE = /[ !"#$%&'()*+,./:;<=>?@[\\\]^`{|}~]/g;
221
+ function getEscapedCssVarName(key, doubleEscape) {
222
+ return key.replace(
223
+ cssVarNameEscapeSymbolsRE,
224
+ (s) => `\\${s}`
225
+ );
226
+ }
227
+
220
228
  function looseCompareArrays(a, b) {
221
229
  if (a.length !== b.length) return false;
222
230
  let equal = true;
@@ -970,7 +978,7 @@ var Vue = (function () {
970
978
  },
971
979
  concat(...args) {
972
980
  return reactiveReadArray(this).concat(
973
- ...args.map((x) => reactiveReadArray(x))
981
+ ...args.map((x) => isArray(x) ? reactiveReadArray(x) : x)
974
982
  );
975
983
  },
976
984
  entries() {
@@ -1076,7 +1084,7 @@ var Vue = (function () {
1076
1084
  const needsWrap = arr !== self && !isShallow(self);
1077
1085
  const methodFn = arr[method];
1078
1086
  if (methodFn !== arrayProto[method]) {
1079
- const result2 = methodFn.apply(arr, args);
1087
+ const result2 = methodFn.apply(self, args);
1080
1088
  return needsWrap ? toReactive(result2) : result2;
1081
1089
  }
1082
1090
  let wrappedFn = fn;
@@ -3824,7 +3832,9 @@ Details: https://v3-migration.vuejs.org/breaking-changes/migration-build.html`
3824
3832
  // #11061, ensure enterHooks is fresh after clone
3825
3833
  (hooks) => enterHooks = hooks
3826
3834
  );
3827
- setTransitionHooks(innerChild, enterHooks);
3835
+ if (innerChild.type !== Comment) {
3836
+ setTransitionHooks(innerChild, enterHooks);
3837
+ }
3828
3838
  const oldChild = instance.subTree;
3829
3839
  const oldInnerChild = oldChild && getInnerChild$1(oldChild);
3830
3840
  if (oldInnerChild && oldInnerChild.type !== Comment && !isSameVNodeType(innerChild, oldInnerChild) && recursiveGetSubtree(instance).type !== Comment) {
@@ -4150,10 +4160,11 @@ Details: https://v3-migration.vuejs.org/breaking-changes/migration-build.html`
4150
4160
  const oldRef = oldRawRef && oldRawRef.r;
4151
4161
  const refs = owner.refs === EMPTY_OBJ ? owner.refs = {} : owner.refs;
4152
4162
  const setupState = owner.setupState;
4163
+ const canSetSetupRef = setupState === EMPTY_OBJ ? () => false : (key) => hasOwn(setupState, key) && !(Object.getOwnPropertyDescriptor(refs, key) || EMPTY_OBJ).get;
4153
4164
  if (oldRef != null && oldRef !== ref) {
4154
4165
  if (isString(oldRef)) {
4155
4166
  refs[oldRef] = null;
4156
- if (hasOwn(setupState, oldRef)) {
4167
+ if (canSetSetupRef(oldRef)) {
4157
4168
  setupState[oldRef] = null;
4158
4169
  }
4159
4170
  } else if (isRef(oldRef)) {
@@ -4168,14 +4179,14 @@ Details: https://v3-migration.vuejs.org/breaking-changes/migration-build.html`
4168
4179
  if (_isString || _isRef) {
4169
4180
  const doSet = () => {
4170
4181
  if (rawRef.f) {
4171
- const existing = _isString ? hasOwn(setupState, ref) ? setupState[ref] : refs[ref] : ref.value;
4182
+ const existing = _isString ? canSetSetupRef(ref) ? setupState[ref] : refs[ref] : ref.value;
4172
4183
  if (isUnmount) {
4173
4184
  isArray(existing) && remove(existing, refValue);
4174
4185
  } else {
4175
4186
  if (!isArray(existing)) {
4176
4187
  if (_isString) {
4177
4188
  refs[ref] = [refValue];
4178
- if (hasOwn(setupState, ref)) {
4189
+ if (canSetSetupRef(ref)) {
4179
4190
  setupState[ref] = refs[ref];
4180
4191
  }
4181
4192
  } else {
@@ -4188,7 +4199,7 @@ Details: https://v3-migration.vuejs.org/breaking-changes/migration-build.html`
4188
4199
  }
4189
4200
  } else if (_isString) {
4190
4201
  refs[ref] = value;
4191
- if (hasOwn(setupState, ref)) {
4202
+ if (canSetSetupRef(ref)) {
4192
4203
  setupState[ref] = value;
4193
4204
  }
4194
4205
  } else if (_isRef) {
@@ -4538,8 +4549,7 @@ Server rendered element contains more child nodes than client vdom.`
4538
4549
  const isText = vnode.type === Text;
4539
4550
  if (node) {
4540
4551
  if (isText && !optimized) {
4541
- let next = children[i + 1];
4542
- if (next && (next = normalizeVNode(next)).type === Text) {
4552
+ if (i + 1 < l && normalizeVNode(children[i + 1]).type === Text) {
4543
4553
  insert(
4544
4554
  createText(
4545
4555
  node.data.slice(vnode.children.length)
@@ -4795,7 +4805,10 @@ Server rendered element contains fewer child nodes than client vdom.`
4795
4805
  if (instance.getCssVars && (vnode === root || root && root.type === Fragment && root.children.includes(vnode))) {
4796
4806
  const cssVars = instance.getCssVars();
4797
4807
  for (const key in cssVars) {
4798
- expectedMap.set(`--${key}`, String(cssVars[key]));
4808
+ expectedMap.set(
4809
+ `--${getEscapedCssVarName(key)}`,
4810
+ String(cssVars[key])
4811
+ );
4799
4812
  }
4800
4813
  }
4801
4814
  if (vnode === root && instance.parent) {
@@ -5257,10 +5270,11 @@ Server rendered element contains fewer child nodes than client vdom.`
5257
5270
  };
5258
5271
  }
5259
5272
  };
5260
- {
5261
- KeepAliveImpl.__isBuildIn = true;
5262
- }
5263
- const KeepAlive = KeepAliveImpl;
5273
+ const decorate$2 = (t) => {
5274
+ t.__isBuiltIn = true;
5275
+ return t;
5276
+ };
5277
+ const KeepAlive = /* @__PURE__ */ decorate$2(KeepAliveImpl) ;
5264
5278
  function matches(pattern, name) {
5265
5279
  if (isArray(pattern)) {
5266
5280
  return pattern.some((p) => matches(p, name));
@@ -6969,7 +6983,7 @@ If this is a native custom element, make sure to exclude it from component resol
6969
6983
  return vm;
6970
6984
  }
6971
6985
  }
6972
- Vue.version = `2.6.14-compat:${"3.5.0-rc.1"}`;
6986
+ Vue.version = `2.6.14-compat:${"3.5.1"}`;
6973
6987
  Vue.config = singletonApp.config;
6974
6988
  Vue.use = (plugin, ...options) => {
6975
6989
  if (plugin && isFunction(plugin.install)) {
@@ -12069,7 +12083,7 @@ Component that was made reactive: `,
12069
12083
  return true;
12070
12084
  }
12071
12085
 
12072
- const version = "3.5.0-rc.1";
12086
+ const version = "3.5.1";
12073
12087
  const warn = warn$1 ;
12074
12088
  const ErrorTypeStrings = ErrorTypeStrings$1 ;
12075
12089
  const devtools = devtools$1 ;
@@ -12170,11 +12184,6 @@ Component that was made reactive: `,
12170
12184
  const TRANSITION = "transition";
12171
12185
  const ANIMATION = "animation";
12172
12186
  const vtcKey = Symbol("_vtc");
12173
- const Transition = (props, { slots }) => h(BaseTransition, resolveTransitionProps(props), slots);
12174
- Transition.displayName = "Transition";
12175
- {
12176
- Transition.__isBuiltIn = true;
12177
- }
12178
12187
  const DOMTransitionPropsValidators = {
12179
12188
  name: String,
12180
12189
  type: String,
@@ -12193,11 +12202,22 @@ Component that was made reactive: `,
12193
12202
  leaveActiveClass: String,
12194
12203
  leaveToClass: String
12195
12204
  };
12196
- const TransitionPropsValidators = Transition.props = /* @__PURE__ */ extend(
12205
+ const TransitionPropsValidators = /* @__PURE__ */ extend(
12197
12206
  {},
12198
12207
  BaseTransitionPropsValidators,
12199
12208
  DOMTransitionPropsValidators
12200
12209
  );
12210
+ const decorate$1 = (t) => {
12211
+ t.displayName = "Transition";
12212
+ t.props = TransitionPropsValidators;
12213
+ {
12214
+ t.__isBuiltIn = true;
12215
+ }
12216
+ return t;
12217
+ };
12218
+ const Transition = /* @__PURE__ */ decorate$1(
12219
+ (props, { slots }) => h(BaseTransition, resolveTransitionProps(props), slots)
12220
+ );
12201
12221
  const callHook = (hook, args = []) => {
12202
12222
  if (isArray(hook)) {
12203
12223
  hook.forEach((h2) => h2(...args));
@@ -12760,7 +12780,11 @@ Component that was made reactive: `,
12760
12780
  if (key === "value" && tag !== "PROGRESS" && // custom elements may use _value internally
12761
12781
  !tag.includes("-")) {
12762
12782
  const oldValue = tag === "OPTION" ? el.getAttribute("value") || "" : el.value;
12763
- const newValue = value == null ? "" : String(value);
12783
+ const newValue = value == null ? (
12784
+ // #11647: value should be set as empty string for null and undefined,
12785
+ // but <input type="checkbox"> should be set as 'on'.
12786
+ el.type === "checkbox" ? "on" : ""
12787
+ ) : String(value);
12764
12788
  if (oldValue !== newValue || !("_value" in el)) {
12765
12789
  el.value = newValue;
12766
12790
  }
@@ -13388,7 +13412,14 @@ Expected function or array of functions, received type ${typeof value}.`
13388
13412
  const newPositionMap = /* @__PURE__ */ new WeakMap();
13389
13413
  const moveCbKey = Symbol("_moveCb");
13390
13414
  const enterCbKey = Symbol("_enterCb");
13391
- const TransitionGroupImpl = {
13415
+ const decorate = (t) => {
13416
+ delete t.props.mode;
13417
+ {
13418
+ t.__isBuiltIn = true;
13419
+ }
13420
+ return t;
13421
+ };
13422
+ const TransitionGroupImpl = /* @__PURE__ */ decorate({
13392
13423
  name: "TransitionGroup",
13393
13424
  props: /* @__PURE__ */ extend({}, TransitionPropsValidators, {
13394
13425
  tag: String,
@@ -13480,12 +13511,7 @@ Expected function or array of functions, received type ${typeof value}.`
13480
13511
  return createVNode(tag, null, children);
13481
13512
  };
13482
13513
  }
13483
- };
13484
- {
13485
- TransitionGroupImpl.__isBuiltIn = true;
13486
- }
13487
- const removeMode = (props) => delete props.mode;
13488
- /* @__PURE__ */ removeMode(TransitionGroupImpl.props);
13514
+ });
13489
13515
  const TransitionGroup = TransitionGroupImpl;
13490
13516
  function callPendingCbs(c) {
13491
13517
  const el = c.el;
@@ -13634,12 +13660,16 @@ Expected function or array of functions, received type ${typeof value}.`
13634
13660
  };
13635
13661
  function setChecked(el, { value, oldValue }, vnode) {
13636
13662
  el._modelValue = value;
13663
+ let checked;
13637
13664
  if (isArray(value)) {
13638
- el.checked = looseIndexOf(value, vnode.props.value) > -1;
13665
+ checked = looseIndexOf(value, vnode.props.value) > -1;
13639
13666
  } else if (isSet(value)) {
13640
- el.checked = value.has(vnode.props.value);
13641
- } else if (value !== oldValue) {
13642
- el.checked = looseEqual(value, getCheckboxValue(el, true));
13667
+ checked = value.has(vnode.props.value);
13668
+ } else {
13669
+ checked = looseEqual(value, getCheckboxValue(el, true));
13670
+ }
13671
+ if (el.checked !== checked) {
13672
+ el.checked = checked;
13643
13673
  }
13644
13674
  }
13645
13675
  const vModelRadio = {