@vue/compat 3.4.22 → 3.4.24

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.4.22
2
+ * @vue/compat v3.4.24
3
3
  * (c) 2018-present Yuxi (Evan) You and Vue contributors
4
4
  * @license MIT
5
5
  **/
@@ -7,7 +7,7 @@
7
7
  // @__NO_SIDE_EFFECTS__
8
8
  function makeMap(str, expectsLowerCase) {
9
9
  const set = new Set(str.split(","));
10
- return expectsLowerCase ? (val) => set.has(val.toLowerCase()) : (val) => set.has(val);
10
+ return (val) => set.has(val);
11
11
  }
12
12
 
13
13
  const EMPTY_OBJ = !!(process.env.NODE_ENV !== "production") ? Object.freeze({}) : {};
@@ -2477,11 +2477,6 @@ Details: https://v3-migration.vuejs.org/breaking-changes/migration-build.html`
2477
2477
  warnedInvalidKeys[key] = true;
2478
2478
  }
2479
2479
  }
2480
- if (instance && config["OPTIONS_DATA_MERGE"] != null) {
2481
- warn$1(
2482
- `Deprecation config "${"OPTIONS_DATA_MERGE"}" can only be configured globally.`
2483
- );
2484
- }
2485
2480
  }
2486
2481
  function getCompatConfigForKey(key, instance) {
2487
2482
  const instanceConfig = instance && instance.type.compatConfig;
@@ -2864,21 +2859,21 @@ function renderComponentRoot(instance) {
2864
2859
  vnode,
2865
2860
  proxy,
2866
2861
  withProxy,
2867
- props,
2868
2862
  propsOptions: [propsOptions],
2869
2863
  slots,
2870
2864
  attrs,
2871
2865
  emit,
2872
2866
  render,
2873
2867
  renderCache,
2868
+ props,
2874
2869
  data,
2875
2870
  setupState,
2876
2871
  ctx,
2877
2872
  inheritAttrs
2878
2873
  } = instance;
2874
+ const prev = setCurrentRenderingInstance(instance);
2879
2875
  let result;
2880
2876
  let fallthroughAttrs;
2881
- const prev = setCurrentRenderingInstance(instance);
2882
2877
  if (!!(process.env.NODE_ENV !== "production")) {
2883
2878
  accessedAttrs = false;
2884
2879
  }
@@ -2900,7 +2895,7 @@ function renderComponentRoot(instance) {
2900
2895
  thisProxy,
2901
2896
  proxyToUse,
2902
2897
  renderCache,
2903
- props,
2898
+ !!(process.env.NODE_ENV !== "production") ? shallowReadonly(props) : props,
2904
2899
  setupState,
2905
2900
  data,
2906
2901
  ctx
@@ -2914,7 +2909,7 @@ function renderComponentRoot(instance) {
2914
2909
  }
2915
2910
  result = normalizeVNode(
2916
2911
  render2.length > 1 ? render2(
2917
- props,
2912
+ !!(process.env.NODE_ENV !== "production") ? shallowReadonly(props) : props,
2918
2913
  !!(process.env.NODE_ENV !== "production") ? {
2919
2914
  get attrs() {
2920
2915
  markAttrsAccessed();
@@ -2924,9 +2919,8 @@ function renderComponentRoot(instance) {
2924
2919
  emit
2925
2920
  } : { attrs, slots, emit }
2926
2921
  ) : render2(
2927
- props,
2922
+ !!(process.env.NODE_ENV !== "production") ? shallowReadonly(props) : props,
2928
2923
  null
2929
- /* we know it doesn't need it */
2930
2924
  )
2931
2925
  );
2932
2926
  fallthroughAttrs = Component.props ? attrs : getFunctionalFallthrough(attrs);
@@ -4490,11 +4484,19 @@ function emptyPlaceholder(vnode) {
4490
4484
  }
4491
4485
  }
4492
4486
  function getKeepAliveChild(vnode) {
4493
- return isKeepAlive(vnode) ? (
4494
- // #7121 ensure get the child component subtree in case
4495
- // it's been replaced during HMR
4496
- !!(process.env.NODE_ENV !== "production") && vnode.component ? vnode.component.subTree : vnode.children ? vnode.children[0] : void 0
4497
- ) : vnode;
4487
+ if (!isKeepAlive(vnode)) {
4488
+ return vnode;
4489
+ }
4490
+ if (!!(process.env.NODE_ENV !== "production") && vnode.component) {
4491
+ return vnode.component.subTree;
4492
+ }
4493
+ const { shapeFlag, children } = vnode;
4494
+ if (shapeFlag & 16) {
4495
+ return children[0];
4496
+ }
4497
+ if (shapeFlag & 32 && isFunction(children.default)) {
4498
+ return children.default();
4499
+ }
4498
4500
  }
4499
4501
  function setTransitionHooks(vnode, hooks) {
4500
4502
  if (vnode.shapeFlag & 6 && vnode.component) {
@@ -5700,7 +5702,7 @@ const PublicInstanceProxyHandlers = {
5700
5702
  let cssModule, globalProperties;
5701
5703
  if (publicGetter) {
5702
5704
  if (key === "$attrs") {
5703
- track(instance, "get", key);
5705
+ track(instance.attrs, "get", "");
5704
5706
  !!(process.env.NODE_ENV !== "production") && markAttrsAccessed();
5705
5707
  } else if (!!(process.env.NODE_ENV !== "production") && key === "$slots") {
5706
5708
  track(instance, "get", key);
@@ -6514,7 +6516,7 @@ function createCompatVue$1(createApp, createSingletonApp) {
6514
6516
  return vm;
6515
6517
  }
6516
6518
  }
6517
- Vue.version = `2.6.14-compat:${"3.4.22"}`;
6519
+ Vue.version = `2.6.14-compat:${"3.4.24"}`;
6518
6520
  Vue.config = singletonApp.config;
6519
6521
  Vue.use = (p, ...options) => {
6520
6522
  if (p && isFunction(p.install)) {
@@ -7154,10 +7156,13 @@ function shouldSkipAttr(key, instance) {
7154
7156
  return false;
7155
7157
  }
7156
7158
 
7157
- const attrsProto = {};
7159
+ const internalObjectProto = /* @__PURE__ */ Object.create(null);
7160
+ const createInternalObject = () => Object.create(internalObjectProto);
7161
+ const isInternalObject = (obj) => Object.getPrototypeOf(obj) === internalObjectProto;
7162
+
7158
7163
  function initProps(instance, rawProps, isStateful, isSSR = false) {
7159
7164
  const props = {};
7160
- const attrs = Object.create(attrsProto);
7165
+ const attrs = createInternalObject();
7161
7166
  instance.propsDefaults = /* @__PURE__ */ Object.create(null);
7162
7167
  setFullProps(instance, rawProps, props, attrs);
7163
7168
  for (const key in instance.propsOptions[0]) {
@@ -7633,23 +7638,17 @@ const normalizeVNodeSlots = (instance, children) => {
7633
7638
  instance.slots.default = () => normalized;
7634
7639
  };
7635
7640
  const initSlots = (instance, children) => {
7641
+ const slots = instance.slots = createInternalObject();
7636
7642
  if (instance.vnode.shapeFlag & 32) {
7637
7643
  const type = children._;
7638
7644
  if (type) {
7639
- instance.slots = toRaw(children);
7640
- def(instance.slots, "_", type);
7645
+ extend(slots, children);
7646
+ def(slots, "_", type);
7641
7647
  } else {
7642
- normalizeObjectSlots(
7643
- children,
7644
- instance.slots = {},
7645
- instance
7646
- );
7647
- }
7648
- } else {
7649
- instance.slots = {};
7650
- if (children) {
7651
- normalizeVNodeSlots(instance, children);
7648
+ normalizeObjectSlots(children, slots, instance);
7652
7649
  }
7650
+ } else if (children) {
7651
+ normalizeVNodeSlots(instance, children);
7653
7652
  }
7654
7653
  };
7655
7654
  const updateSlots = (instance, children, optimized) => {
@@ -10529,7 +10528,7 @@ Component that was made reactive: `,
10529
10528
  function guardReactiveProps(props) {
10530
10529
  if (!props)
10531
10530
  return null;
10532
- return isProxy(props) || Object.getPrototypeOf(props) === attrsProto ? extend({}, props) : props;
10531
+ return isProxy(props) || isInternalObject(props) ? extend({}, props) : props;
10533
10532
  }
10534
10533
  function cloneVNode(vnode, extraProps, mergeRef = false) {
10535
10534
  const { props, ref, patchFlag, children } = vnode;
@@ -10637,7 +10636,7 @@ function normalizeChildren(vnode, children) {
10637
10636
  } else {
10638
10637
  type = 32;
10639
10638
  const slotFlag = children._;
10640
- if (!slotFlag) {
10639
+ if (!slotFlag && !isInternalObject(children)) {
10641
10640
  children._ctx = currentRenderingInstance;
10642
10641
  } else if (slotFlag === 3 && currentRenderingInstance) {
10643
10642
  if (currentRenderingInstance.slots._ === 1) {
@@ -11429,7 +11428,7 @@ function isMemoSame(cached, memo) {
11429
11428
  return true;
11430
11429
  }
11431
11430
 
11432
- const version = "3.4.22";
11431
+ const version = "3.4.24";
11433
11432
  const warn = !!(process.env.NODE_ENV !== "production") ? warn$1 : NOOP;
11434
11433
  const ErrorTypeStrings = ErrorTypeStrings$1 ;
11435
11434
  const devtools = !!(process.env.NODE_ENV !== "production") || true ? devtools$1 : void 0;
@@ -11674,8 +11673,8 @@ function resolveTransitionProps(rawProps) {
11674
11673
  if (legacyClassEnabled && legacyLeaveFromClass) {
11675
11674
  addTransitionClass(el, legacyLeaveFromClass);
11676
11675
  }
11677
- forceReflow();
11678
11676
  addTransitionClass(el, leaveActiveClass);
11677
+ forceReflow();
11679
11678
  nextFrame(() => {
11680
11679
  if (!el._isLeaving) {
11681
11680
  return;
@@ -13405,8 +13404,7 @@ Vue.compile = () => {
13405
13404
  );
13406
13405
  }
13407
13406
  };
13408
- var Vue$1 = Vue;
13409
13407
 
13410
- const { configureCompat } = Vue$1;
13408
+ const { configureCompat } = Vue;
13411
13409
 
13412
- export { BaseTransition, BaseTransitionPropsValidators, Comment, DeprecationTypes, EffectScope, ErrorCodes, ErrorTypeStrings, Fragment, KeepAlive, ReactiveEffect, Static, Suspense, Teleport, Text, TrackOpTypes, Transition, TransitionGroup, TriggerOpTypes, VueElement, assertNumber, callWithAsyncErrorHandling, callWithErrorHandling, camelize, capitalize, cloneVNode, compatUtils, computed, configureCompat, createApp, createBlock, createCommentVNode, createElementBlock, createBaseVNode as createElementVNode, createHydrationRenderer, createPropsRestProxy, createRenderer, createSSRApp, createSlots, createStaticVNode, createTextVNode, createVNode, customRef, Vue$1 as default, defineAsyncComponent, defineComponent, defineCustomElement, defineEmits, defineExpose, defineModel, defineOptions, defineProps, defineSSRCustomElement, defineSlots, devtools, effect, effectScope, getCurrentInstance, getCurrentScope, getTransitionRawChildren, guardReactiveProps, h, handleError, hasInjectionContext, hydrate, initCustomFormatter, initDirectivesForSSR, inject, isMemoSame, isProxy, isReactive, isReadonly, isRef, isRuntimeOnly, isShallow, isVNode, markRaw, mergeDefaults, mergeModels, mergeProps, nextTick, normalizeClass, normalizeProps, normalizeStyle, onActivated, onBeforeMount, onBeforeUnmount, onBeforeUpdate, onDeactivated, onErrorCaptured, onMounted, onRenderTracked, onRenderTriggered, onScopeDispose, onServerPrefetch, onUnmounted, onUpdated, openBlock, popScopeId, provide, proxyRefs, pushScopeId, queuePostFlushCb, reactive, readonly, ref, registerRuntimeCompiler, render, renderList, renderSlot, resolveComponent, resolveDirective, resolveDynamicComponent, resolveFilter, resolveTransitionHooks, setBlockTracking, setDevtoolsHook, setTransitionHooks, shallowReactive, shallowReadonly, shallowRef, ssrContextKey, ssrUtils, stop, toDisplayString, toHandlerKey, toHandlers, toRaw, toRef, toRefs, toValue, transformVNodeArgs, triggerRef, unref, useAttrs, useCssModule, useCssVars, useModel, useSSRContext, useSlots, useTransitionState, vModelCheckbox, vModelDynamic, vModelRadio, vModelSelect, vModelText, vShow, version, warn, watch, watchEffect, watchPostEffect, watchSyncEffect, withAsyncContext, withCtx, withDefaults, withDirectives, withKeys, withMemo, withModifiers, withScopeId };
13410
+ export { BaseTransition, BaseTransitionPropsValidators, Comment, DeprecationTypes, EffectScope, ErrorCodes, ErrorTypeStrings, Fragment, KeepAlive, ReactiveEffect, Static, Suspense, Teleport, Text, TrackOpTypes, Transition, TransitionGroup, TriggerOpTypes, VueElement, assertNumber, callWithAsyncErrorHandling, callWithErrorHandling, camelize, capitalize, cloneVNode, compatUtils, computed, configureCompat, createApp, createBlock, createCommentVNode, createElementBlock, createBaseVNode as createElementVNode, createHydrationRenderer, createPropsRestProxy, createRenderer, createSSRApp, createSlots, createStaticVNode, createTextVNode, createVNode, customRef, Vue as default, defineAsyncComponent, defineComponent, defineCustomElement, defineEmits, defineExpose, defineModel, defineOptions, defineProps, defineSSRCustomElement, defineSlots, devtools, effect, effectScope, getCurrentInstance, getCurrentScope, getTransitionRawChildren, guardReactiveProps, h, handleError, hasInjectionContext, hydrate, initCustomFormatter, initDirectivesForSSR, inject, isMemoSame, isProxy, isReactive, isReadonly, isRef, isRuntimeOnly, isShallow, isVNode, markRaw, mergeDefaults, mergeModels, mergeProps, nextTick, normalizeClass, normalizeProps, normalizeStyle, onActivated, onBeforeMount, onBeforeUnmount, onBeforeUpdate, onDeactivated, onErrorCaptured, onMounted, onRenderTracked, onRenderTriggered, onScopeDispose, onServerPrefetch, onUnmounted, onUpdated, openBlock, popScopeId, provide, proxyRefs, pushScopeId, queuePostFlushCb, reactive, readonly, ref, registerRuntimeCompiler, render, renderList, renderSlot, resolveComponent, resolveDirective, resolveDynamicComponent, resolveFilter, resolveTransitionHooks, setBlockTracking, setDevtoolsHook, setTransitionHooks, shallowReactive, shallowReadonly, shallowRef, ssrContextKey, ssrUtils, stop, toDisplayString, toHandlerKey, toHandlers, toRaw, toRef, toRefs, toValue, transformVNodeArgs, triggerRef, unref, useAttrs, useCssModule, useCssVars, useModel, useSSRContext, useSlots, useTransitionState, vModelCheckbox, vModelDynamic, vModelRadio, vModelSelect, vModelText, vShow, version, warn, watch, watchEffect, watchPostEffect, watchSyncEffect, withAsyncContext, withCtx, withDefaults, withDirectives, withKeys, withMemo, withModifiers, withScopeId };
@@ -1,5 +1,5 @@
1
1
  /**
2
- * @vue/compat v3.4.22
2
+ * @vue/compat v3.4.24
3
3
  * (c) 2018-present Yuxi (Evan) You and Vue contributors
4
4
  * @license MIT
5
5
  **/
@@ -10,7 +10,7 @@ var Vue = (function () {
10
10
  // @__NO_SIDE_EFFECTS__
11
11
  function makeMap(str, expectsLowerCase) {
12
12
  const set = new Set(str.split(","));
13
- return expectsLowerCase ? (val) => set.has(val.toLowerCase()) : (val) => set.has(val);
13
+ return (val) => set.has(val);
14
14
  }
15
15
 
16
16
  const EMPTY_OBJ = Object.freeze({}) ;
@@ -2473,11 +2473,6 @@ Details: https://v3-migration.vuejs.org/breaking-changes/migration-build.html`
2473
2473
  warnedInvalidKeys[key] = true;
2474
2474
  }
2475
2475
  }
2476
- if (instance && config["OPTIONS_DATA_MERGE"] != null) {
2477
- warn$1(
2478
- `Deprecation config "${"OPTIONS_DATA_MERGE"}" can only be configured globally.`
2479
- );
2480
- }
2481
2476
  }
2482
2477
  function getCompatConfigForKey(key, instance) {
2483
2478
  const instanceConfig = instance && instance.type.compatConfig;
@@ -2860,21 +2855,21 @@ Details: https://v3-migration.vuejs.org/breaking-changes/migration-build.html`
2860
2855
  vnode,
2861
2856
  proxy,
2862
2857
  withProxy,
2863
- props,
2864
2858
  propsOptions: [propsOptions],
2865
2859
  slots,
2866
2860
  attrs,
2867
2861
  emit,
2868
2862
  render,
2869
2863
  renderCache,
2864
+ props,
2870
2865
  data,
2871
2866
  setupState,
2872
2867
  ctx,
2873
2868
  inheritAttrs
2874
2869
  } = instance;
2870
+ const prev = setCurrentRenderingInstance(instance);
2875
2871
  let result;
2876
2872
  let fallthroughAttrs;
2877
- const prev = setCurrentRenderingInstance(instance);
2878
2873
  {
2879
2874
  accessedAttrs = false;
2880
2875
  }
@@ -2896,7 +2891,7 @@ Details: https://v3-migration.vuejs.org/breaking-changes/migration-build.html`
2896
2891
  thisProxy,
2897
2892
  proxyToUse,
2898
2893
  renderCache,
2899
- props,
2894
+ true ? shallowReadonly(props) : props,
2900
2895
  setupState,
2901
2896
  data,
2902
2897
  ctx
@@ -2910,7 +2905,7 @@ Details: https://v3-migration.vuejs.org/breaking-changes/migration-build.html`
2910
2905
  }
2911
2906
  result = normalizeVNode(
2912
2907
  render2.length > 1 ? render2(
2913
- props,
2908
+ true ? shallowReadonly(props) : props,
2914
2909
  true ? {
2915
2910
  get attrs() {
2916
2911
  markAttrsAccessed();
@@ -2920,9 +2915,8 @@ Details: https://v3-migration.vuejs.org/breaking-changes/migration-build.html`
2920
2915
  emit
2921
2916
  } : { attrs, slots, emit }
2922
2917
  ) : render2(
2923
- props,
2918
+ true ? shallowReadonly(props) : props,
2924
2919
  null
2925
- /* we know it doesn't need it */
2926
2920
  )
2927
2921
  );
2928
2922
  fallthroughAttrs = Component.props ? attrs : getFunctionalFallthrough(attrs);
@@ -4457,11 +4451,19 @@ If this is a native custom element, make sure to exclude it from component resol
4457
4451
  }
4458
4452
  }
4459
4453
  function getKeepAliveChild(vnode) {
4460
- return isKeepAlive(vnode) ? (
4461
- // #7121 ensure get the child component subtree in case
4462
- // it's been replaced during HMR
4463
- vnode.component ? vnode.component.subTree : vnode.children ? vnode.children[0] : void 0
4464
- ) : vnode;
4454
+ if (!isKeepAlive(vnode)) {
4455
+ return vnode;
4456
+ }
4457
+ if (vnode.component) {
4458
+ return vnode.component.subTree;
4459
+ }
4460
+ const { shapeFlag, children } = vnode;
4461
+ if (shapeFlag & 16) {
4462
+ return children[0];
4463
+ }
4464
+ if (shapeFlag & 32 && isFunction(children.default)) {
4465
+ return children.default();
4466
+ }
4465
4467
  }
4466
4468
  function setTransitionHooks(vnode, hooks) {
4467
4469
  if (vnode.shapeFlag & 6 && vnode.component) {
@@ -5661,7 +5663,7 @@ If this is a native custom element, make sure to exclude it from component resol
5661
5663
  let cssModule, globalProperties;
5662
5664
  if (publicGetter) {
5663
5665
  if (key === "$attrs") {
5664
- track(instance, "get", key);
5666
+ track(instance.attrs, "get", "");
5665
5667
  markAttrsAccessed();
5666
5668
  } else if (key === "$slots") {
5667
5669
  track(instance, "get", key);
@@ -6473,7 +6475,7 @@ If this is a native custom element, make sure to exclude it from component resol
6473
6475
  return vm;
6474
6476
  }
6475
6477
  }
6476
- Vue.version = `2.6.14-compat:${"3.4.22"}`;
6478
+ Vue.version = `2.6.14-compat:${"3.4.24"}`;
6477
6479
  Vue.config = singletonApp.config;
6478
6480
  Vue.use = (p, ...options) => {
6479
6481
  if (p && isFunction(p.install)) {
@@ -7110,10 +7112,13 @@ If you want to remount the same app, move your app creation logic into a factory
7110
7112
  return false;
7111
7113
  }
7112
7114
 
7113
- const attrsProto = {};
7115
+ const internalObjectProto = /* @__PURE__ */ Object.create(null);
7116
+ const createInternalObject = () => Object.create(internalObjectProto);
7117
+ const isInternalObject = (obj) => Object.getPrototypeOf(obj) === internalObjectProto;
7118
+
7114
7119
  function initProps(instance, rawProps, isStateful, isSSR = false) {
7115
7120
  const props = {};
7116
- const attrs = Object.create(attrsProto);
7121
+ const attrs = createInternalObject();
7117
7122
  instance.propsDefaults = /* @__PURE__ */ Object.create(null);
7118
7123
  setFullProps(instance, rawProps, props, attrs);
7119
7124
  for (const key in instance.propsOptions[0]) {
@@ -7589,23 +7594,17 @@ If you want to remount the same app, move your app creation logic into a factory
7589
7594
  instance.slots.default = () => normalized;
7590
7595
  };
7591
7596
  const initSlots = (instance, children) => {
7597
+ const slots = instance.slots = createInternalObject();
7592
7598
  if (instance.vnode.shapeFlag & 32) {
7593
7599
  const type = children._;
7594
7600
  if (type) {
7595
- instance.slots = toRaw(children);
7596
- def(instance.slots, "_", type);
7601
+ extend(slots, children);
7602
+ def(slots, "_", type);
7597
7603
  } else {
7598
- normalizeObjectSlots(
7599
- children,
7600
- instance.slots = {},
7601
- instance
7602
- );
7603
- }
7604
- } else {
7605
- instance.slots = {};
7606
- if (children) {
7607
- normalizeVNodeSlots(instance, children);
7604
+ normalizeObjectSlots(children, slots, instance);
7608
7605
  }
7606
+ } else if (children) {
7607
+ normalizeVNodeSlots(instance, children);
7609
7608
  }
7610
7609
  };
7611
7610
  const updateSlots = (instance, children, optimized) => {
@@ -10437,7 +10436,7 @@ Component that was made reactive: `,
10437
10436
  function guardReactiveProps(props) {
10438
10437
  if (!props)
10439
10438
  return null;
10440
- return isProxy(props) || Object.getPrototypeOf(props) === attrsProto ? extend({}, props) : props;
10439
+ return isProxy(props) || isInternalObject(props) ? extend({}, props) : props;
10441
10440
  }
10442
10441
  function cloneVNode(vnode, extraProps, mergeRef = false) {
10443
10442
  const { props, ref, patchFlag, children } = vnode;
@@ -10545,7 +10544,7 @@ Component that was made reactive: `,
10545
10544
  } else {
10546
10545
  type = 32;
10547
10546
  const slotFlag = children._;
10548
- if (!slotFlag) {
10547
+ if (!slotFlag && !isInternalObject(children)) {
10549
10548
  children._ctx = currentRenderingInstance;
10550
10549
  } else if (slotFlag === 3 && currentRenderingInstance) {
10551
10550
  if (currentRenderingInstance.slots._ === 1) {
@@ -11306,7 +11305,7 @@ Component that was made reactive: `,
11306
11305
  return true;
11307
11306
  }
11308
11307
 
11309
- const version = "3.4.22";
11308
+ const version = "3.4.24";
11310
11309
  const warn = warn$1 ;
11311
11310
  const ErrorTypeStrings = ErrorTypeStrings$1 ;
11312
11311
  const devtools = devtools$1 ;
@@ -11543,8 +11542,8 @@ Component that was made reactive: `,
11543
11542
  if (legacyClassEnabled && legacyLeaveFromClass) {
11544
11543
  addTransitionClass(el, legacyLeaveFromClass);
11545
11544
  }
11546
- forceReflow();
11547
11545
  addTransitionClass(el, leaveActiveClass);
11546
+ forceReflow();
11548
11547
  nextFrame(() => {
11549
11548
  if (!el._isLeaving) {
11550
11549
  return;