@ishibashi0112/spreadsheet-grid-core 0.39.0 → 0.41.0
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/controllers/asyncSelectOptionsSource.cjs +1 -0
- package/dist/controllers/asyncSelectOptionsSource.d.ts +32 -0
- package/dist/controllers/asyncSelectOptionsSource.js +90 -0
- package/dist/controllers/autoHeightMeasurer.cjs +1 -1
- package/dist/controllers/autoHeightMeasurer.js +19 -19
- package/dist/controllers/clipboardController.cjs +2 -2
- package/dist/controllers/clipboardController.js +54 -47
- package/dist/controllers/columnAutosizeRunner.cjs +1 -1
- package/dist/controllers/columnAutosizeRunner.js +7 -7
- package/dist/controllers/filterPopoverController.cjs +1 -1
- package/dist/controllers/filterPopoverController.js +7 -7
- package/dist/controllers/keyboardController.cjs +1 -1
- package/dist/controllers/keyboardController.js +10 -4
- package/dist/controllers/pointerInteractionsController.cjs +1 -1
- package/dist/controllers/pointerInteractionsController.js +71 -71
- package/dist/controllers/selectOptionsCollector.cjs +1 -1
- package/dist/controllers/selectOptionsCollector.d.ts +4 -1
- package/dist/controllers/selectOptionsCollector.js +7 -7
- package/dist/engine/columnCommands.cjs +1 -1
- package/dist/engine/columnCommands.js +54 -54
- package/dist/engine/filterPopoverCommands.cjs +1 -1
- package/dist/engine/filterPopoverCommands.d.ts +5 -2
- package/dist/engine/filterPopoverCommands.js +12 -12
- package/dist/engine/gridApi.cjs +1 -1
- package/dist/engine/gridApi.d.ts +6 -0
- package/dist/engine/gridApi.js +75 -56
- package/dist/engine/notifiers.cjs +1 -1
- package/dist/engine/notifiers.d.ts +3 -1
- package/dist/engine/notifiers.js +11 -11
- package/dist/engine/rowPipeline.cjs +1 -1
- package/dist/engine/rowPipeline.d.ts +13 -2
- package/dist/engine/rowPipeline.js +51 -39
- package/dist/engine/verticalLayout.cjs +1 -1
- package/dist/engine/verticalLayout.d.ts +4 -0
- package/dist/engine/verticalLayout.js +40 -28
- package/dist/logic/exportCsv.cjs +2 -2
- package/dist/logic/exportCsv.d.ts +4 -1
- package/dist/logic/exportCsv.js +16 -11
- package/dist/logic/exportData.cjs +1 -1
- package/dist/logic/exportData.d.ts +3 -1
- package/dist/logic/exportData.js +29 -13
- package/dist/logic/gridState.cjs +1 -1
- package/dist/logic/gridState.d.ts +5 -0
- package/dist/logic/gridState.js +10 -7
- package/dist/logic/labelRows.cjs +1 -0
- package/dist/logic/labelRows.d.ts +45 -0
- package/dist/logic/labelRows.js +157 -0
- package/dist/logic/verticalGeometry.cjs +1 -1
- package/dist/logic/verticalGeometry.d.ts +5 -0
- package/dist/logic/verticalGeometry.js +39 -5
- package/dist/model/gridTypes.core.d.ts +50 -0
- package/dist/model/gridTypes.unbound.d.ts +1 -0
- package/package.json +1 -1
|
@@ -1,31 +1,42 @@
|
|
|
1
1
|
import { buildRowHeightStore as e, createAutoHeightRowMetrics as t } from "../logic/rowHeightStore.js";
|
|
2
2
|
import { resolveDetailRowExtras as n } from "../logic/detailRow.js";
|
|
3
|
-
import { MAX_BODY_PX as r, computeAutoHeightVerticalGeometry as i, computeVerticalGeometry as a, createDetailRowMetrics as o,
|
|
4
|
-
import { createMemo as
|
|
3
|
+
import { MAX_BODY_PX as r, computeAutoHeightVerticalGeometry as i, computeVerticalGeometry as a, createDetailRowMetrics as o, createRowHeightOverrideMetrics as s, createUniformRowMetrics as c, shouldUseAutoHeight as l } from "../logic/verticalGeometry.js";
|
|
4
|
+
import { createMemo as u } from "./memo.js";
|
|
5
5
|
//#region src/engine/verticalLayout.ts
|
|
6
|
-
var
|
|
7
|
-
let
|
|
6
|
+
var d = [], f = [], p = [], m = 20, h = () => {
|
|
7
|
+
let h = u((e) => e.some((e) => e.autoHeight === !0)), g = u((t, n, r, i, a) => t ? e(n, r, i.getRowKey, a) : null), _ = u((e, n, r, i, a) => e && n ? t(n) : c(i, a)), v = u((e, t, r, i, a, o, s) => e ? n({
|
|
8
8
|
expandedKeys: t,
|
|
9
9
|
rowModel: r,
|
|
10
10
|
height: i,
|
|
11
11
|
isExpandable: a,
|
|
12
12
|
cache: o.current,
|
|
13
13
|
allowScan: !s
|
|
14
|
-
}) :
|
|
14
|
+
}) : d), y = u((e, t) => {
|
|
15
|
+
if (!e || t === void 0 || e.labels.length === 0) return f;
|
|
16
|
+
let n = [];
|
|
17
|
+
for (let r = 0; r < e.labels.length; r += 1) {
|
|
18
|
+
let i = e.labels[r];
|
|
19
|
+
n.push({
|
|
20
|
+
index: e.labelViewIndexes[r],
|
|
21
|
+
height: typeof t == "function" ? t(i.row) : t
|
|
22
|
+
});
|
|
23
|
+
}
|
|
24
|
+
return n;
|
|
25
|
+
}), b = u((e, t) => t.length > 0 ? s(e, t) : e), x = u((e, t, n) => e ? o(t, n) : t), S = u((e, t, n, o, s, c, l) => e ? i({
|
|
15
26
|
headerHeight: s,
|
|
16
27
|
viewportHeight: c,
|
|
17
28
|
scrollTop: l,
|
|
18
|
-
overscan:
|
|
29
|
+
overscan: m
|
|
19
30
|
}, t) : a({
|
|
20
31
|
rowCount: n,
|
|
21
32
|
rowHeight: o,
|
|
22
33
|
headerHeight: s,
|
|
23
34
|
viewportHeight: c,
|
|
24
35
|
scrollTop: l,
|
|
25
|
-
overscan:
|
|
36
|
+
overscan: m,
|
|
26
37
|
maxBodyPx: r
|
|
27
|
-
})),
|
|
28
|
-
if (!e) return
|
|
38
|
+
})), C = u((e, t, n) => {
|
|
39
|
+
if (!e) return p;
|
|
29
40
|
let r = [];
|
|
30
41
|
for (let e of t) e.detailSize !== void 0 && e.detailSize > 0 && r.push({
|
|
31
42
|
rowKey: n.getRowKey(e.index) ?? e.index,
|
|
@@ -34,27 +45,28 @@ var u = [], d = [], f = 20, p = () => {
|
|
|
34
45
|
return r;
|
|
35
46
|
});
|
|
36
47
|
return (e) => {
|
|
37
|
-
let { isServerSide: t, autoHeight: n, visibleColumns: r, viewRowCount: i, estimateRowHeight: a, rowHeight: o, headerHeight: s, viewportHeight:
|
|
48
|
+
let { isServerSide: t, autoHeight: n, visibleColumns: r, viewRowCount: i, estimateRowHeight: a, rowHeight: o, headerHeight: s, viewportHeight: c, scrollTop: u, rowModel: d, measuredHeights: f, autoHeightVersion: p, detailRowEnabled: m, expandedDetailRowKeys: w, detailHeight: T, detailIsExpandable: E, detailIndexCacheRef: D, labelDisplay: O, labelRowHeight: k } = e, A = h(r), j = !t && l(n, A, i, 5e4), M = g(j, i, a, d, f), N = _(j, M, p, i, o), P = v(m, w, d, T, E, D, t), F = y(t ? null : O, k), I = b(N, F), L = I !== N && I.totalBodyHeight <= 15e6, R = L ? I : N, z = P.length > 0 && R.totalBodyHeight + P.reduce((e, t) => e + t.height, 0) <= 15e6, B = x(z, R, P), V = S(j || z || L, B, i, o, s, c, u), H = V.rows, U = C(z, H, d);
|
|
38
49
|
return {
|
|
39
|
-
hasAutoHeightColumn:
|
|
40
|
-
autoHeightActive:
|
|
41
|
-
rowHeightStore:
|
|
42
|
-
baseRowMetrics:
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
50
|
+
hasAutoHeightColumn: A,
|
|
51
|
+
autoHeightActive: j,
|
|
52
|
+
rowHeightStore: M,
|
|
53
|
+
baseRowMetrics: N,
|
|
54
|
+
labelHeightActive: L,
|
|
55
|
+
detailExtras: P,
|
|
56
|
+
detailActive: z,
|
|
57
|
+
rowMetrics: B,
|
|
58
|
+
verticalGeometry: V,
|
|
59
|
+
virtualRows: H,
|
|
60
|
+
virtualRowIndexes: V.rowIndexSet,
|
|
61
|
+
detailEntries: U,
|
|
62
|
+
windowFirstRow: H.length > 0 ? H[0].index : 0,
|
|
63
|
+
windowLastRow: H.length > 0 ? H[H.length - 1].index : -1,
|
|
64
|
+
physicalBodyHeight: V.physicalBodyHeight,
|
|
65
|
+
bodyLayerTransform: V.translateY === 0 ? void 0 : `translateY(${V.translateY}px)`,
|
|
66
|
+
verticalScaleFactor: V.scaleFactor,
|
|
67
|
+
overlayBaseOffset: V.windowBaseOffsetPx
|
|
56
68
|
};
|
|
57
69
|
};
|
|
58
70
|
};
|
|
59
71
|
//#endregion
|
|
60
|
-
export {
|
|
72
|
+
export { h as createVerticalLayoutResolver };
|
package/dist/logic/exportCsv.cjs
CHANGED
|
@@ -1,3 +1,3 @@
|
|
|
1
1
|
Object.defineProperty(exports,Symbol.toStringTag,{value:`Module`});const e=require("../utils/permissions.cjs");var t=(e,t)=>e.includes(t)||e.includes(`"`)||e.includes(`
|
|
2
|
-
`)||e.includes(`\r`)?`"${e.replace(/"/g,`""`)}"`:e,n=(t,n)=>{let r=e.getCellValue(t,n);return n.formatClipboardValue?n.formatClipboardValue(r,t):String(r??``)},r=({getRow:e,startRow:
|
|
3
|
-
`);return
|
|
2
|
+
`)||e.includes(`\r`)?`"${e.replace(/"/g,`""`)}"`:e,n=(t,n)=>{let r=e.getCellValue(t,n);return n.formatClipboardValue?n.formatClipboardValue(r,t):String(r??``)},r=e=>e==null?``:String(e),i=({getRow:e,startRow:i,endRow:a,columns:o,delimiter:s=`,`,includeHeaders:c=!0,bom:l=!1,isRowIncluded:u,getLabelLine:d})=>{let f=[];c&&f.push(o.map(e=>t(e.title??e.key,s)).join(s));for(let c=i;c<a;c+=1){let i=e(c);if(!i){let e=d?.(c);e&&f.push(o.map((n,i)=>t(r(e[i]),s)).join(s));continue}if(u&&!u(i,c))continue;let a=o.map(e=>t(n(i,e),s));f.push(a.join(s))}let p=f.join(`\r
|
|
3
|
+
`);return l?`\uFEFF${p}`:p};exports.labelExportCellText=r,exports.serializeRowsToCsv=i;
|
|
@@ -8,5 +8,8 @@ export type SerializeRowsToCsvParams<T> = {
|
|
|
8
8
|
includeHeaders?: boolean;
|
|
9
9
|
bom?: boolean;
|
|
10
10
|
isRowIncluded?: (row: T, rowIndex: number) => boolean;
|
|
11
|
+
getLabelLine?: (rowIndex: number) => LabelExportLine | undefined;
|
|
11
12
|
};
|
|
12
|
-
export
|
|
13
|
+
export type LabelExportLine = ReadonlyArray<string | number | null | undefined>;
|
|
14
|
+
export declare const labelExportCellText: (value: string | number | null | undefined) => string;
|
|
15
|
+
export declare const serializeRowsToCsv: <T>({ getRow, startRow, endRow, columns, delimiter, includeHeaders, bom, isRowIncluded, getLabelLine, }: SerializeRowsToCsvParams<T>) => string;
|
package/dist/logic/exportCsv.js
CHANGED
|
@@ -3,17 +3,22 @@ import { getCellValue as e } from "../utils/permissions.js";
|
|
|
3
3
|
var t = (e, t) => e.includes(t) || e.includes("\"") || e.includes("\n") || e.includes("\r") ? `"${e.replace(/"/g, "\"\"")}"` : e, n = (t, n) => {
|
|
4
4
|
let r = e(t, n);
|
|
5
5
|
return n.formatClipboardValue ? n.formatClipboardValue(r, t) : String(r ?? "");
|
|
6
|
-
}, r = ({ getRow: e, startRow:
|
|
7
|
-
let
|
|
8
|
-
|
|
9
|
-
for (let
|
|
10
|
-
let
|
|
11
|
-
if (!
|
|
12
|
-
|
|
13
|
-
|
|
6
|
+
}, r = (e) => e == null ? "" : String(e), i = ({ getRow: e, startRow: i, endRow: a, columns: o, delimiter: s = ",", includeHeaders: c = !0, bom: l = !1, isRowIncluded: u, getLabelLine: d }) => {
|
|
7
|
+
let f = [];
|
|
8
|
+
c && f.push(o.map((e) => t(e.title ?? e.key, s)).join(s));
|
|
9
|
+
for (let c = i; c < a; c += 1) {
|
|
10
|
+
let i = e(c);
|
|
11
|
+
if (!i) {
|
|
12
|
+
let e = d?.(c);
|
|
13
|
+
e && f.push(o.map((n, i) => t(r(e[i]), s)).join(s));
|
|
14
|
+
continue;
|
|
15
|
+
}
|
|
16
|
+
if (u && !u(i, c)) continue;
|
|
17
|
+
let a = o.map((e) => t(n(i, e), s));
|
|
18
|
+
f.push(a.join(s));
|
|
14
19
|
}
|
|
15
|
-
let
|
|
16
|
-
return
|
|
20
|
+
let p = f.join("\r\n");
|
|
21
|
+
return l ? `\uFEFF${p}` : p;
|
|
17
22
|
};
|
|
18
23
|
//#endregion
|
|
19
|
-
export { r as serializeRowsToCsv };
|
|
24
|
+
export { r as labelExportCellText, i as serializeRowsToCsv };
|
|
@@ -1 +1 @@
|
|
|
1
|
-
Object.defineProperty(exports,Symbol.toStringTag,{value:`Module`});const e=require("../utils/permissions.cjs");var
|
|
1
|
+
Object.defineProperty(exports,Symbol.toStringTag,{value:`Module`});const e=require("../utils/permissions.cjs"),t=require("./exportCsv.cjs");var n=({getRow:n,startRow:r,endRow:i,columns:a,isRowIncluded:o,getLabelLine:s})=>{let c=a.map(e=>({key:e.key,title:e.title??e.key})),l=[],u=s?[]:void 0;for(let c=r;c<i;c+=1){let r=n(c);if(!r){let e=s?.(c);e&&(l.push(a.map((n,r)=>{let i=e[r];return{value:i??null,text:t.labelExportCellText(i)}})),u?.push(`label`));continue}o&&!o(r,c)||(u?.push(`data`),l.push(a.map(t=>{let n=e.getCellValue(r,t);return{value:n,text:t.formatClipboardValue?t.formatClipboardValue(n,r):String(n??``)}})))}return u?{columns:c,rows:l,rowKinds:u}:{columns:c,rows:l}};exports.buildGridExportData=n;
|
|
@@ -1,9 +1,11 @@
|
|
|
1
1
|
import type { GridColumn, GridExportData } from '../model/gridTypes.unbound';
|
|
2
|
+
import { type LabelExportLine } from './exportCsv';
|
|
2
3
|
export type BuildGridExportDataParams<T> = {
|
|
3
4
|
getRow: (viewIndex: number) => T;
|
|
4
5
|
startRow: number;
|
|
5
6
|
endRow: number;
|
|
6
7
|
columns: GridColumn<T>[];
|
|
7
8
|
isRowIncluded?: (row: T, rowIndex: number) => boolean;
|
|
9
|
+
getLabelLine?: (rowIndex: number) => LabelExportLine | undefined;
|
|
8
10
|
};
|
|
9
|
-
export declare const buildGridExportData: <T>({ getRow, startRow, endRow, columns, isRowIncluded, }: BuildGridExportDataParams<T>) => GridExportData;
|
|
11
|
+
export declare const buildGridExportData: <T>({ getRow, startRow, endRow, columns, isRowIncluded, getLabelLine, }: BuildGridExportDataParams<T>) => GridExportData;
|
package/dist/logic/exportData.js
CHANGED
|
@@ -1,24 +1,40 @@
|
|
|
1
1
|
import { getCellValue as e } from "../utils/permissions.js";
|
|
2
|
+
import { labelExportCellText as t } from "./exportCsv.js";
|
|
2
3
|
//#region src/logic/exportData.ts
|
|
3
|
-
var
|
|
4
|
-
let
|
|
4
|
+
var n = ({ getRow: n, startRow: r, endRow: i, columns: a, isRowIncluded: o, getLabelLine: s }) => {
|
|
5
|
+
let c = a.map((e) => ({
|
|
5
6
|
key: e.key,
|
|
6
7
|
title: e.title ?? e.key
|
|
7
|
-
})),
|
|
8
|
-
for (let
|
|
9
|
-
let
|
|
10
|
-
|
|
11
|
-
let
|
|
8
|
+
})), l = [], u = s ? [] : void 0;
|
|
9
|
+
for (let c = r; c < i; c += 1) {
|
|
10
|
+
let r = n(c);
|
|
11
|
+
if (!r) {
|
|
12
|
+
let e = s?.(c);
|
|
13
|
+
e && (l.push(a.map((n, r) => {
|
|
14
|
+
let i = e[r];
|
|
15
|
+
return {
|
|
16
|
+
value: i ?? null,
|
|
17
|
+
text: t(i)
|
|
18
|
+
};
|
|
19
|
+
})), u?.push("label"));
|
|
20
|
+
continue;
|
|
21
|
+
}
|
|
22
|
+
o && !o(r, c) || (u?.push("data"), l.push(a.map((t) => {
|
|
23
|
+
let n = e(r, t);
|
|
12
24
|
return {
|
|
13
|
-
value:
|
|
14
|
-
text: t.formatClipboardValue ? t.formatClipboardValue(
|
|
25
|
+
value: n,
|
|
26
|
+
text: t.formatClipboardValue ? t.formatClipboardValue(n, r) : String(n ?? "")
|
|
15
27
|
};
|
|
16
28
|
})));
|
|
17
29
|
}
|
|
18
|
-
return {
|
|
19
|
-
columns:
|
|
20
|
-
rows:
|
|
30
|
+
return u ? {
|
|
31
|
+
columns: c,
|
|
32
|
+
rows: l,
|
|
33
|
+
rowKinds: u
|
|
34
|
+
} : {
|
|
35
|
+
columns: c,
|
|
36
|
+
rows: l
|
|
21
37
|
};
|
|
22
38
|
};
|
|
23
39
|
//#endregion
|
|
24
|
-
export {
|
|
40
|
+
export { n as buildGridExportData };
|
package/dist/logic/gridState.cjs
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
Object.defineProperty(exports,Symbol.toStringTag,{value:`Module`});const e=require("./geometry.cjs");var t=2,n=e=>{switch(e.kind){case`set`:return{...e,values:[...e.values]};case`number`:return{...e,parsed:e.parsed?{...e.parsed}:null};case`numberSet`:return{...e,condition:e.condition?{...e.condition}:null,set:e.set?{...e.set,values:[...e.set.values]}:null};case`textSet`:return{...e,condition:e.condition?{...e.condition}:null,set:e.set?{...e.set,values:[...e.set.values]}:null};case`dateSet`:return{...e,condition:e.condition?{...e.condition}:null,set:e.set?{...e.set,values:[...e.set.values]}:null};case`text`:case`date`:case`select`:return{...e};case`custom`:return{...e}}},r=e=>{let t={};for(let r of Object.keys(e))t[r]=n(e[r]);return t},i=e=>{let t={key:e.key};return e.visible!==void 0&&(t.visible=e.visible),e.pinned!==void 0&&(t.pinned=e.pinned),t},a=e=>e.map(e=>{let t={key:e.key};return e.visible!==void 0&&(t.visible=e.visible),e.pinned!==void 0&&(t.pinned=e.pinned),t}),o=(e,t,n,a=[],o=2)=>({version:o,columnWidths:{...e},filters:{globalText:t.globalText,columnFilters:r(t.columnFilters)},sort:n.map(e=>({...e})),columns:a.map(i)}),s=e=>{let t=e&&typeof e==`object`?e:{},r={},i=t.columnWidths;if(i&&typeof i==`object`){let e=i;for(let t of Object.keys(e)){let n=e[t];typeof n==`number`&&Number.isFinite(n)&&(r[t]=n)}}let a=t.filters&&typeof t.filters==`object`?t.filters:{},o=typeof a.globalText==`string`?a.globalText:``,s={},c=a.columnFilters;if(c&&typeof c==`object`){let e=c;for(let t of Object.keys(e)){let r=e[t];r&&typeof r==`object`&&`kind`in r&&(s[t]=n(r))}}let l=[],u=t.sort;if(Array.isArray(u)){for(let e of u)if(e&&typeof e==`object`){let t=e;typeof t.columnKey==`string`&&(t.direction===`asc`||t.direction===`desc`)&&l.push({columnKey:t.columnKey,direction:t.direction})}}let d,f=t.columns;if(Array.isArray(f)){let e=[];for(let t of f){if(!t||typeof t!=`object`)continue;let n=t;if(typeof n.key!=`string`)continue;let r={key:n.key};typeof n.visible==`boolean`&&(r.visible=n.visible),(n.pinned===`left`||n.pinned===`right`)&&(r.pinned=n.pinned),e.push(r)}d=e}return{version:2,columnWidths:r,filters:{globalText:o,columnFilters:s},sort:l,columns:d}},c=(t,n,r)=>{let i=new Map(t.map(e=>[e.key,e])),a=new Set,o=(e,t)=>{let n=r[e.key],i=typeof n==`number`;if(!t&&!i)return e;let a={...e};return t&&(a.visible=t.visible,a.pinned=t.pinned),i&&(a.width=n),a},s=[];for(let e of n){let t=i.get(e.key);t&&(a.add(e.key),s.push(o(t,e)))}for(let e of t)a.has(e.key)||s.push(o(e,void 0));return e.reorderColumnsByPane(s)},l=(e,t)=>e===null||t===null?e===t:e.mode===`blank`||e.mode===`notBlank`||t.mode===`blank`||t.mode===`notBlank`?e.mode===t.mode:e.mode===t.mode&&e.value===t.value,u=(e,t)=>e===null||t===null?e===t:e.mode===t.mode?e.mode===`range`&&t.mode===`range`?e.from===t.from&&e.to===t.to:e.mode===`preset`&&t.mode===`preset`?e.preset===t.preset:e.mode===`blank`||e.mode===`notBlank`?!0:`value`in e&&`value`in t&&e.value===t.value:!1,d=(e,t)=>e===null||t===null?e===t:(e.mode??`include`)===(t.mode??`include`)&&e.values.length===t.values.length&&e.values.every((e,n)=>e===t.values[n]),f=(e,t)=>e===null||t===null?e===t:e.mode===`comparison`&&t.mode===`comparison`?e.operator===t.operator&&e.value===t.value:e.mode===`range`&&t.mode===`range`?e.min===t.min&&e.max===t.max:e.mode===`blank`||e.mode===`notBlank`?e.mode===t.mode:!1,p=(e,t)=>{switch(e.kind){case`set`:return t.kind===`set`&&(e.mode??`include`)===(t.mode??`include`)&&e.values.length===t.values.length&&e.values.every((e,n)=>e===t.values[n]);case`number`:return t.kind===`number`&&e.raw===t.raw&&f(e.parsed,t.parsed);case`numberSet`:return t.kind===`numberSet`&&f(e.condition,t.condition)&&d(e.set,t.set);case`textSet`:return t.kind===`textSet`&&l(e.condition,t.condition)&&d(e.set,t.set);case`dateSet`:return t.kind===`dateSet`&&u(e.condition,t.condition)&&d(e.set,t.set);case`text`:return t.kind===`text`&&e.value===t.value;case`date`:return t.kind===`date`&&e.value===t.value;case`select`:return t.kind===`select`&&e.value===t.value;case`custom`:return t.kind===`custom`&&Object.is(e.value,t.value)}},m=(e,t)=>{let n=Object.keys(e);if(n.length!==Object.keys(t).length)return!1;for(let r of n)if(!(r in t)||e[r]!==t[r])return!1;return!0},h=(e,t)=>{let n=Object.keys(e);if(n.length!==Object.keys(t).length)return!1;for(let r of n)if(!(r in t)||!p(e[r],t[r]))return!1;return!0},g=(e,t)=>{if(e===void 0||t===void 0)return e===t;if(e.length!==t.length)return!1;for(let n=0;n<e.length;n+=1)if(e[n].key!==t[n].key||e[n].visible!==t[n].visible||e[n].pinned!==t[n].pinned)return!1;return!0},_=(e,t)=>
|
|
1
|
+
Object.defineProperty(exports,Symbol.toStringTag,{value:`Module`});const e=require("./geometry.cjs");var t=2,n=e=>{switch(e.kind){case`set`:return{...e,values:[...e.values]};case`number`:return{...e,parsed:e.parsed?{...e.parsed}:null};case`numberSet`:return{...e,condition:e.condition?{...e.condition}:null,set:e.set?{...e.set,values:[...e.set.values]}:null};case`textSet`:return{...e,condition:e.condition?{...e.condition}:null,set:e.set?{...e.set,values:[...e.set.values]}:null};case`dateSet`:return{...e,condition:e.condition?{...e.condition}:null,set:e.set?{...e.set,values:[...e.set.values]}:null};case`text`:case`date`:case`select`:return{...e};case`custom`:return{...e}}},r=e=>{let t={};for(let r of Object.keys(e))t[r]=n(e[r]);return t},i=e=>{let t={key:e.key};return e.visible!==void 0&&(t.visible=e.visible),e.pinned!==void 0&&(t.pinned=e.pinned),t},a=e=>e.map(e=>{let t={key:e.key};return e.visible!==void 0&&(t.visible=e.visible),e.pinned!==void 0&&(t.pinned=e.pinned),t}),o=(e,t,n,a=[],o=2)=>({version:o,columnWidths:{...e},filters:{globalText:t.globalText,columnFilters:r(t.columnFilters)},sort:n.map(e=>({...e})),columns:a.map(i)}),s=e=>{let t=e&&typeof e==`object`?e:{},r={},i=t.columnWidths;if(i&&typeof i==`object`){let e=i;for(let t of Object.keys(e)){let n=e[t];typeof n==`number`&&Number.isFinite(n)&&(r[t]=n)}}let a=t.filters&&typeof t.filters==`object`?t.filters:{},o=typeof a.globalText==`string`?a.globalText:``,s={},c=a.columnFilters;if(c&&typeof c==`object`){let e=c;for(let t of Object.keys(e)){let r=e[t];r&&typeof r==`object`&&`kind`in r&&(s[t]=n(r))}}let l=[],u=t.sort;if(Array.isArray(u)){for(let e of u)if(e&&typeof e==`object`){let t=e;typeof t.columnKey==`string`&&(t.direction===`asc`||t.direction===`desc`)&&l.push({columnKey:t.columnKey,direction:t.direction})}}let d,f=t.columns;if(Array.isArray(f)){let e=[];for(let t of f){if(!t||typeof t!=`object`)continue;let n=t;if(typeof n.key!=`string`)continue;let r={key:n.key};typeof n.visible==`boolean`&&(r.visible=n.visible),(n.pinned===`left`||n.pinned===`right`)&&(r.pinned=n.pinned),e.push(r)}d=e}return{version:2,columnWidths:r,filters:{globalText:o,columnFilters:s},sort:l,columns:d}},c=(t,n,r)=>{let i=new Map(t.map(e=>[e.key,e])),a=new Set,o=(e,t)=>{let n=r[e.key],i=typeof n==`number`;if(!t&&!i)return e;let a={...e};return t&&(a.visible=t.visible,a.pinned=t.pinned),i&&(a.width=n),a},s=[];for(let e of n){let t=i.get(e.key);t&&(a.add(e.key),s.push(o(t,e)))}for(let e of t)a.has(e.key)||s.push(o(e,void 0));return e.reorderColumnsByPane(s)},l=(e,t)=>e===null||t===null?e===t:e.mode===`blank`||e.mode===`notBlank`||t.mode===`blank`||t.mode===`notBlank`?e.mode===t.mode:e.mode===t.mode&&e.value===t.value,u=(e,t)=>e===null||t===null?e===t:e.mode===t.mode?e.mode===`range`&&t.mode===`range`?e.from===t.from&&e.to===t.to:e.mode===`preset`&&t.mode===`preset`?e.preset===t.preset:e.mode===`blank`||e.mode===`notBlank`?!0:`value`in e&&`value`in t&&e.value===t.value:!1,d=(e,t)=>e===null||t===null?e===t:(e.mode??`include`)===(t.mode??`include`)&&e.values.length===t.values.length&&e.values.every((e,n)=>e===t.values[n]),f=(e,t)=>e===null||t===null?e===t:e.mode===`comparison`&&t.mode===`comparison`?e.operator===t.operator&&e.value===t.value:e.mode===`range`&&t.mode===`range`?e.min===t.min&&e.max===t.max:e.mode===`blank`||e.mode===`notBlank`?e.mode===t.mode:!1,p=(e,t)=>{switch(e.kind){case`set`:return t.kind===`set`&&(e.mode??`include`)===(t.mode??`include`)&&e.values.length===t.values.length&&e.values.every((e,n)=>e===t.values[n]);case`number`:return t.kind===`number`&&e.raw===t.raw&&f(e.parsed,t.parsed);case`numberSet`:return t.kind===`numberSet`&&f(e.condition,t.condition)&&d(e.set,t.set);case`textSet`:return t.kind===`textSet`&&l(e.condition,t.condition)&&d(e.set,t.set);case`dateSet`:return t.kind===`dateSet`&&u(e.condition,t.condition)&&d(e.set,t.set);case`text`:return t.kind===`text`&&e.value===t.value;case`date`:return t.kind===`date`&&e.value===t.value;case`select`:return t.kind===`select`&&e.value===t.value;case`custom`:return t.kind===`custom`&&Object.is(e.value,t.value)}},m=(e,t)=>{let n=Object.keys(e);if(n.length!==Object.keys(t).length)return!1;for(let r of n)if(!(r in t)||e[r]!==t[r])return!1;return!0},h=(e,t)=>{let n=Object.keys(e);if(n.length!==Object.keys(t).length)return!1;for(let r of n)if(!(r in t)||!p(e[r],t[r]))return!1;return!0},g=(e,t)=>{if(e===void 0||t===void 0)return e===t;if(e.length!==t.length)return!1;for(let n=0;n<e.length;n+=1)if(e[n].key!==t[n].key||e[n].visible!==t[n].visible||e[n].pinned!==t[n].pinned)return!1;return!0},_=(e,t)=>e.globalText===t.globalText&&h(e.columnFilters,t.columnFilters),v=(e,t)=>{if(e.length!==t.length)return!1;for(let n=0;n<e.length;n+=1)if(e[n].columnKey!==t[n].columnKey||e[n].direction!==t[n].direction)return!1;return!0},y=e=>({globalText:e.globalText,columnFilters:r(e.columnFilters)}),b=e=>e.map(e=>({...e})),x=(e,t)=>!(e.version!==t.version||!m(e.columnWidths,t.columnWidths)||!_(e.filters,t.filters)||!v(e.sort,t.sort)||!g(e.columns,t.columns)),S=(e,t,n)=>n?{emit:!1,nextLast:e}:e===null||x(e,t)?{emit:!1,nextLast:t}:{emit:!0,nextLast:t};exports.GRID_STATE_VERSION=t,exports.applyColumnState=c,exports.buildGridState=o,exports.cloneColumnFilterValue=n,exports.cloneColumnFilters=r,exports.cloneFilterState=y,exports.cloneSortState=b,exports.decideStateChangeEmit=S,exports.extractColumnState=a,exports.isSameFilterState=_,exports.isSameGridState=x,exports.isSameSortState=v,exports.migrateGridState=s;
|
|
@@ -1,10 +1,15 @@
|
|
|
1
1
|
import type { ColumnFilterValue, GridColumn, GridColumnState, GridFilterState, GridSortState, GridState } from '../model/gridTypes.unbound';
|
|
2
2
|
export declare const GRID_STATE_VERSION = 2;
|
|
3
3
|
export declare const cloneColumnFilterValue: (value: ColumnFilterValue) => ColumnFilterValue;
|
|
4
|
+
export declare const cloneColumnFilters: (columnFilters: Record<string, ColumnFilterValue>) => Record<string, ColumnFilterValue>;
|
|
4
5
|
export declare const extractColumnState: <T>(columns: GridColumn<T>[]) => GridColumnState[];
|
|
5
6
|
export declare const buildGridState: (columnWidths: Record<string, number>, filters: GridFilterState, sort: GridSortState, columns?: GridColumnState[], version?: number) => GridState;
|
|
6
7
|
export declare const migrateGridState: (input: unknown) => GridState;
|
|
7
8
|
export declare const applyColumnState: <T>(currentColumns: GridColumn<T>[], savedColumnState: GridColumnState[], savedWidths: Record<string, number>) => GridColumn<T>[];
|
|
9
|
+
export declare const isSameFilterState: (a: GridFilterState, b: GridFilterState) => boolean;
|
|
10
|
+
export declare const isSameSortState: (a: GridSortState, b: GridSortState) => boolean;
|
|
11
|
+
export declare const cloneFilterState: (filters: GridFilterState) => GridFilterState;
|
|
12
|
+
export declare const cloneSortState: (sort: GridSortState) => GridSortState;
|
|
8
13
|
export declare const isSameGridState: (a: GridState, b: GridState) => boolean;
|
|
9
14
|
export type StateChangeDecision = {
|
|
10
15
|
emit: boolean;
|
package/dist/logic/gridState.js
CHANGED
|
@@ -147,14 +147,17 @@ var t = 2, n = (e) => {
|
|
|
147
147
|
if (e.length !== t.length) return !1;
|
|
148
148
|
for (let n = 0; n < e.length; n += 1) if (e[n].key !== t[n].key || e[n].visible !== t[n].visible || e[n].pinned !== t[n].pinned) return !1;
|
|
149
149
|
return !0;
|
|
150
|
-
}, _ = (e, t) => {
|
|
151
|
-
if (e.
|
|
152
|
-
for (let n = 0; n < e.
|
|
153
|
-
return
|
|
154
|
-
},
|
|
150
|
+
}, _ = (e, t) => e.globalText === t.globalText && h(e.columnFilters, t.columnFilters), v = (e, t) => {
|
|
151
|
+
if (e.length !== t.length) return !1;
|
|
152
|
+
for (let n = 0; n < e.length; n += 1) if (e[n].columnKey !== t[n].columnKey || e[n].direction !== t[n].direction) return !1;
|
|
153
|
+
return !0;
|
|
154
|
+
}, y = (e) => ({
|
|
155
|
+
globalText: e.globalText,
|
|
156
|
+
columnFilters: r(e.columnFilters)
|
|
157
|
+
}), b = (e) => e.map((e) => ({ ...e })), x = (e, t) => !(e.version !== t.version || !m(e.columnWidths, t.columnWidths) || !_(e.filters, t.filters) || !v(e.sort, t.sort) || !g(e.columns, t.columns)), S = (e, t, n) => n ? {
|
|
155
158
|
emit: !1,
|
|
156
159
|
nextLast: e
|
|
157
|
-
} : e === null ||
|
|
160
|
+
} : e === null || x(e, t) ? {
|
|
158
161
|
emit: !1,
|
|
159
162
|
nextLast: t
|
|
160
163
|
} : {
|
|
@@ -162,4 +165,4 @@ var t = 2, n = (e) => {
|
|
|
162
165
|
nextLast: t
|
|
163
166
|
};
|
|
164
167
|
//#endregion
|
|
165
|
-
export { t as GRID_STATE_VERSION, c as applyColumnState, o as buildGridState, n as cloneColumnFilterValue,
|
|
168
|
+
export { t as GRID_STATE_VERSION, c as applyColumnState, o as buildGridState, n as cloneColumnFilterValue, r as cloneColumnFilters, y as cloneFilterState, b as cloneSortState, S as decideStateChangeEmit, a as extractColumnState, _ as isSameFilterState, x as isSameGridState, v as isSameSortState, s as migrateGridState };
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
Object.defineProperty(exports,Symbol.toStringTag,{value:`Module`});var e=(e,t)=>{let n=e.length,r=[],i=new Int32Array(n),a=0;for(let o=0;o<n;o+=1)t(e[o],o)&&(r.push(o),a+=1),i[o]=a;return r.length===0?null:{labelIndexes:Int32Array.from(r),sectionBySource:i,dataRowCount:n-r.length}},t=(e,t)=>{let n=new Int32Array(e.dataRowCount),{labelIndexes:r}=e,i=0,a=0;for(let e=0;e<t;e+=1){if(i<r.length&&r[i]===e){i+=1;continue}n[a]=e,a+=1}return n},n=(e,t)=>{if(e.length!==t.length)return!1;for(let n=0;n<e.length;n+=1)if(e[n]!==t[n])return!1;return!0},r=e=>e<0,i=e=>-e-1,a=(e,t,n,r)=>({kind:`label`,row:e[t],sourceIndex:t,label:n(e[t]),sectionRowCount:r}),o=({rows:e,order:t,layout:n,sortMode:r,keepEmptySections:i,sortActive:o,getLabel:s})=>{let{labelIndexes:c,sectionBySource:l,dataRowCount:u}=n,d=c.length,f=d+1,p=t.length!==u,m=o||p,h=[],g=[],_=[],v=(t,n)=>{g.push(a(e,c[t],s,n)),_.push(h.length),h.push(-g.length)},y=()=>({displayOrder:Int32Array.from(h),labels:g,labelViewIndexes:Int32Array.from(_)});if(r===`hide`&&m)return{displayOrder:t,labels:g,labelViewIndexes:new Int32Array};let b=new Int32Array(f);for(let e=0;e<t.length;e+=1)b[l[t[e]]]+=1;let x=e=>b[e+1]>0||i||!p;if(r===`follow`&&m){let e=new Int32Array(f).fill(-1);for(let n=0;n<t.length;n+=1){let r=l[t[n]];e[r]===-1&&(e[r]=n)}let n=new Map;for(let t=0;t<d;t+=1){let r=e[t+1];r!==-1&&n.set(r,t)}let r=0,a=t=>{for(;r<t;)i&&e[r+1]===-1&&v(r,0),r+=1};for(let e=0;e<t.length;e+=1){let i=n.get(e);i!==void 0&&(a(i),r=Math.max(r,i+1),v(i,b[i+1])),h.push(t[e])}return a(d),y()}let S=new Int32Array(f+1);for(let e=0;e<f;e+=1)S[e+1]=S[e]+b[e];let C=new Int32Array(t.length),w=S.slice(0,f);for(let e=0;e<t.length;e+=1){let n=l[t[e]];C[w[n]]=t[e],w[n]+=1}for(let e=0;e<f;e+=1)if(!(e>0&&!x(e-1))){e>0&&v(e-1,b[e]);for(let t=S[e];t<S[e+1];t+=1)h.push(C[t])}return y()},s=(e,t,n)=>{let{displayOrder:a,labels:o}=e;return{getRowCount:()=>a.length,getRow:e=>t[a[e]],getSourceIndex:e=>{let t=a[e];return t>=0?t:void 0},getRowKey:e=>{let s=a[e];if(r(s)){let e=o[i(s)];return n(e.row,e.sourceIndex)}return n(t[s],s)},getLabelRow:e=>{let t=a[e];return r(t)?o[i(t)]:void 0}}},c=(e,t,n)=>{let r=new WeakMap,i=i=>{let a=e.getRow(i);if(a===void 0)return;let o=e.getSourceIndex(i);if(!t(a,o))return;let s=typeof a==`object`&&!!a,c=s?r.get(a):void 0;if(c)return c;let l={kind:`label`,row:a,sourceIndex:o,label:n(a),sectionRowCount:void 0};return s&&r.set(a,l),l};return{getRowCount:e.getRowCount,getRow:t=>i(t)?void 0:e.getRow(t),getSourceIndex:t=>i(t)?void 0:e.getSourceIndex(t),getRowKey:e.getRowKey,getGroupRow:e.getGroupRow,getLabelRow:i}},l=(e,t)=>{let n=0,r=e.length;for(;n<r;){let i=n+r>>>1;e[i]<t?n=i+1:r=i}return n},u=(e,t)=>t-l(e,t)+1,d=(e,t)=>{let n=l(e,t+1);return n>0?e[n-1]:-1},f=(e,t,n)=>{let r=[],i=e.getRowCount(),a=t;for(;r.length<n;)(a>=i||!e.getLabelRow?.(a))&&r.push(a),a+=1;return r},p=(e,t,n)=>{if(e.length===0||t.rowCount<=0||n<=0)return null;let r=l(e,t.rowAtContentY(n)+1);if(r===0)return null;let i=e[r-1];if(t.rowTop(i)>=n)return null;let a=t.cellHeight(i),o=0;if(r<e.length){let i=t.rowTop(e[r])-n;i<a&&(o=Math.min(a,Math.max(a-i,0)))}return{labelViewIndex:i,height:a,pushOffset:o}};exports.buildLabelDisplay=o,exports.countLabelsBefore=l,exports.createLabelFreeOrder=t,exports.createLabelRowModel=s,exports.isLabelOrderValue=r,exports.isSameOrder=n,exports.labelIndexOfOrderValue=i,exports.resolveDataRowNumber=u,exports.resolveLabelRowLayout=e,exports.resolvePasteTargetViewIndexes=f,exports.resolveSectionLabelViewIndex=d,exports.resolveStickyLabel=p,exports.wrapRowModelWithLabelRows=c;
|
|
@@ -0,0 +1,45 @@
|
|
|
1
|
+
import type { GridLabelRow, GridRowKey, LabelRowSortMode, RowModel } from '../model/gridTypes.unbound';
|
|
2
|
+
import type { RowOrder } from './filtering';
|
|
3
|
+
export type LabelRowLayout = {
|
|
4
|
+
labelIndexes: Int32Array;
|
|
5
|
+
sectionBySource: Int32Array;
|
|
6
|
+
dataRowCount: number;
|
|
7
|
+
};
|
|
8
|
+
export declare const resolveLabelRowLayout: <T>(rows: readonly T[], isLabelRow: (row: T, sourceIndex: number) => boolean) => LabelRowLayout | null;
|
|
9
|
+
export declare const createLabelFreeOrder: (layout: LabelRowLayout, rowCount: number) => RowOrder;
|
|
10
|
+
export declare const isSameOrder: (order: ArrayLike<number>, baseOrder: ArrayLike<number>) => boolean;
|
|
11
|
+
export type LabelDisplay<T> = {
|
|
12
|
+
displayOrder: Int32Array;
|
|
13
|
+
labels: GridLabelRow<T>[];
|
|
14
|
+
labelViewIndexes: Int32Array;
|
|
15
|
+
};
|
|
16
|
+
export declare const isLabelOrderValue: (value: number) => boolean;
|
|
17
|
+
export declare const labelIndexOfOrderValue: (value: number) => number;
|
|
18
|
+
export type BuildLabelDisplayArgs<T> = {
|
|
19
|
+
rows: readonly T[];
|
|
20
|
+
order: RowOrder;
|
|
21
|
+
layout: LabelRowLayout;
|
|
22
|
+
sortMode: LabelRowSortMode;
|
|
23
|
+
keepEmptySections: boolean;
|
|
24
|
+
sortActive: boolean;
|
|
25
|
+
getLabel: (row: T) => string;
|
|
26
|
+
};
|
|
27
|
+
export declare const buildLabelDisplay: <T>({ rows, order, layout, sortMode, keepEmptySections, sortActive, getLabel, }: BuildLabelDisplayArgs<T>) => LabelDisplay<T>;
|
|
28
|
+
export declare const createLabelRowModel: <T>(display: LabelDisplay<T>, rows: readonly T[], rowKeyGetter: (row: T, index: number) => GridRowKey) => RowModel<T>;
|
|
29
|
+
export declare const wrapRowModelWithLabelRows: <T>(base: RowModel<T>, isLabelRow: (row: T, sourceIndex: number) => boolean, getLabel: (row: T) => string) => RowModel<T>;
|
|
30
|
+
export declare const countLabelsBefore: (labelViewIndexes: ArrayLike<number>, viewIndex: number) => number;
|
|
31
|
+
export declare const resolveDataRowNumber: (labelViewIndexes: ArrayLike<number>, viewIndex: number) => number;
|
|
32
|
+
export declare const resolveSectionLabelViewIndex: (labelViewIndexes: ArrayLike<number>, viewIndex: number) => number;
|
|
33
|
+
export declare const resolvePasteTargetViewIndexes: <T>(rowModel: RowModel<T>, startViewIndex: number, count: number) => number[];
|
|
34
|
+
export type StickyLabelResolution = {
|
|
35
|
+
labelViewIndex: number;
|
|
36
|
+
height: number;
|
|
37
|
+
pushOffset: number;
|
|
38
|
+
};
|
|
39
|
+
export type StickyLabelMetrics = {
|
|
40
|
+
rowCount: number;
|
|
41
|
+
rowTop: (index: number) => number;
|
|
42
|
+
cellHeight: (index: number) => number;
|
|
43
|
+
rowAtContentY: (y: number) => number;
|
|
44
|
+
};
|
|
45
|
+
export declare const resolveStickyLabel: (labelViewIndexes: ArrayLike<number>, rowMetrics: StickyLabelMetrics, logicalScrollTop: number) => StickyLabelResolution | null;
|
|
@@ -0,0 +1,157 @@
|
|
|
1
|
+
//#region src/logic/labelRows.ts
|
|
2
|
+
var e = (e, t) => {
|
|
3
|
+
let n = e.length, r = [], i = new Int32Array(n), a = 0;
|
|
4
|
+
for (let o = 0; o < n; o += 1) t(e[o], o) && (r.push(o), a += 1), i[o] = a;
|
|
5
|
+
return r.length === 0 ? null : {
|
|
6
|
+
labelIndexes: Int32Array.from(r),
|
|
7
|
+
sectionBySource: i,
|
|
8
|
+
dataRowCount: n - r.length
|
|
9
|
+
};
|
|
10
|
+
}, t = (e, t) => {
|
|
11
|
+
let n = new Int32Array(e.dataRowCount), { labelIndexes: r } = e, i = 0, a = 0;
|
|
12
|
+
for (let e = 0; e < t; e += 1) {
|
|
13
|
+
if (i < r.length && r[i] === e) {
|
|
14
|
+
i += 1;
|
|
15
|
+
continue;
|
|
16
|
+
}
|
|
17
|
+
n[a] = e, a += 1;
|
|
18
|
+
}
|
|
19
|
+
return n;
|
|
20
|
+
}, n = (e, t) => {
|
|
21
|
+
if (e.length !== t.length) return !1;
|
|
22
|
+
for (let n = 0; n < e.length; n += 1) if (e[n] !== t[n]) return !1;
|
|
23
|
+
return !0;
|
|
24
|
+
}, r = (e) => e < 0, i = (e) => -e - 1, a = (e, t, n, r) => ({
|
|
25
|
+
kind: "label",
|
|
26
|
+
row: e[t],
|
|
27
|
+
sourceIndex: t,
|
|
28
|
+
label: n(e[t]),
|
|
29
|
+
sectionRowCount: r
|
|
30
|
+
}), o = ({ rows: e, order: t, layout: n, sortMode: r, keepEmptySections: i, sortActive: o, getLabel: s }) => {
|
|
31
|
+
let { labelIndexes: c, sectionBySource: l, dataRowCount: u } = n, d = c.length, f = d + 1, p = t.length !== u, m = o || p, h = [], g = [], _ = [], v = (t, n) => {
|
|
32
|
+
g.push(a(e, c[t], s, n)), _.push(h.length), h.push(-g.length);
|
|
33
|
+
}, y = () => ({
|
|
34
|
+
displayOrder: Int32Array.from(h),
|
|
35
|
+
labels: g,
|
|
36
|
+
labelViewIndexes: Int32Array.from(_)
|
|
37
|
+
});
|
|
38
|
+
if (r === "hide" && m) return {
|
|
39
|
+
displayOrder: t,
|
|
40
|
+
labels: g,
|
|
41
|
+
labelViewIndexes: /* @__PURE__ */ new Int32Array()
|
|
42
|
+
};
|
|
43
|
+
let b = new Int32Array(f);
|
|
44
|
+
for (let e = 0; e < t.length; e += 1) b[l[t[e]]] += 1;
|
|
45
|
+
let x = (e) => b[e + 1] > 0 || i || !p;
|
|
46
|
+
if (r === "follow" && m) {
|
|
47
|
+
let e = new Int32Array(f).fill(-1);
|
|
48
|
+
for (let n = 0; n < t.length; n += 1) {
|
|
49
|
+
let r = l[t[n]];
|
|
50
|
+
e[r] === -1 && (e[r] = n);
|
|
51
|
+
}
|
|
52
|
+
let n = /* @__PURE__ */ new Map();
|
|
53
|
+
for (let t = 0; t < d; t += 1) {
|
|
54
|
+
let r = e[t + 1];
|
|
55
|
+
r !== -1 && n.set(r, t);
|
|
56
|
+
}
|
|
57
|
+
let r = 0, a = (t) => {
|
|
58
|
+
for (; r < t;) i && e[r + 1] === -1 && v(r, 0), r += 1;
|
|
59
|
+
};
|
|
60
|
+
for (let e = 0; e < t.length; e += 1) {
|
|
61
|
+
let i = n.get(e);
|
|
62
|
+
i !== void 0 && (a(i), r = Math.max(r, i + 1), v(i, b[i + 1])), h.push(t[e]);
|
|
63
|
+
}
|
|
64
|
+
return a(d), y();
|
|
65
|
+
}
|
|
66
|
+
let S = new Int32Array(f + 1);
|
|
67
|
+
for (let e = 0; e < f; e += 1) S[e + 1] = S[e] + b[e];
|
|
68
|
+
let C = new Int32Array(t.length), w = S.slice(0, f);
|
|
69
|
+
for (let e = 0; e < t.length; e += 1) {
|
|
70
|
+
let n = l[t[e]];
|
|
71
|
+
C[w[n]] = t[e], w[n] += 1;
|
|
72
|
+
}
|
|
73
|
+
for (let e = 0; e < f; e += 1) if (!(e > 0 && !x(e - 1))) {
|
|
74
|
+
e > 0 && v(e - 1, b[e]);
|
|
75
|
+
for (let t = S[e]; t < S[e + 1]; t += 1) h.push(C[t]);
|
|
76
|
+
}
|
|
77
|
+
return y();
|
|
78
|
+
}, s = (e, t, n) => {
|
|
79
|
+
let { displayOrder: a, labels: o } = e;
|
|
80
|
+
return {
|
|
81
|
+
getRowCount: () => a.length,
|
|
82
|
+
getRow: (e) => t[a[e]],
|
|
83
|
+
getSourceIndex: (e) => {
|
|
84
|
+
let t = a[e];
|
|
85
|
+
return t >= 0 ? t : void 0;
|
|
86
|
+
},
|
|
87
|
+
getRowKey: (e) => {
|
|
88
|
+
let s = a[e];
|
|
89
|
+
if (r(s)) {
|
|
90
|
+
let e = o[i(s)];
|
|
91
|
+
return n(e.row, e.sourceIndex);
|
|
92
|
+
}
|
|
93
|
+
return n(t[s], s);
|
|
94
|
+
},
|
|
95
|
+
getLabelRow: (e) => {
|
|
96
|
+
let t = a[e];
|
|
97
|
+
return r(t) ? o[i(t)] : void 0;
|
|
98
|
+
}
|
|
99
|
+
};
|
|
100
|
+
}, c = (e, t, n) => {
|
|
101
|
+
let r = /* @__PURE__ */ new WeakMap(), i = (i) => {
|
|
102
|
+
let a = e.getRow(i);
|
|
103
|
+
if (a === void 0) return;
|
|
104
|
+
let o = e.getSourceIndex(i);
|
|
105
|
+
if (!t(a, o)) return;
|
|
106
|
+
let s = typeof a == "object" && !!a, c = s ? r.get(a) : void 0;
|
|
107
|
+
if (c) return c;
|
|
108
|
+
let l = {
|
|
109
|
+
kind: "label",
|
|
110
|
+
row: a,
|
|
111
|
+
sourceIndex: o,
|
|
112
|
+
label: n(a),
|
|
113
|
+
sectionRowCount: void 0
|
|
114
|
+
};
|
|
115
|
+
return s && r.set(a, l), l;
|
|
116
|
+
};
|
|
117
|
+
return {
|
|
118
|
+
getRowCount: e.getRowCount,
|
|
119
|
+
getRow: (t) => i(t) ? void 0 : e.getRow(t),
|
|
120
|
+
getSourceIndex: (t) => i(t) ? void 0 : e.getSourceIndex(t),
|
|
121
|
+
getRowKey: e.getRowKey,
|
|
122
|
+
getGroupRow: e.getGroupRow,
|
|
123
|
+
getLabelRow: i
|
|
124
|
+
};
|
|
125
|
+
}, l = (e, t) => {
|
|
126
|
+
let n = 0, r = e.length;
|
|
127
|
+
for (; n < r;) {
|
|
128
|
+
let i = n + r >>> 1;
|
|
129
|
+
e[i] < t ? n = i + 1 : r = i;
|
|
130
|
+
}
|
|
131
|
+
return n;
|
|
132
|
+
}, u = (e, t) => t - l(e, t) + 1, d = (e, t) => {
|
|
133
|
+
let n = l(e, t + 1);
|
|
134
|
+
return n > 0 ? e[n - 1] : -1;
|
|
135
|
+
}, f = (e, t, n) => {
|
|
136
|
+
let r = [], i = e.getRowCount(), a = t;
|
|
137
|
+
for (; r.length < n;) (a >= i || !e.getLabelRow?.(a)) && r.push(a), a += 1;
|
|
138
|
+
return r;
|
|
139
|
+
}, p = (e, t, n) => {
|
|
140
|
+
if (e.length === 0 || t.rowCount <= 0 || n <= 0) return null;
|
|
141
|
+
let r = l(e, t.rowAtContentY(n) + 1);
|
|
142
|
+
if (r === 0) return null;
|
|
143
|
+
let i = e[r - 1];
|
|
144
|
+
if (t.rowTop(i) >= n) return null;
|
|
145
|
+
let a = t.cellHeight(i), o = 0;
|
|
146
|
+
if (r < e.length) {
|
|
147
|
+
let i = t.rowTop(e[r]) - n;
|
|
148
|
+
i < a && (o = Math.min(a, Math.max(a - i, 0)));
|
|
149
|
+
}
|
|
150
|
+
return {
|
|
151
|
+
labelViewIndex: i,
|
|
152
|
+
height: a,
|
|
153
|
+
pushOffset: o
|
|
154
|
+
};
|
|
155
|
+
};
|
|
156
|
+
//#endregion
|
|
157
|
+
export { o as buildLabelDisplay, l as countLabelsBefore, t as createLabelFreeOrder, s as createLabelRowModel, r as isLabelOrderValue, n as isSameOrder, i as labelIndexOfOrderValue, u as resolveDataRowNumber, e as resolveLabelRowLayout, f as resolvePasteTargetViewIndexes, d as resolveSectionLabelViewIndex, p as resolveStickyLabel, c as wrapRowModelWithLabelRows };
|
|
@@ -1 +1 @@
|
|
|
1
|
-
Object.defineProperty(exports,Symbol.toStringTag,{value:`Module`});var e=15e6,t=5e4,n=(e,t,n,r)=>e&&t&&n>0&&n<=r,r=1<<20,i=(e,t)=>({rowCount:e,rowTop:e=>e*t,rowsHeight:(e,n)=>(n-e+1)*t,totalBodyHeight:e*t,rowAtContentY:n=>Math.min(Math.max(Math.floor(n/t),0),Math.max(e-1,0)),cellHeight:()=>t,detailHeight:()=>0}),a=(e,t)=>{let n=t.filter(t=>t.height>0&&t.index>=0&&t.index<e.rowCount).sort((e,t)=>e.index-t.index),r=n.length,i=new Float64Array(r),a=new Float64Array(r+1);for(let e=0;e<r;e+=1)i[e]=n[e].index,a[e+1]=a[e]+n[e].height;let o=a[r],{rowCount:s}=e,c=e=>{let t=0,n=r;for(;t<n;){let r=t+n>>>1;i[r]<e?t=r+1:n=r}return t},l=t=>{let n=Math.min(Math.max(t,0),s);return(n===s?e.totalBodyHeight:e.rowTop(n))+a[c(n)]};return{rowCount:s,rowTop:l,rowsHeight:(e,t)=>l(t+1)-l(e),totalBodyHeight:e.totalBodyHeight+o,rowAtContentY:e=>{if(s<=0||e<=0)return 0;let t=0,n=s-1;for(;t<n;){let r=t+n+1>>>1;l(r)<=e?t=r:n=r-1}return t},cellHeight:t=>e.cellHeight(t),detailHeight:e=>{let t=c(e);return t<r&&i[t]===e?a[t+1]-a[t]:0}}},o=(e,t,n,r)=>{if(r<n)return null;let i=Math.max(e,n),a=Math.min(t,r);return i>a?null:{start:i,end:a}},
|
|
1
|
+
Object.defineProperty(exports,Symbol.toStringTag,{value:`Module`});var e=15e6,t=5e4,n=(e,t,n,r)=>e&&t&&n>0&&n<=r,r=1<<20,i=(e,t)=>({rowCount:e,rowTop:e=>e*t,rowsHeight:(e,n)=>(n-e+1)*t,totalBodyHeight:e*t,rowAtContentY:n=>Math.min(Math.max(Math.floor(n/t),0),Math.max(e-1,0)),cellHeight:()=>t,detailHeight:()=>0}),a=(e,t)=>{let n=t.filter(t=>t.height>0&&t.index>=0&&t.index<e.rowCount).sort((e,t)=>e.index-t.index),r=n.length,i=new Float64Array(r),a=new Float64Array(r+1);for(let e=0;e<r;e+=1)i[e]=n[e].index,a[e+1]=a[e]+n[e].height;let o=a[r],{rowCount:s}=e,c=e=>{let t=0,n=r;for(;t<n;){let r=t+n>>>1;i[r]<e?t=r+1:n=r}return t},l=t=>{let n=Math.min(Math.max(t,0),s);return(n===s?e.totalBodyHeight:e.rowTop(n))+a[c(n)]};return{rowCount:s,rowTop:l,rowsHeight:(e,t)=>l(t+1)-l(e),totalBodyHeight:e.totalBodyHeight+o,rowAtContentY:e=>{if(s<=0||e<=0)return 0;let t=0,n=s-1;for(;t<n;){let r=t+n+1>>>1;l(r)<=e?t=r:n=r-1}return t},cellHeight:t=>e.cellHeight(t),detailHeight:e=>{let t=c(e);return t<r&&i[t]===e?a[t+1]-a[t]:0}}},o=(e,t)=>{let{rowCount:n}=e,r=t.filter(e=>e.index>=0&&e.index<n&&e.height>=0).sort((e,t)=>e.index-t.index),i=r.length,a=new Float64Array(i),o=new Float64Array(i),s=new Float64Array(i+1);for(let t=0;t<i;t+=1)a[t]=r[t].index,o[t]=r[t].height,s[t+1]=s[t]+(r[t].height-e.cellHeight(r[t].index));let c=s[i],l=e=>{let t=0,n=i;for(;t<n;){let r=t+n>>>1;a[r]<e?t=r+1:n=r}return t},u=t=>{let r=Math.min(Math.max(t,0),n);return(r===n?e.totalBodyHeight:e.rowTop(r))+s[l(r)]};return{rowCount:n,rowTop:u,rowsHeight:(e,t)=>u(t+1)-u(e),totalBodyHeight:e.totalBodyHeight+c,rowAtContentY:e=>{if(n<=0||e<=0)return 0;let t=0,r=n-1;for(;t<r;){let n=t+r+1>>>1;u(n)<=e?t=n:r=n-1}return t},cellHeight:t=>{let n=l(t);return n<i&&a[n]===t?o[n]:e.cellHeight(t)},detailHeight:t=>e.detailHeight(t)}},s=(e,t,n,r)=>{if(r<n)return null;let i=Math.max(e,n),a=Math.min(t,r);return i>a?null:{start:i,end:a}},c=(e,t)=>e*t,l=(e,t)=>t===1?e:e/t,u=(e,t,n,r)=>{let i=t*(1-n);return r.rowAtContentY(e-i)},d=({rowCount:e,rowHeight:t,headerHeight:n,viewportHeight:i,scrollTop:a,overscan:o,maxBodyPx:s})=>{let c=e*t,l=Math.min(c,s),u=Math.max(n+c-i,0),d=Math.max(n+l-i,0),f=d>0&&c>l?u/d:1,p=Math.min(Math.max(a,0),d),m=p*f,h=Math.ceil(i/t)+1,g=Math.floor(m/t),_=Math.max(g-o,0),v=Math.min(g+h+o,e),y=f===1?0:Math.floor(_*t/r)*r,b=p-m+y,x=[],S=new Set;for(let e=_;e<v;e+=1)x.push({index:e,start:n+e*t-y}),S.add(e);return{physicalBodyHeight:l,logicalBodyHeight:c,scaleFactor:f,translateY:b,windowBaseOffsetPx:y,rows:x,rowIndexSet:S}},f=({headerHeight:e,viewportHeight:t,scrollTop:n,overscan:r},i)=>{let a=i.rowCount,o=i.totalBodyHeight,s=o,c=Math.max(e+o-t,0),l=Math.min(Math.max(n,0),c),u=i.rowAtContentY(l),d=i.rowAtContentY(l+t),f=Math.max(u-r,0),p=Math.min(d+r+1,a),m=[],h=new Set;for(let t=f;t<p;t+=1){let n={index:t,start:e+i.rowTop(t),size:i.cellHeight(t)},r=i.detailHeight(t);r>0&&(n.detailSize=r),m.push(n),h.add(t)}return{physicalBodyHeight:s,logicalBodyHeight:o,scaleFactor:1,translateY:0,windowBaseOffsetPx:0,rows:m,rowIndexSet:h}};exports.AUTO_HEIGHT_MAX_ROWS=t,exports.MAX_BODY_PX=e,exports.WINDOW_BASE_CHUNK_PX=r,exports.clientYToRowIndex=u,exports.clipRowRangeToWindow=s,exports.computeAutoHeightVerticalGeometry=f,exports.computeVerticalGeometry=d,exports.createDetailRowMetrics=a,exports.createRowHeightOverrideMetrics=o,exports.createUniformRowMetrics=i,exports.logicalToPhysicalScrollTop=l,exports.physicalToLogicalScrollTop=c,exports.shouldUseAutoHeight=n;
|
|
@@ -41,6 +41,11 @@ export type DetailRowExtra = {
|
|
|
41
41
|
height: number;
|
|
42
42
|
};
|
|
43
43
|
export declare const createDetailRowMetrics: (base: RowMetrics, extras: readonly DetailRowExtra[]) => RowMetrics;
|
|
44
|
+
export type RowHeightOverride = {
|
|
45
|
+
index: number;
|
|
46
|
+
height: number;
|
|
47
|
+
};
|
|
48
|
+
export declare const createRowHeightOverrideMetrics: (base: RowMetrics, overrides: readonly RowHeightOverride[]) => RowMetrics;
|
|
44
49
|
export declare const clipRowRangeToWindow: (selStartRow: number, selEndRow: number, windowFirstRow: number, windowLastRow: number) => {
|
|
45
50
|
start: number;
|
|
46
51
|
end: number;
|
|
@@ -41,17 +41,51 @@ var e = 15e6, t = 5e4, n = (e, t, n, r) => e && t && n > 0 && n <= r, r = 1 << 2
|
|
|
41
41
|
return t < r && i[t] === e ? a[t + 1] - a[t] : 0;
|
|
42
42
|
}
|
|
43
43
|
};
|
|
44
|
-
}, o = (e, t
|
|
44
|
+
}, o = (e, t) => {
|
|
45
|
+
let { rowCount: n } = e, r = t.filter((e) => e.index >= 0 && e.index < n && e.height >= 0).sort((e, t) => e.index - t.index), i = r.length, a = new Float64Array(i), o = new Float64Array(i), s = new Float64Array(i + 1);
|
|
46
|
+
for (let t = 0; t < i; t += 1) a[t] = r[t].index, o[t] = r[t].height, s[t + 1] = s[t] + (r[t].height - e.cellHeight(r[t].index));
|
|
47
|
+
let c = s[i], l = (e) => {
|
|
48
|
+
let t = 0, n = i;
|
|
49
|
+
for (; t < n;) {
|
|
50
|
+
let r = t + n >>> 1;
|
|
51
|
+
a[r] < e ? t = r + 1 : n = r;
|
|
52
|
+
}
|
|
53
|
+
return t;
|
|
54
|
+
}, u = (t) => {
|
|
55
|
+
let r = Math.min(Math.max(t, 0), n);
|
|
56
|
+
return (r === n ? e.totalBodyHeight : e.rowTop(r)) + s[l(r)];
|
|
57
|
+
};
|
|
58
|
+
return {
|
|
59
|
+
rowCount: n,
|
|
60
|
+
rowTop: u,
|
|
61
|
+
rowsHeight: (e, t) => u(t + 1) - u(e),
|
|
62
|
+
totalBodyHeight: e.totalBodyHeight + c,
|
|
63
|
+
rowAtContentY: (e) => {
|
|
64
|
+
if (n <= 0 || e <= 0) return 0;
|
|
65
|
+
let t = 0, r = n - 1;
|
|
66
|
+
for (; t < r;) {
|
|
67
|
+
let n = t + r + 1 >>> 1;
|
|
68
|
+
u(n) <= e ? t = n : r = n - 1;
|
|
69
|
+
}
|
|
70
|
+
return t;
|
|
71
|
+
},
|
|
72
|
+
cellHeight: (t) => {
|
|
73
|
+
let n = l(t);
|
|
74
|
+
return n < i && a[n] === t ? o[n] : e.cellHeight(t);
|
|
75
|
+
},
|
|
76
|
+
detailHeight: (t) => e.detailHeight(t)
|
|
77
|
+
};
|
|
78
|
+
}, s = (e, t, n, r) => {
|
|
45
79
|
if (r < n) return null;
|
|
46
80
|
let i = Math.max(e, n), a = Math.min(t, r);
|
|
47
81
|
return i > a ? null : {
|
|
48
82
|
start: i,
|
|
49
83
|
end: a
|
|
50
84
|
};
|
|
51
|
-
},
|
|
85
|
+
}, c = (e, t) => e * t, l = (e, t) => t === 1 ? e : e / t, u = (e, t, n, r) => {
|
|
52
86
|
let i = t * (1 - n);
|
|
53
87
|
return r.rowAtContentY(e - i);
|
|
54
|
-
},
|
|
88
|
+
}, d = ({ rowCount: e, rowHeight: t, headerHeight: n, viewportHeight: i, scrollTop: a, overscan: o, maxBodyPx: s }) => {
|
|
55
89
|
let c = e * t, l = Math.min(c, s), u = Math.max(n + c - i, 0), d = Math.max(n + l - i, 0), f = d > 0 && c > l ? u / d : 1, p = Math.min(Math.max(a, 0), d), m = p * f, h = Math.ceil(i / t) + 1, g = Math.floor(m / t), _ = Math.max(g - o, 0), v = Math.min(g + h + o, e), y = f === 1 ? 0 : Math.floor(_ * t / r) * r, b = p - m + y, x = [], S = /* @__PURE__ */ new Set();
|
|
56
90
|
for (let e = _; e < v; e += 1) x.push({
|
|
57
91
|
index: e,
|
|
@@ -66,7 +100,7 @@ var e = 15e6, t = 5e4, n = (e, t, n, r) => e && t && n > 0 && n <= r, r = 1 << 2
|
|
|
66
100
|
rows: x,
|
|
67
101
|
rowIndexSet: S
|
|
68
102
|
};
|
|
69
|
-
},
|
|
103
|
+
}, f = ({ headerHeight: e, viewportHeight: t, scrollTop: n, overscan: r }, i) => {
|
|
70
104
|
let a = i.rowCount, o = i.totalBodyHeight, s = o, c = Math.max(e + o - t, 0), l = Math.min(Math.max(n, 0), c), u = i.rowAtContentY(l), d = i.rowAtContentY(l + t), f = Math.max(u - r, 0), p = Math.min(d + r + 1, a), m = [], h = /* @__PURE__ */ new Set();
|
|
71
105
|
for (let t = f; t < p; t += 1) {
|
|
72
106
|
let n = {
|
|
@@ -87,4 +121,4 @@ var e = 15e6, t = 5e4, n = (e, t, n, r) => e && t && n > 0 && n <= r, r = 1 << 2
|
|
|
87
121
|
};
|
|
88
122
|
};
|
|
89
123
|
//#endregion
|
|
90
|
-
export { t as AUTO_HEIGHT_MAX_ROWS, e as MAX_BODY_PX, r as WINDOW_BASE_CHUNK_PX,
|
|
124
|
+
export { t as AUTO_HEIGHT_MAX_ROWS, e as MAX_BODY_PX, r as WINDOW_BASE_CHUNK_PX, u as clientYToRowIndex, s as clipRowRangeToWindow, f as computeAutoHeightVerticalGeometry, d as computeVerticalGeometry, a as createDetailRowMetrics, o as createRowHeightOverrideMetrics, i as createUniformRowMetrics, l as logicalToPhysicalScrollTop, c as physicalToLogicalScrollTop, n as shouldUseAutoHeight };
|