@maizzle/framework 6.1.2 → 6.1.4

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.
@@ -405,6 +405,14 @@ var ConfigProvider_default = /* @__PURE__ */ defineComponent({
405
405
  }
406
406
  });
407
407
  //#endregion
408
+ //#region ../../home/cosmin/Work/maizzle/framework/node_modules/reka-ui/dist/DismissableLayer/context.js
409
+ var context = /*#__PURE__*/ reactive({
410
+ layersRoot: /* @__PURE__ */ new Set(),
411
+ layersWithOutsidePointerEventsDisabled: /* @__PURE__ */ new Set(),
412
+ originalBodyPointerEvents: void 0,
413
+ branches: /* @__PURE__ */ new Set()
414
+ });
415
+ //#endregion
408
416
  //#region ../../home/cosmin/Work/maizzle/framework/node_modules/defu/dist/defu.mjs
409
417
  function isPlainObject(value) {
410
418
  if (value === null || typeof value !== "object") return false;
@@ -441,12 +449,12 @@ var useBodyLockStackCount = createSharedComposable(() => {
441
449
  for (const value of map.value.values()) if (value) return true;
442
450
  return false;
443
451
  });
444
- const context = injectConfigProviderContext({ scrollBody: ref(true) });
452
+ const context$1 = injectConfigProviderContext({ scrollBody: ref(true) });
445
453
  let stopTouchMoveListener = null;
446
454
  const resetBodyStyle = () => {
447
455
  document.body.style.paddingRight = "";
448
456
  document.body.style.marginRight = "";
449
- document.body.style.pointerEvents = "";
457
+ if (context.layersWithOutsidePointerEventsDisabled.size === 0) document.body.style.pointerEvents = "";
450
458
  document.documentElement.style.removeProperty("--scrollbar-width");
451
459
  document.body.style.overflow = initialOverflow.value ?? "";
452
460
  isIOS && stopTouchMoveListener?.();
@@ -464,9 +472,9 @@ var useBodyLockStackCount = createSharedComposable(() => {
464
472
  padding: verticalScrollbarWidth,
465
473
  margin: 0
466
474
  };
467
- const config = context.scrollBody?.value ? typeof context.scrollBody.value === "object" ? defu({
468
- padding: context.scrollBody.value.padding === true ? verticalScrollbarWidth : context.scrollBody.value.padding,
469
- margin: context.scrollBody.value.margin === true ? verticalScrollbarWidth : context.scrollBody.value.margin
475
+ const config = context$1.scrollBody?.value ? typeof context$1.scrollBody.value === "object" ? defu({
476
+ padding: context$1.scrollBody.value.padding === true ? verticalScrollbarWidth : context$1.scrollBody.value.padding,
477
+ margin: context$1.scrollBody.value.margin === true ? verticalScrollbarWidth : context$1.scrollBody.value.margin
470
478
  }, defaultConfig) : defaultConfig : {
471
479
  padding: 0,
472
480
  margin: 0
@@ -521,10 +529,27 @@ function preventDefault(rawEvent) {
521
529
  }
522
530
  //#endregion
523
531
  //#region ../../home/cosmin/Work/maizzle/framework/node_modules/reka-ui/dist/shared/useComposing.js
532
+ var imeScriptRE = /[\p{Script=Han}\p{Script=Hiragana}\p{Script=Katakana}\p{Script=Hangul}\p{Script=Bopomofo}]/u;
533
+ var androidRE = /android/i;
534
+ function isAndroid() {
535
+ return typeof navigator !== "undefined" && androidRE.test(navigator.userAgent);
536
+ }
524
537
  function useComposing(onEnd) {
525
538
  const isComposing = ref(false);
539
+ const isImeComposition = ref(true);
540
+ const sawImeScript = ref(false);
541
+ const shouldDeferInput = computed(() => isComposing.value && isImeComposition.value);
526
542
  function handleCompositionStart() {
527
543
  isComposing.value = true;
544
+ isImeComposition.value = true;
545
+ sawImeScript.value = false;
546
+ }
547
+ function handleCompositionUpdate(event) {
548
+ if (!event.data) return;
549
+ if (imeScriptRE.test(event.data)) {
550
+ isImeComposition.value = true;
551
+ sawImeScript.value = true;
552
+ } else if (isAndroid() && !sawImeScript.value) isImeComposition.value = false;
528
553
  }
529
554
  function handleCompositionEnd(event) {
530
555
  nextTick(() => {
@@ -534,7 +559,9 @@ function useComposing(onEnd) {
534
559
  }
535
560
  return {
536
561
  isComposing,
562
+ shouldDeferInput,
537
563
  handleCompositionStart,
564
+ handleCompositionUpdate,
538
565
  handleCompositionEnd
539
566
  };
540
567
  }
@@ -3825,10 +3852,11 @@ function usePresence(present, node) {
3825
3852
  * make sure we only trigger ANIMATION_END for the currently active animation.
3826
3853
  */
3827
3854
  const handleAnimationEnd = (event) => {
3855
+ if (event.target !== node.value) return;
3828
3856
  const currentAnimationName = getAnimationName(node.value);
3829
3857
  const isCurrentAnimation = currentAnimationName.includes(CSS.escape(event.animationName));
3830
3858
  const directionName = state.value === "mounted" ? "enter" : "leave";
3831
- if (event.target === node.value && isCurrentAnimation) {
3859
+ if (isCurrentAnimation) {
3832
3860
  dispatchCustomEvent(`after-${directionName}`);
3833
3861
  dispatch("ANIMATION_END");
3834
3862
  if (!prevPresentRef.value) {
@@ -3839,7 +3867,7 @@ function usePresence(present, node) {
3839
3867
  });
3840
3868
  }
3841
3869
  }
3842
- if (event.target === node.value && currentAnimationName === "none") dispatch("ANIMATION_END");
3870
+ if (currentAnimationName === "none") dispatch("ANIMATION_END");
3843
3871
  };
3844
3872
  const handleAnimationStart = (event) => {
3845
3873
  if (event.target === node.value) prevAnimationNameRef.value = getAnimationName(node.value);
@@ -4789,12 +4817,6 @@ function useFocusOutside(onFocusOutside, element, enabled = true) {
4789
4817
  }
4790
4818
  //#endregion
4791
4819
  //#region ../../home/cosmin/Work/maizzle/framework/node_modules/reka-ui/dist/DismissableLayer/DismissableLayer.js
4792
- var context = /*#__PURE__*/ reactive({
4793
- layersRoot: /* @__PURE__ */ new Set(),
4794
- layersWithOutsidePointerEventsDisabled: /* @__PURE__ */ new Set(),
4795
- originalBodyPointerEvents: void 0,
4796
- branches: /* @__PURE__ */ new Set()
4797
- });
4798
4820
  var DismissableLayer_default = /* @__PURE__ */ defineComponent({
4799
4821
  __name: "DismissableLayer",
4800
4822
  props: {
@@ -4849,7 +4871,7 @@ var DismissableLayer_default = /* @__PURE__ */ defineComponent({
4849
4871
  emits("interactOutside", event);
4850
4872
  await nextTick();
4851
4873
  if (!event.defaultPrevented) emits("dismiss");
4852
- }, layerElement);
4874
+ }, layerElement, () => props.present);
4853
4875
  const focusOutside = useFocusOutside((event) => {
4854
4876
  const isFocusInBranch = [...context.branches].some((branch) => branch?.contains(event.target));
4855
4877
  if (!props.present || isFocusInBranch) return;
@@ -4936,11 +4958,16 @@ var DismissableLayerBranch_default = /* @__PURE__ */ defineComponent({
4936
4958
  setup(__props) {
4937
4959
  const props = __props;
4938
4960
  const { forwardRef, currentElement } = useForwardExpose();
4961
+ let registeredElement = null;
4939
4962
  onMounted(() => {
4940
- context.branches.add(currentElement.value);
4963
+ registeredElement = currentElement.value;
4964
+ if (registeredElement) context.branches.add(registeredElement);
4941
4965
  });
4942
4966
  onUnmounted(() => {
4943
- context.branches.delete(currentElement.value);
4967
+ if (registeredElement) {
4968
+ context.branches.delete(registeredElement);
4969
+ registeredElement = null;
4970
+ }
4944
4971
  });
4945
4972
  return (_ctx, _cache) => {
4946
4973
  return openBlock(), createBlock(unref(Primitive), mergeProps({ ref: unref(forwardRef) }, props), {
@@ -5114,6 +5141,8 @@ var FocusScope_default = /* @__PURE__ */ defineComponent({
5114
5141
  const lastFocusedElement = lastFocusedElementRef.value;
5115
5142
  if (lastFocusedElement === null) return;
5116
5143
  if (!mutations.some((m) => m.removedNodes.length > 0)) return;
5144
+ const activeElement = getActiveElement();
5145
+ if (activeElement && container.contains(activeElement)) return;
5117
5146
  if (!container.contains(lastFocusedElement)) focus(container);
5118
5147
  }
5119
5148
  document.addEventListener("focusin", handleFocusIn);
@@ -6556,6 +6585,7 @@ function wrapArray(array, startIndex) {
6556
6585
  //#endregion
6557
6586
  //#region ../../home/cosmin/Work/maizzle/framework/node_modules/reka-ui/dist/Listbox/ListboxRoot.js
6558
6587
  var [injectListboxRootContext, provideListboxRootContext] = /*#__PURE__*/ createContext("ListboxRoot");
6588
+ var [injectListboxHighlightScrollContext, provideListboxHighlightScrollContext] = /*#__PURE__*/ createContext("ListboxHighlightScroll");
6559
6589
  var ListboxRoot_default = /* @__PURE__ */ defineComponent({
6560
6590
  __name: "ListboxRoot",
6561
6591
  props: {
@@ -6629,6 +6659,11 @@ var ListboxRoot_default = /* @__PURE__ */ defineComponent({
6629
6659
  const { primitiveElement, currentElement } = usePrimitiveElement();
6630
6660
  const kbd = useKbd();
6631
6661
  const dir = useDirection(propDir);
6662
+ const highlightScrollContext = injectListboxHighlightScrollContext(null);
6663
+ provideListboxHighlightScrollContext({
6664
+ suppressHighlightScroll: ref(false),
6665
+ onHighlightScrollRequest: () => {}
6666
+ });
6632
6667
  const isFormControl = useFormControl(currentElement);
6633
6668
  const firstValue = ref();
6634
6669
  const isUserAction = ref(false);
@@ -6670,8 +6705,14 @@ var ListboxRoot_default = /* @__PURE__ */ defineComponent({
6670
6705
  function changeHighlight(el, scrollIntoView = true, focus) {
6671
6706
  if (!el) return;
6672
6707
  highlightedElement.value = el;
6673
- if (focus ?? focusable.value) highlightedElement.value.focus();
6674
- if (scrollIntoView) highlightedElement.value.scrollIntoView({ block: "nearest" });
6708
+ const suppressHighlightScroll = highlightScrollContext?.suppressHighlightScroll.value ?? false;
6709
+ if (focus ?? focusable.value) if (suppressHighlightScroll) highlightedElement.value.focus({ preventScroll: true });
6710
+ else highlightedElement.value.focus();
6711
+ if (suppressHighlightScroll) highlightScrollContext?.onHighlightScrollRequest(scrollIntoView ? () => {
6712
+ const element = highlightedElement.value;
6713
+ if (element?.isConnected) element.scrollIntoView({ block: "nearest" });
6714
+ } : void 0);
6715
+ else if (scrollIntoView) highlightedElement.value.scrollIntoView({ block: "nearest" });
6675
6716
  const highlightedItem = getItems().find((i) => i.ref === el);
6676
6717
  emits("highlight", highlightedItem);
6677
6718
  }
@@ -6993,7 +7034,7 @@ var ListboxFilter_default = /* @__PURE__ */ defineComponent({
6993
7034
  onUnmounted(() => {
6994
7035
  rootContext.focusable.value = true;
6995
7036
  });
6996
- const { isComposing, handleCompositionStart, handleCompositionEnd } = useComposing((event) => {
7037
+ const { isComposing, shouldDeferInput, handleCompositionStart, handleCompositionUpdate, handleCompositionEnd } = useComposing((event) => {
6997
7038
  modelValue.value = event.target.value;
6998
7039
  rootContext.onCompositionEnd();
6999
7040
  rootContext.highlightFirstItem();
@@ -7003,7 +7044,7 @@ var ListboxFilter_default = /* @__PURE__ */ defineComponent({
7003
7044
  handleCompositionStart();
7004
7045
  }
7005
7046
  function handleInput(event) {
7006
- if (isComposing.value) return;
7047
+ if (shouldDeferInput.value) return;
7007
7048
  modelValue.value = event.target.value;
7008
7049
  rootContext.highlightFirstItem();
7009
7050
  }
@@ -7036,6 +7077,7 @@ var ListboxFilter_default = /* @__PURE__ */ defineComponent({
7036
7077
  ]), withKeys(handleKeydownEnter, ["enter"])],
7037
7078
  onInput: handleInput,
7038
7079
  onCompositionstart: onCompositionStart,
7080
+ onCompositionupdate: unref(handleCompositionUpdate),
7039
7081
  onCompositionend: unref(handleCompositionEnd)
7040
7082
  }, {
7041
7083
  default: withCtx(() => [renderSlot(_ctx.$slots, "default", { modelValue: unref(modelValue) })]),
@@ -7048,6 +7090,7 @@ var ListboxFilter_default = /* @__PURE__ */ defineComponent({
7048
7090
  "data-disabled",
7049
7091
  "aria-disabled",
7050
7092
  "aria-activedescendant",
7093
+ "onCompositionupdate",
7051
7094
  "onCompositionend"
7052
7095
  ]);
7053
7096
  };
@@ -8417,8 +8460,8 @@ var ListboxVirtualizer_default = /* @__PURE__ */ defineComponent({
8417
8460
  requestAnimationFrame(() => {
8418
8461
  const item = queryCheckedElement(parentEl.value);
8419
8462
  if (item) {
8420
- rootContext.changeHighlight(item, scroll, scroll ? void 0 : false);
8421
- if (event) item?.focus();
8463
+ const focus = event ? true : scroll ? void 0 : false;
8464
+ rootContext.changeHighlight(item, scroll, focus);
8422
8465
  }
8423
8466
  });
8424
8467
  } else if (scroll) rootContext.highlightFirstItem();
@@ -10553,6 +10596,48 @@ var PopperArrow_default = /* @__PURE__ */ defineComponent({
10553
10596
  }
10554
10597
  });
10555
10598
  //#endregion
10599
+ //#region ../../home/cosmin/Work/maizzle/framework/node_modules/reka-ui/dist/Combobox/useComboboxContentPositioning.js
10600
+ function useComboboxContentPositioning(open) {
10601
+ const contentPosition = ref("inline");
10602
+ const contentPlaced = ref(false);
10603
+ const currentContent = ref();
10604
+ const suppressHighlightScroll = computed(() => contentPosition.value === "popper" && !contentPlaced.value);
10605
+ let pendingHighlightScroll;
10606
+ provideListboxHighlightScrollContext({
10607
+ suppressHighlightScroll,
10608
+ onHighlightScrollRequest(scroll) {
10609
+ pendingHighlightScroll = scroll;
10610
+ }
10611
+ });
10612
+ function onContentPositionChange(content, position) {
10613
+ if (currentContent.value !== content || contentPosition.value !== position) {
10614
+ contentPlaced.value = false;
10615
+ pendingHighlightScroll = void 0;
10616
+ }
10617
+ currentContent.value = content;
10618
+ contentPosition.value = position;
10619
+ }
10620
+ function onContentPlaced(content) {
10621
+ if (currentContent.value !== content || contentPosition.value !== "popper" || contentPlaced.value) return;
10622
+ contentPlaced.value = true;
10623
+ const scroll = pendingHighlightScroll;
10624
+ pendingHighlightScroll = void 0;
10625
+ if (open.value) scroll?.();
10626
+ }
10627
+ function onContentUnmount(content) {
10628
+ if (currentContent.value !== content) return;
10629
+ currentContent.value = void 0;
10630
+ contentPosition.value = "inline";
10631
+ contentPlaced.value = false;
10632
+ pendingHighlightScroll = void 0;
10633
+ }
10634
+ return {
10635
+ onContentPositionChange,
10636
+ onContentPlaced,
10637
+ onContentUnmount
10638
+ };
10639
+ }
10640
+ //#endregion
10556
10641
  //#region ../../home/cosmin/Work/maizzle/framework/node_modules/reka-ui/dist/Combobox/ComboboxRoot.js
10557
10642
  var [injectComboboxRootContext, provideComboboxRootContext] = /*#__PURE__*/ createContext("ComboboxRoot");
10558
10643
  var ComboboxRoot_default = /* @__PURE__ */ defineComponent({
@@ -10683,6 +10768,7 @@ var ComboboxRoot_default = /* @__PURE__ */ defineComponent({
10683
10768
  const inputElement = ref();
10684
10769
  const triggerElement = ref();
10685
10770
  const highlightedElement = computed(() => primitiveElement.value?.highlightedElement ?? void 0);
10771
+ const contentPositioning = useComboboxContentPositioning(open);
10686
10772
  const allItems = ref(/* @__PURE__ */ new Map());
10687
10773
  const allGroups = ref(/* @__PURE__ */ new Map());
10688
10774
  const { contains } = useFilter({ sensitivity: "base" });
@@ -10732,6 +10818,7 @@ var ComboboxRoot_default = /* @__PURE__ */ defineComponent({
10732
10818
  disabled,
10733
10819
  open,
10734
10820
  onOpenChange,
10821
+ ...contentPositioning,
10735
10822
  contentId: "",
10736
10823
  isUserInputted,
10737
10824
  isVirtual,
@@ -10915,6 +11002,7 @@ var AutocompleteRoot_default = /* @__PURE__ */ defineComponent({
10915
11002
  const inputElement = ref();
10916
11003
  const triggerElement = ref();
10917
11004
  const highlightedElement = computed(() => primitiveElement.value?.highlightedElement ?? void 0);
11005
+ const contentPositioning = useComboboxContentPositioning(open);
10918
11006
  const allItems = ref(/* @__PURE__ */ new Map());
10919
11007
  const allGroups = ref(/* @__PURE__ */ new Map());
10920
11008
  const { contains } = useFilter({ sensitivity: "base" });
@@ -10964,6 +11052,7 @@ var AutocompleteRoot_default = /* @__PURE__ */ defineComponent({
10964
11052
  disabled,
10965
11053
  open,
10966
11054
  onOpenChange,
11055
+ ...contentPositioning,
10967
11056
  contentId: "",
10968
11057
  isUserInputted,
10969
11058
  isVirtual,
@@ -11064,7 +11153,7 @@ var AutocompleteInput_default = /* @__PURE__ */ defineComponent({
11064
11153
  onMounted(() => {
11065
11154
  if (currentElement.value) rootContext.onInputElementChange(currentElement.value);
11066
11155
  });
11067
- const { isComposing, handleCompositionStart, handleCompositionEnd } = useComposing((event) => {
11156
+ const { isComposing, shouldDeferInput, handleCompositionStart, handleCompositionUpdate, handleCompositionEnd } = useComposing((event) => {
11068
11157
  const el = event.target;
11069
11158
  if (el) processInputValue(el.value);
11070
11159
  });
@@ -11086,7 +11175,7 @@ var AutocompleteInput_default = /* @__PURE__ */ defineComponent({
11086
11175
  autocompleteContext.modelValue.value = value;
11087
11176
  }
11088
11177
  function handleInput(event) {
11089
- if (isComposing.value) return;
11178
+ if (shouldDeferInput.value) return;
11090
11179
  processInputValue(event.target.value);
11091
11180
  }
11092
11181
  function handleFocus() {
@@ -11125,6 +11214,7 @@ var AutocompleteInput_default = /* @__PURE__ */ defineComponent({
11125
11214
  onKeydown: withKeys(handleKeyDown, ["down", "up"]),
11126
11215
  onFocus: handleFocus,
11127
11216
  onCompositionstart: unref(handleCompositionStart),
11217
+ onCompositionupdate: unref(handleCompositionUpdate),
11128
11218
  onCompositionend: unref(handleCompositionEnd)
11129
11219
  }, {
11130
11220
  default: withCtx(() => [renderSlot(_ctx.$slots, "default")]),
@@ -11138,6 +11228,7 @@ var AutocompleteInput_default = /* @__PURE__ */ defineComponent({
11138
11228
  "aria-expanded",
11139
11229
  "aria-controls",
11140
11230
  "onCompositionstart",
11231
+ "onCompositionupdate",
11141
11232
  "onCompositionend"
11142
11233
  ]);
11143
11234
  };
@@ -11304,6 +11395,8 @@ var ComboboxContentImpl_default = /* @__PURE__ */ defineComponent({
11304
11395
  const emits = __emit;
11305
11396
  const { position } = toRefs(props);
11306
11397
  const rootContext = injectComboboxRootContext();
11398
+ const contentId = Symbol("ComboboxContent");
11399
+ watch(position, (value) => rootContext.onContentPositionChange(contentId, value), { immediate: true });
11307
11400
  const isEmpty = computed(() => rootContext.ignoreFilter.value ? rootContext.allItems.value.size === 0 : rootContext.filterState.value.count === 0);
11308
11401
  const { forwardRef, currentElement } = useForwardExpose();
11309
11402
  useBodyScrollLock(props.bodyLock);
@@ -11330,6 +11423,7 @@ var ComboboxContentImpl_default = /* @__PURE__ */ defineComponent({
11330
11423
  }
11331
11424
  });
11332
11425
  onUnmounted(() => {
11426
+ rootContext.onContentUnmount(contentId);
11333
11427
  const activeElement = getActiveElement();
11334
11428
  if (isInputWithinContent.value && (!activeElement || activeElement === document.body)) rootContext.triggerElement.value?.focus();
11335
11429
  });
@@ -11338,6 +11432,7 @@ var ComboboxContentImpl_default = /* @__PURE__ */ defineComponent({
11338
11432
  const control = (target instanceof Element ? target.closest("label") : null)?.control;
11339
11433
  return !!control && !!rootContext.parentElement.value?.contains(control);
11340
11434
  }
11435
+ const popperContentEvents = { placed: () => rootContext.onContentPlaced(contentId) };
11341
11436
  return (_ctx, _cache) => {
11342
11437
  return openBlock(), createBlock(unref(ListboxContent_default), { "as-child": "" }, {
11343
11438
  default: withCtx(() => [createVNode(unref(FocusScope_default), {
@@ -11375,7 +11470,7 @@ var ComboboxContentImpl_default = /* @__PURE__ */ defineComponent({
11375
11470
  outline: "none",
11376
11471
  ...unref(position) === "popper" ? popperStyle : {}
11377
11472
  }
11378
- }), {
11473
+ }, toHandlers(unref(position) === "popper" ? popperContentEvents : {})), {
11379
11474
  default: withCtx(() => [renderSlot(_ctx.$slots, "default")]),
11380
11475
  _: 3
11381
11476
  }, 16, [
@@ -11726,7 +11821,7 @@ var ComboboxInput_default = /* @__PURE__ */ defineComponent({
11726
11821
  onMounted(() => {
11727
11822
  if (currentElement.value) rootContext.onInputElementChange(currentElement.value);
11728
11823
  });
11729
- const { isComposing, handleCompositionStart, handleCompositionEnd } = useComposing((event) => {
11824
+ const { isComposing, shouldDeferInput, handleCompositionStart, handleCompositionUpdate, handleCompositionEnd } = useComposing((event) => {
11730
11825
  const el = event.target;
11731
11826
  if (el) processInputValue(el.value);
11732
11827
  });
@@ -11747,7 +11842,7 @@ var ComboboxInput_default = /* @__PURE__ */ defineComponent({
11747
11842
  } else rootContext.filterSearch.value = value;
11748
11843
  }
11749
11844
  function handleInput(event) {
11750
- if (isComposing.value) return;
11845
+ if (shouldDeferInput.value) return;
11751
11846
  processInputValue(event.target.value);
11752
11847
  }
11753
11848
  function handleFocus() {
@@ -11811,6 +11906,7 @@ var ComboboxInput_default = /* @__PURE__ */ defineComponent({
11811
11906
  onFocus: handleFocus,
11812
11907
  onBlur: handleBlur,
11813
11908
  onCompositionstart: unref(handleCompositionStart),
11909
+ onCompositionupdate: unref(handleCompositionUpdate),
11814
11910
  onCompositionend: unref(handleCompositionEnd)
11815
11911
  }, {
11816
11912
  default: withCtx(() => [renderSlot(_ctx.$slots, "default")]),
@@ -11824,6 +11920,7 @@ var ComboboxInput_default = /* @__PURE__ */ defineComponent({
11824
11920
  "aria-expanded",
11825
11921
  "aria-controls",
11826
11922
  "onCompositionstart",
11923
+ "onCompositionupdate",
11827
11924
  "onCompositionend"
11828
11925
  ]);
11829
11926
  };
@@ -21166,7 +21263,7 @@ var DateFieldRoot_default = /* @__PURE__ */ defineComponent({
21166
21263
  elements: segmentElements,
21167
21264
  setFocusedElement,
21168
21265
  focusNext() {
21169
- nextFocusableSegment.value?.focus();
21266
+ Array.from(segmentElements.value)[currentSegmentIndex.value + 1]?.focus();
21170
21267
  }
21171
21268
  });
21172
21269
  __expose({ setFocusedElement });
@@ -22978,6 +23075,7 @@ var PopoverTrigger_default = /* @__PURE__ */ defineComponent({
22978
23075
  const rootContext = injectPopoverRootContext();
22979
23076
  const { forwardRef, currentElement: triggerElement } = useForwardExpose();
22980
23077
  rootContext.triggerId ||= useId(void 0, "reka-popover-trigger");
23078
+ rootContext.contentId ||= useId(void 0, "reka-popover-content");
22981
23079
  onMounted(() => {
22982
23080
  rootContext.triggerElement.value = triggerElement.value;
22983
23081
  });
@@ -22989,7 +23087,7 @@ var PopoverTrigger_default = /* @__PURE__ */ defineComponent({
22989
23087
  type: _ctx.as === "button" ? "button" : void 0,
22990
23088
  "aria-haspopup": "dialog",
22991
23089
  "aria-expanded": unref(rootContext).open.value,
22992
- "aria-controls": unref(rootContext).contentId,
23090
+ "aria-controls": unref(rootContext).open.value ? unref(rootContext).contentId : void 0,
22993
23091
  "data-state": unref(rootContext).open.value ? "open" : "closed",
22994
23092
  as: _ctx.as,
22995
23093
  "as-child": props.asChild,
@@ -23308,7 +23406,7 @@ var DateRangeFieldRoot_default = /* @__PURE__ */ defineComponent({
23308
23406
  elements: segmentElements,
23309
23407
  setFocusedElement,
23310
23408
  focusNext() {
23311
- nextFocusableSegment.value?.focus();
23409
+ Array.from(segmentElements.value)[currentSegmentIndex.value + 1]?.focus();
23312
23410
  }
23313
23411
  });
23314
23412
  __expose({ setFocusedElement });
@@ -25740,12 +25838,8 @@ var DrawerRoot_default = /* @__PURE__ */ defineComponent({
25740
25838
  nestedSwiping,
25741
25839
  isSwiping,
25742
25840
  nestedSwipeProgressStore,
25743
- onOpenChange(value, reason) {
25744
- if (open.value === value) return;
25745
- const details = reason ? { reason } : void 0;
25746
- uncontrolledOpen.value = value;
25747
- emit("update:open", value, details);
25748
- },
25841
+ onOpenChange: handleOpenChange,
25842
+ onOpenToggle: handleOpenToggle,
25749
25843
  notifyOpenComplete(value) {
25750
25844
  emit("update:openComplete", value);
25751
25845
  },
@@ -25788,9 +25882,16 @@ var DrawerRoot_default = /* @__PURE__ */ defineComponent({
25788
25882
  descriptionId
25789
25883
  });
25790
25884
  function handleClose() {
25791
- if (!open.value) return;
25792
- uncontrolledOpen.value = false;
25793
- emit("update:open", false, { reason: "close-press" });
25885
+ handleOpenChange(false, "close-press");
25886
+ }
25887
+ function handleOpenChange(value, reason) {
25888
+ if (open.value === value) return;
25889
+ const details = reason ? { reason } : void 0;
25890
+ uncontrolledOpen.value = value;
25891
+ emit("update:open", value, details);
25892
+ }
25893
+ function handleOpenToggle() {
25894
+ handleOpenChange(!open.value, "trigger-press");
25794
25895
  }
25795
25896
  watch(open, (isOpen) => {
25796
25897
  if (isOpen) providerContext?.setDrawerOpen(contentId, true);
@@ -25954,6 +26055,8 @@ function useDrawerSnapPoints(options) {
25954
26055
  var DEFAULT_SWIPE_THRESHOLD = 40;
25955
26056
  var REVERSE_CANCEL_THRESHOLD = 10;
25956
26057
  var MIN_DRAG_THRESHOLD = 1;
26058
+ var AXIS_LOCK_SLOP = 6;
26059
+ var AXIS_LOCK_BIAS = 2;
25957
26060
  var MIN_RELEASE_VELOCITY_DURATION_MS = 16;
25958
26061
  var MAX_RELEASE_VELOCITY_AGE_MS = 80;
25959
26062
  var DEFAULT_IGNORE_SELECTOR = "button,a,input,select,textarea,label,[role=\"button\"]";
@@ -26007,6 +26110,10 @@ function useSwipeDismiss(options) {
26007
26110
  const allowDown = computed(() => toValue$1(directions).includes("down"));
26008
26111
  const allowLeft = computed(() => toValue$1(directions).includes("left"));
26009
26112
  const allowRight = computed(() => toValue$1(directions).includes("right"));
26113
+ const drawerAxis = computed(() => {
26114
+ if (hasVertical.value === hasHorizontal.value) return null;
26115
+ return hasVertical.value ? "vertical" : "horizontal";
26116
+ });
26010
26117
  const isSwiping = ref(false);
26011
26118
  const swipeDirection = ref(void 0);
26012
26119
  const dragOffset = ref({
@@ -26025,6 +26132,9 @@ function useSwipeDismiss(options) {
26025
26132
  let pendingSwipeStartPos = null;
26026
26133
  let swipeFromScrollable = false;
26027
26134
  let scrollableAncestor = null;
26135
+ let crossAxisScrollable = null;
26136
+ let drawerAxisAttributed = false;
26137
+ let preserveNativeCrossAxisScroll = false;
26028
26138
  let elementSize = {
26029
26139
  width: 0,
26030
26140
  height: 0
@@ -26072,7 +26182,12 @@ function useSwipeDismiss(options) {
26072
26182
  el.style.setProperty(movementCssVars.x, "0px");
26073
26183
  el.style.setProperty(movementCssVars.y, "0px");
26074
26184
  }
26075
- function reset() {
26185
+ /**
26186
+ * Clears the per-gesture tracking state. Deliberately leaves the pointer
26187
+ * identity and the touch scroll-guard flags alone, so it is safe to call at
26188
+ * the start of a gesture as well as at the end of one.
26189
+ */
26190
+ function resetGestureState() {
26076
26191
  setSwiping(false);
26077
26192
  swipeDirection.value = void 0;
26078
26193
  dragOffset.value = {
@@ -26089,8 +26204,6 @@ function useSwipeDismiss(options) {
26089
26204
  isFirstMove = false;
26090
26205
  pendingSwipe = false;
26091
26206
  pendingSwipeStartPos = null;
26092
- swipeFromScrollable = false;
26093
- scrollableAncestor = null;
26094
26207
  elementSize = {
26095
26208
  width: 0,
26096
26209
  height: 0
@@ -26102,10 +26215,19 @@ function useSwipeDismiss(options) {
26102
26215
  y: 0
26103
26216
  };
26104
26217
  lockedAxis = null;
26218
+ }
26219
+ function reset() {
26220
+ resetGestureState();
26221
+ swipeFromScrollable = false;
26222
+ scrollableAncestor = null;
26223
+ crossAxisScrollable = null;
26224
+ drawerAxisAttributed = false;
26225
+ preserveNativeCrossAxisScroll = false;
26105
26226
  activePointerId = null;
26106
26227
  pointerStarted = false;
26107
26228
  }
26108
26229
  function startSwipe(el, pos) {
26230
+ resetGestureState();
26109
26231
  getElementTransform(el);
26110
26232
  dragStartPos = pos;
26111
26233
  pendingSwipeStartPos = pos;
@@ -26133,6 +26255,33 @@ function useSwipeDismiss(options) {
26133
26255
  y: hasVertical.value ? dampAxis(deltaY, allowUp.value, allowDown.value) : exponent(deltaY)
26134
26256
  };
26135
26257
  }
26258
+ /**
26259
+ * Arbitrates a touchmove between the drawer swipe and a native scroll on the
26260
+ * cross axis. Returns `true` when the move must be left alone — the cross axis
26261
+ * already won the gesture, or neither axis has passed the slop yet.
26262
+ */
26263
+ function shouldYieldTouchMove(e, pos) {
26264
+ if (preserveNativeCrossAxisScroll) return true;
26265
+ if (drawerAxisAttributed || !crossAxisScrollable || !drawerAxis.value) return false;
26266
+ if (!e.cancelable) {
26267
+ preserveNativeCrossAxisScroll = true;
26268
+ return true;
26269
+ }
26270
+ const isVerticalDrawerAxis = drawerAxis.value === "vertical";
26271
+ const drawerAxisDelta = isVerticalDrawerAxis ? pos.y - dragStartPos.y : pos.x - dragStartPos.x;
26272
+ const crossAxisDelta = isVerticalDrawerAxis ? pos.x - dragStartPos.x : pos.y - dragStartPos.y;
26273
+ const absDrawerAxisDelta = Math.abs(drawerAxisDelta);
26274
+ const absCrossAxisDelta = Math.abs(crossAxisDelta);
26275
+ if (absCrossAxisDelta >= AXIS_LOCK_SLOP && absCrossAxisDelta > absDrawerAxisDelta + AXIS_LOCK_BIAS) {
26276
+ preserveNativeCrossAxisScroll = true;
26277
+ return true;
26278
+ }
26279
+ if (absDrawerAxisDelta >= AXIS_LOCK_SLOP) {
26280
+ drawerAxisAttributed = true;
26281
+ return false;
26282
+ }
26283
+ return true;
26284
+ }
26136
26285
  function processMove(el, pos, time) {
26137
26286
  const rawDx = pos.x - dragStartPos.x;
26138
26287
  const rawDy = pos.y - dragStartPos.y;
@@ -26148,19 +26297,20 @@ function useSwipeDismiss(options) {
26148
26297
  const dy = lockedAxis === "horizontal" ? 0 : rawDy;
26149
26298
  const dir = toValue$1(directions).find((d) => getDisplacement(d, dx, dy) > 0);
26150
26299
  if (pendingSwipe && pendingSwipeStartPos) {
26151
- if (!dir) return;
26152
- const pending = getDisplacement(dir, pos.x - pendingSwipeStartPos.x, pos.y - pendingSwipeStartPos.y);
26153
- if (Math.abs(pending) < MIN_DRAG_THRESHOLD) return;
26300
+ if (Math.max(Math.abs(dx), Math.abs(dy)) < MIN_DRAG_THRESHOLD) return;
26154
26301
  pendingSwipe = false;
26155
- intendedDirection = dir;
26156
- swipeDirection.value = dir;
26157
26302
  setSwiping(true);
26158
26303
  onSwipeStart?.();
26159
26304
  }
26160
26305
  if (!isSwiping.value) return;
26161
- const currentDir = intendedDirection ?? toValue$1(directions)[0];
26162
- const displacement = getDisplacement(currentDir, dx, dy);
26163
- if (!cancelledSwipe) {
26306
+ if (!intendedDirection && dir) {
26307
+ intendedDirection = dir;
26308
+ swipeDirection.value = dir;
26309
+ maxDisplacement = getDisplacement(dir, dx, dy);
26310
+ }
26311
+ const currentDir = intendedDirection;
26312
+ if (currentDir && !cancelledSwipe) {
26313
+ const displacement = getDisplacement(currentDir, dx, dy);
26164
26314
  maxDisplacement = Math.max(maxDisplacement, displacement);
26165
26315
  if (maxDisplacement > DEFAULT_SWIPE_THRESHOLD / 2 && maxDisplacement - displacement > REVERSE_CANCEL_THRESHOLD) cancelledSwipe = true;
26166
26316
  }
@@ -26175,10 +26325,11 @@ function useSwipeDismiss(options) {
26175
26325
  y: damped.y
26176
26326
  }, time);
26177
26327
  const currentEl = elementRef.value;
26178
- if (currentEl) {
26179
- const dim = currentDir === "up" || currentDir === "down" ? elementSize.height || currentEl.offsetHeight : elementSize.width || currentEl.offsetWidth;
26180
- const threshold = getThreshold(currentEl, currentDir);
26181
- const p = Math.min(1, Math.max(0, displacement / (dim + threshold)));
26328
+ const progressDir = currentDir ?? toValue$1(directions)[0];
26329
+ if (currentEl && progressDir) {
26330
+ const dim = progressDir === "up" || progressDir === "down" ? elementSize.height || currentEl.offsetHeight : elementSize.width || currentEl.offsetWidth;
26331
+ const threshold = getThreshold(currentEl, progressDir);
26332
+ const p = Math.min(1, Math.max(0, getDisplacement(progressDir, dx, dy) / (dim + threshold)));
26182
26333
  if (p !== swipeProgress) {
26183
26334
  swipeProgress = p;
26184
26335
  onProgress?.(p, {
@@ -26235,7 +26386,10 @@ function useSwipeDismiss(options) {
26235
26386
  if (!pointerStarted || e.pointerId !== activePointerId) return;
26236
26387
  const el = elementRef.value;
26237
26388
  if (!el) return;
26238
- if ((e.buttons & 1) === 0) return;
26389
+ if ((e.buttons & 1) === 0) {
26390
+ finishSwipe(el);
26391
+ return;
26392
+ }
26239
26393
  processMove(el, {
26240
26394
  x: e.clientX,
26241
26395
  y: e.clientY
@@ -26244,7 +26398,25 @@ function useSwipeDismiss(options) {
26244
26398
  function onPointerUp(e) {
26245
26399
  if (!pointerStarted || e.pointerId !== activePointerId) return;
26246
26400
  const el = elementRef.value;
26247
- if (!el) return;
26401
+ if (!el) {
26402
+ reset();
26403
+ return;
26404
+ }
26405
+ finishSwipe(el);
26406
+ }
26407
+ /**
26408
+ * Ends an in-flight pointer drag that can no longer be tracked — pointer
26409
+ * capture was lost, or the window lost focus mid-drag (which is what happens
26410
+ * when the release lands over another application). The drawer settles from
26411
+ * wherever it was last dragged to.
26412
+ */
26413
+ function onPointerInterrupted() {
26414
+ if (!pointerStarted) return;
26415
+ const el = elementRef.value;
26416
+ if (!el) {
26417
+ reset();
26418
+ return;
26419
+ }
26248
26420
  finishSwipe(el);
26249
26421
  }
26250
26422
  function onTouchStart(e) {
@@ -26254,6 +26426,9 @@ function useSwipeDismiss(options) {
26254
26426
  if (target?.closest(DEFAULT_IGNORE_SELECTOR)) return;
26255
26427
  const el = elementRef.value;
26256
26428
  if (!el) return;
26429
+ crossAxisScrollable = null;
26430
+ drawerAxisAttributed = false;
26431
+ preserveNativeCrossAxisScroll = false;
26257
26432
  if (!options.ignoreScrollableAncestors) {
26258
26433
  const scrollable = findScrollableAncestor(target, hasVertical.value ? "vertical" : "horizontal");
26259
26434
  if (scrollable) {
@@ -26261,6 +26436,7 @@ function useSwipeDismiss(options) {
26261
26436
  scrollableAncestor = scrollable;
26262
26437
  }
26263
26438
  }
26439
+ if (drawerAxis.value) crossAxisScrollable = findScrollableAncestor(target, drawerAxis.value === "vertical" ? "horizontal" : "vertical");
26264
26440
  const t = e.touches[0];
26265
26441
  if (!t) return;
26266
26442
  startSwipe(el, {
@@ -26277,6 +26453,7 @@ function useSwipeDismiss(options) {
26277
26453
  x: t.clientX,
26278
26454
  y: t.clientY
26279
26455
  };
26456
+ if (shouldYieldTouchMove(e, pos)) return;
26280
26457
  if (swipeFromScrollable && pendingSwipe && scrollableAncestor) {
26281
26458
  const dx = pos.x - dragStartPos.x;
26282
26459
  const dy = pos.y - dragStartPos.y;
@@ -26311,7 +26488,10 @@ function useSwipeDismiss(options) {
26311
26488
  cleanups.forEach((fn) => fn());
26312
26489
  cleanups.length = 0;
26313
26490
  if (!el) return;
26314
- cleanups.push(useEventListener(el, "pointerdown", onPointerDown), useEventListener(el, "pointermove", onPointerMove), useEventListener(el, "pointerup", onPointerUp), useEventListener(el, "pointercancel", onPointerUp), useEventListener(el, "touchstart", onTouchStart, { passive: true }), useEventListener(el, "touchmove", onTouchMove, { passive: false }), useEventListener(el, "touchend", onTouchEnd), useEventListener(el, "touchcancel", onTouchEnd));
26491
+ const doc = el.ownerDocument;
26492
+ const win = doc.defaultView;
26493
+ cleanups.push(useEventListener(el, "pointerdown", onPointerDown), useEventListener(el, "pointermove", onPointerMove), useEventListener(el, "pointerup", onPointerUp), useEventListener(el, "pointercancel", onPointerUp), useEventListener(el, "lostpointercapture", onPointerInterrupted), useEventListener(doc, "pointerup", onPointerUp), useEventListener(doc, "pointercancel", onPointerUp), useEventListener(el, "touchstart", onTouchStart, { passive: true }), useEventListener(el, "touchmove", onTouchMove, { passive: false }), useEventListener(el, "touchend", onTouchEnd), useEventListener(el, "touchcancel", onTouchEnd));
26494
+ if (win) cleanups.push(useEventListener(win, "blur", onPointerInterrupted));
26315
26495
  }, { immediate: true });
26316
26496
  onUnmounted(() => {
26317
26497
  cleanups.forEach((fn) => fn());
@@ -27112,7 +27292,7 @@ var DrawerTrigger_default = /* @__PURE__ */ defineComponent({
27112
27292
  "aria-expanded": unref(rootContext).open.value,
27113
27293
  "aria-controls": unref(rootContext).open.value ? unref(rootContext).contentId : void 0,
27114
27294
  "data-state": unref(rootContext).open.value ? "open" : "closed",
27115
- onClick: _cache[0] || (_cache[0] = ($event) => unref(rootContext).onOpenChange(true, "trigger-press"))
27295
+ onClick: unref(rootContext).onOpenToggle
27116
27296
  }), {
27117
27297
  default: withCtx(() => [renderSlot(_ctx.$slots, "default")]),
27118
27298
  _: 3
@@ -27120,7 +27300,8 @@ var DrawerTrigger_default = /* @__PURE__ */ defineComponent({
27120
27300
  "type",
27121
27301
  "aria-expanded",
27122
27302
  "aria-controls",
27123
- "data-state"
27303
+ "data-state",
27304
+ "onClick"
27124
27305
  ]);
27125
27306
  };
27126
27307
  }
@@ -27508,7 +27689,7 @@ var DropdownMenuFilter_default = /* @__PURE__ */ defineComponent({
27508
27689
  contentContext.onFilterElementChange(void 0);
27509
27690
  contentContext.searchRef.value = "";
27510
27691
  });
27511
- const { isComposing, handleCompositionStart, handleCompositionEnd } = useComposing((event) => {
27692
+ const { isComposing, shouldDeferInput, handleCompositionStart, handleCompositionUpdate, handleCompositionEnd } = useComposing((event) => {
27512
27693
  const el = event.target;
27513
27694
  if (el) {
27514
27695
  modelValue.value = el.value;
@@ -27517,7 +27698,7 @@ var DropdownMenuFilter_default = /* @__PURE__ */ defineComponent({
27517
27698
  });
27518
27699
  function handleInput(event) {
27519
27700
  if (disabled.value) return;
27520
- if (isComposing.value) return;
27701
+ if (shouldDeferInput.value) return;
27521
27702
  const target = event.target;
27522
27703
  modelValue.value = target.value;
27523
27704
  contentContext.searchRef.value = target.value;
@@ -27561,6 +27742,7 @@ var DropdownMenuFilter_default = /* @__PURE__ */ defineComponent({
27561
27742
  onInput: handleInput,
27562
27743
  onKeydown: handleKeyDown,
27563
27744
  onCompositionstart: unref(handleCompositionStart),
27745
+ onCompositionupdate: unref(handleCompositionUpdate),
27564
27746
  onCompositionend: unref(handleCompositionEnd)
27565
27747
  }, {
27566
27748
  default: withCtx(() => [renderSlot(_ctx.$slots, "default", { modelValue: unref(modelValue) })]),
@@ -27574,6 +27756,7 @@ var DropdownMenuFilter_default = /* @__PURE__ */ defineComponent({
27574
27756
  "aria-disabled",
27575
27757
  "aria-activedescendant",
27576
27758
  "onCompositionstart",
27759
+ "onCompositionupdate",
27577
27760
  "onCompositionend"
27578
27761
  ]);
27579
27762
  };
@@ -33840,6 +34023,7 @@ var NumberFieldInput_default = /* @__PURE__ */ defineComponent({
33840
34023
  onWheel: handleWheelEvent,
33841
34024
  onBeforeinput: _cache[0] || (_cache[0] = (event) => {
33842
34025
  if (event.isComposing) return;
34026
+ if (event.inputType.startsWith("delete") || event.inputType.startsWith("history")) return;
33843
34027
  const target = event.target;
33844
34028
  let nextValue = target.value.slice(0, target.selectionStart ?? void 0) + (event.data ?? "") + target.value.slice(target.selectionEnd ?? void 0);
33845
34029
  if (!unref(rootContext).validate(nextValue)) event.preventDefault();
@@ -34806,7 +34990,7 @@ var Radio_default = /* @__PURE__ */ defineComponent({
34806
34990
  const { forwardRef, currentElement: triggerElement } = useForwardExpose();
34807
34991
  const isFormControl = useFormControl(triggerElement);
34808
34992
  const scopeIdAttrs = useForwardScopeId();
34809
- const ariaLabel = computed(() => props.id && triggerElement.value ? document.querySelector(`[for="${props.id}"]`)?.innerText ?? props.value : void 0);
34993
+ const ariaLabel = computed(() => props.id && triggerElement.value ? document.querySelector(`[for="${props.id}"]`)?.innerText : void 0);
34810
34994
  function handleClick(event) {
34811
34995
  if (props.disabled) return;
34812
34996
  handleSelect(event, props.value, (ev) => {
@@ -35244,6 +35428,9 @@ var RatingRoot_default = /* @__PURE__ */ defineComponent({
35244
35428
  if (disabled.value || !hoverable.value) return;
35245
35429
  hoveredRating.value = rating;
35246
35430
  }
35431
+ function resetHoveredRating() {
35432
+ hoveredRating.value = 0;
35433
+ }
35247
35434
  provideRatingRootContext({
35248
35435
  modelValue,
35249
35436
  items,
@@ -35254,7 +35441,10 @@ var RatingRoot_default = /* @__PURE__ */ defineComponent({
35254
35441
  changeHoveredRating
35255
35442
  });
35256
35443
  return (_ctx, _cache) => {
35257
- return openBlock(), createBlock(unref(RadioGroupRoot_default), mergeProps(unref(reactiveOmit)(props, "length", "clearable", "hoverable", "step"), { disabled: unref(disabled) }), {
35444
+ return openBlock(), createBlock(unref(RadioGroupRoot_default), mergeProps(unref(reactiveOmit)(props, "length", "clearable", "hoverable", "step"), {
35445
+ disabled: unref(disabled),
35446
+ onMouseleave: resetHoveredRating
35447
+ }), {
35258
35448
  default: withCtx(() => [renderSlot(_ctx.$slots, "default", {
35259
35449
  items: items.value,
35260
35450
  modelValue: unref(modelValue)
@@ -38008,7 +38198,7 @@ var SelectTrigger_default = /* @__PURE__ */ defineComponent({
38008
38198
  ref: unref(forwardRef),
38009
38199
  role: "combobox",
38010
38200
  type: _ctx.as === "button" ? "button" : void 0,
38011
- "aria-controls": unref(rootContext).contentId,
38201
+ "aria-controls": unref(rootContext).open.value ? unref(rootContext).contentId : void 0,
38012
38202
  "aria-expanded": unref(rootContext).open.value || false,
38013
38203
  "aria-required": unref(rootContext).required?.value,
38014
38204
  "aria-autocomplete": "none",
@@ -39051,6 +39241,7 @@ function recalculateLayoutForPixelPanels({ layout, panelDataArray, prevGroupSize
39051
39241
  //#region ../../home/cosmin/Work/maizzle/framework/node_modules/reka-ui/dist/utils/validation.js
39052
39242
  function validatePanelGroupLayout({ layout: prevLayout, panelConstraints }) {
39053
39243
  const nextLayout = [...prevLayout];
39244
+ if (nextLayout.length === 0 && panelConstraints.length === 0) return nextLayout;
39054
39245
  const nextLayoutTotalSize = nextLayout.reduce((accumulated, current) => accumulated + current, 0);
39055
39246
  if (nextLayout.length !== panelConstraints.length) throw new Error(`Invalid ${panelConstraints.length} panel layout: ${nextLayout.map((size) => `${size}%`).join(", ")}`);
39056
39247
  else if (!fuzzyNumbersEqual(nextLayoutTotalSize, 100)) {
@@ -40325,7 +40516,8 @@ var StepperIndicator_default = /* @__PURE__ */ defineComponent({
40325
40516
  },
40326
40517
  as: {
40327
40518
  type: null,
40328
- required: false
40519
+ required: false,
40520
+ default: "span"
40329
40521
  }
40330
40522
  },
40331
40523
  setup(__props) {
@@ -40459,11 +40651,16 @@ var StepperTrigger_default = /* @__PURE__ */ defineComponent({
40459
40651
  });
40460
40652
  }
40461
40653
  const { forwardRef, currentElement } = useForwardExpose();
40654
+ let registeredElement = null;
40462
40655
  onMounted(() => {
40463
- rootContext.totalStepperItems.value.add(currentElement.value);
40656
+ registeredElement = currentElement.value;
40657
+ if (registeredElement) rootContext.totalStepperItems.value.add(registeredElement);
40464
40658
  });
40465
40659
  onUnmounted(() => {
40466
- rootContext.totalStepperItems.value.delete(currentElement.value);
40660
+ if (registeredElement) {
40661
+ rootContext.totalStepperItems.value.delete(registeredElement);
40662
+ registeredElement = null;
40663
+ }
40467
40664
  });
40468
40665
  return (_ctx, _cache) => {
40469
40666
  return openBlock(), createBlock(unref(Primitive), {
@@ -41154,9 +41351,9 @@ var TagsInputRoot_default = /* @__PURE__ */ defineComponent({
41154
41351
  const currentModelValue = computed(() => Array.isArray(modelValue.value) ? [...modelValue.value] : []);
41155
41352
  function handleRemoveTag(index) {
41156
41353
  if (index !== -1) {
41157
- const collection = getItems().filter((i) => i.ref.dataset.disabled !== "");
41354
+ const removedValue = modelValue.value[index];
41158
41355
  modelValue.value = modelValue.value.filter((_, i) => i !== index);
41159
- emits("removeTag", collection[index].value);
41356
+ emits("removeTag", removedValue);
41160
41357
  }
41161
41358
  }
41162
41359
  provideTagsInputRootContext({
@@ -41196,7 +41393,8 @@ var TagsInputRoot_default = /* @__PURE__ */ defineComponent({
41196
41393
  if (target.selectionStart !== 0 || target.selectionEnd !== 0) break;
41197
41394
  if (selectedElement.value) {
41198
41395
  const index = collection.findIndex((i) => i === selectedElement.value);
41199
- handleRemoveTag(index);
41396
+ const selectedItem = getItems().find((i) => i.ref === selectedElement.value);
41397
+ handleRemoveTag(selectedItem ? modelValue.value.findIndex((v) => isEqual(v, selectedItem.value)) : -1);
41200
41398
  selectedElement.value = selectedElement.value === lastTag ? collection.at(index - 1) : collection.at(index + 1);
41201
41399
  event.preventDefault();
41202
41400
  } else if (event.key === "Backspace") {
@@ -41837,7 +42035,7 @@ var TimeFieldRoot_default = /* @__PURE__ */ defineComponent({
41837
42035
  elements: segmentElements,
41838
42036
  setFocusedElement,
41839
42037
  focusNext() {
41840
- nextFocusableSegment.value?.focus();
42038
+ Array.from(segmentElements.value)[currentSegmentIndex.value + 1]?.focus();
41841
42039
  }
41842
42040
  });
41843
42041
  __expose({ setFocusedElement });
@@ -42279,7 +42477,7 @@ var TimeRangeFieldRoot_default = /* @__PURE__ */ defineComponent({
42279
42477
  elements: segmentElements,
42280
42478
  setFocusedElement,
42281
42479
  focusNext() {
42282
- nextFocusableSegment.value?.focus();
42480
+ Array.from(segmentElements.value)[currentSegmentIndex.value + 1]?.focus();
42283
42481
  }
42284
42482
  });
42285
42483
  __expose({ setFocusedElement });
@@ -42673,10 +42871,10 @@ var ToastRootImpl_default = /* @__PURE__ */ defineComponent({
42673
42871
  };
42674
42872
  viewport.addEventListener(VIEWPORT_PAUSE, handlePause);
42675
42873
  viewport.addEventListener(VIEWPORT_RESUME, handleResume);
42676
- return () => {
42874
+ cleanupFn(() => {
42677
42875
  viewport.removeEventListener(VIEWPORT_PAUSE, handlePause);
42678
42876
  viewport.removeEventListener(VIEWPORT_RESUME, handleResume);
42679
- };
42877
+ });
42680
42878
  }
42681
42879
  });
42682
42880
  watch(() => [props.open, duration.value], () => {
@@ -44127,7 +44325,7 @@ var TooltipContentImpl_default = /* @__PURE__ */ defineComponent({
44127
44325
  useEventListener(window, "scroll", (event) => {
44128
44326
  if (event.target?.contains(rootContext.trigger.value)) rootContext.onClose();
44129
44327
  }, { capture: true });
44130
- useEventListener(window, TOOLTIP_OPEN, rootContext.onClose);
44328
+ useEventListener(document, TOOLTIP_OPEN, rootContext.onClose);
44131
44329
  });
44132
44330
  return (_ctx, _cache) => {
44133
44331
  return openBlock(), createBlock(unref(DismissableLayer_default), {