@vue/compat 3.3.8 → 3.3.10

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.
@@ -12,8 +12,8 @@ const EMPTY_ARR = !!(process.env.NODE_ENV !== "production") ? Object.freeze([])
12
12
  const NOOP = () => {
13
13
  };
14
14
  const NO = () => false;
15
- const onRE = /^on[^a-z]/;
16
- const isOn = (key) => onRE.test(key);
15
+ const isOn = (key) => key.charCodeAt(0) === 111 && key.charCodeAt(1) === 110 && // uppercase letter
16
+ (key.charCodeAt(2) > 122 || key.charCodeAt(2) < 97);
17
17
  const isModelListener = (key) => key.startsWith("onUpdate:");
18
18
  const extend = Object.assign;
19
19
  const remove = (arr, el) => {
@@ -940,7 +940,7 @@ function createReadonlyMethod(type) {
940
940
  toRaw(this)
941
941
  );
942
942
  }
943
- return type === "delete" ? false : this;
943
+ return type === "delete" ? false : type === "clear" ? void 0 : this;
944
944
  };
945
945
  }
946
946
  function createInstrumentations() {
@@ -2681,9 +2681,19 @@ function renderComponentRoot(instance) {
2681
2681
  try {
2682
2682
  if (vnode.shapeFlag & 4) {
2683
2683
  const proxyToUse = withProxy || proxy;
2684
+ const thisProxy = !!(process.env.NODE_ENV !== "production") && setupState.__isScriptSetup ? new Proxy(proxyToUse, {
2685
+ get(target, key, receiver) {
2686
+ warn(
2687
+ `Property '${String(
2688
+ key
2689
+ )}' was accessed via 'this'. Avoid using 'this' in templates.`
2690
+ );
2691
+ return Reflect.get(target, key, receiver);
2692
+ }
2693
+ }) : proxyToUse;
2684
2694
  result = normalizeVNode(
2685
2695
  render.call(
2686
- proxyToUse,
2696
+ thisProxy,
2687
2697
  proxyToUse,
2688
2698
  renderCache,
2689
2699
  props,
@@ -3314,7 +3324,12 @@ function createSuspenseBoundary(vnode, parentSuspense, parentComponent, containe
3314
3324
  if (delayEnter) {
3315
3325
  activeBranch.transition.afterLeave = () => {
3316
3326
  if (pendingId === suspense.pendingId) {
3317
- move(pendingBranch, container2, anchor2, 0);
3327
+ move(
3328
+ pendingBranch,
3329
+ container2,
3330
+ next(activeBranch),
3331
+ 0
3332
+ );
3318
3333
  queuePostFlushCb(effects);
3319
3334
  }
3320
3335
  };
@@ -3361,7 +3376,6 @@ function createSuspenseBoundary(vnode, parentSuspense, parentComponent, containe
3361
3376
  }
3362
3377
  const { vnode: vnode2, activeBranch, parentComponent: parentComponent2, container: container2, isSVG: isSVG2 } = suspense;
3363
3378
  triggerEvent(vnode2, "onFallback");
3364
- const anchor2 = next(activeBranch);
3365
3379
  const mountFallback = () => {
3366
3380
  if (!suspense.isInFallback) {
3367
3381
  return;
@@ -3370,7 +3384,7 @@ function createSuspenseBoundary(vnode, parentSuspense, parentComponent, containe
3370
3384
  null,
3371
3385
  fallbackVNode,
3372
3386
  container2,
3373
- anchor2,
3387
+ next(activeBranch),
3374
3388
  parentComponent2,
3375
3389
  null,
3376
3390
  // fallback tree will not have suspense context
@@ -3713,6 +3727,7 @@ function doWatch(source, cb, { immediate, deep, flush, onTrack, onTrigger } = EM
3713
3727
  let onCleanup = (fn) => {
3714
3728
  cleanup = effect.onStop = () => {
3715
3729
  callWithErrorHandling(fn, instance, 4);
3730
+ cleanup = effect.onStop = void 0;
3716
3731
  };
3717
3732
  };
3718
3733
  let ssrCleanup;
@@ -4212,7 +4227,11 @@ function emptyPlaceholder(vnode) {
4212
4227
  }
4213
4228
  }
4214
4229
  function getKeepAliveChild(vnode) {
4215
- return isKeepAlive(vnode) ? vnode.children ? vnode.children[0] : void 0 : vnode;
4230
+ return isKeepAlive(vnode) ? (
4231
+ // #7121 ensure get the child component subtree in case
4232
+ // it's been replaced during HMR
4233
+ !!(process.env.NODE_ENV !== "production") && vnode.component ? vnode.component.subTree : vnode.children ? vnode.children[0] : void 0
4234
+ ) : vnode;
4216
4235
  }
4217
4236
  function setTransitionHooks(vnode, hooks) {
4218
4237
  if (vnode.shapeFlag & 6 && vnode.component) {
@@ -6237,7 +6256,7 @@ function createCompatVue$1(createApp, createSingletonApp) {
6237
6256
  return vm;
6238
6257
  }
6239
6258
  }
6240
- Vue.version = `2.6.14-compat:${"3.3.8"}`;
6259
+ Vue.version = `2.6.14-compat:${"3.3.10"}`;
6241
6260
  Vue.config = singletonApp.config;
6242
6261
  Vue.use = (p, ...options) => {
6243
6262
  if (p && isFunction(p.install)) {
@@ -7268,6 +7287,9 @@ function assertType(value, type) {
7268
7287
  };
7269
7288
  }
7270
7289
  function getInvalidTypeMessage(name, value, expectedTypes) {
7290
+ if (expectedTypes.length === 0) {
7291
+ return `Prop type [] for prop "${name}" won't match anything. Did you mean to use type Array instead?`;
7292
+ }
7271
7293
  let message = `Invalid prop: type check failed for prop "${name}". Expected ${expectedTypes.map(capitalize).join(" | ")}`;
7272
7294
  const expectedType = expectedTypes[0];
7273
7295
  const receivedType = toRawType(value);
@@ -7539,6 +7561,20 @@ function createHydrationFunctions(rendererInternals) {
7539
7561
  const { type, ref, shapeFlag, patchFlag } = vnode;
7540
7562
  let domType = node.nodeType;
7541
7563
  vnode.el = node;
7564
+ if (!!(process.env.NODE_ENV !== "production") || __VUE_PROD_DEVTOOLS__) {
7565
+ if (!("__vnode" in node)) {
7566
+ Object.defineProperty(node, "__vnode", {
7567
+ value: vnode,
7568
+ enumerable: false
7569
+ });
7570
+ }
7571
+ if (!("__vueParentComponent" in node)) {
7572
+ Object.defineProperty(node, "__vueParentComponent", {
7573
+ value: parentComponent,
7574
+ enumerable: false
7575
+ });
7576
+ }
7577
+ }
7542
7578
  if (patchFlag === -2) {
7543
7579
  optimized = false;
7544
7580
  vnode.dynamicChildren = null;
@@ -7700,15 +7736,16 @@ function createHydrationFunctions(rendererInternals) {
7700
7736
  const hydrateElement = (el, vnode, parentComponent, parentSuspense, slotScopeIds, optimized) => {
7701
7737
  optimized = optimized || !!vnode.dynamicChildren;
7702
7738
  const { type, props, patchFlag, shapeFlag, dirs, transition } = vnode;
7703
- const forcePatchValue = type === "input" && dirs || type === "option";
7704
- if (!!(process.env.NODE_ENV !== "production") || forcePatchValue || patchFlag !== -1) {
7739
+ const forcePatch = type === "input" || type === "option";
7740
+ if (!!(process.env.NODE_ENV !== "production") || forcePatch || patchFlag !== -1) {
7705
7741
  if (dirs) {
7706
7742
  invokeDirectiveHook(vnode, null, parentComponent, "created");
7707
7743
  }
7708
7744
  if (props) {
7709
- if (forcePatchValue || !optimized || patchFlag & (16 | 32)) {
7745
+ if (forcePatch || !optimized || patchFlag & (16 | 32)) {
7710
7746
  for (const key in props) {
7711
- if (forcePatchValue && key.endsWith("value") || isOn(key) && !isReservedProp(key)) {
7747
+ if (forcePatch && (key.endsWith("value") || key === "indeterminate") || isOn(key) && !isReservedProp(key) || // force hydrate v-bind with .prop modifiers
7748
+ key[0] === ".") {
7712
7749
  patchProp(
7713
7750
  el,
7714
7751
  key,
@@ -9533,6 +9570,7 @@ const resolveTarget = (props, select) => {
9533
9570
  }
9534
9571
  };
9535
9572
  const TeleportImpl = {
9573
+ name: "Teleport",
9536
9574
  __isTeleport: true,
9537
9575
  process(n1, n2, container, anchor, parentComponent, parentSuspense, isSVG, slotScopeIds, optimized, internals) {
9538
9576
  const {
@@ -10012,7 +10050,7 @@ function _createVNode(type, props = null, children = null, patchFlag = 0, dynami
10012
10050
  if (!!(process.env.NODE_ENV !== "production") && shapeFlag & 4 && isProxy(type)) {
10013
10051
  type = toRaw(type);
10014
10052
  warn(
10015
- `Vue received a Component which was made a reactive object. This can lead to unnecessary performance overhead, and should be avoided by marking the component with \`markRaw\` or using \`shallowRef\` instead of \`ref\`.`,
10053
+ `Vue received a Component that was made a reactive object. This can lead to unnecessary performance overhead and should be avoided by marking the component with \`markRaw\` or using \`shallowRef\` instead of \`ref\`.`,
10016
10054
  `
10017
10055
  Component that was made reactive: `,
10018
10056
  type
@@ -10680,9 +10718,9 @@ function initCustomFormatter() {
10680
10718
  return;
10681
10719
  }
10682
10720
  const vueStyle = { style: "color:#3ba776" };
10683
- const numberStyle = { style: "color:#0b1bc9" };
10684
- const stringStyle = { style: "color:#b62e24" };
10685
- const keywordStyle = { style: "color:#9d288c" };
10721
+ const numberStyle = { style: "color:#1677ff" };
10722
+ const stringStyle = { style: "color:#f5222d" };
10723
+ const keywordStyle = { style: "color:#eb2f96" };
10686
10724
  const formatter = {
10687
10725
  header(obj) {
10688
10726
  if (!isObject(obj)) {
@@ -10876,7 +10914,7 @@ function isMemoSame(cached, memo) {
10876
10914
  return true;
10877
10915
  }
10878
10916
 
10879
- const version = "3.3.8";
10917
+ const version = "3.3.10";
10880
10918
  const _ssrUtils = {
10881
10919
  createComponentInstance,
10882
10920
  setupComponent,
@@ -11590,7 +11628,8 @@ function patchStopImmediatePropagation(e, value) {
11590
11628
  }
11591
11629
  }
11592
11630
 
11593
- const nativeOnRE = /^on[a-z]/;
11631
+ const isNativeOn = (key) => key.charCodeAt(0) === 111 && key.charCodeAt(1) === 110 && // lowercase letter
11632
+ key.charCodeAt(2) > 96 && key.charCodeAt(2) < 123;
11594
11633
  const patchProp = (el, key, prevValue, nextValue, isSVG = false, prevChildren, parentComponent, parentSuspense, unmountChildren) => {
11595
11634
  if (key === "class") {
11596
11635
  patchClass(el, nextValue, isSVG);
@@ -11624,7 +11663,7 @@ function shouldSetAsProp(el, key, value, isSVG) {
11624
11663
  if (key === "innerHTML" || key === "textContent") {
11625
11664
  return true;
11626
11665
  }
11627
- if (key in el && nativeOnRE.test(key) && isFunction(value)) {
11666
+ if (key in el && isNativeOn(key) && isFunction(value)) {
11628
11667
  return true;
11629
11668
  }
11630
11669
  return false;
@@ -11641,7 +11680,11 @@ function shouldSetAsProp(el, key, value, isSVG) {
11641
11680
  if (key === "type" && el.tagName === "TEXTAREA") {
11642
11681
  return false;
11643
11682
  }
11644
- if (nativeOnRE.test(key) && isString(value)) {
11683
+ if (key === "width" || key === "height") {
11684
+ const tag = el.tagName;
11685
+ return !(tag === "IMG" || tag === "VIDEO" || tag === "CANVAS" || tag === "SOURCE");
11686
+ }
11687
+ if (isNativeOn(key) && isString(value)) {
11645
11688
  return false;
11646
11689
  }
11647
11690
  return key in el;
@@ -12132,21 +12175,20 @@ const vModelText = {
12132
12175
  el[assignKey] = getModelAssigner(vnode);
12133
12176
  if (el.composing)
12134
12177
  return;
12178
+ const elValue = number || el.type === "number" ? looseToNumber(el.value) : el.value;
12179
+ const newValue = value == null ? "" : value;
12180
+ if (elValue === newValue) {
12181
+ return;
12182
+ }
12135
12183
  if (document.activeElement === el && el.type !== "range") {
12136
12184
  if (lazy) {
12137
12185
  return;
12138
12186
  }
12139
- if (trim && el.value.trim() === value) {
12187
+ if (trim && el.value.trim() === newValue) {
12140
12188
  return;
12141
12189
  }
12142
- if ((number || el.type === "number") && looseToNumber(el.value) === value) {
12143
- return;
12144
- }
12145
- }
12146
- const newValue = value == null ? "" : value;
12147
- if (el.value !== newValue) {
12148
- el.value = newValue;
12149
12190
  }
12191
+ el.value = newValue;
12150
12192
  }
12151
12193
  };
12152
12194
  const vModelCheckbox = {
@@ -12366,14 +12408,14 @@ const modifierGuards = {
12366
12408
  exact: (e, modifiers) => systemModifiers.some((m) => e[`${m}Key`] && !modifiers.includes(m))
12367
12409
  };
12368
12410
  const withModifiers = (fn, modifiers) => {
12369
- return (event, ...args) => {
12411
+ return fn._withMods || (fn._withMods = (event, ...args) => {
12370
12412
  for (let i = 0; i < modifiers.length; i++) {
12371
12413
  const guard = modifierGuards[modifiers[i]];
12372
12414
  if (guard && guard(event, modifiers))
12373
12415
  return;
12374
12416
  }
12375
12417
  return fn(event, ...args);
12376
- };
12418
+ });
12377
12419
  };
12378
12420
  const keyNames = {
12379
12421
  esc: "escape",
@@ -12401,7 +12443,7 @@ const withKeys = (fn, modifiers) => {
12401
12443
  );
12402
12444
  }
12403
12445
  }
12404
- return (event) => {
12446
+ return fn._withKeys || (fn._withKeys = (event) => {
12405
12447
  if (!("key" in event)) {
12406
12448
  return;
12407
12449
  }
@@ -12429,7 +12471,7 @@ const withKeys = (fn, modifiers) => {
12429
12471
  }
12430
12472
  }
12431
12473
  }
12432
- };
12474
+ });
12433
12475
  };
12434
12476
 
12435
12477
  const rendererOptions = /* @__PURE__ */ extend({ patchProp }, nodeOps);
@@ -15,8 +15,8 @@ var Vue = (function () {
15
15
  const NOOP = () => {
16
16
  };
17
17
  const NO = () => false;
18
- const onRE = /^on[^a-z]/;
19
- const isOn = (key) => onRE.test(key);
18
+ const isOn = (key) => key.charCodeAt(0) === 111 && key.charCodeAt(1) === 110 && // uppercase letter
19
+ (key.charCodeAt(2) > 122 || key.charCodeAt(2) < 97);
20
20
  const isModelListener = (key) => key.startsWith("onUpdate:");
21
21
  const extend = Object.assign;
22
22
  const remove = (arr, el) => {
@@ -939,7 +939,7 @@ var Vue = (function () {
939
939
  toRaw(this)
940
940
  );
941
941
  }
942
- return type === "delete" ? false : this;
942
+ return type === "delete" ? false : type === "clear" ? void 0 : this;
943
943
  };
944
944
  }
945
945
  function createInstrumentations() {
@@ -2667,9 +2667,19 @@ Details: https://v3-migration.vuejs.org/breaking-changes/migration-build.html`
2667
2667
  try {
2668
2668
  if (vnode.shapeFlag & 4) {
2669
2669
  const proxyToUse = withProxy || proxy;
2670
+ const thisProxy = setupState.__isScriptSetup ? new Proxy(proxyToUse, {
2671
+ get(target, key, receiver) {
2672
+ warn(
2673
+ `Property '${String(
2674
+ key
2675
+ )}' was accessed via 'this'. Avoid using 'this' in templates.`
2676
+ );
2677
+ return Reflect.get(target, key, receiver);
2678
+ }
2679
+ }) : proxyToUse;
2670
2680
  result = normalizeVNode(
2671
2681
  render.call(
2672
- proxyToUse,
2682
+ thisProxy,
2673
2683
  proxyToUse,
2674
2684
  renderCache,
2675
2685
  props,
@@ -3300,7 +3310,12 @@ If this is a native custom element, make sure to exclude it from component resol
3300
3310
  if (delayEnter) {
3301
3311
  activeBranch.transition.afterLeave = () => {
3302
3312
  if (pendingId === suspense.pendingId) {
3303
- move(pendingBranch, container2, anchor2, 0);
3313
+ move(
3314
+ pendingBranch,
3315
+ container2,
3316
+ next(activeBranch),
3317
+ 0
3318
+ );
3304
3319
  queuePostFlushCb(effects);
3305
3320
  }
3306
3321
  };
@@ -3347,7 +3362,6 @@ If this is a native custom element, make sure to exclude it from component resol
3347
3362
  }
3348
3363
  const { vnode: vnode2, activeBranch, parentComponent: parentComponent2, container: container2, isSVG: isSVG2 } = suspense;
3349
3364
  triggerEvent(vnode2, "onFallback");
3350
- const anchor2 = next(activeBranch);
3351
3365
  const mountFallback = () => {
3352
3366
  if (!suspense.isInFallback) {
3353
3367
  return;
@@ -3356,7 +3370,7 @@ If this is a native custom element, make sure to exclude it from component resol
3356
3370
  null,
3357
3371
  fallbackVNode,
3358
3372
  container2,
3359
- anchor2,
3373
+ next(activeBranch),
3360
3374
  parentComponent2,
3361
3375
  null,
3362
3376
  // fallback tree will not have suspense context
@@ -3699,6 +3713,7 @@ If this is a native custom element, make sure to exclude it from component resol
3699
3713
  let onCleanup = (fn) => {
3700
3714
  cleanup = effect.onStop = () => {
3701
3715
  callWithErrorHandling(fn, instance, 4);
3716
+ cleanup = effect.onStop = void 0;
3702
3717
  };
3703
3718
  };
3704
3719
  let oldValue = isMultiSource ? new Array(source.length).fill(INITIAL_WATCHER_VALUE) : INITIAL_WATCHER_VALUE;
@@ -4175,7 +4190,11 @@ If this is a native custom element, make sure to exclude it from component resol
4175
4190
  }
4176
4191
  }
4177
4192
  function getKeepAliveChild(vnode) {
4178
- return isKeepAlive(vnode) ? vnode.children ? vnode.children[0] : void 0 : vnode;
4193
+ return isKeepAlive(vnode) ? (
4194
+ // #7121 ensure get the child component subtree in case
4195
+ // it's been replaced during HMR
4196
+ vnode.component ? vnode.component.subTree : vnode.children ? vnode.children[0] : void 0
4197
+ ) : vnode;
4179
4198
  }
4180
4199
  function setTransitionHooks(vnode, hooks) {
4181
4200
  if (vnode.shapeFlag & 6 && vnode.component) {
@@ -6192,7 +6211,7 @@ If this is a native custom element, make sure to exclude it from component resol
6192
6211
  return vm;
6193
6212
  }
6194
6213
  }
6195
- Vue.version = `2.6.14-compat:${"3.3.8"}`;
6214
+ Vue.version = `2.6.14-compat:${"3.3.10"}`;
6196
6215
  Vue.config = singletonApp.config;
6197
6216
  Vue.use = (p, ...options) => {
6198
6217
  if (p && isFunction(p.install)) {
@@ -7220,6 +7239,9 @@ If you want to remount the same app, move your app creation logic into a factory
7220
7239
  };
7221
7240
  }
7222
7241
  function getInvalidTypeMessage(name, value, expectedTypes) {
7242
+ if (expectedTypes.length === 0) {
7243
+ return `Prop type [] for prop "${name}" won't match anything. Did you mean to use type Array instead?`;
7244
+ }
7223
7245
  let message = `Invalid prop: type check failed for prop "${name}". Expected ${expectedTypes.map(capitalize).join(" | ")}`;
7224
7246
  const expectedType = expectedTypes[0];
7225
7247
  const receivedType = toRawType(value);
@@ -7491,6 +7513,20 @@ If you want to remount the same app, move your app creation logic into a factory
7491
7513
  const { type, ref, shapeFlag, patchFlag } = vnode;
7492
7514
  let domType = node.nodeType;
7493
7515
  vnode.el = node;
7516
+ {
7517
+ if (!("__vnode" in node)) {
7518
+ Object.defineProperty(node, "__vnode", {
7519
+ value: vnode,
7520
+ enumerable: false
7521
+ });
7522
+ }
7523
+ if (!("__vueParentComponent" in node)) {
7524
+ Object.defineProperty(node, "__vueParentComponent", {
7525
+ value: parentComponent,
7526
+ enumerable: false
7527
+ });
7528
+ }
7529
+ }
7494
7530
  if (patchFlag === -2) {
7495
7531
  optimized = false;
7496
7532
  vnode.dynamicChildren = null;
@@ -7652,15 +7688,16 @@ If you want to remount the same app, move your app creation logic into a factory
7652
7688
  const hydrateElement = (el, vnode, parentComponent, parentSuspense, slotScopeIds, optimized) => {
7653
7689
  optimized = optimized || !!vnode.dynamicChildren;
7654
7690
  const { type, props, patchFlag, shapeFlag, dirs, transition } = vnode;
7655
- const forcePatchValue = type === "input" && dirs || type === "option";
7691
+ const forcePatch = type === "input" || type === "option";
7656
7692
  {
7657
7693
  if (dirs) {
7658
7694
  invokeDirectiveHook(vnode, null, parentComponent, "created");
7659
7695
  }
7660
7696
  if (props) {
7661
- if (forcePatchValue || !optimized || patchFlag & (16 | 32)) {
7697
+ if (forcePatch || !optimized || patchFlag & (16 | 32)) {
7662
7698
  for (const key in props) {
7663
- if (forcePatchValue && key.endsWith("value") || isOn(key) && !isReservedProp(key)) {
7699
+ if (forcePatch && (key.endsWith("value") || key === "indeterminate") || isOn(key) && !isReservedProp(key) || // force hydrate v-bind with .prop modifiers
7700
+ key[0] === ".") {
7664
7701
  patchProp(
7665
7702
  el,
7666
7703
  key,
@@ -9451,6 +9488,7 @@ If you want to remount the same app, move your app creation logic into a factory
9451
9488
  }
9452
9489
  };
9453
9490
  const TeleportImpl = {
9491
+ name: "Teleport",
9454
9492
  __isTeleport: true,
9455
9493
  process(n1, n2, container, anchor, parentComponent, parentSuspense, isSVG, slotScopeIds, optimized, internals) {
9456
9494
  const {
@@ -9930,7 +9968,7 @@ If you want to remount the same app, move your app creation logic into a factory
9930
9968
  if (shapeFlag & 4 && isProxy(type)) {
9931
9969
  type = toRaw(type);
9932
9970
  warn(
9933
- `Vue received a Component which was made a reactive object. This can lead to unnecessary performance overhead, and should be avoided by marking the component with \`markRaw\` or using \`shallowRef\` instead of \`ref\`.`,
9971
+ `Vue received a Component that was made a reactive object. This can lead to unnecessary performance overhead and should be avoided by marking the component with \`markRaw\` or using \`shallowRef\` instead of \`ref\`.`,
9934
9972
  `
9935
9973
  Component that was made reactive: `,
9936
9974
  type
@@ -10564,9 +10602,9 @@ Component that was made reactive: `,
10564
10602
  return;
10565
10603
  }
10566
10604
  const vueStyle = { style: "color:#3ba776" };
10567
- const numberStyle = { style: "color:#0b1bc9" };
10568
- const stringStyle = { style: "color:#b62e24" };
10569
- const keywordStyle = { style: "color:#9d288c" };
10605
+ const numberStyle = { style: "color:#1677ff" };
10606
+ const stringStyle = { style: "color:#f5222d" };
10607
+ const keywordStyle = { style: "color:#eb2f96" };
10570
10608
  const formatter = {
10571
10609
  header(obj) {
10572
10610
  if (!isObject(obj)) {
@@ -10760,7 +10798,7 @@ Component that was made reactive: `,
10760
10798
  return true;
10761
10799
  }
10762
10800
 
10763
- const version = "3.3.8";
10801
+ const version = "3.3.10";
10764
10802
  const ssrUtils = null;
10765
10803
  const resolveFilter = resolveFilter$1 ;
10766
10804
  const _compatUtils = {
@@ -11459,7 +11497,8 @@ Component that was made reactive: `,
11459
11497
  }
11460
11498
  }
11461
11499
 
11462
- const nativeOnRE = /^on[a-z]/;
11500
+ const isNativeOn = (key) => key.charCodeAt(0) === 111 && key.charCodeAt(1) === 110 && // lowercase letter
11501
+ key.charCodeAt(2) > 96 && key.charCodeAt(2) < 123;
11463
11502
  const patchProp = (el, key, prevValue, nextValue, isSVG = false, prevChildren, parentComponent, parentSuspense, unmountChildren) => {
11464
11503
  if (key === "class") {
11465
11504
  patchClass(el, nextValue, isSVG);
@@ -11493,7 +11532,7 @@ Component that was made reactive: `,
11493
11532
  if (key === "innerHTML" || key === "textContent") {
11494
11533
  return true;
11495
11534
  }
11496
- if (key in el && nativeOnRE.test(key) && isFunction(value)) {
11535
+ if (key in el && isNativeOn(key) && isFunction(value)) {
11497
11536
  return true;
11498
11537
  }
11499
11538
  return false;
@@ -11510,7 +11549,11 @@ Component that was made reactive: `,
11510
11549
  if (key === "type" && el.tagName === "TEXTAREA") {
11511
11550
  return false;
11512
11551
  }
11513
- if (nativeOnRE.test(key) && isString(value)) {
11552
+ if (key === "width" || key === "height") {
11553
+ const tag = el.tagName;
11554
+ return !(tag === "IMG" || tag === "VIDEO" || tag === "CANVAS" || tag === "SOURCE");
11555
+ }
11556
+ if (isNativeOn(key) && isString(value)) {
11514
11557
  return false;
11515
11558
  }
11516
11559
  return key in el;
@@ -11989,21 +12032,20 @@ Component that was made reactive: `,
11989
12032
  el[assignKey] = getModelAssigner(vnode);
11990
12033
  if (el.composing)
11991
12034
  return;
12035
+ const elValue = number || el.type === "number" ? looseToNumber(el.value) : el.value;
12036
+ const newValue = value == null ? "" : value;
12037
+ if (elValue === newValue) {
12038
+ return;
12039
+ }
11992
12040
  if (document.activeElement === el && el.type !== "range") {
11993
12041
  if (lazy) {
11994
12042
  return;
11995
12043
  }
11996
- if (trim && el.value.trim() === value) {
12044
+ if (trim && el.value.trim() === newValue) {
11997
12045
  return;
11998
12046
  }
11999
- if ((number || el.type === "number") && looseToNumber(el.value) === value) {
12000
- return;
12001
- }
12002
- }
12003
- const newValue = value == null ? "" : value;
12004
- if (el.value !== newValue) {
12005
- el.value = newValue;
12006
12047
  }
12048
+ el.value = newValue;
12007
12049
  }
12008
12050
  };
12009
12051
  const vModelCheckbox = {
@@ -12189,14 +12231,14 @@ Component that was made reactive: `,
12189
12231
  exact: (e, modifiers) => systemModifiers.some((m) => e[`${m}Key`] && !modifiers.includes(m))
12190
12232
  };
12191
12233
  const withModifiers = (fn, modifiers) => {
12192
- return (event, ...args) => {
12234
+ return fn._withMods || (fn._withMods = (event, ...args) => {
12193
12235
  for (let i = 0; i < modifiers.length; i++) {
12194
12236
  const guard = modifierGuards[modifiers[i]];
12195
12237
  if (guard && guard(event, modifiers))
12196
12238
  return;
12197
12239
  }
12198
12240
  return fn(event, ...args);
12199
- };
12241
+ });
12200
12242
  };
12201
12243
  const keyNames = {
12202
12244
  esc: "escape",
@@ -12224,7 +12266,7 @@ Component that was made reactive: `,
12224
12266
  );
12225
12267
  }
12226
12268
  }
12227
- return (event) => {
12269
+ return fn._withKeys || (fn._withKeys = (event) => {
12228
12270
  if (!("key" in event)) {
12229
12271
  return;
12230
12272
  }
@@ -12252,7 +12294,7 @@ Component that was made reactive: `,
12252
12294
  }
12253
12295
  }
12254
12296
  }
12255
- };
12297
+ });
12256
12298
  };
12257
12299
 
12258
12300
  const rendererOptions = /* @__PURE__ */ extend({ patchProp }, nodeOps);