@ishibashi0112/spreadsheet-grid-core 0.40.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.
Files changed (30) hide show
  1. package/dist/controllers/asyncSelectOptionsSource.cjs +1 -0
  2. package/dist/controllers/asyncSelectOptionsSource.d.ts +32 -0
  3. package/dist/controllers/asyncSelectOptionsSource.js +90 -0
  4. package/dist/controllers/autoHeightMeasurer.cjs +1 -1
  5. package/dist/controllers/autoHeightMeasurer.js +19 -19
  6. package/dist/controllers/columnAutosizeRunner.cjs +1 -1
  7. package/dist/controllers/columnAutosizeRunner.js +7 -7
  8. package/dist/controllers/filterPopoverController.cjs +1 -1
  9. package/dist/controllers/filterPopoverController.js +7 -7
  10. package/dist/controllers/pointerInteractionsController.cjs +1 -1
  11. package/dist/controllers/pointerInteractionsController.js +71 -71
  12. package/dist/controllers/selectOptionsCollector.cjs +1 -1
  13. package/dist/controllers/selectOptionsCollector.d.ts +4 -1
  14. package/dist/controllers/selectOptionsCollector.js +7 -7
  15. package/dist/engine/columnCommands.cjs +1 -1
  16. package/dist/engine/columnCommands.js +54 -54
  17. package/dist/engine/filterPopoverCommands.cjs +1 -1
  18. package/dist/engine/filterPopoverCommands.d.ts +5 -2
  19. package/dist/engine/filterPopoverCommands.js +12 -12
  20. package/dist/engine/notifiers.cjs +1 -1
  21. package/dist/engine/notifiers.d.ts +3 -1
  22. package/dist/engine/notifiers.js +11 -11
  23. package/dist/engine/rowPipeline.cjs +1 -1
  24. package/dist/engine/rowPipeline.d.ts +2 -0
  25. package/dist/engine/rowPipeline.js +19 -19
  26. package/dist/logic/gridState.cjs +1 -1
  27. package/dist/logic/gridState.d.ts +5 -0
  28. package/dist/logic/gridState.js +10 -7
  29. package/dist/model/gridTypes.core.d.ts +16 -0
  30. package/package.json +1 -1
