@lax-wp/design-system 0.13.33 → 0.13.34
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/components/button/Button.cjs.js +5 -5
- package/dist/components/button/Button.cjs.js.map +1 -1
- package/dist/components/button/Button.es.js +18 -18
- package/dist/components/button/Button.es.js.map +1 -1
- package/dist/components/button/IconButton.cjs.js +1 -1
- package/dist/components/button/IconButton.cjs.js.map +1 -1
- package/dist/components/button/IconButton.es.js +8 -8
- package/dist/components/button/IconButton.es.js.map +1 -1
- package/dist/components/buttons/option-button/OptionButton.cjs.js +1 -1
- package/dist/components/buttons/option-button/OptionButton.cjs.js.map +1 -1
- package/dist/components/buttons/option-button/OptionButton.es.js +1 -1
- package/dist/components/buttons/option-button/OptionButton.es.js.map +1 -1
- package/dist/components/data-display/comparison/components/Header.cjs.js +1 -1
- package/dist/components/data-display/comparison/components/Header.cjs.js.map +1 -1
- package/dist/components/data-display/comparison/components/Header.es.js +13 -13
- package/dist/components/data-display/comparison/components/Header.es.js.map +1 -1
- package/dist/components/data-display/infinite-table/body/cell/DataCell.cjs.js +1 -1
- package/dist/components/data-display/infinite-table/body/cell/DataCell.cjs.js.map +1 -1
- package/dist/components/data-display/infinite-table/body/cell/DataCell.es.js +1 -1
- package/dist/components/data-display/infinite-table/body/cell/DataCell.es.js.map +1 -1
- package/dist/components/data-display/infinite-table/body/rows/index.cjs.js +1 -1
- package/dist/components/data-display/infinite-table/body/rows/index.cjs.js.map +1 -1
- package/dist/components/data-display/infinite-table/body/rows/index.es.js +104 -101
- package/dist/components/data-display/infinite-table/body/rows/index.es.js.map +1 -1
- package/dist/components/data-display/infinite-table/constants.cjs.js +1 -1
- package/dist/components/data-display/infinite-table/constants.cjs.js.map +1 -1
- package/dist/components/data-display/infinite-table/constants.d.ts +6 -0
- package/dist/components/data-display/infinite-table/constants.es.js +17 -16
- package/dist/components/data-display/infinite-table/constants.es.js.map +1 -1
- package/dist/components/data-display/infinite-table/index.cjs.js +1 -1
- package/dist/components/data-display/infinite-table/index.cjs.js.map +1 -1
- package/dist/components/data-display/infinite-table/index.es.js +188 -187
- package/dist/components/data-display/infinite-table/index.es.js.map +1 -1
- package/dist/components/data-display/infinite-table/useRowHeight.cjs.js +2 -0
- package/dist/components/data-display/infinite-table/useRowHeight.cjs.js.map +1 -0
- package/dist/components/data-display/infinite-table/useRowHeight.d.ts +15 -0
- package/dist/components/data-display/infinite-table/useRowHeight.es.js +24 -0
- package/dist/components/data-display/infinite-table/useRowHeight.es.js.map +1 -0
- package/dist/components/data-display/tag/Tag.cjs.js +1 -1
- package/dist/components/data-display/tag/Tag.cjs.js.map +1 -1
- package/dist/components/data-display/tag/Tag.es.js +11 -9
- package/dist/components/data-display/tag/Tag.es.js.map +1 -1
- package/dist/components/floating-bar/FloatingBar.cjs.js +1 -1
- package/dist/components/floating-bar/FloatingBar.cjs.js.map +1 -1
- package/dist/components/floating-bar/FloatingBar.es.js +9 -9
- package/dist/components/floating-bar/FloatingBar.es.js.map +1 -1
- package/dist/components/forms/base-input-field/BaseInputField.cjs.js +2 -2
- package/dist/components/forms/base-input-field/BaseInputField.cjs.js.map +1 -1
- package/dist/components/forms/base-input-field/BaseInputField.es.js +40 -42
- package/dist/components/forms/base-input-field/BaseInputField.es.js.map +1 -1
- package/dist/components/forms/creatable-select/CreatableSelect.cjs.js +1 -1
- package/dist/components/forms/creatable-select/CreatableSelect.cjs.js.map +1 -1
- package/dist/components/forms/creatable-select/CreatableSelect.es.js +14 -15
- package/dist/components/forms/creatable-select/CreatableSelect.es.js.map +1 -1
- package/dist/components/forms/currency-input/CurrencyInputField.cjs.js +1 -1
- package/dist/components/forms/currency-input/CurrencyInputField.cjs.js.map +1 -1
- package/dist/components/forms/currency-input/CurrencyInputField.es.js +57 -65
- package/dist/components/forms/currency-input/CurrencyInputField.es.js.map +1 -1
- package/dist/components/forms/date-time-field/DateTimeField.cjs.js +1 -1
- package/dist/components/forms/date-time-field/DateTimeField.cjs.js.map +1 -1
- package/dist/components/forms/date-time-field/DateTimeField.es.js +33 -33
- package/dist/components/forms/date-time-field/DateTimeField.es.js.map +1 -1
- package/dist/components/forms/debounce-input/DebounceInputField.cjs.js +1 -1
- package/dist/components/forms/debounce-input/DebounceInputField.cjs.js.map +1 -1
- package/dist/components/forms/debounce-input/DebounceInputField.es.js +2 -2
- package/dist/components/forms/debounce-input/DebounceInputField.es.js.map +1 -1
- package/dist/components/forms/dynamic-data-input/DynamicDataInput.cjs.js +1 -1
- package/dist/components/forms/dynamic-data-input/DynamicDataInput.cjs.js.map +1 -1
- package/dist/components/forms/dynamic-data-input/DynamicDataInput.es.js +7 -7
- package/dist/components/forms/dynamic-data-input/DynamicDataInput.es.js.map +1 -1
- package/dist/components/forms/dynamic-data-input/DynamicDataInputField.cjs.js +1 -1
- package/dist/components/forms/dynamic-data-input/DynamicDataInputField.cjs.js.map +1 -1
- package/dist/components/forms/dynamic-data-input/DynamicDataInputField.es.js +17 -19
- package/dist/components/forms/dynamic-data-input/DynamicDataInputField.es.js.map +1 -1
- package/dist/components/forms/field-options/Item.cjs.js +1 -1
- package/dist/components/forms/field-options/Item.cjs.js.map +1 -1
- package/dist/components/forms/field-options/Item.es.js +5 -5
- package/dist/components/forms/field-options/Item.es.js.map +1 -1
- package/dist/components/forms/formula-input/FormulaInput.cjs.js +1 -1
- package/dist/components/forms/formula-input/FormulaInput.cjs.js.map +1 -1
- package/dist/components/forms/formula-input/FormulaInput.es.js +10 -10
- package/dist/components/forms/formula-input/FormulaInput.es.js.map +1 -1
- package/dist/components/forms/icon-picker/IconPicker.cjs.js +1 -1
- package/dist/components/forms/icon-picker/IconPicker.cjs.js.map +1 -1
- package/dist/components/forms/icon-picker/IconPicker.es.js +42 -57
- package/dist/components/forms/icon-picker/IconPicker.es.js.map +1 -1
- package/dist/components/forms/input-field/InputField.cjs.js.map +1 -1
- package/dist/components/forms/input-field/InputField.es.js.map +1 -1
- package/dist/components/forms/master-data-input/MasterDataInputField.cjs.js +1 -1
- package/dist/components/forms/master-data-input/MasterDataInputField.cjs.js.map +1 -1
- package/dist/components/forms/master-data-input/MasterDataInputField.es.js +54 -60
- package/dist/components/forms/master-data-input/MasterDataInputField.es.js.map +1 -1
- package/dist/components/forms/md-input/RichMarkdownInput.cjs.js +3 -3
- package/dist/components/forms/md-input/RichMarkdownInput.cjs.js.map +1 -1
- package/dist/components/forms/md-input/RichMarkdownInput.es.js +63 -63
- package/dist/components/forms/md-input/RichMarkdownInput.es.js.map +1 -1
- package/dist/components/forms/number-input-field/NumberInputField.cjs.js +1 -1
- package/dist/components/forms/number-input-field/NumberInputField.cjs.js.map +1 -1
- package/dist/components/forms/number-input-field/NumberInputField.es.js +5 -5
- package/dist/components/forms/number-input-field/NumberInputField.es.js.map +1 -1
- package/dist/components/forms/percentage-input/PercentageInputField.cjs.js +2 -2
- package/dist/components/forms/percentage-input/PercentageInputField.cjs.js.map +1 -1
- package/dist/components/forms/percentage-input/PercentageInputField.es.js +20 -20
- package/dist/components/forms/percentage-input/PercentageInputField.es.js.map +1 -1
- package/dist/components/forms/search-bar/SearchBar.cjs.js +1 -1
- package/dist/components/forms/search-bar/SearchBar.cjs.js.map +1 -1
- package/dist/components/forms/search-bar/SearchBar.es.js +16 -16
- package/dist/components/forms/search-bar/SearchBar.es.js.map +1 -1
- package/dist/components/forms/select-field/SelectField.cjs.js +2 -2
- package/dist/components/forms/select-field/SelectField.cjs.js.map +1 -1
- package/dist/components/forms/select-field/SelectField.d.ts +4 -0
- package/dist/components/forms/select-field/SelectField.es.js +202 -203
- package/dist/components/forms/select-field/SelectField.es.js.map +1 -1
- package/dist/components/forms/text-area-field/TextAreaField.cjs.js +1 -1
- package/dist/components/forms/text-area-field/TextAreaField.cjs.js.map +1 -1
- package/dist/components/forms/text-area-field/TextAreaField.es.js +14 -14
- package/dist/components/forms/text-area-field/TextAreaField.es.js.map +1 -1
- package/dist/components/forms/toggle/Toggle.cjs.js +1 -1
- package/dist/components/forms/toggle/Toggle.cjs.js.map +1 -1
- package/dist/components/forms/toggle/Toggle.es.js +65 -59
- package/dist/components/forms/toggle/Toggle.es.js.map +1 -1
- package/dist/components/navigation/accordion/Accordion.cjs.js +1 -1
- package/dist/components/navigation/accordion/Accordion.cjs.js.map +1 -1
- package/dist/components/navigation/accordion/Accordion.es.js +5 -5
- package/dist/components/navigation/accordion/Accordion.es.js.map +1 -1
- package/dist/components/navigation/stepper/Stepper.cjs.js +1 -1
- package/dist/components/navigation/stepper/Stepper.cjs.js.map +1 -1
- package/dist/components/navigation/stepper/Stepper.es.js +1 -1
- package/dist/components/navigation/stepper/Stepper.es.js.map +1 -1
- package/dist/components/navigation/tabs/TabOptions.cjs.js +1 -1
- package/dist/components/navigation/tabs/TabOptions.cjs.js.map +1 -1
- package/dist/components/navigation/tabs/TabOptions.es.js +15 -15
- package/dist/components/navigation/tabs/TabOptions.es.js.map +1 -1
- package/dist/components/navigation/tabs/TabSwitch.cjs.js +1 -1
- package/dist/components/navigation/tabs/TabSwitch.cjs.js.map +1 -1
- package/dist/components/navigation/tabs/TabSwitch.es.js +7 -7
- package/dist/components/navigation/tabs/TabSwitch.es.js.map +1 -1
- package/dist/components/navigation/tabs/Tabs.cjs.js +1 -1
- package/dist/components/navigation/tabs/Tabs.cjs.js.map +1 -1
- package/dist/components/navigation/tabs/Tabs.es.js +1 -1
- package/dist/components/navigation/tabs/Tabs.es.js.map +1 -1
- package/dist/components/tooltip/Tooltip.cjs.js +1 -1
- package/dist/components/tooltip/Tooltip.cjs.js.map +1 -1
- package/dist/components/tooltip/Tooltip.es.js +19 -19
- package/dist/components/tooltip/Tooltip.es.js.map +1 -1
- package/dist/components/user-avatar/UserAvatar.cjs.js +1 -1
- package/dist/components/user-avatar/UserAvatar.cjs.js.map +1 -1
- package/dist/components/user-avatar/UserAvatar.d.ts +1 -1
- package/dist/components/user-avatar/UserAvatar.es.js +40 -38
- package/dist/components/user-avatar/UserAvatar.es.js.map +1 -1
- package/dist/components/user-avatar/constants.cjs.js +1 -1
- package/dist/components/user-avatar/constants.cjs.js.map +1 -1
- package/dist/components/user-avatar/constants.d.ts +1 -0
- package/dist/components/user-avatar/constants.es.js +10 -9
- package/dist/components/user-avatar/constants.es.js.map +1 -1
- package/dist/design-system.css +1 -1
- package/package.json +2 -3
|
@@ -1,71 +1,74 @@
|
|
|
1
|
-
import { jsx as l, jsxs as
|
|
2
|
-
import { escapeRegExp as
|
|
3
|
-
import { useTableConfig as
|
|
4
|
-
import { CustomScrollbar as
|
|
5
|
-
import { useRef as
|
|
6
|
-
import { VariableSizeList as
|
|
7
|
-
import { TableContext as
|
|
8
|
-
import { Row as
|
|
9
|
-
|
|
10
|
-
|
|
1
|
+
import { jsx as l, jsxs as G } from "react/jsx-runtime";
|
|
2
|
+
import { escapeRegExp as J } from "../../../../../utils/table.es.js";
|
|
3
|
+
import { useTableConfig as P } from "../../../../../providers/design-system-provider/hooks.es.js";
|
|
4
|
+
import { CustomScrollbar as K } from "../../../../layout/CustomScrollbar.es.js";
|
|
5
|
+
import { useRef as u, useContext as Q, useEffect as y, useCallback as p, forwardRef as X, useState as Z } from "react";
|
|
6
|
+
import { VariableSizeList as ee } from "react-window";
|
|
7
|
+
import { TableContext as te } from "../../context.es.js";
|
|
8
|
+
import { Row as re } from "./row.es.js";
|
|
9
|
+
import { useRowHeight as ne, getRowSlotHeight as se } from "../../useRowHeight.es.js";
|
|
10
|
+
const ce = ({ onScroll: s, forwardedRef: c, style: a, children: g, dispatchEvent: f }) => {
|
|
11
|
+
const [h, _] = Z(null), d = p(
|
|
11
12
|
(m) => {
|
|
12
|
-
const
|
|
13
|
-
if (
|
|
14
|
-
const
|
|
15
|
-
|
|
13
|
+
const E = m;
|
|
14
|
+
if (E) {
|
|
15
|
+
const S = E.getInstance;
|
|
16
|
+
_(S), c(S?.view ?? E.view ?? null);
|
|
16
17
|
} else
|
|
17
18
|
c(null);
|
|
18
19
|
},
|
|
19
20
|
[c]
|
|
20
21
|
);
|
|
21
|
-
return
|
|
22
|
-
|
|
23
|
-
}, [
|
|
24
|
-
},
|
|
25
|
-
const a =
|
|
26
|
-
return /* @__PURE__ */ l(
|
|
27
|
-
}),
|
|
28
|
-
const
|
|
29
|
-
tableWrapper:
|
|
30
|
-
tableBodyWrapper:
|
|
22
|
+
return y(() => {
|
|
23
|
+
h && f && f("SET_SCROLLBAR_REF_FOR_INFINITY_TABLE", { scrollbarsInstance: h });
|
|
24
|
+
}, [h, f]), /* @__PURE__ */ l(K, { ref: d, style: { ...a, overflow: "hidden" }, onScroll: s, renderViewClassName: "!h-[calc(100%+5px)]", children: g });
|
|
25
|
+
}, oe = X((s, c) => {
|
|
26
|
+
const a = P();
|
|
27
|
+
return /* @__PURE__ */ l(ce, { ...s, forwardedRef: c, dispatchEvent: a?.dispatchEvent });
|
|
28
|
+
}), me = ({ rows: s, prepareRow: c, isLoading: a, onScroll: g, columns: f, width: h, height: _, onScrolling: d, level: m = 0, allowAstarSearch: E = !1 }) => {
|
|
29
|
+
const S = u(null), x = u(null), C = P(), {
|
|
30
|
+
tableWrapper: V,
|
|
31
|
+
tableBodyWrapper: j,
|
|
31
32
|
search: o,
|
|
32
33
|
expandedRows: R,
|
|
33
|
-
setActiveInlineEdit:
|
|
34
|
-
activeInlineEdit:
|
|
35
|
-
closeCurrencyDropdown:
|
|
36
|
-
currencyDropdownConfig:
|
|
37
|
-
} =
|
|
38
|
-
|
|
39
|
-
if (
|
|
40
|
-
return
|
|
34
|
+
setActiveInlineEdit: L,
|
|
35
|
+
activeInlineEdit: O,
|
|
36
|
+
closeCurrencyDropdown: W,
|
|
37
|
+
currencyDropdownConfig: $
|
|
38
|
+
} = Q(te), w = u(C);
|
|
39
|
+
w.current = C, y(() => {
|
|
40
|
+
if (w.current?.onEvent)
|
|
41
|
+
return w.current.onEvent("SET_SCROLLBAR_REF_FOR_INFINITY_TABLE", (e) => {
|
|
41
42
|
const { scrollbarsInstance: t } = e;
|
|
42
|
-
|
|
43
|
+
S.current = t;
|
|
43
44
|
});
|
|
44
45
|
}, [C?.onEvent]);
|
|
45
|
-
const I =
|
|
46
|
-
|
|
47
|
-
if (
|
|
48
|
-
return
|
|
46
|
+
const I = u(null);
|
|
47
|
+
y(() => {
|
|
48
|
+
if (w.current?.onEvent)
|
|
49
|
+
return w.current.onEvent("SCROLL_TO_TABLE_ROW", (e) => {
|
|
49
50
|
const { rowIndex: t } = e;
|
|
50
51
|
I.current && typeof t == "number" && I.current.scrollToItem(t, "center");
|
|
51
52
|
});
|
|
52
53
|
}, [C?.onEvent]);
|
|
53
|
-
const
|
|
54
|
-
|
|
54
|
+
const T = u({}), D = ne(), b = se(D), A = u(b);
|
|
55
|
+
A.current = b;
|
|
56
|
+
const N = p((e, t) => 0, [R]), k = p(() => {
|
|
57
|
+
const e = { ...T.current };
|
|
55
58
|
for (const t of s) {
|
|
56
|
-
const
|
|
57
|
-
if (R[
|
|
58
|
-
const
|
|
59
|
-
e[t.index] =
|
|
59
|
+
const r = t.original.id;
|
|
60
|
+
if (R[r]?.isOpen) {
|
|
61
|
+
const v = N(r, 0);
|
|
62
|
+
e[t.index] = b * (v + 1);
|
|
60
63
|
} else
|
|
61
|
-
e[t.index] =
|
|
64
|
+
e[t.index] = b * 1;
|
|
62
65
|
}
|
|
63
|
-
|
|
64
|
-
}, [R, s,
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
}, [
|
|
68
|
-
const
|
|
66
|
+
T.current = e, I.current?.resetAfterIndex(0);
|
|
67
|
+
}, [R, s, N, b]);
|
|
68
|
+
y(() => {
|
|
69
|
+
k();
|
|
70
|
+
}, [k]);
|
|
71
|
+
const M = p((e) => T.current[e] || A.current, []), z = p(
|
|
69
72
|
(e) => {
|
|
70
73
|
a || e && (x.current && x.current.disconnect(), x.current = new IntersectionObserver(
|
|
71
74
|
(t) => {
|
|
@@ -75,93 +78,93 @@ const ee = ({ onScroll: s, forwardedRef: c, style: a, children: g, dispatchEvent
|
|
|
75
78
|
), x.current.observe(e));
|
|
76
79
|
},
|
|
77
80
|
[a, g, s.length]
|
|
78
|
-
),
|
|
81
|
+
), Y = (e) => e.split(/(<span[^>]*>.*?<\/span>)/g).map((t, r) => {
|
|
79
82
|
if (t.startsWith("<span")) {
|
|
80
|
-
const
|
|
81
|
-
return /* @__PURE__ */ l("span", { className: "bg-yellow-300 dark:bg-primary-100 dark:text-black-900", children:
|
|
83
|
+
const n = t.replace(/<[^>]+>/g, "");
|
|
84
|
+
return /* @__PURE__ */ l("span", { className: "bg-yellow-300 dark:bg-primary-100 dark:text-black-900", children: n }, r);
|
|
82
85
|
}
|
|
83
|
-
return /* @__PURE__ */ l("span", { children: t },
|
|
84
|
-
}),
|
|
86
|
+
return /* @__PURE__ */ l("span", { children: t }, r);
|
|
87
|
+
}), B = p((e) => {
|
|
85
88
|
if (!o || !e || typeof e != "string" && typeof e != "number") return e;
|
|
86
|
-
const t =
|
|
89
|
+
const t = J(o);
|
|
87
90
|
if (o.includes("*")) {
|
|
88
|
-
const
|
|
89
|
-
let
|
|
91
|
+
const r = o.replace(/[.+?^${}()|[\]\\]/g, "\\$&");
|
|
92
|
+
let n;
|
|
90
93
|
if (o.startsWith("*") && o.endsWith("*")) {
|
|
91
|
-
const i =
|
|
92
|
-
|
|
94
|
+
const i = r.slice(1, -1).replace(/\*/g, ".*");
|
|
95
|
+
n = new RegExp(`(${i})`, "gi");
|
|
93
96
|
} else if (o.startsWith("*")) {
|
|
94
|
-
const i =
|
|
95
|
-
|
|
97
|
+
const i = r.slice(1).replace(/\*/g, ".*");
|
|
98
|
+
n = new RegExp(`(${i})$`, "gi");
|
|
96
99
|
} else if (o.endsWith("*")) {
|
|
97
|
-
const i =
|
|
98
|
-
|
|
100
|
+
const i = r.slice(0, -1).replace(/\*/g, ".*");
|
|
101
|
+
n = new RegExp(`^(${i})`, "gi");
|
|
99
102
|
} else {
|
|
100
|
-
const i =
|
|
101
|
-
|
|
103
|
+
const i = r.replace(/\*/g, ".*");
|
|
104
|
+
n = new RegExp(`^(${i})$`, "gi");
|
|
102
105
|
}
|
|
103
|
-
const
|
|
104
|
-
return /* @__PURE__ */ l("span", { children:
|
|
106
|
+
const v = e?.toString().replace(n, (i) => `<span class="highlight">${i}</span>`);
|
|
107
|
+
return /* @__PURE__ */ l("span", { children: Y(v) });
|
|
105
108
|
} else {
|
|
106
|
-
const
|
|
107
|
-
return /* @__PURE__ */
|
|
108
|
-
|
|
109
|
-
/* @__PURE__ */ l("span", { className: "bg-yellow-300 dark:bg-primary-100 dark:text-black-900", children:
|
|
110
|
-
|
|
109
|
+
const r = new RegExp(`(${t?.trim()})`, "gi"), n = e?.toString()?.split(r);
|
|
110
|
+
return /* @__PURE__ */ G("span", { className: "overflow-clip text-ellipsis", children: [
|
|
111
|
+
n[0],
|
|
112
|
+
/* @__PURE__ */ l("span", { className: "bg-yellow-300 dark:bg-primary-100 dark:text-black-900", children: n[1] }),
|
|
113
|
+
n?.slice(2)?.join("")
|
|
111
114
|
] });
|
|
112
115
|
}
|
|
113
|
-
}, [o]),
|
|
116
|
+
}, [o]), q = p(
|
|
114
117
|
({ index: e, style: t }) => {
|
|
115
|
-
const
|
|
116
|
-
if (!
|
|
117
|
-
const
|
|
118
|
-
return c(
|
|
119
|
-
|
|
118
|
+
const r = s[e];
|
|
119
|
+
if (!r) return /* @__PURE__ */ l("span", { children: "Loading" });
|
|
120
|
+
const n = !a && e >= s.length - 6;
|
|
121
|
+
return c(r), /* @__PURE__ */ l(
|
|
122
|
+
re,
|
|
120
123
|
{
|
|
121
|
-
row:
|
|
122
|
-
isLastRow:
|
|
123
|
-
lastRow:
|
|
124
|
+
row: r,
|
|
125
|
+
isLastRow: n,
|
|
126
|
+
lastRow: z,
|
|
124
127
|
prepareRow: c,
|
|
125
|
-
highlightSubstring:
|
|
128
|
+
highlightSubstring: B,
|
|
126
129
|
index: e,
|
|
127
130
|
style: t,
|
|
128
131
|
rowsLength: s.length,
|
|
129
|
-
level: m ||
|
|
132
|
+
level: m || r?.original?.__level,
|
|
130
133
|
columns: f,
|
|
131
134
|
expandedRows: R,
|
|
132
135
|
rows: s
|
|
133
136
|
}
|
|
134
137
|
);
|
|
135
138
|
},
|
|
136
|
-
[f, s, a,
|
|
137
|
-
),
|
|
138
|
-
|
|
139
|
-
const
|
|
140
|
-
|
|
141
|
-
const
|
|
139
|
+
[f, s, a, z, c, R, B, m]
|
|
140
|
+
), F = u(O);
|
|
141
|
+
F.current = O;
|
|
142
|
+
const H = u(!!$);
|
|
143
|
+
H.current = !!$;
|
|
144
|
+
const U = p(
|
|
142
145
|
(e) => {
|
|
143
|
-
e.scrollUpdateWasRequested || (
|
|
146
|
+
e.scrollUpdateWasRequested || (F.current && L?.(null), H.current && W?.()), d && d(e);
|
|
144
147
|
},
|
|
145
|
-
[
|
|
148
|
+
[d, L, W]
|
|
146
149
|
);
|
|
147
150
|
return /* @__PURE__ */ l(
|
|
148
|
-
|
|
151
|
+
ee,
|
|
149
152
|
{
|
|
150
|
-
outerElementType:
|
|
151
|
-
width:
|
|
152
|
-
height:
|
|
153
|
+
outerElementType: oe,
|
|
154
|
+
width: h - 2,
|
|
155
|
+
height: _ - 2,
|
|
153
156
|
ref: I,
|
|
154
|
-
innerElementType: m ?
|
|
157
|
+
innerElementType: m ? j : V,
|
|
155
158
|
itemCount: s.length,
|
|
156
|
-
itemSize:
|
|
159
|
+
itemSize: M,
|
|
157
160
|
layout: "vertical",
|
|
158
161
|
overscanCount: 20,
|
|
159
|
-
onScroll:
|
|
160
|
-
children:
|
|
162
|
+
onScroll: U,
|
|
163
|
+
children: q
|
|
161
164
|
}
|
|
162
165
|
);
|
|
163
166
|
};
|
|
164
167
|
export {
|
|
165
|
-
|
|
168
|
+
me as Rows
|
|
166
169
|
};
|
|
167
170
|
//# sourceMappingURL=index.es.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.es.js","sources":["../../../../../../src/components/data-display/infinite-table/body/rows/index.tsx"],"sourcesContent":["import { escapeRegExp } from '../../../../../utils/table';\nimport { useTableConfig } from '../../../../../providers/design-system-provider/hooks';\nimport { CustomScrollbar } from '../../../../layout/CustomScrollbar';\nimport React, { forwardRef, useCallback, useContext, useEffect, useRef, useState } from 'react';\nimport { VariableSizeList } from 'react-window';\nimport type { ListOnScrollProps } from 'react-window';\n\nimport { TableContext } from '../../context';\nimport { Row } from './row';\n\ninterface TableRow {\n original: Record<string, unknown>;\n index: number;\n [key: string]: unknown;\n}\n\ninterface CustomScrollbarsProps {\n onScroll?: (e: React.UIEvent) => void;\n forwardedRef: (node: HTMLElement | null) => void;\n style?: React.CSSProperties;\n children?: React.ReactNode;\n dispatchEvent?: (eventName: string, payload: Record<string, unknown>) => void;\n}\n\nconst CustomScrollbars = ({ onScroll, forwardedRef, style, children, dispatchEvent }: CustomScrollbarsProps) => {\n const [scrollbarsInstance, setScrollbarInstance] = useState<unknown>(null);\n const refSetter = useCallback(\n (scrollbarsRef: unknown) => {\n const ref = scrollbarsRef as { getInstance?: { view?: HTMLElement }; view?: HTMLElement } | null;\n if (ref) {\n const instance = ref.getInstance;\n setScrollbarInstance(instance);\n forwardedRef(instance?.view ?? ref.view ?? null);\n } else {\n forwardedRef(null);\n }\n },\n [forwardedRef],\n );\n\n useEffect(() => {\n if (scrollbarsInstance && dispatchEvent) {\n dispatchEvent('SET_SCROLLBAR_REF_FOR_INFINITY_TABLE', { scrollbarsInstance });\n }\n }, [scrollbarsInstance, dispatchEvent]);\n\n return (\n <CustomScrollbar ref={refSetter} style={{ ...style, overflow: 'hidden' }} onScroll={onScroll} renderViewClassName='!h-[calc(100%+5px)]'>\n {children}\n </CustomScrollbar>\n );\n};\n\nconst CustomScrollbarsVirtualList = forwardRef((props: Record<string, unknown>, ref: React.Ref<HTMLElement>) => {\n const tableConfig = useTableConfig();\n return <CustomScrollbars {...(props as unknown as CustomScrollbarsProps)} forwardedRef={ref as (node: HTMLElement | null) => void} dispatchEvent={tableConfig?.dispatchEvent} />;\n});\n\ninterface RowsProps {\n rows: TableRow[];\n prepareRow: (row: TableRow) => void;\n isLoading: boolean;\n onScroll?: () => void;\n columns: unknown[];\n width: number;\n height: number;\n onScrolling?: (value: ListOnScrollProps) => void;\n level?: number;\n allowAstarSearch?: boolean;\n}\n\nexport const Rows = ({ rows, prepareRow, isLoading, onScroll, columns, width, height, onScrolling, level = 0, allowAstarSearch = false }: RowsProps) => {\n void allowAstarSearch;\n const scrollbarRef = useRef<unknown>(null);\n const observer = useRef<IntersectionObserver | null>(null);\n const tableConfig = useTableConfig();\n const {\n tableWrapper,\n tableBodyWrapper,\n search,\n expandedRows,\n setActiveInlineEdit,\n activeInlineEdit,\n closeCurrencyDropdown,\n currencyDropdownConfig,\n } = useContext(TableContext);\n\n const tableConfigRef = useRef(tableConfig);\n tableConfigRef.current = tableConfig;\n\n useEffect(() => {\n if (!tableConfigRef.current?.onEvent) return;\n return tableConfigRef.current.onEvent('SET_SCROLLBAR_REF_FOR_INFINITY_TABLE', (payload: unknown) => {\n const { scrollbarsInstance } = payload as { scrollbarsInstance: unknown };\n scrollbarRef.current = scrollbarsInstance;\n });\n }, [tableConfig?.onEvent]);\n\n const listRef = useRef<VariableSizeList>(null);\n\n useEffect(() => {\n if (!tableConfigRef.current?.onEvent) return;\n return tableConfigRef.current.onEvent('SCROLL_TO_TABLE_ROW', (payload: unknown) => {\n const { rowIndex } = payload as { rowIndex: number };\n if (listRef.current && typeof rowIndex === 'number') {\n listRef.current.scrollToItem(rowIndex, 'center');\n }\n });\n }, [tableConfig?.onEvent]);\n\n const sizeMap = useRef<Record<number, number>>({});\n\n const calculateRowHeightWithChildren = useCallback((rowId: string | number, rowCounts: number): number => {\n return 0;\n\n const children = expandedRows[rowId];\n if (!children?.isOpen) return rowCounts;\n if (children?.isOpen) {\n rowCounts += children.data.length;\n for (const child of children.data) {\n rowCounts = calculateRowHeightWithChildren(child.id, rowCounts);\n }\n }\n return rowCounts;\n }, [expandedRows]);\n\n const setMultipleRowSize = useCallback(() => {\n const newSizeMap: Record<number, number> = { ...sizeMap.current };\n\n for (const row of rows) {\n const rowId = row.original.id as string | number;\n const children = expandedRows[rowId];\n if (children?.isOpen) {\n const additionalRowCounts = calculateRowHeightWithChildren(rowId, 0);\n newSizeMap[row.index] = (40 + 1) * (additionalRowCounts + 1);\n } else {\n newSizeMap[row.index] = (40 + 1) * 1;\n }\n }\n\n sizeMap.current = newSizeMap;\n listRef.current?.resetAfterIndex(0);\n }, [expandedRows, rows, calculateRowHeightWithChildren]);\n\n useEffect(() => {\n setMultipleRowSize();\n }, [setMultipleRowSize]);\n\n const getSize = useCallback((index: number) => {\n return sizeMap.current[index] || 40 + 1;\n }, []);\n\n const lastRow = useCallback(\n (node: HTMLElement | null) => {\n if (isLoading) return;\n if (!node) return;\n if (observer.current) observer.current.disconnect();\n observer.current = new IntersectionObserver(\n (entries) => {\n if (entries[0].isIntersecting) {\n if (onScroll) onScroll();\n }\n },\n { threshold: 0.00001 },\n );\n observer.current.observe(node);\n },\n [isLoading, onScroll, rows.length],\n );\n\n const parseString = (input: string) =>\n input.split(/(<span[^>]*>.*?<\\/span>)/g).map((segment: string, index: number) => {\n if (segment.startsWith('<span')) {\n const value = segment.replace(/<[^>]+>/g, '');\n return (\n <span key={index} className='bg-yellow-300 dark:bg-primary-100 dark:text-black-900'>\n {value}\n </span>\n );\n }\n return <span key={index}>{segment}</span>;\n });\n\n const highlightSubstring = useCallback((value: string | number | null | undefined): JSX.Element | string | number | null | undefined => {\n if (!search) return value;\n if (!value || (typeof value !== 'string' && typeof value !== 'number')) return value;\n const escapedSearch = escapeRegExp(search);\n\n if (search.includes('*')) {\n const escapedPattern = search.replace(/[.+?^${}()|[\\]\\\\]/g, '\\\\$&');\n let regex;\n if (search.startsWith('*') && search.endsWith('*')) {\n const middlePattern = escapedPattern.slice(1, -1).replace(/\\*/g, '.*');\n regex = new RegExp(`(${middlePattern})`, 'gi');\n } else if (search.startsWith('*')) {\n const endPattern = escapedPattern.slice(1).replace(/\\*/g, '.*');\n regex = new RegExp(`(${endPattern})$`, 'gi');\n } else if (search.endsWith('*')) {\n const startPattern = escapedPattern.slice(0, -1).replace(/\\*/g, '.*');\n regex = new RegExp(`^(${startPattern})`, 'gi');\n } else {\n const exactPattern = escapedPattern.replace(/\\*/g, '.*');\n regex = new RegExp(`^(${exactPattern})$`, 'gi');\n }\n\n const highlightedText = value?.toString().replace(regex, (match) => `<span class=\"highlight\">${match}</span>`);\n return <span>{parseString(highlightedText)}</span>;\n } else {\n const regex = new RegExp(`(${escapedSearch?.trim()})`, 'gi');\n const searchValue = value?.toString()?.split(regex);\n return (\n <span className='overflow-clip text-ellipsis'>\n {searchValue[0]}\n <span className='bg-yellow-300 dark:bg-primary-100 dark:text-black-900'>{searchValue[1]}</span>\n {searchValue?.slice(2)?.join('')}\n </span>\n );\n }\n }, [search]);\n\n const RenderRow = useCallback(\n ({ index, style }: { index: number; style: React.CSSProperties }) => {\n const row = rows[index];\n if (!row) return <span>Loading</span>;\n const isLastRow = !isLoading && index >= rows.length - 6;\n prepareRow(row);\n\n return (\n <Row\n {...({\n row,\n isLastRow,\n lastRow,\n prepareRow,\n highlightSubstring,\n index,\n style,\n rowsLength: rows.length,\n level: level || row?.original?.__level,\n columns,\n expandedRows,\n rows,\n } as unknown as React.ComponentProps<typeof Row>)}\n />\n );\n },\n [columns, rows, isLoading, lastRow, prepareRow, expandedRows, highlightSubstring, level],\n );\n\n const activeInlineEditRef = useRef(activeInlineEdit);\n activeInlineEditRef.current = activeInlineEdit;\n\n const currencyDropdownOpenRef = useRef(!!currencyDropdownConfig);\n currencyDropdownOpenRef.current = !!currencyDropdownConfig;\n\n const handleScroll = useCallback(\n (value: ListOnScrollProps) => {\n if (!value.scrollUpdateWasRequested) {\n if (activeInlineEditRef.current) setActiveInlineEdit?.(null);\n if (currencyDropdownOpenRef.current) closeCurrencyDropdown?.();\n }\n if (onScrolling) onScrolling(value);\n },\n [onScrolling, setActiveInlineEdit, closeCurrencyDropdown],\n );\n\n return (\n <VariableSizeList\n outerElementType={CustomScrollbarsVirtualList}\n width={width - 2}\n height={height - 2}\n ref={listRef}\n innerElementType={level ? tableBodyWrapper : tableWrapper}\n itemCount={rows.length}\n itemSize={getSize}\n layout='vertical'\n overscanCount={20}\n onScroll={handleScroll}\n >\n {RenderRow}\n </VariableSizeList>\n );\n};\n"],"names":["CustomScrollbars","onScroll","forwardedRef","style","children","dispatchEvent","scrollbarsInstance","setScrollbarInstance","useState","refSetter","useCallback","scrollbarsRef","ref","instance","useEffect","jsx","CustomScrollbar","CustomScrollbarsVirtualList","forwardRef","props","tableConfig","useTableConfig","Rows","rows","prepareRow","isLoading","columns","width","height","onScrolling","level","allowAstarSearch","scrollbarRef","useRef","observer","tableWrapper","tableBodyWrapper","search","expandedRows","setActiveInlineEdit","activeInlineEdit","closeCurrencyDropdown","currencyDropdownConfig","useContext","TableContext","tableConfigRef","payload","listRef","rowIndex","sizeMap","calculateRowHeightWithChildren","rowId","rowCounts","setMultipleRowSize","newSizeMap","row","additionalRowCounts","getSize","index","lastRow","node","entries","parseString","input","segment","value","highlightSubstring","escapedSearch","escapeRegExp","escapedPattern","regex","middlePattern","endPattern","startPattern","exactPattern","highlightedText","match","searchValue","jsxs","RenderRow","isLastRow","Row","activeInlineEditRef","currencyDropdownOpenRef","handleScroll","VariableSizeList"],"mappings":";;;;;;;;AAwBA,MAAMA,KAAmB,CAAC,EAAE,UAAAC,GAAU,cAAAC,GAAc,OAAAC,GAAO,UAAAC,GAAU,eAAAC,QAA2C;AAC9G,QAAM,CAACC,GAAoBC,CAAoB,IAAIC,EAAkB,IAAI,GACnEC,IAAYC;AAAA,IAChB,CAACC,MAA2B;AAC1B,YAAMC,IAAMD;AACZ,UAAIC,GAAK;AACP,cAAMC,IAAWD,EAAI;AACrB,QAAAL,EAAqBM,CAAQ,GAC7BX,EAAaW,GAAU,QAAQD,EAAI,QAAQ,IAAI;AAAA,MACjD;AACE,QAAAV,EAAa,IAAI;AAAA,IAErB;AAAA,IACA,CAACA,CAAY;AAAA,EAAA;AAGf,SAAAY,EAAU,MAAM;AACd,IAAIR,KAAsBD,KACxBA,EAAc,wCAAwC,EAAE,oBAAAC,GAAoB;AAAA,EAEhF,GAAG,CAACA,GAAoBD,CAAa,CAAC,GAGpC,gBAAAU,EAACC,GAAA,EAAgB,KAAKP,GAAW,OAAO,EAAE,GAAGN,GAAO,UAAU,SAAA,GAAY,UAAAF,GAAoB,qBAAoB,uBAC/G,UAAAG,GACH;AAEJ,GAEMa,KAA8BC,EAAW,CAACC,GAAgCP,MAAgC;AAC9G,QAAMQ,IAAcC,EAAA;AACpB,SAAO,gBAAAN,EAACf,MAAkB,GAAImB,GAA4C,cAAcP,GAA2C,eAAeQ,GAAa,eAAe;AAChL,CAAC,GAeYE,KAAO,CAAC,EAAE,MAAAC,GAAM,YAAAC,GAAY,WAAAC,GAAW,UAAAxB,GAAU,SAAAyB,GAAS,OAAAC,GAAO,QAAAC,GAAQ,aAAAC,GAAa,OAAAC,IAAQ,GAAG,kBAAAC,IAAmB,SAAuB;AAEtJ,QAAMC,IAAeC,EAAgB,IAAI,GACnCC,IAAWD,EAAoC,IAAI,GACnDb,IAAcC,EAAA,GACd;AAAA,IACJ,cAAAc;AAAA,IACA,kBAAAC;AAAA,IACA,QAAAC;AAAA,IACA,cAAAC;AAAA,IACA,qBAAAC;AAAA,IACA,kBAAAC;AAAA,IACA,uBAAAC;AAAA,IACA,wBAAAC;AAAA,EAAA,IACEC,EAAWC,CAAY,GAErBC,IAAiBZ,EAAOb,CAAW;AACzC,EAAAyB,EAAe,UAAUzB,GAEzBN,EAAU,MAAM;AACd,QAAK+B,EAAe,SAAS;AAC7B,aAAOA,EAAe,QAAQ,QAAQ,wCAAwC,CAACC,MAAqB;AAClG,cAAM,EAAE,oBAAAxC,MAAuBwC;AAC/B,QAAAd,EAAa,UAAU1B;AAAA,MACzB,CAAC;AAAA,EACH,GAAG,CAACc,GAAa,OAAO,CAAC;AAEzB,QAAM2B,IAAUd,EAAyB,IAAI;AAE7C,EAAAnB,EAAU,MAAM;AACd,QAAK+B,EAAe,SAAS;AAC7B,aAAOA,EAAe,QAAQ,QAAQ,uBAAuB,CAACC,MAAqB;AACjF,cAAM,EAAE,UAAAE,MAAaF;AACrB,QAAIC,EAAQ,WAAW,OAAOC,KAAa,YACzCD,EAAQ,QAAQ,aAAaC,GAAU,QAAQ;AAAA,MAEnD,CAAC;AAAA,EACH,GAAG,CAAC5B,GAAa,OAAO,CAAC;AAEzB,QAAM6B,IAAUhB,EAA+B,EAAE,GAE3CiB,IAAiCxC,EAAY,CAACyC,GAAwBC,MACnE,GAWN,CAACd,CAAY,CAAC,GAEXe,IAAqB3C,EAAY,MAAM;AAC3C,UAAM4C,IAAqC,EAAE,GAAGL,EAAQ,QAAA;AAExD,eAAWM,KAAOhC,GAAM;AACtB,YAAM4B,IAAQI,EAAI,SAAS;AAE3B,UADiBjB,EAAaa,CAAK,GACrB,QAAQ;AACpB,cAAMK,IAAsBN,EAA+BC,GAAO,CAAC;AACnE,QAAAG,EAAWC,EAAI,KAAK,IAAK,MAAWC,IAAsB;AAAA,MAC5D;AACE,QAAAF,EAAWC,EAAI,KAAK,IAAK;AAAA,IAE7B;AAEA,IAAAN,EAAQ,UAAUK,GAClBP,EAAQ,SAAS,gBAAgB,CAAC;AAAA,EACpC,GAAG,CAACT,GAAcf,GAAM2B,CAA8B,CAAC;AAEvD,EAAApC,EAAU,MAAM;AACd,IAAAuC,EAAA;AAAA,EACF,GAAG,CAACA,CAAkB,CAAC;AAEvB,QAAMI,IAAU/C,EAAY,CAACgD,MACpBT,EAAQ,QAAQS,CAAK,KAAK,IAChC,CAAA,CAAE,GAECC,IAAUjD;AAAA,IACd,CAACkD,MAA6B;AAC5B,MAAInC,KACCmC,MACD1B,EAAS,WAASA,EAAS,QAAQ,WAAA,GACvCA,EAAS,UAAU,IAAI;AAAA,QACrB,CAAC2B,MAAY;AACX,UAAIA,EAAQ,CAAC,EAAE,kBACT5D,KAAUA,EAAA;AAAA,QAElB;AAAA,QACA,EAAE,WAAW,KAAA;AAAA,MAAQ,GAEvBiC,EAAS,QAAQ,QAAQ0B,CAAI;AAAA,IAC/B;AAAA,IACA,CAACnC,GAAWxB,GAAUsB,EAAK,MAAM;AAAA,EAAA,GAG7BuC,IAAc,CAACC,MACnBA,EAAM,MAAM,2BAA2B,EAAE,IAAI,CAACC,GAAiBN,MAAkB;AAC/E,QAAIM,EAAQ,WAAW,OAAO,GAAG;AAC/B,YAAMC,IAAQD,EAAQ,QAAQ,YAAY,EAAE;AAC5C,aACE,gBAAAjD,EAAC,QAAA,EAAiB,WAAU,yDACzB,eADQ2C,CAEX;AAAA,IAEJ;AACA,WAAO,gBAAA3C,EAAC,QAAA,EAAkB,UAAAiD,EAAA,GAARN,CAAgB;AAAA,EACpC,CAAC,GAEGQ,IAAqBxD,EAAY,CAACuD,MAAgG;AAEtI,QADI,CAAC5B,KACD,CAAC4B,KAAU,OAAOA,KAAU,YAAY,OAAOA,KAAU,SAAW,QAAOA;AAC/E,UAAME,IAAgBC,EAAa/B,CAAM;AAEzC,QAAIA,EAAO,SAAS,GAAG,GAAG;AACxB,YAAMgC,IAAiBhC,EAAO,QAAQ,sBAAsB,MAAM;AAClE,UAAIiC;AACJ,UAAIjC,EAAO,WAAW,GAAG,KAAKA,EAAO,SAAS,GAAG,GAAG;AAClD,cAAMkC,IAAgBF,EAAe,MAAM,GAAG,EAAE,EAAE,QAAQ,OAAO,IAAI;AACrE,QAAAC,IAAQ,IAAI,OAAO,IAAIC,CAAa,KAAK,IAAI;AAAA,MAC/C,WAAWlC,EAAO,WAAW,GAAG,GAAG;AACjC,cAAMmC,IAAaH,EAAe,MAAM,CAAC,EAAE,QAAQ,OAAO,IAAI;AAC9D,QAAAC,IAAQ,IAAI,OAAO,IAAIE,CAAU,MAAM,IAAI;AAAA,MAC7C,WAAWnC,EAAO,SAAS,GAAG,GAAG;AAC/B,cAAMoC,IAAeJ,EAAe,MAAM,GAAG,EAAE,EAAE,QAAQ,OAAO,IAAI;AACpE,QAAAC,IAAQ,IAAI,OAAO,KAAKG,CAAY,KAAK,IAAI;AAAA,MAC/C,OAAO;AACL,cAAMC,IAAeL,EAAe,QAAQ,OAAO,IAAI;AACvD,QAAAC,IAAQ,IAAI,OAAO,KAAKI,CAAY,MAAM,IAAI;AAAA,MAChD;AAEA,YAAMC,IAAkBV,GAAO,SAAA,EAAW,QAAQK,GAAO,CAACM,MAAU,2BAA2BA,CAAK,SAAS;AAC7G,aAAO,gBAAA7D,EAAC,QAAA,EAAM,UAAA+C,EAAYa,CAAe,GAAE;AAAA,IAC7C,OAAO;AACL,YAAML,IAAQ,IAAI,OAAO,IAAIH,GAAe,KAAA,CAAM,KAAK,IAAI,GACrDU,IAAcZ,GAAO,SAAA,GAAY,MAAMK,CAAK;AAClD,aACE,gBAAAQ,EAAC,QAAA,EAAK,WAAU,+BACb,UAAA;AAAA,QAAAD,EAAY,CAAC;AAAA,0BACb,QAAA,EAAK,WAAU,yDAAyD,UAAAA,EAAY,CAAC,GAAE;AAAA,QACvFA,GAAa,MAAM,CAAC,GAAG,KAAK,EAAE;AAAA,MAAA,GACjC;AAAA,IAEJ;AAAA,EACF,GAAG,CAACxC,CAAM,CAAC,GAEL0C,IAAYrE;AAAA,IAChB,CAAC,EAAE,OAAAgD,GAAO,OAAAvD,QAA2D;AACnE,YAAMoD,IAAMhC,EAAKmC,CAAK;AACtB,UAAI,CAACH,EAAK,QAAO,gBAAAxC,EAAC,UAAK,UAAA,WAAO;AAC9B,YAAMiE,IAAY,CAACvD,KAAaiC,KAASnC,EAAK,SAAS;AACvD,aAAAC,EAAW+B,CAAG,GAGZ,gBAAAxC;AAAA,QAACkE;AAAA,QAAA;AAAA,UAEG,KAAA1B;AAAA,UACA,WAAAyB;AAAA,UACA,SAAArB;AAAA,UACA,YAAAnC;AAAA,UACA,oBAAA0C;AAAA,UACA,OAAAR;AAAA,UACA,OAAAvD;AAAA,UACA,YAAYoB,EAAK;AAAA,UACjB,OAAOO,KAASyB,GAAK,UAAU;AAAA,UAC/B,SAAA7B;AAAA,UACA,cAAAY;AAAA,UACA,MAAAf;AAAA,QACF;AAAA,MAAA;AAAA,IAGN;AAAA,IACA,CAACG,GAASH,GAAME,GAAWkC,GAASnC,GAAYc,GAAc4B,GAAoBpC,CAAK;AAAA,EAAA,GAGnFoD,IAAsBjD,EAAOO,CAAgB;AACnD,EAAA0C,EAAoB,UAAU1C;AAE9B,QAAM2C,IAA0BlD,EAAO,CAAC,CAACS,CAAsB;AAC/D,EAAAyC,EAAwB,UAAU,CAAC,CAACzC;AAEpC,QAAM0C,IAAe1E;AAAA,IACnB,CAACuD,MAA6B;AAC5B,MAAKA,EAAM,6BACLiB,EAAoB,WAAS3C,IAAsB,IAAI,GACvD4C,EAAwB,WAAS1C,IAAA,IAEnCZ,OAAyBoC,CAAK;AAAA,IACpC;AAAA,IACA,CAACpC,GAAaU,GAAqBE,CAAqB;AAAA,EAAA;AAG1D,SACE,gBAAA1B;AAAA,IAACsE;AAAA,IAAA;AAAA,MACC,kBAAkBpE;AAAA,MAClB,OAAOU,IAAQ;AAAA,MACf,QAAQC,IAAS;AAAA,MACjB,KAAKmB;AAAA,MACL,kBAAkBjB,IAAQM,IAAmBD;AAAA,MAC7C,WAAWZ,EAAK;AAAA,MAChB,UAAUkC;AAAA,MACV,QAAO;AAAA,MACP,eAAe;AAAA,MACf,UAAU2B;AAAA,MAET,UAAAL;AAAA,IAAA;AAAA,EAAA;AAGP;"}
|
|
1
|
+
{"version":3,"file":"index.es.js","sources":["../../../../../../src/components/data-display/infinite-table/body/rows/index.tsx"],"sourcesContent":["import { escapeRegExp } from '../../../../../utils/table';\nimport { useTableConfig } from '../../../../../providers/design-system-provider/hooks';\nimport { CustomScrollbar } from '../../../../layout/CustomScrollbar';\nimport React, { forwardRef, useCallback, useContext, useEffect, useRef, useState } from 'react';\nimport { VariableSizeList } from 'react-window';\nimport type { ListOnScrollProps } from 'react-window';\n\nimport { TableContext } from '../../context';\nimport { Row } from './row';\nimport { getRowSlotHeight, useRowHeight } from '../../useRowHeight';\n\ninterface TableRow {\n original: Record<string, unknown>;\n index: number;\n [key: string]: unknown;\n}\n\ninterface CustomScrollbarsProps {\n onScroll?: (e: React.UIEvent) => void;\n forwardedRef: (node: HTMLElement | null) => void;\n style?: React.CSSProperties;\n children?: React.ReactNode;\n dispatchEvent?: (eventName: string, payload: Record<string, unknown>) => void;\n}\n\nconst CustomScrollbars = ({ onScroll, forwardedRef, style, children, dispatchEvent }: CustomScrollbarsProps) => {\n const [scrollbarsInstance, setScrollbarInstance] = useState<unknown>(null);\n const refSetter = useCallback(\n (scrollbarsRef: unknown) => {\n const ref = scrollbarsRef as { getInstance?: { view?: HTMLElement }; view?: HTMLElement } | null;\n if (ref) {\n const instance = ref.getInstance;\n setScrollbarInstance(instance);\n forwardedRef(instance?.view ?? ref.view ?? null);\n } else {\n forwardedRef(null);\n }\n },\n [forwardedRef],\n );\n\n useEffect(() => {\n if (scrollbarsInstance && dispatchEvent) {\n dispatchEvent('SET_SCROLLBAR_REF_FOR_INFINITY_TABLE', { scrollbarsInstance });\n }\n }, [scrollbarsInstance, dispatchEvent]);\n\n return (\n <CustomScrollbar ref={refSetter} style={{ ...style, overflow: 'hidden' }} onScroll={onScroll} renderViewClassName='!h-[calc(100%+5px)]'>\n {children}\n </CustomScrollbar>\n );\n};\n\nconst CustomScrollbarsVirtualList = forwardRef((props: Record<string, unknown>, ref: React.Ref<HTMLElement>) => {\n const tableConfig = useTableConfig();\n return <CustomScrollbars {...(props as unknown as CustomScrollbarsProps)} forwardedRef={ref as (node: HTMLElement | null) => void} dispatchEvent={tableConfig?.dispatchEvent} />;\n});\n\ninterface RowsProps {\n rows: TableRow[];\n prepareRow: (row: TableRow) => void;\n isLoading: boolean;\n onScroll?: () => void;\n columns: unknown[];\n width: number;\n height: number;\n onScrolling?: (value: ListOnScrollProps) => void;\n level?: number;\n allowAstarSearch?: boolean;\n}\n\nexport const Rows = ({ rows, prepareRow, isLoading, onScroll, columns, width, height, onScrolling, level = 0, allowAstarSearch = false }: RowsProps) => {\n void allowAstarSearch;\n const scrollbarRef = useRef<unknown>(null);\n const observer = useRef<IntersectionObserver | null>(null);\n const tableConfig = useTableConfig();\n const {\n tableWrapper,\n tableBodyWrapper,\n search,\n expandedRows,\n setActiveInlineEdit,\n activeInlineEdit,\n closeCurrencyDropdown,\n currencyDropdownConfig,\n } = useContext(TableContext);\n\n const tableConfigRef = useRef(tableConfig);\n tableConfigRef.current = tableConfig;\n\n useEffect(() => {\n if (!tableConfigRef.current?.onEvent) return;\n return tableConfigRef.current.onEvent('SET_SCROLLBAR_REF_FOR_INFINITY_TABLE', (payload: unknown) => {\n const { scrollbarsInstance } = payload as { scrollbarsInstance: unknown };\n scrollbarRef.current = scrollbarsInstance;\n });\n }, [tableConfig?.onEvent]);\n\n const listRef = useRef<VariableSizeList>(null);\n\n useEffect(() => {\n if (!tableConfigRef.current?.onEvent) return;\n return tableConfigRef.current.onEvent('SCROLL_TO_TABLE_ROW', (payload: unknown) => {\n const { rowIndex } = payload as { rowIndex: number };\n if (listRef.current && typeof rowIndex === 'number') {\n listRef.current.scrollToItem(rowIndex, 'center');\n }\n });\n }, [tableConfig?.onEvent]);\n\n const sizeMap = useRef<Record<number, number>>({});\n\n // Row height tracks the `h-row` viewport clamp; keep a ref so `getSize` (stable\n // identity for react-window) always reads the latest measured value.\n const rowHeight = useRowHeight();\n const rowSlotHeight = getRowSlotHeight(rowHeight);\n const rowSlotHeightRef = useRef(rowSlotHeight);\n rowSlotHeightRef.current = rowSlotHeight;\n\n const calculateRowHeightWithChildren = useCallback((rowId: string | number, rowCounts: number): number => {\n return 0;\n\n const children = expandedRows[rowId];\n if (!children?.isOpen) return rowCounts;\n if (children?.isOpen) {\n rowCounts += children.data.length;\n for (const child of children.data) {\n rowCounts = calculateRowHeightWithChildren(child.id, rowCounts);\n }\n }\n return rowCounts;\n }, [expandedRows]);\n\n const setMultipleRowSize = useCallback(() => {\n const newSizeMap: Record<number, number> = { ...sizeMap.current };\n\n for (const row of rows) {\n const rowId = row.original.id as string | number;\n const children = expandedRows[rowId];\n if (children?.isOpen) {\n const additionalRowCounts = calculateRowHeightWithChildren(rowId, 0);\n newSizeMap[row.index] = rowSlotHeight * (additionalRowCounts + 1);\n } else {\n newSizeMap[row.index] = rowSlotHeight * 1;\n }\n }\n\n sizeMap.current = newSizeMap;\n listRef.current?.resetAfterIndex(0);\n }, [expandedRows, rows, calculateRowHeightWithChildren, rowSlotHeight]);\n\n useEffect(() => {\n setMultipleRowSize();\n }, [setMultipleRowSize]);\n\n const getSize = useCallback((index: number) => {\n return sizeMap.current[index] || rowSlotHeightRef.current;\n }, []);\n\n const lastRow = useCallback(\n (node: HTMLElement | null) => {\n if (isLoading) return;\n if (!node) return;\n if (observer.current) observer.current.disconnect();\n observer.current = new IntersectionObserver(\n (entries) => {\n if (entries[0].isIntersecting) {\n if (onScroll) onScroll();\n }\n },\n { threshold: 0.00001 },\n );\n observer.current.observe(node);\n },\n [isLoading, onScroll, rows.length],\n );\n\n const parseString = (input: string) =>\n input.split(/(<span[^>]*>.*?<\\/span>)/g).map((segment: string, index: number) => {\n if (segment.startsWith('<span')) {\n const value = segment.replace(/<[^>]+>/g, '');\n return (\n <span key={index} className='bg-yellow-300 dark:bg-primary-100 dark:text-black-900'>\n {value}\n </span>\n );\n }\n return <span key={index}>{segment}</span>;\n });\n\n const highlightSubstring = useCallback((value: string | number | null | undefined): JSX.Element | string | number | null | undefined => {\n if (!search) return value;\n if (!value || (typeof value !== 'string' && typeof value !== 'number')) return value;\n const escapedSearch = escapeRegExp(search);\n\n if (search.includes('*')) {\n const escapedPattern = search.replace(/[.+?^${}()|[\\]\\\\]/g, '\\\\$&');\n let regex;\n if (search.startsWith('*') && search.endsWith('*')) {\n const middlePattern = escapedPattern.slice(1, -1).replace(/\\*/g, '.*');\n regex = new RegExp(`(${middlePattern})`, 'gi');\n } else if (search.startsWith('*')) {\n const endPattern = escapedPattern.slice(1).replace(/\\*/g, '.*');\n regex = new RegExp(`(${endPattern})$`, 'gi');\n } else if (search.endsWith('*')) {\n const startPattern = escapedPattern.slice(0, -1).replace(/\\*/g, '.*');\n regex = new RegExp(`^(${startPattern})`, 'gi');\n } else {\n const exactPattern = escapedPattern.replace(/\\*/g, '.*');\n regex = new RegExp(`^(${exactPattern})$`, 'gi');\n }\n\n const highlightedText = value?.toString().replace(regex, (match) => `<span class=\"highlight\">${match}</span>`);\n return <span>{parseString(highlightedText)}</span>;\n } else {\n const regex = new RegExp(`(${escapedSearch?.trim()})`, 'gi');\n const searchValue = value?.toString()?.split(regex);\n return (\n <span className='overflow-clip text-ellipsis'>\n {searchValue[0]}\n <span className='bg-yellow-300 dark:bg-primary-100 dark:text-black-900'>{searchValue[1]}</span>\n {searchValue?.slice(2)?.join('')}\n </span>\n );\n }\n }, [search]);\n\n const RenderRow = useCallback(\n ({ index, style }: { index: number; style: React.CSSProperties }) => {\n const row = rows[index];\n if (!row) return <span>Loading</span>;\n const isLastRow = !isLoading && index >= rows.length - 6;\n prepareRow(row);\n\n return (\n <Row\n {...({\n row,\n isLastRow,\n lastRow,\n prepareRow,\n highlightSubstring,\n index,\n style,\n rowsLength: rows.length,\n level: level || row?.original?.__level,\n columns,\n expandedRows,\n rows,\n } as unknown as React.ComponentProps<typeof Row>)}\n />\n );\n },\n [columns, rows, isLoading, lastRow, prepareRow, expandedRows, highlightSubstring, level],\n );\n\n const activeInlineEditRef = useRef(activeInlineEdit);\n activeInlineEditRef.current = activeInlineEdit;\n\n const currencyDropdownOpenRef = useRef(!!currencyDropdownConfig);\n currencyDropdownOpenRef.current = !!currencyDropdownConfig;\n\n const handleScroll = useCallback(\n (value: ListOnScrollProps) => {\n if (!value.scrollUpdateWasRequested) {\n if (activeInlineEditRef.current) setActiveInlineEdit?.(null);\n if (currencyDropdownOpenRef.current) closeCurrencyDropdown?.();\n }\n if (onScrolling) onScrolling(value);\n },\n [onScrolling, setActiveInlineEdit, closeCurrencyDropdown],\n );\n\n return (\n <VariableSizeList\n outerElementType={CustomScrollbarsVirtualList}\n width={width - 2}\n height={height - 2}\n ref={listRef}\n innerElementType={level ? tableBodyWrapper : tableWrapper}\n itemCount={rows.length}\n itemSize={getSize}\n layout='vertical'\n overscanCount={20}\n onScroll={handleScroll}\n >\n {RenderRow}\n </VariableSizeList>\n );\n};\n"],"names":["CustomScrollbars","onScroll","forwardedRef","style","children","dispatchEvent","scrollbarsInstance","setScrollbarInstance","useState","refSetter","useCallback","scrollbarsRef","ref","instance","useEffect","jsx","CustomScrollbar","CustomScrollbarsVirtualList","forwardRef","props","tableConfig","useTableConfig","Rows","rows","prepareRow","isLoading","columns","width","height","onScrolling","level","allowAstarSearch","scrollbarRef","useRef","observer","tableWrapper","tableBodyWrapper","search","expandedRows","setActiveInlineEdit","activeInlineEdit","closeCurrencyDropdown","currencyDropdownConfig","useContext","TableContext","tableConfigRef","payload","listRef","rowIndex","sizeMap","rowHeight","useRowHeight","rowSlotHeight","getRowSlotHeight","rowSlotHeightRef","calculateRowHeightWithChildren","rowId","rowCounts","setMultipleRowSize","newSizeMap","row","additionalRowCounts","getSize","index","lastRow","node","entries","parseString","input","segment","value","highlightSubstring","escapedSearch","escapeRegExp","escapedPattern","regex","middlePattern","endPattern","startPattern","exactPattern","highlightedText","match","searchValue","jsxs","RenderRow","isLastRow","Row","activeInlineEditRef","currencyDropdownOpenRef","handleScroll","VariableSizeList"],"mappings":"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"}
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
"use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const _=700,T=430,O=10,L=
|
|
1
|
+
"use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const _=700,T=430,O=10,L=1,A=100,I=200,E=999999,D=5,N="cubic-bezier(0.18, 0.67, 0.6, 1.22)",R=20,C=200,S=200,F=40,t=28,o=".os-viewport",c="data-row-id",n="data-column-key",s=16,M="0px",P="-8px 0px 8px 0px rgba(255, 255, 255, 0.01)",U="-8px 0px 8px 0px rgba(0, 0, 0, 0.02)",W="28px",H="-160px",B="4px";exports.CELL_DEFAULT_RIGHT_OFFSET=M;exports.CELL_INDENT_PER_LEVEL_PX=s;exports.CELL_STICKY_SHADOW_DARK=P;exports.CELL_STICKY_SHADOW_LIGHT=U;exports.CHECKBOX_PENDING_EDITS_LEFT_OFFSET=W;exports.DATA_COLUMN_KEY_ATTR=n;exports.DATA_ROW_ID_ATTR=c;exports.DEFAULT_COLUMN_MAX_WIDTH=E;exports.DEFAULT_COLUMN_MIN_WIDTH=A;exports.DEFAULT_COLUMN_WIDTH=I;exports.DEFAULT_PAGE_SIZE=O;exports.DND_ACTIVATION_DISTANCE=D;exports.DROP_ANIMATION_DURATION=R;exports.DROP_ANIMATION_EASING=N;exports.FLOATING_BAR_TOOLTIP_MARGIN_BOTTOM=B;exports.FLOATING_BAR_TOOLTIP_MARGIN_LEFT=H;exports.OS_VIEWPORT_SELECTOR=o;exports.ROW_ADDITIONAL_ACTIONS_DEFAULT_WIDTH=F;exports.ROW_OPTIONS_COLUMN_WIDTH=t;exports.ROW_SLOT_BORDER_PX=L;exports.SCROLL_TO_CELL_COLUMN_WIDTH_FALLBACK=C;exports.SCROLL_TO_CELL_LEFT_OFFSET=S;exports.TOOLBAR_FIRST_BREAKPOINT=_;exports.TOOLBAR_SECOND_BREAKPOINT=T;
|
|
2
2
|
//# sourceMappingURL=constants.cjs.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"constants.cjs.js","sources":["../../../../src/components/data-display/infinite-table/constants.ts"],"sourcesContent":["/**\n * Shared static values for the InfiniteTable and every component under it.\n *\n * Rule for this subtree: magic numbers, timings, sizes, and meaningful string\n * literals (DOM selectors, data-attributes, CSS values used in inline styles)\n * live here with a descriptive name. Tailwind `className` strings are NOT\n * extracted — they stay inline so JIT can see them and JSX stays readable.\n */\n\n// ---------------------------------------------------------------------------\n// Responsive toolbar breakpoints (header layout collapse thresholds, in px)\n// ---------------------------------------------------------------------------\nexport const TOOLBAR_FIRST_BREAKPOINT = 700;\nexport const TOOLBAR_SECOND_BREAKPOINT = 430;\n\n// ---------------------------------------------------------------------------\n// Table defaults\n// ---------------------------------------------------------------------------\n/** Default page size for pagination when the consumer doesn't pass `pageSize`. */\nexport const DEFAULT_PAGE_SIZE = 10;\n\n// ---------------------------------------------------------------------------\n// Column sizing defaults (react-table `defaultColumn`, in px)\n// ---------------------------------------------------------------------------\nexport const DEFAULT_COLUMN_MIN_WIDTH = 100;\nexport const DEFAULT_COLUMN_WIDTH = 200;\nexport const DEFAULT_COLUMN_MAX_WIDTH = 999999;\n\n// ---------------------------------------------------------------------------\n// Drag & drop (dnd-kit)\n// ---------------------------------------------------------------------------\n/** Pointer travel (px) before a drag starts, for both mouse and touch sensors. */\nexport const DND_ACTIVATION_DISTANCE = 5;\nexport const DROP_ANIMATION_EASING = 'cubic-bezier(0.18, 0.67, 0.6, 1.22)';\nexport const DROP_ANIMATION_DURATION = 20;\n\n// ---------------------------------------------------------------------------\n// scrollToCell — horizontal auto-scroll to a target inline-edit cell\n// ---------------------------------------------------------------------------\n/** Assumed column width (px) when a header has no explicit width, used to sum offset. */\nexport const SCROLL_TO_CELL_COLUMN_WIDTH_FALLBACK = 200;\n/** Left padding (px) kept before the target cell so it isn't flush to the edge. */\nexport const SCROLL_TO_CELL_LEFT_OFFSET = 200;\n\n// ---------------------------------------------------------------------------\n// Trailing action-column widths (px) used when summing sticky offsets\n// ---------------------------------------------------------------------------\n/** Fallback width for the row-additional-actions column when none is provided. */\nexport const ROW_ADDITIONAL_ACTIONS_DEFAULT_WIDTH = 40;\n/** Width reserved for the row-options (three-dot) column. */\nexport const ROW_OPTIONS_COLUMN_WIDTH = 28;\n\n// ---------------------------------------------------------------------------\n// DOM selectors / data-attributes used to locate cells & the scroll viewport\n// ---------------------------------------------------------------------------\nexport const OS_VIEWPORT_SELECTOR = '.os-viewport';\nexport const DATA_ROW_ID_ATTR = 'data-row-id';\nexport const DATA_COLUMN_KEY_ATTR = 'data-column-key';\n\n// ---------------------------------------------------------------------------\n// DataCell — sizing / layout\n// ---------------------------------------------------------------------------\n/** Left indent (px) added per cascading nesting level. */\nexport const CELL_INDENT_PER_LEVEL_PX = 16;\n/** Fallback `right` offset for non-sticky cells. */\nexport const CELL_DEFAULT_RIGHT_OFFSET = '0px';\n\n// ---------------------------------------------------------------------------\n// DataCell — sticky first-cell drop shadow (theme-specific)\n// ---------------------------------------------------------------------------\nexport const CELL_STICKY_SHADOW_DARK = '-8px 0px 8px 0px rgba(255, 255, 255, 0.01)';\nexport const CELL_STICKY_SHADOW_LIGHT = '-8px 0px 8px 0px rgba(0, 0, 0, 0.02)';\n\n// ---------------------------------------------------------------------------\n// Inline-style pixel offsets (used in style={{…}}, not classNames)\n// ---------------------------------------------------------------------------\n/** Left offset for the checkbox cell when the pending-edits column is present. */\nexport const CHECKBOX_PENDING_EDITS_LEFT_OFFSET = '28px';\n/** Half the floating-bar tooltip width — negative margin to center it. */\nexport const FLOATING_BAR_TOOLTIP_MARGIN_LEFT = '-160px';\nexport const FLOATING_BAR_TOOLTIP_MARGIN_BOTTOM = '4px';\n"],"names":["TOOLBAR_FIRST_BREAKPOINT","TOOLBAR_SECOND_BREAKPOINT","DEFAULT_PAGE_SIZE","DEFAULT_COLUMN_MIN_WIDTH","DEFAULT_COLUMN_WIDTH","DEFAULT_COLUMN_MAX_WIDTH","DND_ACTIVATION_DISTANCE","DROP_ANIMATION_EASING","DROP_ANIMATION_DURATION","SCROLL_TO_CELL_COLUMN_WIDTH_FALLBACK","SCROLL_TO_CELL_LEFT_OFFSET","ROW_ADDITIONAL_ACTIONS_DEFAULT_WIDTH","ROW_OPTIONS_COLUMN_WIDTH","OS_VIEWPORT_SELECTOR","DATA_ROW_ID_ATTR","DATA_COLUMN_KEY_ATTR","CELL_INDENT_PER_LEVEL_PX","CELL_DEFAULT_RIGHT_OFFSET","CELL_STICKY_SHADOW_DARK","CELL_STICKY_SHADOW_LIGHT","CHECKBOX_PENDING_EDITS_LEFT_OFFSET","FLOATING_BAR_TOOLTIP_MARGIN_LEFT","FLOATING_BAR_TOOLTIP_MARGIN_BOTTOM"],"mappings":"gFAYO,MAAMA,EAA2B,IAC3BC,EAA4B,IAM5BC,EAAoB,
|
|
1
|
+
{"version":3,"file":"constants.cjs.js","sources":["../../../../src/components/data-display/infinite-table/constants.ts"],"sourcesContent":["/**\n * Shared static values for the InfiniteTable and every component under it.\n *\n * Rule for this subtree: magic numbers, timings, sizes, and meaningful string\n * literals (DOM selectors, data-attributes, CSS values used in inline styles)\n * live here with a descriptive name. Tailwind `className` strings are NOT\n * extracted — they stay inline so JIT can see them and JSX stays readable.\n */\n\n// ---------------------------------------------------------------------------\n// Responsive toolbar breakpoints (header layout collapse thresholds, in px)\n// ---------------------------------------------------------------------------\nexport const TOOLBAR_FIRST_BREAKPOINT = 700;\nexport const TOOLBAR_SECOND_BREAKPOINT = 430;\n\n// ---------------------------------------------------------------------------\n// Table defaults\n// ---------------------------------------------------------------------------\n/** Default page size for pagination when the consumer doesn't pass `pageSize`. */\nexport const DEFAULT_PAGE_SIZE = 10;\n\n// ---------------------------------------------------------------------------\n// Row sizing — virtualization & layout math\n// ---------------------------------------------------------------------------\n/**\n * Extra px added to the measured `h-row` content height to get a full row slot.\n * Accounts for the 1px `border-t` on each `<tr>`. The row content height itself\n * is a viewport clamp (`h-row`), measured at runtime via `useRowHeight`.\n */\nexport const ROW_SLOT_BORDER_PX = 1;\n\n// ---------------------------------------------------------------------------\n// Column sizing defaults (react-table `defaultColumn`, in px)\n// ---------------------------------------------------------------------------\nexport const DEFAULT_COLUMN_MIN_WIDTH = 100;\nexport const DEFAULT_COLUMN_WIDTH = 200;\nexport const DEFAULT_COLUMN_MAX_WIDTH = 999999;\n\n// ---------------------------------------------------------------------------\n// Drag & drop (dnd-kit)\n// ---------------------------------------------------------------------------\n/** Pointer travel (px) before a drag starts, for both mouse and touch sensors. */\nexport const DND_ACTIVATION_DISTANCE = 5;\nexport const DROP_ANIMATION_EASING = 'cubic-bezier(0.18, 0.67, 0.6, 1.22)';\nexport const DROP_ANIMATION_DURATION = 20;\n\n// ---------------------------------------------------------------------------\n// scrollToCell — horizontal auto-scroll to a target inline-edit cell\n// ---------------------------------------------------------------------------\n/** Assumed column width (px) when a header has no explicit width, used to sum offset. */\nexport const SCROLL_TO_CELL_COLUMN_WIDTH_FALLBACK = 200;\n/** Left padding (px) kept before the target cell so it isn't flush to the edge. */\nexport const SCROLL_TO_CELL_LEFT_OFFSET = 200;\n\n// ---------------------------------------------------------------------------\n// Trailing action-column widths (px) used when summing sticky offsets\n// ---------------------------------------------------------------------------\n/** Fallback width for the row-additional-actions column when none is provided. */\nexport const ROW_ADDITIONAL_ACTIONS_DEFAULT_WIDTH = 40;\n/** Width reserved for the row-options (three-dot) column. */\nexport const ROW_OPTIONS_COLUMN_WIDTH = 28;\n\n// ---------------------------------------------------------------------------\n// DOM selectors / data-attributes used to locate cells & the scroll viewport\n// ---------------------------------------------------------------------------\nexport const OS_VIEWPORT_SELECTOR = '.os-viewport';\nexport const DATA_ROW_ID_ATTR = 'data-row-id';\nexport const DATA_COLUMN_KEY_ATTR = 'data-column-key';\n\n// ---------------------------------------------------------------------------\n// DataCell — sizing / layout\n// ---------------------------------------------------------------------------\n/** Left indent (px) added per cascading nesting level. */\nexport const CELL_INDENT_PER_LEVEL_PX = 16;\n/** Fallback `right` offset for non-sticky cells. */\nexport const CELL_DEFAULT_RIGHT_OFFSET = '0px';\n\n// ---------------------------------------------------------------------------\n// DataCell — sticky first-cell drop shadow (theme-specific)\n// ---------------------------------------------------------------------------\nexport const CELL_STICKY_SHADOW_DARK = '-8px 0px 8px 0px rgba(255, 255, 255, 0.01)';\nexport const CELL_STICKY_SHADOW_LIGHT = '-8px 0px 8px 0px rgba(0, 0, 0, 0.02)';\n\n// ---------------------------------------------------------------------------\n// Inline-style pixel offsets (used in style={{…}}, not classNames)\n// ---------------------------------------------------------------------------\n/** Left offset for the checkbox cell when the pending-edits column is present. */\nexport const CHECKBOX_PENDING_EDITS_LEFT_OFFSET = '28px';\n/** Half the floating-bar tooltip width — negative margin to center it. */\nexport const FLOATING_BAR_TOOLTIP_MARGIN_LEFT = '-160px';\nexport const FLOATING_BAR_TOOLTIP_MARGIN_BOTTOM = '4px';\n"],"names":["TOOLBAR_FIRST_BREAKPOINT","TOOLBAR_SECOND_BREAKPOINT","DEFAULT_PAGE_SIZE","ROW_SLOT_BORDER_PX","DEFAULT_COLUMN_MIN_WIDTH","DEFAULT_COLUMN_WIDTH","DEFAULT_COLUMN_MAX_WIDTH","DND_ACTIVATION_DISTANCE","DROP_ANIMATION_EASING","DROP_ANIMATION_DURATION","SCROLL_TO_CELL_COLUMN_WIDTH_FALLBACK","SCROLL_TO_CELL_LEFT_OFFSET","ROW_ADDITIONAL_ACTIONS_DEFAULT_WIDTH","ROW_OPTIONS_COLUMN_WIDTH","OS_VIEWPORT_SELECTOR","DATA_ROW_ID_ATTR","DATA_COLUMN_KEY_ATTR","CELL_INDENT_PER_LEVEL_PX","CELL_DEFAULT_RIGHT_OFFSET","CELL_STICKY_SHADOW_DARK","CELL_STICKY_SHADOW_LIGHT","CHECKBOX_PENDING_EDITS_LEFT_OFFSET","FLOATING_BAR_TOOLTIP_MARGIN_LEFT","FLOATING_BAR_TOOLTIP_MARGIN_BOTTOM"],"mappings":"gFAYO,MAAMA,EAA2B,IAC3BC,EAA4B,IAM5BC,EAAoB,GAUpBC,EAAqB,EAKrBC,EAA2B,IAC3BC,EAAuB,IACvBC,EAA2B,OAM3BC,EAA0B,EAC1BC,EAAwB,sCACxBC,EAA0B,GAM1BC,EAAuC,IAEvCC,EAA6B,IAM7BC,EAAuC,GAEvCC,EAA2B,GAK3BC,EAAuB,eACvBC,EAAmB,cACnBC,EAAuB,kBAMvBC,EAA2B,GAE3BC,EAA4B,MAK5BC,EAA0B,6CAC1BC,EAA2B,uCAM3BC,EAAqC,OAErCC,EAAmC,SACnCC,EAAqC"}
|
|
@@ -10,6 +10,12 @@ export declare const TOOLBAR_FIRST_BREAKPOINT = 700;
|
|
|
10
10
|
export declare const TOOLBAR_SECOND_BREAKPOINT = 430;
|
|
11
11
|
/** Default page size for pagination when the consumer doesn't pass `pageSize`. */
|
|
12
12
|
export declare const DEFAULT_PAGE_SIZE = 10;
|
|
13
|
+
/**
|
|
14
|
+
* Extra px added to the measured `h-row` content height to get a full row slot.
|
|
15
|
+
* Accounts for the 1px `border-t` on each `<tr>`. The row content height itself
|
|
16
|
+
* is a viewport clamp (`h-row`), measured at runtime via `useRowHeight`.
|
|
17
|
+
*/
|
|
18
|
+
export declare const ROW_SLOT_BORDER_PX = 1;
|
|
13
19
|
export declare const DEFAULT_COLUMN_MIN_WIDTH = 100;
|
|
14
20
|
export declare const DEFAULT_COLUMN_WIDTH = 200;
|
|
15
21
|
export declare const DEFAULT_COLUMN_MAX_WIDTH = 999999;
|
|
@@ -1,26 +1,27 @@
|
|
|
1
|
-
const _ = 700, T = 430, O = 10, L =
|
|
1
|
+
const _ = 700, T = 430, O = 10, L = 1, A = 100, I = 200, E = 999999, D = 5, N = "cubic-bezier(0.18, 0.67, 0.6, 1.22)", o = 20, t = 200, c = 200, R = 40, n = 28, s = ".os-viewport", C = "data-row-id", S = "data-column-key", F = 16, p = "0px", x = "-8px 0px 8px 0px rgba(255, 255, 255, 0.01)", M = "-8px 0px 8px 0px rgba(0, 0, 0, 0.02)", P = "28px", U = "-160px", W = "4px";
|
|
2
2
|
export {
|
|
3
|
-
|
|
3
|
+
p as CELL_DEFAULT_RIGHT_OFFSET,
|
|
4
4
|
F as CELL_INDENT_PER_LEVEL_PX,
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
5
|
+
x as CELL_STICKY_SHADOW_DARK,
|
|
6
|
+
M as CELL_STICKY_SHADOW_LIGHT,
|
|
7
|
+
P as CHECKBOX_PENDING_EDITS_LEFT_OFFSET,
|
|
8
|
+
S as DATA_COLUMN_KEY_ATTR,
|
|
9
9
|
C as DATA_ROW_ID_ATTR,
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
10
|
+
E as DEFAULT_COLUMN_MAX_WIDTH,
|
|
11
|
+
A as DEFAULT_COLUMN_MIN_WIDTH,
|
|
12
|
+
I as DEFAULT_COLUMN_WIDTH,
|
|
13
13
|
O as DEFAULT_PAGE_SIZE,
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
14
|
+
D as DND_ACTIVATION_DISTANCE,
|
|
15
|
+
o as DROP_ANIMATION_DURATION,
|
|
16
|
+
N as DROP_ANIMATION_EASING,
|
|
17
|
+
W as FLOATING_BAR_TOOLTIP_MARGIN_BOTTOM,
|
|
18
18
|
U as FLOATING_BAR_TOOLTIP_MARGIN_LEFT,
|
|
19
19
|
s as OS_VIEWPORT_SELECTOR,
|
|
20
|
-
|
|
20
|
+
R as ROW_ADDITIONAL_ACTIONS_DEFAULT_WIDTH,
|
|
21
21
|
n as ROW_OPTIONS_COLUMN_WIDTH,
|
|
22
|
-
|
|
23
|
-
t as
|
|
22
|
+
L as ROW_SLOT_BORDER_PX,
|
|
23
|
+
t as SCROLL_TO_CELL_COLUMN_WIDTH_FALLBACK,
|
|
24
|
+
c as SCROLL_TO_CELL_LEFT_OFFSET,
|
|
24
25
|
_ as TOOLBAR_FIRST_BREAKPOINT,
|
|
25
26
|
T as TOOLBAR_SECOND_BREAKPOINT
|
|
26
27
|
};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"constants.es.js","sources":["../../../../src/components/data-display/infinite-table/constants.ts"],"sourcesContent":["/**\n * Shared static values for the InfiniteTable and every component under it.\n *\n * Rule for this subtree: magic numbers, timings, sizes, and meaningful string\n * literals (DOM selectors, data-attributes, CSS values used in inline styles)\n * live here with a descriptive name. Tailwind `className` strings are NOT\n * extracted — they stay inline so JIT can see them and JSX stays readable.\n */\n\n// ---------------------------------------------------------------------------\n// Responsive toolbar breakpoints (header layout collapse thresholds, in px)\n// ---------------------------------------------------------------------------\nexport const TOOLBAR_FIRST_BREAKPOINT = 700;\nexport const TOOLBAR_SECOND_BREAKPOINT = 430;\n\n// ---------------------------------------------------------------------------\n// Table defaults\n// ---------------------------------------------------------------------------\n/** Default page size for pagination when the consumer doesn't pass `pageSize`. */\nexport const DEFAULT_PAGE_SIZE = 10;\n\n// ---------------------------------------------------------------------------\n// Column sizing defaults (react-table `defaultColumn`, in px)\n// ---------------------------------------------------------------------------\nexport const DEFAULT_COLUMN_MIN_WIDTH = 100;\nexport const DEFAULT_COLUMN_WIDTH = 200;\nexport const DEFAULT_COLUMN_MAX_WIDTH = 999999;\n\n// ---------------------------------------------------------------------------\n// Drag & drop (dnd-kit)\n// ---------------------------------------------------------------------------\n/** Pointer travel (px) before a drag starts, for both mouse and touch sensors. */\nexport const DND_ACTIVATION_DISTANCE = 5;\nexport const DROP_ANIMATION_EASING = 'cubic-bezier(0.18, 0.67, 0.6, 1.22)';\nexport const DROP_ANIMATION_DURATION = 20;\n\n// ---------------------------------------------------------------------------\n// scrollToCell — horizontal auto-scroll to a target inline-edit cell\n// ---------------------------------------------------------------------------\n/** Assumed column width (px) when a header has no explicit width, used to sum offset. */\nexport const SCROLL_TO_CELL_COLUMN_WIDTH_FALLBACK = 200;\n/** Left padding (px) kept before the target cell so it isn't flush to the edge. */\nexport const SCROLL_TO_CELL_LEFT_OFFSET = 200;\n\n// ---------------------------------------------------------------------------\n// Trailing action-column widths (px) used when summing sticky offsets\n// ---------------------------------------------------------------------------\n/** Fallback width for the row-additional-actions column when none is provided. */\nexport const ROW_ADDITIONAL_ACTIONS_DEFAULT_WIDTH = 40;\n/** Width reserved for the row-options (three-dot) column. */\nexport const ROW_OPTIONS_COLUMN_WIDTH = 28;\n\n// ---------------------------------------------------------------------------\n// DOM selectors / data-attributes used to locate cells & the scroll viewport\n// ---------------------------------------------------------------------------\nexport const OS_VIEWPORT_SELECTOR = '.os-viewport';\nexport const DATA_ROW_ID_ATTR = 'data-row-id';\nexport const DATA_COLUMN_KEY_ATTR = 'data-column-key';\n\n// ---------------------------------------------------------------------------\n// DataCell — sizing / layout\n// ---------------------------------------------------------------------------\n/** Left indent (px) added per cascading nesting level. */\nexport const CELL_INDENT_PER_LEVEL_PX = 16;\n/** Fallback `right` offset for non-sticky cells. */\nexport const CELL_DEFAULT_RIGHT_OFFSET = '0px';\n\n// ---------------------------------------------------------------------------\n// DataCell — sticky first-cell drop shadow (theme-specific)\n// ---------------------------------------------------------------------------\nexport const CELL_STICKY_SHADOW_DARK = '-8px 0px 8px 0px rgba(255, 255, 255, 0.01)';\nexport const CELL_STICKY_SHADOW_LIGHT = '-8px 0px 8px 0px rgba(0, 0, 0, 0.02)';\n\n// ---------------------------------------------------------------------------\n// Inline-style pixel offsets (used in style={{…}}, not classNames)\n// ---------------------------------------------------------------------------\n/** Left offset for the checkbox cell when the pending-edits column is present. */\nexport const CHECKBOX_PENDING_EDITS_LEFT_OFFSET = '28px';\n/** Half the floating-bar tooltip width — negative margin to center it. */\nexport const FLOATING_BAR_TOOLTIP_MARGIN_LEFT = '-160px';\nexport const FLOATING_BAR_TOOLTIP_MARGIN_BOTTOM = '4px';\n"],"names":["TOOLBAR_FIRST_BREAKPOINT","TOOLBAR_SECOND_BREAKPOINT","DEFAULT_PAGE_SIZE","DEFAULT_COLUMN_MIN_WIDTH","DEFAULT_COLUMN_WIDTH","DEFAULT_COLUMN_MAX_WIDTH","DND_ACTIVATION_DISTANCE","DROP_ANIMATION_EASING","DROP_ANIMATION_DURATION","SCROLL_TO_CELL_COLUMN_WIDTH_FALLBACK","SCROLL_TO_CELL_LEFT_OFFSET","ROW_ADDITIONAL_ACTIONS_DEFAULT_WIDTH","ROW_OPTIONS_COLUMN_WIDTH","OS_VIEWPORT_SELECTOR","DATA_ROW_ID_ATTR","DATA_COLUMN_KEY_ATTR","CELL_INDENT_PER_LEVEL_PX","CELL_DEFAULT_RIGHT_OFFSET","CELL_STICKY_SHADOW_DARK","CELL_STICKY_SHADOW_LIGHT","CHECKBOX_PENDING_EDITS_LEFT_OFFSET","FLOATING_BAR_TOOLTIP_MARGIN_LEFT","FLOATING_BAR_TOOLTIP_MARGIN_BOTTOM"],"mappings":"AAYO,MAAMA,IAA2B,KAC3BC,IAA4B,KAM5BC,IAAoB,
|
|
1
|
+
{"version":3,"file":"constants.es.js","sources":["../../../../src/components/data-display/infinite-table/constants.ts"],"sourcesContent":["/**\n * Shared static values for the InfiniteTable and every component under it.\n *\n * Rule for this subtree: magic numbers, timings, sizes, and meaningful string\n * literals (DOM selectors, data-attributes, CSS values used in inline styles)\n * live here with a descriptive name. Tailwind `className` strings are NOT\n * extracted — they stay inline so JIT can see them and JSX stays readable.\n */\n\n// ---------------------------------------------------------------------------\n// Responsive toolbar breakpoints (header layout collapse thresholds, in px)\n// ---------------------------------------------------------------------------\nexport const TOOLBAR_FIRST_BREAKPOINT = 700;\nexport const TOOLBAR_SECOND_BREAKPOINT = 430;\n\n// ---------------------------------------------------------------------------\n// Table defaults\n// ---------------------------------------------------------------------------\n/** Default page size for pagination when the consumer doesn't pass `pageSize`. */\nexport const DEFAULT_PAGE_SIZE = 10;\n\n// ---------------------------------------------------------------------------\n// Row sizing — virtualization & layout math\n// ---------------------------------------------------------------------------\n/**\n * Extra px added to the measured `h-row` content height to get a full row slot.\n * Accounts for the 1px `border-t` on each `<tr>`. The row content height itself\n * is a viewport clamp (`h-row`), measured at runtime via `useRowHeight`.\n */\nexport const ROW_SLOT_BORDER_PX = 1;\n\n// ---------------------------------------------------------------------------\n// Column sizing defaults (react-table `defaultColumn`, in px)\n// ---------------------------------------------------------------------------\nexport const DEFAULT_COLUMN_MIN_WIDTH = 100;\nexport const DEFAULT_COLUMN_WIDTH = 200;\nexport const DEFAULT_COLUMN_MAX_WIDTH = 999999;\n\n// ---------------------------------------------------------------------------\n// Drag & drop (dnd-kit)\n// ---------------------------------------------------------------------------\n/** Pointer travel (px) before a drag starts, for both mouse and touch sensors. */\nexport const DND_ACTIVATION_DISTANCE = 5;\nexport const DROP_ANIMATION_EASING = 'cubic-bezier(0.18, 0.67, 0.6, 1.22)';\nexport const DROP_ANIMATION_DURATION = 20;\n\n// ---------------------------------------------------------------------------\n// scrollToCell — horizontal auto-scroll to a target inline-edit cell\n// ---------------------------------------------------------------------------\n/** Assumed column width (px) when a header has no explicit width, used to sum offset. */\nexport const SCROLL_TO_CELL_COLUMN_WIDTH_FALLBACK = 200;\n/** Left padding (px) kept before the target cell so it isn't flush to the edge. */\nexport const SCROLL_TO_CELL_LEFT_OFFSET = 200;\n\n// ---------------------------------------------------------------------------\n// Trailing action-column widths (px) used when summing sticky offsets\n// ---------------------------------------------------------------------------\n/** Fallback width for the row-additional-actions column when none is provided. */\nexport const ROW_ADDITIONAL_ACTIONS_DEFAULT_WIDTH = 40;\n/** Width reserved for the row-options (three-dot) column. */\nexport const ROW_OPTIONS_COLUMN_WIDTH = 28;\n\n// ---------------------------------------------------------------------------\n// DOM selectors / data-attributes used to locate cells & the scroll viewport\n// ---------------------------------------------------------------------------\nexport const OS_VIEWPORT_SELECTOR = '.os-viewport';\nexport const DATA_ROW_ID_ATTR = 'data-row-id';\nexport const DATA_COLUMN_KEY_ATTR = 'data-column-key';\n\n// ---------------------------------------------------------------------------\n// DataCell — sizing / layout\n// ---------------------------------------------------------------------------\n/** Left indent (px) added per cascading nesting level. */\nexport const CELL_INDENT_PER_LEVEL_PX = 16;\n/** Fallback `right` offset for non-sticky cells. */\nexport const CELL_DEFAULT_RIGHT_OFFSET = '0px';\n\n// ---------------------------------------------------------------------------\n// DataCell — sticky first-cell drop shadow (theme-specific)\n// ---------------------------------------------------------------------------\nexport const CELL_STICKY_SHADOW_DARK = '-8px 0px 8px 0px rgba(255, 255, 255, 0.01)';\nexport const CELL_STICKY_SHADOW_LIGHT = '-8px 0px 8px 0px rgba(0, 0, 0, 0.02)';\n\n// ---------------------------------------------------------------------------\n// Inline-style pixel offsets (used in style={{…}}, not classNames)\n// ---------------------------------------------------------------------------\n/** Left offset for the checkbox cell when the pending-edits column is present. */\nexport const CHECKBOX_PENDING_EDITS_LEFT_OFFSET = '28px';\n/** Half the floating-bar tooltip width — negative margin to center it. */\nexport const FLOATING_BAR_TOOLTIP_MARGIN_LEFT = '-160px';\nexport const FLOATING_BAR_TOOLTIP_MARGIN_BOTTOM = '4px';\n"],"names":["TOOLBAR_FIRST_BREAKPOINT","TOOLBAR_SECOND_BREAKPOINT","DEFAULT_PAGE_SIZE","ROW_SLOT_BORDER_PX","DEFAULT_COLUMN_MIN_WIDTH","DEFAULT_COLUMN_WIDTH","DEFAULT_COLUMN_MAX_WIDTH","DND_ACTIVATION_DISTANCE","DROP_ANIMATION_EASING","DROP_ANIMATION_DURATION","SCROLL_TO_CELL_COLUMN_WIDTH_FALLBACK","SCROLL_TO_CELL_LEFT_OFFSET","ROW_ADDITIONAL_ACTIONS_DEFAULT_WIDTH","ROW_OPTIONS_COLUMN_WIDTH","OS_VIEWPORT_SELECTOR","DATA_ROW_ID_ATTR","DATA_COLUMN_KEY_ATTR","CELL_INDENT_PER_LEVEL_PX","CELL_DEFAULT_RIGHT_OFFSET","CELL_STICKY_SHADOW_DARK","CELL_STICKY_SHADOW_LIGHT","CHECKBOX_PENDING_EDITS_LEFT_OFFSET","FLOATING_BAR_TOOLTIP_MARGIN_LEFT","FLOATING_BAR_TOOLTIP_MARGIN_BOTTOM"],"mappings":"AAYO,MAAMA,IAA2B,KAC3BC,IAA4B,KAM5BC,IAAoB,IAUpBC,IAAqB,GAKrBC,IAA2B,KAC3BC,IAAuB,KACvBC,IAA2B,QAM3BC,IAA0B,GAC1BC,IAAwB,uCACxBC,IAA0B,IAM1BC,IAAuC,KAEvCC,IAA6B,KAM7BC,IAAuC,IAEvCC,IAA2B,IAK3BC,IAAuB,gBACvBC,IAAmB,eACnBC,IAAuB,mBAMvBC,IAA2B,IAE3BC,IAA4B,OAK5BC,IAA0B,8CAC1BC,IAA2B,wCAM3BC,IAAqC,QAErCC,IAAmC,UACnCC,IAAqC;"}
|