urfu-ui-kit-react 2.1.7-next.2 → 2.1.7-next.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.
Files changed (34) hide show
  1. package/README.md +2 -2
  2. package/dist/components/Calendar/Calendar.d.ts.map +1 -1
  3. package/dist/components/Calendar/Calendar.js +226 -205
  4. package/dist/components/Calendar/Calendar.types.d.ts +19 -0
  5. package/dist/components/Calendar/Calendar.types.d.ts.map +1 -1
  6. package/dist/components/ErrorScreen/ErrorScreen.js +117 -115
  7. package/dist/components/SearchSelect/SearchSelect.d.ts.map +1 -1
  8. package/dist/components/SearchSelect/SearchSelect.js +162 -152
  9. package/dist/components/Table/Filter/FilterStringBox.js +8 -8
  10. package/dist/components/Table/Filter/useFilterOptionsPreload.js +2 -2
  11. package/dist/components/Table/Table.types.d.ts +1 -1
  12. package/dist/components/Table/Table.types.d.ts.map +1 -1
  13. package/dist/components/Tabs/Tabs.d.ts.map +1 -1
  14. package/dist/components/Tabs/Tabs.js +34 -33
  15. package/dist/components/Tabs/distributeTabs.d.ts +7 -3
  16. package/dist/components/Tabs/distributeTabs.d.ts.map +1 -1
  17. package/dist/components/Tabs/useTabsOverflow.d.ts +4 -0
  18. package/dist/components/Tabs/useTabsOverflow.d.ts.map +1 -1
  19. package/dist/components/Tabs/useTabsOverflow.js +40 -41
  20. package/dist/dev/index.js +2 -2
  21. package/dist/index.d.ts +5 -3
  22. package/dist/index.d.ts.map +1 -1
  23. package/dist/shared/kitCopy.js +1 -1
  24. package/dist/style-no-fonts.css +1 -1
  25. package/dist/style.css +1 -1
  26. package/dist/style.layer.css +2 -2
  27. package/dist/style.shell.css +2 -2
  28. package/dist/urfu-ui-kit-react.js +10 -9
  29. package/dist/utils/describeError.d.ts +27 -0
  30. package/dist/utils/describeError.d.ts.map +1 -1
  31. package/dist/vanilla/core/dateLimits.js +21 -0
  32. package/dist/vanilla/core/describeError.js +44 -39
  33. package/dist/vanilla/core/distributeTabs.js +36 -23
  34. package/package.json +1 -1
@@ -3,20 +3,20 @@ import { jsxs as a, jsx as r } from "react/jsx-runtime";
3
3
  /* empty css */
4
4
  /* empty css */
5
5
  /* empty css */
6
- import { useState as x, useRef as p, useEffect as D, Fragment as ee } from "react";
6
+ import { useState as D, useRef as p, useEffect as ee, Fragment as oe } from "react";
7
7
  import { Icon$u as b } from "../Icon/Icon.js";
