@vue/runtime-dom 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.
@@ -619,7 +619,8 @@ function patchStopImmediatePropagation(e, value) {
619
619
  }
620
620
  }
621
621
 
622
- const nativeOnRE = /^on[a-z]/;
622
+ const isNativeOn = (key) => key.charCodeAt(0) === 111 && key.charCodeAt(1) === 110 && // lowercase letter
623
+ key.charCodeAt(2) > 96 && key.charCodeAt(2) < 123;
623
624
  const patchProp = (el, key, prevValue, nextValue, isSVG = false, prevChildren, parentComponent, parentSuspense, unmountChildren) => {
624
625
  if (key === "class") {
625
626
  patchClass(el, nextValue, isSVG);
@@ -653,7 +654,7 @@ function shouldSetAsProp(el, key, value, isSVG) {
653
654
  if (key === "innerHTML" || key === "textContent") {
654
655
  return true;
655
656
  }
656
- if (key in el && nativeOnRE.test(key) && shared.isFunction(value)) {
657
+ if (key in el && isNativeOn(key) && shared.isFunction(value)) {
657
658
  return true;
658
659
  }
659
660
  return false;
@@ -670,7 +671,11 @@ function shouldSetAsProp(el, key, value, isSVG) {
670
671
  if (key === "type" && el.tagName === "TEXTAREA") {
671
672
  return false;
672
673
  }
673
- if (nativeOnRE.test(key) && shared.isString(value)) {
674
+ if (key === "width" || key === "height") {
675
+ const tag = el.tagName;
676
+ return !(tag === "IMG" || tag === "VIDEO" || tag === "CANVAS" || tag === "SOURCE");
677
+ }
678
+ if (isNativeOn(key) && shared.isString(value)) {
674
679
  return false;
675
680
  }
676
681
  return key in el;
@@ -1097,21 +1102,20 @@ const vModelText = {
1097
1102
  el[assignKey] = getModelAssigner(vnode);
1098
1103
  if (el.composing)
1099
1104
  return;
1105
+ const elValue = number || el.type === "number" ? shared.looseToNumber(el.value) : el.value;
1106
+ const newValue = value == null ? "" : value;
1107
+ if (elValue === newValue) {
1108
+ return;
1109
+ }
1100
1110
  if (document.activeElement === el && el.type !== "range") {
1101
1111
  if (lazy) {
1102
1112
  return;
1103
1113
  }
1104
- if (trim && el.value.trim() === value) {
1105
- return;
1106
- }
1107
- if ((number || el.type === "number") && shared.looseToNumber(el.value) === value) {
1114
+ if (trim && el.value.trim() === newValue) {
1108
1115
  return;
1109
1116
  }
1110
1117
  }
1111
- const newValue = value == null ? "" : value;
1112
- if (el.value !== newValue) {
1113
- el.value = newValue;
1114
- }
1118
+ el.value = newValue;
1115
1119
  }
1116
1120
  };
1117
1121
  const vModelCheckbox = {
@@ -1331,14 +1335,14 @@ const modifierGuards = {
1331
1335
  exact: (e, modifiers) => systemModifiers.some((m) => e[`${m}Key`] && !modifiers.includes(m))
1332
1336
  };
1333
1337
  const withModifiers = (fn, modifiers) => {
1334
- return (event, ...args) => {
1338
+ return fn._withMods || (fn._withMods = (event, ...args) => {
1335
1339
  for (let i = 0; i < modifiers.length; i++) {
1336
1340
  const guard = modifierGuards[modifiers[i]];
1337
1341
  if (guard && guard(event, modifiers))
1338
1342
  return;
1339
1343
  }
1340
1344
  return fn(event, ...args);
1341
- };
1345
+ });
1342
1346
  };
1343
1347
  const keyNames = {
1344
1348
  esc: "escape",
@@ -1350,7 +1354,7 @@ const keyNames = {
1350
1354
  delete: "backspace"
1351
1355
  };
1352
1356
  const withKeys = (fn, modifiers) => {
1353
- return (event) => {
1357
+ return fn._withKeys || (fn._withKeys = (event) => {
1354
1358
  if (!("key" in event)) {
1355
1359
  return;
1356
1360
  }
@@ -1358,7 +1362,7 @@ const withKeys = (fn, modifiers) => {
1358
1362
  if (modifiers.some((k) => k === eventKey || keyNames[k] === eventKey)) {
1359
1363
  return fn(event);
1360
1364
  }
1361
- };
1365
+ });
1362
1366
  };
1363
1367
 
1364
1368
  const rendererOptions = /* @__PURE__ */ shared.extend({ patchProp }, nodeOps);
@@ -602,7 +602,8 @@ function patchStopImmediatePropagation(e, value) {
602
602
  }
603
603
  }
604
604
 
605
- const nativeOnRE = /^on[a-z]/;
605
+ const isNativeOn = (key) => key.charCodeAt(0) === 111 && key.charCodeAt(1) === 110 && // lowercase letter
606
+ key.charCodeAt(2) > 96 && key.charCodeAt(2) < 123;
606
607
  const patchProp = (el, key, prevValue, nextValue, isSVG = false, prevChildren, parentComponent, parentSuspense, unmountChildren) => {
607
608
  if (key === "class") {
608
609
  patchClass(el, nextValue, isSVG);
@@ -636,7 +637,7 @@ function shouldSetAsProp(el, key, value, isSVG) {
636
637
  if (key === "innerHTML" || key === "textContent") {
637
638
  return true;
638
639
  }
639
- if (key in el && nativeOnRE.test(key) && shared.isFunction(value)) {
640
+ if (key in el && isNativeOn(key) && shared.isFunction(value)) {
640
641
  return true;
641
642
  }
642
643
  return false;
@@ -653,7 +654,11 @@ function shouldSetAsProp(el, key, value, isSVG) {
653
654
  if (key === "type" && el.tagName === "TEXTAREA") {
654
655
  return false;
655
656
  }
656
- if (nativeOnRE.test(key) && shared.isString(value)) {
657
+ if (key === "width" || key === "height") {
658
+ const tag = el.tagName;
659
+ return !(tag === "IMG" || tag === "VIDEO" || tag === "CANVAS" || tag === "SOURCE");
660
+ }
661
+ if (isNativeOn(key) && shared.isString(value)) {
657
662
  return false;
658
663
  }
659
664
  return key in el;
@@ -1056,21 +1061,20 @@ const vModelText = {
1056
1061
  el[assignKey] = getModelAssigner(vnode);
1057
1062
  if (el.composing)
1058
1063
  return;
1064
+ const elValue = number || el.type === "number" ? shared.looseToNumber(el.value) : el.value;
1065
+ const newValue = value == null ? "" : value;
1066
+ if (elValue === newValue) {
1067
+ return;
1068
+ }
1059
1069
  if (document.activeElement === el && el.type !== "range") {
1060
1070
  if (lazy) {
1061
1071
  return;
1062
1072
  }
1063
- if (trim && el.value.trim() === value) {
1064
- return;
1065
- }
1066
- if ((number || el.type === "number") && shared.looseToNumber(el.value) === value) {
1073
+ if (trim && el.value.trim() === newValue) {
1067
1074
  return;
1068
1075
  }
1069
1076
  }
1070
- const newValue = value == null ? "" : value;
1071
- if (el.value !== newValue) {
1072
- el.value = newValue;
1073
- }
1077
+ el.value = newValue;
1074
1078
  }
1075
1079
  };
1076
1080
  const vModelCheckbox = {
@@ -1287,14 +1291,14 @@ const modifierGuards = {
1287
1291
  exact: (e, modifiers) => systemModifiers.some((m) => e[`${m}Key`] && !modifiers.includes(m))
1288
1292
  };
1289
1293
  const withModifiers = (fn, modifiers) => {
1290
- return (event, ...args) => {
1294
+ return fn._withMods || (fn._withMods = (event, ...args) => {
1291
1295
  for (let i = 0; i < modifiers.length; i++) {
1292
1296
  const guard = modifierGuards[modifiers[i]];
1293
1297
  if (guard && guard(event, modifiers))
1294
1298
  return;
1295
1299
  }
1296
1300
  return fn(event, ...args);
1297
- };
1301
+ });
1298
1302
  };
1299
1303
  const keyNames = {
1300
1304
  esc: "escape",
@@ -1306,7 +1310,7 @@ const keyNames = {
1306
1310
  delete: "backspace"
1307
1311
  };
1308
1312
  const withKeys = (fn, modifiers) => {
1309
- return (event) => {
1313
+ return fn._withKeys || (fn._withKeys = (event) => {
1310
1314
  if (!("key" in event)) {
1311
1315
  return;
1312
1316
  }
@@ -1314,7 +1318,7 @@ const withKeys = (fn, modifiers) => {
1314
1318
  if (modifiers.some((k) => k === eventKey || keyNames[k] === eventKey)) {
1315
1319
  return fn(event);
1316
1320
  }
1317
- };
1321
+ });
1318
1322
  };
1319
1323
 
1320
1324
  const rendererOptions = /* @__PURE__ */ shared.extend({ patchProp }, nodeOps);
@@ -1,4 +1,4 @@
1
- import { SetupContext, RenderFunction, ComputedOptions, MethodOptions, ComponentOptionsMixin, EmitsOptions, ComponentInjectOptions, SlotsType, ComponentOptionsWithoutProps, ComponentOptionsWithArrayProps, ComponentPropsOptions, ComponentOptionsWithObjectProps, ExtractPropTypes, ComponentPublicInstance, RootHydrateFunction, ConcreteComponent, BaseTransitionProps, FunctionalComponent, ObjectDirective, VNodeRef, RootRenderFunction, CreateAppFunction } from '@vue/runtime-core';
1
+ import { SetupContext, RenderFunction, ComputedOptions, MethodOptions, ComponentOptionsMixin, EmitsOptions, ComponentInjectOptions, SlotsType, ComponentOptionsWithoutProps, ComponentOptionsWithArrayProps, ComponentPropsOptions, ComponentOptionsWithObjectProps, ExtractPropTypes, DefineComponent, RootHydrateFunction, ConcreteComponent, BaseTransitionProps, FunctionalComponent, ObjectDirective, VNodeRef, RootRenderFunction, CreateAppFunction } from '@vue/runtime-core';
2
2
  export * from '@vue/runtime-core';
3
3
  import * as CSS from 'csstype';
4
4
 
@@ -17,9 +17,7 @@ export declare function defineCustomElement<PropNames extends string, RawBinding
17
17
  export declare function defineCustomElement<PropsOptions extends Readonly<ComponentPropsOptions>, RawBindings, D, C extends ComputedOptions = {}, M extends MethodOptions = {}, Mixin extends ComponentOptionsMixin = ComponentOptionsMixin, Extends extends ComponentOptionsMixin = ComponentOptionsMixin, E extends EmitsOptions = Record<string, any>, EE extends string = string, I extends ComponentInjectOptions = {}, II extends string = string, S extends SlotsType = {}>(options: ComponentOptionsWithObjectProps<PropsOptions, RawBindings, D, C, M, Mixin, Extends, E, EE, I, II, S> & {
18
18
  styles?: string[];
19
19
  }): VueElementConstructor<ExtractPropTypes<PropsOptions>>;
20
- export declare function defineCustomElement(options: {
21
- new (...args: any[]): ComponentPublicInstance;
22
- }): VueElementConstructor;
20
+ export declare function defineCustomElement<P>(options: DefineComponent<P, any, any, any>): VueElementConstructor<ExtractPropTypes<P>>;
23
21
  /*! #__NO_SIDE_EFFECTS__ */
24
22
  export declare const defineSSRCustomElement: typeof defineCustomElement;
25
23
  declare const BaseClass: {
@@ -104,11 +102,15 @@ export declare const vModelDynamic: ObjectDirective<HTMLInputElement | HTMLSelec
104
102
  /**
105
103
  * @private
106
104
  */
107
- export declare const withModifiers: (fn: Function, modifiers: string[]) => (event: Event, ...args: unknown[]) => any;
105
+ export declare const withModifiers: <T extends (event: Event, ...args: unknown[]) => any>(fn: T & {
106
+ _withMods?: T | undefined;
107
+ }, modifiers: string[]) => T;
108
108
  /**
109
109
  * @private
110
110
  */
111
- export declare const withKeys: (fn: Function, modifiers: string[]) => (event: KeyboardEvent) => any;
111
+ export declare const withKeys: <T extends (event: KeyboardEvent) => any>(fn: T & {
112
+ _withKeys?: T | undefined;
113
+ }, modifiers: string[]) => T;
112
114
 
113
115
  declare const vShowOldKey: unique symbol;
114
116
  interface VShowElement extends HTMLElement {
@@ -315,7 +317,7 @@ interface AriaAttributes {
315
317
  /** Defines the human readable text alternative of aria-valuenow for a range widget. */
316
318
  'aria-valuetext'?: string;
317
319
  }
318
- export type StyleValue = string | CSSProperties | Array<StyleValue>;
320
+ export type StyleValue = false | null | undefined | string | CSSProperties | Array<StyleValue>;
319
321
  export interface HTMLAttributes extends AriaAttributes, EventHandlers<Events> {
320
322
  innerHTML?: string;
321
323
  class?: any;
@@ -411,7 +413,7 @@ export interface ButtonHTMLAttributes extends HTMLAttributes {
411
413
  formtarget?: string;
412
414
  name?: string;
413
415
  type?: 'submit' | 'reset' | 'button';
414
- value?: string | string[] | number;
416
+ value?: string | ReadonlyArray<string> | number;
415
417
  }
416
418
  export interface CanvasHTMLAttributes extends HTMLAttributes {
417
419
  height?: Numberish;
@@ -425,10 +427,11 @@ export interface ColgroupHTMLAttributes extends HTMLAttributes {
425
427
  span?: Numberish;
426
428
  }
427
429
  export interface DataHTMLAttributes extends HTMLAttributes {
428
- value?: string | string[] | number;
430
+ value?: string | ReadonlyArray<string> | number;
429
431
  }
430
432
  export interface DetailsHTMLAttributes extends HTMLAttributes {
431
433
  open?: Booleanish;
434
+ onToggle?: Event;
432
435
  }
433
436
  export interface DelHTMLAttributes extends HTMLAttributes {
434
437
  cite?: string;
@@ -465,13 +468,17 @@ export interface IframeHTMLAttributes extends HTMLAttributes {
465
468
  allow?: string;
466
469
  allowfullscreen?: Booleanish;
467
470
  allowtransparency?: Booleanish;
471
+ /** @deprecated */
468
472
  frameborder?: Numberish;
469
473
  height?: Numberish;
474
+ /** @deprecated */
470
475
  marginheight?: Numberish;
476
+ /** @deprecated */
471
477
  marginwidth?: Numberish;
472
478
  name?: string;
473
479
  referrerpolicy?: HTMLAttributeReferrerPolicy;
474
480
  sandbox?: string;
481
+ /** @deprecated */
475
482
  scrolling?: string;
476
483
  seamless?: Booleanish;
477
484
  src?: string;
@@ -483,13 +490,13 @@ export interface ImgHTMLAttributes extends HTMLAttributes {
483
490
  crossorigin?: 'anonymous' | 'use-credentials' | '';
484
491
  decoding?: 'async' | 'auto' | 'sync';
485
492
  height?: Numberish;
493
+ loading?: 'eager' | 'lazy';
486
494
  referrerpolicy?: HTMLAttributeReferrerPolicy;
487
495
  sizes?: string;
488
496
  src?: string;
489
497
  srcset?: string;
490
498
  usemap?: string;
491
499
  width?: Numberish;
492
- loading?: 'lazy' | 'eager';
493
500
  }
494
501
  export interface InsHTMLAttributes extends HTMLAttributes {
495
502
  cite?: string;
@@ -505,6 +512,7 @@ export interface InputHTMLAttributes extends HTMLAttributes {
505
512
  checked?: Booleanish | any[] | Set<any>;
506
513
  crossorigin?: string;
507
514
  disabled?: Booleanish;
515
+ enterKeyHint?: 'enter' | 'done' | 'go' | 'next' | 'previous' | 'search' | 'send';
508
516
  form?: string;
509
517
  formaction?: string;
510
518
  formenctype?: string;
@@ -545,7 +553,7 @@ export interface LabelHTMLAttributes extends HTMLAttributes {
545
553
  form?: string;
546
554
  }
547
555
  export interface LiHTMLAttributes extends HTMLAttributes {
548
- value?: string | string[] | number;
556
+ value?: string | ReadonlyArray<string> | number;
549
557
  }
550
558
  export interface LinkHTMLAttributes extends HTMLAttributes {
551
559
  as?: string;
@@ -558,6 +566,7 @@ export interface LinkHTMLAttributes extends HTMLAttributes {
558
566
  rel?: string;
559
567
  sizes?: string;
560
568
  type?: string;
569
+ charset?: string;
561
570
  }
562
571
  export interface MapHTMLAttributes extends HTMLAttributes {
563
572
  name?: string;
@@ -590,7 +599,7 @@ export interface MeterHTMLAttributes extends HTMLAttributes {
590
599
  max?: Numberish;
591
600
  min?: Numberish;
592
601
  optimum?: Numberish;
593
- value?: string | string[] | number;
602
+ value?: string | ReadonlyArray<string> | number;
594
603
  }
595
604
  export interface QuoteHTMLAttributes extends HTMLAttributes {
596
605
  cite?: string;
@@ -628,14 +637,15 @@ export interface OutputHTMLAttributes extends HTMLAttributes {
628
637
  }
629
638
  export interface ParamHTMLAttributes extends HTMLAttributes {
630
639
  name?: string;
631
- value?: string | string[] | number;
640
+ value?: string | ReadonlyArray<string> | number;
632
641
  }
633
642
  export interface ProgressHTMLAttributes extends HTMLAttributes {
634
643
  max?: Numberish;
635
- value?: string | string[] | number;
644
+ value?: string | ReadonlyArray<string> | number;
636
645
  }
637
646
  export interface ScriptHTMLAttributes extends HTMLAttributes {
638
647
  async?: Booleanish;
648
+ /** @deprecated */
639
649
  charset?: string;
640
650
  crossorigin?: string;
641
651
  defer?: Booleanish;
@@ -674,6 +684,7 @@ export interface TableHTMLAttributes extends HTMLAttributes {
674
684
  cellpadding?: Numberish;
675
685
  cellspacing?: Numberish;
676
686
  summary?: string;
687
+ width?: Numberish;
677
688
  }
678
689
  export interface TextareaHTMLAttributes extends HTMLAttributes {
679
690
  autocomplete?: string;
@@ -689,7 +700,7 @@ export interface TextareaHTMLAttributes extends HTMLAttributes {
689
700
  readonly?: Booleanish;
690
701
  required?: Booleanish;
691
702
  rows?: Numberish;
692
- value?: string | string[] | number;
703
+ value?: string | ReadonlyArray<string> | number;
693
704
  wrap?: string;
694
705
  }
695
706
  export interface TdHTMLAttributes extends HTMLAttributes {
@@ -698,6 +709,9 @@ export interface TdHTMLAttributes extends HTMLAttributes {
698
709
  headers?: string;
699
710
  rowspan?: Numberish;
700
711
  scope?: string;
712
+ abbr?: string;
713
+ height?: Numberish;
714
+ width?: Numberish;
701
715
  valign?: 'top' | 'middle' | 'bottom' | 'baseline';
702
716
  }
703
717
  export interface ThHTMLAttributes extends HTMLAttributes {
@@ -706,6 +720,7 @@ export interface ThHTMLAttributes extends HTMLAttributes {
706
720
  headers?: string;
707
721
  rowspan?: Numberish;
708
722
  scope?: string;
723
+ abbr?: string;
709
724
  }
710
725
  export interface TimeHTMLAttributes extends HTMLAttributes {
711
726
  datetime?: string;
@@ -723,6 +738,7 @@ export interface VideoHTMLAttributes extends MediaHTMLAttributes {
723
738
  poster?: string;
724
739
  width?: Numberish;
725
740
  disablePictureInPicture?: Booleanish;
741
+ disableRemotePlayback?: Booleanish;
726
742
  }
727
743
  export interface WebViewHTMLAttributes extends HTMLAttributes {
728
744
  allowfullscreen?: Booleanish;
@@ -765,6 +781,7 @@ export interface SVGAttributes extends AriaAttributes, EventHandlers<Events> {
765
781
  width?: Numberish;
766
782
  role?: string;
767
783
  tabindex?: Numberish;
784
+ crossOrigin?: 'anonymous' | 'use-credentials' | '';
768
785
  'accent-height'?: Numberish;
769
786
  accumulate?: 'none' | 'sum';
770
787
  additive?: 'replace' | 'sum';
@@ -12,8 +12,8 @@ const EMPTY_ARR = 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) => {
@@ -936,7 +936,7 @@ function createReadonlyMethod(type) {
936
936
  toRaw(this)
937
937
  );
938
938
  }
939
- return type === "delete" ? false : this;
939
+ return type === "delete" ? false : type === "clear" ? void 0 : this;
940
940
  };
941
941
  }
942
942
  function createInstrumentations() {
@@ -2207,9 +2207,19 @@ function renderComponentRoot(instance) {
2207
2207
  try {
2208
2208
  if (vnode.shapeFlag & 4) {
2209
2209
  const proxyToUse = withProxy || proxy;
2210
+ const thisProxy = setupState.__isScriptSetup ? new Proxy(proxyToUse, {
2211
+ get(target, key, receiver) {
2212
+ warn(
2213
+ `Property '${String(
2214
+ key
2215
+ )}' was accessed via 'this'. Avoid using 'this' in templates.`
2216
+ );
2217
+ return Reflect.get(target, key, receiver);
2218
+ }
2219
+ }) : proxyToUse;
2210
2220
  result = normalizeVNode(
2211
2221
  render.call(
2212
- proxyToUse,
2222
+ thisProxy,
2213
2223
  proxyToUse,
2214
2224
  renderCache,
2215
2225
  props,
@@ -2820,7 +2830,12 @@ function createSuspenseBoundary(vnode, parentSuspense, parentComponent, containe
2820
2830
  if (delayEnter) {
2821
2831
  activeBranch.transition.afterLeave = () => {
2822
2832
  if (pendingId === suspense.pendingId) {
2823
- move(pendingBranch, container2, anchor2, 0);
2833
+ move(
2834
+ pendingBranch,
2835
+ container2,
2836
+ next(activeBranch),
2837
+ 0
2838
+ );
2824
2839
  queuePostFlushCb(effects);
2825
2840
  }
2826
2841
  };
@@ -2867,7 +2882,6 @@ function createSuspenseBoundary(vnode, parentSuspense, parentComponent, containe
2867
2882
  }
2868
2883
  const { vnode: vnode2, activeBranch, parentComponent: parentComponent2, container: container2, isSVG: isSVG2 } = suspense;
2869
2884
  triggerEvent(vnode2, "onFallback");
2870
- const anchor2 = next(activeBranch);
2871
2885
  const mountFallback = () => {
2872
2886
  if (!suspense.isInFallback) {
2873
2887
  return;
@@ -2876,7 +2890,7 @@ function createSuspenseBoundary(vnode, parentSuspense, parentComponent, containe
2876
2890
  null,
2877
2891
  fallbackVNode,
2878
2892
  container2,
2879
- anchor2,
2893
+ next(activeBranch),
2880
2894
  parentComponent2,
2881
2895
  null,
2882
2896
  // fallback tree will not have suspense context
@@ -3171,6 +3185,7 @@ function doWatch(source, cb, { immediate, deep, flush, onTrack, onTrigger } = EM
3171
3185
  let onCleanup = (fn) => {
3172
3186
  cleanup = effect.onStop = () => {
3173
3187
  callWithErrorHandling(fn, instance, 4);
3188
+ cleanup = effect.onStop = void 0;
3174
3189
  };
3175
3190
  };
3176
3191
  let oldValue = isMultiSource ? new Array(source.length).fill(INITIAL_WATCHER_VALUE) : INITIAL_WATCHER_VALUE;
@@ -3641,7 +3656,11 @@ function emptyPlaceholder(vnode) {
3641
3656
  }
3642
3657
  }
3643
3658
  function getKeepAliveChild(vnode) {
3644
- return isKeepAlive(vnode) ? vnode.children ? vnode.children[0] : void 0 : vnode;
3659
+ return isKeepAlive(vnode) ? (
3660
+ // #7121 ensure get the child component subtree in case
3661
+ // it's been replaced during HMR
3662
+ vnode.component ? vnode.component.subTree : vnode.children ? vnode.children[0] : void 0
3663
+ ) : vnode;
3645
3664
  }
3646
3665
  function setTransitionHooks(vnode, hooks) {
3647
3666
  if (vnode.shapeFlag & 6 && vnode.component) {
@@ -5634,6 +5653,9 @@ function assertType(value, type) {
5634
5653
  };
5635
5654
  }
5636
5655
  function getInvalidTypeMessage(name, value, expectedTypes) {
5656
+ if (expectedTypes.length === 0) {
5657
+ return `Prop type [] for prop "${name}" won't match anything. Did you mean to use type Array instead?`;
5658
+ }
5637
5659
  let message = `Invalid prop: type check failed for prop "${name}". Expected ${expectedTypes.map(capitalize).join(" | ")}`;
5638
5660
  const expectedType = expectedTypes[0];
5639
5661
  const receivedType = toRawType(value);
@@ -5903,6 +5925,20 @@ function createHydrationFunctions(rendererInternals) {
5903
5925
  const { type, ref, shapeFlag, patchFlag } = vnode;
5904
5926
  let domType = node.nodeType;
5905
5927
  vnode.el = node;
5928
+ {
5929
+ if (!("__vnode" in node)) {
5930
+ Object.defineProperty(node, "__vnode", {
5931
+ value: vnode,
5932
+ enumerable: false
5933
+ });
5934
+ }
5935
+ if (!("__vueParentComponent" in node)) {
5936
+ Object.defineProperty(node, "__vueParentComponent", {
5937
+ value: parentComponent,
5938
+ enumerable: false
5939
+ });
5940
+ }
5941
+ }
5906
5942
  if (patchFlag === -2) {
5907
5943
  optimized = false;
5908
5944
  vnode.dynamicChildren = null;
@@ -6064,15 +6100,16 @@ function createHydrationFunctions(rendererInternals) {
6064
6100
  const hydrateElement = (el, vnode, parentComponent, parentSuspense, slotScopeIds, optimized) => {
6065
6101
  optimized = optimized || !!vnode.dynamicChildren;
6066
6102
  const { type, props, patchFlag, shapeFlag, dirs, transition } = vnode;
6067
- const forcePatchValue = type === "input" && dirs || type === "option";
6103
+ const forcePatch = type === "input" || type === "option";
6068
6104
  {
6069
6105
  if (dirs) {
6070
6106
  invokeDirectiveHook(vnode, null, parentComponent, "created");
6071
6107
  }
6072
6108
  if (props) {
6073
- if (forcePatchValue || !optimized || patchFlag & (16 | 32)) {
6109
+ if (forcePatch || !optimized || patchFlag & (16 | 32)) {
6074
6110
  for (const key in props) {
6075
- if (forcePatchValue && key.endsWith("value") || isOn(key) && !isReservedProp(key)) {
6111
+ if (forcePatch && (key.endsWith("value") || key === "indeterminate") || isOn(key) && !isReservedProp(key) || // force hydrate v-bind with .prop modifiers
6112
+ key[0] === ".") {
6076
6113
  patchProp(
6077
6114
  el,
6078
6115
  key,
@@ -7829,6 +7866,7 @@ const resolveTarget = (props, select) => {
7829
7866
  }
7830
7867
  };
7831
7868
  const TeleportImpl = {
7869
+ name: "Teleport",
7832
7870
  __isTeleport: true,
7833
7871
  process(n1, n2, container, anchor, parentComponent, parentSuspense, isSVG, slotScopeIds, optimized, internals) {
7834
7872
  const {
@@ -8250,7 +8288,7 @@ function _createVNode(type, props = null, children = null, patchFlag = 0, dynami
8250
8288
  if (shapeFlag & 4 && isProxy(type)) {
8251
8289
  type = toRaw(type);
8252
8290
  warn(
8253
- `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\`.`,
8291
+ `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\`.`,
8254
8292
  `
8255
8293
  Component that was made reactive: `,
8256
8294
  type
@@ -8875,9 +8913,9 @@ function initCustomFormatter() {
8875
8913
  return;
8876
8914
  }
8877
8915
  const vueStyle = { style: "color:#3ba776" };
8878
- const numberStyle = { style: "color:#0b1bc9" };
8879
- const stringStyle = { style: "color:#b62e24" };
8880
- const keywordStyle = { style: "color:#9d288c" };
8916
+ const numberStyle = { style: "color:#1677ff" };
8917
+ const stringStyle = { style: "color:#f5222d" };
8918
+ const keywordStyle = { style: "color:#eb2f96" };
8881
8919
  const formatter = {
8882
8920
  header(obj) {
8883
8921
  if (!isObject(obj)) {
@@ -9071,7 +9109,7 @@ function isMemoSame(cached, memo) {
9071
9109
  return true;
9072
9110
  }
9073
9111
 
9074
- const version = "3.3.8";
9112
+ const version = "3.3.10";
9075
9113
  const ssrUtils = null;
9076
9114
  const resolveFilter = null;
9077
9115
  const compatUtils = null;
@@ -9683,7 +9721,8 @@ function patchStopImmediatePropagation(e, value) {
9683
9721
  }
9684
9722
  }
9685
9723
 
9686
- const nativeOnRE = /^on[a-z]/;
9724
+ const isNativeOn = (key) => key.charCodeAt(0) === 111 && key.charCodeAt(1) === 110 && // lowercase letter
9725
+ key.charCodeAt(2) > 96 && key.charCodeAt(2) < 123;
9687
9726
  const patchProp = (el, key, prevValue, nextValue, isSVG = false, prevChildren, parentComponent, parentSuspense, unmountChildren) => {
9688
9727
  if (key === "class") {
9689
9728
  patchClass(el, nextValue, isSVG);
@@ -9717,7 +9756,7 @@ function shouldSetAsProp(el, key, value, isSVG) {
9717
9756
  if (key === "innerHTML" || key === "textContent") {
9718
9757
  return true;
9719
9758
  }
9720
- if (key in el && nativeOnRE.test(key) && isFunction(value)) {
9759
+ if (key in el && isNativeOn(key) && isFunction(value)) {
9721
9760
  return true;
9722
9761
  }
9723
9762
  return false;
@@ -9734,7 +9773,11 @@ function shouldSetAsProp(el, key, value, isSVG) {
9734
9773
  if (key === "type" && el.tagName === "TEXTAREA") {
9735
9774
  return false;
9736
9775
  }
9737
- if (nativeOnRE.test(key) && isString(value)) {
9776
+ if (key === "width" || key === "height") {
9777
+ const tag = el.tagName;
9778
+ return !(tag === "IMG" || tag === "VIDEO" || tag === "CANVAS" || tag === "SOURCE");
9779
+ }
9780
+ if (isNativeOn(key) && isString(value)) {
9738
9781
  return false;
9739
9782
  }
9740
9783
  return key in el;
@@ -10216,21 +10259,20 @@ const vModelText = {
10216
10259
  el[assignKey] = getModelAssigner(vnode);
10217
10260
  if (el.composing)
10218
10261
  return;
10262
+ const elValue = number || el.type === "number" ? looseToNumber(el.value) : el.value;
10263
+ const newValue = value == null ? "" : value;
10264
+ if (elValue === newValue) {
10265
+ return;
10266
+ }
10219
10267
  if (document.activeElement === el && el.type !== "range") {
10220
10268
  if (lazy) {
10221
10269
  return;
10222
10270
  }
10223
- if (trim && el.value.trim() === value) {
10271
+ if (trim && el.value.trim() === newValue) {
10224
10272
  return;
10225
10273
  }
10226
- if ((number || el.type === "number") && looseToNumber(el.value) === value) {
10227
- return;
10228
- }
10229
- }
10230
- const newValue = value == null ? "" : value;
10231
- if (el.value !== newValue) {
10232
- el.value = newValue;
10233
10274
  }
10275
+ el.value = newValue;
10234
10276
  }
10235
10277
  };
10236
10278
  const vModelCheckbox = {
@@ -10416,14 +10458,14 @@ const modifierGuards = {
10416
10458
  exact: (e, modifiers) => systemModifiers.some((m) => e[`${m}Key`] && !modifiers.includes(m))
10417
10459
  };
10418
10460
  const withModifiers = (fn, modifiers) => {
10419
- return (event, ...args) => {
10461
+ return fn._withMods || (fn._withMods = (event, ...args) => {
10420
10462
  for (let i = 0; i < modifiers.length; i++) {
10421
10463
  const guard = modifierGuards[modifiers[i]];
10422
10464
  if (guard && guard(event, modifiers))
10423
10465
  return;
10424
10466
  }
10425
10467
  return fn(event, ...args);
10426
- };
10468
+ });
10427
10469
  };
10428
10470
  const keyNames = {
10429
10471
  esc: "escape",
@@ -10435,7 +10477,7 @@ const keyNames = {
10435
10477
  delete: "backspace"
10436
10478
  };
10437
10479
  const withKeys = (fn, modifiers) => {
10438
- return (event) => {
10480
+ return fn._withKeys || (fn._withKeys = (event) => {
10439
10481
  if (!("key" in event)) {
10440
10482
  return;
10441
10483
  }
@@ -10443,7 +10485,7 @@ const withKeys = (fn, modifiers) => {
10443
10485
  if (modifiers.some((k) => k === eventKey || keyNames[k] === eventKey)) {
10444
10486
  return fn(event);
10445
10487
  }
10446
- };
10488
+ });
10447
10489
  };
10448
10490
 
10449
10491
  const rendererOptions = /* @__PURE__ */ extend({ patchProp }, nodeOps);