@@ -0,0 +1 @@
1
+ Object.defineProperty(exports,Symbol.toStringTag,{value:`Module`});const e=require("../logic/valueStore.cjs"),t=require("./selectOptionsCollector.cjs");var n=[],r=new Set,i={status:`loading`,options:n,allValues:r,progress:0},a={columnKey:null,result:t.IDLE_SELECT_OPTIONS_RESULT},o=(e,t)=>{if(!(t in e))return e;let n={};for(let r of Object.keys(e))r!==t&&(n[r]=e[r]);return n},s=e=>e instanceof Error?e.message||e.name:typeof e==`string`?e:String(e),c=(e,n)=>n===null?t.IDLE_SELECT_OPTIONS_RESULT:e.columnKey===n?e.result:i,l=()=>{let t=e.createValueStore(a),c=null,l=null,u=0,d=()=>{l?.abort(),l=null},f=e=>{let{columnKey:a,column:c,fetch:f}=e;if(a===null||c===null||f===null)return;d();let p=++u,m=new AbortController;l=m,t.setSnapshot({columnKey:a,result:i});let h;try{h=Promise.resolve(f({columnKey:a,column:c,columnFilters:o(e.columnFilters,a),globalText:e.globalText,signal:m.signal}))}catch(e){h=Promise.reject(e)}h.then(e=>{if(p!==u||m.signal.aborted)return;l=null;let r=Array.isArray(e?.options)?e.options:n;t.setSnapshot({columnKey:a,result:{status:`ready`,options:r,allValues:new Set(r.map(e=>e.value)),progress:1,truncated:e?.truncated===!0}})},e=>{p!==u||m.signal.aborted||(l=null,t.setSnapshot({columnKey:a,result:{status:`error`,options:n,allValues:r,progress:0,errorMessage:s(e)}}))})};return{update:e=>{let n=c;if(c=e,n===null||n.columnKey!==e.columnKey||n.fetch===null!=(e.fetch===null)){if(e.columnKey===null||e.fetch===null){d(),u+=1,t.getSnapshot()!==a&&t.setSnapshot(a);return}f(e)}},retry:()=>{c&&f(c)},subscribe:t.subscribe,getSnapshot:t.getSnapshot,dispose:()=>{d(),u+=1,c=null}}};exports.LOADING_SELECT_OPTIONS_RESULT=i,exports.createAsyncSelectOptionsSource=l,exports.omitOwnColumnFilter=o,exports.selectAsyncOptionsResult=c;
@@ -0,0 +1,32 @@
1
+ import type { ColumnFilterValue, GetFilterOptionsResult, GridColumn } from '../model/gridTypes.unbound';
2
+ import { type ColumnSelectOptionsResult } from './selectOptionsCollector';
3
+ export type AsyncSelectOptionsFetchParams<T> = {
4
+ columnKey: string;
5
+ column: GridColumn<T>;
6
+ columnFilters: Record<string, ColumnFilterValue>;
7
+ globalText: string;
8
+ signal: AbortSignal;
9
+ };
10
+ export type AsyncSelectOptionsFetch<T> = (params: AsyncSelectOptionsFetchParams<T>) => Promise<GetFilterOptionsResult>;
11
+ export type AsyncSelectOptionsSourceArgs<T> = {
12
+ columnKey: string | null;
13
+ column: GridColumn<T> | null;
14
+ columnFilters: Record<string, ColumnFilterValue>;
15
+ globalText: string;
16
+ fetch: AsyncSelectOptionsFetch<T> | null;
17
+ };
18
+ export type AsyncSelectOptionsSnapshot = {
19
+ columnKey: string | null;
20
+ result: ColumnSelectOptionsResult;
21
+ };
22
+ export type AsyncSelectOptionsSource<T> = {
23
+ update: (args: AsyncSelectOptionsSourceArgs<T>) => void;
24
+ retry: () => void;
25
+ subscribe: (listener: () => void) => () => void;
26
+ getSnapshot: () => AsyncSelectOptionsSnapshot;
27
+ dispose: () => void;
28
+ };
29
+ export declare const LOADING_SELECT_OPTIONS_RESULT: ColumnSelectOptionsResult;
30
+ export declare const omitOwnColumnFilter: (columnFilters: Record<string, ColumnFilterValue>, columnKey: string) => Record<string, ColumnFilterValue>;
31
+ export declare const selectAsyncOptionsResult: (snapshot: AsyncSelectOptionsSnapshot, columnKey: string | null) => ColumnSelectOptionsResult;
32
+ export declare const createAsyncSelectOptionsSource: <T>() => AsyncSelectOptionsSource<T>;
@@ -0,0 +1,90 @@
1
+ import { createValueStore as e } from "../logic/valueStore.js";
2
+ import { IDLE_SELECT_OPTIONS_RESULT as t } from "./selectOptionsCollector.js";
3
+ //#region src/controllers/asyncSelectOptionsSource.ts
4
+ var n = [], r = /* @__PURE__ */ new Set(), i = {
5
+ status: "loading",
6
+ options: n,
7
+ allValues: r,
8
+ progress: 0
9
+ }, a = {
10
+ columnKey: null,
11
+ result: t
12
+ }, o = (e, t) => {
13
+ if (!(t in e)) return e;
14
+ let n = {};
15
+ for (let r of Object.keys(e)) r !== t && (n[r] = e[r]);
16
+ return n;
17
+ }, s = (e) => e instanceof Error ? e.message || e.name : typeof e == "string" ? e : String(e), c = (e, n) => n === null ? t : e.columnKey === n ? e.result : i, l = () => {
18
+ let t = e(a), c = null, l = null, u = 0, d = () => {
19
+ l?.abort(), l = null;
20
+ }, f = (e) => {
21
+ let { columnKey: a, column: c, fetch: f } = e;
22
+ if (a === null || c === null || f === null) return;
23
+ d();
24
+ let p = ++u, m = new AbortController();
25
+ l = m, t.setSnapshot({
26
+ columnKey: a,
27
+ result: i
28
+ });
29
+ let h;
30
+ try {
31
+ h = Promise.resolve(f({
32
+ columnKey: a,
33
+ column: c,
34
+ columnFilters: o(e.columnFilters, a),
35
+ globalText: e.globalText,
36
+ signal: m.signal
37
+ }));
38
+ } catch (e) {
39
+ h = Promise.reject(e);
40
+ }
41
+ h.then((e) => {
42
+ if (p !== u || m.signal.aborted) return;
43
+ l = null;
44
+ let r = Array.isArray(e?.options) ? e.options : n;
45
+ t.setSnapshot({
46
+ columnKey: a,
47
+ result: {
48
+ status: "ready",
49
+ options: r,
50
+ allValues: new Set(r.map((e) => e.value)),
51
+ progress: 1,
52
+ truncated: e?.truncated === !0
53
+ }
54
+ });
55
+ }, (e) => {
56
+ p !== u || m.signal.aborted || (l = null, t.setSnapshot({
57
+ columnKey: a,
58
+ result: {
59
+ status: "error",
60
+ options: n,
61
+ allValues: r,
62
+ progress: 0,
63
+ errorMessage: s(e)
64
+ }
65
+ }));
66
+ });
67
+ };
68
+ return {
69
+ update: (e) => {
70
+ let n = c;
71
+ if (c = e, n === null || n.columnKey !== e.columnKey || n.fetch === null != (e.fetch === null)) {
72
+ if (e.columnKey === null || e.fetch === null) {
73
+ d(), u += 1, t.getSnapshot() !== a && t.setSnapshot(a);
74
+ return;
75
+ }
76
+ f(e);
77
+ }
78
+ },
79
+ retry: () => {
80
+ c && f(c);
81
+ },
82
+ subscribe: t.subscribe,
83
+ getSnapshot: t.getSnapshot,
84
+ dispose: () => {
85
+ d(), u += 1, c = null;
86
+ }
87
+ };
88
+ };
89
+ //#endregion
90
+ export { i as LOADING_SELECT_OPTIONS_RESULT, l as createAsyncSelectOptionsSource, o as omitOwnColumnFilter, c as selectAsyncOptionsResult };
@@ -1 +1 @@
1
- Object.defineProperty(exports,Symbol.toStringTag,{value:`Module`});const e=require("../logic/rowHeightStore.cjs"),t=require("../logic/detailRow.cjs"),n=require("../logic/valueStore.cjs");var r=(e,t)=>e.autoHeightActive===t.autoHeightActive&&e.rowHeightStore===t.rowHeightStore&&e.rowMetrics===t.rowMetrics&&e.rowModel===t.rowModel&&e.virtualRows===t.virtualRows&&e.viewportHeight===t.viewportHeight&&e.version===t.version&&e.nonce===t.nonce,i=()=>{let i=n.createValueStore({version:0,nonce:0}),a=new Map,o=null,s=new Set,c=null,l=()=>{o?.disconnect(),o=null,s.clear()},u=()=>{let e=i.getSnapshot();i.setSnapshot({...e,version:e.version+1})},d=()=>{let e=i.getSnapshot();i.setSnapshot({...e,nonce:e.nonce+1})},f=n=>{let{autoHeightActive:r,rowHeightStore:i,rowMetrics:a,rowModel:c}=n,f=n.scrollContainerRef.current;if(!r||!i){l();return}if(!f)return;let p=f.querySelectorAll(`[data-autoheight-cell]`);if(p.length>0){let n=new Map;p.forEach(e=>{if(t.isInsideDetailCardOf(f,e))return;let r=e.closest(`[data-row-index]`);if(!r)return;let i=Number(r.dataset.rowIndex);if(!Number.isFinite(i))return;let a=Math.ceil(e.getBoundingClientRect().height),o=n.get(i);(o===void 0||a>o)&&n.set(i,a)});let r=!1,o=1/0;if(n.forEach((t,n)=>{let a=c.getRowKey(n)??n;e.setMeasuredRowHeight(i,n,a,t)&&(r=!0,n<o&&(o=n))}),r){let t=f.scrollTop,n=a.rowAtContentY(t),r=t-a.rowTop(n);e.rebuildPrefixFrom(i,o),f.scrollTop=i.prefix[n]+r,u()}}o===null&&(o=new ResizeObserver(d));let m=o,h=new Set;p.forEach(e=>{h.add(e),s.has(e)||(m.observe(e),s.add(e))});let g=[];s.forEach(e=>{h.has(e)||g.push(e)}),g.forEach(e=>{m.unobserve(e),s.delete(e)})};return{update:e=>{c!==null&&r(c,e)||(c=e,f(e))},getSnapshot:i.getSnapshot,subscribe:i.subscribe,measuredHeights:a,dispose:l}};exports.createAutoHeightMeasurer=i;
1
+ Object.defineProperty(exports,Symbol.toStringTag,{value:`Module`});const e=require("../logic/valueStore.cjs"),t=require("../logic/rowHeightStore.cjs"),n=require("../logic/detailRow.cjs");var r=(e,t)=>e.autoHeightActive===t.autoHeightActive&&e.rowHeightStore===t.rowHeightStore&&e.rowMetrics===t.rowMetrics&&e.rowModel===t.rowModel&&e.virtualRows===t.virtualRows&&e.viewportHeight===t.viewportHeight&&e.version===t.version&&e.nonce===t.nonce,i=()=>{let i=e.createValueStore({version:0,nonce:0}),a=new Map,o=null,s=new Set,c=null,l=()=>{o?.disconnect(),o=null,s.clear()},u=()=>{let e=i.getSnapshot();i.setSnapshot({...e,version:e.version+1})},d=()=>{let e=i.getSnapshot();i.setSnapshot({...e,nonce:e.nonce+1})},f=e=>{let{autoHeightActive:r,rowHeightStore:i,rowMetrics:a,rowModel:c}=e,f=e.scrollContainerRef.current;if(!r||!i){l();return}if(!f)return;let p=f.querySelectorAll(`[data-autoheight-cell]`);if(p.length>0){let e=new Map;p.forEach(t=>{if(n.isInsideDetailCardOf(f,t))return;let r=t.closest(`[data-row-index]`);if(!r)return;let i=Number(r.dataset.rowIndex);if(!Number.isFinite(i))return;let a=Math.ceil(t.getBoundingClientRect().height),o=e.get(i);(o===void 0||a>o)&&e.set(i,a)});let r=!1,o=1/0;if(e.forEach((e,n)=>{let a=c.getRowKey(n)??n;t.setMeasuredRowHeight(i,n,a,e)&&(r=!0,n<o&&(o=n))}),r){let e=f.scrollTop,n=a.rowAtContentY(e),r=e-a.rowTop(n);t.rebuildPrefixFrom(i,o),f.scrollTop=i.prefix[n]+r,u()}}o===null&&(o=new ResizeObserver(d));let m=o,h=new Set;p.forEach(e=>{h.add(e),s.has(e)||(m.observe(e),s.add(e))});let g=[];s.forEach(e=>{h.has(e)||g.push(e)}),g.forEach(e=>{m.unobserve(e),s.delete(e)})};return{update:e=>{c!==null&&r(c,e)||(c=e,f(e))},getSnapshot:i.getSnapshot,subscribe:i.subscribe,measuredHeights:a,dispose:l}};exports.createAutoHeightMeasurer=i;
@@ -1,9 +1,9 @@
1
- import { rebuildPrefixFrom as e, setMeasuredRowHeight as t } from "../logic/rowHeightStore.js";
2
- import { isInsideDetailCardOf as n } from "../logic/detailRow.js";
3
- import { createValueStore as r } from "../logic/valueStore.js";
1
+ import { createValueStore as e } from "../logic/valueStore.js";
2
+ import { rebuildPrefixFrom as t, setMeasuredRowHeight as n } from "../logic/rowHeightStore.js";
3
+ import { isInsideDetailCardOf as r } from "../logic/detailRow.js";
4
4
  //#region src/controllers/autoHeightMeasurer.ts
