@ishibashi0112/spreadsheet-grid-core 0.40.0 → 0.41.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (34) hide show
  1. package/README.md +25 -0
  2. package/dist/controllers/asyncSelectOptionsSource.cjs +1 -0
  3. package/dist/controllers/asyncSelectOptionsSource.d.ts +32 -0
  4. package/dist/controllers/asyncSelectOptionsSource.js +90 -0
  5. package/dist/controllers/autoHeightMeasurer.cjs +1 -1
  6. package/dist/controllers/autoHeightMeasurer.js +19 -19
  7. package/dist/controllers/columnAutosizeRunner.cjs +1 -1
  8. package/dist/controllers/columnAutosizeRunner.js +7 -7
  9. package/dist/controllers/filterPopoverController.cjs +1 -1
  10. package/dist/controllers/filterPopoverController.js +7 -7
  11. package/dist/controllers/pointerInteractionsController.cjs +1 -1
  12. package/dist/controllers/pointerInteractionsController.js +71 -71
  13. package/dist/controllers/selectOptionsCollector.cjs +1 -1
  14. package/dist/controllers/selectOptionsCollector.d.ts +4 -1
  15. package/dist/controllers/selectOptionsCollector.js +7 -7
  16. package/dist/engine/columnCommands.cjs +1 -1
  17. package/dist/engine/columnCommands.js +54 -54
  18. package/dist/engine/filterPopoverCommands.cjs +1 -1
  19. package/dist/engine/filterPopoverCommands.d.ts +5 -2
  20. package/dist/engine/filterPopoverCommands.js +12 -12
  21. package/dist/engine/notifiers.cjs +1 -1
  22. package/dist/engine/notifiers.d.ts +3 -1
  23. package/dist/engine/notifiers.js +11 -11
  24. package/dist/engine/rowPipeline.cjs +1 -1
  25. package/dist/engine/rowPipeline.d.ts +2 -0
  26. package/dist/engine/rowPipeline.js +19 -19
  27. package/dist/logic/gridHeight.cjs +1 -0
  28. package/dist/logic/gridHeight.d.ts +12 -0
  29. package/dist/logic/gridHeight.js +32 -0
  30. package/dist/logic/gridState.cjs +1 -1
  31. package/dist/logic/gridState.d.ts +5 -0
  32. package/dist/logic/gridState.js +10 -7
  33. package/dist/model/gridTypes.core.d.ts +1024 -0
  34. package/package.json +1 -1
@@ -195,22 +195,22 @@ var h = (e, t) => {
195
195
  return;
196
196
  }
197
197
  a(e.setColumnFilter(o, n(s)));
