@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
@@ -1,21 +1,21 @@
1
- import { isSyntheticColumnKey as e } from "../logic/detailRow.js";
2
- import { gridActions as t } from "../model/gridActions.js";
3
- import { clamp as n, findLogicalIndexFromPaneOffset as r } from "../logic/geometry.js";
4
- import { computeNextScrollPosition as i, hasPointerLeftActivationRadius as a, resolveAutoScrollAxisDirection as o, resolveScrollContentBox as s } from "../logic/autoScrollGeometry.js";
5
- import { nextSortEntries as c } from "../logic/sorting.js";
1
+ import { nextSortEntries as e } from "../logic/sorting.js";
2
+ import { isSyntheticColumnKey as t } from "../logic/detailRow.js";
3
+ import { gridActions as n } from "../model/gridActions.js";
4
+ import { clamp as r, findLogicalIndexFromPaneOffset as i } from "../logic/geometry.js";
5
+ import { computeNextScrollPosition as a, hasPointerLeftActivationRadius as o, resolveAutoScrollAxisDirection as s, resolveScrollContentBox as c } from "../logic/autoScrollGeometry.js";
6
6
  import { clientYToRowIndex as l } from "../logic/verticalGeometry.js";
7
7
  //#region src/controllers/pointerInteractionsController.ts
