@vuetify/nightly 3.8.2-master.2025-04-26 → 3.8.2-master.2025-04-28

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
- * Vuetify v3.8.2-master.2025-04-26
2
+ * Vuetify v3.8.2-master.2025-04-28
3
3
  * Forged by John Leider
4
4
  * Released under the MIT License.
5
5
  */
@@ -416,6 +416,9 @@
416
416
  _classPrivateFieldInitSpec(this, _pointer, 0);
417
417
  this.size = size;
418
418
  }
419
+ get isFull() {
420
+ return _classPrivateFieldGet(_arr, this).length === this.size;
421
+ }
419
422
  push(val) {
420
423
  _classPrivateFieldGet(_arr, this)[_classPrivateFieldGet(_pointer, this)] = val;
421
424
  _classPrivateFieldSet(_pointer, this, (_classPrivateFieldGet(_pointer, this) + 1) % this.size);
@@ -423,6 +426,10 @@
423
426
  values() {
424
427
  return _classPrivateFieldGet(_arr, this).slice(_classPrivateFieldGet(_pointer, this)).concat(_classPrivateFieldGet(_arr, this).slice(0, _classPrivateFieldGet(_pointer, this)));
425
428
  }
429
+ clear() {
430
+ _classPrivateFieldGet(_arr, this).length = 0;
431
+ _classPrivateFieldSet(_pointer, this, 0);
432
+ }
426
433
  }
427
434
  function getEventCoordinates(e) {
428
435
  if ('touches' in e) {
@@ -1342,7 +1349,7 @@
1342
1349
  return newDefaults;
1343
1350
  }
1344
1351
  function propIsDefined(vnode, prop) {
1345
- return typeof vnode.props?.[prop] !== 'undefined' || typeof vnode.props?.[toKebabCase(prop)] !== 'undefined';
1352
+ return vnode.props && (typeof vnode.props[prop] !== 'undefined' || typeof vnode.props[toKebabCase(prop)] !== 'undefined');
1346
1353
  }
1347
1354
  function internalUseDefaults() {
1348
1355
  let props = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};
@@ -1359,9 +1366,12 @@
1359
1366
  const propValue = Reflect.get(target, prop);
1360
1367
  if (prop === 'class' || prop === 'style') {
1361
1368
  return [componentDefaults.value?.[prop], propValue].filter(v => v != null);
1362
- } else if (typeof prop === 'string' && !propIsDefined(vm.vnode, prop)) {
1363
- return componentDefaults.value?.[prop] !== undefined ? componentDefaults.value?.[prop] : defaults.value?.global?.[prop] !== undefined ? defaults.value?.global?.[prop] : propValue;
1364
1369
  }
1370
+ if (propIsDefined(vm.vnode, prop)) return propValue;
1371
+ const _componentDefault = componentDefaults.value?.[prop];
1372
+ if (_componentDefault !== undefined) return _componentDefault;
1373
+ const _globalDefault = defaults.value?.global?.[prop];
1374
+ if (_globalDefault !== undefined) return _globalDefault;
1365
1375
  return propValue;
1366
1376
  }
1367
1377
  });
@@ -10108,8 +10118,27 @@
10108
10118
  return typeof props.offset === 'number' ? [props.offset, 0] : [0, 0];
10109
10119
  });
10110
10120
  let observe = false;
10121
+ let lastFrame = -1;
10122
+ const flipped = new CircularBuffer(4);
10111
10123
  const observer = new ResizeObserver(() => {
10112
- if (observe) updateLocation();
10124
+ if (!observe) return;
10125
+
10126
+ // Detect consecutive frames
10127
+ requestAnimationFrame(newTime => {
10128
+ if (newTime !== lastFrame) flipped.clear();
10129
+ requestAnimationFrame(newNewTime => {
10130
+ lastFrame = newNewTime;
10131
+ });
10132
+ });
10133
+ if (flipped.isFull) {
10134
+ const values = flipped.values();
10135
+ if (deepEqual(values.at(-1), values.at(-3))) {
10136
+ // Flipping is causing a container resize loop
10137
+ return;
10138
+ }
10139
+ }
10140
+ const result = updateLocation();
10141
+ if (result) flipped.push(result.flipped);
10113
10142
  });
10114
10143
  vue.watch([data.target, data.contentEl], (_ref, _ref2) => {
10115
10144
  let [newTarget, newContentEl] = _ref;
@@ -10324,7 +10353,8 @@
10324
10353
  });
10325
10354
  return {
10326
10355
  available,
10327
- contentBox
10356
+ contentBox,
10357
+ flipped
10328
10358
  };
10329
10359
  }
10330
10360
  vue.watch(() => [preferredAnchor.value, preferredOrigin.value, props.offset, props.minWidth, props.minHeight, props.maxWidth, props.maxHeight], () => updateLocation());
@@ -31608,7 +31638,7 @@
31608
31638
  };
31609
31639
  });
31610
31640
  }
31611
- const version$1 = "3.8.2-master.2025-04-26";
31641
+ const version$1 = "3.8.2-master.2025-04-28";
31612
31642
  createVuetify$1.version = version$1;
31613
31643
 
31614
31644
  // Vue's inject() can only be used in setup
@@ -31906,7 +31936,7 @@
31906
31936
 
31907
31937
  /* eslint-disable local-rules/sort-imports */
31908
31938
 
31909
- const version = "3.8.2-master.2025-04-26";
31939
+ const version = "3.8.2-master.2025-04-28";
31910
31940
 
31911
31941
  /* eslint-disable local-rules/sort-imports */
31912
31942