@ishibashi0112/spreadsheet-grid-core 0.39.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 (305) hide show
  1. package/LICENSE +21 -0
  2. package/dist/controllers/autoHeightMeasurer.cjs +1 -0
  3. package/dist/controllers/autoHeightMeasurer.d.ts +30 -0
  4. package/dist/controllers/autoHeightMeasurer.js +74 -0
  5. package/dist/controllers/clipboardController.cjs +2 -0
  6. package/dist/controllers/clipboardController.d.ts +31 -0
  7. package/dist/controllers/clipboardController.js +88 -0
  8. package/dist/controllers/columnAutosizeRunner.cjs +1 -0
  9. package/dist/controllers/columnAutosizeRunner.d.ts +31 -0
  10. package/dist/controllers/columnAutosizeRunner.js +61 -0
  11. package/dist/controllers/columnHeaderDragController.cjs +1 -0
  12. package/dist/controllers/columnHeaderDragController.d.ts +44 -0
  13. package/dist/controllers/columnHeaderDragController.js +256 -0
  14. package/dist/controllers/columnMenuController.cjs +1 -0
  15. package/dist/controllers/columnMenuController.d.ts +49 -0
  16. package/dist/controllers/columnMenuController.js +110 -0
  17. package/dist/controllers/contextMenuController.cjs +1 -0
  18. package/dist/controllers/contextMenuController.d.ts +30 -0
  19. package/dist/controllers/contextMenuController.js +65 -0
  20. package/dist/controllers/debouncedValueStore.cjs +1 -0
  21. package/dist/controllers/debouncedValueStore.d.ts +11 -0
  22. package/dist/controllers/debouncedValueStore.js +22 -0
  23. package/dist/controllers/editController.cjs +1 -0
  24. package/dist/controllers/editController.d.ts +27 -0
  25. package/dist/controllers/editController.js +76 -0
  26. package/dist/controllers/filterPopoverController.cjs +1 -0
  27. package/dist/controllers/filterPopoverController.d.ts +53 -0
  28. package/dist/controllers/filterPopoverController.js +146 -0
  29. package/dist/controllers/globalFilteredOrder.cjs +1 -0
  30. package/dist/controllers/globalFilteredOrder.d.ts +38 -0
  31. package/dist/controllers/globalFilteredOrder.js +78 -0
  32. package/dist/controllers/historyController.cjs +1 -0
  33. package/dist/controllers/historyController.d.ts +28 -0
  34. package/dist/controllers/historyController.js +52 -0
  35. package/dist/controllers/keyboardController.cjs +1 -0
  36. package/dist/controllers/keyboardController.d.ts +36 -0
  37. package/dist/controllers/keyboardController.js +111 -0
  38. package/dist/controllers/panelHeaderDragController.cjs +1 -0
  39. package/dist/controllers/panelHeaderDragController.d.ts +21 -0
  40. package/dist/controllers/panelHeaderDragController.js +32 -0
  41. package/dist/controllers/pointerInteractionsController.cjs +1 -0
  42. package/dist/controllers/pointerInteractionsController.d.ts +74 -0
  43. package/dist/controllers/pointerInteractionsController.js +262 -0
  44. package/dist/controllers/popoverSupport.cjs +1 -0
  45. package/dist/controllers/popoverSupport.d.ts +18 -0
  46. package/dist/controllers/popoverSupport.js +25 -0
  47. package/dist/controllers/rowDragController.cjs +1 -0
  48. package/dist/controllers/rowDragController.d.ts +40 -0
  49. package/dist/controllers/rowDragController.js +192 -0
  50. package/dist/controllers/scrollSyncController.cjs +1 -0
  51. package/dist/controllers/scrollSyncController.d.ts +17 -0
  52. package/dist/controllers/scrollSyncController.js +51 -0
  53. package/dist/controllers/selectOptionsCollector.cjs +1 -0
  54. package/dist/controllers/selectOptionsCollector.d.ts +31 -0
  55. package/dist/controllers/selectOptionsCollector.js +88 -0
  56. package/dist/controllers/serverSideRowModel.cjs +1 -0
  57. package/dist/controllers/serverSideRowModel.d.ts +36 -0
  58. package/dist/controllers/serverSideRowModel.js +153 -0
  59. package/dist/controllers/systemColorSchemeStore.cjs +1 -0
  60. package/dist/controllers/systemColorSchemeStore.d.ts +5 -0
  61. package/dist/controllers/systemColorSchemeStore.js +18 -0
  62. package/dist/controllers/toolPanelController.cjs +1 -0
  63. package/dist/controllers/toolPanelController.d.ts +36 -0
  64. package/dist/controllers/toolPanelController.js +112 -0
  65. package/dist/controllers/tooltipController.cjs +1 -0
  66. package/dist/controllers/tooltipController.d.ts +6 -0
  67. package/dist/controllers/tooltipController.js +75 -0
  68. package/dist/controllers/viewportSyncController.cjs +1 -0
  69. package/dist/controllers/viewportSyncController.d.ts +30 -0
  70. package/dist/controllers/viewportSyncController.js +40 -0
  71. package/dist/engine/columnCommands.cjs +1 -0
  72. package/dist/engine/columnCommands.d.ts +56 -0
  73. package/dist/engine/columnCommands.js +199 -0
  74. package/dist/engine/columnLayout.cjs +1 -0
  75. package/dist/engine/columnLayout.d.ts +43 -0
  76. package/dist/engine/columnLayout.js +91 -0
  77. package/dist/engine/createGridEngine.cjs +1 -0
  78. package/dist/engine/createGridEngine.d.ts +46 -0
  79. package/dist/engine/createGridEngine.js +52 -0
  80. package/dist/engine/filterPopoverCommands.cjs +1 -0
  81. package/dist/engine/filterPopoverCommands.d.ts +56 -0
  82. package/dist/engine/filterPopoverCommands.js +303 -0
  83. package/dist/engine/gridApi.cjs +1 -0
  84. package/dist/engine/gridApi.d.ts +61 -0
  85. package/dist/engine/gridApi.js +389 -0
  86. package/dist/engine/memo.cjs +1 -0
  87. package/dist/engine/memo.d.ts +2 -0
  88. package/dist/engine/memo.js +18 -0
  89. package/dist/engine/notifiers.cjs +1 -0
  90. package/dist/engine/notifiers.d.ts +35 -0
  91. package/dist/engine/notifiers.js +34 -0
  92. package/dist/engine/rowPipeline.cjs +1 -0
  93. package/dist/engine/rowPipeline.d.ts +50 -0
  94. package/dist/engine/rowPipeline.js +84 -0
  95. package/dist/engine/rowSelectionCommands.cjs +1 -0
  96. package/dist/engine/rowSelectionCommands.d.ts +21 -0
  97. package/dist/engine/rowSelectionCommands.js +57 -0
  98. package/dist/engine/verticalLayout.cjs +1 -0
  99. package/dist/engine/verticalLayout.d.ts +52 -0
  100. package/dist/engine/verticalLayout.js +60 -0
  101. package/dist/index.cjs +1 -0
  102. package/dist/index.d.ts +8 -0
  103. package/dist/index.js +5 -0
  104. package/dist/logic/aggregation.cjs +1 -0
  105. package/dist/logic/aggregation.d.ts +13 -0
  106. package/dist/logic/aggregation.js +28 -0
  107. package/dist/logic/autoScrollGeometry.cjs +1 -0
  108. package/dist/logic/autoScrollGeometry.d.ts +27 -0
  109. package/dist/logic/autoScrollGeometry.js +19 -0
  110. package/dist/logic/autoSizeOnData.cjs +1 -0
  111. package/dist/logic/autoSizeOnData.d.ts +10 -0
  112. package/dist/logic/autoSizeOnData.js +19 -0
  113. package/dist/logic/cellOverflowTooltip.cjs +1 -0
  114. package/dist/logic/cellOverflowTooltip.d.ts +5 -0
  115. package/dist/logic/cellOverflowTooltip.js +4 -0
  116. package/dist/logic/checkboxEditor.cjs +1 -0
  117. package/dist/logic/checkboxEditor.d.ts +12 -0
  118. package/dist/logic/checkboxEditor.js +17 -0
  119. package/dist/logic/chunkedLoop.cjs +1 -0
  120. package/dist/logic/chunkedLoop.d.ts +8 -0
  121. package/dist/logic/chunkedLoop.js +18 -0
  122. package/dist/logic/clearCells.cjs +1 -0
  123. package/dist/logic/clearCells.d.ts +31 -0
  124. package/dist/logic/clearCells.js +91 -0
  125. package/dist/logic/columnAutosize.cjs +1 -0
  126. package/dist/logic/columnAutosize.d.ts +18 -0
  127. package/dist/logic/columnAutosize.js +150 -0
  128. package/dist/logic/columnFlex.cjs +1 -0
  129. package/dist/logic/columnFlex.d.ts +4 -0
  130. package/dist/logic/columnFlex.js +60 -0
  131. package/dist/logic/columnReset.cjs +1 -0
  132. package/dist/logic/columnReset.d.ts +7 -0
  133. package/dist/logic/columnReset.js +25 -0
  134. package/dist/logic/contextMenuTarget.cjs +1 -0
  135. package/dist/logic/contextMenuTarget.d.ts +4 -0
  136. package/dist/logic/contextMenuTarget.js +18 -0
  137. package/dist/logic/cx.cjs +1 -0
  138. package/dist/logic/cx.d.ts +1 -0
  139. package/dist/logic/cx.js +6 -0
  140. package/dist/logic/dateFilterCondition.cjs +1 -0
  141. package/dist/logic/dateFilterCondition.d.ts +26 -0
  142. package/dist/logic/dateFilterCondition.js +110 -0
  143. package/dist/logic/dateFilterPresets.cjs +1 -0
  144. package/dist/logic/dateFilterPresets.d.ts +13 -0
  145. package/dist/logic/dateFilterPresets.js +30 -0
  146. package/dist/logic/dateFilterTree.cjs +1 -0
  147. package/dist/logic/dateFilterTree.d.ts +17 -0
  148. package/dist/logic/dateFilterTree.js +75 -0
  149. package/dist/logic/datePickerCalendar.cjs +1 -0
  150. package/dist/logic/datePickerCalendar.d.ts +12 -0
  151. package/dist/logic/datePickerCalendar.js +41 -0
  152. package/dist/logic/detailRow.cjs +1 -0
  153. package/dist/logic/detailRow.d.ts +38 -0
  154. package/dist/logic/detailRow.js +78 -0
  155. package/dist/logic/domGuards.cjs +1 -0
  156. package/dist/logic/domGuards.d.ts +7 -0
  157. package/dist/logic/domGuards.js +4 -0
  158. package/dist/logic/editorValues.cjs +1 -0
  159. package/dist/logic/editorValues.d.ts +5 -0
  160. package/dist/logic/editorValues.js +32 -0
  161. package/dist/logic/exportCsv.cjs +3 -0
  162. package/dist/logic/exportCsv.d.ts +12 -0
  163. package/dist/logic/exportCsv.js +19 -0
  164. package/dist/logic/exportData.cjs +1 -0
  165. package/dist/logic/exportData.d.ts +9 -0
  166. package/dist/logic/exportData.js +24 -0
  167. package/dist/logic/exportScope.cjs +1 -0
  168. package/dist/logic/exportScope.d.ts +3 -0
  169. package/dist/logic/exportScope.js +4 -0
  170. package/dist/logic/filterPopoverLayout.cjs +1 -0
  171. package/dist/logic/filterPopoverLayout.d.ts +17 -0
  172. package/dist/logic/filterPopoverLayout.js +13 -0
  173. package/dist/logic/filterPopoverOutsideClick.cjs +1 -0
  174. package/dist/logic/filterPopoverOutsideClick.d.ts +2 -0
  175. package/dist/logic/filterPopoverOutsideClick.js +4 -0
  176. package/dist/logic/filterSummary.cjs +1 -0
  177. package/dist/logic/filterSummary.d.ts +3 -0
  178. package/dist/logic/filterSummary.js +22 -0
  179. package/dist/logic/filtering.cjs +1 -0
  180. package/dist/logic/filtering.d.ts +33 -0
  181. package/dist/logic/filtering.js +313 -0
  182. package/dist/logic/geometry.cjs +1 -0
  183. package/dist/logic/geometry.d.ts +72 -0
  184. package/dist/logic/geometry.js +161 -0
  185. package/dist/logic/gridState.cjs +1 -0
  186. package/dist/logic/gridState.d.ts +13 -0
  187. package/dist/logic/gridState.js +165 -0
  188. package/dist/logic/grouping.cjs +1 -0
  189. package/dist/logic/grouping.d.ts +34 -0
  190. package/dist/logic/grouping.js +93 -0
  191. package/dist/logic/history.cjs +1 -0
  192. package/dist/logic/history.d.ts +16 -0
  193. package/dist/logic/history.js +34 -0
  194. package/dist/logic/inferFilterType.cjs +1 -0
  195. package/dist/logic/inferFilterType.d.ts +19 -0
  196. package/dist/logic/inferFilterType.js +54 -0
  197. package/dist/logic/numberFilterCondition.cjs +1 -0
  198. package/dist/logic/numberFilterCondition.d.ts +21 -0
  199. package/dist/logic/numberFilterCondition.js +130 -0
  200. package/dist/logic/panelDragGeometry.cjs +1 -0
  201. package/dist/logic/panelDragGeometry.d.ts +13 -0
  202. package/dist/logic/panelDragGeometry.js +10 -0
  203. package/dist/logic/rowHeightStore.cjs +1 -0
  204. package/dist/logic/rowHeightStore.d.ts +13 -0
  205. package/dist/logic/rowHeightStore.js +41 -0
  206. package/dist/logic/rowReorder.cjs +1 -0
  207. package/dist/logic/rowReorder.d.ts +18 -0
  208. package/dist/logic/rowReorder.js +22 -0
  209. package/dist/logic/rowSelection.cjs +1 -0
  210. package/dist/logic/rowSelection.d.ts +16 -0
  211. package/dist/logic/rowSelection.js +49 -0
  212. package/dist/logic/scrollHint.cjs +1 -0
  213. package/dist/logic/scrollHint.d.ts +41 -0
  214. package/dist/logic/scrollHint.js +66 -0
  215. package/dist/logic/scrollTargets.cjs +1 -0
  216. package/dist/logic/scrollTargets.d.ts +22 -0
  217. package/dist/logic/scrollTargets.js +24 -0
  218. package/dist/logic/selectEditorState.cjs +1 -0
  219. package/dist/logic/selectEditorState.d.ts +28 -0
  220. package/dist/logic/selectEditorState.js +31 -0
  221. package/dist/logic/selectOptions.cjs +1 -0
  222. package/dist/logic/selectOptions.d.ts +9 -0
  223. package/dist/logic/selectOptions.js +23 -0
  224. package/dist/logic/serverSideBlocks.cjs +1 -0
  225. package/dist/logic/serverSideBlocks.d.ts +2 -0
  226. package/dist/logic/serverSideBlocks.js +14 -0
  227. package/dist/logic/serverSideCache.cjs +1 -0
  228. package/dist/logic/serverSideCache.d.ts +14 -0
  229. package/dist/logic/serverSideCache.js +42 -0
  230. package/dist/logic/serverSideEdits.cjs +1 -0
  231. package/dist/logic/serverSideEdits.d.ts +16 -0
  232. package/dist/logic/serverSideEdits.js +47 -0
  233. package/dist/logic/serverSideQuery.cjs +1 -0
  234. package/dist/logic/serverSideQuery.d.ts +7 -0
  235. package/dist/logic/serverSideQuery.js +21 -0
  236. package/dist/logic/setFilterSearch.cjs +1 -0
  237. package/dist/logic/setFilterSearch.d.ts +14 -0
  238. package/dist/logic/setFilterSearch.js +14 -0
  239. package/dist/logic/setFilterSelection.cjs +1 -0
  240. package/dist/logic/setFilterSelection.d.ts +5 -0
  241. package/dist/logic/setFilterSelection.js +4 -0
  242. package/dist/logic/slotDom.cjs +1 -0
  243. package/dist/logic/slotDom.d.ts +8 -0
  244. package/dist/logic/slotDom.js +22 -0
  245. package/dist/logic/slotProps.cjs +1 -0
  246. package/dist/logic/slotProps.d.ts +18 -0
  247. package/dist/logic/slotProps.js +63 -0
  248. package/dist/logic/sorting.cjs +1 -0
  249. package/dist/logic/sorting.d.ts +11 -0
  250. package/dist/logic/sorting.js +96 -0
  251. package/dist/logic/textFilterCondition.cjs +1 -0
  252. package/dist/logic/textFilterCondition.d.ts +18 -0
  253. package/dist/logic/textFilterCondition.js +55 -0
  254. package/dist/logic/theme.cjs +1 -0
  255. package/dist/logic/theme.d.ts +3 -0
  256. package/dist/logic/theme.js +4 -0
  257. package/dist/logic/tooltipGeometry.cjs +1 -0
  258. package/dist/logic/tooltipGeometry.d.ts +19 -0
  259. package/dist/logic/tooltipGeometry.js +16 -0
  260. package/dist/logic/validation.cjs +1 -0
  261. package/dist/logic/validation.d.ts +14 -0
  262. package/dist/logic/validation.js +47 -0
  263. package/dist/logic/valueFormatters.cjs +1 -0
  264. package/dist/logic/valueFormatters.d.ts +9 -0
  265. package/dist/logic/valueFormatters.js +17 -0
  266. package/dist/logic/valueStore.cjs +1 -0
  267. package/dist/logic/valueStore.d.ts +6 -0
  268. package/dist/logic/valueStore.js +18 -0
  269. package/dist/logic/verticalGeometry.cjs +1 -0
  270. package/dist/logic/verticalGeometry.d.ts +58 -0
  271. package/dist/logic/verticalGeometry.js +90 -0
  272. package/dist/model/gridActions.cjs +1 -0
  273. package/dist/model/gridActions.d.ts +125 -0
  274. package/dist/model/gridActions.js +114 -0
  275. package/dist/model/gridReducer.cjs +1 -0
  276. package/dist/model/gridReducer.d.ts +4 -0
  277. package/dist/model/gridReducer.js +247 -0
  278. package/dist/model/gridSelectors.cjs +1 -0
  279. package/dist/model/gridSelectors.d.ts +40 -0
  280. package/dist/model/gridSelectors.js +68 -0
  281. package/dist/model/gridStore.cjs +1 -0
  282. package/dist/model/gridStore.d.ts +24 -0
  283. package/dist/model/gridStore.js +38 -0
  284. package/dist/model/gridTypes.core.cjs +1 -0
  285. package/dist/model/gridTypes.core.d.ts +797 -0
  286. package/dist/model/gridTypes.core.js +0 -0
  287. package/dist/model/gridTypes.unbound.cjs +1 -0
  288. package/dist/model/gridTypes.unbound.d.ts +31 -0
  289. package/dist/model/gridTypes.unbound.js +0 -0
  290. package/dist/testing/index.cjs +1 -0
  291. package/dist/testing/index.d.ts +5 -0
  292. package/dist/testing/index.js +51 -0
  293. package/dist/utils/clipboard.cjs +7 -0
  294. package/dist/utils/clipboard.d.ts +29 -0
  295. package/dist/utils/clipboard.js +110 -0
  296. package/dist/utils/excelColumnName.cjs +1 -0
  297. package/dist/utils/excelColumnName.d.ts +1 -0
  298. package/dist/utils/excelColumnName.js +9 -0
  299. package/dist/utils/permissions.cjs +1 -0
  300. package/dist/utils/permissions.d.ts +4 -0
  301. package/dist/utils/permissions.js +7 -0
  302. package/dist/utils/scheduler.cjs +1 -0
  303. package/dist/utils/scheduler.d.ts +1 -0
  304. package/dist/utils/scheduler.js +13 -0
  305. package/package.json +58 -0