8
8
  var u = 10, d = 300, f = () => {
9
9
  let u = null, d = !1, f = !1, p = null, m = null, h = "mouse", g = null, _ = null, v = !1, y = !1, b = () => u?.uiState.dragState ?? null, x = (e, t) => {
10
10
  if (u === null) return null;
11
- let { bodyScrollRef: i, scrollContainerRef: a, leftPaneScrollRef: o, rightPaneScrollRef: s, filteredRowsLength: c, visibleColumnsLength: d, paneLayout: f, leftLeadingWidth: p, centerLeadingWidth: m, rightLeadingWidth: h, headerHeight: g, rowMetrics: _, verticalScaleFactor: v } = u, y = i.current;
11
+ let { bodyScrollRef: n, scrollContainerRef: a, leftPaneScrollRef: o, rightPaneScrollRef: s, filteredRowsLength: c, visibleColumnsLength: d, paneLayout: f, leftLeadingWidth: p, centerLeadingWidth: m, rightLeadingWidth: h, headerHeight: g, rowMetrics: _, verticalScaleFactor: v } = u, y = n.current;
12
12
  if (!y || c === 0 || d === 0) return null;
13
13
  let b = y.getBoundingClientRect(), x = l(y.scrollTop + t - b.top - g, a.current?.scrollTop ?? 0, v, _), S = null, C = o.current;
14
14
  if (S === null && C && f.left.entries.length > 0) {
15
15
  let t = C.getBoundingClientRect();
16
16
  if (e < t.right) {
17
17
  let n = e - t.left - p;
18
- S = r(f.left, n);
18
+ S = i(f.left, n);
19
19
  }
20
20
  }
21
21
  let w = s.current;
@@ -23,47 +23,47 @@ var u = 10, d = 300, f = () => {
23
23
  let t = w.getBoundingClientRect();
24
24
  if (e >= t.left) {
25
25
  let n = e - t.left - h;
26
- S = r(f.right, n);
26
+ S = i(f.right, n);
27
27
  }
28
28
  }
29
29
  if (S === null && f.center.entries.length > 0) {
30
30
  let t = y.scrollLeft + e - b.left - m;
31
- S = r(f.center, Math.max(t, 0));
31
+ S = i(f.center, Math.max(t, 0));
32
32
  }
33
33
  return S === null ? null : {
34
34
  row: x,
35
- col: n(S, 0, d - 1)
35
+ col: r(S, 0, d - 1)
36
36
  };
37
- }, S = (e, n) => {
37
+ }, S = (e, t) => {
38
38
  let r = b();
39
39
  if (u === null || !r || r.type !== "selection") return;
40
- let i = x(e, n);
40
+ let i = x(e, t);
41
41
  if (i) {
42
42
  if (r.selectionKind === "cell") {
43
- u.dispatch(t.updateSelection(i));
43
+ u.dispatch(n.updateSelection(i));
44
44
  return;
45
45
  }
46
46
  if (r.selectionKind === "row") {
47
- u.dispatch(t.updateRowSelection(i.row));
47
+ u.dispatch(n.updateRowSelection(i.row));
48
48
  return;
49
49
  }
50
- r.selectionKind === "col" && u.dispatch(t.updateColumnSelection(i.col));
50
+ r.selectionKind === "col" && u.dispatch(n.updateColumnSelection(i.col));
51
51
  }
52
- }, C = (e, n) => {
52
+ }, C = (e, t) => {
53
53
  if (u === null) return;
54
54
  let { gridRootRef: r, dispatch: i, enableRangeSelection: a, enableRowSelection: o, onGutterRowSelect: s, onCellDoubleClickRef: c } = u;
55
55
  r.current?.focus({ preventScroll: !0 });
56
56
  let { target: l } = e;
57
57
  if (l.kind === "cell") {
58
58
  let e = m;
59
- if (e && e.cell.row === l.cell.row && e.cell.col === l.cell.col && n - e.time < 300) {
59
+ if (e && e.cell.row === l.cell.row && e.cell.col === l.cell.col && t - e.time < 300) {
60
60
  m = null, c.current(l.cell);
61
61
  return;
62
62
  }
63
63
  m = {
64
64
  cell: l.cell,
65
- time: n
66
- }, i(t.activateCell(l.cell)), a && (i(t.startSelection(l.cell)), i(t.endSelection()));
65
+ time: t
66
+ }, i(n.activateCell(l.cell)), a && (i(n.startSelection(l.cell)), i(n.endSelection()));
67
67
  return;
68
68
  }
69
69
  if (m = null, l.kind === "row") {
@@ -71,17 +71,17 @@ var u = 10, d = 300, f = () => {
71
71
  s(l.rowIndex, { shiftKey: !1 });
72
72
  return;
73
73
  }
74
- i(t.startRowSelection(l.rowIndex)), i(t.endSelection());
74
+ i(n.startRowSelection(l.rowIndex)), i(n.endSelection());
75
75
  return;
76
76
  }
77
- i(t.startColumnSelection(l.colIndex)), i(t.endSelection());
77
+ i(n.startColumnSelection(l.colIndex)), i(n.endSelection());
78
78
  }, w = () => {
79
- u !== null && (f = !1, u.dispatch(t.endSelection()), u.dispatch(t.endColumnResize()));
79
+ u !== null && (f = !1, u.dispatch(n.endSelection()), u.dispatch(n.endColumnResize()));
80
80
  }, T = (e) => {
81
81
  u !== null && (u.pointerClientRef.current = {
82
82
  x: e.clientX,
83
83
  y: e.clientY
84
- }, b()?.type === "columnResize" && u.dispatch(t.updateColumnResize(e.clientX)));
84
+ }, b()?.type === "columnResize" && u.dispatch(n.updateColumnResize(e.clientX)));
85
85
  }, E = (e) => {
86
86
  let t = p;
87
87
  t && (p = null, e.pointerId === t.pointerId && Math.abs(e.clientX - t.x) < 10 && Math.abs(e.clientY - t.y) < 10 && C(t, e.timeStamp)), w();
@@ -95,32 +95,32 @@ var u = 10, d = 300, f = () => {
95
95
  y = !1, u !== null && u.autoScrollFrameRef.current !== null && (cancelAnimationFrame(u.autoScrollFrameRef.current), u.autoScrollFrameRef.current = null);
96
96
  }, j = () => {
97
97
  if (u === null || !y) return;
98
- let { scrollContainerRef: e, pointerClientRef: t, autoScrollFrameRef: n } = u, r = e.current, c = t.current;
99
- if (!r || !c) {
98
+ let { scrollContainerRef: e, pointerClientRef: t, autoScrollFrameRef: n } = u, r = e.current, i = t.current;
99
+ if (!r || !i) {
100
100
  n.current = requestAnimationFrame(j);
101
101
  return;
102
102
  }
103
103
  if (!v) {
104
104
  let e = _;
105
- if (e && !a(e, c, 6)) {
105
+ if (e && !o(e, i, 6)) {
106
106
  n.current = requestAnimationFrame(j);
107
107
  return;
108
108
  }
109
109
  v = !0;
110
110
  }
111
- let l = r.getBoundingClientRect(), d = s({
111
+ let l = r.getBoundingClientRect(), d = c({
112
112
  rectLeft: l.left,
113
113
  rectTop: l.top,
114
114
  clientLeft: r.clientLeft,
115
115
  clientTop: r.clientTop,
116
116
  clientWidth: r.clientWidth,
117
117
  clientHeight: r.clientHeight
118
- }), f = b(), p = f?.type === "selection" && f.selectionKind === "col", m = f?.type === "selection" && f.selectionKind === "row", h = p ? 0 : o(c.y, d.top, d.bottom, 24), g = m ? 0 : o(c.x, d.left, d.right, 24), x = i(r.scrollTop, h, 18, r.scrollHeight - r.clientHeight), C = i(r.scrollLeft, g, 18, r.scrollWidth - r.clientWidth);
118
+ }), f = b(), p = f?.type === "selection" && f.selectionKind === "col", m = f?.type === "selection" && f.selectionKind === "row", h = p ? 0 : s(i.y, d.top, d.bottom, 24), g = m ? 0 : s(i.x, d.left, d.right, 24), x = a(r.scrollTop, h, 18, r.scrollHeight - r.clientHeight), C = a(r.scrollLeft, g, 18, r.scrollWidth - r.clientWidth);
119
119
  (x !== r.scrollTop || C !== r.scrollLeft) && (r.scrollTo({
120
120
  top: x,
121
121
  left: C,
122
122
  behavior: "auto"
123
- }), S(c.x, c.y)), n.current = requestAnimationFrame(j);
123
+ }), S(i.x, i.y)), n.current = requestAnimationFrame(j);
124
124
  }, M = () => {
125
125
  let e = b()?.type === "selection";
126
126
  e && !y ? (y = !0, u !== null && (u.autoScrollFrameRef.current = requestAnimationFrame(j))) : !e && y && A();
@@ -131,31 +131,31 @@ var u = 10, d = 300, f = () => {
131
131
  g = null;
132
132
  return;
133
133
  }
134
- let { scrollContainerRef: t, pointerClientRef: n, onGutterRowSelectDrag: r } = u, c = t.current, l = n.current;
135
- if (!c || !l) {
134
+ let { scrollContainerRef: t, pointerClientRef: n, onGutterRowSelectDrag: r } = u, i = t.current, l = n.current;
135
+ if (!i || !l) {
136
136
  g = requestAnimationFrame(e);
137
137
  return;
138
138
  }
139
139
  if (!v) {
140
140
  let t = _;
141
- if (t && !a(t, l, 6)) {
141
+ if (t && !o(t, l, 6)) {
142
142
  g = requestAnimationFrame(e);
143
143
  return;
144
144
  }
145
145
  v = !0;
146
146
  }
147
- let d = c.getBoundingClientRect(), p = s({
147
+ let d = i.getBoundingClientRect(), p = c({
148
148
  rectLeft: d.left,
149
149
  rectTop: d.top,
150
- clientLeft: c.clientLeft,
151
- clientTop: c.clientTop,
152
- clientWidth: c.clientWidth,
153
- clientHeight: c.clientHeight
154
- }), m = o(l.y, p.top, p.bottom, 24), h = i(c.scrollTop, m, 18, c.scrollHeight - c.clientHeight);
155
- if (h !== c.scrollTop) {
156
- c.scrollTo({
150
+ clientLeft: i.clientLeft,
151
+ clientTop: i.clientTop,
152
+ clientWidth: i.clientWidth,
153
+ clientHeight: i.clientHeight
154
+ }), m = s(l.y, p.top, p.bottom, 24), h = a(i.scrollTop, m, 18, i.scrollHeight - i.clientHeight);
155
+ if (h !== i.scrollTop) {
156
+ i.scrollTo({
157
157
  top: h,
158
- left: c.scrollLeft,
158
+ left: i.scrollLeft,
159
159
  behavior: "auto"
160
160
  });
161
161
  let e = x(l.x, l.y);
@@ -181,77 +181,77 @@ var u = 10, d = 300, f = () => {
181
181
  u = e, O(), M();
182
182
  },
183
183
  updateSelectionFromPointer: S,
184
- handleCellPointerDown: (e, n) => {
185
- !P(n, {
184
+ handleCellPointerDown: (e, t) => {
185
+ !P(t, {
186
186
  kind: "cell",
187
187
  cell: e
188
- }) || u === null || (u.dispatch(t.activateCell(e)), u.enableRangeSelection && u.dispatch(t.startSelection(e)));
188
+ }) || u === null || (u.dispatch(n.activateCell(e)), u.enableRangeSelection && u.dispatch(n.startSelection(e)));
189
189
  },
190
190
  handleCellDoubleClick: (e) => {
191
191
  h === "touch" || u === null || u.onCellDoubleClickRef.current(e);
192
192
  },
193
- handleCellPointerEnter: (e, n) => {
193
+ handleCellPointerEnter: (e, t) => {
194
194
  if (u === null || (u.enableRowHover && u.setHoveredRowIndex(e.row), !u.enableRangeSelection)) return;
195
195
  let r = b();
196
196
  r?.type !== "selection" || r.selectionKind !== "cell" || (u.pointerClientRef.current = {
197
- x: n.clientX,
198
- y: n.clientY
199
- }, u.dispatch(t.updateSelection(e)));
197
+ x: t.clientX,
198
+ y: t.clientY
199
+ }, u.dispatch(n.updateSelection(e)));
200
200
  },
201
201
  handleNativeDragStart: (e) => {
202
202
  e.preventDefault();
203
203
  },
204
- handleRowHeaderPointerDown: (e, n) => {
205
- if (!(!P(n, {
204
+ handleRowHeaderPointerDown: (e, t) => {
205
+ if (!(!P(t, {
206
206
  kind: "row",
207
207
  rowIndex: e
208
208
  }) || u === null)) {
209
209
  if (u.enableRowSelection) {
210
- f = !0, u.onGutterRowSelect(e, { shiftKey: n.shiftKey }), N();
210
+ f = !0, u.onGutterRowSelect(e, { shiftKey: t.shiftKey }), N();
211
211
  return;
212
212
  }
213
- u.dispatch(t.startRowSelection(e));
213
+ u.dispatch(n.startRowSelection(e));
214
214
  }
215
215
  },
216
- handleRowHeaderPointerEnter: (e, n) => {
216
+ handleRowHeaderPointerEnter: (e, t) => {
217
217
  if (u === null) return;
218
218
  if (u.enableRowHover && u.setHoveredRowIndex(e), f) {
219
219
  u.pointerClientRef.current = {
220
- x: n.clientX,
221
- y: n.clientY
220
+ x: t.clientX,
221
+ y: t.clientY
222
222
  }, u.onGutterRowSelectDrag(e);
223
223
  return;
224
224
  }
225
225
  let r = b();
226
226
  r?.type !== "selection" || r.selectionKind !== "row" || (u.pointerClientRef.current = {
227
- x: n.clientX,
228
- y: n.clientY
229
- }, u.dispatch(t.updateRowSelection(e)));
227
+ x: t.clientX,
228
+ y: t.clientY
229
+ }, u.dispatch(n.updateRowSelection(e)));
230
230
  },
231
- handleColumnHeaderPointerDown: (n, r) => {
232
- if (!(!P(r, {
231
+ handleColumnHeaderPointerDown: (r, i) => {
232
+ if (!(!P(i, {
233
233
  kind: "col",
234
- colIndex: n
234
+ colIndex: r
235
235
  }) || u === null)) {
236
- if (r.shiftKey && u.enableSorting) {
237
- let r = u.orderedColumns[n];
238
- if (r && !e(r.key)) {
239
- let e = u.uiState.sort, n = e.find((e) => e.columnKey === r.key)?.direction ? "desc" : "asc", i = c(e, r.key, n, !0);
240
- u.dispatch(i.length === 0 ? t.clearSort() : t.setSort(i));
236
+ if (i.shiftKey && u.enableSorting) {
237
+ let i = u.orderedColumns[r];
238
+ if (i && !t(i.key)) {
239
+ let t = u.uiState.sort, r = t.find((e) => e.columnKey === i.key)?.direction ? "desc" : "asc", a = e(t, i.key, r, !0);
240
+ u.dispatch(a.length === 0 ? n.clearSort() : n.setSort(a));
241
241
  }
242
242
  return;
243
243
  }
244
- u.dispatch(t.startColumnSelection(n));
244
+ u.dispatch(n.startColumnSelection(r));
245
245
  }
246
246
  },
247
- handleColumnHeaderPointerEnter: (e, n) => {
247
+ handleColumnHeaderPointerEnter: (e, t) => {
248
248
  if (u === null) return;
249
249
  u.setHoveredRowIndex(null), u.enableColumnHeaderHover && u.setHoveredColumnIndex(e);
250
250
  let r = b();
251
251
  r?.type !== "selection" || r.selectionKind !== "col" || (u.pointerClientRef.current = {
252
- x: n.clientX,
253
- y: n.clientY
254
- }, u.dispatch(t.updateColumnSelection(e)));
252
+ x: t.clientX,
253
+ y: t.clientY
254
+ }, u.dispatch(n.updateColumnSelection(e)));
255
255
  },
256
256
  dispose: () => {
257
257
  k(), A(), g !== null && (cancelAnimationFrame(g), g = null);
@@ -1 +1 @@
1
- Object.defineProperty(exports,Symbol.toStringTag,{value:`Module`});const e=require("../logic/valueStore.cjs"),t=require("../logic/chunkedLoop.cjs"),n=require("../logic/selectOptions.cjs");var r=5e4,i=[],a=new Set,o={status:`idle`,options:i,allValues:a,progress:0},s={status:`collecting`,options:i,allValues:a,progress:0},c=e=>new Set(e.map(e=>e.value)),l=e=>{let t=e?.filterType??null;return t===`select`||t===`set`||t===`numberSet`||t===`textSet`||t===`dateSet`},u=(e,t,r)=>{if(!e||!l(e))return o;let i=e.filterOptions&&e.filterOptions.length>0?e.filterOptions:null;if(i)return{status:`ready`,options:i,allValues:c(i),progress:1};if(t<=5e4){let e=n.collectSelectOptions(t,r);return{status:`ready`,options:e,allValues:c(e),progress:1}}return null},d={source:null,rowCount:0,result:o},f=(e,t,n)=>e.source===n&&e.rowCount===t?e.result:s,p=()=>{let r=e.createValueStore(d),o=null,s=null,l=e=>{let{getRawValueAt:o,rowCount:l}=e,u=n.createSelectOptionsAccumulator(),d=!1;s=()=>{d=!0},t.runChunked(l,e=>u.collect(o(e)),{isCancelled:()=>d,onYield:(e,t)=>{r.setSnapshot({source:o,rowCount:l,result:{status:`collecting`,options:i,allValues:a,progress:e/t}})}}).then(e=>{if(!e)return;let t=u.finalize();r.setSnapshot({source:o,rowCount:l,result:{status:`ready`,options:t,allValues:c(t),progress:1}})})};return{update:e=>{let t=o===null||o.needsAsync!==e.needsAsync||o.rowCount!==e.rowCount||o.getRawValueAt!==e.getRawValueAt;o=e,t&&(s?.(),s=null,e.needsAsync&&l(e))},subscribe:r.subscribe,getSnapshot:r.getSnapshot,dispose:()=>{s?.(),s=null}}};exports.ASYNC_SELECT_COLLECT_ROW_THRESHOLD=r,exports.IDLE_SELECT_OPTIONS_RESULT=o,exports.createSelectOptionsCollector=p,exports.resolveSyncSelectOptions=u,exports.selectCollectorResult=f;
1
+ Object.defineProperty(exports,Symbol.toStringTag,{value:`Module`});const e=require("../logic/valueStore.cjs"),t=require("../logic/chunkedLoop.cjs"),n=require("../logic/selectOptions.cjs");var r=5e4,i=[],a=new Set,o={status:`idle`,options:i,allValues:a,progress:0},s={status:`collecting`,options:i,allValues:a,progress:0},c=e=>new Set(e.map(e=>e.value)),l=e=>e===`select`||e===`set`||e===`numberSet`||e===`textSet`||e===`dateSet`,u=e=>{let t=e?.filterType??null;return t===`select`||t===`set`||t===`numberSet`||t===`textSet`||t===`dateSet`},d=(e,t,r)=>{if(!e||!u(e))return o;let i=e.filterOptions&&e.filterOptions.length>0?e.filterOptions:null;if(i)return{status:`ready`,options:i,allValues:c(i),progress:1};if(t<=5e4){let e=n.collectSelectOptions(t,r);return{status:`ready`,options:e,allValues:c(e),progress:1}}return null},f={source:null,rowCount:0,result:o},p=(e,t,n)=>e.source===n&&e.rowCount===t?e.result:s,m=()=>{let r=e.createValueStore(f),o=null,s=null,l=e=>{let{getRawValueAt:o,rowCount:l}=e,u=n.createSelectOptionsAccumulator(),d=!1;s=()=>{d=!0},t.runChunked(l,e=>u.collect(o(e)),{isCancelled:()=>d,onYield:(e,t)=>{r.setSnapshot({source:o,rowCount:l,result:{status:`collecting`,options:i,allValues:a,progress:e/t}})}}).then(e=>{if(!e)return;let t=u.finalize();r.setSnapshot({source:o,rowCount:l,result:{status:`ready`,options:t,allValues:c(t),progress:1}})})};return{update:e=>{let t=o===null||o.needsAsync!==e.needsAsync||o.rowCount!==e.rowCount||o.getRawValueAt!==e.getRawValueAt;o=e,t&&(s?.(),s=null,e.needsAsync&&l(e))},subscribe:r.subscribe,getSnapshot:r.getSnapshot,dispose:()=>{s?.(),s=null}}};exports.ASYNC_SELECT_COLLECT_ROW_THRESHOLD=r,exports.IDLE_SELECT_OPTIONS_RESULT=o,exports.createSelectOptionsCollector=m,exports.isSelectLikeFilterType=l,exports.resolveSyncSelectOptions=d,exports.selectCollectorResult=p;
@@ -1,15 +1,18 @@
1
1
  import type { GridColumn } from '../model/gridTypes.unbound';
2
2
  import { type SelectOptionEntry } from '../logic/selectOptions';
3
3
  export declare const ASYNC_SELECT_COLLECT_ROW_THRESHOLD = 50000;
4
- export type ColumnSelectOptionsStatus = 'idle' | 'collecting' | 'ready';
4
+ export type ColumnSelectOptionsStatus = 'idle' | 'collecting' | 'loading' | 'ready' | 'error';
5
5
  export type ColumnSelectOptionsResult = {
6
6
  status: ColumnSelectOptionsStatus;
7
7
  options: SelectOptionEntry[];
8
8
  allValues: ReadonlySet<string>;
9
9
  progress: number;
10
+ truncated?: boolean;
11
+ errorMessage?: string;
10
12
  };
11
13
  export declare const IDLE_SELECT_OPTIONS_RESULT: ColumnSelectOptionsResult;
12
14
  export type RawValueAccessor = (index: number) => unknown;
15
+ export declare const isSelectLikeFilterType: (filterType: string | null | undefined) => boolean;
13
16
  export declare const resolveSyncSelectOptions: <T>(column: GridColumn<T> | null, rowCount: number, getRawValueAt: RawValueAccessor) => ColumnSelectOptionsResult | null;
14
17
  export type SelectOptionsCollectorArgs = {
15
18
  needsAsync: boolean;
@@ -12,11 +12,11 @@ var i = 5e4, a = [], o = /* @__PURE__ */ new Set(), s = {
12
12
  options: a,
13
13
  allValues: o,
14
14
  progress: 0
15
- }, l = (e) => new Set(e.map((e) => e.value)), u = (e) => {
15
+ }, l = (e) => new Set(e.map((e) => e.value)), u = (e) => e === "select" || e === "set" || e === "numberSet" || e === "textSet" || e === "dateSet", d = (e) => {
16
16
  let t = e?.filterType ?? null;
17
17
  return t === "select" || t === "set" || t === "numberSet" || t === "textSet" || t === "dateSet";
18
- }, d = (e, t, r) => {
19
- if (!e || !u(e)) return s;
18
+ }, f = (e, t, r) => {
19
+ if (!e || !d(e)) return s;
20
20
  let i = e.filterOptions && e.filterOptions.length > 0 ? e.filterOptions : null;
21
21
  if (i) return {
22
22
  status: "ready",
@@ -34,12 +34,12 @@ var i = 5e4, a = [], o = /* @__PURE__ */ new Set(), s = {
34
34
  };
35
35
  }
36
36
  return null;
37
- }, f = {
37
+ }, p = {
38
38
  source: null,
39
39
  rowCount: 0,
40
40
  result: s
41
- }, p = (e, t, n) => e.source === n && e.rowCount === t ? e.result : c, m = () => {
42
- let n = e(f), i = null, s = null, c = (e) => {
41
+ }, m = (e, t, n) => e.source === n && e.rowCount === t ? e.result : c, h = () => {
42
+ let n = e(p), i = null, s = null, c = (e) => {
43
43
  let { getRawValueAt: i, rowCount: c } = e, u = r(), d = !1;
44
44
  s = () => {
45
45
  d = !0;
@@ -85,4 +85,4 @@ var i = 5e4, a = [], o = /* @__PURE__ */ new Set(), s = {
85
85
  };
86
86
  };
87
87
  //#endregion
88
- export { i as ASYNC_SELECT_COLLECT_ROW_THRESHOLD, s as IDLE_SELECT_OPTIONS_RESULT, m as createSelectOptionsCollector, d as resolveSyncSelectOptions, p as selectCollectorResult };
88
+ export { i as ASYNC_SELECT_COLLECT_ROW_THRESHOLD, s as IDLE_SELECT_OPTIONS_RESULT, h as createSelectOptionsCollector, u as isSelectLikeFilterType, f as resolveSyncSelectOptions, m as selectCollectorResult };
@@ -1 +1 @@
1
- Object.defineProperty(exports,Symbol.toStringTag,{value:`Module`});const e=require("../model/gridActions.cjs"),t=require("../logic/geometry.cjs"),n=require("../logic/sorting.cjs"),r=require("../logic/columnReset.cjs");var i=300,a=4,o=()=>{let o=null,s=null,c=null,l=()=>{if(o===null)throw Error(`[SpreadsheetGrid] columnCommands は update 前に呼べません。`);return o},u=t=>{t(e.gridActions.stopEdit()),t(e.gridActions.clearSelection()),t(e.gridActions.activateCell(null))},d=(t,n)=>{n(t.length===0?e.gridActions.clearSort():e.gridActions.setSort(t))},f=(e,t)=>{let{closeColumnMenu:n,onColumnsChange:r,columns:i,columnWidths:a,dispatch:o}=l();if(n(),!r)return;let s=i.find(t=>t.key===e);s&&(s.pinned??void 0)!==t&&(r(i.map(n=>{let r=a[n.key]??n.width;return n.key===e?{...n,width:r,pinned:t}:r===n.width?n:{...n,width:r}})),u(o))},p=e=>{let{closeColumnMenu:t,visibleColumns:n,runAutosize:r}=l();t();let i=n.find(t=>t.key===e);i&&r([i])},m=()=>{let{closeColumnMenu:e,visibleColumns:t,runAutosize:n}=l();e(),n(t)},h=()=>{let{closeColumnMenu:e,openToolPanel:t}=l();e(),t(`columns`)},g=()=>{let{closeColumnMenu:e,openToolPanel:t}=l();e(),t(`sort`)},_=()=>{let{closeColumnMenu:e,openToolPanel:t}=l();e(),t(`filter`)},v=e=>{let{closeColumnMenu:t,openColumnFilterPopover:n}=l();t(),n(e)},y=t=>{l().dispatch(e.gridActions.clearColumnFilter(t))},b=()=>{let{dispatch:t,globalFilterText:n}=l();t(e.gridActions.setAllFilters({globalText:n,columnFilters:{}}))},x=()=>{l().dispatch(e.gridActions.setGlobalFilter(``))},S=(e,t)=>{let{onColumnsChange:n,columns:r,columnWidths:i,dispatch:a}=l();if(!n)return;let o=r.find(t=>t.key===e);o&&o.visible!==!1!==t&&(!t&&r.filter(e=>e.visible!==!1).length<=1||(n(r.map(n=>{let r=i[n.key]??n.width;return n.key===e?{...n,width:r,visible:t}:r===n.width?n:{...n,width:r}})),u(a)))},C=()=>{let{onColumnsChange:e,columns:t,columnWidths:n,dispatch:r}=l();e&&t.some(e=>e.visible===!1)&&(e(t.map(e=>{let t=n[e.key]??e.width,r=t!==e.width,i=e.visible===!1;return!r&&!i?e:i?{...e,width:t,visible:!0}:{...e,width:t}})),u(r))},w=()=>{let{onColumnsChange:e,columns:t,orderedColumns:n,columnWidths:r,dispatch:i}=l();if(!e)return;let a=n[0]?.key;a!==void 0&&t.some(e=>e.visible!==!1&&e.key!==a)&&(e(t.map(e=>{let t=r[e.key]??e.width,n=t!==e.width,i=e.visible!==!1&&e.key!==a;return!n&&!i?e:i?{...e,width:t,visible:!1}:{...e,width:t}})),u(i))},T=(e,n)=>{let{onColumnsChange:r,columns:i,columnWidths:a,dispatch:o}=l();if(!r||e.length!==i.length)return;let s=new Map(i.map(e=>[e.key,e]));if(!e.every(e=>s.has(e)))return;let c=t.reorderColumnsByPane(e.map(e=>{let t=s.get(e),r=a[t.key]??t.width,i=n?.has(e)?n.get(e):t.pinned,o=r!==t.width,c=(t.pinned??void 0)!==(i??void 0);return o||c?{...t,width:r,pinned:i}:t}));c.length===i.length&&c.every((e,t)=>{let n=i[t];return!!n&&n.key===e.key&&n.width===e.width&&(n.pinned??void 0)===(e.pinned??void 0)})||(r(c),u(o))},E=e=>{T(e)},D=()=>{let{onColumnsChange:e,columns:t,columnWidths:n,dispatch:i}=l();if(!e||!s)return;let a=r.buildResetColumns(t,s,n);a!==null&&(e(a),u(i))};return{update:e=>{o=e,s===null&&(s=new Map(e.columns.map(e=>[e.key,{width:e.width,pinned:e.pinned,visible:e.visible}])))},handleColumnMenuPinnedChange:f,handleColumnMenuAutosizeColumn:p,handleColumnMenuAutosizeAllColumns:m,handleColumnMenuOpenChooser:h,handleColumnMenuOpenSortManager:g,handleColumnMenuOpenFilter:v,handleColumnMenuOpenFilterManager:_,handleColumnMenuResetColumns:()=>{l().closeColumnMenu(),D()},handleColumnMenuSortChange:(e,t)=>{let{closeColumnMenu:r,enableSorting:i,sort:a,dispatch:o}=l();r(),i&&d(n.nextSortEntries(a,e,t,!1),o)},handleFilterManagerClearFilter:y,handleFilterManagerClearAll:b,handleFilterManagerClearGlobal:x,handleColumnChooserToggleVisibility:S,handleColumnChooserShowAll:C,handleColumnChooserHideAll:w,handleColumnChooserReorder:E,handleColumnChooserReset:D,applyColumnOrderAndPin:T,handleSortManagerAddLevel:(t,r)=>{let{enableSorting:i,sort:a,dispatch:o}=l();i&&o(e.gridActions.setSort(n.addSortEntry(a,t,r)))},handleSortManagerChangeDirection:(t,r)=>{let{enableSorting:i,sort:a,dispatch:o}=l();i&&o(e.gridActions.setSort(n.setSortEntryDirection(a,t,r)))},handleSortManagerChangeColumn:(t,r)=>{let{enableSorting:i,sort:a,dispatch:o}=l();i&&o(e.gridActions.setSort(n.setSortEntryColumn(a,t,r)))},handleSortManagerRemoveLevel:e=>{let{enableSorting:t,sort:r,dispatch:i}=l();t&&d(n.removeSortEntryAt(r,e),i)},handleSortManagerClearAll:()=>{let{enableSorting:t,dispatch:n}=l();t&&n(e.gridActions.clearSort())},handleSortManagerMove:(t,r)=>{let{enableSorting:i,sort:a,dispatch:o}=l();i&&o(e.gridActions.setSort(n.moveSortEntry(a,t,r)))},handleColumnResizePointerDown:(t,n)=>{n.preventDefault(),n.stopPropagation();let{columnWidths:r,dispatch:o,runAutosize:s}=l(),u=n.timeStamp,d=c;if(d&&d.key===t.key&&u-d.time<i&&Math.abs(n.clientX-d.x)<a){c=null,s([t]);return}c={key:t.key,time:u,x:n.clientX},o(e.gridActions.startColumnResize(t.key,n.clientX,r[t.key]??t.width,t.minWidth??60,t.maxWidth))},getInitialColumnState:()=>s}};exports.createColumnCommands=o;
1
+ Object.defineProperty(exports,Symbol.toStringTag,{value:`Module`});const e=require("../logic/sorting.cjs"),t=require("../model/gridActions.cjs"),n=require("../logic/geometry.cjs"),r=require("../logic/columnReset.cjs");var i=300,a=4,o=()=>{let o=null,s=null,c=null,l=()=>{if(o===null)throw Error(`[SpreadsheetGrid] columnCommands は update 前に呼べません。`);return o},u=e=>{e(t.gridActions.stopEdit()),e(t.gridActions.clearSelection()),e(t.gridActions.activateCell(null))},d=(e,n)=>{n(e.length===0?t.gridActions.clearSort():t.gridActions.setSort(e))},f=(e,t)=>{let{closeColumnMenu:n,onColumnsChange:r,columns:i,columnWidths:a,dispatch:o}=l();if(n(),!r)return;let s=i.find(t=>t.key===e);s&&(s.pinned??void 0)!==t&&(r(i.map(n=>{let r=a[n.key]??n.width;return n.key===e?{...n,width:r,pinned:t}:r===n.width?n:{...n,width:r}})),u(o))},p=e=>{let{closeColumnMenu:t,visibleColumns:n,runAutosize:r}=l();t();let i=n.find(t=>t.key===e);i&&r([i])},m=()=>{let{closeColumnMenu:e,visibleColumns:t,runAutosize:n}=l();e(),n(t)},h=()=>{let{closeColumnMenu:e,openToolPanel:t}=l();e(),t(`columns`)},g=()=>{let{closeColumnMenu:e,openToolPanel:t}=l();e(),t(`sort`)},_=()=>{let{closeColumnMenu:e,openToolPanel:t}=l();e(),t(`filter`)},v=e=>{let{closeColumnMenu:t,openColumnFilterPopover:n}=l();t(),n(e)},y=e=>{l().dispatch(t.gridActions.clearColumnFilter(e))},b=()=>{let{dispatch:e,globalFilterText:n}=l();e(t.gridActions.setAllFilters({globalText:n,columnFilters:{}}))},x=()=>{l().dispatch(t.gridActions.setGlobalFilter(``))},S=(e,t)=>{let{onColumnsChange:n,columns:r,columnWidths:i,dispatch:a}=l();if(!n)return;let o=r.find(t=>t.key===e);o&&o.visible!==!1!==t&&(!t&&r.filter(e=>e.visible!==!1).length<=1||(n(r.map(n=>{let r=i[n.key]??n.width;return n.key===e?{...n,width:r,visible:t}:r===n.width?n:{...n,width:r}})),u(a)))},C=()=>{let{onColumnsChange:e,columns:t,columnWidths:n,dispatch:r}=l();e&&t.some(e=>e.visible===!1)&&(e(t.map(e=>{let t=n[e.key]??e.width,r=t!==e.width,i=e.visible===!1;return!r&&!i?e:i?{...e,width:t,visible:!0}:{...e,width:t}})),u(r))},w=()=>{let{onColumnsChange:e,columns:t,orderedColumns:n,columnWidths:r,dispatch:i}=l();if(!e)return;let a=n[0]?.key;a!==void 0&&t.some(e=>e.visible!==!1&&e.key!==a)&&(e(t.map(e=>{let t=r[e.key]??e.width,n=t!==e.width,i=e.visible!==!1&&e.key!==a;return!n&&!i?e:i?{...e,width:t,visible:!1}:{...e,width:t}})),u(i))},T=(e,t)=>{let{onColumnsChange:r,columns:i,columnWidths:a,dispatch:o}=l();if(!r||e.length!==i.length)return;let s=new Map(i.map(e=>[e.key,e]));if(!e.every(e=>s.has(e)))return;let c=n.reorderColumnsByPane(e.map(e=>{let n=s.get(e),r=a[n.key]??n.width,i=t?.has(e)?t.get(e):n.pinned,o=r!==n.width,c=(n.pinned??void 0)!==(i??void 0);return o||c?{...n,width:r,pinned:i}:n}));c.length===i.length&&c.every((e,t)=>{let n=i[t];return!!n&&n.key===e.key&&n.width===e.width&&(n.pinned??void 0)===(e.pinned??void 0)})||(r(c),u(o))},E=e=>{T(e)},D=()=>{let{onColumnsChange:e,columns:t,columnWidths:n,dispatch:i}=l();if(!e||!s)return;let a=r.buildResetColumns(t,s,n);a!==null&&(e(a),u(i))};return{update:e=>{o=e,s===null&&(s=new Map(e.columns.map(e=>[e.key,{width:e.width,pinned:e.pinned,visible:e.visible}])))},handleColumnMenuPinnedChange:f,handleColumnMenuAutosizeColumn:p,handleColumnMenuAutosizeAllColumns:m,handleColumnMenuOpenChooser:h,handleColumnMenuOpenSortManager:g,handleColumnMenuOpenFilter:v,handleColumnMenuOpenFilterManager:_,handleColumnMenuResetColumns:()=>{l().closeColumnMenu(),D()},handleColumnMenuSortChange:(t,n)=>{let{closeColumnMenu:r,enableSorting:i,sort:a,dispatch:o}=l();r(),i&&d(e.nextSortEntries(a,t,n,!1),o)},handleFilterManagerClearFilter:y,handleFilterManagerClearAll:b,handleFilterManagerClearGlobal:x,handleColumnChooserToggleVisibility:S,handleColumnChooserShowAll:C,handleColumnChooserHideAll:w,handleColumnChooserReorder:E,handleColumnChooserReset:D,applyColumnOrderAndPin:T,handleSortManagerAddLevel:(n,r)=>{let{enableSorting:i,sort:a,dispatch:o}=l();i&&o(t.gridActions.setSort(e.addSortEntry(a,n,r)))},handleSortManagerChangeDirection:(n,r)=>{let{enableSorting:i,sort:a,dispatch:o}=l();i&&o(t.gridActions.setSort(e.setSortEntryDirection(a,n,r)))},handleSortManagerChangeColumn:(n,r)=>{let{enableSorting:i,sort:a,dispatch:o}=l();i&&o(t.gridActions.setSort(e.setSortEntryColumn(a,n,r)))},handleSortManagerRemoveLevel:t=>{let{enableSorting:n,sort:r,dispatch:i}=l();n&&d(e.removeSortEntryAt(r,t),i)},handleSortManagerClearAll:()=>{let{enableSorting:e,dispatch:n}=l();e&&n(t.gridActions.clearSort())},handleSortManagerMove:(n,r)=>{let{enableSorting:i,sort:a,dispatch:o}=l();i&&o(t.gridActions.setSort(e.moveSortEntry(a,n,r)))},handleColumnResizePointerDown:(e,n)=>{n.preventDefault(),n.stopPropagation();let{columnWidths:r,dispatch:o,runAutosize:s}=l(),u=n.timeStamp,d=c;if(d&&d.key===e.key&&u-d.time<i&&Math.abs(n.clientX-d.x)<a){c=null,s([e]);return}c={key:e.key,time:u,x:n.clientX},o(t.gridActions.startColumnResize(e.key,n.clientX,r[e.key]??e.width,e.minWidth??60,e.maxWidth))},getInitialColumnState:()=>s}};exports.createColumnCommands=o;
@@ -1,16 +1,16 @@
1
- import { gridActions as e } from "../model/gridActions.js";
2
- import { reorderColumnsByPane as t } from "../logic/geometry.js";
3
- import { addSortEntry as n, moveSortEntry as r, nextSortEntries as i, removeSortEntryAt as a, setSortEntryColumn as o, setSortEntryDirection as s } from "../logic/sorting.js";
1
+ import { addSortEntry as e, moveSortEntry as t, nextSortEntries as n, removeSortEntryAt as r, setSortEntryColumn as i, setSortEntryDirection as a } from "../logic/sorting.js";
2
+ import { gridActions as o } from "../model/gridActions.js";
3
+ import { reorderColumnsByPane as s } from "../logic/geometry.js";
4
4
  import { buildResetColumns as c } from "../logic/columnReset.js";
5
5
  //#region src/engine/columnCommands.ts
6
6
  var l = 300, u = 4, d = () => {
7
7
  let d = null, f = null, p = null, m = () => {
8
8
  if (d === null) throw Error("[SpreadsheetGrid] columnCommands は update 前に呼べません。");
9
9
  return d;
10
- }, h = (t) => {
11
- t(e.stopEdit()), t(e.clearSelection()), t(e.activateCell(null));
12
- }, g = (t, n) => {
13
- n(t.length === 0 ? e.clearSort() : e.setSort(t));
10
+ }, h = (e) => {
11
+ e(o.stopEdit()), e(o.clearSelection()), e(o.activateCell(null));
12
+ }, g = (e, t) => {
13
+ t(e.length === 0 ? o.clearSort() : o.setSort(e));
14
14
  }, _ = (e, t) => {
15
15
  let { closeColumnMenu: n, onColumnsChange: r, columns: i, columnWidths: a, dispatch: o } = m();
16
16
  if (n(), !r) return;
@@ -46,16 +46,16 @@ var l = 300, u = 4, d = () => {
46
46
  }, C = (e) => {
47
47
  let { closeColumnMenu: t, openColumnFilterPopover: n } = m();
48
48
  t(), n(e);
49
- }, w = (t) => {
50
- m().dispatch(e.clearColumnFilter(t));
49
+ }, w = (e) => {
50
+ m().dispatch(o.clearColumnFilter(e));
51
51
  }, T = () => {
52
- let { dispatch: t, globalFilterText: n } = m();
53
- t(e.setAllFilters({
54
- globalText: n,
52
+ let { dispatch: e, globalFilterText: t } = m();
53
+ e(o.setAllFilters({
54
+ globalText: t,
55
55
  columnFilters: {}
56
56
  }));
57
57
  }, E = () => {
58
- m().dispatch(e.setGlobalFilter(""));
58
+ m().dispatch(o.setGlobalFilter(""));
59
59
  }, D = (e, t) => {
60
60
  let { onColumnsChange: n, columns: r, columnWidths: i, dispatch: a } = m();
61
61
  if (!n) return;
@@ -99,23 +99,23 @@ var l = 300, u = 4, d = () => {
99
99
  width: t
100
100
  };
101
101
  })), h(i));
102
- }, A = (e, n) => {
103
- let { onColumnsChange: r, columns: i, columnWidths: a, dispatch: o } = m();
104
- if (!r || e.length !== i.length) return;
105
- let s = new Map(i.map((e) => [e.key, e]));
106
- if (!e.every((e) => s.has(e))) return;
107
- let c = t(e.map((e) => {
108
- let t = s.get(e), r = a[t.key] ?? t.width, i = n?.has(e) ? n.get(e) : t.pinned, o = r !== t.width, c = (t.pinned ?? void 0) !== (i ?? void 0);
109
- return o || c ? {
110
- ...t,
102
+ }, A = (e, t) => {
103
+ let { onColumnsChange: n, columns: r, columnWidths: i, dispatch: a } = m();
104
+ if (!n || e.length !== r.length) return;
105
+ let o = new Map(r.map((e) => [e.key, e]));
106
+ if (!e.every((e) => o.has(e))) return;
107
+ let c = s(e.map((e) => {
108
+ let n = o.get(e), r = i[n.key] ?? n.width, a = t?.has(e) ? t.get(e) : n.pinned, s = r !== n.width, c = (n.pinned ?? void 0) !== (a ?? void 0);
109
+ return s || c ? {
110
+ ...n,
111
111
  width: r,
112
- pinned: i
113
- } : t;
112
+ pinned: a
113
+ } : n;
114
114
  }));
115
- c.length === i.length && c.every((e, t) => {
116
- let n = i[t];
115
+ c.length === r.length && c.every((e, t) => {
116
+ let n = r[t];
117
117
  return !!n && n.key === e.key && n.width === e.width && (n.pinned ?? void 0) === (e.pinned ?? void 0);
118
- }) || (r(c), h(o));
118
+ }) || (n(c), h(a));
119
119
  }, j = (e) => {
120
120
  A(e);
121
121
  }, M = () => {
@@ -143,8 +143,8 @@ var l = 300, u = 4, d = () => {
143
143
  m().closeColumnMenu(), M();
144
144
  },
145
145
  handleColumnMenuSortChange: (e, t) => {
146
- let { closeColumnMenu: n, enableSorting: r, sort: a, dispatch: o } = m();
147
- n(), r && g(i(a, e, t, !1), o);
146
+ let { closeColumnMenu: r, enableSorting: i, sort: a, dispatch: o } = m();
147
+ r(), i && g(n(a, e, t, !1), o);
148
148
  },
149
149
  handleFilterManagerClearFilter: w,
150
150
  handleFilterManagerClearAll: T,
@@ -155,42 +155,42 @@ var l = 300, u = 4, d = () => {
155
155
  handleColumnChooserReorder: j,
156
156
  handleColumnChooserReset: M,
157
157
  applyColumnOrderAndPin: A,
158
- handleSortManagerAddLevel: (t, r) => {
159
- let { enableSorting: i, sort: a, dispatch: o } = m();
160
- i && o(e.setSort(n(a, t, r)));
161
- },
162
- handleSortManagerChangeDirection: (t, n) => {
158
+ handleSortManagerAddLevel: (t, n) => {
163
159
  let { enableSorting: r, sort: i, dispatch: a } = m();
164
- r && a(e.setSort(s(i, t, n)));
160
+ r && a(o.setSort(e(i, t, n)));
165
161
  },
166
- handleSortManagerChangeColumn: (t, n) => {
167
- let { enableSorting: r, sort: i, dispatch: a } = m();
168
- r && a(e.setSort(o(i, t, n)));
162
+ handleSortManagerChangeDirection: (e, t) => {
163
+ let { enableSorting: n, sort: r, dispatch: i } = m();
164
+ n && i(o.setSort(a(r, e, t)));
165
+ },
166
+ handleSortManagerChangeColumn: (e, t) => {
167
+ let { enableSorting: n, sort: r, dispatch: a } = m();
168
+ n && a(o.setSort(i(r, e, t)));
169
169
  },
170
170
  handleSortManagerRemoveLevel: (e) => {
171
- let { enableSorting: t, sort: n, dispatch: r } = m();
172
- t && g(a(n, e), r);
171
+ let { enableSorting: t, sort: n, dispatch: i } = m();
172
+ t && g(r(n, e), i);
173
173
  },
174
174
  handleSortManagerClearAll: () => {
175
- let { enableSorting: t, dispatch: n } = m();
176
- t && n(e.clearSort());
175
+ let { enableSorting: e, dispatch: t } = m();
176
+ e && t(o.clearSort());
177
177
  },
178
- handleSortManagerMove: (t, n) => {
179
- let { enableSorting: i, sort: a, dispatch: o } = m();
180
- i && o(e.setSort(r(a, t, n)));
178
+ handleSortManagerMove: (e, n) => {
179
+ let { enableSorting: r, sort: i, dispatch: a } = m();
180
+ r && a(o.setSort(t(i, e, n)));
181
181
  },
182
- handleColumnResizePointerDown: (t, n) => {
183
- n.preventDefault(), n.stopPropagation();
184
- let { columnWidths: r, dispatch: i, runAutosize: a } = m(), o = n.timeStamp, s = p;
185
- if (s && s.key === t.key && o - s.time < l && Math.abs(n.clientX - s.x) < u) {
186
- p = null, a([t]);
182
+ handleColumnResizePointerDown: (e, t) => {
183
+ t.preventDefault(), t.stopPropagation();
184
+ let { columnWidths: n, dispatch: r, runAutosize: i } = m(), a = t.timeStamp, s = p;
185
+ if (s && s.key === e.key && a - s.time < l && Math.abs(t.clientX - s.x) < u) {
186
+ p = null, i([e]);
187
187
  return;
188
188
  }
189
189
  p = {
190
- key: t.key,
191
- time: o,
192
- x: n.clientX
193
- }, i(e.startColumnResize(t.key, n.clientX, r[t.key] ?? t.width, t.minWidth ?? 60, t.maxWidth));
190
+ key: e.key,
191
+ time: a,
192
+ x: t.clientX
193
+ }, r(o.startColumnResize(e.key, t.clientX, n[e.key] ?? e.width, e.minWidth ?? 60, e.maxWidth));
194
194
  },
195
195
  getInitialColumnState: () => f
196
196
  };
@@ -1 +1 @@
1
- Object.defineProperty(exports,Symbol.toStringTag,{value:`Module`});const e=require("../model/gridActions.cjs"),t=require("../logic/filtering.cjs"),n=require("../logic/numberFilterCondition.cjs"),r=require("../logic/textFilterCondition.cjs"),i=require("../logic/dateFilterCondition.cjs"),a=require("./memo.cjs"),o=require("../logic/setFilterSelection.cjs"),s=require("../logic/dateFilterTree.cjs");var c=(e,t)=>{let n=new Set(e);return n.add(t),n},l=(e,t)=>{let n=new Set(e);return n.delete(t),n},u=(e,t)=>{let n=new Set(e);for(let e of t)n.add(e);return n},d=(e,t)=>{let n=new Set(e);for(let e of t)n.delete(e);return n},f=()=>{let e=a.createMemo((e,t)=>e?s.normalizeDateSetOptions(t):t),n=a.createMemo((e,t,n)=>e?new Set(t.map(e=>e.value)):n),r=a.createMemo(e=>{let n=t.isSetColumnFilterValue(e)?e:t.isNumberSetColumnFilterValue(e)||t.isTextSetColumnFilterValue(e)||t.isDateSetColumnFilterValue(e)?e.set:null;return n?{mode:n.mode===`exclude`?`exclude`:`include`,values:new Set(n.values)}:null});return t=>{let{openedFilterColumn:i,openedFilterType:a,openedFilterSelectOptions:o,openedFilterAllValues:s,columnFilters:c}=t,l=a===`dateSet`,u=e(l,o),d=n(l,u,s),f=i?c[i.key]:void 0;return{isDateSetFilterColumn:l,openedPopoverSelectOptions:u,openedPopoverAllValues:d,openedSetFilterValue:f,openedSetSelection:r(f),openedColumnCanInvert:!(i?.filterOptions&&i.filterOptions.length>0),isComboFilterColumn:a===`numberSet`||a===`textSet`||a===`dateSet`}}},p=()=>{let a=null,s=()=>{if(a===null)throw Error(`[SpreadsheetGrid] filterPopoverCommands は update 前に呼べません。`);return a},f=(e,n)=>{let{openedFilterColumn:r,openedFilterType:i,columnFilters:a}=s(),o=r?.key===e?i:void 0,c=a[e];if(o===`numberSet`){let e=t.isNumberSetColumnFilterValue(c)?c.condition:null;return!e&&!n?null:{kind:`numberSet`,condition:e,set:n}}if(o===`textSet`){let e=t.isTextSetColumnFilterValue(c)?c.condition:null;return!e&&!n?null:{kind:`textSet`,condition:e,set:n}}if(o===`dateSet`){let e=t.isDateSetColumnFilterValue(c)?c.condition:null;return!e&&!n?null:{kind:`dateSet`,condition:e,set:n}}return null},p=(t,n,r)=>{let{openedFilterColumn:i,derived:a,dispatch:o}=s(),c=i?.key===t&&a.isComboFilterColumn,l=n.mode===`include`?n.values.size:r-n.values.size;if(l>=r){if(c){let n=f(t,null);if(n){o(e.gridActions.setColumnFilter(t,n));return}}o(e.gridActions.clearColumnFilter(t));return}let u=l<=0?{mode:`include`,values:[]}:{mode:n.mode,values:Array.from(n.values)};if(c){let n=f(t,u);if(n){o(e.gridActions.setColumnFilter(t,n));return}}let d={kind:`set`,...u};o(e.gridActions.setColumnFilter(t,d))},m=e=>{let{filterPopoverState:t,derived:n}=s();if(!t)return;let{openedPopoverSelectOptions:r,openedSetSelection:i,openedColumnCanInvert:a,openedPopoverAllValues:u}=n,d=r.length,f;f=o.isSetValueSelected(i,e)?i===null?a?{mode:`exclude`,values:new Set([e])}:{mode:`include`,values:l(u,e)}:i.mode===`include`?{mode:`include`,values:l(i.values,e)}:{mode:`exclude`,values:c(i.values,e)}:i.mode===`include`?{mode:`include`,values:c(i.values,e)}:{mode:`exclude`,values:l(i.values,e)},p(t.columnKey,f,d)},h=(e,t)=>{let{filterPopoverState:n,derived:r}=s();if(!n)return;let i=n.columnKey,{openedPopoverSelectOptions:a,openedSetSelection:o,openedColumnCanInvert:c,openedPopoverAllValues:l}=r,f=a.length;if(e===`all`){p(i,t?{mode:`exclude`,values:new Set}:{mode:`include`,values:new Set},f);return}let m;if(t){if(o===null){p(i,{mode:`exclude`,values:new Set},f);return}m=o.mode===`include`?{mode:`include`,values:u(o.values,e)}:{mode:`exclude`,values:d(o.values,e)}}else m=o===null?c?{mode:`exclude`,values:new Set(e)}:{mode:`include`,values:d(l,e)}:o.mode===`include`?{mode:`include`,values:d(o.values,e)}:{mode:`exclude`,values:u(o.values,e)};p(i,m,f)},g=e=>{let{filterPopoverState:t,derived:n}=s();t&&p(t.columnKey,{mode:`include`,values:new Set(e)},n.openedPopoverSelectOptions.length)},_=()=>{let{filterPopoverState:t,openedFilterType:a,dispatch:o,updateNumberDraft:c,updateTextDraft:l,updateDateDraft:u}=s();t&&(o(e.gridActions.clearColumnFilter(t.columnKey)),a===`numberSet`&&c(n.DEFAULT_NUMBER_FILTER_DRAFT),a===`textSet`&&l(r.DEFAULT_TEXT_FILTER_DRAFT),a===`dateSet`&&u(i.DEFAULT_DATE_FILTER_DRAFT))},v=e=>{let n=s().columnFilters[e];return t.isNumberSetColumnFilterValue(n)||t.isTextSetColumnFilterValue(n)||t.isDateSetColumnFilterValue(n)?n.set:t.isSetColumnFilterValue(n)?{mode:n.mode,values:n.values}:null},y=(t,n)=>{let{filterPopoverState:r,columnFilters:i,dispatch:a}=s();if(!r)return;let o=r.columnKey,c=v(o);if(!t&&!c){i[o]&&a(e.gridActions.clearColumnFilter(o));return}a(e.gridActions.setColumnFilter(o,n(c)))},b=e=>{let{updateNumberDraft:t,openedFilterType:r}=s();if(t(e),r!==`numberSet`)return;let i=n.buildParsedNumberFilterFromDraft(e);y(i!==null,e=>({kind:`numberSet`,condition:i,set:e}))},x=e=>{let{updateTextDraft:t,openedFilterType:n}=s();if(t(e),n!==`textSet`)return;let i=r.buildParsedTextFilterFromDraft(e);y(i!==null,e=>({kind:`textSet`,condition:i,set:e}))},S=e=>{let{updateDateDraft:t,openedFilterType:n}=s();if(t(e),n!==`dateSet`)return;let r=i.buildParsedDateFilterFromDraft(e);y(r!==null,e=>({kind:`dateSet`,condition:r,set:e}))};return{update:e=>{a=e},handleSetFilterValueToggle:m,handleSetFilterSelectAllChange:h,handleSetFilterReplaceSelection:g,clearSetFilterPopoverValue:_,handleNumberConditionDraftChange:b,handleTextConditionDraftChange:x,handleDateConditionDraftChange:S,handleComboConditionClear:()=>{let{openedFilterType:e}=s();if(e===`textSet`){x(r.DEFAULT_TEXT_FILTER_DRAFT);return}if(e===`dateSet`){S(i.DEFAULT_DATE_FILTER_DRAFT);return}b(n.DEFAULT_NUMBER_FILTER_DRAFT)},handleComboSelectionClear:()=>{let{filterPopoverState:t,dispatch:n}=s();if(!t)return;let r=t.columnKey,i=f(r,null);if(i){n(e.gridActions.setColumnFilter(r,i));return}n(e.gridActions.clearColumnFilter(r))},applyFilterPopoverValue:()=>{let{filterPopoverState:t,openedFilterType:r,dispatch:i,closeColumnFilterPopover:a}=s();if(!t)return;let o=r??`text`;if(o===`set`||o===`numberSet`||o===`textSet`||o===`dateSet`){a();return}if(o===`number`){let r=t.numberDraft?n.buildNumberColumnFilterValueFromDraft(t.numberDraft):null;if(!r){i(e.gridActions.clearColumnFilter(t.columnKey)),a();return}i(e.gridActions.setColumnFilter(t.columnKey,r)),a();return}let c=o===`select`?t.draftValue:t.draftValue.trim();if(!c){i(e.gridActions.clearColumnFilter(t.columnKey)),a();return}let l=o===`select`?{kind:`select`,value:c}:o===`date`?{kind:`date`,value:c}:o===`custom`?{kind:`custom`,value:c}:{kind:`text`,value:c};i(e.gridActions.setColumnFilter(t.columnKey,l)),a()},clearFilterPopoverValue:()=>{let{filterPopoverState:t,dispatch:n,closeColumnFilterPopover:r}=s();t&&(n(e.gridActions.clearColumnFilter(t.columnKey)),r())}}};exports.createFilterPopoverCommands=p,exports.createFilterPopoverDerivedResolver=f;
1
+ Object.defineProperty(exports,Symbol.toStringTag,{value:`Module`});const e=require("../model/gridActions.cjs"),t=require("../logic/filtering.cjs"),n=require("../logic/numberFilterCondition.cjs"),r=require("../logic/textFilterCondition.cjs"),i=require("../logic/dateFilterCondition.cjs"),a=require("./memo.cjs"),o=require("../logic/setFilterSelection.cjs"),s=require("../logic/dateFilterTree.cjs");var c=(e,t)=>{let n=new Set(e);return n.add(t),n},l=(e,t)=>{let n=new Set(e);return n.delete(t),n},u=(e,t)=>{let n=new Set(e);for(let e of t)n.add(e);return n},d=(e,t)=>{let n=new Set(e);for(let e of t)n.delete(e);return n},f=()=>{let e=a.createMemo((e,t)=>e?s.normalizeDateSetOptions(t):t),n=a.createMemo((e,t,n)=>e?new Set(t.map(e=>e.value)):n),r=a.createMemo(e=>{let n=t.isSetColumnFilterValue(e)?e:t.isNumberSetColumnFilterValue(e)||t.isTextSetColumnFilterValue(e)||t.isDateSetColumnFilterValue(e)?e.set:null;return n?{mode:n.mode===`exclude`?`exclude`:`include`,values:new Set(n.values)}:null});return t=>{let{openedFilterColumn:i,openedFilterType:a,openedFilterSelectOptions:o,openedFilterAllValues:s,columnFilters:c}=t,l=a===`dateSet`,u=e(l,o),d=n(l,u,s),f=i?c[i.key]:void 0;return{isDateSetFilterColumn:l,openedPopoverSelectOptions:u,openedPopoverAllValues:d,openedSetFilterValue:f,openedSetSelection:r(f),openedColumnCanInvert:!(i?.filterOptions&&i.filterOptions.length>0),isComboFilterColumn:a===`numberSet`||a===`textSet`||a===`dateSet`}}},p=()=>{let a=null,s=()=>{if(a===null)throw Error(`[SpreadsheetGrid] filterPopoverCommands は update 前に呼べません。`);return a},f=(e,n)=>{let{openedFilterColumn:r,openedFilterType:i,columnFilters:a}=s(),o=r?.key===e?i:void 0,c=a[e];if(o===`numberSet`){let e=t.isNumberSetColumnFilterValue(c)?c.condition:null;return!e&&!n?null:{kind:`numberSet`,condition:e,set:n}}if(o===`textSet`){let e=t.isTextSetColumnFilterValue(c)?c.condition:null;return!e&&!n?null:{kind:`textSet`,condition:e,set:n}}if(o===`dateSet`){let e=t.isDateSetColumnFilterValue(c)?c.condition:null;return!e&&!n?null:{kind:`dateSet`,condition:e,set:n}}return null},p=(t,n,r)=>{let{openedFilterColumn:i,derived:a,dispatch:o}=s(),c=i?.key===t&&a.isComboFilterColumn,l=n.mode===`include`?n.values.size:r-n.values.size;if(l>=r){if(c){let n=f(t,null);if(n){o(e.gridActions.setColumnFilter(t,n));return}}o(e.gridActions.clearColumnFilter(t));return}let u=l<=0?{mode:`include`,values:[]}:{mode:n.mode,values:Array.from(n.values)};if(c){let n=f(t,u);if(n){o(e.gridActions.setColumnFilter(t,n));return}}let d={kind:`set`,...u};o(e.gridActions.setColumnFilter(t,d))},m=e=>{let{filterPopoverState:t,derived:n}=s();if(!t)return;let{openedPopoverSelectOptions:r,openedSetSelection:i,openedColumnCanInvert:a,openedPopoverAllValues:u}=n,d=r.length,f;f=o.isSetValueSelected(i,e)?i===null?a?{mode:`exclude`,values:new Set([e])}:{mode:`include`,values:l(u,e)}:i.mode===`include`?{mode:`include`,values:l(i.values,e)}:{mode:`exclude`,values:c(i.values,e)}:i.mode===`include`?{mode:`include`,values:c(i.values,e)}:{mode:`exclude`,values:l(i.values,e)},p(t.columnKey,f,d)},h=(e,t)=>{let{filterPopoverState:n,derived:r}=s();if(!n)return;let i=n.columnKey,{openedPopoverSelectOptions:a,openedSetSelection:o,openedColumnCanInvert:c,openedPopoverAllValues:l}=r,f=a.length;if(e===`all`){p(i,t?{mode:`exclude`,values:new Set}:{mode:`include`,values:new Set},f);return}let m;if(t){if(o===null){p(i,{mode:`exclude`,values:new Set},f);return}m=o.mode===`include`?{mode:`include`,values:u(o.values,e)}:{mode:`exclude`,values:d(o.values,e)}}else m=o===null?c?{mode:`exclude`,values:new Set(e)}:{mode:`include`,values:d(l,e)}:o.mode===`include`?{mode:`include`,values:d(o.values,e)}:{mode:`exclude`,values:u(o.values,e)};p(i,m,f)},g=e=>{let{filterPopoverState:t,derived:n}=s();t&&p(t.columnKey,{mode:`include`,values:new Set(e)},n.openedPopoverSelectOptions.length)},_=()=>{let{filterPopoverState:t,openedFilterType:a,dispatch:o,updateNumberDraft:c,updateTextDraft:l,updateDateDraft:u}=s();t&&(o(e.gridActions.clearColumnFilter(t.columnKey)),a===`numberSet`&&c(n.DEFAULT_NUMBER_FILTER_DRAFT),a===`textSet`&&l(r.DEFAULT_TEXT_FILTER_DRAFT),a===`dateSet`&&u(i.DEFAULT_DATE_FILTER_DRAFT))},v=e=>{let n=s().columnFilters[e];return t.isNumberSetColumnFilterValue(n)||t.isTextSetColumnFilterValue(n)||t.isDateSetColumnFilterValue(n)?n.set:t.isSetColumnFilterValue(n)?{mode:n.mode,values:n.values}:null},y=(t,n)=>{let{filterPopoverState:r,columnFilters:i,dispatch:a}=s();if(!r)return;let o=r.columnKey,c=v(o);if(!t&&!c){i[o]&&a(e.gridActions.clearColumnFilter(o));return}a(e.gridActions.setColumnFilter(o,n(c)))},b=(e,t)=>{let{updateNumberDraft:r,openedFilterType:i}=s();if(r(e),i!==`numberSet`||t?.commit===!1)return;let a=n.buildParsedNumberFilterFromDraft(e);y(a!==null,e=>({kind:`numberSet`,condition:a,set:e}))},x=(e,t)=>{let{updateTextDraft:n,openedFilterType:i}=s();if(n(e),i!==`textSet`||t?.commit===!1)return;let a=r.buildParsedTextFilterFromDraft(e);y(a!==null,e=>({kind:`textSet`,condition:a,set:e}))},S=e=>{let{updateDateDraft:t,openedFilterType:n}=s();if(t(e),n!==`dateSet`)return;let r=i.buildParsedDateFilterFromDraft(e);y(r!==null,e=>({kind:`dateSet`,condition:r,set:e}))};return{update:e=>{a=e},handleSetFilterValueToggle:m,handleSetFilterSelectAllChange:h,handleSetFilterReplaceSelection:g,clearSetFilterPopoverValue:_,handleNumberConditionDraftChange:b,handleTextConditionDraftChange:x,handleDateConditionDraftChange:S,handleComboConditionClear:()=>{let{openedFilterType:e}=s();if(e===`textSet`){x(r.DEFAULT_TEXT_FILTER_DRAFT);return}if(e===`dateSet`){S(i.DEFAULT_DATE_FILTER_DRAFT);return}b(n.DEFAULT_NUMBER_FILTER_DRAFT)},handleComboSelectionClear:()=>{let{filterPopoverState:t,dispatch:n}=s();if(!t)return;let r=t.columnKey,i=f(r,null);if(i){n(e.gridActions.setColumnFilter(r,i));return}n(e.gridActions.clearColumnFilter(r))},applyFilterPopoverValue:()=>{let{filterPopoverState:t,openedFilterType:r,dispatch:i,closeColumnFilterPopover:a}=s();if(!t)return;let o=r??`text`;if(o===`set`||o===`numberSet`||o===`textSet`||o===`dateSet`){a();return}if(o===`number`){let r=t.numberDraft?n.buildNumberColumnFilterValueFromDraft(t.numberDraft):null;if(!r){i(e.gridActions.clearColumnFilter(t.columnKey)),a();return}i(e.gridActions.setColumnFilter(t.columnKey,r)),a();return}let c=o===`select`?t.draftValue:t.draftValue.trim();if(!c){i(e.gridActions.clearColumnFilter(t.columnKey)),a();return}let l=o===`select`?{kind:`select`,value:c}:o===`date`?{kind:`date`,value:c}:o===`custom`?{kind:`custom`,value:c}:{kind:`text`,value:c};i(e.gridActions.setColumnFilter(t.columnKey,l)),a()},clearFilterPopoverValue:()=>{let{filterPopoverState:t,dispatch:n,closeColumnFilterPopover:r}=s();t&&(n(e.gridActions.clearColumnFilter(t.columnKey)),r())}}};exports.createFilterPopoverCommands=p,exports.createFilterPopoverDerivedResolver=f;
@@ -27,6 +27,9 @@ export type FilterPopoverStateLike = {
27
27
  draftValue: string;
28
28
  numberDraft: NumberFilterConditionDraft | null;
29
29
  };
30
+ export type ConditionDraftChangeOptions = {
31
+ commit?: boolean;
32
+ };
30
33
  export type FilterPopoverCommandsArgs<T> = {
31
34
  filterPopoverState: FilterPopoverStateLike | null;
32
35
  openedFilterColumn: GridColumn<T> | null;
@@ -45,8 +48,8 @@ export type FilterPopoverCommands<T> = {
45
48
  handleSetFilterSelectAllChange: (scope: 'all' | string[], nextChecked: boolean) => void;
46
49
  handleSetFilterReplaceSelection: (values: string[]) => void;
47
50
  clearSetFilterPopoverValue: () => void;
48
- handleNumberConditionDraftChange: (draft: NumberFilterConditionDraft) => void;
49
- handleTextConditionDraftChange: (draft: TextFilterConditionDraft) => void;
51
+ handleNumberConditionDraftChange: (draft: NumberFilterConditionDraft, options?: ConditionDraftChangeOptions) => void;
52
+ handleTextConditionDraftChange: (draft: TextFilterConditionDraft, options?: ConditionDraftChangeOptions) => void;
50
53
  handleDateConditionDraftChange: (draft: DateFilterConditionDraft) => void;
51
54
  handleComboConditionClear: () => void;
52
55
  handleComboSelectionClear: () => void;