@pibit.ai/cure-design-system 0.3.35 → 0.3.40

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -1,16 +1,17 @@
1
1
  export { Table, TableCard, TableCell, TableRowActionsDropdown } from './table';
2
2
  export { TableWrapper, type TableWrapperProps } from './TableWrapper';
3
- export type { TableWrapperPaginationConfig, TableWrapperToolbarConfig, BulkActionContext, TableWrapperEditChrome, TableWrapperSelectedKeys, TableWrapperSelectionChange, ColumnConfig, TableCellCoord, TableCellRangeRect, TableCellSelection, } from './types';
3
+ export type { TableWrapperPaginationConfig, TableWrapperToolbarConfig, BulkActionContext, TableWrapperEditChrome, TableWrapperSelectedKeys, TableWrapperSelectionChange, TableZoomConfig, ColumnConfig, TableCellCoord, TableCellRangeRect, TableCellSelection, } from './types';
4
4
  export { buildCellRangeRect, getCellRangeVisualState, getDragScrollDeltas, isSingleCellSelection, selectionFromSingleCell, } from './cellRangeSelection';
5
- export { TablePagination, type TablePaginationConfig, type TablePaginationProps } from './TablePagination';
5
+ export { TablePagination, type TablePaginationConfig, type TablePaginationProps, } from './TablePagination';
6
6
  export { PaginationCardDefault } from './pagination-card';
7
7
  export { Pagination } from './pagination-base';
8
8
  export { ROW_HEIGHT_ICONS, type RowHeightIconKey } from './row-height-icons';
9
9
  export { TOOLBAR_ICONS } from './toolbar-icons';
10
- export type { TableColumnSchema, TableColumnMenuSchema, TableColumnValueType } from './types';
10
+ export type { TableColumnSchema, TableColumnMenuSchema, TableColumnValueType, } from './types';
11
11
  export { TableToolbar, pickCoreToolbarProps, registerToolbarExtensions, getToolbarExtensions, RowHeightDropdown, HideFieldsDropdown, AlignDropdown, GroupByDropdown, ShowSummaryDropdown, SummaryFooterRow, ColumnHeaderMenu, RowActionsMenu, BulkActionBar, applyHideAndReorder, getDefaultAlignmentForType, getEffectiveAlignment, alignmentClass, getAggregationsForType, computeAggregation, groupRows, resolveColumnLabel, resolveSummaryDisplayValueType, ROW_HEIGHT_CLASS, AGGREGATION_LABELS, } from './toolbar';
12
12
  export type { SearchToolConfig, SortToolConfig, FilterToolConfig, RowHeightToolConfig, HideFieldsToolConfig, AlignToolConfig, GroupByToolConfig, SummaryToolConfig, UndoRedoToolConfig, ToolbarExtensionComponents, LegacySortToolConfig, LegacyFilterToolConfig, RowHeightOption, SummaryFooterRowProps, ColumnMenuAction, ColumnMenuCapabilities, RowActionsConfig, CellAlignment, AggregationType, AggregationOption, RowGroup, } from './toolbar';
13
- export { GridNavProvider, useGridKeyboardNavigation, isWithinCellEditor, findGridCell, focusGridCell, getGridNeighbor, getGridTabNeighbor, type GridNavDirection, type GridNeighbor, type GridNavValue, } from './useGridKeyboardNavigation';
13
+ export { GridNavProvider, useGridKeyboardNavigation, isWithinCellEditor, findGridCell, focusGridCell, getGridNeighbor, getGridTabNeighbor, type FocusGridCellOptions, type GridNavDirection, type GridNeighbor, type GridNavValue, } from './useGridKeyboardNavigation';
14
+ export { CELL_SCROLL_PADDING_PX, computeCellScrollDelta, getAxisScrollParent, getScrollportRect, measureStickyInsets, scrollGridCellIntoView, type CellScrollDelta, type EdgeRect, type GridScrollDirection, type StickyInsets, } from './scrollCellIntoView';
14
15
  export { TableUndoRedoProvider, useTableUndoRedo, useTableUndoRedoScope, MAX_HISTORY, wrapColumnHeaderActionWithUndoRedo, wrapEditChromeWithUndoRedo, wrapRowActionsWithUndoRedo, wrapSummaryFooterWithUndoRedo, wrapToolbarWithUndoRedo, type TableUndoRedoRegistration, type TableUndoRedoScopeApi, type TableUndoRedoState, type TableUndoSnapshot, } from './useTableUndoRedo';