@@ -0,0 +1,150 @@
1
+ import { getCellValue as e } from "../utils/permissions.js";
2
+ //#region src/logic/columnAutosize.ts
3
+ var t = 21, n = 4, r = 41, i = 13, a = 600, o = 60, s = 16, c = null, l = () => c || (typeof document > "u" ? null : (c = document.createElement("canvas").getContext("2d"), c)), u = "system-ui, sans-serif", d = (e) => {
4
+ let t = u, n = 13, r = "400";
5
+ if (e && typeof window < "u") {
6
+ let i = window.getComputedStyle(e);
7
+ i.fontFamily && (t = i.fontFamily);
8
+ let a = Number.parseFloat(i.fontSize);
9
+ Number.isFinite(a) && a > 0 && (n = a), i.fontWeight && (r = i.fontWeight);
10
+ }
11
+ return {
12
+ cellFont: `${r} ${n}px ${t}`,
13
+ headerFont: `${a} ${i}px ${t}`
14
+ };
15
+ }, f = (e, t, n) => Math.min(Math.max(e, t), n), p = (e) => e >= 4352 && e <= 4447 || e >= 11904 && e <= 12350 || e >= 12353 && e <= 13311 || e >= 13312 && e <= 19903 || e >= 19968 && e <= 40959 || e >= 40960 && e <= 42191 || e >= 44032 && e <= 55203 || e >= 63744 && e <= 64255 || e >= 65072 && e <= 65103 || e >= 65280 && e <= 65376 || e >= 65504 && e <= 65510 || e >= 127744 && e <= 129791 || e >= 131072 && e <= 262141, m = (e) => {
16
+ let t = 0;
17
+ for (let n of e) {
18
+ let e = n.codePointAt(0) ?? 0;
19
+ t += p(e) ? 2 : 1;
20
+ }
21
+ return t;
22
+ }, h = (t, n) => {
23
+ let r = e(t, n);
24
+ return n.valueFormatter ? n.valueFormatter({
25
+ value: r,
26
+ row: t,
27
+ column: n
28
+ }) : String(r ?? "");
29
+ }, g = (e) => {
30
+ if (!e || typeof document > "u") return null;
31
+ let t = document.createElement("div");
32
+ return t.setAttribute("aria-hidden", "true"), t.style.cssText = "position:absolute;top:-99999px;left:-99999px;visibility:hidden;pointer-events:none;width:auto;height:auto;contain:layout style;", e.appendChild(t), t;
33
+ }, _ = (e) => {
34
+ let t = document.createElement("div");
35
+ return t.className = "ssg-body-cell", t.style.cssText = "display:inline-block;position:static;top:auto;left:auto;width:auto;height:auto;white-space:nowrap;overflow:visible;", t.textContent = e, t;
36
+ }, v = (e) => e.suppressAutoSize === !0 || e.autoHeight === !0;
37
+ function y(i) {
38
+ let a = i.map(() => []), c = i.map(() => []), u = i.map(() => Infinity), p = i.map(() => 0);
39
+ return {
40
+ collect: (t) => {
41
+ for (let n = 0; n < i.length; n += 1) {
42
+ if (v(i[n])) continue;
43
+ let r = i[n].estimateCellWidth;
44
+ if (r) {
45
+ let e = r(t, i[n]);
46
+ e > p[n] && (p[n] = e);
47
+ continue;
48
+ }
49
+ let o = String(e(t, i[n]) ?? "");
50
+ if (o === "") continue;
51
+ let l = a[n], d = c[n];
52
+ if (l.length === s && 2 * o.length <= u[n]) continue;
53
+ let f = m(o);
54
+ if (l.length < s) {
55
+ if (l.push(t), d.push(f), l.length === s) {
56
+ let e = d[0];
57
+ for (let t = 1; t < s; t += 1) d[t] < e && (e = d[t]);
58
+ u[n] = e;
59
+ }
60
+ continue;
61
+ }
62
+ if (f <= u[n]) continue;
63
+ let h = 0;
64
+ for (let e = 1; e < s; e += 1) d[e] < d[h] && (h = e);
65
+ l[h] = t, d[h] = f;
66
+ let g = d[0];
67
+ for (let e = 1; e < s; e += 1) d[e] < g && (g = d[e]);
68
+ u[n] = g;
69
+ }
70
+ },
71
+ finalize: ({ gridRoot: e, currentWidths: s }) => {
72
+ let c = l();
73
+ if (!c || i.length === 0) return {};
74
+ let { cellFont: u, headerFont: m } = d(e), y = {}, b = g(e);
75
+ try {
76
+ let e = null;
77
+ if (b) {
78
+ let t = [];
79
+ for (let e = 0; e < i.length; e += 1) {
80
+ if (v(i[e])) {
81
+ t.push([]);
82
+ continue;
83
+ }
84
+ if (i[e].estimateCellWidth) {
85
+ t.push([]);
86
+ continue;
87
+ }
88
+ let n = a[e], r = [];
89
+ for (let t = 0; t < n.length; t += 1) {
90
+ let a = h(n[t], i[e]);
91
+ if (a === "") continue;
92
+ let o = _(a);
93
+ b.appendChild(o), r.push(o);
94
+ }
95
+ t.push(r);
96
+ }
97
+ e = t.map((e) => {
98
+ let t = 0;
99
+ for (let n = 0; n < e.length; n += 1) {
100
+ let r = e[n].offsetWidth;
101
+ r > t && (t = r);
102
+ }
103
+ return t;
104
+ });
105
+ }
106
+ for (let l = 0; l < i.length; l += 1) {
107
+ let d = i[l];
108
+ if (v(d)) continue;
109
+ c.font = m;
110
+ let g = d.title || d.key, _ = c.measureText(g).width + n + r, b;
111
+ if (d.estimateCellWidth) b = p[l] > 0 ? p[l] + t : 0;
112
+ else if (e) b = e[l];
113
+ else {
114
+ c.font = u;
115
+ let e = 0, r = a[l];
116
+ for (let t = 0; t < r.length; t += 1) {
117
+ let n = h(r[t], d);
118
+ if (n === "") continue;
119
+ let i = c.measureText(n).width;
120
+ i > e && (e = i);
121
+ }
122
+ b = e > 0 ? e + n + t : 0;
123
+ }
124
+ let x = Math.ceil(f(Math.max(_, b), d.minWidth ?? o, d.maxWidth ?? Infinity));
125
+ s[d.key] !== x && (y[d.key] = x);
126
+ }
127
+ } finally {
128
+ b && b.parentNode && b.parentNode.removeChild(b);
129
+ }
130
+ return y;
131
+ }
132
+ };
133
+ }
134
+ function b() {
135
+ return l() !== null;
136
+ }
137
+ function x({ columns: e, getRow: t, viewRowCount: n, gridRoot: r, currentWidths: i }) {
138
+ if (e.length === 0 || l() === null) return {};
139
+ let a = y(e);
140
+ for (let e = 0; e < n; e += 1) {
141
+ let n = t(e);
142
+ n && a.collect(n);
143
+ }
144
+ return a.finalize({
145
+ gridRoot: r,
146
+ currentWidths: i
147
+ });
148
+ }
149
+ //#endregion
150
+ export { b as canMeasureAutosize, x as computeAutosizedColumnWidths, y as createColumnWidthAccumulator };
@@ -0,0 +1 @@
1
+ Object.defineProperty(exports,Symbol.toStringTag,{value:`Module`});const e=require("./geometry.cjs");var t=50,n=t=>t.flex!=null&&t.flex>0&&e.getColumnPane(t)===`center`,r=(e,t)=>{let n=new Map,r=e,i=t;for(;;){let e=r.reduce((e,t)=>e+t.flex,0);if(r.length===0||e<=0)break;let t=null;for(let a of r){let r=i*a.flex/e;if(r<a.min){n.set(a.key,a.min),i-=a.min,t=a.key;break}if(r>a.max){n.set(a.key,a.max),i-=a.max,t=a.key;break}}if(t!==null){r=r.filter(e=>e.key!==t);continue}let a=0;r.forEach((t,o)=>{if(o===r.length-1)n.set(t.key,i-a);else{let r=i*t.flex/e;n.set(t.key,r),a+=r}});break}return n},i=(t,n,i)=>{let a=[],o=0;for(let r of t){let t=n[r.key];if(t!=null){o+=t;continue}let i=r.flex;if(i!=null&&i>0&&e.getColumnPane(r)===`center`){a.push({key:r.key,flex:i,min:r.minWidth??50,max:r.maxWidth??1/0});continue}o+=r.width}if(a.length===0)return{};let s=i-o;return Object.fromEntries(r(a,s))};exports.DEFAULT_FLEX_MIN_WIDTH=t,exports.computeCenterFlexWidths=i,exports.isFlexingColumn=n;
@@ -0,0 +1,4 @@
1
+ import type { GridColumn } from '../model/gridTypes.unbound';
2
+ export declare const DEFAULT_FLEX_MIN_WIDTH = 50;
3
+ export declare const isFlexingColumn: <T>(column: GridColumn<T>) => boolean;
4
+ export declare const computeCenterFlexWidths: <T>(centerColumns: GridColumn<T>[], columnWidths: Record<string, number>, availableWidth: number) => Record<string, number>;
@@ -0,0 +1,60 @@
1
+ import { getColumnPane as e } from "./geometry.js";
2
+ //#region src/logic/columnFlex.ts
3
+ var t = 50, n = (t) => t.flex != null && t.flex > 0 && e(t) === "center", r = (e, t) => {
4
+ let n = /* @__PURE__ */ new Map(), r = e, i = t;
5
+ for (;;) {
6
+ let e = r.reduce((e, t) => e + t.flex, 0);
7
+ if (r.length === 0 || e <= 0) break;
8
+ let t = null;
9
+ for (let a of r) {
10
+ let r = i * a.flex / e;
11
+ if (r < a.min) {
12
+ n.set(a.key, a.min), i -= a.min, t = a.key;
13
+ break;
14
+ }
15
+ if (r > a.max) {
16
+ n.set(a.key, a.max), i -= a.max, t = a.key;
17
+ break;
18
+ }
19
+ }
20
+ if (t !== null) {
21
+ r = r.filter((e) => e.key !== t);
22
+ continue;
23
+ }
24
+ let a = 0;
25
+ r.forEach((t, o) => {
26
+ if (o === r.length - 1) n.set(t.key, i - a);
27
+ else {
28
+ let r = i * t.flex / e;
29
+ n.set(t.key, r), a += r;
30
+ }
31
+ });
32
+ break;
33
+ }
34
+ return n;
35
+ }, i = (t, n, i) => {
36
+ let a = [], o = 0;
37
+ for (let r of t) {
38
+ let t = n[r.key];
39
+ if (t != null) {
40
+ o += t;
41
+ continue;
42
+ }
43
+ let i = r.flex;
44
+ if (i != null && i > 0 && e(r) === "center") {
45
+ a.push({
46
+ key: r.key,
47
+ flex: i,
48
+ min: r.minWidth ?? 50,
49
+ max: r.maxWidth ?? Infinity
50
+ });
51
+ continue;
52
+ }
53
+ o += r.width;
54
+ }
55
+ if (a.length === 0) return {};
56
+ let s = i - o;
57
+ return Object.fromEntries(r(a, s));
58
+ };
59
+ //#endregion
60
+ export { t as DEFAULT_FLEX_MIN_WIDTH, i as computeCenterFlexWidths, n as isFlexingColumn };
@@ -0,0 +1 @@
1
+ Object.defineProperty(exports,Symbol.toStringTag,{value:`Module`});var e=(e,t,n)=>{let r=!1,i=e.map(e=>{let i=n[e.key]??e.width,a=t.get(e.key);if(!a)return i===e.width?e:{...e,width:i};let o=a.pinned??void 0,s=i!==a.width,c=(e.pinned??void 0)!==o,l=e.visible!==!1!=(a.visible!==!1);return(s||c||l)&&(r=!0),{...e,width:a.width,pinned:a.pinned,visible:a.visible}}),a=new Map(i.map(e=>[e.key,e])),o=[];for(let e of t.keys()){let t=a.get(e);t&&o.push(t)}let s=i.filter(e=>!t.has(e.key)),c=[...o,...s],l=c.some((t,n)=>e[n].key!==t.key);return!r&&!l?null:c};exports.buildResetColumns=e;
@@ -0,0 +1,7 @@
1
+ import type { GridColumn, GridColumnPinned } from '../model/gridTypes.unbound';
2
+ export type InitialColumnState = {
3
+ width: number;
4
+ pinned: GridColumnPinned | undefined;
5
+ visible: boolean | undefined;
6
+ };
7
+ export declare const buildResetColumns: <T>(columns: GridColumn<T>[], snapshot: Map<string, InitialColumnState>, resolvedWidths: Record<string, number>) => GridColumn<T>[] | null;
@@ -0,0 +1,25 @@
1
+ //#region src/logic/columnReset.ts
2
+ var e = (e, t, n) => {
3
+ let r = !1, i = e.map((e) => {
4
+ let i = n[e.key] ?? e.width, a = t.get(e.key);
5
+ if (!a) return i === e.width ? e : {
6
+ ...e,
7
+ width: i
8
+ };
9
+ let o = a.pinned ?? void 0, s = i !== a.width, c = (e.pinned ?? void 0) !== o, l = e.visible !== !1 != (a.visible !== !1);
10
+ return (s || c || l) && (r = !0), {
11
+ ...e,
12
+ width: a.width,
13
+ pinned: a.pinned,
14
+ visible: a.visible
15
+ };
16
+ }), a = new Map(i.map((e) => [e.key, e])), o = [];
17
+ for (let e of t.keys()) {
18
+ let t = a.get(e);
19
+ t && o.push(t);
20
+ }
21
+ let s = i.filter((e) => !t.has(e.key)), c = [...o, ...s], l = c.some((t, n) => e[n].key !== t.key);
22
+ return !r && !l ? null : c;
23
+ };
24
+ //#endregion
25
+ export { e as buildResetColumns };
@@ -0,0 +1 @@
1
+ Object.defineProperty(exports,Symbol.toStringTag,{value:`Module`});var e=(e,t)=>e.findIndex(e=>e.key===t),t=(e,t,n)=>{if(!e)return!1;if(e.type===`row`)return t>=e.startRow&&t<=e.endRow;if(e.type===`col`)return n>=e.startCol&&n<=e.endCol;let{start:r,end:i}=e.range,a=Math.min(r.row,i.row),o=Math.max(r.row,i.row),s=Math.min(r.col,i.col),c=Math.max(r.col,i.col);return t>=a&&t<=o&&n>=s&&n<=c},n=(e,t)=>{if(!e)return!1;if(e.type===`row`)return t>=e.startRow&&t<=e.endRow;if(e.type===`cell`){let{start:n,end:r}=e.range,i=Math.min(n.row,r.row),a=Math.max(n.row,r.row);return t>=i&&t<=a}return!1};exports.isContextMenuCellSelected=t,exports.isContextMenuRowSelected=n,exports.resolveContextMenuColIndex=e;
@@ -0,0 +1,4 @@
1
+ import type { GridColumn, GridSelection } from '../model/gridTypes.unbound';
2
+ export declare const resolveContextMenuColIndex: <T>(orderedColumns: GridColumn<T>[], columnKey: string) => number;
3
+ export declare const isContextMenuCellSelected: (selection: GridSelection, rowIndex: number, colIndex: number) => boolean;
4
+ export declare const isContextMenuRowSelected: (selection: GridSelection, rowIndex: number) => boolean;
@@ -0,0 +1,18 @@
1
+ //#region src/logic/contextMenuTarget.ts
2
+ var e = (e, t) => e.findIndex((e) => e.key === t), t = (e, t, n) => {
3
+ if (!e) return !1;
4
+ if (e.type === "row") return t >= e.startRow && t <= e.endRow;
5
+ if (e.type === "col") return n >= e.startCol && n <= e.endCol;
6
+ let { start: r, end: i } = e.range, a = Math.min(r.row, i.row), o = Math.max(r.row, i.row), s = Math.min(r.col, i.col), c = Math.max(r.col, i.col);
7
+ return t >= a && t <= o && n >= s && n <= c;
8
+ }, n = (e, t) => {
9
+ if (!e) return !1;
10
+ if (e.type === "row") return t >= e.startRow && t <= e.endRow;
11
+ if (e.type === "cell") {
12
+ let { start: n, end: r } = e.range, i = Math.min(n.row, r.row), a = Math.max(n.row, r.row);
13
+ return t >= i && t <= a;
14
+ }
15
+ return !1;
16
+ };
17
+ //#endregion
18
+ export { t as isContextMenuCellSelected, n as isContextMenuRowSelected, e as resolveContextMenuColIndex };
@@ -0,0 +1 @@
1
+ Object.defineProperty(exports,Symbol.toStringTag,{value:`Module`});function e(...e){return e.filter(Boolean).join(` `)}exports.cx=e;
@@ -0,0 +1 @@
1
+ export declare function cx(...classNames: Array<string | false | null | undefined>): string;
@@ -0,0 +1,6 @@
1
+ //#region src/logic/cx.ts
2
+ function e(...e) {
3
+ return e.filter(Boolean).join(" ");
4
+ }
5
+ //#endregion
6
+ export { e as cx };
@@ -0,0 +1 @@
1
+ Object.defineProperty(exports,Symbol.toStringTag,{value:`Module`});const e=require("./dateFilterPresets.cjs"),t=require("./filtering.cjs");var n={operator:`range`,value1:``,value2:``,preset:null},r=[{value:`range`,label:`範囲`},{value:`onOrAfter`,label:`以降`},{value:`onOrBefore`,label:`以前`},{value:`equals`,label:`に等しい`},{value:`notEquals`,label:`に等しくない`},{value:`blank`,label:`空白`},{value:`notBlank`,label:`空白でない`}],i=e.BUILTIN_DATE_FILTER_PRESET_OPTIONS,a=e=>e===`blank`||e===`notBlank`?0:e===`range`?2:1,o=e=>{let t=e.trim();return/^\d{4}-\d{2}-\d{2}$/.test(t)?t:null},s=e=>e===null||e instanceof Date?e===null?``:t.toDateKey(e)??``:e.trim()===``?``:t.toDateKey(e)??``,c=e=>{if(e.preset!==null)return{mode:`preset`,preset:e.preset};if(e.operator===`blank`||e.operator===`notBlank`)return{mode:e.operator};if(e.operator===`range`){let t=o(e.value1),n=o(e.value2);return t!==null&&n!==null?t<=n?{mode:`range`,from:t,to:n}:{mode:`range`,from:n,to:t}:t===null?n===null?null:{mode:`onOrBefore`,value:n}:{mode:`onOrAfter`,value:t}}let t=o(e.value1);return t===null?null:{mode:e.operator,value:t}},l=(t,n)=>{switch(t.mode){case`range`:return`${t.from} 〜 ${t.to}`;case`onOrAfter`:return`${t.value} 以降`;case`onOrBefore`:return`${t.value} 以前`;case`equals`:return`${t.value} に等しい`;case`notEquals`:return`${t.value} に等しくない`;case`blank`:return`(空白)`;case`notBlank`:return`(空白でない)`;case`preset`:return e.dateFilterPresetLabel(t.preset,n)}},u=e=>{if(!e)return n;switch(e.mode){case`preset`:return{...n,preset:e.preset};case`range`:return{operator:`range`,value1:e.from,value2:e.to,preset:null};case`blank`:case`notBlank`:return{operator:e.mode,value1:``,value2:``,preset:null};default:return{operator:e.mode,value1:e.value,value2:``,preset:null}}},d=(e,n,r,i)=>n?e.filter(e=>t.matchesParsedDateFilter(n,e.value,r,i)):e;exports.DATE_FILTER_OPERATOR_OPTIONS=r,exports.DATE_FILTER_PRESET_OPTIONS=i,exports.DEFAULT_DATE_FILTER_DRAFT=n,exports.buildParsedDateFilterFromDraft=c,exports.dateFilterOperandCount=a,exports.filterOptionsByDateCondition=d,exports.formatParsedDateFilter=l,exports.normalizeFilterDateInputValue=s,exports.parsedDateFilterToConditionDraft=u;
@@ -0,0 +1,26 @@
1
+ import type { DateFilterPreset, ParsedDateFilter } from '../model/gridTypes.unbound';
2
+ import { type NormalizedDateFilterPreset } from './dateFilterPresets';
3
+ export type DateFilterOperator = 'range' | 'onOrAfter' | 'onOrBefore' | 'equals' | 'notEquals' | 'blank' | 'notBlank';
4
+ export type DateFilterConditionDraft = {
5
+ operator: DateFilterOperator;
6
+ value1: string;
7
+ value2: string;
8
+ preset: string | null;
9
+ };
10
+ export declare const DEFAULT_DATE_FILTER_DRAFT: DateFilterConditionDraft;
11
+ export declare const DATE_FILTER_OPERATOR_OPTIONS: ReadonlyArray<{
12
+ value: DateFilterOperator;
13
+ label: string;
14
+ }>;
15
+ export declare const DATE_FILTER_PRESET_OPTIONS: ReadonlyArray<{
16
+ value: DateFilterPreset;
17
+ label: string;
18
+ }>;
19
+ export declare const dateFilterOperandCount: (operator: DateFilterOperator) => 0 | 1 | 2;
20
+ export declare const normalizeFilterDateInputValue: (value: string | Date | null) => string;
21
+ export declare const buildParsedDateFilterFromDraft: (draft: DateFilterConditionDraft) => ParsedDateFilter | null;
22
+ export declare const formatParsedDateFilter: (parsed: ParsedDateFilter, presets?: readonly NormalizedDateFilterPreset[]) => string;
23
+ export declare const parsedDateFilterToConditionDraft: (parsed: ParsedDateFilter | null | undefined) => DateFilterConditionDraft;
24
+ export declare const filterOptionsByDateCondition: <O extends {
25
+ value: string;
26
+ }>(options: O[], condition: ParsedDateFilter | null, now: Date, presets?: readonly NormalizedDateFilterPreset[]) => O[];
@@ -0,0 +1,110 @@
1
+ import { BUILTIN_DATE_FILTER_PRESET_OPTIONS as e, dateFilterPresetLabel as t } from "./dateFilterPresets.js";
2
+ import { matchesParsedDateFilter as n, toDateKey as r } from "./filtering.js";
3
+ //#region src/logic/dateFilterCondition.ts
4
+ var i = {
5
+ operator: "range",
6
+ value1: "",
7
+ value2: "",
8
+ preset: null
9
+ }, a = [
10
+ {
11
+ value: "range",
12
+ label: "範囲"
13
+ },
14
+ {
15
+ value: "onOrAfter",
16
+ label: "以降"
17
+ },
18
+ {
19
+ value: "onOrBefore",
20
+ label: "以前"
21
+ },
22
+ {
23
+ value: "equals",
24
+ label: "に等しい"
25
+ },
26
+ {
27
+ value: "notEquals",
28
+ label: "に等しくない"
29
+ },
30
+ {
31
+ value: "blank",
32
+ label: "空白"
33
+ },
34
+ {
35
+ value: "notBlank",
36
+ label: "空白でない"
37
+ }
38
+ ], o = e, s = (e) => e === "blank" || e === "notBlank" ? 0 : e === "range" ? 2 : 1, c = (e) => {
39
+ let t = e.trim();
40
+ return /^\d{4}-\d{2}-\d{2}$/.test(t) ? t : null;
41
+ }, l = (e) => e === null || e instanceof Date ? e === null ? "" : r(e) ?? "" : e.trim() === "" ? "" : r(e) ?? "", u = (e) => {
42
+ if (e.preset !== null) return {
43
+ mode: "preset",
44
+ preset: e.preset
45
+ };
46
+ if (e.operator === "blank" || e.operator === "notBlank") return { mode: e.operator };
47
+ if (e.operator === "range") {
48
+ let t = c(e.value1), n = c(e.value2);
49
+ return t !== null && n !== null ? t <= n ? {
50
+ mode: "range",
51
+ from: t,
52
+ to: n
53
+ } : {
54
+ mode: "range",
55
+ from: n,
56
+ to: t
57
+ } : t === null ? n === null ? null : {
58
+ mode: "onOrBefore",
59
+ value: n
60
+ } : {
61
+ mode: "onOrAfter",
62
+ value: t
63
+ };
64
+ }
65
+ let t = c(e.value1);
66
+ return t === null ? null : {
67
+ mode: e.operator,
68
+ value: t
69
+ };
70
+ }, d = (e, n) => {
71
+ switch (e.mode) {
72
+ case "range": return `${e.from} 〜 ${e.to}`;
73
+ case "onOrAfter": return `${e.value} 以降`;
74
+ case "onOrBefore": return `${e.value} 以前`;
75
+ case "equals": return `${e.value} に等しい`;
76
+ case "notEquals": return `${e.value} に等しくない`;
77
+ case "blank": return "(空白)";
78
+ case "notBlank": return "(空白でない)";
79
+ case "preset": return t(e.preset, n);
80
+ }
81
+ }, f = (e) => {
82
+ if (!e) return i;
83
+ switch (e.mode) {
84
+ case "preset": return {
85
+ ...i,
86
+ preset: e.preset
87
+ };
88
+ case "range": return {
89
+ operator: "range",
90
+ value1: e.from,
91
+ value2: e.to,
92
+ preset: null
93
+ };
94
+ case "blank":
95
+ case "notBlank": return {
96
+ operator: e.mode,
97
+ value1: "",
98
+ value2: "",
99
+ preset: null
100
+ };
101
+ default: return {
102
+ operator: e.mode,
103
+ value1: e.value,
104
+ value2: "",
105
+ preset: null
106
+ };
107
+ }
108
+ }, p = (e, t, r, i) => t ? e.filter((e) => n(t, e.value, r, i)) : e;
109
+ //#endregion
110
+ export { a as DATE_FILTER_OPERATOR_OPTIONS, o as DATE_FILTER_PRESET_OPTIONS, i as DEFAULT_DATE_FILTER_DRAFT, u as buildParsedDateFilterFromDraft, s as dateFilterOperandCount, p as filterOptionsByDateCondition, d as formatParsedDateFilter, l as normalizeFilterDateInputValue, f as parsedDateFilterToConditionDraft };
@@ -0,0 +1 @@
1
+ Object.defineProperty(exports,Symbol.toStringTag,{value:`Module`});var e=[{value:`today`,label:`今日`},{value:`thisMonth`,label:`今月`},{value:`last30days`,label:`過去 30 日`}],t=t=>e.some(e=>e.value===t),n=t=>e.find(e=>e.value===t)?.label??t,r=t=>t===!1?[]:t===void 0?e.map(({value:e,label:t})=>({id:e,label:t})):t.map(e=>typeof e==`string`?{id:e,label:n(e)}:{id:e.id,label:e.label,resolve:e.resolve}),i=(e,r)=>{let i=r?.find(t=>t.id===e)?.label;return i===void 0?t(e)?n(e):e:i};exports.BUILTIN_DATE_FILTER_PRESET_OPTIONS=e,exports.dateFilterPresetLabel=i,exports.isBuiltinDateFilterPreset=t,exports.normalizeDateFilterPresets=r;
@@ -0,0 +1,13 @@
1
+ import type { DateFilterPreset, DateFilterPresetOption, DateFilterPresetRange } from '../model/gridTypes.unbound';
2
+ export type NormalizedDateFilterPreset = {
3
+ id: string;
4
+ label: string;
5
+ resolve?: (now: Date) => DateFilterPresetRange;
6
+ };
7
+ export declare const BUILTIN_DATE_FILTER_PRESET_OPTIONS: ReadonlyArray<{
8
+ value: DateFilterPreset;
9
+ label: string;
10
+ }>;
11
+ export declare const isBuiltinDateFilterPreset: (id: string) => id is DateFilterPreset;
12
+ export declare const normalizeDateFilterPresets: (option: false | readonly DateFilterPresetOption[] | undefined) => NormalizedDateFilterPreset[];
13
+ export declare const dateFilterPresetLabel: (id: string, presets?: readonly NormalizedDateFilterPreset[]) => string;
@@ -0,0 +1,30 @@
1
+ //#region src/logic/dateFilterPresets.ts
2
+ var e = [
3
+ {
4
+ value: "today",
5
+ label: "今日"
6
+ },
7
+ {
8
+ value: "thisMonth",
9
+ label: "今月"
10
+ },
11
+ {
12
+ value: "last30days",
13
+ label: "過去 30 日"
14
+ }
15
+ ], t = (t) => e.some((e) => e.value === t), n = (t) => e.find((e) => e.value === t)?.label ?? t, r = (t) => t === !1 ? [] : t === void 0 ? e.map(({ value: e, label: t }) => ({
16
+ id: e,
17
+ label: t
18
+ })) : t.map((e) => typeof e == "string" ? {
19
+ id: e,
20
+ label: n(e)
21
+ } : {
22
+ id: e.id,
23
+ label: e.label,
24
+ resolve: e.resolve
25
+ }), i = (e, r) => {
26
+ let i = r?.find((t) => t.id === e)?.label;
27
+ return i === void 0 ? t(e) ? n(e) : e : i;
28
+ };
29
+ //#endregion
30
+ export { e as BUILTIN_DATE_FILTER_PRESET_OPTIONS, i as dateFilterPresetLabel, t as isBuiltinDateFilterPreset, r as normalizeDateFilterPresets };
@@ -0,0 +1 @@
1
+ Object.defineProperty(exports,Symbol.toStringTag,{value:`Module`});const e=require("./filtering.cjs");var t=/^\d{4}-\d{2}-\d{2}$/,n=n=>{let r=new Set;for(let t of n)r.add(e.toDateSetKey(t.value));let i=[],a=[],o=!1;for(let e of r)e===``?o=!0:t.test(e)?i.push(e):a.push(e);i.sort(),a.sort();let s=i.map(e=>({label:e,value:e}));for(let e of a)s.push({label:e,value:e});return o&&s.push({label:`(空白)`,value:``}),s},r=(e,n)=>{let r=new Map,i=[];for(let n of e){if(!t.test(n.value)){i.push(n);continue}let e=n.value.slice(0,4),a=n.value.slice(0,7),o=r.get(e);o||(o=new Map,r.set(e,o));let s=o.get(a);s||(s=[],o.set(a,s)),s.push(n.value)}let a=[];for(let[e,t]of r){let r=`y:${e}`,i=[];for(let e of t.values())i.push(...e);let o=n.has(r);if(a.push({type:`group`,key:r,label:`${e} 年`,depth:0,leafKeys:i,expanded:o}),o)for(let[e,r]of t){let t=`m:${e}`,i=n.has(t);if(a.push({type:`group`,key:t,label:`${Number(e.slice(5,7))} 月`,depth:1,leafKeys:[...r],expanded:i}),i)for(let e of r)a.push({type:`leaf`,key:e,label:`${Number(e.slice(8,10))} 日`,depth:2,leafKeys:[e],expanded:!1})}}for(let e of i)a.push({type:`leaf`,key:e.value,label:e.label,depth:0,leafKeys:[e.value],expanded:!1});return a};exports.buildDateTreeRows=r,exports.normalizeDateSetOptions=n;
@@ -0,0 +1,17 @@
1
+ export type DateSetOption = {
2
+ label: string;
3
+ value: string;
4
+ };
5
+ export declare const normalizeDateSetOptions: (rawOptions: ReadonlyArray<{
6
+ label: string;
7
+ value: string;
8
+ }>) => DateSetOption[];
9
+ export type DateTreeRow = {
10
+ type: 'group' | 'leaf';
11
+ key: string;
12
+ label: string;
13
+ depth: 0 | 1 | 2;
14
+ leafKeys: string[];
15
+ expanded: boolean;
16
+ };
17
+ export declare const buildDateTreeRows: (options: ReadonlyArray<DateSetOption>, expandedKeys: ReadonlySet<string>) => DateTreeRow[];
@@ -0,0 +1,75 @@
1
+ import { toDateSetKey as e } from "./filtering.js";
2
+ //#region src/logic/dateFilterTree.ts
3
+ var t = /^\d{4}-\d{2}-\d{2}$/, n = (n) => {
4
+ let r = /* @__PURE__ */ new Set();
5
+ for (let t of n) r.add(e(t.value));
6
+ let i = [], a = [], o = !1;
7
+ for (let e of r) e === "" ? o = !0 : t.test(e) ? i.push(e) : a.push(e);
8
+ i.sort(), a.sort();
9
+ let s = i.map((e) => ({
10
+ label: e,
11
+ value: e
12
+ }));
13
+ for (let e of a) s.push({
14
+ label: e,
15
+ value: e
16
+ });
17
+ return o && s.push({
18
+ label: "(空白)",
19
+ value: ""
20
+ }), s;
21
+ }, r = (e, n) => {
22
+ let r = /* @__PURE__ */ new Map(), i = [];
23
+ for (let n of e) {
24
+ if (!t.test(n.value)) {
25
+ i.push(n);
26
+ continue;
27
+ }
28
+ let e = n.value.slice(0, 4), a = n.value.slice(0, 7), o = r.get(e);
29
+ o || (o = /* @__PURE__ */ new Map(), r.set(e, o));
30
+ let s = o.get(a);
31
+ s || (s = [], o.set(a, s)), s.push(n.value);
32
+ }
33
+ let a = [];
34
+ for (let [e, t] of r) {
35
+ let r = `y:${e}`, i = [];
36
+ for (let e of t.values()) i.push(...e);
37
+ let o = n.has(r);
38
+ if (a.push({
39
+ type: "group",
40
+ key: r,
41
+ label: `${e} 年`,
42
+ depth: 0,
43
+ leafKeys: i,
44
+ expanded: o
45
+ }), o) for (let [e, r] of t) {
46
+ let t = `m:${e}`, i = n.has(t);
47
+ if (a.push({
48
+ type: "group",
49
+ key: t,
50
+ label: `${Number(e.slice(5, 7))} 月`,
51
+ depth: 1,
52
+ leafKeys: [...r],
53
+ expanded: i
54
+ }), i) for (let e of r) a.push({
55
+ type: "leaf",
56
+ key: e,
57
+ label: `${Number(e.slice(8, 10))} 日`,
58
+ depth: 2,
59
+ leafKeys: [e],
60
+ expanded: !1
61
+ });
62
+ }
63
+ }
64
+ for (let e of i) a.push({
65
+ type: "leaf",
66
+ key: e.value,
67
+ label: e.label,
68
+ depth: 0,
69
+ leafKeys: [e.value],
70
+ expanded: !1
71
+ });
72
+ return a;
73
+ };
74
+ //#endregion
75
+ export { r as buildDateTreeRows, n as normalizeDateSetOptions };
@@ -0,0 +1 @@
1
+ Object.defineProperty(exports,Symbol.toStringTag,{value:`Module`});const e=require("./filtering.cjs");var t=[`日`,`月`,`火`,`水`,`木`,`金`,`土`],n=[`1月`,`2月`,`3月`,`4月`,`5月`,`6月`,`7月`,`8月`,`9月`,`10月`,`11月`,`12月`],r=(t,n)=>{let r=new Date(t,n,1).getDay(),i=[];for(let a=0;a<42;a+=1){let o=new Date(t,n,1-r+a);i.push({key:e.formatDateKey(o),day:o.getDate(),inCurrentMonth:o.getMonth()===n})}return i},i=e=>e===``?``:e.replaceAll(`-`,`/`),a=(e,t)=>`${e}年 ${t+1}月`,o=e=>e-e%12,s=e=>{let t=o(e),n=[];for(let e=0;e<12;e+=1)n.push(t+e);return n};exports.CALENDAR_DOW_LABELS=t,exports.CALENDAR_MONTH_LABELS=n,exports.buildCalendarDayCells=r,exports.buildYearGrid=s,exports.formatCalendarTitle=a,exports.formatFilterDateDisplay=i,exports.yearGridStart=o;
@@ -0,0 +1,12 @@
1
+ export type CalendarDayCell = {
2
+ key: string;
3
+ day: number;
4
+ inCurrentMonth: boolean;
5
+ };
6
+ export declare const CALENDAR_DOW_LABELS: ReadonlyArray<string>;
7
+ export declare const CALENDAR_MONTH_LABELS: ReadonlyArray<string>;
8
+ export declare const buildCalendarDayCells: (year: number, monthIndex: number) => CalendarDayCell[];
9
+ export declare const formatFilterDateDisplay: (key: string) => string;
10
+ export declare const formatCalendarTitle: (year: number, monthIndex: number) => string;
11
+ export declare const yearGridStart: (year: number) => number;
12
+ export declare const buildYearGrid: (year: number) => number[];
@@ -0,0 +1,41 @@
1
+ import { formatDateKey as e } from "./filtering.js";
2
+ //#region src/logic/datePickerCalendar.ts
3
+ var t = [
4
+ "日",
5
+ "月",
6
+ "火",
7
+ "水",
8
+ "木",
9
+ "金",
10
+ "土"
11
+ ], n = [
12
+ "1月",
13
+ "2月",
14
+ "3月",
15
+ "4月",
16
+ "5月",
17
+ "6月",
18
+ "7月",
19
+ "8月",
20
+ "9月",
21
+ "10月",
22
+ "11月",
23
+ "12月"
24
+ ], r = (t, n) => {
25
+ let r = new Date(t, n, 1).getDay(), i = [];
26
+ for (let a = 0; a < 42; a += 1) {
27
+ let o = new Date(t, n, 1 - r + a);
28
+ i.push({
29
+ key: e(o),
30
+ day: o.getDate(),
31
+ inCurrentMonth: o.getMonth() === n
32
+ });
33
+ }
34
+ return i;
35
+ }, i = (e) => e === "" ? "" : e.replaceAll("-", "/"), a = (e, t) => `${e}年 ${t + 1}月`, o = (e) => e - e % 12, s = (e) => {
36
+ let t = o(e), n = [];
37
+ for (let e = 0; e < 12; e += 1) n.push(t + e);
38
+ return n;
39
+ };
40
+ //#endregion
41
+ export { t as CALENDAR_DOW_LABELS, n as CALENDAR_MONTH_LABELS, r as buildCalendarDayCells, s as buildYearGrid, a as formatCalendarTitle, i as formatFilterDateDisplay, o as yearGridStart };
@@ -0,0 +1 @@
1
+ Object.defineProperty(exports,Symbol.toStringTag,{value:`Module`}),require("./grouping.cjs"),require("./rowReorder.cjs");var e=`__ssg_detail_toggle__`,t=28,n=200,r=e=>e===`__ssg_group__`||e===`__ssg_detail_toggle__`||e===`__ssg_row_drag_handle__`,i=e=>e!=null&&typeof e.closest==`function`&&e.closest(`[data-ssg-detail]`)!==null,a=()=>typeof document<`u`&&i(document.activeElement),o=(e,t)=>{if(typeof t.closest!=`function`)return!1;let n=t.closest(`[data-ssg-detail]`);return n!==null&&n!==e&&e.contains(n)},s=()=>({indexByKey:new Map,unresolvedFor:null,unresolved:new Set}),c=()=>{let e={current:s(),reset:()=>{e.current=s()}};return e},l=(e,t,n,r)=>{let i=e.getRowCount(),a=n.indexByKey.get(t);if(a!==void 0&&a>=0&&a<i&&e.getRowKey(a)===t)return a;if(!r)return-1;for(let r=0;r<i;r+=1)if(e.getRowKey(r)===t)return n.indexByKey.set(t,r),r;return-1},u=({expandedKeys:e,rowModel:t,height:n,isExpandable:r,cache:i,allowScan:a})=>{if(e.size===0||n<=0)return[];let o=t.getRowCount(),s=new Map,c=null;for(let n of e){let e=i.indexByKey.get(n);if(e!==void 0&&e>=0&&e<o&&t.getRowKey(e)===n){s.set(n,e);continue}i.unresolvedFor===t&&i.unresolved.has(n)||(c??=new Set).add(n)}if(c&&c.size>0){if(a)for(let e=0;e<o&&c.size>0;e+=1){let n=t.getRowKey(e);c.has(n)&&(i.indexByKey.set(n,e),s.set(n,e),c.delete(n))}if(c.size>0){i.unresolvedFor!==t&&(i.unresolvedFor=t,i.unresolved.clear());for(let e of c)i.unresolved.add(e)}}let l=[];for(let[e,i]of s){let a=t.getRow(i);a!==void 0&&(r&&!r(a,{rowKey:e,sourceRowIndex:t.getSourceIndex(i)})||l.push({index:i,height:n}))}return l.sort((e,t)=>e.index-t.index),l},d=(e,t,n)=>{e.indexByKey.set(t,n),e.unresolved.delete(t)},f=(e,t,n,r)=>{let i=[],a=e;for(let o of r){if(o.index<e)continue;if(o.index>t)break;let r=n.rowTop(a),s=n.rowTop(o.index)+n.cellHeight(o.index);i.push({top:r,height:s-r}),a=o.index+1}return a<=t&&i.push({top:n.rowTop(a),height:n.rowsHeight(a,t)}),i};exports.DEFAULT_DETAIL_ROW_HEIGHT=n,exports.DETAIL_TOGGLE_COLUMN_KEY=e,exports.DETAIL_TOGGLE_COLUMN_WIDTH=t,exports.createDetailIndexCache=s,exports.createDetailIndexCacheHolder=c,exports.findDetailRowIndex=l,exports.isFocusInsideDetailCard=a,exports.isInsideDetailCard=i,exports.isInsideDetailCardOf=o,exports.isSyntheticColumnKey=r,exports.resolveDetailRowExtras=u,exports.seedDetailIndexCache=d,exports.splitRowBandByDetail=f;