@duskmoon-dev/components 0.5.3 → 0.5.5

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.
package/dist/index.js CHANGED
@@ -107,7 +107,7 @@ function duskmoonMerge(classes) {
107
107
  import { useCallback as useCallback2, useState as useState2 } from "react";
108
108
 
109
109
  // src/generated/version.ts
110
- var version = "0.5.3";
110
+ var version = "0.5.5";
111
111
 
112
112
  // src/infrastructure.ts
113
113
  var theme = {
@@ -9098,7 +9098,7 @@ function getDmTableClasses({ className }) {
9098
9098
  // src/components/dm-search/DmSearch.tsx
9099
9099
  import {
9100
9100
  forwardRef as forwardRef40,
9101
- useEffect as useEffect19,
9101
+ useEffect as useEffect20,
9102
9102
  useImperativeHandle as useImperativeHandle6,
9103
9103
  useMemo as useMemo19,
9104
9104
  useState as useState30
@@ -9121,7 +9121,15 @@ function getDmSearchClasses({
9121
9121
  }
9122
9122
 
9123
9123
  // src/components/select/Select.tsx
9124
- import React45, { forwardRef as forwardRef39, useMemo as useMemo18, useState as useState29 } from "react";
9124
+ import React45, {
9125
+ forwardRef as forwardRef39,
9126
+ useCallback as useCallback7,
9127
+ useEffect as useEffect19,
9128
+ useId as useId10,
9129
+ useMemo as useMemo18,
9130
+ useRef as useRef15,
9131
+ useState as useState29
9132
+ } from "react";
9125
9133
 
9126
9134
  // src/classes/select.ts
9127
9135
  var selectContainerClass = "select-container";
@@ -9275,6 +9283,7 @@ var SelectRoot = forwardRef39(({
9275
9283
  "aria-required": ariaRequired,
9276
9284
  children,
9277
9285
  className,
9286
+ defaultOpen = false,
9278
9287
  defaultValue,
9279
9288
  disabled,
9280
9289
  filterOption,
@@ -9282,6 +9291,9 @@ var SelectRoot = forwardRef39(({
9282
9291
  loading,
9283
9292
  mode,
9284
9293
  onChange,
9294
+ onDropdownVisibleChange,
9295
+ onOpenChange,
9296
+ open: openProp,
9285
9297
  options,
9286
9298
  placeholder,
9287
9299
  showSearch,
@@ -9290,10 +9302,60 @@ var SelectRoot = forwardRef39(({
9290
9302
  value,
9291
9303
  ...props
9292
9304
  }, ref) => {
9305
+ const generatedId = useId10();
9306
+ const cleanId = generatedId.replace(/[^a-zA-Z0-9_-]/g, "");
9307
+ const triggerId = id || `select-${cleanId}`;
9308
+ const dropdownId = `select-dropdown-${cleanId}`;
9309
+ const anchorName = `--dm-select-${cleanId}`;
9310
+ const [internalOpen, setInternalOpen] = useState29(Boolean(defaultOpen));
9311
+ const isControlled = openProp !== undefined;
9312
+ const isOpen = isControlled ? Boolean(openProp) : internalOpen;
9313
+ const containerRef = useRef15(null);
9314
+ const dropdownRef = useRef15(null);
9315
+ const setOpenState = useCallback7((nextOpen) => {
9316
+ if (!isControlled) {
9317
+ setInternalOpen(nextOpen);
9318
+ }
9319
+ onDropdownVisibleChange?.(nextOpen);
9320
+ onOpenChange?.(nextOpen);
9321
+ }, [isControlled, onDropdownVisibleChange, onOpenChange]);
9322
+ useEffect19(() => {
9323
+ const dropdown = dropdownRef.current;
9324
+ if (!dropdown || typeof dropdown.showPopover !== "function")
9325
+ return;
9326
+ if (isOpen && !dropdown.matches(":popover-open")) {
9327
+ try {
9328
+ dropdown.showPopover();
9329
+ } catch {}
9330
+ } else if (!isOpen && dropdown.matches(":popover-open")) {
9331
+ try {
9332
+ dropdown.hidePopover();
9333
+ } catch {}
9334
+ }
9335
+ }, [isOpen]);
9336
+ useEffect19(() => {
9337
+ if (!isOpen)
9338
+ return;
9339
+ const handlePointerDown = (event) => {
9340
+ const target = event.target;
9341
+ if (!target)
9342
+ return;
9343
+ if (containerRef.current?.contains(target))
9344
+ return;
9345
+ if (dropdownRef.current?.contains(target))
9346
+ return;
9347
+ setOpenState(false);
9348
+ };
9349
+ document.addEventListener("mousedown", handlePointerDown);
9350
+ document.addEventListener("touchstart", handlePointerDown);
9351
+ return () => {
9352
+ document.removeEventListener("mousedown", handlePointerDown);
9353
+ document.removeEventListener("touchstart", handlePointerDown);
9354
+ };
9355
+ }, [isOpen, setOpenState]);
9293
9356
  const multiple = mode === "multiple" || mode === "tags";
9294
9357
  const sourceOptions = useMemo18(() => options ?? optionsFromChildren2(children), [children, options]);
9295
9358
  const flatOptions = useMemo18(() => flattenOptions(sourceOptions), [sourceOptions]);
9296
- const [open, setOpen] = useState29(false);
9297
9359
  const [searchValue, setSearchValue] = useState29("");
9298
9360
  const [internalValue, setInternalValue] = useState29(multiple ? normalizeMultiValue(defaultValue) : normalizeSingleValue2(defaultValue));
9299
9361
  const controlled = value !== undefined;
@@ -9328,7 +9390,7 @@ var SelectRoot = forwardRef39(({
9328
9390
  emitChange(nextValues);
9329
9391
  } else {
9330
9392
  emitChange(option.value);
9331
- setOpen(false);
9393
+ setOpenState(false);
9332
9394
  }
9333
9395
  setSearchValue("");
9334
9396
  }
@@ -9384,15 +9446,23 @@ var SelectRoot = forwardRef39(({
9384
9446
  }, `group-${index}`);
9385
9447
  });
9386
9448
  }
9449
+ const setRefs = (node) => {
9450
+ containerRef.current = node;
9451
+ if (typeof ref === "function") {
9452
+ ref(node);
9453
+ } else if (ref) {
9454
+ ref.current = node;
9455
+ }
9456
+ };
9387
9457
  const selection = multiple ? selectedOptions.map((option) => /* @__PURE__ */ jsx49("span", {
9388
9458
  className: selectTagClass,
9389
9459
  children: renderValue(option)
9390
9460
  }, valueKey2(option.value))) : renderValue(selectedOptions[0]);
9391
9461
  return /* @__PURE__ */ jsxs35("div", {
9392
9462
  ...props,
9393
- ref,
9463
+ ref: setRefs,
9394
9464
  className: getSelectContainerClasses({
9395
- open,
9465
+ open: isOpen,
9396
9466
  loading,
9397
9467
  disabled,
9398
9468
  full: true,
@@ -9401,7 +9471,7 @@ var SelectRoot = forwardRef39(({
9401
9471
  children: [
9402
9472
  /* @__PURE__ */ jsxs35("button", {
9403
9473
  type: "button",
9404
- id,
9474
+ id: triggerId,
9405
9475
  className: getSelectClasses({ size, status, disabled }),
9406
9476
  disabled: disabled || loading,
9407
9477
  "aria-describedby": ariaDescribedBy,
@@ -9411,8 +9481,14 @@ var SelectRoot = forwardRef39(({
9411
9481
  "aria-labelledby": ariaLabelledBy,
9412
9482
  "aria-required": ariaRequired,
9413
9483
  "aria-haspopup": "listbox",
9414
- "aria-expanded": open,
9415
- onClick: () => setOpen((current) => !current),
9484
+ "aria-expanded": isOpen,
9485
+ "aria-controls": dropdownId,
9486
+ style: { anchorName },
9487
+ onClick: () => {
9488
+ if (disabled || loading)
9489
+ return;
9490
+ setOpenState(!isOpen);
9491
+ },
9416
9492
  children: [
9417
9493
  /* @__PURE__ */ jsx49("span", {
9418
9494
  className: selectSelectionClass,
@@ -9460,10 +9536,22 @@ var SelectRoot = forwardRef39(({
9460
9536
  })
9461
9537
  })
9462
9538
  }) : null,
9463
- open ? /* @__PURE__ */ jsxs35("div", {
9464
- className: selectDropdownClass,
9539
+ isOpen ? /* @__PURE__ */ jsxs35("div", {
9540
+ id: dropdownId,
9541
+ ref: dropdownRef,
9542
+ popover: "auto",
9465
9543
  role: "listbox",
9466
9544
  "aria-multiselectable": multiple || undefined,
9545
+ className: selectDropdownClass,
9546
+ style: { positionAnchor: anchorName },
9547
+ onToggle: (event) => {
9548
+ if (event.target !== event.currentTarget)
9549
+ return;
9550
+ const nextOpen = event.nativeEvent?.newState === "open";
9551
+ if (nextOpen !== isOpen) {
9552
+ setOpenState(nextOpen);
9553
+ }
9554
+ },
9467
9555
  children: [
9468
9556
  searchable ? /* @__PURE__ */ jsx49("input", {
9469
9557
  className: selectSearchClass,
@@ -9597,7 +9685,7 @@ var DmSearch = forwardRef40(({
9597
9685
  const controlled = controlledValues !== undefined;
9598
9686
  const values = controlled ? controlledValues : internalValues;
9599
9687
  const visibleItems = collapsed ? allItems.slice(0, 1) : allItems;
9600
- useEffect19(() => {
9688
+ useEffect20(() => {
9601
9689
  if (!controlled)
9602
9690
  setValues(initialValues(allItems, searchParams));
9603
9691
  }, [allItems, searchParams, controlled]);
@@ -10588,7 +10676,7 @@ function DmProTable({
10588
10676
  }
10589
10677
  DmProTable.displayName = "DmProTable";
10590
10678
  // src/components/dm-provider/DmProvider.tsx
10591
- import { forwardRef as forwardRef42, useEffect as useEffect20, useState as useState33 } from "react";
10679
+ import { forwardRef as forwardRef42, useEffect as useEffect21, useState as useState33 } from "react";
10592
10680
 
10593
10681
  // src/classes/dm-provider.ts
10594
10682
  var dmProviderClass = "dm-provider";
@@ -10609,17 +10697,17 @@ var DmProvider = forwardRef42(({
10609
10697
  ...props
10610
10698
  }, ref) => {
10611
10699
  const [currentTheme, setCurrentTheme] = useState33(() => getDmTheme());
10612
- useEffect20(() => {
10700
+ useEffect21(() => {
10613
10701
  return onDmThemeUpdate(() => {
10614
10702
  setCurrentTheme(getDmTheme());
10615
10703
  });
10616
10704
  }, []);
10617
- useEffect20(() => {
10705
+ useEffect21(() => {
10618
10706
  if (prefixCls) {
10619
10707
  setDmPrefixCls(prefixCls);
10620
10708
  }
10621
10709
  }, [prefixCls]);
10622
- useEffect20(() => {
10710
+ useEffect21(() => {
10623
10711
  const colorPrimary = theme?.token?.colorPrimary;
10624
10712
  if (typeof colorPrimary === "string") {
10625
10713
  setDmPrimaryColor(colorPrimary);
@@ -10642,7 +10730,7 @@ DmProvider.displayName = "DmProvider";
10642
10730
  import {
10643
10731
  forwardRef as forwardRef43,
10644
10732
  useImperativeHandle as useImperativeHandle7,
10645
- useRef as useRef15,
10733
+ useRef as useRef16,
10646
10734
  useState as useState34
10647
10735
  } from "react";
10648
10736
  import { jsx as jsx55 } from "react/jsx-runtime";
@@ -10667,7 +10755,7 @@ var DmQuery = forwardRef43(({
10667
10755
  onSearch,
10668
10756
  ...props
10669
10757
  }, ref) => {
10670
- const searchRef = useRef15(null);
10758
+ const searchRef = useRef16(null);
10671
10759
  const [selectedItem, setSelectedItem] = useState34(queryItem[0]);
10672
10760
  const items = selectedItem ? [toSearchItem(selectedItem)] : queryItem.map(toSearchItem);
10673
10761
  useImperativeHandle7(ref, () => ({
@@ -10692,7 +10780,7 @@ import React52, {
10692
10780
  Children as Children2,
10693
10781
  forwardRef as forwardRef45,
10694
10782
  isValidElement as isValidElement2,
10695
- useEffect as useEffect21,
10783
+ useEffect as useEffect22,
10696
10784
  useMemo as useMemo23,
10697
10785
  useState as useState36
10698
10786
  } from "react";
@@ -10989,7 +11077,7 @@ var DmSplitterRoot = forwardRef45(({
10989
11077
  const hasPersistence = Boolean(key);
10990
11078
  const shouldRenderReset = resettable ?? hasPersistence;
10991
11079
  const gapValue = typeof gap === "number" ? `${gap}px` : gap;
10992
- useEffect21(() => {
11080
+ useEffect22(() => {
10993
11081
  if (!key || persistence?.persistenceType === "localStorage")
10994
11082
  return;
10995
11083
  if (!persistence?.persistenceType)
@@ -11171,7 +11259,7 @@ var Empty = EmptyBase;
11171
11259
  Empty.PRESENTED_IMAGE_DEFAULT = defaultImage;
11172
11260
  Empty.PRESENTED_IMAGE_SIMPLE = simpleImage;
11173
11261
  // src/components/spin/Spin.tsx
11174
- import { forwardRef as forwardRef47, useEffect as useEffect22, useState as useState37 } from "react";
11262
+ import { forwardRef as forwardRef47, useEffect as useEffect23, useState as useState37 } from "react";
11175
11263
 
11176
11264
  // src/classes/spin.ts
11177
11265
  var spinBaseClass = "spin";
@@ -11205,7 +11293,7 @@ function setDefaultIndicator(indicator) {
11205
11293
  function useDelayedSpinning(spinning, delay) {
11206
11294
  const [delayedActive, setDelayedActive] = useState37(false);
11207
11295
  const hasDelay = Boolean(delay && delay > 0);
11208
- useEffect22(() => {
11296
+ useEffect23(() => {
11209
11297
  if (!hasDelay) {
11210
11298
  return;
11211
11299
  }
@@ -11432,8 +11520,8 @@ import {
11432
11520
  Fragment as Fragment11,
11433
11521
  forwardRef as forwardRef49,
11434
11522
  isValidElement as isValidElement3,
11435
- useId as useId10,
11436
- useRef as useRef16,
11523
+ useId as useId11,
11524
+ useRef as useRef17,
11437
11525
  useState as useState38
11438
11526
  } from "react";
11439
11527
 
@@ -11585,13 +11673,13 @@ var TabsBase = forwardRef49(({
11585
11673
  id,
11586
11674
  ...props
11587
11675
  }, ref) => {
11588
- const reactId = useId10();
11676
+ const reactId = useId11();
11589
11677
  const tabsId = id ?? `tabs-${reactId}`;
11590
11678
  const finalItems = normalizeItems(items, children);
11591
11679
  const [internalActiveKey, setInternalActiveKey] = useState38(() => getInitialActiveKey(finalItems, defaultActiveKey));
11592
11680
  const isControlled = activeKey !== undefined;
11593
11681
  const selectedKey = getCurrentActiveKey(finalItems, isControlled ? activeKey : internalActiveKey);
11594
- const tabRefs = useRef16([]);
11682
+ const tabRefs = useRef17([]);
11595
11683
  const editable = isEditable(type);
11596
11684
  function changeActive(nextKey) {
11597
11685
  if (nextKey === selectedKey)
@@ -12572,11 +12660,11 @@ var DmTree = (props) => {
12572
12660
  // src/components/dm-truncate/DmTruncate.tsx
12573
12661
  import {
12574
12662
  forwardRef as forwardRef53,
12575
- useCallback as useCallback7,
12576
- useEffect as useEffect24,
12663
+ useCallback as useCallback8,
12664
+ useEffect as useEffect25,
12577
12665
  useLayoutEffect as useLayoutEffect3,
12578
12666
  useMemo as useMemo26,
12579
- useRef as useRef18,
12667
+ useRef as useRef19,
12580
12668
  useState as useState42
12581
12669
  } from "react";
12582
12670
 
@@ -12601,7 +12689,7 @@ function getDmTruncateTextClasses({
12601
12689
  }
12602
12690
 
12603
12691
  // src/components/tooltip/Tooltip.tsx
12604
- import React59, { forwardRef as forwardRef52, useEffect as useEffect23, useId as useId11, useRef as useRef17, useState as useState41 } from "react";
12692
+ import React59, { forwardRef as forwardRef52, useEffect as useEffect24, useId as useId12, useRef as useRef18, useState as useState41 } from "react";
12605
12693
 
12606
12694
  // src/classes/tooltip.ts
12607
12695
  var tooltipWrapperClass = "tooltip-wrapper";
@@ -12651,22 +12739,22 @@ var Tooltip = forwardRef52(({
12651
12739
  const [internalOpen, setInternalOpen] = useState41(Boolean(defaultOpen));
12652
12740
  const isControlled = open !== undefined;
12653
12741
  const visible = isControlled ? open : internalOpen;
12654
- const reactId = useId11();
12742
+ const reactId = useId12();
12655
12743
  const tooltipId = props.id !== undefined ? `${props.id}-tooltip` : `${reactId}-tooltip`;
12656
12744
  const anchor = `--tooltip-${reactId.replace(/[^a-zA-Z0-9_-]/g, "")}`;
12657
- const surfaceRef = useRef17(null);
12658
- const hoveredRef = useRef17(false);
12659
- const focusedRef = useRef17(false);
12660
- const interactionOpenRef = useRef17(false);
12661
- const visibleRef = useRef17(visible);
12662
- const controlledRef = useRef17(isControlled);
12663
- const onOpenChangeRef = useRef17(onOpenChange);
12745
+ const surfaceRef = useRef18(null);
12746
+ const hoveredRef = useRef18(false);
12747
+ const focusedRef = useRef18(false);
12748
+ const interactionOpenRef = useRef18(false);
12749
+ const visibleRef = useRef18(visible);
12750
+ const controlledRef = useRef18(isControlled);
12751
+ const onOpenChangeRef = useRef18(onOpenChange);
12664
12752
  visibleRef.current = visible;
12665
12753
  controlledRef.current = isControlled;
12666
12754
  onOpenChangeRef.current = onOpenChange;
12667
12755
  const hasTitle = Boolean(title);
12668
12756
  const nativeInterest = !isControlled && React59.isValidElement(children) && (typeof children.type !== "string" || children.type === "button" || children.type === "a") && children.type !== React59.Fragment;
12669
- useEffect23(() => {
12757
+ useEffect24(() => {
12670
12758
  const surface = surfaceRef.current;
12671
12759
  if (!surface)
12672
12760
  return;
@@ -12692,14 +12780,14 @@ var Tooltip = forwardRef52(({
12692
12780
  surface.addEventListener("toggle", handleToggle);
12693
12781
  return () => surface.removeEventListener("toggle", handleToggle);
12694
12782
  }, [hasTitle, isControlled, nativeInterest]);
12695
- useEffect23(() => {
12783
+ useEffect24(() => {
12696
12784
  const surface = surfaceRef.current;
12697
12785
  return () => {
12698
12786
  if (surface?.matches(":popover-open"))
12699
12787
  surface.hidePopover();
12700
12788
  };
12701
12789
  }, [hasTitle, isControlled, nativeInterest]);
12702
- useEffect23(() => {
12790
+ useEffect24(() => {
12703
12791
  const surface = surfaceRef.current;
12704
12792
  if (!surface)
12705
12793
  return;
@@ -12709,7 +12797,7 @@ var Tooltip = forwardRef52(({
12709
12797
  surface.hidePopover();
12710
12798
  }
12711
12799
  }, [visible, hasTitle, isControlled]);
12712
- useEffect23(() => {
12800
+ useEffect24(() => {
12713
12801
  if (!isControlled || !visible || !hasTitle)
12714
12802
  return;
12715
12803
  const wrapper = surfaceRef.current?.parentElement;
@@ -12875,10 +12963,10 @@ var DmTruncate = forwardRef53(({
12875
12963
  onCopy,
12876
12964
  ...props
12877
12965
  }, ref) => {
12878
- const wrapperRef = useRef18(null);
12879
- const textRef = useRef18(null);
12880
- const measureRef = useRef18(null);
12881
- const copyTimerRef = useRef18(null);
12966
+ const wrapperRef = useRef19(null);
12967
+ const textRef = useRef19(null);
12968
+ const measureRef = useRef19(null);
12969
+ const copyTimerRef = useRef19(null);
12882
12970
  const [overflow, setOverflow] = useState42(false);
12883
12971
  const [copied, setCopied] = useState42(false);
12884
12972
  const textValue = toPlainText(children);
@@ -12914,7 +13002,7 @@ var DmTruncate = forwardRef53(({
12914
13002
  textStyle,
12915
13003
  tooltipPreserveLineBreak
12916
13004
  ]);
12917
- const measure = useCallback7(() => {
13005
+ const measure = useCallback8(() => {
12918
13006
  const wrapper = wrapperRef.current;
12919
13007
  const text = textRef.current;
12920
13008
  const measureNode = measureRef.current;
@@ -12934,14 +13022,14 @@ var DmTruncate = forwardRef53(({
12934
13022
  useLayoutEffect3(() => {
12935
13023
  measure();
12936
13024
  }, [measure, textValue]);
12937
- useEffect24(() => {
13025
+ useEffect25(() => {
12938
13026
  if (typeof window === "undefined") {
12939
13027
  return;
12940
13028
  }
12941
13029
  window.addEventListener("resize", measure);
12942
13030
  return () => window.removeEventListener("resize", measure);
12943
13031
  }, [measure]);
12944
- useEffect24(() => {
13032
+ useEffect25(() => {
12945
13033
  return () => {
12946
13034
  if (copyTimerRef.current) {
12947
13035
  window.clearTimeout(copyTimerRef.current);
@@ -13110,8 +13198,8 @@ import React62, {
13110
13198
  createContext as createContext6,
13111
13199
  forwardRef as forwardRef55,
13112
13200
  useContext as useContext6,
13113
- useEffect as useEffect25,
13114
- useRef as useRef19,
13201
+ useEffect as useEffect26,
13202
+ useRef as useRef20,
13115
13203
  useState as useState43
13116
13204
  } from "react";
13117
13205
 
@@ -13345,9 +13433,9 @@ var FloatButtonBackTop = forwardRef55(({
13345
13433
  ...props
13346
13434
  }, ref) => {
13347
13435
  const [visible, setVisible] = useState43(false);
13348
- const visibleRef = useRef19(visible);
13436
+ const visibleRef = useRef20(visible);
13349
13437
  visibleRef.current = visible;
13350
- useEffect25(() => {
13438
+ useEffect26(() => {
13351
13439
  const scrollTarget = getTarget2(target);
13352
13440
  if (!scrollTarget)
13353
13441
  return;
@@ -13384,7 +13472,7 @@ var FloatButton = Object.assign(InternalFloatButton, {
13384
13472
  BackTop: FloatButtonBackTop
13385
13473
  });
13386
13474
  // src/components/fab/Fab.tsx
13387
- import { createContext as createContext7, forwardRef as forwardRef56, useContext as useContext7, useId as useId12 } from "react";
13475
+ import { createContext as createContext7, forwardRef as forwardRef56, useContext as useContext7, useId as useId13 } from "react";
13388
13476
 
13389
13477
  // src/classes/fab.ts
13390
13478
  var fabClass = "fab";
@@ -13456,7 +13544,7 @@ var FabRoot = forwardRef56(({
13456
13544
  children,
13457
13545
  ...props
13458
13546
  }, ref) => {
13459
- const actionsId = `fab-actions-${useId12().replace(/:/g, "")}`;
13547
+ const actionsId = `fab-actions-${useId13().replace(/:/g, "")}`;
13460
13548
  const hasActions = actions != null;
13461
13549
  const resolvedSpeedDial = speedDial || hasActions;
13462
13550
  return /* @__PURE__ */ jsx69(FabContext.Provider, {
@@ -13510,14 +13598,14 @@ import React64, {
13510
13598
  createContext as createContext8,
13511
13599
  forwardRef as forwardRef57,
13512
13600
  isValidElement as isValidElement4,
13513
- useCallback as useCallback8,
13601
+ useCallback as useCallback9,
13514
13602
  useContext as useContext8,
13515
- useEffect as useEffect26,
13603
+ useEffect as useEffect27,
13516
13604
  useImperativeHandle as useImperativeHandle8,
13517
- useId as useId13,
13605
+ useId as useId14,
13518
13606
  useLayoutEffect as useLayoutEffect4,
13519
13607
  useMemo as useMemo27,
13520
- useRef as useRef20,
13608
+ useRef as useRef21,
13521
13609
  useState as useState44,
13522
13610
  useSyncExternalStore as useSyncExternalStore2
13523
13611
  } from "react";
@@ -13686,7 +13774,7 @@ var FormBase = forwardRef57(({
13686
13774
  ...props
13687
13775
  }, ref) => {
13688
13776
  const formInstance = useInternalForm(form, initialValues);
13689
- const initialValuesRef = useRef20(initialValues);
13777
+ const initialValuesRef = useRef21(initialValues);
13690
13778
  const [errors, setErrors] = useState44({});
13691
13779
  const [, rerender] = useState44(0);
13692
13780
  const providerForms = useContext8(ProviderContext);
@@ -13703,21 +13791,21 @@ var FormBase = forwardRef57(({
13703
13791
  const internal = formInstance;
13704
13792
  return internal.__subscribe?.(() => rerender((value) => value + 1));
13705
13793
  }, [formInstance]);
13706
- useEffect26(() => {
13794
+ useEffect27(() => {
13707
13795
  formInstance.__setSubmit?.(() => {
13708
13796
  submit();
13709
13797
  });
13710
13798
  });
13711
- const setFieldError = useCallback8((fieldName, fieldErrors) => {
13799
+ const setFieldError = useCallback9((fieldName, fieldErrors) => {
13712
13800
  setErrors((current) => ({
13713
13801
  ...current,
13714
13802
  [nameKey(fieldName)]: fieldErrors
13715
13803
  }));
13716
13804
  }, []);
13717
- const getFieldError = useCallback8((fieldName) => {
13805
+ const getFieldError = useCallback9((fieldName) => {
13718
13806
  return errors[nameKey(fieldName)] ?? [];
13719
13807
  }, [errors]);
13720
- const registerField = useCallback8((fieldName, rules = []) => {
13808
+ const registerField = useCallback9((fieldName, rules = []) => {
13721
13809
  const store = formInstance.__getRules?.();
13722
13810
  store?.set(nameKey(fieldName), { name: fieldName, rules });
13723
13811
  return () => {
@@ -13800,14 +13888,14 @@ var FormItem = forwardRef57(({
13800
13888
  ...props
13801
13889
  }, ref) => {
13802
13890
  const context = useContext8(FormContext);
13803
- const generatedId = useId13();
13891
+ const generatedId = useId14();
13804
13892
  useFormVersion(context?.form);
13805
13893
  const fieldErrors = name && context ? context.getFieldError(name) : [];
13806
13894
  const ruleRequired = required ?? rules.some((rule) => rule.required);
13807
13895
  const child = isValidElement4(children) && children.type !== React64.Fragment ? children : null;
13808
13896
  const childProps = child?.props;
13809
13897
  const controlId = label && !noStyle && htmlFor === undefined && child ? childProps?.id ?? generatedId : undefined;
13810
- useEffect26(() => {
13898
+ useEffect27(() => {
13811
13899
  if (!name || !context) {
13812
13900
  return;
13813
13901
  }
@@ -14032,7 +14120,7 @@ var Grid = {
14032
14120
  useWatch: useWatch2
14033
14121
  };
14034
14122
  // src/components/image/Image.tsx
14035
- import { forwardRef as forwardRef58, useEffect as useEffect27, useState as useState45 } from "react";
14123
+ import { forwardRef as forwardRef58, useEffect as useEffect28, useState as useState45 } from "react";
14036
14124
 
14037
14125
  // src/classes/image.ts
14038
14126
  var imageBaseClass = "image";
@@ -14096,7 +14184,7 @@ var ImageBase = forwardRef58(({
14096
14184
  const isPreviewEnabled = previewEnabled(preview);
14097
14185
  const previewVisible = config.visible ?? internalPreviewVisible;
14098
14186
  const hasImage = Boolean(currentSrc);
14099
- useEffect27(() => {
14187
+ useEffect28(() => {
14100
14188
  setCurrentSrc(src);
14101
14189
  setLoading(Boolean(src));
14102
14190
  setFailed(false);
@@ -14468,7 +14556,7 @@ var List = Object.assign(ListRootWithRef, {
14468
14556
  });
14469
14557
  List.displayName = "List";
14470
14558
  // src/components/mentions/Mentions.tsx
14471
- import React68, { forwardRef as forwardRef61, useId as useId14, useMemo as useMemo30, useRef as useRef21, useState as useState47 } from "react";
14559
+ import React68, { forwardRef as forwardRef61, useId as useId15, useMemo as useMemo30, useRef as useRef22, useState as useState47 } from "react";
14472
14560
 
14473
14561
  // src/classes/mentions.ts
14474
14562
  var mentionsBaseClass = "mentions";
@@ -14589,8 +14677,8 @@ var MentionsRoot = forwardRef61(({
14589
14677
  value,
14590
14678
  ...props
14591
14679
  }, ref) => {
14592
- const listboxId = useId14();
14593
- const textareaRef = useRef21(null);
14680
+ const listboxId = useId15();
14681
+ const textareaRef = useRef22(null);
14594
14682
  const sourceOptions = useMemo30(() => options ?? optionsFromChildren3(children), [children, options]);
14595
14683
  const prefixes = useMemo30(() => normalizePrefixes(prefix), [prefix]);
14596
14684
  const [internalValue, setInternalValue] = useState47(defaultValue);
@@ -14757,7 +14845,7 @@ import {
14757
14845
  createContext as createContext9,
14758
14846
  forwardRef as forwardRef62,
14759
14847
  useContext as useContext9,
14760
- useId as useId15
14848
+ useId as useId16
14761
14849
  } from "react";
14762
14850
 
14763
14851
  // src/classes/megamenu.ts
@@ -14787,7 +14875,7 @@ var Bar = forwardRef62(({ className, ...props }, ref) => /* @__PURE__ */ jsx75("
14787
14875
  }));
14788
14876
  Bar.displayName = "Megamenu.Bar";
14789
14877
  var Item = forwardRef62(({ style, children, ...props }, ref) => {
14790
- const key = useId15().replace(/:/g, "");
14878
+ const key = useId16().replace(/:/g, "");
14791
14879
  const panelId = `megamenu-panel-${key}`;
14792
14880
  const anchorStyle = {
14793
14881
  ...style,
@@ -14873,7 +14961,7 @@ var MegamenuRoot = forwardRef62(({
14873
14961
  children,
14874
14962
  ...props
14875
14963
  }, ref) => {
14876
- const key = useId15().replace(/[^a-zA-Z0-9_-]/g, "");
14964
+ const key = useId16().replace(/[^a-zA-Z0-9_-]/g, "");
14877
14965
  const panelId = `dm-megamenu-${key}`;
14878
14966
  const headingId = `${panelId}-heading`;
14879
14967
  const anchorStyle = {
@@ -15023,9 +15111,9 @@ import {
15023
15111
  cloneElement as cloneElement2,
15024
15112
  forwardRef as forwardRef64,
15025
15113
  isValidElement as isValidElement5,
15026
- useId as useId16,
15114
+ useId as useId17,
15027
15115
  useLayoutEffect as useLayoutEffect5,
15028
- useRef as useRef22,
15116
+ useRef as useRef23,
15029
15117
  useState as useState48
15030
15118
  } from "react";
15031
15119
 
@@ -15101,10 +15189,10 @@ var Popover = forwardRef64(({
15101
15189
  }, ref) => {
15102
15190
  const isControlled = open !== undefined;
15103
15191
  const [internalOpen, setInternalOpen] = useState48(Boolean(defaultOpen));
15104
- const generatedId = useId16();
15192
+ const generatedId = useId17();
15105
15193
  const tooltipId = id ? `${id}-popover` : generatedId;
15106
15194
  const anchorName = `--dm-popover-${generatedId.replace(/[^a-zA-Z0-9_-]/g, "")}`;
15107
- const popoverRef = useRef22(null);
15195
+ const popoverRef = useRef23(null);
15108
15196
  const visible = isControlled ? open : internalOpen;
15109
15197
  useLayoutEffect5(() => {
15110
15198
  const popover = popoverRef.current;
@@ -15226,9 +15314,9 @@ Popover.displayName = "Popover";
15226
15314
  // src/components/popconfirm/Popconfirm.tsx
15227
15315
  import React71, {
15228
15316
  forwardRef as forwardRef65,
15229
- useId as useId17,
15317
+ useId as useId18,
15230
15318
  useLayoutEffect as useLayoutEffect6,
15231
- useRef as useRef23,
15319
+ useRef as useRef24,
15232
15320
  useState as useState49
15233
15321
  } from "react";
15234
15322
 
@@ -15310,13 +15398,13 @@ var Popconfirm = forwardRef65(({
15310
15398
  }, ref) => {
15311
15399
  const [internalOpen, setInternalOpen] = useState49(Boolean(defaultOpen));
15312
15400
  const [confirmLoading, setConfirmLoading] = useState49(false);
15313
- const generatedPopupId = useId17();
15401
+ const generatedPopupId = useId18();
15314
15402
  const isControlled = open !== undefined;
15315
15403
  const visible = isControlled ? open : internalOpen;
15316
15404
  const popupId = id ? `${id}-popconfirm` : generatedPopupId;
15317
15405
  const anchorName = `--dm-popconfirm-${generatedPopupId.replace(/[^a-zA-Z0-9_-]/g, "")}`;
15318
- const popupRef = useRef23(null);
15319
- const desiredOpen = useRef23(visible);
15406
+ const popupRef = useRef24(null);
15407
+ const desiredOpen = useRef24(visible);
15320
15408
  desiredOpen.current = visible;
15321
15409
  const shouldRenderPopup = !destroyTooltipOnHide || visible;
15322
15410
  useLayoutEffect6(() => {
@@ -16612,9 +16700,9 @@ var Skeleton = Object.assign(SkeletonRoot, {
16612
16700
  // src/components/slider/Slider.tsx
16613
16701
  import React80, {
16614
16702
  forwardRef as forwardRef74,
16615
- useEffect as useEffect28,
16703
+ useEffect as useEffect29,
16616
16704
  useMemo as useMemo31,
16617
- useRef as useRef24,
16705
+ useRef as useRef25,
16618
16706
  useState as useState52
16619
16707
  } from "react";
16620
16708
 
@@ -16854,8 +16942,8 @@ var Slider = forwardRef74(({
16854
16942
  step,
16855
16943
  range: isRange
16856
16944
  });
16857
- const lastCommittedValue = useRef24(currentValue);
16858
- useEffect28(() => {
16945
+ const lastCommittedValue = useRef25(currentValue);
16946
+ useEffect29(() => {
16859
16947
  lastCommittedValue.current = currentValue;
16860
16948
  }, [currentValue]);
16861
16949
  function commitValue(nextValue) {
@@ -17126,7 +17214,7 @@ Compact.displayName = "Space.Compact";
17126
17214
  var Space = SpaceBase;
17127
17215
  Space.Compact = Compact;
17128
17216
  // src/components/statistic/Statistic.tsx
17129
- import { useEffect as useEffect29, useMemo as useMemo32, useRef as useRef25, useState as useState53 } from "react";
17217
+ import { useEffect as useEffect30, useMemo as useMemo32, useRef as useRef26, useState as useState53 } from "react";
17130
17218
 
17131
17219
  // src/classes/statistic.ts
17132
17220
  var statisticBaseClass = "statistic";
@@ -17222,8 +17310,8 @@ function Countdown({
17222
17310
  }) {
17223
17311
  const target = useMemo32(() => toTimestamp(value), [value]);
17224
17312
  const [remaining, setRemaining] = useState53(() => Math.max(0, target - Date.now()));
17225
- const finishedRef = useRef25(false);
17226
- useEffect29(() => {
17313
+ const finishedRef = useRef26(false);
17314
+ useEffect30(() => {
17227
17315
  finishedRef.current = false;
17228
17316
  const tick = () => {
17229
17317
  const nextRemaining = Math.max(0, target - Date.now());
@@ -18192,6 +18280,7 @@ var timelineBaseClass = "timeline";
18192
18280
  var timelineItemClass = "timeline-item";
18193
18281
  var timelineMarkerBaseClass = "timeline-marker";
18194
18282
  var timelineMarkerIconClass = "timeline-marker-icon";
18283
+ var timelineMarkerDotClass = "timeline-marker-dot";
18195
18284
  var timelineContentClass = "timeline-content";
18196
18285
  var timelineTimeClass = "timeline-time";
18197
18286
  var timelinePendingClass = "timeline-item-pending";
@@ -18272,7 +18361,10 @@ var Timeline = forwardRef81(({
18272
18361
  hasIcon: Boolean(item.dot)
18273
18362
  }),
18274
18363
  "aria-hidden": "true",
18275
- children: item.dot
18364
+ children: item.dot ?? /* @__PURE__ */ jsx95("span", {
18365
+ className: timelineMarkerDotClass,
18366
+ "aria-hidden": "true"
18367
+ })
18276
18368
  }),
18277
18369
  /* @__PURE__ */ jsxs75("div", {
18278
18370
  className: timelineContentClass,
@@ -18292,8 +18384,8 @@ Timeline.displayName = "Timeline";
18292
18384
  // src/components/tour/Tour.tsx
18293
18385
  import {
18294
18386
  forwardRef as forwardRef82,
18295
- useEffect as useEffect30,
18296
- useId as useId18,
18387
+ useEffect as useEffect31,
18388
+ useId as useId19,
18297
18389
  useState as useState56
18298
18390
  } from "react";
18299
18391
 
@@ -18477,7 +18569,7 @@ var Tour = forwardRef82(({
18477
18569
  id,
18478
18570
  ...props
18479
18571
  }, ref) => {
18480
- const generatedId = useId18();
18572
+ const generatedId = useId19();
18481
18573
  const rootId = id ?? generatedId;
18482
18574
  const [internalOpen, setInternalOpen] = useState56(defaultOpen);
18483
18575
  const [internalCurrent, setInternalCurrent] = useState56(defaultCurrent);
@@ -18491,7 +18583,7 @@ var Tour = forwardRef82(({
18491
18583
  const maskConfig = getMaskConfig(mergedMask);
18492
18584
  const hasMask = mergedMask !== false;
18493
18585
  const [targetRect, setTargetRect] = useState56(fallbackRect);
18494
- useEffect30(() => {
18586
+ useEffect31(() => {
18495
18587
  if (!visible)
18496
18588
  return;
18497
18589
  const target = resolveTarget(step?.target);
@@ -19560,7 +19652,7 @@ TreeSelect.SHOW_ALL = SHOW_ALL;
19560
19652
  TreeSelect.SHOW_PARENT = SHOW_PARENT;
19561
19653
  TreeSelect.SHOW_CHILD = SHOW_CHILD;
19562
19654
  // src/components/typography/Typography.tsx
19563
- import React90, { forwardRef as forwardRef85, useEffect as useEffect31, useMemo as useMemo35, useRef as useRef26, useState as useState59 } from "react";
19655
+ import React90, { forwardRef as forwardRef85, useEffect as useEffect32, useMemo as useMemo35, useRef as useRef27, useState as useState59 } from "react";
19564
19656
 
19565
19657
  // src/classes/typography.ts
19566
19658
  var typographyBaseClass = "typography markdown-body";
@@ -19745,12 +19837,12 @@ function EditableContent({
19745
19837
  sourceText,
19746
19838
  children
19747
19839
  }) {
19748
- const textareaRef = useRef26(null);
19840
+ const textareaRef = useRef27(null);
19749
19841
  const isControlled = editable?.editing !== undefined;
19750
19842
  const [internalEditing, setInternalEditing] = useState59(false);
19751
19843
  const [draft, setDraft] = useState59(editable?.text ?? sourceText);
19752
19844
  const editing = editable ? editable.editing ?? internalEditing : false;
19753
- useEffect31(() => {
19845
+ useEffect32(() => {
19754
19846
  if (editing) {
19755
19847
  textareaRef.current?.focus();
19756
19848
  }
@@ -20350,7 +20442,7 @@ var Markdown = forwardRef86(function Markdown({
20350
20442
  });
20351
20443
  });
20352
20444
  // src/components/upload/Upload.tsx
20353
- import React92, { forwardRef as forwardRef87, useLayoutEffect as useLayoutEffect7, useRef as useRef27, useState as useState60 } from "react";
20445
+ import React92, { forwardRef as forwardRef87, useLayoutEffect as useLayoutEffect7, useRef as useRef28, useState as useState60 } from "react";
20354
20446
 
20355
20447
  // src/classes/upload.ts
20356
20448
  var uploadBaseClass = "file-upload";
@@ -20450,12 +20542,12 @@ function UploadRoot({
20450
20542
  dragger,
20451
20543
  ...props
20452
20544
  }, ref) {
20453
- const inputRef = useRef27(null);
20545
+ const inputRef = useRef28(null);
20454
20546
  const [dragover, setDragover] = useState60(false);
20455
20547
  const [internalFileList, setInternalFileList] = useState60(() => defaultFileList.map(ensureUid));
20456
20548
  const controlled = fileList !== undefined;
20457
20549
  const mergedFileList = (controlled ? fileList : internalFileList).map(ensureUid);
20458
- const currentFileListRef = useRef27(mergedFileList);
20550
+ const currentFileListRef = useRef28(mergedFileList);
20459
20551
  useLayoutEffect7(() => {
20460
20552
  currentFileListRef.current = mergedFileList;
20461
20553
  }, [mergedFileList]);