198
- }, D = (e) => {
199
- let { updateNumberDraft: t, openedFilterType: n } = m();
200
- if (t(e), n !== "numberSet") return;
201
- let r = s(e);
202
- E(r !== null, (e) => ({
198
+ }, D = (e, t) => {
199
+ let { updateNumberDraft: n, openedFilterType: r } = m();
200
+ if (n(e), r !== "numberSet" || t?.commit === !1) return;
201
+ let i = s(e);
202
+ E(i !== null, (e) => ({
203
203
  kind: "numberSet",
204
- condition: r,
204
+ condition: i,
205
205
  set: e
206
206
  }));
207
- }, O = (e) => {
208
- let { updateTextDraft: t, openedFilterType: n } = m();
209
- if (t(e), n !== "textSet") return;
210
- let r = l(e);
211
- E(r !== null, (e) => ({
207
+ }, O = (e, t) => {
208
+ let { updateTextDraft: n, openedFilterType: r } = m();
209
+ if (n(e), r !== "textSet" || t?.commit === !1) return;
210
+ let i = l(e);
211
+ E(i !== null, (e) => ({
212
212
  kind: "textSet",
213
- condition: r,
213
+ condition: i,
214
214
  set: e
215
215
  }));
216
216
  }, k = (e) => {
@@ -1 +1 @@
1
- Object.defineProperty(exports,Symbol.toStringTag,{value:`Module`});const e=require("../logic/gridState.cjs");var t=()=>{let e=null,t=null;return{update:t=>{e=t},applyHoveredRowChange:n=>{if(e===null||!e.enableRowHover)return;let r=t,i=typeof n==`function`?n(r):n;i!==r&&(t=i,e.isHoverControlled||e.setHoveredRowIndex(i),e.onHoveredRowChange?.(i,{source:`pointer`}))}}},n=()=>{let e=null;return{update:({expandedKeys:t,onChange:n})=>{if(e===null){e=t;return}Object.is(e,t)||(e=t,n?.(Array.from(t)))}}},r=()=>{let t=null,n=null,r=(e,t)=>Object.is(e.columnWidths,t.columnWidths)&&Object.is(e.filters,t.filters)&&Object.is(e.sort,t.sort)&&Object.is(e.dragState,t.dragState)&&Object.is(e.columns,t.columns);return{update:i=>{let a=t===null||!r(t,i);if(t=i,!a||!i.onStateChange)return;let o=e.buildGridState(i.columnWidths,i.filters,i.sort,e.extractColumnState(i.columns)),s=e.decideStateChangeEmit(n,o,i.dragState!==null);n=s.nextLast,s.emit&&i.onStateChange(o)}}};exports.createDetailKeysNotifier=n,exports.createHoverRowNotifier=t,exports.createStateChangeNotifier=r;
1
+ Object.defineProperty(exports,Symbol.toStringTag,{value:`Module`});const e=require("../logic/gridState.cjs");var t=()=>{let e=null,t=null;return{update:t=>{e=t},applyHoveredRowChange:n=>{if(e===null||!e.enableRowHover)return;let r=t,i=typeof n==`function`?n(r):n;i!==r&&(t=i,e.isHoverControlled||e.setHoveredRowIndex(i),e.onHoveredRowChange?.(i,{source:`pointer`}))}}},n=()=>{let e=null;return{update:({expandedKeys:t,onChange:n})=>{if(e===null){e=t;return}Object.is(e,t)||(e=t,n?.(Array.from(t)))}}},r=()=>{let t=null,n=null,r=(e,t)=>Object.is(e.columnWidths,t.columnWidths)&&Object.is(e.filters,t.filters)&&Object.is(e.sort,t.sort)&&Object.is(e.dragState,t.dragState)&&Object.is(e.columns,t.columns);return{update:i=>{let a=t,o=a===null||!r(a,i);if(t=i,!o||(a!==null&&(i.onFiltersChange&&!Object.is(a.filters,i.filters)&&!e.isSameFilterState(a.filters,i.filters)&&i.onFiltersChange(e.cloneFilterState(i.filters)),i.onSortChange&&!Object.is(a.sort,i.sort)&&!e.isSameSortState(a.sort,i.sort)&&i.onSortChange(e.cloneSortState(i.sort))),!i.onStateChange))return;let s=e.buildGridState(i.columnWidths,i.filters,i.sort,e.extractColumnState(i.columns)),c=e.decideStateChangeEmit(n,s,i.dragState!==null);n=c.nextLast,c.emit&&i.onStateChange(s)}}};exports.createDetailKeysNotifier=n,exports.createHoverRowNotifier=t,exports.createStateChangeNotifier=r;
@@ -1,4 +1,4 @@
1
- import type { GridColumn, GridRowKey, GridSortState, GridState, GridUiState } from '../model/gridTypes.unbound';
1
+ import type { GridColumn, GridFilterState, GridRowKey, GridSortState, GridState, GridUiState } from '../model/gridTypes.unbound';
2
2
  export type HoverRowNotifierArgs = {
3
3
  enableRowHover: boolean;
4
4
  isHoverControlled: boolean;
@@ -28,6 +28,8 @@ export type StateChangeNotifierArgs<T> = {
28
28
  dragState: GridUiState['dragState'];
29
29
  columns: GridColumn<T>[];
30
30
  onStateChange: ((state: GridState) => void) | undefined;
31
+ onFiltersChange?: ((filters: GridFilterState) => void) | undefined;
32
+ onSortChange?: ((sort: GridSortState) => void) | undefined;
31
33
  };
32
34
  export type StateChangeNotifier<T> = {
33
35
  update: (args: StateChangeNotifierArgs<T>) => void;
@@ -1,6 +1,6 @@
1
- import { buildGridState as e, decideStateChangeEmit as t, extractColumnState as n } from "../logic/gridState.js";
1
+ import { buildGridState as e, cloneFilterState as t, cloneSortState as n, decideStateChangeEmit as r, extractColumnState as i, isSameFilterState as a, isSameSortState as o } from "../logic/gridState.js";
2
2
  //#region src/engine/notifiers.ts
3
- var r = () => {
3
+ var s = () => {
4
4
  let e = null, t = null;
5
5
  return {
6
6
  update: (t) => {
@@ -12,7 +12,7 @@ var r = () => {
12
12
  i !== r && (t = i, e.isHoverControlled || e.setHoveredRowIndex(i), e.onHoveredRowChange?.(i, { source: "pointer" }));
13
13
  }
14
14
  };
15
- }, i = () => {
15
+ }, c = () => {
16
16
  let e = null;
17
17
  return { update: ({ expandedKeys: t, onChange: n }) => {
18
18
  if (e === null) {
@@ -21,14 +21,14 @@ var r = () => {
21
21
  }
22
22
  Object.is(e, t) || (e = t, n?.(Array.from(t)));
23
23
  } };
24
- }, a = () => {
25
- let r = null, i = null, a = (e, t) => Object.is(e.columnWidths, t.columnWidths) && Object.is(e.filters, t.filters) && Object.is(e.sort, t.sort) && Object.is(e.dragState, t.dragState) && Object.is(e.columns, t.columns);
26
- return { update: (o) => {
27
- let s = r === null || !a(r, o);
28
- if (r = o, !s || !o.onStateChange) return;
29
- let c = e(o.columnWidths, o.filters, o.sort, n(o.columns)), l = t(i, c, o.dragState !== null);
30
- i = l.nextLast, l.emit && o.onStateChange(c);
24
+ }, l = () => {
25
+ let s = null, c = null, l = (e, t) => Object.is(e.columnWidths, t.columnWidths) && Object.is(e.filters, t.filters) && Object.is(e.sort, t.sort) && Object.is(e.dragState, t.dragState) && Object.is(e.columns, t.columns);
26
+ return { update: (u) => {
27
+ let d = s, f = d === null || !l(d, u);
28
+ if (s = u, !f || (d !== null && (u.onFiltersChange && !Object.is(d.filters, u.filters) && !a(d.filters, u.filters) && u.onFiltersChange(t(u.filters)), u.onSortChange && !Object.is(d.sort, u.sort) && !o(d.sort, u.sort) && u.onSortChange(n(u.sort))), !u.onStateChange)) return;
29
+ let p = e(u.columnWidths, u.filters, u.sort, i(u.columns)), m = r(c, p, u.dragState !== null);
30
+ c = m.nextLast, m.emit && u.onStateChange(p);
31
31
  } };
32
32
  };
33
33
  //#endregion
34
- export { i as createDetailKeysNotifier, r as createHoverRowNotifier, a as createStateChangeNotifier };
34
+ export { c as createDetailKeysNotifier, s as createHoverRowNotifier, l as createStateChangeNotifier };
@@ -1 +1 @@
1
- Object.defineProperty(exports,Symbol.toStringTag,{value:`Module`});const e=require("../utils/permissions.cjs"),t=require("../logic/grouping.cjs"),n=require("../logic/rowReorder.cjs"),r=require("../logic/labelRows.cjs"),i=require("../logic/filtering.cjs"),a=require("../logic/sorting.cjs"),o=require("./memo.cjs"),s=require("../logic/serverSideQuery.cjs");var c={},l={},u=[],d=`\0`,f=()=>{let f=o.createMemo(e=>i.createSourceOrder(e)),p=o.createMemo((e,t)=>t?r.resolveLabelRowLayout(e,t):null),m=o.createMemo((e,t)=>r.createLabelFreeOrder(e,t)),h=o.createMemo((e,t)=>{let n=[];for(let r of e)i.columnFilterUsesNumericKey(t[r.key])&&n.push(r.key);return n.join(d)}),g=o.createMemo((t,n,r)=>{let a=new Map;if(r.length===0)return a;let o=new Set(r.split(d)),s=t.length;for(let r of n){if(!o.has(r.key))continue;let n=new Float64Array(s);for(let a=0;a<s;a+=1)n[a]=i.coerceNumberFilterCellValue(e.getCellValue(t[a],r));a.set(r.key,n)}return a}),_=o.createMemo((e,t,n,r,a)=>i.filterOrderByColumns(e,t,n,r,a)),v=o.createMemo((e,t,n,r)=>a.sortOrder(e,t,n,r)),y=o.createMemo((e,t,r)=>e&&n.isIdentityOrder(t,r)),b=o.createMemo((e,t,n)=>e&&r.isSameOrder(t,n)),x=o.createMemo((e,n,r,i,a)=>e?t.buildGroupTree(n,r,i,a):null),S=o.createMemo((e,n)=>e?t.flattenGroupTree(e,n):null),C=o.createMemo((e,t,n,i,a,o,s)=>e&&s?r.buildLabelDisplay({rows:t,order:n,layout:e,sortMode:i,keepEmptySections:a,sortActive:o,getLabel:s}):null),w=o.createMemo((e,n,i,a,o)=>{if(n)return r.createLabelRowModel(n,a,o);if(e){let{displayOrder:n,groups:r}=e;return{getRowCount:()=>n.length,getRow:e=>a[n[e]],getSourceIndex:e=>{let t=n[e];return t>=0?t:void 0},getRowKey:e=>{let i=n[e];return t.isGroupOrderValue(i)?t.groupRowKey(r[t.groupIndexOfOrderValue(i)]):o(a[i],i)},getGroupRow:e=>{let i=n[e];return t.isGroupOrderValue(i)?r[t.groupIndexOfOrderValue(i)]:void 0}}}return{getRowCount:()=>i.length,getRow:e=>a[i[e]],getSourceIndex:e=>i[e],getRowKey:e=>o(a[i[e]],i[e])}}),T=o.createMemo((e,t,n,r,i,a,o)=>e?s.buildServerSideQuery({globalText:t?n:``,columnFilters:r?i:l,sort:a?o:u}):c),E=o.createMemo((e,t)=>e?s.serializeServerSideQuery(t):``),D=o.createMemo((e,t)=>({query:e,queryKey:t}));return{resolveLabelRowLayout:(e,t)=>p(e,t),resolveBaseOrder:(e,t)=>t?m(t,e):f(e),resolveOrder:e=>{let{rows:t,visibleColumns:r,columnFilters:i,globalFilteredOrder:a,sort:o,rowDragAvailable:s,labelLayout:c}=e,l=h(r,i),u=g(t,r,l),d=_(t,a,r,i,u),f=v(t,d,r,o),p=c?b(s,f,m(c,t.length)):y(s,f,t.length);return{order:f,orderIsIdentity:p,rowDragOperable:n.isRowDragOperable(s,p)}},resolveClientSideRowModel:e=>{let{rows:t,order:n,rowGroupingActive:r,groupColumns:i,aggColumns:a,collapsedGroupKeys:o,rowKeyGetter:s,labelLayout:c,labelSortMode:l=`section`,keepEmptySections:u=!1,sortActive:d=!1,getLabel:f}=e,p=x(r,t,n,i,a),m=S(p,o),h=C(r?null:c??null,t,n,l,u,d,f);return{groupTree:p,groupedDisplay:m,labelDisplay:h,rowModel:w(m,h,n,t,s)}},resolveServerSideQuery:e=>{let{isServerSide:t,globalFilterEnabled:n,globalText:r,columnFilterEnabled:i,columnFilters:a,sortingEnabled:o,sort:s}=e,c=T(t,n,r,i,a,o,s);return D(c,E(t,c))}}};exports.createRowPipelineResolver=f;
1
+ Object.defineProperty(exports,Symbol.toStringTag,{value:`Module`});const e=require("../utils/permissions.cjs"),t=require("../logic/sorting.cjs"),n=require("../logic/grouping.cjs"),r=require("../logic/rowReorder.cjs"),i=require("../logic/labelRows.cjs"),a=require("../logic/filtering.cjs"),o=require("./memo.cjs"),s=require("../logic/serverSideQuery.cjs");var c={},l={},u=[],d=`\0`,f=()=>{let f=o.createMemo(e=>a.createSourceOrder(e)),p=o.createMemo((e,t)=>t?i.resolveLabelRowLayout(e,t):null),m=o.createMemo((e,t)=>i.createLabelFreeOrder(e,t)),h=o.createMemo((e,t)=>{let n=[];for(let r of e)a.columnFilterUsesNumericKey(t[r.key])&&n.push(r.key);return n.join(d)}),g=o.createMemo((t,n,r)=>{let i=new Map;if(r.length===0)return i;let o=new Set(r.split(d)),s=t.length;for(let r of n){if(!o.has(r.key))continue;let n=new Float64Array(s);for(let i=0;i<s;i+=1)n[i]=a.coerceNumberFilterCellValue(e.getCellValue(t[i],r));i.set(r.key,n)}return i}),_=o.createMemo((e,t,n,r,i)=>a.filterOrderByColumns(e,t,n,r,i)),v=o.createMemo((e,n,r,i)=>t.sortOrder(e,n,r,i)),y=o.createMemo((e,t,n)=>e&&r.isIdentityOrder(t,n)),b=o.createMemo((e,t,n)=>e&&i.isSameOrder(t,n)),x=o.createMemo((e,t,r,i,a)=>e?n.buildGroupTree(t,r,i,a):null),S=o.createMemo((e,t)=>e?n.flattenGroupTree(e,t):null),C=o.createMemo((e,t,n,r,a,o,s)=>e&&s?i.buildLabelDisplay({rows:t,order:n,layout:e,sortMode:r,keepEmptySections:a,sortActive:o,getLabel:s}):null),w=o.createMemo((e,t,r,a,o)=>{if(t)return i.createLabelRowModel(t,a,o);if(e){let{displayOrder:t,groups:r}=e;return{getRowCount:()=>t.length,getRow:e=>a[t[e]],getSourceIndex:e=>{let n=t[e];return n>=0?n:void 0},getRowKey:e=>{let i=t[e];return n.isGroupOrderValue(i)?n.groupRowKey(r[n.groupIndexOfOrderValue(i)]):o(a[i],i)},getGroupRow:e=>{let i=t[e];return n.isGroupOrderValue(i)?r[n.groupIndexOfOrderValue(i)]:void 0}}}return{getRowCount:()=>r.length,getRow:e=>a[r[e]],getSourceIndex:e=>r[e],getRowKey:e=>o(a[r[e]],r[e])}}),T=o.createMemo((e,t,n,r,i,a,o)=>e?s.buildServerSideQuery({globalText:t?n:``,columnFilters:r?i:l,sort:a?o:u}):c),E=o.createMemo((e,t)=>e?s.serializeServerSideQuery(t):``),D=o.createMemo((e,t)=>({query:e,queryKey:t}));return{resolveLabelRowLayout:(e,t)=>p(e,t),resolveBaseOrder:(e,t)=>t?m(t,e):f(e),resolveOrder:e=>{let{rows:t,visibleColumns:n,globalFilteredOrder:i,rowDragAvailable:a,labelLayout:o}=e,s=e.manualFiltering?l:e.columnFilters,c=e.manualSorting?u:e.sort,d=h(n,s),f=g(t,n,d),p=_(t,i,n,s,f),x=v(t,p,n,c),S=o?b(a,x,m(o,t.length)):y(a,x,t.length);return{order:x,orderIsIdentity:S,rowDragOperable:r.isRowDragOperable(a,S)}},resolveClientSideRowModel:e=>{let{rows:t,order:n,rowGroupingActive:r,groupColumns:i,aggColumns:a,collapsedGroupKeys:o,rowKeyGetter:s,labelLayout:c,labelSortMode:l=`section`,keepEmptySections:u=!1,sortActive:d=!1,getLabel:f}=e,p=x(r,t,n,i,a),m=S(p,o),h=C(r?null:c??null,t,n,l,u,d,f);return{groupTree:p,groupedDisplay:m,labelDisplay:h,rowModel:w(m,h,n,t,s)}},resolveServerSideQuery:e=>{let{isServerSide:t,globalFilterEnabled:n,globalText:r,columnFilterEnabled:i,columnFilters:a,sortingEnabled:o,sort:s}=e,c=T(t,n,r,i,a,o,s);return D(c,E(t,c))}}};exports.createRowPipelineResolver=f;
@@ -10,6 +10,8 @@ export type RowOrderInputs<T> = {
10
10
  globalFilteredOrder: RowOrder;
11
11
  sort: GridSortState;
12
12
  rowDragAvailable: boolean;
13
+ manualFiltering?: boolean;
14
+ manualSorting?: boolean;
13
15
  };
14
16
  export type RowOrderResolution = {
15
17
  order: RowOrder;
@@ -1,16 +1,16 @@
1
1
  import { getCellValue as e } from "../utils/permissions.js";
2
- import { buildGroupTree as t, flattenGroupTree as n, groupIndexOfOrderValue as r, groupRowKey as i, isGroupOrderValue as a } from "../logic/grouping.js";
3
- import { isIdentityOrder as o, isRowDragOperable as s } from "../logic/rowReorder.js";
4
- import { buildLabelDisplay as c, createLabelFreeOrder as l, createLabelRowModel as u, isSameOrder as d, resolveLabelRowLayout as f } from "../logic/labelRows.js";
5
- import { coerceNumberFilterCellValue as p, columnFilterUsesNumericKey as m, createSourceOrder as h, filterOrderByColumns as g } from "../logic/filtering.js";
6
- import { sortOrder as _ } from "../logic/sorting.js";
2
+ import { sortOrder as t } from "../logic/sorting.js";
3
+ import { buildGroupTree as n, flattenGroupTree as r, groupIndexOfOrderValue as i, groupRowKey as a, isGroupOrderValue as o } from "../logic/grouping.js";
4
+ import { isIdentityOrder as s, isRowDragOperable as c } from "../logic/rowReorder.js";
5
+ import { buildLabelDisplay as l, createLabelFreeOrder as u, createLabelRowModel as d, isSameOrder as f, resolveLabelRowLayout as p } from "../logic/labelRows.js";
6
+ import { coerceNumberFilterCellValue as m, columnFilterUsesNumericKey as h, createSourceOrder as g, filterOrderByColumns as _ } from "../logic/filtering.js";
7
7
  import { createMemo as v } from "./memo.js";
8
8
  import { buildServerSideQuery as y, serializeServerSideQuery as b } from "../logic/serverSideQuery.js";
9
9
  //#region src/engine/rowPipeline.ts
10
10
  var x = {}, S = {}, C = [], w = "\0", T = () => {
11
- let T = v((e) => h(e)), E = v((e, t) => t ? f(e, t) : null), D = v((e, t) => l(e, t)), O = v((e, t) => {
11
+ let T = v((e) => g(e)), E = v((e, t) => t ? p(e, t) : null), D = v((e, t) => u(e, t)), O = v((e, t) => {
12
12
  let n = [];
13
- for (let r of e) m(t[r.key]) && n.push(r.key);
13
+ for (let r of e) h(t[r.key]) && n.push(r.key);
14
14
  return n.join(w);
15
15
  }), k = v((t, n, r) => {
16
16
  let i = /* @__PURE__ */ new Map();
@@ -19,11 +19,11 @@ var x = {}, S = {}, C = [], w = "\0", T = () => {
19
19
  for (let r of n) {
20
20
  if (!a.has(r.key)) continue;
21
21
  let n = new Float64Array(o);
22
- for (let i = 0; i < o; i += 1) n[i] = p(e(t[i], r));
22
+ for (let i = 0; i < o; i += 1) n[i] = m(e(t[i], r));
23
23
  i.set(r.key, n);
24
24
  }
25
25
  return i;
26
- }), A = v((e, t, n, r, i) => g(e, t, n, r, i)), j = v((e, t, n, r) => _(e, t, n, r)), M = v((e, t, n) => e && o(t, n)), N = v((e, t, n) => e && d(t, n)), P = v((e, n, r, i, a) => e ? t(n, r, i, a) : null), F = v((e, t) => e ? n(e, t) : null), I = v((e, t, n, r, i, a, o) => e && o ? c({
26
+ }), A = v((e, t, n, r, i) => _(e, t, n, r, i)), j = v((e, n, r, i) => t(e, n, r, i)), M = v((e, t, n) => e && s(t, n)), N = v((e, t, n) => e && f(t, n)), P = v((e, t, r, i, a) => e ? n(t, r, i, a) : null), F = v((e, t) => e ? r(e, t) : null), I = v((e, t, n, r, i, a, o) => e && o ? l({
27
27
  rows: t,
28
28
  order: n,
29
29
  layout: e,
@@ -31,32 +31,32 @@ var x = {}, S = {}, C = [], w = "\0", T = () => {
31
31
  keepEmptySections: i,
32
32
  sortActive: a,
33
33
  getLabel: o
34
- }) : null), L = v((e, t, n, o, s) => {
35
- if (t) return u(t, o, s);
34
+ }) : null), L = v((e, t, n, r, s) => {
35
+ if (t) return d(t, r, s);
36
36
  if (e) {
37
37
  let { displayOrder: t, groups: n } = e;
38
38
  return {
39
39
  getRowCount: () => t.length,
40
- getRow: (e) => o[t[e]],
40
+ getRow: (e) => r[t[e]],
41
41
  getSourceIndex: (e) => {
42
42
  let n = t[e];
43
43
  return n >= 0 ? n : void 0;
44
44
  },
45
45
  getRowKey: (e) => {
46
46
  let c = t[e];
47
- return a(c) ? i(n[r(c)]) : s(o[c], c);
47
+ return o(c) ? a(n[i(c)]) : s(r[c], c);
48
48
  },
49
49
  getGroupRow: (e) => {
50
- let i = t[e];
51
- return a(i) ? n[r(i)] : void 0;
50
+ let r = t[e];
51
+ return o(r) ? n[i(r)] : void 0;
52
52
  }
53
53
  };
54
54
  }
55
55
  return {
56
56
  getRowCount: () => n.length,
57
- getRow: (e) => o[n[e]],
57
+ getRow: (e) => r[n[e]],
58
58
  getSourceIndex: (e) => n[e],
59
- getRowKey: (e) => s(o[n[e]], n[e])
59
+ getRowKey: (e) => s(r[n[e]], n[e])
60
60
  };
61
61
  }), R = v((e, t, n, r, i, a, o) => e ? y({
62
62
  globalText: t ? n : "",
@@ -70,11 +70,11 @@ var x = {}, S = {}, C = [], w = "\0", T = () => {
70
70
  resolveLabelRowLayout: (e, t) => E(e, t),
71
71
  resolveBaseOrder: (e, t) => t ? D(t, e) : T(e),
72
72
  resolveOrder: (e) => {
73
- let { rows: t, visibleColumns: n, columnFilters: r, globalFilteredOrder: i, sort: a, rowDragAvailable: o, labelLayout: c } = e, l = O(n, r), u = k(t, n, l), d = A(t, i, n, r, u), f = j(t, d, n, a), p = c ? N(o, f, D(c, t.length)) : M(o, f, t.length);
73
+ let { rows: t, visibleColumns: n, globalFilteredOrder: r, rowDragAvailable: i, labelLayout: a } = e, o = e.manualFiltering ? S : e.columnFilters, s = e.manualSorting ? C : e.sort, l = O(n, o), u = k(t, n, l), d = A(t, r, n, o, u), f = j(t, d, n, s), p = a ? N(i, f, D(a, t.length)) : M(i, f, t.length);
74
74
  return {
75
75
  order: f,
76
76
  orderIsIdentity: p,
77
- rowDragOperable: s(o, p)
77
+ rowDragOperable: c(i, p)
78
78
  };
79
79
  },
80
80
  resolveClientSideRowModel: (e) => {
@@ -0,0 +1 @@
1
+ Object.defineProperty(exports,Symbol.toStringTag,{value:`Module`});var e=Object.freeze({fillParent:!1,rootStyle:void 0,scrollContainerStyle:void 0});function t(e){return typeof e==`string`&&e.includes(`%`)}function n(n,r){return t(n)?r===void 0?{fillParent:!0,rootStyle:{height:n},scrollContainerStyle:{maxHeight:`none`}}:{fillParent:!0,rootStyle:{maxHeight:n},scrollContainerStyle:{height:r,maxHeight:r}}:n===void 0&&r===void 0?e:{fillParent:!1,rootStyle:void 0,scrollContainerStyle:{...n===void 0?{}:{height:n},maxHeight:r??`none`}}}exports.isParentRelativeHeight=t,exports.resolveGridHeightLayout=n;
@@ -0,0 +1,12 @@
1
+ export type GridHeightValue = number | string;
2
+ export type GridHeightStyle = {
3
+ height?: GridHeightValue;
4
+ maxHeight?: GridHeightValue;
5
+ };
6
+ export type GridHeightLayout = {
7
+ fillParent: boolean;
8
+ rootStyle: GridHeightStyle | undefined;
9
+ scrollContainerStyle: GridHeightStyle | undefined;
10
+ };
11
+ export declare function isParentRelativeHeight(height: GridHeightValue | undefined): height is string;
12
+ export declare function resolveGridHeightLayout(height: GridHeightValue | undefined, maxHeight: GridHeightValue | undefined): GridHeightLayout;
@@ -0,0 +1,32 @@
1
+ //#region src/logic/gridHeight.ts
2
+ var e = Object.freeze({
3
+ fillParent: !1,
4
+ rootStyle: void 0,
5
+ scrollContainerStyle: void 0
6
+ });
7
+ function t(e) {
8
+ return typeof e == "string" && e.includes("%");
9
+ }
10
+ function n(n, r) {
11
+ return t(n) ? r === void 0 ? {
12
+ fillParent: !0,
13
+ rootStyle: { height: n },
14
+ scrollContainerStyle: { maxHeight: "none" }
15
+ } : {
16
+ fillParent: !0,
17
+ rootStyle: { maxHeight: n },
18
+ scrollContainerStyle: {
19
+ height: r,
20
+ maxHeight: r
21
+ }
22
+ } : n === void 0 && r === void 0 ? e : {
23
+ fillParent: !1,
24
+ rootStyle: void 0,
25
+ scrollContainerStyle: {
26
+ ...n === void 0 ? {} : { height: n },
27
+ maxHeight: r ?? "none"
28
+ }
29
+ };
30
+ }
31
+ //#endregion
32
+ export { t as isParentRelativeHeight, n as resolveGridHeightLayout };
@@ -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)=>{if(e.version!==t.version||!m(e.columnWidths,t.columnWidths)||e.filters.globalText!==t.filters.globalText||!h(e.filters.columnFilters,t.filters.columnFilters)||e.sort.length!==t.sort.length)return!1;for(let n=0;n<e.sort.length;n+=1)if(e.sort[n].columnKey!==t.sort[n].columnKey||e.sort[n].direction!==t.sort[n].direction)return!1;return!!g(e.columns,t.columns)},v=(e,t,n)=>n?{emit:!1,nextLast:e}:e===null||_(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.decideStateChangeEmit=v,exports.extractColumnState=a,exports.isSameGridState=_,exports.migrateGridState=s;
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;
@@ -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.version !== t.version || !m(e.columnWidths, t.columnWidths) || e.filters.globalText !== t.filters.globalText || !h(e.filters.columnFilters, t.filters.columnFilters) || e.sort.length !== t.sort.length) return !1;
152
- for (let n = 0; n < e.sort.length; n += 1) if (e.sort[n].columnKey !== t.sort[n].columnKey || e.sort[n].direction !== t.sort[n].direction) return !1;
153
- return !!g(e.columns, t.columns);
154
- }, v = (e, t, n) => n ? {
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 || _(e, t) ? {
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, v as decideStateChangeEmit, a as extractColumnState, _ as isSameGridState, s as migrateGridState };
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 };