8
- import { Tooltip$u as oe } from "../Tooltip/Tooltip.js";
9
- import { useDismiss$u as te } from "../../hooks/useDismiss.js";
10
- import { useMountTransition$u as re } from "../../hooks/useMountTransition.js";
11
- import { getPopupTransitionStyle$u as ne, POPUP_TRANSITION_MS$u as se } from "../../shared/popupTransition.js";
12
- import { useTabsOverflow$u as ie } from "./useTabsOverflow.js";
13
- import { useTabsIndicator$u as le } from "./useTabsIndicator.js";
14
- import { useTabsScroll$u as ae } from "./useTabsScroll.js";
15
- import { useAutoId$u as ce } from "../../hooks/useAutoId.js";
16
- import { isPlainLeftClick$u as ue } from "../../vanilla/core/linkClick.js";
17
- const me = [], Se = ({
8
+ import { Tooltip$u as te } from "../Tooltip/Tooltip.js";
9
+ import { useDismiss$u as re } from "../../hooks/useDismiss.js";
10
+ import { useMountTransition$u as ne } from "../../hooks/useMountTransition.js";
11
+ import { getPopupTransitionStyle$u as se, POPUP_TRANSITION_MS$u as ie } from "../../shared/popupTransition.js";
12
+ import { useTabsOverflow$u as le } from "./useTabsOverflow.js";
13
+ import { useTabsIndicator$u as ae } from "./useTabsIndicator.js";
14
+ import { useTabsScroll$u as ce } from "./useTabsScroll.js";
15
+ import { useAutoId$u as ue } from "../../hooks/useAutoId.js";
16
+ import { isPlainLeftClick$u as me } from "../../vanilla/core/linkClick.js";
17
+ const de = [], Se = ({
18
18
  onClick: h,
19
- tabsData: n = me,
19
+ tabsData: n = de,
20
20
  activeTab: m,
21
21
  className: w = "",
22
22
  variant: g = "line",
@@ -26,29 +26,29 @@ const me = [], Se = ({
26
26
  LinkComponent: $,
27
27
  ariaLabel: B
28
28
  }) => {
29
- const { containerRef: K, measureRef: j, moreMeasureRef: q, visible: z, overflow: u, paddingOf: F, promote: L } = ie(n, m, y, g !== "segment"), [d, c] = x(!1), R = p(null), N = p(null), k = p(null), A = ce(void 0, "u-tabs-menu"), { shouldRender: H, status: J, isAnimated: Y } = re({ isOpen: d, duration: se }), O = p(u);
29
+ const { containerRef: K, measureRef: j, moreMeasureRef: q, visible: z, overflow: u, paddingOf: F, morePadding: L, promote: H } = le(n, m, y, g !== "segment"), [d, c] = D(!1), R = p(null), N = p(null), k = p(null), A = ue(void 0, "u-tabs-menu"), { shouldRender: J, status: Y, isAnimated: G } = ne({ isOpen: d, duration: ie }), O = p(u);
30
30
  d && (O.current = u);
31
- const f = g === "segment", T = n.some((e) => e.url), v = f ? "u-tab-segment" : "u-tab-line", G = f ? "u-tab-segment-active" : "u-tab-active", { trackRef: I, indicatorRef: Q } = le(m, `${g}|${y}|${JSON.stringify(n.map((e) => e.id))}`);
32
- ae(I, !f, m), te({ refs: [R], enabled: d, onDismiss: () => c(!1) }), D(() => {
31
+ const f = g === "segment", T = n.some((e) => e.url), v = f ? "u-tab-segment" : "u-tab-line", Q = f ? "u-tab-segment-active" : "u-tab-active", { trackRef: I, indicatorRef: V } = ae(m, `${g}|${y}|${JSON.stringify(n.map((e) => e.id))}`);
32
+ ce(I, !f, m), re({ refs: [R], enabled: d, onDismiss: () => c(!1) }), ee(() => {
33
33
  u.length || c(!1);
34
34
  }, [u.length]);
35
- const S = (e) => {
35
+ const P = (e) => {
36
36
  var t, s;
37
37
  if ((t = n[e]) != null && t.disabled) return;
38
38
  const o = u.includes(e);
39
- L(e), c(!1), h == null || h(n[e]), o && ((s = N.current) == null || s.focus({ preventScroll: !0 }));
40
- }, P = () => {
39
+ H(e), c(!1), h == null || h(n[e]), o && ((s = N.current) == null || s.focus({ preventScroll: !0 }));
40
+ }, S = () => {
41
41
  var e;
42
42
  return Array.from(((e = k.current) == null ? void 0 : e.querySelectorAll('[role="menuitem"]:not([aria-disabled="true"])')) || []);
43
- }, V = (e) => {
43
+ }, X = (e) => {
44
44
  var t;
45
- const o = P();
45
+ const o = S();
46
46
  (t = o[e < 0 ? o.length - 1 : e]) == null || t.focus();
47
- }, X = (e) => {
47
+ }, Z = (e) => {
48
48
  var i, l;
49
- const o = P(), t = o.indexOf(document.activeElement), s = e.key === "ArrowDown" ? (t + 1) % o.length : e.key === "ArrowUp" ? (t - 1 + o.length) % o.length : e.key === "Home" ? 0 : e.key === "End" ? o.length - 1 : -1;
49
+ const o = S(), t = o.indexOf(document.activeElement), s = e.key === "ArrowDown" ? (t + 1) % o.length : e.key === "ArrowUp" ? (t - 1 + o.length) % o.length : e.key === "Home" ? 0 : e.key === "End" ? o.length - 1 : -1;
50
50
  s >= 0 ? (e.preventDefault(), (i = o[s]) == null || i.focus()) : e.key === "Escape" && (e.preventDefault(), c(!1), (l = N.current) == null || l.focus());
51
- }, M = (e) => /* @__PURE__ */ r("span", { className: "u-tabs-title", "data-label": e.title, children: e.title }), Z = (e) => {
51
+ }, M = (e) => /* @__PURE__ */ r("span", { className: "u-tabs-title", "data-label": e.title, children: e.title }), W = (e) => {
52
52
  if (!e.icon) return M(e);
53
53
  const o = e.iconPosition === "right";
54
54
  return /* @__PURE__ */ a("span", { className: `u-tabs-content${o ? " u-tabs-content-reverse" : ""}`, children: [
@@ -58,16 +58,16 @@ const me = [], Se = ({
58
58
  }, C = (e, o, t, s = !1) => {
59
59
  const i = n[e];
60
60
  if (!i.url)
61
- return /* @__PURE__ */ r("button", { type: "button", ...o, onClick: s ? void 0 : () => S(e), children: t });
61
+ return /* @__PURE__ */ r("button", { type: "button", ...o, onClick: s ? void 0 : () => P(e), children: t });
62
62
  if (s || i.disabled)
63
63
  return /* @__PURE__ */ r("a", { ...o, role: o.role ?? (s ? void 0 : "link"), children: t });
64
- const l = (W) => {
65
- ue(W) && S(e);
64
+ const l = (x) => {
65
+ me(x) && P(e);
66
66
  };
67
67
  return $ ? /* @__PURE__ */ r($, { to: i.url, ...o, onClick: l, children: t }) : /* @__PURE__ */ r("a", { href: i.url, ...o, onClick: l, children: t });
68
68
  }, E = (e, o = !1) => {
69
69
  const t = n[e], s = !!(t.icon && t.iconOnly), i = t.icon ? s ? " u-tab-icon-only" : ` u-tab-with-icon${t.iconPosition === "right" ? " u-tab-icon-right" : ""}` : "", l = C(e, {
70
- className: `${v}${i}${t.id === m ? ` ${G}` : ""}${t.disabled ? " u-tab--disabled" : ""}`,
70
+ className: `${v}${i}${t.id === m ? ` ${Q}` : ""}${t.disabled ? " u-tab--disabled" : ""}`,
71
71
  "data-label": s ? void 0 : t.title,
72
72
  "aria-label": s ? t.title : void 0,
73
73
  "data-measure-tab": o ? "" : void 0,
@@ -78,8 +78,8 @@ const me = [], Se = ({
78
78
  tabIndex: o || t.disabled ? -1 : void 0,
79
79
  "aria-current": !o && t.id === m ? "page" : void 0,
80
80
  "aria-disabled": !o && t.disabled ? "true" : void 0
81
- }, Z(t), o);
82
- return /* @__PURE__ */ r("div", { className: "u-tabs-item", children: U && !_ && !o ? /* @__PURE__ */ r(oe, { tooltipText: t.title, portalOn: !0, className: "u-tabs-tooltip", children: l }) : l }, e);
81
+ }, W(t), o);
82
+ return /* @__PURE__ */ r("div", { className: "u-tabs-item", children: U && !_ && !o ? /* @__PURE__ */ r(te, { tooltipText: t.title, portalOn: !0, className: "u-tabs-tooltip", children: l }) : l }, e);
83
83
  };
84
84
  return /* @__PURE__ */ a(
85
85
  T ? "nav" : "div",
@@ -89,14 +89,14 @@ const me = [], Se = ({
89
89
  "aria-label": T ? B : void 0,
90
90
  children: [
91
91
  /* @__PURE__ */ a("div", { className: "u-tabs-track", ref: I, children: [
92
- /* @__PURE__ */ r("span", { className: "u-tabs-indicator", ref: Q, "aria-hidden": "true" }),
92
+ /* @__PURE__ */ r("span", { className: "u-tabs-indicator", ref: V, "aria-hidden": "true" }),
93
93
  z.map((e) => E(e)),
94
94
  u.length > 0 && /* @__PURE__ */ a(
95
95
  "div",
96
96
  {
97
97
  className: "u-tabs-more",
98
98
  ref: R,
99
- onKeyDown: X,
99
+ onKeyDown: Z,
100
100
  onBlur: (e) => {
101
101
  const o = e.relatedTarget;
102
102
  o && !e.currentTarget.contains(o) && c(!1);
@@ -108,12 +108,13 @@ const me = [], Se = ({
108
108
  type: "button",
109
109
  ref: N,
110
110
  className: `${v} u-tabs-more-trigger`,
111
+ style: L(),
111
112
  "aria-expanded": d,
112
113
  "aria-haspopup": "menu",
113
114
  "aria-controls": A,
114
115
  onClick: () => c((e) => !e),
115
116
  onKeyDown: (e) => {
116
- (e.key === "ArrowDown" || e.key === "ArrowUp") && (e.preventDefault(), e.stopPropagation(), c(!0), requestAnimationFrame(() => V(e.key === "ArrowUp" ? -1 : 0)));
117
+ (e.key === "ArrowDown" || e.key === "ArrowUp") && (e.preventDefault(), e.stopPropagation(), c(!0), requestAnimationFrame(() => X(e.key === "ArrowUp" ? -1 : 0)));
117
118
  },
118
119
  children: [
119
120
  /* @__PURE__ */ r("span", { children: "Ещё" }),
@@ -121,7 +122,7 @@ const me = [], Se = ({
121
122
  ]
122
123
  }
123
124
  ),
124
- H && /* @__PURE__ */ r("div", { className: "u-tabs-more-menu", role: "menu", id: A, ref: k, style: ne(J, Y), children: O.current.filter((e) => n[e]).map((e) => /* @__PURE__ */ r(ee, { children: C(e, {
125
+ J && /* @__PURE__ */ r("div", { className: "u-tabs-more-menu", role: "menu", id: A, ref: k, style: se(Y, G), children: O.current.filter((e) => n[e]).map((e) => /* @__PURE__ */ r(oe, { children: C(e, {
125
126
  role: "menuitem",
126
127
  "aria-disabled": n[e].disabled ? "true" : void 0,
127
128
  tabIndex: n[e].disabled ? -1 : void 0
@@ -3,8 +3,11 @@ export declare const TAB_PADDING_MIN_RATIO = 0.4;
3
3
  /**
4
4
  * Насколько ужать отступы видимых вкладок: 0 — не ужимать, 1 — до предела.
5
5
  * Ровно столько, чтобы вкладки вместе с «Ещё» поместились в контейнер.
6
+ * `moreCut` — на сколько можно сузить кнопку «Ещё» за счёт её боковых отступов: она ужимается так же,
7
+ * как вкладки, иначе в ряду вкладки с узкими отступами, а «Ещё» с полными.
8
+ * `fullWidth` — колонки равные по самой широкой вкладке; ужимаем, пока она не влезает в колонку.
6
9
  */
7
- export declare const tabsSqueeze: (visible: number[], widths: number[], cuts: number[], availableWidth: number, gap: number, moreWidth: number, withMore: boolean) => number;
10
+ export declare const tabsSqueeze: (visible: number[], widths: number[], cuts: number[], availableWidth: number, gap: number, moreWidth: number, withMore: boolean, moreCut?: number, fullWidth?: boolean) => number;
8
11
  /**
9
12
  * Ужатие отступов линейных вкладок: они не прячутся в «Ещё», а прокручиваются (tabsScroll.ts).
10
13
  * Ужимаем, только если так помещаются все; не помещаются и ужатыми — обычные отступы и прокрутка,
@@ -13,11 +16,12 @@ export declare const tabsSqueeze: (visible: number[], widths: number[], cuts: nu
13
16
  export declare const lineTabsSqueeze: (order: number[], widths: number[], cuts: number[], availableWidth: number, gap: number) => number;
14
17
  /**
15
18
  * Индексы сохраняют порядок и исходные объекты tabsData, включая дополнительные поля.
16
- * `cuts` — на сколько каждую вкладку можно сузить за счёт боковых отступов. Прежде чем прятать
19
+ * `cuts` — на сколько каждую вкладку можно сузить за счёт боковых отступов, `moreCut` — то же для кнопки «Ещё».
20
+ * В fullWidth колонки равные: их ширина — по самой широкой вкладке с ужатыми отступами. Прежде чем прятать
17
21
  * вкладку в «Ещё», проверяем, не помещаются ли все с ужатыми отступами: иначе «Ещё» появлялась,
18
22
  * когда не хватало пары пикселей, а в меню оказывалась одна вкладка.
19
23
  */
20
- export declare const distributeTabs: (order: number[], widths: number[], availableWidth: number, gap: number, moreWidth: number, activeIndex: number, fullWidth?: boolean, cuts?: number[]) => {
24
+ export declare const distributeTabs: (order: number[], widths: number[], availableWidth: number, gap: number, moreWidth: number, activeIndex: number, fullWidth?: boolean, cuts?: number[], moreCut?: number) => {
21
25
  visible: number[];
22
26
  overflow: number[];
23
27
  };
@@ -1 +1 @@
1
- {"version":3,"file":"distributeTabs.d.ts","sourceRoot":"","sources":["../../../src/components/Tabs/distributeTabs.ts"],"names":[],"mappings":"AAAA,yGAAyG;AACzG,eAAO,MAAM,qBAAqB,MAAM,CAAC;AAEzC;;;GAGG;AACH,eAAO,MAAM,WAAW,GACtB,SAAS,MAAM,EAAE,EACjB,QAAQ,MAAM,EAAE,EAChB,MAAM,MAAM,EAAE,EACd,gBAAgB,MAAM,EACtB,KAAK,MAAM,EACX,WAAW,MAAM,EACjB,UAAU,OAAO,WAUlB,CAAC;AAEF;;;;GAIG;AACH,eAAO,MAAM,eAAe,GAAI,OAAO,MAAM,EAAE,EAAE,QAAQ,MAAM,EAAE,EAAE,MAAM,MAAM,EAAE,EAAE,gBAAgB,MAAM,EAAE,KAAK,MAAM,WAGrH,CAAC;AAEF;;;;;GAKG;AACH,eAAO,MAAM,cAAc,GACzB,OAAO,MAAM,EAAE,EACf,QAAQ,MAAM,EAAE,EAChB,gBAAgB,MAAM,EACtB,KAAK,MAAM,EACX,WAAW,MAAM,EACjB,aAAa,MAAM,EACnB,mBAAiB,EACjB,OAAM,MAAM,EAAO;;cAcwB,MAAM,EAAE;CAsBpD,CAAC"}
1
+ {"version":3,"file":"distributeTabs.d.ts","sourceRoot":"","sources":["../../../src/components/Tabs/distributeTabs.ts"],"names":[],"mappings":"AAAA,yGAAyG;AACzG,eAAO,MAAM,qBAAqB,MAAM,CAAC;AAEzC;;;;;;GAMG;AACH,eAAO,MAAM,WAAW,GACtB,SAAS,MAAM,EAAE,EACjB,QAAQ,MAAM,EAAE,EAChB,MAAM,MAAM,EAAE,EACd,gBAAgB,MAAM,EACtB,KAAK,MAAM,EACX,WAAW,MAAM,EACjB,UAAU,OAAO,EACjB,gBAAW,EACX,mBAAiB,WA4BlB,CAAC;AAEF;;;;GAIG;AACH,eAAO,MAAM,eAAe,GAAI,OAAO,MAAM,EAAE,EAAE,QAAQ,MAAM,EAAE,EAAE,MAAM,MAAM,EAAE,EAAE,gBAAgB,MAAM,EAAE,KAAK,MAAM,WAGrH,CAAC;AAEF;;;;;;GAMG;AACH,eAAO,MAAM,cAAc,GACzB,OAAO,MAAM,EAAE,EACf,QAAQ,MAAM,EAAE,EAChB,gBAAgB,MAAM,EACtB,KAAK,MAAM,EACX,WAAW,MAAM,EACjB,aAAa,MAAM,EACnB,mBAAiB,EACjB,OAAM,MAAM,EAAO,EACnB,gBAAW;;cAegC,MAAM,EAAE;CAsBpD,CAAC"}
@@ -6,6 +6,10 @@ scroll: boolean) => {
6
6
  paddingLeft: number;
7
7
  paddingRight: number;
8
8
  };
9
+ morePadding: () => {
10
+ paddingLeft: number;
11
+ paddingRight: number;
12
+ };
9
13
  promote: (index: number) => void;
10
14
  visible: number[];
11
15
  overflow: number[];
@@ -1 +1 @@
1
- {"version":3,"file":"useTabsOverflow.d.ts","sourceRoot":"","sources":["../../../src/components/Tabs/useTabsOverflow.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,cAAc,CAAC;AAGvD,eAAO,MAAM,eAAe,GAC1B,MAAM,kBAAkB,EAAE,EAC1B,WAAW,MAAM,GAAG,MAAM,GAAG,SAAS,EACtC,WAAW,OAAO;AAClB,+GAA+G;AAC/G,QAAQ,OAAO;uBAoEW,MAAM;;;;qBAOR,MAAM;;;;;;CAY/B,CAAC"}
1
+ {"version":3,"file":"useTabsOverflow.d.ts","sourceRoot":"","sources":["../../../src/components/Tabs/useTabsOverflow.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,cAAc,CAAC;AAGvD,eAAO,MAAM,eAAe,GAC1B,MAAM,kBAAkB,EAAE,EAC1B,WAAW,MAAM,GAAG,MAAM,GAAG,SAAS,EACtC,WAAW,OAAO;AAClB,+GAA+G;AAC/G,QAAQ,OAAO;uBA+EW,MAAM;;;;;;;;qBAIR,MAAM;;;;;;CAY/B,CAAC"}
@@ -1,49 +1,48 @@
1
- import { useRef as O, useState as q, useCallback as P, useLayoutEffect as D } from "react";
2
- import { TAB_PADDING_MIN_RATIO$u as B, distributeTabs$u as G, lineTabsSqueeze$u as k, tabsSqueeze$u as J } from "../../vanilla/core/distributeTabs.js";
3
- const U = (l, N, u, b) => {
4
- const g = O(null), m = O(null), L = O(null), h = JSON.stringify(l.map((t) => t.id)), S = l.map((t, e) => e), [z, T] = q({ signature: h, order: S }), p = z.signature === h ? z.order : S, [r, _] = q({ widths: [], paddings: [], available: 0, gap: 0, more: 0 }), o = P(() => {
5
- var x;
6
- const t = g.current, e = m.current;
7
- if (!t || !e) return;
8
- const n = getComputedStyle(t), a = t.getBoundingClientRect().width - (Number.parseFloat(n.borderLeftWidth) || 0) - (Number.parseFloat(n.borderRightWidth) || 0) - (Number.parseFloat(n.paddingLeft) || 0) - (Number.parseFloat(n.paddingRight) || 0), s = Array.from(e.querySelectorAll("[data-measure-tab]")), v = s.map((i) => i.getBoundingClientRect().width), R = s.map((i) => {
9
- const c = getComputedStyle(i);
10
- return [Number.parseFloat(c.paddingLeft) || 0, Number.parseFloat(c.paddingRight) || 0];
11
- }), f = {
12
- widths: v,
13
- paddings: R,
1
+ import { useRef as O, useState as _, useCallback as k, useLayoutEffect as J } from "react";
2
+ import { TAB_PADDING_MIN_RATIO$u as L, distributeTabs$u as j, lineTabsSqueeze$u as H, tabsSqueeze$u as K } from "../../vanilla/core/distributeTabs.js";
3
+ const Z = (u, F, p, f) => {
4
+ const b = O(null), h = O(null), z = O(null), v = JSON.stringify(u.map((e) => e.id)), C = u.map((e, t) => t), [S, M] = _({ signature: v, order: C }), w = S.signature === v ? S.order : C, [n, D] = _({ widths: [], paddings: [], available: 0, gap: 0, more: 0, morePadding: [0, 0] }), o = k(() => {
5
+ const e = b.current, t = h.current;
6
+ if (!e || !t) return;
7
+ const r = getComputedStyle(e), a = e.getBoundingClientRect().width - (Number.parseFloat(r.borderLeftWidth) || 0) - (Number.parseFloat(r.borderRightWidth) || 0) - (Number.parseFloat(r.paddingLeft) || 0) - (Number.parseFloat(r.paddingRight) || 0), i = Array.from(t.querySelectorAll("[data-measure-tab]")), P = i.map((d) => d.getBoundingClientRect().width), N = i.map((d) => {
8
+ const l = getComputedStyle(d);
9
+ return [Number.parseFloat(l.paddingLeft) || 0, Number.parseFloat(l.paddingRight) || 0];
10
+ }), m = z.current, c = m ? getComputedStyle(m) : null, g = {
11
+ widths: P,
12
+ paddings: N,
14
13
  available: a,
15
- gap: Number.parseFloat(n.columnGap || "0") || 0,
16
- more: ((x = L.current) == null ? void 0 : x.getBoundingClientRect().width) || 0
14
+ gap: Number.parseFloat(r.columnGap || "0") || 0,
15
+ more: (m == null ? void 0 : m.getBoundingClientRect().width) || 0,
16
+ morePadding: [Number.parseFloat((c == null ? void 0 : c.paddingLeft) ?? "") || 0, Number.parseFloat((c == null ? void 0 : c.paddingRight) ?? "") || 0]
17
17
  };
18
- _((i) => i.available === f.available && i.gap === f.gap && i.more === f.more && i.widths.length === v.length && i.widths.every((c, y) => c === v[y]) && i.paddings.every(([c, y], A) => {
19
- var E, I;
20
- return c === ((E = R[A]) == null ? void 0 : E[0]) && y === ((I = R[A]) == null ? void 0 : I[1]);
21
- }) ? i : f);
18
+ D((d) => d.available === g.available && d.gap === g.gap && d.more === g.more && d.morePadding[0] === g.morePadding[0] && d.morePadding[1] === g.morePadding[1] && d.widths.length === P.length && d.widths.every((l, y) => l === P[y]) && d.paddings.every(([l, y], B) => {
19
+ var E, T;
20
+ return l === ((E = N[B]) == null ? void 0 : E[0]) && y === ((T = N[B]) == null ? void 0 : T[1]);
21
+ }) ? d : g);
22
22
  }, []);
23
- D(() => {
24
- var n, a;
23
+ J(() => {
24
+ var r, a;
25
25
  o();
26
- let t = !1;
27
- const e = typeof ResizeObserver > "u" ? null : new ResizeObserver(o);
28
- return g.current && (e == null || e.observe(g.current)), m.current && (e == null || e.observe(m.current)), window.addEventListener("resize", o), (n = document.fonts) == null || n.addEventListener("loadingdone", o), (a = document.fonts) == null || a.ready.then(() => {
29
- t || o();
26
+ let e = !1;
27
+ const t = typeof ResizeObserver > "u" ? null : new ResizeObserver(o);
28
+ return b.current && (t == null || t.observe(b.current)), h.current && (t == null || t.observe(h.current)), window.addEventListener("resize", o), (r = document.fonts) == null || r.addEventListener("loadingdone", o), (a = document.fonts) == null || a.ready.then(() => {
29
+ e || o();
30
30
  }), () => {
31
- var s;
32
- t = !0, e == null || e.disconnect(), window.removeEventListener("resize", o), (s = document.fonts) == null || s.removeEventListener("loadingdone", o);
31
+ var i;
32
+ e = !0, t == null || t.disconnect(), window.removeEventListener("resize", o), (i = document.fonts) == null || i.removeEventListener("loadingdone", o);
33
33
  };
34
- }, [o, l, u, b]);
35
- const M = N === void 0 ? -1 : l.findIndex((t) => t.id === N), F = r.widths.length === l.length && r.widths.every((t) => t > 0), w = u ? [] : r.paddings.map(([t, e]) => (t + e) * (1 - B)), d = F && !b ? G(p, r.widths, r.available, r.gap, r.more, M, u, w) : { visible: p, overflow: [] }, C = !F || u ? 0 : b ? k(p, r.widths, w, r.available, r.gap) : J(d.visible, r.widths, w, r.available, r.gap, r.more, d.overflow.length > 0);
36
- return { containerRef: g, measureRef: m, moreMeasureRef: L, ...d, paddingOf: (t) => {
37
- const e = r.paddings[t];
38
- if (!C || !e) return;
39
- const n = 1 - C * (1 - B);
40
- return { paddingLeft: e[0] * n, paddingRight: e[1] * n };
41
- }, promote: (t) => {
42
- if (!d.overflow.includes(t)) return;
43
- const e = d.visible[d.visible.length - 1];
44
- if (e === void 0) return;
45
- const n = [...p], a = n.indexOf(t), s = n.indexOf(e);
46
- [n[a], n[s]] = [n[s], n[a]], T({ signature: h, order: n });
34
+ }, [o, u, p, f]);
35
+ const G = F === void 0 ? -1 : u.findIndex((e) => e.id === F), q = n.widths.length === u.length && n.widths.every((e) => e > 0), R = n.paddings.map(([e, t]) => (e + t) * (1 - L)), x = (n.morePadding[0] + n.morePadding[1]) * (1 - L), s = q && !f ? j(w, n.widths, n.available, n.gap, n.more, G, p, R, x) : { visible: w, overflow: [] }, A = !q || p && f ? 0 : f ? H(w, n.widths, R, n.available, n.gap) : K(s.visible, n.widths, R, n.available, n.gap, n.more, s.overflow.length > 0, x, p), I = (e) => {
36
+ if (!A || !e) return;
37
+ const t = 1 - A * (1 - L);
38
+ return { paddingLeft: e[0] * t, paddingRight: e[1] * t };
39
+ };
40
+ return { containerRef: b, measureRef: h, moreMeasureRef: z, ...s, paddingOf: (e) => I(n.paddings[e]), morePadding: () => I(n.morePadding), promote: (e) => {
41
+ if (!s.overflow.includes(e)) return;
42
+ const t = s.visible[s.visible.length - 1];
43
+ if (t === void 0) return;
44
+ const r = [...w], a = r.indexOf(e), i = r.indexOf(t);
45
+ [r[a], r[i]] = [r[i], r[a]], M({ signature: v, order: r });
47
46
  } };
48
47
  };
49
- export { U as useTabsOverflow$u };
48
+ export { Z as useTabsOverflow$u };