@vue/runtime-dom 3.5.21 → 3.5.22

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/runtime-dom v3.5.21
2
+ * @vue/runtime-dom v3.5.22
3
3
  * (c) 2018-present Yuxi (Evan) You and Vue contributors
4
4
  * @license MIT
5
5
  **/
@@ -217,11 +217,11 @@ function resolveTransitionProps(rawProps) {
217
217
  const resolve = () => finishLeave(el, done);
218
218
  addTransitionClass(el, leaveFromClass);
219
219
  if (!el._enterCancelled) {
220
- forceReflow();
220
+ forceReflow(el);
221
221
  addTransitionClass(el, leaveActiveClass);
222
222
  } else {
223
223
  addTransitionClass(el, leaveActiveClass);
224
- forceReflow();
224
+ forceReflow(el);
225
225
  }
226
226
  nextFrame(() => {
227
227
  if (!el._isLeaving) {
@@ -367,8 +367,9 @@ function toMs(s) {
367
367
  if (s === "auto") return 0;
368
368
  return Number(s.slice(0, -1).replace(",", ".")) * 1e3;
369
369
  }
370
- function forceReflow() {
371
- return document.body.offsetHeight;
370
+ function forceReflow(el) {
371
+ const targetDocument = el ? el.ownerDocument : document;
372
+ return targetDocument.body.offsetHeight;
372
373
  }
373
374
 
374
375
  function patchClass(el, value, isSVG) {
@@ -813,7 +814,11 @@ class VueElement extends BaseClass {
813
814
  );
814
815
  }
815
816
  if (_def.shadowRoot !== false) {
816
- this.attachShadow({ mode: "open" });
817
+ this.attachShadow(
818
+ shared.extend({}, _def.shadowRootOptions, {
819
+ mode: "open"
820
+ })
821
+ );
817
822
  this._root = this.shadowRoot;
818
823
  } else {
819
824
  this._root = this;
@@ -873,9 +878,18 @@ class VueElement extends BaseClass {
873
878
  this._app && this._app.unmount();
874
879
  if (this._instance) this._instance.ce = void 0;
875
880
  this._app = this._instance = null;
881
+ if (this._teleportTargets) {
882
+ this._teleportTargets.clear();
883
+ this._teleportTargets = void 0;
884
+ }
876
885
  }
877
886
  });
878
887
  }
888
+ _processMutations(mutations) {
889
+ for (const m of mutations) {
890
+ this._setAttr(m.attributeName);
891
+ }
892
+ }
879
893
  /**
880
894
  * resolve inner component definition (handle possible async component)
881
895
  */
@@ -886,11 +900,7 @@ class VueElement extends BaseClass {
886
900
  for (let i = 0; i < this.attributes.length; i++) {
887
901
  this._setAttr(this.attributes[i].name);
888
902
  }
889
- this._ob = new MutationObserver((mutations) => {
890
- for (const m of mutations) {
891
- this._setAttr(m.attributeName);
892
- }
893
- });
903
+ this._ob = new MutationObserver(this._processMutations.bind(this));
894
904
  this._ob.observe(this, { attributes: true });
895
905
  const resolve = (def, isAsync = false) => {
896
906
  this._resolved = true;
@@ -1006,7 +1016,10 @@ class VueElement extends BaseClass {
1006
1016
  }
1007
1017
  if (shouldReflect) {
1008
1018
  const ob = this._ob;
1009
- ob && ob.disconnect();
1019
+ if (ob) {
1020
+ this._processMutations(ob.takeRecords());
1021
+ ob.disconnect();
1022
+ }
1010
1023
  if (val === true) {
1011
1024
  this.setAttribute(shared.hyphenate(key), "");
1012
1025
  } else if (typeof val === "string" || typeof val === "number") {
@@ -1110,7 +1123,7 @@ class VueElement extends BaseClass {
1110
1123
  * Only called when shadowRoot is false
1111
1124
  */
1112
1125
  _renderSlots() {
1113
- const outlets = (this._teleportTarget || this).querySelectorAll("slot");
1126
+ const outlets = this._getSlots();
1114
1127
  const scopeId = this._instance.type.__scopeId;
1115
1128
  for (let i = 0; i < outlets.length; i++) {
1116
1129
  const o = outlets[i];
@@ -1136,6 +1149,19 @@ class VueElement extends BaseClass {
1136
1149
  parent.removeChild(o);
1137
1150
  }
1138
1151
  }
1152
+ /**
1153
+ * @internal
1154
+ */
1155
+ _getSlots() {
1156
+ const roots = [this];
1157
+ if (this._teleportTargets) {
1158
+ roots.push(...this._teleportTargets);
1159
+ }
1160
+ return roots.reduce((res, i) => {
1161
+ res.push(...Array.from(i.querySelectorAll("slot")));
1162
+ return res;
1163
+ }, []);
1164
+ }
1139
1165
  /**
1140
1166
  * @internal
1141
1167
  */
@@ -1237,7 +1263,7 @@ const TransitionGroupImpl = /* @__PURE__ */ decorate({
1237
1263
  prevChildren.forEach(callPendingCbs);
1238
1264
  prevChildren.forEach(recordPosition);
1239
1265
  const movedChildren = prevChildren.filter(applyTranslation);
1240
- forceReflow();
1266
+ forceReflow(instance.vnode.el);
1241
1267
  movedChildren.forEach((c) => {
1242
1268
  const el = c.el;
1243
1269
  const style = el.style;
@@ -1,5 +1,5 @@
1
1
  /**
2
- * @vue/runtime-dom v3.5.21
2
+ * @vue/runtime-dom v3.5.22
3
3
  * (c) 2018-present Yuxi (Evan) You and Vue contributors
4
4
  * @license MIT
5
5
  **/
@@ -216,11 +216,11 @@ function resolveTransitionProps(rawProps) {
216
216
  const resolve = () => finishLeave(el, done);
217
217
  addTransitionClass(el, leaveFromClass);
218
218
  if (!el._enterCancelled) {
219
- forceReflow();
219
+ forceReflow(el);
220
220
  addTransitionClass(el, leaveActiveClass);
221
221
  } else {
222
222
  addTransitionClass(el, leaveActiveClass);
223
- forceReflow();
223
+ forceReflow(el);
224
224
  }
225
225
  nextFrame(() => {
226
226
  if (!el._isLeaving) {
@@ -363,8 +363,9 @@ function toMs(s) {
363
363
  if (s === "auto") return 0;
364
364
  return Number(s.slice(0, -1).replace(",", ".")) * 1e3;
365
365
  }
366
- function forceReflow() {
367
- return document.body.offsetHeight;
366
+ function forceReflow(el) {
367
+ const targetDocument = el ? el.ownerDocument : document;
368
+ return targetDocument.body.offsetHeight;
368
369
  }
369
370
 
370
371
  function patchClass(el, value, isSVG) {
@@ -780,7 +781,11 @@ class VueElement extends BaseClass {
780
781
  this._root = this.shadowRoot;
781
782
  } else {
782
783
  if (_def.shadowRoot !== false) {
783
- this.attachShadow({ mode: "open" });
784
+ this.attachShadow(
785
+ shared.extend({}, _def.shadowRootOptions, {
786
+ mode: "open"
787
+ })
788
+ );
784
789
  this._root = this.shadowRoot;
785
790
  } else {
786
791
  this._root = this;
@@ -840,9 +845,18 @@ class VueElement extends BaseClass {
840
845
  this._app && this._app.unmount();
841
846
  if (this._instance) this._instance.ce = void 0;
842
847
  this._app = this._instance = null;
848
+ if (this._teleportTargets) {
849
+ this._teleportTargets.clear();
850
+ this._teleportTargets = void 0;
851
+ }
843
852
  }
844
853
  });
845
854
  }
855
+ _processMutations(mutations) {
856
+ for (const m of mutations) {
857
+ this._setAttr(m.attributeName);
858
+ }
859
+ }
846
860
  /**
847
861
  * resolve inner component definition (handle possible async component)
848
862
  */
@@ -853,11 +867,7 @@ class VueElement extends BaseClass {
853
867
  for (let i = 0; i < this.attributes.length; i++) {
854
868
  this._setAttr(this.attributes[i].name);
855
869
  }
856
- this._ob = new MutationObserver((mutations) => {
857
- for (const m of mutations) {
858
- this._setAttr(m.attributeName);
859
- }
860
- });
870
+ this._ob = new MutationObserver(this._processMutations.bind(this));
861
871
  this._ob.observe(this, { attributes: true });
862
872
  const resolve = (def, isAsync = false) => {
863
873
  this._resolved = true;
@@ -964,7 +974,10 @@ class VueElement extends BaseClass {
964
974
  }
965
975
  if (shouldReflect) {
966
976
  const ob = this._ob;
967
- ob && ob.disconnect();
977
+ if (ob) {
978
+ this._processMutations(ob.takeRecords());
979
+ ob.disconnect();
980
+ }
968
981
  if (val === true) {
969
982
  this.setAttribute(shared.hyphenate(key), "");
970
983
  } else if (typeof val === "string" || typeof val === "number") {
@@ -1043,7 +1056,7 @@ class VueElement extends BaseClass {
1043
1056
  * Only called when shadowRoot is false
1044
1057
  */
1045
1058
  _renderSlots() {
1046
- const outlets = (this._teleportTarget || this).querySelectorAll("slot");
1059
+ const outlets = this._getSlots();
1047
1060
  const scopeId = this._instance.type.__scopeId;
1048
1061
  for (let i = 0; i < outlets.length; i++) {
1049
1062
  const o = outlets[i];
@@ -1069,6 +1082,19 @@ class VueElement extends BaseClass {
1069
1082
  parent.removeChild(o);
1070
1083
  }
1071
1084
  }
1085
+ /**
1086
+ * @internal
1087
+ */
1088
+ _getSlots() {
1089
+ const roots = [this];
1090
+ if (this._teleportTargets) {
1091
+ roots.push(...this._teleportTargets);
1092
+ }
1093
+ return roots.reduce((res, i) => {
1094
+ res.push(...Array.from(i.querySelectorAll("slot")));
1095
+ return res;
1096
+ }, []);
1097
+ }
1072
1098
  /**
1073
1099
  * @internal
1074
1100
  */
@@ -1147,7 +1173,7 @@ const TransitionGroupImpl = /* @__PURE__ */ decorate({
1147
1173
  prevChildren.forEach(callPendingCbs);
1148
1174
  prevChildren.forEach(recordPosition);
1149
1175
  const movedChildren = prevChildren.filter(applyTranslation);
1150
- forceReflow();
1176
+ forceReflow(instance.vnode.el);
1151
1177
  movedChildren.forEach((c) => {
1152
1178
  const el = c.el;
1153
1179
  const style = el.style;
@@ -92,6 +92,7 @@ export type VueElementConstructor<P = {}> = {
92
92
  export interface CustomElementOptions {
93
93
  styles?: string[];
94
94
  shadowRoot?: boolean;
95
+ shadowRootOptions?: Omit<ShadowRootInit, 'mode'>;
95
96
  nonce?: string;
96
97
  configureApp?: (app: App) => void;
97
98
  }
@@ -148,6 +149,7 @@ export declare class VueElement extends BaseClass implements ComponentCustomElem
148
149
  private _setParent;
149
150
  private _inheritParentContext;
150
151
  disconnectedCallback(): void;
152
+ private _processMutations;
151
153
  /**
152
154
  * resolve inner component definition (handle possible async component)
153
155
  */
@@ -496,7 +498,6 @@ export interface DataHTMLAttributes extends HTMLAttributes {
496
498
  export interface DetailsHTMLAttributes extends HTMLAttributes {
497
499
  name?: string | undefined;
498
500
  open?: Booleanish | undefined;
499
- onToggle?: ((payload: ToggleEvent) => void) | undefined;
500
501
  }
501
502
  export interface DelHTMLAttributes extends HTMLAttributes {
502
503
  cite?: string | undefined;
@@ -505,6 +506,7 @@ export interface DelHTMLAttributes extends HTMLAttributes {
505
506
  export interface DialogHTMLAttributes extends HTMLAttributes {
506
507
  open?: Booleanish | undefined;
507
508
  onClose?: ((payload: Event) => void) | undefined;
509
+ onCancel?: ((payload: Event) => void) | undefined;
508
510
  }
509
511
  export interface EmbedHTMLAttributes extends HTMLAttributes {
510
512
  height?: Numberish | undefined;
@@ -605,6 +607,7 @@ export interface InputHTMLAttributes extends HTMLAttributes {
605
607
  type?: InputTypeHTMLAttribute | undefined;
606
608
  value?: any;
607
609
  width?: Numberish | undefined;
610
+ onCancel?: ((payload: Event) => void) | undefined;
608
611
  }
609
612
  export interface KeygenHTMLAttributes extends HTMLAttributes {
610
613
  autofocus?: Booleanish | undefined;
@@ -1282,18 +1285,18 @@ export interface Events {
1282
1285
  onBlur: FocusEvent;
1283
1286
  onChange: Event;
1284
1287
  onBeforeinput: InputEvent;
1285
- onInput: Event;
1288
+ onFormdata: FormDataEvent;
1289
+ onInput: InputEvent;
1286
1290
  onReset: Event;
1287
1291
  onSubmit: SubmitEvent;
1288
1292
  onInvalid: Event;
1293
+ onFullscreenchange: Event;
1294
+ onFullscreenerror: Event;
1289
1295
  onLoad: Event;
1290
1296
  onError: Event;
1291
1297
  onKeydown: KeyboardEvent;
1292
1298
  onKeypress: KeyboardEvent;
1293
1299
  onKeyup: KeyboardEvent;
1294
- onAuxclick: PointerEvent;
1295
- onClick: PointerEvent;
1296
- onContextmenu: PointerEvent;
1297
1300
  onDblclick: MouseEvent;
1298
1301
  onMousedown: MouseEvent;
1299
1302
  onMouseenter: MouseEvent;
@@ -1331,6 +1334,11 @@ export interface Events {
1331
1334
  onTouchend: TouchEvent;
1332
1335
  onTouchmove: TouchEvent;
1333
1336
  onTouchstart: TouchEvent;
1337
+ onAuxclick: PointerEvent;
1338
+ onClick: PointerEvent;
1339
+ onContextmenu: PointerEvent;
1340
+ onGotpointercapture: PointerEvent;
1341
+ onLostpointercapture: PointerEvent;
1334
1342
  onPointerdown: PointerEvent;
1335
1343
  onPointermove: PointerEvent;
1336
1344
  onPointerup: PointerEvent;
@@ -1339,11 +1347,17 @@ export interface Events {
1339
1347
  onPointerleave: PointerEvent;
1340
1348
  onPointerover: PointerEvent;
1341
1349
  onPointerout: PointerEvent;
1350
+ onBeforetoggle: ToggleEvent;
1351
+ onToggle: ToggleEvent;
1342
1352
  onWheel: WheelEvent;
1353
+ onAnimationcancel: AnimationEvent;
1343
1354
  onAnimationstart: AnimationEvent;
1344
1355
  onAnimationend: AnimationEvent;
1345
1356
  onAnimationiteration: AnimationEvent;
1357
+ onSecuritypolicyviolation: SecurityPolicyViolationEvent;
1358
+ onTransitioncancel: TransitionEvent;
1346
1359
  onTransitionend: TransitionEvent;
1360
+ onTransitionrun: TransitionEvent;
1347
1361
  onTransitionstart: TransitionEvent;
1348
1362
  }
1349
1363
  type EventHandlers<E> = {
@@ -1365,10 +1379,9 @@ export type NativeElements = {
1365
1379
  *
1366
1380
  * To enable proper types, add `"dom"` to `"lib"` in your `tsconfig.json`.
1367
1381
  */
1368
- type DomStub = {};
1369
1382
  type DomType<T> = typeof globalThis extends {
1370
1383
  window: unknown;
1371
- } ? T : DomStub;
1384
+ } ? T : never;
1372
1385
  declare module '@vue/reactivity' {
1373
1386
  interface RefUnwrapBailTypes {
1374
1387
  runtimeDOMBailTypes: DomType<Node | Window>;
@@ -1,5 +1,5 @@
1
1
  /**
2
- * @vue/runtime-dom v3.5.21
2
+ * @vue/runtime-dom v3.5.22
3
3
  * (c) 2018-present Yuxi (Evan) You and Vue contributors
4
4
  * @license MIT
5
5
  **/
@@ -1142,7 +1142,7 @@ function iterator(self, method, wrapValue) {
1142
1142
  iter._next = iter.next;
1143
1143
  iter.next = () => {
1144
1144
  const result = iter._next();
1145
- if (result.value) {
1145
+ if (!result.done) {
1146
1146
  result.value = wrapValue(result.value);
1147
1147
  }
1148
1148
  return result;
@@ -1269,7 +1269,8 @@ class BaseReactiveHandler {
1269
1269
  return res;
1270
1270
  }
1271
1271
  if (isRef(res)) {
1272
- return targetIsArray && isIntegerKey(key) ? res : res.value;
1272
+ const value = targetIsArray && isIntegerKey(key) ? res : res.value;
1273
+ return isReadonly2 && isObject(value) ? readonly(value) : value;
1273
1274
  }
1274
1275
  if (isObject(res)) {
1275
1276
  return isReadonly2 ? readonly(res) : reactive(res);
@@ -2619,14 +2620,11 @@ function checkRecursiveUpdates(seen, fn) {
2619
2620
  let isHmrUpdating = false;
2620
2621
  const hmrDirtyComponents = /* @__PURE__ */ new Map();
2621
2622
  {
2622
- const g = getGlobalThis();
2623
- if (!g.__VUE_HMR_RUNTIME__) {
2624
- g.__VUE_HMR_RUNTIME__ = {
2625
- createRecord: tryWrap(createRecord),
2626
- rerender: tryWrap(rerender),
2627
- reload: tryWrap(reload)
2628
- };
2629
- }
2623
+ getGlobalThis().__VUE_HMR_RUNTIME__ = {
2624
+ createRecord: tryWrap(createRecord),
2625
+ rerender: tryWrap(rerender),
2626
+ reload: tryWrap(reload)
2627
+ };
2630
2628
  }
2631
2629
  const map = /* @__PURE__ */ new Map();
2632
2630
  function registerHMR(instance) {
@@ -2993,9 +2991,6 @@ const TeleportImpl = {
2993
2991
  insert(mainAnchor, container, anchor);
2994
2992
  const mount = (container2, anchor2) => {
2995
2993
  if (shapeFlag & 16) {
2996
- if (parentComponent && parentComponent.isCE) {
2997
- parentComponent.ce._teleportTarget = container2;
2998
- }
2999
2994
  mountChildren(
3000
2995
  children,
3001
2996
  container2,
@@ -3017,6 +3012,9 @@ const TeleportImpl = {
3017
3012
  } else if (namespace !== "mathml" && isTargetMathML(target)) {
3018
3013
  namespace = "mathml";
3019
3014
  }
3015
+ if (parentComponent && parentComponent.isCE) {
3016
+ (parentComponent.ce._teleportTargets || (parentComponent.ce._teleportTargets = /* @__PURE__ */ new Set())).add(target);
3017
+ }
3020
3018
  if (!disabled) {
3021
3019
  mount(target, targetAnchor);
3022
3020
  updateCssVars(n2, false);
@@ -5182,12 +5180,13 @@ function createSlots(slots, dynamicSlots) {
5182
5180
 
5183
5181
  function renderSlot(slots, name, props = {}, fallback, noSlotted) {
5184
5182
  if (currentRenderingInstance.ce || currentRenderingInstance.parent && isAsyncWrapper(currentRenderingInstance.parent) && currentRenderingInstance.parent.ce) {
5183
+ const hasProps = Object.keys(props).length > 0;
5185
5184
  if (name !== "default") props.name = name;
5186
5185
  return openBlock(), createBlock(
5187
5186
  Fragment,
5188
5187
  null,
5189
5188
  [createVNode("slot", props, fallback && fallback())],
5190
- 64
5189
+ hasProps ? -2 : 64
5191
5190
  );
5192
5191
  }
5193
5192
  let slot = slots[name];
@@ -10362,31 +10361,28 @@ const computed = (getterOrOptions, debugOptions) => {
10362
10361
  };
10363
10362
 
10364
10363
  function h(type, propsOrChildren, children) {
10365
- const doCreateVNode = (type2, props, children2) => {
10364
+ try {
10366
10365
  setBlockTracking(-1);
10367
- try {
10368
- return createVNode(type2, props, children2);
10369
- } finally {
10370
- setBlockTracking(1);
10371
- }
10372
- };
10373
- const l = arguments.length;
10374
- if (l === 2) {
10375
- if (isObject(propsOrChildren) && !isArray(propsOrChildren)) {
10376
- if (isVNode(propsOrChildren)) {
10377
- return doCreateVNode(type, null, [propsOrChildren]);
10366
+ const l = arguments.length;
10367
+ if (l === 2) {
10368
+ if (isObject(propsOrChildren) && !isArray(propsOrChildren)) {
10369
+ if (isVNode(propsOrChildren)) {
10370
+ return createVNode(type, null, [propsOrChildren]);
10371
+ }
10372
+ return createVNode(type, propsOrChildren);
10373
+ } else {
10374
+ return createVNode(type, null, propsOrChildren);
10378
10375
  }
10379
- return doCreateVNode(type, propsOrChildren);
10380
10376
  } else {
10381
- return doCreateVNode(type, null, propsOrChildren);
10382
- }
10383
- } else {
10384
- if (l > 3) {
10385
- children = Array.prototype.slice.call(arguments, 2);
10386
- } else if (l === 3 && isVNode(children)) {
10387
- children = [children];
10377
+ if (l > 3) {
10378
+ children = Array.prototype.slice.call(arguments, 2);
10379
+ } else if (l === 3 && isVNode(children)) {
10380
+ children = [children];
10381
+ }
10382
+ return createVNode(type, propsOrChildren, children);
10388
10383
  }
10389
- return doCreateVNode(type, propsOrChildren, children);
10384
+ } finally {
10385
+ setBlockTracking(1);
10390
10386
  }
10391
10387
  }
10392
10388
 
@@ -10596,7 +10592,7 @@ function isMemoSame(cached, memo) {
10596
10592
  return true;
10597
10593
  }
10598
10594
 
10599
- const version = "3.5.21";
10595
+ const version = "3.5.22";
10600
10596
  const warn = warn$1 ;
10601
10597
  const ErrorTypeStrings = ErrorTypeStrings$1 ;
10602
10598
  const devtools = devtools$1 ;
@@ -10825,11 +10821,11 @@ function resolveTransitionProps(rawProps) {
10825
10821
  const resolve = () => finishLeave(el, done);
10826
10822
  addTransitionClass(el, leaveFromClass);
10827
10823
  if (!el._enterCancelled) {
10828
- forceReflow();
10824
+ forceReflow(el);
10829
10825
  addTransitionClass(el, leaveActiveClass);
10830
10826
  } else {
10831
10827
  addTransitionClass(el, leaveActiveClass);
10832
- forceReflow();
10828
+ forceReflow(el);
10833
10829
  }
10834
10830
  nextFrame(() => {
10835
10831
  if (!el._isLeaving) {
@@ -10975,8 +10971,9 @@ function toMs(s) {
10975
10971
  if (s === "auto") return 0;
10976
10972
  return Number(s.slice(0, -1).replace(",", ".")) * 1e3;
10977
10973
  }
10978
- function forceReflow() {
10979
- return document.body.offsetHeight;
10974
+ function forceReflow(el) {
10975
+ const targetDocument = el ? el.ownerDocument : document;
10976
+ return targetDocument.body.offsetHeight;
10980
10977
  }
10981
10978
 
10982
10979
  function patchClass(el, value, isSVG) {
@@ -11489,7 +11486,11 @@ class VueElement extends BaseClass {
11489
11486
  );
11490
11487
  }
11491
11488
  if (_def.shadowRoot !== false) {
11492
- this.attachShadow({ mode: "open" });
11489
+ this.attachShadow(
11490
+ extend({}, _def.shadowRootOptions, {
11491
+ mode: "open"
11492
+ })
11493
+ );
11493
11494
  this._root = this.shadowRoot;
11494
11495
  } else {
11495
11496
  this._root = this;
@@ -11549,9 +11550,18 @@ class VueElement extends BaseClass {
11549
11550
  this._app && this._app.unmount();
11550
11551
  if (this._instance) this._instance.ce = void 0;
11551
11552
  this._app = this._instance = null;
11553
+ if (this._teleportTargets) {
11554
+ this._teleportTargets.clear();
11555
+ this._teleportTargets = void 0;
11556
+ }
11552
11557
  }
11553
11558
  });
11554
11559
  }
11560
+ _processMutations(mutations) {
11561
+ for (const m of mutations) {
11562
+ this._setAttr(m.attributeName);
11563
+ }
11564
+ }
11555
11565
  /**
11556
11566
  * resolve inner component definition (handle possible async component)
11557
11567
  */
@@ -11562,11 +11572,7 @@ class VueElement extends BaseClass {
11562
11572
  for (let i = 0; i < this.attributes.length; i++) {
11563
11573
  this._setAttr(this.attributes[i].name);
11564
11574
  }
11565
- this._ob = new MutationObserver((mutations) => {
11566
- for (const m of mutations) {
11567
- this._setAttr(m.attributeName);
11568
- }
11569
- });
11575
+ this._ob = new MutationObserver(this._processMutations.bind(this));
11570
11576
  this._ob.observe(this, { attributes: true });
11571
11577
  const resolve = (def, isAsync = false) => {
11572
11578
  this._resolved = true;
@@ -11682,7 +11688,10 @@ class VueElement extends BaseClass {
11682
11688
  }
11683
11689
  if (shouldReflect) {
11684
11690
  const ob = this._ob;
11685
- ob && ob.disconnect();
11691
+ if (ob) {
11692
+ this._processMutations(ob.takeRecords());
11693
+ ob.disconnect();
11694
+ }
11686
11695
  if (val === true) {
11687
11696
  this.setAttribute(hyphenate(key), "");
11688
11697
  } else if (typeof val === "string" || typeof val === "number") {
@@ -11786,7 +11795,7 @@ class VueElement extends BaseClass {
11786
11795
  * Only called when shadowRoot is false
11787
11796
  */
11788
11797
  _renderSlots() {
11789
- const outlets = (this._teleportTarget || this).querySelectorAll("slot");
11798
+ const outlets = this._getSlots();
11790
11799
  const scopeId = this._instance.type.__scopeId;
11791
11800
  for (let i = 0; i < outlets.length; i++) {
11792
11801
  const o = outlets[i];
@@ -11812,6 +11821,19 @@ class VueElement extends BaseClass {
11812
11821
  parent.removeChild(o);
11813
11822
  }
11814
11823
  }
11824
+ /**
11825
+ * @internal
11826
+ */
11827
+ _getSlots() {
11828
+ const roots = [this];
11829
+ if (this._teleportTargets) {
11830
+ roots.push(...this._teleportTargets);
11831
+ }
11832
+ return roots.reduce((res, i) => {
11833
+ res.push(...Array.from(i.querySelectorAll("slot")));
11834
+ return res;
11835
+ }, []);
11836
+ }
11815
11837
  /**
11816
11838
  * @internal
11817
11839
  */
@@ -11913,7 +11935,7 @@ const TransitionGroupImpl = /* @__PURE__ */ decorate({
11913
11935
  prevChildren.forEach(callPendingCbs);
11914
11936
  prevChildren.forEach(recordPosition);
11915
11937
  const movedChildren = prevChildren.filter(applyTranslation);
11916
- forceReflow();
11938
+ forceReflow(instance.vnode.el);
11917
11939
  movedChildren.forEach((c) => {
11918
11940
  const el = c.el;
11919
11941
  const style = el.style;