5
5
  var i = (e, t) => e.autoHeightActive === t.autoHeightActive && e.rowHeightStore === t.rowHeightStore && e.rowMetrics === t.rowMetrics && e.rowModel === t.rowModel && e.virtualRows === t.virtualRows && e.viewportHeight === t.viewportHeight && e.version === t.version && e.nonce === t.nonce, a = () => {
6
- let a = r({
6
+ let a = e({
7
7
  version: 0,
8
8
  nonce: 0
9
9
  }), o = /* @__PURE__ */ new Map(), s = null, c = /* @__PURE__ */ new Set(), l = null, u = () => {
@@ -20,8 +20,8 @@ var i = (e, t) => e.autoHeightActive === t.autoHeightActive && e.rowHeightStore
20
20
  ...e,
21
21
  nonce: e.nonce + 1
22
22
  });
23
- }, p = (r) => {
24
- let { autoHeightActive: i, rowHeightStore: a, rowMetrics: o, rowModel: l } = r, p = r.scrollContainerRef.current;
23
+ }, p = (e) => {
24
+ let { autoHeightActive: i, rowHeightStore: a, rowMetrics: o, rowModel: l } = e, p = e.scrollContainerRef.current;
25
25
  if (!i || !a) {
26
26
  u();
27
27
  return;
@@ -29,23 +29,23 @@ var i = (e, t) => e.autoHeightActive === t.autoHeightActive && e.rowHeightStore
29
29
  if (!p) return;
30
30
  let m = p.querySelectorAll("[data-autoheight-cell]");
31
31
  if (m.length > 0) {
32
- let r = /* @__PURE__ */ new Map();
33
- m.forEach((e) => {
34
- if (n(p, e)) return;
35
- let t = e.closest("[data-row-index]");
36
- if (!t) return;
37
- let i = Number(t.dataset.rowIndex);
32
+ let e = /* @__PURE__ */ new Map();
33
+ m.forEach((t) => {
34
+ if (r(p, t)) return;
35
+ let n = t.closest("[data-row-index]");
36
+ if (!n) return;
37
+ let i = Number(n.dataset.rowIndex);
38
38
  if (!Number.isFinite(i)) return;
39
- let a = Math.ceil(e.getBoundingClientRect().height), o = r.get(i);
40
- (o === void 0 || a > o) && r.set(i, a);
39
+ let a = Math.ceil(t.getBoundingClientRect().height), o = e.get(i);
40
+ (o === void 0 || a > o) && e.set(i, a);
41
41
  });
42
42
  let i = !1, s = Infinity;
43
- if (r.forEach((e, n) => {
44
- let r = l.getRowKey(n) ?? n;
45
- t(a, n, r, e) && (i = !0, n < s && (s = n));
43
+ if (e.forEach((e, t) => {
44
+ let r = l.getRowKey(t) ?? t;
45
+ n(a, t, r, e) && (i = !0, t < s && (s = t));
46
46
  }), i) {
47
- let t = p.scrollTop, n = o.rowAtContentY(t), r = t - o.rowTop(n);
48
- e(a, s), p.scrollTop = a.prefix[n] + r, d();
47
+ let e = p.scrollTop, n = o.rowAtContentY(e), r = e - o.rowTop(n);
48
+ t(a, s), p.scrollTop = a.prefix[n] + r, d();
49
49
  }
50
50
  }
51
51
  s === null && (s = new ResizeObserver(f));
@@ -1 +1 @@
1
- Object.defineProperty(exports,Symbol.toStringTag,{value:`Module`});const e=require("../logic/valueStore.cjs"),t=require("../model/gridActions.cjs"),n=require("../logic/columnAutosize.cjs"),r=require("../logic/chunkedLoop.cjs"),i=require("../logic/autoSizeOnData.cjs");var a=180,o=()=>{let i=null,o=e.createValueStore(!1),s=0,c=null,l=()=>{c!==null&&(clearTimeout(c),c=null)};return{update:e=>{i=e},runAutosize:async e=>{if(i===null||e.length===0||!n.canMeasureAutosize())return;let{rowModel:u,gridRootRef:d,columnWidths:f,dispatch:p}=i,m=s+=1;l();let h=u.getRowCount(),g=d.current,_=n.createColumnWidthAccumulator(e);c=setTimeout(()=>{s===m&&o.setSnapshot(!0)},a);try{if(!await r.runChunked(h,e=>{let t=u.getRow(e);t&&_.collect(t)},{isCancelled:()=>s!==m||i?.rowModel!==u}))return;let e=_.finalize({gridRoot:g,currentWidths:f});Object.keys(e).length>0&&p(t.gridActions.syncColumnWidths(e))}finally{s===m&&(l(),o.setSnapshot(!1))}},subscribe:o.subscribe,getSnapshot:o.getSnapshot,dispose:()=>{s+=1,l()}}},s=()=>{let e=null,t=!1;return{update:n=>{if(e!==null&&e.mode===n.mode&&e.isServerSide===n.isServerSide&&e.rows===n.rows&&e.runAutosize===n.runAutosize){e=n;return}e=n;let{shouldRun:r,nextHasAutoSizedOnMount:a}=i.resolveAutoSizeOnData({mode:n.mode,isServerSide:n.isServerSide,rowCount:n.rows.length,hasAutoSizedOnMount:t});t=a,r&&n.runAutosize(n.visibleColumns)}}};exports.createAutoSizeOnDataTrigger=s,exports.createColumnAutosizeRunner=o;
1
+ Object.defineProperty(exports,Symbol.toStringTag,{value:`Module`});const e=require("../logic/valueStore.cjs"),t=require("../logic/chunkedLoop.cjs"),n=require("../model/gridActions.cjs"),r=require("../logic/columnAutosize.cjs"),i=require("../logic/autoSizeOnData.cjs");var a=180,o=()=>{let i=null,o=e.createValueStore(!1),s=0,c=null,l=()=>{c!==null&&(clearTimeout(c),c=null)};return{update:e=>{i=e},runAutosize:async e=>{if(i===null||e.length===0||!r.canMeasureAutosize())return;let{rowModel:u,gridRootRef:d,columnWidths:f,dispatch:p}=i,m=s+=1;l();let h=u.getRowCount(),g=d.current,_=r.createColumnWidthAccumulator(e);c=setTimeout(()=>{s===m&&o.setSnapshot(!0)},a);try{if(!await t.runChunked(h,e=>{let t=u.getRow(e);t&&_.collect(t)},{isCancelled:()=>s!==m||i?.rowModel!==u}))return;let e=_.finalize({gridRoot:g,currentWidths:f});Object.keys(e).length>0&&p(n.gridActions.syncColumnWidths(e))}finally{s===m&&(l(),o.setSnapshot(!1))}},subscribe:o.subscribe,getSnapshot:o.getSnapshot,dispose:()=>{s+=1,l()}}},s=()=>{let e=null,t=!1;return{update:n=>{if(e!==null&&e.mode===n.mode&&e.isServerSide===n.isServerSide&&e.rows===n.rows&&e.runAutosize===n.runAutosize){e=n;return}e=n;let{shouldRun:r,nextHasAutoSizedOnMount:a}=i.resolveAutoSizeOnData({mode:n.mode,isServerSide:n.isServerSide,rowCount:n.rows.length,hasAutoSizedOnMount:t});t=a,r&&n.runAutosize(n.visibleColumns)}}};exports.createAutoSizeOnDataTrigger=s,exports.createColumnAutosizeRunner=o;
@@ -1,7 +1,7 @@
1
1
  import { createValueStore as e } from "../logic/valueStore.js";
2
- import { gridActions as t } from "../model/gridActions.js";
3
- import { canMeasureAutosize as n, createColumnWidthAccumulator as r } from "../logic/columnAutosize.js";
4
- import { runChunked as i } from "../logic/chunkedLoop.js";
2
+ import { runChunked as t } from "../logic/chunkedLoop.js";
3
+ import { gridActions as n } from "../model/gridActions.js";
4
+ import { canMeasureAutosize as r, createColumnWidthAccumulator as i } from "../logic/columnAutosize.js";
5
5
  import { resolveAutoSizeOnData as a } from "../logic/autoSizeOnData.js";
6
6
  //#region src/controllers/columnAutosizeRunner.ts
7
7
  var o = 180, s = () => {
@@ -13,15 +13,15 @@ var o = 180, s = () => {
13
13
  a = e;
14
14
  },
15
15
  runAutosize: async (e) => {
16
- if (a === null || e.length === 0 || !n()) return;
16
+ if (a === null || e.length === 0 || !r()) return;
17
17
  let { rowModel: d, gridRootRef: f, columnWidths: p, dispatch: m } = a, h = c += 1;
18
18
  u();
19
- let g = d.getRowCount(), _ = f.current, v = r(e);
19
+ let g = d.getRowCount(), _ = f.current, v = i(e);
20
20
  l = setTimeout(() => {
21
21
  c === h && s.setSnapshot(!0);
22
22
  }, o);
23
23
  try {
24
- if (!await i(g, (e) => {
24
+ if (!await t(g, (e) => {
25
25
  let t = d.getRow(e);
26
26
  t && v.collect(t);
27
27
  }, { isCancelled: () => c !== h || a?.rowModel !== d })) return;
@@ -29,7 +29,7 @@ var o = 180, s = () => {
29
29
  gridRoot: _,
30
30
  currentWidths: p
31
31
  });
32
- Object.keys(e).length > 0 && m(t.syncColumnWidths(e));
32
+ Object.keys(e).length > 0 && m(n.syncColumnWidths(e));
33
33
  } finally {
34
34
  c === h && (u(), s.setSnapshot(!1));
35
35
  }
@@ -1 +1 @@
1
- Object.defineProperty(exports,Symbol.toStringTag,{value:`Module`});const e=require("../logic/detailRow.cjs"),t=require("../logic/valueStore.cjs"),n=require("./popoverSupport.cjs"),r=require("../logic/filtering.cjs"),i=require("../logic/numberFilterCondition.cjs"),a=require("../logic/textFilterCondition.cjs"),o=require("../logic/dateFilterCondition.cjs"),s=require("../logic/filterPopoverLayout.cjs"),c=require("../logic/filterPopoverOutsideClick.cjs");var l=240,u=8,d=8,f=230,p=340,m=480,h=(e,t)=>{if(!t)return null;let n=e.find(e=>e.key===t.columnKey)??null;return!n||n.filterType===t.filterType?n:{...n,filterType:t.filterType}},g=()=>{let g=null,_=t.createValueStore({state:null,layout:null}),v={current:null},y={current:null},b={current:null},x=null,S=null,C=null,w=null,T=null,E=null,D=null,O=null,k=e=>{let t=_.getSnapshot(),n=t.layout;n===e||n!==null&&e!==null&&n.top===e.top&&n.left===e.left&&n.width===e.width&&n.maxHeight===e.maxHeight||_.setSnapshot({...t,layout:e})},A=()=>g===null?null:h(g.visibleColumns,_.getSnapshot().state),j=()=>{if(!_.getSnapshot().state||!x){k(null);return}let e=x.getBoundingClientRect(),t=A()?.filterType,n=t===`numberSet`||t===`textSet`||t===`dateSet`?m:t===`set`?p:f,{top:r,left:i,maxHeight:a}=s.computeFilterPopoverPlacement({anchorTop:e.top,anchorBottom:e.bottom,anchorRight:e.right,viewportWidth:window.innerWidth,viewportHeight:window.innerHeight,popupWidth:l,popupHeight:S??n,offsetY:d,viewportMargin:u});k({top:r,left:i,width:l,maxHeight:a})},M=()=>{T!==null&&(cancelAnimationFrame(T),T=null),E!==null&&(cancelAnimationFrame(E),E=null)},N=()=>{C?.disconnect(),C=null,w=null},P=()=>{_.setSnapshot({state:null,layout:null}),x=null,y.current=null,b.current=null,S=null,F.detach(),N(),M(),D=null,g!==null&&n.restoreGridFocus(g.gridRootRef)},F=n.createPopoverWindowBindings({onResize:j,onScroll:j,isInside:e=>!c.isFilterPopoverOutsideTarget(e,v.current),onOutsidePointerDown:P}),I=t=>{if(g===null||!g.enableColumnFilter)return;let{gridRootRef:s,resolveColumnFilterType:c,columnFilterValues:l}=g;n.blurForPopover(s.current);let u=s.current,d=u?.querySelectorAll(`[data-ssg-col-key]`);x=u&&d?Array.from(d).find(n=>n.dataset.ssgColKey===t.key&&!e.isInsideDetailCardOf(u,n))??null:null;let f=t.filterType===`auto`&&c?c(t):t.filterType??`text`,p=l[t.key],m=f===`number`?i.numberFilterValueToConditionDraft(r.isNumberColumnFilterValue(p)?p:void 0):f===`numberSet`?i.parsedNumberFilterToConditionDraft(r.isNumberSetColumnFilterValue(p)?p.condition:void 0):null,h=f===`textSet`?a.parsedTextFilterToConditionDraft(r.isTextSetColumnFilterValue(p)?p.condition:void 0):null,v=f===`dateSet`?o.parsedDateFilterToConditionDraft(r.isDateSetColumnFilterValue(p)?p.condition:void 0):null;_.setSnapshot({..._.getSnapshot(),state:{columnKey:t.key,filterType:f,draftValue:r.columnFilterValueToDraftText(p),numberDraft:m,textDraft:h,dateDraft:v}}),j(),F.attach()},L=e=>{let t=_.getSnapshot();t.state&&_.setSnapshot({...t,state:{...t.state,...e}})},R=()=>{let e=v.current;if(!(_.getSnapshot().layout!==null&&e!==null)||typeof ResizeObserver>`u`){N();return}w!==e&&(N(),C=new ResizeObserver(()=>{let e=v.current?.getBoundingClientRect().height??null;e===null||e===S||(S=e,j())}),C.observe(e),w=e)},z=()=>{let{state:e,layout:t}=_.getSnapshot(),n=A();if(!e||!n||!t){M(),D=null;return}let r=O!==g?.visibleColumns,i=`${e.columnKey}|${e.filterType}|${t.top}|${t.left}|${t.width}`;if(!r&&D===i)return;D=i,O=g?.visibleColumns??null,M();let a=n.filterType??`text`;T=requestAnimationFrame(()=>{T=null,E=requestAnimationFrame(()=>{if(E=null,a===`select`){b.current?.focus();return}let e=y.current;if(e&&(e.focus(),e.type===`text`)){let t=e.value.length;e.setSelectionRange(t,t)}})})};return{update:e=>{g=e,R(),z()},subscribe:_.subscribe,getSnapshot:_.getSnapshot,panelRef:v,textInputRef:y,selectRef:b,open:I,close:P,updateDraft:e=>L({draftValue:e}),updateNumberDraft:e=>L({numberDraft:e}),updateTextDraft:e=>L({textDraft:e}),updateDateDraft:e=>L({dateDraft:e}),dispose:()=>{F.detach(),N(),M()}}};exports.createFilterPopoverController=g,exports.resolveOpenedFilterColumn=h;
1
+ Object.defineProperty(exports,Symbol.toStringTag,{value:`Module`});const e=require("../logic/valueStore.cjs"),t=require("../logic/detailRow.cjs"),n=require("./popoverSupport.cjs"),r=require("../logic/filtering.cjs"),i=require("../logic/numberFilterCondition.cjs"),a=require("../logic/textFilterCondition.cjs"),o=require("../logic/dateFilterCondition.cjs"),s=require("../logic/filterPopoverLayout.cjs"),c=require("../logic/filterPopoverOutsideClick.cjs");var l=240,u=8,d=8,f=230,p=340,m=480,h=(e,t)=>{if(!t)return null;let n=e.find(e=>e.key===t.columnKey)??null;return!n||n.filterType===t.filterType?n:{...n,filterType:t.filterType}},g=()=>{let g=null,_=e.createValueStore({state:null,layout:null}),v={current:null},y={current:null},b={current:null},x=null,S=null,C=null,w=null,T=null,E=null,D=null,O=null,k=e=>{let t=_.getSnapshot(),n=t.layout;n===e||n!==null&&e!==null&&n.top===e.top&&n.left===e.left&&n.width===e.width&&n.maxHeight===e.maxHeight||_.setSnapshot({...t,layout:e})},A=()=>g===null?null:h(g.visibleColumns,_.getSnapshot().state),j=()=>{if(!_.getSnapshot().state||!x){k(null);return}let e=x.getBoundingClientRect(),t=A()?.filterType,n=t===`numberSet`||t===`textSet`||t===`dateSet`?m:t===`set`?p:f,{top:r,left:i,maxHeight:a}=s.computeFilterPopoverPlacement({anchorTop:e.top,anchorBottom:e.bottom,anchorRight:e.right,viewportWidth:window.innerWidth,viewportHeight:window.innerHeight,popupWidth:l,popupHeight:S??n,offsetY:d,viewportMargin:u});k({top:r,left:i,width:l,maxHeight:a})},M=()=>{T!==null&&(cancelAnimationFrame(T),T=null),E!==null&&(cancelAnimationFrame(E),E=null)},N=()=>{C?.disconnect(),C=null,w=null},P=()=>{_.setSnapshot({state:null,layout:null}),x=null,y.current=null,b.current=null,S=null,F.detach(),N(),M(),D=null,g!==null&&n.restoreGridFocus(g.gridRootRef)},F=n.createPopoverWindowBindings({onResize:j,onScroll:j,isInside:e=>!c.isFilterPopoverOutsideTarget(e,v.current),onOutsidePointerDown:P}),I=e=>{if(g===null||!g.enableColumnFilter)return;let{gridRootRef:s,resolveColumnFilterType:c,columnFilterValues:l}=g;n.blurForPopover(s.current);let u=s.current,d=u?.querySelectorAll(`[data-ssg-col-key]`);x=u&&d?Array.from(d).find(n=>n.dataset.ssgColKey===e.key&&!t.isInsideDetailCardOf(u,n))??null:null;let f=e.filterType===`auto`&&c?c(e):e.filterType??`text`,p=l[e.key],m=f===`number`?i.numberFilterValueToConditionDraft(r.isNumberColumnFilterValue(p)?p:void 0):f===`numberSet`?i.parsedNumberFilterToConditionDraft(r.isNumberSetColumnFilterValue(p)?p.condition:void 0):null,h=f===`textSet`?a.parsedTextFilterToConditionDraft(r.isTextSetColumnFilterValue(p)?p.condition:void 0):null,v=f===`dateSet`?o.parsedDateFilterToConditionDraft(r.isDateSetColumnFilterValue(p)?p.condition:void 0):null;_.setSnapshot({..._.getSnapshot(),state:{columnKey:e.key,filterType:f,draftValue:r.columnFilterValueToDraftText(p),numberDraft:m,textDraft:h,dateDraft:v}}),j(),F.attach()},L=e=>{let t=_.getSnapshot();t.state&&_.setSnapshot({...t,state:{...t.state,...e}})},R=()=>{let e=v.current;if(!(_.getSnapshot().layout!==null&&e!==null)||typeof ResizeObserver>`u`){N();return}w!==e&&(N(),C=new ResizeObserver(()=>{let e=v.current?.getBoundingClientRect().height??null;e===null||e===S||(S=e,j())}),C.observe(e),w=e)},z=()=>{let{state:e,layout:t}=_.getSnapshot(),n=A();if(!e||!n||!t){M(),D=null;return}let r=O!==g?.visibleColumns,i=`${e.columnKey}|${e.filterType}|${t.top}|${t.left}|${t.width}`;if(!r&&D===i)return;D=i,O=g?.visibleColumns??null,M();let a=n.filterType??`text`;T=requestAnimationFrame(()=>{T=null,E=requestAnimationFrame(()=>{if(E=null,a===`select`){b.current?.focus();return}let e=y.current;if(e&&(e.focus(),e.type===`text`)){let t=e.value.length;e.setSelectionRange(t,t)}})})};return{update:e=>{g=e,R(),z()},subscribe:_.subscribe,getSnapshot:_.getSnapshot,panelRef:v,textInputRef:y,selectRef:b,open:I,close:P,updateDraft:e=>L({draftValue:e}),updateNumberDraft:e=>L({numberDraft:e}),updateTextDraft:e=>L({textDraft:e}),updateDateDraft:e=>L({dateDraft:e}),dispose:()=>{F.detach(),N(),M()}}};exports.createFilterPopoverController=g,exports.resolveOpenedFilterColumn=h;
@@ -1,5 +1,5 @@
1
- import { isInsideDetailCardOf as e } from "../logic/detailRow.js";
2
- import { createValueStore as t } from "../logic/valueStore.js";
1
+ import { createValueStore as e } from "../logic/valueStore.js";
2
+ import { isInsideDetailCardOf as t } from "../logic/detailRow.js";
3
3
  import { blurForPopover as n, createPopoverWindowBindings as r, restoreGridFocus as i } from "./popoverSupport.js";
4
4
  import { columnFilterValueToDraftText as a, isDateSetColumnFilterValue as o, isNumberColumnFilterValue as s, isNumberSetColumnFilterValue as c, isTextSetColumnFilterValue as l } from "../logic/filtering.js";
5
5
  import { numberFilterValueToConditionDraft as u, parsedNumberFilterToConditionDraft as d } from "../logic/numberFilterCondition.js";
@@ -16,7 +16,7 @@ var g = 240, _ = 8, v = 8, y = 230, b = 340, x = 480, S = (e, t) => {
16
16
  filterType: t.filterType
17
17
  };
18
18
  }, C = () => {
19
- let C = null, w = t({
19
+ let C = null, w = e({
20
20
  state: null,
21
21
  layout: null
22
22
  }), T = { current: null }, E = { current: null }, D = { current: null }, O = null, k = null, A = null, j = null, M = null, N = null, P = null, F = null, I = (e) => {
@@ -61,17 +61,17 @@ var g = 240, _ = 8, v = 8, y = 230, b = 340, x = 480, S = (e, t) => {
61
61
  onScroll: R,
62
62
  isInside: (e) => !h(e, T.current),
63
63
  onOutsidePointerDown: V
64
- }), U = (t) => {
64
+ }), U = (e) => {
65
65
  if (C === null || !C.enableColumnFilter) return;
66
66
  let { gridRootRef: r, resolveColumnFilterType: i, columnFilterValues: m } = C;
67
67
  n(r.current);
68
68
  let h = r.current, g = h?.querySelectorAll("[data-ssg-col-key]");
69
- O = h && g ? Array.from(g).find((n) => n.dataset.ssgColKey === t.key && !e(h, n)) ?? null : null;
70
- let _ = t.filterType === "auto" && i ? i(t) : t.filterType ?? "text", v = m[t.key], y = _ === "number" ? u(s(v) ? v : void 0) : _ === "numberSet" ? d(c(v) ? v.condition : void 0) : null, b = _ === "textSet" ? f(l(v) ? v.condition : void 0) : null, x = _ === "dateSet" ? p(o(v) ? v.condition : void 0) : null;
69
+ O = h && g ? Array.from(g).find((n) => n.dataset.ssgColKey === e.key && !t(h, n)) ?? null : null;
70
+ let _ = e.filterType === "auto" && i ? i(e) : e.filterType ?? "text", v = m[e.key], y = _ === "number" ? u(s(v) ? v : void 0) : _ === "numberSet" ? d(c(v) ? v.condition : void 0) : null, b = _ === "textSet" ? f(l(v) ? v.condition : void 0) : null, x = _ === "dateSet" ? p(o(v) ? v.condition : void 0) : null;
71
71
  w.setSnapshot({
72
72
  ...w.getSnapshot(),
73
73
  state: {
74
- columnKey: t.key,
74
+ columnKey: e.key,
75
75
  filterType: _,
76
76
  draftValue: a(v),
77
77
  numberDraft: y,
@@ -1 +1 @@
1
- Object.defineProperty(exports,Symbol.toStringTag,{value:`Module`});const e=require("../logic/detailRow.cjs"),t=require("../model/gridActions.cjs"),n=require("../logic/geometry.cjs"),r=require("../logic/autoScrollGeometry.cjs"),i=require("../logic/sorting.cjs"),a=require("../logic/verticalGeometry.cjs");var o=10,s=300,c=()=>{let o=null,s=!1,c=!1,l=null,u=null,d=`mouse`,f=null,p=null,m=!1,h=!1,g=()=>o?.uiState.dragState??null,_=(e,t)=>{if(o===null)return null;let{bodyScrollRef:r,scrollContainerRef:i,leftPaneScrollRef:s,rightPaneScrollRef:c,filteredRowsLength:l,visibleColumnsLength:u,paneLayout:d,leftLeadingWidth:f,centerLeadingWidth:p,rightLeadingWidth:m,headerHeight:h,rowMetrics:g,verticalScaleFactor:_}=o,v=r.current;if(!v||l===0||u===0)return null;let y=v.getBoundingClientRect(),b=a.clientYToRowIndex(v.scrollTop+t-y.top-h,i.current?.scrollTop??0,_,g),x=null,S=s.current;if(x===null&&S&&d.left.entries.length>0){let t=S.getBoundingClientRect();if(e<t.right){let r=e-t.left-f;x=n.findLogicalIndexFromPaneOffset(d.left,r)}}let C=c.current;if(x===null&&C&&d.right.entries.length>0){let t=C.getBoundingClientRect();if(e>=t.left){let r=e-t.left-m;x=n.findLogicalIndexFromPaneOffset(d.right,r)}}if(x===null&&d.center.entries.length>0){let t=v.scrollLeft+e-y.left-p;x=n.findLogicalIndexFromPaneOffset(d.center,Math.max(t,0))}return x===null?null:{row:b,col:n.clamp(x,0,u-1)}},v=(e,n)=>{let r=g();if(o===null||!r||r.type!==`selection`)return;let i=_(e,n);if(i){if(r.selectionKind===`cell`){o.dispatch(t.gridActions.updateSelection(i));return}if(r.selectionKind===`row`){o.dispatch(t.gridActions.updateRowSelection(i.row));return}r.selectionKind===`col`&&o.dispatch(t.gridActions.updateColumnSelection(i.col))}},y=(e,n)=>{if(o===null)return;let{gridRootRef:r,dispatch:i,enableRangeSelection:a,enableRowSelection:s,onGutterRowSelect:c,onCellDoubleClickRef:l}=o;r.current?.focus({preventScroll:!0});let{target:d}=e;if(d.kind===`cell`){let e=u;if(e&&e.cell.row===d.cell.row&&e.cell.col===d.cell.col&&n-e.time<300){u=null,l.current(d.cell);return}u={cell:d.cell,time:n},i(t.gridActions.activateCell(d.cell)),a&&(i(t.gridActions.startSelection(d.cell)),i(t.gridActions.endSelection()));return}if(u=null,d.kind===`row`){if(s){c(d.rowIndex,{shiftKey:!1});return}i(t.gridActions.startRowSelection(d.rowIndex)),i(t.gridActions.endSelection());return}i(t.gridActions.startColumnSelection(d.colIndex)),i(t.gridActions.endSelection())},b=()=>{o!==null&&(c=!1,o.dispatch(t.gridActions.endSelection()),o.dispatch(t.gridActions.endColumnResize()))},x=e=>{o!==null&&(o.pointerClientRef.current={x:e.clientX,y:e.clientY},g()?.type===`columnResize`&&o.dispatch(t.gridActions.updateColumnResize(e.clientX)))},S=e=>{let t=l;t&&(l=null,e.pointerId===t.pointerId&&Math.abs(e.clientX-t.x)<10&&Math.abs(e.clientY-t.y)<10&&y(t,e.timeStamp)),b()},C=()=>{l=null,b()},w=()=>{s||(s=!0,window.addEventListener(`pointermove`,x),window.addEventListener(`pointerup`,S),window.addEventListener(`pointercancel`,C))},T=()=>{s&&(s=!1,window.removeEventListener(`pointermove`,x),window.removeEventListener(`pointerup`,S),window.removeEventListener(`pointercancel`,C))},E=()=>{h=!1,o!==null&&o.autoScrollFrameRef.current!==null&&(cancelAnimationFrame(o.autoScrollFrameRef.current),o.autoScrollFrameRef.current=null)},D=()=>{if(o===null||!h)return;let{scrollContainerRef:e,pointerClientRef:t,autoScrollFrameRef:n}=o,i=e.current,a=t.current;if(!i||!a){n.current=requestAnimationFrame(D);return}if(!m){let e=p;if(e&&!r.hasPointerLeftActivationRadius(e,a,6)){n.current=requestAnimationFrame(D);return}m=!0}let s=i.getBoundingClientRect(),c=r.resolveScrollContentBox({rectLeft:s.left,rectTop:s.top,clientLeft:i.clientLeft,clientTop:i.clientTop,clientWidth:i.clientWidth,clientHeight:i.clientHeight}),l=g(),u=l?.type===`selection`&&l.selectionKind===`col`,d=l?.type===`selection`&&l.selectionKind===`row`,f=u?0:r.resolveAutoScrollAxisDirection(a.y,c.top,c.bottom,24),_=d?0:r.resolveAutoScrollAxisDirection(a.x,c.left,c.right,24),y=r.computeNextScrollPosition(i.scrollTop,f,18,i.scrollHeight-i.clientHeight),b=r.computeNextScrollPosition(i.scrollLeft,_,18,i.scrollWidth-i.clientWidth);(y!==i.scrollTop||b!==i.scrollLeft)&&(i.scrollTo({top:y,left:b,behavior:`auto`}),v(a.x,a.y)),n.current=requestAnimationFrame(D)},O=()=>{let e=g()?.type===`selection`;e&&!h?(h=!0,o!==null&&(o.autoScrollFrameRef.current=requestAnimationFrame(D))):!e&&h&&E()},k=()=>{if(f!==null)return;let e=()=>{if(!c||o===null){f=null;return}let{scrollContainerRef:t,pointerClientRef:n,onGutterRowSelectDrag:i}=o,a=t.current,s=n.current;if(!a||!s){f=requestAnimationFrame(e);return}if(!m){let t=p;if(t&&!r.hasPointerLeftActivationRadius(t,s,6)){f=requestAnimationFrame(e);return}m=!0}let l=a.getBoundingClientRect(),u=r.resolveScrollContentBox({rectLeft:l.left,rectTop:l.top,clientLeft:a.clientLeft,clientTop:a.clientTop,clientWidth:a.clientWidth,clientHeight:a.clientHeight}),d=r.resolveAutoScrollAxisDirection(s.y,u.top,u.bottom,24),h=r.computeNextScrollPosition(a.scrollTop,d,18,a.scrollHeight-a.clientHeight);if(h!==a.scrollTop){a.scrollTo({top:h,left:a.scrollLeft,behavior:`auto`});let e=_(s.x,s.y);e&&i(e.row)}f=requestAnimationFrame(e)};f=requestAnimationFrame(e)},A=(e,t)=>(e.preventDefault(),o===null||e.button!==0?!1:(d=e.pointerType,e.pointerType===`touch`?(l={pointerId:e.pointerId,x:e.clientX,y:e.clientY,target:t},!1):(o.gridRootRef.current?.focus({preventScroll:!0}),o.pointerClientRef.current={x:e.clientX,y:e.clientY},p={x:e.clientX,y:e.clientY},m=!1,!0)));return{update:e=>{o=e,w(),O()},updateSelectionFromPointer:v,handleCellPointerDown:(e,n)=>{!A(n,{kind:`cell`,cell:e})||o===null||(o.dispatch(t.gridActions.activateCell(e)),o.enableRangeSelection&&o.dispatch(t.gridActions.startSelection(e)))},handleCellDoubleClick:e=>{d===`touch`||o===null||o.onCellDoubleClickRef.current(e)},handleCellPointerEnter:(e,n)=>{if(o===null||(o.enableRowHover&&o.setHoveredRowIndex(e.row),!o.enableRangeSelection))return;let r=g();r?.type!==`selection`||r.selectionKind!==`cell`||(o.pointerClientRef.current={x:n.clientX,y:n.clientY},o.dispatch(t.gridActions.updateSelection(e)))},handleNativeDragStart:e=>{e.preventDefault()},handleRowHeaderPointerDown:(e,n)=>{if(!(!A(n,{kind:`row`,rowIndex:e})||o===null)){if(o.enableRowSelection){c=!0,o.onGutterRowSelect(e,{shiftKey:n.shiftKey}),k();return}o.dispatch(t.gridActions.startRowSelection(e))}},handleRowHeaderPointerEnter:(e,n)=>{if(o===null)return;if(o.enableRowHover&&o.setHoveredRowIndex(e),c){o.pointerClientRef.current={x:n.clientX,y:n.clientY},o.onGutterRowSelectDrag(e);return}let r=g();r?.type!==`selection`||r.selectionKind!==`row`||(o.pointerClientRef.current={x:n.clientX,y:n.clientY},o.dispatch(t.gridActions.updateRowSelection(e)))},handleColumnHeaderPointerDown:(n,r)=>{if(!(!A(r,{kind:`col`,colIndex:n})||o===null)){if(r.shiftKey&&o.enableSorting){let r=o.orderedColumns[n];if(r&&!e.isSyntheticColumnKey(r.key)){let e=o.uiState.sort,n=e.find(e=>e.columnKey===r.key)?.direction?`desc`:`asc`,a=i.nextSortEntries(e,r.key,n,!0);o.dispatch(a.length===0?t.gridActions.clearSort():t.gridActions.setSort(a))}return}o.dispatch(t.gridActions.startColumnSelection(n))}},handleColumnHeaderPointerEnter:(e,n)=>{if(o===null)return;o.setHoveredRowIndex(null),o.enableColumnHeaderHover&&o.setHoveredColumnIndex(e);let r=g();r?.type!==`selection`||r.selectionKind!==`col`||(o.pointerClientRef.current={x:n.clientX,y:n.clientY},o.dispatch(t.gridActions.updateColumnSelection(e)))},dispose:()=>{T(),E(),f!==null&&(cancelAnimationFrame(f),f=null)}}};exports.TOUCH_DOUBLE_TAP_MS=s,exports.TOUCH_TAP_SLOP_PX=o,exports.createPointerInteractionsController=c;
1
+ Object.defineProperty(exports,Symbol.toStringTag,{value:`Module`});const e=require("../logic/sorting.cjs"),t=require("../logic/detailRow.cjs"),n=require("../model/gridActions.cjs"),r=require("../logic/geometry.cjs"),i=require("../logic/autoScrollGeometry.cjs"),a=require("../logic/verticalGeometry.cjs");var o=10,s=300,c=()=>{let o=null,s=!1,c=!1,l=null,u=null,d=`mouse`,f=null,p=null,m=!1,h=!1,g=()=>o?.uiState.dragState??null,_=(e,t)=>{if(o===null)return null;let{bodyScrollRef:n,scrollContainerRef:i,leftPaneScrollRef:s,rightPaneScrollRef:c,filteredRowsLength:l,visibleColumnsLength:u,paneLayout:d,leftLeadingWidth:f,centerLeadingWidth:p,rightLeadingWidth:m,headerHeight:h,rowMetrics:g,verticalScaleFactor:_}=o,v=n.current;if(!v||l===0||u===0)return null;let y=v.getBoundingClientRect(),b=a.clientYToRowIndex(v.scrollTop+t-y.top-h,i.current?.scrollTop??0,_,g),x=null,S=s.current;if(x===null&&S&&d.left.entries.length>0){let t=S.getBoundingClientRect();if(e<t.right){let n=e-t.left-f;x=r.findLogicalIndexFromPaneOffset(d.left,n)}}let C=c.current;if(x===null&&C&&d.right.entries.length>0){let t=C.getBoundingClientRect();if(e>=t.left){let n=e-t.left-m;x=r.findLogicalIndexFromPaneOffset(d.right,n)}}if(x===null&&d.center.entries.length>0){let t=v.scrollLeft+e-y.left-p;x=r.findLogicalIndexFromPaneOffset(d.center,Math.max(t,0))}return x===null?null:{row:b,col:r.clamp(x,0,u-1)}},v=(e,t)=>{let r=g();if(o===null||!r||r.type!==`selection`)return;let i=_(e,t);if(i){if(r.selectionKind===`cell`){o.dispatch(n.gridActions.updateSelection(i));return}if(r.selectionKind===`row`){o.dispatch(n.gridActions.updateRowSelection(i.row));return}r.selectionKind===`col`&&o.dispatch(n.gridActions.updateColumnSelection(i.col))}},y=(e,t)=>{if(o===null)return;let{gridRootRef:r,dispatch:i,enableRangeSelection:a,enableRowSelection:s,onGutterRowSelect:c,onCellDoubleClickRef:l}=o;r.current?.focus({preventScroll:!0});let{target:d}=e;if(d.kind===`cell`){let e=u;if(e&&e.cell.row===d.cell.row&&e.cell.col===d.cell.col&&t-e.time<300){u=null,l.current(d.cell);return}u={cell:d.cell,time:t},i(n.gridActions.activateCell(d.cell)),a&&(i(n.gridActions.startSelection(d.cell)),i(n.gridActions.endSelection()));return}if(u=null,d.kind===`row`){if(s){c(d.rowIndex,{shiftKey:!1});return}i(n.gridActions.startRowSelection(d.rowIndex)),i(n.gridActions.endSelection());return}i(n.gridActions.startColumnSelection(d.colIndex)),i(n.gridActions.endSelection())},b=()=>{o!==null&&(c=!1,o.dispatch(n.gridActions.endSelection()),o.dispatch(n.gridActions.endColumnResize()))},x=e=>{o!==null&&(o.pointerClientRef.current={x:e.clientX,y:e.clientY},g()?.type===`columnResize`&&o.dispatch(n.gridActions.updateColumnResize(e.clientX)))},S=e=>{let t=l;t&&(l=null,e.pointerId===t.pointerId&&Math.abs(e.clientX-t.x)<10&&Math.abs(e.clientY-t.y)<10&&y(t,e.timeStamp)),b()},C=()=>{l=null,b()},w=()=>{s||(s=!0,window.addEventListener(`pointermove`,x),window.addEventListener(`pointerup`,S),window.addEventListener(`pointercancel`,C))},T=()=>{s&&(s=!1,window.removeEventListener(`pointermove`,x),window.removeEventListener(`pointerup`,S),window.removeEventListener(`pointercancel`,C))},E=()=>{h=!1,o!==null&&o.autoScrollFrameRef.current!==null&&(cancelAnimationFrame(o.autoScrollFrameRef.current),o.autoScrollFrameRef.current=null)},D=()=>{if(o===null||!h)return;let{scrollContainerRef:e,pointerClientRef:t,autoScrollFrameRef:n}=o,r=e.current,a=t.current;if(!r||!a){n.current=requestAnimationFrame(D);return}if(!m){let e=p;if(e&&!i.hasPointerLeftActivationRadius(e,a,6)){n.current=requestAnimationFrame(D);return}m=!0}let s=r.getBoundingClientRect(),c=i.resolveScrollContentBox({rectLeft:s.left,rectTop:s.top,clientLeft:r.clientLeft,clientTop:r.clientTop,clientWidth:r.clientWidth,clientHeight:r.clientHeight}),l=g(),u=l?.type===`selection`&&l.selectionKind===`col`,d=l?.type===`selection`&&l.selectionKind===`row`,f=u?0:i.resolveAutoScrollAxisDirection(a.y,c.top,c.bottom,24),_=d?0:i.resolveAutoScrollAxisDirection(a.x,c.left,c.right,24),y=i.computeNextScrollPosition(r.scrollTop,f,18,r.scrollHeight-r.clientHeight),b=i.computeNextScrollPosition(r.scrollLeft,_,18,r.scrollWidth-r.clientWidth);(y!==r.scrollTop||b!==r.scrollLeft)&&(r.scrollTo({top:y,left:b,behavior:`auto`}),v(a.x,a.y)),n.current=requestAnimationFrame(D)},O=()=>{let e=g()?.type===`selection`;e&&!h?(h=!0,o!==null&&(o.autoScrollFrameRef.current=requestAnimationFrame(D))):!e&&h&&E()},k=()=>{if(f!==null)return;let e=()=>{if(!c||o===null){f=null;return}let{scrollContainerRef:t,pointerClientRef:n,onGutterRowSelectDrag:r}=o,a=t.current,s=n.current;if(!a||!s){f=requestAnimationFrame(e);return}if(!m){let t=p;if(t&&!i.hasPointerLeftActivationRadius(t,s,6)){f=requestAnimationFrame(e);return}m=!0}let l=a.getBoundingClientRect(),u=i.resolveScrollContentBox({rectLeft:l.left,rectTop:l.top,clientLeft:a.clientLeft,clientTop:a.clientTop,clientWidth:a.clientWidth,clientHeight:a.clientHeight}),d=i.resolveAutoScrollAxisDirection(s.y,u.top,u.bottom,24),h=i.computeNextScrollPosition(a.scrollTop,d,18,a.scrollHeight-a.clientHeight);if(h!==a.scrollTop){a.scrollTo({top:h,left:a.scrollLeft,behavior:`auto`});let e=_(s.x,s.y);e&&r(e.row)}f=requestAnimationFrame(e)};f=requestAnimationFrame(e)},A=(e,t)=>(e.preventDefault(),o===null||e.button!==0?!1:(d=e.pointerType,e.pointerType===`touch`?(l={pointerId:e.pointerId,x:e.clientX,y:e.clientY,target:t},!1):(o.gridRootRef.current?.focus({preventScroll:!0}),o.pointerClientRef.current={x:e.clientX,y:e.clientY},p={x:e.clientX,y:e.clientY},m=!1,!0)));return{update:e=>{o=e,w(),O()},updateSelectionFromPointer:v,handleCellPointerDown:(e,t)=>{!A(t,{kind:`cell`,cell:e})||o===null||(o.dispatch(n.gridActions.activateCell(e)),o.enableRangeSelection&&o.dispatch(n.gridActions.startSelection(e)))},handleCellDoubleClick:e=>{d===`touch`||o===null||o.onCellDoubleClickRef.current(e)},handleCellPointerEnter:(e,t)=>{if(o===null||(o.enableRowHover&&o.setHoveredRowIndex(e.row),!o.enableRangeSelection))return;let r=g();r?.type!==`selection`||r.selectionKind!==`cell`||(o.pointerClientRef.current={x:t.clientX,y:t.clientY},o.dispatch(n.gridActions.updateSelection(e)))},handleNativeDragStart:e=>{e.preventDefault()},handleRowHeaderPointerDown:(e,t)=>{if(!(!A(t,{kind:`row`,rowIndex:e})||o===null)){if(o.enableRowSelection){c=!0,o.onGutterRowSelect(e,{shiftKey:t.shiftKey}),k();return}o.dispatch(n.gridActions.startRowSelection(e))}},handleRowHeaderPointerEnter:(e,t)=>{if(o===null)return;if(o.enableRowHover&&o.setHoveredRowIndex(e),c){o.pointerClientRef.current={x:t.clientX,y:t.clientY},o.onGutterRowSelectDrag(e);return}let r=g();r?.type!==`selection`||r.selectionKind!==`row`||(o.pointerClientRef.current={x:t.clientX,y:t.clientY},o.dispatch(n.gridActions.updateRowSelection(e)))},handleColumnHeaderPointerDown:(r,i)=>{if(!(!A(i,{kind:`col`,colIndex:r})||o===null)){if(i.shiftKey&&o.enableSorting){let i=o.orderedColumns[r];if(i&&!t.isSyntheticColumnKey(i.key)){let t=o.uiState.sort,r=t.find(e=>e.columnKey===i.key)?.direction?`desc`:`asc`,a=e.nextSortEntries(t,i.key,r,!0);o.dispatch(a.length===0?n.gridActions.clearSort():n.gridActions.setSort(a))}return}o.dispatch(n.gridActions.startColumnSelection(r))}},handleColumnHeaderPointerEnter:(e,t)=>{if(o===null)return;o.setHoveredRowIndex(null),o.enableColumnHeaderHover&&o.setHoveredColumnIndex(e);let r=g();r?.type!==`selection`||r.selectionKind!==`col`||(o.pointerClientRef.current={x:t.clientX,y:t.clientY},o.dispatch(n.gridActions.updateColumnSelection(e)))},dispose:()=>{T(),E(),f!==null&&(cancelAnimationFrame(f),f=null)}}};exports.TOUCH_DOUBLE_TAP_MS=s,exports.TOUCH_TAP_SLOP_PX=o,exports.createPointerInteractionsController=c;