15
16
  export { useIntegrateTableUndoRedo, type IntegrateTableUndoRedoOptions, type IntegrateTableUndoRedoResult, } from './integrateTableUndoRedo';
16
17
  export { applyTableUndoSnapshot, captureTableUndoSnapshot, } from './tableUndoRedo';
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/patterns/table/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,EAAE,SAAS,EAAE,SAAS,EAAE,uBAAuB,EAAE,MAAM,SAAS,CAAC;AAC/E,OAAO,EAAE,YAAY,EAAE,KAAK,iBAAiB,EAAE,MAAM,gBAAgB,CAAC;AACtE,YAAY,EACV,4BAA4B,EAC5B,yBAAyB,EACzB,iBAAiB,EACjB,sBAAsB,EACtB,wBAAwB,EACxB,2BAA2B,EAC3B,YAAY,EACZ,cAAc,EACd,kBAAkB,EAClB,kBAAkB,GACnB,MAAM,SAAS,CAAC;AACjB,OAAO,EACL,kBAAkB,EAClB,uBAAuB,EACvB,mBAAmB,EACnB,qBAAqB,EACrB,uBAAuB,GACxB,MAAM,sBAAsB,CAAC;AAC9B,OAAO,EAAE,eAAe,EAAE,KAAK,qBAAqB,EAAE,KAAK,oBAAoB,EAAE,MAAM,mBAAmB,CAAC;AAC3G,OAAO,EAAE,qBAAqB,EAAE,MAAM,mBAAmB,CAAC;AAC1D,OAAO,EAAE,UAAU,EAAE,MAAM,mBAAmB,CAAC;AAC/C,OAAO,EAAE,gBAAgB,EAAE,KAAK,gBAAgB,EAAE,MAAM,oBAAoB,CAAC;AAC7E,OAAO,EAAE,aAAa,EAAE,MAAM,iBAAiB,CAAC;AAChD,YAAY,EAAE,iBAAiB,EAAE,qBAAqB,EAAE,oBAAoB,EAAE,MAAM,SAAS,CAAC;AAC9F,OAAO,EACL,YAAY,EACZ,oBAAoB,EACpB,yBAAyB,EACzB,oBAAoB,EACpB,iBAAiB,EACjB,kBAAkB,EAClB,aAAa,EACb,eAAe,EACf,mBAAmB,EACnB,gBAAgB,EAChB,gBAAgB,EAChB,cAAc,EACd,aAAa,EACb,mBAAmB,EACnB,0BAA0B,EAC1B,qBAAqB,EACrB,cAAc,EACd,sBAAsB,EACtB,kBAAkB,EAClB,SAAS,EACT,kBAAkB,EAClB,8BAA8B,EAC9B,gBAAgB,EAChB,kBAAkB,GACnB,MAAM,WAAW,CAAC;AACnB,YAAY,EACV,gBAAgB,EAChB,cAAc,EACd,gBAAgB,EAChB,mBAAmB,EACnB,oBAAoB,EACpB,eAAe,EACf,iBAAiB,EACjB,iBAAiB,EACjB,kBAAkB,EAClB,0BAA0B,EAC1B,oBAAoB,EACpB,sBAAsB,EACtB,eAAe,EACf,qBAAqB,EACrB,gBAAgB,EAChB,sBAAsB,EACtB,gBAAgB,EAChB,aAAa,EACb,eAAe,EACf,iBAAiB,EACjB,QAAQ,GACT,MAAM,WAAW,CAAC;AACnB,OAAO,EACL,eAAe,EACf,yBAAyB,EACzB,kBAAkB,EAClB,YAAY,EACZ,aAAa,EACb,eAAe,EACf,kBAAkB,EAClB,KAAK,gBAAgB,EACrB,KAAK,YAAY,EACjB,KAAK,YAAY,GAClB,MAAM,6BAA6B,CAAC;AACrC,OAAO,EACL,qBAAqB,EACrB,gBAAgB,EAChB,qBAAqB,EACrB,WAAW,EACX,kCAAkC,EAClC,0BAA0B,EAC1B,0BAA0B,EAC1B,6BAA6B,EAC7B,uBAAuB,EACvB,KAAK,yBAAyB,EAC9B,KAAK,qBAAqB,EAC1B,KAAK,kBAAkB,EACvB,KAAK,iBAAiB,GACvB,MAAM,oBAAoB,CAAC;AAC5B,OAAO,EACL,yBAAyB,EACzB,KAAK,6BAA6B,EAClC,KAAK,4BAA4B,GAClC,MAAM,0BAA0B,CAAC;AAClC,OAAO,EACL,sBAAsB,EACtB,wBAAwB,GACzB,MAAM,iBAAiB,CAAC;AACzB,OAAO,EACL,0BAA0B,EAC1B,qBAAqB,EACrB,KAAK,+BAA+B,GACrC,MAAM,0BAA0B,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/patterns/table/index.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,48 @@
1
+ /**
2
+ * Keeps the active/focus cell fully visible while a range is being selected.
3
+ *
4
+ * The browser's implicit scroll from `element.focus()` is not enough here: it targets the inner
5
+ * focus wrapper (so cell padding and the 2px range border stay clipped) and it ignores sticky
6
+ * overlays, parking the cell underneath the sticky header or a sticky first/last column.
7
+ */
8
+ export type GridScrollDirection = "up" | "down" | "left" | "right";
9
+ /** Gap kept between the cell and the visible edge so the range border is never flush/clipped. */
10
+ export declare const CELL_SCROLL_PADDING_PX = 4;
11
+ /** Widths/heights of the sticky overlays covering each edge of a scrollport. */
12
+ export type StickyInsets = {
13
+ top: number;
14
+ right: number;
15
+ bottom: number;
16
+ left: number;
17
+ };
18
+ export type EdgeRect = {
19
+ top: number;
20
+ right: number;
21
+ bottom: number;
22
+ left: number;
23
+ width: number;
24
+ height: number;
25
+ };
26
+ export type CellScrollDelta = {
27
+ dx: number;
28
+ dy: number;
29
+ };
30
+ export declare const NO_STICKY_INSETS: StickyInsets;
31
+ /** Nearest ancestor (self included) that actually scrolls on `axis`, else the page scroller. */
32
+ export declare const getAxisScrollParent: (start: HTMLElement | null, axis: "x" | "y") => HTMLElement | null;
33
+ /** Visible box of a scroller: the page scroller's box is the viewport, not its full content. */
34
+ export declare const getScrollportRect: (scroller: HTMLElement) => EdgeRect;
35
+ /**
36
+ * How far sticky chrome (header row, sticky columns) intrudes on each edge of `port`.
37
+ *
38
+ * A sticky element only counts while it is actually parked against that edge — once it has
39
+ * scrolled away with its scrollport it covers nothing, and the clamped arithmetic returns 0.
40
+ */
41
+ export declare const measureStickyInsets: (port: EdgeRect, cell: HTMLElement) => StickyInsets;
42
+ /** Scroll deltas that bring the whole cell inside `port` minus its sticky overlays. */
43
+ export declare const computeCellScrollDelta: (cell: EdgeRect, port: EdgeRect, insets?: StickyInsets, dir?: GridScrollDirection | null, padding?: number) => CellScrollDelta;
44
+ export declare const scrollGridCellIntoView: (cell: HTMLElement | null, options?: {
45
+ dir?: GridScrollDirection | null;
46
+ padding?: number;
47
+ }) => void;
48
+ //# sourceMappingURL=scrollCellIntoView.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"scrollCellIntoView.d.ts","sourceRoot":"","sources":["../../../src/patterns/table/scrollCellIntoView.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH,MAAM,MAAM,mBAAmB,GAAG,IAAI,GAAG,MAAM,GAAG,MAAM,GAAG,OAAO,CAAC;AAEnE,iGAAiG;AACjG,eAAO,MAAM,sBAAsB,IAAI,CAAC;AAExC,gFAAgF;AAChF,MAAM,MAAM,YAAY,GAAG;IACzB,GAAG,EAAE,MAAM,CAAC;IACZ,KAAK,EAAE,MAAM,CAAC;IACd,MAAM,EAAE,MAAM,CAAC;IACf,IAAI,EAAE,MAAM,CAAC;CACd,CAAC;AAEF,MAAM,MAAM,QAAQ,GAAG;IACrB,GAAG,EAAE,MAAM,CAAC;IACZ,KAAK,EAAE,MAAM,CAAC;IACd,MAAM,EAAE,MAAM,CAAC;IACf,IAAI,EAAE,MAAM,CAAC;IACb,KAAK,EAAE,MAAM,CAAC;IACd,MAAM,EAAE,MAAM,CAAC;CAChB,CAAC;AAEF,MAAM,MAAM,eAAe,GAAG;IAAE,EAAE,EAAE,MAAM,CAAC;IAAC,EAAE,EAAE,MAAM,CAAA;CAAE,CAAC;AAEzD,eAAO,MAAM,gBAAgB,EAAE,YAK9B,CAAC;AA6BF,gGAAgG;AAChG,eAAO,MAAM,mBAAmB,GAC9B,OAAO,WAAW,GAAG,IAAI,EACzB,MAAM,GAAG,GAAG,GAAG,KACd,WAAW,GAAG,IAchB,CAAC;AAEF,gGAAgG;AAChG,eAAO,MAAM,iBAAiB,GAAI,UAAU,WAAW,KAAG,QAOzD,CAAC;AAUF;;;;;GAKG;AACH,eAAO,MAAM,mBAAmB,GAC9B,MAAM,QAAQ,EACd,MAAM,WAAW,KAChB,YA2CF,CAAC;AAgCF,uFAAuF;AACvF,eAAO,MAAM,sBAAsB,GACjC,MAAM,QAAQ,EACd,MAAM,QAAQ,EACd,SAAQ,YAA+B,EACvC,MAAK,mBAAmB,GAAG,IAAW,EACtC,UAAS,MAA+B,KACvC,eAiBD,CAAC;AAUH,eAAO,MAAM,sBAAsB,GACjC,MAAM,WAAW,GAAG,IAAI,EACxB,UAAS;IAAE,GAAG,CAAC,EAAE,mBAAmB,GAAG,IAAI,CAAC;IAAC,OAAO,CAAC,EAAE,MAAM,CAAA;CAAO,KACnE,IAyCF,CAAC"}
@@ -0,0 +1,122 @@
1
+ const R = 4, L = {
2
+ top: 0,
3
+ right: 0,
4
+ bottom: 0,
5
+ left: 0
6
+ }, u = 1, S = /(auto|scroll|overlay)/, C = (t) => ({
7
+ top: t.top,
8
+ right: t.right,
9
+ bottom: t.bottom,
10
+ left: t.left,
11
+ width: t.width,
12
+ height: t.height
13
+ }), b = (t, n) => {
14
+ const o = getComputedStyle(t), e = n === "x" ? o.overflowX : o.overflowY;
15
+ return S.test(e) ? n === "x" ? t.scrollWidth > t.clientWidth + u : t.scrollHeight > t.clientHeight + u : !1;
16
+ }, p = (t) => t === document.scrollingElement || t === document.documentElement || t === document.body, g = (t, n) => {
17
+ let o = t;
18
+ for (; o; ) {
19
+ if (b(o, n)) return o;
20
+ o = o.parentElement;
21
+ }
22
+ const e = document.scrollingElement;
23
+ return e && (n === "x" ? e.scrollWidth > e.clientWidth + u : e.scrollHeight > e.clientHeight + u) ? e : null;
24
+ }, a = (t) => {
25
+ if (p(t)) {
26
+ const n = window.innerWidth, o = window.innerHeight;
27
+ return { top: 0, right: n, bottom: o, left: 0, width: n, height: o };
28
+ }
29
+ return C(t.getBoundingClientRect());
30
+ }, f = (t, n) => {
31
+ const o = getComputedStyle(t);
32
+ return o.position !== "sticky" ? !1 : n === "x" ? o.left !== "auto" || o.right !== "auto" : o.top !== "auto" || o.bottom !== "auto";
33
+ }, m = (t, n) => {
34
+ var l;
35
+ const o = { ...L }, e = n.closest("table"), s = e == null ? void 0 : e.querySelector(":scope > thead");
36
+ if (s && f(s, "y")) {
37
+ const i = s.getBoundingClientRect();
38
+ i.top <= t.top + u && (o.top = Math.max(0, Math.min(i.bottom - t.top, t.height)));
39
+ }
40
+ const r = e == null ? void 0 : e.querySelector(":scope > tfoot");
41
+ if (r && f(r, "y")) {
42
+ const i = r.getBoundingClientRect();
43
+ i.bottom >= t.bottom - u && (o.bottom = Math.max(
44
+ 0,
45
+ Math.min(t.bottom - i.top, t.height)
46
+ ));
47
+ }
48
+ const h = ((l = n.closest("tr")) == null ? void 0 : l.children) ?? [];
49
+ for (const i of Array.from(h)) {
50
+ if (!(i instanceof HTMLElement) || i === n || !f(i, "x")) continue;
51
+ const c = i.getBoundingClientRect();
52
+ c.left <= t.left + u ? o.left = Math.max(
53
+ o.left,
54
+ Math.min(c.right - t.left, t.width)
55
+ ) : c.right >= t.right - u && (o.right = Math.max(
56
+ o.right,
57
+ Math.min(t.right - c.left, t.width)
58
+ ));
59
+ }
60
+ return o;
61
+ }, d = (t, n, o, e, s, r) => {
62
+ const h = e - o;
63
+ if (h <= 0) return 0;
64
+ const l = t < o - u ? t - r - o : 0, i = n > e + u ? n + r - e : 0;
65
+ return n - t > h ? s === "start" ? l : s === "end" ? i : n <= o || t >= e ? l || i : 0 : l !== 0 ? l : i;
66
+ }, y = (t, n, o = L, e = null, s = 4) => ({
67
+ dx: d(
68
+ t.left,
69
+ t.right,
70
+ n.left + o.left,
71
+ n.right - o.right,
72
+ e === "left" ? "start" : e === "right" ? "end" : null,
73
+ s
74
+ ),
75
+ dy: d(
76
+ t.top,
77
+ t.bottom,
78
+ n.top + o.top,
79
+ n.bottom - o.bottom,
80
+ e === "up" ? "start" : e === "down" ? "end" : null,
81
+ s
82
+ )
83
+ }), x = (t) => {
84
+ var n;
85
+ return ((n = t.closest("table")) == null ? void 0 : n.parentElement) ?? t.parentElement;
86
+ }, _ = (t, n = {}) => {
87
+ if (!t || typeof document > "u") return;
88
+ const { dir: o = null, padding: e = 4 } = n, s = x(t);
89
+ if (!s) return;
90
+ const r = f(t, "x") ? null : g(s, "x"), h = f(t, "y") ? null : g(s, "y");
91
+ if (!r && !h) return;
92
+ const l = C(t.getBoundingClientRect());
93
+ if (r) {
94
+ const i = a(r), { dx: c } = y(
95
+ l,
96
+ i,
97
+ m(i, t),
98
+ o,
99
+ e
100
+ );
101
+ c !== 0 && (r.scrollLeft += c);
102
+ }
103
+ if (h) {
104
+ const i = a(h), { dy: c } = y(
105
+ l,
106
+ i,
107
+ m(i, t),
108
+ o,
109
+ e
110
+ );
111
+ c !== 0 && (h.scrollTop += c);
112
+ }
113
+ };
114
+ export {
115
+ R as CELL_SCROLL_PADDING_PX,
116
+ L as NO_STICKY_INSETS,
117
+ y as computeCellScrollDelta,
118
+ g as getAxisScrollParent,
119
+ a as getScrollportRect,
120
+ m as measureStickyInsets,
121
+ _ as scrollGridCellIntoView
122
+ };
@@ -0,0 +1,59 @@
1
+ import { TableZoomConfig } from './types';
2
+ /**
3
+ * Pure layout maths behind TableWrapper's zoom. Kept out of the component so the invariants
4
+ * can be asserted directly — the width model here has been subtly wrong more than once, and
5
+ * the failures are all silent (columns that look plausible but stop short of the container,
6
+ * or a zoom that cancels itself out and only changes the font size).
7
+ */
8
+ export declare const DEFAULT_TABLE_ZOOM = 100;
9
+ export declare const DEFAULT_TABLE_ZOOM_MIN = 60;
10
+ export declare const DEFAULT_TABLE_ZOOM_MAX = 120;
11
+ export declare const DEFAULT_TABLE_ZOOM_STEP = 10;
12
+ export declare const DEFAULT_COLUMN_MAX_WIDTH = "300px";
13
+ export declare const DEFAULT_ZOOMABLE_COLUMN_MIN_WIDTH = "160px";
14
+ /**
15
+ * Sub-pixel slack for the overflow test. The painted width and the container are exactly
16
+ * equal at the point where the grid stops overflowing, and rounding there must not show a
17
+ * scrollbar for a fraction of a pixel.
18
+ */
19
+ export declare const SCROLL_EPSILON_PX = 0.5;
20
+ export declare const clamp: (value: number, min: number, max: number) => number;
21
+ export declare const parsePxValue: (value: string | undefined) => number;
22
+ /**
23
+ * CSS `zoom` is the mechanism the whole feature rests on (Chrome 128+, Safari, Firefox 126+).
24
+ * Where it is unsupported the grid must fall back to its unzoomed layout rather than render
25
+ * a control that silently does nothing. Treated as supported when `CSS` is unavailable at all
26
+ * (SSR), so the server renders the same markup a current browser will.
27
+ */
28
+ export declare const supportsCssZoom: () => boolean;
29
+ export declare const normalizeZoomConfig: (config: TableZoomConfig) => {
30
+ minZoom: number;
31
+ maxZoom: number;
32
+ step: number;
33
+ defaultZoom: number;
34
+ };
35
+ /**
36
+ * The grid's layout width with zoom held at 100%: fill the container, but never shrink below
37
+ * what the columns' minimums need.
38
+ *
39
+ * Deliberately independent of the zoom level. A base that tracked the zoom (`containerWidth /
40
+ * zoomScale`) is cancelled out by the `zoom` applied afterwards, leaving every column the same
41
+ * painted width at every level and reducing the control to a font-size slider.
42
+ */
43
+ export declare const computeFillBaseWidth: (containerWidth: number | null, minTableWidth: number) => number;
44
+ /** The grid overflows when its painted width exceeds the container it scrolls inside. */
45
+ export declare const computeNeedsHorizontalScroll: (fillBaseWidth: number | null, containerWidth: number | null, zoomScale: number) => boolean;
46
+ /**
47
+ * Width handed to the table, in its own pre-zoom space.
48
+ *
49
+ * The container width is a hard minimum on the *painted* result: the grid must never paint
50
+ * narrower than the element it sits in, so it is never left floating with dead space to its
51
+ * right. While the zoomed base is wider than the container that base wins and zooming
52
+ * genuinely resizes the columns; once it would fall short, the width becomes whatever fills
53
+ * the container at the current zoom. `containerWidth / zoomScale` is that width expressed in
54
+ * the table's own pre-zoom space.
55
+ */
56
+ export declare const computeEffectiveTableWidth: (fillBaseWidth: number | null, containerWidth: number | null, zoomScale: number) => number | null;
57
+ /** Pre-zoom width each flexible column receives once fixed-width columns are accounted for. */
58
+ export declare const computeFlexColumnWidth: (effectiveTableWidth: number | null, fixedColumnWidthTotal: number, flexibleColumnCount: number) => number | null;
59
+ //# sourceMappingURL=tableZoomLayout.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"tableZoomLayout.d.ts","sourceRoot":"","sources":["../../../src/patterns/table/tableZoomLayout.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,SAAS,CAAC;AAE/C;;;;;GAKG;AAEH,eAAO,MAAM,kBAAkB,MAAM,CAAC;AACtC,eAAO,MAAM,sBAAsB,KAAK,CAAC;AACzC,eAAO,MAAM,sBAAsB,MAAM,CAAC;AAC1C,eAAO,MAAM,uBAAuB,KAAK,CAAC;AAC1C,eAAO,MAAM,wBAAwB,UAAU,CAAC;AAChD,eAAO,MAAM,iCAAiC,UAAU,CAAC;AAEzD;;;;GAIG;AACH,eAAO,MAAM,iBAAiB,MAAM,CAAC;AAErC,eAAO,MAAM,KAAK,GAAI,OAAO,MAAM,EAAE,KAAK,MAAM,EAAE,KAAK,MAAM,WACxB,CAAC;AAEtC,eAAO,MAAM,YAAY,GAAI,OAAO,MAAM,GAAG,SAAS,KAAG,MAIxD,CAAC;AAEF;;;;;GAKG;AACH,eAAO,MAAM,eAAe,QAAO,OAGJ,CAAC;AAEhC,eAAO,MAAM,mBAAmB,GAAI,QAAQ,eAAe;;;;;CAc1D,CAAC;AAEF;;;;;;;GAOG;AACH,eAAO,MAAM,oBAAoB,GAC/B,gBAAgB,MAAM,GAAG,IAAI,EAC7B,eAAe,MAAM,KACpB,MAAoF,CAAC;AAExF,yFAAyF;AACzF,eAAO,MAAM,4BAA4B,GACvC,eAAe,MAAM,GAAG,IAAI,EAC5B,gBAAgB,MAAM,GAAG,IAAI,EAC7B,WAAW,MAAM,KAChB,OAKA,CAAC;AAEJ;;;;;;;;;GASG;AACH,eAAO,MAAM,0BAA0B,GACrC,eAAe,MAAM,GAAG,IAAI,EAC5B,gBAAgB,MAAM,GAAG,IAAI,EAC7B,WAAW,MAAM,KAChB,MAAM,GAAG,IAKX,CAAC;AAEF,+FAA+F;AAC/F,eAAO,MAAM,sBAAsB,GACjC,qBAAqB,MAAM,GAAG,IAAI,EAClC,uBAAuB,MAAM,EAC7B,qBAAqB,MAAM,KAC1B,MAAM,GAAG,IAOX,CAAC"}
@@ -0,0 +1,37 @@
1
+ const s = 100, L = 60, M = 120, E = 10, O = "300px", r = "160px", u = 0.5, m = (o, t, _) => Math.min(Math.max(o, t), _), c = (o) => {
2
+ if (!o) return 0;
3
+ const t = o.match(/^(\d+(?:\.\d+)?)px$/);
4
+ return t ? Number(t[1]) : 0;
5
+ }, A = () => typeof CSS > "u" || typeof CSS.supports != "function" ? !0 : CSS.supports("zoom", "1"), T = (o) => {
6
+ const t = Math.max(1, o.minZoom ?? 60), _ = Math.max(t, o.maxZoom ?? 120), n = Math.max(1, o.step ?? 10);
7
+ return {
8
+ minZoom: t,
9
+ maxZoom: _,
10
+ step: n,
11
+ defaultZoom: m(
12
+ o.defaultZoom ?? 100,
13
+ t,
14
+ _
15
+ )
16
+ };
17
+ }, a = (o, t) => o ? Math.max(o, t) : t, e = (o, t, _) => !!(o && t && o * _ > t + 0.5), p = (o, t, _) => o == null ? null : t ? Math.max(o, t / _) : o, Z = (o, t, _) => !o || _ === 0 ? null : Math.max(
18
+ 0,
19
+ (o - t) / _
20
+ );
21
+ export {
22
+ O as DEFAULT_COLUMN_MAX_WIDTH,
23
+ s as DEFAULT_TABLE_ZOOM,
24
+ M as DEFAULT_TABLE_ZOOM_MAX,
25
+ L as DEFAULT_TABLE_ZOOM_MIN,
26
+ E as DEFAULT_TABLE_ZOOM_STEP,
27
+ r as DEFAULT_ZOOMABLE_COLUMN_MIN_WIDTH,
28
+ u as SCROLL_EPSILON_PX,
29
+ m as clamp,
30
+ p as computeEffectiveTableWidth,
31
+ a as computeFillBaseWidth,
32
+ Z as computeFlexColumnWidth,
33
+ e as computeNeedsHorizontalScroll,
34
+ T as normalizeZoomConfig,
35
+ c as parsePxValue,
36
+ A as supportsCssZoom
37
+ };
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=tableZoomLayout.test.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"tableZoomLayout.test.d.ts","sourceRoot":"","sources":["../../../src/patterns/table/tableZoomLayout.test.ts"],"names":[],"mappings":""}
@@ -39,6 +39,8 @@ export interface TableToolbarProps {
39
39
  align?: AlignToolConfig;
40
40
  groupBy?: GroupByToolConfig;
41
41
  summary?: SummaryToolConfig;
42
+ /** Rendered immediately to the LEFT of the search input. `trailing` sits to its right. */
43
+ beforeSearch?: ReactNode;
42
44
  trailing?: ReactNode;
43
45
  searchCollapsible?: boolean;
44
46
  disableExtendedTools?: boolean;
@@ -1 +1 @@
1
- {"version":3,"file":"TableToolbar.d.ts","sourceRoot":"","sources":["../../../../src/patterns/table/toolbar/TableToolbar.tsx"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"TableToolbar.d.ts","sourceRoot":"","sources":["../../../../src/patterns/table/toolbar/TableToolbar.tsx"],"names":[],"mappings":"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"}